xelatex、pdftex、latex 有什么编译上的差别吗?

2019-12-02 15:13发布

不同的编译方式呈现的pdf文件是一样的格式吗? 选择的时候根据什么选择呢? 小白请教 谢谢大家 是这个问题太傻了嘛...没人答呢为啥

不同的编译方式呈现的pdf文件是一样的格式吗? 选择的时候根据什么选择呢? 小白请教 谢谢大家 是这个问题太傻了嘛...没人答呢为啥
4条回答
论坛 github.com/C
2019-12-03 13:59
命令是引擎、格式、输出模式排列组合的结果。 1. `latex` 命令,pdftex 引擎 + latex2e 格式 + dvi 输出模式 1. `pdftex` 命令,pdftex 引擎 + plain tex 格式 + dvi 输出模式 1. `pdflatex` 命令,pdftex 引擎 + latex2e 格式 + pdf 输出模式 1. `xetex` 命令,xetex 引擎 + plain tex 格式(xetex 引擎只有一种输出模式,即输出 `.xdv` 文件,然后由 `xdvipdfmx` 程序转化为 `.pdf` 文件。这个转化过程默认是自动的) 1. `xelatex` 命令,xetex 引擎 + latex2e 格式 引擎的差异在于 primitive、primitive 的语法和功能上有差异,详见相应文档,如 `texdoc pdftex`、`texdoc xetex` 和 `texdoc dvipdfmx`。 格式的差异在于预定义的宏,plain tex 格式是 Knuth _The TeXbook_ 书里介绍的最初格式,latex2e 格式是通常认知和使用的 latex。 输出模式的差异,就是输出为 `.dvi` 还是 `.pdf` 格式的差异。 大多数使用场景,用的都是 latex2e 格式 + pdf 输出模式的组合,差异在于使用的引擎。西文排版,pdftex 功能足够了,所以它用得多一些;中文排版,只有应用 xetex 或 luatex 的独有功能后才更完善,所以有使用 xetex 或 luatex 引擎的需求。另有少数投稿平台,还在使用 pdftex 的 dvi 模式。 如果使用的功能仅限于两个引擎的重合部分,那么用哪个都可以。如果用到了仅某个引擎提供的功能,那么只能用那个引擎。用户通常不直接使用 primitive,而是使用基于 primitive 封装的宏包,所以这种「只能用」的信息往往由宏包文档提供。例如,`xeCJK` 宏包因为使用了仅 xetex 引擎的 char class 功能,所以只支持 `xetex` 引擎。`pdfrender` 因为使用了仅 pdftex(和 luatex)支持的多个色彩栈(color stack)功能,所以只支持 pdftex(和 luatex)引擎。

一周热门 更多>