Esse problema parece bastante exótico, mas o encontrei em um documento de tamanho médio e demorei um pouco para identificar qual combinação específica de pacotes era responsável.
Quando eu carrego amsmath
e cleveref
(hyperref
implicitamentevia pdfcomment
), ref
/ autoref
para uma equação não funciona mais, ou seja, o LaTeX gera um Reference ... on page 1 undefined
erro. Veja o seguinte 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}
Se eu incluirhyperref
explicitamente, então tudo funciona, exceto que eu receboeste aviso. Não é um problema, mas prefiro evitá-lo e usar apenas hypersetup
as opções adicionais para hyperref
.
Além disso, se eu omitir amsmath
, tudo funcionará também. Suponho que cada pacote sobrescreva parcialmente as configurações um do outro...
Se isso for um bug, onde devo reportá-lo?
Responder1
Carregarcleveref
sempreafter hyperref
como uma das poucas exceções onde os pacotes devem ser carregados depois hyperref
!
Fazendo isso na ordem errada, a counter
informação é sobrescrita e \autoref
não consegue ser capturada pelo contador, ou seja, o rótulo é 'indefinido', levando a referências erradas ou ??
como saída.
\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}