MetaPost
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 un lenguaje de programación y el único intérprete del lenguaje de programación MetaPost. Ambos han sido derivados a partir del lenguaje y del intérprete de Metafont, creados por Donald Knuth. MetaPost produce diagramas utilizando el lenguaje de programación PostScript a partir de una descripción geométrico-algebraica. MetaPost comparte la sintaxis declarativa de Metafont para manipular líneas, curvas, puntos y transformaciones geométricas. Sin embargo,
- Metafont ha sido creado para producir fuentes tipográficas, en forma de archivos de imagen (en formato .gf) junto con archivos de medición asociados (en formato .tfm), mientras que MetaPost produce archivos de PostScript encapsulado.
- La salida de Metafont consiste en fuentes a una determinada resolución en un formato rasterizado, mientras que la salida de MetaPost es un gráfico postscript vectorizado (líneas, curvas de Bézier).
- La salida de Metafont es monocroma, mientras que MetaPost utiliza una especificación RGB.
- El lenguaje MetaPost puede incluir etiquetas de texto en los diagramas, así como cadenas de texto de una fuente específica, o prácticamente todo lo que pueda ser tipografiado utilizando TeX.
- El intérprete de Metafont fue escrito por Donald Knuth bajo una licencia de código libre, permitiendo a John D. Hobby (y, más tarde, a Ulrik Vieth) la adaptación del intérprete a sus propios fines, obteniendo MetaPost.
- MetaPost no tiene un logotipo destacado y, aunque lo tuviera, posiblemente tendría que basarse en TeX para renderizarlo.
Disponibilidad y utilización
MetaPost se distribuye incluido en muchas de las distribuciones de TeX y Mefafont. Aparece, por ejemplo, en la distribución teTeX, común en plataformas Linux y Unix (incluyendo Mac OS X).
El postscript encapsulado producido por MetaPost se puede incluir fácilmente en documentos TeX, ConTeXt y LaTeX a través de órdenes estándar de inclusión de eps. Es particularmente útil la habilidad de incluir esta salida en PdfTeX, 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 macro supp-pdf.tex. ConTeXt también permite la creación de archivos MetaPost sin la necesidad de crear un archivo TeX.
Ejemplos
A continuación aparece el contenido del archivo example.mp. Cuando es procesado por el intérprete de MetaPost (utilizando la orden mpost en Linux), se producen tres archivos de imagen eps: example.1, example.2 y example.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; endfor endfig; bye
Los tres archivos eps resultantes se pueden incluir en LaTeX usando la orden \includegraphics, en ConTeXt \externalfigure y en simple TeX utilizando \epsfbox o en simple pdfTeX \convertMPtoPDF contenido en supp-pdf.tex. Para ver o imprimir el tercer diagrama, es necesario incluir el macro supp-pdf.tex ya que las fuentes de TeX no se incluyen en los archivos eps generados por MetaPost.
Véase también
Referencias y enlaces externos
- En la página web del grupo de usuarios de TEX (TUG) http://www.tug.org/, aparece una página dedicada íntegramente a MetaPost. (en inglés)
- John D. Hobby tiene una página web en https://web.archive.org/web/20060206164643/http://cm.bell-labs.com/who/hobby/index.html y otras páginas sobre MetaPost:
- Página web de MetaPost: https://web.archive.org/web/20041124024610/http://cm.bell-labs.com/who/hobby/MetaPost.html (en inglés)
- A User's Manual for MetaPost John D. Hobby. Disponible como un archivo mpman.ps distribuido junto con MetaPost, o desde Bell Labs web site. También disponible en formato pdf a través de CTAN. (en inglés)
- MetaFun (módulos para Metapost) por Hans Hagen, [1] (en inglés)
- Donald Knuth: The Metafont BOOK, (Computers and Typesetting Volumen C) Addison-Wesley 1986. ISBN 0-201-13444-6.