Metapost
MetaPost se refiere 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 se establece para producir fuentes, en forma de archivos de imagen (en formato gf) con archivos métricos de fuentes asociados (en formato tfm), mientras que MetaPost produce archivos EPS, SVG o PNG
- La salida de Metafont consiste en las fuentes en una resolución fija en un formato basado en raster, mientras que la salida de MetaPost es gráficos basados en vectores (líneas, curvas Bézier)
- La salida de metafont es monocromo, mientras que MetaPost utiliza colores RGB o CMYK.
- El idioma MetaPost puede incluir etiquetas de texto en los diagramas, ya sea cadenas de una fuente especificada, o cualquier otra cosa que pueda ser de tipo con TeX.
- Empezando con la versión 1.8, Metapost permite aritmética de punto flotante con 64 bits (por defecto: 32 bits de punto fijo aritmético)
Muchas de las limitaciones de MetaPost se derivan de las funciones de Metafont. Por ejemplo, MetaPost no admite todas las funciones de PostScript. En particular, las rutas pueden tener solo 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 distribuciones del framework TeX y Metafont, por ejemplo, se incluye en las distribuciones MiKTeX y TeX Live.
La posdata encapsulada producida por Metapost se puede incluir en documentos LaTeX, ConTeXt y TeX a través de comandos de inclusión de gráficos estándar. La salida postscript encapsulada también se puede utilizar con el motor PDFTeX, lo que genera PDF directamente. Esta capacidad se implementa en ConTeXt y en el paquete de gráficos LaTeX, y se puede usar desde TeX simple a través del archivo de macros supp-pdf.tex.
ConTeXt y LuaTeX admiten la inclusión de código MetaPost en el archivo de entrada. La inclusión de código MetaPost en LaTeX también es posible mediante el uso de paquetes LaTeX, por ejemplo, gmp
o mpgraphics
.
Ejemplos
Este es un único archivo example.mp que, cuando es procesado por el intérprete de MetaPost (mediante el comando mpost
en Linux), produce tres archivos eps example.1 , ejemplo.2, ejemplo.3. Estos se muestran a la derecha.
transformación pagecoords;pagecoords:=identidad escalada 10mm cambiado ()100mm,150mm);startfig ()1) relleno ()0,0)--()2,0)--()2,1)--()1,1)--()1,2)--()0,2)--ciclo) transformada pagecoords concolor verde; dibujo ()2,0).2,1).1,1).1,2).0,2) transformada pagecoords; ♪ ()0,0)--()2,2) transformada pagecoords;endfig;startfig ()2) dibujo ()para i=0 arriba 7: dir ()135i)-- endfor ciclo) transformada pagecoords;endfig;pagecoords:=identidad escalada 15mm cambiado ()100mm,150mm);startfig ()3); % declara caminos para ser utilizados sendero p[],p[]t; % set up points by defining relations z1=0,0); z2=z1+2arriba; 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]; % configurado caminos p0=fullcircle yscaled .5 rotativa 45 cambiado z0 ; p1=z2-...z4..z0..z3-...z1; p2=p1 antes p0 cortado p0; p3=p0 antes p1 cortado p1; p4=p2-...p3-...ciclo; % define versiones transformadas de caminos y puntos para i=0 arriba 4: p[i]t=p[i] transformada pagecoords; endfor para i=0 arriba 5: z[i]t=z[i] transformada pagecoords; endfor % hacer un dibujo relleno p4t concolor ()1,1,0.2); dibujo z1t-...z2t concolor .5blanco; dibujo z3t-...z4t concolor .5blanco; Pickup pencircle; dibujo p0t Destrozado condominios escalada .3; dibujo p1t Destrozado uniformemente; dibujo p2t concolor azul; dibujo p3t concolor rojo; etiqueta.# Irt ()btex $z_0$ etex, z0t); etiqueta.llft ()btex $z_1$ etex, z1t); etiqueta.arriba ()btex $z_2$ etex, z2t); etiqueta.rt ()btex $z_3$ etex, z3t); etiqueta.llft ()btex $z_4$ etex, z4t); para i=0 arriba 4: drawdot z[i]t conpensión pencircle escalada 2; endforendfig;bye
Los tres archivos eps resultantes se pueden usar en TeX mediante el comando includegraphics
de LaTeX, externalfigure
de ConTeXt, Plain TeX' s Comando epsfbox
, o (en pdftex simple) el comando convertMPtoPDF
de supp-pdf.tex. Para 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 por defecto.
Contenido relacionado
Guillermo Stanley Jr.
Televisión terrestre
Patrón de iterador