pdflatex・lualatex・platex… コマンド名が似ていて混乱しがちですが、その正体は 「フォーマット」と「エンジン」の組み合わせ です。フォーマットはあらかじめコンパイルしておいたマクロの集まり、エンジンはそれを実際に動かすプログラム。LaTeX はフォーマットの一つで、いくつものエンジンの上で走ります。このページでは LaTeX2e・pLaTeX/upLaTeX・LuaLaTeX・XeLaTeX を、その軸で整理します。
フォーマットとエンジン
エンジン とは、.tex ファイルを読んで組版する実行プログラムそのものです(TeX, pdfTeX, XeTeX, LuaTeX, e-pTeX など)。一方 フォーマット(format) とは、\documentclass や \section といった膨大なマクロをあらかじめ読み込み、プリコンパイルして一つにまとめた状態(.fmt というダンプファイル) を指します。エンジンは起動時にこの .fmt を一瞬で読み込むことで、毎回マクロを定義し直す手間を省いています。
つまり 「LaTeX」はフォーマットの名前 であって、エンジンの名前ではありません。同じ LaTeX フォーマットを別々のエンジンの上で走らせることができ、あなたが打つ コマンド名は「エンジン+フォーマット」の組み合わせを符号化 したものなのです。たとえば pdflatex は「pdfTeX エンジン+LaTeX フォーマット」、lualatex は「LuaTeX エンジン+LaTeX フォーマット」を意味します。
フォーマットは LaTeX だけではありません。クヌース自身が作った素の plain TeX、ConTeXt なども別のフォーマットです。本ページではもっとも広く使われている LaTeX フォーマットに絞り、それを載せる代表的なエンジンごとに見ていきます。
LaTeX(2e)
今日「LaTeX」と言えば、ほぼ例外なく LaTeX2e(ラテフ・ツーイー)を指します。レスリー・ランポートが作った LaTeX のマクロ体系を、LaTeX プロジェクト が引き継いで保守している現行版で、1994 年 に登場しました。それ以前の LaTeX 2.09 からの「小さな改訂」のつもりで 2e と名付けられ、本命の LaTeX3 への中継ぎとされていました。
ところがその LaTeX3 は単独の新カーネルとしては結実せず、その成果は expl3(LaTeX3 プログラミング層) という形で LaTeX2e の上に積み上げられました。expl3 は 2020 年以降カーネルに標準で読み込まれ、新機能の実装にも内部で広く使われています。結果として、私たちが日々使うのはあくまで LaTeX2e でありながら、その中身は LaTeX3 の技術で着実に近代化され続けています。
LaTeX2e のカーネルは、現在 年 2 回(おおむね 6 月と 11 月) の定期リリースで更新されています。直近の安定リリースは 2025-11-01(2025 年 11 月公開)で、次の 2026-06-01 はすでに開発版のプレリリースが配布されています。文書の書き方は一貫していて、冒頭で \documentclass により文書クラスを選び、\begin{document} までの プリアンブル でパッケージ読み込みや設定を行い、本文を書く——という「クラス+プリアンブル」モデルが基本です。
このフォーマットを pdfTeX エンジン の上で走らせるのが、もっとも古典的で標準的な組み合わせです。同じ pdfTeX でも出力先で 2 つのコマンドに分かれます。latex は pdfTeX を DVI モード で動かして中間形式の DVI を出力し(後で別ツールで PDF へ変換)、pdflatex は pdfTeX が PDF を直接 出力します。今日の欧文中心の文書では pdflatex が事実上の定番です。
pLaTeX / upLaTeX
pLaTeX(ピー・ラテフ)と upLaTeX(ユーピー・ラテフ)は、日本語組版に特化したエンジンの上に LaTeX フォーマットを載せたものです。縦組み・ルビ・和文の行組版といった日本語固有の処理は、アスキー社が拡張した pTeX 系のエンジンが受け持ちます。現在の TeX Live では、platex も uplatex も実行基盤は e-upTeX ですが、platex は pLaTeX 互換の文字処理で動き、uplatex は upLaTeX として Unicode を前提に動きます。
この系統は 必ず DVI を出力 し、和文を含む DVI を dvipdfmx で PDF へ変換する、という二段構えが基本です(uplatex file.tex のあとに dvipdfmx file.dvi)。upmendex を併用すれば日本語の索引も作れます。文書クラスは奥村晴彦氏による jsarticle/jsbook(pLaTeX 用)、その Unicode 版 ujarticle など、そして近年の JIS X 4051 準拠の jlreq がよく使われます。
platex と uplatex の違いは、実行ファイル名よりも フォーマット側の文字の扱い です。platex は pLaTeX 資産との後方互換を守るため、従来の pTeX 的な文字処理を維持します。uplatex は Unicode を前提にしており、ハングルやキリル文字を含む和文混在文書に強いのが利点です。新規の日本語論文では uplatex が標準的な選択肢です。
いつ使うか——日本の学会・出版社が pLaTeX 用のクラスファイルやスタイルを配っている とき、あるいは縦組みなど pTeX 系の成熟した和文組版に頼りたいときは、pLaTeX/upLaTeX が手堅い選択です。逆に OS のフォントをそのまま使いたい、Unicode をそのまま流し込みたいなら、後述の LuaLaTeX-ja が向きます。
LuaLaTeX
LuaLaTeX は、LuaTeX エンジン の上に LaTeX フォーマットを載せたものです。コマンドは lualatex。LuaTeX は pdfTeX を発展させたエンジンで、入力を Unicode で直接扱い、OS にインストールされた OpenType / TrueType のシステムフォント を fontspec パッケージで読み込めます。出力は中間形式を経ずに PDF を直接 生成します。
名前のとおり最大の特徴は、組版エンジンに Lua スクリプト言語が組み込まれている ことです。\directlua{...} で TeX の内部に踏み込んだ処理を Lua で書け、従来は困難だった拡張がしやすくなりました。日本語組版は luatexja パッケージが担い、pLaTeX に匹敵する品質の和文組版を、システムフォントと Unicode のまま実現します。
こうした近代性から、LaTeX チームも現代的なエンジンとして LuaLaTeX を推す 流れにあり、新規プロジェクトの既定として勧められることが増えています。難点は処理速度で、pdflatex や xelatex に比べてコンパイルが重め(XeLaTeX のおよそ 2 倍かかることもある)です。日本語・多言語・凝ったフォント運用・プログラム的な組版を一台でこなしたいなら、まず候補に挙がるエンジンです。
XeLaTeX
XeLaTeX(ゼットラテフ/ジーラテフ)は、XeTeX エンジン の上に LaTeX フォーマットを載せたものです。コマンドは xelatex。LuaLaTeX と同じく Unicode 入力 と、fontspec による システムフォントの直接利用 に対応します。出力は、内部に組み込まれた xdvipdfmx(dvipdfmx 由来のドライバ)を通じて PDF を生成します。
XeLaTeX の持ち味は シンプルさ です。「とにかく手元の OS フォントをそのまま使いたい」という用途では、LuaLaTeX より設定が軽く、コンパイルも速い傾向があります。OS のフォント名解決に近い感覚で指定できるので、フォント名を一つずつ試す作業も直感的です。一方で、Lua のような深いプログラマビリティは持たず、近年の機能拡張の主軸は LuaTeX 側に移りつつあります。
コマンド早見表
同じ LaTeX フォーマットでも、コマンド名によって背後のエンジン・出力形式・フォントの扱いが変わります。次の表で、いちばん左の コマンド名 から右へたどってください。
| コマンド | エンジン | 出力 | Unicode・システムフォント |
|---|---|---|---|
latex | pdfTeX(DVI モード) | DVI → 要変換 | ×(要 inputenc 等) |
pdflatex | pdfTeX | PDF(直接) | ×(要 inputenc 等) |
platex | e-upTeX(pLaTeX 互換実行) | DVI → dvipdfmx | 日本語可・従来フォント |
uplatex | e-upTeX | DVI → dvipdfmx | 内部 Unicode・従来フォント |
lualatex | LuaTeX | PDF(直接) | ○ fontspec / luatexja |
xelatex | XeTeX | PDF(xdvipdfmx 経由) | ○ fontspec |
実際のコマンド操作で見ると、PDF を直接吐くエンジンは 1 コマンドで完結し、DVI 経由のものは変換を 1 段はさみます。
# pdfTeX: PDF を直接出力 / emits PDF directly
$ pdflatex main.tex # → main.pdf
# LuaTeX: PDF を直接出力 / emits PDF directly
$ lualatex main.tex # → main.pdf
# upLaTeX: DVI を出力し、dvipdfmx で PDF へ変換
# upLaTeX emits DVI, then dvipdfmx converts to PDF
$ uplatex main.tex # → main.dvi
$ dvipdfmx main.dvi # → main.pdfどれを選ぶか
おおまかな指針は次のとおりです。詳しい判断基準(速度・パッケージ互換・日本語事情など)は「エンジンの選び方」のページで掘り下げます。
- 欧文中心で手早く →
pdflatex。最も枯れていて、対応パッケージも最大。 - 日本語の論文・既存のクラス指定 →
uplatex(必要に応じてplatex)。DVI →dvipdfmx。 - 現代的に一台で何でも・日本語も →
lualatex。Unicode+システムフォント+luatexja。 - システムフォントを手軽に使いたい →
xelatex。設定が軽く、コンパイルも速め。
決めたらプロジェクトに固定する
エンジン選びは毎回の気分で変えるものではありません。卒論なら、表紙・目次・図表・参考文献まで通った時点で ビルド手順を固定 し、README や .latexmkrc に残します。lualatex で始めた文書を途中から uplatex に変えると、フォント指定、和文処理、PDF生成経路、参考文献処理まで一度に変わります。切り替えるなら、短いサンプルで全機能を再確認してから本文へ戻るのが安全です。
固定するときは、コマンド名だけでなく ログの1行目 も残すと役に立ちます。This is LuaHBTeX ...、This is XeTeX ...、This is e-upTeX ... のような行には、実際に走ったエンジンと TeX Live 年度が出ます。共同執筆で「同じコマンドなのに結果が違う」とき、この1行を比べるだけで、エディタ設定の違いなのか、TeX Live 年度やフォーマットの違いなのかを切り分けられます。