我必须使用日记帐模板使用 .bst 文件来格式化我的参考文献,但我的 .bib 文件包含无法识别的条目,因为我通常使用 biblatex,所以我没有使用 natbib 的背景。但是,浏览 .bst 文件时,我发现一些函数似乎定义了某种类型的引用,例如@www
:
FUNCTION {www}
{ output.bibitem
format.authors "author" output.checkwoa
new.block
format.title "title" output.check
new.block
format.website "url" output.check
format.eprint output
new.block
note output
formatfull.doi output
fin.entry
}
因此,我的问题是如何识别.bst 中定义的所有@类型?
我发现的唯一信息是在这个相关的问题,我已经浏览过《驯服野兽》这本书了。
答案1
除非您使用的 bst 文件有一些有用的文档列出了所有可用的条目类型,否则您必须查看 bst 文件,特别是检查哪些 FUNCTION 定义了条目类型变量。例如,如果您使用的是 Unix 或 MacOS 系统,您可以打开命令窗口,切换到包含 bst 文件的目录(我们称之为)并aaa.bst
在命令提示符下键入以下命令:
cat aaa.bst | grep "FUNCTION {"
所有包含该字符串的代码行都FUNCTION {
将被列出。
对于文件plainnat.bst
,总共将输出大约 90 行。相关结果将以以下行开头FUNCTION {article}
:
FUNCTION {article}
FUNCTION {book}
FUNCTION {booklet}
FUNCTION {inbook}
FUNCTION {incollection}
FUNCTION {inproceedings}
FUNCTION {conference} { inproceedings }
FUNCTION {manual}
FUNCTION {mastersthesis}
FUNCTION {misc}
FUNCTION {phdthesis}
FUNCTION {proceedings}
FUNCTION {techreport}
FUNCTION {unpublished}
FUNCTION {default.type} { misc }
另一方面,该文件apacite6.bst
产生大约 220 [!] grep 搜索结果,并且与我们的目的相关的结果再次以该行开头FUNCTION {article}
:
FUNCTION {periodical}
FUNCTION {article}
FUNCTION {magazine}
FUNCTION {newspaper}
FUNCTION {book}
FUNCTION {incollection}
FUNCTION {techreport}
FUNCTION {intechreport}
FUNCTION {lecture}
FUNCTION {thesis}
FUNCTION {phdthesis}
FUNCTION {mastersthesis}
FUNCTION {unpublished}
FUNCTION {misc}
FUNCTION {literal}
FUNCTION {manual}
FUNCTION {booklet}
FUNCTION {inbook}
FUNCTION {inproceedings}
FUNCTION {conference}
FUNCTION {proceedings}
FUNCTION {default.type} { misc }
顺便说一句,我遇到过的所有 bst 文件都包含该函数default.type
以及构成条目类型default.type
管道的内容@misc
。
答案2
正如@Mico 指出的那样,.bst(BibTeX 样式文档)中没有可用于自动识别@ 定义的文档类型明确的约束或结构。
因此,如果您像我一样,没有有用的文档,那么您所能做的就是查看 .bst 文件内部,并希望它们遵循以下两个约定之一:
- 从 @DavidCarlisle 评论中,您可以找到所有包含 a 的函数
output.bibitem
,并假设这些函数名称可以与 a 一起用于@
定义文档类型。这对我来说非常有效。 - 来自@Mico回答,您可以找到
FUNCTION {article}
并假设下一个函数用于定义文档类型。这并没有完全奏效,因为经过一些函数后,它们又变回了常规辅助函数。然后我不得不根据函数名称进行猜测,或者手动测试它们以检查它们是否可用于定义文档类型。