如何创建可引用的自定义标签?

如何创建可引用的自定义标签?

我想将论文中的假设标记为类似于方程式(例如,第 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

相关内容