1. 从“能用”到“好看”:为什么你需要掌握subfigure排版
写论文或者技术报告的时候,你是不是也遇到过这样的烦恼?辛辛苦苦做了好几组对比实验,生成了好几张图表,结果一到LaTeX里排版就傻眼了。图片要么大小不一、参差不齐,要么挤成一团、分不清谁是谁,要么就是图注(caption)对不上号,引用起来一塌糊涂。最后交上去的文档,内容虽然扎实,但排版看起来总有点“业余”,心里难免打鼓。
我刚开始用LaTeX的时候也是这样,觉得能插进去图、能显示出来就万事大吉了。直到有一次,导师在我的论文草稿上圈出了图片部分,批注是:“图表排版混乱,影响阅读逻辑和专业性。” 那一刻我才意识到,在学术和技术写作中,形式本身就是内容的一部分。清晰、美观、专业的图表排版,不仅能提升文档的整体质感,更能有效地引导读者的视线,强化你的论证逻辑。尤其是当我们需要并排展示多张图片进行对比时——比如算法A和算法B的效果对比、不同参数下的性能曲线、一组实验的步骤分解图——如何让它们整齐划一、主次分明,就成了一个必须解决的硬需求。
LaTeX的 subfigure 环境(现在更常用 subcaption 宏包提供的 subfigure 或 subfloat)就是专门为解决这个问题而生的。它绝不仅仅是一个“能把多张图塞进一个figure里”的工具。真正高效地使用它,意味着你能精确控制每一个子图的宽度、对齐方式、间距,能统一或分别设置图注,能方便地交叉引用其中任意一张子图。这听起来有点复杂,但别担心,我把自己踩过的坑和总结出的实用技巧都整理出来了。跟着下面的步骤和代码走,你很快就能从“勉强能用”进阶到“排版高手”,让你文档里的多图对比部分,成为亮眼的加分项,而不是扣分项。
2. 基础搭建:让你的LaTeX环境准备好处理子图
工欲善其事,必先利其器。在动手排子图之前,我们得确保LaTeX文档的“工具箱”里已经装好了合适的工具。很多新手会在这里卡住,因为不同的宏包和命令组合有时会产生冲突,导致编译报错。下面我就来帮你理清头绪,搭建一个稳定、高效的基础环境。
2.1 核心宏包:graphicx, subcaption 和 cleveref
在你的文档导言区(即 \begin{document} 之前),你需要引入几个关键的宏包。这就像在写Python脚本前先import必要的库一样。
\usepackage{graphicx} % 核心:用于插入图片(\includegraphics)
\usepackage{subcaption} % 核心中的核心:提供 subfigure 和 subfloat 环境
\usepackage{cleveref} % 强力辅助:实现智能交叉引用
graphicx:这个是基础,任何涉及图片插入的LaTeX文档都离不开它。它提供了\includegraphics命令,让我们能够导入PDF、PNG、JPG等各种格式的图片。subcaption:这是现代LaTeX排版子图的首选宏包。它提供了\subfigure或\subfloat环境(两者功能类似,\subfloat在某些情况下控制更灵活),并且完美解决了旧式subfigure或subfig宏包的一些兼容性问题。强烈建议使用subcaption,避免使用已经过时或有冲突的旧宏包。cleveref:这是一个能极大提升写作幸福感的宏包。有了它,当你用\cref{fig:sub1}引用子图时,它会自动根据上下文生成“图1a”或“子图1(a)”这样的智能标签,完全不需要你手动输入“Fig.”或“子图”。它同样适用于对表格、公式、章节的引用。
2.2 一个可运行的“Hello World”例子
理论说了不少,我们来点实际的。下面是一个最简化的、完整可编译的多子图示例。你可以把它复制到你的.tex文件里,替换掉图片路径,马上就能看到效果。
\documentclass{article}
\usepackage{graphicx}
\usepackage{subcaption}
\usepackage{cleveref}
\begin{document}
这里是正文的一些介绍文字。我们将展示一个简单的双图并排列子图示例,如\cref{fig:demo}所示。
\begin{figure}[htbp]
\centering % 让整个figure环境居中
\begin{subfigure}{0.48\textwidth} % 第一个子图,宽度为文本宽度的48%
\centering
\includegraphics[width=\linewidth]{example-image-a} % 使用占位图
\caption{这是第一个子图的说明。}
\label{fig:demo-a}
\end{subfigure}
\hfill % 一个弹性填充,将两个子图向两侧推开,从而在中间产生间距
\begin{subfigure}{0.48\textwidth} % 第二个子图,同样宽度
\centering

的实用技巧&spm=1001.2101.3001.5002&articleId=151664530&d=1&t=3&u=f5301aac3ddf4a6a9ad2be05ed098f30)
1万+

被折叠的 条评论
为什么被折叠?



