Mathe Ausdruck automatisch in eine neue Zeile setzten

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.
Smilies
:D :) :( :o :shock: :? 8) :lol: :-x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

BBCode ist eingeschaltet
[img] ist eingeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind eingeschaltet

Die letzten Beiträge des Themas

Ich habe die Datenschutzerklärung gelesen und bin damit einverstanden.

   

Wenn du eine Datei oder mehrere Dateien anhängen möchtest, gib die Details unten ein.

Ansicht erweitern Die letzten Beiträge des Themas: Mathe Ausdruck automatisch in eine neue Zeile setzten

von Gast » Mi 30. Jan 2019, 16:45

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.

\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.

von Gast » Mi 30. Jan 2019, 16:45

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.

\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.

Idee(n)

von Stamm- » Mi 30. Jan 2019, 16:28

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.
\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}

von Gast » Mi 30. Jan 2019, 15:35

Mathe Ausdruck automatisch in eine neue Zeile setzten

von Misanguta » Mi 30. Jan 2019, 15:14

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.
\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}

Nach oben