Hyperref 和 float 包

Hyperref 和 float 包

hyperref当使用提供链接和书签的包与float实现文档中浮动位置更改的包时,会出现问题。

加载两者会产生副作用,即 hyperref 生成的所有链接都指向文档的第一页,而不是相应的页面。以下 MWE 重现了该问题:

\documentclass{article}

\usepackage{lipsum}

\usepackage[pdftex,
            bookmarks=true,
            breaklinks,
            pagebackref=true]{hyperref}
\usepackage{bookmark}

\usepackage{float}      
   \restylefloat{figure}
   \restylefloat{table} 


\begin{document}

\lipsum[20-27]

\begin{figure}
\centering
A figure.
\caption{Figure caption}
\label{label}
\end{figure}

\lipsum[3-8]

Link to figure: \ref{label}.
\lipsum[17]

\end{document}

在这个例子中,label引用指向第一页,而不是图形实际所在的页面。

hyperref我在或文档中都没有发现关于这一点的任何提及float

答案1

解决这个问题的方法是加载float hyperref,发出影响浮点数的命令加载中hyperref

(...)
\usepackage{float}      

\usepackage[pdftex,
            bookmarks=true,
            breaklinks,
            pagebackref=true]{hyperref}
\usepackage{bookmark}

\restylefloat{figure}
\restylefloat{table} 

(...)

我不确定为什么会出现这种情况,但我可以假设其中有一些命令重新定义float会破坏由 生成的链接hyperref

相关内容