![tcolorbox:“最后放大底部”并非在所有情况下都有效](https://linux22.com/image/305331/tcolorbox%EF%BC%9A%E2%80%9C%E6%9C%80%E5%90%8E%E6%94%BE%E5%A4%A7%E5%BA%95%E9%83%A8%E2%80%9D%E5%B9%B6%E9%9D%9E%E5%9C%A8%E6%89%80%E6%9C%89%E6%83%85%E5%86%B5%E4%B8%8B%E9%83%BD%E6%9C%89%E6%95%88.png)
我想确保 tcolorbox 后面的短文本(签名)不会在自己的页面上结束。我正在使用\raisebox
并尝试使用 来放大 tcolorbox 的边界框enlarge bottom finally by
:
\documentclass{article}
\usepackage[many]{tcolorbox}
\usepackage{lipsum}
\begin{document}
\begin{tcolorbox}[
enlarge bottom finally by=1cm,
enhanced,
show bounding box,
breakable,
title={my title},title after break={my title}]
%\lipsum[1] %for a box with a break.
\lipsum[1-4]b\\c\\d\\e%
\raisebox{-1cm}[0pt][0pt]{some text}
\end{tcolorbox}
\end{document}
大多数情况下,边界框都符合预期。
但是如果框本身可以放在页面上,但考虑到额外的底部,框就会太大,那么就会出现问题。在这种情况下,额外的底部被挤压,我的文本位于页脚中:
我怎样才能告诉 tcolorbox 尽早打破这个框,而不需要采取一些手动微调参数(该框位于自动创建的文档中)?
答案1
输出可能不符合预期,但算法运行正常。
这里的问题是:
- 如果盒子破损,第一部分或中间部分的高度与视觉框架一致,
- 盒子的最后部分或未破损部分延长1cm(不可见)。
临界情况是,当箱子内容物完全适合第一部分或中间部分的容器时,但不适合最后一部分或未破损部分的容器(该容器较小,因为保留了 1cm)。
为了处理这个案例,我认为有以下几种可能性:
- 打破盒子,在下一页放一个空的盒子结尾,
- 实现一些循环来找到更早的断点(如果有的话);断点会短得多,一两行会转到下一页,
- 关闭页面上所有内容(第一部分和中间部分)的框,并在需要时从页面底部窃取空间。这是当前的实现。
这三种可能性都不理想。对于许多用例来说,最后一种是最好的,特别是因为算法还必须考虑可选的下部框部分。
现在,对于此处的应用程序,您可以添加一个shrink break goal
以缓解或至少改变效果。此参数实际上会缩小算法所看到的页面上的可用空间。破碎的框会变小,但任何延伸到页面底部的框也会变小。例如:
\documentclass{article}
\usepackage[many]{tcolorbox}
\usepackage{lipsum}
\begin{document}
\begin{tcolorbox}[
enlarge bottom finally by=1cm,
shrink break goal=5mm,%<-----------------------
enhanced,
show bounding box,
breakable,
title={my title},title after break={my title}]
%\lipsum[1] %for a box with a break.
\lipsum[1-4]b\\c\\d\\e%
\raisebox{-1cm}[0pt][0pt]{some text}
\end{tcolorbox}
\end{document}