背景是,我必须引用一些日期只是近似的旧资料(音乐手稿)。简单的解决方案是将其写成“大约 1710 年”或任何近似年份。然而,这在最终书目中排序时会产生问题,因为这些作品应该排在同一作者的后期作品(通常是印刷版)之前。
目前在我的参考书目中(使用底部给出的引文),顺序是
约翰·塞巴斯蒂安·巴赫 (1853)
约翰·塞巴斯蒂安·巴赫(约 1710 年)
巴赫,约翰·塞巴斯蒂安和安娜·玛格达莱娜·巴赫 (约 1730 年)
而正确的顺序应该是 1853 年的印刷版位于 1710 年左右的手稿之后。
我尝试了不同的方法来解决这个问题,包括使用 bib.sort.order 函数来简单地忽略年份,但这似乎并不能完全解决问题,而且毫不奇怪,它会给其他条目带来问题,导致无法正确排序。
我正在使用 natbib 和作者日期引用以及自定义(法语)bst 文件(排序按作者字母顺序,然后按年份)。
@book{bach1710,
url={http://sammlungen.ub.uni-frankfurt.de/musikhs/content/titleinfo/4730749},
title={Frankfurt am Main, Stadt- und Universitäts- Bibliothek, collection du Manskopfsches Museum für Muzik und Theatergeschichte, Mus.Hs. 1538},
author={Bach, Johann Sebastian},
year={ca. 1710}
}
@book{bach1730,
url={https://www.bach-digital.de/receive/BachDigitalSource_source_00001141},
title={Staatsbibliothek zu Berlin, collection du Preußischer Kulturbesitz, D-B Mus.ms. Bach P 226 Faszikel 9},
author={Bach, Johann Sebastian and Bach, Anna Magdalena},
year={ca. 1730},
}
@incollection{bach1853,
author={Bach, Johann Sebastian},
title={Ouverture nach Französischer Art},
volume={3},
editor={Becker, Carl Ferdinand},
booktitle={Bach-Gesellschaft Ausgabe},
publisher={Breitkopf und Härtel},
address={Leipzig},
year={1853},
}
答案1
在 BibTeX 圈子里,有一个古老而成熟的技巧可以解决您所描述的问题:\noopsort
在各个地方插入一个经过精心选择的指令,以覆盖 BibTeX 的默认排序规则,而不会影响 LaTeX 排版书目条目的方式。本质上,人们定义
\newcommand{\noopsort}[1]{}
并改变领域
year = {ca. 1710},
到
year = {{\noopsort{1710}}ca. 1710},
同样,改变领域
year = {ca. 1730},
到
year = {{\noopsort{1730}}ca. 1710},
这是因为在 BibTeX 的初步净化步骤中(这不是我编造的)
字段更改为
year = {1710ca. 1710},
和
year = {1730ca. 1730},
分别,用于分类目的;这样,就可以保证前一个条目确实会出现在带有年份的条目之前1853
。
有关此主题的更多信息,请参阅BibTeX 使用 natbib 处理荷兰语“van”名称前缀,孪生引用顺序错误, 和使用 \noopsort 使用 natbib 对“年份”进行排序时出现问题。后一篇帖子还介绍了回答经过埃格尔这说明了如何解决natbib
在年份字段中因花括号而导致的堵塞倾向。
\documentclass{article}
\begin{filecontents}[overwrite]{mybib.bib}
@book{bach1710,
author = "Bach, Johann Sebastian",
year = "{\noopsort{1710}}ca. 1710",
url = "http://sammlungen.ub.uni-frankfurt.de/musikhs/content/titleinfo/4730749",
title = "Collection du Manskopfsches Museum für Muzik und
Theatergeschichte, Mus.Hs. 1538",
publisher = "Stadt- und Universitäts-\hspace{0pt}Bibliothek",
address = "Frankfurt am Main",
}
@book{bach1730,
author = "Bach, Johann Sebastian and Bach, Anna Magdalena",
year = "{\noopsort{1730}}ca. 1730",
url = "https://www.bach-digital.de/receive/BachDigitalSource_source_00001141",
title = "Collection du Preußischer Kulturbesitz, D-B Mus.ms.
Bach P 226 Faszikel 9",
publisher = "Staatsbibliothek zu Berlin",
}
@incollection{bach1853,
author = "Bach, Johann Sebastian",
year = 1853,
title = "{Ouverture nach Französischer Art}",
volume = 3,
editor = "Becker, Carl Ferdinand",
booktitle = "Bach-Gesellschaft Ausgabe",
publisher = "Breitkopf und Härtel",
address = "Leipzig",
}
\end{filecontents}
\usepackage[T1]{fontenc}
\newcommand{\noopsort}[1]{} % old BibTeX trick
\usepackage{xurl}
\usepackage{natbib}
\bibliographystyle{plainnat}
%% See https://tex.stackexchange.com/a/39718/5001
\makeatletter
\let\NAT@bare@aux\NAT@bare
\def\NAT@bare#1(#2){%
\begingroup\edef\x{\endgroup
\unexpanded{\NAT@bare@aux#1}(\@firstofone#2)}\x}
\makeatother
\begin{document}
\nocite{*}
\bibliography{mybib}
\end{document}