在参考书目条目开头添加 [AuthorYear] 块

在参考书目条目开头添加 [AuthorYear] 块

我想在我的 bib 条目开头添加一个块,格式如下

[姓氏作者年份]

当定义 shortauthor 字段时,应该使用此字段 +Year。以下示例相当简单:

\begin{filecontents*}{test.bbx}
\ProvidesFile{test.bbx} 
[\abx@bbxid $Id: test.bbx,v 0.9d 2010/09/03 20:11:58 lehman beta $] 
\RequireBibliographyStyle{authoryear}

\DeclareBibliographyDriver{article}{%
  \usebibmacro{bibindex}%
  \usebibmacro{begentry}%
  %---add something here---
  \usebibmacro{author/translator+others}%
  \setunit{\labelnamepunct}\newblock
  \usebibmacro{title}%
  \newunit
  \printlist{language}%
  \newunit\newblock
  \usebibmacro{byauthor}%
  \newunit\newblock
  \usebibmacro{bytranslator+others}%
  \newunit\newblock
  \printfield{version}%
  \newunit\newblock
  \usebibmacro{in:}%
  \usebibmacro{journal+issuetitle}%
  \newunit
  \usebibmacro{byeditor+others}%
  \newunit
  \usebibmacro{note+pages}%
  \newunit\newblock
  \iftoggle{bbx:isbn}
    {\printfield{issn}}
    {}%
  \newunit\newblock
  \usebibmacro{doi+eprint+url}%
  \newunit\newblock
  \usebibmacro{addendum+pubstate}%
  \setunit{\bibpagerefpunct}\newblock
  \usebibmacro{pageref}%
  \usebibmacro{finentry}}

\endinput
 \end{filecontents*}
\begin{filecontents*}{MeineBib.bib}
  @article{example,
 author={Firstname Lastname and First Last},
  title={Title},
 journal={Journal},
 year={Year},
  pages={Pages},
} 
  \end{filecontents*}

\documentclass[12pt,ngerman,    ]{scrartcl}
\usepackage[ngerman]{babel}
\usepackage{filecontents}
\usepackage[babel,german=quotes]{csquotes}
\usepackage [bibstyle=test]{biblatex}
\bibliography{MeineBib} 
\begin{document}
\tableofcontents
\cite{example}
\printbibliography\end{document}

我猜解决方案就在这里

DeclareBibliographyDriver{article}{%
      \usebibmacro{bibindex}%
      \usebibmacro{begentry}%
      %---add something here---
      \usebibmacro{author/translator+others}%

但我不知道怎么做。它应该看起来像这样, 这是BibTeX 中现有的样式 ( ),但在 中却不是。natdinbiblatex

答案1

很久以前,我在德语论坛上回答过一个非常类似的问题mrunix.de。诀窍是添加\usebibmacro{cite}到 bibmacro begentry(默认情况下不执行任何操作)。然后选择 citestyle authoryear 和书目样式 authortitle,按作者年份标题对书目进行排序,删除重复作者的破折号......您就完成了。;-)

\documentclass{article}

\usepackage[citestyle=authoryear-comp,bibstyle=authortitle,sorting=nyt,dashed=false,%
    maxcitenames=1]{biblatex}

\newcounter{mymaxcitenames}
\AtBeginDocument{%
  \setcounter{mymaxcitenames}{\value{maxnames}}%
}

\renewbibmacro*{begentry}{%
  \printtext[brackets]{%
    \begingroup
    \defcounter{maxnames}{\value{mymaxcitenames}}%
    \printnames{labelname}%
    \setunit{\nameyeardelim}%
    \usebibmacro{cite:labelyear+extrayear}%
    \endgroup
    }%
  \quad% or \addspace
}

\DeclareNameAlias{sortname}{first-last}

\usepackage{filecontents}

\begin{filecontents}{biblatextest.bib}
@misc{A01,
  author = {Author, A. and Buthor, B.},
  year = {2001},
  title = {Alpha},
}
\end{filecontents}

\addbibresource{biblatextest.bib}

\begin{document}

Some text \autocite{A01}.

\printbibliography

\end{document}

在此处输入图片描述

编辑:改进了重新定义,begentry以允许maxnames文内引用和参考书目之间存在差异的情况。(\defcounter电子工具箱宏允许[与\setcounter]当地的重新定义计数器值。

编辑2:删除了需要手动设置自定义计数器的需要。

编辑 3:将作者姓名的格式更改为first-last

编辑 4:\usebibmacro{cite}用低级命令替换,以使示例也适用于comp样式(压缩引用中重复的作者姓名)。

(如果有人对这些零碎的改进感到疑惑:这个问题已经成为了另一个问题的“平行运动”,mrunix.de

相关内容