如何确定 .bib 文件的所有条目是否都已被使用

如何确定 .bib 文件的所有条目是否都已被使用

我已经编制了一份庞大且相关的文献清单.bib。现在我想确保全部参考文献已引用在我的最终 PDF 中。

我该如何实现这一点?我应该循环遍历.bib文件中的所有“@”条目并grep -ir在所有.tex文件中执行此操作吗?或者有更简单的方法吗?

答案1

也许不是最强大和最快的变体,但如果每个条目都由

@book{ENTRY,

或者

@article{ENTRY,

这将报告所有文献是否至少被引用一次(嗯...实际上如果在 tex 文件中找到所有 bibtex 条目,在我的情况下这是一个安全的假设):

#!/bin/bash

numMatches=0
bibFile=foo.bib # bibliography
allEntries=$(grep '@' $bibFile | wc -l)
texFiles=Chapters/*.tex # file glob for all .tex files

for entry in $(grep '@' $bibFile); do 
   item=$(sed 's/.*{//; s/,$//' <<< ${entry##@});
   [[ ! -z $(grep -ir "$item" $texFiles) ]] && numMatches=$((numMatches+1))
done

if (( $numMatches != $allEntries )); then
   echo "Not all literature cited."
else
   echo "All literature cited."
fi

相关内容