Кавычки / 23 марта 2007 г.
Пока я рассмотрю здесь только решение задачи для русского языка. Основная информация по типографике вынесена в другую статью, которую я очень рекомендую прочитать до того, как мы приступим к построению макроса, расставляющего в документе «правильные» кавычки.
Постановка задачи
Как правило, верстальщику достаётся текст со знаками дюйма («"»), которые предстоит заменить на нормальные «ёлочки», а при необходимости оформить вложения лапками.
Поскольку «правых» и «левых» дюймов пока не придумали, задача сводится к определению того, какой именно кавычкой является тот или иной знак дюйма. Сделать это почти всегда можно, проанализировав символы справа и слева от будущей кавычки.
Оговорка для особо въедливых
Есть ещё одна причина (кроме лени), по которой «правильные» кавычки в моих собственных «сырых» текстах почти никогда не встречаются.
Wordовский диалог Tools | AutoCorrect Options аж в двух местах предлагает нам автоматически менять в документе straight quotes (то есть пресловутые знаки дюйма) на smart quotes, да ещё в соответствии с используемым языком. Казалось бы, всё просто прекрасно, но тут, как обычно, вылезает очередное «но».
«Но» это проявляет себя в том, что если опция автоматического исправления кавычек включена, то перестают работать макросы, которые с этими кавычками что-то делают. Вернее, они работают, но уже неправильно. А рыться впоследствии в тексте и выяснять, что именно испорчено, желания не возникает, поэтому я упомянутую выше опцию и отключаю сразу после свежей инсталляции MS Office. Уж проще после набора запустить макрос, который исправит только кавычки и не тронет ничего больше.
Решение: вариант первый
Решение это частичное. Предполагается, что случаев, когда в документе вообще встречаются вложенные кавычки, не так уж много, а если они и есть то исправить потом в паре мест «ёлочки» на «лапки» вручную выйдет дешевле.
Давайте посмотрим, как можно определить, какая именно «ёлочка» должна заменить очередной знак дюйма. Замечу, что сперва я меняю на «дюймы» все «английские» кавычки как чаще всего встречающийся артефакт. А теперь разберёмся с парами:
Слева от левой «ёлочки» могут быть следующие символы: |
Справа от правой «ёлочки» могут быть следующие символы: |
[^s^13·\(\[\<\{\-\-] |
[^s^13·\.\,\?\!\;\:\)\]\}\>\-\-\…] |
А теперь можно составить алгоритм будущего макроса.
1. Меняем на знаки дюйма все найденные «псевдокавычки».
2. Проводим две автозамены в соответствии с таблицей.
Кому-то этого может показаться мало, но мне пока хватало.
Результат выложен для скачивания внизу под названием QuotesRus.
Если вы работаете с документом, из которого предполагается сделать HTML, прогоняйте этот макрос до того, как начнёте вносить гипертекстовую разметку. Нетрудно понять почему. ;-)
Решение: вариант второй
Это решение тоже покрывает не все возможные варианты, но оно, по крайней мере, помогает расставить вложенные кавычки в автоматическом режиме. Вплоть до третьего уровня. Если вы сами набирали текст, всё сработает как должно. А вот если в доставшемся вам документе есть ошибки с парностью кавычек (например, если наборщик счёл, что при вложениях одна из стоящих рядом кавычек поглощается), приведённый здесь макрос может натворить бед. Имейте в виду.
Макрос QuotesPlusRus сперва делает то же самое, что и QuotesRus, после чего ищет последовательно встречающиеся пары открывающих и закрывающих «ёлочек» и при необходимости меняет эти «ёлочки» на «лапки». Причём делает он это два раза, анализируя второй раз уже повторно встречающиеся «ёлочки».
В код этого макроса я совершенно осознанно не полез, поскольку ОНО РАБОТАЕТ. Что-то улучшать и к чему-то придираться предстоит вам, уважаемые посетители.
Макросы к статье
QuotesRus (однородное форматирование всех кавычек)
QuotesPlusRus (форматирование с учётом 'вложений' до 3-го уровня)
...
«Заголовки» | «Тире»
наверх
|