MetaPost
| MetaPost | ||
|---|---|---|
|
| ||
| 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.
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
- Op de T E X Users Group ( TUG ) website http://www.tug.org/ staat een pagina die volledig aan MetaPost is gewijd . (in Engels)
- John D. Hobby heeft een webpagina op https://web.archive.org/web/20060206164643/http://cm.bell-labs.com/who/hobby/index.html en andere pagina's op MetaPost:
- MetaPost-website : https://web.archive.org/web/20041124024610/http://cm.bell-labs.com/who/hobby/MetaPost.html
- Een gebruikershandleiding voor MetaPost John D. Hobby. Beschikbaar als een mpman.ps -bestand dat samen met MetaPost wordt gedistribueerd, of van de Bell Labs-website . Ook beschikbaar in pdf-formaat via CTAN . (in Engels)
- MetaFun (modules voor Metapost) door Hans Hagen, [1 ]
- Donald Knuth : The Metafont BOOK , ( Computers en zetwerk Volume C) Addison-Wesley 1986 . ISBN 0-201-13444-6 .
