LuaTeX-ja の使い方

インストール・アップデート方法

TeX Live 2014 以降では “Support for Japanese” (collection-langjapanese) が選択されていれば (ほとんどの場合で選択されていると思います), 自動的に LuaTeX-ja が導入されます*1. 最新のリリースに更新したい場合は,

tlmgr update --self --all
を実行してください. リリース 20130515.0 以降を使う場合は TeX Live 2013 が,リリース 20150420.0 以降を使う場合には TeX Live 2015 (pretest) 以降が必要です.

W32TeX の場合も最新版にアップデートすれば OK です.

注意

  • luaotfload パッケージが更新された後に LuaTeX-ja を起動すると, luaotfload のキャッシュ関係でエラーが発生することがあります.そのような場合は,一旦
    $TEXMFVAR/luatex-cache/generic/fonts/otf/
    $TEXMFVAR/luatex-cache/generic/names/
    
    を削除($TEXMFVAR の通常の値は,W32TeX では .../share/ctxdir,TeX Live では ~/.texlive????/texmf-var)し, luaotfload-tool -u -v を実行した後,もう一回試してみてください.

手動でインストールする場合

LuaTeX-ja の最新版を追いたい人向け. 現在の開発中のコード (master ブランチ)一式を動作させるにはTeX Live 2020 (pretest) 以降の環境が必要です.具体的には

  • LuaTeX beta-1.10.0 以降
  • luaotfload パッケージ(v3.1 以降)
  • etoolbox, everysel パッケージ
  • ltxcmds, pdftexcmds, filehook, atbegshi パッケージ
  • fontspec パッケージ(なくても最低限の機能は動く)
  • LaTeX の下で使う場合は,LaTeX 2020-02-02 patch level 5 以上

が必要です.しかし,開発はその時々の最新のバージョンで行っています.

開発中のコード一式の tarball が Git リポジトリの各ブランチ("heads" の下に並んでいます)の tree の snapshot リンクからダウンロードできます. ダウンロードした tarball を展開し,texmf ツリーの適当な場所に置きます.必要ならば mktexlsr を実行して下さい.

Git リポジトリごと取得する場合は,ダウンロードは以下で行えます(匿名アクセス):

git clone git://git.sourceforge.jp/gitroot/luatex-ja/luatexja.git

LaTeX での使い方

LaTeX で使用する場合の典型的なソースは以下のようになります. 基本的には \usepackage{luatexja} をプリアンブルに書くだけです.

\documentclass{ltjsarticle}
\usepackage{luatexja} % ltjclasses, ltjsclasses を使うときはこの行不要
\begin{document}
\section{はじめてのLua\TeX-ja}
ちゃんと日本語が出るかな?
\subsection{出たかな?}
長い文章を入力するとちゃんと右端のところで折り返されるかな?
大丈夫そうな気がするけど.ちょっと不安だけど何事も挑戦だよね.
\end{document}

要領は pLaTeX 用のソースを作成するときと同じですが,特に注意すべき事項として以下が挙げられます:

  • documentclass として従来の jclasses や jsclasses は使用できません.これはこれらが pLaTeX 用として書かれているためです. 上のサンプルでは,jsclasses を LuaTeX-ja 用に調整した ltjsclasses を利用しています. 他にも jclasses をLuaTeX-ja 用に調整した ltjclasses も現段階では用意されていますが, LuaTeX-ja において「最終的にどのようなクラスファイルが同梱されるか」はまだ決定されておりません.
  • 文字コードは UTF-8 にする必要があります.Shift_JIS や EUC-JP で作成しないように注意が必要です.文字コードの設定方法はご使用のエディタのマニュアルを参照して下さい.
  • 「全角幅」「全角高さ」を表す zw, zh は使用出来ません.代わりに \zw, \zh を使ってください.Q, H については \jQ, \jH を使えば良いですが,mm 単位に直しておくのが良いでしょう.
  • その他にも命令の名前に変更があります.例えば標準の和欧文間空きを設定する命令は \ltjsetparameter{xkanjiskip=...} です.
  • 20150906.0 以降で,JIS X 0208 と Unicode の U+0080--U+00FF との共通部分に属する,「¶」「§」「×」といった 8 つの記号類が 標準で欧文扱いとなりました.これらの文字をソース中に直接入力する場合, fontspec パッケージ(または,以下で言及のある luatexja-fontspec, luatexja-preset パッケージ)の使用を 強くお勧めします.

コンパイルは,上のサンプルのファイル名を sample.tex とするとき,コンソールで

lualatex sample.tex
luajitlatex sample.tex
のどちらかを打ちます(後者は W32TeX にのみ含まれています).すると,出力として sample.pdf が得られます.LuaTeX の出力は DVI ファイルではなく PDF ファイルとなります.

フォントの指定

LuaTeX-ja のデフォルトでは,欧文部分のフォントは Latin Modern,和文部分のフォントは非埋め込み (明朝体は Ryumin-Light,ゴシック体は GothicBBB-Medium という名前)となります. 20141013.0 より,標準和文フォントは IPAex フォント となります. 20200323.0 より,標準和文フォントは 原ノ味フォント となります.

LuaTeX ではフォントの扱いも従来の TeX より拡張されており,TrueType/OpenType フォントを直接扱うことができます. LaTeX で簡単にフォントの設定を行うためのパッケージが fontspec であり,これを用いることでソース中に使用する(=埋め込む)フォントの指定を書くことができます.

しかし,LuaTeX-ja では欧文フォントと和文フォントの管理を別々に行っているため,fontspec で和文フォントを指定することはできません. そこで,和文フォント用の fontspec にあたる機能を LuaTeX-ja 自体が持っています.

以下がサンプルになります.

\documentclass{ltjsarticle}

\usepackage{luatexja-fontspec}

\setmainfont[Ligatures=TeX]{TeXGyreTermes}
\setsansfont[Ligatures=TeX]{TeXGyreHeros}

\setmainjfont[BoldFont=HaranoAjiMincho-Bold]{HaranoAjiMincho-Regular}
\setsansjfont{HaranoAjiGothic-Medium}

\newjfontfamily\jisninety[CJKShape=JIS1990]{HaranoAjiMincho-Regular}

\begin{document}

mainのフォント.{\bfseries boldのフォント.}{\sffamily\gtfamily sansのフォント.}

通常の「辻」.{\jisninety JIS90字形の「辻」.}

{\fontspec{M+ 1c}\jfontspec{M+ 1c} ここはM$^{\mbox{+}}$フォントで出力.}

\end{document}

luatexja-fontspec パッケージを読み込むことで,fontspec で定義された欧文用の命令(\setmainfont, \setsansfont など)に加えて, 和文用の命令として接頭辞 j を付けた命令が追加されます. 指定できるオプションは基本的に fontspec のものと同じです. texmf ツリーにあるフォントの他,システムにあるフォントも指定可能です.

注意

なお,システムのフォント環境によっては

! LuaTeX error .../share/texmf/tex/luatex/luaotfload/otfl-font-nms.lua:109: att
empt to index field 'names' (a nil value).
<to be read again>
scan_stop:
l.6 \setmainjfont{IPAexMincho}
というエラーが出る可能性もあります(参考:LuaLaTeX で fontspec する件について, TeX フォーラム中の記事).

これは LuaTeX-ja 特有の問題ではなく,LuaTeX(正確には luaotfload パッケージ)が作成したフォント名のデータベース otfl-names.lua 内に不正なエントリが紛れ込むためです.上に挙げた参考ページのように,otfl-names.lua を手動で編集するのが良いでしょう.

フォントのプリセット設定

20120623.0 以降のリリースには,埋め込む和文フォントの指定を あらかじめ用意された設定の中から選んで1行で行うことができる luatexja-preset というパッケージが追加されています. これを用いると,例えばIPA明朝とIPAゴシックを使う設定ならば,プリアンブルに

\usepackage[ipa]{luatexja-preset}
と書くだけでOKです.

プリセットには以下のものが用意されています(リリース 20130515.0 で名称を変更しました).

  • noembed: 非埋込*2
  • kozuka-pro: 小塚フォント (Pro)
  • kozuka-pr6: 小塚フォント (ProVI)
  • kozuka-pr6n: 小塚フォント (Pr6N)
  • hiragino-pro: ヒラギノフォント (Pro, Std)
  • hiragino-pron: ヒラギノフォント (ProN, StdN)
  • bizud: Windows 10 October 2018 Update に付属する BIZ UD フォント(20190328.0 以降)
  • morisawa-pro: モリサワフォント (Pro)
  • morisawa-pr6n: モリサワフォント (Pr6N)
  • moga-mobo: MogaMincho, MogaGothic, MoboGothic(20150420.0 以降)
  • moga-mobo-ex: MogaExMincho, MogaExGothic, MoboExGothic(20170124.0 以降)
  • ume: 梅明朝,梅ゴシック(20170124.0 以降)
  • yu-win: Windows 8.1 に付属する游書体(20140114.0 以降)
  • yu-win10: Windows 10 に付属する游書体(20170124.0 以降)
  • yu-osx: OS X 10.9 に付属する游書体(20140114.0 以降)
  • sourcehan: 源ノ明朝,源ノ角ゴシック(20170505.0 以降)
  • sourcehan-jp: 源ノ明朝,源ノ角ゴシックのサブセット OTF 版(20170730.0 以降)
  • noto-otc: Noto Serif CJK, Noto Sans CJK(20170730.0 以降)
  • noto-otf: Noto Serif CJK, Noto Sans CJK(20170730.0 以降)
  • haranoaji: 原ノ味フォント(20191117.0 以降)
  • ipa: IPAフォント
  • ipaex: IPAexフォント
  • ms: MS 明朝,MS ゴシック

また,合わせて以下のオプションが指定可能です.

  • deluxe: 明朝体3ウェイト・ゴシック体3ウェイトと,丸ゴシック体 (\mgfamily) を使用可能にする.なお,極太ゴシック体を使うには \gtebfamily を使用する.
  • expert: 横組専用仮名・縦組専用仮名を用いる.\rubyfamily でルビ用仮名を扱うこともできる.
  • bold 明朝の太字をゴシック体の太字にする.
  • 90jis: 可能ならば 90JIS 字形を使う.
  • jis2004: 可能ならば JIS2004 字形を使う.
  • jis: jfm-jis.lua を JFM として用いる(JIS フォントメトリックに近い結果が得られる).

なお,deluxe を指定した場合,ipa-hg,ipaex-hg,ms-hg を指定することで,それぞれのフォント設定に加えて太字および丸ゴシック体として MS Office 等に付属する HG フォントを用いる設定が利用可能です.

標準では内部で fontspec パッケージを自動で読み込みます.極太ゴシック体だけで一つのファミリにしているのはそのためです. fontspec パッケージによる数式フォント置換が不都合な場合は,

\usepackage[no-math,...]{luatexja-preset}
のようにしてください.


  1. *1TeX Live 2013 以前では“Chinese/Japanese/Korean language support” (collection-langcjk) が選択されていれば良かったです.2014 以降で c・j・k が分割されました.
  2. *2#28187「SumatraPDFでRyumin-LightがMSゴシックになる」,#34285「PDF 出力と ISO 32000-1:2008 非準拠問題」といった問題が生じるので,このオプションを使うのはあまりおすすめしません.