LaTeX 子图排版 3 大方案对比subfigure vs subcaption vs subfig 宏包在学术写作和技术文档中高质量的图表展示往往能大幅提升内容的专业性和可读性。当需要展示多个相关图片时LaTeX 的子图排版功能就显得尤为重要。本文将深入对比三种主流子图排版方案subfigure、subcaption和subfig宏包帮助您在不同场景下做出最优选择。1. 子图排版基础概念子图排版的核心需求是将多个相关图片组织在一个主图环境中每个子图可以有自己的标签和标题同时整个组图共享一个主标题。这种排版方式在对比实验、展示不同视角或时间序列数据时尤为实用。传统 LaTeX 的figure环境本身并不直接支持子图功能因此开发者创建了多种宏包来填补这一空白。这些宏包各有特点适用于不同的使用场景和文档类型。基本子图结构示例\begin{figure}[htbp] % 子图1 \subfigure[子图1标题]{ \includegraphics[width0.3\linewidth]{image1.png} \label{fig:sub1} } % 子图2 \subfigure[子图2标题]{ \includegraphics[width0.3\linewidth]{image2.png} \label{fig:sub2} } \caption{主图标题} \label{fig:main} \end{figure}2. subfigure 宏包详解subfigure是最早出现的子图解决方案之一虽然现在被认为有些过时但在许多老模板中仍被广泛使用。2.1 基本用法使用subfigure需要先在导言区加载宏包\usepackage{graphicx} \usepackage{subfigure}典型的使用模式是在figure环境中嵌套多个\subfigure命令\begin{figure}[htbp] \centering \subfigure[子图A]{ \includegraphics[width0.45\textwidth]{fig1.jpg} \label{fig:subfig_a} } \subfigure[子图B]{ \includegraphics[width0.45\textwidth]{fig2.jpg} \label{fig:subfig_b} } \caption{主图标题} \label{fig:mainfig} \end{figure}2.2 功能特点自动编号子图会自动获得字母编号 (a)、(b)、(c) 等垂直排列支持通过minipage环境可实现垂直排列标题定制可通过\renewcommand{\thesubfigure}修改编号格式2.3 兼容性与局限性subfigure与大多数常见宏包兼容但存在以下限制不支持复杂的多行列布局自定义选项较少与某些新版宏包可能存在冲突提示在必须使用subfigure的情况下建议配合minipage环境使用以获得更灵活的布局控制。3. subcaption 宏包解析subcaption是现代 LaTeX 文档推荐使用的子图解决方案它提供了更强大和灵活的功能。3.1 基本配置加载宏包\usepackage{subcaption}基本使用示例\begin{figure}[htbp] \centering \begin{subfigure}{0.45\textwidth} \includegraphics[width\textwidth]{fig1.jpg} \caption{子图A} \label{fig:subfig_a} \end{subfigure} \begin{subfigure}{0.45\textwidth} \includegraphics[width\textwidth]{fig2.jpg} \caption{子图B} \label{fig:subfig_b} \end{subfigure} \caption{主图标题} \label{fig:mainfig} \end{figure}3.2 核心优势更灵活的布局支持复杂的多行列排列丰富的自定义选项可精细控制标题样式、间距等更好的兼容性与hyperref、caption等宏包配合良好3.3 高级功能多行列布局示例\begin{figure}[htbp] \centering \begin{subfigure}[b]{0.3\textwidth} \includegraphics[width\textwidth]{fig1.jpg} \caption{第一行第一列} \end{subfigure} \begin{subfigure}[b]{0.3\textwidth} \includegraphics[width\textwidth]{fig2.jpg} \caption{第一行第二列} \end{subfigure} \begin{subfigure}[b]{0.3\textwidth} \includegraphics[width\textwidth]{fig3.jpg} \caption{第一行第三列} \end{subfigure} \begin{subfigure}[b]{0.45\textwidth} \includegraphics[width\textwidth]{fig4.jpg} \caption{第二行第一列} \end{subfigure} \begin{subfigure}[b]{0.45\textwidth} \includegraphics[width\textwidth]{fig5.jpg} \caption{第二行第二列} \end{subfigure} \caption{复杂的多行列子图布局} \label{fig:complex} \end{figure}4. subfig 宏包深度剖析subfig是另一个流行的子图解决方案它试图在易用性和功能性之间取得平衡。4.1 基本用法加载宏包\usepackage{subfig}使用\subfloat命令创建子图\begin{figure}[htbp] \centering \subfloat[子图A]{ \label{fig:subfig_a} \includegraphics[width0.45\textwidth]{fig1.jpg} } \hfill \subfloat[子图B]{ \label{fig:subfig_b} \includegraphics[width0.45\textwidth]{fig2.jpg} } \caption{主图标题} \label{fig:mainfig} \end{figure}4.2 独特功能灵活的间距控制通过\hfill、\hspace等命令精确控制子图间距垂直和水平混合布局支持复杂的排列方式标题位置自定义可以调整子图标题的位置4.3 兼容性考虑subfig与大多数现代宏包兼容良好但在某些情况下可能需要调整参数以避免冲突。5. 三大方案综合对比下表从多个维度对比了三种子图排版方案的主要特性特性subfiguresubcaptionsubfig易用性简单中等中等布局灵活性有限高高与hyperref兼容性一般优秀良好标题定制能力基本丰富中等垂直排列支持需要minipage原生支持原生支持现代模板适配不推荐推荐可用学习曲线低中中6. 实际应用场景建议根据不同的文档类型和需求我们给出以下选型建议6.1 学术期刊投稿推荐方案subcaption理由兼容性好符合大多数期刊要求配置示例\usepackage[captionfalse]{subfig} \usepackage{caption} \captionsetup[subfigure]{labelformatsimple,labelsepcolon}6.2 学位论文写作推荐方案subfig或subcaption理由需要处理大量复杂图表这两个宏包提供了足够的灵活性技巧统一设置子图标题样式保持全文一致6.3 技术报告与演示文档推荐方案根据模板选择特殊考虑可能需要更自由的布局控制可以结合minipage使用7. 常见问题解决方案在实际使用中可能会遇到以下典型问题问题1子图标题编号格式不符合要求解决方案使用\renewcommand修改编号格式例如\renewcommand{\thesubfigure}{(\alph{subfigure})}问题2子图间距控制不理想解决方案使用\hspace或\hfill手动调整\subfigure[...]{...}\hspace{1cm}\subfigure[...]{...}问题3与hyperref宏包冲突解决方案确保hyperref最后加载或使用subcaption替代\usepackage{hyperref} \usepackage{subcaption}8. 高级技巧与最佳实践8.1 混合使用 minipage 实现复杂布局\begin{figure}[htbp] \centering \begin{minipage}[b]{0.3\textwidth} \centering \includegraphics[width\textwidth]{fig1.jpg} \captionof{subfigure}{子图A} \label{fig:subfig_a} \end{minipage} \hfill \begin{minipage}[b]{0.6\textwidth} \centering \includegraphics[width0.45\textwidth]{fig2.jpg} \captionof{subfigure}{子图B} \label{fig:subfig_b} \vspace{0.5cm} \includegraphics[width0.45\textwidth]{fig3.jpg} \captionof{subfigure}{子图C} \label{fig:subfig_c} \end{minipage} \caption{混合布局示例} \label{fig:mixed} \end{figure}8.2 统一设置子图样式在导言区统一配置子图样式确保全文一致\usepackage{subcaption} \captionsetup[subfigure]{labelfontbf,textfontsmall,skip2pt} \renewcommand{\thesubfigure}{图\arabic{figure}.\alph{subfigure}}8.3 跨页子图处理对于大型子图组可能需要跨页显示\usepackage{caption} \usepackage{subcaption} \usepackage{lipsum} % 仅用于示例文本 \begin{figure}[p] \centering \begin{subfigure}{\textwidth} \centering \includegraphics[width0.8\textwidth]{fig1.jpg} \caption{跨页子图A} \label{fig:continued_a} \end{subfigure} \caption{跨页子图(第一部分)} \label{fig:continued_1} \end{figure} \begin{figure}[p] \ContinuedFloat \centering \begin{subfigure}{\textwidth} \centering \includegraphics[width0.8\textwidth]{fig2.jpg} \caption{跨页子图B} \label{fig:continued_b} \end{subfigure} \caption{跨页子图(第二部分)} \label{fig:continued_2} \end{figure}
LaTeX 子图排版 3 大方案对比:subfigure vs subcaption vs subfig 宏包
发布时间:2026/7/13 4:51:40
LaTeX 子图排版 3 大方案对比subfigure vs subcaption vs subfig 宏包在学术写作和技术文档中高质量的图表展示往往能大幅提升内容的专业性和可读性。当需要展示多个相关图片时LaTeX 的子图排版功能就显得尤为重要。本文将深入对比三种主流子图排版方案subfigure、subcaption和subfig宏包帮助您在不同场景下做出最优选择。1. 子图排版基础概念子图排版的核心需求是将多个相关图片组织在一个主图环境中每个子图可以有自己的标签和标题同时整个组图共享一个主标题。这种排版方式在对比实验、展示不同视角或时间序列数据时尤为实用。传统 LaTeX 的figure环境本身并不直接支持子图功能因此开发者创建了多种宏包来填补这一空白。这些宏包各有特点适用于不同的使用场景和文档类型。基本子图结构示例\begin{figure}[htbp] % 子图1 \subfigure[子图1标题]{ \includegraphics[width0.3\linewidth]{image1.png} \label{fig:sub1} } % 子图2 \subfigure[子图2标题]{ \includegraphics[width0.3\linewidth]{image2.png} \label{fig:sub2} } \caption{主图标题} \label{fig:main} \end{figure}2. subfigure 宏包详解subfigure是最早出现的子图解决方案之一虽然现在被认为有些过时但在许多老模板中仍被广泛使用。2.1 基本用法使用subfigure需要先在导言区加载宏包\usepackage{graphicx} \usepackage{subfigure}典型的使用模式是在figure环境中嵌套多个\subfigure命令\begin{figure}[htbp] \centering \subfigure[子图A]{ \includegraphics[width0.45\textwidth]{fig1.jpg} \label{fig:subfig_a} } \subfigure[子图B]{ \includegraphics[width0.45\textwidth]{fig2.jpg} \label{fig:subfig_b} } \caption{主图标题} \label{fig:mainfig} \end{figure}2.2 功能特点自动编号子图会自动获得字母编号 (a)、(b)、(c) 等垂直排列支持通过minipage环境可实现垂直排列标题定制可通过\renewcommand{\thesubfigure}修改编号格式2.3 兼容性与局限性subfigure与大多数常见宏包兼容但存在以下限制不支持复杂的多行列布局自定义选项较少与某些新版宏包可能存在冲突提示在必须使用subfigure的情况下建议配合minipage环境使用以获得更灵活的布局控制。3. subcaption 宏包解析subcaption是现代 LaTeX 文档推荐使用的子图解决方案它提供了更强大和灵活的功能。3.1 基本配置加载宏包\usepackage{subcaption}基本使用示例\begin{figure}[htbp] \centering \begin{subfigure}{0.45\textwidth} \includegraphics[width\textwidth]{fig1.jpg} \caption{子图A} \label{fig:subfig_a} \end{subfigure} \begin{subfigure}{0.45\textwidth} \includegraphics[width\textwidth]{fig2.jpg} \caption{子图B} \label{fig:subfig_b} \end{subfigure} \caption{主图标题} \label{fig:mainfig} \end{figure}3.2 核心优势更灵活的布局支持复杂的多行列排列丰富的自定义选项可精细控制标题样式、间距等更好的兼容性与hyperref、caption等宏包配合良好3.3 高级功能多行列布局示例\begin{figure}[htbp] \centering \begin{subfigure}[b]{0.3\textwidth} \includegraphics[width\textwidth]{fig1.jpg} \caption{第一行第一列} \end{subfigure} \begin{subfigure}[b]{0.3\textwidth} \includegraphics[width\textwidth]{fig2.jpg} \caption{第一行第二列} \end{subfigure} \begin{subfigure}[b]{0.3\textwidth} \includegraphics[width\textwidth]{fig3.jpg} \caption{第一行第三列} \end{subfigure} \begin{subfigure}[b]{0.45\textwidth} \includegraphics[width\textwidth]{fig4.jpg} \caption{第二行第一列} \end{subfigure} \begin{subfigure}[b]{0.45\textwidth} \includegraphics[width\textwidth]{fig5.jpg} \caption{第二行第二列} \end{subfigure} \caption{复杂的多行列子图布局} \label{fig:complex} \end{figure}4. subfig 宏包深度剖析subfig是另一个流行的子图解决方案它试图在易用性和功能性之间取得平衡。4.1 基本用法加载宏包\usepackage{subfig}使用\subfloat命令创建子图\begin{figure}[htbp] \centering \subfloat[子图A]{ \label{fig:subfig_a} \includegraphics[width0.45\textwidth]{fig1.jpg} } \hfill \subfloat[子图B]{ \label{fig:subfig_b} \includegraphics[width0.45\textwidth]{fig2.jpg} } \caption{主图标题} \label{fig:mainfig} \end{figure}4.2 独特功能灵活的间距控制通过\hfill、\hspace等命令精确控制子图间距垂直和水平混合布局支持复杂的排列方式标题位置自定义可以调整子图标题的位置4.3 兼容性考虑subfig与大多数现代宏包兼容良好但在某些情况下可能需要调整参数以避免冲突。5. 三大方案综合对比下表从多个维度对比了三种子图排版方案的主要特性特性subfiguresubcaptionsubfig易用性简单中等中等布局灵活性有限高高与hyperref兼容性一般优秀良好标题定制能力基本丰富中等垂直排列支持需要minipage原生支持原生支持现代模板适配不推荐推荐可用学习曲线低中中6. 实际应用场景建议根据不同的文档类型和需求我们给出以下选型建议6.1 学术期刊投稿推荐方案subcaption理由兼容性好符合大多数期刊要求配置示例\usepackage[captionfalse]{subfig} \usepackage{caption} \captionsetup[subfigure]{labelformatsimple,labelsepcolon}6.2 学位论文写作推荐方案subfig或subcaption理由需要处理大量复杂图表这两个宏包提供了足够的灵活性技巧统一设置子图标题样式保持全文一致6.3 技术报告与演示文档推荐方案根据模板选择特殊考虑可能需要更自由的布局控制可以结合minipage使用7. 常见问题解决方案在实际使用中可能会遇到以下典型问题问题1子图标题编号格式不符合要求解决方案使用\renewcommand修改编号格式例如\renewcommand{\thesubfigure}{(\alph{subfigure})}问题2子图间距控制不理想解决方案使用\hspace或\hfill手动调整\subfigure[...]{...}\hspace{1cm}\subfigure[...]{...}问题3与hyperref宏包冲突解决方案确保hyperref最后加载或使用subcaption替代\usepackage{hyperref} \usepackage{subcaption}8. 高级技巧与最佳实践8.1 混合使用 minipage 实现复杂布局\begin{figure}[htbp] \centering \begin{minipage}[b]{0.3\textwidth} \centering \includegraphics[width\textwidth]{fig1.jpg} \captionof{subfigure}{子图A} \label{fig:subfig_a} \end{minipage} \hfill \begin{minipage}[b]{0.6\textwidth} \centering \includegraphics[width0.45\textwidth]{fig2.jpg} \captionof{subfigure}{子图B} \label{fig:subfig_b} \vspace{0.5cm} \includegraphics[width0.45\textwidth]{fig3.jpg} \captionof{subfigure}{子图C} \label{fig:subfig_c} \end{minipage} \caption{混合布局示例} \label{fig:mixed} \end{figure}8.2 统一设置子图样式在导言区统一配置子图样式确保全文一致\usepackage{subcaption} \captionsetup[subfigure]{labelfontbf,textfontsmall,skip2pt} \renewcommand{\thesubfigure}{图\arabic{figure}.\alph{subfigure}}8.3 跨页子图处理对于大型子图组可能需要跨页显示\usepackage{caption} \usepackage{subcaption} \usepackage{lipsum} % 仅用于示例文本 \begin{figure}[p] \centering \begin{subfigure}{\textwidth} \centering \includegraphics[width0.8\textwidth]{fig1.jpg} \caption{跨页子图A} \label{fig:continued_a} \end{subfigure} \caption{跨页子图(第一部分)} \label{fig:continued_1} \end{figure} \begin{figure}[p] \ContinuedFloat \centering \begin{subfigure}{\textwidth} \centering \includegraphics[width0.8\textwidth]{fig2.jpg} \caption{跨页子图B} \label{fig:continued_b} \end{subfigure} \caption{跨页子图(第二部分)} \label{fig:continued_2} \end{figure}