fbpx
Wikipedia

MetaPost

MetaPost refers to both a programming language and the interpreter of the MetaPost programming language. Both are derived from Donald Knuth's Metafont language and interpreter. MetaPost produces vector graphic diagrams from a geometric/algebraic description. The language shares Metafont's declarative syntax for manipulating lines, curves, points and geometric transformations. However,

  • Metafont is set up to produce fonts, in the form of image files (in .gf format) with associated font metric files (in .tfm format), whereas MetaPost produces EPS, SVG, or PNG files
  • The output of Metafont consists of the fonts at a fixed resolution in a raster-based format, whereas MetaPost's output is vector-based graphics (lines, Bézier curves)
  • Metafont output is monochrome, whereas MetaPost uses RGB or CMYK colors.
  • The MetaPost language can include text labels on the diagrams, either strings from a specified font, or anything else that can be typeset with TeX.
  • Starting with version 1.8, Metapost allows floating-point arithmetic with 64 bits (default: 32 bit fixed-point arithmetic)
MetaPost
Paradigmimperative, typesetting
Designed byJohn D. Hobby
DeveloperTaco Hoekwater, Luigi Scarso
First appeared1994 (1994)
Stable release
1.8 / 17 June 2013; 10 years ago (2013-06-17)
Preview release
2.0rc2 / 19 February 2018; 6 years ago (2018-02-19)
Typing disciplineduck, dynamic, strong
OSCross-platform
LicenseLGPL
Websitetug.org/metapost
Influenced by
Metafont

Many of the limitations of MetaPost derive from features of Metafont. For instance, MetaPost does not support all features of PostScript. Most notably, paths can have only one segment (so that regions are simply connected), and regions can be filled only with uniform colours. PostScript level 1 supports tiled patterns and PostScript 3 supports Gouraud shading.

Availability and usage edit

MetaPost is distributed with many distributions of the TeX and Metafont framework, for example, it is included in the MiKTeX and the TeX Live distributions.

The encapsulated postscript produced by Metapost can be included in LaTeX, ConTeXt, and TeX documents via standard graphics inclusion commands. The encapsulated postscript output can also be used with the PDFTeX engine, thus directly giving PDF. This ability is implemented in ConTeXt and in the LaTeX graphics package, and can be used from plain TeX via the supp-pdf.tex macro file.

ConTeXt and LuaTeX supports the inclusion of MetaPost code within the input file. Inclusion of MetaPost code in LaTeX is also possible by using LaTeX-packages, for example gmp or mpgraphics.

Examples edit

This is a single file example.mp which when processed by the MetaPost interpreter (via the command mpost on Linux) produces three eps files example.1, example.2, example.3. These are pictured on the right.

 
example outputs
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 

The resulting three eps files can be used in TeX via LaTeX's \includegraphics command, ConTeXt's \externalfigure, Plain TeX's \epsfbox command, or (in Plain pdftex) the \convertMPtoPDF command from supp-pdf.tex. To view or print the third diagram, this inclusion is necessary, as the TeX fonts (Computer Modern) are not included in the eps files produced by MetaPost by default.

See also edit

References edit

  • Hagen, Hans. "MetaFun" (modules for Metapost).
  • Knuth, Donald (1986). The METAFONTbook. Computers and Typesetting. Vol. C. Addison-Wesley. ISBN 0-201-13444-6.
  • "Comprehensive TEX Archive Network" (CTAN). Repository of the TEX source and hundreds of add-ons and style files.
  • . Archived from the original on 2013-07-27. Retrieved 2006-11-17.
  • Hoekwater, Taco (2006). "MetaPost developments—autumn 2006" (PDF). TUGboat. 27 (1).

External links edit

  • The TeX Users Group (TUG) http://www.tug.org/ has a page devoted to MetaPost: http://www.tug.org/metapost.html
  • Active development of MetaPost continues at
  • allows MetaPost to be used from the functional programming language Haskell
  • John D. Hobby has a homepage at and some other pages and publications devoted to MetaPost, though these are now a little dated
    • Historic MetaPost homepage:
    • A User's Manual for MetaPost John D. Hobby. Available as a file mpman.ps distributed with MetaPost, or from the . Also available in PDF format from CTAN.
  • Troy Henderson's Online MetaPost Previewer

metapost, this, article, multiple, issues, please, help, improve, discuss, these, issues, talk, page, learn, when, remove, these, template, messages, this, article, written, like, manual, guide, please, help, rewrite, this, article, remove, advice, instruction. This article has multiple issues Please help improve it or discuss these issues on the talk page Learn how and when to remove these template messages This article is written like a manual or guide Please help rewrite this article and remove advice or instruction January 2016 This article includes a list of general references but it lacks sufficient corresponding inline citations Please help to improve this article by introducing more precise citations January 2016 Learn how and when to remove this message Learn how and when to remove this message MetaPost refers to both a programming language and the interpreter of the MetaPost programming language Both are derived from Donald Knuth s Metafont language and interpreter MetaPost produces vector graphic diagrams from a geometric algebraic description The language shares Metafont s declarative syntax for manipulating lines curves points and geometric transformations However Metafont is set up to produce fonts in the form of image files in gf format with associated font metric files in tfm format whereas MetaPost produces EPS SVG or PNG files The output of Metafont consists of the fonts at a fixed resolution in a raster based format whereas MetaPost s output is vector based graphics lines Bezier curves Metafont output is monochrome whereas MetaPost uses RGB or CMYK colors The MetaPost language can include text labels on the diagrams either strings from a specified font or anything else that can be typeset with TeX Starting with version 1 8 Metapost allows floating point arithmetic with 64 bits default 32 bit fixed point arithmetic MetaPostParadigmimperative typesettingDesigned byJohn D HobbyDeveloperTaco Hoekwater Luigi ScarsoFirst appeared1994 1994 Stable release1 8 17 June 2013 10 years ago 2013 06 17 Preview release2 0rc2 19 February 2018 6 years ago 2018 02 19 Typing disciplineduck dynamic strongOSCross platformLicenseLGPLWebsitetug wbr org wbr metapostInfluenced byMetafont Many of the limitations of MetaPost derive from features of Metafont For instance MetaPost does not support all features of PostScript Most notably paths can have only one segment so that regions are simply connected and regions can be filled only with uniform colours PostScript level 1 supports tiled patterns and PostScript 3 supports Gouraud shading Contents 1 Availability and usage 2 Examples 3 See also 4 References 5 External linksAvailability and usage editMetaPost is distributed with many distributions of the TeX and Metafont framework for example it is included in the MiKTeX and the TeX Live distributions The encapsulated postscript produced by Metapost can be included in LaTeX ConTeXt and TeX documents via standard graphics inclusion commands The encapsulated postscript output can also be used with the PDFTeX engine thus directly giving PDF This ability is implemented in ConTeXt and in the LaTeX graphics package and can be used from plain TeX via the supp pdf tex macro file ConTeXt and LuaTeX supports the inclusion of MetaPost code within the input file Inclusion of MetaPost code in LaTeX is also possible by using LaTeX packages for example gmp or mpgraphics Examples editThis is a single file example mp which when processed by the MetaPost interpreter via the command mpost on Linux produces three eps files example 1 example 2 example 3 These are pictured on the right nbsp example outputs transform pagecoords pagecoords identity scaled 10 mm shifted 100 mm 150 mm 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 135 i endfor cycle transformed pagecoords endfig pagecoords identity scaled 15 mm shifted 100 mm 150 mm beginfig 3 declare paths to be used path p p t set up points by defining relationships z1 0 0 z2 z1 2 up 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 5 white draw z3t z4t withcolor 5 white 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 The resulting three eps files can be used in TeX via LaTeX s includegraphics command ConTeXt s externalfigure Plain TeX s epsfbox command or in Plain pdftex the convertMPtoPDF command from supp pdf tex To view or print the third diagram this inclusion is necessary as the TeX fonts Computer Modern are not included in the eps files produced by MetaPost by default See also edit nbsp Free and open source software portal PSTricks PGF TikZ METATYPE1 AsymptoteReferences editHagen Hans MetaFun modules for Metapost Knuth Donald 1986 The METAFONTbook Computers and Typesetting Vol C Addison Wesley ISBN 0 201 13444 6 Comprehensive TEX Archive Network CTAN Repository of the TEX source and hundreds of add ons and style files La TeX Navigator provides 305 simple MetaPost examples Archived from the original on 2013 07 27 Retrieved 2006 11 17 Hoekwater Taco 2006 MetaPost developments autumn 2006 PDF TUGboat 27 1 External links editThe TeX Users Group TUG http www tug org has a page devoted to MetaPost http www tug org metapost html Active development of MetaPost continues at https web archive org web 20070929092912 http foundry supelec fr projects metapost Functional MetaPost allows MetaPost to be used from the functional programming language Haskell John D Hobby has a homepage at https web archive org web 20131003040005 http ect bell labs com who hobby index shtml and some other pages and publications devoted to MetaPost though these are now a little dated Historic MetaPost homepage https web archive org web 20081212090123 http ect bell labs com who hobby MetaPost shtml A User s Manual for MetaPost John D Hobby Available as a file mpman ps distributed with MetaPost or from the Bell Labs web site Also available in PDF format from CTAN Troy Henderson s Online MetaPost Previewer Retrieved from https en wikipedia org w index php title MetaPost amp oldid 1171922914, wikipedia, wiki, book, books, library,

article

, read, download, free, free download, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, picture, music, song, movie, book, game, games.