在编写.tex文档时,我经常会使用标记公式。在完成文档时,我有时会发现我没有引用所有方程式。所以,我需要查找我没有参考的方程,并禁用这些方程的编号。我怎么能在Emacs中做到这一点?
基本上,我需要搜索所有\ label {*}。然后,对于我找到的每个*,请告诉我是否有少于1个对应的\ ref {*}。
感谢。 (我想现在是时候学习LISP了。)
答案 0 :(得分:5)
Hacky Perl,适合一次性使用。既没有测试也没有证明是正确的。
捕获正则表达式可以抓住整个匹配和()匹配,我不记得了。如果确实如此,请抓住工作的几率。
use strict;
use warnings;
#standard slurp
my ($fh, $file);
open $fh, "<", "mydatafile" or die("$!:mydatafile");
{
local $/ = undef;
$file = <$fh>;
close $fh;
}
#grab all captures.
my @labels = ($file =~ /\\label{(.*?)}/msg);
#hashes are easier for existence checks
my %labels = map {$_ => 1 } @labels;
my @refs = ($file =~ /\\ref{(.*?)}/msg);
my %refs = map {$_ => 1 } @refs;
foreach (keys %labels)
{
print "Error, $_ not referenced\n" unless $ref{$_};
}
答案 1 :(得分:3)
或者,您可能会发现refcheck package符合您的需求。