Курсивим авторов в Списке литературы
В cписке литературы в конце книги или журнальной статьи фамилии и инициалы авторов принято давать курсивом. Хорошо, когда этот список небольшой или когда курсив сделан в исходной рукописи. Но очень часто, особенно в специальной литературе, такие списки занимают по несколько страниц, и как правило, без выделений курсивом в исходном материале. Тогда фамилии авторов приходится курсивить вручную, и это совсем не творческий процесс, а, хотя и нужная, но нудная работа. Вот и мне сейчас досталось заниматься подобным процессом — верстать указатель статей журнала за год, и как водится, выделение курсивом фамилий авторов в исходной рукописи не сделано.
Для ускорения «наклона авторов» придумалось такое Grep-выражение
которое ищет несколько идущих подряд фамилий с двумя инициалами, например: Иванов В.В., Сидоров Н.Н., Титов Г.П. … , и присваивает найденному символьный стиль Italic.
Здесь знак ^ говорит, что результатом поиска будет только та фамилия или ряд фамилий, который начинается с начала абзаца. Фамилия для поиска задаётся выражением (\u\l+) — заглавная буква, после которой идут несколько строчных. Два инициала — это \u\.\u\.
Запятая после фамилии и инициалов (если авторов несколько) ищется при помощи \,? где знак вопроса говорит о том, что запятой может и не быть (т.е. встречается 0 или 1 раз). И, наконец, плюсик в конце позволяет искать несколько авторов подряд.
Ограничения. В последовательности фамилий не должно быть сдвоенных пробелов, которые нарушают поиск. Также предполагается, что между инициалами пробелов нет. Не ищутся те фамилии, у которых один инициал (Кушкин А.), или в инициале две буквы (Картер Дж.). Для поиска таких фамилий данное выражение нужно видоизменять, с чем вы несомненно справитесь, как сделал это я, обладая минимальными знаниями регулярных выражений.
Если вы верстаете список литературы отдельным абзацным стилем, то можно такое Grep-выражение сделать как Grep-стиль (только для версий ID CS4 и более поздних).
Еще интересно, как бы эту задачу решили профи. Было бы здорово получить некое универсальное решение, и конечно, с расшифровкой.
Обновление темы
Нашлась в интернете страница толкового человека, на которой очень интересно и познавательно приведено полное решение проблемы «наклона авторов», описаны и объяснены все стадии процесса разработки Grep-выражения для Grep-стиля. Читайте об этом здесь, а мы приведем лишь конечный результат этой работы.
Я не профи 🙁 Использую отдельный абзацный стиль с грип-стилем: ^.+?\s(\u\.\s)*
Я тоже не профи… И действую просто. Привожу в порядок текст, в том числе и список литературы (спасибо за скрипт Do_Text_OK!). Между фамилиями и инициалами проставляется неразрывный пробел, а между инициалами — тонкая шпация. Это учитывается при их поиске и замене на курсивное начертание. Но все приходится делать в три этапа.
Первый. Ищем и заменяем фамилии с двумя инициалами с помощью выражения (\u\l+)~s(\u\.~<\u\.\,?)+
Второй. Ищем и заменяем фамилии с одним инициалом с помощью выражения (\u\l+)~s(\u\.\,?)+
Третий. Ищем и заменяем фамилии типа Цандер Дж. с помощью выражения (\u\l+)~s(\u\l\.\,?)+
Возникало опасение: в списке литературы эти выражения могут поменять на курсив не то что надо. Пока такого не случилось не разу!
Достоинство такого метода: порядковые номера в списке остаются нормальными, не курсивными.
Конечно, хорошо бы свести три этапа в один. У меня не получилось. Вся надежда на профи в этом интересном и нужном для верстальщиков деле!
Я вот такую конструкцию использую
^((\u\l+ )*(\u\l+\-)*(\u\l+)+ (\u\-)*\u\l?\. ?(\u\l?\.)?(, )?)+
Ищет и двойные фамилии (Петров-Водкин Х. З., De Vries P. J.) и двойные инициалы (Картер Дж.) и такую экзотику как инициалы через дефис (Namour M-A.).
Доработка
^(((\u)*\l+\s)*(\u\l+\-)*(\u\l+)+\s(\u\-)*\u\l?\.(\s?(\u\l?\.)?)*(,\s)?)+
Эта работает и после прогона sZam. Обрабатывает как «De Vries P. J.» так и «de Vries P. J.»
Тройные инициалы (Hoekstra J. B. L.) тоже причесывает.
Поскольку инициалы через дефис, как правило, бывают с точкой перед дефисом (Namour M.-A.), то предлагаю немного дополнить конструкцию anzim’а:
^(((\u)*\l+\s)*(\u\l+\-)*(\u\l+)+\s(\u\.?\-)*\u\l?\.(\s?(\u\l?\.)?)*(,\s)?)+
anzim, LionidB, спасибо. Учту Ваш опыт в очередном обновлении скрипта DoTextOK.
Этот же способ отлично работает если в сносках надо сделать авторов курсивом: задаем сноскам стиль абзаца «Сноски», в ГРИПе пишем: (((\u)*\l+\s)*(\u\l+\-)*(\u\l+)+\s(\u\.?\-)*\u\l?\.(\s?(\u\l?\.)?)*(,\s)?)+ (без первого символа ^, иначе будет искать только в начале параграфа), а дальше меняем формат найденного на стиль символов «курсив». Работает корректно в 99% — преверено в книге с 1435 сносками 🙂