从 .bst 文件中识别可接受的 @ 类型

从 .bst 文件中识别可接受的 @ 类型

我必须使用日记帐模板使用 .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}并假设下一个函数用于定义文档类型。这并没有完全奏效,因为经过一些函数后,它们又变回了常规辅助函数。然后我不得不根据函数名称进行猜测,或者手动测试它们以检查它们是否可用于定义文档类型。

相关内容