使用polyglossia
和cleveref
(原始安装)时出现问题。它未使用所选语言。
示例文档,其中仅使用包支持的语言:
\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}
给出预期结果