日本語組版の方法

日本語は、縦組・禁則処理(行頭行末の禁止文字)・和欧文間の空きなど、欧文とは違う扱いが要ります。TeX には成熟した 2 つの道があります——古くからの pLaTeX / upLaTeX(DVI 経由で dvipdfmx)と、モダンな LuaLaTeX-ja(PDF を直接出力、OpenType フォント)。このページは全体像を示し、それぞれの始め方と選び方をまとめます。

日本語 TeX の全体像

日本語組版は、アスキー社が開発した pTeX エンジンが土台を作りました(縦組や禁則、和欧文の空き調整を TeX に持ち込んだ)。その上の LaTeX が pLaTeX です。のちに内部を Unicode 化した upTeXupLaTeX が登場し、さらに現代的な LuaTeX エンジンへ日本語組版を移植した LuaTeX-ja が加わりました。実用上の選択肢は、pLaTeX・upLaTeX・LuaLaTeX-ja の 3 つです(エンジン自体の話は「pTeX 系」を参照)。

pLaTeX / upLaTeX で組む

まず日本語用の 文書クラス を選びます。広く使われる jsclassesjsarticlejsbook、奥村晴彦氏による)か、JLReq 準拠の現代的な jlreq。upLaTeX で使うときはクラスオプションに uplatex を渡します。組版は uplatex → DVI → dvipdfmx(または ptex2pdf -l -u 一発)。upLaTeX は Unicode 全体 を扱え、pLaTeX(無印)は JIS X 0208 の範囲に限られます。

latex
% upLaTeX。uplatex main.tex && dvipdfmx main
\documentclass[uplatex]{jsarticle}
\begin{document}
日本語と English の混植。
\end{document}

LuaLaTeX-ja で組む

モダンな道が LuaTeX-ja です。LuaLaTeX 上で日本語組版を行い、Unicode ネイティブ・OpenType/OS フォント・PDF 直接出力(DVI を経由しない)が特長。LuaTeX-ja 用のクラス(ltjsarticle など、または jlreq を lualatex で)を使い、和文フォントは luatexja-fontspec\setmainjfont\setsansjfont で指定します。コンパイルは lualatex です。

latex
% LuaLaTeX-ja。lualatex main.tex
\documentclass{ltjsarticle}
\usepackage{luatexja-fontspec}
\setmainjfont{Noto Serif CJK JP}
\begin{document}
日本語と English の混植。
\end{document}

和文組版では、文字どうしの間に細かな空き(グルー)が入ります。文字間の kanjiskip と、和文・欧文の境目の xkanjiskip(「日本語と abc」の前後の小さな空き)です。LuaTeX-ja ではこれらを \ltjsetparameter{...} で調整できます(pLaTeX/upLaTeX ではクラスが妥当な既定値を設定します)。

latex
\ltjsetparameter{xkanjiskip=0.25\zw plus 1pt minus 1pt}

どれを使うか

  • 既存資産・速さ・論文の定番upLaTeXjsclassesjlreq)+ dvipdfmx
  • モダン・OpenType フォント・直接 PDFLuaLaTeX-jaltjsclassesjlreq)。新規はこちらが増加。
  • 無印 pLaTeX は JIS X 0208 に限定 されるので、新規なら up 系か Lua 系を選ぶ。
  • jlreq は pLaTeX・upLaTeX・LuaLaTeX のいずれにも対応し、JLReq 準拠の本格的な組版に向く。