如何将计数器的当前值发送到索引

如何将计数器的当前值发送到索引

以下是当您将所有注释发送到书的末尾时 pagnote 包的行为的简化。

当笔记中某个名称需要索引时,最好将段落号或页面行号跟在页码后面。

使用下面的简单代码,我在调用 printindex 时获得了计数器值的三倍(即 3)。我尝试了\expandafter\edef,但没有得到任何结果。感谢您的帮助,André

\documentclass{book}
\usepackage{makeidx}
\makeindex
\begin{document}

\newcounter{np}
\setcounter{np}{0}
\def\pageline#1{page #1, line \arabic{np}} 

\newenvironment{noteline}{\refstepcounter{np}\noindent\textbf{\arabic{np}.}\space}{\medskip\par}

\begin{noteline} Lion. \index{lion|pageline}\end{noteline}

\begin{noteline} Elephant. \index{elephant|pageline}\end{noteline}

\begin{noteline} Gazelle. \index{gazelle|pageline}\end{noteline}

\printindex

\end{document} 

答案1

这是一个解决方案,它将计数器的扩展值np作为 的第一个参数\pageline,将索引项作为第二个参数。该命令\indexpl{term}替换\index{term|pageline}

\pageline用以下几行替换您的定义:

\newcommand\pageline[2]{page #2, line #1}
\newcommand\indexpl[1]{%
  \edef\indexplx{\noexpand\index{#1|pageline{\arabic{np}}}}%
  \indexplx
}

这是完整的示例及其输出。

\documentclass{book}
\usepackage{makeidx}
\makeindex
\newcounter{np}
\setcounter{np}{0}
\newcommand\pageline[2]{page #2, line #1}
\newcommand\indexpl[1]{%
  \edef\indexplx{\noexpand\index{#1|pageline{\arabic{np}}}}%
  \indexplx
}
\newenvironment{noteline}{\refstepcounter{np}\noindent\textbf{\arabic{np}.}\space}{\medskip\par}
\begin{document}
\begin{noteline} Lion. \indexpl{lion}\end{noteline}
\begin{noteline} Elephant. \indexpl{elephant}\end{noteline}
\begin{noteline} Gazelle. \indexpl{gazelle}\end{noteline}
\printindex
\end{document}

在此处输入图片描述

相关内容