메타포스트

MetaPost
메타포스트
MPlogo.svg
패러다임명령적, 형식 지정
설계자존 D. 취미
개발자타코 회크워터, 루이지 스카르소
첫 등장1994 (1994)
안정적 해제
1.8 / 2013년 6월 17일; 8년(2013-06-17)
릴리스 미리 보기
2.0rc2 / 2018년 2월 19일; 4년(2018-02-19)
타이핑 규율오리, 다이나믹, 강인함
OS크로스 플랫폼
면허증LGPL
웹사이트tug.org/metapost
영향을 받은
메타폰트

메타포스트(MetaPost)는 프로그래밍 언어와 메타포스트 프로그래밍 언어의 인터프리터를 모두 말한다.도날드 크누스의 메타폰트 언어와 통역사로부터 파생된 것이다.MetaPost는 기하학적/알지브라틱한 설명으로부터 벡터 그래픽 다이어그램을 제작한다.이 언어는 선, 곡선, 점, 기하학적 변환을 조작하는 메타퐁의 선언적 구문을 공유한다.그러나

  • Metafont는 연결된 글꼴 메트릭 파일(.tfm 형식)이 있는 이미지 파일(.gf 형식)의 형태로 글꼴을 생성하도록 설정되어 있는 반면, MetaPost는 EPS, SVG 또는 PNG 파일을 생성한다.
  • 메타폰트의 출력은 래스터 기반 형식의 고정 해상도의 글꼴로 구성되는 반면, 메타포스트는 벡터 기반 그래픽(라인, 베지어 곡선)이다.
  • 메타폰 출력은 단색인 반면 메타포스트는 RGBCMYK 색상을 사용한다.
  • MetaPost 언어는 지정된 글꼴의 문자열 또는 TeX로 형식화할 수 있는 기타 모든 문자 레이블을 다이어그램에 포함할 수 있다.
  • 버전 1.8부터, 메타포스트는 64비트의 부동 소수점 산술(기본값: 32비트 고정 소수점 산술)을 허용한다.

메타포스트가 가진 많은 제한은 메타폰트의 특징에서 비롯된다.예를 들어, MetaPost는 PostScript의 모든 기능을 지원하지 않는다.가장 주목할 만한 것은, 경로는 (지역이 단순히 연결되도록) 한 부분만 가질 수 있고, 지역은 균일한 색상으로만 채울 수 있다는 점이다.포스트스크립트 레벨 1은 타일 패턴, 포스트스크립트 3는 구라드 쉐이딩을 지원한다.

가용성 및 사용

MetaPost는 TeXMetafont 프레임워크의 많은 배포와 함께 배포된다. 예를 들어, MiKteXTeX Live 배포에 포함된다.

메타포스트가 제작한 캡슐화된 후기는 표준 그래픽 포함 명령을 통해 LaTeX, ConTeXt, TeX 문서에 포함될 수 있다.캡슐화된 후스크립트 출력물은 PDFTeX 엔진과도 함께 사용할 수 있으므로 PDF를 직접 제공한다.이 기능은 ConTeXtLaTeX 그래픽 패키지에서 구현되며, suppdf.tex 매크로 파일을 통해 일반 TeX에서 사용할 수 있다.

ConTeXt와 LuaTeX는 입력 파일에 MetaPost 코드를 포함시킬 수 있도록 지원한다.LaTeX에 MetaPost 코드를 포함하는 것도 LaTeX-패키지(예: 또는 .)를 사용하여 가능하다.

이 파일은 MetaPost 통역자가 명령어를 통해 처리할 때 사용하는 단일 파일이다.mpostLinux에서)는 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).

외부 링크