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 有一些 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 传递一个带有 dir 作为其参数的 -M 选项。
-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 传递给打印程序。 如果需要多个 arg,请使用单独的 -L 选项传递每个 arg。 groff 在将其传递给打印程序之前,不会在 arg 前面加上选项破折号。
-M 与 troff 的选项(参见下文)一样,但也会传递给 eqn(1)、grap(1) 和 grn(1)。
-N 禁止 eqn 分隔符之间的换行:将 -N 传递给 eqn(1)。
-p 运行 pic(1) 预处理器。
-P arg 将 arg 传递给后处理器。 如果需要多个 arg,请使用单独的 -P 选项传递每个 arg。 groff 在将其传递给后处理器之前,不会在 arg 前面加上选项破折号。
-R 运行 refer(1) 预处理器。 没有提供将参数传递给 refer 的机制,因为大多数 refer 选项都有等效的语言元素,可以在文档中指定。
-s 运行 soelim(1) 预处理器。
-S 以“更安全”模式运行;请参阅下面的 -U 选项,了解其相反的操作。 出于安全原因,默认情况下启用了更安全模式。
-t 运行 tbl(1) 预处理器。
-T dev 指示 troff 为输出设备 dev 格式化输入。 groff 然后调用一个输出驱动程序,将其转换为适合 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
仅输出列表中的页面。
-r cnumeric-expression
-r register=numeric-expression
定义寄存器。
-w name
-W name
启用 (-w) 或禁止 (-W) 类别名称中的警告的输出。
-z 禁止 troff 的格式化设备无关输出。
用法
GNU roff 系统的架构遵循其他设备无关 roff 实现的架构,包括预处理器、宏包、输出驱动程序(或“后处理器”)、一套实用程序,以及其核心格式化程序 troff。请参阅 roff(7) 以了解 roff 系统的概述。
GNU roff 系统中的前端程序使其比传统的 roff 系统更容易使用,而传统的 roff 系统需要构建管道或使用临时文件来将源文档从可维护的格式转换为设备就绪的输出。以下讨论总结了 GNU roff 系统的组成部分。它通过 groff 特定的信息来补充 roff(7)。
入门
那些喜欢通过实验来学习或希望从系统中获得快速反馈的人,可以从“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 或 TeX 的 DVI 也很简单。困难的部分可能是选择一个用于输出的查看器程序。
$ 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 形式相同的参数。输出驱动程序的 man 页面,例如 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 系统的输入是纯文本,其中穿插着控制行和转义序列。 这种组合构成了一个文档,该文档属于我们称之为 roff 的语言家族;请参阅 roff(7) 以获取背景信息。GNU roff 语言语法的概述以及功能,包括所有支持的转义序列、请求和预定义寄存器的列表,可以在 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 使用 perl(1) 填充 groff 寄存器和字符串;
glilypond 嵌入 LilyPond 乐谱;以及
gpinyin 易于使用汉语拼音输入中文。
GNU roff 中独有的预处理器是 preconv(1),它将各种输入编码转换为 GNU troff 可以理解的内容。如果使用,它将在任何其他预处理器之前运行。
大多数预处理器将内容包含在一对特征标记之间。此类标记必须出现在输入行的开头,并使用点控制字符。点控制字符之后不能有空格或制表符,输入行的结尾之前也不能有空格或制表符。偏离这些规则会阻止预处理器识别该标记。标记通常保留在预处理器输出中,并由 troff 后续解释为宏调用。理想的预处理器尚未在 groff 中提供。
┌──────────────┬─────────────────┬────────────────┐
│ 预处理器 │ 开始标记 │ 结束标记 │
├──────────────┼─────────────────┼────────────────┤
│ 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 用于编写采用自 Version 7 Unix(1979 年)中的格式的 man 页面;请参阅 groff_man(7)。它可以在命令行中指定为 -man。
doc 用于编写采用自 4.3BSD-Reno(1990 年)中的格式的 man 页面;请参阅 groff_mdoc(7)。它可以在命令行中指定为 -mdoc。
e 是 Berkeley 通用宏套件,作为 AT&T 的 s 的替代方案而开发;请参阅 groff_me(7)。它可以在命令行中指定为 -me。
m 实现了第二代 AT&T 宏套件中用于通用文档的格式,它是 s 的后继;请参阅 groff_mm(7)。它可以在命令行中指定为 -mm。
om(总是被称为“mom”)是一个现代宏包,由 Peter Schaffter 专门为 GNU roff 编写。请参阅 mom HTML 手册以获取详细文档。它——因为 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,以便能够格式化为较旧系统编写的文档。
一个 shell 脚本 nroff(1) 模拟了 AT&T nroff 的行为。 它尝试根据区域设置正确地对输出进行编码,从而无需用户使用 -T 选项来指定输出设备,因此它便于与终端输出设备一起使用,如下一小节所述。
GNU troff 生成设备无关但非设备无关的页面描述语言,其详细信息请参阅 groff_out(5)。
输出设备
troff 输出的格式是为特定的输出设备设计的,通常通过格式化程序或前端的 -T 选项来指定。 如果既没有使用此选项,也没有使用 GROFF_TYPESETTER 环境变量,则默认输出设备为 ps。 输出设备可以是以下任何一种。
ascii 用于使用 ISO 646 1991:IRV 字符集和编码的终端,也称为 USASCII。
cp1047 用于使用 IBM 代码页 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 用于使用 75 dpi 分辨率和 10 点基本字号,通过 gxditview 进行预览。
X75-12 用于使用 75 dpi 分辨率和 12 点基本字号,通过 gxditview 进行预览。
X100 用于使用 100 dpi 分辨率和 10 点基本字号,通过 gxditview 进行预览。
X100-12 用于使用 100 dpi 分辨率和 12 点基本字号,通过 gxditview 进行预览。
后处理器
任何解释 GNU troff 输出的程序都是后处理器。 GNU roff 提供的后处理器是输出驱动程序,用于为查看或打印准备文档。 可以设想用于其他目的的后处理器,例如页面重新排序或对文档进行统计测量。
一个输出驱动程序支持一个或多个输出设备,每个设备都有其自己的设备描述文件。
设备通过其设备描述文件中的 postpro 指令来确定其后处理器;请参阅 groff_font(5)。 -X 选项会覆盖此选择,导致 gxditview 作为输出驱动程序。
`grodvi(1)`
提供 dvi。
`grohtml(1)`
提供 html 和 xhtml。
`grolbp(1)`
提供 lbp。
`grolj4(1)`
提供 lj4。
`gropdf(1)`
提供 pdf。
`grops(1)`
提供 ps。
`grotty(1)`
提供 ascii、cp1047、latin1 和 utf8。
`gxditview(1)`
提供 X75、X75-12、X100 和 X100-12,并且还可以预览 ps。
实用工具
GNU roff 包含一套实用工具。
`gdiffmk(1)`
标记一对 roff 输入文件之间的差异。
`grog(1)`
推断文档所需的 groff 命令。
几个实用工具用于准备字体描述,以便格式化程序在为给定设备生成输出时使用它们。
`addftinfo(1)`
将信息添加到 AT&T troff 字体描述文件中,以使其与 GNU troff 兼容。
`afmtodit(1)`
为 PostScript Type 1 字体创建字体描述文件。
`pfbtops(1)`
将 PFB(Printer Font Binary)格式的 PostScript Type 1 字体转换为 PFA(Printer Font ASCII),然后可以由 `afmtodit` 解释。
`hpftodit(1)`
为 HP LaserJet 4 系列打印机创建字体描述文件。
`tfmtodit(1)`
为 TeX DVI 设备创建字体描述文件。
`xtotroff(1)`
为 X Window System 核心字体创建字体描述文件。
一组工具将使用 roff 预处理器语言构建的材料转换为图形图像文件。
`eqn2graph(1)`
将 eqn 方程转换为裁剪后的图像。
`grap2graph(1)`
将 grap 图转换为裁剪后的图像。
`pic2graph(1)`
将 pic 图转换为裁剪后的图像。
另一组程序用于处理 refer(1) 预处理器使用的书目数据文件。
`indxbib(1)`
为书目数据库创建反向索引,以加快对其进行查找操作。
`lkbib(1)`
搜索数据库。
`lookbib(1)`
交互式搜索数据库。
退出状态
如果 groff 在解析其参数时遇到问题,则以失败状态退出;如果指定了 -h 或 --help 选项,则以成功状态退出。否则,groff 运行一个管道来处理其输入;如果管道中的所有命令都成功退出,则 groff 也会成功退出。否则,groff 的退出状态会编码遇到的问题的摘要,如果某个命令以失败状态退出,则设置位 0;如果某个命令被信号终止,则设置位 1;如果某个命令无法执行,则设置位 2。(因此,如果所有三种情况都发生在管道中,则 groff 将以状态 2^0 + 2^1 + 2^2 = 1+2+4 = 7 退出。)要解决管道问题,您可以希望使用 -V 选项重新运行 groff 命令,并将报告的管道分解为单独的阶段,检查每个命令的退出状态和诊断消息。
环境
通常,以 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 选项。 groff 的 -K 选项会覆盖 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 页面。 一旦 man(1) 图书管理员程序找到 man 页面,它可能会执行一个 groff 命令,如下所示。 groff -t -man -Tutf8 /usr/share/man/man1/groff.1 该图书管理员还会通过分页器管道输出,该分页器可能无法解释 groff 发出的 SGR 终端转义序列,用于加粗、下划线或斜体;请参阅下面的“限制”部分。
要使用预处理器 tbl 和 pic 以及 me 宏包来处理 roff 输入文件,以便 AT&T troff 用户能够像以前一样使用,你需要输入(或编写脚本)一个管道。
pic foo.me | tbl | troff -me -Tutf8 | grotty
使用 groff,可以将此管道缩短为一个等效的命令。
groff -p -t -me -T utf8 foo.me
更简单的方法是使用 grog(1) 来推断预处理器和宏选项,然后使用 shell 的命令替换功能来执行结果。
$(grog -Tutf8 foo.me)
每个传递给后处理器的命令行选项都必须指定任何必需的前导破折号“-”,因为 groff 会按原样将参数传递给后处理器;这允许传输任意参数。 例如,要将标题传递给 gxditview 后处理器,shell 命令 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)。
在 OS/390 Unix 等 EBCDIC 主机上,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)。
GNU roff 设备和字体描述目录
设备和字体描述文件与 GNU roff 一起提供,存储在 /usr/share/groff/1.23.0/ 中, 用于安装与本文档对应的字体。通常,会搜索多个目录以查找设备和字体描述文件;请参阅 troff(1)。有关这些文件的格式, 请参阅 groff_font(5)。
可用性
获取 groff 版本的下载链接、源代码仓库、讨论邮件列表、支持工单跟踪器以及有关 groff 页面中 GNU 网站的更多信息。 Ted Faber 编写的 grap 预处理器的免费实现可以在 grap 网站上找到。groff 仅支持此 grap。
作者
groff(包括前端命令和整个系统)主要由 James Clark 编写。本文档的贡献者包括 Clark、Trent A. Fisher、Werner Lemberg、Bernd Warken 和
G. Branden Robinson。
参见
Trent A. Fisher 和 Werner Lemberg 编写的《Groff:GNU 版本的 troff》是主要的 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 猜测”实用程序:
grog(1)