figure环境是latex中插入学术图片的唯一可靠方式,必须用\caption生成编号与图注、\label/\ref实现交叉引用;单独\includegraphics无编号、不可引用,且位置失控。

LaTeX 中 figure 环境是唯一可靠的方式
直接用 \includegraphics 插入图片不会自动编号、无法交叉引用、也不带“图X:”前缀——这根本不是学术文档要求的“图”。必须包裹在 figure 环境里,\caption 才能生成标准图注,并触发编号与 \label/\ref 机制。
常见错误现象:
– 图片下方没出现“图1:……”,只有一段普通文字
– \ref{fig:xxx} 编译后显示 ??
– 图片跑到了文档末尾甚至新页,中间空一大片
- 导言区必须有
\usepackage{graphicx}(caption和float可选但推荐) -
\caption必须写在\includegraphics之后(默认位置在图下方),且只能出现一次/环境 - 浮动参数别只写
[h];[htbp]或[!htbp]更稳妥,!能绕过 LaTeX 对浮动体密度的保守限制
为什么 \figcaption 不是 LaTeX 原生命令
HTML 里的 <figure><figcaption></figcaption></figure> 是网页语义标签,LaTeX 没有同名命令。有人误搜 “latex figcaption” 会撞上无效结果或混淆 CSS 渲染逻辑。LaTeX 的等价实现就是 figure + \caption 组合,二者缺一不可。
容易踩的坑:
– 把 \caption 放在 figure 外面 → 编译报错 Something's wrong--perhaps a missing \item
– 在 minipage 或 tabular 里单独用 \caption → 编号丢失、不参与全局计数
– 用 \textbf{图1:说明文字} 手动模拟 → 后续增删图后所有编号全错,\ref 完全失效
图片位置失控?先查导出设置,再调浮动参数
很多“图片总沉底”问题其实和 LaTeX 无关,而是 PDF 图源本身带大量空白边距。尤其 Visio、PowerPoint 导出 PDF 时若勾选“辅助功能结构标记”或未启用“适应绘图”,PDF 内部画布尺寸远大于实际图像内容,LaTeX 只好按画布排版,导致上方大片留白。
- Visio 解决方案:菜单栏 → 设计 → 大小 → 选择“适应绘图”;另存为 PDF 时取消勾选“辅助功能文档结构标记”
- 通用检查:用 PDF 查看器打开图片,拖动滚动条确认是否真有空白;也可用
\fbox{\includegraphics[...]{...}}包裹临时加边框,直观看实际渲染区域 - LaTeX 层面补救:
\vspace*{-1cm}可微调(慎用),但优先修复源文件——否则换模板、换编译引擎仍会复现
多图并排时,\subcaptionbox 比手写 minipage 更稳
需要两张图横向排列并各自带说明(如“左:原始图;右:增强图”),用 minipage + \centerline 容易因宽度计算误差导致换行或溢出。而 \subcaptionbox(来自 subcaption 宏包)专为此设计,自动处理间距、对齐与子编号。
示例片段:
\usepackage{subcaption}
% ...
\begin{figure}[!htbp]
\centering
\subcaptionbox{原始输入}{\includegraphics[width=0.45\textwidth]{input.png}}\hfill
\subcaptionbox{处理结果}{\includegraphics[width=0.45\textwidth]{output.png}}
\caption{算法前后对比}
\label{fig:comparison}
\end{figure}
注意:\subcaptionbox 生成的是子图编号(如“图1a”“图1b”),主 \caption 仍是“图1”。若不需要子编号,改用 \caption*{...}(需 caption 宏包)即可。
真正容易被忽略的是:所有浮动体(包括含 \subcaptionbox 的)仍受页面可用空间约束。哪怕你把两张图缩到 0.45\textwidth,若当前页只剩 2cm 高度,LaTeX 仍会把它推到下一页——这不是 bug,是排版引擎在守规则。











