跳至内容
Topos Uranos

摘要

本课讲怎样把一张表格或一幅图片变成一个带编号、由引擎自行安排位置的元素。它解释图和表为什么会浮动:它们不能在两页之间断开,由此推出正文必须按编号引用它们;介绍 figure 和 table 环境、每个位置参数的含义、[h] 变成 [ht] 的原因、[H] 的代价,以及约束浮动体的手段 \clearpage 和 \FloatBarrier;研究题注,包括它的短标题、位置和用 caption 宏包设定的格式;说明 babel 给出的中文名称(“图”“表”“插图”“表格”)、怎样按学校的要求修改列表标题,以及修改之后 cleveref 还要补上什么;重温标签的位置,并发现 caption 会揭露放错位置的标签;排出子图和并排的独立图;提及旋转的浮动体、跨双栏的浮动体和文字环绕的图;解决表格中脚注的问题;最后汇总典型错误及其日志。

学习目标

  1. 解释图和表为什么浮动,并根据位置参数预测引擎把浮动体放在哪里,包括 [h] 变成 [ht] 的情形。
  2. 用 \clearpage、\FloatBarrier 或 [H] 约束浮动体,并权衡每种手段的代价。
  3. 排出带编号、短标题和统一格式的题注,表格的题注在上方,图的题注在下方,间距正确。
  4. 按机构的要求为图表及其列表命名(例如“表格”或“表格目录”),使题注、列表和 cleveref 的引用彼此一致。
  5. 排出子图、并排的独立图以及表格内部的注释,并借助日志诊断浮动体的典型错误。

为什么会浮动

一行文字可以在一页结束,下一行在另一页开始;一个段落可以毫无损害地分在两页上。图或表却是一个不可分割的整体:不能把一幅图片的一半放在这一页底部,另一半放在下一页。既然如此,当一幅图放不进本页剩下的空间时,只有两条出路:让本页余下部分空着,把图放到下一页;或者继续排正文,把图移到放得下的地方。印刷排版历来选择后者,因为留有空白的页面看起来像缺陷,LaTeX 也采用这种做法:写在 figure 或 table 环境中的图或表是一个浮动体,引擎把它从正文的文字流中取出,放到容得下它的地方:本页或后面某一页的顶部、页面底部,或者单独的一页。

由此得出一条不可随意违背的写作规则。作者并不知道图最终会落在哪里,而且它的位置会随前面每增加一段而改变;“下图”或“下表”在最终版本中可能是错的,而且常常如此。正文应当按编号引用浮动体,编号即使在浮动体移动之后也依然成立:“图 3 显示……”,用交叉引用一课中的标签和引用写出。出于同样的理由,浮动体总要有题注:正是题注给它编号。