是否可以在 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}