Ich verwende amsmath und schreibe meine abgesetzten mathematischen Gleichungen meistens mit equation, sowie mit align, wenn sie mehrzeilig sind. Davor und danach ist immer ein Abstand, den ich gern größer hätte.

Wie kann ich diese Abstände einstellen, am besten dokumentweit?

gefragt 19 Aug '13, 18:32

jan12's gravatar image

jan12
770272732
Akzeptiert-Rate: 100%


Die Abstände vor und nach Gleichungen werden von 4 Längen bestimmt:

\abovedisplayskip      % 10pt plus 2pt minus 5pt
\abovedisplayshortskip % 0pt plus 3pt
\belowdisplayskip      % 10pt plus 2pt minus 5pt
\belowdisplayshortskip % 6pt plus 3pt minus 3pt

Diese Längen sind Skips, das heißt sie können stauch- und dehnbare Anteile haben, was sie in der oben gezeigten Voreinstellung auch haben. Die gezeigten Werte gelten für eine Standardklasse mit Standardschriftgröße verwendet. Mit anderer Schriftgröße haben die Längen ebenfalls andere Werte.

Die beiden \(above|below)displayshortskip kommen zum Einsatz, wenn die Textzeile vor bzw. nach der Formel recht kurz ist und die Formel selbst auch. Zitat aus dem TeXbook:

Let z, s, and p be the current values of \displaywidth, \displayindent, and \predisplaysize. [...] TeX computes a displacement d, to be used later when positioning box b [...] If d + s ≤ p, or if there was a left equation number (\leqno), TeX sets g_a and g_b to glue items specified by the parameters \abovedisplayskip and \belowdisplayskip; respectively; otherwise, g_a and g_b become glue items corresponding to \abovedisplayshortskip and \belowdisplayshortskip.

Wenn also predisplaysize kurz genug ist, um nicht mit der Formel zu überlappen, werden die short-varianten verwendet, sonst die langen. Bei amsmaths Umgebungen wie align werden übrigens immer die langen Werte verwendet. (Einer der Gründe, warum man z.B. align nicht für einzeilige Formeln verwenden sollte.)


Einstellen kann man die Längen wie üblich mit

\setlength<länge>{<wert>}

Ein Beispiel1 aus @Herbert's Math Mode (eine wärmstens empfohlene Lektüre):

\documentclass{article}
\usepackage{amsmath}
\begin{document}

\setlength\abovedisplayshortskip{0pt}
\setlength\belowdisplayshortskip{0pt}
\setlength\abovedisplayskip{20pt}
\setlength\belowdisplayskip{20pt}

\noindent The line ends before.
\begin{equation}
f(x) = \int\frac{\sin x}{x}\,\mathrm{d}x
\end{equation}
\noindent The line doesn’t end before the formula.
\begin{equation}
f(x) = \int\frac{\sin x}{x}\,\mathrm{d}x
\end{equation}
\noindent And the next line starts as usual with some text ...

\end{document}

alt text


1 Das Dokumentgerüst wurde von mir hinzugefügt, um das Beispiel direkt kompilierbar zu machen.

Permanenter link

beantwortet 19 Aug '13, 19:04

cgnieder's gravatar image

cgnieder
22.1k243463
Akzeptiert-Rate: 60%

bearbeitet 24 Aug '13, 13:22

Vllt. mit einer Redefinition von \normalsize? Sonst kann es zurückgesetzt werden. Die Voreinstellung kann sich je nach Schriftgröße unterscheiden.

(19 Aug '13, 19:15) stefan ♦♦

Kann mir vorstellen, dass es gut ist, eine fertige Definition für die eigene Präambel an den Beginn zu stellen, und die Hintergrund-Informationen ans Ende. Hier kommt erst am Ende ein generisches \setlength, nicht sofort anwendbar und zunächst viel zu lesen. ;-)

(19 Aug '13, 19:17) stefan ♦♦

@Stefan Man kann einen Absatz ja überspringen, wenn man ihn nicht lesen mag. Ich glaube nicht, dass man jemanden, der sich Gedanken über Typographie macht, damit überfordert, zumal ja ein konkretes Beispiel gegeben ist. ;)

(19 Aug '13, 19:25) cgnieder

@Clemens Ich neige selbst auch immer dazu, meine Beispiele auf Englisch zu verfassen. Ich halte es aber für vorteilhaft, die Beispiele hier möglichst einzudeutschen.

(24 Aug '13, 13:03) saputello

@saputello ich stimme Dir im Prinzip zu, aber das Beispiel ist eben aus der angegebenen Quelle kopiert, also habe ich den Text gelassen, wie er war. Und da er für das Problem letztlich irrelevant ist...

(24 Aug '13, 13:07) cgnieder

Es gibt wahrscheinlich mehrere Methoden in TeX/LaTeX um die Abstände zwischen Text und abgesetzten Gleichungen abzuändern.

Eine solche Methode ist besteht in der Veränderung der Längen-Parameter \abovedisplayshortskip und \belowdisplayshortskip. Der Normal-Wert für beide Parameter ist 0.0pt plus 3.0pt; sie kommen in Anwendung falls die Gleichungen relativ kurz sind. Beide Längen-Parameter kann man mit den gewohnten Befehlen \setlength und \addtolength ändern, z. B. \addtolength\abovedisplayshortskip{10pt} und \addtolength\belowdisplayshortskip{10pt}.

Für längere Gleichungen kommen die Längen-Parameter \abovedisplayskip und \belowdisplayskip zum Zug. Man kann sie ebenfalls mit \setlength und \addtolength Anweisungen ändern.

Permanenter link

beantwortet 19 Aug '13, 19:04

Mico's gravatar image

Mico
28513
Akzeptiert-Rate: 10%

bearbeitet 24 Aug '13, 13:04

saputello's gravatar image

saputello
11.1k154365

Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×55
×38
×24

gestellte Frage: 19 Aug '13, 18:32

Frage wurde gesehen: 45,695 Mal

zuletzt geändert: 24 Aug '13, 13:22