答案1
美国人类学家协会要求的风格与目前可用的其他风格截然不同biblatex
,因此需要进行相当多的修改。
由于基本风格似乎无法与某种authoryear
风格相匹配,因此我选择了以下基础风格:风格指南在某些情况下会参考《芝加哥格式手册》,因此我们可以使用biblatex-chicago
,但由于该风格已经对标准风格进行了大量修改,因此我修改起来更舒服authoryear
。(此外,biblatex-chicago
与相比,似乎并不更接近 AAA 风格authoryear
)。
我们将充分利用xpatch
包裹。
基础是风格authoryear
;我们需要maxcitenames=1
,对“van Gennep”的引用[AAA 指南中的例子 18] 让我怀疑useprefix
是否合适。
\usepackage[style=authoryear,backend=biber,maxcitenames=1,useprefix]{biblatex}
我们注意到的关于 AAA 样式的第一件事是姓名格式。我们必须修补打印作者/编辑者的宏,以在姓名后添加换行符。
\xpatchbibmacro{author}
{\setunit{\addspace}}
{\newline}
{}
{}
\xpatchbibmacro{bbx:editor}
{\setunit{\addspace}}
{\newline}
{}
{}
\xpatchbibmacro{bbx:translator}
{\setunit{\addspace}}
{\newline}
{}
{}
我们总是使用牛津逗号,并将同一作者的作品分组。
\renewcommand*{\finalnamedelim}{\finalandcomma\addspace\bibstring{and}\space}
\renewcommand*{\bibnamedash}{\hspace{\leftmargin}}
\setlength{\bibnamesep}{\itemsep}
日期的缩进比其他行略少,并且我们还允许在方括号中输入日期。
\xpatchbibmacro{date+extrayear}
{\printtext[parens]}
{\makebox[\bibhang][r]}
{}
{}
\DeclareFieldFormat{origdate}{\mkbibbrackets{#1}}
\xapptobibmacro{date+extrayear}
{\printorigdate
\bibsentence\nopunct}
{}
{}
标题等按原样设置(不带引号、斜体和朋友)
\DeclareFieldFormat*{title}{#1}
\DeclareFieldFormat*{subtitle}{#1}
\DeclareFieldFormat*{booktitle}{#1}
\DeclareFieldFormat*{booksubtitle}{#1}
\DeclareFieldFormat*{journaltitle}{#1}
\DeclareFieldFormat*{issuetitle}{\mkbibquote{#1\isdot}}
\DeclareFieldFormat[periodical]{issuetitle}{#1}
\DeclareFieldFormat*{maintitle}{#1}
“in” 以斜体印刷,但没有带冒号;文章中没有 in [例 8 和 10,AAA 风格指南]
\renewcommand*{\intitlepunct}{\addspace\nopunct}
\renewbibmacro{in:}{%
\ifentrytype{article}{}{\printtext[emph]{\bibstring{in}\intitlepunct}}}
对于图书系列,系列和编号之间有一个逗号。[例如 12,AAA 风格指南]
\renewbibmacro*{series+number}{%
\printfield{series}%
\setunit*{\addcomma\addspace}%
\printfield{number}%
\newunit}
文章中的卷数和数量设置为“vol(num)”[例如 10,AAA 风格指南]
\renewbibmacro*{volume+number+eid}{%
\printfield{volume}%
\printfield[parens]{number}%
\setunit{\addcomma\space}%
\printfield{eid}}
文章中的页面以冒号开头,并且省略“p.”/“pp.”前缀。[例 10,AAA 风格指南]
\DeclareFieldFormat{pages}{%
\ifentrytype{article}
{#1}
{\mkpageprefix[bookpagination]{#1}}%
}
\renewcommand*{\bibpagespunct}{%
\ifentrytype{article}
{\addcolon}
{\addperiod\space}%
}
这是为了解决主题问题等。我们定义了一个新的 bibstring themeissue
。[例 11,AAA 风格指南]
\NewBibliographyString{%
themeissue,
}
\DefineBibliographyStrings{american}{%
themeissue = {theme issue},
}
\renewbibmacro*{issue}{%
\iffieldundef{issuetitle}
{}
{\ifentrytype{article}
{\bibstring{themeissue}%
\setunit{\addcomma\space}}%
{}%
\printtext[issuetitle]{%
\printfield[titlecase]{issuetitle}%
\setunit{\subtitlepunct}%
\printfield[titlecase]{issuesubtitle}}}}
\renewbibmacro*{journal+issuetitle}{%
\usebibmacro{issue}%
\setunit{\addcomma\space}%
\usebibmacro{journal}%
\setunit*{\addspace}%
\iffieldundef{series}
{}
{\newunit
\printfield{series}%
\setunit{\addspace}}%
\usebibmacro{volume+number+eid}%
\setunit{\addspace}%
\usebibmacro{issue+date}%
\setunit{\addcolon\space}%
\newunit}
\newbibmacro*{title+issuetitle}{%
\usebibmacro{issue}%
\newunit\newblock
\iffieldundef{issuetitle}
{}
{\bibstring{themeissue}%
\setunit{\addcomma\space}}%
\usebibmacro{periodical}%
\setunit*{\addspace}%
\iffieldundef{series}
{}
{\newunit
\printfield{series}%
\setunit{\addspace}}%
\printfield{volume}%
\printfield[parens]{number}%
\setunit{\addcomma\space}%
\printfield{eid}%
\setunit{\addspace}%
\usebibmacro{issue+date}%
\setunit{\addcolon\space}}
主标题和卷用逗号分隔 [例 13,AAA 风格指南]
\xpatchbibmacro{maintitle+title}
{\newunit\newblock}
{\setunit{\addcomma\space}%
}
{}
{}
\xpatchbibmacro{maintitle+booktitle}
{\newunit\newblock}
{\setunit{\addcomma\space}%
}
{}
{}
条目的页面引用in...
需要移动,因此我们先将其删除,然后再重新添加。[例 8,AAA 风格指南]
\xpatchbibdriver{inbook}
{\newunit\newblock
\usebibmacro{chapter+pages}}
{}
{}
{}
\xpatchbibdriver{inbook}
{\printfield{volumes}}
{\usebibmacro{chapter+pages}%
\newunit\newblock
\printfield{volumes}}
{}
{}
\xpatchbibdriver{incollection}
{\newunit\newblock
\usebibmacro{chapter+pages}}
{}
{}
{}
\xpatchbibdriver{incollection}
{\printfield{volumes}}
{\usebibmacro{chapter+pages}%
\newunit\newblock
\printfield{volumes}}
{}
{}
以下(非常讨厌的代码)确保打印“Ditor,Eddie,ed。”而不是“edited by Eddie Ditor”。[例 8,AAA 风格指南]
\renewbibmacro*{byeditor}{%
\ifnameundef{editor}
{}
{\printnames[byeditor]{editor}%
\setunit{\addcomma\space}%
\usebibmacro{bytypestrg}{editor}{editor}%
\newunit}%
\usebibmacro{byeditorx}}
\renewbibmacro*{byeditorx}{%
\ifnameundef{editora}
{}
{\printnames[byeditor]{editor}%
\setunit{\addcomma\space}%
\usebibmacro{bytypestrg}{editor}{editor}%
\newunit}%
\ifnameundef{editorb}
{}
{\printnames[byeditorb]{editorb}%
\setunit{\addcomma\space}%
\usebibmacro{bytypestrg}{editorb}{editor}%
\newunit}%
\ifnameundef{editorc}
{}
{\printnames[byeditorc]{editorc}%
\setunit{\addcomma\space}%
\usebibmacro{bytypestrg}{editorc}{editor}%
\newunit}}
\renewbibmacro*{bytranslator}{%
\ifnameundef{translator}
{}
{\printnames[bytranslator]{translator}%
\setunit{\addcomma\space}%
\bibstring{bytranslator}}}
\renewbibmacro*{byeditor+others}{%
\ifnameundef{editor}
{}
{\printnames[byeditor]{editor}%
\clearname{editor}%
\setunit{\addcomma\space}%
\usebibmacro{byeditor+othersstrg}%
\newunit}%
\usebibmacro{byeditorx}%
\usebibmacro{bytranslator+others}}
\renewbibmacro*{bytranslator+others}{%
\ifnameundef{translator}
{}
{\printnames[bytranslator]{translator}%
\clearname{translator}%
\setunit{\addcomma\space}%
\usebibmacro{bytranslator+othersstrg}%
\newunit}%
\usebibmacro{withothers}}
\renewbibmacro*{bytypestrg}[2]{%
\iffieldundef{#1type}
{\bibstring{#2}}
{\ifbibxstring{\thefield{#1type}}
{\bibstring{\thefield{#1type}}}
{\printtext{\thefield{#1type}}}}}
\makeatletter
\newbibmacro*{byeditor+othersstrg}{%
\iffieldundef{editortype}
{\def\abx@tempa{editor}}
{\edef\abx@tempa{\thefield{editortype}}}%
\let\abx@tempb=\empty
\ifnamesequal{editor}{translator}
{\appto\abx@tempa{tr}%
\appto\abx@tempb{\clearname{translator}}}
{}%
\ifnamesequal{editor}{commentator}
{\appto\abx@tempa{co}%
\appto\abx@tempb{\clearname{commentator}}}
{\ifnamesequal{editor}{annotator}
{\appto\abx@tempa{an}%
\appto\abx@tempb{\clearname{annotator}}}
{}}%
\ifnamesequal{editor}{introduction}
{\appto\abx@tempa{in}%
\appto\abx@tempb{\clearname{introduction}}}
{\ifnamesequal{editor}{foreword}
{\appto\abx@tempa{fo}%
\appto\abx@tempb{\clearname{foreword}}}
{\ifnamesequal{editor}{afterword}
{\appto\abx@tempa{af}%
\appto\abx@tempb{\clearname{afterword}}}
{}}}%
\ifbibxstring{\abx@tempa}
{\printtext{\bibstring{\abx@tempa}}\abx@tempb}
{\usebibmacro{bytypestrg}{editor}{editor}}}
\newbibmacro*{bytranslator+othersstrg}{%
\def\abx@tempa{translator}%
\ifnamesequal{translator}{commentator}
{\appto\abx@tempa{co}%
\clearname{commentator}}
{\ifnamesequal{translator}{annotator}
{\appto\abx@tempa{an}%
\clearname{annotator}}
{}}%
\ifnamesequal{translator}{introduction}
{\appto\abx@tempa{in}%
\clearname{introduction}}
{\ifnamesequal{translator}{foreword}
{\appto\abx@tempa{fo}%
\clearname{foreword}}
{\ifnamesequal{translator}{afterword}
{\appto\abx@tempa{af}%
\clearname{afterword}}
{}}}%
\bibstring{\abx@tempa}}
\makeatother
完整 MWE
\documentclass[american]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{filecontents}
\usepackage{lmodern}
\usepackage{babel}
\usepackage{csquotes}
\usepackage{xpatch}
\usepackage[style=authoryear,backend=biber,maxcitenames=1,useprefix]{biblatex}
\usepackage{hyperref}
\begin{filecontents*}{\jobname.bib}
@book{castles,
author = {Castles, Stephen},
title = {Here for Good},
date = {1990},
location = {London},
publisher = {Pluto Press},
}
@book{bonacich,
author = {Bonacich, Edna and John Modell},
title = {The Economic Basis of Ethnic Solidarity},
subtitle = {Small Business in the Japanese American Community},
date = {1975},
location = {Berkeley},
publisher = {University of California Press},
}
@book{gallimore:a,
author = {Gallimore, Ronald},
title = {A Christmas Feast},
date = {1983},
location = {New York},
publisher = {Oxford University Press},
}
@book{gallimore:b,
author = {Gallimore, Ronald},
title = {Holiday Gatherings in the Pacific Northwest},
date = {1983},
location = {Berkeley},
publisher = {University of California Press},
}
@incollection{gallimore:c,
author = {Gallimore, Ronald},
title = {Qualitative Methods in Research on Teaching},
date = {1960},
booktitle = {Handbook of Research on Teaching},
edition = {3},
editor = {Margaret C. Wittrock},
pages = {119–162},
location = {New York},
publisher = {Macmillan},
}
@incollection{gallimore:d,
author = {Gallimore, Ronald},
title = {Qualitative Methods in Research on Teaching},
date = {1962},
origdate = {1960},
booktitle = {Handbook of Research on Teaching},
edition = {Rev. edition},
editor = {Margaret C. Wittrock},
pages = {119–162},
location = {New York},
publisher = {Macmillan},
}
@inbook{rohlen,
author = {Rohlen, Thomas P.},
date = {1993},
title = {Education: Policies and Prospects},
booktitle = {Koreans in Japan},
booksubtitle = {Ethnic Conflicts and Accommodation},
editor = {Cameron Lee and George De Vos},
pages = {182-222},
location = {Berkeley},
publisher = {University of California Press},
}
@inbook{price,
author = {Price, T. Douglas},
date = {1984},
title = {Issues in Paleolithic and Mesolithic Research},
booktitle = {Hunting and Animal Exploitation in the Later Paleolithic and Mesolithic of Eurasia},
editor = {Gail Larsen Peterkin and Harvey M. Bricker and Paul Mellars},
pages = {241–244},
series = {Archeological Papers of the American Anthropological Association},
number = {4},
location = {Arlington, VA},
publisher = {American Anthropological Association},
}
@article{moll,
author = {Moll, Luis C.},
date = {2000},
title = {Writing as Communication},
subtitle = {Creating Strategic Learning Environments for Students},
journal = {Theory into Practice},
volume = {25},
number = {3},
pages = {202–208},
}
@article{heriot,
author = {Heriot, M. Jean},
date = {1996},
title = {Fetal Rights versus the Female Body: Contested Domains},
journal = {Medical Anthropology Quarterly},
issuetitle = {The Social Production of Authoritative Knowledge in Pregnancy and Childbirth},
volume = {10},
number = {2},
pages = {176–194},
}
@book{singh,
author = {Singh, Balwant},
date = {1994},
title = {Independence and Democracy in Burma, 1945–1952: The Turbulent Years},
series = {Michigan Papers on South and Southeast Asia},
number = {40},
location = {Ann Arbor},
publisher = {University of Michigan Press},
}
@collection{cluttbrock:1,
editor = {Clutton-Brock, Juliet and Caroline Grigson},
date = {1986},
maintitle = {Animals and Archaeology},
volume = {1},
title = {Hunters and Their Prey},
series = {BAR International Series},
number = {163},
location = {Oxford},
publisher = {British Archaeological Reports},
}
@collection{giard,
editor = {Luce Giard},
translator = {Timothy J. Tomasik},
date = {1998},
maintitle = {The Practice of Everyday Life},
volume = {2},
edition = {Rev. edition},
title = {Living and Cooking},
location = {Minneapolis},
publisher = {University of Minnesota Press},
}
@collection{diskin,
editor = {Martin Diskin},
date = {1970},
title = {Trouble in Our Backyard},
subtitle = {Central America in the Eighties},
location = {New York},
publisher = {Pantheon Books},
}
@phdthesis{damato,
author = {D’Amato, John},
date = {1989},
title = {\enquote{We Cool, Tha’s Why}: A Study of Personhood and Place in a Class of Hawaiian Second Graders},
institution = {Department of Education, University of Hawai‘i},
}
@book{vangennep:rep,
author = {van Gennep, Arnold},
title = {The Rites of Passage},
date = 1960,
origdate = {1908},
translator = {Michaela Vizedom and Mari Caffee},
publisher = {University of Chicago Press},
location = {Chicago},
}
\end{filecontents*}
\addbibresource{biblatex-examples.bib}
\addbibresource{\jobname.bib}
\xpatchbibmacro{author}
{\setunit{\addspace}}
{\newline}
{}
{}
\xpatchbibmacro{bbx:editor}
{\setunit{\addspace}}
{\newline}
{}
{}
\xpatchbibmacro{bbx:translator}
{\setunit{\addspace}}
{\newline}
{}
{}
\renewcommand*{\finalnamedelim}{\finalandcomma\addspace\bibstring{and}\space}
\renewcommand*{\bibnamedash}{\hspace{\leftmargin}}
\setlength{\bibnamesep}{\itemsep}
\xpatchbibmacro{date+extrayear}
{\printtext[parens]}
{\makebox[\bibhang][r]}
{}
{}
\DeclareFieldFormat{origdate}{\mkbibbrackets{#1}}
\xapptobibmacro{date+extrayear}
{\printorigdate
\bibsentence\nopunct}
{}
{}
\DeclareFieldFormat*{title}{#1}
\DeclareFieldFormat*{subtitle}{#1}
\DeclareFieldFormat*{booktitle}{#1}
\DeclareFieldFormat*{booksubtitle}{#1}
\DeclareFieldFormat*{journaltitle}{#1}
\DeclareFieldFormat*{issuetitle}{\mkbibquote{#1\isdot}}
\DeclareFieldFormat[periodical]{issuetitle}{#1}
\DeclareFieldFormat*{maintitle}{#1}
\renewcommand*{\intitlepunct}{\addspace\nopunct}
\renewbibmacro{in:}{%
\ifentrytype{article}{}{\printtext[emph]{\bibstring{in}\intitlepunct}}}
\renewbibmacro*{series+number}{%
\printfield{series}%
\setunit*{\addcomma\addspace}%
\printfield{number}%
\newunit}
\renewbibmacro*{volume+number+eid}{%
\printfield{volume}%
\printfield[parens]{number}%
\setunit{\addcomma\space}%
\printfield{eid}}
\DeclareFieldFormat{pages}{%
\ifentrytype{article}
{#1}
{\mkpageprefix[bookpagination]{#1}}%
}
\renewcommand*{\bibpagespunct}{%
\ifentrytype{article}
{\addcolon}
{\addperiod\space}%
}
\NewBibliographyString{%
themeissue,
}
\DefineBibliographyStrings{american}{%
themeissue = {theme issue},
}
\renewbibmacro*{issue}{%
\iffieldundef{issuetitle}
{}
{\ifentrytype{article}
{\bibstring{themeissue}%
\setunit{\addcomma\space}}%
{}%
\printtext[issuetitle]{%
\printfield[titlecase]{issuetitle}%
\setunit{\subtitlepunct}%
\printfield[titlecase]{issuesubtitle}}}}
\renewbibmacro*{journal+issuetitle}{%
\usebibmacro{issue}%
\setunit{\addcomma\space}%
\usebibmacro{journal}%
\setunit*{\addspace}%
\iffieldundef{series}
{}
{\newunit
\printfield{series}%
\setunit{\addspace}}%
\usebibmacro{volume+number+eid}%
\setunit{\addspace}%
\usebibmacro{issue+date}%
\setunit{\addcolon\space}%
\newunit}
\newbibmacro*{title+issuetitle}{%
\usebibmacro{issue}%
\newunit\newblock
\iffieldundef{issuetitle}
{}
{\bibstring{themeissue}%
\setunit{\addcomma\space}}%
\usebibmacro{periodical}%
\setunit*{\addspace}%
\iffieldundef{series}
{}
{\newunit
\printfield{series}%
\setunit{\addspace}}%
\printfield{volume}%
\printfield[parens]{number}%
\setunit{\addcomma\space}%
\printfield{eid}%
\setunit{\addspace}%
\usebibmacro{issue+date}%
\setunit{\addcolon\space}}
\xpatchbibmacro{maintitle+title}
{\newunit\newblock}
{\setunit{\addcomma\space}%
}
{}
{}
\xpatchbibmacro{maintitle+booktitle}
{\newunit\newblock}
{\setunit{\addcomma\space}%
}
{}
{}
\xpatchbibdriver{inbook}
{\newunit\newblock
\usebibmacro{chapter+pages}}
{}
{}
{}
\xpatchbibdriver{inbook}
{\printfield{volumes}}
{\usebibmacro{chapter+pages}%
\newunit\newblock
\printfield{volumes}}
{}
{}
\xpatchbibdriver{incollection}
{\newunit\newblock
\usebibmacro{chapter+pages}}
{}
{}
{}
\xpatchbibdriver{incollection}
{\printfield{volumes}}
{\usebibmacro{chapter+pages}%
\newunit\newblock
\printfield{volumes}}
{}
{}
\renewbibmacro*{byeditor}{%
\ifnameundef{editor}
{}
{\printnames[byeditor]{editor}%
\setunit{\addcomma\space}%
\usebibmacro{bytypestrg}{editor}{editor}%
\newunit}%
\usebibmacro{byeditorx}}
\renewbibmacro*{byeditorx}{%
\ifnameundef{editora}
{}
{\printnames[byeditor]{editor}%
\setunit{\addcomma\space}%
\usebibmacro{bytypestrg}{editor}{editor}%
\newunit}%
\ifnameundef{editorb}
{}
{\printnames[byeditorb]{editorb}%
\setunit{\addcomma\space}%
\usebibmacro{bytypestrg}{editorb}{editor}%
\newunit}%
\ifnameundef{editorc}
{}
{\printnames[byeditorc]{editorc}%
\setunit{\addcomma\space}%
\usebibmacro{bytypestrg}{editorc}{editor}%
\newunit}}
\renewbibmacro*{bytranslator}{%
\ifnameundef{translator}
{}
{\printnames[bytranslator]{translator}%
\setunit{\addcomma\space}%
\bibstring{bytranslator}}}
\renewbibmacro*{byeditor+others}{%
\ifnameundef{editor}
{}
{\printnames[byeditor]{editor}%
\clearname{editor}%
\setunit{\addcomma\space}%
\usebibmacro{byeditor+othersstrg}%
\newunit}%
\usebibmacro{byeditorx}%
\usebibmacro{bytranslator+others}}
\renewbibmacro*{bytranslator+others}{%
\ifnameundef{translator}
{}
{\printnames[bytranslator]{translator}%
\clearname{translator}%
\setunit{\addcomma\space}%
\usebibmacro{bytranslator+othersstrg}%
\newunit}%
\usebibmacro{withothers}}
\renewbibmacro*{bytypestrg}[2]{%
\iffieldundef{#1type}
{\bibstring{#2}}
{\ifbibxstring{\thefield{#1type}}
{\bibstring{\thefield{#1type}}}
{\printtext{\thefield{#1type}}}}}
\makeatletter
\newbibmacro*{byeditor+othersstrg}{%
\iffieldundef{editortype}
{\def\abx@tempa{editor}}
{\edef\abx@tempa{\thefield{editortype}}}%
\let\abx@tempb=\empty
\ifnamesequal{editor}{translator}
{\appto\abx@tempa{tr}%
\appto\abx@tempb{\clearname{translator}}}
{}%
\ifnamesequal{editor}{commentator}
{\appto\abx@tempa{co}%
\appto\abx@tempb{\clearname{commentator}}}
{\ifnamesequal{editor}{annotator}
{\appto\abx@tempa{an}%
\appto\abx@tempb{\clearname{annotator}}}
{}}%
\ifnamesequal{editor}{introduction}
{\appto\abx@tempa{in}%
\appto\abx@tempb{\clearname{introduction}}}
{\ifnamesequal{editor}{foreword}
{\appto\abx@tempa{fo}%
\appto\abx@tempb{\clearname{foreword}}}
{\ifnamesequal{editor}{afterword}
{\appto\abx@tempa{af}%
\appto\abx@tempb{\clearname{afterword}}}
{}}}%
\ifbibxstring{\abx@tempa}
{\printtext{\bibstring{\abx@tempa}}\abx@tempb}
{\usebibmacro{bytypestrg}{editor}{editor}}}
\newbibmacro*{bytranslator+othersstrg}{%
\def\abx@tempa{translator}%
\ifnamesequal{translator}{commentator}
{\appto\abx@tempa{co}%
\clearname{commentator}}
{\ifnamesequal{translator}{annotator}
{\appto\abx@tempa{an}%
\clearname{annotator}}
{}}%
\ifnamesequal{translator}{introduction}
{\appto\abx@tempa{in}%
\clearname{introduction}}
{\ifnamesequal{translator}{foreword}
{\appto\abx@tempa{fo}%
\clearname{foreword}}
{\ifnamesequal{translator}{afterword}
{\appto\abx@tempa{af}%
\clearname{afterword}}
{}}}%
\bibstring{\abx@tempa}}
\makeatother
\begin{document}
\cite{cicero,bonacich,castles,wilde,gallimore:a,gallimore:b,gallimore:c,gallimore:d,rohlen,price,moll,heriot,singh,cluttbrock:1,giard,diskin,damato,vangennep,vangennep:rep}
\printbibliography
\end{document}