close

MetaPost

Mergi la navigare Mergi la căutare
MetaPost
MPlogo.svg
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.

Metapost ex.png
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