summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/metapost
diff options
context:
space:
mode:
authorTaco Hoekwater <taco@elvenkind.com>2011-04-05 15:03:39 +0000
committerTaco Hoekwater <taco@elvenkind.com>2011-04-05 15:03:39 +0000
commit540927ad17a1d3f65acd988f4f93edf13d4b303e (patch)
treea10e681396bb0e38d080c7f6e312c915d380b7e2 /Master/texmf-dist/doc/metapost
parent3bd11c5b320d265b89c965f63f57018ef818b876 (diff)
and here is metapost 1.504 (which is still tentative)
git-svn-id: svn://tug.org/texlive/trunk@21976 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/doc/metapost')
-rw-r--r--Master/texmf-dist/doc/metapost/base/mpboxes.pdfbin371601 -> 371656 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/base/mpgraph.pdfbin467471 -> 467564 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/base/mpintro.pdfbin234688 -> 235016 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/base/mplibapi.pdfbin243123 -> 243123 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/base/mpman.pdfbin895061 -> 898520 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/base/source-manual/README44
-rw-r--r--Master/texmf-dist/doc/metapost/base/source-manual/TODO194
-rw-r--r--Master/texmf-dist/doc/metapost/base/source-manual/cm2lm.map16
-rw-r--r--Master/texmf-dist/doc/metapost/base/source-manual/mpman-app-optab.tex312
-rw-r--r--Master/texmf-dist/doc/metapost/base/source-manual/mpman-app-refman.tex2104
-rw-r--r--Master/texmf-dist/doc/metapost/base/source-manual/mpman-charts.mp16
-rw-r--r--Master/texmf-dist/doc/metapost/base/source-manual/mpman.mp17
-rw-r--r--Master/texmf-dist/doc/metapost/base/source-manual/mpman.tex183
13 files changed, 1453 insertions, 1433 deletions
diff --git a/Master/texmf-dist/doc/metapost/base/mpboxes.pdf b/Master/texmf-dist/doc/metapost/base/mpboxes.pdf
index f06e8847a64..01f96ce402b 100644
--- a/Master/texmf-dist/doc/metapost/base/mpboxes.pdf
+++ b/Master/texmf-dist/doc/metapost/base/mpboxes.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/base/mpgraph.pdf b/Master/texmf-dist/doc/metapost/base/mpgraph.pdf
index b8d5591247f..019931a2783 100644
--- a/Master/texmf-dist/doc/metapost/base/mpgraph.pdf
+++ b/Master/texmf-dist/doc/metapost/base/mpgraph.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/base/mpintro.pdf b/Master/texmf-dist/doc/metapost/base/mpintro.pdf
index 534f2891b67..97ecbd78560 100644
--- a/Master/texmf-dist/doc/metapost/base/mpintro.pdf
+++ b/Master/texmf-dist/doc/metapost/base/mpintro.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/base/mplibapi.pdf b/Master/texmf-dist/doc/metapost/base/mplibapi.pdf
index d9b491c144a..3be7d5703d2 100644
--- a/Master/texmf-dist/doc/metapost/base/mplibapi.pdf
+++ b/Master/texmf-dist/doc/metapost/base/mplibapi.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/base/mpman.pdf b/Master/texmf-dist/doc/metapost/base/mpman.pdf
index 4e7fa152f66..a5f889d2b7c 100644
--- a/Master/texmf-dist/doc/metapost/base/mpman.pdf
+++ b/Master/texmf-dist/doc/metapost/base/mpman.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/base/source-manual/README b/Master/texmf-dist/doc/metapost/base/source-manual/README
index bbff9fb2c19..b0f3cff158a 100644
--- a/Master/texmf-dist/doc/metapost/base/source-manual/README
+++ b/Master/texmf-dist/doc/metapost/base/source-manual/README
@@ -17,48 +17,4 @@ Auxiliary files (and the MetaPost software itself) are public domain,
including the data (.d) files here, which due to file format limitations
cannot incorporate a license themselves.
-Included files:
-
-Makefile
-README
-TODO
-agepop91.d
-agepopm.d
-charts.mp
-cm2lm.map
-countries.d
-ctabbing.sty
-demo.ms
-energy.d
-figs.1
-figs.mp
-grdemo-doc.ms
-grdemo-doc.pdf
-grdemo-doc.ps
-grdemo.eps
-grdemo.mp
-grdemo.ms
-grdemo.pdf
-lead.d
-matmul.d
-mp.1
-mpboxes.bib
-mpboxes.mp
-mpboxes.tex
-mpgraph.bib
-mpgraph.mp
-mpgraph.tex
-mpintro.bib
-mpintro.mp
-mpintro.tex
-mpman-app-legacy.tex
-mpman-app-optab.tex
-mpman-app-refman.tex
-mpman-charts.mp
-mpman.bib
-mpman.ist
-mpman.mp
-mpman.tex
-timepop.d
-
See the Makefile for the sequence of commands to create the DVI/PS/PDF output.
diff --git a/Master/texmf-dist/doc/metapost/base/source-manual/TODO b/Master/texmf-dist/doc/metapost/base/source-manual/TODO
index 618b973ebdd..5b1a7aec305 100644
--- a/Master/texmf-dist/doc/metapost/base/source-manual/TODO
+++ b/Master/texmf-dist/doc/metapost/base/source-manual/TODO
@@ -1,94 +1,100 @@
-This file contains an unsorted list of tasks to be done on the
-MetaPost manual. Feel free to add new, move or remove finished
-items.
-
-Where to put new items?
------------------------
-Section 'Wanted For Release' contains items that we want to be
-finished before the next release. Even minor issues can and
-should be added here.
-
-Items in section 'Mid Term Issues' have no dead-line, but should
-be self-contained enough to be done independent from other stuff.
-
-Items in section 'Long Term Issues' are less actively worked on.
-The reason they are less actively worked on is not lack of
-importance, but lack of developer resources. Nevertheless, they
-are on the agenda. Contributions are welcome!
-
-How to pick items?
-------------------
-You can indicate interest or active work on an item by putting your
-initials in parenthese in front of that item and checking the
-modified TODO file into the repository. That way, anybody who is
-subscribed to the metapost-commits list is notified of your
-interest. Additionally, it is wise to communicate that you're
-working on an issue (you didn't remember adding yourself) on the
-mp-implementors list or alternatively the metapost list.
-
-
-*****************************
-*** Wanted For Release ***
-*****************************
-
-Notes on the MetaPost Workflow:
-* (SH) Describe variables jobname, charcode.
-
-
-
-
-*****************************
-*** Mid Term Issues ***
-*****************************
-
-Introduction:
-* Revise introduction.
-
-Integrating Text and Graphics:
-* Completely revise this section and consolidate information
- scattered around mpman.
-* More information and examples on alternatives for calling TeX
- or LaTeX from within MetaPost.
-* (SH) Revise (and add more) flow charts for MetaPost workflow.
-* Describe whitespace handling of verbatimtex/btex/etex.
-* Why is verbatimtex\end{document}etex "safer", cf. sec. 13.1?
-* Discuss difference between "draw <pic> withpen" and
- "label(<pic>, ...) withpen" (when label bug is fixed).
-* Fix bad description of prologues in table ivartab.
-* Move discussion of prologues to sec. workflow2?
-
-Advanced Graphics:
-* Add a sub-section discussing colours.
-* (SH) Colour cars and change code example in section piccomp.
-
-Reference Manual:
-* Describe environment variables and configuration files.
-* Describe missing variables, constants, and operators.
-* Add description of interaction mode.
-
-Legacy Information:
-* Cite original Hobby papers.
-* Describe mpware (currently scattered around in mpman).
-
-
-
-
-*****************************
-*** Long Term Issues ***
-*****************************
-
-Title page:
-* Add decent title graphics.
-
-Reference Manual:
-* Review presentation of primitives and plain macros in appendix A.
-* Build reference manual automatically from mp.web (as a separate manual?).
-
-General:
-* Make mpman self-contained (no need to look-up sth. in 'The MetaFontbook').
-* Make manual sources compatible with preview mode (Emacs).
-* Make manual sources LaTeX2e conform.
-* Make manual sources look nice in Emacs (AUCTeX font-locking).
-* Review overall layout of the manuals (type area, float placement,
- listing presentation etc.)
-
+This file contains an unsorted list of tasks to be done on the
+MetaPost manual. Feel free to add new, move or remove finished
+items.
+
+Where to put new items?
+-----------------------
+Section 'Wanted For Release' contains items that we want to be
+finished before the next release. Even minor issues can and
+should be added here.
+
+Items in section 'Mid Term Issues' have no dead-line, but should
+be self-contained enough to be done independent from other stuff.
+
+Items in section 'Long Term Issues' are less actively worked on.
+The reason they are less actively worked on is not lack of
+importance, but lack of developer resources. Nevertheless, they
+are on the agenda. Contributions are welcome!
+
+How to pick items?
+------------------
+You can indicate interest or active work on an item by putting your
+initials in parenthese in front of that item and checking the
+modified TODO file into the repository. That way, anybody who is
+subscribed to the metapost-commits list is notified of your
+interest. Additionally, it is wise to communicate that you're
+working on an issue (you didn't remember adding yourself) on the
+mp-implementors list or alternatively the metapost list.
+
+
+*****************************
+*** Wanted For Release ***
+*****************************
+
+Integrating Text and Graphics:
+* (SH) Fix bad description of prologues in table ivartab.
+* (SH) Move discussion of prologues to sec. workflow2.
+
+Notes on the MetaPost Workflow:
+* (SH) Describe variables jobname, charcode.
+
+Reference Manual:
+* Describe environment variables and configuration files.
+
+Legacy Information:
+* (SH) Cite original Hobby papers.
+
+
+
+
+*****************************
+*** Mid Term Issues ***
+*****************************
+
+Introduction:
+* Revise introduction.
+
+Integrating Text and Graphics:
+* Completely revise this section and consolidate information
+ scattered around mpman.
+* More information and examples on alternatives for calling TeX
+ or LaTeX from within MetaPost.
+* (SH) Revise (and add more) flow charts for MetaPost workflow.
+* Describe whitespace handling of verbatimtex/btex/etex.
+* Why is verbatimtex\end{document}etex "safer", cf. sec. 13.1?
+* Discuss difference between "draw <pic> withpen" and
+ "label(<pic>, ...) withpen" (when label bug is fixed).
+
+Advanced Graphics:
+* Add a sub-section discussing colours.
+* (SH) Colour cars and change code example in section piccomp.
+
+Reference Manual:
+* Describe missing variables, constants, and operators.
+* Add description of interaction mode.
+
+Legacy Information:
+* Describe mpware (currently scattered around in mpman).
+
+
+
+
+*****************************
+*** Long Term Issues ***
+*****************************
+
+Title page:
+* Add decent title graphics.
+
+Reference Manual:
+* Review presentation of primitives and plain macros in appendix A.
+* Build reference manual automatically from mp.web (as a separate manual?).
+
+General:
+* Make mpman self-contained (no need to look-up sth. in 'The MetaFontbook').
+* Make manual sources compatible with preview mode (Emacs).
+* Make manual sources LaTeX2e conform.
+* Make manual sources look nice in Emacs (AUCTeX font-locking).
+* Review overall layout of the manuals (type area, float placement,
+ listing presentation etc.)
+
diff --git a/Master/texmf-dist/doc/metapost/base/source-manual/cm2lm.map b/Master/texmf-dist/doc/metapost/base/source-manual/cm2lm.map
index 44228da8144..619facd6d04 100644
--- a/Master/texmf-dist/doc/metapost/base/source-manual/cm2lm.map
+++ b/Master/texmf-dist/doc/metapost/base/source-manual/cm2lm.map
@@ -1,8 +1,8 @@
-%%% This map file replaces Computer Modern fonts by Latin Modern.
-cmmi7 CMMI7 < lm-mathit.enc < lmmi7.pfb
-cmmi10 CMMI10 < lm-mathit.enc < lmmi10.pfb
-cmr7 CMR7 < lm-rm.enc < lmr7.pfb
-cmr10 CMR10 < lm-rm.enc < lmr10.pfb
-cmsy7 CMSY7 < lm-mathsy.enc < lmsy7.pfb
-cmsy10 CMSY10 < lm-mathsy.enc < lmsy10.pfb
-cmtt10 CMTT10 < lm-rm.enc < lmtt10.pfb
+%%% This map file replaces Computer Modern fonts by Latin Modern.
+cmmi7 CMMI7 < lm-mathit.enc < lmmi7.pfb
+cmmi10 CMMI10 < lm-mathit.enc < lmmi10.pfb
+cmr7 CMR7 < lm-rm.enc < lmr7.pfb
+cmr10 CMR10 < lm-rm.enc < lmr10.pfb
+cmsy7 CMSY7 < lm-mathsy.enc < lmsy7.pfb
+cmsy10 CMSY10 < lm-mathsy.enc < lmsy10.pfb
+cmtt10 CMTT10 < lm-rm.enc < lmtt10.pfb
diff --git a/Master/texmf-dist/doc/metapost/base/source-manual/mpman-app-optab.tex b/Master/texmf-dist/doc/metapost/base/source-manual/mpman-app-optab.tex
index 079ae983e5d..baa97fa9009 100644
--- a/Master/texmf-dist/doc/metapost/base/source-manual/mpman-app-optab.tex
+++ b/Master/texmf-dist/doc/metapost/base/source-manual/mpman-app-optab.tex
@@ -1,156 +1,156 @@
-\svnInfo $Id: mpman-app-optab.tex 1416 2010-10-18 06:39:23Z taco $
-%%% Two notes on column specification:
-%%% (i) Column widths are manually chosen as small as possible to allow
-%%% for a wider last X column.
-%%% (ii) In the first column \linepenalty=100 prefers shorter paragraphs
-%%% (less lines), where plain \raggedright were indifferent and
-%%% sometimes caused a dangling line, e.g., for 'directionpoint of'
-%%% or 'directiontime of'.
-\begin{longtable}{|>{\raggedright\linepenalty=100\ttfamily}p{.793in}*{3}{|>{\raggedright}p{.715in}}|>{\raggedleft}p{1.5em}|>{\raggedright\arraybackslash}X|}
-\caption{\strut Operators}\label{optab}\\
-\hline
-Name& \multicolumn3{c|}{Argument/result types}& \makebox[.2in][c]{Page}& Explanation\\\cline{2-4}
-& \multicolumn1{c|}{Left}& \multicolumn1{c|}{Right}& \multicolumn1{c|}{Result}& & \\
-\hline
-\hline
-\endfirsthead
-\caption[]{\strut Operators \emph{(continued)}}\\
-\hline
-Name& \multicolumn3{c|}{Argument/result types}& \makebox[.2in][c]{Page}& Explanation\\\cline{2-4}
-& \multicolumn1{c|}{Left}& \multicolumn1{c|}{Right}& \multicolumn1{c|}{Result}& & \\
-\hline
-\hline
-\endhead
-\&\index{&?\texttt{\&}}& string\par path& string\par path & string\par path& \pageref{Damp}& Concatenation---works for paths $l\hbox{\tt\&}r$ if $r$ starts exactly where the $l$ ends\\\hline
-*\index{*?\texttt{*}}& numeric& (cmyk)color\par numeric\par pair& (cmyk)color\par numeric\par pair& \pageref{Dmldiv}& Multiplication\\\hline
-*\index{*?\texttt{*}}& (cmyk)color\par numeric\par pair& numeric& (cmyk)color\par numeric\par pair& \pageref{Dmldiv}& Multiplication\\\hline
-**\index{**?\texttt{**}}& numeric& numeric& numeric& \pageref{Dpow}& Exponentiation\\\hline
-+\index{+?\texttt{+}}& (cmyk)color\par numeric\par pair& (cmyk)color\par numeric\par pair& (cmyk)color\par numeric\par pair& \pageref{Dadd}& Addition\\\hline
-++\index{++?\texttt{++}}& numeric& numeric& numeric& \pageref{Dpyadd}& Pythagorean addition $\sqrt{l^2+r^2}$\\\hline
-+-+\index{+-+?\texttt{+-+}}& numeric& numeric& numeric& \pageref{Dpysub}& Pythagorean subtraction $\sqrt{l^2-r^2}$\\\hline
--\index{-?\texttt{-}}& (cmyk)color\par numeric\par pair& (cmyk)color\par numeric\par pair& (cmyk)color\par numeric\par pair& \pageref{Dadd}& Subtraction\\\hline
--\index{-?\texttt{-}}& --& (cmyk)color\par numeric\par pair& (cmyk)color\par numeric\par pair& \pageref{Dneg}& Negation\\\hline
-/\index{/?\texttt{/}}& (cmyk)color\par numeric\par pair& numeric& (cmyk)color\par numeric\par pair& \pageref{Dmldiv}& Division\\\hline
-<\index{<?\texttt{<}} =\index{=?\texttt{=}} >\index{>?\texttt{>}}\par <=\index{<=?\texttt{<=}} >=\index{>=?\texttt{>=}}\par <>\index{<>?\texttt{<>}}& string\par numeric\par pair\par (cmyk)color\par transform& string\par numeric\par pair\par (cmyk)color\par transform& boolean& \pageref{Dcmpar}& Comparison operators\\\hline
-\pl abs\index{abs?\texttt{abs}}& --& numeric\par pair& numeric& \pageref{Dabs}& Absolute value\par Euclidean length $\sqrt{(\mbox{\ttfamily xpart\ } r)^2+(\mbox{\ttfamily ypart\ } r)^2}$\\\hline
-and\index{and?\texttt{and}}& boolean& boolean& boolean& \pageref{Dand}& Logical and\\\hline
-angle\index{angle?\texttt{angle}}& --& pair& numeric& \pageref{Dangle}& 2$-$argument arctangent (in degrees)\\\hline
-arclength\index{arclength?\texttt{arclength}}& --& path& numeric& \pageref{Darclng}& Arc length of a path\\\hline
-arctime of\index{arctime of?\texttt{arctime of}}& numeric& path& numeric& \pageref{Darctim}& Time on a path where arc length from the start reaches a given value\\\hline
-ASCII\index{ASCII?\texttt{ASCII}}& --& string& numeric& --& ASCII value of first character in string\\\hline
-\pl bbox\index{bbox?\texttt{bbox}}& --& picture\par path\par pen& path& \pageref{Dbbox}& A rectangular path for the bounding box\\\hline
-blackpart\index{blackpart?\texttt{blackpart}}& --& cmykcolor& numeric& \pageref{Dcmykprt}& Extract the fourth component\\\hline
-bluepart\index{bluepart?\texttt{bluepart}}& --& color& numeric& \pageref{Drgbprt}& Extract the third component\\\hline
-boolean\index{boolean?\texttt{boolean}}& --& any& boolean& \pageref{Dboolop}& Is the expression of type boolean?\\\hline
-\pl bot\index{bot?\texttt{bot}}& --& numeric\par pair& numeric\par pair& \pageref{Dbot}& Bottom of current pen when centered at the given coordinate(s)\\\hline
-bounded\index{bounded?\texttt{bounded}}& --& any& boolean& \pageref{Dbounded}& Is argument a picture with a bounding box?\\\hline
-\pl ceiling\index{ceiling?\texttt{ceiling}}& --& numeric& numeric& \pageref{Dceil}& Least integer greater than or equal to\\\hline
-\pl center\index{center?\texttt{center}}& --& picture\par path\par pen& pair& \pageref{Dcenter}& Center of the bounding box\\\hline
-char\index{char?\texttt{char}}& --& numeric& string& \pageref{Dchar}& Character with a given ASCII code\\\hline
-clipped\index{clipped?\texttt{clipped}}& --& any& boolean& \pageref{Dclipped}& Is argument a clipped picture?\\\hline
-cmykcolor\index{cmykcolor?\texttt{cmykcolor}}& --& any& boolean& \pageref{Dccolrop}& Is the expression of type cmykcolor?\\\hline
-color\index{color?\texttt{color}}& --& any& boolean& \pageref{Dcolrop}& Is the expression of type color?\\\hline
-colormodel\index{colormodel?\texttt{colormodel}}& --& image object& numeric& \pageref{Dcolormodel}& What is the color model of the image object?\\\hline
-\pl colorpart\index{colorpart?\texttt{colorpart}}& --& image object&
-(cmyk)color\par numeric\par boolean& \pageref{Dcolorpart}& What is the
-color of the image object?\\\hline
-cosd\index{cosd?\texttt{cosd}}& --& numeric& numeric& \pageref{Dcosd}& Cosine of angle in degrees\\\hline
-\pl cutafter\index{cutafter?\texttt{cutafter}}& path& path& path& \pageref{Dcuta}& Left argument with part after the intersection dropped\\\hline
-\pl cutbefore\index{cutbefore?\texttt{cutbefore}}& path& path& path& \pageref{Dcutb}& Left argument with part before the intersection dropped\\\hline
-cyanpart\index{cyanpart?\texttt{cyanpart}}& --& cmykcolor& numeric& \pageref{Dcmykprt}& Extract the first component\\\hline
-cycle\index{cycle?\texttt{cycle}}& --& path& boolean& \pageref{Dcycop}& Determines whether a path is cyclic\\\hline
-dashpart\index{dashpart?\texttt{dashpart}}& --& picture& picture& \pageref{Ddashpart}& Dash pattern of a path in a stroked picture\\\hline
-decimal\index{decimal?\texttt{decimal}}& --& numeric& string& \pageref{Ddecop}& The decimal representation\\\hline
-\pl dir\index{dir?\texttt{dir}}& --& numeric& pair& \pageref{Ddirop}& $(\cos\theta,\sin\theta)$ given $\theta$ in degrees\\\hline
-\pl direction of\index{direction of?\texttt{direction of}}& numeric& path& pair& \pageref{Ddirof}& The direction of a path at a given `time'\\\hline
-\pl direction\-point of\index{directionpoint of?\texttt{directionpoint of}}& pair& path& numeric& \pageref{Ddpntof}& Point where a path has a given direction\\\hline
-direction\-time of\index{directiontime of?\texttt{directiontime of}}& pair& path& numeric& \pageref{Ddtimof}& `Time' when a path has a given direction\\\hline
-\pl div\index{div?\texttt{div}}& numeric& numeric& numeric& --& Integer division $\lfloor l/r\rfloor$\\\hline
-\pl dotprod\index{dotprod?\texttt{dotprod}}& pair& pair& numeric& \pageref{Ddprod}& Vector dot product\\\hline
-filled\index{filled?\texttt{filled}}& --& any& boolean& \pageref{Dfilled}& Is argument a filled outline?\\\hline
-floor\index{floor?\texttt{floor}}& --& numeric& numeric& \pageref{Dfloor}& Greatest integer less than or equal to\\\hline
-fontpart\index{fontpart?\texttt{fontpart}}& --& picture& string& \pageref{Dfontpart}& Font of a textual picture component\\\hline
-fontsize\index{fontsize?\texttt{fontsize}}& --& string& numeric& \pageref{Dfntsiz}& The point size of a font\\\hline
-glyph of\index{glyph?\texttt{glyph}}& numeric\par string& string& picture&
-\pageref{Dglyph}& Convert a glyph of a font to contours\\\hline
-greenpart\index{greenpart?\texttt{greenpart}}& --& color& numeric& \pageref{Drgbprt}& Extract the second component\\\hline
-greypart\index{greypart?\texttt{greypart}}& --& numeric& numeric& \pageref{Dgreyprt}& Extract the first (only) component\\\hline
-hex\index{hex?\texttt{hex}}& --& string& numeric& --& Interpret as a hexadecimal number\\\hline
-infont\index{infont?\texttt{infont}}& string& string& picture& \pageref{Sinfont}& Typeset string in given font\\\hline
-\pl intersec\-tionpoint\index{intersectionpoint?\texttt{intersectionpoint}}& path& path& pair& \pageref{Disecpt}& An intersection point\\\hline
-intersec\-tiontimes\index{intersectiontimes?\texttt{intersectiontimes}}& path& path& pair& \pageref{Disectt}& Times ($t_l,t_r)$ on paths $l$ and $r$ when the paths intersect\\\hline
-\pl inverse\index{inverse?\texttt{inverse}}& --& transform& transform& \pageref{Dinv}& Invert a transformation\\\hline
-known\index{known?\texttt{known}}& --& any& boolean& \pageref{Dknown}& Does argument have a known value?\\\hline
-length\index{length?\texttt{length}}& --& path\par string\par picture& numeric& \pageref{Dlength}\par \pageref{DlengthString}\par \pageref{DlengthPicture}& Number of components (arcs, characters, strokes, \ldots) in the argument\\\hline
-\pl lft\index{lft?\texttt{lft}}& --& numeric\par pair& numeric\par pair& \pageref{Dlft}& Left side of current pen when its center is at the given coordinate(s)\\\hline
-llcorner\index{llcorner?\texttt{llcorner}}& --& picture\par path\par pen& pair& \pageref{Dcornop}& Lower-left corner of bounding box\\\hline
-lrcorner\index{lrcorner?\texttt{lrcorner}}& --& picture\par path\par pen& pair& \pageref{Dcornop}& Lower-right corner of bounding box\\\hline
-magentapart\index{magentapart?\texttt{magentapart}}& --& cmykcolor& numeric& \pageref{Dcmykprt}& Extract the second component\\\hline
-makepath\index{makepath?\texttt{makepath}}& --& pen& path& \pageref{Dmkpath}& Cyclic path bounding the pen shape\\\hline
-makepen\index{makepen?\texttt{makepen}}& --& path& pen& \pageref{Dmkpen}& A polygonal pen made from the convex hull of the path knots\\\hline
-mexp\index{mexp?\texttt{mexp}}& --& numeric& numeric& --& The function $\exp(x/256)$\\\hline
-mlog\index{mlog?\texttt{mlog}}& --& numeric& numeric& --& The function $256\ln(x)$\\\hline
-\pl mod\index{mod?\texttt{mod}}& --& numeric& numeric& --& The remainder function $l-r\lfloor l/r\rfloor$\\\hline
-normal\-deviate\index{normaldeviate?\texttt{normaldeviate}}& --& --& numeric& --& Choose a random number with mean~0 and standard deviation~1\\\hline
-not\index{not?\texttt{not}}& --& boolean& boolean& \pageref{Dnot}& Logical negation\\\hline
-numeric\index{numeric?\texttt{numeric}}& --& any& boolean& \pageref{Dnumop}& Is the expression of type numeric?\\\hline
-oct\index{oct?\texttt{oct}}& --& string& numeric& --& Interpret string as octal number\\\hline
-odd\index{odd?\texttt{odd}}& --& numeric& boolean& --& Is the closest integer odd or even?\\\hline
-or\index{or?\texttt{or}}& boolean& boolean& boolean& \pageref{Dor}& Logical inclusive or\\\hline
-pair\index{pair?\texttt{pair}}& --& any& boolean& \pageref{Dpairop}& Is the expression of type pair?\\\hline
-path\index{path?\texttt{path}}& --& any& boolean& \pageref{Dpathop}& Is the expression of type path?\\\hline
-pathpart\index{pathpart?\texttt{pathpart}}& --& picture& path& \pageref{Dpathpart}& Path of a stroked picture component\\\hline
-pen\index{pen?\texttt{pen}}& --& any& boolean& \pageref{Dpenop}& Is the expression of type pen?\\\hline
-penoffset of\index{penoffset of?\texttt{penoffset of}}& pair& pen& pair& --& Point on the pen furthest to the right of the given direction\\\hline
-penpart\index{penpart?\texttt{penpart}}& --& picture& pen& \pageref{Dpenpart}& Pen of a stroked picture component\\\hline
-picture\index{picture?\texttt{picture}}& --& any& boolean& \pageref{Dpictop}& Is the expression of type picture?\\\hline
-point of\index{point of?\texttt{point of}}& numeric& path& pair& \pageref{Dpntof}& Point on a path given a time value\\\hline
-postcontrol of\index{postcontrol of?\texttt{postcontrol of}}& numeric& path& pair& \pageref{Dprepostctrl}& First B\'ezier control point on path segment starting at the given time\\\hline
-precontrol of\index{precontrol of?\texttt{precontrol of}}& numeric& path& pair& \pageref{Dprepostctrl}& Last B\'ezier control point on path segment ending at the given time\\\hline
-readfrom\index{readfrom?\texttt{readfrom}}& --& string& string& \pageref{Dreadfrom}& Read a line from file\\\hline
-redpart\index{redpart?\texttt{redpart}}& --& color& numeric& \pageref{Drgbprt}& Extract the first component\\\hline
-reverse\index{reverse?\texttt{reverse}}& --& path& path& \pageref{Drevrse}& `time'-reversed path, beginning swapped with ending\\\hline
-rgbcolor\index{rgbcolor?\texttt{rgbcolor}}& --& any& boolean& \pageref{Drcolrop}& Is the expression of type color?\\\hline
-rotated\index{rotated?\texttt{rotated}}& picture\par path\par pair\par pen\par transform& numeric& picture\par path\par pair\par pen\par transform& \pageref{Dtranop}& Rotate counterclockwise a given number of degrees\\\hline
-\pl round\index{round?\texttt{round}}& --& numeric\par pair& numeric\par pair& \pageref{Dround}& Round each component to the nearest integer\\\hline
-\pl rt\index{rt?\texttt{rt}}& --& numeric\par pair& numeric\par pair& \pageref{Drt}& Right side of current pen when centered at given coordinate(s)\\\hline
-scaled\index{scaled?\texttt{scaled}}& picture\par path\par pair\par pen\par transform& numeric& picture\par path\par pair\par pen\par transform& \pageref{Dtranop}& Scale all coordinates by the given amount\\\hline
-scantokens\index{scantokens?\texttt{scantokens}}& --& string& token sequence& \pageref{Dscantokens}& Converts a string to a token or token sequence. Provides string to numeric conversion, etc.\\\hline
-shifted\index{shifted?\texttt{shifted}}& picture\par path\par pair\par pen\par transform& pair& picture\par path\par pair\par pen\par transform& \pageref{Dtranop}& Add the given shift amount to each pair of coordinates\\\hline
-sind\index{sind?\texttt{sind}}& --& numeric& numeric& \pageref{Dsind}& Sine of an angle in degrees\\\hline
-slanted\index{slanted?\texttt{slanted}}& picture\par path\par pair\par pen\par transform& numeric& picture\par path\par pair\par pen\par transform& \pageref{Dtranop}& Apply the slanting transformation that maps $(x,y)$ into $(x+sy,y)$, where~$s$ is the numeric argument\\\hline
-sqrt\index{sqrt?\texttt{sqrt}}& --& numeric& numeric& \pageref{Dsqrt}& Square root\\\hline
-str\index{str?\texttt{str}}& --& suffix& string& \pageref{Dstr}& String representation for a suffix\\\hline
-string\index{string?\texttt{string}}& --& any& boolean& \pageref{Dstrgop}& Is the expression of type string?\\\hline
-stroked\index{stroked?\texttt{stroked}}& --& any& boolean& \pageref{Dstroked}& Is argument a stroked line?\\\hline
-subpath of\index{subpath?\texttt{subpath}}& pair& path& path& \pageref{Dsubpth}& Portion of a path for given range of time values\\\hline
-substring of\index{substring
-of?\texttt{substring of}}& pair& string& string& \pageref{Dsubstr}& Substring bounded by given indices\\\hline
-textpart\index{textpart?\texttt{textpart}}& --& picture& string& \pageref{Dtextpart}& Text of a textual picture component\\\hline
-textual\index{textual?\texttt{textual}}& --& any& boolean& \pageref{Dtextual}& Is argument typeset text?\\\hline
-\pl top\index{top?\texttt{top}}& --& numeric\par pair& numeric\par pair& \pageref{Dtop}& Top of current pen when centered at the given coordinate(s)\\\hline
-transform\index{transform?\texttt{transform}}& --& any& boolean& \pageref{Dtrnfop}& Is the argument of type transform?\\\hline
-transformed\index{transformed?\texttt{transformed}}& picture\par path\par pair\par pen\par transform& transform& picture\par path\par pair\par pen\par transform& \pageref{Dtrfrmd}& Apply the given transform to all coordinates\\\hline
-ulcorner\index{ulcorner?\texttt{ulcorner}}& --& picture\par path\par pen& pair& \pageref{Dcornop}& Upper-left corner of bounding box\\\hline
-uniform\-deviate\index{uniformdeviate?\texttt{uniformdeviate}}& --& numeric& numeric& --& Random number between zero and the value of the argument\\\hline
-\pl unitvector\index{unitvector?\texttt{unitvector}}& --& pair& pair& \pageref{Duvec}& Rescale a vector so its length is~1\\\hline
-unknown\index{unknown?\texttt{unknown}}& --& any& boolean& \pageref{Dunknwn}& Is the value unknown?\\\hline
-urcorner\index{urcorner?\texttt{urcorner}}& --& picture\par path\par pen& pair& \pageref{Dcornop}& Upper-right corner of bounding box\\\hline
-\pl whatever\index{whatever?\texttt{whatever}}& --& --& numeric& \pageref{Dwhatev}& Create a new anonymous unknown\\\hline
-xpart\index{xpart?\texttt{xpart}}& --& pair\par transform& number& \pageref{Dxprt}& $x$ or $t_x$ component\\\hline
-xscaled\index{xscaled?\texttt{xscaled}}& picture\par path\par pair\par pen\par transform& numeric& picture\par path\par pair\par pen\par transform& \pageref{Dtranop}& Scale all $x$ coordinates by the given amount\\\hline
-xxpart\index{xxpart?\texttt{xxpart}}& --& transform& number& \pageref{Dtrprt}& $t_{xx}$ entry in transformation matrix\\\hline
-xypart\index{xypart?\texttt{xypart}}& --& transform& number& \pageref{Dtrprt}& $t_{xy}$ entry in transformation matrix\\\hline
-yellowpart\index{yellowpart?\texttt{yellowpart}}& --& cmykcolor& numeric& \pageref{Dcmykprt}& Extract the third component\\\hline
-ypart\index{ypart?\texttt{ypart}}& --& pair\par transform& number& \pageref{Dyprt}& $y$ or $t_y$ component\\\hline
-yscaled\index{yscaled?\texttt{yscaled}}& picture\par path\par pair\par pen\par transform& numeric& picture\par path\par pair\par pen\par transform& \pageref{Dtranop}& Scale all $y$ coordinates by the given amount\\\hline
-yxpart\index{yxpart?\texttt{yxpart}}& --& transform& number& \pageref{Dtrprt}& $t_{yx}$ entry in transformation matrix\\\hline
-yypart\index{yypart?\texttt{yypart}}& --& transform& number& \pageref{Dtrprt}& $t_{yy}$ entry in transformation matrix\\\hline
-zscaled\index{zscaled?\texttt{zscaled}}& picture\par path\par pair\par pen\par transform& pair& picture\par path\par pair\par pen\par transform& \pageref{Dtranop}& Rotate and scale all coordinates so that $(1,0)$ is mapped into the given pair; i.e., do complex multiplication.\\\hline
-\end{longtable}
-
-%%% Local Variables:
-%%% mode: latex
-%%% TeX-PDF-mode: t
-%%% TeX-master: "mpman"
-%%% End:
+\svnInfo $Id: mpman-app-optab.tex 1598 2011-04-05 14:14:16Z taco $
+%%% Two notes on column specification:
+%%% (i) Column widths are manually chosen as small as possible to allow
+%%% for a wider last X column.
+%%% (ii) In the first column \linepenalty=100 prefers shorter paragraphs
+%%% (less lines), where plain \raggedright were indifferent and
+%%% sometimes caused a dangling line, e.g., for 'directionpoint of'
+%%% or 'directiontime of'.
+\begin{longtable}{|>{\raggedright\linepenalty=100\ttfamily}p{.793in}*{3}{|>{\raggedright}p{.715in}}|>{\raggedleft}p{1.5em}|>{\raggedright\arraybackslash}X|}
+\caption{\strut Operators}\label{optab}\\
+\hline
+Name& \multicolumn3{c|}{Argument/result types}& \makebox[.2in][c]{Page}& Explanation\\\cline{2-4}
+& \multicolumn1{c|}{Left}& \multicolumn1{c|}{Right}& \multicolumn1{c|}{Result}& & \\
+\hline
+\hline
+\endfirsthead
+\caption[]{\strut Operators \emph{(continued)}}\\
+\hline
+Name& \multicolumn3{c|}{Argument/result types}& \makebox[.2in][c]{Page}& Explanation\\\cline{2-4}
+& \multicolumn1{c|}{Left}& \multicolumn1{c|}{Right}& \multicolumn1{c|}{Result}& & \\
+\hline
+\hline
+\endhead
+\&\index{&?\texttt{\&}}& string\par path& string\par path & string\par path& \pageref{Damp}& Concatenation---works for paths $l\hbox{\tt\&}r$ if $r$ starts exactly where the $l$ ends\\\hline
+*\index{*?\texttt{*}}& numeric& (cmyk)color\par numeric\par pair& (cmyk)color\par numeric\par pair& \pageref{Dmldiv}& Multiplication\\\hline
+*\index{*?\texttt{*}}& (cmyk)color\par numeric\par pair& numeric& (cmyk)color\par numeric\par pair& \pageref{Dmldiv}& Multiplication\\\hline
+**\index{**?\texttt{**}}& numeric& numeric& numeric& \pageref{Dpow}& Exponentiation\\\hline
++\index{+?\texttt{+}}& (cmyk)color\par numeric\par pair& (cmyk)color\par numeric\par pair& (cmyk)color\par numeric\par pair& \pageref{Dadd}& Addition\\\hline
+++\index{++?\texttt{++}}& numeric& numeric& numeric& \pageref{Dpyadd}& Pythagorean addition $\sqrt{l^2+r^2}$\\\hline
++-+\index{+-+?\texttt{+-+}}& numeric& numeric& numeric& \pageref{Dpysub}& Pythagorean subtraction $\sqrt{l^2-r^2}$\\\hline
+-\index{-?\texttt{-}}& (cmyk)color\par numeric\par pair& (cmyk)color\par numeric\par pair& (cmyk)color\par numeric\par pair& \pageref{Dadd}& Subtraction\\\hline
+-\index{-?\texttt{-}}& --& (cmyk)color\par numeric\par pair& (cmyk)color\par numeric\par pair& \pageref{Dneg}& Negation\\\hline
+/\index{/?\texttt{/}}& (cmyk)color\par numeric\par pair& numeric& (cmyk)color\par numeric\par pair& \pageref{Dmldiv}& Division\\\hline
+<\index{<?\texttt{<}} =\index{=?\texttt{=}} >\index{>?\texttt{>}}\par <=\index{<=?\texttt{<=}} >=\index{>=?\texttt{>=}}\par <>\index{<>?\texttt{<>}}& string\par numeric\par pair\par (cmyk)color\par transform& string\par numeric\par pair\par (cmyk)color\par transform& boolean& \pageref{Dcmpar}& Comparison operators\\\hline
+\pl abs\index{abs?\texttt{abs}}& --& numeric\par pair& numeric& \pageref{Dabs}& Absolute value\par Euclidean length $\sqrt{(\mbox{\ttfamily xpart\ } r)^2+(\mbox{\ttfamily ypart\ } r)^2}$\\\hline
+and\index{and?\texttt{and}}& boolean& boolean& boolean& \pageref{Dand}& Logical and\\\hline
+angle\index{angle?\texttt{angle}}& --& pair& numeric& \pageref{Dangle}& 2$-$argument arctangent (in degrees)\\\hline
+arclength\index{arclength?\texttt{arclength}}& --& path& numeric& \pageref{Darclng}& Arc length of a path\\\hline
+arctime of\index{arctime of?\texttt{arctime of}}& numeric& path& numeric& \pageref{Darctim}& Time on a path where arc length from the start reaches a given value\\\hline
+ASCII\index{ASCII?\texttt{ASCII}}& --& string& numeric& --& ASCII value of first character in string\\\hline
+\pl bbox\index{bbox?\texttt{bbox}}& --& picture\par path\par pen& path& \pageref{Dbbox}& A rectangular path for the bounding box\\\hline
+blackpart\index{blackpart?\texttt{blackpart}}& --& cmykcolor& numeric& \pageref{Dcmykprt}& Extract the fourth component\\\hline
+bluepart\index{bluepart?\texttt{bluepart}}& --& color& numeric& \pageref{Drgbprt}& Extract the third component\\\hline
+boolean\index{boolean?\texttt{boolean}}& --& any& boolean& \pageref{Dboolop}& Is the expression of type boolean?\\\hline
+\pl bot\index{bot?\texttt{bot}}& --& numeric\par pair& numeric\par pair& \pageref{Dbot}& Bottom of current pen when centered at the given coordinate(s)\\\hline
+bounded\index{bounded?\texttt{bounded}}& --& any& boolean& \pageref{Dbounded}& Is argument a picture with a bounding box?\\\hline
+\pl ceiling\index{ceiling?\texttt{ceiling}}& --& numeric& numeric& \pageref{Dceil}& Least integer greater than or equal to\\\hline
+\pl center\index{center?\texttt{center}}& --& picture\par path\par pen& pair& \pageref{Dcenter}& Center of the bounding box\\\hline
+char\index{char?\texttt{char}}& --& numeric& string& \pageref{Dchar}& Character with a given ASCII code\\\hline
+clipped\index{clipped?\texttt{clipped}}& --& any& boolean& \pageref{Dclipped}& Is argument a clipped picture?\\\hline
+cmykcolor\index{cmykcolor?\texttt{cmykcolor}}& --& any& boolean& \pageref{Dccolrop}& Is the expression of type cmykcolor?\\\hline
+color\index{color?\texttt{color}}& --& any& boolean& \pageref{Dcolrop}& Is the expression of type color?\\\hline
+colormodel\index{colormodel?\texttt{colormodel}}& --& image object& numeric& \pageref{Dcolormodel}& What is the color model of the image object?\\\hline
+\pl colorpart\index{colorpart?\texttt{colorpart}}& --& image object&
+(cmyk)color\par numeric\par boolean& \pageref{Dcolorpart}& What is the
+color of the image object?\\\hline
+cosd\index{cosd?\texttt{cosd}}& --& numeric& numeric& \pageref{Dcosd}& Cosine of angle in degrees\\\hline
+\pl cutafter\index{cutafter?\texttt{cutafter}}& path& path& path& \pageref{Dcuta}& Left argument with part after the intersection dropped\\\hline
+\pl cutbefore\index{cutbefore?\texttt{cutbefore}}& path& path& path& \pageref{Dcutb}& Left argument with part before the intersection dropped\\\hline
+cyanpart\index{cyanpart?\texttt{cyanpart}}& --& cmykcolor& numeric& \pageref{Dcmykprt}& Extract the first component\\\hline
+cycle\index{cycle?\texttt{cycle}}& --& path& boolean& \pageref{Dcycop}& Determines whether a path is cyclic\\\hline
+dashpart\index{dashpart?\texttt{dashpart}}& --& picture& picture& \pageref{Ddashpart}& Dash pattern of a path in a stroked picture\\\hline
+decimal\index{decimal?\texttt{decimal}}& --& numeric& string& \pageref{Ddecop}& The decimal representation\\\hline
+\pl dir\index{dir?\texttt{dir}}& --& numeric& pair& \pageref{Ddirop}& $(\cos\theta,\sin\theta)$ given $\theta$ in degrees\\\hline
+\pl direction of\index{direction of?\texttt{direction of}}& numeric& path& pair& \pageref{Ddirof}& The direction of a path at a given `time'\\\hline
+\pl direction\-point of\index{directionpoint of?\texttt{directionpoint of}}& pair& path& numeric& \pageref{Ddpntof}& Point where a path has a given direction\\\hline
+direction\-time of\index{directiontime of?\texttt{directiontime of}}& pair& path& numeric& \pageref{Ddtimof}& `Time' when a path has a given direction\\\hline
+\pl div\index{div?\texttt{div}}& numeric& numeric& numeric& --& Integer division $\lfloor l/r\rfloor$\\\hline
+\pl dotprod\index{dotprod?\texttt{dotprod}}& pair& pair& numeric& \pageref{Ddprod}& Vector dot product\\\hline
+filled\index{filled?\texttt{filled}}& --& any& boolean& \pageref{Dfilled}& Is argument a filled outline?\\\hline
+floor\index{floor?\texttt{floor}}& --& numeric& numeric& \pageref{Dfloor}& Greatest integer less than or equal to\\\hline
+fontpart\index{fontpart?\texttt{fontpart}}& --& picture& string& \pageref{Dfontpart}& Font of a textual picture component\\\hline
+fontsize\index{fontsize?\texttt{fontsize}}& --& string& numeric& \pageref{Dfntsiz}& The point size of a font\\\hline
+glyph of\index{glyph?\texttt{glyph}}& numeric\par string& string& picture&
+\pageref{Dglyph}& Convert a glyph of a font to contours\\\hline
+greenpart\index{greenpart?\texttt{greenpart}}& --& color& numeric& \pageref{Drgbprt}& Extract the second component\\\hline
+greypart\index{greypart?\texttt{greypart}}& --& numeric& numeric& \pageref{Dgreyprt}& Extract the first (only) component\\\hline
+hex\index{hex?\texttt{hex}}& --& string& numeric& --& Interpret as a hexadecimal number\\\hline
+infont\index{infont?\texttt{infont}}& string& string& picture& \pageref{Sinfont}& Typeset string in given font\\\hline
+\pl intersec\-tionpoint\index{intersectionpoint?\texttt{intersectionpoint}}& path& path& pair& \pageref{Disecpt}& An intersection point\\\hline
+intersec\-tiontimes\index{intersectiontimes?\texttt{intersectiontimes}}& path& path& pair& \pageref{Disectt}& Times ($t_l,t_r)$ on paths $l$ and $r$ when the paths intersect\\\hline
+\pl inverse\index{inverse?\texttt{inverse}}& --& transform& transform& \pageref{Dinv}& Invert a transformation\\\hline
+known\index{known?\texttt{known}}& --& any& boolean& \pageref{Dknown}& Does argument have a known value?\\\hline
+length\index{length?\texttt{length}}& --& path\par string\par picture& numeric& \pageref{Dlength}\par \pageref{DlengthString}\par \pageref{DlengthPicture}& Number of components (arcs, characters, strokes, \ldots) in the argument\\\hline
+\pl lft\index{lft?\texttt{lft}}& --& numeric\par pair& numeric\par pair& \pageref{Dlft}& Left side of current pen when its center is at the given coordinate(s)\\\hline
+llcorner\index{llcorner?\texttt{llcorner}}& --& picture\par path\par pen& pair& \pageref{Dcornop}& Lower-left corner of bounding box\\\hline
+lrcorner\index{lrcorner?\texttt{lrcorner}}& --& picture\par path\par pen& pair& \pageref{Dcornop}& Lower-right corner of bounding box\\\hline
+magentapart\index{magentapart?\texttt{magentapart}}& --& cmykcolor& numeric& \pageref{Dcmykprt}& Extract the second component\\\hline
+makepath\index{makepath?\texttt{makepath}}& --& pen& path& \pageref{Dmkpath}& Cyclic path bounding the pen shape\\\hline
+makepen\index{makepen?\texttt{makepen}}& --& path& pen& \pageref{Dmkpen}& A polygonal pen made from the convex hull of the path knots\\\hline
+mexp\index{mexp?\texttt{mexp}}& --& numeric& numeric& --& The function $\exp(x/256)$\\\hline
+mlog\index{mlog?\texttt{mlog}}& --& numeric& numeric& --& The function $256\ln(x)$\\\hline
+\pl mod\index{mod?\texttt{mod}}& --& numeric& numeric& --& The remainder function $l-r\lfloor l/r\rfloor$\\\hline
+normal\-deviate\index{normaldeviate?\texttt{normaldeviate}}& --& --& numeric& --& Choose a random number with mean~0 and standard deviation~1\\\hline
+not\index{not?\texttt{not}}& --& boolean& boolean& \pageref{Dnot}& Logical negation\\\hline
+numeric\index{numeric?\texttt{numeric}}& --& any& boolean& \pageref{Dnumop}& Is the expression of type numeric?\\\hline
+oct\index{oct?\texttt{oct}}& --& string& numeric& --& Interpret string as octal number\\\hline
+odd\index{odd?\texttt{odd}}& --& numeric& boolean& --& Is the closest integer odd or even?\\\hline
+or\index{or?\texttt{or}}& boolean& boolean& boolean& \pageref{Dor}& Logical inclusive or\\\hline
+pair\index{pair?\texttt{pair}}& --& any& boolean& \pageref{Dpairop}& Is the expression of type pair?\\\hline
+path\index{path?\texttt{path}}& --& any& boolean& \pageref{Dpathop}& Is the expression of type path?\\\hline
+pathpart\index{pathpart?\texttt{pathpart}}& --& picture& path& \pageref{Dpathpart}& Path of a stroked picture component\\\hline
+pen\index{pen?\texttt{pen}}& --& any& boolean& \pageref{Dpenop}& Is the expression of type pen?\\\hline
+penoffset of\index{penoffset of?\texttt{penoffset of}}& pair& pen& pair& --& Point on the pen furthest to the right of the given direction\\\hline
+penpart\index{penpart?\texttt{penpart}}& --& picture& pen& \pageref{Dpenpart}& Pen of a stroked picture component\\\hline
+picture\index{picture?\texttt{picture}}& --& any& boolean& \pageref{Dpictop}& Is the expression of type picture?\\\hline
+point of\index{point of?\texttt{point of}}& numeric& path& pair& \pageref{Dpntof}& Point on a path given a time value\\\hline
+postcontrol of\index{postcontrol of?\texttt{postcontrol of}}& numeric& path& pair& \pageref{Dprepostctrl}& First B\'ezier control point on path segment starting at the given time\\\hline
+precontrol of\index{precontrol of?\texttt{precontrol of}}& numeric& path& pair& \pageref{Dprepostctrl}& Last B\'ezier control point on path segment ending at the given time\\\hline
+readfrom\index{readfrom?\texttt{readfrom}}& --& string& string& \pageref{Dreadfrom}& Read a line from file\\\hline
+redpart\index{redpart?\texttt{redpart}}& --& color& numeric& \pageref{Drgbprt}& Extract the first component\\\hline
+reverse\index{reverse?\texttt{reverse}}& --& path& path& \pageref{Drevrse}& `time'-reversed path, beginning swapped with ending\\\hline
+rgbcolor\index{rgbcolor?\texttt{rgbcolor}}& --& any& boolean& \pageref{Drcolrop}& Is the expression of type color?\\\hline
+rotated\index{rotated?\texttt{rotated}}& picture\par path\par pair\par pen\par transform& numeric& picture\par path\par pair\par pen\par transform& \pageref{Dtranop}& Rotate counterclockwise a given number of degrees\\\hline
+\pl round\index{round?\texttt{round}}& --& numeric\par pair& numeric\par pair& \pageref{Dround}& Round each component to the nearest integer\\\hline
+\pl rt\index{rt?\texttt{rt}}& --& numeric\par pair& numeric\par pair& \pageref{Drt}& Right side of current pen when centered at given coordinate(s)\\\hline
+scaled\index{scaled?\texttt{scaled}}& picture\par path\par pair\par pen\par transform& numeric& picture\par path\par pair\par pen\par transform& \pageref{Dtranop}& Scale all coordinates by the given amount\\\hline
+scantokens\index{scantokens?\texttt{scantokens}}& --& string& token sequence& \pageref{Dscantokens}& Converts a string to a token or token sequence. Provides string to numeric conversion, etc.\\\hline
+shifted\index{shifted?\texttt{shifted}}& picture\par path\par pair\par pen\par transform& pair& picture\par path\par pair\par pen\par transform& \pageref{Dtranop}& Add the given shift amount to each pair of coordinates\\\hline
+sind\index{sind?\texttt{sind}}& --& numeric& numeric& \pageref{Dsind}& Sine of an angle in degrees\\\hline
+slanted\index{slanted?\texttt{slanted}}& picture\par path\par pair\par pen\par transform& numeric& picture\par path\par pair\par pen\par transform& \pageref{Dtranop}& Apply the slanting transformation that maps $(x,y)$ into $(x+sy,y)$, where~$s$ is the numeric argument\\\hline
+sqrt\index{sqrt?\texttt{sqrt}}& --& numeric& numeric& \pageref{Dsqrt}& Square root\\\hline
+str\index{str?\texttt{str}}& --& suffix& string& \pageref{Dstr}& String representation for a suffix\\\hline
+string\index{string?\texttt{string}}& --& any& boolean& \pageref{Dstrgop}& Is the expression of type string?\\\hline
+stroked\index{stroked?\texttt{stroked}}& --& any& boolean& \pageref{Dstroked}& Is argument a stroked line?\\\hline
+subpath of\index{subpath?\texttt{subpath}}& pair& path& path& \pageref{Dsubpth}& Portion of a path for given range of time values\\\hline
+substring of\index{substring
+of?\texttt{substring of}}& pair& string& string& \pageref{Dsubstr}& Substring bounded by given indices\\\hline
+textpart\index{textpart?\texttt{textpart}}& --& picture& string& \pageref{Dtextpart}& Text of a textual picture component\\\hline
+textual\index{textual?\texttt{textual}}& --& any& boolean& \pageref{Dtextual}& Is argument typeset text?\\\hline
+\pl top\index{top?\texttt{top}}& --& numeric\par pair& numeric\par pair& \pageref{Dtop}& Top of current pen when centered at the given coordinate(s)\\\hline
+transform\index{transform?\texttt{transform}}& --& any& boolean& \pageref{Dtrnfop}& Is the argument of type transform?\\\hline
+transformed\index{transformed?\texttt{transformed}}& picture\par path\par pair\par pen\par transform& transform& picture\par path\par pair\par pen\par transform& \pageref{Dtrfrmd}& Apply the given transform to all coordinates\\\hline
+ulcorner\index{ulcorner?\texttt{ulcorner}}& --& picture\par path\par pen& pair& \pageref{Dcornop}& Upper-left corner of bounding box\\\hline
+uniform\-deviate\index{uniformdeviate?\texttt{uniformdeviate}}& --& numeric& numeric& --& Random number between zero and the value of the argument\\\hline
+\pl unitvector\index{unitvector?\texttt{unitvector}}& --& pair& pair& \pageref{Duvec}& Rescale a vector so its length is~1\\\hline
+unknown\index{unknown?\texttt{unknown}}& --& any& boolean& \pageref{Dunknwn}& Is the value unknown?\\\hline
+urcorner\index{urcorner?\texttt{urcorner}}& --& picture\par path\par pen& pair& \pageref{Dcornop}& Upper-right corner of bounding box\\\hline
+\pl whatever\index{whatever?\texttt{whatever}}& --& --& numeric& \pageref{Dwhatev}& Create a new anonymous unknown\\\hline
+xpart\index{xpart?\texttt{xpart}}& --& pair\par transform& number& \pageref{Dxprt}& $x$ or $t_x$ component\\\hline
+xscaled\index{xscaled?\texttt{xscaled}}& picture\par path\par pair\par pen\par transform& numeric& picture\par path\par pair\par pen\par transform& \pageref{Dtranop}& Scale all $x$ coordinates by the given amount\\\hline
+xxpart\index{xxpart?\texttt{xxpart}}& --& transform& number& \pageref{Dtrprt}& $t_{xx}$ entry in transformation matrix\\\hline
+xypart\index{xypart?\texttt{xypart}}& --& transform& number& \pageref{Dtrprt}& $t_{xy}$ entry in transformation matrix\\\hline
+yellowpart\index{yellowpart?\texttt{yellowpart}}& --& cmykcolor& numeric& \pageref{Dcmykprt}& Extract the third component\\\hline
+ypart\index{ypart?\texttt{ypart}}& --& pair\par transform& number& \pageref{Dyprt}& $y$ or $t_y$ component\\\hline
+yscaled\index{yscaled?\texttt{yscaled}}& picture\par path\par pair\par pen\par transform& numeric& picture\par path\par pair\par pen\par transform& \pageref{Dtranop}& Scale all $y$ coordinates by the given amount\\\hline
+yxpart\index{yxpart?\texttt{yxpart}}& --& transform& number& \pageref{Dtrprt}& $t_{yx}$ entry in transformation matrix\\\hline
+yypart\index{yypart?\texttt{yypart}}& --& transform& number& \pageref{Dtrprt}& $t_{yy}$ entry in transformation matrix\\\hline
+zscaled\index{zscaled?\texttt{zscaled}}& picture\par path\par pair\par pen\par transform& pair& picture\par path\par pair\par pen\par transform& \pageref{Dtranop}& Rotate and scale all coordinates so that $(1,0)$ is mapped into the given pair; i.e., do complex multiplication.\\\hline
+\end{longtable}
+
+%%% Local Variables:
+%%% mode: latex
+%%% TeX-PDF-mode: t
+%%% TeX-master: "mpman"
+%%% End:
diff --git a/Master/texmf-dist/doc/metapost/base/source-manual/mpman-app-refman.tex b/Master/texmf-dist/doc/metapost/base/source-manual/mpman-app-refman.tex
index 614b6f3be7f..863d93df13e 100644
--- a/Master/texmf-dist/doc/metapost/base/source-manual/mpman-app-refman.tex
+++ b/Master/texmf-dist/doc/metapost/base/source-manual/mpman-app-refman.tex
@@ -1,1053 +1,1051 @@
-\svnInfo $Id: mpman-app-refman.tex 1381 2010-10-08 16:13:03Z stephanhennig $
-\section{Reference Manual}
-\label{refman}
-
-\begingroup
-\renewcommand\topfraction{1.0}% Allow *lots* of figures and tables.
-\renewcommand\textfraction{0.0}
-\setcounter{topnumber}{10}
-\setcounter{totalnumber}{10}
-
-\subsection{The MetaPost Language}
-\label{refman:lang}
-
-Tables \ref{ivartab}--\ref{pseudotab} summarize the built-in features of
-Plain MetaPost. Features from the Plain\index{Plain macros} macro
-package are marked by \pl\ symbols. The distinction between primitives
-and plain macros can be ignored by the casual user.
-
-The tables in this appendix give the name of each feature, the page
-number where it is explained, and a short description. A few features
-are not explained elsewhere and have no page number listed. These
-features exist primarily for compatibility with \MF\index{metafont?\MF}
-and are intended to be self-explanatory. Certain other features from
-\MF\ are omitted entirely because they are of limited interest to the
-MetaPost users and/or would require long explanations. All of these are
-documented in {\sl The \MF book} \cite{kn:c} as explained in
-Appendix~\ref{MPvsMF}.
-
-Tables~\ref{ivartab} and~\ref{isvartab} list internal variables that
-take on numeric and string values. Table~\ref{pvartab} lists predefined
-variables of other types. Table~\ref{consttab} lists predefined
-constants. Some of these are implemented as variables whose values are
-intended to be left unchanged.
-
-Table~\ref{optab} summarizes MetaPost operators and lists
-the possible argument and result types for each one. A ``--'' entry for
-the left argument indicates a unary operator; ``--'' entries for both
-arguments indicate a nullary operator. Operators that take suffix
-parameters are not listed in this table because they are treated as
-``function-like macros''.
-
-The last two tables are Table~\ref{cmdtab} for commands and
-Table~\ref{pseudotab} macros that behave like functions or procedures.
-Such macros take parenthesized argument lists and/or suffix parameters,
-returning either a value whose type is listed in the table, or nothing.
-The latter case is for macros that behave like procedures. Their return
-values are listed as ``--''.
-
-The figures in this appendix present the syntax of the MetaPost language
-starting with expressions in Figures \ref{syexpr1}--\ref{sypseudo}.
-Although the productions sometimes specify types for expressions, primaries,
-secondaries, and tertiaries, no attempt is made to give separate syntaxes
-for \tdescr{numeric expression}, \tdescr{pair expression}, etc.
-The simplicity of the productions in Figure~\ref{sytypexpr} is due to this
-lack of type information. Type information
-can be found in Tables \ref{ivartab}--\ref{pseudotab}.
-
-Figures \ref{syprog}, \ref{sycmds1} and~\ref{sycmds2} give the syntax
-for MetaPost programs, including statements and commands. They do not
-mention loops\index{loops} and {\tt if}\index{if?\texttt{if}} tests
-because these constructions do not behave like statements. The syntax
-given in Figures \ref{syexpr1}--\ref{sycondloop} applies to the result
-of expanding all conditionals and loops. Conditionals and loops do have
-a syntax, but they deal with almost arbitrary sequences of tokens.
-Figure~\ref{sycondloop} specifies conditionals in terms of
-\tdescr{balanced tokens} and loops in terms of \tdescr{loop text}, where
-\tdescr{balanced tokens} is any sequence of tokens balanced with respect
-to {\tt if} and {\tt fi}, and \tdescr{loop text} is a sequence of tokens
-balanced with respect to {\tt for}, {\tt forsuffixes}, {\tt forever},
-and {\tt endfor}.
-
-\begin{table}[htp]
-\caption{Internal variables with numeric values}
-$$\begin{tabular}{|l|r|l|}
-\hline
-\multicolumn1{|c}{Name}& \multicolumn1{|c}{Page}& \multicolumn1{|c|}{Explanation}\\
-\hline
-\hline
-\pl\tt ahangle& \pageref{Dahangle}&
- Angle for arrowheads in degrees (default: 45)\\\hline
-\pl\tt ahlength& \pageref{Dahlength}&
- Size of arrowheads (default: 4{\tt bp})\\\hline
-\pl\tt bboxmargin& \pageref{Dbbmargin}&
- Extra space allowed by {\tt bbox} (default 2{\tt bp})\\\hline
-\tt charcode& \pageref{Dcharcode}&
- The number of the current figure\\\hline
-\tt day& \pageref{Dday}&
- The current day of the month\\\hline
-\tt defaultcolormodel& \pageref{Ddefaultcolormodel}&
- The initial color model (default: 5, rgb)\\\hline
-\pl\tt defaultpen& \pageref{Ddefaultpen}&
- Numeric index used by {\tt pickup} to select default pen\\\hline
-\pl\tt defaultscale& \pageref{Ddfscale}&
- Font scale factor for label strings (default 1)\\\hline
-\pl\tt dotlabeldiam& \pageref{Ddotlabdiam}&
- Diameter of the dot drawn by \verb|dotlabel| (default 3{\tt bp})\\\hline
-\tt hour& \pageref{Dhour}&
- The hour of the day this job started\\\hline
-\pl\tt labeloffset& \pageref{Dlaboff}&
- Offset distance for labels (default 3{\tt bp})\\\hline
-\tt linecap& \pageref{Dlinecap}&
- 0 for butt, 1 for round, 2 for square\\\hline
-\tt linejoin& \pageref{Dlinejoin}&
- 0 for mitered, 1 for round, 2 for beveled\\\hline
-\tt minute& \pageref{Dminute}&
- The minute of the hour this job started\\\hline
-\tt miterlimit& \pageref{Dmiterlim}&
- Controls miter length as in PostScript\\\hline
-\tt month& \pageref{Dmonth}&
- The current month (e.g, 3 $\equiv$ March)\\\hline
-\tt mpprocset& \pageref{Dmpprocset}&
- Create a PostScript dictionary of command abbreviations\\\hline
-\tt pausing& --&
- ${}>0$ to display lines on the terminal before they are read\\\hline
-\tt prologues& \pageref{Dprologues}&
- ${}>0$ to output conforming PostScript using built-in fonts\\\hline
-\tt restoreclipcolor& --&
- Restore the graphics state after clip operations (default: 1)\\\hline
-\tt showstopping& --&
- ${}>0$ to stop after each {\tt show} command\\\hline
-\tt time& \pageref{Dtime}&
- The number of minutes past midnight when this job started\\\hline
-\tt tracingcapsules& \pageref{Dtcapsules}&
- ${}>0$ to show capsules too\\\hline
-\tt tracingchoices& \pageref{Dtchoices}&
- ${}>0$ to show the control points chosen for paths\\\hline
-\tt tracingcommands& \pageref{Dtcommands}&
- ${}>0$ to show commands and operations as they are performed\\\hline
-\tt tracingequations& \pageref{Dtequations}&
- ${}>0$ to show each variable when it becomes known\\\hline
-\tt tracinglostchars& \pageref{Dtlostchars}&
- ${}>0$ to show characters that aren't {\tt infont}\\\hline
-\tt tracingmacros& \pageref{Dtmacros}&
- ${}>0$ to show macros before they are expanded\\\hline
-\tt tracingonline& \pageref{Dtonline}&
- ${}>0$ to show long diagnostics on the terminal\\\hline
-\tt tracingoutput& \pageref{Dtoutput}&
- ${}>0$ to show digitized edges as they are output\\\hline
-\tt tracingrestores& \pageref{Dtrestores}&
- ${}>0$ to show when a variable or internal is restored\\\hline
-\tt tracingspecs& \pageref{Dtspecs}&
- ${}>0$ to show path subdivision when using a polygonal a pen\\\hline
-\tt tracingstats& \pageref{Dtstats}&
- ${}>0$ to show memory usage at end of job\\\hline
-\tt tracingtitles& --&
- ${}>0$ to show titles online when they appear\\\hline
-\tt troffmode& \pageref{Dtroffmode}&
- Set to~1 if a {\tt -troff} or {\tt -T} option was given\\\hline
-\tt truecorners& \pageref{Dtruecorn}&
- ${}>0$ to make {\tt llcorner} etc. ignore {\tt setbounds}\\\hline
-\tt warningcheck& \pageref{Dwarncheck}&
- Controls error message when variable value is large\\\hline
-\tt year& \pageref{Dyear}&
- The current year (e.g., 1992)\\\hline
-\end{tabular}
-$$
-\label{ivartab}%
-\index{day?\texttt{day}}\index{hour?\texttt{hour}}\index{minute?\texttt{minute}}\index{month?\texttt{month}}\index{pausing?\texttt{pausing}}\index{showstopping?\texttt{showstopping}}%
-\index{time?\texttt{time}}\index{tracingtitles?\texttt{tracingtitles}}\index{year?\texttt{year}}
-\end{table}
-
-
-\begin{table}[htp]
-\caption{Internal string variables}
-$$\begin{tabular}{|l|r|l|}
-\hline
-\multicolumn1{|c}{Name}& \multicolumn1{|c}{Page}& \multicolumn1{|c|}{Explanation}\\
-\hline
-\hline
-\tt jobname& --&
- The name of this job\\\hline
-\tt outputformat& \pageref{Doutputformat}&
- Output backend to be used (default: ``eps'')\\\hline
-\tt outputtemplate& \pageref{Doutputtemplate}&
- Output filename template (default: ``\%j.\%c'')\\\hline
-\end{tabular}
-$$
-\label{isvartab}
-\index{jobname?\texttt{jobname}}
-\end{table}
-
-
-\begin{table}[htp]
-\caption{Other Predefined Variables}
-$$\begin{tabular}{|l|l|r|l|}
-\hline
-\multicolumn1{|c}{Name}& \multicolumn1{|c}{Type}& \multicolumn1{|c}{Page}&
- \multicolumn1{|c|}{Explanation}\\
-\hline
-\hline
-\pl\tt background& color& \pageref{Dbground}&
- Color for {\tt unfill} and {\tt undraw} (usually white)\\\hline
-\pl\tt currentpen& pen& \pageref{Dcurpen}&
- Last pen picked up (for use by the {\tt draw} command)\\\hline
-\pl\tt currentpicture& picture& \pageref{Dcurpic}&
- Accumulate results of {\tt draw} and {\tt fill} commands\\\hline
-\pl\tt cuttings& path& \pageref{Dcuttings}&
- Subpath cut off by last {\tt cutbefore} or {\tt cutafter}\\\hline
-\pl\tt defaultfont& string& \pageref{Ddffont}&
- Font used by label commands for typesetting strings\\\hline
-\pl\tt extra\_beginfig& string& \pageref{Dxbfig}&
- Commands for {\tt beginfig} to scan\\\hline
-\pl\tt extra\_endfig& string& \pageref{Dxefig}&
- Commands for {\tt endfig} to scan\\\hline
-\end{tabular}
-$$
-\label{pvartab}
-\end{table}
-
-
-\begin{table}[htp]
-\caption{Predefined Constants}
-$$\begin{tabular}{|l|l|r|l|}
-\hline
-\multicolumn1{|c}{Name}& \multicolumn1{|c}{Type}& \multicolumn1{|c}{Page}&
- \multicolumn1{|c|}{Explanation}\\
-\hline
-\hline
-\pl\tt beveled& numeric& \pageref{Dbvled}&
- {\tt linejoin} value for beveled joins [2]\\\hline
-\pl\tt black& color& \pageref{Dblack}&
- Equivalent to {\tt (0,0,0)}\\\hline
-\pl\tt blue& color& \pageref{Dblue}&
- Equivalent to {\tt (0,0,1)}\\\hline
-\pl\tt bp& numeric& \pageref{Dbp}&
- One PostScript point in {\tt bp} units [1]\\\hline
-\pl\tt butt& numeric& \pageref{Dbutt}&
- {\tt linecap} value for butt end caps [0]\\\hline
-\pl\tt cc& numeric& --&
- One cicero in {\tt bp} units [12.79213]\\\hline
-\pl\tt cm& numeric& \pageref{Dcm}&
- One centimeter in {\tt bp} units [28.34645]\\\hline
-\pl\tt dd& numeric& --&
- One didot point in {\tt bp} units [1.06601]\\\hline
-\pl\tt ditto& string& --&
- The {\tt "} character as a string of length 1\\\hline
-\pl\tt down& pair& \pageref{Ddown}&
- Downward direction vector $(0,-1)$\\\hline
-\pl\tt epsilon& numeric& --&
- Smallest positive MetaPost number [$1\over65536$]\\\hline
-\pl\tt evenly& picture& \pageref{Devenly}&
- Dash pattern for equal length dashes\\\hline
-\pl\tt EOF& string& \pageref{Deof}&
- Single null character\\\hline
-\tt false& boolean& \pageref{Dfalse}&
- The boolean value {\it false\/}\\\hline
-\pl\tt fullcircle& path& \pageref{Dfcirc}&
- Circle of diameter 1 centered on $(0,0)$\\\hline
-\pl\tt green& color& \pageref{Dgreen}&
- Equivalent to {\tt (0,1,0)}\\\hline
-\pl\tt halfcircle& path& \pageref{Dhcirc}&
- Upper half of a circle of diameter 1\\\hline
-\pl\tt identity& transform& \pageref{Dident}&
- Identity transformation\\\hline
-\pl\tt in& numeric& \pageref{Din}&
- One inch in {\tt bp} units [72]\\\hline
-\pl\tt infinity& numeric& \pageref{Dinf}&
- Large positive value [4095.99998]\\\hline
-\pl\tt left& pair& \pageref{Dleft}&
- Leftward direction $(-1,0)$\\\hline
-\pl\tt mitered& numeric& \pageref{Dmitred}&
- {\tt linejoin} value for mitered joins [0]\\\hline
-\pl\tt mm& numeric& \pageref{Dmm}&
- One millimeter in {\tt bp} units [2.83464]\\\hline
-\tt mpversion& string& \pageref{Dmpversion}&
- MetaPost version number\\\hline
-\tt nullpen& pen& \pageref{Dnlpen}&
- Empty pen\\\hline
-\tt nullpicture& picture& \pageref{Dnlpic}&
- Empty picture\\\hline
-\pl\tt origin& pair& --&
- The pair $(0,0)$\\\hline
-\pl\tt pc& numeric& --&
- One pica in {\tt bp} units [11.95517]\\\hline
-\tt pencircle& pen& \pageref{Dpncirc}&
- Circular pen of diameter 1\\\hline
-\pl\tt pensquare& pen& \pageref{Dpnsqr}&
- Square pen of height 1 and width 1\\\hline
-\pl\tt pt& numeric& \pageref{Dpt}&
- One printer's point in {\tt bp} units [0.99626]\\\hline
-\pl\tt quartercircle& path& --&
- First quadrant of a circle of diameter 1\\\hline
-\pl\tt red& color& \pageref{Dred}&
- Equivalent to {\tt (1,0,0)}\\\hline
-\pl\tt right& pair& \pageref{Dright}&
- Rightward direction $(1,0)$\\\hline
-\pl\tt rounded& numeric& \pageref{Drnded}&
- {\tt linecap} and {\tt linejoin} value for round joins\\
-\tt & & &
- and end caps [1]\\\hline
-\pl\tt squared& numeric& \pageref{Dsqred}&
- {\tt linecap} value for square end caps [2]\\\hline
-\tt true& boolean& \pageref{Dtrue}&
- The boolean value {\tt true}\\\hline
-\pl\tt unitsquare& path& --&
- The path \verb|(0,0)--(1,0)--(1,1)--(0,1)--cycle|\\\hline
-\pl\tt up& pair& \pageref{Dup}&
- Upward direction $(0,1)$\\\hline
-\pl\tt white& color& \pageref{Dwhite}&
- Equivalent to {\tt (1,1,1)}\\\hline
-\pl\tt withdots& picture& \pageref{Dwdots}&
- Dash pattern that produces dotted lines\\\hline
-\end{tabular}
-$$
-\label{consttab}%
-\index{cc?\texttt{cc}}\index{dd?\texttt{dd}}\index{ditto?\texttt{ditto}}\index{epsilon?\texttt{epsilon}}%
-\index{origin?\texttt{origin}}\index{pc?\texttt{pc}}\index{quartercircle?\texttt{quartercircle}}%
-\index{unitsquare?\texttt{unitsquare}}
-\end{table}
-
-
-\clearpage
-\LTXtable{\textwidth}{mpman-app-optab}
-
-\begin{table}[htp]
-\caption{Commands}
-$$\begin{tabular}{|l|r|l|}
-\hline
-\multicolumn1{|c}{Name}& \multicolumn1{|c}{Page}& \multicolumn1{|c|}{Explanation}\\
-\hline
-\hline
-\tt \verb|addto|& \pageref{sydraw}&
- Low-level command for drawing and filling\\\hline
-\tt \verb|clip|& \pageref{Dclip}&
- Applies a clipping path to a picture\\\hline
-\tt \verb|closefrom|& \pageref{Dclosefrom}&
- Close a file opened by {\tt readfrom}\\\hline
-\pl\tt \verb|cutdraw|& \pageref{Dctdraw}&
- Draw with butt end caps\\\hline
-\tt \verb|dashed|& \pageref{Ddashed}&
- Apply dash pattern to drawing command\\\hline
-\pl\tt \verb|draw|& \pageref{curves}&
- Draw a line or a picture\\\hline
-\pl\tt \verb|drawarrow|& \pageref{Ddrwarr}&
- Draw a line with an arrowhead at the end\\\hline
-\pl\tt \verb|drawdblarrow|& \pageref{Ddrwdar}&
- Draw a line with arrowheads at both ends\\\hline
-\tt \verb|errhelp|& \pageref{Derrhelp}&
- Declare help message for interactive mode\\\hline
-\tt \verb|errmessage|& \pageref{Derrmessage}&
- Show error message on the terminal and enter interactive
- mode\\\hline
-\tt \verb|filenametemplate|& \pageref{Dfilenametemplate}&
- Set output file name pattern (deprecated, see
- \verb|outputtemplate|)\\\hline
-\pl\tt \verb|fill|& \pageref{Dfill}&
- Fill inside a cyclic path\\\hline
-\pl\tt \verb|filldraw|& \pageref{Dfildrw}&
- Draw a cyclic path and fill inside it\\\hline
-\tt \verb|fontmapfile|& \pageref{Dfontmapfile}&
- Read font map entries from file\\\hline
-\tt \verb|fontmapline|& \pageref{Dfontmapline}&
- Declare a font map entry\\\hline
-\tt \verb|interim|& \pageref{Dinterm}&
- Make a local change to an internal variable\\\hline
-\tt \verb|let|& --&
- Assign one symbolic token the meaning of another\\\hline
-\pl\tt \verb|loggingall|& \pageref{Dlogall}&
- Turn on all tracing (log file only)\\\hline
-\tt \verb|message|& \pageref{Dmessage}&
- Show message string on the terminal\\\hline
-\tt \verb|newinternal|& \pageref{Dnewint}&
- Declare new internal variables\\\hline
-\pl\tt \verb|pickup|& \pageref{Dpickup}&
- Specify new pen for line drawing\\\hline
-\tt \verb|save|& \pageref{Dsave}&
- Make variables local\\\hline
-\tt \verb|setbounds|& \pageref{Dsetbnd}&
- Make a picture lie about its bounding box\\\hline
-\tt \verb|shipout|& \pageref{Dship}&
- Low-level command to output a figure\\\hline
-\tt \verb|show|& \pageref{Dshow}&
- Print out expressions symbolically\\\hline
-\tt \verb|showdependencies|& \pageref{Dshdep}&
- Print out all unsolved equations\\\hline
-\tt \verb|showtoken|& \pageref{Dshtok}&
- Print an explanation of what a token is\\\hline
-\tt \verb|showvariable|& \pageref{Dshvar}&
- Print variables symbolically\\\hline
-\tt \verb|special|& \pageref{Dspecl}&
- Print a string directly in the PostScript output file\\\hline
-\pl\tt \verb|tracingall|& \pageref{Dtall}&
- Turn on all tracing\\\hline
-\pl\tt \verb|tracingnone|& \pageref{Dtnone}&
- Turn off all tracing\\\hline
-\pl\tt \verb|undraw|& \pageref{Dundraw}&
- Erase a line or a picture\\\hline
-\pl\tt \verb|unfill|& \pageref{Dunfill}&
- Erase inside a cyclic path\\\hline
-\pl\tt \verb|unfilldraw|& \pageref{Dunfdrw}&
- Erase a cyclic path and its inside\\\hline
-\tt \verb|withcmykcolor|& \pageref{Dwithcmykcolor}&
- Apply CMYK color to drawing command\\\hline
-\tt \verb|withcolor|& \pageref{Dwithcolor}&
- Apply generic color specification to drawing command\\\hline
-\tt \verb|withgreyscale|& \pageref{Dwithgreyscale}&
- Apply greyscale color to drawing command\\\hline
-\tt \verb|withoutcolor|& \pageref{Dwithoutcolor}&
- Don't apply any color specification to drawing command\\\hline
-\tt \verb|withpen|& \pageref{sec.pens}&
- Apply pen to drawing operation\\\hline
-\tt \verb|withpostscript|& \pageref{Dwithpost}&
- End raw PostScript code\\\hline
-\tt \verb|withprescript|& \pageref{Dwithpre}&
- Begin raw PostScript code\\\hline
-\tt \verb|withrgbcolor|& \pageref{Dwithrgbcolor}&
- Apply RGB color to drawing command\\\hline
-\tt \verb|write to|& \pageref{Dwrite}&
- Write string to file\\\hline
-\end{tabular}
-$$
-\index{let?\texttt{let}}%
-\label{cmdtab}
-\end{table}
-
-
-\begin{table}[htp]
-\caption{Function-Like Macros}
-$$\begin{tabular}{|l|l|l|r|l|}
-\hline
-\multicolumn1{|c}{Name}& \multicolumn1{|c}{Arguments}&
- \multicolumn1{|c}{Result}& \multicolumn1{|c}{Page}&
- \multicolumn1{|c|}{Explanation}\\
-\hline
-\hline
-\pl\tt \verb|buildcycle|& list of paths& path& \pageref{buildcy}&
- Build a cyclic path\\\hline
-\pl\tt \verb|dashpattern|& on/off distances& picture& \pageref{Ddshpat}&
- Create a pattern for dashed lines\\\hline
-\pl\tt \verb|decr|& numeric variable& numeric& \pageref{Dincr}&
- Decrement and return new value\\\hline
-\pl\tt \verb|dotlabel|& suffix, picture, pair& --& \pageref{Ddotlab}&
- Mark point and draw picture nearby\\\hline
-\pl\tt \verb|dotlabel|& suffix, string, pair& --& \pageref{Ddotlab}&
- Mark point and place text nearby\\\hline
-\pl\tt \verb|dotlabels|& suffix, point numbers& --& \pageref{Ddotlbs}&
- Mark {\tt z} points with their numbers\\\hline
-\pl\tt \verb|drawdot|& pair& --& \pageref{Ddrawdot}&
- Draw a dot at the given point\\\hline
-\pl\tt \verb|drawoptions|& drawing options& --& \pageref{Ddropts}&
- Set options for drawing commands\\\hline
-\pl\tt \verb|image|& string& picture& \pageref{Dimage}&
- Return picture from text\\\hline
-\pl\tt \verb|incr|& numeric variable& numeric& \pageref{Dincr}&
- Increment and return new value\\\hline
-\pl\tt \verb|label|& suffix, picture, pair& --& \pageref{Dlabel}&
- Draw picture near given point\\\hline
-\pl\tt \verb|label|& suffix, string, pair& --& \pageref{Dlabel}&
- Place text near given point\\\hline
-\pl\tt \verb|labels|& suffix, point numbers& --& \pageref{Dlabels}&
- Draw {\tt z} point numbers; no dots\\\hline
-\pl\tt \verb|max|& list of numerics& numeric& --&
- Find the maximum\\\hline
-\pl\tt \verb|max|& list of strings& string& --&
- Find the lexicographically last string\\\hline
-\pl\tt \verb|min|& list of numerics& numeric& --&
- Find the minimum\\\hline
-\pl\tt \verb|min|& list of strings& string& --&
- Find the lexicographically first string\\\hline
-\pl\tt \verb|thelabel|& suffix, picture, pair& picture& \pageref{Dthelab}&
- Picture shifted as if to label a point\\\hline
-\pl\tt \verb|thelabel|& suffix, string, pair& picture& \pageref{Dthelab}&
- Text positioned as if to label a point\\\hline
-\pl\tt \verb|z|& suffix& pair& \pageref{Dzconv}&
- The pair ${\tt x}\descr{suffix},{\tt y}\descr{suffix})$\\\hline
-\end{tabular}
-$$
-\index{min?\texttt{min}}\index{max?\texttt{max}}%
-\label{pseudotab}
-\end{table}
-
-\clearpage
-
-\begin{figure}[htp]
-\begin{ctabbing}
-$\tt \descr{atom} \rightarrow \descr{variable} \;|\; \descr{argument}$\\
-$\tt \qquad \;|\; \descr{number or fraction}$\\
-$\tt \qquad \;|\; \descr{internal variable}$\\
-$\tt \qquad \;|\; \hbox{\tt (}\descr{expression}\hbox{\tt )}$\\
-$\tt \qquad \;|\; begingroup \descr{statement list} \descr{expression} endgroup$\\
-$\tt \qquad \;|\; \descr{nullary op}$\\
-$\tt \qquad \;|\; btex \descr{typesetting commands} etex$\\
-$\tt \qquad \;|\; \descr{pseudo function}$\\
-$\tt \descr{primary} \rightarrow \descr{atom}$\\
-$\tt \qquad \;|\; \hbox{\tt (}\descr{numeric expression}\hbox{\tt ,} \descr{numeric expression}\hbox{\tt )}$\\
-$\tt \qquad \;|\; \hbox{\tt (}\descr{numeric expression}\hbox{\tt ,} \descr{numeric expression}\hbox{\tt ,} \descr{numeric expression}\hbox{\tt )}$\\
-$\tt \qquad \;|\; \descr{of operator} \descr{expression} of \descr{primary}$\\
-$\tt \qquad \;|\; \descr{unary op} \descr{primary}$\\
-$\tt \qquad \;|\; str \descr{suffix}$\\
-$\tt \qquad \;|\; z \descr{suffix}$\\
-$\tt \qquad \;|\; \descr{numeric atom}\hbox{\tt [}\descr{expression}\hbox{\tt ,}\descr{expression}\hbox{\tt ]}$\\
-$\tt \qquad \;|\; \descr{scalar multiplication op} \descr{primary}$\\
-$\tt \descr{secondary} \rightarrow \descr{primary}$\\
-$\tt \qquad \;|\; \descr{secondary} \descr{primary binop} \descr{primary}$\\
-$\tt \qquad \;|\; \descr{secondary} \descr{transformer}$\\
-$\tt \descr{tertiary} \rightarrow \descr{secondary}$\\
-$\tt \qquad \;|\; \descr{tertiary} \descr{secondary binop} \descr{secondary}$\\
-$\tt \descr{subexpression} \rightarrow \descr{tertiary}$\\
-$\tt \qquad \;|\; \descr{path expression} \descr{path join} \descr{path knot}$\\
-$\tt \descr{expression} \rightarrow \descr{subexpression}$\\
-$\tt \qquad \;|\; \descr{expression} \descr{tertiary binop} \descr{tertiary}$\\
-$\tt \qquad \;|\; \descr{path subexpression} \descr{direction specifier}$\\
-$\tt \qquad \;|\; \descr{path subexpression} \descr{path join} cycle$\\
-$\tt $\\
-$\tt \descr{path knot} \rightarrow \descr{tertiary}$\\
-$\tt \descr{path join} \rightarrow \verb|--|$\\
-$\tt \qquad \;|\; \descr{direction specifier} \descr{basic path join} \descr{direction specifier}$\\
-$\tt \descr{direction specifier} \rightarrow \descr{empty}$\\
-$\tt \qquad \;|\; \verb|{|curl \descr{numeric expression}\verb|}|$\\
-$\tt \qquad \;|\; \verb|{|\descr{pair expression}\verb|}|$\\
-$\tt \qquad \;|\; \verb|{|\descr{numeric expression}\hbox{\tt ,}\descr{numeric expression}\verb|}|$\\
-$\tt \descr{basic path join} \rightarrow \hbox{\tt ..} \;|\; \hbox{\tt ...} \;|\; \hbox{\tt ..}\descr{tension}\hbox{\tt ..} \;|\; \hbox{\tt ..}\descr{controls}\hbox{\tt ..}$\\
-$\tt \descr{tension} \rightarrow tension \descr{numeric primary}$\\
-$\tt \qquad \;|\; tension \descr{numeric primary} and \descr{numeric primary}$\\
-$\tt \descr{controls} \rightarrow controls \descr{pair primary}$\\
-$\tt \qquad \;|\; controls \descr{pair primary} and \descr{pair primary}$\\
-$\tt $\\
-$\tt \descr{argument} \rightarrow \descr{symbolic token}$\\
-$\tt \descr{number or fraction} \rightarrow \descr{number}\hbox{\tt /}\descr{number}$\\
-$\tt \qquad \;|\; \descr{number not followed by `\hbox{\tt /}\tdescr{number}'}$\\
-$\tt \descr{scalar multiplication op} \rightarrow + \;|\; -$\\
-$\tt \qquad \;|\; \descr{`\tdescr{number or fraction}' not followed by `\tdescr{add op}\tdescr{number}'}$
-\end{ctabbing}
-\caption{Part 1 of the syntax for expressions}
-\index{expression?\tdescr{expression}}\index{nullary op?\tdescr{nullary op}}\index{of operator?\tdescr{of operator}}%
-\index{path knot?\tdescr{path knot}}\index{primary?\tdescr{primary}}\index{primary binop?\tdescr{primary binop}}%
-\index{secondary?\tdescr{secondary}}\index{secondary binop?\tdescr{secondary binop}}\index{suffix?\tdescr{suffix}}%
-\index{tertiary?\tdescr{tertiary}}\index{tertiary binop?\tdescr{tertiary binop}}\index{unary op?\tdescr{unary op}}%
-\label{syexpr1}
-\end{figure}
-
-\begin{figure}[htp]
-\begin{ctabbing}
-$\tt \descr{transformer} \rightarrow rotated \descr{numeric primary}$\\
-$\tt \qquad \;|\; scaled \descr{numeric primary}$\\
-$\tt \qquad \;|\; shifted \descr{pair primary}$\\
-$\tt \qquad \;|\; slanted \descr{numeric primary}$\\
-$\tt \qquad \;|\; transformed \descr{transform primary}$\\
-$\tt \qquad \;|\; xscaled \descr{numeric primary}$\\
-$\tt \qquad \;|\; yscaled \descr{numeric primary}$\\
-$\tt \qquad \;|\; zscaled \descr{pair primary}$\\
-$\tt \qquad \;|\; reflectedabout\hbox{\tt (}\descr{pair expression}\hbox{\tt ,} \descr{pair expression}\hbox{\tt )}$\\
-$\tt \qquad \;|\; rotatedaround\hbox{\tt (}\descr{pair expression}\hbox{\tt ,} \descr{numeric expression}\hbox{\tt )}$\\
-$\tt $\\
-$\tt \descr{nullary op} \rightarrow false \;|\; normaldeviate \;|\; nullpen \;|\; nullpicture \;|\; pencircle$\\
-$\tt \qquad \;|\; true \;|\; whatever$\\
-$\tt \descr{unary op} \rightarrow \descr{type}$\\
-$\tt \qquad \;|\; abs \;|\; angle \;|\; arclength \;|\; ASCII \;|\; bbox \;|\; blackpart \;|\; bluepart \;|\; bot \;|\; bounded$\\
-$\tt \qquad \;|\; ceiling \;|\; center \;|\; char \;|\; clipped \;|\; colormodel \;|\; cosd \;|\; cyanpart \;|\; cycle$\\
-$\tt \qquad \;|\; dashpart \;|\; decimal \;|\; dir \;|\; floor \;|\; filled \;|\; fontpart \;|\; fontsize$\\
-$\tt \qquad \;|\; greenpart \;|\; greypart \;|\; hex \;|\; inverse \;|\; known \;|\; length \;|\; lft \;|\; llcorner$\\
-$\tt \qquad \;|\; lrcorner\;|\; magentapart \;|\; makepath \;|\; makepen \;|\; mexp \;|\; mlog \;|\; not \;|\; oct \;|\; odd$\\
-$\tt \qquad \;|\; pathpart \;|\; penpart \;|\; readfrom \;|\; redpart \;|\; reverse \;|\; round \;|\; rt \;|\; sind \;|\; sqrt$\\
-$\tt \qquad \;|\; stroked \;|\; textpart \;|\; textual \;|\; top \;|\; ulcorner$\\
-$\tt \qquad \;|\; uniformdeviate \;|\; unitvector \;|\; unknown \;|\; urcorner \;|\; xpart \;|\; xxpart$\\
-$\tt \qquad \;|\; xypart \;|\; yellowpart \;|\; ypart \;|\; yxpart \;|\; yypart$\\
-$\tt \descr{type} \rightarrow boolean \;|\; cmykcolor \;|\; color \;|\; numeric \;|\; pair$\\
-$\tt \qquad \;|\; path \;|\; pen \;|\; picture \;|\; rgbcolor \;|\; string \;|\; transform$\\
-$\tt \descr{internal type} \rightarrow numeric \;|\; string$\\
-$\tt \descr{primary binop} \rightarrow \hbox{\tt *} \;|\; \hbox{\tt /} \;|\; \hbox{\tt **} \;|\; and$\\
-$\tt \qquad \;|\; dotprod \;|\; div \;|\; infont \;|\; mod$\\
-$\tt \descr{secondary binop} \rightarrow + \;|\; - \;|\; ++ \;|\; +-+ \;|\; or$\\
-$\tt \qquad \;|\; intersectionpoint \;|\; intersectiontimes$\\
-$\tt \descr{tertiary binop} \rightarrow \hbox{\tt \&} \;|\; \hbox{\verb|<|} \;|\; \hbox{\verb|<=|} \;|\; \hbox{\verb|<>|} \;|\; \hbox{\tt =} \;|\; \hbox{\verb|>|} \;|\; \hbox{\verb|>=|}$\\
-$\tt \qquad \;|\; cutafter \;|\; cutbefore$\\
-$\tt \descr{of operator} \rightarrow arctime \;|\; direction \;|\; directiontime \;|\; directionpoint$\\
-$\tt \qquad \;|\; glyph \;|\; penoffset \;|\; point \;|\; postcontrol \;|\; precontrol$\\
-$\tt \qquad \;|\; subpath \;|\; substring$\\
-$\tt $\\
-$\tt \descr{variable} \rightarrow \descr{tag}\descr{suffix}$\\
-$\tt \descr{suffix} \rightarrow \descr{empty} \;|\; \descr{suffix}\descr{subscript} \;|\; \descr{suffix}\descr{tag}$\\
-$\tt \qquad \;|\; \descr{suffix parameter}$\\
-$\tt \descr{subscript} \rightarrow \descr{number} \;|\; \hbox{\tt [}\descr{numeric expression}\hbox{\tt ]}$\\
-$\tt $\\
-$\tt \descr{internal variable} \rightarrow ahangle \;|\; ahlength \;|\; bboxmargin$\\
-$\tt \qquad \;|\; charcode \;|\; day \;|\; defaultcolormodel \;|\; defaultpen \;|\; defaultscale$\\
-$\tt \qquad \;|\; hour \;|\; jobname \;|\; labeloffset \;|\; linecap \;|\; linejoin
-\;|\; minute \;|\; miterlimit \;|\; month$\\
-$\tt \qquad \;|\; outputformat \;|\; outputtemplate \;|\; pausing \;|\; prologues \;|\; showstopping$\\
-$\tt \qquad \;|\; time \;|\; tracingoutput \;|\; tracingcapsules \;|\; tracingchoices \;|\; tracingcommands$\\
-$\tt \qquad \;|\; tracingequations \;|\; tracinglostchars \;|\; tracingmacros$\\
-$\tt \qquad \;|\; tracingonline \;|\; tracingrestores \;|\; tracingspecs$\\
-$\tt \qquad \;|\; tracingstats \;|\; tracingtitles \;|\; truecorners$\\
-$\tt \qquad \;|\; warningcheck \;|\; year$\\
-$\tt \qquad \;|\; \descr{symbolic token defined by {\tt newinternal}}$
-\end{ctabbing}
-\caption{Part 2 of the syntax for expressions}
-\index{nullary op?\tdescr{nullary op}}\index{of operator?\tdescr{of operator}}\index{primary binop?\tdescr{primary binop}}%
-\index{secondary binop?\tdescr{secondary binop}}\index{subscript?\tdescr{subscript}}\index{suffix?\tdescr{suffix}}%
-\index{tertiary binop?\tdescr{tertiary binop}}\index{unary op?\tdescr{unary op}}%
-\label{syexpr2}
-\end{figure}
-
-\begin{figure}[htp]
-\begin{ctabbing}
-$\tt \descr{pseudo function} \rightarrow min\hbox{\tt (}\descr{expression list}\hbox{\tt )}$\\
-$\tt \qquad \;|\; max\hbox{\tt (}\descr{expression list}\hbox{\tt )}$\\
-$\tt \qquad \;|\; incr\hbox{\tt (}\descr{numeric variable}\hbox{\tt )}$\\
-$\tt \qquad \;|\; decr\hbox{\tt (}\descr{numeric variable}\hbox{\tt )}$\\
-$\tt \qquad \;|\; dashpattern\hbox{\tt (}\descr{on\hbox{\tt /}off list}\hbox{\tt )}$\\
-$\tt \qquad \;|\; interpath\hbox{\tt (}\descr{numeric expression}\hbox{\tt ,} \descr{path expression}\hbox{\tt ,} \descr{path expression}\hbox{\tt )}$\\
-$\tt \qquad \;|\; buildcycle\hbox{\tt (}\descr{path expression list}\hbox{\tt )}$\\
-$\tt \qquad \;|\; thelabel\descr{label suffix}\hbox{\tt (}\descr{expression}\hbox{\tt ,} \descr{pair expression}\hbox{\tt )}$\\
-$\tt \descr{path expression list} \rightarrow \descr{path expression}$\\
-$\tt \qquad \;|\; \descr{path expression list}\hbox{\tt ,} \descr{path expression}$\\
-$\tt \descr{on\hbox{\tt /}off list} \rightarrow \descr{on\hbox{\tt /}off list}\descr{on\hbox{\tt /}off clause} \;|\; \descr{on\hbox{\tt /}off clause}$\\
-$\tt \descr{on\hbox{\tt /}off clause} \rightarrow on \descr{numeric tertiary} \;|\; off \descr{numeric tertiary}$
-\end{ctabbing}
-\caption{The syntax for function-like macros}
-\index{label suffix?\tdescr{label suffix}}%
-\label{sypseudo}
-\end{figure}
-
-\begin{figure}[htp]
-\begin{ctabbing}
-$\tt \descr{boolean expression} \rightarrow \descr{expression}$\\
-$\tt \descr{cmykcolor expression} \rightarrow \descr{expression}$\\
-$\tt \descr{color expression} \rightarrow \descr{expression}$\\
-$\tt \descr{numeric atom} \rightarrow \descr{atom}$\\
-$\tt \descr{numeric expression} \rightarrow \descr{expression}$\\
-$\tt \descr{numeric primary} \rightarrow \descr{primary}$\\
-$\tt \descr{numeric tertiary} \rightarrow \descr{tertiary}$\\
-$\tt \descr{numeric variable} \rightarrow \descr{variable} \;|\; \descr{internal variable}$\\
-$\tt \descr{pair expression} \rightarrow \descr{expression}$\\
-$\tt \descr{pair primary} \rightarrow \descr{primary}$\\
-$\tt \descr{path expression} \rightarrow \descr{expression}$\\
-$\tt \descr{path subexpression} \rightarrow \descr{subexpression}$\\
-$\tt \descr{pen expression} \rightarrow \descr{expression}$\\
-$\tt \descr{picture expression} \rightarrow \descr{expression}$\\
-$\tt \descr{picture variable} \rightarrow \descr{variable}$\\
-$\tt \descr{rgbcolor expression} \rightarrow \descr{expression}$\\
-$\tt \descr{string expression} \rightarrow \descr{expression}$\\
-$\tt \descr{suffix parameter} \rightarrow \descr{parameter}$\\
-$\tt \descr{transform primary} \rightarrow \descr{primary}$
-\end{ctabbing}
-\caption{Miscellaneous productions needed to complete the BNF}
-\label{sytypexpr}
-\end{figure}
-
-\begin{figure}[htp]
-\begin{ctabbing}
-$\tt \descr{program} \rightarrow \descr{statement list} end$\\
-$\tt \descr{statement list} \rightarrow \descr{empty} \;|\; \descr{statement list} \hbox{\tt ;} \descr{statement}$\\
-$\tt \descr{statement} \rightarrow \descr{empty}$\\
-$\tt \qquad \;|\; \descr{equation} \;|\; \descr{assignment}$\\
-$\tt \qquad \;|\; \descr{declaration} \;|\; \descr{macro definition}$\\
-$\tt \qquad \;|\; \descr{compound} \;|\; \descr{pseudo procedure}$\\
-$\tt \qquad \;|\; \descr{command}$\\
-$\tt \descr{compound} \rightarrow begingroup \descr{statement list} endgroup$\\
-$\tt \qquad \;|\; beginfig\hbox{\tt (}\descr{numeric expression}\hbox{\tt );} \descr{statement list}\hbox{\tt ;} endfig$\\
-$\tt $\\
-$\tt \descr{equation} \rightarrow \descr{expression} \hbox{\tt =} \descr{right-hand side}$\\
-$\tt \descr{assignment} \rightarrow \descr{variable} \hbox{\tt :=} \descr{right-hand side}$\\
-$\tt \qquad \;|\; \descr{internal variable} \hbox{\tt :=} \descr{right-hand side}$\\
-$\tt \descr{right-hand side} \rightarrow \descr{expression} \;|\; \descr{equation} \;|\; \descr{assignment}$\\
-$\tt $\\
-$\tt \descr{declaration} \rightarrow \descr{type} \descr{declaration list}$\\
-$\tt \descr{declaration list} \rightarrow \descr{generic variable}$\\
-$\tt \qquad \;|\; \descr{declaration list}\hbox{\tt ,} \descr{generic variable}$\\
-$\tt \descr{generic variable} \rightarrow \descr{symbolic token} \descr{generic suffix}$\\
-$\tt \descr{generic suffix} \rightarrow \descr{empty} \;|\; \descr{generic suffix} \descr{tag}$\\
-$\tt \qquad \;|\; \descr{generic suffix} \hbox{\tt []}$\\
-$\tt $\\
-$\tt \descr{macro definition} \rightarrow \descr{macro heading} \hbox{\tt =} \descr{replacement text} enddef$\\
-$\tt \descr{macro heading} \rightarrow def \descr{symbolic token} \descr{delimited part} \descr{undelimited part}$\\
-$\tt \qquad \;|\; vardef \descr{generic variable} \descr{delimited part} \descr{undelimited part}$\\
-$\tt \qquad \;|\; vardef \descr{generic variable} \hbox{\verb|@#|} \descr{delimited part} \descr{undelimited part}$\\
-$\tt \qquad \;|\; \descr{binary def} \descr{parameter} \descr{symbolic token} \descr{parameter}$\\
-$\tt \descr{delimited part} \rightarrow \descr{empty}$\\
-$\tt \qquad \;|\; \descr{delimited part}\hbox{\tt (}\descr{parameter type} \descr{parameter tokens}\hbox{\tt )}$\\
-$\tt \descr{parameter type} \rightarrow expr \;|\; suffix \;|\; text$\\
-$\tt \descr{parameter tokens} \rightarrow \descr{parameter} \;|\; \descr{parameter tokens}\hbox{\tt ,} \descr{parameter}$\\
-$\tt \descr{parameter} \rightarrow \descr{symbolic token}$\\
-$\tt \descr{undelimited part} \rightarrow \descr{empty}$\\
-$\tt \qquad \;|\; \descr{parameter type} \descr{parameter}$\\
-$\tt \qquad \;|\; \descr{precedence level} \descr{parameter}$\\
-$\tt \qquad \;|\; expr \descr{parameter} of \descr{parameter}$\\
-$\tt \descr{precedence level} \rightarrow primary \;|\; secondary \;|\; tertiary$\\
-$\tt \descr{binary def} \rightarrow primarydef \;|\; secondarydef \;|\; tertiarydef$\\
-$\tt $\\
-$\tt \descr{pseudo procedure} \rightarrow drawoptions\hbox{\tt (}\descr{option list}\hbox{\tt )}$\\
-$\tt \qquad \;|\; label\descr{label suffix}\hbox{\tt (}\descr{expression}\hbox{\tt ,} \descr{pair expression}\hbox{\tt )}$\\
-$\tt \qquad \;|\; dotlabel\descr{label suffix}\hbox{\tt (}\descr{expression}\hbox{\tt ,} \descr{pair expression}\hbox{\tt )}$\\
-$\tt \qquad \;|\; labels\descr{label suffix}\hbox{\tt (}\descr{point number list}\hbox{\tt )}$\\
-$\tt \qquad \;|\; dotlabels\descr{label suffix}\hbox{\tt (}\descr{point number list}\hbox{\tt )}$\\
-$\tt \descr{point number list} \rightarrow \descr{suffix} \;|\; \descr{point number list}\hbox{\tt ,} \descr{suffix}$\\
-$\tt \descr{label suffix} \rightarrow \descr{empty} \;|\; lft \;|\; rt \;|\; top \;|\; bot \;|\; ulft \;|\; urt \;|\; llft \;|\; lrt$
-\end{ctabbing}
-\caption{Overall syntax for MetaPost programs}
-\index{generic variable?\tdescr{generic variable}}\index{label suffix?\tdescr{label suffix}}\index{replacement text?\tdescr{replacement text}}%
-\index{suffix?\tdescr{suffix}}%
-\label{syprog}
-\end{figure}
-
-\begin{figure}[htp]
-\begin{ctabbing}
-$\tt \descr{command} \rightarrow clip \descr{picture variable} to \descr{path expression}$\\
-$\tt \qquad \;|\; interim \descr{internal variable} \hbox{\tt :=} \descr{right-hand side}$\\
-$\tt \qquad \;|\; let \descr{symbolic token} \hbox{\tt =} \descr{symbolic token}$\\
-$\tt \qquad \;|\; pickup \descr{expression}$\\
-$\tt \qquad \;|\; randomseed \hbox{\tt :=} \descr{numeric expression}$\\
-$\tt \qquad \;|\; save \descr{symbolic token list}$\\
-$\tt \qquad \;|\; setbounds \descr{picture variable} to \descr{path expression}$\\
-$\tt \qquad \;|\; shipout \descr{picture expression}$\\
-$\tt \qquad \;|\; write \descr{string expression} to \descr{string expression}$\\
-$\tt \qquad \;|\; \descr{addto command}$\\
-$\tt \qquad \;|\; \descr{drawing command}$\\
-$\tt \qquad \;|\; \descr{font metric command}$\\
-$\tt \qquad \;|\; \descr{newinternal command}$\\
-$\tt \qquad \;|\; \descr{message command}$\\
-$\tt \qquad \;|\; \descr{mode command}$\\
-$\tt \qquad \;|\; \descr{show command}$\\
-$\tt \qquad \;|\; \descr{special command}$\\
-$\tt \qquad \;|\; \descr{tracing command}$\\
-$\tt $\\
-$\tt \descr{show command} \rightarrow show \descr{expression list}$\\
-$\tt \qquad \;|\; showvariable \descr{symbolic token list}$\\
-$\tt \qquad \;|\; showtoken \descr{symbolic token list}$\\
-$\tt \qquad \;|\; showdependencies$\\
-$\tt $\\
-$\tt \descr{symbolic token list} \rightarrow \descr{symbolic token}$\\
-$\tt \qquad \;|\; \descr{symbolic token}\hbox{\tt ,} \descr{symbolic token list}$\\
-$\tt \descr{expression list} \rightarrow \descr{expression} \;|\; \descr{expression list}\hbox{\tt ,} \descr{expression}$\\
-$\tt $\\
-$\tt \descr{addto command} \rightarrow$\\
-$\tt \qquad addto \descr{picture variable} also \descr{picture expression} \descr{option list}$\\
-$\tt \qquad \;|\; addto \descr{picture variable} contour \descr{path expression} \descr{option list}$\\
-$\tt \qquad \;|\; addto \descr{picture variable} doublepath \descr{path expression} \descr{option list}$\\
-$\tt \descr{option list} \rightarrow \descr{empty} \;|\; \descr{drawing option} \descr{option list}$\\
-$\tt \descr{drawing option} \rightarrow withcolor \descr{color expression}$\\
-$\tt \qquad \;|\; withrgbcolor \descr{rgbcolor expression} \;|\; withcmykcolor \descr{cmykcolor expression}$\\
-$\tt \qquad \;|\; withgreyscale \descr{numeric expression} \;|\; withoutcolor$\\
-$\tt \qquad \;|\; withprescript \descr{string expression} \;|\; withpostscript \descr{string expression}$\\
-$\tt \qquad \;|\; withpen \descr{pen expression} \;|\; dashed \descr{picture expression}$\\
-$\tt $\\
-$\tt \descr{drawing command} \rightarrow draw \descr{picture expression} \descr{option list}$\\
-$\tt \qquad \;|\; \descr{fill type} \descr{path expression} \descr{option list}$\\
-$\tt \descr{fill type} \rightarrow fill \;|\; draw \;|\; filldraw \;|\; unfill \;|\; undraw \;|\; unfilldraw$\\
-$\tt \qquad \;|\; drawarrow \;|\; drawdblarrow \;|\; cutdraw$\\
-$\tt $\\
-$\tt \descr{newinternal command} \rightarrow newinternal \descr{internal type} \descr{symbolic token list}$\\
-$\tt \qquad \;|\; newinternal \descr{symbolic token list}$\\
-$\tt $\\
-$\tt \descr{message command} \rightarrow errhelp \descr{string expression}$\\
-$\tt \qquad \;|\; errmessage \descr{string expression}$\\
-$\tt \qquad \;|\; filenametemplate \descr{string expression}$\\
-$\tt \qquad \;|\; message \descr{string expression}$
-\end{ctabbing}
-\caption{Part 1 of the syntax for commands}
-\index{option list?\tdescr{option list}}\index{picture variable?\tdescr{picture variable}}%
-\label{sycmds1}
-
-% is this really true? in practice, in real implementations?
-%\bigskip
-%By the way, the default for \ttindex{randomseed} is, in effect,
-%$\textsl{day} + \textsl{time}*\epsilon$. Unfortunately, \textsl{time}
-%is in minutes.
-\end{figure}
-
-\begin{figure}[htp]
-\begin{ctabbing}
-$\tt \descr{mode command} \rightarrow batchmode \;|\; nonstopmode$\\
-$\tt \qquad \;|\; scrollmode \;|\; errorstopmode$\\
-$\tt $\\
-$\tt \descr{special command} \rightarrow fontmapfile \descr{string expression}$\\
-$\tt \qquad \;|\; fontmapline \descr{string expression}$\\
-$\tt \qquad \;|\; special \descr{string expression}$\\
-$\tt $\\
-$\tt \descr{tracing command} \rightarrow tracingall \;|\; loggingall \;|\; tracingnone$
-\end{ctabbing}
-\caption{Part 2 of the syntax for commands}
-\index{batchmode?\texttt{batchmode}}\index{nonstopmode?\texttt{nonstopmode}}\index{scrollmode?\texttt{scrollmode}}\index{errorstopmode?\texttt{errorstopmode}}%
-\label{sycmds2}
-\end{figure}
-
-\begin{figure}[htp]
-\begin{ctabbing}
-$\tt \descr{if test} \rightarrow if \descr{boolean expression} \hbox{\tt :} \descr{balanced tokens} \descr{alternatives} fi$\\
-$\tt \descr{alternatives} \rightarrow \descr{empty}$\\
-$\tt \qquad \;|\; else\hbox{\tt :} \descr{balanced tokens}$\\
-$\tt \qquad \;|\; elseif \descr{boolean expression} \hbox{\tt :} \descr{balanced tokens} \descr{alternatives}$\\
-$\tt $\\
-$\tt \descr{loop} \rightarrow \descr{loop header}\hbox{\tt :} \descr{loop text} endfor$\\
-$\tt \descr{loop header} \rightarrow for \descr{symbolic token} \hbox{\tt =} \descr{progression}$\\
-$\tt \qquad \;|\; for \descr{symbolic token} \hbox{\tt =} \descr{for list}$\\
-$\tt \qquad \;|\; for \descr{symbolic token} \hbox{\tt within} \descr{picture expression}$\\
-$\tt \qquad \;|\; forsuffixes \descr{symbolic token} \hbox{\tt =} \descr{suffix list}$\\
-$\tt \qquad \;|\; forever$\\
-$\tt \descr{progression} \rightarrow \descr{numeric expression} upto \descr{numeric expression}$\\
-$\tt \qquad \;|\; \descr{numeric expression} downto \descr{numeric expression}$\\
-$\tt \qquad \;|\; \descr{numeric expression} step \descr{numeric expression} until \descr{numeric expression} $\\
-$\tt \descr{for list} \rightarrow \descr{expression} \;|\; \descr{for list}\hbox{\tt ,} \descr{expression}$\\
-$\tt \descr{suffix list} \rightarrow \descr{suffix} \;|\; \descr{suffix list}\hbox{\tt ,} \descr{suffix}$
-\end{ctabbing}
-\caption{The syntax for conditionals and loops}
-\index{balanced tokens?\tdescr{balanced tokens}}\index{suffix?\tdescr{suffix}}%
-\label{sycondloop}
-\end{figure}
-
-\endgroup
-
-
-\subsection{Command-Line Syntax}
-\label{refman:commandline}
-
-\begingroup
-\renewcommand*{\arraystretch}{1.25}% Give command-line switch tables air.
-
-\subsubsection{The MetaPost Program}
-\label{refman:mpost}
-
-\newcommand*{\opt}[1]{\ensuremath{\big[}#1\ensuremath{\big]}}
-\newcommand*{\cmdsw}{\tdescr{switches}}
-\newcommand*{\cmdmem}{\tdescr{preloadfile}}
-\newcommand*{\cmdin}{\tdescr{infile}}
-\newcommand*{\cmdcode}{\tdescr{commands}}
-\newcommand*{\cmdindex}[1]{\index{command-line!mpost?\texttt{mpost}!#1?\texttt{#1}}\texttt{#1}}
-
-The MetaPost program processes commands in the MetaPost language, either
-read from a file or typed-in interactively, and compiles them into
-PostScript or SVG graphics. The run-time behavior of the executable can
-be controlled by command-line parameters, environment variables, and
-configuration files. The MetaPost executable is named
-mpost\label{Dmpost}\index{mpost} (or occasionally just mp). The
-command-line syntax of the executable is
-$$
-\begin{verbatim}[commandchars=\\\{\}]
-mpost \opt{\cmdsw} \opt{\&\cmdmem} \opt{\cmdin} \opt{\cmdcode}
-\end{verbatim}
-\index{mpost?\texttt{mpost}}\index{command-line!mpost?\texttt{mpost}}
-$$
-Any of the parameters is optional. If no argument is given to the
-\verb|mpost| command, MetaPost enters interactive mode\index{interactive
- mode}, indicated by a \verb|**| prompt\index{**?\texttt{**}!prompt},
-waiting for a file name to be typed-in by keyboard. The file is then
-read-in and processed as if it were given as parameter \cmdin\ on the
-command-line.
-
-\begin{description}
-\item[\cmdin] A MetaPost input file is a text file containing statements
- in the MetaPost language. Typically, input files have file extension
- \texttt{mp}\index{mp file?{\tt mp} file}\index{files!mp?{\tt mp}},
- e.g., \texttt{fig.mp}. Here is how MetaPost searches for input files.
- If \cmdin\ doesn't end with \texttt{.mp}\index{mp file?{\tt mp}
- file}\index{files!mp?{\tt mp}}, MetaPost first looks for a file
- \texttt{\cmdin.mp}. Only if that file doesn't exist, it looks for
- file \cmdin\ literally. That way, the \texttt{mp}\index{mp file?{\tt
- mp} file}\index{files!mp?{\tt mp}} file extension can be omitted
- when calling MetaPost. If \cmdin\ already ends with
- \texttt{.mp}\index{mp file?{\tt mp} file}\index{files!mp?{\tt mp}}, no
- special file name handling takes place and MetaPost looks for that
- file only.
-
- As an example, if there are two files \texttt{fig} and \texttt{fig.mp}
- in the current directory and MetaPost is invoked with
- \verb|'mpost fig'|, the file that gets processed is \texttt{fig.mp}.
- To process file \texttt{fig} in this situation, MetaPost can be called
- as \verb|'mpost fig.'|. Note, the trailing dot is only needed as long
- as there exists a file \texttt{fig.mp} alongside file \texttt{fig}.
-
- If MetaPost cannot find any input file by the rules specified above,
- it complaints with an error message and interactively asks for a new
- input file name.
-
-\item[\cmdcode] All text on the command-line after \cmdin\ is
- interpreted as MetaPost code and is processed after \cmdin\ is read.
- If \cmdin\ already contains an \verb|end| statement, \cmdcode\ gets
- effectively ignored. If MetaPost doesn't encounter an \verb|end|
- statement neither in \cmdin\ nor in \cmdcode, it enters interactive
- mode after processing all input.
-
-\item[\texttt{\&\cmdmem}] The MetaPost program code in the \cmdmem\
- MetaPost source file (and any other files that it inputs) is executed
- before all other processing starts. The \cmdmem\ file should end with
- an \texttt{end}\index{end?\texttt{end}} or
- \texttt{dump}\index{dump?\texttt{dump}} command.
-
- If neither \texttt{\&\cmdmem} nor \cmdindex{-mem} is specified on the
- command line, MetaPost will default to loading the macro file
- \texttt{mpost.mp}\index{mpost.mp?\texttt{mpost.mp}}, or to whatever
- the actual name of the MetaPost executable is. The \cmdindex{-ini}
- switch can be used to suppress this behavior.
-
-\item[\cmdsw] MetaPost provides a number of command-line switches that
- control the run-time behavior. Switches can be prefixed by one or two
- dashes. Both forms have the same meaning. An exemplary call to
- MetaPost that compiles a file \texttt{fig.mp}, using \LaTeX\ to
- typeset \verb|btex|\slash\verb|etex| labels, would look like:
-$$
-\begin{verbatim}
-mpost -tex=latex fig
-\end{verbatim}
-\index{mpost?\texttt{mpost}}
-$$
-
-Here's a summary of the command-line switches provided by mpost:
-
-\setlength{\LTleft}{\leftmargin}
-\begin{longtable}{>{\ttfamily}p{.35\linewidth}>{\raggedright\arraybackslash}p{.6\linewidth}}
- \cmdindex{-debug}
- & Don't delete intermediate files.\\
- \cmdindex{-dvitomp}
- & Act as the \texttt{dvitomp} executable (see below).\\
- \cmdindex{-file-line-error}
- & Start error messages with \verb|`filename:lineno:'| instead of
- \verb|`!'|.\\
- \cmdindex{-halt-on-error}
- & Immediately exit after the first error occurred.\\
- \cmdindex{-help}
- & Show help on command-line switches.\\
- \cmdindex{-ini}
- & Do not load any preload file.\\
- \cmdindex{-interaction}=\tdescr{string}
- & Set interaction mode to one of \texttt{batchmode},
- \texttt{nonstopmode}, \texttt{scrollmode}, \texttt{errorstopmode}.\\
- \cmdindex{-jobname}=\tdescr{jobname}
- & Set the name of the job (affects output file names).\\
- \cmdindex{-kpathsea-debug}=\tdescr{number}
- & Set debugging flags for path searching.\\
- \cmdindex{-mem}=\tdescr{string}
- & Use \tdescr{string} for the name of the file that contains macros to be preloaded
- (same as \texttt{\&\cmdmem})\\
- \cmdindex{-no-file-line-error}
- & Enable normal MetaPost and \TeX\ style error messages.\\
- \cmdindex{-no-kpathsea}
- & Do not use the kpathsea program to find files. All files have to be
- in the current directory or specified via a full path.\\
- \cmdindex{-progname}=\tdescr{string}
- & Pretend to be the \tdescr{string} executable.\\
- \cmdindex{-recorder}
- & Write a list of all opened disk files to
- \texttt{\tdescr{jobname}.fls}\index{fls file?{\tt fls}
- file}\index{files!fls?{\tt fls}}. (This functionality is provided
- by kpathsea.)\\
- \cmdindex{-s} \tdescr{key}=\tdescr{value}
- & Set internal variable \tdescr{key} to \tdescr{value}. This switch
- can be given multiple times on the command-line. The assignments are
- applied just before the input file is read-in. \tdescr{value} can be
- an integer between -16383 and 16383 or a string in double quotes. For
- strings, double quotes are stripped, but no other processing takes
- place. To avoid double quotes being already stripped by the shell,
- the whole assignment can be enclosed in another pair of single quotes.
- Example: \verb|-s 'outputformat="svg"' -s prologues=3|\newline
- Use SVG backend converting font shapes to paths.\\
- \cmdindex{-tex}=\tdescr{texprogram}
- & Load format \tdescr{texprogram} for rendering \TeX\ material.\\
- \cmdindex{-troff}, \cmdindex{-T}
- & Output troff compatible PostScript files.\\
- \cmdindex{-version}
- & Print version information and exit.\\
-\end{longtable}
-
-The following command-line switches are silently ignored in
-\emph{mplib}-based MetaPost (v1.100 or later), because they are always
-`on':
-
-\begin{longtable}{>{\ttfamily}p{.35\linewidth}>{\raggedright\arraybackslash}p{.6\linewidth}}
- \cmdindex{-8bit}
- & \\
- \cmdindex{-parse-first-line}
- & \\
-\end{longtable}
-
-The following command-line switches are ignored, but trigger a warning:
-
-\begin{longtable}{>{\ttfamily}p{.35\linewidth}>{\raggedright\arraybackslash}p{.6\linewidth}}
- \cmdindex{-no-parse-first-line}
- & \\
- \cmdindex{-output-directory}=\tdescr{string}
- & \\
- \cmdindex{-translate-file}=\tdescr{string}
- & \\
-\end{longtable}
-
-\end{description}
-
-\subsubsection{The dvitomp Program}
-\label{refman:dvitomp}
-
-\renewcommand*{\cmdindex}[1]{\index{command-line!dvitomp?\texttt{dvitomp}!#1?\texttt{#1}}\texttt{#1}}
-\renewcommand*{\cmdin}{\tdescr{infile}}
-\newcommand*{\cmdout}{\tdescr{outfile}}
-
-The dvitomp\label{Ddvitomp}\index{dvitomp} program converts
-DVI\index{dvi file?{\tt dvi} file}\index{files!dvi?{\tt dvi}} files into
-low-level MetaPost code. MetaPost uses the dvitomp program when
-typesetting \verb|btex|\slash\verb|etex| labels by \TeX\ for the final
-conversion back into MetaPost code. The command-line syntax of the
-executable is
-$$
-\begin{verbatim}[commandchars=\\\{\}]
-dvitomp \opt{\cmdsw} \cmdin \opt{\cmdout}
-\end{verbatim}
-\index{dvitomp?\texttt{dvitomp}}\index{command-line!dvitomp?\texttt{dvitomp}}
-$$
-Parameters \cmdsw\ and \cmdout\ are optional.
-
-\begin{description}
-\item[\cmdin] This is the name of the DVI file to convert. If the name
- doesn't end with \texttt{.dvi}\index{dvi file?{\tt dvi}
- file}\index{files!dvi?{\tt dvi}}, that extension is appended. Note,
- dvitomp never opens files not ending \texttt{.dvi}. This file is in
- general automatically generated by \TeX\ or troff, driven by MetaPost.
-
-\item[\cmdout] This is the name of the output file containing the
- MetaPost code equivalent to \cmdin. If \cmdout\ is not given,
- \cmdout\ is \cmdin\ with the extension \texttt{.dvi} replaced by
- \texttt{.mpx}\index{mpx file?{\tt mpx} file}\index{files!mpx?{\tt
- mpx}}. If \cmdout\ is given and doesn't end with
- \texttt{.mpx}\index{mpx file?{\tt mpx} file}\index{files!mpx?{\tt
- mpx}}, that extension is appended.
-
-\item[\cmdsw] Command-line switches can be prefixed by one or two
- dashes. Both forms have the same meaning. The following command-line
- switches are provided by dvitomp:
-
-\setlength{\LTleft}{\leftmargin}
-\begin{longtable}{>{\ttfamily}p{.35\linewidth}>{\raggedright\arraybackslash}p{.6\linewidth}}
- \cmdindex{-help}
- & Show help on command-line switches.\\
- \cmdindex{-kpathsea-debug}=\tdescr{number}
- & Set debugging flags for path searching.\\
- \cmdindex{-progname}=\tdescr{string}
- & Pretend to be the \tdescr{string} executable.\\
- \cmdindex{-version}
- & Print version information and exit.\\
-\end{longtable}
-
-\end{description}
-
-The dvitomp program used to be part of a set of external tools, called
-\emph{mpware}\index{mpware tools}\footnote{makempx, mpto, dvitomp, and
- dmp.}, which were used by MetaPost for processing
-\verb|btex|\slash\verb|etex| labels. Since MetaPost version~1.100, the
-label conversion is handled internally by the mpost\index{mpost}
-program. The \emph{mpware} tools are therefore obsolete and no longer
-part of the MetaPost distribution. Nowadays, dvitomp is either a copy
-of the mpost executable with the name dvitomp or a wrapper, calling
-mpost\index{mpost} as
-$$
-\begin{verbatim}[commandchars=\\\{\}]
-mpost -dvitomp \cmdin \cmdout
-\end{verbatim}
-\index{mpost?\texttt{mpost}}
-$$
-
-\endgroup
-
-%%% Local Variables:
-%%% mode: latex
-%%% TeX-PDF-mode: t
-%%% TeX-master: "mpman"
-%%% End:
+\svnInfo $Id: mpman-app-refman.tex 1381 2010-10-08 16:13:03Z stephanhennig $
+\section{Reference Manual}
+\label{refman}
+
+\begingroup
+\renewcommand\topfraction{1.0}% Allow *lots* of figures and tables.
+\renewcommand\textfraction{0.0}
+\setcounter{topnumber}{10}
+\setcounter{totalnumber}{10}
+
+\subsection{The MetaPost Language}
+\label{refman:lang}
+
+Tables \ref{ivartab}--\ref{pseudotab} summarize the built-in features of
+Plain MetaPost. Features from the Plain\index{Plain macros} macro
+package are marked by \pl\ symbols. The distinction between primitives
+and plain macros can be ignored by the casual user.
+
+The tables in this appendix give the name of each feature, the page
+number where it is explained, and a short description. A few features
+are not explained elsewhere and have no page number listed. These
+features exist primarily for compatibility with \MF\index{metafont?\MF}
+and are intended to be self-explanatory. Certain other features from
+\MF\ are omitted entirely because they are of limited interest to the
+MetaPost users and/or would require long explanations. All of these are
+documented in {\sl The \MF book} \cite{kn:c} as explained in
+Appendix~\ref{MPvsMF}.
+
+Tables~\ref{ivartab} and~\ref{isvartab} list internal variables that
+take on numeric and string values. Table~\ref{pvartab} lists predefined
+variables of other types. Table~\ref{consttab} lists predefined
+constants. Some of these are implemented as variables whose values are
+intended to be left unchanged.
+
+Table~\ref{optab} summarizes MetaPost operators and lists
+the possible argument and result types for each one. A ``--'' entry for
+the left argument indicates a unary operator; ``--'' entries for both
+arguments indicate a nullary operator. Operators that take suffix
+parameters are not listed in this table because they are treated as
+``function-like macros''.
+
+The last two tables are Table~\ref{cmdtab} for commands and
+Table~\ref{pseudotab} macros that behave like functions or procedures.
+Such macros take parenthesized argument lists and/or suffix parameters,
+returning either a value whose type is listed in the table, or nothing.
+The latter case is for macros that behave like procedures. Their return
+values are listed as ``--''.
+
+The figures in this appendix present the syntax of the MetaPost language
+starting with expressions in Figures \ref{syexpr1}--\ref{sypseudo}.
+Although the productions sometimes specify types for expressions, primaries,
+secondaries, and tertiaries, no attempt is made to give separate syntaxes
+for \tdescr{numeric expression}, \tdescr{pair expression}, etc.
+The simplicity of the productions in Figure~\ref{sytypexpr} is due to this
+lack of type information. Type information
+can be found in Tables \ref{ivartab}--\ref{pseudotab}.
+
+Figures \ref{syprog}, \ref{sycmds1} and~\ref{sycmds2} give the syntax
+for MetaPost programs, including statements and commands. They do not
+mention loops\index{loops} and {\tt if}\index{if?\texttt{if}} tests
+because these constructions do not behave like statements. The syntax
+given in Figures \ref{syexpr1}--\ref{sycondloop} applies to the result
+of expanding all conditionals and loops. Conditionals and loops do have
+a syntax, but they deal with almost arbitrary sequences of tokens.
+Figure~\ref{sycondloop} specifies conditionals in terms of
+\tdescr{balanced tokens} and loops in terms of \tdescr{loop text}, where
+\tdescr{balanced tokens} is any sequence of tokens balanced with respect
+to {\tt if} and {\tt fi}, and \tdescr{loop text} is a sequence of tokens
+balanced with respect to {\tt for}, {\tt forsuffixes}, {\tt forever},
+and {\tt endfor}.
+
+\begin{table}[htp]
+\caption{Internal variables with numeric values}
+$$\begin{tabular}{|l|r|l|}
+\hline
+\multicolumn1{|c}{Name}& \multicolumn1{|c}{Page}& \multicolumn1{|c|}{Explanation}\\
+\hline
+\hline
+\pl\tt ahangle& \pageref{Dahangle}&
+ Angle for arrowheads in degrees (default: 45)\\\hline
+\pl\tt ahlength& \pageref{Dahlength}&
+ Size of arrowheads (default: 4{\tt bp})\\\hline
+\pl\tt bboxmargin& \pageref{Dbbmargin}&
+ Extra space allowed by {\tt bbox} (default 2{\tt bp})\\\hline
+\tt charcode& \pageref{Dcharcode}&
+ The number of the current figure\\\hline
+\tt day& \pageref{Dday}&
+ The current day of the month\\\hline
+\tt defaultcolormodel& \pageref{Ddefaultcolormodel}&
+ The initial color model (default: 5, rgb)\\\hline
+\pl\tt defaultpen& \pageref{Ddefaultpen}&
+ Numeric index used by {\tt pickup} to select default pen\\\hline
+\pl\tt defaultscale& \pageref{Ddfscale}&
+ Font scale factor for label strings (default 1)\\\hline
+\pl\tt dotlabeldiam& \pageref{Ddotlabdiam}&
+ Diameter of the dot drawn by \verb|dotlabel| (default 3{\tt bp})\\\hline
+\tt hour& \pageref{Dhour}&
+ The hour of the day this job started\\\hline
+\pl\tt labeloffset& \pageref{Dlaboff}&
+ Offset distance for labels (default 3{\tt bp})\\\hline
+\tt linecap& \pageref{Dlinecap}&
+ 0 for butt, 1 for round, 2 for square\\\hline
+\tt linejoin& \pageref{Dlinejoin}&
+ 0 for mitered, 1 for round, 2 for beveled\\\hline
+\tt minute& \pageref{Dminute}&
+ The minute of the hour this job started\\\hline
+\tt miterlimit& \pageref{Dmiterlim}&
+ Controls miter length as in PostScript\\\hline
+\tt month& \pageref{Dmonth}&
+ The current month (e.g, 3 $\equiv$ March)\\\hline
+\tt mpprocset& \pageref{Dmpprocset}&
+ Create a PostScript dictionary of command abbreviations\\\hline
+\tt pausing& --&
+ ${}>0$ to display lines on the terminal before they are read\\\hline
+\tt prologues& \pageref{Dprologues}&
+ ${}>0$ to output conforming PostScript using built-in fonts\\\hline
+\tt restoreclipcolor& --&
+ Restore the graphics state after clip operations (default: 1)\\\hline
+\tt showstopping& --&
+ ${}>0$ to stop after each {\tt show} command\\\hline
+\tt time& \pageref{Dtime}&
+ The number of minutes past midnight when this job started\\\hline
+\tt tracingcapsules& \pageref{Dtcapsules}&
+ ${}>0$ to show capsules too\\\hline
+\tt tracingchoices& \pageref{Dtchoices}&
+ ${}>0$ to show the control points chosen for paths\\\hline
+\tt tracingcommands& \pageref{Dtcommands}&
+ ${}>0$ to show commands and operations as they are performed\\\hline
+\tt tracingequations& \pageref{Dtequations}&
+ ${}>0$ to show each variable when it becomes known\\\hline
+\tt tracinglostchars& \pageref{Dtlostchars}&
+ ${}>0$ to show characters that aren't {\tt infont}\\\hline
+\tt tracingmacros& \pageref{Dtmacros}&
+ ${}>0$ to show macros before they are expanded\\\hline
+\tt tracingonline& \pageref{Dtonline}&
+ ${}>0$ to show long diagnostics on the terminal\\\hline
+\tt tracingoutput& \pageref{Dtoutput}&
+ ${}>0$ to show digitized edges as they are output\\\hline
+\tt tracingrestores& \pageref{Dtrestores}&
+ ${}>0$ to show when a variable or internal is restored\\\hline
+\tt tracingspecs& \pageref{Dtspecs}&
+ ${}>0$ to show path subdivision when using a polygonal a pen\\\hline
+\tt tracingstats& \pageref{Dtstats}&
+ ${}>0$ to show memory usage at end of job\\\hline
+\tt tracingtitles& --&
+ ${}>0$ to show titles online when they appear\\\hline
+\tt troffmode& \pageref{Dtroffmode}&
+ Set to~1 if a {\tt -troff} or {\tt -T} option was given\\\hline
+\tt truecorners& \pageref{Dtruecorn}&
+ ${}>0$ to make {\tt llcorner} etc. ignore {\tt setbounds}\\\hline
+\tt warningcheck& \pageref{Dwarncheck}&
+ Controls error message when variable value is large\\\hline
+\tt year& \pageref{Dyear}&
+ The current year (e.g., 1992)\\\hline
+\end{tabular}
+$$
+\label{ivartab}%
+\index{pausing?\texttt{pausing}}\index{showstopping?\texttt{showstopping}}%
+\index{tracingtitles?\texttt{tracingtitles}}
+\end{table}
+
+
+\begin{table}[htp]
+\caption{Internal string variables}
+$$\begin{tabular}{|l|r|l|}
+\hline
+\multicolumn1{|c}{Name}& \multicolumn1{|c}{Page}& \multicolumn1{|c|}{Explanation}\\
+\hline
+\hline
+\tt jobname& --&
+ The name of this job\\\hline
+\tt outputformat& \pageref{Doutputformat}&
+ Output backend to be used (default: ``eps'')\\\hline
+\tt outputtemplate& \pageref{Doutputtemplate}&
+ Output filename template (default: ``\%j.\%c'')\\\hline
+\end{tabular}
+$$
+\label{isvartab}
+\index{jobname?\texttt{jobname}}
+\end{table}
+
+
+\begin{table}[htp]
+\caption{Other Predefined Variables}
+$$\begin{tabular}{|l|l|r|l|}
+\hline
+\multicolumn1{|c}{Name}& \multicolumn1{|c}{Type}& \multicolumn1{|c}{Page}&
+ \multicolumn1{|c|}{Explanation}\\
+\hline
+\hline
+\pl\tt background& color& \pageref{Dbground}&
+ Color for {\tt unfill} and {\tt undraw} (usually white)\\\hline
+\pl\tt currentpen& pen& \pageref{Dcurpen}&
+ Last pen picked up (for use by the {\tt draw} command)\\\hline
+\pl\tt currentpicture& picture& \pageref{Dcurpic}&
+ Accumulate results of {\tt draw} and {\tt fill} commands\\\hline
+\pl\tt cuttings& path& \pageref{Dcuttings}&
+ Subpath cut off by last {\tt cutbefore} or {\tt cutafter}\\\hline
+\pl\tt defaultfont& string& \pageref{Ddffont}&
+ Font used by label commands for typesetting strings\\\hline
+\pl\tt extra\_beginfig& string& \pageref{Dxbfig}&
+ Commands for {\tt beginfig} to scan\\\hline
+\pl\tt extra\_endfig& string& \pageref{Dxefig}&
+ Commands for {\tt endfig} to scan\\\hline
+\end{tabular}
+$$
+\label{pvartab}
+\end{table}
+
+
+\begin{table}[htp]
+\caption{Predefined Constants}
+$$\begin{tabular}{|l|l|r|l|}
+\hline
+\multicolumn1{|c}{Name}& \multicolumn1{|c}{Type}& \multicolumn1{|c}{Page}&
+ \multicolumn1{|c|}{Explanation}\\
+\hline
+\hline
+\pl\tt beveled& numeric& \pageref{Dbvled}&
+ {\tt linejoin} value for beveled joins [2]\\\hline
+\pl\tt black& color& \pageref{Dblack}&
+ Equivalent to {\tt (0,0,0)}\\\hline
+\pl\tt blue& color& \pageref{Dblue}&
+ Equivalent to {\tt (0,0,1)}\\\hline
+\pl\tt bp& numeric& \pageref{Dbp}&
+ One PostScript point in {\tt bp} units [1]\\\hline
+\pl\tt butt& numeric& \pageref{Dbutt}&
+ {\tt linecap} value for butt end caps [0]\\\hline
+\pl\tt cc& numeric& \pageref{Dcc}&
+ One cicero in {\tt bp} units [12.79213]\\\hline
+\pl\tt cm& numeric& \pageref{Dcm}&
+ One centimeter in {\tt bp} units [28.34645]\\\hline
+\pl\tt dd& numeric& \pageref{Ddd}&
+ One didot point in {\tt bp} units [1.06601]\\\hline
+\pl\tt ditto& string& --&
+ The {\tt "} character as a string of length 1\\\hline
+\pl\tt down& pair& \pageref{Ddown}&
+ Downward direction vector $(0,-1)$\\\hline
+\pl\tt epsilon& numeric& \pageref{Depsilon}&
+ Smallest positive MetaPost number [$1\over65536$]\\\hline
+\pl\tt evenly& picture& \pageref{Devenly}&
+ Dash pattern for equal length dashes\\\hline
+\pl\tt EOF& string& \pageref{Deof}&
+ Single null character\\\hline
+\tt false& boolean& \pageref{Dfalse}&
+ The boolean value {\it false\/}\\\hline
+\pl\tt fullcircle& path& \pageref{Dfcirc}&
+ Circle of diameter 1 centered on $(0,0)$\\\hline
+\pl\tt green& color& \pageref{Dgreen}&
+ Equivalent to {\tt (0,1,0)}\\\hline
+\pl\tt halfcircle& path& \pageref{Dhcirc}&
+ Upper half of a circle of diameter 1\\\hline
+\pl\tt identity& transform& \pageref{Dident}&
+ Identity transformation\\\hline
+\pl\tt in& numeric& \pageref{Din}&
+ One inch in {\tt bp} units [72]\\\hline
+\pl\tt infinity& numeric& \pageref{Dinf}&
+ Large positive value [4095.99998]\\\hline
+\pl\tt left& pair& \pageref{Dleft}&
+ Leftward direction $(-1,0)$\\\hline
+\pl\tt mitered& numeric& \pageref{Dmitred}&
+ {\tt linejoin} value for mitered joins [0]\\\hline
+\pl\tt mm& numeric& \pageref{Dmm}&
+ One millimeter in {\tt bp} units [2.83464]\\\hline
+\tt mpversion& string& \pageref{Dmpversion}&
+ MetaPost version number\\\hline
+\tt nullpen& pen& \pageref{Dnlpen}&
+ Empty pen\\\hline
+\tt nullpicture& picture& \pageref{Dnlpic}&
+ Empty picture\\\hline
+\pl\tt origin& pair& \pageref{Dorigin}&
+ The pair $(0,0)$\\\hline
+\pl\tt pc& numeric& \pageref{Dpc}&
+ One pica in {\tt bp} units [11.95517]\\\hline
+\tt pencircle& pen& \pageref{Dpncirc}&
+ Circular pen of diameter 1\\\hline
+\pl\tt pensquare& pen& \pageref{Dpnsqr}&
+ Square pen of height 1 and width 1\\\hline
+\pl\tt pt& numeric& \pageref{Dpt}&
+ One printer's point in {\tt bp} units [0.99626]\\\hline
+\pl\tt quartercircle& path& \pageref{Dqcirc}&
+ First quadrant of a circle of diameter 1\\\hline
+\pl\tt red& color& \pageref{Dred}&
+ Equivalent to {\tt (1,0,0)}\\\hline
+\pl\tt right& pair& \pageref{Dright}&
+ Rightward direction $(1,0)$\\\hline
+\pl\tt rounded& numeric& \pageref{Drnded}&
+ {\tt linecap} and {\tt linejoin} value for round joins\\
+\tt & & &
+ and end caps [1]\\\hline
+\pl\tt squared& numeric& \pageref{Dsqred}&
+ {\tt linecap} value for square end caps [2]\\\hline
+\tt true& boolean& \pageref{Dtrue}&
+ The boolean value {\tt true}\\\hline
+\pl\tt unitsquare& path& \pageref{Dunitsqr}&
+ The path \verb|(0,0)--(1,0)--(1,1)--(0,1)--cycle|\\\hline
+\pl\tt up& pair& \pageref{Dup}&
+ Upward direction $(0,1)$\\\hline
+\pl\tt white& color& \pageref{Dwhite}&
+ Equivalent to {\tt (1,1,1)}\\\hline
+\pl\tt withdots& picture& \pageref{Dwdots}&
+ Dash pattern that produces dotted lines\\\hline
+\end{tabular}
+$$
+\label{consttab}%
+\index{ditto?\texttt{ditto}}%
+\end{table}
+
+
+\clearpage
+\LTXtable{\textwidth}{mpman-app-optab}
+
+\begin{table}[htp]
+\caption{Commands}
+$$\begin{tabular}{|l|r|l|}
+\hline
+\multicolumn1{|c}{Name}& \multicolumn1{|c}{Page}& \multicolumn1{|c|}{Explanation}\\
+\hline
+\hline
+\tt \verb|addto|& \pageref{sydraw}&
+ Low-level command for drawing and filling\\\hline
+\tt \verb|clip|& \pageref{Dclip}&
+ Applies a clipping path to a picture\\\hline
+\tt \verb|closefrom|& \pageref{Dclosefrom}&
+ Close a file opened by {\tt readfrom}\\\hline
+\pl\tt \verb|cutdraw|& \pageref{Dctdraw}&
+ Draw with butt end caps\\\hline
+\tt \verb|dashed|& \pageref{Ddashed}&
+ Apply dash pattern to drawing command\\\hline
+\pl\tt \verb|draw|& \pageref{curves}&
+ Draw a line or a picture\\\hline
+\pl\tt \verb|drawarrow|& \pageref{Ddrwarr}&
+ Draw a line with an arrowhead at the end\\\hline
+\pl\tt \verb|drawdblarrow|& \pageref{Ddrwdar}&
+ Draw a line with arrowheads at both ends\\\hline
+\tt \verb|errhelp|& \pageref{Derrhelp}&
+ Declare help message for interactive mode\\\hline
+\tt \verb|errmessage|& \pageref{Derrmessage}&
+ Show error message on the terminal and enter interactive
+ mode\\\hline
+\tt \verb|filenametemplate|& \pageref{Dfilenametemplate}&
+ Set output file name pattern (deprecated, see
+ \verb|outputtemplate|)\\\hline
+\pl\tt \verb|fill|& \pageref{Dfill}&
+ Fill inside a cyclic path\\\hline
+\pl\tt \verb|filldraw|& \pageref{Dfildrw}&
+ Draw a cyclic path and fill inside it\\\hline
+\tt \verb|fontmapfile|& \pageref{Dfontmapfile}&
+ Read font map entries from file\\\hline
+\tt \verb|fontmapline|& \pageref{Dfontmapline}&
+ Declare a font map entry\\\hline
+\tt \verb|interim|& \pageref{Dinterm}&
+ Make a local change to an internal variable\\\hline
+\tt \verb|let|& --&
+ Assign one symbolic token the meaning of another\\\hline
+\pl\tt \verb|loggingall|& \pageref{Dlogall}&
+ Turn on all tracing (log file only)\\\hline
+\tt \verb|message|& \pageref{Dmessage}&
+ Show message string on the terminal\\\hline
+\tt \verb|newinternal|& \pageref{Dnewint}&
+ Declare new internal variables\\\hline
+\pl\tt \verb|pickup|& \pageref{Dpickup}&
+ Specify new pen for line drawing\\\hline
+\tt \verb|save|& \pageref{Dsave}&
+ Make variables local\\\hline
+\tt \verb|setbounds|& \pageref{Dsetbnd}&
+ Make a picture lie about its bounding box\\\hline
+\tt \verb|shipout|& \pageref{Dship}&
+ Low-level command to output a figure\\\hline
+\tt \verb|show|& \pageref{Dshow}&
+ Print out expressions symbolically\\\hline
+\tt \verb|showdependencies|& \pageref{Dshdep}&
+ Print out all unsolved equations\\\hline
+\tt \verb|showtoken|& \pageref{Dshtok}&
+ Print an explanation of what a token is\\\hline
+\tt \verb|showvariable|& \pageref{Dshvar}&
+ Print variables symbolically\\\hline
+\tt \verb|special|& \pageref{Dspecl}&
+ Print a string directly in the PostScript output file\\\hline
+\pl\tt \verb|tracingall|& \pageref{Dtall}&
+ Turn on all tracing\\\hline
+\pl\tt \verb|tracingnone|& \pageref{Dtnone}&
+ Turn off all tracing\\\hline
+\pl\tt \verb|undraw|& \pageref{Dundraw}&
+ Erase a line or a picture\\\hline
+\pl\tt \verb|unfill|& \pageref{Dunfill}&
+ Erase inside a cyclic path\\\hline
+\pl\tt \verb|unfilldraw|& \pageref{Dunfdrw}&
+ Erase a cyclic path and its inside\\\hline
+\tt \verb|withcmykcolor|& \pageref{Dwithcmykcolor}&
+ Apply CMYK color to drawing command\\\hline
+\tt \verb|withcolor|& \pageref{Dwithcolor}&
+ Apply generic color specification to drawing command\\\hline
+\tt \verb|withgreyscale|& \pageref{Dwithgreyscale}&
+ Apply greyscale color to drawing command\\\hline
+\tt \verb|withoutcolor|& \pageref{Dwithoutcolor}&
+ Don't apply any color specification to drawing command\\\hline
+\tt \verb|withpen|& \pageref{sec.pens}&
+ Apply pen to drawing operation\\\hline
+\tt \verb|withpostscript|& \pageref{Dwithpost}&
+ End raw PostScript code\\\hline
+\tt \verb|withprescript|& \pageref{Dwithpre}&
+ Begin raw PostScript code\\\hline
+\tt \verb|withrgbcolor|& \pageref{Dwithrgbcolor}&
+ Apply RGB color to drawing command\\\hline
+\tt \verb|write to|& \pageref{Dwrite}&
+ Write string to file\\\hline
+\end{tabular}
+$$
+\index{let?\texttt{let}}%
+\label{cmdtab}
+\end{table}
+
+
+\begin{table}[htp]
+\caption{Function-Like Macros}
+$$\begin{tabular}{|l|l|l|r|l|}
+\hline
+\multicolumn1{|c}{Name}& \multicolumn1{|c}{Arguments}&
+ \multicolumn1{|c}{Result}& \multicolumn1{|c}{Page}&
+ \multicolumn1{|c|}{Explanation}\\
+\hline
+\hline
+\pl\tt \verb|buildcycle|& list of paths& path& \pageref{buildcy}&
+ Build a cyclic path\\\hline
+\pl\tt \verb|dashpattern|& on/off distances& picture& \pageref{Ddshpat}&
+ Create a pattern for dashed lines\\\hline
+\pl\tt \verb|decr|& numeric variable& numeric& \pageref{Dincr}&
+ Decrement and return new value\\\hline
+\pl\tt \verb|dotlabel|& suffix, picture, pair& --& \pageref{Ddotlab}&
+ Mark point and draw picture nearby\\\hline
+\pl\tt \verb|dotlabel|& suffix, string, pair& --& \pageref{Ddotlab}&
+ Mark point and place text nearby\\\hline
+\pl\tt \verb|dotlabels|& suffix, point numbers& --& \pageref{Ddotlbs}&
+ Mark {\tt z} points with their numbers\\\hline
+\pl\tt \verb|drawdot|& pair& --& \pageref{Ddrawdot}&
+ Draw a dot at the given point\\\hline
+\pl\tt \verb|drawoptions|& drawing options& --& \pageref{Ddropts}&
+ Set options for drawing commands\\\hline
+\pl\tt \verb|image|& string& picture& \pageref{Dimage}&
+ Return picture from text\\\hline
+\pl\tt \verb|incr|& numeric variable& numeric& \pageref{Dincr}&
+ Increment and return new value\\\hline
+\pl\tt \verb|label|& suffix, picture, pair& --& \pageref{Dlabel}&
+ Draw picture near given point\\\hline
+\pl\tt \verb|label|& suffix, string, pair& --& \pageref{Dlabel}&
+ Place text near given point\\\hline
+\pl\tt \verb|labels|& suffix, point numbers& --& \pageref{Dlabels}&
+ Draw {\tt z} point numbers; no dots\\\hline
+\pl\tt \verb|max|& list of numerics& numeric& --&
+ Find the maximum\\\hline
+\pl\tt \verb|max|& list of strings& string& --&
+ Find the lexicographically last string\\\hline
+\pl\tt \verb|min|& list of numerics& numeric& --&
+ Find the minimum\\\hline
+\pl\tt \verb|min|& list of strings& string& --&
+ Find the lexicographically first string\\\hline
+\pl\tt \verb|thelabel|& suffix, picture, pair& picture& \pageref{Dthelab}&
+ Picture shifted as if to label a point\\\hline
+\pl\tt \verb|thelabel|& suffix, string, pair& picture& \pageref{Dthelab}&
+ Text positioned as if to label a point\\\hline
+\pl\tt \verb|z|& suffix& pair& \pageref{Dzconv}&
+ The pair ${\tt x}\descr{suffix},{\tt y}\descr{suffix})$\\\hline
+\end{tabular}
+$$
+\index{min?\texttt{min}}\index{max?\texttt{max}}%
+\label{pseudotab}
+\end{table}
+
+\clearpage
+
+\begin{figure}[htp]
+\begin{ctabbing}
+$\tt \descr{atom} \rightarrow \descr{variable} \;|\; \descr{argument}$\\
+$\tt \qquad \;|\; \descr{number or fraction}$\\
+$\tt \qquad \;|\; \descr{internal variable}$\\
+$\tt \qquad \;|\; \hbox{\tt (}\descr{expression}\hbox{\tt )}$\\
+$\tt \qquad \;|\; begingroup \descr{statement list} \descr{expression} endgroup$\\
+$\tt \qquad \;|\; \descr{nullary op}$\\
+$\tt \qquad \;|\; btex \descr{typesetting commands} etex$\\
+$\tt \qquad \;|\; \descr{pseudo function}$\\
+$\tt \descr{primary} \rightarrow \descr{atom}$\\
+$\tt \qquad \;|\; \hbox{\tt (}\descr{numeric expression}\hbox{\tt ,} \descr{numeric expression}\hbox{\tt )}$\\
+$\tt \qquad \;|\; \hbox{\tt (}\descr{numeric expression}\hbox{\tt ,} \descr{numeric expression}\hbox{\tt ,} \descr{numeric expression}\hbox{\tt )}$\\
+$\tt \qquad \;|\; \descr{of operator} \descr{expression} of \descr{primary}$\\
+$\tt \qquad \;|\; \descr{unary op} \descr{primary}$\\
+$\tt \qquad \;|\; str \descr{suffix}$\\
+$\tt \qquad \;|\; z \descr{suffix}$\\
+$\tt \qquad \;|\; \descr{numeric atom}\hbox{\tt [}\descr{expression}\hbox{\tt ,}\descr{expression}\hbox{\tt ]}$\\
+$\tt \qquad \;|\; \descr{scalar multiplication op} \descr{primary}$\\
+$\tt \descr{secondary} \rightarrow \descr{primary}$\\
+$\tt \qquad \;|\; \descr{secondary} \descr{primary binop} \descr{primary}$\\
+$\tt \qquad \;|\; \descr{secondary} \descr{transformer}$\\
+$\tt \descr{tertiary} \rightarrow \descr{secondary}$\\
+$\tt \qquad \;|\; \descr{tertiary} \descr{secondary binop} \descr{secondary}$\\
+$\tt \descr{subexpression} \rightarrow \descr{tertiary}$\\
+$\tt \qquad \;|\; \descr{path expression} \descr{path join} \descr{path knot}$\\
+$\tt \descr{expression} \rightarrow \descr{subexpression}$\\
+$\tt \qquad \;|\; \descr{expression} \descr{tertiary binop} \descr{tertiary}$\\
+$\tt \qquad \;|\; \descr{path subexpression} \descr{direction specifier}$\\
+$\tt \qquad \;|\; \descr{path subexpression} \descr{path join} cycle$\\
+$\tt $\\
+$\tt \descr{path knot} \rightarrow \descr{tertiary}$\\
+$\tt \descr{path join} \rightarrow \verb|--|$\\
+$\tt \qquad \;|\; \descr{direction specifier} \descr{basic path join} \descr{direction specifier}$\\
+$\tt \descr{direction specifier} \rightarrow \descr{empty}$\\
+$\tt \qquad \;|\; \verb|{|curl \descr{numeric expression}\verb|}|$\\
+$\tt \qquad \;|\; \verb|{|\descr{pair expression}\verb|}|$\\
+$\tt \qquad \;|\; \verb|{|\descr{numeric expression}\hbox{\tt ,}\descr{numeric expression}\verb|}|$\\
+$\tt \descr{basic path join} \rightarrow \hbox{\tt ..} \;|\; \hbox{\tt ...} \;|\; \hbox{\tt ..}\descr{tension}\hbox{\tt ..} \;|\; \hbox{\tt ..}\descr{controls}\hbox{\tt ..}$\\
+$\tt \descr{tension} \rightarrow tension \descr{numeric primary}$\\
+$\tt \qquad \;|\; tension \descr{numeric primary} and \descr{numeric primary}$\\
+$\tt \descr{controls} \rightarrow controls \descr{pair primary}$\\
+$\tt \qquad \;|\; controls \descr{pair primary} and \descr{pair primary}$\\
+$\tt $\\
+$\tt \descr{argument} \rightarrow \descr{symbolic token}$\\
+$\tt \descr{number or fraction} \rightarrow \descr{number}\hbox{\tt /}\descr{number}$\\
+$\tt \qquad \;|\; \descr{number not followed by `\hbox{\tt /}\tdescr{number}'}$\\
+$\tt \descr{scalar multiplication op} \rightarrow + \;|\; -$\\
+$\tt \qquad \;|\; \descr{`\tdescr{number or fraction}' not followed by `\tdescr{add op}\tdescr{number}'}$
+\end{ctabbing}
+\caption{Part 1 of the syntax for expressions}
+\index{expression?\tdescr{expression}}\index{nullary op?\tdescr{nullary op}}\index{of operator?\tdescr{of operator}}%
+\index{path knot?\tdescr{path knot}}\index{primary?\tdescr{primary}}\index{primary binop?\tdescr{primary binop}}%
+\index{secondary?\tdescr{secondary}}\index{secondary binop?\tdescr{secondary binop}}\index{suffix?\tdescr{suffix}}%
+\index{tertiary?\tdescr{tertiary}}\index{tertiary binop?\tdescr{tertiary binop}}\index{unary op?\tdescr{unary op}}%
+\label{syexpr1}
+\end{figure}
+
+\begin{figure}[htp]
+\begin{ctabbing}
+$\tt \descr{transformer} \rightarrow rotated \descr{numeric primary}$\\
+$\tt \qquad \;|\; scaled \descr{numeric primary}$\\
+$\tt \qquad \;|\; shifted \descr{pair primary}$\\
+$\tt \qquad \;|\; slanted \descr{numeric primary}$\\
+$\tt \qquad \;|\; transformed \descr{transform primary}$\\
+$\tt \qquad \;|\; xscaled \descr{numeric primary}$\\
+$\tt \qquad \;|\; yscaled \descr{numeric primary}$\\
+$\tt \qquad \;|\; zscaled \descr{pair primary}$\\
+$\tt \qquad \;|\; reflectedabout\hbox{\tt (}\descr{pair expression}\hbox{\tt ,} \descr{pair expression}\hbox{\tt )}$\\
+$\tt \qquad \;|\; rotatedaround\hbox{\tt (}\descr{pair expression}\hbox{\tt ,} \descr{numeric expression}\hbox{\tt )}$\\
+$\tt $\\
+$\tt \descr{nullary op} \rightarrow false \;|\; normaldeviate \;|\; nullpen \;|\; nullpicture \;|\; pencircle$\\
+$\tt \qquad \;|\; true \;|\; whatever$\\
+$\tt \descr{unary op} \rightarrow \descr{type}$\\
+$\tt \qquad \;|\; abs \;|\; angle \;|\; arclength \;|\; ASCII \;|\; bbox \;|\; blackpart \;|\; bluepart \;|\; bot \;|\; bounded$\\
+$\tt \qquad \;|\; ceiling \;|\; center \;|\; char \;|\; clipped \;|\; colormodel \;|\; cosd \;|\; cyanpart \;|\; cycle$\\
+$\tt \qquad \;|\; dashpart \;|\; decimal \;|\; dir \;|\; floor \;|\; filled \;|\; fontpart \;|\; fontsize$\\
+$\tt \qquad \;|\; greenpart \;|\; greypart \;|\; hex \;|\; inverse \;|\; known \;|\; length \;|\; lft \;|\; llcorner$\\
+$\tt \qquad \;|\; lrcorner\;|\; magentapart \;|\; makepath \;|\; makepen \;|\; mexp \;|\; mlog \;|\; not \;|\; oct \;|\; odd$\\
+$\tt \qquad \;|\; pathpart \;|\; penpart \;|\; readfrom \;|\; redpart \;|\; reverse \;|\; round \;|\; rt \;|\; sind \;|\; sqrt$\\
+$\tt \qquad \;|\; stroked \;|\; textpart \;|\; textual \;|\; top \;|\; ulcorner$\\
+$\tt \qquad \;|\; uniformdeviate \;|\; unitvector \;|\; unknown \;|\; urcorner \;|\; xpart \;|\; xxpart$\\
+$\tt \qquad \;|\; xypart \;|\; yellowpart \;|\; ypart \;|\; yxpart \;|\; yypart$\\
+$\tt \descr{type} \rightarrow boolean \;|\; cmykcolor \;|\; color \;|\; numeric \;|\; pair$\\
+$\tt \qquad \;|\; path \;|\; pen \;|\; picture \;|\; rgbcolor \;|\; string \;|\; transform$\\
+$\tt \descr{internal type} \rightarrow numeric \;|\; string$\\
+$\tt \descr{primary binop} \rightarrow \hbox{\tt *} \;|\; \hbox{\tt /} \;|\; \hbox{\tt **} \;|\; and$\\
+$\tt \qquad \;|\; dotprod \;|\; div \;|\; infont \;|\; mod$\\
+$\tt \descr{secondary binop} \rightarrow + \;|\; - \;|\; ++ \;|\; +-+ \;|\; or$\\
+$\tt \qquad \;|\; intersectionpoint \;|\; intersectiontimes$\\
+$\tt \descr{tertiary binop} \rightarrow \hbox{\tt \&} \;|\; \hbox{\verb|<|} \;|\; \hbox{\verb|<=|} \;|\; \hbox{\verb|<>|} \;|\; \hbox{\tt =} \;|\; \hbox{\verb|>|} \;|\; \hbox{\verb|>=|}$\\
+$\tt \qquad \;|\; cutafter \;|\; cutbefore$\\
+$\tt \descr{of operator} \rightarrow arctime \;|\; direction \;|\; directiontime \;|\; directionpoint$\\
+$\tt \qquad \;|\; glyph \;|\; penoffset \;|\; point \;|\; postcontrol \;|\; precontrol$\\
+$\tt \qquad \;|\; subpath \;|\; substring$\\
+$\tt $\\
+$\tt \descr{variable} \rightarrow \descr{tag}\descr{suffix}$\\
+$\tt \descr{suffix} \rightarrow \descr{empty} \;|\; \descr{suffix}\descr{subscript} \;|\; \descr{suffix}\descr{tag}$\\
+$\tt \qquad \;|\; \descr{suffix parameter}$\\
+$\tt \descr{subscript} \rightarrow \descr{number} \;|\; \hbox{\tt [}\descr{numeric expression}\hbox{\tt ]}$\\
+$\tt $\\
+$\tt \descr{internal variable} \rightarrow ahangle \;|\; ahlength \;|\; bboxmargin$\\
+$\tt \qquad \;|\; charcode \;|\; day \;|\; defaultcolormodel \;|\; defaultpen \;|\; defaultscale$\\
+$\tt \qquad \;|\; hour \;|\; jobname \;|\; labeloffset \;|\; linecap \;|\; linejoin
+\;|\; minute \;|\; miterlimit \;|\; month$\\
+$\tt \qquad \;|\; outputformat \;|\; outputtemplate \;|\; pausing \;|\; prologues \;|\; showstopping$\\
+$\tt \qquad \;|\; time \;|\; tracingoutput \;|\; tracingcapsules \;|\; tracingchoices \;|\; tracingcommands$\\
+$\tt \qquad \;|\; tracingequations \;|\; tracinglostchars \;|\; tracingmacros$\\
+$\tt \qquad \;|\; tracingonline \;|\; tracingrestores \;|\; tracingspecs$\\
+$\tt \qquad \;|\; tracingstats \;|\; tracingtitles \;|\; truecorners$\\
+$\tt \qquad \;|\; warningcheck \;|\; year$\\
+$\tt \qquad \;|\; \descr{symbolic token defined by {\tt newinternal}}$
+\end{ctabbing}
+\caption{Part 2 of the syntax for expressions}
+\index{nullary op?\tdescr{nullary op}}\index{of operator?\tdescr{of operator}}\index{primary binop?\tdescr{primary binop}}%
+\index{secondary binop?\tdescr{secondary binop}}\index{subscript?\tdescr{subscript}}\index{suffix?\tdescr{suffix}}%
+\index{tertiary binop?\tdescr{tertiary binop}}\index{unary op?\tdescr{unary op}}%
+\label{syexpr2}
+\end{figure}
+
+\begin{figure}[htp]
+\begin{ctabbing}
+$\tt \descr{pseudo function} \rightarrow min\hbox{\tt (}\descr{expression list}\hbox{\tt )}$\\
+$\tt \qquad \;|\; max\hbox{\tt (}\descr{expression list}\hbox{\tt )}$\\
+$\tt \qquad \;|\; incr\hbox{\tt (}\descr{numeric variable}\hbox{\tt )}$\\
+$\tt \qquad \;|\; decr\hbox{\tt (}\descr{numeric variable}\hbox{\tt )}$\\
+$\tt \qquad \;|\; dashpattern\hbox{\tt (}\descr{on\hbox{\tt /}off list}\hbox{\tt )}$\\
+$\tt \qquad \;|\; interpath\hbox{\tt (}\descr{numeric expression}\hbox{\tt ,} \descr{path expression}\hbox{\tt ,} \descr{path expression}\hbox{\tt )}$\\
+$\tt \qquad \;|\; buildcycle\hbox{\tt (}\descr{path expression list}\hbox{\tt )}$\\
+$\tt \qquad \;|\; thelabel\descr{label suffix}\hbox{\tt (}\descr{expression}\hbox{\tt ,} \descr{pair expression}\hbox{\tt )}$\\
+$\tt \descr{path expression list} \rightarrow \descr{path expression}$\\
+$\tt \qquad \;|\; \descr{path expression list}\hbox{\tt ,} \descr{path expression}$\\
+$\tt \descr{on\hbox{\tt /}off list} \rightarrow \descr{on\hbox{\tt /}off list}\descr{on\hbox{\tt /}off clause} \;|\; \descr{on\hbox{\tt /}off clause}$\\
+$\tt \descr{on\hbox{\tt /}off clause} \rightarrow on \descr{numeric tertiary} \;|\; off \descr{numeric tertiary}$
+\end{ctabbing}
+\caption{The syntax for function-like macros}
+\index{label suffix?\tdescr{label suffix}}%
+\label{sypseudo}
+\end{figure}
+
+\begin{figure}[htp]
+\begin{ctabbing}
+$\tt \descr{boolean expression} \rightarrow \descr{expression}$\\
+$\tt \descr{cmykcolor expression} \rightarrow \descr{expression}$\\
+$\tt \descr{color expression} \rightarrow \descr{expression}$\\
+$\tt \descr{numeric atom} \rightarrow \descr{atom}$\\
+$\tt \descr{numeric expression} \rightarrow \descr{expression}$\\
+$\tt \descr{numeric primary} \rightarrow \descr{primary}$\\
+$\tt \descr{numeric tertiary} \rightarrow \descr{tertiary}$\\
+$\tt \descr{numeric variable} \rightarrow \descr{variable} \;|\; \descr{internal variable}$\\
+$\tt \descr{pair expression} \rightarrow \descr{expression}$\\
+$\tt \descr{pair primary} \rightarrow \descr{primary}$\\
+$\tt \descr{path expression} \rightarrow \descr{expression}$\\
+$\tt \descr{path subexpression} \rightarrow \descr{subexpression}$\\
+$\tt \descr{pen expression} \rightarrow \descr{expression}$\\
+$\tt \descr{picture expression} \rightarrow \descr{expression}$\\
+$\tt \descr{picture variable} \rightarrow \descr{variable}$\\
+$\tt \descr{rgbcolor expression} \rightarrow \descr{expression}$\\
+$\tt \descr{string expression} \rightarrow \descr{expression}$\\
+$\tt \descr{suffix parameter} \rightarrow \descr{parameter}$\\
+$\tt \descr{transform primary} \rightarrow \descr{primary}$
+\end{ctabbing}
+\caption{Miscellaneous productions needed to complete the BNF}
+\label{sytypexpr}
+\end{figure}
+
+\begin{figure}[htp]
+\begin{ctabbing}
+$\tt \descr{program} \rightarrow \descr{statement list} end$\\
+$\tt \descr{statement list} \rightarrow \descr{empty} \;|\; \descr{statement list} \hbox{\tt ;} \descr{statement}$\\
+$\tt \descr{statement} \rightarrow \descr{empty}$\\
+$\tt \qquad \;|\; \descr{equation} \;|\; \descr{assignment}$\\
+$\tt \qquad \;|\; \descr{declaration} \;|\; \descr{macro definition}$\\
+$\tt \qquad \;|\; \descr{compound} \;|\; \descr{pseudo procedure}$\\
+$\tt \qquad \;|\; \descr{command}$\\
+$\tt \descr{compound} \rightarrow begingroup \descr{statement list} endgroup$\\
+$\tt \qquad \;|\; beginfig\hbox{\tt (}\descr{numeric expression}\hbox{\tt );} \descr{statement list}\hbox{\tt ;} endfig$\\
+$\tt $\\
+$\tt \descr{equation} \rightarrow \descr{expression} \hbox{\tt =} \descr{right-hand side}$\\
+$\tt \descr{assignment} \rightarrow \descr{variable} \hbox{\tt :=} \descr{right-hand side}$\\
+$\tt \qquad \;|\; \descr{internal variable} \hbox{\tt :=} \descr{right-hand side}$\\
+$\tt \descr{right-hand side} \rightarrow \descr{expression} \;|\; \descr{equation} \;|\; \descr{assignment}$\\
+$\tt $\\
+$\tt \descr{declaration} \rightarrow \descr{type} \descr{declaration list}$\\
+$\tt \descr{declaration list} \rightarrow \descr{generic variable}$\\
+$\tt \qquad \;|\; \descr{declaration list}\hbox{\tt ,} \descr{generic variable}$\\
+$\tt \descr{generic variable} \rightarrow \descr{symbolic token} \descr{generic suffix}$\\
+$\tt \descr{generic suffix} \rightarrow \descr{empty} \;|\; \descr{generic suffix} \descr{tag}$\\
+$\tt \qquad \;|\; \descr{generic suffix} \hbox{\tt []}$\\
+$\tt $\\
+$\tt \descr{macro definition} \rightarrow \descr{macro heading} \hbox{\tt =} \descr{replacement text} enddef$\\
+$\tt \descr{macro heading} \rightarrow def \descr{symbolic token} \descr{delimited part} \descr{undelimited part}$\\
+$\tt \qquad \;|\; vardef \descr{generic variable} \descr{delimited part} \descr{undelimited part}$\\
+$\tt \qquad \;|\; vardef \descr{generic variable} \hbox{\verb|@#|} \descr{delimited part} \descr{undelimited part}$\\
+$\tt \qquad \;|\; \descr{binary def} \descr{parameter} \descr{symbolic token} \descr{parameter}$\\
+$\tt \descr{delimited part} \rightarrow \descr{empty}$\\
+$\tt \qquad \;|\; \descr{delimited part}\hbox{\tt (}\descr{parameter type} \descr{parameter tokens}\hbox{\tt )}$\\
+$\tt \descr{parameter type} \rightarrow expr \;|\; suffix \;|\; text$\\
+$\tt \descr{parameter tokens} \rightarrow \descr{parameter} \;|\; \descr{parameter tokens}\hbox{\tt ,} \descr{parameter}$\\
+$\tt \descr{parameter} \rightarrow \descr{symbolic token}$\\
+$\tt \descr{undelimited part} \rightarrow \descr{empty}$\\
+$\tt \qquad \;|\; \descr{parameter type} \descr{parameter}$\\
+$\tt \qquad \;|\; \descr{precedence level} \descr{parameter}$\\
+$\tt \qquad \;|\; expr \descr{parameter} of \descr{parameter}$\\
+$\tt \descr{precedence level} \rightarrow primary \;|\; secondary \;|\; tertiary$\\
+$\tt \descr{binary def} \rightarrow primarydef \;|\; secondarydef \;|\; tertiarydef$\\
+$\tt $\\
+$\tt \descr{pseudo procedure} \rightarrow drawoptions\hbox{\tt (}\descr{option list}\hbox{\tt )}$\\
+$\tt \qquad \;|\; label\descr{label suffix}\hbox{\tt (}\descr{expression}\hbox{\tt ,} \descr{pair expression}\hbox{\tt )}$\\
+$\tt \qquad \;|\; dotlabel\descr{label suffix}\hbox{\tt (}\descr{expression}\hbox{\tt ,} \descr{pair expression}\hbox{\tt )}$\\
+$\tt \qquad \;|\; labels\descr{label suffix}\hbox{\tt (}\descr{point number list}\hbox{\tt )}$\\
+$\tt \qquad \;|\; dotlabels\descr{label suffix}\hbox{\tt (}\descr{point number list}\hbox{\tt )}$\\
+$\tt \descr{point number list} \rightarrow \descr{suffix} \;|\; \descr{point number list}\hbox{\tt ,} \descr{suffix}$\\
+$\tt \descr{label suffix} \rightarrow \descr{empty} \;|\; lft \;|\; rt \;|\; top \;|\; bot \;|\; ulft \;|\; urt \;|\; llft \;|\; lrt$
+\end{ctabbing}
+\caption{Overall syntax for MetaPost programs}
+\index{generic variable?\tdescr{generic variable}}\index{label suffix?\tdescr{label suffix}}\index{replacement text?\tdescr{replacement text}}%
+\index{suffix?\tdescr{suffix}}%
+\label{syprog}
+\end{figure}
+
+\begin{figure}[htp]
+\begin{ctabbing}
+$\tt \descr{command} \rightarrow clip \descr{picture variable} to \descr{path expression}$\\
+$\tt \qquad \;|\; interim \descr{internal variable} \hbox{\tt :=} \descr{right-hand side}$\\
+$\tt \qquad \;|\; let \descr{symbolic token} \hbox{\tt =} \descr{symbolic token}$\\
+$\tt \qquad \;|\; pickup \descr{expression}$\\
+$\tt \qquad \;|\; randomseed \hbox{\tt :=} \descr{numeric expression}$\\
+$\tt \qquad \;|\; save \descr{symbolic token list}$\\
+$\tt \qquad \;|\; setbounds \descr{picture variable} to \descr{path expression}$\\
+$\tt \qquad \;|\; shipout \descr{picture expression}$\\
+$\tt \qquad \;|\; write \descr{string expression} to \descr{string expression}$\\
+$\tt \qquad \;|\; \descr{addto command}$\\
+$\tt \qquad \;|\; \descr{drawing command}$\\
+$\tt \qquad \;|\; \descr{font metric command}$\\
+$\tt \qquad \;|\; \descr{newinternal command}$\\
+$\tt \qquad \;|\; \descr{message command}$\\
+$\tt \qquad \;|\; \descr{mode command}$\\
+$\tt \qquad \;|\; \descr{show command}$\\
+$\tt \qquad \;|\; \descr{special command}$\\
+$\tt \qquad \;|\; \descr{tracing command}$\\
+$\tt $\\
+$\tt \descr{show command} \rightarrow show \descr{expression list}$\\
+$\tt \qquad \;|\; showvariable \descr{symbolic token list}$\\
+$\tt \qquad \;|\; showtoken \descr{symbolic token list}$\\
+$\tt \qquad \;|\; showdependencies$\\
+$\tt $\\
+$\tt \descr{symbolic token list} \rightarrow \descr{symbolic token}$\\
+$\tt \qquad \;|\; \descr{symbolic token}\hbox{\tt ,} \descr{symbolic token list}$\\
+$\tt \descr{expression list} \rightarrow \descr{expression} \;|\; \descr{expression list}\hbox{\tt ,} \descr{expression}$\\
+$\tt $\\
+$\tt \descr{addto command} \rightarrow$\\
+$\tt \qquad addto \descr{picture variable} also \descr{picture expression} \descr{option list}$\\
+$\tt \qquad \;|\; addto \descr{picture variable} contour \descr{path expression} \descr{option list}$\\
+$\tt \qquad \;|\; addto \descr{picture variable} doublepath \descr{path expression} \descr{option list}$\\
+$\tt \descr{option list} \rightarrow \descr{empty} \;|\; \descr{drawing option} \descr{option list}$\\
+$\tt \descr{drawing option} \rightarrow withcolor \descr{color expression}$\\
+$\tt \qquad \;|\; withrgbcolor \descr{rgbcolor expression} \;|\; withcmykcolor \descr{cmykcolor expression}$\\
+$\tt \qquad \;|\; withgreyscale \descr{numeric expression} \;|\; withoutcolor$\\
+$\tt \qquad \;|\; withprescript \descr{string expression} \;|\; withpostscript \descr{string expression}$\\
+$\tt \qquad \;|\; withpen \descr{pen expression} \;|\; dashed \descr{picture expression}$\\
+$\tt $\\
+$\tt \descr{drawing command} \rightarrow draw \descr{picture expression} \descr{option list}$\\
+$\tt \qquad \;|\; \descr{fill type} \descr{path expression} \descr{option list}$\\
+$\tt \descr{fill type} \rightarrow fill \;|\; draw \;|\; filldraw \;|\; unfill \;|\; undraw \;|\; unfilldraw$\\
+$\tt \qquad \;|\; drawarrow \;|\; drawdblarrow \;|\; cutdraw$\\
+$\tt $\\
+$\tt \descr{newinternal command} \rightarrow newinternal \descr{internal type} \descr{symbolic token list}$\\
+$\tt \qquad \;|\; newinternal \descr{symbolic token list}$\\
+$\tt $\\
+$\tt \descr{message command} \rightarrow errhelp \descr{string expression}$\\
+$\tt \qquad \;|\; errmessage \descr{string expression}$\\
+$\tt \qquad \;|\; filenametemplate \descr{string expression}$\\
+$\tt \qquad \;|\; message \descr{string expression}$
+\end{ctabbing}
+\caption{Part 1 of the syntax for commands}
+\index{option list?\tdescr{option list}}\index{picture variable?\tdescr{picture variable}}%
+\label{sycmds1}
+
+% is this really true? in practice, in real implementations?
+%\bigskip
+%By the way, the default for \ttindex{randomseed} is, in effect,
+%$\textsl{day} + \textsl{time}*\epsilon$. Unfortunately, \textsl{time}
+%is in minutes.
+\end{figure}
+
+\begin{figure}[htp]
+\begin{ctabbing}
+$\tt \descr{mode command} \rightarrow batchmode \;|\; nonstopmode$\\
+$\tt \qquad \;|\; scrollmode \;|\; errorstopmode$\\
+$\tt $\\
+$\tt \descr{special command} \rightarrow fontmapfile \descr{string expression}$\\
+$\tt \qquad \;|\; fontmapline \descr{string expression}$\\
+$\tt \qquad \;|\; special \descr{string expression}$\\
+$\tt $\\
+$\tt \descr{tracing command} \rightarrow tracingall \;|\; loggingall \;|\; tracingnone$
+\end{ctabbing}
+\caption{Part 2 of the syntax for commands}
+\index{batchmode?\texttt{batchmode}}\index{nonstopmode?\texttt{nonstopmode}}\index{scrollmode?\texttt{scrollmode}}\index{errorstopmode?\texttt{errorstopmode}}%
+\label{sycmds2}
+\end{figure}
+
+\begin{figure}[htp]
+\begin{ctabbing}
+$\tt \descr{if test} \rightarrow if \descr{boolean expression} \hbox{\tt :} \descr{balanced tokens} \descr{alternatives} fi$\\
+$\tt \descr{alternatives} \rightarrow \descr{empty}$\\
+$\tt \qquad \;|\; else\hbox{\tt :} \descr{balanced tokens}$\\
+$\tt \qquad \;|\; elseif \descr{boolean expression} \hbox{\tt :} \descr{balanced tokens} \descr{alternatives}$\\
+$\tt $\\
+$\tt \descr{loop} \rightarrow \descr{loop header}\hbox{\tt :} \descr{loop text} endfor$\\
+$\tt \descr{loop header} \rightarrow for \descr{symbolic token} \hbox{\tt =} \descr{progression}$\\
+$\tt \qquad \;|\; for \descr{symbolic token} \hbox{\tt =} \descr{for list}$\\
+$\tt \qquad \;|\; for \descr{symbolic token} \hbox{\tt within} \descr{picture expression}$\\
+$\tt \qquad \;|\; forsuffixes \descr{symbolic token} \hbox{\tt =} \descr{suffix list}$\\
+$\tt \qquad \;|\; forever$\\
+$\tt \descr{progression} \rightarrow \descr{numeric expression} upto \descr{numeric expression}$\\
+$\tt \qquad \;|\; \descr{numeric expression} downto \descr{numeric expression}$\\
+$\tt \qquad \;|\; \descr{numeric expression} step \descr{numeric expression} until \descr{numeric expression} $\\
+$\tt \descr{for list} \rightarrow \descr{expression} \;|\; \descr{for list}\hbox{\tt ,} \descr{expression}$\\
+$\tt \descr{suffix list} \rightarrow \descr{suffix} \;|\; \descr{suffix list}\hbox{\tt ,} \descr{suffix}$
+\end{ctabbing}
+\caption{The syntax for conditionals and loops}
+\index{balanced tokens?\tdescr{balanced tokens}}\index{suffix?\tdescr{suffix}}%
+\label{sycondloop}
+\end{figure}
+
+\endgroup
+
+
+\subsection{Command-Line Syntax}
+\label{refman:commandline}
+
+\begingroup
+\renewcommand*{\arraystretch}{1.25}% Give command-line switch tables air.
+
+\subsubsection{The MetaPost Program}
+\label{refman:mpost}
+
+\newcommand*{\opt}[1]{\ensuremath{\big[}#1\ensuremath{\big]}}
+\newcommand*{\cmdsw}{\tdescr{switches}}
+\newcommand*{\cmdmem}{\tdescr{preloadfile}}
+\newcommand*{\cmdin}{\tdescr{infile}}
+\newcommand*{\cmdcode}{\tdescr{commands}}
+\newcommand*{\cmdindex}[1]{\index{command-line!mpost?\texttt{mpost}!#1?\texttt{#1}}\texttt{#1}}
+
+The MetaPost program processes commands in the MetaPost language, either
+read from a file or typed-in interactively, and compiles them into
+PostScript or SVG graphics. The run-time behavior of the executable can
+be controlled by command-line parameters, environment variables, and
+configuration files. The MetaPost executable is named
+mpost\label{Dmpost}\index{mpost} (or occasionally just mp). The
+command-line syntax of the executable is
+$$
+\begin{verbatim}[commandchars=\\\{\}]
+mpost \opt{\cmdsw} \opt{\&\cmdmem} \opt{\cmdin} \opt{\cmdcode}
+\end{verbatim}
+\index{mpost?\texttt{mpost}}\index{command-line!mpost?\texttt{mpost}}
+$$
+Any of the parameters is optional. If no argument is given to the
+\verb|mpost| command, MetaPost enters interactive mode\index{interactive
+ mode}, indicated by a \verb|**| prompt\index{**?\texttt{**}!prompt},
+waiting for a file name to be typed-in by keyboard. The file is then
+read-in and processed as if it were given as parameter \cmdin\ on the
+command-line.
+
+\begin{description}
+\item[\cmdin] A MetaPost input file is a text file containing statements
+ in the MetaPost language. Typically, input files have file extension
+ \texttt{mp}\index{mp file?{\tt mp} file}\index{files!mp?{\tt mp}},
+ e.g., \texttt{fig.mp}. Here is how MetaPost searches for input files.
+ If \cmdin\ doesn't end with \texttt{.mp}\index{mp file?{\tt mp}
+ file}\index{files!mp?{\tt mp}}, MetaPost first looks for a file
+ \texttt{\cmdin.mp}. Only if that file doesn't exist, it looks for
+ file \cmdin\ literally. That way, the \texttt{mp}\index{mp file?{\tt
+ mp} file}\index{files!mp?{\tt mp}} file extension can be omitted
+ when calling MetaPost. If \cmdin\ already ends with
+ \texttt{.mp}\index{mp file?{\tt mp} file}\index{files!mp?{\tt mp}}, no
+ special file name handling takes place and MetaPost looks for that
+ file only.
+
+ As an example, if there are two files \texttt{fig} and \texttt{fig.mp}
+ in the current directory and MetaPost is invoked with
+ \verb|'mpost fig'|, the file that gets processed is \texttt{fig.mp}.
+ To process file \texttt{fig} in this situation, MetaPost can be called
+ as \verb|'mpost fig.'|. Note, the trailing dot is only needed as long
+ as there exists a file \texttt{fig.mp} alongside file \texttt{fig}.
+
+ If MetaPost cannot find any input file by the rules specified above,
+ it complaints with an error message and interactively asks for a new
+ input file name.
+
+\item[\cmdcode] All text on the command-line after \cmdin\ is
+ interpreted as MetaPost code and is processed after \cmdin\ is read.
+ If \cmdin\ already contains an \verb|end| statement, \cmdcode\ gets
+ effectively ignored. If MetaPost doesn't encounter an \verb|end|
+ statement neither in \cmdin\ nor in \cmdcode, it enters interactive
+ mode after processing all input.
+
+\item[\texttt{\&\cmdmem}] The MetaPost program code in the \cmdmem\
+ MetaPost source file (and any other files that it inputs) is executed
+ before all other processing starts. The \cmdmem\ file should end with
+ an \texttt{end}\index{end?\texttt{end}} or
+ \texttt{dump}\index{dump?\texttt{dump}} command.
+
+ If neither \texttt{\&\cmdmem} nor \cmdindex{-mem} is specified on the
+ command line, MetaPost will default to loading the macro file
+ \texttt{mpost.mp}\index{mpost.mp?\texttt{mpost.mp}}, or to whatever
+ the actual name of the MetaPost executable is. The \cmdindex{-ini}
+ switch can be used to suppress this behavior.
+
+\item[\cmdsw] MetaPost provides a number of command-line switches that
+ control the run-time behavior. Switches can be prefixed by one or two
+ dashes. Both forms have the same meaning. An exemplary call to
+ MetaPost that compiles a file \texttt{fig.mp}, using \LaTeX\ to
+ typeset \verb|btex|\slash\verb|etex| labels, would look like:
+$$
+\begin{verbatim}
+mpost -tex=latex fig
+\end{verbatim}
+\index{mpost?\texttt{mpost}}
+$$
+
+Here's a summary of the command-line switches provided by mpost:
+
+\setlength{\LTleft}{\leftmargin}
+\begin{longtable}{>{\ttfamily}p{.35\linewidth}>{\raggedright\arraybackslash}p{.6\linewidth}}
+ \cmdindex{-debug}
+ & Don't delete intermediate files.\\
+ \cmdindex{-dvitomp}
+ & Act as the \texttt{dvitomp} executable (see below).\\
+ \cmdindex{-file-line-error}
+ & Start error messages with \verb|`filename:lineno:'| instead of
+ \verb|`!'|.\\
+ \cmdindex{-halt-on-error}
+ & Immediately exit after the first error occurred.\\
+ \cmdindex{-help}
+ & Show help on command-line switches.\\
+ \cmdindex{-ini}
+ & Do not load any preload file.\\
+ \cmdindex{-interaction}=\tdescr{string}
+ & Set interaction mode to one of \texttt{batchmode},
+ \texttt{nonstopmode}, \texttt{scrollmode}, \texttt{errorstopmode}.\\
+ \cmdindex{-jobname}=\tdescr{jobname}
+ & Set the name of the job (affects output file names).\\
+ \cmdindex{-kpathsea-debug}=\tdescr{number}
+ & Set debugging flags for path searching.\\
+ \cmdindex{-mem}=\tdescr{string}
+ & Use \tdescr{string} for the name of the file that contains macros to be preloaded
+ (same as \texttt{\&\cmdmem})\\
+ \cmdindex{-no-file-line-error}
+ & Enable normal MetaPost and \TeX\ style error messages.\\
+ \cmdindex{-no-kpathsea}
+ & Do not use the kpathsea program to find files. All files have to be
+ in the current directory or specified via a full path.\\
+ \cmdindex{-progname}=\tdescr{string}
+ & Pretend to be the \tdescr{string} executable.\\
+ \cmdindex{-recorder}
+ & Write a list of all opened disk files to
+ \texttt{\tdescr{jobname}.fls}\index{fls file?{\tt fls}
+ file}\index{files!fls?{\tt fls}}. (This functionality is provided
+ by kpathsea.)\\
+ \cmdindex{-s} \tdescr{key}=\tdescr{value}
+ & Set internal variable \tdescr{key} to \tdescr{value}. This switch
+ can be given multiple times on the command-line. The assignments are
+ applied just before the input file is read-in. \tdescr{value} can be
+ an integer between -16383 and 16383 or a string in double quotes. For
+ strings, double quotes are stripped, but no other processing takes
+ place. To avoid double quotes being already stripped by the shell,
+ the whole assignment can be enclosed in another pair of single quotes.
+ Example: \verb|-s 'outputformat="svg"' -s prologues=3|\newline
+ Use SVG backend converting font shapes to paths.\\
+ \cmdindex{-tex}=\tdescr{texprogram}
+ & Load format \tdescr{texprogram} for rendering \TeX\ material.\\
+ \cmdindex{-troff}, \cmdindex{-T}
+ & Output troff compatible PostScript files.\\
+ \cmdindex{-version}
+ & Print version information and exit.\\
+\end{longtable}
+
+The following command-line switches are silently ignored in
+\emph{mplib}-based MetaPost (v1.100 or later), because they are always
+`on':
+
+\begin{longtable}{>{\ttfamily}p{.35\linewidth}>{\raggedright\arraybackslash}p{.6\linewidth}}
+ \cmdindex{-8bit}
+ & \\
+ \cmdindex{-parse-first-line}
+ & \\
+\end{longtable}
+
+The following command-line switches are ignored, but trigger a warning:
+
+\begin{longtable}{>{\ttfamily}p{.35\linewidth}>{\raggedright\arraybackslash}p{.6\linewidth}}
+ \cmdindex{-no-parse-first-line}
+ & \\
+ \cmdindex{-output-directory}=\tdescr{string}
+ & \\
+ \cmdindex{-translate-file}=\tdescr{string}
+ & \\
+\end{longtable}
+
+\end{description}
+
+\subsubsection{The dvitomp Program}
+\label{refman:dvitomp}
+
+\renewcommand*{\cmdindex}[1]{\index{command-line!dvitomp?\texttt{dvitomp}!#1?\texttt{#1}}\texttt{#1}}
+\renewcommand*{\cmdin}{\tdescr{infile}}
+\newcommand*{\cmdout}{\tdescr{outfile}}
+
+The dvitomp\label{Ddvitomp}\index{dvitomp} program converts
+DVI\index{dvi file?{\tt dvi} file}\index{files!dvi?{\tt dvi}} files into
+low-level MetaPost code. MetaPost uses the dvitomp program when
+typesetting \verb|btex|\slash\verb|etex| labels by \TeX\ for the final
+conversion back into MetaPost code. The command-line syntax of the
+executable is
+$$
+\begin{verbatim}[commandchars=\\\{\}]
+dvitomp \opt{\cmdsw} \cmdin \opt{\cmdout}
+\end{verbatim}
+\index{dvitomp?\texttt{dvitomp}}\index{command-line!dvitomp?\texttt{dvitomp}}
+$$
+Parameters \cmdsw\ and \cmdout\ are optional.
+
+\begin{description}
+\item[\cmdin] This is the name of the DVI file to convert. If the name
+ doesn't end with \texttt{.dvi}\index{dvi file?{\tt dvi}
+ file}\index{files!dvi?{\tt dvi}}, that extension is appended. Note,
+ dvitomp never opens files not ending \texttt{.dvi}. This file is in
+ general automatically generated by \TeX\ or troff, driven by MetaPost.
+
+\item[\cmdout] This is the name of the output file containing the
+ MetaPost code equivalent to \cmdin. If \cmdout\ is not given,
+ \cmdout\ is \cmdin\ with the extension \texttt{.dvi} replaced by
+ \texttt{.mpx}\index{mpx file?{\tt mpx} file}\index{files!mpx?{\tt
+ mpx}}. If \cmdout\ is given and doesn't end with
+ \texttt{.mpx}\index{mpx file?{\tt mpx} file}\index{files!mpx?{\tt
+ mpx}}, that extension is appended.
+
+\item[\cmdsw] Command-line switches can be prefixed by one or two
+ dashes. Both forms have the same meaning. The following command-line
+ switches are provided by dvitomp:
+
+\setlength{\LTleft}{\leftmargin}
+\begin{longtable}{>{\ttfamily}p{.35\linewidth}>{\raggedright\arraybackslash}p{.6\linewidth}}
+ \cmdindex{-help}
+ & Show help on command-line switches.\\
+ \cmdindex{-kpathsea-debug}=\tdescr{number}
+ & Set debugging flags for path searching.\\
+ \cmdindex{-progname}=\tdescr{string}
+ & Pretend to be the \tdescr{string} executable.\\
+ \cmdindex{-version}
+ & Print version information and exit.\\
+\end{longtable}
+
+\end{description}
+
+The dvitomp program used to be part of a set of external tools, called
+\emph{mpware}\index{mpware tools}\footnote{makempx, mpto, dvitomp, and
+ dmp.}, which were used by MetaPost for processing
+\verb|btex|\slash\verb|etex| labels. Since MetaPost version~1.100, the
+label conversion is handled internally by the mpost\index{mpost}
+program. The \emph{mpware} tools are therefore obsolete and no longer
+part of the MetaPost distribution. Nowadays, dvitomp is either a copy
+of the mpost executable with the name dvitomp or a wrapper, calling
+mpost\index{mpost} as
+$$
+\begin{verbatim}[commandchars=\\\{\}]
+mpost -dvitomp \cmdin \cmdout
+\end{verbatim}
+\index{mpost?\texttt{mpost}}
+$$
+
+\endgroup
+
+%%% Local Variables:
+%%% mode: latex
+%%% TeX-PDF-mode: t
+%%% TeX-master: "mpman"
+%%% End:
diff --git a/Master/texmf-dist/doc/metapost/base/source-manual/mpman-charts.mp b/Master/texmf-dist/doc/metapost/base/source-manual/mpman-charts.mp
index a1ad1e47b3b..6dc550965ac 100644
--- a/Master/texmf-dist/doc/metapost/base/source-manual/mpman-charts.mp
+++ b/Master/texmf-dist/doc/metapost/base/source-manual/mpman-charts.mp
@@ -71,7 +71,7 @@ beginfig(2);
% Pre-define workflow segment parameters.
wfsegments := 6;% counter
wfsegangle = 360/wfsegments;% angle
- wfstart := 90 + wfsegangle;% angle
+ wfstart := 90;% angle
wfdiam := 200bp;% dimension
wfthick := 48bp;% dimension
wfgap := 8;% angle
@@ -198,13 +198,13 @@ beginfig(2);
endfor
% Fill-in workflow segment descriptions.
- label(btex \appl{Editor} etex, degtoxy(wfstart+wfsegangle*0)) withcolor appl_col;
- label(btex \ext{fig.mp} etex, degtoxy(wfstart+wfsegangle*1)) withcolor ext_col;
- label(btex \appl{MetaPost} etex, degtoxy(wfstart+wfsegangle*2)) withcolor appl_col;
- label(btex \ext{fig.1} etex, degtoxy(wfstart+wfsegangle*3+10)) withcolor ext_col;
- label(btex {\extfontvii fig.log} etex, degtoxy(wfstart+wfsegangle*3-10)) withcolor ext_col;
- label(btex \appl{Previewer} etex, degtoxy(wfstart+wfsegangle*4)) withcolor appl_col;
- label(unituserLeft scaled usersize, degtoxy(wfstart+wfsegangle*5));
+ label(unituserLeft scaled usersize, degtoxy(wfstart+wfsegangle*0));
+ label(btex \appl{Editor} etex, degtoxy(wfstart+wfsegangle*1)) withcolor appl_col;
+ label(btex \ext{fig.mp} etex, degtoxy(wfstart+wfsegangle*2)) withcolor ext_col;
+ label(btex \appl{MetaPost} etex, degtoxy(wfstart+wfsegangle*3)) withcolor appl_col;
+ label(btex \ext{fig.1} etex, degtoxy(wfstart+wfsegangle*4+wfsegangle/7)) withcolor ext_col;
+ label(btex \ext{fig.log} etex, degtoxy(wfstart+wfsegangle*4-wfsegangle/7)) withcolor .7[ext_col, wf_col];
+ label(btex \appl{Previewer} etex, degtoxy(wfstart+wfsegangle*5)) withcolor appl_col;
endfig;
end
diff --git a/Master/texmf-dist/doc/metapost/base/source-manual/mpman.mp b/Master/texmf-dist/doc/metapost/base/source-manual/mpman.mp
index 6c97e9d6b79..e458d2fa252 100644
--- a/Master/texmf-dist/doc/metapost/base/source-manual/mpman.mp
+++ b/Master/texmf-dist/doc/metapost/base/source-manual/mpman.mp
@@ -807,4 +807,21 @@ beginfig(60);
draw origin--(4.38in,0);
endfig;
+
+beginfig(61);
+ def shape_with_cardinal_points(expr shape) =
+ image(
+ interim ahangle := 30;
+ interim ahlength := 6bp;
+ drawarrow shape withpen pencircle scaled .5;
+ for k = 0 upto length shape:
+ drawdot point k of shape withpen pencircle scaled dotlabeldiam;
+ endfor
+ )
+ enddef;
+
+ draw shape_with_cardinal_points(fullcircle scaled 1in);
+ draw shape_with_cardinal_points(unitsquare scaled 1in) withcolor .5white;
+endfig;
+
end
diff --git a/Master/texmf-dist/doc/metapost/base/source-manual/mpman.tex b/Master/texmf-dist/doc/metapost/base/source-manual/mpman.tex
index 6889d586176..274c2982ead 100644
--- a/Master/texmf-dist/doc/metapost/base/source-manual/mpman.tex
+++ b/Master/texmf-dist/doc/metapost/base/source-manual/mpman.tex
@@ -1,4 +1,4 @@
-% $Id: mpman.tex 1432 2010-10-22 12:02:13Z stephanhennig $
+% $Id: mpman.tex 1599 2011-04-05 14:15:45Z taco $
% MetaPost manual, by John Hobby. License at end.
\listfiles
\RequirePackage{ifpdf}
@@ -12,8 +12,8 @@
\fi
\documentclass{article} % article is NOT the original style
\usepackage[nofancy]{svninfo}% Access VCS information.
-\svnInfo $Id: mpman.tex 1432 2010-10-22 12:02:13Z stephanhennig $
-\newcommand*{\mpversion}{1.503}
+\svnInfo $Id: mpman.tex 1599 2011-04-05 14:15:45Z taco $
+\newcommand*{\mpversion}{1.504}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
@@ -190,7 +190,17 @@ Please report bugs and request enhancements either on the
\section{Basic Drawing Statements}
\label{basic}
-The simplest drawing statements are the ones that generate straight lines.
+The simplest drawing statement is the one that draws a single dot with
+the current pen at a given coordinate:
+$$
+\begin{verbatim}
+drawdot (30,0)
+\end{verbatim}
+\index{drawdot?\texttt{drawdot}}
+\label{Ddrawdot}
+$$
+
+MetaPost can also draw straight lines.
Thus\index{draw?\texttt{draw}}\index{-{}-?\texttt{-{}-}}
$$ \hbox{\verb|draw (20,20)--(0,0)|} $$
draws\index{draw?\texttt{draw}} a diagonal line and
@@ -198,11 +208,6 @@ $$ \hbox{\verb|draw (20,20)--(0,0)--(0,30)--(30,0)--(0,0)|} $$
draws a polygonal line like this:
$$ \includegraphics{mpman-1.mps} $$
-MetaPost also has a
-\verb|drawdot|\index{drawdot?\texttt{drawdot}}\label{Ddrawdot} command
-to draw a single point with the current pen, as in
-\verb|drawdot (30,0)|.
-
What is meant by coordinates like \verb|(30,0)|? MetaPost uses the same
default coordinate system that PostScript\index{PostScript!coordinate
system} does. This
@@ -213,20 +218,32 @@ to distinguish it from the standard printer's
point\index{point!printer's} which is $1\over72.27$ inches.
MetaPost uses the same names for units of measure that \TeX\ and \MF\
-do. Thus \verb|bp|\index{bp?\texttt{bp}}\label{Dbp} refers to
-PostScript points (``big points'') and
-\verb|pt|\index{pt?\texttt{pt}}\label{Dpt} refers to printer's points.
-Other units of measure include
-\verb|in|\index{in?\texttt{in}}\label{Din} for inches,
-\verb|cm|\index{cm?\texttt{cm}}\label{Dcm} for centimeters, and
-\verb|mm|\index{mm?\texttt{mm}}\label{Dmm} for millimeters. For
-example,
+do. Thus
+\verb|bp|\index{bp?\texttt{bp}}\index{units!bp?\texttt{bp}}\label{Dbp}
+refers to PostScript points (``big points'') and
+\verb|pt|\index{pt?\texttt{pt}}\index{units!pt?\texttt{pt}}\label{Dpt}
+refers to printer's points. Other units of measure include
+\verb|in|\index{in?\texttt{in}}\index{units!in?\texttt{in}}\label{Din}
+for inches,
+\verb|pc|\index{pc?\texttt{pc}}\index{units!pc?\texttt{pc}}\label{Dpc}
+for picas,
+\verb|cm|\index{cm?\texttt{cm}}\index{units!cm?\texttt{cm}}\label{Dcm}
+for centimeters,
+\verb|mm|\index{mm?\texttt{mm}}\index{units!mm?\texttt{mm}}\label{Dmm}
+for millimeters,
+\verb|cc|\index{cc?\texttt{cc}}\index{units!cc?\texttt{cc}}\label{Dcc}
+for ciceros, and
+\verb|dd|\index{dd?\texttt{dd}}\index{units!dd?\texttt{dd}}\label{Ddd}
+for Didot points. For example,
$$ \hbox{\verb|(2cm,2cm)--(0,0)--(0,3cm)--(3cm,0)--(0,0)|} $$
generates a larger version of the above diagram. It is OK to say
\verb|0| instead \verb|0cm| because {\tt cm} is really just a conversion
factor and {\tt 0cm} just multiplies the conversion factor by zero.
-(MetaPost understands constructions like {\tt
-2cm}\index{multiplication, implicit} as shorthand for \verb|2*cm|).
+(MetaPost understands constructions like {\tt 2cm}\index{multiplication,
+ implicit} as shorthand for \verb|2*cm|). The coordinate \verb|(0,0)|
+can also be referred to as
+\texttt{origin}\index{origin?\texttt{origin}}\label{Dorigin}, as in
+$$ \hbox{\verb|drawdot origin|} $$
It is convenient to introduce your own scale factor, say $u$. Then you
can define coordinates in terms of $u$ and decide later whether you want
@@ -391,8 +408,8 @@ outside \verb|beginfig| \ldots\ \verb|endfig|, e.g., assignments to
internal variables, such as \texttt{outputtemplate}, or a \LaTeX\
preamble declaration for enhanced text rendering.
Comments\index{comments} in MetaPost code are introduced by the percent
-sign~\verb|%|\index{\%?\texttt{\%}}, which causes the remainder of the
-current line to be ignored.
+sign~\verb|%|\index{\%?\texttt{\%}!comment}, which causes the remainder
+of the current line to be ignored.
The remainder of this section briefly introduces three assignments to
internal variables, each one useful by itself, that can often be found
@@ -473,6 +490,32 @@ $$
\label{fig3}
\end{figure}
+MetaPost already provides a small selection of basic path shapes that
+can be used to derive custom paths from. The predefined variable
+\texttt{fullcircle}\index{fullcircle?\texttt{fullcircle}}\label{Dfcirc}
+refers to a closed path describing a circle of unit diameter centered on
+the origin. There are also
+\texttt{halfcircle}\index{halfcircle?\texttt{halfcircle}}\label{Dhcirc}
+and
+\texttt{quartercircle}\index{quartercircle?\texttt{quartercircle}}\label{Dqcirc},
+the former being the part of a full circle covering the first and second
+quadrant and the latter covering just the first quadrant. Because of
+the mathematical model that is used to describe paths in MetaPost, all
+these are not exactly circular paths, but very good approximations (see
+Figure~\ref{fig3a}).
+
+\begin{figure}
+$$ \includegraphics{mpman-61.mps} $$
+\caption{A circle and a square with cardinal points. Arrows are
+ pointing to the start and end points of the closed paths.}
+\label{fig3a}
+\end{figure}
+
+Rectangularly shaped paths can be derived from
+\texttt{unitsquare}\index{unitsquare?\texttt{unitsquare}}\label{Dunitsqr},
+a closed path describing a square of unit side length whose lower left
+corner is located at the origin.
+
\subsection{B\'ezier Cubic Curves}
When MetaPost is asked to draw a smooth curve through a sequence of
@@ -967,19 +1010,22 @@ tracingonline}\index{tracingonline?\texttt{tracingonline}}\label{Dtonline}.
\subsection{Data Types}
-MetaPost actually has ten basic data types\index{types}: numeric,
-pair, path, transform, (rgb)color, cmykcolor, string, boolean, picture, and
+MetaPost actually has ten basic data types\index{types}: numeric, pair,
+path, transform, (rgb)color, cmykcolor, string, boolean, picture, and
pen. Let us consider these one at a time beginning with the numeric
type.
-Numeric\index{numeric type} quantities in MetaPost are represented in fixed
-point arithmetic\index{arithmetic} as
-integer multiples of $1\over65536$. They must normally have absolute values
-less than 4096 but intermediate results can be eight times larger.
-This should not be a problem for distances or coordinate values since 4096
-PostScript points is more than 1.4~meters. If you need to work with numbers
-of magnitude 4096 or more, setting the internal variable
-{\tt warningcheck}\index{warningcheck?\texttt{warningcheck}}\label{Dwarncheck}
+Numeric\index{numeric type} quantities in MetaPost are represented in
+fixed point arithmetic\index{arithmetic} as integer multiples of
+$1\over65536$, the smallest positive value, which is also available as
+the predefined constant
+\texttt{epsilon}\index{epsilon?\texttt{epsilon}}\label{Depsilon}.
+Numeric quantities must normally have absolute values less than 4096 but
+intermediate results can be eight times larger. This should not be a
+problem for distances or coordinate values since 4096 PostScript points
+is more than 1.4~meters. If you need to work with numbers of magnitude
+4096 or more, setting the internal variable
+\texttt{warningcheck}\index{warningcheck?\texttt{warningcheck}}\label{Dwarncheck}
to zero suppresses the warning messages about large numeric quantities.
The pair\index{pair type} type is represented as a pair of numeric
@@ -1397,11 +1443,11 @@ themselves, the only symbolic tokens involving them are {\tt [}, {\tt
Some characters are not listed in Table~\ref{classes} because they need
special treatment. The four characters {\tt ,;()} are ``loners'': each
-comma, semicolon, or parenthesis is a separate token
-even when they occur consecutively. Thus {\tt (())} is four tokens, not
-one or two. The percent sign is very special because it introduces
-comments\index{comments}. The percent sign and everything after it up
-to the end of the line are ignored.
+comma, semicolon, or parenthesis is a separate token even when they
+occur consecutively. Thus {\tt (())} is four tokens, not one or two.
+The percent sign is very special because it introduces
+comments\index{\%?\texttt{\%}!comment}\index{comments}. The percent
+sign and everything after it up to the end of the line are ignored.
Another special character is the period. Two or more periods
together form a symbolic token, but a single period is ignored, and a period
@@ -2188,15 +2234,9 @@ Value & Color model\\\hline
Figure~\ref{fig21} illustrates several applications of the fill command
to fill areas with shades of gray. The paths involved are intersecting
circles {\tt a} and {\tt b} and a path {\tt ab} that bounds the region
-inside both circles. Circles {\tt a} and {\tt b} are derived from a
-predefined path {\tt
-fullcircle}\index{fullcircle?\texttt{fullcircle}}\label{Dfcirc} that
-approximates a circle of unit diameter centered on the origin. There is
-also a predefined path {\tt
-halfcircle}\index{halfcircle?\texttt{halfcircle}}\label{Dhcirc} that is
-the part of {\tt fullcircle} above the $x$ axis. Path~{\tt ab} is then
-initialized using a predefined macro {\tt buildcycle} that will be
-discussed shortly.
+inside both circles. Circles {\tt a} and {\tt b} are derived from {\tt
+ fullcircle}. Path~{\tt ab} is then initialized using a predefined
+macro {\tt buildcycle} that will be discussed shortly.
\begin{figure}[htp]
$$ \begin{verbatim}
@@ -4807,7 +4847,7 @@ Explanation:
\begin{itemize}
\item
-The \texttt{\%\&latex}\index{\%\&?\texttt{\%\&}} causes \LaTeX\ to be invoked instead of \TeX.
+The \texttt{\%\&latex}\index{\%?\texttt{\%}!magic comment!\%\&?\texttt{\%\&}} causes \LaTeX\ to be invoked instead of \TeX.
(See below, also.) Web2C- and MiKTeX-based \TeX\ implementations, at
least, understand this \texttt{\%\&} specification; see, e.g., the Web2C
documentation for details, \url{http://tug.org/web2c}. (Information on
@@ -4926,20 +4966,20 @@ output one would want to use \texttt{svg}\index{svg file?{\tt svg}
file}\index{files!svg?{\tt svg}} instead.
\begin{table}
- \newcommand*{\otesc}[3]{\%#1\index{\%#1?\texttt{\%#1}} & #2 & \%\{#3\}}
\centering
\begin{tabular}{|>{\ttfamily}l|l|>{\ttfamily}l|}
\hline
\multicolumn1{|c|}{Escape sequence} & \multicolumn1{c|}{Meaning} & \multicolumn1{c|}{Alternative}\\\hline
- \%\%\index{\%\%?\texttt{\%\%}} & percent sign &\\
- \%\{\tdescr{internal variable}\}\index{\%\{...\}?\texttt{\%\{\tdescr{internal variable}\}}} & evaluate internal variable &\\
- \%j\index{\%j?\texttt{\%j}} & current jobname & \%\{jobname\} \\
- \otesc{c}{charcode value (\texttt{beginfig} argument)}{charcode}\\
- \otesc{y}{current year}{year}\\
- \otesc{m}{month (numeric)}{month}\\
- \otesc{d}{day of the month}{day}\\
- \otesc{H}{hour}{hour}\\
- \otesc{M}{minute}{minute}\\
+ \%\%\index{\%?\texttt{\%}!outputtemplate escape sequence?\texttt{outputtemplate} escape sequence!\%\%?\texttt{\%\%}} & percent sign &\\
+ \%\{\tdescr{internal variable}\}\index{\%?\texttt{\%}!outputtemplate
+ escape sequence?\texttt{outputtemplate} escape sequence!\%\{...\}?\texttt{\%\{\tdescr{internal variable}\}}} & evaluate internal variable &\\
+ \%j\index{\%?\texttt{\%}!outputtemplate escape sequence?\texttt{outputtemplate} escape sequence!\%j?\texttt{\%j}} & current jobname & \%\{jobname\}\\
+ \%c\index{\%?\texttt{\%}!outputtemplate escape sequence?\texttt{outputtemplate} escape sequence!\%c?\texttt{\%c}} & charcode value (\texttt{beginfig} argument) & \%\{charcode\}\\
+ \%y\index{\%?\texttt{\%}!outputtemplate escape sequence?\texttt{outputtemplate} escape sequence!\%y?\texttt{\%y}} & current year & \%\{year\}\\
+ \%m\index{\%?\texttt{\%}!outputtemplate escape sequence?\texttt{outputtemplate} escape sequence!\%m?\texttt{\%m}} & month (numeric) & \%\{month\}\\
+ \%d\index{\%?\texttt{\%}!outputtemplate escape sequence?\texttt{outputtemplate} escape sequence!\%d?\texttt{\%d}} & day of the month & \%\{day\}\\
+ \%H\index{\%?\texttt{\%}!outputtemplate escape sequence?\texttt{outputtemplate} escape sequence!\%H?\texttt{\%H}} & hour & \%\{hour\}\\
+ \%M\index{\%?\texttt{\%}!outputtemplate escape sequence?\texttt{outputtemplate} escape sequence!\%M?\texttt{\%M}} & minute & \%\{minute\}\\
\hline
\end{tabular}
\caption{Allowed escape sequences for \ttt{outputtemplate}}
@@ -4948,23 +4988,26 @@ output one would want to use \texttt{svg}\index{svg file?{\tt svg}
In single-letter escape sequences referring to internal numerics, the
corresponding value is rounded to the nearest integer before it is
-converted to a string expression. In such escape sequences, there can
-be an optional number (0--99) following \verb|%| that determines the
-minimum number of digits in the resulting string expression, like
-\verb|%2m|. If the decimal representation of the internal variable
-requires more digits, actual string length exceeds the requested length.
-If less digits are required, the string is padded to the requested
-length with zeros from left.
-
-In the \verb|%{...}| escape sequence no rounding takes place.
-Additionally, neither this nor single-letter escape sequences referring
-to internal string variables can be zero-padded.
-
-For backwards compatibility, the \verb|%c|\index{\%c?\texttt{\%c}}
+converted to a string expression. In such escape sequences, a number
+from the range 0 to~99 can optionally be placed directly after \verb|%|
+that determines the minimum number of digits in the resulting string
+expression, like \verb|%2m|. If the decimal representation of the
+internal variable requires more digits, actual string length will exceed
+the requested length. If less digits are required, the string is padded
+to the requested length with zeros from left.
+
+In single-letter escape sequences referring to internal string
+variables, like \verb|%j|, and in the \verb|%{...}| escape sequence,
+neither rounding nor zero-padding take place.
+
+For backwards compatibility, the
+\verb|%c|\index{\%?\texttt{\%}!outputtemplate escape
+ sequence?\texttt{outputtemplate} escape sequence!\%c?\texttt{\%c}}
escape sequence is handled special. If the result of rounding the
charcode value is negative, \verb|%c| evaluates to the string \verb|ps|.
This transformation can be bypassed by using \verb|%{charcode}| instead
-of \verb|%c| (bypassing the rounding, too).
+of \verb|%c|. But note, that this bypasses rounding and zero-padding as
+well.
The template mechanism can also be used for naming graphic files
individually, yet keeping all sources in one file. Collecting, e.g.,