The Early history of MetaPost
The user's manual describes Version 0.50,
and Drawing Graphs with MetaPost
describes what is new in Version 0.60.
Changes to the MetaPost Language Between Versions 0.50 and 0.60
New operator readfrom <filename> and new command
write <string expression> to <filename>
do file I/O. There is a special string EOF that
readfrom and write understand as end-of-file.
New iteration type for p within
<picture expression>: <loop text> endfor
iterates through the interior components of the picture. An "interior
component" is a single pen stroke, filled outline, or piece of typeset
text. A part of the picture enclosed in a clipping or setbounds path
also counts as an interior component. If the whole picture is enclosed
in such a path, the for...within iteration looks inside.
Note that apicture generated by btex...etex is enclosed
in a setbounds path.
The length operator now applies to pictures. It returns the number of
New boolean operators stroked, filled, textual,
clipped, bounded test the first component of a picture.
A picture enclosed in a clipping or setbounds path counts as a single
Part extraction operators now work for pictures. Standard operators
redpart, greenpart, bluepart apply to the color
of the first component and xpart, ypart, xxpart,
xypart, yxpart, yypart extract parts of the
tranformation that has been applied to a text component.
If "textual p" is false, the transform components are all
zero; if "clipped p" or "bounded p" is true,
the color parts are all zero. Additional operators
fontpart, textpart, pathpart, penpart,
dashpart extract other information from the first component of a picture.
They all return null values when the first component has the wrong type.
The construction "dashed nullpicture" is now a no-op.
It used to be an error.
The clip and setbounds statements used to ignore operations
on empty pictures. Now they do not.
Structuring comments in the PostScript output are now based on EPSF-3.0
as described in the 2nd Edition of the PostScript Reference Manual.
When prologues is 0, some structuring comments are included but the
output is not flagged a "conforming document". Previous versions
of MetaPost behaved similarly but used slightly different structuring
When warningcheck is 0, numeric tokens and results from the
hex and oct operators can be as large as 32767.99998.
The old limit of about 4096 applies only when warningcheck is positive.
Various optimizations should make the output a little more compact.
For PostScript engines that obey the scan-conversion rules documented
in the 2nd edition PostScript Language Reference Manual, hrules and
vrules in btex...etex blocks should now come out to exactly
the right number of pixels. The change affects all pen strokes drawn in MetaPost
It is implemented via PostScript's dtransform and idtransform
A bug involving setbounds and MetaPost's corner operators has been fixed.
Degenerate elliptical pens no longer cause PostScript to divide by zero.
Fixed a very obscure bug involving readstring and end-of-file.
String compaction statistics are now printed correctly when the job
terminates with tracingstats positive.
Changes to the MetaPost Language Between Versions 0.60 and 0.63
plain.mp has been fixed so that the
x**y works properly
when x<0 and y is a negative integer.
Programs mptotex.c and mptotr.c which extract
btex...etex material have been fixed so they work properly
with input files that do not end with a newline character.
Program dmp.c which handles troff output from
btex...etex blocks has been modified to avoid outputting
any non-ASCII characters that the C function
Program dmp.c no longer gets troff graphics specials confused with text.
This seldom matters because btex..etex blocks are unlikely to contain
Pictures containing clipped subpictures could come out with some colors
in the subpicture wrong.
Colors in PostSript output were not being restricted to the standard 0...1
Transforming a path or a pen should no longer generate extraneous overflow
errors in certain unusual situations.
Drawing with a degenerate 2-vertex polygonal pen such as penrazor should
no longer cause an infinite loop in certain unusual situations.
There were some bugs in the mfplain macros. (These macros are designed
to similate plain METAFONT.) The drawing and filling macros now apply
currenttransform to the path but not the pen rather than vice versa.
The predefined modes now set o_correction to 1.0.
For security reasons, mp can no longer read or write files whose names
begin with "."
Changes Subsequent to Version 0.63
plain.mp now defines a new internal dotlabeldiam.
When prologues is negative, the output files use full precision for
coordinates in %%BoundingBox comments.
- Aug 23, 1989
A METAFONT-like System with PostScript Output,
presented at the TeX User's Group Meeting.
- Jan 19, 1990
Work begins in ernest on mp, the MetaPost interpreter.
- Feb 21, 1990
mp compiles for the first time.
- March 6, 1990
MetaPost support added to dvips.
- March 15, 1990
Initial version of dvitomp completed.
- March 24 1990
First preliminary version installed locally at Bell Labs.
- April 18, 1990
MetaPost support in dvips redone for TeX 3.0
- May 1, 1990
"Virtual fonts" added to dvitomp.
- Early May 1990
Initial inquiries about how to get permission to make MetaPost
available outside of AT&T.
- Aug. 28, 1990
Added troff support (version 0.15).
- Jan. 10, 1991
First outside distribution of the MetaPost system.
Only a limited number of academic institutions are elligable,
and they must sign non-disclosure agreements.
- April 30, 1991
Preliminary version of the MetaPost user's manual is completed.
- March 25, 1992
MetaPost becomes available to any academic institution that
signs a non-disclosure agreement.
- April 4, 1992
Updated User's Manual published as CSTR 162.
- Apr 24, 1992
Version 0.50 released. (First version to be distributed widely).
- Sep 14, 1992
An Introduction to MetaPost
appears in the Proceedings of EuroTeX '92.
- Oct 21, 1992
The MetaPost system runs on MS-DOS for the first time.
- July 19, 1993
Finished the graph-drawing package and published the
documentation for it as CSTR 164.
- Dec 21, 1994
MetaPost becomes public.