SuivantPrec.Bas prec.BasNiv. sup.

6.4 Appel d'un éditeur 

Quand Metafont rencontre une erreur dans un fichier d'entrée, vous pouvez appeler un éditeur en frappant E (cf. The METAFONTbook, page 43).

6.4.1 Configurer l'éditeur 

Si vous terminez Metafont en tapant E, Metafont écrira dans un fichier le numéro de la ligne, le nom du fichier d'entrée fautif, et le nom du fichier LOG. Le fichier écrit par Metafont sera utilisé pour appeler l'éditeur.

La variable d'environnement EMTEXED contrôle la sortie vers ce fichier. Dans EMTEXED, la valeur `%1' sera remplacée 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 pour cent 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: le numéro de la ligne, le fichier en entrée, et le fichier LOG.

Si par exemple vous utilisez le Norton Editor, 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 pour cent 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, Metafont trouve une erreur à la ligne 172 de test.mf (dans le répertoire d:\mymf), Metafont écrira
emtexed 172 d:\mymf\test.mf d:\mymf\test.log
dans le fichier (ici EMTEXED n'est pas définie).

Pour GNU Emacs sous OS/2, utilisez ceci:

set emtexed=emacsclient +%1 %2
et exécutez la commande de lancement du serveur (server-start) lorsque vous lancez GNU Emacs. Avec ce paramétrage, le fichier
emacsclient +172 d :\mymf\test.mf d :\mymf\test.log
sera écrit, pour l'exemple ci-dessus.

6.4.2 Configurer les fichiers batch 

L'option /a* est utilisée pour donner le nom du fichier dans lequel Metafont écrit le numéro de ligne, le nom du fichier fautif en entrée, et le nom du fichier LOG.

Pour appeler automatiquement un éditeur, vous devez appeler Metafont depuis un fichier batch, par exemple mfed.bat (ou mfed.cmd):

@echo off
rem mfed.bat
if exist mfed2.bat del mfed2.bat
mf /a=mfed2.bat %1 %2 %3 %4 %5 %6 %7 %8 %9
if exist mfed2.bat mfed2
Attention: en exécutant Metafont sur un réseau, un fichier batch unique devra être utilisé par chaque utilisateur pour éviter les conflits. Vous pouvez utiliser des 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 appellera l'éditeur.

6.4.3 Exemple 

Voici un exemple pour le Programmer's WorkBench (ou l'Éditeur Microsoft) sous OS/2. Il est recommandé de laisser l'éditeur chargé pendant l'exécution de Metafont. Vous devriez appeler Metafont par le fichier batch suivant (cmmfed.cmd):

 @echo off
 rem cmmfed.cmd
 set emtexed=%%2 %%1
 mfp -a=c:\init\emtexed.m ^&cm %1 %2 %3 %4 %5 %6 %7 %8 %9
Pour le Programmer's WorkBench, définissez les macros suivantes:
 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
Pour l'Éditeur Microsoft, utilisez:
 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 cette macro texed à une touche:
texed:Ctrl+E
Vous pouvez maintenant 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 la frappe de Ctrl+E). SuivantPrec.Bas prec.HautNiv. sup.