ネストされた環境間のアライメント

ネストされた環境間のアライメント

以下のような注釈付きの方程式のリストがあります:

\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}

レンダリング: 方程式のセット

最後の 2 行には同じ注釈があるため、次のように、そこに中括弧を追加し、中括弧の横に注釈を配置します。

\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}

レンダリング: 中括弧付きの最後の2つの式

これを元のコードに当てはめると、次のようなものになります。

\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}

レンダリング: 括弧付きの結合方程式

うまくいかないのは等号の配置です。配置された環境内の等号同士しか配置できず、環境外の等号同士は配置できません。

また、align 環境でコンテンツを 3 行として扱い、そのように番号を付けることも希望します。

これは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}

レンダリング

関連情報