
Ich möchte es \allowbreak
in einen \index
Eintrag aufnehmen, aber ich bekomme es nicht zum Laufen. In der IDX-Datei \allowbreak
wird es in geändert \penalty \z@
, was den generierten Index beschädigt.
Wie kann ich das lösen?
Antwort1
Sie rufen \index
das 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 .idx
Datei
\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\allowbreak
ist in diesem Fall ebenfalls ausreichend. Das Sortieren der Indexeinträge mit \allowbreak
in wird jedoch wahrscheinlich zu falschen Ergebnissen führen.