這個問題看起來相當奇怪,但我在一個中等大小的文檔中遇到了它,我花了一段時間才確定是哪個特定的包組合造成的。
當我加載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
總是afterhyperref
作為少數例外之一,應該在之後加載包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}