Подтягиваем хвосты в InDesign

13 мая 2014

GREP в InDesign

Одной из важных мелочей в вёрстке текста являются висячие предлоги (а также союзы и частицы) в конце строк. Особенно они заметны во флаговом наборе. Рекомендуется привязывать предлоги и союзы к следующему за ними слову, а частицы — к предыдущему. После них должен ставиться неразрывный пробел alt+ctrl+x | ⌥⌘X. Нельзя отрывать единицы измерений от их значений, разрывать пробелом некоторые сокращения.

Возникает сложность: в тексте предлогов, союзов и частиц могут быть десятки, сотни, тысячи. Расставлять руками? Расставлять автозаменой? Как не забыть все правила расстановки? А потом пришлют тонну правок по тексту, и всё делать заново? Оно всё равно где-нибудь отвалится! Пусть компьютер делает это за меня!

Собрав однажды кучу примеров таких правил я придумал, как это автоматизировать. Чтобы InDesign сам находил и связывал одно- и двухбуквенные слова, я использую алгоритм работы с регулярными выражениями GREP.


Слов-то много!

Воспользуемся методом комбинаторики и запишем все двухбуквенные комбинации (за исключением пар одинаковых гласных). Выделим все слова, которые имеют смысл, кроме аббревиатур, но используем только те, которые подчиняются правилам вёрстки.

аб ау еб ёб иб об уб ыб эб юб яб ба бе бё би бо бу бы бэ бю бя ав ев ёв ив ов ув ыв эв юв яв ва ве вё ви во ву вы вэ вю вя аг ег ёг иг ог уг ыг эг юг яг га ге гё ги го гу гы гэ гю гя ад ед ёд ид од уд ыд эд юд яд да де дё ди до ду ды дэ дю дя ее её аж еж ёж иж ож уж ыж эж юж яж жа же жё жи жо жу жы жэ жю жя аз ее её ез ёз из оз уз ыз эз юз яз за зе зё зи зо зу зы зэ зю зя ай ей ёй ий ой уй ый эй юй яй йа йе йё йи йо йы йу йэ йю йя ак ек ёк ик ок ук ык эк юк як ка ке кё ки ко ку кы кэ кю кя ал ел ёл ил ол ул ыл эл юл ял ла ле лё ли ло лу лы лэ лю ля ам ем ём им ом ум ым эм юм ям ма ме мё ми мо му мы мэ мю мя ан ен ён ин он уг ын эн юн ян на не нё ни но ну ны нэ ню ня ап еп ёп ип оп уп ып эп юп яп па пе пё пи по пу пы пэ пю пя ар ер ёр ир ор ур ыр эр юр яр ра ре рё ри ро ру ры рэ рю ря ас ес ёс ис ос ус ыс эс юс яс са се сё си со су сы сэ сю ся ат ет ёт ит от ут ыт эт ют ят та те тё ти то ту ты тэ тю тя ау аф еф ёф иф оф уф ыф эф юф яф фа фе фё фи фо фу фы фэ фю фя ах ех ёх их ох ух эх ых юх ях ха хе хё хи хо ху хэ хы хю хя ац ец ёц иц оц уц эц ыц юц яц ца це цё ци цо цу цэ цы цю ця ач еч ёч ич оч уч ыч эч юч яч ча че чё чи чо чу чы чэ чю чя аш еш ёш иш ош уш ыш эш юш яш ша ше шё ши шо шу шы шэ шю шя ащ ещ ёщ ищ ощ ущ ыщ эщ ющ ящ ща ще щё щи що щу щы щэ щю щя

Перечислим все однобуквенные слова, их все нельзя отрывать от следующего слова:

а в и к о с у я

Сюда же следует отнести наиболее распространённые сокращения и единицы измерения, частицы, которые нельзя отрывать от предыдущего слова: грамм, год, город, метр, рубль, тонна, тысяча

б г г. ж м р. т т.

Перечислим все двухбуквенные слова, которые желательно не отрывать от следующего слова:

во вы да до за из ко мы на не ни но ну об он от ох по со та те то ту ты уж

Перечислим слова, которые желательно не отрывать от предыдущего слова:

га гг. дм долл. др. же кг мг мл мин. млн. млрд. мм нм с. см стр. руб.

Не забудем про сокращения и символы:

т. п. т. д. т. е. $ € % —

Как это всё работает?

Преимущество этого метода в том, что эти правила сохраняются в самой программе до создания нового файла. И появляются во всех вновь созданных документах в стиле Basic Paragraph, на основе которого создаются все остальные стили. Вы можете навсегда забыть про замену обычных пробелов на неразрывные через Find/Change.

Откроем InDesign и в палитре Character Styles создадим стиль No Break, в котором укажем не разрывать символы.

Окно Character Styles

Откроем стиль Basic Paragraph в палитре Paragraph Styles, перейдём на вкладку GREP Style, нажимаем на кнопку New GREP Style, в Apply Style выбираем наш стиль No Break. Дальше стоит поле для ввода текста To Text: \d+.

Окно Paragraph Styles

Вставим в это текстовое поля следующее выражение:

\<(?i:)(а |в |и |к |о |с |у |я )

Оно означает: найди в начале слова \< без учета регистра ?i: любой шаблон из перечисленных ( | ). Вертикальная черта означает «или» и как варианты даны слова с пробелом после. Если не указать, где искать, то поиск найдет саму букву, а не слово целиком. Правило «без учета регистра» позволяет не писать правило для прописных букв.

Жмём New GREP Style снова и добавляем туда остальные правила:

\>(?i:)( б| г | т| ж| м| р.)\b
\<(?i:)(во |вы |да |до |за |из |ко |мы |на |не |ни |но |ну |об |он |от |ох |по |со |та |те |то |ту |ты |уж )
\>(?i:)( га| гг.| дм| долл.| др.| же| кг| мг| мл| млн.| млрд.| мм| нм|с. | см| стр.| руб.)
\>(?i:( ~_| ~=| %| $| €|\d+ ))

Последнее правило приклеивает тире и знаки к предыдущему слову, а числа — к следующему.

Настройка завершена. Дальше создаем свои стили, указав за основу Basic Paragraph, стиль No Break будет применяться автоматически. Если вы хотите отключить эту настройку, то вместо Basic Paragraph нужно выбрать No Style.


Регулярные выражения для автозамены

Висячие предлоги работают с помощью GREP Style только потому, что пробелу и предлогу велено не разрываться. Однако, это не избавляет от необходимости заменять некоторые регулярные выражения с помощью автозамены. Когда весь текст импортирован в файл вёрстки, нужно провести ряд автозамен. Выражения можно сохранить в шаблоны в окошке Find/Change.

Заменить все множественные пробелы на один:

[~m~>~f~|~S~s~<~/~.~3~4~% ]{2,} \s

Убрать пробелы в конце параграфов (поле для замены остаётся пустым!):

\s+$

Заменить все множественные переходы строки на один:

~b~b+ \r

Заменить дефис на длинное тире с неразрывным пробелом (квадратные скобки окружены пробелом):

 [-|–|—]  ~S~_ 

Во вкладке Text заменить все прямые ковычки на «ёлочки»:

^" "

Это минимальный набор автозамен для простого текста. Но часто бывает нужно использовать и другие регулярные выражения. Вот некоторые из тех, что я пользуюсь постоянно.

Привести в порядок все номера телефонов, а их бывает много:

(\+7|8).(\d\d\d).(\d\d\d).(\d\d).(\d\d) +7-$2-$3-$4-$5

Привести в порядок квадратные метры:

(\d+).м?.2 $1~Sм²

Вот таким простым способом можно заставить компьютер работать за вас. Вы сэкономите кучу времени, не отслеживая висячие предлоги, оторванные символы или переехавшее на новую строчку тире. Корректор скажет вам спасибо! :-)


Рекомендую посмотреть