Граница текста в списке

Рис. 7.1. Граница текста в списке Последнее действие - перевод выражений "кв.м", "куб.м" в принятую форму (м2, м3). Его будем проводить стандартными средствами InDesign.

Итак, основная работа выполнена. Осталось только оформить наши записи в виде скрипта (листинг 7.11). Регулярные выражения в JavaScript задаются между двумя косыми чертами (слэшами), а ключ д означает многократную замену (global). Также предусмотрен ключ i - игнорирование регистра (т. е.

менять как строчные, так и прописные буквы), мо нам он не понадобится. Поиск будем проводить по очереди в каждом абзаце выделенного текстового фрагмента. Итак, можем записать для блока базовых преобразований.

• Листинг 7.11. Автоматический корректор

findl = / {2,}/g;

replacel = " " // Замена множества пробелов

find2 = /(\d) ?(-)-) ?(\d)/g;

replace2 = "$1" + "\u2011" + "$3" // Неразрывное тире между цифрами,

// удаление лишних пробелов

find3 = /(.) (-I-) (.)/д;

replace3 = "$1" + "\хА0" + "\u2013" + "\хА0" + "$3" // Неразрывные

// пробелы вокруг тире

find40 = /([лм])(\d) /д;

replace40 = "$1"+"$2"+"\хА0" // Пробел после числа - неразрывный

fina41 = /(тыс|млн|мпрд)\.? ?/д; гер1асе41 = "$1"+"\.\хА0" // Учитываем множители

/'/ Остальные операции поиска/замены: find5 = /([А-Я]{2,}) (”]")/д

replaces = "$1"+"\хА0"+"$2" // Не отрывать форму собственности

// от названий

find6 = /А([\x95\u2013\u2014\x2D])/д; replace6 = "$1" + "\u2002" + п\х07"

// В списке - фиксированный пробел + Indent Неге

find7 = /л(м\.кв\.)/д; replace7 = "м@@"

find8 = /л(м\.куб\.)/д; replaces = "м@@0" С инструментарием JavaScript закончили, вернемся опять к возможностям InDesign. Определим диапазон поиска. Поиск будем проводить только в текстовых абзацах, игнорируя таблицы и иллюстрации. Кроме того, как показала практика, необходимо учитывать наличие сносок, поскольку InDesign некорректно обрабатывает поиск в них. Анализ объектной модели программы по казал, что в параметрах абзаца предусмотрены свойства tables (наличие таблиц), aiiGraphics (иллюстраций) и сносок (footnotes), чем мы и воспользуемся.

Итак, проводим замены по очереди в каждом выделенном абзаце (листинг 7.12).

Листинг 7.12. Замена в таблицах, иллюстрациях, сносках

pars = арр.selection[0].paragraphs for (i=0; i<pars.length; i++) {

if ( (pars [i] .tables, lengthcl) && (pars [i] . aiiGraphics. lengthcl) &£.

(pars[i].footnotes.lengthcl) ) {

myContents = pars[i].contents.replace(findl, replacel) myContents = myContents.replace(find2, replace2) myContents = myContents.replace(find3, replace3) myContents = myContents.replace(find40, replace40) myContents = myContents.replace(find41, replace41) myContents = myContents.replace(find5, replaceb) myContents = myContents.replace(find6, replace6) myContents = myContents.replace(find7, replace7)


⇐ вернуться назад | | далее ⇒