我正在尝试弄清楚如何使用 BibTeX。问题是,我想我已经按照网上所有我能找到的 BibTeX 教程做了,但仍然无济于事。到目前为止,我的参考书目是这样的 (biblio.bib)
@ARTICLE{bovik_clark_geisler,
author="Alan Conrad Bovik, Marianna Clark and Wilson Geisler",
title={Multichannel texture analysis using localized spatial filters},
journal={IEEE Transactions on Pattern Analysis and Machine Intelligence},
volume={12},
year={1990},
pages={55-73},
}
@ARTICLE{marcos
author="Maria Sheila Angeli Marcos, Maricor Soriano and Caesar Saloma",
title={Classification of coral reef images from underwater video using neural networks},
journal={Optics Express},
volume={13},
number={22},
pages={8766-8771},
}
@ARTICLE{weldon
author="Thomas Weldon, William Higgins and Dennis Dunn",
title={Efficient Gabor Filter Design for Texture Segmentation},
journal={Pattern Recognition},
volume={29},
number={12},
pages={2005-2015},
}
@MISC{zhang
author="Dengsheng Zhang, Aylwin Wong, Maria Indrawan and Guojun Lu",
title={Content-based Image Retrieval Using Gabor Texture Features}
}
我发现(如果我错了请纠正我)BibTeX 使用正则表达式来解析条目及其不同内容,以根据指定的样式(ACM、IEEE 等)生成适当的参考格式。但是,我不知道这种格式是什么。我正在关注编译过程http://www.bibtex.org/使用/,但在调用时bibtex
,我收到如下错误
I was expecting a `,' or a `}'---line 25 of file biblio.bib
...
Warning--to sort, need author or key in weldon
Warning--empty author in weldon
Warning--empty title in weldon
Warning--empty journal in weldon
Warning--empty year in weldon
其中第 25 行是 weldon 的作者属性。
marcos 和 zhang 也一样,尽管 zhang 只抱怨密钥。那么密钥是什么?为什么我没有在在线资源中看到它?我也尝试将属性中的花括号更改为引号,但仍然抱怨相同的错误。我是否遗漏了什么,您可以推荐任何教程来使其工作?
更新:
因此,我通过 Wikipedia 发现,BibTeX 解析使用和而不是逗号。但是,我仍然得到相同的错误。在我将它们更改为之前的输出和,就像
[1]
[2]
[3]
[4] Citation entry for bovik_clark_geisler
但是 Bovik 和 Clark 的名字根本没有分隔,看起来像一个名字。阅读 Wikipedia 后,发现它们之间用逗号隔开,但输出结果仍然相同(1-3 为空白,4 处为 bovik_clark_geisler 的引文)。
答案1
weldon
在包含键、marcos
和 的条目中zhang
,您缺少一个逗号来分隔键和条目字段;当一个条目有多个作者时,使用 来and
分隔所有作者(这就是 bibTeX 知道一个作者在哪里结束以及另一个作者在哪里开始的方式);如果您想保留字段中的大写字母title
,请使用括号将必须保持大写的字母括起来(就像我{G}abor
在下面的代码中所做的那样)。这是一个基于您的示例代码的示例,并进行了建议的修改(我还添加了和字段year
以marcos
防止weldon
出现 bibTeX 警告):
\documentclass{article}
\usepackage{filecontents}
\begin{filecontents*}{\jobname.bib}
@ARTICLE{bovik_clark_geisler,
author = "Alan Conrad Bovik and Marianna Clark and Wilson Geisler",
title = {Multichannel texture analysis using localized spatial filters},
journal = {IEEE Transactions on Pattern Analysis and Machine Intelligence},
volume = {12},
year = {1990},
pages = {55-73},
}
@ARTICLE{marcos,
author = "Maria Sheila Angeli Marcos and Maricor Soriano and Caesar Saloma",
title = {Classification of coral reef images from underwater video using neural networks},
journal = {Optics Express},
volume = {13},
number = {22},
pages = {8766-8771},
year = {1989}
}
@ARTICLE{weldon,
author = "Thomas Weldon and William Higgins and Dennis Dunn",
title = {Efficient {G}abor Filter Design for Texture Segmentation},
journal = {Pattern Recognition},
volume = {29},
number = {12},
pages = {2005-2015},
year = {2005}
}
@MISC{zhang,
author = "Dengsheng Zhang and Aylwin Wong and Maria Indrawan and Guojun Lu",
title = {Content-based Image Retrieval Using {G}abor Texture Features}
}
\end{filecontents*}
\begin{document}
\nocite{*}
\bibliographystyle{plain}
\bibliography{\jobname}
\end{document}
答案2
我想我已经按照网上所有 BibTeX 教程做了,但仍然无济于事
由于您似乎对 BibTEX 的结构和哲学非常感兴趣,您可能还希望阅读 Nicolas Markey 的文章驯服野兽——BibTeX 的 B 到 X. 它提供了非常清晰的解释
- 使用基本的 LaTeX 方法(即 sans-BibTeX)来创建引用和排版书目条目列表(获取这些背景知识对于深入了解 BibTeX 如何与 LaTeX 的基本书目和引用相关机制交互非常有用),
- 如何使用 BibTeX,
- 文件的结构
.bib
,以及 - 文件的结构
.bst
(即参考书目样式)。
您可能还会发现,回顾一些与 bibtex 相关的基本术语也很有帮助:
要使用 BibTeX(和 LaTeX)处理所有引用和参考创建任务,您需要
- 创建一个或多个
.bib
文件, - 选择一个
.bst
参考书目样式文件(其中包含有关如何格式化条目的 BibTeX 说明),然后 - 选择(通常但不一定)引文管理包 - 例如
cite
,harvard
(专为希望使用作者年份引文样式的作者编写的首批包之一),或natbib
- 以启用和简化各种与引文相关的任务(超出了 LaTeX 自身命令所能实现的范围\cite
)
- 创建一个或多个
.bib
文件包含entries
一些辅助材料。entry
是基本的独立单元,包含与您想要引用和参考的出版物(或任何类型的实体)相关的所有信息。包括
entry
:- a
type specifier
,例如@book
或@article
; - 条目内容的开始和结束分隔符 - 通常是一对花括号,但一对圆括号也可以;
- a
key
,这是用来引用条目的字符串;每个条目的键必须是独特的.bib
对于该条目(至少在你通过指令告诉 LaTeX 的文件中包含的所有条目集内)\bibliography{...}
; 几个
fields
,例如author
,,,和(仅举几个例子)title
。year
pages
如果条目中包含每个字段,则应为其分配一些内容,例如,
author = "Isaac Newton",
或者
title = {Philosophiae Naturalis Principia Mathematica},
字段之间(以及与条目之间
key
)以逗号分隔。请注意,使用双引号或花括号来分隔字段的内容都没有关系(只要保持一致)。
令人困惑的是,BibTeX 还识别场地
key
除了条目的字符串之外,还应添加命名的key
。请确保不是来指定key
使用该key = "...",
构造的条目。
- a
BibTeX 的原始
.bst
文件(plain
、unsrt
和abbrev
)被设置为识别和处理 22 个不同的字段(如果包括特殊用途crossref
字段则为 23 个)。(如果您对这些字段感到好奇,请plain.bst
在您的 TeX 发行版中找到该文件并查找 的内容ENTRY
。)更现代的 .bst 文件(例如软件包提供的文件)提供了有关如何识别和处理其他字段(natbib
例如doi
、、、和)的说明。eid
isbn
issn
url
根据条目的类型,某些字段将是必需的,选修的, 或者被忽略。例如,如果您使用书目样式,则
plain
类型条目的必填字段article
为author
、、和,可选字段为、、和。类型条目中的所有其他字段(包括,如果您使用)都将被忽略。title
journal
year
volume
number
pages
month
article
url
plain.bst
当然,许多条目将有包含多位作者的
author
和/或editor
字段。在这种情况下,使用分词符将作者姓名彼此分开and
,不是逗号。为什么不用逗号?请参阅下一项。通常,BibTeX 可以很好地将作者姓名解析为“FirstName(s)”、“von”、“LastName”和“Jr.”部分。但是,对于某些姓名,解析算法可能会严重偏离轨道,您必须进行干预 - 通过明智地插入逗号。
例如,对于
author = "Ludwig Mies van der Rohe",
BibTeX 可能会“判定”此人有两个名字(“Ludwig”和“Mies”),“von”部分由“van der”组成,姓氏由单个单词“Rohe”组成。然而,此人实际上只有一个名字(Ludwig),没有“von”部分,姓氏是复合的(Mies van der Rohe)。因此,应将此字段指定为(请注意“正常”名字-姓氏顺序的反转)
author = "Mies van der Rohe, Ludwig",
对于西班牙姓氏以及电影演员的姓氏,经常会遇到由两个(或更多)未用连字符连接的部分组成的姓氏。假设您需要引用由 Arantxa Sanchez Vicario 和 Kristin Scott Thomas 编辑的作品(我不知道是否存在这样的作品……);您可能应该将条目的字段设置
editor
为editor = "S{\'a}nchez Vicario, Arantxa and Scott Thomas, Kristin",
请注意使用
and
分词来分隔两个编辑者的姓名,并使用逗号来构造每个姓名的内容。使用逗号来指示 BibTeX 的名字和姓氏很重要,至少有三个原因。(i)它能够正确显示作者和编辑者的姓氏,如果启用,则按第一作者姓氏的字母顺序对条目进行排序。(ii)它能够正确地缩写名字(以防您使用的参考书目样式缩写名字)。(iii)它对于生成使用作者年份引用样式的正确的文内引用也至关重要。
我将衷心支持@YiannisLazarides 的建议,使用专用程序(例如)JabRef
,或者至少使用编辑器附带的一些 bibtex 感知宏,以帮助简化和自动化 bib 条目的创建、更新和漂亮打印。
BibTeX 有一个臭名昭著的缺点,这个缺点与其嵌入英语语言惯例和现在接近玛土撒拉时代(以及它 20 多年来没有进行过重大更新的事实)密切相关,那就是输入重音字符时必须小心,以免产生问题。 (您是否注意到了前面示例中的{\'a}
构造,而不是直接使用á
?)如果您的参考书目包含的不仅仅是少数几个包含重音符、变音符和其他变音符号的名称和其他单词,您可以考虑熟悉biblatex
(一个现代且维护良好的软件包):biblatex
处理包含重音符的单词没有问题。
此外,根据文档的语言,包含重音的元音或辅音的排序顺序可能与英语文档的排序顺序不同(BibTeX 假设英语文档的排序顺序与英语文档的排序顺序不同,这一点并不令人意外,因为它的起源就是如此)。幸运的是,如果您使用biblatex
和babel
,这些排序问题将自动为您处理。尽管有方法可以使用“普通” bibtex 来影响字母排序顺序以符合给定语言的特性,但手动进行这项工作会浪费您的时间。真的!有关切换到 bilatex 的更多信息,请参阅例如问题“如何切换到 biblatex”以及相关答案。
答案3
如果您手动输入参考书目,很容易出错。尝试从最小的示例开始。您可以使用包filecontents
来保存它们。在下面的示例中,我将其命名为myrefs
。myrefs.bib
然后可以在您的主要写作中使用该文件。
\documentclass{article}
\usepackage{filecontents}
\begin{filecontents*}{myrefs.bib}
@INBOOK{chicago,
title = "The Chicago Manual of Style",
publisher = "University of Chicago Press",
edition = "Thirteenth",
year = 1982,
pages = "400--401",
key = "Chicago"
}
@ARTICLE{bovik_clark_geisler,
author="Alan Conrad Bovik, Marianna Clark and Wilson Geisler",
title={Multichannel texture analysis using localized spatial filters},
journal={IEEE Transactions on Pattern Analysis and Machine Intelligence},
volume={12},
year={1990},
pages={55-73},
}
\end{filecontents*}
\begin{document}
The \cite{chicago} and \cite{bovik_clark_geisler}
\bibliographystyle{plain} % (uses file "plain.bst")
\bibliography{myrefs}
\end{document}
运行上述命令后你应该得到如下结果:
一个更好的方法(特别是对于刚开始的人来说)是使用两个很好的工具。贾布雷夫管理你的书目并使用比布拉特克斯而不是bibtex
。