@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}
}
Эти две записи BibLaTeX цитируются в одних и тех же скобках...
\parencite{john_big_1991, john_paradigm_2008}
...приводят к следующему результату цитирования:
(Джон, Донахью и Кентл, 1991, 2008)
Поскольку соавторы явно не одни и те же, хотя первый автор один и тот же, я полагаю, что этого не должно происходить.
Мои настройки Babel и BibLaTeX следующие:
\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
Я также подавляю некоторые поля, такие как URL, и переопределяю некоторые строки библиографии, но предполагаю, что это не должно быть причиной обнаруженной проблемы.
Кроме того, если я переверну цитату...
\parencite{john_paradigm_2008, john_big_1991}
...и деактивируем сортировку, мой вывод будет таким:
(Джон, Науманн и Сото, 2008, 1991)
Есть ли какие-то настройки BibLaTeX, которые я пропустил и которые решают эту проблему, или это ожидаемое поведение?
РЕДАКТИРОВАТЬ:Я ожидаю, что первое многократное цитирование будет выглядеть так:
(Джон, Донахью и Кентл, 1991; Джон, Науманн и Сото, 2008)
Я действительно не имел ни малейшего представления о том, как должны выглядеть потенциальные последующие множественные цитирования с теми же ссылками. Следующее покажется по меньшей мере странным, как заявил moewe в своем ответе ниже:
(Джон и др., 1991; Джон и др., 2008)
решение1
Как я объяснил в своих комментариях выше, это связано со способом biblatex-apa
обработки последующих цитат.
В стиле APA первая цитата должна содержать полный список авторов, тогда как последующие цитаты имеют только очень короткую усеченную метку, обычно первого автора плюс «et al.». Это реализовано в apa.cbx
очень специальном labelname
формате, который, labelname
однако, не печатается при первом появлении. Такое поведение приводит к тому, что отображаемое имя и namehash
(который основан на labelname
) расходятся в определенных ситуациях.
Исправление — изменить все namehash
es apa.cbx
на fullhash
что-то вроде этого.
\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
МВЭ
\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}
дает (возможно) ожидаемый результат