Mathe Ausdruck automatisch in eine neue Zeile setzten

Formelsatz für Mathematik, Naturwissenschaften und Technik


Misanguta
Forum-Newbie
Forum-Newbie
Beiträge: 1
Registriert: Mi 30. Jan 2019, 14:59

Mathe Ausdruck automatisch in eine neue Zeile setzten

Beitrag von Misanguta »

Hi,
ich habe das folgende Problem: Bei meinen Versuchsprotokollen sollen einzelne, berechnete Größen im Fließtext auftauchen. Nun dürfen diese Ausdrücke keinen Zeilenumbruch enthalten und sollen (wenn sie den Zeilenrand überschreiten) komplett in einer neuen Zeile aufgeführt werden, wobei der Blocksatz erhalten bleiben soll.

Wie im Minimalbeispiel erkennbar überschreitet die Mathe Umgebung leider den Rand und ich konnte bis jetzt keine Lösung für mein Problem mit den gegebenen Randbedingungen finden.

Code: Alles auswählen


\documentclass[12pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage{siunitx}
\setlength{\parindent}{0cm}

\begin{document}
Nach der Division des aus der Gleichung XY bestimmten Volumen \mbox{$V = 32,00\,\pm\,8,0\,\si{\cubic\milli\meter}$} mit der Stoffmenge \mbox{$n = \left(3,09\,\pm\,0,77\right)\cdot 10^{-4}\,\si{\mole} $} wurde ein Ausdruck für das Molvolumen $V_{m}$ erhalten:
\end{document}


Stamm-

Idee(n)

Beitrag von Stamm- »

Auf die Schnelle fällt mir dazu nur ein, entweder global \emergencystretch auf einen minimal benötigten Wert zu setzen oder für den betroffenen Absatz \sloppypar zu benutzen. Letzteres würde ich bevorzugen. Nebenwirkungen von der globalen Lösung sind in Abschnitt 1.8 von »l2tabu« beschrieben.

Code: Alles auswählen

\documentclass[12pt,a4paper,ngerman]{article}
\usepackage[T1]{fontenc}
%\usepackage[utf8]{inputenc}
\usepackage{babel}

\usepackage{mathtools}
\usepackage[detect-all,locale=DE,separate-uncertainty]{siunitx}
\usepackage[parfill]{parskip}  % Benutzung einer Klasse aus »KOMA-Script« ist besser

\usepackage{lmodern}
\usepackage{microtype}

%\usepackage{showframe}  % Satzspiegel anzeigen

%\emergencystretch=1.25em  % Voreinstellung `0pt`

\begin{document}
  \sloppypar
  Nach der Division des aus der Gleichung XY bestimmten Volumen \mbox{\( V = \SI{32(8)}{\cubic\mm} \)} mit der Stoffmenge \mbox{$n = \SI{3,09(77)e-4}{\mole}$} wurde ein Ausdruck für das Molvolumen $V_{m}$ erhalten:
\end{document}

Gast

Beitrag von Gast »

Zum Verhindern der Zeilenumbrüche im Mathemodus gibt es auch https://tex.stackexchange.com/q/10850/35864 Ich habe mich jetzt mal für die Lösung von David Carlisle statt \mbox entschieden.

Das Problem mit nicht umbrechbaren Formeln dieser Länge ist, dass sie aus Deinem schönen Blocksatz Hühnerfrikassee machen: Wenn TeX nicht umbrechen darf und in die nächste Zeile gehen soll, muss in der Zeile davor zwangsläufig riesiger Leerraum entstehen. Das findet LaTeX normalerweise nicht so toll und zieht die übervolle Zeile vor.

Da musst Du dann LaTeX überzeugen, hässlich viel Leerraum zuzulassen. Du kannst Dir mit \emergencystretch helfen, siehe z.B. https://texfaq.org/FAQ-overfull Den Wert für \emergencystretch legst Du am besten durch Trial-and-Error fest: So klein wie möglich, aber so groß wie nötig.

Siehe auch https://tex.stackexchange.com/q/93940/35864 und https://tex.stackexchange.com/q/241343/35864

Wenn Du sehr viel eventuell noch längere Matheumgebungen hast, dann ist es vielleicht irgendwann besser, den Blocksatz aufzugeben und linksbündigen Text zu setzen. https://tex.stackexchange.com/q/33913/35864

Ansonsten würde ich dazu raten, Inline-Mathematik so kurz wie möglich zu halten und lange Formeln abzusetzen.

Code: Alles auswählen

\documentclass[12pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage{siunitx}
\sisetup{
  locale = DE,
  separate-uncertainty = true
}
\usepackage{parskip}

\binoppenalty=\maxdimen
\relpenalty=\maxdimen

\setlength{\emergencystretch}{2em}

\begin{document}
Nach der Division des aus der Gleichung XY bestimmten Volumen $V = 32,00\,\pm\,8,0\,\si{\cubic\milli\meter}$ mit der Stoffmenge $n = \left(3,09\,\pm\,0,77\right)\cdot 10^{-4}\,\si{\mole}$ wurde ein Ausdruck für das Molvolumen $V_{m}$ erhalten:

Nach der Division des aus der Gleichung~XY bestimmten Volumen $V$ mit der Stoffmenge $n$ erhalten wir das Molvolumen $V_{m}$
\[
  V_{m} = \frac{V}{n} =
   \frac{\SI{32,00\pm8,0}{\cubic\milli\meter}}{\SI{3,09\pm0,77 e-4}{\mole}}
\]
\end{document}
Man beachte auch das komplette Ausnutzen der Funktionen von siunitx, insbesondere wird so der unschöne Leerraum hinter dem Komma in Kommazahlen verhindert.

Gast

Beitrag von Gast »

Zum Verhindern der Zeilenumbrüche im Mathemodus gibt es auch https://tex.stackexchange.com/q/10850/35864 Ich habe mich jetzt mal für die Lösung von David Carlisle statt \mbox entschieden.

Das Problem mit nicht umbrechbaren Formeln dieser Länge ist, dass sie aus Deinem schönen Blocksatz Hühnerfrikassee machen: Wenn TeX nicht umbrechen darf und in die nächste Zeile gehen soll, muss in der Zeile davor zwangsläufig riesiger Leerraum entstehen. Das findet LaTeX normalerweise nicht so toll und zieht die übervolle Zeile vor.

Da musst Du dann LaTeX überzeugen, hässlich viel Leerraum zuzulassen. Du kannst Dir mit \emergencystretch helfen, siehe z.B. https://texfaq.org/FAQ-overfull Den Wert für \emergencystretch legst Du am besten durch Trial-and-Error fest: So klein wie möglich, aber so groß wie nötig.

Siehe auch https://tex.stackexchange.com/q/93940/35864 und https://tex.stackexchange.com/q/241343/35864

Wenn Du sehr viel eventuell noch längere Matheumgebungen hast, dann ist es vielleicht irgendwann besser, den Blocksatz aufzugeben und linksbündigen Text zu setzen. https://tex.stackexchange.com/q/33913/35864

Ansonsten würde ich dazu raten, Inline-Mathematik so kurz wie möglich zu halten und lange Formeln abzusetzen.

Code: Alles auswählen

\documentclass[12pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage{siunitx}
\sisetup{
  locale = DE,
  separate-uncertainty = true
}
\usepackage{parskip}

\binoppenalty=\maxdimen
\relpenalty=\maxdimen

\setlength{\emergencystretch}{2em}

\begin{document}
Nach der Division des aus der Gleichung XY bestimmten Volumen $V = 32,00\,\pm\,8,0\,\si{\cubic\milli\meter}$ mit der Stoffmenge $n = \left(3,09\,\pm\,0,77\right)\cdot 10^{-4}\,\si{\mole}$ wurde ein Ausdruck für das Molvolumen $V_{m}$ erhalten:

Nach der Division des aus der Gleichung~XY bestimmten Volumen $V$ mit der Stoffmenge $n$ erhalten wir das Molvolumen $V_{m}$
\[
  V_{m} = \frac{V}{n} =
   \frac{\SI{32,00\pm8,0}{\cubic\milli\meter}}{\SI{3,09\pm0,77 e-4}{\mole}}
\]
\end{document}
Man beachte auch das komplette Ausnutzen der Funktionen von siunitx, insbesondere wird so der unschöne Leerraum hinter dem Komma in Kommazahlen verhindert.

Antworten