一位作者、多个年份的特殊情况(biblatex 中的 APA 格式)

一位作者、多个年份的特殊情况(biblatex 中的 APA 格式)

我正在尝试使用 authoryear-comp 在 biblatex 包中呈现 apa 引用样式。我使用的特殊情况是,在第一次文内引用时,所有作者姓名都会打印出来,但在下一次引用时,除第一个作者之外的所有作者都会被纳入“et al”。我用来自定义此功能的代码片段的问题在于 authoryear-comp 的功能被中断,以至于单个作者(例如 MacDonald、2011、2015)的参考文献不再分组(例如 MacDonald 2011、MacDonald 2015)。

有问题的代码片段是这样的:

\AtEveryCitekey{%
    \ifciteseen{}{\defcounter{maxnames}{99}\clearfield{namehash}}}

有人能帮我修复这个奇怪的行为吗?这是整个代码:

\documentclass[a4paper, 11pt]{article}
\usepackage[top=0.85in,left=1in, right=1in, footskip=0.75in]{geometry}
\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
\usepackage[T1]{fontenc}
\usepackage[style=authoryear-comp,citetracker=true, mincitenames=1, maxcitenames=2, maxbibnames=6, uniquename=false, uniquelist=false, dashed=false, giveninits=true, doi=false, isbn=false, url=false]{biblatex}

%%% To make the all names visible at the first reference
\AtEveryCitekey{%
    \ifciteseen{}{\defcounter{maxnames}{99}\clearfield{namehash}}}

%%% Use '&' instead of 'and' in parencite and bibliography list
\renewcommand*{\finalnamedelim}{%
    \ifnumgreater{\value{liststop}}{2}{\finalandcomma}{}%
    \addspace\&\space}

%%% Use 'and' in textcite
\DeclareDelimFormat[textcite]{finalnamedelim}{\addspace{and}\space}

\AtEveryBibitem{\clearfield{month}}
\AtEveryBibitem{\clearfield{day}}
\AtEveryBibitem{\clearfield{eprint}}

\begin{filecontents}{\jobname.bib}
    @article{macdonald2015,
        title = {On Having a Farm},
        volume = {42},
        journaltitle = {Journal of Science and Stuff},
        author = {MacDonald, O.},
        date = {2015}
    }
    @article{macdonald2016,
        title = {Noise reduction in livestock},
        volume = {43},
        journaltitle = {Journal of Science and Stuff},
        author = {MacDonald, O.},
        date = {2016}
    }
    
\end{filecontents}
\addbibresource{\jobname.bib}

\title{A document}
\begin{document}
    \maketitle
    In this text I cite \parencite{macdonald2015, macdonald2016} for the mwe. 
    And now i cite the same clever fellow \parencite{macdonald2015, macdonald2016} again.
    \printbibliography
\end{document}

答案1

如果您想要(真正的)APA 样式,最好只使用biblatex-apa's style=apa,(适用于第 7 版 APA 样式)或biblatex-apa6's style=apa6,(适用于第 6 版 APA 样式 - 第一个引用显示所有作者,随后只有“First + et al.”是第 6 版的一个特点,在第 7 版中,它一直是“et al.”)。APA 样式相当复杂,尝试复制其所有复杂性style=authoryear-comp,可能需要一段时间。

仅在确实需要时才使用样式选项。已经为正确遵循 APA 进行了设置,而附加选项可能只会弄乱一切。biblatex示例文档序言中的大部分附加代码也是如此。

\documentclass[a4paper, 11pt]{article}
\usepackage[top=0.85in,left=1in, right=1in, footskip=0.75in]{geometry}
\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
\usepackage[T1]{fontenc}
\usepackage[backend=biber, style=apa]{biblatex}

\begin{filecontents}{\jobname.bib}
@article{macdonald2015,
  title = {On Having a Farm},
  volume = {42},
  journaltitle = {Journal of Science and Stuff},
  author = {MacDonald, O.},
  date = {2015}
}
@article{macdonald2016,
  title = {Noise reduction in livestock},
  volume = {43},
  journaltitle = {Journal of Science and Stuff},
  author = {MacDonald, O.},
  date = {2016}
}
\end{filecontents}
\addbibresource{\jobname.bib}

\begin{document}
  In this text I cite \parencite{macdonald2015, macdonald2016} for the mwe. 
  And now i cite the same clever fellow \parencite{macdonald2015, macdonald2016} again.
  \printbibliography
\end{document}

如果您不想要实际的 APA 样式,而只想要“类似 APA”的样式,那么根据您的具体要求,决定以 为基础的样式还是通用样式是一个好主意style=apa,style=apa6,authoryear一般来说,APA 样式更难修改,因为它们是专门为实现复杂的 APA 要求而构建的,而通用样式应该由最终用户修改。)

相关内容