Скрипт DoTextOK — летнее обновление 2010
Причина появления этой программы
Прежде чем начать верстать текст, его нужно подготовить. А освоение компьютера авторами текстов часто становится причиной самых разных ошибок набора. Если раньше машинистка вводила в компьютер текст с машинописной распечатки, и достаточно было убрать повторяющиеся переводы строки, удалить по всему тексту пробел между запятой и тире, и в общем-то всё, то теперь ошибок авторской псевдоверстки стало очень много. Это не значит, что с появлением компьютера стало хуже — нет, теперь не теряются в тексте авторские акценты (курсив, полужирный), верхние и нижние индексы, сноски, и пр. И надо признать, что автор имеет право не знать отличие дефиса от тире, набирать фамилии и инициалы без пробелов между ними, да существует масса ляпов, которые во времена СССР всегда исправлялись при вычитке. К сожалению, сейчас нет того корректорско-редакторского кордона, защищающего издания от ошибок, и иногда авторский сырой текст сразу идет в верстку. Как результат, полно публикаций с дырами между инициалами и фамилией, год вместо «1964 г.» пишется «1964г.», и т.д. и т.п. Можно бесконечно обсуждать эту проблему на форумах, но это никакого результата не даст. Конструктивнее предложить инструмент для всех понимающих проблемы набора, исправляющий ошибки такого плана. Это попытка отделить рутину удаления ошибок набора от творческого процесса верстки и рассказать в ряде случаев, почему текст обработан именно так. Скрипт Do_Text_OK.jsx надо поместить в каталог Adobe InDesign CS3\Scripts\Scripts Panel и он появится в меню скриптов. Программа работает на платформах PC и Mac.
Конечно, это не единственная программа подобного класса, есть около десятка других, как платных, так и бесплатных, решающих подобные задачи. В этой была сделана попытка оформить в программный код свое понимание подхода к решению проблем набора и объяснить в этой инструкции принимаемые решения. Программа готовит текст к верстке в программе InDesign.
Обновление Do_Text_OK
Опыт пользователей работы с программой — это лучший способ ее совершенствования. Благодарю всех, кто помогает делать программу лучше.
Татьяна Прокофьева и Владимир Любимцев прислали файлы с таблицами, но которых программа сваливалась. Спасибо им за такое тестирование. Теперь тонкая ошибка в коде, приводившая, хоть и очень редко, к сбросу программы, устранена.
Другой вопрос, поднимаемый в частных письмах и комментариях — почему минус назван странным тире, и почему вместо принятого минуса используется короткое тире.
Название myStrangeTire появилось так: во время работы над скриптом я еще и участвовал в словесной дискуссии с коллегами, «почему в русских шрифтах забыт знак минус». Да, поболтали между делом, я для хохмы обозвал забытый европейскими горе-дизайнерами минус странным тире, так это и ушло в скрпт. 🙂 Согласен с авторами сообщений, что myStrangeTire — это непонятное название для минуса.
Чтобы снять непонимание, в документацию добавлена глава «О знаке минус».
О знаке ‘минус’
По каким-то странным стечениям обстоятельств этот знак, имеющий код 0х2212, не попал
в кодовую таблицу русских символов. Он отсутствует в гарнитурах BalticaC, BodoniC, FranclinGothicC и пр. Если ввести в текстовый фрейм знак с таким кодом, программа окрасит его розовым цветом, сообщая, что этот символ отсутствует. То, что он есть в стандартных TrueType шрифтах Arial, Times New Roman, Verdana, Georgia, и в двух стандартных PostScript шрифтах Minion Pro и Myriad Pro, не спасает положение. Но во всех гарнитурах есть короткое тире, ставшее, видимо, по указанной выше причине распространенным заменителем минуса. Именно этот знак, его код 0х2013, используется в этой программе для обозначения минуса. И даже если в переданном на верстку тексте будет присутствовать «истинный минус» с кодом 0х2212, он будет заменен в процессе подготовки текста к верстке на короткое тире, чтобы при верстке любой гарнитурой в тексте не было розовых букв там, где ожидалось увидеть минус.
По просьбам знак вопроса исключен из перечня символов, после которых безусловно должен быть пробел. Согласен с доводами, что этот знак встречается в сетевых адресах, и там после него лишний пробел неуместен.
Не могу согласиться уменьшить функциональность скрипта, чтобы он не обрабатывал ситуации, в результате которых некоторые символы в вёрстке могут быть окрашены красным или зеленым цветами. Это потенциальные ошибки, и на них надо обратить внимание.
Летнее обновление 2010
Прошел год неспешной переписки с пользователями программы, и результаты этого общения аккумулировались в очередном обновлении скрипта.
Изменено название программы, из него убраны символы подчеркивания, теперь она называется DoTextOK.
Расширено меню выбора опций обработки текста, исправлены замеченные ошибки.
Файл сохранения выбранных настроек DoTextOK.ini теперь создается автоматически после первого запуска программы.
Программа тестировалась в английских версиях CS3, CS4 и CS5 на машинах с Windows XP, и английской CS4 на маке.
На маке с версией InDesign CS5 скрипт не проверялся, т.к. такой машины под рукой нет.
Автор: Иванюшин Михаил
Скачать скрипт
Интересно, насколько функционал данного скрипта конкурирует со скриптом Виталия sZam?
у меня вопрос. После предлогов ставятся неразрывные пробелы. но при разгонке текста выравненного по ширине эти неразрывные пробелы не тянутся, в результате получается дыра там где обычный пробел. Что не так с неразрывными пробелами?
при разгонке текста выравненного по ширине эти неразрывные пробелы не тянутся, в результате получается дыра там где обычный пробел
peppper, пришлите мне Ваш файл. В скрипте после предлогов ставится неразрывный пробел переменной ширины, код 0xA0. Пробелы должны тянуться. Используется последняя версия скрипта? Какой код этих неразрывных пробелов?
Михаил, мне кажется, есть смысл ввести неразрывные предлоги двумя опциями — однобуквенные и двухбуквенные раздельно. В вёрстке, которая живёт недолго (газеты, журналы), часто используется узкая колонка с небольшим числом знаков в строке. И большое количество неразрывных элементов сильно затрудняет равномерное распределение текста. При этом требования к неразрывным элементам там ниже, чем в книжной вёрстке (или в дорогих журналах), вполне можно обойтись неотрывными однобуквенными.
А чтобы совсем было хорошо, то можно сделать и третью опцию — отдельно регулировать неотрывные предлоги и частицы в начале предложения. Порой и этого достаточно.
Полезно было бы также добавить неразрывный пробел в сочетаниях «цифра + год*» (для надёжности можно учитывать только сочетания из 4 цифр; при этом год с наращением можно отрывать: «в 1921-м году», но «в 1921_году»), а также в сочетаниях 1-2 цифр с названиями месяцев. Это довольно легко реализуется через GREP.
Приветствую! Можно ли исправить в скрипте или что нужно сделать мне, чтобы корректно отображалось меню настроек: названия разделов отображаются на русском языке, а вот наименования пунктов — кодовыми цифрами.
MacOS 10.4.11 InDesign CS3 (eng)
А аналог этого скрипта для CS2 есть? У меня Windows XP и пакет CS2. При попытке запустить скрипт выскакивает сообщение об ошибке 22.
А аналог этого скрипта для CS2 есть?
Нет.
Пришлите скриншот с этой ошибкой на ivanyushin#yandex.ru, надо глянуть, что там ещё написано. Может, придумаем что-нибудь.
На MAC OS X 10.4.11 в CS3 окно настройки скрипта выглядит
так
в чём проблема?
Ваш вопрос когда-то тут обсуждался, к сожалению, часть информации потерялась.
Но я помню, что пользователь basker, говорил, что после правки файла info.plist в этом скрипте появятся русские буквы.
У меня нет мака, чтобы это проверить. И я не знаю, где там хранится нужный файл info.plist, и ка его надо править.
Спишитесь с ним.
>Пришлите скриншот с этой ошибкой на ivanyushin#yandex.ru, надо глянуть, что там ещё написано. Может, придумаем что-нибудь.
Спасибо, скрин выслала.
Спасибо большое за скрипт. Присоединяюсь к arhip — эти изменения были бы очень полезны. Еще хорошо бы включать/выключать тире (минус) между цифрами. Потому что при выключенном форматировании номеров телефонов скрипт меняет дефисы в телефонах (если они попадаются) на минус, к тому же есть еще неучтенные случаи дефиса между цифрами (например, при публикации юридических документов — номера приказов и т.д.).
>> iv-mi said:
>> Ваш вопрос когда-то тут обсуждался, к сожалению, часть информации потерялась.
Михаил, добрый день!
Этот вопрос мы с вами когда-то обсуждали, и решение (хоть и непростое) нашлось. Посему восполню часть потерянной информации относительно некорректного отображения интерфейса скрипта под МакОсью 🙂
К сожалению, правкой info.plist (того, который находится в Adobe InDesign CS#.app) я ничего не добился.
Может, конечно, что-то делал не так; но факт – результата не получил.
Ничего не дала и смена локализации интерфейса (подробнее здесь: http://www.prodtp.ru/index.php?s=&showtopic=21813&view=findpost&p=210535) – проблема осталась.
Теперь, собственно, к причине и «рецепту».
Причина такого поведения – в некорректной интерпретации кириллицы Java-ой.
Подобный глюк будет наблюдаться в любом скрипте, интерфейс которого описан штатными средствами JavaScript.
А вот в скрипты, в которых он создан с помощью адобовского ScriptUI, не имеют подобных симптомов.
Ну и рецепт, в общем-то очевиден: необходимо переписать часть кода, отвечающую за интерфейс, под Adobe ScriptUI.
Задачка не из самых приятных, но боюсь, другого выхода нет.
У меня та же проблема с отображением русских букв на Маке.
Может быть, проще будет сделать версию с английским интерфейсом?
сделать версию с английским интерфейсом
Делайте. Я не против. : )
Скрипт бесплатный, код открытый.
Неожиданно обнаружил, что вчера и сегодня эта проблема обсуждалась на соседнем форуме:
http://www.prodtp.ru/index.php?s=b9ed07e78f7ad2e9ffc897bf6bb3b4a6&showtopic=25258
…Вот на этом сайте http://www.maccentre.ru/board/viewtopic.ph…f3fcaceba3febfb уже обсуждалось, только такую инфу не сразу найдёшь!
Нужно перейти в установленный Indesign — Show in Finder далее правой по Adobe Indesign.app — Show Package Contents переходим в папку Contents и находим там Info.plist. Его нужно отредактировать! Я редактировал прогой PlistEditPro. Собственно находим в нём ключ CFBundleDevelopmentRegion и меняем в нём English на ru. Запускаем InDesign и радуемся!
(конец цитаты)
Спасибо o_val за объяснение, что надо сделать, чтобы в меню появились русские буквы.
И все таки проблема для пользователей MacOS «решабельная»: http://www.prodtp.ru/index.php?showtopic=25258
Кстати, проделывая означенную операцию с правкой info.plist в ID CS3 на домашней машине (там это почему-то не было поправлено, видимо после недавней переустановки CS3 забыл сделать) обнаружил интересный «эффект».
Если в CFBundleDevelopmentRegion заменить English не на ru, а на Russian, то мало того, что в скрипте отображение кириллицы исправляется, так еще и интерфейс всего ИнДизайна переключается на русский! Если же использовать ru, то исправляется только кириллица в скриптах.
P.S. Но срабатывает это только с ИнДизайном! На Шоп и Иллюстратор аналогичная правка info.plist никак не влияет.
iv-mi, такой пример:
— Я не хочу идти в магазин, — сказала Наташа папе.
Я заметил, что после обработки скриптом такого текста, между запятой и тире ставится неразрывный пробел фиксированной ширины. От этого текст, выровненный по ширине, становится некрасивым. Ведь после тире идет пробел, который растягивается.
Можно ли заменить неразрывный пробел фиксированной ширины на просто неразрывный пробел?
saruman: между запятой и тире ставится неразрывный пробел фиксированной ширины. От этого текст, выровненный по ширине, становится некрасивым. Ведь после тире идет пробел, который растягивается.
Можно ли заменить неразрывный пробел фиксированной ширины на просто неразрывный пробел?
Вас устроит, что после такой замены все пробелы будут просто дырами в тексте? Может, на такие строки надо выравнивать влево, чтобы исключить растяжение пробелов?
***
Выполняемые этим скриптом варианты замены сложились в результате достаточно большого времени поиска оптимальных решений. Конечно, для некоторых шрифтов было бы уместно вообще не ставить пробел после запятой.
И никто не обещал, что после обработки текста с текстом ничего делать не надо : ). Поиском-заменой сделайте текст таким, как нужно. Используемые сочетания поиска-замены можно сохранить для использования в новых проектах (пиктограмма ‘Дискета’ во меню Find/Change
Я так и делаю: пользуюсь Find/Change и «дискетою».
Просто надеялся, а вдруг мой случай побудит вас в следующей версии скрипта сделать выбор пробела «галочкой».
Конечно, в общем за скрипт — большущее СПАСИБО! Пользуюсь ним уже больше года. Вещь незаменимая!
Огромное спасибо за скрипт!
Но вот после работы скрипта получил замечание от корректора.
Скрипт считает что / не должен иметь вокру себя пробелов.
А при ссылках на другие книги достаточно часто встречаются конструкции типа:
Справочник. / Под ред. И. О. Фамилия
Статья // Сборник.
В данном случае пробелы должны быть. Хорошо, что текст скрипта открытый и подробно закомментирован — пришлось убрать из скрипта удаление пробелов вокруг /
Но может быть есть какой-то другой способ решения?
При работе над скриптом был выбор — оставить пробелы около наклонной или нет. Решил не оставлять, т.к. во время отладки скрипта была работа над изданиями, в которых было много http://
Очевидно, что после работы скрипта можно поиском-заменой убрать оставшиеся недочёты. Это относится и к оформлению наклонной черты в тексте.
Никто ведь не обещал абсолютно полной автоматизации : )
Спасибо большое за вашу работу!!!
Очень помогает!!!
Здравствуйте, Михаил.
Огромное спасибо за чудесные скрипты!
Не могли бы вы подсказать функцию «первых символов в строке» и «последних символов в строке» (аналог myTextFrame.lines.firstItem().words.length только для каждой строки).
Хочу модифицировать ваш скрипт, чтобы он выделял начало каждой строки во фрейме цветом1, а конец каждой строки во фрейме цветом2.
Спасибо 🙂
Не могли бы вы подсказать функцию «первых символов в строке» и «последних символов в строке»
Когда-то я делал подобный инструмент для сравнения стандартных модулей переноса и модуля Игоря Батова.
Вот тот доработанный скрипт для окрашивания первых и последних букв в строке:
//=First&LastLineCharToColor=.jsx
#target indesign
// myGreenColorSample — шаблон цвета для myGreenColor
myGreenColorSample = [100, 0, 100, 0];
// myRedColorSample — шаблон цвета для myRedColor
myRedColorSample = [0, 100, 100, 0];
if(app.documents.length != 0) { // app.documents
if(app.selection.length != 0){ // app.selection
var myDocument = app.documents.item(0);
var mySelection = app.selection[0];
myFirstAndLastRedLetter(mySelection.parentStory);
alert(«+»);
} // app.selection
else {
alert(«Ничего не выбрано. \nВыберите фрейм или поместите курсор в текст и попробуйте снова.\n»);
}
} // app.documents
///
function myFirstAndLastRedLetter(myStory){ // myFirstAndLastRedLetter
var myTextFrame;
var myLine;
var myFirstChar;
var myLastChar;
var myNumberOfLines;
var myColor;
var myName;
var myAllNumberOfLines=0;
try{
myColor = myDocument.colors.item(«myGreenColor»);
myName = myColor.name;
}
catch (myError) {
myColor = myDocument.colors.add ({name:»myGreenColor», model:ColorModel.process, space:ColorSpace.CMYK, colorValue:myGreenColorSample});
}
try{
myColor = myDocument.colors.item(«myRedColor»);
myName = myColor.name;
}
catch (myError) {
myColor = myDocument.colors.add ({name:»myRedColor», model:ColorModel.process, space:ColorSpace.CMYK, colorValue:myRedColorSample});
}
//цикл по числу фреймов, содержащих статью
for(var myCounter = 0; myCounter < myStory.textContainers.length; myCounter ++) { // myCounter myTextFrame = myStory.textContainers[myCounter]; myNumberOfLines=myTextFrame.lines; myAllNumberOfLines+=myNumberOfLines.length; //цикл по числу строк в текущем фрейме for (var j=0; j
Уважаемый Михаил!
Огромное спасибо за скрипт DoTextOK.
В прошедшем году активно им пользовался, но к сожалению, после переустановки InDesign скрипт запускаться перестал.
При выделении текста, и щелчке по названию скрипта его диалоговое окно не появляется, как это было ранее. Соответсвенно, ничего не происходит с текстом.
Пробовал удалить исходный скртип, взамен него поставить свежескачанный DoTextOK_23.07.2010. Результат не меняется…
Помогите вернуть к работе Ваше творение 😎
Работаю на WinXP SP3, Indesign CS 3.
Заранее спасибо!
Здравствуйте.
Так сразу и не скажешь, в чем дело.
Во-первых, надо знать — это только этот скрипт не работает, или все отказались.
Во-вторых, попробовать вот это решение:
http://adobeindesign.ru/2008/10/24/restore-ui/
Попробуйте, сообщите результат. Если не поможет, будем искать дальше.
Большое спасибо!
RestoreUi помог. Ваш скрипт теперь запускается.
Вчера (до обращения к Вам) пробовал туже схему — и не получилось.
Теперь все ОК.
Большое спасибо за скрипт!
Уважаемый Михаил!
Большое спасибо за скрипт.
Все работает, кроме формата тел. номеров — скрипт их просто не замечает.
Правда, это не так актуально…
Вопрос: нет ли такой возможности внести в скрипт маркировку (цветом или другим способом) в тексте произведенные скриптом изменения (либо все, либо опционно). Мне приходится работать с очень разными литературными источниками, и с очень разными авторами, для которых порой важно сохранение «авторской изюминки» в тексте, не исключая при этом необходимости исправления «базового набора» ошибок. Так что возможность такой маркировки получается нелишней.
Заранее благодарен за (любой) ответ. Ваш скрипт — просто подарок!
С уважениенм,
Вячеслав
Странно про телефонные номера. : (
Хотя я собираюсь в очередном обновлении сделать работу с телефонными номерами отдельным скриптом, странно, что это у кого-то не работает.
Ладно, посмотрю повнимательнее. Вы первый, кто хоть что-то сказал про эту опцию.
нет ли такой возможности внести в скрипт маркировку (цветом или другим способом) в тексте произведенные скриптом изменения
Т.е. Вы хотите, чтобы, допустим, повторяющиеся пробелы, знаки перевода строки, пробелы в инициалах, буква ‘ы’ в наращении 1-ый, или ‘а’ в наращении 1-ая, и т.п. оставались в тексте, но были окрашены заметным цветом? С тем, чтобы потом просмотреть этот своеобразный протокол намерений правки текста, и самостоятельно принять решение по каждому вопросу?
Интересное предложение. Я подумаю над этим.
Михаил,
добрый день
1. про телефоны: исходный номер для формата я пытался давать слитный, с произвольной разбивкой и даже с указателем «тел.:» в вариациях. Никаких действий по немеру я не получил.
2. по маркировке произведенных скриптом изменений в тексте: к моему сожалению, так оно и есть — в подготавливаемых мной материалах к печати встречается очень много цитат из старинных изданий, из дореволюционных и современных мемуаров деятелей различных, порой перекрывающихся, областей науки, искусства, политики и проч… в которых применялись различные нормы русского языка, зачастую включая обороты и приемы, отражающие индивидуальность авторов. Их «причесывание» порой недопустимо в целях сохранения языка оригигнала. С такими случаями мне приходится встречаться по многу раз в каждом нашем периодическом издании — литературном альманахе.
конечно, это не правило, а, скорее, исключение в практике предпечатной подготовки; но вполне возможно, что такая опция окажется полезной не только в моей ситуации…
NB думается, что маркировать имеет смысл только те позиции, которые могут быть значимы для авторов; замена же пробелов на непереносимые пробелы, простановка прочих непечатаемых символов — такие элементы маркировки не требуют. Но это уж на Ваше усмотрение, если эта задача Вас все-таки заинтересует.
Поработал сегодня немного со скриптом над другими материалами.
И ещё раз говорю за него спасибо.
Вячеслав
В моих тестах всё получается с телефонным номерами.
Но обрабатываются только семизначные номера. : )
А у Вас точно семизначные номера не обрабатываются?
Очевидно, что после замены дефисов или тире на пробелы этот телефонный номер скрипт уже не найдет.
***
Пришлите мне пару-тройку таких текстов, «отражающих индивидуальность авторов», чтобы отлаживать скрипт на конкретном материале.
Добрый день, Михаил.
Во-первых, спасибо за скрипт, очень много времени он мне сэкономил. Во-вторых, он почему-то отказался работать на другой машине. Win XP SP3, CS3, другие скрипты работают, RestoreUI.jsx не помогает. 🙁
добрый день
большое спасибо за скрипт, экономит очень много времени
теперь некоторый фидбек от пользователя цс5,5 на маке. скрипт отработал корректно, полтора часа доблестно перелопачивал текст. так что, тему работоспособности на этой конфигурации можно закрыть
но случился один косяк, связанный со спецефичностью обрабатываемого текста. я сейчас делаю пдф из книжки в формате xml, точнее — в fb2. и после импорта xml, весь текст сплошь в тегах разметки. в итоге непечатаемые символы *закрывание тега*, которые отображаются в виде высоких цветных квадратных скобок, посчитались нетипичными. и скрипт везде поставил пробел между тегом и символом конца абзаца. в итоге, скорее всего по это причине, послетали стили названия главы
думаю, что вам будет интересна эта информация. учитывая общую тенденцию адоб в ориентации на электронные публикации, прямой экспорт в формат e-pub и тп, индизайн в подготовке электронных книг будет ипользоваться все чаще