Usando mdframed después del encabezado de una sección

Usando mdframed después del encabezado de una sección

El siguiente es un ejemplo muy artificial, pero ilustra un problema que no puedo resolver con el mdframedpaquete. Cuando el mdframedentorno 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 mdframedcon minipageo cualquier otra cosa no resulta en huérfano y el cambio \clubpenaltyno tiene ningún efecto.

El mismo resultado ocurre, por ejemplo, si el entorno contiene solo una línea pero tiene un valor grande para skipaboveo 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 \sectionnormalmente 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 logarchivo 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 logarchivo 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í, minipagecuya 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.

información relacionada