来自 MWE:
\documentclass{memoir}
\usepackage{graphicx}
\newsubfloat{figure}
\usepackage{hyperref}
\begin{document}
\begin{figure}[h]
\subbottom[Image A]{\includegraphics[width=0.5\columnwidth]{example-image-a}}
\end{figure}
\begin{figure}
\subbottom[Image B]{\includegraphics[width=0.5\columnwidth]{example-image-b}}
\end{figure}
\end{document}
我收到警告destination with the same identifier (name{subfigure.1}) has been already used, duplicate ignored
。如果[h]
或\usepackage{hyperref}
被删除,警告就会消失。
- 为什么我会收到此警告?
- 如何最好地解决这个问题?
- 继续发出这个警告会有什么后果?
cleveref
(我在我的非 MWE 文档中收到了几个这样的警告,但我仍然想使用和链接到包括页码的子图varioref
。)
答案1
hyperref
需要加载包前 \newsubfloat
。宏调用\@addtoreset
,它由 提供支持并进行了修补,以hyperref
修复锚点名称问题。但如果之前调用过该宏,则 的原始版本在\@addtoreset
没有修补的情况下被调用,并且必须手动修复锚点名称。但如果顺序正确,则无需这样做:
\documentclass{memoir}
\usepackage{graphicx}
\usepackage{hyperref}
\newsubfloat{figure}
\begin{document}
\begin{figure}[h]
\subbottom[Image A]{\includegraphics[width=0.5\columnwidth]{example-image-a}}
\caption{First}
\end{figure}
\begin{figure}
\subbottom[Image B]{\includegraphics[width=0.5\columnwidth]{example-image-b}}
\caption{Second}
\end{figure}
\end{document}