MetaPost - MetaPost

MetaPost
MPlogo.svg
Paradigme impératif , composition
Conçu par John D. Hobby
Développeur Taco Hoekwater, Luigi Scarso
Première apparition 1994 ( 1994 )
Version stable
1.8 / 17 juin 2013 ; il y a 8 ans ( 2013-06-17 )
Version préliminaire
2.0rc2 / 19 février 2018 ; il y a 3 ans ( 2018-02-19 )
Discipline de frappe canard , dynamique , fort
Système d'exploitation Multiplateforme
Licence LGPL
Site Internet tug .org /metapost
Influencé par
Metafont

MetaPost fait référence à la fois à un langage de programmation et à l' interpréteur du langage de programmation MetaPost. Tous deux sont tirés de Donald Knuth de Metafont langue et interprète. MetaPost produit des diagrammes graphiques vectoriels à partir d'une description géométrique/algébrique. Le langage partage la syntaxe déclarative de Metafont pour manipuler les lignes, les courbes, les points et les transformations géométriques. Cependant,

  • Metafont est configuré pour produire des polices, sous la forme de fichiers image (au format .gf) avec des fichiers métriques de polices associés (au format .tfm), tandis que MetaPost produit des fichiers EPS , SVG ou PNG
  • La sortie de Metafont se compose des polices à une résolution fixe dans un format basé sur une trame, tandis que la sortie de MetaPost est constituée de graphiques vectoriels (lignes, courbes de Bézier )
  • La sortie Metafont est monochrome, alors que MetaPost utilise des couleurs RVB ou CMJN .
  • Le langage MetaPost peut inclure des étiquettes de texte sur les diagrammes, soit des chaînes d'une police spécifiée, soit tout autre élément pouvant être composé avec TeX .
  • A partir de la version 1.8, Metapost permet l'arithmétique à virgule flottante avec 64 bits (par défaut : arithmétique à virgule fixe 32 bits)

La plupart des limitations de MetaPost découlent des fonctionnalités de Metafont. Par exemple, MetaPost ne prend pas en charge toutes les fonctionnalités de PostScript . Plus particulièrement, les chemins ne peuvent avoir qu'un seul segment (de sorte que les régions sont simplement connectées ), et les régions ne peuvent être remplies que de couleurs uniformes. PostScript niveau 1 prend en charge les motifs en mosaïque et PostScript 3 prend en charge l' ombrage Gouraud .

Disponibilité et utilisation

MetaPost est distribué avec de nombreuses distributions du framework TeX et Metafont , par exemple, il est inclus dans les distributions MiKTeX et TeX Live .

Le postscript encapsulé produit par Metapost peut être inclus dans les documents LaTeX , ConTeXt et TeX via des commandes d'inclusion graphique standard. La sortie postscript encapsulée peut également être utilisée avec le moteur PDFTeX , donnant ainsi directement PDF . Cette capacité est implémentée dans ConTeXt et dans le package graphique LaTeX , et peut être utilisée à partir de plain TeX via le fichier de macro supp-pdf.tex.

ConTeXt et LuaTeX prennent en charge l'inclusion de code MetaPost dans le fichier d'entrée. L'inclusion de code MetaPost dans LaTeX est également possible en utilisant des packages LaTeX, par exemple gmp ou mpgraphics .

Exemples

Ceci est un fichier unique exemple.mpqui lorsqu'il est traité par l'interpréteur MetaPost (via la commande mpostsous Linux ) produit trois fichiers epsExemple 1, exemple.2, exemple.3. Ceux-ci sont illustrés à droite.

Image
exemples de sorties
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);
    % declare paths to be used
    path p[],p[]t;
    % set up points by defining relationships
    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];
    % set up paths
    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;
    % define transformed versions of paths and points
    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
    % do some drawing
    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 EPS résultants peuvent être utilisés dans TeX via LATEX « s \includegraphicscommande, ConTEXt » s \externalfigure, Plain TeX \epsfboxde commande, ou (en pdftex ordinaire) la \convertMPtoPDFcommande desupp-pdf.tex. Pour visualiser ou imprimer le troisième diagramme, cette inclusion est nécessaire, car les polices TeX ( Computer Modern ) ne sont pas incluses dans les fichiers eps produits par MetaPost par défaut.

Voir également

Les références

  • Hagen, Hans. "MetaFun" (modules pour Metapost).
  • Knuth, Donald (1986). Le livre METAFONT . Informatique et composition . C . Addison-Wesley . ISBN 0-201-13444-6.
  • " Réseau d'archives T E X complet " ( CTAN ). Référentiel de T E source de X et des centaines d'add-ons et des fichiers de style.
  • "(La)TeX Navigator fournit 305 exemples simples de MetaPost" . Archivé de l'original le 2013-07-27 . Récupéré le 17-11-2006 .
  • Hoekwater, Taco (2006). "Développements MetaPost-automne 2006" (PDF) . remorqueur . 27 (1).

Liens externes