goLaTeX - Mein LaTeX-Forum

Mein LaTeX-Forum


Login  | Registrieren
Forum
      Option
[Erweitert]
  • Diese Seite weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

mdframed -- "ungünstige" Seitenumbrüche

 

zeta
Forum-Newbie
Forum-Newbie

Beiträge: 4
Anmeldedatum: 16.02.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.02.2017, 01:31     Titel: mdframed -- "ungünstige" Seitenumbrüche
  Antworten mit Zitat      
Hallo,

Ich habe in einem Dokument Boxen mithilfe von mdframed und möchte, dass keine Seitenumbrüche "an ungünstigen Stellen" passieren. Was will ich mit der schwammigen Formulierung sagen will: Normalerweise schafft es LateX, sinnvolle Stellen für Seitenumbrüche zu finden, indem z.B. nicht sofort nach einer Überschrift ein Seitenumbruch erfolgt usw.

In meinem Dokument, das nahezu ausschließlich aus solchen Boxen besteht, passiert das aber gar nicht. Es erfolgen Seitenubrüche, sodass nur die "Kopfzeile" (frametitle) der Box noch auf einer Seite steht und der ganze Rest auf der nächsten; oder gerade alles bis auf eine Zeile auf einer Seite steht und nur die letzte Zeile auf der nächsten Seite usw.

Ich habe versucht, das mit Blindtext in einem Minimalbeispiel zu demonstrieren.

Mein Anliegen: Kann man LaTeX irgendwie mitteilen, dass es Seitenunbrüche bevorzugt zwischen Boxen machen soll. Ich will nicht generell verbieten, dass es Seitenumbrüche in Boxen geben darf (da diese sehr lange sein können), aber sie sollten eher vermieden werden.

Meine bisheriger Versuch: \flushbottom hat es etwas verbessert, aber keineswegs gelöst.

Vielen Dank im Voraus.


Code • Öffne in Overleaf

\documentclass[a4paper]{article}
\usepackage{geometry}  
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{color}
\usepackage{blindtext}

\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}

\usepackage[parfill]{parskip}
\setlength{\parindent}{0pt}

\usepackage{framed}
\usepackage{mdframed}

%%--------------------
\mdfdefinestyle{mybox}{
linewidth=0.75pt,%
skipabove=1.5\baselineskip,
skipbelow=1.5\baselineskip
innertopmargin=\topskip,
}

\mdtheorem[style=mybox, frametitlebackgroundcolor=green]{defi}{Definition}

\flushbottom

\begin{document}
\section{Bla}
\begin{defi*}
\blindtext
\blindtext
\blindtext
\end{defi*}

\begin{defi*}
\blindtext
\end{defi*}

\begin{defi*}
\blindtext
\end{defi*}

\end{document}
 
Private Nachricht senden Benutzer-Profile anzeigen

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.02.2017, 08:43     Titel:
  Antworten mit Zitat      
Allzu frühe Umbrüche nach dem Beginn der Box kann man mit Hilfe von Paket auf CTANneedspace verhindern:
Code • Öffne in Overleaf
\documentclass[a4paper]{article}
\usepackage{geometry}  
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{color}
\usepackage{blindtext}

\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}

\usepackage[parfill]{parskip}% setzt auch \parindent auf 0

\usepackage{needspace}
\usepackage{mdframed}% braucht kein framed

%%--------------------
\mdfdefinestyle{mybox}{
linewidth=0.75pt,%
skipabove=1.5\baselineskip,
skipbelow=1.5\baselineskip
innertopmargin=\topskip,
}

\mdtheorem[style=mybox, frametitlebackgroundcolor=green,startcode=\needspace{8\baselineskip}]{defi}{Definition}

%\flushbottom ist bei einseitigen Dokumenten eigentlich nicht sinnvoll

\begin{document}
\section{Bla}
\begin{defi*}
\blindtext
\blindtext
\blindtext
\end{defi*}

\begin{defi*}
\blindtext
\end{defi*}

\begin{defi*}
\blindtext
\end{defi*}

\end{document}

Wenn Du wirklich mit \flushbottom den Umbruch der Kästen verbessern willst, solltest Du das bei einseitigen Dokumenten auf die von Kästen betroffene Seiten beschränken, also mit startcode=\flushbottom,endcode=\raggedbottom arbeiten, denn eigentlich ist \flushbottom bei einseitigen Dokumenten wenig sinnvoll.

esdd
Forum-Meister
Forum-Meister

Beiträge: 2039
Anmeldedatum: 07.02.10
Wohnort: Stutensee
Version: MiKTeX 2.9
     Beitrag Verfasst am: 16.02.2017, 09:48     Titel:
  Antworten mit Zitat      
mdframed lädt bereits das Paket needspace und stellt eine gleichnamige Option bereit:

Code • Öffne in Overleaf
\documentclass[a4paper]{article}
\usepackage{geometry}  
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{color}
\usepackage{blindtext}

\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}

\usepackage[parfill]{parskip}% setzt auch \parindent auf 0

\usepackage{mdframed}% braucht kein framed

%%--------------------
\mdfdefinestyle{mybox}{
linewidth=0.75pt,%
skipabove=1.5\baselineskip,
skipbelow=1.5\baselineskip
innertopmargin=\topskip,
}

\mdtheorem[style=mybox, frametitlebackgroundcolor=green,needspace=8\baselineskip]{defi}{Definition}

%\flushbottom ist bei einseitigen Dokumenten eigentlich nicht sinnvoll

\begin{document}
\section{Bla}
\begin{defi*}
\blindtext
\blindtext
\blindtext
\end{defi*}

\begin{defi*}
\blindtext
\end{defi*}

\begin{defi*}
\blindtext
\end{defi*}

\end{document}
Private Nachricht senden Benutzer-Profile anzeigen

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.02.2017, 12:01     Titel:
  Antworten mit Zitat      
Danke für die Korrektur und sorry, aber man kann nicht alles wissen. Natürlich hätte ich länger in der Anleitung suchen können. Aber da ich das Paket nie verwende, mein Leidensdruck also geringer als der von zeta ist …

esdd
Forum-Meister
Forum-Meister

Beiträge: 2039
Anmeldedatum: 07.02.10
Wohnort: Stutensee
Version: MiKTeX 2.9
     Beitrag Verfasst am: 16.02.2017, 12:15     Titel:
  Antworten mit Zitat      
Mir ist doch auch erst nach Deiner Antwort und der Erwähnung von needspace eingefallen, dass ich da mal irgendwas gelesen hatte Wink
Private Nachricht senden Benutzer-Profile anzeigen

u_fischer
Forum-Meister
Forum-Meister

Beiträge: 3352
Anmeldedatum: 22.11.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.02.2017, 14:22     Titel:
  Antworten mit Zitat      
Benutze lieber tcolorbox. Sein breakable-Verhalten ist deutlich stabiler.
_________________

Ulrike Fischer
www.troubleshooting-tex.de
Private Nachricht senden Benutzer-Profile anzeigen

zeta
Forum-Newbie
Forum-Newbie

Beiträge: 4
Anmeldedatum: 16.02.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.02.2017, 14:51     Titel:
  Antworten mit Zitat      
Ok, danke das hilft schon mal weiter.

Ich hätte jetzt noch 2 Fragen:
1) ist es irgendwie möglich, die Abstände zwischen den Boxen variieren zu lassen, also dass z.B. etwas kleinere Abstände gewählt werden, um noch eine letzte Zeile einer Box auf die Seite zu bekommen etc. Vielleicht sind die Befehle hier auf Seite 14 hilfreich -- ich wüsste aber nicht wie. http://mirror.easyname.at/ctan/macr.....rib/mdframed/mdframed.pdf

2) Es passiert manchmal, dass noch eine Überschrift -- also zB das was in \subsection{} steht -- noch auf einer Seite steht, während die Box auf der nächsten beginnt. Mit "normalen" Absätzen würde das nie passieren. Gibt es da Abhilfe?

Edit: hab den Tipp mit tcolorbox erst jetzt gesehen, werd ich mir auch mal anschauen & berichten

Vielen Dank für die Hilfe.
Private Nachricht senden Benutzer-Profile anzeigen

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.02.2017, 16:25     Titel:
  Antworten mit Zitat      
Vertikale Abstände zwischen Material kann man bei Bedarf jederzeit mit \smallskip, \medskip, \bigskip oder \vspace{…} einfügen. Letztes beherrscht auch negative Abstände. Außerdem kann man den Abstand, den Paket auf CTANmdframed vor oder nach einem Rahmen einfügt über Optionen einstellen. Bitte lies das in der Dokumentationmdframed-Anleitung nach. Bei Paket auf CTANtcolorbox ist es ähnlich.

Kästen, die hässlicher Weise unmittelbar auf Überschriften folgen, sollten natürlich nicht via Option needspace davor bewahrt werden, zu früh zu umbrechen. Stattdessen sorgt man mit \needspace vor der Überschrift, dass diese mit dem Anfang des Kastens zusammen bleibt.

zeta
Forum-Newbie
Forum-Newbie

Beiträge: 4
Anmeldedatum: 16.02.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.02.2017, 18:10     Titel:
  Antworten mit Zitat      
Wie man prinzipiell Abstand zwischen den Boxen einfügen kann, ist mir ja bekannt und in meinem Minimalbeispiel habe ich auch Optionen wie skipabove=1.5\baselineskip verwendet. vspace etc sind mir auch bekannt.

Nur mir geht es darum, ob es möglich ist, irgendwie einzustellen, dass der Abstand *automatisch* angepasst wird. Natürlich kann ich irgendwo einen vspace einfügen, wenn mir etwas gerade nicht gefällt. Nur nach meinem Verständnis von LaTeX geht man nicht her und fügt einmal zwischen dem 17. und 18. Kästen 2 Leerzeilen ein, weil's jetzt grad so besser aussieht -- und wenn weiter oben im Text etwas geändert wird, sind die manuellen Abstände wieder obsolet.

Meine Frage zielt also darauf ab, ob es möglich ist, zum Beispiel einzustellen, dass die Abstände zwischen zwei Kästen zwischen x und y sind und LaTeX, wählt sie jeweils so, dass Umbrüche vermieden werden. Darauf bezieht sich auch mein Verweis auf Seite 14 der mdframed-Doku, wo z.B. erklärt wird, wie man ganze Code-Blöcke spezifizieren kann, die jeweils vor oder nach Boxen verwendet werden. Nur da fehlt mir eben der Ansatz, ob und wie dort mein Problem zu lösen wäre.
Private Nachricht senden Benutzer-Profile anzeigen

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.02.2017, 19:32     Titel:
  Antworten mit Zitat      
Woher soll LaTeX denn wissen, unter welchen Umständen, wo welcher zusätzliche Platz eingefügt oder entfernt werden soll? Oder suchst du schlicht glue? Glaube ich zwar nicht, aber so unklar, wie du dich ausdrückst, ist alles möglich.

Neues Thema eröffnen Neue Antwort erstellen Gehe zu Seite 1, 2  Weiter



Options and Permissions
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen
.

goLaTeX ist Teil der goForen
goForen.de goMATLAB.de goLaTeX.de goPCB.de


  Impressum | FAQ | goLaTeX RSS Button RSS-Feed

Copyright © 2008 - 2017 goLaTeX.de