列出所有 bibtex 键(不是 LaTeX)

列出所有 bibtex 键(不是 LaTeX)

我有一个包含 1,579 个条目的 bib 文件。另一个(非 LaTeX)系统正在读取该文件,我最近发现该系统对键有意见:例如,所有 - 和 _ 元素都被删除了。我想生成文件中所有 bib 键的列表,并且如果可能的话,我想避免编写自制的 RegEx。BibTeX 是否支持仅获取文件中所有键的列表,以便我可以定位有问题的键?

答案1

bibtool程序bibtools(这与其他答案中的 bundle不同)可以做你想做的事。要列出所有包含 key 的条目,-你可以运行

bibtool -i <bibname.bib> -- 'select.by.string{$key "-"}'

如果你只想打印键而不打印其他字段,你可以将上一个命令的输出通过管道传输到

bibtool -- 'keep.field{$key}'


但如果你使用外部工具您愿意更改引用键,以便外部工具不会抱怨(并且您不需要使用这些引用键来保持与现有 TeX 文档的兼容性),您可以要求bibtool规范化引用键,而不是自己编辑它们。有关详细信息,请参阅程序手册中的 A.10 节。

答案2

正如评论中提到的,集合citekeys中的 shell 脚本bibtools正是这样做的。如果未安装,您可以从以下位置下载脚本的两个文件(citekeyscitekeys.bsthttps://ctan.org/tex-archive/biblio/bibtex/utils/bibtools

不幸的是,该脚本是为 csh/tcsh 编写的,具有一些特定的语法,因此它不适用于 bash/dash(我尝试过),可能也不适用于 zsh、ksh 等(我没有尝试过)。

下面是一个简化版本,我删除了使用 csh 语法的部分,即对多个 bib 文件的支持和用于删除多余文件的清理例程。您仍然需要citekeys.bst这个,可以从上面的网址下载。

#!/bin/sh -f
#
# citekeys - print out all the cite keys in given bib files
#
# simplified version, adapted from http://mirrors.ctan.org/biblio/bibtex/utils/bibtools/citekeys
#
# usage: 
#    citekeys file.bib
#

cat > citekeys.aux <<EOF
\relax 
\citation{*}
\bibstyle{citekeys}
\bibdata{$1}
EOF
bibtex citekeys
rm citekeys.blg

另存为,例如citekeyssimple,制作可执行文件(chmod +x citekeyssimple)并用调用./citekeyssimple yourbibfile.bib。之后,该 bib 文件中的所有引用键都会列在文件中citekeys.bbl

使用随 LaTeX 发行版预安装的示例biblatex-examples.bib,因此已位于路径中:

./citekeyssimple biblatex-examples.bib

结果(显示前 10 行,完整输出为 92 行):

aksin
almendro
angenendt
aristotle:anima
aristotle:physics
aristotle:poetics
aristotle:rhetoric
augustine
averroes/bland
averroes/hannes

相关内容