@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
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}
(아마도) 예상되는 결과를 제공합니다.