我正在使用biblatex
。apa 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-apa
7.5 或更高版本和biblatex
3.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}
日期块。使用匹配的语言后,就不再需要了。