Основная идея, заложенная в пакет макроопределений, состоит в том, что документ описывается в терминах его логических частей названия, заголовков разделов, абзацев, а не в деталях: расстановка пробелов, выбор шрифтов, определение размеров букв. Это спасает вас от рутинной работы и освобождает документ от несущественных подробностей. Фактически вы можете сделать свой документ совершенно иным, использовав другое множество макроопределений с теми же логическими именами. Так, один и тот же документ мог бы последовательно превращаться в технический отчет, доклад на конференции, журнальную статью и главу из книги с помощью одинаковых команд форматирования, интерпретируемых четырьмя разными пакетами макроопределений.
Входной поток troff
представляет собой обычный текст, размеченный командами форматирования, независимо от использования пакета макроопределений. Существуют два вида команд. Команда первого вида состоит из точки в начале строки и следующей за ней одной (двух) буквы либо цифры и, возможно, параметра, как показано ниже:
.PP
.ft В
Это небольшой абзац, выделенный жирным шрифтом.
Все встроенные команды troff
имеют имена, образованные строчными буквами, поэтому по соглашению командам в пакетах даются имена из прописных букв. В нашем примере .PP
есть команда ms
для абзаца, a .ff
— команда troff
, вызывающая замену обычного шрифта жирным. (Имена команд, управляющих шрифтами, состоят из прописных букв; шрифты могут быть разными на разных наборных устройствах.)
Команда второго вида это последовательность символов, начинающаяся с обратной дробной черты \
, которая может оказаться в любом месте входного потока. Например, команда \fB
также вызывает переключение на жирный шрифт. Она является примером чистой troff
; ниже мы коротко ее рассмотрим.
Для форматирования достаточно вводить команду .PP
перед каждым абзацем. В принципе при подготовке большинства документов можно обойтись дюжиной разных команд ms
. Так, приложение 2, описывающее hoc
, имеет название, имена авторов, резюме, автоматически нумеруемые заголовки разделов и абзацы. Здесь используется всего 14 различных команд, причем некоторые из них парами. В ms
документ принимает следующую общую форму:
.TL
Название документа (одна или более строк)
.AU
Имена авторов, одно на строке
.AB
Резюме, оканчивающееся .AE
.AE
.NH
Нумеруемые заголовки (автоматически)
.PP
Абзац...
.PP
Другой абзац...
.SH
Подзаголовок (нет нумерации)
.PP
...
Команды форматирования могут появиться в начале строки. Входной текст между командами размещается в произвольной форме: расположение концов строк в нем не существенно, так как troff
переносит слова с одной строки на другую, чтобы сделать строки более полными (процесс, называемый
Ниже показано начало непосредственного документа hoc
:
.TL
Hoc - диалоговый язык для арифметики с плавающей точкой
.AU
Брайан Керниган
Роб Пайк
.AB
.I Hoc
это простой программируемый интерпретатор
для выражений с плавающей точкой.
Он обеспечивает поток управления в стиле Си,
определения функций и обычные
числовые встроенные функции,
такие как косинус и логарифм.
.AE
.NH
Выражения
.PP
.I Hoc
Это язык выражений, во многом подобный Си:
хотя он содержит несколько управляющих операторов,
большинство операторов, таких как присваивания,
это выражения, чьи значения не принимаются
во внимание.
...
Команда .I
выделяет свой аргумент курсивом или переключает шрифт на курсив, если аргумента нет.
При использовании пакета макроопределений он специфицируется как аргумент troff
:
$ troff -ms hoc.ms
Символы после -m
определяют пакет макроопределений.[17] После форматирования с помощью ms
документ hoc
выглядит так:
Вильям Л Саймон , Вильям Саймон , Наталья Владимировна Макеева , Нора Робертс , Юрий Викторович Щербатых
Зарубежная компьютерная, околокомпьютерная литература / ОС и Сети, интернет / Короткие любовные романы / Психология / Прочая справочная литература / Образование и наука / Книги по IT / Словари и Энциклопедии