lineno
패키지에 있는 숫자를 카운터로 사용할 수 있나요 imakeidx
? 아래 MWE에서 볼 수 있듯이 xpatch
인덱스에 대한 카운터를 으로 변경하려고 시도했지만 thelinenumber
성공하지 못했습니다.
\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}
답변1
을 직접 사용할 수는 없습니다 \thelinenumber
. 이는 단락이 이미 줄로 분할되었을 때 계산된 줄 번호를 참조하기 때문입니다.
\thelinenumber
패치를 사용하면 잘못된 시간에 확장되었기 때문에 얻는 숫자는 1입니다 . 하지만 \noexpand\thelinenumber
8을 얻게 됩니다. 왜냐하면 단락이 처리될 때의 값(7줄)이기 때문입니다.
메커니즘 을 사용해야 합니다 \linelabel
.
\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}
이를 사용하려면 두 번의 실행이 필요합니다 \ref
(실제로 확장 가능한 버전 \getrefnumber
).