我又遇到了另一个我无法解决的问题。我用一些 XML 代码定义了一个列表:
\begin{lstlisting}[captionpos=b, caption=XML detection strategy for Refused Parent Bequest, label=lst:refused_parent_bequest]
<strategy name="Refused Parent Bequest" ...>
<gate type="AND">
<gate type="OR">
<gate type="AND">
<rule>
<metric>NProtM</metric>
<comparison>greater than</comparison>
<value>10</value>
</rule>
<rule>
<metric>BUR</metric>
<comparison>smaller than</comparison>
<value>0.33</value>
</rule>
</gate>
<rule>
<metric>BOvR</metric>
<comparison>smaller than</comparison>
<value>0.33</value>
</rule>
</gate>
<gate type="AND">
<gate type="OR">
<rule>
<metric>AMW</metric>
<comparison>greater than</comparison>
<value>-1</value>
</rule>
<rule>
<metric>WMC</metric>
<comparison>greater than</comparison>
<value>-1</value>
</rule>
</gate>
<rule>
<metric>NOM</metric>
<comparison>greater than</comparison>
<value>-1</value>
</rule>
</gate>
</gate>
</strategy>
\end{lstlisting}
紧接着,我还定义了一个表格。现在的问题是列表从第一页开始,然后有一个分页符,然后是表格,然后列表继续。我怎样才能强制布局不打断我的列表?
答案1
您可以通过下列方式调整浮标的放置:
有一次,您可以\FloatBarrier
从列表之前的包中添加以清除所有先前的浮动。如果在它之后定义,placeins
这将无济于事。table
该宏允许您抑制当前页面上的浮动。您可以在( package)\suppressfloats
内的列表之前添加它,以便它计入列表的第二页。\afterpage{...}
afterpage
还有一个flafter
包使浮点数只出现在其定义之后。这应该可以table
在列表之后立即处理定义。
答案2
另一种(不太常见的)可能性是将float
参数添加到列表中。然后它将像表格一样浮动,但浮动环境不会互相干扰:
\begin{lstlisting}[float]
Some Code
\end{lstlisting}
我认为这不太像黑客行为,因为通常浮动内容会打断非浮动内容,而试图阻止这种情况发生是违背 TeX 的概念的。