-
Notifications
You must be signed in to change notification settings - Fork 67
漫谈 LaTeX
七十年代末,Donald E. Knuth(高德纳)在看到其多卷巨著“The Art of Computer Programming”第二卷的校样时,对由计算机排版的校样的低质量感到无法忍受。因此决定自 己来开发一个高质量的计算机排版系统,这样就有了 TeX。
TeX的源程序是用 Pascal 写成的,原因是 Knuth 希望 TeX尽可能方便地移植到其它 的操作系统中去。当时 Pascal 是最适合于这一要求的编程语言。这也使得 TeX现在已经 在几乎所有的计算机系统中得到实现。
TeX的另一个重要的特征就是它的输出是与设备无关的。TeX的输出文件称为 DVI 文 件,即是“Device Independent”。一旦 TeX处理了你的文件,你所得到的 DVI 文件就可 以被送到任何输出设备如打印机,屏幕等并且总会得到相同的结果,而这与这些输出设备的 限制没有任何关系。这说明 DVI 文件中所有的元素,从页面设置到文本中字符的位置都被 固定,不能更改。
TeX的第一版于 1978 年面世。在经过了不断的改进后,1982 年版的 TeX是一个十分 稳定的版本。从此以后,TeX没有较大的变动,只有很少部分的改进和错误修正。现在几乎 所有的操作系统平台下,都有相应的 TeX软件,而且用它们排版同一个文件得到的输出结 果是相同的。TeX目前的版本是 3.1415926,很接近圆周率π。每有一新的版本,就会加上 一个π的小数点后的数。所以我们已经知道下一版本的 TeX是 3.14159265,最终将收敛到 π。这也代表了 TeX不断追求完美的理想。
Knuth 用他自己设计的“文学编程语言” 写了TeX的代码,到了正式发行的时候,他非常自 信的奖励 $ 1.28 给第一个发现 bug 的人,以后每发现一个 bug, 奖金都会翻倍,最多 $ 327.68。后来由于加入了对8字节字符的支持,产生了一些小 bug。从1995年到现在,总 共只发现一个 bug. 发现 bug 的周期越来越长,而且后来的 bug 都是一些在挑剔的人找出 来的一些“美学”上的问题了。但是严谨的 Knuth 仍然把它们作为 bug 处理。国内的王垠 就曾获得他的两张支票。
TeX现在已经被它的开发者 Knuth 所“冰封”(frozen),新版本的 TeX只有少许改进 和错误修正。这些变动必须保证不会使得即使是写于 1982 年的 TeX文档无法编译,TeX自带了测试文件来确保这一点。如果测试文件文件的输出结果不同于预定的结果,那么这个 排版系统就不能够被称为“TeX”。所以像一些对 TeX有很大改进的软件,如“Omega”等 将不能被称为“TeX”,尽管它也是基于“TeX”的。
虽然 TeX在过去的二十多年中没有大的变化,但这并不意味着 TeX是一个僵化的系统。 恰恰相反,TeX开放的设计使得它能够很容易的适应新的要求。
LaTeX 是一个宏包集,其目的是使作者能够利用一个预先定义好的专业页面设置,从而得以高质 量地排版和打印他们的作品。它与TeX可以说是高层和底层的关系。相关的几个名词有:
-
TeX
最基本的 TeX程序只是由一些很原始的命令组成,它们可以完成简单的排版操作和程序设计功能。然而,TeX也允许用这些原始命令定义一些更复杂的高级命令。这样就可以利用低级的块结构,形成一个用户界面相当友好的环境。
在处理器运行期间,该程序首先读取所谓的格式文件,其中包含各种以原始语言写成的高级命令,也包含分割单词的连字号安排模式。接着处理程序就处理源文件,其中包含要处理的真正文本,以及在格式文件中已定义了的格式命令。
创建新格式是一件需要由具有丰富知识程序员来做的事情。把定义写到一个源文件中,这个 文件接着被一个名叫 initex 的特殊版本的 TeX程序处理。它采用一种紧凑的方式存贮这 些新格式,这样就可以被通常 TeX程序很快地读取。
-
Plain TeX
Knuth 设计了一个名叫 Plain TeX的基本格式,以与低层次的原始 TeX呼应。这种格式是用 TeX处理文本时相当基本的部分,以致于我们有时都分不清到底哪条指令是真正的处理程序 TeX的原始命令,哪条是 Plain TeX格式的。大多数声称只使用 TeX的人,实际上指的是只用 Plain TeX。
Plain TeX也是其它格式的基础,这进一步加深了很多人认为 TeX和 Plain TeX是同一事 物的印象。
-
LaTeX
Plain TeX的重点还只是在于如何排版的层次上,而不是从一位作者的观点出发。对它的深层功能的进一步发掘,需要相当丰富的编程技巧。因此它的应用就局限于高级排版和程序设计人员。
Leslie Lamport 开发的 LaTeX 是当今世界上最流行和使用最为广泛的 TeX格式。它构筑在 Plain TeX的基础之上,并加进了很多的功能以使得使用者可以更为方便的利用 TeX的强大功能。使用 LaTeX 基本上不需要使用者自己设计命令和宏等,因为 LaTeX 已经替你做好了。因此,即使使用者并不是很了解 TeX,也可以在短短的时间内生成高质量的文档。对于生成复杂的数学公式,LaTeX 表现的更为出色。
-
LaTeX 2e
LaTeX 自从二十世纪八十年代初问世以来,也在不断的发展。最初的正式版本为 2.09,在经过几年的发展之后,许多新的功能,机制被引入到 LaTeX 中。在享受这些新功能带来的便利的同时,它所伴随的副作用也开始显现,这就是不兼容性。标准的 LaTeX 2.09,引入了“新字体选择框架”(NFSS)的 LaTeX,SLiTeX,AMSLaTeX 等等,相互之间并不兼容。这给使用者和维护者都带来很大的麻烦。
为结束这中糟糕的状况,Frank Mittelbach 等人成立了 LaTeX 3 项目小组,目标是建立一 个最优的,有效的,统一的,标准的命令集合。即得到 LaTeX 的一个新版本 3。这是一个 长期目标,向这个目标迈出第一步就是在 1994 年发布的 LaTeX 2e 。LaTeX 2e 采用了 NFSS 作为标准,加入了很多新的功能,同时还兼容旧的 LaTeX 2.09。LaTeX 2e 每 6 个月更新一 次,修正发现的错误并加入一些新的功能。在 LaTeX 3 最终完成之前,LaTeX 2e 将是标准的 LaTeX 版本。
TeX系统是集成了编译 (La)TeX 文档所需的软件和宏包的系统。常用的包括:
-
MikTeX。MiKTeX 是 Windows 下最好用的 TeX系统。网址: http://www.miktex.org 或 http://miktex.sourceforge.net
-
TeXLive。TeXLive 是由国际 TeX用户组织 TUG 开发的 TeX系统,支持不同的操作系统平台。其 Windows 版本又称 fpTeX , Unix/Linux 版本即著名的 teTeX 。网址:http://tug.org/texlive/
-
CTeX。CTeX 中文套装是基于 Windows 下的 MiKTeX 系统,集成了编辑器 WinEdt 和 PostScript 处理软件 Ghostscript 和 GSview 等主要工具。 CTeX 中文套装在 MiKTeX 的基础上增加了对中文的完整支持。 CTeX 中文套装支持 CJK, xeCJK, CCT, TY 等多种 中文 TeX处理方式。网址:http://www.ctex.org
TeX是一个非常多才多艺的程序。它不但可以编辑论文,书籍,幻灯片,学术杂志,个人简 历,还可以 编辑乐谱,化学分子图,电路图,国际象棋,中国象棋,甚至围棋棋谱,……事实上只有少 量文档不适合用 TeX编辑。