• Aucun résultat trouvé

Les langagesMETAPOST etMETAFONTont tellement de points communs que les utilisateurs confirmés deMETAFONTvoudront sans doute laisser de côté la plupart des explications de ce document et se concentrer sur les concepts qui sont uniques à METAPOST. Les comparaisons de cet appendice sont prévues pour aider les experts familiers duMETAFONTbookainsi que les autres utilisateurs qui tireront profit des explications plus détaillées de KNUTH[4].

PuisqueMETAFONTest prévu pour construire les fontes de TEX, il possède un certain nombre de primitives permettant de produire des fichierstfmdont TEX a besoin pour connaître les dimensions des caractères, les informations d’espacement, les ligatures et le crénage.METAPOSTpeut également être utilisé pour créer des fontes et il possède également les primitives deMETAFONTpour construire les fichiers tfm. Elles sont résumées dans la table 12. On peut trouver des explications dans la documentation de METAFONT[4, 7].

TAB. 12 – PrimitivesMETAPOSTpour construire des fichierstfm commandes charlist,extensible,fontdimen,headerbyte,

kern,ligtable

opérateurs de ::,= :,=:|,=:|>,=:,|=:>, ligature |=:|,|:=|>,|=:|> >,||: autres opérateurs charexists

Bien queMETAPOSTpossède les primitives permettant de produire des fontes, beau-coup de primitives et de variables internes pour la génération de fontes définies dans PlainMETAFONTne font pas partie de PlainMETAPOST. Pour cela, il y a unpackage séparé de macros, appelémfplain, qui définit les macros requises pour permettre à METAPOSTde compiler les fontesComputer Modernde KNUTHcomme le montre la table 13 [6]10. Pour charger ces macros, il suffit d’écrire&mfplainavant le nom du fichier source. Cela peut être effectué également au niveau de l’invite**après avoir lancé l’interpréteurMETAPOSTsans argument, ou à partir d’une ligne de commande qui pourrait ressembler à

mp ’&mfplain’ cmr10 L’analogue de la commandeMETAFONTsuivante

mf ’\ mode=lowres ; mag=1.2 ; input cmr10’

10 La syntaxe des lignes de commandes dépend du système. Les apostrophes sont nécessaires sur la plupart des systèmes Unix pour protéger des caractères spéciaux tels que&.

est

mp ’&mfplain \ mode=lowres ; mag=1.2 ; input cmr10’

Le résultat est un ensemble de fichiers POSTSCRIPT, un pour chaque caractère de la fonte. Un certain travail sera nécessaire pour pouvoir les incorporer dans des fontes POSTSCRIPTde type 3 [1].

TAB. 13: Macros et variables internes définies uniquement dans le pa-ckagemfplain

Définies dans le packagemfplain

beginchar font_identifier

blacker font_normal_shrink

capsule_def font_normal_space

change_width font_normal_stretch

define_blacker_pixels font_quad

define_corrected_pixels font_size

define_good_x_pixels font_slant

define_good_y_pixels font_x_height define_horizontal_corrected_pixels italcorr

define_pixels labelfont

define_whole_blacker_pixels makebox

define_whole_pixels makegrid

define_whole_vertical_blacker_pixels maketicks define_whole_vertical_pixels mode_def

endchar mode_setup

extra_beginchar o_correction

extra_endchar proofrule

extra_setup proofrulethickness

font_coding_scheme rulepen

font_extra_space smode

Définies comme non-op dans le packagemfplain

cullit proofoffset

currenttransform screenchars

gfcorners screenrule

grayfont screenstrokes

hround showit

imagerules slantfont

lowres_fix titlefont

nodisplays unitpixel

notransforms vround

openit

Une autre limitation du packagemfplainest que certaines variables internes de Plain METAFONTne peuvent pas être traduites de façon sensée enMETAPOST. Ceci inclue displaying,currentwindow,screen_rowsetscreen_colsqui dépendent de la possibilité qu’aMETAFONTd’afficher des images sur un écran d’ordinateur. De plus, pixels_per_inchest irrecevable puisqueMETAPOST fonctionne avec des unités fixées à partir des points POSTSCRIPT.

La raison pour laquelle certaines macros et variables internes n’ont aucun sens avecMETAPOSTest que les commandes primitives deMETAFONTcull,display, openwindow,numspecialettotalweightne sont pas implémentées dans META-POST. Ne sont également pas implémentées un certain nombre de variables internes ainsi que l’<option de tracé>withweight. Voici une liste complète des variables in-ternes dont la signification première dansMETAFONTne peut pas avoir de sens dans METAPOST :

autorounding fillin proofing tracingpens xoffset chardx granularity smoothing turningcheck yoffset chardy hppp tracingeges vppp

Il y a également une primitive deMETAFONTqui a un sens légèrement différent dans METAPOST. Les deux langages permettent des instructions de la forme

special<expression chaîne>;

maisMETAFONTcopie la chaîne dans un fichier de sortie « fonte générique » tandis queMETAPOSTinterprète la chaîne comme une séquence de commandes POSTSCRIPT

qui seront placées au début du prochain fichier de sortie.

Toutes les autres différences entreMETAFONTetMETAPOSTproviennent de fonction-nalités trouvées uniquement dansMETAPOST. Elles sont listées à la table 14. Les seules commandes présentées ici qui n’ont pas été étudiées dans les chapitres précédents sontextra_beginfig,extra_endfigetmpxbreak. Les deux premières sont des chaînes qui contiennent des commandes supplémentaires devant être exécutées par beginfigetendfig exactement comme extra_beginchar etextra_endchar étaient exécutées parbegincharetendchar(le fichierboxes.mputilise cette possi-bilité).

L’autre fonctionnalité listée dans la table 14 non répertoriée dans l’index estmpxbreak. Elle est utilisée pour séparer des blocs traduits en commandes TEX ou troff dans des fichiersmpx. Cette commande ne devrait pas concerner un utilisateur humain puisque les fichiersmpxsont généralement construits de façon automatique.

TAB. 14: Macros et variables internes définies parMETAPOSTet absentes deMETAFONT

PrimitivesMETAPOSTnon trouvées dansMETAFONT

bluepart infont redpart

btex linecap setbounds

clip linejoin tracinglostchars

color llcorner truecorners

dashed lrcorner ulcorner

etex miterlimit urcorner

fontsize mpxbreak verbatimtex

greenpart prologues withcolor

Variables et macros définies uniquement dansMETAPOST

ahangle cutbefore extra_beginfig

ahlength cuttings extra_endfig

background dashpattern green

bbox defaultfont label

bboxmargin defaultpen labeloffset

beginfig defaultscale mitered

beveled dotlabel red

black dotlabels rounded

blue drawarrow squared

buildcycle drawdblarrow thelabel

butt drawoptions white

center endfig

cutafter evenly

Bibliographie

[1] Adobe Systems Inc. POSTSCRIPTLanguage Reference Manual, Addison Wesley, Rea-ding, Massachusets, 1986.

[2] J. D. HOBBY, Smooth, easy to compute interpolating splines,Discrete and Computa-tional Geometry, 1(2), 1986.

[3] Brian W. KERNIGHAN, Pic – a graphics language for typesetting, InUnix Research System Papers, Tenth Edition, pages 53–77, AT&T Bell Laboratories, 1990.

[4] D. E. KNUTH,The METAFONTbook, Addison Wesley, Reading, Massachusets, 1986.

Volume C ofComputers and typesetting.

[5] D. E. KNUTH,The TEXbook, Addison Wesley, Reading, Massachusets, 1986. Volume C ofComputers and Typesetting.

[6] D. E. KNUTH,Computer Modern Typefaces, Addison Wesley, Reading, Massachusets, 1986. Volume A ofComputers and Typesetting.

[7] D. E. KNUTH, The new versions of TEX andMETAFONT,TUGboat, the TEX User’s Group Newsletter, 10(3) : 325 – 328, November 1989.

Index

POSTSCRIPT, 17

encapsulé, 21

arclength, 60, 81 arctangente, 39 begingroup, 77, 83, 85, 88 beveled, 67

bounding box, 50, 53, 72 boxes.mp, 94

centimètre, 20 intersection, 52, 55, 57 choix conditionnel, 76

convention z, 29, 40, 42 coordonnées, 19, 29 currentpen, 71, 74

currentpicture, 53, 73, 75, 89 cutafter, 58, 96

cutbefore, 57, 96 cutdraw, 90 cuttings, 58 cycle, 22, 39, 51 dashed, 63, 67, 70, 71 dashpattern, 65, 83 décalage, 34 direction of, 58 directionpoint of , 60 directionpoint of, 88 directiontime of, 58 div, 115

division, 36, 39 dotlabel, 44, 50 dotlabels, 45, 93 drawboxed, 95, 97, 100 drawboxes, 97, 100 drawdblarrow, 69 drawoptions, 70, 88 drawshadowed, 100 drawunboxed, 97, 100 dvips, 18

d’arrondi, 92 etex, 46

étiquette, 44, 46 evenly, 63, 67, 71 exitif, 93 fixsize, 97, 100 flèche, 67, 69 floor, 39 fonction, 76, 85 fonte

POSTSCRIPT, 46 fontsize, 46

Inconsistent equation, 29 incr, 90 intersectiontimes, 56, 58, 59 inverse, 62

lrt, 44 motif de points, 63 mp nullpicture, 37, 66 numeric, 33, 39, 59

pencircle, 20, 35, 72 penoffset, 117 pensquare, 72 pic, 94

pic, 95

pickup, 20, 35, 59, 71 picture, 33, 39, 53, 55 Plain, 19, 43, 67, 76, 105 point

POSTSCRIPT, 19 d’impression, 20 primaire, 27, 34, 36 primary, 89 primarydef, 89 produit scalaire, 36 prologues, 49

pt, 20

Redundant equation, 32 reflectedabout, 61, 62 relation, 35

reverse, 69 right, 25, 59

\rlap, 50

rotated, 47, 61, 62, 72 rotatedaround, 61, 62 rotation, 34

round, 39 rounded, 67 rt, 44, 72 save, 77, 83, 88 scaled, 20, 59–62 secondaire, 36 secondarydef, 89 self, 102

setbounds, 50, 74 shifted, 59, 61, 62

texte de remplacement, 76, 84, 103 thelabel, 45, 53

time, 108

tracingonline, 33, 43, 103 tracingoutput, 104

transform, 33, 39 unitvector, 39, 82 unknown, 39 interne, 33, 43, 78 locale, 42, 76, 77 vecteur

direction, 58 normé, 39 verbatimtex, 48 warningcheck, 33 whatever, 30, 59, 72, 78 white, 34, 53, 70