Vizito Encydia-Wikilingue.Com

MetaPost

metapost - Wikilingue - Encydia

MetaPost
MPlogo.svg
Desarrollador
Bilardbastono Hoekwater (Aŭtoro: John D. Hobby)
foundry.Supelec.Fr/projects/metapost/
Ĝenerala informo
Lasta stabila versio1.001
14an de novembro 2007
Varo?
Mastruma sistemoMultiplatforma
LicencoPublic Domain
En la hispana?

MetaPost konstituas lingvon de programado kaj la sola interpretisto de la lingvo de programado MetaPost. Ambaŭ estis derivitaj de la lingvo kaj de la interpretisto de Metafont, kreitaj de Donald Knuth. MetaPost produktas diagramojn uzante la lingvo de programado PostScript de la geometria-algebraica priskribo. MetaPost dividas la sintakson declarativa de Metafont por manipuli liniojn, kurboj, punktoj kaj geometriaj transformoj. Tamen,

Enhavo

Disponibilidad kaj uzo

MetaPost distribuas inkludita en multaj de la dissendoj de TeX kaj Mefafont. Ĝi aperas, ekzemple, en la dissendo teTeX, komuna en platformoj Linukso kaj Unikso (inkludante Mac VIN 10a).

La postscript encapsulado produktita de MetaPost povas inkludi facile en dokumentoj TeX, ConTeXt kaj LaTeX tra ordonoj normo de inkludo de eps. Estas aparte utila la kapableco de inkludi ĉi tiun eliron en PdfTeX, dialekto de TeX, tiel ke ĝi akiras formaton de dokumento multiplataforma de TeX en sola paŝo. Ĉi tiu kapableco aperas implementada en ConTeXt kaj en la pako de grafikaĵoj de LaTeX kaj ĝi eblas uzita de TeX danke al la macro supp-pdf.Tex. ConTeXt ankaŭ permesas la kreon de arkivoj MetaPost sen la neceso de krei arkivon TeX.

Ekzemploj

Ĝi tuj poste aperas la enhavon de la arkivo example.Mp. Kiam estas procesita de la interpretisto de MetaPost (uzante la ordono mpost en Linukso), ili produktas tri arkivojn de bildo eps: example.1, Example.2 Kaj example.3, kiu aperas dekstre.

Metapost ex.png
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);
    % deklaru paths to bo used
    path p[], p[]t;
    % serio 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];
    % serio 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;
    % ĝi difinas 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 reto;
    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

La tri arkivoj eps resultantes povas inkludi en LaTeX uzante la ordono \includegraphics, en ConTeXt \externalfigure kaj en simpla TeX uzante \epsfbox aŭ en simpla pdfTeX \convertMPtoPDF enhavo en supp-pdf.Tex. Por vidi aŭ presi la trian diagramon, estas necese inkludi la macro supp-pdf.Tex pro tio ke la fontoj de TeX ne inkludas en la arkivoj eps generitaj de MetaPost.

Vidu ankaŭ

Referencoj kaj eksteraj ligoj