我有这个方程式:
\begin{align}
\begin{aligned}
x&=y & z&=w & k&=j \\
a&=b & c&=d & e&=f \\
\end{aligned}
\\
\begin{aligned}
x+a&=y+b & z+c&=w+d & z+x&=b \\
a+q&=b+w & c+e&=d+r & e+t&=f+y \\
\end{aligned}
\end{align}
我希望所有列都彼此对齐,如下例所示:
我曾尝试用以下可怕的方式手动调整空间:
\begin{align}
x&=y & z&=w & k&=j\nonumber\\[-.25\baselineskip]
\\[-.75\baselineskip]
a&=b & c&=d & e&=f
\nonumber\\
x+a&=y+b & z+c&=w+d & z+x&=b\nonumber\\[-.25\baselineskip]
\\[-.75\baselineskip]
a+q&=b+w & c+e&=d+r & e+t&=f+y\nonumber
\end{align}
是否有 TeXnician 解决方案可以做到这一点?
答案1
您需要捕获每个方程中最宽元素的宽度。然后您可以使用这些宽度在宽度较小的元素之间强制对齐。
下面我稍微修改了一下eqparbox
via存储每个ged 框\eqmathbox[<tag>][<align>]{<math>}
的最大宽度,内容各不相同。在框内,您可以根据需要更改 ment(eft、entre 或ight)。<tag>
<math>
<align>
l
c
r
\documentclass{article}
\usepackage{eqparbox,xparse,amsmath}
% https://tex.stackexchange.com/a/34412/5764
\makeatletter
\NewDocumentCommand{\eqmathbox}{o O{c} m}{%
\IfValueTF{#1}
{\def\eqmathbox@##1##2{\eqmakebox[#1][#2]{$##1##2$}}}
{\def\eqmathbox@##1##2{\eqmakebox{$##1##2$}}}
\mathpalette\eqmathbox@{#3}
}
\makeatother
\begin{document}
\begin{gather}
\begin{aligned}
\eqmathbox[ll][r]{x} &= \eqmathbox[lr][l]{y} &
\eqmathbox[cl][r]{z} &= \eqmathbox[cr][l]{w} &
\eqmathbox[rl][r]{k} &= \eqmathbox[rr][l]{j} \\
a &= b & c &= d & e &= f \\
\end{aligned}
\\
\begin{aligned}
x + a &= \eqmathbox[lr]{y + b + c} &
\eqmathbox[cl]{z + c + e} &= w + d &
z + x &= \eqmathbox[rr]{b + i + j} \\
\eqmathbox[ll]{a + q + d} &= b + w &
c + e &= \eqmathbox[cr]{d + r + o} &
\eqmathbox[rl]{p + e + t} &= f + y
\end{aligned}
\end{gather}
\end{document}