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}
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}
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}
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}
Sie müssen vor dem Start \setmyleftlen
mit der längsten linken Seite in Ihrer aligned
Umgebung aufrufen align
. Der Code verschiebt den aligned
Block um diesen Betrag plus einen zusätzlichen Wert nach links 7mu
. Der Betrag 7mu
war 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 ddd
aus 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}