LaTeX \caption 与 \captionof 详解
LaTeX \caption 与 \captionof 详解
\caption 只能在浮动体(figure、table)内使用,离开浮动体即报错。\captionof 由 caption 宏包提供,可在任意位置生成图表标题,无需依赖浮动体。两者对比如下。
1. \caption:浮动体专属
\caption 只能用在浮动体环境内部,最典型的是 figure 和 table:
1 | \begin{figure}[htbp] |
浮动体会自动调整位置以达到最佳排版效果。\caption 依赖浮动体提供的计数器与编号机制,离开浮动体即无法工作。\caption 放在 \label 之前才能正确生成交叉引用编号。
2. \captionof:在非浮动体中使用标题
\captionof 由 caption 宏包提供,语法 \captionof{类型}{标题}:
1 | \usepackage{caption} % 导言区加载 |
典型适用场景
minipage内并列图表:多个子图放在同一个figure中,每个minipage内用\captionof独立编号。
1 | \begin{figure}[htbp] |
- 不希望内容浮动:需要在文字中嵌入图表并固定位置时,用
\captionof配合center即可(figure环境会自动漂移)。 table以外的表格:如用tabular直接写表格但不套table环境时。
提示:如果需要子图自动编号(a、b、c),推荐搭配 subcaption 包使用 \captionof{subfigure}{...}。
3. 对比总结
| 特性 | \caption |
\captionof |
|---|---|---|
| 是否需要浮动体 | 必须(figure/table) |
不需要 |
是否需要 caption 宏包 |
不需要 | 需要 |
| 内容是否自动浮动 | 是 | 否(固定在当前位置) |
| 适用环境 | figure、table |
minipage、center、任意位置 |
| 语法 | \caption{标题} |
\captionof{类型}{标题} |
4. 常见注意事项
- **编译报错 “Not in outer par mode”**:在非浮动体环境使用了
\caption,换成\captionof并加载caption宏包即可。 \captionof不会创建浮动体,所以[htbp]这样的位置参数对它没有意义——它永远停留在你放置的位置。- 编号计数器是共享的:
\captionof{figure}{...}会递增figure计数器,和\caption保持统一编号序列。 subcaption包内部已加载caption,无需重复\usepackage{caption}。
5. 小结
有浮动体用 \caption,没浮动体用 \captionof。\captionof 在任意位置给图表加编号标题,代价是放弃自动浮动排版。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 iehtian!
