如何用计数器给出的标签定义标签系统?

如何用计数器给出的标签定义标签系统?

我想要两个命令\makelabel{foo}\referlabel{foo}像示例中那样使用

\documentclass{article}
\usepackage{amsmath}
\begin{document}
 \[ A \overset{\makelabel{foo}}{=} B \overset{\makelabel{bar}}{=} C \]
 where \referlabel{foo} is given by \ldots and \referlabel{bar} is given by \ldots
\[ C \overset{\makelabel{foobar}}{=} D\]
Equality \referlabel{foobar} \ldots
\end{document}

使得输出与代码相同

\documentclass{article}
\usepackage{amsmath}
\begin{document}
 \[ A \overset{(1)}{=} B \overset{(2)}{=} C \]
 where (1) is given by \ldots and (2) is given by \ldots
\[ C \overset{(3)}{=} D\]
Equality (3) \ldots
\end{document}

也就是说,标签应该从计数器创建。可能的话,\referlabel{foo}应该创建一个超链接\makelabel{foo}。您能给我指出现有的解决方案或指出如何实现命令吗?

答案1

\makelabel已经是一个已知命令,因此我将界面更改为\setlabel/ \reflabel

在此处输入图片描述

\documentclass{article}
\usepackage{amsmath}

\makeatletter
\newcounter{labelcnt}
\renewcommand{\thelabelcnt}{(\arabic{labelcnt})}
\newcommand{\setlabel}[1]{%
  \refstepcounter{labelcnt}\ltx@label{lbl:#1}%
  {\text{\upshape\thelabelcnt}}%
}
\newcommand{\reflabel}[1]{\text{\upshape\ref{lbl:#1}}}
\makeatother

\begin{document}

\[
  A \overset{\setlabel{foo}}{=} B \overset{\setlabel{bar}}{=} C
\]
where~\reflabel{foo} is given by \ldots and~\reflabel{bar} is given by \ldots
\[
  C \overset{\setlabel{foobar}}{=} D
\]
Equality~\reflabel{foobar} \ldots

\end{document}

\label为了避免加载“多个”错误amsmath,我们使用传统的 LaTeX\label宏,存储在 中\ltx@label

相关内容