


Une introduction aux modèles $s et $r pour insérer les valeurs de la
résolution de fonte et l'agrandissement PXL dans les noms de fichiers de fontes; cette
facilité a été maintenant étendue et les pilotes utilisent des modèles pour construire les
noms de fichiers depuis les paramètres qui leur sont donnés, tel que le nom
et la résolution d'une fonte. Notez que les $s et $r précédents ne sont plus
valides et doivent être remplacés par @RVr et @Rr respectivement. Le modèle
peut être une constante, c-à-d. que le nom de fichier ne dépend d'aucun des
paramètres, ou il peut s'évaluer à plus d'un seul nom de fichier qui seront alors
utilisés en séquence. L'évaluation d'un modèle se nomme son expansion (ou son
développement).
Un modèle qui n'est pas une constante contient un ou plusieurs caractères modèles qui
sont la virgule (,), le dollar ($), l'arobas (@) et les accolades gauche et droite ({}).
Un modèle qui contient le signe dollar ou une virgule peut se développer en plus d'un
nom de fichier. Si ces caractères modèles doivent apparaître comme caractères littéraux
alors ils doivent être précédés d'une arobas (@) -- un signe dollar littéral doit être écrit
@$.
Des expansions multiples sont nécessaires quand une fonte, ou un autre fichier, peuvent être dans un ou plusieurs répertoires différents; chaque expansion est évaluée et le résultat utilisé pour chercher le fichier requis. Si la recherche échoue, la partie suivante du modèle est développée et le processus continue jusqu'à ce que le fichier soit trouvé ou qu'il n'y ait plus d'expansion.
3.14.1 L'exemple le plus simple d'un modèle -- un modèle constant
Le modèle
dviscr.dlg
qui est destiné à l'option +transcript-file, contient uniquement le nom
du fichier: l'expansion ne dépend d'aucun paramètre et est juste ce nom de
fichier.
3.14.2 Un exemple simple de modèle
Dans le modèle
@d.dlg
@d sera remplacé par le nom du pilote; si c'est Dvihplj alors ce modèle sera développé en
dvihplj.dlg. Chaque pilote a ce modèle comme paramètre par défaut pour l'option
+transcript-file car le nom du pilote est connu au moment du développement du
modèle.
3.14.3 Paramètres de modèles
Voici les paramètres de modèle, chacun de ces paramètres sera remplacé par la valeur donnée dans la table ci-dessous.
@d
remplacé
par
l'un
des
noms
de
pilote
suivants:
Dvihplj,
Dviscr,
Dvivik,
Dvipm,
Dvidot.
@f
remplacé
par
le
nom
d'une
fonte
ou
celui
d'un
fichier
graphique;
ce
paramètre
doit
être
utilisé
en
conjonction
avec
les
options
+font-files
et
+graphics-files.
@i
remplacé
par
le
nom
d'un
fichier
DVI.
@p
magstep:
0
à
9,
h
pour
magstephalf
ou
u
pour
inconnu
--
à
utiliser
avec
l'option
+font-files.
@m
mode
METAFONT
--
voir
la
description
de
l'option
+metafont-mode.
@b
résolution
de
base
des
fontes
en
DPI
--
voir
la
description
de
l'option
+font-resolution.
@r
résolution
de
fonte
en
DPI,
une
fraction
décimale
--
à
utiliser
avec
l'option
+font-files.
@g
agrandissement,
une
fraction
décimale
--
à
utiliser
avec
l'option
+font-files,
par
exemple,
1.2.
@u
un
nombre
pour
que
le
nom
de
fichier
soit
unique
--
à
utiliser
avec
l'option
+mfjob-file
seulement.@ et la
lettre paramètre. Par exemple, le $s précédent, qui a été remplacé par l'agrandissement
PXL d'une fonte, doit être écrit maintenant @RVr. Les modificateurs des divers
paramètres sont décrits ci-dessous.
3.14.4 Formation d'expansions multiples avec une liste
Beaucoup des options de pilote requièrent une liste de fichiers, par exemple, l'option
+font-libraries prend une liste de noms de fichiers de librairies de fontes. La façon
la plus simple de le faire est d'entrer une liste de noms séparés par des virgules mais ce
n'est pas toujours très pratique car cela exige beaucoup de frappe et la longueur d'un
modèle est limité à 127 caractères.
À cause de cette limitation, cet exemple ne contient pas l'ensemble habituel des librairies de fontes:
|
3.14.5 Formation d'expansions multiples avec des alternatives
Il est clair d'après l'exemple précédent que les expansions ont beaucoup de texte en commun. Les modèles permettent par conséquent de factoriser le texte commun avec les parties différentes présentés comme une série d'alternatives comprises entre accolades. L'exemple ci-dessus peut alors s'écrire comme ceci:
|
Des alternatives en nombre quelconque peuvent apparaître entre les accolades
ouvrante et fermante. Le texte d'une alternative peut aussi être nul comme dans {} ou
{,a}: dans le premier cas l'expansion est vide, dans le second le premier choix est
vide, le second est fait simplement d'un a. Il est aussi possible de n'avoir qu'un seul
choix comme dans {abc} qui s'évalue toujours comme abc -- les accolades ne sont
alors pas nécessaires. Naturellement les choix n'ont pas à avoir la même longueur
comme, par exemple, dans:
|
{abc} ci-dessus.
3.14.6 Ensembles multiples d'alternatives
Lorsque des fichiers de fontes sont recherchés il est utile de pouvoir construire une configuration contenant plus d'un ensemble d'alternatives. Avec les modèles vous pouvez non seulement le faire mais vous pouvez aussi imbriquer les alternatives. L'expansion d'un tel modèle consiste en toutes les combinations possibles en ordre lexicographique, c-à-d. avec l'alternative la plus à droite dans le modèle changeant le plus rapidement.
Un exemple clarifiera ceci bien mieux: le modèle
{1,2}{1,a{1,2}}
donnera la séquence suivante d'expansions
11
1a1
1a2
21
2a1
2a2
Le modèle
|
Un exemple de l'utilisation de cette possibilité:
|
c:\texfonts ni dans d:\myfonts. Ce qui pourrait aussi s'écrire
|
3.14.7 Variables d'environnement
Les noms de répertoires sont gardés plus commodément dans des variables
d'environnement de sorte que, lorsque le disque est réorganisé il ne soit pas nécessaire
d'éditer tous les fichiers de configuration. Les avantages de cette utilisation des
variables d'environnement apparaissent encore mieux lorsqu'elles sont placées dans des
modèles. Le nom de la variable est mise en sandwich entre un signe dollar ($) et un
deux-points (:) comme dans $DVIDRVFONTS : par exemple. Le nom d'une variable
d'environnement à utiliser dans un modèle ne doit contenir aucun des caractères
spéciaux de modèles, c-à-d., @ { , ou } (arobas, virgule et accolades) -- ceci
pourra être modifié dans une version future car @d serait très utile dans ce
but, $@d : se développerait en une variable d'environnement spéciale du pilote
(DVIFX, DVILQL etc). La variable d'environnement est traitée comme si elle
était une alternative comprise entre accolades, la liste de répertoires que la
variable contient (séparés ici par des points-virgules, pas des virgules) sont
entrés dans le développement un à la fois dans l'ordre où ils apparaissent dans la
variable. Si un nom de répertoire dans la variable d'environnement ne se
termine pas par :, / ou \ alors un \ est automatiquement ajouté. Les positions
de répertoire vides de la liste, par exemple entre les deux points-virgules
dans
|
$PATH : défini comme ci-dessus sera développé
exactement comme si la commande SET était
|
@b et @r sont des candidats probables) mais les alternatives sont
interdites.
Notez je vous prie que $EMTEX : est un cas spécial, qui sera décrit ci-dessous.
Exemple d'utilisation d'une variable d'environnement dans un modèle:
|
@f sera cherché dans tous les répertoires de la variable PATH -- notez
que \ sera ajouté chaque fois que nécessaire. Si le fichier doit être recherché d'abord dans
le répertoire courant, le modèle devra être étendu en
|
PATH a pour valeur c:\dos;;\;f: et que le
nom du fichier réponse (@f) est test.res alors le modèle sera développé en la séquence
suivante de noms de chemin:
test.res
c:\dos\test.res
\test.res
f:test.res
c-à-d., {,$PATH :}@f est évalué de la même façon que {,c:\dos,,\,f:}@f, la construction
$PATH : étant remplacée par la valeur de PATH.
Ajouter ! ou !! à la fin d'un nom de répertoire dans la variable d'environnement
permet une recherche dans un sous-répertoire. Si ! est ajouté, ce répertoire et un seul
niveau de sous-répertoire sont visités; si !! est ajouté, ce répertoire et tous les niveaux de
sous-répertoires sont visités. Les répertoires sont visités avant leurs sous-répertoires; aucun
autre ordre de recherche n'est défini.
3.14.8 Le répertoire de emTeX ($EMTEX :)
EMTEX est une pseudo variable d'environnement, se développant comme le nom du
chemin du répertoire emTeX. Comme avec les variables d'environnement réelles, un
backslash est ajouté au besoin. Si la variable d'environnement EMTEXDIR est définie,
$EMTEX : est traité comme $EMTEXDIR :. Autrement, la valeur par défaut \emtex est
utilisée. C'est à dire que $EMTEX : peut être utilisée même si EMTEXDIR n'est pas définie. Par
conséquent, il est recommandé d'utiliser $EMTEX : au lieu de $EMTEXDIR : dans les
modèles.
3.14.9 Modificateurs de paramètres de modèles
Les paramètres de modèle peuvent avoir leur développement modifié en insérant un ou plusieurs caractères de l'ensemble ci-dessous entre le @ et la lettre du paramètre. Les modificateurs sont:
0-99
_
Remplissage
d'un
paramètre
sur
une
largeur
donnée
avec
des
0
ou
des
_.
Un
nombre
de
0
à
99
remplira
le
paramètre
depuis
la
gauche
avec
des
0
ou
des
_
--
cette
valeur
sera
le
nombre
de
positions
à
remplir.
Un
nombre
apparaissant
avec
un
paramètre
numérique
fera
un
remplissage
de
zéros
mais
avec
un
paramètre
non
numérique
remplira
de
soulignés.
Utilisez
le
modificateur
souligné
pour
remplir
un
paramètre
numérique
de
soulignés
au
lieu
de
zéros.
Exemples:
|
@.
a un sens spécial. Spécifiez plutôt une largeur de champ, par exemple
@0.2r.
Exemples:
|
|
Sans modificateur, @f et @i seront remplacés par le nom complet (avec son
chemin) du fichier; utiliser un modificateur vous permet de remplacer ou
d'omettre certaines parties du nom. Les modificateurs ci-dessous remplaceront
le nom de chemin complet par:
Plus d'un de ces modificateurs peut être utilisé avec un unique paramètre, dans ce
cas ils seront appliqués dans l'ordre P, B, E - @BEf sera développé comme s'il était
écrit @Bf@Ef. Si aucun de ces modificateurs n'apparaît, le paramètre sera remplacé
par le nom de chemin inchangé (PBE se terminera par un point s'il n'y a pas
d'extension).
Si un paramètre @f ou @Pf a une partie répertoire non vide lorsqu'il est évalué et
qu'il n'est pas au début de l'expansion, c-à-d. qu'il est précédé d'au moins un
caractère, alors cette expansion est silencieusement ignorée. Ceci afin d'éviter des
expansions undésirables ou n'ayant aucun sens qui autrement pourraient venir
de modèles tel que
|
Dans cet exemple, si @f se développe en \ec\emr10 (partie de répertoire non
vide) alors l'expansion
|
sera écartée et seule l'expansion
|
sera utilisée. Si, cependant, @f se développe en emr10 (nom de fichier seulement)
alors les deux expansions
c:\fonts\emr10
emr10
seront utilisées. Exemples:
|
|
|
Le résultat n'est pas défini sur un débordement (produit supérieur à 65535.99998).
@b ou @r. @Xb ou seulement @b sélectionneront la
valeur définie par l'option +font-resolution-x alors que @Yb sélectionneera celle
définie par +font-resolution-y. Si plus d'un modificateur X ou Y
sont utilisés dans le même paramètre, tous sauf le plus à droite seront
ignorés.3.14.10 Extension par défaut
Pour ajouter une extension à un nom de fichier, sauf si le nom du fichier en comporte
déjà une, vous pouvez utiliser @.. Par exemple,
@f@.{msp,pcx,bmp}
crée les noms de fichier suivants:
|
@. fonctionne de cette façon:
-
Si
l'expansion
produite
jusque-là
ne
contient
pas
un
.
derrière
le
dernier
:,
\
ou
/
(ou
si
l'expansion
contient
un
.
mais
aucun
de
ces
autres
caractères),
le
nom
de
fichier
n'a
pas
d'extension.
Dans
ce
cas,
@.
sera
remplacé
par
un
point
et
le
développement
se
poursuivra
(avec
l'extension).
-
Si
le
nom
de
fichier
a
une
extension
(chaque
.
(s'il
y
en
a)
est
suivi
d'un
:,
\
ou
/),
le
développement
s'arrête
à
@.
(en
omettant
l'extension
par
défaut).@. ne fonctionne pas dans {. . . }.
3.14.11 Résumé
@[0-99][_][FRT][PBEN][MV][XY](dfipmbrsg)
+mfjob-file.
(entier)
: 3.14.12 Autres exemples
Ces exemples montrent quelques utilisations de @g
|


