从http://www.tug.org/levels.html
引擎:TeX、pdfTeX、XeTeX、LuaTeX……这些是实现不同 TeX 方言的实际可执行二进制文件。LaTeX 格式由 pdfTeX(pdflatex) 和 XeTeX (xelatex) 引擎。当有人说“TeX 找不到我的字体”时,他们通常指的是引擎。
格式:LaTeX、纯 TeX、pdfLaTeX……这些是基于 TeX 的语言,您实际上用它们来编写文档。当有人说“TeX 给我这个神秘的错误”时,他们通常指的是格式。
从高层次上讲,使用的输出格式取决于您调用的程序。如果您运行 latex(实现 LaTeX 格式),您将获得 DVI;如果您运行pdflatex(它也实现了 LaTeX 格式),您将获得 PDF。
pdflatex 是引擎还是格式?
pdflatex 和 pdftex 有什么关系?
谢谢!
答案1
在评论中,我列出了我在 texlive 2012 安装中默认安装的所有“latex”格式。
texmf-var/web2c/eptex/platex.fmt
texmf-var/web2c/euptex/uplatex.fmt
texmf-var/web2c/luatex/dvilualatex.fmt
texmf-var/web2c/luatex/lualatex.fmt
texmf-var/web2c/pdftex/cslatex.fmt
texmf-var/web2c/pdftex/latex.fmt
texmf-var/web2c/pdftex/mllatex.fmt
texmf-var/web2c/pdftex/pdfcslatex.fmt
texmf-var/web2c/pdftex/pdflatex.fmt
texmf-var/web2c/xetex/xelatex.fmt
但必须小心,因为它们并非都是“乳胶”,因为它们并非是未修改的乳胶宏集的编译版本。
我相信latex.fmt
,pdflatex.fmt
唯一的不同之处在于,同一个latex.ltx
文件分别用 tex 和 pdftex 转储。(实际上,latex.fmt
现在用 dvi etex 模式的 pdftex 转储,而不是经典 tex)但例如,cslatex
是一种不同的格式,通过编译 tex 宏来制作
/usr/local/texlive/2012/texmf-dist/tex/cslatex/base/cslatex.ini
如果我没记错的话,这个文件做了一些定义,设置了非标准编码机制,然后输入了标准 latex。这一切都是公开的,正如预期的那样,你可以对 latex 源做任何你想做的事情,除了调用更改后的副本 latex(如果你读了小字,你甚至可以这样做,如果你声称你必须这样做)pdfcslatex.fmt
当然是与此相同的源,但用 pdftex 转储。我需要检查一下,但我认为 xelatex 和 lulatex 格式同样对标准 latex 宏做了一些小的(或不那么小的)添加,并分别被 xetex 和 luatex 引擎转储。
答案2
pdflatex
是一个终端命令,它告诉pdfTeX
引擎使用该LaTeX
格式。
更正
严格来说,pdflatex
加载pdfLaTeX
格式,但就用户而言,这与格式相同LaTeX
。使用时可用的附加命令pdflatex
(大多以 开头\pdf
)由引擎提供pdfTeX
,而不是格式。