我正在使用 biblatex 及其以下选项:
\usepackage[backend=biber,natbib=true,style=authoryear,language=english]{biblatex}
我有一个条目,其字段 pubstate 设置为“即将推出”。
当我在文中引用该参考文献时,得到的是“作者(nd)”,而我希望得到的是“作者(即将出版)”。
参考书目中的内容几乎相同。我得到的是:作者(nd)... blablabla ... 即将出版。我更喜欢:作者(即将出版):blablabla ...
我可以将“年份”字段设置为“即将出版”。但是,这不是一个好的解决方案,因为我经常用三种语言写文章。而且每次我用另一种语言开始写新文章时,我都需要更改我的参考书目数据库。
关于如何解决这个问题我有什么想法吗?
非常感谢,Pierric
答案1
通常的做法是使用 来扩展日期字段列表\DeclareLabeldate
。这将在文本中提供所需的行为,但在参考书目条目末尾打印“即将到来”。也许这对您来说是可以接受的。如果不行,那么您将需要下面的额外代码来更新 biblatex 宏addendum+pubstate
。这是一个改进的版本,其中包含 Moewe 建议的更改。
\documentclass{article}
\usepackage[backend=biber,natbib=true,style=authoryear,language=english]{biblatex}
\addbibresource{mybib.bib}
\DeclareLabeldate{%
\field{date}
\field{eventdate}
\field{origdate}
\field{urldate}
\field{pubstate}
\literal{nodate}
}
\renewbibmacro*{addendum+pubstate}{%
\printfield{addendum}%
\iffieldequalstr{labeldatesource}{pubstate}{}
{\newunit\newblock\printfield{pubstate}}}
\begin{document}
\citet{myart} and \citet{Xx}.
\printbibliography
\end{document}
包含mybib.bib
@Article{Xx,
author = {Xy, X.},
title = {A title},
journaltitle = {Y. Journal},
date = 2000
}
@Article{myart,
author = {Author, A. N.},
title = {On things},
journaltitle = {J. Jour.},
pubstate = {forthcoming}
}
旧代码
如果您的 biblatex 版本较旧,则有两个宏需要更新,您可以按如下方式编码(这是我的原始代码):
\documentclass{article}
\usepackage[backend=biber,natbib=true,style=authoryear,language=english]{biblatex}
\addbibresource{mybib.bib}
\DeclareLabeldate{%
\field{date}
\field{eventdate}
\field{origdate}
\field{urldate}
\field{pubstate}
\literal{nodate}
}
\renewbibmacro*{date+extrayear}{%
\iffieldundef{\thefield{datelabelsource}year}
{\printtext[parens]{\printfield{labelyear}}}
{\printtext[parens]{%
\iffieldsequal{year}{\thefield{datelabelsource}year}
{\printlabeldateextra}%
{\printfield{labelyear}%
\printfield{extrayear}}}}}%
\renewbibmacro*{addendum+pubstate}{%
\printfield{addendum}%
\iffieldundef{\thefield{datelabesource}year}{}
{\newunit\newblock\printfield{pubstate}}}
\begin{document}
\citet{myart} and \citet{Xx}.
\printbibliography
\end{document}