with(rowsTbl)
{
cells[0].texts[0].justification = 1818584692; // выключка влево
topEdgeStrokeWeight = bottomEdgeStrokeWeight = 0;
}
Причина перебора всех строк вместо всего одной колонки связана с необходимостью задать верхний и нижний отступы для строк, иначе, конечно же, проще было бы взять только одну колонку.
Наш следующий шаг - установка ширины первой колонки. Автору очень часто приходится иметь дело с ситуацией, когда в таблице фигурируют одни цифры, и лишь первая колонка предназначена для текста- для работы именно с такими таблицами скрипт в первую очередь и создавался. Чтобы повысить их читабельность, было решено постепенно увеличивать ширину первой колонки - до тех пор, пока текст не займет одну строку. В случае, если это невозможно (текста слишком много), ограничиваем максимальную ширину колонки значением 5 см (подобрано опытным путем). Оптимальная величина шага - 1 мм, что вполне достаточно для большинства случаев.
Использовать конструкцию tbl.columns [0] .cells. itemByRange () не ПОЛучИТ-ся, поскольку в данном случае нам нужна работа не с массивом данных, а непосредственно с каждой ячейкой - ведь количество символов в каждой из них может быть совершенно разным.
step =0.1 // Единица измерения (сантиметры) установлена заранее
for (i =0; i < myTable.rows.length; i++)
with(myTable.rows[i].cells[0])
while(lines.length > 1 && width < 5)
{
width += step;
}
Наконец, последний аккорд: оформляем разделительную сетку. Она должна быть только вертикальной, поэтому:
with(myTable) {
for (i =0; i < columns.length; i++)
with (columns[i])
leftEdgeStrokeColor = aD.swatches[1] ; rightEdgeStrokeColor = aD.swatches[1]; leftEdgeStrokeWeight = DEF_STROKE_W + " pt"; Явно указываем единицу измерения, иначе будут использоваться миллиметры:
rightEdgeStrokeWeight = DEF_STROKE_W + " pt"; Изменяем ширину всех колонок с учетом новой ширины у первой:
if (i>0)
{
width=(table_W-parent.columns[0].width)/(parent.columns.length-1)
}
}}
Тут также МЫ отказались от использования метода itemByRange (firstltem() , lastltemO). Дело в том, что нам нужно сделать исключение для крайнего левого столбца (который с текстом) - хотя, конечно же, можно было вместо firstltem о использовать nextitem (firstltem ()). Присваиваем стили абзацам, окружающим таблицу:
myParagraphs = mySelection.paragraphs; cur r_pa ra = my Pa rag raphs[0];
curr_para.appiystyle(pS [pSA ['Table']], true); if (table_W == Obj.w.wide)
if (table_W==Obj.w.wide)
pars.itemByRange(startP, end?).leftlndent = 0
}
with(myParagraphs)
{
itemByRange(previousItem(curr_para) , nextltem(curr_para)).leftlndent = 0;
}
Остался завершающий штрих: оформить шапку. Если использовать метод convertToHeader о напрямую, и если в шапке есть слитые ячейки, то мы поймем, что не все вопросы одинаково скрупулезно проработаны разработчиками: InDesign аварийно завершает свою работу без каких-либо предупреждений. Альтернативный вариант, найденный путем экспериментов, состоит в повторении всех тех действий, которые выполняются ручным способом: сначала выделение необходимого количества строк с дальнейшей конвертацией их в шапку.