![hyperref 相同标识符警告与并排算法](https://linux22.com/image/451188/hyperref%20%E7%9B%B8%E5%90%8C%E6%A0%87%E8%AF%86%E7%AC%A6%E8%AD%A6%E5%91%8A%E4%B8%8E%E5%B9%B6%E6%8E%92%E7%AE%97%E6%B3%95.png)
下面的代码用于生成两个并排浮动到页面顶部的算法。
\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}