TeX はもともと欧文のために作られたため、日本語をきれいに組むには専用の拡張が要ります。歴史的な事情から系統がいくつかありますが、結論を先に言えば、新規なら LuaLaTeX、原稿は UTF-8、クラスは jlreq がいちばん素直です。このページではなぜ日本語が特別なのか、どの系統を選べばよいかを整理します。
なぜ日本語は特別なのか
もともとの TeX は 1 つのフォントあたり 256 文字(初期は 128 文字)しか扱えませんでした。数千〜数万字ある日本語を載せるには、フォントを 256 字ずつのサブフォントに分割するといった工夫が必要で、ここに日本語対応エンジンが生まれた理由があります。
組版規則も欧文とは違います。句読点・閉じ括弧・中黒などが 行頭に来ない、開き括弧が 行末に来ない ように調整する 禁則処理、和文と欧文の間に適度なアキ(\xkanjiskip)を入れる処理、全角文字の幅や約物の詰め、さらには 縦組み まで必要です。pTeX 系のエンジンは、どの文字が行頭・行末に来ると何点減点…と点数化し、減点の合計が最小になるよう行を組むことで、これらを自然に解決しています。
日本語対応の系統
日本語 TeX を本格的に開いたのは、在りし日の(株)アスキーが開発した pTeX エンジンです。これを田中琢爾さんが Unicode の日本語文字に対応させたものが upTeX。それぞれに LaTeX を載せたのが pLaTeX / upLaTeX で、いずれも DVI を経由して dvipdfmx で PDF にする伝統的な経路を使います(現在は日本語 TeX 開発コミュニティが保守)。
一方、海外で広まったモダンなエンジン上でも日本語が扱えるようになりました。中心が LuaLaTeX + luatexja です。luatexja は pTeX の組版能力を LuaLaTeX へ移植したもので、Lua のスクリプト機能と OpenType/TrueType フォントをそのまま使え、DVI を介さず直接 PDF を出します。XeLaTeX では xeCJK、pdfLaTeX でも CJK(CJKutf8) パッケージで最小限の日本語は組めます。
| エンジン | クラス・パッケージ | 特徴 |
|---|---|---|
upLaTeX / pLaTeX | jsarticle・jlreq | DVI 経由・縦書き対応・伝統的。投稿規定で指定されがち |
LuaLaTeX | ltjsarticle・jlreq + luatexja | 直接 PDF・OS フォント・Unicode。新規におすすめ |
XeLaTeX | xeCJK + bxjsarticle など | OpenType フォントを手軽に |
pdfLaTeX | article + CJKutf8 | 最小限。本文を \begin{CJK}{UTF8}{min} で囲む |
クラスとパッケージ
最も現代的なのは jlreq クラスです。「日本語組版処理の要件(JLReq)」に沿った設計で、\documentclass{jlreq} の 1 行で済み、LuaLaTeX・pLaTeX・upLaTeX のどれでも 動きます(エンジンは自動判定、platex/uplatex/lualatex をクラスオプションで明示も可能)。
\documentclass{jlreq} % LuaLaTeX / upLaTeX / pLaTeX で動く
\begin{document}
こんにちは、\LaTeX! これは日本語の組版です。
\end{document}伝統的な系統では jsclasses(jsarticle・jsbook、pLaTeX/upLaTeX 用)、LuaLaTeX 専用には ltjsclasses(ltjsarticle など)が定番です。フォントを差し替えたいときは、LuaLaTeX なら luatexja-fontspec を使います。
\usepackage{luatexja-fontspec}
\setmainjfont{Noto Serif CJK JP} % 明朝
\setsansjfont{Noto Sans CJK JP} % ゴシック文字コード
原稿の文字コードは UTF-8 が標準 です。昔は EUC-JP・Shift_JIS・ISO-2022-JP も使われ、変換には nkf などが使われましたが、いまは UTF-8 に統一しておけば安全です。upTeX や LuaTeX は Unicode ネイティブで、現在の pLaTeX も UTF-8 入力を前提にしています。改行コード(LF/CRLF)の混在には注意しましょう。
どれを選ぶか
- 新規に始めるなら LuaLaTeX + jlreq(または ltjsarticle)。 OS の OpenType フォントが使え、直接 PDF が出て、Unicode に強い。
- 軽さ・速さや既存資産を重視するなら upLaTeX + jsarticle。 ビルドが速く、和文の実績も豊富。
- 投稿先が pLaTeX を指定しているなら従う。 学会クラスは pLaTeX 前提のことがあります。
- 英文主体で一部だけ日本語なら、XeLaTeX + xeCJK や pdfLaTeX + CJK でも十分なことがあります。