![更新](https://linux22.com/image/275538/%E6%9B%B4%E6%96%B0.png)
biblatex-apa
给了我这个:
! Undefined control sequence.
<argument> \mkbibdateapalongextra
{labelyear}{labelmonth}{labelday}\iffieldu...
我正在使用默认(英语)语言,并已完成:
\DeclareLanguageMapping{norsk}{norsk-apa}
\DeclareLanguageMapping{english}{american-apa}
事物。
这是一个简短的例子:
\documentclass[english]{memoir}
\usepackage{babel}
\usepackage{roffe}
\usepackage[backend=biber,date=short,maxcitenames=2,style=apa]{biblatex}
\DeclareLanguageMapping{norsk}{norsk-apa}
\DeclareLanguageMapping{english}{american-apa}
\addbibresource{Papers2.bib}
\addbibresource{R.bib}
\begin{document}
\cite{R-base}
\printbibliography
\end{document}
这重复了该问题。
答案1
更新
biblatex
从v3.8 (2017-11-04) 和biblatex-apa
v7.5 (2017-11-05)开始\DeclareLanguageMapping
不再需要显式. 使用 可以自动为您完成映射\DeclareLanguageMappingSuffix{-apa}
。
当然,这只有biblatex-apa
附带.lbx
适合您的语言的文件时才能正常工作。
如果您遇到未定义的问题,请更新biblatex
、Biber 和其最新版本。如果您仍使用旧版本的或,则此答案的旧版本保留在下面。biblatex-apa
\mkbibdateapalongextra
biblatex
biblatex-apa
旧答案
如果你使用,biblatex-apa
你将需要将每种使用的语言(至少是主要语言)与其-apa
对应语言进行语言映射
\DeclareLanguageMapping{american}{american-apa}
如果您的文档是american
。另请参阅使用 apa6e 与 biblatex-apa 时出现的问题。
这一点在biblatex-apa
文档,第 3 节
加载时以通常的方式指定样式
biblatex
。如果你使用 babel:\usepackage[american]{babel} \usepackage{csquotes} \usepackage[style=apa]{biblatex} \DeclareLanguageMapping{american}{american-apa}
请参阅第 3.2 节本土化获取更多提示。
这意味着对于每个您加载的语言babel
或polyglossia
(但事情有点复杂),您将需要一个映射。
如果您根本不加载,您还必须提供语言映射babel
。在这种情况下,默认语言是英语,您需要\DeclareLanguageMapping{english}{english-apa}
。
每当您声明语言映射时,如果需要,biblatex
就会使用新文件(在我们的例子中),即如果请求了映射语言(在我们的例子中)。british-apa.lbx
english
british-apa.lbx
包含一些由 声明的附加“BibliographyExtras” \DefineBibliographyExtras{british}
。这些附加项仅适用于它们指定的确切语言(此处british
)。因此,即使我们强制biblatex
加载british-apa.lbx
而不是,english.lbx
我们也无法使用“BibliographyExtras”,因为我们的文档english
仅要求它们,但它们仅适用于british
。
相关部分文档,§ 4.11.8 自定义本地化模块,第 232 页状态:
请注意,
\DeclareLanguageMapping
并不旨在处理语言变体(例如,AmericanEnglish 与 BritishEnglish)或babel
语言别名(例如,USenglish
与american
)。例如,babel
提供USenglish
类似于的选项american
。因此,biblatex
附带一个USenglish.lbx
文件,该文件简单地继承了来自的所有数据american.lbx
(反过来又从中获取“字符串”english.lbx
)。换句话说,语言变体和babel
语言别名的映射发生在文件级别,重点是biblatex
只需添加其他文件即可扩展的语言支持lbx
。
最简单的解决方案是使用british
或american
代替“通用” english
。
以下 MWE 可在我的计算机上运行。
\documentclass[british]{article}
\usepackage{babel}
\usepackage{csquotes}
\usepackage[backend=biber,date=short,maxcitenames=2,style=apa]{biblatex}
\DeclareLanguageMapping{british}{british-apa}
\addbibresource{\jobname.bib}
\begin{filecontents}{\jobname.bib}
@Manual{R-base,
title = {R: A Language and Environment for Statistical Computing},
author = {{R Development Core Team}},
organization = {R Foundation for Statistical Computing},
address = {Vienna, Austria},
year = {2008},
isbn = {3-900051-07-0},
url = {http://www.R-project.org},
}
\end{filecontents}
\begin{document}
\cite{R-base}
\nocite{*}
\printbibliography
\end{document}
如果你不想切换到其他语言english
,你可以使用多语症和 biblatex-apa。
复制british-apa.lbx
到 LaTeX 可以找到的地方,将其重命名为english-apa.lbx
,并将所有出现的 替换为british
(english
其中最重要的是\DefineBibliographyExtras{british}
变为\DefineBibliographyExtras{english}
)
答案2
我收到了同样的错误消息,原因很简单——我的语言(芬兰语)尚未(今天,2021-12-12)包含在官方 LaTeX 发行版中:
https://www.tug.org/texlive//Contents/live/texmf-dist/tex/latex/biblatex-apa6/
虽然有人已经在 Github 上进行了本地化:
https://github.com/plk/biblatex-apa/blob/master/tex/latex/biblatex-apa/lbx/finnish-apa.lbx
通过仔细查看 pdflatex 输出,我发现了这个问题,首先我错过了一个警告(迷失在 Overfull hbox -warnings 的丛林中):
Package biblatex Warning: File 'finnish-apa.lbx' not found!
(biblatex) Ignoring mapping 'finnish' -> 'finnish-apa'.
解决方案是手动安装 Finnish-apa.lbx(查看你的发行版存储其他 lbx 文件的位置)或尽可能使用其他引用样式(我选择了“authordate”,效果很好。