متاپست

متاپُست  هم به زبان برنامه‌نویسی متاپست و هم به مفسر این زبان اشاره می‌کند. هر دو از زبان و مفسر فراقلم مشتق شده‌اند. متاپست برای تولید نمودار، در زبان پست‌اسکریپت ، از توصیفی هندسی/جبری بسیار مناسب است. این زبان از دستور (syntax) روان و خوانای فراقلم برای کار با خط‌ها، منحنی‌ها، نقاط و تبدیل‌های هندسی استفاده می‌کند.

بسیاری از محدودیت‌های متاپست از ویژگی‌های متافونت ناشی می‌شوند. برای نمونه دقت نمایش اعداد اعشاری در آن کم است که می‌تواند هنگام کار با نمودارها در فضای مختصات بزرگتر، ایجاد محدودیت کند. علاوه‌براین، متاپست از همه‌ی ویژگی‌های پست‌اسکریپت پشتیبانی نمی‌کند. به‌خصوص، هر مسیر تنها می‌تواند یک تکه‌ای باشد (که در نتیجه نواحی ایجاد شده همبند ساده هستند.) و هر ناحیه را تنها می‌توان با یک رنگ پر کرد.

متاپست در حال حاضر با بسیاری از توزیع‌های تک و فراقلم توزیع می‌شود.

مثال‌ها 
فایل example.mp که در ادامه می‌آید بعد از پردازش با مفسر متاپست (با دستور mpost در لینوکس) سه فایل eps (قابل استفاده در لاتک با دستور  \includegraphics ) تولید می‌کند که سمت چپ نمایش داده شده‌اند.

<nowiki>transform pagecoords;</nowiki>
<nowiki>pagecoords:=identity scaled 10mm shifted (100mm,150mm);</nowiki>
<nowiki>beginfig (1)</nowiki>
<nowiki>    fill ((0,0)--(2,0)--(2,1)--(1,1)--(1,2)--(0,2)--cycle)</nowiki>
<nowiki>        transformed pagecoords withcolor green;</nowiki>
<nowiki>    draw ((2,0)..(2,1)..(1,1)..(1,2)..(0,2))</nowiki>
<nowiki>        transformed pagecoords;</nowiki>
<nowiki>    drawarrow ((0,0)--(2,2)) transformed pagecoords;</nowiki>
<nowiki>endfig;</nowiki>
<nowiki>beginfig (2)</nowiki>
<nowiki>    draw (for i=0 upto 7: dir (135i)-- endfor cycle)</nowiki>
<nowiki>        transformed pagecoords;</nowiki>
<nowiki>endfig;</nowiki>
<nowiki>pagecoords:=identity scaled 15mm shifted (100mm,150mm);</nowiki>
<nowiki>beginfig (3);</nowiki>
<nowiki>    % declare paths to be used</nowiki>
<nowiki>    path p[],p[]t;</nowiki>
<nowiki>    % set up points by defining relationships</nowiki>
<nowiki>    z1=(0,0);   z2=z1+2up;</nowiki>
<nowiki>    z3=z1+whatever*dir (60)=z2+whatever*dir (-50);</nowiki>
<nowiki>    z4=z3+(-1.5,-.5);</nowiki>
<nowiki>    z5=z1+dir (135);</nowiki>
<nowiki>    z0=whatever[z1,z2]=whatever[z3,z4];</nowiki>
<nowiki>    % set up paths</nowiki>
<nowiki>    p0=fullcircle yscaled .5 rotated 45 shifted z0 ;</nowiki>
<nowiki>    p1=z2---z4..z0..z3---z1;</nowiki>
<nowiki>    p2=p1 cutbefore p0 cutafter p0;</nowiki>
<nowiki>    p3=p0 cutbefore p1 cutafter p1;</nowiki>
<nowiki>    p4=p2---p3---cycle;</nowiki>
<nowiki>    % define transformed versions of paths and points</nowiki>
<nowiki>    for i=0 upto 4: p[i]t=p[i] transformed pagecoords; endfor</nowiki>
<nowiki>    for i=0 upto 5: z[i]t=z[i] transformed pagecoords; endfor</nowiki>
<nowiki>    % do some drawing</nowiki>
<nowiki>    fill p4t withcolor (1,1,0.2);</nowiki>
<nowiki>    draw z1t---z2t withcolor .5white;</nowiki>
<nowiki>    draw z3t---z4t withcolor .5white;</nowiki>
<nowiki>    pickup pencircle;</nowiki>
<nowiki>    draw p0t dashed withdots scaled .3;</nowiki>
<nowiki>    draw p1t dashed evenly;</nowiki>
<nowiki>    draw p2t withcolor blue;</nowiki>
<nowiki>    draw p3t withcolor red;</nowiki>
<nowiki>    label.lrt (btex $z_0$ etex, z0t);</nowiki>
<nowiki>    label.llft (btex $z_1$ etex, z1t);</nowiki>
<nowiki>    label.top (btex $z_2$ etex, z2t);</nowiki>
<nowiki>    label.rt (btex $z_3$ etex, z3t);</nowiki>
<nowiki>    label.llft (btex $z_4$ etex, z4t);</nowiki>
<nowiki>    for i=0 upto 4:</nowiki>
<nowiki>        drawdot z[i]t withpen pencircle scaled 2;</nowiki>
<nowiki>    endfor</nowiki>
<nowiki>endfig;</nowiki>
<nowiki>bye</nowiki>

جستارهای وابسته 

 فراقلم
 پست‌اسکریپت

پیوند به بیرون 

 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.
 Troy Henderson's Online MetaPost Previewer

منابع 

 MetaFun (modules for Metapost) by Hans Hagen, 
 دانلد کنوت: The METAFONTbook, (Computers and Typesetting Volume C) ادیسون-وزلی 1986. 
 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).

پست‌اسکریپت
زبان‌های برنامه‌نویسی اعلانی
زبان‌های برنامه‌نویسی دامنه-مشخص
زبان‌های برنامه‌نویسی ساخته‌شده در ۱۹۹۴ (میلادی)
معرفی‌شده‌های ۱۹۹۴ (میلادی)
نرم‌افزارهای در مالکیت عمومی