SuivantPrec.Bas prec.BasNiv. sup.

1.4 Appeler un éditeur 

Lorsque TeX renconte une erreur dans un fichier d'entrée, vous pouvez appeler un éditeur en tapant E (cf. The TeXbook, page 34).

1.4.1 Configurer l'éditeur 

Si vous arrêtez la compilation après une erreur en tapant E, emTeX va écrire dans un fichier le numéro de la ligne, le nom du fichier d'entrée défaillant, et le nom du fichier LOG. Ce fichier sera utilisé lors de l'appel de l'éditeur.

La variable d'environnement EMTEXED contrôle la sortie vers ce fichier. Dans la valeur de EMTEXED, %1 sera remplacé par le numéro de la ligne, %2 par le nom du chemin du fichier d'entrée, et %3 par le nom du chemin du fichier LOG. Vous pouvez insérer un signe pourcent avec %%. Si la variable d'environnement EMTEXED n'est pas définie,

emtexed %1 %2 %3

sera utilisé comme modèle, c-à-d., le programme ou le fichier batch Emtexed sera appelé avec trois arguments: numéro de ligne, fichier d'entrée, fichier LOG.

Si vous utilisez l'éditeur Norton (par exemple), vous devrez entrer

set emtexed=ne +%1 %2

Pour QEdit v2.1 vous pouvez utiliser

set emtexed=q %2 -n%1

Notez que vous devez doubler tous les signes pourcent si vous définissez EMTEXED dans un fichier batch (tel que autoexec.bat mais pas config.sys):

set emtexed=q %%2 -n%%1

Si vous ne voulez pas définir EMTEXED, vous pouvez créer un fichier batch emtexed.bat ou emtexed.cmd qui appellera l'éditeur:

q %2 -n%1

Si, par exemple, TeX trouve une erreur à la ligne 172 de test.tex (du répertoire d:\mytex), emTeX va écrire

emtexed 172 d:\mytex\test.tex d:\mytex\test.log
dans le fichier (si EMTEXED n'est pas définie).

Pour GNU Emacs sous OS/2, utilisez ceci:

set emtexed=emacsclient +%1 %2

et exécutez la commande << server-start>> en démarrant GNU Emacs. Avec ce paramétrage, le fichier

emacsclient +172 d:\mytex\test.tex d:\mytex\test.log

sera écrit pour l'exemple ci-dessus.

1.4.2 Configurer les fichiers batch 

L'option /a* est utilisée pour donner le nom d'un fichier dans lequel emTeX écrira le numéro de la ligne, le nom du fichier d'entrée fautif, et le nom du fichier LOG.

Pour appeler automatiquement un éditeur, vous devez appeler emTeX depuis un fichier batch, par exemple depuis le fichier texed.bat (ou texed.cmd), de contenu :

@echo off
rem texed.bat
if exist texed2.bat del texed2.bat
tex /a=texed2.bat %1 %2 %3 %4 %5 %6 %7 %8 %9
if exist texed2.bat texed2
Attention: lorsque emTeX s'exécute sur un réseau, un fichier batch unique devra être attribué à chaque utilisateur afin d'éviter des conflits. Vous pouvez utiliser les variables d'environnement pour ce faire. Si vous ne définissez pas la variable d'environnement EMTEXED, vous devrez créer un autre fichier batch (emtexed.bat ou emtexed.cmd) qui appelera l'éditeur.

Makefmt crée optionnellement un fichier batch qui appelle un éditeur, comme expliqué ci-dessus.

1.4.3 Exemple 

Et voici un exemple pour le Programmer's WorkBench (ou l'éditeur Microsoft) exécuté sous OS/2. Il est recommandé de laisser l'éditeur chargé pendant l'exécution de TeX. Vous pourriez appeler emTeX avec le fichier batch suivant (latexed.cmd):

 @echo off
 rem latexed.cmd
 set emtexed=%%2 %%1
 texp -a=c:\init\emtexed.m ^&latex %1 %2 %3 %4 %5 %6 %7 %8 %9
Définissez les macros suivantes pour le Programmer's WorkBench:
 texed:=Arg "c:\\init\\emtexed.m" Setfile Begfile Arg
                                  Setfile -> _texed2
 _texed2:=Setfile Arg Arg " [0-9]" Psearch -> _texed3
 _texed3:=Right Arg Endline Lasttext Mark Arg Refresh
                            Lasttext Mark
ou, pour l'éditeur Microsoft :
 texed:=Arg "c:\\init\\emtexed.m" Setfile Arg Mpage Arg
                                  Setfile -> _texed2
 _texed2:=Setfile Arg Arg "  [0-9]" Psearch -> _texed3
 _texed3:=Right Arg Endline " " Emacscdel Mark Arg Refresh
                                Lasttext Mark
et assignez la macro texed à une touche:
 texed:Ctrl+E
Maintenant vous pouvez aller à la ligne désirée en tapant Ctrl+E (le répertoire c:\init et le fichier c:\init\emtexed.m doivent exister avant de taper Ctrl+E).

SuivantPrec.Bas prec.HautNiv. sup.