groff - интерфейс к GNU roff, системе форматирования документов
Синопсис
groff [-abcCeEgGijklNpRsStUVXzZ] [-d ctext] [-d string=text] [-D fallback-encoding] [-f fontfamily] [-F font-directory] [-I inclusion-directory] [-K input-encoding] [-L spoolerargument] [-m macro-package] [-M macro-directory] [-n page-number] [-o page-list]
[-P postprocessor-argument] [-r cnumeric-expression] [-r register=numeric-expression]
[-T output-device] [-w warning-category] [-W warning-category] [file ...]
groff -h
groff --help
groff -v [option ...] [file ...]
groff --version [option ...] [file ...]
Описание
groff является основным интерфейсом к GNU roff, системе форматирования документов. GNU roff — это система типографской верстки, которая считывает обычные текстовые входные файлы, содержащие команды форматирования, для создания выходных данных в форматах PostScript, PDF, HTML, DVI или других форматах, или для отображения на терминале. Команды форматирования могут быть как низкоуровневыми примитивами типографской верстки, так и макросами из поставляемого пакета, или пользовательскими макросами. Все три подхода можно комбинировать. Если не указаны файлы-операнды или файл равен «-», groff считывает данные из стандартного потока ввода.
groff является переосмыслением и расширением системы типографской верстки, созданной компанией AT&T Unix, и она присутствует в большинстве POSIX-систем благодаря ее давней связи с Unix-руководствами (включая страницы руководства). Она и ее предшественник известны тем, что создали несколько бестселлеров в области разработки программного обеспечения. groff может создавать типографски сложные документы, потребляя при этом минимальное количество системных ресурсов.
Команда groff управляет выполнением препроцессоров, преобразованием входных документов в независимый от устройства язык описания страниц и созданием выходных данных из этого языка.
Опции
-h и --help отображают сообщение об использовании и завершают работу.
Поскольку groff предназначен для того, чтобы охватить большинство прямых вызовов форматировщика troff(1) пользователями, обе программы имеют общий набор опций. Однако у groff есть некоторые опции, которых нет в GNU troff, и другие, которые groff интерпретирует по-другому. В то же время не все допустимые опции troff можно передавать groff.
Опции, специфичные для groff
Следующие опции либо отсутствуют в GNU troff, либо по-разному интерпретируются groff.
-D enc Устанавливает кодировку ввода по умолчанию, используемую preconv(1) в enc; подразумевает -k.
-e Запускает препроцессор eqn(1).
-g Запускает препроцессор grn(1).
-G Запускает препроцессор grap(1); подразумевает -p.
-I dir Работает так же, как опция troff (см. ниже), но также подразумевает -g и -s. Она передается командам soelim(1) и драйверу вывода, а grn передается опция -M с dir в качестве аргумента.
-j Запустить препроцессор chem(1); подразумевает -p.
-k Запустить препроцессор preconv(1). См. его страницу руководства для получения информации о его поведении, если также не указаны параметры groff -K или -D.
-K enc Указать кодировку ввода, используемую preconv(1) в enc; подразумевает -k.
-l Отправить вывод в программу-диспетчер печати. Директива «print» в файле описания устройства определяет команду по умолчанию, которую следует использовать; см. groff_font(5). Если для выходного устройства отсутствует такая директива, вывод передается в lpr(1). См. параметры -L и -X.
-L arg Передать arg в программу-диспетчер печати. Если требуется несколько аргументов, передавайте каждый с помощью отдельного параметра -L. groff не добавляет к arg дефис перед передачей его в программу-диспетчер печати.
-M Работает как параметр troff (см. ниже), но также передается в eqn(1), grap(1) и grn(1).
-N Запретить новые строки между разделителями eqn: передать -N в eqn(1).
-p Запустить препроцессор pic(1).
-P arg Передать arg в постобработчик. Если требуется несколько аргументов, передавайте каждый с помощью отдельного параметра -P. groff не добавляет к arg дефис перед передачей его в постобработчик.
-R Запустить препроцессор refer(1). Не предусмотрен механизм для передачи аргументов в refer, поскольку большинство параметров refer имеют эквивалентные элементы языка, которые можно указать в документе.
-s Запустить препроцессор soelim(1).
-S Работать в «более безопасном» режиме; см. -U ниже для его противоположности. По соображениям безопасности безопасный режим включен по умолчанию.
-t Запустить препроцессор tbl(1).
-T dev Указать troff форматировать ввод для выходного устройства dev. Затем groff вызывает драйвер вывода для преобразования вывода troff в форму, подходящую для dev; см. подраздел «Выходные устройства» ниже.
-U Работать в небезопасном режиме: передать параметр -U в pic и troff.
-v
--version
Записать информацию о версии groff и всех программах, запускаемых им, в стандартный вывод; то есть данная команда обрабатывается обычным образом, при этом -v передается в форматировщик и любые пре- или постобработчики, которые вызываются.
-V Вывести конвейер, который запустил бы groff, в стандартный вывод, но не выполнять его. Если указано более одного раза, groff выводит и выполняет конвейер.
-X Использовать gxditview(1) вместо обычного постобработчика для предварительного просмотра документа на дисплее X11. В сочетании с параметром -Tps используется информация о шрифтах PostScript, в то время как параметры -TX75 и -TX100 используют информацию о шрифтах X11.
-Z Отключить постобработку. Вывод troff появится в стандартном потоке вывода (если только он не подавлен с помощью -z); см. groff_out(5) для получения описания этого формата.
Прозрачные параметры
Следующие параметры передаются как есть в программу форматирования troff(1) и подробно описаны в ее справочной странице.
-a Создает простую текстовую аппроксимацию отформатированного вывода.
-b Выводит трассировку в стандартный поток ошибок при каждой ошибке или предупреждении.
-c Начинает работу с отключенным цветовым выводом.
-C Включает режим совместимости с AT&T troff; подразумевает -c.
-d cs
-d name=string
Определяет строку.
-E Подавляет сообщения об ошибках troff; подразумевает -Ww.
-f fam Устанавливает семейство шрифтов по умолчанию.
-F dir Ищет в каталоге dir каталоги устройств и файлы описаний шрифтов для выбранного выходного устройства.
-i Обрабатывает стандартный ввод после указанных входных файлов.
-I dir Ищет входные файлы в каталоге dir.
-m name
Обрабатывает файл name.tmac перед входными файлами.
-M dir Ищет файлы макросов в каталоге dir.
-n num Нумерует первую страницу как num.
-o list
Выводит только страницы, указанные в списке list.
-r cnumeric-expression
-r register=numeric-expression
Определяет числовое выражение или регистр.
-w name
-W name
Включает (-w) или подавляет (-W) вывод предупреждений в категории name.
-z Подавляет вывод отформатированного, не зависящего от устройства, troff.
Использование
Архитектура системы GNU roff соответствует архитектуре других реализаций roff, не зависящих от устройств, и состоит из препроцессоров, пакетов макросов, драйверов вывода (или «постпроцессоров»), набора утилит и форматировщика troff, который является ядром системы. См. roff(7) для обзора того, как работает система roff.
Программы-интерфейсы, доступные в системе GNU roff, облегчают ее использование по сравнению с традиционными системами roff, которые требовали создания цепочек команд или использования временных файлов для передачи исходного документа из поддерживаемой формы в готовую к устройству форму. Ниже представлено краткое описание компонентов системы GNU roff. Он дополняет roff(7) информацией, специфичной для groff.
Начало работы
Те, кто предпочитает учиться на практике или хотят получать быструю обратную связь от системы, могут начать с документа «Hello, world!».
$ echo "Hello, world!" | groff -Tascii | sed '/^$/d'
Hello, world!
Мы использовали команду sed только для того, чтобы удалить 65 пустых строк, которые иначе заполнили бы экран терминала. (Системы roff были разработаны в эпоху бумажных терминалов с 66 строками на странице.)
Сегодня пользователи могут предпочесть вывод в терминал, поддерживающий UTF-8.
$ echo "Hello, world!" | groff -Tutf8 | sed '/^$/d'
Создание PDF, HTML или DVI TeX также просто. Самая сложная задача может заключаться в выборе программы для просмотра выходных данных.
$ echo "Hello, world!" | groff -Tpdf > hello.pdf
$ evince hello.pdf
$ echo "Hello, world!" | groff -Thtml > hello.html
$ firefox hello.html
$ echo "Hello, world!" | groff -Tdvi > hello.dvi
$ xdvi hello.html
Использование groff как REPL
Тем, у кого есть навыки программирования, может понравиться возможность использования groff в цикле «читать-вычислять-печатать» (REPL). Это может быть полезно для проверки понимания поведения форматировщика и/или синтаксиса, который он принимает. Включение всех предупреждений с помощью -ww может помочь в этом.
$ groff -ww -Tutf8
# Это комментарий. Давайте определим регистр.
.nr a 1
# Выполняем целочисленную арифметику с операторами, вычисляемыми слева направо.
.nr b \n[a]+5/2
# Давайте выведем результат в стандартный поток ошибок.
.tm \n[b]
3
# Теперь мы определим строку.
.ds name Leslie" Это еще одна форма комментария.
.nr b (\n[a] + (7/2))
# Центрируем следующие две строки текста.
.ce 2
Hi, \\*[name].
Your secret number is \n[b].
# Мы увидим, что деление округляется к нулю.
It is
# Здесь представлена структура управления if-else.
.ie (\n[b] % 2) odd.
.el even.
# Этот трюк устанавливает длину страницы равной текущей вертикальной позиции, чтобы пустые строки не выводились после завершения работы.
.pl \n[nl]u
<Control-D>
Hi, Leslie.
Your secret number is 4.
It is even.
Формат страницы
В GNU roff размеры страницы для форматировщика troff и для выходных устройств обрабатываются отдельно. В форматировщике используются запросы для установки длины страницы (.pl), смещения страницы (или левого поля, .po) и длины строки (.ll). Правое поле не настраивается явно; комбинация смещения страницы и длины строки предоставляет информацию, необходимую для его вычисления. Макропакет papersize, автоматически загружаемый troff, предоставляет интерфейс для настройки размеров страницы с помощью удобных имен, таких как «letter» или «A4»; см. groff_tmac(5). Значением по умолчанию в этой установке является «A4».
Каждый макропакет должен учитывать размеры страницы, настроенные таким образом. Некоторые предлагают альтернативные механизмы.
Для каждого выходного устройства размер выходной среды можно задать в файле DESC. Большинство драйверов также распознают параметр командной строки -p для переопределения размеров по умолчанию и параметр -l для использования альбомной ориентации. См. groff_font(5) для описания директивы papersize, которая принимает аргумент той же формы, что и -p. Документация драйвера, такая как grops(1), также может быть полезной. groff использует параметр командной строки -P для передачи параметров выходным устройствам; например, для вывода PostScript на бумаге A4 в альбомной ориентации используйте следующее:
groff -Tps -dpaper=a4l -P-pa4 -P-l -ms foo.ms > foo.ps
Интерфейс
Программа groff является оболочкой вокруг программы troff(1). Она позволяет указывать препроцессоры с помощью параметров командной строки и автоматически запускает соответствующий постобработчик для выбранного выходного устройства. Таким образом, пользователи традиционных систем roff(7) могут избежать необходимости вручную создавать конвейеры или управлять временными файлами. Используйте программу grog(1) для определения подходящей командной строки groff для форматирования документа.
Язык
Входные данные для системы roff представляют собой обычный текст, перемежающийся с управляющими строками и escape-последовательностями. Комбинация составляет документ в одном из семейств языков, которые также называются roff; см. roff(7) для получения справочной информации. Обзор синтаксиса и возможностей языка GNU roff, включая списки всех поддерживаемых escape-последовательностей, запросов и предопределенных регистров, можно найти в groff(7). Расширения GNU roff для языка AT&T troff, общего подмножества диалектов roff, существующих сегодня, подробно описаны в groff_diff(7).
Препроцессоры
Препроцессор интерпретирует язык, специфичный для определенной области, и генерирует вывод на языке roff. Часто обработка ограничивается разделами или областями входного файла roff (ограниченными вызовами макросов, специфичными для каждого препроцессора), которые он заменяет. Следовательно, препроцессоры часто интерпретируют подмножество синтаксиса roff вместе со своим собственным языком. GNU roff предоставляет реализации большинства препроцессоров, знакомых пользователям AT&T troff; они обычно имеют расширенные функции и/или требуют GNU troff для форматирования их вывода.
tbl — выполняет разметку таблиц;
eqn — выполняет типографскую обработку математических выражений;
pic — рисует диаграммы;
refer — обрабатывает библиографические ссылки;
soelim — предварительно обрабатывает «включенные» входные файлы;
grn — выполняет рендеринг диаграмм gremlin(1);
chem — рисует структурные формулы химических соединений с использованием pic;
gperl — заполняет регистры и строки groff с помощью perl(1);
glilypond — встраивает ноты LilyPond; и
gpinyin — упрощает ввод на китайском языке (мандарин) с использованием системы Hanyu Pinyin.
Препроцессор, уникальный для GNU roff, — это preconv(1), который преобразует различные входные кодировки в формат, понятный GNU troff. При использовании он запускается перед всеми остальными препроцессорами.
Большинство препроцессоров заключают содержимое между парой характерных токенов. Такой токен должен находиться в начале строки ввода и использовать управляющий символ точки. После управляющего символа не должно быть пробелов и табуляции, и перед концом строки ввода их также быть не должно. Отклонение от этих правил приводит к тому, что препроцессор не распознает токен. Токены обычно сохраняются в выводе препроцессора и интерпретируются как вызовы макросов troff. Идеальный препроцессор пока недоступен в groff.
┌──────────────┬─────────────────┬────────────────┐
│ preprocessor │ starting token │ ending token │
├──────────────┼─────────────────┼────────────────┤
│ chem │ .cstart │ .cend │
│ eqn │ .EQ │ .EN │
│ grap │ .G1 │ .G2 │
│ grn │ .GS │ .GE │
│ ideal │ .IS │ .IE │
│ │ │ .IF │
│ pic │ .PS │ .PE │
│ │ │ .PF │
│ │ │ .PY │
│ refer │ .R1 │ .R2 │
│ tbl │ .TS │ .TE │
├──────────────┼─────────────────┼────────────────┤
│ glilypond │ .lilypond start │ .lilypond stop │
│ gperl │ .Perl start │ .Perl stop │
│ gpinyin │ .pinyin start │ .pinyin stop │
└──────────────┴─────────────────┴────────────────┘
Макропакеты
Файлы макросов — это входные файлы roff, предназначенные для того, чтобы не генерировать никаких выходных данных, а вместо этого упрощать подготовку других документов roff. Когда файл макросов установлен в стандартном месте и подходит для использования широкой аудиторией, он называется макропакетом.
Макропакеты можно загружать перед любыми входными документами roff с помощью опции -m. Система GNU roff реализует большинство известных макропакетов для AT&T troff совместимым образом и расширяет их. У них одно- или двухбуквенные имена, возникшие в результате интенсивной практики экономии места при именовании в ранней культуре Unix, лаконичного подхода, который привел к тому, что многие пакеты стали широко известны как опции nroff и troff, используемые для их вызова, иногда с юмористическим эффектом, как, например, «man» (сокращение от «manual») и даже опция с тире, как в случае пакета s, который гораздо лучше известен как ms или даже -ms.
Макропакеты служат различным целям. Некоторые из них являются «комплексными» пакетами, берущими на себя ответственность за макет страницы и другие фундаментальные задачи, и определяют свой собственный лексикон макросов для создания документов; каждый такой пакет является автономным, и в данном документе можно использовать только один из них.
an используется для создания страниц руководства в формате, разработанном в Unix версии 7 (1979 г.); см. groff_man(7). Его можно указать в командной строке как -man.
doc используется для создания страниц руководства в формате, разработанном в 4.3BSD-Reno (1990 г.); см. groff_mdoc(7). Его можно указать в командной строке как -mdoc.
e — это универсальный макро-пакет Berkeley, разработанный в качестве альтернативы AT&T s; см. groff_me(7). Его можно указать в командной строке как -me.
m реализует формат, используемый макро-пакетом второго поколения AT&T для общих документов, который является преемником s; см. groff_mm(7). Его можно указать в командной строке как -mm.
om (обычно называемый «mom») — это современный пакет, написанный Питером Шаффтером специально для GNU roff. Обратитесь к HTML-руководству mom для получения подробной документации. Она — потому что mom использует женское местоимение — может быть указана в командной строке как -mom.
s — это оригинальный универсальный формат документов AT&T; см. groff_ms(7). Его можно указать в командной строке как -ms.
Другие являются дополнительными. Например, andoc — это пакет-оболочка, специфичный для GNU roff, который определяет, использует ли документ формат man или mdoc, и загружает соответствующий макро-пакет. Его можно указать в командной строке как -mandoc. Программа-библиотекарь man(1) может использовать этот файл макросов, чтобы делегировать загрузку правильного макро-пакета; таким образом, нет необходимости, чтобы сам man сканировал содержимое документа, чтобы решить этот вопрос.
Многие файлы макросов расширяют функциональность полноценных пакетов или документов roff, которые не используют такие пакеты — последние иногда характеризуются как «сырые». Эти вспомогательные пакеты описываются вместе с подробной информацией об именовании и размещении файлов макросов в groff_tmac(5).
Форматтеры
Форматтер, программа, которая интерпретирует входные данные языка roff, — это troff(1). Он предоставляет функциональность программ AT&T troff и nroff, а также множество расширений. Опция командной строки -C переключает troff в режим совместимости, который пытается максимально точно эмулировать AT&T troff, чтобы обеспечить форматирование документов, написанных для более старой системы.
Скрипт оболочки nroff(1) эмулирует поведение AT&T nroff. Он пытается правильно кодировать вывод в соответствии с локалью, избавляя пользователя от необходимости указывать выходное устройство с помощью опции -T, и, следовательно, удобен для использования с устройствами терминального вывода, описанными в следующем подразделе.
GNU troff генерирует вывод в виде описательного языка страниц, независимого от устройства, но не полностью нейтрального к нему, который подробно описан в groff_out(5).
Выходные устройства
Вывод troff форматируется для конкретного выходного устройства, обычно указываемого с помощью опции -T для форматтера или интерфейса. Если ни эта опция, ни переменная среды GROFF_TYPESETTER не используются, выходным устройством по умолчанию является ps. Выходным устройством может быть любое из следующих:
ascii для терминалов, использующих набор символов и кодировку ISO 646 1991:IRV, также известный как USASCII.
cp1047 для терминалов, использующих набор символов и кодировку IBM code page 1047.
dvi для формата TeX DVI.
html
xhtml для HTML и XHTML соответственно.
latin1 для терминалов, использующих набор символов и кодировку ISO Latin-1 (ISO 8859-1).
lbp для принтеров Canon CaPSL (серии LBP-4 и LBP-8).
lj4 для принтеров, совместимых с HP LaserJet4 (или других принтеров, совместимых с PCL5).
pdf для вывода в формате PDF.
ps для вывода в формате PostScript.
utf8 для терминалов, использующих набор символов ISO 10646 («Unicode») в кодировке UTF-8.
X75 для предварительного просмотра с помощью gxditview с разрешением 75 точек на дюйм и базовым размером шрифта 10 пунктов.
X75-12 для предварительного просмотра с помощью gxditview с разрешением 75 точек на дюйм и базовым размером шрифта 12 пунктов.
X100 для предварительного просмотра с помощью gxditview с разрешением 100 точек на дюйм и базовым размером шрифта 10 пунктов.
X100-12 для предварительного просмотра с помощью gxditview с разрешением 100 точек на дюйм и базовым размером шрифта 12 пунктов.
Постпроцессоры
Любая программа, которая интерпретирует вывод GNU troff, является постпроцессором. Постпроцессоры, предоставляемые GNU roff, — это драйверы вывода, которые подготавливают документ для просмотра или печати. Постпроцессоры для других целей, таких как переупорядочивание страниц или статистическое измерение документа, также возможны.
Драйвер вывода поддерживает один или несколько выходных устройств, каждое из которых имеет свой собственный файл описания устройства.
Устройство определяет свой постобработчик с помощью директивы postpro в файле описания устройства;
см. groff_font(5). Опция -X отменяет этот выбор, заставляя gxditview работать в качестве
драйвера вывода.
^ rodvi(1)
предоставляет dvi.
^ rohtml(1)
предоставляет html и xhtml.
^ rolbp(1)
предоставляет lbp.
^ rolj4(1)
предоставляет lj4.
^ ropdf(1)
предоставляет pdf.
^ rops(1)
предоставляет ps.
^ rotty(1)
предоставляет ascii, cp1047, latin1 и utf8.
^ xditview(1)
предоставляет X75, X75-12, X100 и X100-12, а также может выполнять предварительный просмотр ps.
Утилиты
GNU roff включает в себя набор утилит.
^ diffmk(1)
показывает различия между двумя файлами ввода roff.
^ rog(1)
определяет команду groff, необходимую для документа.
Несколько утилит подготавливают описания шрифтов, позволяя форматеру использовать их при создании вывода для заданного устройства.
^ ddftinfo(1)
добавляет информацию в файлы описания шрифтов AT&T troff, чтобы обеспечить их использование с GNU troff.
^ fmtodit(1)
создает файлы описания шрифтов для шрифтов PostScript Type 1.
^ fbtops(1)
преобразует шрифт PostScript Type 1 в формате PFB (Printer Font Binary) в формат PFA (Printer Font ASCII), который затем может быть интерпретирован afmtodit.
^ pftodit(1)
создает файлы описания шрифтов для принтеров HP LaserJet 4.
^ fmtodit(1)
создает файлы описания шрифтов для устройства DVI TeX.
^ totroff(1)
создает файлы описания шрифтов для основных шрифтов X Window System.
Трио инструментов преобразует материал, созданный с использованием языков предобработки roff, в графические файлы изображений.
^ qn2graph(1)
преобразует уравнение eqn в обрезанное изображение.
^ rap2graph(1)
преобразует диаграмму grap в обрезанное изображение.
^ ic2graph(1)
преобразует диаграмму pic в обрезанное изображение.
Еще один набор программ работает с библиографическими файлами данных, используемыми предобработчиком refer(1).
^ ndxbib(1)
создает инвертированные индексы для библиографических баз данных, ускоряя операции поиска в них.
^ kbib(1)
выполняет поиск в базах данных.
^ ookbib(1)
выполняет интерактивный поиск в базах данных.
Код выхода
^ roff завершается с ошибкой, если возникла проблема при разборе его аргументов, и с успехом, если была указана одна из опций -h или --help. В противном случае groff запускает цепочку обработки входных данных; если все команды в цепочке успешно завершаются, groff также завершается успешно.
В противном случае код выхода groff кодирует сводку возникших проблем, устанавливая бит 0, если команда завершилась с ошибкой, бит 1, если команда была прервана сигналом, и бит 2, если команду не удалось выполнить. (Таким образом, если все три несчастья постигли цепочку, groff завершится с кодом выхода 2^0 + 2^1 + 2^2 = 1+2+4 = 7.) Чтобы устранить неполадки в цепочке, можно повторно запустить команду groff с опцией -V и разбить сообщаемую цепочку на отдельные этапы, проверяя код выхода и диагностические сообщения, выдаваемые каждой командой.
Окружение
Обычно разделитель путей в переменных окружения, заканчивающихся на PATH, — это двоеточие; это может отличаться в зависимости от операционной системы. Например, в Windows используется точка с запятой.
GROFF_BIN_PATH
Этот путь поиска, за которым следует PATH, используется для определения местоположения команд, выполняемых groff. Если он не задан, то перед PATH выполняется поиск в каталоге установки исполняемых файлов GNU roff, /usr/bin.
GROFF_COMMAND_PREFIX
GNU roff может быть настроен во время компиляции для добавления префикса к именам программ, которые он предоставляет и которые соответствуют программам AT&T troff, чтобы избежать конфликтов имен во время выполнения. Префикс по умолчанию — пустой.
При использовании этот префикс обычно представляет собой букву «g». Например, GNU troff будет установлен как gtroff. Помимо troff, префикс применяется к форматеру nroff, препроцессорам eqn, grn, pic, refer, tbl и soelim, а также к утилитам indxbib и lookbib.
GROFF_ENCODING
Значение этой переменной передается препроцессору preconv(1) в качестве опции -e, чтобы выбрать кодировку символов входных файлов. Существование этой переменной подразумевает опцию groff -k. Если она задана, но пуста, groff вызывает preconv без опции -e. Опция -K groff переопределяет GROFF_ENCODING.
GROFF_FONT_PATH
Выполните поиск в этом списке каталогов каталога файлов описаний устройств и шрифтов выбранного выходного устройства. См. troff(1) и groff_font(5).
GROFF_TMAC_PATH
Выполните поиск в этом списке каталогов файлов макросов. См. troff(1) и groff_tmac(5).
GROFF_TMPDIR
Создавайте временные файлы в этом каталоге. Если не задано, но переменная окружения TMPDIR задана, временные файлы создаются там. В системах Windows, если ни одна из вышеперечисленных не задана, также проверяются переменные окружения TMP и TEMP (в этом порядке). В противном случае временные файлы создаются в /tmp. Команды refer(1), grohtml(1) и grops(1) используют временные файлы.
GROFF_TYPESETTER
Задайте устройство вывода по умолчанию. Если пусто или не задано, используется ps. Опция -T переопределяет GROFF_TYPESETTER.
SOURCE_DATE_EPOCH
Временная метка (выраженная в секундах с начала эпохи Unix), которую следует использовать в качестве
временной метки времени создания выходных данных вместо текущего времени. Время преобразуется в удобочитаемый формат с помощью gmtime(3) и asctime(3) при запуске форматера и сохраняется в регистрах, доступных документам и пакетам макросов.
TZ Время, которое следует использовать при преобразовании текущего времени в удобочитаемый
формат; см. tzset(3). Если используется SOURCE_DATE_EPOCH, оно всегда преобразуется в удобочитаемый формат с использованием UTC.
Примеры
Системы roff наиболее известны форматированием страниц руководства. После того, как библиотекарь man(1) нашел страницу руководства, он может выполнить команду groff, аналогичную следующей. groff -t -man -Tutf8 /usr/share/man/man1/groff.1 Библиотекарь также передаст выходные данные в программу постраничного просмотра, которая может не интерпретировать последовательности экранирования терминала SGR, которые groff выводит для полужирного шрифта, подчеркивания или курсива; см. раздел «Ограничения» ниже.
Для обработки входного файла roff с использованием препроцессоров tbl и pic, а также пакета макросов me таким образом, к которому привыкли пользователи AT&T troff, можно было использовать конвейер команд.
pic foo.me | tbl | troff -me -Tutf8 | grotty
С помощью groff этот конвейер можно сократить до эквивалентной команды.
groff -p -t -me -T utf8 foo.me
Еще более простой способ сделать это — использовать grog(1) для определения препроцессора и макроопций и выполнить результат с помощью функции подстановки команд оболочки.
$(grog -Tutf8 foo.me)
Каждая опция командной строки для постобработчика должна быть указана с необходимыми начальными дефисами «-», поскольку groff передает аргументы «как есть» в постобработчик; это позволяет передавать произвольные аргументы. Например, для передачи заголовка в постобработчик gxditview, команды оболочки groff -X -P -title -P 'trial run' mydoc.t и groff -X -Z mydoc.t | gxditview -title 'trial run' эквивалентны.
Ограничения
При постраничном выводе для устройств ascii, cp1047, latin1 и utf8 такие программы, как more(1) и less(1), могут требовать опции командной строки для правильной обработки некоторых управляющих последовательностей терминала; см. grotty(1).
На EBCDIC-хостах, таких как OS/390 Unix, выходные устройства ascii и latin1 недоступны. И наоборот, выходное устройство cp1047 недоступно в системах, основанных на стандартах кодировки символов ISO 646 или ISO 8859.
Каталоги установки
GNU roff устанавливает файлы в разных местах в зависимости от конфигурации времени компиляции. В этой установке используются следующие каталоги.
/etc/X11/app-defaults
Каталог с настройками приложений для gxditview(1).
/usr/bin
Каталог, содержащий исполняемые команды groff.
/usr/share/groff/1.23.0/eign
Список распространенных слов для indxbib(1).
/usr/share/groff/1.23.0
Каталог для файлов данных.
/usr/dict/papers/Ind
Индекс по умолчанию для lkbib(1) и refer(1).
/usr/share/doc/groff-base
Каталог документации.
/usr/share/doc/groff-base/examples
Каталог примеров.
/usr/share/groff/1.23.0/font
Каталог шрифтов.
/usr/share/doc/groff-base/html
Каталог HTML-документации.
/usr/lib/font
Каталог шрифтов для обратной совместимости.
/usr/share/groff/site-font
Локальный каталог шрифтов.
/usr/share/groff/site-tmac
Локальный каталог пакетов макросов (файлы tmac).
/usr/share/groff/1.23.0/tmac
Каталог пакетов макросов (файлы tmac).
/usr/share/groff/1.23.0/oldfont
Каталог шрифтов для обеспечения совместимости со старыми версиями groff; см. grops(1).
/usr/share/doc/groff-base/pdf
Каталог PDF-документации.
Каталог макросов groff Большинство файлов макросов, поставляемых с GNU roff, хранятся в каталоге /usr/share/groff/1.23.0/tmac для установки, соответствующей этому документу. Как правило, выполняется поиск в нескольких каталогах для файлов макросов; см. troff(1). Для получения каталога файлов макросов, предоставляемых GNU roff, см. groff_tmac(5).
Каталог с описаниями устройств и шрифтов для системы groff
Файлы с описаниями устройств и шрифтов, поставляемые с GNU roff, хранятся в каталоге /usr/share/groff/1.23.0/ для данной установки. Как правило, выполняется поиск по нескольким каталогам для файлов с описаниями устройств и шрифтов; см. troff(1). О формате этих файлов см. в groff_font(5).
Доступность
Получите ссылки на загрузку версий groff, репозиторий исходного кода, списки рассылки для обсуждения, систему отслеживания запросов поддержки и дополнительную информацию на странице groff на веб-сайте GNU.
Бесплатная реализация препроцессора grap, написанная Тедом Фабером, доступна на веб-сайте grap. groff поддерживает только этот grap.
Авторы
groff (как основной исполняемый файл, так и вся система) был в основном написан Джеймсом Кларком. Среди авторов этой документации — Кларк, Трент А. Фишер, Вернер Лемберг, Бернд Варкен и Г. Брэндон Робинсон.
См. также
Groff: реализация troff от GNU, написанная Трентом А. Фишером и Вернером Лембергом, является основным руководством по groff. Вы можете просмотреть его интерактивно с помощью команды «info groff».
Введение, история и дополнительная информация: roff(7)
Программа для просмотра документов groff (и AT&T troff, независимого от устройства): gxditview(1)
Препроцессоры:
chem(1), eqn(1), neqn(1), glilypond(1), grn(1), preconv(1), gperl(1), pic(1), gpinyin(1),
refer(1), soelim(1), tbl(1)
Макросы и служебные программы, специфичные для пакетов: groff_hdtbl(7), groff_man(7), groff_man_style(7), groff_mdoc(7), groff_me(7), groff_mm(7), groff_mmse(7) (только в шведских локалях), mmroff(1), groff_mom(7), pdfmom(1), groff_ms(7), groff_rfc1345(7), groff_trace(7), groff_www(7)
Инструменты управления библиографической базой данных: indxbib(1), lkbib(1), lookbib(1)
Язык, соглашения и расширения GNU: groff(7), groff_char(7), groff_diff(7), groff_font(5), groff_tmac(5)
Промежуточный язык вывода: groff_out(5)
Форматирующая программа: troff(1)
Форматирующие обертки: nroff(1), pdfroff(1)
Постпроцессоры для устройств вывода: grodvi(1), grohtml(1), grolbp(1), grolj4(1), gropdf(1), grops(1), grotty(1)
Служебные программы для поддержки шрифтов: addftinfo(1), afmtodit(1), hpftodit(1), pfbtops(1), tfmtodit(1), xtotroff(1)
Служебные программы для преобразования графики: eqn2graph(1), grap2graph(1), pic2graph(1)
Служебная программа для выделения различий: gdiffmk(1)
Служебная программа «groff guess»:
grog(1)