宏中的对齐环境中的自动换行

宏中的对齐环境中的自动换行

我已经给出了一个自定义命令,例如

\newcommand{\AND}[2]{\left(#1 \vee #2 \right)}

这确保我始终为公式提供正确数量的参数,并且还能处理括号。现在,当我在环境中使用此命令align并且参数变得非常长时,换行就变得必不可少。

问题在于:在align环境中我必须自己设置换行符,但是不允许在\left和之间设置换行符。\right

那么,有没有办法在这里自动换行,同时保持括号的正确大小?

到目前为止,我唯一的解决方法是在这些情况下不使用宏,因为这会导致代码不干净。

breqn软件包似乎并未修复该问题。

\documentclass[11pt, draft]{scrbook}
\usepackage{amsmath}
\usepackage{breqn}

\newcommand{\AND}[2]{\ensuremath{\left(#1\vee#2\right)}}

\begin{document}
\begin{align*}
aaa&= \AND{\sum^a_b \AND{\AND{\AND{\AND{\AND{\AND{\AND{\AND{\AND{\AND{a}{b}}{b}}{b}}{b}}{\AND{\AND{a}{\AND{a}{b}}}{\AND{a}{\AND{a}{b}}}}}{b}}{b}}{a}}{\AND{a}{\AND{\AND{a}{b}}{b}}}}{\frac{a}{\frac{a}{b}}}}{\sum^a_b \AND{c}{\frac{a}{\frac{a}{b}}}}\\
&= b
\end{align*}
\end{document}

编辑:经过一段时间的折腾,我想出了一个小的解决方法,解决了部分问题,但不是全部。我定义了一个新命令,它插入换行符并处理此换行符的括号:

\documentclass[11pt, draft]{scrbook}
\usepackage{amsmath}
\usepackage{mathtools}

\newcommand{\AND}[2]{\ensuremath{\left(#1\vee#2\right)}}
\newcommand{\ANDbr}[2]{\ensuremath{%
\begin{lgathered}[t]%
\left(#1 \vee \vphantom{#2} \right. \\
\left.\vphantom{#1\vee}#2\right)
\end{lgathered}%
}}

\begin{document}
\begin{align*}
aaa&= \ANDbr{\AND{\AND{\AND{a}{b}}{\AND{\frac{a}{b}}{c}}}{\AND{\AND{\sum_a^b a}{p}}{\AND{a}{b}}}}{\AND{\AND{\AND{a}{b}}{\AND{a}{b}}}{\AND{\AND{a}{b}}{\AND{a}{b}}}}\\
&= b
\end{align*}
\end{document}

只要我只需要一次换行,这种方法似乎就有效。\ANDbr但是第二次插入会弄乱一切。

EDIT2:我试图添加\allowbreak到的定义中\AND,但并没有改变任何东西。

答案1

我不建议使用以下代码,但它似乎可以满足您的要求:我定义一个命令,\breaktowidth您必须在其中指定块的宽度以及允许换行的宽度。然后,当然必须以不妨碍换行的方式使用\left\right;这是通过单独的命令完成的\delimiterswithbreaks

输出

\documentclass[11pt,draft]{scrbook}
\usepackage{mathtools}
\newcommand{\delimiterswithbreaks}[3]{%
  \mathopen{\left#1\vphantom{#3}\right.\hskip-\nulldelimiterspace}
  #3
  \mathclose{\hskip-\nulldelimiterspace\left.\vphantom{#3}\right#2}
  }
\newcommand{\breaktowidth}[2]{\vtop{\hsize#1\noindent$#2$}}
\newcommand{\AND}[2]{\delimiterswithbreaks{(}{)}{#1\vee#2}}
\begin{document}
\begin{align*}
aaa &= \breaktowidth{6cm}{\AND{\AND{\AND{\AND{a}{b}}{\AND{\frac{a}{b}}{c}}}{\AND{\AND{\sum_a^b a}{p}}{\AND{a}{b}}}}{\AND{\AND{\AND{a}{b}}{\AND{a}{b}}}{\AND{\AND{a}{b}}{\AND{a}{b}}}}} \\
    &= b
\end{align*}
\end{document}

注意:mathtools自动加载amsmath

相关内容