一篇短文让你明白LaTeX的引用

这篇短文介绍了在LaTeX中如何正确引用图片,强调了不应在figure环境和caption命令中使用标签。通过示例代码,解释了引用失败的原因,即编译器对figure环境的操作限制。解决方法是将label命令移出figure环境或调整figure和caption的位置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天写篇关于 LaTeX \LaTeX LATEX的小短文——到底该如何进行内容“引用”。虽然本文重点介绍图片的引用,但是看完本文后,你不仅会使用本文思想对任意 LaTeX \LaTeX LATEX对象进行引用(\ref)操作,还会了解 LaTeX \LaTeX LATEX的解析原理。


如下代码,我准备引用一张图片:

% 导入宏包
\usepackage{graphicx}

% 省略\begindocument等内容……

% 引用宏
\includegraphics[scale=0.5]{triangle/S-a-h.png}

\includegraphics便是我们的图片引用宏。接下来,为了使图片居中,我们将其嵌入\centerline宏:

% 省略一堆内容……

% 嵌入\centerline
\centerline{\includegraphics[scale=0.5]{triangle/S-a-h.png}}

当然,这样写代码或多或少有些累赘。我们将图片写入\begin{figure}...\end{figure}中:

\begin{figure}
    \centering % 由于写到了begin...end中,就不能用centerline了
    \includegraphics[scale=0.5]{figure.png}
    \caption{插图}
    \label{fig:mypicture} % 设置引用标签
\end{figure}

之后,空几行,我们用\ref尝试引用我们的标签:\ref{fig:mypicture},完成。+T,然后你就会发现pdf完蛋了:该变成序号的地方变成了两个问号:
? ? ?? ??
这是为什么呢?在网上冲了会浪,终于找到了答案

引用失败的原因

我们先来分析一下,换位思考,要是编译器看到这段代码会怎么想。

\begin{figure} % 1
    \centering % 2
    \includegraphics[scale=0.5]{figure.png} % 3
    \caption{插图} % 4
    \label{fig:mypicture} % 5
\end{figure} % 6

第一行:编译器知道,figure模块要开始了,等待end
第二行:编译器知道,我要对下一个对象在文档中居中;
第三行:编译器知道,我要插入图片;
此时编译器不仅插入了图片,还将图片居中了
第四行:创建了一个caption文本;
第六行:编译器:label?给谁创建label呢?编译器难住了,于是抛出了一个warning。

编译器难住的原因是,\centering\includegraphics实施居中操作后,在编译层面会直接闭合这个代码scope,因为\centering只会对它紧接着的下面一个对象实施操作,并不会再往下看到\label\includegraphics的修饰。

解决方法:

\centering \begin{figure}
    \includegraphics[scale=0.5]{figure.png}
    \caption{图片}
    \label{fig:mypicture}
\end{figure}

\centering移到外面即可。如果还是问号,把\label\caption换一下位置,绝对没问题。

总之,记下一句名言:

永远不要在\begin{}\end{}里面使用\centering

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值