Der folgende Code
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[american]{babel}
\usepackage[hidelinks]{hyperref}
\usepackage[nameinlink, capitalize, noabbrev]{cleveref}
\begin{document}
\begin{figure}[!htbp]
%
\caption{Sample.}
\label{fig:sample}
%
\centering
%
Some nice picture goes here.
%
\end{figure}
Some text referring to the stuff on \cpageref{fig:sample}.
\end{document}
Ergibt das Ergebnis:
Handelt es sich hier um einen Fehler im cleveref
Paket oder übersehe ich etwas völlig Offensichtliches?
Antwort1
Es gibt einen Fehler cleveref 0.21.1
vom 08.02.2018. Die Version 0.19 von 2013 funktioniert wie erwartet.
Ein kleiner Workaround extrahiert den Hyperanker mit refcount
Features (die hyperref
sowieso geladen werden).
\documentclass[english]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{babel}
\usepackage[hidelinks]{hyperref}
\usepackage[nameinlink, capitalize, noabbrev]{cleveref}
\renewcommand{\cpageref}[1]{%
\IfRefUndefinedExpandable{#1}{}{%
\hyperlink{\getrefbykeydefault{#1}{anchor}{??}}{Page \getpagerefnumber{#1}}%
}%
}
\begin{document}
\begin{figure}%[!htbp]
%
\caption{Sample.} \label{fig:sample}
%
\centering
%
Some nice picture goes here.
%
\end{figure}
Some text referring to the stuff on \cpageref{fig:sample}.
\end{document}
Antwort2
Behoben in der neuesten Vorabversion (aktuell v0.21.3), verfügbar untermeine Webseite.
Bitte beachten Sie, dass Stackexchange kein Bugtracker ist. Stellen Sie Fragen an SE; melden Sie Fehler über den normalen Fehlermeldekanal der Software. (Einfache E-Mail an die in den Paketdokumenten angegebene Adresse für cleveref
; Bugzilla/Github/Trac/welcher Bugtracker auch immer verwendet wird für anspruchsvollere Software.)
Fehlerberichte sind ein ebenso wertvoller Teil der Entwicklung freier Software wie Codebeiträge. Fragen Sie unbedingt zuerst bei SE danach, aber vergessen Sie nicht, auch einen richtigen Fehlerbericht einzureichen! Andernfalls besteht die Gefahr, dass sie unbeachtet, ungeliebt und ungefixt bei SE versauern.