\footnote는 \index에서 @-construct를 분리합니다.

\footnote는 \index에서 @-construct를 분리합니다.

중요한 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}

문제를 단번에 해결하는 것이 나에게는 더 나은 것 같습니다.

관련 정보