TeXの記憶(7)—索引コマンドを作る

もちろん、LaTeXの索引コマンドは「\index」があるのですが、分量が多かったりすると本文とは別に入力するのが面倒になってきます。本文中の項目をいちいちをコピペするのも時間かかるし、別に入力するのはさらに間違いも入る可能性があります。

そんなわけで、本文の索引項目を引数にとれる索引コマンドを作っていました。

使い方は以下のようです。

この文章の中に\Idx{index}の代わりのコマンドを使って
\Idx[さくいん]{索引}を入れました。

漢字のように「読み」が必要な場合だけオプション引数を付けることにしました。

カタカナ用語が多い文章だと、オプション引数が不要なので、かなり楽になります。

ついでに、索引として拾った項目に色を付けることにしました。拾い忘れや、ちょっと前に同じ用語があったのに後のほうを索引にしてしまった、なんてことの予防になるかなと思っています。

出力

img20130419

この色表示は、草稿のときだけあればよくて、最終的な文書に色が付いていては困るので、条件分岐で色にするかどうか決めています。条件は「\newif\ifXXX」のように適当に作ればいいのですが、ここではもともと用意されているdraftオプションを使ってます。

文書の先頭で

\documentclass[draft]{jsbook}

とすると色表示、

\documentclass{jsbook}

のように「draft」オプションをとってしまえば本文の色(通常は黒)になります。

マクロは以下のようになりました。

\newcommand{\@Idxcond}[2]{\ifdraft\textcolor{#1}{#2}\else#2\fi}
\definecolor{iroIdx}{rgb}{0,0,1}
\def\Idx{\@ifnextchar[{\@Idx}{\@Idx[XXX]}}
\def\@Idx[#1]#2{\def\ARG{#1}\def\XXX{XXX}%
  \ifx\ARG\XXX\def\YOMI{#2}\else\def\YOMI{\ARG}\fi
  \index{\YOMI @#2}\@Idxcond{iroIdx}{#2}}

\@Idxcondは\Idxコマンドの中に直接書いてもいいのですが別にしてみました。

「XXX」っていうのは見た目が悪いのですが、オプション引数のデフォルトの文字列です。

コメント