我在论文中使用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
中提取的,但这种方法可以扩展。date
year
eventdate
urldate
作为此方法的示例,请将加载时间选项设置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}}