
Gostaria de incluir \allowbreak
em uma \index
entrada, mas não consigo fazê-la funcionar. O \allowbreak
é alterado para \penalty \z@
no arquivo .idx, o que corrompe o índice gerado.
Como posso resolver isso?
Responder1
Você provavelmente está chamando \index
o argumento para outro comando; aqui está uma emulação:
\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}
Isso produz o seguinte .idx
arquivo
\indexentry{abcdef@abc\allowbreak def}{1}
\indexentry{ghijkl@ghi\penalty \z@ jkl}{1}
\indexentry{mnopqr@mno\allowbreak pqr}{1}
O mesmo problema com \allowbreak
o transformado \penalty \z@
aconteceria se você tivesse algo como
\newcommand{\indexword}[1]{#1\index{#1}}
e fazer
\indexword{abc\allowbreak def}
Usar \protect\allowbreak
também servirá neste caso. No entanto, a classificação das entradas do índice \allowbreak
provavelmente fornecerá resultados errados.