Skip to content
GeneGi edited this page Mar 23, 2016 · 2 revisions

漫谈(La)TeX

TeX 的诞生与发展

七十年代末,Donald E. Knuth(高德纳)在看到其多卷巨著“The Art of Computer Programming”第二卷的校样时,对由计算机排版的校样的低质量感到无法忍受。因此决定自 己来开发一个高质量的计算机排版系统,这样就有了 TeX。

TeX的源程序是用 Pascal 写成的,原因是 Knuth 希望 TeX尽可能方便地移植到其它 的操作系统中去。当时 Pascal 是最适合于这一要求的编程语言。这也使得 TeX现在已经 在几乎所有的计算机系统中得到实现。

TeX的另一个重要的特征就是它的输出是与设备无关的。TeX的输出文件称为 DVI 文 件,即是“Device Independent”。一旦 TeX处理了你的文件,你所得到的 DVI 文件就可 以被送到任何输出设备如打印机,屏幕等并且总会得到相同的结果,而这与这些输出设备的 限制没有任何关系。这说明 DVI 文件中所有的元素,从页面设置到文本中字符的位置都被 固定,不能更改。

TeX趣事

TeX与 π

TeX的第一版于 1978 年面世。在经过了不断的改进后,1982 年版的 TeX是一个十分 稳定的版本。从此以后,TeX没有较大的变动,只有很少部分的改进和错误修正。现在几乎 所有的操作系统平台下,都有相应的 TeX软件,而且用它们排版同一个文件得到的输出结 果是相同的。TeX目前的版本是 3.1415926,很接近圆周率π。每有一新的版本,就会加上 一个π的小数点后的数。所以我们已经知道下一版本的 TeX是 3.14159265,最终将收敛到 π。这也代表了 TeX不断追求完美的理想。

TeX支票

Knuth 用他自己设计的“文学编程语言” 写了TeX的代码,到了正式发行的时候,他非常自 信的奖励 $ 1.28 给第一个发现 bug 的人,以后每发现一个 bug, 奖金都会翻倍,最多 $ 327.68。后来由于加入了对8字节字符的支持,产生了一些小 bug。从1995年到现在,总 共只发现一个 bug. 发现 bug 的周期越来越长,而且后来的 bug 都是一些在挑剔的人找出 来的一些“美学”上的问题了。但是严谨的 Knuth 仍然把它们作为 bug 处理。国内的王垠 就曾获得他的两张支票。

冰冻TeX

TeX现在已经被它的开发者 Knuth 所“冰封”(frozen),新版本的 TeX只有少许改进 和错误修正。这些变动必须保证不会使得即使是写于 1982 年的 TeX文档无法编译,TeX自带了测试文件来确保这一点。如果测试文件文件的输出结果不同于预定的结果,那么这个 排版系统就不能够被称为“TeX”。所以像一些对 TeX有很大改进的软件,如“Omega”等 将不能被称为“TeX”,尽管它也是基于“TeX”的。

虽然 TeX在过去的二十多年中没有大的变化,但这并不意味着 TeX是一个僵化的系统。 恰恰相反,TeX开放的设计使得它能够很容易的适应新的要求。

TeX 和LaTeX

LaTeX 是一个宏包集,其目的是使作者能够利用一个预先定义好的专业页面设置,从而得以高质 量地排版和打印他们的作品。它与TeX可以说是高层和底层的关系。相关的几个名词有:

  1. TeX

    最基本的 TeX程序只是由一些很原始的命令组成,它们可以完成简单的排版操作和程序设计功能。然而,TeX也允许用这些原始命令定义一些更复杂的高级命令。这样就可以利用低级的块结构,形成一个用户界面相当友好的环境。

    在处理器运行期间,该程序首先读取所谓的格式文件,其中包含各种以原始语言写成的高级命令,也包含分割单词的连字号安排模式。接着处理程序就处理源文件,其中包含要处理的真正文本,以及在格式文件中已定义了的格式命令。

    创建新格式是一件需要由具有丰富知识程序员来做的事情。把定义写到一个源文件中,这个 文件接着被一个名叫 initex 的特殊版本的 TeX程序处理。它采用一种紧凑的方式存贮这 些新格式,这样就可以被通常 TeX程序很快地读取。

  2. Plain TeX

    Knuth 设计了一个名叫 Plain TeX的基本格式,以与低层次的原始 TeX呼应。这种格式是用 TeX处理文本时相当基本的部分,以致于我们有时都分不清到底哪条指令是真正的处理程序 TeX的原始命令,哪条是 Plain TeX格式的。大多数声称只使用 TeX的人,实际上指的是只用 Plain TeX。

    Plain TeX也是其它格式的基础,这进一步加深了很多人认为 TeX和 Plain TeX是同一事 物的印象。

  3. LaTeX

    Plain TeX的重点还只是在于如何排版的层次上,而不是从一位作者的观点出发。对它的深层功能的进一步发掘,需要相当丰富的编程技巧。因此它的应用就局限于高级排版和程序设计人员。

    Leslie Lamport 开发的 LaTeX 是当今世界上最流行和使用最为广泛的 TeX格式。它构筑在 Plain TeX的基础之上,并加进了很多的功能以使得使用者可以更为方便的利用 TeX的强大功能。使用 LaTeX 基本上不需要使用者自己设计命令和宏等,因为 LaTeX 已经替你做好了。因此,即使使用者并不是很了解 TeX,也可以在短短的时间内生成高质量的文档。对于生成复杂的数学公式,LaTeX 表现的更为出色。

  4. 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系统

TeX系统是集成了编译 (La)TeX 文档所需的软件和宏包的系统。常用的包括:

  1. MikTeX。MiKTeX 是 Windows 下最好用的 TeX系统。网址: http://www.miktex.orghttp://miktex.sourceforge.net

  2. TeXLive。TeXLive 是由国际 TeX用户组织 TUG 开发的 TeX系统,支持不同的操作系统平台。其 Windows 版本又称 fpTeX , Unix/Linux 版本即著名的 teTeX 。网址:http://tug.org/texlive/

  3. CTeX。CTeX 中文套装是基于 Windows 下的 MiKTeX 系统,集成了编辑器 WinEdt 和 PostScript 处理软件 Ghostscript 和 GSview 等主要工具。 CTeX 中文套装在 MiKTeX 的基础上增加了对中文的完整支持。 CTeX 中文套装支持 CJK, xeCJK, CCT, TY 等多种 中文 TeX处理方式。网址:http://www.ctex.org

TeX除了编辑论文还能做什么?

TeX是一个非常多才多艺的程序。它不但可以编辑论文,书籍,幻灯片,学术杂志,个人简 历,还可以 编辑乐谱,化学分子图,电路图,国际象棋,中国象棋,甚至围棋棋谱,……事实上只有少 量文档不适合用 TeX编辑。