Hyperref:具有相同标识符 (...) 的目标已被使用,重复项被忽略

Hyperref:具有相同标识符 (...) 的目标已被使用,重复项被忽略

来自 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}

相关内容