我发现将表格放在我想要的位置有点困难。我似乎也无法制作 MWE。但文档已上传这里。
基本上,说
文本(~\ref{})在第 70 页,实际表格在第 84 页;
文本(~\ref{})在第 71 页,实际表格在第 85 页;
文本(~\ref{})在第 72 页,实际表格在第 86 页;
在哪里
\begin{table}[!hp]
已用于所有表格的开头。
在所有情况下,文本都以\subsection{}
s 为单位。表格似乎已被刷新到整个部分的末尾。
我希望表格靠近文本,如果不是的话,也许在页面上next
。但简单的方法!hp
根本行不通。
答案1
有一般性建议(主要是在 Will 的回答中)先前的问题
但是您有一个特定要求(出于某种原因)避免文本页面浮动并且只允许 h 和 p。
这使得定位变得困难。如果浮动元素无法“到达此处”(通常是这种情况,因为该点在页面上的位置太低,无法容纳浮动元素),则 LaTeX 会将其保留下来以制作浮动页面。为了避免出现非常空的页面,它会等待至少有\floatpagefraction
一页(如果使用 ,则不会忽略此部分!
)。默认情况下,article
这是 0.5,因此必须填充至少一半的页面。
这意味着,如果您有两个图形,而第一个图形的高度略小于半页,那么大约有一半的情况是它们无法“放在此处”,因为该点位于页面的下半部分。第一个浮动图形无法构成浮动页面,因为页面太短,但如果第二个图形较大,或者即使第二个图形较小,但没有空间容纳两个图形和它们\floatsep
之间的间隙,则这两个图形也无法放在浮动页面上。这意味着设置[hp]
很容易得到无法放置的浮动图形,并且由于所有图形都保持顺序,一旦一个无法放置,它们就都无法放置。然后它们将被保留,直到\clearpage
在文档或章节末尾用 刷新。
因此,您必须将选项[hp]
设置\floatpagefraction
得足够低,以便可以放置任何浮点序列。
最简单的方法是将其设置得非常低,比如说 0.01。这样浮动元素就不会浮动超过一页;它将始终立即被运出。但是,由于浮动元素没有被阻止,浮动页面每页只有一个浮动元素,因为 latex 不会等待查看下一个浮动元素是否合适。
答案2
有几种方法可以让漂浮物体更接近其位置。
请参阅这个关于浮动对象如何工作的精彩答案:
https://tex.stackexchange.com/a/39020/59716
使用可选的放置指令,[!hp]
你不会获得太多好处。你拿走了 LaTeX 放置浮动对象的一些选择,即b
和t
,并添加!
和h
。
如果您未提供任何选项,则标准位置是btp
,您可以使用 float 包更改此默认值:
\usepackage{float} \floatplacement{table}{htbp}
添加h
为默认值。
另一个有帮助的包是placeins
,它提供命令\FloatBarrier
,强制所有当前浮点数放置在它之前。
如果你像这样加载它:
\usepackage[section, below]{placeins}
浮动元素永远不会在不属于其部分的页面上运行。