metafun-syntax.tex /size: 37 Kb    last modification: 2023-12-21 09:43
1% language=us runpath=texruns:manuals/metafun
2
3% eoclip: no postscript possible yet
4%
5% mpprocset mpxbreak
6
7% path expression -> path
8
9% listsize
10% copylist
11% sortlist
12% shapedlist
13% listtocurves
14% listtolines
15
16\startcomponent metafun-syntax
17
18\environment metafun-environment
19
20\startchapter[title={\METAPOST\ syntax}]
21
22\index{syntax}
23\index{language}
24
25\startintro
26
27In the \METAFONT\ book as well as the \METAPOST\ manual, you can find the exact
28specification of the language. Below you find the full \METAPOST\ syntax, to
29which we add the basic \METAFUN\ extensions. If this page looks too cryptic, you
30can safely skip to the next chapter. We don't distinguish between primitives and
31functionality defined in the \METAPOST\ format, simply because the core is kept
32small and a macro package is supposed to extend that core.
33
34\stopintro
35
36% \startsection[title={Syntax diagrams}]
37
38The following syntax diagrams are derived from the diagrams in the \METAPOST\
39manual. The \mathematics {\rightarrow} represents \quote {means} and the
40\mathematics {\vert} symbol stands for \quote {or}.
41
42The diagrams describe the hard coded \METAPOST\ syntax as well as most of the
43macros and variables defined in the plain \METAPOST\ format that belongs to the
44core of the system. They also include most of the fundamental \METAFUN\ commands.
45We have omitted the \METAPOST\ and \METAFONT\ commands that make no sense any
46more or are irrelevant for common usage. Specific \METAFUN\ modules are not
47included here, only general tools, text helpers and extensions to the built||in
48capabilities like transparency. If you feel that something is missing that should
49be specified here, just let me know.
50
51\start \switchtobodyfont[8pt] % small]
52
53\StartSyntax
54\S{atom}
55    \M \S{variable} \S{argument}
56    \O \S{number or fraction}
57    \O \S{internal variable}
58    \O \( \S{expression} \)
59    \O \L{begingroup} \S{statement list} \S{expression} \L{endgroup}
60    \O \S{nullary op}
61    \O \L{btex} \S{typesetting command} \L{etex}
62  % \O \L{verbatimtex} \S{typesetting command} \L{etex}
63    \O \S{pseudo function}
64\StopSyntax
65
66\StartSyntax
67\S{primary}
68    \M \S{atom}
69    \O \( \S{numeric expression} \L{,} \S{numeric expression} \)
70    \O \( \S{numeric expression} \L{,} \S{numeric expression} \L{,} \S{numeric expression} \)
71    \O \( \S{numeric expression} \L{,} \S{numeric expression} \L{,} \S{numeric expression} \L{,} \S{numeric expression} \)
72    \O \S{of operator} \S{expression} \L{of} \S{primary}
73    \O \S{numeric expression} \S{expression} \FL{along} \S{path expression}
74    \O \S{numeric expression} \S{expression} \FL{on} \S{path expression}
75    \O \S{unary op} \S{primary}
76    \O \L{str} \S{suffix}
77    \O \L{z} \S{suffix}
78    \O \S{numeric atom} \[ \S{expression} \L{,} \S{expression} \]
79    \O \S{scalar multiplication op} \S{primary}
80    \O \S{color expression} \FL{shadedinto} \S{color expression}
81    \O \S{picture expression} \FL{asgroup} \S{string expression}
82    \O \S{picture expression} \FL{onlayer} \S{string expression}
83\StopSyntax
84
85\StartSyntax
86\S{secondary}
87    \M \S{primary}
88    \O \S{secondary} \S{primary binop} \S{primary}
89    \O \S{secondary} \S{transformer}
90\StopSyntax
91
92\StartSyntax
93\S{tertiary}
94    \M \S{secondary}
95    \O \S{tertiary} \S{secondary binop} \S{secondary}
96\StopSyntax
97
98\StartSyntax
99\S{subexpression}
100    \M \S{tertiary}
101    \O \S{path expression} \S{path join} \S{path knot}
102\StopSyntax
103
104\StartSyntax
105\S{expression}
106    \M \S{subexpression}
107    \O \S{expression} \S{tertiary binop} \S{tertiary}
108    \O \S{path subexpression} \S{direction specifier}
109    \O \S{path subexpression} \S{path join} \L{cycle}
110\StopSyntax
111
112\StartSyntax
113\S{path knot}
114    \M \S{tertiary}
115\StopSyntax
116
117\StartSyntax
118\S{path join}
119    \M \L{--}
120    \O \S{direction specifier} \S{basic path join} \S{direction specifier}
121\StopSyntax
122
123\StartSyntax
124\S {direction specifier}
125    \M \S{empty}
126    \O \{ \L{curl} \S{numeric expression} \}
127    \O \{ \S{pair expression} \}
128    \O \{ \S{numeric expression} \L{,} \S{numeric expression} \}
129\StopSyntax
130
131\StartSyntax
132\S{basic path join}
133    \M \L{..}
134    \O \L{...}
135    \O \L{..} \S{tension} \L{..}
136    %O \L{..} \S{tension} \L{..} % check what got lost here
137    \O \L{..} \S{controls} \L{..}
138\StopSyntax
139
140\StartSyntax % atleast added
141\S{tension}
142    \M \L{tension} \S{numeric primary}
143    \O \L{tension} \L{atleast} \S{numeric primary}
144    \O \L{tension} \S{numeric primary} \L{and} \S{numeric primary}
145\StopSyntax
146
147\StartSyntax
148\S{controls}
149    \M controls \S{pair primary}
150    \O controls \S{pair primary} \L{and} \S{pair primary}
151\StopSyntax
152
153\StartSyntax
154\S{argument}
155    \M \S{symbolic token}
156\StopSyntax
157
158\StartSyntax
159\S{number or fraction}
160    \M \S{number} \L{/} \S{number}
161    \O \S{number} \Q{not followed by} \L{/} \S{number}
162\StopSyntax
163
164\StartSyntax
165\S{scalar multiplication op}
166    \M \L{+} \O \L{-}
167    \O \S{number or fraction} \Q{not followed by} \S{add op} \S{number}
168\StopSyntax
169
170\StartSyntax
171\S{transformer}
172    \M \L {rotated}            \S {numeric primary}
173    \O \L {scaled}             \S {numeric primary}
174    \O \L {shifted}            \S {pair primary}
175    \O \L {slanted}            \S {numeric primary}
176    \O \L {transformed}        \S {transform primary}
177    \O \L {xscaled}            \S {numeric primary} \O \L {yscaled} \S {numeric primary} \O \FL{xyscaled} \S {numeric or pair primary}
178    \O \L {zscaled}            \S {pair primary}
179    \O \L {reflectedabout}     \L \( \S{pair expression} \L{,} \S{pair expression} \)
180    \O \L {rotatedaround}      \L \( \S{pair expression} \L{,} \S{numeric expression} \)
181    \O \FL{xsized}             \S {numeric primary} \O \FL{ysized} \S {numeric primary} \O \FL{xysized} \S {numeric or pair primary}
182    \O \FL{blownup}            \S {numeric or pair primary}
183    \O \FL{enlarged}           \S {numeric or pair primary}
184    \O \FL{xstretched}         \S {numeric primary} \O \FL{ystretched} \S{numeric primary} \O \FL{stretched} \S{numeric or pair primary}
185    \O \FL{shortened}          \S {numeric or pair primary}
186    \O \FL{enlonged}           \S {numeric or pair primary}
187    \O \FL{crossed}            \S {numeric primary}
188    \O \FL{paralelled}         \S {numeric primary}
189    \O \FL{curved}             \S {numeric primary}
190    \O \FL{laddered}
191    \O \FL{leftenlarged}       \S{numeric primary} \O \FL{llenlarged} \S{numeric primary} \O \FL{llmoved} \S{numeric primary}
192    \O \FL{rightenlarged}      \S{numeric primary} \O \FL{lrenlarged} \S{numeric primary} \O \FL{lrmoved} \S{numeric primary}
193    \O \FL{topenlarged}        \S{numeric primary} \O \FL{urenlarged} \S{numeric primary} \O \FL{urmoved} \S{numeric primary}
194    \O \FL{bottomenlarged}     \S{numeric primary} \O \FL{ulenlarged} \S{numeric primary} \O \FL{ulmoved} \S{numeric primary}
195    \O \FL{randomized}         \S{numeric or pair or color primary}
196    \O \FL{randomizedcontrols} \S{numeric or pair}
197    \O \FL{snapped}            \S{numeric or pair primary}
198    \O \FL{cornered}           \S{numeric or pair}
199    \O \FL{peepholed}          \S{path expression}
200    \O \FL{smoothed}           \S{numeric or pair}
201    \O \FL{squeezed}           \S{numeric or pair primary}
202    \O \FL{superellipsed}      \S{numeric primary}
203    \O \FL{randomshifted}      \S{numeric or pair primary}
204    \O \FL{uncolored}          \S{color primary}
205    \O \FL{softened}           \S{numeric or color primary}
206    \O \FL{asgroup}            \S{string primary}
207    \O \L {gobbled}            \S{primary}
208    %
209    \O \FL {insideof}          \S{path expression}
210    \O \FL {outsideof}         \S{path expression}
211    \O \FL {crossinunder}      \S{path expression}
212\StopSyntax
213
214\StartSyntax
215\S{numeric or pair primary}
216    \M \S{numeric primary}
217    \O \S{pair primary}
218\StopSyntax
219
220\StartSyntax
221\S{numeric or pair or color primary}
222    \M \S{numeric primary}
223    \O \S{pair primary}
224    \O \S{color primary}
225\StopSyntax
226
227\StartSyntax
228\S{numeric or color primary}
229    \M \S{numeric primary}
230    \O \S{color primary}
231\StopSyntax
232
233\StartSyntax
234\S{nullary op}
235    \M \L{false} \O \L{true}
236    \O \L{normaldeviate}
237    \O \L{nullpen} \O \L{nullpicture} \O \L{pencircle}%
238    \O \L{whatever}
239\StopSyntax
240
241\StartSyntax
242\S{unary op}
243    \M \S{type}
244    \O \L {ASCII}
245    \O \FL{asin} \O \FL{asinh} \O \FL{acos} \O \FL{acosh} \O \FL{atan} \O \L {cosd} \O \FL{cos} \O \FL{cosh} \O \FL{cot} \O \FL{cotd} \O \L {sind} \O \FL{sin} \O \FL{sinh} \O \FL{tand} \O \FL{tan}
246    \O \L {inverse} \O \FL{inv} \O \FL{invcos} \O \FL{invsin} \O \FL{invtan}
247    \O \FL{sqr} \O \L {sqrt} \O \L {pow} \O \FL{exp} \O \L {mexp} \O \L {mlog} \O \FL{ln} \O \FL{log} \O \L {uniformdeviate}
248    \O \L {abs} \O \L {round} \O \L {odd} \O \L {ceiling} \O \L {floor}
249    \O \L {dir} \O \L {angle} \O \L {length} \O \L {arclength}
250    \O \L {bbox} \O \FL{bbwidth} \O \FL{bbheight}
251    \O \L {bot} \O \L {lft} \O \L {rt} \O \L {top} \O \L {center}
252    \O \FL{colordecimals} \O \L {decimal} \O \FL{ddecimal} \O \FL{dddecimal} \O \FL{ddddecimal} \O \FL{condition} \O \FL{tostring}
253    \O \FL{boundingbox} \O \FL{outerboundingbox} \O \FL{innerboundingbox} \O \L {bbox}
254    \O \L {colorpart} \O {fontpart} \O \L {pathpart} \O \L {penpart} \O \L {textpart} \O \L {dashpart}
255    \O \L {redpart} \O \L {greenpart} \O \L {bluepart} \O \L {greypart} \O \L {graypart}
256    \O \L {cyanpart} \O \L {magentapart} \O \L {yellowpart} \O \L {blackpart}
257    \O \L {postscriptpart} \O \L {prescriptpart}
258    \O \L {clipped} \O \L {bounded} \O \L {stroked} \O \L {filled} \O \L {textual}
259    \O \FL{punked} \O \L{paralleled}
260    \O \FL{leftboundary} \O \FL{rightboundary} \O \FL{topboundary} \O \FL{bottomboundary}
261    \O \L {xpart} \O \L {xxpart} \O \L {xypart} \O \L {ypart} \O \L {yxpart} \O \L {yypart}
262    \O \L {oct} \O \L {hex}
263    \O \L {colortype}
264    \O \FL{grayed} \O \FL{greyed}
265    \O \L {llcorner} \O \L {lrcorner} \O \L {ulcorner} \O \L {urcorner}
266    \O \L {not} \O \L {known} \O \L {unknown}
267    \O \FL{blackcolor} \O \FL{whitecolor} \O \L {colormodel}
268    \O \L {char} \O \L {fontsize}
269    \O \L {cycle} \O \L {reverse} \O \L {counterclockwise}
270    \O \L {makepath} \O \L {makepen}
271    \O \L {unitvector}
272    \O \L {turningnumber}
273    \O \L {circularpath} \O \L {squarepath} \O \L {linearpath}
274    % maybe pseudo functions:
275    \O \FL{area} \O \FL{inverted} \O \FL{simplified} \O \FL{unspiked}
276\StopSyntax
277
278\StartSyntax
279\S{type}
280    \M \L{boolean} \O \L{numeric} \O \L{pair} \O \L{path}
281    \O \L{pen} \O \L{picture} \O \L{string} \O \L{transform}
282    \O \L{color} \O \L{cmykcolor} \O \FL {greycolor} \FL {graycolor}\O \L{rgbcolor}
283    \O \FL{property}\O \FL{transparency}
284    \O \L{outer} \O \L{inner}
285\StopSyntax
286
287\StartSyntax
288\S{primary binop}
289    \M \L{*} \O \L{/} \O \L{**} \O \L{and}
290    \O \L{dotprod} \O \L{div} \O \L{infont} \O \L{mod}
291\StopSyntax
292
293\StartSyntax
294\S{secondary binop}
295    \M \L{+} \O \L{-} \O \L{++} \O \L{+-+} \O \L{or}
296    \O \L{intersectionpoint} \O \L{intersectiontimes}
297\StopSyntax
298
299\StartSyntax
300\S{tertiary binop}
301    \M \L{&} \O \L{<} \O \L{<=} \O \L{<>} \O \L{=} \O \L{>} \O \L{>=}
302    \O \L{cutafter} \O \L{cutbefore} \O \FL{cutends}
303    \O \L{softjoin}
304\StopSyntax
305
306\StartSyntax
307\S{of operator}
308    \M \L{arctime} \O \L{direction} \O \L{directiontime} \O \L{directionpoint}%
309    \O \L{penoffset} \O \L{point}
310    \O \L{postcontrol} \O \L{precontrol} \O \L{subpath} \O \L{substring}
311    \O \L{takepower}
312\StopSyntax
313
314\StartSyntax
315\S{variable}
316    \M \S{predefined numeric variable}
317    \O \S{predefined path variable}
318    \O \S{predefined picture variable}
319    \O \S{predefined transform variable}
320    \O \S{predefined pair variable}
321    \O \S{predefined pen variable}
322    \O \S{predefined string variable}
323    \O \S{predefined dashpattern}
324    \O \S{predefined rgbcolor variable}
325    \O \S{predefined macro}
326    \O \S{tag} \S{suffix}
327\StopSyntax
328
329\StartSyntax
330\S{predefined numeric variable}
331    \M \FL{nothing yet}
332\StopSyntax
333
334\StartSyntax
335\S{predefined picture variable}
336    \M \FL{blankpicture}
337    \O \L{currentpicture}
338\StopSyntax
339
340\StartSyntax
341\S{predefined transform variable}
342    \M \L{identity} \O \L{currenttransform}
343\StopSyntax
344
345\StartSyntax
346\S{predefined path variable}
347    \M \FL{originpath}
348    \O \FL{fullcircle} \O \FL{fullsquare} \O \FL{fulldiamond} \O \FL{fulltriangle}
349    \O \FL{unitcircle} \O \FL{unitsquare} \O \FL{unitdiamond} \O \FL{unittriangle}
350    \O \FL{halfcircle} \O \FL{quartercircle}
351    \O \FL{llcircle} \O \FL{lrcircle} \O \FL{urcircle} \O \FL{ulcircle}
352    \O \FL{bcircle} \O \FL{tcircle} \O \FL{lcircle} \O \FL{rcircle}
353    \O \FL{triangle}
354    \O \FL{righttriangle} \O \FL{uptriangle} \O \FL{lefttriangle} \O \FL{downtriangle}
355    \O \FL{lltriangle} \O \FL{lrtriangle} \O \FL{urtriangle} \O \FL{ultriangle}
356    \O \L{cuttings}
357\StopSyntax
358
359\StartSyntax
360\S{predefined pair variable}
361    \M \L{right} \O \L{up} \O \L{left} \O \L{down}
362    \M \L{shadedright} \O \L{shadedup} \O \L{shadedleft} \O \L{shadeddown}
363\StopSyntax
364
365\StartSyntax
366\S{predefined pen variable}
367    \M \FL{pensquare} \O \FL{penrazor} \O \FL{penspec}
368    \O \L{currentpen}
369\StopSyntax
370
371\StartSyntax
372\S{predefined string variable}
373    \M \FL{EOF}
374    \O \FL{CRLF} \O \FL{crlf}
375    \O \FL{DQUOTE} \O \FL{dquote} \O \L{ditto}
376    \O \FL{SPACE} \O \FL{space}
377    \O \FL{PERCENT} \O \FL{percent}
378    \O \L{defaultfont}
379    \O \L{extra_beginfig} \O \L {extra_endfig}
380    \O \FL{pathconnectors}
381\StopSyntax
382
383\StartSyntax
384\S{predefined dashpattern}
385    \M \L{evenly} \O \FL{oddly} \O \L{withdots}
386\StopSyntax
387
388\StartSyntax
389\S{predefined rgbcolor variable}
390    \M \L{red}  \O \L{green}   \O \L{blue}   \O \L{white}
391    \O \L{cyan} \O \L{magenta} \O \L{yellow} \O \L{black}
392    \O \L{background}
393    \O \FL{basiccolors}
394\StopSyntax
395
396\StartSyntax
397\S{predefined macro}
398    \M \FL{shipit} \O \FL{bye}
399    \O \FL{resetdrawoptions}
400    \O \FL{visualizepaths} \O \FL{naturalizepaths}
401\StopSyntax
402
403\StartSyntax
404\S{suffix}
405    \M \S{empty}
406    \O \S{suffix} \S{subscript}
407    \O \S{suffix} \S{tag}
408    \O \S{suffix parameter}
409\StopSyntax
410
411\StartSyntax
412\S{subscript}
413    \M \S{number}
414    \O \[ \S{numeric expression} \]
415\StopSyntax
416
417\StartSyntax
418\S{internal variable}
419    \M \L{ahangle} \O \L{ahlength}
420    \O \L{bboxmargin} \O \L{labeloffset}
421    \O \L{charcode}
422    \O \L{defaultcolormodel} \O \L{defaultpen} \O \L{defaultscale}
423    \O \L{linecap} \O \L{linejoin} \O \L{miterlimit}
424    \O \L{outputformat} \O \L{outputtemplate} \O \O \L{prologues}
425    \O \L{showstopping} \L{pausing}
426    \O \L{tracingoutput} \O \L{tracingcapsules} \O \L{tracingchoices} \O \L{tracingcommands} \O \L{tracingequations}
427    \O \L{tracinglostchars}  \O \L{tracingmacros} \O \L{tracingonline} \O \L{tracingrestores} \O \L{tracingspecs}
428    \O \L{tracingstats} \O \L{tracingtitles}
429    \O \L{truecorners} \O \L{warningcheck}
430    \O \L{dotlabeldiam}
431    \O \L{day} \O \L{month} \O \L{year} \O \L{hour} \O \L{minute}  \O \L{time}
432    \O \L{mm} \O \L{pt} \O \L{dd} \O \L{bp} \O \L{cm} \O \L{pc} \O \L{cc} \O \L{in}
433    \O \L{butt} \O \L{rounded} \O \L{squared} \O \L{mitered} \O \L{beveled}
434    \O \FL{pi} \O \FL{radian} \O \FL{eps} \O \FL{epsilon}
435    \O \FL{nocolormodel} \O \FL{greycolormodel} \O \FL{graycolormodel} \O \FL{rgbcolormodel} \O \FL{cmykcolormodel}
436  % \O \FL{shadefactor}
437    \O \FL{textextoffset}
438    \O \FL{maxdimensions}
439    \O \L{infinity}
440    \O \FL{charscale}
441    \O \FL{metapostversion}
442    \O \FL{normaltransparent} \O \FL{multiplytransparent} \O \FL{screentransparent} \O \FL{overlaytransparent}
443    \O \FL{softlighttransparent} \O \FL{hardlighttransparent} \O \FL{colordodgetransparent} \O \FL{colorburntransparent}
444    \O \FL{darkentransparent} \O \FL{lightentransparent} \O \FL{differencetransparent} \O \FL{exclusiontransparent}
445    \O \FL{huetransparent} \O \FL{saturationtransparent} \O \FL{colortransparent} \O \FL{luminositytransparent}
446    \O \S{symbolic token defined by \L{newinternal}}
447    \O \L{ahangle} \O \L{ahlength}
448    \O \L{bboxmargin}
449    \O \L{pen_bot} \O \L{pen_top} \O \L{pen_lft} \O \L{pen_rt}
450    \O \L{join_radius}
451    \O \L{crossingscale} \O \L{crossingoption}
452\StopSyntax
453
454\StartSyntax
455\S{pseudo function}
456    \M \L {min}              \( \S{expression list} \)%
457    \O \L {max}              \( \S{expression list} \)
458    \O \L {incr}             \( \S{numeric variable} \)%
459    \O \L {decr}             \( \S{numeric variable} \)
460    \O \L {dashpattern}      \( \S{on/off list} \)
461    \O \L {interpath}        \( \S{numeric expression} \L{,} \S{path expression} \L{,} \S{path expression} \)
462    \O \FL{interpolated}     \( \S{numeric expression} \L{,} \S{path expression} \L{,} \S{path expression} \)
463    \O \L {buildcycle}       \( \S{path expression list} \)
464    \O \L {thelabel}         \S{label suffix} \( \S{expression} \L{,} \S{pair expression} \)
465    \O \FL{thefreelabel}     \( \S{expression}\L{,} \S{pair expression} \L{,} \S{pair expression} \)
466    \O \FL{anglebetween}     \( \S{path expression} \L{,} \S{path expression} \L{,} \S{expression} \)
467    \O \L {flex}             \( \S{text} \)
468    \O \L {hide}             \( \S{text} \)
469    \O \L {gobble}           \S{primary}
470    \O \L {clearit}
471    \O \L {clearpen}
472    \O \L {clearxy}
473    \O \FL{pointarrow}       \( \S{path expression} \L{,} \S{numeric or pair primary} \L{,} \S{numeric expression} \)
474    \O \FL{centerarrow}      \( \S{path expression} \L{,} \S{numeric or pair primary} \L{,} \S{numeric expression} \)
475    \O \FL{leftarrow}        \( \S{path expression} \L{,} \S{numeric or pair primary} \L{,} \S{numeric expression} \)
476    \O \FL{rightarrow}       \( \S{path expression} \L{,} \S{numeric or pair primary} \L{,} \S{numeric expression} \)
477    \O \FL{paired}           \( \S{numeric or pair} \)%
478    \O \FL{tripled}          \( \S{numeric or color} \)
479    \O \FL{remappedcolor}    \( \S{color expression} \)
480    \O \FL{superellipse}     \( \S{numeric primary} \L{,} \S{numeric primary} \L{,} \S{numeric primary} \L{,} \L{numeric primary} \L{,} \N  \L{numeric primary} \)
481    \O \FL{roundedsquare}    \( \S{numeric primary} \L{,} \S{numeric primary} \L{,} \S{numeric primary} \)
482    \O \FL{tensecircle}      \( \S{numeric primary} \L{,} \S{numeric primary} \L{,} \S{numeric primary} \)
483    \O \FL{tensepath}        \( \S{path primary} \)
484    \O \FL{(constructed)function}%
485                             \( \S{string expression} \)%
486                             \( \S{string primary} \L{,} \S{string primary} \L{,} \S{numeric primary} \L{,}
487                             \N \S{numeric primary} \L{,} \S{numeric primary} \)
488    \O \FL{straightfunction} \( \S{string primary} \L{,} \S{string primary} \L{,} \S{numeric primary} \L{,} \S{numeric primary} \L{,}
489                             \N \S{numeric primary} \)
490    \O \FL{curvedfunction}   \( \S{string primary} \L{,} \S{string primary} \L{,} \S{numeric primary} \L{,} \S{numeric primary} \L{,}
491                             \N \S{numeric primary} \)
492   %\O \FL{punkedfunction}   \( \S{string primary} \L{,} \S{string primary} \L{,} \S{numeric primary} \L{,} \S{numeric primary} \L{,} \S{numeric primary} \)
493   %\O \FL{tightfunction}    \( \S{string primary} \L{,} \S{string primary} \L{,} \S{numeric primary} \L{,} \S{numeric primary} \L{,} \S{numeric primary} \)
494    \O \FL{constructedpairs} \( \S{string expression} \) \( \S{pair array} \)
495    \O \FL{straightpairs}    \( \S{pair array} \)
496    \O \FL{curvedpairs}      \( \S{pair array} \)
497   %\O \FL{punkedpairs}      \( \S{pair array} \)
498   %\O \FL{tightpairs}       \( \S{pair array} \)
499    \O \FL{constructedpath}  \( \S{string expression} \) \( \S{text} \)
500    \O \FL{straightpath}     \( \S{text} \)
501    \O \FL{curvedpath}       \( \S{text} \)
502   %\O \FL{punkedpath}       \( \S{text} \)
503   %\O \FL{tightpath}        \( \S{text} \)
504    \O \FL{epsed}            \S{numeric primary}
505    \O \FL{arrowhead}        \S{path primary}
506    \O \FL{arrowpath}        \S{path primary}
507    \O \FL{infinite}         \S{path primary}
508    %
509    \O \FL{tolist}           \( \S{pair array} \) \( \S{text} \)
510    \O \FL{topath}           \( \S{pair array} \) \( \S{text} \)
511    \O \FL{tocycle}          \( \S{pair array} \) \( \S{text} \)
512    \O \FL{pencilled}        \( \S{path expression} \) \( \S{pen expression} \)
513\StopSyntax
514
515\StartSyntax
516\S{color expression}
517    \M \S{basic color expression}
518    \O \S{string primary}
519    \O \FL{namedcolor} \( \S{string primary} \)
520    \O \FL{spotcolor} \( \S{string primary} \L{,} \S{basic color expression} \)
521    \O \FL{multitonecolor} \( \S{string primary} \L{,} \S{basic color expression list} \)
522\StopSyntax
523
524\StartSyntax
525\S{basic color expression}
526    \M \S{rgb color expression}
527    \O \S{cmyk color expression}
528    \O \S{gray color expression}
529\StopSyntax
530
531\StartSyntax
532\S{basic color expression list}
533    \M \S{basic color expression}
534    \O \S{basic color expression list} \L{,} \S{basic color expression}
535\StopSyntax
536
537\StartSyntax
538\S{rgb color expression}
539    \M \S\( \S{numeric primary} \L{,} \S{numeric primary} \L{,} \S{numeric primary} \S\)
540\StopSyntax
541
542\StartSyntax
543\S{cmyk color expression}
544    \M \S\( \S{numeric primary} \L{,} \S{numeric primary} \L{,} \S{numeric primary} \L{,} \S{numeric primary} \S\)
545\StopSyntax
546
547\StartSyntax
548\S{gray color expression}
549    \M \S\( \S{numeric primary} \S\)
550    \O \S{numeric primary}
551\StopSyntax
552
553\StartSyntax
554\S{path expression list}
555    \M \S{path expression}
556    \O \S{path expression list} \L{,} \S{path expression}
557\StopSyntax
558
559\StartSyntax
560\S{on/off list}
561    \M \S{on/off list} \S{on/off clause}
562    \O \S{on/off clause}
563\StopSyntax
564
565\StartSyntax
566\S{on/off clause}
567    \M \L{on} \S{numeric tertiary}
568    \O \L{off} \S{numeric tertiary}
569\StopSyntax
570
571\StartSyntax
572\S{boolean expression}   \M \S{expression}
573\S{cmyk expression}      \M \S{expression}
574\S{color expression}     \M \S{expression}
575\S{numeric atom}         \M \S{atom}
576\S{numeric expression}   \M \S{expression}
577\S{numeric primary}      \M \S{primary}
578\S{numeric tertiary}     \M \S{tertiary}
579\S{numeric variable}     \M \S{variable} \O \S{internal variable}
580\S{pair expression}      \M \S{expression}
581\S{pair primary}         \M \S{primary}
582\S{path expression}      \M \S{expression}
583\S{path subexpression}   \M \S{subexpression}
584\S{pen expression}       \M \S{expression}
585\S{picture expression}   \M \S{expression}
586\S{picture variable}     \M \S{variable}
587\S{rgb expression}       \M \S{expression}
588\S{string expression}    \M \S{expression}
589\S{suffix parameter}     \M \S{parameter}
590\S{transform primary}    \M \S{primary}
591\StopSyntax
592
593\StartSyntax
594\S{program}
595    \M \S{statement list} \L{end}
596\StopSyntax
597
598\StartSyntax
599\S{statement list}
600    \M \S{empty}
601    \O \S{statement list} \L{;} \S{statement}
602\StopSyntax
603
604\StartSyntax
605\S{statement}
606    \M \S{empty}
607    \O \S{equation}
608    \O \S{assignment}
609    \O \S{declaration}
610    \O \S{macro definition}
611    \O \S{compound}
612    \O \S{pseudo procedure}
613    \O \S{command}
614\StopSyntax
615
616\StartSyntax
617\S{compound}
618    \M \L{begingroup} \S{statement list} \L{endgroup}
619    \O \L{beginfig} \( \S{numeric expression} \) \L{;} \S{statement list} \S{;} \L{endfig}
620    \O \FL{beginglyph} \( \S{glyph property list} \) \L{;} \S{statement list} \S{;} \L{endglyph}
621    \O \L{image builder} \( \S{statement list} \)
622\StopSyntax
623
624\StartSyntax
625\S{image builder}
626    \M {image} \O \FL {decorated} \O \FL {redecorated} \O \FL {undecorated}
627\StopSyntax
628
629\StartSyntax
630\S{glyph property list}
631    \M \S{numeric expression} \L{,} \S{numeric expression} \L{,} \S{numeric expression} \L{,} \S{numeric expression}
632\StopSyntax
633
634\StartSyntax
635\S{equation}
636    \M \S{expression} \L{=} \S{right-hand side}
637\StopSyntax
638
639\StartSyntax
640\S{assignment}
641    \M \S{variable}          \L{:=} \S{right-hand side}
642    \O \S{internal variable} \L{:=} \S{right-hand side}
643\StopSyntax
644
645\StartSyntax
646\S{right-and side}
647    \M \S{expression}
648    \O \S{equation}
649    \O \S{assignment}
650\StopSyntax
651
652\StartSyntax
653\S{declaration}
654    \M \S{type} \S{declaration list}
655\StopSyntax
656
657\StartSyntax
658\S{declaration list}
659    \M \S{generic variable}
660    \O \S{declaration list} \L{,} \S{generic variable}
661\StopSyntax
662
663\StartSyntax
664\S{generic variable}
665    \M \S{Symbolic token} \S{generic suffix}
666\StopSyntax
667
668\StartSyntax
669\S{generic suffix}
670    \M \S{empty}
671    \O \S{generic suffix} \S{tag}
672    \O \S{generic suffix} \L{[]}
673\StopSyntax
674
675\StartSyntax
676\S{macro definition}
677    \M \S{macro heading} \L{=} \S{replacement text} \L{enddef}
678\StopSyntax
679
680\StartSyntax
681\S{macro heading}
682    \M \L{def}        \S{Symbolic token} \S{delimited part} \S{undelimited part}
683    \O \L{vardef}     \S{generic variable} \S{delimited part} \S{undelimited part}
684    \O \L{vardef}     \S{generic variable} \L{@#} \S{delimited part} \S{undelimited part}
685    \O \S{binary def} \S{parameter} \S {symbolic token} \S{parameter}
686\StopSyntax
687
688\StartSyntax
689\S{delimited part}
690    \M \S{empty}
691    \O \S{delimited part} \( \S{parameter type} \S{parameter tokens} \)
692\StopSyntax
693
694\StartSyntax
695\S{parameter type}
696    \M \L{expr}
697    \O \L{suffix}
698    \O \L{text}
699\StopSyntax
700
701\StartSyntax
702\S{parameter tokens}
703    \M \S{parameter}
704    \O \S{parameter tokens} \L{,} \S{parameter}
705\StopSyntax
706
707\StartSyntax
708\S{parameter}
709    \M \S{Symbolic token}
710\StopSyntax
711
712\StartSyntax
713\S{undelimited part}
714    \M \S{empty}
715    \O \S{parameter type} \S{parameter}
716    \O \S{precedence level} \S{parameter}
717    \O \L{expr} \S{parameter} \L{of} \S{parameter}
718\StopSyntax
719
720\StartSyntax
721\S{precedence level}
722    \M \L{primary}
723    \O \L{secondary}
724    \O \L{tertiary}
725\StopSyntax
726
727\StartSyntax
728\S{binary def}
729    \M \S{primarydef}
730    \O \S{secondarydef}
731    \O \S{tertiarydef}
732\StopSyntax
733
734\StartSyntax
735\S{pseudo procedure}
736    \M \L {drawoptions}  \( \S{option list} \)
737    \O \L {label}        \S{label suffix} \( \S{expression} \L{,} \S{pair expression} \)
738    \O \L {thelabel}     \S{label suffix} \( \S{expression} \L{,} \S{pair expression} \)
739    \O \L {dotlabel}     \S{label suffix} \( \S{expression} \L{,} \S{pair expression} \)
740    \O \L {makelabel}    \S{makelabel}
741    \O \L {labels}       \S{label suffix} \( \S{point number list} \)
742    \O \L {dotlabels}    \S{label suffix} \( \S{point number list} \)
743    \O \FL{textext}      \S{label suffix} \( \S{expression} \)
744    \O \FL{infotext}     \S{label suffix} \( \S{expression}, \S{numeric expression} \)
745    \O \FL{thetextext}   \S{label suffix} \( \S{expression}, \S{pair expression} \)
746    \O \FL{rawtextext}   \( \S{expression} \)
747    \O \FL{verbatim}     \S{string expression}
748    \O \FL{freelabel}    \( \S{expression} \L{,} \S{pair expression} \L{,} \S{pair expression} \)
749    \O \FL{freedotlabel} \( \S{expression} \L{,} \S{pair expression} \L{,} \S{pair expression} \)
750    \O \FL{remapcolor}   \( \S{color expression} \L{,} \S{color expression} \)
751    \O \FL{resetcolormap}
752    \O \FL{recolor}      \S{picture expression}
753    \O \FL{bitmapimage}  \( \S{numeric primary} \L{,}  \S{numeric primary} \L{,} \S{string primary} \)
754    \O \FL{pushboundingbox} \O \FL{popboundingbox}
755    \O \FL{pushcurrentpicture} \O \FL{popcurrentpicture}
756    \O \FL{externalfigure} \S{string expression} \S{transformer}
757    \O \FL{loadfigure} \S{string expression} \L{number} \S{numeric expression} \S{transformer}
758    \O \FL{properties}
759    \O \L {anchored} \S{label suffix} \( \S{expression} \L{,} \S{pair expression} \)
760\StopSyntax
761
762\StartSyntax
763\S{point number list}
764    \M \S{suffix} \O \S{point number list} \L{,} \S{suffix}
765\StopSyntax
766
767\StartSyntax
768\S{label suffix}
769    \M \S{empty}
770    \O \L{lft} \O \L{rt}\O \L{top} \O \L{bot} \O \L{ulft} \O \L{urt}%
771       \O \L{llft} \O \L{lrt} \O \FL{raw} \O \FL{origin}
772\StopSyntax
773
774\StartSyntax
775\S{command}
776    \M \L{clip}        \S{picture variable} \L{to} \S{path expression}
777    \O \L{interim}     \S{internal variable} \L{:=} \S{right-hand side}
778    \O \L{let}         \S{symbolic token} \L{=} \S{symbolic token}
779    \O \L{pickup}      \S{expression}
780    \O \L{randomseed}  \L{:=} \S{numeric expression}
781    \O \L{save}        \S{symbolic token list}
782    \O \L{delimiters}  \S{character} \S{character}
783    \O \L{setbounds}   \S{picture variable} \L{to} \S{path expression}
784    \O \L{shipout}     \S{picture expression}
785    \O \L{special}     \S{string expression}
786    \O \L{endinput}
787    \O \L{expandafter}
788    \O \S{addto command}
789    \O \S{drawing command}
790    \O \S{font metric command}
791    \O \S{newinternal command}
792    \O \S{message command}
793    \O \S{mode command}
794    \O \S{show command}
795    \O \S{special command}
796    \O \S{tracing command}
797    \O \S{scantokens} \S{string expression}
798    \O \FL{defineshade} \S{symbolic token} \S{shading expression}
799    \O \L{write} \S{string expression} \L{to} \S{string expression}
800    \O \L{readfrom} \S{string expression}
801    \O \FL{readfile} \S{string expression}
802    \O \L{readstring}
803    \O \L{restoreclipcolor}
804    \O \L{savepen}
805    \O \L{runscript}
806    \O \L{relax}
807\StopSyntax
808
809\StartSyntax
810\S{show command}
811    \M \L{show}             \S{expression list}
812    \O \L{showvariable}     \S{symbolic token list}
813    \O \L{showtoken}        \S{symbolic token list}
814    \O \L{showdependencies}
815\StopSyntax
816
817\StartSyntax
818\S{symbolic token list}
819    \M \S{symbolic token}
820    \O \S{symbolic token} \L{,} \S{symbolic token list}
821\StopSyntax
822
823\StartSyntax
824\S{expression list}
825    \M \S{expression}
826    \O \S{expression list} \L{,} \S{expression}
827\StopSyntax
828
829\StartSyntax
830\S{addto command}
831    \M \L{addto} \S{picture variable} \L{also}       \S{picture expression} \S{option list}
832    \O \L{addto} \S{picture variable} \L{contour}    \S{path expression} \S{option list}
833    \O \L{addto} \S{picture variable} \L{doublepath} \S{path expression} \S{option list}
834\StopSyntax
835
836\StartSyntax
837\S{option list}
838    \M \S{empty}
839    \O \S{drawing option} \S{option list}
840\StopSyntax
841
842\StartSyntax
843\S{drawing option}
844    \M \L {withcolor}        \S{color expression}%
845        \O \FL {withgrey}    \S{numeric expression}%
846        \O \FL {withgray}    \S{numeric expression}
847    \O \L {withrgbcolor}     \S{rgb expression}%
848    \O \L {withcmykcolor}    \S{cmyk expression}%
849    \O \L {withgreyscale}    \S{numeric expression}
850    \O \L {withoutcolor}
851    \O \L {withprescript}    \S{string expression}%
852    \O \L {withpostscript}   \S{string expression}
853    \O \L {withpen}          \S{pen expression}
854    \O \L {dashed}           \S{picture expression}
855    \O \FL{undashed}
856    \O \FL{withshade}        \S{numeric expression} \O \FL{shaded} \S{shading expression}
857    \O \FL{withproperties}   \S{property primary}
858    \O \FL{withtransparency} \S{pair primary}
859    \O \FL{withlinearshade}    \(%
860        \S{path expression}    \L{,}%
861        \S{path expression}    \L{,}%
862        \S{color expression}   \L{,}%
863        \S{color expression}   \)
864    \O \FL{withcircularshade}  \(%
865        \S{path ex}    \L{,}%
866        \S{path ex}    \L{,}%
867        \S{numeric ex} \L{,}%
868        \S{numeric ex} \L{,}%
869        \S{color ex}   \L{,}%
870        \S{color ex}   \)
871    \O  \S{shading expression}
872    \O \FL{onlayer}          \S{string expression}
873    \O \FL{withmask}         \S{string expression}
874\StopSyntax
875
876\StartSyntax
877\S{property expression}
878  \M \( {drawing option} \)
879\StopSyntax
880
881\StartSyntax
882\S{shading expression}
883    \M \FL{withshademethod} \L{string expression}
884    \O \FL{withshadefactor} \L{numeric expression}
885    \O \FL{withshadedomain} \L{pair expression}
886    \O \FL{withshadevector} \L{pair expression}
887    \O \FL{withshaderadius} \L{pair expression}
888    \O \FL{withshadeorigin} \L{pair expression}
889    \O \FL{withshadecolors} \( \S{color expression} \L{,} \S{color expression} \)
890    \O \FL{withshadecenter} \L{pair expression}
891\StopSyntax
892
893\StartSyntax
894\S{drawing command}
895    \M \L{draw} \S{picture expression} \S{option list}
896    \O \S{fill type} \S{path expression} \S{option list}
897\StopSyntax
898
899\StartSyntax
900\S{fill type}
901    \M \L {fill} \O \L{unfill} \O \FL{refill}
902    \O \L {draw} \O \L{undraw} \O \FL{redraw}
903    \O \L {filldraw} \O \FL{drawfill} \O \L{undrawfill} \O \L{unfilldraw}
904    \O \FL{eofill} \O \FL{nofill} \O \FL{fillup}
905    \O \L {drawdot}
906    \O \L {drawarrow} \O \L{drawdblarrow}
907    \O \L {cutdraw}
908    \O \L {visualizer}
909    \O \FL{normaldraw} \O \FL{normalfill}
910\StopSyntax
911
912\StartSyntax
913\S{visualizer}
914    \M \FL{drawboundary} \O \FL{drawboundingbox} \O \FL{drawboundoptions}
915    \O \FL{drawcontrollines} \O \FL{drawcontroloptions} \O \FL{drawcontrolpoints}
916    \O \FL{drawlabeloptions} \O \FL{drawlineoptions} \O \FL{drawoptions}
917    \O \FL{draworigin} \O \FL{draworiginoptions}
918    \O \FL{drawpath} \O \FL{drawpathoptions}
919    \O \FL{drawpoint} \O \FL{drawpointlabels} \O \FL{drawpointoptions}
920    \O \FL{drawpoints} \O \FL{drawwholepath}
921    \O \FL{visualizeddraw} \O \FL{visualizedfill}
922\StopSyntax
923
924\StartSyntax
925\S{newinternal command}
926    \M \L{newinternal} \S{internal type} \S{symbolic token list}
927    \O \S{newinternal} \S{symbolic token list}
928\StopSyntax
929
930\StartSyntax
931\S{message command}
932    \M \L{errhelp}          \S{string expression}
933    \O \L{errmessage}       \S{string expression}
934    \O \L{filenametemplate} \S{string expression}
935    \O \L{message}          \S{string expression}
936\StopSyntax
937
938\StartSyntax
939\S{mode command}
940    \M \L{batchmode}
941    \O \L{nonstopmode}
942    \O \L{scrollmode}
943    \O \L{errorstopmode}
944    \O \L{interact}
945\StopSyntax
946
947\StartSyntax
948\S{special command}
949    \M \L{fontmapfile}    \S{string expression}
950    \O \L{fontmapline}    \S{string expression}
951    \O \L{special}        \S{string expression}
952    \O \L{input}          \S{string expression}
953    \O \L{prologies}      \S{numeric expression}
954    \O \L{outputtemplate} \S{string expression}
955    \O \L{outputformat}   \S{string expression}
956\StopSyntax
957
958\StartSyntax
959\S{tracing command}
960    \M \L{tracingall}
961    \O \L{loggingall}
962    \O \L{tracingnone}
963\StopSyntax
964
965\StartSyntax
966\S{if test}
967    \M \L{if} \S{boolean expression} \L{:} \S{balanced tokens} \S{alternatives} \L{fi}
968\StopSyntax
969
970\StartSyntax
971\S{alternatives}
972    \M \S{empty}
973    \O \L{else} \L{:} \S{balanced tokens}
974    \O \L{elseif} \S{boolean expression} \S{:} \S{balanced tokens} \S{alternatives}
975    \O \L{exit} \O \L{exitif} \S{boolean expression} \O \L{exitunless} \S{boolean expression}
976    \O \L{break}
977\StopSyntax
978
979\StartSyntax
980\S{loop}
981    \M \S{loop header} \L{:} \S{loop text} \L{endfor}
982\StopSyntax
983
984\StartSyntax
985\S{loop header}
986    \M \L{for} \S{symbolic token} \L{=} \S{progression}
987    \O \L{for} \S{symbolic token} \L{=} \S{for list}
988    \O \L{for} \S{symbolic token} \L{within} \S{picture expression}
989    \O \L{forsuffixes} \S{symbolic token} \L{=} \S{suffix list}
990    \O \L{forever}
991\StopSyntax
992
993\StartSyntax
994\S{progression}
995    \M \S{numeric expression} \L{upto} \S{numeric expression}
996    \O \S{numeric expression} \L{downto} \S{numeric expression}
997    \O \S{numeric expression} \L{step} \S{numeric expression} \L{until} \S{numeric expression}
998    \O \L{range} \S{numeric expression} \L{thru} \S{numeric expression}
999\StopSyntax
1000
1001\StartSyntax
1002\S{for list}
1003    \M \S{expression}
1004    \O \S{for list} \L{,} \S{expression}
1005\StopSyntax
1006
1007\StartSyntax
1008\S{suffix list}
1009    \M \S{suffix}
1010    \O \S{suffix list} \L{,} \S{suffix}
1011\StopSyntax
1012
1013\stop
1014
1015% \stopsection
1016
1017\stopchapter
1018
1019\stopcomponent
1020
1021% \startsection[title={Left overs}]
1022
1023% There are a few more concepts and commands available in \METAFUN, like color
1024% remapping, shading and graphic inclusion. Because they have their own small
1025% syntax world, we present them here.
1026%
1027% You may consider shades to be internally represented by a hidden datastructure.
1028% The end user has access to a shade by means of a pointer, expressed in a numeric.
1029%
1030% \start \switchtobodyfont[small]
1031%
1032% \StartSyntax
1033% \S{pseudo procedure}
1034%   \M \FL{linear_shade}%
1035%       \( \S{path expression}  \L{,} \S{numeric expression}%
1036%       \L{,} \S{color expression} \L{,} \S{color expression} \)
1037%   \O \FL{circular_shade}%
1038%       \( \S{path expression}  \L{,} \S{numeric expression}%
1039%       \L{,} \S{color expression} \L{,} \S{color expression} \)
1040% \StopSyntax
1041%
1042% \StartSyntax
1043% \S{pseudo function}
1044%   \M \FL{define_linear_shade}%
1045%       \( \S{pair  expr} \L{,} \S{pair    expr}%
1046%       \L{,} \S{color expr} \L{,} \S{color   expr} \)
1047%   \O \FL{define_circular_shade}%
1048%       \( \S{pair  expr} \L{,} \S{pair    expr}%
1049%       \L{,} \S{path  expr} \L{,} \S{path    expr}%
1050%       \L{,} \S{color expr} \L{,} \S{color   expr} \)
1051%   \O \FL{predefined_linear_shade}%
1052%       \( \S{path  expr} \L{,} \S{numeric expr}%
1053%       \L{,} \S{color expr} \L{,} \S{color   expr} \)
1054%   \O \FL{predefined_circular_shade}%
1055%       \( \S{path  expr} \L{,} \S{numeric expr}%
1056%       \L{,} \S{color expr} \L{,} \S{color   expr} \)
1057% \StopSyntax
1058%
1059% \stop
1060
1061% External figures are just files, so the string passed as first argument needs to
1062% be a valid filename. Additionally, they need to be given dimensions.
1063
1064% \start \switchtobodyfont[small]
1065%
1066% \StartSyntax
1067% \S{pseudo procedure}
1068%   \M \FL{externalfigure} \S{string expression} \S{transformer}
1069% \StopSyntax
1070%
1071% \stop
1072
1073% An external \METAPOST\ graphic can be loaded by filename and figure number. The
1074% normal transformations can be applied.
1075%
1076% \start \switchtobodyfont[small]
1077%
1078% \StartSyntax
1079% \S{pseudo procedure}
1080%   \M \FL{loadfigure} \S{string expression} \L{number} \S{numeric expression} \S{transformer}
1081% \StopSyntax
1082%
1083% \stop
1084
1085% A graphic text is (normally) an outline representation of a snippet of text
1086% typeset by \TEX. This procedure has a couple of dedicated options.
1087
1088% \start \switchtobodyfont[small]
1089
1090% \StartSyntax
1091% \S{pseudo procedure}
1092%   \M \FL{graphictext} \S{string expression} \S{transformer} \S{text option list}
1093%   \O \FL{regraphictext} \S{transformer} \S{text option list}
1094% \StopSyntax
1095
1096% \StartSyntax
1097% \S{text option list}
1098%   \M \S{empty}
1099%   \O \S{text drawing option} \S{text option list}
1100% \StopSyntax
1101
1102% \StartSyntax
1103% \S{text drawing option}
1104%   \M \S{drawing option}
1105%   \O \FL{reversefill}
1106%   \O \FL{outlinefill}
1107%   \O \FL{withdrawcolor} \S{color expression}
1108%   \O \FL{withfillcolor} \S{color expression}
1109% \StopSyntax
1110
1111% \StartSyntax
1112% \S{pseudo procedure}
1113%   \M \FL{resetgraphictextdirective}
1114%   \O \FL{graphictextdirective} \S {string expression}
1115% \StopSyntax
1116
1117% \StartSyntax
1118% \S{internal variable}
1119%   \M \FL{graphictextformat}
1120% \StopSyntax
1121
1122% \stop
1123
1124% \stopsection
1125
1126% \stopchapter
1127
1128% \stopcomponent
1129