一段时间以来,我一直在尝试创建自己的参考书目风格。原则上,我使用自定义 .bst 文件来管理它,但如果你想进行更改或添加新条目类型,感觉就像是件麻烦事。出于这个原因,我想切换到 Biblatex。最接近我想要的风格是。authoryear-comp
但有些东西我希望有所不同。
- 我希望在参考书目条目的末尾显示日期。
- 如果有多位作者,作者仍应按姓氏、名字列出,并始终用分号分隔。
示例中的参考书目应如下所示:
路德维希·波尔兹曼;埃尔温·薛定谔和沃纳·海森堡:“这是文章 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}