From 540927ad17a1d3f65acd988f4f93edf13d4b303e Mon Sep 17 00:00:00 2001 From: Taco Hoekwater Date: Tue, 5 Apr 2011 15:03:39 +0000 Subject: and here is metapost 1.504 (which is still tentative) git-svn-id: svn://tug.org/texlive/trunk@21976 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/doc/metapost/base/mpboxes.pdf | Bin 371601 -> 371656 bytes Master/texmf-dist/doc/metapost/base/mpgraph.pdf | Bin 467471 -> 467564 bytes Master/texmf-dist/doc/metapost/base/mpintro.pdf | Bin 234688 -> 235016 bytes Master/texmf-dist/doc/metapost/base/mplibapi.pdf | Bin 243123 -> 243123 bytes Master/texmf-dist/doc/metapost/base/mpman.pdf | Bin 895061 -> 898520 bytes .../doc/metapost/base/source-manual/README | 44 - .../doc/metapost/base/source-manual/TODO | 194 +- .../doc/metapost/base/source-manual/cm2lm.map | 16 +- .../base/source-manual/mpman-app-optab.tex | 312 +-- .../base/source-manual/mpman-app-refman.tex | 2104 ++++++++++---------- .../metapost/base/source-manual/mpman-charts.mp | 16 +- .../doc/metapost/base/source-manual/mpman.mp | 17 + .../doc/metapost/base/source-manual/mpman.tex | 183 +- 13 files changed, 1453 insertions(+), 1433 deletions(-) (limited to 'Master/texmf-dist/doc/metapost') diff --git a/Master/texmf-dist/doc/metapost/base/mpboxes.pdf b/Master/texmf-dist/doc/metapost/base/mpboxes.pdf index f06e8847a64..01f96ce402b 100644 Binary files a/Master/texmf-dist/doc/metapost/base/mpboxes.pdf and b/Master/texmf-dist/doc/metapost/base/mpboxes.pdf 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 Binary files a/Master/texmf-dist/doc/metapost/base/mpgraph.pdf and b/Master/texmf-dist/doc/metapost/base/mpgraph.pdf 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 Binary files a/Master/texmf-dist/doc/metapost/base/mpintro.pdf and b/Master/texmf-dist/doc/metapost/base/mpintro.pdf 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 Binary files a/Master/texmf-dist/doc/metapost/base/mplibapi.pdf and b/Master/texmf-dist/doc/metapost/base/mplibapi.pdf 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 Binary files a/Master/texmf-dist/doc/metapost/base/mpman.pdf and b/Master/texmf-dist/doc/metapost/base/mpman.pdf 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 withpen" and - "label(, ...) 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 withpen" and + "label(, ...) 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{\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{\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., -- cgit v1.2.3