Extraño efecto secundario entre amsmath, hyperref y Cleveref

Extraño efecto secundario entre amsmath, hyperref y Cleveref

Este problema parece bastante exótico, pero lo encontré en un documento de tamaño mediano y me tomó un tiempo identificar qué combinación particular de paquetes era responsable.

Cuando cargo amsmath, cleverefy hyperref(implícitamentevía pdfcomment), ref/ autorefa una ecuación ya no funciona, es decir, LaTeX arroja un Reference ... on page 1 undefinederror. Consulte el siguiente 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}

si incluyohyperref explícitamente, entonces todo funciona excepto que obtengoesta advertencia. No es un factor decisivo, pero preferiría evitarlo y simplemente usarlo hypersetuppara las opciones adicionales para hyperref.

Además, si omito amsmath, todo funciona también. Supongo que cada paquete sobrescribe parcialmente la configuración de cada uno...

Si se trata de un error, ¿dónde debería informarlo?

Respuesta1

Cargacleveref siempreafter hyperrefcomo una de las pocas excepciones en las que los paquetes deben cargarse después hyperref.

Al hacerlo en el orden incorrecto, la counterinformación se sobrescribe y \autorefno se puede controlar el contador, es decir, la etiqueta es "indefinida", lo que genera referencias incorrectas o ??resultados.

\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}

información relacionada