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 |
|---|---|---|
直接 / Direct | pdflatex、lualatex、xelatex | 一步 |
DVI 経由 / Via DVI | latex、(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驱动会自动判定
graphicx、color、hyperref 等包需要知道输出驱动(pdftex、luatex、xetex、dvipdfmx、dvips、dvisvgm),才能发出正确的底层命令。好在它们会根据编译方式自动判定。因此不要手动指定驱动选项;手动指定反而容易造成冲突。用正确的命令编译即可。
该用哪条路线
- 以英文为主、想快速完成 → 直接路线(
pdflatex)。 - 系统字体、Unicode、直接 PDF →
lualatex/xelatex(直接路线)。 - 日文((u)platex) → 经由 DVI(
dvipdfmx)。 - 大量旧 EPS 资产 → 经由 DVI(Ghostscript 读取),或在直接路线中用
epstopdf转成 PDF。