re6 = new RegExp("(" + Vowels + Consonant + Consonant + ")(" + Consonant + Consonant + Vowels + ")","ig");

re7 = new RegExp("{" + hyp symbol + Consonant + Vowels + ")(" + Consonant + Vowels +")","ig");

if(app.selection[0].length != 0) {

myContents = app.selection[0].contents myContents = myContents.replace(rel, hyp_replace) myContents = myContents.replace(re2, hyp_replace) myContents = myContents.replace(re3, hyp_replace) myContents = myContents.replace(re4, hyp_replace) myContents = myContents.replace(re5, hyp_replace) myContents = myContents.replace(re6, hyp_replace) myContents = myContents.replace(re7, hyp_replace) for (j in Except) {

exceptions = Except[j].toString().split(’~1)

myContents = a.replace(eval("/("■ + exeptions[0] + ")" + hyp_symbol +

"?(" + exeptions[l] + ")(" + RusN +")/i"), "$1" + "$2" + hyp_symbol + "$3")

)

app.selection[0].contents = myContents } else (

alert("No selection texts!"); exit () ; Скрипт использует такие предположения:

переносы всегда могут быть поставлены между двумя подряд идущими гласными буквами ("со~отечественник");

между двумя подряд идущими согласными, если вокруг них гласные ("со-отечествен~ник");

между сочетаниями "любой знак плюс гласная" и снова "любой знак плюс гласная"("сооте-чественник");

между двумя гласными, разделенными тремя или четырьмя любыми другими буквами ("соотечест-венник").

Все они заданы соответствующими конструкциями в переменных rel, …, ге7

(Vowels - гласные, Consonant - согласные).

Сначала оба алфавита разбиваются иа группы из согласных, гласных и особую группу, в которую поместим "йъь". После этого по очереди проводим замену в соответствии с опнсанными выше правилами. Ключи "ig" позволяют выполнять множественную замену без учета регистра. Скрипт работает достаточно быстро, причем качество расстановки переносов не хуже, чем у InDesign CS 2. Более того, его можно улучшить, если создать словарь исключений, в котором указать правильную расстановку переносов. Как это реализовать- зависит от вас: можно в самом скрипте перечислять исключения, а можно в виде отдельного файла словаря, при этом пополнять его смогут все, даже не знакомые со скриптингом, поскольку он будет представлять собой простой редактируемый текстовый файл. В данном примере реализован первый вариант- исключения в самом скрипте.

Возьмем, к примеру, слово "постсоветский". По нашим правилам скрипт сделает такие переносы: "пос~тсо~вет~ский" - первый перенос поставлен неверно. Чтобы исправить ситуацию, определяем фрагмент "пос~т" как исключение. В результате его обработки получаем правильный вариант: "пост~со~вет~ский".


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