Программа DoQuotesOK — контроль кавычек в тексте (летнее обновление 2010)
В переписке с пользователями программы Do_Text_OK несколько раз высказывалось суждение, что хорошо бы развить её в плане добавления возможностей упорядочения кавычек. Но это явно отдельная задача, достойная реализации в виде отдельной программы. И прежде, чем браться за задачу, её надо осмыслить. Что мы имеем? Из определения кавычки, гласящей, что этот знак пунктуации является парным знаком, следует, что для каждой открывающей кавычки должна быть закрывающая.
В большинстве случаев это правило в верстке выполняется, например, все кавычки первого уровня — верхние двойные “лапки”, второго — верхние одиночные ‘лапки’. Можно было бы ограничиться решением вначале отделить по рисунку открывающие кавычки от закрывающих, а потом выбрать нужный вариант. И получить, например, в соответствии с правилами русской типографики, для кавычек первого уровня «елочки», а для второго — нижние и верхние „лапки“. Но такой скрипт не будет устойчиво работать с текстами, в котором есть вложение кавычек, дефис стоит перед открывающей кавычкой и пр. Поэтому задача сформулировалась интереснее и сложнее — сделать программу для пользователей InDesign CS3/CS4 (Win/Mac), которая на основе знаков до кавычки и перед ней определяла вид этой кавычки. На базе этой информации определялся уровень вложения кавычек, и кавычкам каждого уровня назначался вариант, выбранный пользователем перед запуском программы.
Если в вашем тексте без сносок внизу полосы и таблиц в силу каких-то обстоятельств есть несколько видов кавычек, но вы уверены, что это только основные кавычки, то задачу их упорядочения решает простейший скрипт SimplestQuotes.jsx. Он заменяет все кавычки на выбранные пользователем в настройках программы — окно Preferences, вкладка Dictionary. Его вы также найдете в скачанном архиве.
Программа DoQuotesOK значительно совершеннее этого скрипта. Она ищет кавычки в тексте, затем на основании анализа знаков рядом с кавычками определяется, во-первых, грамотно ли она стоит, во-вторых, — какая это кавычка — открывающая или закрывающая. Грамматические правила, которыми руководствуется программа, приведены в описании.
Программа DoQuotesOK — инструмент для желающих иметь тексты, в которых кавычки оформлены
в соответствии с правилами типографики — при запуске скрипта стандартные установки основных кавычек и кавычек первого уровня вложения соответствуют исторически сложившимся русским правилам оформления кавычек в тексте. Стандарт второго уровня отсутствует, вариант надо установить самим, возможно, выбор «елочек» будет лучшим решением. Какие кавычки будут на каждом уровне определять вам.
Программа устойчива к тому, что в русском языке допускается нарушение парности кавычек. Хотя по определению кавычка — это парный знак пунктуации, русская грамматика допускает, что в таких предложениях, как «Цыганы» мои не продаются вовсе», сетовал Пушкин, — допускается не ставить подряд две открывающих кавычки. Или «ЗАО «Санкт-Петербург» — почему-то в этой конструкции нет двух закрывающих кавычек. Когда требуется контролировать совпадение открывающих и закрывающих кавычек, пользователь должен в меню программы установить флажок Контроль парности кавычек. О правильной работе с ним обязательно ознакомьтесь в описании.
Основные моменты по работе с программой:
Если курсор в тексте и ничего не выделено, то обрабатывается вся статья. В случае выделения текста обрабатывается только выделенная часть.
Не обрабатывается текст в сносках и таблицах, а также расположенный на мастер-страницах.
Предполагается, что в тексте может быть не более двух уровней вложения кавычек.
Хорошей практикой было бы перед запуском DoQuotesOK обработать переданный на верстку материал программой Do_Text_OK или любой другой, приводящей текст в порядок.
Внимательно читайте все сообщения программы и следуйте им.
Отладка показала, что приведение кавычек в порядок иногда становится причиной перетекания текста. Поэтому программа должна быть запущена в начале работы, чтобы затем верстать текст с правильными кавычками.
В реальной работе могут встретиться случаи, неучтенные при осмыслении этой задачи и её программировании. Если будут тексты, с которыми программа не справилась, пришлите их на мой электронный адрес. Анализ ситуации сделает этот инструмент лучше.
Михаил Иванюшин
ivanyushin@yandex.ru
Обновление скрипта
Готово для скачивания обновление скрипта DoQuotesOK, версия 8.4.2009.
В обновлении запоминаются сделанные пользователем установки. Они сохраняются в файле QuotesSetting.ini. Файл Quites.ini переименован в QuotesCharsAndDigits.ini.
Замените все файлы прошлой версии на содержимое архива обновления.
Скачать
Летнее обновление скрипта
Спасибо всем откликнувшимся, кто попробовал в деле этот скрипт и высказал свои соображения по его совершенствованию. Отредактированы сообщения об ошибках, теперь в них сообщается номер страницы, где программа затрудняется определить, какая должна быть кавычка — открывающая или закрывающая. (Именно для того, чтобы сообщать, где встречена ошибка оформления кавычек, программа отказывается работать, если обнаружено переполнение. Но в первой версии номер страницы не выводился).
При обнаружении ошибки запоминается состояние работы программы, поэтому после снятия неоднозначности с кавычкой, отмеченной цветом myProblemQuoteColor обработка текста будет продолжена с той кавычки, на которой в последнем сеансе программа остановилась.При обработке больших текстов по полосе прогресс-бара видно, файл обрабатывается не с начала, а с какой-то точки внутри файла.
Состояние программы — это диапазон символов обрабатываемого текста (пользователь мог выделить часть статьи и запустить программу), текущие уровни кавычек, варианты выбранных кавычек. Все эти параметры хранятся в файле QuotesProcessing.ini.
После исправления ошибки при повторном запуске программы на экран выводится сообщениеhttp://adobeindesign.ru/wp-admin/post.php?action=edit&post=3687:
Это сообщение появится и в том случае, если вы решили не обрабатывать дальше какой-то файл, а приступили к упорядочению кавычек в новом. Щелкните в этом случае на кнопке No, и программа выведет меню выбора кавычек, показанное ранее на рисунке.
Скачать обновленный скрипт.
26/10.2009 исправлена ошибка, связанная с контролем парности кавычек.
Обновления 19.08.2010
1. Новый скрипт упорядочения кавычек одного уровня
Скрипт SimplestQuotes заменен на SingleLevelQuotes — новый скрипт обрабатывает таблицы и сноски, чего не делал SimplestQuotes. Он заменяет все кавычки на выбранные пользователем в настройках программы — окно Preferences, вкладка Dictionary поле Double Quotes для языка первого абзаца статьи.
Если для первого абзаца определён русский язык, то на экране в процессе работы этого скрипта будет вот такое окно. Этот скрипт работает как в основном тексте статьи, так и в таблицах, сносках, привязанных объектах.
2. Работа с английскими текстами
А. Знак после буквы s — кавычка или апостроф?
Предыдущие версии часто ошибались при обработке текстов на английском языке. Проблема в том, что там после буквы s или n (с другими английскими буквами я не встречал подобной проблемы) может быть и кавычка, и апостроф. В переданном на верстку тексте на месте этих знаков может быть какой угодно знак, похожий на кавычку, и автоматически определить, что должно быть — закрывающая кавычка или апостроф — невозможно.
В новой версии эти случаи отлавливаются в обеих программах SingleLevelQuotes и DoQuotesOK,
и выводится на экран сообщение:
Помеченные красным цветом myProblemQuoteColor надо проанализировать, все апострофы заменить на какую-нибудь абракадабру, и после обработки текста вернуть апострофы в вёрстку.
Б. Цитата из нескольких абзацев
В английском языке совершенно непонятное правило оформления многоабзацных цитат:
если цитата растягивается больше, чем на один абзац, то кавычки закрываются только в последнем абзаце, а открываются они в начале первого и каждого нового.
Например:
«Maybe a man in a million could unite the Hallows, Harry. I was fit only to possess the meanest of them, the least extraordinary. I was fit to own the Elder Wand, and not to boast of it, and not to kill with it. I was permitted to tame and to use it, because I took it, not for gain, but to save others from it.
«But the Cloak, I took out of vain curiosity, and so it could never have worked for me as it works for you, its true owner. The stone I would have used in an attempt to drag back those who are at peace, rather than to enable my self-sacrifice, as you did. You are the worthy possessor of the Hallows.»
Возможно, что такая нелепость напрягает британцев и американцев, и, чтобы не применять это правило, в английских книгах при цитировании больших фрагментов часто вообще обходятся без кавычек, выделяя цитируемый текст с помощью увеличенного по бокам отступа или особого шрифта.
Но если в тексте уже есть такая цитата, то в силу заложенного в логику программы DoQuotesOK поиска открывающих и закрывающих кавычек, такая цитата не будет размечена верно. Поэтому в таких особых случаях надо пользоваться скриптом SingleLevelQuotes — он заменит кавычки на открывающие из закрывающие. Очевидно, что в такой цитате не должно быть вложения кавычек.
Скачать архив обновленных скриптов
31 комментарий »
1 Pingbacks »
-
[…] DoQuotesOK — интеллекутальный контролёр правильного расположения кавычек в тексте […]
Автору премногие благодарности!
Необходимость и актуальность данного скрипта трудно недооценить!
Прекрасно работающая программа успешно отрабатывает самые различные уровни вложения кавычек, опциональность выбора рисунка кавычек удовлетворит любой стандарт и любой вкус.
Возможно, прекращение работы в случае найденного переполнения следует сделать опциональным.
Низкий Вам поклон.
И долгих лет плодотворной творческой жизни! =))
ИнДизайн вылетает после запуска скрипта) Версия CS3 под Виндоус.
Всегда сообщайте в таком случае что пишет скрипт, аварийно завершая работу. Это облегчит решение проблемы.
Вылет программы InDesign…
Может, завершение работы скрипта с сообщением об ошибке?
Пришлите копию экрана с сообщением (сохраняется клавишей PrintScrn), и файл, на котором это произошло.
Михаил, с возвращением!
Лучше даже не PrintScrn, а Alt+PrintScrn – в таком случае «сфотографирует» не весь экран, а только активное окно (или alert).
Скрипт ничего не пишет. После выбора типа кавычек в соответсвующем диалоговом окне и нажатия кнопки ОК ИнДизайн подвисает, и через несколько секунд операционная система (Виста) выдает окно «Прекращена работа Adobe InDesign CS3» с предложениями искать решение проблемы в интернете или закрыть программу. Пробовал в разных файлах, в том числе создавал новые. То же самое, кстати, и со скриптом DoTextOK.
nobelfaik: через несколько секунд операционная система (Виста) выдает окно “Прекращена работа Adobe InDesign CS3″. Похоже, Виста принимает решение о недопустимости исполнения скрипта. Глобальный запрет операционной системой всего подозрительного с её точки зрения стал причиной и запрета работы скриптов. Не исключено, что она так поступит и со скриптами, входящими в штатную поставку индизайна.
Разбирайтесь в настройках системы, там должны быть установки, дающие пользователю больше свободы в принятии решений, какие программы запускать.
Мои скрипты, а также скрипт ColumnLines, скачанный с этого сайта, система не запрещает.
Случай неординарный, давайте решать проблему. Не факт, что получится, но попробуйте открыть скрипт в ESTK (или в Блокноте).
Найдите кусок кода:
var myIniFile = new File (activeScript.path+ «/Quotes.ini»);
if (myIniFile.exists) {
eval («//@include \’Quotes.ini\’;»);
}
else {
alert(«Не найден файл Quotes.ini. Он должен быть в том же каталоге, где размещен этот скрипт. «);
exit();
}
и отключите его, поставив в начале этого куска 2 символа — /*
и в конце этого куска тоже 2 символа */
То, что стоит между этими знаками (/*…..*/) — выполняться не будет.
Создайте пустую строку сразу после этого куска (после закрывающего */).
Затем откройте в блокноте файл quotes.ini и скопируйте в память строку
var myCharsAndDigits= «йцукеёнгшщз…….;
И вставьте скопированную строку в текст скрипта в созданную пустую строку. Сохраните всё, испытайте, какой будет результат. Ждем.
Нет, не помогает.
nobelfaik, посмотрите эту ветку:
«Не работают плагины в Windows Vista»
http://forum.rudtp.ru/showthread.php?t=26215
В постах №5-14 сказано, как «приручать» сложные скрипты.
…С этими скриптами под Вистой есть одна особенность. Самый первый их запуск нужно делать обязательно под учётной записью Администратор. Это, видимо, связано с созданием этими скриптами при первом запуске файлов настроек и т.п., что при обычной учётной записи невозможно из-за недостаточных прав пользователя. А уже после этого эти скрипты можно смело использовать и под стандартным юзером. …
…1. Имеется в виду именно учётная запись с именем Администратор (которая по умолчанию в Виста Disable), а не юзер с другим именем и правами администратора. Если в твоём случае именно так, то проблема, действительно не в этом.
2. Эта проблема известна ещё со времён Windows XP 64 bit Edition. При инсталляции Creative Suite CS, CS2 или отдельно PhotoShop CS (CS2) вместо длинного имени «Program Files (x86)» нужно подставить короткое имя «progra~2» и инсталляция проходит нормально.
…Всему виной появившийся в Висте UAC (User Account Control) и усиленные меры безопасности. Например, обычный юзер не может писать в папки Programm Files и Windows, как это было раньше в XP. Программы, запущенные под обычными учётными записями, тоже не могут создавать файлы конфигурации и т.п. в этих папках. Все пользовательские файлы должны создаваться в \Users\User_name\AppData\… С этим и связяно то, что некоторые старые программы могут работать только под аккаунтом Администратор, поскольку только Администратор имеет право писать куда угодно и читать отовсюду. Естественно, все новые проги и скрипты под Висту должны писаться с учётом этих обстоятельств….
Сообщите о результате.
Не могу переключиться на учетную запись Администратора. У меня версия Home Premium, а по ссылкам — настройки для Ultimate и Beta 2. Увы.
«Не могу переключиться на учетную запись Администратора.»
Ну а почему не поискать информацию в интернете?
Гугл на поиск «vista home premium administrator» дает ссылки:
http://gchandra.wordpress.com/2007/09/03/how-to-enable-administrator-account-in-vista-home-premium/
http://forum.ixbt.com/topic.cgi?id=22:67835
http://dimkox.livejournal.com/6323.html
и это не весь перечень ссылок.
Заставили блондинку рыться в системных настройках, и всё зря 🙂 Под Администратором ИнДизайн вылетает точно так же.
Кстати, если интересно, могу Вам на почту выслать некоторые соображения по поводу описания скрипта DoTextOK («Программа DoQuotesOK 11.03.2009»). Автор ведь Вы?
Ошибся немного, имел в виду это: «Описание возможностей программы подготовки файлов к верстке(24.11.2008)».
Шлите. В инструкциях к программам Do_Text_OK и DoQuotesOK есть обратный адрес, и люди пишут. Мне интересны суждения пользователей.
Есть два предложения к автору скрипта по его усовешенствованию.
1. Поскольку не везде принято именно та последовательность уровней кавычек, как в скрипте по умолчанию, предлагается запоминать последний выбор пользователя в ini-файле, тем более что он уже имеется у данного скрипта. Попробовал изменить умолчания сам, покопавшись в теле скрипта, но там не все совсем просто. Лучше трогать не буду.
2. Просьба по возможности предусмотреть выделение обрабатываемого материала не только «тыком текстового курсора в текст», но и выделение инструментом Selection Tool любого из связанных фреймов выбираемого материала (Story).
В обновлении скрипта 8.4.2009 будет сохраняться сделанный пользователем выбор кавычек и флажка контроля парности кавычек.
Что касается второго замечания Maxbor, то при выделении части текста пользователь должен следить, чтобы граница выделения не попала между парными кавычками. При выборе фрейма можно попасть на эти грабли, если открывающая кавычка останется в предыдущем фрейме. Поэтому в программе оставлено только выделение текста, но не фреймов.
Очень странно ведёт себя скрипт, SimplestQuotes отрабатывает нормально — кавычки исправляет. а DoQuotesOK (8.4.2009) экстренно завершается с ошибкой о переполнении.
http://www.ogilko.ru/picture.png
Система OS X 10.6, InDesign CS4
10.5.6 имелось ввиду)
SimplestQuotes — это просто пример попытки решить проблему упорядочения кавычек. Об этом же написано в doc-файле.
Программа DoQuotesOK обрабатывает только полностью размещенный во фреймах текст. Избавьтесь от переполнения и запустите программу еще раз.
Скрипт по задумке очень хороший — за кавычками нужен глаз да глаз, но почему-то у меня каждый раз происходит сбой…
после запуска скрипта, indesign довольно долго думает, т.к. файл большой и кавычек в нем очень много разных, потом начинается обработка с ползунком зеленым, а потом выскакивает всплывающее окно об ошибке.
вот ее полный текст:
javascript error
error number: 21
error string: undefined is not an object
line: 665
source: for (i=0; i<myOpenContinuousQuotes.length; i++) { myStory.characters[myOpenContinuousQuotes[i]].fillColor = "myProblemQuoteColor"; }
и, соответственно, в тексте остаются неисправленные кавычки.
кто подскажет, в чем может быть проблема?
версия скрипта: 13.06.09
спасибо.
То, что обнаружил merluzzo, возможно, объясняется следующим:
программа анализирует знаки слева и справа от этой кавычки для определения, какая кавычка — открывающая они или закрывающая. Для этого анализа символы, что могут появиться слева и справа, разделены на восемь групп. Это ранжирование по группам сделано на основе исследования многих текстов. Но не исключено, что я не учел какую-то ситуацию. Пришлите файл, на котором программа свалилась, для выяснения причины сбоя с ним надо бы познакомиться поближе.
Михаил, спасибо за столь оперативный ответ! я отправил файл на почту указанную наверху статьи. Там же и пояснения. Самому выискать место где именно происходит сбой мне пока не удалось.
Мне удалось с присланным документом повторить сообщение об ошибке, описанное выше в посте merluzzo.
Итак есть файл, это телепрограмма, в котором число уровней открывающих кавычек превышает четыре.
При запуске программы с контролем парности кавычек программа в конце концов доходит до переполнения допустимого уровня вложенности, выдает сообщение и останавливается.
И вот если теперь запустить программу еще раз, она обнаружит, что этот файл обрабатывался, но обработка до конца не дошла, и спросит — продолжить обработку дальше или с начала.
Если пользователь скажет, что надо продолжить обработку дальше, то программа аварийно завершится.
Это была пропущенная при тестировании ситуация, теперь она запрещена.
Возможность продолжить упорядочение кавычек имеет смысл только в случае, если, например, в большом файле кавычка окружена пробелами, программа не может принять решение, какая это кавычка — открывающая или закрывающая. Скрипт отмечает эту кавычку цветом, выдает сообщение и останавливается. После того, как пользователь поправит текст, можно попросить продолжить обработку дальше, а не с самого начала. Программа сама найдет точку, где она остановилась.
Что касается нарушения уровня вложенности кавычек, если это актуально, то открывающие кавычки, для которых потеряны закрывающие, просто найти, запустив программу с разными кавычками для каждого уровня вложения. После завершения работы по смене рисунка кавычек легко найти строки, где вложение кавычек нарушено.
Но для телепрограмм вряд ли важна строгая вложенность кавычек, поэтому целесообразно запускать эту программу со сброшенным флажком контроля парности кавычек.
В ближайшее время будет выложен обновленный вариант этого скрипта. Версия 26.10.2009.
Михаил, может я что-то путаю, но по-моему скрипт в некоторых случаях ошибочно анализирует наличие\отсутствие закрывающих кавычек.
При запуске скрипта, через некоторое время, появляется уведомление о наличие «пропущенных закрывающих кавычек на такой-то странице». После этого скрипт останавливается. Однако при рассмотрении указанной страницы, оказывается что все кавычки там парные, корректные — и закрывающая кавычка нигде не забыта. Но почему-то открывающие кавычки выделены как проблемные… При перезапуске скрипт каждый раз «вспотыкается» об это место!
вот скриншот с выделением примера такого места (это всё в том же файле что я слал до этого):
http://img184.imagevenue.com/img.php?image=12363_problemquotes_122_844lo.jpg
Вы прислали показательный файл с точки зрения нарушения вложенности кавычек (1052 открывающих кавычки, 1046 закрывающих; всего 117608 знаков на 25 страницах).
Но программа не может добавлять потерянные кавычки! 🙂
Значит, если важно найти строки, где нарушена парность кавычек, то надо запустить программу, указав для каждого варианта вложения свой рисунок кавычек — я говорил об этом в предыдущем сообщении.
Итак, если запустить скрипт с такими установками:
»…«
< ...>
“…”
то при просмотре текста после обработки станет ясно,
что программа шла к сообщению о превышении уровня вложенности кавычек постепенно.
Сперва на странице 2 встретится строка
19.30 Х/ф »ВАРИАНТ ‹ЗОМБИ›
и поскольку тут парность кавычек нарушена, начиная с этой строки будут использоваться кавычки < ...>.
так будет до строки на той же странице
20.30 Т/с ‹ТАЙНА “СВЯТОГО ПАТРИКА”
После этого основными станут кавычки “…”.
На странице 5 снова нарушение парности кавычек:
13.02 Д/ф “Польский поход” Гитлера и Сталина›
И встретив очередное нарушение на странице 9
00.15 Х/ф “СПЕЦОТРЯД «ЛЕЗВИЕ»»
программа остановит работу.
Пожалуй, некорректно было отображать красным цветом последние открывающие кавычки, это Вас, видимо, и смутило. Наверно, надо было красить только ту кавычку, что «переполнила чашу терпения». 😉
Но сопутствующее сообщение достаточно информативно.
И повторюсь еще раз — для таких телепрограмм флажок контроля парности кавычек надо сбрасывать.
Для тех, кому нужен этот скрипт:
В архиве 26.10.2009 у скрипта случайно оказалась неверно указанной дата в названии: DoQuotesOK (26.06.2009).jsx
Переименуйте в DoQuotesOK (26.10.2009).jsx.
Михаил, спасибо большое!
меня действительно сбило с толку, что выделяется не первое место, где произошел сбой «парности»! я запускал скрипт как Вы и советовали — с разными кавычками для разных уровней вложения, но так как в выделенном месте (см. скриншот в посте выше) были и типографские «ёлочки» для первого уровня, и прямые кавычки для второго, то я ошибочно подумал, что это и есть первое место, где по мнению скрипта нарушена парность.
а вот вручную проверить нет ли на предыдущих страницах проблем с закрываюшими кавчками я не догадался! теперь все ясно.
PS: насчет файла, согласен )) случай действительно показательный. собственно поэтому и возникла потребность в автоматизированном методе проверки кавычек, т.к. уследить за ними просто нереально! еще раз спасибо за оперативные ответы и пояснения!
Здравствуйте!
Почему-то скрипт не видит закрывающую кавычку, после которой стоит знак сноски. (не ^F, а просто цифра в суперскрипте). В чем может быть проблема?
См. скрин. http://s019.radikal.ru/i614/1501/2d/662da4275b67.jpg
Kassia, пришлите мне этот файл. Хочется поближе познакомиться с виновником торжества. m.ivanyushin # gmail.com (пробелов в эл.адресе нет!)