有些出版商更喜欢经过修改的 APA 引用格式,不希望在参考书目中出现作者和编辑姓名的首字母缩写。根据手册
biblatex-apa
,使用以下选项可以实现这firstinits=false
一点。不幸的是,这对我来说不起作用:
\documentclass[ngerman]{scrartcl}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{csquotes}
\usepackage[style=apa,natbib=true,firstinits=false]{biblatex}
\DeclareLanguageMapping{ngerman}{ngerman-apa}
\usepackage{filecontents}
\begin{filecontents*}{Test.bib}
@Article{Andrews1990,
Title = {{D}oes correctional treatment work? {A} clinically relevant and psychologically informed meta-analysis},
Author = {Andrews, Don A. and Zinger, Ivan and Hoge, Robert D. and Bonta, James and Gendreau, Paul and Cullen, Francis T.},
Journal = {Criminology},
Pages = {369-404},
Volume = {28},
Year = {1990},
}
\end{filecontents*}
\addbibresource{Test.bib}
\usepackage{babel}
\begin{document}
\selectlanguage{ngerman}
\nocite{Andrews1990}
\printbibliography
\end{document}
这将产生标准的 APA 格式:
答案1
在样式中这是不可能的biblatex-apa
。firstinits
是通用的 biblatex 选项,它并不真正适合 APA 样式,因此必须在样式本身中完成特定于 APA 的事情。例如,全名有时以非常 APA 特定的格式给出,请参阅 APA 手册第 6.27 节中的 APA 示例。支持这些意味着很难甚至不可能支持通用选项firstinits
。我经常收到让 APA 样式支持其他选项的请求,但它应该是一种 APA 样式,这意味着代码必须执行特定的 APA 操作,这使得某些领域无法实现通用性。您随时可以覆盖样式代码以使其执行您想要的操作 - 这就是 biblatex 的优点。
答案2
查看该apa.bbx
文件,似乎负责此操作的部分是:
% #1 = last name
% #2 = first name
% #3 = first name (initials)
% #4 = name prefix, a.k.a. 'von part'
% #5 = name affix, a.k.a. 'junior part'
\newbibmacro*{name:apa:family-given}[5]{%
\ifuseprefix
{\usebibmacro{name:delim}{#4#1}%
\usebibmacro{name:hook}{#4#1}%
\ifempty{#4}{}{%
\mkbibnameprefix{#4}%
\ifpunctmark{'}{}{\addhighpenspace}}%
\mkbibnamelast{#1\isdot}%
\ifempty{#2}{}{\addcomma\addlowpenspace\mkbibnamefirst{#3}\isdot%
\ifthenelse{\value{uniquename}>1}
{\addspace\mkbibbrackets{#2}}
{}}%
\ifempty{#5}{}{\addcomma\addlowpenspace\mkbibnameaffix{#5}\isdot}}
{\usebibmacro{name:delim}{#1}%
\usebibmacro{name:hook}{#1}%
\mkbibnamelast{#1}\isdot
\ifempty{#2#4}{}{\addcomma}%
\ifempty{#2}{}{\addlowpenspace\mkbibnamefirst{#3}%
\ifthenelse{\value{uniquename}>1}
{\addspace\mkbibbrackets{#2}}
{}}%
\ifempty{#4}{}{%
\addhighpenspace\mkbibnameprefix{#4}%
\ifpunctmark{'}{}{\addhighpenspace}}%
\ifempty{#5}{}{\addcomma\addlowpenspace\mkbibnameaffix{#5}\isdot}}}
#3
因此,可以通过替换#2
并将此代码放入 TEX 文件的序言中来实现所需的结果:
\renewbibmacro*{name:apa:family-given}[5]{%
\ifuseprefix
{\usebibmacro{name:delim}{#4#1}%
\usebibmacro{name:hook}{#4#1}%
\ifempty{#4}{}{%
\mkbibnameprefix{#4}%
\ifpunctmark{'}{}{\addhighpenspace}}%
\mkbibnamelast{#1\isdot}%
\ifempty{#2}{}{\addcomma\addlowpenspace\mkbibnamefirst{#2}\isdot%
\ifthenelse{\value{uniquename}>1}
{\addspace\mkbibbrackets{#2}}
{}}%
\ifempty{#5}{}{\addcomma\addlowpenspace\mkbibnameaffix{#5}\isdot}}
{\usebibmacro{name:delim}{#1}%
\usebibmacro{name:hook}{#1}%
\mkbibnamelast{#1}\isdot
\ifempty{#2#4}{}{\addcomma}%
\ifempty{#2}{}{\addlowpenspace\mkbibnamefirst{#2}%
\ifthenelse{\value{uniquename}>1}
{\addspace\mkbibbrackets{#2}}
{}}%
\ifempty{#4}{}{%
\addhighpenspace\mkbibnameprefix{#4}%
\ifpunctmark{'}{}{\addhighpenspace}}%
\ifempty{#5}{}{\addcomma\addlowpenspace\mkbibnameaffix{#5}\isdot}}}
就我的情况而言,这似乎有效,因为我需要完全相同的东西。
编辑:如果此方法无效,则可能是因为 biblatex-apa 版本不同。请在序言中尝试此方法:
\renewbibmacro*{name:apa:last-first}[5]{%
\ifuseprefix
{\usebibmacro{name:delim}{#4#1}%
\usebibmacro{name:hook}{#4#1}%
\ifblank{#4}{}{%
\mkbibnameprefix{#4}%
\ifpunctmark{'}{}{\addhighpenspace}}%
\mkbibnamelast{#1\isdot}%
\ifblank{#2}{}{\addcomma\addlowpenspace\mkbibnamefirst{#2}\isdot%
\ifthenelse{\value{uniquename}>1}
{\addspace\mkbibbrackets{#2}}
{}}%
\ifblank{#5}{}{\addcomma\addlowpenspace\mkbibnameaffix{#5}\isdot}}
{\usebibmacro{name:delim}{#1}%
\usebibmacro{name:hook}{#1}%
\mkbibnamelast{#1}\isdot
\ifblank{#2#4}{}{\addcomma}%
\ifblank{#2}{}{\addlowpenspace\mkbibnamefirst{#2}%
\ifthenelse{\value{uniquename}>1}
{\addspace\mkbibbrackets{#2}}
{}}%
\ifblank{#4}{}{%
\addhighpenspace\mkbibnameprefix{#4}%
\ifpunctmark{'}{}{\addhighpenspace}}%
\ifblank{#5}{}{\addcomma\addlowpenspace\mkbibnameaffix{#5}\isdot}}}