介绍
我正在biblatex
使用 (修改日期 2016-08-03 18:31) 后端测试软件包的开发版本 (3.5) biber
。这些版本添加了各种日期支持(例如近似日期、公元前/公元前日期、日期时间)。
我正在尝试biblatex
使用polyglossia
(版本 1.42.1;打包于 2016-03-29)。特别是书目条目中的日期会受到polyglossia
语言variant
设置的影响。主要是 - 日、月、年顺序;以及月份名称 - 取决于语言。
我正在使用 xetex 引擎。
我的最小工作示例(MWE)是:
\documentclass{article}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@article{barker_2016_swiss,
author = {Barker, Anne},
title = {Swiss voters say no to guaranteed free money},
date = {2016-06-06},
journaltitle = {ABC News},
}
\end{filecontents}
\usepackage{fontspec}
%\usepackage[british]{babel}
\usepackage{polyglossia}
\setdefaultlanguage[variant=british]{english}
\usepackage[%
style=authoryear,%
alldates=long,%
language=auto,%
autolang=langname,%
backend=biber]{biblatex}
\addbibresource{\jobname.bib}
\begin{document}
Current language: \currentlang. \autocite{barker_2016_swiss}
\printbibliography
\end{document}
结果
我得到:
当前语言:英语。(Barker 2016)
参考
安妮·巴克 (Anne Barker) (2016 年 6 月 6 日)。“瑞士选民拒绝保证免费资金”。引自:ABC 新闻。
也就是说,输出似乎将日期格式化为美式英语(这是 biblatex 后续版本的默认设置)。
预期的
然而,我预期的是“当前语言:英国”,日期格式为“2016 年 6 月 6 日”。事实上,如果我将 MWE 更改为使用babel
...,我就会得到这样的结果。
\usepackage[british]{babel}
%\usepackage{polyglossia}
%\setdefaultlanguage[variant=british]{english}
...也就是说,结果是(正如我所料)...
当前语言:英语。(Barker 2016)
参考
巴克,安妮 (2016 年 6 月 6 日)。“瑞士选民拒绝保证免费资金”。出处:ABC 新闻。
使用主要语言测试多语能力
此外,如果我使用polyglossia
主语言设置,而不是变体,那么我会得到预期的结果。例如,如果在我的 MWE 中我有
%\usepackage[british]{babel}
\usepackage{polyglossia}
\setdefaultlanguage{french}
...然后我得到...
当前语言:法语。(Barker 2016)
参考
Barker, Anne (2016 年 6 月 6 日)。“瑞士选民拒绝保证免费资金”。出处:ABC 新闻。
问题摘要
总之,使用我的 MWE,babel
和在使用和时分别polyglossia
按预期工作。但使用时不起作用。biblatex
\usepackage[*mainlanguage*]{babel}
\setdefaultlanguage{*mainlanguage*}
polyglossia
\setdefaultlanguage[variant=*somevariantlanguage*]{english}
其他考虑因素
我已经将它交给 biblatex 开发人员(日期支持)、@PLK 和他们写
我认为 Polyglossia 仍然存在一些问题 - 我认为已经发布了一个待发布版本来解决其中的一些问题。
我曾尝试使用 LuaTex 引擎,但没有成功。
设置\usepackage[ ... language=british ....]{biblatex}
没有帮助。
此时感觉像是 Polyglossia 中的一个错误。但在向 Polyglossia github 提出问题之前,如果有人能指出我做错了什么,我将不胜感激。此外,如果有人能用生产版本重现此问题,biblatex/biber
我就可以免去降级的繁琐程序。
更新:
2016-08-16 07:39:从评论来看,这似乎是多语症的问题。所以我发了Github > Polyglossia > 将 Polyglossia 语言变体暴露给其他软件包,例如 Biblatex。#154. (编辑:2016-08-16 08:00 更正链接)
2016-08-17 19:31 我的解决方法是使用babel
(感谢@UlrikeFischer 扫清障碍)。
答案1
更新的所有多语言功能都应在v3.14(或更高版本)和v1.46(或更高版本)
biblatex
上按预期运行。biblatex
polyglossia
MWE
babel
现在给出了预期的(等效)输出。
polyglossia
如果您在使用和时遇到任何问题biblatex
,请更新您的系统,以便至少拥有biblatex
3.14(和匹配的 Biber 版本)和polyglossia
1.46。如果这没有帮助,请在以下位置打开错误报告https://github.com/plk/biblatex/issues。以下该答案的其余部分仅供历史参考。
这样就能得到答案了。
这记录csquotes
,由同一位作者设计biblatex
并使用了类似的技术,第 2 页指出
请注意,
polyglossia
由于 缺少其他软件包的适当接口,因此支持目前处于初步状态polyglossia
。实际上,这意味着csquotes
可以检测语言(例如english
),但不能检测语言变体(例如british
)。
同样的考虑也适用于biblatex
。由于polyglossia
不提供检测所用语言变体的界面,因此biblatex
始终仅使用主要语言。在您的示例中,这意味着无论variant
您选择哪种语言,都只会english.lbx
加载 ,因此您无法british.lbx
使用polyglossia
。
对于某些语言来说,一个可行的解决方法是切换到babel
而不是polyglossia
。因为british
这当然是一个选择。但对于其他语言来说,这可能不那么容易。
从biblatex
3.11 开始,你可以使用\DeclareLanguageMapping{english}{british}
这种方法。不是的预期用途\DeclareLanguageMapping
,但目前有效作为一种解决方法只要您不在english
文档中使用。(不能保证这种方法会继续有效,因为文档中明确反对滥用不同方言或语言的语言映射而不是风格版本。)
polyglossia
我已经在回答中讨论了\DeclareLanguageMappingBiblatex 中的后缀、继承和多语种从更技术的角度来说。我不会重复整个解释,但简而言之,问题如下。
babel
将语言方言/变体视为具有文件.ldf
和单独标识符的语言。polyglossia
另一方面,它具有可以使用属性/选项进行修改的主要语言的概念。最突出的选项之一是variant
,它恰好与英语的babel
方言非常对应。对于德语,需要variant
和spelling
。对于语言变体应该使用哪些属性,既没有约束性约定,也没有跨语言模块的统一属性实现。这使得软件包很难检测到所使用的语言变体polglossia
并将其转换为babel
语言名称(反之亦然)。
答案2
我最终创建了最简单的解决方案,即 Polyglossiagloss-australian.ldf
文件(请参阅SE 问题 166739),只需gloss-english.ldf
进行一些细微的调整,语言australian
就可以融入 Biblatex,日期也可以采用澳大利亚格式显示。
将管理处理(语言/方言集群的默认设置是什么?)与操作处理(每个/the
的具体设置是什么?)分离可能是可行的方法,以便于维护和使用等等。variant
dialect
在我看来,从拓扑学角度来看,这与刑法典的组织方式类似,刑法典分为一般部分和特殊或具体部分,而澳大利亚的法规则杂乱无章。另一种表述方式是将对象之间的关系与对象本身分开。
目前还没有足够的代码gloss-english.ldf
来处理六组(真正独立的)设置(variants
),以及设置默认处理,实际上,所有这些都包含在一个if
语句中。不过,这是一次勇敢的尝试。也是一个好的开始。
澳大利亚方面的下一步是能够在同一文档/参考书目中使用所有三种日期格式,并且在引用/援引其他司法管辖区和/或样式时保留原始格式。