我想引用这样的子图:
\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 参数里面。)