正如所述多重分割方程我想创建一个方程式环境,aligned
可以插入和拆分方程式\n
。我猜我在那里找到的解决方案有点不靠谱,但在一般情况下是可行的。
现在奇怪的是,如果我只将一行(即一行aligned
,\n
无论是否被分割)放入环境中,如下所示:
\documentclass{article}
\usepackage[fleqn]{amsmath}
\usepackage{environ}
\makeatletter
\NewEnviron{multeq}{%
\let\n\math@cr
\begin{gather}
\def\math@cr{\end{aligned}\n\begin{aligned}}
\begin{aligned}
\BODY
\end{aligned}
\end{gather}
}
\makeatother
\begin{document}
\begin{multeq}
1-1=9
\end{multeq}
\end{document}
编译将失败,错误如下
! Missing $$ inserted.
<to be read again>
\egroup
l.20 \end{multeq}
所以,我无法弄清楚的问题是:当只有一个时有什么区别?此外,现在在里面使用和aligned
似乎存在问题。如果有人有改进建议,那就太好了!\intertext
\shortintertext
multeq
答案1
有个想法:我们不要对任何事物进行重新定义(这必然会引起麻烦某处),而是提前进行搜索和替换。
\documentclass{article}
\usepackage[fleqn]{amsmath}
\usepackage{xstring}
\usepackage{environ}
\NewEnviron{multeq}{%
\def\n{\\}\noexpandarg
\expandafter\StrSubstitute\expandafter{\BODY}{\\}{\end{aligned}\\\begin{aligned}}[\newBODY]
\begin{gather}
\begin{aligned}
\newBODY
\end{aligned}
\end{gather}
}
\begin{document}
\begin{multeq}
0 + 0 = 0\n
0 * 0 = 0\\
1 + 1 = 2\n
1 * 1 = 1
\end{multeq}
\begin{multeq}
0 + 0 = 0
\end{multeq}
\end{document}