메타포스트
MetaPost![]() |
![]() | |
패러다임 | 명령적, 형식 지정 |
---|---|
설계자 | 존 D. 취미 |
개발자 | 타코 회크워터, 루이지 스카르소 |
첫 등장 | 1994 |
안정적 해제 | 1.8 / 2013년 6월 17일; 전 |
릴리스 미리 보기 | 2.0rc2 / 2018년 2월 19일; 전 |
타이핑 규율 | 오리, 다이나믹, 강인함 |
OS | 크로스 플랫폼 |
면허증 | LGPL |
웹사이트 | tug |
영향을 받은 | |
메타폰트 |
메타포스트(MetaPost)는 프로그래밍 언어와 메타포스트 프로그래밍 언어의 인터프리터를 모두 말한다.둘 다 도날드 크누스의 메타폰트 언어와 통역사로부터 파생된 것이다.MetaPost는 기하학적/알지브라틱한 설명으로부터 벡터 그래픽 다이어그램을 제작한다.이 언어는 선, 곡선, 점, 기하학적 변환을 조작하는 메타퐁의 선언적 구문을 공유한다.그러나
- Metafont는 연결된 글꼴 메트릭 파일(.tfm 형식)이 있는 이미지 파일(.gf 형식)의 형태로 글꼴을 생성하도록 설정되어 있는 반면, MetaPost는 EPS, SVG 또는 PNG 파일을 생성한다.
- 메타폰트의 출력은 래스터 기반 형식의 고정 해상도의 글꼴로 구성되는 반면, 메타포스트는 벡터 기반 그래픽(라인, 베지어 곡선)이다.
- 메타폰 출력은 단색인 반면 메타포스트는 RGB나 CMYK 색상을 사용한다.
- MetaPost 언어는 지정된 글꼴의 문자열 또는 TeX로 형식화할 수 있는 기타 모든 문자 레이블을 다이어그램에 포함할 수 있다.
- 버전 1.8부터, 메타포스트는 64비트의 부동 소수점 산술(기본값: 32비트 고정 소수점 산술)을 허용한다.
메타포스트가 가진 많은 제한은 메타폰트의 특징에서 비롯된다.예를 들어, MetaPost는 PostScript의 모든 기능을 지원하지 않는다.가장 주목할 만한 것은, 경로는 (지역이 단순히 연결되도록) 한 부분만 가질 수 있고, 지역은 균일한 색상으로만 채울 수 있다는 점이다.포스트스크립트 레벨 1은 타일 패턴, 포스트스크립트 3는 구라드 쉐이딩을 지원한다.
가용성 및 사용
MetaPost는 TeX와 Metafont 프레임워크의 많은 배포와 함께 배포된다. 예를 들어, MiKteX와 TeX Live 배포에 포함된다.
메타포스트가 제작한 캡슐화된 후기는 표준 그래픽 포함 명령을 통해 LaTeX, ConTeXt, TeX 문서에 포함될 수 있다.캡슐화된 후스크립트 출력물은 PDFTeX 엔진과도 함께 사용할 수 있으므로 PDF를 직접 제공한다.이 기능은 ConTeXt와 LaTeX 그래픽 패키지에서 구현되며, suppdf.tex 매크로 파일을 통해 일반 TeX에서 사용할 수 있다.
ConTeXt와 LuaTeX는 입력 파일에 MetaPost 코드를 포함시킬 수 있도록 지원한다.LaTeX에 MetaPost 코드를 포함하는 것도 LaTeX-패키지(예: 또는 .)를 사용하여 가능하다.
예
이 파일은 MetaPost 통역자가 명령어를 통해 처리할 때 사용하는 단일 파일이다.mpost
Linux에서)는 3개의 eps 파일을 생산한다 , , . 이것들은 오른쪽에 있다.
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), i=0 최대 4: drawdot z[i]t(펜 원 크기 2), endfigure; bye
결과 3개의 eps 파일은 LaTeX를 통해 TeX에서 사용할 수 있다.\includegraphics
명령, ConTeXt의 명령\externalfigure
, 플레인 TeX의\epsfbox
명령 또는 (일반 pdftex)\convertMPtoPDF
…에게 명령하다세 번째 도표를 보거나 인쇄하려면 TeX 글꼴(Computer Modern)이 MetaPost에서 기본적으로 생성하는 eps 파일에 포함되지 않기 때문에 이러한 포함이 필요하다.
참고 항목
참조
- Hagen, Hans. "MetaFun" (modules for Metapost).
- Knuth, Donald (1986). The METAFONTbook. Computers and Typesetting. Vol. C. Addison-Wesley. ISBN 0-201-13444-6.
- "Comprehensive TEX Archive Network" (CTAN). Repository of the TEX source and hundreds of add-ons and style files.
- "(La)TeX Navigator provides 305 simple MetaPost examples". Archived from the original on 2013-07-27. Retrieved 2006-11-17.
- Hoekwater, Taco (2006). "MetaPost developments—autumn 2006" (PDF). TUGboat. 27 (1).
외부 링크
- TeX 사용자 그룹(TUG) http://www.tug.org/에는 MetaPost 전용 페이지가 있다. http://www.tug.org/metapost.html
- 메타포스트의 적극적인 개발은 https://web.archive.org/web/20070929092912/http:///foundry.supelec.fr/projects/metapost/에서 계속된다.
- 기능성 메타포스트(Functional MetaPost)는 기능 프로그래밍 언어 하스켈에서 메타포스트(MetaPost)를 사용할 수 있다.
- John D. Havior는 https://web.archive.org/web/20131003040005/http://ect.bell-labs.com/who/hobby/index.shtml에 홈페이지와 MetaPost에 전념하는 다른 페이지와 출판물들을 가지고 있다. 비록 이것들은 이제 조금 오래된 것이긴 하지만.
- Historic MetaPost 홈페이지: https://web.archive.org/web/20081212090123/http://ect.bell-labs.com/who/hobby/MetaPost.shtml
- MetaPost John D에 대한 사용 설명서취미. 메타 포스트와 함께 배포된 파일 mpman.ps 또는 Bell Labs 웹 사이트에서 이용할 수 있다.CTAN에서 PDF 형식으로 제공됨.
- 트로이 헨더슨의 온라인 메타포스트 프리뷰러