Tcolorbox parbox=opción falsa se divide por opción de relleno de altura

Tcolorbox parbox=opción falsa se divide por opción de relleno de altura

La opción Tcolorbox parbox=falsese divide por height fillopción

\documentclass[]{article}
\usepackage[most, many]{tcolorbox}
\usepackage{lipsum}

\begin{document}

\begin{tcolorbox}[
parbox=false, 
height fill % this option breaks parbox=false option
]
\lipsum[1-3]
\end{tcolorbox}

\end{document}

ingrese la descripción de la imagen aquí

Respuesta1

Normalmente, el contenido de a tcolorboxse procesa en uno o más registros de caja internos. Luego, este cuadro o estos cuadros se componen con el código de dibujo apropiado, etc.

Para height fill, hay algunas excepciones. Especialmente, el beforecódigo se ejecuta antes de procesar el contenido. Desafortunadamente, esto hace posibles los efectos secundarios. Aquí, algunos ajustes de beforelos perforaciones.

Con un parche, esto se puede reparar en el ejemplo actual:

\documentclass[]{article}
\usepackage[most, many]{tcolorbox}
\usepackage{lipsum}

\makeatletter
\tcbset{
  parskip/.style={before={\ifnum\lastnodetype=-1\relax\else\par%
      \ifvmode\edef\tcb@prevdepth{\the\glueexpr\prevdepth+\lineskip+\parskip}%
      \def\tcb@undo@before{\addvspace{-\glueexpr\tcb@prevdepth}}%
      \pagebreak[0]\fi\fi\noindent},
    after={\tcb@parfillskip@check\par}},
  noparskip/.style={before={\ifnum\lastnodetype=-1\relax\else\par%
      \ifvmode\edef\tcb@prevdepth{\the\glueexpr\prevdepth+\lineskip}%
      \def\tcb@undo@before{\addvspace{-\glueexpr\smallskipamount+\tcb@prevdepth}}%
      \pagebreak[0]\smallskip\fi\fi\noindent},
    after={\tcb@parfillskip@check\par\smallskip}},
}
\makeatother

\begin{document}

\begin{tcolorbox}[
parbox=false,
height fill
]
\lipsum[1-3]
\end{tcolorbox}

\end{document}

Agregaré este parche a la próxima tcolorboxversión si no aparece nada nuevo.

información relacionada