Amsmath, Hyperref 및 Cleveref 사이의 이상한 부작용

Amsmath, Hyperref 및 Cleveref 사이의 이상한 부작용

이 문제는 다소 이상해 보이지만 중간 크기의 문서에서 발생했으며 어떤 특정 패키지 조합이 원인인지 확인하는 데 시간이 걸렸습니다.

amsmath, cleverefhyperref(​암묵적으로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}

관련 정보