我不知道为什么,但加载thmtools
会破坏与算法的链接。只需删除此包或在加载之后加载\numberwithin
似乎可以修复编译,但我想知道这是否是一个已知问题,以及将其删除/移动到随机不同的行是否是修复此问题的正确方法。
MWE:(为了测试,只需点击最后一页的第二个链接:您将转到错误的定理)
\documentclass{article}
\usepackage{hyperref}
\usepackage{mathtools}
\usepackage{amssymb, amsthm, amsmath}
%% thmtools is the problem with numberwithin{algorithm}{section}!
\usepackage{thmtools}
\usepackage{algorithm, algorithmicx, algpseudocode}
\floatname{algorithm}{Protocol}
\providecommand*\algorithmautorefname{Protocol}
\numberwithin{algorithm}{section}
\begin{document}
\section{Section with links}
\begin{algorithm}[H]
\caption{I am an algorithm that attracts all the links} \label{protocol:firstProtocol}
I attract all the link...
\end{algorithm}
\newpage
\section{Section with no links}
\begin{algorithm}[H]
\caption{Nobody wants to link me :(} \label{protocol:secondProtocol}
Please link to me!!
\end{algorithm}
\newpage
Le premier est \autoref{protocol:firstProtocol} et le deuxième est \autoref{protocol:secondProtocol}.
\end{document}
答案1
除极少数hyperref
例外总是最后要加载的包(它必须重新定义许多其他包,因此需要查看它们是否已被加载)。
向下移动hyperref
,两个链接都击中了我的正确目标。