多语干扰了 csquotes 自动切换引用样式的能力

多语干扰了 csquotes 自动切换引用样式的能力

我正在处理一个同时使用polyglossiacsquotes包的文档。但是,polyglossia引用样式之间的自动切换(根据所选语言)不起作用。如果我们以这个答案并另外加载polyglossia包,引用样式保持不变:

\documentclass{article}
\usepackage{csquotes}
\usepackage{polyglossia}
\setdefaultlanguage{english}
\setotherlanguages{french, american, ngerman, spanish}
%\DeclareQuoteStyle{ngerman}%
%  {\quotedblbase}
%  {\textquotedblright}
%  [0.05em]
%  {\textquoteleft}
%  {\textquoteright}

\begin{document}
  \enquote{UK English} 
  \selectlanguage{american} \enquote{US English} 
  \selectlanguage{spanish} \enquote{Spanish} 
  \selectlanguage{french} \enquote{Français} 
  \selectlanguage{ngerman} \enquote{Deutsche}
\end{document}

在此处输入图片描述

请注意,与原始示例相比,我已经从命令中删除了语言选项\documentclass,因为它们会干扰包\setotherlanguages的命令polyglossia,从而导致错误(“命令 \textspanish 已定义。“)。

我还删除了autostylecsquotes包的选项,因为出于某种原因,该包最终不知道适当的样式(“没有适合语言的风格”。“,尽管根据这个答案,它应该能解决问题):

在此处输入图片描述

已报告类似问题这里,这就是为什么我尝试按照答案中的建议重新定义相应的引用样式,但却没有任何效果。

编辑:我还从原始示例中删除了fontencinputenc和包。)babel

答案1

您可以使用autostylecsquotes 选项。但您应该设置语言以便\babelname具有正确的值:

\documentclass{article}
\usepackage[autostyle]{csquotes}
\usepackage{polyglossia}
\setdefaultlanguage[variant=british]{english}
\setotherlanguages{french,spanish}
\setotherlanguage[spelling=new]{german}

\begin{document}
  \babelname: \enquote{UK English}
  \selectlanguage[variant=american]{english}\babelname:  \enquote{US English}
  \selectlanguage{spanish}\babelname:  \enquote{Spanish}
  \selectlanguage{french}\babelname:  \enquote{Français}
  \selectlanguage{german}\babelname:  \enquote{Deutsche}
\end{document}

在此处输入图片描述

答案2

经过多次尝试和错误,我发现唯一有效的方法是使用命令\setquotestyle,如这个帖子

\documentclass{article}
\usepackage{csquotes}
\usepackage{polyglossia}
\setdefaultlanguage{english}
\setotherlanguages{french, american, ngerman, spanish}

\begin{document}
  \setquotestyle[british]{english} \enquote{UK English} 
  \setquotestyle[american]{english} \enquote{US English} 
  \selectlanguage{spanish} \setquotestyle[spanish]{spanish} \enquote{Spanish}
  \selectlanguage{french} \setquotestyle[guillemets]{french} \enquote{Français}
  \selectlanguage{ngerman} \setquotestyle[quotes]{german} \enquote{Deutsche}
\end{document}

在此处输入图片描述

但这是一个相当丑陋的解决方案,我不知道它为什么会起作用或者为什么有必要。

相关内容