> For the complete documentation index, see [llms.txt](https://ayakaleaf-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://ayakaleaf-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
%Path relative to the .tex file containing the \includegraphics command
\graphicspath{ {images/} }
```

这通常是在文件树中到达图形文件夹的一种直接方式，但当 `.tex` 文件夹中的文件被包含到主 `.tex` 文件中时，可能会导致复杂情况。这样一来，编译器最终可能会在错误的位置查找 images 文件夹。因此， **最好将图形路径指定为相对于主 `.tex` 文件**，即将主 `.tex` 文件目录表示为 `./` ，例如：

```latex
%Path relative to the main .tex file
\graphicspath{ {./images/} }
```

如引言中所示。

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

```latex
%Path in Windows format:
\graphicspath{ {c:/user/images/} }

%Path in Unix-like (Linux, Mac OS) format
\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` 将使图片居中。默认对齐方式是 *左侧*.

### 文字环绕图形

也可以 **环绕** 图片文字环绕图形。当文档包含小图片时，这样看起来会更好。

```latex
\begin{wrapfigure}{r}{0.25\textwidth} %this figure will be at the right
    \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}
```

该 `位置` 参数有八个可能的值：

|   |   |                              |
| - | - | ---------------------------- |
| r | R | 文本右侧                         |
| l | L | 文本左侧                         |
| i | I | 内侧边缘——靠近书脊（在一个 *twoside* 文档） |
| o | 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-xing-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{Example of a parametric plot ($\sin (x), \cos(x), x$)}
\centering
\includegraphics[width=0.5\textwidth]{spiral}
\end{figure}
```

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

这真的很简单，只需添加 `\caption{Some caption}` 并在大括号中写入要显示的文本。标题的位置取决于你将命令放在何处；如果它在 `\includegraphics` 上方，那么标题就会显示在上方；如果在下方，那么标题也会显示在图形下方。

标题也可以放在图形之后。 `sidecap` 包使用了与上一示例类似的代码来实现这一点。

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

\usepackage{graphicx} %package to manage images
\graphicspath{ {images/} }

\begin{SCfigure}[0.5][h]
\caption{Using again the picture of the universe.
This caption will be on the right}
\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{a nice plot}
    \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 版本，如果没有 .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             | 点是默认的长度单位。约 0.3515 毫米 |
| mm             | 一毫米                   |
| cm             | 一厘米                   |
| .bib 文件中插入一个 % | 一英寸                   |
| 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-xing-he-biao-ge/02-positioning-images-and-tables.md)
* [表格和图形列表](/latex/zh-cn/tu-xing-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://ayakaleaf-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.
