
중요한 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'에 대한 두 개의 인덱스 항목은 다르므로 \Gnat
이 스크린샷에 표시된 것처럼 인덱스에 두 번 나타납니다.
명령을 어떻게 \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}
문제를 단번에 해결하는 것이 나에게는 더 나은 것 같습니다.