为方程式和对齐定义单一环境

为方程式和对齐定义单一环境

我想定义一个命令,如“\[...\]”方程对齐环境。我总是可以使用对齐,但垂直空间似乎不同,并且对于单个方程来说有点太大了。

我的问题是定义一个默认环境方程,移动到对齐什么时候&用来。

这可能吗 ?

答案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&

相关内容