
Das folgende Beispiel ist sehr konstruiert, veranschaulicht aber ein Problem, das ich mit dem mdframed
Paket nicht lösen kann. Wenn die mdframed
Umgebung einer Abschnittsüberschrift folgt, aber nicht genügend Platz vorhanden ist, um die Inhaltsumgebung zu platzieren, wird die Abschnittsüberschrift verwaist.
Das Ersetzen mdframed
durch minipage
oder irgendetwas anderes führt nicht zum Waisenkind, und eine Änderung \clubpenalty
hat keine Auswirkung.
Dasselbe Ergebnis tritt beispielsweise auf, wenn die Umgebung nur eine einzige Zeile enthält, aber einen großen Wert für skipabove
oder hat innertopmargin
; der nicht umbrechbare Inhalt, den ich im folgenden MWE verwende, dient nur dazu, das Ergebnis einfach zu demonstrieren.
\documentclass{article}
\usepackage{mdframed}
\newcommand{\BoxContents}{top\par\vspace*{2in}bottom}
\begin{document}
\vspace*{5in}
\section{Section}
\begin{mdframed}% this orphans the section heading
\BoxContents
\end{mdframed}
\newpage
\vspace*{5in}
\section{Section}
\begin{minipage}[t]{\linewidth}% this does not orphan the section heading
\BoxContents
\end{minipage}
\end{document}
Gibt es eine Möglichkeit, diese Umgebung nach einer Abschnittsüberschrift zu verwenden, ohne in diesem Fall die Seiten manuell umzubrechen?
Antwort1
Im ChatroomDavid CarlisleUndegreghat mir geholfen, auf das Problem hinzuweisen. Danke für Ihr Engagement.
Danach \section
gibt es normalerweise keine Unterbrechungen, um Waisen zu vermeiden. Normalerweise bedeutet das, dass wir Ausnahmen haben.
Um die Farbspezifikation zu ermöglichen, kaufen Sie einen unerwünschten Haltepunkt. Um dies zu demonstrieren, verwende ich das folgende Beispiel:
\documentclass{article}
\begin{document}
\showoutput\setbox0\vbox{%
\section{Section}
\penalty10000
\begin{minipage}[t]{\linewidth}
top\par\vspace*{2in}bottom
\end{minipage}
}\showbox0
\end{document}
In der log
Datei finden Sie:
.\write1{\@writefile{toc}{\protect \contentsline {section}{\protect \numberline
\ETC.}
.\penalty 10000
.\glue 9.90276 plus 0.86108
.\penalty 10000
.\glue(\parskip) 0.0 plus 1.0
.\glue(\baselineskip) 5.84921
Nun ändern wir das Beispiel so ab, dass wir verwenden mdframed
.
\documentclass{article}
\usepackage{mdframed}
\begin{document}
\showoutput\setbox0\vbox{%
\section{Section}
\penalty10000
\begingroup\color{red}
\begin{minipage}[t]{\linewidth}
top\par\vspace*{2in}bottom
\end{minipage}
\endgroup
}\showbox0
\showoutput\setbox0\vbox{
\section{Sectionaa}
\penalty10000
\begin{mdframed}% this orphans the section heading
top\par\vspace*{2in}bottom
\end{mdframed}
}\showbox0
\end{document}
Die Ausgabe in der log
Datei lautet:
.\write1{\@writefile{toc}{\protect \contentsline {section}{\protect \numberline
\ETC.}
.\penalty 10000
.\glue 9.90276 plus 0.86108
.\penalty 10000
.\rule(0.0+0.0)x345.0
.\pdfcolorstack 0 push {0 g 0 G}
.\glue 0.0
.\glue(\parskip) 0.0
.\hbox(0.0+0.0)x345.0, glue set 345.0fil
Sie können ein sehen glue 0
. Dort erfolgt der Bruch. Das ! kann ich nicht vermeiden glue 0
. Basierend auf Ihrem Beispiel hier minipage
führt die Änderung davon zum selben Problem:
\documentclass{article}
\usepackage{color}
\begin{document}
\vspace*{5in}
\section{Section}
\begingroup\color{red}
\begin{minipage}[t]{\linewidth}
top\par\vspace*{2in}bottom
\end{minipage}
\endgroup
\end{document}
Das Problem liegt also in der Farbverwendung.