> 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/28-inserting-images-es.md).

# 插入图片 es

图片是大多数科学文档中的基本元素。LaTeX 提供了多种处理图片的方法，使它们看起来完全符合你的需求。本文说明如何以最常见的格式插入图片、如何缩小或放大图片，以及如何在文档中为图片添加引用。

## 简介

下面是一个关于如何在 LaTeX 中导入图片的示例。

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

\begin{document}
宇宙无比浩瀚，而且似乎是均匀的，
在大尺度上，随处可见。

\includegraphics{universe}

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

![InsertingImagesEx1.png](/files/acc7875bfd8cf1e9b86b3cf2ecf91328ba4cf930)

LaTeX 本身没有处理图片的能力，因此需要导入宏包 **graphicx**。使用该宏包时，在文档导言区添加下面这一行

```latex
\usepackage{graphicx}
```

命令 `\graphicspath{ {images/} }` 告诉 LaTeX，图片保存在一个名为 *images* 的文件夹中，位于当前目录下。

命令 `\includegraphics{universe}` 负责将图片插入文档。这里， *universe* 是图片文件名，不包含扩展名；因此 *universe.PNG* 会变成 *universe*。图片文件名不应包含空格或多个标点符号。

注意： *可以写入文件扩展名，但建议* 省略它。若省略扩展名，LaTeX 会查找所有受支持的格式。更多细节请参见 [生成高分辨率和低分辨率图像](#generando-imgenes-en-alta-y-baja-resolucin).

&#x20; [在 Overleaf 中打开示例](https://www.sharelatex.com/project/new/template?zipUrl=/project/52f4102815577d644c0017fb/download/zip\&templateName=InsertingImages\&compiler=pdflatex)

## 图片文件夹的路径

在编写包含多张图片的文档时，为了让项目更有条理，一种做法是把它们单独存放在一个文件夹中。

在引言中的示例里，这是通过命令 `\graphicspath{ {images/} }` 实现的，它告诉 LaTeX 应该在文件夹 *images*中查找图片。路径是 *相对* 于当前工作目录的。

到文件夹的路径可以是 ***相对*** （推荐）如果文件夹与主 .tex 文件在同一目录下或位于其子文件夹中；也可以是 ***绝对*** 路径，如果需要精确指定路径。例如：

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

% Unix 风格格式（Linux、OsX）的绝对路径
\graphicspath{ {/home/user/images/} }
```

请注意，这个命令要求使用正斜杠 `/` 放在末尾，并且路径需要写在两对花括号中。

如果为了更好地组织而把图片存放在多个文件夹中，也可以设置多个路径。例如，如果有两个文件夹，一个叫 *images1* ，另一个叫 *images2*，使用命令

```latex
\graphicspath{ {images1/}{images2/} }</code>
```

如果没有指定路径，LaTeX 会在当前文件夹中查找图片，也就是保存 .tex 文件的地方。

&#x20; [在 Overleaf 中打开示例](https://www.sharelatex.com/project/new/template?zipUrl=/project/52f4102815577d644c0017fb/download/zip\&templateName=InsertingImages\&compiler=pdflatex)

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

如果在 LaTeX 中导入图片时想指定额外参数来修改图片的宽度、高度、位置等，这是可以通过下面的语法实现的：

```latex
Overleaf 是一个很棒的专业在线编辑工具，
可用于共享和备份你的 \LaTeX 项目。此外，它还提供了一个
相当丰富的帮助文档。

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

![InsertingImagesEx2.png](/files/1d8078565835e800ea306f8ac8d03a414a587ccf)

命令 `\includegraphics[scale=1.5]{lion-logo}` 将图片 *lion-logo* 插入到文档中，额外参数 `scale=1.5` 把图片缩放到原始大小的 1.5 倍。

也可以将图片调整到指定的高度和宽度。

```latex
Overleaf 是一个很棒的专业在线编辑工具，
可用于共享和备份你的 \LaTeX 项目。此外，它还提供了一个
相当丰富的帮助文档。

\includegraphics[width=3cm, height=4cm]{lion-logo}
```

![InsertingImagesEx3.png](/files/1cb994a127995114470f0f80ccad99323071b033)

正如你大概已经猜到的，方括号中的参数 `[width=3cm, height=4cm]` 定义了图片的宽度和高度。可以使用 [不同的](#gua-de-referencia) 测量单位。如果只设置 *width*的值，高度会按比例缩放以保持图像的纵横比。

也可以设置图片相对于文档中其他元素的长度。例如，如果你希望图片与正文具有相同的宽度：

```latex
Overleaf 是一个很棒的专业在线编辑工具，
可用于共享和备份你的 \LaTeX 项目。此外，它还提供了一个
相当丰富的帮助文档。

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

![InsertingImagesEx5.png](/files/f998913c2f3b7755496c49a39dbc51479a26460b)

而不是 `\textwidth` 你可以使用 LaTeX 默认包含的任何其他单位： *\columnsep, \linewidth, \textheight, \paperheight, etc*。请参阅 [参考指南](#gua-de-referencia) 以获得对这些单位更好的说明。

在文档中插入图片时，另一个很常见的选项是把它旋转。这在 LaTeX 中非常容易：

```latex
Overleaf 是一个很棒的专业在线编辑工具，
可用于共享和备份你的 \LaTeX 项目。此外，它还提供了一个
相当丰富的帮助文档。

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

![InsertingImagesEx4.png](/files/acca5e5fedaff8f8b8d2727c87b082881a42c067)

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

&#x20; [在 Overleaf 中打开一个示例](https://www.sharelatex.com/project/new/template?zipUrl=/project/52f4102815577d644c0017fb/download/zip\&templateName=InsertingImages\&compiler=pdflatex)

## 图片定位

上一节介绍了如何在文档中插入图片，但有时文档中图片与文字的组合可能不会像你预期的那样显示。要改变这一点，需要使用一个新的环境：

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

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

![InsertingImagesEx6.png](/files/480c25400af1b9e988bf031d7694116cfa3778b7)

环境 `figure` 用于将图片作为浮动元素显示在文档中。这意味着只需把图片放入 *figure* 环境中，你就不必再担心它会出现在哪里，LaTeX 会把它放置在最适合文档流的位置。

虽然一开始这听起来很好，但有时你会希望更好地控制图片出现的位置。可以使用一个额外参数来设置图形的位置。在示例中， `begin{figure}[h]`方括号中的参数指定图形的位置 *这里* （这里，英文中表示 here）。下面是一张表，列出可能的定位值。

| 参数 | 位置                                                 |
| -- | -------------------------------------------------- |
| h  | 将浮动元素放在“这里”。也就是大致放在代码中出现的位置，不过定位并不总是完全精确。          |
| t  | 将图形插入到页面顶部。                                        |
| b  | 将图形插入到页面底部。                                        |
| p  | 将浮动元素插入到单独的一页中，该页只包含图形。                            |
| !  | 覆盖 LaTeX 用于确定图片“良好”位置的参数。                          |
| H  | 将浮动元素精确放在它在代码中出现的位置，需要导入宏包 `float`。在某种程度上，这相当于 h!。 |

在下面的示例中，可以看到一张出现在文档开头的图片，尽管生成它的代码位于文档末尾。

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

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

![InsertingImagesEx7.png](/files/3d9f3962eee9f705d3ac86408462995103f6a016)

额外命令 `\centering` 负责将图片居中。默认的对齐方式是左对齐。

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

```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}

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

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

![InsertingImagesEx8.png](/files/f1e029081e917d25564bc97fa7e4e2893ec17b57)

要使示例中的命令生效，需要导入宏包 **wrapfig**。在导言区添加如下行

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

导入宏包后，可以使用环境 *wrapfigure* 通过命令 `\begin{wrapfigure}{l}{0.25\textwidth} \end{wrapfigure}`。请注意，该环境在花括号中还有两个额外参数。下面将更详细地解释这段代码。

**{l}**

设置图形的对齐方式。l 表示左对齐，r 表示右对齐。进一步地，如果使用 book 类或类似类，则可以用 o 表示页面外侧边缘，用 i 表示页面内侧边缘，而不是 l 和 r。

**{0.25\textwidth}**

这设置的是包含图片的框的宽度，而不是图片本身的宽度；图片本身的宽度应在 includegraphics 命令中设置。在示例中使用的是相对单位，但也可以使用普通单位（cm、mm、in 等）。请参阅参考指南以查看可用单位列表。

**\centering**

前面已经解释过了，但在上一个示例中，图片将相对于其容器框居中，而不是相对于页面居中。

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

&#x20; [在 Overleaf 中打开示例](https://www.sharelatex.com/project/new/template?zipUrl=/project/52f4102815577d644c0017fb/download/zip\&templateName=InsertingImages\&compiler=pdflatex)

## 添加标签、标题和引用

能够添加简短说明图片的标题，以及以后可用于引用该图片的标签，在处理很长的文档时是非常有用的工具。

### 标题

先从一个添加标题的示例开始：

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

![InsertingImagesEx9.png](/files/5bf13168bb37c895ab7ab902d64ed91d1b70f9b2)

这非常简单，只需添加命令 `\caption{示例标题}` 并在花括号中写入要显示的文本。标题打印的位置取决于命令插入的位置；如果它在命令 *includegraphics* 之上，那么标题会出现在图片上方；如果它在该命令之下，那么标题会出现在图形底部。

标题也可以放在图形旁边。宏包 **sidecap** 允许使用与上一个示例非常相似的代码来添加文本。

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

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

\begin{SCfigure}[0.5][h]
\caption{参数图示例。
         这个标题会在右侧}
\includegraphics[width=0.6\textwidth]{spiral}
\end{SCfigure}
```

![InsertingImagesEx10.png](/files/85828ec68389bbb3711e976b18e41e2e5c36b8a4)

在这个示例中有两个新命令：

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

正如你可能已经知道的，这个命令导入名为 sidecap 的宏包，但还有一个额外参数：rightcaption。该参数用于设置标题的打印位置。在这里是图片右侧；也可以使用 leftcaption 将标题移到左侧。在使用 book 类的文档中，还可以额外使用 outercaption 和 innercaption 选项，将标题打印在相对于页面边缘的外侧或内侧。

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

定义一个与 figure 类似的环境。第一个参数是标题相对于图片大小的宽度。第二个参数 h 的作用与 figure 环境中的相同。更多信息请参阅图片定位一节。

如果需要，还可以实现更高级的标题格式控制。请参阅 [补充阅读](#lecturas-adicionales) 以查看更多参考资料。

### 标签和交叉引用

图形，正如 LaTeX 文档中的许多其他元素（公式、表格、图表等）一样，都可以在正文中被引用。做到这一点非常容易，只需给环境添加一个标签 *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} 页中
是同一个示例。
```

![InsertingImagesEx11.png](/files/cb213b6cd2fdc597f9f03fea4fc79a89db1383f5)

这个示例中有三个生成交叉引用的命令。

**\label{fig:mesh1}**

为图形设置标签。由于标签可以用于文档中的多种元素，最佳做法是使用前缀，例如示例中的 fig:。

**\ref{fig:mesh1}**

该命令打印分配给该图形的编号。编号会自动生成，如果后来在所引用的图形之前插入了另一张图，编号也会更新。

**\pageref{fig:mesh1}**

打印标签所引用图片出现的页码。

命令 `\caption` 添加标题是添加标签并引用图形的必要条件。

LaTeX 的另一个重要特性是能够自动生成一个 *图形列表*。这可以很容易地通过以下方式实现：

```latex
\listoffigures
```

![InsertingImagesEx12.png](/files/4bf7da0de92293502e0f152497fa856186de11e9)

这个命令只对带有标题的图形有效，因为它使用标题来生成表格。上面的示例列出了本文中使用的图片。

重要说明： *在 LaTeX 中使用交叉引用时，项目必须编译两次，否则引用、页码引用和图形列表将无法正常工作*.

&#x20; [在 Overleaf 中打开示例](https://www.sharelatex.com/project/new/template?zipUrl=/project/52f4102815577d644c0017fb/download/zip\&templateName=InsertingImages\&compiler=pdflatex)

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

目前，当我们在命令中输入图片文件名时， *\includegraphics* 我们省略了文件扩展名。然而，这并非必要，虽然这样做可能很有用。如果省略扩展名，LaTeX 会在预设的图片目录中查找任何受支持的图片类型，搜索会按某种顺序进行，而这个顺序可以修改。

这对于从文档的草稿版过渡到最终版非常有用。在草稿版中（当你撰写文章、书籍、报告等时），通常希望使用低分辨率图像（通常是 .png 格式），以便文档编译得更快。在最终版中，则更希望包含高分辨率图像，以获得高质量文档。

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

* 在命令中不指定文件扩展名 *\includegraphics*，以及
* 在导言区指定扩展名的顺序

因此，如果有同一张图片的两个版本，例如 venndiagram.pdf（高分辨率）和 venndiagram.png（低分辨率），可以在撰写和调试文档时在导言区加入下面这一行 -

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

上述命令确保：如果找到两张同名但扩展名不同的图片，就会使用 .png 文件；如果由于某种原因该文件消失了，pdf 版本将成为下一个选择。

文档写好后，如果只想使用高分辨率版本，应将决定扩展名的那一行改为：

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

甚至可以进一步改进上面描述的技术：如果 PDF 之前还没有被转换为 PNG，我们可以让 LaTeX 在编译文档时生成低分辨率 .png 图像。要实现这一点，需要在导言区中、在以下命令之后加入： `\usepackage{graphicx}`.

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

如果 venndiagram2.pdf 存在但 venndiagram2.png 不存在，将创建 vendiagramm2-pdf-converted-to.png 文件并改用它。命令 *convert #1* 负责转换

如果选择这种方法，需要记住几点：

* 要使自动转换生效，必须运行 *pdflatex* 并使用选项 `--shell-escape`.
* 对于最终版本，不要忘记注释掉命令行 `\epstopdfDeclareGraphicsRule`，这样就只会加载高分辨率图像。还要记得更改优先顺序。

&#x20; [在 Overleaf 中打开示例](https://www.sharelatex.com/project/new/template?zipUrl=/project/52f4102815577d644c0017fb/download/zip\&templateName=InsertingImages\&compiler=pdflatex)

## 参考指南

**LaTeX 中的单位和度量**

| 缩写            | 定义                     |
| ------------- | ---------------------- |
| pt            | 点，是默认的长度单位。约为 0.3515mm |
| 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 宏包包含进来（该宏包只需安装在计算机上，安装后 .tex 文件中无需任何额外命令）
```

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

图片可以以位图或矢量图格式插入。一般来说不必为此担心，但如果你可以选择格式，就要记住：对于矢量图，最好保存为 PDF 或 EPS 格式；而对于位图，推荐使用 JPG 或 PNG 格式。这是因为 PDF 或 EPS 格式文件中的位图会占用大量存储空间。

&#x20; [在 Overleaf 中打开示例](https://www.sharelatex.com/project/new/template?zipUrl=/project/52f4102815577d644c0017fb/download/zip\&templateName=InsertingImages\&compiler=pdflatex)

## 延伸阅读

更多信息请参阅：

* [图片和表格的位置](/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** 宏包文档（PDF 转 EPS 转换）](https://www.google.com/url?sa=t\&rct=j\&q=\&esrc=s\&source=web\&cd=3\&cad=rja\&ved=0CEEQFjAC\&url=http%3A%2F%2Fmirror.hmc.edu%2Fctan%2Fmacros%2Flatex%2Fcontrib%2Foberdiek%2Fepstopdf.pdf\&ei=N4v2UpK7D4eHqQHz2IDACg\&usg=AFQjCNG9CxIXjrbc22kl-8QweEXeEauFew\&sig2=qamKo3qpid8CEqzsHhpIrQ\&bvm=bv.60983673,d.aWM)


---

# 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/28-inserting-images-es.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.
