
重要な TeX 式 をインデックスするにはexpr
、 コマンド を使用します\index{str@expr}
。ここで、はソートに使用される のstr
簡略化された (通常はプレーン ASCII) 表現です。expr
ただし、str@expr
脚注内では誤って解析されます。
\documentclass{report}
\usepackage{imakeidx}
\makeindex
\def\gnu{\texttt{Gnu}}
\def\gnat{\texttt{Gnat}}
\begin{document}
Some text\index{Gnu@\gnu}\index{Gnat@\gnat}.
\pagebreak
Some more text\index{Gnu@\gnu}.\footnote
{A footnote.\index{Gnat@\gnat}}
\printindex
\end{document}
これにより、次の.idx
ファイルが生成されます
\indexentry{Gnu@\gnu}{1}
\indexentry{Gnat@\gnat}{1}
\indexentry{Gnu@\gnu}{2}
\indexentry{Gnat@\texttt {Gnat}}{2}
「Gnat」の 2 つのインデックス エントリは異なるため、\Gnat
このスクリーンショットに示すように、インデックスに 2 回表示されます。
\footnote
コマンドを変更するにはどうすればよいでしょうか\index
。また、それに対して何ができるでしょうか。
答え1
これは構造の問題ではなく@
、制御シーケンスの拡張の問題です。https://groups.google.com/forum/#!topic/comp.text.tex/_Hwo6Hapcngは、脚注の索引エントリ内のバックスラッシュを保護するために使用できるコマンドを提供することを提案しています\def\indexprotect#1{\string#1}
。Ulrike Fischer が指摘しているように、\string
はそれ自体でそれを行うのに十分です。
\documentclass{report}
\usepackage{imakeidx}
\makeindex
\def\gnu{\texttt{Gnu}}
\def\gnat{\texttt{Gnat}}
\begin{document}
Some text\index{Gnu@\gnu}\index{Gnat@\gnat}.
\pagebreak
Some more text\index{Gnu@\gnu}.\footnote
{A footnote.\index{Gnat@\string\gnat}}
\printindex
\end{document}
答え2
@Andrew Swann と @Ulrike Fischer による解決策 (\string
のバックスラッシュをエスケープするために使用expr
) はうまく機能しますが、関連するすべての脚注またはキャプションで繰り返し作業が必要になります。したがって、@egreg のコメントで言及されている解決策は、
\usepackage{bigfoot}
この問題を完全に解決するこの方法の方が、私にとっては好ましいように思われます。