)

}

В случае, если вы захотите создать собственные правила автозамены, вам потребуется экспериментировать как со строкой поиска/замены, так и с порядком выполнения операций: результат, полученный от предыдущей операции, используется при последующей, что требует постоянного внимания. По своему опыту скажу, что проще использовать иную запись для поиска/замены: строки поиска проще записывать в виде одного массива, замены- в другой, и по очереди их считывать (листинг 7.13).

var findA = new Array(); var replaceA = new Array();

findA[findA.length] = ' {2,}'; replaceA[replaceA.length] = ' 1

findA[findA.length] = '^[ \t]+'; replaceA[replaceA.length] = ''

findAffindA.length] = '(.) (-|-) (.)';

replaceAfreplaceA.length] = '$1' + '\хАО' + '\u2013' + '\хАО' + '$3'

И так далее. При первом упоминании массив пуст, поэтому findA. length = о, что дает возможность задать его первый элемент, после чего длина массива становится равной 1, что позволяет задать следующий элемент н т. д.

По окончании заменяем прежнее содержимое абзаца новым:

pars[i].contents = г Теперь перейдем к переводу цифр в верхний индекс. Напрямую уже использовавшимся методом replace () воспользоваться не удастся (JavaScript работает только с неформатированным текстом), поэтому для такого случая будем использовать возможности InDesign. Напомню синтаксис замены:

search {for, wholeWord, caseSensitive, replaceWith, withFindAttributes, vi thChangaA t tribu tes)

Поэтому в нашем случае получим: арр.search("@@@", undefined, undefined, "3", undefined, 'Ь {position:Position.superscript]) app.search("00", undefined, undefined, "2", undefined)

В последней строчке мы не повторили задание форматирования- по той простой причине, что в предыдущей строке настройки форматирования мы не сбрасывали, поэтому они остались неизменными с предыдущей операции.

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

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

А теперь - полный текст скрипта (листинг 7.14).

Листинг 7.14. Полный текст скрипта арр.findPreferences = null; арр.changePreferences = null; myDccument = app.activeDocument

var findA = new Array(); var replaceA = new Array();

findA[findA.length] = ' {2,}'; replaceA[replaceA.length] = ' '


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