Richten Sie die Gleichung so aus, dass die Ausrichtung variiert, um zu vermeiden, dass Gleichungsnummern in einer neuen Zeile stehen.

Richten Sie die Gleichung so aus, dass die Ausrichtung variiert, um zu vermeiden, dass Gleichungsnummern in einer neuen Zeile stehen.

Ich muss ein mathematisches Programmiermodell schreiben, das aus mehreren Einschränkungen besteht. Einschränkungen werden als Zeilen mit zwei Spalten dargestellt: Die erste Spalte ist die Gleichung und die zweite ihre Domäne, z. B.

x_i > l_i & \forall i \in S

Beide Spalten können jedoch recht lang sein. Wenn es also einerseits wünschenswert wäre, sie alle irgendwie horizontal auszurichten, kann es andererseits dazu kommen, dass die Spalten vertikal geteilt werden oder so gedruckt werden, dass sie über andere Elemente der Seite hinausragen.

Ich dachte damals, dass eine gute Lösung darin bestehen würde, eine align-ähnliche Umgebung zu verwenden, sodass jede erste Spalte an den anderen ausgerichtet ist und jede zweite Spalte ebenfalls an den anderen ausgerichtet ist. Wenn jedoch in der Zeile kein Platz für die Gleichungsnummer mehr übrig ist, möchte ich, dass die zweite Spalte, also die Domäne, rechtsbündig ausgerichtet ist, um den Platz nach der ersten Spalte auszufüllen und zu vermeiden, dass die Gleichungsnummer in der neuen Zeile gedruckt wird.

Folgendes berücksichtigen

\documentclass[a4,13pt,reqno,twoside, openright]{article}
\usepackage[utf8x]{inputenc}
\usepackage{float}
\usepackage{subfig}
\usepackage{graphicx}
\usepackage{amsmath}
\usepackage{mathtools}
\usepackage{amsthm}
\usepackage{amsfonts}
\usepackage{amssymb}

\allowdisplaybreaks

\textwidth = 14cm
 \hoffset = -1.5cm
 \voffset = -2.0cm

\begin{document}
\begin{subequations}
\begin{align}
& y^D_{tzgm} \le y_{tzgm} & \forall t \in T, z \in Z, g \in G_z, m \in \overline{M}_{zg}
\\
  & x_{tzg} \leq \sum_{m \in M_{zg}} P_{zgm} \cdot y_{tzgm} + \sum_{m \in \bar M_{zg}} (P^D_{zgm} - P_{zgm}) \cdot y^D_{tzgm} & \forall t \in T, z \in Z, g \in G_z\\
  &x_{tzg} \geq \sum_{m \in M_{zg}} p_{zgm} \cdot y_{tzgm} + \sum_{m \in \bar M_{zg}} (p^D_{zgm} - p_{zgm}) \cdot y^D_{tzgm} & \forall t \in T, z \in Z, g \in G_z\\
  & o_{1zh} = v_{0h}  &\forall z \in Z, h \in H_z\\
  & o_{(|T|+1)zh} = v_{(|T|+1)h} & \forall z \in Z, h \in H_z\\
  & o_{tzh} + n_{th} + \eta_{h} \cdot m_{tzh} = o_{(t+1)zh} + s_{tzh} + l_{tzh} & \forall t \in T, z \in Z, h \in H_z
\end{align}
\end{subequations}

\end{document}

Bildbeschreibung hier eingeben

Wie Sie sehen, bekomme ich jede Gleichungsnummer in einer neuen Zeile, da die erste Ungleichung eine zu lange Definitionsmenge hat. Eine Annäherung an das gewünschte Ergebnis, die ich durch manuelles Hinzufügen von Leerzeichen erhalte, ist

    \documentclass[a4,13pt,reqno,twoside, openright]{article}
\usepackage[utf8x]{inputenc}
\usepackage{float}
\usepackage{subfig}
\usepackage{graphicx}
\usepackage{amsmath}
\usepackage{mathtools}
\usepackage{amsthm}
\usepackage{amsfonts}
\usepackage{amssymb}

\allowdisplaybreaks

\textwidth = 14cm
 \hoffset = -1.5cm
 \voffset = -2.0cm

\begin{document}
\begin{subequations}
\begin{align}
& y^D_{tzgm} \le y_{tzgm} \qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad \mathrlap{\forall t \in T, z \in Z, g \in G_z, m \in \overline{M}_{zg}}
\\
  & x_{tzg} \leq \sum_{m \in M_{zg}} P_{zgm} \cdot y_{tzgm} + \sum_{m \in \bar M_{zg}} (P^D_{zgm} - P_{zgm}) \cdot y^D_{tzgm} & \forall t \in T, z \in Z, g \in G_z\\
  &x_{tzg} \geq \sum_{m \in M_{zg}} p_{zgm} \cdot y_{tzgm} + \sum_{m \in \bar M_{zg}} (p^D_{zgm} - p_{zgm}) \cdot y^D_{tzgm} & \forall t \in T, z \in Z, g \in G_z\\
  & o_{1zh} = v_{0h}  &\forall z \in Z, h \in H_z\\
  & o_{(|T|+1)zh} = v_{(|T|+1)h} & \forall z \in Z, h \in H_z\\
  & o_{tzh} + n_{th} + \eta_{h} \cdot m_{tzh} = o_{(t+1)zh} + s_{tzh} + l_{tzh} & \forall t \in T, z \in Z, h \in H_z
\end{align}
\end{subequations}

\end{document}

Bildbeschreibung hier eingeben

Und noch eine Anmerkung: Glauben Sie, dass es bessere Möglichkeiten gibt, diese Modelle zu setzen?

TIA

Antwort1

Ich habe einfach die erste Zeilenbeschriftung in ein rechtsbündiges Feld mit der Breite Null gesetzt.

\documentclass[a4,13pt,reqno,twoside, openright]{article}
\usepackage[utf8x]{inputenc}
\usepackage{float}
\usepackage{subfig}
\usepackage{graphicx}
\usepackage{amsmath}
\usepackage{mathtools}
\usepackage{amsthm}
\usepackage{amsfonts}
\usepackage{amssymb}

\allowdisplaybreaks

\textwidth = 14cm
 \hoffset = -1.5cm
 \voffset = -2.0cm

\begin{document}
\begin{subequations}
\begin{align}
& y^D_{tzgm} \le y_{tzgm} & \makebox[0pt][r]{$\forall t \in T, z \in Z, g \in G_z, m \in \overline{M}_{zg}$}
\\
  & x_{tzg} \leq \sum_{m \in M_{zg}} P_{zgm} \cdot y_{tzgm} + \sum_{m \in \bar M_{zg}} (P^D_{zgm} - P_{zgm}) \cdot y^D_{tzgm} & \forall t \in T, z \in Z, g \in G_z\\
  &x_{tzg} \geq \sum_{m \in M_{zg}} p_{zgm} \cdot y_{tzgm} + \sum_{m \in \bar M_{zg}} (p^D_{zgm} - p_{zgm}) \cdot y^D_{tzgm} & \forall t \in T, z \in Z, g \in G_z\\
  & o_{1zh} = v_{0h}  &\forall z \in Z, h \in H_z\\
  & o_{(|T|+1)zh} = v_{(|T|+1)h} & \forall z \in Z, h \in H_z\\
  & o_{tzh} + n_{th} + \eta_{h} \cdot m_{tzh} = o_{(t+1)zh} + s_{tzh} + l_{tzh} & \forall t \in T, z \in Z, h \in H_z
\end{align}
\end{subequations}

\end{document}

Bildbeschreibung hier eingeben

Antwort2

Da Sie nicht wirklich eine Ausrichtung wünschen, können Sie einfach gatherdie Bedingungen mit Füllkleber auseinander zwingen, außer wie angegebenHierSie können es normalerweise nicht \hfillin AMS-Ausrichtungen verwenden, also müssen Sie es zuerst ein wenig optimieren.

Um den Code klein zu halten, wird dieser neu definiert. gatherNatürlich wäre es auch möglich, auf dieser Grundlage eine neue Umgebung zu erstellen und die ursprüngliche Umgebung so zu belassen, gatherwie sie war.

Bildbeschreibung hier eingeben

\documentclass[a4,13pt,reqno,twoside, openright]{article}
\usepackage[utf8x]{inputenc}
\usepackage{float}
\usepackage{subfig}
\usepackage{graphicx}
\usepackage{amsmath}
\usepackage{mathtools}
\usepackage{amsthm}
\usepackage{amsfonts}
\usepackage{amssymb}

\allowdisplaybreaks

\textwidth = 14cm
 \hoffset = -1.5cm
 \voffset = -2.0cm

\makeatletter
\def\set@gather@field{%
    \iftagsleft@
        \global\lineht@\ht\z@
    \else
        \global\lineht@\dp\z@
    \fi
    \kern\eqnshift@
    \unhbox\z@
    \hfil
}

\def\gather@#1{%
    \ingather@true \let\split\insplit@
    \let\tag\tag@in@align \let\label\label@in@display
    \chardef\dspbrk@context\z@
    \intertext@ \displ@y@ \Let@
    \let\math@cr@@@\math@cr@@@gather
    \gmeasure@{#1}%
    \global\shifttag@false
    \tabskip\z@skip
    \global\row@\@ne
    \halign to\displaywidth\bgroup
        \strut@
        \setboxz@h{$\m@th\displaystyle##$}%
        \calc@shift@gather
        \set@gather@field
        \tabskip\@centering
       &\setboxz@h{\strut@{##}}%
        \place@tag@gather
        \tabskip \iftagsleft@ \gdisplaywidth@ \else \z@skip \span\fi
        \crcr
        #1%
}

\makeatother


\begin{document}
\begin{subequations}
\begin{gather}
 y^D_{tzgm} \le y_{tzgm} \quad\hfill \forall t \in T, z \in Z, g \in G_z, m \in \overline{M}_{zg}
\\
   x_{tzg} \leq \sum_{m \in M_{zg}} P_{zgm} \cdot y_{tzgm} + \sum_{m \in \bar M_{zg}} (P^D_{zgm} - P_{zgm}) \cdot y^D_{tzgm} \quad\hfill\forall t \in T, z \in Z, g \in G_z\\
  x_{tzg} \geq \sum_{m \in M_{zg}} p_{zgm} \cdot y_{tzgm} + \sum_{m \in \bar M_{zg}} (p^D_{zgm} - p_{zgm}) \cdot y^D_{tzgm} \quad\hfill\forall t \in T, z \in Z, g \in G_z\\
   o_{1zh} = v_{0h} \quad\hfill\forall z \in Z, h \in H_z\\
   o_{(|T|+1)zh} = v_{(|T|+1)h} \quad\hfill\forall z \in Z, h \in H_z\\
   o_{tzh} + n_{th} + \eta_{h} \cdot m_{tzh} = o_{(t+1)zh} + s_{tzh} + l_{tzh} \quad\hfill\forall t \in T, z \in Z, h \in H_z
\end{gather}
\end{subequations}

\end{document}

Antwort3

Sie können zu diesem Zweck einen speziellen Befehl definieren:

\documentclass[a4paper]{article}
\usepackage[textwidth=14cm,showframe]{geometry}
\usepackage{amsmath}

\newcommand{\eqcond}[3][3em]{%
  \makebox[\dimexpr\displaywidth-#1][s]{%
    $\displaystyle#2\hfill#3$}%
}

\allowdisplaybreaks

\begin{document}
\begin{subequations}
\begin{align}
&\eqcond
   {y^D_{tzgm} \le y_{tzgm}}
   {\forall t \in T, z \in Z, g \in G_z, m \in \overline{M}_{zg}}
\\
&\eqcond
   {x_{tzg} \leq \sum_{m \in M_{zg}} P_{zgm} \cdot y_{tzgm} + 
    \sum_{m \in \bar M_{zg}} (P^D_{zgm} - P_{zgm}) \cdot y^D_{tzgm}}
   {\forall t \in T, z \in Z, g \in G_z}
\\
&\eqcond
   {x_{tzg} \geq \sum_{m \in M_{zg}} p_{zgm} \cdot y_{tzgm} + 
    \sum_{m \in \bar M_{zg}} (p^D_{zgm} - p_{zgm}) \cdot y^D_{tzgm}}
   {\forall t \in T, z \in Z, g \in G_z}
\\
&\eqcond
   {o_{1zh} = v_{0h}}
   {\forall z \in Z, h \in H_z}
\\
&\eqcond
   {o_{(|T|+1)zh} = v_{(|T|+1)h}}
   {\forall z \in Z, h \in H_z}
\\
&\eqcond
   {o_{tzh} + n_{th} + \eta_{h} \cdot m_{tzh} = 
    o_{(t+1)zh} + s_{tzh} + l_{tzh}}
   {\forall t \in T, z \in Z, h \in H_z}
\end{align}
\end{subequations}

\end{document}

Es gibt ein optionales Argument für \eqcond; mit \eqcond[6em]{...}{...}wird die Breite der Box reduziert. Mit \eqcond[0em]erhalten Sie die volle Breite (und die Gleichungsnummer wird unter die Linie verschoben).

Ich habe verwendet , das ist besser, als an und geometryherumzubasteln ; die Option dient lediglich zum Anzeigen der Ränder.\hoffset\voffsetshowframe

Man könnte auch eine Prüfung auf überfüllte Zeilen einbauen.

Bildbeschreibung hier eingeben

Antwort4

Eine andere Lösung besteht darin, die Quantifizierer nur bei Bedarf in eine Zeile darunter (unnummeriert) zu setzen. Dies kann mit der Umgebung je nach Ausrichtung der Quantifizierer auf zwei Arten erfolgen flalign. Ich habe die Gelegenheit genutzt, um überflüssigen Leerraum nach dem Sigma zu unterdrücken, der durch besonders große Indizes bedingt ist.

        \documentclass[a4,11pt,reqno,twoside, openright]{article}
        \usepackage[utf8x]{inputenc}
        \usepackage{graphicx}
        \usepackage{mathtools}
        \usepackage{amsfonts}
        \usepackage{amssymb}
        \usepackage[textwidth = 14cm, nomarginpar, showframe]{geometry}%
        \allowdisplaybreaks

        \begin{document}

        \begin{subequations}
        \begin{flalign}
        \hspace{4em}  &  & y^D_{tzgm} & ≤ y_{tzgm}  &\forall t \in T, z &\in Z, g \in G_z, m \in \overline{M}_{zg} \\%
          & & x_{tzg} &\leq \mathrlap{\sum_{\mathclap{m \in M_{zg}}} P_{zgm} · y_{tzgm} + \sum_{\mathclap{m \in \bar M_{zg}}} (P^D_{zgm} - P_{zgm}) · y^D_{tzgm}}\\[-12pt]
        \notag &  &  &  &   & \forall t \in T, z \in Z, g \in G_z \\
         & & x_{tzg} & \geq \mathrlap{\sum_{\mathclap{m \in M_{zg}}} p_{zgm} · y_{tzgm} + \sum_{\mathclap{m \in \bar M_{zg}}} (p^D_{zgm} - p_{zgm}) · y^D_{tzgm}}\\[-12pt]
         \notag &  &  &  &  &\forall t \in T, z \in Z,  g \in G_z \\
         &   & o_{1zh}  & = v_{0h}  & & \forall z \in Z, h \in H_z \\
         &   & o_{(|T|+1)zh} &  = v_{(|T|+1)h} & & \forall z \in Z, h\in H_z \\
        &   & \mathllap{o_{tzh} + n_{th} + η_{h} · m_{tzh}}  & =\mathrlap{ o_{(t+1)zh} + s_{tzh} + l_{tzh} } &  & \forall t \in T, z \in Z, h \in H_z
        \end{flalign}
        \end{subequations}

        \begin{subequations}
        \begin{flalign}
          &  & y^D_{tzgm}   &  ≤ y_{tzgm}  & \hspace{8em}&\  \mathllap{\forall t \in T, z \in Z, g \in G_z, m \in \overline{M}_{zg}} \\%
          & & x_{tzg} &\leq \mathrlap{\sum_{\mathclap{m \in M_{zg}}} P_{zgm}   · y_{tzgm} + \sum_{\mathclap{m \in \bar M_{zg}}} (P^D_{zgm} - P_{zgm})   · y^D_{tzgm}}\\[-12pt]
        \notag &  &  &  &   & \mathllap{\forall t \in T, z \in Z, g \in G_z} \\
         & & x_{tzg}  & \geq \mathrlap{\sum_{\mathclap{m \in M_{zg}}} p_{zgm} · y_{tzgm} + \sum_{\mathclap{m \in \bar M_{zg}}} (p^D_{zgm} - p_{zgm}) · y^D_{tzgm}}\\[-12pt]
         \notag &  &  &  &  & \mathllap{\forall t \in T, z \in Z, g \in G_z} \\
         &   & o_{1zh}  & = v_{0h}  & & \mathllap{∀z \in Z, h \in H_z} \\
         &   & o_{(|T|+1)zh} &  = v_{(|T|+1)h} & &  \mathllap{\forall z \in Z, h \in H_z} \\
        &   & \mathllap{o_{tzh} + n_{th} + η_{h} · m_{tzh}} & =\mathrlap{ o_{(t+1)zh} + s_{tzh} + l_{tzh} } & & \mathllap{\forall t \in T, z \in Z, h \in H_z}
        \end{flalign}
        \end{subequations}
        \end{document} 

Bildbeschreibung hier eingeben

verwandte Informationen