2010-06-04 2 views
3

.tex 문서를 작성할 때 종종 방정식이라는 레이블이 붙어 있습니다. 문서를 완성 할 때, 나는 모든 방정식을 참조하지 않은 경우가 종종 있습니다. 그래서, 제가 언급하지 않은 방정식을 찾아 내고 방정식의 번호 매기기를 비활성화해야합니다. Emacs에서 어떻게하면됩니까?Emacs로 LaTeX 편집 - 사용되지 않는 ref 검색

기본적으로 모든 \ label {*}을 (를) 검색해야합니다. 그런 다음, * 찾은 각각에 대해 대응하는 \ ref {*}가 1 개 미만인지 알려주십시오.

감사합니다. (나는 그것이 LISP를 배울 때가왔다.)

+0

저는 개인적으로 Perl 스크립트를 제안합니다. –

+0

아마도 awk 스크립트입니까? –

답변

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

우수. 정말 고맙습니다. 이것은 위와 그 이상의 대답입니다. – stevejb

+0

하지만 이것으로 무엇을하나요? .emacs 파일을 넣으시겠습니까? 죄송합니다, 저는 초보자입니다 ... – Vivi

+0

@Vivi : 텍스트 파일에 넣으십시오 - 예를 들어 refcheck.pl - 그리고 나서 "mydatafile"파일을 수정하여 파일을 조작하십시오. –

관련 문제