MetaPost
MetaPost是一个程序语言和它的编译器的名字,衍生于高德纳的Metafont。MetaPost擅长通过数学描述制作矢量图,生成的图片为PostScript格式。它的语法来自Metafont。
指令式,排版 | |
設計者 | John D. Hobby |
實作者 | Taco Hoekwater |
穩定版本 | 1.001
( 2007年11月14日
) |
型態系統 | 推断类型, 动态类型, 强类型 |
作業系統 | 跨平台 |
許可證 | 公有领域 |
網站 | Development website |
啟發語言 | |
Metafont |
实例
这个文件example.mp通过MetaPost的编译器编译(在Linux系统中使用mpost
命令)之后产生了3个EPS文件: example.1, example.2, example.3。这三个文件就是右边的三张图
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文件中。
参见
- PGF/TikZ
参考
- MetaFun (modules for Metapost) by Hans Hagen,
- Donald Knuth: The METAFONTbook, (Computers and Typesetting Volume C) Addison-Wesley 1986. ISBN 0-201-13444-6
- Comprehensive TEX Archive Network (CTAN): http://www.ctan.org/. Repository of the TEX source and hundreds of add-ons and style files.
- (La)TeX Navigator provides 305 simple MetaPost examples: https://web.archive.org/web/20130727021112/http://tex.loria.fr/prod-graph/zoonekynd/metapost/metapost.html
- Taco Hoekwater: MetaPost developments—autumn 2006. TUGboat 27:1 (2006).
外部链接
- The TeX users group (TUG) http://www.tug.org/ has a page devoted to MetaPost: http://www.tug.org/metapost.html
- Active development of MetaPost continues at https://web.archive.org/web/20070929092912/http://foundry.supelec.fr/projects/metapost/
- Functional MetaPost allows MetaPost to be used from the functional programming language Haskell
- John D. Hobby has a homepage at https://web.archive.org/web/20131003040005/http://ect.bell-labs.com/who/hobby/index.shtml and some other pages and publications devoted to MetaPost, though these are now a little dated
- Historic MetaPost homepage: https://web.archive.org/web/20081212090123/http://ect.bell-labs.com/who/hobby/MetaPost.shtml
- A User's Manual for MetaPost John D. Hobby. Available as a file mpman.ps distributed with MetaPost, or from the Bell Labs web site. Also available in PDF format from CTAN.
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.