Редактирование LaTeX с Emacs - поиск неиспользованного \ ref - PullRequest
3 голосов
/ 04 июня 2010

При написании документа .tex я часто помечал уравнения. Заканчивая документ, я иногда обнаруживаю, что не ссылаюсь на все уравнения. Итак, мне нужно найти уравнения, на которые я не ссылался, и отключить нумерацию для этих уравнений. Как я могу сделать это в Emacs?

По сути, мне нужно найти все \ label {*}. Затем, для каждого * я нахожу, дайте мне знать, если есть меньше чем 1 соответствующий \ ref {*}.

Спасибо. (Полагаю, мне пора изучать LISP).

Ответы [ 2 ]

5 голосов
/ 04 июня 2010

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{$_}; 
}
3 голосов
/ 04 июня 2010

Или вы можете обнаружить, что пакет refcheck соответствует вашим потребностям.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...