• CHANGES HISTORY.

Version 0.0.x: Development versions. Never released. Version 0.1: First version RELEASED to network, 30 June 1992. Version 0.1.x: Test versions for new features, fixes, etc. None of them were released for general distribution. Many new features added, bugs worked out, code cleaned up. Version 0.2: Second version RELEASED to network, 7 Sept. 1992. (Still had 0.1.13.1 version number in code—oops!) Versions 0.2.x: Resumed serious development of TEX code: Sun 7 Nov. 1993. Much work done on graphbase code in meantime, especially by Geoffrey Tobin. The primary task at this point was a radical rewrite of the TEX code, including defining a prefix form for shading macros. Bug fix RELEASE Version 0.2.5 of Wed 10 Nov. 1993:

Primarily work by Geoffrey Tobin. Version 0.2.(5.0.)9 of Mon 28 Feb. 1994: Intended to release as version 0.3 to network. Release delayed, as picture operator code is overhauled to cope with arbitrary overlays: 11 Mar. 1994. Horizontal offset by unwanted glue is traced to missing comment characters: Fri 29 Apr. 1994. Vertical displacement of shading reported for METAFONT modes with nonrectangular pixels: Mon 23 May 1994. Bug fix RELEASE 0.2.5.1 of Wed 13 July 1994: Corrected ‘unxconv’ bug which remained in version 0.2.5’s graphbase.mf. Alpha Test Versions. Version 0.2.9 Alpha of Thu 11 August 1994:

A test RELEASE prior to any official version 0.3, is ready for intrepid users. Introduces coordinate transforms, and other novelties. Update 0.2.9.1 Alpha of Thu 8 September 1994:

Fixes a bug in \sclosed and a bug in \white, corrects some omissions and typos in the documentation, and adds the \shadewd, \hatchwd, \lhatch and \rhatch macros. Update 0.2.9.2 Alpha of Fri 24 February 1995:

Rearranges some code in mfpic.tex; little else to report. In 0.2.9.3 Alpha of Thu 21 March 1995:

GT renamed \fill to \gfill, in order to avoid conflict with the LATEX \fill macro. Update 0.2.9.4 Alpha of Thu 13 April 1995:

Contributes a test for an existing definition of each macro in mfpic.tex, Renaming of \label to \tlabel, and \caption to \tcaption, in order to avoid

conflict with the LATEX macros with those names.

\white was renamed to \gclear, because \white is a likely name for a color macro. Also, a new macro for defining METAFONT functions was introduced, because user-

defined functions provide more power, and function plotting macros were added that accept METAFONT function names instead of METAFONT expressions.

    Renaming of graphbase.mf & graphdoc.tex to grafbase.mf and grafdoc.tex to

emphasise incompatible upgrade of mfpic METAFONT macros, and to provide 8 + 3 filenames for ms-dos users.

Added \hbox{} to start of \mfpic, for some now forgotten reason to do with formatting, I suppose. Version 0.2.9.5 Alfa of Wed 19 July 1995:

Replaces TEX dimensions by font dimensions for economy. Renames \mfcmd to \mfsrc for clarity. Renames \wedge to \sector to avoid conflict with the character name defined in plain

TEX and LATEX.

Introduces \mftitle, \tmtitle and \plr.
Abolishes \plrpoint, \plrlines, \plrcurve and \plrcyclic as redundant special-

isations. The meaning of \turtle is changed to a Cartesian form, for flexibility.

Changed objects.tex to use \tmtitle, \plr, \mfsrc, \gfill, \gclear, \tlabel,
and \tcaption.

Rendering macros redesigned, and \setrender introduced. Coordinate transforms in grafbase.mf made slightly more robust. Begin an attempt to make grafbase.mf compatible with John Hobby’s MetaPost drawing program.

Added comment in grafbase.mf about dangers of text arguments,

Updated the documentation files grafdoc.tex, Acknowl.tex, README2, MANIFEST and
mfpicdoc.tex.

Update 0.2.9.6 Alfa of Mon 24 July 1995:

Contributes \thatch which provides hatching by lines at any angle. Modifications to \pen, \shadewd and \hatchwd, along with changes to grafbase.mf

to make drawing, shading and hatching more independent.

Decided that the behavior of \point inside a connect environment was bizarre, hazardous, and an unnecessary complication to the mfpic macros, so \point has reverted to its original, obvious and simple definition.

Renamed \rotate to \rotatepath.

Also renamed the affine transform macros, so that they no longer use the ‘s’ of the present tense, which could be mistaken for a plural. (The sample files did not hitherto use the affine transform macros, so the damage may be slight.)

Modified grafbase.mf to use a transform stack to implement local METAFONT coordinate systems; this may be more robust, and extensible to other graphic localisations. Update 0.2.9.7 alfa, Fri 18 August 1995:

Changes to pictures.tex:
Replaced version from ‘0.2.9.1 alpha Thu 8 September 1994’ to ‘0.2.9.7 alfa
Sat 5 August 1995’.

Added a comment containing an ASCII sketch of the commutative diagram example, and indicated where each arc is drawn.

Replaced all uses of \label by \tlabel, \caption by \tcaption, \fill by \gfill,
\wedge by \sector.

Added some uses of \mftitle. Moved one arrow in the commutative diagram, to illustrate the b option of the \arrow

command.

Simplified METAFONT algebraic expressions used in function plots, so that they use fewer * operators.

Edited the example of \turtle to allow for the new semantics of rectangular coordinates.

Captioned all eight figures, with figure numbers and descriptions. Deleted an instance of ‘\vfill\eject’. Increased the complexity of the seventh figure, to illustrate use of hatching, closing,

point, dotted curves, and so forth.

Made figures seven and eight twice as large.

Changes to lapictures.tex:
Renamed version from ‘0.2.9.1 alpha Thu 8 September 1994’ to ‘0.2.9.7 alfa
Thu 17 August 1995’.

Magnified the LaTeX pictures document to the same scale as the plain TeX one, using the \mag command.

Set \fboxsep to zero. Initialised arrow heads using \headshape. Commented out the center environment around the commutative diagram example. Placed \fbox commands around each picture. Other changes as in pictures.tex.

Extensive changes to grafbase.mf:

Turned warningcheck off.

Used an explicit designsize. Debugging refined. Rearranged some code.

Made ClipOn boolean (instead of numeric).

Added maparr macro. Eliminated mistake of using hround in graph-to-pixel coordinate transformation. Remarked that clipping can distort paths by changing their points. Tried to clip on character boundary. Added METAFONT vector coordinate transform, to complement affine transform

for geometric points.

Write message when drawing nominal METAFONT bounding box. Changed beginmfpic METAFONT macro to take only the character code as an

argument.

Introduced global METAFONT transform stack, for coordinate changes. Replaced currentpen by drawpen in path stroking. Changed ourfill and ourunfill to use an undelimited path argument.

Added setdotpath, ourdot.

Changed onedot to use dotpath instead of a scaled shape path. Edited tightbbox and bbox to take a path described in pixel coordinates as their first

argument, instead of one in graph coordinates. Added tbbox. Did some more saving of local variables in METAFONT functions.

Deleted lhatchf and rhatchf.
Added thatchf, thatch, hhatch and xhatch.

Rewrote mfclhatch and rhatch to use thatch.

Edited dotted, renamed it dashed. Added a separate dotted METAFONT macro. Changed head from a def to a vardef; edited head to clarify its code. Altered axis tic mark macros, xmarks and ymarks to ensure that the tic marks are

always at right angles to their axes, irrespective of coordinate transforms.

Added a grid command.

Renamed mkellipse to ellipse, deleted old ellipse.

Renamed mkarc to arc. Update 0.2.9.8 alfa, Mon 11 September 1995:

Added to Acknowl.tex.
In mfpic.tex:

Add comment about use of \ignorespaces to skip spaces in user’s document after \mfpic command.

Retain line separations of user’s document’s mfpic environment when writing META-FONT file. This prevents long METAFONT commands from exceeding METAFONT’s input buffer. Update 0.2.9.9 alfa, Thu 5 October 1995:

In mfpicdoc.tex:

changed macrowedge references to \sector, and \rotateabout reference to \ro-

tatearound.

Added some logical formatting commands to mfpicdoc.tex. Included much more information about recent changes (from 0.2.9.1 to 0.2.9.8).

In mfpic.tex:

Renamed \@graph to \@graphfont for identifiability. Update 0.2.9.10 alfa, Fri 6 October 1995:

In grafbase.mf:

Deleted spurious argument to \xyswap. Changed \store to take two arguments, and to logically ‘bracket’ the second, which

is the path description. Update 0.2.9.11 alfa, Fri 24 November 1995:

In grafbase.mf:

Fixed X-coordinate rounding bug in thatchf. Revision 0.2.10.0 alfa, Wed 17 January 1996:

In mfpic.tex and grafbase.mf:

Changed names of five METAFONT macros: \xslanted, \yslanted, \zslanted,

\boosted, \xyswapped to \xslant, \yslant, \zslant, \boost, \xyswap.
In grafbase.mf:

Replaced my dash and dot code by Frank Michielsen’s, modified to use \suffix arguments instead of \text for l-values.

Also, the \dotsize argument to \dotted is now effective.

Deleted the unused \ourdraw, ourfill, ourunfill macros.

Simplified the \dotpath and \onedot initialisation code; it was too baroque.

Added a \pixdot macro as a shorthand for \picdot (active plane, onedot, p).

Replaced the \apoint (w, a) macro by \bpoint (w, b) which is a shorthand for

\fullcircle scaled w shifted b.

Gratuitously added Bruce Leban’s overlay macros from The METAFONTbook, p 295.

Cosmetic reformatting of source. In Acknowl.tex: Add Frank Michielsen’s name. Revision 0.2.10.1 alfa, Thu 18 January 1996:

In grafbase.mf:

Fixed wrong declaration in \dotted of \dp from \path to \pair. Revision 0.2.10.2 alfa, Tue 23 January 1996:

Editing to restore compatibility with older graphbase.mf versions used with xfig’s

(actually, transfig’s fig2dev’s) mf driver (genmf.c).
In mfpic.tex:

Edited writing of setting of METAFONT variables \xscale and \yscale to omit factor of \unitlen.

Changed references to drawwd to penwd in \drawpen.

In grafbase.mf:

Add declarations and initialisations of these variables: \unitlen, xscale, yscale,

xneg, xpos, yneg, ypos.

Renamed \drawwd to its former name, \penwd. Again made \penwd, hdwdr, hdten into \newinternal variables, and assign them

using \interim.

Definition of ztr now includes \unitlen as a factor in the x and y scaling. \mfpicenv and \endmfpicenv defined as empty statements.

\bounds defined for setting \xneg, xpos, yneg, ypos.
\beginchar now includes \unitlen.

Revision 0.2.10.3 alfa, Tue 6 February 1996:

In mfpicdoc.tex:

Updated documentation to cover to \dotted, \dotsize and \dotspace on the one

hand, and \dashed, \dashlen and \dashspace on the other.

⋯ Revision 0.2.10.4 alfa, Mon 26 February 1996:

In mfpic.tex:

Let internal \sim@gdef (simple global definition) stand for \gdef. Added \newgdef for new global definitions with a test for previous definition.

Replaced use of \obeylines by \mfpicobeylines, to use \endgraf instead of \par,

because LaTeX(2e) redefines \par with unpleasant effects on METAFONT files when using LaTeX’s center environment. (To wit, LaTeX’s center environment would write \@@par to the METAFONT file.

Defined \preservelines to call \mfpicobeylines then set \newlinechar to control-

M (carriage return).

Use \preservelines in \mfsrc, thus bypassing (I hope) the mischief arising from LaTeX in the center environment.

Wrapped replacement text of \mfsrc in a layer of braces.

Added descriptive comments for \tlabel and \tcaption.

Set TEX’s primitives \leftskip and \rightskip to zero dimension inside \tcaption, so as to protect typesetting of diagrams’ captions from unwanted effects. Revision 0.2.10.5 alfa, Sat 9 March 1996: Minor reformatting of mfpic.tex, including adding spaces, adding comment characters at end of more lines, and renaming some internal register variables. Introduced \polyline as an alternative name for \lines. In order to avoid repetition of side-effects, changed \tcaption to use \unhbox\@textbox, instead of repeating its text argument.

Revision 0.2.10.6 alfa, (two hours later) on Sat 9 March 1996:

Updated mfpic.tex and documentation files to incorporate improvements by Daniel H. Luecking:

a loading check that automatically saves and restores the catcode of ‘@’; the name of the graph base is now stored in a macro near the top of mfpic.tex; \leavevmode is now moved [GT has, for now, commented it out completely]; \polyline instroduced as a synonym for \lines; a \polygon figure has been introduced; \\ specifies explicit line breaks in tlabels and tcaptions; \onelevel causes one level of expansion in an \edef; \savepic and \copypic allow saving, use and copying of an entire mfpic picture, including its tcaptions and tlabels.

Also modified \tcaption code to prevent repeated use of the text argument, as that can cause side effects, as reported by Dennis Petrovic. Revision 0.2.10.7 alfa, Sat 28 March 1996: First RELEASE via Geoffrey Tobin’s School’s local anon ftp site:

ftp.ee.latrobe.edu.au :  pub/gt/mfpic

Added skip-pix.tex file, which tests whether TEX’s \leftskip primitive breaks up mfpic’s typesetting of diagrams. Fortunately, it seems not. Revision 0.2.10.8 alfa, Tue 26 May 1996: Second, and bug fix, RELEASE via Geoffrey Tobin’s anonymous ftp area.

Due to change in syntax of \store to take the path command as a second argument (which made coding of mfpic.tex easier), objects.tex and part of mfpicdoc.tex needed to be amended. Reported by Miroslav Dont (Thu 16 May 1996).

Descriptions of LATEX environments clarified to emphasise that mfpic’s plain TEX command names may be used in LATEX. This is useful to know when designing automatic code generators. Reported by Van Snyder (Fri 17 May 1996).

Added hyphenation to \MFbook in documentation macro file header.tex.

Noticed that the method by which the line breaks in the TEX file are copied into the METAFONT file can cause command arguments to be omitted from the METAFONT file unless at least the left brace (immediately before the arguments) occurs on the same line as the command. Corrected objects.tex to obey this restriction. Also noted this phenomenon in mfpicdoc.tex. Effect reported by Miroslav Dont (Thu 16 May 1996).

Updated lapictures.tex to LATEX_{2ε}. Added LATEX_{2ε} logo to header.tex.