PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : figure-Umgebung erzeugt ungewollten Leerraum



simon
21-03-2012, 09:24
Guten Tag.

Ist es tatsächlich so, dass eine figure-Umgebung zusätzlichen vertikalen Abstand an der Stelle erzeugen kann, an der sie im Quellcode auftritt? Also auch dann, wenn das Bild selbst (beispielsweise über [p]) an einer ganz anderen Stelle ausgegeben wird.

Mein Minimalbeispiel erzeugt zweimal die Struktur Theorem/Subsection/Text. Der Abstand vor den beiden Subsections ist aber NICHT identisch, weil vor der ersten Subsection im Quellcode eine figure-Umgebung steht.

Das ist natürlich ärgerlich. Ich würde mich daher sehr freuen, wenn eine oder einer unter Euch Rat weiß.

Herzlich grüßt
Simon



\documentclass{article}
\RequirePackage{amsthm}[2004/08/06]
\newtheorem{satz}{Satz}

\begin{document}
\section{Section 1}
Text.\begin{satz}Satz\end{satz}
\begin{figure}[p]Abbildung\end{figure}

\subsection{Subsection 1.1}
Text.\begin{satz}Satz\end{satz}

\subsection{Subsection 1.2}
Text.
\end{document}

bobmalaria
21-03-2012, 09:31
hi,

eine figure umgebung fuegt schon etwas vertiaklen abstand ein, aber nur da wo sie auftaucht. wenn der abstand nicht identisch ist, dann kann das daran liegen, dass die abstaende nicht fix definiert sind


\newcommand\section{\@startsection {section}{1}{\z@}%
{-3.5ex \@plus -1ex \@minus -.2ex}%
{2.3ex \@plus.2ex}%
{\normalfont\Large\bfseries}}
\newcommand\subsection{\@startsection{subsection}{ 2}{\z@}%
{-3.25ex\@plus -1ex \@minus -.2ex}%
{1.5ex \@plus .2ex}%
{\normalfont\large\bfseries}}

ist die definition aus article.cls. an den konstrukten mit `plus` und `minus` kannst du sehen, dass es erlaubt wird den abstand zu stauchen odr zu strecken. das ist abhaengig von der textmenge auf der seite,

mit einem paket wie titlesec koenntest du die abstaende zementieren, oder entsprechend obigen befehl umdefinieren. ein gewisses mass an flexibilitaet ist normal wuenschenswert um die ueberschriften und den text auf einer seite gut zu verteilen.

gruss

rstuby
21-03-2012, 10:04
Also ich stelle anhand des MB eindeutig fest, dass der zusätzliche Abstand GENAU dann auftritt, wenn direkt vor der neuen \subsection die figure-Umgebung im Quelltext steht. Es sollte wohl nicht so sein, aber es ist so.

Festus
21-03-2012, 10:28
Also ich stelle anhand des MB eindeutig fest, dass der zusätzliche Abstand GENAU dann auftritt, wenn direkt vor der neuen \subsection die figure-Umgebung im Quelltext steht. Es sollte wohl nicht so sein, aber es ist so.

Ja, bei mir auch. Es liegt auch nicht an der Limitierung auf page bei der Positionierung, sondern tritt immer auf, wenn man zumindest dafür sorgt, dass das Bild nicht genau an der Stelle auftritt, wo es eingefügt ist. Bei den KOMA-Klassen genau so, und auch microtype hilft nicht. Verhindern lässt es sich nur dadurch, dass die figure-Umgebung nicht direkt nach der Satz-Umgebung kommt, sondern wenn noch Text dazwischen eingefügt wird.

Vergleiche:


\documentclass{article}
\RequirePackage{amsthm}[2004/08/06]
\newtheorem{satz}{Satz}

\begin{document}
\section{Section 1}
Text.\begin{satz}Satz\end{satz}
%Text.
\begin{figure}[p]Abbildung\end{figure}

\subsection{Subsection 1.1}
Text.\begin{satz}Satz\end{satz}

\subsection{Subsection 1.2}
Text.
\end{document}

mit


\documentclass{article}
\RequirePackage{amsthm}[2004/08/06]
\newtheorem{satz}{Satz}

\begin{document}
\section{Section 1}
Text.\begin{satz}Satz\end{satz}
Text.
\begin{figure}[p]Abbildung\end{figure}

\subsection{Subsection 1.1}
Text.\begin{satz}Satz\end{satz}

\subsection{Subsection 1.2}
Text.
\end{document}

Sehr seltsam :confused:

simon
21-03-2012, 12:40
Dass das Problem nicht auftritt, wenn die figure-Umgebung an anderer Stelle steht, ist mir auch schon aufgefallen. Liegt also vielleicht am Zusammentreffen von theroem-Umgebung und \subsection.

Aber genau hier ist das Problem. Ich möchte beim Arbeiten nicht ständig aufpassen müssen, WO ich die figure-Umgebung platzieren darf und wo nicht.

Die Idee mit den Definitionen fester und flexiber Abstände hilft mir leider (trotzdem vielen Dank) auch nicht recht weiter. Es ist ja beide Male (bis auf die figure-Umgebung) die gleiche Definiton. Da erwartet man dann doch auch gleiche Abstände. Flexibler Abstand hin oder her.

Ich bin gespannt auf den Fortgang der Diskussion.

Simon

Festus
21-03-2012, 13:41
Dass das Problem nicht auftritt, wenn die figure-Umgebung an anderer Stelle steht, ist mir auch schon aufgefallen. Liegt also vielleicht am Zusammentreffen von theroem-Umgebung und \subsection.


Wenn es das wäre würde ja auch im zweiten Teil des Dokuments der Abstand nicht stimmen. Es scheint definitiv am Zusammentreffen von figure und theorem zu liegen. Laut Doku von amsthm sind die Abstände vor und hinter der theorem-Umgebung fixiert, der zusätzliche Leerraum kann also nur aus der figure-Umgebung stammen.

u_fischer
21-03-2012, 14:08
Das Problem gibt es nicht nur mit theorem sondern allgemein mit Listen: Diese fügen am Ende zusätzlichen Abstand ein. Damit sich dieser Abstand nicht zu dem Abstand vor der \subsection addiert, wird \addvspace benutzt. Aber wenn sich irgendwas dazwischen befindet (auch wenn dieses etwas nichts druckbares ergibt), dann können die \addvspace/\vspace-Befehle nicht mehr zusammenkommen und sich neutralisieren.

Meines Wissens gibt es keine allgemeine Möglichkeit, das Problem zu umgehen. Man sollte einfach nichts direkt vor oder nach einem \addvspace schreiben.

http://tex.stackexchange.com/questions/40331/addvspacex-noindent-addvspacex-doesnt-work

simon
21-03-2012, 15:13
Liebe Ulrike Fischer.

Vielen Dank für die Antwort. Ich werde mir also abgewöhnen, figure-Umgebungen (und ähnliches) hinter \addvspace-Konstruktionen zu setzen.

Gruß, Simon