Ich versuche eine lange Formel innerhalb einer align-Umgebung auf mehrere Zeilen zu verteilen. Es soll am Besten wie bei der multline-Umgebung aussehen. Bisher habe ich das mit einer split-Umgebung gemacht. Leider muss ich hier die Ausrichtung manuell machen. Das ist sicher nicht so genau und aufwändiger als wenn TeX das automatisch macht.

Code

\documentclass{scrartcl}
\usepackage{amsmath}
\begin{document}
So mache ich es bisher.
\begin{align}
A &= \framebox[.85\columnwidth]{Formel}\\
\begin{split}
&= \framebox[.65\columnwidth]{lange}\\
&\quad+ \framebox[.55\columnwidth]{eingesetzte}\\
&\quad+ \framebox[.5\columnwidth]{Formel}
\end{split}\\
A &= \framebox[.8\columnwidth]{vereinfachte Formel}
\end{align}
So soll es aussehen.
\begin{align}
A &= \framebox[.85\columnwidth]{Formel}\\
\begin{split}
&= \framebox[.55\columnwidth]{lange}\\
&\hspace{.1\columnwidth} + \framebox[.65\columnwidth]{eingesetzte}\\
&\hspace{.35\columnwidth} + \framebox[.5\columnwidth]{Formel}
\end{split}\\
A &= \framebox[.8\columnwidth]{vereinfachte Formel}
\end{align}
\end{document}

Vorschau

alt text

Update

Mit saputellos Antwort ist es mir gelungen die Ausrichtung so zu machen wie ich es will. Ich würde das ganze am liebsten in eine neue Umgebung stecken (z.B. mit dem environ-Paket). Leider scheitere ich daran. Inzwischen ist mir aufgefallen, dass die Befehle \settowidth und \widthof nicht im Mathe-Modus zu funktionieren scheinen.

\documentclass[draft]{scrartcl} 
\usepackage{mathtools}
\newdimen\mymultlinedwidth
\begin{document}
% \settowidth{\mymultlinedwidth}{$(\theequation)$}\theequation
% \addtolength{\mymultlinedwidth}{\widthof{$\alpha_{xx}={}$}}
% Hier funktionieren beide und das Ergebnis gefällt mir schon gut.
\begin{align}
\alpha_{xx} &= \framebox[.85\columnwidth]{Formel}\\
\settowidth{\mymultlinedwidth}{$(\theequation)$}\theequation
\addtolength{\mymultlinedwidth}{\widthof{$\alpha_{xx}={}$}} % Hier haben sie keine Auswirkung
 &\!\begin{multlined}[c][\dimexpr(\columnwidth-\mymultlinedwidth-2\multlinegap)]
= \framebox[.55\columnwidth]{lange} + \frac{\frac{1}{2}}{\frac{2}{4}}\\
+ \framebox[.65\columnwidth]{eingesetzte}\\
+ \framebox[.5\columnwidth]{Formel}
\end{multlined}\\
\alpha_{xx} &= \framebox[.8\columnwidth]{vereinfachte Formel}
\end{align}
\end{document}

PS: Ich weiß, dass \mymultlinewidth nicht die Breite von meiner Umgebung enthält, aber ein besserer Name ist mir spontan nicht eingefallen.

gefragt 24 Sep '13, 09:22

sudo's gravatar image

sudo
2.0k51521
Akzeptiert-Rate: 39%

bearbeitet 25 Sep '13, 18:31

saputello's gravatar image

saputello
11.1k174365

1

@sudo Es heißt übrigens umbrochen; umgebrochen ist etwas ganz anderes.

(25 Sep '13, 18:35) saputello

Mit mathtools, einer Erweiterung zu amsmath, kommt man dem schon sehr nahe:

\documentclass{scrartcl}
\usepackage{mathtools}% Erweitert amsmath beispielsweise um multlined
\begin{document}
So geht es:
\begin{align}
A & = \framebox[.85\columnwidth]{Formel}\\
  & \begin{multlined}[c]
\! = \framebox[.65\columnwidth]{lange}\\
\quad + \framebox[.55\columnwidth]{eingesetzte}\\
\quad + \framebox[.5\columnwidth]{Formel}
\end{multlined}\\
A &= \framebox[.8\columnwidth]{vereinfachte Formel}
\end{align}
oder:
\begin{align}
A & = \framebox[.85\columnwidth]{Formel}\\
  & = \!\begin{multlined}[t]
\framebox[.65\columnwidth]{lange}\\
+ \framebox[.55\columnwidth]{eingesetzte}\\
+ \framebox[.5\columnwidth]{Formel}
\end{multlined}\\
A &= \framebox[.8\columnwidth]{vereinfachte Formel}
\end{align}

\end{document}

Nummer entweder zentriert oder oben

Will man die letzte Zeile weiter nach rechts schieben, muss man entweder die Breite der multilined-Umgebung explizit setzen oder mit dem optionalen Argument von \shoveright die letzte Zeile entsprechend weit nach rechts schieben, das die multilined-Umgebung sonst nur soviel Platz beansprucht, wie sie unbedingt benötigt:

\documentclass{scrartcl}
\usepackage{mathtools}% Erweitert amsmath beispielsweise um multlined
\begin{document}
So geht es:
\begin{align}
A & = \framebox[.85\columnwidth]{Formel} \\
  & \begin{multlined}[c][\linewidth-4.5em]
\! = \framebox[.65\columnwidth]{lange}\\
+ \framebox[.55\columnwidth]{eingesetzte}\\
+ \framebox[.5\columnwidth]{Formel}
\end{multlined}\\
A & = \framebox[.8\columnwidth]{vereinfachte Formel}
\end{align}
\end{document}

breiter durch optionales Argument für klzzwxh:0007

Etwas unschön ist dabei, dass man sowohl die Breite selbst schätzen muss, als auch vor dem = in der multilined-Umgebung die horizontale Position desselben mit einem negativen Abstand korrigieren muss. Zumindest das Schätzen der Breite kann man ggf. durch eine Berechnung ersetzen:

\documentclass{scrartcl}
\usepackage{mathtools}% Erweitert amsmath beispielsweise um multlined
\newcommand*{\displaywidthof}[1]{%
  (\widthof{$\displaystyle #1$}+\leftmargini)%
}
\begin{document}
So geht es:
\begin{align}
A & = \framebox[.85\columnwidth]{Formel} \\
  & \begin{multlined}[c][\displaywidth-\displaywidthof{A ={}}]
\mkern -3mu = \framebox[.65\columnwidth]{lange}\\
+ \framebox[.55\columnwidth]{eingesetzte}\\
+ \framebox[.5\columnwidth]{Formel}
\end{multlined}\\
A & = \framebox[.8\columnwidth]{vereinfachte Formel}
\end{align}
\end{document}

Hinweis: Wenn ich den Source von amsmath richtig verstanden habe, wird \leftmargini als Voreinstellung für den Rand (mit dem Tag) bei Formeln verwendet. Eigentlich wird der tatsächliche Rand dann in \@mathmargin abgelegt. Seltsamerweise funktioniert \@mathmargin statt \leftmargini an der Stelle aber nicht. Deshalb habe ich \leftmargini verwendet. Eventuell ist stattdessen aber auch 2\multlinegap korrekt, wie @sudo sie in seiner Frage verwendet hat …

Eine weitere Möglichkeit ergibt sich eventuell durch die Verwendung von \MoveEqLeft, das ebenfalls in mathtools definiert, zusammen mit der align-Umgebung, wie dies in Abschnitt 3.4.4 der Anleitung zu mathtools erklärt ist.

Abschließend sei noch darauf hingewiesen, dass die meisten amsmath-Umgebungen letztlich Tabellen sind. In Tabellen wird für jede Zelle eine eigene Gruppe verwendet. Daher ist es nicht einfach möglich, in der ersten Zelle lokal eine Berechnung anzustellen und deren Ergebnis dann in der zweiten Zelle zu verwenden. Das erklärt, warum die Berechnung der für die multlined-Umgebung verfügbaren Breite besser erst nach dem & der align-Umgebung erfolgen sollte.

Permanenter link

beantwortet 24 Sep '13, 10:04

saputello's gravatar image

saputello
11.1k174365
Akzeptiert-Rate: 51%

bearbeitet 25 Sep '13, 09:17

Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×38
×20
×3

gestellte Frage: 24 Sep '13, 09:22

Frage wurde gesehen: 23,126 Mal

zuletzt geändert: 12 Mär '16, 05:08