¿Hay alguna forma de utilizar el número de línea (lineno) en makeidx?

¿Hay alguna forma de utilizar el número de línea (lineno) en makeidx?

¿Es posible utilizar los números del linenopaquete como contador imakeidx? Como muestra el MWE a continuación, intenté usar xpatchpara cambiar el contador del índice a thelinenumber, pero sin éxito:

\documentclass{article}

\usepackage{lineno}



\usepackage{imakeidx}
\usepackage{xpatch}
\makeindex
\makeatletter



  \makeatletter
\patchcmd{\@wrindex}{\thepage}{\thelinenumber}{}{}
\makeatother



\begin{document}
\linenumbers


Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed dapibus 
facilisis magna, id sodales ante convallis vitae. In a porttitor nibh, 
eget vehicula dui\index{test}. Integer feugiat dui nec neque porttitor, non eleifend 
erat lobortis. Sed varius malesuada nisi, id vulputate ante commodo vitae. 
Nam non felis at ante mollis commodo eget porttitor ex. Donec in quam diam. 
Maecenas fringilla, turpis a egestas pulvinar, massa lacus molestie enim, 
vel vulputate lorem ante ac velit. Nam ex nulla, venenatis et tortor at, 
efficitur fringilla ante.



\clearpage  \printindex

\end{document}

Respuesta1

No puedes usar directamente \thelinenumber, porque esto se referiría al número de línea calculado cuando el párrafo ya se ha dividido en líneas.

Con tu parche, el número que obtienes es 1, porque \thelinenumberse expande en el momento equivocado; pero con \noexpand\thelinenumberobtendrías 8, porque ese es el valor cuando se está procesando el párrafo (tiene siete líneas).

Necesitas usar el \linelabelmecanismo.

\documentclass{article}

\usepackage{lineno,refcount}
\usepackage{imakeidx}
\usepackage{xpatch}

\makeindex

\makeatletter
\newcommand{\lineindex}[1]{\linelabel{#1}\index{#1}}
\patchcmd{\@wrindex}{\thepage}{\getrefnumber{#2}}{}{}
\makeatother

\begin{document}
\linenumbers

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed dapibus 
facilisis magna, id sodales ante convallis vitae. In a porttitor nibh, 
eget vehicula dui\lineindex{dui}. Integer feugiat dui nec neque porttitor, non eleifend 
erat lobortis. Sed varius malesuada nisi, id vulputate ante commodo vitae. 
Nam non felis at ante mollis commodo eget porttitor ex. Donec in quam diam. 
Maecenas fringilla, turpis a egestas pulvinar, massa lacus molestie enim\lineindex{enim}, 
vel vulputate lorem ante ac velit. Nam ex nulla, venenatis et tortor at, 
efficitur fringilla ante.

\printindex

\end{document}

Esto requiere dos ejecuciones, ya que utiliza \ref(en realidad, la versión ampliable \getrefnumber).

ingrese la descripción de la imagen aquí

información relacionada