
El siguiente es un ejemplo muy artificial, pero ilustra un problema que no puedo resolver con el mdframed
paquete. Cuando el mdframed
entorno sigue un encabezado de sección pero no hay suficiente espacio para colocar el entorno de contenidos, el encabezado de la sección queda huérfano.
Reemplazar mdframed
con minipage
o cualquier otra cosa no resulta en huérfano y el cambio \clubpenalty
no tiene ningún efecto.
El mismo resultado ocurre, por ejemplo, si el entorno contiene solo una línea pero tiene un valor grande para skipabove
o innertopmargin
; El contenido irrompible que uso en el MWE a continuación es solo para demostrar fácilmente el resultado.
\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}
¿Hay alguna forma de utilizar este entorno siguiendo el encabezado de una sección sin dividir las páginas manualmente cuando esto ocurre?
Respuesta1
en la sala de chatDavid CarlisleyegregMe ayudó a señalar el problema. Gracias por tu compromiso.
Después \section
normalmente no tienes descansos evitando a los huérfanos. Normalmente implica que tenemos excepciones.
Para permitir la especificación de color, está comprando un punto de interrupción no deseado. Para demostrar esto utilizo el siguiente ejemplo:
\documentclass{article}
\begin{document}
\showoutput\setbox0\vbox{%
\section{Section}
\penalty10000
\begin{minipage}[t]{\linewidth}
top\par\vspace*{2in}bottom
\end{minipage}
}\showbox0
\end{document}
En el log
archivo encontrarás:
.\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
Ahora modificamos el ejemplo de esta manera que usamos 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}
La salida en el log
archivo es:
.\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
Puedes ver un glue 0
. Ahí ocurre la ruptura. ¡No puedo evitar el glue 0
!. Según su ejemplo aquí, minipage
cuya modificación da como resultado el mismo problema:
\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}
Entonces el problema se basa en el uso del color.