在 Subfloat 中引用子图

在 Subfloat 中引用子图

我想引用这样的子图:

\documentclass{article}
\usepackage[demo]{graphicx}
\usepackage{caption}
\usepackage{subcaption}

\begin{document}

\begin{figure}
     \subfloat[A subcaption.]{\label{figure:subfigure1}\includegraphics[width=2cm]{logo}}
     \caption{A caption.}
     \label{figure:figure1}
\end{figure}

\noindent
Subfigure \ref{figure:subfigure1}, Figure \ref{figure:figure1}.

\end{document}

但是,我收到“引用未定义”警告,输出为:

在此处输入图片描述

当我使用

\usepackage{subfig} 

代替

\usepackage{caption}
\usepackage{subcaption}

输出符合预期(找到所有引用)。

我究竟做错了什么?

更新

我检查了软件包的版本。确实,它们很旧:

Package: subcaption 2008/08/31 v1.0b 
Package: caption 2009/10/09 v3.1k caption kernel (AR)

答案1

首先,\subfloat确实在软件包的早期版本中进行了定义subcaption,但这从未成为记录在案的功能(而且事实证明这是一个非常糟糕的想法,因为它与软件包\subfloat提供的功能不 100% 兼容subfig)。作为等效功能,subcaption软件包提供了(记录良好的)命令\subcaptionbox,其语法和行为略有不同(且有所增强):

\documentclass{article}
\usepackage[demo]{graphicx}
\usepackage{caption}
\usepackage{subcaption}

\begin{document}

\begin{figure}
     \subcaptionbox{A subcaption.\label{figure:subfigure1}}{\includegraphics[width=2cm]{logo}}
     \caption{A caption.}
     \label{figure:figure1}
\end{figure}

\noindent
Subfigure \ref{figure:subfigure1}, Figure \ref{figure:figure1}.

\end{document}

(使用时请注意\subcaptionbox需要\label将其放在 caption 参数里面,而不是 content 参数里面。)

相关内容