Hurenkinder, Schusterjungen und alleinstehende Überschriften

Fragen und Probleme, die nicht den obigen Kategorien zugeordnet werden können


MoeNii
Forum-Newbie
Forum-Newbie
Beiträge: 3
Registriert: So 24. Mai 2009, 19:05
Wohnort: Frankenberg/ Sa.

Hurenkinder, Schusterjungen und alleinstehende Überschriften

Beitrag von MoeNii »

Hallo,

Ich nutze LyX unter Ubuntu 9.04 und bin eigentlich sehr zufrieden damit.
Ich weiß die ersten werden jetzt loslegen: "Nimm doch LaTeX den Quelltext selber zu schreiben gibt dir viel mehr Freiheit, bli bla blubb."
ABER für's Abi reicht LyX denk ich mal aus.

Nun zu meinem Problem/ Problemen.
In meiner Komplexen Leistung habe ich hier und da Schusterjungen und Hurenkinder sowie am Seitenende alleinstehende Überschriften.

TEXTTEXTTEXT
TEXTTEXTTEXT
TEXTTEXTTEXT
TEXTTEXTTEXT
TEXTTEXTTEXT

ÜBERSCHRIFT

%autom. Seitenumbruch%

TEXTTEXTTEXT
TEXTTEXTTEXT
TEXTTEXTTEXT
. . .
. . .

Kann ich durch Einfügen von Befehlen in das Dokument oder den Vorspann das Problem lösen, und wenn ja WIE?
ODER
Kann ich das Problem anders Lösen?

Danke für jede Hilfe,

Marcus Müller

Benutzeravatar
KOMA
TeX-Entwickler
TeX-Entwickler
Beiträge: 2958
Registriert: Fr 4. Jul 2008, 17:28
Kontaktdaten:

Beitrag von KOMA »

Allein stehende Überschriften sollten normalerweise nicht vorkommen. Falls es diese gibt, nützen die Mechanismen zur Unterdrückung von Schusterjungen und Hurenkindern in der Regel auch nicht. Meist resultieren diese nämlich entweder aus Anwenderfehlern oder aus Fehlern in Klassen oder Paketen.

Schusterjungen und Hurenkinder kann man bei TeX über penalties verhindern. Allerdings werden Schusterjungen in der Typografie unterschiedlich gesehen. Gerade moderne Typografen vertreten auch die Ansicht, dass sie den Leser auf die nächste Seite ziehen. Manche sehen sie auch nur als Nachteil auf der rechten Seite einer Doppelseite, während sie auf der linken Seite einer Doppelseite eher unproblematisch sind. Hurenkinder wiederum sind normalerweise dann unproblematisch, wenn die Zeile nicht gleichzeitig »fast leer« ist. Als fast leer wird dabei in der Regel eine Füllung von weniger als der Hälfte betrachtet.

Nun kann man bei TeX mit
\clubpenalty = 10000
\widowpenalty = 10000
\displaywidowpenalty = 10000
Hurenkinder und Schusterjungen komplett verbieten. Dabei handelt man sich aber insbesondere im doppelseitigen Satz, also mit \flushbottom andere Probleme ein, da TeX keine globale Optimierung des Seitenumbruchs bietet (übrigens etwas, was auch heute noch unendlich viel Zeit benötigen kann). Deshalb sind manuelle Eingriffe meist die bessere Lösung, etwa der Versuch, einen einzelnen Absatz mit
\looseness=-1
eine Zeile kürzer oder mit
\looseness=1
eine Zeile länger umbrechen zu lassen. Die genannte Anweisung fügt man dazu irgendwo in besagtem Absatz ein. Das kann auch am Anfang des Absatzes sein (aber bitte keine Leerzeile zwischen Anweisung und Absatz!). Die Einweisungen können im Extremfall übrigens auch gegenteilige Auswirkung haben, da sie auch Auswirkung auf die Anzahl der Umbruchversuche für einen Absatz haben können.

Eine etwas schwächere automatische Einschränkung wäre die Verwendung einer Zahl<10000 bei den penalties. Die aktuelle Einstellung kann man sich mit
\typeout{Current Penalies:^^J
\string\clubpenalty=\the\clubpenalty^^J
\string\widowpenalty=\the\widowpenalty^^J
\string\displaywidowpenalty=\the\dosplaywidowpenalty}%
auf das Terminal und in die Log-Datei ausgeben lassen.

MoeNii
Forum-Newbie
Forum-Newbie
Beiträge: 3
Registriert: So 24. Mai 2009, 19:05
Wohnort: Frankenberg/ Sa.

Beitrag von MoeNii »

Das nenn ich doch mal Kompetent!

Okay nun fragt sich doch noch wo nun der Fehler liegt, was ist denn ein Anwendungsfehler bei dem solche Überschriften vorkommen?

Hier mal so ein Dokument (mit LyX 1.6.2 geschrieben)
\documentclass[12pt,a4paper,ngerman]{scrartcl}
\usepackage[T1]{fontenc}
\usepackage[latin9]{inputenc}
\setcounter{secnumdepth}{-1}
\setcounter{tocdepth}{-1}
\setlength{\parskip}{\smallskipamount}
\setlength{\parindent}{0pt}
\usepackage{color}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% User specified LaTeX commands.
\usepackage{multicol}

\usepackage{babel}

\begin{document}

\title{Informatik}


\author{Marcus Müller 11 II}


\date{\textcolor{white}{x}}

\maketitle

\part{Theorethische Informatik}
\begin{description}
\item [{Was?}] Beschäftigt sich mit der Modellbildung
\end{description}

\section{Teilgebiete}
\begin{itemize}
\item formale Sprache
\item Automatentheorie
\item Berechenbarkeitstheorie
\item Komplexitätstheorie
\item Kryptologie 
\end{itemize}

\section{Aufgabenbereiche}
\begin{itemize}
\item Programmiersprachenentwicklung
\item mathematische Modelle Umzuwandeln\hfill{}Automaten entwickeln
\item Berechenbarkeitstheorie\hfill{}Grenzen der Computertechnik
\item Komplexitätstheorie\hfill{}Aufwand von Speicherplatz
\item Automatentheorie\hfill{}Turingmaschine
\end{itemize}

\section{Auswirkungen auf Wirtschaft, Wissenschaft und privaten Bereich}


\subsection{Wirtschaft}

\begin{multicols}{2}
\begin{itemize}
\item Vereinfachung für den Anwender
\item Unterhaltung
\item Internetpräsenz (z.B.: Werbung)
\item Flexibilität (z.B.: Teamarbeit)
\end{itemize}
\end{multicols}

Hier nochmal der Teil in dem gleich 2 alleinstehende Überschriften am Seitenende auftauchen.
\section{Auswirkungen auf Wirtschaft, Wissenschaft und privaten Bereich}

\subsection{Wirtschaft}

Benutzeravatar
KOMA
TeX-Entwickler
TeX-Entwickler
Beiträge: 2958
Registriert: Fr 4. Jul 2008, 17:28
Kontaktdaten:

Beitrag von KOMA »

Das Problem ist, dass Du unmittelbar nach Überschriften Listen u. ä. stehen hast. Davon abgesehen, dass ich gelernt habe, dass man jedes Kapitel, jeden Abschnitt, jeden Unterabschnitt etc. mit min. einem Satz einleiten soll, ist das Problem einfach, dass bestimmte Umgebungen einen Umbruch vor der Umgebung bevorzugen und gleichzeitig einen Abstand vor der Umgebung einfügen. Damit wirkt dann der Mechanismus nicht, der normalerweise einen Umbruch zwischen der Überschrift und dem ersten Absatz verhindert.

Normalerweise ist es übrigens völlig richtig, beispielsweise vor einer Liste einen Umbruch zu bevorzugen. Es wäre nämlich höchst unschön, wenn direkt am Anfang des ersten Listeneintrags oder bei kurzen Einträgen nach dem ersten Eintrag ein Umbruch erfolgen würde.

Man kann diesen Mechanismus für Listen abstellen, indem man lokal \@beginparpenalty hoch setzt. Anwender sollten wissen, dass Umbrüche vor Listen normalerweise bevorzugt werden. Wie man das ändert, ist jedoch etwas was Experten ihnen erklären sollten. Man kann hier also nicht von einem Anwenderfehler sprechen. Informationen dazu findest Du in einem meiner früheren Beiträge.

Bei der multicols-Umgebung ist es etwas anderes. Die führt ggf. sogar explizit ein \newpage aus, um sicherzustellen, dass die Mindestzahl an Zeilen auf einer Seite steht. Dafür steht aber in der Anleitung zum multicol-Paket bereits auf Seite 2 mit Beispiel, wie man den Umbruch zwischen Überschrift und Anfang der multicols-Umgebung verhindert. Hier liegt also tatsächlich ein Anwenderfehler vor.

Noch etwas:
\part{Theorethische Informatik} 
 \begin{description} 
 \item [{Was?}] Beschäftigt sich mit der Modellbildung 
 \end{description} 
Bist Du sicher, dass Du nicht einfach
\paragraph{Was?}Beschäftigt sich mit der Modellbildung
haben willst, also etwas, was man Spitzmarke nennt?

Und an \parskip und \parindent sollte man auch nicht so einfach herumdoktern (siehe auch l2tabu). KOMA-Script bietet Optionen wie parskip=half, die Du einmal nachlesen solltest.

MoeNii
Forum-Newbie
Forum-Newbie
Beiträge: 3
Registriert: So 24. Mai 2009, 19:05
Wohnort: Frankenberg/ Sa.

Beitrag von MoeNii »

Genial . . .

parskip und parindent hab ich übrigens nicht selbst verändert dafür hab ich ja LyX, von dem werde ich versuchen mich abzunabeln.

Der ziemlich einzige Befehl den ich kenne ist \multicols und multicols ist auch das einzige Paket was ich per Hand in den Vorspann getippt habe.

Gut das Problem ist damit zwar nicht gelöst dafür weiß ich jetzt das LyX irgendwie doch Mist ist.

Benutzeravatar
KOMA
TeX-Entwickler
TeX-Entwickler
Beiträge: 2958
Registriert: Fr 4. Jul 2008, 17:28
Kontaktdaten:

Beitrag von KOMA »

Wieso nicht gelöst? Du weißt jetzt (zumindest, wenn Du die angegebene Stelle in der multicol-Anleitung gelesen hast), was Du am Dokument, das LyX ausspuckt, ändern musst. Damit sollte das Problem doch eigentlich gelöst sein.

GastNeu

Alleinstehende Überschriften vor Tabellen

Beitrag von GastNeu »

Hallo liebes Forum,

manchmal kommt man wegen zwingender Layoutvorgaben nicht umhin, nach einer Überschrift unmittelbar eine Tabelle (in meinem Fall: Longtable) folgen zu lassen. Wie kann man da alleinstehende Überschriften vermeiden, ohne das manuell mit einem erzwungenen Umbruch vor der Überschrift machen zu müssen? Im Forum habe ich nur etwas zum vergleichbaren Problem bei Listenumgebungen gefunden.

Besten Dank im Voraus!

Minimalbeispiel:
\documentclass[a4paper,oneside]{scrbook}
\usepackage[ngerman]{babel}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{longtable}
\begin{document}
\subsubsection{Beispielüberschrift}
\begin{longtable} {lllll}
 1& & Beispieltext Beispieltext Beispieltext & &1963-1975\\
& & & & \\
 2& & Noch mehr Beispieltext r Beispieltext & &1970-1991\\
& & & & \\
\end{longtable}
\end{document}
P.S.: Das ist mein erster Forumbeitrag und ich hoffe, ich habe den goLaTeX-Knigge richtig befolgt.

Antworten