upLaTeXからLuaTeX-jaに移行するのに必要そうなことをまとめた

現在，TeXで日本語を扱うのはupLaTeXが優勢ですが，pdfLaTeXのようにTeXファイルから直接PDFを出力するエンジンとしてLuaTeX-jaが開発されています．このLuaTeX-jaはDVIを経由しないことから，フォントの取り扱いがpTeX系と大きく異なります．

そこで，[公式ドキュメント](https://ja.osdn.net/projects/luatex-ja/wiki/Documentation)の日本語版（2018-03-08時点）を読んで，upLaTeXと同じように使うために必要なことを自分なりにまとめました．ただしあまり高度な使い方は考えず，基本的な機能に限って述べます．

**Note** 以下では明示的に引用はしていませんが，ほとんどがドキュメントをそのまままとめただけです．

# 使い方
最低限の設定をするためには，`luatexja.sty`を読み込む：

```tex
\usepackage{luatexja}
```

これによって次の設定がされる：

- 和文フォントのエンコーディングに，横組はJY3，縦組はJT3を用いる．
- 標準のフォントはIPAexの明朝体（ファミリ：`mc`）とゴシック体（ファミリ：`gt`）を用いる．
- 数式モード中の和文は明朝体．
- `\verb`や`verbatim`環境中の和文フォントは`\jttdefault`で指定する．デフォルトは`\mcdefault`．


## ドキュメントクラス
LuaTeXではjclassesとjsclassesは使えない．その代わりにltjclassesやltjsclassesを使う．また，縦組クラス（`ltjtarticle.cls`など）でも`geometry`パッケージを利用できるようにパッチを当てている（pLaTeXの縦組クラスでは`geometry`パッケージを使えない）．

## フォントの変更
フォントの属性を変更するには`\fontfamily`, `\fontseries`, `\fontshape`などを利用する．ただし，欧文と和文の両方を変更するか，片方を変更するかによっていくつか種類がある：

| |encoding|family|series|shape|use|
|:---:|:---:|:---:|:---:|:---:|:---:|
|欧文|`\romanencoding`|`\romanfamily`|`\romanseries`|`\romanshape`|`\useroman`|
|和文|`\kanjiencoding`|`\kanjifamily`|`\kanjiseries`|`\kanjishape`|`\usekanji`|
|両方|||`\fontseries`|`\fontshape`||
|自動選択|`\fontencoding`|`\fontfamily`|||`\usefont`|

和文フォントファミリの定義には`\DeclareFontFamily`の代わりに`\DeclareKanjiFamily`を用いる．和文フォントのシェイプの定義には`\DeclareFontShape`を使う．

## fontspecパッケージ
`fontspec`パッケージは，LuaTeXやXeTeXにおいてTrueType/OpenTypeフォントを扱うためのものであるが，LuaTeX-jaの場合，欧文フォントに対してのみ有効になる．和文フォントに対して`fontspec`の機能を用いるには`luatexja-fontspec`パッケージを読み込む：

```tex
\usepackage[<options>]{luatexja-fontspec}
```

これは自動で`luatexja`パッケージと`fontspec`パッケージを読み込む．

`fontspec`パッケージは`\fontspec`, `\setmainfont`, `\setsansfont`, `\setmonofont`, `\newfontfamily`, `\newfontface`, `\defaultfontfeatures`, `\addfonntfeatures`という（欧文フォントについての）7つのコマンドを提供する．`luatexja-fontspec`パッケージにおいて対応するコマンドは，`\jfontspec`, `\setmainjfont`, `\setsansjfont`, `\setmonojfont`, `\newjfontfamily`, `\newjfontface`, `\defaultjfontfeatures`, `\addfonntfeatures`である．（ただし，`\setmonojfont`は後述の`match`オプションが指定されたときのみ定義される．）

このパッケージのオプションは以下を指定できる：

<dl>
<dt><code>match</code></dt>
<dd><code>\rmfamily</code>, <code>\textrm{...}</code>, <code>\sffamily</code>等が，欧文フォントだけでなく和文フォントも変更するようになる．<code>\setmonojfont</code>はこのオプションが指定されたときのみ定義される．</dd>

<dt><code>pass=<em>opts</em></code></dt>
<dd><em>obsolete</em>. <code>fontspec</code>パッケージに渡すオプション<code><em>opts</em></code>を指定する．</dd>

<dt><code>scale=<em>float</em></code></dt>
<dd>欧文に対する和文の比率<code><em>float</em></code>を指定する．</dd>

<dt>その他</dt>
<dd>上記以外のオプションはすべて<code>fontspec</code>パッケージに渡される．</dd>
</dl>

## 和文フォントのプリセット
よく使われている和文フォント設定を一行で指定できるようにしたのが`luatexja-preset`パッケージである．

```tex
\usepackage[kozuka-pr6n]{luatexja-preset}
```

のように使う．指定できるフォント設定は[LuaTeX-ja の使い方#フォントのプリセット設定](https://ja.osdn.net/projects/luatex-ja/wiki/LuaTeX-ja%E3%81%AE%E4%BD%BF%E3%81%84%E6%96%B9#h3-.E3.83.95.E3.82.A9.E3.83.B3.E3.83.88.E3.81.AE.E3.83.97.E3.83.AA.E3.82.BB.E3.83.83.E3.83.88.E8.A8.AD.E5.AE.9A)を参照．

主なオプションは以下の通り：

<dl>
<dt><code>match</code></dt>
<dd><code>luatexja-fontspec</code>パッケージの<code>match</code>と同じ．</dd>

<dt><code>deluxe</code></dt>
<dd>明朝体・ゴシック体各3ウェイトと，丸ゴシック体（<code>mg</code>）を利用可能にする．明朝体は細字（<code>lt</code>シリーズ）・中字・太字が，ゴシック体は中字・太字・極太（<code>eb</code>シリーズ）がある．

明朝体細字，ゴシック体極太，丸ゴシック体が存在しない場合，それぞれ明朝体中字，ゴシック体太字，ゴシック体太字で代用する．</dd>

<dt><code>nodeluxe</code></dt>
<dd>デフォルト．<code>deluxe</code>オプションの否定．</dd>

<dt><code>expert</code></dt>
<dd>横組・縦組専用仮名を用いる．<code>\rubyfamily</code>でルビ用仮名が使用可能になる．</dd>

<dt><code>bold</code></dt>
<dd>明朝体太字をゴシック体太字によって代替する．</dd>

<dt><code>90jis</code> / <code>jis2004</code></dt>
<dd>出来る限り90JIS / JIS2004の字形を使う．</dd>

<dt>その他</dt>
<dd>他には<code>fontspec</code>（デフォルト）, <code>nfssonly</code>, <code>jfm_yoko=<em>jfm</em></code>, <code>jfm_tate=<em>jfm</em></code>, <code>jis</code>がある．これら以外のオプションはすべて<code>luatexja-fontspec</code>に渡る．</dd>
</dl>

## otfパッケージ
pLaTeXで広く用いられている`otf`パッケージは，LuaTeX-jaでは`luatexja-otf`というパッケージで実装されている．ただし，`otf`パッケージのオプション`deluxe`, `expert`, `bold`を使うことはできない．これらのオプションは`luatexja-preset`パッケージのオプションとして指定できる．