我使用的是可折断的 tcolorboxes,其上半部分和下半部分的颜色不同(双色)。但是,当盒子恰好在上半部分和下半部分之间折断时,折断后的盒子部分会从上半部分的颜色开始,然后才继续使用下半部分的颜色。有什么方法可以解决这个问题吗?
梅威瑟:
\documentclass[11pt]{scrbook}
\usepackage{lipsum}
\usepackage[many]{tcolorbox}
\newtcolorbox{example}{breakable,bicolor,colback=black!10!white,colbacklower=black!5!white,title={Example}}
\begin{document}
\begin{example}
\lipsum[3-7]
\tcblower
\lipsum[8]
\end{example}
\end{document}
编辑:我意识到选项“pad after break=0mm”很有用,但它应该只适用于 tcolorbox 在上部和下部之间断裂的情况。
答案1
更新:对于
tcolorbox
版本4.03
或更高版本,此功能将作为选项实现segmentation at break=false
。
首先,这种行为不是 bug。如果在上半部分和下半部分之间的分割处发生中断,则分割线和下半部分将转到下一页。在那里,分割会显示出来以表示下半部分已开始。
为了bicolor
,颜色变化也标志着下半部分的开始。因此,这里最好不要有明确的分割线。我把它看作功能要求分割是可选地未在分页符上绘制:-)
对于带有的“伪造”分割\tcbline
,已经可以选择使用\tcbline*
来获取此功能。
对于“真实”细分,此选项目前不可用。但我认为我们可以使用以下新选项来实现:
\tcbset{
experimental split/.code={\let\tcb@split@SL=\tcb@split@L},
}
有了它,分割线就不会在分割框的开头绘制。我必须调查一下,这是否会导致一些不必要的副作用。此外,还必须为该功能找到一个好名字(欢迎提出建议)。
完整示例代码为:
\documentclass[11pt]{scrbook}
\usepackage{lipsum}
\usepackage[many]{tcolorbox}
\makeatletter
\tcbset{
experimental split/.code={\let\tcb@split@SL=\tcb@split@L},
}
\makeatother
\newtcolorbox{example}{breakable,
experimental split,
bicolor,
colback=red!10!white,
colbacklower=blue!5!white,
title={Example}}
\begin{document}
\begin{example}
\lipsum[3-7]
\tcblower
\lipsum[8]
\end{example}
\end{document}