pars[i].appIyStyle(pS[pSA['Question']] , true)
Следующему абзацу присваиваем стиль Answer, ПОСКОЛЬКУ ВОПрОС ВССГДЯ 33-нимает ровно один абзац:
pars[i+1].appIyStyle(pS[pSA['Answer']], true)
Теперь определяем положение двоеточия в абзаце с ответом и все символы с начала строки до позиции, занимаемой двоеточием, форматируем стилем символов Bold (используем метод itemByRange о). Соответственно после этого можно переходить сразу на третий абзац, поскольку первые два уже отформатированы (увеличиваем счетчик). Если в третьем абзаце двоеточие в определенном диапазоне не обнаружено, значит, продолжается ответ, а мы продолжаем присваивать СТИЛЬ Answer.
pars[i+1].characters.itemByRange(0, s).appIyStyle(cS [cSA['Bold']], true)
Как только снова находим двоеточие, значит, снова пришла очередь абзаца с вопросом, и т. д. до конца области выделения.
Осталось предусмотреть нюанс, возникающий при подходе цикла к последнему абзацу: дело в том, что объект pars[i] в таком случае существовать будет, а вот pars[i+i] - уже нет. Чтобы скрипт корректно заканчивал свое выполнение, добавляем еще одну проверку, которая разрешает дальнейшее его исполнение только в случае, если после текущего абзаца существует еще один:
while (pars[i+1]!=null)…
Данный скрипт, кроме практической ценности, после некоторых модификаций может быть использован и для других аналогичных вариантов, как, иа-пример, .в таком:
[Что:] [название]
[Где: страна проведения Когда: дата]
[Особенности проведения:] текст где границы разных стилей обозначены квадратными скобками.
7.3.5. Автоматический корректор
Данный скрипт был написан для автоматического переведения материала, не прошедшего корректорскую проверку, к профессиональному виду (или прошедшего через корректора, но все равно нуждающегося в дополнениях) и постоянно используется автором в своей работе.
Сначала был составлен список необходимых преобразований:
несколько подряд идущих пробелов менять на один;
между цифрами - неразрывное тире;
вокруг тире - только неразрывные пробелы;
пробел после цифры - неразрывный (например, "3 кг");
кв. м и куб. м - соответственно м2 и м3;
несколько подряд идущих прописных букв (часто используются для обозначения формы собственности предприятия)- не отрывать от следующего слова (например, АОЗТ "Пластмасс");
в списках для их отбивки по левому краю, после пробела - символ абзацного отступа.
При желании список можно дополнять собственными правилами, в книге показывается лишь сам подход.
Первым в нашем списке идет замена множества пробелов.
Для замены двух и более пробелов на один потребуется еще немного расширить наши познания в регулярных выражениях. Для поиска текстового фрагмента заданной длины в них предусмотрена конструкция [rain, max), которая определяет минимально и максимально допустимую длину поискового фрагмента. В нашем случае достаточно составить конструкцию (2,} - не указанный явно второй аргумент говорит о том, что максимум не ограничен - что нам с вами и нужно. Меняем на один пробел (" ").