有没有一种方法可以针对特定条目覆盖bibtex样式文件?

11

我的首选bibtex样式文件通过作者的缩写进行引用。然而,有一些文本应该以不同的方式引用(例如,Elements Geometrie Algebrique 应该始终引用为 [EGA])。我知道如何在bibtex输出的.bbl文件中修改这个问题,但是那么我必须对每个文件都做这个操作。是否有一种方法可以从我的.bib文件中解决这个问题?


你目前使用的参考文献风格是什么? - godbyk
3个回答

8
我偏爱的bibtex样式文件通过作者缩写进行引用。然而,有各种文本需要以不同的方式引用...我希望这样做不会引起争议,但是你喜欢的bibtex样式文件并不能很好地为读者服务。我的工作之一是审查论文,像[GKS]这样的一堆缩写并不像[Guibas,Knuth和Sharir 1990]这样的完整作者-日期引用那么有用。对于熟知该领域的读者来说,作者和日期通常足以避免引用参考文献。对于一个幼稚的读者,一组名字比一组字母更容易记住,特别是当其中一个或多个名字可能很熟悉时。例如,《芝加哥风格手册》详细讨论了这些问题,并解释了从专业文献中引用的正确方法。
我这样长篇大论是因为我认为您正在解决错误的问题。尽管我相信您的读者很快就能认出[EGA],但我希望他们也能认出(Grothendieck 1960)或(Grothendieck和Dieudonné 1967)。
我可以通过更改我的.bib文件来修改引用的方式吗?
如果您想使用任何标准的BibTeX样式,则不行。BibTeX使用世界上最糟糕的编程语言之一,标准程序非常坚持使用作品的作者或编辑来形成引用键。如果您确实想这样做,我建议按照以下步骤操作:
1.克隆并修改类似于plainnat.bst文件的内容。这将使您能够创建新的“参考文献风格”。
2.创建一种新类型的BibTeX条目,该条目将使您能够使用特殊字段(key是一个受欢迎的选择)指定引用键。
3.修改calc.label函数以正确处理您的新条目类型。如果你很幸运,改变calc.label就足以确保它被正确排序。
4.在您的.bib文件中使用您的非标准类型,并在所有LaTeX文档中使用您的非标准\bibliographystyle{...}。
神明真的不希望您这样做 - 您的合著者也不希望。

1
这实际上是一个相当常见的惯例,得到了芝加哥的认可:参见CMoS 16.39。因此至少有一些权威会允许你这样做。 - Charles Stewart
1
"BibTeX使用世界上最糟糕的编程语言之一" - 实际上,当考虑到其目的时,它并不差:大多数.bst文件都足够容易阅读。 BibTeX的主要问题,也是称之为“世界上最糟糕”的原因,是如果您的样式需要从.bib文件中解析条目...但是对于这种任务来说,tex并不是很愉快。 - Charles Stewart
3
@Charles:作为一名编程语言专家,我有广泛的简单后缀语言和更通用编程语言的经验,我坚持我的关于BibTeX的说法。奥伦最好直接采用PostScript(尽管这可能需要一些时间旅行)。不过 key 的建议很好。 - Norman Ramsey
1
@Norman:这么说吧,我不认为.bst语言的限制是bibtex的主要缺陷之一。这并不是在为.bst语言辩护,将其作为如何设计连接语言的示例,我会听从您更高超的知识。 - Charles Stewart
1
@Charles:感谢您的澄清。在Bibtex中找到缺陷就像在桶里打鱼一样容易。http://packages.debian.org/search?keywords=nbibtex - Norman Ramsey
显示剩余2条评论

3
您可以修改.bst程序,使其查找另一个字段,例如shown-key,并在设置后使用它而不是通常的字段。

1
如果您愿意使用不同的参考文献样式,可以按照此答案所指出的方法来实现。使用abstract样式,将bibtex键用作引用键。然后,您可以按任何想要的方式编辑bib文件中的每个键。
这种方法的明显缺点是您需要编辑bib文件中的每一项,但我认为为了获得这样的灵活性,这是一个公平的代价。
我见过其他可能的解决方案,涉及natbib或biblatex,但我想避免使用这些包,因为有时候使用它们会出现编译问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接