[ID CS4-CS6] Как покрасить абзацы через один

NNN5

Модератор
Топикстартер
15 лет на форуме
Сообщения
1 256
Реакции
1 012
Интересный совет дал Питер Карел. В таблицах часто используется приём окрашивания чередующихся строк. Что, если вам нужно покрасить (= присвоить стили) таким же образом к чередующимся абзацам? Он предлагает назначить первый стиль всему куску текста, создать второй стиль и затем прогнать поиск-замену, используя в поле "Найти" такое выражение:
\r.+\r\K.
Поле "Заменить" оставить надо пустым, и указать, что менять нужно на Стиль 2.

Метасимвол \K - более мощная альтернатива Положительному просмотру назад (?<=). Обладает возможностью использовать Положительный просмотр назад переменной длины (Positive Lookbehind). Был впервые внедрён в версии CS6.

Данный grep-запрос ищет первый символ (самая последняя точка после \K) абзаца, которому будет присвоен Стиль 2, притом этот символ должен иметь два абзаца до него (\r.+\r).

Недостатки: если число абзацев изменится, то придётся прогонять этот поиск-замену заново. В отличие от перекрашивания табличных строк это — не динамическая функция, и чудесного обновления не случится.
Можно, разумеется, применить Next Styles, что также не является динамической функцией.
Однако Positive Lookbehind типа \K — полезный инструмент, который, выполняя те же функции, что и классический, снимает некоторые его ограничения и, кроме того, в сложных grep-запросах смотрится проще, чем круглые скобки.
В подробностях описано это в книге GREP in InDesign.
 

andrejK

R.I.P.
Сообщения
10 300
Реакции
5 218
странно, что адобовцы не придумали точно такого же для Lookahead
 

NNN5

Модератор
Топикстартер
15 лет на форуме
Сообщения
1 256
Реакции
1 012
Lookahead не имеет таких ограничений, следственно, и так даёт найти выражение переменной длины.