Archiv verlassen und diese Seite im Standarddesign anzeigen : Seitenumbruch vermeiden oder ganzen Block auf neue Seite schieben.
Hallo allerseits,
warum zerlegt LaTeX einen Block aus zwei Zeilen so, dass eine Zeile auf der neuen Seite erscheint, obwohl genug Platz vorhanden ist? Kann man das verallgemeinert sagen?
Beispiel (Bild, Anhang)
6234
Dies wird erzeugt durch \definition{Überschrift}{Content} und sieht tatsächlich nur so aus:
\vpsace*{6mm}
\textbf{1.1.1 Definition: Überschrift}\\
Content
\vpsace*{6mm}
Die Seitenhöhe ist exakt so eingestellt, dass sie symmetrisch bis zur Linie geht. Generell hätte ich das gerne so, dass der Block möglichst immer auf einer Seite bleibt.
\documentclass[11pt, twoside, parskip=half, a4paper, toc=index]{scrbook}
\usepackage{textcomp}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[english]{babel}
\usepackage[style=english]{csquotes}
\usepackage{geometry}
\geometry{tmargin=25mm,bmargin=0mm,lmargin=25mm,rm argin=25mm}
\usepackage{esvect}
\usepackage{scrpage2}
\setlength{\textheight}{230mm}
\setlength{\headheight}{20mm}
\renewcommand{\baselinestretch}{1.5}
Ich denke, dass das alles ist, was irgendwie die Seite beeinflusst.
Sollen wir jetzt raten? Warum machst Du kein vernünftiges Minimalbeispiel? \vpsace*{6mm} ist jedenfalls falsch. Die Sternversion von \vspace wäre vermutlich auch keine gute Wahl, weil damit der Abstand ggf. auch am Seitenanfang eingefügt wird. \\ sollte man (außer in Tabellen und anderen speziellen Umgebungen) ebenfalls meiden wie der Teufel das Weihwasser. Nachträglich an \textheight und \headheight zu fummeln, statt die gewünschten Einstellungen gleich via geometry vorzunehmen, ist auch keine gute Idee. Ebenfalls ist das Umdefinieren von \baselinestretch seit LaTeX2e überholt. Es gibt \linespread. Es gibt Pakete wie setspace. Auch nummeriert man Definitionen etc. nicht von Hand, sondern verwendet theorem-Umgebungen beispielsweise definiert mit newthm oder amsthm oder …
Fazit: Wenn ich raten sollte, würde ich sagen, dass das Problem ein Resultat von schlechtem Code ist.
Die Definitionen und co werden automatisch nummeriert (counter, refstepcounter). Da ich aber ungerne \begin{def}.. nutzen wollte, und mehr Freiheiten für die Formatierung brauchte, habe ich mich für einen Textsetzungscode entschieden.
An meinem TeX kram habe ich seit 2010 nichts mehr umgestellt, nur Pakete hinzugefügt, die ich zusätzlich brauchte. Gab keine Notwendigkeit mich damit näher zu befassen, es lief ja :)
Mit dem Minimalbeispiel ist es so eine Sache. Es könnte schwierig sein, eines zu produzieren, welches dieses Verhalten aufweist. Was ich aber interessant finde, ist z.B., dass ein Text, der in einer Zeile geschrieben wurde und auf zwei Zeilen aufgeteilt wird, einzeilig auf einer neuen Seite landen kann. Ich versuche mal demnächst, wenn ich etwas mehr Zeit habe, ein Minimalbeispiel zu erzeugen.
Viele Grüße und danke für die Hinweise.
Des ist a echter Hammer. Hat man keine Probleme, macht man sich welche.
Hey, ich liefere jetzt ein Minimalbeispiel nach.
\documentclass{article}
\usepackage[english]{babel}
\usepackage{blindtext}
\setlength{\parskip}{5mm}
\setlength{\parindent}{0pt}
\newcommand\sinnlos{Sinnloser Text zum sinnlosen Füllen der sinnlosen Stellen einer noch...}
\begin{document}
\blindtext[5]\sinnlos\sinnlos\sinnlos \par
\textbf{\"Uberschrift}\\
Text zur Überschrift.
\end{document}
Dieser Umbruch sollte den Absatz noch nicht trennen. Hier sollte "Überschrift" mit auf die neue Seite gezogen werden. (Getestet auf overleaf.com) Sobald ein Absatz länger als 10 Zeilen ist, darf nach 5 Zeilen die Seiten umgebrochen werden. Lässt sich sowas allgemein realisieren? Ich bin recht flexibel in der dokumentweiten (70+ Seiten) Anpassung, da ich nur einen Befehl umdefinieren müsste. Allerdings sollten diese Dinge dann auch mit Figure-Umgebungen und co. kompatibel sein.
Aufgebaut habe ich die Befehle mehr oder weniger rekursiv. Alles baut auf einem universellen Baustein auf und customisiert diesen entsprechend. Mein Ziel ist es tatsächlich erstmal nur, wenn die Überschrift alleine auf einer Seite verbleibt, soll sie mit auf die nächste automatisch gezogen werden. Der Rest wäre ein schönes Beiwerk, aber nicht unbedingt nötig.
@Daniel: Ich hatte damit bisher auch keine Probleme gehabt. Früher sind die Überschriften nicht alleine auf der Seite geblieben, sondern wurden im Block mit rüber gezogen. Aber ich hatte LaTeX schon eine ganze Weile nicht mehr angefasst und erst vor "kurzem" (mittlerweile nen halbes Jahr her) mal die Bibs aktualisiert.. Mir fehlt auch oft die Zeit mich in eine Doku von einer Bib vollständig einzulesen, um diese dann optimal nutzen zu können. Daher nutze ich mir bekannte Grundkonzepte und baue auf diesen entsprechend auf. So habe ich dann "Code", den ich nicht erst erlernen muss, und spare im Schnitt mehrere Stunden an Zeit. Das Einlesen hätte mich hier vermutlich 1-2h gekostet, die Code-Schnipsel 5min.
@klops: \vspace* hatte ich genutzt, um den gesamte Block in einen hervorgehobenen Abstand zum Rest zu bringen. Tatsächlich empfand ich es ein paar Wochen später für hässlich und habe diese Herangehensweise verworfen. :) Nur der Inhalt des Minimalbeispiels ist noch entscheidend.
Mein Ziel ist es tatsächlich erstmal nur, wenn die Überschrift alleine auf einer Seite verbleibt, soll sie mit auf die nächste automatisch gezogen werden.
Warum nimmst Du dann keine richtige Überschrift, z.B. \subsection?
\documentclass[a4paper]% <-- das ist in diesem Fall nur als Hinweis zu verstehen, welches Papierformat bei mir unter Verwendung von pdfLaTeX hier rauskommt
{article}
\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
\usepackage{blindtext}
\setlength{\parskip}{5mm}
\setlength{\parindent}{0pt}
\newcommand*\sinnlosi{Sinnloser Text zum sinnlosen Füllen der sinnlosen Stellen einer noch...}
\newcommand*\sinnlosii{Dies ist ein sinnloser, kürzerer Text.}
\newcounter{sinnlos}
\newcommand*\sinnlos[1][1]{%
\setcounter{sinnlos}{#1}%
\ifnum\value{sinnlos}<1
\setcounter{sinnlos}{1}%
\fi
\loop
\addtocounter{sinnlos}{-1}%
\sinnlosi
\ifnum\value{sinnlos}>0\repeat
}%\sinnlos[Anzahl sinnloser Texte]
\newcommand*\sinnlosH[1][1]{% H wie halb(-lang, nicht -sinnlos)
\begingroup
\renewcommand*\sinnlosi{\sinnlosii}%
\sinnlos[#1]
\endgroup
}
\begin{document}
\blindtext[4]\sinnlos[7]\sinnlosH%[2]
\subsection{Überschrift}
Text zur Überschrift.
\end{document}
So bleibt alles auf einer Seite (A4), wenn Du das %-Zeichen zwischen \sinnlosH und [2] entfernst, verlängert sich der Text vor der Überschrift um eine Zeile und die Überschrift wandert auf die zweite Seite.
BTW: kennst Du das parskip-Paket?
VG
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.