메타포스트
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
메타포스트는 TeX 및 메타폰트 프레임워크와 함께 배포되는 그래픽스 언어이다. 생성된 캡슐화된 포스트스크립트는 LaTeX, ConTeXt, TeX 문서에 포함될 수 있으며, PDFTeX 엔진을 사용하여 직접 PDF를 생성할 수도 있다. ConTeXt와 LuaTeX는 메타포스트 코드의 직접 포함을 지원하며, LaTeX 패키지를 통해 LaTeX 문서 내에 코드를 포함하는 것도 가능하다. mpost 명령어를 통해 처리된 파일은 TeX 문서에 삽입할 수 있는 EPS 파일을 생성한다.
더 읽어볼만한 페이지
- 포스트스크립트 - 고스트스크립트
고스트스크립트는 포스트스크립트 인터프리터로서 래스터 이미지 프로세서, 프린터 엔진, 뷰어, 파일 변환기 등으로 사용되며 다양한 운영체제를 지원하고 AGPL 라이선스를 따르며 자유 글꼴을 포함한다. - 포스트스크립트 - 에빈스
에빈스는 GPdf를 대체하기 위해 개발된 문서 뷰어이며, 다양한 문서 형식을 지원하고 통합 검색, 페이지 미리보기 등의 기능을 제공한다. - 도메인 특화 프로그래밍 언어 - 도메인 특화 언어
도메인 특화 언어(DSL)는 특정 문제 영역에 특화된 프로그래밍 언어로, 외부 DSL, 내부 DSL, 시각적 다이어그램 언어 등으로 분류되며, 생산성 향상에 기여하지만 새로운 언어 학습의 필요성과 적용 분야의 제한이라는 특징을 가진다. - 도메인 특화 프로그래밍 언어 - G-code
G-코드는 1950년대 MIT에서 처음 구현된 수치 제어 공작 기계를 제어하는 프로그래밍 언어로서, 다양한 표준과 구현을 거쳐 발전해왔으며 현대에는 매크로 기능과 CAD/CAM 응용 프로그램과의 연동을 지원한다. - 퍼블릭 도메인 소프트웨어 - 미스터리 하우스
미스터리 하우스는 1980년 출시된 어드벤처 게임으로, 그래픽을 도입하여 혁신을 시도했으며, 버려진 저택에서 단서를 찾아 살인자를 밝혀내는 내용을 담고 있다. - 퍼블릭 도메인 소프트웨어 - ANTLR
ANTLR은 EBNF로 표현된 문법을 입력받아 렉서, 파서, 트리 파서 등 다양한 언어 인식기 소스 코드를 생성하는 파서 생성기이며, C#, Java, Python 등 여러 언어를 지원하고 깃허브에 다양한 문법이 공개되어 있다.
메타포스트 - [IT 관련 정보]에 관한 문서 | |
---|---|
기본 정보 | |
이름 | 메타포스트 |
![]() | |
설명 | 프로그래밍 언어 |
개발 정보 | |
패러다임 | 명령형 조판 |
발표일 | 1994년 |
설계자 | 존 D. 호비 |
개발자 | 타코 호크워터 루이지 스카르소 |
최신 안정화 버전 | 1.8 |
최신 안정화 버전 출시일 | 2013년 6월 17일 |
최신 미리보기 버전 | 2.0rc2 |
최신 미리보기 버전 출시일 | 2018년 2월 19일 |
타이핑 | 덕 동적 스트롱 |
구현체 | 해당사항 없음 |
방언 | 해당사항 없음 |
영향 받은 언어 | 메타폰트 |
영향을 준 언어 | 해당사항 없음 |
운영 체제 | 크로스 플랫폼 |
라이선스 | LGPL |
웹사이트 | 메타포스트 공식 웹사이트 |
파일 확장자 | 해당사항 없음 |
2. 사용법 및 활용
메타포스트는 TeX 및 메타폰트 프레임워크의 여러 배포판, 예를 들어 MiKTeX나 TeX Live 등에 기본적으로 포함되어 있어 쉽게 설치하고 사용할 수 있다.
메타포스트는 주로 캡슐화된 포스트스크립트(EPS) 형식의 그래픽 파일을 생성한다. 이렇게 생성된 EPS 파일은 LaTeX, ConTeXt, 일반 TeX 문서에 표준 그래픽 포함 명령을 이용하여 쉽게 삽입할 수 있다.
PDFTeX 엔진을 사용하면 메타포스트가 생성한 EPS 출력을 직접 PDF 형식으로 변환할 수도 있다. 이 기능은 ConTeXt나 LaTeX의 관련 그래픽 패키지에서 지원하며, 일반 TeX 환경에서는 `supp-pdf.tex` 매크로 파일을 통해 이용할 수 있다.
또한, ConTeXt나 LuaTeX 환경에서는 TeX 입력 파일 내에 메타포스트 코드를 직접 작성하여 포함시키는 것이 가능하다. LaTeX에서도 `gmp`나 `mpgraphics`와 같은 패키지를 사용하면 유사한 방식으로 메타포스트 코드를 문서 내에 통합할 수 있다.
2. 1. 예시
다음은 ''example.mp''라는 단일 파일을 메타포스트 인터프리터(리눅스의 '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 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
이렇게 생성된 3개의 EPS 파일은 TeX 문서에서 다음과 같은 명령어를 통해 사용할 수 있다.
- LaTeX: `\includegraphics`
- ConTeXt: `\externalfigure`
- Plain TeX: `\epsfbox`
- Plain pdfTeX: `supp-pdf.tex`의 `\convertMPtoPDF` (주로 pdfTeX 환경에서 사용)
특히 세 번째 그림처럼 TeX 글꼴(Computer Modern 등)을 사용한 경우, 해당 글꼴이 기본적으로 메타포스트에서 생성된 EPS 파일에 포함되지 않으므로, 위와 같은 방식으로 TeX 문서에 포함시켜야 글꼴이 올바르게 표시된다.
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com