Natbib 按近似年份排序

Natbib 按近似年份排序

背景是,我必须引用一些日期只是近似的旧资料(音乐手稿)。简单的解决方案是将其写成“大约 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} 

相关内容