<Wounded destiny>
a talisman for good luck

aindesign.ru/forum/viewtopic.php?f=2&t=16 - висячие предлоги

habrahabr.ru/post/136348/ - пробелы

vashgd-point.livejournal.com/254947.html?thread... - Как автоматически избавиться от висячих предлогов

-=-
1) Задача: сделать неразрывным пробел после некоторых 1- и 2-буквенных слов.
Вариант 1
Find what: \ b(А|a|В|в|Во|во|Да|До|до|За|за|И|и|Из|из|Их|К|к|Ко|ко|На|на|Не|не|Ни|ни|Но|но|О|
о|Об|об|От|от|По|по|С|с|Со|со|То|У|у|Уж|Я)(\s)
В качестве исходного перечисления взят набор 1- и 2-буквенных слов из sZam 4.1 Виталия Батушева. Сокращайте/дополняйте по вкусу и потребностям.
Change to: $1~S
Т.е. заменить найденный предлог, частицу или союз на него же + неразрывный гибкий пробел.
Вариант 2
Find what: (?<=\ b(А|a|В|в|Во|во|Да|До|до|За|за|И|и|Из|из|Их|К|к|Ко|ко|На|на|Не|не|Ни|ни|Но|но|О|
о|Об|об|От|от|По|по|С|с|Со|со|То|У|у|Уж|Я))(\s)
Ищется только пробел после перечисленных вариантов слов.
Change to: $0 [+ опция No break] или ~S
Найденному пробелу назначается опция неразрывности, либо он меняется на неразрывный гибкий пробел, кому как нравится.
Внимание! В сочетании "\ b" в обоих вариантах пробел надо убрать! Параметры поиска сохранить для повторного использования. Например, как No Break After. Enjoy.

2) Вставка неразрывного пробела между инициалами и между инициалом и фамилией.
Задумывалось для случая, когда однобуквенные инициалы (не "Дж.", например) стоят перед фамилией, так что для универсальности потребует доводки.
Find what: (?<=\b\u\.) (?=\u)
Объяснение здесь и далее в духе for dummies " src="www.prodtp.ru/style_emoticons/default/wink.gif&...; />:
Ищем обычный пробел. Он здесь посередине, между скобками.

Первое условие: ПЕРЕД пробелом должна стоять (?<=) прописная буква \u с точкой \.

Дополнительное условие: перед этой прописной \u должна проходить "граница слова" \b. В противном случае, GREP найдет пробел после аббревиатуры в конце предложения: "...заявил представитель США. М. Петров ответил на это, что..."
А вот скобка, например, не повлияет на поиск: "...заявил представитель США. (М. Петров это предсказывал.)"

Второе условие: ПОСЛЕ найденного пробела должна быть (?=) прописная буква \u.

Change to: ~< [+ опция No break]
Или любой другой пробел, по вкусу.

3) Активация автоматических переносов для иностранных слов в русском тексте.
При большом количестве иностранных слов они могут нарушить набор, если не будут автоматически переноситься. А они не будут, пока им не назначен соответствующий язык. Проблема решается очень просто, на примере русско-английского текста:
Find what: [A-z]
Ищется любой символ латиницы.
ЛИБО
Find what: \b[A-z]+
Оптимизированный вариант поиска. Поиск идет не посимвольно, а по словам.
Change to: $0 [+ опция Language:English:USA]
Каждому найденному вхождению присваивается опция "американский англ. язык".

4) Неразрывный пробел между числом и именем месяца.
Find what: (?<=\d) (?=январ|феврал|март|апрел|мая|мае|маю|июн|июл|август|сентябр|октябр|ноябр|декаб)
Поиск пробела, перед которым стоит любая цифра, а после него – один из перечисленных вариантов текста.
Change to: $0 [+ опция No break] либо просто ~S
Найденному пробелу назначается опция неразрывности, либо он меняется на неразрывный гибкий пробел, кому как нравится.


@темы: ссылки, в разработке, Indesign