\allowbreak funktioniert nicht in \index

\allowbreak funktioniert nicht in \index

Ich möchte es \allowbreakin einen \indexEintrag aufnehmen, aber ich bekomme es nicht zum Laufen. In der IDX-Datei \allowbreakwird es in geändert \penalty \z@, was den generierten Index beschädigt.

Wie kann ich das lösen?

Antwort1

Sie rufen \indexdas Argument wahrscheinlich als einen anderen Befehl auf. Hier ist eine Emulation:

\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}

Dadurch entsteht folgende .idxDatei

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

Das gleiche Problem mit \allowbreak„turned into“ \penalty \z@würde auftreten, wenn Sie etwas wie

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

und TU

\indexword{abc\allowbreak def}

Die Verwendung von \protect\allowbreakist in diesem Fall ebenfalls ausreichend. Das Sortieren der Indexeinträge mit \allowbreakin wird jedoch wahrscheinlich zu falschen Ergebnissen führen.

verwandte Informationen