我已经给出了一个自定义命令,例如
\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
!