MetaPost
| MetaPost
| |
|---|---|
| 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
- 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
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
Dies ist eine einzelne Datei example.mp, die drei EPS-Dateien erzeugt. Zur Bearbeitung der Eingabedatei ist der Befehl mpost DATEINAME aufzurufen.
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
Literatur
- 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.
Weblinks
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.
