hyperref 相同标识符警告与并排算法

hyperref 相同标识符警告与并排算法

下面的代码用于生成两个并排浮动到页面顶部的算法。

\documentclass{article}

\usepackage{algpseudocode}
\usepackage{algorithm}
\usepackage{caption}
\usepackage{hyperref}

\begin{document}
\begin{figure}[!t]
  \begin{minipage}[t]{.475\linewidth}
    \begin{algorithm}[H]
      \caption{Foo}
      \label{alg:foo}
      \begin{algorithmic}
        \State Hi
      \end{algorithmic}
    \end{algorithm}
  \end{minipage}\hfill
  \begin{minipage}[t]{.475\linewidth}
    \begin{algorithm}[H]
      \caption{Bar}
      \label{alg:bar}
      \begin{algorithmic}
        \State Hi
      \end{algorithmic}
    \end{algorithm}
  \end{minipage}
\end{figure}

\end{document}

程序按预期运行,除了 hyperref 生成警告

pdfTeX 警告(ext4):具有相同标识符(name{figure.caption.1})的目标已被使用,重复项被忽略

即使只有一个小页面而不是两个并排的小页面,仍然会出现警告,所以我想它是由于嵌套造成algorithm[H]figure

如何修复 hyperref 警告?

我读过了此主题以及其中的所有参考资料,但找不到解决方案。

答案1

禁用 hypcap 功能,可以全局禁用,也可以只针对此图禁用。它会被浮点图中的双标题弄糊涂:

\documentclass{article}

\usepackage{algpseudocode}
\usepackage{algorithm}
%
\usepackage{caption}
\usepackage{hyperref}

\begin{document}
\begin{figure}[!t]
\captionsetup{hypcap=false}
  \begin{minipage}[t]{.475\linewidth}
    \begin{algorithm}[H]
    \caption{Foo}
      \label{alg:foo}
      \begin{algorithmic}
        \State Hi
      \end{algorithmic}
    \end{algorithm}
  \end{minipage}\hfill
  \begin{minipage}[t]{.475\linewidth}
    \begin{algorithm}[H]
      \caption{Bar}
      \label{alg:bar}
      \begin{algorithmic}
        \State Hi
      \end{algorithmic}
    \end{algorithm}
  \end{minipage}
\end{figure}

\end{document}

相关内容