如何在一个大的可破坏的 tcolorbox 中插入一个图形

如何在一个大的可破坏的 tcolorbox 中插入一个图形

制作的可破坏框tcolorbox可以很好地处理在框之前已定义但尚未排版的图形。以下是一个例子:

截屏

这三个玩偶在黄盒开始前就已经发行了,出现在易碎盒的第一页或者之后的页面上都没有问题。

我的问题是,我希望一些图形稍后出现在多页可拆分框中,因此我想将它们发布到框中的某个位置。这不起作用 - 任何在框内定义图形的尝试都会tcolorbox出现此错误:

不处于外部模式。

我尝试通过将图形包装到 中来解决这个问题\afterpage,以确保它在tcolorbox上下文之外进行处理,但这根本没有帮助。

有没有什么办法可以在可破坏物打开时插入图形tcolorbox,以便它们在框中可控的稍后点进行排版?


举一个简单的例子:问题是如何让这样的事情发挥作用:

\documentclass{article}

\usepackage{lipsum}
\usepackage[breakable]{tcolorbox}

\begin{document}

\begin{figure}
    \centering\Huge
    This is a figure.
    \caption{A figure that will work}
\end{figure}

\begin{tcolorbox}[breakable]
    \lipsum[1-20]

    \begin{figure}
        \centering\Huge
        This is a figure.
        \caption{A figure that will not work}
    \end{figure}
    
    \lipsum[21-30]
\end{tcolorbox}

\end{document}

答案1

作为解决方法,您可以使用shipout钩子在下一页的顶部插入一些材料,并模拟图形环境(该caption包提供了\captionof在浮动之外显示标题的命令)。

\documentclass{article}

\usepackage{lipsum}
\usepackage[breakable]{tcolorbox}

\usepackage{caption} % for \captionof command

\begin{document}

\begin{figure}
    \centering\Huge
    This is a figure.
    \caption{A figure that will work}
\end{figure}

\begin{tcolorbox}[breakable]
    \lipsum[1-20]

    \AddToHookNext{shipout}{
      \begin{minipage}{1.0\linewidth}
        \centering\Huge
        This is a figure.
        \captionof{figure}{A figure that will not work}
      \end{minipage}
      \bigskip
    }

    \lipsum[21-30]
\end{tcolorbox}

\end{document}

但它并不是您所要求的真正的浮点数。

相关内容