cleveref 没有使用所选语言

cleveref 没有使用所选语言

使用polyglossiacleveref(原始安装)时出现问题。它未使用所选语言。

示例文档,其中仅使用包支持的语言:

\documentclass{article}
\usepackage{polyglossia}
\setmainlanguage{german}
\setotherlanguage{english}
\usepackage{cleveref}
\begin{document}
\section{Test1}\label{sec:test1}
Blablabla \Cref{sec:test1}.
\selectlanguage{english}
\section{Test2}\label{sec:test2}
Blablabla \Cref{sec:test2}.
\end{document}

结果如下所示。请注意,在第二部分之前,我们已选择english为当前语言,但它却出现了Abschnitt

在此处输入图片描述

使用时也会出现以下错误葡萄牙语作为主要语言(无论variant=brazilian是否使用):

! Undefined control sequence.
\__hook begindocument ...ame extras\cref@language
                                                  \endcsname }\@ifundefined ...

这个问题是由于cleveref定义了语言brazilian而不是而引起的portuguese

答案1

正如@DaiBowem 所指出的,这回答表示“\cref@addlanguagedefs如果您使用”,则当前已损坏polyglossia,用于检查语言是否已加载的命令不再存在。修复方法是通过添加以下内容来提供这些缺失的命令:

\makeatletter
\providecommand\german@loaded{}
\providecommand\english@loaded{}
\makeatother

修补后的示例如下:

\documentclass{article}
\usepackage{polyglossia}
\setmainlanguage{german}
\setotherlanguage{english}
\usepackage{cleveref}
\makeatletter
\providecommand\german@loaded{}
\providecommand\english@loaded{}
\makeatother
\begin{document}
\section{Test1}\label{sec:test1}
Blablabla \Cref{sec:test1}.
\selectlanguage{english}
\section{Test2}\label{sec:test2}
Blablabla \Cref{sec:test2}.
\end{document}

给出预期结果

在此处输入图片描述

相关内容