pTeX 系は、日本語組版のために作られた一連の TeX エンジンです。アスキーの pTeX に始まり、Unicode 化した upTeX、e-TeX 拡張を取り込んだ e-pTeX / e-upTeX、そして現代化を目指す pTeX-ng へと続きます。縦組み・禁則処理・和文メトリックといった、欧文向けの pdfTeX には任せられない仕事を、この系統が担ってきました。
まず全体像を一言で。今の標準的な日本語の組版は **uplatex(中身は e-upTeX エンジン)→ dvipdfmx → PDF という流れで、pTeX 系の出力は PDF ではなく DVI** であること、そこが pdfTeX や LuaTeX の直接 PDF 出力と決定的に違う点です。以下、4 つのエンジンを順に見ていきます。
pTeX(アスキー pTeX)
pTeX(publishing TeX、「アスキー pTeX」とも)は、アスキー が商業出版に耐える日本語 TeX を目指して開発したエンジンです。素の TeX は欧文の文字を 1 バイト単位で並べる発想で作られており、日本語の組版規則をまるごと欠いています。pTeX はそこに、日本語を組むために必要な低水準の仕組みを TeX の内部へ直接埋め込みました。
中心となるのが 組方向 の概念です。pTeX は **縦組み(\tate) と 横組み(\yoko)** をエンジンの段階で扱え、同じ本文を縦にも横にも組めます。これは小説・新聞・教科書など、縦組みが当然の日本語出版にとって必須の機能でした。
和文の字送りや行組版を支えるのが JFM(和文フォントメトリック、Japanese Font Metric) です。欧文の TFM とは別に、和文文字の幅・高さ・深さ、そして文字同士の間に入るべき空き(グルー/カーン)を記述します。これにより pTeX は、全角・半角 の区別、約物(句読点・括弧)まわりのアキ、和文と欧文が隣り合うときの 和欧文間スペース(四分アキ)を自動で挿入できます。
さらに pTeX は日本語の 禁則処理(きんそくしょり) をエンジン内で行います。行頭に来てはいけない文字(、。」など)、行末に来てはいけない文字(「( など)を、空きを微調整しながら追い出し・追い込みで処理します。ルビ(振り仮名)そのものはマクロ/パッケージ側の仕事ですが、その土台となる文字配置の精度を pTeX が支えています。こうした規則は欧文の pdfTeX には存在せず、だからこそ専用エンジンが必要になります。
pTeX 時代の弱点は 文字コード でした。内部コードは EUC-JP か Shift_JIS(-kanji-internal で選択)で、入力も JIS / Shift_JIS / EUC といったレガシー encodings が前提。扱える漢字も基本的に JIS の範囲に縛られ、JIS にない文字や多言語の CJK は苦手でした。この pTeX エンジンの上に LaTeX を載せたフォーマットが **platex**(pLaTeX)で、長く日本語論文の定番として使われてきました。
upTeX(Unicode pTeX)
upTeX(Unicode pTeX)は、田中琢爾(Takuji Tanaka) が 2007 年から開発しているエンジンで、pTeX を内部から Unicode 化したものです。入出力も内部処理も UTF-8 / Unicode を基本とするため、pTeX 時代の最大の悩みだった文字コードの制約から解放されます。
これにより、JIS の枠を超えた広い範囲の漢字をそのまま扱え、さらに日本語だけでなく 中国語(簡体字・繁体字)・韓国語(ハングル) を含む複数の CJK スクリプトを同時に組めます。upTeX は文字の種類(漢字・仮名・ハングル・CJK 記号など)を \kcatcode で区別して扱い、和文として処理すべき範囲を細かく制御できます。
実務上は、この encoding まわりの面倒のなさ が決定的でした。upTeX の上に LaTeX を載せたフォーマットが **uplatex**(upLaTeX)で、現代の日本語の仕事の多くは pLaTeX ではなくこちらに移っています。pTeX との互換性も高く、pLaTeX 用の資産の多くがほぼそのまま使えます。
e-pTeX / e-upTeX
e-pTeX は pTeX に e-TeX 拡張 を併合したエンジン、e-upTeX は upTeX に e-TeX 拡張を併合したエンジンです。e-TeX は素の TeX を拡張した実装で、\numexpr などの算術、\protected、双方向組版のための基盤、より多くのレジスタといった機能を追加します。多くの現代的な LaTeX パッケージはこれらの e-TeX 機能を前提に書かれているため、日本語環境でもこの拡張が欠かせません。
ここが実務上いちばん大事な点です。**今日 platex が実際に走るエンジンは e-pTeX、uplatex が走るエンジンは e-upTeX です。つまり pLaTeX / upLaTeX と言ったとき、その下では純粋な pTeX / upTeX ではなく、e-TeX 拡張入りの版が動いています。これが TeX Live**(最新は 2026)における日本語処理の実質的な既定構成です。
メンテナンスは現在、日本語 TeX 開発コミュニティ(Japanese TeX Development Community, texjporg) が担っています。pTeX 系のエンジン本体・フォーマット・JFM はここで継続的に整備されています。
upLaTeX の最小の例
次は upLaTeX で組む最小の日本語文書です。\documentclass{ujarticle} は upLaTeX 用の横組みクラス(縦組みなら utarticle、現代的に書くなら jlreq クラスが有力)。ソースは UTF-8 で保存します。
\documentclass{ujarticle}
\begin{document}
こんにちは、\LaTeX。日本語が美しく組めます。
数式も書けます: \[ E = mc^2 \]
\end{document}コンパイルは 2 段階です。まず uplatex で .tex を処理して DVI を作り、続いて dvipdfmx で DVI を PDF に変換します。pTeX 系は PDF を直接は吐かないので、この dvipdfmx の一手間が必ず要ります(相互参照や目次のために uplatex を 2 回流すのが通例)。
$ uplatex document.tex
$ dvipdfmx document.dvi
# => document.pdfpTeX-ng(新世代 / Asiatic pTeX)
pTeX-ng(「ng」は new generation、新世代の意)は、Clerk Ma による比較的新しい再実装の試みで、コマンド名 ApTeX(Asiatic pTeX)としても知られます。pTeX 系の系譜を現代化することを目指し、e-TeX・pTeX・upTeX のプリミティブをすべてサポートして e-upTeX と高い互換性 を保ちつつ、内部を Unicode(最大 0x10FFFF)に対応させています。
技術的に目を引くのは 直接 PDF 出力 です。pTeX-ng は dvipdfmx をライブラリ化した libdpx を出力バックエンドとして組み込み、改ページや文字出力を libdpx の C 関数の直接呼び出しで行うため、dvipdfmx を別途走らせずに PDF を生成できます。ただし pTeX-ng は e-upTeX に比べて実験的で、配備も限定的 です。日常の日本語組版の既定は、あくまで e-upTeX(uplatex)だと考えてよいでしょう。
エンジン比較
4 つのエンジンを、内部エンコーディング・e-TeX 拡張の有無・既定で載るフォーマットで並べると次のようになります。
| エンジン | 内部エンコーディング | e-TeX | 既定フォーマット |
|---|---|---|---|
pTeX | EUC / Shift_JIS | なし | pLaTeX(旧来) |
upTeX | Unicode(UTF-8) | なし | upLaTeX(旧来) |
e-pTeX | EUC / Shift_JIS | あり | pLaTeX(現行) |
e-upTeX | Unicode(UTF-8) | あり | upLaTeX(現行) |
pTeX-ng / ApTeX | Unicode(〜0x10FFFF) | あり | e-upTeX 互換 |
他の日本語ルートとの位置づけ
日本語を組む道は、いま大きく 3 つあります。pTeX 系(uplatex → dvipdfmx、本ページ)、LuaTeX 系(LuaTeX + LuaTeX-ja、直接 PDF・OS フォント・Lua による拡張)、XeTeX 系(XeTeX + xeCJK、直接 PDF・OS フォント)です。
- 出力形式。 pTeX 系は DVI(
dvipdfmxで PDF 化が必要)。pdfTeX・LuaTeX・XeTeX は 直接 PDF。 - フォント。 pTeX 系は伝統的に JFM ベース。LuaTeX-ja / XeTeX は OS の OpenType フォントをそのまま指定できる。
- 速度と実績。 pTeX 系(e-upTeX)は高速で枯れており、日本語の組版品質に長い実績がある。
- 新規に始めるなら。 Unicode・OS フォント・将来性を重視するなら LuaLaTeX(LuaTeX-ja)も有力な選択肢。
まとめると、**安定した実績で日本語論文を組むなら e-upTeX(uplatex)→ dvipdfmx、OS フォントや現代的な仕組みを使いたいなら LuaLaTeX**、というのが今の落としどころです。どのエンジンを選ぶべきかは「エンジンの選び方」のページで詳しく扱います。