mdframed -- "ungünstige" Seitenumbrüche

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.
Smilies
:D :) :( :o :shock: :? 8) :lol: :-x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

BBCode ist eingeschaltet
[img] ist eingeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind eingeschaltet

Die letzten Beiträge des Themas

Ich habe die Datenschutzerklärung gelesen und bin damit einverstanden.

   

Wenn du eine Datei oder mehrere Dateien anhängen möchtest, gib die Details unten ein.

Ansicht erweitern Die letzten Beiträge des Themas: mdframed -- "ungünstige" Seitenumbrüche

von Gast » Fr 17. Feb 2017, 06:54

Wie Ulrike schon erwähnte, ist der Umbruch bei tcolorbox etwas besser. Schusterjungen und Hurenkinder sollte man allerdings nicht überbewerten. Deren Verhinderung hat gerade bei typischen, wissenschaftlichen Texten auch meist irgendwelche Nachteile.

von zeta » Do 16. Feb 2017, 20:02

Dein Tipp glue zu verwenden, hat die Situation etwas verbessert. Ich habe jetzt
skipabove=2.5\baselineskip plus 1\baselineskip minus 1.5\baselineskip,
anstatt
skipabove=1.5\baselineskip
Woher soll LaTeX denn wissen, unter welchen Umständen, wo welcher zusätzliche Platz eingefügt oder entfernt werden soll?
Naja, "normal" (also, wenn man Fließtext mit Absätzen hat) werden gewisse typographische Regeln eingehalten (zB https://de.wikipedia.org/wiki/Hurenkind ... usterjunge). Sobald der Text in den Boxen ist, passiert das nicht mehr -- wenn sich eine lange Box gerade um eine Zeile nicht mehr ausgeht, dann ist beinhart diese eine Zeile auf der nächsten Seite. Das wird normal mit allen Mitteln vermieden, notfalls sind dann halt 2 Zeilen auf der nächsten Seite, damit es besser aussieht.

Oder im Extremfall ist der gesamte Inhalt einer Box auf einer Seite, aber alleine die untere Begrenzungslinie der Box ist dann auf der nächsten Seite.

von Gast » Do 16. Feb 2017, 18:32

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.

von zeta » Do 16. Feb 2017, 17:10

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.

von Gast » Do 16. Feb 2017, 15:25

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 mdframed vor oder nach einem Rahmen einfügt über Optionen einstellen. Bitte lies das in der [d]mdframed[/d]-Anleitung nach. Bei tcolorbox 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.

von zeta » Do 16. Feb 2017, 13:51

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/macros/l ... framed.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.

von u_fischer » Do 16. Feb 2017, 13:22

Benutze lieber tcolorbox. Sein breakable-Verhalten ist deutlich stabiler.

von esdd » Do 16. Feb 2017, 11:15

Mir ist doch auch erst nach Deiner Antwort und der Erwähnung von needspace eingefallen, dass ich da mal irgendwas gelesen hatte ;-)

von Gast » Do 16. Feb 2017, 11:01

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 …

von esdd » Do 16. Feb 2017, 08:48

mdframed lädt bereits das Paket needspace und stellt eine gleichnamige Option bereit:
\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}

Nach oben