Tcolorbox parbox=false 选项按高度填充选项

Tcolorbox parbox=false 选项按高度填充选项

Tcolorbox选项按选项parbox=false拆分height fill

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

在此处输入图片描述

答案1

通常,将内容tcolorbox处理到一个或多个内部框寄存器中。然后,使用适当的绘图代码等排版此框/这些框。

对于height fill,有一些例外。特别是,before代码在内容处理之前执行。不幸的是,这可能导致副作用。这里,一些设置从before打孔开始。

使用补丁程序,可以修复当前示例的问题:

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

tcolorbox如果没有新内容出现,我会将此补丁添加到下一个版本中。

相关内容