// для пустых абзацев

searchString_2 = ”/л[ \t]*[\r\n]+[\r\n]/" replaceString = "\r" styleApplied =

myTextFrames = myDocument.textFrames for (i=myAllItems.length-1; i>-l; i-){

if (myAllItems[i].constructor.name == "TextFrame") {

// Удаление пустых текстовых фреймов

if (myAllItems[i].contents.match( searchString_l ) = null) { myAllItems[i].remove()

} else {

myParagraphs = myAllItems[i].paragraphs; for (j=myParagraphs.length-1; j>-l; j-){ with(myParagraphs[j]){

Глава 6

// Для поиска неиспользуемых стилей styleApplied += appliedParagraphStyle.name;

11 Обрабатываем исключения if (footnotes.lengthcl && contents != 'b

1396927554 && contents != 1397773242) {

// Удаление пустых абзацев myAUItems [i] .paragraphs [j ]. contents = 'b myAUItems [i] .paragraphs [j ] . 'b contents.replace(searchString_2, replaceString)

}

}

}

}

}

}

// Удаление неиспользуемых стилей

for (i=myParagraphStyles.length-1; i>l; i-){

ix = styleApplied.search(myParagraphStyles[i].name); if (ix = -1) {

myParagraphStyles[i].remove() ;

}

}

// Уборка монтажного стола

myObjs = myDocument.pageltems.everyltemf).parent; for (var j = myObjs.length - 1; j >= 0; j-) {

// Проверяем родителя.

// Если страница, то объект пропускаем

if (myObjs[j].constructor.name == "Page") continue;

// Иначе - в корзину

myDocument.pageltems[j].remove());

}

// Удаляем неиспользуемые цвета myUnusedSwatches = myDocument.unusedSwatches for (var j = myUnusedSwatches.length - 1; j >= 0; j-) { myUnusedSwatches[j].remove()

}

Удаление заякоренных текстовых блоков в скрипт не включено, поскольку это потенциально опасно для уже сверстанных материалов- ведь в них вполне могут присутствовать заякоренные объекты, которые были специально размещены именно таким образом. В принципе можно обойти и это ограничение, если якорям были назначены стили - в таком случае достаточно проверять наличие у них стиля (objectstyle), и если он Basic Frame (стиль по умолчанию, т. е. рука верстальщика его не касалась), то удалять. Конечно, свое название скрипт оправдывает лишь частично, на самом деле он является только подготовкой к основной уборке, которая будет затеяна в скрипте "Автоматический корректор" (см. разд. 7.3.5).

ГЛАВА 7

Поиск и замена

Поиск и замена в тексте-- одна из наиболее часто встречающихся операций. К сожалению, встроенные средства редактора достаточно скромны и основное отличие InDesign CS и CS2 от Notepad (Блокнота) в этом вопросе состоит лишь в поддержке форматирования. Так, обе этих версии не позволяют замену фрагментов по гибкой маске (например, проводить замену слов, начинающихся с определенных символов) - а только один четко определенный фрагмент на другой. Так, например, заменить "кв. м" на "м2" невозможно, сочетание "цифра-тире-цифра" на "цифра-неразрывное тире-цифра", "цифра-пробел" на "цифра-неразрывный пробел" также-- примеров можно привести массу.

В то же время в JavaScript встроены мощные функции поиска/замены (на базе регулярных выражений), что позволяет выполнять операции любой степени сложности. Одно ограничение: JavaScript работает с текстом исключительно как со строкой, поэтому форматирование (по идее) сохраняться не должно. В то же время заложенный в InDesign механизм сохранения форматирования работает корректно не только при замене текста внутренними функциями (через Find/Replace), но также и через JavaScript. Во всяком случае, при использовании внешнего механизма автору не известна ни одна проблема потери форматирования. Дополнительное достоинство скригггинга- возможность формирования целого пакета операций поиска/замены с последующим исполнением их одним нажатием клавиши.


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