强制对 amsmath `equation*` 进行编号?

强制对 amsmath `equation*` 进行编号?

是否可以在 amsmath 环境中强制自动计算方程式编号equation*?例如

\begin{equation*} \dotag
x^2
\end{equation*}

其中 的效果\dotag是 转化equation*equation

我在看amsmath.sty

\renewenvironment{equation}{%
  \incr@eqnum
  \mathdisplay@push
  \st@rredfalse \global\@eqnswtrue
  \mathdisplay{equation}%
}{%
  \endmathdisplay{equation}%
  \mathdisplay@pop
  \ignorespacesafterend
}
\newenvironment{equation*}{%
  \mathdisplay@push
  \st@rredtrue \global\@eqnswfalse
  \mathdisplay{equation*}%
}{%
  \endmathdisplay{equation*}%
  \mathdisplay@pop
  \ignorespacesafterend
}

并且看到未加星号的版本和加星号的版本之间的区别是一个额外的命令\incr@eqnum,但是将此代码添加到equation*我的文档中的环境中不起作用。

背景:在 Pandoc 的 markdown 中包含显示数学的首选方法是将它们括在一对中$$。对于 LaTeX 输出,它们被翻译成\[\],并且由于amsmath包含在默认模板中,它们就像一个equation*环境。有解决方法,但这种方式有几个优点。

答案1

这个怎么样?我\incr@eqnum按照您的建议使用,但也通过添加方程编号\tag

\documentclass{article}
\usepackage{amsmath}
\makeatletter
\newcommand\dotag{\incr@eqnum\tag{\number\value{equation}}}
\makeatother
\begin{document}
\begin{equation*} \dotag
x^2
\end{equation*}
\begin{equation}
y^2
\end{equation}
\begin{equation*} \dotag
z^2
\end{equation*}
\end{document}

在此处输入图片描述

或者只是更新环境的定义equation*

\documentclass{article}
\usepackage{amsmath}
\makeatletter
\renewenvironment{equation*}{%
  \incr@eqnum
  \mathdisplay@push
  \st@rredfalse \global\@eqnswtrue
  \mathdisplay{equation}%
}{%
  \endmathdisplay{equation}%
  \mathdisplay@pop
  \ignorespacesafterend
}
\makeatother
\begin{document}
\begin{equation*}
x^2
\end{equation*}
\begin{equation}
y^2
\end{equation}
\begin{equation*} 
z^2
\end{equation*}
\end{document}

相关内容