Gibt es eine Möglichkeit, die Zeilennummer (lineno) in makeidx zu verwenden?

Gibt es eine Möglichkeit, die Zeilennummer (lineno) in makeidx zu verwenden?

linenoIst es möglich, die Zahlen aus dem Paket als Zähler in zu verwenden imakeidx? Wie das MWE unten zeigt, habe ich versucht, xpatchden Zähler für den Index mithilfe von in zu ändern thelinenumber, jedoch ohne Erfolg:

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

Antwort1

Sie können nicht direkt verwenden \thelinenumber, da sich dies auf die Zeilennummer beziehen würde, die berechnet wird, wenn der Absatz bereits in Zeilen aufgeteilt wurde.

Mit Ihrem Patch erhalten Sie die Zahl 1, weil \thelinenumberzum falschen Zeitpunkt erweitert wird. Mit \noexpand\thelinenumbererhalten Sie jedoch 8, weil dies der Wert beim Verarbeiten des Absatzes ist (er hat sieben Zeilen).

Sie müssen den \linelabelMechanismus verwenden.

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

Hierzu sind zwei Durchläufe nötig, damit es genutzt werden kann \ref(eigentlich die erweiterbare Variante \getrefnumber).

Bildbeschreibung hier eingeben

verwandte Informationen