TeX 家族(TeX, XeTeX, LuaTeX,XeLaTeX …看完这篇就懂了)
名词一览
TeX
TeX是由著名的计算机科学家Donald E. Knuth(高德纳)发明的排版系统,利用TeX可以很容易地生成高质量的dvi文件,打印输出。利用dvips,dvipdfmx,pdfLaTeX等程序生成pdf,ps文件,LaTeX2html生成html文件。 它在学术界十分流行,特别是数学、物理学、统计学与计算机科学界。TeX被普遍认为是一个很好的排版工具,特别是在处理复杂的数学公式时。利用诸如是LaTeX等终端软件,TeX就能够排版出精美的文本。通过CTAN上的宏包可以扩展其功能,可以作幻灯片,定义模板。中文支持可以由CCT、CJK、ctex等来完成。
TeX系统是公认的数学公式排得最好的系统。美国数学学会(AMS)鼓励数学家们使用TeX系统向它的期刊投稿。世界上许多一流的出版社如 Kluwer、Addison-Wesley、牛津大学出版社等也利用TeX系统出版书籍和期刊。
LaTeX
LaTeX(LATEX,音译“拉泰赫”)是一种基于ΤΕΧ的排版系统,由美国计算机学家莱斯利·兰伯特(Leslie Lamport)在20世纪80年代初期开发,利用这种格式,即使使用者没有排版和程序设计的知识也可以充分发挥由TeX所提供的强大功能,能在几天、甚至几小时内生成很多具有书籍质量的印刷品。对于生成复杂表格和数学公式,这一点表现得尤为突出。因此它非常适用于生成高印刷质量的科技和数学类文档。这个系统同样适用于生成从简单的信件到完整书籍的所有其他种类的文档。
原始的TeX已经有了一组宏集,也就是Knuth所写的著名的Plain TeX(原始的TeX和Plain Tex都是《The TeXbook 》一书中介绍的内容)。
但是这些命令仍然很底层,不够方便、直观,于是Leslie Lamport写了另一组宏,称为LaTeX,主要是它版本配置和文中内容适度分开处理。
LATEX是对TEX的封装和拓展,实际上就是用TEX语言编写的一组宏代码,拥有比原来TEX格式(Plain TEX)更为规范的命令和一整套预定义的格式,隐藏了不少排版方面的细节,可以让完全不懂排版理论的学者们也可以比较容易地将书籍和文稿排版出来
pdfTeX - pdfLaTeX
TeX 系统生成的文件是 dvi 格式,虽然可以用其他程序将其转换为例如 pdf 等更为常见的格式,但是毕竟不方便。
dvi 格式是为了排版而产生的,它本身并不支持所谓的「交叉引用」,pdfTeX 直接输出 pdf 格式的文档,这也是 pdfTeX 相对 TeX 进步(易用性方面)的地方。
为了解决这个问题,Hàn Thế Thành 博士在他的博士论文中提出了 pdfTeX 这个对 TeX 引擎的扩展。二者最主要的差别就是 pdfTeX 直接输出 pdf 格式文档,而 TeX 引擎则输出 dvi 格式的文档。
pdfTeX 的信息可以查看wiki.
pdfLaTeX 这个程序的主要工作依旧是将 LaTeX 格式的文档进行解释,不过此次是将解释之后的结果交付给 pdfTeX 引擎处理。
XeTeX - XeLaTeX
高德纳教授在实现 TeX 的当初并没有考虑到中日韩等字符的处理,而只支持 ASCII 字符。这并不是说中日韩字符就无法使用 TeX 引擎排版了,事实上 TeX 将每个字符用一个框包括起来(这被称为盒子)然后将一个个的盒子按照一定规则排列起来,因而 TeX 的算法理论上适用于任何字符。ASCII 字符简单理解,就是在半角模式下你的键盘能直接输出的字符。
在 XeTeX 出现之前,为了能让 TeX 系统排版中文,国人曾使用了 天元、CCT、CJK 等手段处理中文。其中 天元和CCT 现在已经基本不用,CJK 因为使用时间长且效果相对较好,现在还有人使用。
不同于 CJK 等方式使用 TeX 和 pdfTeX 这两个不直接支持 Unicode 字符的引擎,XeTeX 引擎直接支持 Unicode 字符。也就是说现在不使用 CJK 也能排版中日韩文的文档了,并且这种方式要比之前的方式更加优秀。
XeLaTeX 和 XeTeX 的关系与 pdfLaTeX 和 pdfTeX 的关系类似,这里不再赘述。
使用 XeTeX 引擎需要使用 UTF-8 编码。
所谓编码就是字符在计算机储存时候的对应关系。例如,假设有一种编码,将汉字「你」对应为数字「1」;「好」对应为数字「2」,则含有「你好」的纯文本文件,在计算机中储存为「12」(读取文件的时候,将「12」再转换为「你好」显示在屏幕上或打印出来)。 UTF-8 编码是 Unicode 编码的一种,可以参考它的 wiki.
LuaTeX
LuaTeX 是正在开发完善的一个 TeX 引擎,相对它的前辈们还相当的不完善,这里不赘述。
CTeX - MiKTeX - TeX Live
之前介绍了 TeX, LaTeX, pdfTeX, pdfLaTeX, XeTeX, XeLaTeX, LuaTeX 等,他们都是 TeX 家族的一部分。但是作为一个能够使用的 TeX 系统,仅仅有他们还是不够的。CTeX, MiKTeX, TeX Live 都是被称为「发行」的软件合集。他们包括了上述各种引擎的可执行程序,以及一些文档类、模板、字体文件、辅助程序等等。其中 CTeX 是建立在 MiKTeX 的基础之上的。
总结
TeX - pdfTeX - XeTeX - LuaTeX 都是排版引擎,按照先进程度递增(LuaTeX 尚未完善)。
LaTeX 是一种格式,基于 TeX 格式定义了很多更方便使用的控制命令。上述四个引擎都有对应的程序将 LaTeX 格式解释成引擎能处理的内容。
CTeX, MiKTeX, TeX Live 都是 TeX 的发行,他们是许许多多东西的集合。
参考资料: