Избранное »

22.09.2014 – 07:27 | 2 комментария | 14 972 views

Здравствуйте все, кто работает в Индизайне!
Извещаем вас о том, что на youtube.com начал работу канал «InDesign Мастерская вёрстки». Там уже размещены более 60 видео с полным описанием как работать с программой DoTextOK. Другие интересные темы, касающиеся работы …

Читать полностью »
Работа в InDesign

Хитрости и секреты, приемы работы, уроки

Новая версия!

Особенности новой версии Индизайна

Плагины

Описание плагинов, информация о плагинах для работы с Adobe InDesign

Скрипты

Готовые к использованию скрипты для Adobe InDesign

Скриптинг

Описание языка, приёмов и методов программирования для Adobe InDesign

Home » Скрипты

Нумератор для разворотов (обновление)

Добавлено на 07.02.2011 – 13:13Без комментариев | 901 views

Этот скрипт — альтернатива стандартным Data Merge или созданию абзацного стиля с опцией Bullets and Numbering для последовательной нумерации.

Первоначально скрипт делался как инструмент нумерации разворотов, но если в работе опция Facing Pages неактивна, то нумероваться будут поочередно все страницы — в фреймах будут последовательные номера в соответствии с установками, заданными при запуске скрипта.

Предыдущий вариант скрипта был функционально избыточным — в данном случае нет нужды связывать фреймы в одну цепочку. Лишние действия были причиной его медленной работы.

В этой версии скрипта связывание фреймов исключено, и при том же пользовательском интерфейсе программа стала работать на порядок быстрее.

Это ускорение получено и за счет того, что теперь фрейм для номера отвязан от мастер-страницы.

И вот тут есть над чем поговорить. Можно, добавив нужное число страниц, отсоединить их все от мастер-страницы. В этом случае и фрейм номера, и все элементы страницы потеряют связь с мастер-страницей. На мой взгляд, это не лучшее решение. Я предпочел бы, чтобы номера размещались в отсоединенных от мастера фреймах, но все остальные элементы были привязаны к мастер-странице. Поэтому возник вопрос «Можно ли на всех страницах документа отвязать только некоторые объекты с мастер-страницы?»

Ответ на него такой «Да, можно, если предварительно разместить их на отдельном слое и на время действия команды меню Override All Master Page Items оставить активным только этот слой».

Вот шаги подготовки к запуску скрипта.

1) нарисуйте на мастер-странице текстовый фрейм и присвойте ему метку.

2) если на мастер-странице создано несколько фреймов с такой меткой, в них будут помещены последовательные номера.

3) этот фрейм (или фреймы, если их несколько с одинаковой меткой) перемещается на отдельный слой.

4) добавьте в верстке нужное число страниц.

5) в палитре слоев отключите все слои, кроме того, на котором этот фрейм для нумерации. В верстке выбирите все страницы и разорвите их связь с мастер-страницей (команда из контекстного меню (правая кнопка мыши) Override All Master Page Items, или эта же команда из меню палитры Pages ).

Тот факт, что сейчас в палитре слоев активен только слой с номером, гарантирует, что в результате в верстке от мастера-страниц будут отсоединены только фреймы для номеров.

Всё другое оформление документа останется привязанным к мастерам, .т.к. в момент разрыва страниц верстки с мастер-страницами слои с оформлением издания были отключены.

Оформление текста записи с номером определяется установками, сделанными при создании этого фрейма. Хорошая практика — сразу после создания на мастер-странице фрейма номера присвоить фрейму стиль объекта.

Перед запуском скрипта на любой странице верстки должен быть выбран фрейм, в котором будет один из номеров.

После запуска скрипта:

numerator01

1) определяется текст до и после номера, если это нужно;

2) задается начальный номер и число разрядов числа — т.е. если ввести 1, то номера будут 1,2,…,9, 10, 11… , а если ввести 000001, то номера будут 000001, 000002, 000003…

В процессе нумерации скрипт ищет на полосах фреймы с нужной меткой и в каждом таком фрейме помещает очередной номер.

numerator02

По завершении работы скрипта выводится информация о параметрах нумерации, время работы скрипта и значение темпа нумерации — сколько миллисекунд требовалось на один номер.

Параметры нумерации сохраняются, и при повторном запуске помещаются в окно диалога скрипта.

numerator03

P.S.

Так сложилось, что на нашем сайте появилось два скрипта, решающих задачу нумерации, есть еще скрипт «Нумерация с произвольным приращением» http://adobeindesign.ru/2010/07/28/numeraciya-biletov-s-proizvolnym-prirashheniem/

Они практически одинаковы по интерфейсу и быстродействию.

Я добавил в этот скрипт код, выводящий информацию о времени нумерации в миллисекундах

var myDateStart = new Date;
var myTimeStart = myDateStart.getTime();
autoNumber1( myObjStyle, myPrefix, myStartNumberStr, mySuffix, myDelta);
var myDateFinis= new Date;
var myTimeFinis = myDateFinis.getTime();
var myProcTime = myTimeFinis - myTimeStart;
alert ("Время обработки [мс] " + myProcTime);

что в процессе работы с новой версией позволило сравнить оба скрипта.

И не всё тут ясно и понятно. Во-первых, каждый скрипт показывает разное время при выполнении несколько раз подряд одной и той же задачи. Расхождение в десятки-сотни миллисекунд. Во-вторых, время выполнения имеет тенденцию к росту — одна и та же задача с каждым новым запуском выполняется чуть-чуть дольше. В-третьих, прогресс-бар показывал, что иногда процесс нумерации на время приостанавливается, и после некоторой паузы идет дальше. И длительность этих пауз, и место на прогресс-баре, где они появляются, всегда разная. И это не зависит от того, включен или нет режим управления движком (#targetengine «session»).

После всех этих экспериментов сложилась такая практическая рекомендация — не увлекайтесь расстановкой большого числа номеров за один раз, 500-600 не больше. Работа в десять привёрток по 600 номеров будет сделана быстрее, чем за один раз 6000 номеров.

Кто знает, может кому-то из посетителей этого сайта придется нумеровать билеты для зимней олимпиады или чемпионата мира по футболу. Пожалуйста, инструмент уже есть!

Такие дела.

Скачать скрипт (*.zip)

Оставить комментарий!

Вы должны быть в системе чтобы оставить комментарий.