Ausrichtung über verschachtelte ausgerichtete Umgebungen hinweg

Ausrichtung über verschachtelte ausgerichtete Umgebungen hinweg

Ich habe eine Liste von Gleichungen mit Anmerkungen wie den folgenden:

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

Rendering: Gleichungssystem

Da die letzten beiden Zeilen die gleiche Annotation haben, möchte ich dort eine Klammer hinzufügen und die Annotation neben die Klammer setzen, etwa so:

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

Darstellung: Die letzten beiden Gleichungen mit Klammer

Wenn ich das in den Originalcode einfüge, bekomme ich ungefähr Folgendes:

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

Rendering: Die kombinierten Gleichungen mit einer Klammer

Was nicht funktioniert ist die Ausrichtung der Gleichheitszeichen: Ich kann nur die innerhalb der ausgerichteten Umgebung aneinander ausrichten, nicht die außerhalb.

Ich möchte auch, dass die Align-Umgebung den Inhalt als drei Zeilen behandelt und ihn als solche nummeriert.

Dies ist eine Folgefrage zu Q:Ausrichten innerhalb der Ausrichtungin dem eine Lösung für das Problem ohne Zeilennummerierung gegeben wurde; ein ähnliches Problem wurde in Q diskutiert:Ausrichten über 'ausgerichtete' Gleichungsblöcke hinweg– die Lösung verwendete jedoch eine Array-Umgebung und erlaubt daher meines Wissens auch keine Zeilennummerierung.

Dank im Voraus.

Antwort1

DerLösungauf die von Barbara Beeton angesprochene Frage kommt der richtigen Idee schon sehr nahe. Tatsächlich könnten Sie diese Lösung verwenden, indem Sie jedes Objekt, das Sie nummerieren möchten, in ein eigenes Feld setzen aligned. Das ist allerdings ziemlich viel Arbeit und die folgende Variante scheint gut genug zu funktionieren:

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

Beispielausgabe

Sie müssen vor dem Start \setmyleftlenmit der längsten linken Seite in Ihrer alignedUmgebung aufrufen align. Der Code verschiebt den alignedBlock um diesen Betrag plus einen zusätzlichen Wert nach links 7mu. Der Betrag 7muwar eine Schätzung, scheint aber mit einigen anderen Werten übereinzustimmen, die von den AMS-Mathematikbefehlen verwendet werden. Da er in mu(Mathematikeinheiten) ausgedrückt wird, lässt er sich gut auf andere Punktgrößen skalieren.

Antwort2

Dies ist eine verbesserte Version der Antwort von @AndrewSwann. Skalierungen werden richtig übernommen, wenn man das dddaus dem Beispiel durch etwas wesentlich Größeres ersetzt und das magische weglässt 7mu. Ich habe ein Beispiel hinzugefügt, das auch zeigt, wie man es verschachtelt.

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

Rendern

verwandte Informationen