MetaPost
| MetaPost
| |
|---|---|
|
| |
| Datos básicos
| |
| Mantenedor | Taco Hoekwater |
| desarrollador | John D. Hobby |
| Año de publicación | 1994 |
| Versión actual | 1.212 (18 de octubre de 2010) |
| Versión preliminar actual | 1.902 (23 de abril de 2014) |
| sistema operativo | Multiplataforma |
| lenguaje de programación | C. |
| categoría | Suplicando |
| Licencia | LGPL |
| foundry.supelec.fr/projects/metapost/ | |
MetaPost es, por un lado, un lenguaje de programación y, por otro lado, el único intérprete conocido para él. Ambos se derivan del lenguaje e intérprete Metafont de Donald E. Knuth . MetaPost puede generar diagramas en PostScript o como gráficos vectoriales SVG a partir de una descripción geométrica / algebraica. El lenguaje tiene la misma sintaxis que Metafont para crear líneas, curvas, puntos y transformaciones geométricas.
Comparación de Metafont y MetaPost
- Metafont fue creado para la producción de fuentes con los archivos Fontmetric asociados. MetaPost, por otro lado, crea archivos PostScript.
- La salida de Metafont consta de fuentes con una determinada resolución en un formato de trama. MetaPost crea gráficos basados en vectores.
- A diferencia de las versiones monocromáticas de Metafont, MetaPost utiliza un esquema RGB simple .
- MetaPost también puede adjuntar etiquetas a los diagramas. Estos pueden ser textos de una fuente específica o simplemente cualquier cosa que se pueda configurar con TeX .
- El intérprete Metafont fue desarrollado por Knuth bajo una licencia de código abierto. Esto permitió a John D. Hobby adaptar el intérprete para su uso, creando así MetaPost.
utilizar
MetaPost se suministra con muchas distribuciones de TeX y Metafont. La salida de MetaPost se puede utilizar fácilmente en documentos TeX, ConTeXt y LaTeX mediante comandos estándar.
Ejemplos
Este es un solo archivo example.mpque crea tres archivos EPS. Se debe mpost DATEINAMEllamar al comando para editar el archivo de entrada .
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
literatura
- Donald E. Knuth : El METAFONTbook. (Computadoras y composición tipográfica, Vol. C), Addison-Wesley 1986, ISBN 0-201-13445-4 .
- Walter Entenmann: METAPOST - gráficos para TeX y LaTeX, DANTE eV y Lehmanns Media 2016, ISBN 978-3-86541-902-6 .
