next up previous contents index
Next: 16.4 过多未处理的浮动对象 Up: 16. 浮动图形环境 Previous: 16.2 图形的放置


16.3 清除未处理的浮动图形

使用浮动图形的一大优势就是 LATEX 不需要在将它们放置在输入它们的 地方。 LATEX 会将它们暂时保存,在更合适的地点加以放置。当一浮动 图形已被 LATEX 读入,但还没有将它放到页面上时,这一图形被称为  ``未处理浮动图形''。虽然 LATEX 通常对浮动图形的处理很好,但有时 还是需要强迫 LATEX 去处理那些未处理的浮动图形。 下面的三个方法都可以用来清除未处理的浮动图形。这些命令必须分开使用。 同时,过多地使用这些命令会使得你有时得自己来管理浮动图形的位置或 意味着浮动图形的放置参数是错误的(见第 17 章)。
clearpage

最基本的用来清除未处理的浮动图形的方法就是使用 \clearpage  命令。它可让 LATEX 排版所有未处理的浮动图形并开始一新页。 尽管这一命令很有效,但它也常常导致页面的下方出现很大的空白。
FloatBarrier

对于大多数情况,最好的方法是使用 placeins 宏包提供 的 \FloatBarrier 命令。使用 placeins 宏包的方法 如下:
  • \FloatBarrier 使所有未处理的浮动图形立即被处理。 与 \clearpage 不同的是,它不会开始一新页。
  • 如果经常要求浮动图形在它们所在的章节中排出,可在调用  placeins 宏包时使用 section 选项:
    
                \usepackage[section]{placeins}
    
    这样会重新定义 \section 命令,在每一个 section  前都加上一个 \FloatBarrier 命令。 注意这个 [section] 选项是很严的。举例来说, 如果在一页的中间开始一新的 section,那么上面这 个 section 的浮动图形就不能放置在这一页的底部。
  • 使用 below 选项:
    
                 \usepackage[below]{placeins}
    
    会比使用 section 选项松一些。它可以允许上一个  section 的浮动图形出现在下一 section  的开始部分,只要在同一页中有上一个 section  的内容。
afterpage/clearpage

afterpage 宏包提供了命令 \afterpage,该命令将在下一 自然分页时执行。因此,用

      \afterpage{\clearpage}
会使所有未处理的浮动对象在下一分页前被清除完。 使用 \afterpage{\clearpage} 并不总可以解决浮动限制 问题(见第 16.4 节)。因为它只是在下一页结束前 才会执行 \clearpage 命令,而在下一页结束前,未处理的浮动对象 可能已超过了 LATEX 的限制。 \afterpage{\clearpage} 命令在排版较小的浮动页图形时特别 有用。而命令 \floatpagefraction (见第 17.2 节)会    阻止 ``太小'' 的图形在浮动页上出现,由于浮动参数改变选项 !  不会应用于浮动页, [!p] 不会破除 \floatpagefraction  的限制,使用 \afterpage{\clearpage} 是一个克服  \floatpagefraction 的限制而又不会导致有较多空白的正文页的 一个简单的办法。


Wang Lei
2000-04-15