![浮动出现得太晚了,甚至在新章节之后也是如此](https://linux22.com/image/321285/%E6%B5%AE%E5%8A%A8%E5%87%BA%E7%8E%B0%E5%BE%97%E5%A4%AA%E6%99%9A%E4%BA%86%EF%BC%8C%E7%94%9A%E8%87%B3%E5%9C%A8%E6%96%B0%E7%AB%A0%E8%8A%82%E4%B9%8B%E5%90%8E%E4%B9%9F%E6%98%AF%E5%A6%82%E6%AD%A4%20.png)
这个问题的解决方案出现在这篇文章的末尾。首先是令人费解的症状。
我正在对一个长而复杂的 400pp 文档使用 LaTeXbook
类。使用 LaTeX\begin{figure}
环境生成的一些浮点数(没有可选参数)决定将浮点数浮动到调用点之外的许多页面(坏浮点数之间的其他浮点数看起来正常)。图形可以浮动到 a 之后\cleardoublepage
、a 之后\part{}
、a 之后\chapter{}
。有些出现在下一章的第二页!在这之间,有些页面包含不浮动,图形可能被放置在该位置。.log 文件中没有警告,无论是在调用图形环境的页面上,还是在浮动实际出现的页面上。
解决:我的书也包含许多 \marginpar。问题是,在一个地方,我意外地将 \marginpar 嵌入到了 \footnote 中。我知道这是不允许的,但我没有意识到这会破坏 LaTeX 内部的某些东西,并且会弄乱后面数百页的浮动图形的位置。修复这一行就可以解决所有问题。
答案1
latex 浮动放置算法不会惩罚(甚至不会测量)浮动移动的页面数。如果它不适合当前页面,那么它将被放置在满足约束条件的最早位置。
除非\cleardoublepage
重新定义,否则浮点数不会超过该点,因此除非您可以展示一些代码,否则不可能对浮点数放置的细节进行评论。
答案2
您可以使用该
float
包并将\begin{figure}[H]
单个图形准确地放置在您想要的位置。
也许这是解决问题的快速方法。
答案3
问题在于,在一个地方,我无意中将 \marginpar 嵌入到了 \footnote 中。我知道这是不允许的,但我没有意识到这会破坏 LaTeX 内部的某些功能,并会扰乱后面数百页的浮动图形的位置。
当我猜到这可能涉及 \marginpar 时,我按照 Johannes_B 的建议找到了问题所在:我添加了一行代码,重新定义了 \marginpar 不执行任何操作,然后慢慢地从头开始在书稿中向前移动该行,直到问题开始出现。这样就将错误代码定位到明显的位置,正如 Johannes_B 所说的那样。谢谢 Johannes_B。