当在多个页面上使用子浮点数时,我习惯于\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
。可能是因为subcaption
和caption
包是由同一作者创建的,所以标签确实不是\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}