如果这个问题已经在其他地方得到解答,我很抱歉,但我找不到。当 Biblatex-chicago-authordate 中同一作者在同一年出版了多部作品时,我想让 Biblatex-chicago-notes 对我的参考书目进行排序,也就是说在日期/年份字段后添加一个字母 (a、b、c...)。我找不到如何做到这一点,而且似乎它只在 authordate 规范中这样做。
这是一个 mwe:
\documentclass{scrbook}
\usepackage[notes,biber]{biblatex-chicago}
\bibliography{Bibliography}
% @book{Beck:2006pt,
% Address = {London},
% Author = {Ulrich Beck},
% Publisher = {Polity},
% Title = {Cosmopolitan Vision},
% Year = {2006}}
%
% @book{Beck:2006kh,
% Address = {London},
% Author = {Ulrich Beck},
% Publisher = {Polity},
% Title = {Power in the Global Age: A New Global Political Economy},
% Year = {2006}}
\begin{document}
Blablabla.\autocite{Beck:2006pt} And also blablabla.\autocite{Beck:2006kh}
\printbibliography
\end{document}
我得到了结果(不要介意 ISBN,我将添加 ISBN=false 选项):
答案1
由于是biblatex-chicago
专门为提供 CMStyle 而制作的,因此代码有时必须相当长才能符合 CMS 的要求。
考虑到这一点,请记住您这样做可能会违反原始 CMS 指南,并记住可能存在一些极端情况,其中下面的解决方案不会产生令人满意的结果 - 有相当多的地方样式会打印日期或年份,我不完全确定我是否窥探了所有这些,有时样式也会发生变化origdate
,date
这可能会导致这些情况下出现问题extrayear
。
继续修改:
首先,我们通过在加载时添加选项来告诉biblatex
我们提供字母。extrayear
labeldate
然后我们重新定义两个宏
\renewbibmacro*{cmsyear}{%
\iftoggle{cms@switchdates}%
{\printfield{origyear}}%
{\printfield{year}\printfield{extrayear}}}
\renewbibmacro*{date}{% New for 0.9
\iftoggle{cms@switchdates}%
{\printorigdate}%
{\printdateextra}}
在第一个中我们添加了\printfield{extrayear}
,而在第二个中我们用\printdate
替换\printdateextra
。
平均能量损失
\documentclass{article}
\usepackage[notes,backend=biber,labeldate]{biblatex-chicago}
\addbibresource{biblatex-examples.bib}
\renewbibmacro*{cmsyear}{%
\iftoggle{cms@switchdates}%
{\printfield{origyear}}%
{\printfield{year}\printfield{extrayear}}}
\renewbibmacro*{date}{% New for 0.9
\iftoggle{cms@switchdates}%
{\printorigdate}%
{\printdateextra}}
\begin{document}
Blablabla.\autocite{knuth:ct:b} And also blablabla.\autocite{knuth:ct:c}
Blablabla.\autocite{knuth:ct:b} And also blablabla.\autocite{knuth:ct:c}
\printbibliography
\end{document}