如何避免浮动商品干扰商品列表?

如何避免浮动商品干扰商品列表?

我又遇到了另一个我无法解决的问题。我用一些 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 的概念的。

相关内容