Рис. 9.1. Пример работы скрипта. Диаграмма была предварительно отформатирована в Illustrator, после чего в формате EPS помещается в публикацию. Публикация выполнена одноколоночной, свободное место полосы набора отведено под иллюстративный материал А вот результат работы скрипта в случае, если диаграммы идут одна за другой, а текст, который бы разделял их, отсутствует - в таком случае автоматически создается таблица (рис. 9.2).
Вы можете возразить: почему нельзя использовать возможности библиотек (Library) - ведь, создав шаблон, можно легко его использовать в публикации? Причин несколько.
Во-первых, скрипт может сразу же наполнить фрейм необходимым содержанием (вставить название диаграммы, саму диаграмму из файла на диске, подпись).
Во-вторых, если диаграммы имеют разные размеры, скрипт будет автоматически изменять рамку для них и сам текстовый фрейм таким образом, чтобы отображалось все содержимое - с использованием библиотек это придется выполнять вручную.
Рис. 9.2. Результат работы скрипта в случае, если диаграммы идут одна за другой В-третьих, на скрипт можно возложить разные дополнительные функции: например, если висячая строка короткая, применять трекинг, чтобы она втянулась на предыдущую строку, если же трекинг эффекта не дал (висячая строка слишком длинная), трекинг отменять. Вроде мелочь, секундное дело, но когда перед вами публикация с несколькими сотнями таких диаграмм, то секунды превратятся в часы механической, малотворческой работы.
Наконец, через скрипт можно легко добавить подписи в формате "Таблица 1. Название таблицы", "Таблица 2. Название таблицы", "Диаграмма 1. Название диаграммы" и т. д., чтобы нумерация возобновлялась в каждом начальном фрейме из цепочки.
Скрипт, в несколько модифицированном виде, можно использовать для решения похожих задач: например, для заключения объявлений в рамку и т. п.
Напишем универсальный скрипт, который создает как свободные текстовые блоки, так и заякоренные фреймы (листинг 9.6).
■ Листинг 9.6. Автоматическое создание фреймов для иллюстраций
_WIDTH = 87 PREF_HIGHT = 51
home = prompt С'/F/!_EconomicReview/!_2006/year/Links") aD = app.activeDocument mySelection = app.selection[0] if(mySelection!='undefined'){
textF = mySelection.parentTextFrames[0]
curr_Page = textF.parent.name - 1
free_tF = aD.pages[curr_Page].textFrames
pars = mySelection.paragraphs
inline_tF = pars[0].textFrames
startP = pars.previousltem(pars[0]);
endP = pars.nextltem(pars[0])
pS = aD.paragraphStyles
1 = aD.links
l_curr=0
pSA = [];
aS = ['Diagram Header', 'Diagram', 'Diagram Footer', 'Spacer'];
for(i=0; id.length; i++) {
// Определяем максимальный номер в названии файла,
// встроенного в публикацию» и продолжаем со следующего if (1[i].name.charCodeAt(0) < 58 && parselnt(1[i].name) > l_curr){ l_curr = parselnt(1[i].name)
}
}
next = l_curr + 1
// Запрос на тип контейнера
ask = prompt("In-line Frame? [1/0]", "0")
listFolder = Folder.selectDialog("Select picture folder", home)