Bestimmen Sie die Länge des Restes einer mathematischen Anzeigezeile für mehrzeilige

Bestimmen Sie die Länge des Restes einer mathematischen Anzeigezeile für mehrzeilige
\documentclass{article}
\pagestyle{empty}
\usepackage{mathtools}
\usepackage{lipsum}
\begin{document}
\lipsum[1]
\[
  \text{beginning}\land
  \begin{multlined}[t][\linewidth]
   (\text{extremely long and boring junk occupying lots of space})\\\relax
   [\text{a variable substitution in brackets}]
 \end{multlined}
\]
\lipsum[2]
\end{document}

Erträge

Ausgabe

Was sagt man statt des Arguments \linewidth, dass die zweite mathematische Zeile (eine Ersetzung in den Klammern) rechtsbündig am rechten Textrand ausgerichtet ist, statt darüber hinauszugehen? D. h., wie berechnen wir „die Länge des Rests der Zeile bis zum rechten Rand“?

(Wie Sie sich vorstellen können, handelt es sich hierbei um eine stark vereinfachte Version eines größeren Beispiels aus dem echten Leben. Schlagen Sie daher für genau dieses MWE bitte nicht vor, multline*stattdessen zu verwenden, da dieses Zeug in meinem größeren Beispiel in einer anderen Blockmathematik-Umgebung verschachtelt ist.)

Antwort1

Sie können das Paket verwenden linegoal(es ist zwar nicht fehlerfrei, aber für eine einzelne Anwendung sollte es in Ordnung sein).

\documentclass{article}
\pagestyle{empty}
\usepackage{mathtools}
\usepackage{linegoal}
\usepackage{lipsum}

\begin{document}
\lipsum[1][1-3]
\[
  \text{beginning}\land
  \begin{multlined}[t][\linegoal]
   (\text{extremely long and boring junk occupying lots of space})\\\relax
   [\text{a variable substitution in brackets}]
 \end{multlined}
\]
\lipsum[2][1-3]
\[
  \text{beginning}\land
  \begin{multlined}[t][0.95\linegoal]
   (\text{extremely long and boring junk occupying lots of space})\\\relax
   [\text{a variable substitution in brackets}]
 \end{multlined}
\]
\lipsum[3][1-3]

\end{document}

Im zweiten Fall habe ich die gewünschte Breite reduziert, um eine Komprimierung des Raums zu vermeiden \landund trotzdem eine sichtbare Zentrierung zu erhalten (ohne jedoch zu viel Platz zu verschwenden).

Bildbeschreibung hier eingeben

Antwort2

Die Umgebung platzieren Sie multilinedin der Mitte der Zeile, sie sollte also, um den rechten Rand nicht überlappen zu lassen, kürzer sein als \linewidthder Teil, den Sie davor einfügen.

Da mathtoolsdas calcPaket geladen wird, können Sie das Makro verwenden \widthof, das Ihnen die Breite eines beliebigen Textes liefert. Damit können Sie von \linewidthder Breite die Dinge abziehen, die Sie vor der multilinedUmgebung hinzufügen (der Nachteil ist allerdings, dass Sie diese Dinge zweimal eingeben müssen, daher bin ich mir nicht sicher, ob dies in Ihrem Setup machbar ist):

\documentclass{article}
\pagestyle{empty}
\usepackage{mathtools}
\usepackage{lipsum}

\begin{document}
\lipsum[1]
\[
  \text{beginning} \land
  \begin{multlined}[t][\linewidth-\widthof{$\text{beginning} \land$}]
   (\text{extremely long and boring junk occupying lots of space}) \\
   [\text{a variable substitution in brackets}]
 \end{multlined}
\]
\lipsum[2]
\end{document}

Bildbeschreibung hier eingeben

verwandte Informationen