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 аварийно завершает свою работу без каких-либо предупреждений. Альтернативный вариант, найденный путем экспериментов, состоит в повторении всех тех действий, которые выполняются ручным способом: сначала выделение необходимого количества строк с дальнейшей конвертацией их в шапку.


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