Seite 1 von 1

Zusäzliches Einrücken bei figure- und Mathe-Umgebung

Verfasst: Fr 30. Dez 2011, 17:20
von guy.brush™
Hallo,

mir ist aufgefallen, dass LaTeX in einem bestimmten Fall zusaetzlich einrueckt (weniger als ein \quad, vielleicht nur die Laenge eines gewoehnlichen Leerzeichens) zu Beginn einer Zeile. Mithilfe eines Minimalbeispiels konnte ich die Wirkung "bekaempfen" und den gewuenschten Status herstellen, allerdings ist mir die Ursache nicht wirklich klar und ich weiss nicht, ob es eine elegantere Loesung gibt ... denn jedes Mal bei einer figure-Umgebung den Zeileneinzug ueberpruefen zu muessen, ist schon etwas nervig.

Hier erst einmal der Code:
\documentclass[a4paper,%
	       11pt,%
	       DIV=10]{scrartcl}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\usepackage{blindtext}

\begin{document}

\blindtext
\[
  a
   = b.
\]
\begin{figure}[!ht]
  \centering  
    \begin{tikzpicture}
      \draw (0,0) circle [radius=1.42];
    \end{tikzpicture}
  \caption{"Uberschrift}
  \label{fig:testfig}
\end{figure}
(Siehe dazu Abbildung~\ref{fig:testfig}.)
\blindtext

\clearpage

\blindtext
\[
  a
   = b.
\]
\begin{figure}
\end{figure}
(Siehe dazu Abbildung~\ref{fig:testfig2}.)
\blindtext

\clearpage

\blindtext
\[
  a
   = b.
\]
\begin{figure}
\end{figure}%
(Siehe dazu Abbildung~\ref{fig:testfig3}.)
\blindtext

\end{document}
Da es beim ersten Fall nicht so sehr auffaellt, habe ich es auf der zweiten Seite minimalistischer rekonstruiert. Auf der dritten Seite habe ich mittels eines "%" nach "\end{figure}" den zusaetzlichen Zeileneinzug verhindern koennen.

Ich konnte den Fehler jetzt nur rekonstruieren, indem ich direkt nach einer abgesetzten Mathe-Umgebung eine figure-Umgebung geoeffnet habe. Der Text nach der figure-Umgebung wird dann zusaetzlich ein wenig eingerueckt.

Wieso ist dem so? Wieso kann ich das mithilfe eines "%" loesen? Und wie kann man das ggf. eleganter loesen? Gibt es eine alles erschlagende Loesung, die man vielleicht irgendwo in die Praembel setzen kann?


Viele Gruesse,

\\ guy.brush

Verfasst: Sa 14. Jan 2012, 13:51
von guy.brush™
Ich wuerde das Thema gerne einmal bumpen :).

Verfasst: Sa 14. Jan 2012, 16:46
von bloodworks
Hallo ich weiß es auch nicht, da es bei floats ohne Mathe davor nicht auftritt. Da ich auch keine Ideen in den einschlägigen Hilfsquellen gefunden habe, habe ich die Frage als "wichtig" gepinnt. Vll findet sich ja jemand ders weiß.

Verfasst: Sa 14. Jan 2012, 17:06
von guy.brush™
bloodworks hat geschrieben:Hallo ich weiß es auch nicht, da es bei floats ohne Mathe davor nicht auftritt. Da ich auch keine Ideen in den einschlägigen Hilfsquellen gefunden habe, habe ich die Frage als "wichtig" gepinnt. Vll findet sich ja jemand ders weiß.
Vielen Dank :).

Verfasst: Sa 14. Jan 2012, 17:44
von cgnieder
Es ist wohl ein Zeilenende, das beim Einlesen in ein Leerzeichen geändert wird. Durch Einfügen des % wird das Zeilenende versteckt und auch nicht mehr in ein Leerzeichen umgewandelt.
So etwas passiert gerne mal bei selbst definierten Umgebungen, bei denen man vergisst, am Ende ein \ignorespaces einzufügen.

Wo diese Zeile in diesem Fall genau versteckt ist, weiß ich auch nicht, aber ich habe wenigstens eine Lösung für das Problem:
Einfach folgende zwei Zeilen in die Präambel einfügen:
\usepackage{etoolbox}
\AfterEndEnvironment{figure}{\ignorespaces}
Gruß

Verfasst: Sa 14. Jan 2012, 22:19
von bloodworks
Mhhm die Frage ist ja eigentlich aber, warum passiert das gerade in dieser Konstellation. Also einfach nur die figure macht das ja nicht. Zerbricht a vll irgendwas?

Verfasst: Sa 14. Jan 2012, 22:33
von cgnieder
Ich weiß es leider auch nicht, versuche dem aber auf den Grund zu gehen.

Verfasst: So 15. Jan 2012, 19:30
von rais
cgnieder hat geschrieben:Es ist wohl ein Zeilenende, das beim Einlesen in ein Leerzeichen geändert wird. Durch Einfügen des % wird das Zeilenende versteckt und auch nicht mehr in ein Leerzeichen umgewandelt.
seh ich auch so. Hier eine etwas einfachere Konstellation:
\documentclass{scrartcl}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}

\begin{document}
a%
\begin{figure}[!ht]
  \caption{foo}
\end{figure}
b

vs.

c%
\begin{figure}[!ht]
  \caption{bar}
\end{figure}%
d
\end{document}
MfG
Rainer

Verfasst: So 15. Jan 2012, 19:47
von cgnieder
Also hat die display-Umgebung offenbar nichts damit zu tun...

Verfasst: Mo 16. Jan 2012, 10:52
von cgnieder
Angeblich ist das so, damit man die figure Umgebung innerhalb eines Absatzes schreiben kann:
\documentclass{article}

\begin{document}

Das ist ein Absatz, der nach der \verb+figure+-Umgebung weitergehen wird.%
\begin{figure}
 figure 1
 \caption{caption 1}
\end{figure}
Hier geht der Absatz nahtlos weiter.

Das ist ein Absatz, der nach der \verb+figure+-Umgebung weitergehen sollte.%
\begin{figure}
 figure 2
 \caption{caption 2}
\end{figure}%
Hier geht der Absatz \emph{nicht} nahtlos weiter.

\end{document}
Ich weiß allerdings nicht, ob tatsächlich irgendjemand die figure-Umgebung wirklich nicht nur in einen Absatz sondern auch noch das Ende der vorigen Zeile auskommentiert. So ganz klar finde ich das noch nicht...