Latex中各种概念的区分

date: 2016.05.11; modification:2016.05.18

目录:

1 名词理解

latex(tex)本身其实并不复杂, 复杂的是各种不同的版本 + 中文环境 + 不同的操作系统版本 (尤其是linux下), 这几点加起来, 就让人头晕了. 比如:

在这里对一些概念试图加以区分. 对于不太想了解这些细节, 只想快速上手的人, 可以忽略本文直接移步:

(对于linux的用户, 如果想快速无障碍的上手, 强烈建议安装texlive-full latex-cjk-all这两个包, 这两个包很大, 不过正因如此, 包含的东西比较多, 所以网上与书上找到的各种例子, 基本上都能跑通. 所以这个空间换时间还是比较值得的.)

但是Mike推荐新手还是大概浏览一下本文, 哪怕有个笼统的印象也好.

下表来自(http://blog.csdn.net/dbzhang800/article/details/6820659)

类型 名词 解释
引擎 (Knuth)TeX 真正的(原始的)TeX
引擎 ε-TeX 相对于原始的TeX它提供了一种扩展模式
引擎 pdfTeX 它从tex文件不通过dvi文件直接生成pdf文件(开发者已经转向LuaTeX)
引擎 LuaTeX 它使用Lua作为扩展语言, 对于LaTeX支持尚不完善?
引擎 XeTeX 相对于原始的TeX, 主要增加了Unicode和 OpenType 的支持
------- ---------------- ---------------------------------------------------------------
宏包 plain TeX 最古老的TeX宏包, 提供了一些最基本的命令
宏包 AMSTeX 是美国数学会提供的一个TeX宏包, 它添加了许多数学符号和数学字体
宏包 LaTeX 相对于PlainTeX, 它使得科技文档的排版更加直观和方便
宏包 ConTeXt 和LaTeX 相比, 它更加灵活和自由
------- ---------------- ---------------------------------------------------------------
发行版 TeX Live 国际TeX用户组织TUG开发,支持不同的操作系统
发行版 MiKTeX Windows 下广泛使用的一个TeX发行版
发行版 ConTeXt Minimals 它包含了最新版本的 ConTeXt
发行版 teTeX 一个Unix下的TeX发行版, 现在已经停止更新且并入TeXLive
发行版 fpTeX 一个Windows的TeX发行版, 已不再更新

那么, 什么叫引擎, 宏包, 发行版呢?

打个不太恰当但是比较直观的比方:

(该列表为Mike个人的理解)

2 稍微具体一些的解释

2.1 PlainTeX(宏包)

原始的TeX已经有了一组宏包, 也就是Knuth所写的著名的Plain TeX(原始的TeX和Plain Tex都是<<The TeXbook>>一书中介绍的内容).

2.2 LaTeX(宏包)

Tex中的一个宏包合, 构成一种与 Plain TeX 不一样的格式. PlainTeX很底层,不够方便, 直观, 于是Leslie Lamport写了另一组宏, 称为LaTeX, 主要是它版本配置和文中内容适度分开处理.

每一个LaTeX 命令实际上最后都会被转换解释成几个甚至上百个TeX 命令. 但是, 普通用户可以无需知道这中间的复杂联系. 就象编程的时候如果使用一些已经编译 好的函数库和模板可以使我们仅仅用几个命令就实现很多功能一样, LaTeX 根据人们排版文章的习惯, 定义了许多命令和模板, 通过这些命令和模板, 我们可以很快的得到漂亮的排版结果.

2.3 ctex(宏包)

ctex宏包提供了一个统一的中文LaTeX文档框架,底层支持CCT, CJK和xeCJK三种中文LaTeX系统.

ctex宏包提供了编写中文LaTeX文档常用的一些宏定义和命令.

主要文件包括ctexart.cls, ctexrep.cls, ctexbook.cls 和 ctex.sty, ctexcap.sty.

对于CJK与xeCJK的来龙去脉, 可以参考这个讨论: 知乎:如何评价xeCJK

2.4 pdfTeX(引擎)

它从tex文件不通过dvi文件直接生成pdf文件(开发者已经转向LuaTeX)

2.5 LuaTeX(引擎)

pdfTeX 的后继是LuaTEX, 这是一种把脚本语言 Lua 和 TeX 结合起来的程序.

2.6 XeTeX(引擎)

是一种使用Unicode的TeX排版引擎, 并支持一些现代字体技术, 例如 OpenType. 其作者和维护者是Jonathan Kew, 并以X11自由软件许可证发布. 它原生的支持Unicode, 并默认其输入文件为UTF-8编码. XeTeX可以在不进行额外配置的情况下直接使用操作系统中安装的字体, 因此可以直接利用OpenType, Graphite中的高级特性, 例如额外的字形, 花体, 合字, 可变的文本粗细等等.

2.7 XeLaTeX(引擎)

是使用LaTeX的排版引擎, 也有上述XeTeX的优点, 命令下直接使用 xelatex ***.tex 就会产生对应的PDF文件.

2.8 更多解释

如果想了解更多的来龙去脉, 请参考刘海洋老师的<<LaTeX入门>>中的 "编译程序" 以及 "文字编码与 Unicode" 这两节. 该书作者好像是CTeX的负责人之一, 所以他写的书比较深入浅出, 尤其是对于这种历史沿革性的内容, 比网上找来的信息看着明白多了.

这里只给出一个简单的参考示意图, 表示他们的发展脉络:

各种tex关系图

各种tex关系图

3 Latex转pdf流程

原始的方式

       latex         dvips        ps2pdf
*.tex ------> *.dvi ------> *.ps -------> *.pdf

dvipdfm(x)方式,少一个.ps 步骤

       latex         dvipdfm
*.tex ------> *.dvi --------> *.pdf

pdflatex或xelatex, 直接生成pdf

       pdflatex
*.tex ---------> *.dvi