在 LaTeX 中,当我需要创建一个没有数字的等式时,我会写
\[ x=y \]
(或使用equation*
),当我需要一个带有数字/标签的方程式时,我会这样做
\begin{equation}
x=y \label{eq:myeq}
\end{equation}
我的问题是:有没有办法以某种方式结合这两种模式,以便只需要标签有一个方程编号?
换句话说,我想以某种方式做到这一点,这样写的东西
\[ x=y \label{eq:myeq} \]
生成一个带有数字和标签的方程式,但书写\[ x=y \]
仍然只生成一个方程式。在我看来,这是一种更优雅的做事方式。
答案1
我真的不推荐这样做,但这里有一种方法可以\[...\]
达到相同的效果\begin{equation}...\end{equation}
(基本上是正确的,因为两个环境$$...$$
最终都会再次使用)
amsmath
但是,它不适用于!
\documentclass{article}
\usepackage{xpatch}
\let\[\equation
\let\]\endequation
\newif\iflabelused
\makeatletter
\xpretocmd{\[}{\global\labelusedfalse}{}{}
\xpretocmd{\label}{\global\labelusedtrue}{}{}
\xpretocmd{\]}{%
\iflabelused
\global\labelusedfalse%
\else
\let\eqno\relax
\let\@eqnnum\relax
\global\labelusedfalse
\addtocounter{equation}{-1}% Correct the value of the equation counter!
\fi
}{}{}
\makeatother
\begin{document}
\[
E = mc^{2} \label{foo}
\]
\[
E^{2} = (mc^{2})^{2} + (pc)^{2}
\]
\[
E = mc^{2} \label{fooagain}
\]
\[
E^{2} = (mc^{2})^{2} + (pc)^{2}
\]
\end{document}