我已经编制了一份庞大且相关的文献清单.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