Cleveref 使用 \ContinuedFloat 时错误标记图形

Cleveref 使用 \ContinuedFloat 时错误标记图形

当在多个页面上使用子浮点数时,我习惯于\ContinuedFloat使用图形环境,这样也可以保留编号。但是,当我尝试引用整个图形时,cleveref无法获得正确的标签。

对于编号错误,有许多答案,但对于标签错误,却没有答案。

我把它放\label错地方了吗?

MWE 以及我正在使用的所有软件包如下:

\documentclass[12pt,demo]{elsarticle}

\usepackage{enumerate}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{mathtools}
\usepackage{tabu}
\usepackage{multirow}
\usepackage{textcomp}
\usepackage[utf8]{inputenc}
\usepackage[capitalise]{cleveref}
\usepackage{booktabs}
\usepackage{comment}
\usepackage[section]{placeins}
\usepackage{float}
\usepackage{subfig}
\usepackage{caption}


\begin{document}

\section{Section Title}
\Cref{fig:First} and \cref{fig:Second} can be seen in \cref{fig:Both}.


\begin{figure}
\centering
\subfloat[Caption for the first image]{
\includegraphics[width=.4\columnwidth]{Img1}%
\label{fig:First}%
}
\phantomcaption
\end{figure}

\begin{figure}
\ContinuedFloat
\centering
\subfloat[Caption for the second image]{
\includegraphics[width=.4\columnwidth]{Img2}%
\label{fig:Second}%
}
\caption{Main Caption}%
\label{fig:Both}%
\end{figure}


\end{document}

答案1

我可以提供一个解决方案,使用副标题包及其subfigure环境,而不是subfig包及其\subfloat宏。我建议进行此更改,因为\ContinuedFloat宏(由包提供caption,由包自动加载subcaption)似乎以令人不快的方式与subfig包的宏交互,最终造成混淆cleveref。可能是因为subcaptioncaption包是由同一作者创建的,所以标签确实不是\ContinuedFloat如果你与subfigure环境一起使用就会变得混乱。

如果使用该包的宏,创建子图的语法需要稍微调整一下subcaption。不过,我相信调整不会太麻烦。

在此处输入图片描述

\documentclass[12pt,demo]{elsarticle}
%% commented out the following packages as they aren't needed for the MWE
%\usepackage{enumerate}
%\usepackage{amsmath}
%\usepackage{amsfonts}
%\usepackage{mathtools}
%\usepackage{tabu}
%\usepackage{multirow}
%\usepackage{textcomp}
%\usepackage[utf8]{inputenc}
%\usepackage{booktabs}
%\usepackage{comment}
%\usepackage[section]{placeins}
%\usepackage{float}

%%%\usepackage{subfig} do not use load this package

\usepackage{subcaption} %%% instead, load the 'subcaption' package
     %%% 'subcaption' loads 'caption', which provides the macro \ContinuedFloat

\usepackage[capitalise,noabbrev]{cleveref} %%% load 'cleveref' last

\begin{document}

\section{Section Title}

\Cref{fig:First,fig:Second} can be seen in \cref{fig:Both}.

\begin{figure}
\centering
\begin{subfigure}{.4\columnwidth}
\includegraphics[width=\linewidth]{Img1}%
\caption{Caption for the first image}
\label{fig:First}%
\end{subfigure}
%%% \phantomcaption %% no need for this statement
\end{figure}

\begin{figure}
\ContinuedFloat
\centering
\begin{subfigure}{.4\columnwidth}
\includegraphics[width=\linewidth]{Img2}%
\caption{Caption for the second image}
\label{fig:Second}%
\end{subfigure}
\caption{Main Caption}%
\label{fig:Both}%
\end{figure}

\end{document}

相关内容