Комплекс скриптов для СДЗ

Задача. Создать решение для работы с колонтитулами, содержанием и хронологическим перечнем документов СДЗ

Собрание действующего законодательства города Москвы представляет собой официальное систематизированное издание нормативных правовых актов города Москвы и осуществляется в соответствии с распоряжением Мэра Москвы от 4 августа 1998 года № 799-РМ «О подготовке и издании Собрания действующего законодательства города Москвы».
Издательством Юстицинформ были разработаны оригинальный дизайн и структура справочного аппарата издания. За время работы над проектом в издательстве сложилась рабочая группа, хорошо знающая специфику всех этапов его подготовки.  На сегодняшний издательством  были изданы и распространены все 16 томов тиражом по 1000 экземпляров. Объем одного тома колеблется от 50 до 95 п.л. Ежегодно издательство осуществляет издание и распространение  обновлений каждого из 16 томов СДЗ.

Каждый том издания представлят собой папку с заменяемыми блоками. Такой формат был выбран потому, что с введением новых законов и с признанием прежних недействительными, соответствующие блоки удаляются или заменяются. Такой подход позволяет иметь актуальный сборник законов, не заменяя каждый год весь сборник полностью.

Внешний вид томов сборника СДЗ

Внешний вид томов сборника СДЗ

Каждый документ в Собрании имеет строго определенную структуру

  1. Заголовок
  2. Реквизиты
  3. Информация об изменениях документа
  4. Слово «Извлечение» (может отсутствовать)
  5. Печатный источник (может отсутствовать)
  6. Текст документа

Техническое задание для скриптов:

Скрипт №1. Колонтитулы

Скрипт должен расставить колонтитулы на нечетных страницах на указанном диапазоне страниц, собрав следующую конструкцию: «Реквизиты ”Заголовок„»

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

Скрипт №2. Содержание главы

Скрипт должен собрать содержание конкретной главы.

Конструкция должна быть такой:

Заголовок[конец абзаца]
Реквизиты Изменения Извлечение[табуляция]Номер документа


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

Скрипт №3. Сортировка хронологического перечня

Задача скрипта расставить в хронологическом порядке документы из всех глав.

Скрипт должен расставить документы в хронологическом порядке, ориентируясь на первую дату. Сортировать надо именно по первой дате, а не по датам «изменений».  Желательно, чтобы он перед каждым группой документов каждого года проставлял этот год.

Скрипт №4.

Скрипт должен расставить в нижнем поле (по центру каждой страницы, в 10 мм от нижнего края) на всех страницах документа сквозную нумерацию.

Инструкция по работе с комплексом скриптов SDZ

Комплекс состоит из шести отдельных скриптов, каждый из которых предназначен для решения определенной задачи. Состав комплекса:

  • SDZclear.jsx — скрипт, предназначенный для очистки данных и нумерации.
  • SDZcolontitul.jsx — скрипт для создания колонтитулов для выбранных разделов.
  • SDZhrono.jsx — скрипт для создания хронологического перечня всех законов документа.
  • SDZmain.jsx — основной скрипт, занимающийся сбором и структурированием информации о законах.
  • SDZnomera.jsx — скрипт для создания сквозной нумерации документа.
  • SDZsoderjanie.jsx — скрипт для создания содержания выбранного раздела.

Порядок обработки документа:

В первую очередь нужно запустить скрипт SDZmain.jsx для сбора и обработки информации обо всех законах в документе. Скрипт обрабатывает документ на основе стилевой разметки, описание которой содержится в заголовочной части скрипта, и содержит имена стилей, применяемых для форматирования различных полей документа. При изменении стилевой разметки документа, необходимо внести соответствующие изменения в заголовочную часть скрипта.

По окончании работы скрипта документ будет подготовлен к обработке другими скриптами, которые в своей работе используют данные, собранные скриптом SDZmain.jsx. Категорически не рекомендуется изменять документ вручную или при помощи сторонних скриптов до окончания работы с комплексом. Если документ был изменен, следует запустить скрипт SDZclear.jsx для очистки данных, а затем снова запустить скрипт SDZmain.jsx.

Порядок работы со скриптами SDZcolontitul.jsx, SDZsoderjanie.jsx, SDZhrono.jsx и SDZnomera.jsx может быть произвольным.

Скрипт SDZcolontitul.jsx ищет на страницах указанного диапазона (диапазон определяется на основании примененного к страницам мастера) текстовый фрейм, содержащий текст, отформатированный стилем «Колонтитул» (изменить стиль можно в заголовочной части скрипта). В найденном фрейме содержимое обнуляется и замещается текстом, сформированным на основании реквизитов и названия текущего закона. При необходимости текст обрезается с удалением не вошедшей части. Если последним словом колонтитула остается известный скрипту предлог, то он также удаляется.

Список предлогов можно отредактировать в заголовочной части скрипта в переменной iniPred, отделив от остальных одним пробелом (значение переменной должно начинаться и заканчиваться пробелом).

Скрипт SDZsoderjanie.jsx создает содержание указанного диапазона методом создания файла в формате InDesign Tagged Text и помещения его в документ. За один запуск скрипта можно создать содержание только одного раздела. Форматирование содержания основывается на стилях, указанных в заголовочной части скрипта.

Скрипт SDZhrono.jsx создает хронологически упорядоченный список законов всего документа с разбивкой по годам. Форматирование списка аналогично форматированию содержания и тоже может быть изменено в заголовочной части скрипта.

Скрипт SDZnomera.jsx создает на каждой странице документа текстовый фрейм, содержащий реальный номер страницы в документе. Фрейм размещается в нижней части страницы, его высота указывается в заголовочной части скрипта в переменной iniSize. Текст во фрейме форматируется стилем, имя которого указывается в переменной iniStyle.

Сайт издательства «Юстицинформ»: www.jusinf.ru