\allowbreak não funciona em \index

\allowbreak não funciona em \index

Gostaria de incluir \allowbreakem uma \indexentrada, 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 \indexo 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 .idxarquivo

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

O mesmo problema com \allowbreako transformado \penalty \z@aconteceria se você tivesse algo como

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

e fazer

\indexword{abc\allowbreak def}

Usar \protect\allowbreaktambém servirá neste caso. No entanto, a classificação das entradas do índice \allowbreakprovavelmente fornecerá resultados errados.

informação relacionada