PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Probleme mit parskip=half, Figure ragt über Seitenende hinaus



Magger
26-05-2010, 08:28
Hallo,

ich habe ein Problem, mit einer Gleitumgebung (Abbildung), die über den unteren Seitenrand hinausgeschoben wird, obwohl auf der Seite eigentlich noch genug Platz ist. Das ganze passiert nur, wenn ich parskip=half in der Dokumentklasse scrbook einstelle.

Ich habe zu meinem Problem folgendes Minimalbeispiel erstellt: (noch minimaler ist es schwierig, dass Problem zu reproduzieren, aber das meiste ist Blindtext mit einer bestimmten Länge.)


\documentclass[10pt,b5paper,headsepline,footsepline,parskip=half, headinclude=false,footinclude=false]{scrbook}

\usepackage[latin9]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}

\usepackage[inner=19mm,outer=19mm,top=21mm,bottom=31mm]{geometry}

\begin{document}

Die Silbentrennung funktioniert bei Wörtern, die Umlaute enthalten,
nur sehr mangelhaft.
Das hängt damit zusammen, dass die alten CM-
Schriften keine Umlaute als Zeichen enthalten und LATEX deswegen
die Umlaute aus zwei Zeichen zusammenbaut, und dadurch kommt
der Trennalgorithmus gehörig durcheinander. Abhilfe schafft hier die
Verwendung der neuen 8-bit Schriften, die alle Umlaute als Zeichen
enthalten, die sog. T1-kodierten Schriften. Eine solche T1-Kodierung
für die CM-Schriftfamilie heißt EC. Die Silbentrennung funktioniert bei Wörtern, die Umlaute enthalten,
nur sehr mangelhaft.

\begin{figure}[h]
\centering
\vspace{170pt}
\caption{Die Silbentrennung funktioniert bei Wörtern, die Umlaute enthalten, nur sehr mangelhaft.}
\label{fig:test1}
\end{figure}

Die Silbentrennung funktioniert bei Wörtern, die Umlaute enthalten,
nur sehr mangelhaft. Das hängt damit zusammen, dass die alten CM-
Schriften keine Umlaute als Zeichen enthalten und LATEX deswegen
die Umlaute aus zwei Zeichen zusammenbaut, und dadurch kommt
der Trennalgorithmus gehörig durcheinander. Abhilfe schafft hier die
Verwendung der neuen 8-bit Schriften, die alle Umlaute als Zeichen
enthalten, die sog. T1-kodierten Schriften. Eine solche T1-Kodierung
für die CM-Schriftfamilie heißt EC.

\begin{figure}[h]
\centering
\vspace{73.77pt}
\caption{Die Silbentrennung funktioniert bei Wörtern, die Umlaute enthalten, nur sehr mangelhaft.}
\label{fig:test2}
\end{figure}

\subsubsection{neue Überschrift}

Die Silbentrennung funktioniert bei Wörtern, die Umlaute enthalten,
nur sehr mangelhaft. Das hängt damit zusammen, dass die alten CM-
Schriften keine Umlaute als Zeichen enthalten und LATEX deswegen
die Umlaute aus zwei Zeichen zusammenbaut, und dadurch kommt
der Trennalgorithmus gehörig durcheinander.

Abhilfe schafft hier die
Verwendung der neuen 8-bit Schriften, die alle Umlaute als Zeichen
enthalten, die sog. T1-kodierten Schriften. Eine solche T1-Kodierung
für die CM-Schriftfamilie heißt EC.

\end{document}

Im Anhang ein pdf vom Ergebnis, man erkennt das die zweite Abbildung weit über den Rand hinausragt. Wenn ich das parskip=half rausnehme, dann funktioniert es sofort.

Wer kann mir helfen?

voss
26-05-2010, 08:45
ich habe ein Problem, mit einer Gleitumgebung (Abbildung), die über den unteren Seitenrand hinausgeschoben wird, obwohl auf der Seite eigentlich noch genug Platz ist. Das ganze passiert nur, wenn ich parskip=half in der Dokumentklasse scrbook einstelle.

Ich habe zu meinem Problem folgendes Minimalbeispiel erstellt: (noch minimaler ist es schwierig, dass Problem zu reproduzieren, aber das meiste ist Blindtext mit einer bestimmten Länge.)


\documentclass[10pt,b5paper,headsepline,footsepline,parskip=half, headinclude=false,footinclude=false]{scrbook}

\usepackage[latin9]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[ngerman]{babel}
\usepackage[inner=19mm,outer=19mm,top=21mm,bottom=31mm]{geometry}


Im Anhang ein pdf vom Ergebnis, man erkennt das die zweite Abbildung weit über den Rand hinausragt. Wenn ich das parskip=half rausnehme, dann funktioniert es sofort.

Wer kann mir helfen?

lass einfach bei figure die Option [h] weg oder nimm alternativ [!htb]
Und \usepackage{lmodern} ist imemr zu empfehlen!

Herbert

Magger
26-05-2010, 12:55
Hallo Herbert,

danke für die Vorschläge. Nur das Paket lmodern löst das Problem leider nicht, wie auch nicht anders zu erwarten. Ich hatte lmodern vorher drin, und hatte es aufgrund des Minibeispiels auskommentiert.

Die Lösung mit [!hb] ist auch nicht besonders gut, denn damit könnte ich das Problem vielleicht punktuell lösen, aber nicht prinzipiell.

Ich habe ein Dokument mit etwa 500 Seiten mit ziemlich vielen, eher kleinen Abbildungen. Deshalb habe ich die Platzierung der Bilder grundlegend auf [htbp] geändert. Ab uns zu taucht das von mir beschriebene und im Minimalbeispiel dargestellt Problem auf. Die Abbildung wird einfach über das Seitenende hinausgeschoben. Ich habe aber keine Lust, nach jeder Änderung 500 Seiten zu überfliegen, ob ja keine Abbildung über das Seitenende gerutscht ist.

Wenn ich parskip=half auskommentiere, verschwindet das Problem. Mir erscheint das ganze eher wie ein grundlegender Fehler.

u_fischer
26-05-2010, 13:53
parskip=half ergibt für \parskip einen Wert mit einem relativ großen streckbaren "plus"-Anteil: \parskip=6pt plus 6pt.

Dein Text, die Floats und die diversen Zwischenräume passen auf die Seite, aber wenn dann die diversen "plus"-Anteile verteilt werden, scheint LaTeX durcheinander zu kommen. (\parskip=6pt plus 12pt ergibt auch einen interessanten Effekt ...)

Grundsätzlich gilt: Wenn du viele große Objekte hast (und Bilder sind auch wenn sie klein sind höher als eine normale Zeile), ist es schwerer sie gleichmäßig über die Seite zu verteilen - auch wenn sie gleiten dürfen. Du solltest dir überlegen, ob du nicht \raggedbottom verwenden willst.

Du kannst auch mit z.B.
\makeatletter
\setparsizes{\z@}{.5\baselineskip \@plus .1\baselineskip}{%
1em \@plus 1fil}


den plus-Anteil von \parskip kleiner machen und mal schauen ob es hilft.

Ob LaTeX Probleme hat, kannst du übrigens an der log-Datei sehen.
"Underfull/overfull \vbox has occurred while \output is active" ist ein klarer Hinweis.

Magger
26-05-2010, 15:04
Danke Ulrike für die umfassende Antwort. Ich bekomme tatsächlich einen
Underfull \vbox (badness 10000) has occured while \output is active Fehler. Nicht notwendigerweise wird dabei auch die Figure über das Seitenende hinaus verschoben.


Grundsätzlich gilt: Wenn du viele große Objekte hast (und Bilder sind auch wenn sie klein sind höher als eine normale Zeile), ist es schwerer sie gleichmäßig über die Seite zu verteilen - auch wenn sie gleiten dürfen. Du solltest dir überlegen, ob du nicht \raggedbottom verwenden willst.

Das werde ich mal ausprobieren, wie das Ganze dann aussieht.


Dein Text, die Floats und die diversen Zwischenräume passen auf die Seite, aber wenn dann die diversen "plus"-Anteile verteilt werden, scheint LaTeX durcheinander zu kommen. (\parskip=6pt plus 12pt ergibt auch einen interessanten Effekt ...)

Sollte man diesen Fehler an irgend jemanden weiterleiten, der das Problem in ferner Zukunft mal irgendwann behebt, und wenn ja, an wen?

u_fischer
26-05-2010, 15:39
Du kannst natürlich einen LaTeX-Bug-Bericht machen
http://www.latex-project.org/bugs.html.

Allerdings wäre es sinnvoll dafür ein Minimalbeispiel mit book statt scrbook zu machen. \parskip kannst du manuel mit z.B. \parskip=6pt plus 12pt setzen.

Magger
27-05-2010, 08:32
Guten Morgen Ulrike,

ich habe jetzt mal ein englisches Minimalbeispiel erstellt, das prinzipiell den gleichen Fehler erzeugt. Allerdings wird hier nicht die 2. Abbildung zu weit nach unten geschoben, sondern die 1. Abbildung mit dem zweiten Absatz überdeckt.


\documentclass{book}

\parskip=6pt plus 12pt

\begin{document}

LaTeX is a high-quality typesetting system; it includes features designed for the production of technical and scientific documentation. LaTeX is the de facto standard for the communication and publication of scientific documents. LaTeX is available as free software. LaTeX is a high-quality typesetting system; it includes features designed for the production of technical and scientific documentation. LaTeX is the de facto standard for the communication and publication of scientific documents. LaTeX is available as free software. LaTeX is a high-quality typesetting system; it includes features designed for the production of technical and scientific documentation. LaTeX is the de facto standard for the communication and publication of scientific documents. LaTeX is available as free software.

\begin{figure}[h]
\centering
\vspace{80pt}
\caption{LaTeX is a high-quality typesetting system.}
\label{fig:test1}
\end{figure}

LaTeX is a high-quality typesetting system; it includes features designed for the production of technical and scientific documentation. LaTeX is the de facto standard for the communication and publication of scientific documents. LaTeX is available as free software. LaTeX is a high-quality typesetting system; it includes features designed for the production of technical and scientific documentation. LaTeX is the de facto standard for the communication and publication of scientific documents. LaTeX is available as free software. LaTeX is a high-quality typesetting system; it includes features designed for the production of technical and scientific documentation. LaTeX is the de facto standard for the communication and publication of scientific documents. LaTeX is available as free software.

\begin{figure}[h]
\centering
\vspace{80pt}
\caption{LaTeX is a high-quality typesetting system.}
\label{fig:test2}
\end{figure}

\subsubsection{new section}

LaTeX is a high-quality typesetting system; it includes features designed for the production of technical and scientific documentation. LaTeX is the de facto standard for the communication and publication of scientific documents. LaTeX is available as free software. LaTeX is a high-quality typesetting system; it includes features designed for the production of technical and scientific documentation. LaTeX is the de facto standard for the communication and publication of scientific documents. LaTeX is available as free software. LaTeX is a high-quality typesetting system; it includes features designed for the production of technical and scientific documentation. LaTeX is the de facto standard for the communication and publication of scientific documents. LaTeX is available as free software.

\end{document}


Ist das Beispiel so in Ordnung für einen Bug-Bericht?

lockstep
27-05-2010, 17:31
Ich würde jedes



\vspace{80pt}


durch



\rule{2.5cm}{2.5cm}


ersetzen, um die Bildpositionen deutlicher zu machen. Übrigens: Wenn man zusätzlich den "plus"-Teil von \parskip auf 6pt setzt, tritt der von dir ursprünglich beschriebene Effekt auf (Verschieben einer Abbildung in den unteren Rand); setzt man den Wert auf 7pt, verschwindet das zweite Bild überhaupt.

lockstep

voss
27-05-2010, 18:05
ich habe jetzt mal ein englisches Minimalbeispiel erstellt, das prinzipiell den gleichen Fehler erzeugt. Allerdings wird hier nicht die 2. Abbildung zu weit nach unten geschoben, sondern die 1. Abbildung mit dem zweiten Absatz überdeckt.

Ist das Beispiel so in Ordnung für einen Bug-Bericht?


\listfiles
\documentclass{book}

\setlength\parskip{6pt plus 6pt}
\newcommand\Text{%
LaTeX is a high-quality typesetting system; it includes features designed
for the production of technical and scientific documentation. LaTeX is
the de facto standard for the communication and publication of scientific
documents. LaTeX is available as free software. LaTeX is a high-quality
typesetting system; it includes features designed for the production of
technical and scientific documentation. LaTeX is the de facto standard
for the communication and publication of scientific documents. LaTeX is
available as free software. LaTeX is a high-quality typesetting system;
it includes features designed for the production of technical and scientific
documentation. LaTeX is the de facto standard for the communication and
publication of scientific documents. LaTeX is available as free software.}

\begin{document}

\Text

\begin{figure}[ht]
\centering
\rule{80pt}{80pt}
\caption{LaTeX is a high-quality typesetting system.}
\label{fig:test1}
\end{figure}

\Text

\begin{figure}[ht]
\centering
\rule{80pt}{80pt}
\caption{LaTeX is a high-quality typesetting system.}
\label{fig:test2}
\end{figure}

\subsubsection{new section}

\Text

\vfill
foo
\end{document}

Herbert

Magger
28-05-2010, 07:21
Danke, ich hatte es schon mit meiner Version hochgeladen.

Hier ist der Link zu Bug-Bericht:
http://www.latex-project.org/cgi-bin/ltxbugs2html?pr=latex/4112&introduction=yes&state=open