Может ли человек передать опцию форматеру roff? - PullRequest
0 голосов
/ 28 января 2020

SYNOPSIS

От man (1):

-l

Форматировать и отображать локальные файлы руководства вместо поиска в коллекции руководств системы .

-t

Используйте groff -mando c для форматирования страницы руководства в стандартный вывод.

Из groff_tma c (5):

paperize

Этот файл макроса уже загружен при запуске troff , поэтому в этом нет необходимости называть это явно. Он предоставляет интерфейс для установки размера бумаги в командной строке с параметром -dpaper = size . Возможные значения для size совпадают с предопределенными значениями paperize в файле DES C (только в нижнем регистре; для получения дополнительной информации см. groff_font (5), кроме) a7 - d7 . Добавленный символ l (ell) обозначает альбомную ориентацию. Примеры: a4 , c3l , letterl .

Для большинства драйверов вывода требуются дополнительные ключи командной строки -p и -l для переопределения длины и ориентации бумаги по умолчанию, заданной в файле драйвера c DES C. Например, используйте следующее для вывода PS на бумаге формата А4 в альбомной ориентации:

sh# groff -Tps -dpaper=a4l -P-pa4 -P-l -ms foo.ms > foo.ps

ПРОБЛЕМА

Я хотел бы использовать их для форматирования локальных и системных справочных страниц, чтобы распечатайте, но хотите изменить размер бумаги с Letter на A4. К сожалению, я не смог найти в man (1) ничего о передаче опций в базовый форматер roff .

Сейчас я могу использовать

zcat `man -w man` | groff -tman -dpaper=a4 -P-pa4

для форматирования man (1) на stdout, но это довольно долго, и я бы предпочел man построить конвейер для меня, если смогу. Кроме того, приведенный выше конвейер может потребоваться изменить для более сложных man-страниц, и хотя я мог бы использовать grog , даже он не обнаруживает такие вещи, как акцентированные символы (для groff ' -k ), в то время как man (возможно, с использованием настроек локали).

1 Ответ

0 голосов
/ 20 февраля 2020

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

В зависимости от хост-системы и / или программы, представляющие интерес, при печати программы (или всей системы) может быть сгенерирована полностью напечатанная форма страницы руководства. Это более распространено для системных документов и менее распространено для страниц руководства.

Обратите внимание, что в зависимости от того, какие страницы руководства вы пытаетесь распечатать, могут потребоваться дополнительные шаги. Традиционно следующий конвейер будет использоваться для охвата всех баз:

grap $MANFILE | pic | tbl | eqn /usr/pub/eqnchar | troff -tman -Tps | lpr -Pps

Лучшим решением для упрощения командной строки, вероятно, будет написание маленького крошечного скрипта, который инкапсулирует то, что вы делаете. Обратите внимание, что man -w может найти несколько разных имен файлов, так что вы, вероятно, захотите напечатать каждое по отдельности (или, возможно, только напечатать первое).

...