MetaPost

維基百科,自由的百科全書
跳至導覽 跳至搜尋
MetaPost
File:MPlogo.svg
編程範型指令式排版
設計者John D. Hobby
實作者Taco Hoekwater
當前版本
    Module:EditAtWikidata第29行Lua錯誤:attempt to index field 'wikibase' (a nil value)
    型態系統推斷類型, 動態類型, 強類型
    操作系統跨平台
    許可證公有領域
    網站Development website
    受影響於
    Metafont

    MetaPost是一個程序語言和它的編譯器的名字,衍生於高德納Metafont。MetaPost擅長通過數學描述製作矢量圖,生成的圖片為PostScript格式。它的語法來自Metafont

    實例[編輯]

    這個文件example.mp通過MetaPost的編譯器編譯(在Linux系統中使用mpost命令)之後產生了3個EPS文件example.1, example.2, example.3。這三個文件就是右邊的三張圖

    File:Metapost ex.svg
    example outputs
     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 up to 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 up to 4: p[i]t=p[i] transformed pagecoords; endfor
         for i=0 up to 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 up to 4:
             drawdot z[i]t withpen pencircle scaled 2;
         endfor
     endfig;
     bye
    

    產生的3個eps文件可以直接用在TeX中(通過LaTeX\includegraphics命令、ConTeXt\externalfigure命令、Plain TeX的\epsfbox命令,或者Plain pdftex中來自supp-pdf.tex\convertMPtoPDF命令。為了看或者打印這三張圖片,這些引用是必須的,因為TeX的字體(Metafont)並不包含在MetaPost產生的eps文件中。

    參見[編輯]

    參考[編輯]

    外部連結[編輯]