我需要修改参考文献,在 biblatex 中包含“短篇作者”。我的问题几乎与
但我需要参考的形式
世界卫生组织 [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]”是一个单词。