我正在使用新的浮动环境在我的文档中显示一些示例。此环境包含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}