如何在 Linux 上使用 groff -me 格式化学术论文

学习使用简单的宏来为您的课堂论文添加脚注、块引用、列表、小标题和其他格式。
279 位读者喜欢这个。
Green paperclips

公共领域中的原始图像。由 Jason Baker 修改。CC BY-SA 4.0。

我于 1993 年作为本科生发现了 Linux。我非常兴奋能够在我的宿舍里拥有 Unix 系统的强大功能,但尽管它有很多功能,Linux 却缺少应用程序。像 LibreOffice 和 OpenOffice 这样的文字处理器还有很多年才能出现。如果你想使用文字处理器,你很可能会将系统启动到 MS-DOS 中,并使用 WordPerfect、共享软件 GalaxyWrite 或类似的程序。

那是我的方法,因为我需要为我的课程写论文,但我更喜欢留在 Linux 中。我从我们“大型 Unix”校园计算机实验室了解到,Unix 系统提供了一组文本格式化程序,称为 nrofftroff。 它们是同一系统的不同接口:nroff 生成纯文本输出,适用于屏幕或行式打印机,而 troff 生成非常漂亮的输出,通常用于在激光打印机上打印。

在 Linux 上,nrofftroff 被合并为 GNU troff,更常被称为 groff。 我很高兴看到我的早期 Linux 发行版中包含了一个 groff 版本,所以我开始学习如何使用它来写课堂论文。 我学到的第一个宏集是 -me 宏包,它是一个简单易学的宏集。

关于 groff 首先要了解的是,它会根据一组宏处理和格式化文本。宏通常是一个双字符命令,位于单独的一行上,并带有一个前导点。一个宏可能带有一个或多个选项。 当 groff 在处理文档时遇到这些宏中的一个时,它会自动格式化文本。

下面,我将分享使用 groff -me 编写像课堂论文这样的简单文档的基础知识。我不会深入研究细节,例如如何创建嵌套列表、保留和显示、表格和图形。

段落

让我们从你在几乎每种类型的文档中都能看到的简单示例开始:段落。 段落可以格式化为第一行缩进或不缩进(即,与左边距齐平)。 许多印刷文档,包括学术论文、杂志、期刊和书籍,都使用了这两种类型的组合,文档或章节中的第一个(引导)段落左对齐,所有其他(常规)段落缩进。 在 groff -me 中,你可以使用两种段落类型:引导段落 (.lp) 和常规段落 (.pp)。

.lp
This is the first paragraph.
.pp
This is a standard paragraph.

文本格式

以粗体格式化文本的宏是 .b,以斜体格式化文本的宏是 .i。 如果你将 .b.i 放在单独的一行上,那么它之后的所有文本都将以粗体或斜体显示。 但更有可能的是你只想用粗体或斜体显示一个或几个单词。 要将一个单词设置为粗体或斜体,请将该单词与 .b.i 放在同一行上,作为选项。 要以粗体斜体格式设置多个单词,请将你的文本用引号括起来。

.pp
You can do basic formatting such as
.i italics
or
.b "bold text."

在上面的示例中,粗体文本末尾的句点也将以粗体显示。 在大多数情况下,这不是你想要的。 更正确的是只将 粗体文本 中的单词设置为粗体,而不是尾随的句点。 要获得你想要的效果,你可以向 .b.i 添加第二个参数,以指示任何应该跟在粗体或斜体文本后面的文本,但以普通类型显示。 例如,你可以这样做以确保尾随句点不会以粗体类型显示。

.pp
You can do basic formatting such as
.i italics
or
.b "bold text" .

列表

使用 groff -me,你可以创建两种类型的列表:项目符号列表 (.bu) 和编号列表 (.np)。

.pp
Bullet lists are easy to make:
.bu
Apple
.bu
Banana
.bu
Pineapple
.pp
Numbered lists are as easy as:
.np
One
.np
Two
.np
Three
.pp
Note that numbered lists will reset at the next pp or lp.

小标题

如果你正在写一篇长论文,你可能想把你的内容分成几个部分。 使用 groff -me,你可以创建编号标题 (.sh) 和未编号标题 (.uh)。 在任一情况下,将章节标题用引号引起来作为参数。 对于编号标题,你还需要提供标题级别:1 将给出第一级标题(例如,1.)。 类似地,23 将给出第二级和第三级标题,例如 2.1 或 3.1.1。

.uh Introduction
.pp
Provide one or two paragraphs to describe the work
and why it is important.
.sh 1 "Method and Tools"
.pp
Provide a few paragraphs to describe how you
did the research, including what equipment you used

智能引号和块引用

在任何学术论文中,引用他人的作品作为证据都是标准的。 如果你引用一段简短的引文来突出一个关键信息,你可以直接在你的文本周围键入引号。 但 groff 不会自动将你的引号转换为现代文字处理系统使用的“智能”或“弯曲”引号。 要在 groff -me 中创建它们,请插入一个内联宏来创建左引号 (\*(lq) 和右引号 (\*(rq)。

.pp
Christine Peterson coined the phrase \*(lqopen source.\*(rq

groff -me 中还有一个快捷方式可以创建这些引号 (.q),我发现它更容易使用。

.pp
Christine Peterson coined the phrase
.q "open source."

如果你引用一段跨越多行的较长引文,你将需要使用块引用。 为此,在引文的开头和结尾插入块引用宏 (.(q)。

.pp
Christine Peterson recently wrote about open source:
.(q
On April 7, 1998, Tim O'Reilly held a meeting of key
leaders in the field. Announced in advance as the first
.q "Freeware Summit,"
by April 14 it was referred to as the first
.q "Open Source Summit."
.)q

脚注

要插入脚注,请在脚注文本之前和之后包含脚注宏 (.(f),并使用内联宏 (\**) 添加脚注标记。 脚注标记应该同时出现在文本和脚注本身中。

.pp
Christine Peterson recently wrote about open source:\**
.(f
\**Christine Peterson.
.q "How I coined the term open source."
.i "OpenSource.com."
1 Feb 2018.
.)f
.(q
On April 7, 1998, Tim O'Reilly held a meeting of key
leaders in the field. Announced in advance as the first
.q "Freeware Summit,"
by April 14 it was referred to as the first
.q "Open Source Summit."
.)q

封面

大多数课堂论文都需要一个封面,其中包含论文的标题、你的姓名和日期。 在 groff -me 中创建封面需要一些组装。 我发现最简单的方法是使用居中的文本块,并在标题、姓名和日期之间添加额外的行。 (我更喜欢在每个之间使用两个空行。)在你的论文顶部,从标题页 (.tp) 宏开始,插入五个空行 (.sp 5),然后添加居中的文本 (.(c),以及额外的空行 (.sp 2)。

.tp
.sp 5
.(c
.b "Writing Class Papers with groff -me"
.)c
.sp 2
.(c
Jim Hall
.)c
.sp 2
.(c
February XX, 2018
.)c
.bp

最后一个宏 (.bp) 告诉 groff 在标题页之后添加一个分页符。

了解更多

这些是在 groff -me 中编写看起来专业的论文的要点,包括引导和缩进的段落、粗体和斜体文本、项目符号和编号列表、编号和未编号的章节标题、块引用和脚注。

我包含了一个示例 groff 文件来演示所有这些格式。 将 lorem-ipsum.me 文件保存到你的系统并通过 groff 运行它。 -Tps 选项将输出类型设置为 PostScript,因此你可以将文档发送到打印机或使用 ps2pdf 程序将其转换为 PDF 文件。

groff -Tps -me lorem-ipsum.me > lorem-ipsum.me.ps
ps2pdf lorem-ipsum.me.ps lorem-ipsum.me.pdf

如果你想在 groff -me 中使用更高级的功能,请参考 Eric Allman 的“使用 Groff 编写论文,使用 −me”,你可以在 groff 的 doc 目录中以 meintro.me 的形式在你的系统中找到它。 这是一个很棒的参考文档,解释了使用 groff -me 宏格式化论文的其他方法。

标签
photo of Jim Hall
Jim Hall 是一位开源软件倡导者和开发人员,以在 GNOME 中进行可用性测试以及作为 FreeDOS 的创始人 + 项目协调员而闻名。

5 条评论

很棒的文章。 让我想起了我用 -man 宏集编写 man 页面的日子 :)

谢谢!

-man 宏集非常适合编写手册页。 实际上,我想知道我是否应该写一篇关于如何使用 -man 宏创建 man 页面的文章。

随着时间的推移,我学习了一些其他用于编写论文的宏集。 -me 宏集非常容易学习和使用,但我也在考虑编写类似关于 -ms 和 -mm 宏的教程文章。

很棒的文章,我总是很欣赏旧工具如何再次发挥作用。 只有一个投诉:你附加的 lorem-ipsum.me 文件实际上是一个 PDF。 你能发布源代码以便我可以处理它吗?

谢谢。

哎呀! 应该有两个文件附加到这篇文章:原始源文件,以及生成的 PDF 文件(所以你可以看到 groff 文件生成什么)。 我会要求更新它。

回复 作者:ArtyChoked

Creative Commons License本作品采用知识共享署名-相同方式共享 4.0 国际许可协议进行许可。
© . All rights reserved.