![如何将计数器的当前值发送到索引](https://linux22.com/image/380822/%E5%A6%82%E4%BD%95%E5%B0%86%E8%AE%A1%E6%95%B0%E5%99%A8%E7%9A%84%E5%BD%93%E5%89%8D%E5%80%BC%E5%8F%91%E9%80%81%E5%88%B0%E7%B4%A2%E5%BC%95.png)
以下是当您将所有注释发送到书的末尾时 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}