biblatex-apa:参考书目中的完整名字

biblatex-apa:参考书目中的完整名字

有些出版商更喜欢经过修改的 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-apafirstinits是通用的 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}}}

相关内容