LaTeX 略微胆怯者教程
我承认。LaTeX 并非我格式化文本的首选。我是在我的(当时的)未婚夫的压力下才开始使用 LaTeX 的,而且当时的情况是,学期末所有 IBM PC 和 Mac 电脑都全天 24 小时被占用,而 Unix 终端几乎完全空闲。此外,每次我想在我未婚夫的电脑上使用我最喜欢的文字处理程序之一时,我都必须从 Linux 重启到 DOS,这太麻烦了。因此,为了排版一份拓扑作业,我开始学习 LaTeX。
即使在使用 LaTeX 大约一周后,它也不是我最喜欢的程序。它既不是文字处理器,也不是编辑器,对我来说它是一个全新的东西。我在屏幕上输入或编辑论文时,看不到斜体、下划线或数学公式。但是,过了一段时间,我习惯了这些规则,我的论文看起来非常漂亮,以至于我爱上了 LaTeX。我不是 LaTeX 或 TeX(LaTeX 基于 TeX)大师,我只能勉强记住如何启动一个文档。但是 LaTeX 的自由性和强大功能使其非常值得在学习上投入最初的时间,而且如果您只是进行普通的日常写作,LaTeX 并不难使用。
LaTeX 与您最喜欢的文字处理器之间存在一些主要区别。它不是 WYSIWYG(所见即所得),也不是 WYSLRN(所见看起来真的很整洁—粗体是 粗体,斜体是 斜体,但换行符和分页符不一定与文档打印时的位置相同)。使用 LaTeX,您所看到的就是 LaTeX 所看到的,并且您输入的是您希望 LaTeX 使用的确切命令。这意味着在您输入文本时,WYSLRU(您所看到的内容看起来非常丑陋)。 [有些所谓的 LaTeX 前端几乎是 WYSIWYG。《Linux Journal》可能会在以后的期刊中刊登关于这些前端的文章,因为它们可以使您更容易使用 LaTeX—编者注] 然而,因为您所看到的就是 LaTeX 所看到的,所以如果您的文档输出中有什么看起来不对劲的地方,您或许可以比使用文字处理器更容易地找到并修复它。
另一个区别是,当涉及到格式化决策时,如果您处理总体思路,LaTeX 将处理细节。例如,如果您希望您的脚注用字母而不是数字标记,或者脚注的编号从每页的 1 开始,或者其他一些标记方案,您只需在文档开头指示 LaTeX 一次即可。如果您改变主意,您无需更改所有脚注—只需更改开头的说明,LaTeX 将处理其余的事情。
最后一个区别是 LaTeX 没有标准的用户界面;您可以使用任何您喜欢的文本编辑器。我使用 Emacs,但任何 Emacs 克隆,或 vi 或其他使用纯文本的编辑器都可以工作。因为您可以使用任何编辑器,所以开始写文章或论文比在文字处理器中要稍微复杂一些。您需要告诉 LaTeX 您正在创建的文档类型,通常是 “book”(书籍)、“article”(文章)、“report”(报告)或 “letter”(信件)。任何关于 LaTeX 的书籍都会解释文档类型之间的具体差异;它们的名称应该能很好地说明它们的用途。
在告诉 LaTeX 您要处理的文档类型后,它会计算出页面格式和整个文档所需的特殊选项。我将使用 “letter”(信件)文档样式来演示在 LaTeX 中输入文档的基础知识,以及 LaTeX 使文档易于格式化和美观的强大功能。
要开始任何文档,在启动编辑器后,您需要在文件的开头放置一个序言,格式如下
documentstyle[...]{...}
关于这个序言,需要注意几点。首先是反斜杠。LaTeX 在大多数命令之前使用反斜杠,因此您应该熟悉它在键盘上的位置。方括号包含的选项会更改一些不如文档样式那么剧烈的东西。例如,您可以将字体大小从 10 磅更改为 11 或 12 磅,将整个文档设置为两列,或使用其他更高级的选项。花括号包含文档类型的名称:通常是 article 或 letter。花括号及其内容是必需的。
由于我们正在写信,我们将从以下内容开始
documentstyle{letter}
所有文档都需要在开头使用 \begin{document}(当然,在 documentstyle 命令之前,并且通常在其他更高级的命令之前),并在结尾使用 end{document}。
信件在样式中是独一无二的。您可能想在同一个文件中写几封信,重复使用相同的回信地址和签名。LaTeX 允许您通过在 \begin{document} 语句之前声明地址和签名来做到这一点。然后,每封信都以 \begin{letter} 开头,以 end{letter} 结尾。在所有信件之后,放置 end{document} 以结束文档。
address 和 signature 命令的格式相似,您将在 LaTeX 中非常熟悉它们。键入命令,后跟花括号中的参数(对于这些命令,是您的地址以及您的姓名和职称)
address{Linux Journal\\P.O. Box 85867\\ Seattle, WA 98145—1867} signature{Kim Johnson\\Chief Bottle Washer}
请注意双反斜杠;添加它们是为了强制换行—仅仅按 return 键不起作用,我稍后会解释。
现在,开始您的第一封信
\begin{document} \begin{letter}{Aunt Jane\\ St. Mary Mead\\England}
第二组花括号中的参数是信件收件人的地址。请注意重复出现的双反斜杠以及将参数放在花括号中以将其分隔开的趋势。您可能想在此处添加 end{letter},然后在 \begin 和 end 之间键入信件的其余部分—这可以节省以后调试的大量时间。
其他选项大多从示例信件中一目了然。
opening{Dearest Aunt Jane,} This is a very short letter. closing{With love,} cc{Hercule Poirot\\Tuppence} encl ps{P.S. This is a postscript.} end{letter} end{document}
您的姓名添加在信件结尾的下方,来自 \begin{letter} 之前使用的 signature 命令,如图 1 所示。

图 1. LaTeX 的输出
在大多数文字处理器上,甚至在 LaTeX 上,都有可能 “手动” 排列这封信的页面,但重点是 LaTeX 负责格式化,而您负责写作。其他文档样式的格式化没有那么激进,但它们确实允许您添加标题和题词,而无需担心将所有内容居中并放在正确的页面上。
现在,假设您想看看您的信件的真实外观—您当然不想按 letter.tex 文件中显示的样子发送它。因此,在保存文件并退出编辑器(或只是跳到另一个虚拟控制台)后,从 letter.tex 所在的目录中,键入 latex letter.tex。LaTeX 将以可以显示和打印的方式格式化您的文件。格式化后的文件将被称为 letter.dvi;DVI 代表 “设备无关”,这意味着您的文件可以使用许多程序显示或打印。如果您正在使用 X-Windows,请键入 xdvi letter.dvi 以查看您写的内容。如果您没有运行 X-Windows,您或许可以使用 dvgt,它随附于某些发行版,也可以从 sunsite.unc.edu 的 /pub/Linux/apps/tex/dvi/ 目录中获得。但是,它的用户界面对于新手来说不是最好的,而 xdvi 肯定更容易使用。
“文本看起来很棒!” 您说,“但我不仅仅想输入纯文本,我还想添加斜体、下划线、数学方程式和脚注以及...”(如果您在命令 latex letter.tex 处遇到问题,我稍后会给出一些调试信件的提示。)这些命令中的大多数都非常简单,并且与到目前为止使用的命令非常相似。
例如,要创建脚注,请在您希望脚注出现的位置键入 footnote{这是脚注的文本。}。请注意,您必须小心空格—将 footnote 命令放在任何标点符号之后,但在任何尾随空格之前。LaTeX 将创建一个完整的脚注列表并正确编号。但是,如果您想自己编号,请改用 footnote[num]{text}。请记住,方括号包含可选内容,因此除非自动编号无法满足您的需求,否则您无需自己编号脚注。
创建斜体和粗体文本非常相似,只是粗体和斜体命令实际上位于花括号内部而不是外部。这是为了使多个命令可以应用于一个区域。以下是一些示例:我可以使某些单词 {\bf 粗体}、{em 斜体}、{em\bf 粗斜体} 或 {em 在 一组 斜体单词 中 拥有 一个 {\bf 粗体} 单词}。(em 代表强调文本;it,代表斜体,也可以工作。)LaTeX 有许多其他类型样式,其工作方式与粗体和斜体相同;所有 LaTeX 参考书中都记录了它们。
LaTeX 中使用的另一种文本格式化方法类似于您在信件环境中使用 \begin 和 end 命令的方法。例如,以下是如何使文本居中
\begin{center} Here is my centered text,\\ here are two\\ more lines of centered text. end{center}
同样,与信件中一样,双反斜杠表示换行。\begin 和 end 命令,以及 {table}、{quotation} 和许多其他选项,都在参考手册中记录。
总而言之,当处理一些要放在页面上单独位置的文本时,如 footnote 和 opening,文本放在花括号中命令之后。当处理主文本流中的几个单词时,命令(如 em 和 \bf)与文本一起放在方括号内,以将其与周围的文本区分开来。最后,当处理文档中需要特殊显示的较大文本块时,例如居中文本或表格,则在文本周围使用 \begin{center} 和 end{center} 等命令。
关于换行符和间距的说明:当 LaTeX 在您输入的文本中看到换行符时,它只会假设您的行太长,您转到下一行继续输入同一段落的文本。LaTeX 比您更清楚一行能容纳多少个单词,因此一个换行符对 LaTeX 没有影响。另一方面,两个或多个换行符(一个或多个空行)被解释为 “新段落”,因此 LaTeX 将跳过一行和/或缩进,无论在您的文档样式中是否合适,并且不会在输出中放置额外的换行符。如果您想强制 LaTeX 换行而不换段落,则必须使用 \\,即双反斜杠。
LaTeX 也将额外的空格和额外的空行解释为只有一个空格或一个空行。您可能不确切知道要留多少行空白;只需将其留给 LaTeX 即可。如上面的信件所示,LaTeX 知道将所有内容放在页面上的哪个位置看起来最好,因此让它完成这项工作。另一方面,如果 LaTeX 不知道如何使事物看起来正确,您确实有一些控制权。如上所述,使用 \\(或等效地,linebreak)来指定换行符,并使用 pagebreak 来开始新页。如果这不起作用,请参阅其中一本关于它的书,或者咨询您当地的 “TeXnician”(TeX 术语,意为 “TeX 大师”)。
最后,您可以使用 hspace{width} 和 vspace{height} 分别添加水平和垂直空间,其中 width 和 height 指的是您要添加的空间量。例如,hspace{.25in} 将使当前行至少四分之一英寸高;它相当于一个无限薄的字母,四分之一英寸高。这可能不适用于段落的开头、行的结尾、页面的结尾以及各种其他位置。同样,如果您无法使其以您想要的方式工作,请参阅本书!
现在,回到您的信件。假设您已全部输入,尝试用 LaTeX 处理它,但它不起作用。这种情况偶尔会发生在每个人身上。要在 LaTeX 运行失败后返回提示符,请键入 q 或 x 或 ctrl-d(这是 TeX 最令我喜欢的功能之一—很容易退出)。许多常见问题会导致错误。首先,您是否记得在文件末尾放置 end{document}?或者是否有任何 \begin 语句没有匹配的 end 语句?这种情况的变体是缺少或不匹配的花括号或方括号。另一个常见问题是命令拼写错误—如果您告诉 LaTeX “senter”,它不知道该怎么做。我最常见的问题是使用正斜杠而不是反斜杠,因此我在打印前例行执行搜索和替换,将正斜杠替换为反斜杠。此外,我在 latex-mode 中使用 Emacs,因此它会警告我关于不匹配的花括号。
最后,LaTeX 有一些特殊字符,它们不能在文本中按原样使用,因为它们具有特殊含义(本文未涵盖)。这些字符是
# $ % & _ { } ~ ^ < >
所有这些字符都可以通过 LaTeX 生成。前七个字符可以通过键入 #、$、\\%、&、\\_、{ 和 } 生成,其余字符可以通过键入 verb+~+、verb+^+、verb+<+、verb+>+ 和 verb++ 生成。
LaTeX 的错误消息通常很有帮助,会给出可能发生错误的行号和错误类型。但是,它们并不总是正确的,因此您必须做一些工作,但由于一切都是公开的,因此通常不会太麻烦。我建议经常保存和 LaTeX 处理您的工作,以便您快速捕获错误,而不是在您的 3000 字报告完成后(或者您以为完成时)才捕获错误。经常显示您的工作也很有用,如果您正在使用 X-Windows,您可以在输入文本或 LaTeX 处理时将 xdvi 窗口图标化。xdvi 将自动使用最新版本的 dvi 文件,因此您无需一遍又一遍地退出并重新启动 xdvi。
当您完成编辑并准备打印时,您有几个选项。如果您有 PostScript 打印机,最简单的打印方式可能是使用随 TeX/LaTeX 安装一起提供的 dvips 程序。如果您安装了 lpr 程序,则命令
dvips filename.dvi | lpr
将打印该文件。如果您想创建 PostScript 文件,您可以改为键入
dvips filename.dvi -o filename.dvi
其他程序可用于其他打印机。通常使用一系列用于 HP LaserJet 打印机的驱动程序;对于 LaserJet 4,您可以键入
dvilj4 -e- filename.dvi | lpr
进行打印。键入 man dvilj 可以获得 LaserJet 驱动程序的文档。
如果您有任何其他打印机,则 Ghostscript 程序可能支持它。Ghostscript 是大多数 Linux 发行版中包含的 PostScript 语言解释器。设置它超出了本文的范围,但是一旦设置好,您就可以使用 dvips 创建 PostScript 文件,并使用 Ghostscript 打印它。例如,如果您有一台与 HP DeskJet 500 兼容的打印机,则可以运行
gs -q -sDEVICE=djet500 filename.ps quit
键入
gs devicenames == quit
不要使用设备名称前面的 “/”。
如果您的打印机支持以不同的分辨率打印,您也可以在 gs 命令行中指定分辨率。例如,对于每英寸 240 像素乘以每英寸 72 像素,请在文件名之前在命令行中添加 -r240x72。有关 Ghostscript 的更多信息,可以通过运行 man gs 获得。
警告: 不要只键入 lpr letter.dvi 来打印您的信件;它很可能会一团糟。大多数 Linux 发行版都没有设置为自动正确打印 DVI 文件。可以安装 “打印过滤器”,这将使您的生活更轻松。一个这样的程序称为 apsfilter,将在Linux Journal 的未来文章中进行解释。
您可能想做的不仅仅是写信。还有其他文档样式可用,如前所述。本文不是详细介绍所有这些样式的地方,但我发现 “article”(文章)是一种通用的好样式。您可以创建一个通用的模板文档,其中包含序言和您始终如一地喜欢的任何其他选项。然后,每当您想编写新文档时,将该文件复制到您的新文档,您就可以立即开始,无需大惊小怪。
最后,祝您好运,玩得开心!LaTeX 并不像某些人想象的那么困难,经过一点努力,结果可能会非常出色。
Kim Johnson 正在北卡罗来纳大学教堂山分校攻读数学博士学位。当她不学习时,她通常会阅读经典的英国推理小说。
LaTeX 的新版本 LaTeX2e 现已推出。如今,大多数(但并非所有)Linux 发行版都随附 LaTeX2e,它可以理解本文解释的旧版 LaTeX 2.09 格式(“兼容模式”),但也具有更强大、更灵活和可扩展的本机模式。本文介绍了 LaTeX 2.09,因为 LaTeX 2.09 和 LaTeX2e 都理解 2.09 格式,因此无论您的 Linux 发行版附带哪个版本的 LaTeX,这些示例都将有效。
但是,如果 LaTeX 引起了您的兴趣,您将需要购买一本关于它的书,而现在最好的书都涵盖了 LaTeX2e 格式。与您在本文中学到的知识相比,差异并不大,并且在这些书中进行了解释。
原始 LaTeX 文档是 Leslie Lamport(LaTeX 的原始作者)的 LaTeX:文档准备系统 (ISBN 0--201--15790--X)。它提供了对 LaTeX 的良好基本介绍,但有时令人沮丧地缺乏细节(就像本文一样)。本书的第二版涵盖了 LaTeX2e;第一版涵盖了 LaTeX 2.09。
LaTeX 伴侣 (ISBN 0--201--54199--8) 详细描述了 LaTeX2e。与 Lamport 的书相比,LaTeX 伴侣 深入的细节超出了任何一个人可能使用的范围—因此通常会包含您想要的细节。
由于 LaTeX 构建在历史悠久的 TeX 格式化程序之上,Donald Knuth 的 TeXbook (ISBN 0--201--13447--0) 提供了底层系统的文档,如果您希望成为 LaTeX 专家,可能会很有用。
O'Reilly 的书 使 TeX 工作 (ISBN 1--56592--051--1),作者 Norman Walsh,提供了与此处提到的其他书籍不同类型的信息。它可能有助于您发现如何查找、使用和安装许多额外的组件,这些组件可以使您在特定情况下更好地工作,并满足您的特定排版需求。
Usenet 新闻组 comp.text.tex 提供了一个讨论 TeX 和 LaTeX 的论坛。