使用带有 hyperref 的 localanchorname 选项的 caption 时发出警告

使用带有 hyperref 的 localanchorname 选项的 caption 时发出警告

下面的 MWE 给出了一个警告:“警告(pdf 后端):忽略名称为‘section.1’的重复目标”。注释掉选项“localanchorname”或 \usepackage{caption} 后,警告会消失。是否可以在保留两者的同时消除(而不是消除)此警告?

\documentclass{article}
\PassOptionsToPackage{%
  localanchorname%
}{hyperref}

\usepackage{caption}
\usepackage{hyperref}

\begin{document}
\section{Heading One}
xxx

\begin{figure}
\end{figure}

\end{document}

答案1

基本上,标题与选项不兼容,localanchorname因为它在组中设置目标名称。

我认为该选项不是很有用,最好将标签放在它所属的位置,但如果您需要它,则必须在组后重置目的地:

\documentclass{article}
\PassOptionsToPackage{%
  localanchorname%
}{hyperref}

\usepackage{caption}
\makeatletter
\AtBeginDocument{%
\renewcommand*\caption@makestart[1]{%
      \begingroup
        \Hy@hypertexnamesfalse
        \hyper@makecurrent{#1.caption}%
        \global\let\my@currentHref\HyperGlobalCurrentHref
      \endgroup
       \let\@currentHref\my@currentHref
      \caption@Debug{hypcap start=\@currentHref}}}%
\makeatother
\usepackage{hyperref}

\begin{document}
\section{Heading One}
xxx

\begin{figure}
\end{figure}

\end{document}

相关内容