Особый случай одного автора, несколько лет (стиль APA в biblatex)

Особый случай одного автора, несколько лет (стиль APA в biblatex)

Я пытаюсь отобразить стиль цитирования apa в пакете biblatex с помощью authoryear-comp. Особый случай, который я использую, заключается в том, что при первом цитировании в тексте печатаются все имена авторов, но при последующих цитированиях все авторы, кроме первого, включаются в '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,(для стиля APA 7-го издания) или biblatex-apa6's style=apa6,(для стиля APA 6-го издания — в первой ссылке указаны все авторы, в последующих — только «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, тогда как универсальные стили должны изменяться конечными пользователями.)

Связанный контент