更新

更新

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-apav7.5 (2017-11-05)开始\DeclareLanguageMapping不再需要显式. 使用 可以自动为您完成映射\DeclareLanguageMappingSuffix{-apa}

当然,这只有biblatex-apa附带.lbx适合您的语言的文件时才能正常工作。

如果您遇到未定义的问题,请更新biblatex、Biber 和其最新版本。如果您仍使用旧版本的或,则此答案的旧版本保留在下面。biblatex-apa\mkbibdateapalongextrabiblatexbiblatex-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 节本土化获取更多提示。

这意味着对于每个您加载的语言babelpolyglossia(但事情有点复杂),您将需要一个映射。

如果您根本不加载,您还必须提供语言映射babel。在这种情况下,默认语言是英语,您需要\DeclareLanguageMapping{english}{english-apa}


每当您声明语言映射时,如果需要,biblatex就会使用新文件(在我们的例子中),即如果请求了映射语言(在我们的例子中)。british-apa.lbxenglish

british-apa.lbx包含一些由 声明的附加“BibliographyExtras” \DefineBibliographyExtras{british}。这些附加项仅适用于它们指定的确切语言(此处british)。因此,即使我们强制biblatex加载british-apa.lbx而不是,english.lbx我们也无法使用“BibliographyExtras”,因为我们的文档english仅要求它们,但它们仅适用于british

相关部分文档,§ 4.11.8 自定义本地化模块,第 232 页状态:

请注意,\DeclareLanguageMapping并不旨在处理语言变体(例如,AmericanEnglish 与 BritishEnglish)或babel 语言别名(例如,USenglishamerican)。例如,babel 提供USenglish类似于的选项american。因此, biblatex附带一个USenglish.lbx文件,该文件简单地继承了来自的所有数据american.lbx(反过来又从中获取“字符串” english.lbx)。换句话说,语言变体和babel 语言别名的映射发生在文件级别,重点是 biblatex只需添加其他文件即可扩展的语言支持lbx

最简单的解决方案是使用britishamerican代替“通用” 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,并将所有出现的 替换为britishenglish其中最重要的是\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”,效果很好。

相关内容