}

myXl = myTextFrame.geometricBounds[1] + myLeftlnset; myX2 = myXl + myColumnWidth;

}

else(

// Для текущей колонки

if(i == myTextFrame.textFramePreferences.textColumnCount)( myX2 = myTextFrame.geometricBounds[1] -myRightlndent; myXl = myX2 - myTextWidth;

}

// Накопление результата из всех предыдущих колонок, см. рис. 6.1 else(

myXl = myTextFrame.geometricBounds[1] +

(myColumnWidth*i) + (myGutterWidth * i) ; myX2 = myXl + myColumnWidth;

}

}

// Искомые значения myArray.push([myXl, myX2]);

}

for(i = 0; i < myArray.length; i ++)( if((myPagePosition >= myArray[i][0])&&

(myPagePosition <=myArray[i][1]))( myColumnEdge = myArray[i][0]; break;

}

}

return myColumnEdge;

}

Начало представляет собой традиционную "защиту от неподготовленного пользователя": проверяем, что точка вставки находится в тексте (арр.documents. length, арр. selection[0] . constructor.name). Затем- отображение диалогового окна, в котором предусмотрены задание позиции табулятора (Tab Stop, четыре варианта) и заполнителя (Tab Leader). Главная цель - найти необходимое положение точки вставки и выразить его через доступные нам свойства фрейма.

В зависимости от выбранного варианта позиции табулятора будут происходить различные действия. Рассмотрим каждое по порядку.

Случай первый - табуляция должна быть установлена по.правому краю колонки (практическое использование- создание содержания, например). Чтобы определить ширину колонки (функция findcoiumnEdge), согласно объектной модели от точки вставки insertionPoints[0] переходим к родительскому текстовому фрейму parentTextFrair.es[0], у которого получить необходимое значение уже не составит никакого труда:

myTabPosition = myParagraph.insertionPoints[0].parentTextFrames[0]. textFramePreferences. textColumnFixedWidth

Дальнейшее - дело техники: задание типа табулятора и собственно его установка

myParagraph.tabStops.add({alignment:myTabAlignment, leader:myLeader, position:myTabPosition}); В случае, если выбран второй вариант (установка табулятора на текущей позиции), положение текущей позиции получаем через свойство horizontaioffset. Однако оно дает абсолютное значение (относительно точки начала координат публикации). А для того чтобы получить смещение относительно левого края колонки (вспомните окно Tab position в InDesign), нужно найти положение самого края. В самом простом случае (одноколоночный фрейм) оно равно

mylnsertionPoint.horizontaioffset - myTextFrame.geometricBounds[1]; Как правило, нужно еще вычесть расстояние от края колонки до текста

myLeftlnset:

myLeftlnset = myTextFrame.textFramePreferences.insetSpacing[1]; В случае, если фрейм многоколоночный, нужно сделать поправку на количество колонок и суммарное расстояние между колонками (см. рис. 6.1):

myTextFrame.geometricBounds[1] + (myColumnWidth*i) + (myGutterWidth » i); Естественно, при этом должен быть установлен табулятор с левой выключкой:

myTabAlignment = TabStopAlignment.leftAlign; Наконец, последний случай (hanging indent на текущей позиции): для установки табулятора сначала определяем необходимую позицию: из абсолютного значения текущей точки вставки вычитаем позицию начала колонки, что даст нам положение точки вставки относительно текущей колонки:


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