biblatex-apa: Múltiples citas en el mismo paréntesis con el mismo primer autor, pero se condensan diferentes coautores

biblatex-apa: Múltiples citas en el mismo paréntesis con el mismo primer autor, pero se condensan diferentes coautores
@MISC{john_big_1991,
  author = {John, Oliver P. and Donahue, E. M. and Kentle, R. L.},
  title = {The Big Five Inventory--Versions 4a and 54},
  date = {1991},
  langid = {american},
  publisher = {Berkeley, {CA:} University of California, Berkeley, Institute of
    Personality and Social Research}
}

@INCOLLECTION{john_paradigm_2008,
  author = {John, Oliver P. and Naumann, Laura P. and Soto, Christopher J.},
  editor = {John, Oliver P. and Robins, Richard W. and Pervin, Lawrence A.},
  title = {Paradigm Shift to the Integrative Big Five Trait Taxonomy: History,
    Measurement, and Conceptual Issues},
  booktitle = {Handbook of personality: theory and research},
  date = {2008},
  edition = {3},
  publisher = {Guilford Press},
  location = {New York},
  isbn = {9781593858360},
  pages = {114-158},
  langid = {american}
}

Estas dos entradas de BibLaTeX citadas dentro del mismo paréntesis con...

\parencite{john_big_1991, john_paradigm_2008}

...conduce al siguiente resultado de cita:

(John, Donahue y Kentle, 1991, 2008)

Como los coautores claramente no son los mismos, aunque el primer autor sí lo es, supongo que esto no debería suceder.

Mi configuración de Babel y BibLaTeX es la siguiente:

\usepackage[american,ngerman]{babel}
\usepackage[
    style=apa,
    sortcites=true,
    sorting=nyt,
    backend=biber,
    autolang=other
    ]{biblatex}
\DeclareLanguageMapping{ngerman}{ngerman-apa} % for language switching
\DeclareLanguageMapping{american}{american-apa} % for language switching

También suprimo algunos campos como la URL y redefino algunas cadenas de bibliografía, pero supongo que esta no debería ser la raíz del problema informado.

Además, si invierto la cita...

\parencite{john_paradigm_2008, john_big_1991}

...y desactivar la clasificación, mi salida será:

(Juan, Naumann y Soto, 2008, 1991)

¿Hay alguna configuración de BibLaTeX que haya pasado por alto y que solucione este problema o es este el comportamiento esperado?


EDITAR:Esperaría que la primera cita múltiple se viera así:

(John, Donahue y Kentle, 1991; John, Naumann y Soto, 2008)

Realmente no tengo idea de cómo deberían verse las posibles citas múltiples posteriores con las mismas referencias. Lo siguiente parecería al menos extraño, como lo afirma moewe en su respuesta a continuación:

(John et al., 1991; John et al., 2008)

Respuesta1

Como expliqué en mis comentarios anteriores, esto tiene que ver con la forma en que biblatex-apase manejan las citas posteriores.

En el estilo APA, la primera cita debe contener una lista completa de autores, mientras que las citas posteriores solo tienen una etiqueta muy breve y truncada que generalmente incluye el primer autor más "et al." Esto se implementa apa.cbxmediante un formato muy especial labelname, que labelnamesin embargo no se imprime la primera vez que aparece. Este comportamiento hace que el nombre mostrado y namehash(que se basa en labelname) diverjan en determinadas situaciones.

Una solución es cambiar todos los namehashes apa.cbxpara que fullhashme gusten.

\makeatletter
\def\cbx@apa@ifnamesaved{%
  \xifinlist{\thefield{fullhash}}{\cbx@apa@names}
    {\@firstoftwo}
    {\@secondoftwo}}

\newbibmacro*{cite:author}{%
  \iffieldequals{fullhash}{\cbx@lasthash}
% Multiple cites in one command
   {\setunit{\compcitedelim}%
    \usebibmacro{cite:plabelyear+extrayear}}%
% Single cite
   {\ifthenelse{\ifnameundef{labelname}\OR\iffieldequalstr{entrytype}{patent}}
% No author/editor
     {\usebibmacro{cite:noname}%
       \savefield{fullhash}{\cbx@lasthash}}
% Normal cite
     {\ifnameundef{shortauthor}
        {\printnames[labelname][-\value{listtotal}]{labelname}}%
        {\cbx@apa@ifnamesaved
          {\printnames{shortauthor}}
          {\printnames[labelname][-\value{listtotal}]{author}\addspace\printnames[sabrackets]{shortauthor}}}%
      \savefield{fullhash}{\cbx@lasthash}}}%
   \setunit{\multicitedelim}}

\newbibmacro*{cite}{%
  \iffieldequals{fullhash}{\cbx@lasthash}
% Multiple cites in one command
   {\setunit{\compcitedelim}%
    \usebibmacro{cite:plabelyear+extrayear}}%
% Single cite
   {\ifthenelse{\ifnameundef{labelname}\OR\iffieldequalstr{entrytype}{patent}}
% No author/editor
     {\usebibmacro{cite:noname}%
       \setunit{\nameyeardelim}%
       \usebibmacro{cite:plabelyear+extrayear}%
       \savefield{fullhash}{\cbx@lasthash}}
% Normal cite
     {\ifnameundef{shortauthor}
        {\printnames[labelname][-\value{listtotal}]{labelname}}%
        {\cbx@apa@ifnamesaved
          {\printnames{shortauthor}}
          {\printnames[labelname][-\value{listtotal}]{author}\addspace\printnames[sabrackets]{shortauthor}}}%
      \setunit{\nameyeardelim}%
      \usebibmacro{cite:plabelyear+extrayear}%
      \savefield{fullhash}{\cbx@lasthash}}}%
   \setunit{\multicitedelim}}

\newbibmacro*{textcite}{%
  \iffieldequals{fullhash}{\cbx@lasthash}
% Compact cite - more than one thing for same author
    {\setunit{\compcitedelim}%
     \usebibmacro{cite:plabelyear+extrayear}}
% New cite
    {%
    \ifbool{cbx:parens}
      {\bibcloseparen\global\boolfalse{cbx:parens}}
      {}%
      \setunit{\compcitedelim}%
      \ifthenelse{\ifnameundef{labelname}\OR\iffieldequalstr{entrytype}{patent}}
  % No author/editor or patent
       {\iffieldundef{shorthand}%
    % Cite using title
         {\usebibmacro{cite:noname}%
          \setunit{\ifbool{cbx:np}%
                   {\nameyeardelim}%
                   {\global\booltrue{cbx:parens}\addspace\bibopenparen}}%
          \usebibmacro{cite:plabelyear+extrayear}}
    % Cite using shorthand
         {\usebibmacro{cite:shorthand}}}
  % Normal cite with author/editor
  % Normal full cite
       {\ifnameundef{shortauthor}%
    % Normal full cite
         {\printnames[labelname][-\value{listtotal}]{labelname}}
    % Cite using short author
         {\cbx@apa@ifnamesaved
           {\printnames{shortauthor}}
           {\printnames[labelname][-\value{listtotal}]{author}}}%
  % Year
        \setunit{\ifbool{cbx:np}
                  {\nameyeardelim}
                  {\global\booltrue{cbx:parens}\addspace\bibopenparen}}%
  % Put the shortauthor inside the year brackets if necessary
        \ifnameundef{shortauthor}
         {}
         {\cbx@apa@ifnamesaved
           {}
           {\printnames{shortauthor}\setunit{\nameyeardelim}}}%
  % Actual year printing
        \usebibmacro{cite:plabelyear+extrayear}%
  % Save name hash for checks later
        \savefield{fullhash}{\cbx@lasthash}}}}

\newbibmacro*{citeyear}{%
  \iffieldundef{labelyear}
    {\usebibmacro{cite:init}}
    {\iffieldequals{fullhash}{\cbx@lasthash}
       {\setunit{\compcitedelim}%
        \usebibmacro{cite:plabelyear+extrayear}}
       {\usebibmacro{cite:plabelyear+extrayear}%
        \savefield{fullhash}{\cbx@lasthash}}}%
  \setunit{\multicitedelim}}

\newbibmacro*{cite:post}{%
  \xifinlist{\thefield{fullhash}}{\cbx@apa@names}
    {}
    {\listxadd{\cbx@apa@names}{\thefield{fullhash}}}}
\makeatother

El MWE

\documentclass{scrartcl}
\usepackage{csquotes}
\usepackage[ngerman]{babel} 
\usepackage[style=apa, backend=biber]{biblatex}
\DeclareLanguageMapping{ngerman}{ngerman-apa} % for language switching
\usepackage{filecontents}
\begin{filecontents*}{\jobname.bib}
@MISC{john_big_1991,
  author = {John, Oliver P. and Donahue, E. M. and Kentle, R. L.},
  title = {The Big Five Inventory--Versions 4a and 54},
  date = {1991},
  langid = {american},
  publisher = {Berkeley, {CA:} University of California, Berkeley, Institute of
    Personality and Social Research}
}
@MISC{john_big_1992,
  author = {John, Oliver P. and Donahue, E. M. and Kentle, R. L.},
  title = {The Big Five Inventory--Versions 4b and 5},
  date = {1992},
  langid = {american},
  publisher = {Berkeley, {CA:} University of California, Berkeley, Institute of
    Personality and Social Research}
}

@INCOLLECTION{john_paradigm_2008,
  author = {John, Oliver P. and Naumann, Laura P. and Soto, Christopher J.},
  editor = {John, Oliver P. and Robins, Richard W. and Pervin, Lawrence A.},
  title = {Paradigm Shift to the Integrative Big Five Trait Taxonomy: History,
    Measurement, and Conceptual Issues},
  booktitle = {Handbook of personality: theory and research},
  date = {2008},
  edition = {3},
  publisher = {Guilford Press},
  location = {New York},
  isbn = {9781593858360},
  pages = {114-158},
  langid = {american}
}
\end{filecontents*}

\bibliography{\jobname.bib}

\makeatletter
\def\cbx@apa@ifnamesaved{%
  \xifinlist{\thefield{fullhash}}{\cbx@apa@names}
    {\@firstoftwo}
    {\@secondoftwo}}

\newbibmacro*{cite:author}{%
  \iffieldequals{fullhash}{\cbx@lasthash}
% Multiple cites in one command
   {\setunit{\compcitedelim}%
    \usebibmacro{cite:plabelyear+extrayear}}%
% Single cite
   {\ifthenelse{\ifnameundef{labelname}\OR\iffieldequalstr{entrytype}{patent}}
% No author/editor
     {\usebibmacro{cite:noname}%
       \savefield{fullhash}{\cbx@lasthash}}
% Normal cite
     {\ifnameundef{shortauthor}
        {\printnames[labelname][-\value{listtotal}]{labelname}}%
        {\cbx@apa@ifnamesaved
          {\printnames{shortauthor}}
          {\printnames[labelname][-\value{listtotal}]{author}\addspace\printnames[sabrackets]{shortauthor}}}%
      \savefield{fullhash}{\cbx@lasthash}}}%
   \setunit{\multicitedelim}}

\newbibmacro*{cite}{%
  \iffieldequals{fullhash}{\cbx@lasthash}
% Multiple cites in one command
   {\setunit{\compcitedelim}%
    \usebibmacro{cite:plabelyear+extrayear}}%
% Single cite
   {\ifthenelse{\ifnameundef{labelname}\OR\iffieldequalstr{entrytype}{patent}}
% No author/editor
     {\usebibmacro{cite:noname}%
       \setunit{\nameyeardelim}%
       \usebibmacro{cite:plabelyear+extrayear}%
       \savefield{fullhash}{\cbx@lasthash}}
% Normal cite
     {\ifnameundef{shortauthor}
        {\printnames[labelname][-\value{listtotal}]{labelname}}%
        {\cbx@apa@ifnamesaved
          {\printnames{shortauthor}}
          {\printnames[labelname][-\value{listtotal}]{author}\addspace\printnames[sabrackets]{shortauthor}}}%
      \setunit{\nameyeardelim}%
      \usebibmacro{cite:plabelyear+extrayear}%
      \savefield{fullhash}{\cbx@lasthash}}}%
   \setunit{\multicitedelim}}

\newbibmacro*{textcite}{%
  \iffieldequals{fullhash}{\cbx@lasthash}
% Compact cite - more than one thing for same author
    {\setunit{\compcitedelim}%
     \usebibmacro{cite:plabelyear+extrayear}}
% New cite
    {%
    \ifbool{cbx:parens}
      {\bibcloseparen\global\boolfalse{cbx:parens}}
      {}%
      \setunit{\compcitedelim}%
      \ifthenelse{\ifnameundef{labelname}\OR\iffieldequalstr{entrytype}{patent}}
  % No author/editor or patent
       {\iffieldundef{shorthand}%
    % Cite using title
         {\usebibmacro{cite:noname}%
          \setunit{\ifbool{cbx:np}%
                   {\nameyeardelim}%
                   {\global\booltrue{cbx:parens}\addspace\bibopenparen}}%
          \usebibmacro{cite:plabelyear+extrayear}}
    % Cite using shorthand
         {\usebibmacro{cite:shorthand}}}
  % Normal cite with author/editor
  % Normal full cite
       {\ifnameundef{shortauthor}%
    % Normal full cite
         {\printnames[labelname][-\value{listtotal}]{labelname}}
    % Cite using short author
         {\cbx@apa@ifnamesaved
           {\printnames{shortauthor}}
           {\printnames[labelname][-\value{listtotal}]{author}}}%
  % Year
        \setunit{\ifbool{cbx:np}
                  {\nameyeardelim}
                  {\global\booltrue{cbx:parens}\addspace\bibopenparen}}%
  % Put the shortauthor inside the year brackets if necessary
        \ifnameundef{shortauthor}
         {}
         {\cbx@apa@ifnamesaved
           {}
           {\printnames{shortauthor}\setunit{\nameyeardelim}}}%
  % Actual year printing
        \usebibmacro{cite:plabelyear+extrayear}%
  % Save name hash for checks later
        \savefield{fullhash}{\cbx@lasthash}}}}

\newbibmacro*{citeyear}{%
  \iffieldundef{labelyear}
    {\usebibmacro{cite:init}}
    {\iffieldequals{fullhash}{\cbx@lasthash}
       {\setunit{\compcitedelim}%
        \usebibmacro{cite:plabelyear+extrayear}}
       {\usebibmacro{cite:plabelyear+extrayear}%
        \savefield{fullhash}{\cbx@lasthash}}}%
  \setunit{\multicitedelim}}

\newbibmacro*{cite:post}{%
  \xifinlist{\thefield{fullhash}}{\cbx@apa@names}
    {}
    {\listxadd{\cbx@apa@names}{\thefield{fullhash}}}}
\makeatother

\begin{document}
\parencite{john_big_1991}
\parencite{john_big_1992}

\parencite{john_big_1991,john_big_1992}
\parencite{john_big_1991,john_paradigm_2008}

\parencite{john_big_1991}

\parencite{john_big_1991}

\parencite{john_paradigm_2008}
\parencite{john_big_1991,john_paradigm_2008}

\printbibliography
\end{document}

da el resultado (posiblemente) esperado de

ingrese la descripción de la imagen aquí

información relacionada