Главная » Программирование для UNIX » Подготовка документов для UNIX программ

0

Одним  из первых применений системы UNIX  было  редактирование и форматирование документов, ведь руководство Bell Labs удалось скло нить на покупку первой машины PDP-11 именно за счет обещаний создать систему подготовки документов, а совсем не операционной систе мы.  (К счастью, они получили больше, чем ожидали.)

Первая программа форматирования текстов называлась roff. Она была маленькой, быстрой и удобной  в работе для тех,  кому  надо было выво дить небольшие документы на построчно печатающий принтер. Следующее средство форматирования, nroff, созданное Джо Оссанной (Joe Ossanna), было гораздо более претенциозным. Вместо  того чтобы  пытаться предоставить в распоряжение пользователей все стили документов, Оссанна сделал nroff программируемым, так что многие задачи форматирования решались посредством программирования на языке nroff.

С приобретением в 1973  году  маленькой наборной машины nroff был расширен для обработки многочисленных шрифтов, размеров и всего множества  символов,  предоставляемого  этой  машиной. Новая  программа получила название troff (по аналогии с «эн-рофф» произносится «ти-рофф»). По существу, nroff и troff – это одна и та же программа,  для  них принят один и тот же язык ввода; nroff игнорирует такие команды, как изменение размера, которые он не может обработать. В книге будет рассказываться о программе troff, но большая часть  комментариев применима и к nroff, с учетом ограничений, касающихся устройств вывода.

Основным достоинством troff является гибкость базового языка и его программируемость, можно сделать так, чтобы практически любая задача форматирования была  выполнена. Но эта гибкость дорого  обошлась программе – с troff бывает очень  тяжело работать. Справедливос-

ти ради отметим, что практически все программное обеспечение UNIX  для  подготовки  документов было  разработано для  того, чтобы  при крыть какую-то часть  «голой» программы troff.

В качестве одного  из примеров можно привести макет страницы – общий  стиль документа, на котором представлено, как выглядит название, заголовки и абзацы, где выводится номер страницы, каков ее размер  и т. д.  Все это не  встроено в troff, а требует программирования. Однако чтобы не заставлять каждого пользователя указывать все дета ли в каждом документе, создан пакет стандартных команд форматирования. Пользователь пакета не должен говорить: «Следующая строка должна  быть  выровнена по центру и напечатана  большими буквами полужирным шрифтом». Вместо этого он просто говорит: «Следующая строка – это заголовок», и применяется пакетное определение стиля заголовка. Пользователям не надо  заботиться о размерах, шрифтах и позициях, они  могут  думать только о логических компонентах доку мента: названии, заголовках, абзацах, сносках и т. д.

К  сожалению, то, что  начиналось как  «стандартный» пакет команд форматирования, теперь уже  стандартом не является; многие пакеты получили широкое распространение, к тому же, у каждого существует по несколько  локальных вариантов. Рассмотрим два  универсальных пакета: ms, исходный «стандартный» пакет, и mm, более новая версия, принятая за  стандарт в System V. Поговорим  также о пакете man для  печати страниц руководства (manual).

Основное  внимание будет уделено ms, потому что он является стандартом седьмой версии, может проиллюстрировать все подобные пакеты и обладает достаточной мощью для  того,  чтобы  выполнить поставленную задачу: пакет ms был использован при наборе  оригинала этой книги1. Правда авторам пришлось немного его расширить, например, добавив  команду для записи слов вот таким шрифтом.

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

Несмотря на то что troff предоставляет возможность полного контроля над форматом вывода, использовать программу для  такого сложного материала, как таблицы, рисунки и  математические выражения, слишком тяжело. Описать такой объект так  же  сложно, как создать макет  страницы.  Решение проблемы  заключается в  использовании (вместо  пакетов  команд форматирования) специализированных  языков  для  математических выражений,  таблиц и рисунков, в которых легко описать то, что требуется. Каждый такой язык управляется от-

1        Разумеется, авторы говорят об издании этой книги, увидевшем свет в Prentice Hall. – Примеч. науч. ред.

дельной командой, которая транслирует его в команды troff. Команды сообщаются посредством каналов.

Подобные процессоры предварительной  обработки представляют  собою хороший пример, демонстрирующий подход  UNIX  к реализации программ, – вместо  того чтобы расширять troff, усложняя ее, вводятся отдельные команды, работающие во взаимодействии с ней.  (Конеч но же, при реализации были  использованы средства разработки языков,  описанные в главе 8.) Далее будут  представлены две программы: tbl, которая форматирует таблицы, и eqn, форматирующая математические выражения.

Также в этой главе будет дан ряд  полезных советов, касающихся подготовки документов и  вспомогательных программ. Примеры, приведенные в главе, представляют собой части документа, описывающего язык hoc из главы 8 и страницу руководства по hoc. Документация на него представлена в приложении 2.

Источник: Керниган Б., Пайк Р., UNIX. Программное окружение. – Пер. с англ. – СПб: Символ-Плюс, 2003. – 416 с., ил.

По теме:

  • Комментарии