$\LaTeX{}$之图片使用

本文介绍了在 \(\LaTeX{}\) 中插入图片的基本语法和一些常用的技巧,并且给出了一些在排版中常用的模板样例。


基本语法

\(\LaTeX{}\) 本身不支持插图功能,需要由 graphicx 宏包辅助支持。

使用 \(\textrm{latex + dvipdfmx}\) 编译命令时,调用 graphicx 宏包时要指定 \(\textrm{dvipdfmx}\) 选项;而使用 \(\textrm{pdflatex}\) 或 \(\textrm{xelatex}\) 命令编译时不需要。

不同编译命令支持的图片格式种类各异,见下表。这个表格也能解答诸如"为什么 \(\textrm{.eps}\) 格式图片在 \(\textrm{pdflatex}\) 编译命令下出错"之类的问题。本表格也再一次说明,使用 \(\textrm{xelatex}\) 命令是最推荐的方式。

在调用了 graphicx 宏包以后,就可以使用 \includegraphics 命令加载图片了:

latex 复制代码
\includegraphics[⟨options⟩]{⟨filename⟩}

其中 <filename> 为图片文件名,文件名可能需要用相对路径或绝对路径表示。图片文件的扩展名一般可不写。另外一定要注意,文件名里既不要有空格也不要有多余的英文点号,否则宏包在解析文件名的过程中会出错。

另外 graphicx 宏包还提供了 graphicspath 命令,用于声明一个或多个图片文件存放的目录,使用这些目录里的图片时可不用写路径:

latex 复制代码
% 假设主要的图片放在 figures 子目录下,标志放在 logo 子目录下
\graphicspath{{figures/}{logo/}}

\includegraphics 命令的可选参数 <options>中可以使用 <key> = <value> 的形式,常用的参数如下:

graphicx 宏包也支持 \(\textrm{draft}\)/\(\textrm{final}\) 选项。当 graphicx 宏包或文档类指定 \(\textrm{draft}\) 选项时,图片将不会被实际插入,取而代之的是一个包含文件名的与原图片等大的方框。(加快编译过程)


并排和子图表

时常有在一个浮动体里面放置多张图的用法。最简单的用法就是直接并排放置,也可以通过分段或者换行命令 \\ 排版多行多列的图片。以下为示意代码,效果大致如图所示。

latex 复制代码
\begin{figure}[htbp]
  \centering
  \includegraphics[width=...]{...}
  \qquad
  \includegraphics[width=...]{...} \\[...pt]
  \includegraphics[width=...]{...}
  \caption{...}
\end{figure}

由于标题是横跨一行的,用 \caption 命令为每个图片单独生成标题就需要借助前文提到的 parbox 或者 \(\textrm{minipage}\) 环境,将标题限制在盒子内。效果见图所示。

latex 复制代码
\begin{figure}[htbp]
  \centering
  \begin{minipage}{...}
    \centering
    \includegraphics[width=...]{...}
    \caption{...}
  \end{minipage}
  \qquad
  \begin{minipage}{...}
    \centering
    \includegraphics[width=...]{...}
    \caption{...}
  \end{minipage}
\end{figure}

当需要更进一步,给每个图片定义小标题时,就要用到 subcaption 宏包的功能了。这里仅举一例,效果见图。更详细的用法请参考 subcaption 宏包的帮助文档。

latex 复制代码
\begin{figure}[htbp]
  \centering
  \begin{subfigure}{...}
    \centering
    \includegraphics[width=...]{...}
    \caption{...}
  \end{subfigure}
  \qquad
  \begin{subfigure}{...}
    \centering
    \includegraphics[width=...]{...}
    \caption{...}
  \end{subfigure}
\end{figure}

subcaption 依赖上文提到过的 caption 宏包,因此也支持子图表标题样式的定制。并排子图表的功能也可通过 subfig 宏包的 subfloat 命令实现,具体请参考宏包文档。


示例模板

并排子图

latex 复制代码
% \usepackage{graphicx}
% \usepackage{subcaption}
% \usepackage{float}
\begin{figure}[H]
    \centering
    % 第一行:2个子图
    \begin{subfigure}[b]{0.48\textwidth}
        \includegraphics[width=\linewidth]{tree}
        \caption{子图1}
    \end{subfigure}
    \hfill % 填充水平间距
    \begin{subfigure}[b]{0.48\textwidth}
        \includegraphics[width=\linewidth]{tree}
        \caption{子图2}
    \end{subfigure}

    % 第二行:2个子图
    \begin{subfigure}[b]{0.48\textwidth}
        \includegraphics[width=\linewidth]{tree}
        \caption{子图3}
    \end{subfigure}
    \hfill
    \begin{subfigure}[b]{0.48\textwidth}
        \includegraphics[width=\linewidth]{tree}
        \caption{子图4}
    \end{subfigure}

    % 第三行:单独居中的子图
    % \vspace{0.5cm} % 调整垂直间距
    \centering
    \begin{subfigure}[c]{0.48\textwidth}
        \includegraphics[width=\linewidth]{tree}
        \caption{子图5}
    \end{subfigure}

    \caption{整体标题}
    \label{fig:my_figure}
\end{figure}

上一下二

latex 复制代码
% \usepackage{graphicx}
% \usepackage{subcaption}
% \usepackage{float}
\begin{figure}[H]
    \centering
	\begin{subfigure}[b]{0.8\textwidth}
    \includegraphics[width=\linewidth]{tree}
    \caption{Diagram.}\label{fig:1a}
    \end{subfigure}
    %\vspace{0.5cm} % 调整垂直间距
    \begin{subfigure}[b]{0.48\textwidth}
    \includegraphics[width=\linewidth]{tree}
    \caption{Grid.}\label{fig:1b}
    \end{subfigure}
    \hfill
    \begin{subfigure}[b]{0.48\textwidth}
    \includegraphics[width=\linewidth]{tree}
    \caption{Arrangement.}\label{fig:1c}
    \end{subfigure}
    \caption{Structural.}
    \label{fig:1}
\end{figure}

边注旋转加图片

latex 复制代码
% \usepackage{graphicx}
% \usepackage{subcaption}
% \usepackage{float}
\begin{figure}[H]
		\centering
		% 三行四列子图布局
		\begin{tabular}{rcccc}
			% 第一行
			\rotatebox{90}{10dB} &
			\begin{subfigure}[c]{0.23\textwidth}
				\centering
				\includegraphics[width=\linewidth]{tree} % 替换为你的图片
				%\caption{子图1}
				\label{fig:sub1}
			\end{subfigure} &
			\begin{subfigure}[c]{0.23\textwidth}
				\centering
				\includegraphics[width=\linewidth]{tree}
				%\caption{子图2}
				\label{fig:sub2}
			\end{subfigure} &
			\begin{subfigure}[c]{0.23\textwidth}
				\centering
				\includegraphics[width=\linewidth]{tree}
				%\caption{子图3}
				\label{fig:sub3}
			\end{subfigure} &
			\begin{subfigure}[c]{0.23\textwidth}
				\centering
				\includegraphics[width=\linewidth]{tree}
				%\caption{子图4}
				\label{fig:sub4}
			\end{subfigure} \\
			
			% 第二行
			\rotatebox{90}{10dB} &
			\begin{subfigure}[c]{0.23\textwidth}
				\centering
				\includegraphics[width=\linewidth]{tree}
				%\caption{子图5}
				\label{fig:sub5}
			\end{subfigure} &
			\begin{subfigure}[c]{0.23\textwidth}
				\centering
				\includegraphics[width=\linewidth]{tree}
				%\caption{子图6}
				\label{fig:sub6}
			\end{subfigure} &
			\begin{subfigure}[c]{0.23\textwidth}
				\centering
				\includegraphics[width=\linewidth]{tree}
				%\caption{子图7}
				\label{fig:sub7}
			\end{subfigure} &
			\begin{subfigure}[c]{0.23\textwidth}
				\centering
				\includegraphics[width=\linewidth]{tree}
				%\caption{子图8}
				\label{fig:sub8}
			\end{subfigure} \\
			
			% 第三行
			\rotatebox{90}{10dB} &
			\begin{subfigure}[c]{0.23\textwidth}
				\centering
				\includegraphics[width=\linewidth]{tree}
				\caption{a}
				\label{fig:sub9}
			\end{subfigure} &
			\begin{subfigure}[c]{0.23\textwidth}
				\centering
				\includegraphics[width=\linewidth]{tree}
				\caption{b}
				\label{fig:sub10}
			\end{subfigure} &
			\begin{subfigure}[c]{0.23\textwidth}
				\centering
				\includegraphics[width=\linewidth]{tree}
				\caption{c}
				\label{fig:sub11}
			\end{subfigure} &
			\begin{subfigure}[c]{0.23\textwidth}
				\centering
				\includegraphics[width=\linewidth]{tree}
				\caption{d}
				\label{fig:sub12}
			\end{subfigure}
		\end{tabular}
		\caption{边注旋转加图片}
		\label{fig:grid}
\end{figure}
相关推荐
Time_Memory_cici1 天前
WinEdt编译tex文件失败解决办法
latex
喝凉白开都长肉的大胖子1 个月前
latex中“itemize”
latex
cxylay1 个月前
LaTeX(排版系统)Texlive(环境)Vscode(编辑器)环境配置与安装
ide·vscode·编辑器·latex·texlive
米饭的白色1 个月前
vscode/trae 的 settings.json 中配置 latex 的一些记录
vscode·json·latex
Chensf20211 个月前
用latex+vscode+ctex写毕业论文
vscode·论文·latex·ctex
nlp研究牲1 个月前
latex中既控制列内容位置又控制列宽,使用>{\centering\arraybackslash}p{0.85cm}
服务器·前端·人工智能·算法·latex
山登绝顶我为峰 3(^v^)32 个月前
如何录制带备注的演示文稿(LaTex Beamer + Pympress)
c++·线性代数·算法·计算机·密码学·音视频·latex
秋窗72 个月前
Mac 部署Latex OCR并优化体验(打包成App并支持全局快捷键)
macos·ocr·latex
八一考研数学竞赛3 个月前
第十七届全国大学生数学竞赛初赛模拟试题
学习·数学·latex·全国大学生数学竞赛