
Para indexar una expresión TeX no trivial expr
, usamos el comando \index{str@expr}
, donde str
hay una representación simplificada (generalmente ASCII simple) que expr
se usará para ordenar.
Sin embargo, str@expr
se analiza incorrectamente dentro de una nota al pie:
\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}
Esto genera el siguiente .idx
archivo
\indexentry{Gnu@\gnu}{1}
\indexentry{Gnat@\gnat}{1}
\indexentry{Gnu@\gnu}{2}
\indexentry{Gnat@\texttt {Gnat}}{2}
Las dos entradas del índice para 'Gnat' difieren y, por lo tanto, \Gnat
aparecen dos veces en el índice, como se muestra en esta captura de pantalla:
¿Cómo se \footnote
modifica el \index
comando y qué se puede hacer al respecto?
Respuesta1
No se trata tanto de la @
construcción sino de la ampliación de las secuencias de control. Una solución alternativa basada enhttps://groups.google.com/forum/#!topic/comp.text.tex/_Hwo6Hapcngsugiere proporcionar un comando que podamos usar para proteger la barra invertida en la entrada del índice en la nota al pie a través de \def\indexprotect#1{\string#1}
. Como señala Ulrike Fischer, \string
ya es lo suficientemente bueno para hacerlo por sí solo:
\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}
Respuesta2
La solución de @Andrew Swann y @Ulrike Fischer (úsela \string
para escapar de la barra invertida en expr
) funciona bien, pero requiere un esfuerzo repetido en todas las notas a pie de página o subtítulos correspondientes. Por lo tanto, la solución mencionada en el comentario de @egreg,
\usepackage{bigfoot}
que solucione el problema de una vez por todas, me parece preferible.