这个问题看起来很奇怪,但我在一份中等大小的文档中遇到了它,我花了一段时间才确定哪个特定的包组合导致了这个问题。
当我加载时amsmath
,cleveref
并且hyperref
(隐含地通过pdfcomment
)、ref
/autoref
到方程式不再起作用,即 LaTeX 抛出错误Reference ... on page 1 undefined
。请参阅以下 MWE:
\documentclass[12pt]{scrartcl}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenx}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{amsmath}
%% Hyperlinks
%\usepackage[breaklinks]{hyperref}
\usepackage{cleveref}
%% implicitly loads `hyperref`
\usepackage{pdfcomment}
\begin{document}
\section{Test}
Etwas Fülltext, bevor die Gleichung kommt:
\begin{equation}
E_\mathrm{kin} = \frac{m}{2} v^2 \label{eq:kinErg}
\end{equation}
Jemand fand heraus, dass \autoref{eq:kinErg} gilt.
\end{document}
如果我包括hyperref
明确地,然后一切正常,除了我得到此警告。这不是什么大问题,但我宁愿避免它,而只将其用作hypersetup
附加选项hyperref
。
另外,如果我省略amsmath
,一切也都有效。我想每个包都会部分覆盖彼此的设置...
如果这是一个错误,那么我应该在哪里报告它?
答案1
加载cleveref
总是作为hyperref
少数例外之一,包应该在之后加载hyperref
!
如果按错误的顺序执行,counter
信息将被覆盖,并且\autoref
无法掌握计数器,即标签“未定义”,从而导致错误的引用或??
输出。
\documentclass[12pt]{scrartcl}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenx}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{amsmath}
%% Hyperlinks
%\usepackage[breaklinks]{hyperref}
%% implicitly loads `hyperref`
\usepackage{pdfcomment}
\usepackage{cleveref}
\begin{document}
\section{Test}
Etwas Fülltext, bevor die Gleichung kommt:
\begin{equation}
E_\mathrm{kin} = \frac{m}{2} v^2 \label{eq:kinErg}
\end{equation}
Jemand fand heraus, dass \autoref{eq:kinErg} gilt.
\end{document}