MetaPost se refiere tanto a un lenguaje de programación como al intérprete del lenguaje de programación MetaPost. Ambos derivan del lenguaje e intérprete Metafont de Donald Knuth . MetaPost produce diagramas gráficos vectoriales a partir de una descripción geométrica/algebraica. El lenguaje comparte la sintaxis declarativa de Metafont para manipular líneas, curvas, puntos y transformaciones geométricas. Sin embargo,
- Metafont está configurado para producir fuentes en forma de archivos de imagen (en formato .gf) con archivos de métricas de fuente asociados (en formato .tfm), mientras que MetaPost produce archivos EPS , SVG o PNG.
- La salida de Metafont consiste en las fuentes a una resolución fija en un formato basado en ráster, mientras que la salida de MetaPost son gráficos basados en vectores (líneas, curvas de Bézier ).
- La salida de Metafont es monocromática, mientras que MetaPost utiliza colores RGB o CMYK .
- El lenguaje MetaPost puede incluir etiquetas de texto en los diagramas, ya sean cadenas de una fuente específica o cualquier otra cosa que se pueda componer tipográficamente con TeX .
- A partir de la versión 1.8, Metapost permite la aritmética de punto flotante de 64 bits (por defecto: aritmética de punto fijo de 32 bits).
Muchas de las limitaciones de MetaPost derivan de las características de Metafont. Por ejemplo, MetaPost no admite todas las características de PostScript . En particular, los trazados solo pueden tener un segmento (de modo que las regiones simplemente se conectan ) y las regiones solo se pueden rellenar con colores uniformes. PostScript nivel 1 admite patrones en mosaico y PostScript 3 admite sombreado Gouraud .
Disponibilidad y uso
MetaPost se distribuye con muchas versiones del framework TeX y Metafont; por ejemplo, está incluido en las distribuciones MiKTeX y TeX Live .
El PostScript encapsulado generado por Metapost puede incluirse en documentos LaTeX , ConTeXt y TeX mediante comandos estándar de inclusión de gráficos. La salida PostScript encapsulada también puede utilizarse con el motor PDFTeX , generando así directamente un PDF . Esta funcionalidad está implementada en ConTeXt y en el paquete de gráficos de LaTeX, y puede utilizarse desde TeX estándar mediante el archivo de macro supp-pdf.tex.
ConTeXt y LuaTeX admiten la inclusión de código MetaPost dentro del archivo de entrada. La inclusión de código MetaPost en LaTeX también es posible mediante el uso de paquetes de LaTeX, por ejemplo gmpo mpgraphics.
Ejemplos
Este es un archivo único.ejemplo.mpque, al ser procesado por el intérprete de MetaPost (mediante el comando mposten Linux ), produce tres archivos eps.Ejemplo 1,Ejemplo 2,Ejemplo 3Estas se muestran en la imagen de la derecha.

transform pagecoords ; pagecoords := identity scaled 10 mm shifted ( 100 mm , 150 mm ); 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 ( 135 i ) -- endfor cycle ) transformed pagecoords ; endfig ; pagecoords := identity scaled 15 mm shifted ( 100 mm , 150 mm ); beginfig ( 3 ); % declarar rutas a usar path p [], p [] t ; % establecer puntos definiendo relaciones z1 =( 0 , 0 ); z2 = z1 + 2 up ; 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 ]; % configurar rutas 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 ; % definir versiones transformadas de rutas y puntos para i = 0 hasta 4 : p [ i ] t = p [ i ] transformed pagecoords ; fin para para i = 0 hasta 5 : z [ i ] t = z [ i ] transformed pagecoords ; fin del % hacer algún dibujo rellenar p4t con color ( 1 , 1 , 0.2 ); dibujar z1t --- z2t con color . 5 blanco ; dibujar z3t --- z4t con color . 5 blanco ; recoger lápiz círculo ; dibujar p0t punteado con puntos escalado . 3 ; dibujar p1t punteado uniformemente ; dibujar p2t con color azul ; dibujar p3t con color rojo; etiqueta . lrt ( btex $ z_0 $ etex , z0t ); etiqueta . llft ( btex $ z_1 $ etex , z1t ); etiqueta . top ( btex $ z_2 $ etex , z2t ); etiqueta . rt ( btex $ z_3 $ etex , z3t ); etiqueta . llft ( btex $ z_4 $ etex , z4t ); para i = 0 hasta 4 : dibujar punto z [ i ] t con pluma círculo escalado 2 ; fin para fin figura ; adiósLos tres archivos eps resultantes se pueden usar en TeX a través del comando de LaTeX\includegraphics , el comando de ConTeXt\externalfigure , el comando de Plain TeX \epsfboxo (en Plain pdftex) el \convertMPtoPDFcomando desupp-pdf.texPara ver o imprimir el tercer diagrama, es necesario incluir esta fuente, ya que las fuentes TeX ( Computer Modern ) no están incluidas en los archivos eps producidos por MetaPost de forma predeterminada.
Véase también
- Trucos de PST
- PGF/TikZ
- METATIPO1
- Asíntota
Referencias
- Hagen, Hans. "MetaFun" (módulos para Metapost).
- Knuth, Donald (1986). The METAFONTbook . Computers and Typesetting . Vol. C. Addison-Wesley . ISBN 0-201-13444-6.
- " Red Integral de Archivos TEX " ( CTAN ). Repositorio del código fuente TEX y cientos de complementos y archivos de estilo.
- "(La)TeX Navigator proporciona 305 ejemplos sencillos de MetaPost" . Archivado del original el 27/07/2013 . Consultado el 17/11/2006 .
- Hoekwater, Taco (2006). "Desarrollos de MetaPost: otoño de 2006" (PDF) . TUGboat . 27 (1).
Enlaces externos
- El Grupo de Usuarios de TeX ( TUG ) http://www.tug.org/ tiene una página dedicada a MetaPost: http://www.tug.org/metapost.html
- Lenguajes de programación creados en 1994
- lenguajes de programación declarativos
- Lenguajes de programación específicos de dominio
- Software TeX gratuito
- Posdata
- Software de dominio público
- Lenguajes de marcado de gráficos vectoriales