Cleveref 显示 ?? 3.2.2,而不是正确的引用名称

Cleveref 显示 ?? 3.2.2,而不是正确的引用名称

我正在尝试使用 cleverref 来获取引用,但到目前为止它还不起作用。目前我的设置如下:

\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 is some text containing a self-reference ??.

Latex 告诉我:

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

当我第二次运行它时(仅使用pdflatex test.tex):

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

ngerman我已经尝试通过输入来全局设置语言\documentclass[a4paper,ngerman] ..,并且也尝试过german,但甚至english没有任何效果。

有人知道我做错了什么吗?

答案1

您需要更改包加载顺序。varioref应该在引用相关包之前加载hyperref,并且cleveref需要是最后一个:

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

在此处输入图片描述

相关内容