MetaPost

aus Wikipedia, der freien Enzyklopädie
(Weitergeleitet von Metapost)
Zur Navigation springen Zur Suche springen
MetaPost
MetaPost-Logo
Basisdaten
Hauptentwickler Taco Hoekwater
Entwickler John D. Hobby
Erscheinungsjahr 1994
Aktuelle Version 1.212
(18. Oktober 2010)
Aktuelle Vorabversion 1.902
(23. April 2014)
Betriebssystem Plattformübergreifend
Programmier­sprache C
Kategorie Schriftsatz
Lizenz LGPL
foundry.supelec.fr/projects/metapost/

MetaPost ist zum einen eine Programmiersprache und zum anderen der einzig bekannte Interpreter für diese. Beide sind von Donald E. Knuths Metafont-Sprache und -Interpreter abgeleitet. MetaPost kann Diagramme in PostScript oder als SVG-Vektorgrafik aus einer geometrischen/algebraischen Beschreibung erzeugen. Die Sprache hat die gleiche Syntax wie Metafont, um Linien, Kurven, Punkte und geometrische Transformationen zu erzeugen.

Gegenüberstellung von Metafont und MetaPost

[Bearbeiten | Quelltext bearbeiten ]
  • Metafont ist zur Produktion von Schriften mit den dazu assoziierten Fontmetric-Dateien erschaffen. MetaPost hingegen erzeugt PostScript-Dateien.
  • Die Ausgabe von Metafont besteht aus Schriften bei einer bestimmten Auflösung in einem rasterbasierten Format. MetaPost erzeugt vektorbasierte Grafiken.
  • Im Gegensatz zu den monochromen Ausgaben von Metafont nutzt MetaPost ein einfaches RGB-Schema.
  • MetaPost kann auch Label an Diagramme anbringen. Dies können Texte aus einer angegebenen Schrift oder einfach alles, was mit TeX gesetzt werden kann, sein.
  • Der Metafont-Interpreter wurde von Knuth unter einer Open-Source-Lizenz entwickelt. Dies erlaubte John D. Hobby, den Interpreter zu seinem Nutzen zu adaptieren, somit entstand MetaPost.

MetaPost wird mit vielen Distributionen von TeX bzw. Metafont ausgeliefert. Die Ausgabe von MetaPost kann leicht in TeX-, ConTeXt- und LaTeX-Dokumenten über Standardkommandos benutzt werden.

Dies ist eine einzelne Datei example.mp, die drei EPS-Dateien erzeugt. Zur Bearbeitung der Eingabedatei ist der Befehl mpost DATEINAME aufzurufen.

transformpagecoords;
pagecoords:=identityscaled10mmshifted(100mm,150mm);
beginfig(1)
fill((0,0)--(2,0)--(2,1)--(1,1)--(1,2)--(0,2)--cycle)
transformedpagecoordswithcolorgreen;
draw((2,0)..(2,1)..(1,1)..(1,2)..(0,2))
transformedpagecoords;
drawarrow((0,0)--(2,2))transformedpagecoords;
endfig;
beginfig(2)
draw(for i=0 upto 7: dir(135i)-- endfor cycle)
transformedpagecoords;
endfig;
pagecoords:=identityscaled15mmshifted(100mm,150mm);
beginfig(3);
% declare paths to be used
pathp[],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=fullcircleyscaled.5rotated45shiftedz0;
p1=z2--z4..z0..z3---z1;
p2=p1cutbeforep0cutafterp0;
p3=p0cutbeforep1cutafterp1;
p4=p2--p3--cycle;
% define transformed versions of paths and points
fori=0upto4:p[i]t=p[i]transformedpagecoords;endfor
fori=0upto5:z[i]t=z[i]transformedpagecoords;endfor
% do some drawing
fillp4twithcolor(1,1,0.2);
drawz1t--z2twithcolor.5white;
drawz3t--z4twithcolor.5white;
pickuppencircle;
drawp0tdashedwithdotsscaled.3;
drawp1tdashedevenly;
drawp2twithcolorblue;
drawp3twithcolorred;
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);
fori=0upto4:
drawdotz[i]twithpenpencirclescaled2;
endfor
endfig;
bye
Abgerufen von „https://de.wikipedia.org/w/index.php?title=MetaPost&oldid=206202808"