在我正在撰写的一本书中,我为远足定义了一个新的LaTeX环境。环境是多页的,并且通常包括内联图像。此外,我使用阴影环境来给环境一个背景颜色,使它突出一点。
然而,如下所示,环境被浮动的表格和图像分割,这使得环境的流动在视觉上更难跟踪。例如,现在很难看到浮动图像或表格是否是一部分(丢失的背景颜色没有帮助)。所以,我喜欢扩展我的环境,不允许它被浮动元素中断,但我不知道如何做到这一点。
\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}}
任何不允许中断的解决方案都是很好的,即使背景颜色是不同的。
发布于 2010-06-13 15:28:26
插入的算法相当复杂。基本上,您希望任何挂起的插入都不能放到应用环境bioclipse
的页面中。作为第一个快速解决方案,您可以先刷新所有插入内容,然后再开始新的章节。如果你想把数字或其他东西放到环境中,并且你想让它们只在环境工作的最后一页之后被“刷新”...第二个快速解决方案是:将它们直接放在环境之后!所以它们根本不会“烦扰”页面(当然,避免使用脚注)。
另一种解决方案(以某种方式使其自动化)有点棘手。“待定”材料的插入位置是在输出例程中构建作为页面(“候选”)的垂直列表时选择的。这意味着你在最坏的情况下不得不尝试输出例程;但也许它太多了,除非你正在计划自己的TeX格式,也许LaTeX给了你更容易的选择……
深入研究一下LaTeX代码,我发现有一个条件可以尝试使用,它是\@insert*
,即\@insertfalse
和\@inserttrue
。如果你幸运的话,他们“驱动”了插入的可能性,这样你就可以在env的开头加上\@insertfalse
,在结尾加上\@inserttrue
。试试看,我不是说它有效。
也许你知道使用@作为字母分类代码,以便它可以成为“命令”名称的一部分,当你完成时,你必须使用\makeatletter
和\makeatother
(可能默认的类/样式前导会为你做这件事)。
您还可以尝试查看placeins
样式(它可能已经在您的安装中,否则就是see here ),这显然可以解决您的问题(部分)。
https://stackoverflow.com/questions/3032537
复制