在文档末尾输出使用该命令的页码和行号的命令

在文档末尾输出使用该命令的页码和行号的命令

我需要一个命令,在文档末尾输出使用它的页码和行号。我尝试了以下代码的不同变体,但我对乳胶的了解有限。我使用它lineno来获取行号并endnotes在文档末尾添加注释。我认为一些关于乳胶扩展的知识可以帮助我,但到目前为止还没有得到。

在下面的例子中,我获得了所有带有最后使用该revised命令的页码和行号的结束注释。

你能帮我正确获取该命令使用的页码和行号吗?谢谢!

\usepackage{endnotes}
\let\footnote=\endnote

\usepackage[pagewise,switch]{lineno}
\linenumbers

\newcounter{modification}

\newcommand{\revised}[2]{%
    \stepcounter{modification}
    \linelabel{ln:line\arabic{modification}}
    #1
    \footnote{#2. Page \pageref{ln:line\arabic{modification}}, Line \ref{ln:line\arabic{modification}}, Counter \arabic{modification}}
}% revision with footnote

\begin{document}

\revised{New text 1.}{Reason of change 1.}
\revised{New text 2.}{Reason of change 2.}
\revised{New text 3.}{Reason of change 3.}

\theendnotes

\end{document}

答案1

您必须\arabic{modification}当场扩展,否则它将被逐字写在尾注的辅助文件中。

\documentclass{article}
\usepackage{endnotes}

\usepackage[pagewise,switch]{lineno}
\linenumbers

\newcounter{modification}

\newcommand{\revised}[2]{%
  \stepcounter{modification}%
  \begingroup\edef\x{\endgroup
    \noexpand\linelabel{ln:line\arabic{modification}}%
  }\x
  #1%
  \begingroup\edef\x{\endgroup
    \noexpand\endnote{\unexpanded{#2}. Page \noexpand\pageref{ln:line\arabic{modification}}, 
      Line \noexpand\ref{ln:line\arabic{modification}}, Counter \arabic{modification}}%
  }\x
}% revision with footnote

\begin{document}

\revised{New text 1.}{Reason of change 1.}

\revised{New text 2.}{Reason of change 2.}

\revised{New text 3.}{Reason of change 3.}

\nolinenumbers

\theendnotes

\end{document}

我建议不要重新定义\footnote,而是使用\endnote

在此处输入图片描述

xparse使用可以更好地控制扩展,因此代码更简单。\newcounter{modification}上面的代码\begin{document}可以改为

\usepackage{xparse}

\newcounter{modification}

\ExplSyntaxOn
\NewDocumentCommand{\revised}{mm}
 {
  \stepcounter{modification}
  \jb_revised:fnn { \arabic{modification} } { #1 } { #2 }
 }

\cs_new_protected:Nn \jb_revised:nnn
 {
  \linelabel{ln:line#1}
  #2
  \endnote{#3.~Page~\pageref{ln:line#1},~Line~\ref{ln:line#1},~Counter~#1}
 }
\cs_generate_variant:Nn \jb_revised:nnn { f }
\ExplSyntaxOff

结果相同。

相关内容