![嵌套对齐环境之间的对齐](https://linux22.com/image/254382/%E5%B5%8C%E5%A5%97%E5%AF%B9%E9%BD%90%E7%8E%AF%E5%A2%83%E4%B9%8B%E9%97%B4%E7%9A%84%E5%AF%B9%E9%BD%90.png)
我有一个带有注释的方程式列表,如下所示:
\documentclass{scrartcl}
\usepackage{amsmath}
\begin{document}
\begin{align}
aaaa &= 1 &&\text{for $X$} \\
bbbb &= 1 &&\text{for $Y$} \\
c &= 1 &&\text{for $Z$} \\
d &= 12 &&\text{for $Z$}
\end{align}
\end{document}
由于最后两行有相同的注释,我想在那里添加一个括号并将注释放在括号旁边,如下所示:
\documentclass{scrartcl}
\usepackage{amsmath}
\begin{document}
\begin{align}
\left. \begin{aligned}
c &= 1 \\
d &= 12 \\
\end{aligned} \right\} &&\text{for $Z$}
\end{align}
\end{document}
将其插入原始代码中,我得到了类似这样的结果
\documentclass{scrartcl}
\usepackage{amsmath}
\begin{document}
\begin{align}
aaaa &= 1 &&\text{for $X$} \\
bbbb &= 1 &&\text{for $Y$} \\
\left. \begin{aligned}
c &= 1 \\
d &= 12 \\
\end{aligned} \right\}& &&\text{for $Z$}
\end{align}
\end{document}
不起作用的是等号的对齐:我只能将对齐环境内部的等号相互对齐,而不能将外部的等号对齐。
我还希望对齐环境将内容视为三行并按此编号。
这是对以下问题的后续问题:内对齐其中给出了没有行号的问题的解决方案;在 Q 中讨论了类似的问题:跨“对齐”方程块进行对齐—— 但是,该解决方案使用了数组环境,因此也不允许进行行编号。
提前致谢。
答案1
这解决方案Barbara Beeton 指出的问题接近正确的想法。事实上,你可以通过将每个希望编号的对象放入其自己的 中来使用该解决方案aligned
。然而,这需要相当多的工作,并且以下变体似乎运行良好:
\documentclass{scrartcl}
\usepackage{amsmath}
\newlength{\myleftlen}
\newcommand{\setmyleftlen}[1]{\settowidth{\myleftlen}{\( \displaystyle
#1\)}}
\newcommand{\backup}{\hskip-\myleftlen\mkern-7mu}
\begin{document}
\setmyleftlen{ddd}
\begin{align}
aaaa &= 1 &&\text{for $X$} \\
bbbb &= 1 &&\text{for $Y$} \\
&\left.\backup\begin{aligned}
c &= 1 \\
ddd &= 12 \\
\end{aligned} \right\} &&\text{for $Z$}
\end{align}
\end{document}
在开始之前,您需要使用环境\setmyleftlen
中最长的左侧进行调用。代码的作用是将块向左移动此量加上额外的。该量是猜测的,但似乎与 AMS 数学命令使用的一些其他值相符。以(数学单位)表示,它将很好地缩放到其他点大小。aligned
align
aligned
7mu
7mu
mu
答案2
这是@AndrewSwann 答案的改进版本,如果将ddd
示例中的替换为更大的东西并取消神奇的,则可以正确进行缩放7mu
。我还添加了一个示例来演示如何嵌套它。
\documentclass[preview]{standalone}
\usepackage{amsmath}
\usepackage{calc}
\usepackage{xparse}
\newlength\mytemplena
\newlength\mytemplenb
\DeclareDocumentCommand\myalignalign{sm}
{
\settowidth{\mytemplena}{$\displaystyle #2$}%
\setlength\mytemplenb{\widthof{$\displaystyle=$}/2}%
\hskip-\mytemplena%
\hskip\IfBooleanTF#1{-\mytemplenb}{+\mytemplenb}%
}
\begin{document}
\begin{align}
a &= 1\\
bb &= 1\\
\myalignalign{eeeeee} &\left.
\myalignalign*{eeeeee}
\begin{aligned}
\myalignalign{dddd} &\left.
\myalignalign*{dddd}
\begin{aligned}
ccc &= 1 \\
dddd &= 123\\
\end{aligned} \quad
\right\} Z1,Z2\\
eeeeee &= 12345678\\
\end{aligned} \quad
\right\} Z1,Z2,Z3
\end{align}
\end{document}