1 基本语法

常用选项[htbp]是浮动格式(参考《LaTeX2e插图指南》16.2节和《Ishort》3.9节):

  • 『h』当前位置。将图形放置在正文文本中给出该图形环境的地方。如果本页所剩的页面不够,这一参数将不起作用。
  • 『t』顶部。将图形放置在页面的顶部。
  • 『b』底部。将图形放置在页面的底部。
  • 『p』浮动页。将图形放置在一只允许有浮动对象的页面上。
  • 『!』 在决定位置时忽视限制

在table或者figure 后加 [!htb] 是系统忽略“美学”标准,把表格和图片插入到你的代码中,是动的,但是不加感叹号,它就是按顺序选择h(此处),t(上方),b(下方),所以为了让图片随着你的代码移动,最好加一个[!htb]
其他网友解释:“LaTeX对每个位置的浮动体的总数和占用大小有一定限制,超出限制的浮动体会被排在较后的页面中,但可以在位置选项中增加一个!符号,来忽略这些参数限制。因此,在LaTeX中最宽松的浮动体位置就是[!htbp]。在位置选项中加上!号将使浮动体相对更靠近文字或靠前出现。”

注1:排版位置的选取与参数里符号的顺序无关,LATEX 总是以h-t-b-p 的优先级顺序决定浮动体位置。
也就是说[!htp] 和[ph!t] 没有区别。
注2:限制包括浮动体个数(除单独成页外,默认每页不超过3 个浮动体,其中顶部不超过2 个,底部不
超过1 个)以及浮动体空间占页面的百分比(默认顶部不超过70%,底部不超过30%)。

\begin{figure}[htb]
    \centering
    \includegraphics[width=7.8cm]{figures/aaa.pdf}
    \caption{aaa}
    \label{fig:aaa}
\end{figure}

控制图片宽度的不同写法

\includegraphics[width=7.8cm]{figures/aaa.pdf}
\includegraphics[width=.5\textwidth]{figures/aaa.pdf}

2 多图并排

参考《Ishort》的“3.9.2 并排和子图表”。

2.1 直接排放共用一个主标题

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

\begin{figure}[htbp]
\centering
\includegraphics[width=...]{...}
\qquad
\includegraphics[width=...]{...} \\[..pt]   % 这里换行后的[..pt]可以设置换行的宽度
\includegraphics[width=...]{...}
\caption{...}
\end{figure}

在这里插入图片描述

2.2 并排各自有其标题

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

\begin{figure}[htbp]
\centering
\begin{minipage}{...}   % minipage后定义页面宽度,如60pt
\centering
\includegraphics[width=...]{...}
\caption{...}
\end{minipage}
\qquad
\begin{minipage}{...}
\centering
\includegraphics[width=...]{...}
\caption{...}
\end{minipage}
\end{figure}

在这里插入图片描述

2.3 主标题下每张子图各有小标题

2.3.1 subfig包下的subfloat环境

参考《Ishort》的“3.9.2 并排和子图表”
当我们需要更进一步,给每个图片定义小标题时,就要用到subfig 宏包的功能了。这里仅举
一例。更详细的用法请参考subfig 宏包的帮助文档。

1、简单示例

\begin{figure}[htbp]
\centering
\subfloat[]{
\centering
\label{fig:subfig_a}
\includegraphics[width=7.5 cm]{picture.jpg}}
\hspace{10pt}%
\subfloat[]{
\centering
\label{fig:subfig_b}
\includegraphics[width=7.5 cm]{picture.jpg}}
\caption{Title}
\label{fig:subfig}
\end{figure}

2、结合minipage防止标题折行
当子图小标题较长时可能出现折行,此时可插入minipage
参考包太雷《lnotes-v2.66》5.2.6节

\begin{figure}[htbp]
\centering
\subfloat[subtitle-1]{\label{sub-fig-1}   % 为子图加交叉引用
\begin{minipage}{...}      % minipage后定义页面宽度,如60pt
\centering
\includegraphics[width=...]{picture.jpg}
\end{minipage}
}
\qquad
\subfloat[subtitle-2]{%
\begin{minipage}{...}
\centering
\includegraphics[width=...]{picture.jpg}
\end{minipage}
}
\caption{...}
\end{figure}

在这里插入图片描述

2.3.2 subcaption包下的subfigure环境

需要注意的是,subcaption和subfig两个宏包似乎冲突,不能同时使用
使用样例如下:
1、使用样例-1:通过subfigure添加

\begin{figure}[htbp]
  \centering
  \begin{subfigure}[b]{0.4\textwidth}
    \centering
    \includegraphics[width=\textwidth]{figure.pdf}
    \caption{a}
    \label{fig:subfig1}
  \end{subfigure}
  \hspace{0.5cm}
  \begin{subfigure}[b]{0.4\textwidth}
    \centering
    \includegraphics[width=\textwidth]{figure.pdf}
    \caption{b}
    \label{fig:subfig2}
  \end{subfigure}
  \caption{Title}
  \label{fig:side-by-side}
\end{figure}

2、使用样例-2:使用subcationbox添加
参考链接:https://www.zhihu.com/question/544368943/answer/2585548337

\documentclass{article}
\usepackage{graphicx, subcaption}

\begin{document}
    \begin{figure}[htbp]
        \centering
        \subcaptionbox{A}{
        \includegraphics[width = .3\linewidth]{figures/example-image-a.pdf}
    }
        \subcaptionbox{B}{
        \centering
        \includegraphics[width = .3\linewidth]{figures/example-image-b.pdf}
    }
        \subcaptionbox{C}{
        \includegraphics[width = .3\linewidth]{figures/example-image-c.pdf}
    }
        \caption{TEST}
    \end{figure}
\end{document}

2.4 零散问题

2.4.1 标题左右对齐与居中对齐

上面添加标题都是默认居中对齐,但是在有的模板中(如MDPI的模板)设置了全局标题左对齐,所以会出现子标题也左对齐的情况。但我们想要实现的效果是子标题在子图的正下方居中对齐,此时的解决方案如下。

如果正在使用subfig宏包,可以在导言区或者具体的figure环境中使用以下命令来设置子标题居中对齐:

\captionsetup[subfloat]{justification=centering}

如果正在使用subcaption宏包,可以在导言区或者具体的figure环境中使用以下命令来设置子标题居中对齐:

\captionsetup[sub]{justification=centering}

其中的 subfloat 和 sub 参数表示设置仅应用于子图和子表的标题。这是一种局部设置,只影响 \subfigure、\subtable 或类似环境的标题。
subfloat环境下的使用示例如下

\begin{figure}[htbp]
\captionsetup[subfloat]{justification=centering}
\centering
\subfloat[]{
\centering
\label{fig:subfig_a}
\includegraphics[width=7.5 cm]{figure.pdf}}
\hspace{10pt}%
\subfloat[]{
\centering
\label{fig:subfig_b}
\includegraphics[width=7.5 cm]{figure.pdf}}
\caption{Title}
\label{fig:subfig}
\end{figure}

那如果是想要实现该图表环境中的子标题和主标题都居中对齐,那么设置方式为

\begin{figure}[htbp]
\centering
\captionsetup{justification=centering}
% 插入图片和子图
\caption{Main figure caption}
\label{fig:main}
\end{figure}

2.4.2 修改默认子图编号样式

默认的子表编号是(a)(b)©,一般不需要修改,如果一定要修改可参考
latex 画图子图排布、编号
采用的方式是

\setcounter {subfigure} {0} a)

插入图片占位符

参考链接:https://blog.csdn.net/yq_forever/article/details/129431799
在论文草稿阶段有的时候想先插入图片占位符拟定大纲或写作思路,可以使用以下命令(overleaf可用)

\begin{figure}[htbp]
\includegraphics[width=3 cm]{example-image-a}
\includegraphics[width=3cm]{example-image-golden} % 黄金比例
\includegraphics[width=3cm]{example-grid-100x100pt}\\ % 设置大小
\includegraphics[width=3cm]{example-image} % 只写个image
\includegraphics[width=3cm]{example-image-duck} % 一只可爱的小鸭子. 用多次每次的鸭子都不一样
\caption{title.}
\label{}
\end{figure} 

显示效果如下
在这里插入图片描述

设置图片大小

在LaTeX中,有几种方式可以设置插入图片的大小。以下是其中几种常用的方法:

  1. 使用widthheight参数:可以在\includegraphics命令中使用widthheight参数来设置图片的宽度和高度。例如:

    \includegraphics[width=5cm,height=3cm]{image}
    

    这样会将图片的宽度设置为5cm,高度设置为3cm。你可以根据需要调整具体的尺寸值。

  2. 使用scale参数:可以使用scale参数来按比例缩放图片的大小。例如:

    \includegraphics[scale=0.5]{image}
    

    这样会将图片的大小缩放为原来的50%。

  3. 使用相对单位:可以使用相对单位,如\textwidth\linewidth\columnwidth等,来相对于页面、行宽或列宽设置图片的大小。例如:

    \includegraphics[width=0.8\textwidth]{image}
    

    这样会将图片的宽度设置为页面宽度的80%。

  4. 使用adjustbox宏包【方法尚未验证】:adjustbox宏包提供了更灵活的图片调整和缩放功能。你可以使用\adjustbox命令包裹\includegraphics命令,并使用其中的选项来设置图片的大小、缩放和对齐等。例如:

    \usepackage{adjustbox}
    ...
    \begin{figure}[htbp]
      \centering
      \adjustbox{width=5cm,height=3cm,keepaspectratio}{\includegraphics{image}}
      \caption{插入图片}
      \label{fig:insert-image}
    \end{figure}
    

    在上面的示例中,我们使用adjustbox宏包的widthheight选项来设置图片的大小,并使用keepaspectratio选项保持宽高比。

其他问题

1、\centerline和\centering有什么区别?

先说结论,平时插入图片就用 \centering 就可以了。

\centerline是一个命令,可以将图片居中放置,并且在该命令后面的所有内容也会居中对齐。示例如下:

\begin{figure}[htbp]
\centerline{\includegraphics[width=.45\textwidth]{Figures/Curve.pdf}}
\caption{curve}
\label{fig:Curve}
\end{figure}

\center是一个环境,可以将图片居中放置,并且在该环境内所有的内容也会居中对齐。它的语法结构如下:

\begin{center}
    \includegraphics[参数]{图片文件名}
\end{center}

(以下回答内容来自ChatGPT-3.5,未验证是否准确)

在 LaTeX 中,\begin{center}\centerline\centering 都可以用来居中对齐文本或图形,但它们有一些区别。

  • \begin{center}\end{center} 是一个环境,它将环境内的所有内容居中对齐。这意味着你可以在环境中包含多行文本或多个图形,并且它们将被一起居中对齐。当你在这个环境中输入文本或插入图形时,它们都将在页面的中心对齐,而不是默认左对齐。这个环境可以用在 LaTeX 文档中的任何地方,例如在标题、段落或图片等元素周围,以实现居中对齐的效果。
  • \centerline 是一个命令,它只能用于单行文本或图形。它将给定的文本或图形居中对齐,忽略行末的换行符。
  • \centering 是一个命令,它将当前段落中的所有文本居中对齐。它不像 \begin{center} 那样创建一个新的环境,也不像 \centerline 那样只针对单个元素,而是影响当前段落中的所有内容。如果你只想居中对齐一行文本,可以使用 \centering 命令,并在行末使用双反斜杠 \\ 来结束该行

在《Ishort》的“3.5.2 对齐环境”中有这样一段话

center 等环境会在上下文产生一个额外间距,而\centering 等命令不产生,只是改变对齐方式。比如在浮动体环境table或figure 内实现居中对齐,用\centering 命令即可,没必要再用center 环境。

但是自己在\begin{figure}中套用了\begin{center}似乎也没看出什么区别。

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐