在 Overleaf 中插入图片并引用图片需要使用 LaTeX,并通常使用 graphicx
宏包来实现。以下是详细步骤和示例:
1.一般插图
步骤 1:导入 graphicx
宏包
在你的 LaTeX 文档中,导入 graphicx
宏包,以便能够插入和引用图片。在导言区添加以下行:
\usepackage{graphicx}
这将使你能够使用 \includegraphics
命令来插入图片。
步骤 2:插入图片
使用 \includegraphics
命令来插入图片。命令的一般格式如下:
\includegraphics[选项]{图片文件名}
其中:
选项
:可以用来设置图片的大小、位置等选项。图片文件名
:指定图片文件的文件名,包括文件扩展名。
示例代码:
\begin{figure}[htbp] \centering \includegraphics[width=0.5\textwidth]{example.png} \caption{这是图片的标题。} \label{fig:myfigure} \end{figure}
上面的示例代码插入了一张名为 "example.png" 的图片,并设置了图片宽度为页面宽度的一半。同时,它为图片添加了标题和标签(label)以便后续引用。
步骤 3:引用图片
要在文档中引用图片,你可以使用 \ref
命令并指定图片的标签(label)。示例代码如下:
as shown in \ref{fig:myfigure}
在上述示例中,我们使用 \ref{fig:myfigure}
引用了标签为 "fig:myfigure" 的图片,它会自动显示图片的编号。
特殊情况:
2.插入双栏图片
\begin{figure*}[htbp] \centering \includegraphics[width=\textwidth]{example.png} \caption{This is the caption for a two-column figure.} \label{fig:twocolumn} \end{figure*}
在上述示例中:
- 我们使用
figure*
环境将图片包装起来,使其成为一个跨双栏的浮动对象。 \centering
命令将图片居中显示。\includegraphics
命令用于插入图片,其中width=\textwidth
将图片的宽度设置为文本宽度,以便它跨足两个栏。\caption
命令用于设置图片的标题。\label
命令用于为图片添加标签,以便后续引用。
引用双栏图片
要在文档中引用双栏图片,你可以使用 \ref
命令并指定图片的标签(label)。示例代码如下:
As shown in Fig. \ref{fig:twocolumn}, this is the content of a two-column figure.
在上述示例中,我们使用 \ref{fig:twocolumn}
引用了标签为 "fig:twocolumn" 的图片,它会自动显示图片的编号。
3 插入子图
在 Overleaf 中插入子图可以使用 subfigure
或 subcaption
宏包来实现。以下是使用 subcaption
宏包的步骤和示例:
步骤 1:导入必要的宏包
在导言区导入以下宏包,以便能够插入和引用子图:
\usepackage{graphicx} \usepackage{subcaption}
graphicx
宏包用于插入图片。subcaption
宏包用于创建和管理子图。
步骤 2:插入子图
使用 subfigure
环境来插入子图。示例代码如下:
\begin{figure}[htbp] \centering \begin{subfigure}[b]{0.45\textwidth} \includegraphics[width=\textwidth]{subfig1.png} \caption{子图 1} \label{subfig:1} \end{subfigure} \hfill \begin{subfigure}[b]{0.45\textwidth} \includegraphics[width=\textwidth]{subfig2.png} \caption{子图 2} \label{subfig:2} \end{subfigure} \caption{主图标题} \label{fig:main} \end{figure}
在上述示例中:
- 我们使用
subfigure
环境来包装每个子图。 \includegraphics
命令用于插入子图的图片。\caption
命令用于设置每个子图的标题。\label
命令用于为每个子图添加标签,以便后续引用。
步骤 3:引用子图
要在文档中引用子图,可以使用 \subref
命令并指定子图的标签(label)。示例代码如下:
如图 \subref{subfig:1} 和 \subref{subfig:2} 所示,这是子图 1 和子图 2。
在上述示例中,我们使用 \subref{subfig:1} 和 \subref{subfig:2} 引用了标签为 "subfig:1" 和 "subfig:2" 的子图,它们将自动显示子图的编号。
通过这种方式,你可以在 Overleaf 中插入和引用子图。你可以根据需要添加更多子图,并按照上面的示例进行设置和引用。
4. 引用出现问题
问题1 : pdf 文中引用只出现了图片序号,如“3”。没有出现“Fig.3 或者Figure.3”
(1)如插入图片的latex 源码如下:
\begin{figure}[htbp] \centerline{\includegraphics[width=6.5 cm,height=10cm]{fig3-encoder block.jpg}} \caption{The transformer encoder encoder encoder encoder.} \label{fig3} \end{figure}
(2)引用部分的latex源码:
as shown in \ref{fig3}.
显示为:
没有如愿显示为Figure.3或者Fig.3。
解决:
如果在 PDF 中只显示了 "3" 而不是 "Figure 3" 或其他文本,这可能是由于 LaTeX 的设置或宏包的问题。你可以尝试以下几种方法来解决这个问题:
使用 cleveref 宏包: 在导言区添加 \usepackage{cleveref} 并在文本中使用 \Cref{fig:2} 来引用图表。cleveref 宏包会自动添加适当的前缀,例如 "Figure"。
\usepackage{cleveref} ... 如\Cref{fig:2}所示,这是一个示例图表。
解决1 接上面示例:换成如下方式引用,注意\Cref 是大写的 C,如下
as shown in \Cref{fig3}.
则pdf文中显示为Figure 3如下
解决2接上面示例:换成如下方式引用,注意\cref 是小写的 c,如下
as shown in \cref{fig3}.
则pdf 文中显示为fig.3 ,如下
此时你又发现,pdf 中的图的标题如下:
而文中引用部分则显示为 as shown in Figure 3,如下
问题2:文中引用的标题和图片下面的标题不一致
该如何让文中引用的标题和图片下面的标题保持一致呢 ?
要统一引用和图标题,你可以使用 LaTeX 的宏包 cleveref。cleveref 宏包允许你自动添加适当的引用前缀,以匹配图表、表格等对象的标题。
1 首先,在导言区添加以下行来引入 cleveref
宏包并配置它:
\usepackage{cleveref} \crefname{figure}{figure}{figures} \Crefname{figure}{Figure}{Figures}
上述代码中,我们使用了 \crefname 和 \Crefname 命令来配置引用的前缀。在这个例子中,我们配置了图表(figure)的引用前缀为 "figure"(小写)和 "Figure"(首字母大写)。
接下来,你可以在文档中使用 \cref
和 \Cref
命令来引用图表,而不必手动添加前缀。例如:
加入以上命令后:
(1)示例1:
as shown in \cref{fig3}.
将显示为
(2) 示例2
as shown in \Cref{fig3}.
则又显示为
2 若要文章引用标题和图片下面的标题Fig保持一致。
此时我们将以上命令修改为:
\usepackage{cleveref} \crefname{figure}{fig}{figures} \Crefname{figure}{Fig}{Figures}
(1)示例1
此时若
as shown in \cref{fig3}.
则显示为
(2)示例2
若如下:
as shown in \Cref{fig3}
则终于和图片下边的标题保持一致了
5 引用问题总结
\usepackage{cleveref} \crefname{figure}{figure}{figures} \Crefname{figure}{Figure}{Figures}
\usepackage{cleveref}
:这行代码用于引入cleveref
宏包,该宏包提供了更强大的交叉引用功能,允许你智能地引用文档中的对象,如图表、公式、章节等。\crefname{figure}{figure}{figures}
:这行代码配置了cleveref
如何处理图表的引用。具体来说:
- 第一个参数
{figure}
指定了要配置的对象类型,这里是图表(figure)。 - 第二个参数
{figure}
指定了该对象类型的引用格式,即小写形式,通常是 "figure"。 - 第三个参数
{figures}
指定了该对象类型的引用格式的复数形式,通常是 "figures"。 \Crefname{figure}{Figure}{Figures}
:这行代码配置了cleveref
如何处理图表的引用,但在这里使用了大写形式。具体来说:- 第一个参数 {figure} 指定了要配置的对象类型,这里是图表(figure)。
- 第二个参数
{Figure}
指定了该对象类型的引用格式,即首字母大写的形式,通常是 "Figure"。 - 第三个参数
{Figures}
指定了该对象类型的引用格式的复数形式,通常是 "Figures"。