交叉引用 Alignat 环境中的自制计数器

交叉引用 Alignat 环境中的自制计数器

我正在使用alignat方程式环境。现在,我想引用此环境中的某些地方。为此,我制作了一个计数器。

\documentclass[a4paper]{article}
\usepackage[fleqn]{amsmath}
\usepackage{amssymb}
\usepackage{mathtools}


\newcommand{\scounter}{\newcounter{ct} \setcounter{ct}{0}}
\newcommand{\pcounter}{\refstepcounter{ct} \arabic{ct}}


\begin{document}

\scounter
\begin{alignat*}{20}
& \text{First object: } \pcounter. \label{one}\\
& \text{Second object: } \pcounter. \label{two} \\
\end{alignat*}

Now I want to reference to the first object: \ref{one}.
\end{document}

Latex 没有提供参考,尽管它确实给出了以下错误:Multiple \label's: label 'one' will be lost \end{alignat}

有人能告诉我如何使引用起作用吗?

谢谢!

PS 我不想使用常规引用方法(在每行右侧显示方程编号)。这是因为我想使用在等号上方显示计数器的值\stackrel

答案1

您不能修改方程式数字的打印方式吗?

amsmath只需在序言中添加以下几行来更改原始定义即可:

\makeatletter
\def\tagform@#1{\maketag@@@{\ignorespaces$\stackrel{#1}{=}$\unskip\@@italiccorr}}
\makeatother

完成 MWE:

\documentclass[a4paper]{article}
\usepackage[fleqn]{amsmath}
\usepackage{amssymb}
\usepackage{mathtools}

\makeatletter
\def\tagform@#1{\maketag@@@{\ignorespaces$\stackrel{#1}{=}$\unskip\@@italiccorr}}
\makeatother


\begin{document}

\begin{alignat}{20}
& \text{First object: } . \label{one}\\
& \text{Second object: } . \label{two}
\end{alignat}

Now I want to reference to the first object: \ref{one}.
\end{document} 

输出:

enter image description here

相关内容