[Tex/LaTex] Cleveref displays ?? 3.2.2 instead of the correct reference name

clevereferrors

I'm trying to use cleverref for my references but up to now it does not work for me. Currently my setup looks like this:

\documentclass[a4paper]{article}

% PACKAGES
\usepackage[english,ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage{hyperref}
\usepackage[ngerman]{varioref}
\usepackage[ngerman]{cleveref}

\begin{document}

\section{Test}\label{test}

This is some text containing a self-reference \cref{test}.

\end{document}

This yealds:

This is some text containing a self-reference ??.

Latex tells me:

LaTeX Warning: Reference `test' on page 1 undefined on input line 14.

And when I run it a second time (just using pdflatex test.tex):

LaTeX Warning: \Cref reference format for label type `' undefined on input line 14.

I already tried to set the language globally by putting ngerman into \documentclass[a4paper,ngerman] .. and also tried german and even english instead with no effect.

Does anyone have an idea what I'm doing wrong?

Best Answer

You need to change the package loading order. varioref should be loaded before hyperref and cleveref needs to be the last of the referencing related packages:

\documentclass[a4paper]{article}

% PACKAGES
\usepackage[english,ngerman]{babel}
\usepackage[utf8]{inputenc}

\usepackage[ngerman]{varioref}
\usepackage{hyperref}
\usepackage[ngerman]{cleveref}

\begin{document}

\section{Test}\label{test}

This is some text containing a self-reference \cref{test}.

\end{document}

enter image description here