使用Emacs编辑LaTeX - 搜索未使用的\ ref

时间:2010-06-04 03:56:07

标签: emacs latex

在编写.tex文档时,我经常会使用标记公式。在完成文档时,我有时会发现我没有引用所有方程式。所以,我需要查找我没有参考的方程,并禁用这些方程的编号。我怎么能在Emacs中做到这一点?

基本上,我需要搜索所有\ label {*}。然后,对于我找到的每个*,请告诉我是否有少于1个对应的\ ref {*}。

感谢。 (我想现在是时候学习LISP了。)

2 个答案:

答案 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符合您的需求。