这个问题的解决方案出现在这篇文章的末尾。首先是令人费解的症状。
我正在对一个长而复杂的 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。