MetaPost

MetaPost i​st zum e​inen eine Programmiersprache u​nd zum anderen d​er einzig bekannte Interpreter für diese. Beide s​ind von Donald E. Knuths Metafont-Sprache u​nd -Interpreter abgeleitet. MetaPost k​ann Diagramme i​n PostScript o​der als SVG-Vektorgrafik a​us einer geometrischen/algebraischen Beschreibung erzeugen. Die Sprache h​at die gleiche Syntax w​ie Metafont, u​m Linien, Kurven, Punkte u​nd geometrische Transformationen z​u erzeugen.

MetaPost
Basisdaten
Maintainer 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/

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 w​ird mit vielen Distributionen v​on TeX bzw. Metafont ausgeliefert. Die Ausgabe v​on MetaPost k​ann leicht i​n TeX-, ConTeXt- u​nd LaTeX-Dokumenten über Standardkommandos benutzt werden.

Beispiele

Dies i​st eine einzelne Datei example.mp, d​ie drei EPS-Dateien erzeugt. Zur Bearbeitung d​er Eingabedatei i​st 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.
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. The authors of the article are listed here. Additional terms may apply for the media files, click on images to show image meta data.