TeXの記憶(68) — \indexで出力するページ番号を加工する

\indexコマンドを使うと、

\indexentry{よみ@索引項目}{ページ番号}

になりますが、「ページ番号」に文字を加えて

\indexentry{よみ@索引項目}{ページ番号f}
\indexentry{よみ@索引項目}{ページ番号ff}

のように出力する必要がありました。もちろん「f」の付かない項目もあります。

実際の出力例です。

1009

困ったときはLaTeXソース texmf-dist/source/latex/base 頼りです。この中にあるltidxglo.dtx の中を探すと\indexコマンドを書き出す部分が\@wrindexであることが分かりました。

ここにちょっとマクロを追加して、条件によって「f」と「ff」を出力するようにしました。条件はスイッチを2つ追加しました。

\newif\ifindF
\indFfalse
\newif\ifindFF
\indFFfalse
\def\@wrindex#1{%
  \protected@write\@indexfile{}%
  {\string\indexentry{#1}{\thepage
      \ifindF f\else\ifindFF ff\fi\fi}}%
  \endgroup
  \global\indFfalse\global\indFFfalse
  \@esphack}

指定は最初\indF(または\indFF)をtrueにすれば、\indexコマンドの最後でfalse直すようにしています。このコマンドを使う頻度が少ないのでこの方法がいちばん手間が少なそうです。

\indFFtrue\indFFtrue\index{ひてい@否定}
\indFtrue\indFtrue\index{ひていろんりせき@否定論理積}
\index{ひていろんりわ@否定論理和}

コメント