为什么我不能在 \newenvironment 中添加分割环境?

为什么我不能在 \newenvironment 中添加分割环境?

我想要一个简单的环境来制作方程列表,所以我做了一个包含方程和拆分环境的环境。代码无法编译,错误似乎无关紧要。我注意到的最紧迫的事情是“您不能在内部垂直模式下使用'\end'”。问题肯定是拆分环境。这是一个 MWE。

\documentclass{article}
\usepackage{amsmath}

\newenvironment{env}
    {\begin{equation}\begin{split}}
    {\end{split}\end{equation}}

\begin{document}
\begin{env}
    x
\end{env}
\end{document}

如果我从中删除拆分环境env,则一切都可以正常编译。此外,如果以下示例可以正常编译。那么问题是什么?

\documentclass{article}
\usepackage{amsmath}

\begin{document}
\begin{equation}
\begin{split}
    x
\end{split}
\end{equation}
\end{document}

这是运行 MWE 时出现的 LaTeX 错误。

math.tex|11 error| LaTeX Error: \begin{split} on input line 9 ended by \end{env}.
math.tex|12 error| LaTeX Error: \begin{equation} on input line 9 ended by \end{document}.
math.tex|12 error| Missing $ inserted.
math.tex|12 error| Missing } inserted.
math.tex|12 error| Missing } inserted.
math.tex|12 error| Missing } inserted.
math.tex|12 error| Missing \cr inserted.
math.tex|12 error| Missing { inserted.
math.tex|12 error| Missing { inserted.
math.tex|12 error| Extra }, or forgotten $.
math.tex|12 error| Missing $ inserted.
math.tex|12 error| Missing } inserted.
math.tex|12 error| You can't use `\end' in internal vertical mode.
math.tex|12 error| LaTeX Error: \begin{equation} on input line 9 ended by \end{document}.
math.tex|12 error| Missing } inserted.
math.tex|12 error| Missing $ inserted.
math.tex|12 error| Display math should end with $$.
math.tex|| Emergency stop.
math.tex|| ==> Fatal error occurred, no output PDF file produced!

答案1

AMS 比对需要抓取它们的主体,因此您不能在宏中隐藏结束代码(如 amsmath 文档中所述),但是如果您使用\NewDocumentEnvironment(在当前 latex 或xparse旧 latex 包中),您可以让新环境首先抓取环境主体,\end{split}以便\begin{split}

\documentclass{article}
\usepackage{amsmath}

%\usepackage{xparse} % not needed in current latex

\NewDocumentEnvironment{env}{+b}
    {\begin{equation}\begin{split}#1\end{split}\end{equation}}
    {}

\begin{document}
\begin{env}
    x
\end{env}
\end{document}

相关内容