MetaPost

时间:2020-05-07 05:14:09

MetaPost
编程范型指令式,排版
设计者John D. Hobby
实作者Taco Hoekwater
稳定版本
1.001
( 2007年11月14日,​11年前​(2007-11-14
型态系统推断类型, 动态类型, 强类型
操作系统跨平台
许可证公有领域
网站Development website
启发语言
Metafont

MetaPost是一个程序语言和它的编译器的名字,衍生于高德纳的Metafont。MetaPost擅长通过数学描述制作矢量图,生成的图片为PostScript格式。它的语法来自Metafont。

实例

这个文件example.mp通过MetaPost的编译器编译(在Linux系统中使用mpost命令)之后产生了3个EPS文件: example.1, example.2, example.3。这三个文件就是右边的三张图

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=z2z4..z0..z3---z1;     p2=p1 cutbefore p0 cutafter p0;     p3=p0 cutbefore p1 cutafter p1;     p4=p2p3cycle;     % 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 z1tz2t withcolor .5white;     draw z3tz4t 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.texconvertMPtoPDF命令。为了看或者打印这三张图片,这些引用是必须的,因为TeX的字体(Metafont)并不包含在MetaPost产生的eps文件中。

参见

  • PGF/TikZ

与本文近似的文章: