在 alignat 环境中对齐

在 alignat 环境中对齐

以下代码在 alignat 环境中有三种对齐方式。我显示了 $\vert xy + xz + yz \vert$ 和 $\vert x + y + z \vert$ 的等效表达式。我希望所有“=”都对齐。它们确实对齐了。我希望第 1、2 和 5 行中 $\vert xy + xz + yz \vert$ 之后的第一个“+”彼此对齐,并与第 2、3、4、5 和 7 行中 $\vert x + y + z \vert$ 之后的第一个“+”对齐。它们大多数都对齐了。第 2 和 3 行中 $\vert x + y + z \vert$ 之后的第一个“+”略有偏移,因为“+”和“[”之间的间距太短了。为什么这两行的间距不合适?为什么所有这些“+”都被人为地向右移动了?我是否必须在这些行中的“+”左侧插入一个空格“{}”才能获得适当的空间?在另一篇文章中,有人建议使用“\mathrlap”命令来获得正确的对齐方式。它在那篇文章中给了我正确的对齐方式。我不知道它的作用是什么,所以我不知道如何使它适应这个新代码。我认为它的意思是制作一个没有宽度的框并将文本放在它的右侧。对吗?(第三个对齐方式是正确的。)

\documentclass[10pt]{amsart}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{amsthm}
\usepackage{newlfont}
\usepackage{mathtools}
\usepackage{tikz}

\begin{document}

\begin{alignat*}{3}
\MoveEqLeft[2] \vert xy + xz + yz \vert^{2} \\
&= 3 &&+ \bigl[&&\cos(2a + b + c) + \cos(a + 2b + c) + \cos(a + b + 2c) \\
&&&&&+ \cos(a - b) + \cos(a - c) + \cos(b - c)\bigr] \\
&&&+ \bigl[&&\cos(a - b) + \cos(a - c) + \cos(b - c) \\
&&&&&- \bigl(\cos(2a + b + c) + \cos(a + 2b + c) + \cos(a + b + 2c)\bigr) \bigr] \\
&= 3&&\mathrlap{{}+ 2\bigl(\cos(a - b) + \cos(a - c) + \cos(b - c)\bigr).}
\intertext{Likewise,}
\MoveEqLeft[2] \vert x + y + z \vert^{2} \\
&= \mathrlap{[\cos{a} + \cos{b} + \cos{c}]^{2} + [\sin{a} + \sin{b} + \sin{c}]^{2}} \\
&= 3 &&\mathrlap{+ 2\cos{a}\cos{b} + 2\cos{a}\cos{c} + 2\cos{b}\cos{c}} \\
&&&\mathrlap{+ 2\sin{a}\sin{b} + 2\sin{a}\sin{c} + 2\sin{b}\sin{c}} \\
&= 3&& + \bigl[&&\cos(a + b) + \cos(a + c) + \cos(b + c) \\
&&&&&+ \cos(a - b) + \cos(a - c) + \cos(b - c)\bigr] \\
&&&+ \bigl[&&\cos(a - b) + \cos(a - c) + \cos(b - c) \\
&&&&&- \bigl(\cos(a + b) + \cos(a + c) + \cos(b + c)\bigr) \bigr] \\
&= 3&&\mathrlap{{}+ 2\bigl(\cos(a - b) + \cos(a - c) + \cos(b - c)\bigr).}
\end{alignat*}
\end{document}

答案1

我猜你正在寻找以下布局

在此处输入图片描述

改变

\MoveEqLeft[2] \abs{xy + xz + yz}^{2} \\

\mathmakebox[2em][l]{\abs{xy + xz + yz}^{2}}

然后\abs{xy + xz + yz}^{2}在宽度数学框中设置2em

代码:

\documentclass[10pt]{amsart}
\usepackage{mathtools}% loads amsmath
\DeclarePairedDelimiter\abs{\lvert}{\rvert}

\begin{document}
\begin{alignat*}{3}
\mathmakebox[2em][l]{\abs{xy + xz + yz}^{2}}\\
&= 3 &&+ \bigl[&&\cos(2a + b + c) + \cos(a + 2b + c) + \cos(a + b + 2c) \\
&&&&&+ \cos(a - b) + \cos(a - c) + \cos(b - c)\bigr] \\
&&&+ \bigl[&&\cos(a - b) + \cos(a - c) + \cos(b - c) \\
&&&&&- \bigl(\cos(2a + b + c) + \cos(a + 2b + c) + \cos(a + b + 2c)\bigr) \bigr] \\
&= 3&&\mathrlap{{}+ 2\bigl(\cos(a - b) + \cos(a - c) + \cos(b - c)\bigr).}
\intertext{Likewise,}
\mathmakebox[2em][l]{\abs{x + y + z}^{2}} \\
&= \mathrlap{[\cos a + \cos b + \cos c]^{2} + [\sin a + \sin b + \sin c]^{2}} \\
&= 3 &&\mathrlap{{}+ 2\cos a\cos b + 2\cos a\cos c + 2\cos b\cos c} \\
&&&\mathrlap{{}+ 2\sin a\sin b + 2\sin a\sin c + 2\sin b\sin c} \\
&= 3&& + \bigl[&&\cos(a + b) + \cos(a + c) + \cos(b + c) \\
&&&&&+ \cos(a - b) + \cos(a - c) + \cos(b - c)\bigr] \\
&&&+ \bigl[&&\cos(a - b) + \cos(a - c) + \cos(b - c) \\
&&&&&- \bigl(\cos(a + b) + \cos(a + c) + \cos(b + c)\bigr) \bigr] \\
&= 3&&\mathrlap{{}+ 2\bigl(\cos(a - b) + \cos(a - c) + \cos(b - c)\bigr).}
\end{alignat*}
\end{document}

所有align...环境的工作方式都类似于具有几对rl列的表格。它们的&含义与表格中的含义相似。

下图展示了如何\mathmakebox[2em][l]{...}工作\mathrlap{...}

在此处输入图片描述

共有三rl对列。由于第二列和第三r列完全为空,因此它们在alignat*环境中的列宽为 0pt。

\(math)makebox[2em][l]{...}绿色框显示第一行和\(math)rlap{...}最后一行参数的实际宽度。但红色框显示这些框使用的宽度:第一行2em和最后一行0pt(当然还有红线的宽度)。内容的额外宽度被简单忽略,不会影响列的宽度。

在下面的图片中你可以看到如果\(math)makebox[2em][l]{...}\(math)rlap{...}被移除会发生什么

在此处输入图片描述

第一张图片的代码:

\documentclass{article}
\usepackage{mathtools}% loads amsmath
\DeclarePairedDelimiter\abs{\lvert}{\rvert}

\usepackage{array}
\usepackage[table]{xcolor}
\arrayrulecolor{gray}
\renewcommand\arraystretch{1.5}
\setlength\fboxsep{0pt}
\setlength\fboxrule{.5mm}

\begin{document}
\begin{tabular}{|*{3}{@{}r@{}|@{}l@{}|}}
r&l&&l&&l\\[2\baselineskip]
\hline
\fcolorbox{red!}{white}{\makebox[2em][l]{\fcolorbox{green}{white}{$\abs{xy + xz + yz}^{2}$}}}&&&&&\\
&$= 3 $&&$+ \bigl[$&&$\cos(2a + b + c) + \cos(a + 2b + c) + \cos(a + b + 2c)$ \\
&$= 3$ &&$+ \bigl[$&&$\cos(2a + b + c) + \cos(a + 2b + c) + \cos(a + b + 2c)$ \\
&&&&&$+ \cos(a - b) + \cos(a - c) + \cos(b - c)\bigr]$ \\
&&&$+ \bigl[$&&$\cos(a - b) + \cos(a - c) + \cos(b - c)$ \\
&&&&&$- \bigl(\cos(2a + b + c) + \cos(a + 2b + c) + \cos(a + b + 2c)\bigr) \bigr]$ \\
&$= 3$&&\fcolorbox{red}{white}{\rlap{\fcolorbox{green}{white}{${}+ 2\bigl(\cos(a - b) + \cos(a - c) + \cos(b - c)\bigr).$}}}&&
\end{tabular}
\end{document}

答案2

我不确定我是否完全理解了您的布局要求。以下解决方案省去了指令\rlap,并使用align*环境作为最外层的数学环境。在align*环境内部,有几个aligned环境,选择了对齐点以对齐各种cos字符串,以及几个\phantom语句来实现前面+和符号的对齐。(根据@egreg的建议,每个环境前面-都有--negative thin space -- 指令。)\!aligned

关于你的代码,有几点意见。首先,宏\cos\sindo不是\sin{a}接受一个参数,因此写成and\cos{b}比简单地写成\sin aand没有任何优势\cos b。其次,定义一个宏很有用(例如,通过包提供的\abs宏);这样做会使你的代码更具可读性。\DeclarePairedDelimitermathtools

在此处输入图片描述

\documentclass[10pt]{amsart}
\usepackage{mathtools}
\DeclarePairedDelimiter\abs{\lvert}{\rvert}

\begin{document}
\begin{align*}
\MoveEqLeft[2] \abs{ xy + xz + yz }^{2} \\
&= \!\begin{aligned}[t]
3+ \bigl[&\cos(2a + b + c) + \cos(a + 2b + c) + \cos(a + b + 2c) \\
{}+ \phantom{\bigl[}&\cos(a - b) + \cos(a - c) + \cos(b - c)\bigr] \\
{}+ \bigl[&\cos(a - b) + \cos(a - c) + \cos(b - c) \\
{}- \bigl(&\cos(2a + b + c) + \cos(a + 2b + c) + \cos(a + b + 2c)\bigr) \bigr] 
\end{aligned}\\
&= 3 + 2\bigl(\cos(a - b) + \cos(a - c) + \cos(b - c) \bigr)\,.
\intertext{Likewise,}
\MoveEqLeft[2] \abs{x + y + z}^{2} \\
&= [\cos a + \cos b + \cos c]^{2} + [\sin a + \sin b + \sin c]^{2} \\
&= \!\begin{aligned}[t]
3 &+ 2\cos a\cos b + 2\cos a\cos c + 2\cos b\cos c \\
  &+ 2\sin a\sin b + 2\sin a\sin c + 2\sin b\sin c 
\end{aligned}\\
&= \!\begin{aligned}[t]
3 + \bigl[&\cos(a + b) + \cos(a + c) + \cos(b + c) \\
{}+ \phantom{\bigl[}&\cos(a - b) + \cos(a - c) + \cos(b - c)\bigr] \\
{}+\bigl[&\cos(a - b) + \cos(a - c) + \cos(b - c) \\
{}-\bigl(&\cos(a + b) + \cos(a + c) + \cos(b + c) \bigr) \bigr] 
\end{aligned}\\
&= 3+ 2\bigl(\cos(a - b) + \cos(a - c) + \cos(b - c)\bigr).
\end{align*}
\end{document}

相关内容