1993 年我发现 Linux 时还是一个本科生。我非常兴奋能在我的宿舍里拥有 Unix 系统的强大功能,但尽管它功能强大,Linux 仍然缺乏应用程序。像 LibreOffice 和 OpenOffice 这样的文字处理器还有几年才会出现。如果您想使用文字处理器,您可能会将系统启动到 MS-DOS 并使用 WordPerfect、共享软件 GalaxyWrite 或类似的程序。
那是我的方法,因为我需要为我的课程写论文,但我更喜欢留在 Linux 中。我从我们校园“大型 Unix”计算机实验室了解到,Unix 系统提供了一组名为 nroff
和 troff
的文本格式化程序。它们是同一系统的不同接口:nroff
生成纯文本输出,适用于屏幕或行式打印机,而 troff
生成非常漂亮的输出,通常用于激光打印机打印。
在 Linux 上,nroff
和 troff
组合为 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.)。类似地,2
和 3
将给出第二级和第三级标题,例如 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 的“使用 −me
的 Groff 论文写作”,您应该可以在 groff 的 doc
目录中找到它,文件名为 meintro.me
。这是一份很棒的参考文档,解释了使用 groff -me
宏格式化论文的其他方法。
5 条评论