LaTeX入門 / 最初の例 / 簡単な数式 (1) / 簡単な数式 (2) / 各種パッケージの利用 / レポート / HTML と LaTeX の比較 / 複雑な数式 / 図表 / 図表の配置 / 相互参照とリンク / 文献引用 / 索引作成 / LaTeX マクロの作成 / スライドの作り方(jsarticle 編) / 応用的な使い方 / 発展編


発展編:日本語に特化した高速な LaTeX †

LaTeX 入門では全体をとおして LuaLaTeX を用いた手順を説明してきました。 これは LuaLaTeX が多くの環境で常に使えるモダン(現代的)な LaTeX エンジンだからです。 しかし、日本語がサポートされている LaTeX 環境では日本語に特化した高速な LaTeX エンジンを使えるようになっています。 ここではそういう“日本語に特化した LaTeX”で初心者でも簡単に使えるものを紹介します。

↑

upLaTeX †

TeX Live には,upLaTeX という Unicode 対応の日本語用 LaTeX エンジンが収録されています。

LuaLaTeX ではなく upLaTeX を使うメリットは以下の点です:

pLaTeX ではなく upLaTeX を使うメリットは以下の点です:

これまで「LaTeX 入門」で示した LuaLaTeX 用のソースは以下の点を変えるだけで upLaTeX 用のものに改変できます:

↑

upLaTeX ソース例 †

LaTeX 入門で示した例は LuaLaTeX や upLaTeX を使わなくても pLaTeX でそのまま処理できるソースでした。 しかし,例えば以下のような JIS 外の漢字や丸数字などを含むソースを考えましょう。

\documentclass[uplatex,dvipdfmx]{jlreq}
\begin{document}

①②③④㋐㋑㋒㋓

森鷗外,内田百閒,鄧小平,李承燁

\end{document}

これを ex1.tex という名前で文字コードを UTF-8 にして保存し,以下のコマンドを実行します。

uplatex ex1
dvipdfmx ex1

すると,ex1.pdf が出力されます。 ptex2pdf を使う場合は

ptex2pdf -u -l ex1

とすれば,upLaTeX と dvipdfmx が順に実行されて ex1.pdf が得られます。

もし仮にこの ex1.tex を先頭行の uplatex オプションを除いた上で pLaTeX で処理してしまうと,“JIS 外字”の丸記号や漢字(鷗,閒,鄧,燁)が抜け落ちてしまいます。 すなわち,pLaTeX を使う場合は,書きたい文字が“JIS 外字”であるかをいちいち考えないといけないのですが,upLaTeX を使うことで,そのような面倒から解放されるわけです。

↑

補足事項 †

↑

upLaTeX を使えない場合 †

upLaTeX は LuaLaTeX よりも高速に動作して pLaTeX よりも多くの文字を扱えますが,残念ながら,いつでも upLaTeX が使えるわけではありません。

pLaTeX 用の文書クラスファイル(スタイルファイル)の中には upLaTeX に対応していないものがあります。 特に,主要な和文論文誌(例えば IPSJ)の指定する文書クラスについては,その大半が pLaTeX 専用になっています。 そのような文書クラスの使用が求められる文書を作る機会のある人は,upLaTeX は使えません。 ただ、学会によっては LaTeX のサポートがなく、MS-Word のみサポートする場合もあるので MS-Word を使用することにすれば pLaTeX は使用せずにすみます。

↑

その他の注意 †

UTF-8 で保存された pLaTeX 文書の \documentclass 部分だけ変更すれば upLaTeX 文書になることも多い一方で、時に注意すべき点を挙げておきます。

↑

LuaLaTeX †

日本では pLaTeX や upLaTeX と dvipdfmx を組み合わせて「LaTeX ソースから DVI 経由で PDF を作る」ケースが圧倒的に多いのが現状です。 しかし海外に目を向けてみると,pdfLaTeX を使って「LaTeX ソースから PDF を直接出力する」ケースが主流です。 この pdfTeX を拡張して Lua という軽量スクリプト言語を利用できるようにしたのが LuaTeX です。 LuaTeX は,いまのところ pdfTeX の後継として位置づけられています。

現在の LuaTeX は,すでに pdfTeX に近い機能拡張を利用できるほか,以下のような優れた機能もあります:

LuaLaTeX を使って日本語を組版するための LuaTeX-ja というパッケージも活発に開発されています。 pLaTeX のソースから LuaLaTeX (LuaTeX-ja) に切り替える場合,現在は以下のようにすればよいようです:

このように jlreq クラスにすれば自動的に luatexja パッケージが読み込まれます。

↑

LuaTeX-ja ソース例 †

LuaTeX-ja の使い方#LaTeX での使い方に例が挙げられています。

\documentclass{ltjsarticle}
\begin{document}

\section{はじめてのLua\TeX-ja}
ちゃんと日本語が出るかな?
\subsection{出たかな?}
長い文章を入力するとちゃんと右端のところで折り返されるかな?
大丈夫そうな気がするけど。ちょっと不安だけど何事も挑戦だよね。

\end{document}

これを ex2.tex という名前で文字コードを UTF-8 にして保存し,以下のコマンドを実行します。

lualatex ex2

すると,ex2.pdf が出力されます(初回のタイプセットではキャッシュが存在しないので,長い場合は数分程度かかるかもしれません)。 このとき,デフォルトでは標準和文フォントは原ノ味フォントが埋め込まれます。 macOS でヒラギノフォントを利用できる場合は

\usepackage[hiragino-pron,jis2004]{luatexja-preset}

をプリアンブルに追加すれば,システムにインストールされているヒラギノフォントが認識されて埋め込まれるようになります。 このように,LuaTeX の大きな特徴は「システムにインストールされた OpenType フォントや TrueType フォントを直接扱える」ことだったりします。

なお,図表の取り扱い等については,pLaTeX のときのような [dvipdfmx] オプションが不要になります。これは pdfLaTeX と同様で,自動的に適切なドライバを検出するためです。

Lua(La)TeX,LuaTeX-ja ともに仕様は流動的であることを気に留めておいてください。

↑

ほかの文書クラスの利用 †

少し昔の TeX 環境では,日本語用の文書クラスとして jclasses (jarticle, jreport, jbook) しかインストールされていませんでした。 これらは JIS の組版規則に合わない点が複数指摘されており,工夫が必要でした。 いまではほとんどの環境で Japanese TeX Development Community による「pLaTeX2e 新ドキュメントクラス」 (jsarticle, jsreport, jsbook) がインストールされていますので,JIS の組版規則に則った日本語文書を容易に作成できるようになっています。 LaTeX 入門ではこの新ドキュメントクラスを使用して,簡単な例を示してきました。

その一方で,新ドキュメントクラスは pLaTeX というエンジンの機能に強く依存して日本語の組版を実現しているため,pLaTeX / upLaTeX 以外のエンジンで使用することができません。 そこで,新ドキュメントクラスから pLaTeX 依存の部分を分離した BXjscls という新しい汎用文書クラスが,ZR さんによってつくられました。 BXjscls は使用する各エンジンに対応した日本語処理パッケージを読み込み,pLaTeX / upLaTeX 以外でも LuaLaTeX / XeLaTeX / pdfLaTeX / Asiatic pTeX で新ドキュメントクラスを用いた場合と同等の文書作成が可能となります。

abenori さんによる LuaLaTeX + LuaTeX-ja, upLaTeX, pLaTeX で日本語組版処理の要件を満たす日本語ドキュメントクラスも利用できます。

↑

BXjscls の使用例 †

以下では,2020 年 3 月に公開された v2.x を前提に簡単に紹介します。 pLaTeX で bxjsarticle クラスを使用する例は以下のようになります。

\documentclass[platex,dvipdfmx,ja=standard]{bxjsarticle}
\title{{p\LaTeX}で日本語文書}
\author{七篠 権兵衛}
\begin{document}
\maketitle

日本で漱石が「吾輩は猫である」を発表したころ,
ドイツではAlbert Einsteinが特殊相対論を発表した。
\end{document}

一行目の文書クラスのオプションでは,エンジン名(必須)とドライバ名(DVI を経由する場合は必須),日本語処理の標準設定(必須)を指定します。 これを upLaTeX 用に書き変えるには,pLaTeX 用ソースの一行目と二行目を

\documentclass[uplatex,dvipdfmx,ja=standard]{bxjsarticle}
\title{{up\LaTeX}で日本語文書}
…(残りは同じ)…

とします。LuaLaTeX 用に書き変えるには,同様に pLaTeX 用ソースの一行目と二行目を

\documentclass[lualatex,ja=standard]{bxjsarticle}
\title{{Lua\LaTeX}で日本語文書}
…(残りは同じ)…

とします(DVI を経由しないことに注意)。

XeLaTeX と pdfLaTeX では少々ソースを書く際に注意が必要になります。 上の pLaTeX 用ソースに即した最低限の注意事項としては

が挙げられますので,XeLaTeX 用の場合は

\documentclass[xelatex,ja=standard]{bxjsarticle}
\usepackage{metalogo} % \XeLaTeX ロゴのため
\title{{\XeLaTeX}で日本語文書}
\author{七篠\ 権兵衛}
…(残りは同じ)…

となり,pdfLaTeX 用の場合は

\documentclass[pdflatex,ja=standard]{bxjsarticle}
\title{{pdf\LaTeX}~で日本語文書}
\author{七篠\ 権兵衛}
\begin{document}
\maketitle

日本で漱石が「吾輩は猫である」を発表したころ,
ドイツでは~Albert Einstein~が特殊相対論を発表した。
\end{document}

となります。 ほかにも注意点がいくつか挙げられますが,詳細は BXjscls を参照してください。

↑

jlreq の使用例 †

jlreq を参照してください。

↑

ChatGPT に LaTeX で日本語の文書を作成する場合 LuaLaTeX と upLaTeX + dvipdfmx では どちらのワークフローが適しているか質問した結果 †

質問:

LaTeX で日本語の文書を作成する場合 LuaLaTeX と upLaTeX + dvipdfmx では どちらのワークフローが適していますか。

回答:

日本語文書なら、新規に作るのであれば基本的には LuaLaTeX をおすすめします。ただし、既存の pLaTeX/upLaTeX 資産を活用する場合は upLaTeX + dvipdfmx が非常に堅実です。

観点LuaLaTeXupLaTeX + dvipdfmx
新規文書◎○
既存の pLaTeX 資産○◎
Unicode / UTF-8◎○
OpenType フォント◎○〜◎
日本語組版◎◎
欧文・日本語を混在させる複雑な文書◎○
パッケージ互換性◎(現代的)◎(日本語 LaTeX の歴史的資産)
処理系のシンプルさ◎△(DVI→PDF の2段階)
古い日本語 LaTeX 文書との互換○◎

LuaLaTeX を選ぶメリット

LuaLaTeX は、TeX → PDF を直接生成できることと、Unicode を前提に扱えることが大きな利点です。

例えば、

.tex
 ↓
lualatex
 ↓
.pdf

という比較的単純なワークフローになります。

さらに fontspec や luatexja を使うことで、システムにインストールされた OpenType/TrueType フォントを扱いやすくなります。

 </> LaTeX

\documentclass{ltjsarticle}
\usepackage{luatexja}
\usepackage{fontspec}

\begin{document}
これは LuaLaTeX で作成した日本語文書です。
\end{document}

現在の LaTeX で新しい文書を始めるなら、この方向はかなり自然です。

upLaTeX + dvipdfmx が向いている場合

一方、

.tex
 ↓
uplatex
 ↓
.dvi
 ↓
dvipdfmx
 ↓
.pdf

というワークフローには、日本語 TeX の長い歴史の中で蓄積された資産があります。

特に、

といった場合には、無理に LuaLaTeX に移行する必要はありません。

重要なのは「どちらが日本語に強いか」ではない

現在では、単純に

「日本語なら upLaTeX、英語なら LuaLaTeX」

と考える必要はありません。

LuaLaTeX + luatexja は日本語組版をかなり本格的に扱えます。一方、upLaTeX も日本語文書について非常に成熟しています。

したがって、実際には

新規作成 → LuaLaTeX
既存資産・指定テンプレート → upLaTeX + dvipdfmx

という判断が分かりやすいです。

なお、**論文・卒論・技術文書などで「どちらを選ぶべきか」**という話なら、文書クラス(jlreq / jsarticle / ltjsarticle)まで含めて考えると結論が変わることがあります。特に現在の日本語 LaTeX では LuaLaTeX + jlreq も有力な構成です。


*1 mendex,upmendex は読みデータを UTF-8 で保持します。mendex は「英語+日本語」のみですが、upmendex はソートを ICU を利用して行っており「多言語(ラテン文字圏ほぼ全部、CJK全部、ギリシャ文字、キリル文字)」に対応しています。
*2 文字コードが ISO-2022-JP(いわゆる「JIS エンコーディング」)である場合は、upLaTeX でも正常に読み込めます。TeX Live に含まれる (u)pLaTeX 用のパッケージファイルの文字コードは UTF-8 になっています。

Last-modified: 2026-09-27 (日) 13:25:03 (26d)