biblatex-apa 样式似乎在两种情况下缺少逗号。
- 当参考文献开头只有两位作者时,& 符号前的逗号会缺失。以下 MWE 应为:Herbst-Damm, KL,& 库里克 ...
- 当仅给出年份和月份时,德语 APA 版本缺少括号中的逗号。与英语版本一样,它应为:Clay, R. (2008b,朱尼)。 ...
以下是 MWE(使用 lualatex 和 biber 编译):
\documentclass[]{scrbook}
\usepackage[ngerman,american]{babel}
\usepackage{csquotes}
\begin{filecontents*}{\jobname.bib}
@ARTICLE{7.01:1,
AUTHOR = {K. L. Herbst-Damm and J. A. Kulik},
TITLE = {Volunteer Support, Marital Status, and the Survival Times of Terminally Ill Patients},
JOURNALTITLE = {Health Psychology},
VOLUME = {24},
PAGES = {225--229},
DATE = {2005},
DOI = {10.1037/0278-6133.24.2.225},
URL = {http://some.url},
langid = {american},
}
@ARTICLE{7.01:8,
AUTHOR = {Richard Clay},
TITLE = {Science vs. Ideology},
SUBTITLE = {Psychologists Fight Back About the Misuse of Research},
JOURNALTITLE = {Monitor on Psychology},
VOLUME = {39},
NUMBER = {6},
DATE = {2008-06},
URL = {http://www.apa.org/monitor/},
langid = {american},
}
@ARTICLE{7.01:8de,
AUTHOR = {Richard Clay},
TITLE = {Science vs. Ideology},
SUBTITLE = {Psychologists Fight Back About the Misuse of Research},
JOURNALTITLE = {Monitor on Psychology},
VOLUME = {39},
NUMBER = {6},
DATE = {2008-06},
URL = {http://www.apa.org/monitor/},
langid = {ngerman},
}
@INBOOK{7.02:25,
AUTHOR = {D. M. Haybron},
EDITOR = {M. Eid and R. J. Larsen},
TITLE = {Philosophy and the Science of Subjective Well-Being},
BOOKTITLE = {The Science of Subjective Well-Being},
LOCATION = {New York, NY},
PUBLISHER = {Guildford Press},
PAGES = {17-43},
DATE = {2008},
langid = {american},
}
\end{filecontents*}
\usepackage[backend=biber,style=apa,autolang=other]{biblatex}
\DeclareLanguageMapping{ngerman}{ngerman-apa}
\DeclareLanguageMapping{american}{american-apa}
\addbibresource{\jobname.bib}
\begin{document}
\textcite{7.01:1}
\textcite{7.01:8}
\textcite{7.01:8de}
\textcite{7.02:25}
\printbibliography
\end{document}
如何修复此问题?
答案1
您已在 中发现了与 APA 出版手册有两处偏差biblatex-apa
。这两个“错误”都已按照您在此处提出的问题报告给开发人员(https://github.com/plk/biblatex-apa/issues/48,https://github.com/plk/biblatex-apa/issues/31)并且都已经修复(https://github.com/plk/biblatex-apa/pull/49,https://github.com/plk/biblatex-apa/pull/50)。
(v7.6)的更新版本与3.11 和 Biber 2.11biblatex-apa
一起发布。biblatex
牛津逗号问题有点棘手,因为逗号只应出现在按家庭顺序排列的姓名列表中,而按家庭顺序排列的姓名列表应遵循“正常”牛津逗号规则(只有当列表中有三个或更多姓名时,逗号才会出现在“and”之前)。该包中使用的解决方案是为finalnamedelim:apa:family-given
按家庭顺序排列的姓名定义一个新的逗号,该逗号始终出现在“and”之前。
正如 gusbrs 所解释的那样,德国日期确实只缺少了\addcomma
。但是,德国紧凑日期范围还存在一些其他问题,因为德国日期格式的顺序与美国日期不同,因此修复也解决了这个问题。
答案2
对于双作者引用中的“&”符号前的逗号,您可以finalnamedelim
在上下文中重新定义bib
:
\DeclareDelimFormat[bib]{finalnamedelim}{%
\ifthenelse{\value{listcount}>\maxprtauth}
{}
{\finalandcomma\addspace\&\space}}
但是,我必须补充一点,这个逗号并不是“缺失的”。牛津逗号通常用于列出三个或更多项。您会注意到,此定义不会改变引用命令,但一致性会建议您也这样做。但在我看来,\textcite
将 a 渲染为“Herbst-Damm 和 Kulik (2005)”会很奇怪。
对于条目日期中的逗号ngerman
,您可以使用以下命令重新定义日期格式\DefineBibliographyExtras
:
\DefineBibliographyExtras{ngerman}{%
\protected\def\mkbibdateapalong#1#2#3{%
\iffieldundef{#1}%
{}%
{\iffieldbibstring{#1}{\bibstring{\thefield{#1}}}{\thefield{#1}}}%
\iffieldundef{#3}%
{}%
{\iffieldundef{#1}%
{}
{\addcomma\addspace}%
\stripzeros{\thefield{#3}}}%
\iffieldundef{#2}%
{}%
{\iffieldundef{#3}
{\iffieldundef{#1}
{}
{\addcomma\space}}% <- change here
{\adddot\addspace}%
\mkbibmonth{\thefield{#2}}}}%
\protected\def\mkbibdateapalongextra#1#2#3{%
\iffieldundef{#1}%
{}%
{\iffieldbibstring{#1}{\bibstring{\thefield{#1}}}{\thefield{#1}}\printfield{extradate}}%
\iffieldundef{#3}%
{}%
{\iffieldundef{#1}%
{}
{\addcomma\addspace}%
\stripzeros{\thefield{#3}}}%
\iffieldundef{#2}%
{}%
{\iffieldundef{#3}
{\iffieldundef{#1}
{}
{\addcomma\space}}% <- change here
{\adddot\addspace}%
\mkbibmonth{\thefield{#2}}}}}
但是,如果您担心参考书目中不同语言之间的格式一致性,您可能需要考虑使用autolang=hyphen
而autolang=other
不是像这样设置和重新定义日期格式。
完整的 MWE:
\documentclass[]{scrbook}
\usepackage[ngerman,american]{babel}
\usepackage{csquotes}
\begin{filecontents*}{\jobname.bib}
@ARTICLE{7.01:1,
AUTHOR = {K. L. Herbst-Damm and J. A. Kulik},
TITLE = {Volunteer Support, Marital Status, and the Survival Times of Terminally Ill Patients},
JOURNALTITLE = {Health Psychology},
VOLUME = {24},
PAGES = {225--229},
DATE = {2005},
DOI = {10.1037/0278-6133.24.2.225},
URL = {http://some.url},
langid = {american},
}
@ARTICLE{7.01:8,
AUTHOR = {Richard Clay},
TITLE = {Science vs. Ideology},
SUBTITLE = {Psychologists Fight Back About the Misuse of Research},
JOURNALTITLE = {Monitor on Psychology},
VOLUME = {39},
NUMBER = {6},
DATE = {2008-06},
URL = {http://www.apa.org/monitor/},
langid = {american},
}
@ARTICLE{7.01:8de,
AUTHOR = {Richard Clay},
TITLE = {Science vs. Ideology},
SUBTITLE = {Psychologists Fight Back About the Misuse of Research},
JOURNALTITLE = {Monitor on Psychology},
VOLUME = {39},
NUMBER = {6},
DATE = {2008-06},
URL = {http://www.apa.org/monitor/},
langid = {ngerman},
}
\end{filecontents*}
\usepackage[backend=biber,style=apa,autolang=other]{biblatex}
\DeclareLanguageMapping{ngerman}{ngerman-apa}
\DeclareLanguageMapping{american}{american-apa}
\addbibresource{\jobname.bib}
\DeclareDelimFormat[bib]{finalnamedelim}{%
\ifthenelse{\value{listcount}>\maxprtauth}
{}
{\finalandcomma\addspace\&\space}}
\DefineBibliographyExtras{ngerman}{%
\protected\def\mkbibdateapalong#1#2#3{%
\iffieldundef{#1}%
{}%
{\iffieldbibstring{#1}{\bibstring{\thefield{#1}}}{\thefield{#1}}}%
\iffieldundef{#3}%
{}%
{\iffieldundef{#1}%
{}
{\addcomma\addspace}%
\stripzeros{\thefield{#3}}}%
\iffieldundef{#2}%
{}%
{\iffieldundef{#3}
{\iffieldundef{#1}
{}
{\addcomma\space}}% <- change here
{\adddot\addspace}%
\mkbibmonth{\thefield{#2}}}}%
\protected\def\mkbibdateapalongextra#1#2#3{%
\iffieldundef{#1}%
{}%
{\iffieldbibstring{#1}{\bibstring{\thefield{#1}}}{\thefield{#1}}\printfield{extradate}}%
\iffieldundef{#3}%
{}%
{\iffieldundef{#1}%
{}
{\addcomma\addspace}%
\stripzeros{\thefield{#3}}}%
\iffieldundef{#2}%
{}%
{\iffieldundef{#3}
{\iffieldundef{#1}
{}
{\addcomma\space}}% <- change here
{\adddot\addspace}%
\mkbibmonth{\thefield{#2}}}}}
\begin{document}
\textcite{7.01:1}
\textcite{7.01:8}
\textcite{7.01:8de}
\printbibliography
\end{document}