. Листинг 8.11. Скрипт для InDesign
mySelection = арр.selection[0] ;
// Поскольку Word в конце файла ставит знак абзаца (такова его // особенность), нам его придется удалять для корректности findO = /л |(\n )|\n$/g; replaceO =
// Параллельно удаляем лишние пробелы, чем так часто грешат переводчики findl = / +/g; replacel = " "
// Считываем файл, сохраненный Word fName = File("D:/temp.txt"); fName.open("r"); myLine = fName.read()
// Получаем массив с содержимым ячеек arr = myLine.split("\t") ;
// Если переводчик no какой-то причине решил использовать
// не табуляцию, а оформил текст в виде таблицы - ничего страшного,
// напишем еще пару строк.
// Если массив не получился, то пробуем разные варианты, if (arr.length = 1)
arrl = myLine.split("\r"); if (arrl.length = 1)
arr = myLine.split("\n");
II После предыдущих операций мы в любом случае получим массив //из содержимого ячеек
for (i=0; i< mySelection.cells.length; i++) {
// Проверяем, чтобы не было ячеек, объединенных по горизонтали -
// иначе возникнут проблемы if (columnSpan==l){
// Проводим замену г = arr[i].replace(findl, replacel); г = r.replace(findO, replaceO)
// Первая буква всегда должна быть заглавной
res = г.substring(0,1).toOpperCase() + г.substring(1)
mySelection.cells[i].contents = res;
// Поскольку текст на разных языках может существенно отличаться // по количеству знаков (например, английский, как правило,
// короче, а значит, высота, оставшаяся от русского варианта, будет // излишней). Обновляем высоту строк таблицы путем обнуления -
// при этом InDesign самостоятельно рассчитывает необходимую
// высоту ячеек
with (mySelection.cellsfi]) {
if ((rowSpan==l) && (lines.length>0)) { height = 0
}
}
}
fName.close();
} else (
alert("Среди выделенных ячеек есть объединенные по горизонтали - с такими скрипт работает некорректно. Действие отменено.")
}
Таким образом, творчески подходя к решению задачи, можно обойти некоторые ограничения, накладываемые текущей реализацией механизма скриптин-га в InDesign, как это было продемонстрировано в предыдущем примере.
8.4. Форматирование таблицы
Продолжим изучать более глубокие настройки форматирования: будем использовать назначение цветов, стили, уделим внимание вопросам оптимизации, без которой работа с объемными таблицами малоэффективна, после чего сможем гибко управлять таблицами любых размеров. Рассмотрим пример, который полностью заменяет труд верстальщика в данном вопросе.
Как извести», при импорте документа Word в InDesign параметры ячеек теряются, типичный результат показан на рис. 8.3, вверху. Наша задача- из этого полуфабриката создать полноценную таблицу, результат представлен на рис. 8.3, внизу.
Рис. 8.3. Стили, используемые при оформлении таблицы
Предположим, что верстка двухколоночная. Предусмотрим, чтобы таблицы были двух видов: узкие - в одну колонку, и широкие - занимающие обе полосы набора. Далее для заливки строк будем использовать два чередующихся цвета, цвет окантовки у всех ячеек выберем белым. Внутренние отступы с боков зададим в 1 мм, по вертикали - 0,5 мм (см. рис. 8.2, внизу). Для текста в шапке таблицы будем использовать стиль абзаца MyTable Hdr, для остального текста- Table contents. Кроме того, обеспечим выключку во всех ячейках, кроме крайней правой колонки, по центру и отцентрировано по вертикали. Что касается самой левой колонки, то поставим задачу, чтобы ее ширина была такой, чтобы не было переноса текста (в случае, если таблица занимает две колонки текста), ну а в случае слишком длинного текста, ограничим ее ширину каким-то логичным значением. Что касается форматирования текста, то абзац перед таблицей будет нести стиль Table Header, абзац с таблицей- Table, а следующий абзац под таблицей- Table Footer. Таким образом, после выполнения скрипта мы получим полностью отформатированную по нашим правилам таблицу, что невозможно даже в самом современном InDesign, не говоря уже о тех пользователях, которые работают с InDesign CS2.