next up previous contents index
Next: 17. 定制浮动位置 Up: 16. 浮动图形环境 Previous: 16.3 清除未处理的浮动图形


16.4 过多未处理的浮动对象

如果一浮动对象不能被即时处理,它就会被放到未处理的浮动对象 队列中等待处理。由于在 LATEX 中这一队列只能有 18 个位置, 所以当未处理的浮动对象的数目超过这一限制时就会导致发生  ``Too Many Unprocessed Floats'' 的错误。造成这种错误的原因有四:
  1. 最常见的原因是浮动位置选项与浮动位置参数冲突。例如一 给定 [t] 选项的图形,如果它的高度超过了  \topfraction 的值,就会被放到等待处理队列中。 所以给出尽可能多的浮动位置选项就会解决类似的问题。
  2. 不适当的浮动式样参数值会造成一些图形无法放置。要防止出现 这种情况,一定要确保所使用的浮动式样参数值满足第 17.2  节中对此的要求。
  3. 在很少的情况下,如使用了很多浮动对象和边注(和浮动对象的处理 机制相同),可能确实需要较大的等待队列,这时可使用 morefloats  宏包将等待队列的数目限制增加到 36。
  4. 如果超过 18 幅图形在其中间没有任何文本的情况下被读入,就会超出 LATEX  浮动放置队列的最大数目。可能的解决办法是:
    1. 将图形散布在正文中。这会使得有足够的文本来自然分页,  LATEX 也会更容易地处理浮动对象。
    2. 在这些图形之间加入 \clearpage。这样做可能得 花费一些时间来调整页面以避免产生有很大空白的页(因为  \afterpage{\clearpage} 只在下一自然分页 才会执行 \clearpage,而在这种情形下在下一自 然分页前就会超过限制了。所以不会起作用。)。
    3. 因为这里没有文本,所以图形也不用浮动。故最好的解决办法是 采用第 20 章中的方法来构建非浮动的图形, 而用 \vspace 和 \vfill 来提供竖直间距。


Wang Lei
2000-04-15