MetaPost
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,
Disponibilidad y utilizaciónMetaPost 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. EjemplosA 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énReferencias y enlaces externos
|