Tcolorbox parbox=false opção quebra por opção de preenchimento de altura

Tcolorbox parbox=false opção quebra por opção de preenchimento de altura

Opção Tcolorbox parbox=falsequebra por height fillopção

\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}

insira a descrição da imagem aqui

Responder1

Normalmente, o conteúdo de a tcolorboxé processado em um ou mais registradores de caixa internos. Então, esta caixa/estas caixas são compostas com o código de desenho apropriado, etc.

Para height fill, existem algumas exceções. Principalmente, o beforecódigo é executado antes do conteúdo ser processado. Infelizmente, isso torna possíveis efeitos colaterais. Aqui, algumas configurações de beforesocos.

Com um patch, isso pode ser reparado no exemplo atual:

\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}

Adicionarei este patch à próxima tcolorboxversão, se nada de novo surgir.

informação relacionada