MetaPost

MetaPost
MPlogo.svg
Paradigm imperativ , typsättning
Designad av John D. Hobby
Utvecklare Taco Hoekwater, Luigi Scarso
Dök först upp 1994 ( 1994 )
Stabil frisättning
1.8 / 17 juni 2013 ; 9 år sedan ( 2013-06-17 )
Förhandsgranska release
2.0rc2 / 19 februari 2018 ; 5 år sedan ( 2018-02-19 )
Maskinskrivningsdisciplin anka , dynamisk , stark
OS Cross-plattform
Licens LGPL
Hemsida tug .org /metapost
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 Linux ) producerar tre eps-filer exempel.1 , exempel.2 , exempel.3 . Dessa är avbildade till höger.

exempel på utgångar
 
    
 
     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