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, 16:27

Felix's gravatar image

Felix
1.3k525666
Akzeptiert-Rate: 47%

bearbeitet 16 Jun '13, 15:22

cgnieder's gravatar image

cgnieder
22.1k253463


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, 21:40

cgnieder's gravatar image

cgnieder
22.1k253463
Akzeptiert-Rate: 60%

bearbeitet 15 Jun '13, 14:48

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:

×256
×46
×32

gestellte Frage: 14 Jun '13, 16:27

Frage wurde gesehen: 16,807 Mal

zuletzt geändert: 16 Jun '13, 15:22