在我的参考书目中,我引用了原著和现代版本。旧版的 和新版的date
相同origdate
。参考书目中显示为:
休谟,戴维。(1748a)2007。《人类理解力研究》。彼得·F·米利肯主编。牛津:牛津大学出版社。---
。1748b。《人类理解力研究》。伦敦:A.米勒。
但这并不是我想要的 --- 我想去掉消除歧义的后缀。我更喜欢以下内容:
休谟,戴维。1748 年。《人类理解论》。伦敦:A. Millar。---
。(1748)2007 年。《人类理解论》。Peter F. Millican 主编。牛津:牛津大学出版社。
在这种情况下,有什么方法可以删除后缀吗?(作为奖励,有什么方法可以让原始作品首先排序,如上所示?)
以下是 MWE:
\documentclass{article}
\usepackage[backend=biber,authordate,cmsdate=both]{biblatex-chicago}
\begin{filecontents*}{bibliography.bib}
@Book{hume48:_philos_essay_concer_human_under,
author = {David Hume},
title = {An Enquiry Concerning Human Understanding},
date = 1748,
publisher = {A. Millar},
location = {London}}
@Book{hume07:_enquir_concer_human_under,
author = {David Hume},
title = {An Enquiry Concerning Human Understanding},
date = 2007,
origdate = 1748,
editor = {Peter F. Millican},
publisher = {Oxford University Press},
location = {Oxford}}
}
\end{filecontents*}
\addbibresource{bibliography.bib}
\begin{document}
\nocite{*}
\printbibliography
\end{document}
答案1
目前,无论我们应用什么设置,Biber 都只会考虑一年(并且只有一年)来进行年份外歧义消除。哪个字段可以通过 来控制\DeclareLabeldate
。但这意味着对于年份外歧义消除,Biber 从不考虑额外的年份字段。
假设你有同一位作者的三部作品
- 第一件作品
date = {2000}
是 - 第二部作品
date = {1960}
有 - 第三部作品有
origdate = {1960}
和date = {2000}
。
不管你做什么,在这种情况下,你最终都会得到一个额外的年份消歧义。如果origdate
是首选date
,\DeclareLabeldate
你会得到
2000、1960a、(1960b)2000
这三部作品。
如果date
你喜欢
2000a, 1960, (1960) 2000b
这意味着,在目前的功能下,我们必须采取一些技巧才能获得
2000、1960、(1960)2000
从技术上来说这并不含糊,但接近含糊,因此我建议您接受biblatex-chicago
默认产生的结果。
由于 Biber 分配了额外年份,我们必须找到一种方法来告诉 Biber 在这种情况下不要分配额外年份。David Purton 清除额外年份字段的解决方案在这种情况下有效,但正如他指出的那样,如果休谟在 1748 年有另一部作品,则可能会遇到麻烦。
另一种可行的方法是,只要没有第二部作品date = 2007, origdate = 1748,
(因此从逻辑上讲,该事件应该比 1748 年出现第二部作品的事件更有可能发生),就是让 Biber 出于额外年份的目的而忽略有问题的作品options = {skiplab}
。
@book{hume07:_enquir_concer_human_under,
author = {David Hume},
title = {An Enquiry Concerning Human Understanding},
date = 2007,
origdate = 1748,
editor = {Peter F. Millican},
publisher = {Oxford University Press},
location = {Oxford},
options = {skiplab},
}
在 MWE 中,您的条目甚至会按预期排序,尽管并非在所有设置中都能保证这一点,因此您可能不得不求助于sortyear
David 在他的回答中所解释的方法。
答案2
这是在 bib 条目中指定时清除字段的答案extrayear
。但它不会更改字段extrayear
。
因此,这不是一个完美的答案,因为如果你有其他休谟的著作也发表于 1748 年。由于该extrayear
领域是由创建的biber
,所以我不知道如何处理这个问题。
考虑到这一点,这可能是一个相当罕见的现象,所以尝试一下吧。
您可以使用该字段控制顺序sortyear
。
我extrayear
使用一个新的输入选项(useextrayear=false
)删除了该字段,该选项会在每次引用和参考书目条目时进行检查。
\documentclass{article}
\usepackage[backend=biber,authordate,cmsdate=both]{biblatex-chicago}
\usepackage{filecontents}
\begin{filecontents}{bibliography.bib}
@Book{hume48:_philos_essay_concer_human_under,
author = {David Hume},
title = {An Enquiry Concerning Human Understanding},
date = 1748,
publisher = {A. Millar},
location = {London},
sortyear = {1748a},
options = {useextrayear=false}
}
@Book{hume07:_enquir_concer_human_under,
author = {David Hume},
title = {An Enquiry Concerning Human Understanding},
date = 2007,
origdate = 1748,
editor = {Peter F. Millican},
publisher = {Oxford University Press},
location = {Oxford},
sortyear = {1748b},
options = {useextrayear=false}
}
}
\end{filecontents}
\addbibresource{bibliography.bib}
\pagestyle{empty}
\makeatletter
\newtoggle{blx@useextrayear}
\toggletrue{blx@useextrayear}
\DeclareEntryOption[boolean]{useextrayear}[true]{%
\settoggle{blx@useextrayear}{#1}}
\AtEveryCitekey{\iftoggle{blx@useextrayear}{}{\clearfield{extrayear}}}
\AtEveryBibitem{\iftoggle{blx@useextrayear}{}{\clearfield{extrayear}}}
\makeatother
\begin{document}
\autocite{hume07:_enquir_concer_human_under}
\autocite{hume48:_philos_essay_concer_human_under}
\printbibliography
\end{document}