MetaPost refers to both a
programming language
A programming language is a system of notation for writing computer programs.
Programming languages are described in terms of their Syntax (programming languages), syntax (form) and semantics (computer science), semantics (meaning), usually def ...
and the
interpreter
Interpreting is translation from a spoken or signed language into another language, usually in real time to facilitate live communication. It is distinguished from the translation of a written text, which can be more deliberative and make use o ...
of the MetaPost programming language. Both are derived from
Donald Knuth
Donald Ervin Knuth ( ; born January 10, 1938) is an American computer scientist and mathematician. He is a professor emeritus at Stanford University. He is the 1974 recipient of the ACM Turing Award, informally considered the Nobel Prize of comp ...
'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
An extended play (EP) is a Sound recording and reproduction, musical recording that contains more tracks than a Single (music), single but fewer than an album. Contemporary EPs generally contain up to eight tracks and have a playing time of 1 ...
,
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 curve
A Bézier curve ( , ) is a parametric equation, parametric curve used in computer graphics and related fields. A set of discrete "control points" defines a smooth, continuous curve by means of a formula. Usually the curve is intended to approxima ...
s)
* Metafont output is monochrome, whereas MetaPost uses
RGB or
CMYK
The CMYK color model (also known as process color, or four color) is a subtractive color model, based on the CMY color model, used in color printing, and is also used to describe the printing process itself. The abbreviation ''CMYK'' refers ...
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
Tex, TeX, TEX, may refer to:
People and fictional characters
* Tex (nickname), a list of people and fictional characters with the nickname
* Tex Earnhardt (1930–2020), U.S. businessman
* Joe Tex (1933–1982), stage name of American soul singer ...
.
* Starting with version 1.8, Metapost allows floating-point arithmetic with 64 bits (default: 32 bit fixed-point arithmetic)
Many of the limitations of MetaPost derive from features of Metafont. For instance, MetaPost does not support all features of
PostScript
PostScript (PS) is a page description language and dynamically typed, stack-based programming language. It is most commonly used in the electronic publishing and desktop publishing realm, but as a Turing complete programming language, it c ...
. Most notably, paths can have only one segment (so that regions are
simply connected
In topology, a topological space is called simply connected (or 1-connected, or 1-simply connected) if it is path-connected and every Path (topology), path between two points can be continuously transformed into any other such path while preserving ...
), and regions can be filled only with uniform colours. PostScript level 1 supports tiled patterns and PostScript 3 supports
Gouraud shading
Gouraud shading ( ), named after Henri Gouraud (computer scientist), Henri Gouraud, is an interpolation method used in computer graphics to produce continuous shading of surfaces represented by Polygon mesh, polygon meshes. In practice, Gouraud ...
.
Availability and usage
MetaPost is distributed with many distributions of the
TeX
Tex, TeX, TEX, may refer to:
People and fictional characters
* Tex (nickname), a list of people and fictional characters with the nickname
* Tex Earnhardt (1930–2020), U.S. businessman
* Joe Tex (1933–1982), stage name of American soul singer ...
and Metafont framework, for example, it is included in the
MiKTeX and the
TeX Live
TeX Live is a cross-platform, free software, free software distribution for the TeX typesetting system that includes major TeX-related programs, macro packages, and fonts. It is the replacement of its no-longer supported counterpart teTeX.
It is ...
distributions.
The encapsulated postscript produced by Metapost can be included in
LaTeX
Latex is an emulsion (stable dispersion) of polymer microparticles in water. Latices are found in nature, but synthetic latices are common as well.
In nature, latex is found as a wikt:milky, milky fluid, which is present in 10% of all floweri ...
,
ConTeXt
In semiotics, linguistics, sociology and anthropology, context refers to those objects or entities which surround a ''focal event'', in these disciplines typically a communicative event, of some kind. Context is "a frame that surrounds the event ...
, and
TeX
Tex, TeX, TEX, may refer to:
People and fictional characters
* Tex (nickname), a list of people and fictional characters with the nickname
* Tex Earnhardt (1930–2020), U.S. businessman
* Joe Tex (1933–1982), stage name of American soul singer ...
documents via standard graphics inclusion commands. The encapsulated postscript output can also be used with the
PDFTeX engine, thus directly giving
PDF
Portable document format (PDF), standardized as ISO 32000, is a file format developed by Adobe Inc., Adobe in 1992 to present documents, including text formatting and images, in a manner independent of application software, computer hardware, ...
. 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
LuaTeX is a TeX-based computer typesetting system which started as a version of pdfTeX with a Lua (programming language), Lua scripting engine embedded. After some experiments it was adopted by the TeX Live distribution as a successor to pdfTeX (i ...
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
This is a single file
example.mp which when processed by the MetaPost interpreter (via the command
mpost
on
Linux
Linux ( ) is a family of open source Unix-like operating systems based on the Linux kernel, an kernel (operating system), operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically package manager, pac ...
) produces three eps files
example.1,
example.2,
example.3. These are pictured on the right.
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 3,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 =p transformed pagecoords; endfor
for i=0 upto 5: z =z 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 withpen pencircle scaled 2;
endfor
endfig;
bye
The resulting three eps files can be used in
TeX
Tex, TeX, TEX, may refer to:
People and fictional characters
* Tex (nickname), a list of people and fictional characters with the nickname
* Tex Earnhardt (1930–2020), U.S. businessman
* Joe Tex (1933–1982), stage name of American soul singer ...
via
LaTeX
Latex is an emulsion (stable dispersion) of polymer microparticles in water. Latices are found in nature, but synthetic latices are common as well.
In nature, latex is found as a wikt:milky, milky fluid, which is present in 10% of all floweri ...
's
\includegraphics
command,
ConTeXt
In semiotics, linguistics, sociology and anthropology, context refers to those objects or entities which surround a ''focal event'', in these disciplines typically a communicative event, of some kind. Context is "a frame that surrounds the event ...
'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
*
PSTricks
*
PGF/TikZ
*
METATYPE1
*
Asymptote
In analytic geometry, an asymptote () of a curve is a line such that the distance between the curve and the line approaches zero as one or both of the ''x'' or ''y'' coordinates tends to infinity. In projective geometry and related contexts, ...
References
*
*
*
*
*
External links
* The TeX Users Group (
TUG) http://www.tug.org/ has a page devoted to MetaPost: http://www.tug.org/metapost.html
{{DEFAULTSORT:Metapost
Programming languages created in 1994
Declarative programming languages
Domain-specific programming languages
Free TeX software
PostScript
Public-domain software
Vector graphics markup languages