有没有一种简单的方法可以准确计算出具有标识符的方程式的数量?如果它们都是自动生成的,那么就\arabic{equation}
可以了,但是方程式也可以使用 手动指定标识符\tag
。
一个解决方案是简单地重新定义\tag
为增加其他计数器,然后\arabic{equation}
在最后对该计数器求和。然而,事实证明这并不完全是简单的正如我的失败尝试所显示的。
下面的 MWE 计数错误,应该是 2。另外,不确定是否有其他常用方法将标识符添加到方程式中。
代码
\documentclass{article}
\usepackage{amsmath}
\newcounter{taggedEquations}
\let\OldTag\tag
\renewcommand*{\tag}[1]{\stepcounter{taggedEquations}\OldTag{#1}}
\begin{document}
Auto numbered
\begin{align}
y &= 2x
\end{align}
Manually labelled
\begin{align}
y &= x \tag{x}\label{eq:foo}
\end{align}
\addtocounter{taggedEquations}{\arabic{equation}}
Numbered Equations = \arabic{taggedEquations}
\end{document}
答案1
与其挂接到用户级tag
命令,不如挂接到所有标签(无论是自动标签还是来自标签)使用的较低级别的标签格式化命令\tag
。此外,您还需要考虑 AMS 比对执行两次的事实,以测量比对宽度。
由于\eqref
也使用\maketag@@@
(通过\tagform@
),设置\measuring@true
可确保引用方程时计数器不会增加。
\documentclass{article}
\usepackage{amsmath}
\newcounter{taggedEquations}
\makeatletter
\def\eqref#1{{\textup{\measuring@true\tagform@{\ref{#1}}}}}%
\def\maketag@@@#1{\hbox{%
\ifmeasuring@\else
\stepcounter{taggedEquations}%
\fi
\m@th\normalfont#1}}
\makeatother
\begin{document}
Auto numbered
\begin{align}
y &= 2x
\end{align}
Manually labelled
\begin{align}
y &= x \tag{x}\label{eq:foo}
\end{align}
Equation Reference: \eqref{eq:foo}
Numbered Equations = \arabic{taggedEquations}
\end{document}