¿Cómo puedo definir un nuevo comando de índice que funcione mejor para los párrafos?

¿Cómo puedo definir un nuevo comando de índice que funcione mejor para los párrafos?

Supongamos que, en medio de mi documento, tengo un párrafo sobre búhos: Here is a new paragraph about owls. Owls are extraordinary.

Quiero indexar este párrafo usando imakeidx, así que escribo, \index{owls}Here is a new paragraph about owls. Owls are extraordinary.

Sin embargo, resulta problemático que si este párrafo termina en la parte superior de una nueva página k, entonces la entrada correspondiente a los búhos en el índice se refiere a la página anterior; tiene una página "k-1" al lado en lugar de una "k" (consulte, por ejemplo, el ejemplo de trabajo mínimo a continuación).

La solución más sencilla es mover el \indexcomando justo dentro del párrafo: Here\index{owls} is a new paragraph about owls. Owls are extraordinary.

Para mí, sin embargo, esto no es lo ideal. Tengo un documento largo y muchos de los párrafos tienen muchos \indexcomandos asociados. Mover estos \indexcomandos dentro de sus párrafos correspondientes hace que los párrafos sean menos legibles para editarlos.

Si bien lo anterior describe el caso más simple de \index, existe un problema similar al especificar un rango de páginas. Me gustaría simplemente escribir, \index{owls|(}Here is a new paragraph about owls. Owls are extraordinary.\index{owls|)}en lugar de Here\index{owls|(} is a new paragraph about owls. Owls are extraordinary.\index{owls|)}.

Esto me lleva a mi pregunta. ¿Cómo defino un nuevo comando \indexnque produzca números de página correctos en el índice para los dos casos siguientes: \indexn{owls}Here is a new paragraph about owls. Owls are extraordinary.y \indexn{owls|(}Here is a new paragraph about owls. Owls are extraordinary.\indexn{owls|)},?

A continuación se muestra un ejemplo práctico mínimo del problema.

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

Respuesta1

\mbox{}\index{owls}o \leavevmode\index{owls}funcionaría

información relacionada