![如何创建可引用的自定义标签?](https://linux22.com/image/309037/%E5%A6%82%E4%BD%95%E5%88%9B%E5%BB%BA%E5%8F%AF%E5%BC%95%E7%94%A8%E7%9A%84%E8%87%AA%E5%AE%9A%E4%B9%89%E6%A0%87%E7%AD%BE%EF%BC%9F.png)
我想将论文中的假设标记为类似于方程式(例如,第 3 章中的第一个假设应该是“H-3.1”)。与方程式类似,我想引用这些假设。到目前为止,我得到的是以下内容(基于此回答):
\documentclass{book}
\newcounter{hypCNT}
\newcommand{\hypCnt}[2]{\refstepcounter{hypCNT}\label{#1}H-\arabic{chapter}.\arabic{hypCNT}}
\begin{document}
\chapter{Lorem}
Hypotheses: \\
Pigs can fly (\hypCnt{hyp:H1}) \\
The world is a disk (\hypCnt{hyp:H2})\\
Hypotheses \ref{hyp:H1} on page \pageref{hyp:H1}
\end{document}
这导致:
第1章
洛雷姆
假设:
猪能飞(H-1.1
世界是一个圆盘(H-1.2
第 1 页的假设 1
这个解决方案很接近,但不是我想要的。实际上,我希望成为H-\arabic{chapter}
标签的一部分。当然,我可以定义另一个\newcommand{\refHyp}
也包含该H-\arabic{chapter}
部分的标签。但是,如果我引用另一个章节中的 H 标签,我将获得当前章节的章节号,而不是我实际引用的章节号。
另一件奇怪的事情:为什么右括号在后面消失了\hypCnt{}
?
任何想法都非常感谢!
答案1
除了使用你的假设构建之外,以下内容更适合你所追求的:
\newcounter{hypCNT}[chapter]% Hypothesis counter
% Representation of hypothesis counter: H-<chap>.<hypCNT>
\renewcommand{\thehypCNT}{H-\thechapter.\arabic{hypCNT}}
\newcommand{\hypCnt}[1]{%
\refstepcounter{hypCNT}% Step hypothesis counter
\thehypCNT% Print hypothesis counter
\label{#1}}% Mark with label
注意使用\thechapter
而不是\arabic{chapter}
。这是为了让引用依赖于计数器使用的任何类型的表示chapter
,而不是明确说明它将是\arabic
。处理子计数器时,这种递归/依赖用法很常见。
考虑阅读了解引用和标签的工作原理其中讨论了调用 时会发生什么\label{..}
。存储以供将来参考的是\@currentlabel
,它基于最后\refstepcounter
的表示进行设置 - \the<cnt>
。因此,我通过 更新了计数器的外观\thehypCNT
。