Linux下如何使用Troff格式化PDF文档

Troff 是一个简单但功能强大的 Linux 系统文档文字处理器。 它允许您通过从命令行编译源文件来轻松创建可打印文档。 不像 胶乳 Troff 非常轻巧,并且预装在大多数 Linux 系统上。 本教程向您展示如何在 Ubuntu 中使用 Troff 格式化 PDF 文档。

如何在 Linux 中使用 Troff 格式化 PDF 文档 - %categories

什么是 Troff,为什么要使用它?

在最基本的意义上, 特罗夫 它是一个文字处理程序,可以将看起来像代码的脚本转换为可打印的文档。 与文字处理器不同,Troff 不依赖于“所见即所得”模型。 相反,它要求您使用某些类型的代码来处理您的格式。

如何在 Linux 中使用 Troff 格式化 PDF 文档 - %categories

简单是这种风格的最大优点之一。 Troff 的基本安装将包含创建文档所需的一切。 此外,它没有图形用户界面,这意味着您甚至可以通过 SSH 创建文档。

如何在 Linux 中使用 Troff 格式化 PDF 文档 - %categories

提示:了解如何转发 通过 SSH 的 GUI 应用程序 在 Linux 中。

Troff 安装

大多数 Linux 发行版中通常默认捆绑了 Troff。 您可以通过运行它的 -h 标志来检查您的系统中是否有它。 这将显示 Troff 安装接受的所有标签的简短列表。

特罗夫-h

如何在 Linux 中使用 Troff 格式化 PDF 文档 - %categories

在某些情况下,发行版默认不会编译 Troff。 这种情况下,可以通过搜索包安装 “咕噜咕噜”。

如何在 Linux 中使用 Troff 格式化 PDF 文档 - %categories

这是 GNU 项目对 Troff 和 Nroff 程序的重新实现,其中包括许多新的现代功能。

您可以使用以下命令在 Ubuntu 中安装 groff:

sudo apt 安装 groff

如何在 Linux 中使用 Troff 格式化 PDF 文档 - %categories

创建第一个 Troff 文档

与源代码类似,每个 Troff 文档都是一个文本文件,其中包含有关如何创建文档的说明。 这包括页面宽度和边距以及字符和页面间距。

如何在 Linux 中使用 Troff 格式化 PDF 文档 - %categories

这种控制级别允许您操纵程序来创建任何类型的文档。 为了简单起见,Troff 的开发人员创建了“宏”,将这些命令压缩为更简单的语法。

如何在 Linux 中使用 Troff 格式化 PDF 文档 - %categories
您将在 Troff 中使用的最常见的宏之一是毫秒。 将创建一篇论文风格的文档。 您可以使用 touch 命令创建 ms 文档:

触摸我的第一个 document.ms

由于所有 Troff 文档都是文本,因此您可以使用文本编辑器打开文档。 就我而言,我正在使用 vim。 或者,您可以使用这些适用于 Linux 的文本编辑器中的任何一个。

vim 我的第一个文档.ms

如何在 Linux 中使用 Troff 格式化 PDF 文档 - %categories

了解 Troff 格式

Troff 的所有文档都遵循类似的结构。 您执行的每个格式化命令都必须在它试图格式化的内容中单独一行。 因此,典型的 Troff 文档如下所示:

.COMMAND1 这是Troff文档中的一段内容。 .COMMAND2 这是 Troff 文档中的不同内容。

您将在几毫秒内使用的两个最基本的命令是 TL 和 .PP。 前者将您的文本转换为标题并将其置于文档中心,而后者将您的文本格式化为类似段落的样式。

另請閱讀:  如何在 VirtualBox 中导入和导出 OVA 文件

例如,以下代码片段同时使用了 TL 和 .PP 命令:

.TL 我的第一个 Troff 文档 .PP 这是我希望在我的最终文档中看起来像一个段落的内容。 这不是一个很长的内容,但它是我的第一个 Troff 文档,它是我引以为豪的东西。 它大约有三个句子长,应该正确地环绕文档。

如何在 Linux 中使用 Troff 格式化 PDF 文档 - %categories

在这里,通过将您的文件传递到 Troff 的软件来创建您的文档。

groff -ms -Tpdf ./my-first-document.ms > 输出.pdf

如何在 Linux 中使用 Troff 格式化 PDF 文档 - %categories

提示:如果您喜欢更简单的东西,请了解如何 在 Google 文档中以 MLA 格式写作.

创建粗体、斜体和下划线文本

就像常规的文字处理器一样,大多数 Troff 宏都提供了许多用于文档自定义的样式命令。 对于 ms,这些是 .B 和 . 我和。 UL 和 .BX。

  • B 命令将文本更改为粗体。
  • .I 命令将文本更改为斜体。
  • UL 和。 BX 是两个分别在文本周围绘制下划线和方框的命令。

与上面的命令类似,在您的文档中使用这些命令需要每个样式在其自己的行中分开:

.TL 我的第一个 Troff 文档 .PP 这是 .B 内容 .R 我希望在我的最终文档中看起来像一个段落。 [...]

在这个例子中,我在一个词之前创建了一个新行 “内容” 我添加了 .B 命令以将其更改为粗体,然后我创建了一个新行并添加了 .R 命令。 这让 Troff 可以恢复到他以前的技术。

如何在 Linux 中使用 Troff 格式化 PDF 文档 - %categories

需要注意的是,更改样式时始终需要添加 .R 命令。 例如,以下代码片段不会终止 .I 命令,因为 Troff 没有看到它后面的 .R 文件:

.TL 我的第一个 Troff 文档 .PP 这是我希望在最终文档中看起来像一个段落的内容。 [...]

如何在 Linux 中使用 Troff 格式化 PDF 文档 - %categories

创建新的文档部分

与 LaTeX 类似,Troff 也支持分区检测和层次结构,因此编辑时无需对每个表头的层级进行排序和匹配。

另請閱讀:  如何在 Linux 中使用 Fail2Ban 保护您的服务器

要在您的文档中创建一个新部分,请使用 .NH 命令后跟您的标题名称。

.TL 我的第一个 Troff 文档 .NH 我的第一个标题 .PP 这是我希望在我的最终文档中看起来像一个段落的内容。

如何在 Linux 中使用 Troff 格式化 PDF 文档 - %categories

默认情况下,每个 Troff 标头都包含一个级别值,该级别值确定程序的构建方式及其内容在最终文档中的显示方式。 知道您可以更改此值以调整标题级别。

例如,以下内容在父级下方创建了一个 2 级地址:

.TL 我的第一个 Troff 文档 .NH 我的第一个标题 .NH 2 我的第一个副标题 .PP 这是我希望在我的最终文档中看起来像一个段落的内容。

如何在 Linux 中使用 Troff 格式化 PDF 文档 - %categories

除了常规编号的标题外,Troff 还可以创建仍将遵循文档级别层次结构的空标题。

为此,请将 .NH 替换为 SH 命令:

.TL 我的第一个 Troff 文档 .SH 我的第一个标题 .SH 2 我的第一个副标题 .PP 这是我希望在我的最终文档中看起来像一个段落的内容。

如何在 Linux 中使用 Troff 格式化 PDF 文档 - %categories

提示:了解如何 更改 Google 文档中的页边距.

在 Troff 中创建列表

Troff 的简单性还允许您将她的行为改变为您想要的任何东西。 例如,Troff 或 ms 宏默认不会出现列表。 尽管如此,您仍然可以通过组合几个 ms 命令来创建列表。

Troff 中的每个列表都由三部分组成:缩进、项目符号和内容。 要创建缩进,请使用 .rs 和 .rs 命令。 关于。 这会将其中任何文本的当前缩进级别缩进四个空格。

.RS 这是我的第一个项目。 。关于

如何在 Linux 中使用 Troff 格式化 PDF 文档 - %categories接下来,使用 .IP 为您的菜单项创建项目符号。 这是一个段落缩进命令,可将文本的左边距固定为特定宽度。

IP 命令还允许您设置自定义项目符号点以及它与文本之间的空格。 在这种情况下,我会将项目符号设置为“[1]”并给它四个空格。

.RS .IP [1] 4 这是我的第一个项目。 。关于

如何在 Linux 中使用 Troff 格式化 PDF 文档 - %categories现在复制并粘贴您的 IP 命令以创建其他菜单项。

.RS .IP [1] 4 这是我的第一个项目。 .IP [2] 4 这是我的第二个项目。 .IP [3] 4 这是我的第三个项目。 。关于

如何在 Linux 中使用 Troff 格式化 PDF 文档 - %categories

最后,通过创建自定义宏来自动执行此过程。 例如,以下代码片段将我的 IP 命令与 QW 相关联。

.de QW .IP [-] 4 .. .RS .QW 这是我的第一个项目。 .QW 这是我的第二个项目。 .QW 这是我的第三个项目。 。关于

如何在 Linux 中使用 Troff 格式化 PDF 文档 - %categories

在 Troff 中使用预处理器创建表

Troff 的一个奇怪之处在于,它的大部分功能都作为 “初级治疗”. 在大多数情况下,这些是程序外的二进制文件,它们通过创建 “预处理器容器脚本” 并将其转换为低级 Troff 代码。

另請閱讀:  如何让 Ubuntu 看起来像 macOS Big Sur

如何在 Linux 中使用 Troff 格式化 PDF 文档 - %categories

Tbl 是 Troff 预处理器的一个很好的例子。 它是一个管理文档中表格的程序。 基本的 Tbl 容器如下所示:

.TS allbox ; 抄送项目1 项目2 item3 item4 项目5 item6.TE
  • .TS 和 .TE 命令告诉 Tbl 这是一个它可以读取的环境。
  • 第二行告诉程序如何格式化这个表。
  • 第三行是一个空格分隔的字段,它定义了列的数量和表格的对齐方式。
  • 第四行和第五行是包含表格内容的制表符分隔字段。

如何在 Linux 中使用 Troff 格式化 PDF 文档 - %categories

使用 Tbl 编译文档与常规 Troff 文件有点不同。 首先,上传您的文件:

tbl my-first-document.ms > preprocessed.ms

接下来,将程序的输出提供给 Troff:

groff -ms -Tpdf ./preprocessed.ms > 输出.pdf

最后,使用 UNIX 管道自动执行此过程:

tbl 我的第一个文档.ms | groff -ms -Tpdf > 输出.pdf

如何在 Linux 中使用 Troff 格式化 PDF 文档 - %categories

经常问的问题:

Q1:可以在 Windows 下使用 Troff 吗?

回答。 默认情况下,Troff 和 Groff 没有正式移植到 Windows。 尽管如此,您仍然可以通过以下方式将 Groff 与其他 GNU 工具一起使用 为 Linux 安装 Windows 子系统.

Q2:Troff 有书目跟踪功能吗?

回答。 是的。 Referral 是一个简单的预处理器,它使用外部参考书目文件自动跟踪 Troff 文档中的参考文献。 您可以通过运行 man referrer 访问其手册页来了解有关其工作原理的更多信息。

Q3:如何解决编译 Troff 时出现的“missing DESC”错误?

回答。 此问题可能是由于您的系统中缺少依赖项或版本文件不匹配。 要解决此问题,请从您的发行版存储库安装适当的 groff 包。

你可能也会喜欢