Latex 浮动体位置设定
本文参考资料如下:
- Bilibili: 林莲枝直播录屏 - 漫谈 LaTeX 排版常见概念误区
- LaTeX 工作室: 漫谈 LaTeX 排版常见概念误区
- LaTeX 官方文档:一份不太简短的 LATEX 2ε 介绍
前言
figure 环境和 table 环境是最常见的浮动体环境,将这些浮动体插入文档中时,难免会出现 Latex 排版的图表位置和我们想要插入位置不同的情况,这篇文章将会对浮动体的一些概念和误区做一些较为详细的说明,希望对我还有阅读的你们有用 o (^▽^) o。自己接触 Latex 也还只有一个月左右,文中若有错误之处还请指正。
为什么会有浮动体
内容丰富的文章或者书籍往往包含许多图片和表格等内容。这些内容的尺寸往往太大,导致分页困难。Latex 为此引入了浮动体的机制,令大块的内容可以脱离上下文,放置在合适的位置。
LATEX 预定义了两类浮动体环境 figure 和 table。习惯上 figure 里放图片,table 里放表格,但并没有严格限制,可以在任何一个浮动体里放置文字、公式、表格、图片等等任意内容。
实际上,插入图片也可以不放入 figure 环境当中,直接通过 includegraphics 命令插入图片即可(比如有的简历模板中插入照片时不推荐使用 figure 浮动体环境)
为什么叫做浮动体
- 排版出来供阅读的文本是主体,而图、表为辅;
- 插在页面的文本段落之间,打断或妨碍阅读节奏( reading flow);
- 那么浮动体的意义在于:图、表都尽量闪一边去,不要打断我的阅读节奏,闪到页面顶部、底部,甚至是页面之后都行,就是插在段落之间影响我阅读
实际上,这和我们使用 Word 插入图片在概念上有比较大的出入,我们习惯于在提及到图表内容的段落的下一段插入相应的图表,但这排版出来的效果确实影响到整体的阅读体验了,页面看起来也不美观。
Q:有人会说:我插入的图和表不应该就在我交叉引用的下一段出现吗,图和说明不在同一页,那读者怎么读得明白啊?
A:那么交叉引用 \label 和 \ref 的意义何在呢
浮动体位置参数
1 | \begin{table}[位置参数] |
位置参数提供了一些符号用来表示浮动体允许排版的位置,如 hbp 允许浮动体排版在当前位置、底部或者单独成页。
h:here, 就摆这里
t:top, 页面顶端
b:bottom, 页面低端
p:float page(也就是只有浮动体的页面,通常由于浮动体太长了,页面插入了浮动体之后,只能塞下几行文字了,此时 latex 不会再插入那几行文字,而是单独的排版这个浮动体,即浮动体单独成页)
!:求你了,听听我的请求吧…(在决定位置时忽视限制)
注意:
- 排版位置的选取与参数里符号的顺序无关,LATEX 总是以 h-t-b-p 的优先级顺序决定浮动体位置。也就是说
[!htp]
和[ph!t]
没有区别 - 但是如果只给了某一个参数,比如
[h]
,那么肯定按 h 这个参数来排版 - 图、表缺省的位置参数是
[t]
浮动体的位置选取受到先后顺序的限制(注意这里所说的先后顺序与上方所说顺序没有关系)。如果某个浮动体由于参数限制、空间限制等原因在当前页无法放置,就要推迟到之后处理,并使得之后的同类浮动体一并推迟。
比如说我论文中的图片太多了,Latex 排版时,将许多图片一并推迟到了非常靠后的页面,此时使用 \clearpage
命令,会在另起一页之前,先将所有推迟处理的浮动体排版成页,此时 htbp 等位置限制被完全忽略(clearpage 可以将之前推迟的所有浮动体一口气全排出来)。
案例分析
为了演示方便,本案例使用了 blindtext 宏包以用来生成假文
1 | \documentclass[a4paper,twocolumn]{article} |
如果不给表格添加位置参数,其默认的位置参数是 t
对于双栏排版,如果想要图、表跨栏显示,如何处理?
双栏排版环境下,LATEX 提供了 table*
和 figure*
环境用来排版跨栏的浮动体。它们的用法与 table 和 figure 一样,不同之处为双栏的 ⟨placement⟩ 参数只能用 tp 两个位置。
1 | \begin{table*}[t] |
注意是 table 带星,不是 tabular 带星