计算标记方程的数量

计算标记方程的数量

有没有一种简单的方法可以准确计算出具有标识符的方程式的数量?如果它们都是自动生成的,那么就\arabic{equation}可以了,但是方程式也可以使用 手动指定标识符\tag

一个解决方案是简单地重新定义\tag为增加其他计数器,然后\arabic{equation}在最后对该计数器求和。然而,事实证明这并不完全是简单的正如我的失败尝试所显示的。

下面的 MWE 计数错误,应该是 2。另外,不确定是否有其他常用方法将标识符添加到方程式中。

enter image description here

代码

\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可确保引用方程时计数器不会增加。

enter image description here

\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} 

相关内容