Caso especial de um autor, vários anos (estilo APA no biblatex)

Caso especial de um autor, vários anos (estilo APA no biblatex)

Estou tentando renderizar o estilo de citação apa no pacote biblatex usando authoryear-comp. O caso especial que estou usando é que na primeira citação no texto, todos os nomes dos autores são impressos, mas nas próximas citações, todos os autores, exceto o primeiro, são incluídos em 'et al.' O problema do trecho de código que uso para customizar isso é que a funcionalidade do authoryear-comp é interrompida de tal forma que as referências de um único autor (por exemplo, MacDonald, 2011, 2015) não são mais agrupadas (por exemplo, MacDonald 2011, MacDonald 2015).

O trecho de código problemático é este:

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

Alguém poderia me ajudar a corrigir esse comportamento peculiar? Aqui está o código completo:

\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}

Responder1

Se você deseja o estilo APA (real), provavelmente é melhor usar apenas biblatex-apa's style=apa,(para o estilo APA da 7ª edição) ou biblatex-apa6's style=apa6,(para o estilo APA da 6ª edição - a primeira citação mostra todos os autores, subsequentes apenas "Primeiro + et al." é um destaque da 6ª edição, na 7ª edição é "et al." até o fim). O estilo APA é bastante complexo e tentar replicar todas as suas complexidades style=authoryear-comp,pode demorar um pouco.

Use opções de estilo somente se for realmente necessário. As coisas já estão configuradas para conformidade adequada com a APA e opções adicionais provavelmente só irão atrapalhar as coisas. O mesmo vale para a maior parte do biblatexcódigo adicional no preâmbulo do documento de exemplo.

\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}

Se você não deseja o estilo APA real, mas apenas algo "como APA", dependerá de seus requisitos exatos se é uma boa ideia basear seu estilo style=apa,ou style=apa6,em um estilo da authoryearfamília genérica. (De modo geral, os estilos APA são mais difíceis de modificar porque foram construídos especificamente para implementar os requisitos complexos da APA, enquanto os estilos genéricos devem ser modificados pelos usuários finais.)

informação relacionada