Seite 1 von 2
2 Align-Blöcke ausrichten
Verfasst: Mi 18. Jul 2012, 01:13
von danielcramer
Moin,
folgendes Problem:
In meiner Arbeit beschreibe ich mehrere mathematische Modell - diese sind jeweils in einer eigenen align-Umgebung festgehalten.
Gibt es eine Möglichkeit, diese beiden Blöcke miteinander zu verbinden?
Auszug aus meiner Arbeit:
\documentclass[11pt,a4paper]{article}
\usepackage[latin1]{inputenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{makeidx}
\usepackage[width=16.00cm, height=24.00cm]{geometry}
\author{Cramer}
\begin{document}
\begin{align}
\label{eq:TEST}
&\mbox{Minimiere} \quad \sum\limits_{t=1}^{T} (s \cdot \gamma_{t} + p \cdot q_{t})\\
\newline\notag
&\mbox{u.d.N.}\\
\label{eq:TEST2}
&q_{t}-M\cdot \gamma _{t} \leq 0 && {t=1,2,\ldots,T}\\
\label{eq:TEST3}
&q_{t} \geq 0 && {t=1,2,\ldots,T}\\
&\gamma_{t} \in \{0,1\} && {t=1,2,\ldots,T}
\end{align}
neuer Block\\
\begin{align}
&\mbox{Minimiere} \quad \sum\limits_{t=1}^{T} (s \cdot \gamma_{t} + h \cdot y_{t} + p \cdot q_{t})\\
\newline\notag
&\mbox{u.d.N.}\\
&y_{t-1}+q_{t}-y_{t}=d_{t} && {t=1,2,\ldots,T}\\
&q_{t}-M\cdot \gamma _{t} \leq 0 && {t=1,2,\ldots,T}\\
&y_{t} \geq 0 && {t=1,2,\ldots,T}\\
&q_{t} \geq 0 && {t=1,2,\ldots,T}\\
&y_0, y_T = 0\\
&\gamma_{t} \in \{0,1\} && {t=1,2,\ldots,T}
\end{align}
\end{document}
Die Blöcke für sich selbst sind ausgerichtet, nicht jedoch beide zusammen...
Verfasst: Mi 18. Jul 2012, 09:52
von Madridista
Wieso unterbrichst du denn die Blöcke, wenn sie gleichausgerichtet sein sollen, nutze doch für die Zwischenzeile den Befehl \intertext:
\documentclass[11pt,a4paper]{article}
\usepackage[latin1]{inputenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{makeidx}
\usepackage[width=16.00cm, height=24.00cm]{geometry}
\author{Cramer}
\begin{document}
\begin{align}
\label{eq:TEST}
&\mbox{Minimiere} \quad \sum\limits_{t=1}^{T} (s \cdot \gamma_{t} + p \cdot q_{t})\\
\newline\notag
&\mbox{u.d.N.}\\
\label{eq:TEST2}
&q_{t}-M\cdot \gamma _{t} \leq 0 && {t=1,2,\ldots,T}\\
\label{eq:TEST3}
&q_{t} \geq 0 && {t=1,2,\ldots,T}\\
&\gamma_{t} \in \{0,1\} && {t=1,2,\ldots,T}
%\end{align}
\intertext{neuer Block}\\
%\begin{align}
&\mbox{Minimiere} \quad \sum\limits_{t=1}^{T} (s \cdot \gamma_{t} + h \cdot y_{t} + p \cdot q_{t})\\
\newline\notag
&\mbox{u.d.N.}\\
&y_{t-1}+q_{t}-y_{t}=d_{t} && {t=1,2,\ldots,T}\\
&q_{t}-M\cdot \gamma _{t} \leq 0 && {t=1,2,\ldots,T}\\
&y_{t} \geq 0 && {t=1,2,\ldots,T}\\
&q_{t} \geq 0 && {t=1,2,\ldots,T}\\
&y_0, y_T = 0\\
&\gamma_{t} \in \{0,1\} && {t=1,2,\ldots,T}
\end{align}
\end{document}
Entspricht das deiner Vorstellung?
EDIT: Außerdem sollte man bei Abkürzungen kleine Abstände lassen, welche sich mit "\," realisieren lassen:
Verfasst: Mi 18. Jul 2012, 11:09
von danielcramer
Mein Fehler - ich hätte dazu sagen sollen, dass das Code-Beispiel nur ein Auszug war...
In meinem Dokument gibt es mehrere Kapitel (wer hätte das gedacht). Ich habe da nur letztlich den Text, der zwischen den Blöcken steht, weggelassen (Erläuterungen, etc...) (und daher auch die beiden align-Blöcke und nicht einer)
Daher sollten nun die Blöcke -- wenn möglich -- eine gleiche Ausrichtung haben.
P.S.: Danke für den Hinweis bzgl der Interpunktion - ist mir untergegangen (beim restlichen Text habe ich das beachtet)
Verfasst: Mi 18. Jul 2012, 11:29
von Madridista
Hier im Forum gab es bereits eine solche Anfrage, bei welcher auch \intertext benutzt wurde, es ist also auch möglich längere Textpassagen auf diesem Weg einzufügen. Versuch mal deinen kompletten zwischen Text damit einzufügen, wenn das nicht geht, kannst dich ja noch mal melden.
http://www.golatex.de/mehrere-formelngr ... t3732.html
Danke!!!
Verfasst: Mi 2. Apr 2014, 09:14
von Gast
Madridista hat geschrieben:... nutze doch für die Zwischenzeile den Befehl \intertext:
Super! Diesen Befehl habe ich schon lange gesucht, danke!
Verfasst: Do 26. Nov 2015, 07:08
von latex_abuser
Als Alternative für \intertext gerade zur Standardisierung der absoluten Position des Gleichheitszeichens für alle Formeln einer umfangreichen Arbeit (Disseration zB.) wurde hier im Forum auch ebenfalls über den Befehl \hphantom{} an folgenden Stellen diskutiert:
http://golatex.de/align-formatierung-be ... antom.html
und
http://golatex.de/alignat-ausrichtenund ... antom.html
Problem an \hphantom ist, dass eine zusätzliche Zeile erzeugt und damit die Formel vom Text entfernt wird. Ich hätte da eine Vorschlag, der in meinem Falle zumindest funktioniert. Schön wäre es, wenn man einen Befehl in der Präambel erzeugen könnte, um das ein wenig abzukürzen (damit kenne ich mich aber nicht aus und wäre für jeden Rat dankbar...).
Vorschläge? Verbesserungen? Kritik?
MfG und danke!
%
\documentclass{scrartcl} %[fleqn]
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{mathtools}
%\setlength{\mathindent}{30mm}
\begin{document}
\section{Standard}
So stehen die Gleichheitszeichen mehrerer Umgebungen nicht untereinander, wenn unterschiedlich lang.
\begin{align*}
r&= 2(x + x^2)\\
r&= 2x(1 + x)
\end{align*}
Und hier die zweite Umgebung
\begin{align*}
r&= 2(x + x^2)\\
r_1^2 *3^x+3x^3+2y^4&= x^2 + y^2
\end{align*}
\section{Zusätzliche Leerzeile}
So stehen die Gleichheitszeichen mehrerer Umgebungen zwar untereinander, aber man erzeugt eine zusätzliche (leere) Zeile im Anschluss:
\begin{align*}
\hphantom{r_1^2 *3^x+3x^3+2y^4}&\\
r&= 2(x + x^2)\\
r&= 2x(1 + x)
\end{align*}
Und hier die zweite Umgebung
\begin{align*}
r&= 2(x + x^2)\\
r_1^2 *3^x+3x^3+2y^4&= x^2 + y^2
\end{align*}
\section{Mein Vorschlag}
\verb+\makebox+
\begin{align*}
\makebox[0.0cm][r]{$r$}&= 2(x + x^2)\\
r&= 2x(1 + x)
\end{align*}
Und hier die zweite Umgebung
\begin{align*}
r&= 2(x + x^2)\\
\makebox[0.0cm][r]{$r_1^2 *^x+3x^3+2y^4$}&= x^2 + y^2
\end{align*}
Ist auch linksbündig mit [fleqn] als Klassenoption und \verb+\setlength{\mathindent}{x mm}+ verwendenbar (oben auskommentiert), muss dann aber angepasst werden.
\end{document}
Verfasst: Fr 27. Nov 2015, 11:18
von Johannes_B
Das ist doch keine Alternative. Nimm intertext oder gar shortintertext aus dem Paket
mathtools.
\documentclass{scrartcl} %[fleqn]
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{mathtools}
%\setlength{\mathindent}{30mm}
\begin{document}
\section{Standard}
So stehen die Gleichheitszeichen mehrerer Umgebungen nicht untereinander, wenn unterschiedlich lang.
\begin{align*}
r&= 2(x + x^2)\\
r&= 2x(1 + x)
\end{align*}
Und hier die zweite Umgebung
\begin{align*}
r&= 2(x + x^2)\\
r_1^2 *3^x+3x^3+2y^4&= x^2 + y^2
\end{align*}
\section{keine Zusätzliche Leerzeile}
\begin{align*}
\hphantom{r_1^2 *3^x+3x^3+2y^4}
\clap{r}&= 2(x + x^2)\\
r&= 2x(1 + x)
\end{align*}
Und hier die zweite Umgebung
\begin{align*}
r&= 2(x + x^2)\\
r_1^2 *3^x+3x^3+2y^4&= x^2 + y^2
\end{align*}
\section{korrekt}
\begin{align*}
\hphantom{r_1^2 *3^x+3x^3+2y^4}
\clap{r}&= 2(x + x^2)\\
r&= 2x(1 + x)
\intertext{Und hier die zweite Umgebung}
r&= 2(x + x^2)\\
r_1^2 *3^x+3x^3+2y^4&= x^2 + y^2
\end{align*}
\end{document}
Verfasst: Fr 27. Nov 2015, 15:03
von latex_abuser
Auch wenn ca. 100 Seiten Text dazwischen sind? Ich bin mir sicher, dass der \intertext dafür nicht gedacht ist.
Und außerdem behebt man mit \intertext nicht das ursprüngliche Problem, dass die Formeln über ein komplettes Dokument z.B. am Gleichheitszeichen ausgerichtet sein sollen.
Verfasst: Fr 27. Nov 2015, 16:11
von Johannes_B
Die Lösung für dein Problem hast du bereits im ersten von dir verlinkten Thread, gegeben von Elke. Warum wendest du es nicht an? Von mir oben noch mal ein fast gleichwertiger Ansatz.
Verfasst: Fr 27. Nov 2015, 18:29
von latex_abuser
Dein Code funtioniert prima, \clap ist da der Zauberbaustein. Bitte für den Leihen, kannst du kurz erklären, was \clap, \llap, \rlap (auch \mathclap, usw.?) genau macht? Das würde mir sehr helfen, ein Link zum Nachlesen wäre auch gut.
Zu der Antwort von Elke: als Anfänger versteht man das nicht so leicht. Sie erstellt einen neuen Befehl (\mygl) mit drei Argumenten, soweit klar. Den kann ich auch anpassen.
Aber warum erstellt sie dann zwei neue Befehle und was machen die?
Danke für deine Mühen!