使用 BibLaTeX 的美国人类学家协会 (AAA) LaTeX 引用样式

使用 BibLaTeX 的美国人类学家协会 (AAA) LaTeX 引用样式

我正在为人类学课程和美国人类学家协会写一篇论文引用格式是必需的。我一直在阅读 BibLaTeX文档但我不认为所描述的任何引用样式符合我的要求。

除了建立自定义引用样式文件之外,使用类似的方法custom-bib,还有其他方法可以实现这种引用样式吗?

答案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}

在此处输入图片描述

相关内容