错误的图形参考编号

错误的图形参考编号

我正在尝试在 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使用时,会出现混淆,这并不奇怪,因为没有什么可以继续的。要解决这个问题,\ContinuedFloatfigure\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

相关内容