MetaPost hace referencia tanto a un lenguaje de programación como al intérprete del lenguaje de programación MetaPost. Ambos se 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 fuentes con una resolución fija en un formato basado en trama, 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 pueda componerse con TeX .
- A partir de la versión 1.8, Metapost permite aritmética de punto flotante con 64 bits (predeterminado: aritmética de punto fijo de 32 bits)
Muchas de las limitaciones de MetaPost se derivan de las características de Metafont. Por ejemplo, MetaPost no es compatible con todas las características de PostScript . En particular, los trazados solo pueden tener un segmento (de modo que las regiones están simplemente conectadas ) 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 distribuciones del framework TeX y Metafont, por ejemplo, está incluido en las distribuciones MiKTeX y TeX Live .
El postscript encapsulado producido por Metapost se puede incluir en documentos LaTeX , ConTeXt y TeX mediante comandos de inclusión de gráficos estándar. La salida del postscript encapsulado también se puede utilizar con el motor PDFTeX , lo que genera directamente PDF . Esta capacidad está implementada en ConTeXt y en el paquete de gráficos LaTeX, y se puede utilizar desde TeX simple 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 LaTeX, por ejemplo gmpo mpgraphics.
Ejemplos
Este es un solo archivoejemplo.mpque cuando es procesado por el intérprete de MetaPost (a través del comando mposten Linux ) produce tres archivos epsejemplo.1,ejemplo.2,ejemplo.3Estas se muestran a la derecha.

transformar pagecoords ;
pagecoords := identidad escalada 10 mm desplazada ( 100 mm , 150 mm );
beginfig ( 1 )
rellenar (( 0 , 0 ) -- ( 2 , 0 ) -- ( 2 , 1 ) -- ( 1 , 1 ) -- ( 1 , 2 ) -- ( 0 , 2 ) -- ciclo )
transformar pagecoords concolor verde ;
dibujar (( 2 , 0 ) ..( 2 , 1 ) ..( 1 , 1 ) ..( 1 , 2 ) ..( 0 , 2 )) transformar pagecoords ; dibujarflecha (( 0 , 0 ) -- ( 2 , 2 )) transformar pagecoords ; endfig ; beginfig ( 2 ) dibujar ( para i = 0 hasta 7 : dir ( 135 i ) -- fin del ciclo ) transformado pagecoords ; endfig ; pagecoords := identidad escalado 15 mm desplazado ( 100 mm , 150 mm ); beginfig ( 3 ); % declarar las rutas que se utilizarán path p [], p [] t ; % establecer puntos definiendo relaciones z1 =( 0 , 0 ); z2 = z1 + 2 up ; z3 = z1 + lo que sea * dir ( 60 )= z2 + lo que sea
* dir ( - 50 );
z4 = z3 + ( - 1.5 , - . 5 );
z5 = z1 + dir ( 135 );
z0 = lo que sea [ z1 , z2 ] = lo que sea [ z3 , z4 ];
% establecer rutas
p0 = círculo completo yscaled . 5 rotado 45 desplazado z0 ;
p1 = z2 --- z4 .. z0 .. z3 --- z1 ;
p2 = p1 cortar antes p0 cortar después p0 ;
p3 = p0 cortar antes p1 cortar después p1 ;
p4 = p2 --- p3 --- ciclo ;
% definir versiones transformadas de rutas y puntos
para i = 0 hasta 4 : p [ i ] t = p [ i ] transformadas pagecoords ; fin
para i = 0 hasta 5 : z [ i ] t = z [ i ] transformadas pagecoords ; fin para
% hacer un 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 discontinuo con puntos escalado . 3 ;
dibujar p1t discontinuo 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 de lápiz escalado 2 ;
fin para
fin de figura ;
adiós
Los tres archivos eps resultantes se pueden usar en TeX mediante el 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, esta inclusión es necesaria, 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
Referencias
- Hagen, Hans. "MetaFun" (módulos para Metapost).
- Knuth, Donald (1986). El libro METAFONT . Computadoras y composición tipográfica . Vol. C. Addison-Wesley . ISBN. 0-201-13444-6.
- Red Integral de Archivos TEX ( CTAN ). Repositorio del código fuente de T E X y cientos de complementos y archivos de estilo.
- "(La)TeX Navigator ofrece 305 ejemplos sencillos de MetaPost". Archivado desde el original el 27 de julio de 2013. Consultado el 17 de noviembre de 2006 .
- Hoekwater, Taco (2006). "Novedades en 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