\allowbreak no funciona en \index

\allowbreak no funciona en \index

Me gustaría incluirlo \allowbreaken una \indexentrada pero no consigo que funcione. Se \allowbreakcambia \penalty \z@en el archivo .idx, lo que daña el índice generado.

¿Como puedo resolver esto?

Respuesta1

Probablemente esté invocando \indexel argumento de otro comando; aquí hay una emulación:

\documentclass{article}
\usepackage{makeidx}
\makeindex

\begin{document}

a\index{abcdef@abc\allowbreak def}

% now do the call in the argument of a command
\textbf{g\index{ghijkl@ghi\allowbreak jkl}}

% now use the proper input
\textbf{m\index{mnopqr@mno\protect\allowbreak pqr}}

\printindex

\end{document}

Esto produce el siguiente .idxarchivo

\indexentry{abcdef@abc\allowbreak def}{1}
\indexentry{ghijkl@ghi\penalty \z@ jkl}{1}
\indexentry{mnopqr@mno\allowbreak pqr}{1}

El mismo problema con \allowbreakconvertido \penalty \z@ocurriría si tienes algo como

\newcommand{\indexword}[1]{#1\index{#1}}

y hacer

\indexword{abc\allowbreak def}

Usar \protect\allowbreaktambién servirá en este caso. Sin embargo, ordenar las entradas del índice \allowbreakprobablemente dará resultados incorrectos.

información relacionada