索引や参考文献は、コンパイル 1 回ではできあがりません。まず LaTeX が素材を書き出し(\index は .idx に、\cite は .aux に)、次に 別のプログラム がそれを並べ替えて整形し、もう一度 LaTeX を流して本文に取り込みます。このページは、その裏方——索引を組む makeindex / mendex / upmendex と、文献を組む bibtex / pbibtex / upbibtex / biber を扱います。
索引・文献は別プログラムが処理する
本文に \index{...} や \cite{...} を書いても、LaTeX 自身はそれを並べ替えません。1 回目のコンパイルで 生データ(.idx や .aux)を吐き、そこへ索引/文献プログラムを走らせて整形済みファイル(.ind や .bbl)を作り、もう一度 コンパイルして取り込む——という多段処理になります。順番と回数を手で管理するのは面倒なので、実務では latexmk などのビルドツールに任せるのがふつうです。
makeindex / mendex / upmendex — 索引を組む
makeindex が基本です。\index が書き出した .idx を読み、並べ替えて .ind を生成します。出力の体裁は -s スタイル.ist で指定できます。ただし内部処理は 1 バイト単位で、日本語の正しい読み順には対応しません。
mendex は日本語対応版で、漢字を 読み(ヨミ)順 に並べます。読み@語 の構文で読みを与えると、その仮名で五十音順に整列します。upmendex はその Unicode/多言語版で、内部処理を Unicode 化し、ICU(Unicode 照合アルゴリズム) で日本語・ラテン・ギリシャ・キリル文字などを並べ替えます。makeindex/mendex のスタイルと上位互換で、現代の upLaTeX や LuaLaTeX-ja での索引はこれが定番です。
makeindex document.idx # → document.ind
upmendex -s mystyle.ist document.idx # 多言語・スタイル指定 / multilingual, with a style最小構成では、プリアンブルで makeidx を読み \makeindex を宣言し、本文で \index{...} を置き、索引を出したい場所で \printindex を呼びます。ここで重要なのは、\index は紙面に文字を出す命令ではなく 索引用の材料を書き出す命令 だという点です。語の表示と並べ替えを分けたいときは 読み@表示 と書き、たとえば らてふ@LaTeX のように索引用の読みを明示します。
\documentclass{jsarticle}
\usepackage{makeidx}
\makeindex
\begin{document}
LaTeX\index{らてふ@LaTeX} で索引を作ります。
\printindex
\end{document}bibtex / pbibtex / upbibtex / biber — 文献を組む
bibtex(Oren Patashnik、1985 年)は古典的な文献ツールです。.aux の \cite キーと .bib データベースを突き合わせ、.bst スタイル に従って .bbl を生成します。日本語フィールドや和文の並べ替えには pbibtex(pTeX 系)、Unicode 対応の upbibtex(upTeX 系)を使います。
biber は、近年の biblatex 用バックエンドです。Perl 製で 完全な Unicode 対応、Unicode 照合アルゴリズムを使う並べ替え、強力な相互参照、データモデル検証など、従来の BibTeX より広い機能を備えます。文書が biblatex を使うなら、まず biber を前提に考えます。bibtex・biber 共通の -min-crossrefs=N(既定 2) は、crossref で参照される項目を独立した文献として立てるか、引用側に取り込むかの閾値です——N 件以上から参照されていれば独立項目になります。
bibtex document # 拡張子なし。document.aux を読む / no extension; reads document.aux
biber document # biblatex を使う場合 / when the document uses biblatex使い分けの目安:旧来の \bibliography + .bst なら bibtex(日本語は up/pbibtex)。多言語・高機能がほしく biblatex を使うなら biber。研究室や投稿先のテンプレートが .bst を指定しているときは無理に移行せず、そのテンプレートの流儀に合わせます。新規プロジェクトで引用スタイルを自分で選べるなら、biblatex+biber のほうが Unicode と細かな制御に強い選択です。
BibTeX 系では .bst が出力様式を決めるので、投稿規定で jplain や plainnat などが指定されているならそれに従います。biblatex では LaTeX 側のオプションで様式を選び、裏側のデータ処理を biber に任せます。どちらでも、本文の引用キーと .bib のキーが一致しないと .bbl は作れても引用は解決しません。まず 1 件だけで通る最小例を作り、それから全参考文献を移すと失敗箇所を狭くできます。
失敗したときは、まず「LaTeX が材料を書き出したか」を見ます。索引なら .idx、文献なら .aux と .bcf(biblatex)ができているかを確認し、次に makeindex / upmendex / bibtex / biber のログを読みます。最後に LaTeX をもう一度流して .ind や .bbl が本文に取り込まれているかを見る、という順に切り分けると原因が見つけやすくなります。
実行する順番
典型的には「コンパイル → 文献/索引 → コンパイル → コンパイル」と流します。たとえば upLaTeX なら次のとおり。とはいえ手で打つより、必要な順番と回数を自動で判断する latexmk 等に任せるのが確実です。
uplatex document # .aux / .idx を生成
upbibtex document # 文献を整形 (.bbl)
upmendex document # 索引を整形 (.ind)
uplatex document # 取り込み(番号確定のためもう一度流すことも)
uplatex document