我正在尝试使用 XeLaTeX、Polyglossia 和 BibLaTeX 排版一份英式英语文档,并附带 APA 风格的参考文献。
不幸的是,我收到以下错误:
! Undefined control sequence.
<argument> \mkbibdateapalongextra
以下是一个最小的工作示例:
\begin{filecontents}{mwe.bib}
@online{test2012,
author={John Doe},
title={It is not working},
date={2012-02-03},
url={http://google.com/},
urldate={2012-03-18}
}
\end{filecontents}
\documentclass[12pt,a4paper]{article}
\usepackage{polyglossia}
\setdefaultlanguage[variant=british]{english}
\usepackage{csquotes}
\usepackage[backend=biber, style=apa]{biblatex}
\DeclareLanguageMapping{british}{british-apa}
\bibliography{mwe.bib}
\begin{document}
This is a reference. \cite{test2012}
\clearpage
\printbibliography
\end{document}
在附加命令后此解决方案,我收到一个不同的错误:
! Undefined control sequence.
<argument> \mkbibdateapalongmdy
尽管英式英语是一种通用语言,并且存在 lbx 文件,但该问题似乎与上面提到的问题有关。
答案1
这个问题与多语种没有直接关系。问题在于没有english-apa.lbx
。现有的british-apa.lbx
为英国人定义了额外内容。正如 biblatex 文档中提到的那样,“\DeclareLanguageMapping
不打算处理语言变体(例如,美式英语与英式英语)或 babel 语言别名(例如,美式英语与美式英语)。”
因此这也会中断:
\usepackage[english]{babel}
\usepackage{csquotes}
\usepackage[backend=biber, style=apa]{biblatex}
\DeclareLanguageMapping{english}{british-apa}
虽然这里工作正常:
\usepackage[british]{babel}
\usepackage{csquotes}
\usepackage[backend=biber, style=apa]{biblatex}
\DeclareLanguageMapping{british}{british-apa}
一个解决方案是复制一份british-apa.lbx
并将其命名为例如,english-apa.lbx
然后至少将british
后面的\DefineBibliographyExtras
和改为\ProvidesFile
英文。然后这个就可以了:
\usepackage{polyglossia}
\setdefaultlanguage[variant=british]{english}
\usepackage{csquotes}
\usepackage[backend=biber, style=apa]{biblatex}
\DeclareLanguageMapping{english}{english-apa}
也许可以编写一个更短的lbx
程序来重用大部分的定义british-apa.lbx
,但我对 biblatex 了解不够,无法直接编写此文件。
解决这个问题的另一种方法可能是编写一个gloss-british.ldf
多语版本。