You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

双栏LaTeX文档中多图共用单标题的实现方案咨询

你的双栏LaTeX多图共用标题代码分析与优化建议

先说说现有代码存在的合理性问题:

  • 你用\makebox[\paperwidth]包裹子图,在双栏文档里这会让整个图块直接超出单栏宽度(双栏里单栏的标准宽度是\columnwidth,\paperwidth是整个页面的宽度),大概率会导致图片被截断、排版错乱,甚至编译警告。
  • subfigure环境没有指定宽度,现在主流的子图实现(比如依赖subcaption包的subfigure)要求必须明确子图容器的宽度,否则要么编译报错,要么子图布局完全失控。
  • 你把\label直接放在subfigure里却没搭配\subcaption,这样的标签无法正确关联到子图,后续引用子图时会出现引用错误。
  • 滥用[H]选项强制固定图片位置,虽然能把图钉在你想要的地方,但很容易破坏整个文档的排版节奏,比如导致页面留白过多、内容溢出等问题。

接下来是具体的优化方向:

1. 选对跨栏/单栏浮动环境

如果你的图需要跨两栏展示,直接用figure*环境代替普通的figure——它是双栏文档专属的跨栏浮动体,不用再手动用\makebox强行撑宽度:

\begin{figure*}[htbp]
% 子图内容放在这里
\caption{共用标题\label{pic-map}}
\end{figure*}

如果只想在单栏内排列多排子图,就用普通figure环境,但所有宽度设置要基于\columnwidth来调整。

2. 规范使用subfigure环境

确保你在导言区加载了subcaption包(当前LaTeX生态下最主流的子图包),每个subfigure必须指定宽度,同时给子图添加\subcaption和对应的标签:

\begin{subfigure}{0.45\columnwidth}
  \includegraphics[width=\linewidth]{1.jpeg}
  \subcaption{子图1的描述}
  \label{fig:sub1}
\end{subfigure}
\hfill % 让两个子图左右对齐,中间自动留空
\begin{subfigure}{0.45\columnwidth}
  \includegraphics[width=\linewidth]{2.jpeg}
  \subcaption{子图2的描述}
  \label{fig:sub2}
\end{subfigure}

这里用width=\linewidth让图片填满subfigure容器,比固定0.4\paperwidth灵活得多,能自适应不同的栏宽设置。

3. 优化排版细节

  • 多排子图之间可以用\vspace{1em}来增加垂直间距,让整体排版更透气美观。
  • 尽量避免用[H]选项,优先用[htbp]让LaTeX自动选择最佳排版位置,实在需要固定位置时再考虑float包的[H],但不要过度依赖。
  • 如果不需要子标题,也可以不用subfigure,直接用\includegraphics加\hfill排列,但要共用标题的话,所有图片必须放在同一个figure/figure*环境里。

最后给你一个优化后的完整示例:

% 导言区加载必要的包
\usepackage{graphicx}
\usepackage{subcaption}

% 正文里的跨栏多图示例
\begin{figure*}[htbp]
  \centering
  % 第一排子图
  \begin{subfigure}{0.45\textwidth}
    \includegraphics[width=\linewidth]{1.jpeg}
    \subcaption{子图1的描述}
    \label{fig:sub1}
  \end{subfigure}
  \hfill
  \begin{subfigure}{0.45\textwidth}
    \includegraphics[width=\linewidth]{2.jpeg}
    \subcaption{子图2的描述}
    \label{fig:sub2}
  \end{subfigure}
  
  \vspace{1em} % 增加垂直间距
  
  % 第二排子图
  \begin{subfigure}{0.45\textwidth}
    \includegraphics[width=\linewidth]{3.jpeg}
    \subcaption{子图3的描述}
    \label{fig:sub3}
  \end{subfigure}
  \hfill
  \begin{subfigure}{0.45\textwidth}
    \includegraphics[width=\linewidth]{4.jpeg}
    \subcaption{子图4的描述}
    \label{fig:sub4}
  \end{subfigure}
  
  \caption{这是四张图共用的标题\label{pic-map}}
\end{figure*}

如果是单栏内的多图,只需要把figure*换成figure,\textwidth换成\columnwidth即可。

内容的提问来源于stack exchange,提问作者Kam_Chaos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:23:00