用柜台制作标签

用柜台制作标签

我的问题有一个简单的版本,也有复杂的版本。首先是简单的版本:我想通过将常量字符串与计数器的值相结合来生成标签名称,类似于此处所做的操作:

http://tug.org/pipermail/texhax/2006-July/006599.html

\newcommand{\addnextlabel}{\stepcounter{foo}\label{bar:\arabic{foo}}}

但是当我使用它时,我收到一堆关于多重定义标签的警告。看起来它们都被命名为同一个东西,使用计数器 foo 的最高值。我猜这与 TeX 评估事物的顺序有关,如上面链接中的答案所示。有人能比那里的回复更好地解释这一点吗?

现在更复杂的问题,也是我真正想要解决的问题:我正在使用 lineno 包,它有一个\linelabel类似于 的命令\label。您可以使用 获取标签的行号\ref{labelname}。我真正想用计数器对这些标签进行编号。我尝试将链接的解决方案应用于\linelabel,但无法使其工作。有什么想法可以做到这一点吗?

答案1

  1. 您需要使用\refstepcounter而不是\stepcounter。这肯定在某处记录得很差 — 很多人都会犯这个错误。

  2. 您可能需要将 linelabel 计数器保存到您自己的计数器中,然后将其减一,然后\refstepcounter再减一。(希望这个解释不要太简短;我很着急。)

答案2

您的 \addnextlabel 在标准乳胶中工作正常(对我来说) - 您大概正在使用无数摆弄参考机制的包之一。

我希望

\newcommand{\addnextlabel}{\stepcounter{foo}%
  \edef\baz{\noexpand\label{bar:arabic{foo}}}%
  \baz
}

如果我的假设正确的话,我会为你完成这项工作。

相关内容