Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

geometry, widowpenalty, clubpenalty, scrbook, Underfull \vbox (badness 10000)

159 views
Skip to first unread message

Jan Ulrich Hasecke

unread,
May 3, 2000, 3:00:00 AM5/3/00
to

Hallo!

Entschuldigt das Monstersubjekt, aber ich habe mich irgendwie
verfranst.

Ich setze gerade ein Buch mit scrbook. Mit Hilfe von \widowpenalty10000,
\clubpenalty10000 und displaywidowpenalty10000 habe ich alle Schusterjungen
und Hurenkinder ausgemerzt. Leider werden nun die Absätze manchmal vertikal
auseinandergezogen. :-(

Bei einigen Seiten erscheint zudem die Warnung "Underfull \vbox
(badness 10000)" im Logfile. Letzteres bezieht sich, wenn ich das
noch richtig in Erinnerung habe, nicht auf Absatzabstände sondern
nur auf den unteren Rand, was mich nicht so sehr stört.

Gibt es eine Möglichkeit, das Auseinanderziehen der Absätze grundsätzlich
zu verhindern? Ist das Auseinanderziehen vielleicht ein Hinweis, dass ich
bei den geometry-Einträgen Mist gebaut habe? Angaben siehe unten.

Die FAQ schlägt ein manuelles Vorgehen vor mit looseness vor. Ehrlich
gesagt verstehe ich das nicht so ganz. Beim Ausprobieren bekomme damit
auch ganz seltsame oder keine Ergebnisse.

Hier meine geometry-Angaben:

\geometry{verbose,nohead,dvips,twoside,%
paperwidth=135mm,paperheight=215mm,%
textwidth=100mm,textheight=41\baselineskip,%
twosideshift=10pt}%

Durch die Angabe von textheight=41\baselineskip konnte ich das
Absatz-Problem schon etwas verkleinern. Nun tritt es nur noch sechs
bis sieben Mal auf auf 150 Seiten. Geht es noch besser? Ohne
\raggedbottom zu verwenden?

Ciao!
juh

--
juh's Sudelbuch
Literatur und Satire per E-Mail
http://www.sudelbuch.de

Axel Reichert

unread,
May 4, 2000, 3:00:00 AM5/4/00
to
Jan Ulrich Hasecke <j...@pironet.de> writes:

> Leider werden nun die Absätze manchmal vertikal auseinandergezogen.

\raggedbottom

Tschoe!
--
Axel Reichert -- http:/www.axel-reichert.de

Jan Ulrich Hasecke

unread,
May 4, 2000, 3:00:00 AM5/4/00
to

Axel Reichert <ma...@axel-reichert.de> writes:

> Jan Ulrich Hasecke <j...@pironet.de> writes:
>
> > Leider werden nun die Absätze manchmal vertikal auseinandergezogen.
>
> \raggedbottom

Das habe ich am Ende meines Artikels ja erwähnt. Ich schließe daraus,
dass es _keine_ andere Möglichkeit gibt. Gibt es denn irgendwo eine
Anleitung, wie man die \loseness Befehle sinnvoll anwendet?

Uwe Koloska

unread,
May 5, 2000, 3:00:00 AM5/5/00
to
Im Artikel <x7em7iw...@jobs.hasecke.com> schrieb Jan Ulrich Hasecke
<j...@pironet.de>:

>
> Axel Reichert <ma...@axel-reichert.de> writes:
>
>> Jan Ulrich Hasecke <j...@pironet.de> writes:
>>
>> > Leider werden nun die Absätze manchmal vertikal auseinandergezogen.
>>
>> \raggedbottom
>
> Das habe ich am Ende meines Artikels ja erwähnt. Ich schließe daraus,
> dass es _keine_ andere Möglichkeit gibt. Gibt es denn irgendwo eine
> Anleitung, wie man die \loseness Befehle sinnvoll anwendet?
>
> Ciao! juh
>

Wenn ich das richtig sehe, ist das Problem, daß die verschiedenen
Bestandteile der Seite und ihre Länge nicht in ein Zeilenraster
eingepaßt sind. Wenn du Seiten nur mit Text machst (keine Überschriften,
Bilder, Tabellen, Aufzählungen, etc.) und die Seitenlänge exakt einem
Vielfachen der Zeilenhöhe entspricht, sollten die Seiten registerhaltig
sein. Sobald aber irgendwelche Abstände dazukommen, die kein Vielfaches
der Zeilenhöhe sind wird es komplizierter.

Setzen ist im Gegensatz zum Textverarbeiten (oder sollte ich besser
verwurschten sagen?) eine handwerklich anspruchsvolle Aufgabe. TeX
macht seine Sache in den meisten Fällen schon sehr gut, aber wenn
das Material schwierig wird, ist Handarbeit angesagt.

o die Absatz- und sonstigen Abstände geeignet setzen: dehnbar überall
außer bei den Absätzen oder eben auf Vielfache einer Zeilenhöhe.
Dein Problem sind vielleicht auch Seiten, die _keine_ Überschriften
oder ähnliches enthalten, gegenüber Seiten, die ihren vertikalen
Ausgleich mit dem Weißraum um diese Sonderzeilen machen können zusammen
mit einer Seitenlänge, die kein Vielfaches der Zeilenhöhe ist ...

o Sätze umstellen, Zwischenüberschriften geeignet einfügen, für bestimmte
Absätze die sehr strengen (und damit meistens sehr guten) Kriterien von
TeX etwas aufweichen \begin{sloppy} \end{sloppy}

o PDFTeX hat in den neuesten Versionen ein experimentelles Feature, das
nicht nur Wortzwischenräume verändert, sondern die Buchstaben gering-
fügig staucht und dehnt (von Tschichold vorgeschlagen)

o ConTeXt (http://www.pragma-ade.nl oder http://dvi3.tiepmiep.dk/context/)
kann auf Zeilenraster setzen

Und noch was zum Originalposting:
Hurenkinder und Schusterjungen beseitigt man nicht durch Heraufsetzen der
Strafgelder (penalty), sondern, wie oben angedeutet, mit der Hand! Sätze
umformulieren, neu ordnen und "sloppy".

So ein einfaches Problem und so eine lange Erwiederung. Hoffentlich
konnte ich dir helfen.

Uwe

P.S.: Sudelst du jetzt in Buchform?

--
mailto:kol...@rcs.urz.tu-dresden.de
http://rcswww.urz.tu-dresden.de/~koloska/
-- --
right now the web page is in german only
but this will change as time goes by ;-)


Jan Ulrich Hasecke

unread,
May 5, 2000, 3:00:00 AM5/5/00
to
Hallo Uwe!

> P.S.: Sudelst du jetzt in Buchform?

Ja, ich will Teile des Sudelbuchs als PoD veröffentlichen. Zunächst,
und darum geht es hier: Die Reise nach Jerusalem.

Uwe Koloska <kol...@rcs.urz.tu-dresden.de> writes:

> sollten die Seiten registerhaltig sein.

Sind sie auch. Es ist eine Erzählung ohne Überschriften. Reiner
Text. Zwischen den "Kapiteln" sind lediglich \bigskips, um größere
Abstände zu schaffen. Auch hier bleibt der Satz registerhaltig, weil
wohl \bigskip ein Vielfaches des Zeilenabstandes ist.

Das Problem der gedehnten Absätze taucht nur dort auf, wo _nicht_ 41
Zeilen pro Seite sind, weil ein Schusterjunge oder Hurenkind verhindert
werden soll. Auf einer Seite mit normalen Absätzen kann man dies wohl
nicht verhindern.

Jetzt habe ich aber festgestellt, dass auch auf einer Seite, wo es ein
\bigskip gibt, die normalen Absatzabstände gedehnt werden. Hier müsste
ich doch die Möglichkeit haben, das per Hand zu korrigieren. Durch ein
doppeltes \bigskip oder einen variablen Abstand? Ich hab das Gefühl,
dass ein Brett vor meinem Kopf mir die Sicht auf die einfache Lösung
verdeckt. ;-)

> Setzen ist im Gegensatz zum Textverarbeiten (oder sollte ich besser
> verwurschten sagen?) eine handwerklich anspruchsvolle Aufgabe.

In der Tat!

> o PDFTeX hat in den neuesten Versionen ein experimentelles Feature, das
> nicht nur Wortzwischenräume verändert, sondern die Buchstaben gering-
> fügig staucht und dehnt (von Tschichold vorgeschlagen)

Mh, hört sich nach typographischer Barbarei an.;-)

> o ConTeXt (http://www.pragma-ade.nl oder http://dvi3.tiepmiep.dk/context/)
> kann auf Zeilenraster setzen

Das dürfte für mehrspaltigen Satz sehr interessant sein. Multicol fand
ich immer scheußlich. Wenn ich mal wieder Zeit habe ... ;-)

Jan Ulrich Hasecke

unread,
May 5, 2000, 3:00:00 AM5/5/00
to
Hallo!


Stefan Ulrich <ulr...@cis.uni-muenchen.de> writes:

> Bevor man die Holzhammermethode `sloppy' gegen Hurenkinder/Schusterjungen
> anwendet, sollte man ist \looseness=1 oder \looseness=-1 probieren; aus
> dem TeXbook:

Jetzt arbeite ich schon über zehn Jahre mit LaTeX, aber diesmal stehe
ich wie der Ochs vorm Berg. \looseness macht nix! Ich hab versucht,
einen Absatz, bei dem die letzte Zeile auf die nächste Seite kam,
wahlweise um eine Zeile zu kürzen oder zu verlängern. Ich hab dazu
einfach \looseness=1 bzw. \looseness=-1 in den entsprechenden Absatz
geschrieben. Ohne Wirkung.

> If you set |\looseness=1|, \TeX\ will try to make the current
> paragraph one line longer than its optimum length, provided that
> there is a way to choose such breakpoints without exceeding the
> tolerance you have specified for the badnesses of individual
> lines.

Ist bei scrbook die Toleranz zu eng? Muss ich irgendwo dran drehen?
Darf \textheight nicht 41\baselineskip sein?

ratlos

Jan Ulrich Hasecke

unread,
May 5, 2000, 3:00:00 AM5/5/00
to
Stefan Ulrich <ulr...@cis.uni-muenchen.de> writes:

> Folgendes z.B. funktioniert bei mir (von 5 auf 4 Zeilen):

Ich sag's ja: Brett! Ochs vor Berg! Ich war auf dem Trip, dass durch
\looseness der Seitenumbruch eine Zeile früher oder später
erfolgt. Aber dafür gibt es irgendwas wie \addtolength oder so...

Ich bin gar nicht darauf gekommen, dass es hier um den Abstand zwischen
den Zeichen geht. Der Begriff Grauwert in der FAQ hat mich zwar stutzig
gemacht, aber ...

Danke! Mal sehen was ich damit ausrichten kann.

Uwe Koloska

unread,
May 6, 2000, 3:00:00 AM5/6/00
to
Im Artikel <x7bt2le...@jobs.hasecke.com> schrieb Jan Ulrich Hasecke
<j...@pironet.de>:
>
> Sind sie auch. Es ist eine Erzählung ohne Überschriften. Reiner Text.
> Zwischen den "Kapiteln" sind lediglich \bigskips, um größere Abstände zu
> schaffen. Auch hier bleibt der Satz registerhaltig, weil wohl \bigskip
> ein Vielfaches des Zeilenabstandes ist.

Irrtum (aus latex.ltx):
\def\bigskip{\vspace\bigskipamount}
\newskip\bigskipamount \bigskipamount =12pt plus 4pt minus 4pt
wird in scrbook.cls und im ganzen koma-script (außer scrletter) nicht
angetastet.

>
> Das Problem der gedehnten Absätze taucht nur dort auf, wo _nicht_ 41
> Zeilen pro Seite sind, weil ein Schusterjunge oder Hurenkind verhindert
> werden soll. Auf einer Seite mit normalen Absätzen kann man dies wohl
> nicht verhindern.
>
> Jetzt habe ich aber festgestellt, dass auch auf einer Seite, wo es ein
> \bigskip gibt, die normalen Absatzabstände gedehnt werden. Hier müsste
> ich doch die Möglichkeit haben, das per Hand zu korrigieren. Durch ein
> doppeltes \bigskip oder einen variablen Abstand? Ich hab das Gefühl,
> dass ein Brett vor meinem Kopf mir die Sicht auf die einfache Lösung
> verdeckt. ;-)
>

Also für deinen speziellen Fall _die_ Lösung:
1. definiere \bigskip (oder einen eigenen Namen) als Vielfaches der
Zeilenhöhe ohne glue -- oder trenne einfach durch Leerzeile(n)
2. definiere den Absatzabstand \parskip als 0pt ebenfalls ohne glue
3. Schusterkinder und Hurenjungen (;-)) durch Verlängern beliebiger
Absätze auf der Seite eliminieren. -- Zuerst \looseness, dann
\sloppypar.
4. Als letzten Ausweg die Seite (zusammen mit der zugehörigen Doppel-
seite um eine Zeile kürzen!

Selbst wenn die Seitenhöhe jetzt nicht genau hinkommt, sind die Seiten
doch registerhaltig, da ja von oben an immer gleiche Abstände herrschen.

Und noch eine Bemerkung:
Hurenkind und Schusterjunge müssen nicht auf Teufel komm raus beseitigt
werden, wenn es das Lesen nicht stört

Zum Schusterjungen z.B. steht in Willberg/Forsmann "Lesetypographie":
Schusterjungen stören den Lesefluß im allgemeinen nicht; im Gegenteil,
sie führen weiter, laden zum Umblättern und Weiterlesen ein. Sie
brauche nur bei Büchern mit besonderem ästhetischem Anspruch entfernt
zu werden.

>
>> o PDFTeX hat in den neuesten Versionen ein experimentelles Feature, das
>> nicht nur Wortzwischenräume verändert, sondern die Buchstaben gering-
>> fügig staucht und dehnt (von Tschichold vorgeschlagen)
>
> Mh, hört sich nach typographischer Barbarei an.;-)

Nun, es geht um seeehr kleine Verzerrungen -- Barbarei ist, was Word,
Pagemaker und Co. machen ;-) Und das Verfahren wurde von Herman Zapf
und nicht Jan Tschichold vorgeschlagen -- der wollte allerdings die
Änderungen nicht algorithmisch durchführen, sondern verschieden breite
Schriften benutzen. Die Datei, die das für pdftex demonstriert heißt
"pre-hz.pdf" und ich glaub, ich hab sie bei pragma-ade gefunden (da gibt
es eine Rubrik "pdftex". Sie ist ca. 580 KByte lang.

>
>> o ConTeXt (http://www.pragma-ade.nl oder
>> http://dvi3.tiepmiep.dk/context/)
>> kann auf Zeilenraster setzen
>
> Das dürfte für mehrspaltigen Satz sehr interessant sein. Multicol fand
> ich immer scheußlich. Wenn ich mal wieder Zeit habe ... ;-)
>
> Ciao! juh
>

Gute Nacht
Uwe

Markus Kohm

unread,
May 6, 2000, 3:00:00 AM5/6/00
to
> Darf \textheight nicht 41\baselineskip sein?

Nein darf es nicht. Es muß 41\baselinekip + \topskip sein, wie man im
letzten Absatz von Abschnitt "2.2.2 Konstruktion" im scrguide erfährt.

Merke: Wer am Satzspiegel Hand anlegt sollte mindestens Kapitel 2 aus
dem scrguide sehr aufmerksam gelesen und verstanden haben. Besser ist es
noch, wenn man die zugrundeliegende Literatur oder andere
Typographieartitkel zu diesem Thema gelesen und verstanden hat.

Wird der untere Randausgleich weniger wichtig angenommen als die
Vermeidung von Schusterjungen und angeblichen Hurenkindern, so sollte
man den unteren Randausgleich außerdem abschalten (\raggedbottom). Aber
das habe ich gestern schonmal geschrieben ... vielleicht sollte ich das
zu meiner neuen Signatur machen.

Gruß
Markus

--
Markus Kohm, Fichtenstraße 63, 68535 Edingen-Neckarhausen, Germany
email: Marku...@gmx.de

Jan Ulrich Hasecke

unread,
May 8, 2000, 3:00:00 AM5/8/00
to
Hallo Markus!

Markus Kohm <Marku...@gmx.de> writes:

> > Darf \textheight nicht 41\baselineskip sein?
>
> Nein darf es nicht. Es muß 41\baselinekip + \topskip sein, wie man im
> letzten Absatz von Abschnitt "2.2.2 Konstruktion" im scrguide erfährt.

Wie schreibe ich denn diese Anweisung in die geometry-Anweisung vom
geometry-Paket?



> Merke: Wer am Satzspiegel Hand anlegt sollte mindestens Kapitel 2 aus
> dem scrguide sehr aufmerksam gelesen und verstanden haben. Besser ist es
> noch, wenn man die zugrundeliegende Literatur oder andere
> Typographieartitkel zu diesem Thema gelesen und verstanden hat.

Mein Problem ist, dass ich 2.2.6 "Andere Papierformate" nicht
verstehe, aber mit dem geometry-Paket ad hoc das benötigte
Papierformat von 135mmx215mm einstellen konnte. Dadurch habe ich
wahrscheinlich die gesamte Satzspiegelberechnung von koma außer Kraft
gesetzt. Und ich kann auch verstehen, dass du das für keine geniale
Lösung hälst, da ihr gerade in diesen Aspekt so viel Arbeit gesteckt
habt.

Da ich noch etwas Zeit habe, werde ich mich mit scrguide noch intensiv
auseinandersetzen. Es muss ja auch irgendwie mit \paperwidth, \paperheight,
\areaset und \typearea gehen.

Das Problem der auseinandergezogenen Absätze habe ich mittlerweile
gelöst. Dank an Stefan! Keine widowpenalty mehr, stattdessen Handarbeit
mit looseness.

> Wird der untere Randausgleich weniger wichtig angenommen als die
> Vermeidung von Schusterjungen und angeblichen Hurenkindern, so sollte
> man den unteren Randausgleich außerdem abschalten (\raggedbottom). Aber
> das habe ich gestern schonmal geschrieben ... vielleicht sollte ich das
> zu meiner neuen Signatur machen.

Wie ich schon in meinem ersten Posting schrieb: raggedbottom gefällt
mir nicht. ;-)

Ciao!

Jan Ulrich Hasecke

unread,
May 8, 2000, 3:00:00 AM5/8/00
to
Hallo Markus!

Jetzt hab ich es noch mal mit den Koma-Werkzeugen ausprobiert.

Wenn ich dies einstelle:

\documentclass[10pt,german,pdftex]{scrbook}
\paperwidth 135mm
\paperheight 215mm
\areaset{100mm}{178mm}

erhalte ich mit pdflatex nicht das gewünschte Papierformat. Deshalb
hab ich das geometry-Paket ausprobiert, mit dem ich ein pdf in der
gewünschten Größe erzeugen kann.

Was mache ich falsch?

Heiko Oberdiek

unread,
May 8, 2000, 3:00:00 AM5/8/00
to
Jan Ulrich Hasecke <j...@pironet.de> wrote:

>\documentclass[10pt,german,pdftex]{scrbook}
>\paperwidth 135mm
>\paperheight 215mm
>\areaset{100mm}{178mm}
>
>erhalte ich mit pdflatex nicht das gewünschte Papierformat.

* pdfTeX sieht sich die Konfigurationswerte aus pdftex.def,
bzw. die Werte von \pdfpage{width,height} fuer die
MediaBox an:

\documentclass[10pt,german,pdftex]{scrbook}
\setlength{\paperwidth}{135mm}
\setlength{\paperheight}{215mm}
\setlength{\pdfpagewidth}{\paperwidth}
\setlength{\pdfpageheight}{\paperheight}

* Falls du hyperref verwendest, setzt dies fuer dich
die \pdfpage{width,height}-Werte.

Viele Gruesse
Heiko <ober...@ruf.uni-freiburg.de>

0 new messages