Typesmith

插图与浮动体

graphicx、figure 环境,以及「图片为什么会跑」的真相

基础约 18 分钟

\includegraphics:把图片放进来

插图要先在导言区加载 graphicx 宏包,然后用 \includegraphics[选项]{文件名} 插入。最常用的选项是宽度:\includegraphics[width=0.6\textwidth]{photo} 表示「宽度取版心宽度的 60%」。

\textwidth 是一个代表版心宽度的变量,用它来定相对宽度,无论纸张换多大,图片比例都合适——这比写死「8cm」要稳健得多。文件名一般不带扩展名。

本例使用 example-image:它是 TeX Live 自带的一张占位图,专门用来演示和测试,所以你不需要准备任何素材就能编译成功。

插入一张图片并控制宽度
pdfLaTeX
编辑器加载中…
引擎:pdfLaTeX

点击「编译运行」生成真实 PDF

把两个 width 改一改再编译,直观感受相对宽度。试试 width=0.9\textwidth 与 width=0.2\textwidth 的差别。

figure 浮动体:图片的家

单独一行 \includegraphics 能显示图片,但它不会编号、也没法加图注。正规做法是把图片放进 figure 环境——它叫浮动体。

figure 里通常有三样东西:\centering 让图片居中;\includegraphics 插入图片;\caption{...} 生成图注并自动编号。再加上 \label{fig:...},正文就能用 \ref 引用图号,写法与第 4 课完全一致。

图注的位置有讲究:\caption 写在图片下方,就是「图 1:说明」;写在图片上方,编号仍会自动生成,但位置在图的上方。惯例是表格的说明在上、图片的说明在下。

带图注与交叉引用的 figure
pdfLaTeX
编辑器加载中…
引擎:pdfLaTeX

点击「编译运行」生成真实 PDF

\label 必须放在 \caption 的后面,否则引用会指向错误的编号(比如指向上一个图表)。这是非常常见的一个坑。

位置参数:图片为什么「跑」到别处了

你可能已经发现,figure 没有老老实实待在源码所在的位置——它可能跳到了页顶或下一页。这不是 bug,而是浮动机制:LaTeX 认为正文排版优先,会为浮动体寻找一个「看起来更专业」的位置,以填满页面、避免大片空白。

方括号里的字母是给 LaTeX 的位置提示(注意是提示,不是命令):h = here(此处)、t = top(页顶)、b = bottom(页底)、p = 单独一页、! = 忽略美学限制、强制按此优先级摆放。

实践建议:写 [htbp]——让它依次尝试此处、页顶、页底、单独页。如果确实需要图片就在原地不动,用 \usepackage{float} 宏包并提供 [H] 参数(大写 H,代表 Here 且不浮动)。

对比不同的位置参数
pdfLaTeX
编辑器加载中…
引擎:pdfLaTeX

点击「编译运行」生成真实 PDF

[htbp] 是四个提示的组合,LaTeX 会按顺序尝试。图片最终落在哪儿取决于版面,这就是浮动体的常态。

练习:插入一张带图注的图
pdfLaTeX

插入一张 figure:用 \includegraphics 放入 example-image(宽度 0.5\textwidth),写 \caption 与 \label{fig:lab},并在正文用 \ref 引用它。

编辑器加载中…

检查点(实时)

  • 使用 figure 环境
  • 用 \includegraphics 插入 example-image 并设置宽度
  • 添加 \caption 图注
  • 添加 \label{fig:...}
  • 正文用 \ref 引用图号

🎯 目标效果

example-image
图 1:My first figure.

See Figure ???.

引擎:pdfLaTeX

点击「编译运行」生成真实 PDF

练习:进阶:两张并排的图
pdfLaTeX

把两张图片并排放在一行:用两个 \includegraphics,各自宽度取 0.45\textwidth,中间留一个空格;把它们放进同一个 figure,并加一个总的 \caption。

编辑器加载中…

检查点(实时)

  • 使用两个 \includegraphics
  • 宽度取 0.45\textwidth 才能并排放得下
  • 把图片放进 figure 环境
  • 添加一个总的 \caption

🎯 目标效果

example-image
图 1:Two images side by side.
引擎:pdfLaTeX

点击「编译运行」生成真实 PDF

完成所有练习的检查点会自动记录