如何允许浮动环境中的分页符?

如何允许浮动环境中的分页符?

我正在使用新的浮动环境在我的文档中显示一些示例。此环境包含tcolorbox提供灰色背景的内容。环境中的主要文本是纯文本和代码块(在lstlisting环境中)的混合。每个浮动都应该有自己的标题和标签。

在样式文件中:

\usepackage{newfloat}
\DeclareFloatingEnvironment[name={Example}]{suppfigure}

在主文档中:

\begin{suppfigure}[!h]
\caption{Some code example}\label{suppfigure1}
\begin{tcolorbox}[arc=0mm, left=1pt, right = 1pt, boxrule=0mm,colback = {shadow-gray}] 

Text

\begin{lstlisting} 
int i = 0; 
\end{lstlisting}

Some more text

\begin{lstlisting} 
String.Format("{0,10:0.0}", -123.4567);  
\end{lstlisting}

\end{tcolorbox} 
\end{suppfigure}

我如何允许 suppfigure 内的分页符以将我的示例扩展到多个页面?

答案1

浮动元素不能跨页拆分——它们会一直浮动,直到适合一页或文档结束(以先发生者为准)。从 的使用来看!h,浮动元素不建议,顺便说一下),无论如何你都试图绝对定位这个浮点数。

所以我的建议是使用capt-of包裹将标题放在非浮动元素上,tcolorbox因为通过使用breakable库可以跨越页面边界。

由于您没有提供完整的 MWE,我在下面的代码示例中对您的文档做了一些假设。

代码

\documentclass{book} 
\usepackage{listings}
\usepackage{lipsum} % for dummy text to extend over a page break
\usepackage[breakable]{tcolorbox} % load with breakable library
\usepackage{newfloat}
\DeclareFloatingEnvironment[name={Example}]{suppfigure}
\usepackage{capt-of} % captions for non-floating elements

\begin{document}

\captionof{suppfigure}{Some code example}\label{suppfigure1} % place the caption
\begin{tcolorbox}[%
  breakable, % make the box breakable
  arc=0mm, 
  left=1pt, right = 1pt, 
  boxrule=0mm,
  colback = {gray}, % since shadow-gray was not defined
] 

Text

\begin{lstlisting} 
int i = 0; 
\end{lstlisting}

\lipsum % to extend over a page break

\begin{lstlisting} 
String.Format("{0,10:0.0}", -123.4567);  
\end{lstlisting}

\end{tcolorbox}

Referring to Example~\ref{suppfigure1} works as expected.

\end{document}

输出

在此处输入图片描述

在此处输入图片描述

相关内容