LaTeX中浮动体(图片、表格)的位置及上下间距设置
参考链接
- LaTeX 中的浮动体:基础篇
- Ishort 3.9节
- How to change the spacing between figures/tables and text? - stackexchange
位置参数说明
浮动体的位置参数
参数 | 含义 |
---|---|
h | 当前位置(代码所处的上下文) |
t | 顶部 |
b | 底部 |
p | 单独成页 |
! | 在决定位置时忽视限制 |
- 注1:排版位置的选取与参数里符号的顺序无关,LaTeX 总是以 h-t-b-p 的优先级顺序决定浮动体位置。也就是说 [!htp] 和 [ph!t] 没有区别。
- 注2:限制包括浮动体个数(除单独成页外,默认每页不超过 3 个浮动体,其中顶部不超过 2 个,底部不超过 1 个)以及浮动体空间占页面的百分比(默认顶部不超过 70%,底部不超过 30%)。
就目前使用经验而言,采用 !htb
普遍效果比较好。
双栏排版环境下,LaTeX 提供了 table*
和 figure*
环境用来排版跨栏的浮动体。它们的用法与 table 和 figure 一样,不同之处为双栏的〈placement〉参数只能用 tp 两个位置。
浮动体的位置选取受到先后顺序的限制。如果某个浮动体由于参数限制、空间限制等原因在当前页无法放置,就要推迟到之后处理,并使得之后的同类浮动体一并推迟。\clearpage 命令会在另起一页之前,先将所有推迟处理的浮动体排版成页,此时 htbp 等位置限制被完全忽略。
float 宏包为浮动体提供了 H
位置参数,不与 htbp 及!混用。使用 H 位置参数时,会取消浮动机制,将浮动体视为一般的盒子插入当前位置。这在一些特殊情况下很有用(如使用 multicol 宏包排版分栏内容的时候),但尺寸过大的浮动体可能使得分页比较困难。
控制上下间距
涉及到上下间距的关键参数是\floatsep
、\textfloatsep
、\intextsep
,其正式说明可以在source2e文档中找到:
- \floatsep : Space left between floats.
- \textfloatsep : Space between last top float or first bottom float and the text.
- \intextsep : Space left on top and bottom of an in-text float.
设置方式为在导言区设置,例如
\setlength{\textfloatsep}{10pt plus 1.0pt minus 2.0pt}
默认值可以通过\the\textfloatsep
查看。
其他补充说明:
-
可伸缩间距(plus and minus parts):
- 在 LaTeX 中,可以为间距指定一个基本值,并且可以加上
plus
和minus
部分来定义这个间距的最大和最小值。这样做可以让间距根据文档布局的需求自动伸展或压缩。 - 例如,
\vspace{1cm plus 0.5cm minus 0.2cm}
表示创建一个初始为 1cm 的垂直间距,当需要更多空间时,它可以最多扩展到 1.5cm;而当空间不足时,它可以最少压缩到 0.8cm。 - 如果省略了
plus
和minus
部分,LaTeX 在尝试优化页面布局时就失去了灵活性,可能会导致排版效果不佳。
- 在 LaTeX 中,可以为间距指定一个基本值,并且可以加上
-
双栏模式下的额外长度(two more lengths in two column mode):
- 在双栏排版模式下,LaTeX 提供了两个额外的长度变量来控制跨栏浮动体与文本以及其他跨栏浮动体之间的距离。
\dbltextfloatsep
控制的是跨栏的浮动体(即同时占据两栏宽度的图表等)与正文之间的距离。\dblfloatsep
则是用于设定两个连续的跨栏浮动体之间的距离。- 这些设置有助于确保文档中的视觉平衡,避免因为间距过小而导致的布局拥挤或混乱,从而影响文档的美观性和可读性。
能否设置局部间距(如\textfloatsep)?
就目前尝试来看,不能…
即便能实现,应该也会很复杂…
相关参考链接:
- Local scoping of textfloatsep
- Adjust spacing after floated paperbox?
- get can’t get local scoping of \setlength{textfloatsep}{}
上面第一个链接中似乎给出了一个采用afterpage
的方案,但自己没实现预期的效果。