Т. Пратт, М. Зелковиц - Языки программирования - разработка и реализация (4-е издание_ 2002) (1160801), страница 148
Текст из файла (страница 148)
12.1.1. Подготовка документов в РТАХ 11ользов пель настал ыкш издательской системы полностью отвечает за все аспекты нолготовки локумснта к печати. Для упрощения этого процесса были созданы 12.1. Настольные издательские системы 533 специальные языки обработки документов. Эта книга, например, была подготовлена в системе ТЕХ (ТеХ), разработанной Дональдом Кнутом (Оопа!б Кпшй), с использованием макросов )лТЕХ(!.аТеХ), разработанных Лесли Лэмпортом (Есз)!е ! агпрогс).
За неимением более подходящего термина мы часто говорим о компиляции книги, имея в виду обработку отдельных глав ТЕХ-программо>ь ТЕХ-программа работает почти так же, как и традиционный компилятор. Как отмечалось в разделе 3.2, за первый проход ТЕХ создаст таблицу символов для отслеживания номеров разделов, страниц и рисунков. За второй проход генерируется выходной документ, в которьш вставляются правильные значения этих номеров. Например, исходный текст с макросами УТЕХ лля ТЕХ-программы предыдушего абзаца выглядел следуюшим образом: 1теХ-програниа работает по~ти так ие, как и традиционный конпилятоо.
Как отиечат>осн в разделе >пег(сгапз1ас>оп вес!, за первый проход >тех создает таблицу сииволав для отслеиивания ноиеров разлелов. страниц и рисунков. За второй проход тенерируется выходной докуиент. в который вставляются правилнные значения зтих нокеров Макрос >>ех системы (лТЕХ' печатает название ТсХ в несколько необычном виде: ТЕХ; макрос 1ге1 ссылается на предыдущий раздел книги, который в пашем случае помечен меткой с именем Сгапз1аг'>оп вес, сохраненной в таблице символов при первом проходе компилятора ТЕХ в виде значения 3.2. При втором проходе это значение метки используется для того, чтобы вставить в документ фактический номер раздела.
Но в отличие от традиционных коштспций компиляции, связанных с хранениелт данных, вызовом подпрограмм и определением типов, програлтма реализации издательской системы заботится о компоновке страницы и разгонке набора. Например, для этой книги треГ>уется трехпроходное выполнение ТЕХ-программы. Во время первого прохода текст распределяется по строкам и страницам в соответствии с указанным стилем (либо встроенным в ТЕХ, либо определенным в соответствии с руководством по созданию пользовательских стилей), а в таблицу символов заносятся различные ссылки, в том числе библиографические. Во время второго прохода эти ссылки размещаются в документе в тех местах, где они были упомянуты, и создается оглавление документа. Во время третьего прохода в документ в соответствующие места вставляются рисунки, оглавление и библиографические ссылки.
Для документов без оглавления необходимо только два прохода, а для более сложных документов ЧЕХ может потребоваться болынсс, чем три, количество прохопов, но два-три прохода являются типичным значением. УТЕХ создаст окружения, которые упрощают использование системы Т(ЕХ. Они действуют подобно правилам определения области видимости переменных в языках С или Рааса!. Например, можно определять начазю и конец списков, которые могут быть нумерованными или маркированными, Если начинается новый раздел или подраздел, то автоматически вставляются их соответствую>цие номера. Синтаксис !лТЕХ аналогичен синтаксису блочно-структурированного языка программирования.
В отечественной литературе часто систему ТРХ с макросам н ВТРХ называют пртхто системой ИеХ— Примеч. науч. рад. 534 Глава 12. Сетевое программирование На рис. 12.1 представлена структура типичного документа, обрабатываемого системой НтТйХ. Прп вызове программы )лТЕХ документ, содержащийся в файле !а1ехйех, считывается в ТгХ для создания команд, определяющих главы, разделы, подразделы, списки, таблицы, рисунки и другие многочисленные структуры, необходимые для написания простого документа. Команда Моспяеп1з1у) е (из )ЛТЕХ) позволяет пользователю добавлять другие элементы стиля.
Обязательный параметр а Ь те! е указывает на то, что следует прочитать и присоединить к файлу !а1ех. 1ех файл атг!с!е згу с командами, необходимыми для оформления ланного документа в виде статьи. Например, в статьях отсутствуют главы, но в стиле для создания книг ооой (то есть файле !тоок.з1у) главы определены. Опция 11р1 определяет размер шрифта для текста документа (кегль 11) и предписывает прочитать встроенный стилевой файл аг111.з1у, содержагций дополнительную информацию о промежутках между строками и символами для текста, набираемого шрифтом кегля 11.
Программаа ТЕХ вместе со стилевыми файлами ать!с!е.агу и аг111.11у формирует стандартный способ обработки )лТЕХ-статей. Аналогичным образом в )лТЕХ определены стили для отчетов, книг, слайдов и писел». Ыссишепм1у!е[11р1, стуе1у!е! (ащс1е! «Стандартный» етых Рис. 12.1. Структура 1РТЕХ У пользователя может возникнуть желание как-то изменить предлагаемые по умолчанию стили.
Например, издательство Ргспбсе На!! имеет собственный стиль для всех своих книг: всрхшш колонтитул на каждой страт~ице включает номер текущей главы и раздела, размер страницы отличается от определенного по умолчанию в )лТЕХ, промежутки между абзацами и разделами различны и т. д. Для уточнения стиля документа можно использовать псобязател ьныс опции кома~ ~ды тооспсепгз ьу! е, задаваемые в квадратных скобках.
В пашем примере опция вузгу! е сообщает компилятору ТйХ, что необходимо прочесть файл пуз1у)е. з1у, в котором определены дополпптсльныс стилевые к<тманды, уточняющие правила форматирования книги. Реализация. Системы, подобные ТЕХ, компилируют документ для его выполнения на виртуальной машине текстового процессора, Обычно используется фор- 12.1. Настольные издательские системы 535 мат Розгзснрс, который мы обсудим несколько позже. После компиляции документа выходной файл выполняется на виртуальной машине Розгзснрг для просмотра или печати, Преимуществом такого подхода является то, что исходный документ — это текст, состоящий их символов АВСП, который можно просмотреть в любом текстовом редакторе. 1~ТВХ использует для непосредственной компиляции документа стилевые файлы.
В этом случае стиль документа и его текст могут существовать по отдельности. Подготовка доклада для конференции требует только добавления опции 1иосо1оел к макросу Мосапелтз'су! е для изменения форматирования документа в две колонки на странице вместо одной без каких-либо изменений в тексте самого документа. Такой подход позволяет использовать один текстовый файл для различных целей, если информация о стиле хранится отдельно. Но иногда при таком подходе бывает трудно понять, как же будет выглядеть окончательный документ. 12.1.2. МУЗПМУ0-редакторы Альтернативным подходом к обработке документов являются ЖУ51ЖУС-редакторы (Юйаг Уои Вее 1з ьу Ьаг Уоц Сег — что видишь на экране, то и получишь при печати).
В этом случае файл исходно форматируется так, как он будет выглядеть при печати. Все шрифты, интервалы, рисунки, таблицы, номера разделов сразу включаются в требуемые места. Все изменения в редактировании документа непосредственно отражаются на экране монитора. Это упрощает процесс редактирования, но усложняет реализацию изменения стилей. Такой подход к подготовке текстовых документов является наиболее распространенным в издательских системах на персональных компьютерах, например в М!сгозо11 Юого' или укогоРег1ест фирмы Соге!. Реализация. В этом случае в документ встраиваются соответствующие команды редактирования и форматирования, а программой обработки текстов является виртуальная машина, разработанная для отображения результатов выполнения этих команд.
Недостатком такого подхода является то, что каждая программа обработки текстов ЖУ31ЖУС определяет собственную архитектуру виртуальной машины. Поэтому файл, подготовленный для выполнения какой-либо одной программой обработки текстов, часто невозможно просмотреть с помощью другой программы. Эту проблему частично решает текстовый формагл лТЕ ВТà — это система обозначений для описания команд, выполняемых виртуальной машиной текстового процессора, использующая стандартную запись. Таким образом, любая система обработки текстов, в которой имеется встроенный транслятор из формата ВТГ в формат своей внутренней виртуальной машины, может обрабатывать документы, созданные другой программой ЪЧУЯЪ'УС. Использование КТГ значительно расширило возможности обмена документами между различными системами обработки текстов.
Языки описания страниц Системы, подобные ТЕХ, предназначены для написания документов. Существует другой класс текстовых языков — это языки описания страниц. К ним относятся 536 Глава 12. Сетевое программирование Розгвсйрц созданный фирмой Аг!оЬе Вузгешз, и НТМ1., который используется для описания страниц в технологии ЖУЮ в Интернете. В этом случае Розьзспрг является, как правило, выходным языком систем, полобных ТЕХ и используется для оформления текста на странипе. В большинство принтеров Розгзсйрг встроены интерпретаторы Розтэсбрг, н документ Ром зебре лействительпо выполняется принтером, когда последний размещает текст и рисунки на странице. Как и ТЕХ, Розы зсйрг имеет определенный синтаксис и может быть описан с помогнью многих способов, обсуждавшихся в этой книге.