Latex在同一figure中排版多张图片的方法

news/2024/10/31 1:34:08/

Latex在同一figure中排版多张图片的方法

主要使用了minipage(子图)语法。minipage可以嵌套,子图还可以分解为更多子图,功能很好玩,无聊可以自己试试。下面介绍几种常用效果的实现方法。

并排显示两张图,并分别标记

\begin{figure}[thbp!]\centering\begin{minipage}[t]{0.49\linewidth}\centering\includegraphics[width=0.9\linewidth]{figure/opencv-logo.png}\caption{OpenCV的logo}\label{fig:opencv_logo}\end{minipage}\begin{minipage}[t]{0.49\linewidth}\centering\includegraphics[width=0.9\linewidth]{figure/gdalicon_big.png}\caption{GDAL的logo}\label{fig:gdal_logo}\end{minipage}\end{figure}

上述代码的结果为:
在这里插入图片描述
特别需要注意的是,第一个minipage的宽度和第二个minipage的宽度之和不能超过1。如果超过一,则会自动变成垂直排列,如下图所示:

\begin{figure}[thbp!]\centering\begin{minipage}[t]{0.49\linewidth}% 注意!0.49\centering\includegraphics[width=0.9\linewidth]{figure/opencv-logo.png}\caption{OpenCV的logo}\label{fig:opencv_logo}\end{minipage}\begin{minipage}[t]{0.59\linewidth}% 注意!0.49+上面的0.59>1,导致自动重排版\centering\includegraphics[width=0.9\linewidth]{figure/gdalicon_big.png}\caption{GDAL的logo}\label{fig:gdal_logo}\end{minipage}\end{figure}

在这里插入图片描述

并排显示两张图,并只作一个标记\label

尝试下面的代码,figure/opencv-logo、figure/gdalicon_big为两张图片的相对路径,表示figure文件夹下的opencv-logo.png、gdalicon_big.png两张图片。则将其并排显示且整体标记的代码如下:

\begin{figure}[thbp!]\centering\begin{minipage}[t]{0.49\linewidth}\centering\includegraphics[width=0.9\linewidth]{figure/opencv-logo}%\caption{第1个子图标题}\end{minipage}\begin{minipage}[t]{0.49\linewidth}\centering\includegraphics[width=0.9\linewidth]{figure/gdalicon_big}%\caption{第2个子图标题}\end{minipage}\caption{并排安放两张图}\label{fig:image_group}\end{figure}

语法与上一节的类似,不同之处在于,对每个minipage都不使用\caption\label,以免将其编号。
在这里插入图片描述

注意,如果在minipage包含的图片中也使用了\caption命令,则也会将minipage子图编号,如下图所示:

\begin{figure}[thbp!]\centering\begin{minipage}[t]{0.49\linewidth}\centering\includegraphics[width=0.9\linewidth]{figure/opencv-logo.png}\caption{OpenCV的logo}\end{minipage}\begin{minipage}[t]{0.49\linewidth}\centering\includegraphics[width=0.9\linewidth]{figure/gdalicon_big.png}\caption{GDAL的logo}\end{minipage}\caption{并排安放两张图}\label{fig:image_group}\end{figure}

在这里插入图片描述

那么,如何做到既标记子图,又不编号呢?

为子图增加说明文字,但不编号

实现这个效果需要用到tabular包。

\begin{figure}[thbp!]\centering\begin{tabular}{@{\extracolsep{\fill}}c@{}c@{\extracolsep{\fill}}}\includegraphics[width=0.5\linewidth]{figure/opencv-logo.png} &\includegraphics[width=0.5\linewidth]{figure/gdalicon_big.png}\\(a)OpenCV的logo & (b)GDAL的logo\\\end{tabular}\caption{并排,但不标记子图}\label{fig:image_with_table}\end{figure}

figure中嵌套一个两行两列表格,然后将两张图片插入第一行,两张图片的描述文字插入第二行,最后将整个figure作一次标签。效果如下所示:
在这里插入图片描述

另一个例子,将6张图片按321排版:

\begin{figure}[thbp!]\centering\begin{minipage}[t]{1.0\linewidth}\centering\begin{tabular}{@{\extracolsep{\fill}}c@{}c@{}c@{}@{\extracolsep{\fill}}}\includegraphics[width=0.33\linewidth]{figure/opencv-logo} &\includegraphics[width=0.33\linewidth]{figure/gdalicon_big}&\includegraphics[width=0.33\linewidth]{figure/eigen_logo}\\(a)OpenCV的logo & (b)GDAL的logo & (c)Eigen的logo\\\end{tabular}\end{minipage}\begin{minipage}[t]{1.0\linewidth}\centering\begin{tabular}{@{\extracolsep{\fill}}c@{}c@{}@{\extracolsep{\fill}}}\includegraphics[width=0.33\linewidth]{figure/vtk_logo} &\includegraphics[width=0.33\linewidth]{figure/qt}\\(d)vtk的logo & (e)Qt的logo\\\end{tabular}\end{minipage}\begin{minipage}[t]{1.0\linewidth}\centering\begin{tabular}{@{\extracolsep{\fill}}c@{}@{\extracolsep{\fill}}}\includegraphics[width=0.33\linewidth]{figure/vcpkg_logo}\\(f)vcpkg的logo\\\end{tabular}\end{minipage}\caption{3行,每行子图数不同,子图不编号}\label{fig:image_with_table_321}\end{figure}

代码中使用了3个minipage来分别完成3行图片的设置;每个minipage内嵌一个tabular来实现当前行子图的文字说明(不标记);每个tabular的行数为2,第一行为子图、第二行为说明文字,列数为该行的子图数。
效果如下:

在这里插入图片描述


http://www.ppmy.cn/news/98701.html

相关文章

【JVM】12. 垃圾回收相关概念

文章目录 12.1. System.gc()的理解12.2. 内存溢出与内存泄露内存溢出(OOM)内存泄漏(Memory Leak) 12.3. Stop The World12.4. 垃圾回收的并行与并发并发(Concurrent)并行(Parallel)并…

Dubbo环境搭建

1.搭建zookeeper注册中心环境 zookeeper下载地址 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6ptMw7rb-1685261782669)(b894c0cbb6501ca97145d3b09685ae8f.png)] 在bin文件下,启动zkServer.cmd会有报错,处理需要在condi…

Redis相关

Redis基本概念 一、Redis的持久化方式二、Redis的单机、主从、哨兵、集群Redis主从复制的原理 三、Redis分布式锁的实现四、缓存穿透 击穿 雪崩 一、Redis的持久化方式 1)RDB方式 2)AOF方式 二、Redis的单机、主从、哨兵、集群 单机的问题&#xf…

Java-期末复习

本学期讲java课,进程截止到IO流线程那部分 有题库当然用题库了 顺手自己写一下代码复习一下 判断题 判断题凡是 x(√)或者√(x)这种,建议按第一个写,对应有解释 1.构造方法定义返回值类型时&…

如何在 ubuntu 下安装英伟达 GPU 的驱动程序?

在 Ubuntu 下安装 NVIDIA GPU 驱动程序的方法如下: 打开终端,并检查您的 GPU 型号:lspci | grep -i nvidia。如果您已经知道您的 GPU 型号,可以跳过此步。 添加 NVIDIA 的软件源。 首先,确认您的系统已经安装了 Secur…

服务运营 | 精选:运筹学在疾病检测(Optimal Screening)中的应用

推文作者:Guo 编者按 2022年的 INFORMS Pierskalla Award 授予在运筹学在疾病筛查方面的应用研究, 本期我们重点推荐四篇关于运筹学与疾病筛查的相关文章,进一步了解这一领域。 (一) Efficient and targeted COVID-19…

【数据结构】--单链表力扣面试题⑤链表分割

目录 一、有相对顺序的链表分割 二、无相对顺序的链表分割 一、有相对顺序的链表分割 题述&#xff1a;现有一链表的头指针ListNode* phead,给一定值x,编写一段代码将所有<x的结点排在其余结点之前&#xff0c;且不能改变原来的数据顺序&#xff0c;返回重新排序后的链表的…

【Java校招面试】实战面经(十)

目录 前言一、TCP报头中都有什么,UDP报头中都有什么?二、单例模式的各种实现三、非静态内部类持有外部类的引用造成内存泄露的问题四、JDBC、Tomcat为什么要破坏双亲委派模型?五、如何快速判断某 URL 是否在 20 亿的网址 URL 集合中?六、B extends A时,类中的代码加载关系…