BibLaTeX(APA 样式)生成的参考书目中“检索自”的问题

BibLaTeX(APA 样式)生成的参考书目中“检索自”的问题

我正在使用biblatexapa style基本上一切正常。但是,LaTeX会产生以下警告

包 biblatex 警告:在输入行 90 的条目“eraut2012”处未定义参考书目字符串“retrieved”(biblatex)。

包 biblatex 警告:输入行 90 的条目“eraut2012”处的参考书目字符串“from”未定义(biblatex)。

此外,BibLaTeX以小写字母和粗体字体打印“检索自”字符串:

在此处输入图片描述

因此我的问题是:

我该如何解决这个问题?而不是“从...获得“我需要在参考书目中出现“摘自”。

我已经找到了这些讨论:[1][2].然而他们却没有提供帮助。

附言:使用\DeclareLanguageMapping{american}{american-apa}产生了同样的问题。这\DefineBibliographyExtras{english}{...是必要的,因为否则我无法在参考书目中作者后面的括号中获得出版年份。

附言:我知道这个参考文献在 APA 格式的参考书目中不需要 URL。但是,它是我列表中第一个有 URL 的参考文献...

梅威瑟:

\documentclass[a4paper]{scrbook}
\usepackage[utf8]{inputenc} 
\usepackage[english]{babel} 
\usepackage{csquotes} 

\usepackage[style=apa, sortcites=true, backend=biber]{biblatex}

\DeclareLanguageMapping{british}{british-apa}

\AtEveryBibitem{%
  \clearfield{day}%
  \clearfield{month}%
  \clearfield{endday}%
  \clearfield{endmonth}%
}

\DefineBibliographyExtras{english}{%
  \protected\def\mkbibdateapalong#1#2#3{%
    \iffieldundef{#1}%
      {}%
      {\thefield{#1}}%
    \iffieldundef{#2}%
      {}%
      {\iffieldundef{#1}%
        {}%
        {\addcomma\addspace}%
       \mkbibmonth{\thefield{#2}}}%
    \iffieldundef{#3}%
      {}%
      {\ifthenelse{\iffieldundef{#2}\OR\iffieldundef{#1}}%
        {}%
        {\addspace}%
       \stripzeros{\thefield{#3}}}}%
  \protected\def\mkbibdateapalongextra#1#2#3{%
    \iffieldundef{#1}%
      {}%
      {\thefield{#1}\printfield{extrayear}}%
    \iffieldundef{#2}%
      {}%
      {\iffieldundef{#1}%
        {}%
        {\addcomma\addspace}%
       \mkbibmonth{\thefield{#2}}}%
    \iffieldundef{#3}%
      {}%
      {\ifthenelse{\iffieldundef{#2}\OR\iffieldundef{#1}}%
        {}%
        {\addspace}%
       \stripzeros{\thefield{#3}}}}%
  \protected\def\mkbibdateapalongdmy#1#2#3{%
    \iffieldundef{#3}%
      {}%
      {\stripzeros{\thefield{#3}}}%
    \iffieldundef{#2}%
      {}%
      {\iffieldundef{#3}%
        {}%
        {\addspace}%
       \mkbibmonth{\thefield{#2}}}%
    \iffieldundef{#1}%
      {}%
      {\ifthenelse{\iffieldundef{#2}\OR\iffieldundef{#3}}%
        {}%
        {\addspace}%
       \thefield{#1}}}}

\begin{filecontents}{apa-test-bib.bib}

@incollection{eraut2012,
    location = {Dordrecht},
    title = {Developing a broader approach to professional learning},
    isbn = {978-94-007-1723-7 978-94-007-1724-4},
    url = {http://www.springerlink.com/index/10.1007/978-94-007-1724-4_2},
    pages = {21--45},
    booktitle = {Learning trajectories, innovation and identity for professional development},
    publisher = {Springer Netherlands},
    author = {Eraut, Michael},
    editor = {Mc Kee, Anne and Eraut, Michael},
    date = {2012},
    langid = {english}
}

\end{filecontents}

\addbibresource{apa-test-bib.bib}

\begin{document}

This is some text. \cite{eraut2012}
\printbibliography

\end{document}

答案1

更新:对于biblatex-apa7.5 或更高版本和biblatex3.8 或更高版本(2017 年 11 月发布),显式\DeclareLanguageMapping不再需要biblatex-apa。映射将自动针对所有受支持的语言执行。这意味着这个答案基本上已经过时了。如果可能,请更新您的 TeX 系统。

请注意,在撰写本文时(2019 年 7 月),Overleaf 仍在运行过时的系统,因此\DeclareLanguageMapping仍然需要biblatex-apa

其余答案保留在下面,以满足历史兴趣和那些仍使用旧系统的人们的需求。

您请求的语言babel和语言映射需要匹配。

要么使用

\usepackage[british]{babel} 
...
\DeclareLanguageMapping{british}{british-apa}

对于英式英语,或者使用

\usepackage[english]{babel} 
...
\DeclareLanguageMapping{english}{english-apa}

适用于美式英语(不带美式标点符号)。

在您的 MWE 中,您的文档位于 中english,并且您被告知biblatex要请求british-apa而不是,由于您一开始british就没有请求,因此实际上不会为您改变任何内容。british

另一个症状是您需要\DefineBibliographyExtras{english}日期块。使用匹配的语言后,就不再需要了。

相关内容