带自动编号的方程

带自动编号的方程

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

相关内容