MetaPost | ||
---|---|---|
![]() | ||
Información general | ||
Desarrollador | Taco Hoekwater (Autor: John D. Hobby) | |
Lanzamiento inicial | 1994 | |
Licencia | Public Domain | |
Versiones | ||
Última versión estable | 1.001( 14 de noviembre de 2007) | |
Enlaces | ||
MetaPost constituye unlenguaje de programación y el únicointérprete del lenguaje de programación MetaPost. Ambos han sido derivados a partir del lenguaje y del intérprete deMetafont, creados porDonald Knuth. MetaPost produce diagramas utilizando el lenguaje de programaciónPostScript a partir de una descripción geométrico-algebraica. MetaPost comparte la sintaxis declarativa de Metafont para manipularlíneas,curvas,puntos ytransformaciones geométricas. Sin embargo,
MetaPost se distribuye incluido en muchas de las distribuciones deTeX yMefafont. Aparece, por ejemplo, en la distribuciónteTeX, común en plataformasLinux yUnix (incluyendoMac OS X).
Elpostscript encapsulado producido por MetaPost se puede incluir fácilmente en documentosTeX,ConTeXt yLaTeX a través de órdenes estándar de inclusión de eps. Es particularmente útil la habilidad de incluir esta salida enPdfTeX, dialecto de TeX, de manera que se obtiene un formato de documento multiplataforma desde TeX en un único paso. Esta habilidad aparece implementada en ConTeXt y en el paquete de gráficos de LaTeX y puede ser utilizada desde TeX gracias a la macrosupp-pdf.tex. ConTeXt también permite la creación de archivos MetaPost sin la necesidad de crear un archivo TeX.
A continuación aparece el contenido del archivoexample.mp. Cuando es procesado por el intérprete de MetaPost (utilizando la ordenmpost enLinux), se producen tres archivos de imagen eps:example.1,example.2 yexample.3, que aparecen a la derecha.
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; endforendfig;bye
Los tres archivos eps resultantes se pueden incluir enLaTeX usando la orden\includegraphics, enConTeXt\externalfigure y en simpleTeX utilizando\epsfbox o en simplepdfTeX\convertMPtoPDF contenido ensupp-pdf.tex. Para ver o imprimir el tercer diagrama, es necesario incluir el macrosupp-pdf.tex ya que las fuentes de TeX no se incluyen en los archivoseps generados por MetaPost.