{{위키데이터 속성 추적}}
{{Infobox programming language
| name = 메타포스트<br />MetaPost
| logo = MPlogo.svg
| paradigm = 명령형, [[조판]]
| released = {{시작 날짜|1994}}
| designer = 존 D. 호비
| developer = Taco Hoekwater, Luigi Scarso
| latest_release_version = 1.8
| latest_release_date = {{시작 날짜와 나이|2013|06|17|df=yes}}
| latest_preview_version = 2.0rc2
| latest_preview_date = {{시작 날짜와 나이|2018|02|19|df=yes}}
| typing = [[덕 타이핑|덕]], 동적, 스트롱
| implementations = 
| dialects = 
| influenced by = [[메타폰트]]
| influenced = 
| operating_system = [[크로스 플랫폼]]
| license = [[LGPL]]
| website = {{url|http://tug.org/metapost}}
| file_ext = 
}}
'''메타포스트'''(MetaPost)는 메타포스트 [[프로그래밍 언어]] 그 자체 또는 해당 프로그래밍 언어의 [[인터프리터]]를 모두 가리킨다. 이 둘은 [[도널드 커누스]]의 [[메타폰트]] 언어와 인터프리터에서 파생한 것이다. 메타포스트는 기하학/대수적 기술로부터 벡터 그래픽 다이어그램을 생성한다. 이 언어는 선, 곡선, 점, 기하학 변형을 조작하기 위한 메타폰트의 선언 문법을 공유한다.

== 예시 ==
다음은 단일 파일 example.mp을 메타포스트 인터프리터로 처리([[리눅스]]의 mpost 명령어를 통해)할 때의 예시이다. 이때 3개의 eps 파일(example.1, example.2, example.3)이 생성된다. 이것들은 오른쪽 사진으로 시각화되어 있다.
[[파일:Metapost ex.svg|섬네일|198px|right|예시 출력]]
<syntaxhighlight lang="octave">
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);
    % 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 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 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 upto 4:
        drawdot z[i]t withpen pencircle scaled 2;
    endfor
endfig;
bye
</syntaxhighlight>

== 같이 보기 ==
* [[메타폰트]]

== 외부 링크 ==
* The TeX Users Group ([[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/
* [https://web.archive.org/web/20081113124212/http://cryp.to/funcmp/ Functional MetaPost] allows MetaPost to be used from the functional programming language [[Haskell (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 [https://web.archive.org/web/20051217231314/http://cm.bell-labs.com/cm/cs/doc/92/2-21.ps.gz Bell Labs web site]. Also available in [http://www.tug.org/tutorials/mp/mpman.pdf PDF format] from [[CTAN]].
* Troy Henderson's [http://www.tlhiv.org/mppreview/ Online MetaPost Previewer]

[[분류:선언형 프로그래밍 언어]]
[[분류:도메인 특화 프로그래밍 언어]]
[[분류:포스트스크립트]]
[[분류:퍼블릭 도메인 소프트웨어]]