跨嵌套對齊環境的對齊

跨嵌套對齊環境的對齊

我有一個帶有註釋的方程式列表,如下所示:

\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 的後續問題:內對齊 內對齊其中給出了無行編號問題的解決方案; 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 數學命令使用的其他一些值相符。以(數學單位)表示,它將很好地擴展到其他磅值。alignedalignaligned7mu7mumu

答案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}

渲染

相關內容