PDF の生成(pdfTeX / dvipdfmx)

LaTeX のビルドは最終的に PDF になりますが、そこへ至る道は 2 つあります——直接(pdfTeX/LuaTeX/XeTeX が PDF を書き出す)と、DVI 経由(latex/(u)platex → dvipdfmx)。どちらを通るかで、使える図の形式 などが変わります。このページは 2 経路とその違いを説明します(コマンド自体は「コンパイルコマンド」「DVI 変換」を参照)。

PDF への 2 つの経路

直接経路 では、pdflatex(pdfTeX)・lualatex(LuaTeX)・xelatex(XeTeX、内部で .xdv を経由)が PDF を 1 ステップで出力します。DVI 経由 では、latex や日本語の (u)platex がまず DVI を作り、それを dvipdfmx が PDF に変換します(2 ステップ)。日本語の (u)platex は基本この経路です。

経路コマンドPDF まで
直接 / Directpdflatex・lualatex・xelatex1 ステップ
DVI 経由 / Via DVIlatex・(u)platex → dvipdfmx2 ステップ

図の形式が変わる

日々の実務で一番効いてくる違いがこれです。直接経路(pdfTeX/LuaTeX) が取り込めるのは PDF・PNG・JPEG で、EPS はそのままでは不可——epstopdf(同名パッケージ、または --shell-escape で自動変換)で PDF にしてから使います。DVI 経由(dvipdfmx) は PNG/JPEG/PDF に加え、EPS も Ghostscript を裏で呼んで取り込めます。EPS 資産が多い旧来のワークフローは DVI 経由が馴染みます。

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

ドライバは自動判定

graphicxcolorhyperref などは、低レベルの命令を正しく出すために 出力ドライバpdftexluatexxetexdvipdfmxdvipsdvisvgm)を知る必要があります。ありがたいことに、これらは コンパイル方法から自動で判定 します。だから ドライバオプションを手で指定しないでください——指定するとかえって競合の原因になります。正しいコマンドでコンパイルすれば、それで通ります。

どちらの経路を使うか

  • 英文中心・手早く → 直接(pdflatex)。
  • OS フォント・Unicode・直接 PDFlualatex / xelatex(直接)。
  • 日本語((u)platex) → DVI 経由(dvipdfmx)。
  • EPS を多用する旧資産 → DVI 経由(Ghostscript で取り込む)か、直接なら epstopdf で PDF 化。