MetaPost
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 |
Programmiersprache | 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.
Benutzung
[Bearbeiten | Quelltext bearbeiten ]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.
Beispiele
[Bearbeiten | Quelltext bearbeiten ]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
Literatur
[Bearbeiten | Quelltext bearbeiten ]- Donald E. Knuth: The METAFONTbook. (Computers & Typesetting, Vol. C), Addison-Wesley 1986, ISBN 0-201-13445-4.
- Walter Entenmann: METAPOST – Grafik für TeX und LaTeX, DANTE e.V. und Lehmanns Media 2016, ISBN 978-3-86541-902-6.