Seitenumbruch Thema ist als GELÖST markiert

Layout von Seiten, Rändern, Fusszeilen, usw, modifizieren


Gast1

Seitenumbruch

Beitrag von Gast1 »

Ich beschäftige mich erst seit geraumer Zeit mit Latex und entdecke noch jeden Tag einen anderen nützlichen Befehl. :-) Zum Üben und Testen schreibe ich derzeit ein Skript, in dem z. B. Aufzählungen (\itemize und \enumerate) vorkommen. Dabei stand ich vor folgendem Problem:

Vor der Aufzählung kommt eine kurze Einleitung, die mit einem Doppelpunkt endet und der im nächsten Absatz die Aufzählung folgt.

Beispiel:
Es gibt die drei nachfolgend genannten Voraussetzungen:
\begin{enumerate}
         \item Blindtext
         \item Blindtext
         \item Blindtext
\end{enumerate}
Nach der Kompalierung hatte ich teilweise das Ergebnis, dass (abhängig vom vorherigen Text) der Einleitungssatz auf der einen Seite am Ende stand und die neue Seite mit der Aufzählung beginnt - was mir nicht sonderlich gefällt. Beim Selbsstudium bin ich dann auf den Befehl \nopagebreak gestoßen und hatte gehofft, damit einen Seitenumbruch zu verhindern. Doch egal ob ich \nopagebreak vor dem Einleitungssatz oder zwischen dem Einleitungssatz und der Aufzählung positioniere, es bleibt immer beim Seitenumbruch an der nicht gewünschten Stelle.

Das entsprechende Resultat, die beiden Teile (Einleitungssatz und Aufzählung) zusammenzuhalten, hat erst funktioniert, nach dem ich den Code mit \begin{samepage} und \end{samepage} zuzusammegeklebt hab.

Mit dem Ergebnis bin ich zufrieden, jedoch wüßte ich gern, warum z. B. \nopagebreak keine Wirkung zeigt. Hätte ich noch etwas anderes deklarieren müssen? In den vielen Hilfedateien sieht die Verwendung so einfach aus.

Gibt es noch eine andere einfache Methode Absätze "zusammenzukleben" :wink: also so ähnlich wie die Tilde zwischen Zeichen?

Vielen Dank und viele Grüße.

Benutzeravatar
Stefan Kottwitz
Admin
Admin
Beiträge: 2540
Registriert: Di 8. Jul 2008, 00:39
Kontaktdaten:

Beitrag von Stefan Kottwitz »

Hallo,

dafür kann man auch minipage-Umgebungen verwenden. Eine interessante Alternative ist das needspace-Paket, damit kann man den zumindest benötigten Platz angeben, so dass nach Bedarf umgebrochen wird. Damit lassen sich beispielsweise Einleitung und ein oder zwei folgende Aufzählungspunkte zusammenhalten, ohne dass die komplette Umgebung auf eine Seite gezwungen ist, also in der Folge auch Seitenumbrüche enthalten darf.
Die Dokumentation zu needspace findet sich in needspace.sty selbst.

Viele Grüße,

Stefan

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

Beitrag von KOMA »

Setzer betrachten es im Allgemeinen als besser, wenn bei einer Liste ein Seitenumbruch zwischen dem Satz vor der Liste und der Liste als in den ersten Zeilen der Liste selbst erfolgt. Auch sind Seitenumbrüche zwischen Listeneinträgen besser als Seitenumbrüche in einem Listeneintrag.

LaTeX regelt solche Umbruchvorlieben über Strafpunkte (penalties). Für Listen sind definiert:
  • \@beginparpenalty - Strafpunkte für einen Umbruch vor einer Liste
  • \@endparpenalty - Strafpunkte für einen Umbruch nach einer Liste
  • \@itempenalty - Strafpunkte für einen Umbruch zwischen Listeneinträgen
Die Werte der Strafpunkte von -10000 (hier unbedingt umbrechen) bis 10000 (hier keinesfalls umbrechen) sind von der jeweiligen Klasse abhängig. So setzt beispielsweise die Klasse book alle drei Werte auf -\@lowpenalty = -51. Das bedeutet, dass an der Stelle ein Umbruch ein wenig bevorzugt werden soll.

Ein \nobreakpage setzt hingegen am Ende der aktuellen Zeile einen Wert von 10000, also keinesfalls umbrechen. Da nun \nobreakpage vor der Liste steht, nützt das nichts, weil danach \@beginparpenalty zum Zuge kommt. Man muss also tatsächlich \@beginparpenalty ändern. Man kann das entweder global für alle Listen per
\makeatletter% --> Wiki
\@beginparpenalty=10000
\makeatother% --> Wiki
oder man definiert sich eine eigene Listenumgebung, bei der nur für diese Umgebung ein anderer Wert gesetzt wird:
\documentclass{article}

\makeatletter
\newenvironment{nobreakitemize}{%
  \@beginparpenalty=10000
  \itemize
}{%
  \enditemize
}
\makeatother

\begin{document}
Testsatz

\vspace{43\baselineskip}

Testsatz:
\begin{itemize}

\item erster Eintrag
\item zweiter Eintrag
\item dritter Eintrag
\end{itemize}

\clearpage
Testsatz

\vspace{43\baselineskip}

Testsatz:
\begin{nobreakitemize}

\item erster Eintrag
\item zweiter Eintrag
\item dritter Eintrag
\end{nobreakitemize}

\end{document}

Gast1

Beitrag von Gast1 »

Setzer betrachten es im Allgemeinen als besser, wenn bei einer Liste ein Seitenumbruch zwischen dem Satz vor der Liste und der Liste als in den ersten Zeilen der Liste selbst erfolgt. Auch sind Seitenumbrüche zwischen Listeneinträgen besser als Seitenumbrüche in einem Listeneintrag.
...und ich war bislang immer in der irrigen Annahme, dass der Satz vor der Liste unbedingt auch vor der Liste stehen soll, auch wenn die Liste auf einer neuen Seite beginnt.

Wieder was dazu gelernt. :D

Vielen Dank für die Erläuterungen und das Codebeispiel, mit dessen Hilfe ich gleich meinen Text anpassen konnte.

Viele Grüße.

Markus
Forum-Anfänger
Forum-Anfänger
Beiträge: 10
Registriert: Fr 2. Okt 2009, 23:41

Beitrag von Markus »

Hallo, da genau dieses Topic schon existiert, dachte ich mir, ich brauch kein neues Thema aufmachen.

mein Problem ist folgendes: ich wuerde gerne 2 Sachen auf einer Seite anzeigen lassen, es ist meiner Meinung nach auch genug Platz auf einer Seite jedoch weder \nopagebreak[4] noch \begin{samepage} loesen mein Problem.

Minimalbeispiel:
\documentclass[ngerman]{scrartcl}
\usepackage{amsmath,amssymb} %erweiterter Mathematischer Formelsatz
\usepackage{bookman}  %Schriftart
\usepackage{babel}    %unterstuetzung der Schrift
%\usepackage[latin1]{inputenc}  %Direkte Eingabe von Umlauten ermoeglichen
\usepackage[T1]{fontenc}       %Probleme bei automatischer Trennung von Woertern mit
                               %Umlauten beheben

\usepackage{supertabular} %2spaltige Tabelle


\begin{document}
  \section{Hydrogenation of alkenes using Wilkinson catalyst}
  \label{sec:Wilk}

  \subsection{Aufgabe}
  \nopagebreak
  \twocolumn%[\textbf{Aufreihung der benötigten Valenzelektronen VE, Koordinationszahl CN und der Oxidationszahl OZ.}]
   \begin{supertabular}{l l c r} \\
     \shrinkheight{1\normalbaselineskip}


   \end{supertabular}
    \onecolumn

    \subsection{Übergänge im grauen Bereich}


\end{document}
Vielen Dank im voraus.
Gruss, markus

P.S. das ganze erscheint bei mir auf 3 Seiten.

Schweinebacke

Beitrag von Schweinebacke »

Du hast die Doku zu \onecolumn und \twocolumn nicht gelesen oder eine ganz schlechte Anleitung verwendet, in der unterschlagen wird, dass die beiden Anweisungen immer eine neue Seite beginnen. Für gemischtspaltigen Satz benötigt man ein Paket wie multicol, dessen Anleitung man aber unbedingt lesen sollte, weil es auch dabei ein paar Dinge zu beachten gibt.

Markus
Forum-Anfänger
Forum-Anfänger
Beiträge: 10
Registriert: Fr 2. Okt 2009, 23:41

Beitrag von Markus »

Jup, leider hab ich eine ganz schlechte Doku erwischt bei google.
Vielen Dank fuer die Aufklaerung, inzwischen hab ichs auch geschafft so ungefaehr hinzubekommen wie ich das haben wollte.

laughingBuddha
Forum-Newbie
Forum-Newbie
Beiträge: 1
Registriert: Sa 18. Jun 2011, 17:29
Wohnort: Zürich

Seitenumbruch verhindern zw. Tabelleninhalt und Überschrift

Beitrag von laughingBuddha »

Hallo

Ich schaffe es leider nicht Seitenumbrüche zw. Überschrift und Tabelleninhalt zu verhindern. Evtl. kann mir jmd helfen...

Hier ist mein Code:

Präambel:
[...]
\makeatletter
\@beginparpenalty=10000 
\makeatother
[...]
Im Anhang:
\begin{appendix}
\section{Vokabular}
[...]
\input{./Menzius_2B.03/Vokabular_2B.03.tex}
\input{./Menzius_2B.04/Vokabular_2B.04.tex}
\input{./Menzius_2B.05/Vokabular_2B.05.tex}
[...]
\end{appendix}
Dann z.B. in der Datei Vokabular_2B.03.tex:
\subsection{4.03 (2B.03)}
\subsubsection*{Satz 1}
\LTXtable{\textwidth}{./Menzius_2B.03/2B.03_voci_01}
\subsubsection*{Satz 2} 
\LTXtable{\textwidth}{./Menzius_2B.03/2B.03_voci_02}
\subsubsection*{Satz 3}
\LTXtable{\textwidth}{./Menzius_2B.03/2B.03_voci_03}
[...]
Dann in der Datei 2B.03_voci_01:
\setlongtables
\begin{longtable}{llX}
陳臻&\Chen2 \Zhen1&
Name eines Schülers von Menzius\\
問&\wen4&
V3 X fragt Y nach Z (Gassmann)\\
曰&\yue1&
V2 X spricht: “Y” (= DR) (Gassmann)\\
[...]
\end{longtable}
LaTeX macht nun häufig einen Seitenumbruch zwischen den Überschriften "Satz N" und den Vokabulareinträgen.
Kann dies irgendwie verhindert werden?

Beste Grüsse

Gerrit2

Beitrag von Gerrit2 »

KOMA hat geschrieben:Setzer betrachten es im Allgemeinen als besser, wenn bei einer Liste ein Seitenumbruch zwischen dem Satz vor der Liste und der Liste als in den ersten Zeilen der Liste selbst erfolgt. ...
Hallo,

mich würde noch der typographische Hintergrund dazu interessieren. Ich bin auf diesen Thread gestoßen, weil ich auch dachte, der Satz gehört an die Aufzählung geklebt.

Gruß Gerrit

Antworten