如何在 biblatex 中格式化 extrayear 字段

如何在 biblatex 中格式化 extrayear 字段

在作者年份引用/参考书目样式中,同一作者在同一年出版的多部出版物在年份后用小写字母格式化:史密斯 2011a ... 史密斯 2011bETC。

biblatex对于数字日期很有效,但对于非数字日期(如“进行中”)则失败。(natbib如果年份字段是非数字的,我使用的样式会通过在字母周围加上括号来正确处理这些情况。)我如何在中做同样的事情biblatex?因此预期的输出是:

史密斯,2011a 史密斯,2011b

Smith,进行中(a) Smith,进行中(b)

示例文件和输出:

\documentclass{article}
\usepackage[style=authoryear,labelyear=true]{biblatex}
\usepackage{filecontents}
\bibliography{test}
\begin{document}
\cite{test1,test2}
\printbibliography
\begin{filecontents}{test.bib}
@unpublished{test1,
    Author = {John Smith},
    Date-Added = {2011-02-21 13:41:09 -0500},
    Date-Modified = {2011-02-21 13:42:02 -0500},
    Note = {ms. MSU},
    Title = {A great paper in progress},
    Year = {in progress}}

@unpublished{test2,
    Author = {John Smith},
    Date-Added = {2011-02-21 13:42:09 -0500},
    Date-Modified = {2011-02-21 13:42:46 -0500},
    Note = {ms. MSU},
    Title = {Another great paper in progress},
    Year = {in progress}}
\end{filecontents}
\end{document}

输出图像

答案1

这是一个有点残忍的破解方法,但我们还是开始吧。将以下内容添加到您的序言中(编辑:应该更彻底地扫描手册——\iffieldnums似乎是正确的测试,请参阅第 148-149 页):

\DeclareFieldFormat{extrayear}{%
  \iffieldnums{labelyear}{%
    \mknumalph{#1}%
  }{%
    \mkbibparens{\mknumalph{#1}}%
  }%
}

更新:我已提交功能要求在 SourceForge.net 上: biblatex。

更新:该功能请求目前处于待处理状态。biblatex 的作者 Philipp Lehman 评论道:

我要补充一点,尽管我并不完全相信这是处理正在进行的工作的方法。但我更建议在“pubstate”字段中输入“进行中”,并在“label”字段中设置标签。

更新:此功能已在 biblatex v1.3(2011 年 3 月 14 日发布)中实现。

相关内容