2010-07-12 2 views
3

정의되지 않은 참조 때문에 Xe (La) TeX 재실행시기를 결정하려고합니다. SCons mailing list에 관련 질문을 게시했으며 문제는 다음과 같습니다.XeTeX - 재실행이 필요할 때 감지합니다.

SCons 및 다른 빌드 시스템에서 XeLaTeX를 여러 번 실행해야하는 페이지 수 및 기타 참조가 때때로 감지되지 않습니다. 당신이 xelatex job 실행하면

\documentclass[ones​ide,12pt]{memoir} 
\usepackage{xltxtra} 
\usepackage[T1]{fontenc} 
\makepagestyle{plain} 
\makeoddfoot{plain}{}{}{Page \thepage\ of \arabic{lastpage}} 
\makeevenfoot{plain}{}{}{Page \thepage\ of \arabic{lastpage}} 
\begin{document} 
\pagestyle{plain} 
Page 1 
\newpage 
Page 2 
\newpage 
Page 3 
\newpage 
\end{document} 

, 생산 년대 .PDF 페이지 번호가 "페이지 1 0", "0 페이지 2"및 "페이지 : 여기에 (우리가 job.tex 전화 할게) 예제 파일입니다 3 of 0 "으로 표시됩니다. xelatex job를 두 번째로 실행하면 '페이지 1/3'등 (즉 올바른 페이지 수)이 표시됩니다.

수정하려면 SCons 메일 링리스트에서 xelatex를 실행하여 정의되지 않은 참조를 해결할 것인지 확인하는 것이 다음 정규 표현식을 변경하는 것입니다 (SCons.Tools.tex 버전 2.0.1.beta의 71 행). 20100627.r5064) :

- warning_rerun_str = '(^LaTeX Warning:.*Rerun)|(^Package \w+ Warning:.*Rerun)' 
+ warning_rerun_str = '(^LaTeX Warning:.*Rerun)|(^Package \w+ Warning:.*Rerun)'\ 
+      '|(^No file \w+\.\w{3}\.$)' 

실제로는 No file job.aux입니다. Xe (La) TeX는 항상 첫 번째 실행시 "No file job.aux"를 인쇄하므로 Xe (La) TeX는 항상 두 번 실행되기 때문에 모든 경우에이 방법이 적용됩니다. 결과적으로 job.auxjob.texjob.pdf 사이의 중간 빌드 대상이되는 것과 같습니다.

내부에 문제가있다 : 어떤 정의 기준이없는 경우에도 일단 .aux 생산 번 .pdf 생산 회 호출의 Xe (라) 텍 (예컨대 \arabic{lastpage}job.tex에서 상기 제거). 분명히 정의되지 않은 참조가 없으면이 두 번째 호출은 불필요합니다.

내 질문에 : 재 컴파일이 필요한 정의되지 않은 참조 (예 : \ arabic {lastpage})가 있거나 없을 때 job.log에 대한 정규 표현식 테스트를 통해 어떻게 알 수 있습니까?

읽어 주셔서 감사합니다.

안부,

브라이언

답변

2

당신은 백업에 .aux 파일을 복사 및 백업이 Xetex의 실행의 끝에서 새로 생성 된 .aux 파일과 동일 여부를 비교 할 수 없습니다 ?

1

"lastpage"카운터가 정의되지 않은 경우 경고가 표시되는 방식으로 마지막 페이지를 참조하는 것이 좋습니다. 그런 다음 원래 재실행 정규 표현식에 의해 선택됩니다.

내가 사용하는 또 다른 방법은 보조 파일이 더 이상 변경되지 않을 때까지 LaTeX을 계속 실행하는 것입니다 (개념적으로 보조 파일은 LaTeX 실행의 입력과 출력 모두이며 LaTeX은 AUX 파일의 고정 점에 도달). 이것은 LaTeX을 재실행해도 결과 문서가 더 이상 변경되지 않는다는 보장을 제공해야합니다.

이 동작을 scons에 통합 할 수 있는지 여부는 잘 모르겠습니다. Makefile에서 일부 쉘 논리를 사용하면 상당히 쉽습니다.

0

Rubber 정확히 일치합니다. 방탄은 아니지만 대부분의 경우 작동하며 출력이 깨끗하므로 오류를 쉽게 찾아 낼 수 있습니다.

$ rubber --pdf [my-file] 

를 (4 년 후에이 여전히 유용 :-)

경우 즉, 예를 들어, 나는 그것을 좋아 실행됩니다