MetaPost
| MetaPost | ||
|---|---|---|
|
| ||
| Informatii generale | ||
| dezvoltator | Taco Hoekwater (Autor: John D. Hobby) | |
| lansarea inițială | 1994 | |
| Licență | Domeniu public | |
| Versiuni | ||
| Ultima versiune stabilă | 1.001 ( 14.11.2007 ) _ _ | |
| Legături | ||
MetaPost este un limbaj de programare și singurul interpret pentru limbajul de programare MetaPost. Ambele au fost derivate din limbajul și interpretul Metafont , creat de Donald Knuth . MetaPost produce diagrame folosind limbajul de programare PostScript dintr-o descriere geometric-algebrică. MetaPost partajează sintaxa declarativă a Metafont pentru manipularea liniilor , curbelor , punctelor și transformărilor geometrice . Cu toate acestea,
- Metafont a fost creat pentru a produce fonturi , sub formă de fișiere imagine (în format .gf) împreună cu fișiere de măsurători asociate (în format .tfm), în timp ce MetaPost produce fișiere PostScript încapsulate .
- Ieșirea Metafont constă din fonturi la o rezoluție dată într-un format raster , în timp ce ieșirea MetaPost este un grafic postscript vectorizat (linii, curbe Bézier ).
- Ieșirea Metafont este monocromă , în timp ce MetaPost folosește o specificație RGB .
- Limbajul MetaPost poate include etichete de text în diagrame, precum și șiruri de text dintr-un anumit font sau aproape orice poate fi tastat folosind TeX .
- Interpretul Metafont a fost scris de Donald Knuth sub o licență open source , permițându -i lui John D. Hobby (și, mai târziu, Ulrik Vieth ) să adapteze interpretul pentru propriile sale scopuri, obținând MetaPost.
- MetaPost nu are un logo special și chiar dacă ar avea, probabil că ar trebui să vă bazați pe TeX pentru a-l reda .
Disponibilitate și utilizare
MetaPost este distribuit împreună cu multe dintre distribuțiile TeX și Mefafont . Apare, de exemplu, în distribuția teTeX , comună pe platformele Linux și Unix (inclusiv Mac OS X ).
Postscriptul încapsulat produs de MetaPost poate fi inclus cu ușurință în documentele TeX , ConTeXt și LaTeX prin comenzi standard eps include. Deosebit de utilă este capacitatea de a include această ieșire în PdfTeX , un dialect al TeX, astfel încât un format de document multiplatform să fie obținut din TeX într-un singur pas. Această abilitate este implementată în ConTeXt și în pachetul grafic LaTeX și poate fi utilizată din TeX datorită macro-ului supp-pdf.tex . ConTeXt permite, de asemenea, crearea de fișiere MetaPost fără a fi nevoie de a crea un fișier TeX.
Exemple
Mai jos este conținutul fișieruluiexemplu.mp. Când este procesat de interpretul MetaPost (folosind comandampostpe Linux ), sunt produse trei fișiere imagine eps:exemplu.1,exemplu.2Yexemplu.3, care apar în dreapta.
transformarea coordurilor de pagină;
pagecoords:=identitate scalată 10mm deplasată (100mm,150mm);
startfig (1)
umplere ((0,0)--(2,0)--(2,1)--(1,1)--(1,2)--(0,2)--ciclu)
coordonatele paginii transformate cu culoarea verde;
remiză ((2.0)..(2.1)..(1.1)..(1.2)..(0.2))
coduri de pagină transformate;
drawarrow ((0,0)--(2,2)) coorde de pagină transformate;
endfig;
startfig (2)
draw (pentru i=0 până la 7: dir (135i)-- endfor ciclu)
coduri de pagină transformate;
endfig;
pagecoords:=identitate scalată 15mm deplasată (100mm,150mm);
beginfig(3);
% declară căi de utilizat
calea p[], p[]t;
% puncte stabilite prin definirea relațiilor
z1=(0,0); z2=z1+2up;
z3=z1+orice*dir(60)=z2+orice*dir(-50);
z4=z3+(-1,5,-.5);
z5=z1+dir(135);
z0=orice[z1,z2]=orice[z3,z4];
% căi configurate
p0=cerc complet yscalat .5 rotit 45 deplasat z0 ;
p1=z2--z4..z0..z3---z1;
p2=p1 tăiat înainte de p0 tăiat după p0;
p3=p0 tăiat înainte de p1 tăiat după p1;
p4=p2-p3-ciclu;
% definesc versiuni transformate ale traseelor și punctelor
pentru i=0 până la 4: p[i]t=p[i] coorde de pagină transformate; sfârşitul pentru
pentru i=0 până la 5: z[i]t=z[i] coorde de pagină transformate; sfârşitul pentru
% fac ceva desen
umpleți p4t cu culoare (1,1,0,2);
desenează z1t--z2t cuculoare .5alb;
desenează z3t--z4t cuculoare .5alb;
cerc de ridicare;
trage p0t punctat cu puncte scalate .3;
trage p1t punctat uniform;
desenați p2t cu culoarea albastru;
desenați p3t cu culoarea roșu;
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);
pentru i=0 până la 4:
drawdot z[i]t withpen pencerc scaled 2;
sfârşitul pentru
endfig;
pa
Cele trei fișiere eps rezultate pot fi incluse în LaTeX folosind comanda\includegraphics, în ConTeXt \figura externași în simplu TeX folosind\epsfboxsau în simplu pdfTeX \convertMPtoPDFcuprins însupp-pdf.tex. Pentru a vizualiza sau a imprima a treia diagramă, trebuie să includeți macro-ulsupp-pdf.texdeoarece fonturile TeX nu sunt incluse în fișierele eps generate de MetaPost.
Vezi și
Referințe și link-uri externe
- Pe site - ul T E X Users Group ( TUG ) http://www.tug.org/ , există o pagină dedicată în întregime MetaPost . (în limba engleză)
- John D. Hobby are o pagină web la https://web.archive.org/web/20060206164643/http://cm.bell-labs.com/who/hobby/index.html și alte pagini de pe MetaPost:
- Site-ul web MetaPost : https://web.archive.org/web/20041124024610/http://cm.bell-labs.com/who/hobby/MetaPost.html
- Un manual de utilizare pentru MetaPost John D. Hobby. Disponibil ca fișier mpman.ps distribuit împreună cu MetaPost sau de pe site-ul web Bell Labs . Disponibil și în format pdf prin CTAN . (în limba engleză)
- MetaFun (module pentru Metapost) de Hans Hagen, [1 ]
- Donald Knuth : CARTEA Metafont , ( Computere and Typesetting Volume C ) Addison-Wesley 1986 . ISBN 0-201-13444-6 .
