我正在使用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}
输出: