close

MetaPost

Ga naar navigatie Ga naar zoeken
MetaPost
MPlogo.svg
Algemene informatie
ontwikkelaar Taco Hoekwater (Auteur: John D. Hobby)
Eerste uitgave 1994
Licentie Publiek domein
versies
Laatste stabiele versie 1,001 ( 2007-11-14 ) _ _
Links

MetaPost is een programmeertaal en de enige tolk voor de MetaPost programmeertaal. Beide zijn afgeleid van de Metafont- taal en -interpreter , gemaakt door Donald Knuth . MetaPost produceert diagrammen met behulp van de PostScript - programmeertaal van een geometrisch-algebraïsche beschrijving. MetaPost deelt de declaratieve syntaxis van Metafont voor het manipuleren van lijnen , krommen , punten en geometrische transformaties . Hoe dan ook,

  • Metafont is gemaakt om lettertypen te produceren in de vorm van afbeeldingsbestanden (in .gf-formaat) samen met bijbehorende meetbestanden (in .tfm-formaat), terwijl MetaPost Encapsulated PostScript -bestanden produceert .
  • De uitvoer van Metafont bestaat uit lettertypen met een bepaalde resolutie in een rasterformaat , terwijl de uitvoer van MetaPost een gevectoriseerde postscript -afbeelding is (lijnen, Bézier-curven ).
  • De uitvoer van Metafont is monochroom , terwijl MetaPost een RGB -specificatie gebruikt .
  • De MetaPost-taal kan tekstlabels in diagrammen bevatten, evenals tekstreeksen van een specifiek lettertype, of vrijwel alles dat met TeX kan worden getypt .
  • De Metafont-tolk is geschreven door Donald Knuth onder een open source-licentie , waardoor John D. Hobby (en later Ulrik Vieth ) de tolk voor zijn eigen doeleinden kon aanpassen en MetaPost kon verkrijgen.
  • MetaPost heeft geen aanbevolen logo en zelfs als dat wel het geval was, zou je waarschijnlijk op TeX moeten vertrouwen om het weer te geven .

Beschikbaarheid

MetaPost wordt gebundeld gedistribueerd met veel van de TeX- en Mefafont- distributies . Het komt bijvoorbeeld voor in de teTeX- distributie , gebruikelijk op Linux- en Unix -platforms (inclusief Mac OS X ).

Het ingekapselde postscript geproduceerd door MetaPost kan eenvoudig worden opgenomen in TeX- , ConTeXt- en LaTeX -documenten via standaard eps include-commando's. Bijzonder handig is de mogelijkheid om deze uitvoer op te nemen in PdfTeX , een dialect van TeX, zodat in één stap een cross-platform documentformaat wordt verkregen uit TeX. Deze mogelijkheid is geïmplementeerd in ConTeXt en in het LaTeX grafische pakket en kan worden gebruikt vanuit TeX dankzij de supp-pdf.tex macro . ConTeXt maakt het ook mogelijk MetaPost-bestanden te maken zonder dat een TeX-bestand hoeft te worden aangemaakt.

Voorbeelden

Hieronder staat de inhoud van het bestandvoorbeeld.mp. Wanneer verwerkt door de MetaPost-interpreter (met behulp van het commandompostop Linux ), worden drie eps-afbeeldingsbestanden geproduceerd:voorbeeld 1,voorbeeld.2Yvoorbeeld.3, die aan de rechterkant verschijnen.

Metapost ex.png
paginacoördinaten transformeren;
pagecoords:=identiteit geschaald 10 mm verschoven (100 mm, 150 mm);

beginfig (1)
    vullen ((0.0)--(2.0)--(2.1)--(1.1)--(1.2)--(0.2)--cyclus)
        getransformeerde paginacoördinaten met kleur groen;
    gelijkspel ((2.0)..(2.1)..(1.1)..(1.2)..(0.2))
        getransformeerde paginacoördinaten;
    drawarrow ((0,0)--(2,2)) getransformeerde paginacoördinaten;
eindfig;

beginfig (2)
    tekenen (voor i=0 t/m 7: dir (135i)-- endfor cycle)
        getransformeerde paginacoördinaten;
eindfig;
        
pagecoords:=identiteit geschaald 15 mm verschoven (100 mm, 150 mm);
beginfig(3);
    % declareren paden die moeten worden gebruikt
    pad p[], p[]t;
    % ingestelde punten door relaties te definiëren
    z1=(0,0); z2=z1+2omhoog;
    z3=z1+wat*dir(60)=z2+wat*dir(-50);
    z4=z3+(-1,5,-0,5);
    z5=z1+dir(135);
    z0=wat dan ook[z1,z2]=wat dan ook[z3,z4];
    % ingestelde paden
    p0=volledige cirkel yscaled .5 gedraaid 45 verschoven z0 ;
    p1=z2--z4..z0..z3---z1;
    p2=p1 knippen voor p0 knippen na p0;
    p3=p0 knippen voor p1 knippen na p1;
    p4=p2--p3--cyclus;
    % definieer getransformeerde versies van paden en punten
    voor i=0 t/m 4: p[i]t=p[i] getransformeerde paginacoördinaten; eindigen voor
    voor i=0 t/m 5: z[i]t=z[i] getransformeerde paginacoördinaten; eindigen voor
    % ga tekenen
    vul p4t metkleur (1,1,0.2);
    teken z1t--z2t metkleur .5wit;
    teken z3t--z4t metkleur .5wit;
    pick-up pencirkel;
    teken p0t gestippeld met stippen geschaald .3;
    teken p1t gelijkmatig gestippeld;
    teken p2t met kleur blauw;
    teken p3t met kleur rood;
    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);
    voor i=0 tot 4:
        tekenpunt z[i]t met pen pencirkel geschaald 2;
    eindigen voor
eindfig;
doei

De drie resulterende eps-bestanden kunnen in LaTeX worden opgenomen met het commando\inclusief afbeeldingen, in ConTeXt \externe figuuren in gewone TeX met behulp van\epsfboxof in gewone pdfTeX \convert MPtoPDFVerpakt insupp-pdf.tex. Om het derde diagram te bekijken of af te drukken, moet u de macro opnemensupp-pdf.texaangezien TeX-lettertypen niet zijn opgenomen in de eps -bestanden die door MetaPost worden gegenereerd.

Zie ook

Referenties en externe links