摘要
本课开启本课程的第五单元,即表格与插图单元。它说明本单元的用途:排好学术著作中的数据、图片和绘图,使它们读起来和正文一样清楚,像章节和公式一样编号、被引用,并且无需作者手工指定就能在页面上找到自己的位置;它介绍本单元的五节课以及贯穿其中的线索,从最简单的表格一直到第一幅 TikZ 绘图;它说明假定已从前面各单元掌握的内容;它回顾科学表格和图表的由来以及支配它们的节约原则;它提出本单元要解决的问题:按照文字处理软件的习惯做出的表格或插图,编译时毫无怨言,读起来却很吃力;它还表明,同样的工具服务于实验室、统计研究、历史档案和文本评注。
学习目标
- 描述本单元内容的先后次序,并说明每节课为下一节课提供了什么。
- 认出本单元假定已从前面各单元掌握的内容,必要时加以复习。
- 举例说明,为什么带完整网格的表格比只用几条横线排出的表格难读。
- 在自己的学科中认出本单元教人排版的表格、图片和绘图。
入门测验
在学习本单元之前,先测一测自己的起点是有益的。这项测验是自我测评:不计分,唯一的目的是为学习指引方向。前两道题复习本单元假定已从前面各单元掌握的内容;后面十道题按顺序每两道对应本单元的一节课。从未在 LaTeX 中排过表格或插入过图片的人不必指望答对:每个答案,无论对错,都会解释要点,并指出讲解这一要点的那节课。同样的技能会在单元末尾的总结课中再次测量。
开始本单元之前,先测一测你的起点。这是一次简短的自我测评:不计分,结果只保存在你的浏览器中。
第 1 题来自前面的单元一位作者在一份含有
\listoffigures的文档中加了一幅带题注的插图,只编译了一次,插图出现在正文里,却没有出现在插图列表中。这是怎么回事?\listoffigures属于 LaTeX 内核。恰恰是题注写下了列表中的条目。删除它毫无用处:下一遍编译会重新写出它。和目录一样,插图列表和表格列表在一遍编译中写出,在下一遍中读入,过时的时候不会给出任何警告。复习: 章节、目录与附录
第 2 题来自前面的单元一份报告的正文中写了“据王 & 李”,编译停在“
Misplaced alignment tab character &”上。为什么?这个符号可以印出来;出错的原因是写的时候没加反斜杠。这个符号在内核中就是保留字符,加不加载 amsmath 都一样。错误出在符号上,与引用无关。对齐结构就是表格:&分隔单元格,\\结束一行。本单元的表格也遵循同一规则。复习: 多行公式
第 3 题一个
\begin{tabular}{lr}表格在恰好含有一个&的一行上报出“Extra alignment tab has been changed to\cr”。错误最可能在哪里?被指出的那一行单元格数是对的;扩大列格式只会掩盖疏漏,留下一行混在一起的内容。两列正好需要一个&;这条信息指的是表格的行,而不是源代码的行。错误来自引擎,不用 booktabs 也一样出现。没有行尾,上一行就延续到被指出的这一行,而这一行又给两列的行添了第二个&。复习: 易读的表格
第 4 题一个声明为
S[table-format=2.2]的列收到单元格 3.5、12.25 和 140.8。结果如何?这个错误由不是数字的字符引起,例如没有加花括号的表头。siunitx 默认既不舍入,也不截掉数字。格式规定了空间;放不下的部分会移位。数字超出预留空间时,siunitx 不发警告:它把数字排在预留空间之外,引擎只记下一个过宽的盒子。复习: 易读的表格
第 5 题在一个
{lrrrr}表格中,第一行是\multicolumn{2}{c}{对照组} & \multicolumn{2}{c}{处理组} \\,下面是\cmidrule(lr){2-3} \cmidrule(lr){4-5}。编译时没有错误也没有警告。看到的是什么?这个错误由单元格多于列数的行引起;这里是五列中的四个单元格。LaTeX 并不知道第一列不属于任何组;每个\multicolumn都从上一个单元格结束的地方开始。\cmidrule只画一条横线,不会移动文字。缺了开头的&。单元格少于列数的行是合法的,所以引擎不发警告;横线只取决于写下的列号。复习: 复杂表格与长表格
第 6 题为了让表格居中,把一个九十行的表格用
longtable写在table环境里面。结果如何?在浮动体里面它无法分页。所装版本不会报错;危险恰恰在此。没有任何东西缩放它;它从页面底部溢出。浮动体是一个不能拆分的盒子,而 longtable 并不把这当作错误报告。应当去掉table:longtable 本身就会居中,并且有自己的\caption。复习: 复杂表格与长表格
第 7 题为一张宽大于高、比例为 4:3 的照片写
\includegraphics[angle=90,width=4cm]{sample}。它以什么尺寸出现?那是[width=4cm,angle=90]的结果:先设宽度再旋转。这忘了图片已经旋转:宽度是在旋转之后设定的。只有在没有keepaspectratio而同时设定宽度和高度时才会变形。graphicx 按书写顺序执行选项:先旋转,图片变成 3:4 的比例,再设定已旋转图片的宽度。复习: 文档中的图片
第 8 题
figures文件夹里有旧的plot.pdf和更新过的plot.png,源文件写的是\includegraphics{figures/plot}。结果如何?引擎不看日期,只看固定的扩展名顺序。没有这样的错误:歧义被悄悄地解决了。这个错误出现在引擎不会嵌入的扩展名上,例如.svg。不写扩展名时,引擎先试.pdf再试.png,用找到的第一个。复习: 文档中的图片
第 9 题一份报告在
\begin{figure}[htbp]旁边写道“如下图所示”。这有什么问题?这些字母是允许的位置,而不是顺序;这里放不下,它就会去别处。[H]会把它固定住,代价是在页面上留下空白;解决办法是用编号引用。恰恰能:这就是浮动。插图不能跨页拆开,引擎把它放在放得下的地方;编号是它移动时唯一不改变含义的东西。复习: 浮动图表
第 10 题导言区有
\usepackage{babel}、\babelprovide[import,main]{chinese}和\setlocalecaption{chinese}{listtable}{表格目录},cleveref 载入时既无选项也无\crefname;题注写着“表 1”,列表标题是“表格目录”。\cref{tab:costs}写出什么?这本在意料之中,但事实并非如此:cleveref 有自己的词汇。cleveref 不读 babel 的任何名称,无论是题注的名称还是列表的名称。不会报错:没有选项也没有\crefname时,cleveref 写出它的英文名称。对 babel 所作的设定改变了题注和列表,却传不到 cleveref 那里。复习: 浮动图表
第 11 题一份西班牙语文档用了
\usepackage[spanish]{babel}和\usepackage{tikz},在第一行绘图命令\draw[->] (0,0) -- (1,0);处出错,信息是“Argument of \language@active@arg> has an extra }”。缺了什么?无论顺序如何,错误都一样:简写在图中依然是活动的。->是基本箭头;若缺 arrows.meta,信息会是“Unknown arrow tip kind”。这一行有分号;信息说的是语言的活动参数,而不是没有结束的路径。TikZ 的 babel 库让这些符号在图中恢复正常含义;调整宏包的顺序并不能解决问题。本课程的中文文档用 luatexja 排版,不加载 babel,这一行在其中不起作用,但照习惯加载。复习: 用 TikZ 绘图
第 12 题
\draw (0,0) -- ++(2,0) -- +(0,1) -- +(-1,0);画出什么?每一步都用++时才会这样。没有任何东西封闭路径;要封闭须写-- cycle。二者可以随意混用;区别只在于是否更新参考点。+从最后一个用++确定的点量起,这里是 (2,0),并且不改变它。复习: 用 TikZ 绘图
正在加载内容…
已完成
登录账户以保存您的进度