Wenn in meinem LaTeX-Dokument Tabellen oder Abbildungen nicht an die aktuelle Stelle passen, werden sie automatisch an eine günstige Position verschoben, meist an einen Seitenbeginn, und das finde ich gut so.

Es gibt jedoch auch Seiten, auf denen nur Tabellen sind, oder eben Abbildungen, kein normaler Text. Dort zentriert LaTeX die Tabellen vertikal. Das finde ich nicht konsistent, denn bei mir sollen alle Seiten oben beginnen.

Wie kann ich dafür sorgen, dass auch auf solchen Seiten Tabellen und Abbildungen oben beginnen? Genau da, wo sie sonst stehen würden, falls noch Text folgte?

gefragt 14 Jun '13, 10:27

Felix's gravatar image

Felix
1.3k225366
Akzeptiert: 89%

bearbeitet 16 Jun '13, 09:22

Clemens's gravatar image

Clemens
19.0k113060


Gleitumgebungen, die auf einer extra Seite -- einer Floatpage -- landen, werden in der Voreinstellung auf der Seite zentriert. Landen mehr els eine Gleitumgebung auf der Seite, ist der Platz zwischen Ihnen etwa doppelt so groß wie der oben und unten. Gesteuert wird das durch drei flexible Längen. (Mit flexibler Länge bezeichne ich hier, was in der TeX-Sprache skip heißt: eine Länge mit möglicherweise dehn- und stauchbaren Anteilen.) Die Längen, um die es hier geht, sind folgende:

\@fptop % Voreinstellung: 0pt plus 1fil = Null plus unendlich Dehnung
\@fpsep % Voreinstellung: 8pt plus 2fil = 8pt plus zwei mal unendlich Dehnung
\@fpbot % Voreinstellung: 0pt plus 1fil = Null plus unendlich Dehnung

Setzt man nun die obere Länge auf 0pt ohne dehnbaren Anteil, werden die Gleitumgebungen oben auf der Seite angeordnet. Das errecht man mit

\makeatletter
\setlength{\@fptop}{0pt}
\makeatother

Die Gleitumgebung landet nun wirklich ganz oben was den Anschein erweckt, also wäre sie weiter oben als entsprechend angeordneter Text auf „normalen“ Seiten:

\documentclass{article}
\usepackage{showframe}
\makeatletter
\setlength{\@fptop}{0pt}
\makeatother
\begin{document}
\noindent aaa
\begin{figure}[p]
  aaa
\end{figure}
\end{document}

alt text alt text

Das liegt daran, dass auf Textseiten die Grundlinie mindestens 10pt (oder genauer: den Wert von \topskip) vom oberen Rand entfernt ist. Je nach Höhe der Zeile wird also entsprechend Weißraum hinzugefügt. Wieviel das genau ist, hängt von der tatsächlichen Höhe des Textes ab. Im folgenden Beispiel ist es deutlich weniger als im Beispiel vorher:

\documentclass{article}
\usepackage{showframe}
\makeatletter
\setlength{\@fptop}{0pt}
\makeatother
\begin{document}
\noindent MMM
\begin{figure}[p]
  MMM
\end{figure}
\end{document}

alt text alt text

Es kann auch gar nichts sein:

\documentclass{article}
\usepackage{showframe}
\makeatletter
\setlength{\@fptop}{0pt}
\makeatother
\begin{document}
\noindent\huge aaa
\begin{figure}[p]
  \huge aaa
\end{figure}
\end{document}

alt text alt text

Da man also keinen genauen Wert für alle Fälle nennen kann, schlägt die UK TeX FAQ vor, \@fptop auf 5pt zu setzen, was ungefähr dem Unterschied zwischen \topskip und der Höhe des Textes entspräche. Da Gleitumgebungen in der Regel auch nicht mit Text beginnen, ist der Vorschlag gar nicht schlecht.

Permanenter link

beantwortet 14 Jun '13, 15:40

Clemens's gravatar image

Clemens
19.0k113060

bearbeitet 15 Jun '13, 08:48

Deine Antwort auf die Frage (nicht auf andere Antworten)
Knebel-Vorschau

Folge dieser Frage

Per E-Mail:

Wenn Du Dich anmeldest, kannst Du Updates hier abonnieren

Per RSS:

Antworten

Antworten und Kommentare

Aktuelle Buch-Infos

LaTeX Cookbook

LaTeX Beginners Guide

Limitierter Rabatt ebook
50% Coupon code tDRet6Y

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üge einfach zwei Leerzeichen an die Stelle ein, an der die neue Zeile sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Zugeordnete Themen:

×185
×32
×27

Frage gestellt: 14 Jun '13, 10:27

Frage wurde angeschaut: 4,828 Mal

Zuletzt aktualisiert: 16 Jun '13, 09:22