J'essaie de déterminer quand une nouvelle exécution de Xe (La) TeX est nécessaire en raison de références non définies. J'ai posté une question connexe sur le SCons mailing list, et le problème est comme suit:XeTeX - Détecter lorsque la réexécution est nécessaire
Les comptes de pages et d'autres références qui exigent plusieurs exécutions de XeLaTeX ne sont pas actuellement détectés par SCons et d'autres systèmes de construction. Voici un exemple de fichier (que nous appellerons job.tex
):
\documentclass[oneside,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}
Si vous exécutez xelatex job
, le .pdf qui est produit a des numéros de page "Page 1 sur 0", "Page 2 de 0", et « la page 3 sur 0 "pour les trois pages. Si vous exécutez xelatex job
une deuxième fois, vous obtenez "Page 1 sur 3", etc. (c'est-à-dire le nombre de pages correct). Pour corriger cela, j'ai suggéré sur la liste de diffusion SCons que la vérification de l'exécution de xelatex pour résoudre les références non définies consiste à changer l'expression régulière suivante (en SCons.Tools.tex
à la ligne 71 de la version 2.0.1.beta. 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}\.$)'
En pratique, il s'agit d'une vérification de "No file job.aux". Il s'avère que cela fonctionne dans tous les cas car Xe (La) TeX imprimera toujours "No file job.aux" lors de la première exécution, et donc Xe (La) TeX s'exécutera toujours deux fois. En fait, c'est la même chose que d'avoir job.aux
devenir une cible de construction intermédiaire entre job.tex
et job.pdf
.
est là le problème: Même s'il n'y a pas de référence non définie (par exemple supprimer le \arabic{lastpage}
de job.tex
ci-dessus) Xe (La) TeX est appelé deux fois, une fois pour produire le .aux
, une fois pour produire le .pdf
. Évidemment, s'il n'y a pas de références indéfinies, ce second appel est superflu. Donc ma question: comment peut-on détecter - vraisemblablement au moyen d'un test d'expression régulière par rapport au job.log
- lorsqu'il existe ou non des références indéfinies (par exemple \ arabic {lastpage}) qui nécessitent une recompilation.
Merci d'avoir lu.
Meilleures salutations,
Brian