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

发布于 2024-09-03 19:03:13 字数 203 浏览 4 评论 0原文

在编写 .tex 文档时,我经常标记方程。当完成文档时,我有时发现我没有引用所有的方程。因此,我需要查找我未引用的方程,并禁用这些方程的编号。我怎样才能在 Emacs 中做到这一点?

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

谢谢。 (我想现在确实是我学习LISP的时候了)。

When writing a .tex document, I often have labeled equations. When finishing the document, I sometimes find that I haven't referenced all of the equations. So, I need to look for the equations which I haven't referenced, and disable numbering for those equations. How can I do this in Emacs?

Basically, I need to search for all \label{*}. Then, for each * I find, let me know if there is less than 1 corresponding \ref{*}.

Thanks. (I guess it really is time for me to learn LISP).

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

带上头具痛哭 2024-09-10 19:03:13

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{$_}; 
}

Hacky Perl, suitable for a one-off. Neither tested nor proved correct.

The capture regex may grab both the entire match and the () match, I don't recall offhand. If it does, grab the odds for the job.

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{$_}; 
}
旧城空念 2024-09-10 19:03:13

或者,您可能会发现 refcheck 包适合您需要。

Or, you might find that the refcheck package suits your needs.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文