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 Warning: Reference `test' on page 1 undefined on input line 14.

そして、2 回目に実行すると ( のみを使用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}

ここに画像の説明を入力してください

関連情報