tcolorbox 和 thmtools 的引用正确但超链接错误

tcolorbox 和 thmtools 的引用正确但超链接错误

在花了几个小时追踪论文中错误超链接的问题后,我设法提出了以下 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 相冲突。

相关内容