我正在尝试在 LaTeX 文件中插入一个图形,但 LaTeX 总是将该图形的参考编号显示为图 1 而不是 2,尽管文档中前面已经有图 1。我也无法使用 引用该图形~\ref{fig:regress}
。图号无法打印。
这是我在 LaTeX 中插入图像的代码:
\documentclass[11pt]{article}
\usepackage{graphicx}
\usepackage{caption}
\usepackage{subcaption}
\usepackage{chngcntr}
\begin{document}
I'm trying to reference Figure~\ref{fig:regress} here...
\begin{figure}[htp]
\centering
\begin{subfigure}{0.8\textwidth}
\centering
\includegraphics[width=\textwidth]{im1.png}
\caption{Scatter plot fitted with straight line}
\label{fig:linfit}
\end{subfigure}%
\begin{subfigure}{0.8\textwidth}
\centering
\includegraphics[width=\textwidth]{im2.png}
\caption{Scatter plot fitted with 2nd degree polynomial}
\label{fig:quadfit}
\end{subfigure}
\end{figure}
\newpage
\begin{figure}
\ContinuedFloat
\centering
\begin{subfigure}{0.8\textwidth}
\centering
\includegraphics[width=\textwidth]{im3.png}
\caption{Scatter plot fitted with 3rd degree polynomial}
\label{fig:cubicfit}
\end{subfigure}
\caption{Scatter plots of wavelength vs. pixel position for the spectrum from night 1, fitted with polynomials of orders 1-3.} \label{fig:regress}
\end{figure}
\end{document}
我检查了一下,\label
发现\caption
顺序正确。发生了什么?
答案1
当我用编译 MWE 时,pdflatex
出现错误
! Package caption Error: Continued `figure' after `??'.
不管什么意思 …caption
(我以前都没用过subcaption
。)
显然,当你在前一个环境没有; 的情况下caption
使用时,会出现混淆,这并不奇怪,因为没有什么可以继续的。要解决这个问题,\ContinuedFloat
figure
\caption
\phantomcaption
在第一个figure
环境中添加。 [看阿克塞尔·索末费尔特的评论。
如果您确实想在第一个环境中包含标题figure
,当然,您不能使用\phantomcaption
。
代码
请注意,我删除了所有对外部图形的引用,因为
- 我没有。
- 我不需要它们。
我还删除了\usepackage{caption}
,它确实已经被加载了subcaption
。
该chngcntr
包不会干扰此 MWE。
\documentclass[11pt]{article}
\usepackage{graphicx}
\usepackage{subcaption}
\usepackage{chngcntr}
\begin{document}
\begin{figure}
\caption{fig:before}\label{fig:before}
\end{figure}
Figure~\ref{fig:before}.
I'm trying to reference Figure~\ref{fig:regress}, subfigure~\ref{fig:linfit} and \ref{fig:quadfit} as well as \ref{fig:cubicfit} here.
\hrulefill
\begin{figure}[htp]
\centering
\begin{subfigure}{0.8\textwidth}
\caption{Scatter plot fitted with straight line}
\label{fig:linfit}
\end{subfigure}%
\begin{subfigure}{0.8\textwidth}
\caption{Scatter plot fitted with 2nd degree polynomial}
\label{fig:quadfit}
\end{subfigure}
\phantomcaption% either a phantom caption
% \caption{Scatteru plots of wavelength vs. pixel position for the spectrum from night 1, fitted with polynomials of orders 1-3.}% or a real one
\end{figure}
\hrulefill
\begin{figure}[htp]
\ContinuedFloat
\centering
\begin{subfigure}{0.8\textwidth}
\caption{Scatter plot fitted with 3rd degree polynomial}
\label{fig:cubicfit}
\end{subfigure}
\caption{Scatteru plots of wavelength vs. pixel position for the spectrum from night 1, fitted with polynomials of orders 1-3.} \label{fig:regress}
\end{figure}
\end{document}
输出
答案2
为此类行为添加额外的原因
我在处理具有以下结构的文档时遇到了类似的问题:
Lorem ipsum dolor sit amet shown in Figure~\ref{foo-bar-diagram}.
\begin{figure}[h]
\includegraphics[width=\textwidth]{assets/foo_bar_diagram.pdf}\label{foo-bar-diagram}
\caption{Foo bar bin baz}
\end{figure}
输出结果如下:
Lorem ipsum dolor sit amet 如图 4 所示。
<graphic>
图 1: Foo bar bin baz
原因是 的label
位置不对。将其放在 之后即可caption
修复输出:
Lorem ipsum dolor sit amet shown in Figure~\ref{foo-bar-diagram}.
\begin{figure}[h]
\includegraphics[width=\textwidth]{assets/foo_bar_diagram.pdf}
\caption{Foo bar bin baz}
\label{foo-bar-diagram}
\end{figure}
Lorem ipsum dolor sit amet 如图 1 所示。
<graphic>
图 1: Foo bar bin baz