Latex 如何定义不被表格和图形打断的多页环境?

Latex 如何定义不被表格和图形打断的多页环境?,latex,latex-environment,Latex,Latex Environment,在我正在写的一章书中,我为远足定义了一个新的环境。环境是多页的,通常包括内联图像。此外,我使用阴影环境给环境一个背景色,使其突出一点 但是,如下图所示,环境被浮动表和图像分割,这使得环境的流程在视觉上更难以遵循。例如,现在很难看到浮动图像或表格是否是其中的一部分(缺少的背景色没有帮助)。所以,我喜欢扩展我的环境,不允许它被浮动元素中断,但不知道如何完成 \newcounter{bioclipse} \def\thebioclipse{\thechapter-\arabic{bioclipse}}

在我正在写的一章书中,我为远足定义了一个新的环境。环境是多页的,通常包括内联图像。此外,我使用阴影环境给环境一个背景色,使其突出一点

但是,如下图所示,环境被浮动表和图像分割,这使得环境的流程在视觉上更难以遵循。例如,现在很难看到浮动图像或表格是否是其中的一部分(缺少的背景色没有帮助)。所以,我喜欢扩展我的环境,不允许它被浮动元素中断,但不知道如何完成

\newcounter{bioclipse}
\def\thebioclipse{\thechapter-\arabic{bioclipse}}
\newenvironment{bioclipse}[2][]{\begin{small}\begin{shaded}\refstepcounter{bioclipse} \par\medskip\noindent%
   \textbf{Bioclipse Excursion~\thebioclipse #1: #2
   \vspace{0.1cm} \hrule \vspace{0.1cm}}
   \rmfamily}{\medskip \end{shaded}\end{small}}

任何不允许中断的解决方案都可以,即使背景颜色不同。

插入的算法相当复杂。基本上,您希望任何挂起的插入都不能放入env
bioclipse
应用的页面。作为第一个快速解决方案,您可以先刷新所有插入,然后开始新的章节。如果您想将数字或任何内容放入环境中,并且希望它们仅在环境工作的最后一页之后被“刷新”。。。第二个快速解决方案是:把它们直接放在环境之后!!因此,它们根本不会“打扰”页面(当然,避免使用脚注)

另一个解决方案(以某种方式使其自动化)有点棘手。在输出例程中构建垂直列表(即页面(“候选”)时,选择“待定”材料的插入位置。这意味着在最坏的情况下,您必须使用输出例程;但可能太多了,除非你正在计划自己的TeX格式,也许LaTeX提供了更容易的选择

仔细研究一下LaTeX代码,我发现有一个条件可以尝试使用,它是
\@insert*
,即
\@insertfalse
\@inserttrue
。如果你幸运的话,他们会“驱动”插入的可能性,这样在你的env开始时,你可以说
\@insertfalse
,最后说
\@inserttrue
。试试看,我不是说它管用

您可能知道要使用@作为字母catcode,以便它可以成为“命令”名称的一部分,您必须在完成时使用
\makeatletter
\makeatother
(可能是默认的类/样式序言为您提供的)

您还可以查看一下
placeins
样式(它可能已经在您的安装中了,否则),这显然可以解决(部分)您的问题