Platzierung von Gleitumgebungen im Code + whitespace Thema ist als GELÖST markiert

Tabellen und Grafiken erstellen und anordnen


Bochum

Platzierung von Gleitumgebungen im Code + whitespace

Beitrag von Bochum »

Hi,

bisher habe ich meine Gleitumgebungen eigentlich immer wie folgt platziert:
bla bla bla. Abb.~\ref{fig:bild} bla bla bla.
%
\begin{figure}[!tb]
   ...
\end{figure}
%
Bla bla bla bla.
Dabei sollen die %-Zeichen dafür sorgen, dass kein Einzug unter dem Bild entsteht.

Leider ist mir beim Feintuning meines Dokuments nun folgendes aufgefallen:

Folgt nach dem \end{figure} eine Leerzeile im Code, weil da nun halt ein Absatz hin soll und die Abbildung wird von LaTeX aber woanders platziert, dann kann es vorkommen, dass ein seltsamer leerer Abstand entsteht.

Dazu müssen, so meine Vermutung, verschiedene Aspekte zusammen kommen. Wenn man beispielsweise im folgenden MWE die Zeile vor dem seltsamen Leerraum auch nur leicht verändert (ein Buchstabe), dann verschwindet der Leerraum.
  • Frage #1: Warum macht LaTeX das? Ist das ein Bug, ein Feature oder meine Unwissenheit?

    Frage #1.1: Was ist denn die "best practice" Methode, um Gleitumgebungen IM code zu platzieren? (Damit solche komischen Leerräume oder ungewollte Einzüge nicht auftreten) Hierzu habe ich nur sehr wenig gefunden und das scheint auch nicht so wirklich verlässlich zu sein.

    Frage #2: Manchmal kommt es vor, dass eine Grafik, die unten auf einer Seite platziert werden soll, zwar unten ist aber nicht ganz. Vor der Grafik und auch auf der nächsten Seite ist purer Text und Absätze sind relativ (halbe Seite) weit entfernt. Daher ist es rein optisch möglich, die Grafik ein Stück nach unten zu schieben und 1-2 Zeilen Text von der folgenden Seite vor die Grafik zu setzen. Warum macht LaTeX manchmal und manchmal nicht?
MWE zu Frage 1: (ist leider etwas arg konstruiert, aber sonst konnte ich es nicht reproduzieren)
\documentclass[ 
    fontsize=10pt, 
    ngerman,
    twoside,
    paper=a5
]{scrreprt} 

\usepackage{setspace}
\onehalfspacing

\usepackage[showframe, bottom=1.6cm, inner=2cm, outer=1cm, top=1cm, includeheadfoot, footskip=1cm, headsep=.7cm, heightrounded=true]{geometry}
\raggedbottom

\usepackage{babel} 
\usepackage[T1]{fontenc} 
\usepackage{lmodern} 
\usepackage{graphicx}
\usepackage{blindtext}
\usepackage{amsmath}


\begin{document}

\blindtext[2] Das ist das Haus vom Nikolaus Das ist das Haus vom Nikolaus Das ist das Haus vom Nikolaus Das ist das Haus vom Nikolaus
%
\begin{equation}
blubb
\end{equation}
%
Das ist das Haus vom Nikolaus Das ist das Haus vom Nikolaus Das ist das Haus vom Nikolaus Das ist das Haus vom Nikolaus Das ist das Haus vom Nikolaus Das ist das Haus vom Nikolaus Das ist das Haus vom Nikolaus Das ist das Haus vom Nikolaus Das ist das Haus vom Nikolaus Das ist das Haus vom Nikolaus Das ist das Haus vom Nikolaus Das ist das Haus vom Nikolaus Das ist das Haus vom Nikolaus Das ist das Haus vom Nikolaus Das ist das Haus vom Nikolaus Das ist das Haus vom Nikolaus Das ist das Haus vom Nikolaus Das ist das Haus vom Nikolaus Das ist das Haus vom Nikolaus Das ist das Haus vom Nikolaus Das ist das Haus vom Nikolaus Das ist das Haus vom Nikolaus Das  das Haus vom Nikolaus Das ist das Haus vom Nikolaus Das ist das Haus vom Nikolaus Das ist das Haus vom Nikolaussss Nikolaussii
%
\begin{figure}[!tb]
\centering
\includegraphics[width=\textwidth]{example-image-a}
\end{figure}
%

\blindtext[2]
\end{document}
MWE zu Frage 2:
Leider ist es mir nicht gelungen, hierzu ein MWE zu basteln aber ich glaube, dass das mit Frage #1 in Verbindung steht. Vielleicht kann ich dann ein MWE nachliefern oder es hat jemand auch so ein Idee. Einen weißen Rand um die Grafik kann ich allerdings als Ursache ausschließen.

Vielen Dank!

Gast

Beitrag von Gast »

Am besten platziert man Gleitumgebungen zwischen den Absätzen (also mit Leerzeile davor und dahinter) und lässt auch immer p zu. Voreingestellt ist bei scrreprt übrigens tbp und das ist eigentlich auch eine gute Wahl.

Bochum

Beitrag von Bochum »

Dann muss ich ja immer ein \noindent setzen!? Oder gibt es eine andere Möglichkeit, den Einzug nach Bildern und Tabellen generell zu verhindern?

Gast

Beitrag von Gast »

Wieso das denn? Wenn die Gleitumgebung im Quellcode zwischen Absätzen eingefügt wird, dann muss man den Absatzeinzug nicht verhindern, weil ja an der Stelle ohnehin ein Absatz beginnt.

Bochum

Beitrag von Bochum »

ja, das ist schon richtig. Was ich meinte ist folgendes: Wenn nun ein Bild oben auf der Seite steht oder mittig (falls man noch h angibt), dann ist die erste Zeile unter dem Bild eingezogen. Prinzipiell stimmt das zwar, aber es wird doch oft gefordert, dass der Einzug unter Bildern nicht erfolgt.

Gast

Beitrag von Gast »

Das ist Quatsch. Wenn ein Bild zwischen Absätzen steht, gehört der nachfolgende Absatz auch eingerückt. Woran soll man denn sonst erkennen, dass an der Stelle ein Absatz ist?

Gast

Beitrag von Gast »

Dessen ungeachtet: Wenn man keinen Absatz macht, dann verhält sich TeX eben auch nicht so, als wäre an der Stelle ein Absatz. Das betrifft dann den kompletten Absatzumbruch und eben auch Leerzeichen vor der Abbildung.

Bochum

Beitrag von Bochum »

Also ich glaube, dass ich die Hauptverursacher gefunden habe:

Ich habe verschiedene penalties mit 10000 definiert. Besonders \brokenpenalty scheint sich hier negativ auszuwirken. Besonders was den whitespace betrifft.

Was kann man da denn machen, ohne das Dokument zu sehr manuelle nacharbeiten zu müssen. Dabei komme ich mir nämlich vor, als würde ich an LaTeX herumpfuschen... und das scheint mir keine gute Idee zu sein :?

Gast

Beitrag von Gast »

penalties auf 10000 zu setzen, ist meist eine schlechte Idee. Damit verbietet man Dinge absolut. Aber beispielsweise (unechte) Hurenkinder und Schusterjungen sind in wissenschaftlichen Werken meist weniger schlimm, als die Nebenwirkungen, wenn man sie absolut verbietet. Wenn man TeX überhaupt keine Freiheiten beim Satz mehr lässt, pfuscht man ihm maximal ins Handwerk. Besser, ganz am Ende gezielt an einzelnen Stellen eingreifen. Dafür gibt es verschiedene Mittel wie \looseness.

Bartman
Forum-Meister
Forum-Meister
Beiträge: 2456
Registriert: Do 16. Jul 2009, 21:41
Wohnort: Hessische Provinz

Beitrag von Bartman »

Ein Off-Topic-Hinweis: Falls Du hyperref lädst, darfst Du statt \ref auch \autoref verwenden. Bei dieser Dokumentklasse kann dann die Abkürzung, abhängig von der Sprache des Dokuments, mit
\renewcaptionname{ngerman}{\figureautorefname}{Abb.}
eingestellt werden. Kommt ein Befehl des Pakets cleveref zum Einsatz, ist diese Abkürzung schon vorhanden.

Starte bitte ein neues Thema, wenn Du darauf näher eingehen möchtest.

Antworten