自定义作者年份书目样式

自定义作者年份书目样式

一段时间以来,我一直在尝试创建自己的参考书目风格。原则上,我使用自定义 .bst 文件来管理它,但如果你想进行更改或添加新条目类型,感觉就像是件麻烦事。出于这个原因,我想切换到 Biblatex。最接近我想要的风格是。authoryear-comp但有些东西我希望有所不同。

  1. 我希望在参考书目条目的末尾显示日期。
  2. 如果有多位作者,作者仍应按姓氏、名字列出,并始终用分号分隔。

示例中的参考书目应如下所示:

路德维希·波尔兹曼;埃尔温·薛定谔和沃纳·海森堡:“这是文章 B 的长标题”。出自:《某科学期刊》。1970 年

爱因斯坦,阿尔伯特:“这是 pdhThesis A 的长标题”。Diss. Example School,第 42-125 页。1950 年

这是我当前的代码。为了与我的旧 natbib \citep{}-citations 兼容,我使用 biblatex 的 natbib-key。

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{lmodern}
\usepackage{filecontents}


\begin{filecontents*}{\jobname.bib}
@article{articleA,
title={This is a long title of article A},
author={Albert Einstein},
journal={Some scienece journal},
volume={1},
number={4},
pages={42--125},
year=1950,
publisher={Hellsevier}
}

@article{articleB,
title={This is a long title of article B},
author={Ludwig Boltzmann and Erwin Schrödinger and Werner Heisenberg},
journal={Another science journal},
volume={42},
number={1},
pages={43--49},
year=1970,
publisher={Hellsevier}
}
\end{filecontents*}

\usepackage[
    backend = biber,
    style = authoryear-comp,
    maxcitenames = 3,
    maxbibnames = 5,
    sorting = nyt,
    natbib
]{biblatex}

\selectlanguage{ngerman}
\addbibresource{\jobname.bib}

\begin{document}
This is a test for citation \citep{articleA}. And here is another test \citep{articleB}.
\printbibliography
\end{document}

生产

在此处输入图片描述

答案1

biblatex使用的自定义界面,您只需很少的调整就可以获得这些结果。

至于您要求在参考书目中将日期放在条目末尾,您可以在biblatex的选项中将不同的 bibstyle 与您选择的引用样式相结合。bibstyle=authortitle与(和变体)引用样式并不矛盾authoryear。但请注意,两种 bibstyle 之间的差异是为了在使用时更容易在参考书目中找到条目authoryear(年份接近作者,靠近条目的开头)。

如果您确实选择使用bibstyle=authortitle,则还应该设置日期以包含该dateextra部分(正如@moewe在评论中记得的那样),其中:

\renewbibmacro*{date}{\printdateextra}

对于名称列表的所需更改,您可以使用:

\DeclareNameAlias{sortname}{family-given}
\DeclareDelimFormat{multinamedelim}{\addsemicolon\space}

在全:

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{lmodern}
\usepackage{filecontents}


\begin{filecontents*}{\jobname.bib}
@article{articleA,
title={This is a long title of article A},
author={Albert Einstein},
journal={Some scienece journal},
volume={1},
number={4},
pages={42--125},
year=1950,
publisher={Hellsevier}
}

@article{articleB,
title={This is a long title of article B},
author={Ludwig Boltzmann and Erwin Schrödinger and Werner Heisenberg},
journal={Another science journal},
volume={42},
number={1},
pages={43--49},
year=1970,
publisher={Hellsevier}
}
\end{filecontents*}

\usepackage[
    backend = biber,
    citestyle = authoryear-comp,
    bibstyle = authortitle,
    maxcitenames = 3,
    maxbibnames = 5,
    sorting = nyt,
    natbib
]{biblatex}

\renewbibmacro*{date}{\printdateextra}
\DeclareNameAlias{sortname}{family-given}
\DeclareDelimFormat{multinamedelim}{\addsemicolon\space}

\addbibresource{\jobname.bib}

\begin{document}
This is a test for citation \citep{articleA}. And here is another test \citep{articleB}.
\printbibliography
\end{document}

在此处输入图片描述

相关内容