TeX_0
TeX 提供了一套功能强大并且十分灵活的排版语言,它多达 900 多条指令,并且 TeX 有宏功能,用户可以不断地定义自己适用的新命令来扩展 TeX 系统的功能。许多人利用 TeX 提供的宏定义功能对 TeX 进行了二次开发,其中比较著名的有美国数学学会推荐的非常适合于数学家使用的 AMS-TeX 以及适合于一般文章、报告、书籍的 LaTeX 系统。
TeX 系统是公认的数学公式排得最好的系统。美国数学学会(AMS) 鼓励数学家们使用 TeX 系统向它的期刊投稿。世界上许多一流的出版社如 Kluwer、Addison-Wesley、牛津大学出版社等也利用 TeX 系统出版书籍和期刊。
大部分的 TeX 系统都是免费的。Knuth 教授还公开了他的全部源程序。TeX 系统目前已经在数百种计算机系统上得到实现。TeX 系统的排版结果 DVI—eVice Independent)文件与输出设备无关。DVI 文件可以显示、打印、照排,几乎可以在所有的输出设备上输出。TeX 排版源文件及结果在各种计算机系统上互相兼容。
TeX 的历史
七十年代末,Donald E. Knuth(高德纳) 在看到其多卷巨著“The Art of Computer Programming”第二卷的校样时,对由计算机排版的校样的低质量感到无法忍受。因此决定自己来开发一个高质量的计算机排版系统,这样就有了 TeX 。
TeX 的第一版于 1978 年面世。在经过了不断的改进后,1982 年版的 TeX 是一个十分稳定的版本。从此以后,TeX 没有较大的变动,只有很少部分的改进和错误修正。现在几乎所有的操作系统平台下,都有相应的 TeX 软件,而且用它们排版同一个文件得到的输出结果是相同的。TeX 目前的版本是 3.141592,很接近圆周率π。每有一新的版本,就会加上一个π的小数点后的数。所以我们已经知道下一版本的 TeX 是 3.1415926,最终将收敛到π。这也代表了 TeX 不断追求完美的理想。
TeX 的源程序是用 Pascal 写成的,原因是 Knuth 希望 TeX 尽可能方便地移植到其它的操作系统中去。当时 Pascal 是最适合于这一要求的编程语言。这也使得 TeX 现在已经在几乎所有的计算机系统中得到实现。
TeX 的另一个重要的特征就是它的输出是与设备无关的。TeX 的输出文件称为 DVI 文件,即是“Device Independent”。一旦 TeX 处理了你的文件,你所得到的 DVI 文件就可以被送到任何输出设备如打印机,屏幕等并且总会得到相同的结果,而这与这些输出设备的限制没有任何关系。这说明 DVI 文件中所有的元素,从页面设置到文本中字符的位置都被固定,不能更改。
TeX 现在已经被它的开发者 Knuth 所“冰封”(frozen),新版本的 TeX 只有少许改进和错误修正。这些变动必须保证不会使得即使是写于 1982 年的 TeX 文档无法编译,TeX 自带了测试文件来确保这一点。如果测试文件文件的输出结果不同于预定的结果,那么这个排版系统就不能够被称为“TeX”。所以像一些对 TeX 有很大改进的软件,如“Omega”等将不能被称为“TeX”,尽管它也是基于“TeX”的。
在设计 TeX 的同时,Knuth 还设计了一个字体生成程序 MetaFont。MetaFont 是独立于 TeX 之外的,但又与 TeX 有着非常密切的联系。MetaFont 生成的只是位图字体,当对字体进行缩放时的效果不佳。对于如何得到像 Type1 字体一样的轮廓字体,现在还在研究之中。与 TeX 一样,Knuth 也“冰封”了 MetaFont 。所以 MetaFont 的进一步的改进和发展将会由其他人来完成,而且名字也将不再是 MetaFont 。
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 表现的更为出色。
LaTeX2e
LaTeX 自从二十世纪八十年代初问世以来,也在不断的发展。最初的正式版本为 2.09,在经过几年的发展之后,许多新的功能,机制被引入到 LaTeX 中。在享受这些新功能带来的便利的同时,它所伴随的副作用也开始显现,这就是不兼容性。标准的 LaTeX 2.09,引入了“新字体选择框架”(NFSS)的 LaTeX,SLiTeX,AMSLaTeX 等等,相互之间并不兼容。这给使用者和维护者都带来很大的麻烦。
为结束这中糟糕的状况,Frank Mittelbach 等人成立了 LaTeX3 项目小组,目标是建立一个最优的,有效的,统一的,标准的命令集合。即得到 LaTeX 的一个新版本 3。这是一个长期目标,向这个目标迈出第一步就是在 1994 年发布的 LaTeX2e 。LaTeX2e 采用了 NFSS 作为标准,加入了很多新的功能,同时还兼容旧的 LaTeX 2.09。LaTeX2e 每 6 个月更新一次,修正发现的错误并加入一些新的功能。在 LaTeX3 最终完成之前,LaTeX2e 将是标准的 LaTeX 版本。