



Modèles La déclaration fontlib=, par exemple, dit à MFjob de faire des recherches
dans toutes les librairies de fontes données par tous les développements du
modèle.
Un modèle qui n'est pas constant contiendra un ou plusieurs caractères modèles. Les
caractères modèles autorisés sont la virgule (,) les signes dollar ($) et a commercial (@),
et les accolades ouvrante et fermante ({}). Un modèle qui contient un signe dollar ou
une virgule peut se développer dans plus d'un nom de fichier. Si les caractères
modèles doivent apparaître comme des caractères littéraux, alors ils doivent
être précédés par le signe @. Par exemple, un signe dollar littéral doit être écrit
`@$'.
7.4.1 L'exemple le plus simple de modèle : un modèle constant
Soit le modèle :
\texfonts\lj |
fontlib=, ce modèle contient simplement le nom
de fichier : le développement ne dépend d'aucun paramètre, et consiste juste en ce nom
de fichier (la déclaration fontlib= ajoute automatiquement `.fli' à la fin du nom, si le
développement ne contient pas d'extension).
7.4.2 Un exemple simple de modèle
Soit le modèle :
\texfonts\@f |
output=, `@f' est remplacé par le nom de
la fonte. Si la fonte `cmr10' est calculée, le développement de ce modèle sera
\texfonts\cmr10. `.pxl', `.pk', `.gf', `.log' ou `.tfm' (selon les détails de la
déclaration output=) sera ajouté si, comme dans cet exemple, aucune extension n'est
indiquée.
7.4.3 Paramètres de modèles
La liste des paramètres de modèles est indiquée dans la table ci-dessous. Lorsqu'un de ces paramètres modèles apparaît dans un modèle, il est remplacé par la valeur donnée dans cette table.
@d | nom de pilote, cf. la déclaration driver=. |
@f | nom de fonte, cf. les déclarations font= et name= |
@p | magstep (0..9, h, u1 ),
cf. la déclaration mag= |
@m | mode Metafont, cf. la déclaration mode= |
@b | résolution de base, cf. la déclaration mode= (entier, arrondi) |
@r | résolution de la fonte (nombre décimal), calculée à partir des déclarations
mode= et mag=. |
@s | taille de la fonte (design size) en points (pt), cf. la déclaration size=. |
@g | agrandissement (nombre décimal), cf. la déclaration mag= |
Ces paramètres peuvent être modifiés en insérant un ou plusieurs caractères entre le `@' et
la lettre du paramètre. Les modificateurs et les paramètres avec lesquels ils peuvent être
utilisés, sont décrits plus loin. Les anciennes versions de MFjob utilisaient `$' au lieu de
`@' pour insérer des paramètres : `$r' doit être remplacépar `@Rr', `$s' doit être remplacé par
`@RVr'.
7.4.4 Former des développements multiples avec une liste
Certaines déclarations requièrent une liste de fichiers. Par exemple, la déclaration
fontlib= requiert une liste de librairies de fontes. La façon la plus simple de réaliser
une telle liste est d'entrer la liste des noms séparés par une virgule. Mais ce n'est pas
toujours très commode, parce que cela nécessite beaucoup de frappes, et la
longueur d'un modèle est limitée à 127 caractères. À cause de cette limitation,
l'exemple ci-dessous ne contient pas l'ensemble habituel des librairies de
fontes :
|
7.4.5 Former des développements multiples avec des alternatives
Il est clair à partir de l'exemple précédent que les développements ont toute une partie de texte en commun. Les modèles permettent d'extraire les parties communes, en écrivant simplement les parties qui diffèrent comme une suite d'alternatives placées entre accolades. L'exemple ci-dessus peut ainsi être réécrit de la manière suivante :
|
Un nombre quelconque d'alternatives peuvent apparaître entre les accolades ouvrante
et fermante. Le texte d'une alternative peut aussi être vide, comme dans `' ou ,a':
dans le premier cas, le développement est vide, dans le second il consiste simplement
en la lettre `a'. Il est aussi possible de n'avoir qu'un seul choix ,comme dans `{abc}'
qui donne toujours la valeur `{abc}'. Dans ce cas, les accolades ne sont pas
requises.
Naturellement, les différents choix possibles n'ont pas forcément la même longueur, comme par exemple dans :
|
{abc}', alors le choix est une constante.
7.4.6 Ensembles multiples d'alternatives
Parfois, il est utile de pouvoir construire un motif avec plusieurs ensembles d'alternatives. Les modèles permettent ceci. Ils autorisent aussi l'imbrication des alternatives. Le développement d'un tel modèle est constitué de toutes les combinaisons possibles dans l'ordre lexicographique, c'est-à-dire que l'alternative la plus à droite est changée en premier. Un exemple clarifiera ce point. Soit le modèle :
{1,2}{1,a{1,2}}
Il produira la liste suivante de développements :
11
|
{0,1,2,3,4,5,6,7,8,9}{0,1,2,3,4,5,6,7,8,9}{0,1,2,3,4,5,6,7,8,9}
donnera tous les nombres à trois chiffres, depuis 000 jusqu'à 999 dans l'ordre numérique
croissant.
7.4.7 Variables d'environnement
La façon la plus commode de transmettre des noms de répertoires est de passer par des
variables d'environnement. De la sorte, lorsque le disque est réorganisé, il n'est pas
nécessaire d'éditer tous les fichiers de configuration. Pour rendre encore plus commode
l'utilisation de ces variables d'environnement, elles peuvent apparaître aussi dans les
modèles. Le nom de la variable est mis en sandwich entre un signe dollar ($) et deux
points (:), comme dans $DVIDRVFONTS: par exemple. Le nom d'une variable
d'environnement à utiliser dans un modèle ne peut contenir aucun des caractères spéciaux
des modèles, à savoir @ , { } (a commercial, virgule et accolades ouvrante et
fermante - ceci sera peut-être changé dans une prochaine version). La variable
d'environnement est traitée comme si elle était une alternative placée entre
accolades, les répertoires de la liste contenue dans la variable (séparés ici par des
points-virgule, pas par 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 ajouté automatiquement. Les répertoires vides dans la liste, par exemple
dans
|
$PATH: défini comme ci-dessus serait développé
exactement de la même façon, si la commande SET était :
|
@b et @r sont des candidats potentiels) mais les alternatives ne sont pas
autorisées.
Exemple d'utilisation d'une variable d'environnement dans un modèle :
|
\' sera ajouté si nécessaire. $env: est traité comme `{,}' en ce qui concerne
l'ordre d'évaluation.
Notez aussi que $EMTEX: est un cas spécial, cf. ci-dessous.
7.4.8 Le répertoire emTeX ($EMTEX:)
EMTEX est une pseudo-variable d'environnement, qui prend pour valeur le nom du
répertoire emTeX, dans les développements. Comme avec les variables d'environnement
réelles, une barre oblique inverse est ajoutée si nécessaire. Si la variable d'environnement
EMTEXDIR est définie, $EMTEX: est traitée comme $EMTEXDIR:. Autrement, la valeur par
défaut `\emtex' est utilisée. Ceci implique que $EMTEX: peut être utilisée même si
EMTEXDIR n'est pas définie. Il est donc recommandé d'utiliser $EMTEX: au lieu de
$EMTEXDIR: dans les modèles.
7.4.9 Macros MFjob
Les noms de répertoires peuvent aussi être emmagasinés dans des macros MFjob. Pour
insérer la valeur d'une macro dans un modèle, utilisez $name> où name est le nom de la
macro. Si la valeur de la macro ne se termine pas par `:', `/' ou `\', alors un `\'
sera automatiquement ajouté. Si la macro n'est pas définie, le développement
ne marche pas. Notez que les noms de macros sont sensibles à la casse des
caractères.
Exemple d'utilisation d'une macro dans un modèle :
|
\' sera ajouté si nécessaire.
7.4.10 Modificateurs des paramètres de modèles
Le développement des paramètres de modèles peut être modifié en insérant un ou plusieurs
caractères de l'ensemble indiqué ci-dessous, entre le @ et la lettre du paramètre. Les
modificateurs autorisés sont les suivants :
0-99
_
Remplit
un
paramètre
sur
une
largeur
donnée,
avec
des
`0'
ou
des
`_'.
Un
nombre
de
0
à
99
provoquera
le
remplissage
du
paramètre
à
partir
de
la
gauche,
avec
des
`0'
ou
des
`_'.
Le
nombre
de
positions
à
remplir
est
donné
par
la
valeur
du
nombre.
Un
nombre
apparaissant
avec
un
paramètre
numérique
effectuera
le
remplissage
avec
des
zéros.
S'il
apparaît
avec
un
paramètre
non
numérique,
le
remplisssage
se
fera
avec
des
caractères
de
soulignement
_.
Lorsque
le
caractère
de
soulignement
est
utilisé
comme
modificateur
d'un
paramètre
numérique,
celui-ci
sera
rempli
avec
des
caractères
de
soulignement
au
lieu
de
zéros.
Exemples:
@r | @4r | @4_r |
| 1 | 0001 | ___1 |
| 300 | 0300 | _300 |
| 20000 | 20000 | 20000 |
@f | @5f |
| a | ____a |
| abc | __abc |
| abcdefgh | abcdefgh |
F R T arrondit et tronque des nombres réels :
F | prend la partie fractionnaire du nombre (elle peut être vide). |
R | arrondit le nombre à sa partie entière. |
T | tronque le nombre à sa partie entière. Si le nombre de décimales est spécifié (voir ci-dessous), le nombre sera tout d'abord arrondi au nombre spécifié de décimales, puis la partie entière sera calculée. |
.0-99 Décimales. Le nombre sera arrondi au nombre de décimales indiqué. Note: Le
point ne doit pas être utilisé immediatement après le @, car `@.' a une
signification spéciale. Spécifiez une largeur de champ à la place, par exemple
`@0.2r'. Si vous utilisez les modificateurs `T' et `F' sur le même type de
paramètre dans différentes suites de paramètres d'un même modèle, vous
devriez utiliser le même nombre de décimales pour les deux suites de
paramètres, pour que l'arrondi soit correct. Si un modificateur `T' ou `R' est
utilisé, le nombre de décimales est utilisé uniquement pour calculer les
arrondis, pas pour formater la valeur (en conséquence, `R' est équivalent à
`T.0').
Exemples:
@r | @0.3r | @0.2r | @0.1r | @0.0r | @7.1r | @Tr | @T.0r |
| 300.75 | 300.750 | 300.75 | 300.8 | 301 | 00300.8 | 300 | 301 |
| 300.74 | 300.740 | 300.74 | 300.7 | 301 | 00300.7 | 300 | 301 |
| 300 | 300.000 | 300.00 | 300.0 | 300 | 00300.0 | 300 | 300 |
M V Multiplication par une constante. M multiplie un paramètre numerique par 1000
et V le multiplie par 5. Ceci permet de répertoires ou de noms de fichiers qui
dépendent de l'agrandissement de la fonte comme c'est le cas pour les noms de
fontes pxl. Par exemple :
@r | pxl@RVr |
| 300 | pxl1500 |
or names which depend in the magnification:
@g | @Mg |
| 1.44 | 1440 |
Si plus d'un modificateur M ou V porte sur le même paramètre, ils seront tous
ignorés sauf selui qui est le plus à droite.
Le résultat est indéfini dans le cas d'un dépassement de capacité (produit plus grand que 65535.99998).
X Y Valeur horizontale ou verticale. La résolution peut être différente sur les axes
horizontal et vertical, ces modificateurs permettent de sélectionner la valeur
correcte avec les paramètres @b ou @r. @Xb ou simplement @b sélectionnera la
valeur horizontale, tandis que @Yb sélectionnera la valeur verticale. Si plus d'un
modificateur X ou Y apparaît avec le même paramètre, tous seront ignorés sauf celui
qui est le plus à droite.
7.4.11 Extension par défaut
MFjob n'utilise pas `@.' pour ajouter une extension à un nom de fichier. `@.' insère
toujours un point `.'.
7.4.12 Résumé
@[0-99][.0-99][_][FRT][MV][XY](dfmbrsg)
0-99 | remplir avec des 0 (nombres) ou des _ (autres paramètres) |
_ | remplir avec des _ |
.0-99 | décimales (@g and @r) |
F | partie fractionnaire |
R | partie entière(arrondie) |
T | partie entière (tronquée) |
M | multiplier par 1000 |
V | multiplier par 5 |
X | sélectionner la valeur de la résolution horizontale (défaut, si Y
n'apparaît pas) |
Y | sélectionner la valeur de la résolution verticale |
d | nom du pilote (chaîne) |
f | nom de la fonte (chaîne) |
p | magstep (0...9, h, u u=inconnu) (chaîne) |
m | Metafont mode (chaîne) |
b | résolution basique de la fonte (fraction) |
r | résolution de la fonte en dpi (fraction) |
s | design size en pt (fraction) |
g | agrandissement (fraction) |
a1,a2,a3 | alternatives |
$env: | variables d'environnement |
macro: | macro MFjob |
@@ @, @ @ @$ | caractères spéciaux dans les modèles |



