在参考文献中添加短作者(在作者之后)

在参考文献中添加短作者(在作者之后)

我需要修改参考文献,在 biblatex 中包含“短篇作者”。我的问题几乎与

如何在参考文献中打印 shortauthor?

但我需要参考的形式

世界卫生组织 [WHO]。(2016 年)。......

目前,

世界卫生组织。(2016 年)。......

并且\begentry只允许您修改条目的开头。我使用 biblatex 和style=apa。我该如何实现这一点?

答案1

biblatex-apa只需要

\renewbibmacro*{author}{%
  \ifnameundef{author}
    {\usebibmacro{labeltitle}}
    {\printnames[apaauthor][-\value{listtotal}]{author}%
     \setunit*{\addspace}%
     \printfield{nameaddon}%
     \ifnameundef{shortauthor}
       {}
       {\setunit*{\addspace}%
        \printtext[brackets]{\printnames{shortauthor}}}%
     \ifnameundef{with}
       {}
       {\setunit{}\addspace\mkbibparens{\printtext{\bibstring{with}\addspace}%
        \printnames[apaauthor][-\value{listtotal}]{with}}
        \setunit*{\addspace}}}%
  \newunit\newblock%
  \usebibmacro{labelyear+extrayear}}

我们刚刚添加了以 开头的部分\ifnameundef{shortauthor}

平均能量损失

\documentclass[british]{scrartcl}
\listfiles
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@book{iea,
author = {{International Energy Agency}},
title = {World Energy Outlook},
shortauthor = {IEA},
date = {2005}
}
\end{filecontents}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{babel,csquotes}

\usepackage[
    style=apa,
  backend=biber
]{biblatex}
\addbibresource{\jobname.bib}
\addbibresource{biblatex-examples.bib}
\DeclareLanguageMapping{british}{british-apa}

\renewbibmacro*{author}{%
  \ifnameundef{author}
    {\usebibmacro{labeltitle}}
    {\printnames[apaauthor][-\value{listtotal}]{author}%
     \setunit*{\addspace}%
     \printfield{nameaddon}%
     \ifnameundef{shortauthor}
       {}
       {\setunit*{\addspace}%
        \printtext[brackets]{\printnames{shortauthor}}}%
     \ifnameundef{with}
       {}
       {\setunit{}\addspace\mkbibparens{\printtext{\bibstring{with}\addspace}%
        \printnames[apaauthor][-\value{listtotal}]{with}}
        \setunit*{\addspace}}}%
  \newunit\newblock%
  \usebibmacro{labelyear+extrayear}}

\begin{document}
\cite{companion,iea}

\printbibliography
\end{document}

示例输出

答案2

这取决于您的参考文献数量,.bib但手动对您的条目进行短代码编码不是更简单吗?

像这样的事情应该可以很好地解决问题:

 @book{hello,
 Title={Hello},
 Author={World Health {Organization [WHO]}}
}

使用双重字符{}来欺骗 biblatex,让其认为“组织 [WHO]”是一个单词。

相关内容