我想定义一个命令,如“\[...\]”方程和对齐环境。我总是可以使用对齐,但垂直空间似乎不同,并且对于单个方程来说有点太大了。
我的问题是定义一个默认环境方程,移动到对齐什么时候&用来。
这可能吗 ?
答案1
%! TEX program = lualatex
\documentclass{article}
\usepackage{amsmath}
\ExplSyntaxOn
\NewDocumentEnvironment{mymath*}{b}{
\tl_if_in:nnTF {#1} {&} {
\begin{align*} #1 \end{align*}
} {
\begin{equation*} #1 \end{equation*}
}
}{
}
\ExplSyntaxOff
\begin{document}
\begin{mymath*}
1 = 2
\end{mymath*}
\begin{mymath*}
1 &= 2
\end{mymath*}
\begin{equation*}
\verb|123|
\end{equation*}
% cases where the new environment fail
%\def\tabmark{&}
%\begin{mymath*}
% 1 \tabmark = 2
%\end{mymath*}
%\begin{mymath*}
% \verb|123|
%\end{mymath*}
\end{document}
不言自明。
缺点是显而易见的,参考最后 2 个注释掉的块。(以及在equation*
环境中丢失 synctex)
还有另一种情况,当其中存在嵌套环境时,例如align*
使用或类似环境,您可以选择使用更复杂的解析器来解决这个问题,但这就是想法。equation*
split
aligned
&