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


発展編:最近の LaTeX の動向

LaTeX 入門では全体をとおして pLaTeX を用いた手順を説明してきました。 これは,pLaTeX が環境の新旧を問わず(日本の)TeX 環境で常に使えるエンジンだからです。 しかし,新しい TeX 環境ではより機能拡張が施された LaTeX エンジンを使えるようになっています。 ここではそういう“新しい LaTeX”で初心者でも簡単に使えるものを紹介します。

upLaTeX

TeX Live 2012 以降,あるいは W32TeX [2007/08/04] 以降をインストールした場合は,upLaTeX という Unicode 対応の日本語用 LaTeX エンジンが収録されています。

初級者にとっての,upLaTeX を使うメリットは以下の点です:

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

upLaTeX ソース例

LaTeX 入門で示した例は特に upLaTeX を使う必要のある要素を含んでいませんでした。 しかし,例えば以下のような JIS 外の漢字や丸数字などを含むソースを考えましょう。

\documentclass[uplatex]{jsarticle}
\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 は pLaTeX よりも優れた機能を持ちますが,残念ながら,いつでも upLaTeX が使えるわけではありません。

upLaTeX を使えるためには,まず大前提として OS やエディタが Unicode (UTF-8) に対応している必要があります。 そのうえで,利用している TeX 環境が upLaTeX をサポートしていることも必要です。 TeX Live 2012 以降,あるいは W32TeX [2007/08/04] 以降であれば upLaTeX が入っています。 これより古い環境(TeX Live 2011 など)では使えません。

もうひとつ気を付けるべきなのは,pLaTeX 用の文書クラスファイル(スタイルファイル)の中には upLaTeX に対応していないものがあることです。 特に,主要な和文論文誌(例えば IPSJ)の指定する文書クラスについては,その大半が pLaTeX 専用になっています。 そのような文書クラスの使用が求められる文書を作る機会のある人は,upLaTeX に完全に移行することはできないでしょう。

その他の注意

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

LuaLaTeX

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

TeX Live 2018 の LuaTeX のバージョンは 1.07.0 です。すでに pdfTeX に近い機能拡張を利用できるほか,以下のような優れた機能もあります:

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

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

LuaTeX-ja ソース例

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

\documentclass{ltjsarticle}
\begin{document}

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

\end{document}

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

lualatex ex2

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

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

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

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

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

ほかの文書クラスの利用

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

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

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

BXjscls の使用例

以下では,2015 年 8 月に公開された v1.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 を参照してください。


*1 mendex は読みデータを EUC-JP で保持するのに対し,upmendex は読みデータを Unicode で保持します。また、upmendex はソートを ICU を利用して行っています。
*2 文字コードが ISO-2022-JP(いわゆる「JIS エンコーディング」)である場合は、upLaTeX でも正常に読み込めます。TeX Live や W32TeX に含まれる (u)pLaTeX 用のパッケージファイルの文字コードは UTF-8 になっています。

Last-modified: 2018-06-12 (火) 08:07:44 (8d)