在 biblatex-dw 中使用 authoryear 的 a/b 区分

在 biblatex-dw 中使用 authoryear 的 a/b 区分

我在论文中使用biblatex-dw书目样式。作为一项要求,我必须通过在年份中添加 a 和 b 来区分同一作者和同一年份的两部出版物。我已经有一个自定义脚注引用命令(\fzit,用于前注和后注)。使用它(或新的命令),我想写\fzit[see also][66]{A}并得到(在脚注中)»另见作者 2001a,66«。书目应该显示

作者,Alex: Alpha。刊于:Journal of Journals,2001 年 8 月 11 日。http://www.url.org访问日期:2013 年 4 月 12 日。

梅威瑟:

\documentclass{scrartcl}
\usepackage[style=authortitle-dw,idembib=false,backend=biber,sorting=nyt,isbn=false]{biblatex}

\DeclareCiteCommand{\fzit}[\mkbibfootnote]
{\usebibmacro{prenote}}
{
\setunit{\addnbspace}
\unspace\printnames{labelname}%
\space
\printfield{year}
}
{\addsemicolon\space}
{\addcomma\space #2\isdot}

\usepackage{filecontents}

\begin{filecontents}{\jobname.bib}
@article{A,
author = {Author, Alex},
journaltitle = {Journal of Journals},
date = {2001-08-11},
title = {Alpha},
url = {http://www.url.org},
urldate = {2013-04-12}
}
@article{B,
author = {Author, Alex},
journaltitle = {Journal of Journals},
date = {2001-09-17},
title = {Beta},
url = {http://www.url.org},
urldate = {2013-04-12}
}
\end{filecontents}

\addbibresource{\jobname.bib}

答案1

authortitle-dw是作者-标题样式,因此无法处理作者-年份引用。也就是说,您可以在引用中用年份标签替换标题标签。这样就不必定义自己的引用命令。

书目中日期和年份的打印分散在许多宏和驱动程序中,因此将标签extrayear放入每个项目中很复杂。一种简单的解决方法是重新定义\printdate宏和year格式。当然,这假设是从或而不是任何后备字段(例如或)labelyear中提取的,但这种方法可以扩展。dateyeareventdateurldate

作为此方法的示例,请将加载时间选项设置labelyear=true(或使用 biblatex 2.6+ labeldate=true)和以下内容添加到您的序言中。

% Replace title labels with year labels
\renewbibmacro*{cite:title}{%
  \printtext[bibhyperref]{\printfield{labelyear}\printfield{extrayear}}}

% Delimit name and year by space
\renewcommand*{\nametitledelim}{\space}
% Restore original delimiter in bibliography
\AtBeginBibliography{%
  \renewcommand*{\nametitledelim}{\addcolon\space}}

% Print extrayear in bibliography
\makeatletter
\apptocmd{\blx@imc@printdate}{\printfield{extrayear}}{}{}
\makeatother
\DeclareFieldFormat{year}{%
  \ifbibstring{#1}{\bibstring{#1}}{\stripzeros{#1}}%
  \printfield{extrayear}}

相关内容