LaTeX中浮动体(图片、表格)的位置及上下间距设置

参考链接

位置参数说明

浮动体的位置参数

参数含义
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查看。

其他补充说明:

  1. 可伸缩间距(plus and minus parts):

    • 在 LaTeX 中,可以为间距指定一个基本值,并且可以加上 plusminus 部分来定义这个间距的最大和最小值。这样做可以让间距根据文档布局的需求自动伸展或压缩。
    • 例如,\vspace{1cm plus 0.5cm minus 0.2cm} 表示创建一个初始为 1cm 的垂直间距,当需要更多空间时,它可以最多扩展到 1.5cm;而当空间不足时,它可以最少压缩到 0.8cm。
    • 如果省略了 plusminus 部分,LaTeX 在尝试优化页面布局时就失去了灵活性,可能会导致排版效果不佳。
  2. 双栏模式下的额外长度(two more lengths in two column mode):

    • 在双栏排版模式下,LaTeX 提供了两个额外的长度变量来控制跨栏浮动体与文本以及其他跨栏浮动体之间的距离。
    • \dbltextfloatsep 控制的是跨栏的浮动体(即同时占据两栏宽度的图表等)与正文之间的距离。
    • \dblfloatsep 则是用于设定两个连续的跨栏浮动体之间的距离。
    • 这些设置有助于确保文档中的视觉平衡,避免因为间距过小而导致的布局拥挤或混乱,从而影响文档的美观性和可读性。

修改浮动体参数设置

默认的参数设置有时由于严格,而各个参数间又有一套复杂的相互制约机制,因此自己胡乱设置很难达到预期效果。
下面是根据《LaTeX2e插入指南》18.1节和18.2节的建议调整浮动体设置,可供参考:

\setcounter{topnumber}{4}
\setcounter{bottomnumber}{4}
\setcounter{totalnumber}{10}
\renewcommand{\textfraction}{0.15}
\renewcommand{\topfraction}{0.85}
\renewcommand{\bottomfraction}{0.70}
\renewcommand{\floatpagefraction}{0.66}

能否设置局部间距(如\textfloatsep)?

就目前尝试来看,不能…
即便能实现,应该也会很复杂…
相关参考链接:

上面第一个链接中似乎给出了一个采用afterpage的方案,但自己没实现预期的效果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值