当前位置: 首页 > article >正文

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查看。

其他补充说明:

  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 则是用于设定两个连续的跨栏浮动体之间的距离。
    • 这些设置有助于确保文档中的视觉平衡,避免因为间距过小而导致的布局拥挤或混乱,从而影响文档的美观性和可读性。

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

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

  • Local scoping of textfloatsep
  • Adjust spacing after floated paperbox?
  • get can’t get local scoping of \setlength{textfloatsep}{}

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


http://www.kler.cn/a/394576.html

相关文章:

  • linux上海康SDK安装并设置环境变量
  • 【教程】Ubuntu设置alacritty为默认终端
  • 会话信息处理: HttpSession、token序列化、收集登录设备信息、基于`spring-session-data-redis`实现session共享。
  • 宗馥莉的接班挑战:内斗升级,竞品“偷家”
  • 闯关leetcode——3178. Find the Child Who Has the Ball After K Seconds
  • SpringMVC学习笔记(二)
  • 使用命令强制给ESXI上的硬盘分区
  • Grafana Username password invalid
  • JavaScript的展开运算符在React中的应用
  • 游戏引擎学习第11天
  • 软件测试计划和测试用例详解
  • 鸿蒙学习生态应用开发能力全景图-鸿蒙生态伙伴 SDK 市场(4)
  • 家政服务平台管理系统(源码+文档+部署+讲解)
  • Sql进阶:字段中包含CSV,如何通过Sql解析CSV成多行多列?
  • 【数据结构】顺序表解析及实战运用
  • 【Redis实战篇】利用布隆过滤器解决缓存穿透问题
  • 力扣题目解析--合并两个链表
  • SystemVerilog学习笔记(十一):接口
  • 相机光学(四十)——2x2 Adjacent Pixel Binning
  • 小程序开发者工具的network选项卡中有某域名的接口请求,但是在charles中抓不到该接口
  • Python图像识别详解
  • STL学习-排序算法
  • Python-requests模块详解!
  • 威联通Docker Compose搭建NAS媒体库资源工具NAS Tools
  • C++单例模式实现
  • CSS盒子的定位> (中篇)#绝对定位#附练习