@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 風格中,第一個引文必須包含完整的作者列表,而後續引文只有一個非常短的截斷標籤,通常是第一作者加上「等人」。這是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}
給出(可以說)預期結果