Biblatex - 详细样式:将(年份)添加到作者标题格式

Biblatex - 详细样式:将(年份)添加到作者标题格式

我使用 verbose-trad1 样式来编写参考书目。当某项内容被第二次引用时,此样式(我认为所有详细样式都是如此)使用较短的作者-标题格式,如下所示:

  1. 约翰尼(1992 年)。我的生活
  2. 内森(2015 年)。不是我的生活
  3. Johnny,同上。

我的作品有 115 页,没有人会记得我在谈论哪本书,只有作者和这个可怜的“op cit”。所以我需要第二个引用带有日期,如下所示:

  1. Johnny(1992),同上。

感谢您的阅读。请帮助一位贫困学生完成她的硕士论文

这是一个最小的例子

 \documentclass[12pt,a4paper]{book}

 \usepackage[bibstyle=authoryear,citestyle=verbose-trad1,indexing=cite,firstinits=true,dashed=true,citepages=omit]{biblatex}
 \bibliography{example.bib}


 \begin{document}

 This is just filler text\footcite{john_2010}. This is just filler
 text\footcite{nathan_2015}. This is just filler
 text\footcite{john_2010}.

 \end{document}

还有 example.bbl 文件:

 @book{nathan_2015,     
 Author = {Nathan},     
 Title= {Not my life},  
 Year = {2015}}

 @book{john_2010,   
 Author = {Johnny},
 Title= {My life},  
 Year = {1992}}

答案1

通常verbose-trad样式与样式一起使用authortitle,因此使用标题消除歧义。所以“约翰尼,同上。同上。“仅当您引用 Johnny 的一部作品时才会出现,一旦有更多作品,title就会添加该字段以避免混淆。

无论如何,我们可以确保始终添加年份。

我们首先借用一个authoryear

\newbibmacro*{cite:labeldate+extradate}{%
  \iffieldundef{labelyear}
    {}
    {\printtext[parens]{%
       \printtext[bibhyperref]{%
         \printlabeldateextra}}}}

然后将这个宏注入到相关位置以打印名称后的年份

\renewbibmacro*{cite:name}{%
  \printnames{labelname}%
  \setunit{\printdelim{nameyeardelim}}%
  \usebibmacro{cite:labeldate+extradate}%
  \setunit*{\printdelim{nametitledelim}}}

\renewbibmacro*{cite:idem}{%
  \bibstring[\mkibid]{idem\thefield{gender}}%
  \setunit{\printdelim{nameyeardelim}}%
  \usebibmacro{cite:labeldate+extradate}%
  \setunit{\printdelim{nametitledelim}}}

平均能量损失

\documentclass[12pt,a4paper]{book}

\usepackage[bibstyle=authoryear, citestyle=verbose-trad1, indexing=cite, giveninits=true, citepages=omit]{biblatex}
\addbibresource{biblatex-examples.bib}

\newbibmacro*{cite:labeldate+extradate}{%
  \iffieldundef{labelyear}
    {}
    {\printtext[parens]{%
       \printtext[bibhyperref]{%
         \printlabeldateextra}}}}

\renewbibmacro*{cite:name}{%
  \printnames{labelname}%
  \setunit{\printdelim{nameyeardelim}}%
  \usebibmacro{cite:labeldate+extradate}%
  \setunit*{\printdelim{nametitledelim}}}

\renewbibmacro*{cite:idem}{%
  \bibstring[\mkibid]{idem\thefield{gender}}%
  \setunit{\printdelim{nameyeardelim}}%
  \usebibmacro{cite:labeldate+extradate}%
  \setunit{\printdelim{nametitledelim}}}

\begin{document}
This is just filler text\footcite{geer}. This is just filler
text\footcite{worman}. This is just filler
text\footcite{geer}.

Text \footcite{knuth:ct:a} an \footcite{knuth:ct:b} again \footcite{knuth:ct:a}.
\end{document}

在此处输入图片描述

相关内容