在花了几个小时追踪论文中错误超链接的问题后,我设法提出了以下 MWE:
%!TEX program = pdflatex
\documentclass{scrbook}
\usepackage{hyperref,cleveref}
\usepackage{thmtools} % <-- comment this out to fix the issue!
\usepackage{tcolorbox}
\tcbuselibrary{xparse}
\DeclareTColorBox[auto counter,number within=section,crefname={example}{examples}]{example}{ g O{} }{%
IfValueTF={#1}{title={example~\thetcbcounter\ (#1)}}{title=example~\thetcbcounter},#2
}
\begin{document}
\chapter{First chapter}
\begin{example}[label=ex:test]{My title}
Foo.
\end{example}
\chapter{Second Chapter}
\begin{example}[label=ex:test2]{My title}
Foo.
\end{example}
This was \cref{ex:test2}.
The number is right, but the hyperlink leads to \cref{ex:test}.
\end{document}
如果thmtools
加载了,则指向第二个示例的超链接是错误的,否则一切都按预期工作。这种行为对我来说似乎是不受欢迎的,即使用的声明tcolorbox
不应干扰thmtools
。此外,引用是正确的,但超链接错误,这一事实非常奇怪。
由于我并不真正依赖它,所以thmtools
我可以轻松地禁用它,但我对这种行为的原因很感兴趣,并想将其报告为一个可能的错误。
答案1
你应该尝试hyperref
尽可能晚地加载(经验法则),因此顺序
\documentclass{scrbook}
\usepackage{thmtools}
\usepackage{hyperref}
\usepackage{cleveref}
\usepackage{tcolorbox}
将不会显示您的问题。
一个可能的原因是,thmtools.sty
加载thm-autoref.sty
的某些超链接修改可能与 cleveref 或 hyperref 相冲突。