TeX

TeX 简介

  电子排版系统的出现给印刷出版业带来了一场革命,利用电子计算机及各种辅助设备,可以完成从文稿、图表的录入、编辑、修改、组版,直至得到各种不同用途、不同质量的输出结果。利用电子排版系统,可以减轻劳动强度,缩短出版周期。

  目前世界上有许多电子排版系统。这些系统各有特点,也各有自己的适用范围。TeX 就是一种优秀的电子排版系统。

  TeX 提供了一套功能强大并且十分灵活的排版语言,它多达 900 多条指令,并且 TeX 有宏功能,用户可以不断地定义自己适用的新命令来扩展 TeX 系统的功能。许多人利用 TeX 提供的宏定义功能对 TeX 进行了二次开发,其中比较著名的有美国数学学会推荐的非常适合于数学家使用的 AMS-TeX 以及适合于一般文章、报告、书籍的 LaTeX 系统。

  TeX 系统是公认的数学公式排得最好的系统。美国数学学会(AMS) 鼓励数学家们使用 TeX 系统向它的期刊投稿。世界上许多一流的出版社如 Kluwer、Addison-Wesley、牛津大学出版社等也利用 TeX 系统出版书籍和期刊。

  大部分的 TeX 系统都是免费的。Knuth 教授还公开了他的全部源程序。TeX 系统目前已经在数百种计算机系统上得到实现。TeX 系统的排版结果 DVI(DeVice Independent)文件与输出设备无关。DVI 文件可以显示、打印、照排,几乎可以在所有的输出设备上输出。TeX 排版源文件及结果在各种计算机系统上互相兼容。


TeX 的历史

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

  TeX 的名字是由大写的希腊字母“tec”(tau, epsilon, chi)组成。在希腊语中这个词的意思是“科技”和“艺术”,这也解释了它的发音。“T”和“E”就像在“technology”中的发音一样,而“x”的发音类似于苏格兰语单词“loch”或德语单词“ach”中的“ch”,也类似于西班牙语中的“j”或俄语中的“kh”。TeX 标志为 TEX ,这三个字母相靠得很近,而且中间的那个 E 有点儿下沉。但在无格式文件中,就写为 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 是一个僵化的系统。恰恰相反,TeX 开放的设计使得它能够很容易的适应新的要求。例如,在没有改动内核的情形下,TeX 很容易地实现了对 PostScript 字体和外部图形的支持。TeX 还是第一个能够自动生成 HTML 的字处理软件。最近,TeX 又开始增加了在不借助其它工具(如 Adobe Distiller)的条件下生成 PDF 的扩展功能。下面列出的几个项目都是正在进行中,对 TeX 的功能进行了扩展。

PDFTeX
完全兼容标准的 TeX ,但能够给出 PDF 输出。它也可以输出标准的 DVI 。
e-TeX
不仅完全兼容标准的 TeX ,还支持一种“扩展模式”。在“扩展模式”中引入了许多新的特性和增强功能。这些新的特性和增强功能提供了更好的编程工具和对输出的控制。
Omega
这是一个几乎是完全重新写过的,支持 Unicode 的 TeX 程序。Omega 有很多特征都超出了 Knuth 对 TeX 的原始设想。它采用了与 TeX 不同的方法来处理字符,使得可以处理非拉丁语系的文本。也支持从右到左,从上到下的排版方式。
NTS
NTS 代表“New Typesetting System”。Knuth 已经停止发展 TeX,并决定任何超越 TeX 的扩展都不能被称为 TeX 。NTS 现在还只是一些对于 TeX 的后续继承者的设想和概念的集合,还不是一个实际上的系统。自然,NTS 会继承 TeX 的绝大部分让我们热爱的特征,并且在很多方面对其加以发展。NTS 可能最终会取代 TeX 或 e-TeX。
MLTeX
这个 TeX 的扩展引入了命令 charsubdef,使得可以更为简单方便的使用 8 bit 字符。不过,与 e-TeX 相比,这只是一个微小的改进。

TeX 的优点

  在一个充斥着“所见即所得”(WYSIWSG)桌面出版软件的情况下来使用 TeX 确是有点令人奇怪。但是,在某些情形下,你会感到 TeX 是最好的,甚至是唯一适合的系统。

  首先我们来看一下 TeX 的优势所在:

  1. 高质量的输出 TeX 遵循传统的排版规则,以排版的质量为最重要的目标。如果你把 TeX 的输出结果和用其它的排版软件排版相同的文本所得到的结果加以比较,你就会发现其中的区别。
  2. 超常的稳定性 自从 TeX 出现以来,只有一些微小的改动。也就是说,十几年前的 TeX 文件用现在的 TeX 系统排版得到的结果与十几年前得到的结果是一样的。稳定性还体现在 TeX 系统极少会崩溃,可以处理任意大小的文件,即使你的计算机的内存很少,TeX 也可自如的工作。
  3. TeX 是可编程的 TeX 是一种宏命令编程语言。你可以用很少的命令来完成非常复杂的工作。如果需要的话,你也可以重新定义 TeX 的所有命令来得到特殊的效果。
  4. 高度的灵活性 TeX 自从出现以来其内核只有微小的改动。但是由于其内核的设计方式,世界上的 TeX 使用者可以让 TeX 做几乎任何工作。你可以用 TeX 来排版英文文本,也可以排版德文,俄文,中文等多种语言。你还可以用 TeX 来排版乐谱,象棋,围棋棋谱等等。
  5. 简单方便 TeX 文档是 ASCII 码的文本文件。因此,即使你手边没有 TeX 系统,你也可以看懂绝大部分的内容。TeX 文件的这种特点使得它占用很少的存储空间,也可以很方便的用 email 来传输。
  6. 良好的通用性 目前为止,TeX 几乎在所有的计算机操作系统平台上得到实现。如:Atari,Apple,Macintosh,Unix,VMS,MS-DOS,MS-Windows 和 OS/2 等等。TeX 的源文件可在不同的平台之间自由的交换,而得到的输出是完全相同的。
  7. 低廉的价格 TeX 是免费软件,它的源程序也是免费的。你可能仅仅需要支付邮费,甚至于一分不花地得到适合你的 TeX 系统。世界上有很多非常好的 TeX 免费软件如:teTeX,MikTeX,fpTeX 等等。同时也有一些具有各自特点(如或多或少的所见即所得特性的)和提供专家级帮助系统的商业版本。
  8. 超级技术支持 由于 TeX 并不是被某个公司所垄断开发,所以世界各地的使用者设计了统一的技术支持的方式。这通常是通过因特网以 email, WWW, Usenet 或 Ftp 的方式来提供,有时也可能通过电话或传真的方式。绝大多数情况下这些技术支持都是免费的,这也是 TeX 的精神。
  9. TeX 是一种乐趣 使用 TeX 不仅仅是一种工作手段,也是一种乐趣。它有挑战,也有荣誉。很多人在熟悉了 TeX 之后都开始把使用 TeX 作为一种爱好,而不是一件枯燥无味的劳动。

TeX 的不足

  在展示了 TeX 的优秀之处后,也得承认 TeX 也有一些不足的地方:

  1. TeX 不是在一个下午就能完全学会的,除非你是一个真正的天才。当你开始学习并使用它的时候,你将会不停的去翻看 TeX 的参考手册来寻找一个 TeX 命令。你也会发现 TeX 常常不理会你键入的命令,还给出一个让你感到迷惑的错误讯息。这一切都说明了掌握 TeX 需要一个比较长而且艰难的学习过程。TeX 的一些扩展如 LaTeX 则要相对简单的多,使用起来也比 TeX 方便,一个新手完全可以在一个下午或者更短的时间内学会开始使用 LaTeX 。
  2. 当发生错误的时候,TeX 会给出一些信息来提示你。但很多情况下并不足以是你迅速准确的找到错误之所在。尤其对刚刚开始学习的新手来说更是如此。
  3. 像 TeX 这种宏语言不同于其它的计算机语言,如 C,Pascal 等,大多数人并不了解。因此,当你想要写自己的宏命令时,你需要对 TeX 有比较深入的了解才能写出牢固可靠的宏命令。
  4. TeX 不是所见即所得的。尽管市场上有些近似于所见即所得的商业版本,但即使与最普通的字处理软件比,也还是有不小的差距。