Apalike,但按第一作者的姓氏和年份排序

Apalike,但按第一作者的姓氏和年份排序

我希望natbib在 bibtex 中将包与 bibliographystyle 一起使用apalike,并在参考书目中使用特定类型的作者年份排序。我希望项目通常根据作者姓名的字母顺序进行排序/排列,但对于已知多个项目的作者,项目应根据出版年份排序。单一作者项目应与有两个作者的项目分开,后者应与有三个或更多作者的项目分开。 apalike接近我想要实现的目标,但也存在一些问题。只要只有单一作者的出版物,我就能得到我想要的结果:项目按作者的姓氏排序。当已知同一位作者有多个单一作者的项目时,它们将根据出版年份排序。到目前为止,一切都很好。

但是,当同一作者的已知项目不是单一作者时,字母表就会接管,突然会出现一些项目出版较晚(出版年份),但在参考书目中出现在其他较早出版的项目之前的项目。一个简单的例子是:Joe(1972 年)、Joe(1980 年)、Joe & Mike(1999 年)、Joe & Frank(2016 年)、Joe & Mike & Tom(2000 年)、Joe & Mike & Alexander(2011 年)。使用这种apalike样式,书目将按以下方式排列它们:

  • 乔(1972)
  • 乔(1980)
  • 乔与弗兰克 (2016)
  • 乔与迈克 (1999)
  • 乔、麦克和亚历山大 (2011)
  • 乔、迈克和汤姆 (2000)

但我希望这样:

  • 乔(1972)
  • 乔(1980)
  • 乔与迈克 (1999)
  • 乔与弗兰克 (2016)
  • 乔、迈克和汤姆 (2000)
  • 乔、麦克和亚历山大 (2011)

下列的Natbib 按出现顺序排序和引用我尝试创建自定义 BST,它应该与上述问题类似apalike但可以规避上述问题。我设法做到的比原始apalike样式更好,但仍然不是我想要的。当使用生成自定义 BST 时,latex makebst我选择了以下相关选项:

STYLE OF CITATIONS:

(a) Author-year with some non-standard interface

AUTHOR-YEAR SUPPORT SYSTEM (if author-year citations)

(l) Apalike for use with apalike.sty

ORDERING OF REFERENCES (if author-year citations)

(l) By label (Jones before Jones and James before Jones et al)

单一作者的项目仍将按我想要的方式排序。但是,使用此新的自定义 BST,"Authorname et al." 项目也将按我想要的方式排序,即在检查了第一作者的姓氏后,按照出版年份排序(实际上检查的是标签,但我们不会关心这一点)。剩下的问题是恰好有两个作者的项目(显然,因为这些项目没有生成“et al.”标签)。这些项目仍将按字母顺序排序。以上面的例子为例,我将得到:

  • 乔(1972)
  • 乔(1980)
  • 乔与弗兰克 (2016)
  • 乔与迈克 (1999)
  • 乔、迈克和汤姆 (2000)
  • 乔、麦克和亚历山大 (2011)

因此,单一作者的作品和两个以上作者的作品都可以,但有两个作者的作品不行。

下面我提供了我的 .tex 文件的最小示例和 .bib 文件中一些条目的最小示例:

\documentclass[12pt,a4paper,hidelinks]{article}
\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
\usepackage[authoryear,sort&compress]{natbib}       %Calls bibliography commands + Cite with author-year style (Harvard) instead of the numeric style. 


\begin{document}


\section*{References}
\label{sec:References}
\citep{Owen1876,
Berman1977,
Berman1987,
Berman1992,
Berman1993,
Berman1993_Seymouria,
Berman2003_Aspidosaurus,
Berman2004,
Berman2010_Fedexia,
Berman2011_Rotaryus,
Berman2014,
Berman2015}


\bibliographystyle{apalike}
\bibliography{myrefs}


\end{document}

这是我的最小 myrefs.bib 文件:

@Book{Owen1876,
  title     = {{Descriptive and illustrated catalogue of the Fossil Reptilia of South Africa in the collection of the British Museum}},
  publisher = {British Museum (Natural History)},
  year      = {1876},
  author    = {Richard Owen},
  address   = {London, United Kingdom},
  note      = {88 pp.},
  url       = {http://gallica.bnf.fr/ark:/12148/bpt6k987042},
}

@Article{Berman1977,
  author    = {Berman, David S},
  title     = {{A new species of \textit{Dimetrodon} (Reptilia, Pelycosauria) from a non-deltaic facies in the Lower Permian of north-central New Mexico}},
  journal   = {Journal of Paleontology},
  year      = {1977},
  volume    = {51},
  number    = {1},
  pages     = {108--115},
}

@Article{Berman1987,
  author    = {David S. Berman and Robert R. Reisz and David A. Eberth},
  title     = {{\textit{Seymouria sanjuanensis} (Amphibia, Batrachosauria) from the Lower Permian Cutler Formation of north-central New {Mexico} and the occurrence of sexual dimorphism in that genus questioned}},
  journal   = {Canadian Journal of Earth Sciences},
  year      = {1987},
  volume    = {24},
  number    = {9},
  pages     = {1769--1784},
}

@Article{Berman1992,
  author    = {David S. Berman and Stuart S. Sumida and R. Eric Lombard},
  title     = {{Reinterpretation of the temporal and occipital regions in \textit{Diadectes} and the relationships of diadectomorphs}},
  journal   = {Journal of Paleontology},
  year      = {1992},
  volume    = {66},
  number    = {3},
  pages     = {481--499},
}

@InCollection{Berman1993,
  author    = {Berman, D. S.},
  title     = {{Lower Permian vertebrate localities of New Mexico and their assemblages}},
  booktitle = {{Vertebrate Paleontology in New Mexico}},
  publisher = {New Mexico Museum of Natural History},
  year      = {1993},
  editor    = {Spencer G. Lucas AND Jiri Zidek},
  volume    = {2},
  pages     = {11--21},
}

@Article{Berman1993_Seymouria,
  author   = {Berman, David S. and Martens, Thomas},
  title    = {{First occurrence of \textit{Seymouria} (Amphibia: Batrachosauria) in the Lower Permian Rotliegend of central Germany}},
  journal  = {Annals of Carnegie Museum},
  year     = {1993},
  volume   = {62},
  number   = {1},
  pages    = {63--79},
}

@Article{Berman2003_Aspidosaurus,
  author   = {Berman, David S. and Lucas, Spencer G.},
  title    = {{\textit{Aspidosaurus binasser} (Amphibia, Temnospondyli), a new species of Dissorophidae from the Lower Permian of Texas}},
  journal  = {Annals of Carnegie Museum},
  year     = {2003},
  volume   = {72},
  number   = {4},
  pages    = {241--262},
}

@Article{Berman2004,
  author    = {Berman, David S and Henrici, Amy C and Sumida, Stuart S and Martens, Thomas},
  title     = {{New materials of \textit{Dimetrodon teutonis} (Synapsida: Sphenacodontidae) from the Lower Permian of Germany}},
  journal   = {Annals of Carnegie Museum},
  year      = {2004},
  volume    = {73},
  number    = {2},
  pages     = {48--56},
}

@Article{Berman2010_Fedexia,
  author    = {David S Berman and Amy C. Henrici and David K. Brezinski and Albert D. Kollar},
  title     = {{A new trematopid amphibian (Temnospondyli: Dissorophoidea) from the Upper Pennsylvanian of Western Pennsylvania: earliest record of terrestrial vertebrates responding to a warmer, drier climate}},
  journal   = {Annals of Carnegie Museum},
  year      = {2010},
  volume    = {78},
  number    = {4},
  pages     = {289--318},
}

@Article{Berman2011_Rotaryus,
  author    = {David S Berman and Amy C. Henrici and Thomas Martens and Stuart S. Sumida and Jason S. Anderson},
  title     = {{\textit{Rotaryus gothae}, a new trematopid (Temnospondyli: Dissorophoidea) from the Lower Permian of central {Germany}}},
  journal   = {Annals of Carnegie Museum},
  year      = {2011},
  volume    = {80},
  number    = {1},
  pages     = {49--65},
}

@InCollection{Berman2014,
  author    = {Berman, David S and Henrici, Amy C. and Sumida, Stuart S. and Martens, Thomas and Pelletier, Valerie},
  title     = {{First European Record of a Varanodontine (Synapsida: Varanopidae): Member of a Unique Early Permian Upland Paleoecosystem, Tambach Basin, Central Germany}},
  booktitle = {{Early Evolutionary History of the Synapsida}},
  publisher = {Springer},
  year      = {2014},
  editor    = {Kammerer, Christian F. and Angielczyk, Kenneth D. and Fr{\"o}bisch, J{\"o}rg},
  series    = {Vertebrate Paleobiology and Paleoanthropology},
  chapter   = {5},
  pages     = {69--86},
  address   = {Dordrecht},
}

@InCollection{Berman2015,
  author    = {David S. Berman AND Amy C. Henrici AND Spencer G. Lucas},
  title     = {{Pennsylvanian-Permian Red Bed vertebrate localities of New Mexico an their assemblages}},
  booktitle = {{Fossil Vertebrates in New Mexico}},
  publisher = {New Mexico Museum of Natural History},
  year      = {2015},
  editor    = {Lucas, S. G. AND Sullivan, R. M.},
  volume    = {68},
  pages     = {65--76},
}

这将生成以下文档(仅显示第一页):

[第1页]

如果我们\bibliographystyle{apalike}用替换\bibliographystyle{myapalike},即我的自定义 BST,我们会得到以下输出(再次仅显示第一页):

第 1 页

请注意,使用自定义 BST 我们接近我想要实现的目标。但有两位作者的项目不符合我设想的模式。

我认为在 Bibtex 中生成我想要的模式应该非常简单(至少我猜是这样 - 应该有更多人遇到这个问题?),但我不知道怎么做。请注意,使用\noopsort此处建议的根据第一作者的姓氏,然后是年份对书目条目进行排序,忽略任何其他作者 不是一个选项,因为我的参考书目太大,无法进行这样的手动更改。如果可能的话,我想避免使用 biblatex,我更喜欢适用于 bibtex 的选项。

有没有我不知道的替代样式,可以在这种情况下提供帮助?或者在生成自定义 BST 时进行更改?或者是否真的需要手动修改自定义 BST?如果是这样,那么需要如何/进行哪些更改?

另外一个问题:如果我希望所有属于同一作者的条目都只遵循出版年份,即不将单一作者的条目与两位或多位作者的条目分开,我该如何进行?

答案1

稍微玩一下,就可以apalike.bst仅按第一作者对条目进行排序,然后直接按年份和标题进行排序。

修改步骤apalike.bst如下。

  1. 在您的机器上找到apalike.bst。您可以通过输入kpsewhich apalike.bst。您可以通过在命令行/终端中输入来执行此操作。或者,从 CTAN 获取该文件的副本http://mirrors.ctan.org/biblio/bibtex/base/apalike.bst

  2. 将文件复制到 TeX 可以找到的位置。文档目录就可以了。另请参阅https://texfaq.org/FAQ-inst-wlcf

  3. 将文件重命名为apalike-onesort.bst(许可证apalike.bst要求您在修改文件时更改名称)

  4. 查找FUNCTION {sort.format.names}(ll. 914-934)并将整个函数替换为更短的

    FUNCTION {sort.format.names}
    { 's :=
      s num.names$ #0 >
        { s #1 "{vv{ } }{ll{ }}{  f{ }}{  jj{ }}" format.name$ sortify }
        { "" }
      if$
    }
    
  5. 在文件顶部添加一条包含您的姓名、当前日期和更改的简短描述的评论。

  6. 在您的文档中使用\bibliographystyle{apalike-onesort}而不是。\bibliographystyle{apalike}

作为步骤 1 至 5 的替代方案,您可以在以下位置获取该文件的修补版本https://gist.github.com/moewew/952669080e9cbc20f987d3ed42cf6606

使用新方法,apalike-onesort.bst您的 MWE 会生成仅按第一作者、年份和标题排序的参考书目。


如果你想先对所有一位作者的项目进行排序,然后对所有两位作者的项目进行排序,最后对所有三位或更多作者的项目进行排序,请将函数替换为

FUNCTION {sort.format.names}
{ 's :=
  s num.names$ #0 >
    {
       s #1 "{vv{ } }{ll{ }}{  f{ }}{  jj{ }}" format.name$ sortify
       s num.names$
       duplicate$ #3 <
         { int.to.str$ * }
         {
           pop$
           "3" *
         }
       if$
    }
    { "" }
  if$
}

这会在作者姓名后添加“1”、“2”或“3”以进行排序并强制采用所需的方案。

相关内容