Wie kann man sicher stellen, dass eine Überschrift mit dem folgenden Bereich zuverlässig zusammen gehalten wird? Meist funktioniert es ja gut, aber manchmal... habe ich immer wieder die Überschrift als "Schusterjunge" am Ende der vorherigen Seite alleine stehen, auch wenn nur so wenig Platz war, dass eben nur die Überschrift noch passte. Anfänglich habe ich es damit versucht, interessiert ihn aber meist nicht: \subsection(...)\nopagebreak dann, dachte mir vfill expandiert von 0-~ und füllt, je nach freiem Bereich, den Rest, hilft nur manchmal: \vfill \subsection(...) und am ehesten hilft: \pagebreak[2] \subsection(...) Auffällig ist jedoch, wenn auf eine Überschrift kein Text, sondern eine Aufzählung, ein Bild oder multicols anfängt - dann tritt es am häufigsten und dann auch hartnäckig auf. Im aktuellen Dokument verwende ich viel die multicols Umgebung, und nun nervt es mal richtig. Wenn so ein hartnäckiger Fall eintritt, hilft meist nur ein Ist TeX überhaupt bekannt, das es sich um eine "Überschrift" handelt um so etwas zu vermeiden oder wie kann ich zuverlässig erreichen, eine Überschrift soll nie alleine stehen. Und zwar nicht durch die workarrounds oben, bei jeder Überschrift. Ich denke das ist doch eine Standard Anforderung und schon gelöst worden, ohne eigenes macro für die section commands. Nachtrag: Die 3 genannten kritischen Übergänge als example.
Wenn \documentclass[DIV=11,10pt,a4paper,oneside]{scrartcl} \usepackage[utf8x]{inputenc} \usepackage[T1]{fontenc} \usepackage{lmodern} \usepackage[ngerman]{babel} \usepackage{microtype} \usepackage{graphicx} \usepackage{multicol} \usepackage{blindtext} \begin{document} \section{Allgemeines} \begin{multicols}{2} \blindtext[4] \end{multicols} \medskip \begin{multicols}{2} \blindtext Eine Leerzeile nach \verb|\section| hat keinen Einfluss, das \verb|\label| an \verb|\section| auch nicht, wie mehrfach ausgetestet, wenn ein unschöner Umbruch erfolgte. "`Section 2"' sollte nun alleine am Ende der Seite stehen und \verb|\pagebreak[2]| oder \verb|\pagebreak[3]| wird ignoriert, wirkt erst bei hartem pagebreak. Auch \verb|\section{Section 2}\nopagebreak| hilft nicht. \end{multicols} \pagebreak[2] \section{Section 2}\nopagebreak\label{sec:Section2} \begin{multicols}{2} \blindtext \end{multicols} \noindent\rule{\textwidth}{4cm}%Platzhalter für Grafik \begin{multicols}{2} \blindtext[2] \end{multicols} \section{Section 3}\label{sec:Section3} \begin{center} \rule{13cm}{6.5cm}%Platzhalter für %\includegraphics[width=.7\textwidth,keepaspectratio]{images/some-image-1} \end{center} \begin{multicols}{2} Der Übergang zur Section 3 ist auch so ein Kandidat. Den bekomme ich im Beispiel aber nicht getriggert, tritt dann wie bei Section 2 zwischen Überschrift und einer Grafik auf, die von der Größe maximal 1/3 der Seite belegt. Ich denke es hängt vom Text/Weißbereich der Vorseite ab. Wenn ich wieder einen solchen Fall habe, werde ich darauf achten, ob es nur auftritt, wenn \verb|includegraphics| ohne \verb|center| Umgebung verwendet wird. \blindtext\par\blindtext\par\blindtext \end{multicols} %\pagebreak[2] %meist guter hint, hilft aber nicht immer zuverlässig \section{Section 4}\nopagebreak\label{sec:Section4} Folgende Punkte sind absolut uninteressant:\nopagebreak \begin{itemize} \item item 1 Der Umbruch erfolgt auch mit Direktiven hier direkt \item item 2 vor dem Beginn der Aufzählung. \item item 3 \item item 4 \item item 5 \item item 6 \item item 7 \end{itemize} \end{document} gefragt 22 Aug '20, 20:37 Zujio
Ergebnis 5 von 13
show 8 more comments
|
Wie bereits in den Kommentaren erwähnt: Eine Überschrift vor multicols gehört in das optionale Argument: \begin{multicols}{2}[\section{Section 2\label{sec:Section2}}] \blindtext \end{multicols} Der Der Umbruch nach Section 4 ist kein Umbruch nach einer Überschrift, der Satz ist ja da, sondern ein Umbruch zwischen normalem Text und einer Liste. Den kann man unterdrücken, indem man das Paket enumitem lädt, und dann beginpenalty setzt: Folgende Punkte sind absolut uninteressant: \begin{itemize}[beginpenalty=10000] beantwortet 24 Aug '20, 09:12 Ulrike Fischer Das klärt einiges. Bei multicols dachte ich, das optionale Argument ist für einen Bereich über mehrere Spalten über dem multicols Abschnitt und nicht Pflicht um eine Überschrift damit zusammen zu halten. Habe das für Überschriften bisher nicht benutzt, weil bei Erweiterungen vor multicols man Das mit
(24 Aug '20, 13:48)
Zujio
Zum besseren Verständnis: Warum wirkt ein Wie erklärt sich der Einfluss von
(24 Aug '20, 13:50)
Zujio
Was würdest bei
(24 Aug '20, 13:59)
Ulrike Fischer
Seitenumbruch, wenn du es so schreibst. (
(24 Aug '20, 15:02)
Zujio
Ja, so wie \newpage code enthält "hier ein Seitenumbruch", so enthalten manche Umgebungen (u.a. multicols) Code "hier ist eine gute Stelle für einen Seitenumbruch". Das kannst mit \nopagebreak nicht verhindern. Und hinter section macht \nopagebreak sowieso keinen Sinn. Dort wird sowieso schon den Seitenumbruch unterdrückt, und mehr als unterdrücken kann man nicht.
(24 Aug '20, 16:45)
Ulrike Fischer
Ok, fürs Verständnis: Das führt zu der von dir gezeigten informellen Befehlskette.
(24 Aug '20, 17:33)
Zujio
Bisher habe ich mir vorgestellt, macros/code, Umgebungen zeichnen in Bereiche/"box'en" auf einem area, was wiederum in anderen enthalten sein kann bis zu root, der Seite, expandieren entsprechend dem benötigten oder limitierten Platz. Um die sichtbare Qualität zu erreichen, ist eine bedingte Rekursion mit Bewertung des Zwischenergebnis und Neuberechnung der Aufteilung notwendig, bevor diese interne Repräsentation einer Ausgaberoutine zugeführt wird. Auf dieser Zwischenrepräsentation würden nopagebreaks, pagebreaks noch bekannt sein, könnten sich aufheben, wenn ein Alg. darüber entscheidet.:-)
(24 Aug '20, 17:56)
Zujio
Nun klingt es für mich so, das Pakete mehr über ihren Kontext wissen müssen als gut ist, eine hohe Anforderung an Paketentwickler, vieles selber handeln müssen, weil ein command Strom erzeugt wird, der an die darunter liegende TeX Schicht übergeben und dort die Möglichkeiten, mangels Einfluss auf die vorherige Erzeugung, eingeschränkt sind. Eine echte Zwischenrepräsentation existiert nicht? - Ich weiß, geht ein bisschen weit, aber hier sind auch Paketentwickler unterwegs und ich versuche das besser zu verstehen. Sry. :-)
(24 Aug '20, 18:10)
Zujio
Besorg dir das TeXbook und lies das Kapitel wie TeX aus Zeilen Seiten bastelt. Für so ein Diskussion ist das hier nicht der richtige Platz.
(24 Aug '20, 18:34)
Ulrike Fischer
Ergebnis 5 von 9
show 4 more comments
|
Willkommen auf TeXwelt! Kannst Du bitte ein Minimalbeispiel für das beschriebene Verhalten angeben? Also ein möglichst kurzes, aber vollständiges Codebeispiel damit andere Dein Problem nachvollziehen können.
LaTeX weiß, dass \subsection eine Überschrift ist, und der Befehl enthält auch Code um einen Seitenumbruch zu unterdrücken. Wenn du dennoch einen bekommst, dann weil der nachfolgende Code den Seitenumbruch wieder ermöglicht. Es hängt also vom dem ab, warum es passiert, und was man tun soll, um ihn dennoch zu vermeiden.
Prinzipiell macht LaTeX das schon perfekt, nur manchmal steht die Überschrift als Einzelzeile am Ende einer Seite, die eigentlich voll ist, nur noch Platz für die Überschrift hat. Das kann auftreten, wenn auf die Überschrift direkt ein Bild, ein einzeiliger Absatz mit folgender Aufzählung oder ein
multicols
Abschnitt direkt folgt. Dabei ist das Bild mitincludegraphics
incenter
gesetzt, nicht in einer Gleitumgebung.Die Gliederungsebene spielt dabei keine Rolle, habe oben nur subsection als Beispiel gewählt.
Ich versuche TeX besser zu verstehen und Dokumente so zu schreiben, dass ich bei Überarbeitungen vorne, hinten nicht nach korrigieren muss und sicher stelle, dass egal wie der Text fließt, solche Effekte nicht auftreten.
Muss ich jetzt bei jeder Überschrift entsprechende Direktiven setzen oder kann ich irgendwie sicher stellen, dass eine Überschrift mit dem folgenden Absatz, egal was da kommt, zusammen gehalten wird, wenn dieser nicht die Seite komplett füllt und dadurch vielleicht ein Problem verursacht.
In Erinnerung habe ich, TeX ermittelt einen score Wert, der ein max von 10000 hat. Der optionale Parameter bei pagebreak ist eine Empfehlung in die Richtung, ob ein break günstig ist oder nicht. Manchmal hilft das auch, manchmal nur ein harter
\pagebreak
, der einem\pagebreak[4]
entspricht, denke ich. Eine solche Stelle ist ein Kandidat für nachträgliche erneute Korrektur. Das will ich eigentlich nicht.Gib doch bitte ein vollständiges/lauffähiges Beispiel in der Frage an, dass möglichst kurz ist, aber das problematische Verhalten aufweist. Sonst wird es extrem schwierig bis nahezu unmöglich Dir zu helfen.
Geht nicht, habe das schon den ganzen Nachmittag versucht, kann das mit einem mwe nicht triggern. Das Originaldokument kann ich dir nicht schicken, wäre auch nicht minimal. Dort habe ich gestern 2 Stellen rausgeworfen, wo nach Textergänzung die vorherigen Problemstellen verschoben wurden und nun, die vorher harten pagebreaks unpassend waren. Bei den beiden Stellen half zuvor nur ein harter pagebreak! Nun ist bei der einen Stelle auf Vorseite noch ca. 8cm Platz und er bricht korrekt und sauber um, ohne harten Eingriff. Überschrift+Bild auf Folgeseite, ohne inhaltlicher Änderung an der Stelle.
Vorher ca. 1.5cm Platz, Überschrift dort erschienen am Seitenende, nun ca. 8cm Platz und korrekter Umbruch, Überschrift und Bild auf Folgeseite. Ich kann es in einem mwe nicht triggern und beim letzten Dokument vor 8 Wochen, ca. 200 Seiten, hatte ich auch solche Stellen, wenn auf eine Überschrift Bild, Aufzählung oder multicols folgt. Kennt das Verhalten niemand aus eigenen Dokumenten?
Hi Zuio, könnte es klappen, ein Problembeispiel zu reproduzieren, anhand einer erstellten Kopie des Dokuments, was geschickt reduziert wird (mit zwischendurch Testen) so dass die Problemstelle in einem kleinen Dokument sichtbar wird?
Also wie gesagt: Code kann einen Seitenumbruch ermöglichen, selbst wenn eine Überschrift ihn erstmal ermöglicht. Ich kenne genügend Beispiele und weiß auch, was man machen muss. Aber ich werde darüber keinen langen Aufsatz schreiben. Du musst schon eine konkrete Kombination Überschrift + Folgecode zeigen. Es ist nicht nötig, dass wirklich ein Seitenumbruch da ist. Das kann ich ggfs schon erzwingen.
Hat mir doch keine Ruhe gelassen, habe die package includes auf möglichen Einfluss durchgesehen und dabei
microtype
identifiziert. Wenn aktiv, tritt der Effekt im Beispiel oben 2 von 3 mal auf, auskommentiert saubere Umbrüche. Nun kann ich mutmaßen, aber Ihr kennt euch besser aus - microtype trimmt den Blocksatz ein Stück schöner und kürzer, die area oder Umbruchberechnung erfolgte aber vorher?Nur eine Nebenbemerkung: Du schreibst „wenn ein längeres Dokument in Arbeit ist und sich ständig verändert, muss man dann bis ans Ende später wieder nach korrigieren“ – Gerade bei einem längeren Dokument muss man am Ende sowieso noch mal alle Seiten prüfen und korrigieren. Man gewinnt also eher nichts (oder nur wenig), wenn man das zwischendurch dauernd macht. :)
Klar, aber es gibt auch Zwischenversionen die ordentlich aussehen sollen. Ich möchte so schreiben, dass ich (im wesentlichen) weiß wie es am Ende raus kommt, bis auf die üblichen Feinschliffe am Ende jeder Erweiterung. Bereiche oder Texte mit Nachschlage- oder Anleitungen, die, aufgrund der Kürze textlicher Absätze, nach obigen Problem rufen. Dazu gehören: Überschrift + 1-3-Zeiler + Aufzählung oder Bild, bevor ein Textblock kommt. Wird regelmäßig zerrissen und sieht wirklich unsauber aus, wenn Vorseite nichts damit zu tun hat. Kapitel sind problemlos, am Übergang setze ich clearpage.