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

ste*_*ejb 3 emacs latex

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

基本上,我需要搜索所有\ label {*}.然后,对于我找到的每个*,让我知道是否有少于1个对应的\ ref {*}.

谢谢.(我想我真的是时候学习LISP了).

Pau*_*han 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{$_}; 
}
Run Code Online (Sandbox Code Playgroud)