Wie kann ich einen neuen Indexbefehl definieren, der für Absätze besser funktioniert?

Wie kann ich einen neuen Indexbefehl definieren, der für Absätze besser funktioniert?

Angenommen, ich habe in der Mitte meines Dokuments einen Absatz über Eulen: Here is a new paragraph about owls. Owls are extraordinary.

Ich möchte diesen Absatz mit imakeidx indizieren, also schreibe ich: \index{owls}Here is a new paragraph about owls. Owls are extraordinary.

Problematisch ist jedoch, dass, wenn dieser Absatz am Anfang einer neuen Seite k landet, der Eintrag für Eulen im Index auf die vorherige Seite verweist; daneben steht die Seite „k-1“ statt eines „k“ (siehe beispielsweise das minimale funktionierende Beispiel unten).

\indexDie einfachste Lösung besteht darin, den Befehl direkt in den Absatz zu verschieben :Here\index{owls} is a new paragraph about owls. Owls are extraordinary.

Für mich ist das allerdings nicht ideal. Ich habe ein langes Dokument und viele der Absätze haben viele zugehörige \indexBefehle. Das Verschieben dieser \indexBefehle in die entsprechenden Absätze macht die Absätze für die Bearbeitung weniger lesbar.

Während oben der einfachste Fall von beschrieben wird \index, gibt es ein ähnliches Problem bei der Angabe eines Seitenbereichs. Ich möchte einfach und \index{owls|(}Here is a new paragraph about owls. Owls are extraordinary.\index{owls|)}statt schreiben Here\index{owls|(} is a new paragraph about owls. Owls are extraordinary.\index{owls|)}.

Dies führt mich zu meiner Frage. Wie definiere ich einen neuen Befehl, \indexnder in den folgenden beiden Fällen korrekte Seitenzahlen im Index ausgibt: \indexn{owls}Here is a new paragraph about owls. Owls are extraordinary.und, \indexn{owls|(}Here is a new paragraph about owls. Owls are extraordinary.\indexn{owls|)}?

Unten finden Sie ein minimales funktionierendes Beispiel des Problems.

\documentclass{book}

\usepackage{imakeidx}
\makeindex

\begin{document}

% This code block just generates 552 copies of the word "lorem".
\newcount\zz
\loop
lorem
\advance\zz1
\ifnum\zz<552
\repeat

\index{owls}Here is a paragraph about owls.  Owls are extraordinary.
%\index{owls|(}Here is a new paragraph about owls.  Owls are extraordinary.\index{owls|)}

\printindex

\end{document}

Antwort1

\mbox{}\index{owls}oder \leavevmode\index{owls}würde funktionieren

verwandte Informationen