tcolorbox:框之间的图形可防止跳过折叠

tcolorbox:框之间的图形可防止跳过折叠

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

但是,如果框后面有时跟着文本,有时跟着更多框,那么空间折叠就很有用,因为它可以让间距在视觉上更加一致。有没有办法在保持空间折叠的同时防止图形改变间距?

相关内容