> For the complete documentation index, see [llms.txt](https://overleaf-pro.ayaka.space/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://overleaf-pro.ayaka.space/latex/zh-cn/geng-duo-zhu-ti/27-inserting-images.md).

# 插入图片

## 在 Overleaf 中插入图片的四种方法（创建 LaTeX 图形）

选项如下：

1. 使用 [**插入图形** 按钮](https://learn.overleaf.com/learn/Kb/How_to_insert_figures_in_Overleaf#Using_Insert_Figure_to_add_a_figure_to_your_project)(![The Insert Figure button on the editor toolbar](/files/fadba5f0c0afa0cc0db889566e193b156d7724cf)），位于编辑器工具栏中，用于将图形插入到 **可视化编辑器** 或 **代码编辑器**.
2. [复制并粘贴图像](/latex/zh-cn/zhi-shi-ku/075-how-to-paste-formatted-content-into-overleaf.md#pasting-images-into-your-overleaf-project) 到 **可视化编辑器** 或 **代码编辑器**.
3. 你可以使用拖放来创建图形。从你的本地文件系统中选择一个文件，或从已上传到 Overleaf 项目中的文件中选择一个，然后将其拖放到 **可视化编辑器** 或 **代码编辑器**。Overleaf 会显示一个窗口，其中包含自定义图形设置的选项。
4. 使用 **代码编辑器** 编写插入图形并将其放入 figure 环境中的 LaTeX 代码。

选项 1、2 和 3 会自动生成创建图形所需的 LaTeX 代码，但这里我们将介绍选项 4，它提供了最大的灵活性。

## 引言

在本文中，我们将解释如何包含最常见格式的图片，如何缩小、放大和旋转它们，以及如何在文档中引用它们。我们将从一个示例开始，演示如何导入一张图片。

```latex
\documentclass{article}
\usepackage{graphicx}
\graphicspath{ {./images/} }

\begin{document}
宇宙是无边无际的，而且看起来是均匀的，
从大尺度上看，我们所到之处皆如此。

\includegraphics{universe}

上面是一张星系图片
\end{document}
```

![插入图片示例](/files/acc7875bfd8cf1e9b86b3cf2ecf91328ba4cf930)

Latex 本身不能处理图片，因此我们需要使用 `graphicx` 宏包。要使用它，我们需要在导言区中加入以下一行： `\usepackage{graphicx}`.

命令 `\graphicspath{ {./images/} }` 告诉 LaTeX，图片保存在名为 `images` 的文件夹中，位于主文档目录下。

该 `\includegraphics{universe}` 命令才是真正将图片插入到文档中的命令。这里 `universe` 是包含图片文件的文件名，不带扩展名，那么 `universe.PNG` 将变成 `universe`。图片文件名不应包含空格，也不应包含多个点号。

注意：文件扩展名可以包含在内，但最好省略它。如果省略扩展名，LaTeX 会搜索所有受支持的格式。更多细节请参见有关 [生成高分辨率和低分辨率图片](#generating-high-res-and-low-res-images).

&#x20;[在 Overleaf 中打开图片示例](https://www.overleaf.com/project/new/template/19397?id=65443742\&templateName=Inserting+Images\&latexEngine=pdflatex\&texImage=texlive-full%3A2020.1\&mainFile=)

## 图片的文件夹路径

在处理一个包含多张图片的文档时，可以将这些图片保存在一个或多个独立文件夹中，这样你的项目会更有条理。

命令 `\graphicspath{ {images/} }` 告诉 LaTeX 去查找 `images` 文件夹。路径是 ***相对的*** ，相对于当前工作目录——因此，编译器会在与包含图片的代码相同的文件夹中查找该文件。默认情况下，如果没有指定初始目录，例如

```latex
%相对于包含 \includegraphics 命令的 .tex 文件的路径
\graphicspath{ {images/} }
```

这通常是进入文件树中图形文件夹的直接方法，但在以下情况下可能会带来复杂性： `.tex` 文件夹中的文件被包含到主 `.tex` 文件中时。这样，编译器最终可能会在错误的位置寻找 images 文件夹。因此， **最佳实践是将图形路径指定为相对于主 `.tex` 文件**，并将主 `.tex` 文件目录表示为 `./` ，例如：

```latex
%相对于主 .tex 文件的路径
\graphicspath{ {./images/} }
```

就像在引言中那样。

路径也可以是 ***绝对的***，如果指定了文件在系统中的确切位置。例如，如果你在自己电脑上的本地 LaTeX 安装环境中工作：

```latex
%Windows 格式的路径：
\graphicspath{ {c:/user/images/} }

%类 Unix（Linux、Mac OS）格式的路径
\graphicspath{ {/home/user/images/} }
```

请注意，此命令需要以斜杠结尾 `/` 并且路径位于双层大括号之间。

如果图片保存在多个文件夹中，你也可以设置多个路径。例如，如果有两个名为 `images1` 和 `images2`的文件夹，请使用命令

```latex
\graphicspath{ {./images1/}{./images2/} }
```

&#x20;[在 Overleaf 中打开图片示例](https://www.overleaf.com/project/new/template/19397?id=65443742\&templateName=Inserting+Images\&latexEngine=pdflatex\&texImage=texlive-full%3A2020.1\&mainFile=)

## 更改图片大小并旋转图片

如果我们想进一步指定 LaTeX 应如何在文档中插入图片（长度、高度等），可以按以下格式传入这些设置：

```latex
\begin{document}

Overleaf 是一个非常出色的在线专业文档编辑工具，
可用于共享和备份你的 \LaTeX{} 项目。它还提供了一个
相当庞大的帮助文档。

\includegraphics[scale=1.5]{overleaf-logo}
```

![更改图片大小示例](/files/6357f4d25ab4e2faa66b550c57909333597cf2f4)

命令 `\includegraphics[scale=1.5]{overleaf-logo}` 将会把图片 `overleaf-logo` 插入到文档中，额外参数 `scale=1.5` 会精确实现这一点，将图片缩放到其实际大小的 1.5 倍。

你也可以将图片缩放到某个特定的宽度和高度。

```latex
\begin{document}

Overleaf 是一个非常出色的在线专业文档编辑工具，
可用于共享和备份你的 \LaTeX{} 项目。它还提供了一个
相当庞大的帮助文档。

\includegraphics[width=5cm, height=4cm]{overleaf-logo}
```

![设置图片高度和宽度示例](/files/12dab4056806bccd6ef6d7b2794dd71660c1c745)

正如你可能已经猜到的，方括号中的参数 `[width=3cm, height=4cm]` 定义了图片的宽度和高度。你可以为这些参数使用 [不同的单位](#reference-guide) 。如果只传入 *宽度* 参数，高度将按比例缩放以保持宽高比。

长度单位也可以相对于文档中的某些元素。例如，如果你想让图片与文本一样宽：

```latex
\begin{document}

宇宙是无边无际的，而且看起来是均匀的，
从大尺度上看，我们所到之处皆如此。

\includegraphics[width=\textwidth]{universe}
```

![设置图片宽度为文本宽度的示例](/files/f998913c2f3b7755496c49a39dbc51479a26460b)

而不是 `\textwidth` 你可以使用任何其他默认的 LaTeX 长度： `\columnsep`, `\linewidth`, `\\textheight`, `\paperheight`，等等。请参见 [参考指南](#reference-guide) 以进一步了解这些单位。

在文档中插入图片时，还有另一个常见选项，就是旋转它。在 LaTeX 中这可以很容易地完成：

```latex
\begin{document}

Overleaf 是一个非常出色的在线专业编辑工具，
可用于共享和备份你的 \LaTeX{} 项目。它还提供了一个
拥有相当庞大的帮助文档库。

\includegraphics[scale=1.2, angle=45]{overleaf-logo}
```

![旋转图片示例](/files/b63f6239a2dbd1d11dc25b726071fc0fd0f3e400)

参数 `angle=45` 将图片逆时针旋转 45 度。要顺时针旋转图片，请使用负数。

## 定位

在前一节中已经解释了如何在文档中插入图片，但文本与图片的组合可能不会像我们预期的那样显示。为此，我们需要引入一个新的 *环境*.

```latex
在下一个示例中，图形将被放置在
就在这句话的下方。

\begin{figure}[h]
\includegraphics[width=8cm]{Plot}
\end{figure}
```

![图形定位示例](/files/2d28bfe4f52d842f452110754921d2997d1e0993)

该 `figure` 环境用于将图片作为浮动元素显示在文档中。这意味着你将图片放在 `figure` 环境中，而不必担心它的位置，LaTeX 会以一种使其适合文档流的方式来定位它。

不过，有时我们需要更多地控制图形的显示方式。可以传入一个额外参数来确定图形位置。在示例中， `begin{figure}[h]`，方括号中的参数将图形位置设置为 ***这里***。下面的表格列出了可能的位置值。

| 参数 | 位置                                                              |
| -- | --------------------------------------------------------------- |
| h  | 放置浮动体 *这里*，即， *大约* 在其在源文本中出现的同一位置（不过，不是 *完全* 在该处）               |
| t  | 位置于 *顶部* 的页面上。                                                  |
| b  | 位置于 *底部* 的页面上。                                                  |
| p  | 放在一个特殊的 *page* 仅供浮动体使用。                                         |
| !  | 覆盖 LaTeX 用于确定“良好”浮动体位置的内部参数。                                    |
| H  | 将浮动体精确放在 LaTeX 代码中的该位置。需要 `float` 宏包，不过有时可能会引发问题。这在某种程度上等同于 h!。 |

在下一个示例中，你可以看到一张位于文档 `t`顶部的图片，尽管它是在文本下方声明的。

```latex
在这张图片中，你可以看到一张柱状图，显示
一项调查的结果，其中涉及一些重要的
随着时间推移而研究的数据。

\begin{figure}[t]
\includegraphics[width=8cm]{Plot}
\centering
\end{figure}
```

![柱状图示例](/files/4fd812e8b9bde5c1fd28ee57fb604cc916df47cb)

额外命令 `\centering` 会使图片居中。默认对齐方式是 *left*.

### 在图形周围环绕文本

也可以 **wrap** 让文本环绕图形。当文档包含小图片时，这样会让排版更美观。

```latex
\begin{wrapfigure}{r}{0.25\textwidth} %这张图将位于右侧
    \centering
    \includegraphics[width=0.25\textwidth]{mesh}
\end{wrapfigure}

绘制二元函数有几种方式，
这取决于你感兴趣的信息。
例如，如果你想查看函数的网格图，
以便更容易看出导数，你可以使用像左边这样的图。
左边的。

\begin{wrapfigure}{l}{0.25\textwidth}
    \centering
    \includegraphics[width=0.25\textwidth]{contour}
\end{wrapfigure}

另一方面，如果你只对
某些数值感兴趣，你可以使用等高线图，
你可以使用等高线图，你可以使用等高线
图，你可以使用等高线图，你可以使用
等高线图，你可以使用等高线图，
你可以使用等高线图，就像左边的那样。

另一方面，如果你只对
某些数值感兴趣，你可以使用等高线图，
你可以使用等高线图，你可以使用等高线
图，你可以使用等高线图，你可以使用
等高线图，你可以使用等高线图，
你可以使用等高线图，
就像左边的那样。
```

![图表示例](/files/e76c2b294d9c52036abac6fee57083edfffbf6b1)

要让示例中的命令正常工作，你必须导入 [`wrapfig` 宏包](https://ctan.org/pkg/wrapfig?lang=en)。要使用 `wrapfig`，请在文档导言区中加入以下一行：

```latex
\usepackage{wrapfig}
```

这使得 `wrapfigure` 环境可用，并且我们可以在其中放置一个 `\includegraphics` 命令来创建一个文本会围绕其环绕的图形。下面是我们如何指定一个 *wrapfigure* 环境：

```latex
\begin{wrapfigure}[lineheight]{position}{width}
  ...
\end{wrapfigure}
```

该 `position` 参数有八种可能的值：

|   |   |                               |
| - | - | ----------------------------- |
| r | R | 文本右侧                          |
| l | L | 文本左侧                          |
| i | I | 内侧边缘——靠近装订处（在一个 *twoside* 文档） |
| 或 | O | 外侧边缘——远离装订处                   |

大写版本允许图形浮动。小写版本表示 *正好在这里*.

现在你可以通过以下命令定义 `wrapfigure` 环境： `\begin{wrapfigure}{l}{0.25\textwidth} \end{wrapfigure}`。请注意，该环境还有两个用大括号括起来的附加参数。下面将更详细地解释代码：

**{l}**

这定义了图形的对齐方式。左侧使用 l，右侧使用 r。此外，如果你使用的是书籍或类似格式，请改用 o 表示外侧边缘，i 表示页面内侧边缘。

**{0.25\textwidth}**

这是图形框的宽度。它不是图片本身的宽度，图片宽度必须在 \includegraphics 命令中设置。请注意，该长度是相对于文本宽度的，但也可以使用常规单位（cm、in、mm 等）。有关单位列表，请参见参考指南。

**\centering**

这一点已经解释过了，但在这个示例中，图片将以其容器为参考来居中，而不是以整段文本为参考。

关于图片定位的更完整文章，请参见 [图片和表格的位置](/latex/zh-cn/tu-biao-he-biao-ge/02-positioning-images-and-tables.md)

&#x20;[在 Overleaf 中打开图片示例](https://www.overleaf.com/project/new/template/19397?id=65443742\&templateName=Inserting+Images\&latexEngine=pdflatex\&texImage=texlive-full%3A2020.1\&mainFile=)

## 标题、标签和引用

为图片添加简短描述的标题，以及为进一步引用而给它们添加标签，都是处理长篇文档时的重要工具。

### 标题

我们先从一个标题示例开始：

```latex
\begin{figure}[h]
\caption{参数图示例（$\sin (x), \cos(x), x$）}
\centering
\includegraphics[width=0.5\textwidth]{spiral}
\end{figure}
```

![参数图示例](/files/8fb2f887778c635f63c7c55d13cd468ef45fe838)

非常简单，只需添加 `\caption{一些标题}` 然后在大括号中写入要显示的文本。标题的位置取决于你放置该命令的位置；如果它在 `\includegraphics` 上方，那么标题会显示在它上面；如果它在下方，那么标题也会显示在图形下方。

标题也可以直接放在图形后面。 `sidecap` 宏包使用与前一个示例相似的代码来实现这一点。

```latex
\documentclass{article}
\usepackage[rightcaption]{sidecap}

\usepackage{graphicx} %用于管理图片的宏包
\graphicspath{ {images/} }

\begin{SCfigure}[0.5][h]
\caption{再次使用宇宙图片。
这个标题将位于右侧}
\includegraphics[width=0.6\textwidth]{universe}
\end{SCfigure}
```

![带标题的参数图示例](/files/5a3b68b3fdde94baf63160915cf1611a1b9d73e4)

有两个新的命令

**\usepackage\[rightcaption]{sidecap}**

正如你所料，这一行会导入一个名为 sidecap 的宏包，但还有一个额外参数：rightcaption。该参数将标题放在图片右侧，你也可以使用 leftcaption。在类似书籍的文档中，outercaption 和 innercaption 也可用。这些名称本身就能说明其含义。

**\begin{SCfigure}\[0.5]\[h] \end{SCfigure}**

定义了一个类似于 figure 的环境。第一个参数是标题相对于图片大小的宽度，如在 \includegraphics 中所声明。第二个参数 h 的作用与 figure 环境中的完全相同。有关更多信息，请参见定位部分。

你可以对标题格式进行更高级的管理。请查看 [延伸阅读](#further-reading) 部分以获取参考。

### 标签和交叉引用

图形，就像 LaTeX 文档中的许多其他元素（公式、表格、图表等）一样，也可以在文本中引用。这非常简单，只需添加一个 `\label` 到 `figure` 或 `SCfigure` 环境中，然后在后面使用该标签来引用图片。

```latex
\begin{figure}[h]
    \centering
    \includegraphics[width=0.25\textwidth]{mesh}
    \caption{一张漂亮的图}
    \label{fig:mesh1}
\end{figure}

正如你在图 \ref{fig:mesh1} 中所看到的，
函数在 0 附近增长。此外，在第 \pageref{fig:mesh1} 页
是同一个示例。
```

![带标签的图形示例](/files/4d6775541360b8e9f808bb30a7175ef274c3b80e)

在此示例中，有三个命令会生成交叉引用。

**\label{fig:mesh1}**

这将为该图设置一个标签。由于标签可用于文档中的多种元素，因此最好使用前缀，例如示例中的 fig:。

**\ref{fig:mesh1}**

此命令将插入分配给该图的编号。它会自动生成，并且如果在被引用的图前插入其他图，也会更新。

**\pageref{fig:mesh1}**

这会打印出被引用图片所在的页码。

该 `\caption` 是引用图形所必需的。

LaTeX 文档的另一个很棒的特性是能够自动生成 *图表目录*。这很简单。

```latex
\listoffigures
```

![图表目录示例](/files/7680ce4c84044fa7a8ada7b61f7c58649ddadfef)

此命令只适用于带标题的图形，因为它使用了表中的标题。上面的示例列出了本文中的图片。

重要说明：使用交叉引用时，你的 LaTeX 项目必须编译两次，否则引用、页码引用和图表目录都不会生效——Overleaf 会为你处理好这一点。

## 生成高分辨率和低分辨率图片

到目前为止，在指定 `\includegraphics` 命令中的图片文件名时，我们省略了文件扩展名。不过，这并非必要，虽然它常常很有用。如果省略文件扩展名，LaTeX 会在该目录中搜索任何受支持的图片格式，并按默认顺序搜索各种扩展名（这个顺序可以修改）。

这在开发环境和生产环境之间切换时很有用。在开发环境中（当文章/报告/书籍仍在制作中时），最好使用图片的低分辨率版本（通常为 .png 格式），以便快速编译预览。在生产环境中（当文章/报告/书籍的最终版本生成时），最好包含图片的高分辨率版本。

这可以通过以下方式实现：

* 不要在 *\includegraphics* 命令中指定文件扩展名，并且
* 在导言区中指定所需的扩展名。

因此，如果我们有一张图片的两个版本，venndiagram.pdf（高分辨率）和 venndiagram.png（低分辨率），那么我们可以在导言区加入以下一行，以便在撰写报告时使用 .png 版本——

```latex
  \DeclareGraphicsExtensions{.png,.pdf}
```

上面的命令将确保如果遇到两个具有相同基本文件名但扩展名不同的文件（例如 venndiagram.pdf 和 venndiagram.png），则会优先使用 .png 版本，如果不存在则使用 .pdf 版本；如果某些低分辨率版本不可用，这也是一个好主意。

一旦报告完成，要使用高分辨率的 .pdf 版本，我们可以将导言区中指定扩展名搜索顺序的那一行更改为

```latex
  \DeclareGraphicsExtensions{.pdf,.png}
```

在改进前几段所述技术的基础上，如果有一个尚未转换为 PNG 的 PDF，我们还可以指示 LaTeX 在编译文档时即时生成图片的低分辨率 .png 版本。为此，我们可以在导言区中加入以下内容，放在 `\usepackage{graphicx}`

```latex
  \usepackage{epstopdf}
  \epstopdfDeclareGraphicsRule{.pdf}{png}{.png}{convert #1 \OutputFile}
  \DeclareGraphicsExtensions{.png,.pdf}
```

如果 venndiagram2.pdf 存在但 venndiagram2.png 不存在，则会创建文件 venndiagram2-pdf-converted-to.png 并将其替代加载。命令 *convert #1* 负责转换，并且可以在 *convert* 和 *#1*之间传入额外参数。例如—— *convert -density 100 #1*.

不过，有些重要事项需要注意：

* 为了让自动转换生效，我们需要调用 *pdflatex* 与 `--shell-escape` 选项。
* 对于最终的 *生产* 版本，我们必须注释掉 `\epstopdfDeclareGraphicsRule`，这样只会加载高分辨率 PDF 文件。我们还需要更改优先级顺序。

&#x20;[在 Overleaf 中打开图片示例](https://www.overleaf.com/project/new/template/19397?id=65443742\&templateName=Inserting+Images\&latexEngine=pdflatex\&texImage=texlive-full%3A2020.1\&mainFile=)

## 参考指南

**LaTeX 单位和长度**

| 缩写            | 定义                           |
| ------------- | ---------------------------- |
| pt            | point（磅）是默认长度单位，约为 0.3515 毫米 |
| mm            | 一毫米                          |
| cm            | 一厘米                          |
| 在             | 一英寸                          |
| ex            | 一个的高度 **x** 在当前字体中           |
| em            | 一个的宽度 **m** 在当前字体中           |
| \columnsep    | 列间距                          |
| \columnwidth  | 列宽                           |
| \linewidth    | 当前环境中的行宽                     |
| \paperwidth   | 页面宽度                         |
| \paperheight  | 页面高度                         |
| \textwidth    | 文本宽度                         |
| \\\textheight | 文本高度                         |
| \unitlength   | 中的长度单位 *picture* 环境中。        |

**关于 LaTeX 中的图片类型**

**latex**

使用 latex 编译时，我们只能使用 EPS 图片，这是一种矢量格式。

**pdflatex**

如果我们使用“pdflatex”编译以生成 PDF，那么我们可以使用多种图片格式——

```
   JPG：如果我们想插入照片，这是最佳选择
   PNG：如果我们想插入图表（在无法生成矢量版本时）和截图，这是最佳选择
   PDF：尽管我们习惯于把 PDF 看作文档，但 PDF 也可以存储图片
   EPS：EPS 图片可以通过 epstopdf 宏包包含进来（我们只需要安装该宏包，
        不需要使用 \usepackage{} 将其包含到文档中。）
```

**矢量格式还是位图格式？**

图片可以是矢量格式，也可以是位图格式。一般来说我们不需要担心这一点，但如果我们确实知道图片的格式，就可以利用这些信息来选择适合在 LaTeX 文档中包含的图片格式。如果图片是矢量格式，我们应该选择 PDF 或 EPS。如果图片是位图格式，我们应该选择 JPG 或 PNG，因为将位图图片存储为 PDF 或 EPS 会占用大量磁盘空间。

&#x20;[在 Overleaf 中打开图片示例](https://www.overleaf.com/project/new/template/19397?id=65443742\&templateName=Inserting+Images\&latexEngine=pdflatex\&texImage=texlive-full%3A2020.1\&mainFile=)

## 进一步阅读

更多信息请参见

* [图片和表格的位置](/latex/zh-cn/tu-biao-he-biao-ge/02-positioning-images-and-tables.md)
* [表格与图形列表](/latex/zh-cn/tu-biao-he-biao-ge/03-lists-of-tables-and-figures.md)
* [单面和双面文档](/latex/zh-cn/ge-shi-hua/08-single-sided-and-double-sided-documents.md)
* [LaTeX 中的长度](/latex/zh-cn/ge-shi-hua/01-lengths-in-latex.md)
* [**floatrow** 用于高级管理浮动元素（表格和图形）标题的宏包](http://tug.ctan.org/tex-archive/macros/latex/contrib/floatrow/floatrow.pdf)
* [**sidecap** 宏包文档，用于侧边图注](ftp://ctan.tug.org/tex-archive/macros/latex/contrib/sidecap/sidecap.pdf)
* [**epstopdf** 宏包文档（EPS 转 PDF 转换）](https://ctan.org/pkg/epstopdf?lang=en)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://overleaf-pro.ayaka.space/latex/zh-cn/geng-duo-zhu-ti/27-inserting-images.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
