$\LaTeX{}$之图片使用
本文介绍了在 \(\LaTeX{}\) 中插入图片的基本语法和一些常用的技巧,并且给出了一些在排版中常用的模板样例。
基本语法
\(\LaTeX{}\) 本身不支持插图功能,需要由 graphicx
宏包辅助支持。
使用 \(\textrm{latex + dvipdfmx}\) 编译命令时,调用 graphicx
宏包时要指定 \(\textrm{dvipdfmx}\) 选项;而使用 \(\textrm{pdflatex}\) 或 \(\textrm{xelatex}\) 命令编译时不需要。
不同编译命令支持的图片格式种类各异,见下表。这个表格也能解答诸如“为什么 \(\textrm{.eps}\) 格式图片在 \(\textrm{pdflatex}\) 编译命令下出错”之类的问题。本表格也再一次说明,使用 \(\textrm{xelatex}\) 命令是最推荐的方式。

在调用了 graphicx
宏包以后,就可以使用 \includegraphics
命令加载图片了:
\includegraphics[⟨options⟩]{⟨filename⟩}
其中 <filename>
为图片文件名,文件名可能需要用相对路径或绝对路径表示。图片文件的扩展名一般可不写。另外一定要注意,
文件名里既不要有空格也不要有多余的英文点号
,否则宏包在解析文件名的过程中会出错。另外
graphicx
宏包还提供了 graphicspath
命令,用于声明一个或多个图片文件存放的目录
,使用这些目录里的图片时可不用写路径: % 假设主要的图片放在 figures 子目录下,标志放在 logo 子目录下 \graphicspath{{figures/}{logo/}}
在 \includegraphics
命令的可选参数 <options>
中可以使用 <key> = <value>
的形式,常用的参数如下:

graphicx
宏包也支持 \(\textrm{draft}\)/\(\textrm{final}\) 选项。当 graphicx
宏包或文档类指定 \(\textrm{draft}\) 选项时,图片将不会被实际插入,取而代之的是一个包含文件名的与原图片等大的方框。(
加快编译过程
)并排和子图表
时常有在一个浮动体里面放置多张图的用法。最简单的用法就是直接并排放置,也可以通过分段或者换行命令 \\
排版多行多列的图片。以下为示意代码,效果大致如图所示。
\begin{figure}[htbp] \centering \includegraphics[width=...]{...} \qquad \includegraphics[width=...]{...} \\[...pt] \includegraphics[width=...]{...} \caption{...} \end{figure}

由于标题是横跨一行的,用 \caption
命令为每个图片单独生成标题就需要借助前文提到的 parbox
或者 \(\textrm{minipage}\) 环境,将标题限制在盒子内。效果见图所示。
\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
宏包的帮助文档。
\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
命令实现,具体请参考宏包文档。
示例模板
并排子图
% \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}

上一下二
% \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}

边注旋转加图片
% \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}
