我正在撰写我的(德语)论文biblatex-apa
并遇到了这个问题。
我引用的一篇文章有 13 位作者。引用时,它会显示在参考文献列表中,其中包含所有姓名。我想将其缩短为 6 个姓名,并在第六个姓名后添加“et al.”
所以我知道我可以使用来操纵参考列表中显示的名称数量,apamaxprtauth = 6
但不幸的是,这只是在第六位和最后一位作者之间填写“...”,而没有等人(这对我来说似乎有点奇怪?):
我想要的是这样的输出:
一,A.,二,A.,三,A.,四,A.,五,A.,六,A. 等。(2020 年)。重要文章的重要标题。重要期刊,44,1-16。
.tex
从我的文件中提取
\documentclass[fontsize=12pt]{scrreprt}
\usepackage[ngerman]{babel}
\usepackage[autostyle, german=quotes]{csquotes}
\usepackage[style=apa, backend=biber,
apamaxprtauth=6,
natbib=true,
language=ngerman,
doi=true,
uniquename=init
]{biblatex}
\DeclareLanguageMapping{ngerman}{ngerman-apa}
\DefineBibliographyStrings{ngerman}{andothers={et\ al\adddot}}
\addbibresource{../literature.bib}
\begin{document}
bla bla bla \textcite{lit1}
\printbibliography
\end{document}
我的.bib
文件条目
@article{lit1,
author = {Author One and Author Two and Author Three and Author Four and Author
Five and Author Six and Author Seven and Author Eight and Author Nine and Author
Ten and Author Eleven and Author Twelve and Author Thirteen},
journal = {Important Journal},
pages = {1--16},
title = {Important title of important article},
volume = {44},
year = {2020}}
答案1
您所展示的输出的一般形式符合 APA 风格(且受其要求)。
当前第 7 版 APA 格式手册显示最多 19 个名称,然后才开始用 替换名称...
,请参阅https://apastyle.apa.org/blog/more-than-20-authors和https://apastyle.apa.org/style-grammar-guidelines/references/elements-list-entry#author。APA 格式第 6 版最多可显示 6 个名称,之后才开始用 替换名称...
。
由于和biblatex-apa
是biblatex-apa6
严格遵循 APA 准则编写的,因此改变这种行为非常棘手(因为biblatex-apa
首先需要做大量工作来实现不寻常的 APA 样式行为)。特别是,更改参考书目中显示的名称数量的标准方法(maxbibnames
、minbibnames
和朋友)在中不会按预期工作biblatex-apa
。
使用当前版本biblatex-apa
(从 2020-08-28 开始使用 v9.14 进行测试),以下内容应该可以正常工作。想法是将两个主要biblatex-apa
名称格式从它们的原始定义在apa.bbx
(第 9.14 版第 529-574 行)只打印名字后面\maxprtauth
可能跟有“et al.”的部分内容。代码apa:andothers
已改编摘自name:andothers
(biblatex.def
v3.15a 中的第 1128-1138 行)
\documentclass{article}
\usepackage[ngerman]{babel}
\usepackage[autostyle, german=quotes]{csquotes}
\usepackage[backend=biber,
style=apa,
apamaxprtauth=6,
doi=true,
]{biblatex}
\DefineBibliographyStrings{ngerman}{andothers={et\ al\adddot}}
\makeatletter
\DeclareNameFormat{apaauthor}{%
\ifnumgreater{\value{listcount}}{\maxprtauth}
{}
{\usebibmacro{name:apa:family-given}%
{\namepartfamily}%
{\namepartgiven}%
{\namepartgiveni}%
{\namepartprefix}%
{\namepartsuffix}%
\usebibmacro{role}{\addspace}{\mkbibparens}%
\hasitemannotation[\currentname][username]
{\addspace\mkbibbrackets{\getitemannotation[\currentname][username]}}
{}}%
\usebibmacro{apa:andothers}}
\DeclareNameFormat{apanames}{%
\ifnumgreater{\value{listcount}}{\maxprtauth}
{}
{\usebibmacro{name:apa:given-family}%
{\namepartfamily}%
{\namepartgiven}%
{\namepartgiveni}%
{\namepartprefix}%
{\namepartsuffix}%
\usebibmacro{role}{\addcomma\space}{\@firstofone}}%
\usebibmacro{apa:andothers}}
\makeatother
\newbibmacro*{apa:andothers}{%
\ifboolexpr{
test {\ifnumequal{\value{listcount}}{\maxprtauth}}
and
(
test \ifmorenames
or
test {\ifnumgreater{\value{listtotal}}{\maxprtauth}}
)
}
{\ifnumgreater{\value{liststop}}{1}
{\finalandcomma}
{}%
\printdelim{andothersdelim}\bibstring{andothers}}
{}}
\begin{filecontents}{\jobname.bib}
@article{lit1,
author = {Author One and Author Two and Author Three and Author Four
and Author Five and Author Six and Author Seven
and Author Eight and Author Nine and Author Ten
and Author Eleven and Author Twelve and Author Thirteen},
journal = {Important Journal},
pages = {1--16},
title = {Important title of important article},
volume = {44},
year = {2020},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\addbibresource{biblatex-examples.bib}
\begin{document}
bla bla bla \textcite{lit1,sigfridsson,worman,aksin,companion}
\printbibliography
\end{document}
请注意,我清理了一些选项和其他biblatex
提到的相关代码在我的评论中在 MWE 中。
与您的实际问题无关,但除非您的版本
biblatex-apa
确实过时,否则您不需要。调用中的\DeclareLanguageMapping{ngerman}{ngerman-apa}
选项在这里也是多余的,通常不会按照人们的期望执行,除非还激活了其他选项。我会删除它。如果您使用,该选项已经预设,所以我也会删除它。language=ngerman,
biblatex
uniquename=init
style=apa,