MetaPost - MetaPost
| Paradigme | impératif , composition |
|---|---|
| Conçu par | John D. Hobby |
| Développeur | Taco Hoekwater, Luigi Scarso |
| Première apparition | 1994 |
| Version stable | 1.8 / 17 juin 2013
|
| Version préliminaire | 2.0rc2 / 19 février 2018
|
| Discipline de frappe | canard , dynamique , fort |
| Système d'exploitation | Multiplateforme |
| Licence | LGPL |
| Site Internet | tug |
| 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.
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
- Le groupe d'utilisateurs TeX ( TUG ) http://www.tug.org/ a une page consacrée à MetaPost : http://www.tug.org/metapost.html
- Le développement actif de MetaPost se poursuit sur https://web.archive.org/web/20070929092912/http://foundry.supelec.fr/projects/metapost/
- Functional MetaPost permet à MetaPost d'être utilisé à partir du langage de programmation fonctionnel Haskell
- John D. Hobby a une page d'accueil sur https://web.archive.org/web/20131003040005/http://ect.bell-labs.com/who/hobby/index.shtml et quelques autres pages et publications consacrées à MetaPost , bien que ceux-ci soient maintenant un peu datés
- Page d'accueil historique de MetaPost : https://web.archive.org/web/20081212090123/http://ect.bell-labs.com/who/hobby/MetaPost.shtml
- Un manuel d'utilisation pour MetaPost John D. Hobby. Disponible sous forme de fichier mpman.ps distribué avec MetaPost, ou sur le site Web des Bell Labs . Également disponible en format PDF auprès du CTAN .
- Aperçu MetaPost en ligne de Troy Henderson