对齐环境中的行与行之间过度支撑

对齐环境中的行与行之间过度支撑

我正在尝试使用下括号/上括号来表示某些术语在对齐环境中的来源。我希望下括号/上括号的工作方式是来自一行中的一个术语,并清楚地将下一行中的某些术语括起来,表明下一行中的术语来自上一行中的术语。例如,设是没有大于的部分$p(n,k)$的分区数,并且。然后:$n$$k$$p(0,k) = 1$

\begin{align*}
p(6,3) &= [p(3,3)] + \langle p(4,2) \rangle + p(5,1) \\
&= [p(0,3) + p(1,2) + p(2,1)] + \langle p(2,2) + p(3,1) \rangle + p(5,1)
\end{align*}

我想要一个$[p(0,3) + p(1,2) + p(2,1)]$指向 的上方过度支撑$[p(3,3)]$,以及一个$\langle p(2,2) + p(3,1) \rangle$指向 的上方过度支撑$\langle p(4,2) \rangle$

答案1

使用array很简单。我给出了两个版本,一个没有箭头,一个有箭头。一些局部定义有助于使代码更紧凑,因此在 的参数中array我们不需要使用@{}来抑制列间空间,而是使用C>{{}}c<{{}}这会增加空原子,以便在要插入的二元关系或操作周围形成自动空间)。

\documentclass{article}
\usepackage{amsmath}
\usepackage{array}

\begin{document}

\begin{equation*}
\setlength{\arraycolsep}{0pt}
\newcolumntype{C}{>{{}}c<{{}}}
\renewcommand{\arraystretch}{1.2}
\begin{array}{c C c C c C c}
p(6,3) &=& [p(3,3)] &+& \langle p(4,2)\rangle &+& p(5,1) \\
&=& \overbrace{\,[p(0,3)+p(1,2)+p(2,1)]\,}
&+& \overbrace{\langle p(2,2)+p(3,1)\rangle}
&+& p(5,1)
\end{array}
\end{equation*}

\begin{equation*}
\setlength{\arraycolsep}{0pt}
\newcolumntype{C}{>{{}}c<{{}}}
\begin{array}{c C c C c C c}
p(6,3) &=& [p(3,3)] &+& \langle p(4,2)\rangle &+& p(5,1) \\
&& \uparrow && \uparrow \\
&=& \overbrace{\,[p(0,3)+p(1,2)+p(2,1)]\,}
&+& \overbrace{\langle p(2,2)+p(3,1)\rangle}
&+& p(5,1)
\end{array}
\end{equation*}

\end{document}

在此处输入图片描述

在第二种情况下(带箭头),增加行距会产生不利影响。

\,在第一个对象的两侧添加了,\overbrace以避免大括号与方括号发生冲突,并且与尖括号相比产生更统一的外观。

您可以在包中使用左对齐和不对称括号abraces

\documentclass{article}
\usepackage{amsmath}
\usepackage{array}
\usepackage{abraces}

\begin{document}

\begin{equation*}
\setlength{\arraycolsep}{0pt}
\newcolumntype{C}{>{{}}c<{{}}}
\renewcommand{\arraystretch}{1.2}
\begin{array}{c C l C l C c}
p(6,3) &=& \,[p(3,3)] &+& \langle p(4,2)\rangle &+& p(5,1) \\
&=& \aoverbrace[L1U9R]{\,[p(0,3)+p(1,2)+p(2,1)]\,}
&+& \aoverbrace[L1U6R]{\langle p(2,2)+p(3,1)\rangle}
&+& p(5,1)
\end{array}
\end{equation*}

\end{document}

然而,这些参数必须“用眼睛”计算。

在此处输入图片描述

答案2

像这样吗?

在此处输入图片描述

\documentclass{article}
\usepackage{amsmath} % for \overbrace macro and align* environment

\newlength\lenA 
\newlength\lenB
\newcommand\mybox[2]{\parbox{#1}{\centering$\displaystyle #2$}}

\begin{document}

\newcommand\termA{{\overbrace{[p(0,3) + p(1,2) + p(2,1)]}^{\uparrow}}}
\newcommand\termB{{\overbrace{\langle p(2,2) + p(3,1) \rangle}^{\uparrow}}}
\settowidth\lenA{$\displaystyle\termA$}
\settowidth\lenB{$\displaystyle\termB$}

\begin{align*}
p(6,3) &= \mybox{\lenA}{[p(3,3)]} + \mybox{\lenB}{\langle p(4,2) \rangle} + p(5,1) \\
       &= \termA + \termB + p(5,1)
\end{align*}
\end{document}

答案3

另一种方式,使用alignat*eqparbox

\documentclass{article}
\usepackage{amsmath}
\usepackage{eqparbox}
\newcommand{\eqmathbox}[2][M]{\eqmakebox[#1]{$\displaystyle#2$}}

\begin{document}

\begin{alignat*}{3}
p(6,3) &= \eqmathbox{[p (3,3)] } & & +\eqmathbox[m]{ \langle p (4,2) \rangle} & & + p(5,1) \\
&={} \overbrace{\eqmathbox{\bigl[p(0,3) + p(1,2) + p(2,1)\bigr]}}^{\uparrow} & & + \overbrace{\eqmathbox[m]{\bigl\langle p(2,2) + p(3,1) \bigr\rangle}}^{\uparrow}{} & & + p(5,1)
\end{alignat*}

 \end{document}

在此处输入图片描述

相关内容