makeidx で行番号 (lineno) を使用する方法はありますか?

makeidx で行番号 (lineno) を使用する方法はありますか?

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、段落が処理されているときの値 (7 行あります) であるため、8 が取得されます。

メカニズムを使用する必要があります\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)を使用するため、2 回の実行が必要です。

ここに画像の説明を入力してください

関連情報