在编写.tex文档时,我经常使用标记公式.在完成文档时,我有时会发现我没有引用所有方程式.所以,我需要查找我没有参考的方程,并禁用这些方程的编号.我怎么能在Emacs中做到这一点?
基本上,我需要搜索所有\ label {*}.然后,对于我找到的每个*,让我知道是否有少于1个对应的\ ref {*}.
谢谢.(我想我真的是时候学习LISP了).
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)
| 归档时间: |
|
| 查看次数: |
444 次 |
| 最近记录: |