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

----


* 索引作成 [#wb91d8c9]

索引があると,読む側としては「用語から検索して該当する部分のみ拾い読みする」という読み方が出来ますので,非常に便利です。

#contents


** mendex による索引の作成 [#td781055]

LaTeX で索引を作成するには,Makeindex, upmendex, mendex, texindy, xindy 等のツールを用います。
ここでは upmendex を使用した索引の作りかたを説明します。
(platex を使用する場合は,mendex で十分です。
もし platex で学んできた場合は,upmendex を mendex に読みかえると良いでしょう。)
LaTeX で索引を作成するには,Makeindex, mendex, upmendex, texindy, xindy 等のツールを用います。
ここでは mendex を使用した索引の作りかたを説明します。

// 大友さんによる「文献リストと相互参照,および索引の作り方」(インターネットアーカイブ)
// http://web.archive.org/web/20081231221606/http://www.klavis.info/bib.html
// をもとに,一部変更を施して移植しました。
// パブリックドメインにしていただいたことに感謝いたします。

LaTeX では \index という「索引の対象となる用語があるよ」と目印をつける命令があります。
それを本文の随所につけておき,本文の最後に \printindex と記述することで,索引を出力することが出来ます。
ページ番号も自動的につきます。

まず,プリアンブルに次のように記述します。

 \usepackage{makeidx}
 \makeindex

その上で,索引をつけたい用語が英語なら次のように索引用ラベルを貼ります。

 If you want convert DVI file to PDF file,
 using dvipdfmx\index{dvipdfmx} is the greatest choice.

日本語で漢字を含む場合は,ラベルとして次のように @ の前に「ふりがな」,@ の後に漢字をつけます。

 免疫\index{めんえき@免疫} とは,例外をおそれずにいえば,体内に入ってきた細菌や
 ウィルス(非自己\index{ひじこ@非自己} \footnote{抗原\index{こうげん@抗原} と総称される。} )
 免疫\index{めんえき@免疫}とは,例外をおそれずにいえば,体内に入ってきた細菌や
 ウィルス(非自己\index{ひじこ@非自己}\footnote{抗原\index{こうげん@抗原}と総称される。})
 といった自己にとって危険な要素を徹底的に排除しようと試みる際に,脳以上に主導権を握っている
 生体防御機構\index{せいたいぼうぎょきこう@生体防御機構} である。
 生体防御機構\index{せいたいぼうぎょきこう@生体防御機構}である。

こうしたものをどんどん書いておき,索引を出力したい場所(本文の末尾など)に

 \printindex

と書きます。

さて,索引を処理するのは upmendex というツールです。
さて,索引を処理するのは mendex というツールです。

先ほど説明したように \index と \printindex を書いた TeX ファイル名を hoge.tex とします。
その上で,次のように実行してください。

 uplatex hoge
 upmendex hoge
 uplatex hoge
 platex hoge
 mendex hoge
 platex hoge

こうすると,索引の用語が自動でアルファベット順,平仮名の場合はあいうえお順に並べられて出力されます。
もし,同じ文書中で \tableofcontents によって目次を作ろうとしている場合は,最後にもう一回
 uplatex hoge
 platex hoge
でタイプセットしましょう。
そうすることで,目次に索引のページ番号が表示されます。

拡張子を省略していますが,そのほうが楽でしょう。
具体的には
+まず hoge.tex を uplatex でタイプセット
+出てきた hoge.idx を upmendex で処理
+索引リスト hoge.ind ができたことを確認し,uplatex で hoge.tex を再度タイプセット
+まず hoge.tex を platex でタイプセット
+出てきた hoge.idx を mendex で処理
+索引リスト hoge.ind ができたことを確認し,platex で hoge.tex を再度タイプセット


** 索引のノウハウ [#nfb67551]

索引を作成するうえで留意すべき点や,より楽に作業する試みなどのコメントです。

***索引の目印のつけかた [#b957432f]
-索引語が長い場合,索引語の途中で改ページが起こる場合を考慮して
 ……\index{むやみにながいさくいんご@むやみに長い索引語}むやみに長い索引語……
のごとく,\index コマンドを索引語の「直前」に置くほうがよいこともあります。

-漢字の「読み方」:「漢字の読みの辞書」を問題無く作成する人は必ずしも多くないので,基本的には一つ一つの \index{} コマンドに「読み方」を付けた方が好ましいかもしれません。

-当然ながら \index{} コマンドの引数はミスが許されません。ミスによって異なるものが混在すると,異なる索引語として認識されます。
--\index{} コマンドを挿入する場合,最終的に一人の人が全ページにわたって挿入作業すべきです。複数人で行うと \index{} コマンドの引数の統一化は困難でしょう。
// 全文書にわたる索引付けの作業が 1 人で可能な程度の規模の文書に対してはそうするにこしたことはありませんが……
// やむを得ない場合には idx ファイル(あるいは ind ファイル)を直接編集する
// (もちろん,可能ならばソース自体の中の \index の引数を直接調整してもよいのですが)
// などして,生成される索引だけでも調整せざるを得ないこともあるでしょう。

***「漢字の読みの辞書」の利用 [#afbc0ab7]
「漢字の読みの辞書」を用いた場合は,\index コマンドに「読み方」の記述は不要です。
// 次のように,ソース内では「索引語」,「挿入」に対する
 索引語\index{索引語}を挿入\index{挿入}する。

-ただし,辞書に登録していない語あるいは辞書に登録した「読み方」とは異なる「読み方」をする語に対しては,「読み方」の指定が必要です。\index{} コマンド内に読み方が記述された場合は辞書を見に行きません。
 \index{ゆうせんされるよみかた@優先される読み方}

-マクロ定義の試み:
もし,
 \def\term#1{#1\index{#1}}
とマクロ定義し,これを利用すると,
 \term{索引語}を\term{挿入}する。

-mendex 実行例と「漢字の読みの辞書」ファイル
 $ upmendex -d foo.dic foo.idx
 $ mendex -U -d foo.dic foo.idx
 $ cat foo.dic
 # Japanese pronounciation dictionary (tab-separated)
 索引	さくいん
 語	ご
 挿入	そうにゅう
 #

***漢字の「読み方」を得る方法 [#o996016f]
例えば,saykotoeri というコマンドがあるようです(OS X 用)。
-https://sites.google.com/site/nicohemus/home/saykotoeri
 $ saykotoeri -o -m "索引"
 さくいん

***別名を持つ用語の索引化 [#l86bc3d9]
用語の別名の索引は,基本的に「see」を用い,ページ数は表示させない方が良さそう。すなわち,記述例として,
-ソース内のどこかに下記を記述し,
 \renewcommand{\seename}{$\rightarrow$}
 \index{クラクション|see{警笛(クラクション)}}
-本文内の\index{}コマンド付けは,
 警笛\index{けいてき(クラクション)@警笛(クラクション)} % at p.10
 クラクション\index{けいてき(クラクション)@警笛(クラクション)} % at p.20
-索引の仕上がり例は
 クラクション, → 警笛(クラクション)
 警笛(クラクション), 10, 20

***索引におけるページ番号表示を加工 [#de756abb]
ソース内で,加工コマンド付きの \index{・|加工コマンド} を付加する。ボールド体で表示の例。
 索引語\index{さくいんご@索引語|textbf}を挿入\index{そうにゅう@挿入|textbf}する
// たとえ記述例であろうと,「『漢字を含む索引語』に対し
// 『読み方(というよりソートキー)を完全に省略した』例」は挙げないでください。

***\index{} コマンドの自動挿入 [#b8a9b6bc]
試み例 (texindex.pl): 寒川光「LaTeX & PostScript スーパーユーザのテクニック」共立出版
// もっとも,\index コマンドの自動挿入などということは,
// 「あまり出現しない語句」に対してしか有用ではないと思われます。
// ([[qa:47376]] 参照)

***\index{} コマンドの挿入位置 [#y3854ca0]
挿入位置に注意が必要。下記の位置に\index{} コマンドを挿入すると,文字詰めを殺してしまう。
-「)」と句読点との間
-「)」と\footnote{}コマンドとの間

回避例
-「(・・・\index{・})」:丸括弧の中に\index{} コマンドを挿入
-「・・・\index{・}(・・・)」:丸括弧の前に\index{} コマンドを挿入

***ある用語を索引に含めるか否か [#d893e47a]
編集者・出版社のノウハウ(門外不出?)かもしれません。
-例えば,ある人物(アインシュタイン)の評伝の本で,アインシュタインという言葉を索引にするかしないか? するならば,全出現箇所(多数)のうちのどこに付けるのかを決める規範は?
-全出現数が n 箇所(n ページ)以下の索引語化を決めた語句に対しては,その全出現箇所に付けるのが適切か?(例えば n=2 ?)
-学術書等では,そこで使用されている専門用語の語義を読者が知ろうとするニーズが割と多そうです。そうすると語義を書内で示すこと及びそのページを索引で示すことは重要。


** 索引作成ツール比較 [#l03584a3]

上の例では upmendex を使って索引を作りました。
上の例では mendex を使って索引を作りました。
ほかのツールを含めて,[[索引作成ツール比較]]で比較しました。


** TeX フォーラムの質問より [#n9e05006]

-upLaTeX+mendexで索引作成時のトラブル:[[forum:1253]]
-MakeIndex, Mendex, XindyとMendexのUnicode化:[[forum:1308]]
-さくいんをつくるときのTやDの読み方:[[forum:1338]]
-index前後の改行,kanjiskip,xkanjiskip:[[forum:1062]]
-\label, \index, \linelabel の位置:[[forum:1968]]


** 関連リンク [#xd191e7b]

-http://en.wikibooks.org/wiki/LaTeX/Indexing
-[[索引(wikipedia):http://ja.wikipedia.org/wiki/%E7%B4%A2%E5%BC%95]]
-[[索引の作成:http://www.rsch.tuis.ac.jp/~mizutani/online/latex/makeindex.html]]
-[[TUG 2013で日本語の巻末索引について発表しました:http://note.golden-lucky.net/2013/12/tug-2013.html]]
--[[Index makes your book perfect:http://www.slideshare.net/k16shikano/imybp-light]]
-[[[texlive] Index of /trunk/Build/source/texk/mendexk:http://www.tug.org/svn/texlive/trunk/Build/source/texk/mendexk/]]
--[[log:http://www.tug.org/svn/texlive/trunk/Build/source/texk/mendexk/?view=log]]
--[[ChangeLog:http://www.tug.org/svn/texlive/trunk/Build/source/texk/mendexk/ChangeLog?view=markup]]