我正在编写一些与 .bib 字段交互的软件。我希望能够正确扩展字段值中的 @string 缩写,并且我一直在学习引用规则。在几乎所有情况下,似乎字段的值( 之后的位=
)必须:
- 完全“引用”或{括号}
- 或者不带括号,但是是缩写的标签
@string
(引用时值将扩展为该缩写) - 或由单独的项目列表组成
#
,每个项目均符合上述其中一项。
例如,对于该publisher
领域来说,情况确实如此。我无法编写一份引用了以下内容的文档:publisher = Oxford University Press,
:没有似乎适用于year
。year = 2011,
工作正常,正如year = yr
我有的那样@String{yr = 1967}
(请注意字符串定义中缺少括号或引号)。
这是为什么?据我从文档中了解到,两者都是文字字段。年份字段有何不同,我的软件应该实施哪些规则?(如果您能指出一些文档的相关部分,显然我不需要完整的细分)。
答案1
BibTeX 的精彩文档尼古拉斯·马基驯服野兽(更多官方文档请访问https://ctan.org/pkg/bibtex对大多数人来说有点欠缺,因为它假设读者了解 LaTeX 书籍 [Leslie Lamport. LaTeX: A Document Preparation System. Addison-Wesley, 1997.])
第 3 部分第 8 条.bib
文件结构(第 20 页)我们发现
- 值 (IE(每个赋值右侧)可以放在花括号或双引号之间。主要区别在于,在第一种情况下,你可以写双引号,而在第二种情况下,则不能。对于引用关于“文件名和字体”的评论作者:Frank Mittelbach,您可以使用以下解决方案之一:
花括号必须匹配,因为它们将出现在 LaTeX 编译的输出中。[...]title = "Comments on {"}Filenames and Fonts{"}", title = {Comments on "Filenames and Fonts"},
- 对于数值,可以省略花括号和双引号。
这意味着您可以省略括号/引号的原因year = 1994,
是因为该值是纯数字。这与特定字段无关,而是与内容有关。
s的情况@string
在第 3 部分第 9 节第 21 页中讨论。