PDFLaTex-XeLatex-PDFTex-XeTex等区别

时间:2023-02-04 18:25:00

前言

在接触TeX两年之后,依然对于TeX的一些术语之间的关系表示不解。比如LaTeX、pdfLaTeX、XeLaTeX、TeX Live、CTeX等等。这些术语究竟代表什么?它们之间是怎样的关系?

TeX

首先是一种宏语言,同时其也是一种排版引擎。基本的TeX系统只有300多个元命令 (primitive) ,十分精悍,但是很难读懂。

引擎

引擎是真正干活的程序。引擎的基本功能就是解释TeX语法,把字排成行,把行排成页,涉及到断字、断行、分页等算法。最原始的引擎是TeX。

  • TeX:1978年由Donald Erwin Knuth开发。是后来大部分TeX相关的基础。其生成dvi文件,然后经由其他程序转换为pdf文件。

  • pdfTeX:Tex语言的又一个实现,将TeX代码直接编译成PDF文件。

  • XeTeX:TeX 语言的新的实现,支持 Unicode 编码和直接访问操作系统字体。

  • LuaTeX:TeX 语言的一个完整的有扩展的实现。LuaTeX支持Unicode、系统字体和内嵌语言扩展,能直接输出PDF格式文件,也可以仍然输出 DVI 格式。

格式

TeX语言本身只有300个命令,晦涩难懂,只适合非正常的人类。一个简单的符号可能就需要多个命令来实现,可以将这些最基本的命令封装起来做个简写(宏)以实现特殊的目的。一堆简写的合集就构成了格式。格式可以与不同的引擎相结合。

  • Plain TeX:由Don Knuth提供的最小的宏集合。

  • LaTeX:更易于使用的宏集,最常见的一种格式。

  • ConTeXt:另一种常见的格式。

宏包

一些辅助文件,在LaTeX中叫做packages,在ConTeXt中叫做modules。在LaTeX格式中,导言区的\usepackage的作用就是引入各种宏包。宏包其实也是一堆基本的TeX命令的集合,只是其不够全,所以称之为宏包而不是格式。

发行版

一个完整的TeX需要最基本的TeX引擎、格式支持、各种辅助宏包、一些转换程序、GUI、编辑器、文档查看器等等。通过选择不同的组合就构成了不同的发行版。

  • TeX Live:支持Linux,Windows,Mac OS

  • MiKTeX:只支持Windows

  • CTeX:CTeX基于MiKTeX,并加入了中文的支持,只支持Windows。同时CTEX是一个网站,ctex是可以很好支持中文的宏包。

相关命令

在介绍了引擎以及格式之后,二者不同的搭配方式需要调用不同的命令:

PDFLaTex-XeLatex-PDFTex-XeTex等区别

小结

目前最常用的引擎是pdfTeX和XeTeX,其中XeTeX可以很好的支持中文,因而受到国人的青睐。格式方面LaTeX当仁不让。所以目前比较流行的编译命令是xelatex,同时在中文支持方面,几年前是CJK宏包,现在是ctex宏包。

参考文章

各种Tex解释

TeX:一种宏语言。

Plain Tex: Tex中的一个最基本的宏集合与TeX的基础语言构成的一种格式。

LaTex: Tex中的一个宏集合,构成一种与 Plain TeX 不一样的格式。

Tex程序:把Tex语言转换为排版的程序,也叫Tex。为区别,称这个 TeX 程序叫Knuth TeX。

tex命令:Tex程序中的编译命令。tex命令默认用Plain TeX格式进行排版。也就是说tex命令后面默认跟的tex文件应该是用Plain Tex格式写的。

latex命令:tex命令加上某一个选项使用,就会用LaTeX 格式进行排版,也就是说此时后面跟的tex文件应该是用LaTex格式写的。为方便,就把tex 命令与对应编译选项合成为一个命令,叫latex命令。

ε-TeX 程序:Knuth TeX程序的一个扩展,也是一个程序,一般写成 eTeX。增加了少量的几个命令,但一般来说是与Knuth TeX程序没有太多区别的。

PDFTeX程序:Tex语言的一个实现,也就是把Tex语言转换为排版的一个程序。它会把TeX 语言写的代码直接编译成 PDF文件。

PDFLaTeX命令:PDFTeX程序中的命令,用来编译用LaTeX格式写的tex文件。

XeTeX程序:TeX语言的新的实现,即把Tex语言转换为排版的一个新程序。支持Unicode编码和直接访问操作系统字体。

XeLaTeX命令:XeTeX程序中的命令,用来编译用LaTeX格式写的tex文件。

实现:在文中的意思就是指“程序”的意思。如文中:eTeX程序和 Knuth TeX 都是TeX语言的一个实现(也就是说,eTeX 程序和 Knuth TeX 都是把TeX语言转换为排版的程序。程序作用于tex文本文件,把tex文件编译成dvi文件)。

Reference 1

Reference 2