如何让带有 babelshorthands 的 polyglossia 与 hyperref 和 csquotes 协同工作?

如何让带有 babelshorthands 的 polyglossia 与 hyperref 和 csquotes 协同工作?

我刚刚从 切换到babel,并遇到了几个与中polyglossia的使用相关的错误。只有设置为并且已加载时才会出现问题。当使用 而不是 时,不会出现这些问题。有人知道如何解决这个问题吗?\enquote\sectionbabelshorthands=truepolyglossiahyperrefbabelpolyglossia

例子

\documentclass{article}
\usepackage{polyglossia}
\setmainlanguage[babelshorthands=true]{german} % problems
%\setmainlanguage{german} % no problems
%\usepackage[german]{babel} % no problems
\usepackage{csquotes}
\usepackage{hyperref}

\begin{document}
\section{\enquote{Test}}
\end{document}

错误信息

! Argument of \language@active@arg" has an extra }.
<inserted text> 
            \par 
l.9 \section{\enquote{Test}}

答案1

您过早启用了简写。这会干扰不期望 catcode 更改的软件包的加载。因此,\enquote用于书签的版本定义为活动字符",而不是非活动字符。

解决方案:提前加载包csquotes

...
\usepackage{csquotes}
...
\setmainlanguage[babelshorthands=true]{german}

顺便说一句,包babel已经吸取了教训,并稍后通过激活简写\AtBeginDocument

相关内容