当 atcolorbox
指定after skip
,并且下一个框指定 时before skip
,它们都可以“折叠”,例如,如果两者都是 1cm,则总跳过将只有 1cm,而不是 2cm。在内部,这是通过使用\addvspace
插入间距来实现的。
figure
不幸的是,在两个tcolorbox
实例之间或两个宏之间有一个环境\addvspace
会阻止空间折叠。这会导致间距不一致:
\documentclass{article}
\usepackage{tcolorbox}
\usepackage{lipsum}
\begin{document}
\tcbset{before skip=5mm, after skip=5mm}
\begin{tcolorbox}
This is a box.
\end{tcolorbox}
\begin{tcolorbox}
This is another box.
\end{tcolorbox}
\begin{figure}[p]
\centering\Large This is a figure.
\end{figure}
\begin{tcolorbox}
This is a third box.
\end{tcolorbox}
This is some text.
\addvspace{5mm}
\addvspace{5mm}
This is more text.
\addvspace{5mm}
\begin{figure}[p]
\centering\Large This is a figure.
\end{figure}
\addvspace{5mm}
This is the final text.
\end{document}
一个明显的解决方案是根本不使用这个空间折叠,而是恢复为\vspace
。在的情况下tcolorbox
,可以使用类似的东西来实现before=\vspace{5mm}
。
但是,如果框后面有时跟着文本,有时跟着更多框,那么空间折叠就很有用,因为它可以让间距在视觉上更加一致。有没有办法在保持空间折叠的同时防止图形改变间距?