使 \[ 和 \] 表现为 \begin{gather*} 和 \end{gather*}

使 \[ 和 \] 表现为 \begin{gather*} 和 \end{gather*}

我正在尝试重新定义\[和,\]使它们的行为与\begin{gather*}和一样end{gather*}。我一直使用这样做\DeclareRobustCommmand;但是,当我尝试编译以下最小程序时:

\documentclass[10pt,oneside,a4paper]{article}
\usepackage[english]{babel}
\usepackage{amsmath}
\let\equation\gather
\let\endequation\endgather
\DeclareRobustCommand{\[}{\begin{gather*}}
\DeclareRobustCommand{\]}{\end{gather*}}
\begin{document}
\[ 2+2=4 \]
\end{document}

我收到此错误:

! LaTeX Error: \begin{gather*} on input line 9 ended by \end{document`.

gather如果我将其替换为,则不会发生这种情况equation。这是怎么回事?

答案1

你不能这样做,因为 TeX 需要 \end{gather*}才能知道哪里gather*结束。需要一个低级命令定义

\protected\def\[#1\]{\begin{gather*}#1\end{gather*}

但我不推荐这样做,因为一行显示的方程式需要周围不同的垂直间距,这\[...\](或equation*)确保。

答案2

@Ryan Reich:您的观点最接近。可以对 AMS 代码进行一些更改,以允许 OP 寻求的缩写类型。这种情况经常出现。从以下代码片段中可以明显看出 Michael Downes(许多原始 AMS 内容的编码员)的逻辑:

\edef\begin@stack{%
   \push@begins#1\begin\end \expandafter\@gobble\begin@stack}

在看到当前最顶层环境的结束之前,该堆栈不会停止构建。

相关内容