生成 PDF (pdfTeX / dvipdfmx)

LaTeX 的构建最终会得到 PDF,但到达 PDF 有两条路:直接生成(pdfTeX / LuaTeX / XeTeX 写出 PDF)和经由 DVI(latex / (u)platex → dvipdfmx)。选择哪条路线会影响可插入的图像格式等。本页说明这两条路线及其差异(命令本身见“编译命令”和“DVI 转换”)。

通往 PDF 的两条路线

直接路线中,pdflatex(pdfTeX)、lualatex(LuaTeX)和 xelatex(XeTeX,内部经由 .xdv)会一步写出 PDF。在 DVI 路线中,latex 或日文环境的 (u)platex 先生成 DVI,再由 dvipdfmx 转成 PDF(两步)。日文的 (u)platex 通常走这条路线。

路线命令到 PDF
直接 / Directpdflatex、lualatex、xelatex一步
DVI 経由 / Via DVIlatex、(u)platex → dvipdfmx两步

图像格式会随路线而变

这是日常使用中最容易遇到的差异。直接路线(pdfTeX / LuaTeX) 可插入 PDF、PNG、JPEG,但 EPS 不能直接使用;需要先用 epstopdf(同名包,或通过 --shell-escape 自动转换)转成 PDF。DVI 路线(dvipdfmx) 除了 PNG/JPEG/PDF,也能在后台调用 Ghostscript 来读入 EPS。如果旧工作流里有大量 EPS,DVI 路线会更自然。

latex
\usepackage{graphicx}
\includegraphics{figure.png}   % 直接経路: PDF/PNG/JPEG / direct route: PDF/PNG/JPEG

驱动会自动判定

graphicxcolorhyperref 等包需要知道输出驱动pdftexluatexxetexdvipdfmxdvipsdvisvgm),才能发出正确的底层命令。好在它们会根据编译方式自动判定。因此不要手动指定驱动选项;手动指定反而容易造成冲突。用正确的命令编译即可。

该用哪条路线

  • 以英文为主、想快速完成 → 直接路线(pdflatex)。
  • 系统字体、Unicode、直接 PDFlualatex / xelatex(直接路线)。
  • 日文((u)platex) → 经由 DVI(dvipdfmx)。
  • 大量旧 EPS 资产 → 经由 DVI(Ghostscript 读取),或在直接路线中用 epstopdf 转成 PDF。