在上一节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的生活日志