MetaPost

Lenguaje de programación
MetaPost
Paradigmaimperativo , tipografía
Diseñado porJuan D. Hobby
ReveladorTaco Hoekwater, Luigi Scarso
Apareció por primera vez1994 ( 1994 )
Versión estable
1.8 / 17 de junio de 2013 ; hace 11 años ( 17 de junio de 2013 )
Versión preliminar
2.0rc2 / 19 de febrero de 2018 ; hace 6 años ( 19-02-2018 )
Disciplina de mecanografíapato , dinámico , fuerte
Sistema operativoMultiplataforma
LicenciaLicencia LGPL
Sitio webtug.org/metapost
Influenciado por
Metafont

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.

Ejemplos de salidas
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  concolor  ( 1 , 1 , 0.2 );  dibujar  z1t --- z2t  concolor  . 5 blanco ;  dibujar  z3t --- z4t  concolor  . 5 blanco ;  recoger  lápiz círculo ;  dibujar  p0t  discontinuo  conpuntos  escalado  . 3 ;  dibujar  p1t  discontinuo  uniformemente ;  dibujar  p2t  concolor  azul ;  dibujar  p3t  concolor  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).
  • El grupo de usuarios de TeX ( TUG ) http://www.tug.org/ tiene una página dedicada a MetaPost: http://www.tug.org/metapost.html
Obtenido de "https://es.wikipedia.org/w/index.php?title=MetaPost&oldid=1225613761"