lineno
Ist es möglich, die Zahlen aus dem Paket als Zähler in zu verwenden imakeidx
? Wie das MWE unten zeigt, habe ich versucht, xpatch
den 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 \thelinenumber
zum falschen Zeitpunkt erweitert wird. Mit \noexpand\thelinenumber
erhalten Sie jedoch 8, weil dies der Wert beim Verarbeiten des Absatzes ist (er hat sieben Zeilen).
Sie müssen den \linelabel
Mechanismus 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
).