MetaPost
Paradigm | imperativ , typsättning |
---|---|
Designad av | John D. Hobby |
Utvecklare | Taco Hoekwater, Luigi Scarso |
Dök först upp | 1994 |
Stabil frisättning | 1.8 / 17 juni 2013
|
Förhandsgranska release | 2.0rc2 / 19 februari 2018
|
Maskinskrivningsdisciplin | anka , dynamisk , stark |
OS | Cross-plattform |
Licens | LGPL |
Hemsida | |
Influerad av | |
Metafont |
MetaPost avser både ett programmeringsspråk och tolken av MetaPosts programmeringsspråk. Båda är härledda från Donald Knuths Metafont - språk och tolk. MetaPost producerar vektorgrafiska diagram från en geometrisk/algebraisk beskrivning. Språket delar Metafonts deklarativa syntax för att manipulera linjer, kurvor, punkter och geometriska transformationer. Dock,
- Metafont är inställt för att producera teckensnitt, i form av bildfiler (i .gf-format) med tillhörande teckensnittsmetriska filer (i .tfm-format), medan MetaPost producerar EPS- , SVG- eller PNG -filer
- Utdata från Metafont består av typsnitt med en fast upplösning i ett rasterbaserat format, medan MetaPosts utdata är vektorbaserad grafik (linjer, Bézier-kurvor )
- Metafont-utdata är monokrom, medan MetaPost använder RGB- eller CMYK -färger.
- MetaPost-språket kan inkludera textetiketter på diagrammen, antingen strängar från ett specificerat teckensnitt eller något annat som kan sättas in med TeX .
- Från och med version 1.8 tillåter Metapost aritmetik med flyttal med 64 bitar (standard: 32 bitars aritmetik med fast punkt)
Många av begränsningarna i MetaPost härrör från funktioner i Metafont. MetaPost stöder till exempel inte alla funktioner i PostScript . Mest anmärkningsvärt är att banor bara kan ha ett segment (så att regioner helt enkelt ansluts ), och regioner kan endast fyllas med enhetliga färger. PostScript nivå 1 stöder sida vid sida och PostScript 3 stöder Gouraud-skuggning .
Tillgänglighet och användning
MetaPost distribueras med många distributioner av TeX- och Metafont-ramverket, till exempel ingår det i MiKTeX- och TeX Live- distributionerna.
Det inkapslade postscriptet som produceras av Metapost kan inkluderas i LaTeX- , ConTeXt- och TeX- dokument via standardkommandon för inkludering av grafik. Den inkapslade postscript-utgången kan också användas med PDFTeX- motorn, vilket ger PDF direkt . Denna förmåga är implementerad i ConTeXt och i LaTeX-grafikpaketet, och kan användas från vanlig TeX via makrofilen supp-pdf.tex.
ConTeXt och LuaTeX stöder inkluderingen av MetaPost-kod i inmatningsfilen. Inkludering av MetaPost-kod i LaTeX är också möjligt genom att använda LaTeX-paket, till exempel gmp
eller mpgraphics
.
Exempel
Detta är en enskild fil exempel.mp som när den bearbetas av MetaPost-tolken (via kommandot mpost
på Linux ) producerar tre eps-filer exempel.1 , exempel.2 , exempel.3 . Dessa är avbildade till höger.
0000
00
00
0
00
0
0
0
transformera pagecoords ; pagecoords := identitet skalad 10 mm skiftad ( 100 mm , 150 mm ); beginfig ( 1 ) fyll (( , ) -- ( 2 , ) -- ( 2 , 1 ) -- ( 1 , 1 ) -- ( 1 , 2 ) -- ( , 2 ) -- cykel ) transformerade sidkoordinater med grön färg ; rita (( 2 , )..( 2 , 1 )..( 1 , 1 )..( 1 , 2 )..( , 2 )) transformerade sidkoordinater ; drawarrow (( , ) -- ( 2 , 2 )) transformerade pagecoords ; endfig ; beginfig ( 2 ) rita ( för i = upp till 7 : dir ( 135 i ) - slutför cykel ) transformerade sidkoordinater ; endfig ; pagecoords := identitet skalad 15 mm skiftad ( 100 mm , 150 mm ); startfig ( 3 ); % deklarerar att sökvägar ska användas sökväg p [], p [] t ; % sätter upp punkter genom att definiera relationer z1 =( , ) ; z2 = z1 + 2 upp ; z3 = z1 + whatever * dir ( 60 )= z2 + whatever * dir ( - 50 ); z4 = z3 + ( -1,5 , -.5 ) ; _ _ z5 = zl + dir ( 135 ); z0 = whatever [ z1 , z2 ]= whatever [ z3 , z4 ]; % inställda banor p0 = helcirkel yskalad . 5 roterade 45 skiftade z0 ; p1 = z2 --- z4 .. z0 .. z3 --- z1 ; p2 = p1 skär före p0 skär efter p0 ; p3 = p0 klipp före p1 klipp efter p1 ; p4 = p2 --- p3 --- cykel ; % definierar transformerade versioner av banor och punkter för i = upp till 4 : p [ i ] t = p [ i ] transformerade pagecoords ; endfor för i = upp till 5 : z [ i ] t = z [ i ] transformerade sidkoordinater ; slutför % gör någon ritning fyll p4t med färg ( 1 , 1 , 0,2 ); rita z1t --- z2t med färg . 5 vita ; rita z3t --- z4t med färg . 5 vita ; pickup penncirkel ; rita p0t streckade med prickar skalad . 3 ; rita p1t streckat jämnt ; rita p2t med färg blå ; rita p3t med röd färg ; etikett . lrt ( btex $ z_0 $ etex , z0t ); etikett . llft ( btex $ z_1 $ etex , z1t ); etikett . topp ( btex $ z_2 $ etex , z2t ); etikett . rt ( btex $ z_3 $ etex , z3t ); etikett . llft ( btex $ z_4 $ etex , z4t ); för i = upp till 4 : drawdot z [ i ] t med penna penncirkel skalad 2 ; endfor endfig ; Hejdå
De resulterande tre eps-filerna kan användas i TeX via LaTeX :s \includegraphics-
kommando, ConTeXts \externalfigure
, Plain TeX: s \epsfbox
-kommando eller (i vanlig pdftex) kommandot \convertMPtoPDF
från supp-pdf.tex . För att se eller skriva ut det tredje diagrammet är denna inkludering nödvändig, eftersom TeX-teckensnitten ( Computer Modern ) inte ingår i eps-filerna som produceras av MetaPost som standard.
Se även
- Hagen, Hans. "MetaFun" (moduler för Metapost).
- Knuth, Donald (1986). METAFONT- boken . Datorer och typsättning . Vol. C. Addison-Wesley . ISBN 0-201-13444-6 .
- "Omfattande T E X-arkivnätverk" ( CTAN ). Lagring av T E X-källan och hundratals tillägg och stilfiler.
- "(La)TeX Navigator ger 305 enkla MetaPost-exempel" . Arkiverad från originalet 2013-07-27 . Hämtad 2006-11-17 .
- Hoekwater, Taco (2006). "MetaPost-utvecklingen—hösten 2006" (PDF) . bogserbåt . 27 (1).
externa länkar
- TeX Users Group ( TUG ) http://www.tug.org/ har en sida ägnad åt MetaPost: http://www.tug.org/metapost.html
- Den aktiva utvecklingen av MetaPost fortsätter på https://web.archive.org/web/20070929092912/http://foundry.supelec.fr/projects/metapost/
- Funktionell MetaPost tillåter att MetaPost kan användas från det funktionella programmeringsspråket Haskell
- John D. Hobby har en hemsida på https://web.archive.org/web/20131003040005/http://ect.bell-labs.com/who/hobby/index.shtml och några andra sidor och publikationer som ägnas åt MetaPost , även om dessa nu är lite daterade
- Historisk MetaPost-hemsida: https://web.archive.org/web/20081212090123/http://ect.bell-labs.com/who/hobby/MetaPost.shtml
- En användarmanual för MetaPost John D. Hobby. Tillgänglig som en fil mpman.ps distribuerad med MetaPost, eller från Bell Labs webbplats . Finns även i PDF-format från CTAN .
- Troy Hendersons Online MetaPost Previewer