Здравствуй, Хабр!

Первая часть перевода документации troff в библиотеке Coolib. Сегодня этот замечательный текстовой процессор, старший брат LaTeX, редко упоминается на компьютерных форумах, однако история troff очень и очень достойная. Кроме всего прочего, troff компактный, прекрасно работает с большими текстовыми файлами (например, базами данных огромных размеров), позволяет простыми и удобочитаемыми методами форматировать текст. Наверное, относительная удобочитаемость и заставила меня полюбить этот текстовой процессор, детище Джерри Зальцера, Дж. Ф. Оссанны, Брайана Кернигана и Джеймса Кларка.

GNU troff (groff) — текстовой процессор, система набора документов. Программный пакет troff очень гибкий, легко настраивается и широко применяется уже около тридцати лет. Это авторитетный, известный программный пакет форматирования текстов в международном сообществе Unix.

Программа «groff» принадлежит к старшему поколению систем подготовки документов: такие системы похожи на компиляторы языков программирования. Groff и его младший брат TeX форматируют текст в «пакетной» парадигме - входные (исходные) файлы представляют текстовые файлы со встроенными командами форматирования.

Конечно, groff не следует путать с текстовыми процессорами, созданными в парадигме WYSIWYG.

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

История troff

Происхождение troff можно проследить до программы форматирования текста RUNOFF, написанной Джерри Зальцером. Программа применялась в проекте CTSS (Compatible Time Sharing System, проект Массачусетского технологического института) в середине шестидесятых годов. Очевидно, название произошло от фразы «run off a document».

Боб Моррис портировал программу на архитектуру 635 и назвал roff. Затем программу переписали с именем «rf» для PDP‐7 (до Unix), и в 1969 году Дуг Макилрой создал расширенную и упрощенную версию roff на языке программирования BCPL.

В 1971 году разработчики Unix решили закупить компьютеры PDP‐11 и, чтобы оправдать вложения, предложили внедрить систему форматирования документов для патентного отдела AT&T. Первая программа форматирования была повторной реализацией roff Макилроя, ее автором стал Дж. Ф. Оссанна.

Когда понадобился более гибкий язык, была написана новая версия roff под названием nroff. Программа имела сложный синтаксис, но послужила основой для всех будущих версий.

Для фотонаборной машины CAT от Graphic Systems Оссанна написал собственную версию nroff. Ее назвали troff.

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

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

Так, препроцессор eqn позволял описывать математические формулы простым, интуитивно понятным способом, а tbl форматировал таблицы. Препроцессор refer (и аналогичная программа bib) обрабатывал цитаты в документе с помощью библиографической базы данных.

К сожалению, программа troff Оссанны была написана на языке ассемблера PDP‐11, она специально создавалась для фотонаборной машины CAT. Оссанна переписал программу на C, хотя теперь она состояла из 7000 строк кода без комментариев и все еще зависела от CAT. Поскольку машины CAT больше не поддерживались производителем, потребовались правки кода. Прежде чем это удалось сделать, Оссанна умер от сердечного приступа в больнице.

Тогда же Брайан Керниган взял на себя задачу переписать troff. Его версия создавала независимый от устройства код, постпроцессоры читали и транслировали его в соответствующие команды принтеров. Кроме того, новая версия troff (названная ditroff) имела несколько расширений.

Благодаря дополнительным возможностям появились наборы препроцессоров. Препроцессор pic обеспечивал функции рисования, а препроцессор grap работал с графами.

Джеймс Кларк начал работу над GNU‐реализацией ditroff в начале 1989 г. Первая версия groff 0.3.1 была выпущена в июне 1990 г. В этой версии появились следующие модификации: добавлены препроцессоры soelim, pic, tbl и eqn, также постпроцессоры для символьных устройств, POSTSCRIPT, TeX DVI и оконной системы X Windows.

Программа GNU troff устранила необходимость в отдельной программе nroff, добавились макросы me и собственная реализация man.

Начиная с 1999 года у groff появились сопровождающие (пакет несколько лет оставался сиротой). В результате добавили новые функции и программы, такие как «grn», препроцессор для изображений гремлинов и устройство вывода HTML и XHTML.

Ну а далее начинается современная история программы, которую все мы пишем сейчас.

Ссылка на руководство

Комментарии (0)