geometricBounds[1], geometricBounds[0]+PREF_HIGHT, geometricBounds[1]+_WIDTH] fit(FitOptions.centerContent)
} else fit(FitOptions.frameToContent)
// Присваиваем стиль контейнеру иллюстрации.
// InDesign поддерживает стили для объектов
- applyObjectStyle(aD.objectStyles[1], true)
}
// Если контейнер был увеличен в размерах, необходимо увеличить // размеры текстового фрейма - иначе останется переполнение if(overflows) fit(FitOptions.frameToContent) if(geometricBounds[3] < rectangles[0].geometricBounds[3])
geometricBounds = [geometricBounds[0], geometricBounds[1],geometricBounds[2], rectangles[0].geometricBounds[3]]
// Задаем форматирование для абзаца с иллюстрацией и подписи к ней paragraphs[1].appiystyle(pS [pSA [ aS [ 1]]], true) paragraphs[2].applyStyle(pS [pSA [ aS[2]]], true)
// Корректируем размеры текстового фрейма с учетом форматирования // заключенного в нем текста fit(FitOptions.frameToContent)
Почему нельзя было совместить операции fit о - вместо двух использовать всего одну? Дело в том, что InDesign "видит" лишь тот текст, который видим. Предположим, мы уберем первую операцию - что получится? Если контейнер с иллюстрацией превысил свои первоначальные размеры, оба абзаца - содержащий контейнер для публикации и следующие- в контейнер не поместятся, таким образом, они выпадают из поля зрения InDesign. В результате никаких операций с ними проделать уже нельзя - этого-то мы и избегаем.
Пытаемся избежать ситуации, когда на следующую строчку переносится всего несколько символов - уменьшаем трекинг текста до -25 (найдено эмпирическим путем). Если количество строк уменьшилось, значит, нам удалось избежать "висячки", трекинг оставляем. Если же количество строк осталось неизменным, значит, данная мера не помогла, текста слишком много, а больше сжимать уже нельзя, поэтому отпускаем трекинг до прежнего значения:
with(paragraphs[0]) { tracking -= 25;
if (lines.length>l) tracking += 25 } applyObjectStyle(aD.objectStyles[5], true)
}
// Последние, дополнительные шаги - зачистка:
// удаляем из импортированного текста те строчки,
// которые были перенесены в созданные нами фреймы, if (target=inline_tF) (
target[0].parent.applyStyle(pS [pSA [aS[3]]] , true) endP.remove(); startP.remove() pars[0].spaceBefore = 0 } else {
pars.itemByRange(startP, endP).remove()
} else {
alert ("Требуемый файл не найден") }
}else {
alert ("Поместите курсор в место, где должна быть размещена иллюстрация")
}
Задаем требуемую ширину и высоту фрейма, а также указываем путь home к диаграммам по умолчанию. Поскольку этот скрипт писался для собственного использования, в нем было решено отказаться от диалогов, размеры кода которых зачастую превышают размеры самой работающей части, а открыть скрипт раз в месяц и заменить в нем одну строчку- минутное дело. Также не делается проверка на тип выделения - предполагается, что курсор стоит в том месте, куда будет помещена диаграмма.
Дальнейшие действия выполняются только, если существует выделение. Среди них: ссылки на абзац, в котором стоит курсор, задаются стили, которые будут ИСПОЛЬЗОВаТЬСЯ ДЛЯ форматирования текста: Diagram Header, Diagram, Diagram Footer, Spacer.