Share to: share facebook share twitter share wa share telegram print page

 

MetaPost

MetaPost
Logo.

Date de première version Voir et modifier les données sur Wikidata
Influencé par MetafontVoir et modifier les données sur Wikidata
Écrit en CVoir et modifier les données sur Wikidata
Licence Licence publique générale limitée GNUVoir et modifier les données sur Wikidata

MetaPost est un système qui implémente un langage de construction de figures et est interpréteur de ce langage. Il dérive du système Metafont du professeur Donald Knuth, et est spécialisé dans la production de diagrammes en langage PostScript à partir d'une description géométrique et algébrique. Le langage permet, en utilisant la syntaxe du langage Metafont, de combiner des lignes, des courbes, des points et d'effectuer des transformations géométriques.

Toutefois, MetaPost se différencie de Metafont sur plusieurs points :

  • Metafont est conçu pour produire des polices de caractère, sous forme de fichiers d'image (d'extension .gf) et des fichiers associés (d'extension .tfm) contenant des informations métriques de police, tandis que MetaPost produit des fichiers au format PostScript ;
  • Metafont produit des polices avec une résolution fixe dans un format matriciel, tandis que MetaPost produit des graphiques dans un format vectoriel, le PostScript ;
  • Metafont travaille en monochrome, tandis que MetaPost gère les couleurs en employant un format RVB
  • Le langage MetaPost permet d'inclure des boîtes contenant du texte dans les diagrammes, des chaînes de caractère écrites dans une police donnée, ou beaucoup de choses qui peuvent être composées avec TeX ;
  • L'interpréteur de Metafont a été écrit par Donald Knuth sous une licence de source libre, permettant à John D. Hobby et plus tard à Ulrik Vieth d'adapter l'interpréteur à leurs propres exigences, pour donner MetaPost.

Disponibilité, utilisation

MetaPost est fourni avec beaucoup de distributions courantes de TeX et de Metafont. En particulier, il se trouvait dans l'ancienne distribution teTeX et se trouve dans la distribution TeX Live, pour les systèmes d'exploitation Linux, Unix et MacOS.

On trouve aussi le code source de l'interpréteur MetaPost prêt à être compilé sur https://foundry.supelec.fr/frs/?group_id=13&release_id=383#stable-_1.212-title-content . On obtient ainsi un exécutable nommé mpost.

MetaPost produit du PostScript qu'il est possible de facilement inclure dans les documents TeX et LaTeX au moyen de commandes d'insertion de fichier. Il est aussi possible d'incorporer ces fichiers PostScript dans des documents au format pdf par l'intermédiaire du dialecte PDFTeX de TeX. Cette possibilité est mise en application dans le paquetage graphique de LaTeX, et peut être utilisée à partir de fichiers écrits en « plain TeX » en incluant le fichier de macros supp-pdf.tex.

Exemples

Voici un fichier exemple.mp qui une fois traité par l'interpréteur de MetaPost (à l'aide de la commande mpost sur Linux) donne trois fichiers exemple.1, exemple.2, et exemple.3 au format eps. Ceux-ci sont dessinés à droite.

transform pagecoords;
pagecoords:=identity scaled 10mm shifted (100mm,150mm);

beginfig(1)
    fill ((0,0)--(2,0)--(2,1)--(1,1)--(1,2)--(0,2)--cycle)
        transformed pagecoords withcolor green;
    draw ((2,0)..(2,1)..(1,1)..(1,2)..(0,2))
        transformed pagecoords;
    drawarrow ((0,0)--(2,2)) transformed pagecoords;
endfig;

beginfig(2)
    draw (for i=0 upto 7: dir(135i)-- endfor cycle)
        transformed pagecoords;
endfig;
        
pagecoords:=identity scaled 15mm shifted (100mm,150mm);
beginfig(3);
    path p[],p[]t;
    z1=(0,0);   z2=z1+2up;
    z3=z1+whatever*dir(60)=z2+whatever*dir(-50);
    z4=z3+(-1.5,-.5);
    z5=z1+dir(135);
    z0=whatever[z1,z2]=whatever[z3,z4];
    p0=fullcircle yscaled .5 rotated 45 shifted z0 ;
    p1=z2--z4..z0..z3---z1;
    p2=p1 cutbefore p0 cutafter p0;
    p3=p0 cutbefore p1 cutafter p1;
    p4=p2--p3--cycle;
    for i=0 upto 4: p[i]t=p[i] transformed pagecoords; endfor
    for i=0 upto 5: z[i]t=z[i] transformed pagecoords; endfor
    fill p4t withcolor (1,1,0.2);
    draw z1t--z2t withcolor .5white;
    draw z3t--z4t withcolor .5white;
    pickup pencircle;
    draw p0t dashed withdots scaled .3;
    draw p1t dashed evenly;
    draw p2t withcolor blue;
    draw p3t withcolor red;
    label.lrt(btex $z_0$ etex, z0t);
    label.llft(btex $z_1$ etex, z1t);
    label.top(btex $z_2$ etex, z2t);
    label.rt(btex $z_3$ etex, z3t);
    label.llft(btex $z_4$ etex, z4t);
    for i=0 upto 4:
        drawdot z[i]t withpen pencircle scaled 2;
    endfor
endfig;
bye

Les trois fichiers résultants au format eps peuvent être utilisés en TeX par l'intermédiaire de la commande LaTeX \includegraphics, avec la commande Plain TeX \epsfbox, ou avec la commande (de pdftex) \convertMPtoPDF du fichier supp-pdf.tex. Pour visualiser ou imprimer le troisième graphique, l'insertion du fichier eps dans un fichier TeX est nécessaire, car les polices de TeX ne sont pas incluses dans les fichiers eps produits par MetaPost.

Références et liens externes

Kembali kehalaman sebelumnya


Index: pl ar de en es fr it arz nl ja pt ceb sv uk vi war zh ru af ast az bg zh-min-nan bn be ca cs cy da et el eo eu fa gl ko hi hr id he ka la lv lt hu mk ms min no nn ce uz kk ro simple sk sl sr sh fi ta tt th tg azb tr ur zh-yue hy my ace als am an hyw ban bjn map-bms ba be-tarask bcl bpy bar bs br cv nv eml hif fo fy ga gd gu hak ha hsb io ig ilo ia ie os is jv kn ht ku ckb ky mrj lb lij li lmo mai mg ml zh-classical mr xmf mzn cdo mn nap new ne frr oc mhr or as pa pnb ps pms nds crh qu sa sah sco sq scn si sd szl su sw tl shn te bug vec vo wa wuu yi yo diq bat-smg zu lad kbd ang smn ab roa-rup frp arc gn av ay bh bi bo bxr cbk-zam co za dag ary se pdc dv dsb myv ext fur gv gag inh ki glk gan guw xal haw rw kbp pam csb kw km kv koi kg gom ks gcr lo lbe ltg lez nia ln jbo lg mt mi tw mwl mdf mnw nqo fj nah na nds-nl nrm nov om pi pag pap pfl pcd krc kaa ksh rm rue sm sat sc trv stq nso sn cu so srn kab roa-tara tet tpi to chr tum tk tyv udm ug vep fiu-vro vls wo xh zea ty ak bm ch ny ee ff got iu ik kl mad cr pih ami pwn pnt dz rmy rn sg st tn ss ti din chy ts kcg ve 
Prefix: a b c d e f g h i j k l m n o p q r s t u v w x y z 0 1 2 3 4 5 6 7 8 9