卢鹏博
发布于 2025-08-31 / 19 阅读
0
0

LaTeX基础教程(五)—— 插入图片及其交叉引用

在上一节LaTeX基础教程(四)—— 交叉引用 - ME的生活日志中,我们简单提了一下图片的交叉引用,但是没有具体讲述插入图片的代码。因此本节着重讲解一下插入图片的一些操作。

插入单张图片

在插入图片前,需要在导言区加入\usepackage{graphicx}命令,使用graphicx宏包。

基本命令

然后在正文就可以使用下面命令,进行插入图片的操作:

\begin{figure}[htbp]
\centering
\includegraphics{example.png}
\caption{示例图片}
\label{fig:example}
\end{figure}

下面逐行解释代码:

  • \begin{figure}定义图片开始域;htbp表示图片位置自适应,h 代表当前位置,t 代表页面顶部,b 代表页面底部,p 代表浮动页;

  • \centering表示当前图片居中显示;

  • \includegraphics{example.png}表示插入一张名为example,格式为png的图片。当然,也可以插入格式为jpg,svg,pdf,webp,eps等格式图片;另外,该命令有一些可选参数,比如\includegraphics[width=xxx,height=xxx]{image}就能定义图片的长和宽,后面我们具体讲解;

  • \caption{示例图片}定义图片标题;

  • \label{fig:example}为图片(fig)创建一个名为example的标签,以便交叉引用;

  • \end{figure}定义图片结束域。

更改图片大小

使用\includegraphics[width=xxx,height=xxx]{image} 可以定义图片的宽和高。其中xxx可以换为1cm,2em,200px等等。当然,也能改成0.8\textwidth,这种前面是一个数字,后面紧跟着\textwidth的格式,这个意思是,图片设置为页面(文本)宽度的0.8倍。

一个示例:

\documentclass{article}
\usepackage{graphicx}  
\usepackage{ctex}       

\begin{document}

    \begin{figure}[htbp]
        \centering
        \includegraphics[width=0.6\textwidth]{favicon.png}
        \caption{Logo of Mathenthusiast}
        \label{fig:logo}
    \end{figure}
    这是一张Mathenthusiast(ME的生活日志)的logo,它被定义成了0.6倍页面文字宽,高度自适应(保持横纵比)的一张图片。我们可以使用\\includegraphics[width=xxx,height=xxx]命令来定义图片宽和高。

\end{document}

示例输出:

更改图片路径

同样是在\includegraphics[width=xxx,height=xxx]{image} 命令中修改。

我们只需要修改image的路径即可,可以使用绝对路径或相对路径。

  • 绝对路径:文件实际存放路径,如D:/latex/include_figue/figure/example.png

  • 相对路径:以当前tex文件所在文件夹为起点写路径,如example.png/example.png./example.png

需要注意的是,绝对路径和相对路径各有优劣。绝对路径由于写全了路径位置,因此tex文件移动时,也可重新编译,但是image文件移动后,就要重写路径。而相对路径保证了同文件夹下路径的记录,因此只要tex和图片的相对位置没有改变(即使整体被移动甚至上传到其它电脑上),用户仍可成功编译。

插入多张并排图片

有时候,很大的空间仅插入一张图片感觉会非常突兀难看。为了使图片更加美观,我们会将两张,甚至更多图片并排展示。

子图

子图,顾名思义,就是多张图片组合形成一张图,各图片相互关联,共同形成一张大图。

要实现多张图片并排的效果,我们首先需要在导言区使用subfigure宏包,加入\usepackage{subfigure}命令。

然后类似于单张图片命令的代码,实现多图并排:

\begin{figure}[htbp]
\centering
\subfigure[name1]
{
\label{fig_sub1}
\includegraphics[width=0.45\textwidth]{image_1}
}
\subfigure[name2]
{
\label{Fig_sub2}
\includegraphics[width=0.45\textwidth]{image_2}
}
\caption{Main_name} %两张图片合二为一的名字
\label{two_figures}
\end{figure}

示例代码:

\documentclass{article}
\usepackage{graphicx}  
\usepackage{ctex}       
\usepackage{subfigure}
\begin{document}

\begin{figure}[htbp]
    \centering
    \subfigure[name1]
    {
    \label{fig_sub1}
    \includegraphics[width=0.45\textwidth]{favicon.png}
    }
    \subfigure[name2]
    {
    \label{Fig_sub2}
    \includegraphics[width=0.45\textwidth]{icon_pic.png}
    }
    \caption{Mathenthusiast其中两个logo} %两张图片合二为一的名字
    \label{two_figures}
    \end{figure}
    这两张图片都是Mathenthusiast(ME的生活日志)的logo,其中第一张是主logo,在很多地方都有使用,比如网页缩略图,网站首页等。第二张图仅在文章顶部的摘要部分出现的,在摘要部分显示自己的logo。

\end{document}

输出:

tips:在较新的 LaTeX 发行版中,subfigure 已被 subfig 宏包取代。您需要加载 subfig 宏包,并将 \subfigure 命令改为 \subfloat

非子图

如果不想要子图的格式,即想要每个图片互不关联,但是还想并排显示,那我们可以使用minipage环境。

示例代码:

\begin{figure}[htbp]
    \centering
    % 并排几个图,就要写几个minipage

    \begin{minipage}[b]{0.45\textwidth} % 所有minipage宽度之和要小于1,否则会自动变成竖排
        \centering
        \includegraphics[width=0.8\textwidth]{favicon.png} % 使用示例图片
        \caption{name 1}
        \label{Fig1}
    \end{minipage}

    \hfill % 添加水平填充来分隔图片

    \begin{minipage}[b]{0.45\textwidth} % 所有minipage宽度之和要小于1,否则会自动变成竖排
        \centering
        \includegraphics[width=0.8\textwidth]{icon_pic.png} % 使用示例图片
        \caption{name 2}
        \label{Fig2}
    \end{minipage}

\end{figure}

这两张图片都是Mathenthusiast(ME的生活日志)的logo,其中第一张是主logo,在很多地方都有使用,比如网页缩略图,网站首页等。第二张图仅在文章顶部的摘要部分出现的,在摘要部分显示自己的logo。

输出:

子图换行显示

假如我们想要一张图同时显示两行图片,那么我们也可以适当调整一下,实现这个功能。

\begin{figure}[htbp]
    \centering
    % 第一行
    \subfloat[name1]{
    \label{fig_sub1}
    \includegraphics[width=0.45\textwidth]{example-image-a}}
    \hfill
    \subfloat[name2]{
    \label{Fig_sub2}
    \includegraphics[width=0.45\textwidth]{example-image-b}}
    
    % 添加空行分隔两行图片
    \vspace{0.5cm}
    
    % 第二行
    \subfloat[name3]{
    \label{fig_sub3}
    \includegraphics[width=0.45\textwidth]{example-image-c}}
    \hfill
    \subfloat[name4]{
    \label{Fig_sub4}
    \includegraphics[width=0.45\textwidth]{example-image}}
    
    \caption{Mathenthusiast的四个logo} % 四张图片的总标题
    \label{four_figures}
\end{figure}

示例(以subfig为例):

\documentclass{article}
\usepackage{graphicx}  
\usepackage{ctex}       
\usepackage{subfig} % 使用 subfig 宏包替代 subfigure
\begin{document}

\begin{figure}[htbp]
    \centering
    % 第一行
    \subfloat[name1]{
    \label{fig_sub1}
    \includegraphics[width=0.45\textwidth]{favicon.png}}
    \hfill
    \subfloat[name2]{
    \label{Fig_sub2}
    \includegraphics[width=0.45\textwidth]{icon_pic.png}}
    
    % 添加空行分隔两行图片
    \vspace{0.5cm}
    
    % 第二行
    \subfloat[name3]{
    \label{fig_sub3}
    \includegraphics[width=0.9\textwidth]{Mathenthusiast.png}}
    \caption{Mathenthusiast的三个logo} % 四张图片的总标题
    \label{three_figures}
\end{figure}

这三张图片都是Mathenthusiast(ME的生活日志)的logo,其中第一张是主logo,在很多地方都有使用,比如网页缩略图,网站首页等。第二张图仅在文章顶部的摘要部分出现的,在摘要部分显示自己的logo。
第三张图是很久之前(2019年左右)制作的静态网页,那时候使用厂商的页面托管,用ftp管理自己的网页。

\end{document}

输出:

交叉引用

在插入图片后,可以对图片进行交叉引用。插入图片时,如果使用了\label标签,那我们就可以用\ref命令引用。

示例:

\documentclass{article}
\usepackage{graphicx}  
\usepackage{ctex}       
\usepackage{subfig} % 使用 subfig 宏包替代 subfigure
\begin{document}

\begin{figure}[htbp]
    \centering
    % 第一行
    \subfloat[name1]{
    \label{fig_sub1}
    \includegraphics[width=0.45\textwidth]{favicon.png}}
    \hfill
    \subfloat[name2]{
    \label{fig_sub2}
    \includegraphics[width=0.45\textwidth]{icon_pic.png}}
    
    % 添加空行分隔两行图片
    \vspace{0.5cm}
    
    % 第二行
    \subfloat[name3]{
    \label{fig_sub3}
    \includegraphics[width=0.9\textwidth]{Mathenthusiast.png}}
    \caption{Mathenthusiast的三个logo} % 四张图片的总标题
    \label{three_figures}
\end{figure}

这三张图片都是Mathenthusiast(ME的生活日志)的logo,其中图\ref{fig_sub1}是主logo,在很多地方都有使用,比如网页缩略图,网站首页等。图\ref{fig_sub2}仅在文章顶部的摘要部分出现的,在摘要部分显示自己的logo。
图\ref{fig_sub3}是很久之前(2019年左右)制作的静态网页,那时候使用厂商的页面托管,用ftp管理自己的网页。图\ref{three_figures}\ref{sub@fig_sub1},\ref{three_figures}\ref{sub@fig_sub2}和\ref{three_figures}\ref{sub@fig_sub3}都是图\ref{three_figures}的子图。

\end{document}

输出:

使用\ref{图片名称}可以直接引用各个子图,但没有括号(不美观)。使用\ref{sub@子图名称}可以单独引用带括号的字图。使用\ref{three_figures}\ref{sub@fig_sub1}可以显示图1(a)格式的引用。


上一节:LaTeX基础教程(四)—— 交叉引用 - ME的生活日志


评论