Система T EX (в версии, готовой к эксплуатации) впервые появилась в 1989 году и, до определенной степени, заменила troff как инструмент для получения документов типографского качества. Мы не будем рассматривать систему T EX здесь, во-первых, из-за ее сложности (существуют целые книги, посвященные ей) и, во-вторых, из-за того, что в большинстве современных систем Linux она не устанавливается по умолчанию.
ПРИМЕЧАНИЕ
Если у вас появится желание установить TEX, обратите внимание на пакет texlive, присутствующий в репозиториях большинства дистрибутивов, а также на редактор графического содержимого LYX.
groff — система форматирования документов
groff — это пакет программ с GNU-реализацией troff. Он также включает сценарий, имитирующий работу nroff, и остальные программы семейства roff.
Семейство roff и его потомки использовались для создания форматированных документов способом, довольно чуждым современным пользователям. Большинство документов в наше время создается в текстовых процессорах, способных осуществлять составление и оформление документов в один шаг. До появления графических текстовых процессоров создание документов обычно происходило в два этапа. Сначала в текстовом редакторе выполнялось составление документа, а затем с помощью процессора, такого как troff, осуществлялось его форматирование. Инструкции для программы форматирования встраивались в текст документа с применением языка разметки. Современным аналогом этого процесса может служить подготовка веб-страниц, которые записываются в текстовом редакторе и затем отображаются веб-браузером, интерпретирующим код HTML как инструкции языка разметки, описывающие окончательный вид страницы.
Мы не будем рассматривать семейство программ groff во всех подробностях, так как многие тонкости его языка разметки имеют прямое отношение к туманным для нас деталям типографского дела. Вместо этого мы сосредоточимся на одном из его макропакетов, широко использующемся до сих пор. Эти макропакеты упаковывают множество низкоуровневых команд в небольшое множество высокоуровневых команд, существенно упрощающих работу с groff.
Давайте ненадолго приостановимся и рассмотрим простую страницу справочного руководства (man). Она хранится в каталоге /usr/share/man в виде текстового файла, сжатого с помощью gzip. Если заглянуть на распакованное содержимое, можно увидеть следующее (здесь показана страница справочного руководства из раздела 1 для команды ls):
[me@linuxbox ~]$ zcat /usr/share/man/man1/ls.1.gz | head
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.35.
.TH LS "1" "April 2008" "GNU coreutils 6.10" "User Commands"
.SH NAME
ls \- list directory contents
.SH SYNOPSIS
.B ls
[\fIOPTION\fR]... [\fIFILE\fR]...
.SH DESCRIPTION
.\" Add any additional description here
.PP
Если сравнить содержимое страницы с ее нормальным представлением на экране, можно заметить определенную корреляцию между языком разметки и результатом его интерпретации:
[me@linuxbox ~]$ man ls | head
LS(1) User Commands LS(1)
NAME
ls - list directory contents
SYNOPSIS
ls [OPTION]... [FILE]...
Этот пример интересен тем, что страницы справочного руководства отображаются программой groff с использованием макропакета mandoc. В действительности работу команды man можно сымитировать с помощью следующего конвейера.
[me@linuxbox ~]$ zcat /usr/share/man/man1/ls.1.gz | groff -mandoc -T ascii | head
LS(1) User Commands LS(1)
NAME
ls - list directory contents
SYNOPSIS
ls [OPTION]... [FILE]...
Здесь использована программа groff с множеством параметров, определяющих макропакет mandoc и драйвер вывода для ASCII. groff может выводить информацию в нескольких форматах. Если формат не задан, по умолчанию вывод производится в формате PostScript:
[me@linuxbox ~]$ zcat /usr/share/man/man1/ls.1.gz | groff -mandoc | head
%!PS-Adobe-3.0
%%Creator: groff version 1.18.1
%%CreationDate: Thu Feb 2 13:44:37 2012
%%DocumentNeededResources: font Times-Roman
280 Chapter 21
%%+ font Times-Bold
%%+ font Times-Italic
%%DocumentSuppliedResources: procset grops 1.18 1
%%Pages: 4
%%PageOrder: Ascend
%%Orientation: Portrait
PostScript — это язык описания страниц, используемый для вывода страниц на устройства печати с типографским качеством. Вывод команды можно сохранить в файл (здесь предполагается, что вы работаете в графическом окружении рабочего стола и в вашем домашнем каталоге имеется каталог Desktop):
[me@linuxbox ~]$ zcat /usr/share/man/man1/ls.1.gz | groff -mandoc > ~/Desktop/foo.ps
После выполнения этой команды на рабочем столе появляется пиктограмма файла. После двойного щелчка мышью на этой пиктограмме должен запуститься инструмент просмотра страниц и отобразить содержимое файла (рис. 21.1).
Рис. 21.1. Отображение содержимого PostScript-файла в окне обозревателя страниц в GNOME
Читать дальше