Linux下如何使用Troff格式化PDF文档
Troff 是一个简单但功能强大的 Linux 系统文档文字处理器。 它允许您通过从命令行编译源文件来轻松创建可打印文档。 不像 胶乳 Troff 非常轻巧,并且预装在大多数 Linux 系统上。 本教程向您展示如何在 Ubuntu 中使用 Troff 格式化 PDF 文档。
什么是 Troff,为什么要使用它?
在最基本的意义上, 特罗夫 它是一个文字处理程序,可以将看起来像代码的脚本转换为可打印的文档。 与文字处理器不同,Troff 不依赖于“所见即所得”模型。 相反,它要求您使用某些类型的代码来处理您的格式。
简单是这种风格的最大优点之一。 Troff 的基本安装将包含创建文档所需的一切。 此外,它没有图形用户界面,这意味着您甚至可以通过 SSH 创建文档。
提示:了解如何转发 通过 SSH 的 GUI 应用程序 在 Linux 中。
Troff 安装
大多数 Linux 发行版中通常默认捆绑了 Troff。 您可以通过运行它的 -h 标志来检查您的系统中是否有它。 这将显示 Troff 安装接受的所有标签的简短列表。
特罗夫-h
在某些情况下,发行版默认不会编译 Troff。 这种情况下,可以通过搜索包安装 “咕噜咕噜”。
这是 GNU 项目对 Troff 和 Nroff 程序的重新实现,其中包括许多新的现代功能。
您可以使用以下命令在 Ubuntu 中安装 groff:
sudo apt 安装 groff
创建第一个 Troff 文档
与源代码类似,每个 Troff 文档都是一个文本文件,其中包含有关如何创建文档的说明。 这包括页面宽度和边距以及字符和页面间距。
这种控制级别允许您操纵程序来创建任何类型的文档。 为了简单起见,Troff 的开发人员创建了“宏”,将这些命令压缩为更简单的语法。
您将在 Troff 中使用的最常见的宏之一是毫秒。 将创建一篇论文风格的文档。 您可以使用 touch 命令创建 ms 文档:
触摸我的第一个 document.ms
由于所有 Troff 文档都是文本,因此您可以使用文本编辑器打开文档。 就我而言,我正在使用 vim。 或者,您可以使用这些适用于 Linux 的文本编辑器中的任何一个。
vim 我的第一个文档.ms
了解 Troff 格式
Troff 的所有文档都遵循类似的结构。 您执行的每个格式化命令都必须在它试图格式化的内容中单独一行。 因此,典型的 Troff 文档如下所示:
.COMMAND1 这是Troff文档中的一段内容。 .COMMAND2 这是 Troff 文档中的不同内容。
您将在几毫秒内使用的两个最基本的命令是 TL 和 .PP。 前者将您的文本转换为标题并将其置于文档中心,而后者将您的文本格式化为类似段落的样式。
例如,以下代码片段同时使用了 TL 和 .PP 命令:
.TL 我的第一个 Troff 文档 .PP 这是我希望在我的最终文档中看起来像一个段落的内容。 这不是一个很长的内容,但它是我的第一个 Troff 文档,它是我引以为豪的东西。 它大约有三个句子长,应该正确地环绕文档。
在这里,通过将您的文件传递到 Troff 的软件来创建您的文档。
groff -ms -Tpdf ./my-first-document.ms > 输出.pdf
提示:如果您喜欢更简单的东西,请了解如何 在 Google 文档中以 MLA 格式写作.
创建粗体、斜体和下划线文本
就像常规的文字处理器一样,大多数 Troff 宏都提供了许多用于文档自定义的样式命令。 对于 ms,这些是 .B 和 . 我和。 UL 和 .BX。
- B 命令将文本更改为粗体。
- .I 命令将文本更改为斜体。
- UL 和。 BX 是两个分别在文本周围绘制下划线和方框的命令。
与上面的命令类似,在您的文档中使用这些命令需要每个样式在其自己的行中分开:
.TL 我的第一个 Troff 文档 .PP 这是 .B 内容 .R 我希望在我的最终文档中看起来像一个段落。 [...]
在这个例子中,我在一个词之前创建了一个新行 “内容” 我添加了 .B 命令以将其更改为粗体,然后我创建了一个新行并添加了 .R 命令。 这让 Troff 可以恢复到他以前的技术。
需要注意的是,更改样式时始终需要添加 .R 命令。 例如,以下代码片段不会终止 .I 命令,因为 Troff 没有看到它后面的 .R 文件:
.TL 我的第一个 Troff 文档 .PP 这是我希望在最终文档中看起来像一个段落的内容。 [...]
创建新的文档部分
与 LaTeX 类似,Troff 也支持分区检测和层次结构,因此编辑时无需对每个表头的层级进行排序和匹配。
要在您的文档中创建一个新部分,请使用 .NH 命令后跟您的标题名称。
.TL 我的第一个 Troff 文档 .NH 我的第一个标题 .PP 这是我希望在我的最终文档中看起来像一个段落的内容。
默认情况下,每个 Troff 标头都包含一个级别值,该级别值确定程序的构建方式及其内容在最终文档中的显示方式。 知道您可以更改此值以调整标题级别。
例如,以下内容在父级下方创建了一个 2 级地址:
.TL 我的第一个 Troff 文档 .NH 我的第一个标题 .NH 2 我的第一个副标题 .PP 这是我希望在我的最终文档中看起来像一个段落的内容。
除了常规编号的标题外,Troff 还可以创建仍将遵循文档级别层次结构的空标题。
为此,请将 .NH 替换为 SH 命令:
.TL 我的第一个 Troff 文档 .SH 我的第一个标题 .SH 2 我的第一个副标题 .PP 这是我希望在我的最终文档中看起来像一个段落的内容。
提示:了解如何 更改 Google 文档中的页边距.
在 Troff 中创建列表
Troff 的简单性还允许您将她的行为改变为您想要的任何东西。 例如,Troff 或 ms 宏默认不会出现列表。 尽管如此,您仍然可以通过组合几个 ms 命令来创建列表。
Troff 中的每个列表都由三部分组成:缩进、项目符号和内容。 要创建缩进,请使用 .rs 和 .rs 命令。 关于。 这会将其中任何文本的当前缩进级别缩进四个空格。
.RS 这是我的第一个项目。 。关于
接下来,使用 .IP 为您的菜单项创建项目符号。 这是一个段落缩进命令,可将文本的左边距固定为特定宽度。
IP 命令还允许您设置自定义项目符号点以及它与文本之间的空格。 在这种情况下,我会将项目符号设置为“[1]”并给它四个空格。
.RS .IP [1] 4 这是我的第一个项目。 。关于
现在复制并粘贴您的 IP 命令以创建其他菜单项。
.RS .IP [1] 4 这是我的第一个项目。 .IP [2] 4 这是我的第二个项目。 .IP [3] 4 这是我的第三个项目。 。关于
最后,通过创建自定义宏来自动执行此过程。 例如,以下代码片段将我的 IP 命令与 QW 相关联。
.de QW .IP [-] 4 .. .RS .QW 这是我的第一个项目。 .QW 这是我的第二个项目。 .QW 这是我的第三个项目。 。关于
在 Troff 中使用预处理器创建表
Troff 的一个奇怪之处在于,它的大部分功能都作为 “初级治疗”. 在大多数情况下,这些是程序外的二进制文件,它们通过创建 “预处理器容器脚本” 并将其转换为低级 Troff 代码。
Tbl 是 Troff 预处理器的一个很好的例子。 它是一个管理文档中表格的程序。 基本的 Tbl 容器如下所示:
.TS allbox ; 抄送项目1 项目2 item3 item4 项目5 item6.TE
- .TS 和 .TE 命令告诉 Tbl 这是一个它可以读取的环境。
- 第二行告诉程序如何格式化这个表。
- 第三行是一个空格分隔的字段,它定义了列的数量和表格的对齐方式。
- 第四行和第五行是包含表格内容的制表符分隔字段。
使用 Tbl 编译文档与常规 Troff 文件有点不同。 首先,上传您的文件:
tbl my-first-document.ms > preprocessed.ms
接下来,将程序的输出提供给 Troff:
groff -ms -Tpdf ./preprocessed.ms > 输出.pdf
最后,使用 UNIX 管道自动执行此过程:
tbl 我的第一个文档.ms | groff -ms -Tpdf > 输出.pdf
经常问的问题:
Q1:可以在 Windows 下使用 Troff 吗?
回答。 默认情况下,Troff 和 Groff 没有正式移植到 Windows。 尽管如此,您仍然可以通过以下方式将 Groff 与其他 GNU 工具一起使用 为 Linux 安装 Windows 子系统.
Q2:Troff 有书目跟踪功能吗?
回答。 是的。 Referral 是一个简单的预处理器,它使用外部参考书目文件自动跟踪 Troff 文档中的参考文献。 您可以通过运行 man referrer 访问其手册页来了解有关其工作原理的更多信息。
Q3:如何解决编译 Troff 时出现的“missing DESC”错误?
回答。 此问题可能是由于您的系统中缺少依赖项或版本文件不匹配。 要解决此问题,请从您的发行版存储库安装适当的 groff 包。