diff options
author | Jeffrey H. Kingston <jeff@it.usyd.edu.au> | 2010-09-14 20:36:01 +0000 |
---|---|---|
committer | Jeffrey H. Kingston <jeff@it.usyd.edu.au> | 2010-09-14 20:36:01 +0000 |
commit | 2f4268e5e02216be53cd85816362191373512463 (patch) | |
tree | 57165bf2889337044bc3633854e5aa38f7d89e6b /doc | |
parent | 73d840b9f14b65166b92e6b43f930fd0ef7b8267 (diff) | |
download | lout-2f4268e5e02216be53cd85816362191373512463.tar.gz |
Lout 3.20.
git-svn-id: http://svn.savannah.nongnu.org/svn/lout/trunk@9 9365b830-b601-4143-9ba8-b4a8e2c3339c
Diffstat (limited to 'doc')
-rw-r--r-- | doc/README | 2 | ||||
-rw-r--r-- | doc/design/README | 2 | ||||
-rw-r--r-- | doc/design/outfile.ps | 11703 | ||||
-rw-r--r-- | doc/expert/README | 2 | ||||
-rw-r--r-- | doc/expert/all | 4 | ||||
-rw-r--r-- | doc/expert/exa_bibl | 4 | ||||
-rw-r--r-- | doc/expert/outfile.ps | 16122 | ||||
-rw-r--r-- | doc/expert/preface | 2 | ||||
-rw-r--r-- | doc/slides/README | 2 | ||||
-rw-r--r-- | doc/slides/all | 2 | ||||
-rw-r--r-- | doc/slides/outfile.ps | 4473 | ||||
-rw-r--r-- | doc/user/README | 2 | ||||
-rw-r--r-- | doc/user/all | 7 | ||||
-rw-r--r-- | doc/user/cpp_chan | 91 | ||||
-rw-r--r-- | doc/user/preface | 2 | ||||
-rw-r--r-- | doc/user/prg (renamed from doc/user/cpp) | 43 | ||||
-rw-r--r-- | doc/user/prg_chan | 108 | ||||
-rw-r--r-- | doc/user/prg_comm (renamed from doc/user/cpp_comm) | 2 | ||||
-rw-r--r-- | doc/user/prg_embe (renamed from doc/user/cpp_embe) | 7 | ||||
-rw-r--r-- | doc/user/prg_erro (renamed from doc/user/cpp_erro) | 2 | ||||
-rw-r--r-- | doc/user/prg_lone (renamed from doc/user/cpp_lone) | 5 | ||||
-rw-r--r-- | doc/user/prg_opti (renamed from doc/user/cpp_opti) | 42 | ||||
-rw-r--r-- | doc/user/prg_perl | 108 | ||||
-rw-r--r-- | doc/user/prg_pipe (renamed from doc/user/cpp_pipe) | 0 | ||||
-rw-r--r-- | doc/user/prg_prog (renamed from doc/user/cpp_prog) | 2 | ||||
-rw-r--r-- | doc/user/prg_tabs (renamed from doc/user/cpp_tabs) | 0 | ||||
-rw-r--r-- | doc/user/user.ps | 5202 | ||||
-rw-r--r-- | doc/user/vcpp | 1 | ||||
-rw-r--r-- | doc/user/vprg | 1 |
29 files changed, 37793 insertions, 150 deletions
@@ -15,4 +15,4 @@ slides A Practical Introduction to the Lout Document Formatting user A User's Guide to the Lout Document Formatting System Jeffrey H. Kingston -17 November 1997 +8 April 2000 diff --git a/doc/design/README b/doc/design/README index 1e7a8af..87c660d 100644 --- a/doc/design/README +++ b/doc/design/README @@ -22,4 +22,4 @@ messages (although changing the paper size might produce one or two benign ones). Jeffrey H. Kingston -17 September 1999 +8 April 2000 diff --git a/doc/design/outfile.ps b/doc/design/outfile.ps new file mode 100644 index 0000000..904d913 --- /dev/null +++ b/doc/design/outfile.ps @@ -0,0 +1,11703 @@ +%!PS-Adobe-3.0 +%%Creator: Basser Lout Version 3.20 (April 2000) +%%CreationDate: Sat Apr 8 14:53:13 2000 +%%DocumentData: Binary +%%DocumentNeededResources: (atend) +%%DocumentSuppliedResources: (atend) +%%DocumentMedia: A4 595 842 0 white () +%%PageOrder: Ascend +%%Pages: (atend) +%%BoundingBox: 0 0 595 842 +%%EndComments + +%%BeginProlog +%%BeginResource: procset LoutStartUp +/m { 3 1 roll moveto show } bind def +/mo { 3 1 roll moveto true charpath stroke } bind def +/s { exch currentpoint exch pop moveto show } bind def +/so { exch currentpoint exch pop moveto true charpath stroke } bind def +/k { exch neg 0 rmoveto show } bind def +/ko { exch neg 0 rmoveto true charpath stroke } bind def +/ul { gsave setlinewidth dup 3 1 roll + moveto lineto stroke grestore } bind def +/in { 1440 mul } def +/cm { 567 mul } def +/pt { 20 mul } def +/em { 120 mul } def +/sp { louts mul } def +/vs { loutv mul } def +/ft { loutf mul } def +/dg { } def + +/LoutGraphic { + /louts exch def + /loutv exch def + /loutf exch def + /ymark exch def + /xmark exch def + /ysize exch def + /xsize exch def +} def + +/LoutGr2 { gsave translate LoutGraphic gsave } def + +/LoutFont +{ findfont exch scalefont setfont +} bind def + +/LoutRecode { + { findfont dup length dict begin + {1 index /FID ne {def} {pop pop} ifelse} forall + /Encoding exch def + currentdict end definefont pop + } + stopped pop +} bind def + +/BeginEPSF { + /LoutEPSFState save def + /dict_count countdictstack def + /op_count count 1 sub def + userdict begin + /showpage { } def + 0 setgray 0 setlinecap + 1 setlinewidth 0 setlinejoin + 10 setmiterlimit [] 0 setdash newpath + /languagelevel where + { pop languagelevel + 1 ne + { false setstrokeadjust false setoverprint + } if + } if +} bind def + +/EndEPSF { + count op_count sub { pop } repeat + countdictstack dict_count sub { end } repeat + LoutEPSFState restore +} bind def +%%EndResource + +%%BeginResource: encoding vec2 +/vec2 [ +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright +/parenleft /parenright /asterisk /plus /comma /hyphen /period /slash +/zero /one /two /three /four /five /six /seven +/eight /nine /colon /semicolon /less /equal /greater /question +/at /A /B /C /D /E /F /G +/H /I /J /K /L /M /N /O +/P /Q /R /S /T /U /V /W +/X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore +/quoteleft /a /b /c /d /e /f /g +/h /i /j /k /l /m /n /o +/p /q /r /s /t /u /v /w +/x /y /z /braceleft /bar /braceright /asciitilde /.notdef +/quotesinglbase /quotedblbase /ellipsis /OE /oe /quotedblleft /quotedblright /fi +/fl /endash /emdash /bullet /dagger /daggerdbl /florin /fraction +/dotlessi /grave /acute /circumflex /tilde /macron /breve /dotaccent +/dieresis /.notdef /ring /cedilla /.notdef /hungarumlaut /ogonek /caron +/space /exclamdown /cent /sterling /currency /yen /brokenbar /section +/dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen /registered /macron +/degree /plusminus /twosuperior /threesuperior /acute /mu /paragraph /periodcentered +/cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf /threequarters /questiondown +/Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla +/Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis +/Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply +/Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /germandbls +/agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla +/egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis +/eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide +/oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /ydieresis +] def +%%EndResource + +%%BeginResource: procset LoutTabPrependGraphic +% @PrependGraphic file /export/home/6monthspace/jeff/lout.lib/include/tabf.lpg +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % +% PostScript @SysPrependGraphic file for @Tab % +% % +% To assist in avoiding name clashes, the names % +% of all these symbols begin with "ltab". % +% % +% Jeffrey H. Kingston % +% 24 September 1991 % +% 22 December 1992 % +% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% linewidth ltabhs - +% horizontal single line +/ltabhs +{ 0 0 moveto xsize 0 lineto + setlinewidth 0 setlinecap stroke +} def + +% linewidth ltabhsp - +% horizontal single line with projecting ends +/ltabhsp +{ 0 0 moveto xsize 0 lineto + setlinewidth 2 setlinecap stroke +} def + +% linewidth ltabhd - +% horizontal double line +/ltabhd +{ dup dup + 0 0 moveto xsize 0 lineto + 0 exch 3 mul moveto xsize exch 3 mul lineto + setlinewidth 0 setlinecap stroke +} def + +% linewidth ltabhdb - +% horizontal double line below mark +/ltabhdb +{ dup dup + 0 0 moveto xsize 0 lineto + 0 exch -3 mul moveto xsize exch -3 mul lineto + setlinewidth 0 setlinecap stroke +} def + +% linewidth ltabhdnw - +% horizontal double line with northwest corner +/ltabhdnw +{ dup dup dup dup + 0 0 moveto xsize 0 lineto + xsize exch 3 mul moveto + -3 mul exch 3 mul lineto + -3 mul 0 lineto + setlinewidth 0 setlinejoin 2 setlinecap stroke +} def + +% linewidth ltabhdne - +% horizontal double line with northeast corner +/ltabhdne +{ dup dup dup dup + 0 0 moveto xsize 0 lineto + 0 exch 3 mul moveto + 3 mul xsize add exch 3 mul lineto + 3 mul xsize add 0 lineto + setlinewidth 0 setlinejoin 2 setlinecap stroke +} def + +% linewidth ltabhdsw - +% horizontal double line with southwest corner +/ltabhdsw +{ dup dup dup dup + 0 0 moveto xsize 0 lineto + xsize exch -3 mul moveto + -3 mul exch -3 mul lineto + -3 mul 0 lineto + setlinewidth 0 setlinejoin 2 setlinecap stroke +} def + +% linewidth ltabhdse - +% horizontal double line with southeast corner +/ltabhdse +{ dup dup dup dup + 0 0 moveto xsize 0 lineto + 0 exch -3 mul moveto + 3 mul xsize add exch -3 mul lineto + 3 mul xsize add 0 lineto + setlinewidth 0 setlinejoin 2 setlinecap stroke +} def + +% linewidth ltabvs - +% vertical single line +/ltabvs +{ 0 0 moveto 0 ysize lineto + setlinewidth 0 setlinecap stroke +} def + +% linewidth ltabvd - +% vertical double line +/ltabvd +{ dup dup + 0 0 moveto 0 ysize lineto + -3 mul 0 moveto -3 mul ysize lineto + setlinewidth 0 setlinecap stroke +} def + +% linewidth ltabvdr - +% vertical double line to right of mark +/ltabvdr +{ dup dup + 0 0 moveto 0 ysize lineto + 3 mul 0 moveto 3 mul ysize lineto + setlinewidth 0 setlinecap stroke +} def +%%EndResource + +%%BeginResource: procset LoutFigPrependGraphic +% @PrependGraphic file /export/home/6monthspace/jeff/lout.lib/include/figf.lpg +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % +% PostScript @SysPrependGraphic file for @Fig Jeffrey H. Kingston % +% Version 2.0 (includes CIRCUM label) January 1992 % +% % +% To assist in avoiding name clashes, the names of all symbols % +% defined here begin with "lfig". However, this is not feasible % +% with user-defined labels and some labels used by users. % +% % +% <point> is two numbers, a point. % +% <length> is one number, a length % +% <angle> is one number, an angle in degrees % +% <dashlength> is one number, the preferred length of a dash % +% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +errordict begin + /handleerror + { + { /Times-Roman findfont 8 pt scalefont setfont + 0 setgray 4 pt 4 pt moveto + $error /errorname get + dup lfigdict exch known + { lfigdict exch get } + { 30 string cvs } ifelse + show + ( Command: ) show + $error /command get 30 string cvs show + } stopped {} if + showpage stop + } def +end + +% concat strings: <string> <string> lfigconcat <string> +% must be defined outside lfigdict since used in lfigpromotelabels +/lfigconcat +{ 2 copy length exch length add string + dup 0 4 index putinterval + dup 3 index length 3 index putinterval + 3 1 roll pop pop +} def + +% <string> lfigdebugprint - +% must be defined outside lfigdict since used in arbitrary places +% /lfigdebugprint +% { print +% (; operand stack:\n) print +% count copy +% count 2 idiv +% { == +% (\n) print +% } repeat +% (\n) print +% } def + +/lfigdict 120 dict def +lfigdict begin + +% error messages +/dictfull (dictfull error: too many labels?) def +/dictstackoverflow (dictstackoverflow error: labels nested too deeply?) def +/execstackoverflow (execstackoverflow error: figure nested too deeply?) def +/limitcheck (limitcheck error: figure nested too deeply or too large?) def +/syntaxerror (syntaxerror error: syntax error in text of figure?) def +/typecheck (typecheck error: syntax error in text of figure?) def +/undefined (undefined error: unknown or misspelt label?) def +/VMError (VMError error: run out of memory?) def + +% push pi onto stack: - lfigpi <num> +/lfigpi 3.14159 def + +% arc directions +/clockwise false def +/anticlockwise true def + +% maximum of two numbers: <num> <num> lfigmax <num> +/lfigmax { 2 copy gt { pop } { exch pop } ifelse } def + +% minimum of two numbers: <num> <num> lfigmin <num> +/lfigmin { 2 copy lt { pop } { exch pop } ifelse } def + +% add two points: <point> <point> lfigpadd <point> +/lfigpadd { exch 3 1 roll add 3 1 roll add exch } def + +% subtract first point from second: <point> <point> lfigpsub <point> +/lfigpsub { 3 2 roll sub 3 1 roll exch sub exch } def + +% max two points: <point> <point> lfigpmax <point> +/lfigpmax { exch 3 1 roll lfigmax 3 1 roll lfigmax exch } def + +% min two points: <point> <point> lfigpmin <point> +/lfigpmin { exch 3 1 roll lfigmin 3 1 roll lfigmin exch } def + +% scalar multiplication: <point> <num> lfigpmul <point> +/lfigpmul { dup 3 1 roll mul 3 1 roll mul exch } def + +% point at angle and distance: <point> <length> <angle> lfigatangle <point> +/lfigatangle { 2 copy cos mul 3 1 roll sin mul lfigpadd } def + +% angle from one point to another: <point> <point> lfigangle <angle> +/lfigangle { lfigpsub 2 copy 0 eq exch 0 eq and {pop} {exch atan} ifelse } def + +% distance between two points: <point> <point> lfigdistance <length> +/lfigdistance { lfigpsub dup mul exch dup mul add sqrt } def + +% difference in x coords: <point> <point> lfigxdistance <length> +/lfigxdistance { pop 3 1 roll pop sub } def + +%difference in y coords: <point> <point> lfigydistance <length> +/lfigydistance { 3 1 roll pop sub exch pop } def + +% stroke a solid line: <length> <dashlength> lfigsolid - +/lfigsolid +{ pop pop [] 0 setdash stroke +} def + +% stroke a lfigdashed line: <length> <dashlength> lfigdashed - +/lfigdashed +{ 2 copy div 2 le 1 index 0 le or + { exch pop 1 pt lfigmax [ exch dup ] 0 setdash } + { dup [ exch 4 2 roll 2 copy div + 1 sub 2 div ceiling dup 4 1 roll + 1 add mul sub exch div ] 0 setdash + } ifelse stroke +} def + +% stroke a lfigcdashed line: <length> <dashlength> lfigcdashed - +/lfigcdashed +{ 2 copy le 1 index 0 le or + { exch pop 1 pt lfigmax [ exch dup ] dup 0 get 2 div setdash } + { dup [ 4 2 roll exch 2 copy exch div + 2 div ceiling div 1 index sub + ] exch 2 div setdash + } ifelse stroke +} def + +% stroke a dotted line: <length> <dashlength> lfigdotted - +/lfigdotted +{ 2 copy le 1 index 0 le or + { exch pop 1 pt lfigmax [ exch 0 exch ] 0 setdash } + { 1 index exch div ceiling div + [ 0 3 2 roll ] 0 setdash + } ifelse stroke +} def + +% stroke a noline line: <length> <dashlength> lfignoline - +/lfignoline +{ pop pop +} def + +% painting (i.e. filling): - lfigwhite - (etc.) +/lfignopaint { } def +/lfignochange { fill } def +/lfigdarkblue { 0.0 0.0 0.5 setrgbcolor fill } def +/lfigblue { 0.0 0.0 1.0 setrgbcolor fill } def +/lfiglightblue { 0.5 0.5 1.0 setrgbcolor fill } def +/lfigdarkgreen { 0.0 0.5 0.0 setrgbcolor fill } def +/lfiggreen { 0.0 1.0 0.0 setrgbcolor fill } def +/lfiglightgreen { 0.5 1.0 0.5 setrgbcolor fill } def +/lfigdarkred { 0.5 0.0 0.0 setrgbcolor fill } def +/lfigred { 1.0 0.0 0.0 setrgbcolor fill } def +/lfiglightred { 1.0 0.5 0.5 setrgbcolor fill } def +/lfigdarkcyan { 0.0 0.5 0.5 setrgbcolor fill } def +/lfigcyan { 0.0 1.0 1.0 setrgbcolor fill } def +/lfiglightcyan { 0.5 1.0 1.0 setrgbcolor fill } def +/lfigdarkmagenta { 0.5 0.0 0.5 setrgbcolor fill } def +/lfigmagenta { 1.0 0.0 1.0 setrgbcolor fill } def +/lfiglightmagenta { 1.0 0.5 1.0 setrgbcolor fill } def +/lfigdarkyellow { 0.5 0.5 0.0 setrgbcolor fill } def +/lfigyellow { 1.0 1.0 0.0 setrgbcolor fill } def +/lfiglightyellow { 1.0 1.0 0.5 setrgbcolor fill } def +/lfigdarkgray { 0.2 0.2 0.2 setrgbcolor fill } def +/lfiggray { 0.5 0.5 0.5 setrgbcolor fill } def +/lfiglightgray { 0.8 0.8 0.8 setrgbcolor fill } def +/lfigdarkgrey { 0.2 0.2 0.2 setrgbcolor fill } def +/lfiggrey { 0.5 0.5 0.5 setrgbcolor fill } def +/lfiglightgrey { 0.8 0.8 0.8 setrgbcolor fill } def +/lfigblack { 0.0 0.0 0.0 setrgbcolor fill } def +/lfigwhite { 1.0 1.0 1.0 setrgbcolor fill } def + +% line caps (and joins, not currently used) +/lfigbutt 0 def +/lfiground 1 def +/lfigprojecting 2 def +/lfigmiter 0 def +/lfigbevel 2 def + +% shape and labels of the @Box symbol +/lfigbox +{ + 0 0 /SW lfigpointdef + xsize 0 /SE lfigpointdef + xsize ysize /NE lfigpointdef + 0 ysize /NW lfigpointdef + SE 0.5 lfigpmul /S lfigpointdef + NW 0.5 lfigpmul /W lfigpointdef + W SE lfigpadd /E lfigpointdef + S NW lfigpadd /N lfigpointdef + NE 0.5 lfigpmul /CTR lfigpointdef + [ CTR NE lfigpsub /lfigboxcircum cvx ] lfigcircumdef + SW SE NE NW SW +} def + +% shape and labels of the @CurveBox symbol +/lfigcurvebox +{ + + xsize 0.5 mul ysize 0.5 mul /CTR lfigpointdef + xsize 0.5 mul 0 /S lfigpointdef + xsize ysize 0.5 mul /E lfigpointdef + xsize 0.5 mul ysize /N lfigpointdef + 0 ysize 0.5 mul /W lfigpointdef + + xmark 0.293 mul xmark 0.293 mul /SW lfigpointdef + xsize xmark 0.293 mul sub xmark 0.293 mul /SE lfigpointdef + xsize xmark 0.293 mul sub ysize xmark 0.293 mul sub /NE lfigpointdef + xmark 0.293 mul ysize xmark 0.293 mul sub /NW lfigpointdef + + [ xsize ysize 0.5 lfigpmul xmark /lfigcurveboxcircum cvx ] lfigcircumdef + + xmark 0 + xsize xmark sub 0 + [ xsize xmark sub xmark ] + xsize xmark + xsize ysize xmark sub + [ xsize xmark sub ysize xmark sub ] + xsize xmark sub ysize + xmark ysize + [ xmark ysize xmark sub ] + 0 ysize xmark sub + 0 xmark + [ xmark xmark ] + xmark 0 +} def + +% shadow of the @ShadowBox symbol +% its shape and labels are done, somewhat inaccurately, with lfigbox +/lfigshadow +{ xmark 2 mul 0 moveto xsize 0 lineto + xsize ysize xmark 2 mul sub lineto + xsize xmark sub ysize xmark 2 mul sub lineto + xsize xmark sub xmark lineto + xmark 2 mul xmark lineto closepath fill +} def + +% shape and labels of the @Square symbol +/lfigsquare +{ + xsize ysize 0.5 lfigpmul /CTR lfigpointdef + CTR xsize xsize ysize ysize lfigpmax 0.5 lfigpmul lfigpadd /NE lfigpointdef + CTR 0 0 CTR NE lfigdistance 135 lfigatangle lfigpadd /NW lfigpointdef + CTR 0 0 CTR NE lfigdistance 225 lfigatangle lfigpadd /SW lfigpointdef + CTR 0 0 CTR NE lfigdistance 315 lfigatangle lfigpadd /SE lfigpointdef + SW 0.5 lfigpmul SE 0.5 lfigpmul lfigpadd /S lfigpointdef + NW 0.5 lfigpmul NE 0.5 lfigpmul lfigpadd /N lfigpointdef + SW 0.5 lfigpmul NW 0.5 lfigpmul lfigpadd /W lfigpointdef + SE 0.5 lfigpmul NE 0.5 lfigpmul lfigpadd /E lfigpointdef + [ CTR NE lfigpsub /lfigboxcircum cvx ] lfigcircumdef + SW SE NE NW SW +} def + +% shape and labels of the @Diamond symbol +/lfigdiamond +{ + xsize 0 0.5 lfigpmul /S lfigpointdef + 0 ysize 0.5 lfigpmul /W lfigpointdef + S W lfigpadd /CTR lfigpointdef + CTR W lfigpadd /N lfigpointdef + CTR S lfigpadd /E lfigpointdef + [ xsize ysize 0.5 lfigpmul /lfigdiamondcircum cvx ] lfigcircumdef + S E N W S +} def + +% shape and labels of the @Ellipse symbol +/lfigellipse +{ + xsize 0 0.5 lfigpmul /S lfigpointdef + 0 ysize 0.5 lfigpmul /W lfigpointdef + S W lfigpadd /CTR lfigpointdef + CTR W lfigpadd /N lfigpointdef + CTR S lfigpadd /E lfigpointdef + CTR xsize 0 0.3536 lfigpmul lfigpadd 0 ysize 0.3536 lfigpmul lfigpadd /NE lfigpointdef + 0 ysize 0.3536 lfigpmul CTR xsize 0 0.3536 lfigpmul lfigpadd lfigpsub /SE lfigpointdef + xsize 0 0.3536 lfigpmul CTR lfigpsub 0 ysize 0.3536 lfigpmul lfigpadd /NW lfigpointdef + 0 ysize 0.3536 lfigpmul xsize 0 0.3536 lfigpmul CTR lfigpsub lfigpsub /SW lfigpointdef + [ xsize ysize 0.5 lfigpmul /lfigellipsecircum cvx ] lfigcircumdef + S [ CTR ] E [ CTR ] N [ CTR ] W [ CTR ] S +} def + +% shape and labels of the @Circle symbol +/lfigcircle +{ + xsize ysize 0.5 lfigpmul /CTR lfigpointdef + CTR xsize 0 ysize 0 lfigpmax 0.5 lfigpmul lfigpadd /E lfigpointdef + CTR 0 0 CTR E lfigdistance 45 lfigatangle lfigpadd /NE lfigpointdef + CTR 0 0 CTR E lfigdistance 90 lfigatangle lfigpadd /N lfigpointdef + CTR 0 0 CTR E lfigdistance 135 lfigatangle lfigpadd /NW lfigpointdef + CTR 0 0 CTR E lfigdistance 180 lfigatangle lfigpadd /W lfigpointdef + CTR 0 0 CTR E lfigdistance 225 lfigatangle lfigpadd /SW lfigpointdef + CTR 0 0 CTR E lfigdistance 270 lfigatangle lfigpadd /S lfigpointdef + CTR 0 0 CTR E lfigdistance 315 lfigatangle lfigpadd /SE lfigpointdef + [ S E lfigpsub /lfigellipsecircum cvx ] lfigcircumdef + S [ CTR ] E [ CTR ] N [ CTR ] W [ CTR ] S +} def + +% shape and labels of the @HLine and @HArrow symbols +/lfighline +{ + 0 ymark lfigprevious /FROM lfigpointdef + xsize ymark lfigprevious /TO lfigpointdef +} def + +% shape and labels of the @VLine and @VArrow symbols +/lfigvline +{ + xmark ysize lfigprevious /FROM lfigpointdef + xmark 0 lfigprevious /TO lfigpointdef +} def + +% points of a polygon around base with given no of sides, vert init angle: +% <sides> <angle> figpolygon <point> ... <point> +/lfigpolygon +{ xsize ysize 0.5 lfigpmul /CTR lfigpointdef + 90 sub CTR 2 copy lfigmax 5 3 roll + [ 4 copy pop /lfigpolycircum cvx ] lfigcircumdef + exch dup 360 exch div exch + 1 1 3 2 roll + { 4 string cvs (P) exch lfigconcat cvn + 6 copy pop pop lfigatangle 2 copy 10 2 roll + 3 2 roll lfigpointdef + dup 3 1 roll add exch + } for + pop lfigatangle +} def + +% next array element: <array> <index> lfiggetnext <array> <index> <any> true +% or <array> <index> false +/lfiggetnext +{ 2 copy exch length ge + { false } + { 2 copy get exch 1 add exch true } ifelse +} def + +% check whether thing is number: <any> lfigisnumbertype <any> <bool> +/lfigisnumbertype +{ dup type dup + /integertype eq exch /realtype eq or +} def + +% check whether thing is an array: <any> lfigisarraytype <any> <bool> +/lfigisarraytype { dup type /arraytype eq } def + +% get next item: <array> <index> lfiggetnextitem <array> <index> 0 +% or <array> <index> <array> 1 +% or <array> <index> <point> 2 +/lfiggetnextitem +{ lfiggetnext + { lfigisarraytype + { 1 + } + { lfigisnumbertype + { 3 1 roll + lfiggetnext + { lfigisnumbertype + { 4 3 roll exch 2 + } + { pop 3 2 roll pop 0 + } ifelse + } + { 3 2 roll pop 0 + } ifelse + } + { pop 0 + } ifelse + } ifelse + } + { 0 + } ifelse +} def + +% set arc path: bool x1 y1 x2 y2 x0 y0 lfigsetarc <angle> <angle> <dist> +% the path goes from x1 y1 to x2 y2 about centre x0 y0, +% anticlockwise if bool is true else clockwise. +% The orientations of backwards pointing and forwards pointing +% arrowheads are returned in the two angles, and +% the length of the arc is returned in <dist>. +/lfigsetarc +{ + 20 dict begin + matrix currentmatrix 8 1 roll + 2 copy translate 2 copy 8 2 roll + 4 2 roll lfigpsub 6 2 roll lfigpsub + dup /y1 exch def dup mul /y1s exch def + dup /x1 exch def dup mul /x1s exch def + dup /y2 exch def dup mul /y2s exch def + dup /x2 exch def dup mul /x2s exch def + + y1s y2s eq + { -1 + } + { y1s x2s mul y2s x1s mul sub y1s y2s sub div + } ifelse + /da exch def + + x1s x2s eq + { -1 + } + { x1s y2s mul x2s y1s mul sub x1s x2s sub div + } ifelse + /db exch def + + da 0 gt db 0 gt and + { /LMax da sqrt db sqrt lfigmax def + /scalex da sqrt LMax div def + /scaley db sqrt LMax div def + scalex scaley scale + 0 0 LMax + 0 0 x1 scalex mul y1 scaley mul lfigangle + 0 0 x2 scalex mul y2 scaley mul lfigangle + 2 copy eq { 360 add } if + 2 copy 8 2 roll + 5 index { arc } { arcn } ifelse + 2 index 1 index + { 90 sub } { 90 add } ifelse + dup sin scaley mul exch cos scalex mul atan + 2 index 2 index + { 90 add } { 90 sub } ifelse + dup sin scaley mul exch cos scalex mul atan + 5 2 roll % res1 res2 ang1 ang2 anticlockwise + { exch sub } { sub } ifelse + dup 0 le { 360 add } if lfigpi mul LMax mul 180 div + } + { 0 0 x1 y1 lfigdistance 0 0 x2 y2 lfigdistance eq + 0 0 x1 y1 lfigdistance 0 gt and + { 0 0 + 0 0 x1 y1 lfigdistance + 0 0 x1 y1 lfigangle + 0 0 x2 y2 lfigangle + 2 copy eq { 360 add } if + 2 copy 8 2 roll + 5 index { arc } { arcn } ifelse + 2 index 1 index + { 90 sub } { 90 add } ifelse + 2 index 2 index + { 90 add } { 90 sub } ifelse + 5 2 roll % res1 res2 ang1 ang2 clockwise + { exch sub } { sub } ifelse + dup 0 le { 360 add } if lfigpi mul 0 0 x1 y1 lfigdistance mul 180 div + } + { x2 y2 lineto pop + x2 y2 x1 y1 lfigangle + x1 y1 x2 y2 lfigangle + x1 y1 x2 y2 lfigdistance + } ifelse + } ifelse + 4 -1 roll setmatrix + end +} def + +% lfigsetcurve: set up a Bezier curve from x0 y0 to x3 y3 +% and return arrowhead angles and length of curve (actually 0) +% x0 y0 x1 y1 x2 y2 x3 y3 lfigsetcurve <angle> <angle> <length> +/lfigsetcurve +{ 8 copy curveto pop pop + lfigangle + 5 1 roll + 4 2 roll lfigangle + exch + 0 +} def + +% lfigpaintpath: paint a path of the given shape +% /paint [ shape ] lfigpaintpath - +/lfigpaintpath +{ + 10 dict begin + 0 newpath + /prevseen false def + /curveseen false def + { lfiggetnextitem + dup 0 eq { pop exit } + { 1 eq + { /curveseen true def + /curve exch def + curve length 0 eq { /curveseen false def } if + } + { /ycurr exch def + /xcurr exch def + prevseen + { curveseen + { curve length 4 eq + { xprev yprev + curve 0 get curve 1 get + curve 2 get curve 3 get + xcurr ycurr + lfigsetcurve pop pop pop + } + { xprev yprev xcurr ycurr + curve length 1 ge { curve 0 get } { 0 } ifelse + curve length 2 ge { curve 1 get } { 0 } ifelse + curve length 3 ge { curve 2 get } { true } ifelse + 7 1 roll + lfigsetarc pop pop pop + } ifelse + } + { xcurr ycurr lineto + } ifelse + } + { xcurr ycurr moveto + } ifelse + /xprev xcurr def + /yprev ycurr def + /prevseen true def + /curveseen false def + } ifelse + } ifelse + } loop pop pop cvx exec + end +} def + +% stroke a path of the given shape in the given linestyle and dash length. +% Return the origin and angle of the backward and forward arrow heads. +% dashlength /linestyle [shape] lfigdopath [<point> <angle>] [<point> <angle>] +/lfigdopath +{ + 10 dict begin + 0 + /prevseen false def + /curveseen false def + /backarrow [] def + /fwdarrow [] def + { + lfiggetnextitem + dup 0 eq { pop exit } + { + 1 eq + { /curveseen true def + /curve exch def + curve length 0 eq { /prevseen false def } if + } + { /ycurr exch def + /xcurr exch def + prevseen + { newpath xprev yprev moveto + curveseen + { curve length 4 eq + { xprev yprev + curve 0 get curve 1 get + curve 2 get curve 3 get + xcurr ycurr lfigsetcurve + } + { xprev yprev xcurr ycurr + curve length 1 ge { curve 0 get } { 0 } ifelse + curve length 2 ge { curve 1 get } { 0 } ifelse + curve length 3 ge { curve 2 get } { true } ifelse + 7 1 roll + lfigsetarc + } ifelse + } + { xcurr ycurr lineto + xcurr ycurr xprev yprev lfigangle dup 180 sub + xprev yprev xcurr ycurr lfigdistance + } ifelse + 6 index 6 index cvx exec + [ xprev yprev 5 -1 roll ] + backarrow length 0 eq + { /backarrow exch def } + { pop } ifelse + [ xcurr ycurr 4 -1 roll ] /fwdarrow exch def + } if + /xprev xcurr def + /yprev ycurr def + /prevseen true def + /curveseen false def + } ifelse + } ifelse + } loop + pop pop pop pop + backarrow length 0 eq { [ 0 0 0 ] } { backarrow } ifelse + fwdarrow length 0 eq { [ 0 0 0 ] } { fwdarrow } ifelse + end +} def + +% lfigdoarrow: draw an arrow head of given form +% dashlength /lstyle /pstyle hfrac height width [ <point> <angle> ] lfigdoarrow - +/lfigdoarrow +{ matrix currentmatrix 8 1 roll + dup 0 get 1 index 1 get translate + 2 get rotate + [ 2 index neg 2 index 0 0 + 3 index 3 index neg + 1 index 10 index mul 0 + 7 index 7 index ] + 4 1 roll pop pop pop + dup 3 1 roll + gsave lfigpaintpath grestore lfigdopath pop pop + setmatrix +} def + +% arrow head styles +/lfigopen 0.0 def +/lfighalfopen 0.5 def +/lfigclosed 1.0 def + +% stroke no arrows, forward, back, and both +/lfignoarrow { pop pop pop pop pop pop pop pop } def +/lfigforward { 7 -1 roll lfigdoarrow pop } def +/lfigback { 8 -2 roll pop lfigdoarrow } def +/lfigboth { 8 -1 roll 7 copy lfigdoarrow pop 7 -1 roll lfigdoarrow } def + +% lfigprevious: return previous point on path +/lfigprevious +{ lfigisnumbertype + { 2 copy } + { lfigisarraytype + { 2 index 2 index } + { 0 0 } + ifelse + } ifelse +} def + +% label a point in 2nd top dictionary: <point> /name lfigpointdef - +/lfigpointdef +{ + % (Entering lfigpointdef) lfigdebugprint + [ 4 2 roll transform + /itransform cvx ] cvx + currentdict end + 3 1 roll + % currentdict length currentdict maxlength lt + % { def } + % { exec moveto (too many labels) show stop } + % ifelse + def + begin + % (Leaving lfigpointdef) lfigdebugprint +} def + +% promote labels from second top to third top dictionary +% <string> lfigpromotelabels - +/lfigpromotelabels +{ + % (Entering lfigpromotelabels) lfigdebugprint + currentdict end exch currentdict end + { exch 20 string cvs 2 index + (@) lfigconcat exch lfigconcat cvn exch def + } forall pop begin + % (Leaving lfigpromotelabels) lfigdebugprint +} def + +% show labels (except CIRCUM): - lfigshowlabels - +/lfigshowlabels +{ + % (Entering lfigshowlabels) lfigdebugprint + currentdict end + currentdict + { 1 index 20 string cvs (CIRCUM) search % if CIRCUM in key + { pop pop pop pop pop } + { pop cvx exec 2 copy + newpath 1.5 pt 0 360 arc + 0 setgray fill + /Times-Roman findfont 8 pt scalefont setfont + moveto 0.2 cm 0.1 cm rmoveto 20 string cvs show + } + ifelse + } forall + begin + % (Leaving lfigshowlabels) lfigdebugprint +} def + +% fix an angle to 0 <= res < 360: <angle> lfigfixangle <angle> +/lfigfixangle +{ + % (Entering lfigfixangle) lfigdebugprint + { dup 0 ge { exit } if + 360 add + } loop + { dup 360 lt { exit } if + 360 sub + } loop + % (Leaving lfigfixangle) lfigdebugprint +} def + +% find point on circumference of box: alpha a b lfigboxcircum x y +/lfigboxcircum +{ + % (Entering lfigboxcircum) lfigdebugprint + 4 dict begin + /b exch def + /a exch def + lfigfixangle /alpha exch def + 0 0 a b lfigangle /theta exch def + + % if alpha <= theta, return (a, a*tan(alpha)) + alpha theta le + { a a alpha sin mul alpha cos div } + { + % else if alpha <= 180 - theta, return (b*cot(alpha), b) + alpha 180 theta sub le + { b alpha cos mul alpha sin div b } + { + % else if alpha <= 180 + theta, return (-a, -a*tan(alpha)) + alpha 180 theta add le + { a neg a neg alpha sin mul alpha cos div } + { + % else if alpha <= 360 - theta, return (-b*cot(alpha), -b) + alpha 360 theta sub le + { b neg alpha cos mul alpha sin div b neg } + { + % else 360 - theta <= alpha, return (a, a*tan(alpha)) + a a alpha sin mul alpha cos div + } ifelse + } ifelse + } ifelse + } ifelse + end + % (Leaving lfigboxcircum) lfigdebugprint +} def + +% find quadratic roots (assume a != 0): a b c lfigqroots x1 x2 2 +% or x2 1 +% or 0 +/lfigqroots +{ + 4 dict begin + /c exch def + /b exch def + /a exch def + /disc b b mul 4 a c mul mul sub def + disc 0 lt + { 0 + } + { disc 0 eq + { b neg 2 a mul div + 1 + } + { b neg disc sqrt add 2 a mul div + b neg disc sqrt sub 2 a mul div + 2 + } + ifelse + } + ifelse + end +} def + +% work our which quadrant: <angle> lfigquadrant <0-3> +/lfigquadrant +{ dup 90 lt + { pop 0 + } + { dup 180 lt + { pop 1 + } + { 270 lt + { 2 + } + { 3 + } ifelse + } ifelse + } ifelse +} def + +% find curvebox circum, assuming upper right quadrant: alpha a b xmk lfigcb x y +/lfigcb +{ + 6 dict begin + /xmk exch def + /b exch def + /a exch def + /alpha exch def + /theta1 0 0 a b xmk sub lfigangle def + /theta2 0 0 a xmk sub b lfigangle def + alpha theta1 le + { % if alpha <= theta1, return (a, a*tan(alpha)) + a a alpha sin mul alpha cos div + } + { alpha theta2 ge + { % else if alpha > theta2, return (b*cot(alpha), b) + b alpha cos mul alpha sin div b + } + { + % else, return the intersection of line and circle + a xmk sub b xmk sub xmk 0 0 alpha lfigcircleintersect + dup 0 eq + { % should never happen, just return any reasonable point + pop + a b 0.5 lfigpmul + } + { 1 eq + { % should never happen, just return the point on top of stack + } + { % the usual case, two points on stack, return the larger + lfigpmax + } ifelse + } ifelse + } ifelse + } ifelse + end +} def + +% find point on circumference of curvebox: alpha a b xmk lfigcurveboxcircum x y +/lfigcurveboxcircum +{ + % (Entering lfigcurveboxcircum) lfigdebugprint + 5 dict begin + /xmk exch def + /b exch def + /a exch def + lfigfixangle /alpha exch def + + % work out which quadrant we are in, and reflect accordingly + /quad alpha lfigquadrant def + quad 0 eq + { alpha a b xmk lfigcb + } + { quad 1 eq + { 180 alpha sub a b xmk lfigcb exch neg exch + } + { quad 2 eq + { alpha 180 sub a b xmk lfigcb neg exch neg exch + } + { 360 alpha sub a b xmk lfigcb neg + } ifelse + } ifelse + } ifelse + end + % (Leaving lfigcurveboxcircum) lfigdebugprint +} def + +% find point on circumference of diamond: alpha a b lfigdiamondcircum x y +/lfigdiamondcircum +{ + % (Entering lfigdiamondcircum) lfigdebugprint + 4 dict begin + /b exch def + /a exch def + lfigfixangle /alpha exch def + b alpha cos abs mul a alpha sin abs mul add /denom exch def + a b mul alpha cos mul denom div + a b mul alpha sin mul denom div + end + % (Leaving lfigdiamondcircum) lfigdebugprint +} def + +% find point on circumference of ellipse: alpha a b lfigellipsecircum x y +/lfigellipsecircum +{ + % (Entering lfigellipsecircum) lfigdebugprint + 4 dict begin + /b exch def + /a exch def + lfigfixangle /alpha exch def + b alpha cos mul dup mul a alpha sin mul dup mul add sqrt /denom exch def + a b mul alpha cos mul denom div + a b mul alpha sin mul denom div + end + % (Leaving lfigellipsecircum) lfigdebugprint +} def + +% find point of intersection of two lines each defined by two points +% x1 y1 x2 y2 x3 y3 x4 y4 lfiglineintersect x y +/lfiglineintersect +{ + % (Entering lfiglineintersect) lfigdebugprint + 13 dict begin + /y4 exch def + /x4 exch def + /y3 exch def + /x3 exch def + /y2 exch def + /x2 exch def + /y1 exch def + /x1 exch def + x2 x1 sub /x21 exch def + x4 x3 sub /x43 exch def + y2 y1 sub /y21 exch def + y4 y3 sub /y43 exch def + y21 x43 mul y43 x21 mul sub /det exch def + + % calculate x + y21 x43 mul x1 mul + y43 x21 mul x3 mul sub + y3 y1 sub x21 mul x43 mul add + det div + + % calculate y + x21 y43 mul y1 mul + x43 y21 mul y3 mul sub + x3 x1 sub y21 mul y43 mul add + det neg div + + end + % (Leaving lfiglineintersect) lfigdebugprint +} def + +% find point on circumference of polygon +% alpha radius num theta lfigpolycircum x y +/lfigpolycircum +{ + % (Entering lfigpolycircum) lfigdebugprint + 13 dict begin + /theta exch def + /num exch def + /radius exch def + /alpha exch def + + % calculate delta, the angle from theta to alpha + alpha theta sub lfigfixangle + + % calculate the angle which is the multiple of 360/num closest to delta + 360 num div div truncate 360 num div mul theta add /anglea exch def + + % calculate the next multiple of 360/num after anglea + anglea 360 num div add /angleb exch def + + % intersect the line through these two points with the alpha line + anglea cos anglea sin angleb cos angleb sin + 0 0 alpha cos 2 mul alpha sin 2 mul + lfiglineintersect radius lfigpmul + + end + % (Leaving lfigpolycircum) lfigdebugprint +} def + +% find point of intersection of a point and a circle +% x0 y0 r x1 y1 theta lfigcircleintersect xa ya xb yb 2 +% or xb yb 1 +% or 0 +/lfigcircleintersect +{ + % (Entering lfigcircleintersect) lfigdebugprint + 15 dict begin + /theta exch def + /y1 exch def + /x1 exch def + /r exch def + /y0 exch def + /x0 exch def + + % if sin(theta) = 0 then line is horizontal and y must be y1 + theta sin abs 0.00001 lt + { + /a 1 def + /b -2 x0 mul def + /c x0 dup mul y1 y0 sub dup mul add r dup mul sub def + a b c lfigqroots dup + 0 eq + { pop + 0 + } + { 1 eq + { y1 1 + } + { y1 exch y1 2 + } ifelse + } ifelse + } + { + /ct theta cos theta sin div def + /a ct ct mul 1 add def + /b ct x1 x0 sub mul y1 add y0 sub 2 mul def + /c x1 x0 sub dup mul y1 y0 sub dup mul add r dup mul sub def + a b c lfigqroots dup + 0 eq + { pop + 0 + } + { 1 eq + { y1 add /yb exch def + yb y1 sub ct mul x1 add /xb exch def + xb yb 1 + } + { y1 add /ya exch def + ya y1 sub ct mul x1 add /xa exch def + y1 add /yb exch def + yb y1 sub ct mul x1 add /xb exch def + xa ya xb yb 2 + } ifelse + } ifelse + } ifelse + end + % (Leaving lfigcircleintersect) lfigdebugprint +} def + +% add CIRCUM operator with this body: <array> lfigcircumdef - +/lfigcircumdef +{ % (Entering lfigcircumdef) lfigdebugprint + /CIRCUM exch cvx + currentdict end + 3 1 roll + % currentdict length currentdict maxlength lt + % { def } + % { exec moveto (too many labels) show stop } + % ifelse + def + begin + % (Leaving lfigcircumdef) lfigdebugprint +} def + +end +%%EndResource + +%%BeginResource: procset LoutBasicSetup +% @PrependGraphic file /export/home/6monthspace/jeff/lout.lib/include/bsf.lpg + +% width height linethickness louteuro - +% draw a Euro symbol of this width and height with this line thickness +/louteuro { + 20 dict begin + /eurothick exch def + /euroheight exch def + /eurowidth exch def + /eurostrokewidth euroheight 0.8 mul def + /eurostep eurothick 60 cos mul 60 sin div def + /eurotheta 40 def + + % llx lly width thickness louteurobox - + % draw angled box starting at (llx, lly) with given width and thickness + /louteurobox + { + /euroboxthick exch def + /euroboxwidth exch def + newpath moveto euroboxwidth 0 rlineto + eurostep euroboxthick rlineto + euroboxwidth neg 0 rlineto closepath fill + } def + + % lower cross stroke + 0 euroheight 2 div eurothick 1.5 mul sub + eurostrokewidth eurothick louteurobox + + % upper cross stroke + 0 euroheight 2 div eurothick 0.5 mul add + eurostrokewidth eurostep 2 mul add eurothick louteurobox + + % circular part + /eurohctr eurowidth euroheight 2 div eurotheta cos mul sub def + /eurovctr euroheight 2 div def + newpath + eurohctr eurovctr eurovctr eurotheta 350 eurotheta sub arc + eurohctr eurovctr eurovctr eurothick sub 365 eurotheta sub eurotheta arcn + closepath fill + end +} def + +% path for @FullWidthRule symbol +/LoutRule +{ 0 0 moveto xsize 0 lineto +} def + +% path for @Box symbol +/LoutBox +{ 0 0 moveto xsize 0 lineto + xsize ysize lineto 0 ysize lineto + closepath +} def + +% path for @CurveBox symbol +/LoutCurveBox +{ xmark 0 moveto + xsize xmark sub xmark xmark 270 360 arc + xsize xmark sub ysize xmark sub xmark 0 90 arc + xmark ysize xmark sub xmark 90 180 arc + xmark xmark xmark 180 270 arc + closepath +} def + +% path for @ShadowBox symbol +/LoutShadowBox +{ xmark 2 mul 0 moveto xsize 0 lineto + xsize ysize xmark 2 mul sub lineto + xsize xmark sub ysize xmark 2 mul sub lineto + xsize xmark sub xmark lineto + xmark 2 mul xmark lineto + closepath +} def + +% set up dictionary containing margin note data: parity LoutMargSet - +/LoutMargSet +{ /LoutMargDict 12 dict def + LoutMargDict begin + /parity exch def + /matr matrix currentmatrix def + /rightx xsize def + /lefty ysize def % highest allowable point for top of next left note + /righty ysize def % highest allowable point for top of next right note + /max { 2 copy gt { pop } { exch pop } ifelse } def + /min { 2 copy lt { pop } { exch pop } ifelse } def + end +} def + +%translate coordinate system for marginal notes: type LoutMargShift - +% where type 0 is left margin, 1 is right margin, 2 is outer, 3 is inner +/LoutMargShift +{ LoutMargDict begin + + % y coordinate of top of note, in margin coords, before vertical adjust + 0 ysize transform matr itransform exch pop + + % decide whether left or right margin based on type and parity + exch [ 0 1 parity 1 parity sub ] exch get 0 eq + { + % left margin: adjust top of note downwards if overlaps previous note + lefty min + + % bottom of note is new lefty position and also translate position + ysize sub dup /lefty exch def + + % want right edge of note at coordinate zero + xsize neg exch + } + { + % right margin: adjust top of note downwards if overlaps previous note + righty min + + % bottom of note is new righty position and also translate position + ysize sub dup /righty exch def + + % want left edge of note at coordinate rightx + rightx exch + } ifelse + + % stack now contains coord of bottom left corner in margin coordinates + matr setmatrix translate + end +} def + +% create LoutPageDict with left, right, foot, top for @Place symbol users +/LoutPageSet +{ + /LoutPageDict 5 dict def + LoutPageDict begin + /matr matrix currentmatrix def + /left 0 def + /right xsize def + /foot 0 def + /top ysize def + end + +} def + +%%EndResource + +%%EndProlog + +%%BeginSetup +%%IncludeResource: font Times-Roman +/Times-Romanfnt82 vec2 /Times-Roman LoutRecode +/fnt82 { /Times-Romanfnt82 LoutFont } def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +%%EndSetup + +%%Page: i 1 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +%%+ font Times-Italic +/pgsave save def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup + +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +1 LoutMargSet +grestore +240 fnt84 2897 12401(The)m 3352(Design)s 4099(and)s 4540(Implementation)s +4239 11998(of)m 4511(the)s 2589 11595(Lout)m 3141(Document)s 4250(F)s 6(ormatting)k +5468(Language)s 240 fnt83 3630 11097(J)m 6(ef)k 4(fr)k 8(e)k 7(y)k +4310(H.)s 4577(Kingston)s 240 fnt82 2551 10596(Basser)m 3248(Department)s +4436(of)s 4707(Computer)s 5724(Science,)s 3007 10308(The)m 3435(Uni)s 6(v)k 3(ersity)k +4489(of)s 4760(Sydne)s 3(y)k 5530(2006,)s 4095 10020(Australia)m +3739 9568(27)m 4027(January)s 15(,)k 4863(1993)s 240 fnt84 +0 8775(SUMMAR)m 8(Y)k 240 fnt82 0 8320(Lout)m 543(is)s +784(a)s 982(high-le)s 6(v)k 3(el)k 2028(language)s +2979(for)s 3349(document)s 4384(formatting,)s 5530(whose)s 6230(ease)s +6728(of)s 7030(use)s 7437(has)s 7838(permitted)s 8843(an)s +0 8032(unprecedented)m 1501(number)s 2340(of)s 2659(adv)s 6(anced)k +3663(features)s 4517(to)s 4804(be)s 5134(added)s 5812(quickly)s +6632(and)s 7084(reliably)s 15(.)k 8010(This)s 8535(paper)s +0 7744(charts)m 625(the)s 978(e)s 6(v)k 4(olution)k +1933(of)s 2209(the)s 2561(design)s 3248(and)s 3656(implementation)s +5218(of)s 5493(Lout)s 6010(from)s 6538(conception)s 7650(in)s +7897(mid-1984)s 8887(to)s 0 7456(public)m 672(release)s 1412(in)s +1677(October)s 2529(1991.)s 3194(It)s 3421(includes)s 4291(e)s 3(xtensi)k 6(v)k 3(e)k +5260(discussions)s 6422(of)s 6715(remaining)s 7759(problems)s 8722(and)s +0 7168(possible)m 840(solutions.)s 240 fnt84 0 6664(K)m 6(eyw)k 2(ords)k +240 fnt82 1143 6665(document)m 2147(formatting)s 3208(typesetting)s +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 1 2 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +%%+ font Times-Italic +/pgsave save def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +1 LoutMargSet +grestore +240 fnt84 2897 12401(The)m 3352(Design)s 4099(and)s 4540(Implementation)s +4239 11998(of)m 4511(the)s 2589 11595(Lout)m 3141(Document)s 4250(F)s 6(ormatting)k +5468(Language)s 240 fnt83 3630 11097(J)m 6(ef)k 4(fr)k 8(e)k 7(y)k +4310(H.)s 4577(Kingston)s 240 fnt82 2551 10596(Basser)m 3248(Department)s +4436(of)s 4707(Computer)s 5724(Science,)s 3007 10308(The)m 3435(Uni)s 6(v)k 3(ersity)k +4489(of)s 4760(Sydne)s 3(y)k 5530(2006,)s 4095 10020(Australia)m +3739 9568(27)m 4027(January)s 15(,)k 4863(1993)s 240 fnt84 +0 8926(1.)m 291(Intr)s 4(oduction)k 240 fnt82 480 8495(Lout)m +985([1,)s 1284(2])s 1515(is)s 1718(a)s 1877(high-le)s 6(v)k 3(el)k +2885(language)s 3798(for)s 4129(document)s 5126(formatting,)s 6234(designed)s +7136(and)s 7533(implemented)s 8832(by)s 0 8207(the)m 341(author)s 13(.)k +1096(The)s 1517(implementation,)s 3117(kno)s 6(wn)k 3814(as)s +4057(Basser)s 4747(Lout,)s 5299(is)s 5502(a)s 5661(fully)s +6159(operational)s 7282(production)s 8368(v)s 3(ersion)k 0 7919(written)m +736(in)s 983(C)s 1198(for)s 1540(the)s 1891(Unix)s +2429(operating)s 3389(system,)s 153 fnt82 4100 8008(1)m 240 fnt82 +4223 7919(which)m 4869(translates)s 5824(Lout)s 6340(source)s 7023(code)s +7535(into)s 7964(PostScript,)s 153 fnt82 8993 8008(2)m 240 fnt82 +0 7631(a)m 201(de)s 6(vice-independent)k 2164(graphics)s 3061(rendering)s +4066(language)s 5021(accepted)s 5951(by)s 6281(man)s 3(y)k +6900(high-resolution)s 8454(output)s 0 7343(de)m 6(vices,)k 833(including)s +1805(most)s 2346(laser)s 2871(printers.)s 3779(Basser)s 4492(Lout)s +5019(is)s 5244(a)s 4(v)k 6(ailable)k 6168(free)s +6609(of)s 6895(char)s 4(ge)k 7600([3].)s 8057(It)s +8278(includes)s 0 7055(installation)m 1118(instructions,)s 2339(C)s 2550(source,)s +3281(se)s 6(v)k 3(en)k 3873(standard)s 4740(packages,)s +5723(and)s 6127(complete)s 7058(documentation)s 8536(in)s 8778(the)s +0 6767(form)m 524(of)s 795(six)s 1129(technical)s 2046(reports)s +2760(and)s 3164(a)s 3330(manual)s 4089(page.)s 480 6393(The)m +900(Lout)s 1404(project)s 2118(arose)s 2670(out)s 3027(of)s +3290(the)s 3629(author')s 13(s)k 4442(desire)s 5060(to)s +5290(bring)s 5840(to)s 6070(document)s 7066(formatting)s 8118(languages)s +0 6105(the)m 343(ele)s 3(g)k 1(ance)k 1225(of)s +1491(e)s 3(xpression)k 2562(found)s 3174(in)s 3411(programming)s +4761(languages)s 5763(lik)s 2(e)k 6170(Algol-)s 6783(60)s +7072(and)s 7471(P)s 3(ascal.)k 8236(This)s 8706(em)s +8998(-)s 0 5817(phasis)m 638(on)s 924(e)s 3(xpressi)k 6(v)k 3(eness)k +2373(has)s 2731(produced)s 3669(an)s 3941(order)s 4493(of)s +4753(magnitude)s 5808(reduction)s 6757(in)s 6988(the)s 7325(cost)s +7759(of)s 8018(de)s 6(v)k 3(eloping)k 0 5529(document)m +998(formatting)s 2053(applications.)s 3366(F)s 3(or)k 3748(e)s 3(xample,)k +4656(an)s 4933(equation)s 5807(formatting)s 6862(application,)s 8025(which)s +8660(may)s 0 5241(be)m 282(dif\207cult)s 1098(or)s 1357(impossible)s +2449(to)s 2688(add)s 3092(to)s 3331(other)s 3882(systems,)s +4746(can)s 5135(be)s 5417(written)s 6150(in)s 6393(Lout)s +6905(in)s 7148(a)s 7314(fe)s 6(w)k 7720(days.)s +480 4867(When)m 1099(e)s 3(xpert)k 1742(users)s 2274(can)s +2652(implement)s 3724(such)s 4209(applications)s 5405(quickly)s 15(,)k +6204(non-)s 6632(e)s 3(xperts)k 7360(bene\207t.)s 8164(Although)s +0 4579(Lout)m 509(itself)s 1053(pro)s 3(vides)k 1922(only)s +2398(a)s 2560(small)s 3129(k)s 2(ernel)k 3775(of)s +4042(carefully)s 4941(chosen)s 5659(primiti)s 6(v)k 3(es,)k +6721(packages)s 7646(written)s 8375(in)s 8614(Lout)s 0 4291(and)m +399(distrib)s 4(uted)k 1470(with)s 1946(Basser)s 2638(Lout)s +3145(pro)s 3(vide)k 3923(an)s 4201(unprecedented)s 5649(array)s +6187(of)s 6453(adv)s 6(anced)k 7404(features)s 8204(in)s +8442(a)s 8602(form)s 0 4003(accessible)m 1035(to)s 1286(non-)s +1714(e)s 3(xpert)k 2380(users.)s 3047(The)s 3487(features)s +4305(include)s 5076(rotation)s 5888(and)s 6304(scaling,)s 7100(fonts,)s +7697(paragraph)s 8722(and)s 0 3715(page)m 500(breaking,)s 1436(displays)s +2263(and)s 2659(lists,)s 3141(\210oating)s 3917(\207gures)s 4611(and)s +5007(tables,)s 5662(footnotes,)s 6651(chapters)s 7490(and)s 7886(sections)s +8698(\(au)s 8998(-)s 0 3427(tomatically)m 1128(numbered\),)s 2272(running)s +3070(page)s 3579(headers)s 4361(and)s 4765(footers,)s 5536(odd-)s +5964(e)s 6(v)k 3(en)k 6464(page)s 6973(layouts,)s +7772(automatically)s 0 3139(generated)m 975(tables)s 1570(of)s 1829(contents,)s +2720(sorted)s 3350(inde)s 3(x)k 3(es)k 4113(and)s +4505(reference)s 5435(lists,)s 5914(bibliographic)s 7229(and)s 7621(other)s +8159(databases)s 0 2851(\(including)m 1038(databases)s 2008(of)s 2281(formats)s +3064(for)s 3405(printing)s 4217(references\),)s 5386(equations,)s 6412(tables,)s +7079(diagrams,)s 8065(formatting)s 0 2563(of)m 271(P)s 3(ascal)k +933(programs,)s 1943(and)s 2347(automatically)s 3701(maintained)s 4821(cross)s +5363(references.)s 480 2189(This)m 1015(paper)s 1666(charts)s 2347(the)s +2755(e)s 6(v)k 4(olution)k 3766(of)s 4097(Lout)s +4669(from)s 5253(conception)s 6420(in)s 6723(mid-1984)s 7768(to)s +8067(the)s 8475(public)s 0 1901(release)m 722(of)s 997(Basser)s +1699(Lout)s 2215(in)s 2462(October)s 3297(1991.)s 3945(Lout)s +4461(is)s 4676(or)s 4(g)k 1(anized)k 5676(around)s +6403(four)s 6866(k)s 2(e)k 3(y)k 7265(concepts)s +8157(\211)s 8342(objects,)s 0 1613(de\207nitions,)m 1131(g)s 1(alle)k 3(ys,)k +1925(and)s 2343(cross)s 2899(references)s 3944(\211)s 4138(and)s +4556(the)s 3(y)k 5033(were)s 5567(de)s 6(v)k 3(eloped)k +6614(in)s 6871(the)s 7233(order)s 7811(listed,)s 8449(so)s +8730(this)s 0 1325(paper)m 593(will)s 1022(treat)s 1508(each)s +2006(in)s 2252(turn,)s 2747(discussing)s 3800(its)s 4079(design,)s +4814(implementation,)s 6424(problems,)s 7424(and)s 7831(prospects)s 8788(for)s +1134 0 0 0 240 288 60 0 574 LoutGr2 +0 0 moveto xsize 0 lineto stroke +grestore + +grestore +122 fnt82 0 379(1)m 192 fnt82 58 309(Unix)m 485(is)s +653(a)s 786(trademark)s 1609(of)s 1825(A)s 21(T&T)k +2370(Bell)s 2733(Laboratories.)s 122 fnt82 0 112(2)m 192 fnt82 +67 42(PostScript)m 900(is)s 1068(a)s 1201(trademark)s 2024(of)s +2240(Adobe)s 2796(Systems,)s 3519(Incorporated.)s +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 2 3 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +%%+ font Symbol +%%+ font Times-Italic +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Symbol +/fnt78 { /Symbol LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt35 vec2 /Helvetica LoutRecode +/fnt35 { /Helveticafnt35 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +0 LoutMargSet +grestore +4348 13844(-)m 4476(2)s 4650(-)s 0 13256(further)m 709(impro)s 3(v)k 3(ement.)k +240 fnt84 0 12463(2.)m 291(Objects)s 240 fnt82 480 11987(The)m +923(essence)s 1725(of)s 2011(an)s 3(y)k 2424(mo)s 3(v)k 3(e)k +3021(to)s 3276(a)s 3457(higher)s 4144(le)s 6(v)k 3(el)k +4669(is)s 4895(the)s 5258(introduction)s 6500(of)s 6786(some)s +7363(abstraction)s 8484(which)s 0 11699(serv)m 3(es)k 639(to)s +872(or)s 4(g)k 1(anize)k 1740(the)s 2082(lo)s 6(w-)k +2503(le)s 6(v)k 3(el)k 3006(operations,)s 4103(resulting)s +4986(in)s 5223(a)s 5383(more)s 5923(succinct)s 6760(e)s 3(xpression)k +7831(of)s 8096(their)s 8586(com)s 8998(-)s 0 11411(mon)m +475(combinations)s 1806(at)s 2030(the)s 2369(cost)s 2805(of)s +3068(some)s 3620(loss)s 4034(of)s 4297(detailed)s 5102(control.)s +5934(The)s 6354(early)s 6876(part)s 7298(of)s 7561(the)s +7900(Lout)s 8403(project)s 0 11123(w)m 2(as)k 426(spent)s +996(in)s 1245(the)s 1598(de)s 6(v)k 3(elopment)k +2891(of)s 3167(such)s 3668(an)s 3957(abstraction)s 5067(for)s +5411(the)s 5764(b)s 4(uilding)k 6616(blocks)s 7298(of)s +7574(documents,)s 8724(one)s 0 10835(which)m 635(could)s 1217(e)s 3(xplain,)k +2017(not)s 2375(just)s 2772(the)s 3113(simple)s 3798(phenomena)s +4954(of)s 5217(w)s 2(ords,)k 5899(lines,)s 6450(and)s +6846(paragraphs,)s 7994(b)s 4(ut)k 8348(also)s 8778(the)s +0 10547(alignment)m 1016(of)s 1287(columns)s 2149(in)s 2392(tables,)s +3056(and)s 3460(the)s 3808(comple)s 3(x)k 4684(nested)s +5353(structures)s 6332(of)s 6603(equations.)s 240 fnt84 0 9898(2.1.)m +471(The)s 926(genesis)s 1697(of)s 1969(the)s 2343(object)s +3026(abstraction)s 240 fnt82 480 9421(When)m 1163(one)s 1620(e)s 3(xamines)k +2626(pre)s 6(vious)k 3549(document)s 4608(formatting)s 5724(systems)s +6587([4])s 6958(looking)s 7798(for)s 8191(ideas)s 8788(for)s +0 9133(abstractions,)m 1245(as)s 1492(the)s 1837(author)s 2505(did)s +2866(in)s 3106(1984,)s 3690(the)s 4035(Eqn)s 4475(formatting)s +5533(language)s 6450([5])s 6764(stands)s 7410(out)s 7773(lik)s 2(e)k +8182(a)s 8344(beacon.)s 0 8845(In)m 256(Eqn,)s 749(a)s +915(mathematical)s 2256(formula)s 3072(such)s 3568(as)s 168 fnt78 +586 8390(2)m 240 fnt83 480 8330(x)m 240 fnt78 738 8322(+)m +939(1)s gsave +480 8274 translate +240 fnt83 553 0 0 0 240 288 12 LoutGraphic +gsave +0 0 moveto xsize 0 lineto 0.05 ft setlinewidth stroke +grestore + +grestore +700 8046(4)m 240 fnt82 0 7535(is)m 210(produced)s +1159(by)s 1453(typing)s 220 fnt35 480 7037({ x sup 2 + 1 } o)m 3(v)k 5(er 4)k +240 fnt82 0 6541(in)m 261(the)s 627(input)s 1197(\207le;)s +220 fnt35 1632 6538(sup)m 240 fnt82 2056 6541(and)m 220 fnt35 +2478 6538(o)m 3(v)k 5(er)k 240 fnt82 2975 6541(are)m +3340(binary)s 4023(operators,)s 5037(and)s 5459(braces)s 6138(are)s +6503(used)s 7018(for)s 7374(grouping.)s 8421(This)s 8916(is)s +0 6253(document)m 1017(formatting)s 2091(at)s 2337(a)s 2516(v)s 3(ery)k +3006(high)s 3502(le)s 6(v)k 3(el,)k 4077(close)s +4638(to)s 4890(the)s 5252(language)s 6185(of)s 6469(mathematics)s +7741(itself,)s 8337(with)s 8833(all)s 0 5965(reference)m 943(to)s +1182(font)s 1627(changes)s 2449(and)s 2853(spacing)s 3637(suppressed.)s +480 5591(Eqn)m 916(pro)s 3(vides)k 1780(a)s 1938(single)s +2557(data)s 3008(type)s 3468(\(let)s 3837(us)s 4093(call)s +4485(it)s 4669(the)s 240 fnt83 5009 5593(e)m 4(xpr)k 8(ession)k +240 fnt82 6014 5591(\),)m 6192(b)s 4(uilt)k 6679(up)s +6964(recursi)s 6(v)k 3(ely)k 8062(in)s 8297(conte)s 3(xt-)k +0 5303(free)m 457(style:)s 1106(where)s 1778(one)s 2212(e)s 3(xpression)k +3321(may)s 3819(appear)s 9(,)k 4586(an)s 3(y)k +5015(e)s 3(xpression)k 6124(may)s 6622(appear)s 13(.)k +7442(This)s 7950(approach)s 8916(is)s 0 5015(common)m 905(in)s +1158(algebra)s 1931(and)s 2345(programming)s 3710(languages,)s 4785(where)s +5435(its)s 5721(simplicity)s 6740(and)s 7154(e)s 3(xpressi)k 6(v)k 3(eness)k +8625(ha)s 4(v)k 3(e)k 0 4727(long)m 478(been)s +986(appreciated;)s 2198(b)s 4(ut)k 2559(Eqn)s 3001(w)s 2(as)k +3421(the)s 3768(\207rst)s 4198(language)s 5117(to)s 5355(demonstrate)s +6578(its)s 6853(utility)s 7476(in)s 7718(document)s 8720(for)s +8998(-)s 0 4439(matting.)m 480 4065(Each)m 1015(e)s 3(xpression)k +2092(is)s 2302(treated)s 3009(by)s 3304(Eqn)s 3747(as)s +3997(a)s 4163(rectangle)s 5094(with)s 5577(a)s 240 fnt83 +5743 4067(horizontal)m 6787(axis)s 240 fnt82 7167 4065(,)m 7274(used)s +7771(for)s 8110(alignment)s 0 3777(with)m 482(adjacent)s 1338(e)s 3(xpressions:)k +553 519 0 288 240 288 60 480 2918 LoutGr2 +grestore save gsave 200 dict begin lfigdict begin +grestore +553 519 0 288 240 288 60 0 0 LoutGr2 +/lfiglightgrey [ lfigbox ] gsave lfigpaintpath grestore +0.015 cm setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigbox ] lfigdopath +pop pop +grestore +553 519 0 288 240 288 60 0 0 LoutGr2 + +0.015 cm setlinewidth lfiground setlinecap +0.15 cm /lfigdashed [ -0.3 cm ymark xsize ymark 0.3 cm 0 lfigpadd + + ] lfigdopath +pop pop +grestore +168 fnt78 106 404(2)m 240 fnt83 0 344(x)m 240 fnt78 +258 336(+)m 459(1)s gsave +0 288 translate +240 fnt83 553 0 0 0 240 288 12 LoutGraphic +gsave +0 0 moveto xsize 0 lineto 0.05 ft setlinewidth stroke +grestore + +grestore +220 60(4)m +grestore + +grestore +end end restore +grestore +0 2467(The)m 425(size)s +848(and)s 1248(rendering)s 2213(of)s 2481(the)s 2825(e)s 3(xpression)k +3898(on)s 4191(the)s 4536(printed)s 5267(page)s 5771(are)s +6114(kno)s 6(wn)k 6815(only)s 7291(to)s 7526(the)s +7870(implementa)s 8998(-)s 0 2179(tion,)m 481(ne)s 6(v)k 3(er)k +1066(e)s 3(xplicitly)k 2022(calculated)s 3051(or)s 3313(accessed)s +4209(by)s 4506(the)s 4857(user)s 13(.)k 5409(This)s +5888(prohibition)s 7010(is)s 7223(crucial)s 7930(to)s 8172(the)s +8523(main)s 8998(-)s 0 1891(tenance)m 785(of)s 1055(the)s +1402(conte)s 3(xt-)k 2171(free)s 2596(property)s 3459(in)s +3701(practice.)s 4619(In)s 4874(Lout,)s 5432(for)s 5769(e)s 3(xample,)k +6682(equations,)s 7705(\207gures,)s 8462(tables,)s 0 1603(and)m 393(arbitrary)s +1256(objects)s 1972(may)s 2427(be)s 2697(mix)s 3(ed)k +3338(together)s 4169(freely)s 15(.)k 4863(This)s 5327(w)s 2(ould)k +5970(be)s 6241(impossible)s 7321(if)s 7526(size)s 7941(information)s +0 1315(w)m 2(as)k 421(hidden)s 1130(from)s 1654(the)s +2002(implementation)s 3559(in)s 3802(user)s 4260(calculations.)s 480 941(The)m +927(object)s 1591(abstraction)s 2715(of)s 3006(Lout)s 3537(is)s +3767(a)s 3952(direct)s 4575(descendant)s 5717(of)s 6008(the)s +6375(Eqn)s 6838(e)s 3(xpression.)k 8041(It)s 8266(emplo)s 2(ys)k +0 653(the)m 385(same)s 969(conte)s 3(xt-free)k 2212(recursi)s 6(v)k 3(e)k +3171(style)s 3715(of)s 4023(construction,)s 5350(and)s 5791(each)s +6323(object)s 7004(is)s 7251(treated)s 7995(by)s 8326(Lout)s +8876(as)s +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 3 4 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Italic +%%+ font Times-Bold +%%+ font Symbol +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Symbol +/fnt78 { /Symbol LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt35 vec2 /Helvetica LoutRecode +/fnt35 { /Helveticafnt35 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +1 LoutMargSet +grestore +4353 13844(-)m 4481(3)s 4645(-)s 0 13253(a)m 166(rectangle:)s +1701 453 567 198 240 288 60 480 12460 LoutGr2 +grestore save gsave 200 dict begin lfigdict begin +grestore +1701 453 567 198 240 288 60 0 0 LoutGr2 +grestore save gsave 200 dict begin lfigdict begin +grestore +1701 453 567 198 240 288 60 0 0 LoutGr2 +/lfiglightgrey [ lfigbox ] gsave lfigpaintpath grestore +0.015 cm setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigbox ] lfigdopath +pop pop +grestore +1701 453 567 198 240 288 60 0 0 LoutGr2 + +0.015 cm setlinewidth lfiground setlinecap +0.15 cm /lfigdashed [ -0.3 cm ymark xsize ymark 0.3 cm 0 lfigpadd +[] +xmark -0.3 cm xmark ysize 0 0.3 cm lfigpadd ] lfigdopath +pop pop +grestore + +grestore + +grestore +end end restore +grestore +end end restore +grestore +0 12007(The)m 442(horizontal)s 1481(axis,)s 1987(called)s 2630(a)s +240 fnt83 2810 12009(r)m 10(ow)k 3244(mark)s 240 fnt82 +3814 12007(in)m 4072(Lout,)s 4645(has)s 5030(a)s 5210(v)s 3(ertical)k +5992(analogue)s 6926(called)s 7569(a)s 240 fnt83 7749 12009(column)m +8523(mark)s 240 fnt82 9019 12007(,)m 0 11719(creating)m 822(a)s +988(v)s 6(aluable)k 1848(symmetry)s 2857(between)s 3711(horizontal)s +4735(and)s 5139(v)s 3(ertical.)k 6014(Multiple)s 6893(column)s +7668(and)s 8072(ro)s 6(w)k 8491(marks)s 0 11431(are)m +347(permitted:)s 1984 1189 0 1189 240 288 60 480 9902 LoutGr2 +grestore save gsave 200 dict begin lfigdict begin +grestore +680 453 0 453 240 288 60 0 736 LoutGr2 +currentdict end 200 dict begin begin +grestore +680 453 0 453 240 288 60 0 0 LoutGr2 +/lfiggrey [ lfigbox ] gsave lfigpaintpath grestore +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigbox ] lfigdopath +pop pop +grestore + +grestore +(A) lfigpromotelabels +grestore +737 453 0 453 240 288 60 1247 736 LoutGr2 +currentdict end 200 dict begin begin +grestore +567 453 0 453 240 288 60 0 0 LoutGr2 +/lfiggrey [ lfigbox ] gsave lfigpaintpath grestore +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigbox ] lfigdopath +pop pop +grestore + +grestore +(B) lfigpromotelabels +grestore +680 453 0 453 240 288 60 0 0 LoutGr2 +currentdict end 200 dict begin begin +grestore +396 453 0 453 240 288 60 0 0 LoutGr2 +/lfiggrey [ lfigbox ] gsave lfigpaintpath grestore +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigbox ] lfigdopath +pop pop +grestore + +grestore +(C) lfigpromotelabels +grestore +737 453 0 453 240 288 60 1247 0 LoutGr2 +currentdict end 200 dict begin begin +grestore +737 453 0 453 240 288 60 0 0 LoutGr2 +/lfiggrey [ lfigbox ] gsave lfigpaintpath grestore +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigbox ] lfigdopath +pop pop +grestore + +grestore +(D) lfigpromotelabels +grestore +0 0 0 0 240 288 60 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigdashed [ 0.3 cm 0 A@W lfigpsub lfigprevious /FROM lfigpointdef +B@W 1.6 cm 0 lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath +pop pop +grestore + +grestore +0 0 0 0 240 288 60 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigdashed [ 0.3 cm 0 C@W lfigpsub lfigprevious /FROM lfigpointdef +D@W 1.6 cm 0 lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath +pop pop +grestore + +grestore +0 0 0 0 240 288 60 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigdashed [ A@NW 0 0.3 cm lfigpadd lfigprevious /FROM lfigpointdef +0 0.3 cm C@SW lfigpsub lfigprevious /TO lfigpointdef ] lfigdopath +pop pop +grestore + +grestore +0 0 0 0 240 288 60 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigdashed [ B@NW 0.3 cm 0.3 cm lfigpadd lfigprevious /FROM lfigpointdef +D@SW 0.3 cm -0.3 cm lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath +pop pop +grestore + +grestore +end end restore +grestore +0 9451(so)m 266(that)s 684(objects)s 1412(are)s +1759(able)s 2213(to)s 2452(represent)s 3387(tables.)s 480 9077(This)m +946(abstraction)s 2041(has)s 2401(some)s 2952(limitations,)s 4069(the)s +4407(most)s 4922(ob)s 3(vious)k 5719(being)s 6293(the)s +6631(restriction)s 7645(of)s 7906(size)s 8322(calcula)s 8998(-)s +0 8789(tions)m 507(to)s 736(rectangular)s 1860(bounding)s 2809(box)s 3(es.)k +3519(Non-)s 4000(rectangular)s 5124(and)s 5518(disconnected)s 6815(shapes)s +7494(arise)s 7990(naturally)s 8883(in)s 0 8501(\207gures)m 704(and)s +1111(in)s 1356(the)s 1707(characters)s 2727(of)s 3001(fonts;)s +3594(the)s 3944(e)s 3(xtension)k 4918(to)s 5159(them)s +5700(is)s 5912(conceptually)s 7191(straightforw)s 2(ard)k 8722(and)s +0 8213(might)m 615(help)s 1076(to)s 1311(e)s 3(xplain)k +2066(some)s 2623(\207ne)s 3034(points)s 3667(of)s 3934(layout)s +4588(such)s 5081(as)s 5327(k)s 2(erning.)k 6216(Ho)s 6(we)k 6(v)k 3(er)k 9(,)k +7173(there)s 7702(are)s 8045(implemen)s 8998(-)s 0 7925(tation)m +599(and)s 1001(language)s 1918(design)s 2598(problems,)s 3592(particularly)s +4744(when)s 5317(\207lling)s 5939(non-)s 6367(rectangular)s 7498(shapes)s +8185(with)s 8664(te)s 3(xt,)k 0 7637(and)m 404(so)s +670(the)s 1018(author)s 1689(chose)s 2290(to)s 2529(k)s 2(eep)k +3032(to)s 3271(Eqn')s 13(s)k 3867(rectangles.)s 480 7263(A)m +766(more)s 1370(fundamental)s 2676(limitation)s 3718(of)s 4045(the)s +4450(object)s 5151(abstraction)s 6312(arises)s 6963(from)s 7543(the)s +7948(inability)s 8855(of)s 0 6975(recursi)m 6(v)k 3(e)k +936(data)s 1408(types)s 1978(to)s 2231(describe)s 3097(cross-link)s 2(ed)k +4335(structures,)s 5384(which)s 6040(seem)s 6605(to)s 6858(require)s +7604(some)s 8179(means)s 8855(of)s 0 6687(naming)m 756(the)s +1089(multiply)s 1938(referenced)s 2988(parts.)s 3601(Lout)s 4098(is)s +4293(obliged)s 5054(to)s 5278(introduce)s 6222(additional)s 7218(abstractions)s +8395(to)s 8618(cope)s 0 6399(with)m 490(cross)s 1040(linking:)s +1892(g)s 1(alle)k 3(ys)k 2624(for)s 2970(inserting)s +3867(te)s 3(xt)k 4291(into)s 4724(pages)s 5328(\(Section)s +6189(5.1\),)s 6683(cross)s 7233(references)s 8273(\(Section)s 0 6111(6.1\),)m +490(and)s 898(labelled)s 1716(points)s 2356(in)s 2603(\207gure)s +3221(dra)s 3(wing)k 4059([6].)s 4506(An)s 4860(abstraction)s +5969(closer)s 6603(to)s 6846(h)s 1(yperte)k 3(xt)k +7809(might)s 8431(form)s 8960(a)s 0 5823(more)m 547(uni\207ed)s +1270(basis)s 1799(for)s 2137(these)s 2684(features.)s 240 fnt84 +0 5224(2.2.)m 471(Grammatical)s 1893(and)s 2334(lexical)s 3039(structur)s 4(e)k +240 fnt82 480 4792(If)m 700(objects)s 1418(are)s 1755(to)s +1984(be)s 2256(constructed)s 3406(lik)s 2(e)k 3807(mathematical)s +5138(e)s 3(xpressions,)k 6348(the)s 6686(natural)s 7394(notation)s +8225(is)s 8425(a)s 8580(func)s 8998(-)s 0 4504(tional)m +599(language)s 1519(based)s 2122(on)s 2419(operators,)s 3415(as)s +3665(in)s 3908(Eqn.)s 4458(The)s 4886(grammar)s 5808(of)s +6079(Lout)s 6591(objects)s 7319(is)s 7529(accordingly)s 240 fnt78 +1332 3945(\256)m 1332 3612(\256)m 1332 3279(\256)m 1332 2995(\256)m 1332 2662(\256)m +1332 2368(\256)m 1332 2035(\256)m 1332 1751(\256)m 240 fnt83 480 3953(object)m +1826(object)s 2498(in\207xop)s 3227(object)s 1826 3620(pr)m 8(e\207xop)k +2680(object)s 1826 3287(object)m 2498(post\207xop)s 1826 3003(nopar)m 2(sop)k +1826 2670(liter)m 3(alwor)k 8(d)k 220 fnt35 1826 2371({)m +240 fnt83 1974 2376(object)m 220 fnt35 2646 2371(})m 240 fnt83 +1826 2043(object)m 2498(object)s 240 fnt82 0 1248(where)m 240 fnt83 +640 1250(in\207xop)m 240 fnt82 1285 1248(,)m 240 fnt83 1391 1250(pr)m 8(e\207xop)k +240 fnt82 2161 1248(,)m 240 fnt83 2267 1250(post\207xop)m 240 fnt82 +3125 1248(,)m 3232(and)s 240 fnt83 3635 1250(nopar)m 2(sop)k +240 fnt82 4591 1248(are)m 4938(identi\207ers)s 5943(naming)s 6713(operators)s +7653(which)s 8294(tak)s 2(e)k 8745(0,)s 8971(1)s +0 960(or)m 255(2)s 424(parameters,)s 1573(as)s 1819(sho)s 6(wn,)k +2541(and)s 240 fnt83 2940 962(liter)m 3(alwor)k 8(d)k +240 fnt82 4067 960(is)m 4272(a)s 4433(sequence)s 5362(of)s +5628(non-space)s 6649(characters,)s 7719(or)s 7973(an)s 8251(arbitrary)s +0 672(sequence)m 969(of)s 1276(characters)s 2330(enclosed)s 3262(in)s +3541(double)s 4285(quotes.)s 5110(Ambiguities)s 6380(are)s 6763(resolv)s 3(ed)k +7664(by)s 7995(precedence)s 0 384(and)m 404(associati)s 6(vity)k 15(.)k + +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 4 5 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Helvetica +%%+ font Times-Italic +%%+ font Times-Bold +/pgsave save def +%%IncludeResource: font Helvetica +/Helveticafnt35 vec2 /Helvetica LoutRecode +/fnt35 { /Helveticafnt35 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +0 LoutMargSet +grestore +4348 13844(-)m 4476(4)s 4650(-)s 480 13256(The)m 941(last)s +1366(production)s 2494(allo)s 6(ws)k 3197(a)s 3397(meaning)s +4307(for)s 4679(e)s 3(xpressions)k 5877(such)s 6407(as)s +220 fnt35 6691 13253({})m 240 fnt82 6828 13256(,)m 6968(in)s +7245(which)s 7921(an)s 8238(object)s 8916(is)s 0 12968(missing.)m +907(The)s 1333(v)s 6(alue)k 1899(of)s 2168(this)s +240 fnt83 2562 12970(empty)m 3187(object)s 240 fnt82 3833 12968(is)m +4041(a)s 4205(rectangle)s 5135(of)s 5404(size)s 5829(0)s +6002(by)s 6294(0,)s 6519(with)s 6999(one)s 7399(column)s +8172(mark)s 8722(and)s 0 12680(one)m 402(ro)s 6(w)k +822(mark,)s 1420(that)s 1838(prints)s 2433(as)s 2683(nothing.)s +480 12306(The)m 938(second-last)s 2103(production)s 3227(generates)s 4210(sequences)s +5261(of)s 5562(arbitrary)s 6467(objects)s 7225(separated)s 8215(by)s +8539(white)s 0 12018(space,)m 671(called)s 240 fnt83 1333 12020(par)m 3(a)k 2(gr)k 3(aphs)k +240 fnt82 2439 12018(.)m 2636(Ignoring)s 3547(paragraph)s 4593(breaking)s +5517(for)s 5888(no)s 6(w)k 15(,)k 6421(the)s +6802(natural)s 7554(meaning)s 8464(is)s 8708(that)s 0 11730(the)m +361(tw)s 2(o)k 784(objects)s 1525(should)s 2235(appear)s +2946(side)s 3400(by)s 3707(side,)s 4212(and)s 4629(Lout')s 13(s)k +5305(parser)s 5961(accordingly)s 7157(interpolates)s 8335(an)s 8632(in\207x)s +0 11442(horizontal)m 1017(concatenation)s 2395(operator)s 3244(\(see)s 3677(belo)s 6(w\))k +4377(between)s 5224(them.)s 5859(This)s 6328(operator)s 7177(is)s +7380(associati)s 6(v)k 3(e,)k 8519(so)s 8778(the)s +0 11154(grammatical)m 1262(ambiguity)s 2301(does)s 2806(no)s 3113(harm.)s +3783(Ho)s 6(we)k 6(v)k 3(er)k 9(,)k +4758(the)s 5120(Algol-60)s 6054(rule)s 6496(that)s 6928(white)s +7530(space)s 8132(should)s 8844(be)s 0 10866(signi\207cant)m 1056(only)s +1536(as)s 1786(a)s 1952(separator)s 2887(is)s 3097(necessarily)s +4212(brok)s 2(en)k 4932(by)s 5226(Lout)s 5738(in)s +5981(just)s 6386(this)s 6782(one)s 7184(place.)s 480 10492(Algol-lik)m 2(e)k +1506(languages)s 2504(distinguish)s 3601(literal)s 4201(strings)s 4879(from)s +5393(identi\207ers)s 6389(by)s 6673(enclosing)s 7633(them)s 8161(in)s +8394(quotes,)s 0 10204(b)m 4(ut)k 372(literals)s 1082(are)s +1440(f)s 2(ar)k 1773(too)s 2143(frequent)s 3010(in)s +3264(document)s 4278(formatting)s 5350(for)s 5699(this)s 6106(to)s +6356(be)s 6649(viable.)s 7408(The)s 7847(con)s 9(v)k 3(entional)k +0 9916(solution)m 829(is)s 1041(to)s 1282(be)s 3(gin)k +1870(identi\207ers)s 2878(with)s 3362(a)s 3530(special)s 4250(character)s 9(,)k +5224(and)s 5630(Lout)s 6144(follo)s 6(ws)k 6908(Scribe)s +7576([7])s 7895(in)s 8140(using)s 8714(`@')s 0 9628(rather)m +616(than)s 1085(the)s 1433(`\\')s 1690(of)s 1961(trof)s 6(f)k +2450([8])s 2767(and)s 3171(T)s 3313 9580(E)m 3456 9628(X)m +3685([9].)s 480 9254(Ho)m 6(we)k 6(v)k 3(er)k 9(,)k +1447(Lout)s 1966(tak)s 2(es)k 2513(the)s 2868(unusual)s +3675(step)s 4120(of)s 4398(making)s 5176(an)s 5466(initial)s +6084(`@')s 6503(optional.)s 7458(The)s 7893(designers)s 8855(of)s +0 8966(Eqn)m 449(apparently)s 1519(considered)s 2620(such)s 3122(characters)s +4147(dis\207guring)s 5244(in)s 5494(\207ne-grained)s 6713(input)s 7272(lik)s 2(e)k +7691(equations,)s 8722(and)s 0 8678(this)m 401(author)s 1077(agrees.)s +1856(The)s 2289(implementation)s 3851(is)s 4066(straightforw)s 2(ard:)k +5707(`@')s 6124(is)s 6339(classed)s 7092(as)s 7347(just)s +7757(another)s 8539(letter)s 9(,)k 0 8390(and)m 407(e)s 6(v)k 3(ery)k +986(w)s 2(ord)k 1537(is)s 1750(searched)s 2647(for)s +2988(in)s 3234(the)s 3585(symbol)s 4348(table.)s 4979(If)s +5212(it)s 5407(is)s 5620(found,)s 6289(it)s 6484(is)s +6697(an)s 6983(identi\207er)s 9(,)k 7946(otherwise)s 8934(it)s +0 8102(is)m 214(a)s 384(literal.)s 1107(A)s 1341(w)s 2(arning)k +2181(message)s 3051(is)s 3265(printed)s 4004(when)s 4585(a)s +4755(literal)s 5369(be)s 3(ginning)k 6381(with)s 6867(`@')s +7284(is)s 7498(found,)s 8168(since)s 8719(it)s 8916(is)s +0 7814(probably)m 905(a)s 1071(mis-spelt)s 2006(identi\207er)s 13(.)k +3019(No)s 3365(such)s 3861(safety)s 4485(net)s 4837(is)s +5047(possible)s 5887(for)s 6225(identi\207ers)s 7231(without)s 8022(`@'.)s +480 7440(Equation)m 1418(formatting)s 2496(also)s 2951(demands)s 3871(symbols)s +4737(made)s 5328(from)s 5869(punctuation)s 7074(characters,)s 8165(such)s +8678(as)s 220 fnt35 8946 7437(+)m 240 fnt82 0 7152(and)m +220 fnt35 404 7149(<=)m 240 fnt82 652 7152(.)m 816(It)s +1021(is)s 1231(traditional)s 2267(to)s 2506(allo)s 6(w)k +3085(such)s 3581(symbols)s 4430(to)s 4669(be)s 4951(juxtaposed,)s +6095(which)s 6737(means)s 7399(that)s 7817(the)s 8165(input)s +220 fnt35 480 6702(<=++)m 240 fnt82 0 6251(for)m 354(e)s 3(xample)k +1234(must)s 1776(be)s 2075(interpreted)s 3184(within)s 3869(the)s +4234(le)s 3(xical)k 4939(analyser)s 5812(by)s 6123(searching)s +7109(the)s 7474(symbol)s 8251(table)s 8788(for)s 0 5963(its)m +306(pre\207x)s 3(es)k 1142(in)s 1416(the)s 1795(order)s +220 fnt35 2390 5960(<=++)m 240 fnt82 2894 5963(,)m 220 fnt35 +3032 5960(<=+)m 240 fnt82 3408 5963(,)m 220 fnt35 3546 5960(<=)m +240 fnt82 3794 5963(.)m 3988(Although)s 4981(this)s 5408(tak)s 2(es)k +5979(quadratic)s 6952(time,)s 7514(in)s 7788(practice)s 8630(such)s +0 5675(sequences)m 1021(are)s 1368(too)s 1727(short)s 2265(to)s +2504(mak)s 2(e)k 3076(a)s 3242(more)s 3789(sophisticated)s +5095(linear)s 5698(method)s 6474(lik)s 2(e)k 6886(tries)s +7347(w)s 2(orthwhile.)k 240 fnt84 0 5026(2.3.)m 471(Basic)s +1073(structural)s 2149(operators)s 240 fnt82 480 4549(A)m 696(programming)s +2036(language)s 2941(may)s 3393(be)s 3660(considered)s 4739(complete)s +5656(when)s 6218(it)s 6395(attains)s 7054(the)s 7388(po)s 6(wer)k +8025(of)s 8281(a)s 8432(T)s 10(uring)k 0 4261(machine,)m +917(b)s 4(ut)k 1280(no)s 1574(such)s 2071(criterion)s +2937(seems)s 3573(rele)s 6(v)k 6(ant)k 4390(to)s +4630(document)s 5635(formatting.)s 6808(Instead,)s 7606(as)s 7857(the)s +8206(language)s 0 3973(de)m 6(v)k 3(elops)k 913(and)s +1338(ne)s 6(w)k 1806(applications)s 3033(are)s 3401(attempted,)s +4471(de\207ciencies)s 5670(are)s 6038(e)s 3(xposed)k 6899(and)s +7324(the)s 7693(operator)s 8570(set)s 8916(is)s 0 3685(re)m 6(vised)k +742(to)s 981(o)s 3(v)k 3(ercome)k 1974(them.)s +480 3311(Lout)m 1025(has)s 1429(a)s 1629(repertoire)s 2646(of)s +2950(23)s 3268(primiti)s 6(v)k 3(e)k 4224(operators)s +5198(\(Figure)s 5990(1\),)s 6390(which)s 7066(has)s 7470(pro)s 3(v)k 3(en)k +8220(adequate)s 0 3023(for)m 348(a)s 525(wide)s 1056(v)s 6(ariety)k +1778(of)s 2059(features,)s 2932(including)s 3899(equations,)s 4934(tables,)s +5609(and)s 6023(page)s 6542(layout,)s 7257(and)s 7672(so)s +7948(seems)s 8594(to)s 8844(be)s 0 2735(reasonably)m 1077(complete)s +1995(in)s 2225(this)s 2607(pragmatic)s 3602(sense.)s 4270(In)s +4513(this)s 4895(section)s 5616(we)s 5937(introduce)s 6883(the)s +7217(eight)s 7741(concatenation)s 0 2447(and)m 424(mark-hiding)s 1680(operators.)s +2754(T)s 19(o)k 3075(them)s 3634(f)s 2(alls)k +4114(the)s 4482(basic)s 5047(task)s 5514(of)s 5806(assembling)s +6956(comple)s 3(x)k 7853(objects)s 8602(from)s 0 2159(simple)m +693(ones,)s 1239(and)s 1643(the)s 3(y)k 2106(were)s +2626(the)s 2974(\207rst)s 3405(to)s 3644(be)s 3926(designed)s +4835(and)s 5239(implemented.)s 480 1785(Man)m 3(y)k 1094(of)s +1370(the)s 1723(operators)s 2668(of)s 2944(Eqn)s 3392(can)s +3786(be)s 4073(vie)s 6(wed)k 4821(as)s 5076(b)s 4(uilding)k +5928(small)s 6505(tables.)s 7231(A)s 7466(b)s 4(uilt-up)k +8277(fraction,)s 0 1497(for)m 367(e)s 3(xample,)k 1310(has)s +1710(one)s 2141(column)s 2945(and)s 3379(three)s 3941(ro)s 6(ws)k +4480(\(numerator)s 9(,)k 5669(line,)s 6163(and)s 6596(denominator\).)s +8078(Numerous)s 0 1209(in)m 9(v)k 3(estig)k 1(ations)k +1377(of)s 1660(this)s 2068(kind)s 2564(con)s 9(vinced)k +3609(the)s 3969(author)s 4652(that)s 5082(operators)s 6034(capable)s +6832(of)s 7115(assembling)s 8256(the)s 8616(ro)s 6(ws)k +0 921(and)m 404(columns)s 1266(of)s 1537(tables)s 2145(w)s 2(ould)k +2800(suf\207ce)s 3493(for)s 3831(b)s 4(uilding)k 4678(all)s +4971(kinds)s 5541(of)s 5812(objects.)s 480 547(The)m 906(simplest)s +1759(objects)s 2485(are)s 2829(empty)s 3479(objects)s 4204(and)s +4605(literal)s 5213(w)s 2(ords)k 5844(lik)s 2(e)k +220 fnt35 6254 544(metempsychosis)m 240 fnt82 7882 547(,)m 7986(which)s +8625(ha)s 4(v)k 3(e)k +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 5 6 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Italic +%%+ font Helvetica +%%+ font Times-Bold +/pgsave save def +%%IncludeResource: font Helvetica +/Helveticafnt35 vec2 /Helvetica LoutRecode +/fnt35 { /Helveticafnt35 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +1 LoutMargSet +grestore +4352 13841(-)m 4480(5)s 4646(-)s 240 fnt83 266 13217(object)m +220 fnt35 974 13212(/)m 240 fnt83 1038 13217(gap)m 1511(object)s +240 fnt82 3816 13215(V)m 26(ertical)k 4613(concatenation)s 5998(with)s +6480(mark)s 7032(alignment)s 240 fnt83 266 12929(object)m 220 fnt35 +974 12924(//)m 240 fnt83 1099 12929(gap)m 1572(object)s 240 fnt82 +3816 12927(V)m 26(ertical)k 4613(concatenation)s 5998(with)s 6480(left)s +6857(justi\207cation)s 240 fnt83 266 12641(object)m 220 fnt35 974 12636(|)m +240 fnt83 1011 12641(gap)m 1484(object)s 240 fnt82 3816 12639(Horizontal)m +4893(concatenation)s 6278(with)s 6760(mark)s 7312(alignment)s 240 fnt83 +266 12353(object)m 220 fnt35 974 12348(||)m 240 fnt83 1068 12353(gap)m +1541(object)s 240 fnt82 3816 12351(Horizontal)m 4893(concatenation)s 6278(with)s +6760(top-justi\207cation)s 240 fnt83 266 12065(object)m 220 fnt35 974 12060(&)m +240 fnt83 1116 12065(gap)m 1589(object)s 240 fnt82 3816 12063(Horizontal)m +4893(concatenation)s 6278(within)s 6946(paragraphs)s 220 fnt35 266 11772(@OneCol)m +240 fnt83 1338 11777(object)m 240 fnt82 3816 11775(Hide)m 4337(all)s +4630(b)s 4(ut)k 4992(one)s 5394(column)s 6169(mark)s +6721(of)s 240 fnt83 6992 11777(object)m 220 fnt35 266 11484(@OneRo)m 3(w)k +240 fnt83 1457 11489(object)m 240 fnt82 3816 11487(Hide)m 4337(all)s +4630(b)s 4(ut)k 4992(one)s 5394(ro)s 6(w)k +5814(mark)s 6366(of)s 240 fnt83 6637 11489(object)m 266 11201(font)m +220 fnt35 762 11196(@F)m 6(ont)k 240 fnt83 1534 11201(object)m +240 fnt82 3816 11199(Render)m 240 fnt83 4567 11201(object)m 240 fnt82 +5215 11199(in)m 5458(nominated)s 6526(font)s 240 fnt83 266 10913(br)m 8(eakstyle)k +220 fnt35 1353 10908(@Break)m 240 fnt83 2269 10913(object)m 240 fnt82 +3816 10911(Break)m 4448(paragraphs)s 5548(of)s 240 fnt83 5819 10913(object)m +240 fnt82 6467 10911(in)m 6710(nominated)s 7778(style)s 240 fnt83 +266 10625(spacestyle)m 220 fnt35 1361 10620(@Space)m 240 fnt83 2318 10625(object)m +240 fnt82 3816 10623(Render)m 4567(spaces)s 5242(between)s 6096(w)s 2(ords)k +6730(in)s 6973(nominated)s 8041(style)s 240 fnt83 266 10337(length)m +220 fnt35 979 10332(@Wide)m 240 fnt83 1813 10337(object)m 240 fnt82 +3816 10335(Render)m 240 fnt83 4567 10337(object)m 240 fnt82 5215 10335(to)m +5454(width)s 240 fnt83 6056 10337(length)m 266 10049(length)m 220 fnt35 +979 10044(@High)m 240 fnt83 1758 10049(object)m 240 fnt82 3816 10047(Render)m +240 fnt83 4567 10049(object)m 240 fnt82 5215 10047(to)m 5454(height)s +240 fnt83 6112 10049(length)m 220 fnt35 266 9756(@HExpand)m 240 fnt83 +1499 9761(object)m 240 fnt82 3816 9759(Expand)m 4606(horizontal)s 5630(g)s 1(aps)k +6119(to)s 6358(\207ll)s 6678(a)s 4(v)k 6(ailable)k +7586(space)s 220 fnt35 266 9468(@VExpand)m 240 fnt83 1487 9473(object)m +240 fnt82 3816 9471(Expand)m 4606(v)s 3(ertical)k 5373(g)s 1(aps)k +5862(to)s 6101(\207ll)s 6421(a)s 4(v)k 6(ailable)k +7329(space)s 220 fnt35 266 9180(@HScale)m 240 fnt83 1307 9185(object)m +240 fnt82 3816 9183(Horizontal)m 4893(geometrical)s 6075(scaling)s 6805(to)s +7044(\207ll)s 7364(a)s 4(v)k 6(ailable)k 8272(space)s +220 fnt35 266 8892(@VScale)m 240 fnt83 1295 8897(object)m 240 fnt82 +3816 8895(V)m 26(ertical)k 4613(geometrical)s 5795(scaling)s 6525(to)s +6764(\207ll)s 7084(a)s 4(v)k 6(ailable)k 7992(space)s +240 fnt83 266 8609(angle)m 220 fnt35 911 8604(@Rotate)m 240 fnt83 +1892 8609(object)m 240 fnt82 3816 8607(Rotate)m 240 fnt83 4496 8609(object)m +240 fnt82 5144 8607(by)m 240 fnt83 5438 8609(angle)m 266 8321(P)m 19(ostScript)k +220 fnt35 1367 8316(@Gr)m 2(aphic)k 240 fnt83 2471 8321(object)m +240 fnt82 3816 8319(Escape)m 4549(to)s 4788(graphics)s 5649(language)s +220 fnt35 266 8028(@Ne)m 6(xt)k 240 fnt83 1050 8033(object)m +240 fnt82 3816 8031(Add)m 4287(1)s 4442(to)s 4681(an)s +4964(object)s 5608(denoting)s 6499(a)s 6665(number)s 240 fnt83 +266 7745(object)m 220 fnt35 974 7740(@Case)m 240 fnt83 1821 7745(alternatives)m +240 fnt82 3816 7743(Select)m 4459(from)s 4983(a)s 5149(set)s +5474(of)s 5745(alternati)s 6(v)k 3(e)k 6799(objects)s +240 fnt83 266 7457(identi\207er)m 220 fnt35 1254 7452(&&)m 240 fnt83 +1662 7457(object)m 240 fnt82 3816 7455(Cross)m 4412(reference)s 240 fnt83 +266 7169(cr)m 10(oss-r)k 8(efer)k 8(ence)k 220 fnt35 +1839 7164(@Open)m 240 fnt83 2705 7169(object)m 240 fnt82 3816 7167(Retrie)m 6(v)k 3(e)k +4672(v)s 6(alue)k 5240(from)s 5764(cross)s 6306(reference)s +240 fnt83 266 6881(cr)m 10(oss-r)k 8(efer)k 8(ence)k +220 fnt35 1839 6876(@T)m 26(agged)k 240 fnt83 2888 6881(object)m +240 fnt82 3816 6879(Attach)m 4510(cross)s 5052(referencing)s 6192(tag)s +6537(to)s 6776(object)s 200 fnt84 1346 6226(Figur)m 3(e)k +1954(1.)s 200 fnt82 2196 6227(The)m 2552(23)s 2789(primiti)s 5(v)k 3(e)k +3556(operators)s 4338(of)s 4564(Lout,)s 5030(in)s 5232(order)s +5702(of)s 5928(increasing)s 6789(precedence.)s 240 fnt82 0 5596(one)m +402(column)s 1177(mark)s 1729(and)s 2133(one)s 2535(ro)s 6(w)k +2955(mark:)s 1572 215 0 106 240 288 60 480 5090 LoutGr2 +grestore save gsave 200 dict begin lfigdict begin +grestore +1572 215 0 106 240 288 60 0 0 LoutGr2 +/lfiglightgrey [ lfigbox ] gsave lfigpaintpath grestore +0.015 cm setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigbox ] lfigdopath +pop pop +grestore +1572 215 0 106 240 288 60 0 0 LoutGr2 + +0.015 cm setlinewidth lfiground setlinecap +0.15 cm /lfigdashed [ -0.3 cm ymark xsize ymark 0.3 cm 0 lfigpadd +[] +xmark -0.3 cm xmark ysize 0 0.3 cm lfigpadd ] lfigdopath +pop pop +grestore +0 52(metempsychosis)m +grestore + +grestore +end end restore +grestore +0 4639(T)m 19(o)k 337(place)s +934(tw)s 2(o)k 1381(arbitrary)s 2294(objects)s 3059(side)s +3537(by)s 3868(side,)s 4398(we)s 4770(use)s 5182(the)s +5567(in\207x)s 6099(operator)s 220 fnt35 6992 4636(|)m 240 fnt82 +7029 4639(,)m 7173(denoting)s 8102(horizontal)s 0 4351(concatenation.)m 1492(F)s 3(or)k +1881(e)s 3(xample,)k 220 fnt35 480 3850(USA |0.2i A)m 6(ustr)k 2(alia)k +240 fnt82 0 3395(produces)m 915(the)s 1263(object)s 476 166 0 57 240 288 60 480 2889 LoutGr2 +grestore save gsave 200 dict begin lfigdict begin +grestore +476 165 0 57 240 288 60 0 0 LoutGr2 +/lfiglightgrey [ lfigbox ] gsave lfigpaintpath grestore +0.015 cm setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigbox ] lfigdopath +pop pop +grestore +476 165 0 57 240 288 60 0 0 LoutGr2 + +0.015 cm setlinewidth lfiground setlinecap +0.15 cm /lfigdashed [ -0.3 cm ymark xsize ymark 0.3 cm 0 lfigpadd +[] +xmark -0.3 cm xmark ysize 0 0.3 cm lfigpadd ] lfigdopath +pop pop +grestore +0 3(USA)m + +grestore + +grestore +end end restore +grestore +875 166 0 57 240 288 60 1244 2889 LoutGr2 +grestore save gsave 200 dict begin lfigdict begin +grestore +875 165 0 56 240 288 60 0 1 LoutGr2 +/lfiglightgrey [ lfigbox ] gsave lfigpaintpath grestore +0.015 cm setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigbox ] lfigdopath +pop pop +grestore +875 165 0 56 240 288 60 0 0 LoutGr2 + +0.015 cm setlinewidth lfiground setlinecap +0.15 cm /lfigdashed [ -0.3 cm ymark xsize ymark 0.3 cm 0 lfigpadd +[] +xmark -0.3 cm xmark ysize 0 0.3 cm lfigpadd ] lfigdopath +pop pop +grestore +0 2(Australia)m +grestore + +grestore +end end restore +grestore +0 2438(The)m 443(ro)s 6(w)k 879(marks)s +1529(are)s 1892(mer)s 4(ged)k 2678(into)s 3119(one,)s +3587(\207xing)s 4215(the)s 4579(v)s 3(ertical)k 5361(position)s +6205(of)s 6491(the)s 6855(objects)s 7598(relati)s 6(v)k 3(e)k +8376(to)s 8631(each)s 0 2150(other;)m 611(their)s 1116(horizontal)s +2148(separation)s 3196(is)s 3414(determined)s 4555(by)s 4857(the)s +240 fnt83 5214 2152(gap)m 240 fnt82 5635 2150(attached)m 6497(to)s +6744(the)s 7101(operator)s 9(,)k 8003(in)s 8254(this)s +8659(case)s 0 1862(0.2)m 361(inches.)s 1143(W)s 19(e)k +1519(think)s 2080(of)s 2358(the)s 2713(g)s 1(ap)k +3118(as)s 3376(part)s 3814(of)s 4092(the)s 4448(operator)s 9(,)k +5349(although)s 6251(strictly)s 6974(it)s 7174(is)s 7391(a)s +7564(third)s 8081(parameter)s 13(.)k 0 1574(It)m 205(may)s +671(be)s 953(omitted,)s 1790(def)s 2(aulting)k 2810(to)s +220 fnt35 3049 1571(0i)m 240 fnt82 3205 1574(.)m 240 fnt83 +480 1202(V)m 26(ertical)k 1294(concatenation)s 240 fnt82 2644 1200(,)m +2762(denoted)s 3590(by)s 3895(the)s 4254(in\207x)s 4760(operator)s +220 fnt35 5627 1197(/)m 240 fnt82 5691 1200(,)m 5809(is)s +6031(the)s 6390(same)s 6948(apart)s 7497(from)s 8032(the)s +8392(change)s 0 912(of)m 271(direction:)s 220 fnt35 480 461(A)m 6(ustr)k 2(alia /0.1i USA)k + +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 6 7 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Helvetica +%%+ font Times-Italic +/pgsave save def +%%IncludeResource: font Helvetica +/Helveticafnt35 vec2 /Helvetica LoutRecode +/fnt35 { /Helveticafnt35 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +0 LoutMargSet +grestore +4348 13842(-)m 4476(6)s 4649(-)s 0 13251(produces)m 915(the)s +1263(object)s 875 165 0 56 240 288 60 480 12746 LoutGr2 +grestore save gsave 200 dict begin lfigdict begin +grestore +875 165 0 56 240 288 60 0 0 LoutGr2 +/lfiglightgrey [ lfigbox ] gsave lfigpaintpath grestore +0.015 cm setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigbox ] lfigdopath +pop pop +grestore +875 165 0 56 240 288 60 0 0 LoutGr2 + +0.015 cm setlinewidth lfiground setlinecap +0.15 cm /lfigdashed [ -0.3 cm ymark xsize ymark 0.3 cm 0 lfigpadd +[] +xmark -0.3 cm xmark ysize 0 0.3 cm lfigpadd ] lfigdopath +pop pop +grestore +0 2(Australia)m +grestore + +grestore +end end restore +grestore +875 165 0 57 240 288 60 480 12437 LoutGr2 +grestore save gsave 200 dict begin lfigdict begin +grestore +476 165 0 57 240 288 60 0 0 LoutGr2 +/lfiglightgrey [ lfigbox ] gsave lfigpaintpath grestore +0.015 cm setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigbox ] lfigdopath +pop pop +grestore +476 165 0 57 240 288 60 0 0 LoutGr2 + +0.015 cm setlinewidth lfiground setlinecap +0.15 cm /lfigdashed [ -0.3 cm ymark xsize ymark 0.3 cm 0 lfigpadd +[] +xmark -0.3 cm xmark ysize 0 0.3 cm lfigpadd ] lfigdopath +pop pop +grestore +0 3(USA)m +grestore + +grestore +end end restore +grestore +0 11986(with)m 482(column)s +1257(marks)s 1892(mer)s 4(ged)k 2663(and)s 3067(a)s +3233(0.1)s 3568(inch)s 4037(g)s 1(ap.)k 480 11612(Consider)m +1404(no)s 6(w)k 1865(what)s 2390(happens)s 3226(when)s +3802(horizontal)s 4826(and)s 5230(v)s 3(ertical)k 5997(are)s +6344(combined:)s 220 fnt35 1000 11111({)m 1186(USA)s 2442(|0.2i)s +2958(A)s 6(ustr)k 2(alia)k 3919(})s 480 10823(/0.1i)m +1000({)s 1186(W)s 8(ashington)k 2442(|)s 2958(Canberr)s 2(a)k +3987(})s 240 fnt82 0 10324(The)m 445(tw)s 2(o)k +872(parameters)s 1987(of)s 220 fnt35 2275 10321(/)m 240 fnt82 +2416 10324(no)m 6(w)k 2895(ha)s 4(v)k 3(e)k +3413(tw)s 2(o)k 3840(column)s 4632(marks)s 5284(each,)s +5846(and)s 6268(the)s 3(y)k 6748(will)s 7191(be)s +7490(mer)s 4(ged)k 8278(with)s 8778(the)s 0 10036(corresponding)m +1422(marks)s 2057(in)s 2300(the)s 2648(other)s 3199(parameter)s 9(,)k +4251(yielding)s 5088(the)s 5436(object)s 476 166 0 57 240 288 60 480 9530 LoutGr2 +grestore save gsave 200 dict begin lfigdict begin +grestore +476 165 0 57 240 288 60 0 0 LoutGr2 +/lfiglightgrey [ lfigbox ] gsave lfigpaintpath grestore +0.015 cm setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigbox ] lfigdopath +pop pop +grestore +476 165 0 57 240 288 60 0 0 LoutGr2 + +0.015 cm setlinewidth lfiground setlinecap +0.15 cm /lfigdashed [ -0.3 cm ymark xsize ymark 0.3 cm 0 lfigpadd +[] +xmark -0.3 cm xmark ysize 0 0.3 cm lfigpadd ] lfigdopath +pop pop +grestore +0 3(USA)m +grestore + +grestore +end end restore +grestore +659 166 0 57 240 288 60 956 9530 LoutGr2 +0 ymark moveto xsize 10 pt add ymark lineto [ 3 pt ] 0 setdash stroke +grestore + +grestore +876 166 0 57 240 288 60 1903 9530 LoutGr2 +grestore save gsave 200 dict begin lfigdict begin +grestore +875 165 0 56 240 288 60 0 1 LoutGr2 +/lfiglightgrey [ lfigbox ] gsave lfigpaintpath grestore +0.015 cm setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigbox ] lfigdopath +pop pop +grestore +875 165 0 56 240 288 60 0 0 LoutGr2 + +0.015 cm setlinewidth lfiground setlinecap +0.15 cm /lfigdashed [ -0.3 cm ymark xsize ymark 0.3 cm 0 lfigpadd +[] +xmark -0.3 cm xmark ysize 0 0.3 cm lfigpadd ] lfigdopath +pop pop +grestore +0 2(Australia)m + +grestore + +grestore +end end restore +grestore +1135 215 0 106 240 288 60 480 9171 LoutGr2 +grestore save gsave 200 dict begin lfigdict begin +grestore +1135 215 0 106 240 288 60 0 0 LoutGr2 +/lfiglightgrey [ lfigbox ] gsave lfigpaintpath grestore +0.015 cm setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigbox ] lfigdopath +pop pop +grestore +1135 215 0 106 240 288 60 0 0 LoutGr2 + +0.015 cm setlinewidth lfiground setlinecap +0.15 cm /lfigdashed [ -0.3 cm ymark xsize ymark 0.3 cm 0 lfigpadd +[] +xmark -0.3 cm xmark ysize 0 0.3 cm lfigpadd ] lfigdopath +pop pop +grestore +0 52(W)m 19(ashington)k +grestore + +grestore +end end restore +grestore +876 215 0 106 240 288 60 1903 9171 LoutGr2 +grestore save gsave 200 dict begin lfigdict begin +grestore +876 166 0 57 240 288 60 0 49 LoutGr2 +/lfiglightgrey [ lfigbox ] gsave lfigpaintpath grestore +0.015 cm setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigbox ] lfigdopath +pop pop +grestore +876 166 0 57 240 288 60 0 0 LoutGr2 + +0.015 cm setlinewidth lfiground setlinecap +0.15 cm /lfigdashed [ -0.3 cm ymark xsize ymark 0.3 cm 0 lfigpadd +[] +xmark -0.3 cm xmark ysize 0 0.3 cm lfigpadd ] lfigdopath +pop pop +grestore +0 3(Canberra)m +grestore + +grestore +end end restore +grestore +0 8720(The)m 220 fnt35 +425 8717(0.2i)m 240 fnt82 821 8720(g)m 1(ap)k 1216(separates)s +2139(columns,)s 3054(not)s 3416(indi)s 6(vidual)k 4432(items)s +4997(in)s 5237(columns,)s 6152(so)s 6414(a)s 6577(g)s 1(ap)k +6972(attached)s 7823(to)s 8059(the)s 8403(second)s 220 fnt35 +0 8429(|)m 240 fnt82 96 8432(w)m 2(ould)k 749(serv)s 3(e)k +1304(no)s 1595(purpose;)s 2464(an)s 3(y)k 2859(such)s +3353(g)s 1(ap)k 3749(is)s 3957(ignored.)s 4851(If)s +5079(the)s 5425(number)s 6214(of)s 6484(marks)s 7117(to)s +7354(be)s 7634(mer)s 4(ged)k 8403(dif)s 6(fers,)k +0 8144(empty)m 638(columns)s 1485(are)s 1818(added)s 2433(at)s +2651(the)s 2984(right)s 3481(to)s 3705(equalize)s 4542(the)s +4876(number)s 13(.)k 5743(The)s 6157(four)s 6600(marks)s +7221(protruding)s 8269(from)s 8778(the)s 0 7856(result)m 601(are)s +959(all)s 1263(a)s 4(v)k 6(ailable)k 2182(for)s +2531(mer)s 4(ging)k 3389(with)s 3882(neighbouring)s 5223(marks)s +5869(by)s 6174(other)s 6736(concatenation)s 8133(operators.)s 0 7568(The)m +428(precedence)s 1559(of)s 220 fnt35 1830 7565(|)m 240 fnt82 +1927 7568(is)m 2137(higher)s 2808(than)s 3277(the)s 3625(precedence)s +4756(of)s 220 fnt35 5027 7565(/)m 240 fnt82 5091 7568(,)m +5198(so)s 5464(the)s 5812(braces)s 6473(could)s 7063(be)s +7345(omitted.)s 480 7194(When)m 1131(lines)s 1656(of)s 1950(te)s 3(xt)k +2387(are)s 2757(concatenated,)s 4135(it)s 4349(is)s 4582(con)s 9(v)k 3(entional)k +5884(to)s 6145(measure)s 7020(their)s 7540(separation)s 8602(from)s +0 6906(baseline)m 832(to)s 1063(baseline)s 1894(\(mark)s 2517(to)s +2748(mark)s 3292(in)s 3527(Lout\),)s 4157(rather)s 4765(than)s +5226(from)s 5742(edge)s 6242(to)s 6473(edge)s 6973(as)s +7215(abo)s 3(v)k 3(e.)k 7937(This)s 8405(idea)s +8855(of)s 0 6618(dif)m 6(ferent)k 863(reference)s 1794(points)s +2417(for)s 2743(measurement)s 4065(e)s 6(v)k 4(olv)k 3(ed)k +4855(o)s 3(v)k 3(er)k 5322(the)s 5658(years)s +6200(into)s 6613(a)s 6767(system)s 7478(of)s 7737(six)s +240 fnt83 8059 6620(gap)m 8459(modes)s 240 fnt82 0 6330(\(Figure)m +769(2\),)s 1085(e)s 3(xpressed)k 2094(by)s 2398(appending)s +3460(a)s 3636(letter)s 4195(to)s 4445(the)s 4803(length.)s +5576(F)s 3(or)k 5975(e)s 3(xample,)k 220 fnt35 +6899 6327(|0.2i)m 240 fnt82 7366 6330(is)m 7586(an)s 7880(abbre)s 6(viation)k +0 6042(for)m 220 fnt35 377 6039(|0.2ie)m 240 fnt82 901 6042(,)m +1047(meaning)s 1963(0.2)s 2356(inches)s 3057(measured)s 4070(from)s +4633(edge)s 5180(to)s 5458(edge;)s 220 fnt35 6061 6039(|0.3ix)m +240 fnt82 6678 6042(produces)m 7632(a)s 7837(0.3)s 8220(inch)s +8728(g)s 1(ap)k 0 5754(measured)m 972(from)s 1493(mark)s +2043(to)s 2279(mark)s 2829(and)s 3230(widened)s 4097(if)s +4311(necessary)s 5292(to)s 5528(pre)s 6(v)k 3(ent)k +6294(o)s 3(v)k 3(erstriking;)k 7552(and)s 220 fnt35 +7954 5751(|2.5it)m 240 fnt82 8478 5754(places)m 0 5466(its)m 273(right)s +781(parameter)s 1792(2.5)s 2135(inches)s 2794(from)s 3314(the)s +3659(current)s 4392(left)s 4766(mar)s 4(gin,)k 5543(irrespecti)s 6(v)k 3(e)k +6699(of)s 6967(the)s 7312(position)s 8137(of)s 8405(the)s +8749(left)s 0 5178(parameter)m 13(.)k 1098(There)s 1704(is)s +1907(also)s 2338(a)s 2496(choice)s 3169(of)s 3433(ele)s 6(v)k 3(en)k +4098(units)s 4606(of)s 4870(measurement)s 6197(\(inches,)s 6987(centimetres,)s +8186(multiples)s 0 4890(of)m 288(the)s 654(current)s 1407(font)s +1870(size,)s 2365(etc.\),)s 2907(the)s 3272(most)s 3815(interesting)s +4894(being)s 5496(the)s 220 fnt35 5862 4887(r)m 240 fnt82 +6012 4890(unit:)m 6568(one)s 220 fnt35 6987 4887(r)m 240 fnt82 +7138 4890(is)m 7365(the)s 7731(column)s 8524(width)s 0 4602(minus)m +635(the)s 982(width)s 1583(of)s 1852(the)s 2199(follo)s 6(wing)k +3175(object,)s 3864(so)s 4129(that)s 220 fnt35 4546 4599(|1r)m -8(t)k +240 fnt82 4921 4602(produces)m 5835(suf\207cient)s 6783(space)s 7368(to)s +7606(right)s 8116(justify)s 8778(the)s 0 4314(follo)m 6(wing)k +987(object,)s 1688(and)s 220 fnt35 2103 4311(|0.5r)m -8(t)k +240 fnt82 2673 4314(to)m 2923(center)s 3576(it.)s 3883(These)s +4520(features)s 5337(implement)s 6429(spacings)s 7315(needed)s 8061(in)s +8315(practice)s 0 4026(rather)m 608(than)s 1069(suggested)s 2063(by)s +2349(theory)s 15(.)k 3101(The)s 3(y)k 3636(w)s 2(ork)k +4179(with)s 4653(all)s 4938(\207v)s 3(e)k 5342(concatenation)s +6719(operators,)s 7707(horizontal)s 8722(and)s 0 3738(v)m 3(ertical.)k +480 3364(When)m 1113(we)s 1452(construct)s 2392(a)s 2562(b)s 4(uilt-up)k +3372(fraction,)s 4225(the)s 4577(result)s 5171(has)s 5545(three)s +6082(ro)s 6(w)k 6506(marks,)s 7201(b)s 4(ut)k +7567(only)s 8051(the)s 8403(second)s 0 3076(should)m 697(be)s +979(visible)s 1672(outside)s 2419(the)s 2767(object:)s gsave +480 2245 translate +240 fnt83 156 491 0 288 240 288 12 LoutGraphic +gsave +grestore save gsave 200 dict begin lfigdict begin +grestore +156 491 0 288 240 288 12 0 0 LoutGr2 +/lfiglightgrey [ lfigbox ] gsave lfigpaintpath grestore +0.015 cm setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigbox ] lfigdopath +pop pop +grestore +156 491 0 288 240 288 12 0 0 LoutGr2 + +0.015 cm setlinewidth lfiground setlinecap +0.15 cm /lfigdashed [ -0.3 cm ymark xsize ymark 0.3 cm 0 lfigpadd +[] +xmark -0.3 cm xmark ysize 0 0.3 cm lfigpadd ] lfigdopath +pop pop +grestore +0 336(X)m +156 0 0 0 240 288 12 0 288 LoutGr2 +0 0 moveto xsize 0 lineto 0.05 ft setlinewidth stroke +grestore + +grestore +2 68(Y)m +grestore + +grestore +end end restore +grestore +0 1794(This)m 493(is)s 721(a)s 905(common)s +1817(problem,)s 2739(and)s 3161(accordingly)s 4361(a)s 220 fnt35 +4545 1791(@OneRo)m 3(w)k 240 fnt82 5694 1794(operator)m 6567(w)s 2(as)k +7006(introduced)s 8105(for)s 8461(hiding)s 0 1506(all)m 291(b)s 4(ut)k +650(one)s 1050(of)s 1318(the)s 1663(ro)s 6(w)k +2081(marks)s 2713(of)s 2981(its)s 3255(parameter)s 13(.)k +4357(Normally)s 15(,)k 5363(the)s 5708(\207rst)s 6136(mark)s +6686(is)s 6893(the)s 7238(survi)s 6(v)k 4(or)k 9(,)k +8121(b)s 4(ut)k 8480(a)s 8643(later)s 0 1218(mark)m +552(can)s 941(be)s 1223(chosen)s 1945(by)s 2239(pre\207xing)s +220 fnt35 3156 1215(^)m 240 fnt82 3322 1218(to)m 3561(the)s +3909(preceding)s 4905(concatenation)s 6290(operator:)s 220 fnt35 480 717(@OneRo)m 3(w { X ^/2p @HLine /2p )k 19(Y })k + +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 7 8 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Helvetica +%%+ font Times-Italic +%%+ font Symbol +%%+ font Times-Bold +/pgsave save def +%%IncludeResource: font Helvetica +/Helveticafnt35 vec2 /Helvetica LoutRecode +/fnt35 { /Helveticafnt35 LoutFont } def +%%IncludeResource: font Symbol +/fnt78 { /Symbol LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +1 LoutMargSet +grestore +4351 13848(-)m 4479(7)s 4647(-)s 6693 8221 0 8221 240 288 60 1186 5201 LoutGr2 +grestore save gsave 200 dict begin lfigdict begin +grestore +0 7447(Edge-to-edge)m 220 fnt35 +1786 7444(|)m 240 fnt83 1843 7449(length)m 220 fnt35 2456 7444(e)m +240 fnt82 0 6238(Hyphenation)m 220 fnt35 1786 6235(|)m 240 fnt83 +1843 6240(length)m 220 fnt35 2456 6235(h)m 240 fnt82 0 5029(Ov)m 3(erstrik)k 2(e)k +220 fnt35 1786 5026(|)m 240 fnt83 1843 5031(length)m 220 fnt35 +2456 5026(o)m 240 fnt82 0 3820(Mark-to-mark)m 220 fnt35 1786 3817(|)m +240 fnt83 1843 3822(length)m 220 fnt35 2456 3817(x)m 240 fnt82 +0 2611(K)m 6(erning)k 220 fnt35 1786 2608(|)m 240 fnt83 +1843 2613(length)m 220 fnt35 2456 2608(k)m 240 fnt82 0 1402(T)m 19(ab)k 4(ulation)k +220 fnt35 1786 1399(|)m 240 fnt83 1843 1404(length)m 220 fnt35 +2456 1399(t)m gsave +3291 0 translate +240 fnt82 3402 8221 0 8221 240 288 60 LoutGraphic +gsave + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigbox ] lfigdopath +pop pop +grestore +gsave +567 7485 translate +180 fnt82 680 340 0 340 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto +xsize ysize lineto 0 ysize lineto closepath +gsave 0.9 setgray fill grestore stroke +grestore + +grestore +gsave +680 7371 translate +180 fnt82 2722 567 0 567 180 288 45 LoutGraphic +gsave +0 0 moveto 0 ysize lineto [ 3 pt ] 0 setdash stroke +grestore + +grestore +gsave +2268 7485 translate +180 fnt82 680 340 0 340 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto +xsize ysize lineto 0 ysize lineto closepath +gsave 0.9 setgray fill grestore stroke +grestore + +grestore +gsave +2551 7371 translate +180 fnt82 851 567 0 567 180 288 45 LoutGraphic +gsave +0 0 moveto 0 ysize lineto [ 3 pt ] 0 setdash stroke +grestore + +grestore +gsave +2267 7395 translate +180.0000 rotate +gsave +0 0 translate +30.0000 rotate +gsave +0 0 translate +180 fnt82 68 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore +gsave +0 0 translate +180 fnt82 1020 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore +gsave +0 0 translate +-30.0000 rotate +gsave +0 0 translate +180 fnt82 68 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore + +grestore +gsave +1247 7395 translate +30.0000 rotate +gsave +0 0 translate +180 fnt82 68 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore +gsave +1247 7395 translate +180 fnt82 1020 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore +gsave +1247 7395 translate +-30.0000 rotate +gsave +0 0 translate +180 fnt82 68 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore +180 fnt83 1534 7192(length)m gsave +567 6304 translate +180 fnt82 680 340 0 340 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto +xsize ysize lineto 0 ysize lineto closepath +gsave 0.9 setgray fill grestore stroke +grestore + +grestore +gsave +680 6190 translate +180 fnt82 2722 567 0 567 180 288 45 LoutGraphic +gsave +0 0 moveto 0 ysize lineto [ 3 pt ] 0 setdash stroke +grestore + +grestore +gsave +2268 6304 translate +180 fnt82 680 340 0 340 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto +xsize ysize lineto 0 ysize lineto closepath +gsave 0.9 setgray fill grestore stroke +grestore + +grestore +gsave +2551 6190 translate +180 fnt82 851 567 0 567 180 288 45 LoutGraphic +gsave +0 0 moveto 0 ysize lineto [ 3 pt ] 0 setdash stroke +grestore + +grestore +gsave +2267 6214 translate +180.0000 rotate +gsave +0 0 translate +30.0000 rotate +gsave +0 0 translate +180 fnt82 68 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore +gsave +0 0 translate +180 fnt82 1020 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore +gsave +0 0 translate +-30.0000 rotate +gsave +0 0 translate +180 fnt82 68 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore + +grestore +gsave +1247 6214 translate +30.0000 rotate +gsave +0 0 translate +180 fnt82 68 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore +gsave +1247 6214 translate +180 fnt82 1020 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore +gsave +1247 6214 translate +-30.0000 rotate +gsave +0 0 translate +180 fnt82 68 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore +1534 6011(length)m gsave +567 5123 translate +180 fnt82 680 340 0 340 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto +xsize ysize lineto 0 ysize lineto closepath +gsave 0.9 setgray fill grestore stroke +grestore + +grestore +gsave +680 5009 translate +180 fnt82 2722 567 0 567 180 288 45 LoutGraphic +gsave +0 0 moveto 0 ysize lineto [ 3 pt ] 0 setdash stroke +grestore + +grestore +gsave +2268 5123 translate +180 fnt82 680 340 0 340 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto +xsize ysize lineto 0 ysize lineto closepath +gsave 0.9 setgray fill grestore stroke +grestore + +grestore +gsave +2551 5009 translate +180 fnt82 851 567 0 567 180 288 45 LoutGraphic +gsave +0 0 moveto 0 ysize lineto [ 3 pt ] 0 setdash stroke +grestore + +grestore +gsave +2551 4976 translate +180.0000 rotate +gsave +0 0 translate +30.0000 rotate +gsave +0 0 translate +180 fnt82 68 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore +gsave +0 0 translate +180 fnt82 1871 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore +gsave +0 0 translate +-30.0000 rotate +gsave +0 0 translate +180 fnt82 68 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore + +grestore +gsave +680 4976 translate +30.0000 rotate +gsave +0 0 translate +180 fnt82 68 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore +gsave +680 4976 translate +180 fnt82 1871 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore +gsave +680 4976 translate +-30.0000 rotate +gsave +0 0 translate +180 fnt82 68 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore +1392 4774(length)m +gsave +567 3886 translate +180 fnt82 680 340 0 340 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto +xsize ysize lineto 0 ysize lineto closepath +gsave 0.9 setgray fill grestore stroke +grestore + +grestore +gsave +680 3772 translate +180 fnt82 2722 567 0 567 180 288 45 LoutGraphic +gsave +0 0 moveto 0 ysize lineto [ 3 pt ] 0 setdash stroke +grestore + +grestore +gsave +2268 3886 translate +180 fnt82 680 340 0 340 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto +xsize ysize lineto 0 ysize lineto closepath +gsave 0.9 setgray fill grestore stroke +grestore + +grestore +gsave +2551 3772 translate +180 fnt82 851 567 0 567 180 288 45 LoutGraphic +gsave +0 0 moveto 0 ysize lineto [ 3 pt ] 0 setdash stroke +grestore + +grestore +gsave +2551 3739 translate +180.0000 rotate +gsave +0 0 translate +30.0000 rotate +gsave +0 0 translate +180 fnt82 68 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore +gsave +0 0 translate +180 fnt82 1871 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore +gsave +0 0 translate +-30.0000 rotate +gsave +0 0 translate +180 fnt82 68 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore + +grestore +gsave +680 3739 translate +30.0000 rotate +gsave +0 0 translate +180 fnt82 68 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore +gsave +680 3739 translate +180 fnt82 1871 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore +gsave +680 3739 translate +-30.0000 rotate +gsave +0 0 translate +180 fnt82 68 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore +180 fnt82 941 3536(max)m 180 fnt78 1256 3531(\()m 180 fnt83 +1319 3537(length)m 180 fnt78 1774 3531(,)m 180 fnt83 1854 3537(a)m +180 fnt78 1994 3531(+)m 180 fnt83 2145 3537(b)m 180 fnt78 +2240 3531(\))m gsave +1247 4363 translate +180.0000 rotate +gsave +0 0 translate +30.0000 rotate +gsave +0 0 translate +180 fnt82 68 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore +gsave +0 0 translate +180 fnt82 567 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore +gsave +0 0 translate +-30.0000 rotate +gsave +0 0 translate +180 fnt82 68 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore + +grestore +gsave +680 4363 translate +30.0000 rotate +gsave +0 0 translate +180 fnt82 68 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore +gsave +680 4363 translate +180 fnt82 567 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore +gsave +680 4363 translate +-30.0000 rotate +gsave +0 0 translate +180 fnt82 68 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore +180 fnt83 920 4431(a)m gsave +2551 4363 translate +180.0000 rotate +gsave +0 0 translate +30.0000 rotate +gsave +0 0 translate +180 fnt82 68 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore +gsave +0 0 translate +180 fnt82 283 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore +gsave +0 0 translate +-30.0000 rotate +gsave +0 0 translate +180 fnt82 68 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore + +grestore +gsave +2268 4363 translate +30.0000 rotate +gsave +0 0 translate +180 fnt82 68 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore +gsave +2268 4363 translate +180 fnt82 283 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore +gsave +2268 4363 translate +-30.0000 rotate +gsave +0 0 translate +180 fnt82 68 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore +2366 4387(b)m gsave +567 2590 translate +180 fnt82 680 340 0 340 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto +xsize ysize lineto 0 ysize lineto closepath +gsave 0.9 setgray fill grestore stroke +grestore + +grestore +gsave +680 2476 translate +180 fnt82 2722 567 0 567 180 288 45 LoutGraphic +gsave +0 0 moveto 0 ysize lineto [ 3 pt ] 0 setdash stroke +grestore + +grestore +gsave +2268 2590 translate +180 fnt82 680 340 0 340 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto +xsize ysize lineto 0 ysize lineto closepath +gsave 0.9 setgray fill grestore stroke +grestore + +grestore +gsave +2551 2476 translate +180 fnt82 851 567 0 567 180 288 45 LoutGraphic +gsave +0 0 moveto 0 ysize lineto [ 3 pt ] 0 setdash stroke +grestore + +grestore +gsave +2551 2443 translate +180.0000 rotate +gsave +0 0 translate +30.0000 rotate +gsave +0 0 translate +180 fnt82 68 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore +gsave +0 0 translate +180 fnt82 1871 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore +gsave +0 0 translate +-30.0000 rotate +gsave +0 0 translate +180 fnt82 68 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore + +grestore +gsave +680 2443 translate +30.0000 rotate +gsave +0 0 translate +180 fnt82 68 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore +gsave +680 2443 translate +180 fnt82 1871 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore +gsave +680 2443 translate +-30.0000 rotate +gsave +0 0 translate +180 fnt82 68 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore +180 fnt82 +999 2240(max)m 180 fnt78 1314 2235(\()m 180 fnt83 1377 2241(length)m +180 fnt78 1832 2235(,)m 180 fnt83 1912 2241(a)m 180 fnt78 +2007 2235(,)m 180 fnt83 2087 2241(b)m 180 fnt78 2182 2235(\))m +gsave +1247 3067 translate +180.0000 rotate +gsave +0 0 translate +30.0000 rotate +gsave +0 0 translate +180 fnt82 68 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore +gsave +0 0 translate +180 fnt82 567 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore +gsave +0 0 translate +-30.0000 rotate +gsave +0 0 translate +180 fnt82 68 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore + +grestore +gsave +680 3067 translate +30.0000 rotate +gsave +0 0 translate +180 fnt82 68 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore +gsave +680 3067 translate +180 fnt82 567 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore +gsave +680 3067 translate +-30.0000 rotate +gsave +0 0 translate +180 fnt82 68 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore +180 fnt83 920 3135(a)m gsave +2551 3067 translate +180.0000 rotate +gsave +0 0 translate +30.0000 rotate +gsave +0 0 translate +180 fnt82 68 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore +gsave +0 0 translate +180 fnt82 283 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore +gsave +0 0 translate +-30.0000 rotate +gsave +0 0 translate +180 fnt82 68 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore + +grestore +gsave +2268 3067 translate +30.0000 rotate +gsave +0 0 translate +180 fnt82 68 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore +gsave +2268 3067 translate +180 fnt82 283 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore +gsave +2268 3067 translate +-30.0000 rotate +gsave +0 0 translate +180 fnt82 68 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore +2366 3091(b)m gsave +567 1438 translate +180 fnt82 680 340 0 340 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto +xsize ysize lineto 0 ysize lineto closepath +gsave 0.9 setgray fill grestore stroke +grestore + +grestore +gsave +680 1324 translate +180 fnt82 2722 567 0 567 180 288 45 LoutGraphic +gsave +0 0 moveto 0 ysize lineto [ 3 pt ] 0 setdash stroke +grestore + +grestore +gsave +2268 1438 translate +180 fnt82 680 340 0 340 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto +xsize ysize lineto 0 ysize lineto closepath +gsave 0.9 setgray fill grestore stroke +grestore + +grestore +gsave +2551 1324 translate +180 fnt82 851 567 0 567 180 288 45 LoutGraphic +gsave +0 0 moveto 0 ysize lineto [ 3 pt ] 0 setdash stroke +grestore + +grestore +gsave +2268 1234 translate +180.0000 rotate +gsave +0 0 translate +30.0000 rotate +gsave +0 0 translate +180 fnt82 68 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore +gsave +0 0 translate +180 fnt82 2268 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore +gsave +0 0 translate +-30.0000 rotate +gsave +0 0 translate +180 fnt82 68 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore + +grestore +gsave +0 1234 translate +30.0000 rotate +gsave +0 0 translate +180 fnt82 68 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore +gsave +0 1234 translate +180 fnt82 2268 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore +gsave +0 1234 translate +-30.0000 rotate +gsave +0 0 translate +180 fnt82 68 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore +1587 1032(length)m gsave +3402 734 translate +180.0000 rotate +gsave +0 0 translate +30.0000 rotate +gsave +0 0 translate +180 fnt82 68 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore +gsave +0 0 translate +180 fnt82 3402 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore +gsave +0 0 translate +-30.0000 rotate +gsave +0 0 translate +180 fnt82 68 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore + +grestore +gsave +0 734 translate +30.0000 rotate +gsave +0 0 translate +180 fnt82 68 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore +gsave +0 734 translate +180 fnt82 3402 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore +gsave +0 734 translate +-30.0000 rotate +gsave +0 0 translate +180 fnt82 68 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore +1189 523(curr)m 6(ent)k +1759(bound)s +grestore +end end restore +grestore +200 fnt84 180 4638(Figur)m 3(e)k 788(2.)s +200 fnt82 1030 4639(The)m 1386(six)s 1664(g)s 1(ap)k +1995(modes)s 2557(\()s 200 fnt83 2618 4640(length)m 200 fnt82 +3162 4639(is)m 3336(an)s 3(y)k 3666(length\).)s 4367(Hyphenation)s +5444(mode)s 5933(has)s 6240(an)s 6475(e)s 3(xtra)k +6919(property)s 7639(not)s 7944(sho)s 5(wn)k 8507(here.)s +240 fnt82 0 4008(has)m 396(the)s 770(desired)s 1545(result,)s +2208(where)s 220 fnt35 2874 4005(2p)m 240 fnt82 3197 4008(is)m +3433(tw)s 2(o)k 3870(points)s 4532(and)s 220 fnt35 +4962 4005(@HLine)m 240 fnt82 5836 4008(is)m 6072(an)s 6381(easy)s +6887(combination)s 8166(of)s 8464(Lout')s 13(s)k 0 3720(graphics)m +861(operators.)s 1914(A)s 2144(similar)s 2866(operator)s 9(,)k +220 fnt35 3760 3717(@OneCol)m 240 fnt82 4712 3720(,)m 4819(hides)s +5375(column)s 6150(marks.)s 480 3346(A)m 728(v)s 6(ariant)k +1463(of)s 220 fnt35 1753 3343(/)m 240 fnt82 1895 3346(called)m +220 fnt35 2542 3343(//)m 240 fnt82 2745 3346(is)m 2974(pro)s 3(vided)k +3898(which)s 4558(performs)s 5490(v)s 3(ertical)k 6275(concatenation)s +7679(b)s 4(ut)k 8059(ignores)s 8833(all)s 0 3058(column)m +775(marks)s 1410(and)s 1814(simply)s 2519(left-justi\207es)s 3709(its)s +3985(tw)s 2(o)k 4395(parameters:)s 220 fnt35 480 2557(Heading //0.1i)m +480 2269(A |0.2i B /0.1i)m 480 1981(C | D)m 240 fnt82 0 1526(has)m 370(result)s +480 1073(Heading)m 480 716(A)m 938(B)s 480 410(C)m 938(D)s + +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 8 9 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Helvetica +%%+ font Times-Bold +%%+ font Times-Italic +%%+ font Symbol +/pgsave save def +%%IncludeResource: font Helvetica +/Helveticafnt35 vec2 /Helvetica LoutRecode +/fnt35 { /Helveticafnt35 LoutFont } def +%%IncludeResource: font Symbol +/fnt78 { /Symbol LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +0 LoutMargSet +grestore +4351 13844(-)m 4479(8)s 4646(-)s 0 13253(sho)m 6(wing)k +883(that)s 1325(spanning)s 2267(columns)s 3153(in)s 3420(tables)s +4052(moti)s 6(v)k 6(ate)k 4956(the)s 5328(inclusion)s +6286(of)s 6581(this)s 7001(operator)s 13(.)k 7972(There)s +8609(is)s 8843(an)s 0 12965(analogous)m 220 fnt35 1029 12962(||)m +240 fnt82 1191 12965(operator)m 13(.)k 2145(The)s 2581(author)s +3259(w)s 2(ould)k 3922(ha)s 4(v)k 3(e)k +4430(preferred)s 5370(to)s 5616(lea)s 4(v)k 3(e)k +6177(out)s 6550(these)s 7105(operators,)s 8108(since)s 8663(the)s 3(y)k +0 12677(complicate)m 1104(the)s 1452(implementation,)s 3059(and)s 3463(it)s +3655(is)s 3865(interesting)s 4926(to)s 5165(e)s 3(xamine)k +6028(the)s 6376(prospects)s 7330(of)s 7601(doing)s 8200(so.)s +480 12303(The)m 220 fnt35 953 12300(//)m 240 fnt82 1184 12303(operator)m +2086(is)s 2342(formally)s 3263(redundant,)s 4373(because)s 5232(in)s +5521(general)s 6324(the)s 6718(e)s 3(xpression)k 220 fnt35 +7841 12300(x // y)m 240 fnt82 8409 12303(can)m 8844(be)s 0 12015(replaced)m +867(by)s 220 fnt35 480 11514(@OneCol { | x } /)m 480 11226(@OneCol { | y })m 240 fnt82 +0 10728(for)m 338(an)s 3(y)k 734(objects)s 220 fnt35 +1462 10725(x)m 240 fnt82 1629 10728(and)m 220 fnt35 2032 10725(y)m +240 fnt82 2140 10728(.)m 2304(By)s 2637(concatenating)s 4017(an)s +4300(empty)s 4951(object)s 5594(at)s 5826(the)s 6173(left)s +6549(of)s 220 fnt35 6820 10725(x)m 240 fnt82 6987 10728(and)m +7390(hiding)s 8055(all)s 8347(b)s 4(ut)k 8708(that)s +0 10440(empty)m 641(object')s 13(s)k 1423(column)s 2186(mark,)s +2772(we)s 3095(ef)s 6(fecti)k 6(v)k 3(ely)k +4143(shift)s 220 fnt35 4615 10437(x)m 240 fnt82 4723 10440(')m 13(s)k +4921(column)s 5684(mark)s 6224(to)s 6452(its)s 6716(left)s +7081(edge.)s 7685(The)s 8101(same)s 8636(goes)s 0 10152(for)m +220 fnt35 349 10149(y)m 240 fnt82 457 10152(,)m 575(so)s +852(the)s 220 fnt35 1211 10149(/)m 240 fnt82 1347 10152(operator)m +2214(has)s 2595(just)s 3011(one)s 3424(column)s 4211(mark)s +4774(to)s 5024(mer)s 4(ge,)k 5735(at)s 5978(the)s +6338(e)s 3(xtreme)k 7171(left,)s 7606(and)s 8021(its)s +8308(ef)s 6(fect)k 8916(is)s 0 9864(indistinguishable)m 1690(from)s +220 fnt35 2214 9861(//)m 240 fnt82 2339 9864(.)m 480 9490(Unfortunately)m 15(,)k +1915(if)s 220 fnt35 2134 9487(y)m 240 fnt82 2304 9490(consists)m +3114(of)s 3387(tw)s 2(o)k 3799(ro)s 6(ws)k +4311(separated)s 5274(by)s 220 fnt35 5570 9487(/)m 240 fnt82 +5634 9490(,)m 5743(as)s 5995(in)s 6240(the)s 6590(e)s 3(xample)k +7455(abo)s 3(v)k 3(e,)k 8130(both)s 8616(ro)s 6(ws)k +0 9202(must)m 533(be)s 823(placed)s 1513(inside)s 2148(the)s +220 fnt35 2504 9199(@OneCol)m 240 fnt82 3456 9202(,)m 3571(and)s +3983(the)s 4340(table)s 4868(cannot)s 5574(be)s 5864(entered)s +6633(in)s 6884(the)s 7240(simple)s 7942(ro)s 6(w-by-ro)k 6(w)k +0 8914(manner)m 777(that)s 1194(non-e)s 3(xpert)k 2287(users)s +2828(naturally)s 3731(e)s 3(xpect.)k 4515(Another)s 5359(adv)s 6(antage)k +6378(of)s 220 fnt35 6649 8911(//)m 240 fnt82 6833 8914(is)m +7043(that)s 7460(its)s 7736(left)s 8112(parameter)s 0 8626(can)m +382(be)s 657(printed)s 1385(before)s 2044(its)s 2313(right)s +2817(parameter)s 3824(is)s 4027(kno)s 6(wn;)k 4779(this)s +5168(is)s 5371(important)s 6353(when)s 6922(the)s 7263(left)s +7633(parameter)s 8640(is)s 8843(an)s 0 8338(entire)m 599(page.)s +480 7964(The)m 960(\207fth)s 1468(and)s 1924(\207nal)s 2457(concatenation)s +3895(operator)s 9(,)k 220 fnt35 4841 7961(&)m 240 fnt82 +4983 7964(,)m 5143(is)s 5405(an)s 5741(e)s 3(xplicit)k +6567(v)s 3(ersion)k 7377(of)s 7701(the)s 8102(horizontal)s +0 7676(concatenation)m 1402(operator)s 2275(interpolated)s 3492(when)s 4085(objects)s +4830(are)s 5195(separated)s 6172(by)s 6483(white)s 7088(space.)s +7800(It)s 8022(is)s 8250(formally)s 0 7388(identical)m 907(to)s +220 fnt35 1177 7385(|)m 240 fnt82 1305 7388(e)m 3(xcept)k +2017(for)s 2386(taking)s 3068(higher)s 3770(precedence)s 4932(and)s +5367(being)s 5983(subject)s 6751(to)s 7021(replacement)s 8279(by)s +220 fnt35 8604 7385(//1vx)m 240 fnt82 0 7100(during)m 678(paragraph)s +1691(breaking)s 2581(\(Section)s 3434(2.5\).)s 240 fnt84 0 6451(2.4.)m +471(Implementation)s 2159(of)s 2431(objects)s 3201(and)s 3642(concatenation)s +240 fnt82 480 5974(In)m 738(this)s 1136(section)s 1872(we)s +2210(discuss)s 2954(the)s 3304(implementation)s 4863(of)s 5137(objects)s +5867(and)s 6273(concatenation,)s 7710(and)s 8117(especially)s 0 5686(mark)m +552(alignment.)s 1672(The)s 2100(\207rst)s 2531(step)s 2969(is)s +3179(to)s 3418(use)s 3793(an)s 4076(operator)s 4932(precedence)s +6063(parser)s 6706(to)s 6945(con)s 9(v)k 3(ert)k +7710(input)s 8262(such)s 8758(as)s 220 fnt35 480 5185(a |0.5i b /0.2i c | d)m +240 fnt82 0 4730(into)m 425(parse)s 985(trees)s 1486(such)s +1982(as)s gsave +480 3036 translate +240 fnt83 3396 1354 0 1298 240 288 12 LoutGraphic +gsave +grestore save gsave 200 dict begin lfigdict begin +grestore +1867 338 56 282 240 288 12 1529 1016 LoutGr2 +currentdict end 200 dict begin begin +grestore +338 338 56 282 240 288 12 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigcircle ] lfigdopath +pop pop +grestore +192 fnt78 136 106(\244)m +grestore +(T) lfigpromotelabels +grestore +1413 846 0 790 240 288 12 0 0 LoutGr2 +currentdict end 200 dict begin begin +grestore +876 338 56 282 240 288 12 537 508 LoutGr2 +currentdict end 200 dict begin begin +grestore +338 338 56 282 240 288 12 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigcircle ] lfigdopath +pop pop +grestore +192 fnt78 156 121(|)m + +grestore +(T) lfigpromotelabels +grestore +338 338 56 282 240 288 12 0 0 LoutGr2 +currentdict end 200 dict begin begin +grestore +338 338 56 282 240 288 12 0 0 LoutGr2 +currentdict end 200 dict begin begin +grestore +338 338 56 282 240 288 12 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigcircle ] lfigdopath +pop pop +grestore +192 fnt83 123 128(a)m +grestore +(T) lfigpromotelabels +grestore +(S) lfigpromotelabels +grestore +0 0 0 0 240 288 12 338 282 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef +T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath +pop pop +grestore + +grestore +511 338 56 282 240 288 12 451 0 LoutGr2 +currentdict end 200 dict begin begin +grestore +511 338 56 282 240 288 12 0 0 LoutGr2 +currentdict end 200 dict begin begin +grestore +511 338 56 282 240 288 12 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigellipse ] lfigdopath +pop pop +grestore +192 fnt78 56 105(0)m 192 fnt83 +195 111(.)m 192 fnt78 270 105(5)m 192 fnt83 404 111(i)m + +grestore +(T) lfigpromotelabels +grestore +(S) lfigpromotelabels +grestore +0 0 0 0 240 288 12 962 282 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef +T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath +pop pop +grestore + +grestore +338 338 56 282 240 288 12 1075 0 LoutGr2 +currentdict end 200 dict begin begin +grestore +338 338 56 282 240 288 12 0 0 LoutGr2 +currentdict end 200 dict begin begin +grestore +338 338 56 282 240 288 12 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigcircle ] lfigdopath +pop pop +grestore +192 fnt83 123 105(b)m +grestore +(T) lfigpromotelabels +grestore +(S) lfigpromotelabels +grestore +0 0 0 0 240 288 12 1413 282 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef +T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath +pop pop +grestore + +grestore +(S) lfigpromotelabels +grestore +0 0 0 0 240 288 12 1413 790 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef +T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath +pop pop +grestore + +grestore +517 846 56 790 240 288 12 1526 0 LoutGr2 +currentdict end 200 dict begin begin +grestore +517 846 56 790 240 288 12 0 0 LoutGr2 +currentdict end 200 dict begin begin +grestore +517 338 56 282 240 288 12 0 508 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigellipse ] lfigdopath +pop pop +grestore +192 fnt78 56 105(0)m 192 fnt83 +195 111(.)m 192 fnt78 270 105(2)m 192 fnt83 410 111(i)m + +grestore +(T) lfigpromotelabels +grestore +(S) lfigpromotelabels +grestore +0 0 0 0 240 288 12 2043 790 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef +T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath +pop pop +grestore + +grestore +1240 846 0 790 240 288 12 2156 0 LoutGr2 +currentdict end 200 dict begin begin +grestore +789 338 56 282 240 288 12 451 508 LoutGr2 +currentdict end 200 dict begin begin +grestore +338 338 56 282 240 288 12 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigcircle ] lfigdopath +pop pop +grestore +192 fnt78 156 121(|)m +grestore +(T) lfigpromotelabels +grestore +338 338 56 282 240 288 12 0 0 LoutGr2 +currentdict end 200 dict begin begin +grestore +338 338 56 282 240 288 12 0 0 LoutGr2 +currentdict end 200 dict begin begin +grestore +338 338 56 282 240 288 12 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigcircle ] lfigdopath +pop pop +grestore +192 fnt83 128 128(c)m +grestore +(T) lfigpromotelabels +grestore +(S) lfigpromotelabels +grestore +0 0 0 0 240 288 12 338 282 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef +T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath +pop pop +grestore + +grestore +338 338 56 282 240 288 12 451 0 LoutGr2 +currentdict end 200 dict begin begin +grestore +338 338 56 282 240 288 12 0 0 LoutGr2 +currentdict end 200 dict begin begin +grestore +338 338 56 282 240 288 12 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigcircle ] lfigdopath +pop pop +grestore + +grestore +(T) lfigpromotelabels +grestore +(S) lfigpromotelabels +grestore +0 0 0 0 240 288 12 789 282 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef +T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath +pop pop +grestore + +grestore +338 338 56 282 240 288 12 902 0 LoutGr2 +currentdict end 200 dict begin begin +grestore +338 338 56 282 240 288 12 0 0 LoutGr2 +currentdict end 200 dict begin begin +grestore +338 338 56 282 240 288 12 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigcircle ] lfigdopath +pop pop +grestore +192 fnt83 +118 105(d)m +grestore +(T) lfigpromotelabels +grestore +(S) lfigpromotelabels +grestore +0 0 0 0 240 288 12 1240 282 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef +T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath +pop pop +grestore + +grestore +(S) lfigpromotelabels +grestore +0 0 0 0 240 288 12 3396 790 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef +T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath +pop pop +grestore + +grestore +end end restore +grestore +0 2585(Missing)m 879(objects)s 1662(are)s 2065(replaced)s +2987(by)s 3336(empty)s 4044(objects,)s 4883(and)s 5342(sequences)s +6419(of)s 6745(concatenation)s 8186(operators)s 0 2297(are)m 347(consolidated:)s +gsave +480 648 translate +240 fnt83 2492 1359 0 1298 240 288 12 LoutGraphic +gsave +grestore save gsave 200 dict begin lfigdict begin +grestore +1415 338 56 282 240 288 12 1077 1016 LoutGr2 +currentdict end 200 dict begin begin +grestore +338 338 56 282 240 288 12 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigcircle ] lfigdopath +pop pop +grestore +192 fnt78 156 121(|)m +grestore +(T) lfigpromotelabels +grestore +338 846 56 790 240 288 12 0 0 LoutGr2 +currentdict end 200 dict begin begin +grestore +338 846 56 790 240 288 12 0 0 LoutGr2 +currentdict end 200 dict begin begin +grestore +338 338 56 282 240 288 12 0 508 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigcircle ] lfigdopath +pop pop +grestore +192 fnt83 123 128(a)m +grestore +(T) lfigpromotelabels +grestore +(S) lfigpromotelabels +grestore +0 0 0 0 240 288 12 338 790 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef +T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath +pop pop +grestore + +grestore +517 846 56 790 240 288 12 451 0 LoutGr2 +currentdict end 200 dict begin begin +grestore +517 846 56 790 240 288 12 0 0 LoutGr2 +currentdict end 200 dict begin begin +grestore +517 338 56 282 240 288 12 0 508 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigellipse ] lfigdopath +pop pop +grestore +192 fnt78 +56 105(0)m 192 fnt83 195 111(.)m 192 fnt78 270 105(2)m +192 fnt83 410 111(i)m +grestore +(T) lfigpromotelabels +grestore +(S) lfigpromotelabels +grestore +0 0 0 0 240 288 12 968 790 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef +T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath +pop pop +grestore + +grestore +1411 846 0 790 240 288 12 1081 0 LoutGr2 +currentdict end 200 dict begin begin +grestore +875 338 56 282 240 288 12 536 508 LoutGr2 +currentdict end 200 dict begin begin +grestore +338 338 56 282 240 288 12 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigcircle ] lfigdopath +pop pop +grestore +192 fnt78 156 121(|)m +grestore +(T) lfigpromotelabels +grestore +338 338 56 282 240 288 12 0 0 LoutGr2 +currentdict end 200 dict begin begin +grestore +338 338 56 282 240 288 12 0 0 LoutGr2 +currentdict end 200 dict begin begin +grestore +338 338 56 282 240 288 12 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigcircle ] lfigdopath +pop pop +grestore +192 fnt83 +128 128(c)m +grestore +(T) lfigpromotelabels +grestore +(S) lfigpromotelabels +grestore +0 0 0 0 240 288 12 338 282 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef +T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath +pop pop +grestore + +grestore +509 338 56 282 240 288 12 451 0 LoutGr2 +currentdict end 200 dict begin begin +grestore +509 338 56 282 240 288 12 0 0 LoutGr2 +currentdict end 200 dict begin begin +grestore +509 338 56 282 240 288 12 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigellipse ] lfigdopath +pop pop +grestore +192 fnt78 56 105(0)m 192 fnt83 195 111(.)m +192 fnt78 270 105(3)m 192 fnt83 402 111(i)m +grestore +(T) lfigpromotelabels +grestore +(S) lfigpromotelabels +grestore +0 0 0 0 240 288 12 960 282 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef +T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath +pop pop +grestore + +grestore +338 338 56 282 240 288 12 1073 0 LoutGr2 +currentdict end 200 dict begin begin +grestore +338 338 56 282 240 288 12 0 0 LoutGr2 +currentdict end 200 dict begin begin +grestore +338 338 56 282 240 288 12 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigcircle ] lfigdopath +pop pop +grestore +192 fnt83 +118 105(d)m +grestore +(T) lfigpromotelabels +grestore +(S) lfigpromotelabels +grestore +0 0 0 0 240 288 12 1411 282 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef +T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath +pop pop +grestore + +grestore +(S) lfigpromotelabels +grestore +0 0 0 0 240 288 12 2492 790 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef +T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath +pop pop +grestore + +grestore +end end restore +grestore +240 fnt78 3284 1886(\336)m gsave +3825 648 translate +240 fnt83 2492 1359 0 1298 240 288 12 LoutGraphic +gsave +grestore save gsave 200 dict begin lfigdict begin +grestore +1415 338 56 282 240 288 12 1077 1016 LoutGr2 +currentdict end 200 dict begin begin +grestore +338 338 56 282 240 288 12 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigcircle ] lfigdopath +pop pop +grestore +192 fnt78 156 121(|)m + +grestore +(T) lfigpromotelabels +grestore +338 846 56 790 240 288 12 0 0 LoutGr2 +currentdict end 200 dict begin begin +grestore +338 846 56 790 240 288 12 0 0 LoutGr2 +currentdict end 200 dict begin begin +grestore +338 338 56 282 240 288 12 0 508 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigcircle ] lfigdopath +pop pop +grestore +192 fnt83 123 128(a)m +grestore +(T) lfigpromotelabels +grestore +(S) lfigpromotelabels +grestore +0 0 0 0 240 288 12 338 790 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef +T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath +pop pop +grestore + +grestore +517 846 56 790 240 288 12 451 0 LoutGr2 +currentdict end 200 dict begin begin +grestore +517 846 56 790 240 288 12 0 0 LoutGr2 +currentdict end 200 dict begin begin +grestore +517 338 56 282 240 288 12 0 508 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigellipse ] lfigdopath +pop pop +grestore +192 fnt78 56 105(0)m 192 fnt83 +195 111(.)m 192 fnt78 270 105(2)m 192 fnt83 410 111(i)m + +grestore +(T) lfigpromotelabels +grestore +(S) lfigpromotelabels +grestore +0 0 0 0 240 288 12 968 790 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef +T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath +pop pop +grestore + +grestore +338 846 56 790 240 288 12 1081 0 LoutGr2 +currentdict end 200 dict begin begin +grestore +338 846 56 790 240 288 12 0 0 LoutGr2 +currentdict end 200 dict begin begin +grestore +338 338 56 282 240 288 12 0 508 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigcircle ] lfigdopath +pop pop +grestore +192 fnt83 128 128(c)m +grestore +(T) lfigpromotelabels +grestore +(S) lfigpromotelabels +grestore +0 0 0 0 240 288 12 1419 790 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef +T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath +pop pop +grestore + +grestore +509 846 56 790 240 288 12 1532 0 LoutGr2 +currentdict end 200 dict begin begin +grestore +509 846 56 790 240 288 12 0 0 LoutGr2 +currentdict end 200 dict begin begin +grestore +509 338 56 282 240 288 12 0 508 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigellipse ] lfigdopath +pop pop +grestore +192 fnt78 56 105(0)m 192 fnt83 +195 111(.)m 192 fnt78 270 105(3)m 192 fnt83 402 111(i)m + +grestore +(T) lfigpromotelabels +grestore +(S) lfigpromotelabels +grestore +0 0 0 0 240 288 12 2041 790 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef +T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath +pop pop +grestore + +grestore +338 846 56 790 240 288 12 2154 0 LoutGr2 +currentdict end 200 dict begin begin +grestore +338 846 56 790 240 288 12 0 0 LoutGr2 +currentdict end 200 dict begin begin +grestore +338 338 56 282 240 288 12 0 508 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigcircle ] lfigdopath +pop pop +grestore +192 fnt83 118 105(d)m +grestore +(T) lfigpromotelabels +grestore +(S) lfigpromotelabels +grestore +0 0 0 0 240 288 12 2492 790 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef +T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath +pop pop +grestore + +grestore +end end restore +grestore + +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 9 10 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Italic +%%+ font Symbol +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Symbol +/fnt78 { /Symbol LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt35 vec2 /Helvetica LoutRecode +/fnt35 { /Helveticafnt35 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +1 LoutMargSet +grestore +4349 13844(-)m 4477(9)s 4648(-)s 0 13251(to)m 239(mak)s 2(e)k +811(manifest)s 1693(their)s 2190(associati)s 6(vity)k 3432(and)s +3836(reduce)s 4529(the)s 4877(depth)s 5466(of)s 5737(the)s +6085(tree)s 6498(for)s 6836(ef\207cienc)s 3(y)k 7829(later)s 13(.)k +480 12877(The)m 970(required)s 1887(semantic)s 2851(information)s 4099(is)s +4371(the)s 4782(size)s 5271(of)s 5605(each)s 6162(subobject,)s +7249(consisting)s 8334(of)s 8668(four)s 0 12589(inte)m 3(gers:)k +920(width)s 1524(to)s 1765(left)s 2144(and)s 2550(right)s +3062(of)s 3335(the)s 3685(distinguished)s 5021(column)s 5798(mark,)s +6397(and)s 6803(height)s 7463(abo)s 3(v)k 3(e)k +8087(and)s 8493(belo)s 6(w)k 0 12301(the)m 368(distinguished)s +1722(ro)s 6(w)k 2162(mark.)s 2837(These)s 3484(numbers)s +4379(are)s 4746(al)s 2(w)k 2(ays)k 5477(non-ne)s 3(g)k 1(ati)k 6(v)k 3(e)k +6789(in)s 7052(Basser)s 7769(Lout,)s 8348(b)s 4(ut)k +8730(this)s 0 12013(restriction)m 1024(is)s 1234(unnecessary)s 2457(and)s +2861(should)s 3558(be)s 3840(dropped.)s 480 11639(F)m 3(or)k +867(the)s 1212(lea)s 4(v)k 3(es,)k 1907(which)s +2546(are)s 2890(simple)s 3581(w)s 2(ords,)k 4268(the)s +4614(numbers)s 5486(are)s 5830(obtained)s 6710(from)s 7231(font)s +7674(tables.)s 8392(F)s 3(or)k 8778(the)s 0 11351(higher)m +678(le)s 6(v)k 3(els)k 1285(we)s 1628(apply)s +2222(recursi)s 6(v)k 3(e)k 3152(rules.)s 3788(Suppose)s +4664(that)s 240 fnt83 5090 11353(hgap)m 240 fnt78 5583 11345(\()m +240 fnt83 5675 11353(x)m 240 fnt78 5801 11345(,)m 240 fnt83 +5932 11353(g)m 240 fnt78 6066 11345(,)m 240 fnt83 6197 11353(y)m +240 fnt78 6319 11345(\))m 240 fnt82 6453 11351(returns)m 7175(the)s +7531(desired)s 8287(distance)s 0 11063(between)m 846(the)s 1186(column)s +1952(marks)s 2579(of)s 2841(objects)s 240 fnt83 3561 11065(x)m +240 fnt82 3719 11063(and)m 240 fnt83 4114 11065(y)m 240 fnt82 +4268 11063(when)m 4835(the)s 3(y)k 5290(are)s 5629(separated)s +6580(by)s 6866(g)s 1(ap)k 240 fnt83 7255 11065(g)m +240 fnt82 7369 11063(:)m 240 fnt83 7527 11065(right)m 240 fnt78 +8000 11057(\()m 240 fnt83 8075 11065(x)m 240 fnt78 8185 11057(\))m +8298(+)s 240 fnt83 8473 11065(length)m 240 fnt78 0 10769(\()m +240 fnt83 89 10777(g)m 240 fnt78 221 10769(\))m 376(+)s +240 fnt83 594 10777(left)m 240 fnt78 920 10769(\()m 240 fnt83 +1009 10777(y)m 240 fnt78 1129 10769(\))m 240 fnt82 1261 10775(when)m +1842(the)s 2196(g)s 1(ap)k 2600(mode)s 3193(is)s +3409(edge-to-edge,)s 4770(the)s 5124(lar)s 4(ger)k 5741(of)s +240 fnt83 6018 10777(length)m 240 fnt78 6629 10769(\()m 240 fnt83 +6718 10777(g)m 240 fnt78 6850 10769(\))m 240 fnt82 6982 10775(and)m +240 fnt83 7391 10777(right)m 240 fnt78 7878 10769(\()m 240 fnt83 +7968 10777(x)m 240 fnt78 8091 10769(\))m 8246(+)s 240 fnt83 +8464 10777(left)m 240 fnt78 8790 10769(\()m 240 fnt83 8880 10777(y)m +240 fnt78 9000 10769(\))m 240 fnt82 0 10487(when)m 576(the)s +924(mode)s 1512(is)s 1722(mark-to-mark,)s 3155(and)s 3559(so)s +3825(on.)s 4229(Gi)s 6(v)k 3(en)k 4862(an)s +5145(object)s 240 fnt83 480 9992(X)m 240 fnt78 720 9984(=)m +240 fnt83 933 9992(x)m 168 fnt78 1039 9899(1)m 240 fnt78 +1249 9984(|)m 240 fnt83 1294 9992(g)m 168 fnt78 1405 9899(1)m +240 fnt78 1615 9984(\274)m 200 fnt83 1973 10000(^)m 240 fnt78 +2069 9984(|)m 240 fnt83 2114 9992(g)m 168 fnt83 2225 9905(i)m +168 fnt78 2291 9899(-)m 2403(1)s 240 fnt83 2613 9992(x)m +168 fnt83 2719 9905(i)m 240 fnt78 2907 9984(\274)m 3265(|)s +240 fnt83 3310 9992(g)m 168 fnt83 3421 9905(n)m 168 fnt78 +3523 9899(-)m 3635(1)s 240 fnt83 3845 9992(x)m 168 fnt83 +3951 9905(n)m 240 fnt82 0 9448(we)m 335(may)s 801(calculate)s +1705(its)s 1981(size)s 2408(as)s 2658(follo)s 6(ws:)k +240 fnt83 740 8945(left)m 240 fnt78 1060 8937(\()m 240 fnt83 +1144 8945(X)m 240 fnt78 1312 8937(\))m 1474(=)s 240 fnt83 +1687 8945(left)m 240 fnt78 2007 8937(\()m 240 fnt83 2091 8945(x)m +168 fnt78 2197 8852(1)m 240 fnt78 2275 8937(\))m 2413(+)s +240 fnt83 2614 8945(hgap)m 240 fnt78 3099 8937(\()m 240 fnt83 +3183 8945(x)m 168 fnt78 3289 8852(1)m 240 fnt78 3367 8937(,)m +240 fnt83 3474 8945(g)m 168 fnt78 3585 8852(1)m 240 fnt78 +3663 8937(,)m 240 fnt83 3770 8945(x)m 168 fnt78 3876 8852(2)m +240 fnt78 3968 8937(\))m 4106(+)s 4307(\274)s 4593(+)s +240 fnt83 4794 8945(hgap)m 240 fnt78 5279 8937(\()m 240 fnt83 +5363 8945(x)m 168 fnt83 5469 8858(i)m 168 fnt78 5535 8852(-)m +5647(1)s 240 fnt78 5725 8937(,)m 240 fnt83 5832 8945(g)m +168 fnt83 5943 8858(i)m 168 fnt78 6009 8852(-)m 6121(1)s +240 fnt78 6199 8937(,)m 240 fnt83 6306 8945(x)m 168 fnt83 +6412 8858(i)m 240 fnt78 6468 8937(\))m 240 fnt83 579 8542(right)m +240 fnt78 1060 8534(\()m 240 fnt83 1144 8542(X)m 240 fnt78 +1312 8534(\))m 1474(=)s 240 fnt83 1687 8542(hgap)m 240 fnt78 +2172 8534(\()m 240 fnt83 2256 8542(x)m 168 fnt83 2362 8455(i)m +240 fnt78 2418 8534(,)m 240 fnt83 2525 8542(g)m 168 fnt83 +2636 8455(i)m 240 fnt78 2692 8534(,)m 240 fnt83 2799 8542(x)m +168 fnt83 2905 8455(i)m 168 fnt78 2971 8449(+)m 3084(1)s +240 fnt78 3162 8534(\))m 3300(+)s 3501(\274)s 3787(+)s +240 fnt83 3988 8542(hgap)m 240 fnt78 4473 8534(\()m 240 fnt83 +4557 8542(x)m 168 fnt83 4663 8455(n)m 168 fnt78 4765 8449(-)m +4877(1)s 240 fnt78 4955 8534(,)m 240 fnt83 5062 8542(g)m +168 fnt83 5173 8455(n)m 168 fnt78 5275 8449(-)m 5387(1)s +240 fnt78 5465 8534(,)m 240 fnt83 5572 8542(x)m 168 fnt83 +5678 8455(n)m 240 fnt78 5770 8534(\))m 5908(+)s 240 fnt83 +6109 8542(right)m 240 fnt78 6590 8534(\()m 240 fnt83 6674 8542(x)m +168 fnt83 6780 8455(n)m 240 fnt78 6872 8534(\))m 240 fnt83 +485 8139(abo)m 2(ve)k 240 fnt78 1060 8131(\()m 240 fnt83 +1144 8139(X)m 240 fnt78 1312 8131(\))m 1474(=)s 240 fnt83 +1687 8139(abo)m 2(ve)k 240 fnt78 2262 8131(\()m 240 fnt83 +2346 8139(x)m 168 fnt78 2452 8044(1)m 240 fnt78 2530 8131(\))m +2680(\255)s 2901(\274)s 3199(\255)s 240 fnt83 3420 8139(abo)m 2(ve)k +240 fnt78 3995 8131(\()m 240 fnt83 4079 8139(x)m 168 fnt83 +4185 8050(n)m 240 fnt78 4277 8131(\))m 240 fnt83 480 7736(below)m +240 fnt78 1060 7728(\()m 240 fnt83 1144 7736(X)m 240 fnt78 +1312 7728(\))m 1474(=)s 240 fnt83 1687 7736(below)m 240 fnt78 +2267 7728(\()m 240 fnt83 2351 7736(x)m 168 fnt78 2457 7641(1)m +240 fnt78 2535 7728(\))m 2685(\255)s 2906(\274)s 3204(\255)s +240 fnt83 3425 7736(below)m 240 fnt78 4005 7728(\()m 240 fnt83 +4089 7736(x)m 168 fnt83 4195 7647(n)m 240 fnt78 4287 7728(\))m +240 fnt82 0 7141(where)m 240 fnt78 693 7135(\255)m 240 fnt82 +943 7141(returns)m 1678(the)s 2046(lar)s 4(ger)k 2679(of)s +2971(its)s 3267(tw)s 2(o)k 3698(parameters.)s 4930(Similar)s +5712(formulas)s 6633(are)s 7001(easily)s 7632(deri)s 6(v)k 3(ed)k +8419(for)s 8778(the)s 0 6853(other)m 551(operators.)s 480 6479(F)m 3(or)k +866(purposes)s 1765(of)s 2033(e)s 3(xposition)k 3081(we)s +3412(will)s 3835(no)s 6(w)k 4293(mak)s 2(e)k +4862(the)s 5207(simplifying)s 6358(assumptions)s 7589(that)s 8004(all)s +8294(g)s 1(aps)k 8779(are)s 220 fnt35 0 6188(0i)m +240 fnt82 156 6191(,)m 248(all)s 525(column)s 1285(marks)s +1904(lie)s 2183(at)s 2399(the)s 2732(left)s 3093(edge,)s +3637(and)s 4025(all)s 4303(ro)s 6(w)k 4707(marks)s +5327(lie)s 5605(at)s 5822(the)s 6154(top)s 6498(edge.)s +7098(Then)s 7632(the)s 7964(size)s 8376(of)s 8631(each)s +0 5903(object)m 644(can)s 1033(be)s 1315(e)s 3(xpressed)k +2313(by)s 2607(just)s 3012(tw)s 2(o)k 3422(numbers,)s +4353(width)s 4955(and)s 5359(height,)s 6064(and)s 6468(the)s +6816(four)s 7274(formulas)s 8174(reduce)s 8867(to)s 240 fnt83 +555 5400(width)m 240 fnt78 1094 5392(\()m 240 fnt83 1178 5400(x)m +168 fnt78 1284 5307(1)m 240 fnt78 1434 5392(|)m 1551(\274)s +1849(|)s 240 fnt83 1966 5400(x)m 168 fnt83 2072 5313(n)m +240 fnt78 2164 5392(\))m 2326(=)s 240 fnt83 2539 5400(width)m +240 fnt78 3078 5392(\()m 240 fnt83 3162 5400(x)m 168 fnt78 +3268 5307(1)m 240 fnt78 3346 5392(\))m 3484(+)s 3685(\274)s +3971(+)s 240 fnt83 4172 5400(width)m 240 fnt78 4711 5392(\()m +240 fnt83 4795 5400(x)m 168 fnt83 4901 5313(n)m 240 fnt78 +4993 5392(\))m 240 fnt83 480 4997(height)m 240 fnt78 1094 4989(\()m +240 fnt83 1178 4997(x)m 168 fnt78 1284 4904(1)m 240 fnt78 +1434 4989(|)m 1551(\274)s 1849(|)s 240 fnt83 1966 4997(x)m +168 fnt83 2072 4910(n)m 240 fnt78 2164 4989(\))m 2326(=)s +240 fnt83 2539 4997(height)m 240 fnt78 3153 4989(\()m 240 fnt83 +3237 4997(x)m 168 fnt78 3343 4904(1)m 240 fnt78 3421 4989(\))m +3571(\255)s 3792(\274)s 4090(\255)s 240 fnt83 4311 4997(height)m +240 fnt78 4925 4989(\()m 240 fnt83 5009 4997(x)m 168 fnt83 +5115 4910(n)m 240 fnt78 5207 4989(\))m 240 fnt82 0 4453(The)m +428(corresponding)s 1850(formulas)s 2750(for)s 3088(v)s 3(ertical)k +3855(concatenation)s 5240(are)s 240 fnt83 555 3903(width)m 240 fnt78 +1094 3895(\()m 240 fnt83 1178 3903(x)m 168 fnt78 1284 3810(1)m +240 fnt83 1434 3903(/)m 240 fnt78 1609 3895(\274)m 240 fnt83 +1907 3903(/)m 2082(x)s 168 fnt83 2188 3816(n)m 240 fnt78 +2280 3895(\))m 2442(=)s 240 fnt83 2655 3903(width)m 240 fnt78 +3194 3895(\()m 240 fnt83 3278 3903(x)m 168 fnt78 3384 3810(1)m +240 fnt78 3462 3895(\))m 3612(\255)s 3833(\274)s 4131(\255)s +240 fnt83 4352 3903(width)m 240 fnt78 4891 3895(\()m 240 fnt83 +4975 3903(x)m 168 fnt83 5081 3816(n)m 240 fnt78 5173 3895(\))m +240 fnt83 480 3500(height)m 240 fnt78 1094 3492(\()m 240 fnt83 +1178 3500(x)m 168 fnt78 1284 3407(1)m 240 fnt83 1434 3500(/)m +240 fnt78 1609 3492(\274)m 240 fnt83 1907 3500(/)m 2082(x)s +168 fnt83 2188 3413(n)m 240 fnt78 2280 3492(\))m 2442(=)s +240 fnt83 2655 3500(height)m 240 fnt78 3269 3492(\()m 240 fnt83 +3353 3500(x)m 168 fnt78 3459 3407(1)m 240 fnt78 3537 3492(\))m +3675(+)s 3876(\274)s 4162(+)s 240 fnt83 4363 3500(height)m +240 fnt78 4977 3492(\()m 240 fnt83 5061 3500(x)m 168 fnt83 +5167 3413(n)m 240 fnt78 5259 3492(\))m 240 fnt82 0 2956(According)m +1063(to)s 1302(these)s 1849(formulas,)s 2805(the)s 3153(height)s +3811(of)s gsave +480 1262 translate +240 fnt83 3044 1354 56 1298 240 288 12 LoutGraphic +gsave +grestore save gsave 200 dict begin lfigdict begin +grestore +1240 846 56 790 240 288 12 0 0 LoutGr2 +currentdict end 200 dict begin begin +grestore +338 338 56 282 240 288 12 0 0 LoutGr2 +currentdict end 200 dict begin begin +grestore +338 338 56 282 240 288 12 0 0 LoutGr2 +currentdict end 200 dict begin begin +grestore +338 338 56 282 240 288 12 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigcircle ] lfigdopath +pop pop +grestore +192 fnt83 123 128(a)m +grestore +(T) lfigpromotelabels +grestore +(L) lfigpromotelabels +grestore +338 338 56 282 240 288 12 451 508 LoutGr2 +currentdict end 200 dict begin begin +grestore +338 338 56 282 240 288 12 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigcircle ] lfigdopath +pop pop +grestore +192 fnt78 156 121(|)m + +grestore +(T) lfigpromotelabels +grestore +0 0 0 0 240 288 12 789 790 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ L@T@CTR L@T@CTR T@CTR lfigangle L@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef +T@CTR T@CTR L@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath +pop pop +grestore + +grestore +338 338 56 282 240 288 12 902 0 LoutGr2 +currentdict end 200 dict begin begin +grestore +338 338 56 282 240 288 12 0 0 LoutGr2 +currentdict end 200 dict begin begin +grestore +338 338 56 282 240 288 12 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigcircle ] lfigdopath +pop pop +grestore +192 fnt83 123 105(b)m +grestore +(T) lfigpromotelabels +grestore +(R) lfigpromotelabels +grestore +0 0 0 0 240 288 12 1240 790 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ R@T@CTR R@T@CTR T@CTR lfigangle R@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef +T@CTR T@CTR R@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath +pop pop +grestore + +grestore +(L) lfigpromotelabels +grestore +338 338 56 282 240 288 12 1353 1016 LoutGr2 +currentdict end 200 dict begin begin +grestore +338 338 56 282 240 288 12 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigcircle ] lfigdopath +pop pop +grestore +192 fnt78 136 106(\244)m +grestore +(T) lfigpromotelabels +grestore +0 0 0 0 240 288 12 1691 1298 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ L@T@CTR L@T@CTR T@CTR lfigangle L@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef +T@CTR T@CTR L@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath +pop pop +grestore + +grestore +1240 846 56 790 240 288 12 1804 0 LoutGr2 +currentdict end 200 dict begin begin +grestore +338 338 56 282 240 288 12 0 0 LoutGr2 +currentdict end 200 dict begin begin +grestore +338 338 56 282 240 288 12 0 0 LoutGr2 +currentdict end 200 dict begin begin +grestore +338 338 56 282 240 288 12 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigcircle ] lfigdopath +pop pop +grestore +192 fnt83 +128 128(c)m +grestore +(T) lfigpromotelabels +grestore +(L) lfigpromotelabels +grestore +338 338 56 282 240 288 12 451 508 LoutGr2 +currentdict end 200 dict begin begin +grestore +338 338 56 282 240 288 12 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigcircle ] lfigdopath +pop pop +grestore +192 fnt78 156 121(|)m +grestore +(T) lfigpromotelabels +grestore +0 0 0 0 240 288 12 789 790 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ L@T@CTR L@T@CTR T@CTR lfigangle L@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef +T@CTR T@CTR L@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath +pop pop +grestore + +grestore +338 338 56 282 240 288 12 902 0 LoutGr2 +currentdict end 200 dict begin begin +grestore +338 338 56 282 240 288 12 0 0 LoutGr2 +currentdict end 200 dict begin begin +grestore +338 338 56 282 240 288 12 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigcircle ] lfigdopath +pop pop +grestore +192 fnt83 118 105(d)m + +grestore +(T) lfigpromotelabels +grestore +(R) lfigpromotelabels +grestore +0 0 0 0 240 288 12 1240 790 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ R@T@CTR R@T@CTR T@CTR lfigangle R@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef +T@CTR T@CTR R@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath +pop pop +grestore + +grestore +(R) lfigpromotelabels +grestore +0 0 0 0 240 288 12 3044 1298 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ R@T@CTR R@T@CTR T@CTR lfigangle R@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef +T@CTR T@CTR R@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath +pop pop +grestore + +grestore +end end restore +grestore + +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 10 11 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Symbol +%%+ font Times-Italic +/pgsave save def +%%IncludeResource: font Symbol +/fnt78 { /Symbol LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +0 LoutMargSet +grestore +4287 13844(-)m 4415(10)s 4710(-)s 0 13253(is)m 240 fnt78 +480 12745([)m 240 fnt83 563 12753(height)m 240 fnt78 1177 12745(\()m +240 fnt83 1261 12753(a)m 240 fnt78 1388 12745(\))m 1538(\255)s +240 fnt83 1759 12753(height)m 240 fnt78 2373 12745(\()m 240 fnt83 +2457 12753(b)m 240 fnt78 2583 12745(\))m 2661(])s 2792(+)s +2993([)s 240 fnt83 3076 12753(height)m 240 fnt78 3690 12745(\()m +240 fnt83 3774 12753(c)m 240 fnt78 3888 12745(\))m 4038(\255)s +240 fnt83 4259 12753(height)m 240 fnt78 4873 12745(\()m 240 fnt83 +4957 12753(d)m 240 fnt78 5095 12745(\))m 5173(])s 240 fnt82 +0 12249(which)m 642(is)s 852(correct,)s 1621(b)s 4(ut)k +1983(for)s 2321(width)s 2923(the)s 3(y)k 3386(yield)s +240 fnt78 480 11691([)m 240 fnt83 563 11699(width)m 240 fnt78 +1102 11691(\()m 240 fnt83 1186 11699(a)m 240 fnt78 1313 11691(\))m +1451(+)s 240 fnt83 1652 11699(width)m 240 fnt78 2191 11691(\()m +240 fnt83 2275 11699(b)m 240 fnt78 2401 11691(\))m 2479(])s +2622(\255)s 2843([)s 240 fnt83 2926 11699(width)m 240 fnt78 +3465 11691(\()m 240 fnt83 3549 11699(c)m 240 fnt78 3663 11691(\))m +3801(+)s 240 fnt83 4002 11699(width)m 240 fnt78 4541 11691(\()m +240 fnt83 4625 11699(d)m 240 fnt78 4763 11691(\))m 4841(])s +240 fnt82 0 11195(which)m 645(is)s 859(not,)s 1276(since)s +1827(it)s 2023(does)s 2517(not)s 2887(tak)s 2(e)k +3343(the)s 3694(mer)s 4(ging)k 4544(of)s 4819(column)s +5598(marks)s 6237(into)s 6666(account.)s 7578(The)s 8010(asymmetry)s +0 10907(between)m 874(horizontal)s 1918(and)s 2342(v)s 3(ertical)k +3130(has)s 3520(come)s 4114(about)s 4726(because)s 5560(the)s +5928(ro)s 6(w)k 6368(entries,)s 7131(such)s 7648(as)s +240 fnt83 7918 10909(a)m 240 fnt82 8113 10907(and)m 240 fnt83 +8537 10909(b)m 240 fnt82 8651 10907(,)m 8779(are)s 0 10619(adjacent)m +849(in)s 1085(the)s 1426(tree,)s 1883(b)s 4(ut)k +2238(the)s 2579(column)s 3346(entries,)s 4082(such)s 4571(as)s +240 fnt83 4814 10621(a)m 240 fnt82 4982 10619(and)m 240 fnt83 +5379 10621(c)m 240 fnt82 5481 10619(,)m 5581(are)s 5920(not.)s +6383(It)s 6581(w)s 2(ould)k 7229(be)s 7504(possible)s +8337(to)s 8568(solv)s 3(e)k 0 10331(this)m 395(cross-linking)s +1694(problem)s 2550(by)s 2842(augmenting)s 4024(the)s 4370(size)s +4795(information)s 5979(stored)s 6619(in)s 6861(each)s 7354(node)s +7875(to)s 8112(record)s 8778(the)s 0 10043(number)m 791(of)s +1063(marks)s 1698(and)s 2103(the)s 2451(size)s 2879(of)s +3150(each,)s 3696(b)s 4(ut)k 4058(the)s 4407(author)s +5078(has)s 5449(preferred)s 6381(the)s 6730(follo)s 6(wing)k +7707(method)s 8484(which)s 0 9755(mak)m 2(es)k 660(structural)s +1616(changes)s 2438(to)s 2677(the)s 3025(tree)s 3438(instead.)s +480 9381(If)m 240 fnt83 715 9383(a)m 240 fnt82 896 9381(and)m +240 fnt83 1305 9383(c)m 240 fnt82 1473 9381(share)m 2038(a)s +2210(column)s 2990(mark,)s 3594(the)s 3(y)k 4063(each)s +4563(might)s 5187(as)s 5442(well)s 5914(ha)s 4(v)k 3(e)k +6420(width)s 240 fnt83 7028 9383(width)m 240 fnt78 7572 9375(\()m +240 fnt83 7662 9383(a)m 240 fnt78 7795 9375(\))m 7961(\255)s +240 fnt83 8199 9383(width)m 240 fnt78 8743 9375(\()m 240 fnt83 +8833 9383(c)m 240 fnt78 8953 9375(\))m 240 fnt82 9019 9381(,)m +0 9093(since)m 547(all)s 840(width)s 1442(calculations)s 2635(apply)s +3221(to)s 3460(entire)s 4060(columns.)s 5035(Accordingly)s 15(,)k +6323(we)s 6659(introduce)s 7618(a)s 7784(ne)s 6(w)k +8232(operator)s 9(,)k 240 fnt83 0 8807(COL)m 240 fnt82 +466 8805(,)m 573(de\207ned)s 1336(by)s 240 fnt83 480 8255(width)m +240 fnt78 1019 8247(\()m 240 fnt83 1103 8255(x)m 168 fnt78 +1209 8162(1)m 240 fnt83 1347 8255(COL)m 240 fnt78 1885 8247(\274)m +240 fnt83 2171 8255(COL)m 2709(x)s 168 fnt83 2815 8168(n)m +240 fnt78 2907 8247(\))m 3057(=)s 240 fnt83 3270 8255(width)m +240 fnt78 3809 8247(\()m 240 fnt83 3893 8255(x)m 168 fnt78 +3999 8162(1)m 240 fnt78 4077 8247(\))m 4227(\255)s 4448(\274)s +4746(\255)s 240 fnt83 4967 8255(width)m 240 fnt78 5506 8247(\()m +240 fnt83 5590 8255(x)m 168 fnt83 5696 8168(n)m 240 fnt78 +5788 8247(\))m 240 fnt82 0 7711(and)m 440(replace)s 1221(both)s +240 fnt83 1741 7713(a)m 240 fnt82 1952 7711(and)m 240 fnt83 +2393 7713(c)m 240 fnt82 2591 7711(by)m 240 fnt83 2922 7713(a)m +3218(COL)s 3865(c)s 240 fnt82 3967 7711(.)m 4168(T)s 19(o)k +4504(pre)s 6(v)k 3(ent)k 240 fnt83 5309 7713(COL)m +240 fnt82 5871 7711(operators)m 6848(from)s 7408(disturbing)s 8468(height)s +0 7423(calculations,)m 1248(we)s 1583(de\207ne)s 2224(a)s 2390(binary)s +3055(operator)s 3911(called)s 240 fnt83 4539 7425(SPLIT)m 240 fnt82 +5228 7423(by)m 240 fnt83 555 6920(width)m 240 fnt78 1094 6912(\()m +240 fnt83 1178 6920(x)m 1356(SPLIT)s 2057(y)s 240 fnt78 +2171 6912(\))m 2333(=)s 240 fnt83 2546 6920(width)m 240 fnt78 +3085 6912(\()m 240 fnt83 3169 6920(x)m 240 fnt78 3287 6912(\))m +240 fnt83 480 6517(height)m 240 fnt78 1094 6509(\()m 240 fnt83 +1178 6517(x)m 1356(SPLIT)s 2057(y)s 240 fnt78 2171 6509(\))m +2333(=)s 240 fnt83 2546 6517(height)m 240 fnt78 3160 6509(\()m +240 fnt83 3244 6517(y)m 240 fnt78 3358 6509(\))m 240 fnt82 +0 6013(which)m 642(switches)s 1516(height)s 2174(and)s 2578(width)s +3180(calculations)s 4372(onto)s 4851(dif)s 6(ferent)k 5726(subtrees.)s +6673(Then)s 7222(the)s 7570(transformation)s gsave +480 4314 translate +240 fnt83 338 1359 56 1298 240 288 12 LoutGraphic +gsave +grestore save gsave 200 dict begin lfigdict begin +grestore +338 1359 56 1298 240 288 12 0 0 LoutGr2 +currentdict end 200 dict begin begin +grestore +338 338 56 282 240 288 12 0 1016 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigcircle ] lfigdopath +pop pop +grestore +192 fnt83 123 128(a)m + +grestore +(T) lfigpromotelabels +grestore +end end restore +grestore +240 fnt78 1130 5552(\336)m gsave +1671 4314 translate +240 fnt83 2564 1359 56 1298 240 288 12 LoutGraphic +gsave +grestore save gsave 200 dict begin lfigdict begin +grestore +1386 846 56 790 240 288 12 0 0 LoutGr2 +currentdict end 200 dict begin begin +grestore +338 338 56 282 240 288 12 0 0 LoutGr2 +currentdict end 200 dict begin begin +grestore +338 338 56 282 240 288 12 0 0 LoutGr2 +currentdict end 200 dict begin begin +grestore +338 338 56 282 240 288 12 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigcircle ] lfigdopath +pop pop +grestore +192 fnt83 123 128(a)m +grestore +(T) lfigpromotelabels +grestore +(L) lfigpromotelabels +grestore +484 338 56 282 240 288 12 451 508 LoutGr2 +currentdict end 200 dict begin begin +grestore +484 338 56 282 240 288 12 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigellipse ] lfigdopath +pop pop +grestore +192 fnt83 +56 107(COL)m +grestore +(T) lfigpromotelabels +grestore +0 0 0 0 240 288 12 935 790 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ L@T@CTR L@T@CTR T@CTR lfigangle L@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef +T@CTR T@CTR L@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath +pop pop +grestore + +grestore +338 338 56 282 240 288 12 1048 0 LoutGr2 +currentdict end 200 dict begin begin +grestore +338 338 56 282 240 288 12 0 0 LoutGr2 +currentdict end 200 dict begin begin +grestore +338 338 56 282 240 288 12 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigcircle ] lfigdopath +pop pop +grestore +192 fnt83 128 128(c)m +grestore +(T) lfigpromotelabels +grestore +(R) lfigpromotelabels +grestore +0 0 0 0 240 288 12 1386 790 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ R@T@CTR R@T@CTR T@CTR lfigangle R@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef +T@CTR T@CTR R@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath +pop pop +grestore + +grestore +(L) lfigpromotelabels +grestore +614 338 56 282 240 288 12 1499 1016 LoutGr2 +currentdict end 200 dict begin begin +grestore +614 338 56 282 240 288 12 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigellipse ] lfigdopath +pop pop +grestore +192 fnt83 56 107(SPLIT)m + +grestore +(T) lfigpromotelabels +grestore +0 0 0 0 240 288 12 2113 1298 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ L@T@CTR L@T@CTR T@CTR lfigangle L@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef +T@CTR T@CTR L@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath +pop pop +grestore + +grestore +338 846 56 790 240 288 12 2226 0 LoutGr2 +currentdict end 200 dict begin begin +grestore +338 846 56 790 240 288 12 0 0 LoutGr2 +currentdict end 200 dict begin begin +grestore +338 338 56 282 240 288 12 0 508 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigcircle ] lfigdopath +pop pop +grestore +192 fnt83 123 128(a)m +grestore +(T) lfigpromotelabels +grestore +(R) lfigpromotelabels +grestore +0 0 0 0 240 288 12 2564 1298 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ R@T@CTR R@T@CTR T@CTR lfigangle R@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef +T@CTR T@CTR R@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath +pop pop +grestore + +grestore +end end restore +grestore +240 fnt82 0 3814(widens)m 240 fnt83 +740 3816(a)m 240 fnt82 926 3814(to)m 240 fnt83 1176 3816(width)m +240 fnt78 1726 3808(\()m 240 fnt83 1821 3816(a)m 240 fnt78 +1959 3808(\))m 2142(\255)s 240 fnt83 2396 3816(width)m 240 fnt78 +2946 3808(\()m 240 fnt83 3041 3816(c)m 240 fnt78 3166 3808(\))m +240 fnt82 3303 3814(without)m 4105(af)s 6(fecting)k 5011(its)s +5298(height;)s 6019(it)s 6222(is)s 6443(applied)s 7216(to)s +7466(e)s 6(v)k 3(ery)k 8053(object)s 8708(that)s +0 3526(shares)m 638(its)s 904(column)s 1669(mark)s 2211(with)s +2683(at)s 2905(least)s 3392(one)s 3784(other)s 4325(object.)s +5063(A)s 5283(similar)s 5995(transformation)s 7448(in)s 9(v)k 4(olving)k +8396(a)s 240 fnt83 8552 3528(R)m 9(O)k 12(W)k +240 fnt82 0 3238(operator)m 856(deals)s 1398(with)s 1880(shared)s +2562(ro)s 6(w)k 2982(marks.)s 3730(The)s 4158(ef)s 6(fect)k +4754(on)s 5051(our)s 5430(little)s 5922(table)s 6442(is)s +6652(to)s 6891(replace)s gsave +480 1544 translate +240 fnt83 3044 1354 56 1298 240 288 12 LoutGraphic +gsave +grestore save gsave 200 dict begin lfigdict begin +grestore +1240 846 56 790 240 288 12 0 0 LoutGr2 +currentdict end 200 dict begin begin +grestore +338 338 56 282 240 288 12 0 0 LoutGr2 +currentdict end 200 dict begin begin +grestore +338 338 56 282 240 288 12 0 0 LoutGr2 +currentdict end 200 dict begin begin +grestore +338 338 56 282 240 288 12 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigcircle ] lfigdopath +pop pop +grestore +192 fnt83 123 128(a)m +grestore +(T) lfigpromotelabels +grestore +(L) lfigpromotelabels +grestore +338 338 56 282 240 288 12 451 508 LoutGr2 +currentdict end 200 dict begin begin +grestore +338 338 56 282 240 288 12 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigcircle ] lfigdopath +pop pop +grestore +192 fnt78 +156 121(|)m +grestore +(T) lfigpromotelabels +grestore +0 0 0 0 240 288 12 789 790 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ L@T@CTR L@T@CTR T@CTR lfigangle L@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef +T@CTR T@CTR L@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath +pop pop +grestore + +grestore +338 338 56 282 240 288 12 902 0 LoutGr2 +currentdict end 200 dict begin begin +grestore +338 338 56 282 240 288 12 0 0 LoutGr2 +currentdict end 200 dict begin begin +grestore +338 338 56 282 240 288 12 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigcircle ] lfigdopath +pop pop +grestore +192 fnt83 123 105(b)m +grestore +(T) lfigpromotelabels +grestore +(R) lfigpromotelabels +grestore +0 0 0 0 240 288 12 1240 790 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ R@T@CTR R@T@CTR T@CTR lfigangle R@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef +T@CTR T@CTR R@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath +pop pop +grestore + +grestore +(L) lfigpromotelabels +grestore +338 338 56 282 240 288 12 1353 1016 LoutGr2 +currentdict end 200 dict begin begin +grestore +338 338 56 282 240 288 12 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigcircle ] lfigdopath +pop pop +grestore +192 fnt78 136 106(\244)m + +grestore +(T) lfigpromotelabels +grestore +0 0 0 0 240 288 12 1691 1298 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ L@T@CTR L@T@CTR T@CTR lfigangle L@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef +T@CTR T@CTR L@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath +pop pop +grestore + +grestore +1240 846 56 790 240 288 12 1804 0 LoutGr2 +currentdict end 200 dict begin begin +grestore +338 338 56 282 240 288 12 0 0 LoutGr2 +currentdict end 200 dict begin begin +grestore +338 338 56 282 240 288 12 0 0 LoutGr2 +currentdict end 200 dict begin begin +grestore +338 338 56 282 240 288 12 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigcircle ] lfigdopath +pop pop +grestore +192 fnt83 128 128(c)m +grestore +(T) lfigpromotelabels +grestore +(L) lfigpromotelabels +grestore +338 338 56 282 240 288 12 451 508 LoutGr2 +currentdict end 200 dict begin begin +grestore +338 338 56 282 240 288 12 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigcircle ] lfigdopath +pop pop +grestore +192 fnt78 156 121(|)m +grestore +(T) lfigpromotelabels +grestore +0 0 0 0 240 288 12 789 790 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ L@T@CTR L@T@CTR T@CTR lfigangle L@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef +T@CTR T@CTR L@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath +pop pop +grestore + +grestore +338 338 56 282 240 288 12 902 0 LoutGr2 +currentdict end 200 dict begin begin +grestore +338 338 56 282 240 288 12 0 0 LoutGr2 +currentdict end 200 dict begin begin +grestore +338 338 56 282 240 288 12 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigcircle ] lfigdopath +pop pop +grestore +192 fnt83 +118 105(d)m +grestore +(T) lfigpromotelabels +grestore +(R) lfigpromotelabels +grestore +0 0 0 0 240 288 12 1240 790 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ R@T@CTR R@T@CTR T@CTR lfigangle R@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef +T@CTR T@CTR R@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath +pop pop +grestore + +grestore +(R) lfigpromotelabels +grestore +0 0 0 0 240 288 12 3044 1298 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ R@T@CTR R@T@CTR T@CTR lfigangle R@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef +T@CTR T@CTR R@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath +pop pop +grestore + +grestore +end end restore +grestore +0 1093(by)m +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 11 12 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Italic +%%+ font Symbol +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Symbol +/fnt78 { /Symbol LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt35 vec2 /Helvetica LoutRecode +/fnt35 { /Helveticafnt35 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +1 LoutMargSet +grestore +4297 13844(-)m 4425(11)s 4700(-)s gsave +480 11049 translate +240 fnt83 6248 2370 0 2314 240 288 12 LoutGraphic +gsave +grestore save gsave 70 dict begin lfigdict begin +grestore +3293 338 56 282 240 288 12 2955 2032 LoutGr2 +currentdict end 70 dict begin begin +grestore +338 338 56 282 240 288 12 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigcircle ] lfigdopath +pop pop +grestore +192 fnt78 136 106(\244)m + +grestore +(T) lfigpromotelabels +grestore +3096 1862 0 1806 240 288 12 0 0 LoutGr2 +currentdict end 70 dict begin begin +grestore +1717 338 56 282 240 288 12 1379 1524 LoutGr2 +currentdict end 70 dict begin begin +grestore +338 338 56 282 240 288 12 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigcircle ] lfigdopath +pop pop +grestore +192 fnt78 156 121(|)m +grestore +(T) lfigpromotelabels +grestore +1520 1354 0 1298 240 288 12 0 0 LoutGr2 +currentdict end 70 dict begin begin +grestore +1067 338 56 282 240 288 12 453 1016 LoutGr2 +currentdict end 70 dict begin begin +grestore +614 338 56 282 240 288 12 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigellipse ] lfigdopath +pop pop +grestore +192 fnt83 56 107(SPLIT)m +grestore +(T) lfigpromotelabels +grestore +732 846 0 790 240 288 12 0 0 LoutGr2 +currentdict end 70 dict begin begin +grestore +608 338 56 282 240 288 12 124 508 LoutGr2 +currentdict end 70 dict begin begin +grestore +484 338 56 282 240 288 12 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigellipse ] lfigdopath +pop pop +grestore +192 fnt83 +56 107(COL)m +grestore +(T) lfigpromotelabels +grestore +338 338 56 282 240 288 12 0 0 LoutGr2 +currentdict end 70 dict begin begin +grestore +338 338 56 282 240 288 12 0 0 LoutGr2 +currentdict end 70 dict begin begin +grestore +338 338 56 282 240 288 12 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigcircle ] lfigdopath +pop pop +grestore +192 fnt83 123 128(a)m +grestore +(T) lfigpromotelabels +grestore +(S) lfigpromotelabels +grestore +0 0 0 0 240 288 12 338 282 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef +T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath +pop pop +grestore + +grestore +338 338 56 282 240 288 12 394 0 LoutGr2 +currentdict end 70 dict begin begin +grestore +338 338 56 282 240 288 12 0 0 LoutGr2 +currentdict end 70 dict begin begin +grestore +338 338 56 282 240 288 12 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigcircle ] lfigdopath +pop pop +grestore +192 fnt83 128 128(c)m + +grestore +(T) lfigpromotelabels +grestore +(S) lfigpromotelabels +grestore +0 0 0 0 240 288 12 732 282 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef +T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath +pop pop +grestore + +grestore +(S) lfigpromotelabels +grestore +0 0 0 0 240 288 12 732 790 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef +T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath +pop pop +grestore + +grestore +732 846 0 790 240 288 12 788 0 LoutGr2 +currentdict end 70 dict begin begin +grestore +628 338 56 282 240 288 12 104 508 LoutGr2 +currentdict end 70 dict begin begin +grestore +524 338 56 282 240 288 12 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigellipse ] lfigdopath +pop pop +grestore +192 fnt83 56 107(R)m 7(O)k 9(W)k +grestore +(T) lfigpromotelabels +grestore +338 338 56 282 240 288 12 0 0 LoutGr2 +currentdict end 70 dict begin begin +grestore +338 338 56 282 240 288 12 0 0 LoutGr2 +currentdict end 70 dict begin begin +grestore +338 338 56 282 240 288 12 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigcircle ] lfigdopath +pop pop +grestore +192 fnt83 +123 128(a)m +grestore +(T) lfigpromotelabels +grestore +(S) lfigpromotelabels +grestore +0 0 0 0 240 288 12 338 282 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef +T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath +pop pop +grestore + +grestore +338 338 56 282 240 288 12 394 0 LoutGr2 +currentdict end 70 dict begin begin +grestore +338 338 56 282 240 288 12 0 0 LoutGr2 +currentdict end 70 dict begin begin +grestore +338 338 56 282 240 288 12 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigcircle ] lfigdopath +pop pop +grestore +192 fnt83 123 105(b)m +grestore +(T) lfigpromotelabels +grestore +(S) lfigpromotelabels +grestore +0 0 0 0 240 288 12 732 282 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef +T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath +pop pop +grestore + +grestore +(S) lfigpromotelabels +grestore +0 0 0 0 240 288 12 1520 790 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef +T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath +pop pop +grestore + +grestore +(S) lfigpromotelabels +grestore +0 0 0 0 240 288 12 1520 1298 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef +T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath +pop pop +grestore + +grestore +1520 1354 0 1298 240 288 12 1576 0 LoutGr2 +currentdict end 70 dict begin begin +grestore +1067 338 56 282 240 288 12 453 1016 LoutGr2 +currentdict end 70 dict begin begin +grestore +614 338 56 282 240 288 12 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigellipse ] lfigdopath +pop pop +grestore +192 fnt83 56 107(SPLIT)m + +grestore +(T) lfigpromotelabels +grestore +732 846 0 790 240 288 12 0 0 LoutGr2 +currentdict end 70 dict begin begin +grestore +608 338 56 282 240 288 12 124 508 LoutGr2 +currentdict end 70 dict begin begin +grestore +484 338 56 282 240 288 12 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigellipse ] lfigdopath +pop pop +grestore +192 fnt83 56 107(COL)m +grestore +(T) lfigpromotelabels +grestore +338 338 56 282 240 288 12 0 0 LoutGr2 +currentdict end 70 dict begin begin +grestore +338 338 56 282 240 288 12 0 0 LoutGr2 +currentdict end 70 dict begin begin +grestore +338 338 56 282 240 288 12 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigcircle ] lfigdopath +pop pop +grestore +192 fnt83 123 105(b)m +grestore +(T) lfigpromotelabels +grestore +(S) lfigpromotelabels +grestore +0 0 0 0 240 288 12 338 282 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef +T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath +pop pop +grestore + +grestore +338 338 56 282 240 288 12 394 0 LoutGr2 +currentdict end 70 dict begin begin +grestore +338 338 56 282 240 288 12 0 0 LoutGr2 +currentdict end 70 dict begin begin +grestore +338 338 56 282 240 288 12 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigcircle ] lfigdopath +pop pop +grestore +192 fnt83 +118 105(d)m +grestore +(T) lfigpromotelabels +grestore +(S) lfigpromotelabels +grestore +0 0 0 0 240 288 12 732 282 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef +T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath +pop pop +grestore + +grestore +(S) lfigpromotelabels +grestore +0 0 0 0 240 288 12 732 790 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef +T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath +pop pop +grestore + +grestore +732 846 0 790 240 288 12 788 0 LoutGr2 +currentdict end 70 dict begin begin +grestore +628 338 56 282 240 288 12 104 508 LoutGr2 +currentdict end 70 dict begin begin +grestore +524 338 56 282 240 288 12 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigellipse ] lfigdopath +pop pop +grestore +192 fnt83 56 107(R)m 7(O)k 9(W)k + +grestore +(T) lfigpromotelabels +grestore +338 338 56 282 240 288 12 0 0 LoutGr2 +currentdict end 70 dict begin begin +grestore +338 338 56 282 240 288 12 0 0 LoutGr2 +currentdict end 70 dict begin begin +grestore +338 338 56 282 240 288 12 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigcircle ] lfigdopath +pop pop +grestore +192 fnt83 123 128(a)m +grestore +(T) lfigpromotelabels +grestore +(S) lfigpromotelabels +grestore +0 0 0 0 240 288 12 338 282 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef +T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath +pop pop +grestore + +grestore +338 338 56 282 240 288 12 394 0 LoutGr2 +currentdict end 70 dict begin begin +grestore +338 338 56 282 240 288 12 0 0 LoutGr2 +currentdict end 70 dict begin begin +grestore +338 338 56 282 240 288 12 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigcircle ] lfigdopath +pop pop +grestore +192 fnt83 123 105(b)m +grestore +(T) lfigpromotelabels +grestore +(S) lfigpromotelabels +grestore +0 0 0 0 240 288 12 732 282 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef +T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath +pop pop +grestore + +grestore +(S) lfigpromotelabels +grestore +0 0 0 0 240 288 12 1520 790 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef +T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath +pop pop +grestore + +grestore +(S) lfigpromotelabels +grestore +0 0 0 0 240 288 12 3096 1298 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef +T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath +pop pop +grestore + +grestore +(S) lfigpromotelabels +grestore +0 0 0 0 240 288 12 3096 1806 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef +T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath +pop pop +grestore + +grestore +3096 1862 0 1806 240 288 12 3152 0 LoutGr2 +currentdict end 70 dict begin begin +grestore +1717 338 56 282 240 288 12 1379 1524 LoutGr2 +currentdict end 70 dict begin begin +grestore +338 338 56 282 240 288 12 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigcircle ] lfigdopath +pop pop +grestore +192 fnt78 +156 121(|)m +grestore +(T) lfigpromotelabels +grestore +1520 1354 0 1298 240 288 12 0 0 LoutGr2 +currentdict end 70 dict begin begin +grestore +1067 338 56 282 240 288 12 453 1016 LoutGr2 +currentdict end 70 dict begin begin +grestore +614 338 56 282 240 288 12 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigellipse ] lfigdopath +pop pop +grestore +192 fnt83 56 107(SPLIT)m +grestore +(T) lfigpromotelabels +grestore +732 846 0 790 240 288 12 0 0 LoutGr2 +currentdict end 70 dict begin begin +grestore +608 338 56 282 240 288 12 124 508 LoutGr2 +currentdict end 70 dict begin begin +grestore +484 338 56 282 240 288 12 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigellipse ] lfigdopath +pop pop +grestore +192 fnt83 56 107(COL)m + +grestore +(T) lfigpromotelabels +grestore +338 338 56 282 240 288 12 0 0 LoutGr2 +currentdict end 70 dict begin begin +grestore +338 338 56 282 240 288 12 0 0 LoutGr2 +currentdict end 70 dict begin begin +grestore +338 338 56 282 240 288 12 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigcircle ] lfigdopath +pop pop +grestore +192 fnt83 123 128(a)m +grestore +(T) lfigpromotelabels +grestore +(S) lfigpromotelabels +grestore +0 0 0 0 240 288 12 338 282 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef +T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath +pop pop +grestore + +grestore +338 338 56 282 240 288 12 394 0 LoutGr2 +currentdict end 70 dict begin begin +grestore +338 338 56 282 240 288 12 0 0 LoutGr2 +currentdict end 70 dict begin begin +grestore +338 338 56 282 240 288 12 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigcircle ] lfigdopath +pop pop +grestore +192 fnt83 128 128(c)m +grestore +(T) lfigpromotelabels +grestore +(S) lfigpromotelabels +grestore +0 0 0 0 240 288 12 732 282 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef +T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath +pop pop +grestore + +grestore +(S) lfigpromotelabels +grestore +0 0 0 0 240 288 12 732 790 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef +T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath +pop pop +grestore + +grestore +732 846 0 790 240 288 12 788 0 LoutGr2 +currentdict end 70 dict begin begin +grestore +628 338 56 282 240 288 12 104 508 LoutGr2 +currentdict end 70 dict begin begin +grestore +524 338 56 282 240 288 12 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigellipse ] lfigdopath +pop pop +grestore +192 fnt83 +56 107(R)m 7(O)k 9(W)k +grestore +(T) lfigpromotelabels +grestore +338 338 56 282 240 288 12 0 0 LoutGr2 +currentdict end 70 dict begin begin +grestore +338 338 56 282 240 288 12 0 0 LoutGr2 +currentdict end 70 dict begin begin +grestore +338 338 56 282 240 288 12 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigcircle ] lfigdopath +pop pop +grestore +192 fnt83 128 128(c)m + +grestore +(T) lfigpromotelabels +grestore +(S) lfigpromotelabels +grestore +0 0 0 0 240 288 12 338 282 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef +T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath +pop pop +grestore + +grestore +338 338 56 282 240 288 12 394 0 LoutGr2 +currentdict end 70 dict begin begin +grestore +338 338 56 282 240 288 12 0 0 LoutGr2 +currentdict end 70 dict begin begin +grestore +338 338 56 282 240 288 12 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigcircle ] lfigdopath +pop pop +grestore +192 fnt83 118 105(d)m +grestore +(T) lfigpromotelabels +grestore +(S) lfigpromotelabels +grestore +0 0 0 0 240 288 12 732 282 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef +T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath +pop pop +grestore + +grestore +(S) lfigpromotelabels +grestore +0 0 0 0 240 288 12 1520 790 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef +T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath +pop pop +grestore + +grestore +(S) lfigpromotelabels +grestore +0 0 0 0 240 288 12 1520 1298 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef +T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath +pop pop +grestore + +grestore +1520 1354 0 1298 240 288 12 1576 0 LoutGr2 +currentdict end 70 dict begin begin +grestore +1067 338 56 282 240 288 12 453 1016 LoutGr2 +currentdict end 70 dict begin begin +grestore +614 338 56 282 240 288 12 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigellipse ] lfigdopath +pop pop +grestore +192 fnt83 56 107(SPLIT)m +grestore +(T) lfigpromotelabels +grestore +732 846 0 790 240 288 12 0 0 LoutGr2 +currentdict end 70 dict begin begin +grestore +608 338 56 282 240 288 12 124 508 LoutGr2 +currentdict end 70 dict begin begin +grestore +484 338 56 282 240 288 12 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigellipse ] lfigdopath +pop pop +grestore +192 fnt83 +56 107(COL)m +grestore +(T) lfigpromotelabels +grestore +338 338 56 282 240 288 12 0 0 LoutGr2 +currentdict end 70 dict begin begin +grestore +338 338 56 282 240 288 12 0 0 LoutGr2 +currentdict end 70 dict begin begin +grestore +338 338 56 282 240 288 12 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigcircle ] lfigdopath +pop pop +grestore +192 fnt83 123 105(b)m +grestore +(T) lfigpromotelabels +grestore +(S) lfigpromotelabels +grestore +0 0 0 0 240 288 12 338 282 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef +T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath +pop pop +grestore + +grestore +338 338 56 282 240 288 12 394 0 LoutGr2 +currentdict end 70 dict begin begin +grestore +338 338 56 282 240 288 12 0 0 LoutGr2 +currentdict end 70 dict begin begin +grestore +338 338 56 282 240 288 12 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigcircle ] lfigdopath +pop pop +grestore +192 fnt83 118 105(d)m + +grestore +(T) lfigpromotelabels +grestore +(S) lfigpromotelabels +grestore +0 0 0 0 240 288 12 732 282 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef +T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath +pop pop +grestore + +grestore +(S) lfigpromotelabels +grestore +0 0 0 0 240 288 12 732 790 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef +T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath +pop pop +grestore + +grestore +732 846 0 790 240 288 12 788 0 LoutGr2 +currentdict end 70 dict begin begin +grestore +628 338 56 282 240 288 12 104 508 LoutGr2 +currentdict end 70 dict begin begin +grestore +524 338 56 282 240 288 12 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigellipse ] lfigdopath +pop pop +grestore +192 fnt83 56 107(R)m 7(O)k 9(W)k +grestore +(T) lfigpromotelabels +grestore +338 338 56 282 240 288 12 0 0 LoutGr2 +currentdict end 70 dict begin begin +grestore +338 338 56 282 240 288 12 0 0 LoutGr2 +currentdict end 70 dict begin begin +grestore +338 338 56 282 240 288 12 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigcircle ] lfigdopath +pop pop +grestore +192 fnt83 +128 128(c)m +grestore +(T) lfigpromotelabels +grestore +(S) lfigpromotelabels +grestore +0 0 0 0 240 288 12 338 282 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef +T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath +pop pop +grestore + +grestore +338 338 56 282 240 288 12 394 0 LoutGr2 +currentdict end 70 dict begin begin +grestore +338 338 56 282 240 288 12 0 0 LoutGr2 +currentdict end 70 dict begin begin +grestore +338 338 56 282 240 288 12 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigcircle ] lfigdopath +pop pop +grestore +192 fnt83 118 105(d)m +grestore +(T) lfigpromotelabels +grestore +(S) lfigpromotelabels +grestore +0 0 0 0 240 288 12 732 282 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef +T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath +pop pop +grestore + +grestore +(S) lfigpromotelabels +grestore +0 0 0 0 240 288 12 1520 790 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef +T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath +pop pop +grestore + +grestore +(S) lfigpromotelabels +grestore +0 0 0 0 240 288 12 3096 1298 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef +T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath +pop pop +grestore + +grestore +(S) lfigpromotelabels +grestore +0 0 0 0 240 288 12 6248 1806 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef +T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath +pop pop +grestore + +grestore +end end restore +grestore +0 10598(In)m 244(f)s 2(act,)k +693(common)s 1576(sube)s 3(xpressions)k 3060(are)s 3395(identi\207ed)s +4343(\(tri)s 6(vially\))k 5286(and)s 5678(the)s 6013(result)s +6591(is)s 6788(a)s 6942(directed)s 7756(ac)s 3(yclic)k +8469(graph;)s 0 10310(each)m 486(af)s 6(fected)k 1296(leaf)s +1716(has)s 2076(tw)s 2(o)k 2477(parents,)s 3264(one)s +3657(for)s 3985(width)s 4578(and)s 4972(one)s 5365(for)s +5693(height;)s 6394(and)s 6788(each)s 240 fnt83 7274 10312(COL)m +240 fnt82 7790 10310(or)m 240 fnt83 8040 10312(R)m 9(O)k 12(W)k +240 fnt82 8604 10310(node)m 0 10022(has)m 360(one)s 752(parent)s +1398(and)s 1792(one)s 2184(child)s 2709(for)s 3037(each)s +3521(object)s 4155(lying)s 4690(on)s 4976(the)s 5314(corresponding)s +6726(mark.)s 7370(The)s 7788(data)s 8235(structure)s 0 9734(roughly)m +799(doubles)s 1595(in)s 1838(size,)s 2316(and)s 2720(this)s +3116(occurs)s 3791(only)s 4271(rarely)s 4881(in)s 5124(practice.)s +480 9360(This)m 956(method)s 1732(can)s 2121(cope)s 2629(with)s +3111(an)s 3(y)k 3508(le)s 3(g)k 1(al)k +4023(input,)s 4622(including)s 220 fnt35 480 8859({ a // c | d } | { b / e })m 480 8571(/ { f / i } | { g | h // j })m +240 fnt82 0 8072(which)m 642(produces)s 1557(o)s 3(v)k 3(erlapping)k +2747(spanning)s 3665(columns:)s gsave +480 5924 translate +240 fnt83 1699 1808 0 1695 240 288 60 LoutGraphic +gsave +grestore save gsave 200 dict begin lfigdict begin +grestore +1133 452 113 339 240 288 60 0 1356 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigbox ] lfigdopath +pop pop +grestore +230 fnt83 511 178(a)m +grestore +566 452 113 339 240 288 60 1133 1356 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigbox ] lfigdopath +pop pop +grestore +230 fnt83 +228 150(b)m +grestore +566 452 113 339 240 288 60 0 904 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigbox ] lfigdopath +pop pop +grestore +230 fnt83 234 178(c)m +grestore +566 452 113 339 240 288 60 566 904 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigbox ] lfigdopath +pop pop +grestore +230 fnt83 222 150(d)m + +grestore +566 452 113 339 240 288 60 1132 904 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigbox ] lfigdopath +pop pop +grestore +230 fnt83 235 178(e)m +grestore +566 452 113 339 240 288 60 0 452 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigbox ] lfigdopath +pop pop +grestore +230 fnt83 235 173(f)m +grestore +566 452 113 339 240 288 60 566 452 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigbox ] lfigdopath +pop pop +grestore +230 fnt83 +228 200(g)m +grestore +566 452 113 339 240 288 60 1132 452 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigbox ] lfigdopath +pop pop +grestore +230 fnt83 228 149(h)m +grestore +566 452 113 339 240 288 60 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigbox ] lfigdopath +pop pop +grestore +230 fnt83 253 153(i)m + +grestore +1133 452 113 339 240 288 60 566 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigbox ] lfigdopath +pop pop +grestore +230 fnt83 535 176(j)m +grestore +end end restore +grestore +0 5473(The)m 428(box)s 3(es)k +1035(ha)s 4(v)k 3(e)k 1536(been)s 2045(added)s +2675(to)s 2914(clarify)s 3590(the)s 3938(structure.)s 4937(The)s +5365(width)s 5967(of)s 6238(this)s 6634(object)s 7278(is)s +7488(formally)s 240 fnt78 480 4915(\()m 564(\()s 240 fnt83 +648 4923(width)m 240 fnt78 1187 4915(\()m 240 fnt83 1271 4923(a)m +240 fnt78 1398 4915(\))m 1548(\255)s 1769(\()s 240 fnt83 +1853 4923(x)m 240 fnt78 2031 4915(+)m 240 fnt83 2232 4923(y)m +240 fnt78 2346 4915(\))m 2424(\))s 2562(+)s 240 fnt83 +2763 4923(z)m 240 fnt78 2866 4915(\))m 3016(\255)s 3237(\()s +240 fnt83 3321 4923(x)m 240 fnt78 3499 4915(+)m 3700(\()s +3784(\()s 240 fnt83 3868 4923(y)m 240 fnt78 4042 4915(+)m +240 fnt83 4243 4923(z)m 240 fnt78 4346 4915(\))m 4496(\255)s +240 fnt83 4717 4923(width)m 240 fnt78 5256 4915(\()m 240 fnt83 +5340 4923(j)m 240 fnt78 5418 4915(\))m 5496(\))s 5574(\))s +240 fnt82 0 4419(where)m 240 fnt83 480 3918(x)m 240 fnt78 +670 3910(=)m 240 fnt83 883 3918(width)m 240 fnt78 1422 3910(\()m +240 fnt83 1506 3918(c)m 240 fnt78 1620 3910(\))m 1770(\255)s +240 fnt83 1991 3918(width)m 240 fnt78 2530 3910(\()m 240 fnt83 +2662 3918(f)m 240 fnt78 2823 3910(\))m 2973(\255)s 240 fnt83 +3194 3918(width)m 240 fnt78 3733 3910(\()m 240 fnt83 3817 3918(i)m +240 fnt78 3892 3910(\))m 240 fnt83 480 3367(y)m 240 fnt78 +666 3359(=)m 240 fnt83 879 3367(width)m 240 fnt78 1418 3359(\()m +240 fnt83 1502 3367(d)m 240 fnt78 1688 3359(\))m 1838(\255)s +240 fnt83 2059 3367(width)m 240 fnt78 2598 3359(\()m 240 fnt83 +2682 3367(g)m 240 fnt78 2808 3359(\))m 240 fnt83 480 2816(z)m +240 fnt78 655 2808(=)m 240 fnt83 868 2816(width)m 240 fnt78 +1407 2808(\()m 240 fnt83 1491 2816(b)m 240 fnt78 1617 2808(\))m +1767(\255)s 240 fnt83 1988 2816(width)m 240 fnt78 2527 2808(\()m +240 fnt83 2611 2816(e)m 240 fnt78 2722 2808(\))m 2872(\255)s +240 fnt83 3093 2816(width)m 240 fnt78 3632 2808(\()m 240 fnt83 +3716 2816(h)m 240 fnt78 3843 2808(\))m 240 fnt82 0 2312(It)m +224(seems)s 878(clear)s 1420(that)s 240 fnt83 1857 2314(y)m +240 fnt82 2038 2312(at)m 2289(least)s 2805(must)s 3349(appear)s +4065(twice)s 4657(in)s 4919(an)s 3(y)k 5335(e)s 3(xpression)k +6431(for)s 6788(the)s 7155(width)s 7776(of)s 8066(this)s +8482(object)s 0 2024(made)m 602(out)s 997(of)s 1297(simple)s +2019(addition)s 2889(and)s 3322(maxing)s 4121(operations,)s 5253(sho)s 6(wing)k +6141(that)s 6588(an)s 6900(ordinary)s 7793(tree)s 8235(structure)s +0 1736(is)m 227(insuf\207cient)s 1379(for)s 1734(o)s 3(v)k 3(erlapping)k +2941(spanning)s 3876(columns.)s 4868(The)s 5313(Basser)s 6027(Lout)s +6556(interpreter)s 7626(actually)s 8453(rejects)s 0 1448(such)m 521(structures,)s +1581(o)s 6(wing)k 2252(to)s 2517(the)s 2890(author')s 13(s)k +3736(doubts)s 4451(about)s 5069(the)s 5442(implementability)s 7153(of)s +240 fnt83 7449 1450(Constr)m 3(ained)k 240 fnt82 8722 1448(and)m +240 fnt83 0 1162(AdjustSize)m 240 fnt82 1049 1160(\(Section)m 1902(5.3\))s +2330(on)s 2627(them;)s 3217(b)s 4(ut)k 3579(with)s +4061(hindsight)s 5012(this)s 5408(caution)s 6169(w)s 2(as)k +6590(unnecessary)s 15(.)k 480 786(The)m 915(directed)s 1749(ac)s 3(yclic)k +2482(graph)s 3091(is)s 3308(ordered)s 4104(in)s 4354(the)s +4709(sense)s 5290(that)s 5715(the)s 6071(order)s 6642(of)s +6920(the)s 7275(edges)s 7878(entering)s 8722(and)s 0 498(lea)m 4(ving)k +746(each)s 1234(node)s 1748(matters.)s 2607(The)s 3028(structure)s +3911(is)s 4114(highly)s 4773(dynamic,)s 5696(and)s 6093(tra)s 4(v)k 3(ersals)k +7044(both)s 7519(with)s 7994(and)s 8390(ag)s 1(ainst)k + +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 12 13 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Italic +%%+ font Times-Bold +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Helvetica +/Helveticafnt35 vec2 /Helvetica LoutRecode +/fnt35 { /Helveticafnt35 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +0 LoutMargSet +grestore +4288 13844(-)m 4416(12)s 4710(-)s 0 13256(the)m 349(arro)s 6(ws)k +1045(are)s 1394(required.)s 2355(After)s 2920(a)s 3087(fe)s 6(w)k +3494(ad-)s 3788(hoc)s 4189(attempts)s 5050(to)s 5291(e)s 3(xtend)k +5985(the)s 6334(usual)s 6896(tree)s 7310(representation)s 8722(had)s +0 12968(f)m 2(ailed,)k 665(the)s 1030(author)s 1718(de)s 6(v)k 3(eloped)k +2769(a)s 2952(representation)s 4379(based)s 5000(on)s 5314(doubly)s +6051(link)s 2(ed)k 6723(lists)s 7175(of)s 7463(records)s +8235(denoting)s 0 12680(links,)m 578(whose)s 1253(\210e)s 3(xibility)k +2240(more)s 2794(than)s 3270(compensated)s 4584(for)s 4929(the)s +5284(some)s 6(what)k 6315(e)s 3(xcessi)k 6(v)k 3(e)k +7282(memory)s 8140(consump)s 8998(-)s 0 12392(tion.)m 536(F)s 3(or)k +925(e)s 3(xample,)k gsave +480 10526 translate +240 fnt83 3282 1526 0 1470 240 288 12 LoutGraphic +gsave +grestore save gsave 200 dict begin lfigdict begin +grestore +338 338 56 282 240 288 12 0 1188 LoutGr2 +currentdict end 200 dict begin begin +grestore +338 338 56 282 240 288 12 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigcircle ] lfigdopath +pop pop +grestore +192 fnt83 123 128(a)m +grestore +(A) lfigpromotelabels +grestore +338 338 56 282 240 288 12 2944 1188 LoutGr2 +currentdict end 200 dict begin begin +grestore +338 338 56 282 240 288 12 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigcircle ] lfigdopath +pop pop +grestore +192 fnt83 +123 105(b)m +grestore +(B) lfigpromotelabels +grestore +338 338 56 282 240 288 12 0 0 LoutGr2 +currentdict end 200 dict begin begin +grestore +338 338 56 282 240 288 12 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigcircle ] lfigdopath +pop pop +grestore +192 fnt83 128 128(c)m +grestore +(C) lfigpromotelabels +grestore +338 338 56 282 240 288 12 1472 0 LoutGr2 +currentdict end 200 dict begin begin +grestore +338 338 56 282 240 288 12 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigcircle ] lfigdopath +pop pop +grestore +192 fnt83 118 105(d)m + +grestore +(D) lfigpromotelabels +grestore +0 0 0 0 240 288 12 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ A@CTR A@CTR C@CTR lfigangle A@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef +C@CTR C@CTR A@CTR lfigangle C@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath +0.15 cm /lfigsolid /lfigblack +lfigopen +0.15 cm 0.05 cm lfigforward +grestore + +grestore +0 0 0 0 240 288 12 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ A@CTR A@CTR D@CTR lfigangle A@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef +D@CTR D@CTR A@CTR lfigangle D@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath +0.15 cm /lfigsolid /lfigblack +lfigopen +0.15 cm 0.05 cm lfigforward +grestore + +grestore +0 0 0 0 240 288 12 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ B@CTR B@CTR D@CTR lfigangle B@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef +D@CTR D@CTR B@CTR lfigangle D@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath +0.15 cm /lfigsolid /lfigblack +lfigopen +0.15 cm 0.05 cm lfigforward +grestore + +grestore +end end restore +grestore +0 10075(is)m 210(represented)s 1369(by)s gsave +1135 5559 translate +240 fnt83 6796 4176 0 4120 240 288 12 LoutGraphic +gsave +grestore save gsave 300 dict begin lfigdict begin +grestore +452 1014 0 958 240 288 12 0 3162 LoutGr2 +currentdict end 300 dict begin begin +grestore +452 338 56 282 240 288 12 0 676 LoutGr2 +currentdict end 300 dict begin begin +grestore +452 338 56 282 240 288 12 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigbox ] lfigdopath +pop pop +grestore + +grestore +(TOP) lfigpromotelabels +grestore +452 338 56 282 240 288 12 0 338 LoutGr2 +currentdict end 300 dict begin begin +grestore +452 338 56 282 240 288 12 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigbox ] lfigdopath +pop pop +grestore +gsave +206 150 translate +192 fnt83 39 39 0 39 192 288 48 LoutGraphic +gsave +/lfigblack [ lfigcircle ] gsave lfigpaintpath grestore +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigcircle ] lfigdopath +pop pop +grestore + +grestore + +grestore +(MID) lfigpromotelabels +grestore +452 338 56 282 240 288 12 0 0 LoutGr2 +currentdict end 300 dict begin begin +grestore +452 338 56 282 240 288 12 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigbox ] lfigdopath +pop pop +grestore +192 fnt83 180 128(a)m + +grestore +(BASE) lfigpromotelabels +grestore +(A) lfigpromotelabels +grestore +452 1014 0 958 240 288 12 6344 3162 LoutGr2 +currentdict end 300 dict begin begin +grestore +452 338 56 282 240 288 12 0 676 LoutGr2 +currentdict end 300 dict begin begin +grestore +452 338 56 282 240 288 12 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigbox ] lfigdopath +pop pop +grestore + +grestore +(TOP) lfigpromotelabels +grestore +452 338 56 282 240 288 12 0 338 LoutGr2 +currentdict end 300 dict begin begin +grestore +452 338 56 282 240 288 12 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigbox ] lfigdopath +pop pop +grestore +gsave +206 150 translate +192 fnt83 39 39 0 39 192 288 48 LoutGraphic +gsave +/lfigblack [ lfigcircle ] gsave lfigpaintpath grestore +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigcircle ] lfigdopath +pop pop +grestore + +grestore + +grestore +(MID) lfigpromotelabels +grestore +452 338 56 282 240 288 12 0 0 LoutGr2 +currentdict end 300 dict begin begin +grestore +452 338 56 282 240 288 12 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigbox ] lfigdopath +pop pop +grestore +192 fnt83 180 105(b)m +grestore +(BASE) lfigpromotelabels +grestore +(B) lfigpromotelabels +grestore +452 1014 0 958 240 288 12 0 1581 LoutGr2 +currentdict end 300 dict begin begin +grestore +452 338 56 282 240 288 12 0 676 LoutGr2 +currentdict end 300 dict begin begin +grestore +452 338 56 282 240 288 12 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigbox ] lfigdopath +pop pop +grestore +gsave +206 150 translate +192 fnt83 39 39 0 39 192 288 48 LoutGraphic +gsave +/lfigblack [ lfigcircle ] gsave lfigpaintpath grestore +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigcircle ] lfigdopath +pop pop +grestore + +grestore + +grestore +(TOP) lfigpromotelabels +grestore +452 338 56 282 240 288 12 0 338 LoutGr2 +currentdict end 300 dict begin begin +grestore +452 338 56 282 240 288 12 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigbox ] lfigdopath +pop pop +grestore +gsave +206 150 translate +192 fnt83 39 39 0 39 192 288 48 LoutGraphic +gsave +/lfigblack [ lfigcircle ] gsave lfigpaintpath grestore +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigcircle ] lfigdopath +pop pop +grestore + +grestore + +grestore +(MID) lfigpromotelabels +grestore +452 338 56 282 240 288 12 0 0 LoutGr2 +currentdict end 300 dict begin begin +grestore +452 338 56 282 240 288 12 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigbox ] lfigdopath +pop pop +grestore +192 fnt83 104 107(LK)m +grestore +(BASE) lfigpromotelabels +grestore +(L) lfigpromotelabels +grestore +452 1014 0 958 240 288 12 1586 1581 LoutGr2 +currentdict end 300 dict begin begin +grestore +452 338 56 282 240 288 12 0 676 LoutGr2 +currentdict end 300 dict begin begin +grestore +452 338 56 282 240 288 12 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigbox ] lfigdopath +pop pop +grestore +gsave +206 150 translate +192 fnt83 39 39 0 39 192 288 48 LoutGraphic +gsave +/lfigblack [ lfigcircle ] gsave lfigpaintpath grestore +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigcircle ] lfigdopath +pop pop +grestore + +grestore + +grestore +(TOP) lfigpromotelabels +grestore +452 338 56 282 240 288 12 0 338 LoutGr2 +currentdict end 300 dict begin begin +grestore +452 338 56 282 240 288 12 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigbox ] lfigdopath +pop pop +grestore +gsave +206 150 translate +192 fnt83 39 39 0 39 192 288 48 LoutGraphic +gsave +/lfigblack [ lfigcircle ] gsave lfigpaintpath grestore +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigcircle ] lfigdopath +pop pop +grestore + +grestore + +grestore +(MID) lfigpromotelabels +grestore +452 338 56 282 240 288 12 0 0 LoutGr2 +currentdict end 300 dict begin begin +grestore +452 338 56 282 240 288 12 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigbox ] lfigdopath +pop pop +grestore +192 fnt83 +104 107(LK)m +grestore +(BASE) lfigpromotelabels +grestore +(M) lfigpromotelabels +grestore +452 1014 0 958 240 288 12 4758 1581 LoutGr2 +currentdict end 300 dict begin begin +grestore +452 338 56 282 240 288 12 0 676 LoutGr2 +currentdict end 300 dict begin begin +grestore +452 338 56 282 240 288 12 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigbox ] lfigdopath +pop pop +grestore +gsave +206 150 translate +192 fnt83 39 39 0 39 192 288 48 LoutGraphic +gsave +/lfigblack [ lfigcircle ] gsave lfigpaintpath grestore +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigcircle ] lfigdopath +pop pop +grestore + +grestore + +grestore +(TOP) lfigpromotelabels +grestore +452 338 56 282 240 288 12 0 338 LoutGr2 +currentdict end 300 dict begin begin +grestore +452 338 56 282 240 288 12 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigbox ] lfigdopath +pop pop +grestore +gsave +206 150 translate +192 fnt83 39 39 0 39 192 288 48 LoutGraphic +gsave +/lfigblack [ lfigcircle ] gsave lfigpaintpath grestore +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigcircle ] lfigdopath +pop pop +grestore + +grestore + +grestore +(MID) lfigpromotelabels +grestore +452 338 56 282 240 288 12 0 0 LoutGr2 +currentdict end 300 dict begin begin +grestore +452 338 56 282 240 288 12 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigbox ] lfigdopath +pop pop +grestore +192 fnt83 104 107(LK)m +grestore +(BASE) lfigpromotelabels +grestore +(N) lfigpromotelabels +grestore +452 1014 0 958 240 288 12 0 0 LoutGr2 +currentdict end 300 dict begin begin +grestore +452 338 56 282 240 288 12 0 676 LoutGr2 +currentdict end 300 dict begin begin +grestore +452 338 56 282 240 288 12 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigbox ] lfigdopath +pop pop +grestore +gsave +206 150 translate +192 fnt83 39 39 0 39 192 288 48 LoutGraphic +gsave +/lfigblack [ lfigcircle ] gsave lfigpaintpath grestore +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigcircle ] lfigdopath +pop pop +grestore + +grestore + +grestore +(TOP) lfigpromotelabels +grestore +452 338 56 282 240 288 12 0 338 LoutGr2 +currentdict end 300 dict begin begin +grestore +452 338 56 282 240 288 12 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigbox ] lfigdopath +pop pop +grestore + +grestore +(MID) lfigpromotelabels +grestore +452 338 56 282 240 288 12 0 0 LoutGr2 +currentdict end 300 dict begin begin +grestore +452 338 56 282 240 288 12 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigbox ] lfigdopath +pop pop +grestore +192 fnt83 185 128(c)m + +grestore +(BASE) lfigpromotelabels +grestore +(C) lfigpromotelabels +grestore +452 1014 0 958 240 288 12 3172 0 LoutGr2 +currentdict end 300 dict begin begin +grestore +452 338 56 282 240 288 12 0 676 LoutGr2 +currentdict end 300 dict begin begin +grestore +452 338 56 282 240 288 12 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigbox ] lfigdopath +pop pop +grestore +gsave +206 150 translate +192 fnt83 39 39 0 39 192 288 48 LoutGraphic +gsave +/lfigblack [ lfigcircle ] gsave lfigpaintpath grestore +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigcircle ] lfigdopath +pop pop +grestore + +grestore + +grestore +(TOP) lfigpromotelabels +grestore +452 338 56 282 240 288 12 0 338 LoutGr2 +currentdict end 300 dict begin begin +grestore +452 338 56 282 240 288 12 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigbox ] lfigdopath +pop pop +grestore + +grestore +(MID) lfigpromotelabels +grestore +452 338 56 282 240 288 12 0 0 LoutGr2 +currentdict end 300 dict begin begin +grestore +452 338 56 282 240 288 12 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigbox ] lfigdopath +pop pop +grestore +192 fnt83 175 105(d)m +grestore +(BASE) lfigpromotelabels +grestore +(D) lfigpromotelabels +grestore +0 0 0 0 240 288 12 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ 0.5 cm 0 A@MID@CTR L@MID@CTR A@MID@CTR M@MID@CTR lfigpmin lfigpmin lfigpmin lfigpsub /BL lfigpointdef +A@MID@CTR L@MID@CTR A@MID@CTR M@MID@CTR lfigpmax lfigpmax lfigpmax 0.5 cm 0 lfigpadd /TR lfigpointdef +BL 0 BL TR lfigydistance lfigpadd /TL lfigpointdef +BL BL TR lfigxdistance 0 lfigpadd /BR lfigpointdef +BL +BR [ BR 0 0.5 cm lfigpadd ] +BR 0.5 cm 0.5 cm lfigpadd +TR 0.5 cm -0.5 cm lfigpadd [ 0 0.5 cm TR lfigpsub ] +TR +TL [ 0 0.5 cm TL lfigpsub ] +0.5 cm 0.5 cm TL lfigpsub +BL -0.5 cm 0.5 cm lfigpadd [ BL 0 0.5 cm lfigpadd ] +BL ] lfigdopath +pop pop +grestore + +grestore +0 0 0 0 240 288 12 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ 0.5 cm 0 L@TOP@CTR C@TOP@CTR L@TOP@CTR C@TOP@CTR lfigpmin lfigpmin lfigpmin lfigpsub /BL lfigpointdef +L@TOP@CTR C@TOP@CTR L@TOP@CTR C@TOP@CTR lfigpmax lfigpmax lfigpmax 0.5 cm 0 lfigpadd /TR lfigpointdef +BL 0 BL TR lfigydistance lfigpadd /TL lfigpointdef +BL BL TR lfigxdistance 0 lfigpadd /BR lfigpointdef +BL +BR [ BR 0 0.5 cm lfigpadd ] +BR 0.5 cm 0.5 cm lfigpadd +TR 0.5 cm -0.5 cm lfigpadd [ 0 0.5 cm TR lfigpsub ] +TR +TL [ 0 0.5 cm TL lfigpsub ] +0.5 cm 0.5 cm TL lfigpsub +BL -0.5 cm 0.5 cm lfigpadd [ BL 0 0.5 cm lfigpadd ] +BL ] lfigdopath +pop pop +grestore + +grestore +0 0 0 0 240 288 12 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ 0.5 cm 0 M@TOP@CTR D@TOP@CTR N@TOP@CTR D@TOP@CTR lfigpmin lfigpmin lfigpmin lfigpsub /BL lfigpointdef +M@TOP@CTR D@TOP@CTR N@TOP@CTR D@TOP@CTR lfigpmax lfigpmax lfigpmax 0.5 cm 0 lfigpadd /TR lfigpointdef +BL 0 BL TR lfigydistance lfigpadd /TL lfigpointdef +BL BL TR lfigxdistance 0 lfigpadd /BR lfigpointdef +BL +BR [ BR 0 0.5 cm lfigpadd ] +BR 0.5 cm 0.5 cm lfigpadd +TR 0.5 cm -0.5 cm lfigpadd [ 0 0.5 cm TR lfigpsub ] +TR +TL [ 0 0.5 cm TL lfigpsub ] +0.5 cm 0.5 cm TL lfigpsub +BL -0.5 cm 0.5 cm lfigpadd [ BL 0 0.5 cm lfigpadd ] +BL ] lfigdopath +pop pop +grestore + +grestore +0 0 0 0 240 288 12 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ 0.5 cm 0 B@MID@CTR N@MID@CTR B@MID@CTR N@MID@CTR lfigpmin lfigpmin lfigpmin lfigpsub /BL lfigpointdef +B@MID@CTR N@MID@CTR B@MID@CTR N@MID@CTR lfigpmax lfigpmax lfigpmax 0.5 cm 0 lfigpadd /TR lfigpointdef +BL 0 BL TR lfigydistance lfigpadd /TL lfigpointdef +BL BL TR lfigxdistance 0 lfigpadd /BR lfigpointdef +BL +BR [ BR 0 0.5 cm lfigpadd ] +BR 0.5 cm 0.5 cm lfigpadd +TR 0.5 cm -0.5 cm lfigpadd [ 0 0.5 cm TR lfigpsub ] +TR +TL [ 0 0.5 cm TL lfigpsub ] +0.5 cm 0.5 cm TL lfigpsub +BL -0.5 cm 0.5 cm lfigpadd [ BL 0 0.5 cm lfigpadd ] +BL ] lfigdopath +pop pop +grestore + +grestore +end end restore +grestore +0 5108(where)m 240 fnt83 645 5110(LK)m +240 fnt82 1017 5108(tags)m 1458(a)s 1630(record)s 2304(representing)s +3543(a)s 3715(link.)s 4257(The)s 4690(\207rst)s 5127(list)s +5484(in)s 5732(an)s 3(y)k 6135(node)s 6663(contains)s +7516(all)s 7815(the)s 8169(incoming)s 0 4820(links,)m 577(the)s +931(second)s 1660(contains)s 2514(the)s 2867(outgoing)s 3778(ones.)s +4387(The)s 4821(node)s 5348(serv)s 3(es)k 5999(as)s +6255(the)s 6609(header)s 7311(for)s 7655(both)s 8144(lists.)s +8698(The)s 0 4532(required)m 890(operations)s 1974(reduce)s 2704(to)s +2979(simple)s 3709(appends,)s 4638(deletes,)s 5444(and)s 5885(tra)s 4(v)k 3(ersals)k +6880(of)s 7187(doubly)s 7944(link)s 2(ed)k 8635(lists,)s +0 4244(all)m 325(ha)s 4(ving)k 1058(small)s 1663(constant)s +2552(cost.)s 3133(There)s 3779(is)s 4021(a)s 4219(highly)s +4918(tuned)s 5540(memory)s 6423(allocator)s 9(,)k 7389(and)s +7825(care)s 8310(is)s 8553(tak)s 2(en)k 0 3956(to)m +269(dispose)s 1073(of)s 1374(each)s 1900(node)s 2452(when)s +3058(the)s 3436(last)s 3858(incoming)s 4845(link)s 5308(is)s +5549(deleted,)s 6376(so)s 6672(that)s 7120(there)s 7684(is)s +7924(no)s 8247(need)s 8788(for)s 0 3668(g)m 1(arbage)k +812(collection.)s 480 3294(In)m 739(normal)s 1475(use)s 1854(the)s +2205(number)s 3000(of)s 3275(nodes)s 3888(at)s 4124(higher)s +4799(le)s 6(v)k 3(els)k 5402(of)s 5676(the)s +6028(dag)s 6431(is)s 6644(small)s 7220(in)s 7467(comparison)s +8644(with)s 0 3006(the)m 351(lea)s 4(v)k 3(es)k +995(and)s 1402(their)s 1903(incoming)s 2863(links,)s 3438(so)s +3707(we)s 4046(may)s 4515(estimate)s 5369(the)s 5720(space)s +6311(comple)s 3(xity)k 7441(at)s 7676(about)s 8271(60)s +8570(bytes)s 0 2718(per)m 355(input)s 896(w)s 2(ord)k +1433(\(20)s 1797(bytes)s 2342(per)s 2696(link,)s 3165(40)s +3449(per)s 3803(leaf)s 4222(node\).)s 4920(Careful)s 5680(optimization)s +6935(could)s 7514(easily)s 8114(halv)s 3(e)k 8674(this,)s +0 2430(b)m 4(ut)k 362(since)s 909(memory)s 1760(is)s +1970(reclaimed)s 2969(after)s 3465(printing)s 4275(each)s 4770(page)s +5278(there)s 5811(is)s 6021(little)s 6513(need.)s 240 fnt84 +0 1781(2.5.)m 471(Context-sensiti)s 2(v)k 2(e)k 2274(attrib)s 4(utes)k +3318(of)s 3590(objects)s 240 fnt82 480 1305(Although)m 1466(we)s +1826(are)s 2198(free)s 2649(to)s 2913(place)s 3498(an)s 3(y)k +3920(object)s 4588(in)s 4856(an)s 3(y)k 5278(conte)s 3(xt,)k +6111(the)s 6484(conte)s 3(xt)k 7270(must)s 7820(in\210uence)s +8778(the)s 0 1017(appearance)m 1131(of)s 1402(the)s 1750(object,)s +2441(since)s 2988(otherwise)s 220 fnt35 480 518(A shor)m -8(t par)k 2(ag)k 2(r)k 2(aph of te)k 6(xt.)k + +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 13 14 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Helvetica +%%+ font Times-Italic +/pgsave save def +%%IncludeResource: font Helvetica +/Helveticafnt35 vec2 /Helvetica LoutRecode +/fnt35 { /Helveticafnt35 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +1 LoutMargSet +grestore +4293 13844(-)m 4421(13)s 4705(-)s 0 13253(could)m 588(not)s +952(appear)s 1647(in)s 1887(a)s 2051(v)s 6(ariety)k +2760(of)s 3028(fonts,)s 3611(column)s 4384(widths,)s 5126(etc.)s +5566(This)s 6040(in\210uence)s 6970(cannot)s 7666(tak)s 2(e)k +8116(the)s 8461(purely)s 0 12965(static)m 569(form)s 1106(that)s +1538(block-structured)s 3175(languages)s 4196(use)s 4585(to)s 4837(associate)s +5769(v)s 6(alues)k 6438(with)s 6933(identi\207ers,)s 8009(for)s +8360(then)s 8843(an)s 0 12677(operator)m 850(could)s 1434(not)s +1794(in\210uence)s 2721(the)s 3063(appearance)s 4188(of)s 4453(its)s +4723(parameters;)s 5876(and)s 6274(a)s 6434(state)s 6921(v)s 6(ariable)k +7734(solution)s 8556(is)s 8760(not)s 0 12389(compatible)m 1118(with)s +1600(the)s 1948(o)s 3(v)k 3(erall)k 2660(functional)s +3684(design.)s 480 12015(The)m 914(information)s 2105(needed)s 2848(from)s +3378(the)s 3733(conte)s 3(xt)k 4500(seems)s 5141(quite)s +5682(limited,)s 6471(comprising)s 7607(the)s 7961(font)s 8413(f)s 2(amily)k 15(,)k +0 11727(f)m 2(ace,)k 525(and)s 952(size)s 1402(to)s +1664(use,)s 2114(the)s 2485(style)s 3015(of)s 3309(paragraph)s +4345(breaking)s 5259(required,)s 6185(ho)s 6(w)k 6669(much)s +7281(space)s 7891(to)s 8154(substitute)s 0 11439(between)m 873(the)s +1240(w)s 2(ords)k 1893(of)s 2184(paragraphs,)s 3359(and)s +3782(ho)s 6(w)k 4263(much)s 4871(horizontal)s 5914(and)s +6337(v)s 3(ertical)k 7124(space)s 7730(is)s 7959(a)s 4(v)k 6(ailable)k +8887(to)s 0 11151(recei)m 6(v)k 3(e)k 763(the)s +1139(object.)s 1914(These)s 2569(four)s 3054(items)s 3650(constitute)s +4662(the)s 5038(so-called)s 5985(`style)s 6599(information')s 7866(of)s +8165(Lout.)s 8809(As)s 0 10863(graphics)m 902(rendering)s 1912(hardw)s 2(are)k +2896(impro)s 3(v)k 3(es,)k 3928(the)s 4317(style)s +4865(information)s 6091(will)s 6558(probably)s 7504(gro)s 6(w)k +8085(to)s 8366(include)s 0 10575(colour)m 671(and)s 1075(te)s 3(xture)k +1791(information.)s 480 10201(The)m 908(w)s 2(ay)k 1359(to)s +1598(deal)s 2051(with)s 2533(fonts)s 3062(at)s 3294(least)s +3791(is)s 4001(v)s 3(ery)k 4477(clear:)s 220 fnt35 +480 9700({ )m 11(Times Slope 12p } @F)k 6(ont { Hello)k 8(, w)k 2(or)k -3(ld })k +240 fnt82 0 9204(should)m 697(ha)s 4(v)k 3(e)k +1198(result)s 240 fnt83 480 8750(Hello,)m 1104(world)s 240 fnt82 +0 8268(Lout)m 528(also)s 983(pro)s 3(vides)k 220 fnt35 +1872 8265(@Break)m 240 fnt82 2745 8268(and)m 220 fnt35 3166 8265(@Space)m +240 fnt82 4080 8268(symbols)m 4946(for)s 5301(controlling)s 6420(the)s +6785(paragraph)s 7815(breaking)s 8722(and)s 0 7980(space)m 610(styles)s +1229(mentioned)s 2320(abo)s 3(v)k 3(e.)k 3074(These)s +3724(w)s 2(ork)k 4299(in)s 4565(the)s 4937(same)s +5507(w)s 2(ay)k 15(,)k 6020(returning)s 6972(their)s +7493(right)s 8028(parameters)s 0 7692(in)m 261(the)s 627(style)s +1152(of)s 1441(their)s 1956(left.)s 2455(The)s 2901(implementation)s +4476(is)s 4704(v)s 3(ery)k 5198(simple:)s 6019(one)s +6439(merely)s 7174(broadcasts)s 8252(the)s 8619(style)s 0 7404(information)m +1183(do)s 6(wn)k 1765(into)s 2188(the)s 2533(parse)s +3091(tree)s 3502(of)s 3771(the)s 4116(right)s 4625(parameter)s 13(.)k +5728(A)s 5956(font,)s 6445(for)s 6781(e)s 3(xample,)k +7693(is)s 7901(con)s 9(v)k 3(erted)k 8887(to)s +0 7116(an)m 278(8-bit)s 783(internal)s 1562(name)s 2130(and)s +2529(stored)s 3165(in)s 3403(each)s 3892(leaf,)s 4351(while)s +4932(a)s 5093(breaking)s 5977(style)s 6479(is)s 6683(stored)s +7320(in)s 7557(the)s 7900(root)s 8339(node)s 8855(of)s +0 6828(each)m 495(paragraph.)s 480 6454(The)m 954(same)s 1547(language)s +2514(design)s 3242(can)s 3677(be)s 4006(used)s 4549(for)s +4933(a)s 4(v)k 6(ailable)k 5888(width)s 6536(and)s +6986(height,)s 7738(only)s 8264(here)s 8778(the)s 0 6166(implementation)m +1557(is)s 1767(much)s 2356(more)s 2903(demanding:)s 220 fnt35 +480 5665(2i @Wide {)m 480 5377(\(1\) |0.1i An e)m 6(xample)k 480 5089(containing a small)m 480 4801(par)m 2(ag)k 2(r)k 2(aph of \207lled te)k 6(xt.)k +480 4513(})m 240 fnt82 0 4019(is)m 210(guaranteed)s 1317(to)s +1556(be)s 1838(tw)s 2(o)k 2248(inches)s 2910(wide:)s +480 3516(\(1\))m 891(An)s 1270(e)s 3(xample)k 2162(containing)s +3254(a)s 891 3228(small)m 1504(paragraph)s 2558(of)s 2871(\207lled)s +891 2940(te)m 3(xt.)k 0 2487(One)m 448(must)s 966(calculate)s +1863(that)s 2273(1.9)s 2617(inches)s 3272(minus)s 3900(the)s +4241(width)s 4836(of)s 220 fnt35 5100 2484(\(1\))m 240 fnt82 +5406 2487(is)m 5609(a)s 4(v)k 6(ailable)k 6510(to)s +6741(the)s 7082(paragraph,)s 8138(and)s 8534(break)s 0 2199(it)m +186(accordingly;)s 1421(Basser)s 2111(Lout)s 2617(does)s 3100(this)s +3490(in)s 3727(tw)s 2(o)k 4130(stages.)s 4872(In)s +5121(the)s 5463(\207rst,)s 5935(upw)s 2(ard-mo)k 3(ving)k +7505(stage,)s 8097(widths)s 8779(are)s 0 1911(calculated)m 1018(using)s +1581(the)s 1920(formulae)s 2829(of)s 3091(Section)s 3856(2.3,)s +4254(which)s 4887(assume)s 5638(that)s 6047(a)s 4(v)k 6(ailable)k +6946(space)s 7524(is)s 7725(in\207nite.)s 8557(If)s 8778(the)s +0 1623(upw)m 2(ard)k 763(mo)s 3(v)k 3(ement)k +1815(reaches)s 2570(a)s 240 fnt83 2724 1625(WIDE)m 240 fnt82 +3375 1623(node,)m 3936(corresponding)s 5346(to)s 5573(a)s 220 fnt35 +5728 1620(@Wide)m 240 fnt82 6490 1623(operator)m 9(,)k 7372(and)s +7764(the)s 8100(calculated)s 0 1335(width)m 627(e)s 3(xceeds)k +1457(that)s 1900(allo)s 6(wed,)k 2784(a)s 2975(second,)s +3772(do)s 6(wnw)k 2(ard-mo)k 3(ving)k 5661(stage)s +6234(is)s 6469(initiated)s 7334(which)s 8001(attempts)s 8887(to)s +0 1047(reduce)m 681(the)s 1017(width)s 1606(by)s 1888(\207nding)s +2607(and)s 2999(breaking)s 3877(paragraphs.)s 5077(This)s 5541(second)s +6251(stage)s 6786(is)s 6984(quite)s 7505(routine)s 8226(e)s 3(xcept)k +8894(at)s 220 fnt35 0 756(|)m 240 fnt82 84 759(nodes,)m +736(whose)s 1390(children)s 2216(are)s 2549(the)s 2883(columns)s +3731(of)s 3988(a)s 4141(table.)s 4755(It)s 4946(is)s +5142(necessary)s 6111(to)s 6336(apportion)s 7296(the)s 7630(a)s 4(v)k 6(ailable)k +8524(width)s 0 471(\(minus)m 727(inter)s 4(-column)k 2026(g)s 1(aps\))k +2604(among)s 3321(the)s 3681(columns.)s 4668(Basser)s 5377(Lout)s +5901(lea)s 4(v)k 3(es)k 6554(narro)s 6(w)k +7291(columns)s 8166(unbrok)s 2(en)k +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 14 15 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Helvetica +%%+ font Times-Bold +%%+ font Symbol +/pgsave save def +%%IncludeResource: font Helvetica +/Helveticafnt35 vec2 /Helvetica LoutRecode +/fnt35 { /Helveticafnt35 LoutFont } def +%%IncludeResource: font Symbol +/fnt78 { /Symbol LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +0 LoutMargSet +grestore +4288 13844(-)m 4416(14)s 4710(-)s 0 13256(and)m 404(breaks)s +1079(the)s 1427(remaining)s 2449(columns)s 3311(to)s 3550(equal)s +4123(width,)s 4775(using)s 5347(up)s 5640(all)s 5933(of)s +6204(the)s 6552(a)s 4(v)k 6(ailable)k 7460(space.)s +480 12882(The)m 897(size)s 1313(of)s 1572(an)s 1844(object)s +2476(is)s 2675(not)s 3029(clearly)s 3721(determined)s 4843(when)s +5407(the)s 5744(upw)s 2(ard-mo)k 3(ving)k 7309(size)s +7725(is)s 7923(less)s 8321(than)s 8778(the)s 0 12594(do)m 6(wnw)k 2(ard-mo)k 3(ving)k +1871(a)s 4(v)k 6(ailable)k 2786(space,)s 3431(and)s +3842(the)s 4197(object)s 4849(contains)s 5704(constructs)s 6731(that)s +7156(depend)s 7913(on)s 8218(a)s 4(v)k 6(ailable)k +0 12306(space)m 587(\(e.g.)s 1056(right)s 1567(justi\207cation\).)s 2938(F)s 3(or)k +3327(e)s 3(xample,)k 4241(in)s 220 fnt35 480 11805(2i @Wide { Heading // a |1r)m -8(t b })k +240 fnt82 0 11306(it)m 211(seems)s 865(natural)s 1603(to)s +1861(assign)s 2536(a)s 2721(width)s 3342(of)s 3633(tw)s 2(o)k +4062(inches)s 4744(to)s 5002(the)s 5369(subobject)s 220 fnt35 +6366 11303(a |1r)m -8(t b)k 240 fnt82 7124 11306(because)m 7957(of)s +8247(the)s 8615(right)s 0 11018(justi\207cation,)m 1270(b)s 4(ut)k +1667(it)s 1895(w)s 2(ould)k 2585(be)s 2903(equally)s +3696(plausible)s 4650(if)s 4903(the)s 5286(width)s 5924(of)s +220 fnt35 6230 11015(Heading)m 240 fnt82 7129 11018(w)m 2(as)k +7586(assigned)s 8503(to)s 8778(the)s 0 10730(subobject)m 989(instead.)s +1843(The)s 2284(author)s 2968(is)s 3191(conscious)s 4199(of)s +4483(ha)s 4(ving)k 5197(f)s 2(ailed)k 5809(to)s +6061(resolv)s 3(e)k 6817(this)s 7226(matter)s 7908(properly;)s +8843(an)s 0 10442(e)m 3(xtra)k 534(operator)s 1390(for)s +1728(controlling)s 2830(a)s 4(v)k 6(ailable)k 3738(space)s +4325(is)s 4535(probably)s 5440(necessary)s 15(.)k 480 10068(The)m +930(actual)s 1578(paragraph)s 2614(breaking)s 3527(is)s 3759(just)s +4187(a)s 4376(simple)s 5092(transformation)s 6578(on)s 6897(the)s +7268(parse)s 7851(tree;)s 8343(the)s 8714(real)s 0 9780(issue)m +544(is)s 764(ho)s 6(w)k 1235(to)s 1484(describe)s +2346(the)s 2704(v)s 6(arious)k 3463(styles:)s 4183(ragged)s +4902(right,)s 5470(adjusted,)s 6384(outdented,)s 7445(and)s 7859(so)s +8135(on.)s 8549(Their)s 0 9492(di)m 6(v)k 3(ersity)k +874(suggests)s 1729(that)s 2140(the)s 3(y)k 2596(should)s +3286(someho)s 6(w)k 4245(be)s 4519(de\207ned)s 5275(using)s +5840(more)s 6380(basic)s 6917(features;)s 7777(b)s 4(ut)k +8132(then)s 8593(there)s 0 9204(are)m 367(algorithms)s 1461(for)s +1820(high-quality)s 3064(paragraph)s 4098(breaking,)s 5063(which)s 5726(presumably)s +6917(must)s 7463(be)s 7766(b)s 4(uilt-in.)k 8650(This)s +0 8916(dilemma)m 915(w)s 2(as)k 1355(not)s 1741(clearly)s +2463(grasped)s 3285(by)s 3598(the)s 3966(author)s 4656(in)s +4919(1985,)s 5525(and)s 5949(he)s 6250(included)s 7152(a)s +7337(b)s 4(uilt-in)k 8113(paragraph)s 0 8628(break)m 2(er)k 9(,)k +818(with)s 1306(the)s 220 fnt35 1660 8625(@Break)m 240 fnt82 +2522 8628(operator)m 3384(selecting)s 4292(from)s 4822(a)s 4995(\207x)s 3(ed)k +5535(set)s 5866(of)s 6143(styles.)s 6857(A)s 7093(much)s +7688(better)s 8298(solution)s 0 8340(based)m 603(on)s 900(g)s 1(alle)k 3(ys)k +1624(will)s 2050(be)s 2332(gi)s 6(v)k 3(en)k +2912(in)s 3155(Section)s 3929(5.5,)s 4336(b)s 4(ut,)k +4745(re)s 3(grettably)k 15(,)k 5868(it)s 6060(is)s +6270(not)s 6636(implemented.)s 240 fnt84 0 7547(3.)m 291(De\207nitions)s +240 fnt82 480 7116(The)m 936(need)s 1474(to)s 1741(pro)s 3(vide)k +2554(a)s 2748(means)s 3438(of)s 3737(packaging)s 4803(useful)s +5470(pieces)s 6146(of)s 6445(code)s 6982(for)s 7348(easy)s +7855(repeated)s 8751(use)s 0 6828(w)m 2(as)k 440(recognised)s +1554(in)s 1816(the)s 2184(v)s 3(ery)k 2679(earliest)s +3447(programming)s 4822(languages.)s 5962(This)s 6458(need)s 6987(is)s +7217(e)s 6(v)k 3(en)k 7736(more)s 8303(acute)s +8883(in)s 0 6540(document)m 1004(formatting,)s 2118(if)s 2335(that)s +2752(is)s 2962(possible,)s 3852(because)s 4664(the)s 5012(majority)s +5874(of)s 6145(users)s 6686(are)s 7033(not)s 7398(programmers)s +8722(and)s 0 6252(do)m 293(not)s 659(understand)s 1767(the)s +2115(code)s 2623(the)s 3(y)k 3086(in)s 9(v)k 4(ok)k 2(e.)k +240 fnt84 0 5603(3.1.)m 471(Operators)s 240 fnt82 480 5126(It)m +680(is)s 885(e)s 6(vident)k 1637(from)s 2156(the)s +2498(e)s 3(xample)k 3356(of)s 3621(Eqn)s 4059(that)s +4471(user)s 4(-de\207ned)k 5702(operators)s 6636(are)s 6978(needed)s +7708(that)s 8121(mimic)s 8778(the)s 0 4838(primiti)m 6(v)k 3(e)k +929(ones)s 1426(in)s 1677(taking)s 2335(objects)s 3071(as)s +3328(parameters)s 4434(and)s 4845(returning)s 5781(objects)s 6517(as)s +6774(results.)s 7569(F)s 3(or)k 7965(e)s 3(xample,)k +8887(to)s 0 4550(de\207ne)m 641(a)s 807(superscript)s 1915(operator)s +2771(so)s 3037(that)s 220 fnt35 480 4056(2 sup n)m 240 fnt82 +0 3531(appears)m 781(as)s 168 fnt82 1145 3647(n)m 240 fnt78 +1031 3525(2)m 240 fnt82 1227 3531(,)m 1334(the)s 1682(follo)s 6(wing)k +2659(operator)s 3515(de\207nition)s 4489(may)s 4955(be)s 5237(used:)s +220 fnt35 480 3032(def sup)m 480 2744( precedence 50)m 480 2456( associativity r)m -3(ight)k +480 2168( left x)m 480 1880( r)m -3(ight y)k 480 1592({)m 480 1304( @OneRo)m 3(w { | {-2p @F)k 6(ont y} ^/0.5fk x })k +480 1016(})m 240 fnt82 0 520(The)m 220 fnt35 481 517(sup)m +240 fnt82 940 520(operator)m 1850(has)s 2273(precedence)s 3458(50,)s +3858(is)s 4122(right)s 4686(associati)s 6(v)k 3(e,)k +5886(tak)s 2(es)k 6479(tw)s 2(o)k 6943(objects)s +7724(as)s 8028(parameters)s 0 232(passed)m 720(on)s 1041(the)s +1413(left)s 1814(and)s 2242(right,)s 2825(and)s 3253(returns)s +3991(the)s 4363(object)s 5031(between)s 5910(braces)s 6595(as)s +6869(result.)s 7587(This)s 8087(object)s 8756(has)s +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 15 16 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Italic +%%+ font Helvetica +%%+ font Times-Bold +/pgsave save def +%%IncludeResource: font Helvetica +/Helveticafnt35 vec2 /Helvetica LoutRecode +/fnt35 { /Helveticafnt35 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +1 LoutMargSet +grestore +4292 13841(-)m 4420(15)s 4706(-)s 0 13250(the)m 348(structure)s +gsave +608 12769 translate +280 fnt83 128 191 0 123 280 288 70 LoutGraphic +gsave +grestore save gsave 200 dict begin lfigdict begin +grestore +128 191 0 123 280 288 70 0 0 LoutGr2 +/lfiglightgrey [ lfigbox ] gsave lfigpaintpath grestore +0.015 cm setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigbox ] lfigdopath +pop pop +grestore +128 191 0 123 280 288 70 0 0 LoutGr2 + +0.015 cm setlinewidth lfiground setlinecap +0.15 cm /lfigdashed [ -0.3 cm ymark xsize ymark 0.3 cm 0 lfigpadd +[] +xmark -0.3 cm xmark ysize 0 0.3 cm lfigpadd ] lfigdopath +pop pop +grestore +260 fnt35 0 56(y)m +grestore + +grestore +end end restore +grestore +gsave +480 12634 translate +280 fnt83 128 135 0 67 280 288 70 LoutGraphic +gsave +grestore save gsave 200 dict begin lfigdict begin +grestore +128 135 0 67 280 288 70 0 0 LoutGr2 +/lfiglightgrey [ lfigbox ] gsave lfigpaintpath grestore +0.015 cm setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigbox ] lfigdopath +pop pop +grestore +128 135 0 67 280 288 70 0 0 LoutGr2 + +0.015 cm setlinewidth lfiground setlinecap +0.15 cm /lfigdashed [ -0.3 cm ymark xsize ymark 0.3 cm 0 lfigpadd +[] +xmark -0.3 cm xmark ysize 0 0.3 cm lfigpadd ] lfigdopath +pop pop +grestore +260 fnt35 0 0(x)m +grestore + +grestore +end end restore +grestore +0 12183(b)m 4(ut)k +381(with)s 882(the)s 1249(\207rst)s 1699(ro)s 6(w)k +2138(mark)s 2709(hidden)s 3437(by)s 3751(the)s 220 fnt35 +4118 12180(@OneRo)m 3(w)k 240 fnt82 5268 12183(operator)m 9(,)k +6181(and)s 220 fnt35 6604 12180(y)m 240 fnt82 6791 12183(tw)m 2(o)k +7220(points)s 7875(smaller)s 8657(than)s 0 11895(it)m 220(w)s 2(ould)k +904(otherwise)s 1917(ha)s 4(v)k 3(e)k 2447(been.)s +3091(The)s 3548(length)s 220 fnt35 4231 11892(0.5f)m 240 fnt82 +4683 11895(speci\207es)m 5585(half)s 6057(the)s 6433(current)s 7198(font)s +7671(size;)s 8243(Figure)s 8952(2)s 0 11607(describes)m 936(the)s +220 fnt35 1280 11604(k)m 240 fnt82 1446 11607(g)m 1(ap)k +1840(mode.)s 2532(In)s 2784(the)s 3128(Eq)s 3448(equation)s +4325(formatting)s 5382(package)s 6218([10])s 6651(the)s 6995(equation)s +7872(as)s 8118(a)s 8280(whole)s 8916(is)s 0 11319(set)m +331(in)s 580(italic)s 1116(font,)s 1614(and)s 220 fnt35 +2024 11316(2)m 240 fnt82 2203 11319(is)m 2419(an)s 2709(identi\207er)s +3637(whose)s 4311(body)s 4852(contains)s 5706(a)s 5879(font)s +6330(change)s 7070(back)s 7590(to)s 7835(Roman.)s 8698(The)s +0 11031(digits)m 220 fnt35 586 11028(0)m 240 fnt82 765 11031(to)m +220 fnt35 1009 11028(9)m 240 fnt82 1186 11031(are)m 1538(classed)s +2291(as)s 2546(punctuation)s 3737(characters,)s 4816(permitting)s 220 fnt35 +5869 11028(234)m 240 fnt82 6293 11031(for)m 6635(e)s 3(xample)k +7503(to)s 7747(be)s 8034(interpreted)s 0 10743(as)m 250(a)s +416(sequence)s 1349(of)s 1620(three)s 2153(identi\207ers.)s 480 10369(These)m +1152(de\207nitions)s 2258(are)s 2650(easily)s 3307(implemented)s 4658(by)s +4997(a)s 5208(standard)s 6122(symbol)s 6927(table)s 7492(and)s +7941(an)s 8270(operator)s 0 10081(precedence)m 1155(parser)s 13(.)k +1914(Algol)s 2539(block)s 3157(structure)s 4073(with)s 4580(the)s +4953(usual)s 5538(scope)s 6164(rules)s 6704(w)s 2(as)k +7150(adopted)s 7991(as)s 8266(a)s 8457(matter)s 0 9793(of)m +271(course.)s 480 9419(Operators)m 1481(are)s 1837(limited)s 2580(to)s +2828(at)s 3069(most)s 3603(tw)s 2(o)k 4022(parameters,)s +5185(left)s 5571(and)s 5984(right,)s 6551(and)s 6964(the)s +7321(parameters)s 8428(cannot)s 0 9131(be)m 282(gi)s 6(v)k 3(en)k +862(def)s 2(ault)k 1583(v)s 6(alues.)k 240 fnt83 +2352 9133(Named)m 240 fnt82 3097 9131(parameters)m 4195(solv)s 3(e)k +4753(both)s 5236(problems:)s 220 fnt35 480 8630(def @Pref)m 6(ace)k +480 8342( named @T)m 26(ag {})k 480 8054( named @Title { Pref)m 6(ace })k 480 7766( r)m -3(ight @Body)k +480 7478({)m 480 7190( Bold @F)m 6(ont @Title)k 480 6902( //0.3v @Body)m 480 6614(})m +240 fnt82 0 6120(The)m 452(def)s 2(ault)k 1197(v)s 6(alue)k +1789(appears)s 2594(just)s 3023(after)s 3543(the)s 3915(parameter')s 13(s)k +5103(declaration,)s 6295(between)s 7173(braces.)s 7972(In)s 9(v)k 4(ocations)k +0 5832(ha)m 4(v)k 3(e)k 501(a)s 667(natural)s +1385(syntax:)s 220 fnt35 480 5331(@Pref)m 6(ace)k 480 5043( @Title { About this book })m +480 4755({)m 480 4467( F)m 6(e)k 4(w obser)k -6(v)k 5(ers w)k 2(ould ha)k 4(v)k 5(e supposed in 1984, that ...)k +480 4179(})m 240 fnt82 0 3685(with)m 481(the)s 827(actual)s +1450(named)s 2145(parameters)s 3241(follo)s 6(wing)k 4216(directly)s +4998(after)s 5492(the)s 5838(operator)s 9(,)k 6731(before)s +7395(an)s 3(y)k 7790(right)s 8299(parame)s 8998(-)s +0 3397(ter)m 13(.)k 400(In)s 653(this)s 1046(e)s 3(xample,)k +220 fnt35 1958 3394(@T)m 26(ag)k 240 fnt82 2578 3397(will)m +3001(recei)s 6(v)k 3(e)k 3735(its)s 4008(def)s 2(ault)k +4726(v)s 6(alue,)k 5342(and)s 5744(a)s 5907(less)s +6313(e)s 3(xpert)k 6965(user)s 7420(could)s 8007(safely)s +8628(omit)s 0 3109(the)m 220 fnt35 348 3106(@Title)m 240 fnt82 +1036 3109(parameter)m 2050(as)s 2300(well.)s 480 2735(Lout)m 1007(permits)s +1790(named)s 2502(parameters)s 3616(to)s 3870(ha)s 4(v)k 3(e)k +4387(parameters,)s 5557(a)s 5739(feature)s 6472(with)s 6970(applications)s +8192(to)s 8447(biblio)s 8998(-)s 0 2447(graphic)m 781(databases,)s +1816(running)s 2626(headers,)s 3475(and)s 3891(other)s 4454(places)s +5114(where)s 5766(a)s 5944(format)s 6652(has)s 7034(to)s +7285(be)s 7579(supplied)s 8460(before)s 0 2159(content)m 760(is)s +965(kno)s 6(wn.)k 1771(One)s 2221(could)s 2806(go)s +3094(further)s 3798(and)s 4197(pro)s 3(vide)k 4976(a)s +5137(complete)s 6064(lambda)s 6823(calculus,)s 7708(with)s 8185(functions)s +0 1871(as)m 250(\207rst-)s 689(class)s 1204(objects,)s 1988(pro)s 3(vided)k +2894(care)s 3347(w)s 2(as)k 3768(tak)s 2(en)k +4341(not)s 4707(to)s 4946(intimidate)s 5970(the)s 6318(non-)s +6746(e)s 3(xpert)k 7400(user)s 13(.)k 240 fnt84 +0 1222(3.2.)m 471(Recursion)s 1563(and)s 2004(page)s 2539(lay)s 6(out)k +240 fnt82 480 745(Design)m 1302(and)s 1794(implementation)s 3439(should)s +4223(proceed)s 5126(together)s 6057(in)s 6387(e)s 3(xploratory)k +7628(projects,)s 8579(since)s 0 457(otherwise)m 988(the)s 1340(design)s +2025(too)s 2388(easily)s 3003(becomes)s 3894(unrealistic.)s 5056(Sometimes)s +6173(the)s 6524(implementation)s 8085(does)s 8579(more)s +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 16 17 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Helvetica +/Helveticafnt35 vec2 /Helvetica LoutRecode +/fnt35 { /Helveticafnt35 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +0 LoutMargSet +grestore +4288 13842(-)m 4416(16)s 4709(-)s 0 13251(than)m 469(its)s +745(designer)s 1615(intended.)s 2603(The)s 3031(author)s 3702(wrote)s +4302(the)s 4650(follo)s 6(wing)k 5627(purely)s 6292(as)s +6542(a)s 6708(testing)s 7398(scaf)s 6(fold:)k 220 fnt35 +480 12750(def @P)m 8(age r)k -3(ight x)k 480 12462({)m 480 12174( 8i @Wide 11i @High)m +480 11886( {)m 480 11598( //1i ||1i x ||1i)m 480 11310( //1i)m 480 11022( })m 480 10734(})m +240 fnt82 0 10240(Only)m 518(afterw)s 2(ards)k 1558(did)s +1906(he)s 2172(realize)s 2848(its)s 3108(signi\207cance:)s 4400(the)s +4732(concept)s 5521(of)s 5776(a)s 5926(page)s 6418(had)s +6807(been)s 7300(de\207ned)s 8047(outside)s 8778(the)s 0 9952(implementation,)m +1619(remo)s 3(ving)k 2598(the)s 2959(need)s 3481(for)s +3831(commands)s 4932(for)s 5282(setting)s 5984(page)s 6505(width)s +7119(and)s 7535(height,)s 8253(mar)s 4(gins,)k 0 9664(and)m +404(so)s 670(on.)s 480 9290(De\207ning)m 1393(a)s 1582(sequence)s +2538(of)s 2831(pages)s 3450(is)s 3683(harder)s 9(,)k +4414(since)s 4983(their)s 5503(number)s 6317(is)s 6550(not)s +6938(kno)s 6(wn)k 7665(in)s 7931(adv)s 6(ance.)k +8896(A)s 0 9002(simple)m 693(v)s 3(ersion)k 1451(of)s +1722(this)s 2118(same)s 2665(problem)s 3522(is)s 3732(af)s 6(forded)k +4593(by)s 4887(the)s 5235(leaders)s 5962(found)s 6579(in)s +6822(tables)s 7430(of)s 7701(contents:)s 480 8497(Chapter)m 1297(7)s +1525(..)s 1809(..)s 2093(..)s 2377(..)s 2661(..)s +2945(..)s 3229(..)s 3513(..)s 3797(..)s 4081(..)s +4365(..)s 4649(..)s 4933(..)s 5217(..)s 5501(..)s +5785(..)s 6009(53)s 0 7994(This)m 476(seemed)s 1251(to)s +1490(require)s 2222(recursion,)s 3218(speci\207cally)s 4360(the)s 4708(de\207nition)s +220 fnt35 480 7493(def @Leaders { ..)m 13( @Leaders })k 240 fnt82 0 6999(Note)m +535(that)s 968(both)s 220 fnt35 1465 6996(..)m 240 fnt82 +1643 6999(and)m 220 fnt35 2061 6996(@Leaders)m 240 fnt82 3145 6999(are)m +3506(objects,)s 4305(so)s 4585(the)s 4948(tw)s 2(o)k +5372(spaces)s 6062(separating)s 7111(them)s 7664(are)s 8026(signi\207cant.)s +0 6711(No)m 361(base)s 858(case)s 1341(is)s 1567(gi)s 6(v)k 3(en,)k +2213(and)s 2633(indeed)s 3345(we)s 3696(ha)s 4(v)k 3(e)k +4213(no)s 4522(boolean)s 5353(or)s 5628(conditional)s 6775(operators)s +7731(with)s 8229(which)s 8887(to)s 0 6423(e)m 3(xpress)k +757(it;)s 993(b)s 4(ut)k 1346(we)s 1673(can)s +2053(adopt)s 2637(the)s 2977(implicit)s 3770(base)s 4243(`if)s +4530(space)s 5109(is)s 5311(not)s 5668(suf\207cient,)s 6656(delete)s +220 fnt35 7273 6420(@Leaders)m 240 fnt82 8334 6423(and)m 8729(an)s 3(y)k +0 6135(preceding)m 996(space'.)s 1770(Then)s 2319(the)s 2667(e)s 3(xpression)k +220 fnt35 480 5634(4i @Wide { Chapter 7 @Leaders 53 })m 240 fnt82 0 5138(will)m 417(produce)s +1234(the)s 1572(object)s 2206(sho)s 6(wn)k 2873(abo)s 3(v)k 3(e.)k +3593(It)s 3788(is)s 3988(hard)s 4461(to)s 4691(see)s +5042(ho)s 6(w)k 5493(this)s 5879(base)s 6350(could)s +6930(be)s 7202(made)s 7766(e)s 3(xplicit,)k 8576(with)s +8998(-)s 0 4850(out)m 348(violating)s 1232(the)s 1561(general)s +2301(principle)s 3187(of)s 3439(k)s 2(eeping)k 4230(all)s +4504(size)s 4912(information)s 6079(internal.)s 6953(In)s 7190(the)s +7519(implementation,)s 220 fnt35 0 4559(@Leaders)m 240 fnt82 1071 4562(remains)m +1881(une)s 3(xpanded)k 3097(while)s 3686(sizes)s 4204(are)s +4554(being)s 5142(calculated;)s 6224(then)s 6696(it)s 6891(is)s +7103(treated)s 7813(similarly)s 8718(to)s 8960(a)s 0 4274(recepti)m 6(v)k 3(e)k +922(symbol,)s 1734(with)s 2216(its)s 2492(body)s 3026(as)s +3276(an)s 3559(incoming)s 4516(g)s 1(alle)k 3(y)k +5150(\(Section)s 6003(5.2\).)s 480 3900(W)m 9(ith)k 1014(this)s +1418(settled,)s 2156(it)s 2356(is)s 2574(no)s 6(w)k +3044(clear)s 3575(ho)s 6(w)k 4044(to)s 4291(de\207ne)s +4940(a)s 5115(document)s 6127(which)s 6777(is)s 6995(a)s +7169(numbered)s 8193(sequence)s 0 3612(of)m 271(pages.)s 980(Let)s +220 fnt35 1358 3609(@Ne)m 6(xt)k 240 fnt82 2082 3612(be)m +2364(a)s 2530(pre\207x)s 3143(operator)s 3999(which)s 4641(returns)s +5355(its)s 5631(parameter)s 6645(plus)s 7095(one.)s 7605(Then)s +220 fnt35 480 3111(def @P)m 8(ageList)k 480 2823( r)m -3(ight @P)k 8(ageNum)k +480 2535({)m 480 2247( @P)m 8(age {)k 480 1959( |0.5r)m -8(t - @P)k 8(ageNum -)k +480 1671( //1v @T)m 26(e)k 6(xtPlace)k 480 1383( //1r)m -8(t @F)k 6(ootSect)k +480 1095( })m 480 807( //)m 480 519( @P)m 8(ageList @Ne)k 6(xt @P)k 8(ageNum)k +480 231(})m +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 17 18 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Helvetica +/Helveticafnt35 vec2 /Helvetica LoutRecode +/fnt35 { /Helveticafnt35 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +1 LoutMargSet +grestore +4291 13844(-)m 4419(17)s 4707(-)s 0 13255(when)m 576(in)s 9(v)k 4(ok)k 2(ed)k +1391(in)s 1634(the)s 1982(e)s 3(xpression)k 220 fnt35 +3059 13252(@P)m 8(ageList 1)k 240 fnt82 4267 13255(,)m 4374(has)s +4744(for)s 5082(its)s 5358(result)s 5948(the)s 6296(potentially)s +7372(in\207nite)s 8105(object)s 1927 2494 0 2494 240 288 60 480 10421 LoutGr2 +0 0 moveto xsize 0 lineto xsize ysize lineto +0 ysize lineto closepath stroke +grestore +160 fnt82 845 2216(-)m 931(1)s +1035(-)s 140 fnt35 170 2000(@T)m 16(e)k 4(xtPlace)k +170 173(@F)m 4(ootSect)k +grestore +1927 2494 0 2494 240 288 60 480 7927 LoutGr2 +0 0 moveto xsize 0 lineto xsize ysize lineto +0 ysize lineto closepath stroke +grestore +160 fnt82 839 2216(-)m 925(2)s +1041(-)s 140 fnt35 170 2000(@T)m 16(e)k 4(xtPlace)k +170 173(@F)m 4(ootSect)k +grestore +140 fnt35 480 7712(@P)m 5(ageList 3)k +240 fnt82 0 7230(Similarly)m 15(,)k 980(we)s 1315(may)s +1781(de\207ne)s 220 fnt35 2422 7227(@F)m 6(ootSect)k 240 fnt82 +3573 7230(lik)m 2(e)k 3985(this:)s 220 fnt35 480 6729(def @F)m 6(ootSect)k +480 6441({)m 480 6153( def @F)m 6(ootList)k 480 5865( r)m -3(ight @Num)k +480 5577( {)m 480 5289( @F)m 6(ootPlace)k 480 5001( //1v)m 480 4713( @F)m 6(ootList @Ne)k 6(xt @Num)k +480 4425( })m 480 3849( 1i @Wide @HLine)m 480 3561( //1v)m 480 3273( @F)m 6(ootList 1)k +480 2985(})m 240 fnt82 0 2491(so)m 266(that)s 684(an)s +967(in)s 9(v)k 4(ocation)k 2021(of)s 220 fnt35 +2292 2488(@F)m 6(ootSect)k 240 fnt82 3443 2491(produces)m gsave +480 2151 translate +220 fnt35 1440 0 0 0 220 288 61 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore +220 fnt35 +480 1806(@F)m 6(ootPlace)k 480 1518(@F)m 6(ootPlace)k 480 1230(@F)m 6(ootPlace)k +480 942(...)m +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 18 19 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Helvetica +%%+ font Times-Bold +%%+ font Times-Italic +/pgsave save def +%%IncludeResource: font Helvetica +/Helveticafnt35 vec2 /Helvetica LoutRecode +/fnt35 { /Helveticafnt35 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +0 LoutMargSet +grestore +4291 13844(-)m 4419(18)s 4706(-)s 0 13253(The)m 476(e)s 3(xpansion)k +1550(process)s 2367(is)s 2626(v)s 3(ery)k 3150(similar)s +3921(to)s 4209(a)s 4424(BNF)s 4997(deri)s 6(v)k 6(ation,)k +6109(and)s 6562(w)s 2(ould)k 7266(be)s 7597(attempted)s +8646(only)s 0 12965(on)m 297(demand.)s 480 12591(Clearly)m 15(,)k +1276(deciding)s 2154(which)s 2797(e)s 3(xpansions)k 3910(to)s +4150(tak)s 2(e)k 4603(and)s 5008(replacing)s 220 fnt35 +5951 12588(@T)m 26(e)k 6(xtPlace)k 240 fnt82 7170 12591(and)m +220 fnt35 7575 12588(@F)m 6(ootPlace)k 240 fnt82 8832 12591(by)m +0 12303(the)m 338(appropriate)s 1471(actual)s 2085(te)s 3(xt)k +2489(will)s 2904(not)s 3259(be)s 3530(easy;)s 4056(this)s +4441(is)s 4640(the)s 4977(subject)s 5703(of)s 5963(Section)s +6726(5.1.)s 7179(The)s 7596(important)s 8574(point)s 0 12015(for)m +331(no)s 6(w)k 784(is)s 986(that)s 1397(we)s +1724(ha)s 4(v)k 3(e)k 2217(here)s 2677(a)s +2835(v)s 3(ery)k 3303(simple)s 3989(and)s 4385(\210e)s 3(xible)k +5147(method)s 5916(of)s 6179(specifying)s 7220(the)s 7561(layout)s +8211(of)s 8474(pages,)s 0 11727(which)m 642(requires)s 1462(no)s +1755(specialized)s 2874(language)s 3794(features.)s 240 fnt84 0 11079(3.3.)m +471(Modules)s 240 fnt82 480 10648(It)m 679(is)s 882(well)s +1342(accepted)s 2229(that)s 2641(the)s 2982(visibility)s 3879(of)s +4143(symbols)s 4986(is)s 5189(not)s 5549(adequately)s 6632(controlled)s +7653(by)s 7940(Algol)s 8533(block)s 0 10360(structure.)m 999(The)s +1427(author)s 2098(is)s 2308(a)s 3(w)k 2(are)k +2929(of)s 3200(se)s 6(v)k 3(eral)k 3922(major)s +4539(problems)s 5480(of)s 5751(this)s 6147(kind)s 6631(in)s +6874(document)s 7878(formatting.)s 480 9986(One)m 976(problem)s 1874(is)s +2126(that)s 2585(some)s 3187(symbols)s 4078(should)s 4816(be)s +5139(visible)s 5874(only)s 6395(within)s 7104(restricted)s 8091(parts)s +8647(of)s 8960(a)s 0 9698(document.)m 1108(F)s 3(or)k +1497(e)s 3(xample,)k 2411(we)s 2746(naturally)s 3649(e)s 3(xpect)k +4330(equation)s 5211(formatting)s 6272(to)s 6511(be)s 6793(accomplished)s +8166(lik)s 2(e)k 8578(this:)s 220 fnt35 480 9201(surrounding te)m 6(xt)k +480 8913(@Eq { {x sup 2 + 1} o)m 3(v)k 5(er 4 })k 480 8625(surrounding te)m 6(xt)k +240 fnt82 0 8126(with)m 482(the)s 830(symbols)s 220 fnt35 +1679 8123(sup)m 240 fnt82 2025 8126(,)m 220 fnt35 2132 8123(o)m 3(v)k 5(er)k +240 fnt82 2551 8126(,)m 2658(etc.,)s 3103(visible)s 3796(only)s +4276(within)s 4944(the)s 5292(equation,)s 6223(not)s 6589(in)s +6832(the)s 7180(surrounding)s 8390(te)s 3(xt.)k 480 7752(It)m +695(seems)s 1341(natural)s 2069(to)s 2319(de\207ne)s 2970(these)s +3528(symbols)s 4387(within)s 220 fnt35 5066 7749(@Eq)m 240 fnt82 +5544 7752(,)m 5661(since)s 6219(the)s 3(y)k 6692(are)s +7050(local)s 7579(to)s 7829(equations.)s 8921(It)s 0 7464(only)m +494(remains)s 1316(then)s 1799(to)s 2053(decree)s 2746(that)s +3179(symbols)s 4043(local)s 4576(to)s 220 fnt35 4830 7461(@Eq)m +240 fnt82 5382 7464(are)m 5744(to)s 5998(be)s 6294(visible)s +7002(within)s 7684(its)s 7975(actual)s 8615(right)s 0 7176(parameter)m 9(,)k +1052(and)s 1456(this)s 1852(is)s 2062(done)s 2584(by)s +2878(replacing)s 3820(the)s 4168(right)s 4679(formal)s 5370(parameter)s +6384(with)s 6866(a)s 240 fnt83 7032 7178(body)m 240 fnt82 +7554 7176(parameter:)m 220 fnt35 480 6690(e)m 6(xpor)k -8(t sup o)k 3(v)k 5(er)k +480 6402(def @Eq)m 480 6114( body @Body)m 480 5826({)m 480 5538( def sup ...)m 480 5250( def o)m 3(v)k 5(er ...)k +480 4674( Slope @F)m 6(ont @Body)k 480 4386(})m 240 fnt82 0 3892(The)m +220 fnt35 426 3889(e)m 6(xpor)k -8(t)k 240 fnt82 +1092 3892(clause)m 1743(lists)s 2176(the)s 2522(identi\207ers)s 3526(which)s +4166(are)s 4511(permitted)s 5482(to)s 5719(be)s 5999(visible)s +6690(outside)s 7435(their)s 7930(usual)s 8488(range,)s 0 3604(the)m +359(body)s 905(of)s 220 fnt35 1188 3601(@Eq)m 240 fnt82 +1666 3604(;)m 1790(and)s 2206(the)s 220 fnt35 2566 3601(body)m +240 fnt82 3112 3604(declaration)m 4241(imports)s 5034(them)s 5584(into)s +6021(\(mak)s 2(es)k 6772(them)s 7322(visible)s 8027(within\))s +8778(the)s 0 3316(actual)m 614(right)s 1114(parameter)s 2117(of)s +2376(each)s 2860(in)s 9(v)k 4(ocation)k 3903(of)s +220 fnt35 4162 3313(@Eq)m 240 fnt82 4640 3316(.)m 4793(This)s +5258(arrangement)s 6500(has)s 6859(pro)s 3(v)k 3(en)k +7564(v)s 3(ery)k 8028(con)s 9(v)k 3(enient)k +0 3028(for)m 338(de\207ning)s 1176(a)s 1342(v)s 6(ariety)k +2053(of)s 2324(special-purpose)s 3880(packages.)s 480 2654(Another)m 1361(problem)s +2256(arises)s 2888(when)s 3502(global)s 4193(symbols,)s 5136(such)s +5669(as)s 5957(the)s 6343(ones)s 6871(used)s 7406(for)s +7782(headings)s 8722(and)s 0 2366(paragraph)m 1034(separators,)s 2130(call)s +2550(on)s 2868(v)s 6(alues)k 3545(that)s 3984(the)s +4353(non-e)s 3(xpert)k 5468(user)s 5947(will)s 6394(need)s +6925(to)s 7185(modify)s 15(,)k 7989(such)s 8506(as)s +8778(the)s 0 2078(initial)m 605(font)s 1044(or)s 1297(paragraph)s +2303(indent.)s 3059(These)s 3680(v)s 6(alues)k 4329(are)s +4670(lik)s 2(e)k 5076(parameters)s 6167(of)s 6432(the)s +6774(document)s 7771(as)s 8015(a)s 8175(whole,)s 8860(so)s +0 1790(it)m 192(is)s 402(natural)s 1120(to)s 1359(try)s +1678(this:)s +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 19 20 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Helvetica +/Helveticafnt35 vec2 /Helvetica LoutRecode +/fnt35 { /Helveticafnt35 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +1 LoutMargSet +grestore +4289 13844(-)m 4417(19)s 4708(-)s 220 fnt35 480 13253(e)m 6(xpor)k -8(t @Heading @PP ...)k +480 12965(def @BookLa)m 6(y)k 4(out)k 480 12677( named @InitialF)m 6(ont { )k 11(Times Base 12p })k +480 12389( named @InitialBreak { adjust 14p })m 480 12101( named @ColumnWidth { 6i })m 480 11813( ...)m 480 11525({)m 480 11237( def @Heading ...)m +480 10949( def @PP ...)m 480 10661(})m 240 fnt82 0 10167(No)m 6(w)k +220 fnt35 579 10164(@Heading)m 240 fnt82 1732 10167(and)m 220 fnt35 +2202 10164(@PP)m 240 fnt82 2833 10167(may)m 3365(in)s 9(v)k 4(ok)k 2(e)k +220 fnt35 4124 10164(@InitialF)m 6(ont)k 240 fnt82 5411 10167(and)m +5881(the)s 6295(other)s 6911(parameters.)s 8188(T)s 19(o)k +8554(mak)s 2(e)k 220 fnt35 0 9876(@Heading)m 240 fnt82 +1100 9879(and)m 220 fnt35 1517 9876(@PP)m 240 fnt82 2096 9879(visible)m +2802(throughout)s 3926(the)s 4287(document,)s 5352(we)s 5700(need)s +6223(only)s 6716(add)s 7133(a)s 7312(body)s 7859(parameter)s +8887(to)s 220 fnt35 0 9588(@BookLa)m 6(y)k 4(out)k +240 fnt82 1428 9591(and)m 1832(present)s 2582(the)s 2930(entire)s +3529(document)s 4533(as)s 220 fnt35 480 9090(@BookLa)m 6(y)k 4(out)k +480 8802( @InitialF)m 6(ont { Helv)k 5(etica Base 10p })k 480 8514( @InitialBreak { adjust 12p })m 480 8226({)m +480 7938( )m 11(The document.)k 480 7650(})m 240 fnt82 0 7156(b)m 4(ut)k +383(for)s 742(practical)s 1639(reasons)s 2429(gi)s 6(v)k 3(en)k +3030(belo)s 6(w)k 3684(we)s 4040(prefer)s 4691(not)s +5078(to)s 5338(enclose)s 6132(the)s 6502(entire)s 7122(document)s +8147(in)s 8412(braces.)s 0 6868(Instead,)m 797(we)s 1132(write)s +220 fnt35 480 6386(@Use { @BookLa)m 6(y)k 4(out)k 480 6098( @InitialF)m 6(ont { Helv)k 5(etica Base 10p })k +480 5810( @InitialBreak { adjust 12p })m 480 5522(})m 480 5234(The document.)m 240 fnt82 0 4780(which)m +643(has)s 1015(the)s 1365(same)s 1914(ef)s 6(fect:)k +220 fnt35 2617 4777(@Use)m 240 fnt82 3284 4780(mak)m 2(es)k +3946(the)s 4296(e)s 3(xported)k 5190(symbols)s 6040(of)s +220 fnt35 6313 4777(@BookLa)m 6(y)k 4(out)k 240 fnt82 +7743 4780(visible)m 8438(for)s 8778(the)s 0 4492(remainder)m 1028(of)s +1299(the)s 1647(document,)s 2698(and)s 3102(is)s 3312(permitted)s +4285(only)s 4765(at)s 4997(the)s 5345(be)s 3(ginning.)k +480 4118(The)m 925(third)s 1451(feature)s 2187(that)s 2622(af)s 6(fects)k +3319(visibility)s 15(,)k 4278(and)s 4699(which)s 5359(will)s +5802(pro)s 3(v)k 3(e)k 6414(useful)s 7071(for)s +7426(cross)s 7986(referencing)s 0 3830(\(Section)m 851(6.1\),)s 1335(is)s +1543(the)s 220 fnt35 1889 3827(@Open)m 240 fnt82 2693 3830(symbol.)m +3560(It)s 3763(mak)s 2(es)k 4421(the)s 4767(e)s 3(xported)k +5657(symbols)s 6504(of)s 6773(its)s 7047(left)s 7422(parameter)s +8433(visible)s 0 3542(within)m 668(its)s 944(right)s 1455(parameter)s 9(,)k +2507(and)s 2911(is)s 3121(therefore)s 4038(similar)s 4760(to)s +4999(the)s 5347(P)s 3(ascal)k 220 fnt35 6009 3539(with)m +240 fnt82 6444 3542(statement.)m 480 3168(It)m 698(could)s 1301(be)s +1596(ar)s 4(gued)k 2314(that)s 2745(Lout)s 3270(is)s +3493(o)s 3(v)k 3(er)k 4(-supplied)k 4869(with)s +5364(these)s 5924(visibility)s 6840(modifying)s 7903(features:)s 8778(the)s +0 2880(body)m 544(parameter)s 9(,)k 220 fnt35 1606 2877(@Use)m +240 fnt82 2282 2880(and)m 220 fnt35 2696 2877(@Open)m 240 fnt82 +3513 2880(do)m 3816(not)s 4193(seem)s 4754(suf\207ciently)s 5894(dif)s 6(ferent)k +6779(from)s 7314(each)s 7819(another)s 13(.)k 8698(The)s +220 fnt35 0 2589(@Open)m 240 fnt82 806 2592(symbol)m 1566(is)s +1776(the)s 2124(most)s 2649(general,)s 3459(being)s 4044(capable)s +4830(of)s 5101(replacing)s 6043(the)s 6391(other)s 6942(tw)s 2(o.)k +7463(F)s 3(or)k 7852(e)s 3(xample,)k 220 fnt35 +480 2091(@Use { x })m 480 1803(@Use { y })m 480 1515(Body of document)m 240 fnt82 0 1017(can)m +389(be)s 671(replaced)s 1538(by)s +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 20 21 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Helvetica +%%+ font Times-Bold +%%+ font Times-Italic +/pgsave save def +%%IncludeResource: font Helvetica +/Helveticafnt35 vec2 /Helvetica LoutRecode +/fnt35 { /Helveticafnt35 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +0 LoutMargSet +grestore +4287 13844(-)m 4415(20)s 4710(-)s 220 fnt35 480 13255(x @Open {)m +480 12967(y @Open {)m 480 12679(Body of document)m 480 12391(}})m 240 fnt82 0 11897(and,)m +453(taking)s 1104(the)s 220 fnt35 1452 11894(@Eq)m 240 fnt82 +1990 11897(symbol)m 2750(abo)s 3(v)k 3(e)k 3372(as)s +3622(e)s 3(xample,)k 4536(we)s 4871(could)s 5461(eliminate)s +6405(its)s 6681(body)s 7215(parameter)s 9(,)k 8267(add)s +220 fnt35 480 11396(def @Body r)m -3(ight x { Slope @F)k 6(ont x })k 240 fnt82 +0 10897(to)m 239(the)s 587(e)s 3(xported)k 1479(de\207nitions)s +2540(of)s 220 fnt35 2811 10894(@Eq)m 240 fnt82 3289 10897(,)m +3396(and)s 3800(replace)s 220 fnt35 480 10396(@Eq { object })m 240 fnt82 +0 9899(by)m 220 fnt35 480 9398(@Eq @Open { @Body { object } })m 240 fnt82 0 8898(If)m +220 fnt35 232 8895(@Eq)m 240 fnt82 772 8898(is)m 985(a)s +1153(g)s 1(alle)k 3(y)k 1790(\(Section)s 2645(5.1\),)s +220 fnt35 3133 8895(@Body)m 240 fnt82 3917 8898(must)m 4444(tak)s 2(e)k +4899(o)s 3(v)k 3(er)k 5380(that)s 5800(function.)s +6764(But)s 7172(one)s 7577(w)s 2(ould)k 8234(not)s +8603(w)s 2(ant)k 0 8610(to)m 253(write)s 813(these)s +1374(clumsy)s 2133(e)s 3(xpressions)k 3311(in)s 3568(practice,)s +4444(and)s 4862(the)s 5224(enclosure)s 6210(of)s 6495(lar)s 4(ge)k +7038(quantities)s 8032(of)s 8317(input)s 8883(in)s 0 8322(e)m 3(xtra)k +534(braces)s 1195(could)s 1785(cause)s 2372(Basser)s 3069(Lout)s +3581(to)s 3820(run)s 4196(out)s 4562(of)s 4833(memory)s +5684(\(Section)s 6537(5.4\).)s 480 7948(A)m 700(quite)s 1224(separate)s +2052(kind)s 2526(of)s 2786(visibility)s 3679(problem)s 4526(arises)s +5110(when)s 5676(e)s 3(xpert)k 6319(users)s 6851(wish)s +7350(to)s 7579(de\207ne)s 8210(an)s 8482(object)s 0 7660(or)m +259(operator)s 1115(for)s 1453(repeated)s 2320(use)s 2695(within,)s +3413(say)s 15(,)k 3824(equations:)s 220 fnt35 480 7161(def isum { sum from i=1 to n })m +240 fnt82 0 6667(As)m 338(it)s 551(stands)s 1221(this)s +1638(can)s 2048(only)s 2549(be)s 2852(placed)s 3555(within)s +4244(the)s 220 fnt35 4613 6664(@Eq)m 240 fnt82 5172 6667(package)m +6033(itself,)s 6637(where)s 220 fnt35 7298 6664(sum)m 240 fnt82 +7780 6667(and)m 8205(the)s 8575(other)s 0 6379(symbols)m 841(are)s +1179(visible,)s 1915(b)s 4(ut)k 2268(it)s 2451(is)s +2653(not)s 3010(desirable)s 3919(to)s 4150(modify)s 4886(the)s +5225(source)s 5897(code)s 6396(of)s 6658(a)s 6816(standard)s +7675(package.)s 8614(Lout)s 0 6091(pro)m 3(vides)k 872(an)s +220 fnt35 1155 6088(impor)m -8(t)k 240 fnt82 1828 6091(clause)m +2481(to)s 2720(solv)s 3(e)k 3278(this)s 3674(problem:)s +220 fnt35 480 5590(impor)m -8(t @Eq)k 480 5302(def isum { sum from i=1 to n })m 240 fnt82 +0 4808(may)m 469(appear)s 1169(after)s 220 fnt35 1669 4805(@Eq)m +240 fnt82 2210 4808(is)m 2423(de\207ned,)s 3239(and)s 3646(it)s +3842(will)s 4271(mak)s 2(e)k 4846(the)s 5198(e)s 3(xported)k +6093(symbols)s 6945(of)s 220 fnt35 7220 4805(@Eq)m 240 fnt82 +7761 4808(visible)m 8458(within)s 0 4520(the)m 335(body)s 855(of)s +220 fnt35 1112 4517(isum)m 240 fnt82 1561 4520(.)m 1711(This)s +2174(feature)s 2878(complicates)s 4056(the)s 4390(treatment)s 5337(of)s +5595(en)s 9(vironments)k 6925(\(Section)s 7764(3.4\),)s 8236(and)s +8626(e)s 6(v)k 3(en)k 0 4232(introduces)m 1050(an)s +1336(insecurity)s 15(,)k 2373(when)s 220 fnt35 2952 4229(isum)m +240 fnt82 3464 4232(is)m 3677(in)s 9(v)k 4(ok)k 2(ed)k +4495(outside)s 5245(an)s 5531(equation.)s 6522(A)s 6755(simpler)s +7534(approach)s 8471(w)s 2(ould)k 0 3944(be)m 290(to)s +538(allo)s 6(w)k 1126(only)s 1615(one)s 2026(symbol)s +2795(in)s 3047(an)s 220 fnt35 3339 3941(impor)m -8(t)k +240 fnt82 4020 3944(clause,)m 4733(and)s 5146(treat)s 5638(the)s +5995(follo)s 6(wing)k 6981(de\207nition)s 7964(e)s 3(xactly)k +8714(lik)s 2(e)k 0 3656(a)m 174(local)s 702(de\207nition)s +1684(of)s 1964(that)s 2390(symbol;)s 3216(b)s 4(ut)k +3587(then)s 4064(it)s 4265(w)s 2(ould)k 4928(not)s +5303(be)s 5594(possible)s 6442(to)s 6690(de\207ne)s 7339(symbols)s +8197(using)s 8778(the)s 0 3368(resources)m 953(of)s 1224(more)s +1771(than)s 2240(one)s 2642(of)s 2913(the)s 3261(standard)s +4129(packages.)s 240 fnt84 0 2719(3.4.)m 471(Implementation)s 2159(of)s +2431(de\207nitions)s 240 fnt82 480 2242(Input)m 1089(is)s 1343(processed)s +2388(by)s 2726(a)s 2936(h)s 1(ybrid)k 3663(parser)s +4350(which)s 5036(emplo)s 2(ys)k 5940(operator)s 6840(precedence)s +8015(for)s 8398(objects)s 0 1954(and)m 433(simple)s 1156(recursi)s 6(v)k 3(e)k +2108(descent)s 2915(for)s 3283(the)s 3661(headers)s 4472(of)s +4772(de\207nitions.)s 5976(A)s 6236(symbol)s 7026(table)s 7576(stores)s +8214(the)s 8592(body)s 0 1666(of)m 278(each)s 780(de\207nition)s +1761(as)s 2018(a)s 2191(parse)s 2758(tree,)s 3229(e)s 3(xcept)k +3917(for)s 4263(macros)s 5011(which)s 5660(are)s 6014(lists)s +6456(of)s 6734(tok)s 2(ens,)k 7471(and)s 7882(manages)s +8778(the)s 0 1378(usual)m 564(stack)s 1121(of)s 1397(static)s +1958(scopes,)s 2708(accepting)s 240 fnt83 3682 1380(PushScope)m 240 fnt82 +4791 1378(and)m 240 fnt83 5200 1380(P)m 19(opScope)k 240 fnt82 +6197 1378(operations)m 7249(as)s 7504(the)s 7857(parser)s 8505(enters)s +0 1090(and)m 447(lea)s 4(v)k 3(es)k 1131(scope)s +1775(re)s 3(gions,)k 2626(including)s 3627(actual)s 4295(body)s +4872(parameters)s 6013(and)s 6461(the)s 6852(right)s 7406(parameter)s +8463(of)s 8778(the)s 220 fnt35 0 799(@Open)m 240 fnt82 +806 802(operator)m 13(.)k 480 428(As)m 818(the)s 1187(parse)s +1769(proceeds,)s 2747(a)s 2934(complete)s 3888(call)s 4308(graph)s +4932(is)s 5163(constructed,)s 6393(recording,)s 7438(for)s 7797(each)s +8314(symbol,)s 0 140(which)m 633(symbols)s 1473(are)s 1810(in)s 9(v)k 4(ok)k 2(ed)k +2616(within)s 3274(its)s 3541(body)s 15(.)k 4160(Immediately)s +5412(after)s 5898(the)s 6237(last)s 6618(de\207nition)s 7583(is)s +7783(read,)s 8292(the)s 8630(tran)s 8998(-)s +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 21 22 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Italic +%%+ font Helvetica +%%+ font Times-Bold +/pgsave save def +%%IncludeResource: font Helvetica +/Helveticafnt35 vec2 /Helvetica LoutRecode +/fnt35 { /Helveticafnt35 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +1 LoutMargSet +grestore +4297 13844(-)m 4425(21)s 4700(-)s 0 13256(siti)m 6(v)k 3(e)k +565(closure)s 1312(of)s 1584(the)s 1933(call)s 2334(graph)s +2937(is)s 3148(computed,)s 4200(and)s 4605(used)s 5104(to)s +5344(determine)s 6356(whether)s 7187(each)s 7684(non-)s 8112(parameter)s +0 12968(symbol)m 775(is)s 1001(recursi)s 6(v)k 3(e)k +1939(or)s 2214(recepti)s 6(v)k 3(e)k 3151(\(Section)s +4020(5.1\),)s 4522(and)s 4942(whether)s 5787(each)s 6298(parameter)s +7328(is)s 7554(in)s 9(v)k 4(ok)k 2(ed)k +8385(e)s 3(xactly)k 0 12680(once)m 508(or)s 767(not.)s +480 12306(Purely)m 1188(functional)s 2243(systems)s 3082(may)s 3579(e)s 6(v)k 6(aluate)k +4450(symbol)s 5240(in)s 9(v)k 4(ocations)k 6412(in)s +6686(applicati)s 6(v)k 3(e)k 7812(order)s 8407(\(where)s +0 12018(parameters)m 1092(are)s 1433(e)s 6(v)k 6(aluated)k +2389(before)s 3049(substitution)s 4216(into)s 4635(bodies\),)s 5440(or)s +5693(in)s 5930(normal)s 6656(order)s 7214(\(substitution)s 8460(before)s +0 11730(e)m 6(v)k 6(aluation\),)k 1164(and)s 1562(the)s 3(y)k +2018(may)s 2478(also)s 2909(share)s 3463(the)s 3804(v)s 6(alue)k +4366(of)s 4630(a)s 4790(parameter)s 5798(among)s 6496(all)s +6783(uses)s 7239(of)s 7504(it.)s 7793(But)s 8193(in)s +8429(Basser)s 0 11442(Lout,)m 603(the)s 996(presence)s 1932(of)s +2248(conte)s 3(xt-sensiti)k 6(v)k 3(e)k 3955(style)s +4507(information)s 5736(\(Section)s 6634(2.5\))s 7106(forces)s 7785(normal)s +8562(order)s 0 11154(e)m 6(v)k 6(aluation)k 1041(and)s +1445(pre)s 6(v)k 3(ents)k 2297(sharing)s 3054(of)s +3325(parameter)s 4339(v)s 6(alues.)k 480 10780(T)m 19(o)k +780(e)s 6(v)k 6(aluate)k 1620(an)s 1903(unsized)s +2692(object)s 3336(\(pure)s 3896(parse)s 4456(tree\),)s 4999(its)s +240 fnt83 5275 10782(en)m 9(vir)k 10(onment)k 240 fnt82 +6456 10780(,)m 6563(the)s 6911(equi)s 6(v)k 6(alent)k +7955(of)s 8226(the)s 8574(stack)s 0 10492(frames)m 728(in)s +999(Algol-lik)s 2(e)k 2064(languages,)s 3156(must)s 3710(be)s +4020(a)s 4(v)k 6(ailable,)k 5008(containing)s 6099(the)s +6476(actual)s 7129(v)s 6(alues)k 7814(of)s 8113(all)s +8435(formal)s 0 10204(parameters)m 1119(that)s 1558(are)s 1927(visible)s +2641(within)s 3330(the)s 3700(unsized)s 4510(object.)s 5279(En)s 9(vironment)k +6601(handling)s 7513(is)s 7744(a)s 7932(well-kno)s 6(wn)k +0 9916(implementation)m 1557(technique,)s 2594(so)s 2860(it)s 3052(will)s +3478(be)s 3760(discussed)s 4735(only)s 5215(brie\210y)s 5893(here.)s +480 9542(En)m 9(vironments)k 1894(are)s 2272(e)s 3(xtra)k +2837(subtrees)s 3702(hung)s 4265(from)s 4820(the)s 5199(objects)s +5958(the)s 3(y)k 6451(refer)s 6991(to.)s 7372(This)s +7879(or)s 4(g)k 1(anization)k 0 9254(mak)m 2(es)k +668(e)s 3(xcellent)k 1595(use)s 1978(of)s 2257(the)s +2613(ordered)s 3409(dag)s 3816(to)s 4063(permit)s 4754(en)s 9(vironments)k +6106(to)s 6353(be)s 6643(shared,)s 7382(and)s 7794(deleted)s +8550(when)s 0 8966(the)m 339(last)s 721(reference)s 1655(to)s +1885(them)s 2413(is)s 2614(remo)s 3(v)k 3(ed.)k +3600(Se)s 6(v)k 3(eral)k 4353(optimizations)s 5695(ha)s 4(v)k 3(e)k +6187(been)s 6687(implemented.)s 8090(Actual)s 8772(pa)s 8998(-)s +0 8678(rameters)m 860(kno)s 6(wn)k 1552(to)s 1778(be)s +2048(in)s 9(v)k 4(ok)k 2(ed)k 2850(only)s +3318(once)s 3814(are)s 4148(mo)s 3(v)k 3(ed)k +4840(in)s 5070(from)s 5582(the)s 5918(en)s 9(vironment,)k +7212(not)s 7566(copied;)s 8303(cop)s 2(ying)k 0 8390(could)m +581(lead)s 1028(to)s 1258(quadratic)s 2191(time)s 2662(comple)s 3(xity)k 15(.)k +3875(Actual)s 4558(parameters)s 5647(of)s 5909(the)s 6248(form)s +220 fnt35 6763 8387(@Ne)m 6(xt)k 240 fnt83 7478 8392(object)m +240 fnt82 8117 8390(recei)m 6(v)k 3(e)k 8843(an)s +0 8102(applicati)m 6(v)k 3(e)k 1105(pre-)s 1478(e)s 6(v)k 6(aluation)k +2529(which)s 3181(pre)s 6(v)k 3(ents)k 4044(long)s +4533(chains)s 5205(of)s 220 fnt35 5486 8099(@Ne)m 6(xt)k +240 fnt82 6221 8102(symbols)m 7080(from)s 7614(forming)s 8448(during)s +0 7814(the)m 359(generation)s 1437(of)s 1719(lar)s 4(ge)k +2260(page)s 2779(numbers.)s 3779(Some)s 4391(en)s 9(vironments)k +5747(which)s 6400(pro)s 3(v)k 6(ably)k 7308(contrib)s 4(ute)k +8341(nothing)s 0 7526(are)m 344(deleted,)s 1137(most)s 1659(notably)s +2427(when)s 3000(a)s 3162(symbol)s 3918(in)s 9(v)k 4(ocation)k +4969(has)s 5335(no)s 5625(symbols)s 6470(within)s 7135(its)s +7407(actual)s 8028(parameters)s 0 7238(and)m 406(no)s 702(import)s +1402(list,)s 1803(so)s 2071(that)s 2492(only)s 2975(the)s +3326(en)s 9(vironment)k 4589(of)s 4862(its)s 5141(body)s +5678(need)s 6191(be)s 6476(k)s 2(ept;)k 7000(this)s +7399(sa)s 4(v)k 3(es)k 7964(a)s 8133(great)s +8673(deal)s 0 6950(of)m 271(space)s 858(when)s 1434(objects)s +2162(with)s 2644(en)s 9(vironments)k 3988(are)s 4335(written)s +5068(to)s 5307(auxiliary)s 6210(\207les)s 6659(\(Section)s 7512(6.1\).)s +240 fnt84 0 6157(4.)m 291(Implementation)s 1979(of)s 2251(the)s +2625(functional)s 3715(subset)s 240 fnt82 480 5680(The)m 941(objects)s +1702(and)s 2139(de\207nitions)s 3233(of)s 3537(Lout)s 4082(are)s +4462(v)s 3(ery)k 4971(similar)s 5726(to)s 5998(those)s +6592(found)s 7242(in)s 7518(other)s 8102(functional)s 0 5392(languages,)m +1085(and)s 1510(the)s 3(y)k 1994(form)s 2539(a)s +2726(natural)s 3465(subset)s 4144(of)s 4436(the)s 4805(language.)s +5854(So)s 6181(we)s 6537(pause)s 7159(here)s 7647(and)s +8072(present)s 8843(an)s 0 5104(o)m 3(v)k 3(ervie)k 6(w)k +932(of)s 1203(the)s 1551(Basser)s 2248(Lout)s 2760(object)s +3404(e)s 6(v)k 6(aluation)k 4445(algorithm.)s 480 4730(The)m +922(problem)s 1794(is)s 2019(to)s 2272(tak)s 2(e)k +2739(an)s 3037(unsized)s 3841(object)s 4499(\(pure)s 5074(parse)s +5649(tree\),)s 6206(its)s 6497(en)s 9(vironment)k 7772(\(Section)s +8640(3.4\),)s 0 4442(and)m 404(its)s 681(style)s 1188(\(Section)s +2042(2.5\),)s 2528(and)s 2933(to)s 3173(produce)s 4000(a)s +4167(PostScript)s 5209(\207le)s 5571(for)s 5910(rendering)s 6879(the)s +7228(object)s 7872(on)s 8170(an)s 8454(output)s 0 4154(de)m 6(vice.)k +786(This)s 1267(\207le)s 1632(is)s 1847(essentially)s 2914(a)s +3084(sequence)s 4022(of)s 4298(instructions)s 5468(to)s 5712(print)s +6227(a)s 6398(gi)s 6(v)k 3(en)k 6983(string)s +7584(of)s 7860(characters)s 8883(in)s 0 3866(a)m 166(gi)s 6(v)k 3(en)k +746(font)s 1191(at)s 1423(a)s 1589(gi)s 6(v)k 3(en)k +2169(point.)s 480 3492(Before)m 1189(the)s 1541(algorithm)s 2534(be)s 3(gins,)k +3266(the)s 3618(parse)s 4182(tree)s 4599(must)s 5127(be)s +5413(obtained,)s 6348(either)s 6955(by)s 7252(parsing)s 8013(input)s +8569(or)s 8832(by)s 0 3204(cop)m 2(ying)k 823(from)s +1347(the)s 1695(symbol)s 2455(table.)s 3082(Afterw)s 2(ards)k +4205(the)s 4553(data)s 5011(structure)s 5901(must)s 6426(be)s +6708(disposed.)s 7710(The)s 8137(algorithm)s 0 2916(proper)m 692(consists)s +1508(of)s 1787(\207v)s 3(e)k 2207(passes,)s 2933(each)s +3437(a)s 3611(recursi)s 6(v)k 3(e)k 4541(tra)s 4(v)k 3(ersal)k +5418(of)s 5697(the)s 6054(structure)s 6953(from)s 7485(the)s +7841(root)s 8294(do)s 6(wn)k 8887(to)s 0 2628(the)m +348(lea)s 4(v)k 3(es)k 989(and)s 1393(back.)s +240 fnt83 0 2174(1.)m 330(Evaluation)s 1490(of)s 1827(unsized)s +2667(objects.)s 240 fnt82 3554 2172(On)m 3960(the)s 4364(w)s 2(ay)k +4871(do)s 6(wn,)k 5561(calculate)s 6521(en)s 9(vironments)k +7921(and)s 8381(replace)s 0 1884(non-recursi)m 6(v)k 3(e,)k +1404(non-recepti)s 6(v)k 3(e)k 2757(symbols)s 3598(by)s +3884(their)s 4373(bodies)s 5041(\(Section)s 5886(3.4\);)s 6369(broadcast)s +7337(fonts)s 7858(to)s 8089(the)s 8429(lea)s 4(v)k 3(es,)k +0 1596(and)m 409(paragraph)s 1427(breaking)s 2322(and)s 2731(spacing)s +3521(styles)s 4121(to)s 4365(the)s 4718(paragraph)s 5736(nodes.)s +6465(On)s 6820(the)s 7173(w)s 2(ay)k 7629(back)s +8147(up,)s 8500(delete)s 240 fnt83 0 1310(FONT)m 240 fnt82 +630 1308(,)m 240 fnt83 737 1310(BREAK)m 240 fnt82 1494 1308(,)m +1601(and)s 240 fnt83 2005 1310(SP)m 21(A)k 7(CE)k +240 fnt82 2760 1308(nodes,)m 3426(and)s 3830(insert)s 240 fnt83 +4420 1310(SPLIT)m 240 fnt82 5049 1308(,)m 240 fnt83 5156 1310(COL)m +240 fnt82 5622 1308(,)m 5729(and)s 240 fnt83 6133 1310(R)m 9(O)k 12(W)k +240 fnt82 6707 1308(nodes)m 7317(\(Section)s 8170(2.3\).)s 240 fnt83 +0 815(2.)m 293(W)s 13(idth)k 925(calculations)s 2169(and)s +2614(br)s 8(eaking)k 3(.)k 240 fnt82 3628 813(Calculate)m +4605(the)s 4973(width)s 5594(of)s 5885(e)s 6(v)k 3(ery)k +6480(subobject)s 7477(from)s 8020(the)s 8388(bottom)s 0 525(up.)m +404(As)s 720(described)s 1693(in)s 1936(Section)s 2709(2.3,)s +240 fnt83 3115 527(WIDE)m 240 fnt82 3777 525(nodes)m 4386(may)s +4851(trigger)s 5547(object)s 6190(breaking)s 7079(sub-tra)s 4(v)k 3(ersals)k +8448(during)s 0 237(this)m 396(pass.)s +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 22 23 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Italic +%%+ font Times-Bold +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Helvetica +/Helveticafnt35 vec2 /Helvetica LoutRecode +/fnt35 { /Helveticafnt35 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +0 LoutMargSet +grestore +4288 13844(-)m 4416(22)s 4710(-)s 240 fnt83 0 13256(3.)m +274(Height)s 989(calculations.)s 240 fnt82 2312 13254(Calculate)m 3270(the)s +3618(height)s 4276(of)s 4547(e)s 6(v)k 3(ery)k +5123(subobject,)s 6147(from)s 6671(the)s 7019(bottom)s 7757(up.)s +240 fnt83 0 12751(4.)m 283(Horizontal)s 1389(coor)s 8(dinates.)k +240 fnt82 2674 12749(Calculate)m 3641(the)s 3998(horizontal)s 5032(coordinate)s +6106(of)s 6386(each)s 6890(subobject)s 7876(from)s 8409(the)s +8767(top)s 0 12461(do)m 6(wn,)k 634(and)s 1038(store)s +1558(each)s 2053(leaf)s -13(')k 13(s)k 2633(coordinate)s +3698(in)s 3941(the)s 4289(leaf.)s 240 fnt83 0 11977(5.)m +295(V)s 26(ertical)k 1119(coor)s 8(dinates)k 2317(and)s +2765(P)s 19(ostScript)k 3827(g)s 2(ener)k 3(ation.)k +240 fnt82 5034 11975(Calculate)m 6013(the)s 6383(v)s 3(ertical)k +7171(coordinate)s 8257(of)s 8550(e)s 6(v)k 3(ery)k +0 11687(subobject)m 981(from)s 1509(the)s 1861(top)s 2224(do)s 6(wn,)k +2862(and)s 3270(at)s 3506(each)s 4005(leaf,)s 4473(retrie)s 6(v)k 3(e)k +5252(the)s 5604(character)s 6542(string,)s 7197(font,)s 7693(and)s +8102(horizontal)s 0 11399(coordinate,)m 1116(and)s 1520(print)s 2031(the)s +2379(PostScript)s 3421(instruction)s 4500(for)s 4838(rendering)s 5807(that)s +6225(leaf.)s 0 10896(Figure)m 692(3)s 869(gi)s 6(v)k 3(es)k +1428(the)s 1789(amount)s 2579(of)s 2863(code)s 3383(required)s +4250(for)s 4600(each)s 5168(pass.)s 5756(Symmetry)s 6819(between)s +7685(horizontal)s 8722(and)s 0 10608(v)m 3(ertical)k 764(is)s +971(e)s 3(xploited)k 1913(throughout)s 3021(Basser)s 3715(Lout,)s +4271(and)s 4672(passes)s 5331(2)s 5502(and)s 5903(3,)s +6127(as)s 6374(well)s 6837(as)s 7084(4)s 7255(and)s +7656(5,)s 7880(are)s 8224(e)s 3(x)k 3(ecuted)k +0 10320(on)m 297(shared)s 979(code.)s 480 9946(The)m 929(author)s +1621(can)s 2031(see)s 2413(no)s 2728(simple)s 3442(w)s 2(ay)k +3914(to)s 4174(reduce)s 4888(the)s 5258(number)s 6070(of)s +6362(passes.)s 7158(The)s 7607(introduction)s 8855(of)s 0 9658(horizontal)m +1027(g)s 1(alle)k 3(ys)k 1755(\(Section)s 2612(5.5\))s +3044(w)s 2(ould)k 3703(remo)s 3(v)k 3(e)k +4474(the)s 4826(need)s 5340(for)s 5682(the)s 6034(object)s +6682(breaking)s 7576(transformations)s 0 9370(within)m 700(this)s 1128(algorithm)s +2149(that)s 2599(are)s 2978(the)s 3359(principal)s 4295(obstacles)s +5254(in)s 5529(the)s 5909(w)s 2(ay)k 6393(of)s +6696(the)s 7076(mer)s 4(ging)k 7954(of)s 8257(passes)s +8952(2)s 0 9082(and)m 404(3.)s 240 fnt84 0 8338(5.)m +291(Galleys)s 240 fnt82 480 7861(W)m 9(ith)k 1022(objects)s +1767(and)s 2188(de\207nitions)s 3266(under)s 3888(control,)s 4689(the)s +5053(author)s 5741(f)s 2(aced)k 6331(the)s 6696(problem)s +7570(of)s 7858(getting)s 8592(body)s 0 7573(te)m 3(xt,)k +478(footnotes,)s 1491(\210oating)s 2291(\207gures)s 3009(and)s 3429(tables,)s +4109(references,)s 5213(inde)s 3(x)k 5813(entries,)s 6572(and)s +6992(entries)s 7695(in)s 7954(the)s 8318(table)s 8855(of)s +0 7285(contents)m 844(into)s 1264(their)s 1757(places.)s 2513(The)s +2937(resulting)s 3821(in)s 9(v)k 3(estig)k 1(ation)k +5095(occupied)s 6013(three)s 6541(months)s 7293(of)s 7559(full-time)s +8444(design)s 0 6997(w)m 2(ork,)k 612(and)s 1031(proceeded)s +2088(approximately)s 3538(as)s 3803(described)s 4793(in)s 5051(Section)s +5840(5.1;)s 6268(the)s 6631(implementation)s 8204(occupied)s 0 6709(the)m +348(years)s 903(1987-89.)s 240 fnt84 0 6060(5.1.)m 471(The)s +926(galley)s 1580(abstraction)s 240 fnt82 480 5583(Let)m 870(us)s +1147(tak)s 2(e)k 1611(the)s 1972(footnote)s 2838(as)s +3100(a)s 3279(representati)s 6(v)k 3(e)k 4677(e)s 3(xample.)k +5661(At)s 5973(some)s 6546(point)s 7111(in)s 7366(the)s +7727(document,)s 8791(we)s 0 5295(wish)m 509(to)s 748(write)s +220 fnt35 480 4847(preceding te)m 6(xt)k 480 4559(@F)m 6(ootNote { f)k 6(ootnote te)k 6(xt })k +480 4271(f)m 6(ollo)k 3(wing te)k 6(xt)k 240 fnt82 +0 3772(and)m 406(we)s 744(e)s 3(xpect)k 1428(the)s +1779(formatter)s 2729(to)s 2971(remo)s 3(v)k 3(e)k +3741(the)s 4092(footnote)s 4947(from)s 5474(this)s 5873(conte)s 3(xt)k +6637(and)s 7044(place)s 7607(it)s 7802(at)s 8037(the)s +8388(bottom)s 0 3484(of)m 281(the)s 639(current)s 1386(page,)s +1955(possibly)s 2817(splitting)s 3664(some)s 4235(or)s 4504(all)s +4808(of)s 5089(it)s 5291(onto)s 5781(a)s 5957(follo)s 6(wing)k +6944(page)s 7463(if)s 7690(space)s 8287(is)s 8508(insuf)s +8998(-)s 0 3196(\207cient.)m 480 2822(An)m 844(object)s 1503(appears)s +2298(in)s 2556(the)s 2918(\207nal)s 3413(document)s 4431(at)s +4678(the)s 5040(point)s 5607(it)s 5813(is)s 6038(in)s 9(v)k 4(ok)k 2(ed,)k +6916(b)s 4(ut)k 7293(this)s 7703(basic)s 8262(property)s +0 2534(does)m 503(not)s 882(hold)s 1379(for)s 1730(footnotes:)s +2799(the)s 3160(point)s 3725(of)s 4009(in)s 9(v)k 4(ocation)k +5076(and)s 5493(the)s 5854(point)s 6419(of)s 6703(appearance)s +7847(are)s 8207(dif)s 6(ferent.)k 0 2246(In)m 254(some)s +813(w)s 2(ay)k 15(,)k 1299(the)s 1645(footnote)s +2496(is)s 2703(attached)s 3555(to)s 3791(the)s 4137(document)s +5139(at)s 5368(both)s 5849(points,)s 6539(introducing)s 7692(a)s +7856(cross)s 8395(linking)s 0 1958(\(Section)m 853(2.1\))s 1281(that)s +1699(cannot)s 2397(be)s 2679(described)s 3653(in)s 3896(purely)s +4561(functional)s 5585(terms.)s 480 1584(Since)m 1069(the)s 1420(interpretation)s +2766(of)s 3040(an)s 3(y)k 3440(object)s 4087(depends)s +4926(on)s 5226(an)s 5512(en)s 9(vironment)k 6775(and)s +7182(style)s 7692(inherited)s 8602(from)s 0 1296(the)m 347(conte)s 3(xt,)k +1153(the)s 1499(\207rst)s 1929(question)s 2795(must)s 3318(be)s +3598(whether)s 4427(the)s 4773(footnote)s 5624(inherits)s 6390(them)s +6926(through)s 7726(the)s 8072(in)s 9(v)k 4(ocation)k +0 1008(point)m 552(or)s 811(through)s 1613(the)s 1961(point\(s\))s +2753(of)s 3024(appearance.)s 480 634(If)m 697(symbols)s 1533(are)s +1867(to)s 2092(be)s 2361(interpreted)s 3440(statically)s 4341(as)s +4578(heretofore,)s 5653(then)s 6108(en)s 9(vironments)k 7439(must)s +7951(be)s 8219(inherited)s 0 346(through)m 829(the)s 1204(in)s 9(v)k 4(ocation)k +2285(point)s 2865(alone.)s 3574(Dynamic)s 4531(inheritance)s 5675(through)s +6505(the)s 6880(point)s 7459(of)s 7757(appearance)s 8916(is)s +0 58(enticing)m 836(in)s 1092(some)s 1666(w)s 2(ays:)k +2335(it)s 2541(might)s 3172(replace)s 3930(the)s 4291(body)s +4838(parameter)s 9(,)k 5904(and)s 6321(it)s 6526(might)s +7157(help)s 7635(with)s 8131(automatic)s +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 23 24 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Italic +%%+ font Times-Bold +/pgsave save def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +1 LoutMargSet +grestore +4293 13844(-)m 4421(23)s 4705(-)s 1659 13218(1.)m 2163(Initialization)s +7172(200)s 1659 12930(2.)m 2163(Memory)s 3041(allocation,)s 4090(ordered)s +4878(dag)s 5277(operations)s 7172(400)s 1659 12642(3.)m 2163(Le)s 3(xical)k +2931(analysis,)s 3808(macros,)s 4605(\207le)s 4966(handling)s 6992(1,350)s +1659 12354(4.)m 2163(P)s 3(arsing)k 2930(of)s 3201(objects)s +3929(and)s 4333(de\207nitions)s 6992(1,150)s 1659 12066(5.)m 2163(Symbol)s +2963(table)s 3483(and)s 3887(call)s 4286(graph)s 7172(600)s +1659 11778(6.)m 2163(Ev)s 6(aluation)k 3250(of)s 3521(pure)s +4002(parse)s 4562(trees)s 6992(1,650)s 1659 11490(7.)m 2163(Reading,)s +3068(storing,)s 3839(and)s 4243(scaling)s 4973(of)s 5244(fonts)s +7172(600)s 1659 11202(8.)m 2163(Cross)s 2759(references)s 3790(and)s +4194(databases)s 6992(1,000)s 1659 10914(9.)m 2163(W)s 9(idth)k +2809(and)s 3213(height)s 3871(calculations,)s 5119(and)s 5523(breaking)s +7172(700)s 1539 10626(10.)m 240 fnt83 2163 10628(Constr)m 3(ained)k +240 fnt82 3410 10626(and)m 240 fnt83 3814 10628(AdjustSize)m 240 fnt82 +7172 10626(700)m 1539 10338(11.)m 2163(T)s 8(ransfer)k 3023(of)s +3294(sized)s 3843(objects)s 4571(into)s 4996(g)s 1(alle)k 3(y)k +5630(tree)s 7172(450)s 1539 10050(12.)m 2163(Galle)s 3(y)k +2851(\210ushing)s 3676(algorithm)s 6992(1,500)s 1539 9762(13.)m 2163(Coordinate)s +3282(calculations)s 4474(and)s 4878(PostScript)s 5920(output)s 7172(700)s +1539 9474(14.)m 2163(Deb)s 4(ugging)k 3277(and)s 3681(error)s +4204(handling)s 6992(1,200)s 655 0 0 0 240 288 60 6872 9328 LoutGr2 +0.5 pt ltabhs +grestore + +grestore +6872 9074(12,200)m 200 fnt84 41 8421(Figur)m 3(e)k +649(3.)s 200 fnt82 891 8422(Major)m 1427(components)s 2432(of)s +2658(the)s 2947(Basser)s 3526(Lout)s 3953(interpreter)s 8(,)k +4861(sho)s 5(wing)k 5576(the)s 5865(approximate)s 6906(number)s +7565(of)s 7791(lines)s 8208(of)s 8434(C)s 8611(code.)s +240 fnt82 0 7791(numbering,)m 1163(since)s 1730(the)s 2097(number)s +2908(of)s 3198(a)s 3384(footnote)s 4256(is)s 4486(kno)s 6(wn)k +5209(only)s 5709(at)s 5960(the)s 6328(point)s 6899(of)s +7190(appearance;)s 8396(b)s 4(ut)k 8778(the)s 0 7503(implementation)m +1606(problems)s 2597(are)s 2993(se)s 6(v)k 3(ere,)k +3751(and)s 4204(static)s 4810(inheritance)s 5976(seems)s 6661(much)s +7299(simpler)s 8125(and)s 8579(more)s 0 7215(comprehensible)m 1572(to)s +1814(the)s 2165(user)s 13(.)k 2716(Style,)s 3317(at)s +3552(least)s 4052(its)s 4330(a)s 4(v)k 6(ailable)k +5241(width)s 5846(and)s 6253(height)s 6913(part,)s 7394(must)s +7922(of)s 8196(necessity)s 0 6927(be)m 268(inherited)s 1160(through)s +1947(the)s 2280(point)s 2817(of)s 3073(appearance.)s 4297(F)s 3(or)k +4671(consistenc)s 3(y)k 15(,)k 5861(the)s 6194(entire)s +6778(style)s 7270(should)s 7952(be)s 8219(inherited)s 0 6639(in)m +256(this)s 666(w)s 2(ay)k 15(.)k 1226(There)s +1853(is)s 2077(a)s 2257(suggesti)s 6(v)k 3(e)k +3328(analogy)s 4154(here)s 4635(with)s 5131(actual)s 5770(parameters,)s +6938(which)s 7594(ha)s 4(v)k 3(e)k 8109(a)s +8289(point)s 8855(of)s 0 6351(in)m 9(v)k 4(ocation)k +1060(from)s 1591(which)s 2240(the)s 3(y)k 2710(inherit)s +3400(an)s 3690(en)s 9(vironment,)k 5004(and)s 5414(a)s +5587(point)s 6146(of)s 6424(appearance)s 7562(within)s 8237(the)s +8592(body)s 0 6063(of)m 265(the)s 606(enclosing)s 1569(de\207nition,)s +2587(from)s 3104(which)s 3739(the)s 3(y)k 4196(inherit)s +4872(a)s 5031(style.)s 5639(It)s 5838(may)s 6297(be)s +6572(possible)s 7406(to)s 7638(treat)s 8114(a)s 8273(footnote)s +0 5775(as)m 250(the)s 598(actual)s 1223(parameter)s 2237(of)s +2508(some)s 3069(symbol,)s 3881(therefore,)s 4849(although)s 5744(the)s +6092(details)s 6766(seem)s 7317(v)s 3(ery)k 7793(obscure.)s +480 5401(But)m 881(the)s 1224(most)s 1744(profound)s 2674(consequence)s +3948(of)s 4214(ha)s 4(ving)k 4910(tw)s 2(o)k +5314(types)s 5865(of)s 6131(attachment)s 7234(point)s 7780(is)s +7985(that)s 8398(it)s 8584(leads)s 0 5113(to)m 261(tw)s 2(o)k +693(distincti)s 6(v)k 3(e)k 1757(tree)s 2192(structures.)s +3306(Considering)s 4551(in)s 9(v)k 4(ocation)k 5627(points)s +6285(only)s 6787(leads)s 7351(to)s 7612(static)s 8190(trees)s +8714(lik)s 2(e)k 0 4825(this)m 396(one:)s gsave +480 2539 translate +240 fnt83 3666 1996 170 1715 240 288 60 LoutGraphic +gsave +grestore save gsave 200 dict begin lfigdict begin +grestore +1117 1273 170 993 240 288 60 0 0 LoutGr2 +currentdict end 200 dict begin begin +grestore +1117 1273 170 993 240 288 60 0 0 LoutGr2 +currentdict end 200 dict begin begin +grestore +1117 551 170 272 240 288 60 0 721 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigellipse ] lfigdopath +pop pop +grestore +170 220(footnote)m + +grestore +(T) lfigpromotelabels +grestore +(L) lfigpromotelabels +grestore +1206 553 170 272 240 288 60 1230 1443 LoutGr2 +currentdict end 200 dict begin begin +grestore +1206 553 170 272 240 288 60 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigellipse ] lfigdopath +pop pop +grestore +170 220(body)m 692(te)s 4(xt)k +grestore +(T) lfigpromotelabels +grestore +0 0 0 0 240 288 60 2436 1715 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ L@T@CTR L@T@CTR T@CTR lfigangle L@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef +T@CTR T@CTR L@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath +pop pop +grestore + +grestore +1117 1273 0 993 240 288 60 2549 0 LoutGr2 +currentdict end 200 dict begin begin +grestore +1001 552 170 272 240 288 60 116 721 LoutGr2 +currentdict end 200 dict begin begin +grestore +884 552 170 272 240 288 60 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigellipse ] lfigdopath +pop pop +grestore +170 220(\207gur)m 8(e)k + +grestore +(T) lfigpromotelabels +grestore +1117 551 170 272 240 288 60 0 0 LoutGr2 +currentdict end 200 dict begin begin +grestore +1117 551 170 272 240 288 60 0 0 LoutGr2 +currentdict end 200 dict begin begin +grestore +1117 551 170 272 240 288 60 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigellipse ] lfigdopath +pop pop +grestore +170 220(footnote)m +grestore +(T) lfigpromotelabels +grestore +(S) lfigpromotelabels +grestore +0 0 0 0 240 288 60 1117 272 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef +T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath +pop pop +grestore + +grestore +(R) lfigpromotelabels +grestore +0 0 0 0 240 288 60 3666 1715 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ R@T@CTR R@T@CTR T@CTR lfigangle R@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef +T@CTR T@CTR R@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath +pop pop +grestore + +grestore +end end restore +grestore +0 2088(which)m 663(sho)s 6(ws)k 1329(that)s +1769(the)s 2139(body)s 2695(te)s 3(xt)k 3131(contains)s +4001(a)s 4189(footnote)s 5064(and)s 5490(a)s 5677(\207gure,)s +6364(the)s 6734(latter)s 7305(itself)s 7875(containing)s 8960(a)s +0 1800(footnote.)m 961(Considering)s 2184(points)s 2820(of)s 3091(appearance)s +4222(only)s 4702(gi)s 6(v)k 3(es)k 5249(a)s +5415(completely)s 6531(dif)s 6(ferent,)k 7453(dynamic)s 8330(tree:)s +gsave +480 186 translate +240 fnt83 4663 1274 0 995 240 288 60 LoutGraphic +gsave +grestore save gsave 200 dict begin lfigdict begin +grestore +3382 551 170 272 240 288 60 1281 723 LoutGr2 +currentdict end 200 dict begin begin +grestore +2101 551 170 272 240 288 60 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigellipse ] lfigdopath +pop pop +grestore +170 220(sequence)m 1100(of)s 1381(pa)s 2(g)k 2(es)k + +grestore +(T) lfigpromotelabels +grestore +1206 553 170 272 240 288 60 0 0 LoutGr2 +currentdict end 200 dict begin begin +grestore +1206 553 170 272 240 288 60 0 0 LoutGr2 +currentdict end 200 dict begin begin +grestore +1206 553 170 272 240 288 60 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigellipse ] lfigdopath +pop pop +grestore +170 220(body)m 692(te)s 4(xt)k +grestore +(T) lfigpromotelabels +grestore +(S) lfigpromotelabels +grestore +0 0 0 0 240 288 60 1206 272 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef +T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath +pop pop +grestore + +grestore +1117 553 170 272 240 288 60 1319 0 LoutGr2 +currentdict end 200 dict begin begin +grestore +1117 553 170 272 240 288 60 0 0 LoutGr2 +currentdict end 200 dict begin begin +grestore +1117 551 170 272 240 288 60 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigellipse ] lfigdopath +pop pop +grestore +170 220(footnote)m +grestore +(T) lfigpromotelabels +grestore +(S) lfigpromotelabels +grestore +0 0 0 0 240 288 60 2436 272 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef +T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath +pop pop +grestore + +grestore +884 553 170 272 240 288 60 2549 0 LoutGr2 +currentdict end 200 dict begin begin +grestore +884 553 170 272 240 288 60 0 0 LoutGr2 +currentdict end 200 dict begin begin +grestore +884 552 170 272 240 288 60 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigellipse ] lfigdopath +pop pop +grestore +170 220(\207gur)m 8(e)k + +grestore +(T) lfigpromotelabels +grestore +(S) lfigpromotelabels +grestore +0 0 0 0 240 288 60 3433 272 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef +T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath +pop pop +grestore + +grestore +1117 553 170 272 240 288 60 3546 0 LoutGr2 +currentdict end 200 dict begin begin +grestore +1117 553 170 272 240 288 60 0 0 LoutGr2 +currentdict end 200 dict begin begin +grestore +1117 551 170 272 240 288 60 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigellipse ] lfigdopath +pop pop +grestore +170 220(footnote)m +grestore +(T) lfigpromotelabels +grestore +(S) lfigpromotelabels +grestore +0 0 0 0 240 288 60 4663 272 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef +T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath +pop pop +grestore + +grestore +end end restore +grestore + +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 24 25 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Italic +%%+ font Helvetica +%%+ font Times-Bold +/pgsave save def +%%IncludeResource: font Helvetica +/Helveticafnt35 vec2 /Helvetica LoutRecode +/fnt35 { /Helveticafnt35 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +0 LoutMargSet +grestore +4288 13844(-)m 4416(24)s 4710(-)s 0 13256(The)m 468(tree)s +921(can)s 1351(be)s 1673(deeper)s 9(,)k 2448(for)s +2827(e)s 3(xample)k 3730(with)s 4253(sections)s 5114(appearing)s +6150(within)s 6859(chapters)s 7746(which)s 8429(appear)s 0 12968(within)m +680(the)s 1041(body)s 1587(te)s 3(xt,)k 2062(which)s +2717(appears)s 3510(within)s 4191(the)s 4551(\207nal)s 5044(sequence)s +5990(of)s 6273(pages.)s 6995(Document)s 8065(formatting)s 0 12680(languages)m +1024(generally)s 1984(shirk)s 2540(the)s 2905(issues)s 3544(raised)s +4189(by)s 4500(this)s 4912(dual)s 5396(tree)s 5826(structure,)s +6785(by)s 7096(making)s 7884(the)s 8249(dynamic)s 0 12392(tree)m +421(b)s 4(uilt-in,)k 1235(by)s 1537(limiting)s 2354(one)s +2764(or)s 3032(both)s 3523(trees)s 4032(to)s 4279(tw)s 2(o)k +4697(le)s 6(v)k 3(els,)k 5360(and)s 5773(so)s +6047(on,)s 6402(pro)s 3(viding)k 7391(a)s 7565(classic)s +8263(e)s 3(xample)k 0 12104(of)m 295(the)s 667(impo)s 3(v)k 3(erishing)k +2120(ef)s 6(fect)k 2740(of)s 3035(f)s 2(ailing)k +3733(to)s 3997(permit)s 4704(language)s 5648(features)s 6478(to)s +6741(attain)s 7352(their)s 7873(natural)s 8616(le)s 6(v)k 3(el)k +0 11816(of)m 271(generality)s 15(.)k 480 11442(W)m 19(e)k +854(are)s 1206(thus)s 1662(led)s 2017(to)s 2261(propose)s +3081(a)s 3252(second)s 3980(abstraction)s 5091(for)s 5434(document)s +6443(formatting,)s 7564(which)s 8211(we)s 8552(name)s 0 11154(the)m +240 fnt83 371 11156(galle)m 7(y)k 240 fnt82 1028 11154(in)m +1294(recognition)s 2464(of)s 2759(its)s 3058(similarity)s 4050(to)s +4312(the)s 4684(g)s 1(alle)k 3(ys)k 5432(used)s +5952(in)s 6219(manual)s 7001(typesetting.)s 8238(A)s 8492(g)s 1(alle)k 3(y)k +0 10866(consists)m 817(of)s 1098(an)s 1391(object)s 2045(\(such)s +2630(as)s 2890(a)s 3066(footnote\))s 4001(together)s 4854(with)s +5346(a)s 5522(sequence)s 6465(of)s 6746(places)s 7404(where)s +8054(that)s 8482(object)s 0 10578(may)m 491(appear)s 1214(\(such)s +1814(as)s 2090(the)s 2464(bottoms)s 3311(of)s 3608(the)s +3982(current)s 4743(and)s 5173(follo)s 6(wing)k 6176(pages\).)s +6989(Splitting)s 7891(occurs)s 8592(quite)s 0 10290(naturally)m 903(when)s +1479(space)s 2066(at)s 2298(an)s 3(y)k 2695(place)s +3255(is)s 3465(insuf\207cient)s 4600(to)s 4839(hold)s 5323(the)s +5671(entire)s 6270(object.)s 480 9916(In)m 736(Lout,)s 1295(a)s +1461(footnote)s 2314(g)s 1(alle)k 3(y)k 2948(and)s +3352(its)s 3628(place)s 4188(of)s 4459(appearance)s 5590(are)s +5937(de\207ned)s 6700(as)s 6950(follo)s 6(ws:)k 220 fnt35 +480 9415(def @F)m 6(ootPlace { @Galle)k 4(y })k 480 8839(def @F)m 6(ootNote into { @F)k 6(ootPlace&&f)k 6(ollo)k 3(wing })k +480 8551( r)m -3(ight x)k 480 8263({ x })m 240 fnt82 0 7769(The)m +220 fnt35 445 7766(@F)m 6(ootPlace)k 240 fnt82 1719 7769(symbol)m +2496(contains)s 3362(the)s 3727(special)s 4463(symbol)s 220 fnt35 +5240 7766(@Galle)m 4(y)k 240 fnt82 6078 7769(,)m 6203(indicating)s +7229(that)s 7665(it)s 7874(is)s 8102(a)s 8285(point)s +8855(of)s 0 7481(appearance)m 1143(for)s 1493(a)s 1672(g)s 1(alle)k 3(y)k 15(.)k +2413(By)s 2759(placing)s 3529(in)s 9(v)k 4(ocations)k +4682(of)s 220 fnt35 4965 7478(@F)m 6(ootPlace)k 240 fnt82 +6234 7481(at)m 6478(the)s 6838(bottoms)s 7673(of)s 7956(pages,)s +8620(as)s 8883(in)s 0 7193(Section)m 801(3.2,)s 1235(we)s +1597(de\207ne)s 2265(the)s 2640(desired)s 3415(points)s 4078(of)s +4376(appearance)s 5534(for)s 5899(footnotes.)s 6980(Symbols)s 7896(whose)s +8592(body)s 0 6905(contains)m 220 fnt35 863 6902(@Galle)m 4(y)k +240 fnt82 1776 6905(either)m 2394(directly)s 3192(or)s 3466(indirectly)s +4450(are)s 4812(called)s 5455(recepti)s 6(v)k 3(e)k +6392(symbols,)s 7312(meaning)s 8204(recepti)s 6(v)k 3(e)k +0 6617(to)m 239(g)s 1(alle)k 3(ys,)k 1019(and)s +1423(the)s 3(y)k 1886(are)s 2233(e)s 3(xpanded)k +3207(only)s 3687(on)s 3984(demand.)s 4906(The)s 5334(ef)s 6(fect)k +5930(of)s 6202(the)s 220 fnt35 6550 6614(into)m 240 fnt82 +6956 6617(clause)m 7609(is)s 7819(to)s 8058(mak)s 2(e)k +8631(each)s 0 6329(in)m 9(v)k 4(ocation)k 1057(of)s +220 fnt35 1332 6326(@F)m 6(ootNote)k 240 fnt82 2506 6329(a)m +2676(g)s 1(alle)k 3(y)k 3313(whose)s 3985(object)s +4632(is)s 4846(the)s 5198(result)s 5791(of)s 6066(the)s +6417(in)s 9(v)k 4(ocation)k 7475(in)s 7721(the)s +8073(usual)s 8637(w)s 2(ay)k 15(,)k 0 6041(and)m +406(whose)s 1076(sequence)s 2011(of)s 2285(points)s 2923(of)s +3196(appearance)s 4329(is)s 4542(speci\207ed)s 5452(by)s 5748(the)s +220 fnt35 6098 6038(into)m 240 fnt82 6507 6041(clause;)m 7218(in)s +7463(this)s 7861(e)s 3(xample,)k 8778(the)s 0 5753(sequence)m +933(of)s 1204(all)s 220 fnt35 1497 5750(@F)m 6(ootPlace)k +240 fnt82 2753 5753(symbols)m 3602(follo)s 6(wing)k 4579(the)s +4927(in)s 9(v)k 4(ocation)k 5981(point.)s 480 5379(Lout)m +995(permits)s 1766(g)s 1(alle)k 3(ys)k 2494(to)s +2737(be)s 3023(in)s 9(v)k 4(ok)k 2(ed)k +3842(within)s 4514(other)s 5069(g)s 1(alle)k 3(ys)k +5797(to)s 6040(arbitrary)s 6919(depth,)s 7562(so)s 7832(that)s +8254(one)s 8660(may)s 0 5091(ha)m 4(v)k 3(e)k +514(footnotes)s 1468(within)s 2149(\207gures)s 2864(within)s 3546(the)s +3907(body)s 4454(te)s 3(xt)k 4882(g)s 1(alle)k 3(y)k 15(,)k +5568(for)s 5919(e)s 3(xample,)k 6846(creating)s 7681(arbitrary)s +8570(static)s 0 4803(trees.)m 649(Recepti)s 6(v)k 3(e)k +1688(symbols)s 2573(lik)s 2(e)k 220 fnt35 3021 4800(@F)m 6(ootPlace)k +240 fnt82 4313 4803(may)m 4815(appear)s 5548(within)s 6252(an)s 3(y)k +6685(g)s 1(alle)k 3(y)k 15(,)k 7393(creating)s +8251(arbitrary)s 0 4515(dynamic)m 912(trees)s 1449(as)s 1734(well.)s +2345(The)s 2808(root)s 3289(of)s 3595(the)s 3979(dynamic)s +4891(tree,)s 5391(which)s 6068(w)s 2(ould)k 6759(normally)s +7711(consist)s 8471(of)s 8778(the)s 0 4227(sequence)m 959(of)s +1257(pages)s 1880(of)s 2178(the)s 2553(complete)s 3512(assembled)s +4593(document,)s 5671(is)s 5908(considered)s 7029(to)s 7295(be)s +7604(a)s 7797(g)s 1(alle)k 3(y)k 8458(whose)s +0 3939(point)m 563(of)s 845(appearance)s 1987(is)s 2208(the)s +2567(output)s 3250(\207le.)s 3730(Points)s 4390(of)s 4672(appearance)s +5814(may)s 6291(be)s 220 fnt35 6584 3936(preceding)m 240 fnt82 +7606 3939(or)m 220 fnt35 7876 3936(f)m 6(ollo)k 3(wing)k +240 fnt82 8778 3939(the)m 0 3651(in)m 9(v)k 4(ocation)k +1054(point;)s 1658(entries)s 2345(in)s 2588(tables)s 3196(of)s +3467(contents)s 4315(are)s 4662(the)s 5010(main)s 5545(users)s +6087(of)s 220 fnt35 6358 3648(preceding)m 240 fnt82 7309 3651(.)m +480 3277(The)m 913(g)s 1(alle)k 3(y)k 1552(abstraction)s +2662(is)s 2877(adequate)s 3788(for)s 4131(all)s 4429(of)s +4706(the)s 5059(applications)s 6270(listed)s 6850(at)s 7087(the)s +7440(be)s 3(ginning)k 8453(of)s 8730(this)s 0 2989(section,)m +808(e)s 3(xcept)k 1514(that)s 1957(there)s 2515(is)s +2749(no)s 3067(pro)s 3(vision)k 4050(for)s 4413(sorting)s +5155(inde)s 3(x)k 5763(entries)s 6475(and)s 6904(references.)s +8073(Sorting)s 8855(of)s 0 2701(g)m 1(alle)k 3(ys)k +715(has)s 1075(been)s 1574(added)s 2194(to)s 2423(Lout)s +2925(as)s 3165(a)s 3321(b)s 4(uilt-in)k 4068(feature,)s +4827(in)s 9(v)k 4(ok)k 2(ed)k 5632(by)s +5916(adding)s 6611(a)s 6767(special)s 220 fnt35 7475 2698(@K)m 8(e)k 4(y)k +240 fnt82 8112 2701(parameter)m 0 2413(to)m 227(the)s 563(g)s 1(alle)k 3(ys,)k +1330(and)s 1722(using)s 2281(its)s 2545(v)s 6(alue)k +3100(as)s 3338(the)s 3673(sort)s 4079(k)s 2(e)k 3(y)k 15(.)k +4556(The)s 4972(author)s 5631(w)s 2(as)k 6039(at)s +6259(a)s 6412(loss)s 6823(to)s 7049(\207nd)s 7468(an)s 3(y)k +7852(other)s 8391(w)s 2(ay)k 15(,)k 8867(or)s +0 2125(an)m 3(y)k 397(useful)s 1036(generalization)s 2446(of)s +2717(this)s 3113(feature.)s 3939(Its)s 4228(implementation)s 5785(will)s +6211(be)s 6493(discussed)s 7468(in)s 7711(Section)s 8485(6.2.)s +240 fnt84 0 1476(5.2.)m 471(The)s 926(galley)s 1580(\210ushing)s +2447(algorithm)s 240 fnt82 480 999(Galle)m 3(y)k 1177(components)s +2395(are)s 2751(promoted)s 3736(one)s 4148(by)s 4451(one)s +4863(into)s 5298(the)s 5655(point)s 6217(of)s 6498(appearance)s +7638(in)s 7891(the)s 8249(dynamic)s 0 711(parent)m 672(g)s 1(alle)k 3(y)k 15(,)k +1359(then)s 1843(carried)s 2579(along)s 3179(with)s 3676(it,)s +3931(ultimately)s 4968(to)s 5222(the)s 5586(root)s 6046(g)s 1(alle)k 3(y)k +6695(and)s 7115(the)s 7478(output)s 8165(\207le.)s 8650(This)s +0 423(process)m 800(is)s 1042(called)s 240 fnt83 1703 425(galle)m 7(y)k +2368(\210ushing)s 240 fnt82 3121 423(:)m 3259(the)s 3640(g)s 1(alle)k 3(ys)k +4396(are)s 4775(ri)s 6(v)k 3(ers)k 5393(running)s +6223(together)s 7098(to)s 7370(the)s 7750(sea,)s 8194(and)s +8631(each)s 0 135(component)m 1124(is)s 1334(a)s 1500(drop)s +1992(of)s 2263(w)s 2(ater)k 13(.)k +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 25 26 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Helvetica +%%+ font Times-Italic +/pgsave save def +%%IncludeResource: font Helvetica +/Helveticafnt35 vec2 /Helvetica LoutRecode +/fnt35 { /Helveticafnt35 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +1 LoutMargSet +grestore +4292 13841(-)m 4420(25)s 4706(-)s 480 13250(Here)m 1057(is)s +1324(a)s 1547(snapshot)s 2502(of)s 2830(a)s 3053(small)s +3682(dynamic)s 4616(tree,)s 5137(based)s 5797(on)s 6151(the)s +220 fnt35 6556 13247(@P)m 8(ageList)k 240 fnt82 7737 13250(de\207nitions)m +8855(of)s 0 12962(Section)m 774(3.2:)s 6982 3257 0 3257 240 288 60 480 9414 LoutGr2 +grestore save gsave 200 dict begin lfigdict begin +grestore +200 fnt83 0 3121(output)m +563(\207le)s gsave +860 0 translate +240 fnt82 0 3257 0 3165 240 288 60 LoutGraphic +gsave +currentdict end 200 dict begin begin +grestore +0 0 0 0 240 288 60 0 3165 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfignoline [ lfigbox ] lfigdopath +pop pop +grestore + +grestore +(A) lfigpromotelabels +grestore +1994(r)s 9(oot)k 2370(galle)s 6(y)k +gsave +1994 2967 translate +240 fnt82 1927 0 0 0 240 288 60 LoutGraphic +gsave +currentdict end 200 dict begin begin +grestore +0 0 0 0 240 288 60 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfignoline [ lfigbox ] lfigdopath +pop pop +grestore + +grestore +(B) lfigpromotelabels +grestore +gsave +1994 473 translate +240 fnt82 1927 2494 0 2494 240 288 60 LoutGraphic +gsave +0 0 moveto xsize 0 lineto xsize ysize lineto +0 ysize lineto closepath stroke +grestore +160 fnt82 845 2216(-)m 931(1)s 1035(-)s 410 2000(A)m +563(small)s 140 fnt35 170 1784(@Galle)m 2(y)k 160 fnt82 +743(*)s 904 1617 5 1545 160 180 40 853 275 LoutGr2 +currentdict end 200 dict begin begin +grestore +10 10 5 5 160 180 40 0 1540 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfignoline [ lfigbox ] lfigdopath +pop pop +grestore + +grestore +(C) lfigpromotelabels +grestore +140 fnt35 170 173(@F)m 4(ootSect)k +grestore +gsave +1994 0 translate +240 fnt82 1927 473 170 237 240 288 60 LoutGraphic +gsave + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigbox ] lfigdopath +pop pop +grestore +140 fnt35 +170 201(@P)m 5(ageList 2)k +grestore +5055 2611(body)m 5490(te)s 4(xt)k +gsave +5055 1974 translate +240 fnt82 1927 483 170 240 240 288 60 LoutGraphic +gsave +currentdict end 200 dict begin begin +grestore +1927 483 170 240 240 288 60 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigbox ] lfigdopath +pop pop +grestore +160 fnt82 170 204(paragraph)m +grestore +(D) lfigpromotelabels +grestore +gsave +5055 1524 translate +240 fnt82 1927 450 170 207 240 288 60 LoutGraphic +gsave + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigbox ] lfigdopath +pop pop +grestore +160 fnt82 170 171(of)m 351(te)s 2(xt.)k + +grestore +gsave +5055 1034 translate +240 fnt82 1927 490 170 244 240 288 60 LoutGraphic +gsave + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigbox ] lfigdopath +pop pop +grestore +160 fnt35 170 203(@Input)m +grestore +gsave +0 0 translate +240 fnt82 0 0 0 0 240 288 60 LoutGraphic +gsave + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ B@W lfigprevious /FROM lfigpointdef +A@E lfigprevious /TO lfigpointdef ] lfigdopath +0.15 cm /lfigsolid /lfigblack +lfigopen +0.15 cm 0.05 cm lfigforward +grestore + +grestore +gsave +0 0 translate +240 fnt82 0 0 0 0 240 288 60 LoutGraphic +gsave + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ D@W lfigprevious /FROM lfigpointdef +C@E lfigprevious /TO lfigpointdef ] lfigdopath +0.15 cm /lfigsolid /lfigblack +lfigopen +0.15 cm 0.05 cm lfigforward +grestore + +grestore +end end restore +grestore +0 8963(The)m 472(components)s 1724(of)s +2039(the)s 2431(body)s 3009(te)s 3(xt)k 3468(g)s 1(alle)k 3(y)k +4146(are)s 4537(lines,)s 5139(e)s 3(xcept)k 5864(for)s +6246(the)s 6638(special)s 7400(recepti)s 6(v)k 3(e)k +8366(symbol)s 220 fnt35 0 8672(@Input)m 240 fnt82 759 8675(which)m +1393(is)s 1595(a)s 1753(placeholder)s 2920(for)s 3249(as)s +3491(yet)s 3835(unread)s 4536(input)s 5080(\(Section)s 5924(5.4\).)s +6459(The)s 6879(components)s 8079(of)s 8342(the)s 8681(root)s +0 8387(g)m 1(alle)k 3(y)k 646(are)s 1006(pages,)s +1671(e)s 3(xcept)k 2364(for)s 2715(the)s 3076(concluding)s +4205(une)s 3(xpanded)k 5431(in)s 9(v)k 4(ocation)k +6498(of)s 220 fnt35 6781 8384(@P)m 8(ageList)k 240 fnt82 +7845 8387(,)m 7965(which)s 8620(is)s 8843(an)s 0 8099(ine)m 3(xhaustible)k +1328(source)s 2008(of)s 2279(more)s 2826(pages,)s 3478(e)s 3(xpanded)k +4451(on)s 4748(demand.)s 480 7725(The)m 923(concrete)s 1804(data)s +2277(structure)s 3184(used)s 3696(by)s 4006(Basser)s 4718(Lout)s +5246(permits)s 6028(the)s 6392(g)s 1(alle)k 3(y)k +7041(\210ushing)s 7882(algorithm)s 8887(to)s 0 7437(na)m 4(vig)k 1(ate)k +861(the)s 1209(dynamic)s 2086(tree)s 2499(and)s 2903(\207nd)s +3334(signi\207cant)s 4390(features)s 5196(quickly:)s gsave +480 78 translate +200 fnt82 8081 7019 226 7019 200 288 50 LoutGraphic +gsave +grestore save gsave 100 dict begin lfigdict begin +grestore +980 7019 226 6704 200 288 50 0 0 LoutGr2 +currentdict end 100 dict begin begin +grestore +980 585 226 270 200 288 50 0 6434 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigellipse ] lfigdopath +pop pop +grestore +200 fnt83 226 226(HEAD)m + +grestore +(A) lfigpromotelabels +grestore +1927 588 226 273 200 288 50 1830 6431 LoutGr2 +currentdict end 100 dict begin begin +grestore +1631 588 226 273 200 288 50 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigellipse ] lfigdopath +pop pop +grestore +200 fnt83 226 229(RECEIVING)m 1306(*)s +grestore +(B) lfigpromotelabels +grestore +0 0 0 0 200 288 50 1830 6431 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ A@CTR A@CTR B@W lfigangle A@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef +B@W lfigprevious /TO lfigpointdef ] lfigdopath +0.15 cm /lfigsolid /lfigblack +lfigopen +0.15 cm 0.05 cm lfigforward +grestore + +grestore +1927 588 226 273 200 288 50 1830 5503 LoutGr2 +currentdict end 100 dict begin begin +grestore +1498 588 226 273 200 288 50 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigellipse ] lfigdopath +pop pop +grestore +200 fnt83 226 229(RECEPTIVE)m + +grestore +(C) lfigpromotelabels +grestore +0 0 0 0 200 288 50 1830 5503 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ A@CTR A@CTR C@W lfigangle A@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef +C@W lfigprevious /TO lfigpointdef ] lfigdopath +0.15 cm /lfigsolid /lfigblack +lfigopen +0.15 cm 0.05 cm lfigforward +grestore + +grestore +1927 0 0 0 200 288 50 1830 5163 LoutGr2 +currentdict end 100 dict begin begin +grestore +0 0 0 0 200 288 50 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfignoline [ lfigbox ] lfigdopath +pop pop +grestore + +grestore +(D) lfigpromotelabels +grestore +0 0 0 0 200 288 50 1830 5163 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ A@CTR A@CTR D@NW lfigangle A@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef +D@NW lfigprevious /TO lfigpointdef ] lfigdopath +0.15 cm /lfigsolid /lfigblack +lfigopen +0.15 cm 0.05 cm lfigforward +grestore + +grestore +1927 2494 0 2494 200 288 50 1830 2669 LoutGr2 +0 0 moveto xsize 0 lineto xsize ysize lineto +0 ysize lineto closepath stroke +grestore +160 fnt82 845 2216(-)m 931(1)s 1035(-)s 410 2000(A)m +563(small)s 1587 1611 0 1545 160 180 40 170 275 LoutGr2 +currentdict end 100 dict begin begin +grestore +572 132 0 66 160 180 40 0 1479 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfignoline [ lfigbox ] lfigdopath +pop pop +grestore +140 fnt35 0 30(@Galle)m 2(y )k +grestore +(E) lfigpromotelabels +grestore +1587 105 0 39 160 180 40 170 170 LoutGr2 +currentdict end 100 dict begin begin +grestore +731 105 0 39 160 180 40 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfignoline [ lfigbox ] lfigdopath +pop pop +grestore +140 fnt35 +0 3(@F)m 4(ootSect )k +grestore +(F) lfigpromotelabels +grestore + +grestore +0 0 0 0 200 288 50 1830 2669 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ B@E B@E 0 B@E E@E lfigydistance lfigpadd E@E ] lfigdopath +0.15 cm /lfigsolid /lfigblack +lfigopen +0.15 cm 0.05 cm lfigforward +grestore + +grestore +0 0 0 0 200 288 50 1830 2669 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ C@E C@E 0 C@E F@E lfigydistance lfigpadd F@E ] lfigdopath +0.15 cm /lfigsolid /lfigblack +lfigopen +0.15 cm 0.05 cm lfigforward +grestore + +grestore +1927 588 226 273 200 288 50 1830 1741 LoutGr2 +currentdict end 100 dict begin begin +grestore +839 588 226 273 200 288 50 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigellipse ] lfigdopath +pop pop +grestore +200 fnt83 226 229(GAP)m +grestore +(C) lfigpromotelabels +grestore +0 0 0 0 200 288 50 1830 1741 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ A@CTR A@CTR C@W lfigangle A@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef +C@W lfigprevious /TO lfigpointdef ] lfigdopath +0.15 cm /lfigsolid /lfigblack +lfigopen +0.15 cm 0.05 cm lfigforward +grestore + +grestore +1927 588 226 273 200 288 50 1830 813 LoutGr2 +currentdict end 100 dict begin begin +grestore +1498 588 226 273 200 288 50 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigellipse ] lfigdopath +pop pop +grestore +200 fnt83 +226 229(RECEPTIVE)m +grestore +(C) lfigpromotelabels +grestore +0 0 0 0 200 288 50 1830 813 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ A@CTR A@CTR C@W lfigangle A@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef +C@W lfigprevious /TO lfigpointdef ] lfigdopath +0.15 cm /lfigsolid /lfigblack +lfigopen +0.15 cm 0.05 cm lfigforward +grestore + +grestore +1927 473 170 237 200 288 50 1830 0 LoutGr2 +currentdict end 100 dict begin begin +grestore +1927 473 170 237 200 288 50 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigbox ] lfigdopath +pop pop +grestore +140 fnt35 170 201(@P)m 5(ageList 2)k +grestore +(D) lfigpromotelabels +grestore +0 0 0 0 200 288 50 1830 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ A@CTR A@CTR D@NW lfigangle A@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef +D@NW lfigprevious /TO lfigpointdef ] lfigdopath +0.15 cm /lfigsolid /lfigblack +lfigopen +0.15 cm 0.05 cm lfigforward +grestore + +grestore +0 0 0 0 200 288 50 1830 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ C@E C@E 0 C@E D@W 1.8 cm 0 lfigpadd lfigydistance lfigpadd D@W 1.8 cm 0 lfigpadd ] lfigdopath +0.15 cm /lfigsolid /lfigblack +lfigopen +0.15 cm 0.05 cm lfigforward +grestore + +grestore +980 7019 226 6704 200 288 50 4324 0 LoutGr2 +currentdict end 100 dict begin begin +grestore +980 585 226 270 200 288 50 0 6434 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigellipse ] lfigdopath +pop pop +grestore +200 fnt83 +226 226(HEAD)m +grestore +(A) lfigpromotelabels +grestore +0 0 0 0 200 288 50 5304 6704 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ B@E lfigprevious /FROM lfigpointdef +A@W lfigprevious /TO lfigpointdef ] lfigdopath +0.15 cm /lfigsolid /lfigblack +lfigopen +0.15 cm 0.05 cm lfigforward +grestore + +grestore +1927 483 170 240 200 288 50 6154 6536 LoutGr2 +currentdict end 100 dict begin begin +grestore +1927 483 170 240 200 288 50 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigbox ] lfigdopath +pop pop +grestore +160 fnt82 170 204(paragraph)m +grestore +(B) lfigpromotelabels +grestore +0 0 0 0 200 288 50 6154 6536 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ A@CTR A@CTR B@W lfigangle A@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef +B@W lfigprevious /TO lfigpointdef ] lfigdopath +0.15 cm /lfigsolid /lfigblack +lfigopen +0.15 cm 0.05 cm lfigforward +grestore + +grestore +1927 588 226 273 200 288 50 6154 5608 LoutGr2 +currentdict end 100 dict begin begin +grestore +839 588 226 273 200 288 50 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigellipse ] lfigdopath +pop pop +grestore +200 fnt83 226 229(GAP)m + +grestore +(B) lfigpromotelabels +grestore +0 0 0 0 200 288 50 6154 5608 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ A@CTR A@CTR B@W lfigangle A@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef +B@W lfigprevious /TO lfigpointdef ] lfigdopath +0.15 cm /lfigsolid /lfigblack +lfigopen +0.15 cm 0.05 cm lfigforward +grestore + +grestore +1927 450 170 207 200 288 50 6154 4818 LoutGr2 +currentdict end 100 dict begin begin +grestore +1927 450 170 207 200 288 50 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigbox ] lfigdopath +pop pop +grestore +160 fnt82 170 171(of)m 351(te)s 2(xt.)k +grestore +(B) lfigpromotelabels +grestore +0 0 0 0 200 288 50 6154 4818 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ A@CTR A@CTR B@NW lfigangle A@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef +B@NW lfigprevious /TO lfigpointdef ] lfigdopath +0.15 cm /lfigsolid /lfigblack +lfigopen +0.15 cm 0.05 cm lfigforward +grestore + +grestore +1927 588 226 273 200 288 50 6154 3890 LoutGr2 +currentdict end 100 dict begin begin +grestore +839 588 226 273 200 288 50 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigellipse ] lfigdopath +pop pop +grestore +200 fnt83 +226 229(GAP)m +grestore +(B) lfigpromotelabels +grestore +0 0 0 0 200 288 50 6154 3890 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ A@CTR A@CTR B@W lfigangle A@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef +B@W lfigprevious /TO lfigpointdef ] lfigdopath +0.15 cm /lfigsolid /lfigblack +lfigopen +0.15 cm 0.05 cm lfigforward +grestore + +grestore +1927 588 226 273 200 288 50 6154 2962 LoutGr2 +currentdict end 100 dict begin begin +grestore +1498 588 226 273 200 288 50 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigellipse ] lfigdopath +pop pop +grestore +200 fnt83 226 229(RECEPTIVE)m +grestore +(B) lfigpromotelabels +grestore +0 0 0 0 200 288 50 6154 2962 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ A@CTR A@CTR B@W lfigangle A@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef +B@W lfigprevious /TO lfigpointdef ] lfigdopath +0.15 cm /lfigsolid /lfigblack +lfigopen +0.15 cm 0.05 cm lfigforward +grestore + +grestore +1927 471 170 235 200 288 50 6154 2151 LoutGr2 +currentdict end 100 dict begin begin +grestore +1927 471 170 235 200 288 50 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigbox ] lfigdopath +pop pop +grestore +140 fnt35 170 199(@Input)m + +grestore +(C) lfigpromotelabels +grestore +0 0 0 0 200 288 50 6154 2151 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ A@CTR A@CTR C@NW lfigangle A@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef +C@NW lfigprevious /TO lfigpointdef ] lfigdopath +0.15 cm /lfigsolid /lfigblack +lfigopen +0.15 cm 0.05 cm lfigforward +grestore + +grestore +0 0 0 0 200 288 50 6154 2151 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ B@E B@E 0 B@E C@W 1.2 cm 0 lfigpadd lfigydistance lfigpadd C@W 1.2 cm 0 lfigpadd ] lfigdopath +0.15 cm /lfigsolid /lfigblack +lfigopen +0.15 cm 0.05 cm lfigforward +grestore + +grestore +end end restore +grestore + +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 26 27 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Italic +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Helvetica +/Helveticafnt35 vec2 /Helvetica LoutRecode +/fnt35 { /Helveticafnt35 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +0 LoutMargSet +grestore +4288 13842(-)m 4416(26)s 4709(-)s 0 13251(Each)m 521(g)s 1(alle)k 3(y)k +1140(has)s 1495(a)s 240 fnt83 1647 13253(HEAD)m 240 fnt82 +2325 13251(node)m 2832(whose)s 3485(children)s 4311(are)s 4643(its)s +4904(component)s 6013(objects,)s 6783(separated)s 7728(by)s 240 fnt83 +8007 13253(GAP)m 240 fnt82 8516 13251(nodes)m 0 12963(recording)m 969(the)s +1317(inter)s 4(-component)k 2953(g)s 1(aps.)k 480 12589(Each)m +1026(component)s 2161(is)s 2383(preceded)s 3315(by)s 3621(zero)s +4096(or)s 4367(more)s 240 fnt83 4925 12591(galle)m 7(y)k +5569(inde)s 4(x)k 6155(nodes)s 240 fnt82 6780 12589(of)m +7063(v)s 6(arious)k 7823(types.)s 8504(Ev)s 3(ery)k +0 12301(recepti)m 6(v)k 3(e)k 922(symbol)s 1681(has)s +2051(a)s 240 fnt83 2216 12303(RECEPTIVE)m 240 fnt82 3529 12301(inde)m 3(x)k +4112(pointing)s 4963(to)s 5201(it,)s 5440(so)s 5705(that)s +6123(it)s 6314(can)s 6703(be)s 6984(found)s 7601(without)s +8391(search)s 8998(-)s 0 12013(ing)m 355(through)s 1152(its)s +1423(component.)s 2646(If)s 2871(the)s 3215(symbol)s 3970(is)s +4175(currently)s 5086(the)s 5429(tar)s 4(get)k 6023(of)s +6290(a)s 6451(g)s 1(alle)k 3(y)k 15(,)k +7118(it)s 7305(has)s 7670(a)s 240 fnt83 7831 12015(RECEIVING)m +240 fnt82 0 11725(inde)m 3(x)k 595(instead)s 1342(which)s +1995(is)s 2217(also)s 2667(link)s 2(ed)k 3332(to)s +3583(the)s 3942(incoming)s 4911(g)s 1(alle)k 3(y)k 15(.)k +5652(Galle)s 3(ys)k 6441(that)s 6871(are)s 7229(currently)s +8157(without)s 8960(a)s 0 11437(tar)m 4(get)k 586(are)s +920(link)s 2(ed)k 1560(to)s 1786(the)s 2120(dynamic)s +2984(tree)s 3383(by)s 240 fnt83 3664 11439(UN)m 6(A)k 8(TT)k 12(A)k 7(CHED)k +240 fnt82 5215 11437(g)m 1(alle)k 3(y)k 5836(inde)s 3(x)k 3(es,)k +6654(either)s 7244(just)s 7635(after)s 8118(their)s 8601(most)s +0 11149(recent)m 643(tar)s 4(get)k 1242(if)s 1459(there)s +1992(has)s 2362(been)s 2871(one,)s 3324(or)s 3583(else)s +4010(at)s 4242(their)s 4739(point)s 5291(of)s 5562(in)s 9(v)k 4(ocation.)k +480 10775(Each)m 1041(g)s 1(alle)k 3(y)k 1701(should)s +2424(be)s 2732(thought)s 3550(of)s 3847(as)s 4123(a)s +4315(concurrent)s 5423(process,)s 6273(although)s 7194(the)s 7569(implementation)s +0 10487(in)m 268(C)s 506(uses)s 995(coroutines)s 2067(implemented)s +3399(by)s 3719(procedures.)s 4957(A)s 5213(g)s 1(alle)k 3(y)k +5873(may)s 6364(promote)s 7243(its)s 7545(\207rst)s 8002(component)s +0 10199(only)m 499(if)s 735(it)s 946(has)s 1335(a)s +1520(tar)s 4(get,)k 2185(suf\207cient)s 3153(space)s 3759(is)s +3988(a)s 4(v)k 6(ailable)k 4915(at)s 5166(the)s +5533(tar)s 4(get)k 6151(to)s 6409(recei)s 6(v)k 3(e)k +7164(the)s 7531(component,)s 8722(and)s 0 9911(the)m 349(component)s +1475(contains)s 2325(no)s 2620(recepti)s 6(v)k 3(e)k +3544(symbols.)s 4508(This)s 4986(last)s 5379(condition)s 6342(seems)s +6979(to)s 7220(be)s 7504(the)s 7854(k)s 2(e)k 3(y)k +8251(to)s 8492(g)s 1(alle)k 3(y)k 0 9623(synchronization:)m +1722(it)s 1943(forces)s 2606(a)s 2801(bottom-up)s 3880(promotion)s +4963(re)s 3(gime,)k 5759(pre)s 6(v)k 3(enting)k +6855(pages)s 7480(from)s 8033(\210ushing)s 8887(to)s 0 9335(output)m +672(before)s 1338(te)s 3(xt)k 1753(\210ushes)s 2469(into)s +2894(them,)s 3479(for)s 3817(e)s 3(xample.)k 480 8961(Each)m +1022(g)s 1(alle)k 3(y)k 1663(contains)s 2519(a)s +2692(number)s 3490(of)s 3769(binary)s 4441(semaphores,)s 5685(sho)s 6(wn)k +6369(as)s 6626(asterisks)s 7507(in)s 7757(our)s 8144(snapshots)s +0 8673(when)m 583(set.)s 1019(At)s 1325(an)s 3(y)k +1730(gi)s 6(v)k 3(en)k 2317(moment,)s 3215(a)s +3389(g)s 1(alle)k 3(y)k 4030(process)s 4805(is)s +5022(either)s 5633(running)s 6438(or)s 6704(else)s 7139(is)s +7356(suspended)s 8419(on)s 8724(one)s 0 8385(of)m 269(its)s +543(o)s 6(wn)k 1005(semaphores.)s 2296(The)s 240 fnt83 +2722 8387(HEAD)m 240 fnt82 3413 8385(node)m 3933(contains)s 4779(a)s +4943(semaphore)s 6033(which)s 6673(is)s 6881(set)s 7204(when)s +7778(the)s 8124(g)s 1(alle)k 3(y)k 8756(has)s +0 8097(tried)m 499(to)s 742(\207nd)s 1177(a)s 1347(tar)s 4(get)k +1950(and)s 2359(f)s 2(ailed.)k 3068(Each)s 3607(recepti)s 6(v)k 3(e)k +4533(symbol)s 5297(has)s 5671(a)s 5842(semaphore)s 6938(which)s +7584(is)s 7798(set)s 8127(when)s 8708(that)s 0 7809(symbol)m +760(is)s 970(pre)s 6(v)k 3(enting)k 2037(the)s +2385(\207rst)s 2816(component)s 3940(from)s 4464(being)s 5049(promoted.)s +480 7435(F)m 3(or)k 859(e)s 3(xample,)k 1762(in)s +1994(the)s 2331(snapshot)s 3218(at)s 3439(the)s 3776(be)s 3(ginning)k +4773(of)s 5033(this)s 5418(section,)s 6191(the)s 6528(root)s +6962(g)s 1(alle)k 3(y)k 7585(is)s 7784(suspended)s +8829(on)s 0 7147(the)m 220 fnt35 351 7144(@Galle)m 4(y)k +240 fnt82 1253 7147(symbol,)m 2069(b)s 4(ut)k 2435(the)s +2787(te)s 3(xt)k 3205(g)s 1(alle)k 3(y)k +3843(is)s 4057(running.)s 4970(It)s 5179(will)s 5608(suspend)s +6442(on)s 6743(the)s 220 fnt35 7095 7144(@Input)m 240 fnt82 +7866 7147(symbol)m 8630(after)s 0 6859(the)m 348(\207rst)s 779(tw)s 2(o)k +1189(components)s 2397(are)s 2744(promoted.)s 480 6485(Ev)m 3(ery)k +1145(g)s 1(alle)k 3(y)k 240 fnt83 1822 6487(G)m +240 fnt82 1995 6485(,)m 2145(be)s 2470(it)s 2705(a)s +2914(list)s 3308(of)s 3623(pages,)s 4318(body)s 4895(te)s 3(xt,)k +5400(a)s 5609(footnote,)s 6556(or)s 6858(whate)s 6(v)k 3(er)k 9(,)k +7866(e)s 3(x)k 3(ecutes)k 8778(the)s 0 6197(follo)m 6(wing)k +977(algorithm)s 1966(in)s 2209(parallel)s 2979(with)s 3461(e)s 6(v)k 3(ery)k +4037(other)s 4588(g)s 1(alle)k 3(y:)k 0 5694(1.)m +303(Initially)s 240 fnt83 1132 5696(G)m 240 fnt82 1384 5694(is)m +1614(unattached.)s 2834(Search)s 3560(forw)s 2(ards)k 4478(or)s +4756(backw)s 2(ards)k 5848(from)s 6392(its)s 240 fnt83 +6687 5696(UN)m 6(A)k 8(TT)k 12(A)k 7(CHED)k +240 fnt82 8272 5694(inde)m 3(x)k 8876(as)s 0 5406(required,)m +903(to)s 1142(\207nd)s 1573(a)s 1739(recepti)s 6(v)k 3(e)k +2661(symbol)s 240 fnt83 3421 5408(S)m 240 fnt82 3602 5406(which)m +4244(can)s 4633(e)s 3(xpand)k 5380(to)s 5619(re)s 6(v)k 3(eal)k +6248(a)s 6414(tar)s 4(get)k 7013(for)s 240 fnt83 +7351 5408(G)m 240 fnt82 7524 5406(.)m 0 4903(2.)m 284(If)s +514(no)s 240 fnt83 807 4905(S)m 240 fnt82 988 4903(can)m +1377(be)s 1659(found,)s 2325(suspend)s 3155(on)s 3452(the)s +3800(attachment)s 4908(semaphore.)s 6108(Resume)s 6935(later)s 7418(from)s +7942(step)s 8380(1.)s 0 4400(3.)m 281(Expand)s 240 fnt83 +1068 4402(S)m 240 fnt82 1246 4400(to)m 1482(re)s 6(v)k 3(eal)k +2107(the)s 2452(tar)s 4(get)k 3048(of)s 240 fnt83 +3316 4402(G)m 240 fnt82 3489 4400(.)m 3649(Preserv)s 3(e)k +240 fnt83 4521 4402(S)m 240 fnt82 4642 4400(')m 13(s)k +4849(semaphore)s 5938(by)s 6229(mo)s 3(ving)k 7007(it)s +7196(to)s 7432(the)s 7777(\207rst)s 8204(recepti)s 6(v)k 3(e)k +0 4112(symbol)m 760(within)s 1428(the)s 1776(e)s 3(xpansion)k +2801(of)s 240 fnt83 3072 4114(S)m 240 fnt82 3193 4112(.)m +0 3609(4.)m 295(Calculate)s 1264(the)s 1624(a)s 4(v)k 6(ailable)k +2543(width)s 3156(and)s 3572(height)s 4241(at)s 4484(the)s +4844(tar)s 4(get,)k 5501(and)s 5917(if)s 240 fnt83 +6145 3611(G)m 240 fnt82 6389 3609(is)m 6611(still)s 7034(a)s +7211(pure)s 7704(parse)s 8275(tree,)s 8751(use)s 0 3321(the)m +377(en)s 9(vironment)k 1667(attached)s 2550(to)s 240 fnt83 +2819 3323(G)m 240 fnt82 3081 3321(and)m 3515(the)s 3892(style)s +4429(information)s 5643(from)s 6197(the)s 6574(tar)s 4(get)k +7203(to)s 7471(e)s 6(v)k 6(aluate)k 240 fnt83 +8341 3323(G)m 240 fnt82 8603 3321(as)m 8883(in)s 0 3033(Section)m +774(4.)s 0 2577(5.)m 284(Examine)s 1190(the)s 1538(components)s +2746(of)s 240 fnt83 3017 2579(G)m 240 fnt82 3250 2577(one)m +3652(by)s 3946(one.)s 4456(F)s 3(or)k 4845(each)s +5340(component)s 6464(there)s 6997(are)s 7344(three)s 7877(possibilities:)s +240 fnt83 480 2205(A)m 7(CCEPT)k 17(.)k 240 fnt82 +1513 2203(If)m 1756(the)s 2116(component)s 3253(\207ts)s 3609(into)s +4046(the)s 4407(a)s 4(v)k 6(ailable)k 5328(space,)s +5978(and)s 6395(has)s 6778(no)s 7083(other)s 7647(problems,)s +8657(then)s 0 1915(promote)m 875(it)s 1090(into)s 1538(the)s +1909(tar)s 4(get.)k 2635(If)s 2888(this)s 3306(is)s +3539(the)s 3910(\207rst)s 4364(component)s 5511(promoted)s 6509(into)s +6956(this)s 7375(tar)s 4(get,)k 8044(and)s 240 fnt83 +8471 1917(G)m 240 fnt82 8727 1915(is)m 8960(a)s 0 1627(forcing)m +768(g)s 1(alle)k 3(y)k 1428(\(Section)s 2307(5.4\),)s +2819(delete)s 3470(e)s 6(v)k 3(ery)k 4072(recepti)s 6(v)k 3(e)k +5020(symbol)s 5806(preceding)s 6827(the)s 7201(tar)s 4(get)k +7826(in)s 8095(the)s 8469(parent)s 0 1339(g)m 1(alle)k 3(y)k 15(.)k +729(If)s 240 fnt83 959 1341(G)m 240 fnt82 1192 1339(is)m +1402(the)s 1750(root)s 2195(g)s 1(alle)k 3(y)k 15(,)k +2867(render)s 3537(the)s 3885(component)s 5009(on)s 5306(the)s +5654(output)s 6326(\207le)s 6687(and)s 7091(dispose)s 7865(it;)s +240 fnt83 480 967(REJECT)m 17(.)k 240 fnt82 1490 965(If)m +1756(the)s 2140(component)s 3300(is)s 3546(too)s 3941(lar)s 4(ge)k +4506(for)s 4880(the)s 5264(a)s 4(v)k 6(ailable)k +6208(space,)s 6882(or)s 7177(a)s 240 fnt83 7379 967(FOLLO)m 12(WS)k +240 fnt82 8542 965(inde)m 3(x)k 0 677(\(described)m 1043(belo)s 6(w\))k +1740(forbids)s 2458(its)s 2723(promotion)s 3767(into)s 4182(this)s +4568(tar)s 4(get,)k 5203(then)s 5662(detach)s 240 fnt83 +6333 679(G)m 240 fnt82 6556 677(from)m 7069(the)s 7407(tar)s 4(get.)k +8100(If)s 8320(this)s 8705(w)s 2(as)k 0 389(the)m +338(\207rst)s 758(component)s 1872(at)s 2093(this)s 2479(tar)s 4(get,)k +240 fnt83 3114 391(S)m 240 fnt82 3284 389(has)m 3644(been)s +4142(a)s 4298(complete)s 5219(f)s 2(ailure,)k 5936(so)s +6191(undo)s 6713(step)s 7141(3)s 7294(\(Basser)s 8060(Lout)s +8561(is)s 8760(not)s +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 27 28 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Italic +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Helvetica +/Helveticafnt35 vec2 /Helvetica LoutRecode +/fnt35 { /Helveticafnt35 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +1 LoutMargSet +grestore +4291 13844(-)m 4419(27)s 4707(-)s 0 13255(able)m 454(to)s +693(undo)s 1226(step)s 1664(4\);)s 1975(otherwise)s 2960(delete)s +3586(the)s 3934(tar)s 4(get.)k 4637(Return)s 5345(to)s +5584(step)s 6022(1)s 6177(and)s 6581(continue)s 7461(immediately;)s +240 fnt83 480 12883(SUSPEND.)m 240 fnt82 1685 12881(If)m 1928(the)s +2289(component)s 3426(contains)s 4287(a)s 4466(recepti)s 6(v)k 3(e)k +5402(symbol,)s 6227(it)s 6432(cannot)s 7143(be)s 7438(promoted)s +8426(yet.)s 8896(If)s 0 12593(this)m 392(symbol)s 1148(is)s +1354(the)s 1697(tar)s 4(get)k 2292(of)s 2559(a)s +2720(g)s 1(alle)k 3(y)k 3350(that)s 3764(w)s 2(as)k +4180(written)s 4909(to)s 5144(an)s 5423(auxiliary)s 6321(\207le)s +6678(on)s 6971(a)s 7132(pre)s 6(vious)k 7997(run,)s +8419(read)s 8883(in)s 0 12305(that)m 427(g)s 1(alle)k 3(y)k +1071(and)s 1484(\210ush)s 2017(it.)s 2322(Otherwise)s 3370(suspend)s +4209(on)s 4516(the)s 4873(recepti)s 6(v)k 3(e)k +5805(symbol')s 13(s)k 6729(semaphore;)s 7887(resume)s 8643(later)s +0 12017(from)m 524(step)s 962(4.)s 0 11513(6.)m 284(T)s 16(erminate)k +1305(when)s 1881(the)s 2229(g)s 1(alle)k 3(y)k +2863(is)s 3073(empty)s 15(.)k 0 11010(At)m 354(v)s 6(arious)k +1158(points)s 1850(in)s 2148(this)s 2599(algorithm,)s 3691(recepti)s 6(v)k 3(e)k +4668(symbols)s 5572(\(and)s 6111(their)s 6663(semaphores\))s 7975(are)s +8378(deleted)s 0 10722(in)m 273(the)s 652(dynamic)s 1560(parent)s +2247(g)s 1(alle)k 3(y)k 15(,)k 2950(possibly)s +3833(permitting)s 4911(it)s 5134(to)s 5404(resume)s 6180(\210ushing.)s +7147(When)s 7807(this)s 8234(happens,)s 0 10434(Basser)m 701(Lout)s +1218(resumes)s 2057(the)s 2410(parent)s 3071(immediately)s 4324(after)s +240 fnt83 4825 10436(G)m 240 fnt82 5063 10434(suspends)m 5983(or)s +6247(terminates.)s 7410(Also,)s 7974(whene)s 6(v)k 3(er)k +8960(a)s 0 10146(component)m 1140(is)s 1366(promoted,)s 2406(an)s 3(y)k +2819(child)s 3371(g)s 1(alle)k 3(ys)k 4111(connected)s +5156(to)s 5411(it)s 5619(by)s 240 fnt83 5929 10148(UN)m 6(A)k 8(TT)k 12(A)k 7(CHED)k +240 fnt82 7510 10146(inde)m 3(x)k 3(es)k 8302(must)s +8844(be)s 0 9858(resumed,)m 918(since)s 1466(these)s 2014(g)s 1(alle)k 3(ys)k +2739(may)s 3206(be)s 3490(able)s 3945(to)s 4185(\207nd)s +4617(a)s 4784(tar)s 4(get)k 5384(no)s 6(w)k 15(.)k +5942(A)s 6173(good)s 6712(e)s 3(xample)k 7576(of)s +7848(this)s 8246(situation)s 0 9570(occurs)m 664(when)s 1228(a)s +1382(line)s 1785(of)s 2044(body)s 2566(te)s 3(xt)k +2969(with)s 3440(one)s 3830(or)s 4077(more)s 4613(footnotes)s +5542(is)s 5740(promoted)s 6703(onto)s 7171(a)s 7325(page.)s +7929(Basser)s 8614(Lout)s 0 9282(gi)m 6(v)k 3(es)k +547(priority)s 1317(to)s 1556(such)s 2052(children,)s 2942(suspending)s +240 fnt83 4073 9284(G)m 240 fnt82 4306 9282(while)m 4893(each)s +5388(is)s 5598(gi)s 6(v)k 3(en)k 6178(a)s +6344(chance)s 7064(to)s 7303(\210ush.)s 480 8908(Basser)m 1211(Lout)s +1758(searches)s 2653(for)s 3025(the)s 3408(\207rst)s 3874(tar)s 4(get)k +4507(of)s 240 fnt83 4813 8910(G)m 240 fnt82 5081 8908(only)m +5595(in)s 5873(re)s 3(gions)k 6660(of)s 6965(the)s +7348(dynamic)s 8260(tree)s 8708(that)s 0 8620(will)m 437(clearly)s +1152(precede)s 1963(or)s 2233(follo)s 6(w)k 240 fnt83 +2917 8622(G)m 240 fnt82 3090 8620(')m 13(s)k 3312(in)s 9(v)k 4(ocation)k +4378(point)s 4941(in)s 5196(the)s 5556(\207nal)s 6047(printed)s +6794(document,)s 7857(whiche)s 6(v)k 3(er)k 8916(is)s +0 8332(speci\207ed)m 904(in)s 1142(the)s 220 fnt35 1486 8329(into)m +240 fnt82 1887 8332(clause;)m 2591(subsequent)s 3711(tar)s 4(gets)k +4389(are)s 4731(sought)s 5426(later)s 5904(in)s 6142(the)s +6486(same)s 7028(g)s 1(alle)k 3(y)k 7657(as)s +7903(the)s 8246(\207rst.)s 8776(An)s 0 8044(e)m 3(xception)k +982(to)s 1219(this)s 1613(rule,)s 2089(whose)s 2755(necessity)s +3683(will)s 4107(be)s 4387(made)s 4959(clear)s 5480(later)s 9(,)k +5999(is)s 6207(that)s 6623(a)s 6787(\207rst)s 220 fnt35 +7216 8041(f)m 6(ollo)k 3(wing)k 240 fnt82 8104 8044(tar)m 4(get)k +8700(will)s 0 7756(be)m 282(sought)s 981(within)s 1649(a)s +1815(dynamic)s 2692(sibling)s 3396(g)s 1(alle)k 3(y)k +4030(preceding)s 240 fnt83 5026 7758(G)m 240 fnt82 5199 7756(')m 13(s)k +5409(in)s 9(v)k 4(ocation)k 6463(point:)s gsave +480 2770 translate +200 fnt82 5379 4646 0 4646 200 288 50 LoutGraphic +gsave +grestore save gsave 200 dict begin lfigdict begin +grestore +200 fnt83 +0 4510(dynamic)m 722(par)s 7(ent)k gsave +0 1353 translate +200 fnt82 2039 3003 226 2777 200 288 50 LoutGraphic +gsave + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigbox ] lfigdopath +pop pop +grestore +1587 171 0 86 200 288 50 226 2323 LoutGr2 +currentdict end 200 dict begin begin +grestore +796 171 0 86 200 288 50 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfignoline [ lfigbox ] lfigdopath +pop pop +grestore +180 fnt35 0 40(@XT)m 21(arget)k + +grestore +(A) lfigpromotelabels +grestore +1587 136 0 47 200 288 50 226 1620 LoutGr2 +currentdict end 200 dict begin begin +grestore +1254 136 0 47 200 288 50 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfignoline [ lfigbox ] lfigdopath +pop pop +grestore +200 fnt83 0 3(UN)m 5(A)k 7(TT)k 10(A)k 6(CHED)k + +grestore +(C) lfigpromotelabels +grestore +180 fnt35 226 752(@XT)m 21(arget)k +grestore +gsave +2889 4135 translate +200 fnt82 2490 171 0 86 200 288 50 LoutGraphic +gsave +currentdict end 200 dict begin begin +grestore +2450 171 0 86 200 288 50 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfignoline [ lfigbox ] lfigdopath +pop pop +grestore +180 fnt35 0 40(X into { @XT)m 21(arget&&f)k 5(ollo)k 2(wing })k + +grestore +(B) lfigpromotelabels +grestore +gsave +2889 2720 translate +200 fnt82 2039 1302 226 1076 200 288 50 LoutGraphic +gsave + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigbox ] lfigdopath +pop pop +grestore +180 fnt35 226 492(@GT)m 21(arget)k +grestore +gsave +2889 1982 translate +200 fnt82 2490 171 0 86 200 288 50 LoutGraphic +gsave +currentdict end 200 dict begin begin +grestore +2490 171 0 86 200 288 50 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfignoline [ lfigbox ] lfigdopath +pop pop +grestore +180 fnt35 0 40(G into { @GT)m 21(arget&&f)k 5(ollo)k 2(wing })k + +grestore +(D) lfigpromotelabels +grestore +gsave +2889 0 translate +200 fnt82 2039 1869 226 1643 200 288 50 LoutGraphic +gsave + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigbox ] lfigdopath +pop pop +grestore + +grestore +gsave +0 0 translate +200 fnt82 0 0 0 0 200 288 50 LoutGraphic +gsave + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ A@E 0.2 cm 0 lfigpadd lfigprevious /FROM lfigpointdef +0.2 cm 0 B@W lfigpsub lfigprevious /TO lfigpointdef ] lfigdopath +0.15 cm /lfigsolid /lfigblack +lfigopen +0.15 cm 0.05 cm lfigforward +grestore + +grestore +gsave +0 0 translate +200 fnt82 0 0 0 0 200 288 50 LoutGraphic +gsave + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ C@E 0.2 cm 0 lfigpadd lfigprevious /FROM lfigpointdef +0.2 cm 0 D@W lfigpsub lfigprevious /TO lfigpointdef ] lfigdopath +0.15 cm /lfigsolid /lfigblack +lfigopen +0.15 cm 0.05 cm lfigforward +grestore + +grestore +end end restore +grestore +0 2319(Here)m 240 fnt83 524 2321(G)m 240 fnt82 762 2319(will)m +1193(\207nd)s 1629(the)s 220 fnt35 1982 2316(@GT)m 26(arget)k +240 fnt82 3045 2319(tar)m 4(get)k 3649(within)s 240 fnt83 +4322 2321(X)m 240 fnt82 4478 2319(.)m 4647(This)s 5128(is)s +5343(dangerous,)s 6439(since)s 6991(if)s 7213(the)s 7566(\207rst)s +8002(component)s 0 2031(of)m 240 fnt83 303 2033(G)m 240 fnt82 +568 2031(is)m 811(then)s 1312(promoted)s 2320(via)s 240 fnt83 +2704 2033(X)m 240 fnt82 2952 2031(into)m 3410(the)s 3790(\207rst)s +220 fnt35 4254 2028(@XT)m 26(arget)k 240 fnt82 5319 2031(rather)m +5967(than)s 6469(into)s 6926(the)s 7307(second,)s 240 fnt83 +8111 2033(G)m 240 fnt82 8284 2031(')m 13(s)k 8527(tar)s 4(get)k +0 1743(will)m 438(not)s 817(appear)s 1526(later)s 2022(in)s +2277(the)s 2638(\207nal)s 3130(printed)s 3878(document)s 4894(than)s +5376(its)s 5664(in)s 9(v)k 4(ocation)k 6731(point,)s +7342(as)s 7605(required)s 8471(by)s 8778(the)s 220 fnt35 +0 1452(into)m 240 fnt82 406 1455(clause.)m 480 1081(Accordingly)m 15(,)k +1753(when)s 2313(such)s 2794(a)s 2944(tar)s 4(get)k +3528(is)s 3722(chosen,)s 4478(tw)s 2(o)k 4873(special)s +5575(g)s 1(alle)k 3(y)k 6194(inde)s 3(x)k 3(es)k +6954(are)s 7286(inserted)s 8084(and)s 8472(link)s 2(ed)k +0 793(together:)m 898(a)s 240 fnt83 1074 795(PRECEDES)m 240 fnt82 +2327 793(inde)m 3(x)k 2921(at)s 240 fnt83 3163 795(G)m +240 fnt82 3336 793(')m 13(s)k 3555(in)s 9(v)k 4(ocation)k +4619(point,)s 5227(and)s 5641(a)s 240 fnt83 5817 795(FOLLO)m 12(WS)k +240 fnt82 6952 793(inde)m 3(x)k 7546(at)s 7787(the)s +8145(\207rst)s 8586(com)s 8998(-)s 0 505(ponent)m 720(of)s +240 fnt83 1000 507(G)m 240 fnt82 1173 505(.)m 1346(The)s +1783(algorithm)s 2781(checks)s 3492(before)s 4167(promoting)s 5226(an)s 3(y)k +240 fnt83 5632 507(FOLLO)m 12(WS)k 240 fnt82 6767 505(inde)m 3(x)k +7360(that)s 7787(its)s 8072(promotion)s +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 28 29 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Italic +%%+ font Helvetica +%%+ font Symbol +/pgsave save def +%%IncludeResource: font Helvetica +/Helveticafnt35 vec2 /Helvetica LoutRecode +/fnt35 { /Helveticafnt35 LoutFont } def +%%IncludeResource: font Symbol +/fnt78 { /Symbol LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +0 LoutMargSet +grestore +4291 13844(-)m 4419(28)s 4706(-)s 0 13253(w)m 2(ould)k +661(not)s 1033(place)s 1600(it)s 1798(earlier)s 2472(than)s +2948(the)s 3302(corresponding)s 240 fnt83 4730 13255(PRECEDES)m 240 fnt82 +5981 13253(inde)m 3(x)k 6571(in)s 6820(the)s 7175(same)s +7728(g)s 1(alle)k 3(y)k 15(,)k 8406(and)s +8817(re)s 8998(-)s 0 12965(jects)m 486(the)s 831(component)s +1952(if)s 2166(it)s 2355(w)s 2(ould.)k 3113(Since)s +240 fnt83 3697 12967(PRECEDES)m 240 fnt82 4939 12965(and)m 240 fnt83 +5340 12967(FOLLO)m 12(WS)k 240 fnt82 6463 12965(inde)m 3(x)k 3(es)k +7236(are)s 7580(rarely)s 8187(used,)s 8730(this)s 0 12677(check)m +619(can)s 1008(be)s 1290(implemented)s 2596(by)s 2890(linear)s +3493(search.)s 480 12303(When)m 1114(tw)s 2(o)k 1529(components)s +2742(are)s 3094(separated)s 4060(by)s 220 fnt35 4359 12300(/)m +240 fnt82 4423 12303(,)m 4535(as)s 4790(opposed)s 5652(to)s +5897(the)s 6250(more)s 6802(usual)s 220 fnt35 7367 12300(//)m +240 fnt82 7492 12303(,)m 7604(each)s 8105(in\210uences)s 0 12015(the)m +358(horizontal)s 1393(position)s 2232(of)s 2514(the)s 2872(other)s 13(.)k +3525(Because)s 4389(of)s 4671(this,)s 5133(the)s 240 fnt83 +5492 12017(SUSPEND)m 240 fnt82 6596 12015(action)m 7248(is)s 7468(in)s +7722(f)s 2(act)k 8148(tak)s 2(en)k 8732(if)s +8960(a)s 0 11727(recepti)m 6(v)k 3(e)k 930(symbol)s +1698(occurs)s 2382(in)s 2633(an)s 3(y)k 3039(component)s +4171(separated)s 5140(from)s 5672(the)s 6028(\207rst)s 6468(by)s +220 fnt35 6770 11724(/)m 240 fnt82 6903 11727(operators)m 7851(only)s 15(.)k +8435(Ag)s 1(ain,)k 0 11439(linear)m 603(search)s 1270(forw)s 2(ards)k +2168(to)s 2407(the)s 2755(\207rst)s 220 fnt35 3186 11436(//)m +240 fnt82 3371 11439(suf\207ces)m 4152(for)s 4490(this)s 4886(check.)s +480 11065(A)m 740(good)s 1308(illustration)s 2430(of)s 2731(these)s +3308(unusual)s 4139(cases)s 4724(is)s 4964(af)s 6(forded)k +5856(by)s 6180(the)s 220 fnt35 6558 11062(@Align)m 240 fnt82 +7344 11065(symbols)m 8223(from)s 8778(the)s 0 10777(standard)m 867(DocumentLayout)s +2600(package.)s 3546(These)s 4171(are)s 4516(used)s 5012(to)s +5249(produce)s 6074(displayed)s 7047(equations,)s 8069(aligned)s 8829(on)s +0 10489(their)m 497(equals)s 1159(signs)s 1702(despite)s 2435(being)s +3020(separated)s 3980(by)s 4274(arbitrary)s 5149(body)s 5683(te)s 3(xt.)k +480 10115(The)m 220 fnt35 921 10112(@Align)m 240 fnt82 1689 10115(symbols)m +2551(are)s 2911(packaged)s 3886(neatly)s 4537(for)s 4889(the)s +5250(con)s 9(v)k 3(enience)k 6503(of)s 6787(the)s +7148(non-e)s 3(xpert)k 8254(user)s 9(,)k 8764(b)s 4(ut)k +0 9827(we)m 335(will)s 761(sho)s 6(w)k 1315(just)s +1720(the)s 2067(essence)s 2853(of)s 3124(the)s 3472(implementation)s +5029(here.)s 5603(First,)s 6147(an)s 220 fnt35 6430 9824(@AlignList)m +240 fnt82 7536 9827(g)m 1(alle)k 3(y)k 8170(is)s +8379(created)s 0 9539(which)m 642(contains)s 1490(an)s 1773(in\207nite)s +2506(supply)s 3199(of)s 220 fnt35 3470 9536(@AlignPlace)m 240 fnt82 +4779 9539(recepti)m 6(v)k 3(e)k 5701(symbols)s 6550(separated)s +7510(by)s 220 fnt35 7804 9536(/)m 240 fnt82 7928 9539(operators:)m +4777 3207 0 3207 240 288 60 480 5992 LoutGr2 +grestore save gsave 200 dict begin lfigdict begin +grestore +240 fnt83 0 3044(body)m 522(te)s 4(xt)k 926(galle)s 7(y)k +gsave +0 161 translate +240 fnt82 2039 2720 226 2494 240 288 60 LoutGraphic +gsave + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigbox ] lfigdopath +pop pop +grestore +1587 1418 0 1314 240 288 60 226 226 LoutGr2 +currentdict end 200 dict begin begin +grestore +838 208 0 104 240 288 60 0 1210 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfignoline [ lfigbox ] lfigdopath +pop pop +grestore +220 fnt35 0 47(@Galle)m 4(y)k +grestore +(A) lfigpromotelabels +grestore + +grestore +gsave +2889 1638 translate +240 fnt82 1888 209 0 105 240 288 60 LoutGraphic +gsave +currentdict end 200 dict begin begin +grestore +1046 209 0 105 240 288 60 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfignoline [ lfigbox ] lfigdopath +pop pop +grestore +220 fnt35 0 48(@AlignList)m + +grestore +(B) lfigpromotelabels +grestore +gsave +2889 0 translate +240 fnt82 1888 1525 226 1195 240 288 60 LoutGraphic +gsave + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigbox ] lfigdopath +pop pop +grestore +220 fnt35 226 1138(@AlignPlace)m 226 850(@AlignPlace)m 226 562(...)m 226 274(@EndAlignList)m + +grestore +gsave +0 0 translate +240 fnt82 0 0 0 0 240 288 60 LoutGraphic +gsave + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ A@E 0.2 cm 0 lfigpadd lfigprevious /FROM lfigpointdef +0.2 cm 0 B@W lfigpsub lfigprevious /TO lfigpointdef ] lfigdopath +0.15 cm /lfigsolid /lfigblack +lfigopen +0.15 cm 0.05 cm lfigforward +grestore + +grestore +end end restore +grestore +0 5541(Then)m 549(equations)s 1517(lik)s 2(e)k 1471 214 393 105 240 288 60 480 4987 LoutGr2 +grestore save gsave 200 dict begin lfigdict begin +grestore +1471 214 393 105 240 288 60 0 0 LoutGr2 +/lfiglightgrey [ lfigbox ] gsave lfigpaintpath grestore +0.015 cm setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigbox ] lfigdopath +pop pop +grestore +1471 214 393 105 240 288 60 0 0 LoutGr2 + +0.015 cm setlinewidth lfiground setlinecap +0.15 cm /lfigdashed [ -0.3 cm ymark xsize ymark 0.3 cm 0 lfigpadd +[] +xmark -0.3 cm xmark ysize 0 0.3 cm lfigpadd ] lfigdopath +pop pop +grestore +240 fnt83 +0 53(f)m 240 fnt78 113 45(\()m 240 fnt83 197 53(x)m +240 fnt78 315 45(\))m 477(=)s 240 fnt83 690 53(g)m +240 fnt78 816 45(\()m 240 fnt83 900 53(x)m 240 fnt78 +1018 45(\))m 1156(+)s 1357(2)s +grestore + +grestore +end end restore +grestore +0 4536(are)m 358(created)s +1117(and)s 1532(sent)s 1989(to)s 220 fnt35 2239 4533(@AlignPlace&&f)m 6(ollo)k 3(wing)k +240 fnt82 4690 4536(tar)m 4(gets.)k 5498(The)s 3(y)k +6052(collect)s 6760(in)s 7014(the)s 220 fnt35 7374 4533(@AlignList)m +240 fnt82 8492 4536(g)m 1(alle)k 3(y)k 0 4248(and)m +404(are)s 751(aligned)s 1513(there:)s 5836 3212 0 3212 240 288 60 480 696 LoutGr2 +grestore save gsave 200 dict begin lfigdict begin +grestore +240 fnt83 0 3049(body)m +522(te)s 4(xt)k 926(galle)s 7(y)k gsave +0 166 translate +240 fnt82 2039 2720 226 2494 240 288 60 LoutGraphic +gsave + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigbox ] lfigdopath +pop pop +grestore +1587 1418 0 1314 240 288 60 226 226 LoutGr2 +currentdict end 200 dict begin begin +grestore +838 208 0 104 240 288 60 0 1210 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfignoline [ lfigbox ] lfigdopath +pop pop +grestore +220 fnt35 +0 47(@Galle)m 4(y)k +grestore +(A) lfigpromotelabels +grestore + +grestore +gsave +2889 1643 translate +240 fnt82 2947 209 0 105 240 288 60 LoutGraphic +gsave +currentdict end 200 dict begin begin +grestore +1046 209 0 105 240 288 60 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfignoline [ lfigbox ] lfigdopath +pop pop +grestore +220 fnt35 0 48(@AlignList)m +grestore +(B) lfigpromotelabels +grestore +gsave +2889 0 translate +240 fnt82 2947 1530 1285 1195 240 288 60 LoutGraphic +gsave + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigbox ] lfigdopath +pop pop +grestore +2495 1078 1059 969 240 288 60 226 226 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigdashed [ xmark ysize lfigprevious /FROM lfigpointdef +xmark 0 lfigprevious /TO lfigpointdef ] lfigdopath +pop pop +grestore +240 fnt83 +666 917(f)m 240 fnt78 779 909(\()m 240 fnt83 863 917(x)m +240 fnt78 981 909(\))m 1143(=)s 240 fnt83 1356 917(g)m +240 fnt78 1482 909(\()m 240 fnt83 1566 917(x)m 240 fnt78 +1684 909(\))m 1822(+)s 2023(2)s 240 fnt83 0 629(f)m +240 fnt78 113 621(\()m 240 fnt83 197 629(x)m 240 fnt78 +315 621(\))m 453(-)s 240 fnt83 653 629(g)m 240 fnt78 +779 621(\()m 240 fnt83 863 629(x)m 240 fnt78 981 621(\))m +1143(=)s 1356(2)s 220 fnt35 1059 336(...)m 1059 48(@EndAlignList)m + +grestore + +grestore +gsave +0 0 translate +240 fnt82 0 0 0 0 240 288 60 LoutGraphic +gsave + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ A@E 0.2 cm 0 lfigpadd lfigprevious /FROM lfigpointdef +0.2 cm 0 B@W lfigpsub lfigprevious /TO lfigpointdef ] lfigdopath +0.15 cm /lfigsolid /lfigblack +lfigopen +0.15 cm 0.05 cm lfigforward +grestore + +grestore +end end restore +grestore + +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 29 30 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Helvetica +%%+ font Times-Italic +%%+ font Times-Bold +%%+ font Symbol +/pgsave save def +%%IncludeResource: font Helvetica +/Helveticafnt35 vec2 /Helvetica LoutRecode +/fnt35 { /Helveticafnt35 LoutFont } def +%%IncludeResource: font Symbol +/fnt78 { /Symbol LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +1 LoutMargSet +grestore +4289 13844(-)m 4417(29)s 4708(-)s 0 13251(The)m 220 fnt35 +450 13248(@AlignList)m 240 fnt82 1579 13251(g)m 1(alle)k 3(y)k +2236(does)s 2749(not)s 3138(\210ush,)s 3734(because)s 4570(its)s +4868(\207rst)s 5322(component)s 6469(is)s 6702(connected)s 7753(to)s +8015(a)s 8204(recepti)s 6(v)k 3(e)k 0 12963(symbol)m +760(by)s 220 fnt35 1054 12960(/)m 240 fnt82 1178 12963(operators.)m +480 12589(After)m 1048(the)s 1402(last)s 1799(equation,)s 2736(an)s +3025(empty)s 3683(forcing)s 4432(g)s 1(alle)k 3(y)k +5072(is)s 5288(sent)s 5739(to)s 220 fnt35 5984 12586(@EndAlignList)m +240 fnt82 7420 12589(,)m 7533(deleting)s 8362(the)s 8716(tw)s 2(o)k +0 12301(remaining)m 1028(recepti)s 6(v)k 3(e)k 1957(symbols)s +2813(from)s 3344(the)s 220 fnt35 3699 12298(@AlignList)m 240 fnt82 +4812 12301(g)m 1(alle)k 3(y)k 5452(and)s 5863(permitting)s +6918(it)s 7117(to)s 7363(\210ush.)s 240 fnt83 8000 12303(FOLLO)m 12(WS)k +240 fnt82 0 12013(inde)m 3(x)k 3(es)k 797(ensure)s +1499(that)s 1939(each)s 2456(equation)s 3359(\207nds)s 3898(a)s +4086(tar)s 4(get)k 4707(placed)s 5410(in)s 5675(the)s +6045(body)s 6601(te)s 3(xt)k 7038(just)s 7465(after)s +7983(its)s 8281(point)s 8855(of)s 0 11725(in)m 9(v)k 4(ocation,)k +1090(so)s 1341(the)s 1675(equations)s 2628(return,)s 3290(aligned,)s +4087(to)s 4311(approximately)s 5732(the)s 6065(points)s 6686(where)s +7312(the)s 3(y)k 7760(were)s 8265(in)s 9(v)k 4(ok)k 2(ed.)k +0 11437(Notice)m 703(that)s 1131(the)s 1489(\210ushing)s 2324(of)s +2605(body)s 3149(te)s 3(xt)k 3574(is)s 3794(suspended)s +4860(until)s 5363(the)s 5721(list)s 6082(of)s 6363(equations)s +7341(is)s 7561(completed,)s 8674(as)s 8934(it)s 0 11149(must)m +513(be,)s 833(since)s 1367(the)s 1702(horizontal)s 2713(position)s +3528(of)s 3786(the)s 4121(\207rst)s 4539(equation)s 5407(cannot)s +6092(be)s 6361(kno)s 6(wn)k 7052(until)s 7532(the)s +7867(last)s 8245(equation)s 0 10861(is)m 210(added)s 840(to)s +1079(the)s 1427(list.)s 480 10487(Layout)m 1262(quality)s 2025(can)s +2459(occasionally)s 3753(be)s 4080(impro)s 3(v)k 3(ed)k +5094(by)s 5433(rejecting)s 6366(a)s 6577(component)s 7746(that)s +8209(could)s 8844(be)s 0 10199(promoted)m 978(\211)s 1161(for)s +1502(e)s 3(xample,)k 2419(a)s 2588(component)s 3715(of)s +3989(body)s 4526(te)s 3(xt)k 4944(that)s 5365(carries)s +6054(a)s 6223(footnote)s 7079(too)s 7441(lar)s 4(ge)k +7973(to)s 8215(\207t)s 8477(on)s 8778(the)s 0 9911(current)m +747(page.)s 1374(Since)s 1972(Lout)s 2496(does)s 2997(not)s +3374(specify)s 4130(ho)s 6(w)k 4602(breaking)s 5503(decisions)s +6455(are)s 6814(made,)s 7450(be)s 3(yond)k 8222(the)s +8582(basic)s 0 9623(constraints)m 1089(imposed)s 1961(by)s 2258(a)s 4(v)k 6(ailable)k +3169(space)s 3759(and)s 220 fnt35 4166 9620(into)m 240 fnt82 +4575 9623(clauses,)m 5375(in)s 5621(principle)s 6529(such)s 7028(high)s +7514(quality)s 8236(breaking)s 0 9335(could)m 592(be)s 877(added)s +1510(to)s 1752(the)s 2102(implementation)s 3662(with)s 4147(no)s +4443(change)s 5180(to)s 5421(the)s 5772(language.)s 6803(Ho)s 6(we)k 6(v)k 3(er)k 9(,)k +7766(the)s 8117(generality)s 0 9047(of)m 280(the)s 637(g)s 1(alle)k 3(y)k +1280(\210ushing)s 2115(algorithm,)s 3160(and)s 3573(its)s 3859(already)s +4625(considerable)s 5898(comple)s 3(xity)k 15(,)k 7073(mak)s 2(e)k +7654(this)s 8059(a)s 8235(daunting)s 0 8759(problem)m 890(in)s +1167(practice,)s 2062(although)s 2991(a)s 3190(f)s 2(ascinating)k +4323(one.)s 4866(T)s 5008 8711(E)m 5151 8759(X)m 5414([9],)s +5832(with)s 6348(its)s 6657(unnested)s 7600(set)s 7958(of)s +8263(`\210oating)s 0 8471(insertions')m 1041(clearly)s 1744(identi\207able)s 2875(as)s +3125(each)s 3620(page)s 4128(is)s 4338(be)s 3(gun,)k +5028(has)s 5398(the)s 5746(adv)s 6(antage)k 6766(in)s +7009(this)s 7405(respect.)s 240 fnt84 0 7822(5.3.)m 471(Size)s +938(constraints)s 2120(and)s 2561(size)s 2988(adjustments)s 240 fnt82 +480 7346(The)m 893(g)s 1(alle)k 3(y)k 1512(\210ushing)s +2321(algorithm)s 3295(needs)s 3876(to)s 4099(kno)s 6(w)k +4665(the)s 4998(a)s 4(v)k 6(ailable)k 5890(width)s +6477(and)s 6866(height)s 7508(at)s 7725(each)s 8204(recepti)s 6(v)k 3(e)k +0 7058(symbol.)m 869(These)s 1496(symbols)s 2346(may)s 2812(lie)s +3106(within)s 3775(arbitrarily)s 4782(comple)s 3(x)k 5659(objects,)s +6443(and)s 6847(the)s 3(y)k 7311(may)s 7777(compete)s +8644(with)s 0 6770(each)m 492(other)s 1040(for)s 1375(a)s 4(v)k 6(ailable)k +2280(space)s 2864(\(as)s 3189(body)s 3720(te)s 3(xt)k +4132(and)s 4533(footnote)s 5383(tar)s 4(gets)k 6062(do\),)s +6485(so)s 6748(this)s 7141(information)s 8323(must)s 8844(be)s +0 6482(e)m 3(xtracted)k 930(from)s 1454(the)s 1802(tree)s +2215(structure)s 3106(when)s 3682(required.)s 480 6108(F)m 3(or)k +869(e)s 3(xample,)k 1783(consider)s 2653(the)s 3001(object)s +220 fnt35 480 5607(5i @Wide { a / b })m 240 fnt82 0 5113(and)m 406(suppose)s +1236(that)s 1656(the)s 2006(width)s 2610(of)s 220 fnt35 +2883 5110(a)m 240 fnt82 3062 5113(is)m 240 fnt78 3274 5107(1)m +240 fnt83 3382 5115(i)m 240 fnt78 3459 5107(,)m 3572(2)s +240 fnt83 3700 5115(i)m 240 fnt82 3825 5113(\()m 240 fnt78 +3898 5107(1)m 240 fnt83 4006 5115(i)m 240 fnt82 4131 5113(to)m +4372(the)s 4722(left)s 5101(of)s 5374(the)s 5724(mark,)s +240 fnt78 6324 5107(2)m 240 fnt83 6452 5115(i)m 240 fnt82 +6577 5113(to)m 6818(the)s 7168(right\).)s 7864(What)s 8444(then)s +8916(is)s 0 4825(the)m 348(a)s 4(v)k 6(ailable)k +1256(width)s 1858(at)s 220 fnt35 2090 4822(b)m 240 fnt82 +2204 4825(?)m 2423(If)s 2653(we)s 2988(let)s 3286(the)s +3634(width)s 4236(of)s 220 fnt35 4507 4822(b)m 240 fnt82 +4681 4825(be)m 240 fnt83 4963 4827(l)m 240 fnt78 5041 4819(,)m +240 fnt83 5148 4827(r)m 240 fnt82 5246 4825(,)m 5353(we)s +5688(must)s 6213(ha)s 4(v)k 3(e)k 240 fnt78 +480 4277(\()m 564(1)s 240 fnt83 670 4285(i)m 240 fnt78 +817 4277(\255)m 240 fnt83 1038 4285(l)m 240 fnt78 1116 4277(\))m +1254(+)s 1455(\()s 1539(2)s 240 fnt83 1665 4285(i)m +240 fnt78 1812 4277(\255)m 240 fnt83 2033 4285(r)m 240 fnt78 +2143 4277(\))m 2293(\243)s 2503(5)s 240 fnt83 2622 4285(i)m +240 fnt82 0 3732(with)m 482(the)s 240 fnt78 842 3726(\255)m +240 fnt82 1051 3732(\(i.e.)m 1466(max\))s 2006(operations)s 3053(arising)s +3756(from)s 4280(mark)s 4832(alignment.)s 5952(Eliminating)s 7133(them)s +7671(gi)s 6(v)k 3(es)k 240 fnt78 480 3180(1)m +240 fnt83 586 3188(i)m 240 fnt78 721 3180(+)m 922(2)s +240 fnt83 1048 3188(i)m 240 fnt78 1207 3180(\243)m 1417(5)s +240 fnt83 1536 3188(i)m 583 2893(l)m 240 fnt78 721 2885(+)m +922(2)s 240 fnt83 1048 2893(i)m 240 fnt78 1207 2885(\243)m +1417(5)s 240 fnt83 1536 2893(i)m 240 fnt78 571 2597(1)m +240 fnt83 677 2605(i)m 240 fnt78 812 2597(+)m 240 fnt83 +1013 2605(r)m 240 fnt78 1207 2597(\243)m 1417(5)s 240 fnt83 +1536 2605(i)m 674 2310(l)m 240 fnt78 812 2302(+)m 240 fnt83 +1013 2310(r)m 240 fnt78 1207 2302(\243)m 1417(5)s 240 fnt83 +1536 2310(i)m 240 fnt82 0 1799(and)m 428(since)s 1000(we)s +1359(assume)s 2144(that)s 220 fnt35 2587 1796(a)m 240 fnt82 +2788 1799(\207ts)m 3156(into)s 3606(the)s 3978(a)s 4(v)k 6(ailable)k +4911(space,)s 5573(the)s 5946(\207rst)s 6402(inequality)s 7436(may)s +7927(be)s 8234(dropped,)s 0 1511(lea)m 4(ving)k +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 30 31 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Italic +%%+ font Symbol +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Symbol +/fnt78 { /Symbol LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt35 vec2 /Helvetica LoutRecode +/fnt35 { /Helveticafnt35 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +0 LoutMargSet +grestore +4287 13844(-)m 4415(30)s 4710(-)s 240 fnt83 851 13205(l)m +240 fnt78 1013 13197(\243)m 1223(3)s 240 fnt83 1340 13205(i)m +480 12910(l)m 240 fnt78 618 12902(+)m 240 fnt83 819 12910(r)m +240 fnt78 1013 12902(\243)m 1223(5)s 240 fnt83 1342 12910(i)m +819 12622(r)m 240 fnt78 1013 12614(\243)m 1223(4)s 240 fnt83 +1348 12622(i)m 240 fnt82 0 12113(Object)m 220 fnt35 697 12110(b)m +240 fnt82 871 12113(may)m 1337(ha)s 4(v)k 3(e)k +1838(width)s 240 fnt83 2440 12115(l)m 240 fnt78 2518 12107(,)m +240 fnt83 2625 12115(r)m 240 fnt82 2783 12113(for)m 3121(an)s 3(y)k +240 fnt83 3518 12115(l)m 240 fnt82 3644 12113(and)m 240 fnt83 +4048 12115(r)m 240 fnt82 4206 12113(satisfying)m 5188(these)s 5735(inequalities,)s +6943(and)s 7347(no)s 7640(others.)s 480 11739(Here)m 1000(is)s +1210(another)s 1987(e)s 3(xample:)k 220 fnt35 480 11238(5i @High { a /2ix b })m +240 fnt82 0 10737(Assuming)m 1024(that)s 220 fnt35 1442 10734(a)m +240 fnt82 1619 10737(has)m 1989(height)s 240 fnt78 2647 10731(1)m +240 fnt83 2753 10739(i)m 240 fnt78 2828 10731(,)m 2935(1)s +240 fnt83 3041 10739(i)m 240 fnt82 3104 10737(,)m 3211(the)s +3559(height)s 240 fnt83 4217 10739(l)m 240 fnt78 4295 10731(,)m +240 fnt83 4402 10739(r)m 240 fnt82 4560 10737(of)m 220 fnt35 +4831 10734(b)m 240 fnt82 5005 10737(must)m 5530(satisfy)s 240 fnt78 +480 10179(1)m 240 fnt83 586 10187(i)m 240 fnt78 721 10179(+)m +922(\()s 1006(\()s 1090(1)s 240 fnt83 1196 10187(i)m +240 fnt78 1331 10179(+)m 240 fnt83 1532 10187(l)m 240 fnt78 +1610 10179(\))m 1760(\255)s 1981(2)s 240 fnt83 2107 10187(i)m +240 fnt78 2182 10179(\))m 2320(+)s 240 fnt83 2521 10187(r)m +240 fnt78 2703 10179(\243)m 2913(5)s 240 fnt83 3032 10187(i)m +240 fnt82 0 9634(This)m 478(time)s 960(the)s 240 fnt78 +1325 9628(\255)m 240 fnt82 1539 9634(operation)m 2501(arises)s 3098(from)s +3624(the)s 3975(mark-to-mark)s 5364(g)s 1(ap)k 5765(mode,)s +6406(which)s 7050(will)s 7479(widen)s 8123(the)s 240 fnt78 +8474 9628(2)m 240 fnt83 8602 9636(i)m 240 fnt82 8728 9634(g)m 1(ap)k +0 9346(if)m 217(necessary)s 1200(to)s 1439(pre)s 6(v)k 3(ent)k +220 fnt35 2207 9343(a)m 240 fnt82 2384 9346(and)m 220 fnt35 +2788 9343(b)m 240 fnt82 2962 9346(from)m 3486(o)s 3(v)k 3(erlapping.)k +4787(This)s 5263(inequality)s 6273(can)s 6662(be)s 6944(re)s 6(written)k +7856(as)s 240 fnt83 851 8795(l)m 240 fnt78 1013 8787(\243)m +288 fnt78 1223 8775(\245)m 240 fnt83 480 8504(l)m 240 fnt78 +618 8496(+)m 240 fnt83 819 8504(r)m 240 fnt78 1013 8496(\243)m +1223(3)s 240 fnt83 1340 8504(i)m 819 8216(r)m 240 fnt78 +1013 8208(\243)m 1223(2)s 240 fnt83 1349 8216(i)m 240 fnt82 +0 7709(In)m 263(general,)s 1080(Lout)s 1599(is)s 1816(designed)s +2732(so)s 3005(that)s 3430(the)s 3785(a)s 4(v)k 6(ailable)k +4700(width)s 5309(or)s 5575(height)s 6240(at)s 6479(an)s 3(y)k +6883(point)s 7442(can)s 7838(be)s 8128(e)s 3(xpressed)k +0 7421(by)m 294(three)s 827(inequalities)s 1979(of)s 2250(the)s +2598(form)s 240 fnt83 851 6870(l)m 240 fnt78 1013 6862(\243)m +240 fnt83 1223 6870(x)m 480 6579(l)m 240 fnt78 618 6571(+)m +240 fnt83 819 6579(r)m 240 fnt78 1013 6571(\243)m 240 fnt83 +1223 6579(y)m 819 6264(r)m 240 fnt78 1013 6256(\243)m 240 fnt83 +1223 6264(z)m 240 fnt82 0 5743(where)m 240 fnt83 641 5745(x)m +240 fnt82 747 5743(,)m 240 fnt83 855 5745(y)m 240 fnt82 +1018 5743(and)m 240 fnt83 1423 5745(z)m 240 fnt82 1575 5743(may)m +2042(be)s 288 fnt78 2325 5725(\245)m 240 fnt82 2523 5743(.)m +2688(W)s 19(e)k 3058(abbre)s 6(viate)k 4104(these)s +4652(three)s 5186(inequalities)s 6339(to)s 240 fnt83 6579 5745(l)m +240 fnt78 6658 5737(,)m 240 fnt83 6768 5745(r)m 240 fnt78 +6953 5737(\243)m 240 fnt83 7166 5745(x)m 240 fnt78 7285 5737(,)m +240 fnt83 7395 5745(y)m 240 fnt78 7510 5737(,)m 240 fnt83 +7620 5745(z)m 240 fnt82 7711 5743(,)m 7819(and)s 8224(we)s +8560(call)s 240 fnt83 8960 5745(x)m 240 fnt78 0 5449(,)m +240 fnt83 107 5457(y)m 240 fnt78 221 5449(,)m 240 fnt83 +328 5457(z)m 240 fnt82 479 5455(a)m 240 fnt83 645 5457(size)m +1056(constr)s 3(aint)k 240 fnt82 2027 5455(.)m 480 5081(The)m +920(tw)s 2(o)k 1343(e)s 3(xamples)k 2307(abo)s 3(v)k 3(e)k +2942(sho)s 6(wed)k 3739(ho)s 6(w)k 4213(to)s +4465(propag)s 1(ate)k 5475(the)s 5836(size)s 6276(constraint)s +288 fnt78 7291 5063(\245)m 240 fnt78 7514 5075(,)m 7659(5)s +240 fnt83 7791 5083(i)m 240 fnt78 7879 5075(,)m 288 fnt78 +8025 5063(\245)m 240 fnt82 8296 5081(for)m 220 fnt35 8647 5078(a / b)m +240 fnt82 0 4793(do)m 6(wn)k 586(one)s 991(le)s 6(v)k 3(el)k +1504(to)s 1746(the)s 2097(child)s 220 fnt35 2636 4790(b)m +240 fnt82 2750 4793(.)m 2917(Basser)s 3617(Lout)s 4132(contains)s +4982(a)s 5151(complete)s 6086(set)s 6414(of)s 6688(general)s +7449(rules)s 7967(for)s 8308(all)s 8604(node)s 0 4505(types,)m +627(too)s 1002(complicated)s 2244(to)s 2499(gi)s 6(v)k 3(e)k +2974(here.)s 3565(Instead,)s 4378(we)s 4729(gi)s 6(v)k 3(e)k +5203(just)s 5624(one)s 6042(e)s 3(xample)k 6921(of)s +7208(ho)s 6(w)k 7685(these)s 8248(rules)s 8779(are)s +0 4217(deri)m 6(v)k 3(ed,)k 815(using)s 1387(the)s +1735(object)s 240 fnt83 480 3721(x)m 168 fnt78 586 3628(1)m +220 fnt35 772 3716(/)m 240 fnt83 956 3721(x)m 168 fnt78 +1062 3628(2)m 220 fnt35 1262 3716(/)m 240 fnt83 1446 3721(.)m +1552(.)s 1658(.)s 220 fnt35 1812 3716(/)m 240 fnt83 +1996 3721(x)m 168 fnt83 2102 3634(n)m 240 fnt82 0 3175(where)m +240 fnt83 640 3177(x)m 168 fnt83 746 3090(j)m 240 fnt82 +852 3175(has)m 1222(width)s 240 fnt83 1824 3177(l)m 168 fnt83 +1890 3090(j)m 240 fnt78 1948 3169(,)m 240 fnt83 2055 3177(r)m +168 fnt83 2127 3090(j)m 240 fnt82 2233 3175(for)m 2571(all)s +240 fnt83 2864 3177(j)m 240 fnt82 2930 3175(.)m 480 2801(Suppose)m +1345(the)s 1689(whole)s 2326(object)s 2966(has)s 3333(width)s +3931(constraint)s 240 fnt83 4929 2803(X)m 240 fnt78 5097 2795(,)m +240 fnt83 5204 2803(Y)m 240 fnt78 5367 2795(,)m 240 fnt83 +5474 2803(Z)m 240 fnt82 5619 2801(,)m 5722(and)s 6123(we)s +6454(require)s 7182(the)s 7526(width)s 8124(constraint)s 0 2513(of)m +240 fnt83 271 2515(x)m 168 fnt83 377 2428(i)m 240 fnt82 +421 2513(.)m 586(Let)s 240 fnt83 965 2515(L)m 240 fnt78 +1185 2507(=)m 240 fnt82 1401 2513(max)m 168 fnt83 1808 2428(j)m +240 fnt83 1917 2515(l)m 168 fnt83 1983 2428(j)m 240 fnt82 +2090 2513(and)m 240 fnt83 2495 2515(R)m 240 fnt78 2723 2507(=)m +240 fnt82 2939 2513(max)m 168 fnt83 3346 2428(j)m 240 fnt83 +3455 2515(r)m 168 fnt83 3527 2428(j)m 240 fnt82 3573 2513(,)m +3681(so)s 3948(that)s 240 fnt83 4367 2515(L)m 240 fnt78 +4512 2507(,)m 240 fnt83 4619 2515(R)m 240 fnt82 4821 2513(is)m +5032(the)s 5381(width)s 5984(of)s 6256(the)s 6605(whole)s +7247(object.)s 7996(W)s 19(e)k 8366(assume)s 240 fnt83 +0 2202(L)m 240 fnt78 145 2194(,)m 240 fnt83 252 2202(R)m +240 fnt78 477 2194(\243)m 240 fnt83 687 2202(X)m 240 fnt78 +855 2194(,)m 240 fnt83 962 2202(Y)m 240 fnt78 1125 2194(,)m +240 fnt83 1232 2202(Z)m 240 fnt82 1377 2200(.)m 1541(Then)s +240 fnt83 2090 2202(x)m 168 fnt83 2196 2115(i)m 240 fnt82 +2300 2200(can)m 2689(be)s 2971(enlar)s 4(ged)k 3848(to)s +4087(an)s 3(y)k 4484(size)s 240 fnt83 4911 2202(l)m +168 fnt83 4977 2115(i)m 240 fnt78 5081 2194(,)m 240 fnt83 +5188 2202(r)m 168 fnt83 5260 2115(i)m 240 fnt82 5364 2200(satisfying)m +240 fnt78 480 1607(\()m 240 fnt83 564 1615(l)m 168 fnt83 +630 1528(i)m 240 fnt78 758 1607(\255)m 240 fnt83 979 1615(L)m +240 fnt78 1124 1607(\))m 1202(,)s 1309(\()s 240 fnt83 +1393 1615(r)m 168 fnt83 1465 1528(i)m 240 fnt78 1593 1607(\255)m +240 fnt83 1814 1615(R)m 240 fnt78 1967 1607(\))m 2117(\243)s +240 fnt83 2327 1615(X)m 240 fnt78 2495 1607(,)m 240 fnt83 +2602 1615(Y)m 240 fnt78 2765 1607(,)m 240 fnt83 2872 1615(Z)m + +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 31 32 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Italic +%%+ font Symbol +%%+ font Times-Bold +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Symbol +/fnt78 { /Symbol LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt35 vec2 /Helvetica LoutRecode +/fnt35 { /Helveticafnt35 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +1 LoutMargSet +grestore +4297 13844(-)m 4425(31)s 4700(-)s 0 13253(which)m 642(e)s 3(xpands)k +1475(to)s 1714(eight)s 2252(inequalities:)s 240 fnt83 917 12702(l)m +168 fnt83 983 12615(i)m 240 fnt78 1123 12694(\243)m 240 fnt83 +1333 12702(X)m 894 12338(L)m 240 fnt78 1123 12330(\243)m 240 fnt83 +1333 12338(X)m 528 12047(l)m 168 fnt83 594 11960(i)m 240 fnt78 +710 12039(+)m 240 fnt83 911 12047(r)m 168 fnt83 983 11960(i)m +240 fnt78 1123 12039(\243)m 240 fnt83 1333 12047(Y)m 503 11675(l)m +168 fnt83 569 11588(i)m 240 fnt78 685 11667(+)m 240 fnt83 +886 11675(R)m 240 fnt78 1123 11667(\243)m 240 fnt83 1333 11675(Y)m +505 11311(L)m 240 fnt78 710 11303(+)m 240 fnt83 911 11311(r)m +168 fnt83 983 11224(i)m 240 fnt78 1123 11303(\243)m 240 fnt83 +1333 11311(Y)m 480 10947(L)m 240 fnt78 685 10939(+)m 240 fnt83 +886 10947(R)m 240 fnt78 1123 10939(\243)m 240 fnt83 1333 10947(Y)m +911 10664(r)m 168 fnt83 983 10577(i)m 240 fnt78 1123 10656(\243)m +240 fnt83 1333 10664(Z)m 886 10300(R)m 240 fnt78 1123 10292(\243)m +240 fnt83 1333 10300(Z)m 240 fnt82 0 9793(Three)m 613(are)s +960(already)s 1717(kno)s 6(wn,)k 2471(and)s 2875(slightly)s +3646(rearranging)s 4800(the)s 5148(others)s 5783(gi)s 6(v)k 3(es)k +240 fnt83 869 9242(l)m 168 fnt83 935 9155(i)m 240 fnt78 +1075 9234(\243)m 240 fnt83 1285 9242(X)m 869 8870(l)m 168 fnt83 +935 8783(i)m 240 fnt78 1075 8862(\243)m 240 fnt83 1285 8870(Y)m +240 fnt78 1508 8862(-)m 240 fnt83 1708 8870(R)m 480 8498(l)m +168 fnt83 546 8411(i)m 240 fnt78 662 8490(+)m 240 fnt83 +863 8498(r)m 168 fnt83 935 8411(i)m 240 fnt78 1075 8490(\243)m +240 fnt83 1285 8498(Y)m 863 8134(r)m 168 fnt83 935 8047(i)m +240 fnt78 1075 8126(\243)m 240 fnt83 1285 8134(Z)m 863 7770(r)m +168 fnt83 935 7683(i)m 240 fnt78 1075 7762(\243)m 240 fnt83 +1285 7770(Y)m 240 fnt78 1508 7762(-)m 240 fnt83 1708 7770(L)m +240 fnt82 0 7182(Therefore)m 997(the)s 1345(width)s 1947(constraint)s +2949(of)s 240 fnt83 3220 7184(x)m 168 fnt83 3326 7097(i)m +240 fnt82 3430 7182(is)m 480 6644(min)m 240 fnt78 861 6638(\()m +240 fnt83 945 6646(X)m 240 fnt78 1113 6638(,)m 240 fnt83 +1220 6646(Y)m 240 fnt78 1443 6638(-)m 240 fnt83 1643 6646(R)m +240 fnt78 1796 6638(\))m 1874(,)s 240 fnt83 1981 6646(Y)m +240 fnt78 2144 6638(,)m 240 fnt82 2251 6644(min)m 240 fnt78 +2632 6638(\()m 240 fnt83 2716 6646(Z)m 240 fnt78 2873 6638(,)m +240 fnt83 2980 6646(Y)m 240 fnt78 3203 6638(-)m 240 fnt83 +3403 6646(L)m 240 fnt78 3548 6638(\))m 240 fnt82 0 6142(The)m +445(size)s 890(constraint)s 1909(of)s 2198(an)s 3(y)k +2613(node)s 3152(can)s 3559(be)s 3858(found)s 4493(by)s +4805(climbing)s 5725(the)s 6091(tree)s 6521(to)s 6778(a)s +240 fnt83 6962 6144(WIDE)m 240 fnt82 7641 6142(or)m 240 fnt83 +7918 6144(HIGH)m 240 fnt82 8604 6142(node)m 0 5854(where)m 636(the)s +980(constraint)s 1978(is)s 2184(tri)s 6(vial,)k 2850(then)s +3315(propag)s 1(ating)k 4506(it)s 4694(back)s 5203(do)s 6(wn)k +5783(to)s 6018(the)s 6362(node,)s 6931(and)s 7331(this)s +7723(is)s 7929(the)s 8272(function)s 0 5566(of)m 271(procedure)s +240 fnt83 1283 5568(Constr)m 3(ained)k 240 fnt82 2530 5566(in)m +2773(Basser)s 3470(Lout.)s 480 5192(After)m 1043(some)s 1604(components)s +2813(ha)s 4(v)k 3(e)k 3314(been)s 3824(promoted)s +4799(into)s 5225(a)s 5391(tar)s 4(get,)k 6038(the)s +6386(sizes)s 6902(stored)s 7544(in)s 7788(its)s 8064(parent)s +8722(and)s 0 4904(higher)m 665(ancestors)s 1598(must)s 2117(be)s +2392(adjusted)s 3241(to)s 3473(re\210ect)s 4122(the)s 4464(increased)s +5417(size.)s 5946(This)s 6415(is)s 6618(done)s 7134(by)s +7421(yet)s 7767(another)s 8537(set)s 8855(of)s 0 4616(recursi)m 6(v)k 3(e)k +925(rules,)s 1500(upw)s 2(ard-mo)k 3(ving)k 3081(this)s +3481(time,)s 4016(which)s 4662(cease)s 5239(as)s 5492(soon)s +6006(as)s 6260(some)s 6825(ancestor')s 13(s)k 7835(size)s +8266(does)s 8760(not)s 0 4328(change.)m 830(These)s 1445(rules)s +1948(are)s 2283(embodied)s 3273(in)s 3504(procedure)s 240 fnt83 +4504 4330(AdjustSize)m 240 fnt82 5541 4328(of)m 5800(Basser)s 6485(Lout.)s +7089(The)s 7505(adjustment)s 8601(must)s 0 4040(be)m 282(done)s +804(before)s 1470(relinquishing)s 2785(control)s 3517(to)s 3756(an)s 3(y)k +4153(other)s 4704(g)s 1(alle)k 3(y)k 15(,)k +5376(b)s 4(ut)k 5738(not)s 6104(after)s 6600(e)s 6(v)k 3(ery)k +7176(component.)s 240 fnt84 0 3391(5.4.)m 471(The)s 926(limited)s +1696(lookahead)s 2802(pr)s 4(oblem)k 240 fnt82 480 2914(Basser)m +1189(Lout)s 1714(assumes)s 2575(that)s 3006(there)s 3552(will)s +3991(be)s 4286(enough)s 5062(internal)s 5859(memory)s 6723(to)s +6975(hold)s 7472(the)s 7833(symbol)s 8606(table)s 0 2626(plus)m +461(a)s 638(fe)s 6(w)k 1055(pages,)s 1719(b)s 4(ut)k +2092(not)s 2469(an)s 2764(entire)s 3374(document.)s 4493(This)s +4980(section)s 5726(describes)s 6677(the)s 7036(consequent)s 8185(problems)s +0 2338(and)m 441(ho)s 6(w)k 940(the)s 3(y)k +1441(were)s 1999(solv)s 3(ed.)k 2763(Other)s 3405(interpreters,)s +4636(notably)s 5446(interacti)s 6(v)k 3(e)k 6538(editors)s +7277(running)s 8113(on)s 8448(virtual)s 0 2050(memory)m 851(systems,)s +1715(w)s 2(ould)k 2370(not)s 2736(necessarily)s 3851(need)s +4361(this)s 4757(assumption.)s 480 1676(Although)m 1434(Basser)s 2122(Lout)s +2625(can)s 3005(read)s 3466(and)s 3861(format)s 4548(an)s 3(y)k +4936(le)s 3(g)k 1(al)k 5442(input,)s 6033(its)s +6300(memory)s 7142(consumption)s 8427(will)s 8844(be)s 0 1388(optimized)m +1004(when)s 1570(the)s 1908(b)s 4(ulk)k 2381(of)s +2642(the)s 2980(document)s 3974(resides)s 4677(in)s 4910(g)s 1(alle)k 3(ys)k +5624(whose)s 6282(tar)s 4(gets)k 6955(can)s 7334(be)s +7606(identi\207ed)s 8557(at)s 8778(the)s 0 1100(moment)m 843(the)s 3(y)k +1304(are)s 1650(encountered.)s 2981(Let)s 3358(us)s 3620(tak)s 2(e)k +4071(the)s 4417(typical)s 5121(e)s 3(xample)k 5982(of)s +6252(a)s 6416(root)s 6860(g)s 1(alle)k 3(y)k +7492(which)s 8133(is)s 8341(a)s 8506(list)s 8855(of)s +0 812(pages,)m 652(a)s 220 fnt35 818 809(@BodyT)m 26(e)k 6(xt)k +240 fnt82 1991 812(g)m 1(alle)k 3(y)k 2625(tar)s 4(geted)k +3448(into)s 3872(the)s 4220(pages,)s 220 fnt35 4872 809(@Chapter)m +240 fnt82 5934 812(g)m 1(alle)k 3(ys)k 6658(tar)s 4(geted)k +7481(into)s 220 fnt35 7905 809(@BodyT)m 26(e)k 6(xt)k +240 fnt82 9019 812(,)m 0 524(and)m 220 fnt35 404 521(@Section)m +240 fnt82 1404 524(g)m 1(alle)k 3(ys)k 2128(tar)s 4(geted)k +2951(into)s 3376(the)s 220 fnt35 3724 521(@Chapter)m 240 fnt82 +4787 524(g)m 1(alle)k 3(ys:)k +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 32 33 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Helvetica +%%+ font Times-Italic +/pgsave save def +%%IncludeResource: font Helvetica +/Helveticafnt35 vec2 /Helvetica LoutRecode +/fnt35 { /Helveticafnt35 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +0 LoutMargSet +grestore +4288 13844(-)m 4416(32)s 4710(-)s 220 fnt35 480 13255(@P)m 8(ageList)k +480 12967(//)m 480 12679(@BodyT)m 26(e)k 6(xt)k 480 12391(//)m +480 12103(@Chapter {)m 480 11815( @Section { ...)m 13( })k 480 11527( @Section { ...)m 13( })k +480 11239( ...)m 480 10951( @Section { ...)m 13( })k 480 10663(})m 480 10375(@Chapter {)m +480 10087( ...)m 480 9799(})m 240 fnt82 0 9305(Basser)m 702(Lout)s +1220(is)s 1436(able)s 1896(to)s 2141(read)s 2616(and)s +3026(process)s 3800(such)s 4302(g)s 1(alle)k 3(ys)k +5032(one)s 5440(paragraph)s 6459(at)s 6697(a)s 6869(time)s +7355(\(strictly)s 15(,)k 8194(from)s 8724(one)s 220 fnt35 +0 9014(//)m 240 fnt82 185 9017(at)m 417(the)s 765(outer)s +1316(le)s 6(v)k 3(el)k 1826(of)s 2097(a)s +2263(g)s 1(alle)k 3(y)k 2897(to)s 3136(the)s +3484(ne)s 3(xt\),)k 4079(as)s 4329(we)s 4664(no)s 6(w)k +5125(describe.)s 480 8643(When)m 1147(the)s 1534(parser)s 2215(encounters)s +3341(the)s 3727(be)s 3(ginning)k 4774(of)s 5083(a)s +5288(g)s 1(alle)k 3(y)k 15(,)k 5998(lik)s 2(e)k +220 fnt35 6449 8640(@Chapter)m 240 fnt82 7550 8643(or)m 220 fnt35 +7848 8640(@Section)m 240 fnt82 8788 8643(,)m 8934(it)s 0 8355(initiates)m +831(a)s 1023(ne)s 6(w)k 1495(g)s 1(alle)k 3(y)k +2155(process.)s 3061(The)s 3515(special)s 4258(recepti)s 6(v)k 3(e)k +5206(symbol)s 220 fnt35 5991 8352(@Input)m 240 fnt82 6784 8355(is)m +7019(substituted)s 8139(for)s 8502(the)s 8876(as)s 0 8067(yet)m +357(unread)s 1071(right)s 1588(parameter)s 2607(of)s 2884(the)s +3237(g)s 1(alle)k 3(y)k 15(.)k 3972(As)s +4294(each)s 4795(paragraph)s 5813(of)s 6090(the)s 6443(right)s +6960(parameter)s 7979(is)s 8195(read,)s 8718(it)s 8916(is)s +0 7779(deleted)m 763(from)s 1302(the)s 1665(parse)s 2240(tree)s +2668(and)s 3087(injected)s 3916(into)s 4356(the)s 4719(g)s 1(alle)k 3(y')k 13(s)k +220 fnt35 5524 7776(@Input)m 240 fnt82 6231 7779(.)m 6410(The)s +6853(g)s 1(alle)k 3(y)k 7502(is)s 7727(then)s +8212(resumed.)s 0 7491(The)m 429(parser)s 1074(thus)s 1526(acts)s +1950(as)s 2202(an)s 2487(e)s 3(xtra)k 3022(concurrent)s +4106(process;)s 4937(it)s 5131(has)s 5503(lo)s 6(w)k +5912(priority)s 15(,)k 6721(so)s 6989(that)s 7409(input)s +7963(is)s 8175(read)s 8646(only)s 0 7203(when)m 597(there)s +1151(is)s 1382(nothing)s 2188(else)s 2636(to)s 2897(do.)s +3322(Since)s 3930(g)s 1(alle)k 3(ys)k 4675(may)s +5162(be)s 5465(nested,)s 6205(a)s 6392(stack)s 6965(of)s +220 fnt35 7257 7200(@Input)m 240 fnt82 8045 7203(symbols)m 8916(is)s +0 6915(needed,)m 781(each)s 1271(with)s 1749(its)s 2020(o)s 6(wn)k +2480(en)s 9(vironment)k 3735(and)s 4135(style.)s 4745(If)s +4971(a)s 5132(g)s 1(alle)k 3(y)k 5762(is)s +5967(encountered)s 7190(for)s 7523(which)s 8161(a)s 8322(tar)s 4(get)k +8916(is)s 0 6627(not)m 370(immediately)s 1622(identi\207able)s 2757(\(a)s +3006(footnote,)s 3914(for)s 4257(e)s 3(xample\),)k 5254(it)s +5450(is)s 5664(read)s 6137(in)s 6385(its)s 6665(entirety)s +7452(and)s 7860(hung)s 8397(in)s 8645(pure)s 0 6339(parse)m +551(tree)s 954(form)s 1468(from)s 1983(an)s 240 fnt83 +2256 6341(UN)m 6(A)k 8(TT)k 12(A)k 7(CHED)k +240 fnt82 3811 6339(inde)m 3(x)k 4386(in)s 4619(the)s +4957(usual)s 5508(w)s 2(ay)k 15(,)k 5987(with)s +6459(an)s 6733(en)s 9(vironment)k 7983(b)s 4(ut)k +8335(without)s 0 6051(a)m 166(style.)s 781(It)s 986(will)s +1412(be)s 1694(\210ushed)s 2444(later)s 2927(when)s 3503(its)s +3779(component)s 4903(is)s 5113(promoted.)s 480 5677(In)m 735(addition)s +1575(to)s 1813(producing)s 2836(a)s 3001(steady)s 3665(\210o)s 6(w)k +4138(of)s 4407(components)s 5614(from)s 6137(input,)s 6735(we)s +7069(must)s 7593(also)s 8030(ensure)s 8708(that)s 0 5389(recepti)m 6(v)k 3(e)k +928(symbols)s 1783(do)s 2083(not)s 2455(unduly)s 3182(block)s +3781(their)s 4285(promotion.)s 5452(The)s 220 fnt35 5886 5386(@F)m 6(ootSect)k +240 fnt82 7044 5389(symbol)m 7810(at)s 8049(the)s 8403(foot)s +8855(of)s 0 5101(each)m 495(page)s 1003(is)s 1213(a)s +1379(typical)s 2084(e)s 3(xample:)k 3057(until)s 3550(it)s +3742(is)s 3952(deleted)s 4700(the)s 5048(page)s 5556(cannot)s +6254(be)s 6536(printed.)s 480 4727(Recepti)m 6(v)k 3(e)k +1501(symbols)s 2368(are)s 2733(e)s 3(xpanded)k 3724(only)s +4222(on)s 4537(demand,)s 5421(so)s 220 fnt35 5705 4724(@F)m 6(ootSect)k +240 fnt82 6874 4727(can)m 7281(be)s 7581(deleted)s 8347(as)s +8616(soon)s 0 4439(as)m 250(we)s 585(can)s 974(pro)s 3(v)k 3(e)k +1570(that)s 1988(it)s 2180(is)s 2390(not)s 2757(w)s 2(anted.)k +3610(The)s 4038(symbol)s 4799(table)s 5319(can)s 5708(tell)s +6067(us)s 6332(that)s 6750(only)s 220 fnt35 7230 4436(@F)m 6(ootNote)k +240 fnt82 8402 4439(g)m 1(alle)k 3(ys)k 0 4151(\(with)m +220 fnt35 555 4148(@F)m 6(ootPlace&&f)k 6(ollo)k 3(wing)k +240 fnt82 2935 4151(tar)m 4(gets\))k 3688(w)s 2(ant)k +4205(it,)s 4438(so)s 4697(it)s 4883(might)s 5494(be)s +5770(possible)s 6604(to)s 6836(deduce)s 7564(that)s 220 fnt35 +7975 4148(@F)m 6(ootSect)k 240 fnt82 0 3863(may)m 466(be)s +748(deleted)s 1496(as)s 1746(soon)s 2256(as)s 2506(body)s +3040(te)s 3(xt)k 3455(enters)s 4076(the)s 4424(follo)s 6(wing)k +5401(page.)s 480 3489(The)m 904(author)s 1571(w)s 2(as)k +1987(unable)s 2677(to)s 2912(mak)s 2(e)k 3479(this)s +3871(w)s 2(ork,)k 4463(so)s 4725(Basser)s 5418(Lout)s +5925(requires)s 6741(the)s 7085(user)s 7538(to)s 7773(identify)s +8565(those)s 0 3201(g)m 1(alle)k 3(ys)k 715(which)s +1348(will)s 1764(carry)s 2299(the)s 2637(b)s 4(ulk)k +3111(of)s 3372(the)s 3711(document)s 4705(\()s 220 fnt35 +4778 3198(@Chapter)m 240 fnt82 5781 3201(,)m 220 fnt35 5879 3198(@Section)m +240 fnt82 6819 3201(,)m 220 fnt35 6916 3198(@BodyT)m 26(e)k 6(xt)k +240 fnt82 8030 3201(\))m 8149(as)s 240 fnt83 8389 3203(for)m 8(cing)k +0 2915(galle)m 7(ys)k 240 fnt82 665 2913(,)m 792(by)s +1107(writing)s 220 fnt35 1871 2910(f)m 6(orce into)k 240 fnt82 +2841 2913(instead)m 3596(of)s 220 fnt35 3888 2910(into)m 240 fnt82 +4315 2913(in)m 4579(their)s 5097(de\207nitions.)s 6291(As)s 6629(described)s +7624(in)s 7888(the)s 8257(pre)s 6(vious)k 0 2625(section,)m +790(when)s 1373(a)s 1546(forcing)s 2296(g)s 1(alle)k 3(y)k +2937(attaches)s 3763(to)s 4009(a)s 4182(tar)s 4(get,)k +4835(all)s 5135(recepti)s 6(v)k 3(e)k 6063(symbols)s +6919(preceding)s 7922(the)s 8277(tar)s 4(get)k 8883(in)s +0 2337(its)m 278(g)s 1(alle)k 3(y)k 914(are)s +1263(deleted,)s 2062(remo)s 3(ving)k 3031(all)s 3326(impediments)s +4614(to)s 4855(\210ushing.)s 5793(F)s 3(or)k 6184(e)s 3(xample,)k +7100(when)s 7678(a)s 7846(forcing)s 8592(body)s 0 2049(te)m 3(xt)k +421(g)s 1(alle)k 3(y)k 1062(enters)s 1690(a)s +1863(ne)s 6(w)k 2317(page,)s 2882(the)s 220 fnt35 +3237 2046(@F)m 6(ootSect)k 240 fnt82 4395 2049(symbol)m 5162(on)s +5466(the)s 5820(preceding)s 6823(page)s 7338(will)s 7771(be)s +8060(deleted.)s 8921(It)s 0 1761(seems)m 629(lik)s 2(ely)k +1219(that)s 1631(a)s 1791(system)s 2509(which)s 3145(could)s +3729(af)s 6(ford)k 4358(to)s 4591(w)s 2(ait)k +5054(until)s 5541(all)s 5828(input)s 6374(w)s 2(as)k +6789(read)s 7252(before)s 7912(deleting)s 8729(an)s 3(y)k +0 1473(recepti)m 6(v)k 3(e)k 922(symbols)s 1771(w)s 2(ould)k +2426(not)s 2792(need)s 3302(forcing)s 4045(g)s 1(alle)k 3(ys.)k +480 1099(Galle)m 3(ys)k 1258(whose)s 1925(tar)s 4(gets)k +2607(are)s 2953(a)s 3118(long)s 3597(w)s 2(ay)k +4047(from)s 4570(their)s 5066(in)s 9(v)k 4(ocation)k +6119(points)s 6755(can)s 7143(be)s 7424(a)s 7589(problem.)s +8549(If)s 8778(the)s 0 811(direction)m 917(is)s 220 fnt35 +1139 808(f)m 6(ollo)k 3(wing)k 240 fnt82 1969 811(,)m +2087(such)s 2595(g)s 1(alle)k 3(ys)k 3330(are)s +3689(held)s 4170(in)s 4425(internal)s 5221(memory)s 6083(for)s +6433(a)s 6610(long)s 7101(time,)s 7643(unless)s 8304(the)s 3(y)k +8779(are)s 0 523(to)m 248(be)s 539(sorted.)s 1296(If)s +1535(the)s 1892(direction)s 2807(is)s 220 fnt35 3026 520(preceding)m +240 fnt82 3977 523(,)m 4093(then)s 4571(either)s 5183(the)s +5540(entire)s 6148(interv)s 3(ening)k 7296(document)s 8309(must)s +8844(be)s +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 33 34 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +%%+ font Times-Italic +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Helvetica +/Helveticafnt35 vec2 /Helvetica LoutRecode +/fnt35 { /Helveticafnt35 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +1 LoutMargSet +grestore +4293 13844(-)m 4421(33)s 4705(-)s 0 13253(held)m 466(in)s +704(memory)s 1551(\(pre)s 6(v)k 3(ented)k 2617(by)s +2907(the)s 3250(tar)s 4(get)k 3844(from)s 4364(\210ushing\),)s +5317(or)s 5572(else)s 5994(some)s 6551(forcing)s 7289(g)s 1(alle)k 3(y)k +7918(prematurely)s 0 12965(deletes)m 714(the)s 1062(tar)s 4(get,)k +1708(lea)s 4(ving)k 2461(the)s 2809(g)s 1(alle)k 3(y)k +3443(bereft.)s 480 12591(The)m 929(typical)s 1655(e)s 3(xample)k +2539(of)s 2832(the)s 3201(latter)s 3771(case)s 4260(occurs)s +4956(when)s 5553(the)s 5922(g)s 1(alle)k 3(y)k +6578(is)s 6809(an)s 7113(entry)s 7680(in)s 7944(the)s +8313(table)s 8855(of)s 0 12303(contents,)m 907(launched)s 1832(backw)s 2(ards)k +2907(from)s 3435(the)s 3786(be)s 3(ginning)k 4797(of)s +5071(a)s 5241(chapter)s 6007(or)s 6269(section.)s 7113(Its)s +7406(tar)s 4(get)k 8008(in)s 8254(the)s 8606(table)s +0 12015(of)m 286(contents)s 1150(will)s 1592(ha)s 4(v)k 3(e)k +2108(been)s 2633(deleted)s 3397(long)s 3891(before,)s 4624(to)s +4879(permit)s 5578(the)s 5941(rest)s 6361(of)s 6648(the)s +7011(document)s 8031(to)s 8286(print,)s 8860(so)s 0 11727(the)m +349(g)s 1(alle)k 3(y)k 985(ultimately)s 2009(emer)s 4(ges)k +2854(as)s 3106(an)s 3391(unattached)s 4487(g)s 1(alle)k 3(y)k +5122(promoted)s 6099(out)s 6467(of)s 6740(the)s 7090(root)s +7537(g)s 1(alle)k 3(y)k 15(.)k 8268(All)s +8630(such)s 0 11439(g)m 1(alle)k 3(ys)k 717(are)s +1056(written)s 1781(to)s 2013(an)s 2288(auxiliary)s 3183(\207le,)s +3588(inde)s 3(x)k 3(ed)k 4390(by)s 4676(the)s +5016(missing)s 5806(tar)s 4(get.)k 6501(On)s 6843(the)s +7184(ne)s 3(xt)k 7645(run,)s 8063(just)s 8460(before)s +0 11151(that)m 418(tar)s 4(get)k 1017(is)s 1227(deleted,)s +2024(the)s 2372(auxiliary)s 3275(\207le)s 3636(is)s 3846(check)s 2(ed)k +4686(and)s 5090(an)s 3(y)k 5487(g)s 1(alle)k 3(ys)k +6211(for)s 6549(it)s 6741(are)s 7088(read)s 7557(in)s +7800(and)s 8204(\210ushed.)s 240 fnt84 0 10502(5.5.)m 471(Horizontal)s +1628(galleys)s 240 fnt82 480 10025(There)m 1108(is)s 1333(a)s +1514(strong)s 2180(analogy)s 3007(between)s 3876(breaking)s 4781(a)s +4962(column)s 5752(of)s 6038(te)s 3(xt)k 6468(into)s +6908(page-sized)s 8003(pieces,)s 8722(and)s 0 9737(breaking)m 912(a)s +1101(paragraph)s 2137(into)s 2585(line-sized)s 3594(pieces.)s 4378(In)s +4657(f)s 2(act,)k 5142(the)s 5513(tw)s 2(o)k +5946(dif)s 6(fer)k 6552(only)s 7055(in)s 7321(direction:)s +8359(v)s 3(ertical)k 0 9449(for)m 343(body)s 883(te)s 3(xt,)k +1351(horizontal)s 2381(for)s 2724(paragraphs.)s 3943(In)s 4205(this)s +4607(section)s 5347(we)s 5687(de\207ne)s 240 fnt83 6334 9451(horizontal)m +7384(galle)s 7(ys)k 240 fnt82 8049 9449(,)m 8162(and)s +8572(sho)s 6(w)k 0 9161(ho)m 6(w)k 493(the)s 3(y)k +989(pro)s 3(vide)k 1806(an)s 2122(unlimited)s 3129(number)s +3953(of)s 4257(paragraph)s 5302(breaking)s 6225(styles,)s 6909(as)s +7192(well)s 7691(as)s 7974(solv)s 3(e)k 8565(some)s +0 8873(other)m 587(problems.)s 1677(Re)s 3(grettably)k 15(,)k +2917(lack)s 3412(of)s 3719(time)s 4235(has)s 4641(pre)s 6(v)k 3(ented)k +5669(their)s 6202(incorporation)s 7583(into)s 8044(the)s 8429(Basser)s +0 8585(Lout)m 512(interpreter)s 13(.)k 480 8211(Imagine)m 1337(a)s +1521(g)s 1(alle)k 3(y)k 2173(whose)s 2859(components)s +4085(are)s 4450(separated)s 5428(by)s 5740(horizontal)s 6782(concatenation)s +8186(operators)s 0 7923(instead)m 725(of)s 986(v)s 3(ertical)k +1742(ones,)s 2278(perhaps)s 3062(indicated)s 3986(by)s 4269(a)s +220 fnt35 4425 7920(hor)m -3(iz)k 3(ontally)k 5582(into)s +240 fnt82 5977 7923(clause.)m 6728(Then)s 7266(all)s 7549(object)s +8182(breaking,)s 0 7635(including)m 957(paragraph)s 1970(breaking,)s 2914(could)s +3504(be)s 3786(replaced)s 4653(by)s 4947(g)s 1(alle)k 3(y)k +5581(component)s 6705(promotion)s 7759(lik)s 2(e)k 8171(this:)s +220 fnt35 480 7134(def @P)m 8(ar)k 2(ag)k 2(r)k 2(aph r)k -3(ight x)k +480 6846({)m 480 6558( def @LinePlace { @Galle)m 4(y })k 480 5982( def @LineList)m 480 5694( {)m +480 5406( @HExpand @LinePlace)m 480 5118( //1vx @LineList)m 480 4830( })m 480 4254( def @P)m 8(ar hor)k -3(iz)k 3(ontally into { @LinePlace&&preceding })k +480 3966( r)m -3(ight x)k 480 3678( { x })m 480 3102( @LineList // @P)m 8(ar { 0.2i @Wide {} &0i x &1r)k -8(t })k +480 2814(})m 240 fnt82 0 2320(The)m 220 fnt35 431 2317(@HExpand)m +240 fnt82 1607 2320(operator)m 9(,)k 2504(which)s 3149(is)s +3362(a)s 3531(primiti)s 6(v)k 3(e)k 4456(of)s +4730(Basser)s 5430(Lout,)s 5992(horizontally)s 7204(e)s 3(xpands)k +8040(the)s 8391(g)s 1(aps)k 8883(in)s 0 2032(its)m +290(right)s 816(parameter)s 1844(until)s 2352(the)s 2715(result)s +3319(\207lls)s 3743(the)s 4105(a)s 4(v)k 6(ailable)k +5028(space,)s 5681(thus)s 6145(implementing)s 7541(line)s 7970(adjustment,)s +0 1744(e)m 3(xcept)k 689(when)s 1274(the)s 1631(parameter)s +2654(contains)s 3511(tab)s 4(ulation)k 4529(g)s 1(aps)k +5027(lik)s 2(e)k 220 fnt35 5447 1741(&1r)m -8(t)k +240 fnt82 5853 1744(,)m 5969(which)s 6620(cause)s 7216(the)s +7573(parameter)s 8596(to)s 8844(be)s 0 1456(already)m 757(e)s 3(xpanded.)k +1836(The)s 2264(result)s 2854(of)s 220 fnt35 480 955(@P)m 8(ar)k 2(ag)k 2(r)k 2(aph { A shor)k -8(t par)k 2(ag)k 2(r)k 2(aph of te)k 6(xt.)k 13( })k +240 fnt82 0 456(w)m 2(ould)k 655(then)s 1124(be)s +1406(something)s 2456(lik)s 2(e)k +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 34 35 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Helvetica +%%+ font Times-Italic +/pgsave save def +%%IncludeResource: font Helvetica +/Helveticafnt35 vec2 /Helvetica LoutRecode +/fnt35 { /Helveticafnt35 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +0 LoutMargSet +grestore +4288 13844(-)m 4416(34)s 4710(-)s 768 13253(A)m 1073(short)s +1687(paragraph)s 480 12965(of)m 751(te)s 3(xt.)k 0 12512(depending)m +1061(on)s 1368(the)s 1726(a)s 4(v)k 6(ailable)k +2645(horizontal)s 3679(space.)s 4384(An)s 4744(unlimited)s 5729(range)s +6326(of)s 6607(paragraph)s 7630(breaking)s 8531(styles)s 0 12224(could)m +590(be)s 872(de\207ned,)s 1684(including)s 2641(ragged)s 3350(right,)s +3908(ragged)s 4617(left,)s 5041(break-and-center)s 9(,)k 6757(and)s +7161(so)s 7427(on.)s 480 11850(In)m 765(Basser)s 1492(Lout,)s +2081(indented)s 2992(paragraphs)s 4122(are)s 4499(produced)s 5477(by)s +5801(preceding)s 6827(them)s 7394(with)s 7906(a)s 8102(horizontal)s +0 11562(concatenation)m 1380(operator)s 9(,)k 2269(for)s 2602(e)s 3(xample)k +220 fnt35 3459 11559(|0.5i)m 240 fnt82 3855 11562(.)m 4014(This)s +4485(has)s 4849(the)s 5192(unfortunate)s 6345(ef)s 6(fect)k +6935(of)s 7201(making)s 7967(an)s 8244(indented)s 0 11274(paragraph)m +1007(into)s 1426(a)s 1586(single)s 2207(component)s 3325(of)s +3590(the)s 3932(enclosing)s 4895(g)s 1(alle)k 3(y)k 15(,)k +5561(so)s 5821(that)s 6233(it)s 6419(will)s 6839(al)s 2(w)k 2(ays)k +7544(be)s 7820(k)s 2(ept)k 8283(together)s 0 10986(on)m +297(one)s 699(page.)s 1315(Horizontal)s 2392(g)s 1(alle)k 3(ys)k +3116(solv)s 3(e)k 3674(this)s 4070(problem)s 4927(with)s +5409(a)s 5575(simple)s 6268(change)s 7002(to)s 220 fnt35 +7241 10983(@LineList)m 240 fnt82 8215 10986(:)m 220 fnt35 480 10485(def @LineList)m +480 10197({)m 480 9909( |0.5i @HExpand @LinePlace)m 480 9621( //1vx @LineList)m 480 9333(})m 240 fnt82 +0 8839(sho)m 6(wing)k 860(the)s 1210(\210e)s 3(xibility)k +2192(that)s 2611(comes)s 3275(from)s 3801(bringing)s 4666(the)s +5016(full)s 5404(po)s 6(wer)k 6057(of)s 6330(the)s +6680(Lout)s 7193(language)s 8115(to)s 8356(bear)s 8829(on)s +0 8551(paragraph)m 1013(layout.)s 1775(It)s 1980(is)s 2190(easy)s +2669(to)s 2908(mak)s 2(e)k 3480(pro)s 3(vision)k +4438(for)s 4776(a)s 4942(tag)s 5287(on)s 5584(the)s +5932(\207rst)s 6363(line.)s 480 8177(Although)m 1451(Basser)s 2158(Lout)s +2679(permits)s 3456(recepti)s 6(v)k 3(e)k 4387(symbols)s +5246(within)s 5923(paragraphs,)s 7089(the)s 3(y)k 7561(are)s +7918(of)s 8198(little)s 8700(use,)s 0 7889(because)m 835(their)s +1355(a)s 4(v)k 6(ailable)k 2286(width)s 2911(is)s +3144(calculated)s 4193(after)s 4711(paragraph)s 5747(breaking,)s 6714(and)s +7141(the)s 7512(incoming)s 8492(g)s 1(alle)k 3(y)k +0 7601(cannot)m 736(spread)s 1456(o)s 3(v)k 3(er)k +1973(more)s 2558(than)s 3065(one)s 3505(line.)s 4066(W)s 9(ith)k +4630(horizontal)s 5692(g)s 1(alle)k 3(ys,)k 6510(such)s +7044(symbols)s 7931(w)s 2(ould)k 8625(ha)s 4(v)k 3(e)k +0 7313(in\207nite)m 733(a)s 4(v)k 6(ailable)k 1641(width,)s +2293(and)s 2697(we)s 3032(could)s 3622(easily)s 4233(produce)s +5060(a)s 5226(\207lled)s 5775(paragraph)s 6788(of)s 7059(footnotes)s +8000(lik)s 2(e)k 8412(this:)s 200 fnt82 480 6838(1)m +240 fnt82 559 6743(See)m 987(Jones)s 1597(and)s 2028(Saunders)s +2983(\(1982\).)s 200 fnt82 3932 6838(2)m 240 fnt82 4027 6743(Or)m +4366(so)s 4659(Jacobsen)s 480 6443(\(1973\))m 1167(asserts.)s 200 fnt82 +2087 6538(3)m 240 fnt83 2174 6445(ibid)m 240 fnt82 2552 6443(,)m +2659(p.)s 2883(327.)s 0 5940(based)m 603(on)s 900(an)s +1183(in\207nite)s 1916(horizontal)s 2940(sequence)s 3873(of)s 220 fnt35 +4144 5937(@F)m 6(ootPlace)k 240 fnt82 5400 5940(symbols)m 6249(inside)s +6876(a)s 7042(horizontal)s 8066(g)s 1(alle)k 3(y)k 15(.)k +480 5566(When)m 1133(body)s 1692(te)s 3(xt)k 2132(is)s +2367(placed)s 3074(on)s 3395(pages,)s 4072(the)s 4445(length)s +5125(of)s 5421(each)s 5940(column)s 6740(v)s 6(aries)k +7380(depending)s 8456(on)s 8778(the)s 0 5278(a)m 4(v)k 6(ailable)k +914(v)s 3(ertical)k 1687(space.)s 2389(Horizontal)s 3472(g)s 1(alle)k 3(ys)k +4203(could)s 4799(analogously)s 6017(produce)s 6850(lines)s 7359(of)s +7636(v)s 6(arying)k 8421(length,)s 0 4990(and)m 404(so)s +670(could)s 1260(\207ll)s 1580(non-rectangular)s 3153(shapes.)s 480 4616(An)m +835(important)s 1829(theoretical)s 2896(bene\207t)s 3612(of)s 3888(horizontal)s +4918(g)s 1(alle)k 3(ys)k 5647(is)s 5862(that)s +6285(the)s 3(y)k 6753(w)s 2(ould)k 7413(permit)s +8102(horizontal)s 0 4328(and)m 403(v)s 3(ertical)k 1168(to)s +1405(be)s 1685(treated)s 2390(in)s 2631(a)s 2795(perfectly)s +3695(symmetrical)s 4928(w)s 2(ay)k 15(,)k 5415(whereas)s +6247(at)s 6477(present)s 7225(paragraph)s 8236(breaking)s 0 4040(is)m +243(horizontal)s 1300(only)s 15(,)k 1851(and)s 2288(g)s 1(alle)k 3(y)k +2955(breaking)s 3878(is)s 4121(v)s 3(ertical)k 4921(only)s 15(.)k +5529(This)s 6038(must)s 6596(simplify)s 7479(the)s 7860(treatment)s +8855(of)s 0 3752(non-European)m 1432(languages)s 2459(which)s 3121(\207ll)s +3460(in)s 3722(unusual)s 4542(directions,)s 5610(although)s 6525(it)s +6736(is)s 6965(not)s 7351(itself)s 7918(suf\207cient)s 8887(to)s +0 3464(implement)m 1082(them.)s 480 3090(There)m 1132(are)s 1519(a)s +1725(fe)s 6(w)k 2170(minor)s 2841(problems)s 3822(with)s +4343(horizontal)s 5407(g)s 1(alle)k 3(ys.)k 6284(First,)s +6867(the)s 7255(syntactic)s 8197(o)s 3(v)k 3(erhead)k +0 2802(of)m 319(enclosing)s 1337(each)s 1880(paragraph)s 2941(in)s +220 fnt35 3233 2799(@P)m 8(ar)k 2(ag)k 2(r)k 2(aph { ...)k 13( })k +240 fnt82 5064 2802(or)m 5371(whate)s 6(v)k 3(er)k +6346(is)s 6604(unacceptable.)s 8065(Permitting)s 0 2514(user)m 4(-de\207ned)k +1234(operators)s 2172(to)s 2409(ha)s 4(v)k 3(e)k +2908(lo)s 6(wer)k 3504(precedence)s 4633(than)s 5100(the)s +5446(white)s 6031(space)s 6616(between)s 7468(tw)s 2(o)k +7876(w)s 2(ords)k 8508(might)s 0 2226(help)m 450(here.)s +1009(Second,)s 1805(the)s 2137(b)s 4(uilt-in)k 2877(paragraph)s +3874(break)s 2(er)k 4632(includes)s 5464(h)s 1(yphenation,)k +6738(and)s 7126(it)s 7302(permits)s 8053(line)s 8451(breaks)s +0 1938(in)m 246(the)s 598(input)s 1153(to)s 1396(determine)s +2410(line)s 2828(breaks)s 3506(in)s 3753(the)s 4105(output,)s +4827(if)s 5048(desired.)s 5905(These)s 6536(features)s 7345(must)s +7874(someho)s 6(w)k 8844(be)s 0 1650(preserv)m 3(ed.)k +1081(Finally)s 15(,)k 1841(we)s 2167(ha)s 4(v)k 3(e)k +2659(e)s 3(xplained)k 3634(ho)s 6(w)k 4086(the)s +4425(Basser)s 5113(Lout)s 5616(interpreter)s 6659(assigns)s 7392(equal)s +7956(width)s 8549(to)s 8778(the)s 0 1362(wider)m 607(columns)s +1473(of)s 1748(tables)s 2359(\(Section)s 3216(2.5\).)s 3763(The)s +4194(equi)s 6(v)k 6(alent)k 5242(situation)s 6126(in)s +6372(v)s 3(ertical)k 7143(g)s 1(alle)k 3(ys)k +7871(occurs)s 8550(when)s 0 1074(tw)m 2(o)k 416(recepti)s 6(v)k 3(e)k +1345(symbols)s 2201(compete)s 3074(for)s 3419(v)s 3(ertical)k +4193(space)s 4786(\(e.g.)s 220 fnt35 5262 1071(@T)m 26(e)k 6(xtPlace)k +240 fnt82 6487 1074(and)m 220 fnt35 6898 1071(@F)m 6(ootSect)k +240 fnt82 7989 1074(\),)m 8182(and)s 8593(there)s 0 786(it)m +187(is)s 392(con)s 9(v)k 3(entional)k 1666(to)s +1900(grant)s 2446(as)s 2691(much)s 3274(as)s 3519(required)s +4368(to)s 4602(the)s 4945(\207rst)s 5371(arri)s 6(v)k 6(al.)k +6140(It)s 6339(is)s 6544(not)s 6905(clear)s 7423(to)s +7657(the)s 8000(author)s 8665(ho)s 6(w)k 0 498(these)m +547(dif)s 6(ferent)k 1422(approaches)s 2549(can)s 2938(be)s +3220(reconciled.)s +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 35 36 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +%%+ font Helvetica +%%+ font Times-Italic +/pgsave save def +%%IncludeResource: font Helvetica +/Helveticafnt35 vec2 /Helvetica LoutRecode +/fnt35 { /Helveticafnt35 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +1 LoutMargSet +grestore +4292 13841(-)m 4420(35)s 4706(-)s 240 fnt84 0 12672(6.)m +291(Cr)s 4(oss)k 926(r)s 4(efer)k 4(ences)k +240 fnt82 480 12240(Cross)m 1064(references,)s 2138(such)s 2622(as)s +2859(`see)s 3286(page)s 3782(57')s 4121(and)s 4512(`see)s +4940(Figure)s 5607(5,)s 16(')k 5871(are)s 6205(a)s +6358(useful)s 6985(b)s 4(ut)k 7334(highly)s 7987(error)s 4(-prone)k +0 11952(feature)m 716(of)s 985(documents.)s 2184(Scribe)s 2848([7])s +3163(introduced)s 4242(a)s 4406(method)s 5180(of)s 5449(k)s 2(eeping)k +6256(them)s 6792(up)s 7083(to)s 7320(date)s 7772(automatically)s +0 11664(as)m 245(the)s 587(document)s 1585(changes:)s 2517(the)s +2859(user)s 3311(gi)s 6(v)k 3(es)k 3852(each)s +4342(referenced)s 5401(entity)s 5993(a)s 6153(tag,)s 6547(and)s +6945(operators)s 7879(are)s 8220(pro)s 3(vided)k 0 11376(that)m +418(return)s 1045(the)s 1393(page)s 1901(or)s 2160(sequence)s +3093(number)s 3884(of)s 4155(the)s 4503(entity)s 5101(with)s +5583(a)s 5749(gi)s 6(v)k 3(en)k 6329(tag.)s +480 11002(A)m 712(cross)s 1256(reference)s 2201(tak)s 2(es)k +2743(an)s 3028(object)s 3674(\(such)s 4251(as)s 4503(a)s +4671(page)s 5181(number\))s 6042(from)s 6568(one)s 6972(point)s +7526(in)s 7771(the)s 8122(document)s 0 10714(and)m 435(copies)s +1128(it)s 1351(to)s 1621(another)s 9(,)k 2467(and)s +2902(this)s 3329(generalization)s 4770(suggests)s 5663(other)s 6245(applications.)s +7595(F)s 3(or)k 8015(e)s 3(xample,)k 8960(a)s +0 10426(running)m 831(header)s 1562(is)s 1806(copied)s 2536(from)s +3094(the)s 3475(title)s 3935(of)s 4240(a)s 4440(nearby)s +5179(chapter)s 9(,)k 6013(and)s 6451(a)s 6651(reference)s +7628(is)s 7872(copied)s 8602(from)s 0 10138(a)m 207(bibliographic)s +1576(database.)s 2604(Making)s 3443(the)s 3832(unity)s 4419(of)s +4731(these)s 5319(applications)s 6566(manifest)s 7489(is)s 7740(an)s +8065(interesting)s 0 9850(language)m 920(design)s 1602(problem.)s 240 fnt84 +0 9201(6.1.)m 471(The)s 926(cr)s 4(oss)k 1494(r)s 4(efer)k 4(ence)k +2496(abstraction)s 240 fnt82 480 8770(In)m 736(de)s 6(v)k 3(eloping)k +1844(the)s 2192(cross)s 2734(reference)s 3677(abstraction,)s 4832(it)s +5024(seemed)s 5799(best)s 6244(to)s 6483(be)s 3(gin)k +7069(with)s 7551(the)s 7899(database)s 8779(ap)s 8998(-)s +0 8482(plication,)m 943(since)s 1490(it)s 1682(is)s 1892(the)s +2240(simplest.)s 3200(Database)s 4132(relations)s 5005(are)s 5352(naturally)s +6255(mapped)s 7071(into)s 7496(Lout)s 8008(de\207nitions:)s 220 fnt35 +480 7981(def @Ref)m 6(erence)k 480 7693( named @T)m 26(ag {})k 480 7405( named @A)m 6(uthor {})k +480 7117( named @Title {})m 480 6829( named @Jour)m -5(nal {})k 480 6541({})m 240 fnt82 +0 6047(The)m 434(set)s 766(of)s 1043(all)s 1343(in)s 9(v)k 4(ocations)k +2490(of)s 220 fnt35 2768 6044(@Ref)m 6(erence)k 240 fnt82 +4055 6047(is)m 4272(a)s 4444(relation)s 5237(whose)s 5911(attrib)s 4(utes)k +6853(are)s 7206(the)s 7561(parameters,)s 8722(and)s 0 5759(whose)m +659(tuples)s 1271(are)s 1608(the)s 1946(in)s 9(v)k 4(ocations.)k +3191(T)s 19(o)k 3481(complete)s 4403(the)s 4741(correspondence,)s +6339(we)s 6665(need)s 7165(only)s 7635(declare)s 8370(that)s +8778(the)s 220 fnt35 0 5468(@T)m 26(ag)k 240 fnt82 +623 5471(parameter)m 1637(is)s 1847(special,)s 2617(serving)s 3374(as)s +3624(the)s 3972(k)s 2(e)k 3(y)k 4367(attrib)s 4(ute.)k +480 5097(F)m 3(ollo)k 6(wing)k 1508(the)s 1856(database)s +2735(model,)s 3440(we)s 3775(ne)s 3(xt)k 4244(need)s +4755(a)s 4921(notation)s 5762(for)s 6100(retrie)s 6(ving)k +7075(the)s 7423(in)s 9(v)k 4(ocation)k 8477(with)s +8960(a)s 0 4809(gi)m 6(v)k 3(en)k 580(tag:)s +220 fnt35 480 4308(@Ref)m 6(erence&&kingston91)k 240 fnt82 0 3809(This)m +240 fnt83 534 3811(cr)m 10(oss)k 1143(r)s 8(efer)k 8(ence)k +240 fnt82 2141 3809(is)m 2410(lik)s 2(e)k 2881(an)s +3223(arro)s 6(w)k 3887(pointing)s 4796(to)s 5094(the)s +5501(in)s 9(v)k 4(ocation.)k 6721(T)s 19(o)k +7080(access)s 7800(its)s 8135(attrib)s 4(utes,)k 0 3521(we)m +335(write)s 220 fnt35 480 3069(@Ref)m 6(erence&&kingston91 @Open { @A)k 6(uthor)k 11(, @Title })k +240 fnt82 0 2570(The)m 220 fnt35 484 2567(@Open)m 240 fnt82 +1347 2570(operator)m 2260(e)s 6(v)k 6(aluates)k 3245(its)s +3578(right)s 4146(parameter)s 5217(in)s 5517(an)s 5857(en)s 9(vironment)k +7174(which)s 7873(includes)s 8778(the)s 0 2282(e)m 3(xported)k +892(parameters)s 1990(of)s 2261(its)s 2537(left.)s 480 1908(An)m +829(in)s 9(v)k 4(ocation)k 1882(is)s 2091(chosen)s +2812(to)s 3050(be)s 3331(a)s 3496(running)s 4293(header)s +4989(because)s 5801(of)s 6071(its)s 6346(proximity)s 7342(to)s +7580(the)s 7927(place)s 8486(where)s 0 1620(it)m 223(is)s +465(used,)s 1043(rather)s 1691(than)s 2192(by)s 2517(its)s +2825(tag.)s 3313(Such)s 3881(proximity)s 4910(is)s 5151(naturally)s +6086(e)s 3(xpressed)k 7116(by)s 7442(tw)s 2(o)k +7884(special)s 8634(tags,)s 220 fnt35 0 1329(preceding)m 240 fnt82 +1049 1332(and)m 220 fnt35 1491 1329(f)m 6(ollo)k 3(wing)k +240 fnt82 2321 1332(;)m 2471(for)s 2848(e)s 3(xample,)k +220 fnt35 3800 1329(@Sym&&f)m 6(ollo)k 3(wing)k 240 fnt82 +5682 1332(will)m 6146(point)s 6737(to)s 7014(the)s 7400(closest)s +8149(follo)s 6(wing)k 0 1044(in)m 9(v)k 4(ocation)k +1083(of)s 220 fnt35 1383 1041(@Sym)m 240 fnt82 2121 1044(in)m +2393(the)s 2771(\207nal)s 3280(printed)s 4045(document.)s 5182(This)s +5688(is)s 5927(much)s 6546(simpler)s 7351(conceptually)s 8657(than)s +0 756(reference)m 937(to)s 1169(the)s 1511(internal)s 2288(state)s +2775(of)s 3039(the)s 3381(document)s 4378(formatter)s 5319(at)s +5544(a)s 5704(critical)s 6413(moment,)s 7298(the)s 7639(usual)s +8192(approach)s 0 468(to)m 239(running)s 1037(headers.)s 480 94(It)m +691(turns)s 1227(out)s 1600(that)s 2025(the)s 2380(abo)s 3(v)k 3(e)k +3009(design)s 3698(solv)s 3(es)k 4350(all)s 4650(the)s +5005(cross)s 5554(referencing)s 6701(problems)s 7649(encountered)s 8883(in)s + +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 36 37 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Helvetica +%%+ font Times-Bold +/pgsave save def +%%IncludeResource: font Helvetica +/Helveticafnt35 vec2 /Helvetica LoutRecode +/fnt35 { /Helveticafnt35 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +0 LoutMargSet +grestore +4288 13842(-)m 4416(36)s 4709(-)s 0 13251(practice)m 825(e)s 3(xcept)k +1521(one,)s 1988(which)s 2645(may)s 3126(be)s 3422(typi\207ed)s +4226(by)s 4535(the)s 4897(problem)s 5769(of)s 6054(\207nding)s +6801(the)s 7164(number)s 7969(of)s 8255(the)s 8618(page)s +0 12963(on)m 303(which)s 952(the)s 1306(chapter)s 2076(whose)s +2750(tag)s 3102(is)s 220 fnt35 3318 12960(intro)m 240 fnt82 +3804 12963(be)m 3(gins.)k 4596(T)s 19(w)k 2(o)k +5074(cross)s 5622(referencing)s 6769(steps)s 7304(are)s 7658(needed,)s +8449(\207rst)s 8887(to)s 220 fnt35 0 12672(@Chapter&&intro)m 240 fnt82 +1714 12675(,)m 1821(then)s 2290(from)s 2814(there)s 3347(to)s +220 fnt35 3586 12672(@P)m 8(age&&preceding)k 240 fnt82 5556 12675(,)m +5663(where)s 6303(the)s 6651(page)s 7159(number)s 7950(is)s +8160(kno)s 6(wn.)k 480 12301(Gi)m 6(v)k 3(en)k +1113(our)s 1492(success)s 2260(so)s 2526(f)s 2(ar)k 9(,)k +2886(this)s 3282(last)s 3673(problem)s 4530(pro)s 3(v)k 3(es)k +5213(to)s 5452(be)s 5734(surprisingly)s 6930(dif\207cult.)s 7850(W)s 19(e)k +8219(\207rst)s 8650(try)s 220 fnt35 480 11800(@Chapter&&intro @Open {)m 480 11512( @P)m 8(age&&preceding @Open { @P)k 8(ageNum })k +480 11224(})m 240 fnt82 0 10730(b)m 4(ut)k 363(this)s +761(f)s 2(ails)k 1222(because)s 220 fnt35 2037 10727(@P)m 8(age&&preceding)k +240 fnt82 4069 10730(is)m 4281(e)s 6(v)k 6(aluated)k +5245(in)s 5490(the)s 5840(present)s 6592(conte)s 3(xt,)k +7402(not)s 7770(in)s 8015(the)s 8365(conte)s 3(xt)k +0 10442(of)m 220 fnt35 271 10439(@Chapter&&intro)m 240 fnt82 2045 10442(as)m +2295(required.)s 3255(So)s 3561(our)s 3940(ne)s 3(xt)k +4409(attempt)s 5185(is)s 220 fnt35 480 9941(def @Chapter)m 480 9653( named @P)m 8(ageNum { @P)k 8(age&&preceding @Open { @P)k 8(ageNum } })k +480 9365( ...)m 240 fnt82 0 8914(with)m 482(the)s 220 fnt35 +830 8911(@P)m 8(age&&preceding)k 240 fnt82 2860 8914(cross)m 3402(reference)s +4345(attached)s 5199(to)s 5438(the)s 5786(chapter;)s 6601(we)s +6936(write)s 220 fnt35 480 8413(@Chapter&&intro @Open { @P)m 8(ageNum })k 240 fnt82 +0 7914(This)m 604(also)s 1170(f)s 2(ails,)k 1813(because)s +2754(parameters)s 3980(are)s 4456(e)s 6(v)k 6(aluated)k +5546(after)s 6170(substitution,)s 7521(so)s 7915(once)s 8552(ag)s 1(ain)k +220 fnt35 0 7623(@P)m 8(age&&preceding)k 240 fnt82 2015 7626(is)m +2209(e)s 6(v)k 6(aluated)k 3156(in)s 3383(the)s +3716(wrong)s 4365(conte)s 3(xt.)k 5215(W)s 19(e)k +5568(could)s 6143(of)s 6398(course)s 7063(de\207ne)s 7688(a)s +7839(ne)s 6(w)k 8270(operator)s 0 7338(speci\207cally)m 1142(for)s +1480(this)s 1876(case:)s 220 fnt35 480 6837(@P)m 8(age&&{ @Preceding @Chapter&&intro })k +240 fnt82 0 6338(or)m 267(some)s 836(such.)s 1448(This)s +1932(is)s 2151(free)s 2585(of)s 2864(the)s 3221(anno)s 2(ying)k +4172(conte)s 3(xt-sensiti)k 6(vity)k 15(,)k 6029(b)s 4(ut)k +6399(it)s 6599(seems)s 7243(quite)s 7785(comple)s 3(x,)k +8722(and)s 0 6050(the)m 348(e)s 3(xpected)k 1253(cross)s +1795(reference)s 220 fnt35 2738 6047(@P)m 8(age&&preceding)k 240 fnt82 +4768 6050(does)m 5258(not)s 5624(appear)s 13(.)k 480 5676(The)m +939(author)s 1642(w)s 2(as)k 2095(lost)s 2532(in)s +2806(these)s 3385(obscurities)s 4503(for)s 4873(some)s 5465(time,)s +6028(and)s 6464(ultimately)s 7518(rescued)s 8338(himself)s 0 5388(by)m +306(looking)s 1103(ahead)s 1731(to)s 1982(the)s 2342(implementation)s +3912(of)s 4195(the)s 220 fnt35 4555 5385(preceding)m 240 fnt82 +5578 5388(and)m 220 fnt35 5994 5385(f)m 6(ollo)k 3(wing)k +240 fnt82 6897 5388(tags,)m 7401(to)s 7652(see)s 8025(if)s +8254(a)s 8433(simple)s 0 5100(e)m 3(xtension)k 971(of)s +1242(it)s 1434(w)s 2(ould)k 2089(solv)s 3(e)k +2647(the)s 2995(problem.)s 3956(This)s 4432(led)s 4782(to)s +5021(the)s 220 fnt35 5369 5097(@T)m 26(agged)k 240 fnt82 +6358 5100(operator:)m 220 fnt35 480 4599(@P)m 8(age&&preceding @T)k 26(agged intro)k +240 fnt82 0 4100(placed)m 686(at)s 922(the)s 1274(be)s 3(ginning)k +2286(of)s 2562(the)s 2914(body)s 3452(of)s 3727(the)s +4079(chapter)s 4847(will)s 5277(attach)s 220 fnt35 5908 4097(intro)m +240 fnt82 6391 4100(as)m 6645(an)s 6933(e)s 3(xtra)k +7471(tag)s 7820(to)s 8063(the)s 8416(closest)s 0 3812(preceding)m +996(in)s 9(v)k 4(ocation)k 2050(of)s 220 fnt35 +2321 3809(@P)m 8(age)k 240 fnt82 3040 3812(,)m 3147(so)s +3413(that)s 220 fnt35 480 3311(@P)m 8(age&&intro @Open { @P)k 8(ageNum })k +240 fnt82 0 2812(yields)m 635(the)s 996(desired)s 1758(page)s +2279(number)s 13(.)k 3174(There)s 3801(is)s 4024(something)s +5087(lo)s 6(w-le)k 6(v)k 3(el)k 6043(and)s +6460(ad)s 6757(hoc)s 7170(about)s 7775(the)s 220 fnt35 +8137 2809(@T)m 26(agged)k 240 fnt82 0 2524(operator)m 9(,)k +894(b)s 4(ut)k 1256(the)s 1604(tw)s 2(o)k +2014(cross)s 2556(references)s 3587(do)s 3880(appear)s 4577(naturally)s 15(,)k +5518(and)s 5922(it)s 6114(w)s 2(orks.)k 240 fnt84 +0 1875(6.2.)m 471(Implementation)s 2159(of)s 2431(cr)s 4(oss)k +2999(r)s 4(efer)k 4(ences)k 240 fnt82 480 1398(Before)m +1185(an)s 1466(object)s 2109(can)s 2496(be)s 2777(sized)s +3324(and)s 3727(printed,)s 4509(the)s 4855(v)s 6(alues)k +5510(of)s 5779(an)s 3(y)k 6175(cross)s 6715(references)s +7745(within)s 8411(it)s 8601(must)s 0 1110(be)m 279(kno)s 6(wn.)k +1086(If)s 1312(the)s 3(y)k 1772(refer)s 2277(to)s +2512(in)s 9(v)k 4(ocations)k 3650(that)s 4064(ha)s 4(v)k 3(e)k +4561(not)s 4924(yet)s 5272(been)s 5777(read,)s 6292(there)s +6821(is)s 7027(a)s 7190(problem.)s 8147(Scribe)s 8809([7])s +0 822(solv)m 3(es)k 649(it)s 844(by)s 1141(capitalizing)s +2311(on)s 2611(the)s 2962(f)s 2(act)k 3381(that)s +3802(documents)s 4893(are)s 5243(formatted)s 6232(repeatedly)s 7284(during)s +7965(the)s 8317(drafting)s 0 534(process.)m 868(All)s 1214(tagged)s +1897(in)s 9(v)k 4(ocations)k 3024(are)s 3358(copied)s +4040(to)s 4266(an)s 4535(auxiliary)s 5425(\207le)s 5772(during)s +6437(the)s 6771(\207rst)s 7189(run,)s 7601(and)s 7992(inde)s 3(x)k 3(ed)k +8788(for)s 0 246(quick)m 593(retrie)s 6(v)k 6(al)k +1429(on)s 1725(the)s 2072(second.)s 2901(A)s 3130(ne)s 6(w)k +3576(auxiliary)s 4478(\207le)s 4839(is)s 5048(written)s 5780(during)s +6457(the)s 6805(second)s 7527(run,)s 7952(for)s 8289(retrie)s 6(v)k 6(al)k + +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 37 38 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Italic +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Helvetica +/Helveticafnt35 vec2 /Helvetica LoutRecode +/fnt35 { /Helveticafnt35 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +1 LoutMargSet +grestore +4291 13844(-)m 4419(37)s 4707(-)s 0 13253(on)m 301(the)s +654(third,)s 1217(and)s 1625(so)s 1896(on.)s 2305(Cross)s +2906(references)s 3941(al)s 2(w)k 2(ays)k 4657(lag)s +5007(one)s 5413(run)s 5794(behind)s 6509(the)s 6862(rest)s +7270(of)s 7546(the)s 7899(document;)s 8960(a)s 0 12965(perfect)m +711(cop)s 2(y)k 1217(may)s 1671(be)s 1942(produced)s +2879(by)s 3161(formatting)s 4210(the)s 4547(same)s 5082(v)s 3(ersion)k +5828(twice,)s 6440(e)s 3(xcept)k 7110(in)s 7341(a)s +7495(fe)s 6(w)k 7889(pathological)s 0 12677(cases)m 555(that)s +973(f)s 2(ail)k 1343(to)s 1582(con)s 9(v)k 3(er)k 4(ge.)k +480 12303(Cross)m 1123(referencing)s 2310(in)s 2600(Lout)s 3159(is)s +3416(implemented)s 4769(on)s 5113(top)s 5519(of)s 5837(a)s +6050(simple)s 6790(database)s 7716(system.)s 8591(Each)s 0 12015(database)m +879(is)s 1089(either)s 1692(writable)s 2530(or)s 2790(readable)s +3655(b)s 4(ut)k 4017(not)s 4383(both)s 4867(at)s +5099(once,)s 5658(and)s 6062(holds)s 6633(a)s 6799(set)s +7124(of)s 7395(k)s 2(e)k 3(y-v)k 6(alue)k +8384(entries:)s 0 11727(the)m 348(k)s 2(e)k 3(ys)k +833(are)s 1180(ASCII)s 1861(strings,)s 2605(and)s 3009(the)s +3358(v)s 6(alues)k 4014(are)s 4361(Lout)s 4873(objects,)s +5658(possibly)s 6510(with)s 6992(en)s 9(vironments,)k 8393(written)s +0 11439(in)m 290(Lout)s 850(source.)s 1685(Operations)s 2833(are)s +3227(pro)s 3(vided)k 4181(for)s 4566(writing)s 5357(an)s +5687(entry)s 15(,)k 6318(con)s 9(v)k 3(erting)k +7429(from)s 8001(writable)s 8887(to)s 0 11151(readable,)m 916(retrie)s 6(v)k 6(al)k +1753(by)s 2047(k)s 2(e)k 3(y)k 15(,)k +2480(and)s 2884(sequential)s 3908(retrie)s 6(v)k 6(al)k +4745(in)s 4988(k)s 2(e)k 3(y)k 5383(order)s 13(.)k +480 10777(The)m 905(implementation,)s 2509(which)s 3148(is)s 3354(quite)s +3885(unsophisticated,)s 5477(emplo)s 2(ys)k 6334(one)s 6732(or)s +6988(more)s 7532(ASCII)s 240 fnt83 8208 10779(database)m 0 10491(\207les)m +240 fnt82 380 10489(,)m 485(containing)s 1545(the)s 1891(v)s 6(alues,)k +2600(and)s 3001(one)s 3401(ASCII)s 240 fnt83 4078 10491(inde)m 4(x)k +4650(\207le)s 240 fnt82 4992 10489(per)m 5354(database,)s 6282(containing)s +7342(the)s 7688(k)s 2(e)k 3(ys.)k 8283(T)s 19(o)k +8580(write)s 0 10201(an)m 283(entry)s 15(,)k 866(the)s +1214(v)s 6(alue)k 1782(is)s 1992(\207rst)s 2423(appended)s +3399(to)s 3638(a)s 3804(database)s 4683(\207le,)s 5095(then)s +5564(a)s 5730(line)s 6144(lik)s 2(e)k 220 fnt35 +480 9700(@Chapter&&intro ch1.ld 57)m 240 fnt82 0 9204(is)m 204(appended)s 1174(to)s +1406(the)s 1748(inde)s 3(x)k 2326(\207le,)s 2731(gi)s 6(ving)k +3384(the)s 3725(\207le)s 4080(and)s 4478(of)s 6(fset)k +5068(where)s 5702(the)s 6043(v)s 6(alue)k 6605(is)s +6809(stored.)s 7550(T)s 19(o)k 7844(con)s 9(v)k 3(ert)k +8602(from)s 0 8916(writable)m 831(to)s 1062(readable,)s 1971(the)s +2311(inde)s 3(x)k 2887(\207le)s 3241(is)s 3443(sorted.)s +4183(Then)s 4725(retrie)s 6(v)k 6(al)k 5554(by)s +5840(k)s 2(e)k 3(y)k 6228(requires)s 7040(a)s +7198(binary)s 7856(search)s 8515(of)s 8778(the)s 0 8628(inde)m 3(x)k +584(\207le)s 945(and)s 1349(one)s 1751(seek)s 2237(into)s +2662(a)s 2828(database)s 3707(\207le,)s 4119(and)s 4523(sequential)s +5547(retrie)s 6(v)k 6(al)k 6384(by)s 6678(k)s 2(e)k 3(y)k +7073(is)s 7283(tri)s 6(vial.)k 480 8254(This)m 945(database)s +1813(system)s 2526(is)s 2725(used)s 3211(in)s 3443(se)s 6(v)k 3(eral)k +4154(w)s 2(ays.)k 4797(F)s 3(or)k 5175(an)s +5447(e)s 3(xternal)k 6257(database,)s 7176(say)s 7538(of)s +7798(bibliographic)s 0 7966(references,)m 1093(the)s 1447(user)s 1912(creates)s +2631(the)s 2985(database)s 3871(\207le)s 4238(of)s 4516(v)s 6(alues)k +5178(\(without)s 6054(en)s 9(vironments\),)k 7540(Lout)s 8058(creates)s +8778(the)s 0 7678(inde)m 3(x)k 587(\207le)s 951(whene)s 6(v)k 3(er)k +1935(it)s 2130(cannot)s 2831(\207nd)s 3265(one,)s 3721(and)s +4128(retrie)s 6(v)k 6(als)k 5057(by)s 5354(k)s 2(e)k 3(y)k +5752(proceed)s 6570(as)s 6823(usual.)s 7495(Cross)s 8095(references)s +0 7390(with)m 476(tags)s 906(other)s 1451(than)s 220 fnt35 +1913 7387(preceding)m 240 fnt82 2918 7390(and)m 220 fnt35 3316 7387(f)m 6(ollo)k 3(wing)k +240 fnt82 4200 7390(are)m 4540(treated)s 5241(as)s 5485(described)s +6453(abo)s 3(v)k 3(e,)k 7119(by)s 7407(writing)s +8144(all)s 8430(tagged)s 0 7102(in)m 9(v)k 4(ocations)k +1131(\(with)s 1681(en)s 9(vironments\))k 3092(to)s 3320(a)s +3475(single)s 4092(database,)s 5011(which)s 5643(is)s 5842(con)s 9(v)k 3(erted)k +6820(to)s 7049(readable)s 7903(at)s 8125(the)s 8462(end)s +8855(of)s 0 6814(the)m 334(run)s 695(for)s 1018(retrie)s 6(v)k 6(als)k +1930(on)s 2212(the)s 2545(ne)s 3(xt)k 3000(run.)s +3468(Sorted)s 4135(g)s 1(alle)k 3(ys,)k 4900(such)s +5382(as)s 5617(inde)s 3(x)k 6186(entries,)s 6915(are)s +7247(written)s 7965(out)s 8316(inde)s 3(x)k 3(ed)k +0 6526(by)m 307(tar)s 4(get)k 920(and)s 1337(k)s 2(e)k 3(y)k +1746(and)s 2163(retrie)s 6(v)k 3(ed)k 3074(sequentially)s +4297(on)s 4607(the)s 4969(ne)s 3(xt)k 5451(run.)s +5948(Unsorted)s 6896(g)s 1(alle)k 3(ys)k 7634(with)s +8130(preceding)s 0 6238(tar)m 4(gets)k 684(which)s 1327(pop)s +1741(of)s 6(f)k 2086(the)s 2435(top)s 2795(of)s +3067(the)s 3416(root)s 3863(g)s 1(alle)k 3(y)k +4498(without)s 5290(\207nding)s 6023(a)s 6190(tar)s 4(get,)k +6837(such)s 7334(as)s 7585(entries)s 8273(in)s 8518(tables)s +0 5950(of)m 274(contents,)s 1181(are)s 1532(treated)s 2242(similarly)s 15(,)k +3186(e)s 3(xcept)k 3870(that)s 4291(the)s 3(y)k +4758(are)s 5108(inde)s 3(x)k 3(ed)k 5922(by)s +6219(tar)s 4(get)k 6821(and)s 7229(a)s 7398(sequence)s +8335(number)s 0 5662(that)m 418(preserv)s 3(es)k 1368(their)s +1865(relati)s 6(v)k 3(e)k 2627(order)s 3191(during)s +3869(the)s 4217(sort.)s 480 5288(When)m 1107(Lout)s 1617(processes)s +2581(a)s 2745(multi-\207le)s 3687(document,)s 4735(one)s 5135(cross)s +5674(reference)s 6615(database)s 7492(\207le)s 7850(is)s 8058(written)s +8788(for)s 0 5000(each)m 504(input)s 1065(\207le,)s 1486(b)s 4(ut)k +1858(the)s 3(y)k 2330(share)s 2899(a)s 3074(common)s +3979(inde)s 3(x)k 4572(\207le.)s 5050(At)s 5358(end)s +5772(of)s 6052(run,)s 6487(the)s 6844(ne)s 6(w)k +7301(inde)s 3(x)k 7894(\207le)s 8264(is)s 8484(sorted)s +0 4712(and)m 404(mer)s 4(ged)k 1176(with)s 1658(the)s +2007(old)s 2371(one)s 2774(in)s 3017(such)s 3514(a)s +3680(w)s 2(ay)k 4132(as)s 4383(to)s 4622(preserv)s 3(e)k +5485(entries)s 6172(relating)s 6955(to)s 7194(\207les)s 7644(not)s +8010(read)s 8480(on)s 8778(the)s 0 4424(current)m 737(run.)s +1221(This)s 1699(pro)s 3(vides)k 2572(some)s 3135(support)s +3914(for)s 4254(piecemeal)s 5278(formatting,)s 6395(b)s 4(ut)k +6758(e)s 6(v)k 3(entually)k 7801(the)s 8150(\207les)s +8601(must)s 0 4136(all)m 293(be)s 575(formatted)s 1561(together)s 13(.)k +480 3762(When)m 1120(a)s 220 fnt35 1297 3759(preceding)m 240 fnt82 +2319 3762(or)m 220 fnt35 2590 3759(f)m 6(ollo)k 3(wing)k +240 fnt82 3491 3762(cross)m 4044(reference)s 4998(is)s 5220(found,)s +5897(it)s 6100(is)s 6321(attached)s 7187(to)s 7437(a)s +7614(g)s 1(alle)k 3(y)k 8259(inde)s 3(x)k +8855(of)s 0 3474(type)m 240 fnt83 474 3476(CR)m 9(OSS_PREC)k +240 fnt82 1973 3474(or)m 240 fnt83 2238 3476(CR)m 9(OSS_FOLL)k +240 fnt82 3653 3474(,)m 3766(together)s 4615(with)s 5103(an)s +5392(automatically)s 6752(generated)s 7745(tag)s 8097(composed)s 0 3186(of)m +258(the)s 593(current)s 1316(\207le)s 1663(name)s 2224(and)s +2615(a)s 2767(sequence)s 3687(number)s 13(.)k 4556(When)s +5172(a)s 5324(tagged)s 6007(in)s 9(v)k 4(ocation)k +7048(is)s 7244(found,)s 7897(it)s 8076(is)s 8272(attached)s +0 2898(to)m 237(a)s 240 fnt83 401 2900(CR)m 9(OSS_T)k 12(ARG)k +240 fnt82 1875 2898(inde)m 3(x.)k 2565(These)s 3190(g)s 1(alle)k 3(y)k +3822(inde)s 3(x)k 3(es)k 4595(are)s 4940(carried)s +5658(along)s 6241(through)s 7040(the)s 7386(dynamic)s 8261(tree,)s +8722(and)s 0 2610(e)m 6(v)k 3(entually)k 1049(pop)s +1470(of)s 6(f)k 1822(the)s 2178(top)s 2545(of)s +2824(the)s 3180(root)s 3633(g)s 1(alle)k 3(y)k 15(,)k +4313(at)s 4553(which)s 5203(point)s 5763(it)s 5963(is)s +6181(easy)s 6668(to)s 6915(determine)s 7934(which)s 8584(cross)s +0 2322(references)m 1029(refer)s 1536(to)s 1773(which)s 2413(in)s 9(v)k 4(ocations,)k +3608(since)s 4153(the)s 4499(inde)s 3(x)k 3(es)k +5273(are)s 5618(no)s 6(w)k 6077(in)s 6318(\207nal)s +6796(printed)s 7529(document)s 8531(order)s 13(.)k 0 2034(Each)m +541(referenced)s 1613(in)s 9(v)k 4(ocation)k 2674(is)s +2891(then)s 3367(written)s 4107(to)s 4353(the)s 4708(cross)s +5257(reference)s 6207(database,)s 7144(multiply)s 8015(inde)s 3(x)k 3(ed)k +8832(by)s 0 1746(the)m 344(generated)s 1327(tags)s 1758(of)s +2025(the)s 2369(associated)s 3404(cross)s 3942(references.)s 5082(On)s +5427(the)s 5771(ne)s 3(xt)k 6236(run,)s 6657(when)s +7229(the)s 7573(same)s 220 fnt35 8115 1743(preceding)m 240 fnt82 +0 1458(and)m 220 fnt35 408 1455(f)m 6(ollo)k 3(wing)k +240 fnt82 1302 1458(cross)m 1848(references)s 2883(are)s 3234(found,)s +3904(chances)s 4716(are)s 5067(good)s 5609(that)s 6031(the)s +6383(same)s 6934(tags)s 7374(will)s 7804(be)s 8090(generated,)s +0 1170(and)m 404(the)s 752(appropriate)s 1896(v)s 6(alues)k +2552(can)s 2941(be)s 3223(retrie)s 6(v)k 3(ed)k +4120(from)s 4644(the)s 4992(database)s 5871(immediately)s 15(.)k +480 796(This)m 982(approach)s 1942(w)s 2(as)k 2389(the)s +2763(genesis)s 3544(of)s 3842(the)s 220 fnt35 4216 793(@T)m 26(agged)k +240 fnt82 5231 796(operator)m 9(,)k 6151(whose)s 6845(implementation)s +8428(is)s 8665(no)s 6(w)k 0 508(immediate:)m 1106(for)s +1436(each)s 220 fnt35 1923 505(@T)m 26(agged)k 240 fnt82 +2903 508(operator)m 3751(we)s 4078(produce)s 4897(one)s 240 fnt83 +5290 510(CR)m 9(OSS_PREC)k 240 fnt82 6775 508(or)m 240 fnt83 +7026 510(CR)m 9(OSS_FOLL)k 240 fnt82 8492 508(g)m 1(alle)k 3(y)k +0 220(inde)m 3(x,)k 645(replacing)s 1596(the)s 1953(generated)s +2949(tag)s 3304(with)s 3795(the)s 4152(right)s 4672(parameter)s +5696(of)s 5976(the)s 220 fnt35 6333 217(@T)m 26(agged)k +240 fnt82 7331 220(operator)m 13(.)k 8288(Nothing)s +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 38 39 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +%%+ font Times-Italic +/pgsave save def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +0 LoutMargSet +grestore +4291 13844(-)m 4419(38)s 4706(-)s 0 13253(more)m 547(is)s +757(required.)s 240 fnt84 0 12460(7.)m 291(Conclusion)s 240 fnt82 +480 12028(Since)m 1054(its)s 1316(public)s 1953(release)s 2657(in)s +2886(October)s 3702(1991,)s 4275(the)s 4609(Basser)s 5292(Lout)s +5790(interpreter)s 6829(has)s 7185(been)s 7680(ported)s 8335(without)s +0 11740(incident)m 819(to)s 1047(a)s 1202(wide)s 1712(v)s 6(ariety)k +2412(of)s 2672(Unix)s 3195(systems)s 3992(and)s 4385(hardw)s 2(are.)k +5425(It)s 5619(w)s 2(as)k 6029(tested)s 6633(e)s 3(xtensi)k 6(v)k 3(ely)k +7753(before)s 8408(release)s 0 11452(on)m 293(its)s 565(o)s 6(wn)k +1025(documentation,)s 2549(and)s 2949(the)s 3293(fe)s 6(w)k +3695(minor)s 4321(b)s 4(ugs)k 4817(which)s 5455(ha)s 4(v)k 3(e)k +5952(emer)s 4(ged)k 6824(since)s 7367(then)s 7832(ha)s 4(v)k 3(e)k +8329(all)s 8617(been)s 0 11164(\207x)m 3(ed)k 534(in)s +777(the)s 1125(second)s 1848(release,)s 2617(scheduled)s 3632(to)s +3871(appear)s 4568(in)s 4811(mid-1992.)s 480 10790(Se)m 6(v)k 3(en)k +1105(substantial)s 2173(packages)s 3093(of)s 3355(de\207nitions)s 4407(are)s +4746(distrib)s 4(uted)k 5813(with)s 6286(Basser)s 6975(Lout.)s +7582(The)s 8001(Document)s 8998(-)s 0 10502(Layout)m 748(package,)s +1649(and)s 2063(its)s 2349(v)s 6(ariants)k 3160(ReportLayout)s +4560(and)s 4974(BookLayout,)s 6289(pro)s 3(vide)k 7083(the)s +7441(standard)s 8320(features)s 0 10214(that)m 411(all)s 696(documents)s +1776(require:)s 2610(pages,)s 3254(columns,)s 4165(paragraphs,)s 5313(headings,)s +6263(footnotes,)s 7252(\210oating)s 8028(\207gures)s 8722(and)s 0 9926(tables,)m +683(chapters)s 1550(and)s 1973(sections,)s 2870(displays)s 3724(and)s +4148(lists,)s 4658(access)s 5339(to)s 5597(bibliographic)s 6945(databases,)s +7987(cross)s 8549(refer)s 8998(-)s 0 9638(ences,)m 623(and)s +1012(so)s 1263(on)s 1545([11].)s 2092(The)s 2505(BookLayout)s +3748(package)s 4572(has)s 4927(e)s 3(xtra)k 5446(features)s +6237(needed)s 6958(by)s 7237(books,)s 7902(including)s 8843(an)s +0 9350(automatically)m 1355(generated)s 2343(table)s 2864(of)s 3136(contents,)s +4041(Roman)s 4791(page)s 5300(numbers)s 6176(for)s 6515(the)s +6864(pref)s 2(atory)k 7792(material,)s 8682(run)s 8998(-)s +0 9062(ning)m 468(page)s 965(headers,)s 1790(odd)s 2197(and)s +2589(e)s 6(v)k 3(en)k 3078(page)s 3574(layouts,)s +4361(and)s 4754(a)s 4908(sorted)s 5539(inde)s 3(x.)k +6220(The)s 6637(Eq)s 6949(package)s 7778(formats)s 8546(equa)s +8998(-)s 0 8774(tions,)m 572(and)s 976(P)s 3(as)k +1356(formats)s 2136(P)s 3(ascal)k 2798(programs)s 3752([10];)s +4262(T)s 19(ab)k 4668(formats)s 5448(tables)s 6056([12];)s +6566(and)s 6970(Fig)s 7342(dra)s 3(ws)k 7961(\207gures)s +8663([6].)s 480 8400(The)m 899(non-e)s 3(xpert)k 1983(user)s +2431(who)s 2888(uses)s 3341(these)s 3879(packages)s 4797(percei)s 6(v)k 3(es)k +5732(a)s 5889(system)s 6603(of)s 6865(a)s 7021(standard)s +7880(quite)s 8404(similar)s 0 8112(to)m 246(other)s 804(fully)s +1317(de)s 6(v)k 3(eloped)k 2357(batch)s 2940(formatters,)s +4034(although)s 4936(the)s 5292(interf)s 2(ace)k 6187(is)s +6405(considerably)s 7688(more)s 8243(coherent)s 0 7824(than,)m 525(say)s 15(,)k +942(the)s 1297(trof)s 6(f)k 1792(f)s 2(amily')k 13(s)k +2630([8].)s 3078(The)s 3512(e)s 3(xpert)k 4173(user)s +4637(percei)s 6(v)k 3(es)k 5588(a)s 5760(system)s +6490(which)s 7139(is)s 7355(radically)s 8251(dif)s 6(ferent)k +0 7536(from)m 547(pre)s 6(vious)k 1440(ones,)s 2009(in)s +2276(which)s 2941(a)s 3131(great)s 3691(deal)s 4168(can)s +4580(be)s 4886(achie)s 6(v)k 3(ed)k 5808(v)s 3(ery)k +6308(quickly)s 15(.)k 7198(T)s 19(o)k 7522(tak)s 2(e)k +7997(an)s 8304(e)s 3(xtreme)k 0 7248(e)m 3(xample,)k +936(P)s 3(as)k 1338(w)s 2(as)k 1781(designed,)s +2761(implemented,)s 4138(tested,)s 4825(and)s 5251(documented)s 6501(in)s +6766(one)s 7190(afternoon.)s 8292(Eq)s 8639(took)s 0 6960(about)m +587(a)s 747(week,)s 1353(b)s 4(ut)k 1709(most)s +2229(of)s 2494(that)s 2906(time)s 3380(w)s 2(as)k +3796(spent)s 4355(in)s 4592(marshalling)s 5767(the)s 6110(v)s 6(ast)k +6543(repertoire)s 7520(of)s 7785(mathematical)s 0 6672(symbols,)m 934(and)s +1367(\207ne-tuning)s 2499(the)s 2876(spacing.)s 3800(Most)s 4381(of)s +4681(the)s 5059(ef)s 6(fort)k 5671(seems)s 6335(to)s +6603(go)s 6925(into)s 7379(designing)s 8392(a)s 8588(good)s +0 6384(interf)m 2(ace;)k 944(most)s 1469(symbols)s 2318(are)s +2665(implemented)s 3971(in)s 4214(just)s 4619(one)s 5021(or)s +5280(a)s 5446(fe)s 6(w)k 5852(lines)s 6354(of)s +6625(Lout.)s 480 6010(A)m 698(group)s 1297(of)s 1556(about)s +2135(20)s 2418(satis\207ed)s 3246(non-e)s 3(xpert)k 4327(users)s +4856(has)s 5214(gro)s 6(wn)k 5864(up)s 6145(within)s +6800(the)s 7136(author')s 13(s)k 7944(department,)s 0 5722(mainly)m +703(Honours)s 1563(students)s 2383(with)s 2849(no)s 3127(in)s 9(v)k 3(estment)k +4208(in)s 4436(older)s 4971(systems)s 5764(to)s 5987(hold)s +6456(them)s 6978(back.)s 7579(Basser)s 8260(Lout)s 8756(has)s +0 5434(been)m 511(adv)s 3(ertised)k 1550(on)s 1849(the)s +2199(Internet)s 3003(ne)s 6(ws)k 3542(as)s 3794(a)s 4(v)k 6(ailable)k +4704(via)s 5058(anon)s 3(ymous)k 240 fnt83 6213 5436(ftp)m +240 fnt82 6458 5434(,)m 6567(so)s 6835(the)s 7185(e)s 3(xtent)k +7828(of)s 8101(its)s 8379(outside)s 0 5146(user)m 469(community)s +1624(is)s 1845(hard)s 2339(to)s 2589(g)s 1(auge.)k +3335(About)s 4005(50)s 4311(people)s 5016(ha)s 4(v)k 3(e)k +5528(mailed)s 6247(comments)s 7292(or)s 7562(questions)s 8528(to)s +8778(the)s 0 4858(author;)m 733(man)s 3(y)k 1327(of)s +1608(these)s 2166(people)s 2871(ha)s 4(v)k 3(e)k +3382(ported)s 4062(the)s 4420(program,)s 5348(written)s 6092(small)s +6674(de\207nitions,)s 7802(and)s 8217(modi\207ed)s 0 4570(the)m 348(standard)s +1216(packages.)s 480 4196(Future)m 1160(w)s 2(ork)k 1711(could)s +2301(usefully)s 3125(be)s 3(gin)k 3711(with)s 4194(the)s +4542(impro)s 3(v)k 3(ements)k 5955(suggested)s 6957(in)s +7200(this)s 7596(paper:)s 8294(o)s 3(v)k 3(erlap)k +8998(-)s 0 3908(ping)m 489(spanning)s 1418(columns,)s 2346(better)s +2960(semantics)s 3964(for)s 4312(a)s 4(v)k 6(ailable)k +5231(space,)s 5880(and)s 6294(especially)s 7314(horizontal)s 8349(g)s 1(alle)k 3(ys.)k +0 3620(Support)m 814(for)s 1147(non-)s 1575(European)s 2544(languages)s +3547(is)s 3752(also)s 4185(needed.)s 5022(Ho)s 6(we)k 6(v)k 3(er)k 9(,)k +5977(the)s 6320(main)s 6850(task)s 7291(is)s 7496(the)s +7839(de)s 6(v)k 3(elopment)k 0 3332(of)m 271(an)s +553(interacti)s 6(v)k 3(e)k 1607(document)s 2610(editor)s +3227(based)s 3829(on)s 4126(Lout.)s 4741(A)s 4971(structure)s +5861(editor)s 6478(similar)s 7199(to)s 7438(Lilac)s 7980([13],)s +8484(which)s 0 3044(already)m 753(has)s 1119(objects)s 1843(and)s +2243(user)s 4(-)k 2705(de\207ned)s 3463(symbols,)s 4364(is)s +4570(en)s 9(visaged;)k 5626(since)s 6168(cross)s 6706(references)s +7733(are)s 8076(easy)s 8550(when)s 0 2756(the)m 343(whole)s +979(document)s 1978(is)s 2182(a)s 4(v)k 6(ailable,)k +3136(the)s 3479(only)s 3954(major)s 4565(ne)s 6(w)k +5007(problem)s 5859(is)s 6064(the)s 6406(treatment)s 7362(of)s +7628(g)s 1(alle)k 3(ys,)k 8402(includ)s 8998(-)s +0 2468(ing)m 359(the)s 707(e)s 3(xpansion)k 1732(and)s +2136(retraction)s 3107(of)s 3378(recepti)s 6(v)k 3(e)k +4300(symbols.)s 240 fnt84 0 1719(Note.)m 240 fnt82 657 1720(Since)m +1253(the)s 1610(abo)s 3(v)k 3(e)k 2240(w)s 2(as)k +2670(written)s 3412(the)s 3768(author)s 4448(has)s 4827(completed)s +5889(a)s 6064(re)s 6(vised)k 6815(v)s 3(ersion)k +7581(of)s 7861(Basser)s 8567(Lout,)s 0 1432(in)m 243(which)s +885(the)s 1233(problem)s 2090(concerning)s 3206(a)s 4(v)k 6(ailable)k +4114(space)s 4701(mentioned)s 5769(in)s 6012(Section)s 6786(2.5)s +7132(has)s 7502(been)s 8011(resolv)s 3(ed.)k 240 fnt84 +0 683(Ackno)m 2(wledgment.)k 240 fnt82 2027 684(The)m 2534(author)s +3283(gratefully)s 4344(ackno)s 6(wledges)k 5824(man)s 3(y)k +6485(v)s 6(aluable)k 7424(discussions)s 8644(with)s 0 396(Douglas)m +862(W)s 22(.)k 1183(Jones,)s 1835(especially)s 2857(during)s +3548(the)s 3909(de)s 6(v)k 3(elopment)k 5209(of)s +5493(the)s 5854(g)s 1(alle)k 3(y)k 6501(abstraction;)s +7674(and)s 8091(also)s 8543(man)s 3(y)k 0 108(helpful)m +732(comments)s 1766(on)s 2063(presentation)s 3288(by)s 3582(the)s +3930(anon)s 3(ymous)k 5083(referee.)s +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 39 40 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +%%+ font Times-Italic +/pgsave save def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +1 LoutMargSet +grestore +4289 13844(-)m 4417(39)s 4708(-)s 240 fnt84 0 12961(Refer)m 4(ences)k +240 fnt82 0 12507(1.)m 480(Kingston,)s 1501(Jef)s 6(fre)k 3(y)k +2244(H..)s 2677(Document)s 3770(F)s 3(ormatting)k 4918(with)s +5436(Lout)s 5888(.)s 6088(T)s 16(ech.)k 6690(Rep.)s +7216(408)s 7659(\(1991\))s 8286(,)s 8429(Basser)s 480 12219(Department)m +1668(of)s 1939(Computer)s 2956(Science,)s 3806(The)s 4234(Uni)s 6(v)k 3(ersity)k +5288(of)s 5559(Sydne)s 3(y)k 15(,)k 6367(Australia)s +7242(.)s 0 11716(2.)m 480(Kingston,)s 1492(Jef)s 6(fre)k 3(y)k +2227(H..)s 2652(A)s 2910(ne)s 6(w)k 3385(approach)s +4347(to)s 4613(document)s 5645(formatting)s 6646(.)s 6838(T)s 16(ech.)k +7432(Rep.)s 7950(412)s 8392(\(1991\))s 9019(,)s 480 11428(Basser)m +1177(Department)s 2365(of)s 2636(Computer)s 3653(Science,)s 4503(The)s +4931(Uni)s 6(v)k 3(ersity)k 5985(of)s 6256(Sydne)s 3(y)k 15(,)k +7064(Australia)s 7939(.)s 0 10925(3.)m 480(Kingston,)s 1491(Jef)s 6(fre)k 3(y)k +2224(H..)s 2647(The)s 3101(Basser)s 3824(Lout)s 4362(Document)s +5445(F)s 3(ormatter)k 6383(,)s 6516(1991)s 6971(.)s +7161(Computer)s 8204(program;)s 480 10637(V)m 26(ersion)k 1287(2)s +1480(publicly)s 2337(a)s 4(v)k 6(ailable)k 3264(in)s +3526(the)s 240 fnt83 3893 10639(pub)m 240 fnt82 4326 10637(subdirectory)m +5595(of)s 5885(the)s 6252(home)s 6859(directory)s 7794(of)s +240 fnt83 8084 10639(ftp)m 240 fnt82 8408 10637(to)m 8667(host)s +240 fnt83 480 10351(ftp.cs.su.oz.au)m 240 fnt82 1924 10349(with)m 2439(login)s +3021(name)s 240 fnt83 3628 10351(anonymous)m 240 fnt82 4808 10349(and)m +5246(no)s 5572(passw)s 2(ord.)k 6671(Distrib)s 4(ution)k +7912(via)s 8297(email)s 8916(is)s 480 10061(a)m 4(v)k 6(ailable)k +1388(for)s 1726(non-)s 240 fnt83 2154 10063(ftp)m 240 fnt82 +2459 10061(sites.)m 3047(All)s 3407(enquiries)s 4334(to)s 4573(jef)s 6(f@cs.su.oz.au.)k +0 9558(4.)m 480(Furuta,)s 1211(Richard,)s 2075(Sco\207eld,)s 2965(Jef)s 6(fre)k 3(y)k 15(,)k +3710(and)s 4113(Sha)s 3(w)k 15(,)k 4734(Alan.)s +5363(Document)s 6419(formatting)s 7480(systems:)s 8402(surv)s 3(e)k 3(y)k 15(,)k +480 9270(concepts,)m 1424(and)s 1828(issues)s 2390(.)s 240 fnt83 +2554 9272(Computing)m 3673(Surve)s 7(ys)k 240 fnt84 4465 9269(14)m +240 fnt82 4699 9270(,)m 4806(417\211472)s 5700(\(1982\))s 6327(.)s +0 8765(5.)m 480(K)s 6(ernighan,)k 1645(Brian)s 2287(W)s 22(.)k +2649(and)s 3107(Cherry)s 15(,)k 3917(Lorinda)s 4789(L..)s +5213(A)s 5497(system)s 6275(for)s 6667(typesetting)s 7824(mathematics)s +9022(.)s 240 fnt83 480 8479(Communications)m 2158(of)s 2439(the)s +2784(A)s 7(CM)k 240 fnt84 3351 8476(18)m 240 fnt82 +3585 8477(,)m 3692(182\211193)s 4576(\(1975\))s 5203(.)s 0 7977(6.)m +480(Kingston,)s 1488(Jef)s 6(fre)k 3(y)k 2218(H..)s +2638(Fig)s 3033(\211)s 3236(a)s 3425(Lout)s 3961(package)s +4824(for)s 5185(dra)s 3(wing)k 6042(\207gures)s 6684(.)s +6871(T)s 16(ech.)k 7460(Rep.)s 7973(411)s 8392(\(1991\))s +9019(,)s 480 7689(Basser)m 1177(Department)s 2365(of)s 2636(Computer)s +3653(Science,)s 4503(The)s 4931(Uni)s 6(v)k 3(ersity)k +5985(of)s 6256(Sydne)s 3(y)k 15(,)k 7064(Australia)s +7939(.)s 0 7184(7.)m 480(Reid,)s 1042(Brian)s 1633(K..)s +2033(A)s 2266(High-)s 2813(Le)s 6(v)k 3(el)k +3406(Approach)s 4410(to)s 4652(Computer)s 5672(Document)s 6732(Production)s +7779(.)s 7946(In)s 240 fnt83 8205 7186(Pr)m 10(oceed)k +240 fnt82 8998 7184(-)m 240 fnt83 480 6898(ings)m 935(of)s +1217(the)s 1564(7th)s 1926(Symposium)s 3074(on)s 3370(the)s +3716(Principles)s 4755(of)s 5037(Pr)s 10(o)k 2(gr)k 3(amming)k +6421(Langua)s 2(g)k 2(es)k 7526(\(POPL\),)s 8376(Las)s +8779(V)s 26(e)k 240 fnt82 8998 6896(-)m 240 fnt83 +480 6610(gas)m 868(NV)s 240 fnt82 1192 6608(,)m 1299(pages)s +1895(24\21131)s 2470(,)s 2577(1980)s 3052(.)s 0 6103(8.)m +480(Joseph)s 1207(F)s 19(.)k 1443(Ossanna.)s 2436(Nrof)s 6(f/T)k 8(rof)k 6(f)k +3605(User')s 13(s)k 4284(Manual)s 5010(.)s 5193(T)s 16(ech.)k +5777(Rep.)s 6285(54)s 6597(\(1976\))s 7224(,)s 7349(Bell)s +7821(Laboratories)s 9019(,)s 480 5815(Murray)m 1251(Hill,)s 1729(NJ)s +2051(07974)s 2645(.)s 0 5310(9.)m 480(Knuth,)s 1186(Donald)s +1949(E..)s 240 fnt83 2319 5312(The)m 2731(T)s 2882 5264(E)m +3033 5312(XBook)m 240 fnt82 3675 5310(.)m 3839(Addison-W)s 19(esle)k 3(y)k +5419(,)s 5526(1984)s 6000(.)s 0 4807(10.)m 480(Kingston,)s +1485(Jef)s 6(fre)k 3(y)k 2212(H..)s 2629(Eq)s +2973(\211)s 3173(a)s 3359(Lout)s 3892(package)s 4752(for)s +5110(typesetting)s 6232(mathematics)s 7430(.)s 7614(T)s 16(ech.)k +8200(Rep.)s 8711(410)s 480 4519(\(1991\))m 1107(,)s 1248(Basser)s +1980(Department)s 3203(of)s 3509(Computer)s 4561(Science,)s 5446(The)s +5909(Uni)s 6(v)k 3(ersity)k 6998(of)s 7304(Sydne)s 3(y)k 15(,)k +8147(Australia)s 9022(.)s 480 4231(\(Contains)m 1461(an)s 1744(appendix)s +2677(describing)s 3726(the)s 4074(P)s 3(as)k 4454(P)s 3(ascal)k +5116(formatter)s 13(.\))k 0 3728(11.)m 480(Kingston,)s 1478(Jef)s 6(fre)k 3(y)k +2198(H..)s 2608(A)s 2851(be)s 3(ginners')k 3903(guide)s +4504(to)s 4756(Lout)s 5208(.)s 5385(T)s 16(ech.)k +5964(Rep.)s 6467(409)s 6891(\(1991\))s 7518(,)s 7638(Basser)s +8348(Depart)s 8998(-)s 480 3440(ment)m 1018(of)s 1289(Computer)s +2306(Science,)s 3156(The)s 3584(Uni)s 6(v)k 3(ersity)k +4638(of)s 4909(Sydne)s 3(y)k 15(,)k 5717(Australia)s +6592(.)s 0 2937(12.)m 480(Kingston,)s 1475(Jef)s 6(fre)k 3(y)k +2193(H..)s 2600(T)s 19(ab)k 3017(\211)s 3207(a)s +3384(Lout)s 3907(package)s 4757(for)s 5106(formatting)s 6177(tables)s +6725(.)s 6900(T)s 16(ech.)k 7476(Rep.)s 7977(413)s +8392(\(1991\))s 9019(,)s 480 2649(Basser)m 1177(Department)s 2365(of)s +2636(Computer)s 3653(Science,)s 4503(The)s 4931(Uni)s 6(v)k 3(ersity)k +5985(of)s 6256(Sydne)s 3(y)k 15(,)k 7064(Australia)s +7939(.)s 0 2146(13.)m 480(Brooks,)s 1279(K)s 6(enneth)k +2141(P)s 26(..)k 2472(Lilac:)s 3068(a)s 3234(tw)s 2(o-vie)k 6(w)k +4183(document)s 5187(editor)s 5744(.)s 240 fnt83 5908 2148(IEEE)m +6490(Computer)s 240 fnt82 7453 2146(,)m 7560(7\21119)s 8091(\(1991\))s +8718(.)s +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Trailer +%%DocumentNeededResources: font Helvetica +%%+ font Symbol +%%+ font Times-Roman +%%+ font Times-Italic +%%+ font Times-Bold +%%DocumentSuppliedResources: procset LoutStartUp +%%+ procset LoutTabPrependGraphic +%%+ procset LoutFigPrependGraphic +%%+ procset LoutBasicSetup +%%+ encoding vec2 +%%Pages: 40 +%%EOF diff --git a/doc/expert/README b/doc/expert/README index a69bf2b..8bf70b6 100644 --- a/doc/expert/README +++ b/doc/expert/README @@ -16,4 +16,4 @@ copy of the final outfile.ps is included. There should be no warning messages on the fifth run. Jeffrey H. Kingston -9 March 2000 +8 April 2000 diff --git a/doc/expert/all b/doc/expert/all index e2a5a78..84b3ae7 100644 --- a/doc/expert/all +++ b/doc/expert/all @@ -10,8 +10,8 @@ Lout Document Formatting System } @Author { Jeffrey H. Kingston } - @Edition { Version 3.18 -February, 2000 } + @Edition { Version 3.20 +April, 2000 } @Publisher { @I { @CopyRight Copyright 1991, 2000, Jeffrey H. Kingston, Basser Department of Computer Science, The University of Sydney 2006, Australia.} } diff --git a/doc/expert/exa_bibl b/doc/expert/exa_bibl index f1e1930..9de5f26 100644 --- a/doc/expert/exa_bibl +++ b/doc/expert/exa_bibl @@ -65,7 +65,7 @@ The right parameter of @@Open may use the exported parameters of the left, and so the result is @ID { @Reference&&strunk1979style @Open -{ @Author, {Slope @Font @Title}. @Publisher, @Year. } &0io +{ @Author, {Slope @Font @Title}. @Publisher, @Year. } |0io } Incidentally, we are not limited to just one database of references; several @@Database symbols can nominate the same symbol, and invocations of @@ -105,7 +105,7 @@ and so on. The following prints the reference whose tag is } It has result @ID { -@RefStyle&&Book @Open { @Style strunk1979style } &0io +@RefStyle&&Book @Open { @Style strunk1979style } |0io } Notice how the @Code "@Style" parameter of @Code "@RefStyle" is given the parameter {@Code strunk1979style}, which it uses to open the appropriate diff --git a/doc/expert/outfile.ps b/doc/expert/outfile.ps new file mode 100644 index 0000000..2f14b30 --- /dev/null +++ b/doc/expert/outfile.ps @@ -0,0 +1,16122 @@ +%!PS-Adobe-3.0 +%%Creator: Basser Lout Version 3.20 (April 2000) +%%CreationDate: Sat Apr 8 14:58:34 2000 +%%DocumentData: Binary +%%DocumentNeededResources: (atend) +%%DocumentSuppliedResources: (atend) +%%DocumentMedia: A4 595 842 0 white () +%%PageOrder: Ascend +%%Pages: (atend) +%%BoundingBox: 0 0 595 842 +%%EndComments + +%%BeginProlog +%%BeginResource: procset LoutStartUp +/m { 3 1 roll moveto show } bind def +/mo { 3 1 roll moveto true charpath stroke } bind def +/s { exch currentpoint exch pop moveto show } bind def +/so { exch currentpoint exch pop moveto true charpath stroke } bind def +/k { exch neg 0 rmoveto show } bind def +/ko { exch neg 0 rmoveto true charpath stroke } bind def +/ul { gsave setlinewidth dup 3 1 roll + moveto lineto stroke grestore } bind def +/in { 1440 mul } def +/cm { 567 mul } def +/pt { 20 mul } def +/em { 120 mul } def +/sp { louts mul } def +/vs { loutv mul } def +/ft { loutf mul } def +/dg { } def + +/LoutGraphic { + /louts exch def + /loutv exch def + /loutf exch def + /ymark exch def + /xmark exch def + /ysize exch def + /xsize exch def +} def + +/LoutGr2 { gsave translate LoutGraphic gsave } def + +/LoutFont +{ findfont exch scalefont setfont +} bind def + +/LoutRecode { + { findfont dup length dict begin + {1 index /FID ne {def} {pop pop} ifelse} forall + /Encoding exch def + currentdict end definefont pop + } + stopped pop +} bind def + +/BeginEPSF { + /LoutEPSFState save def + /dict_count countdictstack def + /op_count count 1 sub def + userdict begin + /showpage { } def + 0 setgray 0 setlinecap + 1 setlinewidth 0 setlinejoin + 10 setmiterlimit [] 0 setdash newpath + /languagelevel where + { pop languagelevel + 1 ne + { false setstrokeadjust false setoverprint + } if + } if +} bind def + +/EndEPSF { + count op_count sub { pop } repeat + countdictstack dict_count sub { end } repeat + LoutEPSFState restore +} bind def +%%EndResource + +%%BeginResource: encoding vec2 +/vec2 [ +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright +/parenleft /parenright /asterisk /plus /comma /hyphen /period /slash +/zero /one /two /three /four /five /six /seven +/eight /nine /colon /semicolon /less /equal /greater /question +/at /A /B /C /D /E /F /G +/H /I /J /K /L /M /N /O +/P /Q /R /S /T /U /V /W +/X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore +/quoteleft /a /b /c /d /e /f /g +/h /i /j /k /l /m /n /o +/p /q /r /s /t /u /v /w +/x /y /z /braceleft /bar /braceright /asciitilde /.notdef +/quotesinglbase /quotedblbase /ellipsis /OE /oe /quotedblleft /quotedblright /fi +/fl /endash /emdash /bullet /dagger /daggerdbl /florin /fraction +/dotlessi /grave /acute /circumflex /tilde /macron /breve /dotaccent +/dieresis /.notdef /ring /cedilla /.notdef /hungarumlaut /ogonek /caron +/space /exclamdown /cent /sterling /currency /yen /brokenbar /section +/dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen /registered /macron +/degree /plusminus /twosuperior /threesuperior /acute /mu /paragraph /periodcentered +/cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf /threequarters /questiondown +/Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla +/Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis +/Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply +/Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /germandbls +/agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla +/egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis +/eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide +/oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /ydieresis +] def +%%EndResource + +%%BeginResource: procset LoutTabPrependGraphic +% @PrependGraphic file /export/home/6monthspace/jeff/lout.lib/include/tabf.lpg +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % +% PostScript @SysPrependGraphic file for @Tab % +% % +% To assist in avoiding name clashes, the names % +% of all these symbols begin with "ltab". % +% % +% Jeffrey H. Kingston % +% 24 September 1991 % +% 22 December 1992 % +% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% linewidth ltabhs - +% horizontal single line +/ltabhs +{ 0 0 moveto xsize 0 lineto + setlinewidth 0 setlinecap stroke +} def + +% linewidth ltabhsp - +% horizontal single line with projecting ends +/ltabhsp +{ 0 0 moveto xsize 0 lineto + setlinewidth 2 setlinecap stroke +} def + +% linewidth ltabhd - +% horizontal double line +/ltabhd +{ dup dup + 0 0 moveto xsize 0 lineto + 0 exch 3 mul moveto xsize exch 3 mul lineto + setlinewidth 0 setlinecap stroke +} def + +% linewidth ltabhdb - +% horizontal double line below mark +/ltabhdb +{ dup dup + 0 0 moveto xsize 0 lineto + 0 exch -3 mul moveto xsize exch -3 mul lineto + setlinewidth 0 setlinecap stroke +} def + +% linewidth ltabhdnw - +% horizontal double line with northwest corner +/ltabhdnw +{ dup dup dup dup + 0 0 moveto xsize 0 lineto + xsize exch 3 mul moveto + -3 mul exch 3 mul lineto + -3 mul 0 lineto + setlinewidth 0 setlinejoin 2 setlinecap stroke +} def + +% linewidth ltabhdne - +% horizontal double line with northeast corner +/ltabhdne +{ dup dup dup dup + 0 0 moveto xsize 0 lineto + 0 exch 3 mul moveto + 3 mul xsize add exch 3 mul lineto + 3 mul xsize add 0 lineto + setlinewidth 0 setlinejoin 2 setlinecap stroke +} def + +% linewidth ltabhdsw - +% horizontal double line with southwest corner +/ltabhdsw +{ dup dup dup dup + 0 0 moveto xsize 0 lineto + xsize exch -3 mul moveto + -3 mul exch -3 mul lineto + -3 mul 0 lineto + setlinewidth 0 setlinejoin 2 setlinecap stroke +} def + +% linewidth ltabhdse - +% horizontal double line with southeast corner +/ltabhdse +{ dup dup dup dup + 0 0 moveto xsize 0 lineto + 0 exch -3 mul moveto + 3 mul xsize add exch -3 mul lineto + 3 mul xsize add 0 lineto + setlinewidth 0 setlinejoin 2 setlinecap stroke +} def + +% linewidth ltabvs - +% vertical single line +/ltabvs +{ 0 0 moveto 0 ysize lineto + setlinewidth 0 setlinecap stroke +} def + +% linewidth ltabvd - +% vertical double line +/ltabvd +{ dup dup + 0 0 moveto 0 ysize lineto + -3 mul 0 moveto -3 mul ysize lineto + setlinewidth 0 setlinecap stroke +} def + +% linewidth ltabvdr - +% vertical double line to right of mark +/ltabvdr +{ dup dup + 0 0 moveto 0 ysize lineto + 3 mul 0 moveto 3 mul ysize lineto + setlinewidth 0 setlinecap stroke +} def +%%EndResource + +%%BeginResource: procset LoutFigPrependGraphic +% @PrependGraphic file /export/home/6monthspace/jeff/lout.lib/include/figf.lpg +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % +% PostScript @SysPrependGraphic file for @Fig Jeffrey H. Kingston % +% Version 2.0 (includes CIRCUM label) January 1992 % +% % +% To assist in avoiding name clashes, the names of all symbols % +% defined here begin with "lfig". However, this is not feasible % +% with user-defined labels and some labels used by users. % +% % +% <point> is two numbers, a point. % +% <length> is one number, a length % +% <angle> is one number, an angle in degrees % +% <dashlength> is one number, the preferred length of a dash % +% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +errordict begin + /handleerror + { + { /Times-Roman findfont 8 pt scalefont setfont + 0 setgray 4 pt 4 pt moveto + $error /errorname get + dup lfigdict exch known + { lfigdict exch get } + { 30 string cvs } ifelse + show + ( Command: ) show + $error /command get 30 string cvs show + } stopped {} if + showpage stop + } def +end + +% concat strings: <string> <string> lfigconcat <string> +% must be defined outside lfigdict since used in lfigpromotelabels +/lfigconcat +{ 2 copy length exch length add string + dup 0 4 index putinterval + dup 3 index length 3 index putinterval + 3 1 roll pop pop +} def + +% <string> lfigdebugprint - +% must be defined outside lfigdict since used in arbitrary places +% /lfigdebugprint +% { print +% (; operand stack:\n) print +% count copy +% count 2 idiv +% { == +% (\n) print +% } repeat +% (\n) print +% } def + +/lfigdict 120 dict def +lfigdict begin + +% error messages +/dictfull (dictfull error: too many labels?) def +/dictstackoverflow (dictstackoverflow error: labels nested too deeply?) def +/execstackoverflow (execstackoverflow error: figure nested too deeply?) def +/limitcheck (limitcheck error: figure nested too deeply or too large?) def +/syntaxerror (syntaxerror error: syntax error in text of figure?) def +/typecheck (typecheck error: syntax error in text of figure?) def +/undefined (undefined error: unknown or misspelt label?) def +/VMError (VMError error: run out of memory?) def + +% push pi onto stack: - lfigpi <num> +/lfigpi 3.14159 def + +% arc directions +/clockwise false def +/anticlockwise true def + +% maximum of two numbers: <num> <num> lfigmax <num> +/lfigmax { 2 copy gt { pop } { exch pop } ifelse } def + +% minimum of two numbers: <num> <num> lfigmin <num> +/lfigmin { 2 copy lt { pop } { exch pop } ifelse } def + +% add two points: <point> <point> lfigpadd <point> +/lfigpadd { exch 3 1 roll add 3 1 roll add exch } def + +% subtract first point from second: <point> <point> lfigpsub <point> +/lfigpsub { 3 2 roll sub 3 1 roll exch sub exch } def + +% max two points: <point> <point> lfigpmax <point> +/lfigpmax { exch 3 1 roll lfigmax 3 1 roll lfigmax exch } def + +% min two points: <point> <point> lfigpmin <point> +/lfigpmin { exch 3 1 roll lfigmin 3 1 roll lfigmin exch } def + +% scalar multiplication: <point> <num> lfigpmul <point> +/lfigpmul { dup 3 1 roll mul 3 1 roll mul exch } def + +% point at angle and distance: <point> <length> <angle> lfigatangle <point> +/lfigatangle { 2 copy cos mul 3 1 roll sin mul lfigpadd } def + +% angle from one point to another: <point> <point> lfigangle <angle> +/lfigangle { lfigpsub 2 copy 0 eq exch 0 eq and {pop} {exch atan} ifelse } def + +% distance between two points: <point> <point> lfigdistance <length> +/lfigdistance { lfigpsub dup mul exch dup mul add sqrt } def + +% difference in x coords: <point> <point> lfigxdistance <length> +/lfigxdistance { pop 3 1 roll pop sub } def + +%difference in y coords: <point> <point> lfigydistance <length> +/lfigydistance { 3 1 roll pop sub exch pop } def + +% stroke a solid line: <length> <dashlength> lfigsolid - +/lfigsolid +{ pop pop [] 0 setdash stroke +} def + +% stroke a lfigdashed line: <length> <dashlength> lfigdashed - +/lfigdashed +{ 2 copy div 2 le 1 index 0 le or + { exch pop 1 pt lfigmax [ exch dup ] 0 setdash } + { dup [ exch 4 2 roll 2 copy div + 1 sub 2 div ceiling dup 4 1 roll + 1 add mul sub exch div ] 0 setdash + } ifelse stroke +} def + +% stroke a lfigcdashed line: <length> <dashlength> lfigcdashed - +/lfigcdashed +{ 2 copy le 1 index 0 le or + { exch pop 1 pt lfigmax [ exch dup ] dup 0 get 2 div setdash } + { dup [ 4 2 roll exch 2 copy exch div + 2 div ceiling div 1 index sub + ] exch 2 div setdash + } ifelse stroke +} def + +% stroke a dotted line: <length> <dashlength> lfigdotted - +/lfigdotted +{ 2 copy le 1 index 0 le or + { exch pop 1 pt lfigmax [ exch 0 exch ] 0 setdash } + { 1 index exch div ceiling div + [ 0 3 2 roll ] 0 setdash + } ifelse stroke +} def + +% stroke a noline line: <length> <dashlength> lfignoline - +/lfignoline +{ pop pop +} def + +% painting (i.e. filling): - lfigwhite - (etc.) +/lfignopaint { } def +/lfignochange { fill } def +/lfigdarkblue { 0.0 0.0 0.5 setrgbcolor fill } def +/lfigblue { 0.0 0.0 1.0 setrgbcolor fill } def +/lfiglightblue { 0.5 0.5 1.0 setrgbcolor fill } def +/lfigdarkgreen { 0.0 0.5 0.0 setrgbcolor fill } def +/lfiggreen { 0.0 1.0 0.0 setrgbcolor fill } def +/lfiglightgreen { 0.5 1.0 0.5 setrgbcolor fill } def +/lfigdarkred { 0.5 0.0 0.0 setrgbcolor fill } def +/lfigred { 1.0 0.0 0.0 setrgbcolor fill } def +/lfiglightred { 1.0 0.5 0.5 setrgbcolor fill } def +/lfigdarkcyan { 0.0 0.5 0.5 setrgbcolor fill } def +/lfigcyan { 0.0 1.0 1.0 setrgbcolor fill } def +/lfiglightcyan { 0.5 1.0 1.0 setrgbcolor fill } def +/lfigdarkmagenta { 0.5 0.0 0.5 setrgbcolor fill } def +/lfigmagenta { 1.0 0.0 1.0 setrgbcolor fill } def +/lfiglightmagenta { 1.0 0.5 1.0 setrgbcolor fill } def +/lfigdarkyellow { 0.5 0.5 0.0 setrgbcolor fill } def +/lfigyellow { 1.0 1.0 0.0 setrgbcolor fill } def +/lfiglightyellow { 1.0 1.0 0.5 setrgbcolor fill } def +/lfigdarkgray { 0.2 0.2 0.2 setrgbcolor fill } def +/lfiggray { 0.5 0.5 0.5 setrgbcolor fill } def +/lfiglightgray { 0.8 0.8 0.8 setrgbcolor fill } def +/lfigdarkgrey { 0.2 0.2 0.2 setrgbcolor fill } def +/lfiggrey { 0.5 0.5 0.5 setrgbcolor fill } def +/lfiglightgrey { 0.8 0.8 0.8 setrgbcolor fill } def +/lfigblack { 0.0 0.0 0.0 setrgbcolor fill } def +/lfigwhite { 1.0 1.0 1.0 setrgbcolor fill } def + +% line caps (and joins, not currently used) +/lfigbutt 0 def +/lfiground 1 def +/lfigprojecting 2 def +/lfigmiter 0 def +/lfigbevel 2 def + +% shape and labels of the @Box symbol +/lfigbox +{ + 0 0 /SW lfigpointdef + xsize 0 /SE lfigpointdef + xsize ysize /NE lfigpointdef + 0 ysize /NW lfigpointdef + SE 0.5 lfigpmul /S lfigpointdef + NW 0.5 lfigpmul /W lfigpointdef + W SE lfigpadd /E lfigpointdef + S NW lfigpadd /N lfigpointdef + NE 0.5 lfigpmul /CTR lfigpointdef + [ CTR NE lfigpsub /lfigboxcircum cvx ] lfigcircumdef + SW SE NE NW SW +} def + +% shape and labels of the @CurveBox symbol +/lfigcurvebox +{ + + xsize 0.5 mul ysize 0.5 mul /CTR lfigpointdef + xsize 0.5 mul 0 /S lfigpointdef + xsize ysize 0.5 mul /E lfigpointdef + xsize 0.5 mul ysize /N lfigpointdef + 0 ysize 0.5 mul /W lfigpointdef + + xmark 0.293 mul xmark 0.293 mul /SW lfigpointdef + xsize xmark 0.293 mul sub xmark 0.293 mul /SE lfigpointdef + xsize xmark 0.293 mul sub ysize xmark 0.293 mul sub /NE lfigpointdef + xmark 0.293 mul ysize xmark 0.293 mul sub /NW lfigpointdef + + [ xsize ysize 0.5 lfigpmul xmark /lfigcurveboxcircum cvx ] lfigcircumdef + + xmark 0 + xsize xmark sub 0 + [ xsize xmark sub xmark ] + xsize xmark + xsize ysize xmark sub + [ xsize xmark sub ysize xmark sub ] + xsize xmark sub ysize + xmark ysize + [ xmark ysize xmark sub ] + 0 ysize xmark sub + 0 xmark + [ xmark xmark ] + xmark 0 +} def + +% shadow of the @ShadowBox symbol +% its shape and labels are done, somewhat inaccurately, with lfigbox +/lfigshadow +{ xmark 2 mul 0 moveto xsize 0 lineto + xsize ysize xmark 2 mul sub lineto + xsize xmark sub ysize xmark 2 mul sub lineto + xsize xmark sub xmark lineto + xmark 2 mul xmark lineto closepath fill +} def + +% shape and labels of the @Square symbol +/lfigsquare +{ + xsize ysize 0.5 lfigpmul /CTR lfigpointdef + CTR xsize xsize ysize ysize lfigpmax 0.5 lfigpmul lfigpadd /NE lfigpointdef + CTR 0 0 CTR NE lfigdistance 135 lfigatangle lfigpadd /NW lfigpointdef + CTR 0 0 CTR NE lfigdistance 225 lfigatangle lfigpadd /SW lfigpointdef + CTR 0 0 CTR NE lfigdistance 315 lfigatangle lfigpadd /SE lfigpointdef + SW 0.5 lfigpmul SE 0.5 lfigpmul lfigpadd /S lfigpointdef + NW 0.5 lfigpmul NE 0.5 lfigpmul lfigpadd /N lfigpointdef + SW 0.5 lfigpmul NW 0.5 lfigpmul lfigpadd /W lfigpointdef + SE 0.5 lfigpmul NE 0.5 lfigpmul lfigpadd /E lfigpointdef + [ CTR NE lfigpsub /lfigboxcircum cvx ] lfigcircumdef + SW SE NE NW SW +} def + +% shape and labels of the @Diamond symbol +/lfigdiamond +{ + xsize 0 0.5 lfigpmul /S lfigpointdef + 0 ysize 0.5 lfigpmul /W lfigpointdef + S W lfigpadd /CTR lfigpointdef + CTR W lfigpadd /N lfigpointdef + CTR S lfigpadd /E lfigpointdef + [ xsize ysize 0.5 lfigpmul /lfigdiamondcircum cvx ] lfigcircumdef + S E N W S +} def + +% shape and labels of the @Ellipse symbol +/lfigellipse +{ + xsize 0 0.5 lfigpmul /S lfigpointdef + 0 ysize 0.5 lfigpmul /W lfigpointdef + S W lfigpadd /CTR lfigpointdef + CTR W lfigpadd /N lfigpointdef + CTR S lfigpadd /E lfigpointdef + CTR xsize 0 0.3536 lfigpmul lfigpadd 0 ysize 0.3536 lfigpmul lfigpadd /NE lfigpointdef + 0 ysize 0.3536 lfigpmul CTR xsize 0 0.3536 lfigpmul lfigpadd lfigpsub /SE lfigpointdef + xsize 0 0.3536 lfigpmul CTR lfigpsub 0 ysize 0.3536 lfigpmul lfigpadd /NW lfigpointdef + 0 ysize 0.3536 lfigpmul xsize 0 0.3536 lfigpmul CTR lfigpsub lfigpsub /SW lfigpointdef + [ xsize ysize 0.5 lfigpmul /lfigellipsecircum cvx ] lfigcircumdef + S [ CTR ] E [ CTR ] N [ CTR ] W [ CTR ] S +} def + +% shape and labels of the @Circle symbol +/lfigcircle +{ + xsize ysize 0.5 lfigpmul /CTR lfigpointdef + CTR xsize 0 ysize 0 lfigpmax 0.5 lfigpmul lfigpadd /E lfigpointdef + CTR 0 0 CTR E lfigdistance 45 lfigatangle lfigpadd /NE lfigpointdef + CTR 0 0 CTR E lfigdistance 90 lfigatangle lfigpadd /N lfigpointdef + CTR 0 0 CTR E lfigdistance 135 lfigatangle lfigpadd /NW lfigpointdef + CTR 0 0 CTR E lfigdistance 180 lfigatangle lfigpadd /W lfigpointdef + CTR 0 0 CTR E lfigdistance 225 lfigatangle lfigpadd /SW lfigpointdef + CTR 0 0 CTR E lfigdistance 270 lfigatangle lfigpadd /S lfigpointdef + CTR 0 0 CTR E lfigdistance 315 lfigatangle lfigpadd /SE lfigpointdef + [ S E lfigpsub /lfigellipsecircum cvx ] lfigcircumdef + S [ CTR ] E [ CTR ] N [ CTR ] W [ CTR ] S +} def + +% shape and labels of the @HLine and @HArrow symbols +/lfighline +{ + 0 ymark lfigprevious /FROM lfigpointdef + xsize ymark lfigprevious /TO lfigpointdef +} def + +% shape and labels of the @VLine and @VArrow symbols +/lfigvline +{ + xmark ysize lfigprevious /FROM lfigpointdef + xmark 0 lfigprevious /TO lfigpointdef +} def + +% points of a polygon around base with given no of sides, vert init angle: +% <sides> <angle> figpolygon <point> ... <point> +/lfigpolygon +{ xsize ysize 0.5 lfigpmul /CTR lfigpointdef + 90 sub CTR 2 copy lfigmax 5 3 roll + [ 4 copy pop /lfigpolycircum cvx ] lfigcircumdef + exch dup 360 exch div exch + 1 1 3 2 roll + { 4 string cvs (P) exch lfigconcat cvn + 6 copy pop pop lfigatangle 2 copy 10 2 roll + 3 2 roll lfigpointdef + dup 3 1 roll add exch + } for + pop lfigatangle +} def + +% next array element: <array> <index> lfiggetnext <array> <index> <any> true +% or <array> <index> false +/lfiggetnext +{ 2 copy exch length ge + { false } + { 2 copy get exch 1 add exch true } ifelse +} def + +% check whether thing is number: <any> lfigisnumbertype <any> <bool> +/lfigisnumbertype +{ dup type dup + /integertype eq exch /realtype eq or +} def + +% check whether thing is an array: <any> lfigisarraytype <any> <bool> +/lfigisarraytype { dup type /arraytype eq } def + +% get next item: <array> <index> lfiggetnextitem <array> <index> 0 +% or <array> <index> <array> 1 +% or <array> <index> <point> 2 +/lfiggetnextitem +{ lfiggetnext + { lfigisarraytype + { 1 + } + { lfigisnumbertype + { 3 1 roll + lfiggetnext + { lfigisnumbertype + { 4 3 roll exch 2 + } + { pop 3 2 roll pop 0 + } ifelse + } + { 3 2 roll pop 0 + } ifelse + } + { pop 0 + } ifelse + } ifelse + } + { 0 + } ifelse +} def + +% set arc path: bool x1 y1 x2 y2 x0 y0 lfigsetarc <angle> <angle> <dist> +% the path goes from x1 y1 to x2 y2 about centre x0 y0, +% anticlockwise if bool is true else clockwise. +% The orientations of backwards pointing and forwards pointing +% arrowheads are returned in the two angles, and +% the length of the arc is returned in <dist>. +/lfigsetarc +{ + 20 dict begin + matrix currentmatrix 8 1 roll + 2 copy translate 2 copy 8 2 roll + 4 2 roll lfigpsub 6 2 roll lfigpsub + dup /y1 exch def dup mul /y1s exch def + dup /x1 exch def dup mul /x1s exch def + dup /y2 exch def dup mul /y2s exch def + dup /x2 exch def dup mul /x2s exch def + + y1s y2s eq + { -1 + } + { y1s x2s mul y2s x1s mul sub y1s y2s sub div + } ifelse + /da exch def + + x1s x2s eq + { -1 + } + { x1s y2s mul x2s y1s mul sub x1s x2s sub div + } ifelse + /db exch def + + da 0 gt db 0 gt and + { /LMax da sqrt db sqrt lfigmax def + /scalex da sqrt LMax div def + /scaley db sqrt LMax div def + scalex scaley scale + 0 0 LMax + 0 0 x1 scalex mul y1 scaley mul lfigangle + 0 0 x2 scalex mul y2 scaley mul lfigangle + 2 copy eq { 360 add } if + 2 copy 8 2 roll + 5 index { arc } { arcn } ifelse + 2 index 1 index + { 90 sub } { 90 add } ifelse + dup sin scaley mul exch cos scalex mul atan + 2 index 2 index + { 90 add } { 90 sub } ifelse + dup sin scaley mul exch cos scalex mul atan + 5 2 roll % res1 res2 ang1 ang2 anticlockwise + { exch sub } { sub } ifelse + dup 0 le { 360 add } if lfigpi mul LMax mul 180 div + } + { 0 0 x1 y1 lfigdistance 0 0 x2 y2 lfigdistance eq + 0 0 x1 y1 lfigdistance 0 gt and + { 0 0 + 0 0 x1 y1 lfigdistance + 0 0 x1 y1 lfigangle + 0 0 x2 y2 lfigangle + 2 copy eq { 360 add } if + 2 copy 8 2 roll + 5 index { arc } { arcn } ifelse + 2 index 1 index + { 90 sub } { 90 add } ifelse + 2 index 2 index + { 90 add } { 90 sub } ifelse + 5 2 roll % res1 res2 ang1 ang2 clockwise + { exch sub } { sub } ifelse + dup 0 le { 360 add } if lfigpi mul 0 0 x1 y1 lfigdistance mul 180 div + } + { x2 y2 lineto pop + x2 y2 x1 y1 lfigangle + x1 y1 x2 y2 lfigangle + x1 y1 x2 y2 lfigdistance + } ifelse + } ifelse + 4 -1 roll setmatrix + end +} def + +% lfigsetcurve: set up a Bezier curve from x0 y0 to x3 y3 +% and return arrowhead angles and length of curve (actually 0) +% x0 y0 x1 y1 x2 y2 x3 y3 lfigsetcurve <angle> <angle> <length> +/lfigsetcurve +{ 8 copy curveto pop pop + lfigangle + 5 1 roll + 4 2 roll lfigangle + exch + 0 +} def + +% lfigpaintpath: paint a path of the given shape +% /paint [ shape ] lfigpaintpath - +/lfigpaintpath +{ + 10 dict begin + 0 newpath + /prevseen false def + /curveseen false def + { lfiggetnextitem + dup 0 eq { pop exit } + { 1 eq + { /curveseen true def + /curve exch def + curve length 0 eq { /curveseen false def } if + } + { /ycurr exch def + /xcurr exch def + prevseen + { curveseen + { curve length 4 eq + { xprev yprev + curve 0 get curve 1 get + curve 2 get curve 3 get + xcurr ycurr + lfigsetcurve pop pop pop + } + { xprev yprev xcurr ycurr + curve length 1 ge { curve 0 get } { 0 } ifelse + curve length 2 ge { curve 1 get } { 0 } ifelse + curve length 3 ge { curve 2 get } { true } ifelse + 7 1 roll + lfigsetarc pop pop pop + } ifelse + } + { xcurr ycurr lineto + } ifelse + } + { xcurr ycurr moveto + } ifelse + /xprev xcurr def + /yprev ycurr def + /prevseen true def + /curveseen false def + } ifelse + } ifelse + } loop pop pop cvx exec + end +} def + +% stroke a path of the given shape in the given linestyle and dash length. +% Return the origin and angle of the backward and forward arrow heads. +% dashlength /linestyle [shape] lfigdopath [<point> <angle>] [<point> <angle>] +/lfigdopath +{ + 10 dict begin + 0 + /prevseen false def + /curveseen false def + /backarrow [] def + /fwdarrow [] def + { + lfiggetnextitem + dup 0 eq { pop exit } + { + 1 eq + { /curveseen true def + /curve exch def + curve length 0 eq { /prevseen false def } if + } + { /ycurr exch def + /xcurr exch def + prevseen + { newpath xprev yprev moveto + curveseen + { curve length 4 eq + { xprev yprev + curve 0 get curve 1 get + curve 2 get curve 3 get + xcurr ycurr lfigsetcurve + } + { xprev yprev xcurr ycurr + curve length 1 ge { curve 0 get } { 0 } ifelse + curve length 2 ge { curve 1 get } { 0 } ifelse + curve length 3 ge { curve 2 get } { true } ifelse + 7 1 roll + lfigsetarc + } ifelse + } + { xcurr ycurr lineto + xcurr ycurr xprev yprev lfigangle dup 180 sub + xprev yprev xcurr ycurr lfigdistance + } ifelse + 6 index 6 index cvx exec + [ xprev yprev 5 -1 roll ] + backarrow length 0 eq + { /backarrow exch def } + { pop } ifelse + [ xcurr ycurr 4 -1 roll ] /fwdarrow exch def + } if + /xprev xcurr def + /yprev ycurr def + /prevseen true def + /curveseen false def + } ifelse + } ifelse + } loop + pop pop pop pop + backarrow length 0 eq { [ 0 0 0 ] } { backarrow } ifelse + fwdarrow length 0 eq { [ 0 0 0 ] } { fwdarrow } ifelse + end +} def + +% lfigdoarrow: draw an arrow head of given form +% dashlength /lstyle /pstyle hfrac height width [ <point> <angle> ] lfigdoarrow - +/lfigdoarrow +{ matrix currentmatrix 8 1 roll + dup 0 get 1 index 1 get translate + 2 get rotate + [ 2 index neg 2 index 0 0 + 3 index 3 index neg + 1 index 10 index mul 0 + 7 index 7 index ] + 4 1 roll pop pop pop + dup 3 1 roll + gsave lfigpaintpath grestore lfigdopath pop pop + setmatrix +} def + +% arrow head styles +/lfigopen 0.0 def +/lfighalfopen 0.5 def +/lfigclosed 1.0 def + +% stroke no arrows, forward, back, and both +/lfignoarrow { pop pop pop pop pop pop pop pop } def +/lfigforward { 7 -1 roll lfigdoarrow pop } def +/lfigback { 8 -2 roll pop lfigdoarrow } def +/lfigboth { 8 -1 roll 7 copy lfigdoarrow pop 7 -1 roll lfigdoarrow } def + +% lfigprevious: return previous point on path +/lfigprevious +{ lfigisnumbertype + { 2 copy } + { lfigisarraytype + { 2 index 2 index } + { 0 0 } + ifelse + } ifelse +} def + +% label a point in 2nd top dictionary: <point> /name lfigpointdef - +/lfigpointdef +{ + % (Entering lfigpointdef) lfigdebugprint + [ 4 2 roll transform + /itransform cvx ] cvx + currentdict end + 3 1 roll + % currentdict length currentdict maxlength lt + % { def } + % { exec moveto (too many labels) show stop } + % ifelse + def + begin + % (Leaving lfigpointdef) lfigdebugprint +} def + +% promote labels from second top to third top dictionary +% <string> lfigpromotelabels - +/lfigpromotelabels +{ + % (Entering lfigpromotelabels) lfigdebugprint + currentdict end exch currentdict end + { exch 20 string cvs 2 index + (@) lfigconcat exch lfigconcat cvn exch def + } forall pop begin + % (Leaving lfigpromotelabels) lfigdebugprint +} def + +% show labels (except CIRCUM): - lfigshowlabels - +/lfigshowlabels +{ + % (Entering lfigshowlabels) lfigdebugprint + currentdict end + currentdict + { 1 index 20 string cvs (CIRCUM) search % if CIRCUM in key + { pop pop pop pop pop } + { pop cvx exec 2 copy + newpath 1.5 pt 0 360 arc + 0 setgray fill + /Times-Roman findfont 8 pt scalefont setfont + moveto 0.2 cm 0.1 cm rmoveto 20 string cvs show + } + ifelse + } forall + begin + % (Leaving lfigshowlabels) lfigdebugprint +} def + +% fix an angle to 0 <= res < 360: <angle> lfigfixangle <angle> +/lfigfixangle +{ + % (Entering lfigfixangle) lfigdebugprint + { dup 0 ge { exit } if + 360 add + } loop + { dup 360 lt { exit } if + 360 sub + } loop + % (Leaving lfigfixangle) lfigdebugprint +} def + +% find point on circumference of box: alpha a b lfigboxcircum x y +/lfigboxcircum +{ + % (Entering lfigboxcircum) lfigdebugprint + 4 dict begin + /b exch def + /a exch def + lfigfixangle /alpha exch def + 0 0 a b lfigangle /theta exch def + + % if alpha <= theta, return (a, a*tan(alpha)) + alpha theta le + { a a alpha sin mul alpha cos div } + { + % else if alpha <= 180 - theta, return (b*cot(alpha), b) + alpha 180 theta sub le + { b alpha cos mul alpha sin div b } + { + % else if alpha <= 180 + theta, return (-a, -a*tan(alpha)) + alpha 180 theta add le + { a neg a neg alpha sin mul alpha cos div } + { + % else if alpha <= 360 - theta, return (-b*cot(alpha), -b) + alpha 360 theta sub le + { b neg alpha cos mul alpha sin div b neg } + { + % else 360 - theta <= alpha, return (a, a*tan(alpha)) + a a alpha sin mul alpha cos div + } ifelse + } ifelse + } ifelse + } ifelse + end + % (Leaving lfigboxcircum) lfigdebugprint +} def + +% find quadratic roots (assume a != 0): a b c lfigqroots x1 x2 2 +% or x2 1 +% or 0 +/lfigqroots +{ + 4 dict begin + /c exch def + /b exch def + /a exch def + /disc b b mul 4 a c mul mul sub def + disc 0 lt + { 0 + } + { disc 0 eq + { b neg 2 a mul div + 1 + } + { b neg disc sqrt add 2 a mul div + b neg disc sqrt sub 2 a mul div + 2 + } + ifelse + } + ifelse + end +} def + +% work our which quadrant: <angle> lfigquadrant <0-3> +/lfigquadrant +{ dup 90 lt + { pop 0 + } + { dup 180 lt + { pop 1 + } + { 270 lt + { 2 + } + { 3 + } ifelse + } ifelse + } ifelse +} def + +% find curvebox circum, assuming upper right quadrant: alpha a b xmk lfigcb x y +/lfigcb +{ + 6 dict begin + /xmk exch def + /b exch def + /a exch def + /alpha exch def + /theta1 0 0 a b xmk sub lfigangle def + /theta2 0 0 a xmk sub b lfigangle def + alpha theta1 le + { % if alpha <= theta1, return (a, a*tan(alpha)) + a a alpha sin mul alpha cos div + } + { alpha theta2 ge + { % else if alpha > theta2, return (b*cot(alpha), b) + b alpha cos mul alpha sin div b + } + { + % else, return the intersection of line and circle + a xmk sub b xmk sub xmk 0 0 alpha lfigcircleintersect + dup 0 eq + { % should never happen, just return any reasonable point + pop + a b 0.5 lfigpmul + } + { 1 eq + { % should never happen, just return the point on top of stack + } + { % the usual case, two points on stack, return the larger + lfigpmax + } ifelse + } ifelse + } ifelse + } ifelse + end +} def + +% find point on circumference of curvebox: alpha a b xmk lfigcurveboxcircum x y +/lfigcurveboxcircum +{ + % (Entering lfigcurveboxcircum) lfigdebugprint + 5 dict begin + /xmk exch def + /b exch def + /a exch def + lfigfixangle /alpha exch def + + % work out which quadrant we are in, and reflect accordingly + /quad alpha lfigquadrant def + quad 0 eq + { alpha a b xmk lfigcb + } + { quad 1 eq + { 180 alpha sub a b xmk lfigcb exch neg exch + } + { quad 2 eq + { alpha 180 sub a b xmk lfigcb neg exch neg exch + } + { 360 alpha sub a b xmk lfigcb neg + } ifelse + } ifelse + } ifelse + end + % (Leaving lfigcurveboxcircum) lfigdebugprint +} def + +% find point on circumference of diamond: alpha a b lfigdiamondcircum x y +/lfigdiamondcircum +{ + % (Entering lfigdiamondcircum) lfigdebugprint + 4 dict begin + /b exch def + /a exch def + lfigfixangle /alpha exch def + b alpha cos abs mul a alpha sin abs mul add /denom exch def + a b mul alpha cos mul denom div + a b mul alpha sin mul denom div + end + % (Leaving lfigdiamondcircum) lfigdebugprint +} def + +% find point on circumference of ellipse: alpha a b lfigellipsecircum x y +/lfigellipsecircum +{ + % (Entering lfigellipsecircum) lfigdebugprint + 4 dict begin + /b exch def + /a exch def + lfigfixangle /alpha exch def + b alpha cos mul dup mul a alpha sin mul dup mul add sqrt /denom exch def + a b mul alpha cos mul denom div + a b mul alpha sin mul denom div + end + % (Leaving lfigellipsecircum) lfigdebugprint +} def + +% find point of intersection of two lines each defined by two points +% x1 y1 x2 y2 x3 y3 x4 y4 lfiglineintersect x y +/lfiglineintersect +{ + % (Entering lfiglineintersect) lfigdebugprint + 13 dict begin + /y4 exch def + /x4 exch def + /y3 exch def + /x3 exch def + /y2 exch def + /x2 exch def + /y1 exch def + /x1 exch def + x2 x1 sub /x21 exch def + x4 x3 sub /x43 exch def + y2 y1 sub /y21 exch def + y4 y3 sub /y43 exch def + y21 x43 mul y43 x21 mul sub /det exch def + + % calculate x + y21 x43 mul x1 mul + y43 x21 mul x3 mul sub + y3 y1 sub x21 mul x43 mul add + det div + + % calculate y + x21 y43 mul y1 mul + x43 y21 mul y3 mul sub + x3 x1 sub y21 mul y43 mul add + det neg div + + end + % (Leaving lfiglineintersect) lfigdebugprint +} def + +% find point on circumference of polygon +% alpha radius num theta lfigpolycircum x y +/lfigpolycircum +{ + % (Entering lfigpolycircum) lfigdebugprint + 13 dict begin + /theta exch def + /num exch def + /radius exch def + /alpha exch def + + % calculate delta, the angle from theta to alpha + alpha theta sub lfigfixangle + + % calculate the angle which is the multiple of 360/num closest to delta + 360 num div div truncate 360 num div mul theta add /anglea exch def + + % calculate the next multiple of 360/num after anglea + anglea 360 num div add /angleb exch def + + % intersect the line through these two points with the alpha line + anglea cos anglea sin angleb cos angleb sin + 0 0 alpha cos 2 mul alpha sin 2 mul + lfiglineintersect radius lfigpmul + + end + % (Leaving lfigpolycircum) lfigdebugprint +} def + +% find point of intersection of a point and a circle +% x0 y0 r x1 y1 theta lfigcircleintersect xa ya xb yb 2 +% or xb yb 1 +% or 0 +/lfigcircleintersect +{ + % (Entering lfigcircleintersect) lfigdebugprint + 15 dict begin + /theta exch def + /y1 exch def + /x1 exch def + /r exch def + /y0 exch def + /x0 exch def + + % if sin(theta) = 0 then line is horizontal and y must be y1 + theta sin abs 0.00001 lt + { + /a 1 def + /b -2 x0 mul def + /c x0 dup mul y1 y0 sub dup mul add r dup mul sub def + a b c lfigqroots dup + 0 eq + { pop + 0 + } + { 1 eq + { y1 1 + } + { y1 exch y1 2 + } ifelse + } ifelse + } + { + /ct theta cos theta sin div def + /a ct ct mul 1 add def + /b ct x1 x0 sub mul y1 add y0 sub 2 mul def + /c x1 x0 sub dup mul y1 y0 sub dup mul add r dup mul sub def + a b c lfigqroots dup + 0 eq + { pop + 0 + } + { 1 eq + { y1 add /yb exch def + yb y1 sub ct mul x1 add /xb exch def + xb yb 1 + } + { y1 add /ya exch def + ya y1 sub ct mul x1 add /xa exch def + y1 add /yb exch def + yb y1 sub ct mul x1 add /xb exch def + xa ya xb yb 2 + } ifelse + } ifelse + } ifelse + end + % (Leaving lfigcircleintersect) lfigdebugprint +} def + +% add CIRCUM operator with this body: <array> lfigcircumdef - +/lfigcircumdef +{ % (Entering lfigcircumdef) lfigdebugprint + /CIRCUM exch cvx + currentdict end + 3 1 roll + % currentdict length currentdict maxlength lt + % { def } + % { exec moveto (too many labels) show stop } + % ifelse + def + begin + % (Leaving lfigcircumdef) lfigdebugprint +} def + +end +%%EndResource + +%%BeginResource: procset LoutBasicSetup +% @PrependGraphic file /export/home/6monthspace/jeff/lout.lib/include/bsf.lpg + +% width height linethickness louteuro - +% draw a Euro symbol of this width and height with this line thickness +/louteuro { + 20 dict begin + /eurothick exch def + /euroheight exch def + /eurowidth exch def + /eurostrokewidth euroheight 0.8 mul def + /eurostep eurothick 60 cos mul 60 sin div def + /eurotheta 40 def + + % llx lly width thickness louteurobox - + % draw angled box starting at (llx, lly) with given width and thickness + /louteurobox + { + /euroboxthick exch def + /euroboxwidth exch def + newpath moveto euroboxwidth 0 rlineto + eurostep euroboxthick rlineto + euroboxwidth neg 0 rlineto closepath fill + } def + + % lower cross stroke + 0 euroheight 2 div eurothick 1.5 mul sub + eurostrokewidth eurothick louteurobox + + % upper cross stroke + 0 euroheight 2 div eurothick 0.5 mul add + eurostrokewidth eurostep 2 mul add eurothick louteurobox + + % circular part + /eurohctr eurowidth euroheight 2 div eurotheta cos mul sub def + /eurovctr euroheight 2 div def + newpath + eurohctr eurovctr eurovctr eurotheta 350 eurotheta sub arc + eurohctr eurovctr eurovctr eurothick sub 365 eurotheta sub eurotheta arcn + closepath fill + end +} def + +% path for @FullWidthRule symbol +/LoutRule +{ 0 0 moveto xsize 0 lineto +} def + +% path for @Box symbol +/LoutBox +{ 0 0 moveto xsize 0 lineto + xsize ysize lineto 0 ysize lineto + closepath +} def + +% path for @CurveBox symbol +/LoutCurveBox +{ xmark 0 moveto + xsize xmark sub xmark xmark 270 360 arc + xsize xmark sub ysize xmark sub xmark 0 90 arc + xmark ysize xmark sub xmark 90 180 arc + xmark xmark xmark 180 270 arc + closepath +} def + +% path for @ShadowBox symbol +/LoutShadowBox +{ xmark 2 mul 0 moveto xsize 0 lineto + xsize ysize xmark 2 mul sub lineto + xsize xmark sub ysize xmark 2 mul sub lineto + xsize xmark sub xmark lineto + xmark 2 mul xmark lineto + closepath +} def + +% set up dictionary containing margin note data: parity LoutMargSet - +/LoutMargSet +{ /LoutMargDict 12 dict def + LoutMargDict begin + /parity exch def + /matr matrix currentmatrix def + /rightx xsize def + /lefty ysize def % highest allowable point for top of next left note + /righty ysize def % highest allowable point for top of next right note + /max { 2 copy gt { pop } { exch pop } ifelse } def + /min { 2 copy lt { pop } { exch pop } ifelse } def + end +} def + +%translate coordinate system for marginal notes: type LoutMargShift - +% where type 0 is left margin, 1 is right margin, 2 is outer, 3 is inner +/LoutMargShift +{ LoutMargDict begin + + % y coordinate of top of note, in margin coords, before vertical adjust + 0 ysize transform matr itransform exch pop + + % decide whether left or right margin based on type and parity + exch [ 0 1 parity 1 parity sub ] exch get 0 eq + { + % left margin: adjust top of note downwards if overlaps previous note + lefty min + + % bottom of note is new lefty position and also translate position + ysize sub dup /lefty exch def + + % want right edge of note at coordinate zero + xsize neg exch + } + { + % right margin: adjust top of note downwards if overlaps previous note + righty min + + % bottom of note is new righty position and also translate position + ysize sub dup /righty exch def + + % want left edge of note at coordinate rightx + rightx exch + } ifelse + + % stack now contains coord of bottom left corner in margin coordinates + matr setmatrix translate + end +} def + +% create LoutPageDict with left, right, foot, top for @Place symbol users +/LoutPageSet +{ + /LoutPageDict 5 dict def + LoutPageDict begin + /matr matrix currentmatrix def + /left 0 def + /right xsize def + /foot 0 def + /top ysize def + end + +} def + +%%EndResource + +%%EndProlog + +%%BeginSetup +%%IncludeResource: font Times-Roman +/Times-Romanfnt82 vec2 /Times-Roman LoutRecode +/fnt82 { /Times-Romanfnt82 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt35 vec2 /Helvetica LoutRecode +/fnt35 { /Helveticafnt35 LoutFont } def +%%IncludeResource: font Symbol +/fnt78 { /Symbol LoutFont } def +%%IncludeResource: font Helvetica-Oblique +/Helvetica-Obliquefnt36 vec2 /Helvetica-Oblique LoutRecode +/fnt36 { /Helvetica-Obliquefnt36 LoutFont } def +%%EndSetup + +%%Page: i 1 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Helvetica +%%+ font Symbol +%%+ font Helvetica-Oblique +/pgsave save def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup + +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +1 LoutMargSet +grestore +600 fnt35 1355 12125(An)m 2215(Exper)s -24(t')k 30(s)k +4518(Guide)s 6258(to)s 6902(the)s 3956 10685(Lout)m 616 9245(Document)m +3500(F)s 18(or)k -15(matting)k 6490(System)s 240 fnt35 +3544 6059(Jeffre)m 4(y)k 4321(H.)s 4606(Kingston)s 3883 4395(V)m 19(ersion)k +4726(3.20)s 3974 4107(Apr)m -3(il,)k 4567(2000)s 240 fnt78 +0 342(\343)m 240 fnt36 315 340(Cop)m 7(yr)k -3(ight)k +1493(1991,)s 2214(2000,)s 2935(Jeffre)s 4(y)k 3811(H.)s +4173(Kingston,)s 5293(Basser)s 6203(Depar)s -9(tment)k 7619(of)s +7990(Computer)s 0 52(Science)m 3(,)k 966(The)s 1449(Univ)s 6(ersity)k +2583(of)s 2881(Sydne)s 4(y)k 3766(2006,)s 4415(A)s 7(ustr)k 2(alia.)k + +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: ii 2 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +/pgsave save def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +0 LoutMargSet +grestore +480 fnt84 0 12955(Pr)m 8(eface)k 240 fnt82 540 12095(This)m +1016(manual)s 1775(is)s 1984(addressed)s 2985(to)s 3224(those)s +3784(who)s 4250(wish)s 4759(to)s 4997(become)s 5797(e)s 3(xpert)k +6451(users)s 6992(of)s 7263(the)s 7611(Lout)s 8122(document)s +0 11807(formatting)m 1092(system.)s 1952(An)s 2334(e)s 3(xpert)k +3020(user)s 3510(is)s 3752(someone)s 4690(who)s 5188(understands)s +6414(the)s 6794(principles)s 7819(of)s 8122(document)s 0 11519(formatting)m +1083(that)s 1524(Lout)s 2059(embodies,)s 3105(and)s 3532(is)s +3765(able)s 4242(to)s 4503(apply)s 5112(them,)s 5720(for)s +6081(e)s 3(xample)k 6966(to)s 7228(design)s 7933(a)s +8122(document)s 0 11231(format)m 690(or)s 943(a)s 1103(special-purpose)s +2653(package.)s 3595(In)s 3845(contrast,)s 4701(a)s 4861(non-e)s 3(xpert)k +5948(user)s 6400(is)s 6604(someone)s 7505(who)s 7965(simply)s +8663(uses)s 0 10943(Lout)m 512(to)s 751(format)s 1447(documents.)s +480 10569(Chapter)m 1295(1)s 1448(e)s 3(xplains)k 2291(these)s +2836(principles,)s 3883(and)s 4285(it)s 4475(should)s 5170(be)s +5450(read)s 5917(carefully)s 6817(and)s 7219(in)s 7460(sequence.)s +8499(Chap)s 8998(-)s 0 10281(ters)m 412(2)s 604(and)s +1025(3)s 1207(are)s 1571(for)s 1927(reference;)s 2943(respecti)s 6(v)k 3(ely)k 15(,)k +4198(the)s 3(y)k 4678(contain)s 5457(descriptions)s 6680(of)s +6969(the)s 7334(detailed)s 8166(operation)s 0 9993(of)m 277(Lout')s 13(s)k +945(major)s 1568(components,)s 2838(and)s 3248(a)s 3420(complete)s +4359(description)s 5484(of)s 5761(each)s 6262(prede\207ned)s 7336(symbol.)s +8211(The)s 8646(\207nal)s 0 9705(chapter)m 763(presents)s 1597(a)s +1763(collection)s 2762(of)s 3033(adv)s 6(anced)k 3989(e)s 3(xamples.)k +480 9331(This)m 971(manual)s 1745(presents)s 2594(V)s 26(ersion)k +3397(3)s 3576(of)s 3862(Basser)s 4574(Lout,)s 5148(publicly)s +6001(released)s 6856(in)s 7114(September)s 8211(1994)s 8760([3)s +8943(].)s 0 9043(This)m 480(manual)s 1243(w)s 2(as)k +1669(rendered)s 2567(into)s 2996(PostScript)s 4043(by)s 4341(V)s 26(ersion)k +5133(3.20)s 5613(of)s 5888(the)s 6240(Basser)s 6942(Lout)s +7458(interpreter)s 9(,)k 8554(using)s 0 8755(the)m 348(symbols)s +1197(described)s 2171(in)s 2414(the)s 2762(User')s 13(s)k +3423(Guide)s 4064([4)s 4257(].)s 240 fnt84 0 8250(Ackno)m 2(wledgment.)k +240 fnt82 1986 8251(V)m 26(ersion)k 2811(3)s 3012(has)s +3419(bene\207ted)s 4391(from)s 4953(hundreds)s 5919(of)s 6227(comments)s +7298(recei)s 6(v)k 3(ed)k 8193(since)s 8778(the)s +0 7963(release)m 726(of)s 1006(V)s 26(ersion)k 1803(1)s +1967(in)s 2219(October)s 3057(1991.)s 3710(Not)s 4138(e)s 6(v)k 3(ery)k +4723(suggestion)s 5813(could)s 6411(be)s 6702(follo)s 6(wed,)k +7662(b)s 4(ut)k 8033(man)s 3(y)k 8625(ha)s 4(v)k 3(e)k +0 7675(been,)m 559(and)s 963(the)s 1311(encouragement)s 2832(w)s 2(as)k +3253(greatly)s 3970(appreciated.)s +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: iii 3 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +/pgsave save def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +1 LoutMargSet +grestore +480 fnt84 0 12955(Contents)m 240 fnt84 0 11982(Chapter)m 908(1)s +240 fnt82 1015 11983(.)m 240 fnt84 1179 11982(Principles)m 240 fnt82 +2738 11983(..)m 3082(..)s 3426(..)s 3770(..)s 4114(..)s +4458(..)s 4802(..)s 5146(..)s 5490(..)s 5834(..)s +6178(..)s 6522(..)s 6866(..)s 7210(..)s 7554(..)s +7898(..)s 8242(..)s 8971(1)s 720 11638(1.1.)m 1184(Objects)s +2394(..)s 2738(..)s 3082(..)s 3426(..)s 3770(..)s +4114(..)s 4458(..)s 4802(..)s 5146(..)s 5490(..)s +5834(..)s 6178(..)s 6522(..)s 6866(..)s 7210(..)s +7554(..)s 7898(..)s 8242(..)s 8971(1)s 720 11293(1.2.)m +1184(De\207nitions)s 2738(..)s 3082(..)s 3426(..)s 3770(..)s +4114(..)s 4458(..)s 4802(..)s 5146(..)s 5490(..)s +5834(..)s 6178(..)s 6522(..)s 6866(..)s 7210(..)s +7554(..)s 7898(..)s 8242(..)s 8962(3)s 720 10948(1.3.)m +1184(Cross)s 1780(references)s 3082(..)s 3426(..)s 3770(..)s +4114(..)s 4458(..)s 4802(..)s 5146(..)s 5490(..)s +5834(..)s 6178(..)s 6522(..)s 6866(..)s 7210(..)s +7554(..)s 7898(..)s 8242(..)s 8958(7)s 720 10603(1.4.)m +1184(Galle)s 3(ys)k 2394(..)s 2738(..)s 3082(..)s +3426(..)s 3770(..)s 4114(..)s 4458(..)s 4802(..)s +5146(..)s 5490(..)s 5834(..)s 6178(..)s 6522(..)s +6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s +8955(9)s 240 fnt84 0 9974(Chapter)m 908(2)s 240 fnt82 +1023 9975(.)m 240 fnt84 1187 9974(Details)m 240 fnt82 2394 9975(..)m +2738(..)s 3082(..)s 3426(..)s 3770(..)s 4114(..)s +4458(..)s 4802(..)s 5146(..)s 5490(..)s 5834(..)s +6178(..)s 6522(..)s 6866(..)s 7210(..)s 7554(..)s +7898(..)s 8242(..)s 8842(13)s 720 9630(2.1.)m 1184(Le)s 3(xical)k +1952(structure)s 2843(\(w)s 2(ords,)k 3612(spaces,)s 4343(symbols\))s +5269(and)s 5673(macros)s 6866(..)s 7210(..)s 7554(..)s +7898(..)s 8242(..)s 8842(13)s 720 9285(2.2.)m 1184(Named)s +1933(parameters)s 3426(..)s 3770(..)s 4114(..)s 4458(..)s +4802(..)s 5146(..)s 5490(..)s 5834(..)s 6178(..)s +6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s +8242(..)s 8840(15)s 720 8940(2.3.)m 1184(Nested)s 1906(de\207nitions,)s +3023(body)s 3557(parameters,)s 4711(e)s 3(xtend,)k 5453(import,)s +6197(and)s 6601(e)s 3(xport)k 7554(..)s 7898(..)s +8242(..)s 8838(17)s 720 8595(2.4.)m 1184(Filtered)s 1984(right)s +2495(and)s 2899(body)s 3433(parameters)s 4802(..)s 5146(..)s +5490(..)s 5834(..)s 6178(..)s 6522(..)s 6866(..)s +7210(..)s 7554(..)s 7898(..)s 8242(..)s 8831(20)s +720 8250(2.5.)m 1184(Precedence)s 2328(and)s 2732(associati)s 6(vity)k +3974(of)s 4245(symbols)s 5490(..)s 5834(..)s 6178(..)s +6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s +8242(..)s 8832(22)s 720 7905(2.6.)m 1184(The)s 1612(style)s +2119(and)s 2523(size)s 2950(of)s 3221(objects)s 4458(..)s +4802(..)s 5146(..)s 5490(..)s 5834(..)s 6178(..)s +6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s +8242(..)s 8842(23)s 720 7560(2.7.)m 1184(Galle)s 3(ys)k +1962(and)s 2366(tar)s 4(gets)k 3426(..)s 3770(..)s +4114(..)s 4458(..)s 4802(..)s 5146(..)s 5490(..)s +5834(..)s 6178(..)s 6522(..)s 6866(..)s 7210(..)s +7554(..)s 7898(..)s 8242(..)s 8840(25)s 720 7215(2.8.)m +1184(Sorted)s 1866(g)s 1(alle)k 3(ys)k 3082(..)s +3426(..)s 3770(..)s 4114(..)s 4458(..)s 4802(..)s +5146(..)s 5490(..)s 5834(..)s 6178(..)s 6522(..)s +6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s +8832(32)s 720 6870(2.9.)m 1184(Horizontal)s 2261(g)s 1(alle)k 3(ys)k +3426(..)s 3770(..)s 4114(..)s 4458(..)s 4802(..)s +5146(..)s 5490(..)s 5834(..)s 6178(..)s 6522(..)s +6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s +8842(33)s 720 6525(2.10.)m 1304(Optimal)s 2142(g)s 1(alle)k 3(y)k +2776(breaking)s 4114(..)s 4458(..)s 4802(..)s 5146(..)s +5490(..)s 5834(..)s 6178(..)s 6522(..)s 6866(..)s +7210(..)s 7554(..)s 7898(..)s 8242(..)s 8840(35)s +240 fnt84 0 5896(Chapter)m 908(3)s 240 fnt82 1021 5897(.)m +240 fnt84 1185 5896(Pr)m 4(ede\207ned)k 2338(symbols)s 240 fnt82 +3426 5897(..)m 3770(..)s 4114(..)s 4458(..)s 4802(..)s +5146(..)s 5490(..)s 5834(..)s 6178(..)s 6522(..)s +6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s +8833(36)s 720 5552(3.1.)m 1184(@Be)s 3(gin)k 2031(and)s +2435(@End)s 3426(..)s 3770(..)s 4114(..)s 4458(..)s +4802(..)s 5146(..)s 5490(..)s 5834(..)s 6178(..)s +6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s +8242(..)s 8833(36)s 720 5207(3.2.)m 1184(Concatenation)s 2623(symbols)s +3472(and)s 3876(paragraphs)s 5490(..)s 5834(..)s 6178(..)s +6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s +8242(..)s 8833(36)s 720 4862(3.3.)m 1184(@F)s 3(ont)k +1901(and)s 2305(@Char)s 3426(..)s 3770(..)s 4114(..)s +4458(..)s 4802(..)s 5146(..)s 5490(..)s 5834(..)s +6178(..)s 6522(..)s 6866(..)s 7210(..)s 7554(..)s +7898(..)s 8242(..)s 8831(40)s 720 4517(3.4.)m 1184(@Break)s +2394(..)s 2738(..)s 3082(..)s 3426(..)s 3770(..)s +4114(..)s 4458(..)s 4802(..)s 5146(..)s 5490(..)s +5834(..)s 6178(..)s 6522(..)s 6866(..)s 7210(..)s +7554(..)s 7898(..)s 8242(..)s 8832(42)s 720 4172(3.5.)m +1184(@Space)s 2394(..)s 2738(..)s 3082(..)s 3426(..)s +3770(..)s 4114(..)s 4458(..)s 4802(..)s 5146(..)s +5490(..)s 5834(..)s 6178(..)s 6522(..)s 6866(..)s +7210(..)s 7554(..)s 7898(..)s 8242(..)s 8842(43)s +720 3827(3.6.)m 1184(@YUnit,)s 2110(@ZUnit,)s 3009(@CurrYUnit,)s 4373(and)s +4777(@CurrZUnit)s 6522(..)s 6866(..)s 7210(..)s 7554(..)s +7898(..)s 8242(..)s 8832(44)s 720 3482(3.7.)m 1184(@SetColour)s +2435(and)s 2839(@SetColor)s 4458(..)s 4802(..)s 5146(..)s +5490(..)s 5834(..)s 6178(..)s 6522(..)s 6866(..)s +7210(..)s 7554(..)s 7898(..)s 8242(..)s 8840(45)s +720 3137(3.8.)m 1184(@Outline)s 2394(..)s 2738(..)s 3082(..)s +3426(..)s 3770(..)s 4114(..)s 4458(..)s 4802(..)s +5146(..)s 5490(..)s 5834(..)s 6178(..)s 6522(..)s +6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s +8833(46)s 720 2792(3.9.)m 1184(@Language)s 2405(and)s 2809(@CurrLang)s +4458(..)s 4802(..)s 5146(..)s 5490(..)s 5834(..)s +6178(..)s 6522(..)s 6866(..)s 7210(..)s 7554(..)s +7898(..)s 8242(..)s 8833(46)s 720 2447(3.10.)m 1304(@OneCol)s +2325(and)s 2729(@OneRo)s 6(w)k 4114(..)s 4458(..)s +4802(..)s 5146(..)s 5490(..)s 5834(..)s 6178(..)s +6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s +8242(..)s 8838(47)s 720 2102(3.11.)m 1304(@W)s 9(ide)k +2090(and)s 2494(@High)s 3770(..)s 4114(..)s 4458(..)s +4802(..)s 5146(..)s 5490(..)s 5834(..)s 6178(..)s +6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s +8242(..)s 8839(48)s 720 1757(3.12.)m 1304(@HShift)s 2222(and)s +2626(@VShift)s 3770(..)s 4114(..)s 4458(..)s 4802(..)s +5146(..)s 5490(..)s 5834(..)s 6178(..)s 6522(..)s +6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s +8839(48)s 720 1412(3.13.)m 1304(@HExpand)s 2488(and)s 2892(@VExpand)s +4458(..)s 4802(..)s 5146(..)s 5490(..)s 5834(..)s +6178(..)s 6522(..)s 6866(..)s 7210(..)s 7554(..)s +7898(..)s 8242(..)s 8839(48)s 720 1067(3.14.)m 1304(@HContract)s +2581(and)s 2985(@VContract)s 4458(..)s 4802(..)s 5146(..)s +5490(..)s 5834(..)s 6178(..)s 6522(..)s 6866(..)s +7210(..)s 7554(..)s 7898(..)s 8242(..)s 8835(49)s +720 722(3.15.)m 1304(@HLimited)s 2512(and)s 2916(@VLimited)s 4458(..)s +4802(..)s 5146(..)s 5490(..)s 5834(..)s 6178(..)s +6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s +8242(..)s 8835(49)s 720 377(3.16.)m 1304(@HAdjust,)s 2443(@V)s 32(Adjust,)k +3550(and)s 3954(@P)s 22(Adjust)k 5490(..)s 5834(..)s +6178(..)s 6522(..)s 6866(..)s 7210(..)s 7554(..)s +7898(..)s 8242(..)s 8835(49)s +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: iv 4 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +/pgsave save def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +0 LoutMargSet +grestore +720 13808(3.17.)m 1304(@HScale)s 2271(and)s 2675(@VScale)s 4114(..)s +4458(..)s 4802(..)s 5146(..)s 5490(..)s 5834(..)s +6178(..)s 6522(..)s 6866(..)s 7210(..)s 7554(..)s +7898(..)s 8242(..)s 8831(50)s 720 13463(3.18.)m 1304(@HCo)s 3(v)k 3(er)k +2337(and)s 2741(@VCo)s 3(v)k 3(er)k 4114(..)s +4458(..)s 4802(..)s 5146(..)s 5490(..)s 5834(..)s +6178(..)s 6522(..)s 6866(..)s 7210(..)s 7554(..)s +7898(..)s 8242(..)s 8831(50)s 720 13118(3.19.)m 1304(@StartHSpan,@StartVSpan,)s +4117(@StartHVSpan,)s 5720(@HSpan,)s 6700(and)s 7104(@VSpan)s 8242(..)s +8851(51)s 720 12773(3.20.)m 1304(@Scale)s 2394(..)s 2738(..)s +3082(..)s 3426(..)s 3770(..)s 4114(..)s 4458(..)s +4802(..)s 5146(..)s 5490(..)s 5834(..)s 6178(..)s +6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s +8242(..)s 8832(52)s 720 12428(3.21.)m 1304(@Rotate)s 2394(..)s +2738(..)s 3082(..)s 3426(..)s 3770(..)s 4114(..)s +4458(..)s 4802(..)s 5146(..)s 5490(..)s 5834(..)s +6178(..)s 6522(..)s 6866(..)s 7210(..)s 7554(..)s +7898(..)s 8242(..)s 8832(52)s 720 12083(3.22.)m 1304(@Background)s +3082(..)s 3426(..)s 3770(..)s 4114(..)s 4458(..)s +4802(..)s 5146(..)s 5490(..)s 5834(..)s 6178(..)s +6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s +8242(..)s 8842(53)s 720 11738(3.23.)m 1304(@K)s 6(ernShrink)k +3082(..)s 3426(..)s 3770(..)s 4114(..)s 4458(..)s +4802(..)s 5146(..)s 5490(..)s 5834(..)s 6178(..)s +6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s +8242(..)s 8842(53)s 720 11393(3.24.)m 1304(@Common,)s 2524(@Rump,)s +3438(and)s 3842(@Meld)s 5146(..)s 5490(..)s 5834(..)s +6178(..)s 6522(..)s 6866(..)s 7210(..)s 7554(..)s +7898(..)s 8242(..)s 8832(54)s 720 11048(3.25.)m 1304(@Insert)s +2394(..)s 2738(..)s 3082(..)s 3426(..)s 3770(..)s +4114(..)s 4458(..)s 4802(..)s 5146(..)s 5490(..)s +5834(..)s 6178(..)s 6522(..)s 6866(..)s 7210(..)s +7554(..)s 7898(..)s 8242(..)s 8832(54)s 720 10703(3.26.)m +1304(@OneOf)s 2738(..)s 3082(..)s 3426(..)s 3770(..)s +4114(..)s 4458(..)s 4802(..)s 5146(..)s 5490(..)s +5834(..)s 6178(..)s 6522(..)s 6866(..)s 7210(..)s +7554(..)s 7898(..)s 8242(..)s 8840(55)s 720 10358(3.27.)m +1304(@Ne)s 3(xt)k 2394(..)s 2738(..)s 3082(..)s +3426(..)s 3770(..)s 4114(..)s 4458(..)s 4802(..)s +5146(..)s 5490(..)s 5834(..)s 6178(..)s 6522(..)s +6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s +8833(56)s 720 10013(3.28.)m 1304(@Case)s 2394(..)s 2738(..)s +3082(..)s 3426(..)s 3770(..)s 4114(..)s 4458(..)s +4802(..)s 5146(..)s 5490(..)s 5834(..)s 6178(..)s +6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s +8242(..)s 8833(56)s 720 9668(3.29.)m 1304(@Moment)s 2738(..)s +3082(..)s 3426(..)s 3770(..)s 4114(..)s 4458(..)s +4802(..)s 5146(..)s 5490(..)s 5834(..)s 6178(..)s +6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s +8242(..)s 8838(57)s 720 9323(3.30.)m 1304(@Null)s 2394(..)s +2738(..)s 3082(..)s 3426(..)s 3770(..)s 4114(..)s +4458(..)s 4802(..)s 5146(..)s 5490(..)s 5834(..)s +6178(..)s 6522(..)s 6866(..)s 7210(..)s 7554(..)s +7898(..)s 8242(..)s 8839(58)s 720 8978(3.31.)m 1304(@Galle)s 3(y)k +2213(and)s 2617(@F)s 3(orceGalle)k 3(y)k 4458(..)s +4802(..)s 5146(..)s 5490(..)s 5834(..)s 6178(..)s +6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s +8242(..)s 8839(58)s 720 8633(3.32.)m 1304(@Be)s 3(ginHeaderComponent,)k +4041(@EndHeaderComponent,)s 6596(@SetHeaderCom)s 8278(-)s 1304 8345(ponent,)m 2063(and)s +2467(@ClearHeaderComponent)s 5490(..)s 5834(..)s 6178(..)s 6522(..)s +6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s +8839(58)s 720 8000(3.33.)m 1304(@NotRe)s 6(v)k 3(ealed)k +3082(..)s 3426(..)s 3770(..)s 4114(..)s 4458(..)s +4802(..)s 5146(..)s 5490(..)s 5834(..)s 6178(..)s +6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s +8242(..)s 8831(60)s 720 7655(3.34.)m 1304(The)s 1732(cross)s +2274(reference)s 3217(symbols)s 4066(&&)s 4492(and)s 4896(&&&)s +5834(..)s 6178(..)s 6522(..)s 6866(..)s 7210(..)s +7554(..)s 7898(..)s 8242(..)s 8851(61)s 720 7310(3.35.)m +1304(@T)s 19(agged)k 2738(..)s 3082(..)s 3426(..)s +3770(..)s 4114(..)s 4458(..)s 4802(..)s 5146(..)s +5490(..)s 5834(..)s 6178(..)s 6522(..)s 6866(..)s +7210(..)s 7554(..)s 7898(..)s 8242(..)s 8851(61)s +720 6965(3.36.)m 1304(@Open and @Use)s 3426(..)s 3770(..)s 4114(..)s +4458(..)s 4802(..)s 5146(..)s 5490(..)s 5834(..)s +6178(..)s 6522(..)s 6866(..)s 7210(..)s 7554(..)s +7898(..)s 8242(..)s 8832(62)s 720 6620(3.37.)m 1304(@Database and @SysDatabase)s +4802(..)s 5146(..)s 5490(..)s 5834(..)s 6178(..)s +6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s +8242(..)s 8832(62)s 720 6275(3.38.)m 1304(@Graphic)s 2738(..)s +3082(..)s 3426(..)s 3770(..)s 4114(..)s 4458(..)s +4802(..)s 5146(..)s 5490(..)s 5834(..)s 6178(..)s +6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s +8242(..)s 8842(63)s 720 5930(3.39.)m 1304(@PlainGraphic)s 3082(..)s +3426(..)s 3770(..)s 4114(..)s 4458(..)s 4802(..)s +5146(..)s 5490(..)s 5834(..)s 6178(..)s 6522(..)s +6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s +8838(67)s 720 5585(3.40.)m 1304(@IncludeGraphic)s 3065(and)s 3469(@SysIncludeGraphic)s +5834(..)s 6178(..)s 6522(..)s 6866(..)s 7210(..)s +7554(..)s 7898(..)s 8242(..)s 8838(67)s 720 5240(3.41.)m +1304(@PrependGraphic and @SysPrependGraphic)s 6178(..)s 6522(..)s 6866(..)s 7210(..)s +7554(..)s 7898(..)s 8242(..)s 8838(67)s 720 4895(3.42.)m +1304(@Include and @SysInclude)s 4458(..)s 4802(..)s 5146(..)s 5490(..)s +5834(..)s 6178(..)s 6522(..)s 6866(..)s 7210(..)s +7554(..)s 7898(..)s 8242(..)s 8839(68)s 720 4550(3.43.)m +1304(@BackEnd)s 2461(and)s 2865(the)s 3213(PlainT)s 16(e)k 3(xt)k +4183(and)s 4587(PDF)s 5084(back)s 5597(ends)s 6522(..)s +6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s +8839(68)s 720 4205(3.44.)m 1304(@V)s 26(erbatim and @Ra)k 3(wV)k 26(erbatim)k +4802(..)s 5146(..)s 5490(..)s 5834(..)s 6178(..)s +6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s +8242(..)s 8835(69)s 720 3860(3.45.)m 1304(@Underline)s 2738(..)s +3082(..)s 3426(..)s 3770(..)s 4114(..)s 4458(..)s +4802(..)s 5146(..)s 5490(..)s 5834(..)s 6178(..)s +6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s +8242(..)s 8835(69)s 720 3515(3.46.)m 1304(@P)s 3(ageLabel)k +3082(..)s 3426(..)s 3770(..)s 4114(..)s 4458(..)s +4802(..)s 5146(..)s 5490(..)s 5834(..)s 6178(..)s +6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s +8242(..)s 8831(70)s 240 fnt84 0 2886(Chapter)m 908(4)s +240 fnt82 1022 2887(.)m 240 fnt84 1186 2886(Examples)m 240 fnt82 +2738 2887(..)m 3082(..)s 3426(..)s 3770(..)s 4114(..)s +4458(..)s 4802(..)s 5146(..)s 5490(..)s 5834(..)s +6178(..)s 6522(..)s 6866(..)s 7210(..)s 7554(..)s +7898(..)s 8242(..)s 8851(71)s 720 2542(4.1.)m 1184(An)s +1534(equation)s 2415(formatting)s 3476(package)s 4802(..)s 5146(..)s +5490(..)s 5834(..)s 6178(..)s 6522(..)s 6866(..)s +7210(..)s 7554(..)s 7898(..)s 8242(..)s 8851(71)s +720 2197(4.2.)m 1184(P)s 3(aragraphs,)k 2350(displays,)s 3241(and)s +3645(lists)s 4458(..)s 4802(..)s 5146(..)s 5490(..)s +5834(..)s 6178(..)s 6522(..)s 6866(..)s 7210(..)s +7554(..)s 7898(..)s 8242(..)s 8842(73)s 720 1852(4.3.)m +1184(P)s 3(age)k 1702(layout)s 2738(..)s 3082(..)s +3426(..)s 3770(..)s 4114(..)s 4458(..)s 4802(..)s +5146(..)s 5490(..)s 5834(..)s 6178(..)s 6522(..)s +6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s +8838(77)s 720 1507(4.4.)m 1184(Chapters)s 2085(and)s 2489(sections)s +3770(..)s 4114(..)s 4458(..)s 4802(..)s 5146(..)s +5490(..)s 5834(..)s 6178(..)s 6522(..)s 6866(..)s +7210(..)s 7554(..)s 7898(..)s 8242(..)s 8832(82)s +720 1162(4.5.)m 1184(Bibliographies)s 3082(..)s 3426(..)s 3770(..)s +4114(..)s 4458(..)s 4802(..)s 5146(..)s 5490(..)s +5834(..)s 6178(..)s 6522(..)s 6866(..)s 7210(..)s +7554(..)s 7898(..)s 8242(..)s 8838(87)s 0 3(i)m 6(v)k + +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: v 5 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +/pgsave save def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +1 LoutMargSet +grestore +240 fnt84 0 13841(Refer)m 4(ences)k 240 fnt82 1362 13842(..)m +1706(..)s 2050(..)s 2394(..)s 2738(..)s 3082(..)s +3426(..)s 3770(..)s 4114(..)s 4458(..)s 4802(..)s +5146(..)s 5490(..)s 5834(..)s 6178(..)s 6522(..)s +6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s +8832(92)s 240 fnt84 0 13215(Index)m 240 fnt82 1018 13216(..)m +1362(..)s 1706(..)s 2050(..)s 2394(..)s 2738(..)s +3082(..)s 3426(..)s 3770(..)s 4114(..)s 4458(..)s +4802(..)s 5146(..)s 5490(..)s 5834(..)s 6178(..)s +6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s +8242(..)s 8842(93)s 8951 3(v)m +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: vi 6 +%%BeginPageSetup +%%PageResources: font Times-Roman +/pgsave save def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +0 LoutMargSet +grestore +0 3(vi)m +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 1 7 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +%%+ font Times-Italic +/pgsave save def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +1 LoutMargSet +grestore +480 fnt84 0 12955(Chapter)m 1819(1.)s 2400(Principles)s 240 fnt82 +0 12004(The)m 414(Lout)s 911(document)s 1900(formatting)s 2946(language)s +3852(is)s 4047(based)s 4635(on)s 4917(just)s 5307(four)s +5751(k)s 2(e)k 3(y)k 6131(ideas:)s 6713(objects,)s +7482(de\207nitions,)s 8584(cross)s 0 11716(references,)m 1087(and)s 1491(g)s 1(alle)k 3(ys.)k +2328(This)s 2804(chapter)s 3567(concentrates)s 4812(on)s 5109(them,)s +5694(postponing)s 6812(the)s 7160(ine)s 6(vitable)k 8152(details.)s +240 fnt84 0 10923(1.1.)m 471(Objects)s 240 fnt82 480 10447(Since)m +1075(our)s 1462(aim)s 1888(is)s 2106(to)s 2354(produce)s +3189(neatly)s 3835(formatted)s 4829(documents,)s 5981(we)s 6325(should)s +7030(be)s 3(gin)k 7624(by)s 7926(looking)s 8719(at)s +8960(a)s 0 10159(typical)m 705(e)s 3(xample)k 1568(of)s +1839(such)s 2335(a)s 2501(document:)s 1927 2494 0 2494 240 288 60 480 7325 LoutGr2 +0 0 moveto xsize 0 lineto xsize ysize lineto +0 ysize lineto closepath stroke +grestore +160 fnt84 560 1987(PURCELL)m +128 fnt82 1316 2059(1)m 160 fnt82 170 1695(In)m 395(the)s +681(w)s 1(orld)k 1145(of)s 1381(music)s 170 1515(England)m +882(is)s 1163(supposed)s 170 1335(to)m 376(be)s 611(a)s +768(mere)s 1171(pro)s 2(vince.)k 170 1155(If)m 465(she)s +856(produces)s 1608(an)s 170 975(indif)m 4(ferent)k 1136(composer)s +567 0 0 0 160 180 40 170 763 LoutGr2 +0 0 moveto xsize 0 lineto stroke +grestore + +grestore +128 fnt82 170 624(1)m 160 fnt82 221 552(Blom,)m 703(Eric.)s +160 fnt83 1133 553(Some)m 170 373(Gr)m 5(eat)k 734(Composer)s 1(s.)k +160 fnt82 170 192(Oxford,)m 703(1944.)s +grestore +1927 2494 0 2494 240 288 60 480 4831 LoutGr2 +0 0 moveto xsize 0 lineto xsize ysize lineto +0 ysize lineto closepath stroke +grestore +160 fnt82 170 2161(or)m +453(performer)s 6(,)k 1267(that)s 1657(is)s 170 1981(re)m 2(garded)k +862(else)s 4(where)k 1630(as)s 170 1801(perfectly)m 905(normal)s +1527(and)s 170 1621(natural;)m 762(b)s 3(ut)k 1078(if)s +1298(foreign)s 170 1441(students)m 905(of)s 1264(musical)s 170 1261(history)m +976(ha)s 3(v)k 2(e)k 1637(to)s 170 1081(ackno)m 4(wledge)k +1130(a)s 1326(British)s 170 901(musical)m 795(genius,)s 1376(he)s +1657(is)s 170 721(considered)m 901(a)s 1012(freak.)s 490 488(Such)m +957(a)s 1178(freak)s 1657(is)s 170 308(Henry)m 607(Purcell.)s +1170(Y)s 16(et)k 1426(if)s 1574(we)s +grestore +1927 2494 0 2494 240 288 60 480 2337 LoutGr2 +0 0 moveto xsize 0 lineto xsize ysize lineto +0 ysize lineto closepath stroke +grestore +160 fnt82 +170 2161(mak)m 1(e)k 565(a)s 690(choice)s 1157(of)s +1352(\207fteen)s 170 1981(of)m 407(the)s 695(w)s 1(orld')k 8(s)k +1264(musical)s 170 1801(classics,)m 740(as)s 918(here,)s 1276(we)s +1510(\207nd)s 170 1621(that)m 464(we)s 703(cannot)s 1185(omit)s +1533(this)s 170 1441(English)m 695(master)s 8(.)k +grestore +0 1886(It)m +229(is)s 463(a)s 653(lar)s 4(ge)k 1206(rectangle)s +2161(made)s 2759(from)s 3307(three)s 3864(smaller)s 4651(rectangles)s +5694(\211)s 5898(its)s 6198(pages.)s 6931(Each)s 7490(page)s +8022(is)s 8256(made)s 8855(of)s 0 1598(lines;)m 578(each)s +1088(line)s 1517(is)s 1743(made)s 2332(of)s 2618(w)s 2(ords,)k +3324(although)s 4234(it)s 4441(mak)s 2(es)k 5117(sense)s +5706(for)s 6059(an)s 3(y)k 6472(rectangle)s 7418(\(e)s 6(v)k 3(en)k +8012(a)s 8194(complete)s 0 1310(document\))m 1072(to)s 1311(be)s +1593(part)s 2024(of)s 2295(a)s 2461(line,)s 2926(pro)s 3(vided)k +3832(it)s 4024(is)s 4234(not)s 4600(too)s 4959(lar)s 4(ge.)k +480 936(Lout)m 995(deals)s 1541(with)s 2027(something)s 3081(a)s +3251(little)s 3747(more)s 4298(complicated)s 5528(than)s 6001(rectangles:)s +240 fnt83 7079 938(objects.)m 240 fnt82 7914 936(An)m 8268(object)s +8916(is)s 0 648(a)m 176(rectangle)s 1118(with)s 1611(at)s +1854(least)s 2362(one)s 240 fnt83 2775 650(column)m 3545(mark)s +240 fnt82 4112 648(protruding)m 5186(abo)s 3(v)k 3(e)k +5819(and)s 6234(belo)s 6(w)k 6878(it,)s 7128(and)s +7543(at)s 7786(least)s 8294(one)s 240 fnt83 8707 650(r)m 10(ow)k +192 fnt84 4490 0(1)m +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 2 8 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +%%+ font Times-Italic +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +0 LoutMargSet +grestore +240 fnt84 0 13840(2)m 240 fnt83 6965 13843(Chapter)m 7815(1.)s +8089(Principles)s 0 13205(mark)m 240 fnt82 557 13203(protruding)m 1621(to)s +1861(the)s 2211(left)s 2589(and)s 2994(right.)s 3611(The)s +4040(simplest)s 4897(objects)s 5627(contain)s 6389(w)s 2(ords)k +7024(lik)s 2(e)k 7438(metempsychosis,)s 0 12915(and)m 404(ha)s 4(v)k 3(e)k +905(one)s 1307(mark)s 1859(of)s 2130(each)s 2625(type:)s +1572 215 0 106 240 288 60 480 12360 LoutGr2 +grestore save gsave 200 dict begin lfigdict begin +grestore +1572 215 0 106 240 288 60 0 0 LoutGr2 +/lfiglightgrey [ lfigbox ] gsave lfigpaintpath grestore +0.015 cm setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigbox ] lfigdopath +pop pop +grestore +1572 215 0 106 240 288 60 0 0 LoutGr2 + +0.015 cm setlinewidth lfiground setlinecap +0.15 cm /lfigdashed [ -0.3 cm ymark +xsize ymark 0.3 cm 0 lfigpadd [] +xmark -0.3 cm +xmark ysize 0 0.3 cm lfigpadd ] lfigdopath +pop pop +grestore +0 52(metempsychosis)m +grestore + +grestore +end end restore +grestore +0 11909(The)m 441(rectangle)s 1386(e)s 3(xactly)k +2141(encloses)s 3016(the)s 3377(w)s 2(ord;)k 3993(its)s +4283(column)s 5072(mark)s 5637(is)s 5861(at)s 6107(the)s +6469(left)s 6859(edge,)s 7432(and)s 7850(its)s 8140(ro)s 6(w)k +8574(mark)s 0 11621(passes)m 668(through)s 1477(the)s 1831(middle)s +2558(of)s 2835(the)s 3190(lo)s 6(wer)k 4(-case)k +4276(letters.)s 5029(The)s 5463(rectangle)s 6401(and)s 6811(marks)s +7453(do)s 7752(not)s 8125(appear)s 8829(on)s 0 11333(the)m +348(printed)s 1083(page,)s 1642(b)s 4(ut)k 2004(to)s +2243(understand)s 3351(what)s 3876(Lout)s 4388(is)s 4598(doing)s +5197(you)s 5612(ha)s 4(v)k 3(e)k 6113(to)s +6352(imagine)s 7178(them.)s 480 10959(T)m 19(o)k 782(place)s +1344(tw)s 2(o)k 1756(objects)s 2487(side)s 2930(by)s +3226(side,)s 3721(we)s 4058(separate)s 4898(them)s 5438(by)s +5735(the)s 6085(symbol)s 220 fnt35 6847 10956(|,)m 240 fnt82 +7009 10959(which)m 7653(denotes)s 8437(the)s 8788(act)s 0 10671(of)m +240 fnt83 271 10673(horizontal)m 1315(concatenation)s 240 fnt82 2665 10671(.)m +2829(So,)s 3189(if)s 3406(we)s 3741(write)s 220 fnt35 +480 10189(USA | A)m 6(ustr)k 2(alia)k 240 fnt82 0 9734(the)m +348(result)s 938(will)s 1364(be)s 1646(the)s 1994(object)s +476 165 0 57 240 288 60 480 9228 LoutGr2 +grestore save gsave 200 dict begin lfigdict begin +grestore +476 165 0 57 240 288 60 0 0 LoutGr2 +/lfiglightgrey [ lfigbox ] gsave lfigpaintpath grestore +0.015 cm setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigbox ] lfigdopath +pop pop +grestore +476 165 0 57 240 288 60 0 0 LoutGr2 + +0.015 cm setlinewidth lfiground setlinecap +0.15 cm /lfigdashed [ -0.3 cm ymark +xsize ymark 0.3 cm 0 lfigpadd [] +xmark -0.3 cm +xmark ysize 0 0.3 cm lfigpadd ] lfigdopath +pop pop +grestore +0 3(USA)m +grestore + +grestore +end end restore +grestore +875 165 0 56 240 288 60 956 9229 LoutGr2 +grestore save gsave 200 dict begin lfigdict begin +grestore +875 165 0 56 240 288 60 0 0 LoutGr2 +/lfiglightgrey [ lfigbox ] gsave lfigpaintpath grestore +0.015 cm setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigbox ] lfigdopath +pop pop +grestore +875 165 0 56 240 288 60 0 0 LoutGr2 + +0.015 cm setlinewidth lfiground setlinecap +0.15 cm /lfigdashed [ -0.3 cm ymark +xsize ymark 0.3 cm 0 lfigpadd [] +xmark -0.3 cm +xmark ysize 0 0.3 cm lfigpadd ] lfigdopath +pop pop +grestore +0 2(Australia)m +grestore + +grestore +end end restore +grestore +0 8777(Notice)m 718(that)s 1162(this)s +1583(object)s 2253(has)s 2648(tw)s 2(o)k 3084(column)s +3884(marks,)s 4601(b)s 4(ut)k 4988(still)s 5426(only)s +5931(one)s 6359(ro)s 6(w)k 6804(mark,)s 7428(because)s +220 fnt35 8266 8774(|)m 240 fnt82 8389 8777(mer)m 4(ges)k +0 8489(the)m 382(tw)s 2(o)k 827(ro)s 6(w)k +1282(marks)s 1952(together)s 13(.)k 2921(This)s 3431(mer)s 4(ging)k +4312(of)s 4618(ro)s 6(w)k 5073(marks)s 5743(\207x)s 3(es)k +6277(the)s 6660(v)s 3(ertical)k 7462(position)s 8325(of)s +8631(each)s 0 8201(object)m 647(with)s 1133(respect)s 1873(to)s +2115(the)s 2467(other)s 9(,)k 3060(b)s 4(ut)k +3425(it)s 3621(does)s 4115(not)s 4485(determine)s 5499(ho)s 6(w)k +5964(f)s 2(ar)k 6290(apart)s 6830(the)s 3(y)k +7297(are.)s 7756(This)s 8236(distance,)s 0 7913(or)m 240 fnt83 +276 7915(gap)m 240 fnt82 629 7913(,)m 753(may)s 1236(be)s +1536(gi)s 6(v)k 3(en)k 2133(just)s 2555(after)s +3069(the)s 3434(symbol,)s 4263(as)s 4531(in)s 220 fnt35 +4791 7910(|0.5i)m 240 fnt82 5264 7913(for)m 5620(e)s 3(xample,)k +6551(which)s 7210(speci\207es)s 8102(horizontal)s 0 7625(concatenation)m 1385(with)s +1867(a)s 2033(g)s 1(ap)k 2431(of)s 2702(half)s +3145(an)s 3428(inch.)s 4004(If)s 4234(no)s 4527(g)s 1(ap)k +4925(is)s 5135(gi)s 6(v)k 3(en,)k 5765(it)s +5957(is)s 6167(assumed)s 7049(to)s 7288(be)s 220 fnt35 +7570 7622(0i)m 240 fnt82 7726 7625(.)m 240 fnt83 480 7253(V)m 26(ertical)k +1283(concatenation)s 240 fnt82 2633 7251(,)m 2740(denoted)s 3556(by)s +220 fnt35 3850 7248(/)m 240 fnt82 3914 7251(,)m 4021(is)s +4231(the)s 4579(same)s 5126(apart)s 5663(from)s 6187(the)s +6535(change)s 7269(of)s 7540(direction:)s 220 fnt35 480 6750(A)m 6(ustr)k 2(alia /0.1i USA)k +240 fnt82 0 6295(has)m 370(result)s 875 165 0 56 240 288 60 480 5840 LoutGr2 +grestore save gsave 200 dict begin lfigdict begin +grestore +875 165 0 56 240 288 60 0 0 LoutGr2 +/lfiglightgrey [ lfigbox ] gsave lfigpaintpath grestore +0.015 cm setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigbox ] lfigdopath +pop pop +grestore +875 165 0 56 240 288 60 0 0 LoutGr2 + +0.015 cm setlinewidth lfiground setlinecap +0.15 cm /lfigdashed [ -0.3 cm ymark +xsize ymark 0.3 cm 0 lfigpadd [] +xmark -0.3 cm +xmark ysize 0 0.3 cm lfigpadd ] lfigdopath +pop pop +grestore +0 2(Australia)m +grestore + +grestore +end end restore +grestore +476 165 0 57 240 288 60 480 5531 LoutGr2 +grestore save gsave 200 dict begin lfigdict begin +grestore +476 165 0 57 240 288 60 0 0 LoutGr2 +/lfiglightgrey [ lfigbox ] gsave lfigpaintpath grestore +0.015 cm setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigbox ] lfigdopath +pop pop +grestore +476 165 0 57 240 288 60 0 0 LoutGr2 + +0.015 cm setlinewidth lfiground setlinecap +0.15 cm /lfigdashed [ -0.3 cm ymark +xsize ymark 0.3 cm 0 lfigpadd [] +xmark -0.3 cm +xmark ysize 0 0.3 cm lfigpadd ] lfigdopath +pop pop +grestore +0 3(USA)m + +grestore + +grestore +end end restore +grestore +0 5080(The)m 485(usual)s 1102(mer)s 4(ging)k 2005(of)s +2333(marks)s 3026(occurs,)s 3814(and)s 4275(no)s 6(w)k +4793(the)s 5199(g)s 1(ap)k 5654(determines)s 6810(the)s +7215(v)s 3(ertical)k 8040(separation.)s 0 4792(Horizontal)m 1077(and)s +1481(v)s 3(ertical)k 2248(can)s 2637(be)s 2919(combined:)s +220 fnt35 1000 4340(USA)m 2256(|0.2i)s 2772(A)s 6(ustr)k 2(alia)k +480 4052(/0.1i)m 1000(W)s 8(ashington)k 2256(|)s 2772(Canberr)s 2(a)k +240 fnt82 0 3553(has)m 370(result)s 476 165 0 57 240 288 60 480 3097 LoutGr2 +grestore save gsave 200 dict begin lfigdict begin +grestore +476 165 0 57 240 288 60 0 0 LoutGr2 +/lfiglightgrey [ lfigbox ] gsave lfigpaintpath grestore +0.015 cm setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigbox ] lfigdopath +pop pop +grestore +476 165 0 57 240 288 60 0 0 LoutGr2 + +0.015 cm setlinewidth lfiground setlinecap +0.15 cm /lfigdashed [ -0.3 cm ymark +xsize ymark 0.3 cm 0 lfigpadd [] +xmark -0.3 cm +xmark ysize 0 0.3 cm lfigpadd ] lfigdopath +pop pop +grestore +0 3(USA)m +grestore + +grestore +end end restore +grestore +659 166 0 57 240 288 60 956 3097 LoutGr2 +0 ymark moveto xsize 10 pt add ymark lineto [ 3 pt ] 0 setdash stroke +grestore + +grestore +875 165 0 56 240 288 60 1903 3098 LoutGr2 +grestore save gsave 200 dict begin lfigdict begin +grestore +875 165 0 56 240 288 60 0 0 LoutGr2 +/lfiglightgrey [ lfigbox ] gsave lfigpaintpath grestore +0.015 cm setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigbox ] lfigdopath +pop pop +grestore +875 165 0 56 240 288 60 0 0 LoutGr2 + +0.015 cm setlinewidth lfiground setlinecap +0.15 cm /lfigdashed [ -0.3 cm ymark +xsize ymark 0.3 cm 0 lfigpadd [] +xmark -0.3 cm +xmark ysize 0 0.3 cm lfigpadd ] lfigdopath +pop pop +grestore +0 2(Australia)m + +grestore + +grestore +end end restore +grestore +1135 215 0 106 240 288 60 480 2738 LoutGr2 +grestore save gsave 200 dict begin lfigdict begin +grestore +1135 215 0 106 240 288 60 0 0 LoutGr2 +/lfiglightgrey [ lfigbox ] gsave lfigpaintpath grestore +0.015 cm setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigbox ] lfigdopath +pop pop +grestore +1135 215 0 106 240 288 60 0 0 LoutGr2 + +0.015 cm setlinewidth lfiground setlinecap +0.15 cm /lfigdashed [ -0.3 cm ymark +xsize ymark 0.3 cm 0 lfigpadd [] +xmark -0.3 cm +xmark ysize 0 0.3 cm lfigpadd ] lfigdopath +pop pop +grestore +0 52(W)m 19(ashington)k +grestore + +grestore +end end restore +grestore +876 166 0 57 240 288 60 1903 2787 LoutGr2 +grestore save gsave 200 dict begin lfigdict begin +grestore +876 166 0 57 240 288 60 0 0 LoutGr2 +/lfiglightgrey [ lfigbox ] gsave lfigpaintpath grestore +0.015 cm setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigbox ] lfigdopath +pop pop +grestore +876 166 0 57 240 288 60 0 0 LoutGr2 + +0.015 cm setlinewidth lfiground setlinecap +0.15 cm /lfigdashed [ -0.3 cm ymark +xsize ymark 0.3 cm 0 lfigpadd [] +xmark -0.3 cm +xmark ysize 0 0.3 cm lfigpadd ] lfigdopath +pop pop +grestore +0 3(Canberra)m +grestore + +grestore +end end restore +grestore +0 2287(There)m 655(are)s +1044(se)s 6(v)k 3(eral)k 1808(things)s 2486(to)s +2768(note)s 3278(carefully)s 4222(here.)s 4839(White)s 5522(space)s +6151(\(including)s 7229(tabs)s 7707(and)s 8154(ne)s 6(wlines\))k +0 1999(adjacent)m 848(to)s 1078(a)s 1236(concatenation)s 2612(symbol)s +3364(is)s 3565(ignored,)s 4395(so)s 4652(it)s 4836(may)s +5293(be)s 5567(used)s 6055(to)s 6286(lay)s 6623(out)s +6981(the)s 7320(e)s 3(xpression)k 8388(clearly)s 15(.)k +0 1711(The)m 425(symbol)s 220 fnt35 1182 1708(|)m 240 fnt82 +1275 1711(tak)m 2(es)k 1812(precedence)s 2940(o)s 3(v)k 3(er)k +220 fnt35 3415 1708(/)m 240 fnt82 3479 1711(,)m 3583(which)s +4221(means)s 4880(that)s 5295(the)s 5639(ro)s 6(ws)k +6146(are)s 6490(formed)s 7234(\207rst,)s 7709(then)s 8174(v)s 3(ertically)k +0 1423(concatenated.)m 1420(The)s 1856(symbol)s 220 fnt35 2625 1420(/)m +240 fnt82 2757 1423(will)m 3191(mer)s 4(ge)k 3849(tw)s 2(o)k +4267(or)s 4535(more)s 5090(column)s 5873(marks,)s 6573(creating)s +7403(multiple)s 8264(columns)s 0 1135(\(and)m 220 fnt35 484 1132(|)m +240 fnt82 583 1135(will)m 1011(mer)s 4(ge)k 1662(tw)s 2(o)k +2073(or)s 2334(more)s 2883(ro)s 6(w)k 3305(marks\).)s +4134(This)s 4611(implies)s 5367(that)s 5787(the)s 6137(g)s 1(ap)k +220 fnt35 6536 1132(0.2i)m 240 fnt82 6937 1135(used)m 7436(abo)s 3(v)k 3(e)k +8060(is)s 8272(between)s 0 847(columns,)m 910(not)s 1268(indi)s 6(vidual)k +2278(items)s 2838(in)s 3072(columns;)s 3987(a)s 4144(g)s 1(ap)k +4534(in)s 4768(the)s 5108(second)s 5822(ro)s 6(w)k +6234(w)s 2(ould)k 6880(therefore)s 7789(be)s 8062(redundant,)s +0 559(and)m 404(so)s 670(is)s 880(omitted.)s 480 185(A)m +710(v)s 6(ariant)k 1427(of)s 220 fnt35 1698 182(/)m +240 fnt82 1822 185(called)m 220 fnt35 2450 182(//)m 240 fnt82 +2635 185(left-justi\207es)m 3825(tw)s 2(o)k 4235(objects)s 4963(instead)s +5698(of)s 5969(mer)s 4(ging)k 6815(their)s 7312(marks.)s + +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 3 9 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Italic +%%+ font Times-Bold +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +1 LoutMargSet +grestore +240 fnt83 0 13843(1.1.)m 454(Objects)s 240 fnt84 8953 13840(3)m +240 fnt82 480 13205(By)m 840(enclosing)s 1836(an)s 2145(object)s +2815(in)s 3085(braces,)s 3828(it)s 4046(is)s 4282(possible)s +5148(to)s 5414(o)s 3(v)k 3(erride)k 6286(the)s +6660(set)s 7011(precedences.)s 8369(Here)s 8916(is)s 0 12917(another)m +777(e)s 3(xpression)k 1854(for)s 2192(the)s 2540(table)s +3060(abo)s 3(v)k 3(e,)k 3733(in)s 3976(which)s +4618(the)s 4966(columns)s 5828(are)s 6175(formed)s 6923(\207rst:)s +220 fnt35 996 12416({ USA)m 2089(/0.1i)s 2609(W)s 8(ashington })k +480 12128(|0.2i)m 996({ A)s 6(ustr)k 2(alia)k 2089(/)s +2609(Canberr)s 2(a })k 240 fnt82 0 11634(Braces)m 701(ha)s 4(v)k 3(e)k +1202(no)s 1495(ef)s 6(fect)k 2091(other)s 2642(than)s +3111(to)s 3350(alter)s 3833(the)s 4181(grouping.)s 240 fnt83 +480 11262(P)m 19(ar)k 3(a)k 2(gr)k 3(aph)k +1569(br)s 8(eaking)k 240 fnt82 2476 11260(occurs)m 3160(when)s +3746(an)s 4038(object)s 4692(is)s 4911(too)s 5280(wide)s +5810(to)s 6059(\207t)s 6327(into)s 6762(the)s 7119(space)s +7716(a)s 4(v)k 6(ailable)k 8633(to)s 8882(it;)s +0 10972(by)m 286(breaking)s 1168(its)s 1436(paragraphs)s 2527(into)s +2944(lines,)s 3494(its)s 3762(width)s 4355(is)s 4557(reduced)s +5364(to)s 5595(an)s 5869(acceptable)s 6925(amount.)s 7799(The)s +8218(a)s 4(v)k 6(ailable)k 0 10684(space)m 587(is)s +797(determined)s 1930(by)s 2224(the)s 220 fnt35 2572 10681(@Wide)m +240 fnt82 3346 10684(symbol,)m 4158(whose)s 4826(form)s 5350(is)s +240 fnt83 480 10181(length)m 220 fnt35 1193 10176(@Wide)m 240 fnt83 +2027 10181(object)m 240 fnt82 0 9680(and)m 404(whose)s 1072(result)s +1662(is)s 1872(the)s 2220(gi)s 6(v)k 3(en)k +2800(object)s 3444(modi\207ed)s 4353(to)s 4592(ha)s 4(v)k 3(e)k +5093(e)s 3(xactly)k 5834(the)s 6182(gi)s 6(v)k 3(en)k +6762(length.)s 7524(F)s 3(or)k 7913(e)s 3(xample,)k +220 fnt35 480 9179(5i @Wide {)m 480 8891(Macbeth w)m 3(as v)k 5(er)k -6(y ambitious)k 3(.)k 13( )k 11(This led him to wish to become king of)k +480 8603(Scotland.)m 13( )k 11(The witches told him that this wish of his w)k 2(ould come tr)k -3(ue)k 3(.)k 13( )k 11(The)k +480 8315(king of Scotland at this time w)m 3(as Duncan.)k 13( Encour)k 2(aged b)k 4(y his wif)k 6(e)k 3(, Macbeth)k +480 8027(m)m 2(urdered Duncan.)k 13( He w)k 3(as thus enab)k 4(led to succeed Duncan as king.)k 13( \(51 w)k 2(ords\))k +480 7739(|0.5i)m 480 7451(Encour)m 2(aged b)k 4(y his wif)k 6(e)k 3(, Macbeth achie)k 6(v)k 5(ed his ambition and realiz)k 3(ed the)k +480 7163(prediction of the witches b)m 4(y m)k 2(urder)k -3(ing Duncan and becoming king of Scotland)k 480 6875(in his place)m 3(.)k 13( \(26 w)k 2(ords\))k +480 6587(})m 240 fnt82 0 6093(has)m 370(for)s 708(its)s +984(result)s 1574(the)s 1922(follo)s 6(wing)k 2899(\207v)s 3(e)k +3311(inch)s 3780(wide)s 4301(object)s 4945([7)s 5132(]:)s +480 5590(Macbeth)m 1356(w)s 2(as)k 1758(v)s 3(ery)k +2216(ambitious.)s 3304(This)s 480 5302(led)m 828(him)s 1257(to)s +1493(wish)s 2000(to)s 2236(become)s 3033(king)s 3509(of)s +480 5014(Scotland.)m 1538(The)s 2023(witches)s 2861(told)s 3348(him)s +480 4726(that)m 922(this)s 1343(wish)s 1876(of)s 2172(his)s +2526(w)s 2(ould)k 3206(come)s 480 4438(true.)m 1025(The)s +1464(king)s 1954(of)s 2235(Scotland)s 3141(at)s 3384(this)s +480 4150(time)m 959(w)s 2(as)k 1379(Duncan.)s 2287(Encouraged)s +3486(by)s 480 3862(his)m 818(wife,)s 1357(Macbeth)s 2259(murdered)s +3242(Dun)s 3652(-)s 480 3574(can.)m 995(He)s 1350(w)s 2(as)k +1790(thus)s 2260(enabled)s 3081(to)s 3340(suc)s 3652(-)s +480 3286(ceed)m 976(Duncan)s 1778(as)s 2028(king.)s 2618(\(51)s +2972(w)s 2(ords\))k 4440 5590(Encouraged)m 5653(by)s 5960(his)s +6302(wife,)s 6846(Macbeth)s 4440 5302(achie)m 6(v)k 3(ed)k +5409(his)s 5809(ambition)s 6786(and)s 7260(real)s 7612(-)s +4440 5014(ized)m 4910(the)s 5272(prediction)s 6312(of)s 6597(the)s +6959(witches)s 4440 4726(by)m 4731(murdering)s 5776(Duncan)s 6574(and)s +6974(becom)s 7612(-)s 4440 4438(ing)m 4818(king)s 5316(of)s +5606(Scotland)s 6520(in)s 6782(his)s 7132(place.)s 4440 4150(\(26)m +4812(w)s 2(ords\))k 0 2783(A)m 232(paragraph)s 1247(of)s +1520(te)s 3(xt)k 1937(can)s 2328(be)s 2612(included)s +3496(an)s 3(ywhere,)k 4533(and)s 4939(it)s 5133(will)s +5561(be)s 5845(brok)s 2(en)k 6567(automatically)s 7923(if)s +8143(necessary)s 0 2495(to)m 239(\207t)s 498(the)s 846(a)s 4(v)k 6(ailable)k +1754(space.)s 2449(The)s 2877(spaces)s 3552(between)s 4406(w)s 2(ords)k +5040(are)s 5387(con)s 9(v)k 3(erted)k 6376(into)s +6801(concatenation)s 8186(symbols.)s 480 2121(These)m 1136(are)s 1512(the)s +1889(most)s 2443(signi\207cant)s 3528(of)s 3828(Lout')s 13(s)k +4519(object-b)s 4(uilding)k 6058(symbols.)s 7049(There)s 7691(are)s +8067(others,)s 8788(for)s 0 1833(changing)m 924(fonts,)s 1501(controlling)s +2596(paragraph)s 3601(breaking,)s 4538(printing)s 5340(graphical)s 6277(objects)s +6997(lik)s 2(e)k 7402(box)s 3(es)k 8001(and)s +8397(circles,)s 0 1545(and)m 404(so)s 670(on,)s 1017(b)s 4(ut)k +1379(the)s 3(y)k 1842(do)s 2135(not)s 2501(add)s +2905(an)s 3(ything)k 3793(ne)s 6(w)k 4240(in)s +4483(principle.)s 240 fnt84 0 752(1.2.)m 471(De\207nitions)s 240 fnt82 +480 321(The)m 897(features)s 1691(of)s 1950(Lout)s 2451(are)s +2786(v)s 3(ery)k 3250(general.)s 4105(The)s 3(y)k +4637(do)s 4918(not)s 5272(assume)s 6020(that)s 6427(documents)s +7503(are)s 7838(composed)s 8855(of)s +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 4 10 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +%%+ font Times-Italic +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +0 LoutMargSet +grestore +240 fnt84 0 13840(4)m 240 fnt83 6965 13843(Chapter)m 7815(1.)s +8089(Principles)s 240 fnt82 0 13204(pages,)m 637(nor)s 1001(that)s +1403(there)s 1921(are)s 2252(such)s 2733(things)s 3353(as)s +3588(mar)s 4(gins)k 4389(and)s 4778(footnotes,)s 5759(for)s +6082(e)s 3(xample.)k 240 fnt83 7037 13206(De\207nitions)m 240 fnt82 +8127 13204(bridge)m 8778(the)s 0 12916(g)m 1(ap)k 397(between)s +1249(Lout')s 13(s)k 1910(general)s 2666(features)s 3470(and)s +3873(the)s 4219(special)s 4935(features)s 5740(\211)s 5918(footnotes,)s +6913(equations,)s 7936(pages)s 8530(\211)s 8708(that)s 0 12628(particular)m +991(documents)s 2097(require.)s 2954(The)s 3(y)k 3515(hold)s +4017(the)s 4382(instr)s 4806(uct)s 5098(ions)s 5566(for)s +5922(producing)s 6963(these)s 7528(special)s 8264(features,)s 0 12340(con)m 9(v)k 3(eniently)k +1278(packaged)s 2240(ready)s 2825(for)s 3163(use.)s 480 11966(F)m 3(or)k +885(e)s 3(xample,)k 1815(consider)s 2701(the)s 3065(challenge)s +4053(posed)s 4686(by)s 4996(`)s 5057(T)s 5153 11918(E)m +5261 11966(X)m 5430(',)s 5633(which)s 6291(is)s 6517(the)s +6881(name)s 7471(of)s 7758(one)s 8176(of)s 8464(Lout')s 13(s)k +0 11678(most)m 525(illustrious)s 1531(ri)s 6(v)k 6(als)k +2100([5)s 2285(].)s 2528(Lout)s 3040(solv)s 3(es)k +3686(it)s 3878(easily)s 4489(enough,)s 5302(lik)s 2(e)k +5714(this:)s 220 fnt35 480 11177(T{ /0.2f)m 6(o E }X)k 240 fnt82 +0 10683(b)m 4(ut)k 373(to)s 624(type)s 1103(this)s +1511(e)s 6(v)k 3(ery)k 2098(time)s 2590(T)s +2686 10635(E)m 2794 10683(X)m 3035(is)s 3256(mentioned)s 4336(w)s 2(ould)k +5002(be)s 5296(tedious)s 6050(and)s 6465(error)s 4(-prone.)k +7724(So)s 8041(we)s 8388(place)s 8960(a)s 0 10395(de\207nition)m +974(at)s 1206(the)s 1554(be)s 3(ginning)k 2562(of)s +2833(the)s 3181(document:)s 220 fnt35 480 9894(def @T)m 26(eX { )k 11(T{ /0.2f)k 6(o E }X })k +240 fnt82 0 9400(No)m 6(w)k 220 fnt35 514 9397(@T)m 26(eX)k +240 fnt82 1169 9400(stands)m 1818(for)s 2156(the)s 2504(object)s +3148(follo)s 6(wing)k 4125(it)s 4317(between)s 5171(braces,)s +5888(and)s 6292(we)s 6627(may)s 7093(write)s 220 fnt35 +480 8899(consider)m 1370(the)s 1728(challenge)s 2719(posed)s 3366(b)s 4(y)k +3653(`@T)s 26(eX',)k 4451(\202)s 240 fnt82 0 8400(as)m +250(the)s 598(author)s 1269(did)s 1633(earlier)s 2301(in)s +2544(this)s 2940(paragraph.)s 480 8026(A)m 240 fnt83 706 8028(symbol)m +240 fnt82 1440 8026(is)m 1646(a)s 1808(name,)s 2429(lik)s 2(e)k +220 fnt35 2837 8023(@T)m 26(eX)k 240 fnt82 3432 8026(,)m +3535(which)s 4172(stands)s 4817(for)s 5151(something)s 6197(other)s +6744(than)s 7209(itself.)s 7845(The)s 8269(initial)s 220 fnt35 +8875 8023(@)m 240 fnt82 0 7738(is)m 201(not)s 558(compulsory)s 15(,)k +1771(b)s 4(ut)k 2124(it)s 2307(does)s 2788(mak)s 2(e)k +3351(the)s 3690(name)s 4254(stand)s 4808(out)s 5165(clearly)s 15(.)k +5954(A)s 240 fnt83 6175 7740(de\207nition)m 240 fnt82 7124 7738(of)m +7386(a)s 7543(symbol)s 8293(declares)s 0 7450(a)m 164(name)s +736(to)s 973(be)s 1253(a)s 1417(symbol,)s 2227(and)s +2629(says)s 3090(what)s 3613(the)s 3959(symbol)s 4717(stands)s +5364(for)s 13(.)k 5791(The)s 240 fnt83 6217 7452(body)m +240 fnt82 6737 7450(of)m 7006(a)s 7170(de\207nition)s 8142(is)s +8350(the)s 8695(part)s 0 7162(follo)m 6(wing)k 977(the)s +1325(name,)s 1950(between)s 2804(the)s 3152(braces.)s 3926(T)s 19(o)k +240 fnt83 4226 7164(in)m 9(vok)k 2(e)k 240 fnt82 +4892 7162(a)m 5058(symbol)s 5818(is)s 6028(to)s 6267(mak)s 2(e)k +6839(use)s 7214(of)s 7485(it.)s 480 6788(Another)m 1324(e)s 3(xpression)k +2401(ripe)s 2828(for)s 3166(packaging)s 4203(in)s 4446(a)s +4612(de\207nition)s 5586(is)s 220 fnt35 480 6287(@OneRo)m 3(w { | -2p @F)k 6(ont n ^/0.5fk 2 })k +240 fnt82 0 5745(which)m 642(produces)s 200 fnt82 1671 5862(n)m +240 fnt82 1557 5745(2)m 1828(\(see)s 2268(Chapter)s 3085(2\).)s +3448(But)s 3854(this)s 4250(time)s 4730(we)s 5065(w)s 2(ould)k +5720(lik)s 2(e)k 6132(to)s 6371(be)s 6653(able)s +7107(to)s 7346(write)s 240 fnt83 480 5242(object)m 220 fnt35 +1188 5237(@Super)m 240 fnt83 2116 5242(object)m 240 fnt82 0 4640(so)m +296(that)s 220 fnt35 745 4637(a)m 953(@Super)s 1853(2)s +240 fnt82 2055 4640(w)m 2(ould)k 2741(come)s 3345(out)s +3742(as)s 200 fnt82 4128 4769(2)m 240 fnt82 4022 4640(a)m +4223(,)s 4361(and)s 4796(so)s 5092(on,)s 5470(for)s +5838(in)s 6112(this)s 6538(w)s 2(ay)k 7020(the)s +7398(usefulness)s 8476(of)s 8778(the)s 0 4352(de\207nition)m 974(is)s +1184(greatly)s 1901(increased.)s 2967(Here)s 3487(is)s 3697(ho)s 6(w)k +4158(it)s 4350(is)s 4560(done:)s 220 fnt35 480 3851(def @Super)m +480 3563( left x)m 480 3275( r)m -3(ight y)k 480 2987({ @OneRo)m 3(w { | -2p @F)k 6(ont y ^/0.5fk x })k +480 2699(})m 240 fnt82 0 2205(This)m 492(de\207nition)s 1483(says)s +1963(that)s 220 fnt35 2398 2202(@Super)m 240 fnt82 3283 2205(has)m +3669(tw)s 2(o)k 240 fnt83 4096 2207(par)m 3(ameter)k 2(s)k +240 fnt82 5176 2205(,)m 220 fnt35 5300 2202(x)m 240 fnt82 +5485 2205(and)m 220 fnt35 5906 2202(y)m 240 fnt82 6014 2205(.)m +6194(When)s 220 fnt35 6840 2202(@Super)m 240 fnt82 7725 2205(is)m +7952(in)s 9(v)k 4(ok)k 2(ed,)k 8833(all)s +0 1917(occurrences)m 1205(of)s 220 fnt35 1490 1914(x)m 240 fnt82 +1671 1917(in)m 1928(the)s 2289(body)s 2837(will)s 3276(be)s +3572(replaced)s 4452(by)s 4760(the)s 5121(object)s 5779(just)s +6197(to)s 6450(the)s 6811(left)s 7202(of)s 220 fnt35 +7486 1914(@Super)m 240 fnt82 8294 1917(,)m 8415(and)s 8833(all)s +0 1629(occurrences)m 1192(of)s 220 fnt35 1462 1626(y)m 240 fnt82 +1630 1629(will)m 2055(be)s 2337(replaced)s 3203(by)s 3496(the)s +3844(object)s 4487(just)s 4892(to)s 5130(the)s 5477(right.)s +6092(So,)s 6451(for)s 6789(e)s 3(xample,)k 7702(the)s +8049(e)s 3(xpression)k 220 fnt35 480 1128(2 @Super { Slope @F)m 6(ont n })k +240 fnt82 0 632(is)m 210(equal)s 783(to)s 220 fnt35 +480 131(@OneRo)m 3(w { | -2p @F)k 6(ont { Slope @F)k 6(ont n } ^/0.5fk 2 })k +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 5 11 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Italic +%%+ font Times-Bold +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +1 LoutMargSet +grestore +240 fnt83 0 13844(1.2.)m 454(De\207nitions)s 240 fnt84 8953 13841(5)m +240 fnt82 0 13151(and)m 404(so)s 670(comes)s 1332(out)s +1698(as)s 200 fnt83 2062 13281(n)m 240 fnt82 1948 13151(2)m +2157(.)s 480 12777(Lout)m 994(permits)s 1764(de\207nitions)s 2828(to)s +3070(in)s 9(v)k 4(ok)k 2(e)k 3765(themselv)s 3(es,)k +4934(a)s 5103(peculiarly)s 6115(circular)s 6905(thing)s 7453(to)s +7695(do)s 7991(which)s 8636(goes)s 0 12489(by)m 294(the)s +642(name)s 1216(of)s 240 fnt83 1487 12491(r)m 8(ecur)k 2(sion.)k +240 fnt82 2548 12489(Here)m 3068(is)s 3278(an)s 3561(e)s 3(xample)k +4424(of)s 4695(a)s 4861(recursi)s 6(v)k 3(e)k +5783(de\207nition:)s 220 fnt35 480 11988(def @Leaders { ..)m 13( @Leaders })k 240 fnt82 +0 11494(The)m 418(usual)s 968(rule)s 1384(is)s 1584(that)s +1991(the)s 2329(v)s 6(alue)k 2886(of)s 3147(an)s +3420(in)s 9(v)k 4(ocation)k 4463(of)s 4724(a)s +4879(symbol)s 5629(is)s 5828(a)s 5984(cop)s 2(y)k +6492(of)s 6752(the)s 7090(body)s 7613(of)s 7874(the)s +8211(symbol')s 13(s)k 0 11206(de\207nition,)m 1024(so)s 1290(the)s +1638(v)s 6(alue)k 2206(of)s 220 fnt35 2477 11203(@Leaders)m +240 fnt82 3546 11206(must)m 4071(be)s 220 fnt35 480 10724(..)m 13( @Leaders)k +240 fnt82 0 10269(But)m 406(no)s 6(w)k 867(this)s +1263(rule)s 1690(applies)s 2418(to)s 2657(this)s 3053(ne)s 6(w)k +3500(in)s 9(v)k 4(ocation)k 4554(of)s 220 fnt35 +4825 10266(@Leaders)m 240 fnt82 5834 10269(;)m 5946(substituting)s 7115(its)s +7391(body)s 7925(gi)s 6(v)k 3(es)k 220 fnt35 +480 9768(..)m 13( ..)k 13( @Leaders)k 240 fnt82 0 9313(and)m +408(so)s 679(on)s 980(fore)s 6(v)k 3(er)k 13(.)k +1816(In)s 2076(order)s 2645(to)s 2888(mak)s 2(e)k +3465(this)s 3865(useful,)s 4561(an)s 4848(in)s 9(v)k 4(ocation)k +5907(of)s 6182(a)s 6353(recursi)s 6(v)k 3(e)k +7279(symbol)s 8044(is)s 8259(replaced)s 0 9025(by)m 294(its)s +570(body)s 1104(only)s 1584(if)s 1801(suf\207cient)s 2750(space)s +3337(is)s 3547(a)s 4(v)k 6(ailable.)k 4563(So,)s +4923(for)s 5261(e)s 3(xample,)k 220 fnt35 480 8524(4i @Wide { Chapter 7 @Leaders 62 })m +240 fnt82 0 8028(has)m 370(for)s 708(its)s 984(result)s +1574(the)s 1922(object)s 480 7524(Chapter)m 1297(7)s 1525(..)s +1809(..)s 2093(..)s 2377(..)s 2661(..)s 2945(..)s +3229(..)s 3513(..)s 3797(..)s 4081(..)s 4365(..)s +4649(..)s 4933(..)s 5217(..)s 5501(..)s 5785(62)s +0 7021(with)m 478(Lout)s 985(checking)s 1897(before)s 2558(each)s +3049(replacement)s 4271(of)s 220 fnt35 4537 7018(@Leaders)m 240 fnt82 +5601 7021(by)m 220 fnt35 5891 7018(..)m 6177(@Leaders)s 240 fnt82 +7241 7021(that)m 7654(the)s 7997(total)s 8471(length)s 0 6733(afterw)m 2(ards,)k +1112(including)s 2069(the)s 2417(other)s 2968(w)s 2(ords,)k +3658(w)s 2(ould)k 4313(not)s 4679(e)s 3(xceed)k +5398(four)s 5856(inches.)s 480 6359(The)m 902(remaining)s 1918(issue)s +2445(is)s 2649(what)s 3168(happens)s 3997(when)s 4567(Lout)s +5072(decides)s 5834(that)s 6246(it)s 6431(is)s 6635(time)s +7109(to)s 7341(stop.)s 7898(The)s 8319(ob)s 3(vious)k +0 6071(thing)m 545(to)s 784(do)s 1077(is)s 1287(to)s +1526(replace)s 2271(the)s 2619(last)s 3010(in)s 9(v)k 4(ocation)k +4064(by)s 4358(an)s 4641(empty)s 5293(object:)s 220 fnt35 +480 5573(..)m 13( ..)k 13( ..)k 13( ..)k 13( ..)k 13( ..)k 13( ..)k 13( ..)k 13( {})k +240 fnt82 0 5079(As)m 316(the)s 662(e)s 3(xample)k +1524(sho)s 6(ws,)k 2222(this)s 2617(w)s 2(ould)k +3270(lea)s 4(v)k 3(e)k 3822(a)s 3986(small)s +4556(trailing)s 5297(space,)s 5933(which)s 6574(is)s 6782(a)s +6947(major)s 7562(headache.)s 8614(Lout)s 0 4791(\207x)m 3(es)k +517(this)s 930(by)s 1242(replacing)s 2201(the)s 2566(last)s +2975(in)s 9(v)k 4(ocation)k 4046(with)s 4545(a)s +4729(dif)s 6(ferent)k 5621(kind)s 6122(of)s 6411(empty)s +7080(object,)s 7788(called)s 220 fnt35 8434 4788(@Null)m 240 fnt82 +9019 4791(,)m 0 4503(whose)m 677(ef)s 6(fect)k 1282(is)s +1501(to)s 1749(mak)s 2(e)k 2330(an)s 2623(adjacent)s +3488(concatenation)s 4882(symbol)s 5651(disappear)s 9(,)k 6674(preferably)s +7718(one)s 8130(preceding)s 0 4215(the)m 220 fnt35 348 4212(@Null)m +240 fnt82 933 4215(.)m 1097(Thus,)s 1683(when)s 2259(Lout)s +2771(replaces)s 220 fnt35 3604 4212(@Leaders)m 240 fnt82 4673 4215(by)m +220 fnt35 4967 4212(@Null)m 240 fnt82 5612 4215(in)m 5855(the)s +6203(e)s 3(xpression)k 220 fnt35 480 3714(..)m 13( ..)k 13( ..)k 13( ..)k 13( ..)k 13( ..)k 13( ..)k 13( ..)k 13( @Leaders)k +240 fnt82 0 3259(the)m 348(trailing)s 1089(space,)s 1727(which)s +2368(is)s 2577(really)s 3174(a)s 3339(horizontal)s 4362(concatenation)s +5747(symbol,)s 6558(disappears)s 7617(as)s 7867(well.)s 8441(This)s +8916(is)s 0 2971(tak)m 2(en)k 573(into)s 998(account)s +1802(when)s 2378(deciding)s 3255(whether)s 4085(there)s 4618(is)s +4828(room)s 5393(to)s 5632(replace)s 220 fnt35 6377 2968(@Leaders)m +240 fnt82 7446 2971(by)m 7740(its)s 8016(body)s 15(.)k +480 2597(The)m 903(remainder)s 1926(of)s 2192(this)s 2583(section)s +3312(is)s 3517(de)s 6(v)k 4(oted)k 4318(to)s +4552(sho)s 6(wing)k 5406(ho)s 6(w)k 5862(de\207nitions)s +6918(may)s 7379(be)s 7656(used)s 8148(to)s 8382(specify)s +0 2309(the)m 240 fnt83 348 2311(pa)m 2(g)k 2(e)k +863(layout)s 240 fnt82 1525 2309(of)m 1796(a)s 1962(document.)s +3070(T)s 19(o)k 3370(be)s 3(gin)k 3956(with,)s +4488(we)s 4823(can)s 5212(de\207ne)s 5853(a)s 6019(page)s +6527(lik)s 2(e)k 6939(this:)s 220 fnt35 480 1808(def @P)m 8(age)k +480 1520({)m 480 1232( //1i ||1i)m 480 944( 6i @Wide 9.5i @High)m 480 656( { @T)m 26(e)k 6(xtPlace //1r)k -8(t @F)k 6(ootSect })k +480 368( ||1i //1i)m 480 80(})m +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 6 12 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +%%+ font Times-Italic +%%+ font Helvetica +%%+ font Symbol +/pgsave save def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +0 LoutMargSet +grestore +240 fnt84 0 13840(6)m 240 fnt83 6965 13843(Chapter)m 7815(1.)s +8089(Principles)s 240 fnt82 0 13205(No)m 6(w)k 220 fnt35 +520 13202(@P)m 8(age)k 240 fnt82 1306 13205(is)m 1523(an)s +1813(eight)s 2358(by)s 2659(ele)s 6(v)k 3(en)k +3338(and)s 3749(a)s 3922(half)s 4371(inch)s 4847(object,)s +5545(with)s 6034(one)s 6443(inch)s 6919(mar)s 4(gins,)k +7799(a)s 7972(place)s 8539(at)s 8778(the)s 0 12917(top)m +367(for)s 713(te)s 3(xt,)k 1183(and)s 1595(a)s +1769(section)s 2511(at)s 2751(the)s 3108(bottom)s 3854(for)s +4200(footnotes)s 5149(\(since)s 220 fnt35 5783 12914(//1r)m -8(t)k +240 fnt82 6233 12917(bottom-justi\207es)m 7792(the)s 8149(follo)s 6(wing)k +0 12629(object\).)m 827(It)s 1032(will)s 1458(be)s 1740(con)s 9(v)k 3(enient)k +2838(for)s 3176(us)s 3440(to)s 3679(sho)s 6(w)k +4233(the)s 4581(ef)s 6(fect)k 5177(of)s 5448(in)s 9(v)k 4(oking)k +220 fnt35 6340 12626(@P)m 8(age)k 240 fnt82 7119 12629(lik)m 2(e)k +7531(this:)s 160 fnt35 480 11528(@P)m 6(age)k 220 fnt78 +1240 11514(\336)m gsave +1690 9795 translate +220 fnt35 1927 2494 0 2494 220 288 61 LoutGraphic +gsave +0 0 moveto xsize 0 lineto xsize ysize lineto +0 ysize lineto closepath stroke +grestore +160 fnt35 170 2207(@T)m 19(e)k 4(xtPlace)k +170 173(@F)m 4(ootSect)k +grestore +240 fnt82 0 9344(with)m 482(the)s +830(in)s 9(v)k 4(ok)k 2(ed)k 1645(symbol)s +2405(appearing)s 3401(to)s 3640(the)s 3988(left)s 4365(of)s +4636(the)s 4984(arro)s 6(w)k 15(,)k 5627(and)s +6031(its)s 6307(body)s 6841(to)s 7080(the)s 7428(right.)s +480 8970(The)m 908(de\207nition)s 1882(of)s 2153(a)s 2319(v)s 3(ertical)k +3086(list)s 3437(of)s 3708(pages)s 4304(should)s 5001(come)s +5575(as)s 5825(no)s 6118(surprise:)s 220 fnt35 480 8469(def @P)m 8(ageList)k +480 8181({)m 480 7893( @P)m 8(age // @P)k 8(ageList)k 480 7605(})m +240 fnt82 0 7111(This)m 476(allo)s 6(ws)k 1145(in)s 9(v)k 4(ocations)k +2286(lik)s 2(e)k 2698(the)s 3046(follo)s 6(wing:)k +gsave +480 0 translate +1.0867 1.0000 scale +160 fnt35 0 6010(@P)m 6(ageList)k 220 fnt78 890 5996(\336)m +gsave +1220 4277 translate +220 fnt35 1927 2494 0 2494 220 288 61 LoutGraphic +gsave +0 0 moveto xsize 0 lineto xsize ysize lineto +0 ysize lineto closepath stroke +grestore +160 fnt35 170 2207(@T)m 19(e)k 4(xtPlace)k 170 173(@F)m 4(ootSect)k + +grestore +160 fnt35 1220 4047(@P)m 6(ageList)k 220 fnt78 3267 5996(\336)m +gsave +3597 4277 translate +220 fnt35 1927 2494 0 2494 220 288 61 LoutGraphic +gsave +0 0 moveto xsize 0 lineto xsize ysize lineto +0 ysize lineto closepath stroke +grestore +160 fnt35 170 2207(@T)m 19(e)k 4(xtPlace)k 170 173(@F)m 4(ootSect)k + +grestore +gsave +3597 1783 translate +220 fnt35 1927 2494 0 2494 220 288 61 LoutGraphic +gsave +0 0 moveto xsize 0 lineto xsize ysize lineto +0 ysize lineto closepath stroke +grestore +160 fnt35 170 2207(@T)m 19(e)k 4(xtPlace)k 170 173(@F)m 4(ootSect)k + +grestore +160 fnt35 3597 1553(@P)m 6(ageList)k 220 fnt78 5644 5996(\336)m +gsave +5974 4277 translate +220 fnt35 1927 2494 0 2494 220 288 61 LoutGraphic +gsave +0 0 moveto xsize 0 lineto xsize ysize lineto +0 ysize lineto closepath stroke +grestore +160 fnt35 170 2207(@T)m 19(e)k 4(xtPlace)k 170 173(@F)m 4(ootSect)k + +grestore +gsave +5974 1783 translate +220 fnt35 1927 2494 0 2494 220 288 61 LoutGraphic +gsave +0 0 moveto xsize 0 lineto xsize ysize lineto +0 ysize lineto closepath stroke +grestore +160 fnt35 170 2207(@T)m 19(e)k 4(xtPlace)k 170 173(@F)m 4(ootSect)k + +grestore + +grestore +0 1067(setting)m 220 fnt35 750 1064(@P)m 8(ageList)k 240 fnt82 +1874 1067(to)m 200 fnt35 2113 1069(@Null)m 240 fnt82 2706 1067(on)m +3003(the)s 3351(last)s 3742(step.)s 4291(An)s 3(y)k +4755(number)s 5546(of)s 5817(pages)s 6413(can)s 6802(be)s +7084(generated.)s 480 693(A)m 703(de\207nition)s 1669(for)s 220 fnt35 +1999 690(@T)m 26(e)k 6(xtPlace)k 240 fnt82 3209 693(is)m +3411(be)s 3(yond)k 4164(us)s 4420(at)s 4644(present,)s +5433(since)s 220 fnt35 5972 690(@T)m 26(e)k 6(xtPlace)k +240 fnt82 7182 693(must)m 7699(be)s 7973(replaced)s 8832(by)s +0 405(dif)m 6(ferent)k 877(parts)s 1394(of)s 1667(the)s +2018(te)s 3(xt)k 2435(of)s 2708(the)s 3059(document)s +4065(on)s 4364(dif)s 6(ferent)k 5242(pages.)s 5953(But)s +6361(we)s 6699(can)s 7090(de\207ne)s 220 fnt35 7733 402(@F)m 6(ootSect)k +240 fnt82 8887 405(to)m 0 117(be)m 282(a)s 448(small)s +1020(space)s 1607(follo)s 6(wed)k 2509(by)s 2803(a)s +2969(horizontal)s 3993(line)s 4407(follo)s 6(wed)k 5309(by)s +5603(a)s 5769(list)s 6120(of)s 6391(places)s 7039(where)s +7679(footnotes)s 8620(go:)s +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 7 13 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Italic +%%+ font Times-Bold +%%+ font Helvetica +%%+ font Symbol +/pgsave save def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +1 LoutMargSet +grestore +240 fnt83 0 13844(1.2.)m 454(De\207nitions)s 240 fnt84 8951 13841(7)m +220 fnt35 480 13208(def @F)m 6(ootList )k 480 12920({ )m 480 12632( @F)m 6(ootPlace //0.3v @F)k 6(ootList)k +480 12344(} )m 480 12056( )m 480 11768(def @F)m 6(ootSect)k 480 11480({ )m +480 11192( //0.3v 1i @Wide @HLine)m 480 10904( //0.3v @F)m 6(ootList )k 480 10616(} )m 240 fnt82 +0 10122(assuming)m 950(that)s 220 fnt35 1360 10119(@HLine)m 240 fnt82 +2199 10122(will)m 2617(produce)s 3436(a)s 3594(horizontal)s 4610(line)s +5016(of)s 5279(the)s 5619(indicated)s 6545(width.)s 7246(W)s 9(ith)k +7764(this)s 8152(de\207nition)s 0 9834(we)m 335(can)s 724(generate)s +1589(pages)s 2185(lik)s 2(e)k 2597(this:)s gsave +480 7000 translate +220 fnt35 1927 2494 0 2494 220 288 61 LoutGraphic +gsave +0 0 moveto xsize 0 lineto xsize ysize lineto +0 ysize lineto closepath stroke +grestore +160 fnt35 +170 2207(@T)m 19(e)k 4(xtPlace)k 170 173(@F)m 4(ootSect)k + +grestore +220 fnt78 2647 8719(\336)m gsave +3097 7000 translate +220 fnt35 1927 2494 0 2494 220 288 61 LoutGraphic +gsave +0 0 moveto xsize 0 lineto xsize ysize lineto +0 ysize lineto closepath stroke +grestore +160 fnt35 170 2207(@T)m 19(e)k 4(xtPlace)k +567 0 0 0 160 180 44 170 346 LoutGr2 +0 0 moveto xsize 0 lineto stroke +grestore + +grestore +170 173(@F)m 4(ootList)k +grestore +5264(\336)s gsave +5714 7000 translate +220 fnt35 1927 2494 0 2494 220 288 61 LoutGraphic +gsave +0 0 moveto xsize 0 lineto xsize ysize lineto +0 ysize lineto closepath stroke +grestore +160 fnt35 170 2207(@T)m 19(e)k 4(xtPlace)k +567 0 0 0 160 180 44 170 522 LoutGr2 +0 0 moveto xsize 0 lineto stroke +grestore + +grestore +170 349(@F)m 4(ootPlace)k 170 173(@F)m 4(ootList)k +grestore +240 fnt82 +0 6549(and)m 404(so)s 670(on)s 967(for)s 1305(arbitrarily)s +2312(man)s 3(y)k 2895(footnotes.)s 480 6175(W)m 19(e)k +852(will)s 1281(see)s 1646(in)s 1892(the)s 2244(ne)s 3(xt)k +2716(section)s 3454(ho)s 6(w)k 3918(in)s 9(v)k 4(ocations)k +5063(of)s 220 fnt35 5337 6172(@P)m 8(ageList,)k 6511(@F)s 6(ootSect)k +240 fnt82 7665 6175(and)m 220 fnt35 8073 6172(@F)m 6(ootList)k +240 fnt82 0 5887(are)m 356(replaced)s 1232(by)s 1535(their)s +2041(bodies)s 2726(only)s 3216(when)s 3801(the)s 4158(need)s +4677(to)s 4925(insert)s 5524(te)s 3(xt)k 5949(and)s +6362(footnotes)s 7312(obliges)s 8063(Lout)s 8584(to)s 8833(do)s +0 5599(so;)m 352(otherwise)s 1364(the)s 1740(in)s 9(v)k 4(ocations)k +2908(are)s 3283(replaced)s 4177(by)s 220 fnt35 4499 5596(@Null)m +240 fnt82 5084 5599(.)m 5275(In)s 5559(this)s 5982(w)s 2(ay)k 15(,)k +6499(the)s 6874(right)s 7413(number)s 8231(of)s 8530(pages)s +0 5311(is)m 223(made,)s 862(the)s 1224(small)s 1810(line)s +2238(appears)s 3033(only)s 3527(on)s 3838(pages)s 4447(that)s +4879(ha)s 4(v)k 3(e)k 5394(at)s 5640(least)s +6151(one)s 6567(footnote,)s 7485(and)s 7903(unnecessary)s 0 5023(concatenation)m +1385(symbols)s 2234(disappear)s 13(.)k 480 4649(This)m 958(approach)s +1894(to)s 2135(page)s 2645(layout)s 3305(is)s 3517(the)s +3867(most)s 4394(original)s 5194(contrib)s 4(ution)k 6418(Lout)s +6932(has)s 7304(made)s 7880(to)s 8122(document)s 0 4361(formatting.)m +1172(It)s 1377(is)s 1587(e)s 3(xtraordinarily)k 3057(\210e)s 3(xible.)k +3935(T)s 19(w)k 2(o-column)k 5207(pages?)s 5971(Use)s +220 fnt35 480 3860({2.8i @Wide @T)m 26(e)k 6(xtPlace} ||0.4i {2.8i @Wide @T)k 26(e)k 6(xtPlace})k +240 fnt82 0 3366(instead)m 768(of)s 220 fnt35 1072 3363(@T)m 26(e)k 6(xtPlace)k +240 fnt82 2230 3366(.)m 2427(F)s 3(ootnotes)k 3452(in)s +3728(smaller)s 4523(type?)s 5187(Use)s 220 fnt35 5648 3363(-2p)m +6051(@F)s 6(ont)k 6797(@F)s 6(ootPlace)k 240 fnt82 +8086 3366(instead)m 8855(of)s 220 fnt35 0 3075(@F)m 6(ootPlace)k +240 fnt82 1196 3078(.)m 1360(And)s 1831(on)s 2128(and)s +2532(on.)s 240 fnt84 0 2330(1.3.)m 471(Cr)s 4(oss)k +1106(r)s 4(efer)k 4(ences)k 240 fnt82 480 1898(A)m +705(cross)s 1241(reference)s 2178(in)s 2415(common)s 3304(terminology)s +4521(is)s 4725(something)s 5769(lik)s 2(e)k 6176(`see)s +6610(T)s 19(able)k 7185(6')s 7411(or)s 7664(`see)s +8098(page)s 8600(57')s 8946(\211)s 0 1610(a)m 168(reference)s +1114(within)s 1785(a)s 1954(document)s 2961(to)s 3202(some)s +3766(other)s 4320(part)s 4754(of)s 5028(it.)s 5327(Readers)s +6150(\207nd)s 6584(them)s 7125(v)s 3(ery)k 7604(useful,)s +8298(b)s 4(ut)k 8663(the)s 3(y)k 0 1322(are)m +343(a)s 504(major)s 1116(problem)s 1969(for)s 2302(authors.)s +3165(As)s 3478(the)s 3821(document)s 4820(is)s 5025(re)s 6(vised,)k +5812(T)s 19(able)k 6388(6)s 6556(becomes)s 7440(T)s 19(able)k +8016(7,)s 8238(the)s 8581(thing)s 0 1034(on)m 297(page)s +805(57)s 1093(mo)s 3(v)k 3(es)k 1763(to)s +2002(page)s 2510(63,)s 2857(and)s 3261(all)s 3554(the)s +3902(cross)s 4444(references)s 5475(must)s 6000(be)s 6282(changed.)s +480 660(The)m 917(Scribe)s 1593(document)s 2606(formatter)s 9(,)k +3601(de)s 6(v)k 3(eloped)k 4644(by)s 4947(Brian)s +5545(K.)s 5831(Reid)s 6351([6)s 6543(],)s 6739(introduced)s +7829(a)s 8005(scheme)s 8788(for)s 0 372(k)m 2(eeping)k +804(track)s 1337(of)s 1603(cross)s 2140(references.)s 3279(It)s +3479(allo)s 6(ws)k 4143(you)s 4553(to)s 4787(gi)s 6(v)k 3(e)k +5241(names)s 5898(to)s 6132(tables,)s 6791(\207gures,)s 7544(etc.,)s +7984(and)s 8383(to)s 8617(refer)s 0 84(to)m 233(them)s +764(by)s 1051(name.)s 1726(The)s 2147(formatter)s 3087(inserts)s +3754(the)s 4095(appropriate)s 5233(numbers)s 6101(in)s 6337(place)s +6890(of)s 7154(the)s 7495(names,)s 8206(so)s 8465(that)s +8876(as)s +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 8 14 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +%%+ font Times-Italic +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +0 LoutMargSet +grestore +240 fnt84 0 13840(8)m 240 fnt83 6965 13843(Chapter)m 7815(1.)s +8089(Principles)s 240 fnt82 0 13205(the)m 342(document)s 1339(is)s +1543(re)s 6(vised,)k 2327(the)s 2669(cross)s 3204(references)s +4229(are)s 4569(k)s 2(ept)k 5033(up)s 5319(to)s +5552(date)s 5999(automatically)s 15(.)k 7442(Lout)s 7947(has)s +8310(adopted)s 0 12917(and)m 404(e)s 3(xtended)k 1323(this)s +1719(scheme.)s 480 12543(In)m 726(Lout,)s 1275(automatic)s 2260(cross)s +2792(referencing)s 3922(w)s 2(orks)k 4546(in)s 4779(the)s +5117(follo)s 6(wing)k 6084(w)s 2(ay)k 15(.)k +6620(First)s 7107(de\207ne)s 7738(a)s 7894(symbol)s 8644(with)s +0 12255(a)m 166(parameter)s 1180(with)s 1662(the)s 2010(special)s +2728(name)s 220 fnt35 3302 12252(@T)m 26(ag:)k 480 11754(def @T)m 26(ab)k 4(le)k +480 11466( left @T)m 26(ag)k 480 11178( r)m -3(ight @V)k 15(alue)k +480 10890({)m 480 10602( ||1i @V)m 15(alue)k 480 10314(})m 240 fnt82 +0 9820(When)m 643(this)s 1054(symbol)s 1829(is)s 2054(in)s 9(v)k 4(ok)k 2(ed,)k +2933(the)s 3296(v)s 6(alue)k 3879(gi)s 6(v)k 3(en)k +4474(to)s 220 fnt35 4727 9817(@T)m 26(ag)k 240 fnt82 +5365 9820(should)m 6077(be)s 6374(a)s 6555(simple)s 7263(w)s 2(ord)k +7826(lik)s 2(e)k 220 fnt35 8253 9817(cities)m 240 fnt82 +8745 9820(,)m 8867(or)s 0 9532(se)m 6(v)k 3(eral)k +722(simple)s 1415(w)s 2(ords)k 2049(juxtaposed)s 3144(lik)s 2(e)k +220 fnt35 3556 9529(cities compare)m 240 fnt82 4962 9532(;)m 5074(it)s +5266(serv)s 3(es)k 5911(to)s 6150(name)s 6724(the)s +7072(in)s 9(v)k 4(ocation:)k 220 fnt35 480 9031({ cities compare } @T)m 26(ab)k 4(le)k +480 8743({)m 480 8455( )m 8(W)k 8(ashington |0.5i Canberr)k 2(a)k +480 8167(})m 240 fnt82 0 7673(W)m 19(e)k 410(may)s +917(no)s 6(w)k 1419(refer)s 1969(to)s 2249(this)s +2686(in)s 9(v)k 4(ocation)k 3782(else)s 6(where)k +4828(in)s 5112(the)s 5501(document,)s 6593(using)s 7206(the)s +240 fnt83 7595 7675(cr)m 10(oss)k 8187(r)s 8(efer)k 8(ence)k +220 fnt35 0 7382(@T)m 26(ab)k 4(le&&{ cities compare }.)k 240 fnt82 +2918 7385(Here)m 220 fnt35 3480 7382(&&)m 240 fnt82 3870 7385(is)m +4122(the)s 240 fnt83 4511 7387(cr)m 10(oss)k 5103(r)s 8(efer)k 8(ence)k +6084(symbol)s 240 fnt82 6762 7385(;)m 6916(its)s 7233(left)s +7652(parameter)s 8708(is)s 8960(a)s 0 7097(symbol)m 772(and)s +1189(its)s 1478(right)s 2002(parameter)s 3028(is)s 3251(the)s +3612(v)s 6(alue)k 4193(of)s 4476(the)s 220 fnt35 +4837 7094(@T)m 26(ag)k 240 fnt82 5473 7097(parameter)m 6500(of)s +6783(some)s 7357(in)s 9(v)k 4(ocation)k 8424(of)s +8708(that)s 0 6809(symbol.)m 869(Of)s 1193(course)s 1873(it')s 13(s)k +2215(simplest)s 3071(if)s 3288(you)s 3703(use)s 4078(just)s +4483(a)s 4649(one-w)s 2(ord)k 5622(tag;)s 6026(then)s +6495(no)s 6788(braces)s 7449(are)s 7796(needed.)s 480 6435(A)m +695(cross)s 1222(reference)s 2150(is)s 2345(not)s 2696(an)s +2964(object;)s 3645(the)s 3978(reader)s 4619(should)s 5301(think)s +5839(of)s 6095(it)s 6272(as)s 6507(an)s 6775(arro)s 6(w)k +7365(in)s 7593(the)s 7926(\207nal)s 8391(printed)s 0 6147(document,)m +1049(be)s 3(ginning)k 2054(at)s 2284(the)s 2629(cross)s +3169(reference)s 4109(and)s 4511(ending)s 5213(at)s 5443(the)s +5788(top)s 6145(of)s 6413(the)s 6759(tar)s 4(get)k +7355(in)s 9(v)k 4(ocation.)k 8513(Three)s 0 5859(special)m +715(v)s 6(alues)k 1367(may)s 1830(be)s 2108(gi)s 6(v)k 3(en)k +2685(to)s 2920(the)s 3264(right)s 3772(parameter)s 4782(of)s +220 fnt35 5050 5856(&&)m 240 fnt82 5338 5859(:)m 220 fnt35 +5500 5856(preceding)m 240 fnt82 6451 5859(,)m 220 fnt35 6555 5856(f)m 6(ollo)k 3(wing)k +240 fnt82 7385 5859(,)m 7488(and)s 220 fnt35 7888 5856(f)m 6(oll_or_prec)k +240 fnt82 9022 5859(.)m 0 5571(The)m 467(cross)s 1049(reference)s +220 fnt35 2032 5568(@T)m 26(ab)k 4(le&&preceding)k 240 fnt82 +4116 5571(points)m 4792(to)s 5071(some)s 5671(table)s 6231(appearing)s +7267(earlier)s 7975(in)s 8258(the)s 8646(\207nal)s 0 5283(printed)m +760(document)s 1790(than)s 2285(itself;)s 2899(that)s 3343(is,)s +3635(the)s 4009(arro)s 6(w)k 4640(is)s 4876(guaranteed)s +6009(to)s 6274(point)s 6852(backw)s 2(ards)k 7950(through)s +8778(the)s 0 4995(document.)m 1108(Usually)s 1907(it)s 2100(points)s +2737(to)s 2977(the)s 3326(nearest)s 4063(preceding)s 5060(in)s 9(v)k 4(ocation.)k +6222(Similarly)s 15(,)k 220 fnt35 7203 4992(@T)m 26(ab)k 4(le&&f)k 6(ollo)k 3(wing)k +240 fnt82 0 4707(points)m 636(forw)s 2(ards,)k 1590(usually)s +2335(to)s 2574(the)s 2922(nearest)s 3657(follo)s 6(wing)k +4634(in)s 9(v)k 4(ocation.)k 220 fnt35 5795 4704(@T)m 26(ab)k 4(le&&f)k 6(oll_or_prec)k +240 fnt82 8022 4707(is)m 8232(the)s 8579(same)s 0 4419(as)m +220 fnt35 250 4416(@T)m 26(ab)k 4(le&&f)k 6(ollo)k 3(wing)k +240 fnt82 2173 4419(if)m 2390(it)s 2582(e)s 3(xists,)k +3230(otherwise)s 4215(it)s 4407(is)s 4617(the)s 4965(same)s +5512(as)s 220 fnt35 5762 4416(@T)m 26(ab)k 4(le&&preceding)k +240 fnt82 7746 4419(.)m 480 4045(This)m 962(section)s 1702(has)s +2079(been)s 2594(concerned)s 3641(with)s 4130(what)s 4661(a)s +4834(cross)s 5382(reference)s 6331(is)s 6548(\211)s 6734(an)s +7023(arro)s 6(w)k 7635(from)s 8165(one)s 8574(point)s +0 3757(in)m 242(a)s 407(document)s 1410(to)s 1648(another)s +2424(\211)s 2603(b)s 4(ut)k 2963(not)s 3328(with)s +3809(ho)s 6(w)k 4269(it)s 4460(is)s 4669(used.)s +5271(One)s 5724(simple)s 6416(w)s 2(ay)k 6866(to)s +7104(use)s 7478(a)s 7643(cross)s 8183(reference)s 0 3469(is)m +210(to)s 449(put)s 815(it)s 1007(where)s 1647(an)s +1930(object)s 2574(is)s 2784(e)s 3(xpected,)k 3738(lik)s 2(e)k +4150(this:)s 220 fnt35 480 2968(a | @T)m 26(ab)k 4(le&&cities | c)k +240 fnt82 0 2513(In)m 265(this)s 670(case)s 1146(the)s +1504(cross)s 2055(reference)s 3007(will)s 3443(be)s 3734(replaced)s +4610(by)s 4914(a)s 5089(cop)s 2(y)k 5616(of)s +5897(the)s 6254(in)s 9(v)k 4(ocation)k 7317(it)s +7519(points)s 8164(to:)s 8525(in)s 8778(the)s 0 2225(e)m 3(xample)k +866(just)s 1275(gi)s 6(v)k 3(en,)k 1909(a)s +2079(table)s 2603(will)s 3033(appear)s 3734(between)s 220 fnt35 +4591 2222(a)m 240 fnt82 4772 2225(and)m 220 fnt35 5180 2222(c.)m +240 fnt82 5456 2225(Other)m 6064(applications)s 7274(of)s 7549(cross)s +8095(references)s 0 1937(may)m 466(be)s 747(found)s 1364(in)s +1606(Chapter)s 2423(4,)s 2649(including)s 3606(\207nding)s 4337(the)s +4685(number)s 5475(of)s 5746(the)s 6093(page)s 6601(where)s +7240(something)s 8289(appears,)s 0 1649(producing)m 1018(running)s 1809(page)s +2311(headers)s 3085(and)s 3483(footers,)s 4246(and)s 4643(accessing)s +5606(databases)s 6566(of)s 6831(Roman)s 7573(numerals,)s 8549(refer)s +8998(-)s 0 1361(ences,)m 638(etc.)s 1080(Cross)s 1676(references)s +2707(are)s 3054(also)s 3492(used)s 3989(by)s 4283(g)s 1(alle)k 3(ys,)k +5063(as)s 5313(will)s 5739(be)s 6021(e)s 3(xplained)k +7006(in)s 7249(the)s 7597(ne)s 3(xt)k 8066(section.)s +480 987(The)m 943(implementation)s 2535(of)s 2841(cross)s 3418(referencing)s +4593(copies)s 5290(e)s 6(v)k 3(ery)k 5901(symbol)s +6696(in)s 9(v)k 4(ocation)k 7785(with)s 8302(a)s +220 fnt35 8503 984(@T)m 26(ag)k 240 fnt82 0 699(parameter)m +1008(into)s 1427(the)s 240 fnt83 1768 701(cr)m 10(oss-r)k 8(efer)k 8(ence)k +3275(database)s 240 fnt82 4133 699(,)m 4233(a)s 4393(collection)s +5385(of)s 5650(\207les)s 6093(whose)s 6754(names)s 7410(end)s +7807(in)s 220 fnt35 8044 696(.ld)m 240 fnt82 8316 699(inde)m 3(x)k 3(ed)k +0 411(by)m 286(one)s 679(\207le)s 1032(whose)s 1691(name)s +2256(is)s 220 fnt35 2458 408(lout.li)m 240 fnt82 2954 411(.)m +3109(It)s 3306(is)s 3507(generally)s 4441(the)s 4781(case)s +5239(that)s 5649(the)s 5988(b)s 4(ulk)k 6462(content)s +7218(of)s 7480(a)s 7638(symbol)s 8389(such)s 8876(as)s +0 123(the)m 337(table)s 845(abo)s 3(v)k 3(e)k +1455(is)s 1653(contained)s 2629(in)s 2860(its)s 3124(right)s +3623(or)s 3870(body)s 4393(parameter)s 9(,)k 5433(and)s +5825(that)s 6231(this)s 6615(b)s 4(ulk)k 7086(content)s +7838(is)s 8036(not)s 8390(needed)s +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 9 15 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Italic +%%+ font Times-Bold +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +1 LoutMargSet +grestore +240 fnt83 0 13845(1.3.)m 454(Cr)s 10(oss)k 1058(r)s 8(efer)k 8(ences)k +240 fnt84 8952 13842(9)m 240 fnt82 0 13207(by)m 297(cross)s +843(references)s 1878(to)s 2121(the)s 2472(symbol.)s 3345(Hence,)s +4067(to)s 4310(sa)s 4(v)k 3(e)k 4787(space)s +5378(in)s 5625(the)s 5977(database,)s 6910(Lout)s 7426(replaces)s +8263(the)s 8615(right)s 0 12919(parameter)m 1011(of)s 1279(each)s +1771(symbol)s 2527(it)s 2716(writes)s 3347(into)s 3768(it)s +3957(by)s 4248(the)s 4592(w)s 2(ord)k 5137(???)s +5505(whene)s 6(v)k 3(er)k 6482(the)s 6827(right)s +7335(parameter)s 8345(appears)s 0 12631(to)m 249(be)s 542(lar)s 4(ge.)k +1190(The)s 1629(table)s 2160(abo)s 3(v)k 3(e)k +2792(w)s 2(ould)k 3458(appear)s 4166(as)s 4427(???)s +4809(because)s 5632(of)s 5914(this)s 6321(optimization,)s 7647(and)s +8062(in)s 8316(general,)s 0 12343(the)m 367(user)s 845(must)s +1390(ensure)s 2089(that)s 2527(an)s 3(y)k 2944(content)s +3728(required)s 4601(by)s 4915(cross)s 5477(references)s 6527(is)s +6757(contained)s 7765(in)s 8028(parameters)s 0 12055(other)m 545(than)s +1007(the)s 1348(right)s 1852(or)s 2104(body)s 2631(parameter)s 13(.)k +3729(This)s 4199(optimization)s 5457(does)s 5940(not)s 6299(apply)s +6878(when)s 7447(the)s 7788(symbol)s 8541(being)s 0 11767(written)m +733(into)s 1158(the)s 1506(cross-reference)s 3019(database)s 3898(is)s +4108(a)s 4274(g)s 1(alle)k 3(y)k 15(.)k +240 fnt84 0 10974(1.4.)m 471(Galleys)s 240 fnt82 480 10497(It)m +695(is)s 915(time)s 1406(to)s 1655(pause)s 2267(and)s +2681(ask)s 3072(ourselv)s 3(es)k 4033(ho)s 6(w)k +4505(close)s 5062(we)s 5408(are)s 5765(to)s 6015(achie)s 6(ving)k +7002(our)s 7392(aim)s 7820(of)s 8102(producing)s 0 10209(neatly)m +638(formatted)s 1624(documents.)s 2825(W)s 19(e)k 3194(can)s +3583(certainly)s 4472(produce)s 5299(the)s 5647(pieces)s 6295(of)s +6566(a)s 6732(document:)s 160 fnt84 870 9532(PURCELL)m 128 fnt82 +1626 9604(1)m 160 fnt82 480 9240(In)m 705(the)s 991(w)s 1(orld)k +1455(of)s 1691(music)s 480 9060(England)m 1192(is)s 1473(supposed)s +480 8880(to)m 686(be)s 921(a)s 1078(mere)s 1481(pro)s 2(vince.)k +480 8700(If)m 775(she)s 1166(produces)s 1918(an)s 480 8520(indif)m 4(ferent)k +1446(composer)s 480 8340(or)m 763(performer)s 6(,)k 1577(that)s +1967(is)s 480 8160(re)m 2(garded)k 1172(else)s 4(where)k +1940(as)s 480 7980(perfectly)m 1215(normal)s 1837(and)s 480 7800(natural;)m +1072(b)s 3(ut)k 1388(if)s 1608(foreign)s 480 7620(students)m +1215(of)s 1574(musical)s 480 7440(history)m 1286(ha)s 3(v)k 2(e)k +1947(to)s 480 7260(ackno)m 4(wledge)k 1440(a)s 1636(British)s +480 7080(musical)m 1105(genius,)s 1686(he)s 1967(is)s 480 6900(considered)m +1211(a)s 1322(freak.)s 800 6667(Such)m 1267(a)s 1488(freak)s +1967(is)s 480 6487(Henry)m 917(Purcell.)s 1480(Y)s 16(et)k +1736(if)s 1884(we)s 480 6307(mak)m 1(e)k 875(a)s +1000(choice)s 1467(of)s 1662(\207fteen)s 480 6127(of)m 717(the)s +1005(w)s 1(orld')k 8(s)k 1574(musical)s 480 5947(classics,)m +1050(as)s 1228(here,)s 1586(we)s 1820(\207nd)s 480 5767(that)m +774(we)s 1013(cannot)s 1495(omit)s 1843(this)s 480 5587(English)m +1005(master)s 8(.)k 128 fnt82 2634 9784(1)m 160 fnt82 +2685 9712(Blom,)m 3107(Eric.)s 160 fnt83 3476 9713(Some)m 3852(Gr)s 5(eat)k +2634 9533(Composer)m 1(s.)k 160 fnt82 3728 9532(Oxford,)m 2634 9352(1944.)m +gsave +4788 7375 translate +220 fnt35 1927 2494 0 2494 220 288 61 LoutGraphic +gsave +0 0 moveto xsize 0 lineto xsize ysize lineto +0 ysize lineto closepath stroke +grestore +160 fnt35 170 2207(@T)m 19(e)k 4(xtPlace)k 170 173(@F)m 4(ootSect)k + +grestore +gsave +4788 4881 translate +220 fnt35 1927 2494 0 2494 220 288 61 LoutGraphic +gsave +0 0 moveto xsize 0 lineto xsize ysize lineto +0 ysize lineto closepath stroke +grestore +160 fnt35 170 2207(@T)m 19(e)k 4(xtPlace)k 170 173(@F)m 4(ootSect)k + +grestore +gsave +4788 2387 translate +220 fnt35 1927 2494 0 2494 220 288 61 LoutGraphic +gsave +0 0 moveto xsize 0 lineto xsize ysize lineto +0 ysize lineto closepath stroke +grestore +160 fnt35 170 2207(@T)m 19(e)k 4(xtPlace)k 170 173(@F)m 4(ootSect)k + +grestore +160 fnt35 4788 2157(@P)m 6(ageList)k 240 fnt82 0 1671(b)m 4(ut)k +362(when)s 938(we)s 1273(try)s 1592(to)s 1831(mer)s 4(ge)k +2480(them)s 3018(together)s 9(,)k 3899(we)s 4234(encounter)s +5237(tw)s 2(o)k 5647(obstacles.)s 480 1297(First,)m 1029(when)s +1610(an)s 1899(object)s 2548(is)s 2763(entered)s 3530(at)s +3767(a)s 3938(certain)s 4650(place)s 5215(in)s 5463(the)s +5817(document,)s 6873(it)s 7070(appears)s 7857(at)s 8094(that)s +8518(place.)s 0 1009(But)m 393(a)s 546(footnote)s 1385(is)s +1582(naturally)s 2472(entered)s 3219(immediately)s 4454(after)s 4936(the)s +5271(point)s 5810(it)s 5988(refers)s 6568(to)s 6794(\(`)s +200 fnt82 6934 1018(PURCELL)m 240 fnt82 7819 1009(')m 7917(in)s +8147(this)s 8529(case\),)s 0 721(yet)m 352(it)s 544(appears)s +1325(some)s 6(where)k 2464(else:)s 2941(at)s 3173(the)s +3521(bottom)s 4259(of)s 4530(a)s 4696(page.)s 480 347(Second,)m +1285(all)s 1570(our)s 1942(features)s 2740(b)s 4(uild)k +3278(up)s 3564(lar)s 4(ger)k 4168(objects)s 4889(out)s +5247(of)s 5510(smaller)s 6265(ones,)s 6803(b)s 4(ut)k +7158(the)s 200 fnt82 7498 356(PURCELL)m 240 fnt82 8435 347(object,)m +0 59(for)m 333(e)s 3(xample,)k 1242(must)s 1762(be)s +2039(brok)s 2(en)k 2753(do)s 6(wn)k 3332(into)s +3752(page-sized)s 4827(pieces.)s 5583(This)s 6053(occurs)s 6723(when)s +7294(the)s 7637(a)s 4(v)k 6(ailable)k 8539(space)s + +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 10 16 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +%%+ font Times-Italic +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +0 LoutMargSet +grestore +240 fnt84 0 13840(10)m 240 fnt83 6965 13843(Chapter)m 7815(1.)s +8089(Principles)s 240 fnt82 0 13205(at)m 230(the)s 575(`some)s 6(where)k +1790(else')s 2270(is)s 2477(insuf\207cient)s 3610(to)s 3846(hold)s +4327(the)s 4672(entire)s 5268(object,)s 5957(so)s 6220(this)s +6613(second)s 7333(obstacle)s 8169(arises)s 8760(out)s 0 12917(of)m +271(the)s 619(\207rst.)s 480 12543(Lout')m 13(s)k 1135(last)s +1518(major)s 2127(feature,)s 2888(which)s 3523(we)s 3850(introduce)s +4801(to)s 5032(o)s 3(v)k 3(ercome)k 6017(these)s +6557(obstacles,)s 7532(is)s 7734(the)s 240 fnt83 8074 12545(galle)m 7(y)k +240 fnt82 8699 12543(\(the)m 0 12255(name)m 564(is)s 764(borro)s 6(wed)k +1723(from)s 2237(the)s 2575(g)s 1(alle)k 3(ys)k +3288(used)s 3775(in)s 4008(manual)s 4757(typesetting\).)s 6039(A)s +6259(g)s 1(alle)k 3(y)k 6882(is)s 7082(an)s +7355(object)s 7989(plus)s 8429(a)s 8584(cross)s 0 11967(reference)m +943(which)s 1585(points)s 2221(to)s 2460(where)s 3100(the)s +3448(object)s 4092(is)s 4302(to)s 4541(appear)s 13(.)k +5329(The)s 5757(e)s 3(xample)k 6620(abo)s 3(v)k 3(e)k +7242(has)s 7612(three)s 8145(g)s 1(alle)k 3(ys:)k +160 fnt84 870 11234(PURCELL)m 128 fnt82 1626 11306(1)m 160 fnt82 +480 10942(In)m 705(the)s 991(w)s 1(orld)k 1455(of)s +1691(music)s 480 10762(England)m 1192(is)s 1473(supposed)s 480 10582(to)m +686(be)s 921(a)s 1078(mere)s 1481(pro)s 2(vince.)k +480 10402(If)m 775(she)s 1166(produces)s 1918(an)s 480 10222(indif)m 4(ferent)k +1446(composer)s 480 10042(or)m 763(performer)s 6(,)k 1577(that)s +1967(is)s 480 9862(re)m 2(garded)k 1172(else)s 4(where)k +1940(as)s 480 9682(perfectly)m 1215(normal)s 1837(and)s 480 9502(natural;)m +1072(b)s 3(ut)k 1388(if)s 1608(foreign)s 480 9322(students)m +1215(of)s 1574(musical)s 480 9142(history)m 1286(ha)s 3(v)k 2(e)k +1947(to)s 480 8962(ackno)m 4(wledge)k 1440(a)s 1636(British)s +480 8782(musical)m 1105(genius,)s 1686(he)s 1967(is)s 480 8602(considered)m +1211(a)s 1322(freak.)s 800 8369(Such)m 1267(a)s 1488(freak)s +1967(is)s 480 8189(Henry)m 917(Purcell.)s 1480(Y)s 16(et)k +1736(if)s 1884(we)s 480 8009(mak)m 1(e)k 875(a)s +1000(choice)s 1467(of)s 1662(\207fteen)s 480 7829(of)m 717(the)s +1005(w)s 1(orld')k 8(s)k 1574(musical)s 480 7649(classics,)m +1050(as)s 1228(here,)s 1586(we)s 1820(\207nd)s 480 7469(that)m +774(we)s 1013(cannot)s 1495(omit)s 1843(this)s 480 7289(English)m +1005(master)s 8(.)k gsave +3321 11312 translate +180.0000 rotate +gsave +0 0 translate +30.0000 rotate +gsave +0 0 translate +240 fnt82 68 0 0 0 240 288 60 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore +gsave +0 0 translate +240 fnt82 1134 0 0 0 240 288 60 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore +gsave +0 0 translate +-30.0000 rotate +gsave +0 0 translate +240 fnt82 68 0 0 0 240 288 60 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore + +grestore +gsave +3201 9047 translate +220 fnt35 1927 2494 0 2494 220 288 61 LoutGraphic +gsave +0 0 moveto xsize 0 lineto xsize ysize lineto +0 ysize lineto closepath stroke +grestore +160 fnt35 170 2207(@T)m 19(e)k 4(xtPlace)k +170 173(@F)m 4(ootSect)k +grestore +gsave +3201 6553 translate +220 fnt35 1927 2494 0 2494 220 288 61 LoutGraphic +gsave +0 0 moveto xsize 0 lineto xsize ysize lineto +0 ysize lineto closepath stroke +grestore +160 fnt35 170 2207(@T)m 19(e)k 4(xtPlace)k +170 173(@F)m 4(ootSect)k +grestore +gsave +3201 4059 translate +220 fnt35 1927 2494 0 2494 220 288 61 LoutGraphic +gsave +0 0 moveto xsize 0 lineto xsize ysize lineto +0 ysize lineto closepath stroke +grestore +160 fnt35 170 2207(@T)m 19(e)k 4(xtPlace)k +170 173(@F)m 4(ootSect)k +grestore +160 fnt35 3201 3829(@P)m 6(ageList)k +gsave +6688 11541 translate +180.0000 rotate +gsave +0 0 translate +30.0000 rotate +gsave +0 0 translate +240 fnt82 68 0 0 0 240 288 60 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore +gsave +0 0 translate +240 fnt82 1440 0 0 0 240 288 60 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore +gsave +0 0 translate +-30.0000 rotate +gsave +0 0 translate +240 fnt82 68 0 0 0 240 288 60 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore + +grestore +200 fnt83 6748 11497(to)m 6947(printer)s gsave +4335 9295 translate +30.0000 rotate +gsave +0 0 translate +240 fnt82 68 0 0 0 240 288 60 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore +gsave +4335 9295 translate +240 fnt82 963 0 0 0 240 288 60 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore +gsave +4335 9295 translate +-30.0000 rotate +gsave +0 0 translate +240 fnt82 68 0 0 0 240 288 60 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore +128 fnt82 5418 9331(1)m +160 fnt82 5469 9259(Blom,)m 5891(Eric.)s 160 fnt83 6260 9260(Some)m +6636(Gr)s 5(eat)k 5418 9080(Composer)m 1(s.)k 160 fnt82 +6512 9079(Oxford,)m 5418 8899(1944.)m 240 fnt82 0 3343(A)m 229(g)s 1(alle)k 3(y)k +861(replaces)s 1693(the)s 2039(in)s 9(v)k 4(ocation)k +3091(pointed)s 3866(to)s 4103(by)s 4395(its)s 4670(cross)s +5210(reference.)s 6260(If)s 6488(space)s 7073(is)s 7282(not)s +7646(suf\207cient)s 8593(there)s 0 3055(to)m 232(hold)s 708(it)s +892(all,)s 1230(the)s 1570(remainder)s 2590(of)s 2854(the)s +3194(g)s 1(alle)k 3(y)k 3820(is)s 4023(split)s +4486(of)s 6(f)k 4822(\(the)s 5242(v)s 3(ertical)k +6001(concatenation)s 7378(symbol)s 8130(preceding)s 0 2767(it)m 199(being)s +791(discarded\))s 1842(and)s 2253(it)s 2452(replaces)s 3293(later)s +3783(in)s 9(v)k 4(ocations)k 4931(of)s 5209(the)s +5564(same)s 6119(symbol.)s 6935(This)s 7418(is)s 7635(e)s 3(xactly)k +8383(what)s 8916(is)s 0 2479(required)m 854(to)s 1093(get)s +1445(te)s 3(xt)k 1860(and)s 2264(footnotes)s 3205(onto)s +3684(pages.)s 480 2105(T)m 19(o)k 780(create)s 1405(a)s +1571(g)s 1(alle)k 3(y)k 15(,)k 2243(\207rst)s +2674(de\207ne)s 3315(a)s 3481(symbol)s 4241(with)s 4723(a)s +4889(special)s 220 fnt35 5607 2102(into)m 240 fnt82 6013 2105(clause,)m +6717(lik)s 2(e)k 7129(this:)s 220 fnt35 480 1604(def @F)m 6(ootNote into { @F)k 6(ootPlace&&f)k 6(ollo)k 3(wing })k +480 1316( r)m -3(ight x)k 480 1028({)m 480 740( 8p @F)m 6(ont x)k +480 452(})m +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 11 17 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Italic +%%+ font Times-Bold +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +1 LoutMargSet +grestore +240 fnt83 0 13843(1.4.)m 454(Galle)s 7(ys)k 240 fnt84 +8839 13840(11)m 240 fnt82 0 13205(An)m 343(in)s 9(v)k 4(ocation)k +1390(of)s 1654(such)s 2142(a)s 2301(symbol)s 3054(will)s +3473(then)s 3934(be)s 4209(a)s 4368(g)s 1(alle)k 3(y)k +4994(whose)s 5655(object)s 6292(is)s 6495(the)s 6835(result)s +7418(of)s 7682(the)s 8022(in)s 9(v)k 4(ocation,)k +0 12917(and)m 399(whose)s 1062(cross)s 1598(reference)s 2536(is)s +2740(gi)s 6(v)k 3(en)k 3315(by)s 3603(the)s +220 fnt35 3946 12914(into)m 240 fnt82 4347 12917(clause.)m 5102(The)s +5525(right)s 6030(parameter)s 7039(of)s 7304(the)s 7647(cross)s +8183(reference)s 0 12629(must)m 525(be)s 807(one)s 1209(of)s +220 fnt35 1480 12626(preceding)m 240 fnt82 2431 12629(,)m 220 fnt35 +2538 12626(f)m 6(ollo)k 3(wing)k 240 fnt82 3368 12629(,)m +3475(and)s 220 fnt35 3879 12626(f)m 6(oll_or_prec)k 240 fnt82 +5013 12629(.)m 480 12255(A)m 700(symbol,)s 1502(lik)s 2(e)k +220 fnt35 1903 12252(@F)m 6(ootPlace)k 3(,)k 240 fnt82 +3196 12255(which)m 3827(is)s 4027(the)s 240 fnt83 4364 12257(tar)m 8(g)k 2(et)k +240 fnt82 4979 12255(of)m 5239(a)s 5395(g)s 1(alle)k 3(y)k 15(,)k +6056(must)s 6571(contain)s 7321(the)s 7659(special)s 8366(symbol)s +220 fnt35 0 11964(@Galle)m 4(y)k 240 fnt82 898 11967(e)m 3(xactly)k +1639(once)s 2147(in)s 2390(its)s 2666(body;)s 3258(often)s +3806(this)s 4202(is)s 4412(all)s 4705(that)s 5123(the)s +5471(body)s 6005(contains:)s 220 fnt35 480 11466(def @F)m 6(ootPlace { @Galle)k 4(y })k +240 fnt82 0 10968(It)m 229(is)s 464(this)s 885(special)s +1628(symbol)s 2412(that)s 2855(is)s 3090(replaced)s 3982(by)s +4300(the)s 4673(incoming)s 5655(g)s 1(alle)k 3(y)k 15(,)k +6352(in)s 6619(f)s 2(act,)k 7106(not)s 7497(the)s +220 fnt35 7870 10965(@F)m 6(ootPlace)k 240 fnt82 0 10680(symbol)m +760(as)s 1010(a)s 1176(whole.)s 480 10306(A)m 718(symbol)s +1487(which)s 2138(contains)s 220 fnt35 2994 10303(@Galle)m 4(y)k +240 fnt82 3832 10306(,)m 3948(either)s 4560(directly)s 5351(within)s +6028(its)s 6313(body)s 6855(or)s 7123(indirectly)s 8101(within)s +8778(the)s 0 10018(body)m 533(of)s 802(a)s 966(symbol)s +1725(it)s 1915(in)s 9(v)k 4(ok)k 2(es,)k +2750(is)s 2959(called)s 3585(a)s 240 fnt83 3749 10020(r)m 8(eceptive)k +240 fnt82 4668 10018(symbol,)m 5478(meaning)s 6353(recepti)s 6(v)k 3(e)k +7274(to)s 7511(g)s 1(alle)k 3(ys.)k 220 fnt35 +8346 10015(@F)m 6(oot)k 240 fnt82 8998 10018(-)m 220 fnt35 +0 9727(Place)m 240 fnt82 630 9730(is)m 870(recepti)s 6(v)k 3(e,)k +1873(which)s 2545(mak)s 2(es)k 220 fnt35 3235 9727(@F)m 6(ootList,)k +4364(@F)s 6(ootSect)k 240 fnt82 5545 9730(and)m 220 fnt35 +5979 9727(@P)m 8(ageList)k 240 fnt82 7133 9730(recepti)m 6(v)k 3(e)k +8085(since)s 8663(the)s 3(y)k 0 9442(in)m 9(v)k 4(ok)k 2(e)k +220 fnt35 704 9439(@F)m 6(ootPlace)k 3(.)k 240 fnt82 +2078 9442(If)m 2319(no)s 2623(g)s 1(alle)k 3(y)k +3268(replaces)s 4112(an)s 3(y)k 220 fnt35 4520 9439(@Galle)m 4(y)k +240 fnt82 5429 9442(within)m 6108(some)s 6680(in)s 9(v)k 4(ocation)k +7745(of)s 8027(a)s 8204(recepti)s 6(v)k 3(e)k +0 9154(symbol,)m 816(that)s 1239(in)s 9(v)k 4(ocation)k +2297(is)s 2512(replaced)s 3383(by)s 220 fnt35 3682 9151(@Null)m +240 fnt82 4267 9154(.)m 4435(The)s 4868(adv)s 6(antages)k +5980(of)s 6256(this)s 6656(rule)s 7088(for)s 7430(page)s +7943(layout)s 8606(were)s 0 8866(e)m 3(xplained)k 985(at)s +1217(the)s 1565(end)s 1969(of)s 2240(Section)s 3014(1.2.)s +480 8492(Let)m 852(us)s 1109(no)s 6(w)k 1563(follo)s 6(w)k +2228(through)s 3023(the)s 3364(construction)s 4596(of)s 4861(our)s +5233(e)s 3(xample)k 6089(document.)s 7190(Initially)s 7992(there)s +8518(is)s 8721(just)s 0 8204(the)m 348(one)s 240 fnt83 +750 8206(r)m 10(oot)k 240 fnt82 1203 8204(g)m 1(alle)k 3(y)k 15(,)k +1875(containing)s 2938(an)s 3221(une)s 3(xpanded)k 4434(in)s 9(v)k 4(ocation)k +5488(of)s 220 fnt35 5759 8201(@P)m 8(ageList:)k 180 fnt35 +3315 7732(@P)m 7(ageList)k gsave +5746 7778 translate +180.0000 rotate +gsave +0 0 translate +30.0000 rotate +gsave +0 0 translate +240 fnt82 68 0 0 0 240 288 60 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore +gsave +0 0 translate +240 fnt82 1440 0 0 0 240 288 60 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore +gsave +0 0 translate +-30.0000 rotate +gsave +0 0 translate +240 fnt82 68 0 0 0 240 288 60 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore + +grestore +200 fnt83 5806 7734(to)m 6005(printer)s +240 fnt82 0 7241(Then)m 602(the)s 200 fnt82 1004 7250(PURCELL)m +240 fnt82 2002 7241(g)m 1(alle)k 3(y)k 2690(appears,)s +3580(tar)s 4(geted)k 4457(to)s 4750(a)s 220 fnt35 +4969 7238(@T)m 26(e)k 6(xtPlace)k 3(.)k 240 fnt82 +6348 7241(Lout)m 6913(kno)s 6(ws)k 7638(that)s 8109(there)s +8696(is)s 8960(a)s 220 fnt35 0 6950(@T)m 26(e)k 6(xtPlace)k +240 fnt82 1218 6953(hidden)m 1927(inside)s 220 fnt35 2554 6950(@P)m 8(ageList,)k +240 fnt82 3724 6953(so)m 3990(it)s 4182(e)s 3(xpands)k +220 fnt35 5015 6950(@P)m 8(ageList:)k 160 fnt84 870 6220(PURCELL)m +128 fnt82 1626 6292(1)m 160 fnt82 480 5928(In)m 705(the)s +991(w)s 1(orld)k 1455(of)s 1691(music)s 480 5748(England)m +1192(is)s 1473(supposed)s 480 5568(to)m 686(be)s 921(a)s +1078(mere)s 1481(pro)s 2(vince.)k 480 5388(If)m 775(she)s +1166(produces)s 1918(an)s 480 5208(indif)m 4(ferent)k 1446(composer)s +480 5028(or)m 763(performer)s 6(,)k 1577(that)s 1967(is)s +480 4848(re)m 2(garded)k 1172(else)s 4(where)k 1940(as)s +480 4668(perfectly)m 1215(normal)s 1837(and)s 480 4488(natural;)m 1072(b)s 3(ut)k +1388(if)s 1608(foreign)s 480 4308(students)m 1215(of)s 1574(musical)s +480 4128(history)m 1286(ha)s 3(v)k 2(e)k 1947(to)s +480 3948(ackno)m 4(wledge)k 1440(a)s 1636(British)s 480 3768(musical)m +1105(genius,)s 1686(he)s 1967(is)s 480 3588(considered)m 1211(a)s +1322(freak.)s 800 3355(Such)m 1267(a)s 1488(freak)s 1967(is)s +480 3175(Henry)m 917(Purcell.)s 1480(Y)s 16(et)k 1736(if)s +1884(we)s 480 2995(mak)m 1(e)k 875(a)s 1000(choice)s +1467(of)s 1662(\207fteen)s 480 2815(of)m 717(the)s 1005(w)s 1(orld')k 8(s)k +1574(musical)s 480 2635(classics,)m 1050(as)s 1228(here,)s 1586(we)s +1820(\207nd)s 480 2455(that)m 774(we)s 1013(cannot)s 1495(omit)s +1843(this)s 480 2275(English)m 1005(master)s 8(.)k gsave +3434 6298 translate +180.0000 rotate +gsave +0 0 translate +30.0000 rotate +gsave +0 0 translate +240 fnt82 68 0 0 0 240 288 60 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore +gsave +0 0 translate +240 fnt82 1247 0 0 0 240 288 60 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore +gsave +0 0 translate +-30.0000 rotate +gsave +0 0 translate +240 fnt82 68 0 0 0 240 288 60 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore + +grestore +gsave +3315 4033 translate +220 fnt35 1927 2494 0 2494 220 288 61 LoutGraphic +gsave +0 0 moveto xsize 0 lineto xsize ysize lineto +0 ysize lineto closepath stroke +grestore +160 fnt35 +170 2207(@T)m 19(e)k 4(xtPlace)k 170 173(@F)m 4(ootSect)k + +grestore +160 fnt35 3315 3803(@P)m 6(ageList)k gsave +6802 6527 translate +180.0000 rotate +gsave +0 0 translate +30.0000 rotate +gsave +0 0 translate +240 fnt82 68 0 0 0 240 288 60 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore +gsave +0 0 translate +240 fnt82 1440 0 0 0 240 288 60 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore +gsave +0 0 translate +-30.0000 rotate +gsave +0 0 translate +240 fnt82 68 0 0 0 240 288 60 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore + +grestore +200 fnt83 6862 6483(to)m +7061(printer)s 240 fnt82 0 1790(After)m 586(promoting)s 1659(the)s +2030(\207rst)s 2484(line)s 2922(into)s 220 fnt35 3370 1787(@T)m 26(e)k 6(xtPlace)k 3(,)k +240 fnt82 4658 1790(the)m 5029(footnote)s 5905(g)s 1(alle)k 3(y)k +6563(attached)s 7440(to)s 7702(it)s 7917(appears)s 8722(and)s +0 1502(demands)m 938(an)s 1257(in)s 9(v)k 4(ocation)k +2347(of)s 220 fnt35 2654 1499(@F)m 6(ootPlace)k 240 fnt82 +3946 1502(follo)m 6(wing)k 4960(its)s 5272(attachment)s 6416(point)s +7004(\(`)s 200 fnt82 7144 1511(PURCELL)m 240 fnt82 8029 1502('\).)m +8387(Such)s 8960(a)s 220 fnt35 0 1211(@F)m 6(ootPlace)k +240 fnt82 1274 1214(is)m 1502(found)s 2138(at)s 2388(the)s +2754(bottom)s 3511(of)s 3800(the)s 4166(\207rst)s 4616(page,)s +5193(inside)s 220 fnt35 5838 1211(@F)m 6(ootSect,)k 240 fnt82 +7054 1214(which)m 7714(is)s 7943(accordingly)s 0 926(e)m 3(xpanded,)k +1022(and)s 1426(the)s 1774(footnote)s 2627(is)s 2837(promoted)s +3812(onto)s 4291(the)s 4639(page:)s +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 12 18 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +%%+ font Times-Italic +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +0 LoutMargSet +grestore +240 fnt84 0 13840(12)m 240 fnt83 6965 13843(Chapter)m 7815(1.)s +8089(Principles)s 160 fnt82 480 12579(In)m 705(the)s 991(w)s 1(orld)k +1455(of)s 1691(music)s 480 12399(England)m 1192(is)s 1473(supposed)s +480 12219(to)m 686(be)s 921(a)s 1078(mere)s 1481(pro)s 2(vince.)k +480 12039(If)m 775(she)s 1166(produces)s 1918(an)s 480 11859(indif)m 4(ferent)k +1446(composer)s 480 11679(or)m 763(performer)s 6(,)k 1577(that)s +1967(is)s 480 11499(re)m 2(garded)k 1172(else)s 4(where)k +1940(as)s 480 11319(perfectly)m 1215(normal)s 1837(and)s 480 11139(natural;)m +1072(b)s 3(ut)k 1388(if)s 1608(foreign)s 480 10959(students)m +1215(of)s 1574(musical)s 480 10779(history)m 1286(ha)s 3(v)k 2(e)k +1947(to)s 480 10599(ackno)m 4(wledge)k 1440(a)s 1636(British)s +480 10419(musical)m 1105(genius,)s 1686(he)s 1967(is)s 480 10239(considered)m +1211(a)s 1322(freak.)s 800 10006(Such)m 1267(a)s 1488(freak)s +1967(is)s 480 9826(Henry)m 917(Purcell.)s 1480(Y)s 16(et)k +1736(if)s 1884(we)s 480 9646(mak)m 1(e)k 875(a)s +1000(choice)s 1467(of)s 1662(\207fteen)s 480 9466(of)m 717(the)s +1005(w)s 1(orld')k 8(s)k 1574(musical)s 480 9286(classics,)m +1050(as)s 1228(here,)s 1586(we)s 1820(\207nd)s 480 9106(that)m +774(we)s 1013(cannot)s 1495(omit)s 1843(this)s 480 8926(English)m +1005(master)s 8(.)k gsave +3434 12615 translate +180.0000 rotate +gsave +0 0 translate +30.0000 rotate +gsave +0 0 translate +240 fnt82 68 0 0 0 240 288 60 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore +gsave +0 0 translate +240 fnt82 1247 0 0 0 240 288 60 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore +gsave +0 0 translate +-30.0000 rotate +gsave +0 0 translate +240 fnt82 68 0 0 0 240 288 60 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore + +grestore +gsave +3315 10788 translate +240 fnt82 1927 2494 0 2494 240 288 60 LoutGraphic +gsave +0 0 moveto xsize 0 lineto xsize ysize lineto +0 ysize lineto closepath stroke +grestore +160 fnt84 560 1987(PURCELL)m 128 fnt82 +1316 2059(1)m 140 fnt35 170 1807(@T)m 16(e)k 4(xtPlace)k +gsave +170 924 translate +160 fnt82 567 0 0 0 160 180 40 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore +128 fnt82 170 785(1)m 160 fnt82 221 713(Blom,)m 703(Eric.)s +160 fnt83 1133 714(Some)m 170 534(Gr)m 5(eat)k 734(Composer)s 1(s.)k +160 fnt82 170 353(Oxford,)m 703(1944.)s 140 fnt35 170 173(@F)m 4(ootList)k + +grestore +140 fnt35 3315 10573(@P)m 5(ageList)k gsave +6802 13282 translate +180.0000 rotate +gsave +0 0 translate +30.0000 rotate +gsave +0 0 translate +240 fnt82 68 0 0 0 240 288 60 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore +gsave +0 0 translate +240 fnt82 1440 0 0 0 240 288 60 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore +gsave +0 0 translate +-30.0000 rotate +gsave +0 0 translate +240 fnt82 68 0 0 0 240 288 60 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore + +grestore +200 fnt83 6862 13238(to)m +7061(printer)s 240 fnt82 0 8441(No)m 6(w)k 512(the)s +858(promotion)s 1910(of)s 2179(the)s 200 fnt82 2525 8450(PURCELL)m +240 fnt82 3468 8441(g)m 1(alle)k 3(y)k 4100(resumes.)s +5045(When)s 5672(the)s 6018(\207rst)s 6447(page)s 6953(is)s +7161(\207lled,)s 7757(Lout)s 8266(searches)s 0 8153(forw)m 2(ards)k +898(for)s 1236(another)s 220 fnt35 2013 8150(@T)m 26(e)k 6(xtPlace)k +240 fnt82 3231 8153(to)m 3470(recei)s 6(v)k 3(e)k +4206(the)s 4554(remainder)s 9(,)k 5620(once)s 6128(ag)s 1(ain)k +6702(e)s 3(xpanding)k 7750(a)s 220 fnt35 7916 8150(@P)m 8(ageList:)k +160 fnt82 480 4955(performer)m 6(,)k 1436(that)s 1967(is)s +480 4775(re)m 2(garded)k 1172(else)s 4(where)k 1940(as)s +480 4595(perfectly)m 1215(normal)s 1837(and)s 480 4415(natural;)m 1072(b)s 3(ut)k +1388(if)s 1608(foreign)s 480 4235(students)m 1215(of)s 1574(musical)s +480 4055(history)m 1286(ha)s 3(v)k 2(e)k 1947(to)s +480 3875(ackno)m 4(wledge)k 1440(a)s 1636(British)s 480 3695(musical)m +1105(genius,)s 1686(he)s 1967(is)s 480 3515(considered)m 1211(a)s +1322(freak.)s 800 3282(Such)m 1267(a)s 1488(freak)s 1967(is)s +480 3102(Henry)m 917(Purcell.)s 1480(Y)s 16(et)k 1736(if)s +1884(we)s 480 2922(mak)m 1(e)k 875(a)s 1000(choice)s +1467(of)s 1662(\207fteen)s 480 2742(of)m 717(the)s 1005(w)s 1(orld')k 8(s)k +1574(musical)s 480 2562(classics,)m 1050(as)s 1228(here,)s 1586(we)s +1820(\207nd)s 480 2382(that)m 774(we)s 1013(cannot)s 1495(omit)s +1843(this)s 480 2202(English)m 1005(master)s 8(.)k gsave +3434 4991 translate +180.0000 rotate +gsave +0 0 translate +30.0000 rotate +gsave +0 0 translate +240 fnt82 68 0 0 0 240 288 60 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore +gsave +0 0 translate +240 fnt82 1247 0 0 0 240 288 60 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore +gsave +0 0 translate +-30.0000 rotate +gsave +0 0 translate +240 fnt82 68 0 0 0 240 288 60 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore + +grestore +gsave +3315 5233 translate +240 fnt82 1927 2494 0 2494 240 288 60 LoutGraphic +gsave +0 0 moveto xsize 0 lineto xsize ysize lineto +0 ysize lineto closepath stroke +grestore +160 fnt84 +560 1987(PURCELL)m 128 fnt82 1316 2059(1)m 160 fnt82 170 1695(In)m +341(the)s 573(w)s 1(orld)k 983(of)s 1164(music)s +170 1515(England)m 741(is)s 881(supposed)s 1515(to)s 170 1335(be)m +358(a)s 469(mere)s 825(pro)s 2(vince.)k 1491(If)s +170 1155(she)m 708(produces)s 1608(an)s 170 975(indif)m 4(ferent)k +879(composer)s 1540(or)s 567 0 0 0 160 180 40 170 763 LoutGr2 +0 0 moveto xsize 0 lineto stroke +grestore + +grestore +128 fnt82 170 624(1)m 160 fnt82 +221 552(Blom,)m 703(Eric.)s 160 fnt83 1133 553(Some)m 170 373(Gr)m 5(eat)k +734(Composer)s 1(s.)k 160 fnt82 170 192(Oxford,)m 703(1944.)s + +grestore +gsave +3315 2739 translate +240 fnt82 1927 2494 0 2494 240 288 60 LoutGraphic +gsave +0 0 moveto xsize 0 lineto xsize ysize lineto +0 ysize lineto closepath stroke +grestore +140 fnt35 170 2222(@T)m 16(e)k 4(xtPlace)k 170 173(@F)m 4(ootSect)k + +grestore +140 fnt35 3315 2524(@P)m 5(ageList)k gsave +6802 7727 translate +180.0000 rotate +gsave +0 0 translate +30.0000 rotate +gsave +0 0 translate +240 fnt82 68 0 0 0 240 288 60 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore +gsave +0 0 translate +240 fnt82 1440 0 0 0 240 288 60 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore +gsave +0 0 translate +-30.0000 rotate +gsave +0 0 translate +240 fnt82 68 0 0 0 240 288 60 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore + +grestore +200 fnt83 6862 7683(to)m +7061(printer)s 240 fnt82 0 1717(and)m 404(so)s 671(on.)s +1076(All)s 1437(these)s 1985(e)s 3(xpansions)k 3098(and)s +3503(replacements)s 4814(are)s 5162(done)s 5685(with)s 6168(total)s +6648(inte)s 3(grity)k 15(.)k 7604(F)s 3(or)k +7994(e)s 3(xample,)k 8909(if)s 0 1429(Lout)m 510(\207nds)s +1024(after)s 1517(e)s 3(xpanding)k 220 fnt35 2563 1426(@F)m 6(ootSect)k +240 fnt82 3711 1429(that)m 4126(the)s 4472(page)s 4977(is)s +5184(too)s 5541(full)s 5924(to)s 6160(accept)s 6828(e)s 6(v)k 3(en)k +7325(the)s 7670(\207rst)s 8099(line)s 8510(of)s 8778(the)s +0 1141(footnote,)m 220 fnt35 915 1138(@F)m 6(ootSect)k 240 fnt82 +2077 1141(is)m 2298(reset)s 2819(to)s 3070(une)s 3(xpanded)k +4294(and)s 4709(the)s 5068(search)s 5746(for)s 6096(a)s +6273(tar)s 4(get)k 6883(for)s 7232(the)s 7591(footnote)s +8456(mo)s 3(v)k 3(es)k 0 853(on.)m 396(And)s +858(the)s 1197(cross)s 1730(reference)s 2664(direction,)s 220 fnt35 +3611 850(preceding)m 240 fnt82 4613 853(or)m 220 fnt35 4864 850(f)m 6(ollo)k 3(wing,)k +240 fnt82 5799 853(is)m 6000(al)s 2(w)k 2(ays)k +6702(obe)s 3(yed)k 7440(\(although)s 8405(lack)s 8855(of)s +0 565(space)m 586(sometimes)s 1658(pre)s 6(v)k 3(ents)k +2509(Lout)s 3020(from)s 3543(choosing)s 4460(the)s 4807(nearest)s +5542(tar)s 4(get\).)k 6323(Only)s 6855(the)s 7202(root)s +7646(g)s 1(alle)k 3(y)k 8278(contains)s 0 277(recepti)m 6(v)k 3(e)k +922(symbols)s 1771(in)s 2014(our)s 2393(running)s 3191(e)s 3(xample,)k +4105(b)s 4(ut)k 4467(an)s 3(y)k 4864(g)s 1(alle)k 3(y)k +5498(may)s 5964(contain)s 6725(them.)s +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 13 19 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +%%+ font Times-Italic +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +1 LoutMargSet +grestore +480 fnt84 0 12955(Chapter)m 1819(2.)s 2400(Details)s 240 fnt84 +0 11690(2.1.)m 471(Lexical)s 1270(structur)s 4(e)k 2263(\(w)s 2(ords,)k +3079(spaces,)s 3844(symbols\))s 4796(and)s 5237(macr)s 4(os)k +240 fnt82 480 11213(The)m 902(input)s 1447(to)s 1679(Lout)s +2184(consists)s 2985(of)s 3249(a)s 3408(sequence)s 4334(of)s +240 fnt83 4598 11215(te)m 4(xtual)k 5297(units)s 240 fnt82 +5757 11213(,)m 5857(which)s 6492(may)s 6951(be)s 7226(either)s +240 fnt83 7822 11215(white)m 8386(spaces)s 240 fnt82 9019 11213(,)m +240 fnt83 0 10927(identi\207er)m 2(s,)k 1047(delimiter)s 2(s,)k +240 fnt82 2093 10925(or)m 240 fnt83 2352 10927(liter)m 3(al)k +2992(wor)s 8(ds)k 240 fnt82 3565 10925(.)m 3729(Each)s +4264(is)s 4474(a)s 4640(sequence)s 5573(of)s 240 fnt83 +5844 10927(c)m 3(har)k 3(acter)k 2(s)k 240 fnt82 +6914 10925(chosen)m 7636(from:)s 480 10387(letter)m 220 fnt35 1934 10384(@ab-zAB-Z_)m +240 fnt82 480 10099(white)m 1067(space)s 240 fnt83 1934 10101(space)m +2592(formfeed)s 3568(tab)s 3988(ne)s 3(wline)k 240 fnt82 +480 9811(quote)m 220 fnt35 1934 9808(")m 240 fnt82 480 9523(escape)m +220 fnt35 1934 9520(\\)m 240 fnt82 480 9235(comment)m 220 fnt35 +1934 9232(#)m 240 fnt82 480 8947(other)m 220 fnt35 1934 8944(!$%&'\(\)*+,-./0123456789:;<=>?[]^`{|}~)m +240 fnt82 0 8406(Notice)m 732(that)s 220 fnt35 1189 8403(@)m +240 fnt82 1480 8406(and)m 220 fnt35 1923 8403(_)m 240 fnt82 +2144 8406(are)m 2531(classed)s 3318(as)s 3608(letters.)s 4393(Basser)s +5129(Lout)s 5681(accepts)s 6474(the)s 6861(accented)s 7795(letters)s +8467(of)s 8778(the)s 0 8118(ISO-LA)m 26(TIN-1)k 1421(character)s +2388(set)s 2746(\(depending)s 3909(on)s 4238(ho)s 6(w)k +4732(it)s 4957(is)s 5200(installed\),)s 6228(and)s 6664(these)s +7244(are)s 7624(also)s 8095(classed)s 8876(as)s 0 7830(letters.)m +756(The)s 1195(ten)s 1555(digits)s 2148(are)s 2505(classed)s +3264(as)s 3525(`other')s 4218(characters,)s 5302(and)s 5717(in)s +5971(f)s 2(act)k 6397(the)s 6755(`other')s 7448(class)s +7974(contains)s 8833(all)s 0 7542(8-bit)m 511(characters)s 1529(\(e)s 3(xcept)k +2289(octal)s 2808(0\))s 3056(not)s 3422(assigned)s 4304(to)s +4543(pre)s 6(vious)k 5412(classes.)s 480 7168(A)m 240 fnt83 +698 7170(white)m 1256(space)s 240 fnt82 1841 7168(is)m 2038(a)s +2191(sequence)s 3111(of)s 3369(one)s 3758(or)s 4005(more)s +4539(white)s 5113(space)s 5687(characters.)s 6805(Lout)s 7304(treats)s +7858(the)s 8193(formfeed)s 0 6880(character)m 931(e)s 3(xactly)k +1668(lik)s 2(e)k 2076(the)s 2420(space)s 3003(character;)s +3985(it)s 4173(is)s 4379(useful)s 5014(for)s 5348(getting)s +6061(page)s 6565(breaks)s 7236(when)s 7808(printing)s 8614(Lout)s +0 6592(source)m 680(code.)s 480 6218(A)m 240 fnt83 709 6220(delimiter)m +240 fnt82 1635 6218(is)m 1844(a)s 2009(sequence)s 2941(of)s +3211(one)s 3612(or)s 3870(more)s 4415(`other')s 5096(characters)s +6113(which)s 6754(is)s 6963(the)s 7310(name)s 7883(of)s +8153(a)s 8317(symbol.)s 0 5930(F)m 3(or)k 417(e)s 3(xample,)k +220 fnt35 1360 5927({)m 240 fnt82 1512 5930(and)m 220 fnt35 +1945 5927(//)m 240 fnt82 2159 5930(are)m 2534(delimiters.)s 3681(When)s +4338(de\207ning)s 5205(a)s 5400(delimiter)s 9(,)k 6387(the)s +6764(name)s 7366(must)s 7920(be)s 8231(enclosed)s 0 5642(in)m +243(quotes:)s 220 fnt35 480 5143(def "^" { {} ^& {} })m 240 fnt82 0 4649(b)m 4(ut)k +361(quotes)s 1036(are)s 1381(not)s 1746(used)s 2242(when)s +2816(the)s 3163(delimiter)s 4082(is)s 4291(in)s 9(v)k 4(ok)k 2(ed.)k +5211(A)s 5439(delimiter)s 6359(may)s 6824(ha)s 4(v)k 3(e)k +7323(delimiters)s 8327(and)s 8729(an)s 3(y)k 0 4361(other)m +558(characters)s 1584(adjacent,)s 2495(whereas)s 3337(identi\207ers)s 4351(may)s +4825(not)s 5199(be)s 5489(adjacent)s 6353(to)s 6600(letters)s +7241(or)s 7508(other)s 8067(identi\207ers.)s 0 4073(The)m 428(complete)s +1360(list)s 1711(of)s 1982(prede\207ned)s 3050(delimiters)s 4055(is)s +220 fnt35 480 3572(/)m 480 3284(//)m 480 2996(^/)m 480 2708(^//)m +1727 3572(|)m 1727 3284(||)m 1727 2996(^|)m 1727 2708(^||)m 2974 3572(&)m +2974 3284(^&)m 4221 3572(&&)m 4221 3284({)m 4221 2996(})m 240 fnt82 +0 2253(A)m 230(longer)s 901(delimiter)s 1822(lik)s 2(e)k +220 fnt35 2234 2250(<=)m 240 fnt82 2542 2253(will)m 2968(be)s +3250(recognised)s 4344(in)s 4587(preference)s 5650(to)s 5889(a)s +6055(shorter)s 6778(one)s 7180(lik)s 2(e)k 220 fnt35 +7592 2250(<)m 240 fnt82 7710 2253(.)m 480 1879(An)m 240 fnt83 +855 1881(identi\207er)m 240 fnt82 1808 1879(is)m 2043(a)s 2234(sequence)s +3192(of)s 3488(one)s 3915(or)s 4199(more)s 4772(letters)s +5430(which)s 6097(is)s 6332(the)s 6705(name)s 7304(of)s +7600(a)s 7791(symbol.)s 8685(It)s 8916(is)s 0 1591(con)m 9(v)k 3(entional)k +1308(b)s 4(ut)k 1700(not)s 2096(essential)s 3003(to)s +3272(be)s 3(gin)k 3888(identi\207ers)s 4924(with)s 220 fnt35 +5436 1588(@)m 240 fnt82 5627 1591(;)m 5829(Basser)s 6556(Lout)s +7098(will)s 7554(print)s 8095(a)s 8291(w)s 2(arning)k +0 1303(message)m 865(if)s 1081(it)s 1272(\207nds)s 1788(an)s +2070(unquoted)s 3019(literal)s 3628(w)s 2(ord)k 4175(\(see)s +4614(belo)s 6(w\))k 5320(be)s 3(ginning)k 6327(with)s +220 fnt35 6808 1300(@)m 240 fnt82 6999 1303(,)m 7105(since)s +7651(such)s 8146(w)s 2(ords)k 8779(are)s 0 1015(usually)m +748(misspelt)s 1608(identi\207ers.)s 2730(The)s 3162(ten)s 3515(digits)s +4100(are)s 4451(not)s 4820(letters)s 5457(and)s 5865(may)s +6334(not)s 6704(appear)s 7404(in)s 7651(identi\207ers;)s 8722(and)s +192 fnt84 4440 2(13)m +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 14 20 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +%%+ font Times-Italic +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +0 LoutMargSet +grestore +240 fnt84 0 13840(14)m 240 fnt83 7257 13843(Chapter)m 8107(2.)s +8381(Details)s 240 fnt82 0 13205(although)m 890(the)s 1233(underscore)s +2333(character)s 3262(is)s 3467(a)s 3628(letter)s 4172(and)s +4570(may)s 5031(be)s 5308(used)s 5800(in)s 6038(identi\207ers,)s +7095(it)s 7282(is)s 7487(not)s 7847(con)s 9(v)k 3(entional)k +0 12917(to)m 239(do)s 532(so.)s 909(The)s 1337(complete)s +2269(list)s 2620(of)s 2891(prede\207ned)s 3959(identi\207ers)s 4965(is)s +220 fnt35 480 12416(@Bac)m 4(kEnd)k 480 12128(@Bac)m 4(kg)k 2(round)k +480 11840(@Begin)m 480 11552(@BeginHeaderComponent)m 480 11264(@Break)m 480 10976(@Case)m 480 10688(@ClearHeaderComponent)m +480 10400(@Common)m 480 10112(@Char)m 480 9824(@CurrF)m 11(ace)k 480 9536(@CurrF)m 11(amily)k +480 9248(@CurrLang)m 480 8960(@CurrYUnit)m 480 8672(@CurrZUnit)m 480 8384(@Database)m 480 8096(@End)m +480 7808(@EndHeaderComponent)m 480 7520(@Enclose)m 480 7232(@Filter)m 480 6944(@FilterErr)m 480 6656(@FilterIn)m +480 6368(@FilterOut)m 480 6080(@F)m 6(ont)k 480 5792(@F)m 6(orceGalle)k 4(y)k +480 5504(@Galle)m 4(y)k 480 5216(@Gr)m 2(aphic)k 480 4928(@HAdjust)m +480 4640(@HContr)m 2(act)k 480 4352(@HCo)m 3(v)k 5(er)k +480 4064(@HExpand)m 480 3776(@High)m 480 3488(@HLimited)m 480 3200(@HScale)m 3361 12416(@HShift)m +3361 12128(@HSpan)m 3361 11840(@Include)m 3361 11552(@IncludeGr)m 2(aphic)k 3361 11264(@Inser)m -8(t)k +3361 10976(@K)m 8(er)k -5(nShr)k -3(ink)k 3361 10688(@K)m 8(e)k 4(y)k +3361 10400(@Language)m 3361 10112(@LClos)m 3361 9824(@LEn)m 4(v)k 3361 9536(@LInput)m +3361 9248(@L)m 24(Vis)k 3361 8960(@LUse)m 3361 8672(@Meld)m 3361 8384(@Merge)m +3361 8096(@Min)m 2(us)k 3361 7808(@Moment)m 3361 7520(@Ne)m 6(xt)k +3361 7232(@NotRe)m 6(v)k 5(ealed)k 3361 6944(@Null)m 3361 6656(@OneCol)m +3361 6368(@OneOf)m 3361 6080(@OneRo)m 3(w)k 3361 5792(@Open)m 3361 5504(@Optimiz)m 3(e)k +3361 5216(@Outline)m 3361 4928(@P)m 26(Adjust)k 3361 4640(@P)m 8(ageLabel)k +3361 4352(@PlainGr)m 2(aphic)k 3361 4064(@Plus)m 3361 3776(@PrependGr)m 2(aphic)k +3361 3488(@Ra)m 4(wV)k 17(erbatim)k 5855 12416(@Rotate)m 5855 12128(@Rump)m +5855 11840(@Scale)m 5855 11552(@SetColor)m 5855 11264(@SetColour)m 5855 10976(@SetHeaderComponent)m 5855 10688(@Space)m +5855 10400(@Star)m -8(tHSpan)k 5855 10112(@Star)m -8(tHVSpan)k 5855 9824(@Star)m -8(tVSpan)k +5855 9536(@SysDatabase)m 5855 9248(@SysInclude)m 5855 8960(@SysIncludeGr)m 2(aphic)k 5855 8672(@SysPrependGr)m 2(aphic)k +5855 8384(@T)m 26(ag)k 5855 8096(@T)m 26(agged)k 5855 7808(@T)m 26(arget)k +5855 7520(@Under)m -3(line)k 5855 7232(@Use)m 5855 6944(@V)m 17(Adjust)k +5855 6656(@VContr)m 2(act)k 5855 6368(@VCo)m 3(v)k 5(er)k +5855 6080(@V)m 17(erbatim)k 5855 5792(@VExpand)m 5855 5504(@VLimited)m 5855 5216(@VScale)m +5855 4928(@VShift)m 5855 4640(@VSpan)m 5855 4352(@Wide)m 5855 4064(@Y)m 4(ield)k +5855 3776(@YUnit)m 5855 3488(@ZUnit)m 240 fnt82 0 2745(plus)m 498(the)s +894(names)s 1605(of)s 1924(the)s 2321(parameters)s 3467(of)s +220 fnt35 3786 2742(@Moment)m 240 fnt82 4798 2745(.)m 5011(The)s +5487(symbols)s 220 fnt35 6385 2742(@LClos)m 240 fnt82 7161 2745(,)m +220 fnt35 7316 2742(@LEn)m 4(v)k 240 fnt82 8034 2745(,)m +220 fnt35 8190 2742(@LInput)m 240 fnt82 9019 2745(,)m 220 fnt35 +0 2454(@L)m 24(Vis)k 240 fnt82 722 2457(and)m 220 fnt35 +1170 2454(@LUse)m 240 fnt82 2001 2457(appear)m 2742(in)s 3029(cross)s +3615(reference)s 4602(databases)s 5613(generated)s 6644(by)s 6982(Lout)s +7538(and)s 7986(are)s 8377(not)s 8788(for)s 0 2169(use)m +375(else)s 6(where.)k 480 1795(A)m 728(sequence)s 1679(of)s +1968(characters)s 3004(which)s 3664(is)s 3892(neither)s 4633(a)s +4817(white)s 5422(space,)s 6078(an)s 6379(identi\207er)s 9(,)k +7357(nor)s 7754(a)s 7938(delimiter)s 9(,)k 8916(is)s +0 1507(by)m 304(def)s 2(ault)k 1036(a)s 240 fnt83 +1213 1509(liter)m 3(al)k 1864(wor)s 8(d)k 240 fnt82 +2355 1507(,)m 2473(which)s 3126(means)s 3799(that)s 4227(it)s +4430(will)s 4867(pass)s 5341(through)s 6154(Lout)s 6677(unchanged.)s +7890(An)s 8251(arbitrary)s 0 1219(sequence)m 926(of)s 1190(characters)s +2201(enclosed)s 3089(in)s 3325(double)s 4026(quotes,)s 4751(for)s +5082(e)s 3(xample)k 220 fnt35 5938 1216("{ }",)m 240 fnt82 +6457 1219(is)m 6660(also)s 7091(a)s 7250(literal)s 7853(w)s 2(ord.)k +8499(Space)s 0 931(characters)m 1005(may)s 1458(be)s 1726(included,)s +2644(b)s 4(ut)k 2992(not)s 3345(tabs)s 3767(or)s +4013(ne)s 6(wlines.)k 5008(There)s 5607(are)s 5941(special)s +6645(character)s 7566(sequences,)s 8629(used)s 0 643(only)m 480(between)s +1334(quotes,)s 2066(for)s 2404(obtaining)s 3361(otherwise)s 4346(inaccessible)s +5556(characters:)s +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 15 21 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Italic +%%+ font Times-Bold +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +1 LoutMargSet +grestore +240 fnt83 0 13843(2.1.)m 454(Le)s 4(xical)k 1213(structur)s 8(e)k +2121(\(wor)s 8(ds,)k 2871(spaces,)s 3602(symbols\))s 4502(and)s +4928(macr)s 10(os)k 240 fnt84 8833 13840(15)m 220 fnt35 +480 13167(\\")m 240 fnt82 1235 13170(produces)m 220 fnt35 2150 13167(")m +480 12879(\\\\)m 240 fnt82 1235 12882(\\)m 220 fnt35 480 12591(\\ddd)m +240 fnt82 1235 12594(the)m 1583(character)s 2517(whose)s 3185(ASCII)s +3865(code)s 4373(is)s 1235 12306(the)m 1583(up)s 1876(to)s +2115(three)s 2648(digit)s 3146(octal)s 3665(number)s 220 fnt35 +4456 12303(ddd)m 240 fnt82 0 11765(So,)m 360(for)s 698(e)s 3(xample,)k +220 fnt35 1612 11762("\\"@PP\\"")m 240 fnt82 2606 11765(produces)m 220 fnt35 +3521 11762("@PP")m 240 fnt82 4177 11765(.)m 480 11391(When)m 1106(the)s +1451(comment)s 2398(character)s 220 fnt35 3328 11388(#)m 240 fnt82 +3502 11391(is)m 3709(encountered,)s 4982(e)s 6(v)k 3(erything)k +6045(from)s 6566(that)s 6981(point)s 7530(to)s 7765(the)s +8110(end)s 8511(of)s 8778(the)s 0 11103(line)m 414(is)s +624(ignored.)s 1519(This)s 1995(is)s 2205(useful)s 2844(for)s +3182(including)s 4139(reminders)s 5145(to)s 5384(oneself,)s 6181(lik)s 2(e)k +6593(this:)s 220 fnt35 480 10606(# Lout user man)m 2(ual)k 480 10318(# J)m 6(.)k 13( Kingston, J)k 4(une 1989)k +240 fnt82 0 9819(for)m 338(temporarily)s 1506(deleting)s 2329(parts)s +2844(of)s 3115(the)s 3463(document,)s 4514(and)s 4918(so)s +5184(on.)s 240 fnt83 480 9447(Macr)m 10(os)k 240 fnt82 +1268 9445(pro)m 3(vide)k 2064(a)s 2242(means)s 2916(of)s +3199(de\207ning)s 4049(symbols)s 4910(which)s 5564(stand)s 6139(for)s +6489(a)s 6667(sequence)s 7612(of)s 7895(te)s 3(xtual)k +8610(units)s 0 9157(rather)m 616(than)s 1085(an)s 1368(object.)s +2116(F)s 3(or)k 2505(e)s 3(xample,)k 3419(the)s +3767(macro)s 4417(de\207nition)s 220 fnt35 480 8656(macro @PP { //1.3vx 2.0f @Wide &0i })m 240 fnt82 +0 8162(mak)m 2(es)k 663(Lout)s 1178(replace)s 1926(the)s +2277(symbol)s 220 fnt35 3040 8159(@PP)m 240 fnt82 3609 8162(by)m +3906(the)s 4258(gi)s 6(v)k 3(en)k 4841(te)s 3(xtual)k +5546(units)s 6065(before)s 6734(assembling)s 7866(its)s 8145(input)s +8701(into)s 0 7874(objects.)m 841(A)s 1071(similar)s 1793(macro)s +2443(to)s 2682(this)s 3077(one)s 3479(is)s 3689(used)s +4186(to)s 4425(separate)s 5262(the)s 5610(paragraphs)s 6710(of)s +6981(the)s 7329(present)s 8078(document.)s 0 7586(The)m 450(enclosing)s +1442(braces)s 2126(and)s 2552(an)s 3(y)k 2972(spaces)s +3669(adjacent)s 4548(to)s 4809(them)s 5370(are)s 5739(dropped,)s +6654(which)s 7318(can)s 7730(be)s 8034(a)s 8223(problem:)s +220 fnt35 0 7295(@PP2i)m 240 fnt82 731 7298(has)m 1101(result)s +220 fnt35 1691 7295(//1.3vx 2.0f @Wide &0i2i)m 240 fnt82 4141 7298(which)m 4783(is)s +4993(erroneous.)s 480 6924(The)m 938(meaning)s 1846(of)s 2148(symbols)s +3028(used)s 3556(within)s 4254(the)s 4633(body)s 5198(of)s +5500(a)s 5697(macro)s 6377(is)s 6618(determined)s 7782(by)s +8107(where)s 8778(the)s 0 6636(macro)m 667(is)s 895(de\207ned,)s +1724(not)s 2108(by)s 2419(where)s 3077(it)s 3287(is)s +3514(used.)s 4135(Due)s 4607(to)s 4864(implementation)s 6438(problems,)s +220 fnt35 7453 6633(@Open)m 240 fnt82 8277 6636(symbols)m 0 6348(will)m +423(not)s 786(w)s 2(ork)k 1333(within)s 1998(macros.)s +2849(Named)s 3594(and)s 3995(body)s 4525(parameters)s 5620(will)s +6043(w)s 2(ork)k 6590(if)s 6804(the)s 7149(symbol)s +7905(that)s 8320(the)s 3(y)k 8779(are)s 0 6060(parameters)m +1090(of)s 1352(is)s 1553(also)s 1983(present.)s 2828(There)s +3432(is)s 3633(no)s 3918(w)s 2(ay)k 4360(to)s +4590(get)s 4934(a)s 5091(left)s 5459(or)s 5709(right)s +6212(brace)s 6776(into)s 7192(the)s 7532(body)s 8057(of)s +8319(a)s 8476(macro)s 0 5772(without)m 791(the)s 1139(matching)s +2082(brace.)s 480 5398(Macros)m 1253(may)s 1724(be)s 2011(nested)s +2685(within)s 3358(other)s 3914(de\207nitions)s 4980(and)s 5389(e)s 3(xported,)k +6335(b)s 4(ut)k 6702(the)s 3(y)k 7170(may)s +7641(not)s 8012(be)s 8299(parame)s 8998(-)s 0 5110(ters.)m +511(The)s 3(y)k 1058(may)s 1528(not)s 1898(ha)s 4(v)k 3(e)k +2403(parameters)s 3504(or)s 3767(nested)s 4440(de\207nitions)s 5505(of)s +5780(their)s 6280(o)s 6(wn,)k 6798(and)s 7206(consequently)s +8527(a)s 8697(pre)s 8998(-)s 0 4822(ceding)m 220 fnt35 +691 4819(e)m 6(xpor)k -8(t)k 240 fnt82 1359 4822(clause)m +2012(\(Section)s 2865(2.3\))s 3293(w)s 2(ould)k 3948(be)s +4230(pointless;)s 5192(ho)s 6(we)k 6(v)k 3(er)k 9(,)k +6099(an)s 220 fnt35 6382 4819(impor)m -8(t)k 240 fnt82 +7055 4822(clause)m 7708(is)s 7918(permitted.)s 240 fnt84 0 4030(2.2.)m +471(Named)s 1257(parameters)s 240 fnt82 480 3553(In)m 728(addition)s +1560(to)s 1790(left)s 2159(and)s 2554(right)s 3056(\(or)s +3386(body\))s 3985(parameters,)s 5130(a)s 5288(symbol)s 6039(may)s +6496(ha)s 4(v)k 3(e)k 6989(an)s 3(y)k +7377(number)s 8159(of)s 240 fnt83 8421 3555(named)m 0 3267(par)m 3(ameter)k 2(s)k +240 fnt82 1080 3265(:)m 220 fnt35 480 2768(def @Chapter)m 480 2480( named @T)m 26(ag {})k +480 2192( named @Title {})m 480 1904( r)m -3(ight x)k 480 1616({)m 480 1328( ...)m +480 1040(})m 240 fnt82 0 546(Their)m 577(de\207nitions)s 1639(appear)s +2336(in)s 2580(between)s 3434(those)s 3996(of)s 4267(an)s 3(y)k +4665(left)s 5042(and)s 5447(right)s 5958(parameters,)s 7113(and)s +7517(each)s 8013(is)s 8224(follo)s 6(wed)k 0 258(by)m +293(a)s 240 fnt83 457 260(default)m 1183(value)s 240 fnt82 +1753 258(between)m 2605(braces.)s 3377(When)s 220 fnt35 4004 255(@Chapter)m +240 fnt82 5066 258(is)m 5274(in)s 9(v)k 4(ok)k 2(ed,)k +6136(its)s 6411(named)s 7105(parameters)s 8201(are)s 8546(gi)s 6(v)k 3(en)k + +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 16 22 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +%%+ font Times-Italic +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +0 LoutMargSet +grestore +240 fnt84 0 13840(16)m 240 fnt83 7257 13843(Chapter)m 8107(2.)s +8381(Details)s 240 fnt82 0 13205(v)m 6(alues)k 656(in)s +899(the)s 1247(follo)s 6(wing)k 2224(w)s 2(ay:)k +220 fnt35 480 12704(@Chapter)m 480 12416( @T)m 26(ag { intro })k 480 12128( @Title { Introduction })m +480 11840({)m 480 11552( ...)m 480 11264(})m 240 fnt82 0 10770(That)m +485(is,)s 737(a)s 889(list)s 1226(of)s 1483(named)s +2166(parameters)s 3250(appears)s 4017(immediately)s 5251(follo)s 6(wing)k +6214(the)s 6549(symbol,)s 7347(each)s 7828(with)s 8296(its)s +8558(v)s 6(alue)k 0 10482(enclosed)m 900(in)s 1149(braces.)s +1929(An)s 3(y)k 2399(right)s 2916(parameter)s 3936(follo)s 6(ws)k +4704(after)s 5206(them.)s 5854(The)s 3(y)k 6403(do)s +6702(not)s 7074(ha)s 4(v)k 3(e)k 7581(to)s +7826(appear)s 8529(in)s 8778(the)s 0 10194(order)m 558(the)s 3(y)k +1015(were)s 1529(de\207ned,)s 2334(and)s 2732(the)s 3(y)k +3189(can)s 3571(e)s 6(v)k 3(en)k 4065(be)s +4341(omitted)s 5122(altogether)s 9(,)k 6169(in)s 6406(which)s +7041(case)s 7502(the)s 7844(def)s 2(ault)k 8558(v)s 6(alue)k +0 9906(from)m 524(the)s 872(de\207nition)s 1846(is)s 2056(used)s +2553(instead.)s 480 9532(If)m 699(the)s 1036(k)s 2(e)k 3(yw)k 2(ord)k +220 fnt35 1913 9529(compulsor)m -6(y)k 240 fnt82 3088 9532(appears)m +3858(after)s 220 fnt35 4342 9529(named)m 240 fnt82 5050 9532(and)m +5442(before)s 6097(the)s 6434(parameter')s 13(s)k 7586(name,)s +8200(Lout)s 8700(will)s 0 9244(print)m 501(a)s 657(w)s 2(arning)k +1481(message)s 2337(whene)s 6(v)k 3(er)k 3307(this)s +3693(parameter)s 4696(is)s 4896(missing.)s 5793(Ho)s 6(we)k 6(v)k 3(er)k +6705(it)s 6886(will)s 7302(still)s 7703(use)s 8068(the)s +8405(def)s 2(ault)k 0 8956(v)m 6(alue)k 568(as)s +818(just)s 1223(described.)s 480 8582(A)m 719(named)s 220 fnt35 +1424 8579(@T)m 26(ag)k 240 fnt82 2057 8582(parameter)m 3080(does)s +3580(not)s 3955(tak)s 2(e)k 4417(its)s 4702(def)s 2(ault)k +5433(v)s 6(alue)k 6010(from)s 6544(the)s 6901(de\207nition;)s +7940(instead,)s 8733(if)s 8960(a)s 0 8294(def)m 2(ault)k +726(v)s 6(alue)k 1300(is)s 1516(needed,)s 2306(Lout)s +2824(in)s 9(v)k 3(ents)k 3560(a)s 3731(simple)s +4430(w)s 2(ord)k 4984(which)s 5631(dif)s 6(fers)k +6304(from)s 6834(e)s 6(v)k 3(ery)k 7415(other)s +7972(tag.)s 8434(This)s 8916(is)s 0 8006(important,)m 1034(for)s +1370(e)s 3(xample,)k 2282(in)s 2523(the)s 2868(production)s +3960(of)s 4229(numbered)s 5242(chapters)s 6086(and)s 6488(sections)s +7307(\(Section)s 8158(4.4\).)s 8698(The)s 0 7718(same)m 551(thing)s +1101(occurs)s 1781(if)s 2003(there)s 2541(is)s 2756(a)s +220 fnt35 2927 7715(@T)m 26(ag)k 240 fnt82 3555 7718(parameter)m +4574(b)s 4(ut)k 4940(its)s 5221(v)s 6(alue)k +5794(is)s 6009(the)s 6362(empty)s 7019(object:)s 7774(the)s +8127(v)s 6(alue)k 8700(will)s 0 7430(be)m 282(replaced)s +1149(by)s 1443(an)s 1726(in)s 9(v)k 3(ented)k +2596(one.)s 480 7056(Named)m 1229(parameters)s 2327(may)s 2793(ha)s 4(v)k 3(e)k +3294(parameters,)s 4448(as)s 4698(in)s 4941(the)s 5289(follo)s 6(wing)k +6266(de\207nition:)s 220 fnt35 480 6555(def @Str)m 2(ange)k 480 6267( named @F)m 6(or)k -5(mat r)k -3(ight @V)k 15(al { [@V)k 15(al] })k +480 5979( r)m -3(ight x)k 480 5691({)m 480 5403( @F)m 6(or)k -5(mat x)k +480 5115(})m 240 fnt82 0 4621(The)m 428(named)s 1125(parameter)s +220 fnt35 2139 4618(@F)m 6(or)k -5(mat)k 240 fnt82 +3113 4621(has)m 3483(right)s 3995(parameter)s 220 fnt35 5010 4618(@V)m 15(al)k +240 fnt82 5520 4621(,)m 5627(and)s 6032(the)s 6380(def)s 2(ault)k +7102(v)s 6(alue)k 7670(of)s 220 fnt35 7942 4618(@F)m 6(or)k -5(mat)k +240 fnt82 8916 4621(is)m 0 4333(this)m 394(parameter)s 1406(enclosed)s +2299(in)s 2539(brack)s 2(ets.)k 3495(When)s 220 fnt35 +4122 4330(@F)m 6(or)k -5(mat)k 240 fnt82 5093 4333(is)m +5300(in)s 9(v)k 4(ok)k 2(ed)k 6113(it)s +6303(must)s 6826(be)s 7105(supplied)s 7972(with)s 8452(a)s +8615(right)s 0 4045(parameter)m 9(,)k 1052(which)s 1694(will)s +2120(replace)s 220 fnt35 2865 4042(@V)m 15(al)k 240 fnt82 +3375 4045(.)m 3539(Thus,)s 220 fnt35 480 3544(@Str)m 2(ange 27)k +240 fnt82 0 3045(equals)m 220 fnt35 662 3042(@F)m 6(or)k -5(mat 27)k +240 fnt82 1937 3045(and)m 2341(so)s 2607(has)s 2977(result)s +480 2543([27])m 0 2055(The)m 220 fnt35 428 2052(@F)m 6(or)k -5(mat)k +240 fnt82 1401 2055(symbol)m 2161(is)s 2371(lik)s 2(e)k +2783(a)s 2949(de\207nition)s 3923(with)s 4405(parameters)s 5503(whose)s +6171(body)s 6705(can)s 7094(be)s 7376(changed:)s 220 fnt35 +480 1554(@Str)m 2(ange)k 480 1266( @F)m 6(or)k -5(mat { Slope @F)k 6(ont @V)k 15(al.)k 13( })k +480 978(27)m 240 fnt82 0 527(still)m 412(equals)s 220 fnt35 +1074 524(@F)m 6(or)k -5(mat 27)k 240 fnt82 2289 527(,)m +2396(b)s 4(ut)k 2758(this)s 3154(time)s 3634(the)s +3982(result)s 4572(is)s 240 fnt83 480 26(27.)m +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 17 23 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Italic +%%+ font Times-Bold +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +1 LoutMargSet +grestore +240 fnt83 0 13843(2.2.)m 454(Named)s 1199(par)s 3(ameter)k 2(s)k +240 fnt84 8831 13840(17)m 240 fnt82 0 13205(In)m 252(practice,)s +1110(e)s 3(xamples)k 2057(of)s 2323(named)s 3015(parameters)s +4109(with)s 4586(parameters)s 5680(all)s 5969(ha)s 4(v)k 3(e)k +6466(this)s 6857(\210a)s 4(v)k 4(our)k 7583(of)s +7850(format)s 8541(being)s 0 12917(separated)m 996(from)s 1556(content;)s +2409(running)s 3243(headers)s 4060(\(Section)s 4950(4.3\))s 5414(and)s +5854(printing)s 6701(styles)s 7332(for)s 7707(bibliographies)s 0 12629(\(Section)m +853(4.5\))s 1281(are)s 1628(tw)s 2(o)k 2038(major)s +2655(ones.)s 240 fnt84 0 11836(2.3.)m 471(Nested)s 1216(de\207nitions,)s +2392(body)s 2954(parameters,)s 4236(extend,)s 5027(import,)s 5844(and)s +6285(export)s 240 fnt82 480 11359(A)m 710(de\207nition)s 1684(may)s +2150(contain)s 2911(other)s 3462(de\207nitions)s 4523(at)s 4755(the)s +5103(be)s 3(ginning)k 6111(of)s 6382(its)s 6658(body:)s +220 fnt35 480 10858(def @NineSquare)m 480 10570( r)m -3(ight x)k 480 10282({)m +480 9994( def @Three { x |0.2i x |0.2i x })m 480 9418( @Three /0.2i @Three /0.2i @Three)m 480 9130(})m 240 fnt82 0 8636(A)m +227(parameter)s 1238(lik)s 2(e)k 220 fnt35 1646 8633(x)m +240 fnt82 1811 8636(may)m 2274(be)s 2552(in)s 9(v)k 4(ok)k 2(ed)k +3364(an)s 3(ywhere)k 4343(within)s 5008(the)s 5353(body)s +5883(of)s 6151(the)s 6495(symbol)s 7252(it)s 7441(is)s +7647(a)s 7810(parameter)s 8820(of,)s 0 8348(including)m 973(within)s +1657(nested)s 2342(de\207nitions.)s 3532(A)s 3778(nested)s 4463(symbol)s +5239(lik)s 2(e)k 220 fnt35 5667 8345(@Three)m 240 fnt82 +6531 8348(may)m 7013(be)s 7311(in)s 9(v)k 4(ok)k 2(ed)k +8143(an)s 3(ywhere)k 0 8060(from)m 518(the)s 860(be)s 3(ginning)k +1862(of)s 2127(its)s 2397(o)s 6(wn)k 2855(body)s +3383(to)s 3616(the)s 3958(end)s 4355(of)s 4620(the)s +4962(body)s 5490(of)s 5755(the)s 6097(symbol)s 6851(it)s +7037(is)s 7241(de\207ned)s 7998(within.)s 8766(So,)s 0 7772(assuming)m +957(an)s 1240(appropriate)s 2384(de\207nition)s 3358(of)s 220 fnt35 +3629 7769(@Bo)m 6(x)k 240 fnt82 4222 7772(,)m 220 fnt35 +480 7271(@NineSquare @Bo)m 6(x)k 240 fnt82 0 6775(has)m 370(result)s +2796 2796 226 2570 240 288 60 480 3689 LoutGr2 +grestore save gsave 200 dict begin lfigdict begin +grestore +740 740 226 514 240 288 60 0 2056 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigbox ] lfigdopath +pop pop +grestore + +grestore +740 740 226 514 240 288 60 1028 2056 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigbox ] lfigdopath +pop pop +grestore + +grestore +740 740 226 514 240 288 60 2056 2056 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigbox ] lfigdopath +pop pop +grestore + +grestore +740 740 226 514 240 288 60 0 1028 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigbox ] lfigdopath +pop pop +grestore + +grestore +740 740 226 514 240 288 60 1028 1028 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigbox ] lfigdopath +pop pop +grestore + +grestore +740 740 226 514 240 288 60 2056 1028 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigbox ] lfigdopath +pop pop +grestore + +grestore +740 740 226 514 240 288 60 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigbox ] lfigdopath +pop pop +grestore + +grestore +740 740 226 514 240 288 60 1028 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigbox ] lfigdopath +pop pop +grestore + +grestore +740 740 226 514 240 288 60 2056 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigbox ] lfigdopath +pop pop +grestore + +grestore +end end restore +grestore +0 3238(Nested)m 722(de\207nitions)s 1783(may)s 2249(themselv)s 3(es)k +3359(contain)s 4120(nested)s 4789(de\207nitions,)s 5906(to)s 6145(arbitrary)s +7020(depth.)s 480 2864(There)m 1100(are)s 1454(three)s 1994(special)s +2719(features)s 3532(which)s 4181(permit)s 4872(a)s 5045(nested)s +5721(symbol)s 6488(or)s 6754(parameter)s 7775(to)s 8021(be)s +8311(in)s 9(v)k 4(ok)k 2(ed)k 0 2576(outside)m +737(its)s 1003(normal)s 1725(range;)s 2358(that)s 2766(is,)s +3022(outside)s 3759(the)s 4096(body)s 4620(of)s 4881(the)s +5219(enclosing)s 6179(symbol.)s 7038(The)s 7456(\207rst)s 7877(and)s +8270(simplest)s 0 2288(of)m 267(these)s 810(features)s 1611(is)s +1817(the)s 240 fnt83 2161 2290(body)m 2678(par)s 3(ameter)k +240 fnt82 3677 2288(,)m 3780(an)s 4059(alternati)s 6(v)k 3(e)k +5108(form)s 5628(of)s 5895(right)s 6401(parameter)s 13(.)k +7502(The)s 7926(Eq)s 8245(equation)s 0 2000(formatting)m 1052(package)s +1883([4)s 2076(,)s 2174(Chapter)s 2982(7])s 3211(is)s +3412(a)s 3569(classic)s 4249(e)s 3(xample)k 5102(of)s +5364(the)s 5703(use)s 6069(of)s 6331(a)s 6488(body)s +7013(parameter)s 13(.)k 8109(In)s 8355(outline,)s 0 1712(it)m +192(looks)s 762(lik)s 2(e)k 1174(this:)s +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 18 24 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +%%+ font Times-Italic +%%+ font Helvetica +%%+ font Symbol +/pgsave save def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +0 LoutMargSet +grestore +240 fnt84 0 13840(18)m 240 fnt83 7257 13843(Chapter)m 8107(2.)s +8381(Details)s 220 fnt35 480 13211(e)m 6(xpor)k -8(t "+" sup o)k 3(v)k 5(er)k +480 12635(def @Eq)m 480 12347( body x)m 480 12059({)m 480 11771( def "+" ...)m 480 11483( def sup ...)m +480 11195( def o)m 3(v)k 5(er ...)k 480 10907( ...)m 480 10331( Slope @F)m 6(ont x)k +480 10043(})m 240 fnt82 0 9549(First)m 518(we)s 874(list)s +1246(those)s 1828(nested)s 2518(symbols)s 3388(and)s 3813(parameters)s +4932(that)s 5371(we)s 5727(intend)s 6404(to)s 6664(refer)s +7194(to)s 7454(outside)s 8222(the)s 8592(body)s 0 9261(of)m +220 fnt35 274 9258(@Eq)m 240 fnt82 815 9261(in)m 1061(an)s +220 fnt35 1347 9258(e)m 6(xpor)k -8(t)k 240 fnt82 +2018 9261(clause,)m 2725(preceding)s 3724(the)s 4075(de\207nition)s 5052(as)s +5305(sho)s 6(wn.)k 6092(Only)s 6628(e)s 3(xported)k +7523(symbols)s 8375(may)s 8844(be)s 0 8973(in)m 9(v)k 4(ok)k 2(ed)k +817(outside)s 1566(the)s 1916(body)s 2452(of)s 220 fnt35 +2725 8970(@Eq)m 240 fnt82 3203 8973(.)m 3369(The)s 3799(body)s +4335(parameter)s 5351(is)s 5563(lik)s 2(e)k 5977(a)s +6145(right)s 6658(parameter)s 7674(e)s 3(xcept)k 8357(that)s +8778(the)s 0 8685(e)m 3(xported)k 892(symbols)s 1741(are)s +2088(visible)s 2781(within)s 3449(it:)s 220 fnt35 480 8184(@Eq { {x sup 2 + y sup 2} o)m 3(v)k 5(er 2 })k +240 fnt82 0 7686(calls)m 488(on)s 785(the)s 1133(nested)s +1802(de\207nitions)s 2863(of)s 220 fnt35 3134 7683(@Eq)m 240 fnt82 +3672 7686(to)m 3911(produce)s 4738(the)s 5086(result)s 168 fnt78 +586 7231(2)m 240 fnt83 480 7171(x)m 240 fnt78 738 7163(+)m +168 fnt78 1041 7231(2)m 240 fnt83 939 7171(y)m 641 0 0 0 240 288 12 480 7073 LoutGr2 +0 0 moveto xsize 0 lineto 0.05 ft setlinewidth stroke +grestore + +grestore +240 fnt78 +743 6845(2)m 240 fnt82 0 6334(The)m 416(body)s 937(parameter')s 13(s)k +2089(v)s 6(alue)k 2644(must)s 3156(be)s 3426(enclosed)s +4308(in)s 4539(braces.)s 5300(The)s 5715(term)s 6200(`body)s +6800(parameter')s 7854(is)s 8051(a)s 8204(reminder)s 0 6046(that)m +418(the)s 766(v)s 6(alue)k 1334(is)s 1544(interpreted)s +2636(as)s 2886(if)s 3103(it)s 3295(w)s 2(as)k +3716(within)s 4384(the)s 4732(body)s 5266(of)s 5537(the)s +5885(symbol.)s 480 5672(A)m 710(body)s 1244(parameter)s 2257(may)s +2723(not)s 3089(be)s 3370(e)s 3(xported,)k 4311(and)s +4714(in)s 4957(f)s 2(act)k 5372(a)s 5537(body)s +6071(parameter)s 7085(may)s 7550(be)s 7832(in)s 9(v)k 4(ok)k 2(ed)k +8646(only)s 0 5384(within)m 656(the)s 991(body)s 1512(of)s +1770(the)s 2105(enclosing)s 3063(symbol,)s 3862(not)s 4215(within)s +4870(an)s 3(y)k 5254(nested)s 5911(de\207nitions.)s 7072(F)s 3(or)k +7448(e)s 3(xample,)k 220 fnt35 8349 5381(x)m 240 fnt82 +8504 5384(abo)m 3(v)k 3(e)k 0 5096(may)m 471(not)s +843(be)s 1131(in)s 9(v)k 4(ok)k 2(ed)k +1952(within)s 220 fnt35 2626 5093(sup)m 240 fnt82 2972 5096(.)m +3141(This)s 3623(restriction)s 4653(is)s 4869(needed)s 5611(to)s +5855(a)s 4(v)k 4(oid)k 6443(the)s 6797(possibility)s +7853(of)s 8130(recursion,)s 0 4808(when)m 585(the)s 943(actual)s +1577(body)s 2121(parameter)s 3145(in)s 9(v)k 4(ok)k 2(es)k +3935(an)s 4228(e)s 3(xported)k 5129(nested)s 5808(de\207nition)s +6792(which)s 7443(in)s 9(v)k 4(ok)k 2(es)k +8234(the)s 8592(body)s 0 4520(parameter)m 9(,)k 1052(etc.)s +480 4146(The)m 932(second)s 1679(place)s 2263(where)s 2928(e)s 3(xported)k +3844(symbols)s 4717(may)s 5207(be)s 5514(used)s 6035(is)s +6269(in)s 6536(the)s 6909(right)s 7444(parameter)s 8482(of)s +8778(the)s 220 fnt35 0 3855(@Open)m 240 fnt82 806 3858(symbol,)m +1618(and)s 2022(follo)s 6(wing)k 2999(its)s 3275(alternati)s 6(v)k 3(e)k +4329(form,)s 220 fnt35 4900 3855(@Use)m 240 fnt82 5565 3858(\(Section)m +6418(3.36\).)s 480 3484(Exported)m 1480(nested)s 2214(symbols)s 3128(and)s +3598(parameters)s 4761(may)s 5292(be)s 5639(made)s 6279(visible)s +7037(within)s 7770(a)s 8002(subsequent)s 0 3196(de\207nition)m 974(or)s +1233(macro)s 1883(by)s 2177(preceding)s 3173(it)s 3365(with)s +3847(an)s 220 fnt35 4130 3193(impor)m -8(t)k 240 fnt82 +4803 3196(clause,)m 5507(lik)s 2(e)k 5919(this:)s 220 fnt35 +480 2695(impor)m -8(t @Eq)k 480 2407(def p)m 6(ythag { sqr)k -8(t { x sup 2 + y sup 2 } })k +240 fnt82 0 1908(Note)m 548(ho)s 6(we)k 6(v)k 3(er)k +1444(that)s 220 fnt35 1889 1905(p)m 6(ythag)k 240 fnt82 +2617 1908(can)m 3033(only)s 3540(be)s 3849(used)s 4374(with)s +4883(some)s 5471(in)s 9(v)k 4(ocation)k 6552(of)s +220 fnt35 6850 1905(@Eq)m 240 fnt82 7328 1908(:)m 7521(within)s +8216(the)s 8592(body)s 0 1620(parameter)m 1036(of)s 1329(an)s +1635(in)s 9(v)k 4(ocation)k 2711(of)s 220 fnt35 +3005 1617(@Eq)m 240 fnt82 3483 1620(,)m 3612(within)s 4303(the)s +4673(right)s 5207(parameter)s 6243(of)s 6537(an)s 220 fnt35 +6842 1617(@Eq&&tag @Open)m 240 fnt82 8737 1620(,)m 8867(or)s 0 1332(follo)m 6(wing)k +977(a)s 220 fnt35 1143 1329(@Use { @Eq ...)m 13( })k 240 fnt82 +2798 1332(.)m 2962(There)s 3575(may)s 4041(be)s 4323(se)s 6(v)k 3(eral)k +5045(symbols)s 5894(in)s 6137(the)s 220 fnt35 6485 1329(impor)m -8(t)k +240 fnt82 7158 1332(clause.)m 480 958(In)m 760(a)s 951(similar)s +1698(w)s 2(ay)k 2174(to)s 220 fnt35 2438 955(impor)m -8(t)k +240 fnt82 3051 958(,)m 3183(a)s 3374(de\207nition)s 4373(may)s +4864(be)s 5171(preceded)s 6117(by)s 220 fnt35 6436 955(e)m 6(xtend)k +240 fnt82 7162 958(follo)m 6(wed)k 8089(by)s 8408(a)s +8599(sym)s 8998(-)s 0 670(bol)m 361(name:)s +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 19 25 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Italic +%%+ font Times-Bold +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +1 LoutMargSet +grestore +240 fnt83 0 13843(2.3.)m 454(Nested)s 1171(de\207nitions,)s 2261(body)s +2783(par)s 3(ameter)k 2(s,)k 3961(e)s 4(xtend,)k +4674(import,)s 5405(and)s 5831(e)s 4(xport)k 240 fnt84 +8832 13840(19)m 220 fnt35 480 13207(e)m 6(xtend @Eq)k 480 12919(def p)m 6(ythag { sqr)k -8(t { x sup 2 + y sup 2 } })k +240 fnt82 0 12420(The)m 418(ef)s 6(fect)k 1003(of)s +1264(this)s 1649(is)s 1849(just)s 2243(as)s 2483(though)s +3195(the)s 3533(de\207nition)s 4496(of)s 220 fnt35 4757 12417(p)m 6(ythag)k +240 fnt82 5447 12420(had)m 5841(occurred)s 6724(directly)s 7497(after)s +7982(the)s 8319(e)s 3(xisting)k 0 12132(de\207nitions)m 1058(within)s +220 fnt35 1722 12129(@Eq)m 240 fnt82 2200 12132(,)m 2303(with)s +220 fnt35 2782 12129(p)m 6(ythag)k 240 fnt82 3479 12132(added)m +4105(to)s 220 fnt35 4340 12129(@Eq)m 240 fnt82 4818 12132(')m 13(s)k +5025(e)s 3(xport)k 5689(list.)s 6140(This)s 6612(is)s +6819(useful)s 7454(for)s 7788(e)s 3(xtending)k 8778(the)s +0 11844(capabilities)m 1128(of)s 1389(a)s 1545(package)s 2375(of)s +2636(de\207nitions)s 3687(lik)s 2(e)k 220 fnt35 4088 11841(@Eq)m +240 fnt82 4616 11844(without)m 5397(modifying)s 6437(its)s 6703(source)s +7373(\207le.)s 7832(The)s 8249(essential)s 0 11556(dif)m 6(ferences)k +1106(to)s 220 fnt35 1346 11553(impor)m -8(t)k 240 fnt82 +2020 11556(are)m 2368(that)s 2787(all)s 3081(the)s 3430(symbols)s +4280(of)s 220 fnt35 4552 11553(@Eq)m 240 fnt82 5091 11556(become)m +5892(visible)s 6586(within)s 220 fnt35 7255 11553(p)m 6(ythag)k +240 fnt82 7896 11556(,)m 8004(not)s 8371(just)s 8778(the)s +0 11268(e)m 3(xported)k 892(ones,)s 1438(and)s 1842(only)s +2322(one)s 2724(symbol)s 3484(may)s 3950(follo)s 6(w)k +4622(the)s 220 fnt35 4970 11265(e)m 6(xtend)k 240 fnt82 +5671 11268(k)m 2(e)k 3(yw)k 2(ord.)k 480 10894(Actually)m 15(,)k +1399(more)s 1951(than)s 2424(one)s 2831(symbol)s 3595(may)s +4066(follo)s 6(w)k 220 fnt35 4743 10891(e)m 6(xtend)k +240 fnt82 5384 10894(,)m 5495(b)s 4(ut)k 5862(this)s +6262(usage)s 6868(indicates)s 7772(a)s 7943(`path)s 8496(name')s +0 10606(of)m 271(the)s 619(symbol.)s 1488(F)s 3(or)k +1877(e)s 3(xample,)k 220 fnt35 480 10105(e)m 6(xtend @DocumentLa)k 6(y)k 4(out @Repor)k -8(tLa)k 6(y)k 4(out)k +480 9817(def @K)m 8(e)k 4(yw)k 2(ords ...)k 240 fnt82 +0 9319(causes)m 676(the)s 1026(de\207nition)s 2002(of)s 220 fnt35 +2275 9316(@K)m 8(e)k 4(yw)k 2(ords)k 240 fnt82 +3502 9319(to)m 3743(occur)s 4335(directly)s 5120(after)s 5618(the)s +5968(e)s 3(xisting)k 6777(de\207nitions)s 7840(of)s 220 fnt35 +8113 9316(@Repor)m -8(t)k 240 fnt82 8998 9319(-)m 220 fnt35 +0 9028(La)m 6(y)k 4(out)k 240 fnt82 645 9031(,)m +752(which)s 1394(itself)s 1942(lies)s 2324(within)s 220 fnt35 +2992 9028(@DocumentLa)m 6(y)k 4(out)k 240 fnt82 4860 9031(.)m +480 8657(A)m 702(named)s 1390(parameter)s 2395(may)s 2853(also)s +3283(be)s 3556(preceded)s 4469(by)s 4754(an)s 220 fnt35 +5029 8654(impor)m -8(t)k 240 fnt82 5694 8657(clause.)m 6386(As)s +6695(usual,)s 7299(the)s 7638(meaning)s 8507(is)s 8708(that)s +0 8369(the)m 336(visible)s 1016(local)s 1522(de\207nitions)s 2570(of)s +2828(the)s 3163(import)s 3847(symbol\(s\))s 4839(are)s 5173(visible)s +5853(within)s 6508(the)s 6843(body)s 7364(\(the)s 7778(def)s 2(ault)k +8486(v)s 6(alue\))k 0 8081(of)m 281(the)s 640(named)s +1347(parameter)s 13(.)k 2463(But)s 2879(furthermore,)s 4137(those)s +4709(symbols)s 5569(will)s 6005(be)s 6298(visible)s 7002(within)s +7681(all)s 7985(in)s 9(v)k 4(ocations)k 0 7793(of)m +271(the)s 619(parameter)s 13(.)k 1724(F)s 3(or)k +2113(e)s 3(xample,)k 3027(suppose)s 3855(we)s 4190(de\207ne)s +220 fnt35 480 7292(def @Diag)m 480 7004( impor)m -8(t @Algebr)k 2(a named line)k 4(width { 1p })k +480 6716( impor)m -8(t @Algebr)k 2(a named dashlength { 2p })k 480 6428( ...)m 240 fnt82 +0 5977(Then,)m 599(if)s 220 fnt35 816 5974(@Algebr)m 2(a)k +240 fnt82 1847 5977(e)m 3(xports)k 2599(symbols)s 220 fnt35 +3448 5974(+)m 240 fnt82 3568 5977(,)m 220 fnt35 3675 5974(-)m +240 fnt82 3739 5977(,)m 3846(and)s 4250(so)s 4516(on,)s +4863(we)s 5198(may)s 5664(write)s 220 fnt35 480 5476(@Diag)m +480 5188( line)m 4(width { 1f - 2p })k 480 4900( dashlength { 1f + 2p })m 240 fnt82 0 4401(using)m +565(the)s 905(symbols)s 1747(from)s 220 fnt35 2263 4398(@Algebr)m 2(a)k +240 fnt82 3234 4401(.)m 3391(There)s 3996(may)s 4454(be)s +4729(se)s 6(v)k 3(eral)k 5443(symbols)s 6285(after)s +6773(the)s 220 fnt35 7114 4398(impor)m -8(t)k 240 fnt82 +7779 4401(k)m 2(e)k 3(yw)k 2(ord.)k 8766(All)s +0 4113(these)m 558(symbols)s 1418(share)s 1990(an)s 2284(important)s +3285(restriction:)s 4429(the)s 3(y)k 4904(may)s 5381(not)s +5759(ha)s 4(v)k 3(e)k 6271(parameters.)s 7434(This)s +7921(is)s 8143(necessary)s 0 3825(because)m 841(Lout)s 1382(w)s 2(ould)k +2065(be)s 2376(unable)s 3098(to)s 3366(determine)s 4406(suitable)s +5233(v)s 6(alues)k 5918(for)s 6284(an)s 3(y)k +6710(such)s 7234(parameters,)s 8417(if)s 8663(the)s 3(y)k +0 3537(did)m 364(e)s 3(xist.)k 480 3163(As)m 814(an)s +1115(e)s 3(xception)k 2116(to)s 2373(the)s 2738(rule)s +3183(just)s 3605(gi)s 6(v)k 3(en,)k 4253(a)s +4436(named)s 5150(parameter)s 6181(may)s 6665(import)s 7379(the)s +7745(symbol)s 8522(it)s 8732(is)s 8960(a)s 0 2875(parameter)m +1014(of:)s 220 fnt35 480 2374(e)m 6(xpor)k -8(t @Cell)k +480 2086(def @Tb)m 4(l)k 480 1798( impor)m -8(t @Tb)k 4(l named @F)k 6(or)k -5(mat { ...)k 13( })k +240 fnt82 0 1302(In)m 274(this)s 688(e)s 3(xample)k +1569(the)s 1936(e)s 3(xported)k 2846(de\207nitions)s 3925(of)s +220 fnt35 4215 1299(@Tb)m 4(l)k 240 fnt82 4802 1302(\(i.e.)m +220 fnt35 5235 1299(@Cell)m 240 fnt82 5820 1302(\))m 5966(will)s +6411(be)s 6711(visible)s 7422(within)s 220 fnt35 8109 1299(@F)m 6(or)k -5(mat)k +240 fnt82 9022 1302(.)m 0 1014(Ho)m 6(we)k 6(v)k 3(er)k 9(,)k +984(the)s 3(y)k 1472(may)s 1963(only)s 2467(be)s +2774(used)s 3296(in)s 3563(actual)s 4213(parameters,)s 5392(not)s +5782(in)s 6050(the)s 6423(def)s 2(ault)k 7168(v)s 6(alue)k +7761(of)s 8057(the)s 8430(named)s 0 726(parameter)m 13(.)k +1098(This)s 1567(is)s 1769(o)s 6(wing)k 2408(to)s +2639(implementation)s 4189(problems:)s 5237(at)s 5462(the)s 5803(time)s +6275(the)s 6616(def)s 2(ault)k 7329(v)s 6(alue)k +7890(of)s 220 fnt35 8153 723(@F)m 6(or)k -5(mat)k + +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 20 26 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +%%+ font Times-Italic +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +0 LoutMargSet +grestore +240 fnt84 0 13840(20)m 240 fnt83 7257 13843(Chapter)m 8107(2.)s +8381(Details)s 240 fnt82 0 13205(is)m 210(read,)s 728(the)s +1076(e)s 3(xported)k 1968(symbols)s 2817(ha)s 4(v)k 3(e)k +3318(not)s 3684(been)s 4193(read)s 4662(and)s 5066(are)s +5413(consequently)s 6730(not)s 7096(kno)s 6(wn.)k 480 12831(Since)m +220 fnt35 1064 12828(@Cell)m 240 fnt82 1706 12831(is)m 1913(nested)s +2579(within)s 220 fnt35 3244 12828(@Tb)m 4(l)k 240 fnt82 +3753 12831(,)m 3857(the)s 4202(v)s 6(alue)k 4766(of)s +5034(an)s 5314(in)s 9(v)k 4(ocation)k 6365(of)s +220 fnt35 6633 12828(@Cell)m 240 fnt82 7275 12831(may)m 7738(depend)s +8485(on)s 8778(the)s 0 12543(v)m 6(alue)k 582(of)s +868(parameters)s 1980(of)s 220 fnt35 2266 12540(@Tb)m 4(l)k +240 fnt82 2775 12543(.)m 2953(If)s 220 fnt35 3198 12540(@Cell)m +240 fnt82 3857 12543(is)m 4082(used)s 4593(within)s 5276(an)s +5573(actual)s 220 fnt35 6213 12540(@F)m 6(or)k -5(mat)k +240 fnt82 7200 12543(parameter)m 9(,)k 8267(its)s 8558(v)s 6(alue)k +0 12255(depends)m 833(on)s 1126(the)s 1471(v)s 6(alue)k +2035(of)s 2303(parameters)s 3397(of)s 3665(the)s 4009(in)s 9(v)k 4(ocation)k +5060(of)s 220 fnt35 5327 12252(@Tb)m 4(l)k 240 fnt82 +5893 12255(of)m 6160(which)s 6799(the)s 220 fnt35 7143 12252(@F)m 6(or)k -5(mat)k +240 fnt82 8112 12255(parameter)m 0 11967(is)m 210(a)s 376(part.)s +480 11593(A)m 710(de\207nition,)s 1734(macro,)s 2438(or)s 2697(named)s +3393(parameter)s 4407(may)s 4873(ha)s 4(v)k 3(e)k +5374(se)s 6(v)k 3(eral)k 6096(alternati)s 6(v)k 3(e)k +7150(names,)s 7868(lik)s 2(e)k 8280(this:)s 220 fnt35 +480 11092(macro @CD @CentredDispla)m 6(y @CenteredDispla)k 6(y { ...)k 13( })k 240 fnt82 +0 10594(This)m 489(is)s 713(useful)s 1366(for)s 1718(abbre)s 6(viated)k +2898(and)s 3316(alternati)s 6(v)k 3(e)k 4384(spellings,)s +5355(as)s 5618(sho)s 6(wn.)k 6416(The)s 6858(names)s +7534(appear)s 8245(together)s 9(,)k 0 10306(and)m 404(the)s 3(y)k +867(may)s 1333(subsequently)s 2637(be)s 2919(used)s 3416(interchangeably)s 15(.)k +480 9932(If)m 698(one)s 1088(name)s 1649(of)s 1908(a)s +2062(symbol)s 2809(appears)s 3578(in)s 3809(an)s 4079(e)s 3(xport)k +4735(or)s 4982(import)s 5666(list,)s 6052(its)s 6316(other)s +6854(names)s 7504(are)s 7838(automaticaly)s 0 9644(included)m 882(as)s +1132(well,)s 1650(and)s 2054(should)s 2751(not)s 3117(also)s +3555(appear)s 4252(in)s 4495(the)s 4843(list.)s 240 fnt84 +0 8851(2.4.)m 471(Filter)s 4(ed)k 1330(right)s 1894(and)s +2335(body)s 2897(parameters)s 240 fnt82 480 8374(A)m 719(right)s +1239(or)s 1507(body)s 2050(parameter)s 3073(may)s 3548(be)s +3839(\207ltered)s 4582(by)s 4885(some)s 5455(other)s 6015(computer)s +6987(program)s 7866(before)s 8541(being)s 0 8086(included)m 882(by)s +1176(Lout.)s 1792(As)s 2109(an)s 2392(e)s 3(xample)k +3255(of)s 3526(such)s 4022(a)s 4188(program)s 5058(we)s +5393(will)s 5819(use)s 6194(the)s 6542(Unix)s 220 fnt35 +7076 8083(sor)m -8(t)k 240 fnt82 7506 8086(command:)m 220 fnt35 +480 7587(sor)m -8(t -o out\207le in\207le)k 240 fnt82 0 7133(This)m 499(causes)s +1198(\207le)s 220 fnt35 1582 7130(out\207le)m 240 fnt82 2243 7133(to)m +2505(contain)s 3290(a)s 3480(sorted)s 4145(cop)s 2(y)k +4687(of)s 4981(\207le)s 220 fnt35 5366 7130(in\207le)m 240 fnt82 +5808 7133(.)m 5996(W)s 19(e)k 6388(incorporate)s 7556(this)s +7975(into)s 8424(a)s 8614(Lout)s 0 6845(de\207nition)m 974(as)s +1224(follo)s 6(ws:)k 220 fnt35 480 6393(def @Sor)m -8(t)k +480 6105( named @Options {})m 480 5817( r)m -3(ight x)k 480 5529({)m 480 5241( def @Filter { sor)m -8(t @Options -o @FilterOut @FilterIn })k +480 4665( lines @Break x)m 480 4377(})m 240 fnt82 0 3883(The)m 440(presence)s +1345(within)s 220 fnt35 2026 3880(@Sor)m -8(t)k 240 fnt82 +2728 3883(of)m 3012(a)s 3191(de\207nition)s 4178(of)s 4462(a)s +4641(symbol)s 5414(called)s 220 fnt35 6055 3880(@Filter)m 240 fnt82 +6837 3883(tells)m 7298(Lout)s 7823(that)s 8254(the)s 8615(right)s +0 3595(parameter)m 1057(of)s 220 fnt35 1372 3592(@Sor)m -8(t)k +240 fnt82 2104 3595(is)m 2358(to)s 2640(be)s 2966(\207ltered)s +3743(before)s 4453(inclusion.)s 5537(When)s 220 fnt35 6210 3592(@Sor)m -8(t)k +240 fnt82 6942 3595(is)m 7196(in)s 9(v)k 4(ok)k 2(ed,)k +220 fnt35 8103 3592(@Filter)m 240 fnt82 8916 3595(is)m 0 3307(e)m 6(v)k 6(aluated)k +978(and)s 1399(its)s 1692(v)s 6(alue)k 2277(e)s 3(x)k 3(ecuted)k +3196(as)s 3463(a)s 3646(system)s 4387(command.)s 5512(In)s +5785(addition)s 6643(to)s 6899(the)s 7264(symbols)s 8130(ordinarily)s +0 3019(a)m 4(v)k 6(ailable)k 908(within)s 1576(the)s +1924(body)s 2458(of)s 220 fnt35 2729 3016(@Filter)m 240 fnt82 +3438 3019(,)m 3545(there)s 4078(are)s 4425(three)s 4958(others:)s +220 fnt35 0 2513(@FilterIn)m 240 fnt82 1920 2516(the)m 2273(name)s +2852(of)s 3128(a)s 3299(\207le)s 3665(which)s 4312(will,)s +4795(at)s 5032(the)s 5385(time)s 5870(the)s 6223(system)s +6952(command)s 7959(is)s 8175(e)s 3(x)k 3(ecuted,)k +1920 2228(contain)m 2726(the)s 3119(actual)s 3789(right)s 4345(or)s +4649(body)s 5228(parameter)s 6287(of)s 6603(the)s 6996(symbol,)s +7853(e)s 3(xactly)k 8639(as)s 8934(it)s 1920 1940(appears)m +2701(in)s 2944(the)s 3292(input)s 3844(\207le;)s 220 fnt35 +0 1434(@FilterOut)m 240 fnt82 1920 1437(the)m 2305(name)s 2916(of)s +3224(a)s 3427(\207le)s 3826(of)s 4134(Lout)s 4683(te)s 3(xt)k +5135(whose)s 5840(contents)s 6726(Lout)s 7275(will)s 7738(read)s +8244(after)s 8778(the)s 1920 1149(system)m 2657(command)s 3673(has)s +4057(\207nished,)s 4936(as)s 5200(a)s 5380(replacement)s 6620(for)s +6972(what)s 7511(w)s 2(as)k 7946(put)s 8326(into)s +8765(\207le)s 220 fnt35 1920 858(@FilterIn)m 240 fnt82 2798 861(;)m +220 fnt35 0 374(@FilterErr)m 240 fnt82 1920 377(the)m 2273(name)s +2852(of)s 3129(a)s 3300(\207le)s 3667(that)s 4090(Lout)s +4608(will)s 5039(attempt)s 5820(to)s 6065(read)s 6539(after)s +7041(the)s 7394(system)s 8124(command)s +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 21 27 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Italic +%%+ font Times-Bold +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +1 LoutMargSet +grestore +240 fnt83 0 13843(2.4.)m 454(F)s 10(ilter)k 8(ed)k +1271(right)s 1800(and)s 2226(body)s 2748(par)s 3(ameter)k 2(s)k +240 fnt84 8839 13840(21)m 240 fnt82 1920 13205(has)m 2281(\207nished,)s +3137(containing)s 4191(error)s 4705(messages)s 5649(produced)s 6589(by)s +6874(the)s 7213(command)s 8206(that)s 8614(Lout)s 1920 12917(will)m +2346(pass)s 2809(on)s 3106(to)s 3345(the)s 3693(user)s +4151(as)s 4401(non-f)s 2(atal)k 5316(errors.)s 6036(Use)s +6464(of)s 6735(this)s 7131(\207le)s 7492(is)s 7702(optional.)s +0 12414(It)m 205(is)s 415(a)s 581(f)s 2(atal)k +1057(error)s 1580(for)s 1918(the)s 2266(system)s 2990(command)s +3992(to)s 4231(return)s 4858(a)s 5024(non-zero)s 5927(status.)s +480 12040(No)m 6(w)k 1001(the)s 220 fnt35 1356 12037(sor)m -8(t)k +240 fnt82 1793 12040(command)m 2802(has)s 3179(options)s 220 fnt35 +3942 12037(-u)m 240 fnt82 4190 12040(for)m 4535(deleting)s 5365(duplicate)s +6304(lines,)s 6869(and)s 220 fnt35 7280 12037(-r)m 240 fnt82 +7493 12040(for)m 7838(re)s 6(v)k 3(ersing)k 8778(the)s +0 11752(sorting)m 717(order)s 13(.)k 1372(So)s 1678(the)s +2026(result)s 2616(of)s 220 fnt35 480 11251(@Sor)m -8(t)k +480 10963( @Options { -r -u })m 480 10675({)m 480 10387(A)m 6(usten, J)k 4(ane)k +480 10099(Dic)m 4(k)k 4(ens)k 3(, Char)k -3(les)k +480 9811(Eliot, George)m 480 9523(Hardy)m 22(, )k 11(Thomas)k 480 9235(Bront{@Char edieresis}, Char)m -3(lotte)k +480 8947(})m 240 fnt82 0 8453(is)m 480 8000(Hardy)m 15(,)k +1170(Thomas)s 480 7712(Eliot,)m 1051(Geor)s 4(ge)k 480 7424(Dick)m 2(ens,)k +1369(Charles)s 480 7136(Bront\353,)m 1238(Charlotte)s 480 6848(Austen,)m 1265(Jane)s +0 6364(Unlik)m 2(e)k 705(all)s 998(the)s 1347(other)s +1898(e)s 3(xamples)k 2849(in)s 3093(this)s 3489(manual,)s +4300(this)s 4697(output)s 5369(is)s 5579(simulated.)s 6673(This)s +7149(w)s 2(as)k 7570(done)s 8093(so)s 8359(that)s +8778(the)s 0 6076(ability)m 661(to)s 896(format)s 1588(this)s +1980(manual)s 2735(is)s 2942(not)s 3304(dependent)s 4344(on)s +4637(the)s 4981(e)s 3(xistence)k 5919(of)s 6187(the)s +6531(Unix)s 220 fnt35 7061 6073(sor)m -8(t)k 240 fnt82 +7487 6076(command,)m 8534(and)s 8934(it)s 0 5788(highlights)m 1008(the)s +1356(f)s 2(act)k 1771(that)s 2189(\207ltered)s 2923(actual)s +3548(parameters)s 4646(are)s 4993(by)s 5287(their)s 5784(nature)s +6437(of)s 6708(uncertain)s 7654(portability)s 15(.)k 480 5414(There)m +1114(is)s 1345(no)s 1660(need)s 2191(for)s 2550(an)s +2855(actual)s 3501(\207ltered)s 4257(parameter)s 5292(to)s 5552(obe)s 3(y)k +6091(the)s 6460(le)s 3(xical)k 7169(rules)s 7706(of)s +7998(Lout,)s 8579(since)s 0 5126(it)m 207(is)s 432(passed)s +1143(directly)s 1941(to)s 2195(the)s 2558(other)s 3124(program.)s +4113(Ho)s 6(we)k 6(v)k 3(er)k 9(,)k +5088(Lout)s 5615(must)s 6155(be)s 6452(able)s 6921(to)s +7175(w)s 2(ork)k 7741(out)s 8122(where)s 8778(the)s +0 4838(parameter)m 1034(ends,)s 1601(which)s 2263(gi)s 6(v)k 3(es)k +2831(rise)s 3251(to)s 3511(the)s 3879(follo)s 6(wing)k +4877(rules.)s 5525(As)s 5863(with)s 6365(a)s 6552(body)s +7106(parameter)s 9(,)k 8179(a)s 8366(symbol)s 220 fnt35 +0 4547(@Sym)m 240 fnt82 730 4550(with)m 1235(a)s 1423(\207ltered)s +2180(parameter)s 3217(must)s 3764(be)s 4069(in)s 9(v)k 4(ok)k 2(ed)k +4906(in)s 5172(either)s 5798(the)s 6168(form)s 220 fnt35 +6715 4547(@Sym { ...)m 13( })k 240 fnt82 7949 4550(or)m 8231(the)s +8602(form)s 220 fnt35 0 4259(@Sym @Begin ...)m 13( @End @Sym)k 240 fnt82 +3120 4262(,)m 3251(plus)s 3725(options)s 4505(as)s 4779(usual.)s +5472(In)s 5753(the)s 6125(former)s 6858(case,)s 7400(braces)s +8085(within)s 8778(the)s 0 3974(actual)m 625(parameter)s 1639(must)s +2164(match;)s 2860(in)s 3103(the)s 3451(latter)s 4000(case,)s +4518(the)s 4866(actual)s 5491(parameter)s 6505(may)s 6971(not)s +7337(contain)s 220 fnt35 8098 3971(@End)m 240 fnt82 8699 3974(.)m +480 3600(If)m 725(an)s 1024(actual)s 1664(\207ltered)s 2414(parameter)s +3444(contains)s 220 fnt35 4307 3597(@Include)m 240 fnt82 5229 3600(,)m +5352(this)s 5764(is)s 5989(tak)s 2(en)k 6578(to)s +6833(be)s 3(gin)k 7434(a)s 7616(Lout)s 220 fnt35 +8144 3597(@Include)m 240 fnt82 0 3312(directi)m 6(v)k 3(e)k +882(in)s 1125(the)s 1473(usual)s 2033(form)s 2557(\(Section)s +3410(3.42\):)s 220 fnt35 480 2821(@Sor)m -8(t {)k 480 2533(A)m 6(usten, J)k 4(ane)k +480 2245(@Include { authors })m 480 1957(Hardy)m 22(, )k 11(Thomas)k 480 1669(})m +240 fnt82 0 1175(The)m 421(included)s 1296(\207le)s 1649(becomes)s +2530(part)s 2954(of)s 220 fnt35 3217 1172(@FilterIn)m 240 fnt82 +4095 1175(,)m 4195(b)s 4(ut)k 4549(an)s 3(y)k +4939(braces,)s 220 fnt35 5649 1172(@Include)m 240 fnt82 6571 1175(,)m +6670(or)s 220 fnt35 6922 1172(@End)m 240 fnt82 7576 1175(within)m +8236(it)s 8421(are)s 8760(not)s 0 887(noticed)m 762(by)s +1056(Lout.)s +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 22 28 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +%%+ font Times-Italic +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +0 LoutMargSet +grestore +240 fnt84 0 13840(22)m 240 fnt83 7257 13843(Chapter)m 8107(2.)s +8381(Details)s 240 fnt82 480 13205(The)m 928(\207rst)s 1380(character)s +2335(of)s 2627(\207le)s 220 fnt35 3009 13202(@FilterIn)m 240 fnt82 +3968 13205(will)m 4415(be)s 4718(the)s 5087(\207rst)s 5539(non-white)s +6586(space)s 7194(character)s 8149(follo)s 6(wing)k 0 12917(the)m +353(opening)s 220 fnt35 1184 12914({)m 240 fnt82 1314 12917(or)m +220 fnt35 1579 12914(@Begin)m 240 fnt82 2348 12917(,)m 2461(or)s +2726(the)s 3080(\207rst)s 3517(character)s 4457(of)s 4734(an)s +5023(included)s 5911(\207le)s 6278(if)s 220 fnt35 6501 12914(@Include)m +240 fnt82 7489 12917(comes)m 8157(\207rst.)s 8698(The)s 0 12629(second-last)m +1146(character)s 2091(of)s 2374(\207le)s 220 fnt35 2746 12626(@FilterIn)m +240 fnt82 3696 12629(will)m 4133(be)s 4427(the)s 4786(last)s +5189(non-white)s 6226(space)s 6825(character)s 7770(preceding)s 8778(the)s +0 12341(closing)m 220 fnt35 745 12338(})m 240 fnt82 871 12341(or)m +220 fnt35 1132 12338(@End @Sym)m 240 fnt82 2454 12341(,)m 2563(or)s +2824(the)s 3174(last)s 3567(character)s 4503(of)s 4775(an)s +5060(included)s 5944(\207le)s 6307(if)s 220 fnt35 6526 12338(@Include)m +240 fnt82 7510 12341(comes)m 8174(last.)s 8671(One)s 0 12053(ne)m 6(wline)k +833(character)s 1794(is)s 2030(al)s 2(w)k 2(ays)k +2768(appended)s 3770(and)s 4201(is)s 4437(the)s 4812(last)s +5229(character)s 6190(of)s 6487(\207le)s 220 fnt35 6875 12050(@FilterIn)m +240 fnt82 7753 12053(.)m 7943(This)s 8446(ef)s 6(fects)k +0 11765(a)m 206(compromise)s 1484(between)s 2378(the)s 2766(Lout)s +3319(con)s 9(v)k 3(ention,)k 4518(that)s 4976(spaces)s +5691(follo)s 6(wing)k 220 fnt35 6708 11762({)m 240 fnt82 +6873 11765(or)m 7172(preceding)s 220 fnt35 8208 11762(})m 240 fnt82 +8372 11765(are)m 8760(not)s 0 11477(signi\207cant,)m 1103(with)s 1585(the)s +1933(Unix)s 2467(con)s 9(v)k 3(ention)k 3576(that)s +3994(all)s 4287(te)s 3(xt)k 4702(\207les)s 5151(end)s +5555(with)s 6037(a)s 6203(ne)s 6(wline)k 7010(character)s 13(.)k +240 fnt84 0 10684(2.5.)m 471(Pr)s 4(ecedence)k 1677(and)s +2118(associati)s 2(vity)k 3420(of)s 3692(symbols)s 240 fnt82 +480 10207(Ev)m 3(ery)k 1131(symbol)s 1920(in)s 2192(Lout)s +2733(has)s 3132(a)s 240 fnt83 3327 10209(pr)m 8(ecedence)k +240 fnt82 4401 10207(,)m 4538(which)s 5209(is)s 5448(a)s +5643(positi)s 6(v)k 3(e)k 6476(whole)s 7146(number)s 13(.)k +8057(When)s 8716(tw)s 2(o)k 0 9919(symbols)m 849(compete)s +1715(for)s 2053(an)s 2336(object,)s 3027(the)s 3375(one)s +3777(with)s 4259(the)s 4607(higher)s 5278(precedence)s 6409(wins)s +6912(it.)s 7208(F)s 3(or)k 7597(e)s 3(xample,)k +220 fnt35 480 9418(a | b / c)m 240 fnt82 0 8963(is)m 210(equi)s 6(v)k 6(alent)k +1253(to)s 220 fnt35 1491 8960({)m 1616(a)s 1794(|)s +1892(b)s 2067(})s 2192(/)s 2317(c)s 240 fnt82 +2482 8963(rather)m 3097(than)s 220 fnt35 3565 8960(a)m 3743(|)s +3841({)s 3966(b)s 4141(/)s 4266(c)s 4432(})s +240 fnt82 4496 8963(,)m 4603(because)s 220 fnt35 5415 8960(|)m +240 fnt82 5511 8963(has)m 5881(higher)s 6551(precedence)s 7681(than)s +220 fnt35 8150 8960(/)m 240 fnt82 8273 8963(and)m 8676(thus)s +0 8675(wins)m 503(the)s 220 fnt35 851 8672(b)m 240 fnt82 +965 8675(.)m 480 8301(When)m 1149(the)s 1538(tw)s 2(o)k +1988(competing)s 3092(symbols)s 3981(ha)s 4(v)k 3(e)k +4523(equal)s 5137(precedence,)s 6359(Lout)s 6912(applies)s 7680(a)s +7887(second)s 8651(rule.)s 0 8013(Each)m 545(symbol)s 1316(is)s +1537(either)s 240 fnt83 2151 8015(left-associative)m 240 fnt82 3659 8013(or)m +240 fnt83 3929 8015(right-associative)m 240 fnt82 5528 8013(.)m 5703(The)s +6142(v)s 6(alue)k 6720(of)s 220 fnt35 7002 8010(a)m +7180(op1)s 7564(b)s 7739(op2)s 8156(c)s 240 fnt82 +8332 8013(is)m 8553(tak)s 2(en)k 0 7725(to)m 252(be)s +220 fnt35 547 7722({)m 672(a)s 850(op1)s 1234(b)s +1409(})s 1534(op2)s 1951(c)s 240 fnt82 2129 7725(if)m +2359(the)s 2720(symbols)s 3582(are)s 3942(both)s 4438(left-associati)s 6(v)k 3(e,)k +5993(and)s 220 fnt35 6410 7722(a op1 { b op2 c })m 240 fnt82 8072 7725(if)m +8302(the)s 3(y)k 8779(are)s 0 7437(right-associati)m 6(v)k 3(e.)k +1733(In)s 1989(cases)s 2544(not)s 2910(co)s 3(v)k 3(ered)k +3719(by)s 4013(these)s 4560(tw)s 2(o)k 4970(rules,)s +5541(use)s 5916(braces.)s 480 7063(It)m 672(sometimes)s 1732(happens)s +2554(that)s 2959(the)s 3294(result)s 3870(is)s 4067(the)s +4402(same)s 4935(re)s 3(g)k 1(ardless)k 5937(of)s +6195(ho)s 6(w)k 6642(the)s 6977(e)s 3(xpression)k +8041(is)s 8237(grouped.)s 0 6775(F)m 3(or)k 382(e)s 3(xample,)k +220 fnt35 1289 6772({)m 1414(a)s 1592(|)s 1690(b)s +1865(})s 1990(|)s 2088(c)s 240 fnt82 2246 6775(and)m +220 fnt35 2643 6772(a)m 2821(|)s 2919({)s 3044(b)s +3219(|)s 3317(c)s 3483(})s 240 fnt82 3599 6775(are)m +3939(al)s 2(w)k 2(ays)k 4643(the)s 4984(same,)s +5575(for)s 5905(an)s 3(y)k 6295(combination)s 7541(of)s +7805(objects,)s 8581(g)s 1(aps,)k 0 6487(and)m 416(v)s 6(ariants)k +1230(of)s 220 fnt35 1513 6484(|)m 240 fnt82 1550 6487(.)m +1727(In)s 1995(such)s 2504(cases)s 3071(the)s 3432(symbols)s +4293(are)s 4653(said)s 5108(to)s 5360(be)s 240 fnt83 +5654 6489(associative)m 240 fnt82 6709 6487(,)m 6829(and)s 7245(we)s +7593(can)s 7995(con\207dently)s 0 6199(omit)m 498(the)s 846(braces.)s +480 5825(User)m 4(-de\207ned)k 1769(symbols)s 2618(may)s 3084(be)s +3366(gi)s 6(v)k 3(en)k 3946(a)s 4112(precedence)s +5243(and)s 5647(associati)s 6(vity:)k 220 fnt35 480 5324(def @Super)m +480 5036( precedence 50)m 480 4748( associativity r)m -3(ight)k 480 4460( left x)m 480 4172( r)m -3(ight y)k +480 3884({)m 480 3596( @OneRo)m 3(w { | -2p @F)k 6(ont y ^/0.5fk x })k 480 3308(})m +240 fnt82 0 2814(The)m 3(y)k 541(come)s 1113(just)s +1516(after)s 2010(an)s 3(y)k 220 fnt35 2405 2811(into)m +240 fnt82 2809 2814(clause)m 3460(and)s 3862(before)s 4526(an)s 3(y)k +4921(parameter)s 5933(de\207nitions.)s 7105(The)s 7531(precedence)s 8660(may)s +0 2526(be)m 280(an)s 3(y)k 674(whole)s 1313(number)s +2101(between)s 2952(10)s 3245(and)s 3646(100,)s 4110(and)s +4512(if)s 4726(omitted)s 5511(is)s 5719(assigned)s 6598(the)s +6943(v)s 6(alue)k 7509(100.)s 8030(The)s 8455(higher)s +0 2238(the)m 373(number)s 9(,)k 1227(the)s 1600(higher)s +2296(the)s 2669(precedence.)s 3933(The)s 4386(associati)s 6(vity)k +5654(may)s 6145(be)s 220 fnt35 6452 2235(left)m 240 fnt82 +6825 2238(or)m 220 fnt35 7109 2235(r)m -3(ight)k 240 fnt82 +7534 2238(,)m 7666(and)s 8095(if)s 8338(omitted)s 0 1950(def)m 2(aults)k +805(to)s 220 fnt35 1044 1947(r)m -3(ight)k 240 fnt82 +1469 1950(.)m 1633(Lout')s 13(s)k 2295(symbols)s 3144(ha)s 4(v)k 3(e)k +3645(the)s 3993(follo)s 6(wing)k 4970(precedences)s 6189(and)s +6593(associati)s 6(vities:)k +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 23 29 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Italic +%%+ font Times-Bold +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +1 LoutMargSet +grestore +240 fnt83 0 13843(2.5.)m 454(Pr)s 8(ecedence)k 1614(and)s +2040(associativity)s 3290(of)s 3571(symbols)s 240 fnt84 8833 13840(23)m +240 fnt82 480 13170(Precedence)m 1904(Associati)s 6(vity)k 3493(Symbols)s +969 12594(5)m 2011(associati)s 6(v)k 3(e)k 220 fnt35 +3493 12591(/ ^/ // ^//)m 240 fnt82 965 12306(6)m 2011(associati)s 6(v)k 3(e)k +220 fnt35 3493 12303(| ^| || ^||)m 240 fnt82 968 12018(7)m 2011(associati)s 6(v)k 3(e)k +220 fnt35 3493 12015(& ^&)m 240 fnt82 968 11730(7)m 2011(associati)s 6(v)k 3(e)k +220 fnt35 3493 11727(&)m 240 fnt82 3695 11730(in)m 3938(the)s +4286(form)s 4810(of)s 5081(one)s 5483(or)s 5742(more)s +6289(white)s 6876(space)s 7463(characters)s 685 11442(10-100)m 220 fnt35 +2012 11439(left)m 240 fnt82 2360 11442(or)m 220 fnt35 2619 11439(r)m -3(ight)k +240 fnt82 3493 11442(user)m 4(-de\207ned)k 4729(symbols)s 844 11154(100)m +220 fnt35 2316 11151(r)m -3(ight)k 3493(@Wide)s 240 fnt82 +4207 11154(,)m 220 fnt35 4314 11151(@High)m 240 fnt82 4973 11154(,)m +220 fnt35 5080 11151(@Gr)m 2(aphic)k 240 fnt82 6064 11154(,)m +6171(etc.)s 854 10866(101)m 2494(-)s 220 fnt35 3493 10863(&&)m +240 fnt82 845 10578(102)m 2011(associati)s 6(v)k 3(e)k +220 fnt35 3493 10575(&)m 240 fnt82 3695 10578(in)m 3938(the)s +4286(form)s 4810(of)s 5081(0)s 5256(spaces)s 850 10290(103)m +2494(-)s 3493(Body)s 4067(parameters)s 5165(and)s 5569(right)s +6080(parameters)s 7178(of)s 220 fnt35 7449 10287(@Open)m 240 fnt82 +0 9749(Actually)m 883(the)s 1238(precedence)s 2375(of)s 2653(juxtaposition)s +3965(\(tw)s 2(o)k 4461(objects)s 5195(separated)s 6162(by)s +6462(zero)s 6933(spaces\))s 7691(is)s 7908(a)s 8080(little)s +8579(more)s 0 9461(complicated.)m 1333(If)s 1565(either)s 2170(of)s +2443(the)s 2793(tw)s 2(o)k 3205(objects)s 3934(is)s +4146(enclosed)s 5043(in)s 5288(braces,)s 6007(the)s 6357(precedence)s +7489(is)s 7701(7)s 7871(as)s 8123(for)s 8463(one)s +8867(or)s 0 9173(more)m 541(spaces.)s 1322(If)s 1545(neither)s +2262(object)s 2899(is)s 3102(enclosed)s 3991(in)s 4227(braces,)s +4937(the)s 5279(precedence)s 6403(is)s 6606(102)s 7014(as)s +7257(sho)s 6(wn)k 7927(abo)s 3(v)k 3(e.)k +8650(This)s 0 8885(complicated)m 1216(rule)s 1633(seems)s 2258(to)s +2486(accord)s 3171(better)s 3764(with)s 4235(what)s 4750(people)s +5434(e)s 3(xpect)k 6104(and)s 6498(need)s 6998(in)s +7230(practice)s 8031(than)s 8490(a)s 8645(pure)s 0 8597(precedence)m +1131(rule)s 1558(can)s 1947(do.)s 240 fnt84 0 7804(2.6.)m +471(The)s 926(style)s 1446(and)s 1887(size)s 2314(of)s +2586(objects)s 240 fnt82 480 7327(This)m 944(section)s 1666(e)s 3(xplains)k +2499(ho)s 6(w)k 2948(Lout)s 3448(determines)s 4535(the)s +4870(style)s 5365(and)s 5757(size)s 6172(of)s 6431(each)s +6914(object.)s 7650(T)s 19(ogether)k 9(,)k 8579(these)s +0 7039(attrib)m 4(utes)k 935(determine)s 1946(the)s 2294(object')s 13(s)k +3088(\207nal)s 3568(appearance)s 4699(in)s 4942(the)s 5290(output.)s +480 6665(The)m 908(style)s 1415(of)s 1686(an)s 1969(object)s +2613(comprises)s 3633(the)s 3981(follo)s 6(wing:)k 0 6162(\213)m +480(Which)s 1175(font)s 1620(f)s 2(amily)k 15(,)k +2333(f)s 2(ace)k 2784(and)s 3188(size)s 3615(to)s +3854(use)s 4229(\(also)s 4746(de\207ning)s 5584(the)s 220 fnt35 +5932 6159(f)m 240 fnt82 6050 6162(unit\);)m 0 5659(\213)m 480(Whether)s +1363(small)s 1935(capitals)s 2715(are)s 3062(in)s 3305(ef)s 6(fect)k +3901(or)s 4160(not;)s 0 5156(\213)m 480(What)s 1058(g)s 1(ap)k +1456(to)s 1695(replace)s 2440(a)s 2606(single)s 3233(space)s +3820(between)s 4674(tw)s 2(o)k 5084(objects)s 5812(by)s +6106(\(also)s 6623(de\207ning)s 7461(the)s 220 fnt35 7809 5153(s)m +240 fnt82 7972 5156(unit\);)m 0 4653(\213)m 480(The)s 900(interpretation)s +2235(to)s 2465(place)s 3017(on)s 3306(white)s 3884(space)s +4463(separating)s 5490(tw)s 2(o)k 5891(objects)s 6611(\()s +220 fnt35 6684 4650(lout)m 240 fnt82 7033 4653(,)m 220 fnt35 +7132 4650(compress)m 240 fnt82 8077 4653(,)m 220 fnt35 8175 4650(separ)m 2(ate)k +240 fnt82 9019 4653(,)m 220 fnt35 480 4362(troff)m 240 fnt82 +855 4365(,)m 962(or)s 220 fnt35 1221 4362(te)m 6(x)k +240 fnt82 1566 4365(as)m 1816(in)s 2059(Section)s 2833(3.5\);)s +0 3871(\213)m 480(The)s 908(current)s 1644(v)s 6(alue)k +2212(of)s 2483(the)s 220 fnt35 2831 3868(y)m 240 fnt82 +2999 3871(and)m 220 fnt35 3403 3868(z)m 240 fnt82 3567 3871(units)m +4083(of)s 4354(measurement)s 5688(\(Section)s 6541(3.6\);)s 0 3370(\213)m +480(The)s 908(kind)s 1392(of)s 1663(paragraph)s 2676(breaking)s +3566(to)s 3805(emplo)s 2(y)k 4575(\()s 220 fnt35 +4648 3367(adjust)m 240 fnt82 5229 3370(,)m 220 fnt35 5336 3367(r)m 2(agged)k +240 fnt82 6005 3370(,)m 6112(etc.\))s 0 2867(\213)m 480(What)s +1058(g)s 1(ap)k 1456(to)s 1695(insert)s 2285(between)s +3139(the)s 3487(lines)s 3989(of)s 4260(paragraphs)s 5360(\(also)s +5877(de\207ning)s 6715(the)s 220 fnt35 7063 2864(v)m 240 fnt82 +7232 2867(unit\);)m 0 2364(\213)m 480(Whether)s 1363(to)s 1602(permit)s +2285(h)s 1(yphenation)k 3525(or)s 3784(not;)s 0 1861(\213)m +480(What)s 1058(colour)s 1729(the)s 2077(object)s 2721(is)s +2931(to)s 3170(appear)s 3867(in;)s 0 1358(\213)m 480(Whether)s +220 fnt35 1363 1355(@Outline)m 240 fnt82 2332 1358(is)m 2542(in)s +2785(ef)s 6(fect;)k 0 874(\213)m 480(The)s 908(language)s +1828(of)s 2099(the)s 2447(object;)s 0 371(\213)m 480(Whether)s +220 fnt35 1363 368(@V)m 17(Adjust)k 240 fnt82 2320 371(,)m +220 fnt35 2427 368(@HAdjust)m 240 fnt82 3473 371(and)m 220 fnt35 +3877 368(@P)m 26(Adjust)k 240 fnt82 4885 371(are)m 5232(in)s +5475(ef)s 6(fect.)k +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 24 30 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +%%+ font Times-Italic +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +0 LoutMargSet +grestore +240 fnt84 0 13840(24)m 240 fnt83 7257 13843(Chapter)m 8107(2.)s +8381(Details)s 240 fnt82 0 13205(The)m 423(style)s 925(of)s +1191(an)s 1468(object)s 2107(depends)s 2938(on)s 3229(where)s +3864(it)s 4051(appears)s 4827(in)s 5064(the)s 5407(\207nal)s +5882(document.)s 6984(F)s 3(or)k 7368(e)s 3(xample,)k +8277(the)s 8619(style)s 0 12917(of)m 286(a)s 467(parameter)s +1497(depends)s 2348(on)s 2661(where)s 3316(it)s 3524(is)s +3749(used;)s 4316(the)s 4679(style)s 5201(of)s 5488(a)s +5669(g)s 1(alle)k 3(y)k 6319(is)s 6544(the)s +6908(style)s 7430(of)s 7717(the)s 8080(\207rst)s 8527(tar)s 4(get)k +0 12629(that)m 415(it)s 603(attempts)s 1459(to)s 1695(attach)s +2318(itself)s 2862(to.)s 3208(Of)s 3529(course,)s 4256(the)s +4600(style)s 5103(of)s 5371(an)s 3(y)k 5764(object)s +6404(can)s 6789(be)s 7068(changed)s 7920(by)s 8210(using)s +8778(the)s 220 fnt35 0 12338(@F)m 6(ont)k 240 fnt82 +652 12341(,)m 220 fnt35 759 12338(@Break)m 240 fnt82 1555 12341(,)m +220 fnt35 1662 12338(@Space)m 240 fnt82 2499 12341(,)m 220 fnt35 +2606 12338(@SetColour)m 240 fnt82 3863 12341(or)m 220 fnt35 4122 12338(@SetColor)m +240 fnt82 5197 12341(,)m 220 fnt35 5304 12338(@Outline)m 240 fnt82 +6213 12341(,)m 6320(and)s 220 fnt35 6724 12338(@Language)m 240 fnt82 +7975 12341(symbols.)m 480 11967(There)m 1102(are)s 1459(no)s 1761(standard)s +2639(def)s 2(ault)k 3369(v)s 6(alues)k 4035(for)s +4382(style,)s 4950(e)s 3(xcept)k 5640(that)s 6068(small)s +6649(capitals)s 7439(and)s 7852(outlining)s 8779(are)s 0 11679(initially)m +800(of)s 6(f,)k 1183(the)s 1535(interpretation)s 2882(of)s +3157(white)s 3748(space)s 4339(is)s 4553(initially)s 220 fnt35 +5354 11676(lout)m 240 fnt82 5703 11679(,)m 5814(and)s 6222(the)s +6574(v)s 6(alues)k 7234(of)s 7509(the)s 220 fnt35 +7861 11676(y)m 240 fnt82 8033 11679(and)m 220 fnt35 8441 11676(z)m +240 fnt82 8610 11679(units)m 0 11391(are)m 355(zero.)s 939(Therefore)s +1945(one)s 2356(must)s 2890(ensure)s 3578(that)s 4005(the)s +4362(root)s 4816(g)s 1(alle)k 3(y)k 5459(or)s +5726(each)s 6230(of)s 6510(its)s 6795(components)s 8012(is)s +8231(enclosed)s 0 11103(in)m 220 fnt35 238 11100(@F)m 6(ont)k +240 fnt82 890 11103(,)m 220 fnt35 992 11100(@Break)m 240 fnt82 +1788 11103(,)m 220 fnt35 1890 11100(@SetColour)m 240 fnt82 3142 11103(or)m +220 fnt35 3396 11100(@SetColor)m 240 fnt82 4471 11103(,)m 4573(and)s +220 fnt35 4972 11100(@Language)m 240 fnt82 6218 11103(symbols.)m 7175(From)s +7748(there)s 8276(the)s 8619(style)s 0 10815(is)m 206(passed)s +897(to)s 1131(incoming)s 2083(g)s 1(alle)k 3(ys)k +2802(and)s 3202(the)s 3545(objects)s 4268(within)s 4931(them.)s +5568(Enclosure)s 6576(in)s 220 fnt35 6814 10812(@Space)m 240 fnt82 +7706 10815(is)m 7911(not)s 8272(required)s 0 10527(because)m 813(the)s +220 fnt35 1161 10524(s)m 240 fnt82 1324 10527(unit)m 1756(is)s +1966(also)s 2404(set)s 2729(by)s 220 fnt35 3023 10524(@F)m 6(ont)k +240 fnt82 3735 10527(\(Section)m 4588(3.5\).)s 536 10153(The)m 959(remainder)s +1983(of)s 2249(this)s 2641(section)s 3370(e)s 3(xplains)k +4210(ho)s 6(w)k 4667(the)s 5010(size)s 5433(of)s +5699(each)s 6189(object)s 6829(\(its)s 7179(width)s 7777(and)s +8176(height)s 8829(on)s 0 9865(the)m 353(printed)s 1094(page\))s +1679(is)s 1895(determined.)s 3140(W)s 19(e)k 3514(will)s +3946(treat)s 4434(width)s 5042(only)s 15(,)k 5566(since)s +6118(height)s 6782(is)s 6997(determined)s 8136(in)s 8385(e)s 3(xactly)k +0 9577(the)m 348(same)s 895(w)s 2(ay)k 15(,)k +1384(e)s 3(xcept)k 2065(that)s 2483(the)s 2831(complications)s +4223(introduced)s 5304(by)s 5598(paragraph)s 6611(breaking)s 7501(are)s +7848(absent.)s 480 9203(W)m 9(ith)k 1006(three)s 1539(e)s 3(xceptions)k +2611(\(see)s 3051(belo)s 6(w\),)k 3817(the)s 4165(width)s +4768(of)s 5039(an)s 5323(object)s 5967(is)s 6178(as)s +6428(lar)s 4(ge)k 6958(as)s 7208(it)s 7401(possibly)s +8253(could)s 8844(be)s 0 8915(without)m 784(violating)s 1679(a)s +220 fnt35 1837 8912(@Wide)m 240 fnt82 2603 8915(symbol)m 3355(or)s +3606(intruding)s 4528(into)s 4945(the)s 5285(space)s 5864(occupied)s +6778(by)s 7064(neighbouring)s 8386(g)s 1(aps)k 8867(or)s +0 8627(objects.)m 841(As)s 1158(an)s 1441(aid)s 1791(to)s +2030(in)s 9(v)k 3(estig)k 1(ating)k 3305(this)s +3701(rule,)s 4179(we)s 4514(will)s 4940(use)s 5315(the)s +5663(de\207nition)s 220 fnt35 480 8126(def @TightBo)m 6(x r)k -3(ight x)k +480 7838({)m 480 7550( "0 0 mo)m 3(v)k 5(eto xsiz)k 3(e 0 lineto xsiz)k 3(e ysiz)k 3(e lineto 0 ysiz)k 3(e lineto closepath strok)k 4(e")k +480 7262( @Gr)m 2(aphic x)k 480 6974(})m 240 fnt82 0 6480(which)m +657(dra)s 3(ws)k 1291(a)s 1472(box)s 1903(around)s +2641(the)s 3004(boundary)s 3978(of)s 4265(its)s 4556(right)s +5082(parameter)s 6111(\(Section)s 6980(3.38\))s 7543(with)s 8040(no)s +8349(mar)s 4(gin.)k 0 6192(The)m 428(result)s 1018(of)s +220 fnt35 480 5741(5c @Wide @TightBo)m 6(x metempsychosis)k 240 fnt82 0 5242(is)m +2835 215 0 106 240 288 60 480 4737 LoutGr2 +0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath stroke +grestore +0 52(metempsychosis)m +grestore +0 4286(The)m 432(widest)s 1120(that)s 220 fnt35 +1542 4283(@TightBo)m 6(x metempsychosis)k 240 fnt82 4377 4286(could)m 4971(possibly)s +5827(be)s 6113(is)s 6327(\207v)s 3(e)k 6743(centimetres,)s +7954(and)s 8363(accord)s 8998(-)s 0 3998(ingly)m 552(that)s +977(is)s 1194(its)s 1477(width.)s 2193(The)s 2628(same)s +3182(applies)s 3917(to)s 220 fnt35 4163 3995(metempsychosis)m 240 fnt82 +5791 3998(,)m 5905(which)s 6554(is)s 6771(\207v)s 3(e)k +7190(centimetres)s 8348(wide)s 8876(as)s 0 3710(well.)m 583(Note)s +1113(carefully)s 2024(that)s 2451(there)s 2992(is)s 3211(no)s +3513(object)s 4166(in)s 4418(this)s 4822(e)s 3(xample)k +5694(whose)s 6371(width)s 6982(is)s 7200(equal)s 7782(to)s +8030(the)s 8387(sum)s 8855(of)s 0 3422(the)m 348(widths)s +1037(of)s 1308(the)s 1656(letters)s 2289(of)s 220 fnt35 +2560 3419(metempsychosis)m 240 fnt82 4188 3422(.)m 480 3048(The)m 903(\207rst)s +1329(of)s 1595(the)s 1938(three)s 2466(e)s 3(xceptions)k +3532(to)s 3766(the)s 4109(`as)s 4433(wide)s 4949(as)s +5194(possible')s 6085(rule)s 6507(is)s 6712(the)s 220 fnt35 +7055 3045(@HContr)m 2(act)k 240 fnt82 8314 3048(symbol,)m 0 2760(which)m +644(causes)s 1322(the)s 1672(width)s 2277(of)s 2551(its)s +2829(right)s 3343(parameter)s 4360(to)s 4601(be)s 4886(reduced)s +5703(to)s 5945(a)s 6114(reasonable)s 7194(minimum)s 8187(\(a)s +8435(formal)s 0 2472(de\207nition)m 974(will)s 1400(not)s 1766(be)s +2048(attempted\):)s 220 fnt35 480 1971(5c @Wide @HContr)m 2(act @TightBo)k 6(x metempsychosis)k +240 fnt82 0 1472(produces)m 1572 215 0 106 240 288 60 480 917 LoutGr2 +0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath stroke +grestore +0 52(metempsychosis)m +grestore +0 466(The)m 482(object)s +220 fnt35 1180 463(@HContr)m 2(act @TightBo)k 6(x metempsychosis)k 240 fnt82 +5334 466(is)m 5598(still)s 6064(\207v)s 3(e)k 6530(centimetres)s +7735(wide,)s 8361(b)s 4(ut)k 8778(the)s 0 178(object)m +220 fnt35 644 175(@TightBo)m 6(x metempsychosis)k 240 fnt82 3475 178(has)m +3845(been)s 4354(reduced.)s +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 25 31 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Italic +%%+ font Times-Bold +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +1 LoutMargSet +grestore +240 fnt83 0 13843(2.6.)m 454(The)s 866(style)s 1356(and)s +1782(size)s 2193(of)s 2474(objects)s 240 fnt84 8833 13840(25)m +240 fnt82 480 13205(The)m 922(second)s 1659(of)s 1945(the)s +2307(three)s 2855(e)s 3(xceptions)k 3940(is)s 4165(the)s +4527(horizontal)s 5565(concatenation)s 6965(symbol)s 220 fnt35 7739 13202(|)m +240 fnt82 7851 13205(\(and)m 8348(also)s 220 fnt35 8801 13202(&)m +240 fnt82 8943 13205(\).)m 0 12917(Consider)m 924(this)s 1320(e)s 3(xample:)k +220 fnt35 480 12416(5c @Wide @TightBo)m 6(x { A |1c B |1c C })k 240 fnt82 0 11917(As)m +317(usual,)s 929(the)s 1277(right)s 1788(parameter)s 2802(of)s +220 fnt35 3073 11914(@Wide)m 240 fnt82 3847 11917(is)m 4057(\207v)s 3(e)k +4469(centimetres)s 5620(wide,)s 6192(and)s 6596(the)s 6944(result)s +7534(looks)s 8104(lik)s 2(e)k 8516(this:)s 2835 165 0 57 240 288 60 480 11412 LoutGr2 +0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath stroke +grestore +0 3(A)m +737(B)s 1447(C)s +grestore +0 10961(Lout)m 512(has)s 882(to)s +1121(apportion)s 2095(the)s 2443(size)s 2870(minus)s 3506(inter)s 4(-column)k +4793(g)s 1(aps)k 5282(among)s 5987(the)s 6335(three)s +6868(columns.)s 480 10587(If)m 707(the)s 1052(columns)s 1911(are)s +2255(wide)s 2772(enough)s 3532(to)s 3768(require)s 4497(paragraph)s +5507(breaking,)s 6447(Lout)s 6956(will)s 7379(assign)s 8031(sizes)s +8543(to)s 8778(the)s 0 10299(columns)m 864(in)s 1110(such)s +1609(a)s 1778(w)s 2(ay)k 2232(as)s 2484(to)s +2726(lea)s 4(v)k 3(e)k 3282(narro)s 6(w)k +4010(columns)s 4875(unbrok)s 2(en)k 5837(and)s 6244(break)s +6839(wider)s 7446(columns)s 8311(to)s 8553(equal)s 0 10011(width,)m +652(occup)s 2(ying)k 1702(the)s 2051(full)s 2438(size.)s +2974(Otherwise,)s 4064(paragraph)s 5077(breaking)s 5968(is)s 6179(not)s +6546(required,)s 7450(and)s 7855(each)s 8351(column)s 0 9723(will)m +431(be)s 719(assigned)s 1607(a)s 1779(reasonable)s 2863(minimum)s +3858(size)s 4291(in)s 4540(the)s 4894(manner)s 5677(of)s +220 fnt35 5953 9720(@HContr)m 2(act)k 240 fnt82 7157 9723(,)m +7270(e)s 3(xcept)k 7957(that)s 8381(the)s 8735(last)s +0 9435(column)m 775(recei)s 6(v)k 3(es)k 1599(all)s +1892(the)s 2240(lefto)s 3(v)k 3(er)k 3036(width.)s +3745(F)s 3(or)k 4134(e)s 3(xample,)k 220 fnt35 +480 8934(5c @Wide { @TightBo)m 6(x A |1c @TightBo)k 6(x B |1c @TightBo)k 6(x C })k 240 fnt82 +0 8435(has)m 370(result)s 170 165 0 57 240 288 60 480 7980 LoutGr2 +0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath stroke +grestore +0 3(A)m +grestore +143 165 0 57 240 288 60 1217 7980 LoutGr2 +0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath stroke +grestore +0 3(B)m +grestore +1388 165 0 57 240 288 60 1927 7980 LoutGr2 +0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath stroke +grestore +0 3(C)m + +grestore +0 7529(If)m 237(it)s 436(is)s 653(desired)s 1408(that)s +1833(the)s 2188(lefto)s 3(v)k 3(er)k 2991(width)s +3600(remain)s 4327(unused,)s 5120(rather)s 5743(than)s 6219(going)s +6825(into)s 7257(the)s 7612(last)s 8010(column,)s 8843(an)s +0 7241(empty)m 654(column)s 1431(can)s 1822(be)s 2106(appended,)s +3133(or)s 3394(the)s 3744(last)s 4137(column)s 4914(can)s +5305(be)s 5589(enclosed)s 6486(in)s 220 fnt35 6731 7238(@HContr)m 2(act)k +240 fnt82 7935 7241(.)m 8101(T)s 19(w)k 2(o)k +8575(other)s 0 6953(w)m 2(ays)k 560(to)s 819(apportion)s +1813(the)s 2181(lefto)s 3(v)k 3(er)k 2997(width)s +3619(are)s 3986(pro)s 3(vided)k 4912(by)s 5226(the)s +220 fnt35 5594 6950(@HExpand)m 240 fnt82 6787 6953(and)m 220 fnt35 +7211 6950(@HAdjust)m 240 fnt82 8277 6953(symbols)m 0 6665(\(Sections)m 940(3.13)s +1404(and)s 1808(3.16\).)s 480 6291(The)m 914(third)s 1430(and)s +1841(\207nal)s 2328(e)s 3(xception)k 3319(to)s 3565(the)s +3920(`as)s 4255(wide)s 4783(as)s 5040(possible')s 5943(rule)s +6377(concerns)s 7285(the)s 7640(components)s 8855(of)s 0 6003(the)m +348(root)s 793(g)s 1(alle)k 3(y)k 15(.)k +1522(Each)s 2057(is)s 2267(considered)s 3361(to)s 3600(be)s +3882(enclosed)s 4777(in)s 220 fnt35 5020 6000(@HContr)m 2(act)k +240 fnt82 6284 6003(and)m 220 fnt35 6688 6000(@VContr)m 2(act)k +240 fnt82 7940 6003(symbols.)m 480 5629(Up)m 836(to)s 1086(this)s +1493(point)s 2056(we)s 2401(ha)s 4(v)k 3(e)k +2913(treated)s 3631(width)s 4244(as)s 4505(a)s 4681(single)s +5319(quantity)s 15(,)k 6206(b)s 4(ut)k 6579(of)s +6860(course)s 7551(it)s 7754(has)s 8135(tw)s 2(o)k +8556(parts:)s 0 5341(width)m 602(to)s 841(left)s 1218(and)s +1622(right)s 2133(of)s 2404(the)s 2752(mark.)s 3407(The)s +3835(`as)s 4164(wide)s 4685(as)s 4935(possible')s 5831(rule)s +6258(applies)s 6986(to)s 7225(both)s 7708(directions:)s 220 fnt35 +480 4840(@HContr)m 2(act { @TightBo)k 6(x 953^.05 /0.5c @TightBo)k 6(x 2^.8286 })k 240 fnt82 +0 4341(has)m 370(result)s 877 170 344 59 240 288 60 480 3881 LoutGr2 +0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath stroke +grestore +0 5(953)m 344(.05)s +grestore +877 167 344 57 240 288 60 480 3431 LoutGr2 +0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath stroke +grestore +230 3(2)m +344(.8286)s +grestore +0 2980(Lefto)m 3(v)k 3(er)k 868(width)s +1461(usually)s 2197(goes)s 2678(to)s 2908(the)s 3247(right,)s +3796(as)s 4037(we)s 4364(ha)s 4(v)k 3(e)k +4856(seen,)s 5379(b)s 4(ut)k 5732(here)s 6190(some)s +6742(width)s 7335(w)s 2(as)k 7747(a)s 4(v)k 6(ailable)k +8646(only)s 0 2692(to)m 239(the)s 587(left)s 964(of)s +220 fnt35 1235 2689(2.8286)m 240 fnt82 1958 2692(o)m 6(wing)k +2604(to)s 2843(the)s 3191(column)s 3966(mark)s 4518(alignment.)s +240 fnt84 0 1899(2.7.)m 471(Galleys)s 1282(and)s 1723(tar)s 2(gets)k +240 fnt82 480 1422(The)m 909(beha)s 4(viour)k 1924(of)s +2197(g)s 1(alle)k 3(ys)k 2923(and)s 3328(their)s +3827(tar)s 4(gets,)k 4568(as)s 4820(described)s 5796(in)s +6040(Section)s 6816(1.4,)s 7225(can)s 7616(be)s 7900(summarized)s +0 1134(in)m 243(three)s 776(la)s 3(ws:)k 240 fnt83 +0 682(F)m 10(ir)k 2(st)k 540(Law)s 240 fnt82 +949 680(:)m 1139(The)s 1592(\207rst)s 2047(tar)s 4(get)k +2671(is)s 2905(the)s 3278(closest)s 4012(in)s 9(v)k 4(ocation)k +5091(of)s 5386(the)s 5759(tar)s 4(get)k 6382(symbol,)s +7219(either)s 7846(preceding)s 8867(or)s 0 392(follo)m 6(wing)k +972(the)s 1315(in)s 9(v)k 4(ocation)k 2363(point)s +2910(of)s 3175(the)s 3518(g)s 1(alle)k 3(y)k +4146(as)s 4391(required,)s 5288(which)s 5925(has)s 6289(suf\207cient)s +7233(space)s 7814(to)s 8048(recei)s 6(v)k 3(e)k +8778(the)s 0 104(\207rst)m 431(component;)s +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 26 32 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +%%+ font Times-Italic +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +0 LoutMargSet +grestore +240 fnt84 0 13840(26)m 240 fnt83 7257 13843(Chapter)m 8107(2.)s +8381(Details)s 0 13205(Second)m 773(Law)s 240 fnt82 1182 13203(:)m +1364(Each)s 1915(subsequent)s 3055(tar)s 4(get)k 3670(is)s +3896(the)s 4259(closest)s 4985(in)s 9(v)k 4(ocation)k +6055(of)s 6342(the)s 6706(tar)s 4(get)k 7321(symbol,)s +8149(follo)s 6(wing)k 0 12915(the)m 337(pre)s 6(vious)k +1195(tar)s 4(get)k 1783(and)s 2176(lying)s 2710(within)s +3367(the)s 3704(same)s 4240(g)s 1(alle)k 3(y)k 15(,)k +4901(which)s 5532(has)s 5891(suf\207cient)s 6829(space)s 7405(to)s +7633(recei)s 6(v)k 3(e)k 8358(the)s 8695(\207rst)s +0 12627(remaining)m 1022(component;)s 240 fnt83 0 12124(Thir)m 8(d)k +607(Law)s 240 fnt82 1016 12122(:)m 1199(A)s 1446(recepti)s 6(v)k 3(e)k +2385(symbol)s 3162(that)s 3597(does)s 4104(not)s 4487(recei)s 6(v)k 3(e)k +5240(at)s 5489(least)s 6003(one)s 6422(component)s 7563(of)s +7851(an)s 3(y)k 8265(g)s 1(alle)k 3(y)k +8916(is)s 0 11834(replaced)m 867(by)s 220 fnt35 1161 11831(@Null)m +240 fnt82 1746 11834(.)m 0 11331(The)m 436(terms)s 1025(`closest,)s 16(')k +1918(`preceding,)s 16(')k 3104(and)s 3516(`follo)s 6(wing')k +4639(refer)s 5156(to)s 5403(position)s 6239(in)s 6490(the)s +6846(\207nal)s 7334(printed)s 8078(document.)s 0 11043(This)m 476(section)s +1210(e)s 3(xplains)k 2055(the)s 2403(operation)s 3363(of)s +3634(these)s 4181(la)s 3(ws)k 4667(in)s 4910(Basser)s +5607(Lout.)s 480 10669(When)m 1100(a)s 1257(g)s 1(alle)k 3(y)k +1881(cannot)s 2570(be)s 2843(\207tted)s 3382(into)s 3798(just)s +4194(one)s 4586(tar)s 4(get,)k 5223(Lout)s 5726(must)s +6241(\207nd)s 6663(points)s 7290(in)s 7523(the)s 7862(g)s 1(alle)k 3(y)k +8486(where)s 0 10381(it)m 191(can)s 579(be)s 860(split)s +1330(in)s 1572(tw)s 2(o.)k 2091(The)s 2518(object)s +3161(lying)s 3705(between)s 4558(tw)s 2(o)k 4966(neighbouring)s +6295(potential)s 7185(split)s 7655(points)s 8290(is)s 8498(called)s +0 10093(a)m 240 fnt83 166 10095(component)m 240 fnt82 1281 10093(of)m +1552(the)s 1900(g)s 1(alle)k 3(y)k 15(.)k +2629(By)s 2963(de\207nition,)s 3987(a)s 4153(component)s 5277(cannot)s +5975(be)s 6257(split.)s 480 9719(T)m 19(o)k 813(determine)s +1857(the)s 2239(components)s 3480(of)s 3785(a)s 3984(g)s 1(alle)k 3(y)k 15(,)k +4690(e)s 3(xpand)k 5470(all)s 5797(symbols)s 6679(other)s +7264(than)s 7766(recursi)s 6(v)k 3(e)k 8722(and)s +0 9431(recepti)m 6(v)k 3(e)k 909(ones,)s 1442(discard)s +2177(all)s 220 fnt35 2457 9428(@F)m 6(ont)k 240 fnt82 +3109 9431(,)m 220 fnt35 3203 9428(@Break)m 240 fnt82 3999 9431(,)m +220 fnt35 4093 9428(@Space)m 240 fnt82 4930 9431(,)m 220 fnt35 +5024 9428(@SetColor)m 240 fnt82 6099 9431(,)m 220 fnt35 6193 9428(@SetColour)m +240 fnt82 7390 9431(,)m 7484(and)s 220 fnt35 7875 9428(@Language)m +240 fnt82 0 9143(symbols,)m 908(perform)s 1740(paragraph)s 2756(breaking)s +3649(as)s 3902(required,)s 4809(and)s 5216(discard)s 5967(all)s +6263(redundant)s 7283(braces.)s 8060(Then)s 8613(vie)s 6(w)k +0 8855(the)m 367(g)s 1(alle)k 3(y)k 1020(as)s +1290(a)s 1475(sequence)s 2428(of)s 2718(one)s 3140(or)s +3418(more)s 3984(objects)s 4732(separated)s 5711(by)s 6025(v)s 3(ertical)k +6811(concatenation)s 8216(symbols;)s 0 8567(these)m 567(are)s 935(the)s +1304(components)s 2533(and)s 2958(split)s 3450(points,)s 4163(e)s 3(xcept)k +4865(that)s 5304(concatenation)s 6710(symbols)s 7580(whose)s 8269(g)s 1(aps)k +8779(are)s 0 8279(unbreakable)m 1225(\(Section)s 2078(3.2\))s 2506(are)s +2853(not)s 3219(eligible)s 3991(to)s 4230(be)s 4512(split)s +4983(points.)s 5732(F)s 3(or)k 6121(e)s 3(xample,)k +7035(gi)s 6(v)k 3(en)k 7615(the)s 7963(de\207nition)s +220 fnt35 480 7778(def @Section into { @SectionPlace&&preceding })m 480 7490( named @Title {})m 480 7202( r)m -3(ight @Body)k +480 6914({)m 480 6626( 15p @F)m 6(ont { @Title //0.7f })k 480 6338( //)m 480 6050( @Body)m +480 5762(})m 240 fnt82 0 5268(the)m 348(g)s 1(alle)k 3(y)k +220 fnt35 480 4767(@Section)m 480 4479( @Title { Introduction })m 480 4191({ )m 11(This is a subject that really)k +480 3903(needs no introduction.)m 13( })k 240 fnt82 0 3409(becomes)m 220 fnt35 +480 2962(Introduction)m 480 2674(//0.7f)m 480 2386({})m 480 2098(//)m 480 1810(This is a subject that really needs)m +480 1522(//1vx)m 480 1234(no introduction.)m 240 fnt82 0 780(with)m 482(four)s +939(components.)s 2260(If)s 220 fnt35 2489 777(@Body)m 240 fnt82 +3269 780(had)m 3673(been)s 4181(preceded)s 5102(by)s 220 fnt35 +5395 777(|1.0c)m 240 fnt82 5921 780(in)m 6164(the)s 6511(de\207nition,)s +7535(the)s 7882(result)s 8471(w)s 2(ould)k 0 492(ha)m 4(v)k 3(e)k +501(been)s +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 27 33 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Italic +%%+ font Times-Bold +%%+ font Helvetica +%%+ font Symbol +/pgsave save def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +1 LoutMargSet +grestore +240 fnt83 0 13843(2.7.)m 454(Galle)s 7(ys)k 1232(and)s +1658(tar)s 8(g)k 2(ets)k 240 fnt84 8831 13840(27)m +220 fnt35 480 13211(Introduction)m 480 12923(//0.7f)m 480 12635({})m 480 12347(//)m +480 12059(|1.0c { )m 11(This is a subject that really needs //1vx no introduction.)k 13( })k 240 fnt82 0 11561(with)m +220 fnt35 524 11558(//1vx)m 240 fnt82 1089 11561(b)m 4(uried)k +1796(within)s 2507(one)s 2951(component)s 4118(and)s 4564(hence)s +5221(not)s 5629(a)s 5838(potential)s 6771(split)s 7285(point.)s +7983(If)s 220 fnt35 8256 11558(0.7f)m 240 fnt82 8722 11561(had)m +0 11273(been)m 220 fnt35 525 11270(0.7fu)m 240 fnt82 999 11273(,)m +1123(the)s 1488(g)s 1(ap)k 1903(w)s 2(ould)k +2575(ha)s 4(v)k 3(e)k 3092(been)s 3618(unbreakable)s +4860(and)s 220 fnt35 5281 11270(//0.7fu)m 240 fnt82 5954 11273(w)m 2(ould)k +6625(not)s 7008(ha)s 4(v)k 3(e)k 7526(been)s +8052(a)s 8235(potential)s 0 10985(split)m 471(point.)s 480 10611(V)m 26(ersion)k +1310(3.03)s 1816(has)s 2228(liberalized)s 3335(this)s 3773(some)s 6(what)k +4840(in)s 5125(the)s 5515(follo)s 6(wing)k 6534(w)s 2(ay)k 15(.)k +7122(When)s 7793(a)s 8002(component)s 0 10323(consists)m 808(of)s +1080(a)s 1247(horizontal)s 2271(sequence)s 3205(of)s 3477(tw)s 2(o)k +3887(or)s 4147(more)s 4695(objects)s 240 fnt83 5423 10325(A)m +168 fnt78 5558 10232(1)m 240 fnt78 5637 10317(,)m 5746(\274)s +6046(,)s 240 fnt83 6155 10325(A)m 168 fnt83 6290 10238(n)m +240 fnt82 6431 10323(separated)m 7391(by)s 220 fnt35 7686 10320(|)m +240 fnt82 7784 10323(\(not)m 220 fnt35 8229 10320(||)m 240 fnt82 +8323 10323(,)m 8431(not)s 220 fnt35 8798 10320(&)m 240 fnt82 +8940 10323(\),)m 0 10035(Lout)m 506(will)s 926(in)s 9(v)k 3(estig)k 1(ate)k +1998(the)s 2339(component)s 3457(to)s 3690(see)s 4044(whether)s +4868(it)s 5054(can)s 5436(be)s 5712(brok)s 2(en)k +6426(up.)s 6823(It)s 7022(looks)s 7586(at)s 7811(each)s +240 fnt83 8300 10037(A)m 168 fnt83 8435 9950(i)m 240 fnt82 +8533 10035(to)m 8765(see)s 0 9747(whether)m 830(it)s 1023(is)s +1234(a)s 1401(v)s 3(ertical)k 2169(concatenation)s 3555(of)s +3827(objects)s 240 fnt83 4556 9749(A)m 168 fnt83 4691 9662(i)m +168 fnt78 4743 9656(1)m 240 fnt78 4822 9741(,)m 4932(\274)s +5232(,)s 240 fnt83 5342 9749(A)m 168 fnt83 5477 9662(im)m +240 fnt82 5641 9747(;)m 5754(if)s 5972(tw)s 2(o)k +6383(or)s 6643(more)s 7191(of)s 7463(the)s 240 fnt83 +7812 9749(A)m 168 fnt83 7947 9662(i)m 240 fnt82 8052 9747(satisfy)m +8730(this)s 0 9459(condition,)m 1009(the)s 1354(component)s 2475(will)s +2898(not)s 3262(be)s 3541(brok)s 2(en)k 4258(up.)s +4659(So)s 4962(no)s 6(w)k 5421(suppose)s 6246(we)s +6578(ha)s 4(v)k 3(e)k 7076(just)s 7479(one)s +240 fnt83 7878 9461(A)m 168 fnt83 8013 9374(i)m 240 fnt82 +8114 9459(which)m 8753(is)s 8960(a)s 0 9171(v)m 3(ertical)k +757(concatenation.)s 2239(Lout)s 2741(will)s 3156(break)s 3738(the)s +4076(component)s 5189(into)s 5604(one)s 5996(component)s 7109(for)s +7437(each)s 7922(of)s 8182(the)s 240 fnt83 8520 9173(A)m +168 fnt83 8655 9086(i)m 168 fnt78 8707 9080(1)m 240 fnt78 +8775 9165(,)m 8851(\274)s 3 8877(,)m 240 fnt83 80 8885(A)m +168 fnt83 215 8798(im)m 240 fnt82 379 8883(,)m 476(pro)s 3(vided)k +1373(that)s 1781(the)s 3(y)k 2234(are)s 2571(separated)s +3521(by)s 220 fnt35 3806 8880(//)m 240 fnt82 3981 8883(symbols)m +4820(\(not)s 220 fnt35 5255 8880(/)m 240 fnt82 5319 8883(\),)m +5495(and)s 5890(pro)s 3(vided)k 6786(this)s 7172(can)s +7551(be)s 7823(done)s 8335(without)s 0 8595(introducing)m 1155(an)s 3(y)k +1550(apparent)s 2431(change)s 3164(into)s 3587(the)s 3933(appearance)s +5062(of)s 5332(the)s 5678(component)s 6800(\(this)s 7274(second)s +7995(rule)s 8420(will)s 8844(be)s 0 8307(satis\207ed)m 847(if)s +1071(the)s 1426(other)s 240 fnt83 1984 8309(A)m 168 fnt83 +2119 8222(j)m 240 fnt82 2232 8307(are)m 2586(not)s 2959(v)s 3(ery)k +3442(lar)s 4(ge\).)k 4165(The)s 4600(e)s 3(xample)k +5470(abo)s 3(v)k 3(e)k 6099(satis\207es)s 6913(all)s +7213(these)s 7767(rules)s 8289(and)s 8700(will)s 0 7996(be)m +282(brok)s 2(en)k 1002(up)s 1295(into)s 1720(tw)s 2(o)k +2130(components,)s 3394(so)s 3660(the)s 220 fnt35 4008 7993(//1vx)m +240 fnt82 4530 7996(becomes)m 5418(a)s 5584(potential)s 6475(split)s +6946(point)s 7498(after)s 7994(all.)s 480 7622(The)m 913(lines)s +1421(of)s 1697(a)s 1869(paragraph)s 2887(become)s 3693(separate)s +4536(components)s 5750(if)s 5972(the)s 6326(paragraph)s 7344(occupies)s +8238(an)s 8527(entire)s 0 7334(component)m 1151(before)s 1844(breaking;)s +2820(otherwise)s 3833(the)s 3(y)k 4323(are)s 4697(enclosed)s +5619(in)s 5890(a)s 220 fnt35 6083 7331(@OneRo)m 3(w)k +240 fnt82 7241 7334(symbol)m 8028(within)s 8724(one)s 0 7046(component.)m +1237(The)s 1675(same)s 2232(is)s 2452(true)s 2888(of)s +3169(incoming)s 4136(components)s 5354(of)s 5635(other)s 6195(g)s 1(alle)k 3(ys.)k +7042(If)s 7282(a)s 220 fnt35 7458 7043(@Galle)m 4(y)k +240 fnt82 8366 7046(symbol)m 0 6758(occupies)m 892(an)s 1180(entire)s +1783(component)s 2912(by)s 3211(the)s 3563(rules)s 4083(abo)s 3(v)k 3(e,)k +4761(then)s 5234(the)s 5587(incoming)s 6549(components)s 7761(that)s +8184(replace)s 8934(it)s 0 6470(become)m 800(components)s 2008(of)s +2279(their)s 2776(ne)s 6(w)k 3223(home:)s 220 fnt35 +480 5916(An e)m 6(xample)k 480 5628(//0.5c)m 480 5340(@Galle)m 4(y)k +480 5052(//0.5c)m 480 4764(@SomethingList)m 240 fnt78 2500 5625(\336)m 220 fnt35 +3141 5916(An e)m 6(xample)k 3141 5628(//0.5c)m 3141 5340(Incoming components)m 3141 5052(//0.2c)m +3141 4764(from some other galle)m 4(y)k 3141 4476(//0.5c)m 3141 4188(@SomethingList)m 240 fnt82 +0 3632(Otherwise)m 1062(the)s 1435(incoming)s 2416(components)s 3649(are)s +4020(grouped)s 4888(within)s 5580(a)s 220 fnt35 5771 3629(@OneRo)m 3(w)k +240 fnt82 6926 3632(symbol)m 7711(and)s 8139(lie)s 8458(within)s +0 3344(one)m 402(component.)s 480 2970(This)m 985(distinction)s 2080(has)s +2480(a)s 2675(mark)s 2(ed)k 3477(ef)s 6(fect)k +4103(on)s 4429(the)s 4806(v)s 3(ertical)k 5603(concatenation)s +7017(symbol)s 220 fnt35 7806 2967(//1.1b)m 240 fnt82 8347 2970(,)m +8484(which)s 0 2682(calls)m 509(for)s 868(more)s 1436(space)s +2045(than)s 2535(is)s 2766(a)s 4(v)k 6(ailable)k +3695(\(Section)s 4570(3.2\).)s 5134(There)s 5768(is)s 5999(no)s +6314(room)s 6900(for)s 7259(this)s 7676(symbol)s 8458(within)s +0 2394(an)m 3(y)k 402(component,)s 1579(so)s 1851(it)s +2049(will)s 2481(force)s 3033(a)s 3205(split)s 3682(and)s +4092(be)s 4379(discarded)s 5359(in)s 5608(that)s 6032(case.)s +6613(But)s 7025(it)s 7223(can)s 7618(be)s 7906(promoted)s +8887(to)s 0 2106(between)m 854(tw)s 2(o)k 1264(components.)s +480 1732(Components)m 1749(may)s 2223(be)s 2513(separated)s 3481(by)s +220 fnt35 3783 1729(/)m 240 fnt82 3914 1732(as)m 4172(well)s +4646(as)s 4904(by)s 220 fnt35 5206 1729(//)m 240 fnt82 +5331 1732(,)m 5445(gi)s 6(ving)k 6112(rise)s 6520(to)s +6767(column)s 7550(mark)s 8110(alignment)s 0 1444(between)m 854(adjacent)s +1710(components:)s +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 28 34 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +%%+ font Times-Italic +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +0 LoutMargSet +grestore +240 fnt84 0 13840(28)m 240 fnt83 7257 13843(Chapter)m 8107(2.)s +8381(Details)s gsave +480 12008 translate +240 fnt82 1701 1360 567 1360 240 288 60 LoutGraphic +gsave +grestore save gsave 200 dict begin lfigdict begin +grestore +1701 1360 567 1360 240 288 60 0 0 LoutGr2 + +0.015 cm setlinewidth lfiground setlinecap +0.15 cm /lfigdashed [ xmark -0.3 cm +xmark ysize 0 0.3 cm lfigpadd ] lfigdopath +pop pop +grestore +1134 340 567 340 240 288 60 0 1020 LoutGr2 +0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath 0.8 setgray fill +grestore + +grestore +1134 340 0 340 240 288 60 567 510 LoutGr2 +0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath 0.8 setgray fill +grestore + +grestore +736 340 283 340 240 288 60 284 0 LoutGr2 +0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath 0.8 setgray fill +grestore + +grestore + +grestore +end end restore +grestore +240 fnt82 0 11557(When)m 688(aligned)s 1509(components)s +2777(are)s 3183(promoted)s 4218(into)s 4702(dif)s 6(ferent)k +5637(tar)s 4(gets,)k 6435(the)s 6843(meaning)s 7779(of)s +8110(alignment)s 0 11269(becomes)m 882(v)s 3(ery)k 1351(doubtful.)s +2319(F)s 3(or)k 2702(e)s 3(xample,)k 3609(what)s +4127(if)s 4338(the)s 4679(tar)s 4(gets)k 5355(are)s +5696(in)s 5932(dif)s 6(ferent)k 6800(columns)s 7656(of)s +7920(one)s 8315(page,)s 8867(or)s 0 10981(what)m 525(if)s +742(one)s 1144(lies)s 1526(within)s 220 fnt35 2194 10978(90d @Rotate)m +240 fnt82 3482 10981(?)m 480 10607(The)m 908(truth)s 1416(is)s +1626(that)s 220 fnt35 2044 10604(/)m 240 fnt82 2168 10607(causes)m +2843(all)s 3136(the)s 3484(objects)s 4212(that)s 4630(share)s +5190(a)s 5356(mark)s 5908(to)s 6147(ha)s 4(v)k 3(e)k +6648(equal)s 7221(width:)s 1701 1360 567 1360 240 288 60 480 8907 LoutGr2 +grestore save gsave 200 dict begin lfigdict begin +grestore +1701 1360 567 1360 240 288 60 0 0 LoutGr2 + +0.015 cm setlinewidth lfiground setlinecap +0.15 cm /lfigdashed [ xmark -0.3 cm +xmark ysize 0 0.3 cm lfigpadd ] lfigdopath +pop pop +grestore +1701 340 567 340 240 288 60 0 1020 LoutGr2 +0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath stroke +grestore +1134 340 567 340 240 288 60 0 0 LoutGr2 +0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath 0.8 setgray fill +grestore + +grestore + +grestore +1701 340 567 340 240 288 60 0 510 LoutGr2 +0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath stroke +grestore +1134 340 0 340 240 288 60 567 0 LoutGr2 +0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath 0.8 setgray fill +grestore + +grestore + +grestore +1701 340 567 340 240 288 60 0 0 LoutGr2 +0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath stroke +grestore +736 340 283 340 240 288 60 284 0 LoutGr2 +0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath 0.8 setgray fill +grestore + +grestore + +grestore + +grestore +end end restore +grestore +0 8455(This)m 495(is)s 724(a)s +909(consequence)s 2207(of)s 2497(the)s 2864(`as)s 3212(wide)s +3753(as)s 4022(possible')s 4937(rule)s 5383(\(Section)s 6255(2.6\).)s +6817(Mark)s 7415(alignment)s 8451(occurs)s 240 fnt83 0 8169(incidentally)m +240 fnt82 1124 8167(,)m 1231(whene)s 6(v)k 3(er)k +2212(the)s 2560(fragments)s 3566(are)s 3913(placed)s 4595(into)s +5020(similar)s 5742(conte)s 3(xts.)k 480 7793(In)m 723(this)s +1106(connection)s 2200(we)s 2521(must)s 3033(also)s 3458(consider)s +4315(the)s 4649(special)s 5354(case)s 5808(of)s 6066(a)s +220 fnt35 6218 7790(@Galle)m 4(y)k 240 fnt82 7103 7793(symbol)m +7850(which)s 8478(shares)s 0 7505(its)m 276(column)s 1051(mark)s +1603(with)s 2085(some)s 2646(other)s 3197(object:)s 220 fnt35 +480 7004(@Galle)m 4(y)k 480 6716(/0.2c)m 480 6428(@SomethingList)m 240 fnt82 +0 5929(\(The)m 220 fnt35 501 5926(@Galle)m 4(y)k 240 fnt82 +1392 5929(may)m 1851(or)s 2104(may)s 2563(not)s 2922(occup)s 2(y)k +3660(an)s 3936(entire)s 4528(component;)s 5698(that)s 6109(doesn')s 4(t)k +6862(matter)s 7525(here.\))s 8177(If)s 8400(incom)s 8998(-)s +0 5641(ing)m 355(components)s 1559(are)s 1901(separated)s 2857(by)s +220 fnt35 3147 5638(//)m 240 fnt82 3327 5641(rather)m 3939(than)s +4404(by)s 220 fnt35 4693 5638(/)m 240 fnt82 4757 5641(,)m +4860(the)s 5204(meaning)s 6076(is)s 6282(so)s 6544(doubtful)s +7405(that)s 7819(this)s 8211(is)s 8416(forbid)s 8998(-)s +0 5353(den.)m 496(In)s 738(f)s 2(act,)k 1186(a)s +1337(g)s 1(alle)k 3(y)k 1957(whose)s 2611(components)s +3804(replace)s 4535(such)s 5017(a)s 220 fnt35 5168 5350(@Galle)m 4(y)k +240 fnt82 6052 5353(must)m 6563(ha)s 4(v)k 3(e)k +7049(a)s 7201(single)s 7814(column)s 8574(mark)s 0 5065(running)m +783(its)s 1043(full)s 1413(length;)s 2108(that)s 2510(is,)s +2760(its)s 3021(components)s 4213(must)s 4722(all)s 4999(share)s +5544(a)s 5694(single)s 6305(column)s 7065(mark.)s 7704(This)s +8164(mark)s 8700(will)s 0 4777(be)m 281(mer)s 4(ged)k +1050(with)s 1530(the)s 1876(column)s 2649(mark)s 3199(passing)s +3969(through)s 4769(each)s 220 fnt35 5262 4774(@Galle)m 4(y)k +240 fnt82 6158 4777(that)m 6574(these)s 7119(components)s 8325(replace;)s +0 4489(all)m 293(the)s 641(objects)s 1369(on)s 1666(the)s +2014(resulting)s 2903(mer)s 4(ged)k 3674(mark)s 4226(will)s +4652(ha)s 4(v)k 3(e)k 5153(equal)s 5726(width.)s +480 4115(The)m 906(root)s 1348(g)s 1(alle)k 3(y)k 15(,)k +2018(where)s 2655(e)s 6(v)k 3(erything)k 3720(collects)s +4497(immediately)s 5742(prior)s 6264(to)s 6500(output,)s 7217(is)s +7424(created)s 8168(automati)s 8998(-)s 0 3827(cally)m 15(,)k +556(not)s 921(by)s 1214(a)s 1379(de\207nition.)s 2459(Its)s +2747(tar)s 4(get)k 3346(is)s 3555(the)s 3902(output)s +4573(\207le,)s 4984(and)s 5387(its)s 5663(object)s 6306(is)s +6515(the)s 6862(entire)s 7460(input,)s 8058(which)s 8699(typ)s +8998(-)s 0 3539(ically)m 584(looks)s 1154(lik)s 2(e)k +1566(this:)s 220 fnt35 480 3038(@P)m 8(ageList)k 480 2750(//)m +480 2462(@T)m 26(e)k 6(xt {)k 480 2174( Body te)m 6(xt of the document ...)k +480 1886(})m 240 fnt82 0 1392(where)m 220 fnt35 639 1389(@P)m 8(ageList)k +240 fnt82 1761 1392(e)m 3(xpands)k 2592(to)s 2830(a)s +2994(sequence)s 3925(of)s 4195(pages)s 4789(containing)s 220 fnt35 +5850 1389(@T)m 26(e)k 6(xtPlace)k 240 fnt82 7067 1392(symbols)m +7914(\(see)s 8352(Section)s 0 1104(1.2\),)m 486(and)s 220 fnt35 +890 1101(@T)m 26(e)k 6(xt)k 240 fnt82 1564 1104(is)m +1774(a)s 1940(g)s 1(alle)k 3(y:)k +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 29 35 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Italic +%%+ font Times-Bold +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +1 LoutMargSet +grestore +240 fnt83 0 13843(2.7.)m 454(Galle)s 7(ys)k 1232(and)s +1658(tar)s 8(g)k 2(ets)k 240 fnt84 8832 13840(29)m +220 fnt35 480 13207(def @T)m 26(e)k 6(xtPlace { @Galle)k 4(y })k +480 12631(def @T)m 26(e)k 6(xt into { @T)k 26(e)k 6(xtPlace&&preceding })k +480 12343( r)m -3(ight x)k 480 12055({)m 480 11767( x)m 480 11479(})m +240 fnt82 0 10985(The)m 428(spot)s 886(v)s 6(acated)k +1668(by)s 1961(a)s 2127(g)s 1(alle)k 3(y)k +2760(\211)s 2940(its)s 3215(in)s 9(v)k 4(ocation)k +4268(point)s 4820(\211)s 4999(becomes)s 5887(a)s 220 fnt35 +6052 10982(@Null)m 240 fnt82 6697 10985(object,)m 7387(so)s 7653(this)s +8048(root)s 8492(g)s 1(alle)k 3(y)k 0 10697(is)m +210(ef)s 6(fecti)k 6(v)k 3(ely)k 220 fnt35 +1269 10694(@P)m 8(ageList)k 240 fnt82 2393 10697(alone,)m 3018(as)s +3269(required.)s 4229(The)s 220 fnt35 4657 10694(@T)m 26(e)k 6(xt)k +240 fnt82 5331 10697(g)m 1(alle)k 3(y)k 5965(will)s +6392(\207nd)s 6823(its)s 7099(\207rst)s 7530(tar)s 4(get)k +8130(preceding)s 0 10409(its)m 276(in)s 9(v)k 4(ocation)k +1330(point,)s 1929(within)s 220 fnt35 2597 10406(@P)m 8(ageList)k +240 fnt82 3661 10409(.)m 480 10035(Printing)m 1308(the)s 1661(root)s +2112(g)s 1(alle)k 3(y)k 2751(on)s 3054(the)s +3407(output)s 4085(\207le)s 4451(is)s 4666(some)s 6(what)k +5696(problematical,)s 7121(because)s 7940(Lout)s 8457(has)s 8833(no)s +0 9747(w)m 2(ay)k 461(of)s 742(kno)s 6(wing)k +1638(ho)s 6(w)k 2109(lar)s 4(ge)k 2648(the)s +3006(paper)s 3607(is.)s 3941(Basser)s 4648(Lout)s 5170(simply)s +5885(prints)s 6490(one)s 6902(root)s 7357(g)s 1(alle)k 3(y)k +8002(component)s 0 9459(per)m 355(page)s 852(\(e)s 3(xcept)k +1601(it)s 1782(skips)s 2314(components)s 3511(of)s 3771(height)s +4418(zero\),)s 5005(and)s 5398(the)s 5735(user)s 6182(is)s +6381(responsible)s 7515(for)s 7842(ensuring)s 8708(that)s 0 9171(each)m +504(component)s 1637(is)s 1856(page-sized.)s 3051(Gaps)s 3603(between)s +4466(root)s 4920(g)s 1(alle)k 3(y)k 5563(components,)s +6836(e)s 6(v)k 3(en)k 7345(unbreakable)s 8580(ones,)s +0 8883(ha)m 4(v)k 3(e)k 501(no)s 794(ef)s 6(fect)k +1390(on)s 1687(the)s 2035(result.)s 480 8509(Basser)m 1204(Lout)s +1744(will)s 2198(promote)s 3079(a)s 3273(component)s 4425(only)s +4933(after)s 5457(an)s 3(y)k 5882(recepti)s 6(v)k 3(e)k +6832(symbols)s 7709(within)s 8405(it)s 8625(ha)s 4(v)k 3(e)k +0 8221(been)m 509(replaced,)s 1426(either)s 2029(by)s 2324(g)s 1(alle)k 3(ys)k +3048(or)s 3308(by)s 220 fnt35 3602 8218(@Null)m 240 fnt82 +4187 8221(,)m 4295(since)s 4842(until)s 5336(then)s 5805(the)s +6154(component)s 7278(is)s 7489(not)s 7855(complete.)s 8896(A)s +0 7933(component)m 1109(which)s 1736(shares)s 2369(a)s 2520(mark)s +3057(with)s 3524(follo)s 6(wing)k 4486(components)s 5679(is)s +5874(held)s 6329(up)s 6607(until)s 7085(the)s 3(y)k +7533(are)s 7865(all)s 8143(complete,)s 0 7645(since)m 547(until)s +1040(then)s 1509(their)s 2006(width)s 2608(is)s 2818(uncertain.)s +480 7271(Consider)m 1409(a)s 1581(page)s 2095(with)s 220 fnt35 +2583 7268(@T)m 26(e)k 6(xtPlace)k 240 fnt82 3806 7271(and)m +220 fnt35 4216 7268(@F)m 6(ootSect)k 240 fnt82 5373 7271(recepti)m 6(v)k 3(e)k +6301(symbols.)s 7268(The)s 7702(rule)s 8135(just)s 8546(gi)s 6(v)k 3(en)k +0 6983(will)m 418(pre)s 6(v)k 3(ent)k 1177(the)s +1517(page)s 2016(from)s 2531(being)s 3108(printed)s 3834(until)s +220 fnt35 4319 6980(@T)m 26(e)k 6(xtPlace)k 240 fnt82 +5528 6983(is)m 5729(replaced)s 6588(by)s 6873(body)s 7399(te)s 3(xt,)k +7852(quite)s 8377(rightly;)s 0 6695(b)m 4(ut)k 220 fnt35 +362 6692(@F)m 6(ootSect)k 240 fnt82 1513 6695(will)m 1939(also)s +2377(pre)s 6(v)k 3(ent)k 3145(its)s 3421(printing,)s +4285(e)s 6(v)k 3(en)k 4785(when)s 5361(there)s +5894(are)s 6241(no)s 6534(footnotes.)s 480 6321(Basser)m 1187(Lout)s +1709(is)s 1930(k)s 2(een)k 2447(to)s 2696(write)s +3253(out)s 3629(pages)s 4235(as)s 4496(soon)s 5016(as)s +5276(possible,)s 6178(to)s 6427(sa)s 4(v)k 3(e)k +6911(memory)s 15(,)k 7811(and)s 8225(it)s 8428(cannot)s +0 6033(af)m 6(ford)k 624(to)s 852(w)s 2(ait)k +1309(fore)s 6(v)k 3(er)k 2038(for)s 2365(non-e)s 3(xistent)k +3592(footnotes.)s 4635(A)s 4854(v)s 6(ariant)k 5559(of)s +5819(the)s 6156(g)s 1(alle)k 3(y)k 6778(concept,)s +7618(called)s 8235(a)s 240 fnt83 8389 6035(for)m 8(cing)k +0 5747(galle)m 7(y)k 240 fnt82 573 5745(,)m 680(is)s +890(introduced)s 1971(to)s 2210(solv)s 3(e)k 2768(this)s +3164(problem.)s 4125(A)s 4355(forcing)s 5098(g)s 1(alle)k 3(y)k +5732(is)s 5942(de\207ned)s 6705(lik)s 2(e)k 7117(this:)s +220 fnt35 480 5244(def @T)m 26(e)k 6(xt f)k 6(orce into { @T)k 26(e)k 6(xtPlace&&preceding })k +480 4956( ...)m 240 fnt82 0 4505(and)m 392(so)s 646(on.)s +1037(When)s 1654(such)s 2138(a)s 2291(g)s 1(alle)k 3(y)k +2913(replaces)s 3734(a)s 220 fnt35 3887 4502(@Galle)m 4(y)k +240 fnt82 4773 4505(symbol,)m 5573(Lout)s 6072(replaces)s 6893(e)s 6(v)k 3(ery)k +7457(recepti)s 6(v)k 3(e)k 8366(symbol)s 0 4217(preceding)m +1004(the)s 220 fnt35 1360 4214(@Galle)m 4(y)k 240 fnt82 +2266 4217(by)m 220 fnt35 2568 4214(@Null)m 240 fnt82 3153 4217(,)m +3268(thus)s 3726(ensuring)s 4611(that)s 5038(as)s 5296(soon)s +5814(as)s 6072(te)s 3(xt)k 6495(enters)s 7124(a)s +7298(page,)s 7865(for)s 8212(e)s 3(xample,)k 0 3929(e)m 6(v)k 3(erything)k +1064(up)s 1354(to)s 1590(and)s 1991(including)s 2945(the)s +3289(preceding)s 4282(page)s 4787(can)s 5173(be)s 5452(printed.)s +6290(This)s 6762(does)s 7249(not)s 7612(tak)s 2(e)k +8061(care)s 8511(of)s 8778(the)s 0 3641(v)m 3(ery)k +479(last)s 873(page,)s 1435(b)s 4(ut)k 1801(Basser)s +2501(Lout)s 3016(replaces)s 3852(all)s 4149(recepti)s 6(v)k 3(e)k +5074(symbols)s 5926(by)s 220 fnt35 6223 3638(@Null)m 240 fnt82 +6872 3641(when)m 7451(it)s 7646(realizes)s 8428(that)s 8850(its)s +0 3353(input)m 552(has)s 922(all)s 1215(been)s 1724(read,)s +2242(thus)s 2692(allo)s 6(wing)k 3576(the)s 3924(last)s +4315(page)s 4823(to)s 5062(print.)s 480 2979(A)m 714(forcing)s +1461(g)s 1(alle)k 3(y)k 2099(causes)s 2779(the)s +3131(Third)s 3724(La)s 3(w)k 4204(to)s 4448(be)s +4734(applied)s 5500(earlier)s 6172(than)s 6646(e)s 3(xpected,)k +7604(and)s 8012(this)s 8413(creates)s 0 2691(tw)m 2(o)k +425(problems.)s 1495(First,)s 2055(the)s 2419(replacement)s 3662(by)s +220 fnt35 3972 2688(@Null)m 240 fnt82 4633 2691(may)m 5114(be)s +5412(premature:)s 6562(a)s 6744(g)s 1(alle)k 3(y)k +7394(may)s 7876(turn)s 8334(up)s 8643(later)s 0 2403(w)m 2(anting)k +869(one)s 1318(of)s 1636(the)s 2032(defunct)s 2856(tar)s 4(gets.)k +3699(Such)s 4283(g)s 1(alle)k 3(ys)k 5054(\(entries)s +5867(in)s 6157(tables)s 6813(of)s 7131(contents)s 8026(are)s +8421(typical)s 0 2115(e)m 3(xamples\))k 1020(are)s 1358(copied)s +2045(into)s 2461(the)s 2801(cross)s 3334(reference)s 4268(database)s +5138(and)s 5534(read)s 5994(in)s 6228(during)s 6897(the)s +7237(ne)s 3(xt)k 7697(run)s 8064(just)s 8460(before)s +0 1827(their)m 488(tar)s 4(gets)k 1161(are)s 1498(closed,)s +2206(and)s 2600(so)s 2856(the)s 3(y)k 3309(\207nd)s +3730(their)s 4217(tar)s 4(gets)k 4891(in)s 5124(the)s +5462(end.)s 5962(Care)s 6459(must)s 6974(be)s 7246(tak)s 2(en)k +7809(to)s 8038(ensure)s 8708(that)s 0 1539(lar)m 4(ge)k +526(g)s 1(alle)k 3(ys)k 1247(such)s 1739(as)s +1986(chapters)s 2829(and)s 3230(sections)s 4047(do)s 4337(not)s +4700(ha)s 4(v)k 3(e)k 5197(defunct)s 5971(tar)s 4(gets,)k +6706(since)s 7250(the)s 7594(cost)s 8036(of)s 8303(cop)s 2(ying)k +0 1251(them)m 538(to)s 777(and)s 1181(from)s 1705(the)s +2053(database)s 2932(is)s 3142(unacceptably)s 4458(high.)s 480 877(It)m +694(is)s 914(actually)s 1734(an)s 2027(o)s 3(v)k 3(er)k 4(-simpli\207cation)k +3901(to)s 4150(say)s 4533(that)s 4961(these)s 5517(replacements)s +6838(occur)s 7439(when)s 8025(the)s 8383(forcing)s 0 589(g)m 1(alle)k 3(y)k +633(replaces)s 1464(its)s 220 fnt35 1738 586(@Galle)m 4(y)k +240 fnt82 2576 589(.)m 2738(What)s 3315(really)s 3910(happens)s +4744(is)s 4952(that)s 5368(from)s 5891(this)s 6285(moment)s +7127(on)s 7422(Lout)s 7932(understands)s +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 30 36 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +%%+ font Times-Italic +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +0 LoutMargSet +grestore +240 fnt84 0 13840(30)m 240 fnt83 7257 13843(Chapter)m 8107(2.)s +8381(Details)s 240 fnt82 0 13205(that)m 414(it)s 602(has)s +968(the)s 1311(right)s 1818(to)s 2053(mak)s 2(e)k +2621(these)s 3163(replacements,)s 4526(and)s 4926(it)s 5114(will)s +5535(do)s 5824(each)s 6315(one)s 6713(at)s 6940(the)s +7284(\207rst)s 7711(moment)s 8550(when)s 0 12917(not)m 369(doing)s +972(it)s 1168(w)s 2(ould)k 1827(hold)s 2315(things)s +2955(up.)s 3363(So)s 3673(there)s 4210(is)s 4423(a)s +4593(short)s 5135(period)s 5808(of)s 6083(grace)s 6660(when)s +7240(g)s 1(alle)k 3(ys,)k 8024(such)s 8524(as)s +8778(the)s 0 12629(entries)m 687(in)s 930(tables)s 1538(of)s +1809(contents)s 2657(just)s 3062(alluded)s 3824(to,)s 4117(can)s +4506(sneak)s 5112(into)s 5537(these)s 6084(recepti)s 6(v)k 3(e)k +7006(symbols.)s 480 12255(The)m 220 fnt35 902 12252(into)m 240 fnt82 +1302 12255(and)m 220 fnt35 1699 12252(f)m 6(orce into)k 240 fnt82 +2642 12255(forms)m 3243(are)s 3584(actually)s 4387(just)s 4786(abbre)s 6(viations)k +6112(for)s 6444(the)s 6785(true)s 7206(w)s 2(ay)k +7650(that)s 8062(g)s 1(alle)k 3(ys)k 8779(are)s +0 11967(de\207ned,)m 806(which)s 1442(is)s 1646(by)s 1934(gi)s 6(ving)k +2586(the)s 2928(symbol)s 3682(that)s 4094(is)s 4297(to)s +4530(be)s 4806(a)s 4966(g)s 1(alle)k 3(y)k +5594(a)s 5753(parameter)s 6761(or)s 7014(nested)s 7677(de\207nition)s +8644(with)s 0 11679(the)m 348(special)s 1066(name)s 220 fnt35 +1640 11676(@T)m 26(arget)k 240 fnt82 2467 11679(:)m 220 fnt35 +480 11178(def @T)m 26(e)k 6(xt)k 480 10890( r)m -3(ight x)k +480 10602({)m 480 10314( def @T)m 26(arget { @T)k 26(e)k 6(xtPlace&&preceding })k +480 9738( x)m 480 9450(})m 240 fnt82 0 8956(A)m 237(forcing)s +988(g)s 1(alle)k 3(y)k 1630(is)s 1848(obtained)s +2738(by)s 3039(using)s 220 fnt35 3619 8953(&&&)m 240 fnt82 +4121 8956(instead)m 4864(of)s 220 fnt35 5143 8953(&&)m 240 fnt82 +5431 8956(.)m 220 fnt35 5602 8953(@T)m 26(arget)k 240 fnt82 +6497 8956(may)m 6971(be)s 7261(an)s 7552(arbitrary)s 8435(object,)s +0 8668(pro)m 3(vided)k 908(that)s 1329(it)s 1524(yields)s +2149(such)s 2648(a)s 2817(cross)s 3362(reference)s 4307(when)s +4886(e)s 6(v)k 6(aluated.)k 5957(In)s 6216(this)s +6615(w)s 2(ay)k 15(,)k 7107(dif)s 6(ferent)k +7985(in)s 9(v)k 4(ocations)k 0 8380(may)m 466(ha)s 4(v)k 3(e)k +967(dif)s 6(ferent)k 1842(tar)s 4(gets.)k 480 8006(The)m +904(forcing)s 1643(g)s 1(alle)k 3(y)k 2273(ef)s 6(fect)k +2865(can)s 3249(be)s 3527(obtained)s 4405(in)s 4644(another)s +5417(w)s 2(ay)k 15(,)k 5901(by)s 6191(replacing)s +7129(the)s 220 fnt35 7473 8003(@Galle)m 4(y)k 240 fnt82 +8366 8006(symbol)m 0 7718(to)m 245(which)s 893(the)s 1247(g)s 1(alle)k 3(y)k +1887(is)s 2103(attached)s 2964(by)s 220 fnt35 3264 7715(@F)m 6(orceGalle)k 4(y)k +240 fnt82 4657 7718(.)m 4827(The)s 5261(adv)s 6(antage)k +6287(of)s 6565(this)s 6967(form)s 7497(is)s 7713(that)s +8137(the)s 8492(g)s 1(alle)k 3(y)k 0 7430(can)m +389(then)s 858(be)s 1140(forcing)s 1883(at)s 2115(some)s +2676(places)s 3324(and)s 3728(not)s 4094(at)s 4326(others,)s +5017(using)s 5589(the)s 5937(formula)s 220 fnt35 480 6929(def @SomePlace r)m -3(ight x)k +480 6641({)m 480 6353( x @Case {)m 480 6065( nof)m 6(orce @Y)k 4(ield @Galle)k 4(y)k +480 5777( f)m 6(orce @Y)k 4(ield @F)k 6(orceGalle)k 4(y)k +480 5489( })m 480 5201(})m 240 fnt82 0 4707(No)m 6(w)k +514(a)s 680(g)s 1(alle)k 3(y)k 1314(may)s +1780(ha)s 4(v)k 3(e)k 220 fnt35 2281 4704(@SomePlace)m +240 fnt82 3677 4707(for)m 4015(its)s 4291(tar)s 4(get,)k +4937(and)s 5341(if)s 5558(it)s 5750(happens)s 6586(to)s +6825(attach)s 7452(to)s 220 fnt35 480 4206(@SomePlace f)m 6(orce)k +240 fnt82 0 3751(it)m 192(will)s 618(ha)s 4(v)k 3(e)k +1119(the)s 1467(ef)s 6(fect)k 2063(of)s 2334(a)s +2500(forcing)s 3243(g)s 1(alle)k 3(y)k 15(,)k +3915(while)s 4502(if)s 4719(it)s 4911(happens)s 5747(to)s +5986(attach)s 6613(to)s 220 fnt35 480 3250(@SomePlace nof)m 6(orce)k +240 fnt82 0 2795(it)m 192(will)s 618(not.)s 480 2421(Although)m +1436(it)s 1621(doesn')s 4(t)k 2374(matter)s 3036(whether)s +3859(a)s 4018(g)s 1(alle)k 3(y)k 4645(is)s +4848(declared)s 5708(as)s 5951(a)s 6110(forcing)s 6846(g)s 1(alle)k 3(y)k +7473(or)s 7725(merely)s 8435(arri)s 6(v)k 3(es)k +0 2133(at)m 244(a)s 220 fnt35 422 2130(@F)m 6(orceGalle)k 4(y)k +240 fnt82 1887 2133(symbol)m 2659(from)s 3195(the)s 3555(point)s +4119(of)s 4402(vie)s 6(w)k 4928(of)s 5211(the)s +5571(ef)s 6(fect)k 6179(on)s 6488(nearby)s 7205(tar)s 4(gets,)k +7956(there)s 8501(is)s 8724(one)s 0 1845(w)m 2(ay)k +446(in)s 683(which)s 1319(Lout)s 1825(treats)s 2387(the)s +2729(tw)s 2(o)k 3133(cases)s 3682(dif)s 6(ferently)k 15(.)k +4827(If)s 5051(a)s 5211(forcing)s 5948(g)s 1(alle)k 3(y')k 13(s)k +6733(\207rst)s 7158(component)s 8276(does)s 8760(not)s 0 1557(\207t)m +264(into)s 695(the)s 1048(a)s 4(v)k 6(ailable)k +1962(space,)s 2606(that)s 3029(component)s 4159(will)s 4590(be)s +4878(scaled)s 5539(v)s 3(ertically)k 6496(until)s 6995(it)s +7192(does.)s 7801(The)s 8235(rationale)s 0 1269(for)m 343(this)s +744(is)s 959(that)s 1382(forcing)s 2130(g)s 1(alle)k 3(ys)k +2860(are)s 3212(meant)s 3861(to)s 4105(carry)s 4654(the)s +5007(b)s 4(ulk)k 5496(of)s 5772(the)s 6125(document)s +7134(and)s 7543(cannot)s 8246(af)s 6(ford)k 8887(to)s +0 981(be)m 295(held)s 779(up)s 1086(because)s 1913(the)s +2275(user)s 2747(has)s 3131(inadv)s 3(ertently)k 4456(included)s +5352(an)s 5649(o)s 3(v)k 3(er)k 4(-high)k +6640(component,)s 7825(which)s 8481(for)s 8833(all)s 0 693(Lout)m +514(kno)s 6(ws)k 1188(to)s 1430(the)s 1781(contrary)s +2634(may)s 3103(not)s 3472(\207t)s 3734(on)s 4034(an)s 3(y)k +4433(page.)s 5052(If)s 5285(this)s 5684(scaling)s 6417(is)s +6630(not)s 6999(w)s 2(anted)k 7749(b)s 4(ut)k +8114(forcing)s 8860(is,)s 0 405(the)m 348(g)s 1(alle)k 3(y)k +982(may)s 1448(be)s 1730(declared)s 2597(not)s 2963(forcing)s +3706(b)s 4(ut)k 4068(all)s 4361(its)s 4637(tar)s 4(gets)k +5320(may)s 5786(be)s 6068(set)s 6393(to)s 6632(contain)s +220 fnt35 7393 402(@F)m 6(orceGalle)k 4(y)k 240 fnt82 +8786 405(.)m +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 31 37 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Italic +%%+ font Times-Bold +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +1 LoutMargSet +grestore +240 fnt83 0 13843(2.7.)m 454(Galle)s 7(ys)k 1232(and)s +1658(tar)s 8(g)k 2(ets)k 240 fnt84 8839 13840(31)m +240 fnt82 480 13205(W)m 9(ithin)k 1197(a)s 1368(g)s 1(alle)k 3(y)k 15(,)k +2045(a)s 2216(symbol)s 2981(whose)s 3654(name)s 4233(is)s +220 fnt35 4448 13202(@Enclose)m 240 fnt82 5508 13205(has)m 5883(a)s +6054(special)s 6777(meaning:)s 7772(when)s 8353(compo)s 8998(-)s +0 12917(nents)m 556(of)s 827(the)s 1175(g)s 1(alle)k 3(y)k +1810(replace)s 2555(a)s 220 fnt35 2721 12914(@Galle)m 4(y)k +240 fnt82 3619 12917(or)m 220 fnt35 3879 12914(@F)m 6(orceGalle)k 4(y)k +240 fnt82 5332 12917(symbol,)m 6144(that)s 6562(symbol)s 7323(is)s +7533(\207rst)s 7964(replaced)s 8832(by)s 220 fnt35 0 12626(@Enclose)m +1055(@Galle)s 4(y)k 240 fnt82 1953 12629(or)m 220 fnt35 +2212 12626(@Enclose)m 3267(@F)s 6(orceGalle)k 4(y)k 240 fnt82 +4660 12629(.)m 4824(F)s 3(or)k 5213(e)s 3(xample,)k +220 fnt35 480 12128(def @Figure into @FigurePlace&&f)m 6(ollo)k 3(wing)k 480 11840( r)m -3(ight @Body)k +480 11552({)m 480 11264( def @Enclose)m 480 10976( r)m -3(ight x)k 480 10688( {)m +480 10400( @Bo)m 6(x x)k 480 10112( })m 480 9536( @Body)m 480 9248(})m +240 fnt82 0 8754(causes)m 705(each)s 220 fnt35 1230 8751(@Galle)m 4(y)k +240 fnt82 2159 8754(or)m 220 fnt35 2448 8751(@F)m 6(orceGalle)k 4(y)k +240 fnt82 3932 8754(symbol)m 4722(that)s 5171(recei)s 6(v)k 3(es)k +6025(components)s 7264(of)s 7565(g)s 1(alle)k 3(y)k +220 fnt35 8230 8751(@Figure)m 240 fnt82 0 8466(to)m 250(be)s +544(replaced)s 1423(by)s 220 fnt35 1728 8463(@Bo)m 6(x @Galle)k 4(y)k +240 fnt82 3294 8466(or)m 220 fnt35 3565 8463(@Bo)m 6(x @F)k 6(orceGalle)k 4(y)k +240 fnt82 5614 8466(,)m 5732(assuming)s 6701(an)s 6996(appropriate)s +8152(de\207nition)s 0 8178(of)m 220 fnt35 311 8175(@Bo)m 6(x.)k +240 fnt82 1109 8178(This)m 1626(is)s 1876(useful,)s 2608(for)s +2987(e)s 3(xample,)k 3941(when)s 4558(producing)s 5623(multi-page)s +6754(box)s 3(ed)k 7436(displays,)s 8368(\207gures,)s 0 7890(and)m +404(tables.)s 480 7516(An)m 220 fnt35 861 7513(@Enclose)m 240 fnt82 +1947 7516(symbol)m 2739(may)s 3236(ha)s 4(v)k 3(e)k +3769(only)s 4280(one)s 4714(parameter)s 9(,)k 5797(which)s +6471(must)s 7027(be)s 7341(a)s 7538(right)s 8081(parameter)s 13(.)k +0 7228(It)m 213(w)s 2(ould)k 877(not)s 1252(mak)s 2(e)k +1833(sense)s 2416(to)s 2664(allo)s 6(w)k 3252(more)s +3808(parameters,)s 4971(since)s 5527(there)s 6069(is)s 6288(no)s +6590(suitable)s 7398(v)s 6(alue)k 7975(to)s 8223(assign)s +8887(to)s 0 6940(them.)m 628(Ho)s 6(we)k 6(v)k 3(er)k 9(,)k +1574(the)s 220 fnt35 1908 6937(@Enclose)m 240 fnt82 2949 6940(symbol)m +3695(may)s 4147(contain)s 4894(inner)s 5431(de\207nitions,)s 6534(and)s +6924(it)s 7102(may)s 7554(mak)s 2(e)k 8112(use)s +8473(of)s 8729(an)s 3(y)k 0 6652(symbol)m 761(that)s +1181(is)s 1393(a)s 4(v)k 6(ailable)k 2303(at)s +2537(that)s 2956(point,)s 3557(in)s 3802(the)s 4152(usual)s +4714(w)s 2(ay)k 15(.)k 5262(The)s 220 fnt35 +5691 6649(@Enclose)m 240 fnt82 6748 6652(symbol)m 7510(may)s 7978(be)s +8262(a)s 8430(named)s 0 6364(parameter)m 1016(\(itself)s 1645(with)s +2130(a)s 2298(right)s 2812(parameter\))s 3896(of)s 4169(the)s +4520(g)s 1(alle)k 3(y)k 5156(symbol,)s 5971(rather)s +6589(than)s 7060(an)s 7346(inner)s 7899(de\207nition)s 8876(as)s +0 6076(sho)m 6(wn)k 677(abo)s 3(v)k 3(e,)k +1350(if)s 1567(desired.)s 480 5702(It)m 696(mak)s 2(es)k +1367(sense)s 1952(for)s 2302(sorted)s 2955(g)s 1(alle)k 3(ys)k +3690(containing)s 4765(a)s 220 fnt35 4942 5699(@Merge)m 240 fnt82 +5850 5702(symbol)m 6621(\(Section)s 7486(2.8\))s 7925(to)s 8175(also)s +8625(ha)s 4(v)k 3(e)k 0 5414(an)m 220 fnt35 +277 5411(@Enclose)m 240 fnt82 1326 5414(symbol.)m 2188(The)s 2610(meaning)s +3480(is)s 3684(that)s 4095(after)s 4585(all)s 4872(mer)s 4(ging)k +5711(is)s 5915(done,)s 6481(each)s 6970(resulting)s 7852(g)s 1(alle)k 3(y)k +8480(has)s 8843(an)s 220 fnt35 0 5123(@Enclose)m 240 fnt82 +1061 5126(symbol)m 1827(which)s 2476(is)s 2692(applied)s 3461(in)s +3710(the)s 4064(usual)s 4631(w)s 2(ay)k 15(.)k +5183(The)s 5618(v)s 6(alue)k 6192(of)s 6469(this)s +220 fnt35 6872 5123(@Enclose)m 240 fnt82 7933 5126(symbol)m 8700(will)s +0 4838(be)m 274(the)s 614(v)s 6(alue)k 1174(of)s +1437(an)s 220 fnt35 1712 4835(@Enclose)m 240 fnt82 2758 4838(symbol)m +3510(from)s 4026(one)s 4420(of)s 4683(the)s 5022(contrib)s 4(uting)k +6232(g)s 1(alle)k 3(ys,)k 7004(b)s 4(ut)k +7358(e)s 3(xactly)k 8091(which)s 8724(one)s 0 4550(is)m +210(not)s 576(de\207ned.)s 1445(So)s 1751(it)s 1943(is)s +2153(safest)s 2756(if)s 2973(all)s 3266(such)s 220 fnt35 +3762 4547(@Enclose)m 240 fnt82 4817 4550(symbols)m 5666(produce)s 6493(the)s +6841(same)s 7388(result.)s 480 4176(A)m 220 fnt35 709 4173(f)m 6(ollo)k 3(wing)k +240 fnt82 1597 4176(g)m 1(alle)k 3(y)k 2229(may)s +2693(f)s 2(ail)k 3061(to)s 3299(\207nd)s 3728(a)s +3892(\207rst)s 4321(tar)s 4(get)k 4918(lying)s 5461(in)s +5703(a)s 5867(follo)s 6(wing)k 6842(component)s 7964(of)s +8233(the)s 8579(same)s 0 3888(g)m 1(alle)k 3(y)k +634(as)s 884(its)s 1159(in)s 9(v)k 4(ocation)k +2213(point.)s 2868(This)s 3344(is)s 3553(a)s 3719(de\207cienc)s 3(y)k +4752(of)s 5023(Basser)s 5719(Lout,)s 6278(which)s 6919(occurs)s +7594(if)s 7810(the)s 8158(tar)s 4(get)k 8756(has)s +0 3600(not)m 356(been)s 855(read)s 1313(from)s 1827(input)s +2369(at)s 2590(the)s 2928(time)s 3398(the)s 3735(g)s 1(alle)k 3(y)k +4359(tries)s 4810(to)s 5038(\207nd)s 5459(it.)s 5745(A)s +5964(w)s 2(orkaround)k 7167(is)s 7367(to)s 7595(use)s +7960(a)s 220 fnt35 8115 3597(preceding)m 240 fnt82 0 3312(g)m 1(alle)k 3(y)k +634(instead,)s 1418(de\207ned)s 2181(lik)s 2(e)k 2593(this:)s +220 fnt35 480 2811(def @A)m 6(Galle)k 4(y into { @A)k 6(Galle)k 4(yPlace&&preceding })k +480 2523( r)m -3(ight @Body)k 480 2235({)m 480 1947( //1.1b)m 480 1659( @Body)m +480 1371(})m 240 fnt82 0 877(and)m 404(in)s 9(v)k 4(ok)k 2(ed)k +1219(lik)s 2(e)k 1631(this:)s +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 32 38 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +%%+ font Times-Italic +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +0 LoutMargSet +grestore +240 fnt84 0 13840(32)m 240 fnt83 7257 13843(Chapter)m 8107(2.)s +8381(Details)s 220 fnt35 480 13207(@A)m 6(Galle)k 4(yPlace | @A)k 6(Galle)k 4(y { content of galle)k 4(y })k +480 12919(//)m 480 12631(...)m 480 12343(@A)m 6(Galle)k 4(yPlace)k +240 fnt82 0 11845(The)m 419(\207rst)s 220 fnt35 841 11842(@A)m 6(Galle)k 4(yPlace)k +240 fnt82 2411 11845(recei)m 6(v)k 3(es)k 3226(only)s +3696(the)s 4035(initial)s 4636(empty)s 5279(object,)s 5960(since)s +6498(the)s 220 fnt35 6836 11842(//1.1b)m 240 fnt82 7428 11845(forces)m +8052(a)s 8209(split;)s 8722(and)s 0 11557(the)m 348(Second)s +1111(La)s 3(w)k 1587(puts)s 2037(Basser)s 2734(Lout)s +3246(on)s 3543(the)s 3891(right)s 4402(track)s 4940(thereafter)s 13(.)k +240 fnt84 0 10764(2.8.)m 471(Sorted)s 1203(galleys)s 240 fnt82 +480 10287(When)m 1128(footnotes)s 2088(are)s 2455(placed)s 3156(at)s +3407(the)s 3775(bottom)s 4532(of)s 4823(a)s 5008(page,)s +5586(the)s 3(y)k 6069(appear)s 6785(there)s 7337(in)s +7600(\207rst)s 8050(come,)s 8695(\207rst)s 0 9999(serv)m 3(ed)k +674(order)s 13(.)k 1324(T)s 19(o)k 1618(mak)s 2(e)k +2185(g)s 1(alle)k 3(ys)k 2903(appear)s 3595(in)s +3832(sorted)s 4469(order)s 9(,)k 5065(as)s 5310(is)s +5514(needed)s 6245(in)s 6482(bibliographies)s 7896(and)s 8294(inde)s 3(x)k 3(es,)k +0 9711(a)m 178(parameter)s 1205(or)s 1477(nested)s 2158(de\207nition)s +3145(with)s 3640(the)s 4000(special)s 4731(name)s 220 fnt35 +5318 9708(@K)m 8(e)k 4(y)k 240 fnt82 5977 9711(is)m +6200(added)s 6843(to)s 7094(the)s 7455(g)s 1(alle)k 3(y)k +8102(de\207nition,)s 0 9423(lik)m 2(e)k 412(this:)s 220 fnt35 +480 8972(def @Inde)m 6(xEntr)k -6(y into { @Inde)k 6(xPlace&&f)k 6(ollo)k 3(wing })k +480 8684( left @K)m 8(e)k 4(y)k 480 8396( r)m -3(ight x)k +480 8108({ x })m 0 7611(@K)m 8(e)k 4(y)k 240 fnt82 +674 7614(must)m 1226(be)s 1535(set)s 1887(to)s 2153(a)s +2346(simple)s 3066(w)s 2(ord,)k 3690(or)s 3976(se)s 6(v)k 3(eral)k +4725(w)s 2(ords)k 5386(with)s 5895(nothing)s 6707(more)s +7281(comple)s 3(x)k 8184(than)s 8681(font)s 0 7326(changes)m +822(within)s 1490(them,)s 2075(when)s 2651(the)s 2999(g)s 1(alle)k 3(y)k +3633(is)s 3843(in)s 9(v)k 4(ok)k 2(ed:)k +220 fnt35 480 6825({ cities compare } @Inde)m 6(xEntr)k -6(y { cities)k 3(, compar)k -3(ison of)k 6(, 27 })k +240 fnt82 0 6327(and)m 404(this)s 800(k)s 2(e)k 3(y)k +1195(is)s 1405(used)s 1902(to)s 2141(sort)s 2559(the)s +2907(g)s 1(alle)k 3(ys.)k 480 5953(If)m 707(se)s 6(v)k 3(eral)k +1425(sorted)s 2063(g)s 1(alle)k 3(ys)k 2783(with)s +3261(the)s 3605(same)s 4148(k)s 2(e)k 3(y)k +4539(are)s 4882(sent)s 5323(to)s 5558(the)s 5902(same)s +6445(place,)s 7052(the)s 7396(def)s 2(ault)k 8113(beha)s 4(viour)k +0 5665(is)m 253(to)s 536(print)s 1091(only)s 1615(the)s +2007(\207rst)s 2481(of)s 2796(them;)s 3430(the)s 3822(assumption)s +5013(is)s 5266(that)s 5728(the)s 6120(others)s 6799(are)s +7190(probably)s 8139(unw)s 2(anted)k 0 5377(duplicates.)m 1146(This)s +1636(holds)s 2220(good)s 2772(for)s 3123(sorted)s 3779(reference)s +4736(lists,)s 5241(for)s 5593(e)s 3(xample:)k 6579(we)s +6928(don')s 4(t)k 7503(w)s 2(ant)k 8040(tw)s 2(o)k +8464(copies)s 0 5089(of)m 273(a)s 442(reference)s 1388(just)s +1796(because)s 2611(we)s 2949(happen)s 3701(to)s 3943(cite)s +4345(it)s 4540(twice.)s 5224(Ho)s 6(we)k 6(v)k 3(er)k 9(,)k +6187(the)s 6537(other)s 7091(common)s 7989(e)s 3(xample)k +8855(of)s 0 4801(sorted)m 642(g)s 1(alle)k 3(ys,)k +1422(inde)s 3(x)k 2006(entries,)s 2749(requires)s 3569(something)s +4619(dif)s 6(ferent:)k 240 fnt83 5600 4803(mer)m 8(g)k 2(ed)k +240 fnt82 6374 4801(g)m 1(alle)k 3(ys.)k 480 4427(Suppose)m +1348(that)s 1766(at)s 1998(some)s 2559(point)s 3111(of)s +3382(the)s 3730(document)s 4734(we)s 5069(insert)s 5659(the)s +6007(inde)s 3(x)k 6591(entry)s 220 fnt35 480 3926(aardv)m 5(ar)k -3(ks @Inde)k 6(xEntr)k -6(y { Aardv)k 5(ar)k -3(ks)k 3(, 23 })k +240 fnt82 0 3428(while)m 587(at)s 819(another)s 1596(point)s +2148(we)s 2483(insert)s 220 fnt35 480 2927(aardv)m 5(ar)k -3(ks @Inde)k 6(xEntr)k -6(y { Aardv)k 5(ar)k -3(ks)k 3(, 359 })k +240 fnt82 0 2429(Ho)m 6(w)k 505(the)s 843(page)s +1341(numbers)s 2206(are)s 2544(w)s 2(ork)k 2(ed)k +3306(out)s 3662(is)s 3862(not)s 4219(rele)s 6(v)k 6(ant)k +5026(here.)s 5591(Clearly)s 6338(we)s 6664(w)s 2(ould)k +7309(lik)s 2(e)k 7711(to)s 7940(mer)s 4(ge)k +8579(these)s 0 2141(tw)m 2(o)k 410(entries)s 1097(into)s +1522(one)s 1924(entry)s 2469(that)s 2887(comes)s 3549(out)s +3915(as)s 480 1636(Aardv)m 6(arks, 23, 359)k 0 1152(The)m 428(follo)s 6(wing)k +1405(de\207nition)s 2379(will)s 2805(mer)s 4(ge)k 3454(tw)s 2(o)k +3864(objects)s 4592(in)s 4835(this)s 5231(w)s 2(ay:)k + +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 33 39 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Italic +%%+ font Times-Bold +%%+ font Helvetica +%%+ font Symbol +/pgsave save def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +1 LoutMargSet +grestore +240 fnt83 0 13843(2.8.)m 454(Sorted)s 1145(galle)s 7(ys)k +240 fnt84 8833 13840(33)m 220 fnt35 480 13207(def @Merge left x r)m -3(ight y)k +480 12919({)m 480 12631( {x @Rump y} @Case)m 480 12343( {)m 480 12055( "" @Y)m 4(ield x)k +480 11767( else @Y)m 4(ield { x, x @Rump y })k 480 11479( })m 480 11191(})m 240 fnt82 +0 10697(The)m 220 fnt35 429 10694(@Rump)m 240 fnt82 1290 10697(symbol)m +2051(is)s 2262(the)s 2611(subject)s 3349(of)s 3621(Section)s +4396(3.24;)s 4929(this)s 5326(says)s 5790(`if)s 6087(the)s +6436(tw)s 2(o)k 6847(things)s 7484(to)s 7724(be)s +8007(mer)s 4(ged)k 8779(are)s 0 10409(equal,)m 622(the)s +967(result)s 1553(is)s 1760(one)s 2158(of)s 2426(them;)s +3012(otherwise)s 3994(it)s 4182(is)s 4389(the)s 4733(\207rst)s +5161(follo)s 6(wed)k 6059(by)s 6350(a)s 6512(comma)s +7273(and)s 7673(space)s 8257(and)s 8657(then)s 0 10121(the)m +355(rump)s 921(of)s 1200(the)s 1556(second.)s 16(')k +2445(Our)s 2885(only)s 3372(problem)s 4237(is)s 4455(that)s +4881(this)s 5285(symbol)s 6053(has)s 6430(to)s 6677(be)s +6967(applied)s 7737(to)s 7984(tw)s 2(o)k 8402(g)s 1(alle)k 3(ys)k +0 9833(from)m 524(widely)s 1229(separated)s 2189(parts)s 2704(of)s +2975(the)s 3323(document.)s 480 9459(Lout)m 993(mak)s 2(es)k +1654(this)s 2052(possible)s 2893(by)s 3189(the)s 3538(follo)s 6(wing)k +4517(special)s 5236(rule:)s 5775(if)s 5993(a)s 6161(sorted)s +6804(g)s 1(alle)k 3(y)k 7440(contains)s 8289(a)s +8457(nested)s 0 9171(de\207nition)m 965(of)s 1227(a)s 1383(symbol)s +2134(whose)s 2793(name)s 3357(is)s 220 fnt35 3558 9168(@Merge)m +240 fnt82 4446 9171(\()m 220 fnt35 4519 9168(@Merge)m 240 fnt82 +5406 9171(must)m 5922(ha)s 4(v)k 3(e)k 6414(just)s +6809(tw)s 2(o)k 7210(parameters,)s 8355(left)s 8722(and)s +0 8883(right\),)m 643(and)s 1054(if)s 1277(that)s 1702(sorted)s +2350(g)s 1(alle)k 3(y)k 2991(is)s 3207(preceded)s +4135(in)s 4384(the)s 4739(list)s 5096(of)s 5374(sorted)s +6022(g)s 1(alle)k 3(ys)k 6753(destined)s 7614(for)s +7959(some)s 8527(tar)s 4(get)k 0 8595(by)m 300(another)s +1084(sorted)s 1733(g)s 1(alle)k 3(y)k 2374(with)s +2863(the)s 3217(same)s 3771(k)s 2(e)k 3(y)k 15(,)k +4211(then)s 4687(rather)s 5310(than)s 5785(being)s 6377(discarded,)s +7407(the)s 7762(second)s 8492(g)s 1(alle)k 3(y)k +0 8307(is)m 210(mer)s 4(ged)k 981(into)s 1406(the)s +1754(\207rst)s 2185(using)s 2757(the)s 220 fnt35 3105 8304(@Merge)m +240 fnt82 4002 8307(symbol.)m 480 7933(The)m 909(natural)s 1629(thing)s +2175(to)s 2416(do)s 2711(when)s 3288(more)s 3837(than)s +4307(tw)s 2(o)k 4719(g)s 1(alle)k 3(ys)k +5445(ha)s 4(v)k 3(e)k 5947(the)s 6297(same)s +6845(k)s 2(e)k 3(y)k 7242(is)s 7454(to)s +7694(mer)s 4(ge)k 8345(the)s 8695(\207rst)s 0 7645(tw)m 2(o,)k +477(then)s 959(mer)s 4(ge)k 1621(the)s 1982(third)s +2504(with)s 2999(the)s 3360(result)s 3963(of)s 4247(that,)s +4725(then)s 5207(the)s 5568(fourth)s 6222(with)s 6717(the)s +7078(result)s 7681(of)s 7965(that,)s 8443(and)s 8860(so)s +0 7357(on.)m 403(F)s 3(or)k 790(ef\207cienc)s 3(y)k +1781(reasons)s 2547(be)s 3(yond)k 3306(our)s 3684(scope)s +4283(here,)s 4799(Lout)s 5309(does)s 5797(the)s 6144(mer)s 4(ging)k +6988(in)s 7229(a)s 7393(dif)s 6(ferent)k 8266(order:)s +8934(it)s 0 7069(mer)m 4(ges)k 240 fnt83 736 7071(n)m +240 fnt82 909 7069(g)m 1(alle)k 3(ys)k 1632(by)s +1925(mer)s 4(ging)k 2770(the)s 3116(\207rst)s 240 fnt78 +3592 7027(\353)m 240 fnt83 3685 7071(n)m 240 fnt78 3809 7063(/)m +3881(2)s 4006 7027(\373)m 240 fnt82 4197 7069(together)m 9(,)k +5077(then)s 5545(the)s 5892(last)s 240 fnt78 6327 7039(\351)m +240 fnt83 6420 7071(n)m 240 fnt78 6545 7063(/)m 6617(2)s +6741 7039(\371)m 240 fnt82 6933 7069(together)m 9(,)k 7813(then)s +8280(mer)s 4(ging)k 0 6781(the)m 337(result.)s 1019(Of)s +1332(course,)s 2051(if)s 2257(the)s 220 fnt35 2593 6778(@Merge)m +240 fnt82 3479 6781(symbol)m 4227(is)s 4426(associati)s 6(v)k 3(e)k +5509(this)s 5894(has)s 6252(the)s 6589(same)s 7124(ef)s 6(fect.)k +7813(The)s 220 fnt35 8229 6778(@Merge)m 240 fnt82 0 6493(symbol)m +758(abo)s 3(v)k 3(e)k 1377(is)s 1584(not)s +1947(strictly)s 2660(associati)s 6(v)k 3(e,)k 3803(b)s 4(ut)k +4162(it)s 4351(is)s 4559(close)s 5103(enough)s 5863(in)s +6103(practice.)s 7019(The)s 7444(total)s 7920(time)s 8397(it)s +8586(tak)s 2(es)k 0 6205(to)m 252(mer)s 4(ge)k +240 fnt83 915 6207(n)m 240 fnt82 1102 6205(g)m 1(alle)k 3(ys)k +1840(with)s 2335(equal)s 2922(k)s 2(e)k 3(ys)k +3421(is)s 240 fnt83 3644 6207(O)m 240 fnt78 3838 6199(\()m +168 fnt78 4049 6298(2)m 240 fnt83 3935 6207(n)m 240 fnt78 +4155 6199(\))m 240 fnt82 4294 6205(or)m 4567(some)s 6(what)k +5605(higher)s 6289(\(b)s 4(ut)k 6744(al)s 2(w)k 2(ays)k +7468(polynomial)s 8627(in)s 240 fnt83 8884 6207(n)m 240 fnt82 +8998 6205(\))m 0 5917(depending)m 1053(on)s 1353(ho)s 6(w)k +1816(man)s 3(y)k 2402(times)s 2972(the)s 3323(parameters)s +4424(occur)s 5017(within)s 5688(the)s 6038(body)s 6575(of)s +220 fnt35 6849 5914(@Merge)m 240 fnt82 7686 5917(;)m 7800(to)s +8042(do)s 8337(it)s 8532(in)s 8778(the)s 0 5629(natural)m +718(linear)s 1321(order)s 1885(w)s 2(ould)k 2540(tak)s 2(e)k +2992(Lout)s 3504(e)s 3(xponential)k 4672(time.)s 240 fnt84 +0 4836(2.9.)m 471(Horizontal)s 1628(galleys)s 240 fnt82 480 4359(All)m +846(the)s 1201(g)s 1(alle)k 3(ys)k 1932(so)s +2205(f)s 2(ar)k 2534(ha)s 4(v)k 3(e)k +3042(been)s 240 fnt83 3557 4361(vertical)m 4353(galle)s 7(ys)k +240 fnt82 5018 4359(:)m 5191(g)s 1(alle)k 3(ys)k +5922(whose)s 6597(components)s 7812(are)s 8166(separated)s 0 4071(by)m +320(v)s 3(ertical)k 1114(concatenation)s 2525(symbols.)s 3514(There)s +4154(are)s 4527(also)s 4992(horizontal)s 6043(g)s 1(alle)k 3(ys,)k +6849(whose)s 7544(components)s 8779(are)s 0 3783(separated)m 951(by)s +1235(the)s 1574(horizontal)s 2588(concatenation)s 3963(operator)s 220 fnt35 +4810 3780(&)m 240 fnt82 5002 3783(\(or)m 5331(equi)s 6(v)k 6(alently)k 15(,)k +6583(by)s 6867(spaces\).)s 7725(These)s 8342(w)s 2(ork)k +8883(in)s 0 3495(the)m 346(same)s 891(w)s 2(ay)k +1340(as)s 1588(v)s 3(ertical)k 2353(g)s 1(alle)k 3(ys,)k +3131(e)s 3(xcept)k 3810(for)s 4146(the)s 4492(change)s +5224(of)s 5493(direction.)s 6504(F)s 3(or)k 6891(e)s 3(xample,)k +7803(the)s 8149(follo)s 6(wing)k 0 3207(de\207nes)m 730(the)s +1079(equi)s 6(v)k 6(alent)k 2124(of)s 2396(an)s +2681(ordinary)s 3546(outdented)s 4549(paragraph,)s 5613(e)s 3(xcept)k +6295(that)s 6715(an)s 6999(option)s 7669(is)s 7880(pro)s 3(vided)k +8788(for)s 0 2919(v)m 6(arying)k 778(the)s 1126(size)s +1553(of)s 1824(the)s 2172(outdent:)s 220 fnt35 480 2418(def @OutdentP)m 8(ar)k +480 2130( named outdent { 2f })m 480 1842( r)m -3(ight x)k 480 1554({)m 480 1266( def @P)m 8(arPlace { @Galle)k 4(y })k +480 690( def @LineList)m 480 402( {)m 480 114( outdent @Wide {} | @P)m 26(Adjust @P)k 8(arPlace)k + +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 34 40 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +%%+ font Times-Italic +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +0 LoutMargSet +grestore +240 fnt84 0 13840(34)m 240 fnt83 7257 13843(Chapter)m 8107(2.)s +8381(Details)s 220 fnt35 480 13207( //1vx @LineList)m 480 12919( })m 480 12343( def @P)m 8(arGalle)k 4(y f)k 6(orce hor)k -3(iz)k 3(ontally into { @P)k 8(arPlace&&preceding })k +480 12055( r)m -3(ight x)k 480 11767( {)m 480 11479( x)m 480 11191( })m +480 10615( @P)m 26(Adjust @P)k 8(arPlace)k 480 10327( // @P)m 8(arGalle)k 4(y { x &1r)k -8(t })k +480 10039( //1vx @LineList)m 480 9751(})m 240 fnt82 0 9257(Notice)m 703(the)s +1061(use)s 1446(of)s 220 fnt35 1727 9254(&1r)m -8(t)k +240 fnt82 2203 9257(to)m 2452(cancel)s 3127(the)s 3485(ef)s 6(fect)k +4091(of)s 220 fnt35 4372 9254(@P)m 26(Adjust)k 240 fnt82 +5390 9257(on)m 5697(the)s 6055(last)s 6456(line)s 6880(of)s +7161(the)s 7519(paragraph.)s 8650(This)s 0 8969(de\207nition)m 969(has)s +1334(a)s 1494(problem)s 2346(in)s 2584(that)s 2996(there)s +3524(will)s 3945(be)s 4221(a)s 4382(concluding)s 5494(une)s 3(xpanded)k +220 fnt35 6701 8966(@LineList)m 240 fnt82 7730 8969(symbol)m 8484(which)s +0 8681(will)m 431(hold)s 921(up)s 1219(promotion)s 2279(of)s +2555(the)s 2909(enclosing)s 3884(g)s 1(alle)k 3(y;)k +4582(this)s 4983(problem)s 5846(may)s 6317(be)s 6605(\207x)s 3(ed)k +7144(by)s 7444(the)s 7797(same)s 8350(method)s 0 8393(used)m +497(to)s 736(end)s 1140(a)s 1306(list.)s 480 8019(In)m +735(an)s 1016(ideal)s 1533(w)s 2(orld,)k 2194(there)s +2725(w)s 2(ould)k 3378(be)s 3658(nothing)s 4442(further)s +5149(to)s 5386(say)s 5757(about)s 6347(horizontal)s 7369(g)s 1(alle)k 3(ys.)k +8204(Ho)s 6(we)k 6(v)k 3(er)k 0 7731(there)m +558(are)s 931(a)s 1123(fe)s 6(w)k 1555(dif)s 6(ferences)k +2686(which)s 3354(arise)s 3886(from)s 4436(v)s 6(arious)k +5211(practical)s 6113(considerations)s 7571(and)s 8001(limitations.)s 0 7443(Perhaps)m +808(some)s 1369(day)s 1769(a)s 1935(more)s 2482(perfect)s +3204(symmetry)s 4214(will)s 4640(be)s 4922(implemented.)s 480 7069(Each)m +1021(v)s 3(ertical)k 1795(g)s 1(alle)k 3(y)k +2436(has)s 2812(a)s 2985(\207x)s 3(ed)k 3526(\207nite)s +4080(width,)s 4738(and)s 5149(e)s 6(v)k 3(ery)k +5732(component)s 6863(is)s 7079(brok)s 2(en)k 7806(to)s +8052(that)s 8477(width.)s 0 6781(This)m 517(is)s 769(needed)s +1546(basically)s 2491(to)s 2772(trigger)s 3509(paragraph)s 4564(breaking.)s +5606(Ho)s 6(we)k 6(v)k 3(er)k 9(,)k +6608(there)s 7183(is)s 7434(no)s 7769(equi)s 6(v)k 6(alent)k +8855(of)s 0 6493(paragraph)m 1001(breaking)s 1879(in)s 2110(the)s +2446(v)s 3(ertical)k 3201(direction,)s 4145(so)s 4398(horizontal)s +5410(g)s 1(alle)k 3(ys)k 6122(do)s 6403(not)s +6757(ha)s 4(v)k 3(e)k 7246(an)s 3(y)k +7631(particular)s 8592(\207x)s 3(ed)k 0 6205(height.)m 762(Instead,)s +1559(each)s 2054(component)s 3178(has)s 3548(its)s 3824(o)s 6(wn)k +4288(indi)s 6(vidual)k 5307(height.)s 480 5831(When)m 1096(tw)s 2(o)k +1492(objects)s 2206(are)s 2539(separated)s 3485(by)s 220 fnt35 +3766 5828(/)m 240 fnt82 3830 5831(,)m 3923(the)s 3(y)k +4372(are)s 4705(assigned)s 5573(the)s 5908(same)s 6441(width)s +7029(\(Section)s 7868(2.7\),)s 8340(and)s 8730(this)s 0 5543(holds)m +581(true)s 1020(e)s 6(v)k 3(en)k 1531(if)s +1760(the)s 2119(tw)s 2(o)k 2541(objects)s 3280(are)s +3639(subsequently)s 4954(separated)s 5926(by)s 6231(being)s 6828(promoted)s +7814(into)s 8251(dif)s 6(ferent)k 0 5255(tar)m 4(gets.)k +788(F)s 3(or)k 1169(e)s 3(xample,)k 2074(tw)s 2(o)k +2476(aligned)s 3229(equations)s 4189(will)s 4606(ha)s 4(v)k 3(e)k +5099(the)s 5439(same)s 5977(width,)s 6621(and)s 7016(hence)s +7622(their)s 8110(alignment)s 0 4967(will)m 437(be)s 731(preserv)s 3(ed,)k +1776(e)s 6(v)k 3(en)k 2287(if)s 2516(the)s 3(y)k +2991(appear)s 3699(in)s 3954(dif)s 6(ferent)k 4841(columns)s +5714(or)s 5985(pages.)s 6706(Ho)s 6(we)k 6(v)k 3(er)k 9(,)k +7677(e)s 6(v)k 3(en)k 8189(though)s 220 fnt35 +8924 4964(&)m 240 fnt82 0 4679(aligns)m 635(the)s 996(marks)s +1644(of)s 1928(its)s 2217(tw)s 2(o)k 2640(parameters,)s +3807(it)s 4012(does)s 4515(not)s 4894(assign)s 5562(them)s +6113(a)s 6292(common)s 7200(height.)s 7975(This)s 8464(means)s +0 4391(that)m 416(the)s 762(height)s 1417(of)s 1686(an)s 3(y)k +2081(component)s 3202(of)s 3471(a)s 3634(horizontal)s 4656(g)s 1(alle)k 3(y)k +5288(promoted)s 6260(into)s 6683(one)s 7083(tar)s 4(get)k +7679(does)s 8167(not)s 8530(af)s 6(fect)k 0 4103(the)m +362(height)s 1034(consumed)s 2078(by)s 2386(the)s 2748(components)s +3971(promoted)s 4960(into)s 5400(an)s 3(y)k 5811(other)s +6376(tar)s 4(get.)k 7094(The)s 7536(other)s 8102(horizontal)s +0 3815(concatenation)m 1392(operator)s 9(,)k 220 fnt35 2293 3812(|)m +240 fnt82 2330 3815(,)m 2444(does)s 2941(assign)s 3604(a)s +3777(common)s 4679(height)s 5344(to)s 5590(its)s 5874(tw)s 2(o)k +6291(parameters;)s 7457(b)s 4(ut)k 7826(sequences)s 8855(of)s +0 3527(objects)m 728(separated)s 1688(by)s 1982(this)s 2378(operator)s +3234(cannot)s 3932(be)s 4214(the)s 4562(components)s 5770(of)s +6041(a)s 6207(horizontal)s 7231(g)s 1(alle)k 3(y)k 15(.)k +480 3153(Lout)m 985(is)s 1187(able)s 1633(to)s 1864(read)s +2325(v)s 3(ertical)k 3084(g)s 1(alle)k 3(ys)k +3800(one)s 4194(paragraph)s 5199(at)s 5424(a)s 5582(time;)s +6110(in)s 6345(this)s 6733(w)s 2(ay)k 7176(it)s +7360(processes)s 8319(the)s 8659(doc)s 8998(-)s 0 2865(ument)m +660(in)s 906(small)s 1481(chunks,)s 2270(ne)s 6(v)k 3(er)k +2855(holding)s 3642(more)s 4192(than)s 4664(a)s 4833(fe)s 6(w)k +5242(pages)s 5840(in)s 6086(memory)s 6940(at)s 7175(an)s 3(y)k +7575(time.)s 8166(Ho)s 6(we)k 6(v)k 3(er)k 9(,)k +0 2577(horizontal)m 1024(g)s 1(alle)k 3(ys)k 1748(are)s +2095(al)s 2(w)k 2(ays)k 2806(read)s 3275(in)s +3518(completely)s 15(,)k 4672(so)s 4938(the)s 3(y)k +5401(should)s 6098(not)s 6464(be)s 6746(e)s 3(xtremely)k +7752(long.)s 480 2203(In)m 744(principle)s 1658(Lout)s 2178(should)s +2884(be)s 3174(able)s 3637(to)s 3884(h)s 1(yphenate)k +4932(the)s 5288(components)s 6505(of)s 6784(horizontal)s 7817(g)s 1(alle)k 3(ys)k +8550(when)s 0 1915(the)m 3(y)k 463(are)s 810(simple)s +1503(w)s 2(ords,)k 2193(b)s 4(ut)k 2555(this)s +2951(is)s 3161(not)s 3527(implemented)s 4833(at)s 5065(present.)s +480 1541(In)m 738(an)s 1023(ideal)s 1544(w)s 2(orld,)k +2209(e)s 6(v)k 3(ery)k 2787(paragraph)s 3802(w)s 2(ould)k +4459(be)s 4743(treated)s 5452(as)s 5704(a)s 5872(horizontal)s +6898(g)s 1(alle)k 3(y)k 15(.)k 7629(Ho)s 6(we)k 6(v)k 3(er)k 9(,)k +8591(to)s 8833(do)s 0 1253(so)m 256(in)s 488(practice)s +1288(w)s 2(ould)k 1932(be)s 2203(too)s 2551(slo)s 6(w)k +3040(and)s 3433(w)s 2(ould)k 4077(lead)s 4522(to)s +4750(e)s 3(xcessi)k 6(v)k 3(e)k 5699(clumsiness)s +6788(in)s 7020(notation,)s 7900(so)s 8155(at)s 8376(present)s +0 965(Lout)m 509(has)s 876(tw)s 2(o)k 1282(competing)s +2342(mechanisms)s 3572(in)s 3811(this)s 4204(area:)s 4764(the)s +5108(b)s 4(uilt-in)k 5861(paragraph)s 6871(break)s 2(er)k +7641(with)s 8120(its)s 8392(limited)s 0 677(set)m 314(of)s +573(options)s 1318(as)s 1556(gi)s 6(v)k 3(en)k +2124(under)s 2718(the)s 220 fnt35 3054 674(@Break)m 240 fnt82 +3899 677(operator)m 9(,)k 4781(and)s 5173(horizontal)s 6186(g)s 1(alle)k 3(ys.)k +7011(As)s 7317(the)s 7653(e)s 3(xample)k 8504(abo)s 3(v)k 3(e)k +0 389(sho)m 6(ws,)k 700(horizontal)s 1725(g)s 1(alle)k 3(ys)k +2449(are)s 2797(in)s 3040(principle)s 3946(capable)s 4733(of)s +5004(implementing)s 6386(man)s 3(y)k 6969(more)s 7517(paragraph)s +8531(styles)s 0 101(than)m 470(the)s 820(b)s 4(uilt-in)k +1578(paragraph)s 2593(break)s 2(er)k 3369(could)s 3961(e)s 6(v)k 3(er)k +4425(hope)s 4949(to)s 5190(do.)s 5596(The)s 6026(recommended)s +7441(practical)s 8319(strate)s 3(gy)k +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 35 41 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Italic +%%+ font Times-Bold +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +1 LoutMargSet +grestore +240 fnt83 0 13843(2.9.)m 454(Horizontal)s 1551(galle)s 7(ys)k +240 fnt84 8833 13840(35)m 240 fnt82 0 13205(is)m 221(to)s +472(use)s 858(the)s 1218(b)s 4(uilt-in)k 1985(paragraph)s +3010(break)s 2(er)k 3795(most)s 4332(of)s 4614(the)s +4974(time,)s 5516(and)s 5932(switch)s 6624(to)s 6875(horizontal)s +7910(g)s 1(alle)k 3(ys)k 8646(only)s 0 12917(for)m +338(occasional)s 1402(tricks,)s 2039(such)s 2535(as)s 2785(paragraphs)s +3885(with)s 4367(drop)s 4859(capitals,)s 5695(circular)s 6483(outlines,)s +7347(etc.)s 240 fnt84 0 12124(2.10.)m 591(Optimal)s 1495(galley)s +2149(br)s 4(eaking)k 240 fnt82 480 11647(As)m 814(e)s 3(xplained)k +1817(in)s 2077(Section)s 2869(2.7,)s 3294(the)s 3659(components)s +4885(of)s 5174(a)s 5357(g)s 1(alle)k 3(y)k +6009(are)s 6373(promoted)s 7366(one)s 7786(by)s 8097(one)s +8517(into)s 8960(a)s 0 11359(tar)m 4(get.)k 703(When)s +1332(space)s 1919(runs)s 2382(out)s 2748(there,)s 3332(the)s +3680(g)s 1(alle)k 3(y)k 4314(searches)s 5174(for)s +5512(a)s 5678(ne)s 6(w)k 6125(tar)s 4(get)k +6724(and)s 7128(promotion)s 8182(resumes.)s 480 10985(This)m 977(process)s +1766(is)s 1997(e)s 3(xactly)k 2759(analogous)s 3802(to)s +4062(placing)s 4840(w)s 2(ords)k 5495(onto)s 5995(a)s +6182(line)s 6617(until)s 7131(space)s 7739(runs)s 8223(out,)s +8657(then)s 0 10697(mo)m 3(ving)k 776(to)s 1008(another)s +1778(line.)s 2293(But,)s 2740(as)s 2983(we)s 3311(kno)s 6(w)k 15(,)k +3923(that)s 4335(simple)s 5021(method)s 5790(is)s 5993(inferior)s +6762(to)s 6994(the)s 7335(optimal)s 8113(paragraph)s 0 10409(breaking)m +893(used)s 1393(by)s 1690(Lout)s 2206(\(copied)s 2984(from)s +3511(the)s 3863(T)s 3959 10361(E)m 4067 10409(X)m 4299(system\),)s +5152(which)s 5797(e)s 3(xamines)k 6752(the)s 7103(entire)s +7705(paragraph)s 8722(and)s 0 10121(determines)m 1099(the)s 1447(most)s +1972(e)s 6(v)k 3(en)k 2472(assignment)s 3608(of)s +3879(w)s 2(ords)k 4513(to)s 4752(lines.)s 480 9747(Lout)m +1050(of)s 6(fers)k 240 fnt83 1709 9749(optimal)m 2559(galle)s 7(y)k +3250(br)s 8(eaking)k 240 fnt82 4087 9747(,)m 4252(the)s +4659(equi)s 6(v)k 6(alent)k 5761(for)s 6157(g)s 1(alle)k 3(ys)k +6940(of)s 7269(optimal)s 8113(paragraph)s 0 9459(breaking.)m 1020(Optimal)s +1878(g)s 1(alle)k 3(y)k 2532(breaking)s 3442(can)s +3851(reduce)s 4564(the)s 4932(size)s 5378(of)s 5669(ugly)s +6169(blank)s 6782(spaces)s 7477(at)s 7729(the)s 8097(bottom)s +8855(of)s 0 9171(pages)m 596(preceding)s 1592(lar)s 4(ge)k +2121(unbreakable)s 3346(displays,)s 4237(sometimes)s 5310(quite)s 5844(dramatically)s 15(.)k +480 8797(Optimal)m 1337(g)s 1(alle)k 3(y)k 1990(breaking)s +2900(is)s 3129(applied)s 3910(to)s 4169(each)s 4683(g)s 1(alle)k 3(y)k 15(,)k +5375(horizontal)s 6418(or)s 6696(v)s 3(ertical,)k 7535(that)s +7972(possesses)s 8960(a)s 0 8509(parameter)m 1036(or)s 1317(nested)s +2008(symbol)s 2790(called)s 220 fnt35 3440 8506(@Optimiz)m 3(e)k +240 fnt82 4599 8509(whose)m 5290(v)s 6(alue)k 5880(is)s +220 fnt35 6112 8506(Y)m 30(es)k 240 fnt82 6453 8509(.)m +6639(Lik)s 2(e)k 7153(cross)s 7717(referencing,)s 8934(it)s +0 8221(tak)m 2(es)k 539(tw)s 2(o)k 947(runs)s +1409(to)s 1646(ha)s 4(v)k 3(e)k 2145(ef)s 6(fect.)k +2844(On)s 3192(the)s 3538(\207rst)s 3968(run,)s 4392(Lout)s +4902(records)s 5655(the)s 6001(sizes)s 6514(of)s 6784(the)s +7130(g)s 1(alle)k 3(y')k 13(s)k 7918(components)s +0 7933(and)m 393(g)s 1(aps,)k 927(and)s 1319(also)s +1746(the)s 2083(space)s 2658(a)s 4(v)k 6(ailable)k +3555(at)s 3776(each)s 4259(of)s 4519(its)s 4783(tar)s 4(gets.)k +5568(At)s 5856(end)s 6248(of)s 6508(run)s 6873(this)s +7257(information)s 8431(is)s 8629(used)s 0 7645(to)m 232(\207nd)s +656(an)s 932(optimal)s 1709(break,)s 2340(which)s 2975(is)s +3177(written)s 3903(to)s 4135(the)s 4475(cross-reference)s 5981(database.)s +6961(On)s 7303(the)s 7644(second)s 8360(run,)s 8778(the)s +0 7357(optimal)m 785(break)s 1377(is)s 1587(retrie)s 6(v)k 3(ed)k +2484(and)s 2888(used.)s 480 6983(Considering)m 1727(that)s 2170(this)s +2590(process)s 3383(must)s 3932(cope)s 4465(with)s 4971(\210oating)s +5780(\207gures,)s 6562(ne)s 6(w)k 7034(page)s 7566(and)s +7995(conditional)s 0 6695(ne)m 6(w)k 460(page)s 982(symbols,)s +1901(breaks)s 2589(for)s 2941(ne)s 6(w)k 3402(chapters,)s +4318(and)s 4736(e)s 6(v)k 4(olving)k 5631(documents,)s +6788(it)s 6994(is)s 7218(surprisingly)s 8428(rob)s 4(ust.)k +0 6407(If)m 250(it)s 463(does)s 974(go)s 1287(badly)s +1894(wrong,)s 2634(remo)s 3(ving)k 3621(\207le)s 220 fnt35 +4003 6404(lout.li)m 240 fnt82 4580 6407(then)m 5069(running)s 5888(Lout)s +6421(twice)s 7014(without)s 7826(changing)s 8778(the)s 0 6119(document)m +1036(may)s 1534(solv)s 3(e)k 2125(the)s 2505(problem.)s +3498(Ho)s 6(we)k 6(v)k 3(er)k 9(,)k +4491(cases)s 5078(are)s 5457(kno)s 6(wn)k 6194(where)s +6866(the)s 7246(optimization)s 8544(ne)s 6(v)k 3(er)k +0 5831(con)m 9(v)k 3(er)k 4(ges.)k 1151(These)s +1812(are)s 2193(usually)s 2972(related)s 3713(to)s 3986(\207gures)s +4721(and)s 5159(footnotes)s 6134(whose)s 6836(anchor)s 7581(points)s +8251(f)s 2(all)k 8655(near)s 0 5543(page)m 508(boundaries.)s + +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 36 42 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +0 LoutMargSet +grestore +480 fnt84 0 12955(Chapter)m 1819(3.)s 2400(Pr)s 8(ede\207ned)k +4711(symbols)s 240 fnt84 0 11691(3.1.)m 471(@Begin)s 1335(and)s +1776(@End)s 240 fnt82 480 11214(The)m 905(body)s 1435(of)s +1702(a)s 1864(symbol)s 220 fnt35 2620 11211(@Sym)m 240 fnt82 +3324 11214(may)m 3786(be)s 4064(enclosed)s 4955(in)s 220 fnt35 +5194 11211(@Begin)m 240 fnt82 6019 11214(and)m 220 fnt35 6419 11211(@End)m +7076(@Sym)s 240 fnt82 7780 11214(instead)m 8511(of)s 8778(the)s +0 10926(more)m 547(usual)s 1107(braces:)s 220 fnt35 480 10475(def @Section)m +480 10187( named @Title {})m 480 9899( r)m -3(ight @Body)k 480 9611(@Begin)m 480 9323( @Title //2v @Body)m +480 9035(@End @Section)m 240 fnt82 0 8580(The)m 3(y)k 543(may)s +1009(also)s 1447(enclose)s 2220(the)s 2568(right)s 3079(or)s +3338(body)s 3872(parameter)s 4886(of)s 5157(a)s 5323(symbol)s +6083(in)s 9(v)k 4(ocation:)k 220 fnt35 480 8079(@Chapter)m +480 7791( @Title { Introduction })m 480 7503(@Begin)m 480 7215(This subject needs no introduction.)m 480 6927(@End @Chapter)m 240 fnt82 +0 6431(Apart)m 651(from)s 1222(their)s 1767(utility)s 2438(as)s +2735(documentation)s 4262(aids,)s 4801(these)s 5396(forms)s 6051(allo)s 6(w)k +6677(Basser)s 7422(Lout)s 7981(to)s 8268(pinpoint)s 0 6143(mismatched)m +1206(braces,)s 1915(which)s 2549(can)s 2930(otherwise)s 3908(create)s +4525(total)s 4996(ha)s 4(v)k 4(oc.)k 5716(F)s 3(or)k +6098(this)s 6486(reason,)s 7209(the)s 3(y)k 7664(should)s +8353(enclose)s 0 5855(the)m 339(major)s 946(parts)s 1451(of)s +1712(documents,)s 2846(such)s 3333(as)s 3573(chapters)s 4410(and)s +4804(sections.)s 5728(Note)s 6240(that)s 6648(braces)s 7299(cannot)s +7987(be)s 8259(replaced)s 0 5567(by)m 220 fnt35 294 5564(@Begin)m +240 fnt82 1123 5567(and)m 220 fnt35 1527 5564(@End)m 240 fnt82 +2188 5567(in)m 2431(general.)s 240 fnt84 0 4774(3.2.)m 471(Concatenation)s +2015(symbols)s 2893(and)s 3334(paragraphs)s 240 fnt82 480 4297(There)m +1093(are)s 1440(ten)s 1789(concatenation)s 3174(symbols,)s 4079(in)s +4322(three)s 4855(f)s 2(amilies:)k 220 fnt35 480 3756(/)m +962(^/)s 1547(//)s 2012(^//)s 240 fnt82 2580 3759(V)m 26(ertical)k +3377(concatenation)s 220 fnt35 480 3468(|)m 962(^|)s 1547(||)s +2012(^||)s 240 fnt82 2580 3471(Horizontal)m 3657(concatenation)s 220 fnt35 +480 3180(&)m 962(^&)s 240 fnt82 2580 3183(In-paragraph)m 3871(concatenation)s +0 2642(Each)m 587(symbol)s 1399(produces)s 2367(an)s 2702(object)s +3398(which)s 4093(combines)s 5113(together)s 6008(the)s 6409(tw)s 2(o)k +6871(parameters.)s 8134(The)s 8615(right)s 0 2354(parameter)m 1014(must)s +1539(be)s 1821(separated)s 2781(from)s 3305(the)s 3653(symbol)s +4413(by)s 4707(at)s 4939(least)s 5436(one)s 5838(white)s +6425(space)s 7012(character)s 13(.)k 480 1980(The)m 906(v)s 3(ertical)k +1670(concatenation)s 3052(symbol)s 220 fnt35 3809 1977(/)m 240 fnt82 +3930 1980(places)m 4575(its)s 4848(left)s 5222(parameter)s 6233(abo)s 3(v)k 3(e)k +6852(its)s 7125(right)s 7633(parameter)s 8644(with)s 0 1692(their)m +519(column)s 1317(marks)s 1975(aligned.)s 2866(If)s 3119(one)s +3544(parameter)s 4581(has)s 4973(more)s 5543(column)s 6341(marks)s +6999(than)s 7491(the)s 7862(other)s 9(,)k 8474(empty)s +0 1404(columns)m 868(are)s 1221(inserted)s 2041(at)s 2279(the)s +2633(right)s 3150(to)s 3395(equalize)s 4253(the)s 4607(numbers.)s +5601(The)s 6035(v)s 6(ariant)k 220 fnt35 6758 1401(//)m +240 fnt82 6949 1404(ignores)m 7710(column)s 8491(marks)s 0 1116(and)m +404(left-justi\207es)s 1594(the)s 1942(objects.)s 480 742(The)m 896(horizontal)s +1908(concatenation)s 3280(symbols)s 220 fnt35 4117 739(|)m 240 fnt82 +4201 742(and)m 220 fnt35 4593 739(||)m 240 fnt82 4734 742(are)m +5069(horizontal)s 6080(analogues)s 7076(of)s 220 fnt35 7334 739(/)m +240 fnt82 7446 742(and)m 220 fnt35 7837 739(//)m 240 fnt82 +7962 742(:)m 8116(the)s 3(y)k 8566(place)s 192 fnt84 +4439 2(36)m +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 37 43 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Italic +%%+ font Times-Bold +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +1 LoutMargSet +grestore +240 fnt83 0 13843(3.2.)m 454(Concatenation)s 1918(symbols)s 2744(and)s +3170(par)s 3(a)k 2(gr)k 3(aphs)k 240 fnt84 +8831 13840(37)m 240 fnt82 0 13205(their)m 488(tw)s 2(o)k +888(parameters)s 1976(side)s 2407(by)s 2692(side,)s 3174(with)s +3646(ro)s 6(w)k 4056(mark)s 4599(alignment)s 5605(or)s +5854(top-justi\207cation)s 7414(respecti)s 6(v)k 3(ely)k 15(.)k +8698(The)s 0 12917(in-paragraph)m 1278(concatenation)s 2663(symbol)s 220 fnt35 +3423 12914(&)m 240 fnt82 3625 12917(produces)m 4540(horizontal)s 5564(concatenation)s +6949(within)s 7617(a)s 7783(paragraph;)s 8850(its)s 0 12629(special)m +718(properties)s 1724(are)s 2071(treated)s 2778(in)s 3021(detail)s +3606(at)s 3838(the)s 4186(end)s 4590(of)s 4861(this)s +5257(section.)s 480 12255(The)m 908(concatenation)s 2293(symbols)s 3142(in)s +3385(an)s 3(y)k 3782(one)s 4184(f)s 2(amily)k +4859(are)s 240 fnt83 5206 12257(mutually)m 6099(associative)s 240 fnt82 +7154 12255(,)m 7261(which)s 7903(means)s 8565(that)s 220 fnt35 +480 11754({)m 240 fnt83 664 11759(x)m 220 fnt35 890 11754(|)m +240 fnt83 927 11759(p)m 1160(y)s 220 fnt35 1382 11754(})m +1566(|)s 240 fnt83 1603 11759(q)m 1839(z)s 240 fnt82 +0 11258(is)m 210(al)s 2(w)k 2(ays)k 921(the)s +1269(same)s 1816(as)s 240 fnt83 480 10762(x)m 220 fnt35 +706 10757(|)m 240 fnt83 743 10762(p)m 220 fnt35 976 10757({)m +240 fnt83 1160 10762(y)m 220 fnt35 1382 10757(|)m 240 fnt83 +1419 10762(q)m 1655(z)s 220 fnt35 1866 10757(})m 240 fnt82 +0 10261(for)m 339(an)s 3(y)k 737(objects)s 240 fnt83 +1466 10263(x)m 240 fnt82 1572 10261(,)m 240 fnt83 1680 10263(y)m +240 fnt82 1782 10261(,)m 1891(and)s 240 fnt83 2296 10263(z)m +240 fnt82 2387 10261(,)m 2495(an)s 3(y)k 2893(g)s 1(aps)k +240 fnt83 3383 10263(p)m 240 fnt82 3558 10261(and)m 240 fnt83 +3963 10263(q)m 240 fnt82 4140 10261(\(de\207ned)m 4983(belo)s 6(w\),)k +5750(and)s 6155(an)s 3(y)k 6553(choice)s 7234(of)s +220 fnt35 7506 10258(|)m 240 fnt82 7543 10261(,)m 220 fnt35 +7652 10258(^|)m 240 fnt82 7792 10261(,)m 220 fnt35 7900 10258(||)m +240 fnt82 7994 10261(,)m 8102(and)s 220 fnt35 8507 10258(^||)m +240 fnt82 8704 10261(.)m 8870(In)s 0 9973(practice)m 803(we)s +1130(al)s 2(w)k 2(ays)k 1833(omit)s 2323(such)s +2811(braces,)s 3520(since)s 4059(the)s 3(y)k 4513(are)s +4852(redundant)s 5861(and)s 6257(can)s 6638(be)s 6912(misleading.)s +8117(The)s 8536(result)s 0 9685(of)m 277(the)s 631(complete)s +1569(sequence)s 2508(of)s 2786(concatenations)s 4264(will)s 4696(be)s +4984(called)s 5619(the)s 240 fnt83 5973 9687(whole)m 6604(concatenation)s +8020(object)s 240 fnt82 8608 9685(,)m 8722(and)s 0 9397(the)m +348(objects)s 1076(which)s 1718(mak)s 2(e)k 2290(it)s +2482(up)s 2775(will)s 3201(be)s 3483(called)s 4111(the)s +240 fnt83 4459 9399(components)m 240 fnt82 5598 9397(.)m 480 9023(One)m +938(mark)s 1494(is)s 1708(designated)s 2793(as)s 3047(the)s +240 fnt83 3398 9025(principal)m 4339(mark)s 240 fnt82 4835 9023(,)m +4946(usually)s 5695(the)s 6047(mark)s 6602(of)s 6877(the)s +7229(\207rst)s 7664(component.)s 8896(A)s 0 8735(later)m 486(mark)s +1042(can)s 1435(be)s 1721(chosen)s 2447(for)s 2789(this)s +3189(honour)s 3932(by)s 4230(attaching)s 220 fnt35 5163 8732(^)m +240 fnt82 5333 8735(to)m 5576(the)s 5928(preceding)s 6928(concatenation)s +8317(symbol.)s 0 8447(See)m 401(Section)s 1175(3.10)s 1650(for)s +1988(e)s 3(xamples.)k 480 8073(A)m 240 fnt83 712 8075(gap)m +240 fnt82 1065 8073(,)m 1175(specifying)s 2227(the)s 2578(distance)s +3420(between)s 4277(the)s 4627(tw)s 2(o)k 5040(parameters,)s +6197(may)s 6666(follo)s 6(w)k 7341(an)s 3(y)k +7741(concatenation)s 0 7785(symbol.)m 866(There)s 1475(may)s 1937(be)s +2215(no)s 2504(spaces)s 3176(between)s 4026(a)s 4188(concatenation)s +5569(symbol)s 6325(and)s 6726(its)s 6998(g)s 1(ap.)k +7503(A)s 7729(missing)s 8522(g)s 1(ap)k 8916(is)s +0 7497(tak)m 2(en)k 569(to)s 803(be)s 220 fnt35 +1081 7494(0ie)m 240 fnt82 1365 7497(.)m 1524(The)s 1948(g)s 1(ap)k +2341(is)s 2546(ef)s 6(fecti)k 6(v)k 3(ely)k +3601(a)s 3762(third)s 4267(parameter)s 5276(of)s 5542(the)s +5886(concatenation)s 7266(symbol,)s 8074(and)s 8473(it)s 8660(may)s +0 7209(be)m 289(an)s 579(arbitrary)s 1462(object)s 2113(pro)s 3(vided)k +3026(that)s 3452(it)s 3651(e)s 6(v)k 6(aluates)k +4586(to)s 4833(a)s 5006(juxtaposition)s 6319(of)s 6598(simple)s +7298(w)s 2(ords.)k 8052(In)s 8316(general,)s 0 6921(the)m +348(g)s 1(ap)k 746(must)s 1271(be)s 1553(enclosed)s +2448(in)s 2691(braces,)s 3408(lik)s 2(e)k 3820(this:)s +220 fnt35 480 6420(//{ @Style&&m)m 3(ystyle @Open { @T)k 26(opMargin } })k 240 fnt82 +0 5921(b)m 4(ut)k 349(the)s 684(braces)s 1332(may)s +1785(be)s 2053(omitted)s 2828(when)s 3391(the)s 3726(object)s +4356(is)s 4553(a)s 4706(juxtaposition)s 5999(of)s 6256(simple)s +6936(w)s 2(ords)k 7557(or)s 7803(an)s 8072(in)s 9(v)k 4(ocation)k +0 5633(of)m 271(a)s 437(symbol)s 1197(without)s 1988(parameters,)s +3142(as)s 3392(in)s 220 fnt35 3635 5630(//0.3vx)m 240 fnt82 +4340 5633(and)m 220 fnt35 4744 5630(||@Indent)m 240 fnt82 5687 5633(.)m +480 5259(A)m 704(g)s 1(ap)k 1096(consists)s 1898(of)s +2162(a)s 2322(length)s 2971(plus)s 3415(a)s 3574(g)s 1(ap)k +3966(mode)s 4548(plus)s 4992(an)s 5268(optional)s 6101(indication)s +7108(of)s 7373(unbreakability)s 15(.)k 8896(A)s 240 fnt83 +0 4973(length)m 240 fnt82 659 4971(is)m 875(represented)s 2040(by)s +2341(an)s 2630(decimal)s 3447(number)s 4244(\(which)s 4972(may)s +5444(not)s 5816(be)s 6104(ne)s 3(g)k 1(ati)k 6(v)k 3(e\))k +7036(follo)s 6(wed)k 7944(by)s 8244(a)s 8416(unit)s +8855(of)s 0 4683(measurement.)m 1437(F)s 3(or)k 1825(e)s 3(xample,)k +220 fnt35 2738 4680(2.5c)m 240 fnt82 3207 4683(represents)m 4225(the)s +4572(length)s 5226(2.5)s 5571(centimetres.)s 6834(Figure)s 7513(3.1)s +7847(gi)s 6(v)k 3(es)k 8393(the)s 8740(full)s +0 4395(selection)m 906(of)s 1177(units)s 1693(of)s 1964(measurement.)s +480 4021(After)m 1045(the)s 1396(length)s 2054(comes)s 2718(an)s +3004(optional)s 240 fnt83 3846 4023(gap)m 4261(mode)s 240 fnt82 +4773 4021(,)m 4883(which)s 5528(is)s 5740(a)s 5909(single)s +6539(letter)s 7090(follo)s 6(wing)k 8070(the)s 8421(length,)s +0 3733(indicating)m 1031(ho)s 6(w)k 1514(the)s 1884(length)s +2562(is)s 2794(to)s 3055(be)s 3359(measured.)s 4462(As)s +4801(sho)s 6(wn)k 5500(in)s 5765(Figure)s 6468(3.2,)s +6897(with)s 7401(edge-to-edge)s 8728(g)s 1(ap)k 0 3445(mode)m +603(the)s 967(length)s 240 fnt83 1638 3447(l)m 240 fnt82 +1780 3445(is)m 2006(measured)s 2996(from)s 3536(the)s 3900(trailing)s +4658(edge)s 5181(of)s 5468(the)s 5832(\207rst)s 6279(object)s +6939(to)s 7194(the)s 7558(leading)s 8331(edge)s 8855(of)s +0 3157(the)m 347(second.)s 1174(Edge-to-edge)s 2516(is)s 2725(the)s +3071(def)s 2(ault)k 3790(mode:)s 4486(the)s 220 fnt35 +4833 3154(e)m 240 fnt82 5005 3157(may)m 5469(be)s 5749(omitted.)s +6642(Hyphenation)s 7934(g)s 1(ap)k 8330(mode)s 8916(is)s +0 2869(similar)m 9(,)k 760(e)s 3(xcept)k 1441(as)s +1691(e)s 3(xplained)k 2676(at)s 2908(the)s 3256(end)s +3660(of)s 3931(this)s 4327(section.)s 480 2495(Mark-to-mark,)m 1957(o)s 3(v)k 3(erstrik)k 2(e,)k +3028(and)s 3450(k)s 2(erning)k 4249(measure)s 5118(the)s +5484(length)s 6156(from)s 6698(the)s 7063(last)s 7471(mark)s +8041(of)s 8329(the)s 8695(\207rst)s 0 2207(object)m 648(to)s +892(the)s 1245(\207rst)s 1680(mark)s 2237(of)s 2513(the)s +2865(second.)s 3699(In)s 3960(the)s 4312(case)s 4784(of)s +5060(mark-to-mark,)s 6497(if)s 6719(the)s 7072(length)s 7731(is)s +7946(too)s 8310(small)s 8887(to)s 0 1919(pre)m 6(v)k 3(ent)k +771(the)s 1123(objects)s 1855(almost)s 2556(o)s 3(v)k 3(erlapping,)k +3804(it)s 4000(is)s 4214(widened)s 5087(until)s 5584(the)s 3(y)k +6051(no)s 6348(longer)s 7023(do.)s 7431(\(The)s 7942(e)s 3(xtra)k +240 fnt83 8480 1921(l/10)m 240 fnt82 8916 1919(is)m 0 1631(not)m +362(applied)s 1119(when)s 1690(plain)s 2220(te)s 3(xt)k +2630(output)s 3298(is)s 3503(in)s 3741(ef)s 6(fect.\))k +4520(K)s 6(erning)k 5346(also)s 5780(widens,)s 6560(with)s +7037(the)s 7380(aim)s 7793(of)s 8059(pre)s 6(v)k 3(enting)k +0 1343(the)m 372(mark)s 948(of)s 1243(either)s 1870(object)s +2539(from)s 3087(o)s 3(v)k 3(erlapping)k 4301(the)s +4673(other)s 5248(object;)s 5969(this)s 6389(mode)s 7001(is)s +7235(used)s 7756(for)s 8119(subscripts)s 0 1055(and)m 404(superscripts.)s +558 681(T)m 19(ab)k 4(ulation)k 1646(ignores)s 2419(the)s +2785(\207rst)s 3234(object)s 3896(and)s 4318(places)s 4984(the)s +5350(leading)s 6125(edge)s 6651(of)s 6940(the)s 7306(second)s +8047(object)s 8709(at)s 8960(a)s 0 393(distance)m 240 fnt83 +842 395(l)m 240 fnt82 971 393(from)m 1498(the)s 1849(left)s +2229(edge)s 2740(of)s 3014(the)s 3365(whole)s 4009(concatenation)s +5397(object.)s 6148(It)s 6356(is)s 6569(the)s 6920(main)s +7458(user)s 7919(of)s 8193(the)s 220 fnt35 8544 390(b)m +240 fnt82 8722 393(and)m 220 fnt35 0 102(r)m 240 fnt82 +141 105(units)m 666(of)s 945(measurement;)s 2340(for)s 2686(e)s 3(xample,)k +220 fnt35 3609 102(|1r)m -8(t)k 240 fnt82 3994 105(will)m +4429(right-justify)s 5631(the)s 5988(follo)s 6(wing)k 6973(component,)s +8153(and)s 220 fnt35 8566 102(|0.5r)m -8(t)k +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 38 44 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +%%+ font Times-Italic +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +0 LoutMargSet +grestore +240 fnt84 0 13840(38)m 240 fnt83 6081 13843(Chapter)m 6931(3.)s +7205(Pr)s 8(ede\207ned)k 8300(symbols)s gsave +0 13282 translate +240 fnt82 0 86 0 86 240 288 60 LoutGraphic +gsave +0.5 pt ltabvs +grestore + +grestore +gsave +0 13368 translate +240 fnt82 170 0 0 0 240 288 60 LoutGraphic +gsave +0.5 pt ltabhsp +grestore + +grestore +gsave +0 13113 translate +240 fnt82 0 169 0 60 240 288 60 LoutGraphic +gsave +0.5 pt ltabvs +grestore + +grestore +gsave +0 13027 translate +240 fnt82 0 86 0 0 240 288 60 LoutGraphic +gsave +0.5 pt ltabvs +grestore + +grestore +gsave +170 13368 translate +240 fnt82 169 0 0 0 240 288 60 LoutGraphic +gsave +0.5 pt ltabhs +grestore + +grestore +220 fnt35 170 13116(c)m +gsave +339 13368 translate +240 fnt82 170 0 0 0 240 288 60 LoutGraphic +gsave +0.5 pt ltabhs +grestore + +grestore +gsave +509 13368 translate +240 fnt82 170 0 0 0 240 288 60 LoutGraphic +gsave +0.5 pt ltabhs +grestore + +grestore +gsave +679 13368 translate +240 fnt82 8217 0 0 0 240 288 60 LoutGraphic +gsave +0.5 pt ltabhs +grestore + +grestore +240 fnt82 679 13119(Centimetres.)m 170 0 0 0 240 288 60 8896 13368 LoutGr2 +0.5 pt ltabhsp +grestore + +grestore +0 86 0 86 240 288 60 9066 13282 LoutGr2 +0.5 pt ltabvs +grestore + +grestore +0 169 0 60 240 288 60 9066 13113 LoutGr2 +0.5 pt ltabvs +grestore + +grestore +0 86 0 0 240 288 60 9066 13027 LoutGr2 +0.5 pt ltabvs +grestore + +grestore +0 86 0 86 240 288 60 0 12941 LoutGr2 +0.5 pt ltabvs +grestore + +grestore +0 166 0 57 240 288 60 0 12775 LoutGr2 +0.5 pt ltabvs +grestore + +grestore +0 86 0 0 240 288 60 0 12689 LoutGr2 +0.5 pt ltabvs +grestore + +grestore +220 fnt35 170 12775(i)m 240 fnt82 +679 12778(Inches.)m 0 86 0 86 240 288 60 9066 12941 LoutGr2 +0.5 pt ltabvs +grestore + +grestore +0 166 0 57 240 288 60 9066 12775 LoutGr2 +0.5 pt ltabvs +grestore + +grestore +0 86 0 0 240 288 60 9066 12689 LoutGr2 +0.5 pt ltabvs +grestore + +grestore +0 86 0 86 240 288 60 0 12603 LoutGr2 +0.5 pt ltabvs +grestore + +grestore +0 211 0 102 240 288 60 0 12392 LoutGr2 +0.5 pt ltabvs +grestore + +grestore +0 86 0 0 240 288 60 0 12306 LoutGr2 +0.5 pt ltabvs +grestore + +grestore +220 fnt35 170 12437(p)m 240 fnt82 679 12440(Points)m +1328(\()s 220 fnt35 1401 12437(72p)m 240 fnt82 1819 12440(=)m +220 fnt35 2007 12437(1i)m 240 fnt82 2163 12440(\).)m 0 86 0 86 240 288 60 9066 12603 LoutGr2 +0.5 pt ltabvs +grestore + +grestore +0 211 0 102 240 288 60 9066 12392 LoutGr2 +0.5 pt ltabvs +grestore + +grestore +0 86 0 0 240 288 60 9066 12306 LoutGr2 +0.5 pt ltabvs +grestore + +grestore +0 86 0 86 240 288 60 0 12220 LoutGr2 +0.5 pt ltabvs +grestore + +grestore +0 204 0 96 240 288 60 0 12016 LoutGr2 +0.5 pt ltabvs +grestore + +grestore +0 86 0 0 240 288 60 0 11930 LoutGr2 +0.5 pt ltabvs +grestore + +grestore +220 fnt35 +170 12055(m)m 240 fnt82 679 12058(Ems)m 1155(\()s 220 fnt35 +1228 12055(12m)m 240 fnt82 1701 12058(=)m 220 fnt35 1889 12055(1i)m +240 fnt82 2045 12058(\).)m 0 86 0 86 240 288 60 9066 12220 LoutGr2 +0.5 pt ltabvs +grestore + +grestore +0 204 0 96 240 288 60 9066 12016 LoutGr2 +0.5 pt ltabvs +grestore + +grestore +0 86 0 0 240 288 60 9066 11930 LoutGr2 +0.5 pt ltabvs +grestore + +grestore +0 86 0 86 240 288 60 0 11844 LoutGr2 +0.5 pt ltabvs +grestore + +grestore +0 503 0 394 240 288 60 0 11341 LoutGr2 +0.5 pt ltabvs +grestore + +grestore +0 86 0 0 240 288 60 0 11255 LoutGr2 +0.5 pt ltabvs +grestore + +grestore +220 fnt35 170 11678(f)m 240 fnt82 +679 11681(One)m 220 fnt35 1123 11678(f)m 240 fnt82 1229 11681(equals)m +1879(the)s 2215(size)s 2631(of)s 2890(the)s 3226(current)s +3950(font,)s 4431(as)s 4669(speci\207ed)s 5565(by)s 5847(the)s +220 fnt35 6184 11678(@F)m 6(ont)k 240 fnt82 6884 11681(symbol)m +7632(\(Section)s 8473(3.3\).)s 679 11393(This)m 1155(unit)s 1587(is)s +1797(appropriate)s 2941(for)s 3279(lengths)s 4021(that)s 4439(should)s +5136(change)s 5870(with)s 6352(the)s 6700(font)s 7145(size.)s +0 86 0 86 240 288 60 9066 11844 LoutGr2 +0.5 pt ltabvs +grestore + +grestore +0 503 0 394 240 288 60 9066 11341 LoutGr2 +0.5 pt ltabvs +grestore + +grestore +0 86 0 0 240 288 60 9066 11255 LoutGr2 +0.5 pt ltabvs +grestore + +grestore +0 86 0 86 240 288 60 0 11169 LoutGr2 +0.5 pt ltabvs +grestore + +grestore +0 503 0 394 240 288 60 0 10666 LoutGr2 +0.5 pt ltabvs +grestore + +grestore +0 86 0 0 240 288 60 0 10580 LoutGr2 +0.5 pt ltabvs +grestore + +grestore +220 fnt35 170 11003(s)m 240 fnt82 679 11006(One)m 220 fnt35 +1125 11003(s)m 240 fnt82 1279 11006(equals)m 1932(the)s 2271(preferred)s +3194(g)s 1(ap)k 3582(between)s 4427(tw)s 2(o)k +4828(w)s 2(ords)k 5453(in)s 5687(the)s 6025(current)s +6752(font,)s 7235(as)s 7476(speci\207ed)s 8375(in)s 8608(the)s +679 10718(de\207nition)m 1653(of)s 1924(the)s 2272(font,)s 2764(or)s +3023(by)s 3317(the)s 220 fnt35 3665 10715(@Space)m 240 fnt82 +4562 10718(symbol)m 5322(\(Section)s 6175(3.4\).)s 0 86 0 86 240 288 60 9066 11169 LoutGr2 +0.5 pt ltabvs +grestore + +grestore +0 503 0 394 240 288 60 9066 10666 LoutGr2 +0.5 pt ltabvs +grestore + +grestore +0 86 0 0 240 288 60 9066 10580 LoutGr2 +0.5 pt ltabvs +grestore + +grestore +0 86 0 86 240 288 60 0 10494 LoutGr2 +0.5 pt ltabvs +grestore + +grestore +0 791 0 682 240 288 60 0 9703 LoutGr2 +0.5 pt ltabvs +grestore + +grestore +0 86 0 0 240 288 60 0 9617 LoutGr2 +0.5 pt ltabvs +grestore + +grestore +220 fnt35 170 10328(v)m +240 fnt82 679 10331(One)m 220 fnt35 1149 10328(v)m 240 fnt82 +1334 10331(equals)m 2011(the)s 2375(current)s 3126(g)s 1(ap)k +3540(between)s 4410(lines)s 4927(introduced)s 6024(during)s 6717(paragraph)s +7746(breaking,)s 8706(as)s 679 10043(speci\207ed)m 1574(by)s 1854(the)s +220 fnt35 2188 10040(@Break)m 240 fnt82 3030 10043(symbol)m 3777(\(Section)s +4616(3.4\).)s 5145(This)s 5607(unit)s 6026(is)s 6222(appropriate)s +7352(for)s 7676(lengths,)s 8460(such)s 679 9755(as)m 929(the)s +1277(spaces)s 1952(between)s 2806(paragraphs,)s 3962(which)s 4604(should)s +5301(change)s 6035(with)s 6517(the)s 6865(inter)s 4(-line)k +7791(g)s 1(ap.)k 0 86 0 86 240 288 60 9066 10494 LoutGr2 +0.5 pt ltabvs +grestore + +grestore +0 791 0 682 240 288 60 9066 9703 LoutGr2 +0.5 pt ltabvs +grestore + +grestore +0 86 0 0 240 288 60 9066 9617 LoutGr2 +0.5 pt ltabvs +grestore + +grestore +0 86 0 86 240 288 60 0 9531 LoutGr2 +0.5 pt ltabvs +grestore + +grestore +0 454 0 345 240 288 60 0 9077 LoutGr2 +0.5 pt ltabvs +grestore + +grestore +0 86 0 0 240 288 60 0 8991 LoutGr2 +0.5 pt ltabvs +grestore + +grestore +220 fnt35 170 9365(w)m 240 fnt82 +679 9368(One)m 220 fnt35 1167 9365(w)m 240 fnt82 1416 9368(equals)m +2111(the)s 2493(width)s 3128(of)s 3432(the)s 3813(follo)s 6(wing)k +4824(component,)s 6028(or)s 6320(its)s 6629(height)s 7321(if)s +7571(the)s 7952(symbol)s 8746(is)s 679 9080(v)m 3(ertical)k +1446(concatenation.)s 0 86 0 86 240 288 60 9066 9531 LoutGr2 +0.5 pt ltabvs +grestore + +grestore +0 454 0 345 240 288 60 9066 9077 LoutGr2 +0.5 pt ltabvs +grestore + +grestore +0 86 0 0 240 288 60 9066 8991 LoutGr2 +0.5 pt ltabvs +grestore + +grestore +0 86 0 86 240 288 60 0 8905 LoutGr2 +0.5 pt ltabvs +grestore + +grestore +0 454 0 345 240 288 60 0 8451 LoutGr2 +0.5 pt ltabvs +grestore + +grestore +0 86 0 0 240 288 60 0 8365 LoutGr2 +0.5 pt ltabvs +grestore + +grestore +220 fnt35 170 8739(b)m 240 fnt82 679 8742(One)m +220 fnt35 1133 8739(b)m 240 fnt82 1305 8742(equals)m 1965(the)s +2311(width)s 2912(of)s 3181(the)s 3527(whole)s 4166(concatenation)s +5550(object,)s 6239(or)s 6496(its)s 6770(height)s 7427(if)s +7642(the)s 7988(symbol)s 8746(is)s 679 8454(v)m 3(ertical)k +1446(concatenation.)s 0 86 0 86 240 288 60 9066 8905 LoutGr2 +0.5 pt ltabvs +grestore + +grestore +0 454 0 345 240 288 60 9066 8451 LoutGr2 +0.5 pt ltabvs +grestore + +grestore +0 86 0 0 240 288 60 9066 8365 LoutGr2 +0.5 pt ltabvs +grestore + +grestore +0 86 0 86 240 288 60 0 8279 LoutGr2 +0.5 pt ltabvs +grestore + +grestore +0 503 0 394 240 288 60 0 7776 LoutGr2 +0.5 pt ltabvs +grestore + +grestore +0 86 0 0 240 288 60 0 7690 LoutGr2 +0.5 pt ltabvs +grestore + +grestore +220 fnt35 170 8113(r)m 240 fnt82 679 8116(One)m +220 fnt35 1176 8113(r)m 240 fnt82 1352 8116(equals)m 2057(one)s +220 fnt35 2502 8113(b)m 240 fnt82 2718 8116(minus)m 3397(one)s +220 fnt35 3842 8113(w)m 240 fnt82 3998 8116(.)m 4205(This)s +4723(unit)s 5198(is)s 5451(used)s 5991(for)s 6371(centring,)s +7304(and)s 7751(for)s 8132(left)s 8552(and)s 679 7828(right)m +1190(justi\207cation.)s 0 86 0 86 240 288 60 9066 8279 LoutGr2 +0.5 pt ltabvs +grestore + +grestore +0 503 0 394 240 288 60 9066 7776 LoutGr2 +0.5 pt ltabvs +grestore + +grestore +0 86 0 0 240 288 60 9066 7690 LoutGr2 +0.5 pt ltabvs +grestore + +grestore +0 86 0 86 240 288 60 0 7604 LoutGr2 +0.5 pt ltabvs +grestore + +grestore +0 215 0 106 240 288 60 0 7389 LoutGr2 +0.5 pt ltabvs +grestore + +grestore +0 86 0 0 240 288 60 0 7303 LoutGr2 +0.5 pt ltabvs +grestore + +grestore +220 fnt35 170 7438(d)m 240 fnt82 679 7441(De)m 3(grees.)k +1623(This)s 2099(unit)s 2531(may)s 2997(only)s 3477(be)s +3759(used)s 4256(with)s 4738(the)s 220 fnt35 5086 7438(@Rotate)m +240 fnt82 6007 7441(symbol.)m 0 86 0 86 240 288 60 9066 7604 LoutGr2 +0.5 pt ltabvs +grestore + +grestore +0 215 0 106 240 288 60 9066 7389 LoutGr2 +0.5 pt ltabvs +grestore + +grestore +0 86 0 0 240 288 60 9066 7303 LoutGr2 +0.5 pt ltabvs +grestore + +grestore +0 86 0 86 240 288 60 0 7217 LoutGr2 +0.5 pt ltabvs +grestore + +grestore +0 504 0 394 240 288 60 0 6713 LoutGr2 +0.5 pt ltabvs +grestore + +grestore +0 86 0 0 240 288 60 0 6627 LoutGr2 +0.5 pt ltabvs +grestore + +grestore +220 fnt35 170 7050(y)m 240 fnt82 +679 7053(One)m 220 fnt35 1129 7050(y)m 240 fnt82 1292 7053(equals)m +1949(the)s 2292(current)s 3023(v)s 6(alue)k 3586(set)s +3906(by)s 4195(the)s 220 fnt35 4538 7050(@YUnit)m 240 fnt82 +5347 7053(symbol)m 6102(\(Section)s 6950(3.6\).)s 7488(This)s 7959(unit)s +8386(is)s 8590(not)s 679 6765(used)m 1176(internally)s 2145(by)s +2439(Lout;)s 3003(it)s 3195(is)s 3405(included)s 4287(for)s +4625(the)s 4973(con)s 9(v)k 3(enience)k 6213(of)s +6484(application)s 7603(packages.)s 0 86 0 86 240 288 60 9066 7217 LoutGr2 +0.5 pt ltabvs +grestore + +grestore +0 504 0 394 240 288 60 9066 6713 LoutGr2 +0.5 pt ltabvs +grestore + +grestore +0 86 0 0 240 288 60 9066 6627 LoutGr2 +0.5 pt ltabvs +grestore + +grestore +0 86 0 86 240 288 60 0 6541 LoutGr2 +0.5 pt ltabvs +grestore + +grestore +0 504 0 394 240 288 60 0 6037 LoutGr2 +0.5 pt ltabvs +grestore + +grestore +0 86 0 0 240 288 60 0 5951 LoutGr2 +0.5 pt ltabvs +grestore + +grestore +170 0 0 0 240 288 60 0 5951 LoutGr2 +0.5 pt ltabhsp +grestore + +grestore +220 fnt35 170 6374(z)m gsave +170 5951 translate +240 fnt82 169 0 0 0 240 288 60 LoutGraphic +gsave +0.5 pt ltabhs +grestore + +grestore +gsave +339 5951 translate +240 fnt82 170 0 0 0 240 288 60 LoutGraphic +gsave +0.5 pt ltabhs +grestore + +grestore +gsave +509 5951 translate +240 fnt82 170 0 0 0 240 288 60 LoutGraphic +gsave +0.5 pt ltabhs +grestore + +grestore +240 fnt82 +679 6377(One)m 220 fnt35 1130 6374(z)m 240 fnt82 1290 6377(equals)m +1948(the)s 2292(current)s 3024(v)s 6(alue)k 3588(set)s +3909(by)s 4199(the)s 220 fnt35 4543 6374(@ZUnit)m 240 fnt82 +5341 6377(symbol)m 6097(\(Section)s 6946(3.6\).)s 7485(This)s 7957(unit)s +8385(is)s 8590(not)s 679 6089(used)m 1176(internally)s 2145(by)s +2439(Lout;)s 3003(it)s 3195(is)s 3405(included)s 4287(for)s +4625(the)s 4973(con)s 9(v)k 3(enience)k 6213(of)s +6484(application)s 7603(packages.)s 8217 0 0 0 240 288 60 679 5951 LoutGr2 +0.5 pt ltabhs +grestore + +grestore +170 0 0 0 240 288 60 8896 5951 LoutGr2 +0.5 pt ltabhsp +grestore + +grestore +0 86 0 86 240 288 60 9066 6541 LoutGr2 +0.5 pt ltabvs +grestore + +grestore +0 504 0 394 240 288 60 9066 6037 LoutGr2 +0.5 pt ltabvs +grestore + +grestore +0 86 0 0 240 288 60 9066 5951 LoutGr2 +0.5 pt ltabvs +grestore + +grestore +200 fnt84 1938 5388(Figur)m 3(e)k +2546(3.1.)s 200 fnt82 2938 5389(The)m 3294(thirteen)s 3948(units)s +4377(of)s 4603(measurement)s 5713(pro)s 3(vided)k 6468(by)s +6713(Lout.)s 240 fnt82 0 4758(will)m 426(centre)s 1065(it.)s +480 4384(The)m 914(v)s 6(alue)k 220 fnt35 1488 4381(|0r)m -8(t)k +240 fnt82 1871 4384(separating)m 2913(the)s 3267(\207rst)s 3704(and)s +4115(second)s 4844(items)s 5418(in)s 5667(a)s 5840(sequence)s +6779(of)s 7056(horizontally)s 8272(concate)s 8998(-)s 0 4096(nated)m +572(objects)s 1296(is)s 1502(some)s 6(what)k 2522(special)s +3236(in)s 3475(that)s 3889(it)s 4077(denotes)s 4855(left)s +5228(justi\207cation)s 6409(of)s 6676(the)s 7020(object)s 7660(to)s +7895(its)s 8167(left)s 8540(in)s 8778(the)s 0 3808(a)m 4(v)k 6(ailable)k +902(space.)s 1590(This)s 2059(is)s 2262(identical)s 3132(with)s +220 fnt35 3607 3805(|0ie)m 240 fnt82 4001 3808(when)m 4570(the)s +4911(object)s 5548(to)s 5780(the)s 6121(left)s 6491(also)s +6922(has)s 7285(the)s 7626(principal)s 8523(mark;)s 0 3520(b)m 4(ut)k +354(when)s 922(it)s 1105(does)s 1587(not,)s 220 fnt35 +1991 3517(|0r)m -8(t)k 240 fnt82 2360 3520(will)m 2777(cause)s +3356(the)s 3695(object)s 4331(to)s 4561(the)s 4901(left)s +5269(to)s 5500(appear)s 6188(further)s 6889(to)s 7119(the)s +7459(left)s 7827(than)s 8288(it)s 8471(w)s 2(ould)k +0 3232(otherwise)m 985(ha)s 4(v)k 3(e)k 1486(done,)s +2059(if)s 2276(space)s 2863(to)s 3102(do)s 3395(so)s +3661(is)s 3871(a)s 4(v)k 6(ailable.)k 480 2858(A)m +744(g)s 1(ap)k 1177(is)s 1421(optionally)s 2480(concluded)s +3557(with)s 4073(an)s 4391(indication)s 5439(of)s 5744(unbreakability)s 15(,)k +7252(which)s 7929(is)s 8173(a)s 8374(letter)s 220 fnt35 +8958 2855(u)m 240 fnt82 0 2570(appended)m 976(to)s 1215(the)s +1563(g)s 1(ap.)k 2072(A)s 2303(paragraph)s 3316(will)s +3742(ne)s 6(v)k 3(er)k 4324(be)s 4607(brok)s 2(en)k +5327(at)s 5559(an)s 5842(unbreakable)s 7068(g)s 1(ap,)k +7520(nor)s 7899(will)s 8325(a)s 8492(g)s 1(alle)k 3(y)k +0 2282(be)m 293(brok)s 2(en)k 1025(across)s 1684(tw)s 2(o)k +2106(tar)s 4(gets)k 2800(at)s 3044(such)s 3551(a)s +3729(g)s 1(ap.)k 4249(Basser)s 4958(Lout')s 13(s)k +5631(implementation)s 7200(is)s 7421(slightly)s 8204(defecti)s 6(v)k 3(e)k +0 1994(in)m 242(that)s 659(it)s 849(ignores)s 1603(an)s 3(y)k +1999(unbreakable)s 3222(indication)s 4234(in)s 4476(the)s 4822(g)s 1(ap)k +5219(separating)s 6253(the)s 6599(\207rst)s 7029(component)s 8151(promoted)s +0 1706(into)m 425(an)s 3(y)k 822(tar)s 4(get)k +1421(from)s 1945(the)s 2293(second.)s 480 1332(When)m 1111(tw)s 2(o)k +1523(objects)s 2254(are)s 2603(separated)s 3566(only)s 4048(by)s +4345(zero)s 4811(or)s 5072(more)s 5622(white)s 6211(space)s +6801(characters)s 7821(\(spaces,)s 8634(tabs,)s 0 1044(ne)m 6(wlines,)k +983(and)s 1420(formfeeds\),)s 2607(Lout)s 3152(inserts)s 220 fnt35 +3859 1041(&)m 240 fnt83 4001 1046(k)m 220 fnt35 4111 1041(s)m +240 fnt82 4307 1044(between)m 5194(the)s 5575(tw)s 2(o)k +6018(objects,)s 6835(where)s 240 fnt83 7508 1046(k)m 240 fnt82 +7711 1044(is)m 7954(the)s 8335(number)s 0 756(of)m 291(spaces.)s +1100(Precisely)s 15(,)k 240 fnt83 2087 758(k)m 240 fnt82 +2278 756(is)m 2509(determined)s 3662(by)s 3977(discarding)s 5047(all)s +5360(space)s 5968(characters)s 7007(and)s 7431(tabs)s 7888(that)s +8327(precede)s 0 468(ne)m 6(wlines)k 903(\(these)s 1537(are)s +1892(in)s 9(visible)k 2771(so)s 3045(are)s 3400(better)s +4012(ignored\),)s 4937(then)s 5414(counting)s 6313(1)s 6477(for)s +6823(each)s 7326(ne)s 6(wline,)k 8193(formfeed)s 0 180(or)m +259(space,)s 897(and)s 1301(8)s 1468(for)s 1806(each)s +2301(tab)s 2646(character)s 13(.)k 3671(The)s 4099(g)s 1(ap)k +4497(will)s 4923(be)s 5205(unbreakable)s 6430(if)s 240 fnt83 +6647 182(k)m 240 fnt82 6817 180(is)m 7027(zero.)s +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 39 45 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Italic +%%+ font Times-Bold +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +1 LoutMargSet +grestore +240 fnt83 0 13843(3.2.)m 454(Concatenation)s 1918(symbols)s 2744(and)s +3170(par)s 3(a)k 2(gr)k 3(aphs)k 240 fnt84 +8832 13840(39)m gsave +1450 5884 translate +240 fnt82 6166 7484 0 7484 240 288 60 LoutGraphic +gsave +grestore save gsave 200 dict begin lfigdict begin +grestore +0 6710(Edge-to-edge)m 220 fnt35 1786 6707(|)m 240 fnt83 +1843 6712(l)m 220 fnt35 1929 6707(e)m 240 fnt82 0 5558(Hyphenation)m +220 fnt35 1786 5555(|)m 240 fnt83 1843 5560(l)m 220 fnt35 +1929 5555(h)m 240 fnt82 0 4406(Ov)m 3(erstrik)k 2(e)k +220 fnt35 1786 4403(|)m 240 fnt83 1843 4408(l)m 220 fnt35 +1929 4403(o)m 240 fnt82 0 3254(Mark-to-mark)m 220 fnt35 1786 3251(|)m +240 fnt83 1843 3256(l)m 220 fnt35 1929 3251(x)m 240 fnt82 +0 2102(K)m 6(erning)k 220 fnt35 1786 2099(|)m 240 fnt83 +1843 2104(l)m 220 fnt35 1929 2099(k)m 240 fnt82 0 950(T)m 19(ab)k 4(ulation)k +220 fnt35 1786 947(|)m 240 fnt83 1843 952(l)m 220 fnt35 +1929 947(t)m gsave +2764 0 translate +240 fnt82 3402 7484 0 7484 240 288 60 LoutGraphic +gsave + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigbox ] lfigdopath +pop pop +grestore +gsave +567 6748 translate +180 fnt82 680 340 0 340 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto +xsize ysize lineto 0 ysize lineto closepath +gsave 0.9 setgray fill grestore stroke +grestore + +grestore +gsave +680 6634 translate +180 fnt82 0 567 0 567 180 288 45 LoutGraphic +gsave +0 0 moveto 0 ysize lineto [ 3 pt ] 0 setdash stroke +grestore + +grestore +gsave +2268 6748 translate +180 fnt82 680 340 0 340 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto +xsize ysize lineto 0 ysize lineto closepath +gsave 0.9 setgray fill grestore stroke +grestore + +grestore +gsave +2551 6634 translate +180 fnt82 0 567 0 567 180 288 45 LoutGraphic +gsave +0 0 moveto 0 ysize lineto [ 3 pt ] 0 setdash stroke +grestore + +grestore +gsave +2267 6658 translate +180.0000 rotate +gsave +0 0 translate +30.0000 rotate +gsave +0 0 translate +180 fnt82 68 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore +gsave +0 0 translate +180 fnt82 1020 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore +gsave +0 0 translate +-30.0000 rotate +gsave +0 0 translate +180 fnt82 68 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore + +grestore +gsave +1247 6658 translate +30.0000 rotate +gsave +0 0 translate +180 fnt82 68 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore +gsave +1247 6658 translate +180 fnt82 1020 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore +gsave +1247 6658 translate +-30.0000 rotate +gsave +0 0 translate +180 fnt82 68 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore +180 fnt83 1732 6455(l)m gsave +567 5596 translate +180 fnt82 680 340 0 340 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto +xsize ysize lineto 0 ysize lineto closepath +gsave 0.9 setgray fill grestore stroke +grestore + +grestore +gsave +680 5482 translate +180 fnt82 0 567 0 567 180 288 45 LoutGraphic +gsave +0 0 moveto 0 ysize lineto [ 3 pt ] 0 setdash stroke +grestore + +grestore +gsave +2268 5596 translate +180 fnt82 680 340 0 340 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto +xsize ysize lineto 0 ysize lineto closepath +gsave 0.9 setgray fill grestore stroke +grestore + +grestore +gsave +2551 5482 translate +180 fnt82 0 567 0 567 180 288 45 LoutGraphic +gsave +0 0 moveto 0 ysize lineto [ 3 pt ] 0 setdash stroke +grestore + +grestore +gsave +2267 5506 translate +180.0000 rotate +gsave +0 0 translate +30.0000 rotate +gsave +0 0 translate +180 fnt82 68 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore +gsave +0 0 translate +180 fnt82 1020 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore +gsave +0 0 translate +-30.0000 rotate +gsave +0 0 translate +180 fnt82 68 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore + +grestore +gsave +1247 5506 translate +30.0000 rotate +gsave +0 0 translate +180 fnt82 68 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore +gsave +1247 5506 translate +180 fnt82 1020 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore +gsave +1247 5506 translate +-30.0000 rotate +gsave +0 0 translate +180 fnt82 68 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore +1732 5303(l)m gsave +567 4444 translate +180 fnt82 680 340 0 340 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto +xsize ysize lineto 0 ysize lineto closepath +gsave 0.9 setgray fill grestore stroke +grestore + +grestore +gsave +680 4330 translate +180 fnt82 0 567 0 567 180 288 45 LoutGraphic +gsave +0 0 moveto 0 ysize lineto [ 3 pt ] 0 setdash stroke +grestore + +grestore +gsave +2268 4444 translate +180 fnt82 680 340 0 340 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto +xsize ysize lineto 0 ysize lineto closepath +gsave 0.9 setgray fill grestore stroke +grestore + +grestore +gsave +2551 4330 translate +180 fnt82 0 567 0 567 180 288 45 LoutGraphic +gsave +0 0 moveto 0 ysize lineto [ 3 pt ] 0 setdash stroke +grestore + +grestore +gsave +2551 4297 translate +180.0000 rotate +gsave +0 0 translate +30.0000 rotate +gsave +0 0 translate +180 fnt82 68 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore +gsave +0 0 translate +180 fnt82 1871 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore +gsave +0 0 translate +-30.0000 rotate +gsave +0 0 translate +180 fnt82 68 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore + +grestore +gsave +680 4297 translate +30.0000 rotate +gsave +0 0 translate +180 fnt82 68 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore +gsave +680 4297 translate +180 fnt82 1871 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore +gsave +680 4297 translate +-30.0000 rotate +gsave +0 0 translate +180 fnt82 68 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore +1590 4095(l)m +gsave +567 3242 translate +180 fnt82 680 340 0 340 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto +xsize ysize lineto 0 ysize lineto closepath +gsave 0.9 setgray fill grestore stroke +grestore + +grestore +gsave +680 3128 translate +180 fnt82 0 567 0 567 180 288 45 LoutGraphic +gsave +0 0 moveto 0 ysize lineto [ 3 pt ] 0 setdash stroke +grestore + +grestore +gsave +2268 3242 translate +180 fnt82 680 340 0 340 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto +xsize ysize lineto 0 ysize lineto closepath +gsave 0.9 setgray fill grestore stroke +grestore + +grestore +gsave +2551 3128 translate +180 fnt82 0 567 0 567 180 288 45 LoutGraphic +gsave +0 0 moveto 0 ysize lineto [ 3 pt ] 0 setdash stroke +grestore + +grestore +gsave +2551 3095 translate +180.0000 rotate +gsave +0 0 translate +30.0000 rotate +gsave +0 0 translate +180 fnt82 68 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore +gsave +0 0 translate +180 fnt82 1871 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore +gsave +0 0 translate +-30.0000 rotate +gsave +0 0 translate +180 fnt82 68 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore + +grestore +gsave +680 3095 translate +30.0000 rotate +gsave +0 0 translate +180 fnt82 68 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore +gsave +680 3095 translate +180 fnt82 1871 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore +gsave +680 3095 translate +-30.0000 rotate +gsave +0 0 translate +180 fnt82 68 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore +180 fnt82 975 2892(max\()m 180 fnt83 1383 2893(l,)m 1503(a+b+l/10)s +180 fnt82 2205 2892(\))m gsave +1247 3719 translate +180.0000 rotate +gsave +0 0 translate +30.0000 rotate +68 0 0 0 180 288 45 0 0 LoutGr2 +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore +567 0 0 0 180 288 45 0 0 LoutGr2 +0 0 moveto xsize 0 lineto stroke +grestore + +grestore +gsave +0 0 translate +-30.0000 rotate +68 0 0 0 180 288 45 0 0 LoutGr2 +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore + +grestore +gsave +680 3719 translate +30.0000 rotate +68 0 0 0 180 288 45 0 0 LoutGr2 +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore +567 0 0 0 180 288 45 680 3719 LoutGr2 +0 0 moveto xsize 0 lineto stroke +grestore + +grestore +gsave +680 3719 translate +-30.0000 rotate +68 0 0 0 180 288 45 0 0 LoutGr2 +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore +180 fnt83 920 3787(a)m gsave +2551 3719 translate +180.0000 rotate +gsave +0 0 translate +30.0000 rotate +gsave +0 0 translate +180 fnt82 68 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore +gsave +0 0 translate +180 fnt82 283 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore +gsave +0 0 translate +-30.0000 rotate +gsave +0 0 translate +180 fnt82 68 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore + +grestore +gsave +2268 3719 translate +30.0000 rotate +gsave +0 0 translate +180 fnt82 68 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore +gsave +2268 3719 translate +180 fnt82 283 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore +gsave +2268 3719 translate +-30.0000 rotate +gsave +0 0 translate +180 fnt82 68 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore +2366 3743(b)m +gsave +567 2090 translate +180 fnt82 680 340 0 340 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto +xsize ysize lineto 0 ysize lineto closepath +gsave 0.9 setgray fill grestore stroke +grestore + +grestore +gsave +680 1976 translate +180 fnt82 0 567 0 567 180 288 45 LoutGraphic +gsave +0 0 moveto 0 ysize lineto [ 3 pt ] 0 setdash stroke +grestore + +grestore +gsave +2268 2090 translate +180 fnt82 680 340 0 340 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto +xsize ysize lineto 0 ysize lineto closepath +gsave 0.9 setgray fill grestore stroke +grestore + +grestore +gsave +2551 1976 translate +180 fnt82 0 567 0 567 180 288 45 LoutGraphic +gsave +0 0 moveto 0 ysize lineto [ 3 pt ] 0 setdash stroke +grestore + +grestore +gsave +2551 1943 translate +180.0000 rotate +gsave +0 0 translate +30.0000 rotate +gsave +0 0 translate +180 fnt82 68 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore +gsave +0 0 translate +180 fnt82 1871 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore +gsave +0 0 translate +-30.0000 rotate +gsave +0 0 translate +180 fnt82 68 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore + +grestore +gsave +680 1943 translate +30.0000 rotate +gsave +0 0 translate +180 fnt82 68 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore +gsave +680 1943 translate +180 fnt82 1871 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore +gsave +680 1943 translate +-30.0000 rotate +gsave +0 0 translate +180 fnt82 68 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore +180 fnt82 1203 1740(max\()m 180 fnt83 1611 1741(l,)m 1731(a,)s +1891(b)s 180 fnt82 1977 1740(\))m gsave +1247 2567 translate +180.0000 rotate +gsave +0 0 translate +30.0000 rotate +68 0 0 0 180 288 45 0 0 LoutGr2 +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore +567 0 0 0 180 288 45 0 0 LoutGr2 +0 0 moveto xsize 0 lineto stroke +grestore + +grestore +gsave +0 0 translate +-30.0000 rotate +68 0 0 0 180 288 45 0 0 LoutGr2 +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore + +grestore +gsave +680 2567 translate +30.0000 rotate +68 0 0 0 180 288 45 0 0 LoutGr2 +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore +567 0 0 0 180 288 45 680 2567 LoutGr2 +0 0 moveto xsize 0 lineto stroke +grestore + +grestore +gsave +680 2567 translate +-30.0000 rotate +68 0 0 0 180 288 45 0 0 LoutGr2 +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore +180 fnt83 920 2635(a)m +gsave +2551 2567 translate +180.0000 rotate +gsave +0 0 translate +30.0000 rotate +gsave +0 0 translate +180 fnt82 68 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore +gsave +0 0 translate +180 fnt82 283 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore +gsave +0 0 translate +-30.0000 rotate +gsave +0 0 translate +180 fnt82 68 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore + +grestore +gsave +2268 2567 translate +30.0000 rotate +gsave +0 0 translate +180 fnt82 68 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore +gsave +2268 2567 translate +180 fnt82 283 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore +gsave +2268 2567 translate +-30.0000 rotate +gsave +0 0 translate +180 fnt82 68 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore +2366 2591(b)m gsave +567 938 translate +180 fnt82 680 340 0 340 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto +xsize ysize lineto 0 ysize lineto closepath +gsave 0.9 setgray fill grestore stroke +grestore + +grestore +gsave +680 824 translate +180 fnt82 0 567 0 567 180 288 45 LoutGraphic +gsave +0 0 moveto 0 ysize lineto [ 3 pt ] 0 setdash stroke +grestore + +grestore +gsave +2268 938 translate +180 fnt82 680 340 0 340 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto +xsize ysize lineto 0 ysize lineto closepath +gsave 0.9 setgray fill grestore stroke +grestore + +grestore +gsave +2551 824 translate +180 fnt82 0 567 0 567 180 288 45 LoutGraphic +gsave +0 0 moveto 0 ysize lineto [ 3 pt ] 0 setdash stroke +grestore + +grestore +gsave +2268 734 translate +180.0000 rotate +gsave +0 0 translate +30.0000 rotate +gsave +0 0 translate +180 fnt82 68 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore +gsave +0 0 translate +180 fnt82 2268 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore +gsave +0 0 translate +-30.0000 rotate +gsave +0 0 translate +180 fnt82 68 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore + +grestore +gsave +0 734 translate +30.0000 rotate +gsave +0 0 translate +180 fnt82 68 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore +gsave +0 734 translate +180 fnt82 2268 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore +gsave +0 734 translate +-30.0000 rotate +gsave +0 0 translate +180 fnt82 68 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore +1587 532(l)m gsave +3402 234 translate +180.0000 rotate +gsave +0 0 translate +30.0000 rotate +gsave +0 0 translate +180 fnt82 68 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore +gsave +0 0 translate +180 fnt82 3402 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore +gsave +0 0 translate +-30.0000 rotate +gsave +0 0 translate +180 fnt82 68 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore + +grestore +gsave +0 234 translate +30.0000 rotate +gsave +0 0 translate +180 fnt82 68 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore +gsave +0 234 translate +180 fnt82 3402 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore +gsave +0 234 translate +-30.0000 rotate +gsave +0 0 translate +180 fnt82 68 0 0 0 180 288 45 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore + +grestore +1189 23(curr)m 6(ent)k 1759(bound)s + +grestore +end end restore +grestore +200 fnt84 2562 5321(Figur)m 3(e)k 3170(3.2.)s 200 fnt82 +3562 5322(The)m 3918(six)s 4196(g)s 1(ap)k 4527(modes)s +5089(pro)s 3(vided)k 5844(by)s 6089(Lout.)s 240 fnt82 +480 4689(A)m 724(sequence)s 1672(of)s 1958(tw)s 2(o)k +2383(or)s 2657(more)s 3219(objects)s 3962(separated)s 4936(by)s +220 fnt35 5245 4686(&)m 240 fnt82 5462 4689(symbols)m 6326(is)s +6551(a)s 240 fnt83 6732 4691(par)m 3(a)k 2(gr)k 3(aph)k +240 fnt82 7745 4689(.)m 7924(Lout)s 8451(breaks)s 0 4401(paragraphs)m +1100(into)s 1526(lines)s 2029(automatically)s 3384(as)s 3635(required,)s +4539(by)s 4834(con)s 9(v)k 3(erting)k 5898(some)s +6460(of)s 6732(the)s 220 fnt35 7081 4398(&)m 240 fnt82 +7284 4401(symbols)m 8134(into)s 220 fnt35 8560 4398(//1vx)m 240 fnt82 +9022 4401(.)m 0 4113(Unbreakable)m 1279(g)s 1(aps)k 1769(are)s +2117(not)s 2485(eligible)s 3258(for)s 3597(this)s 3995(con)s 9(v)k 3(ersion.)k +5198(`Optimal')s 6173(line)s 6588(breaks)s 7265(are)s 7613(chosen,)s +8386(using)s 8960(a)s 0 3825(method)m 776(adapted)s 1578(from)s +2102(T)s 2198 3777(E)m 2306 3825(X)m 2535([5)s 2720(].)s +480 3451(If)m 735(an)s 220 fnt35 1043 3448(&)m 240 fnt82 +1271 3451(symbol)m 2056(whose)s 2750(g)s 1(ap)k 3173(has)s +3568(h)s 1(yphenation)k 4834(mode)s 5447(is)s 5683(chosen)s +6430(for)s 6793(replacement)s 8046(by)s 220 fnt35 8365 3448(//1vx)m +240 fnt82 8827 3451(,)m 8960(a)s 0 3163(h)m 1(yphen)k +755(will)s 1174(be)s 1448(appended)s 2417(to)s 2649(the)s +2989(preceding)s 3978(object,)s 4661(unless)s 5303(that)s 5714(object)s +6350(is)s 6553(a)s 6712(w)s 2(ord)k 7252(which)s +7887(already)s 8636(ends)s 0 2875(with)m 482(a)s 648(h)s 1(yphen.)k +1517(F)s 3(or)k 1906(e)s 3(xample,)k 220 fnt35 +480 2378(Long)m 1017(w)s 2(ords)k 1654(ma)s 6(y)k +2122(be)s 2419(h)s 6(yph &0ih enat &0ih ed.)k 240 fnt82 0 1879(could)m +590(ha)s 4(v)k 3(e)k 1091(the)s 1439(follo)s 6(wing)k +2416(result,)s 3053(depending)s 4104(where)s 4744(the)s 5092(line)s +5506(breaks)s 6181(f)s 2(all:)k 480 1376(Long)m 1038(w)s 2(ords)k +1670(may)s 2135(be)s 2415(h)s 1(yphenat)k 3292(-)s +480 1088(ed.)m 0 635(Basser)m 702(Lout)s 1219(inserts)s 1898(h)s 1(yphenation)k +3143(g)s 1(aps)k 3637(automatically)s 4996(as)s 5251(required,)s +6159(ag)s 1(ain)k 6738(follo)s 6(wing)k 7720(the)s +8073(method)s 8855(of)s 0 347(T)m 96 299(E)m 204 347(X)m +373(,)s 479(which)s 1120(approximates)s 2458(the)s 2804(h)s 1(yphenations)k +4130(in)s 4372(W)s 19(ebster')k 13(s)k 5358(dictionary)s 15(.)k +6474(T)s 19(o)k 6773(pre)s 6(v)k 3(ent)k +7540(the)s 7886(h)s 1(yphenation)k 0 59(of)m 268(a)s +430(single)s 1053(w)s 2(ord,)k 1646(enclose)s 2416(it)s +2604(in)s 2843(quotes.)s 3628(Further)s 4387(control)s 5116(o)s 3(v)k 3(er)k +5591(paragraph)s 6600(breaking)s 7486(and)s 7886(h)s 1(yphenation)k + +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 40 46 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +%%+ font Times-Italic +%%+ font Helvetica +%%+ font Times-BoldItalic +/pgsave save def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +%%IncludeResource: font Times-BoldItalic +/Times-BoldItalicfnt85 vec2 /Times-BoldItalic LoutRecode +/fnt85 { /Times-BoldItalicfnt85 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +0 LoutMargSet +grestore +240 fnt84 0 13840(40)m 240 fnt83 6081 13843(Chapter)m 6931(3.)s +7205(Pr)s 8(ede\207ned)k 8300(symbols)s 240 fnt82 0 13203(is)m +210(pro)s 3(vided)k 1116(by)s 1410(the)s 220 fnt35 +1758 13200(@Break)m 240 fnt82 2614 13203(and)m 220 fnt35 3018 13200(@Space)m +240 fnt82 3915 13203(symbols)m 4764(\(Sections)s 5704(3.4)s 6058(and)s +6462(3.5\).)s 240 fnt84 0 12410(3.3.)m 471(@F)s 6(ont)k +1226(and)s 1667(@Char)s 240 fnt82 480 11978(A)m 240 fnt83 +728 11980(font)m 240 fnt82 1182 11978(is)m 1410(a)s 1594(collection)s +2611(of)s 2900(characters)s 3936(which)s 4596(may)s 5080(be)s +5380(printed.)s 6239(Man)s 3(y)k 6867(fonts)s 7414(come)s +8006(in)s 240 fnt83 8268 11980(families)m 240 fnt82 9019 11978(,)m +0 11690(which)m 634(are)s 973(groups)s 1667(of)s 1930(fonts)s +2450(that)s 2860(ha)s 4(v)k 3(e)k 3352(been)s +3853(designed)s 4754(to)s 4984(go)s 5269(together)s 13(.)k +6194(F)s 3(or)k 6575(e)s 3(xample,)k 7480(the)s +7820(T)s 8(imes)k 8451(f)s 2(amily)k 0 11402(includes)m +848(the)s 1196(follo)s 6(wing)k 2173(fonts:)s 480 10899(T)m 8(imes)k +1120(Base)s 240 fnt83 480 10613(T)m 13(imes)k 1093(Slope)s +240 fnt84 480 10322(T)m 4(imes)k 1154(Bold)s 240 fnt85 +480 10034(T)m 8(imes)k 1116(BoldSlope)s 240 fnt82 0 9532(Thus,)m +586(each)s 1080(font)s 1524(has)s 1893(tw)s 2(o)k +2303(names:)s 3019(its)s 240 fnt83 3294 9534(family)m 3946(name)s +240 fnt82 4518 9532(\(T)m 8(imes,)k 5292(Helv)s 3(etica,)k +6310(etc.\))s 6775(and)s 7179(its)s 240 fnt83 7454 9534(face)m +7904(name)s 240 fnt82 8475 9532(\(Base,)m 0 9244(Slope,)m 682(etc.\).)s +1294(T)s 8(imes)k 1964(Base)s 2516(is)s 2756(more)s +3334(commonly)s 4443(called)s 5101(T)s 8(imes)k 5772(Roman,)s +6601(and)s 7036(T)s 8(imes)k 7706(Slope)s 8338(is)s +8579(more)s 0 8956(commonly)m 1085(called)s 1720(T)s 8(imes)k +2367(Italic.)s 3027(Lout)s 3547(a)s 4(v)k 4(oids)k +4222(these)s 4776(names)s 5445(in)s 5695(f)s 2(a)k 4(v)k 4(our)k +6377(of)s 6655(generic)s 7418(names)s 8087(which)s 8737(can)s +0 8668(be)m 282(applied)s 1044(to)s 1283(man)s 3(y)k +1866(font)s 2311(f)s 2(amilies.)k 480 8294(Lig)m 1(atures,)k +1488(such)s 1984(as)s 2234(\210)s 2420(for)s 2758(f)s +2849(l)s 2970(and)s 3375(\207)s 3560(for)s 3898(f)s +3989(i,)s 4163(are)s 4510(considered)s 5604(by)s 5899(Basser)s +6596(Lout)s 7108(to)s 7348(be)s 7630(an)s 7913(inte)s 3(gral)k +8695(part)s 0 8006(of)m 257(the)s 591(font:)s 1128(if)s +1331(the)s 1665(font)s 2096(de\207nition)s 3056(\(see)s 3482(belo)s 6(w\))k +4175(mentions)s 5089(them,)s 5660(the)s 3(y)k 6109(will)s +6521(be)s 6789(used.)s 7378(Similarly)s 15(,)k 8344(k)s 2(erning)k +0 7718(\(\207ne)m 510(adjustment)s 1636(of)s 1924(the)s 2289(space)s +2893(between)s 3764(adjacent)s 4637(characters)s 5672(to)s 5928(impro)s 3(v)k 3(e)k +6792(the)s 7157(appearance\))s 8377(is)s 8604(done)s 0 7430(whene)m 6(v)k 3(er)k +988(indicated)s 1929(in)s 2179(the)s 2535(font)s 2987(de\207nition.)s +4075(Enclosing)s 5092(one)s 5502(of)s 5780(the)s 6135(letters)s +6775(in)s 220 fnt35 7026 7427(@OneCol)m 240 fnt82 8045 7430(is)m +8262(one)s 8672(sure)s 0 7142(w)m 2(ay)k 451(to)s +690(disable)s 1423(a)s 1589(lig)s 1(ature)k 2373(or)s +2632(k)s 2(ern.)k 480 6768(The)m 220 fnt35 908 6765(@F)m 6(ont)k +240 fnt82 1620 6768(symbol)m 2380(returns)s 3094(its)s 3370(right)s +3881(parameter)s 4895(in)s 5138(a)s 5304(font)s 5749(and)s +6153(size)s 6580(speci\207ed)s 7488(by)s 7782(its)s 8058(left:)s +220 fnt35 480 6260({ )m 11(Times Base 12p } @F)k 6(ont)k 240 fnt83 +3155 6265(object)m 240 fnt82 0 5764(The)m 417(f)s 2(amily)k +1080(and)s 1473(f)s 2(ace)k 1912(names)s 2563(must)s +3076(ha)s 4(v)k 3(e)k 3565(appeared)s 4475(together)s +5306(in)s 5538(a)s 220 fnt35 5692 5761(f)m 6(ontdef)k +240 fnt82 6354 5764(;)m 6454(the)s 6791(size)s 7206(is)s +7405(arbitrary)s 8268(and)s 8660(may)s 0 5476(be)m 283(gi)s 6(v)k 3(en)k +865(in)s 1109(an)s 3(y)k 1508(one)s 1911(of)s +2184(the)s 220 fnt35 2533 5473(c)m 240 fnt82 2638 5476(,)m +220 fnt35 2747 5473(i)m 240 fnt82 2781 5476(,)m 220 fnt35 +2889 5473(p)m 240 fnt82 3003 5476(,)m 220 fnt35 3112 5473(m)m +240 fnt82 3281 5476(,)m 220 fnt35 3389 5473(f)m 240 fnt82 +3447 5476(,)m 220 fnt35 3556 5473(s)m 240 fnt82 3659 5476(,)m +3767(and)s 220 fnt35 4173 5473(v)m 240 fnt82 4343 5476(units)m +4861(of)s 5133(measurement)s 6469(\(Section)s 7323(3.2\),)s 7811(although)s +220 fnt35 8708 5473(10p)m 240 fnt82 0 5188(and)m 220 fnt35 +407 5185(12p)m 240 fnt82 828 5188(are)m 1178(the)s 1530(most)s +2058(common)s 2956(sizes)s 3475(for)s 3816(te)s 3(xt.)k +4338(There)s 4954(may)s 5424(be)s 5709(empty)s 6364(objects)s +7096(and)s 220 fnt35 7503 5185(@Null)m 240 fnt82 8151 5188(objects)m +8883(in)s 0 4900(the)m 348(left)s 725(parameter)s 1739(of)s +220 fnt35 2010 4897(@F)m 6(ont)k 240 fnt82 2662 4900(;)m +2774(these)s 3321(are)s 3668(ignored.)s 480 4526(When)m 1114(a)s +220 fnt35 1286 4523(@F)m 6(ont)k 240 fnt82 2004 4526(symbol)m +2769(is)s 2985(nested)s 3660(inside)s 4293(the)s 4646(right)s +5163(parameter)s 6183(of)s 6459(another)s 220 fnt35 7242 4523(@F)m 6(ont)k +240 fnt82 7960 4526(symbol,)m 8778(the)s 0 4238(inner)m 555(one)s +961(determines)s 2065(the)s 2417(font)s 2867(of)s 3142(its)s +3423(o)s 6(wn)k 3891(right)s 4406(parameter)s 13(.)k +5516(Ho)s 6(we)k 6(v)k 3(er)k 9(,)k +6480(it)s 6677(may)s 7147(be)s 7434(abbre)s 6(viated)k +8605(so)s 8876(as)s 0 3950(to)m 239(inherit)s 922(part)s +1353(of)s 1624(the)s 1972(outer)s 2523(symbol:)s 220 fnt35 +480 3449({ )m 11(Times Base 12p } @F)k 6(ont)k 480 3161({ hello)m 8(, Slope @F)k 6(ont hello)k 8(, 15p @F)k 6(ont hello })k +240 fnt82 0 2665(has)m 370(result)s 480 2184(hello,)m 240 fnt83 +1065 2186(hello,)m 300 fnt82 1636 2171(hello)m 240 fnt82 0 1700(The)m +457(\207rst)s 918(inner)s 220 fnt35 1498 1697(@F)m 6(ont)k +240 fnt82 2240 1700(inherits)m 3037(the)s 3414(outer)s 3995(f)s 2(amily)k +4699(and)s 5133(size,)s 5641(changing)s 6601(only)s 7111(the)s +7488(f)s 2(ace;)k 8025(the)s 8403(second)s 0 1412(inherits)m +754(the)s 1089(outer)s 1627(f)s 2(amily)k 2289(and)s +2680(f)s 2(ace.)k 3225(When)s 3841(a)s 3994(f)s 2(amily)k +4656(name)s 5217(is)s 5413(gi)s 6(v)k 3(en,)k +6030(it)s 6209(must)s 6721(be)s 6990(follo)s 6(wed)k +7878(immediately)s 0 1124(by)m 294(a)s 460(f)s 2(ace)k +911(name.)s 1593(A)s 1823(size)s 2250(change)s 2984(may)s +3450(appear)s 4147(\207rst)s 4578(or)s 4837(last.)s 480 750(Sizes)m +1035(of)s 1307(the)s 1656(form)s 2180(+)s 240 fnt83 +2308 752(length)m 240 fnt82 2962 750(and)m 3367(\211)s 240 fnt83 +3487 752(length)m 240 fnt82 4140 750(may)m 4607(also)s 5046(be)s +5328(used,)s 5875(meaning)s 6753(that)s 7171(the)s 7520(font)s +7966(size)s 8393(is)s 8604(to)s 8844(be)s 240 fnt83 +0 464(length)m 240 fnt82 649 462(lar)m 4(ger)k 1257(or)s +1512(smaller)s 2269(than)s 2734(the)s 3078(inherited)s 3981(v)s 6(alue.)k +4652(F)s 3(or)k 5037(e)s 3(xample,)k 5947(\211)s +220 fnt35 6067 459(2p)m 240 fnt82 6359 462(is)m 6564(often)s +7108(used)s 7601(for)s 7934(superscripts)s 0 174(and)m 407(subscripts.)s +1530(These)s 2161(forms)s 2772(are)s 3123(highly)s 3792(recommended,)s +5257(since)s 5808(the)s 3(y)k 6274(don')s 4(t)k +6839(need)s 7352(to)s 7594(be)s 7880(changed)s 8739(if)s +8960(a)s +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 41 47 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Italic +%%+ font Times-Bold +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +1 LoutMargSet +grestore +240 fnt83 0 13843(3.3.)m 454(@F)s 25(ont)k 1165(and)s +1591(@Char)s 240 fnt84 8839 13840(41)m 240 fnt82 0 13250(decision)m +854(is)s 1064(made)s 1638(to)s 1877(alter)s 2360(the)s +2708(font)s 3153(size)s 3580(of)s 3851(the)s 4199(document)s +5203(as)s 5453(a)s 5619(whole.)s 480 12876(The)m 220 fnt35 +908 12873(@F)m 6(ont)k 240 fnt82 1620 12876(symbol)m 2380(also)s +2818(switches)s 3692(to)s 3931(and)s 4335(from)s 4859(small)s +5431(capitals:)s 220 fnt35 480 12375(smallcaps @F)m 6(ont ...)k 480 12087(nosmallcaps @F)m 6(ont ...)k +240 fnt82 0 11591(These)m 639(may)s 1118(be)s 1412(nested,)s +2143(and)s 2559(the)s 3(y)k 3035(cooperate)s 4033(with)s +4527(other)s 5091(font)s 5548(changes.)s 6496(The)s 6936(precise)s +7681(ef)s 6(fect)k 8290(depends)s 0 11303(on)m 293(the)s +637(font)s 1078(\(see)s 1514(belo)s 6(w\).)k 2331(There)s +2940(is)s 3146(a)s 3308(def)s 2(ault)k 4024(v)s 6(alue)k +4588(\()s 220 fnt35 4661 11300(nosmallcaps)m 240 fnt82 5873 11303(\),)m +6055(so)s 6317(it)s 6504(is)s 6710(not)s 7072(necessary)s +8051(to)s 8285(mention)s 0 11015(this)m 396(attrib)s 4(ute)k +1243(when)s 1819(gi)s 6(ving)k 2478(an)s 2761(initial)s +3372(font.)s 480 10641(There)m 1080(are)s 1413(tw)s 2(o)k +1810(prede\207ned)s 2864(symbols,)s 220 fnt35 3756 10638(@CurrF)m 11(amily)k +240 fnt82 5083 10641(and)m 220 fnt35 5474 10638(@CurrF)m 11(ace)k +240 fnt82 6592 10641(,)m 6685(which)s 7314(respecti)s 6(v)k 3(ely)k +8499(return)s 0 10353(the)m 337(f)s 2(amily)k 1000(and)s +1392(f)s 2(ace)k 1831(names)s 2482(of)s 2741(the)s +3077(current)s 3801(font.)s 4339(F)s 3(or)k 4716(e)s 3(xample,)k +5618(right)s 6117(no)s 6(w)k 220 fnt35 6567 10350(@CurrF)m 11(amily)k +240 fnt82 7896 10353(is)m 8094(T)s 8(imes)k 8722(and)s +220 fnt35 0 10062(@CurrF)m 11(ace)k 240 fnt82 1178 10065(is)m +1388(Base.)s 480 9691(When)m 1109(Lout)s 1621(runs,)s 2140(the)s +2488(\207rst)s 2919(thing)s 3464(it)s 3656(reads)s 4211(is)s +4421(a)s 4587(list)s 4938(of)s 5209(font)s 5654(de\207nitions,)s +6771(lik)s 2(e)k 7183(these:)s 220 fnt35 480 9183(f)m 6(ontdef )k 11(Times Base {)k +240 fnt83 2842 9188(implementation-dependent)m 220 fnt35 5517 9183(})m 480 8895(f)m 6(ontdef )k 11(Times Slope {)k +240 fnt83 2841 8900(implementation-dependent)m 220 fnt35 5516 8895(})m 240 fnt82 +0 8399(Each)m 552(line)s 983(tells)s 1449(Lout)s 1978(of)s +2267(the)s 2632(e)s 3(xistence)k 3591(of)s 3880(a)s +4063(font,)s 4573(and)s 4994(assigns)s 5754(it)s 5963(a)s +6146(f)s 2(amily)k 6839(name)s 7430(and)s 7852(a)s +8035(f)s 2(ace)k 8504(name.)s 0 8111(There)m 617(are)s +969(a)s 1140(fe)s 6(w)k 1551(fonts)s 2085(which)s +2732(are)s 3084(the)s 3437(only)s 3921(members)s 4853(of)s +5129(their)s 5631(f)s 2(amilies;)k 6514(e)s 6(v)k 3(en)k +7019(though)s 7747(these)s 8299(fonts)s 8833(do)s 0 7823(not)m +357(need)s 857(a)s 1013(f)s 2(ace)k 1455(name,)s +2070(the)s 3(y)k 2523(must)s 3039(be)s 3311(gi)s 6(v)k 3(en)k +3881(one)s 4274(by)s 4558(their)s 220 fnt35 5045 7820(f)m 6(ontdef)k +240 fnt82 5707 7823(.)m 5862(The)s 6280(part)s 6701(between)s +7546(braces)s 8197(may)s 8653(v)s 6(ary)k 0 7535(with)m +486(dif)s 6(ferent)k 1365(implementations)s 3013(of)s 3288(Lout;)s +3856(it)s 4052(is)s 4267(supposed)s 5221(to)s 5464(contain)s +6229(the)s 6581(information)s 7770(Lout)s 8286(needs)s 8887(to)s +0 7247(w)m 2(ork)k 551(with)s 1033(the)s 1381(font.)s +480 6873(In)m 735(Basser)s 1431(Lout)s 1941(V)s 26(ersion)k +2728(3,)s 2954(this)s 3348(implementation-dependent)s 5970(part)s 6400(consists)s +7206(of)s 7476(a)s 7641(PostScript)s 8681(font)s 0 6585(name,)m +635(an)s 928(Adobe)s 1634(font)s 2089(metrics)s 2852(\(formerly)s +3831(AFM\))s 4488(\207le)s 4859(whose)s 5538(F)s 3(ontName)k +6611(entry)s 7166(must)s 7702(agree)s 8285(with)s 8778(the)s +0 6297(PostScript)m 1034(font)s 1471(name)s 2037(just)s 2433(mentioned,)s +3542(the)s 3882(name)s 4448(of)s 4710(a)s 4868(Lout)s +5372(Character)s 6352(Mapping)s 7261(\(LCM\))s 7979(\207le,)s 8383(and)s +8778(the)s 0 6009(w)m 2(ord)k 220 fnt35 548 6006(Recode)m +240 fnt82 1356 6009(or)m 220 fnt35 1615 6006(NoRecode)m 240 fnt82 +2643 6009(:)m 220 fnt35 480 5554(f)m 6(ontdef )k 11(Times Base { )k 11(Times-Roman )k 11(Ti-Ro LtLatin1.LCM Recode })k +240 fnt82 0 5060(It)m 226(seems)s 883(to)s 1143(ha)s 4(v)k 3(e)k +1666(become)s 2487(an)s 2792(in)s 9(v)k 6(ariable)k +3810(rule)s 4258(at)s 4512(Adobe)s 5228(Systems)s 6098(that)s +6538(the)s 6907(font)s 7374(name)s 7969(and)s 8395(the)s +8765(\207le)s 0 4772(name)m 591(should)s 1305(be)s 1605(the)s +1970(same,)s 2585(b)s 4(ut)k 2965(some)s 3543(operating)s +4517(systems)s 5342(do)s 5652(not)s 6036(permit)s 6736(such)s +7249(long)s 7746(\207le)s 8124(names,)s 8860(so)s 0 4484(Lout)m +526(does)s 1031(not)s 1411(use)s 1801(them.)s 2457(The)s +2900(\207les)s 3363(are)s 3725(searched)s 4633(for)s 4986(in)s +5243(standard)s 6126(places.)s 6901(Consult)s 7721(the)s 8084(PostScript)s +0 4196(Reference)m 1064(Manual)s 1891([1)s 2065(])s 2224(for)s +2603(general)s 3401(information)s 4627(about)s 5260(fonts)s 5830(and)s +6274(encoding)s 7246(v)s 3(ectors;)k 8086(brie\210y)s 15(,)k +8843(an)s 0 3908(8-bit)m 520(character)s 1464(code)s 240 fnt83 +1981 3910(c)m 240 fnt82 2153 3908(in)m 2405(Lout')s 13(s)k +3077(input)s 3638(is)s 3858(mapped)s 4683(to)s 4932(the)s +5289(character)s 6233(in)s 6485(the)s 6843(Adobe)s 7547(font)s +8002(metrics)s 8765(\207le)s 0 3620(whose)m 677(name)s 1260(appears)s +2050(on)s 2356(the)s 2714(line)s 3137(labelled)s 240 fnt83 +3960 3622(c)m 240 fnt82 4131 3620(in)m 4384(the)s 4741(LCM)s +5323(\207le.)s 5801(The)s 6239(LCM)s 6821(\207le)s 7191(also)s +7638(de\207nes)s 8377(v)s 6(arious)k 0 3332(character)m 4(-to-character)k +2162(mappings,)s 3215(such)s 3726(as)s 3991(upper)s 4(-case)k +5093(to)s 5347(lo)s 6(wer)k 4(-case,)k 6493(which)s +7150(are)s 7512(used)s 8024(for)s 8377(v)s 6(arious)k +0 3044(purposes,)m 947(such)s 1431(as)s 1669(the)s 2005(production)s +3087(of)s 3346(small)s 3906(capitals.)s 4787(If)s 5005(the)s +5341(w)s 2(ord)k 220 fnt35 5877 3041(NoRecode)m 240 fnt82 +6953 3044(appears,)m 7778(Lout)s 8278(assumes)s 0 2756(that)m 428(the)s +786(gi)s 6(v)k 3(en)k 1376(encoding)s 2317(v)s 3(ector)k +2981(is)s 3201(already)s 3968(associated)s 5018(with)s 5510(this)s +5916(font)s 6371(in)s 6624(the)s 6982(PostScript)s 8035(interpreter)s 9(,)k +0 2468(and)m 404(optimizes)s 1384(its)s 1660(output)s 2332(accordingly)s 15(.)k +480 2094(If)m 723(there)s 1270(are)s 1630(tw)s 2(o)k +2054(font)s 2512(de\207nitions)s 3587(with)s 4083(the)s 4444(same)s +5005(f)s 2(amily)k 5693(and)s 6111(f)s 2(ace)k +6576(name,)s 7214(it)s 7420(is)s 7643(an)s 7940(error)s +8477(unless)s 0 1806(the)m 371(second)s 1117(one)s 1542(has)s +1936(the)s 2307(same)s 2877(font)s 3346(name)s 3943(and)s +4370(\207le)s 4755(name)s 5352(as)s 5625(the)s 5997(\207rst,)s +6498(in)s 6764(which)s 7430(case)s 7920(it)s 8135(is)s +8369(silently)s 0 1518(ignored.)m 902(A)s 1139(PostScript)s 2188(font)s +2640(name)s 3221(and)s 3632(\207le)s 4000(may)s 4474(appear)s +5178(in)s 5428(tw)s 2(o)k 5845(or)s 6111(more)s +6665(font)s 7117(de\207nitions,)s 8242(allo)s 6(wing)k 0 1230(one)m +402(PostScript)s 1444(font)s 1889(to)s 2128(ha)s 4(v)k 3(e)k +2629(tw)s 2(o)k 3039(or)s 3298(more)s 3845(equally)s +4603(v)s 6(alid)k 5133(Lout)s 5645(names,)s 6363(and)s +6767(dif)s 6(ferent)k 7642(LCM)s 8215(\207les.)s 480 856(The)m +220 fnt35 917 853(@Char)m 240 fnt82 1685 856(symbol)m 2454(allo)s 6(ws)k +3133(a)s 3309(character)s 4252(to)s 4501(be)s 4792(speci\207ed)s +5710(by)s 6014(its)s 6299(name)s 6883(\(its)s 7247(PostScript)s +8299(name)s 8883(in)s 0 568(Basser)m 697(Lout\))s 1277(rather)s +1893(than)s 2362(by)s 2656(its)s 2932(code:)s 220 fnt35 +480 67(@Char nine)m +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 42 48 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +%%+ font Times-Italic +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +0 LoutMargSet +grestore +240 fnt84 0 13840(42)m 240 fnt83 6081 13843(Chapter)m 6931(3.)s +7205(Pr)s 8(ede\207ned)k 8300(symbols)s 240 fnt82 0 13205(is)m +215(equi)s 6(v)k 6(alent)k 1265(to)s 220 fnt35 +1510 13202(9)m 240 fnt82 1689 13205(in)m 1938(most)s 2469(fonts.)s +3117(This)s 3599(is)s 3815(useful)s 4460(as)s 4716(a)s +4888(documentation)s 6373(aid)s 6729(and)s 7139(to)s 7384(be)s +7672(sure)s 8132(of)s 8409(getting)s 0 12917(the)m 347(right)s +856(character)s 1788(e)s 6(v)k 3(en)k 2286(if)s +2501(the)s 2848(encoding)s 3777(v)s 3(ector)k 4429(of)s +4698(the)s 5044(font)s 5488(is)s 5696(changed.)s 6656(Ho)s 6(we)k 6(v)k 3(er)k +220 fnt35 7576 12914(@Char)m 240 fnt82 8332 12917(will)m 8756(f)s 2(ail)k +0 12629(if)m 217(the)s 565(character)s 1499(named)s 2195(is)s +2405(not)s 2771(in)s 3014(the)s 3362(encoding)s 4293(v)s 3(ector)k +4947(of)s 5218(the)s 5566(current)s 6302(font.)s 240 fnt84 +0 11836(3.4.)m 471(@Br)s 4(eak)k 240 fnt82 480 11404(The)m +220 fnt35 898 11401(@Break)m 240 fnt82 1744 11404(symbol)m 2493(in\210uences)s +3504(the)s 3842(appearance)s 4962(of)s 5223(paragraphs)s 6313(\(Section)s +7155(3.2\),)s 7631(of)s 6(fering)k 8437(a)s 8592(\207x)s 3(ed)k +0 11116(set)m 325(of)s 596(nine)s 1064(styles:)s 220 fnt35 +1275 10608(adjust)m 1916(@Break)s 240 fnt83 2772 10613(object)m 240 fnt82 +3600 10611(Break)m 4301(the)s 4718(paragraphs)s 5887(of)s 240 fnt83 +6228 10613(object)m 240 fnt82 6945 10611(into)m 7439(lines,)s 8066(and)s +8540(apply)s 220 fnt35 3600 10320(@P)m 26(Adjust)k 240 fnt82 +4633 10323(\(Section)m 5511(3.16\))s 6084(to)s 6348(e)s 6(v)k 3(ery)k +6949(line)s 7388(e)s 3(xcept)k 8094(the)s 8467(last)s +8883(in)s 3600 10035(each)m 4095(paragraph;)s 220 fnt35 1128 9527(outdent)m +1916(@Break)s 240 fnt83 2772 9532(object)m 240 fnt82 3600 9530(Lik)m 2(e)k +220 fnt35 4122 9527(adjust)m 240 fnt82 4703 9530(,)m 4840(e)s 3(xcept)k +5551(that)s 220 fnt35 6000 9527(2.0f @Wide {} &0i)m 240 fnt82 7809 9530(is)m +8049(inserted)s 8894(at)s 3600 9242(the)m 3981(be)s 3(ginning)k +5022(of)s 5326(e)s 6(v)k 3(ery)k 5935(line)s +6382(e)s 3(xcept)k 7096(the)s 7477(\207rst,)s 7988(creating)s +8843(an)s 3600 8954(outdented)m 4602(paragraph;)s 220 fnt35 1187 8446(r)m 2(agged)k +1916(@Break)s 240 fnt83 2772 8451(object)m 240 fnt82 3600 8449(Break)m +4222(the)s 4559(paragraphs)s 5648(of)s 240 fnt83 5908 8451(object)m +240 fnt82 6545 8449(into)m 6960(lines,)s 7507(b)s 4(ut)k +7858(do)s 8140(not)s 8495(adjust)s 3600 8161(the)m 3948(lines)s +4450(\(`ragged)s 5317(right'\);)s 220 fnt35 1077 7653(cr)m 2(agged)k +1916(@Break)s 240 fnt83 2772 7658(object)m 240 fnt82 3600 7656(Lik)m 2(e)k +220 fnt35 4125 7653(r)m 2(agged)k 240 fnt82 4794 7656(,)m +4934(e)s 3(xcept)k 5648(that)s 6099(each)s 6628(line)s +7075(will)s 7534(be)s 7849(centred)s 8644(with)s 3600 7368(respect)m +4336(to)s 4575(the)s 4923(others;)s 220 fnt35 1114 6860(rr)m 2(agged)k +1916(@Break)s 240 fnt83 2772 6865(object)m 240 fnt82 3600 6863(Lik)m 2(e)k +220 fnt35 4115 6860(r)m 2(agged)k 240 fnt82 4784 6863(,)m +4914(e)s 3(xcept)k 5618(that)s 6059(each)s 6577(line)s +7014(will)s 7463(be)s 7768(right-justi\207ed)s 3600 6575(with)m 4082(respect)s +4818(to)s 5057(the)s 5405(others)s 6040(\(`ragged)s 6907(left'\);)s +220 fnt35 1065 6067(or)m 2(agged)k 1916(@Break)s 240 fnt83 +2772 6072(object)m 240 fnt82 3600 6070(The)m 4028(ob)s 3(vious)k +4835(combination)s 6088(of)s 220 fnt35 6359 6067(r)m 2(agged)k +240 fnt82 7088 6070(and)m 220 fnt35 7492 6067(outdent)m 240 fnt82 +8220 6070(;)m 220 fnt35 1413 5563(lines)m 1916(@Break)s 240 fnt83 +2772 5568(object)m 240 fnt82 3600 5566(Break)m 4284(the)s 4685(paragraphs)s +5837(of)s 240 fnt83 6161 5568(object)m 240 fnt82 6861 5566(into)m +7339(lines)s 7893(at)s 8178(the)s 8579(same)s 3600 5278(points)m +4235(that)s 4651(the)s 3(y)k 5113(are)s 5458(brok)s 2(en)k +6177(into)s 6600(lines)s 7101(in)s 7342(the)s 7689(input,)s +8286(and)s 8688(also)s 3600 4990(at)m 3819(concatenation)s 5190(symbols)s +6026(of)s 6283(the)s 6617(form)s 220 fnt35 7128 4987(&)m +240 fnt83 7270 4992(k)m 220 fnt35 7380 4987(b)m 240 fnt82 +7540 4990(for)m 7865(an)s 3(y)k 240 fnt83 8248 4992(k)m +240 fnt82 8404 4990(greater)m 3600 4702(than)m 4069(1.)s 4354(Do)s +4700(not)s 5067(adjust)s 5698(the)s 6047(lines.)s 6663(An)s 3(y)k +7127(spaces)s 7803(at)s 8035(the)s 8384(start)s 8855(of)s +3600 4414(a)m 3766(line)s 4180(other)s 4731(than)s 5200(the)s +5548(\207rst)s 5979(line)s 6393(will)s 6819(appear)s 7516(in)s +7759(the)s 8107(output;)s 220 fnt35 1303 3906(clines)m 1916(@Break)s +240 fnt83 2772 3911(object)m 240 fnt82 3600 3909(Break)m 4288(the)s +4693(paragraphs)s 5849(of)s 240 fnt83 6177 3911(object)m 240 fnt82 +6881 3909(into)m 7363(lines)s 7921(as)s 8228(for)s 220 fnt35 +8623 3906(lines)m 3600 3618(@Break)m 240 fnt82 4396 3621(,)m 4503(then)s +4972(centre)s 5611(each)s 6106(line)s 6520(with)s 7002(respect)s +7738(to)s 7977(the)s 8325(others;)s 220 fnt35 1337 3113(r)m -3(lines)k +1916(@Break)s 240 fnt83 2772 3118(object)m 240 fnt82 3600 3116(Break)m +4288(the)s 4693(paragraphs)s 5849(of)s 240 fnt83 6177 3118(object)m +240 fnt82 6881 3116(into)m 7363(lines)s 7921(as)s 8228(for)s +220 fnt35 8623 3113(lines)m 3600 2825(@Break)m 240 fnt82 4396 2828(,)m +4535(then)s 5036(right-)s 5555(justify)s 6251(each)s 6778(line)s +7224(with)s 7738(respect)s 8506(to)s 8778(the)s 3600 2540(others.)m +0 2087(If)m 235(the)s 588(paragraph)s 1606(w)s 2(as)k +2032(an)s 2320(entire)s 2924(component)s 4053(of)s 4329(a)s +4501(g)s 1(alle)k 3(y)k 15(,)k 5178(so)s +5449(will)s 5880(each)s 6380(of)s 6656(its)s 6937(lines)s +7444(be;)s 7787(otherwise)s 8778(the)s 0 1799(lines)m 502(are)s +849(enclosed)s 1744(in)s 1987(a)s 220 fnt35 2153 1796(@OneRo)m 3(w)k +240 fnt82 3284 1799(symbol)m 4044(after)s 4540(breaking.)s 480 1425(The)m +911(length)s 1570(of)s 1845(the)s 2196(g)s 1(ap)k +2598(used)s 3099(to)s 3341(separate)s 4183(the)s 4535(lines)s +5040(produced)s 5993(by)s 6291(paragraph)s 7307(breaking)s 8201(is)s +8415(al)s 2(w)k 2(ays)k 220 fnt35 0 1134(1v)m +240 fnt82 231 1137(.)m 395(Ho)s 6(we)k 6(v)k 3(er)k 9(,)k +1355(the)s 220 fnt35 1703 1134(v)m 240 fnt82 1872 1137(unit)m +2304(itself)s 2852(and)s 3256(the)s 3604(g)s 1(ap)k +4002(mode)s 4590(may)s 5056(be)s 5338(changed:)s 240 fnt83 +1503 634(gap)m 220 fnt35 1916 629(@Break)m 240 fnt83 2772 634(object)m +240 fnt82 3600 632(W)m 9(ithin)k 240 fnt83 4312 634(object)m +240 fnt82 4900 632(,)m 5008(tak)s 2(e)k 5460(the)s +5809(v)s 6(alue)k 6377(of)s 6649(the)s 220 fnt35 +6998 629(v)m 240 fnt82 7167 632(unit)m 7600(to)s 7839(be)s +8122(the)s 8471(length)s 3600 344(of)m 240 fnt83 3871 346(gap)m +240 fnt82 4224 344(;)m +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 43 49 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Italic +%%+ font Times-Bold +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +1 LoutMargSet +grestore +240 fnt83 0 13843(3.4.)m 454(@Br)s 8(eak)k 240 fnt84 +8833 13840(43)m 240 fnt82 1375 13247(+)m 240 fnt83 1503 13249(gap)m +220 fnt35 1916 13244(@Break)m 240 fnt83 2772 13249(object)m 240 fnt82 +3600 13247(W)m 9(ithin)k 240 fnt83 4320 13249(object)m 240 fnt82 +4908 13247(,)m 5024(tak)s 2(e)k 5485(the)s 5841(v)s 6(alue)k +6418(of)s 6698(the)s 220 fnt35 7054 13244(v)m 240 fnt82 +7232 13247(unit)m 7673(to)s 7920(be)s 8211(lar)s 4(ger)k +8832(by)s 3600 12959(the)m 3948(length)s 4603(of)s 240 fnt83 +4874 12961(gap)m 240 fnt82 5287 12959(than)m 5756(it)s 5948(w)s 2(ould)k +6603(otherwise)s 7588(ha)s 4(v)k 3(e)k 8089(been;)s +1383 12454(\211)m 240 fnt83 1503 12456(gap)m 220 fnt35 1916 12451(@Break)m +240 fnt83 2772 12456(object)m 240 fnt82 3600 12454(W)m 9(ithin)k +240 fnt83 4309 12456(object)m 240 fnt82 4897 12454(,)m 5000(tak)s 2(e)k +5448(the)s 5792(v)s 6(alue)k 6356(of)s 6623(the)s +220 fnt35 6968 12451(v)m 240 fnt82 7133 12454(unit)m 7561(to)s +7796(be)s 8074(smaller)s 8832(by)s 3600 12166(the)m 3948(length)s +4603(of)s 240 fnt83 4874 12168(gap)m 240 fnt82 5287 12166(than)m +5756(it)s 5948(w)s 2(ould)k 6603(otherwise)s 7588(ha)s 4(v)k 3(e)k +8089(been.)s 0 11661(In)m 256(each)s 751(case,)s 1269(the)s +1617(mode)s 2205(of)s 240 fnt83 2476 11663(gap)m 240 fnt82 +2889 11661(is)m 3099(adopted)s 3915(within)s 240 fnt83 4583 11663(object)m +240 fnt82 5171 11661(.)m 480 11287(The)m 220 fnt35 908 11284(@Break)m +240 fnt82 1764 11287(symbol)m 2524(also)s 2962(controls)s 3783(h)s 1(yphenation:)k +220 fnt35 1141 10779(h)m 6(yphen @Break)k 240 fnt83 2772 10784(object)m +240 fnt82 3600 10782(Permit)m 4296(h)s 1(yphenation)k 5536(within)s +6204(the)s 6552(paragraphs)s 7652(of)s 240 fnt83 7923 10784(object)m +240 fnt82 8511 10782(;)m 220 fnt35 897 10274(noh)m 6(yphen @Break)k +240 fnt83 2772 10279(object)m 240 fnt82 3600 10277(Prohibit)m 4440(h)s 1(yphenation)k +5691(within)s 6370(the)s 6729(paragraphs)s 7840(of)s 240 fnt83 +8122 10279(object)m 240 fnt82 8710 10277(;)m 8833(all)s 3600 9989(h)m 1(yphenation)k +4897(g)s 1(aps)k 5443(without)s 6291(e)s 3(xception)k +7332(re)s 6(v)k 3(ert)k 7996(to)s 8292(edge-)s +8812(to-)s 3600 9701(edge)m 4108(mode.)s 0 9198(The)m 220 fnt35 +428 9195(@Break)m 240 fnt82 1284 9198(also)m 1722(has)s 2092(options)s +2848(which)s 3490(control)s 4222(wido)s 6(w)k 4922(and)s +5326(orphan)s 6048(lines:)s 220 fnt35 480 8690(unbreakab)m 4(le\207rst @Break)k +240 fnt83 3058 8695(ob)m 240 fnt82 3292 8693(-)m 240 fnt83 +480 8407(ject)m 240 fnt82 3600 8693(Pre)m 6(v)k 3(ent)k +4431(column)s 5256(and)s 5710(page)s 6268(breaks)s 6993(\(i.e.)s +7458(pre)s 6(v)k 3(ent)k 8276(a)s 8492(g)s 1(alle)k 3(y)k +3600 8405(from)m 4147(splitting\))s 5081(between)s 5959(the)s 6330(\207rst)s +6784(and)s 7212(second)s 7958(lines)s 8483(of)s 8778(the)s +3600 8117(paragraphs)m 4700(of)s 240 fnt83 4971 8119(object)m 240 fnt82 +5559 8117(;)m 220 fnt35 480 7609(unbreakab)m 4(lelast @Break)k 240 fnt83 +3058 7614(ob)m 240 fnt82 3292 7612(-)m 240 fnt83 480 7326(ject)m +240 fnt82 3600 7612(Pre)m 6(v)k 3(ent)k 4429(column)s +5252(and)s 5704(page)s 6261(breaks)s 6984(between)s 7886(the)s +8282(last)s 8722(and)s 3600 7324(second)m 4323(last)s 4714(lines)s +5216(of)s 5487(the)s 5835(paragraphs)s 6935(of)s 240 fnt83 +7206 7326(object)m 240 fnt82 7794 7324(.)m 0 6821(These)m 688(options)s +1506(w)s 2(ork)k 2119(by)s 2475(adding)s 3241(the)s +220 fnt35 3651 6818(u)m 240 fnt82 3881 6821(\(unbreakable\))m 5319(suf\207x)s +5980(to)s 6281(the)s 6691(appropriate)s 7897(g)s 1(aps)k +8448(during)s 0 6533(paragraph)m 1017(breaking,)s 1966(so)s 2237(their)s +2738(precise)s 3475(ef)s 6(fect)k 4076(is)s 4290(as)s +4545(described)s 5524(for)s 5866(this)s 6267(suf\207x.)s 6981(These)s +7612(options)s 8373(may)s 8844(be)s 0 6245(countermanded)m 1533(by)s +220 fnt35 1827 6242(breakab)m 4(le\207rst @Break)k 240 fnt82 4057 6245(and)m +220 fnt35 4461 6242(breakab)m 4(lelast @Break.)k 240 fnt82 480 5871(Se)m 6(v)k 3(eral)k +1310(options)s 2135(may)s 2669(be)s 3020(gi)s 6(v)k 3(en)k +3668(to)s 3976(the)s 220 fnt35 4392 5868(@Break)m 240 fnt82 +5317 5871(symbol)m 6145(simultaneously)s 15(,)k 7754(in)s 8065(an)s 3(y)k +8531(order)s 13(.)k 0 5583(F)m 3(or)k 389(e)s 3(xample,)k +220 fnt35 480 5082({ adjust 1.2fx h)m 6(yphen } @Break ...)k 240 fnt82 0 4584(is)m +210(a)s 375(typical)s 1079(initial)s 1689(v)s 6(alue.)k +2365(There)s 2977(may)s 3442(be)s 3723(empty)s 4375(objects)s +5102(and)s 220 fnt35 5505 4581(@Null)m 240 fnt82 6149 4584(objects)m +6877(in)s 7119(the)s 7466(left)s 7842(parameter)s 8855(of)s +220 fnt35 0 4293(@Break)m 240 fnt82 796 4296(;)m 908(these)s +1455(are)s 1802(ignored.)s 240 fnt84 0 3503(3.5.)m 471(@Space)s +240 fnt82 480 3026(The)m 220 fnt35 911 3023(@Space)m 240 fnt82 +1812 3026(symbol)m 2576(changes)s 3402(the)s 3754(v)s 6(alue)k +4326(of)s 4601(the)s 220 fnt35 4953 3023(s)m 240 fnt82 +5120 3026(unit)m 5556(of)s 5831(measurement)s 7169(\(Section)s 8026(3.2\))s +8458(within)s 0 2738(its)m 276(right)s 787(parameter)s 1801(to)s +2040(the)s 2388(v)s 6(alue)k 2956(gi)s 6(v)k 3(en)k +3536(by)s 3830(the)s 4178(left)s 4555(parameter:)s 220 fnt35 +480 2237(1c @Space { a b c d })m 240 fnt82 0 1741(has)m 370(result)s 480 1288(a)m +1153(b)s 1833(c)s 2499(d)s 0 835(As)m 311(for)s +643(the)s 220 fnt35 985 832(@Break)m 240 fnt82 1835 835(symbol,)m +2641(the)s 2982(left)s 3353(parameter)s 4361(of)s 220 fnt35 +4626 832(@Space)m 240 fnt82 5517 835(may)m 5976(be)s 6252(gi)s 6(v)k 3(en)k +6826(relati)s 6(v)k 3(e)k 7582(to)s 7815(the)s +8156(enclosing)s 220 fnt35 0 544(s)m 240 fnt82 163 547(unit,)m +642(and)s 1046(it)s 1238(may)s 1704(include)s 2464(a)s +2630(g)s 1(ap)k 3028(mode.)s 3724(Note)s 4245(that)s +4663(the)s 220 fnt35 5011 544(@F)m 6(ont)k 240 fnt82 +5723 547(symbol)m 6483(also)s 6921(sets)s 7330(the)s 220 fnt35 +7678 544(s)m 240 fnt82 7841 547(unit.)m 480 173(The)m 906(left)s +1280(parameter)s 2292(of)s 2560(the)s 220 fnt35 2906 170(@Space)m +240 fnt82 3800 173(symbol)m 4558(may)s 5021(also)s 5456(hold)s +5938(an)s 3(y)k 6332(one)s 6732(of)s 7000(the)s +7346(\207v)s 3(e)k 7755(special)s 8470(v)s 6(alues)k + +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 44 50 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +%%+ font Times-Italic +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +0 LoutMargSet +grestore +240 fnt84 0 13840(44)m 240 fnt83 6081 13843(Chapter)m 6931(3.)s +7205(Pr)s 8(ede\207ned)k 8300(symbols)s 220 fnt35 0 13202(lout)m +240 fnt82 349 13205(,)m 220 fnt35 461 13202(compress)m 240 fnt82 +1406 13205(,)m 220 fnt35 1518 13202(separ)m 2(ate)k 240 fnt82 +2362 13205(,)m 220 fnt35 2474 13202(troff)m 240 fnt82 2849 13205(,)m +2961(and)s 220 fnt35 3371 13202(te)m 6(x)k 240 fnt82 +3656 13205(,)m 3768(which)s 4415(control)s 5152(the)s 5505(w)s 2(ay)k +5962(in)s 6210(which)s 6857(Lout)s 7374(treats)s 7946(white)s +8539(space)s 0 12917(separating)m 1047(tw)s 2(o)k 1470(objects.)s +2324(The)s 2764(names)s 220 fnt35 3439 12914(troff)m 240 fnt82 +3887 12917(and)m 220 fnt35 4304 12914(te)m 6(x)k 240 fnt82 +4661 12917(indicate)m 5486(that)s 5917(the)s 6278(beha)s 4(viour)k +7303(of)s 7587(these)s 8147(options)s 8916(is)s 0 12629(inspired)m +828(by)s 1122(these)s 1669(other)s 2220(document)s 3224(formatting)s +4285(systems.)s 480 12255(The)m 897(def)s 2(ault)k 1607(setting,)s +220 fnt35 2339 12252(lout)m 240 fnt82 2688 12255(,)m 2784(produces)s +3687(as)s 3926(man)s 3(y)k 4498(spaces)s 5161(in)s +5393(the)s 5729(output)s 6390(as)s 6629(there)s 7150(are)s +7486(in)s 7717(the)s 8054(input.)s 8698(The)s 220 fnt35 +0 11964(compress)m 240 fnt82 1017 11967(setting)m 1719(causes)s 2407(all)s +2712(sequences)s 3746(of)s 4029(tw)s 2(o)k 4452(or)s +4723(more)s 5283(white)s 5882(space)s 6482(characters)s 7512(to)s +7764(be)s 8058(treated)s 8778(the)s 0 11679(same)m 556(as)s +815(one)s 1227(white)s 1823(space)s 2419(character)s 13(.)k +3454(The)s 220 fnt35 3891 11676(separ)m 2(ate)k 240 fnt82 +4804 11679(setting)m 5504(is)s 5723(lik)s 2(e)k 220 fnt35 +6144 11676(compress)m 240 fnt82 7159 11679(b)m 4(ut)k 7530(also)s +7977(causes)s 8662(zero)s 0 11391(white)m 587(spaces)s 1263(between)s +2118(tw)s 2(o)k 2529(objects)s 3258(\(b)s 4(ut)k +3700(not)s 4067(within)s 4736(one)s 5138(w)s 2(ord\))k +5757(to)s 5997(be)s 6280(treated)s 6988(the)s 7337(same)s +7885(as)s 8136(one)s 8539(white)s 0 11103(space)m 587(character)s 13(.)k +480 10729(The)m 220 fnt35 902 10726(troff)m 240 fnt82 1330 10729(setting)m +2013(is)s 2216(the)s 2557(same)s 3097(as)s 220 fnt35 +3340 10726(lout)m 240 fnt82 3742 10729(e)m 3(xcept)k 4416(that)s +4828(where)s 6(v)k 3(er)k 5761(a)s 5920(sentence)s +6792(ends)s 7275(at)s 7500(the)s 7841(end)s 8238(of)s +8502(a)s 8661(line,)s 0 10441(one)m 415(e)s 3(xtra)k +962(space)s 1562(is)s 1785(added.)s 2535(F)s 3(ormally)k 15(,)k +3513(when)s 4102(tw)s 2(o)k 4525(objects)s 5266(are)s +5627(separated)s 6600(by)s 6907(white)s 7507(space)s 8108(characters)s +0 10153(which)m 660(include)s 1439(at)s 1689(least)s 2205(one)s +2625(ne)s 6(wline)k 3451(character)s 9(,)k 4442(and)s +4864(the)s 5231(\207rst)s 5680(object)s 6343(is)s 6572(a)s +6756(w)s 2(ord)k 7323(ending)s 8046(in)s 8308(an)s 3(y)k +8724(one)s 0 9865(of)m 288(a)s 471(certain)s 1194(set)s +1536(of)s 1824(sequences)s 2862(of)s 3150(characters,)s 4241(the)s +4606(e)s 3(xtra)k 5157(space)s 5761(is)s 5988(added.)s +6741(The)s 7186(set)s 7528(of)s 7816(sequences)s 8855(of)s +0 9577(characters)m 1025(depends)s 1868(on)s 2173(the)s 2528(current)s +3272(language)s 4199(and)s 4610(is)s 4828(de\207ned)s 5598(in)s +5849(the)s 220 fnt35 6204 9574(langdef)m 240 fnt82 6987 9577(for)m +7333(that)s 7758(language)s 8686(\(see)s 0 9289(Section)m 774(3.9\).)s +480 8915(The)m 220 fnt35 930 8912(te)m 6(x)k 240 fnt82 +1297 8915(option)m 1989(is)s 2221(the)s 2592(most)s 3139(complicated.)s +4494(First,)s 5060(the)s 220 fnt35 5430 8912(compress)m 240 fnt82 +6458 8915(option)m 7149(is)s 7382(applied.)s 8272(Then,)s 8894(at)s +0 8627(e)m 6(v)k 3(ery)k 576(sentence)s 1455(ending,)s +2213(whether)s 3043(or)s 3302(not)s 3667(at)s 3899(the)s +4246(end)s 4650(of)s 4921(a)s 5086(line,)s 5551(one)s +5952(e)s 3(xtra)k 6486(space)s 7073(is)s 7282(added.)s +8018(A)s 8247(sentence)s 0 8339(ending)m 709(is)s 923(de\207ned)s +1690(as)s 1944(for)s 220 fnt35 2286 8336(troff)m 240 fnt82 +2726 8339(e)m 3(xcept)k 3411(that,)s 3880(in)s 4127(addition)s +4972(to)s 5215(the)s 5568(preceding)s 6568(w)s 2(ord)k +7120(ha)s 4(ving)k 7825(to)s 8068(end)s 8476(in)s +8724(one)s 0 8051(of)m 268(a)s 431(certain)s 1134(set)s +1456(of)s 1724(sequences)s 2742(of)s 3010(characters,)s 4081(the)s +4426(character)s 5357(preceding)s 6350(that)s 6765(sequence)s 7695(must)s +8217(e)s 3(xist)k 8722(and)s 0 7763(must)m 525(be)s +807(a)s 973(lo)s 6(wer)k 4(-case)k 2053(letter)s 13(.)k +2693(A)s 2924(character)s 3858(is)s 4068(a)s 4234(lo)s 6(wer)k 4(-case)k +5314(letter)s 5864(if,)s 6116(in)s 6359(the)s 6707(Lout)s +7219(Character)s 8208(Mapping)s 0 7475(\207le)m 393(\(Section)s 1278(3.3\))s +1738(associated)s 2810(with)s 3325(the)s 3705(current)s 4473(font,)s +4997(an)s 5313(upper)s 4(-case)k 6432(equi)s 6(v)k 6(alent)k +7508(of)s 7811(the)s 8192(character)s 0 7187(is)m 210(de\207ned.)s +240 fnt84 0 6444(3.6.)m 471(@YUnit,)s 1432(@ZUnit,)s 2380(@CurrYUnit,)s +3859(and)s 4300(@CurrZUnit)s 240 fnt82 480 5973(The)m 220 fnt35 +917 5970(@YUnit)m 240 fnt82 1741 5973(symbol)m 2510(changes)s 3342(the)s +3699(v)s 6(alue)k 4277(of)s 4557(the)s 220 fnt35 +4915 5970(y)m 240 fnt82 5092 5973(unit)m 5534(of)s 5814(measurement)s +7158(\(Section)s 8020(3.2\))s 8458(within)s 0 5685(its)m 276(right)s +787(parameter)s 1801(to)s 2040(the)s 2388(v)s 6(alue)k +2956(gi)s 6(v)k 3(en)k 3536(by)s 3830(the)s +4178(left)s 4555(parameter:)s 220 fnt35 480 5184(1c @YUnit { ...)m 13( })k +240 fnt82 0 4690(ensures)m 760(that)s 1170(the)s 1510(v)s 6(alue)k +2070(of)s 220 fnt35 2333 4687(1y)m 240 fnt82 2615 4690(within)m +3275(the)s 3615(right)s 4118(parameter)s 5124(will)s 5542(be)s +220 fnt35 5816 4687(1c)m 240 fnt82 6043 4690(.)m 6199(The)s +220 fnt35 6619 4687(@ZUnit)m 240 fnt82 7413 4690(symbol)m 8165(is)s +8366(similar)s 9(,)k 0 4402(setting)m 688(the)s 1034(v)s 6(alue)k +1600(of)s 1869(the)s 220 fnt35 2215 4399(z)m 240 fnt82 +2376 4402(unit)m 2806(in)s 3047(its)s 3321(right)s 3830(parameter)s 13(.)k +4933(Both)s 5453(units)s 5967(ha)s 4(v)k 3(e)k +6466(def)s 2(ault)k 7185(v)s 6(alue)k 7751(zero.)s +8324(The)s 8749(left)s 0 4114(parameter)m 1011(may)s 1473(not)s +1836(include)s 2592(a)s 2755(g)s 1(ap)k 3149(mode,)s +3784(nor)s 4160(may)s 4622(it)s 4811(use)s 5182(the)s +220 fnt35 5526 4111(w)m 240 fnt82 5682 4114(,)m 220 fnt35 +5786 4111(b)m 240 fnt82 5900 4114(,)m 220 fnt35 6003 4111(r)m +240 fnt82 6076 4114(,)m 6180(or)s 6435(of)s 6702(course)s +220 fnt35 7379 4111(d)m 240 fnt82 7545 4114(units,)m 8114(b)s 4(ut)k +8472(it)s 8660(may)s 0 3826(be)m 3(gin)k 577(with)s +220 fnt35 1050 3823(+)m 240 fnt82 1220 3826(or)m 220 fnt35 +1470 3823(-)m 240 fnt82 1584 3826(to)m 1814(indicate)s 2616(that)s +3025(v)s 6(alue)k 3583(is)s 3784(to)s 4014(be)s +4286(added)s 4907(to)s 5136(or)s 5386(subtracted)s 6416(from)s +6931(the)s 7269(current)s 7996(v)s 6(alue.)k 8662(An)s 3(y)k +0 3538(ne)m 3(g)k 1(ati)k 6(v)k 3(e)k +853(result)s 1443(of)s 1714(using)s 220 fnt35 2286 3535(-)m +240 fnt82 2410 3538(will)m 2836(be)s 3118(silently)s 3875(replaced)s +4742(by)s 5036(zero.)s 480 3164(The)m 220 fnt35 913 3161(@CurrYUnit)m +240 fnt82 2159 3164(and)m 220 fnt35 2569 3161(@CurrZUnit)m 240 fnt82 +3803 3164(symbols)m 4658(report)s 5294(the)s 5648(v)s 6(alue)k +6222(of)s 6499(the)s 220 fnt35 6853 3161(y)m 240 fnt82 +7027 3164(and)m 220 fnt35 7437 3161(z)m 240 fnt82 7607 3164(units,)m +8185(in)s 8434(points,)s 0 2876(truncated)m 947(to)s 1186(the)s +1534(nearest)s 2270(inte)s 3(ger)k 13(.)k 3081(F)s 3(or)k +3470(e)s 3(xample,)k 220 fnt35 480 2375(1i @YUnit { )m 11(The current v)k 5(alue of the y unit is @CurrYUnit })k +240 fnt82 0 1877(produces)m 220 fnt35 480 1376(1i @YUnit { )m 11(The current v)k 5(alue of the y unit is @CurrYUnit })k +240 fnt82 0 878(since)m 547(there)s 1080(are)s 1427(72)s +1721(points)s 2357(in)s 2600(one)s 3002(inch)s 3471(\(at)s +3782(least,)s 4326(Lout)s 4838(thinks)s 5474(there)s 6007(are\).)s +480 504(These)m 1123(units)s 1655(are)s 2018(not)s 2400(used)s +2913(internally)s 3898(by)s 4208(Lout.)s 4840(The)s 3(y)k +5399(are)s 5762(supplied)s 6647(as)s 6913(part)s 7360(of)s +7647(the)s 8011(style)s 8534(infor)s 8998(-)s 0 216(mation)m +731(for)s 1080(the)s 1439(con)s 9(v)k 3(enience)k +2690(of)s 2972(application)s 4102(packages.)s 5154(F)s 3(or)k +5554(e)s 3(xample,)k 6479(the)s 6838(Eq)s 7173(equation)s +8065(formatting)s +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 45 51 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Italic +%%+ font Times-Bold +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +1 LoutMargSet +grestore +240 fnt83 0 13843(3.6.)m 454(@YUnit,)s 1325(@ZUnit,)s 2196(@CurrYUnit,)s +3533(and)s 3959(@CurrZUnit)s 240 fnt84 8833 13840(45)m 240 fnt82 +0 13224(package)m 840(uses)s 1303(them)s 1841(to)s 2080(\207ne-)s +2507(tune)s 2975(the)s 3323(appearance)s 4454(of)s 4725(equations.)s +240 fnt84 0 12431(3.7.)m 471(@SetColour)s 1788(and)s 2229(@SetColor)s +240 fnt82 480 11999(The)m 220 fnt35 927 11996(@SetColour)m 240 fnt82 +2204 11999(and)m 220 fnt35 2628 11996(@SetColor)m 240 fnt82 3783 11999(symbols,)m +4708(which)s 5370(ha)s 4(v)k 3(e)k 5891(identical)s +6788(ef)s 6(fect,)k 7451(return)s 8098(their)s 8615(right)s +0 11711(parameter)m 1047(in)s 1323(the)s 1704(colour)s 2408(speci\207ed)s +3349(by)s 3676(their)s 4206(left)s 4617(parameter)s 13(.)k +5755(The)s 6216(form)s 6773(of)s 7077(the)s 7458(left)s +7868(parameter)s 8916(is)s 0 11423(implementation-dependent;)m 2693(in)s 2954(Basser)s +3670(Lout)s 4200(it)s 4410(must)s 4954(be)s 5254(an)s +5555(object)s 6218(whose)s 6904(v)s 6(alue)k 7490(is)s +7719(a)s 7903(sequence)s 8855(of)s 0 11135(w)m 2(ords)k +634(comprising)s 1763(a)s 1929(PostScript)s 2971(command)s 3973(for)s +4311(setting)s 5001(colour)s 13(.)k 5763(F)s 3(or)k +6152(e)s 3(xample,)k 220 fnt35 480 10634({ 1.0 0.0 0.0 setrgbcolor } @SetColour { hello)m 8(, w)k 2(or)k -3(ld })k +240 fnt82 0 10135(produces)m 915(the)s 1263(red)s 1626(result)s +1.0 0.0 0.0 setrgbcolor 480 9632(hello,)m 1065(w)s 2(orld)k 0.0 0.0 0.0 setrgbcolor +0 9148(Of)m 322(course,)s 1050(a)s 1213(colour)s 1881(output)s +2550(de)s 6(vice)k 3222(is)s 3429(needed)s 4162(to)s +4398(see)s 4756(the)s 5101(ef)s 6(fect;)k 5747(on)s +6041(a)s 6204(monochrome)s 7520(de)s 6(vice)k 8191(the)s +8536(result)s 0 8860(will)m 422(be)s 700(some)s 1257(shade)s +1854(of)s 2121(gre)s 3(y)k 15(.)k 2688(The)s +220 fnt35 3112 8857(@SetColour)m 240 fnt82 4365 8860(command)m 5363(will)s +5785(not)s 6147(accept)s 6813(an)s 7092(empty)s 7740(left)s +8112(parameter)s 0 8572(\(it)m 273(refuses)s 1002(to)s 1243(belie)s 6(v)k 3(e)k +1983(that)s 2403(this)s 2801(could)s 3393(cause)s 3983(a)s +4151(change)s 4887(of)s 5161(colour\),)s 5960(b)s 4(ut)k +6324(otherwise)s 7311(it)s 7506(trusts)s 8076(the)s 8426(user)s +8887(to)s 0 8284(supply)m 693(something)s 1743(sensible.)s 480 7910(The)m +220 fnt35 901 7907(@SetColour)m 240 fnt82 2151 7910(command)m 3145(accepts)s +3892(the)s 4232(special)s 4943(v)s 6(alue)k 220 fnt35 +5504 7907(nochange)m 240 fnt82 6512 7910(for)m 6843(the)s 7183(left)s +7553(parameter)s 13(.)k 8650(This)s 0 7622(v)m 6(alue)k +574(causes)s 1256(the)s 1611(right)s 2129(parameter)s 3150(to)s +3396(ha)s 4(v)k 3(e)k 3904(the)s 4258(colour)s +4936(it)s 5135(w)s 2(ould)k 5797(ha)s 4(v)k 3(e)k +6305(had)s 6716(without)s 7514(the)s 220 fnt35 7869 7619(@SetColour)m +240 fnt82 0 7334(command.)m 480 6960(There)m 1132(is)s 1382(no)s +1715(def)s 2(ault)k 2476(colour)s 9(,)k 3225(so)s +3530(the)s 3918(user)s 4416(must)s 4981(ensure)s 5701(that)s +6159(the)s 6546(root)s 7031(g)s 1(alle)k 3(y)k +7705(or)s 8004(each)s 8539(of)s 8850(its)s 0 6672(components)m +1208(is)s 1418(enclosed)s 2313(in)s 2556(a)s 220 fnt35 +2722 6669(@SetColour)m 240 fnt82 3979 6672(symbol)m 4739(whose)s 5407(left)s +5784(parameter)s 6798(is)s 7008(not)s 220 fnt35 7374 6669(nochange)m +240 fnt82 8330 6672(.)m 480 6298(Lout)m 1023(mak)s 2(es)k +1715(no)s 2039(attempt)s 2847(to)s 3117(understand)s 4257(colour)s 9(,)k +4998(it)s 5221(simply)s 5958(prints)s 6584(the)s 6964(PostScript)s +8038(commands)s 0 6010(when)m 601(appropriate.)s 1879(This)s 2381(has)s +2776(the)s 3150(adv)s 6(antage)k 4196(of)s 4492(permitting)s +5566(access)s 6253(to)s 6517(an)s 3(y)k 6940(of)s +7237(PostScript')s 13(s)k 8455(colour)s 0 5722(models)m 768(\(some)s +1434(require)s 2192(initialization)s 3481(which)s 4149(can)s 4564(be)s +4872(supplied)s 5767(using)s 220 fnt35 6365 5719(@PrependGr)m 2(aphic)k +240 fnt82 8178 5722(\),)m 8390(b)s 4(ut)k 8778(the)s +0 5434(disadv)m 6(antage)k 1299(of)s 1570(of)s 6(fering)k +2386(no)s 2679(w)s 2(ay)k 3130(to)s 3369(mak)s 2(e)k +3941(relati)s 6(v)k 3(e)k 4703(changes)s 5525(\(`as)s +5933(before)s 6599(only)s 7079(redder)s 9(,)k 16(')k +7836(and)s 8240(so)s 8506(on\).)s 480 5060(F)m 3(or)k +870(those)s 1432(who)s 1899(wish)s 2409(to)s 2649(obtain)s +3305(colour)s 3977(without)s 4769(w)s 2(orking)k 5619(v)s 3(ery)k +6096(hard,)s 6629(the)s 220 fnt35 6978 5057(setrgbcolor)m 240 fnt82 +8124 5060(command)m 0 4772(used)m 496(abo)s 3(v)k 3(e)k +1117(is)s 1325(a)s 4(v)k 6(ailable)k 2232(in)s +2474(e)s 6(v)k 3(ery)k 3048(v)s 3(ersion)k +3805(of)s 4075(PostScript,)s 5162(requires)s 5981(no)s 6273(initialization,)s +7584(and)s 7987(is)s 8196(simple)s 8887(to)s 0 4484(use.)m +485(The)s 915(three)s 1450(numbers,)s 2384(which)s 3028(range)s +3617(from)s 4143(0.0)s 4501(to)s 4742(1.0,)s 5151(determine)s +6164(the)s 6515(intensity)s 7394(of)s 7667(red,)s 8081(green,)s +8722(and)s 0 4196(blue)m 468(respecti)s 6(v)k 3(ely)k 15(.)k +1762(Some)s 2363(useful)s 3002(v)s 6(alues)k 3658(for)s +3996(the)s 4344(left)s 4721(parameter)s 5735(are)s 220 fnt35 +480 3631(1.0)m 838(0.0)s 1196(0.0)s 1554(setrgbcolor)s 240 fnt83 +2979 3636(r)m 8(ed)k 220 fnt35 480 3312(0.0)m 838(1.0)s +1196(0.0)s 1554(setrgbcolor)s 240 fnt83 2979 3317(gr)m 8(een)k +220 fnt35 480 2982(0.0)m 838(0.0)s 1196(1.0)s 1554(setrgbcolor)s +240 fnt83 2979 2987(blue)m 220 fnt35 480 2652(1.0)m 838(1.0)s +1196(1.0)s 1554(setrgbcolor)s 240 fnt83 2979 2657(white)m 220 fnt35 +480 2333(0.5)m 837(0.5)s 1194(0.5)s 1551(setrgbcolor)s 240 fnt83 +2979 2338(gr)m 8(e)k 7(y)k 220 fnt35 480 2003(0.0)m +838(0.0)s 1196(0.0)s 1554(setrgbcolor)s 240 fnt83 2979 2008(blac)m 4(k)k +240 fnt82 0 1447(Colouring)m 1042(an)s 1344(object)s 2007(white)s +2613(is)s 2841(useful)s 3499(for)s 3856(producing)s 4899(an)s +5200(empty)s 5871(space)s 6477(whose)s 7164(size)s 7609(is)s +7838(that)s 8275(of)s 8565(some)s 0 1159(object.)m +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 46 52 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +%%+ font Times-Italic +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +0 LoutMargSet +grestore +240 fnt84 0 13840(46)m 240 fnt83 6081 13843(Chapter)m 6931(3.)s +7205(Pr)s 8(ede\207ned)k 8300(symbols)s 240 fnt84 0 13203(3.8.)m +471(@Outline)s 240 fnt82 480 12771(The)m 220 fnt35 895 12768(@Outline)m +240 fnt82 1850 12771(symbol)m 2597(causes)s 3258(all)s 3537(the)s +3872(w)s 2(ords)k 4492(in)s 4722(the)s 5056(right)s +5553(parameter)s 6554(\(which)s 7261(may)s 7714(be)s 7982(an)s +8251(arbitrary)s 0 12483(object\))m 712(to)s 951(be)s 1233(printed)s +1968(in)s 2211(outline,)s 2982(rather)s 3598(than)s 4067(\207lled)s +4616(as)s 4866(is)s 5076(usual.)s 5745(F)s 3(or)k +6134(e)s 3(xample,)k 220 fnt35 480 11982(@Outline @Bo)m 6(x 24p @F)k 6(ont HELP)k +240 fnt82 0 11486(produces)m 1336 461 72 180 240 288 60 480 10685 LoutGr2 +LoutBox stroke +grestore +480 fnt82 72 72(HELP)mo +grestore +0 10234(Outlining)m +984(is)s 1209(part)s 1654(of)s 1940(the)s 2303(style)s +2824(information,)s 4074(in)s 4332(the)s 4694(same)s 5256(w)s 2(ay)k +5721(as)s 5986(colour)s 9(,)k 6710(font,)s 7216(underlining,)s +8441(and)s 8860(so)s 0 9946(forth.)m 630(Outlining)s 1602(can)s +1994(be)s 2278(applied)s 3042(to)s 3284(an)s 3(y)k +3683(font)s 4131(lik)s 2(ely)k 4729(to)s 4970(be)s +5255(used)s 5754(in)s 6000(practice.)s 6921(At)s 7222(the)s +7573(time)s 8055(of)s 8329(writing,)s 0 9658(there)m 528(is)s +732(no)s 1020(w)s 2(ay)k 1465(to)s 1699(control)s +2425(the)s 2768(thickness)s 3703(of)s 3969(the)s 4311(outline,)s +5077(and)s 220 fnt35 5475 9655(@Outline)m 240 fnt82 6439 9658(has)m +6803(no)s 7091(ef)s 6(fect)k 7681(in)s 7919(PDF)s +8410(output.)s 0 9370(The)m 424(size)s 847(of)s 1114(outlined)s +1952(w)s 2(ords)k 2582(is)s 2788(tak)s 2(en)k +3357(by)s 3647(Lout)s 4155(to)s 4390(be)s 4668(the)s +5012(same)s 5555(as)s 5801(if)s 6014(the)s 3(y)k +6473(had)s 6873(not)s 7235(been)s 7740(outlined,)s 8626(e)s 6(v)k 3(en)k +0 9082(though)m 723(the)s 3(y)k 1186(are)s 1533(in)s +1776(reality)s 2439(slightly)s 3210(lar)s 4(ger)k 13(.)k +240 fnt84 0 8289(3.9.)m 471(@Language)s 1762(and)s 2203(@CurrLang)s +240 fnt82 480 7812(The)m 220 fnt35 905 7809(@Language)m 240 fnt82 +2153 7812(symbol)m 2910(informs)s 3701(Lout)s 4210(that)s 4625(its)s +4898(right)s 5406(parameter)s 6417(is)s 6624(written)s 7354(in)s +7594(the)s 7939(language)s 8855(of)s 0 7524(its)m 276(left)s +653(parameter:)s 220 fnt35 480 7023(Danish @Language { ...)m 13( })k 240 fnt82 +0 6524(Basser)m 706(Lout)s 1228(V)s 26(ersion)k 2025(3)s +2199(uses)s 2671(this)s 3077(information)s 4271(in)s 4524(tw)s 2(o)k +4943(w)s 2(ays:)k 5609(to)s 5857(h)s 1(yphenate)k +6906(w)s 2(ords)k 7549(appropriately)s 8887(to)s 0 6236(that)m +418(language,)s 1389(and)s 1793(to)s 2032(change)s 2766(the)s +3114(v)s 6(alue)k 3682(of)s 3953(the)s 220 fnt35 +4301 6233(@CurrLang)m 240 fnt82 5486 6236(symbol)m 6246(\(see)s 6686(belo)s 6(w\).)k +7508(Other)s 8112(uses,)s 8630(such)s 0 5948(as)m 250(right-to-left)s +1422(formatting)s 2483(of)s 2754(certain)s 3460(languages,)s 4524(may)s +4990(be)s 5272(added)s 5902(in)s 6145(the)s 6493(future.)s +480 5574(The)m 953(left)s 1375(parameter)s 2434(must)s 3004(either)s +3652(be)s 3979(empty)s 4676(\(which)s 5442(means)s 6149(to)s +6433(lea)s 4(v)k 3(e)k 7031(the)s 7424(current)s +8206(language)s 0 5286(unchanged\))m 1167(or)s 1428(else)s 1857(it)s +2051(must)s 2578(ha)s 4(v)k 3(e)k 3080(been)s +3591(gi)s 6(v)k 3(en)k 4173(in)s 4418(a)s +220 fnt35 4586 5283(langdef)m 240 fnt82 5363 5286(language)m 6285(de\207nition)s +7261(at)s 7495(the)s 7845(be)s 3(ginning)k 8855(of)s +0 4998(the)m 348(input:)s 220 fnt35 480 4490(langdef Danish Dansk {)m 240 fnt83 +2993 4495(implementation-dependent)m 220 fnt35 5608 4490(})m 240 fnt82 0 3991(After)m +220 fnt35 571 3988(langdef)m 240 fnt82 1355 3991(comes)m 2025(a)s +2199(sequence)s 3140(of)s 3419(one)s 3829(or)s 4096(more)s +4651(simple)s 5352(w)s 2(ords,)k 6050(which)s 6700(are)s +7055(alternati)s 6(v)k 3(e)k 8117(names)s 8788(for)s +0 3703(the)m 347(language)s 1265(being)s 1849(de\207ned.)s 2716(F)s 3(ollo)k 6(wing)k +3743(them)s 4279(comes)s 4940(an)s 5221(implementation-dependent)s 7843(part)s +8272(between)s 0 3415(braces.)m 760(In)s 1001(Basser)s 1684(Lout)s +2181(V)s 26(ersion)k 2955(3)s 3104(this)s 3486(part)s +3902(contains)s 4736(the)s 5069(name)s 5629(of)s 5885(the)s +6219(Lout)s 6716(h)s 1(yphenation)k 7941(information)s 0 3127(\207le)m +383(\(minus)s 1121(its)s 1419(.lh)s 1745(suf\207x\))s 2441(to)s +2702(be)s 3007(used)s 3527(when)s 4125(h)s 1(yphenating)k +5384(w)s 2(ords)k 6040(in)s 6306(this)s 6725(language,)s +7718(follo)s 6(wed)k 8643(by)s 8960(a)s 0 2839(sequence)m +933(of)s 1204(w)s 2(ords)k 1838(which)s 2480(de\207ne)s +3121(the)s 3469(ends)s 3959(of)s 4230(sentences.)s 5310(F)s 3(or)k +5699(e)s 3(xample:)k 220 fnt35 480 2339(langdef English { english .)m 13( :)k 11( ? ! .\) ?\) !\) })k +240 fnt82 0 1840(de\207nes)m 748(a)s 934(language)s 1874(called)s +2522(English)s 3329(with)s 3831(h)s 1(yphenation)k 5091(patterns)s +5918(\207le)s 220 fnt35 6298 1837(english.lh)m 240 fnt82 7289 1840(and)m +7713(se)s 6(v)k 3(en)k 8326(w)s 2(ays)k +8887(to)s 0 1552(end)m 424(a)s 610(sentence.)s 1617(The)s +2065(use)s 2460(of)s 2751(these)s 3318(sentence)s 4217(endings)s +5034(is)s 5264(described)s 6258(in)s 6521(Section)s 7315(3.5.)s +7799(If)s 8049(there)s 8602(is)s 8833(no)s 0 1264(h)m 1(yphenation)k +1236(\207le)s 1592(a)s 4(v)k 6(ailable,)k 2546(this)s +2937(is)s 3143(indicated)s 4072(by)s 4361(writing)s 220 fnt35 +5099 1261(-)m 240 fnt82 5219 1264(for)m 5552(the)s 5895(\207le)s +6251(name;)s 6877(if)s 7089(there)s 7617(are)s 7959(no)s +8247(sentence)s 0 976(ends,)m 546(the)s 3(y)k 1009(are)s +1356(simply)s 2061(omitted.)s 480 602(The)m 220 fnt35 913 599(@CurrLang)m +240 fnt82 2103 602(symbol,)m 2920(which)s 3567(has)s 3942(no)s +4240(parameters,)s 5399(e)s 6(v)k 6(aluates)k 6332(to)s +6576(the)s 6929(\207rst)s 7365(name)s 7944(gi)s 6(v)k 3(en)k +8529(in)s 8778(the)s 220 fnt35 0 311(langdef)m 240 fnt82 +776 314(of)m 1047(the)s 1395(language)s 2315(in)s 2558(force)s +3104(at)s 3336(the)s 3684(point)s 4236(where)s 4876(it)s +5068(is)s 5278(in)s 9(v)k 4(ok)k 2(ed:)k + +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 47 53 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Italic +%%+ font Times-Bold +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +1 LoutMargSet +grestore +240 fnt83 0 13843(3.9.)m 454(@Langua)s 2(g)k 2(e)k +1682(and)s 2108(@CurrLang)s 240 fnt84 8831 13840(47)m 220 fnt35 +480 13207(Dansk @Language { )m 11(This is @CurrLang.)k 13( })k 240 fnt82 0 12708(has)m +370(result)s 480 12255(This)m 956(is)s 1166(Danish.)s 0 11802(It)m +205(is)s 415(typically)s 1305(used)s 1802(with)s 2284(the)s +220 fnt35 2632 11799(@Case)m 240 fnt82 3419 11802(symbol)m 4179(lik)s 2(e)k +4591(this:)s 220 fnt35 480 11301(@CurrLang @Case {)m 480 11013( Danish @Y)m 4(ield tirsdag)k +480 10725( English @Y)m 4(ield )k 11(T)k 26(uesda)k 6(y)k +480 10437( F)m 9(rench @Y)k 4(ield Mardi)k 480 10149(})m 240 fnt82 +0 9655(This)m 476(e)s 3(xample)k 1339(e)s 6(v)k 6(aluates)k +2267(to)s 2506(the)s 2854(name)s 3428(of)s 3699(the)s +4047(third)s 4556(day)s 4956(of)s 5227(the)s 5575(week)s +6141(in)s 6384(the)s 6732(current)s 7468(language.)s 480 9281(The)m +908(current)s 1644(language)s 2563(is)s 2773(part)s 3204(of)s +3474(the)s 3822(style)s 4329(of)s 4599(an)s 4882(object,)s +5573(lik)s 2(e)k 5984(its)s 6260(font.)s 6809(As)s +7125(e)s 3(xplained)k 8110(in)s 8352(Section)s 0 8993(2.6,)m +419(style)s 939(is)s 1162(inherited)s 2081(through)s 2896(the)s +3257(point)s 3822(of)s 4105(appearance,)s 5300(which)s 5955(for)s +6305(language)s 7238(can)s 7640(be)s 7935(une)s 3(xpected.)k +0 8705(F)m 3(or)k 380(e)s 3(xample,)k 1284(an)s +1557(inde)s 3(x)k 2131(entry)s 2666(which)s 3298(originates)s +4281(in)s 4514(a)s 4671(French)s 5382(chapter)s 6135(b)s 4(ut)k +6487(appears)s 7258(in)s 7491(an)s 7764(English)s 8542(inde)s 3(x)k +0 8417(will)m 426(ha)s 4(v)k 3(e)k 927(English)s +1715(for)s 2053(its)s 2329(language,)s 3300(so)s 3566(must)s +4091(be)s 4373(e)s 3(xplicitly)k 5326(set)s 5651(to)s +5890(French)s 6611(using)s 220 fnt35 7183 8414(@Language)m 240 fnt82 +8374 8417(.)m 240 fnt84 0 7624(3.10.)m 591(@OneCol)s 1653(and)s +2094(@OneRo)s 2(w)k 240 fnt82 480 7192(The)m 220 fnt35 +913 7189(@OneRo)m 3(w)k 240 fnt82 2049 7192(symbol)m 2814(returns)s +3533(its)s 3814(right)s 4330(parameter)s 5350(modi\207ed)s 6264(so)s +6535(that)s 6958(only)s 7443(the)s 7796(principal)s 8706(ro)s 6(w)k +0 6904(mark)m 540(protrudes.)s 1595(This)s 2059(is)s 2257(normally)s +3162(the)s 3498(\207rst)s 3917(ro)s 6(w)k 4324(mark,)s +4910(b)s 4(ut)k 5260(another)s 6025(one)s 6415(may)s +6869(be)s 7139(chosen)s 7849(by)s 8130(preceding)s 0 6616(it)m +192(with)s 220 fnt35 674 6613(^/)m 240 fnt82 901 6616(or)m +220 fnt35 1160 6613(^//)m 240 fnt82 1388 6616(.)m 1552(F)s 3(or)k +1941(e)s 3(xample,)k 220 fnt35 480 6115(@OneRo)m 3(w { |0.5r)k -8(t Slope @F)k 6(ont x + 2 ^//1p @HLine //1p |0.5r)k -8(t 5 })k +240 fnt82 0 5619(has)m 370(result)s 468 371 0 188 240 288 60 480 4640 LoutGr2 +grestore save gsave 200 dict begin lfigdict begin +grestore +468 371 0 188 240 288 60 0 0 LoutGr2 +/lfiglightgrey [ lfigbox ] gsave lfigpaintpath grestore +0.015 cm setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigbox ] lfigdopath +pop pop +grestore +468 371 0 188 240 288 60 0 0 LoutGr2 + +0.015 cm setlinewidth lfiground setlinecap +0.15 cm /lfigdashed [ -0.3 cm ymark +xsize ymark 0.3 cm 0 lfigpadd [] +xmark -0.3 cm +xmark ysize 0 0.3 cm lfigpadd ] lfigdopath +pop pop +grestore +240 fnt83 0 211(x)m +240 fnt82 166 209(+)m 354(2)s 468 0 0 0 240 288 60 0 188 LoutGr2 +0 0 moveto xsize 0 lineto stroke +grestore + +grestore +181 3(5)m +grestore + +grestore +end end restore +grestore +0 3924(with)m +482(one)s 884(ro)s 6(w)k 1304(mark)s 1856(protruding)s +2919(from)s 3443(the)s 3791(bar)s 4156(as)s 4406(sho)s 6(wn.)k +5190(Compare)s 6123(this)s 6519(with)s 220 fnt35 480 3423(@OneRo)m 3(w { |0.5r)k -8(t Slope @F)k 6(ont x + 2 //1p @HLine //1p |0.5r)k -8(t 5 })k +240 fnt82 0 2927(where)m 640(the)s 988(mark)s 1540(protrudes)s +2494(from)s 3018(the)s 3366(numerator:)s 468 371 0 263 240 288 60 480 1948 LoutGr2 +grestore save gsave 200 dict begin lfigdict begin +grestore +468 371 0 263 240 288 60 0 0 LoutGr2 +/lfiglightgrey [ lfigbox ] gsave lfigpaintpath grestore +0.015 cm setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigbox ] lfigdopath +pop pop +grestore +468 371 0 263 240 288 60 0 0 LoutGr2 + +0.015 cm setlinewidth lfiground setlinecap +0.15 cm /lfigdashed [ -0.3 cm ymark +xsize ymark 0.3 cm 0 lfigpadd [] +xmark -0.3 cm +xmark ysize 0 0.3 cm lfigpadd ] lfigdopath +pop pop +grestore +240 fnt83 0 211(x)m +240 fnt82 166 209(+)m 354(2)s 468 0 0 0 240 288 60 0 188 LoutGr2 +0 0 moveto xsize 0 lineto stroke +grestore + +grestore +181 3(5)m +grestore + +grestore +end end restore +grestore +220 fnt35 +0 1494(@OneCol)m 240 fnt82 1016 1497(has)m 1391(the)s 1744(same)s +2296(ef)s 6(fect)k 2897(on)s 3198(columns)s 4065(as)s +220 fnt35 4320 1494(@OneRo)m 3(w)k 240 fnt82 5456 1497(does)m +5951(on)s 6252(ro)s 6(ws,)k 6823(with)s 7310(the)s +7663(symbols)s 220 fnt35 8517 1494(^|)m 240 fnt82 8722 1497(and)m +220 fnt35 0 1206(^||)m 240 fnt82 257 1209(\(or)m 220 fnt35 +595 1206(^&)m 240 fnt82 840 1209(\))m 968(determining)s 2176(which)s +2818(mark)s 3370(is)s 3580(chosen.)s +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 48 54 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +%%+ font Times-Italic +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +0 LoutMargSet +grestore +240 fnt84 0 13840(48)m 240 fnt83 6081 13843(Chapter)m 6931(3.)s +7205(Pr)s 8(ede\207ned)k 8300(symbols)s 240 fnt84 0 13203(3.11.)m +591(@W)s 4(ide)k 1411(and)s 1852(@High)s 240 fnt82 +480 12726(The)m 220 fnt35 910 12723(@Wide)m 240 fnt82 1687 12726(symbol)m +2450(returns)s 3167(its)s 3446(right)s 3960(parameter)s 4977(modi\207ed)s +5888(to)s 6130(ha)s 4(v)k 3(e)k 6634(the)s +6985(width)s 7590(gi)s 6(v)k 3(en)k 8173(by)s +8470(its)s 8749(left)s 0 12438(parameter)m 9(,)k 1058(which)s +1707(must)s 2238(be)s 2527(a)s 2699(length)s 3361(\(Section)s +4220(3.2\))s 4655(whose)s 5329(unit)s 5768(of)s 6045(measurement)s +7386(is)s 220 fnt35 7602 12435(c)m 240 fnt82 7707 12438(,)m +220 fnt35 7821 12435(i)m 240 fnt82 7855 12438(,)m 220 fnt35 +7968 12435(p)m 240 fnt82 8082 12438(,)m 220 fnt35 8196 12435(m)m +240 fnt82 8365 12438(,)m 220 fnt35 8478 12435(f)m 240 fnt82 +8536 12438(,)m 220 fnt35 8650 12435(s)m 240 fnt82 8753 12438(,)m +8867(or)s 220 fnt35 0 12147(v)m 240 fnt82 109 12150(.)m +278(If)s 513(the)s 867(right)s 1383(parameter)s 2403(is)s +2618(not)s 2990(as)s 3245(wide)s 3772(as)s 4027(required,)s +4936(white)s 5528(space)s 6121(is)s 6336(added)s 6972(at)s +7209(the)s 7563(right;)s 8131(if)s 8354(it)s 8551(is)s +8767(too)s 0 11862(wide,)m 585(its)s 875(paragraphs)s 1988(are)s +2349(brok)s 2(en)k 3083(\(Section)s 3949(3.4\))s 4391(so)s +4670(that)s 5102(it)s 5308(\207ts.)s 5777(A)s 220 fnt35 +6021 11859(@OneCol)m 240 fnt82 7046 11862(operation)m 8020(is)s 8244(included)s +0 11574(in)m 257(the)s 620(ef)s 6(fect)k 1231(of)s +220 fnt35 1517 11571(@Wide)m 240 fnt82 2231 11574(,)m 2353(since)s +2915(it)s 3122(does)s 3627(not)s 4008(mak)s 2(e)k +4595(sense)s 5184(for)s 5537(an)s 5835(object)s 6494(of)s +6780(\207x)s 3(ed)k 7329(width)s 7946(to)s 8200(ha)s 4(v)k 3(e)k +8716(tw)s 2(o)k 0 11286(column)m 775(marks.)s 552 10912(The)m +220 fnt35 993 10909(@High)m 240 fnt82 1725 10912(symbol)m 2498(similarly)s +3413(ensures)s 4194(that)s 4625(its)s 4914(result)s 5517(is)s +5740(of)s 6024(a)s 6203(gi)s 6(v)k 3(en)k +6796(height,)s 7514(by)s 7821(adding)s 8539(white)s 0 10624(space)m +573(at)s 790(the)s 1123(bottom.)s 1950(In)s 2191(this)s +2572(case)s 3024(it)s 3201(is)s 3396(an)s 3664(error)s +4172(for)s 4495(the)s 4828(right)s 5324(parameter)s 6323(to)s +6547(be)s 6814(too)s 7158(lar)s 4(ge.)k 7780(A)s +220 fnt35 7995 10621(@OneRo)m 3(w)k 240 fnt82 0 10336(operation)m +960(is)s 1170(included.)s 240 fnt84 0 9543(3.12.)m 591(@HShift)s +1550(and)s 1991(@VShift)s 240 fnt82 480 9111(The)m 220 fnt35 +917 9108(@HShift)m 240 fnt82 1802 9111(symbol)m 2572(returns)s 3296(its)s +3582(right)s 4103(parameter)s 5127(with)s 5619(principal)s 6533(mark)s +7095(shifted)s 7813(as)s 8073(prescribed)s 0 8823(by)m 294(its)s +570(left)s 947(parameter:)s 220 fnt35 1124 8315(+)m 240 fnt83 +1244 8320(length)m 220 fnt35 1897 8315(@HShift)m 240 fnt83 2772 8320(object)m +240 fnt82 3600 8318(Principal)m 4517(mark)s 5069(shifted)s 5777(to)s +6016(the)s 6364(right)s 6875(by)s 240 fnt83 7169 8320(length)m +240 fnt82 7762 8318(;)m 220 fnt35 1180 7810(-)m 240 fnt83 +1244 7815(length)m 220 fnt35 1897 7810(@HShift)m 240 fnt83 2772 7815(object)m +240 fnt82 3600 7813(Principal)m 4517(mark)s 5069(shifted)s 5777(to)s +6016(the)s 6364(left)s 6741(by)s 240 fnt83 7035 7815(length)m +240 fnt82 7628 7813(;)m 240 fnt83 1244 7310(length)m 220 fnt35 +1897 7305(@HShift)m 240 fnt83 2772 7310(object)m 240 fnt82 3600 7308(Principal)m +4512(mark)s 5058(shifted)s 5760(so)s 6020(as)s 6264(to)s +6497(lie)s 240 fnt83 6786 7310(length)m 240 fnt82 7433 7308(to)m +7666(the)s 8008(right)s 8513(of)s 8778(the)s 3600 7020(left)m +3977(edge)s 4485(of)s 240 fnt83 4756 7022(object)m 240 fnt82 +5344 7020(;)m 0 6517(In)m 256(each)s 751(chase)s 220 fnt35 +1338 6514(@HShift)m 240 fnt82 2213 6517(includes)m 3061(a)s 220 fnt35 +3227 6514(@OneCol)m 240 fnt82 4239 6517(ef)m 6(fect.)k 480 6143(The)m +916(units)s 1440(of)s 1720(measurement)s 3062(of)s 240 fnt83 +3342 6145(length)m 240 fnt82 4003 6143(may)m 4478(be)s 220 fnt35 +4768 6140(c)m 240 fnt82 4873 6143(,)m 220 fnt35 4989 6140(i)m +240 fnt82 5023 6143(,)m 220 fnt35 5138 6140(p)m 240 fnt82 +5252 6143(,)m 220 fnt35 5368 6140(m)m 240 fnt82 5537 6143(,)m +220 fnt35 5652 6140(f)m 240 fnt82 5710 6143(,)m 220 fnt35 +5825 6140(s)m 240 fnt82 5928 6143(,)m 220 fnt35 6044 6140(v)m +240 fnt82 6153 6143(,)m 6268(or)s 220 fnt35 6536 6140(w)m +240 fnt82 6692 6143(.)m 6864(In)s 7129(the)s 7485(latter)s +8043(case,)s 220 fnt35 8569 6140(1w)m 240 fnt82 8916 6143(is)m +0 5855(tak)m 2(en)k 579(to)s 825(be)s 1113(the)s +1468(width)s 2076(of)s 2354(the)s 2708(right)s 3226(parameter)s 9(,)k +4285(so)s 4557(that,)s 5029(for)s 5373(e)s 3(xample,)k +220 fnt35 6294 5852(0.5w @HShift)m 240 fnt82 7699 5855(will)m 8132(centre)s +8778(the)s 0 5567(principal)m 904(column)s 1679(mark)s 2231(within)s +2899(the)s 3247(right)s 3758(parameter)s 13(.)k 548 5193(The)m +220 fnt35 984 5190(@VShift)m 240 fnt82 1855 5193(symbol)m 2624(is)s +2842(similar)s 3572(e)s 3(xcept)k 4261(that)s 4688(it)s +4888(applies)s 5624(v)s 3(ertically)k 6584(to)s 6832(the)s +7188(principal)s 8100(ro)s 6(w)k 8529(mark:)s 220 fnt35 +0 4902(+)m 240 fnt83 120 4907(length)m 240 fnt82 771 4905(shifts)m +1337(it)s 1527(do)s 6(wn,)k 220 fnt35 2159 4902(-)m +240 fnt83 2223 4907(length)m 240 fnt82 2874 4905(shifts)m 3440(it)s +3629(up,)s 3974(and)s 240 fnt83 4376 4907(length)m 240 fnt82 +5027 4905(shifts)m 5593(it)s 5783(to)s 240 fnt83 6019 4907(length)m +240 fnt82 6670 4905(belo)m 6(w)k 7301(the)s 7647(top)s +8004(edge)s 8510(of)s 8778(the)s 0 4617(object.)m 748(W)s 9(ith)k +220 fnt35 1274 4614(@VShift)m 240 fnt82 2077 4617(,)m 220 fnt35 +2184 4614(1w)m 240 fnt82 2522 4617(is)m 2732(tak)s 2(en)k +3305(to)s 3544(be)s 3826(the)s 4174(height)s 4832(of)s +5103(the)s 5451(right)s 5962(parameter)s 13(.)k 240 fnt84 +0 3824(3.13.)m 591(@HExpand)s 1854(and)s 2295(@VExpand)s 240 fnt82 +558 3347(The)m 220 fnt35 1004 3344(@HExpand)m 240 fnt82 2195 3347(symbol)m +2973(causes)s 3666(its)s 3961(right)s 4490(parameter)s 5522(to)s +5779(be)s 6079(as)s 6348(wide)s 6887(as)s 7155(it)s +7365(possibly)s 8235(could)s 8844(be)s 0 3059(without)m 784(violating)s +1679(a)s 220 fnt35 1837 3056(@Wide)m 240 fnt82 2603 3059(symbol)m +3355(or)s 3606(intruding)s 4528(into)s 4945(the)s 5285(space)s +5864(occupied)s 6778(by)s 7064(neighbouring)s 8386(g)s 1(aps)k +8867(or)s 0 2771(objects.)m 841(The)s 220 fnt35 1269 2768(@VExpand)m +240 fnt82 2430 2771(symbol)m 3190(is)s 3400(similar)s 9(,)k +4160(b)s 4(ut)k 4522(it)s 4714(af)s 6(fects)k +5394(height.)s 6156(F)s 3(or)k 6545(e)s 3(xample,)k +7459(in)s 7702(the)s 8050(object)s 220 fnt35 480 2270(8i @Wide 11i @High {)m +480 1982( //1i ||1i @HExpand @VExpand x ||1i)m 480 1694( //1i)m 480 1406(})m 240 fnt82 0 912(object)m +220 fnt35 655 909(x)m 240 fnt82 834 912(could)m 1435(ha)s 4(v)k 3(e)k +1947(an)s 3(y)k 2356(size)s 2794(up)s 3098(to)s +3348(six)s 3694(inches)s 4367(wide)s 4899(by)s 5204(nine)s +5683(inches)s 6357(high,)s 6901(so)s 7178(the)s 220 fnt35 +7537 909(@HExpand)m 240 fnt82 8722 912(and)m 220 fnt35 0 621(@VExpand)m +240 fnt82 1166 624(symbols)m 2021(cause)s 2614(it)s 2812(to)s +3057(ha)s 4(v)k 3(e)k 3564(e)s 3(xactly)k +4311(this)s 4713(size.)s 5254(This)s 5736(is)s 5952(important,)s +6994(for)s 7338(e)s 3(xample,)k 8258(if)s 220 fnt35 +8481 621(x)m 240 fnt82 8655 624(con)m 8998(-)s 0 336(tains)m +220 fnt35 502 333(|1r)m -8(t)k 240 fnt82 879 336(or)m +220 fnt35 1138 333(/1r)m -8(t)k 240 fnt82 1459 336(;)m +1571(without)s 2362(the)s 2710(e)s 3(xpansion)k 3735(these)s +4282(might)s 4900(not)s 5266(mo)s 3(v)k 3(e)k +5848(as)s 6098(f)s 2(ar)k 6420(across)s 7068(or)s +7327(do)s 6(wn)k 7911(as)s 8161(e)s 3(xpected.)k + +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 49 55 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Italic +%%+ font Times-Bold +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +1 LoutMargSet +grestore +240 fnt83 0 13843(3.13.)m 574(@HExpand)s 1765(and)s 2191(@VExpand)s +240 fnt84 8832 13840(49)m 240 fnt82 480 13204(As)m 809(Section)s +1595(2.6)s 1961(e)s 3(xplains)k 2818(in)s 3074(detail,)s +3723(most)s 4260(objects)s 5001(are)s 5360(already)s 6130(as)s +6392(lar)s 4(ge)k 6933(as)s 7196(the)s 3(y)k +7671(possibly)s 8536(could)s 0 12916(be.)m 379(Consequently)s 1738(these)s +2273(symbols)s 3110(are)s 3446(needed)s 4170(only)s 4638(rarely)s 15(.)k +220 fnt35 5331 12913(@HExpand)m 240 fnt82 6493 12916(includes)m 7329(a)s +220 fnt35 7483 12913(@OneCol)m 240 fnt82 8483 12916(ef)m 6(fect,)k +0 12628(and)m 220 fnt35 404 12625(@VExpand)m 240 fnt82 1565 12628(includes)m +2413(a)s 220 fnt35 2579 12625(@OneRo)m 3(w)k 240 fnt82 +3710 12628(ef)m 6(fect.)k 240 fnt84 0 11839(3.14.)m 591(@HContract)s +1976(and)s 2417(@VContract)s 240 fnt82 542 11407(The)m 220 fnt35 +972 11404(@HContr)m 2(act)k 240 fnt82 2239 11407(symbol)m 3001(reduces)s +3784(the)s 4135(size)s 4564(of)s 4837(its)s 5116(right)s +5629(parameter)s 6645(to)s 6887(a)s 7055(reasonable)s 8136(minimum)s +0 11119(\(after)m 575(paragraph)s 1588(breaking\).)s 2668(F)s 3(or)k +3057(e)s 3(xample,)k 220 fnt35 480 10618(5i @Wide @HContr)m 2(act { A |1r)k -8(t B })k +240 fnt82 0 10124(has)m 370(result)s 480 9673(A)m 650(B)s +0 9222(in)m 233(which)s 864(the)s 1201(B)s 1393(is)s +1592(much)s 2170(closer)s 2789(to)s 3017(the)s 3354(A)s +3574(than)s 4032(it)s 4213(w)s 2(ould)k 4857(otherwise)s +5831(ha)s 4(v)k 3(e)k 6321(been.)s 220 fnt35 +6926 9219(@VContr)m 2(act)k 240 fnt82 8167 9222(is)m 8366(similar)s 9(,)k +0 8934(b)m 4(ut)k 362(in)s 605(a)s 771(v)s 3(ertical)k +1538(direction.)s 2551(See)s 2952(Section)s 3726(2.6)s 4079(for)s +4417(a)s 4583(more)s 5130(e)s 3(xtensi)k 6(v)k 3(e)k +6077(discussion.)s 240 fnt84 0 8190(3.15.)m 591(@HLimited)s 1864(and)s +2305(@VLimited)s 240 fnt82 579 7758(The)m 220 fnt35 1047 7755(@HLimited)m +240 fnt82 2221 7758(symbol)m 3021(limits)s 3654(the)s 4042(width)s +4684(a)s 4(v)k 6(ailable)k 5631(to)s 5910(recursi)s 6(v)k 3(e)k +6871(and)s 7315(recepti)s 6(v)k 3(e)k 8277(symbols)s +0 7470(within)m 692(its)s 993(right)s 1529(parameter)s 2567(to)s +2831(whate)s 6(v)k 3(er)k 3783(is)s 4018(a)s 4(v)k 6(ailable)k +4950(without)s 5766(increasing)s 6826(the)s 7198(e)s 3(xisting)k +8030(size)s 8482(of)s 8778(the)s 220 fnt35 0 7179(@HLimited)m +240 fnt82 1138 7182(object.)m 1890(So)s 2199(this)s 2599(symbol)s +3362(acts)s 3788(lik)s 2(e)k 220 fnt35 4204 7179(@Wide)m +240 fnt82 4981 7182(with)m 5467(respect)s 6206(to)s 6449(limiting)s +7261(the)s 7613(space)s 8204(occupied)s 0 6894(by)m 315(recursi)s 6(v)k 3(e)k +1258(and)s 1684(recepti)s 6(v)k 3(e)k 2627(symbols,)s +3553(e)s 3(xcept)k 4256(that)s 4695(instead)s 5451(of)s +5744(enforcing)s 6734(a)s 6921(\207x)s 3(ed)k 7477(constant)s +8355(limit,)s 8934(it)s 0 6606(enforces)m 860(whate)s 6(v)k 3(er)k +1787(size)s 2214(is)s 2424(already)s 3181(in)s 3424(place.)s +480 6232(The)m 220 fnt35 904 6229(@VLimited)m 240 fnt82 2022 6232(symbol)m +2778(is)s 2983(e)s 3(xactly)k 3719(the)s 4063(same,)s +4656(e)s 3(xcept)k 5332(that)s 5746(it)s 5933(applies)s +6656(v)s 3(ertically)k 7604(rather)s 8215(than)s 8679(hor)s +8998(-)s 0 5944(izontally)m 15(.)k 240 fnt84 0 5151(3.16.)m +591(@HAdjust,)s 1804(@V)s 32(Adjust,)k 2972(and)s 3413(@P)s 17(Adjust)k +240 fnt82 551 4675(These)m 1189(symbols)s 2050(spread)s 2743(their)s +3252(right)s 3774(parameter)s 4800(apart)s 5348(until)s 5852(it)s +6056(occupies)s 6955(all)s 7260(the)s 7619(space)s 8218(a)s 4(v)k 6(ailable)k +0 4387(to)m 268(it;)s 220 fnt35 602 4384(@HAdjust)m 240 fnt82 +1678 4387(adjusts)m 220 fnt35 2422 4384(|)m 240 fnt82 2549 4387(sequences,)m +220 fnt35 3656 4384(@V)m 17(Adjust)k 240 fnt82 4702 4387(adjusts)m +220 fnt35 5447 4384(/)m 240 fnt82 5601 4387(sequences,)m 6707(and)s +220 fnt35 7141 4384(@P)m 26(Adjust)k 240 fnt82 8179 4387(adjusts)m +220 fnt35 8924 4384(&)m 240 fnt82 0 4099(sequences.)m 1134(F)s 3(or)k +1523(e)s 3(xample,)k 220 fnt35 480 3598(4i @Wide @P)m 26(Adjust { 1 2 3 4 5 6 7 8 })k +240 fnt82 0 3101(has)m 370(result)s 480 2646(1)m 1274(2)s +2088(3)s 2892(4)s 3706(5)s 4512(6)s 5325(7)s +6133(8)s 0 2192(More)m 571(precisely)s 15(,)k 1521(the)s +1865(widening)s 2806(is)s 3012(ef)s 6(fected)k 3828(by)s +4119(enlar)s 4(ging)k 5067(the)s 5411(size)s 5835(of)s +6102(each)s 6593(component)s 7714(e)s 3(xcept)k 8391(the)s +8735(last)s 0 1904(by)m 284(an)s 556(equal)s 1118(fraction)s +1907(of)s 2167(the)s 2504(space)s 3080(that)s 3488(w)s 2(ould)k +4132(otherwise)s 5106(be)s 5377(left)s 5744(o)s 3(v)k 3(er)k +6212(\211)s 6381(just)s 6775(the)s 7113(opposite)s 7969(of)s +8229(the)s 8566(usual)s 0 1616(procedure,)m 1063(which)s 1705(assigns)s +2447(all)s 2740(the)s 3088(lefto)s 3(v)k 3(er)k +3884(space)s 4471(to)s 4710(the)s 5058(last)s 5449(component)s +6573(\(Section)s 7426(2.6\).)s 220 fnt35 480 1239(@P)m 26(Adjust)k +240 fnt82 1497 1242(is)m 1716(used)s 2222(by)s 2525(the)s +220 fnt35 2883 1239(adjust)m 240 fnt82 3533 1242(and)m 220 fnt35 +3946 1239(outdent)m 240 fnt82 4743 1242(options)m 5508(of)s 5789(the)s +220 fnt35 6146 1239(@Break)m 240 fnt82 7011 1242(symbol)m 7780(\(Section)s +8643(3.4\).)s 0 954(It)m 213(has)s 591(a)s 765(slight)s +1364(peculiarity:)s 2559(it)s 2759(will)s 3193(not)s 3567(enlar)s 4(ge)k +4330(components)s 5546(when)s 6130(the)s 6486(immediately)s 7742(follo)s 6(wing)k +8728(g)s 1(ap)k 0 666(has)m 398(width)s 1029(0.)s +1342(This)s 1847(is)s 2086(to)s 2354(pre)s 6(v)k 3(ent)k +3151(space)s 3767(from)s 4320(appearing)s 5345(\(for)s 5791(e)s 3(xample\))k +6755(between)s 7638(a)s 7833(w)s 2(ord)k 8410(and)s +8843(an)s 0 378(immediately)m 1248(follo)s 6(wing)k 2225(comma.)s +3093(The)s 3521(other)s 4072(tw)s 2(o)k 4482(symbols)s +5331(will)s 5757(enlar)s 4(ge)k 6512(such)s 7008(components.)s + +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 50 56 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +%%+ font Times-Italic +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +0 LoutMargSet +grestore +240 fnt84 0 13840(50)m 240 fnt83 6081 13843(Chapter)m 6931(3.)s +7205(Pr)s 8(ede\207ned)k 8300(symbols)s 240 fnt84 0 13203(3.17.)m +591(@HScale)s 1587(and)s 2028(@VScale)s 220 fnt35 538 12768(@HScale)m +240 fnt82 1516 12771(causes)m 2189(its)s 2462(right)s 2970(parameter)s +3982(to)s 4218(e)s 3(xpand)k 4962(to)s 5199(\207ll)s +5516(the)s 5861(space)s 6446(a)s 4(v)k 6(ailable,)k +7402(by)s 7693(geometricallly)s 0 12483(scaling)m 730(it:)s 220 fnt35 +480 11982(4i @Wide @HScale { 1 2 3 4 5 6 7 8 })m 240 fnt82 0 11488(has)m 370(result)s gsave +480 0 translate +4.4965 1.0000 scale +0 11033(1)m +155(2)s 329(3)s 493(4)s 667(5)s 833(6)s +1006(7)s 1174(8)s +grestore +0 10579(and)m 220 fnt35 480 10128(0.5i @Wide @HScale { 1 2 3 4 5 6 7 8 })m +240 fnt82 0 9634(has)m 370(result)s gsave +480 0 translate +0.5621 1.0000 scale +0 9179(1)m 155(2)s +329(3)s 493(4)s 667(5)s 833(6)s 1006(7)s +1174(8)s +grestore +220 fnt35 0 8722(@HScale)m 240 fnt82 980 8725(\207rst)m +1409(applies)s 220 fnt35 2136 8722(@HContr)m 2(act)k 240 fnt82 +3398 8725(to)m 3635(its)s 3910(parameter)s 9(,)k 4960(then)s +5427(horizontally)s 6635(scales)s 7254(it)s 7444(to)s 7682(the)s +8028(actual)s 8651(size.)s 0 8437(The)m 433(principal)s 1342(mark)s +1899(of)s 2175(the)s 2528(right)s 3044(parameter)s 4063(has)s +4438(no)s 4736(ef)s 6(fect)k 5337(on)s 5639(the)s +5992(result;)s 6639(the)s 6992(parameter)s 8011(is)s 8226(scaled)s +8887(to)s 0 8149(the)m 365(actual)s 1007(size)s 1451(and)s +1872(positioned)s 2944(to)s 3200(\207ll)s 3537(the)s 3902(space)s +4506(a)s 4(v)k 6(ailable.)k 5539(\(T)s 19(aking)k +6347(account)s 7168(of)s 7456(alignment)s 8489(of)s 8778(the)s +0 7861(principal)m 904(mark)s 1456(only)s 1936(causes)s 2611(trouble)s +3344(in)s 3587(practice.\))s 220 fnt35 480 7484(@VScale)m 240 fnt82 +1460 7487(is)m 1681(similar)s 9(,)k 2452(b)s 4(ut)k +2825(in)s 3080(a)s 3257(v)s 3(ertical)k 4035(direction.)s +220 fnt35 5059 7484(@HScale)m 240 fnt82 6051 7487(and)m 220 fnt35 +6467 7484(@VScale)m 240 fnt82 7447 7487(each)m 7953(ha)s 4(v)k 3(e)k +8465(both)s 8960(a)s 220 fnt35 0 7196(@OneCol)m 240 fnt82 +1012 7199(and)m 1416(a)s 220 fnt35 1582 7196(@OneRo)m 3(w)k +240 fnt82 2713 7199(ef)m 6(fect.)k 240 fnt84 0 6451(3.18.)m +591(@HCo)s 2(v)k 2(er)k 1679(and)s 2120(@VCo)s 2(v)k 2(er)k +240 fnt82 529 6019(The)m 220 fnt35 946 6016(@VCo)m 3(v)k 5(er)k +240 fnt82 1941 6019(symbol)m 2690(v)s 3(ertically)k 3631(scales)s +4241(its)s 4506(right)s 5006(parameter)s 6009(so)s 6264(that)s +6671(it)s 6852(co)s 3(v)k 3(ers)k 7510(e)s 6(v)k 3(ery)k +8075(object)s 8708(that)s 0 5731(shares)m 648(its)s 924(ro)s 6(w)k +1344(mark.)s 1999(F)s 3(or)k 2388(e)s 3(xample,)k +220 fnt35 480 5230(@VCo)m 3(v)k 5(er \( 45d @Rotate Hello @VCo)k 3(v)k 5(er \))k +240 fnt82 0 4734(produces)m 748 843 0 396 240 288 60 480 3551 LoutGr2 +grestore save gsave 200 dict begin lfigdict begin +grestore +748 843 0 396 240 288 60 0 0 LoutGr2 + +0.015 cm setlinewidth lfiground setlinecap +0.15 cm /lfigdashed [ -0.3 cm ymark +xsize ymark 0.3 cm 0 lfigpadd ] lfigdopath +pop pop +grestore +gsave +0 396 translate +1.0000 4.1328 scale +0 -54(\()m +grestore +gsave +210 396 translate +45.0000 rotate +0 -54(Hello)m +grestore +gsave +680 396 translate +1.0000 4.1328 scale +0 -54(\))m + +grestore + +grestore +end end restore +grestore +0 3100(The)m 428(ro)s 6(w)k 848(mark)s 1400(has)s +1770(been)s 2279(added)s 2909(to)s 3148(sho)s 6(w)k +3702(clearly)s 4405(where)s 5045(it)s 5237(lies.)s 5732(This)s +6208(should)s 6905(be)s 7187(compared)s 8188(with)s 220 fnt35 +480 2599(@VScale \( 45d @Rotate Hello @VScale \))m 240 fnt82 0 2103(which)m 642(produces)s 748 486 0 39 240 288 60 480 1277 LoutGr2 +grestore save gsave 200 dict begin lfigdict begin +grestore +748 486 0 39 240 288 60 0 0 LoutGr2 + +0.015 cm setlinewidth lfiground setlinecap +0.15 cm /lfigdashed [ -0.3 cm ymark +xsize ymark 0.3 cm 0 lfigpadd ] lfigdopath +pop pop +grestore +gsave +0 229 translate +1.0000 2.3824 scale +0 -54(\()m + +grestore +gsave +210 39 translate +45.0000 rotate +0 -54(Hello)m +grestore +gsave +0 229 translate +1.0000 2.3824 scale +680 -54(\))m +grestore + +grestore +end end restore +grestore +0 826(Scaling)m 786(abandons)s 1759(mark)s +2328(alignment)s 3361(and)s 3782(so)s 4065(is)s 4292(able)s +4763(to)s 5018(e)s 3(xactly)k 5776(co)s 3(v)k 3(er)k +6378(the)s 6743(rest)s 7164(of)s 7452(the)s 7817(ro)s 6(w)k 15(,)k +8292(whereas)s 0 538(co)m 3(v)k 3(ering)k 896(preserv)s 3(es)k +1859(mark)s 2424(alignment)s 3453(and)s 3869(so)s 4148(is)s +4371(obliged)s 5160(in)s 5415(general)s 6186(to)s 6438(more)s +6998(than)s 7479(co)s 3(v)k 3(er)k 8077(the)s +8438(rest)s 8855(of)s 0 250(the)m 348(ro)s 6(w)k 15(.)k + +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 51 57 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Italic +%%+ font Times-Bold +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +1 LoutMargSet +grestore +240 fnt83 0 13843(3.18.)m 574(@HCo)s 2(ver)k 1615(and)s +2041(@VCo)s 2(ver)k 240 fnt84 8839 13840(51)m 240 fnt82 +480 13250(If)m 700(the)s 1038(parameter)s 2042(of)s 220 fnt35 +2303 13247(@VCo)m 3(v)k 5(er)k 240 fnt82 3299 13250(has)m +3658(zero)s 4112(v)s 3(ertical)k 4869(size,)s 5337(this)s +5723(is)s 5923(tak)s 2(en)k 6485(to)s 6714(mean)s +7279(that)s 7687(co)s 3(v)k 3(ering)k 8561(is)s +8760(not)s 0 12962(required)m 863(after)s 1368(all)s 1670(and)s +2083(the)s 220 fnt35 2441 12959(@VCo)m 3(v)k 5(er)k +240 fnt82 3456 12962(is)m 3675(silently)s 4441(ignored.)s 5345(If)s +5585(ho)s 6(we)k 6(v)k 3(er)k 6463(the)s +6820(parameter)s 7843(has)s 8223(non-zero)s 0 12674(size)m 434(abo)s 3(v)k 3(e)k +1064(the)s 1420(mark)s 1980(b)s 4(ut)k 2350(zero)s +2822(size)s 3256(belo)s 6(w)k 15(,)k 3935(or)s +4202(vice)s 4664(v)s 3(ersa,)k 5280(this)s 5684(is)s +5901(tak)s 2(en)k 6482(to)s 6729(be)s 7019(an)s +7310(error)s 7841(since)s 8396(scaling)s 0 12386(cannot)m 698(mak)s 2(e)k +1270(the)s 1618(parameter)s 2632(co)s 3(v)k 3(er)k +3217(the)s 3565(rest)s 3969(of)s 4240(the)s 4588(ro)s 6(w)k 15(.)k +220 fnt35 480 12009(@HCo)m 3(v)k 5(er)k 240 fnt82 +1505 12012(is)m 1722(similar)s 9(,)k 2489(horizontally)s 3705(co)s 3(v)k 3(ering)k +4596(all)s 4896(objects)s 5631(that)s 6056(share)s 6623(its)s +6906(column)s 7688(mark.)s 8350(Neither)s 0 11724(symbol)m 753(w)s 2(orks)k +1379(well)s 1837(near)s 2300(g)s 1(alle)k 3(y)k +2926(tar)s 4(gets,)k 3658(because)s 4463(the)s 4803(scale)s +5328(f)s 2(actor)k 5934(to)s 6166(apply)s 6744(is)s +6946(determined)s 8071(before)s 8729(an)s 3(y)k 0 11436(g)m 1(alle)k 3(y)k +634(\210ushing)s 1459(tak)s 2(es)k 1999(place.)s 240 fnt84 +0 10643(3.19.)m 591(@StartHSpan,@StartVSpan,)s 3642(@StartHVSpan,)s 5374(@HSpan,)s 6416(and)s +6857(@VSpan)s 240 fnt82 556 10166(These)m 1199(symbols)s 2065(w)s 2(ork)k +2632(together)s 3492(to)s 3747(produce)s 4591(spanning)s 5525(columns)s +6403(and)s 6824(ro)s 6(ws)k 7350(in)s 7610(a)s +7792(more)s 8356(\210e)s 3(xible)k 0 9878(w)m 2(ay)k +451(than)s 920(is)s 1130(possible)s 1970(in)s 2213(practice)s +3024(with)s 220 fnt35 3506 9875(//)m 240 fnt82 3691 9878(and)m +220 fnt35 4095 9875(||)m 240 fnt82 4189 9878(.)m 4353(An)s +4703(object)s 220 fnt35 480 9377(@Star)m -8(tHSpan object)k 240 fnt82 +0 8880(causes)m 220 fnt35 682 8877(object)m 240 fnt82 1330 8880(to)m +1577(be)s 1866(printed,)s 2658(b)s 4(ut)k 3027(occup)s 2(ying)k +4084(all)s 4384(the)s 4740(horizontal)s 5771(space)s 6366(to)s +6612(the)s 6968(right)s 7486(on)s 7791(the)s 8146(ro)s 6(w)k +8574(mark)s 0 8592(on)m 289(which)s 922(it)s 1105(lies)s +1478(up)s 1762(to)s 1992(and)s 2387(including)s 3335(the)s +3675(rightmost)s 220 fnt35 4642 8589(@HSpan)m 240 fnt82 5572 8592(symbol)m +6323(on)s 6611(that)s 7020(mark)s 7563(not)s 7920(preceded)s +8832(by)s 220 fnt35 0 8301(@Star)m -8(tHVSpan)k 240 fnt82 +1496 8304(,)m 220 fnt35 1603 8301(@Star)m -8(tHSpan)k 240 fnt82 +2953 8304(,)m 220 fnt35 3059 8301(@Star)m -8(tVSpan)k 240 fnt82 +4397 8304(,)m 4503(or)s 220 fnt35 4761 8301(@VSpan)m 240 fnt82 +5628 8304(.)m 5791(The)s 6218(column)s 6992(mark)s 7543(of)s +7813(this)s 8208(spanning)s 0 8016(object)m 644(is)s 854(not)s +1220(constrained)s 2380(to)s 2619(align)s 3154(with)s 3636(an)s 3(y)k +4033(of)s 4304(the)s 4652(column)s 5427(marks)s 6062(of)s +6333(the)s 6681(columns)s 7543(it)s 7735(spans.)s 480 7642(If)m +739(there)s 1301(is)s 1541(no)s 220 fnt35 1863 7639(@HSpan)m +240 fnt82 2831 7642(symbol)m 3621(an)s 3(ywhere)k 4633(to)s +4901(the)s 5279(right)s 5819(of)s 220 fnt35 6119 7639(@Star)m -8(tHSpan)k +240 fnt82 7469 7642(,)m 7606(then)s 8104(the)s 8482(object)s +0 7354(spans)m 585(only)s 1067(its)s 1345(o)s 6(wn)k +1811(column.)s 2695(This)s 3173(means)s 3837(that)s 4257(it)s +4451(occupies)s 5341(that)s 5761(column)s 6538(as)s 6790(usual)s +7352(b)s 4(ut)k 7716(its)s 7994(mark)s 8548(is)s +8760(not)s 0 7066(constrained)m 1160(to)s 1399(align)s 1934(with)s +2416(those)s 2977(of)s 3248(the)s 3596(other)s 4147(objects)s +4875(in)s 5118(the)s 5466(column.)s 480 6692(Similarly)m 15(,)k +1457(the)s 220 fnt35 1801 6689(@Star)m -8(tVSpan)k 240 fnt82 +3196 6692(symbol)m 3952(causes)s 4624(its)s 4896(object)s 5537(to)s +5772(occup)s 2(y)k 6513(all)s 6802(the)s 7147(v)s 3(ertical)k +7910(space)s 8493(belo)s 6(w)k 0 6404(it)m 191(on)s +486(the)s 832(column)s 1605(mark)s 2155(on)s 2451(which)s +3091(it)s 3281(lies,)s 3717(do)s 6(wn)k 4299(to)s +4537(and)s 4939(including)s 5894(the)s 6240(bottommost)s 220 fnt35 +7441 6401(@VSpan)m 240 fnt82 8366 6404(symbol)m 0 6116(on)m 294(that)s +708(mark)s 1256(not)s 1618(preceded)s 2535(by)s 2825(a)s +220 fnt35 2987 6113(@Star)m -8(tHVSpan)k 240 fnt82 4483 6116(,)m +220 fnt35 4586 6113(@Star)m -8(tHSpan)k 240 fnt82 5936 6116(,)m +220 fnt35 6039 6113(@Star)m -8(tVSpan)k 240 fnt82 7377 6116(,)m +7480(or)s 220 fnt35 7735 6113(@HSpan)m 240 fnt82 8614 6116(;)m +8722(and)s 0 5828(if)m 206(there)s 728(is)s 927(no)s +220 fnt35 1209 5825(@VSpan)m 240 fnt82 2125 5828(symbol)m 2874(an)s 3(ywhere)k +3846(belo)s 6(w)k 4468(it)s 4649(on)s 4935(that)s +5342(mark,)s 5929(then)s 6387(the)s 6724(object)s 7357(spans)s +7929(only)s 8398(its)s 8662(o)s 6(wn)k 0 5540(ro)m 6(w)k 15(,)k +458(occup)s 2(ying)k 1507(its)s 1783(ro)s 6(w)k +2203(b)s 4(ut)k 2565(with)s 3047(its)s 3323(mark)s +3875(not)s 4241(constrained)s 5401(to)s 5640(align)s 6175(with)s +6657(the)s 7005(ro)s 6(w)k 7425(mark.)s 480 5166(The)m +220 fnt35 949 5163(@Star)m -8(tHVSpan)k 240 fnt82 2547 5166(symbol)m +3349(combines)s 4359(the)s 4748(ef)s 6(fects)k 5470(of)s +220 fnt35 5783 5163(@Star)m -8(tHSpan)k 240 fnt82 7235 5166(and)m +220 fnt35 7681 5163(@Star)m -8(tVSpan)k 240 fnt82 9019 5166(,)m +0 4878(allo)m 6(wing)k 884(an)s 1167(object)s 1811(to)s +2050(span)s 2546(both)s 3029(columns)s 3891(and)s 4295(ro)s 6(ws)k +4805(simultaneously)s 15(.)k 6402(F)s 3(or)k 6791(e)s 3(xample,)k +7705(in)s 220 fnt35 480 4377(@Star)m -8(tHVSpan x | | @HSpan)k 480 4089(/)m +480 3801(@VSpan | |)m 240 fnt82 0 3305(the)m 378(object)s 220 fnt35 +1052 3302(x)m 240 fnt82 1250 3305(will)m 1706(occup)s 2(y)k +2481(a)s 2677(rectangular)s 3841(area)s 4328(spanning)s 5276(three)s +5840(columns,)s 6788(tw)s 2(o)k 7228(ro)s 6(ws,)k +7824(and)s 8258(the)s 8637(g)s 1(aps)k 0 3017(between)m +854(them.)s 480 2643(The)m 908(objects)s 1636(lying)s 2182(in)s +2425(the)s 2774(re)s 3(gion)k 3439(spanned)s 4283(should)s +4980(all)s 5274(be)s 5556(empty)s 15(,)k 6247(or)s +6506(the)s 220 fnt35 6855 2640(@HSpan)m 240 fnt82 7794 2643(and)m +220 fnt35 8199 2640(@VSpan)m 240 fnt82 0 2355(symbols)m 865(can)s +1271(be)s 1570(used)s 2084(to)s 2340(document)s 3360(the)s +3725(spanning)s 4660(that)s 5095(is)s 5322(occurring.)s 6418(At)s +6734(present)s 7501(there)s 8051(may)s 8534(be)s 8833(no)s +0 2067(g)m 1(alle)k 3(y)k 639(tar)s 4(gets)k +1328(or)s 1593(recursi)s 6(v)k 3(e)k 2521(symbols)s +3376(within)s 4050(the)s 4404(right)s 4921(parameter)s 5941(of)s +220 fnt35 6218 2064(@Star)m -8(tHSpan)k 240 fnt82 7568 2067(,)m +220 fnt35 7681 2064(@Star)m -8(tVSpan)k 240 fnt82 9019 2067(,)m +0 1779(or)m 220 fnt35 246 1776(@Star)m -8(tHVSpan)k 240 fnt82 +1742 1779(.)m 1892(Ho)s 6(we)k 6(v)k 3(er)k 9(,)k +2838(the)s 3172(right)s 3670(parameter)s 4670(may)s 5122(otherwise)s +6093(be)s 6362(an)s 6631(arbitrary)s 7492(object,)s 8169(including)s +0 1491(paragraphs)m 1100(of)s 1371(te)s 3(xt)k 1786(that)s +2204(require)s 2936(breaking.)s 480 1117(If)m 722(the)s 1082(right)s +1605(parameter)s 2631(of)s 220 fnt35 2914 1114(@Star)m -8(tHSpan)k +240 fnt82 4264 1117(,)m 220 fnt35 4383 1114(@Star)m -8(tVSpan)k +240 fnt82 5721 1117(,)m 5840(or)s 220 fnt35 6111 1114(@Star)m -8(tHVSpan)k +240 fnt82 7679 1117(occupies)m 8579(more)s 0 829(horizontal)m 1022(or)s +1279(v)s 3(ertical)k 2044(space)s 2629(than)s 3095(all)s +3386(of)s 3655(the)s 4001(spanned)s 4842(columns)s 5701(or)s +5958(ro)s 6(ws)k 6466(combined)s 7466(require,)s 8247(the)s +8592(e)s 3(xtra)k 0 541(space)m 601(goes)s 1106(into)s +1546(the)s 1908(last)s 2314(spanned)s 3172(column)s 3962(or)s +4235(ro)s 6(w)k 15(.)k 4765(Ov)s 3(erlapping)k +6026(spanning)s 6958(ro)s 6(ws)k 7483(and)s 7902(columns)s +8779(are)s 0 253(permitted.)m 1081(Gaps)s 1626(spanned)s 2471(by)s +2767(span)s 3266(objects)s 3996(are)s 4345(unbreakable)s 5572(\(their)s +220 fnt35 6151 250(u)m 240 fnt82 6321 253(indicator)m 7232(is)s +7444(set)s 7772(automatically)s +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 52 58 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +%%+ font Times-Italic +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +0 LoutMargSet +grestore +240 fnt84 0 13840(52)m 240 fnt83 6081 13843(Chapter)m 6931(3.)s +7205(Pr)s 8(ede\207ned)k 8300(symbols)s 240 fnt82 0 13205(and)m +404(cannot)s 1102(be)s 1384(re)s 6(v)k 4(ok)k 2(ed\).)k +240 fnt84 0 12422(3.20.)m 591(@Scale)s 240 fnt82 588 11990(This)m +1112(symbol)s 1920(geometrically)s 3335(scales)s 4004(its)s 4328(right)s +4887(parameter)s 5949(by)s 6291(the)s 6687(scale)s 7268(f)s 2(actor)k +7930(gi)s 6(v)k 3(en)k 8558(in)s 8850(its)s +0 11702(left)m 377(parameter:)s 220 fnt35 480 11201(1.0 @Scale Hello 2.0 @Scale Hello 0.5 @Scale Hello)m 240 fnt82 +0 10746(has)m 370(result)s gsave +480 10238 translate +1.0000 1.0000 scale +0 -54(Hello)m +grestore +gsave +1124 10238 translate +2.0000 2.0000 scale +0 -54(Hello)m +grestore +gsave +2292 10238 translate +0.5000 0.5000 scale +0 -54(Hello)m + +grestore +0 9675(The)m 433(left)s 815(parameter)s 1834(can)s 2228(be)s +2515(tw)s 2(o)k 2930(scale)s 3468(f)s 2(actors,)k +4227(in)s 4475(which)s 5122(case)s 5594(the)s 5947(\207rst)s +6383(applies)s 7116(horizontally)s 15(,)k 8368(and)s 8778(the)s +0 9387(second)m 723(v)s 3(ertically:)k 220 fnt35 480 8886({0.5 2.0} @Scale Hello)m +240 fnt82 0 8392(has)m 370(result)s gsave +480 7884 translate +0.5000 2.0000 scale +0 -54(Hello)m +grestore +0 7321(The)m +433(left)s 815(parameter)s 1834(may)s 2305(be)s 2592(empty)s 15(,)k +3287(in)s 3535(which)s 4182(case)s 4654(Lout)s 5171(will)s +5602(scale)s 6140(the)s 6493(object)s 7142(by)s 7441(a)s +7612(common)s 8512(f)s 2(actor)k 0 7033(horizontally)m 1209(and)s +1613(v)s 3(ertically)k 2565(so)s 2831(as)s 3081(to)s +3320(occup)s 2(y)k 4064(all)s 4357(a)s 4(v)k 6(ailable)k +5265(horizontal)s 6289(space:)s 220 fnt35 480 6532({} @Scale { Hello w)m 2(or)k -3(ld })k +240 fnt82 0 6038(has)m 370(result)s gsave +0 4881 translate +7.9609 7.9609 scale +0 -54(Hello)m 583(w)s 2(orld)k + +grestore +0 3977(The)m 433(right)s 949(parameter)s 1969(may)s 2440(be)s +2728(an)s 3(y)k 3130(object.)s 220 fnt35 3884 3974(@Scale)m +240 fnt82 4712 3977(has)m 5088(both)s 5576(a)s 220 fnt35 +5748 3974(@OneCol)m 240 fnt82 6765 3977(and)m 7175(a)s 220 fnt35 +7346 3974(@OneRo)m 3(w)k 240 fnt82 8483 3977(ef)m 6(fect,)k +0 3689(and)m 404(the)s 752(marks)s 1387(of)s 1658(the)s +2006(result)s 2596(coincide)s 3462(with)s 3944(the)s 4292(principal)s +5196(marks)s 5831(of)s 6102(the)s 6450(right)s 6961(parameter)s 13(.)k +240 fnt84 0 2896(3.21.)m 591(@Rotate)s 240 fnt82 542 2464(The)m +220 fnt35 973 2461(@Rotate)m 240 fnt82 1897 2464(symbol)m 2660(will)s +3089(rotate)s 3691(its)s 3970(right)s 4484(parameter)s 5501(counterclockwise)s +7233(an)s 7519(amount)s 8300(gi)s 6(v)k 3(en)k +8883(in)s 0 2176(de)m 3(grees)k 778(\(positi)s 6(v)k 3(e)k +1661(or)s 1920(ne)s 3(g)k 1(ati)k 6(v)k 3(e\))k +2845(by)s 3139(its)s 3415(left)s 3792(parameter)s 13(.)k +4897(F)s 3(or)k 5286(e)s 3(xample,)k 220 fnt35 +480 1675(30d @Rotate { hello)m 8(, w)k 2(or)k -3(ld })k 240 fnt82 +0 1181(has)m 370(result)s gsave +534 228 translate +30.0000 rotate +0 -54(hello,)m 583(w)s 2(orld)k + +grestore + +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 53 59 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Italic +%%+ font Times-Bold +%%+ font Helvetica +%%+ font Symbol +/pgsave save def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +1 LoutMargSet +grestore +240 fnt83 0 13845(3.21.)m 574(@Rotate)s 240 fnt84 8833 13842(53)m +240 fnt82 0 13251(Before)m 710(rotating)s 1511(the)s 1863(object,)s +220 fnt35 2559 13248(@OneCol)m 240 fnt82 3576 13251(and)m 220 fnt35 +3984 13248(@OneRo)m 3(w)k 240 fnt82 5120 13251(are)m 5471(applied)s +6238(to)s 6482(it.)s 6782(The)s 7215(result)s 7809(is)s +8024(a)s 8195(rectangle)s 0 12963(whose)m 668(marks)s 1303(pass)s +1766(through)s 2568(the)s 2916(point)s 3468(where)s 4108(the)s +4456(original)s 5254(marks)s 5889(crossed:)s 1587 283 340 113 240 288 60 480 11740 LoutGr2 +grestore save gsave 200 dict begin lfigdict begin +grestore +1587 283 340 113 240 288 60 0 0 LoutGr2 +/lfiglightgrey [ lfigbox ] gsave lfigpaintpath grestore +0.015 cm setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigbox ] lfigdopath +pop pop +grestore +1587 283 340 113 240 288 60 0 0 LoutGr2 + +0.015 cm setlinewidth lfiground setlinecap +0.15 cm /lfigdashed [ -0.3 cm ymark +xsize ymark 0.3 cm 0 lfigpadd [] +xmark -0.3 cm +xmark ysize 0 0.3 cm lfigpadd ] lfigdopath +pop pop +grestore + +grestore + +grestore +end end restore +grestore +240 fnt78 2547 11793(\336)m +gsave +3256 11586 translate +240 fnt82 1515 1037 379 267 240 288 60 LoutGraphic +gsave +grestore save gsave 200 dict begin lfigdict begin +grestore +1515 1037 379 267 240 288 60 0 0 LoutGr2 +/lfiglightgrey [ lfigbox ] gsave lfigpaintpath grestore +0.015 cm setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigbox ] lfigdopath +pop pop +grestore +1515 1037 379 267 240 288 60 0 0 LoutGr2 + +0.015 cm setlinewidth lfiground setlinecap +0.15 cm /lfigdashed [ -0.3 cm ymark +xsize ymark 0.3 cm 0 lfigpadd [] +xmark -0.3 cm +xmark ysize 0 0.3 cm lfigpadd ] lfigdopath +pop pop +grestore +gsave +379 267 translate +30.0000 rotate +1587 283 340 113 240 288 60 -340 -113 LoutGr2 +grestore save gsave 200 dict begin lfigdict begin +grestore +1587 283 340 113 240 288 60 0 0 LoutGr2 +/lfiglightgrey [ lfigbox ] gsave lfigpaintpath grestore +0.015 cm setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigbox ] lfigdopath +pop pop +grestore +1587 283 340 113 240 288 60 0 0 LoutGr2 + +0.015 cm setlinewidth lfiground setlinecap +0.15 cm /lfigdashed [ -0.3 cm ymark +xsize ymark 0.3 cm 0 lfigpadd [] +xmark -0.3 cm +xmark ysize 0 0.3 cm lfigpadd ] lfigdopath +pop pop +grestore + +grestore + +grestore +end end restore +grestore + +grestore + +grestore + +grestore +end end restore +grestore +240 fnt82 0 11135(As)m 324(this)s 728(e)s 3(xample)k +1598(sho)s 6(ws,)k 2306(rotation)s 3113(by)s 3415(an)s +3705(angle)s 4287(other)s 4845(than)s 5322(a)s 5495(multiple)s +6355(of)s 6633(ninety)s 7293(de)s 3(grees)k 8079(introduces)s +0 10847(quite)m 534(a)s 700(lot)s 1012(of)s 1283(white)s +1870(space.)s 2565(So,)s 2925(for)s 3263(e)s 3(xample,)k +4177(the)s 4525(result)s 5115(of)s 220 fnt35 480 10339(-30d)m +968(@Rotate)s 1890(30d)s 2305(@Rotate)s 240 fnt83 3286 10344(object)m +240 fnt82 0 9841(is)m 210(a)s 376(much)s 965(lar)s 4(ger)k +1577(object)s 2221(than)s 240 fnt83 2690 9843(object)m 240 fnt82 +3278 9841(,)m 3385(despite)s 4118(the)s 4466(f)s 2(act)k +4881(that)s 5299(one)s 5701(rotation)s 6501(cancels)s 7255(the)s +7603(other)s 13(.)k 480 9467(Rotation)m 1362(of)s 1634(objects)s +2363(containing)s 3427(recepti)s 6(v)k 3(e)k 4350(and)s +4755(recursi)s 6(v)k 3(e)k 5678(symbols)s 6528(is)s +6739(permitted,)s 7762(b)s 4(ut)k 8125(for)s 8464(angles)s +0 9179(other)m 553(than)s 1024(multiples)s 1967(of)s 2240(ninety)s +2894(de)s 3(grees)k 3675(it)s 3869(is)s 4082(best)s +4529(to)s 4770(mak)s 2(e)k 5345(the)s 5695(size)s +6125(of)s 6398(the)s 6748(rotated)s 7472(object)s 8118(clear)s +8644(with)s 220 fnt35 0 8888(@Wide)m 240 fnt82 774 8891(and)m +220 fnt35 1178 8888(@High)m 240 fnt82 1897 8891(symbols:)m 220 fnt35 +480 8390(30d @Rotate 5i @Wide 4i @High)m 480 8102({ //1i @T)m 26(e)k 6(xtPlace)k 480 7814( //1i)m +480 7526(})m 240 fnt82 0 7032(This)m 532(is)s 798(because)s +1667(for)s 2061(angles)s 2779(other)s 3386(than)s 3911(multiples)s +4907(of)s 5234(ninety)s 5942(de)s 3(grees)k 6776(the)s +7180(space)s 7823(a)s 4(v)k 6(ailable)k 8788(for)s +220 fnt35 0 6741(@T)m 26(e)k 6(xtPlace)k 240 fnt82 +1218 6744(to)m 1457(occup)s 2(y)k 2201(is)s 2411(indeterminate,)s +3831(and)s 4235(the)s 4583(result)s 5173(is)s 5383(poor)s 13(.)k +240 fnt84 0 5951(3.22.)m 591(@Backgr)s 4(ound)k 240 fnt82 +577 5474(The)m 220 fnt35 1042 5471(@Bac)m 4(kg)k 2(round)k +240 fnt82 2515 5474(symbol)m 3312(will)s 3775(print)s 4323(its)s +4637(left)s 5051(parameter)s 6102(in)s 6382(the)s 6767(background)s +7993(of)s 8301(its)s 8615(right)s 0 5186(parameter)m 13(.)k +1115(That)s 1624(is,)s 1901(the)s 2260(result)s 2860(has)s +3241(the)s 3600(size)s 4038(of)s 4319(the)s 4678(right)s +5200(parameter)s 9(,)k 6263(b)s 4(ut)k 6635(the)s +6994(left)s 7382(parameter)s 8407(will)s 8844(be)s 0 4898(printed)m +735(\207rst)s 1166(in)s 1409(the)s 1757(same)s 2304(space,)s +2942(with)s 3424(its)s 3700(marks)s 4335(aligned)s 5097(with)s +5579(the)s 5927(marks)s 6562(of)s 6833(the)s 7181(right)s +7692(parameter)s 13(.)k 240 fnt84 0 4105(3.23.)m 591(@K)s 6(er)k 3(nShrink)k +240 fnt82 541 3673(This)m 1018(symbol)s 1779(returns)s 2495(its)s +2772(right)s 3284(parameter)s 4300(unchanged)s 5397(in)s 5641(appearance)s +6774(b)s 4(ut)k 7137(occup)s 2(ying)k 8187(a)s +8355(slightly)s 0 3385(smaller)m 770(bounding)s 1737(box.)s 2269(The)s +2705(reduction)s 3673(is)s 3891(by)s 4193(the)s 4549(amount)s +5335(of)s 5614(k)s 2(erning)k 6404(that)s 6830(w)s 2(ould)k +7493(be)s 7783(applied)s 8553(if)s 8778(the)s 0 3097(right)m +511(parameter)s 1525(w)s 2(as)k 1946(immediately)s 240 fnt83 +3194 3099(followed)m 240 fnt82 4084 3097(by)m 4378(the)s 4726(left)s +5103(parameter)s 13(.)k 6208(F)s 3(or)k 6597(e)s 3(xample,)k +220 fnt35 480 2596(.)m 13( @K)k 8(er)k -5(nShr)k -3(ink P)k +240 fnt82 0 2141(has)m 370(result)s 104 158 0 54 240 288 60 480 1693 LoutGr2 +LoutBox stroke +grestore +0 0(P)m +grestore +0 1242(where)m +649(a)s 824(box)s 1249(of)s 1529(size)s 1965(0)s +2150(has)s 2529(been)s 3048(dra)s 3(wn)k 3709(around)s +4441(the)s 4799(result)s 5398(to)s 5647(mak)s 2(e)k +6228(its)s 6513(e)s 3(xtent)k 7164(clear)s 13(.)k +7787(Compare)s 8730(this)s 0 954(with)m 482(`P')s 806(alone:)s +130 158 0 54 240 288 60 480 505 LoutGr2 +LoutBox stroke +grestore +0 0(P)m +grestore +0 54(in)m 243(which)s 885(the)s 1232(bounding)s +2191(box)s 2605(e)s 3(xactly)k 3346(encloses)s 4206(the)s +4554(object,)s 5245(or)s 5503(at)s 5735(least)s 6231(is)s +6441(supposed)s 7390(to.)s 7740(The)s 8167(bounding)s +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 54 60 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +%%+ font Times-Italic +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +0 LoutMargSet +grestore +240 fnt84 0 13840(54)m 240 fnt83 6081 13843(Chapter)m 6931(3.)s +7205(Pr)s 8(ede\207ned)k 8300(symbols)s 240 fnt82 0 13205(box)m +415(is)s 625(smaller)s 1387(on)s 1684(the)s 2032(right)s +2543(by)s 2837(the)s 3185(amount)s 3963(of)s 4234(k)s 2(erning)k +5016(that)s 5434(w)s 2(ould)k 6089(be)s 6371(applied)s +7133(between)s 7987(`P')s 8311(and)s 8715(`.)s 16('.)k +480 12831(The)m 916(only)s 1405(kno)s 6(wn)k 2117(use)s +2501(for)s 2847(this)s 3252(symbol)s 4020(is)s 4239(to)s +4486(produce)s 5322(tuck)s 2(ed-in)k 6288(subscripts)s 7304(in)s +7555(the)s 7912(Eq)s 8245(equation)s 0 12543(formatting)m 1061(package.)s +240 fnt84 0 11750(3.24.)m 591(@Common,)s 1872(@Rump,)s 2847(and)s +3288(@Meld)s 240 fnt82 540 11273(The)m 220 fnt35 968 11270(@Common)m +240 fnt82 2127 11273(and)m 220 fnt35 2531 11270(@Rump)m 240 fnt82 +3391 11273(symbols)m 4240(compare)s 5119(tw)s 2(o)k 5529(paragraph)s +6542(objects:)s 220 fnt35 480 10772({ Aardv)m 5(ar)k -3(k, 29 } @Common { Aardv)k 5(ar)k -3(k, 359 })k +240 fnt82 0 10278(If)m 234(either)s 842(parameter)s 1860(is)s +2075(not)s 2446(a)s 2616(paragraph)s 3634(object,)s 4329(it)s +4526(is)s 4741(con)s 9(v)k 3(erted)k 5734(into)s +6164(a)s 6334(single-object)s 7633(paragraph)s 8651(\207rst.)s 0 9990(The)m +418(result)s 998(of)s 220 fnt35 1259 9987(@Common)m 240 fnt82 +2408 9990(is)m 2608(the)s 2946(common)s 3831(pre\207x)s 4433(of)s +4694(the)s 5032(tw)s 2(o)k 5432(paragraphs;)s 6583(that)s +6991(is,)s 7247(those)s 7798(initial)s 8398(objects)s 0 9702(which)m +640(are)s 985(equal)s 1555(in)s 1796(the)s 2142(tw)s 2(o)k +2549(paragraphs.)s 3760(In)s 4013(the)s 4359(e)s 3(xample)k +5220(abo)s 3(v)k 3(e,)k 5890(the)s 6236(result)s +6824(is)s 220 fnt35 7031 9699(Aardv)m 5(ar)k -3(k,)k +240 fnt82 7949 9702(.)m 8111(The)s 8536(result)s 0 9414(of)m +220 fnt35 271 9411(@Rump)m 240 fnt82 1131 9414(is)m 1341(that)s +1759(part)s 2190(of)s 2461(the)s 2809(second)s 3532(object)s +4176(which)s 4818(is)s 5028(not)s 5394(included)s 6276(in)s +220 fnt35 6519 9411(@Common)m 240 fnt82 7618 9414(;)m 7730(the)s +8078(result)s 8668(of)s 220 fnt35 480 8913({ Aardv)m 5(ar)k -3(k, 29 } @Rump { Aardv)k 5(ar)k -3(k, 359 })k +240 fnt82 0 8417(is)m 220 fnt35 210 8414(359)m 240 fnt82 +567 8417(.)m 480 8043(If)m 698(the)s 1034(tw)s 2(o)k +1431(objects)s 2147(ha)s 4(v)k 3(e)k 2635(nothing)s +3408(in)s 3638(common,)s 4571(the)s 4907(result)s 5484(of)s +220 fnt35 5743 8040(@Common)m 240 fnt82 6889 8043(will)m 7303(be)s +7572(an)s 7843(empty)s 8482(object)s 0 7755(and)m 400(the)s +744(result)s 1330(of)s 220 fnt35 1597 7752(@Rump)m 240 fnt82 +2453 7755(will)m 2874(be)s 3152(the)s 3496(second)s 4215(object.)s +4959(If)s 5185(the)s 5528(tw)s 2(o)k 5934(objects)s +6658(are)s 7001(identical,)s 7926(the)s 8270(result)s 8855(of)s +220 fnt35 0 7464(@Common)m 240 fnt82 1159 7467(will)m 1585(be)s +1867(the)s 2215(\207rst)s 2646(object,)s 3337(and)s 3741(the)s +4089(result)s 4679(of)s 220 fnt35 4950 7464(@Rump)m 240 fnt82 +5810 7467(will)m 6236(be)s 6518(an)s 6801(empty)s 7453(object.)s +480 7093(The)m 933(only)s 1438(kno)s 6(wn)k 2167(use)s +2567(for)s 220 fnt35 2930 7090(@Rump)m 240 fnt82 3815 7093(and)m +220 fnt35 4244 7090(@Common)m 240 fnt82 5428 7093(is)m 5663(to)s +5927(implement)s 7034(mer)s 4(ged)k 7830(inde)s 3(x)k +8439(entries)s 0 6805(\(Section)m 853(2.8\).)s 480 6431(The)m 220 fnt35 +947 6428(@Meld)m 240 fnt82 1732 6431(symbol)m 2531(returns)s 3284(the)s +3671(minimum)s 4700(meld)s 5275(of)s 5585(tw)s 2(o)k +6034(paragraphs,)s 7229(that)s 7686(is)s 7935(the)s 8323(shortest)s +0 6143(paragraph)m 1013(that)s 1431(contains)s 2279(the)s 2627(tw)s 2(o)k +3037(original)s 3835(paragraphs)s 4935(as)s 5185(subsequences.)s 6652(F)s 3(or)k +7041(e)s 3(xample,)k 220 fnt35 480 5642({ Aardv)m 5(ar)k -3(k , 1 , 2 } @Meld { Aardv)k 5(ar)k -3(k , 2 , 3 })k +240 fnt82 0 5148(produces)m 480 4645(Aardv)m 6(ark)k 1438(,)s +1545(1)s 1700(,)s 1807(2)s 1981(,)s 2088(3)s +0 4161(The)m 455(result)s 1073(is)s 1310(related)s 2045(to)s +2312(the)s 2687(well-kno)s 6(wn)k 3909(longest)s 4688(common)s +5610(substring,)s 6622(in)s 6893(that)s 7338(the)s 7714(meld)s +8278(contains)s 0 3873(e)m 6(v)k 3(erything)k 1076(not)s +1451(in)s 1704(the)s 2061(lcs)s 2387(plus)s 2846(one)s +3257(cop)s 2(y)k 3785(of)s 4065(e)s 6(v)k 3(erything)k +5142(in)s 5394(the)s 5751(lcs.)s 6190(This)s 6675(function)s +7539(is)s 7758(well-suited)s 8887(to)s 0 3585(melding)m 830(comple)s 3(x)k +1698(inde)s 3(x)k 2274(entries.)s 3067(Note)s 3580(that)s +3990(there)s 4515(must)s 5033(be)s 5307(a)s 5465(non-zero)s +6360(amount)s 7131(of)s 7394(space)s 7973(before)s 8631(each)s +0 3297(comma,)m 805(otherwise)s 1783(each)s 2271(will)s 2690(become)s +3484(part)s 3908(of)s 4172(the)s 4513(preceding)s 5502(w)s 2(ord,)k +6093(and,)s 6539(since)s 220 fnt35 7079 3294(@Meld)m 240 fnt82 +7818 3297(compares)m 8778(the)s 0 3009(tw)m 2(o)k 410(paragraphs)s +1510(w)s 2(ord)k 2058(by)s 2352(w)s 2(ord,)k +2949(the)s 3297(result)s 3887(will)s 4313(be)s 4595(dif)s 6(ferent)k +5470(and)s 5874(less)s 6283(satisf)s 2(actory)k 15(.)k +240 fnt84 0 2216(3.25.)m 591(@Insert)s 240 fnt82 541 1784(The)m +220 fnt35 970 1781(@Inser)m -8(t)k 240 fnt82 1808 1784(symbol)m +2569(inserts)s 3245(its)s 3522(left)s 3901(parameter)s 4916(at)s +5149(the)s 5499(be)s 3(ginning)k 6508(of)s 6781(the)s +7130(\207rst)s 7563(paragraph)s 8577(of)s 8850(its)s 0 1496(right)m +511(parameter:)s 220 fnt35 480 995(X @Inser)m -8(t { A B // C // D })k 240 fnt82 +0 501(is)m 210(equi)s 6(v)k 6(alent)k 1254(to)s + +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 55 61 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Italic +%%+ font Times-Bold +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +1 LoutMargSet +grestore +240 fnt83 0 13845(3.25.)m 574(@Insert)s 240 fnt84 8833 13842(55)m +220 fnt35 480 13254({ XA B // C // D })m 240 fnt82 0 12760(Notice)m 707(that)s +1139(a)s 1320(zero-width)s 2426(space)s 3028(separates)s 220 fnt35 +3968 12757(X)m 240 fnt82 4185 12760(from)m 4723(the)s 5085(\207rst)s +5531(paragraph,)s 6608(so)s 6889(if)s 7120(some)s 7696(wider)s +8314(space)s 8916(is)s 0 12472(required)m 857(it)s 1052(must)s +1580(be)s 1865(placed)s 2550(at)s 2785(the)s 3137(end)s +3544(of)s 220 fnt35 3818 12469(X)m 240 fnt82 3960 12472(.)m +4127(The)s 220 fnt35 4558 12469(@Inser)m -8(t)k 240 fnt82 +5397 12472(operation)m 6361(is)s 6574(applied)s 7339(to)s 7581(the)s +7932(v)s 6(alue)k 8503(of)s 8778(the)s 0 12184(right)m +511(parameter)s 1525(after)s 2021(e)s 6(v)k 6(aluation.)k +480 11810(The)m 917(only)s 1407(kno)s 6(wn)k 2121(use)s +2506(for)s 2853(this)s 3259(symbol)s 4029(is)s 4249(to)s +4498(attach)s 5134(something)s 6194(lik)s 2(e)k 240 fnt84 +6616 11809(Figur)m 4(e)k 7355(6)s 240 fnt82 7538 11810(to)m +7787(the)s 8145(front)s 8679(of)s 8960(a)s 0 11522(multi-paragraph)m +1596(caption.)s 240 fnt84 0 10729(3.26.)m 591(@OneOf)s 240 fnt82 +534 10297(The)m 220 fnt35 956 10294(@OneOf)m 240 fnt82 1877 10297(symbol)m +2631(returns)s 3339(one)s 3734(of)s 3999(the)s 4341(sequence)s +5268(of)s 5533(objects)s 6254(which)s 6890(is)s 7094(its)s +7364(right)s 7869(parameter)s 8876(as)s 0 10009(its)m 276(result:)s +220 fnt35 480 9558(@OneOf {)m 480 9270( @ResultA)m 480 8982( @ResultB)m 480 8694( @ResultC)m +480 8406(})m 240 fnt82 0 7912(The)m 451(choice)s 1155(is)s +1388(made)s 1986(to)s 2248(ensure)s 2952(that)s 3393(whate)s 6(v)k 3(er)k +4344(g)s 1(alle)k 3(y)k 5001(tar)s 4(get)k +5624(is)s 5857(required)s 6735(at)s 6990(the)s 7362(moment)s +8229(is)s 8463(found.)s 0 7624(F)m 3(or)k 389(e)s 3(xample,)k +1304(if)s 1522(we)s 1858(are)s 2206(e)s 6(v)k 6(aluating)k +220 fnt35 3244 7621(@OneOf)m 240 fnt82 4172 7624(as)m 4423(part)s +4855(of)s 5127(an)s 5411(attempt)s 6188(to)s 6428(attach)s +7056(a)s 7223(g)s 1(alle)k 3(y)k 7858(whose)s +8527(tar)s 4(get)k 0 7336(is)m 220 fnt35 222 7333(@SomeT)m 26(arget)k +240 fnt82 1622 7336(,)m 1741(then)s 2223(the)s 2583(result)s +3186(abo)s 3(v)k 3(e)k 3820(will)s 4259(be)s +220 fnt35 4553 7333(@ResultA)m 240 fnt82 5613 7336(if)m 5843(it)s +6047(contains)s 220 fnt35 6908 7333(@SomeT)m 26(arget)k 240 fnt82 +8308 7336(,)m 8427(or)s 8699(else)s 220 fnt35 0 7045(@ResultB)m +240 fnt82 1042 7048(if)m 1260(it)s 1453(contains)s 220 fnt35 +2302 7045(@SomeT)m 26(arget)k 240 fnt82 3702 7048(,)m 3810(or)s +4070(else)s 220 fnt35 4498 7045(@ResultC)m 240 fnt82 5552 7048(\(whether)m +6462(or)s 6722(not)s 7089(it)s 7282(contains)s 8131(the)s +8480(tar)s 4(get,)k 0 6760(or)m 259(if)s 476(there)s +1009(is)s 1219(no)s 1512(tar)s 4(get\).)k 480 6386(Use)m +930(of)s 220 fnt35 1224 6383(@OneOf)m 240 fnt82 2174 6386(in)m +2440(conjunction)s 3650(with)s 4155(recursi)s 6(v)k 3(e)k +5100(symbols)s 5972(can)s 6384(lead)s 6863(to)s 7125(problems.)s +8202(Consider)s 0 6098(this)m 396(e)s 3(xample:)k 220 fnt35 +480 5597(def @Recursiv)m 5(e {)k 480 5021( def @ChoiceA { @APlace // @Recursiv)m 5(e })k 480 4445( def @ChoiceB { @BPlace // @Recursiv)m 5(e })k +480 3869( @OneOf {)m 480 3581( @ChoiceA)m 480 3293( @ChoiceB)m 480 3005( })m 480 2717(})m +240 fnt82 0 2223(Lout)m 523(belie)s 6(v)k 3(es)k +1360(that)s 1790(e)s 3(xpanding)k 220 fnt35 2849 2220(@Recursiv)m 5(e)k +240 fnt82 4106 2223(is)m 4328(the)s 4687(right)s 5210(thing)s +5767(to)s 6017(do)s 6322(when)s 6910(searching)s 7890(for)s +8240(either)s 8855(of)s 0 1935(the)m 380(g)s 1(alle)k 3(y)k +1046(tar)s 4(gets)k 220 fnt35 1762 1932(@APlace)m 240 fnt82 +2763 1935(and)m 220 fnt35 3199 1932(@BPlace)m 240 fnt82 4108 1935(.)m +4305(When)s 4966(searching)s 5968(for)s 220 fnt35 6338 1932(@BPlace)m +240 fnt82 7339 1935(this)m 7768(leads)s 8342(Lout)s 8887(to)s +0 1647(e)m 3(xpand)k 220 fnt35 760 1644(@Recursiv)m 5(e)k +240 fnt82 1945 1647(,)m 2065(then)s 220 fnt35 2547 1644(@ChoiceA)m +240 fnt82 3596 1647(,)m 3717(then)s 4199(the)s 220 fnt35 +4560 1644(@Recursiv)m 5(e)k 240 fnt82 5818 1647(symbol)m 6592(within)s +220 fnt35 7273 1644(@ChoiceA)m 240 fnt82 8322 1647(,)m 8442(and)s +8860(so)s 0 1359(on)m 320(in\207nitely)s 15(.)k 1355(This)s +1854(problem)s 2734(can)s 3146(be)s 3451(a)s 4(v)k 4(oided)k +4283(by)s 4600(attaching)s 5552(a)s 220 fnt35 5741 1356(@NotRe)m 6(v)k 5(ealed)k +240 fnt82 7291 1359(symbol)m 8074(to)s 8336(each)s 8855(of)s +0 1071(the)m 357(inner)s 220 fnt35 918 1068(@Recursiv)m 5(e)k +240 fnt82 2172 1071(symbols:)m 3146(these)s 3703(are)s 4059(then)s +4538(not)s 4914(a)s 4(v)k 6(ailable)k 5831(for)s +6179(e)s 3(xpansion)k 7214(until)s 7716(a)s 7892(decision)s +8756(has)s 0 783(been)m 510(made)s 1085(to)s 1326(e)s 3(xpand)k +2074(the)s 2424(symbol)s 3185(the)s 3(y)k 3650(lie)s +3945(within.)s 4721(In)s 4979(this)s 5376(particular)s 6352(e)s 3(xample)k +7216(it)s 7410(w)s 2(ould)k 8066(be)s 8350(simpler)s +0 495(to)m 239(write)s 220 fnt35 480 43(def @Recursiv)m 5(e {)k + +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 56 62 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +%%+ font Times-Italic +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +0 LoutMargSet +grestore +240 fnt84 0 13840(56)m 240 fnt83 6081 13843(Chapter)m 6931(3.)s +7205(Pr)s 8(ede\207ned)k 8300(symbols)s 220 fnt35 480 13023( @OneOf {)m +480 12735( @APlace)m 480 12447( @BPlace)m 480 12159( })m 480 11871( // @Recursiv)m 5(e)k +480 11583(})m 240 fnt82 0 11089(b)m 4(ut)k 378(this)s +791(f)s 2(actoring)k 1720(is)s 1947(not)s 2329(possible)s +3186(when)s 3778(the)s 4143(recursi)s 6(v)k 3(e)k +5081(calls)s 5586(ha)s 4(v)k 3(e)k 6103(parameters)s +7218(that)s 7652(are)s 8016(required)s 8887(to)s 0 10801(dif)m 6(fer)k +583(in)s 826(the)s 1174(tw)s 2(o)k 1584(cases.)s +240 fnt84 0 10057(3.27.)m 591(@Next)s 240 fnt82 535 9625(The)m +220 fnt35 957 9622(@Ne)m 6(xt)k 240 fnt82 1676 9625(symbol)m +2430(returns)s 3138(its)s 3409(parameter)s 4417(plus)s 4861(one.)s +5366(It)s 5565(is)s 5769(rather)s 6380(cle)s 6(v)k 3(er)k +7008(at)s 7234(w)s 2(orking)k 8078(this)s 8468(out:)s +8934(it)s 0 9337(hunts)m 570(through)s 1372(the)s 1720(parameter)s +2734(from)s 3258(right)s 3769(to)s 4008(left,)s 4432(looking)s +5217(for)s 5555(a)s 5721(number)s 6512(to)s 6751(increment:)s +220 fnt35 480 8836(@Ne)m 6(xt \(3.99\))k 240 fnt82 0 8340(has)m +404(result)s 1029(\(3.100\).)s 1925(If)s 220 fnt35 2190 8337(@Ne)m 6(xt)k +240 fnt82 2949 8340(cannot)m 3681(\207nd)s 4147(a)s 4348(digit)s +4880(inside)s 5542(its)s 5852(parameter)s 9(,)k 6939(it)s +7166(is)s 7410(an)s 7728(error)s 13(.)k 8377(Roman)s +0 8052(numerals)m 925(are)s 1270(handled)s 2084(by)s 2376(storing)s +3091(them)s 3627(in)s 3868(a)s 4032(database,)s 4960(as)s +5208(e)s 3(xplained)k 6191(in)s 6432(Section)s 7204(4.2;)s +220 fnt35 7614 8049(@Ne)m 6(xt)k 240 fnt82 8336 8052(will)m +8760(not)s 0 7764(increment)m 1015(a)s 1181(Roman)s 1930(numeral.)s +240 fnt84 0 7021(3.28.)m 591(@Case)s 240 fnt82 540 6589(The)m +220 fnt35 968 6586(@Case)m 240 fnt82 1755 6589(symbol)m 2515(selects)s +3202(its)s 3478(result)s 4068(from)s 4592(a)s 4758(list)s +5109(of)s 5380(alternati)s 6(v)k 3(es,)k 6578(depending)s +7629(on)s 7926(a)s 8092(tag:)s 220 fnt35 480 6088(@Da)m 6(y @Case {)k +480 5800( { 1 21 31 } @Y)m 4(ield st)k 480 5512( { 2 22 } @Y)m 4(ield nd)k 480 5224( { 3 23 } @Y)m 4(ield rd)k +480 4936( else @Y)m 4(ield th)k 480 4648(})m 240 fnt82 0 4154(In)m +257(this)s 654(e)s 3(xample)k 1518(the)s 1868(result)s +2459(will)s 2886(be)s 3169(st)s 3390(if)s 220 fnt35 +3608 4151(@Da)m 6(y)k 240 fnt82 4274 4154(is)m 4485(1,)s +4714(21,)s 5062(or)s 5322(31,)s 5670(and)s 6076(nd)s +6375(if)s 220 fnt35 6593 4151(@Da)m 6(y)k 240 fnt82 +7259 4154(is)m 7471(2)s 7646(or)s 7906(22,)s 8254(etc.)s +8698(The)s 0 3866(ef)m 6(fect)k 594(is)s 801(similar)s +1520(to)s 1756(accessing)s 2722(a)s 2885(database,)s 3812(though)s +4532(in)s 4773(a)s 4936(more)s 5480(compact)s 6347(form.)s +6972(The)s 7397(right)s 7905(parameter)s 8916(is)s 0 3578(a)m +171(sequence)s 1109(of)s 220 fnt35 1385 3575(@Y)m 4(ield)k +240 fnt82 2143 3578(symbols,)m 3053(each)s 3553(with)s 4040(a)s +4211(left)s 4594(parameter)s 5613(whose)s 6286(v)s 6(alue)k +6859(is)s 7074(a)s 7245(sequence)s 8183(of)s 8459(one)s +8867(or)s 0 3290(more)m 547(juxtapositions)s 1940(of)s 2211(simple)s +2904(w)s 2(ords,)k 3594(and)s 3998(a)s 4164(right)s +4675(parameter)s 5689(which)s 6331(may)s 6797(be)s 7079(an)s 3(y)k +7476(object.)s 480 2916(W)m 19(e)k 895(\207rst)s 1372(describe)s +2271(the)s 2665(beha)s 4(viour)k 3725(when)s 4347(the)s +4742(v)s 6(alue)k 5356(of)s 5674(the)s 6068(left)s +6492(parameter)s 7552(of)s 220 fnt35 7870 2913(@Case)m 240 fnt82 +8703 2916(is)m 8960(a)s 0 2628(juxtaposition)m 1302(of)s 1568(one)s +1965(or)s 2220(more)s 2762(simple)s 3450(w)s 2(ords.)k +4193(Then)s 4737(the)s 5080(result)s 5666(of)s 5932(the)s +220 fnt35 6275 2625(@Case)m 240 fnt82 7058 2628(is)m 7263(the)s +7606(right)s 8112(parameter)s 0 2340(of)m 287(the)s 652(\207rst)s +220 fnt35 1100 2337(@Y)m 4(ield)k 240 fnt82 1870 2340(whose)m +2554(left)s 2948(parameter)s 3979(contains)s 4844(either)s 5463(the)s +5828(v)s 6(alue)k 6413(of)s 6701(the)s 7065(left)s +7459(parameter)s 8490(of)s 8778(the)s 220 fnt35 0 2049(@Case)m +240 fnt82 727 2052(,)m 834(or)s 1093(the)s 1441(special)s +2159(v)s 6(alue)k 220 fnt35 2727 2049(else)m 240 fnt82 +3121 2052(.)m 3285(If)s 3515(there)s 4048(is)s 4258(no)s +4551(such)s 220 fnt35 5047 2049(@Y)m 4(ield)k 240 fnt82 +5800 2052(it)m 5992(is)s 6202(an)s 6485(error)s 13(.)k +480 1678(When)m 1133(the)s 1506(left)s 1908(parameter)s 2946(of)s +220 fnt35 3242 1675(@Case)m 240 fnt82 4054 1678(is)m 4288(not)s +4679(a)s 4870(juxtaposition)s 6200(of)s 6496(simple)s 7214(w)s 2(ords,)k +7928(the)s 8301(result)s 8916(is)s 0 1390(the)m 350(right)s +864(parameter)s 1881(of)s 2155(the)s 2506(\207rst)s 220 fnt35 +2940 1387(@Y)m 4(ield)k 240 fnt82 3696 1390(whose)m 4367(left)s +4746(parameter)s 5763(is)s 220 fnt35 5976 1387(else)m 240 fnt82 +6370 1390(,)m 6480(or)s 6742(an)s 7028(error)s 7554(otherwise.)s +8650(This)s 0 1102(permits)m 767(e)s 3(xamples)k 1718(lik)s 2(e)k +220 fnt35 480 601(@RunningTitle @Case {)m 480 313( dft @Y)m 4(ield @Title)k +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 57 63 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Italic +%%+ font Times-Bold +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +1 LoutMargSet +grestore +240 fnt83 0 13845(3.28.)m 574(@Case)s 240 fnt84 8831 13842(57)m +220 fnt35 480 13254( else @Y)m 4(ield @RunningTitle)k 480 12966(})m 240 fnt82 +0 12472(where)m 661(a)s 848(running)s 1667(title)s 2115(is)s +2346(returned)s 3221(unless)s 3892(it)s 4105(has)s 4496(the)s +4866(v)s 6(alue)k 220 fnt35 5455 12469(dft)m 240 fnt82 +5776 12472(\(which)m 6519(presumably)s 7710(means)s 8393(that)s 8833(no)s +0 12184(running)m 798(title)s 1224(w)s 2(as)k 1645(supplied\),)s +2642(in)s 2885(which)s 3527(case)s 3994(an)s 4277(ordinary)s +5141(title)s 5567(is)s 5777(returned)s 6631(instead.)s 480 11810(When)m +1126(a)s 1310(recepti)s 6(v)k 3(e)k 2250(symbol)s +3028(is)s 3256(placed)s 3955(within)s 4641(a)s 220 fnt35 +4825 11807(@Case)m 240 fnt82 5552 11810(,)m 5677(it)s 5887(should)s +6601(be)s 6901(included)s 7801(in)s 8062(each)s 8575(alter)s +8998(-)s 0 11522(nati)m 6(v)k 3(e,)k 695(since)s +1255(otherwise)s 2254(Basser)s 2964(Lout)s 3490(may)s 3969(become)s +4783(confused)s 5718(when)s 6308(trying)s 6945(to)s 7198(predict)s +7934(whether)s 8778(the)s 0 11234(symbol)m 755(will)s 1176(be)s +1453(a)s 1613(part)s 2039(of)s 2305(the)s 2648(result)s +3232(or)s 3486(not.)s 3951(Alternati)s 6(v)k 3(ely)k 15(,)k +5288(if)s 5500(it)s 5687(can)s 6071(be)s 6347(guaranteed)s +7449(that)s 7862(the)s 8204(recepti)s 6(v)k 3(e)k +0 10946(symbol)m 764(will)s 1195(ne)s 6(v)k 3(er)k +1782(be)s 2069(searched)s 2967(for)s 3310(when)s 3891(the)s +4244(cases)s 4804(that)s 5226(it)s 5423(does)s 5918(not)s +6289(lie)s 6587(within)s 7260(are)s 7612(selected,)s 8493(that)s +8916(is)s 0 10658(all)m 293(right)s 804(too.)s 240 fnt84 +0 9865(3.29.)m 591(@Moment)s 240 fnt82 480 9433(The)m 908(prede\207ned)s +1976(symbol)s 220 fnt35 2736 9430(@Moment)m 240 fnt82 3808 9433(has)m +4178(the)s 4526(follo)s 6(wing)k 5503(de\207nition:)s 220 fnt35 +480 8932(def @Moment)m 480 8644( named @T)m 26(ag {})k 480 8356( named @Second {})m 480 8068( named @Min)m 2(ute {})k +480 7780( named @Hour {})m 480 7492( named @Da)m 6(y {})k 480 7204( named @Month {})m 480 6916( named @Y)m 30(ear {})k +480 6628( named @Centur)m -6(y {})k 480 6340( named @W)m 6(eekDa)k 6(y {})k +480 6052( named @Y)m 30(earDa)k 6(y {})k 480 5764( named @Da)m 6(ylightSa)k 4(ving {})k +480 5476({})m 240 fnt82 0 4982(It)m 208(may)s 677(be)s +962(used)s 1463(lik)s 2(e)k 1878(an)s 3(y)k +2278(other)s 2832(symbol.)s 3705(Lout)s 4220(pro)s 3(vides)k +5095(an)s 5381(in)s 9(v)k 4(ocation)k 6439(of)s +220 fnt35 6713 4979(@Moment)m 240 fnt82 7788 4982(with)m 8273(tag)s +220 fnt35 8622 4979(no)m 3(w)k 240 fnt82 9019 4982(,)m +0 4694(whose)m 668(other)s 1219(parameters)s 2317(are)s 2664(numbers)s +3539(encoding)s 4470(the)s 4818(current)s 5554(date)s 6008(and)s +6412(time:)s 220 fnt35 480 4129(@Second)m 240 fnt82 2482 4132(the)m +2830(current)s 3566(second,)s 4338(usually)s 5083(between)s 5937(00)s +6232(and)s 6636(59)s 220 fnt35 480 3798(@Min)m 2(ute)k +240 fnt82 2482 3801(the)m 2830(current)s 3566(minute,)s 4337(between)s +5191(00)s 5486(and)s 5890(59)s 220 fnt35 480 3488(@Hour)m +240 fnt82 2482 3491(the)m 2830(current)s 3566(hour)s 9(,)k +4103(between)s 4957(00)s 5252(and)s 5656(23)s 220 fnt35 +480 3178(@Da)m 6(y)k 240 fnt82 2482 3181(the)m 2830(current)s +3566(day)s 3966(of)s 4237(the)s 4585(month,)s 5304(between)s +6158(1)s 6313(and)s 6717(31)s 220 fnt35 480 2849(@Month)m +240 fnt82 2482 2852(the)m 2830(current)s 3566(month,)s 4285(between)s +5139(1)s 5294(\(January\))s 6245(and)s 6649(12)s 6943(\(December\))s +220 fnt35 480 2520(@Y)m 30(ear)k 240 fnt82 2482 2523(the)m +2830(current)s 3566(year)s 4037(of)s 4308(the)s 4656(century)s 15(,)k +5465(between)s 6319(00)s 6614(and)s 7018(99)s 220 fnt35 +480 2191(@Centur)m -6(y)k 240 fnt82 2482 2194(the)m 2830(current)s +3566(century)s 15(,)k 4375(e.g.)s 4765(19)s 5056(or)s +5315(20)s 220 fnt35 480 1862(@W)m 6(eekDa)k 6(y)k +240 fnt82 2482 1865(the)m 2830(current)s 3566(day)s 3966(of)s +4237(the)s 4585(week,)s 5197(between)s 6051(1)s 6206(\(Sunday\))s +7132(and)s 7536(7)s 7704(\(Saturday\))s 220 fnt35 480 1531(@Y)m 30(earDa)k 6(y)k +240 fnt82 2482 1534(the)m 2830(current)s 3566(day)s 3966(of)s +4237(the)s 4585(year)s 9(,)k 5094(between)s 5948(0)s +6123(and)s 6527(365)s 220 fnt35 480 1202(@Da)m 6(ylightSa)k 4(ving)k +240 fnt82 2482 1205(an)m 2784(implementation-dependent)s 5427(number)s 6237(that)s +6675(may)s 7160(encode)s 7914(the)s 8282(daylight)s 2482 917(sa)m 4(ving)k +3156(currently)s 4072(in)s 4315(ef)s 6(fect)k 0 356(Unix)m +519(manual)s 1262(entries)s 1934(state)s 2411(that)s 220 fnt35 +2814 353(@Second)m 240 fnt82 3813 356(can)m 4186(be)s 4453(as)s +4687(high)s 5155(as)s 5389(61,)s 5720(to)s 5944(allo)s 6(w)k +6507(for)s 6830(leap)s 7265(seconds.)s 8171(Judicious)s 0 68(use)m +375(of)s 646(databases)s 1613(can)s 2002(con)s 9(v)k 3(ert)k +2767(these)s 3314(numbers)s 4189(into)s 4614(useful)s 5253(dates.)s +5908(F)s 3(or)k 6297(e)s 3(xample,)k +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 58 64 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +%%+ font Times-Italic +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +0 LoutMargSet +grestore +240 fnt84 0 13840(58)m 240 fnt83 6081 13843(Chapter)m 6931(3.)s +7205(Pr)s 8(ede\207ned)k 8300(symbols)s 220 fnt35 480 13207(@Moment&&no)m 3(w @Open { @Da)k 6(y {@Months&&@Month}, @Centur)k -6(y{@Y)k 30(ear} })k +240 fnt82 0 12709(produces)m 915(something)s 1965(lik)s 2(e)k +2377(8)s 2544(April,)s 3155(2000)s 3690(gi)s 6(v)k 3(en)k +4270(a)s 4436(suitable)s 5235(database)s 6114(of)s 6385(months.)s +240 fnt84 0 11916(3.30.)m 591(@Null)s 240 fnt82 480 11484(This)m +979(symbol)s 1762(pro)s 3(vides)k 2657(a)s 2846(con)s 9(v)k 3(enient)k +3967(w)s 2(ay)k 4441(to)s 4703(remo)s 3(v)k 3(e)k +5493(unw)s 2(anted)k 6503(concatenation)s 7911(symbols.)s 8896(If)s +0 11196(there)m 544(is)s 765(a)s 942(concatenation)s 2339(symbol)s +3110(preceding)s 220 fnt35 4117 11193(@Null)m 240 fnt82 4702 11196(,)m +4821(the)s 220 fnt35 5180 11193(@Null)m 240 fnt82 5836 11196(and)m +6252(the)s 6611(concatenation)s 8007(symbol)s 8779(are)s 0 10908(both)m +482(deleted.)s 1335(Otherwise,)s 2423(if)s 2638(there)s 3170(is)s +3379(a)s 3544(follo)s 6(wing)k 4519(concatenation)s 5903(symbol,)s +6714(it)s 6905(and)s 7307(the)s 220 fnt35 7654 10905(@Null)m +240 fnt82 8298 10908(are)m 8643(both)s 0 10620(deleted.)m 794(Otherwise,)s +220 fnt35 1883 10617(@Null)m 240 fnt82 2528 10620(becomes)m 3416(an)s +3699(empty)s 4351(object.)s 480 10246(These)m 1107(rules)s 1622(apply)s +2208(to)s 2447(a)s 2613(fully)s 3118(parenthesized)s 4490(v)s 3(ersion)k +5248(of)s 5519(the)s 5867(e)s 3(xpression.)k 7051(F)s 3(or)k +7440(e)s 3(xample,)k 8354(in)s 220 fnt35 480 9745(...)m 13( //1vx @Null |0.5i ...)k +240 fnt82 0 9290(it)m 202(is)s 423(the)s 782(horizontal)s +1817(concatenation)s 3213(symbol)s 3984(follo)s 6(wing)k 220 fnt35 +4972 9287(@Null)m 240 fnt82 5628 9290(that)m 6057(disappears,)s 7184(because)s +8008(in)s 8262(the)s 8621(fully)s 0 9002(parenthesized)m 1372(v)s 3(ersion)k +220 fnt35 480 8501(...)m 13( //1vx { @Null |0.5i ...)k 13( })k 240 fnt82 +0 8007(there)m 533(is)s 743(no)s 1036(concatenation)s 2421(symbol)s +3181(preceding)s 4177(the)s 220 fnt35 4525 8004(@Null)m 240 fnt82 +5110 8007(.)m 240 fnt84 0 7214(3.31.)m 591(@Galley)s 1534(and)s +1975(@F)s 6(or)k 4(ceGalley)k 240 fnt82 480 6737(These)m +1131(symbols)s 2004(both)s 2511(act)s 2874(as)s 3148(a)s +3338(placeholder)s 4538(for)s 4900(a)s 5090(g)s 1(alle)k 3(y)k 15(.)k +5844(That)s 6366(is,)s 6656(the)s 3(y)k 7144(may)s +7634(be)s 7940(replaced)s 8832(by)s 0 6449(components)m 1210(of)s +1483(a)s 1651(g)s 1(alle)k 3(y)k 15(.)k +2383(In)s 2641(the)s 2991(case)s 3460(of)s 220 fnt35 +3734 6446(@F)m 6(orceGalle)k 4(y)k 240 fnt82 5189 6449(the)m +5539(g)s 1(alle)k 3(y)k 6175(will)s 6604(then)s +7075(ha)s 4(v)k 3(e)k 7578(a)s 7746(forcing)s +8492(g)s 1(alle)k 3(y)k 0 6161(ef)m 6(fect)k +583(at)s 802(this)s 1184(point)s 1723(although)s 2604(it)s +2783(need)s 3280(not)s 3632(be)s 3901(declared)s 4754(using)s +220 fnt35 5313 6158(f)m 6(orce into)k 240 fnt82 6202 6161(.)m +6353(See)s 6740(Section)s 7501(2.7)s 7835(for)s 8160(a)s +8312(detailed)s 0 5873(discussion)m 1054(of)s 1325(g)s 1(alle)k 3(ys,)k +2105(forcing)s 2848(g)s 1(alle)k 3(ys,)k 3628(and)s +4032(tar)s 4(gets.)k 240 fnt84 0 5080(3.32.)m 591(@BeginHeaderComponent,)s +3466(@EndHeaderComponent,)s 6182(@SetHeaderComponent,)s 591 4792(and)m 1032(@ClearHeaderComponent)s 240 fnt82 +480 4315(Informally)m 15(,)k 1597(header)s 2298(components)s 3510(are)s +3861(running)s 4663(headers)s 5448(that)s 5871(appear)s 6572(at)s +6808(the)s 7160(top)s 7523(of)s 7798(the)s 8151(displayed)s +0 4027(se)m 3(gments)k 936(of)s 1204(g)s 1(alle)k 3(ys.)k +2039(The)s 3(y)k 2579(are)s 2923(used,)s 3467(for)s +3802(e)s 3(xample,)k 4714(by)s 5005(the)s 220 fnt35 +5350 4024(@Tb)m 4(l)k 240 fnt82 5917 4027(table)m 6434(formatting)s +7493(package)s 8330(to)s 8566(place)s 0 3739(running)m 798(headers)s +1579(at)s 1811(the)s 2159(top)s 2518(of)s 2789(each)s +3284(page)s 3792(of)s 4063(a)s 4229(multi-page)s 5320(table,)s +5891(after)s 6387(the)s 6735(\207rst)s 7166(page.)s 480 3365(F)m 3(ormally)k 15(,)k +1431(a)s 1583(header)s 2266(component)s 3376(of)s 3633(a)s +3785(g)s 1(alle)k 3(y)k 4405(is)s 4601(an)s +4870(ordinary)s 5720(component)s 6830(of)s 7087(a)s 7239(g)s 1(alle)k 3(y)k +7859(\(Section)s 8698(2.7\))s 0 3077(together)m 845(with)s 1330(an)s +1616(indication)s 2631(that)s 3052(the)s 3403(component)s 4530(is)s +4742(a)s 4911(header)s 5611(component.)s 6841(When)s 7473(printed,)s +8260(a)s 8429(header)s 0 2789(component)m 1125(looks)s 1696(e)s 3(xactly)k +2438(lik)s 2(e)k 2851(it)s 3045(w)s 2(ould)k +3701(ha)s 4(v)k 3(e)k 4203(done)s 4726(as)s +4977(an)s 5262(ordinary)s 6127(component;)s 7304(the)s 7653(dif)s 6(ference)k +8671(is)s 8883(in)s 0 2501(whether)m 830(the)s 1178(component)s +2302(is)s 2512(printed)s 3247(at)s 3479(all,)s 3824(and)s +4228(if)s 4445(so)s 4711(where.)s 480 2127(Ev)m 3(ery)k +1129(ordinary)s 2020(component)s 3171(of)s 3469(e)s 6(v)k 3(ery)k +4072(g)s 1(alle)k 3(y)k 4733(has)s 5130(associated)s +6197(with)s 6706(it)s 6925(a)s 7118(sequence)s 8078(of)s +8376(zero)s 8867(or)s 0 1839(more)m 543(header)s 1236(components.)s +2553(Whene)s 6(v)k 3(er)k 3583(a)s 3745(ne)s 6(w)k +4188(tar)s 4(get)k 4783(is)s 4989(attached)s 5839(to)s +6074(which)s 6712(does)s 7198(not)s 7560(itself)s 8104(occup)s 2(y)k +8843(an)s 0 1551(entire)m 588(component)s 1700(of)s 1959(its)s +2223(g)s 1(alle)k 3(y)k 15(,)k 2883(copies)s +3533(of)s 3792(the)s 4128(header)s 4813(components)s 6009(associated)s +7037(with)s 7507(the)s 7843(\207rst)s 8262(ordinary)s 0 1263(component)m +1124(to)s 1363(be)s 1645(promoted)s 2620(into)s 3045(that)s +3463(tar)s 4(get)k 4062(are)s 4409(promoted)s 5384(into)s +5809(it)s 6001(\207rst.)s 480 889(The)m 936(condition)s 1926(`which)s +2676(does)s 3195(not)s 3590(itself)s 4167(occup)s 2(y)k +4939(an)s 5251(entire)s 5879(component)s 7032(of)s 7332(its)s +7637(g)s 1(alle)k 3(y')k 8358(ensures)s 0 601(that,)m +460(for)s 793(e)s 3(xample,)k 1702(when)s 2273(part)s +2699(of)s 2964(a)s 3125(section)s 3854(has)s 4219(header)s +4911(components,)s 6169(these)s 6711(are)s 7053(not)s 7414(printed)s +8144(where)s 8778(the)s 0 313(section)m 735(is)s 947(promoted)s +1923(into)s 2350(its)s 2627(chapter)s 9(,)k 3430(b)s 4(ut)k +3793(rather)s 4411(where)s 5053(the)s 5402(chapter)s 6167(is)s +6378(promoted)s 7355(onto)s 7835(pages.)s 8546(If)s 8778(the)s + +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 59 65 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Italic +%%+ font Times-Bold +%%+ font Symbol +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +1 LoutMargSet +grestore +240 fnt83 0 13843(3.32.)m 574(@Be)s 9(ginHeaderComponent,)k 3360(@EndHeaderComponent,)s +5984(@SetHeaderComponent,)s 574 13555(and)m 1000(@ClearHeaderComponent)s 240 fnt84 8832 13840(59)m +240 fnt82 0 12917(tar)m 4(get)k 611(occupies)s 1511(the)s +1871(whole)s 2525(component,)s 3708(then)s 4189(the)s 4549(incoming)s +5519(g)s 1(alle)k 3(y)k 6165(will)s 6603(not)s +6981(split)s 7465(at)s 7709(all,)s 8066(so)s 8345(headers)s +0 12629(w)m 2(ould)k 655(be)s 937(of)s 1208(no)s +1501(interest)s 2263(there.)s 480 12255(The)m 896(one)s 1286(remaining)s +2295(question)s 3151(is)s 3348(`Ho)s 6(w)k 3929(is)s +4126(the)s 4462(sequence)s 5383(of)s 5641(header)s 6326(components)s +7521(of)s 7780(each)s 8262(ordinary)s 0 11967(component)m 1124(determined?')s +2477(By)s 2812(def)s 2(ault,)k 3580(the)s 3928(header)s +4626(components)s 5834(of)s 6106(one)s 6508(component)s 7632(are)s +7980(the)s 8328(same)s 8876(as)s 0 11679(those)m 561(of)s +832(the)s 1180(pre)s 6(vious)k 2049(component.)s 3277(W)s 19(e)k +3646(can)s 4035(sho)s 6(w)k 4589(this)s 4985(graphically)s +6114(as)s 6364(follo)s 6(ws:)k 240 fnt83 480 11180(C)m +168 fnt83 645 11093(i)m 240 fnt78 773 11172(:)m 240 fnt83 +903 11180(H)m 168 fnt78 1086 11087(1)m 240 fnt78 1164 11172(,)m +240 fnt83 1271 11180(H)m 168 fnt78 1454 11087(2)m 240 fnt78 +1546 11172(,)m 1653(\274)s 1951(,)s 240 fnt83 2058 11180(H)m +168 fnt83 2241 11093(n)m 240 fnt83 480 10892(/)m 480 10604(C)m +168 fnt83 645 10517(i)m 168 fnt78 711 10511(+)m 824(1)s +240 fnt78 974 10596(:)m 240 fnt83 1104 10604(H)m 168 fnt78 +1287 10511(1)m 240 fnt78 1365 10596(,)m 240 fnt83 1472 10604(H)m +168 fnt78 1655 10511(2)m 240 fnt78 1747 10596(,)m 1854(\274)s +2152(,)s 240 fnt83 2259 10604(H)m 168 fnt83 2442 10517(n)m +240 fnt82 0 10060(which)m 642(may)s 1108(be)s 1391(read:)s +1908(`If)s 2217(ordinary)s 3082(component)s 240 fnt83 4206 10062(C)m +168 fnt83 4371 9975(i)m 240 fnt82 4475 10060(has)m 4846(header)s +5543(component)s 6667(sequence)s 240 fnt83 7601 10062(H)m 168 fnt78 +7784 9969(1)m 240 fnt78 7862 10054(,)m 240 fnt83 7969 10062(H)m +168 fnt78 8152 9969(2)m 240 fnt78 8244 10054(,)m 8351(\274)s +8649(,)s 240 fnt83 8756 10062(H)m 168 fnt83 8939 9975(n)m +240 fnt82 9019 10060(,)m 0 9772(then)m 468(its)s 742(successor)s +1717(component)s 240 fnt83 2839 9774(C)m 168 fnt83 3004 9687(i)m +168 fnt78 3070 9681(+)m 3183(1)s 240 fnt82 3308 9772(has)m +3676(header)s 4372(component)s 5494(sequence)s 240 fnt83 6426 9774(H)m +168 fnt78 6609 9681(1)m 240 fnt78 6687 9766(,)m 240 fnt83 +6794 9774(H)m 168 fnt78 6977 9681(2)m 240 fnt78 7069 9766(,)m +7176(\274)s 7474(,)s 240 fnt83 7581 9774(H)m 168 fnt83 +7764 9687(n)m 240 fnt82 7902 9772(also.)m 16(')k 8501(Using)s +0 9484(this)m 396(notation,)s 1287(we)s 1622(may)s 2088(no)s 6(w)k +2549(de\207ne)s 3190(the)s 3538(four)s 3996(symbols)s 4845(that)s +5263(af)s 6(fect)k 5859(header)s 6556(component)s 7680(sequences:)s +240 fnt83 480 8985(C)m 168 fnt83 645 8898(i)m 240 fnt78 +773 8977(:)m 240 fnt83 903 8985(H)m 168 fnt78 1086 8892(1)m +240 fnt78 1164 8977(,)m 240 fnt83 1271 8985(H)m 168 fnt78 +1454 8892(2)m 240 fnt78 1546 8977(,)m 1653(\274)s 1951(,)s +240 fnt83 2058 8985(H)m 168 fnt83 2241 8898(n)m 240 fnt83 +480 8697(/)m 480 8409(gap)m 220 fnt35 905 8404(@BeginHeaderComponent)m 240 fnt83 +3609 8409(H)m 168 fnt83 3792 8322(n)m 168 fnt78 3894 8316(+)m +4007(1)s 240 fnt83 480 8121(/)m 480 7833(C)m 168 fnt83 +645 7746(i)m 168 fnt78 711 7740(+)m 824(1)s 240 fnt78 +974 7825(:)m 240 fnt83 1104 7833(H)m 168 fnt78 1287 7740(1)m +240 fnt78 1365 7825(,)m 240 fnt83 1472 7833(H)m 168 fnt78 +1655 7740(2)m 240 fnt78 1747 7825(,)m 1854(\274)s 2152(,)s +240 fnt83 2259 7833(H)m 168 fnt83 2442 7746(n)m 240 fnt78 +2534 7825(,)m 240 fnt83 2641 7833(H)m 168 fnt83 2824 7746(n)m +168 fnt78 2926 7740(+)m 3039(1)s 240 fnt82 0 7289(That)m +478(is,)s 220 fnt35 723 7286(@BeginHeaderComponent)m 240 fnt82 3394 7289(occup)m 2(ying)k +4422(an)s 4684(entire)s 5263(component)s 6366(appends)s 7181(a)s +7326(header)s 8002(component)s 0 7001(to)m 255(the)s 619(sequence)s +1568(of)s 1856(the)s 2220(follo)s 6(wing)k 3213(ordinary)s +4093(components.)s 5431(When)s 6076(printed,)s 6876(this)s 7288(header)s +8002(component)s 0 6713(is)m 217(separated)s 1184(by)s 240 fnt83 +1485 6715(gap)m 240 fnt82 1905 6713(from)m 2436(the)s 2792(follo)s 6(wing)k +3776(component;)s 4959(if)s 240 fnt83 5183 6715(gap)m 240 fnt82 +5603 6713(is)m 5820(empty)s 6480(it)s 6679(denotes)s 220 fnt35 +7468 6710(0ie)m 240 fnt82 7819 6713(as)m 8076(usual)s 8644(with)s +0 6425(concatenation)m 1391(g)s 1(aps.)k 2000(The)s 2434(appearance)s +3572(of)s 3850(the)s 4204(header)s 4908(component)s 6039(will)s +6471(be)s 6760(e)s 3(xactly)k 7508(as)s 7764(it)s +7963(w)s 2(ould)k 8625(ha)s 4(v)k 3(e)k +0 6137(been)m 509(had)s 913(it)s 1105(occurred)s 1999(alone)s +2573(at)s 2805(that)s 3223(point,)s 3822(rather)s 4438(than)s +4907(after)s 220 fnt35 5403 6134(@BeginHeaderComponent)m 240 fnt82 8035 6137(.)m +480 5763(Ne)m 3(xt)k 1002(comes)s 220 fnt35 1664 5760(@EndHeaderComponent)m +240 fnt82 4126 5763(:)m 240 fnt83 480 5268(C)m 168 fnt83 +645 5181(i)m 240 fnt78 773 5260(:)m 240 fnt83 903 5268(H)m +168 fnt78 1086 5175(1)m 240 fnt78 1164 5260(,)m 240 fnt83 +1271 5268(H)m 168 fnt78 1454 5175(2)m 240 fnt78 1546 5260(,)m +1653(\274)s 1951(,)s 240 fnt83 2058 5268(H)m 168 fnt83 +2241 5181(n)m 240 fnt78 2333 5260(,)m 240 fnt83 2440 5268(H)m +168 fnt83 2623 5181(n)m 168 fnt78 2725 5175(+)m 2838(1)s +240 fnt83 480 4980(/)m 220 fnt35 480 4687(@EndHeaderComponent)m 240 fnt83 +480 4404(/)m 480 4116(C)m 168 fnt83 645 4029(i)m 168 fnt78 +711 4023(+)m 824(1)s 240 fnt78 974 4108(:)m 240 fnt83 +1104 4116(H)m 168 fnt78 1287 4023(1)m 240 fnt78 1365 4108(,)m +240 fnt83 1472 4116(H)m 168 fnt78 1655 4023(2)m 240 fnt78 +1747 4108(,)m 1854(\274)s 2152(,)s 240 fnt83 2259 4116(H)m +168 fnt83 2442 4029(n)m 240 fnt82 0 3572(That)m 520(is,)s +220 fnt35 809 3569(@EndHeaderComponent)m 240 fnt82 3353 3572(\(which)m 4097(has)s +4490(no)s 4805(parameters\))s 6003(occup)s 2(ying)k 7074(an)s +7380(entire)s 8002(component)s 0 3284(deletes)m 722(the)s 1078(last)s +1477(header)s 2182(component.)s 3418(If)s 3656(the)s 4012(sequence)s +4953(is)s 5171(empty)s 15(,)k 5869(a)s 6043(w)s 2(arning)k +6886(message)s 7760(is)s 7978(printed)s 8722(and)s 0 2996(it)m +193(remains)s 1002(empty)s 15(.)k 220 fnt35 1751 2993(@BeginHeaderComponent)m +240 fnt82 4445 2996(and)m 220 fnt35 4851 2993(@EndHeaderComponent)m 240 fnt82 +7375 2996(are)m 7724(naturally)s 8629(used)s 0 2708(in)m 243(matching)s +1186(\(possibly)s 2117(nested\))s 2856(pairs,)s 3427(to)s 3666(introduce)s +4625(and)s 5029(subsequently)s 6333(retract)s 7001(a)s 7167(header)s +7864(component.)s 480 2334(Ne)m 3(xt)k 1002(comes)s 220 fnt35 +1664 2331(@SetHeaderComponent)m 240 fnt82 4065 2334(:)m 240 fnt83 480 1839(C)m +168 fnt83 645 1752(i)m 240 fnt78 773 1831(:)m 240 fnt83 +903 1839(H)m 168 fnt78 1086 1746(1)m 240 fnt78 1164 1831(,)m +240 fnt83 1271 1839(H)m 168 fnt78 1454 1746(2)m 240 fnt78 +1546 1831(,)m 1653(\274)s 1951(,)s 240 fnt83 2058 1839(H)m +168 fnt83 2241 1752(n)m 240 fnt83 480 1551(/)m 480 1263(gap)m +220 fnt35 905 1258(@SetHeaderComponent)m 240 fnt83 3378 1263(H)m 168 fnt83 +3561 1176(n)m 168 fnt78 3663 1170(+)m 3776(1)s 240 fnt83 +480 975(/)m 480 687(C)m 168 fnt83 645 600(i)m 168 fnt78 +711 594(+)m 824(1)s 240 fnt78 974 679(:)m 240 fnt83 +1104 687(H)m 168 fnt83 1287 600(n)m 168 fnt78 1389 594(+)m +1502(1)s +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 60 66 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +%%+ font Times-Italic +%%+ font Helvetica +%%+ font Symbol +/pgsave save def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +0 LoutMargSet +grestore +240 fnt84 0 13840(60)m 240 fnt83 6081 13843(Chapter)m 6931(3.)s +7205(Pr)s 8(ede\207ned)k 8300(symbols)s 220 fnt35 0 13202(@SetHeaderComponent)m +240 fnt82 2461 13205(clears)m 3068(an)s 3(y)k 3465(current)s +4201(header)s 4898(components)s 6107(and)s 6511(replaces)s 7344(them)s +7882(by)s 8176(one)s 8578(of)s 8850(its)s 0 12917(o)m 6(wn.)k +571(Finally)s 1302(we)s 1637(ha)s 4(v)k 3(e)k +220 fnt35 2138 12914(@ClearHeaderComponent)m 240 fnt82 4733 12917(:)m 240 fnt83 +480 12418(C)m 168 fnt83 645 12331(i)m 240 fnt78 773 12410(:)m +240 fnt83 903 12418(H)m 168 fnt78 1086 12325(1)m 240 fnt78 +1164 12410(,)m 240 fnt83 1271 12418(H)m 168 fnt78 1454 12325(2)m +240 fnt78 1546 12410(,)m 1653(\274)s 1951(,)s 240 fnt83 +2058 12418(H)m 168 fnt83 2241 12331(n)m 240 fnt83 480 12130(/)m +220 fnt35 480 11837(@ClearHeaderComponent)m 240 fnt83 480 11554(/)m 480 11266(C)m +168 fnt83 645 11179(i)m 168 fnt78 711 11173(+)m 824(1)s +240 fnt78 974 11258(:)m 240 fnt82 0 10722(This)m 466(symbol)s +1216(clears)s 1813(an)s 3(y)k 2200(header)s 2886(components,)s +4140(lea)s 4(ving)k 4883(the)s 5221(sequence)s 6143(empty)s 15(.)k +6880(These)s 7497(last)s 7878(tw)s 2(o)k 8277(symbols)s +0 10434(combine)m 879(less)s 1287(cleanly)s 2030(than)s 2497(the)s +2844(\207rst)s 3274(tw)s 2(o)k 3683(\(either)s 4363(will)s +4788(wreck)s 5432(an)s 3(y)k 5828(enclosing)s 220 fnt35 +6796 10431(@BeginHeaderCompo)m 240 fnt82 8998 10434(-)m 220 fnt35 0 10143(nent)m +240 fnt82 491 10146(\211)m 220 fnt35 679 10143(@EndHeaderComponent)m 240 fnt82 +3209 10146(pair\),)m 3774(b)s 4(ut)k 4145(the)s 3(y)k +4616(are)s 4971(useful)s 5618(in)s 5869(situations)s 6845(where)s +7493(the)s 7849(range)s 8444(of)s 8724(one)s 0 9858(header)m +697(is)s 907(terminated)s 1986(by)s 2280(the)s 2628(start)s +3098(of)s 3369(the)s 3717(range)s 4304(of)s 4575(the)s +4923(ne)s 3(xt.)k 480 9484(All)m 859(four)s 1337(symbols)s +2206(yield)s 2761(the)s 3129(v)s 6(alue)k 220 fnt35 +3717 9481(@Null)m 240 fnt82 4382 9484(where)m 5041(the)s 3(y)k +5524(appear)s 13(.)k 6332(If)s 6582(the)s 3(y)k +7064(do)s 7377(not)s 7763(occup)s 2(y)k 8527(entire)s +0 9196(components)m 1208(of)s 1479(their)s 1976(g)s 1(alle)k 3(y)k 15(,)k +2648(the)s 3(y)k 3111(are)s 3458(silently)s 4215(ignored.)s +240 fnt84 0 8403(3.33.)m 591(@NotRe)s 3(v)k 2(ealed)k +240 fnt82 480 7971(The)m 220 fnt35 938 7968(@NotRe)m 6(v)k 5(ealed)k +240 fnt82 2495 7971(symbol)m 3285(e)s 3(x)k 3(erts)k +3931(\207ne)s 4376(control)s 5138(o)s 3(v)k 3(er)k +5647(the)s 6026(process)s 6824(of)s 7125(e)s 3(xpanding)k +8204(recepti)s 6(v)k 3(e)k 0 7683(symbols.)m 955(It)s +1152(may)s 1611(appear)s 2300(only)s 2773(within)s 3433(the)s +3774(body)s 4300(of)s 4564(a)s 4722(de\207nition,)s 5739(immediately)s +6979(follo)s 6(wing)k 7949(the)s 8289(name)s 8855(of)s +0 7395(a)m 166(recepti)s 6(v)k 3(e)k 1088(symbol.)s +1957(F)s 3(or)k 2346(e)s 3(xample:)k 220 fnt35 +480 6894(def A { @Galle)m 4(y })k 480 6318(def B { @Galle)m 4(y })k 480 5742(def ABList)m +480 5454({)m 480 5166( A)m 480 4878( // B @NotRe)m 6(v)k 5(ealed)k +480 4590( // ABList)m 480 4302(})m 240 fnt82 0 3808(The)m 424(meaning)s +1297(is)s 1503(that)s 1916(the)s 2260(symbol)s 3016(immediately)s +4259(preceding)s 220 fnt35 5251 3805(@NotRe)m 6(v)k 5(ealed)k +240 fnt82 6718 3808(,)m 220 fnt35 6821 3805(B)m 240 fnt82 +7015 3808(in)m 7253(this)s 7645(e)s 3(xample,)k 8555(is)s +8760(not)s 0 3520(re)m 6(v)k 3(ealed)k 851(to)s +1083(g)s 1(alle)k 3(ys)k 1800(which)s 2435(encounter)s +220 fnt35 3431 3517(ABList)m 240 fnt82 4113 3520(while)m 4693(searching)s +5655(for)s 5986(tar)s 4(gets;)k 6723(to)s 6955(such)s +7444(g)s 1(alle)k 3(ys)k 8161(it)s 8345(appears)s +0 3232(that)m 220 fnt35 408 3229(ABList)m 240 fnt82 1086 3232(contains)m +220 fnt35 1923 3229(A)m 240 fnt82 2116 3232(only)m 15(,)k +2624(not)s 220 fnt35 2979 3229(B)m 240 fnt82 3117 3232(,)m +3213(hence)s 3816(only)s 4286(g)s 1(alle)k 3(ys)k +4999(tar)s 4(geted)k 5811(to)s 220 fnt35 6039 3229(A)m +240 fnt82 6233 3232(will)m 6648(e)s 3(xpand)k 220 fnt35 +7384 3229(ABList)m 240 fnt82 8013 3232(.)m 8166(Ho)s 6(we)k 6(v)k 3(er)k 9(,)k +0 2944(after)m 220 fnt35 496 2941(ABList)m 240 fnt82 1185 2944(is)m +1395(e)s 3(xpanded)k 2368(by)s 2662(such)s 3158(a)s +3324(g)s 1(alle)k 3(y)k 15(,)k 220 fnt35 +3996 2941(B)m 240 fnt82 4194 2944(will)m 4620(be)s 4902(a)s 4(v)k 6(ailable)k +5810(as)s 6060(a)s 6226(tar)s 4(get)k 6825(in)s +7068(the)s 7416(usual)s 7976(w)s 2(ay)k 15(.)k +480 2570(Apart)m 1081(from)s 1602(this)s 1994(meaning,)s 220 fnt35 +2922 2567(@NotRe)m 6(v)k 5(ealed)k 240 fnt82 4445 2570(has)m +4812(no)s 5102(ef)s 6(fect)k 5694(at)s 5923(all,)s +6264(and)s 6665(the)s 7010(body)s 7540(of)s 7808(the)s +8152(de\207nition)s 0 2282(may)m 501(be)s 819(understood)s 1976(by)s +2306(deleting)s 220 fnt35 3164 2279(@NotRe)m 6(v)k 5(ealed)k +240 fnt82 4727 2282(and)m 5166(an)s 3(y)k 5599(preceding)s +6630(space.)s 7361(Thus,)s 7982(the)s 8366(symbol)s 0 1994(preceding)m +220 fnt35 1001 1991(@NotRe)m 6(v)k 5(ealed)k 240 fnt82 +2533 1994(may)m 3004(ha)s 4(v)k 3(e)k 3510(named)s +4211(and)s 4620(right)s 5136(parameters)s 6239(in)s 6487(the)s +6840(usual)s 7405(w)s 2(ay;)k 7919(these)s 8471(w)s 2(ould)k +0 1706(follo)m 6(w)k 672(after)s 1168(the)s 220 fnt35 +1516 1703(@NotRe)m 6(v)k 5(ealed)k 240 fnt82 3043 1706(symbol.)m +480 1332(This)m 944(symbol)s 1692(w)s 2(as)k 2101(introduced)s +3169(to)s 3396(o)s 3(v)k 3(ercome)k 4377(a)s +4530(problem)s 5375(with)s 5845(\210oating)s 6616(\207gures)s 7306(treated)s +8001(as)s 8238(displays.)s 0 1044(It)m 205(turned)s 874(out)s +1240(to)s 1479(be)s 1761(essential)s 2638(to)s 2877(specify)s +3621(the)s 3969(layout)s 4627(of)s 4898(a)s 5064(column)s +5839(\(in)s 6161(part\))s 6660(as)s +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 61 67 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Italic +%%+ font Times-Bold +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +1 LoutMargSet +grestore +240 fnt83 0 13843(3.33.)m 574(@NotRe)s 3(vealed)k 240 fnt84 +8839 13840(61)m 220 fnt35 480 13251(@BodyT)m 26(e)k 6(xtPlace)k +480 12963(// @FigurePlace)m 480 12675(// @BodyT)m 26(e)k 6(xtPlace)k 480 12387(// @FigurePlace)m +480 12099(// @BodyT)m 26(e)k 6(xtPlace)k 480 11811(...)m 240 fnt82 +0 11360(so)m 256(that)s 664(\207gures)s 1356(could)s 1935(alternate)s +2802(with)s 3274(body)s 3798(te)s 3(xt)k 4202(do)s 6(wn)k +4776(the)s 5114(column.)s 5986(Ho)s 6(we)k 6(v)k 3(er)k 9(,)k +6935(some)s 7486(means)s 8138(w)s 2(as)k 8548(need)s +8998(-)s 0 11072(ed)m 291(to)s 538(ensure)s 1226(that)s +1652(in)s 1903(the)s 2259(absence)s 3080(of)s 3359(an)s 3(y)k +3764(\207gures)s 4474(there)s 5015(could)s 5613(only)s 6101(be)s +6391(one)s 220 fnt35 6801 11069(@BodyT)m 26(e)k 6(xtPlace)k +240 fnt82 8527 11072(in)m 8778(the)s 0 10784(column,)m 831(since)s +1385(otherwise)s 2377(v)s 6(arious)k 3132(problems)s 4080(arose,)s +4698(for)s 5042(e)s 3(xample)k 5912(the)s 220 fnt35 +6267 10781(@NP)m 240 fnt82 6851 10784(symbol)m 7618(merely)s 8342(causing)s +0 10496(a)m 174(skip)s 634(from)s 1167(one)s 220 fnt35 +1577 10493(@BodyT)m 26(e)k 6(xtPlace)k 240 fnt82 3303 10496(to)m +3551(the)s 3907(ne)s 3(xt)k 4385(in)s 4636(the)s +4992(same)s 5548(column,)s 6381(rather)s 7006(than)s 7483(to)s +7730(the)s 8087(\207rst)s 8526(in)s 8778(the)s 0 10208(ne)m 3(xt)k +490(column.)s 1394(Also,)s 1974(without)s 2787(this)s 3204(feature)s +3944(the)s 4314(optimal)s 5120(page)s 5650(break)s 2(er')k 13(s)k +6595(attempts)s 7477(to)s 7737(end)s 8163(a)s 8351(column)s +0 9920(early)m 545(w)s 2(ould)k 1214(be)s 1510(frustrated)s +2496(by)s 2805(Lout)s 3331(then)s 3814(disco)s 3(v)k 3(ering)k +4991(that)s 5423(plenty)s 6090(of)s 6375(space)s 6976(e)s 3(xisted)k +7722(at)s 7968(a)s 8149(follo)s 6(wing)k 220 fnt35 +0 9629(@BodyT)m 26(e)k 6(xtPlace)k 240 fnt82 1703 9632(in)m +1931(the)s 2263(same)s 2795(column.)s 3662(The)s 4074(solution)s +4887(is)s 5082(based)s 5669(on)s 220 fnt35 5951 9629(ABList)m +240 fnt82 6625 9632(abo)m 3(v)k 3(e;)k 7287(each)s +7767(occurrence)s 8855(of)s 220 fnt35 0 9341(@BodyT)m 26(e)k 6(xtPlace)k +240 fnt82 1712 9344(after)m 2201(a)s 220 fnt35 2361 9341(@FigurePlace)m +240 fnt82 3798 9344(is)m 4002(not)s 4361(re)s 6(v)k 3(ealed)k +5213(in)s 5449(the)s 5791(enclosing)s 6754(de\207nition,)s 7772(and)s +8169(so)s 8428(cannot)s 0 9056(be)m 282(found)s 899(by)s +1193(body)s 1727(te)s 3(xt)k 2142(g)s 1(alle)k 3(ys)k +2866(unless)s 3515(a)s 3682(\207gure)s 4296(has)s 4666(pre)s 6(viously)k +5724(attached)s 6578(to)s 6817(the)s 7165(preceding)s 220 fnt35 +8162 9053(@Figure)m 240 fnt82 8998 9056(-)m 220 fnt35 0 8765(Place)m +240 fnt82 540 8768(.)m 240 fnt84 0 8021(3.34.)m 591(The)s +1046(cr)s 4(oss)k 1614(r)s 4(efer)k 4(ence)k +2616(symbols)s 3494(&&)s 3941(and)s 4382(&&&)s 240 fnt82 +480 7544(The)m 941(cross)s 1516(reference)s 2493(symbol)s 220 fnt35 +3286 7541(&&)m 240 fnt82 3668 7544(tak)m 2(es)k 4241(the)s +4623(name)s 5230(of)s 5534(a)s 5734(symbol)s 6527(\(not)s +7006(an)s 7322(object\))s 8068(for)s 8439(its)s 8749(left)s +0 7256(parameter)m 9(,)k 1068(and)s 1489(an)s 1788(object)s +2449(whose)s 3134(v)s 6(alue)k 3718(must)s 4260(be)s +4559(a)s 4741(simple)s 5451(w)s 2(ord,)k 6064(or)s +6340(se)s 6(v)k 3(eral)k 7079(simple)s 7788(w)s 2(ords,)k +8495(for)s 8850(its)s 0 6968(right)m 519(parameter)s 13(.)k +1633(The)s 2069(result)s 2668(is)s 2887(a)s 3061(cross)s +3612(reference,)s 4615(which)s 5265(may)s 5740(be)s 6030(thought)s +6831(of)s 7111(as)s 7369(an)s 7661(arro)s 6(w)k +8275(pointing)s 0 6680(from)m 524(the)s 872(cross)s 1414(reference)s +2357(symbol)s 3117(to)s 3356(the)s 3704(be)s 3(ginning)k +4712(of)s 4983(an)s 5266(in)s 9(v)k 4(ocation)k +6320(of)s 6591(the)s 6939(named)s 7635(symbol.)s 480 6306(The)m +894(in)s 9(v)k 4(ocation)k 1934(pointed)s 2696(to,)s +2975(kno)s 6(wn)k 3665(as)s 3901(the)s 240 fnt83 +4235 6308(tar)m 8(g)k 2(et)k 240 fnt82 4846 6306(of)m +5103(the)s 5437(cross)s 5965(reference,)s 6945(is)s 7141(generally)s +8070(one)s 8458(whose)s 220 fnt35 0 6015(@T)m 26(ag)k +240 fnt82 643 6018(parameter)m 1677(has)s 2067(v)s 6(alue)k +2655(equal)s 3248(to)s 3507(the)s 3875(right)s 4406(parameter)s +5440(of)s 5731(the)s 6099(cross)s 6661(reference)s 7624(symbol.)s +8513(Three)s 0 5730(special)m 759(tags,)s 220 fnt35 1292 5727(preceding)m +240 fnt82 2243 5730(,)m 220 fnt35 2391 5727(f)m 6(ollo)k 3(wing)k +240 fnt82 3221 5730(,)m 3369(and)s 220 fnt35 3814 5727(f)m 6(oll_or_prec)k +240 fnt82 4948 5730(,)m 5097(point)s 5690(respecti)s 6(v)k 3(ely)k +6930(to)s 7210(the)s 7599(\207rst)s 8072(in)s 9(v)k 4(ocation)k +0 5442(preceding)m 1006(the)s 1365(cross)s 1918(reference)s 2872(in)s +3126(the)s 3485(\207nal)s 3976(printed)s 4721(document,)s 5783(to)s +6033(the)s 6392(\207rst)s 6834(in)s 9(v)k 4(ocation)k +7899(follo)s 6(wing)k 8887(it,)s 0 5154(and)m 404(to)s +643(the)s 991(\207rst)s 1422(follo)s 6(wing)k 2399(it)s +2591(if)s 2808(such)s 3304(e)s 3(xists)k 3896(else)s +4323(to)s 4562(the)s 4910(\207rst)s 5341(preceding)s 6337(it.)s +480 4780(A)m 709(cross)s 1249(reference)s 2190(may)s 2654(be)s +2935(used)s 3430(in)s 3671(four)s 4127(w)s 2(ays:)k +4782(where)s 5420(an)s 5701(object)s 6343(is)s 6552(e)s 3(xpected,)k +7504(in)s 7745(which)s 8385(case)s 8850(its)s 0 4492(v)m 6(alue)k +576(is)s 795(a)s 970(cop)s 2(y)k 1497(of)s +1777(the)s 2134(tar)s 4(get;)k 2794(with)s 3285(the)s +220 fnt35 3642 4489(@Open)m 240 fnt82 4457 4492(and)m 220 fnt35 +4870 4489(@Use)m 240 fnt82 5544 4492(symbols;)m 6463(with)s 6954(the)s +220 fnt35 7311 4489(@T)m 26(agged)k 240 fnt82 8309 4492(symbol;)m +0 4204(and)m 414(in)s 667(the)s 220 fnt35 1025 4201(into)m +240 fnt82 1441 4204(clause)m 2105(or)s 220 fnt35 2374 4201(@T)m 26(arget)k +240 fnt82 3271 4204(symbol)m 4041(of)s 4323(a)s 4499(g)s 1(alle)k 3(y)k +5143(de\207nition,)s 6177(in)s 6430(which)s 7083(case)s 7560(the)s +7918(v)s 6(alue)k 8496(of)s 8778(the)s 0 3916(tag)m +345(must)s 870(be)s 220 fnt35 1152 3913(preceding)m 240 fnt82 +2103 3916(,)m 220 fnt35 2210 3913(f)m 6(ollo)k 3(wing)k +240 fnt82 3040 3916(,)m 3147(or)s 220 fnt35 3406 3913(f)m 6(oll_or_prec)k +240 fnt82 4540 3916(.)m 480 3542(W)m 9(ithin)k 1233(an)s +220 fnt35 1557 3539(into)m 240 fnt82 2004 3542(clause)m 2698(or)s +220 fnt35 2999 3539(@T)m 26(arget)k 240 fnt82 3927 3542(symbol,)m +4780(the)s 5169(alternati)s 6(v)k 3(e)k 6265(form)s +220 fnt35 6830 3539(&&&)m 240 fnt82 7365 3542(is)m 7616(acceptable)s +8722(and)s 0 3254(indicates)m 900(a)s 1066(forcing)s 1809(g)s 1(alle)k 3(y)k +2443(\(Section)s 3296(2.7\).)s 480 2880(Except)m 1203(within)s 1870(an)s +220 fnt35 2151 2877(into)m 240 fnt82 2556 2880(clause)m 3208(or)s +220 fnt35 3465 2877(@T)m 26(arget)k 240 fnt82 4351 2880(symbol,)m +5162(the)s 5508(symbol)s 6267(referred)s 7078(to)s 7315(must)s +7839(ha)s 4(v)k 3(e)k 8339(a)s 220 fnt35 +8503 2877(@T)m 26(ag)k 240 fnt82 0 2592(parameter)m 13(.)k +1100(This)s 1570(is)s 1775(so)s 2035(e)s 6(v)k 3(en)k +2530(if)s 2741(the)s 3084(right)s 3589(parameter)s 4597(of)s +4863(the)s 5205(cross)s 5742(reference)s 6679(is)s 220 fnt35 +6884 2589(preceding)m 240 fnt82 7835 2592(,)m 220 fnt35 7936 2589(f)m 6(ollo)k 3(wing)k +240 fnt82 8766 2592(,)m 8867(or)s 220 fnt35 0 2301(f)m 6(oll_or_prec)k +240 fnt82 1134 2304(.)m 240 fnt84 0 1515(3.35.)m 591(@T)s 22(agged)k +240 fnt82 480 1038(The)m 220 fnt35 924 1035(@T)m 26(agged)k +240 fnt82 1929 1038(symbol)m 2705(tak)s 2(es)k 3261(a)s +3444(cross)s 4002(reference)s 4961(for)s 5315(its)s 5607(left)s +6001(parameter)s 7031(and)s 7451(an)s 7750(object,)s 8458(whose)s +0 750(v)m 6(alue)k 565(must)s 1087(be)s 1366(a)s +1528(juxtaposition)s 2831(of)s 3099(simple)s 3788(w)s 2(ords,)k +4475(or)s 4731(se)s 6(v)k 3(eral)k 5450(w)s 2(ords,)k +6136(or)s 6392(an)s 6672(empty)s 7320(object,)s 8008(for)s +8343(its)s 8615(right)s 0 462(parameter)m 13(.)k 1104(It)s +1307(has)s 1675(the)s 2021(ef)s 6(fect)k 2615(of)s +2885(attaching)s 3812(its)s 4086(right)s 4595(parameter)s 5607(as)s +5856(an)s 6137(additional)s 7146(tag)s 7489(to)s 7726(the)s +8072(in)s 9(v)k 4(ocation)k 0 174(denoted)m 819(by)s +1117(its)s 1397(left)s 1778(parameter)s 9(,)k 2834(unless)s +3487(the)s 3839(right)s 4353(parameter)s 5371(is)s 5585(empty)s 15(,)k +6279(in)s 6526(which)s 7172(case)s 220 fnt35 7643 171(@T)m 26(agged)k +240 fnt82 8636 174(does)m +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 62 68 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +%%+ font Times-Italic +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +0 LoutMargSet +grestore +240 fnt84 0 13840(62)m 240 fnt83 6081 13843(Chapter)m 6931(3.)s +7205(Pr)s 8(ede\207ned)k 8300(symbols)s 240 fnt82 0 13205(nothing.)m +896(The)s 1324(result)s 1914(of)s 220 fnt35 2185 13202(@T)m 26(agged)k +240 fnt82 3174 13205(is)m 3384(al)s 2(w)k 2(ays)k +220 fnt35 4095 13202(@Null)m 240 fnt82 4680 13205(,)m 4787(which)s +5429(mak)s 2(es)k 6089(it)s 6281(ef)s 6(fecti)k 6(v)k 3(ely)k +7340(in)s 9(visible.)k 240 fnt84 0 12412(3.36.)m 591(@Open and @Use)s +240 fnt82 480 11935(The)m 220 fnt35 904 11932(@Open)m 240 fnt82 +1706 11935(symbol)m 2462(tak)s 2(es)k 2998(a)s 3159(cross)s +3697(reference)s 4636(or)s 4891(symbol)s 5647(in)s 9(v)k 4(ocation)k +6696(for)s 7030(its)s 7302(left)s 7675(parameter)s 9(,)k +8722(and)s 0 11647(an)m 269(arbitrary)s 1130(object,)s 1807(which)s +2435(must)s 2946(be)s 3214(enclosed)s 4095(in)s 4324(braces,)s +5027(for)s 5351(its)s 5613(right)s 6110(parameter)s 13(.)k +7201(The)s 7615(right)s 8112(parameter)s 0 11359(may)m 462(refer)s +966(to)s 1201(the)s 1544(e)s 3(xported)k 2432(parameters)s +3525(and)s 3925(nested)s 4589(de\207nitions)s 5646(of)s 5912(the)s +6256(in)s 9(v)k 4(ocation)k 7305(denoted)s 8117(by)s +8406(the)s 8749(left)s 0 11071(parameter)m 9(,)k 1050(and)s +1452(its)s 1725(v)s 6(alue)k 2291(is)s 2499(the)s +220 fnt35 2844 11068(@Open)m 240 fnt82 3648 11071(symbol')m 13(s)k +4560(result.)s 5252(The)s 5678(tar)s 4(get)k 6274(of)s +6543(the)s 6889(cross)s 7428(reference)s 8369(may)s 8832(lie)s +0 10783(in)m 234(an)s 507(e)s 3(xternal)k 1318(database)s +2187(\(Section)s 3031(3.37\).)s 3684(An)s 3(y)k 4138(symbol)s +4888(a)s 4(v)k 6(ailable)k 5787(outside)s 6524(the)s +220 fnt35 6862 10780(@Open)m 240 fnt82 7658 10783(which)m 8290(happens)s +0 10495(to)m 239(ha)s 4(v)k 3(e)k 741(the)s +1089(same)s 1637(name)s 2212(as)s 2462(one)s 2865(of)s +3137(the)s 3485(symbols)s 4335(made)s 4910(a)s 4(v)k 6(ailable)k +5818(by)s 6113(the)s 220 fnt35 6462 10492(@Open)m 240 fnt82 +7268 10495(will)m 7695(be)s 7978(una)s 4(v)k 6(ailable)k +0 10207(within)m 668(the)s 220 fnt35 1016 10204(@Open)m 240 fnt82 +1762 10207(.)m 538 9833(The)m 220 fnt35 963 9830(@Use)m 240 fnt82 +1625 9833(symbol)m 2382(is)s 2589(an)s 220 fnt35 2869 9830(@Open)m +240 fnt82 3672 9833(symbol)m 4429(in)s 4669(a)s 4832(dif)s 6(ferent)k +5704(form.)s 6329(It)s 6531(may)s 6994(only)s 7471(appear)s +8165(among)s 8867(or)s 0 9545(after)m 502(the)s 857(de\207nitions)s +1925(in)s 2175(Lout')s 13(s)k 2844(input,)s 3450(and)s +3861(it)s 4060(is)s 4277(equi)s 6(v)k 6(alent)k +5328(to)s 5574(enclosing)s 6551(the)s 6906(remainder)s 7941(of)s +8219(the)s 8574(input)s 0 9257(in)m 243(an)s 220 fnt35 +526 9254(@Open)m 240 fnt82 1332 9257(symbol.)m 2201(F)s 3(or)k +2590(e)s 3(xample,)k 240 fnt83 480 8754(de\207nitions)m 220 fnt35 +480 8461(@Use)m 1145({)s 240 fnt83 1269 8466(x)m 220 fnt35 +1435 8461(})m 480 8173(@Use)m 1145({)s 240 fnt83 1269 8178(y)m +220 fnt35 1431 8173(})m 240 fnt83 480 7890(r)m 8(est)k +894(of)s 1175(input)s 240 fnt82 0 7389(is)m 210(equi)s 6(v)k 6(alent)k +1254(to)s 240 fnt83 480 6886(de\207nitions)m 480 6598(x)m 220 fnt35 +646 6593(@Open)m 480 6305({)m 240 fnt83 960 6310(y)m 220 fnt35 +1122 6305(@Open)m 960 6017({)m 240 fnt83 1084 6022(r)m 8(est)k +1498(of)s 1779(input)s 220 fnt35 960 5729(})m 480 5441(})m +240 fnt82 0 4947(The)m 220 fnt35 424 4944(@Use)m 240 fnt82 +1085 4947(symbol)m 1841(allo)s 6(ws)k 2506(a)s 2668(set)s +2989(of)s 3256(standard)s 4120(packages)s 5044(to)s 5279(be)s +5557(opened)s 6303(without)s 7090(the)s 7434(incon)s 9(v)k 3(enience)k +8855(of)s 0 4659(enclosing)m 974(the)s 1327(entire)s 1931(document)s +2939(in)s 220 fnt35 3187 4656(@Open)m 240 fnt82 3998 4659(symbols.)m +4964(Such)s 5505(enclosure)s 6482(could)s 7076(cause)s 7668(Basser)s +8370(Lout)s 8887(to)s 0 4371(run)m 376(out)s 742(of)s +1013(memory)s 15(.)k 240 fnt84 0 3578(3.37.)m 591(@Database and @SysDatabase)s +240 fnt82 529 3101(The)m 220 fnt35 945 3098(@Database)m 240 fnt82 +2148 3101(symbol)m 2896(is)s 3095(used)s 3580(to)s 3808(declare)s +4541(the)s 4877(e)s 3(xistence)k 5808(of)s 6067(a)s +6222(\207le)s 6571(of)s 6831(symbol)s 7579(in)s 9(v)k 4(ocations)k +8708(that)s 0 2813(Lout)m 512(may)s 978(refer)s 1487(to)s +1726(when)s 2302(e)s 6(v)k 6(aluating)k 3339(cross)s +3881(references.)s 5025(In)s 5281(Basser)s 5978(Lout,)s 6537(for)s +6875(e)s 3(xample,)k 220 fnt35 480 2312(@Database @Months @W)m 6(eekDa)k 6(ys { standard })k +240 fnt82 0 1814(means)m 690(that)s 1137(there)s 1698(is)s +1937(a)s 2131(\207le)s 2521(called)s 220 fnt35 3177 1811(standard.ld)m +240 fnt82 4339 1814(containing)m 5430(in)s 9(v)k 4(ocations)k +6600(of)s 6899(the)s 7276(pre)s 6(viously)k 8363(de\207ned)s +0 1526(symbols)m 220 fnt35 846 1523(@Months)m 240 fnt82 1838 1526(and)m +220 fnt35 2238 1523(@W)m 6(eekDa)k 6(ys)k 240 fnt82 +3503 1526(.)m 3663(A)s 220 fnt35 3889 1523(@Database)m 240 fnt82 +5100 1526(symbol)m 5856(may)s 6318(appear)s 7011(an)s 3(ywhere)k +7990(a)s 8152(de\207nition)s 0 1238(or)m 252(a)s 220 fnt35 +411 1235(@Use)m 240 fnt82 1069 1238(symbol)m 1822(may)s 2281(appear)s 13(.)k +3062(Dif)s 6(ferent)k 3982(de\207nitions)s 5036(packages)s 5957(may)s +6416(refer)s 6918(to)s 7150(a)s 7309(common)s 8196(database,)s +0 950(pro)m 3(vided)k 935(the)s 1312(de\207nitions)s 2402(the)s 3(y)k +2894(gi)s 6(v)k 3(e)k 3382(for)s 3749(its)s +4054(symbols)s 4932(are)s 5308(compatible.)s 6563(An)s 6942(entry)s +7516(is)s 7755(interpreted)s 8876(as)s 0 662(though)m 756(it)s +981(appears)s 1795(at)s 2060(the)s 2441(point)s 3026(where)s +3699(the)s 4080(cross)s 4655(reference)s 5631(that)s 6082(retrie)s 6(v)k 3(es)k +6978(it)s 7203(does,)s 7782(which)s 8457(allo)s 6(ws)k +0 374(symbols)m 866(lik)s 2(e)k 220 fnt35 1296 371(@I)m +240 fnt82 1639 374(for)m 220 fnt35 1995 371(Slope @F)m 6(ont)k +240 fnt82 3346 374(to)m 3602(be)s 3902(used)s 4417(in)s +4678(databases.)s 5776(The)s 6221(database)s 7118(\207le)s 7497(may)s +7981(not)s 8365(contain)s +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 63 69 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Italic +%%+ font Times-Bold +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +1 LoutMargSet +grestore +240 fnt83 0 13843(3.37.)m 574(@Database and @SysDatabase)s 240 fnt84 8833 13840(63)m +220 fnt35 0 13202(@Database)m 240 fnt82 1214 13205(or)m 220 fnt35 +1473 13202(@Include)m 240 fnt82 2455 13205(symbols,)m 3360(and)s 3764(each)s +4259(in)s 9(v)k 4(ocation)k 5313(within)s 5981(it)s +6173(must)s 6698(be)s 6980(enclosed)s 7875(in)s 8118(braces.)s +480 12831(Basser)m 1198(Lout)s 1732(constructs)s 2773(an)s 240 fnt83 +3078 12833(inde)m 4(x)k 3674(\207le)s 240 fnt82 3959 12831(,)m +4087(which)s 4751(in)s 5016(this)s 5433(e)s 3(xample)k +6318(is)s 6550(called)s 220 fnt35 7199 12828(standard.li)m 240 fnt82 +8196 12831(,)m 8325(the)s 8695(\207rst)s 0 12543(time)m 481(it)s +675(e)s 6(v)k 3(er)k 1139(encounters)s 2227(the)s +2577(database,)s 3509(as)s 3761(an)s 4045(aid)s 4397(to)s +4638(searching)s 5608(it.)s 5906(If)s 6138(the)s 6488(database)s +7368(\207le)s 7731(is)s 7943(changed,)s 8850(its)s 0 12255(inde)m 3(x)k +586(\207le)s 950(must)s 1477(be)s 1762(deleted)s 2512(by)s +2809(the)s 3159(user)s 3620(so)s 3888(that)s 4309(Basser)s +5008(Lout)s 5523(kno)s 6(ws)k 6196(to)s 6438(reconstruct)s +7561(it.)s 7860(There)s 8475(is)s 8688(also)s 0 11967(an)m +300(installation)s 1435(option)s 2121(which)s 2780(allo)s 6(ws)k +3466(this)s 3879(deletion)s 4723(to)s 4979(be)s 5278(done)s +5817(automatically)s 7188(on)s 7502(suitable)s 8318(systems)s 0 11679(\(including)m +1036(Unix\).)s 480 11305(Basser)m 1210(Lout)s 1756(searches)s 2649(for)s +3021(databases)s 4021(in)s 4298(the)s 4679(current)s 5449(directory)s +6398(\207rst,)s 6910(then)s 7412(in)s 7689(a)s 7888(sequence)s +8855(of)s 0 11017(standard)m 868(places.)s 1629(T)s 19(o)k +1929(search)s 2596(the)s 2944(standard)s 3812(places)s 4460(only)s 15(,)k +4978(use)s 220 fnt35 5353 11014(@SysDatabase)m 240 fnt82 6873 11017(.)m +240 fnt84 0 10224(3.38.)m 591(@Graphic)s 240 fnt82 556 9747(Lout)m +1084(does)s 1590(not)s 1972(pro)s 3(vide)k 2772(the)s +3136(v)s 6(ast)k 3592(repertoire)s 4591(of)s 4878(graphical)s +5838(objects)s 6582(\(lines,)s 7235(circles,)s 7980(box)s 3(es,)k +8660(etc.\))s 0 9459(required)m 846(by)s 1132(diagrams.)s 2163(Instead,)s +2952(it)s 3135(pro)s 3(vides)k 3999(an)s 4274(escape)s +4958(route)s 5497(to)s 5727(some)s 6280(other)s 6823(language)s +7734(that)s 8144(does)s 8625(ha)s 4(v)k 3(e)k +0 9171(these)m 547(features,)s 1409(via)s 1761(its)s 220 fnt35 +2037 9168(@Gr)m 2(aphic)k 240 fnt82 3081 9171(symbol:)m 220 fnt35 +480 8673({ 0 0 mo)m 3(v)k 5(eto)k 480 8385( 0 ysiz)m 3(e lineto)k +480 8097( xsiz)m 3(e ysiz)k 3(e lineto)k 480 7809( xsiz)m 3(e 0 lineto)k +480 7521( closepath)m 480 7233( strok)m 4(e)k 480 6945(})m 480 6657(@Gr)m 2(aphic)k +480 6369({ //0.2c)m 480 6081( ||0.2c hello)m 8(, w)k 2(or)k -3(ld ||0.2c)k +480 5793( //0.2c)m 480 5505(})m 240 fnt82 0 5011(The)m 428(result)s +1018(of)s 1289(the)s 1637(abo)s 3(v)k 3(e)k +2259(in)s 9(v)k 4(ocation)k 3313(of)s 3584(the)s +3932(symbol)s 220 fnt35 4692 5008(@Gr)m 2(aphic)k 240 fnt82 +5736 5011(is)m 1365 422 0 422 240 288 60 480 4249 LoutGr2 +0 0 moveto +0 ysize lineto +xsize ysize lineto +xsize 0 lineto +closepath +stroke +grestore +113 146(hello,)m 698(w)s 2(orld)k +grestore +480 3533(The)m +909(right)s 1421(parameter)s 2437(al)s 2(w)k 2(ays)k +3149(appears)s 3931(as)s 4183(part)s 4615(of)s 4888(the)s +5237(result,)s 5875(and)s 6281(indeed)s 6978(the)s 7327(result)s +7919(is)s 8130(al)s 2(w)k 2(ays)k 8843(an)s +0 3245(object)m 651(whose)s 1327(size)s 1761(is)s 1979(identical)s +2863(to)s 3110(the)s 3465(size)s 3900(of)s 4178(the)s +4534(right)s 5052(parameter)s 6074(with)s 220 fnt35 6563 3242(@OneCol)m +240 fnt82 7583 3245(and)m 220 fnt35 7995 3242(@OneRo)m 3(w)k +240 fnt82 0 2957(applied)m 762(to)s 1001(it.)s 1297(From)s +1875(no)s 6(w)k 2336(on)s 2633(we)s 2968(refer)s +3477(to)s 3716(this)s 4112(part)s 4543(of)s 4814(the)s +5162(result)s 5752(as)s 6002(the)s 240 fnt83 6350 2959(base)m +240 fnt82 6782 2957(.)m 480 2583(The)m 898(left)s 1264(parameter)s +2267(is)s 2466(implementation-dependent:)s 5184(that)s 5591(is,)s 5847(its)s +6112(meaning)s 6978(is)s 7177(not)s 7532(de\207ned)s 8284(by)s +8567(Lout,)s 0 2295(and)m 421(dif)s 6(ferent)k 1313(implementations)s +2975(could)s 3582(require)s 4332(dif)s 6(ferent)k 5224(v)s 6(alues)k +5898(for)s 6253(it.)s 6567(The)s 7012(follo)s 6(wing)k +8007(description)s 0 2007(applies)m 752(to)s 1016(Basser)s 1737(Lout,)s +2321(which)s 2988(uses)s 3475(the)s 3848(PostScript)s 4914(page)s +5447(description)s 6591(language)s 7535([1)s 7709(].)s 7977(Similar)s +8764(b)s 4(ut)k 0 1719(more)m 559(restricted)s 1517(possibilities)s +2722(e)s 3(xist)k 3243(with)s 3737(the)s 4098(PDF)s +4608(back)s 5134(end)s 5550(\(see)s 6003(a)s 6182(separate)s +7033(document)s 8050(distrib)s 4(uted)k 0 1431(with)m 482(Lout\);)s +1125(to)s 1364(include)s 2124(both,)s 2657(use)s 3032(the)s +220 fnt35 3380 1428(@Bac)m 4(kEnd)k 240 fnt82 4525 1431(symbol)m +5285(lik)s 2(e)k 5697(this:)s +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 64 70 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +%%+ font Times-Italic +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +0 LoutMargSet +grestore +240 fnt84 0 13840(64)m 240 fnt83 6081 13843(Chapter)m 6931(3.)s +7205(Pr)s 8(ede\207ned)k 8300(symbols)s 220 fnt35 480 13207({ @Bac)m 4(kEnd @Case {)k +480 12919( P)m 11(ostScr)k -3(ipt @Y)k 4(ield)k 480 12631( {)m +480 12343( ...)m 480 12055( })m 480 11767( PDF @Y)m 4(ield)k 480 11479( {)m +480 11191( ...)m 480 10903( })m 480 10615( })m 480 10327( @Gr)m 2(aphic)k +480 10039( {)m 480 9751( ...)m 480 9463( })m 480 9175(})m 240 fnt82 +0 8681(Returning)m 1039(to)s 1307(PostScript,)s 2425(the)s 2802(left)s +3208(parameter)s 4251(refers)s 4874(to)s 5142(a)s 5337(coordinate)s +6431(system)s 7184(whose)s 7881(origin)s 8538(is)s 8778(the)s +0 8393(bottom)m 773(left-hand)s 1728(corner)s 2433(of)s 2740(the)s +3123(base.)s 3747(It)s 3987(may)s 4489(use)s 4899(the)s +5282(symbols)s 220 fnt35 6166 8390(xsiz)m 3(e)k 240 fnt82 +6751 8393(and)m 220 fnt35 7190 8390(ysiz)m 3(e)k 240 fnt82 +7774 8393(to)m 8048(denote)s 8778(the)s 0 8105(horizontal)m 1031(and)s +1442(v)s 3(ertical)k 2216(size)s 2650(of)s 2928(the)s +3283(base;)s 3827(similarly)s 15(,)k 220 fnt35 4774 8102(xmar)m -3(k)k +240 fnt82 5442 8105(and)m 220 fnt35 5853 8102(ymar)m -3(k)k +240 fnt82 6521 8105(denote)m 7222(the)s 7577(positions)s 8499(of)s +8778(the)s 0 7817(base')m 13(s)k 635(column)s 1410(and)s +1814(ro)s 6(w)k 2234(marks:)s gsave +480 5454 translate +180 fnt82 3570 2072 0 1994 180 288 45 LoutGraphic +gsave +grestore save gsave 200 dict begin lfigdict begin +grestore +180 fnt83 107 1955(ysize)m +0 1388(ymark)m 180 fnt82 364 253(0)m 2551 1701 850 1134 180 288 45 676 293 LoutGr2 +grestore save gsave 200 dict begin lfigdict begin +grestore +2551 1701 850 1134 180 288 45 0 0 LoutGr2 +/lfiglightgrey [ lfigbox ] gsave lfigpaintpath grestore +0.015 cm setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigbox ] lfigdopath +pop pop +grestore +2551 1701 850 1134 180 288 45 0 0 LoutGr2 + +0.015 cm setlinewidth lfiground setlinecap +0.15 cm /lfigdashed [ -0.3 cm ymark +xsize ymark 0.3 cm 0 lfigpadd [] +xmark -0.3 cm +xmark ysize 0 0.3 cm lfigpadd ] lfigdopath +pop pop +grestore + +grestore + +grestore +end end restore +grestore +676 14(0)m 180 fnt83 +1526 15(xmark)m 3227(xsize)s end end restore +grestore +0 5003(In)m 265(addition)s 1115(to)s +1363(these)s 1920(four)s 2387(symbols)s 3245(and)s 3658(0,)s +3895(lengths)s 4646(may)s 5121(be)s 5412(denoted)s 6238(in)s +6490(centimetres,)s 7706(inches,)s 8434(points,)s 0 4715(ems,)m 492(f)s -13(')k 13(s,)k +850(v')s 13(s)k 1180(and)s 1584(s')s 13(s)k +1887(using)s 2459(the)s 2807(notation)s 240 fnt83 480 4179(l)m +220 fnt35 666 4174(cm)m 240 fnt82 1197 4177(instead)m 1932(of)s +2203(Lout')s 13(s)k 240 fnt83 3045 4179(l)m 240 fnt82 +3111 4177(c)m 240 fnt83 480 3891(l)m 220 fnt35 666 3886(in)m +240 fnt82 1197 3889(instead)m 1932(of)s 2203(Lout')s 13(s)k +240 fnt83 3045 3891(l)m 240 fnt82 3111 3889(i)m 240 fnt83 +480 3603(l)m 220 fnt35 666 3598(pt)m 240 fnt82 1197 3601(instead)m +1932(of)s 2203(Lout')s 13(s)k 240 fnt83 3045 3603(l)m +240 fnt82 3111 3601(p)m 240 fnt83 480 3315(l)m 220 fnt35 +666 3310(em)m 240 fnt82 1197 3313(instead)m 1932(of)s 2203(Lout')s 13(s)k +240 fnt83 3045 3315(l)m 240 fnt82 3111 3313(m)m 240 fnt83 +480 3027(l)m 220 fnt35 666 3022(ft)m 240 fnt82 1197 3025(instead)m +1932(of)s 2203(Lout')s 13(s)k 240 fnt83 3045 3027(l)m +240 fnt82 3111 3025(f)m 240 fnt83 480 2739(l)m 220 fnt35 +666 2734(vs)m 240 fnt82 1197 2737(instead)m 1932(of)s 2203(Lout')s 13(s)k +240 fnt83 3045 2739(l)m 240 fnt82 3111 2737(v)m 240 fnt83 +480 2451(l)m 220 fnt35 666 2446(sp)m 240 fnt82 1197 2449(instead)m +1932(of)s 2203(Lout')s 13(s)k 240 fnt83 3045 2451(l)m +240 fnt82 3111 2449(s)m 0 1908(Note)m 521(that)s 939(there)s +1472(must)s 1997(be)s 2279(a)s 2445(space)s 3032(between)s +3886(the)s 4234(number)s 5025(and)s 5429(its)s 5705(unit,)s +6184(unlik)s 2(e)k 6836(Lout)s 7348(proper)s 13(.)k +480 1534(A)m 732(point)s 1306(within)s 1996(the)s 2366(base)s +2869(\(and,)s 3423(with)s 3927(care,)s 4453(a)s 4642(point)s +5216(outside)s 5985(it\))s 6267(may)s 6755(be)s 7059(denoted)s +7897(by)s 8213(a)s 8401(pair)s 8855(of)s 0 1246(lengths.)m +855(F)s 3(or)k 1244(e)s 3(xample,)k 220 fnt35 +480 749(xmar)m -3(k ymar)k -3(k)k 240 fnt82 0 251(is)m +210(the)s 558(point)s 1110(where)s 1750(the)s 2098(marks)s +2733(cross,)s 3331(and)s +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 65 71 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Italic +%%+ font Times-Bold +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +1 LoutMargSet +grestore +240 fnt83 0 13843(3.38.)m 574(@Gr)s 3(aphic)k 240 fnt84 +8833 13840(65)m 220 fnt35 480 13214(0 2 cm)m 240 fnt82 0 12759(is)m +195(a)s 346(point)s 883(on)s 1164(the)s 1497(left)s +1859(edge,)s 2402(tw)s 2(o)k 2797(centimetres)s 3933(abo)s 3(v)k 3(e)k +4539(the)s 4872(bottom)s 5595(left-hand)s 6499(corner)s 13(.)k +7245(These)s 7857(tw)s 2(o)k 8251(numbers)s 0 12471(are)m +347(called)s 975(the)s 240 fnt83 1323 12473(x)m 1489(coor)s 8(dinate)k +240 fnt82 2571 12471(and)m 2975(the)s 240 fnt83 3323 12473(y)m +3485(coor)s 8(dinate)k 240 fnt82 4567 12471(of)m 4838(the)s +5186(point.)s 480 12097(The)m 906(\207rst)s 1335(step)s 1770(in)s +2011(specifying)s 3057(a)s 3221(graphic)s 3988(object)s 4630(is)s +4837(to)s 5074(de\207ne)s 5712(a)s 240 fnt83 5876 12099(path)m +240 fnt82 6297 12097(.)m 6458(A)s 6686(path)s 7152(can)s +7539(be)s 7818(thought)s 8608(of)s 8876(as)s 0 11809(the)m +349(track)s 888(of)s 1161(a)s 1328(pen)s 1733(mo)s 3(ving)k +2516(o)s 3(v)k 3(er)k 2996(the)s 3346(page.)s +3963(The)s 4393(pen)s 4797(may)s 5265(be)s 5548(up)s +5842(\(not)s 6289(dra)s 3(wing\))k 7199(or)s 7460(do)s 6(wn)k +8045(\(dra)s 3(wing)k 8960(a)s 0 11521(line)m 414(or)s +673(curv)s 3(e\))k 1329(as)s 1579(it)s 1771(mo)s 3(v)k 3(es.)k +2554(The)s 2982(entire)s 3581(path)s 4050(is)s 4260(a)s +4426(sequence)s 5359(of)s 5630(the)s 5978(follo)s 6(wing)k +6955(items:)s 240 fnt83 1847 11149(x)m 2013(y)s 220 fnt35 +2175 11144(mo)m 3(v)k 5(eto)k 240 fnt82 3120 11147(Lift)m +3537(the)s 3885(pen)s 4288(and)s 4692(mo)s 3(v)k 3(e)k +5274(it)s 5466(to)s 5705(the)s 6053(indicated)s 6987(point.)s +240 fnt83 2036 10790(x)m 2202(y)s 220 fnt35 2364 10785(lineto)m +240 fnt82 3120 10788(Put)m 3557(the)s 3963(pen)s 4424(do)s 6(wn)k +5066(and)s 5528(dra)s 3(w)k 6115(a)s 6339(straight)s +7173(line)s 7645(to)s 7942(the)s 8348(indicat)s 8998(-)s +3120 10500(ed)m 3404(point.)s 240 fnt83 702 10141(x)m 868(y)s +1030(r)s 1188(angle1)s 1879(angle2)s 220 fnt35 2580 10136(arc)m +240 fnt82 3120 10139(Put)m 3502(the)s 3853(pen)s 4259(do)s 6(wn)k +4846(and)s 5253(dra)s 3(w)k 5785(a)s 5954(circular)s +6745(arc)s 7092(whose)s 7763(centre)s 8405(has)s 8779(co)s +8998(-)s 3120 9851(ordinates)m 240 fnt83 4058 9853(x)m 240 fnt82 +4235 9851(and)m 240 fnt83 4650 9853(y)m 240 fnt82 4823 9851(and)m +5238(whose)s 5917(radius)s 6563(is)s 240 fnt83 6784 9853(r)m +240 fnt82 6882 9851(.)m 7057(The)s 7496(arc)s 7851(be)s 3(gins)k +8535(at)s 8778(the)s 3120 9563(angle)m 240 fnt83 3727 9565(angle1)m +240 fnt82 4451 9563(measuring)m 5533(counterclockwise)s 7295(from)s 7852(the)s +8233(point)s 8818(di)s 8998(-)s 3120 9275(rectly)m 3714(to)s +3949(the)s 4294(right)s 4801(of)s 5069(the)s 5413(centre,)s +6100(and)s 6500(proceeds)s 7397(counterclockwise)s 3120 8987(to)m 240 fnt83 +3361 8989(angle2)m 240 fnt82 4002 8987(.)m 4168(If)s 4401(the)s +4751(arc)s 5098(is)s 5310(not)s 5679(the)s 6029(\207rst)s +6462(thing)s 7010(on)s 7309(the)s 7660(path,)s 8181(a)s +8350(straight)s 3120 8699(line)m 3549(will)s 3990(be)s 4287(dra)s 3(wn)k +4954(connecting)s 6072(the)s 6435(current)s 7186(point)s 7753(to)s +8007(the)s 8370(start)s 8855(of)s 3120 8411(the)m 3468(arc.)s +240 fnt83 589 8102(x)m 755(y)s 917(r)s 1075(angle1)s +1766(angle2)s 220 fnt35 2467 8097(arcn)m 240 fnt82 3120 8100(As)m +3437(for)s 3775(arc,)s 4173(b)s 4(ut)k 4535(the)s +4883(arc)s 5227(goes)s 5717(clockwise)s 6729(from)s 240 fnt83 +7253 8102(angle1)m 240 fnt82 7944 8100(to)m 240 fnt83 8183 8102(angle2)m +240 fnt82 8824 8100(.)m 220 fnt35 1955 7738(closepath)m 240 fnt82 +3120 7741(Dra)m 3(w)k 3702(a)s 3868(straight)s 4644(line)s +5058(back)s 5571(to)s 5810(the)s 6158(point)s 6710(most)s +7235(recently)s 8058(mo)s 3(v)k 3(ed)k 8762(to.)s +0 7367(The)m 428(\207rst)s 860(item)s 1344(should)s 2042(al)s 2(w)k 2(ays)k +2753(be)s 3036(a)s 220 fnt35 3202 7364(mo)m 3(v)k 5(eto)k +240 fnt82 3907 7367(,)m 220 fnt35 4015 7364(arc)m 240 fnt82 +4315 7367(,)m 4422(or)s 220 fnt35 4682 7364(arcn)m 240 fnt82 +5095 7367(.)m 5259(It)s 5465(should)s 6162(be)s 6445(clear)s +6968(from)s 7493(this)s 7889(that)s 8308(the)s 8657(path)s +0 7079(gi)m 6(v)k 3(en)k 580(earlier:)s 220 fnt35 +480 6585(0 0 mo)m 3(v)k 5(eto)k 480 6297(0 ysiz)m 3(e lineto)k +480 6009(xsiz)m 3(e ysiz)k 3(e lineto)k 480 5721(xsiz)m 3(e 0 lineto)k +480 5433(closepath)m 240 fnt82 0 4937(traces)m 607(around)s 1330(the)s +1678(boundary)s 2637(of)s 2908(the)s 3256(base)s 3737(with)s +4219(the)s 4567(pen)s 4970(do)s 6(wn.)k 480 4563(Once)m +1039(a)s 1203(path)s 1670(is)s 1877(set)s 2200(up,)s +2545(we)s 2877(are)s 3222(ready)s 3805(to)s 240 fnt83 +4041 4565(paint)m 240 fnt82 4595 4563(it)m 4785(onto)s 5262(the)s +5607(page.)s 6221(There)s 6832(are)s 7176(tw)s 2(o)k +7584(choices:)s 8405(we)s 8737(can)s 0 4275(either)m 240 fnt83 +618 4277(str)m 10(ok)k 2(e)k 240 fnt82 1259 4275(it,)m +1514(which)s 2172(means)s 2850(to)s 3105(display)s 3866(it)s +4074(as)s 4340(described;)s 5383(or)s 5658(we)s 6009(can)s +240 fnt83 6414 4277(\207ll)m 240 fnt82 6742 4275(it,)m 6997(which)s +7655(means)s 8333(to)s 8588(paint)s 0 3987(e)m 6(v)k 3(erything)k +1067(inside)s 1694(it)s 1886(gre)s 3(y)k 2362(or)s +2621(black.)s 3303(F)s 3(or)k 3692(stroking)s 4529(the)s +4877(tw)s 2(o)k 5287(main)s 5822(options)s 6578(are)s +240 fnt83 1581 3484(length)m 220 fnt35 2234 3479(setline)m 4(width)k +240 fnt82 3600 3482(The)m 4028(pen)s 4431(will)s 4857(dra)s 3(w)k +5386(lines)s 5888(of)s 6159(the)s 6507(gi)s 6(v)k 3(en)k +7087(width.)s 220 fnt35 1553 2974([)m 240 fnt83 1668 2979(length)m +220 fnt35 2321 2974(])m 2430(0)s 2605(setdash)s 240 fnt82 +3600 2977(The)m 4034(pen)s 4444(will)s 4876(dra)s 3(w)k +5412(dashed)s 6142(lines)s 6650(when)s 7233(it)s 7432(is)s +7648(do)s 6(wn,)k 8289(with)s 8778(the)s 3600 2689(dashes)m +4289(each)s 4784(of)s 5055(the)s 5403(gi)s 6(v)k 3(en)k +5983(length.)s 0 2186(These)m 627(options)s 1383(are)s 1730(follo)s 6(wed)k +2632(by)s 2926(the)s 3274(w)s 2(ord)k 220 fnt35 +3822 2183(strok)m 4(e)k 240 fnt82 4408 2186(.)m 4572(So,)s +4932(for)s 5270(e)s 3(xample,)k 220 fnt35 480 1688({ 0 0 mo)m 3(v)k 5(eto xsiz)k 3(e 0 lineto)k +480 1400( 2 pt setline)m 4(width [ 5 pt ] 0 setdash strok)k 4(e)k 480 1112(})m 480 824(@Gr)m 2(aphic { 3i @Wide })k +240 fnt82 0 328(has)m 370(result)s 4320 0 0 0 240 288 60 480 38 LoutGr2 +0 0 moveto xsize 0 lineto +2 pt setlinewidth [ 5 pt ] 0 setdash stroke +grestore + +grestore + +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 66 72 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +%%+ font Times-Italic +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +0 LoutMargSet +grestore +240 fnt84 0 13840(66)m 240 fnt83 6081 13843(Chapter)m 6931(3.)s +7205(Pr)s 8(ede\207ned)k 8300(symbols)s 240 fnt82 480 12940(When)m +1106(\207lling)s 1726(in)s 1965(the)s 2310(re)s 3(gion)k +2971(enclosed)s 3862(by)s 4153(a)s 4315(path,)s 4830(the)s +5175(main)s 5706(option)s 6371(is)s 220 fnt35 6578 12937(setg)m 2(r)k 2(a)k 6(y)k +240 fnt82 7286 12940(,)m 7389(which)s 8027(determines)s 0 12652(the)m +348(shade)s 949(of)s 1220(gre)s 3(y)k 1696(to)s +1935(use,)s 2361(on)s 2658(a)s 2824(scale)s 3357(from)s +3881(0)s 4056(\(black\))s 4781(to)s 5020(1)s 5175(\(white\).)s +6028(So,)s 6388(for)s 6726(e)s 3(xample,)k 220 fnt35 +480 12154({ 0 0 mo)m 3(v)k 5(eto xsiz)k 3(e 0 lineto 0 ysiz)k 3(e lineto closepath)k +480 11866( 0.8 setg)m 2(r)k 2(a)k 6(y \207ll)k 480 11578(})m +480 11290(@Gr)m 2(aphic)k 480 11002({ 2c @Wide 2c @High })m 240 fnt82 0 10503(has)m +370(result)s 1134 1134 0 1134 240 288 60 480 9079 LoutGr2 +0 0 moveto xsize 0 lineto 0 ysize lineto closepath +0.8 setgray fill +grestore + +grestore +480 8363(There)m 1107(are)s 1468(man)s 3(y)k +2066(other)s 2631(options.)s 3515(The)s 3957(v)s 6(alue)k +4540(of)s 4825(the)s 5188(left)s 5579(parameter)s 6608(of)s +220 fnt35 6893 8360(@Gr)m 2(aphic)k 240 fnt82 7952 8363(may)m +8432(be)s 8729(an)s 3(y)k 0 8075(fragment)m 922(of)s +1193(the)s 1541(PostScript)s 2583(page)s 3091(description)s 4210(language)s +5130([1)s 5304(].)s 5547(Here)s 6067(are)s 6414(tw)s 2(o)k +6824(other)s 7375(e)s 3(xamples:)k 220 fnt35 480 7578(xsiz)m 3(e)k +1030(2)s 1203(div)s 240 fnt82 0 7124(denoting)m 891(a)s +1057(length)s 1712(equal)s 2285(to)s 2524(half)s 2967(the)s +3315(horizontal)s 4339(size)s 4766(of)s 5037(the)s 5385(base,)s +5917(and)s 220 fnt35 480 6625(gsa)m 4(v)k 5(e)k +1110(\207ll)s 1363(g)s 2(restore)k 2219(strok)s 4(e)k +240 fnt82 0 6126(which)m 648(both)s 1138(\207lls)s 1554(and)s +1965(strok)s 2(es)k 2698(the)s 3053(path.)s 3636(Since)s +4230(Basser)s 4933(Lout)s 5452(does)s 5949(not)s 6322(check)s +6948(that)s 7373(the)s 7728(left)s 8112(parameter)s 0 5838(is)m +209(v)s 6(alid)k 737(PostScript,)s 1824(it)s 2014(is)s +2222(possible)s 3061(to)s 3298(cause)s 3883(mysterious)s 4981(errors)s +5586(in)s 5828(the)s 6174(printing)s 6982(de)s 6(vice,)k +7705(resulting)s 8592(in)s 8833(no)s 0 5550(output,)m 708(if)s +914(an)s 1186(incorrect)s 2083(v)s 6(alue)k 2640(is)s +2839(gi)s 6(v)k 3(en.)k 3515(It)s 3709(is)s +3908(a)s 4063(good)s 4590(idea)s 5037(to)s 5265(encapsulate)s +6425(graphics)s 7275(objects)s 7992(in)s 8224(carefully)s 0 5262(tested)m +635(de\207nitions,)s 1772(lik)s 2(e)k 2205(those)s 2786(of)s +3078(the)s 3446(Diag)s 3985(\207gure)s 4619(dra)s 3(wing)k +5473(package)s 6334([4)s 6527(,)s 6654(Chapter)s 7492(9],)s +7818(to)s 8078(be)s 8380(sure)s 8855(of)s 0 4974(a)m 4(v)k 4(oiding)k +883(these)s 1430(errors.)s 480 4600(PostScript)m 1543(e)s 3(xperts)k +2302(may)s 2789(\207nd)s 3241(the)s 3610(follo)s 6(wing)k +4608(information)s 5814(helpful)s 6567(when)s 7164(designing)s 8170(adv)s 6(anced)k +0 4312(graphics)m 861(features.)s 1780(The)s 2208(left)s 2585(parameter)s +3599(of)s 220 fnt35 3870 4309(@Gr)m 2(aphic)k 240 fnt82 +4914 4312(may)m 5380(ha)s 4(v)k 3(e)k 5881(tw)s 2(o)k +6291(parts,)s 6862(separated)s 7822(by)s 220 fnt35 8116 4309(//)m +240 fnt82 8241 4312(:)m 220 fnt35 480 3804({)m 240 fnt83 +604 3809(\207r)m 2(st)k 1038(part)s 220 fnt35 1501 3804(//)m +240 fnt83 1686 3809(second)m 2417(part)s 220 fnt35 2880 3804(} @Gr)m 2(aphic)k +240 fnt83 4058 3809(object)m 240 fnt82 0 3308(If)m 230(there)s +763(is)s 973(no)s 220 fnt35 1266 3305(//)m 240 fnt82 +1391 3308(,)m 1498(the)s 1846(second)s 2569(part)s 3000(is)s +3210(tak)s 2(en)k 3783(to)s 4022(be)s 4304(empty)s 15(.)k +5051(The)s 5479(PostScript)s 6521(output)s 7193(has)s 7563(the)s +7911(form)s 220 fnt35 480 2851(gsa)m 4(v)k 5(e)k +240 fnt83 480 2568(x)m 646(y)s 220 fnt35 808 2563(tr)m 2(anslate)k +240 fnt83 480 2280(Code)m 1039(whic)s 3(h)k 1663(de\207nes)s +220 fnt35 2383 2275(xsiz)m 3(e)k 240 fnt83 2872 2280(,)m +220 fnt35 2965 2275(ysiz)m 3(e)k 240 fnt83 3454 2280(,)m +220 fnt35 3547 2275(xmar)m -3(k)k 240 fnt83 4148 2280(,)m +220 fnt35 4241 2275(ymar)m -3(k)k 240 fnt83 4842 2280(,)m +220 fnt35 4935 2275(ft)m 240 fnt83 5053 2280(,)m 220 fnt35 +5146 2275(vs)m 240 fnt83 5359 2280(,)m 5452(and)s 220 fnt35 +5878 2275(sp)m 480 1987(gsa)m 4(v)k 5(e)k 240 fnt83 +480 1704(\207r)m 2(st)k 914(part)s 220 fnt35 480 1411(g)m 2(restore)k +240 fnt83 480 1128(Code)m 1039(whic)s 3(h)k 1663(r)s 8(ender)k 2(s)k +2439(the)s 2784(right)s 3313(par)s 3(ameter)k 4372(in)s +4612(tr)s 3(anslated)k 5645(coor)s 8(dinates)k 480 840(second)m +1211(part)s 220 fnt35 480 547(g)m 2(restore)k +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 67 73 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Italic +%%+ font Times-Bold +%%+ font Symbol +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +1 LoutMargSet +grestore +240 fnt83 0 13843(3.38.)m 574(@Gr)s 3(aphic)k 240 fnt84 +8831 13840(67)m 240 fnt82 0 13205(where)m 240 fnt83 628 13207(x)m +240 fnt78 733 13199(,)m 240 fnt83 802 13207(y)m 240 fnt82 +952 13205(is)m 1149(the)s 1485(position)s 2300(of)s 2558(the)s +2894(lo)s 6(wer)k 3479(left)s 3843(corner)s 4501(of)s +4759(the)s 5095(base.)s 5671(Ha)s 4(ving)k 6412(tw)s 2(o)k +6810(parts)s 7312(permits)s 8066(brack)s 2(eting)k 0 12917(operations,)m +1112(lik)s 2(e)k 220 fnt35 1533 12914(sa)m 4(v)k 5(e)k +240 fnt82 2049 12917(and)m 220 fnt35 2462 12914(restore)m 240 fnt82 +3206 12917(or)m 220 fnt35 3474 12914(begin)m 240 fnt82 4065 12917(and)m +220 fnt35 4478 12914(end)m 240 fnt82 4832 12917(,)m 4949(to)s +5197(enclose)s 5979(an)s 6271(object.)s 7028(See)s 7438(the)s +7795(source)s 8484(\207le)s 8855(of)s 0 12629(the)m 348(Diag)s +866(package)s 1706(for)s 2044(e)s 3(xamples.)k 240 fnt84 +0 11836(3.39.)m 591(@PlainGraphic)s 240 fnt82 567 11359(The)m 220 fnt35 +1023 11356(@PlainGr)m 2(aphic)k 240 fnt82 2580 11359(symbol)m 3368(is)s +3606(a)s 4(v)k 3(ery)k 4211(rudimentary)s 5461(analogue)s +6408(for)s 6774(plain)s 7337(te)s 3(xt)k 7779(output)s +8479(of)s 8778(the)s 220 fnt35 0 11068(@Gr)m 2(aphic)k +240 fnt82 1037 11071(symbol)m 1789(for)s 2119(PostScript)s 3153(output.)s +3921(Its)s 4202(result)s 4784(is)s 4986(its)s 5254(right)s +5757(parameter)s 6763(printed)s 7490(on)s 7779(a)s 7937(background)s +0 10783(created)m 747(by)s 1041(repeated)s 1908(printings)s 2809(of)s +3080(its)s 3356(left)s 3733(parameter)s 9(,)k 4785(which)s +5427(must)s 5952(be)s 6234(a)s 6400(simple)s 7093(w)s 2(ord.)k +7747(F)s 3(or)k 8136(e)s 3(xample,)k 480 10278("." @PlainGraphic 5s @W)m 9(ide)k +0 9775(w)m 2(ould)k 676(produce)s 1525(\207v)s 3(e)k +1959(dots.)s 220 fnt35 2544 9772(@PlainGr)m 2(aphic)k 240 fnt82 +4096 9775(is)m 4328(used)s 4847(in)s 5112(the)s 220 fnt35 +5482 9772(tb)m 4(l)k 240 fnt82 5777 9775(table-dra)m 3(wing)k +7176(package)s 8038(to)s 8299(produce)s 0 9487(plain-te)m 3(xt)k +972(rules.)s 240 fnt84 0 8694(3.40.)m 591(@IncludeGraphic)s 2491(and)s +2932(@SysIncludeGraphic)s 240 fnt82 540 8217(These)m 1167(symbols)s 2016(instruct)s +2792(Lout)s 3304(to)s 3543(incorporate)s 4687(a)s 4853(separately)s +5875(created)s 6622(illustration:)s 220 fnt35 480 7716(@IncludeGr)m 2(aphic "m)k 3(ypor)k -8(tr)k 2(ait.eps")k +240 fnt82 0 7218(The)m 457(parameter)s 1500(is)s 1739(implementation-dependent;)s +4443(in)s 4715(Basser)s 5441(Lout)s 5982(it)s 6203(is)s +6442(an)s 6754(object)s 7427(whose)s 8124(v)s 6(alue)k +8721(is)s 8960(a)s 0 6930(simple)m 705(w)s 2(ord)k +1265(denoting)s 2168(the)s 2528(name)s 3114(of)s 3397(a)s +3575(\207le.)s 4056(This)s 4544(\207le)s 4917(should)s 5626(ideally)s +6342(be)s 6636(a)s 6814(PostScript)s 7868(EPS)s 8338(V)s 26(ersion)k +0 6642(3.0)m 345(\207le)s 696([1)s 870(],)s 1045(since)s +1582(then)s 2040(Lout)s 2542(will)s 2957(k)s 2(eep)k +3450(careful)s 4156(track)s 4684(of)s 4944(what)s 5459(resources)s +6401(are)s 6738(required)s 7581(for)s 7909(printing)s 8708(that)s +0 6354(\207le.)m 473(Ho)s 6(we)k 6(v)k 3(er)k 9(,)k +1437(an)s 3(y)k 1838(PostScript)s 2885(\207le)s 3250(containing)s +4317(the)s 220 fnt35 4669 6351(%%BoundingBo)m 6(x:)k 240 fnt82 +6464 6354(comment)m 7418(and)s 7826(not)s 8197(requiring)s 0 6066(unusual)m +800(resources)s 1753(is)s 1963(lik)s 2(ely)k 2559(to)s +2798(w)s 2(ork.)k 480 5692(The)m 924(result)s 1530(of)s +220 fnt35 1817 5689(@IncludeGr)m 2(aphic)k 240 fnt82 3584 5692(is)m +3811(an)s 4110(ordinary)s 4990(Lout)s 5518(object)s 6179(with)s +6677(marks)s 7328(through)s 8146(its)s 8439(centre.)s 0 5404(It)m +202(may)s 665(be)s 944(rotated,)s 1711(scaled,)s 2412(and)s +2813(generally)s 3753(treated)s 4456(lik)s 2(e)k 4865(an)s 3(y)k +5259(other)s 5807(object.)s 6552(Basser)s 7246(Lout)s 7755(determines)s +8850(its)s 0 5116(size)m 434(by)s 735(consulting)s 1792(the)s +2147(bounding)s 3113(box)s 3536(information)s 4728(in)s 4978(the)s +5333(\207le.)s 5809(If)s 6047(this)s 6450(cannot)s 7155(be)s +7444(found,)s 8117(a)s 8291(w)s 2(arning)k 0 4828(message)m +866(is)s 1076(printed)s 1811(and)s 2215(the)s 2563(result)s +3153(object)s 3797(has)s 4167(zero)s 4631(size.)s 220 fnt35 +480 4451(@IncludeGr)m 2(aphic)k 240 fnt82 2228 4454(searches)m 3085(the)s +3429(same)s 3973(directories)s 5027(that)s 220 fnt35 5442 4451(@Include)m +240 fnt82 6421 4454(does)m 6907(\(Section)s 7757(3.42\).)s 220 fnt35 +8416 4451(@Sys)m 240 fnt82 8998 4454(-)m 220 fnt35 0 4163(IncludeGr)m 2(aphic)k +240 fnt82 1562 4166(is)m 1806(the)s 2188(same)s 2769(as)s +220 fnt35 3053 4163(@IncludeGr)m 2(aphic)k 240 fnt82 4744 4166(,)m +4885(e)s 3(xcept)k 5600(that)s 6052(it)s 6278(searches)s +7172(only)s 7686(the)s 8068(directories)s 0 3878(searched)m 894(by)s +220 fnt35 1188 3875(@SysInclude)m 240 fnt82 2476 3878(.)m 480 3504(If)m +720(the)s 1079(\207le)s 1450(name)s 2035(ends)s 2536(in)s +2789(an)s 3(y)k 3197(of)s 220 fnt35 3478 3501(.gz)m +240 fnt82 3765 3504(,)m 220 fnt35 3883 3501(-gz)m 240 fnt82 +4182 3504(,)m 220 fnt35 4300 3501(.z)m 240 fnt82 4465 3504(,)m +220 fnt35 4582 3501(-z)m 240 fnt82 4759 3504(,)m 220 fnt35 +4877 3501(_z)m 240 fnt82 5103 3504(,)m 5220(or)s 220 fnt35 +5490 3501(.Z)m 240 fnt82 5680 3504(,)m 5798(the)s 6156(\207le)s +6528(will)s 6964(\207rst)s 7406(be)s 7699(uncompressed)s 0 3216(using)m +565(the)s 220 fnt35 906 3213(gunzip)m 240 fnt82 1597 3216(command)m +2592(into)s 3010(a)s 3169(temporary)s 4198(\207le)s 4552(called)s +220 fnt35 5173 3213(lout.eps)m 240 fnt82 5987 3216(in)m 6223(the)s +6564(current)s 7293(directory)s 15(.)k 8297(This)s 8765(\207le)s +0 2928(is)m 210(remo)s 3(v)k 3(ed)k 1099(immediately)s +2347(after)s 2843(it)s 3035(is)s 3245(copied)s 3941(into)s +4366(the)s 4714(output)s 5386(\207le.)s 240 fnt84 0 2135(3.41.)m +591(@Pr)s 4(ependGraphic and @SysPr)k 4(ependGraphic)k 240 fnt82 582 1658(These)m +1252(symbols,)s 2200(which)s 2885(may)s 3394(appear)s 4134(an)s 3(ywhere)k +5160(that)s 5621(a)s 5830(de\207nition)s 6847(or)s 220 fnt35 +7149 1655(@Use)m 240 fnt82 7857 1658(symbol)m 8660(may)s 0 1370(appear)m 9(,)k +738(tell)s 1101(Lout)s 1617(to)s 1860(include)s 2624(the)s +2976(contents)s 3828(of)s 4103(a)s 4273(\207le)s 4637(in)s +4884(the)s 5236(preamble)s 6185(of)s 6460(its)s 6740(output.)s +7520(F)s 3(or)k 7913(Basser)s 8614(Lout)s 0 1082(this)m +418(means)s 1102(that)s 1542(the)s 1912(\207le)s 2295(must)s +2843(contain)s 3626(PostScript)s 4690(\(and)s 5195(ideally)s 5921(it)s +6136(w)s 2(ould)k 6813(be)s 3(gin)k 7421(and)s +7847(end)s 8273(with)s 8778(the)s 220 fnt35 0 791(%%BeginResource)m +240 fnt82 1941 794(and)m 220 fnt35 2345 791(%%EndResource)m 240 fnt82 +4116 794(comments)m 5150(of)s 5421(DSC)s 5939(3.0\).)s 6482(F)s 3(or)k +6871(e)s 3(xample,)k 220 fnt35 480 293(@SysPrependGr)m 2(aphic { diagf)k 6(.lpg })k + +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 68 74 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +%%+ font Times-Italic +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +0 LoutMargSet +grestore +240 fnt84 0 13840(68)m 240 fnt83 6081 13843(Chapter)m 6931(3.)s +7205(Pr)s 8(ede\207ned)k 8300(symbols)s 240 fnt82 0 13205(appears)m +818(at)s 1088(the)s 1474(start)s 1981(of)s 2290(the)s +2676(Diag)s 3231(package;)s 4165(the)s 4551(\207le)s 220 fnt35 +4949 13202(diagf)m 6(.lpg)k 240 fnt82 5857 13205(contains)m 6743(a)s +6946(number)s 7775(of)s 8084(PostScript)s 0 12917(de\207nitions)m 1048(used)s +1532(by)s 1812(Diag)s 2317(for)s 2642(dra)s 3(wing)k +3462(diagrams.)s 4489(It)s 4680(sa)s 4(v)k 3(es)k +5229(a)s 5382(lot)s 5680(of)s 5938(space)s 6511(to)s +6737(include)s 7484(them)s 8008(just)s 8400(once)s 8894(at)s +0 12629(the)m 334(start)s 789(lik)s 2(e)k 1186(this,)s +1624(rather)s 2225(than)s 2679(with)s 3146(e)s 6(v)k 3(ery)k +3708(diagram.)s 220 fnt35 4640 12626(@PrependGr)m 2(aphic)k 240 fnt82 +6498 12629(and)m 220 fnt35 6887 12626(@SysPrependGr)m 2(aphic)k 240 fnt82 +0 12341(search)m 667(for)s 1005(the)s 1353(\207le)s 1714(in)s +1957(the)s 2305(same)s 2852(places)s 3500(as)s 220 fnt35 +3750 12338(@Include)m 240 fnt82 4732 12341(and)m 220 fnt35 5136 12338(@SysInclude)m +240 fnt82 6484 12341(respecti)m 6(v)k 3(ely)k 15(.)k +240 fnt84 0 11548(3.42.)m 591(@Include and @SysInclude)s 240 fnt82 562 11071(These)m +1212(symbols)s 2083(instruct)s 2882(Lout)s 3417(to)s 3678(temporarily)s +4869(switch)s 5572(to)s 5834(reading)s 6627(another)s 7426(\207le,)s +7861(whose)s 8552(name)s 0 10783(appears)m 781(in)s 1024(braces)s +1685(follo)s 6(wing)k 2662(the)s 3010(symbol.)s 3879(F)s 3(or)k +4268(e)s 3(xample,)k 220 fnt35 480 10282(@Include { "/usr/lout/f)m 6(ontdefs" })k +240 fnt82 0 9788(will)m 434(cause)s 1030(the)s 1386(contents)s +2243(of)s 2522(\207le)s 2892(/usr/lout/fontdefs)s 4596(to)s 4844(be)s +5134(read)s 5612(at)s 5852(the)s 6209(point)s 6769(it)s +6970(occurs.)s 7766(After)s 8338(that)s 8765(\207le)s 0 9500(is)m +214(read,)s 736(the)s 1089(current)s 1829(\207le)s 2194(is)s +2409(resumed.)s 3387(The)s 3819(included)s 4706(\207le)s 5071(may)s +5541(contain)s 6307(arbitrary)s 7186(Lout)s 7702(te)s 3(xt,)k +8169(including)s 0 9212(other)m 220 fnt35 566 9209(@Include)m 240 fnt82 +1564 9212(commands.)m 2780(The)s 3224(\207le)s 3600(is)s 3826(searched)s +4735(for)s 5089(\207rst)s 5535(in)s 5794(the)s 6157(current)s +6909(directory)s 15(,)k 7878(then)s 8363(in)s 8621(a)s +8803(se)s 8998(-)s 0 8924(quence)m 732(of)s 1001(standard)s +1866(places)s 2512(which)s 3151(are)s 3496(not)s 3859(necessarily)s +4972(the)s 5318(same)s 5862(places)s 6508(that)s 6923(databases)s +7888(are)s 8232(searched)s 0 8636(for)m 13(.)k 220 fnt35 +429 8633(@SysInclude)m 240 fnt82 1777 8636(searches)m 2637(the)s 2985(standard)s +3853(places)s 4501(only)s 15(.)k 240 fnt84 0 7843(3.43.)m +591(@BackEnd)s 1814(and)s 2255(the)s 2629(PlainT)s 22(ext)k +3663(and)s 4104(PDF)s 4623(back)s 5172(ends)s 240 fnt82 +547 7411(The)m 220 fnt35 983 7408(@Bac)m 4(kEnd)k 240 fnt82 +2136 7411(symbol,)m 2955(which)s 3605(tak)s 2(es)k 4153(no)s +4454(parameters,)s 5615(has)s 5993(for)s 6339(its)s 6623(result)s +7220(a)s 7394(string)s 7999(naming)s 8778(the)s 0 7123(back)m +523(end)s 938(currently)s 1865(in)s 2119(use.)s 2613(Three)s +3237(back)s 3761(ends)s 4262(are)s 4620(a)s 4(v)k 6(ailable,)k +5590(PostScript,)s 6690(PDF)s 7198(and)s 7613(PlainT)s 16(e)k 3(xt.)k +8698(The)s 0 6835(symbol)m 760(is)s 970(generally)s 1913(used)s +2410(lik)s 2(e)k 2822(this:)s 220 fnt35 480 6334(@Bac)m 4(kEnd @Case {)k +480 6046( PlainT)m 26(e)k 6(xt @Y)k 4(ield { ...)k 13( })k +480 5758( P)m 11(ostScr)k -3(ipt @Y)k 4(ield { ...)k 13( })k +480 5470( PDF @Y)m 4(ield { ...)k 13( })k 480 5182(})m 240 fnt82 +0 4688(to)m 255(obtain)s 926(dif)s 6(ferent)k 1817(objects)s +2561(depending)s 3628(on)s 3941(the)s 4305(back)s 4834(end.)s +5360(No)s 220 fnt35 5722 4685(else)m 240 fnt82 6192 4688(is)m +6418(required)s 7288(since)s 7851(these)s 8414(are)s 8778(the)s +0 4400(only)m 480(possible)s 1320(v)s 6(alues.)k 480 4026(When)m +1101(a)s 220 fnt35 1259 4023(@Case)m 240 fnt82 2037 4026(symbol)m +2789(has)s 220 fnt35 3151 4023(@Bac)m 4(kEnd)k 240 fnt82 +4287 4026(for)m 4617(its)s 4885(left)s 5253(parameter)s 6259(and)s +6655(the)s 6994(left)s 7363(parameter)s 8369(of)s 8631(each)s +220 fnt35 0 3735(@Y)m 4(ield)k 240 fnt82 768 3738(symbol)m +1544(within)s 2228(it)s 2435(consists)s 3259(of)s 3546(a)s +3728(sequence)s 4676(of)s 4963(one)s 5381(or)s 5656(more)s +6218(literal)s 6844(w)s 2(ords)k 7494(\(including)s 220 fnt35 +8546 3735(else)m 240 fnt82 8940 3738(\),)m 0 3450(Lout)m 531(will)s +976(optimize)s 1888(by)s 2201(e)s 6(v)k 6(aluating)k +3258(the)s 220 fnt35 3625 3447(@Case)m 240 fnt82 4432 3450(symbol)m +5211(at)s 5463(the)s 5830(time)s 6330(it)s 6541(is)s +6771(read.)s 7365(This)s 7861(optimization)s 0 3162(ensures)m 789(that)s +1228(there)s 1782(is)s 2013(only)s 2514(a)s 2701(small)s +3294(once-only)s 4326(performance)s 5610(penalty)s 6389(for)s 6748(multiple)s +7621(back)s 8155(ends,)s 8722(and)s 0 2874(it)m 206(permits)s +987(these)s 220 fnt35 1548 2871(@Case)m 240 fnt82 2350 2874(symbols)m +3213(\(b)s 4(ut)k 3668(no)s 3976(other)s 4541(symbols\))s +5481(to)s 5734(appear)s 6446(within)s 7128(the)s 7490(object)s +8149(follo)s 6(wing)k 220 fnt35 0 2583(@Include)m 240 fnt82 +982 2586(and)m 220 fnt35 1386 2583(@PrependGr)m 2(aphic)k 240 fnt82 +3259 2586(symbols.)m 480 2212(The)m 918(PlainT)s 16(e)k 3(xt)k +1899(back)s 2423(end)s 2837(dif)s 6(fers)k 3515(from)s +4050(the)s 4409(PostScript)s 5461(one)s 5874(in)s 6128(tw)s 2(o)k +6548(main)s 7094(respects.)s 8038(First,)s 8593(there)s 0 1924(is)m +226(ef)s 6(fecti)k 6(v)k 3(ely)k 1302(just)s +1724(one)s 2143(font:)s 2711(although)s 3622(all)s 3932(the)s +4297(font)s 4759(commands)s 5864(w)s 2(ork)k 6431(e)s 3(xactly)k +7189(as)s 7456(usual,)s 8085(the)s 3(y)k 8565(don')s 4(t)k +0 1636(actually)m 817(change)s 1558(an)s 3(ything.)k 2565(Each)s +3107(character)s 4049(in)s 4299(this)s 4702(font)s 5155(is)s +5372(tak)s 2(en)k 5953(to)s 6199(be)s 6488(one)s +6898(tenth)s 7440(of)s 7719(one)s 8128(inch)s 8605(wide)s +0 1348(and)m 404(20)s 699(points)s 1335(high.)s 1925(Second,)s +2737(the)s 3085(output)s 3757(is)s 3967(an)s 4250(ordinary)s +5114(te)s 3(xt)k 5529(\207le,)s 5941(not)s 6307(a)s +6473(PostScript)s 7515(\207le.)s 480 974(Clearly)m 15(,)k 1306(with)s +1820(ordinary)s 2716(te)s 3(xt)k 3162(output)s 3866(the)s +4246(possibility)s 5327(of)s 5630(adv)s 6(anced)k 6618(graphics)s +7510(features)s 8348(such)s 8876(as)s 0 686(rotation)m 829(and)s +1262(scaling)s 2022(is)s 2261(curtailed.)s 3290(Ne)s 6(v)k 3(ertheless,)k +4651(all)s 4974(symbols)s 5852(ha)s 4(v)k 3(e)k +6383(well-de\207ned)s 7665(\(possibly)s 8626(null\))s 0 398(ef)m 6(fects)k +706(in)s 976(the)s 1351(PlainT)s 16(e)k 3(xt)k +2348(back)s 2888(end,)s 3368(so)s 3661(there)s 4221(is)s +4457(no)s 4777(additional)s 5815(danger)s 6553(of)s 6851(crashing)s +7741(the)s 8116(system)s 8867(or)s 0 110(obtaining)m 957(grossly)s +1702(unreasonable)s 3020(output)s 3692(by)s 3986(a)s 4152(change)s +4886(to)s 5125(PlainT)s 16(e)k 3(xt.)k +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 69 75 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Italic +%%+ font Times-Bold +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +1 LoutMargSet +grestore +240 fnt83 0 13843(3.43.)m 574(@Bac)s 4(kEnd)k 1720(and)s +2146(the)s 2491(PlainT)s 22(e)k 4(xt)k 3458(and)s +3884(PDF)s 4417(bac)s 4(k)k 4929(ends)s 240 fnt84 +8832 13840(69)m 240 fnt82 480 13249(The)m 905(PlainT)s 16(e)k 3(xt)k +1872(back)s 2382(end)s 2783(is)s 2990(obtained)s 3869(by)s +4160(the)s 220 fnt35 4505 13246(-p)m 240 fnt82 4749 13249(option)m +5415(to)s 5651(Basser)s 6345(Lout.)s 6958(The)s 7383(character)s +8314(size)s 8737(can)s 0 12961(be)m 282(changed)s 1138(by)s +1432(adding)s 2137(tw)s 2(o)k 2547(lengths)s 3289(to)s +3528(the)s 220 fnt35 3876 12958(-p)m 240 fnt82 4123 12961(option,)m +4842(lik)s 2(e)k 5254(this:)s 220 fnt35 480 12464(lout -p0.1i12p ...)m +240 fnt82 0 11968(which)m 650(in)s 9(v)k 4(ok)k 2(es)k +1439(the)s 1795(PlainT)s 16(e)k 3(xt)k 2773(back)s +3294(end)s 3706(with)s 4196(each)s 4699(character)s 5641(being)s +6234(0.1)s 6577(inches)s 7247(wide)s 7776(and)s 8188(12)s +8490(points)s 0 11680(high.)m 595(Ho)s 6(we)k 6(v)k 3(er)k 9(,)k +1561(e)s 3(xperience)k 2655(suggests)s 3523(that)s 3947(the)s +4301(best)s 4752(approach)s 5691(is)s 5907(to)s 6152(de\207ne)s +6799(all)s 7098(horizontal)s 8128(lengths)s 8876(as)s 0 11392(multiples)m +943(of)s 1218(the)s 220 fnt35 1569 11389(s)m 240 fnt82 +1736 11392(unit)m 2171(\(the)s 2602(width)s 3208(of)s 3482(a)s +3652(space,)s 4293(hence)s 4911(the)s 5262(width)s 5868(of)s +6143(all)s 6439(characters\))s 7538(and)s 7945(to)s 8188(de\207ne)s +8833(all)s 0 11104(v)m 3(ertical)k 777(lengths)s 1530(as)s +1791(multiples)s 2742(of)s 3023(the)s 220 fnt35 3382 11101(f)m +240 fnt82 3511 11104(unit)m 3954(\(the)s 4391(font)s 4847(size,)s +5336(equal)s 5920(to)s 6169(the)s 6528(height)s 7197(of)s +7479(e)s 6(v)k 3(ery)k 8066(character\),)s 0 10816(and)m +404(not)s 770(to)s 1009(change)s 1743(the)s 2091(character)s +3025(size)s 3452(in)s 3695(the)s 4043(command)s 5045(line.)s +480 10442(There)m 1098(is)s 1314(a)s 220 fnt35 1486 10439(-P)m +240 fnt82 1762 10442(option)m 2437(which)s 3085(is)s 3301(identical)s +4184(with)s 4671(the)s 220 fnt35 5025 10439(-p)m 240 fnt82 +5278 10442(option)m 5953(e)s 3(xcept)k 6640(that)s 7064(it)s +7262(inserts)s 7942(a)s 8114(form-feed)s 0 10154(character)m 934(between)s +1788(each)s 2283(tw)s 2(o)k 2693(components)s 3901(of)s +4172(the)s 4520(output,)s 5239(b)s 4(ut)k 5601(not)s +5967(before)s 6633(the)s 6981(\207rst)s 7412(or)s 7671(after)s +8167(the)s 8515(last.)s 480 9780(The)m 911(PDF)s 1412(back)s +1928(end)s 2336(is)s 2549(obtained)s 3435(by)s 3732(typing)s +220 fnt35 4401 9777(lout -Z)m 240 fnt82 5017 9780(.)m 5185(It)s +5393(is)s 5607(similar)s 6332(to)s 6575(PostScript)s 7620(b)s 4(ut)k +7986(much)s 8579(more)s 0 9492(limited)m 755(in)s 1019(functionality)s 15(.)k +2411(Consult)s 3237(a)s 3425(separate)s 4284(document)s 5309(distrib)s 4(uted)k +6407(with)s 6910(Lout)s 7444(for)s 7803(further)s 8534(infor)s +8998(-)s 0 9204(mation.)m 240 fnt84 0 8461(3.44.)m 591(@V)s 24(erbatim and @RawV)k 24(erbatim)k +240 fnt82 543 8029(These)m 1173(symbols)s 2026(instruct)s 2805(Lout)s +3321(to)s 3563(read)s 4036(the)s 4387(follo)s 6(wing)k +5367(te)s 3(xt)k 5786(\(enclosed)s 6763(in)s 7010(braces\))s +7751(v)s 3(erbatim,)k 8708(that)s 0 7741(is,)m 266(turning)s +1010(of)s 6(f)k 1354(all)s 1647(special)s 2365(character)s +3299(meanings.)s 4380(F)s 3(or)k 4769(e)s 3(xample,)k +220 fnt35 480 7240(@V)m 17(erbatim { "hello" })k 240 fnt82 0 6746(produces)m +480 6243("hello")m 220 fnt35 0 5787(@V)m 17(erbatim)k 240 fnt82 +1178 5790(ignores)m 1983(all)s 2325(characters)s 3393(after)s 3938(the)s +4336(opening)s 5210(brace)s 5833(up)s 6175(to)s 6464(b)s 4(ut)k +6875(not)s 7291(including)s 8297(the)s 8695(\207rst)s 0 5502(non-white-space)m +1654(character)s 13(.)k 220 fnt35 2697 5499(@Ra)m 4(wV)k 17(erbatim)k +240 fnt82 4278 5502(dif)m 6(fers)k 4964(from)s 220 fnt35 +5506 5499(@V)m 17(erbatim)k 240 fnt82 6653 5502(only)m 7151(in)s +7413(that)s 7849(it)s 8059(ignores)s 8833(all)s 0 5214(characters)m +1018(after)s 1514(the)s 1862(opening)s 2687(brace)s 3261(up)s +3554(to)s 3793(b)s 4(ut)k 4155(not)s 4521(including)s +5479(the)s 5827(\207rst)s 6258(non-white-space)s 7894(character)s 9(,)k +8867(or)s 0 4926(up)m 302(to)s 551(and)s 965(including)s +1931(the)s 2289(\207rst)s 2730(ne)s 6(wline)k 3547(character)s 9(,)k +4528(whiche)s 6(v)k 3(er)k 5585(comes)s 6257(\207rst.)s +6802(This)s 7287(v)s 6(ariant)k 8014(is)s 8234(useful)s +8883(in)s 0 4638(cases)m 555(such)s 1051(as)s 220 fnt35 +480 4187(@Ra)m 4(wV)k 17(erbatim {)k 480 3899( v)m 5(ar x:)k 11( Real)k +480 3611(begin)m 480 3323(})m 240 fnt82 0 2829(where)m 662(the)s +1033(\207rst)s 1486(line)s 1923(of)s 2217(the)s 2587(v)s 3(erbatim)k +3516(te)s 3(xt)k 3954(be)s 3(gins)k 4649(with)s +5154(white)s 5763(space)s 6373(which)s 7038(w)s 2(ould)k +7715(be)s 8020(ignored)s 8832(by)s 220 fnt35 0 2538(@V)m 17(erbatim)k +240 fnt82 1069 2541(.)m 1232(Both)s 1754(symbols)s 2602(ignore)s +3268(all)s 3560(white)s 4146(spaces)s 4820(at)s 5051(the)s +5398(end)s 5801(of)s 6071(the)s 6418(v)s 3(erbatim)k +7323(te)s 3(xt,)k 7784(preceding)s 8778(the)s 0 2253(closing)m +744(brace.)s 240 fnt84 0 1460(3.45.)m 591(@Underline)s 240 fnt82 +533 1028(The)m 220 fnt35 953 1025(@Under)m -3(line)k 240 fnt82 +2160 1028(symbol)m 2912(underlines)s 3951(its)s 4219(right)s 4722(parameter)s 9(,)k +5767(b)s 4(ut)k 6121(only)s 6593(if)s 6802(that)s +7212(parameter)s 8218(is)s 8420(a)s 8578(w)s 2(ord)k +0 740(or)m 259(a)s 425(paragraph:)s 220 fnt35 480 239(W)m 6(e @Under)k -3(line { really do } mean this)k 3(.)k + +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 70 76 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +%%+ font Times-Italic +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +0 LoutMargSet +grestore +240 fnt84 0 13840(70)m 240 fnt83 6081 13843(Chapter)m 6931(3.)s +7205(Pr)s 8(ede\207ned)k 8300(symbols)s 240 fnt82 0 13205(produces)m +480 12702(W)m 19(e)k 849(really)s 849 1679 12678 12 ul +1446(do)s 1739(mean)s +2314(this.)s 0 12199(It)m 204(is)s 412(not)s 776(possible)s +1614(to)s 1851(underline)s 2808(an)s 3089(arbitrary)s 3962(object)s +4604(using)s 5174(this)s 5568(symbol;)s 6383(the)s 220 fnt35 +6729 12196(@Under)m -3(line)k 240 fnt82 7942 12199(symbol)m 8700(will)s +0 11911(be)m 282(ignored)s 1071(if)s 1288(this)s 1684(is)s +1894(attempted.)s 480 11537(It)m 731(is)s 987(v)s 3(ery)k +1509(easy)s 2034(to)s 240 fnt83 2319 11539(de\207ne)m 240 fnt82 +2990 11537(a)m 3202(symbol)s 4008(which)s 4696(will)s 5168(underline)s +6173(an)s 6502(arbitrary)s 7423(object,)s 8160(using)s 8778(the)s +220 fnt35 0 11246(@Gr)m 2(aphic)k 240 fnt82 1045 11249(symbol.)m +1915(This)s 2393(raises)s 2988(the)s 3337(question)s 4207(of)s +4479(wh)s 1(y)k 220 fnt35 4946 11246(@Under)m -3(line)k +240 fnt82 6163 11249(is)m 6374(needed)s 7111(at)s 7345(all.)s +7748(The)s 8177(answer)s 8916(is)s 0 10961(that)m 220 fnt35 +418 10958(@Under)m -3(line)k 240 fnt82 1633 10961(has)m 2003(tw)s 2(o)k +2413(properties)s 3419(that)s 3837(distinguish)s 4944(it)s 5136(from)s +5660(symbols)s 6509(based)s 7112(on)s 220 fnt35 7409 10958(@Gr)m 2(aphic)k +240 fnt82 8393 10961(.)m 480 10587(First,)m 1021(when)s 220 fnt35 +1594 10584(@Under)m -3(line)k 240 fnt82 2806 10587(both)m 3286(contains)s +4130(a)s 4293(paragraph)s 5303(and)s 5704(is)s 5911(used)s +6404(within)s 7069(a)s 7232(paragraph,)s 8292(as)s 8539(in)s +8778(the)s 0 10299(e)m 3(xample)k 875(abo)s 3(v)k 3(e,)k +1561(the)s 1921(inner)s 2485(and)s 2901(outer)s 3465(paragraphs)s +4577(are)s 4937(mer)s 4(ged)k 5720(into)s 6158(one,)s +6623(permitting)s 7684(the)s 8045(underlined)s 0 10011(te)m 3(xt)k +412(to)s 647(break)s 1236(o)s 3(v)k 3(er)k +1711(se)s 6(v)k 3(eral)k 2430(lines.)s 3041(This)s +3513(is)s 3720(ho)s 6(w)k 4177(the)s 220 fnt35 +4522 10008(@F)m 6(ont)k 240 fnt82 5230 10011(symbol)m 5986(w)s 2(orks)k +6617(too,)s 7026(b)s 4(ut)k 7385(symbols)s 8230(based)s +8829(on)s 220 fnt35 0 9720(@Gr)m 2(aphic)k 240 fnt82 +1044 9723(do)m 1337(not)s 1703(permit)s 2386(this)s 2782(mer)s 4(ging.)k +480 9349(Second,)m 1292(Adobe)s 1987(font)s 2432(\207les)s 2881(specify)s +3625(the)s 3973(correct)s 4694(position)s 5522(and)s 5926(thickness)s +6867(of)s 7138(underlining)s 8294(for)s 8631(each)s 0 9061(font,)m +501(and)s 914(the)s 220 fnt35 1272 9058(@Under)m -3(line)k +240 fnt82 2496 9061(symbol)m 3266(follo)s 6(ws)k 4037(these)s +4593(speci\207cations.)s 6068(The)s 6505(font)s 6960(used)s 7466(is)s +7685(the)s 8043(font)s 8497(of)s 8778(the)s 0 8773(\207rst)m +431(object)s 1075(underlined,)s 2205(if)s 2422(it)s 2614(is)s +2824(a)s 2990(simple)s 3683(w)s 2(ord,)k 4280(or)s +4539(else)s 4966(the)s 5314(font)s 5759(of)s 6030(the)s +6378(enclosing)s 7348(paragraph.)s 240 fnt84 0 7980(3.46.)m 591(@P)s 2(ageLabel)k +240 fnt82 533 7503(The)m 220 fnt35 953 7500(@P)m 8(ageLabel)k +240 fnt82 2255 7503(symbol)m 3007(associates)s 4005(a)s 4164(page)s +4664(label)s 5176(in)s 5411(the)s 5751(PostScript)s 6786(output)s +7450(\207le)s 7804(with)s 8278(the)s 8618(page)s 0 7215(within)m +688(which)s 1350(\(or)s 1708(just)s 2133(before)s 2819(which\))s +3552(the)s 3920(symbol)s 4700(occurs,)s 5451(so)s 5737(that)s +6175(PostScript)s 7237(vie)s 6(wers)k 8045(are)s 8412(able)s +8887(to)s 0 6927(inde)m 3(x)k 587(the)s 939(page)s +1450(by)s 1748(this)s 2148(label.)s 2779(\(The)s 3290(label)s +3813(is)s 4026(printed)s 4765(in)s 5011(the)s 220 fnt35 +5363 6924(%%P)m 8(age)k 240 fnt82 6313 6927(comment)m 7266(preceding)s +8266(the)s 8618(page)s 0 6639(in)m 243(the)s 591(PostScript)s +1633(output)s 2305(\207le.\))s 2858(F)s 3(or)k 3247(e)s 3(xample,)k +220 fnt35 480 6138(@P)m 8(ageLabel iv)k 240 fnt82 0 5639(associates)m +1018(the)s 1379(label)s 220 fnt35 1910 5636(iv)m 240 fnt82 +2140 5639(with)m 2634(the)s 2995(page.)s 3623(The)s 4064(label)s +4595(may)s 5074(be)s 5368(an)s 5664(arbitrary)s 6551(object;)s +7260(if)s 7489(its)s 7778(v)s 6(alue)k 8358(is)s +8581(not)s 8960(a)s 0 5351(simple)m 693(w)s 2(ord,)k +1290(it)s 1482(will)s 1908(be)s 2190(replaced)s 3057(by)s +220 fnt35 3351 5348(?)m 240 fnt82 3459 5351(.)m 220 fnt35 +480 4974(@P)m 8(ageLabel)k 240 fnt82 1799 4977(is)m 2019(unrelated)s +2977(to)s 3226(Lout')s 13(s)k 3899(cross)s 4451(referencing)s +5602(mechanism;)s 6813(it)s 7016(is)s 7236(for)s 7585(communicating)s +0 4689(a)m 176(label)s 706(to)s 956(the)s 1315(PostScript)s +2368(output)s 3051(\207le,)s 3474(not)s 3851(to)s 4101(other)s +4662(parts)s 5188(of)s 5470(Lout.)s 6097(The)s 6536(result)s +7137(of)s 220 fnt35 7419 4686(@P)m 8(ageLabel)k 240 fnt82 +8739 4689(is)m 8960(a)s 0 4401(null)m 427(object.)s +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 71 77 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +%%+ font Helvetica +%%+ font Symbol +%%+ font Times-Italic +/pgsave save def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +1 LoutMargSet +grestore +480 fnt84 0 12955(Chapter)m 1819(4.)s 2400(Examples)s 240 fnt82 +0 12004(This)m 503(chapter)s 1294(presents)s 2156(some)s 2744(e)s 3(xamples)k +3723(tak)s 2(en)k 4324(from)s 4875(the)s 5251(v)s 6(arious)k +6028(packages)s 6983(a)s 4(v)k 6(ailable)k 7919(with)s +8429(Basser)s 0 11716(Lout.)m 661(The)s 1134(reader)s 1835(who)s +2346(masters)s 3171(these)s 3763(e)s 3(xamples)k 4759(will)s +5230(be)s 5557(well)s 6068(prepared)s 7007(to)s 7291(read)s +7805(the)s 8198(packages)s 0 11428(themselv)m 3(es.)k 1223(The)s +1650(e)s 3(xamples)k 2600(ha)s 4(v)k 3(e)k +3100(not)s 3465(been)s 3973(simpli\207ed)s 4986(in)s 5229(an)s 3(y)k +5625(w)s 2(ay)k 15(,)k 6113(since)s 6659(an)s +6941(important)s 7929(part)s 8359(of)s 8629(their)s 0 11140(purpose)m +814(is)s 1024(to)s 1263(sho)s 6(w)k 1817(Lout)s +2329(in)s 2572(actual)s 3197(practice.)s 240 fnt84 0 10347(4.1.)m +471(An)s 833(equation)s 1779(f)s 6(ormatting)k 2930(package)s +240 fnt82 480 9870(In)m 751(this)s 1162(section)s 1911(we)s +2261(describe)s 3128(the)s 3491(design)s 4189(and)s 4608(implementation)s +6180(of)s 6466(the)s 6829(Eq)s 7168(equation)s 8065(formatting)s +0 9582(package.)m 976(Equation)s 1925(formatting)s 3014(mak)s 2(es)k +3702(a)s 3896(natural)s 4642(\207rst)s 5101(e)s 3(xample,)k +6043(partly)s 6682(because)s 7523(its)s 7828(requirements)s 0 9294(ha)m 4(v)k 3(e)k +514(strongly)s 1366(in\210uenced)s 2435(the)s 2797(design)s 3493(of)s +3778(Lout,)s 4351(and)s 4769(partly)s 5394(because)s 6221(no)s +6528(cross)s 7084(references)s 8129(or)s 8402(g)s 1(alle)k 3(ys)k +0 9006(are)m 347(required.)s 480 8632(T)m 19(o)k 777(the)s +1122(author')s 13(s)k 1939(kno)s 6(wledge,)k 3088(Eq)s +3409(is)s 3615(the)s 3960(\207rst)s 4388(equation)s 5265(formatter)s +6209(to)s 6445(be)s 6723(implemented)s 8026(as)s 8273(a)s +8435(collec)s 8998(-)s 0 8344(tion)m 430(of)s 702(high-)s +1196(le)s 6(v)k 3(el)k 1707(de\207nitions.)s 2883(This)s +3360(approach)s 4295(has)s 4666(signi\207cant)s 5724(adv)s 6(antages:)k +6948(the)s 7297(basics)s 7933(of)s 8206(language)s 0 8056(and)m +426(layout)s 1106(are)s 1475(tri)s 6(vial,)k 2167(so)s +2456(the)s 2826(implementor)s 4129(can)s 4540(concentrate)s 5720(on)s +6039(\207ne-)s 6466(tuning;)s 7212(and)s 7638(the)s 8009(de\207nitions,)s +0 7768(being)m 585(readily)s 1302(a)s 4(v)k 6(ailable,)k +2261(can)s 2650(be)s 2932(impro)s 3(v)k 3(ed,)k +3950(e)s 3(xtended,)k 4918(or)s 5177(e)s 6(v)k 3(en)k +5677(replaced.)s 480 7394(As)m 808(described)s 1793(in)s 2048(the)s +2407(User')s 13(s)k 3079(Guide)s 3732([4)s 3925(],)s +4122(an)s 4416(equation)s 5309(is)s 5530(entered)s 6302(in)s +6557(a)s 6734(format)s 7441(based)s 8056(on)s 8364(the)s +8724(one)s 0 7106(introduced)m 1081(by)s 1375(the)s 1723(eqn)s +2126(language)s 3046(of)s 3317(K)s 6(ernighan)k 4378(and)s +4782(Cherry)s 5500([2)s 5693(]:)s 220 fnt35 480 6605(@Eq { { x sup 2 + y sup 2 } o)m 3(v)k 5(er 2 })k +240 fnt82 0 6107(The)m 428(result)s 1018(is)s 168 fnt78 +586 5702(2)m 240 fnt83 480 5642(x)m 240 fnt78 738 5634(+)m +168 fnt78 1041 5702(2)m 240 fnt83 939 5642(y)m 641 0 0 0 240 288 12 480 5544 LoutGr2 +0 0 moveto xsize 0 lineto 0.05 ft setlinewidth stroke +grestore + +grestore +240 fnt78 +743 5316(2)m 240 fnt82 0 4805(In)m 256(outline,)s 1027(the)s +1375(de\207nition)s 2349(of)s 2620(the)s 220 fnt35 2968 4802(@Eq)m +240 fnt82 3506 4805(symbol)m 4266(is)s 220 fnt35 480 4308(e)m 6(xpor)k -8(t sup o)k 3(v)k 5(er "+" "2" "<=")k +480 4020(def @Eq)m 480 3732( body @Body)m 480 3444({)m 480 3156( def sup precedence 60 left x r)m -3(ight y { ...)k 13( })k +480 2868( def o)m 3(v)k 5(er precedence 54 left x r)k -3(ight y { ...)k 13( })k +480 2580( def "2" { Base @F)m 6(ont "2" })k 480 2292( def "+" { {Symbol Base} @F)m 6(ont "+" })k 480 2004( def "<=" { {Symbol Base} @F)m 6(ont "\\243" })k +480 1716( ...)m 480 1140( Slope @F)m 6(ont 1.2f @Break 0c @Space @Body)k 480 852(})m 192 fnt84 +4442 0(71)m +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 72 78 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +%%+ font Times-Italic +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +0 LoutMargSet +grestore +240 fnt84 0 13840(72)m 240 fnt83 7017 13843(Chapter)m 7867(4.)s +8141(Examples)s 240 fnt82 0 13205(A)m 259(body)s 822(parameter)s +1865(is)s 2104(used)s 2630(to)s 2898(restrict)s 3649(the)s +4026(visibility)s 4958(of)s 5258(the)s 5635(equation)s 6545(formatting)s +7635(symbols)s 8514(\(there)s 0 12917(are)m 366(hundreds)s 1315(of)s +1606(them\).)s 2347(The)s 2794(equation)s 3695(as)s 3965(a)s +4151(whole)s 4811(is)s 5041(set)s 5386(in)s 5649(Slope)s +6269(\(i.e.)s 6704(Italic\))s 7341(font,)s 7853(and)s 8277(symbols)s +0 12629(such)m 515(as)s 220 fnt35 784 12626("2")m 240 fnt82 +1127 12629(and)m 220 fnt35 1550 12626("+")m 240 fnt82 1899 12629(are)m +2265(de\207ned)s 3048(when)s 3643(other)s 4213(fonts)s 4762(are)s +5128(needed.)s 5990(Precedences)s 7241(are)s 7608(used)s 8124(to)s +8383(resolv)s 3(e)k 0 12341(ambiguities)m 1170(such)s 1670(as)s +220 fnt35 1925 12338(a sup b o)m 3(v)k 5(er c)k 240 fnt82 +3291 12341(.)m 3459(Eq)s 3788(tak)s 2(es)k 4332(all)s +4630(spacing)s 5418(decisions)s 6363(on)s 6665(itself,)s 7252(so)s +7523(to)s 7766(pre)s 6(v)k 3(ent)k 8539(white)s +0 12053(space)m 574(typed)s 1151(by)s 1432(the)s 1767(user)s +2212(from)s 2723(interfering,)s 3824(the)s 4158(equation)s 5026(is)s +5223(enclosed)s 6105(in)s 220 fnt35 6335 12050(0c @Space)m 240 fnt82 +7465 12053(.)m 7616(W)s 19(e)k 7972(will)s 8384(discuss)s +0 11765(the)m 220 fnt35 348 11762(1.2f @Break)m 240 fnt82 1631 11765(later)m 13(.)k +480 11391(Thus)m 1015(ha)s 4(v)k 3(e)k 1521(we)s +1861(disposed)s 2762(of)s 3038(the)s 3391(language)s 4316(design)s +5003(part)s 5439(of)s 5715(the)s 6068(equation)s 6954(formatting)s +8020(problem;)s 8934(it)s 0 11103(remains)m 807(no)s 6(w)k +1268(to)s 1507(de\207ne)s 2148(the)s 2496(twenty)s 3201(or)s +3460(so)s 3726(symbols)s 4575(with)s 5057(parameters,)s 6211(and)s +6615(get)s 6967(the)s 7315(layout)s 7973(right.)s 480 10729(Ev)m 3(ery)k +1115(equation)s 2010(has)s 2393(an)s 240 fnt83 2690 10731(axis)m +240 fnt82 3070 10729(:)m 3250(an)s 3546(imaginary)s 4583(horizontal)s +5620(line)s 6048(through)s 6864(the)s 7225(centre)s 7878(of)s +8163(v)s 6(ariables,)k 0 10441(through)m 795(the)s 1136(bar)s +1494(of)s 1757(b)s 4(uilt-up)k 2556(fractions,)s 3491(and)s +3888(so)s 4146(on.)s 4543(W)s 19(e)k 4905(can)s +5287(satisfy)s 5956(this)s 6345(requirement)s 7552(by)s 7839(ensuring)s +8708(that)s 0 10153(the)m 362(result)s 966(of)s 1251(each)s +1761(symbol)s 2535(has)s 2919(a)s 3100(single)s 3741(ro)s 6(w)k +4175(mark,)s 4788(on)s 5099(the)s 5461(axis.)s 6025(F)s 3(or)k +6428(e)s 3(xample,)k 7356(the)s 7719(superscripting)s 0 9865(symbol)m +760(is)s 970(de\207ned)s 1733(as)s 1983(follo)s 6(ws:)k +220 fnt35 480 9366(def sup)m 480 9078( precedence 60)m 480 8790( associativity left)m 480 8502( left x)m +480 8214( named gap { @SupGap })m 480 7926( r)m -3(ight y)k 480 7638({)m 480 7350( @HContr)m 2(act @VContr)k 2(act {)k +480 7062( | @Smaller y)m 480 6774( ^/gap x)m 480 6486( })m 480 6198(})m 240 fnt82 +0 5704(The)m 220 fnt35 430 5701(@VContr)m 2(act)k 240 fnt82 +1684 5704(and)m 220 fnt35 2091 5701(^/)m 240 fnt82 2320 5704(symbols)m +3171(together)s 4017(ensure)s 4699(that)s 5119(the)s 5470(axis)s +5908(of)s 6181(the)s 6532(result)s 7124(is)s 7336(the)s +7687(axis)s 8125(of)s 8398(the)s 8749(left)s 0 5416(parameter)m 13(.)k +1119(A)s 220 fnt35 1363 5413(gap)m 240 fnt82 1795 5416(parameter)m +2823(has)s 3207(been)s 3730(pro)s 3(vided)k 4650(for)s +5002(v)s 6(arying)k 5794(the)s 6156(height)s 6828(of)s +7113(the)s 7475(superscript,)s 8644(with)s 0 5128(def)m 2(ault)k +709(v)s 6(alue)k 220 fnt35 1265 5125(@SupGap)m 240 fnt82 +2393 5128(de\207ned)m 3144(else)s 6(where)k 4137(as)s 220 fnt35 +4375 5125(0.40fk)m 240 fnt82 4973 5128(.)m 5124(It)s 5317(is)s +5515(important)s 6492(that)s 6898(such)s 7382(g)s 1(aps)k +7859(be)s 8128(e)s 3(xpressed)k 0 4840(in)m 232(units)s +736(that)s 1142(v)s 6(ary)k 1603(with)s 2073(the)s +2410(font)s 2843(size,)s 3309(so)s 3563(that)s 3969(the)s 3(y)k +4420(remain)s 5129(correct)s 5839(when)s 6403(the)s 6739(size)s +7154(changes.)s 8077(Collecting)s 0 4552(the)m 351(def)s 2(ault)k +1076(v)s 6(alues)k 1735(into)s 2164(symbols)s 3016(lik)s 2(e)k +220 fnt35 3432 4549(@SupGap)m 240 fnt82 4515 4552(ensures)m 5287(consistenc)s 3(y)k +6457(and)s 6865(assists)s 7529(when)s 8109(tuning)s 8778(the)s +0 4264(v)m 6(alues.)k 769(Here)s 1289(is)s 1499(another)s +2276(characteristic)s 3600(de\207nition:)s 220 fnt35 480 3814(def o)m 3(v)k 5(er)k +480 3526( precedence 54)m 480 3238( associativity left)m 480 2950( left x)m 480 2662( named gap { 0.2f })m 480 2374( r)m -3(ight y)k +480 2086({)m 480 1798( @HContr)m 2(act @VContr)k 2(act {)k 480 1510( |0.5r)m -8(t @OneCol x)k +480 1222( ^//gap @HLine)m 480 934( //gap |0.5r)m -8(t @OneCol y)k 480 646( })m 480 358(})m + +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 73 79 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Italic +%%+ font Times-Bold +%%+ font Helvetica +%%+ font Symbol +/pgsave save def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +1 LoutMargSet +grestore +240 fnt83 0 13843(4.1.)m 454(An)s 774(equation)s 1666(formatting)s +2730(pac)s 4(ka)k 2(g)k 2(e)k 240 fnt84 +8833 13840(73)m 240 fnt82 0 13205(Both)m 518(parameters)s 1611(are)s +1953(centred,)s 2758(since)s 3299(we)s 3629(do)s 3917(not)s +4278(kno)s 6(w)k 4853(which)s 5490(will)s 5911(be)s +6188(the)s 6530(wider;)s 7181(we)s 7511(use)s 220 fnt35 +7881 13202(@OneCol)m 240 fnt82 8887 13205(to)m 0 12917(mak)m 2(e)k +570(sure)s 1021(that)s 1437(the)s 1782(entire)s 2379(parameter)s +3390(is)s 3598(centred,)s 4405(not)s 4769(just)s 5171(its)s +5445(\207rst)s 5873(column,)s 6696(and)s 220 fnt35 7097 12914(@HContr)m 2(act)k +240 fnt82 8358 12917(ensures)m 0 12629(that)m 428(the)s 787(fraction)s +1597(will)s 2034(ne)s 6(v)k 3(er)k 2627(e)s 3(xpand)k +3385(to)s 3635(\207ll)s 3966(all)s 4269(the)s 4628(a)s 4(v)k 6(ailable)k +5547(space,)s 6196(as)s 6457(Lout)s 6980(objects)s 7719(ha)s 4(v)k 3(e)k +8231(a)s 8408(natural)s 0 12341(tendenc)m 3(y)k 915(to)s +1154(do)s 1447(\(Section)s 2300(2.6\).)s 220 fnt35 2843 12338(@HLine)m +240 fnt82 3690 12341(is)m 3900(a)s 4066(horizontal)s 5090(line)s +5504(of)s 5775(the)s 6123(width)s 6725(of)s 6996(the)s +7344(column:)s 220 fnt35 480 11840(def @HLine)m 480 11552( named line { "0.05 ft setline)m 4(width" })k +480 11264({ )m 480 10976( { "0 0 mo)m 3(v)k 5(eto xsiz)k 3(e 0 lineto" line "strok)k 4(e" } @Gr)k 2(aphic {})k +480 10688(})m 240 fnt82 0 10194(Here)m 520(we)s 855(are)s +1202(relying)s 1932(on)s 2229(the)s 2577(e)s 3(xpanding)k +3625(tendenc)s 3(y)k 4540(just)s 4945(mentioned.)s 480 9820(The)m +906(remaining)s 1925(symbols)s 2772(are)s 3116(quite)s 3647(similar)s +4367(to)s 4603(these)s 5148(ones.)s 5748(W)s 19(e)k +6114(conclude)s 7032(with)s 7511(a)s 7675(fe)s 6(w)k +8078(\207ne)s 8490(points)s 0 9532(of)m 271(mathematical)s 1612(typesetting)s +2714(mentioned)s 3782(by)s 4076(a)s 4242(leading)s 4999(authority)s 15(,)k +5954(D.)s 6231(E.)s 6481(Knuth)s 7137([5)s 7322(].)s +480 9158(Some)m 1090(symbols,)s 2004(such)s 2509(as)s 240 fnt78 +2768 9152(\243)m 240 fnt82 2963 9158(and)m 240 fnt78 3376 9152(\271)m +240 fnt82 3505 9158(,)m 3621(should)s 4327(ha)s 4(v)k 3(e)k +4837(a)s 5012(thick)s 5560(space)s 6156(on)s 6462(each)s +6966(side;)s 7472(others,)s 8172(such)s 8677(as)s 240 fnt78 +8937 9152(+)m 240 fnt82 0 8870(and)m 240 fnt78 397 8864(-)m +240 fnt82 525 8870(,)m 625(ha)s 4(v)k 3(e)k +1119(a)s 1278(medium)s 2115(space;)s 2751(others)s 3379(ha)s 4(v)k 3(e)k +3873(a)s 4032(thin)s 4454(space)s 5034(on)s 5324(the)s +5665(right)s 6169(only)s 15(.)k 6737(This)s 7206(w)s 2(ould)k +7854(be)s 8129(easy)s 8601(to)s 8833(do)s 0 8582(e)m 3(xcept)k +681(that)s 1099(these)s 1646(spaces)s 2321(are)s 2668(not)s +3034(w)s 2(anted)k 3781(in)s 4024(superscripts)s 5216(and)s +5620(subscripts:)s 168 fnt83 578 8135(n)m 168 fnt78 680 8129(+)m +793(1)s 240 fnt83 480 8037(r)m 240 fnt78 931 8029(-)m +1131(1)s 240 fnt82 0 7578(In)m 271(ef)s 6(fect,)k +929(the)s 1292(de\207nition)s 2281(of)s 2568(such)s 3079(symbols)s +3943(changes)s 4780(depending)s 5846(on)s 6159(the)s 6522(conte)s 3(xt;)k +7350(b)s 4(ut)k 7727(Lout)s 8254(does)s 8760(not)s +0 7290(permit)m 682(such)s 1176(a)s 1340(change.)s 2180(Luckily)s 15(,)k +3015(the)s 3361(so-called)s 4279(`style')s 4919(information)s 6102(set)s +6426(by)s 6718(the)s 220 fnt35 7064 7287(@F)m 6(ont)k +240 fnt82 7716 7290(,)m 220 fnt35 7821 7287(@Break)m 240 fnt82 +8617 7290(,)m 8722(and)s 220 fnt35 0 6999(@Space)m 240 fnt82 +891 7002(symbols)m 1734(can)s 2116(change)s 2844(in)s 3080(this)s +3470(w)s 2(ay)k 15(.)k 4009(Accordingly)s 15(,)k +5291(Eq)s 5608(uses)s 6065(the)s 220 fnt35 6406 6999(y)m +240 fnt82 6568 7002(unit,)m 7040(which)s 7676(is)s 7879(part)s +8304(of)s 8568(style,)s 0 6714(for)m 338(these)s 885(spaces:)s +220 fnt35 480 6213(def @MedGap { 0.20y })m 480 5637(def "+" { &@MedGap plus &@MedGap })m 480 5061(def @HSqueez)m 3(e r)k -3(ight x { 0.2f @YUnit x })k +240 fnt82 0 4562(In)m 261(the)s 615(equation)s 1502(as)s +1758(a)s 1929(whole,)s 2627(the)s 2981(y)s 3161(unit)s +3599(is)s 3814(initially)s 4616(set)s 4947(to)s 220 fnt35 +5192 4559(1f)m 240 fnt82 5372 4562(,)m 5484(and)s 5894(so)s +220 fnt35 6166 4559(@MedGap)m 240 fnt82 7289 4562(ordinarily)m 8291(supplies)s +0 4274(20%)m 495(of)s 777(this)s 1184(amount.)s 2077(But)s +2494(superscripts)s 3697(and)s 4112(subscripts)s 5130(are)s 5488(enclosed)s +6394(in)s 6648(the)s 220 fnt35 7007 4271(@HSqueez)m 3(e)k +240 fnt82 8314 4274(symbol,)m 0 3986(which,)m 744(by)s 1091(changing)s +2075(the)s 2476(y)s 2703(unit,)s 3235(ensures)s 4056(that)s +4527(an)s 3(y)k 220 fnt35 4977 3983(@MedGap)m 240 fnt82 +6147 3986(within)m 6868(them)s 7459(is)s 7722(much)s 8364(smaller)s +0 3698(than)m 469(usual.)s 240 fnt84 0 2955(4.2.)m 471(P)s 2(aragraphs,)k +1780(displays,)s 2718(and)s 3159(lists)s 240 fnt82 480 2478(The)m +914(remaining)s 1942(sections)s 2770(of)s 3047(this)s 3449(chapter)s +4219(are)s 4572(all)s 4871(based)s 5481(on)s 5784(V)s 26(ersion)k +6578(2)s 6759(of)s 7036(the)s 7391(DocumentLayout)s 0 2190(package.)m +941(V)s 26(ersion)k 1722(3,)s 1942(which)s 2577(is)s +2779(similar)s 3494(b)s 4(ut)k 3849(more)s 4389(elaborate,)s +5364(is)s 5566(described)s 6533(from)s 7050(the)s 7391(user')s 13(s)k +7991(perspecti)s 6(v)k 3(e)k 0 1902(in)m 249(the)s +604(User')s 13(s)k 1272(Guide)s 1920([4)s 2113(].)s +2363(In)s 2625(26)s 2925(pages)s 3528(of)s 3806(Lout,)s +4372(the)s 4726(DocumentLaytout)s 6534(package)s 7381(de\207nes)s 8117(man)s 3(y)k +8707(fea)s 8998(-)s 0 1614(tures)m 506(required)s 1350(in)s +1583(the)s 1921(formatting)s 2972(of)s 3233(simple)s 3916(documents,)s +5050(technical)s 5957(reports,)s 6717(and)s 7111(books,)s 7781(including)s +8728(dis)s 8998(-)s 0 1326(plays,)m 603(lists,)s 1085(page)s +1584(layout,)s 2280(cross)s 2813(references,)s 3891(tables)s 4490(of)s +4752(contents,)s 5647(footnotes,)s 6635(\207gures,)s 7384(tables,)s 8039(references,)s +0 1038(chapters,)m 903(sections,)s 1780(and)s 2184(sorted)s 2826(inde)s 3(x)k 3(es.)k +480 664(The)m 939(symbols)s 1819(used)s 2347(for)s 2716(separating)s +3782(paragraphs)s 4913(and)s 5348(producing)s 6403(displays)s 7269(and)s +7704(lists)s 8170(may)s 8667(lack)s 0 376(the)m 351(e)s 3(xcitement)k +1459(of)s 1733(more)s 2284(e)s 3(xotic)k 2921(features,)s +3786(b)s 4(ut)k 4152(the)s 3(y)k 4618(can)s +5010(teach)s 5574(some)s 6139(important)s 7131(lessons)s 7876(about)s +8472(rob)s 4(ust)k 0 88(design.)m 786(The)s 1211(follo)s 6(wing)k +2185(macro)s 2832(for)s 3167(separating)s 4199(paragraphs)s 5296(produces)s +6207(a)s 6370(0.3)s 6711(cm)s 7060(v)s 3(ertical)k +7824(space)s 8408(and)s 8809(a)s 8971(1)s +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 74 80 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +%%+ font Times-Italic +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +0 LoutMargSet +grestore +240 fnt84 0 13840(74)m 240 fnt83 7017 13843(Chapter)m 7867(4.)s +8141(Examples)s 240 fnt82 0 13205(cm)m 352(indent)s 1010(on)s +1307(the)s 1655(follo)s 6(wing)k 2632(line,)s 3097(and)s +3501(is)s 3711(clearly)s 4414(on)s 4711(the)s 5059(right)s +5570(track:)s 220 fnt35 480 12704(macro @PP { //0.3c &1c })m 240 fnt82 0 12210(Ne)m 6(v)k 3(ertheless)k +1276(it)s 1468(has)s 1838(se)s 6(v)k 3(eral)k +2560(major)s 3177(problems.)s 480 11836(The)m 220 fnt35 926 11833(&)m +240 fnt82 1147 11836(symbol)m 1926(is)s 2154(subject)s 2910(to)s +3168(widening)s 4130(during)s 4827(line)s 5260(adjustment,)s 6434(so)s +6719(it)s 6930(should)s 7645(be)s 7946(replaced)s 8832(by)s +220 fnt35 0 11545(1c @Wide {})m 240 fnt82 1213 11548(.)m 1387(But)s +1804(then)s 2284(white)s 2882(space)s 3480(follo)s 6(wing)k +4468(the)s 4827(symbol)s 5597(will)s 6034(af)s 6(fect)k +6641(the)s 7000(result,)s 7648(so)s 7925(an)s 8219(e)s 3(xtra)k +220 fnt35 8764 11545(&0i)m 240 fnt82 0 11260(must)m 528(be)s +814(added.)s 1553(If)s 1787(the)s 2138(document)s 3146(is)s +3359(printed)s 4098(double)s 4810(spaced,)s 5571(this)s 5971(paragraph)s +6987(g)s 1(ap)k 7389(will)s 7818(f)s 2(ail)k +8192(to)s 8435(widen:)s 0 10972(it)m 204(should)s 914(be)s +1208(e)s 3(xpressed)k 2219(in)s 2475(terms)s 3068(of)s +3352(the)s 220 fnt35 3712 10969(v)m 240 fnt82 3894 10972(unit,)m +4386(with)s 4880(mark-to-mark)s 6280(spacing)s 7076(mode.)s 7785(Similarly)s 15(,)k +8778(the)s 0 10684(paragraph)m 1013(indent)s 1671(should)s 2368(probably)s +3273(be)s 3555(made)s 4129(proportional)s 5366(to)s 5605(the)s +5953(font)s 6398(size.)s 480 10310(`Magic)m 1211(numbers')s 2135(lik)s 2(e)k +220 fnt35 2535 10307(0.3c)m 240 fnt82 2993 10310(should)m 3678(not)s +4032(be)s 4302(b)s 4(uried)k 4955(in)s 5186(de\207nitions)s +6235(where)s 6863(the)s 3(y)k 7314(cannot)s 8000(be)s +8270(changed)s 0 10022(easily)m 15(,)k 649(or)s 908(k)s 2(ept)k +1378(consistent)s 2394(with)s 2876(similar)s 3598(de\207nitions)s 4659(during)s +5337(tuning.)s 6113(The)s 3(y)k 6656(are)s 7003(much)s +7592(better)s 8195(placed)s 8876(as)s 0 9734(symbols,)m 905(possibly)s +1757(parameters)s 2855(of)s 3126(the)s 3474(enclosing)s 4444(package:)s +220 fnt35 480 9233(def @DocumentLa)m 6(y)k 4(out)k 480 8945( named @P)m 8(ar)k 2(aGap { 1.3vx })k +480 8657( named @P)m 8(ar)k 2(aIndent { 2f })k 480 8369( ...)m 480 8081(@Begin)m +480 7505( macro @PP { //@P)m 8(ar)k 2(aGap @P)k 8(ar)k 2(aIndent @Wide &0i })k +480 7217( macro @LP { //@P)m 8(ar)k 2(aGap })k 480 6929( ...)m 480 6641(@End @DocumentLa)m 6(y)k 4(out)k +240 fnt82 0 6143(and)m 404(we)s 739(ha)s 4(v)k 3(e)k +1240(arri)s 6(v)k 3(ed)k 1965(at)s 2197(the)s +2545(de\207nition)s 3519(of)s 220 fnt35 3790 6140(@PP)m 240 fnt82 +4356 6143(as)m 4606(it)s 4798(appears)s 5579(in)s 5822(the)s +6170(DocumentLayout)s 7905(package.)s 480 5769(A)m 710(display)s 1455(is)s +1665(a)s 1831(table)s 2351(in)s 2594(which)s 3236(the)s +3584(\207rst)s 4015(column)s 4790(is)s 5000(blank:)s 240 fnt83 +480 5266(pr)m 8(eceding)k 1483(te)s 4(xt)k 220 fnt35 +480 4973(//@DispGap |@DispIndent)m 240 fnt83 3183 4978(display)m 220 fnt35 480 4685(//@DispGap)m +240 fnt83 480 4402(following)m 1438(te)s 4(xt)k 240 fnt82 +0 3901(Edge-to-edge)m 1345(is)s 1557(the)s 1906(appropriate)s 3052(spacing)s +3838(mode)s 4427(before)s 5095(and)s 5500(after)s 5998(displays,)s +6891(since)s 7439(the)s 7789(display)s 8536(could)s 0 3613(be)m +273(a)s 430(table)s 941(or)s 1191(\207gure)s 1796(whose)s +2455(mark)s 2998(does)s 3479(not)s 3836(correspond)s 4948(to)s +5178(a)s 5335(baseline.)s 6273(Thus,)s 220 fnt35 6850 3610(1v)m +240 fnt82 7132 3613(is)m 7333(a)s 7490(reasonable)s 8558(v)s 6(alue)k +0 3325(for)m 220 fnt35 338 3322(@DispGap)m 240 fnt82 1406 3325(.)m +480 2951(The)m 957(ordinary)s 1871(user)s 2379(cannot)s 3126(be)s +3458(e)s 3(xpected)k 4413(to)s 4702(type)s 5219(the)s +5617(Lout)s 6179(source)s 6908(sho)s 6(wn)k 7635(abo)s 3(v)k 3(e;)k +8363(a)s 8579(more)s 0 2663(appropriate)m 1144(syntax)s 1824(is)s +240 fnt83 480 2160(pr)m 8(eceding)k 1483(te)s 4(xt)k +220 fnt35 480 1867(@IndentedDispla)m 6(y {)k 240 fnt83 2514 1872(display)m +220 fnt35 3321 1867(})m 240 fnt83 480 1584(following)m 1438(te)s 4(xt)k +240 fnt82 0 1083(This)m 491(presents)s 1340(a)s 1521(problem:)s +2499(if)s 220 fnt35 2731 1080(@IndentedDispla)m 6(y)k 240 fnt82 +4593 1083(is)m 4819(made)s 5408(a)s 5589(de\207nition)s 6578(with)s +7075(a)s 7256(right)s 7782(parameter)s 9(,)k 8850(its)s +0 795(result)m 598(will)s 1032(be)s 1322(an)s 1613(object)s +2265(separated)s 3233(from)s 3765(the)s 4121(surrounding)s 5339(te)s 3(xt)k +5762(only)s 6250(by)s 6552(white)s 7147(space,)s 7793(hence)s +8415(part)s 8855(of)s 0 507(the)m 343(paragraph;)s 1405(while)s +1986(if)s 2197(it)s 2383(is)s 2587(a)s 2747(macro,)s +3445(the)s 3787(\207nal)s 220 fnt35 4261 504(//@DispGap)m 240 fnt82 +5505 507(cannot)m 6197(be)s 6473(included)s 7349(in)s 7586(it.)s +7876(The)s 8298(solution)s 0 219(adopted)m 816(in)s 1059(the)s +1407(DocumentLayout)s 3142(package)s 3982(uses)s 4445(a)s 4611(g)s 1(alle)k 3(y)k +5245(and)s 5649(a)s 5815(macro:)s +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 75 81 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Italic +%%+ font Times-Bold +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +1 LoutMargSet +grestore +240 fnt83 0 13843(4.2.)m 454(P)s 19(ar)k 3(a)k 2(gr)k 3(aphs,)k +1665(displays,)s 2542(and)s 2968(lists)s 240 fnt84 8833 13840(75)m +220 fnt35 480 13207( def @DispPlace { @Galle)m 4(y })k 480 12919( def @Disp into { @DispPlace&&preceding })m 480 12631( r)m -3(ight x)k +480 12343( {)m 480 12055( @OneRo)m 3(w x)k 480 11767( })m 480 11191( macro @IndentedDispla)m 6(y)k +480 10903( {)m 480 10615( //@DispGap |@DispIndent @DispPlace |)m 480 10327( //@DispGap // @Disp)m 480 10039( })m 0 9542(@DispPlace)m +240 fnt82 1257 9545(and)m 220 fnt35 1657 9542(@Disp)m 240 fnt82 +2366 9545(are)m 2709(not)s 3070(e)s 3(xported,)k 4007(so)s +4269(there)s 4798(is)s 5003(no)s 5292(danger)s 5999(of)s +6266(a)s 6427(name)s 6997(clash)s 7541(with)s 8019(some)s +8575(other)s 0 9257(symbol.)m 869(The)s 1297(ordinary)s 2161(user')s 13(s)k +2769(syntax)s 3449(e)s 3(xpands)k 4282(to)s 240 fnt83 +480 8754(pr)m 8(eceding)k 1483(te)s 4(xt)k 220 fnt35 +480 8461(//@DispGap |@DispIndent @DispPlace |)m 480 8173(//@DispGap // @Disp {)m 240 fnt83 2890 8178(display)m 220 fnt35 +3637 8173(})m 240 fnt83 480 7890(following)m 1438(te)s 4(xt)k +240 fnt82 0 7389(and)m 397(the)s 220 fnt35 737 7386(@Disp)m +240 fnt82 1442 7389(g)m 1(alle)k 3(y)k 2068(appears)s +2842(at)s 3066(the)s 3406(preceding)s 220 fnt35 4394 7386(@DispPlace)m +240 fnt82 5595 7389(,)m 5694(being)s 6272(itself)s 6812(replaced)s +7671(by)s 220 fnt35 7957 7386(@Null)m 240 fnt82 8542 7389(.)m +8698(The)s 220 fnt35 0 7098(//)m 240 fnt82 184 7101(symbol)m +942(protects)s 1748(the)s 2094(preceding)s 220 fnt35 3088 7098(//@DispGap)m +240 fnt82 4337 7101(from)m 4859(being)s 5443(deleted)s 6189(by)s +6481(this)s 220 fnt35 6876 7098(@Null)m 240 fnt82 7519 7101(when)m +8094(there)s 8625(is)s 8833(no)s 0 6813(follo)m 6(wing)k +977(te)s 3(xt.)k 480 6439(An)m 858(automatically)s 2240(numbered)s +3283(list)s 3662(could)s 4280(ha)s 4(v)k 3(e)k +4809(an)s 5121(arbitrarily)s 6156(lar)s 4(ge)k 6713(number)s +7532(of)s 7831(items,)s 8483(so,)s 8832(by)s 0 6151(analogy)m +812(with)s 1294(sequences)s 2315(of)s 2586(pages,)s 3238(we)s +3573(see)s 3934(immmediately)s 5368(that)s 5786(recursion)s 6732(must)s +7257(be)s 7539(in)s 9(v)k 4(olv)k 3(ed:)k +220 fnt35 480 5650(def @List r)m -3(ight n)k 2(um)k 480 5362({)m +480 5074( @DispIndent @Wide n)m 2(um.)k 13( | @ItemPlace)k 480 4786( //@DispGap @List @Ne)m 6(xt n)k 2(um)k +480 4498(})m 240 fnt82 0 4004(Notice)m 689(ho)s 6(w)k +1146(the)s 220 fnt35 1490 4001(@Ne)m 6(xt)k 240 fnt82 +2210 4004(symbol)m 2965(w)s 2(orks)k 3595(in)s 3834(conjunction)s +5017(with)s 5495(the)s 5838(recursion)s 6780(to)s 7015(produce)s +7838(an)s 8116(ascending)s 0 3716(sequence)m 933(of)s 1204(numbers;)s +2140(the)s 2488(result)s 3078(of)s 220 fnt35 3349 3713(@List 1)m +240 fnt82 4113 3716(will)m 4539(be)s 220 fnt35 480 3215(1.)m 13( @ItemPlace)k +480 2927(2.)m 13( @ItemPlace)k 480 2639(3.)m 13( @ItemPlace)k 480 2351(...)m +240 fnt82 0 1900(W)m 19(e)k 362(can)s 744(follo)s 6(w)k +1408(this)s 1797(with)s 2271(items)s 2832(which)s 3466(are)s +3806(g)s 1(alle)k 3(ys)k 4522(tar)s 4(geted)k +5338(to)s 220 fnt35 5569 1897(@ItemPlace&&preceding)m 240 fnt82 8010 1900(,)m +8110(and)s 220 fnt35 8506 1897(@List)m 240 fnt82 0 1612(will)m +426(e)s 3(xpand)k 1173(just)s 1578(enough)s 2341(to)s +2580(accommodate)s 3964(them.)s 480 1238(The)m 908(usual)s 1468(problem)s +2325(with)s 2807(recursi)s 6(v)k 3(e-)k 3741(recepti)s 6(v)k 3(e)k +4663(symbols)s 5513(no)s 6(w)k 5974(arises:)s 6683(there)s +7216(is)s 7426(al)s 2(w)k 2(ays)k 8137(one)s +8540(une)s 3(x)k 8998(-)s 0 950(panded)m 220 fnt35 +753 947(@List)m 240 fnt82 1313 950(,)m 1424(and)s 1832(until)s +2329(it)s 2525(can)s 2917(be)s 3203(remo)s 3(v)k 3(ed)k +4096(the)s 4448(g)s 1(alle)k 3(y)k 5086(containing)s +6152(it)s 6348(will)s 6778(appear)s 7479(to)s 7722(be)s +8008(incomplete)s 0 662(and)m 394(will)s 810(be)s 1081(pre)s 6(v)k 3(ented)k +2063(at)s 2285(that)s 2692(point)s 3234(from)s 3747(\210ushing)s +4562(into)s 4977(its)s 5242(parent)s 5889(\(see)s 6318(page)s +6816(29\).)s 7289(W)s 19(e)k 7647(adopt)s 8229(the)s +8566(usual)s 0 374(solution:)m 937(a)s 1104(forcing)s 1847(g)s 1(alle)k 3(y)k +2482(into)s 2908(a)s 3074(later)s 3558(tar)s 4(get)k +4158(will)s 4584(replace)s 5330(the)s 5679(last)s 220 fnt35 +6070 371(@List)m 240 fnt82 6691 374(by)m 220 fnt35 6986 371(@Null)m +240 fnt82 7571 374(.)m 7735(This)s 8212(brings)s 8862(us)s +0 86(to)m 239(the)s 587(de\207nitions)s 1648(as)s 1898(the)s 3(y)k +2361(appear)s 3058(in)s 3301(DocumentLayout:)s +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 76 82 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +%%+ font Times-Italic +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +0 LoutMargSet +grestore +240 fnt84 0 13840(76)m 240 fnt83 7017 13843(Chapter)m 7867(4.)s +8141(Examples)s 220 fnt35 480 13207(def @ItemPlace { @Galle)m 4(y })k 480 12919(def @ListItem into { @ItemPlace&&preceding })m +480 12631( r)m -3(ight x)k 480 12343({ x })m 480 11851(def @EndListPlace { @Galle)m 4(y })k +480 11563(def @EndList f)m 6(orce into { @EndListPlace&&preceding })k 480 11275({})m 480 10783(def @Ra)m 4(wIndentedList)k +480 10495( named style r)m -3(ight tag {})k 480 10207( named indent { @DispIndent })m 480 9919( named gap { @DispGap })m 480 9631( named star)m -8(t { 1 })k +480 9343({)m 480 9055( def @IList r)m -3(ight n)k 2(um)k 480 8767( {)m +480 8479( indent @Wide {style n)m 2(um} | @ItemPlace)k 480 8191( //gap @IList @Ne)m 6(xt n)k 2(um)k +480 7903( })m 480 7327( @IList star)m -8(t // @EndListPlace)k 480 7039(})m 240 fnt82 +0 6545(No)m 6(w)k 514(gi)s 6(v)k 3(en)k +1094(the)s 1442(input)s 220 fnt35 480 6044(@Ra)m 4(wIndentedList)k +480 5756(@ListItem { \207rst item })m 480 5468(@ListItem { second item })m 480 5180(...)m 480 4892(@ListItem { last item })m 480 4604(@EndList)m +0 4146(@Ra)m 4(wIndentedList)k 240 fnt82 1908 4149(will)m 2334(e)s 3(xpand)k +3081(to)s 3320(recei)s 6(v)k 3(e)k 4056(the)s +4404(items,)s 5028(and)s 5432(will)s 5858(be)s 6140(closed)s +6809(of)s 6(f)k 7153(by)s 220 fnt35 7447 4146(@EndList)m +240 fnt82 8397 4149(.)m 480 3775(The)m 220 fnt35 913 3772(indent)m +240 fnt82 1506 3775(,)m 220 fnt35 1619 3772(gap)m 240 fnt82 +1977 3775(,)m 2089(and)s 220 fnt35 2499 3772(star)m -8(t)k +240 fnt82 2996 3775(parameters)m 4099(are)s 4452(straightforw)s 2(ard)k +5986(\(note)s 6538(that)s 6962(the)s 7316(b)s 4(urden)k +8039(of)s 8316(typing)s 220 fnt35 8987 3772(1)m 240 fnt82 +0 3487(has)m 378(been)s 895(lifted)s 1464(from)s 1996(the)s +2352(ordinary)s 3224(user\),)s 3816(b)s 4(ut)k 4186(the)s +220 fnt35 4543 3484(style)m 240 fnt82 5054 3487(parameter)m 6076(has)s +6454(a)s 6628(parameter)s 7650(of)s 7929(its)s 8213(o)s 6(wn)k +8686(\(see)s 0 3199(page)m 508(16\).)s 991(It)s 1196(is)s +1406(used)s 1903(lik)s 2(e)k 2315(this:)s 220 fnt35 +480 2698(def @Ra)m 4(wNumberedList { @Ra)k 4(wIndentedList style { tag.)k 13( } })k 480 2410(def @Ra)m 4(wP)k 8(arenNumberedList { @Ra)k 4(wIndentedList style { \(tag\) } })k +240 fnt82 0 1911(In)m 220 fnt35 276 1908(@Ra)m 4(wNumberedList)k +240 fnt82 2294 1911(,)m 220 fnt35 2422 1908(style)m 240 fnt82 +2946 1911(is)m 3176(gi)s 6(v)k 3(en)k 3777(the)s +4146(v)s 6(alue)k 220 fnt35 4734 1908(tag.)m 240 fnt82 +5081 1911(,)m 5209(where)s 220 fnt35 5870 1908(tag)m 240 fnt82 +6243 1911(is)m 6474(its)s 6771(o)s 6(wn)k 7255(right)s +7787(parameter)s 9(,)k 8860(so)s 0 1623(the)m 348(v)s 6(alue)k +916(of)s 220 fnt35 1187 1620({style n)m 2(um})k 240 fnt82 +2321 1623(within)m 220 fnt35 2989 1620(@IList)m 240 fnt82 3670 1623(is)m +220 fnt35 3880 1620(n)m 2(um.)k 240 fnt82 4347 1623(;)m +4459(while)s 5046(in)s 220 fnt35 5289 1620(@Ra)m 4(wP)k 8(arenNumberedList)k +240 fnt82 7884 1623(,)m 220 fnt35 7992 1620({style n)m 2(um})k +240 fnt82 0 1335(is)m 220 fnt35 219 1332(\(n)m 2(um\))k +240 fnt82 776 1335(.)m 949(In)s 1215(this)s 1620(w)s 2(ay)k +2080(we)s 2425(achie)s 6(v)k 3(e)k 3211(an)s +3503(unlimited)s 4487(v)s 6(ariety)k 5207(of)s 5487(numbering)s +6587(formats)s 7376(without)s 8176(ha)s 4(ving)k 8887(to)s +0 1047(re)m 6(write)k 220 fnt35 725 1044(@Ra)m 4(wIndentedList)k +240 fnt82 2633 1047(o)m 3(v)k 3(er)k 3112(and)s +3516(o)s 3(v)k 3(er)k 13(.)k 480 673(These)m +1113(list)s 1470(symbols)s 2325(are)s 2678(objects)s 3412(without)s +4209(surrounding)s 5425(space,)s 6069(so)s 6341(macros)s 7088(similar)s +7816(to)s 8061(those)s 8629(used)s 0 385(for)m 338(displays)s +1173(are)s 1520(needed:)s +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 77 83 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Italic +%%+ font Times-Bold +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +1 LoutMargSet +grestore +240 fnt83 0 13843(4.2.)m 454(P)s 19(ar)k 3(a)k 2(gr)k 3(aphs,)k +1665(displays,)s 2542(and)s 2968(lists)s 240 fnt84 8831 13840(77)m +220 fnt35 480 13207(macro @NumberedList { //@DispGap @Ra)m 4(wNumberedList //@DispGap })k 480 12919(macro @P)m 8(arenNumberedList { //@DispGap @Ra)k 4(wP)k 8(arenNumberedList //@DispGap })k +240 fnt82 0 12423(and)m 404(so)s 670(on.)s 480 12049(Lists)m +994(numbered)s 2007(by)s 2300(Roman)s 3047(numerals)s 3973(present)s +4721(a)s 4886(problem,)s 5788(because)s 220 fnt35 6600 12046(@Ne)m 6(xt)k +240 fnt82 7322 12049(will)m 7747(not)s 8111(increment)s 0 11761(Roman)m +749(numerals.)s 1789(Instead,)s 2586(the)s 3(y)k 3049(must)s +3574(be)s 3856(stored)s 4498(in)s 4741(a)s 4907(database:)s +220 fnt35 480 11260(def @Roman)m 480 10972( left @T)m 26(ag)k 480 10684( r)m -3(ight @V)k 15(al)k +480 10396({ @V)m 15(al })k 480 9820(@SysDatabase @Roman { standard })m 0 9319(@SysDatabase)m 240 fnt82 +1602 9322(is)m 1835(preferred)s 2790(o)s 3(v)k 3(er)k +220 fnt35 3292 9319(@Database)m 240 fnt82 4529 9322(here)m 5019(because)s +5855(this)s 6274(database)s 7176(should)s 7896(be)s 8201(k)s 2(ept)k +8694(in)s 8960(a)s 0 9034(standard)m 880(place)s 1452(and)s +1868(shared)s 2562(by)s 2868(e)s 6(v)k 3(eryone.)k +3912(The)s 4352(database)s 5243(itself,)s 5838(a)s 6016(\207le)s +6389(called)s 220 fnt35 7029 9031(standard.ld)m 240 fnt82 8174 9034(in)m +8429(Basser)s 0 8746(Lout,)m 559(contains)s 1407(in)s 9(v)k 4(ocations)k +2548(of)s 220 fnt35 2819 8743(@Roman)m 240 fnt82 3735 8746(,)m +3842(each)s 4337(enclosed)s 5232(in)s 5475(braces:)s 220 fnt35 +480 8264({ 1 @Roman i })m 480 7976({ 2 @Roman ii })m 480 7688(...)m 480 7400({ 100 @Roman c })m 240 fnt82 +0 6906(Then)m 220 fnt35 549 6903(@Roman&&12)m 240 fnt82 2065 6906(for)m +2403(e)s 3(xample)k 3266(has)s 3636(v)s 6(alue)k +4204(xii,)s 4563(and)s 220 fnt35 480 6405(def @Ra)m 4(wRomanList { @Ra)k 4(wIndentedList style { {@Roman&&tag}.)k 13( } })k +240 fnt82 0 5906(produces)m 922(a)s 1096(list)s 1454(numbered)s +2477(by)s 2779(Roman)s 3535(numerals.)s 4583(The)s 5019(counting)s +5917(still)s 6337(proceeds)s 7246(in)s 7496(Arabic,)s 8261(b)s 4(ut)k +8631(each)s 0 5618(Arabic)m 719(numeral)s 1573(is)s 1799(con)s 9(v)k 3(erted)k +2804(to)s 3059(Roman)s 3824(by)s 4134(the)s 4498(cross)s +5056(reference.)s 6123(Since)s 6726(arbitrary)s 7617(objects)s 8361(may)s +8844(be)s 0 5330(stored)m 642(in)s 885(databases,)s 1908(arbitrary)s +2783(\207nite)s 3330(sequences)s 4351(of)s 4622(objects)s 5350(may)s +5816(be)s 6098(`counted')s 7047(in)s 7290(this)s 7686(w)s 2(ay)k 15(.)k +240 fnt84 0 4538(4.3.)m 471(P)s 2(age)k 1017(lay)s 6(out)k +240 fnt82 480 4061(The)m 921(page)s 1443(layout)s 2115(de\207nitions)s +3190(gi)s 6(v)k 3(en)k 3783(in)s 4040(Section)s +4828(1.2,)s 5249(although)s 6158(correct,)s 6940(are)s 7301(v)s 3(ery)k +7791(basic.)s 8460(In)s 8730(this)s 0 3773(section)m 726(we)s +1053(present)s 1795(the)s 2135(de\207nitions)s 3187(used)s 3676(by)s +3962(the)s 4302(DocumentLayout)s 6029(package)s 6860(for)s 7190(laying)s +7833(out)s 8191(the)s 8530(pages)s 0 3485(of)m 271(books,)s +950(including)s 1906(running)s 2704(page)s 3211(headers)s 3991(and)s +4394(footers,)s 5164(dif)s 6(ferent)k 6038(formats)s 6817(for)s +7155(odd)s 7572(and)s 7975(e)s 6(v)k 3(en)k +8474(pages,)s 0 3197(and)m 404(so)s 670(on.)s 1074(The)s +1502(present)s 2252(document)s 3256(is)s 3466(produced)s 4415(with)s +4897(these)s 5444(de\207nitions.)s 480 2823(W)m 19(e)k 846(be)s 3(gin)k +1429(with)s 1908(a)s 2071(fe)s 6(w)k 2474(de\207nitions)s +3531(which)s 4170(permit)s 4850(the)s 5195(user)s 5650(to)s +5885(create)s 6507(cross)s 7046(references)s 8074(of)s 8342(the)s +8686(`see)s 0 2535(page)m 509(27')s 863(v)s 6(ariety)k +1576(which)s 2220(will)s 2647(be)s 2931(k)s 2(ept)k +3403(up)s 3698(to)s 3938(date)s 4394(automatically)s 15(.)k +5845(The)s 6275(user)s 6734(marks)s 7371(the)s 7721(tar)s 4(get)k +8322(page)s 8832(by)s 0 2247(placing)m 220 fnt35 756 2244(@P)m 8(ageMar)k -3(k intro)k +240 fnt82 2454 2247(,)m 2560(for)s 2897(e)s 3(xample,)k +3810(at)s 4041(the)s 4388(point)s 4939(of)s 5209(interest,)s +6017(and)s 6420(refers)s 7012(to)s 7250(the)s 7597(mark)s 2(ed)k +8369(page)s 8876(as)s 220 fnt35 0 1956(@P)m 8(ageOf intro)k +240 fnt82 1499 1959(else)m 6(where:)k 220 fnt35 480 1459(e)m 6(xpor)k -8(t @T)k 26(ag)k +480 1171(def @P)m 8(ageMar)k -3(k)k 4(er r)k -3(ight @T)k 26(ag { @Null })k +480 674(def @P)m 8(ageMar)k -3(k r)k -3(ight x)k 480 386({)m +480 98( @P)m 8(ageMar)k -3(k)k 4(er&&preceding @T)k 26(agged x)k + +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 78 84 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +%%+ font Times-Italic +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +0 LoutMargSet +grestore +240 fnt84 0 13840(78)m 240 fnt83 7017 13843(Chapter)m 7867(4.)s +8141(Examples)s 220 fnt35 480 13210(})m 480 12718(def @P)m 8(ageOf r)k -3(ight x)k +480 12430({)m 480 12142( @P)m 8(ageMar)k -3(k)k 4(er&&x @Open { @T)k 26(ag })k +480 11854(})m 240 fnt82 0 11360(W)m 19(e)k 385(will)s +828(see)s 1206(belo)s 6(w)k 1856(that)s 2291(an)s +2591(in)s 9(v)k 4(ocation)k 3662(of)s 220 fnt35 +3949 11357(@P)m 8(ageMar)k -3(k)k 4(er)k 240 fnt82 +5435 11360(appears)m 6233(before)s 6916(each)s 7428(page,)s 8004(with)s +220 fnt35 8503 11357(@T)m 26(ag)k 240 fnt82 0 11072(parameter)m +1014(equal)s 1587(to)s 1826(the)s 2174(page)s 2682(number)s 13(.)k +3564(Suppose)s 4432(that)s 220 fnt35 4850 11069(@P)m 8(ageMar)k -3(k intro)k +240 fnt82 6548 11072(,)m 6655(which)s 7297(e)s 3(xpands)k +8130(to)s 220 fnt35 480 10571(@P)m 8(ageMar)k -3(k)k 4(er&&preceding @T)k 26(agged intro)k +240 fnt82 0 10072(happens)m 855(to)s 1113(f)s 2(all)k +1502(on)s 1819(page)s 2346(27)s 2653(of)s 2944(the)s +3311(\207nal)s 3810(printed)s 4564(document)s 5588(\(of)s 5957(course,)s +6707(its)s 7003(v)s 6(alue)k 7590(is)s 220 fnt35 +7819 10069(@Null)m 240 fnt82 8484 10072(which)m 0 9784(mak)m 2(es)k +686(it)s 905(in)s 9(visible\).)k 1988(Then)s 2564(the)s +2939(ef)s 6(fect)k 3561(of)s 220 fnt35 3859 9781(@T)m 26(agged)k +240 fnt82 4874 9784(is)m 5111(to)s 5377(attach)s 220 fnt35 +6030 9781(intro)m 240 fnt82 6536 9784(as)m 6812(an)s 7122(e)s 3(xtra)k +7683(tag)s 8054(to)s 8320(the)s 8695(\207rst)s 0 9496(in)m 9(v)k 4(ocation)k +1092(of)s 220 fnt35 1401 9493(@P)m 8(ageMar)k -3(k)k 4(er)k +240 fnt82 2908 9496(preceding)m 3943(that)s 4399(\207nal)s 4917(point,)s +5554(and)s 5997(this)s 6431(must)s 6994(be)s 220 fnt35 +7315 9493(@P)m 8(ageMar)k -3(k)k 4(er 27)k 240 fnt82 +9022 9496(.)m 0 9208(Therefore)m 997(the)s 1345(e)s 3(xpression)k +220 fnt35 480 8707(@P)m 8(ageMar)k -3(k)k 4(er&&intro @Open { @T)k 26(ag })k +240 fnt82 0 8208(will)m 422(open)s 941(the)s 1285(in)s 9(v)k 4(ocation)k +220 fnt35 2334 8205(@P)m 8(ageMar)k -3(k)k 4(er 27)k +240 fnt82 4097 8208(and)m 4497(yield)s 5028(the)s 5372(v)s 6(alue)k +5936(of)s 6203(its)s 220 fnt35 6474 8205(@T)m 26(ag)k +240 fnt82 7093 8208(parameter)m 9(,)k 8141(27.)s 8540(Thus,)s +220 fnt35 0 7917(@P)m 8(ageOf intro)k 240 fnt82 1499 7920(appearing)m +2495(an)s 3(ywhere)k 3478(in)s 3721(the)s 4069(document)s +5073(yields)s 5695(27.)s 480 7546(Ne)m 3(xt)k 1009(we)s +1351(ha)s 4(v)k 3(e)k 1859(some)s 2427(little)s +2926(de\207nitions)s 3994(for)s 4339(v)s 6(arious)k 5095(parts)s +5617(of)s 5895(the)s 6250(page.)s 220 fnt35 6873 7543(@FullPlace)m +240 fnt82 8055 7546(will)m 8488(be)s 8778(the)s 0 7258(tar)m 4(get)k +599(of)s 870(full-width)s 1882(body)s 2416(te)s 3(xt:)k +220 fnt35 480 6757(def @FullPlace { @Galle)m 4(y })k 0 6256(@ColPlace)m 240 fnt82 +1151 6259(will)m 1577(be)s 1859(the)s 2207(tar)s 4(get)k +2806(of)s 3077(body)s 3611(te)s 3(xt)k 4026(within)s +4694(one)s 5096(column:)s 220 fnt35 480 5758(def @ColPlace { @Galle)m 4(y })k +0 5257(@T)m 26(opList)k 240 fnt82 972 5260(will)m 1398(be)s +1680(the)s 2028(tar)s 4(get)k 2627(of)s 2898(\207gures)s +3600(and)s 4004(tables:)s 220 fnt35 480 4759(e)m 6(xpor)k -8(t @T)k 26(ag)k +480 4471(def @T)m 26(opList r)k -3(ight @T)k 26(ag)k 480 4183({)m +480 3895( @Galle)m 4(y)k 480 3607( //@T)m 26(opGap @T)k 26(opList @Ne)k 6(xt @T)k 26(ag)k +480 3319(})m 240 fnt82 0 2825(W)m 19(e)k 392(ha)s 4(v)k 3(e)k +916(tak)s 2(en)k 1512(a)s 1702(shortcut)s 2555(here,)s +3096(a)s 4(v)k 4(oiding)k 4002(an)s 4309(unnecessary)s +220 fnt35 5555 2822(@T)m 26(opPlace)k 240 fnt82 6753 2825(symbol.)m +220 fnt35 7645 2822(@F)m 6(ootList)k 240 fnt82 8722 2825(and)m +220 fnt35 0 2534(@F)m 6(ootSect)k 240 fnt82 1142 2537(de\207ne)m +1774(a)s 1931(sequence)s 2854(of)s 3116(full-width)s 4119(tar)s 4(gets)k +4793(at)s 5015(the)s 5354(foot)s 5790(of)s 6052(the)s +6390(page)s 6889(for)s 7218(footnotes,)s 8205(preceded)s 0 2249(by)m +294(a)s 460(short)s 998(horizontal)s 2022(line:)s 220 fnt35 +480 1748(e)m 6(xpor)k -8(t @T)k 26(ag)k 480 1460(def @F)m 6(ootList r)k -3(ight @T)k 26(ag)k +480 1172({)m 480 884( @Galle)m 4(y)k 480 596( //@F)m 6(ootGap @F)k 6(ootList @Ne)k 6(xt @T)k 26(ag)k +480 308(})m +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 79 85 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Italic +%%+ font Times-Bold +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +1 LoutMargSet +grestore +240 fnt83 0 13843(4.3.)m 454(P)s 19(a)k 2(g)k 2(e)k +976(layout)s 240 fnt84 8832 13840(79)m 220 fnt35 480 13207(def @F)m 6(ootSect)k +480 12919({)m 480 12631( @F)m 6(ootLen @Wide @HLine)k 480 12343( //@F)m 6(ootGap @F)k 6(ootList 1 ||@F)k 6(ootLen)k +480 12055(})m 240 fnt82 0 11561(Similarly)m 15(,)k 220 fnt35 +988 11558(@ColF)m 6(ootList)k 240 fnt82 2378 11561(and)m 220 fnt35 +2791 11558(@ColF)m 6(ootSect)k 240 fnt82 4279 11561(pro)m 3(vide)k +5072(a)s 5247(sequence)s 6189(of)s 6469(tar)s 4(gets)k +7161(for)s 7508(footnotes)s 8458(within)s 0 11273(one)m 402(column:)s +220 fnt35 480 10822(e)m 6(xpor)k -8(t @T)k 26(ag)k +480 10534(def @ColF)m 6(ootList r)k -3(ight @T)k 26(ag)k 480 10246({)m +480 9958( @Galle)m 4(y)k 480 9670( //@F)m 6(ootGap @ColF)k 6(ootList @Ne)k 6(xt @T)k 26(ag)k +480 9382(})m 480 8806(def @ColF)m 6(ootSect)k 480 8518({)m 480 8230( @ColF)m 6(ootLen @Wide @HLine)k +480 7942( //@F)m 6(ootGap @ColF)k 6(ootList 1 ||@ColF)k 6(ootLen)k 480 7654(})m +240 fnt82 0 7160(The)m 428(ne)s 3(xt)k 897(de\207nition)s +1871(pro)s 3(vides)k 2743(a)s 2909(horizontal)s 3933(sequence)s +4866(of)s 5137(one)s 5539(or)s 5798(more)s 6345(columns:)s +220 fnt35 480 6659(def @ColList r)m -3(ight col)k 480 6371({)m 480 6083( def @Column)m +480 5795( { @VExpand { @ColPlace //1r)m -8(t @OneRo)k 3(w { //@MidGap @ColF)k 6(ootSect } } })k 480 5219( col @Case {)m +480 4931( Single @Y)m 4(ield @Column)k 480 4643( Doub)m 4(le @Y)k 4(ield { @Doub)k 4(leColWidth @Wide @Column ||@ColGap @ColList col })k +480 4355( Multi @Y)m 4(ield { @MultiColWidth @Wide @Column ||@ColGap @ColList col })k 480 4067( })m 480 3779(})m 240 fnt82 +0 3285(Each)m 537(column)s 1315(consists)s 2125(of)s 2399(a)s +220 fnt35 2568 3282(@ColPlace)m 240 fnt82 3721 3285(at)m 3956(the)s +4307(top)s 4668(and)s 5075(a)s 220 fnt35 5243 3282(@F)m 6(ootSect)k +240 fnt82 6397 3285(at)m 6632(the)s 6982(foot.)s 7534(The)s +220 fnt35 7965 3282(@VExpand)m 240 fnt82 0 2997(symbol)m 772(ensures)s +1553(that)s 1983(whene)s 6(v)k 3(er)k 2977(a)s +3156(column)s 3943(comes)s 4618(into)s 5056(e)s 3(xistence,)k +6061(it)s 6266(will)s 6705(e)s 3(xpand)k 7464(v)s 3(ertically)k +8429(so)s 8708(that)s 0 2709(the)m 360(bottom-justi\207cation)s 220 fnt35 +2315 2706(//1r)m -8(t)k 240 fnt82 2769 2709(has)m 3152(as)s +3414(much)s 4016(space)s 4615(as)s 4878(possible)s 5730(to)s +5982(w)s 2(ork)k 6545(within.)s 7333(The)s 220 fnt35 +7773 2706(col)m 240 fnt82 8112 2709(parameter)m 0 2421(determines)m 1099(whether)s +1929(the)s 2277(result)s 2867(has)s 3237(a)s 3403(single)s +4030(column,)s 4855(double)s 5563(columns,)s 6481(or)s 6740(multiple)s +7592(columns.)s 480 2047(The)m 220 fnt35 908 2044(@P)m 8(age)k +240 fnt82 1687 2047(symbol)m 2447(places)s 3095(its)s 3371(parameter)s +4385(in)s 4628(a)s 4794(page)s 5302(of)s 5573(\207x)s 3(ed)k +6107(width,)s 6759(height,)s 7464(and)s 7868(mar)s 4(gins:)k +220 fnt35 480 1546(def @P)m 8(age r)k -3(ight x)k 480 1258({)m +480 970( @P)m 8(ageWidth @Wide @P)k 8(ageHeight @High {)k 480 682( //@P)m 8(ageMargin ||@P)k 8(ageMargin)k +480 394( @HExpand @VExpand x)m +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 80 86 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +%%+ font Times-Italic +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +0 LoutMargSet +grestore +240 fnt84 0 13840(80)m 240 fnt83 7017 13843(Chapter)m 7867(4.)s +8141(Examples)s 220 fnt35 480 13207( ||@P)m 8(ageMargin //@P)k 8(ageMargin)k +480 12919( })m 480 12631(})m 0 12134(@HExpand)m 240 fnt82 1169 12137(and)m +220 fnt35 1568 12134(@VExpand)m 240 fnt82 2725 12137(ensure)m 3400(that)s +3814(the)s 4157(right)s 4664(parameter)s 5673(occupies)s 6557(all)s +6845(the)s 7189(a)s 4(v)k 6(ailable)k 8092(space;)s +8730(this)s 0 11849(is)m 218(important)s 1215(when)s 1800(the)s +2156(right)s 2676(parameter)s 3698(is)s 3916(unusually)s 4910(small.)s +5599(The)s 220 fnt35 6036 11846(@High)m 240 fnt82 6763 11849(symbol)m +7531(gi)s 6(v)k 3(es)k 8087(the)s 8443(page)s +8960(a)s 0 11561(single)m 627(ro)s 6(w)k 1047(mark,)s +1645(ensuring)s 2522(that)s 2940(it)s 3132(will)s 3558(be)s +3840(printed)s 4575(on)s 4872(a)s 5038(single)s 5665(sheet)s +6216(of)s 6487(paper)s 7078(\(page)s 7665(29\).)s 480 11187(Ne)m 3(xt)k +1002(we)s 1337(ha)s 4(v)k 3(e)k 220 fnt35 +1838 11184(@OneP)m 8(age)k 240 fnt82 2972 11187(,)m 3079(de\207ning)s +3917(a)s 4083(typical)s 4788(page)s 5296(of)s 5567(a)s +5733(book)s 6274(or)s 6533(other)s 7084(document:)s 220 fnt35 +480 10686(def @OneP)m 8(age)k 480 10398( named @Columns {})m 480 10110( named @P)m 8(ageT)k 26(op {})k +480 9822( named @P)m 8(ageF)k 6(oot {})k 480 9534({)m 480 9246( @P)m 8(age {)k +480 8958( @P)m 8(ageT)k 26(op)k 480 8670( //@MidGap @T)m 26(opList)k +480 8382( //@MidGap @FullPlace)m 480 8094( //@MidGap @ColList @Columns)m 480 7806( // //1r)m -8(t @OneRo)k 3(w { //@MidGap @F)k 6(ootSect //@MidGap @P)k 8(ageF)k 6(oot })k +480 7518( })m 480 7230(})m 240 fnt82 0 6736(The)m 431(page)s +943(top)s 1305(and)s 1713(page)s 2224(foot,)s 2720(and)s +3128(the)s 3479(number)s 4274(of)s 4548(columns,)s 5470(are)s +5821(parameters)s 6922(that)s 7344(will)s 7773(be)s 8059(gi)s 6(v)k 3(en)k +8643(later)s 0 6448(when)m 220 fnt35 565 6445(@OneP)m 8(age)k +240 fnt82 1747 6448(is)m 1946(in)s 9(v)k 4(ok)k 2(ed.)k +2855(The)s 3272(body)s 3794(of)s 4054(the)s 4390(page)s +4887(is)s 5085(a)s 5240(straightforw)s 2(ard)k 6756(combination)s +7998(of)s 8257(pre)s 6(vious)k 0 6160(de\207nitions.)m 1171(The)s +220 fnt35 1595 6157(//)m 240 fnt82 1777 6160(symbol)m 2533(protects)s +3337(the)s 3681(follo)s 6(wing)k 220 fnt35 4655 6157(//1r)m -8(t)k +240 fnt82 5093 6160(from)m 5614(deletion)s 6437(in)s 6677(the)s +7021(unlik)s 2(ely)k 7854(e)s 6(v)k 3(ent)k +8419(that)s 8833(all)s 0 5872(the)m 342(preceding)s 1331(symbols)s +2174(are)s 2514(replaced)s 3375(by)s 220 fnt35 3662 5869(@Null)m +240 fnt82 4247 5872(.)m 4405(The)s 4826(follo)s 6(wing)k +5797(object)s 6434(is)s 6638(enclosed)s 7526(in)s 220 fnt35 +7763 5869(@OneRo)m 3(w)k 240 fnt82 8887 5872(to)m 0 5584(ensure)m +680(that)s 1098(all)s 1391(of)s 1662(it)s 1854(is)s +2064(bottom-justi\207ed,)s 3698(not)s 4064(just)s 4469(its)s 4745(\207rst)s +5176(component.)s 480 5210(Before)m 1199(presenting)s 2262(the)s 2624(de\207nition)s +3612(of)s 3896(a)s 4076(sequence)s 5023(of)s 5308(pages,)s +5974(we)s 6322(must)s 6861(detour)s 7546(to)s 7799(describe)s +8665(ho)s 6(w)k 0 4922(running)m 803(page)s 1317(headers)s +2104(and)s 2513(footers)s 3233(\(lik)s 2(e)k 3730(those)s +4297(in)s 4545(the)s 4899(present)s 5655(document\))s 6732(are)s +7085(produced.)s 8146(These)s 8779(are)s 0 4634(based)m 603(on)s +900(the)s 220 fnt35 1248 4631(@Runner)m 240 fnt82 2250 4634(symbol:)m +220 fnt35 480 4133(e)m 6(xpor)k -8(t @T)k 26(opOdd @T)k 26(opEv)k 5(en @F)k 6(ootOdd @F)k 6(ootEv)k 5(en)k +480 3845(def @Runner)m 480 3557( named @T)m 26(opOdd r)k -3(ight @P)k 8(ageNum { @Null })k +480 3269( named @T)m 26(opEv)k 5(en r)k -3(ight @P)k 8(ageNum { @Null })k +480 2981( named @F)m 6(ootOdd r)k -3(ight @P)k 8(ageNum { @Null })k 480 2693( named @F)m 6(ootEv)k 5(en r)k -3(ight @P)k 8(ageNum { @Null })k +480 2405( named @T)m 26(ag {})k 480 2117({ @Null })m 240 fnt82 0 1623(The)m +440(four)s 910(parameters)s 2020(control)s 2764(the)s 3125(format)s +3833(of)s 4116(running)s 4926(headers)s 5719(and)s 6136(footers)s +6862(on)s 7171(odd)s 7601(and)s 8017(e)s 6(v)k 3(en)k +8530(pages)s 0 1335(respecti)m 6(v)k 3(ely)k 15(.)k +1294(In)s 9(v)k 4(ocations)k 2448(of)s 220 fnt35 +2719 1332(@Runner)m 240 fnt82 3661 1335(,)m 3768(for)s 4106(e)s 3(xample)k +220 fnt35 480 834(@Runner)m 480 546( @T)m 26(opEv)k 5(en { @B @P)k 8(ageNum |1r)k -8(t @I { Chapter 4 } })k +480 258( @T)m 26(opOdd { @I { Examples } |1r)k -8(t @B @P)k 8(ageNum })k +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 81 87 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Italic +%%+ font Times-Bold +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +1 LoutMargSet +grestore +240 fnt83 0 13843(4.3.)m 454(P)s 19(a)k 2(g)k 2(e)k +976(layout)s 240 fnt84 8839 13840(81)m 240 fnt82 0 13205(will)m +416(be)s 687(embedded)s 1719(in)s 1951(the)s 2289(body)s +2812(te)s 3(xt)k 3217(of)s 3477(the)s 3815(document,)s +4855(and,)s 5298(as)s 5537(we)s 5862(will)s 6277(see)s +6628(in)s 6860(a)s 7016(moment,)s 7896(are)s 8232(accessed)s +0 12917(by)m 220 fnt35 296 12914(@Runner&&f)m 6(ollo)k 3(wing)k +240 fnt82 2423 12917(cross)m 2967(references)s 4001(on)s 4301(the)s +4651(pages.)s 5363(Notice)s 6059(ho)s 6(w)k 6522(the)s +220 fnt35 6873 12914(@P)m 8(ageNum)k 240 fnt82 8112 12917(parameter)m +0 12629(of)m 265(each)s 753(parameter)s 1761(allo)s 6(ws)k +2423(the)s 2764(format)s 3454(of)s 3718(the)s 4059(running)s +4851(header)s 5541(to)s 5774(be)s 6049(speci\207ed)s 6950(while)s +7531(lea)s 4(ving)k 8277(the)s 8618(page)s 0 12341(number)m +791(to)s 1030(be)s 1312(substituted)s 2406(later)s 13(.)k +480 11967(W)m 19(e)k 843(may)s 1303(no)s 6(w)k +1758(de\207ne)s 220 fnt35 2393 11964(@OddP)m 8(ageList)k 240 fnt82 +3872 11967(,)m 3973(whose)s 4635(result)s 5219(is)s 5423(a)s +5583(sequence)s 6510(of)s 6775(pages)s 7365(be)s 3(ginning)k +8367(with)s 8843(an)s 0 11679(odd-numbered)m 1454(page:)s 220 fnt35 +480 11178(def @OddP)m 8(ageList)k 480 10890( named @Columns {})m 480 10602( r)m -3(ight @P)k 8(ageNum)k +480 10314({)m 480 10026( def @Ev)m 5(enP)k 8(ageList ...)k 480 9450( @P)m 8(ageMar)k -3(k)k 4(er @P)k 8(ageNum)k +480 9162( // @Runner&&f)m 6(ollo)k 3(wing @Open {)k 480 8874( @OneP)m 8(age)k +480 8586( @Columns { @Columns })m 480 8298( @P)m 8(ageT)k 26(op { @T)k 26(opOdd @P)k 8(ageNum })k +480 8010( @P)m 8(ageF)k 6(oot { @F)k 6(ootOdd @P)k 8(ageNum })k +480 7722( })m 480 7434( // @Ev)m 5(enP)k 8(ageList)k 480 7146( @Columns { @Columns })m +480 6858( @Ne)m 6(xt @P)k 8(ageNum)k 480 6570(})m 240 fnt82 +0 6076(Ignoring)m 220 fnt35 887 6073(@Ev)m 5(enP)k 8(ageList)k +240 fnt82 2516 6076(for)m 2865(the)s 3223(moment,)s 4125(notice)s +4775(\207rst)s 5217(that)s 5645(the)s 6004(in)s 9(v)k 4(ocation)k +7068(of)s 220 fnt35 7350 6073(@OneP)m 8(age)k 240 fnt82 +8554 6076(is)m 8775(en)s 8998(-)s 0 5788(closed)m 679(in)s +220 fnt35 932 5785(@Runner&&f)m 6(ollo)k 3(wing @Open)k 240 fnt82 +3815 5788(.)m 3989(Since)s 220 fnt35 4586 5785(@Runner&&f)m 6(ollo)k 3(wing)k +240 fnt82 6721 5788(refers)m 7324(to)s 7573(the)s 7931(\207rst)s +8373(in)s 9(v)k 4(oca)k 8998(-)s 0 5500(tion)m +421(of)s 220 fnt35 684 5497(@Runner)m 240 fnt82 1678 5500(appearing)m +2666(after)s 3154(itself)s 3694(in)s 3929(the)s 4269(\207nal)s +4741(printed)s 5468(document,)s 6511(the)s 6851(symbols)s 220 fnt35 +7692 5497(@T)m 26(opOdd)k 240 fnt82 8722 5500(and)m 220 fnt35 +0 5209(@F)m 6(ootOdd)k 240 fnt82 1127 5212(will)m 1562(tak)s 2(e)k +2023(their)s 2528(v)s 6(alue)k 3105(from)s 3638(the)s +3995(\207rst)s 4434(in)s 9(v)k 4(ocation)k 5497(of)s +220 fnt35 5777 5209(@Runner)m 240 fnt82 6788 5212(follo)m 6(wing)k +7773(the)s 8130(top)s 8498(of)s 8778(the)s 0 4924(page,)m +554(e)s 6(v)k 3(en)k 1049(though)s 220 fnt35 +1767 4921(@F)m 6(ootOdd)k 240 fnt82 2880 4924(appears)m 3656(at)s +3883(the)s 4225(foot)s 4665(of)s 4931(the)s 5274(page.)s +5884(Their)s 220 fnt35 6456 4921(@P)m 8(ageNum)k 240 fnt82 +7687 4924(parameters)m 8779(are)s 0 4636(replaced)m 867(by)s 220 fnt35 +1161 4633(@P)m 8(ageNum)k 240 fnt82 2337 4636(,)m 2444(the)s +2792(actual)s 3417(page)s 3925(number)s 4716(parameter)s 5730(of)s +220 fnt35 6001 4633(@OddP)m 8(ageList)k 240 fnt82 7480 4636(.)m +480 4262(After)m 1043(producing)s 2067(the)s 2415(odd-numbered)s 3869(page,)s +220 fnt35 4428 4259(@OddP)m 8(ageList)k 240 fnt82 5967 4262(in)m 9(v)k 4(ok)k 2(es)k +220 fnt35 6748 4259(@Ev)m 5(enP)k 8(ageList)k 240 fnt82 +8307 4262(:)m 220 fnt35 480 3761(def @Ev)m 5(enP)k 8(ageList)k +480 3473( named @Columns {})m 480 3185( r)m -3(ight @P)k 8(ageNum)k 480 2897({)m +480 2609( @P)m 8(ageMar)k -3(k)k 4(er @P)k 8(ageNum)k +480 2321( // @Runner&&f)m 6(ollo)k 3(wing @Open {)k 480 2033( @OneP)m 8(age)k +480 1745( @Columns { @Columns })m 480 1457( @P)m 8(ageT)k 26(op { @T)k 26(opEv)k 5(en @P)k 8(ageNum })k +480 1169( @P)m 8(ageF)k 6(oot { @F)k 6(ootEv)k 5(en @P)k 8(ageNum })k +480 881( })m 480 593( // @OddP)m 8(ageList)k 480 305( @Columns { @Columns })m +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 82 88 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +%%+ font Times-Italic +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +0 LoutMargSet +grestore +240 fnt84 0 13840(82)m 240 fnt83 7017 13843(Chapter)m 7867(4.)s +8141(Examples)s 220 fnt35 480 13207( @Ne)m 6(xt @P)k 8(ageNum)k +480 12919(})m 240 fnt82 0 12425(This)m 465(produces)s 1369(an)s +1641(e)s 6(v)k 3(en-numbered)k 3167(page,)s 3714(then)s +4172(passes)s 4823(the)s 5160(ball)s 5562(back)s 6063(to)s +220 fnt35 6291 12422(@OddP)m 8(ageList)k 240 fnt82 7819 12425(\211)m +7988(a)s 8142(delightful)s 0 12137(e)m 3(xample)k 877(of)s +1162(what)s 1701(computer)s 2678(scientists)s 3619(call)s 4032(mutual)s +4765(recursion.)s 5832(The)s 6274(tw)s 2(o)k 6699(page)s +7221(types)s 7791(dif)s 6(fer)k 8388(only)s 8883(in)s +0 11849(their)m 497(running)s 1295(headers)s 2076(and)s 2480(footers,)s +3250(b)s 4(ut)k 3612(other)s 4163(changes)s 4985(could)s +5575(easily)s 6186(be)s 6468(made.)s 480 11475(It)m 682(w)s 2(as)k +1099(foreshado)s 6(wed)k 2489(earlier)s 3153(that)s 3568(an)s +3847(in)s 9(v)k 4(ocation)k 4897(of)s 220 fnt35 +5164 11472(@P)m 8(ageMar)k -3(k)k 4(er)k 240 fnt82 +6630 11475(w)m 2(ould)k 7281(precede)s 8076(each)s 8567(page,)s +0 11187(and)m 412(this)s 817(has)s 1195(been)s 1713(done.)s +2351(Although)s 3322(this)s 220 fnt35 3726 11184(@P)m 8(ageMar)k -3(k)k 4(er)k +240 fnt82 5204 11187(is)m 5422(a)s 5597(component)s 6729(of)s +7009(the)s 7365(root)s 7819(g)s 1(alle)k 3(y)k 15(,)k +8499(it)s 8700(will)s 0 10899(not)m 366(cause)s 953(a)s +1119(page)s 1627(to)s 1866(be)s 2148(printed,)s 2932(because)s +3745(Basser)s 4442(Lout)s 4954(skips)s 5497(components)s 6705(of)s +6976(height)s 7634(zero.)s 240 fnt84 0 10106(4.4.)m 471(Chapters)s +1468(and)s 1909(sections)s 240 fnt82 480 9629(The)m 905(de\207nitions)s +1962(of)s 2229(chapters)s 3073(and)s 3473(sections)s 4290(from)s +4811(the)s 5155(DocumentSetup)s 6746(package)s 7583(of)s 7850(V)s 26(ersion)k +8634(2)s 8804(\(in)s 0 9341(V)m 26(ersion)k 793(3,)s +1026(the)s 1379(BookSetup)s 2503(e)s 3(xtension)k 3480(of)s +3756(DocumentSetup\))s 5432(form)s 5961(the)s 6315(subject)s 7058(of)s +7334(this)s 7736(section.)s 8583(The)s 3(y)k 0 9053(allo)m 6(w)k +579(a)s 745(chapter)s 1508(to)s 1747(be)s 2029(entered)s +2790(lik)s 2(e)k 3202(this:)s 220 fnt35 480 8552(@Chapter)m +480 8264( @Title { ...)m 13( })k 480 7976( @T)m 26(ag { ...)k 13( })k +480 7688(@Begin)m 480 7400( ...)m 480 7112(@End @Chapter)m 240 fnt82 0 6616(W)m 9(ithin)k +712(the)s 1060(chapter)s 1823(a)s 1989(sequence)s 2922(of)s +3193(sections)s 4014(may)s 4480(be)s 4762(included)s 5644(by)s +5938(writing)s 220 fnt35 480 6115(@BeginSections)m 480 5827(@Section { ...)m 13( })k +480 5539(...)m 480 5251(@Section { ...)m 13( })k 480 4963(@EndSections)m 240 fnt82 +0 4508(These)m 627(are)s 974(numbered)s 1989(automatically)s 15(,)k +3381(and)s 3785(an)s 4068(entry)s 4613(is)s 4823(made)s +5397(for)s 5735(each)s 6230(in)s 6473(a)s 6639(table)s +7159(of)s 7430(contents.)s 480 4134(The)m 901(user)s 1352(of)s +1615(the)s 1956(DocumentSetup)s 3544(package)s 4376(can)s 4758(\207nd)s +5182(the)s 5522(number)s 6306(of)s 6570(the)s 6910(chapter)s +7666(or)s 7918(section)s 8644(with)s 0 3846(a)m 176(gi)s 6(v)k 3(en)k +766(tag)s 1121(by)s 1426(writing)s 220 fnt35 2179 3843(@NumberOf tag)m +240 fnt82 3838 3846(at)m 4081(an)s 3(y)k 4488(point)s +5050(in)s 5304(the)s 5662(document.)s 6780(This)s 7267(feature)s +7995(is)s 8215(based)s 8829(on)s 0 3558(the)m 348(follo)s 6(wing)k +1325(de\207nitions:)s 220 fnt35 480 3057(e)m 6(xpor)k -8(t @T)k 26(ag)k +480 2769(def @NumberMar)m -3(k)k 4(er r)k -3(ight @T)k 26(ag { @Null })k +480 2193(def @NumberOf r)m -3(ight x)k 480 1905({ @NumberMar)m -3(k)k 4(er&&x @Open { @T)k 26(ag } })k +240 fnt82 0 1406(Each)m 522(chapter)s 1272(and)s 1663(section)s +2384(will)s 2797(contain)s 3545(one)s 3934(in)s 9(v)k 4(ocation)k +4975(of)s 220 fnt35 5233 1403(@NumberMar)m -3(k)k 4(er)k +240 fnt82 6918 1406(;)m 7017(a)s 7170(full)s 7543(e)s 3(xplanation)k +8700(will)s 0 1118(be)m 282(gi)s 6(v)k 3(en)k +862(later)s 13(.)k 480 744(A)m 710(sequence)s 1643(of)s +1914(places)s 2562(for)s 2900(recei)s 6(ving)k 3836(chapters)s +4683(is)s 4893(easily)s 5504(de\207ned:)s 220 fnt35 480 243(e)m 6(xpor)k -8(t @T)k 26(ag)k + +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 83 89 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Italic +%%+ font Times-Bold +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +1 LoutMargSet +grestore +240 fnt83 0 13843(4.4.)m 454(Chapter)s 2(s)k 1385(and)s +1811(sections)s 240 fnt84 8833 13840(83)m 220 fnt35 480 13207(def @ChapterList r)m -3(ight @T)k 26(ag)k +480 12919({)m 480 12631( @Galle)m 4(y)k 480 12343( //@ChapterGap @ChapterList @Ne)m 6(xt @T)k 26(ag)k +480 12055(})m 0 11558(@ChapterGap)m 240 fnt82 1505 11561(will)m 1967(usually)s +2747(be)s 220 fnt35 3065 11558(1.1b)m 240 fnt82 3484 11561(,)m +3626(ensuring)s 4539(that)s 4992(each)s 5523(chapter)s 6321(be)s 3(gins)k +7030(on)s 7362(a)s 7564(ne)s 6(w)k 8046(page.)s +8698(The)s 220 fnt35 0 11270(@Chapter)m 240 fnt82 1063 11273(g)m 1(alle)k 3(y)k +1697(itself)s 2245(is)s 2455(de\207ned)s 3218(as)s 3468(follo)s 6(ws:)k +220 fnt35 480 10772(e)m 6(xpor)k -8(t @F)k 6(ootNote @BeginSections @EndSections @Section)k +480 10484(def @Chapter f)m 6(orce into { @ChapterList&&preceding })k 480 10196( named @T)m 26(ag {})k 480 9908( named @Title {})m +480 9620( named @RunningTitle { dft })m 480 9332( body @Body)m 480 9044({)m 480 8756( def @F)m 6(ootNote r)k -3(ight x { @ColF)k 6(ootNote x })k +480 8180( def @BeginSections ...)m 480 7892( def @EndSections ...)m 480 7604( def @Section ...)m 480 7151( def @ChapterTitle)m 480 6863( {)m +480 6575( @ChapterNumbers @Case {)m 480 6287( {Y)m 30(es y)k 4(es} @Y)k 4(ield { Chapter {@NumberOf @T)k 26(ag}.)k 13( |2s @Title })k +480 5999( else @Y)m 4(ield @Title)k 480 5711( })m 480 5423( })m 480 4847( def @ChapterNum)m +480 4559( {)m 480 4271( @ChapterNumbers @Case {)m 480 3983( {Y)m 30(es y)k 4(es} @Y)k 4(ield { Chapter {@NumberOf @T)k 26(ag} })k +480 3695( else @Y)m 4(ield @Null)k 480 3407( })m 480 3119( })m 480 2627( r)m 2(agged @Break @BookTitleF)k 6(or)k -5(mat @ChapterTitle)k +480 2339( // @NumberMar)m -3(k)k 4(er {)k 480 2051( @ChapterList&&@T)m 26(ag @Open { @T)k 26(ag })k +480 1763( })m 480 1475( // @ChapterList&&preceding @T)m 26(agged @T)k 26(ag)k 480 1187( // @NumberMar)m -3(k)k 4(er&&preceding @T)k 26(agged @T)k 26(ag)k +480 899( // @P)m 8(ageMar)k -3(k)k 4(er&&preceding @T)k 26(agged @T)k 26(ag)k +480 611( // { @ChapterTitle } @MajorContentsEntr)m -6(y {@P)k 8(ageOf @T)k 26(ag})k 480 323( // @Runner)m + +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 84 90 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +%%+ font Times-Italic +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +0 LoutMargSet +grestore +240 fnt84 0 13840(84)m 240 fnt83 7017 13843(Chapter)m 7867(4.)s +8141(Examples)s 220 fnt35 480 13207( @F)m 6(ootEv)k 5(en { |0.5r)k -8(t 0.8f @F)k 6(ont @B @P)k 8(ageNum })k +480 12919( @F)m 6(ootOdd { |0.5r)k -8(t 0.8f @F)k 6(ont @B @P)k 8(ageNum })k +480 12631( // @Body)m 480 12343( //@SectionGap @ChapRefSection)m 480 12055( // @Runner)m 480 11767( @T)m 26(opEv)k 5(en { @B @P)k 8(ageNum |1r)k -8(t @I @ChapterNum })k +480 11479( @T)m 26(opOdd { @I {@RunningTitle @OrElse @Title} |1r)k -8(t @B @P)k 8(ageNum })k 480 11191(})m +240 fnt82 0 10697(W)m 19(e)k 371(will)s 800(see)s +1164(the)s 1515(symbols)s 2366(for)s 2707(sections)s 3531(shortly)s 15(.)k +4347(Notice)s 5042(ho)s 6(w)k 5506(their)s 6006(use)s +6384(has)s 6756(been)s 7268(restricted)s 8216(to)s 8458(within)s +0 10409(the)m 348(right)s 859(parameter)s 1873(of)s 220 fnt35 +2144 10406(@Chapter)m 240 fnt82 3147 10409(,)m 3254(by)s 3548(nesting)s +4292(them)s 4830(and)s 5234(using)s 5806(a)s 5972(body)s +6506(parameter)s 13(.)k 480 10035(The)m 956(meaning)s 1882(of)s +220 fnt35 2202 10032(@F)m 6(ootNote)k 240 fnt82 3422 10035(within)m +220 fnt35 4139 10032(@Chapter)m 240 fnt82 5250 10035(has)m 5669(been)s +6227(set)s 6601(to)s 220 fnt35 6889 10032(@ColF)m 6(ootNote)k +240 fnt82 8328 10035(,)m 8484(which)s 0 9747(produces)m 907(a)s +1064(footnote)s 1908(tar)s 4(geted)k 2722(to)s 220 fnt35 +2953 9744(@ColF)m 6(ootList)k 240 fnt82 4325 9747(\(see)m 4756(Section)s +5521(4.3\).)s 6056(In)s 6303(other)s 6845(w)s 2(ords,)k +7526(footnotes)s 8458(within)s 0 9459(chapters)m 851(go)s 1149(at)s +1386(the)s 1739(foot)s 2189(of)s 2465(the)s 2818(column,)s +3648(not)s 4019(at)s 4256(the)s 4609(foot)s 5059(of)s +5335(the)s 5688(page.)s 6309(\(Of)s 6717(course,)s 7453(in)s +7701(single-column)s 0 9171(books)m 623(this)s 1018(distinction)s 2083(is)s +2292(insigni\207cant.\))s 220 fnt35 3721 9168(@ChapterTitle)m 240 fnt82 5188 9171(and)m +220 fnt35 5591 9168(@ChapterNum)m 240 fnt82 7102 9171(are)m 7448(tri)s 6(vial)k +8065(de\207nitions)s 0 8883(which)m 642(v)s 6(ary)k 1115(depending)s +2166(on)s 2463(whether)s 3293(the)s 3641(user)s 4099(has)s +4469(requested)s 5443(numbered)s 6458(chapters)s 7305(or)s 7564(not.)s +480 8509(Each)m 1014(in)s 9(v)k 4(ocation)k 2066(of)s +220 fnt35 2336 8506(@Chapter)m 240 fnt82 3397 8509(has)m 3766(its)s +4040(o)s 6(wn)k 4503(unique)s 220 fnt35 5209 8506(@T)m 26(ag)k +240 fnt82 5772 8509(,)m 5878(either)s 6479(supplied)s 7347(by)s +7639(the)s 7986(user)s 8442(or)s 8699(else)s 0 8221(inserted)m +835(automatically)s 2210(by)s 2525(Lout.)s 3162(W)s 19(e)k +3553(no)s 6(w)k 4035(trace)s 4575(the)s 4944(cross)s +5507(referencing)s 6669(of)s 6961(chapter)s 7745(numbers)s 8641(on)s +8960(a)s 0 7933(h)m 1(ypothetical)k 1236(third)s 1745(chapter)s +2508(whose)s 3176(tag)s 3521(is)s 220 fnt35 3731 7930(euclid)m +240 fnt82 4291 7933(.)m 220 fnt35 480 7556(@ChapterList&&preceding @T)m 26(agged euclid)k +240 fnt82 4758 7559(attaches)m 220 fnt35 5574 7556(euclid)m 240 fnt82 +6190 7559(as)m 6436(an)s 6715(e)s 3(xtra)k 7245(tag)s +7586(to)s 7821(the)s 8165(\207rst)s 8592(in)s 9(v)k 4(o)k +8998(-)s 0 7271(cation)m 653(of)s 220 fnt35 937 7268(@ChapterList)m +240 fnt82 2350 7271(preceding)m 3359(itself)s 3920(in)s 4176(the)s +4536(\207nal)s 5029(printed)s 5777(document.)s 6898(But)s 7317(this)s +220 fnt35 7726 7268(@ChapterList)m 240 fnt82 0 6983(must)m 525(be)s +807(the)s 1155(tar)s 4(get)k 1754(of)s 2025(the)s +2373(chapter)s 9(,)k 3174(and)s 3578(so)s 220 fnt35 +480 6482(@ChapterList&&euclid @Open { @T)m 26(ag })k 240 fnt82 0 5983(is)m 200(3,)s +416(the)s 754(number)s 1534(of)s 1795(the)s 2132(chapter)s +2885(\()s 220 fnt35 2958 5980(@T)m 26(ag)k 240 fnt82 +3570 5983(refers)m 4153(to)s 4381(the)s 4719(parameter)s 5722(of)s +220 fnt35 5983 5980(@ChapterList)m 240 fnt82 7323 5983(,)m 7419(not)s +7775(the)s 8112(parameter)s 0 5695(of)m 220 fnt35 272 5692(@Chapter)m +240 fnt82 1275 5695(\).)m 1520(Consequently)s 2892(the)s 3242(in)s 9(v)k 4(ocation)k +4297(of)s 220 fnt35 4570 5692(@NumberMar)m -3(k)k 4(er)k +240 fnt82 6317 5695(within)m 6986(the)s 7336(chapter)s 8100(is)s +8312(equal)s 8887(to)s 220 fnt35 0 5404(@NumberMar)m -3(k)k 4(er 3)k +240 fnt82 1861 5407(.)m 220 fnt35 480 5030(@NumberMar)m -3(k)k 4(er&&preceding @T)k 26(agged euclid)k +240 fnt82 5137 5033(attaches)m 220 fnt35 5992 5030(euclid)m 240 fnt82 +6646 5033(to)m 220 fnt35 6920 5030(@NumberMar)m -3(k)k 4(er 3)k +240 fnt82 8876 5033(as)m 0 4745(an)m 283(e)s 3(xtra)k +817(tag,)s 1216(and)s 1620(so)s 220 fnt35 1886 4742(@NumberOf euclid)m +240 fnt82 3742 4745(,)m 3849(which)s 4491(e)s 3(xpands)k +5324(to)s 220 fnt35 480 4244(@NumberMar)m -3(k)k 4(er&&euclid @Open { @T)k 26(ag })k +240 fnt82 0 3745(must)m 538(be)s 833(equal)s 1419(to)s +1671(3,)s 1911(as)s 2175(required.)s 3148(This)s 3637(scheme)s +4423(could)s 5026(be)s 5322(simpli\207ed)s 6349(by)s 6656(placing)s +7426(the)s 7787(in)s 9(v)k 4(ocation)k 8855(of)s +220 fnt35 0 3454(@NumberMar)m -3(k)k 4(er)k 240 fnt82 +1758 3457(within)m 220 fnt35 2440 3454(@ChapterList)m 240 fnt82 3854 3457(rather)m +4484(than)s 4966(within)s 220 fnt35 5648 3454(@Chapter)m 240 fnt82 +6651 3457(,)m 6772(b)s 4(ut)k 7148(it)s 7353(turns)s +7896(out)s 8276(that)s 8708(that)s 0 3169(scheme)m 773(does)s +1263(not)s 1629(generalize)s 2666(well)s 3132(to)s 3371(sections)s +4192(and)s 4596(subsections.)s 480 2795(There)m 1124(is)s 1365(a)s +1562(trap)s 2017(for)s 2386(the)s 2765(unw)s 2(ary)k +3566(in)s 3840(the)s 4219(use)s 4625(of)s 220 fnt35 +4927 2792(preceding)m 240 fnt82 5969 2795(and)m 220 fnt35 6404 2792(f)m 6(ollo)k 3(wing)k +240 fnt82 7234 2795(.)m 7429(Suppose)s 8328(that)s 8778(the)s +0 2507(in)m 9(v)k 4(ocation)k 1054(of)s 220 fnt35 +1325 2504(@NumberMar)m -3(k)k 4(er)k 240 fnt82 3070 2507(within)m +220 fnt35 3738 2504(@Chapter)m 240 fnt82 4801 2507(is)m 5011(replaced)s +5878(by)s 6172(the)s 6520(seemingly)s 7557(equi)s 6(v)k 6(alent)k +220 fnt35 480 2006(@NumberMar)m -3(k)k 4(er { @ChapterList&&preceding @Open { @T)k 26(ag } })k +240 fnt82 0 1507(No)m 6(w)k 514(suppose)s 1342(that)s +220 fnt35 1760 1504(@NumberOf euclid)m 240 fnt82 3676 1507(appears)m 4457(some)s 6(where)k +5596(within)s 6264(Chapter)s 7081(7.)s 7365(It)s 7570(will)s +7996(e)s 3(xpand)k 8743(to)s 220 fnt35 480 1006(@NumberMar)m -3(k)k 4(er&&euclid @Open { @T)k 26(ag })k +240 fnt82 0 507(which)m 642(w)s 2(ould)k 1297(no)s 6(w)k +1758(be)s 2040(equal)s 2613(to)s +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 85 91 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Italic +%%+ font Times-Bold +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +1 LoutMargSet +grestore +240 fnt83 0 13843(4.4.)m 454(Chapter)s 2(s)k 1385(and)s +1811(sections)s 240 fnt84 8833 13840(85)m 220 fnt35 480 13207(@ChapterList&&preceding @Open { @T)m 26(ag })k +240 fnt82 0 12708(whose)m 663(v)s 6(alue,)k 1276(e)s 6(v)k 6(aluated)k +2233(as)s 2477(it)s 2663(is)s 2868(within)s 3530(Chapter)s +4342(7,)s 4563(is)s 4767(7,)s 4989(not)s 5349(3.)s +5628(Use)s 6050(of)s 220 fnt35 6315 12705(preceding)m 240 fnt82 +7321 12708(or)m 220 fnt35 7574 12705(f)m 6(ollo)k 3(wing)k +240 fnt82 8458 12708(within)m 0 12420(the)m 348(parameter)s 1362(of)s +1633(a)s 1799(symbol,)s 2611(rather)s 3227(than)s 3696(within)s +4364(the)s 4712(body)s 15(,)k 5284(is)s 5494(lik)s 2(ely)k +6090(to)s 6329(be)s 6611(erroneous.)s 480 12046(Much)m 1112(of)s +1400(the)s 1765(remainder)s 2810(of)s 3098(the)s 3463(de\207nition)s +4454(of)s 220 fnt35 4742 12043(@Chapter)m 240 fnt82 5822 12046(is)m +6049(f)s 2(airly)k 6634(self-e)s 3(xplanatory:)k 8366(there)s +8916(is)s 0 11758(a)m 180(heading,)s 1060(a)s 1241(tag)s +1601(sent)s 2060(to)s 2314(mark)s 2881(the)s 3244(page)s +3766(on)s 4078(which)s 4735(the)s 5098(chapter)s 5875(be)s 3(gins,)k +6619(a)s 220 fnt35 6800 11755(@ContentsEntr)m -6(y)k 240 fnt82 +8492 11758(g)m 1(alle)k 3(y)k 0 11470(sent)m 484(to)s +762(the)s 1149(table)s 1708(of)s 2018(contents,)s 2961(g)s 1(alle)k 3(ys)k +3724(for)s 4101(the)s 4489(\207gures)s 5230(and)s 5673(tables)s +6320(of)s 6630(the)s 7017(chapter)s 7819(to)s 8097(collect)s +8833(in,)s 220 fnt35 0 11179(@Body)m 240 fnt82 781 11182(where)m +1421(the)s 1769(body)s 2303(of)s 2574(the)s 2922(chapter)s +3685(goes,)s 4230(and)s 220 fnt35 4634 11179(@ChapRefSection)m 240 fnt82 +6499 11182(to)m 6738(hold)s 7222(a)s 7388(concluding)s 8505(list)s +8855(of)s 0 10894(references.)m 1144(This)s 1620(lea)s 4(v)k 3(es)k +2261(only)s 2741(the)s 3089(tw)s 2(o)k 3499(in)s 9(v)k 4(ocations)k +4640(of)s 220 fnt35 4911 10891(@Runner)m 240 fnt82 5913 10894(to)m +6152(e)s 3(xplain.)k 480 10520(The)m 977(\207rst)s 220 fnt35 +1478 10517(@Runner)m 240 fnt82 2550 10520(is)m 2830(just)s 3305(belo)s 6(w)k +4008(the)s 4426(heading.)s 5418(It)s 5693(will)s 6189(be)s +6541(the)s 6959(tar)s 4(get)k 7628(of)s 7969(the)s +220 fnt35 8387 10517(@Run)m 240 fnt82 8998 10520(-)m 220 fnt35 +0 10229(ner&&f)m 6(ollo)k 3(wing)k 240 fnt82 1494 10232(cross)m +2030(reference)s 2967(at)s 3194(the)s 3536(be)s 3(ginning)k +4538(of)s 4803(the)s 5146(\207rst)s 5571(page)s 6073(of)s +6338(the)s 6681(chapter)s 7438(\(see)s 7872(Section)s 8640(4.3\),)s +0 9944(which)m 642(consequently)s 1959(will)s 2385(ha)s 4(v)k 3(e)k +2886(null)s 3313(running)s 4111(headers)s 4892(and)s 5296(the)s +5644(gi)s 6(v)k 3(en)k 6224(footers.)s 480 9570(The)m +954(second)s 220 fnt35 1724 9567(@Runner)m 240 fnt82 2772 9570(appears)m +3600(at)s 3878(the)s 4273(v)s 3(ery)k 4795(end)s +5246(of)s 5563(the)s 5958(chapter)s 9(,)k 6805(hence)s +7466(on)s 7809(its)s 8132(last)s 8570(page.)s 0 9282(Since)m +595(no)s 896(in)s 9(v)k 4(ocations)k 2046(of)s +220 fnt35 2325 9279(@Runner)m 240 fnt82 3335 9282(lie)m 3638(between)s +4500(it)s 4700(and)s 5113(the)s 5469(\207rst)s 220 fnt35 +5908 9279(@Runner)m 240 fnt82 6850 9282(,)m 6966(it)s 7166(will)s +7600(be)s 7891(the)s 8247(tar)s 4(get)k 8855(of)s +220 fnt35 0 8991(@Runner&&f)m 6(ollo)k 3(wing)k 240 fnt82 +2134 8994(on)m 2442(e)s 6(v)k 3(ery)k 3029(page)s +3547(from)s 4082(the)s 4441(second)s 5175(page)s 5693(of)s +5975(the)s 6334(chapter)s 7107(to)s 7357(the)s 7716(last,)s +8165(inclusi)s 6(v)k 3(e,)k 0 8706(and)m 404(will)s +830(supply)s 1523(the)s 1871(format)s 2567(of)s 2838(their)s +3335(headers)s 4116(and)s 4520(footers.)s 480 8332(The)m 908(interested)s +1893(reader)s 2549(might)s 3166(care)s 3618(to)s 3857(predict)s +4579(the)s 4927(outcome)s 5806(in)s 6048(unusual)s 6848(cases,)s +7458(such)s 7954(as)s 8203(when)s 8778(the)s 0 8044(heading)m +811(occupies)s 1699(tw)s 2(o)k 2109(pages,)s 2761(or)s +3020(when)s 3596(a)s 3762(chapter)s 4524(occupies)s 5412(only)s +5892(one,)s 6345(or)s 6604(\(assuming)s 7640(a)s 7806(change)s +8540(to)s 8778(the)s 0 7756(g)m 1(ap)k 386(between)s +1227(chapters\))s 2138(when)s 2702(a)s 2855(chapter)s 3605(starts)s +4146(halfw)s 2(ay)k 4956(do)s 6(wn)k 5527(a)s +5680(page.)s 6283(Such)s 6807(predictions)s 7907(can)s 8283(be)s +8552(made)s 0 7468(with)m 482(great)s 1019(con\207dence.)s 480 7094(The)m +903(e)s 3(xpression)k 220 fnt35 1975 7091(@RunningTitle @OrElse @Title)m 240 fnt82 +5125 7094(appearing)m 6116(in)s 6354(the)s 6697(second)s 220 fnt35 +7415 7091(@Runner)m 240 fnt82 8412 7094(returns)m 0 6806(the)m 354(v)s 6(alue)k +928(of)s 1205(the)s 220 fnt35 1560 6803(@RunningTitle)m 240 fnt82 +3070 6806(parameter)m 4090(of)s 220 fnt35 4368 6803(@Chapter)m 240 fnt82 +5437 6806(if)m 5660(this)s 6063(is)s 6279(not)s 6651(equal)s +7231(to)s 7476(the)s 7830(def)s 2(ault)k 8558(v)s 6(alue)k +220 fnt35 0 6515(dft)m 240 fnt82 240 6518(,)m 347(or)s +220 fnt35 606 6515(@Title)m 240 fnt82 1294 6518(otherwise:)m 220 fnt35 +480 6036(def @OrElse)m 480 5748( left x)m 480 5460( r)m -3(ight y)k 480 5172({)m +480 4884( x @Case {)m 480 4596( dft @Y)m 4(ield y)k 480 4308( else @Y)m 4(ield x)k +480 4020( })m 480 3732(})m 240 fnt82 0 3238(This)m 476(produces)s +1391(the)s 1739(ef)s 6(fect)k 2335(of)s 220 fnt35 +480 2737(named @RunningTitle { @Title })m 240 fnt82 0 2238(which)m 676(unfortunately)s 2052(is)s +2296(not)s 2696(permissible)s 3887(as)s 4171(it)s 4397(stands,)s +5136(because)s 220 fnt35 5983 2235(@Title)m 240 fnt82 6705 2238(is)m +6949(not)s 7349(visible)s 8076(within)s 8778(the)s 0 1950(def)m 2(ault)k +721(v)s 6(alue)k 1289(of)s 220 fnt35 1560 1947(@RunningTitle)m +240 fnt82 3004 1950(.)m 480 1576(Finally)m 15(,)k 1249(the)s +1597(de\207nitions)s 2658(for)s 2996(sections)s 3817(omitted)s 4605(earlier)s +5273(are)s 5620(as)s 5870(follo)s 6(ws:)k 220 fnt35 +480 1075(def @EndSectionsPlace { @Galle)m 4(y })k 480 787(def @EndSections f)m 6(orce into { @EndSectionsPlace&&preceding } {})k 480 499(macro @BeginSections { //@SectionGap @SectionList 1 // @EndSectionsPlace // })m + +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 86 92 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +%%+ font Times-Italic +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +0 LoutMargSet +grestore +240 fnt84 0 13840(86)m 240 fnt83 7017 13843(Chapter)m 7867(4.)s +8141(Examples)s 220 fnt35 480 13207(def @Section f)m 6(orce into { @SectionList&&preceding })k 480 12919( named @T)m 26(ag {})k +480 12631( named @Title {})m 480 12343( named @RunningTitle { dft })m 480 12055( body @Body)m 480 11767({)m 480 11479( def @SectionTitle)m +480 11191( {)m 480 10903( @SectionNumbers @Case {)m 480 10615( {Y)m 30(es y)k 4(es} @Y)k 4(ield { {@NumberOf @T)k 26(ag}.)k 13( |2s @Title })k +480 10327( else @Y)m 4(ield @Title)k 480 10039( })m 480 9751( })m 480 9175( @Heading @Protect @SectionTitle)m +480 8887( // @NumberMar)m -3(k)k 4(er {)k 480 8599( {@ChapterList&&@T)m 26(ag @Open { @T)k 26(ag }}.{)k +480 8311( @SectionList&&@T)m 26(ag @Open { @T)k 26(ag }})k 480 8023( })m 480 7735( // @ChapterList&&preceding @T)m 26(agged @T)k 26(ag)k +480 7447( // @SectionList&&preceding @T)m 26(agged @T)k 26(ag)k 480 7159( // @NumberMar)m -3(k)k 4(er&&preceding @T)k 26(agged @T)k 26(ag)k +480 6871( // @P)m 8(ageMar)k -3(k)k 4(er&&preceding @T)k 26(agged @T)k 26(ag)k +480 6583( // { &3f @SectionTitle } @ContentsEntr)m -6(y {@P)k 8(ageOf @T)k 26(ag})k 480 6295( //0io @Body)m +480 6007(})m 240 fnt82 0 5513(The)m 220 fnt35 409 5510(@BeginSections)m +240 fnt82 2066 5513(macro)m 2696(in)s 9(v)k 4(ok)k 2(es)k +220 fnt35 3457 5510(@SectionList)m 240 fnt82 4748 5513(,)m 4835(preceded)s +5736(by)s 6010(the)s 6338(appropriate)s 7462(g)s 1(ap)k +7840(and)s 8224(follo)s 6(wed)k 0 5225(by)m 284(an)s +220 fnt35 556 5222(@EndSectsPlace)m 240 fnt82 2307 5225(for)m 2635(closing)s +3368(the)s 3705(list)s 4045(of)s 4306(sections)s 5116(when)s +5681(the)s 220 fnt35 6019 5222(@EndSections)m 240 fnt82 7515 5225(symbol)m +8264(is)s 8463(found.)s 220 fnt35 0 4934(@Section)m 240 fnt82 +997 4937(itself)m 1542(is)s 1749(just)s 2151(a)s 2314(cop)s 2(y)k +2829(of)s 220 fnt35 3097 4934(@Chapter)m 240 fnt82 4156 4937(with)m +4635(slight)s 5223(changes)s 6042(to)s 6278(the)s 6623(format.)s +7420(The)s 7845(parameter)s 8855(of)s 220 fnt35 0 4646(@NumberMar)m -3(k)k 4(er)k +240 fnt82 1752 4649(is)m 1970(a)s 2143(simple)s 2844(generalization)s +4262(of)s 4540(the)s 4896(one)s 5305(within)s 220 fnt35 +5981 4646(@Chapter)m 240 fnt82 6984 4649(.)m 7156(Notice)s 7856(that)s +8282(we)s 8625(ha)s 4(v)k 3(e)k 0 4361(tak)m 2(en)k +573(care)s 1026(that)s 1444(the)s 1792(v)s 6(alue)k +2360(of)s 2631(this)s 3027(parameter)s 4041(be)s 4323(a)s +4489(juxtaposition)s 5795(of)s 6066(simple)s 6759(w)s 2(ords:)k +7508(although)s 220 fnt35 480 3860({@ChapterList&&@T)m 26(ag @Open { @T)k 26(ag }}.)k 13( &)k +480 3572({@SectionList&&@T)m 26(ag @Open { @T)k 26(ag }})k 240 fnt82 0 3073(is)m +210(formally)s 1086(equi)s 6(v)k 6(alent,)k 220 fnt35 +2177 3070(&)m 240 fnt82 2379 3073(w)m 2(as)k 2800(not)s +3166(permitted)s 4139(within)s 4807(a)s 220 fnt35 4973 3070(@T)m 26(ag)k +240 fnt82 5596 3073(parameter)m 6610(until)s 7103(recently)s 15(.)k +480 2699(The)m 930(DocumentSetup)s 2548(package)s 3411(also)s 3872(contains)s +4743(de\207nitions)s 5826(for)s 6187(subsections)s 7364(in)s 7630(the)s +8001(same)s 8571(style.)s 0 2411(The)m 3(y)k 564(raise)s +1091(the)s 1461(question)s 2350(of)s 2643(whether)s 3494(Lout)s +4028(is)s 4259(capable)s 5066(of)s 5359(producing)s 6404(subsections)s +7580(should)s 8298(the)s 8668(user)s 0 2123(place)m 220 fnt35 +542 2120(@BeginSections)m 240 fnt82 2159 2123(,)m 220 fnt35 2248 2120(@Section)m +240 fnt82 3188 2123(,)m 3276(and)s 220 fnt35 3662 2120(@EndSections)m +240 fnt82 5151 2123(within)m 5800(a)s 240 fnt83 5948 2125(section)m +240 fnt82 6619 2123(,)m 6708(and)s 7093(whether)s 7905(such)s +8382(nesting)s 0 1835(could)m 592(proceed)s 1409(to)s 1650(arbitrary)s +2527(depth.)s 3225(Arbitrary)s 4169(nesting)s 4915(of)s 5188(sections)s +6011(within)s 6681(sections)s 7504(is)s 7716(a)s 4(v)k 6(ailable)k +8627(no)s 6(w)k 15(,)k 0 1547(although)m 883(the)s +1218(numbering)s 2295(w)s 2(ould)k 2937(of)s 3195(course)s +3862(be)s 4131(wrong.)s 4894(The)s 5309(author)s 5967(has)s +6324(w)s 2(ork)k 2(ed)k 7083(out)s 7436(de\207nitions)s +8484(which)s 0 1259(pro)m 3(vide)k 773(correct)s 1484(numbering)s +2563(to)s 2790(arbitrary)s 3654(depth,)s 4282(with)s 4752(an)s +5024(arbitrary)s 5888(format)s 6573(for)s 6899(each)s 7383(le)s 6(v)k 3(el.)k +7991(These)s 8606(were)s 0 971(not)m 376(incorporated)s 1652(into)s +2087(DocumentSetup)s 3693(because)s 4516(the)s 4874(author)s 5555(considers)s +6520(sub-)s 6921(subsections)s 8085(to)s 8334(be)s 8627(poor)s +0 683(style,)m 558(and)s 962(he)s 1244(prefers)s 1957(separate)s +2795(names)s 3457(for)s 3795(the)s 4143(symbols)s 4992(at)s +5224(each)s 5719(le)s 6(v)k 3(el.)k +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 87 93 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Italic +%%+ font Times-Bold +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +1 LoutMargSet +grestore +240 fnt83 0 13843(4.5.)m 454(Biblio)s 2(gr)k 3(aphies)k +240 fnt84 8831 13840(87)m 0 13203(4.5.)m 471(Bibliographies)s 240 fnt82 +533 12726(The)m 953(\207rst)s 1376(step)s 1806(in)s 2041(the)s +2382(production)s 3468(of)s 3731(a)s 3889(bibliograph)s 1(y)k +5157(is)s 5359(to)s 5591(create)s 6208(a)s 6366(database)s +7237(of)s 7500(references)s 8523(based)s 0 12438(on)m 297(the)s +645(de\207nition)s 220 fnt35 480 11987(e)m 6(xpor)k -8(t @T)k 26(ype @A)k 6(uthor @Title @Institution @Number @Pub)k 4(lisher)k +480 11699( @Y)m 30(ear @Proceedings @Jour)k -5(nal @V)k 17(olume @P)k 8(ages @Comment)k +480 11123(def @Ref)m 6(erence)k 480 10835( named @T)m 26(ag)k 3270({ )s 11(T)k 26(A)k 6(G? })k +480 10547( named @T)m 26(ype)k 3270({ )s 11(TYPE? })k 480 10259( named @A)m 6(uthor)k +3270({ A)s 11(UTHOR? })k 480 9971( named @Title)m 3270({ )s 11(TITLE? })k +480 9683( named @Institution)m 3270({ INSTITUTION? })s 480 9395( named @Number)m 3270({ NUMBER? })s 480 9107( named @Pub)m 4(lisher)k +3270({ PUBLISHER? })s 480 8819( named @Y)m 30(ear)k 3270({ )s 19(YEAR? })k +480 8531( named @Proceedings)m 3270({ PR)s 4(OCEEDINGS? })k 480 8243( named @Jour)m -5(nal)k +3270({ JOURNAL? })s 480 7955( named @V)m 17(olume)k 3270({ )s 11(V)k 8(OLUME? })k +480 7667( named @P)m 8(ages)k 3270({ P)s 26(A)k 6(GES? })k +480 7379( named @Comment)m 3270({ @Null })s 480 7091({ @Null })m 240 fnt82 0 6597(F)m 3(or)k +389(e)s 3(xample,)k 1303(the)s 1651(database)s 2530(might)s +3148(contain)s 220 fnt35 480 6096({ @Ref)m 6(erence)k 480 5808( @T)m 26(ag { str)k -3(unk1979style })k +480 5520( @T)m 26(ype { Book })k 480 5232( @A)m 6(uthor { Str)k -3(unk, )k 8(William and )k 8(White)k 3(, E.)k 13( B)k 4(.)k 13( })k +480 4944( @Title { )m 11(The Elements of Style })k 480 4656( @Pub)m 4(lisher { MacMillan, third edition })k 480 4368( @Y)m 30(ear { 1979 })k +480 4080(})m 480 3588({ @Ref)m 6(erence)k 480 3300( @T)m 26(ag { kingston92 })k +480 3012( @T)m 26(ype { )k 11(T)k 26(echRepor)k -8(t })k +480 2724( @A)m 6(uthor { Kingston, Jeffre)k 4(y H.)k 13( })k 480 2436( @Title { Document F)m 6(or)k -5(matting with Lout \(Second Edition\) })k +480 2148( @Number { 449 })m 480 1860( @Institution { Basser Depar)m -8(tment of Computer)k 480 1572(Science F09, Univ)m 5(ersity of Sydne)k 4(y 2006, A)k 6(ustr)k 2(alia })k +480 1284( @Y)m 30(ear { 1992 })k 480 996(})m 240 fnt82 0 502(Since)m +596(named)s 1301(parameters)s 2408(are)s 2764(optional,)s 3664(we)s +4008(ha)s 4(v)k 3(e)k 4519(one)s 4930(for)s +5277(e)s 6(v)k 3(ery)k 5862(concei)s 6(v)k 6(able)k +7057(type)s 7534(of)s 7814(attrib)s 4(ute,)k 8722(and)s +0 214(simply)m 702(lea)s 4(v)k 3(e)k 1252(out)s +1614(those)s 2172(that)s 2586(do)s 2876(not)s 3238(apply)s +3821(in)s 4060(an)s 3(y)k 4454(particular)s 5424(reference.)s +6472(W)s 19(e)k 6837(can)s 7223(print)s 7730(a)s +7893(reference)s 8832(by)s +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 88 94 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +%%+ font Times-Italic +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +0 LoutMargSet +grestore +240 fnt84 0 13840(88)m 240 fnt83 7017 13843(Chapter)m 7867(4.)s +8141(Examples)s 240 fnt82 0 13205(using)m 572(the)s 220 fnt35 +920 13202(@Open)m 240 fnt82 1726 13205(symbol)m 2486(to)s 2725(get)s +3077(at)s 3309(its)s 3585(attrib)s 4(utes:)k 220 fnt35 +480 12704(@Ref)m 6(erence&&str)k -3(unk1979style @Open)k 480 12416({ @A)m 6(uthor)k 11(, {Slope @F)k 6(ont @Title}.)k 13( @Pub)k 4(lisher)k 11(, @Y)k 30(ear)k 11(.)k 13( })k +240 fnt82 0 11920(The)m 428(right)s 939(parameter)s 1953(of)s +220 fnt35 2224 11917(@Open)m 240 fnt82 3030 11920(may)m 3496(use)s +3871(the)s 4219(e)s 3(xported)k 5111(parameters)s 6209(of)s +6480(the)s 6828(left,)s 7252(and)s 7656(so)s 7922(the)s +8270(result)s 8860(is)s 480 11415(W)m 9(illiam)k 1313(Strunk)s +2012(and)s 2416(E.)s 2666(B.)s 2930(White,)s 240 fnt83 +3681 11417(The)m 4093(Elements)s 5024(of)s 5305(Style)s 240 fnt82 +5762 11415(.)m 5926(Macmillan,)s 7068(1979.)s 0 10916(Incidentally)m 15(,)k +1235(we)s 1573(are)s 1923(not)s 2292(limited)s 3029(to)s +3271(just)s 3679(one)s 4084(database)s 4966(of)s 5240(references;)s +6335(se)s 6(v)k 3(eral)k 220 fnt35 7060 10913(@Database)m +240 fnt82 8277 10916(symbols)m 0 10628(can)m 380(nominate)s 1317(the)s +1656(same)s 2193(symbol,)s 2996(and)s 3391(in)s 9(v)k 4(ocations)k +4523(of)s 4784(that)s 5193(symbol)s 5944(can)s 6324(appear)s +7011(in)s 7245(the)s 7584(document)s 8578(itself)s 0 10340(as)m +250(well)s 716(if)s 933(we)s 1268(wish.)s 480 9966(The)m +930(second)s 1675(step)s 2135(is)s 2368(to)s 2629(create)s +3276(a)s 3464(database)s 4366(of)s 4659(print)s 5192(styles)s +5809(for)s 6170(the)s 6540(v)s 6(arious)k 7311(types)s +7889(of)s 8183(reference)s 0 9678(\(Book,)m 706(T)s 16(echReport,)k +1926(etc.\),)s 2450(based)s 3053(on)s 3350(the)s 3698(follo)s 6(wing)k +4675(de\207nition:)s 220 fnt35 480 9177(e)m 6(xpor)k -8(t @Style)k +480 8889(def @RefStyle)m 480 8601( left @T)m 26(ag)k 480 8313( named @Style r)m -3(ight reftag {})k +480 8025({})m 240 fnt82 0 7531(Notice)m 682(that)s 1089(the)s +1426(named)s 2111(parameter)s 220 fnt35 3114 7528(@Style)m 240 fnt82 +3865 7531(has)m 4224(a)s 4379(right)s 4879(parameter)s 220 fnt35 +5882 7528(reftag)m 240 fnt82 6431 7531(.)m 6584(The)s 7001(style)s +7497(database)s 8365(has)s 8724(one)s 0 7243(entry)m 545(for)s +883(each)s 1378(type)s 1846(of)s 2117(reference:)s 220 fnt35 +480 6742({ Book @RefStyle @Style)m 480 6454( { @Ref)m 6(erence&&reftag @Open)k 480 6166( { @A)m 6(uthor)k 11(, {Slope @F)k 6(ont @Title}.)k 13( @Pub)k 4(lisher)k 11(, @Y)k 30(ear)k 11(.)k 13( @Comment })k +480 5878( })m 480 5590(})m 480 5014({ )m 11(T)k 26(echRepor)k -8(t @RefStyle @Style)k +480 4726( { @Ref)m 6(erence&&reftag @Open)k 480 4438( { @A)m 6(uthor)k 11(, {Slope @F)k 6(ont @Title}.)k 13( )k 11(T)k 26(ech.)k 13( Rep)k 7(.)k 13( @Number \(@Y)k 30(ear\),)k +480 4150(@Institution.)m 13( @Comment })k 480 3862( })m 480 3574(})m 240 fnt82 +0 3080(and)m 404(so)s 670(on.)s 1074(The)s 1502(follo)s 6(wing)k +2479(prints)s 3074(the)s 3422(reference)s 4365(whose)s 5033(tag)s +5378(is)s 220 fnt35 5588 3077(str)m -3(unk1979style)k 240 fnt82 +7180 3080(in)m 7423(the)s 7771(Book)s 8352(style:)s 220 fnt35 +480 2579(@RefStyle&&Book @Open { @Style str)m -3(unk1979style })k 240 fnt82 0 2081(It)m 205(has)s +575(result)s 480 1626(W)m 9(illiam)k 1313(Strunk)s 2012(and)s +2416(E.)s 2666(B.)s 2930(White.)s 240 fnt83 3678 1628(The)m +4090(Elements)s 5021(of)s 5302(Style)s 240 fnt82 5759 1626(.)m +5923(Macmillan)s 6955(.)s 7119(Third)s 7708(Edition)s 8409(,)s +8516(1979)s 8987(.)s 0 1127(Notice)m 696(ho)s 6(w)k +1160(the)s 220 fnt35 1512 1124(@Style)m 240 fnt82 2277 1127(parameter)m +3295(of)s 220 fnt35 3569 1124(@RefStyle)m 240 fnt82 4675 1127(is)m +4889(gi)s 6(v)k 3(en)k 5472(the)s 5824(parameter)s +220 fnt35 6841 1124(str)m -3(unk1979style)k 240 fnt82 8373 1127(,)m +8484(which)s 0 839(it)m 192(uses)s 655(to)s 894(open)s +1417(the)s 1765(appropriate)s 2909(reference.)s 480 465(W)m 19(e)k +858(can)s 1256(consult)s 2017(the)s 220 fnt35 2374 462(@T)m 26(ype)k +240 fnt82 3121 465(attrib)m 4(ute)k 3977(of)s 4258(a)s +4433(reference)s 5386(to)s 5634(\207nd)s 6075(out)s 6450(its)s +6736(style,)s 7303(which)s 7955(brings)s 8613(us)s 8887(to)s +0 177(the)m 348(follo)s 6(wing)k 1325(de\207nition)s 2299(for)s +2637(printing)s 3447(out)s 3813(a)s 3979(reference)s 4922(in)s +5165(the)s 5513(style)s 6020(appropriate)s 7164(to)s 7403(it:)s + +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 89 95 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Italic +%%+ font Times-Bold +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +1 LoutMargSet +grestore +240 fnt83 0 13843(4.5.)m 454(Biblio)s 2(gr)k 3(aphies)k +240 fnt84 8832 13840(89)m 220 fnt35 480 13207(def @RefPr)m -3(int)k +480 12919( r)m -3(ight reftag)k 480 12631({ @RefStyle&&{ @Ref)m 6(erence&&reftag @Open { @T)k 26(ype } })k +480 12343( @Open { @Style reftag })m 480 12055(})m 240 fnt82 0 11561(F)m 3(or)k +389(e)s 3(xample,)k 1303(to)s 1542(e)s 6(v)k 6(aluate)k +220 fnt35 2382 11558(@RefPr)m -3(int str)k -3(unk1979style)k 240 fnt82 +4992 11561(,)m 5099(Lout)s 5611(\207rst)s 6042(e)s 6(v)k 6(aluates)k +220 fnt35 480 11060(@Ref)m 6(erence&&str)k -3(unk1979style @Open { @T)k 26(ype })k +240 fnt82 0 10562(whose)m 668(result)s 1258(is)s 220 fnt35 +1468 10559(Book)m 240 fnt82 1968 10562(,)m 2075(and)s 2479(then)s +2948(e)s 6(v)k 6(aluates)k 220 fnt35 480 10080(@RefStyle&&Book @Open { @Style str)m -3(unk1979style })k +240 fnt82 0 9582(as)m 266(before.)s 1056(Complicated)s 2353(as)s +2619(this)s 3032(is,)s 3314(with)s 3813(its)s 4105(tw)s 2(o)k +4531(databases)s 5515(and)s 5935(cle)s 6(v)k 3(er)k +6586(passing)s 7373(about)s 7982(of)s 8269(tags,)s 8778(the)s +0 9294(adv)m 6(antages)k 1098(of)s 1359(separating)s 2384(references)s +3405(from)s 3919(printing)s 4718(styles)s 5303(are)s 5640(considerable:)s +7004(printing)s 7804(styles)s 8389(may)s 8844(be)s 0 9006(changed)m +856(easily)s 15(,)k 1505(and)s 1909(non-e)s 3(xpert)k +3002(users)s 3544(need)s 4054(ne)s 6(v)k 3(er)k +4636(see)s 4997(them.)s 480 8632(Finally)m 15(,)k 1243(we)s +1571(come)s 2138(to)s 2370(the)s 2711(problem)s 3561(of)s +3825(printing)s 4628(out)s 4987(a)s 5146(numbered)s 6154(list)s +6498(of)s 6762(references,)s 7842(and)s 8239(referring)s 0 8344(to)m +251(them)s 802(by)s 1108(number)s 1912(in)s 2167(the)s +2528(body)s 3074(of)s 3358(the)s 3718(document.)s 4839(The)s +5279(\207rst)s 5723(step)s 6173(is)s 6396(to)s 6647(create)s +7285(a)s 7463(numbered)s 8491(list)s 8855(of)s 0 8056(places)m +648(that)s 1066(g)s 1(alle)k 3(ys)k 1790(containing)s +2853(references)s 3884(may)s 4350(attach)s 4977(to:)s 220 fnt35 +480 7555(def @Ref)m 6(erenceSection)k 480 7267( named @T)m 26(ag {})k 480 6979( named @Title { Ref)m 6(erences })k +480 6691( named @RunningTitle { dft })m 480 6403( named style r)m -3(ight tag { tag.)k 13( })k 480 6115( named headstyle r)m -3(ight @Title { @Heading @Title })k +480 5827( named indent { @DispIndent })m 480 5539( named gap { @DispGap })m 480 5251( named star)m -8(t { 1 })k 480 4963({)m +480 4675( def @RefList r)m -3(ight n)k 2(um)k 480 4387( {)m 480 4099( @NumberMar)m -3(k)k 4(er n)k 2(um & indent @Wide {style n)k 2(um} | @RefPlace)k +480 3811( //gap @RefList @Ne)m 6(xt n)k 2(um)k 480 3523( })m 480 2947( @Protect headstyle @Title)m +480 2659( // @P)m 8(ageMar)k -3(k)k 4(er&&preceding @T)k 26(agged @T)k 26(ag)k +480 2371( // @Title @MajorContentsEntr)m -6(y {@P)k 8(ageOf @T)k 26(ag})k 480 2083( // @Runner)m +480 1795( @F)m 6(ootEv)k 5(en { |0.5r)k -8(t 0.8f @F)k 6(ont @B @P)k 8(ageNum })k +480 1507( @F)m 6(ootOdd { |0.5r)k -8(t 0.8f @F)k 6(ont @B @P)k 8(ageNum })k +480 1219( //@DispGap @RefList star)m -8(t)k 480 931( // @Runner)m 480 643( @T)m 26(opEv)k 5(en { @B @P)k 8(ageNum })k +480 355( @T)m 26(opOdd { @I {@RunningTitle @OrElse @Title} |1r)k -8(t @B @P)k 8(ageNum })k 480 67(})m + +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 90 96 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +%%+ font Times-Italic +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +0 LoutMargSet +grestore +240 fnt84 0 13840(90)m 240 fnt83 7017 13843(Chapter)m 7867(4.)s +8141(Examples)s 240 fnt82 0 13205(W)m 19(e)k 378(place)s +948(the)s 1305(e)s 3(xpression)k 220 fnt35 2392 13202(@Ref)m 6(erenceSection)k +240 fnt82 4408 13205(at)m 4649(the)s 5007(point)s 5569(where)s +6218(we)s 6563(w)s 2(ant)k 7096(the)s 7453(list)s +7814(of)s 8095(references)s 0 12917(to)m 239(appear;)s 988(its)s +1264(v)s 6(alue)k 1832(is)s 2042(something)s 3092(lik)s 2(e)k +220 fnt35 480 12416(1.)m 13( @RefPlace)k 480 12128(2.)m 13( @RefPlace)k +480 11840(3.)m 13( @RefPlace)k 480 11552(...)m 240 fnt82 0 11101(where)m +220 fnt35 648 11098(@RefPlace)m 240 fnt82 1820 11101(is)m 220 fnt35 +2038 11098(@Galle)m 4(y)k 240 fnt82 2945 11101(as)m 3203(usual.)s +3880(W)s 19(e)k 4258(can)s 4655(scatter)s 5345(multiple)s +6205(lists)s 6649(of)s 6928(references)s 7967(through)s 8778(the)s +0 10813(document)m 1004(if)s 1221(we)s 1555(wish)s 2064(\(at)s +2375(the)s 2722(end)s 3126(of)s 3397(each)s 3891(chapter)s 9(,)k +4692(for)s 5030(e)s 3(xample\),)k 6022(simply)s 6727(by)s +7021(placing)s 220 fnt35 7777 10810(@Ref)m 6(erence)k 240 fnt82 +8998 10813(-)m 220 fnt35 0 10522(Section)m 240 fnt82 777 10525(at)m +1009(each)s 1504(point.)s 480 10151(Our)m 912(task)s 1358(is)s +1568(completed)s 2622(by)s 2916(the)s 3264(follo)s 6(wing)k +4241(de\207nition:)s 220 fnt35 480 9650(def @Ref r)m -3(ight x)k 480 9362({)m +480 9074( def sendref into { @RefPlace&&f)m 6(ollo)k 3(wing })k 480 8786( r)m -3(ight @K)k 8(e)k 4(y)k +480 8498( {)m 480 8210( @NumberMar)m -3(k)k 4(er&&preceding @T)k 26(agged x &)k +480 7922( @P)m 8(ageMar)k -3(k)k 4(er&&preceding @T)k 26(agged x &)k +480 7634( @RefPr)m -3(int x)k 480 7346( })m 480 6770( @NumberMar)m -3(k)k 4(er&&x @Open { @T)k 26(ag } sendref x)k +480 6482(})m 240 fnt82 0 5988(Gi)m 6(v)k 3(en)k +633(this)s 1029(de\207nition,)s 2053(the)s 2401(in)s 9(v)k 4(ocation)k +220 fnt35 3455 5985(@Ref str)m -3(unk1979style)k 240 fnt82 5672 5988(has)m +6042(result)s 220 fnt35 480 5489(@NumberMar)m -3(k)k 4(er&&str)k -3(unk1979style @Open { @T)k 26(ag })k +240 fnt82 0 4990(plus)m 450(the)s 798(g)s 1(alle)k 3(y)k +220 fnt35 1432 4987(sendref str)m -3(unk1979style)k 240 fnt82 3757 4990(.)m +3921(W)s 19(e)k 4290(\207rst)s 4721(follo)s 6(w)k +5393(what)s 5918(happens)s 6754(to)s 6993(the)s 7341(g)s 1(alle)k 3(y)k 15(.)k +480 4616(According)m 1555(to)s 1806(its)s 220 fnt35 2094 4613(into)m +240 fnt82 2512 4616(clause,)m 3229(the)s 3589(g)s 1(alle)k 3(y)k +4235(will)s 4673(replace)s 5430(a)s 220 fnt35 5609 4613(@RefPlace)m +240 fnt82 6785 4616(in)m 7040(the)s 7400(nearest)s 8149(follo)s 6(wing)k +220 fnt35 0 4325(@Ref)m 6(erenceSection)k 240 fnt82 1946 4328(.)m +2114(If)s 2348(e)s 6(v)k 3(ery)k 2928(such)s +3428(g)s 1(alle)k 3(y)k 4066(is)s 4280(a)s +4450(sorted)s 5096(g)s 1(alle)k 3(y)k 5734(whose)s +6406(k)s 2(e)k 3(y)k 6805(is)s 7019(the)s +7371(reference')s 13(s)k 8472(tag,)s 8876(as)s 0 4040(this)m +396(one)s 798(is,)s 1064(the)s 3(y)k 1527(will)s +1953(appear)s 2650(sorted)s 3292(by)s 3586(tag.)s 4042(The)s +4470(g)s 1(alle)k 3(y')k 13(s)k 5260(object)s +5904(is)s 220 fnt35 480 3539(@NumberMar)m -3(k)k 4(er&&preceding @T)k 26(agged str)k -3(unk1979style &)k +480 3251(@P)m 8(ageMar)k -3(k)k 4(er&&preceding @T)k 26(agged str)k -3(unk1979style &)k +480 2963(@RefPr)m -3(int str)k -3(unk1979style)k 240 fnt82 0 2465(The)m +428(result)s 1017(of)s 1287(the)s 220 fnt35 1634 2462(@T)m 26(agged)k +240 fnt82 2622 2465(symbol)m 3381(is)s 3590(al)s 2(w)k 2(ays)k +220 fnt35 4300 2462(@Null)m 240 fnt82 4885 2465(,)m 4991(so)s +5256(this)s 5651(prints)s 6245(the)s 220 fnt35 6592 2462(str)m -3(unk1979style)k +240 fnt82 8183 2465(reference)m 0 2177(in)m 243(the)s 591(appropriate)s +1735(style)s 2242(at)s 2474(the)s 220 fnt35 2822 2174(@RefPlace)m +240 fnt82 3926 2177(,)m 4033(as)s 4283(desired.)s 480 1803(No)m 6(w)k +220 fnt35 1043 1800(@NumberMar)m -3(k)k 4(er&&preceding)k 240 fnt82 +4081 1803(is)m 4341(the)s 4739(nearest)s 5524(preceding)s 6570(in)s 9(v)k 4(ocation)k +7674(of)s 220 fnt35 7995 1800(@Number)m 240 fnt82 8998 1803(-)m +220 fnt35 0 1512(Mar)m -3(k)k 4(er)k 240 fnt82 +775 1515(in)m 1051(the)s 1432(\207nal)s 1946(document.)s 3087(This)s +3596(must)s 4155(be)s 4470(the)s 4851(in)s 9(v)k 4(ocation)k +5939(of)s 220 fnt35 6243 1512(@NumberMar)m -3(k)k 4(er)k +240 fnt82 8021 1515(just)m 8460(before)s 0 1227(the)m 220 fnt35 +378 1224(@RefPlace)m 240 fnt82 1572 1227(that)m 2020(recei)s 6(v)k 3(ed)k +2908(the)s 3286(g)s 1(alle)k 3(y)k 15(,)k +3988(and)s 4423(so)s 4719(this)s 5145(in)s 9(v)k 4(ocation)k +6229(of)s 220 fnt35 6530 1224(@NumberMar)m -3(k)k 4(er)k +240 fnt82 8305 1227(is)m 8546(gi)s 6(v)k 3(en)k +220 fnt35 0 936(str)m -3(unk1979style)k 240 fnt82 1585 939(as)m +1827(an)s 2102(additional)s 3105(tag)s 3442(by)s 3728(the)s +220 fnt35 4068 936(@T)m 26(agged)k 240 fnt82 5050 939(symbol.)m +5911(Its)s 6192(original)s 6982(tag)s 7319(w)s 2(as)k +7732(the)s 8072(number)s 8855(of)s 0 651(the)m 348(reference)s +1291(place,)s 1902(which)s 2544(means)s 3206(that)s 220 fnt35 +480 150(@NumberMar)m -3(k)k 4(er&&str)k -3(unk1979style @Open { @T)k 26(ag })k + +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 91 97 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Italic +%%+ font Times-Bold +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +1 LoutMargSet +grestore +240 fnt83 0 13843(4.5.)m 454(Biblio)s 2(gr)k 3(aphies)k +240 fnt84 8839 13840(91)m 240 fnt82 0 13205(has)m 370(for)s +708(its)s 984(result)s 1574(the)s 1922(number)s 2713(of)s +2984(the)s 3332(reference)s 4275(place)s 4835(that)s 5253(recei)s 6(v)k 3(ed)k +6111(the)s 220 fnt35 6459 13202(str)m -3(unk1979style)k 240 fnt82 +8051 13205(g)m 1(alle)k 3(y)k 15(,)k 8722(and)s +0 12917(this)m 396(is)s 606(the)s 954(desired)s 1702(result)s +2292(of)s 220 fnt35 2563 12914(@Ref str)m -3(unk1979style)k 240 fnt82 +4720 12917(.)m 480 12543(It)m 674(might)s 1281(seem)s 1821(that)s +2228(if)s 2434(we)s 2758(refer)s 3256(to)s 3483(the)s +220 fnt35 3820 12540(str)m -3(unk1979style)k 240 fnt82 5401 12543(reference)m +6333(twice,)s 6946(tw)s 2(o)k 7345(copies)s 7996(will)s +8411(be)s 8681(sent)s 0 12255(to)m 247(the)s 603(reference)s +1554(list)s 1914(and)s 2326(it)s 2526(will)s 2961(appear)s +3666(twice.)s 4355(Ho)s 6(we)k 6(v)k 3(er)k 9(,)k +5324(when)s 5908(more)s 6463(than)s 6941(one)s 7351(sorted)s +8001(g)s 1(alle)k 3(y)k 8644(with)s 0 11967(the)m +341(same)s 881(k)s 2(e)k 3(y)k 1269(is)s +1472(sent)s 1910(to)s 2142(the)s 2483(same)s 3023(place,)s +3627(only)s 4100(one)s 4495(of)s 4759(them)s 5290(is)s +5493(printed)s 6221(\(Section)s 7067(1.4\);)s 7551(so)s 7810(pro)s 3(vided)k +8708(that)s 0 11679(sorted)m 642(g)s 1(alle)k 3(ys)k +1366(are)s 1713(used)s 2210(there)s 2743(is)s 2953(no)s +3246(problem.)s +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 92 98 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +%%+ font Times-Italic +/pgsave save def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +0 LoutMargSet +grestore +480 fnt84 0 12955(Refer)m 8(ences)k 240 fnt82 0 12358([1])m +480(Adobe)s 1182(Systems,)s 2094(Inc..)s 240 fnt83 2631 12360(P)m 19(ostScript)k +3680(Langua)s 2(g)k 2(e)k 4696(Refer)s 8(ence)k +5704(Manual,)s 6550(Second)s 7316(Edition)s 240 fnt82 8014 12358(.)m +8186(Addison-)s 480 12070(W)m 19(esle)k 3(y)k 1169(,)s +1276(1990)s 1751(.)s 0 11567([2])m 480(Brian)s 1132(W)s 22(.)k +1504(K)s 6(ernighan)k 2630(and)s 3098(Lorinda)s 3980(L.)s +4294(Cherry)s 15(.)k 5172(A)s 5466(system)s 6255(for)s +6657(typesetting)s 7824(mathematics)s 9022(.)s 240 fnt83 480 11281(Communications)m +2158(of)s 2439(the)s 2784(A)s 7(CM)k 240 fnt84 +3351 11278(18)m 240 fnt82 3585 11279(,)m 3692(182\211193)s 4576(\(1975\))s +5203(.)s 0 10778([3])m 480(Jef)s 6(fre)k 3(y)k +1177(H.)s 1443(Kingston.)s 240 fnt83 2475 10780(The)m 2876(Basser)s +3581(Lout)s 4074(Document)s 5111(F)s 25(ormatting)k 6219(System)s +6929(\(V)s 26(er)k 2(sion)k 7767(3\))s 240 fnt82 +7956 10778(.)m 8109(Computer)s 480 10490(program)m 1290(,)s 1408(1995)s +1874(.)s 2050(Publicly)s 2913(a)s 4(v)k 6(ailable)k +3833(in)s 4088(the)s 240 fnt83 4448 10492(jef)m 4(f)k +240 fnt82 4855 10490(subdirectory)m 6116(of)s 6399(the)s 6759(home)s +7359(directory)s 8287(of)s 240 fnt83 8570 10492(ftp)m 240 fnt82 +8887 10490(to)m 480 10202(host)m 240 fnt83 950 10204(ftp.cs.su.oz.au)m 240 fnt82 +2373 10202(with)m 2866(login)s 3427(name)s 240 fnt83 4012 10204(anonymous)m +240 fnt82 5171 10202(or)m 240 fnt83 5442 10204(ftp)m 240 fnt82 +5758 10202(and)m 6174(an)s 3(y)k 6582(non-empty)s 7685(passw)s 2(ord)k +8657(\(e.g.)s 240 fnt83 480 9916(none)m 240 fnt82 939 9914(\).)m +1175(Lout)s 1680(distrib)s 4(utions)k 2914(are)s 3254(also)s +3685(a)s 4(v)k 6(ailable)k 4585(from)s 5102(the)s +240 fnt83 5443 9916(comp.sour)m 8(ces.misc)k 240 fnt82 7291 9914(ne)m 6(wsgroup,)k +8436(and)s 8832(by)s 480 9626(electronic)m 1474(mail)s 1953(from)s +2477(the)s 2825(author)s 13(.)k 3587(All)s 3947(enquiries)s +4874(to)s 240 fnt83 5113 9628(jef)m 4(f@cs.su.oz.au)k 240 fnt82 +6672 9626(.)m 0 9121([4])m 480(Jef)s 6(fre)k 3(y)k +1187(H.)s 1463(Kingston.)s 240 fnt83 2504 9123(A)m 2698(User')s 9(s)k +3380(Guide)s 4017(to)s 4255(the)s 4599(Lout)s 5101(Document)s +6148(F)s 25(ormatting)k 7266(System)s 7985(\(V)s 26(er)k 2(sion)k +8833(3\))s 240 fnt82 9022 9121(.)m 480 8833(Basser)m 1177(Department)s +2365(of)s 2636(Computer)s 3653(Science)s 4392(,)s 4499(Uni)s 6(v)k 3(ersity)k +5553(of)s 5824(Sydne)s 3(y)k 6534(,)s 6641(1995)s +7107(.)s 0 8328([5])m 480(Donald)s 1243(E.)s 1493(Knuth.)s +240 fnt83 2256 8330(The)m 2668(T)s 2764 8282(E)m 2872 8330(X)m +3028(Book)s 240 fnt82 3524 8328(.)m 3688(Addison-W)s 19(esle)k 3(y)k +5268(,)s 5375(1984)s 5849(.)s 0 7823([6])m 480(Brian)s +1048(K.)s 1305(Reid.)s 1900(A)s 2110(High-)s 2657(Le)s 6(v)k 3(el)k +3227(Approach)s 4207(to)s 4426(Computer)s 5423(Document)s 6459(Production)s +7506(.)s 7650(In)s 240 fnt83 7885 7825(Pr)m 10(oceedings)k +480 7537(of)m 745(the)s 1073(7th)s 1417(Symposium)s 2548(on)s +2825(the)s 3153(Principles)s 4174(of)s 4438(Pr)s 10(o)k 2(gr)k 3(amming)k +5804(Langua)s 2(g)k 2(es)k 6891(\(POPL\),)s 7723(Las)s +8107(V)s 26(e)k 9(gas)k 8695(NV)s 240 fnt82 +9019 7535(,)m 480 7247(pages)m 1076(24\21131)s 1651(,)s 1758(1980)s +2233(.)s 0 6742([7])m 480(W)s 9(illiam)k 1313(Strunk)s +2012(and)s 2416(E.)s 2666(B.)s 2930(White.)s 240 fnt83 +3678 6744(The)m 4090(Elements)s 5021(of)s 5302(Style)s 240 fnt82 +5759 6742(.)m 5923(Macmillan)s 6955(.)s 7119(Third)s 7708(Edition)s +8409(,)s 8516(1979)s 8987(.)s 192 fnt84 4439 2(92)m + +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 93 99 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +%%+ font Helvetica +%%+ font Times-Italic +/pgsave save def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +1 LoutMargSet +grestore +480 fnt84 0 12962(Index)m 220 fnt35 0 12365(adjust)m 641(@Break)s +240 fnt82 1444 12368(,)m 1551(42)s 0 12080(Adjustment)m 1176(of)s +1447(object)s 2038(,)s 2145(49)s 0 11792(Adobe)m 695(Systems,)s +1599(Inc.)s 1955(,)s 2062(41)s 0 11504(Alignment)m 240 fnt83 +1083 11506(see)m 240 fnt82 1441 11504(mark)m 1993(alignment)s 0 11216(Associati)m 6(vity)k +1256(,)s 1363(22)s 220 fnt35 0 10637(b)m 240 fnt82 +174 10640(unit)m 553(,)s 660(37)s 240 10352(use)m 615(in)s +220 fnt35 858 10349(//1.1b)m 240 fnt82 1406 10352(,)m 1513(27)s +220 fnt35 0 10061(@Bac)m 4(kEnd)k 240 fnt82 1145 10064(symbol)m +1852(,)s 1959(68)s 220 fnt35 0 9773(@Bac)m 4(kg)k 2(round)k +240 fnt82 1436 9776(symbol)m 2143(,)s 2250(53)s 220 fnt35 +0 9485(@Begin)m 240 fnt82 829 9488(symbol)m 1536(,)s 1643(36)s +220 fnt35 0 9197(@BeginHeaderComponent)m 240 fnt82 2692 9200(symbol)m 3399(,)s +3506(59)s 0 8912(Bibliographies)m 1406(,)s 1513(87)s 0 8624(Body)m +574(of)s 845(a)s 1011(de\207nition)s 1932(,)s 2039(4)s +220 fnt35 0 8333(body)m 240 fnt82 534 8336(parameter)m 1495(,)s +1602(17)s 0 8048(Braces)m 648(,)s 755(3)s 220 fnt35 +0 7469(c)m 240 fnt82 165 7472(unit)m 544(,)s 651(37)s +220 fnt35 0 7181(@Case)m 240 fnt82 787 7184(symbol)m 1494(,)s +1601(56)s 0 6896(Centring)m 837(,)s 944(37)s 220 fnt35 +0 6605(@Chapter)m 240 fnt82 1063 6608(e)m 3(xample)k 1873(,)s +1980(83)s 0 6320(Chapters)m 901(and)s 1305(sections)s 2073(,)s +2180(82)s 220 fnt35 0 6029(@Char)m 240 fnt82 758 6032(symbol)m +1465(,)s 1572(41)s 0 5744(Cherry)m 15(,)k 756(L.)s +953(,)s 1060(71)s 220 fnt35 0 5453(@ClearHeaderComponent)m 240 fnt82 +2655 5456(symbol)m 3362(,)s 3469(60)s 220 fnt35 0 5165(clines)m +613(@Break)s 240 fnt82 1416 5168(,)m 1523(42)s 220 fnt35 +0 4877(@ColList)m 240 fnt82 948 4880(e)m 3(xample)k 1758(,)s +1865(79)s 0 4592(Column)m 829(mark)s 1328(,)s 1435(1)s +0 4304(Comment)m 951(,)s 1058(15)s 0 4016(Comment)m 1004(character)s +1885(,)s 1992(13)s 220 fnt35 0 3725(@Common)m 240 fnt82 +1159 3728(symbol)m 1866(,)s 1973(54)s 0 3440(Components)m 1262(of)s +1533(a)s 1699(g)s 1(alle)k 3(y)k 2280(,)s +2387(26)s 240 3152(promotion)m 1294(of)s 1512(,)s 1619(29)s +0 2864(Concatenation)m 1439(symbols)s 2235(,)s 2342(36)s 0 2576(Contraction)m +1186(of)s 1457(object)s 2048(,)s 2155(49)s 220 fnt35 +0 2285(cr)m 2(agged)k 839(@Break)s 240 fnt82 1642 2288(,)m +1749(42)s 0 2000(Cross)m 596(reference)s 1486(,)s 1593(7)s +220 fnt35 0 1709(@CurrLang)m 240 fnt82 1185 1712(symbol)m 1892(,)s +1999(46)s 220 fnt35 0 1133(d)m 240 fnt82 170 1136(unit)m +549(,)s 656(37)s 220 fnt35 0 845(@Database)m 240 fnt82 +1214 848(symbol)m 1921(,)s 2028(62)s 4816 12365(Date,)m 5374(printing)s +6184(of)s 6455(current)s 7138(,)s 7245(57)s 4816 12077(Def)m 2(ault)k +5590(v)s 6(alue)k 6158(of)s 6429(parameter)s 7390(,)s +7497(15)s 4816 11789(De\207nitions)m 5877(,)s 5984(4)s 4816 11501(Delimiter)m +5737(,)s 5844(13)s 4816 11213(Diag)m 5334(diagram-dra)s 3(wing)k +7030(package)s 7817(,)s 7924(66)s 4816 10925(Diagrams)m 5743(,)s +5850(63)s 4816 10637(DocumentLayout)m 6551(package)s 7338(,)s 7445(73)s +5056 10349(chapters)m 5903(and)s 6307(sections)s 7075(,)s 7182(82)s +5056 10061(displays)m 5838(,)s 5945(74)s 5056 9773(lists)m 5438(,)s +5545(75)s 5056 9485(page)m 5564(layout)s 6169(,)s 6276(77)s +5056 9197(paragraphs)m 6103(,)s 6210(73)s 220 fnt35 4816 8618(e)m +240 fnt82 4990 8621(g)m 1(ap)k 5388(mode)s 5923(,)s +6030(37)s 4816 8333(Edge-to-edge)m 6160(g)s 1(ap)k 6558(mode)s +7093(,)s 7200(37)s 220 fnt35 4816 8042(@Enclose)m 240 fnt82 +5818 8045(,)m 5925(31)s 220 fnt35 4816 7754(@End)m 240 fnt82 +5477 7757(symbol)m 6184(,)s 6291(36)s 220 fnt35 4816 7466(@EndHeaderComponent)m +240 fnt82 7338 7469(symbol)m 8045(,)s 8152(59)s 4816 7181(Eq)m +5140(equation)s 6021(formatting)s 7082(package)s 7869(,)s 7976(71)s +220 fnt35 4816 6890(@Eq)m 240 fnt82 5354 6893(e)m 3(xample)k +6164(,)s 6271(71)s 4816 6605(Escape)m 5549(character)s 6430(,)s +6537(13)s 220 fnt35 4816 6314(@Ev)m 5(enP)k 8(ageList)k +240 fnt82 6435 6317(e)m 3(xample)k 7245(,)s 7352(81)s +4816 6029(Expansion)m 5884(of)s 6155(object)s 6746(,)s 6853(48)s +220 fnt35 4816 5738(e)m 6(xpor)k -8(t)k 240 fnt82 +5484 5741(clause)m 6084(,)s 6191(18)s 220 fnt35 4816 5162(f)m +240 fnt82 4934 5165(unit)m 5313(,)s 5420(37)s 4816 4877(F)m 3(ace)k +5320(of)s 5591(a)s 5757(font)s 6149(,)s 6256(40)s +4816 4589(F)m 3(amily)k 5544(of)s 5815(a)s 5981(font)s +6373(,)s 6480(40)s 220 fnt35 4816 4298(f)m 6(ollo)k 3(wing)k +240 fnt82 5653 4301(,)m 5760(8)s 220 fnt35 4816 4010(f)m 6(ollo)k 3(wing)k +240 fnt82 5653 4013(,)m 5760(8)s 4816 3725(F)m 3(onts)k +5343(,)s 5450(40)s 220 fnt35 4816 3434(f)m 6(ontdef)k +240 fnt82 5485 3437(,)m 5592(41)s 220 fnt35 4816 3146(@F)m 6(ont)k +240 fnt82 5528 3149(symbol)m 6235(,)s 6342(40)s 220 fnt35 +4816 2858(@F)m 6(ootSect)k 240 fnt82 5967 2861(e)m 3(xample)k +6777(,)s 6884(78)s 4816 2573(F)m 3(orcing)k 5610(g)s 1(alle)k 3(y)k +6191(,)s 6298(29)s 4816 2285(F)m 3(ormfeed)k 5747(,)s +5854(13)s 4816 1709(Galle)m 3(ys)k 5541(,)s 5648(10)s +5056 1421(in)m 5299(detail)s 5831(,)s 5938(25)s 220 fnt35 +4816 1130(@Galle)m 4(y)k 5654(@F)s 6(orceGalle)k 4(y)k +240 fnt82 7107 1133(symbol)m 7814(,)s 7921(58)s 8155(,)s +4816 845(Gap)m 5215(,)s 5322(37)s 192 fnt84 4440 2(93)m + +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 94 100 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +%%+ font Times-Italic +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +0 LoutMargSet +grestore +240 fnt84 0 13840(94)m 240 fnt83 8539 13843(Inde)m 4(x)k +240 fnt82 0 13249(Gap)m 452(mode)s 987(,)s 1094(37)s +220 fnt35 0 12958(@Gr)m 2(aphic)k 240 fnt82 1044 12961(symbol)m +1751(,)s 1858(63)s 220 fnt35 0 12382(h)m 240 fnt82 +168 12385(g)m 1(ap)k 566(mode)s 1101(,)s 1208(37)s +220 fnt35 0 12094(@HAdjust)m 240 fnt82 1046 12097(symbol)m 1753(,)s +1860(49)s 220 fnt35 0 11806(@HContr)m 2(act)k 240 fnt82 +1264 11809(symbol)m 1971(,)s 2078(49)s 220 fnt35 0 11518(@HCo)m 3(v)k 5(er)k +240 fnt82 1018 11521(symbol)m 1725(,)s 1832(50)s 0 11233(Header)m +750(component)s 1874(of)s 2145(g)s 1(alle)k 3(y)k +2726(,)s 2833(58)s 0 10945(Height)m 711(of)s 982(an)s +1265(object)s 1856(,)s 1963(24)s 220 fnt35 0 10654(@HExpand)m +240 fnt82 1173 10657(symbol)m 1880(,)s 1987(48)s 220 fnt35 +0 10366(@High)m 240 fnt82 719 10369(symbol)m 1426(,)s 1533(48)s +220 fnt35 0 10078(@HLimited)m 240 fnt82 1135 10081(symbol)m 1842(,)s +1949(49)s 220 fnt35 0 9790(@Hline)m 240 fnt82 773 9793(e)m 3(xample)k +1583(,)s 1690(73)s 0 9505(Horizontal)m 1077(concatenation)s 2409(,)s +2516(36)s 220 fnt35 0 9214(@HScale)m 240 fnt82 981 9217(symbol)m +1688(,)s 1795(50)s 220 fnt35 0 8926(@HShift)m 240 fnt82 +875 8929(symbol)m 1582(,)s 1689(48)s 220 fnt35 0 8638(@HSpan)m +240 fnt82 939 8641(symbol)m 1646(,)s 1753(51)s 220 fnt35 +0 8350(h)m 6(yphen)k 760(@Break)s 240 fnt82 1563 8353(,)m +1670(43)s 0 8065(Hyphenation)m 1294(g)s 1(ap)k 1692(mode)s +2227(,)s 2334(39)s 0 7777(Hyphenation)m 1294(g)s 1(ap)k +1692(mode)s 2227(,)s 2334(37)s 0 7201(Identi\207er)m 882(,)s +989(13)s 220 fnt35 0 6910(impor)m -8(t)k 240 fnt82 +673 6913(clause)m 1273(,)s 1380(18)s 0 6625(In-paragraph)m 1291(concatenation)s +2623(,)s 2730(37)s 220 fnt35 0 6334(@Include)m 240 fnt82 +982 6337(symbol)m 1689(,)s 1796(68)s 220 fnt35 0 6046(@IncludeGr)m 2(aphic)k +240 fnt82 1751 6049(symbol)m 2458(,)s 2565(67)s 220 fnt35 +0 5758(@IndentedDispla)m 6(y)k 240 fnt82 1847 5761(e)m 3(xample)k +2657(,)s 2764(74)s 220 fnt35 0 5470(@IndentedList)m 240 fnt82 +1474 5473(e)m 3(xample)k 2284(,)s 2391(75)s 0 5185(Inde)m 3(x)k +597(\207le)s 958(\(for)s 1375(databases\))s 2366(,)s 2473(63)s +220 fnt35 0 4894(@Inser)m -8(t)k 240 fnt82 836 4897(symbol)m +1543(,)s 1650(54)s 220 fnt35 0 4606(into)m 240 fnt82 +406 4609(clause)m 1006(,)s 1113(10)s 0 4321(In)m 9(v)k 4(ocation)k +1067(of)s 1338(a)s 1504(symbol)s 2211(,)s 2318(4)s +220 fnt35 0 3454(k)m 240 fnt82 170 3457(g)m 1(ap)k +568(mode)s 1103(,)s 1210(37)s 0 3169(K)m 6(ernighan,)k +1111(B.)s 1322(,)s 1429(71)s 0 2881(K)m 6(erning)k +778(,)s 885(40)s 0 2593(K)m 6(erning)k 831(g)s 1(ap)k +1229(mode)s 1764(,)s 1871(37)s 220 fnt35 0 2302(@K)m 8(er)k -5(nShr)k -3(ink)k +240 fnt82 1367 2305(symbol)m 2074(,)s 2181(53)s 220 fnt35 +0 2014(@K)m 8(e)k 4(y)k 240 fnt82 647 2017(parameter)m +1608(,)s 1715(32)s 0 1729(Knuth,)m 706(D.)s 930(,)s +1037(73)s 220 fnt35 0 1150(langdef)m 240 fnt82 776 1153(language)m +1696(de\207nition)s 2617(,)s 2724(46)s 220 fnt35 0 862(@Language)m +240 fnt82 1251 865(symbol)m 1958(,)s 2065(46)s 220 fnt35 +0 574(@LClos)m 240 fnt82 836 577(symbol)m 1543(,)s 1650(14)s +0 289(LCM)m 573(\207le)s 881(,)s 988(41)s 4816 13249(Length)m +5498(,)s 5605(37)s 220 fnt35 4816 12958(@LEn)m 4(v)k +240 fnt82 5594 12961(symbol)m 6301(,)s 6408(14)s 4816 12673(Letter)m +5445(character)s 6326(,)s 6433(13)s 4816 12385(Lig)m 1(atures)k +5715(,)s 5822(40)s 220 fnt35 4816 12094(lines)m 5319(@Break)s +240 fnt82 6122 12097(,)m 6229(42)s 220 fnt35 4816 11806(@LInput)m +240 fnt82 5705 11809(symbol)m 6412(,)s 6519(14)s 4816 11521(Literal)m +5506(w)s 2(ord)k 6001(,)s 6108(14)s 220 fnt35 +4816 11230(@LUse)m 240 fnt82 5603 11233(symbol)m 6310(,)s 6417(14)s +220 fnt35 4816 10942(@L)m 24(Vis)k 240 fnt82 5494 10945(symbol)m +6201(,)s 6308(14)s 220 fnt35 4816 10366(m)m 240 fnt82 +5045 10369(unit)m 5424(,)s 5531(37)s 4816 10081(Macro)m 5440(,)s +5547(15)s 4816 9793(Mark)m 5395(alignment)s 6358(,)s 6465(1)s +5056 9505(in)m 5299(detail)s 5831(,)s 5938(28)s 4816 9217(Mark-to-mark)m +6230(g)s 1(ap)k 6628(mode)s 7163(,)s 7270(37)s +220 fnt35 4816 8926(@Meld)m 240 fnt82 5562 8929(symbol)m 6269(,)s +6376(54)s 220 fnt35 4816 8638(@Merge)m 240 fnt82 5713 8641(symbol)m +6420(,)s 6527(33)s 220 fnt35 4816 8350(@Moment)m 240 fnt82 +5888 8353(symbol)m 6595(,)s 6702(57)s 220 fnt35 4816 7774(named)m +240 fnt82 5535 7777(parameter)m 6496(,)s 6603(15)s 4816 7489(Nested)m +5538(de\207nitions)s 6546(,)s 6653(17)s 220 fnt35 4816 7198(@Ne)m 6(xt)k +240 fnt82 5540 7201(symbol)m 6247(,)s 6354(56)s 220 fnt35 +4816 6910(noh)m 6(yphen)k 5820(@Break)s 240 fnt82 6623 6913(,)m +6730(43)s 220 fnt35 4816 6622(@NotRe)m 6(v)k 5(ealed)k +240 fnt82 6343 6625(symbol)m 7050(,)s 7157(60)s 220 fnt35 +4816 6334(@Null)m 240 fnt82 5461 6337(symbol)m 6168(,)s 6275(58)s +4816 6049(Numbered)m 5884(list)s 6182(,)s 6289(75)s 220 fnt35 +4816 5758(@NumberOf)m 240 fnt82 6108 5761(e)m 3(xample)k 6918(,)s +7025(82)s 220 fnt35 4816 5182(o)m 240 fnt82 4991 5185(g)m 1(ap)k +5389(mode)s 5924(,)s 6031(37)s 4816 4897(Object)m 5460(,)s +5567(1)s 220 fnt35 4816 4606(@OddP)m 8(ageList)k 240 fnt82 +6355 4609(e)m 3(xample)k 7165(,)s 7272(81)s 220 fnt35 +4816 4318(@OneCol)m 240 fnt82 5828 4321(symbol)m 6535(,)s 6642(47)s +220 fnt35 4816 4030(@OneOf)m 240 fnt82 5743 4033(symbol)m 6450(,)s +6557(55)s 220 fnt35 4816 3742(@OneP)m 8(age)k 240 fnt82 +6010 3745(e)m 3(xample)k 6820(,)s 6927(80)s 220 fnt35 +4816 3454(@OneRo)m 3(w)k 240 fnt82 5947 3457(symbol)m 6654(,)s +6761(47)s 220 fnt35 4816 3166(@Open)m 240 fnt82 5622 3169(symbol)m +6329(,)s 6436(62)s 4816 2881(Optimal)m 5654(g)s 1(alle)k 3(y)k +6288(breaking)s 7125(,)s 7232(35)s 220 fnt35 4816 2590(@Optimiz)m 3(e)k +240 fnt82 5953 2593(symbol)m 6660(,)s 6767(35)s 220 fnt35 +4816 2302(or)m 2(agged)k 5667(@Break)s 240 fnt82 6470 2305(,)m +6577(42)s 220 fnt35 4816 2014(@OrElse)m 240 fnt82 5761 2017(e)m 3(xample)k +6571(,)s 6678(85)s 4816 1729(Other)m 5420(character)s 6301(,)s +6408(13)s 220 fnt35 4816 1438(outdent)m 5604(@Break)s 240 fnt82 +6407 1441(,)m 6514(42)s 220 fnt35 4816 1150(@Outline)m 240 fnt82 +5785 1153(symbol)m 6492(,)s 6599(46)s 220 fnt35 4816 862(o)m 3(v)k 5(er)k +240 fnt82 5295 865(e)m 3(xample)k 6105(,)s 6212(72)s +4816 577(Ov)m 3(erstrik)k 2(e)k 5875(g)s 1(ap)k +6273(mode)s 6808(,)s 6915(37)s +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 95 101 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Italic +%%+ font Times-Bold +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +1 LoutMargSet +grestore +240 fnt83 0 13843(Inde)m 4(x)k 240 fnt84 8833 13840(95)m +220 fnt35 0 13246(p)m 240 fnt82 174 13249(unit)m 553(,)s +660(37)s 220 fnt35 0 12958(@P)m 26(Adjust)k 240 fnt82 +1008 12961(symbol)m 1715(,)s 1822(49)s 220 fnt35 0 12670(@P)m 8(age)k +240 fnt82 779 12673(e)m 3(xample)k 1589(,)s 1696(79)s +0 12385(P)m 3(age)k 518(layout)s 240 12097(principles)m 1233(of)s +1451(,)s 1558(5)s 240 11809(in)m 483(practice)s 1241(,)s +1348(77)s 220 fnt35 0 11518(@P)m 8(ageLabel)k 240 fnt82 +1309 11521(symbol)m 2016(,)s 2123(70)s 220 fnt35 0 11230(@P)m 8(ageOf)k +240 fnt82 1016 11233(e)m 3(xample)k 1826(,)s 1933(77)s +0 10945(P)m 3(aragraph)k 1023(breaking)s 1860(,)s 1967(3)s +240 10657(in)m 483(detail)s 1015(,)s 1122(39)s 0 10369(P)m 3(arameter)k +971(,)s 1078(4)s 220 fnt35 240 10078(body)m 240 fnt82 +774 10081(parameter)m 1735(,)s 1842(17)s 220 fnt35 240 9790(named)m +240 fnt82 959 9793(parameter)m 1920(,)s 2027(15)s 220 fnt35 +0 9502(@PlainGr)m 2(aphic)k 240 fnt82 1530 9505(symbol)m 2237(,)s +2344(67)s 0 9217(PostScript)m 989(,)s 1096(ii)s 240 8929(used)m +737(by)s 220 fnt35 1031 8926(@Gr)m 2(aphic)k 240 fnt82 +2022 8929(,)m 2129(63)s 240 8641(used)m 737(by)s 220 fnt35 +1031 8638(@IncludeGr)m 2(aphic)k 240 fnt82 2729 8641(,)m 2836(67)s +240 8353(used)m 737(by)s 220 fnt35 1031 8350(@PrependGr)m 2(aphic)k +240 fnt82 2851 8353(,)m 2958(67)s 220 fnt35 0 8062(@PP)m +240 fnt82 566 8065(e)m 3(xample)k 1376(,)s 1483(74)s +0 7777(Precedence)m 1091(,)s 1198(22)s 220 fnt35 0 7486(preceding)m +240 fnt82 958 7489(,)m 1065(8)s 220 fnt35 0 7198(@PrependGr)m 2(aphic)k +240 fnt82 1873 7201(symbol)m 2580(,)s 2687(67)s 0 6913(Principal)m +917(mark)s 1416(,)s 1523(37)s 240 6625(ef)m 6(fect)k +836(on)s 220 fnt35 1133 6622(@OneCol)m 240 fnt82 2145 6625(and)m +220 fnt35 2549 6622(@OneRo)m 3(w)k 240 fnt82 3627 6625(,)m +3734(47)s 0 6337(Promotion)m 1067(of)s 1338(components)s 2493(,)s +2600(29)s 0 5761(Quote)m 641(character)s 1522(,)s 1629(13)s +0 5473(Quoted)m 763(w)s 2(ord)k 1258(,)s 1365(14)s +220 fnt35 0 4894(r)m 240 fnt82 133 4897(unit)m 512(,)s +619(37)s 220 fnt35 0 4606(r)m 2(agged)k 729(@Break)s +240 fnt82 1532 4609(,)m 1639(42)s 220 fnt35 0 4318(@Ra)m 4(wV)k 17(erbatim)k +240 fnt82 1563 4321(symbol)m 2270(,)s 2377(69)s 0 4033(Recepti)m 6(v)k 3(e)k +1003(symbol)s 1710(,)s 1817(11)s 0 3745(Recursion)m 974(,)s +1081(5)s 220 fnt35 0 3454(@Ref)m 240 fnt82 621 3457(e)m 3(xample)k +1431(,)s 1538(90)s 220 fnt35 0 3166(@Ref)m 6(erence)k +240 fnt82 1281 3169(e)m 3(xample)k 2091(,)s 2198(87)s +220 fnt35 0 2878(@Ref)m 6(erenceSection)k 240 fnt82 2006 2881(e)m 3(xample)k +2816(,)s 2923(89)s 0 2593(Reid,)m 559(Brian)s 1147(K.)s +1371(,)s 1478(7)s 0 2305(Right)m 592(justi\207cation)s 1724(,)s +1831(37)s 220 fnt35 0 2014(r)m -3(lines)k 579(@Break)s +240 fnt82 1382 2017(,)m 1489(42)s 0 1729(Roman)m 749(numerals)s +1623(,)s 1730(77)s 0 1441(Root)m 526(g)s 1(alle)k 3(y)k +1107(,)s 1214(11)s 240 1153(in)m 483(detail)s 1015(,)s +1122(28)s 240 865(printing)m 1050(of)s 1268(,)s 1375(29)s +240 577(size)m 667(of)s 938(components)s 2146(of)s 2364(,)s +2471(25)s 220 fnt35 0 286(@Rotate)m 240 fnt82 921 289(symbol)m +1628(,)s 1735(52)s 4816 13247(Rotation)m 5697(of)s 5968(object)s +6559(,)s 6666(52)s 4816 12959(Ro)m 6(w)k 5317(mark)s +5816(,)s 5923(2)s 220 fnt35 4816 12668(rr)m 2(agged)k +5618(@Break)s 240 fnt82 6421 12671(,)m 6528(42)s 220 fnt35 +4816 12380(@Rump)m 240 fnt82 5676 12383(symbol)m 6383(,)s 6490(54)s +220 fnt35 4816 12092(@Runner)m 240 fnt82 5818 12095(e)m 3(xample)k +6628(,)s 6735(80)s 220 fnt35 4816 11516(s)m 240 fnt82 +4979 11519(unit)m 5358(,)s 5465(37)s 5056 11231(and)m 220 fnt35 +5460 11228(@Space)m 240 fnt82 6357 11231(symbol)m 7064(,)s 7171(43)s +220 fnt35 4816 10940(@Scale)m 240 fnt82 5639 10943(symbol)m 6346(,)s +6453(52)s 4816 10655(Scaling)m 5586(of)s 5857(object)s 6448(,)s +6555(50)s 4816 10367(Scribe)m 5429(,)s 5536(7)s 220 fnt35 +4816 10076(@Section)m 240 fnt82 5816 10079(e)m 3(xample)k 6626(,)s +6733(85)s 220 fnt35 4816 9788(@SetHeaderComponent)m 240 fnt82 7277 9791(symbol)m +7984(,)s 8091(60)s 220 fnt35 4816 9500(@SetColor)m 240 fnt82 +5951 9503(symbol)m 6658(,)s 6765(45)s 220 fnt35 4816 9212(@SetColour)m +240 fnt82 6073 9215(symbol)m 6780(,)s 6887(45)s 4816 8927(Size)m +5283(of)s 5554(an)s 5837(object)s 6428(,)s 6535(24)s +4816 8639(small)m 5388(capitals)s 6115(,)s 6222(41)s 4816 8351(Sorted)m +5498(g)s 1(alle)k 3(ys)k 6169(,)s 6276(32)s +4816 8063(Space)m 5390(,)s 5497(13)s 5056 7775(when)m 5632(signi\207cant)s +6635(,)s 6742(38)s 220 fnt35 4816 7484(@Space)m 240 fnt82 +5713 7487(symbol)m 6420(,)s 6527(43)s 220 fnt35 4816 7196(@Star)m -8(tHSpan)k +240 fnt82 6226 7199(symbol)m 6933(,)s 7040(51)s 220 fnt35 +4816 6908(@Star)m -8(tHVSpan)k 240 fnt82 6372 6911(symbol)m 7079(,)s +7186(51)s 220 fnt35 4816 6620(@Star)m -8(tVSpan)k 240 fnt82 +6214 6623(symbol)m 6921(,)s 7028(51)s 4816 6335(Style)m 5363(of)s +5634(an)s 5917(object)s 6508(,)s 6615(23)s 220 fnt35 +4816 6044(sup)m 240 fnt82 5222 6047(e)m 3(xample)k 6032(,)s +6139(72)s 4816 5759(Symbol)m 5563(,)s 5670(4)s 220 fnt35 +4816 5468(@SysDatabase)m 240 fnt82 6396 5471(symbol)m 7103(,)s 7210(63)s +220 fnt35 4816 5180(@SysInclude)m 240 fnt82 6164 5183(symbol)m 6871(,)s +6978(68)s 220 fnt35 4816 4892(@SysIncludeGr)m 2(aphic)k 240 fnt82 +6933 4895(symbol)m 7640(,)s 7747(67)s 220 fnt35 4816 4604(@SysPrependGr)m 2(aphic)k +240 fnt82 7055 4607(symbol)m 7762(,)s 7869(67)s 220 fnt35 +4816 4028(t)m 240 fnt82 4933 4031(g)m 1(ap)k 5331(mode)s +5866(,)s 5973(37)s 4816 3743(T)m 19(ables)k 5432(,)s +5539(2)s 4816 3455(T)m 19(ab)k 4(ulation)k 5886(g)s 1(ap)k +6284(mode)s 6819(,)s 6926(37)s 220 fnt35 4816 3164(@T)m 26(ag)k +240 fnt82 5439 3167(parameter)m 9(,)k 6491(def)s 2(ault)k +7212(v)s 6(alue)k 7780(of)s 7998(,)s 8105(16)s +220 fnt35 4816 2876(@T)m 26(agged)k 240 fnt82 5805 2879(symbol)m +6512(,)s 6619(61)s 4816 2591(T)m 19(ar)k 4(get)k +5476(of)s 5747(cross)s 6289(reference)s 7179(,)s 7286(8)s +4816 2303(T)m 19(ar)k 4(get)k 5476(of)s 5747(a)s +5913(g)s 1(alle)k 3(y)k 6494(,)s 6601(11)s +220 fnt35 4816 2012(@T)m 26(arget)k 240 fnt82 5703 2015(symbol)m +6410(,)s 6517(30)s 5056 1727(in)m 5299(detail)s 5831(,)s +5938(25)s 4816 1439(T)m 4912 1391(E)m 5020 1439(X)m 5056 1151(h)m 1(yphenation)k +6243(,)s 6350(39)s 5056 863(optimal)m 5841(paragraph)s 6854(breaking)s +7691(,)s 7798(39)s 4816 575(T)m 16(e)k 3(xtual)k +5582(unit)s 5961(,)s 6068(13)s +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 96 102 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +%%+ font Times-Italic +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +0 LoutMargSet +grestore +240 fnt84 0 13840(96)m 240 fnt83 8539 13843(Inde)m 4(x)k +220 fnt35 0 13245(@Under)m -3(line)k 240 fnt82 1215 13248(symbol)m +1922(,)s 2029(69)s 0 12960(Underscore)m 1158(character)s 2039(,)s +2146(13)s 220 fnt35 0 12669(@Use)m 240 fnt82 665 12672(symbol)m +1372(,)s 1479(62)s 220 fnt35 0 12093(v)m 240 fnt82 +169 12096(unit)m 548(,)s 655(37)s 240 11808(ef)m 6(fect)k +836(on)s 1133(paragraph)s 2146(breaking)s 2983(,)s 3090(42)s +220 fnt35 0 11517(@V)m 17(Adjust)k 240 fnt82 1017 11520(symbol)m +1724(,)s 1831(49)s 220 fnt35 0 11229(@VContr)m 2(act)k +240 fnt82 1252 11232(symbol)m 1959(,)s 2066(49)s 220 fnt35 +0 10941(@VCo)m 3(v)k 5(er)k 240 fnt82 1006 10944(symbol)m +1713(,)s 1820(50)s 220 fnt35 0 10653(@V)m 17(erbatim)k +240 fnt82 1129 10656(symbol)m 1836(,)s 1943(69)s 0 10368(V)m 26(ertical)k +797(concatenation)s 2129(,)s 2236(36)s 220 fnt35 0 10077(@VExpand)m +240 fnt82 1161 10080(symbol)m 1868(,)s 1975(48)s 220 fnt35 +0 9789(@VLimited)m 240 fnt82 1123 9792(symbol)m 1830(,)s 1937(49)s +220 fnt35 0 9501(@VScale)m 240 fnt82 969 9504(symbol)m 1676(,)s +1783(50)s 220 fnt35 0 9213(@VShift)m 240 fnt82 863 9216(symbol)m +1570(,)s 1677(48)s 220 fnt35 0 8925(@VSpan)m 240 fnt82 +927 8928(symbol)m 1634(,)s 1741(51)s 220 fnt35 0 8349(w)m +240 fnt82 216 8352(unit)m 595(,)s 702(37)s 0 8064(White)m +640(space)s 1174(,)s 1281(13)s 240 7776(when)m 816(signi\207cant)s +1819(,)s 1926(38)s 220 fnt35 0 7485(@Wide)m 240 fnt82 +774 7488(symbol)m 1481(,)s 1588(48)s 0 7200(W)m 9(idth)k +646(of)s 917(an)s 1200(object)s 1791(,)s 1898(24)s +0 6912(W)m 19(ord)k 531(,)s 638(14)s 220 fnt35 +0 6333(x)m 240 fnt82 168 6336(g)m 1(ap)k 566(mode)s +1101(,)s 1208(37)s 220 fnt35 0 5757(@Y)m 4(ield)k +240 fnt82 753 5760(symbol)m 1460(,)s 1567(56)s 220 fnt35 +0 5469(@YUnit)m 240 fnt82 814 5472(symbol)m 1521(,)s 1628(44)s +220 fnt35 0 4893(@ZUnit)m 240 fnt82 802 4896(symbol)m 1509(,)s +1616(44)s +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Trailer +%%DocumentNeededResources: font Helvetica +%%+ font Helvetica-Oblique +%%+ font Symbol +%%+ font Times-Roman +%%+ font Times-Italic +%%+ font Times-Bold +%%+ font Times-BoldItalic +%%DocumentSuppliedResources: procset LoutStartUp +%%+ procset LoutTabPrependGraphic +%%+ procset LoutFigPrependGraphic +%%+ procset LoutBasicSetup +%%+ encoding vec2 +%%Pages: 102 +%%EOF diff --git a/doc/expert/preface b/doc/expert/preface index 826487f..5dae00b 100644 --- a/doc/expert/preface +++ b/doc/expert/preface @@ -21,7 +21,7 @@ This manual presents Version 3 of Basser Lout, publicly released in September 1994 @Cite { $kingston1995lout.program }. This manual was rendered into PostScript postscript @Index { PostScript } -by Version 3.19 of the Basser Lout interpreter, using the symbols +by Version 3.20 of the Basser Lout interpreter, using the symbols described in the User's Guide @Cite { $kingston1995lout.user }. @DP @Heading { Acknowledgment. } Version 3 has benefited from hundreds of diff --git a/doc/slides/README b/doc/slides/README index 9279092..acbd629 100644 --- a/doc/slides/README +++ b/doc/slides/README @@ -15,4 +15,4 @@ after the second run. A copy of the final outfile.ps is included. Jeff Kingston -9 March 2000 +8 April 2000 diff --git a/doc/slides/all b/doc/slides/all index 98c7d6c..6e5f02e 100644 --- a/doc/slides/all +++ b/doc/slides/all @@ -500,7 +500,7 @@ begin DoPriAbstract(root^.rightchild); end; end; -} &0io +} |0io } @End @Overhead diff --git a/doc/slides/outfile.ps b/doc/slides/outfile.ps new file mode 100644 index 0000000..5a8bd75 --- /dev/null +++ b/doc/slides/outfile.ps @@ -0,0 +1,4473 @@ +%!PS-Adobe-3.0 +%%Creator: Basser Lout Version 3.20 (April 2000) +%%CreationDate: Sat Apr 8 14:54:15 2000 +%%DocumentData: Binary +%%DocumentNeededResources: (atend) +%%DocumentSuppliedResources: (atend) +%%DocumentMedia: A4 595 842 0 white () +%%PageOrder: Ascend +%%Pages: (atend) +%%BoundingBox: 0 0 595 842 +%%EndComments + +%%BeginProlog +%%BeginResource: procset LoutStartUp +/m { 3 1 roll moveto show } bind def +/mo { 3 1 roll moveto true charpath stroke } bind def +/s { exch currentpoint exch pop moveto show } bind def +/so { exch currentpoint exch pop moveto true charpath stroke } bind def +/k { exch neg 0 rmoveto show } bind def +/ko { exch neg 0 rmoveto true charpath stroke } bind def +/ul { gsave setlinewidth dup 3 1 roll + moveto lineto stroke grestore } bind def +/in { 1440 mul } def +/cm { 567 mul } def +/pt { 20 mul } def +/em { 120 mul } def +/sp { louts mul } def +/vs { loutv mul } def +/ft { loutf mul } def +/dg { } def + +/LoutGraphic { + /louts exch def + /loutv exch def + /loutf exch def + /ymark exch def + /xmark exch def + /ysize exch def + /xsize exch def +} def + +/LoutGr2 { gsave translate LoutGraphic gsave } def + +/LoutFont +{ findfont exch scalefont setfont +} bind def + +/LoutRecode { + { findfont dup length dict begin + {1 index /FID ne {def} {pop pop} ifelse} forall + /Encoding exch def + currentdict end definefont pop + } + stopped pop +} bind def + +/BeginEPSF { + /LoutEPSFState save def + /dict_count countdictstack def + /op_count count 1 sub def + userdict begin + /showpage { } def + 0 setgray 0 setlinecap + 1 setlinewidth 0 setlinejoin + 10 setmiterlimit [] 0 setdash newpath + /languagelevel where + { pop languagelevel + 1 ne + { false setstrokeadjust false setoverprint + } if + } if +} bind def + +/EndEPSF { + count op_count sub { pop } repeat + countdictstack dict_count sub { end } repeat + LoutEPSFState restore +} bind def +%%EndResource + +%%BeginResource: encoding vec2 +/vec2 [ +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright +/parenleft /parenright /asterisk /plus /comma /hyphen /period /slash +/zero /one /two /three /four /five /six /seven +/eight /nine /colon /semicolon /less /equal /greater /question +/at /A /B /C /D /E /F /G +/H /I /J /K /L /M /N /O +/P /Q /R /S /T /U /V /W +/X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore +/quoteleft /a /b /c /d /e /f /g +/h /i /j /k /l /m /n /o +/p /q /r /s /t /u /v /w +/x /y /z /braceleft /bar /braceright /asciitilde /.notdef +/quotesinglbase /quotedblbase /ellipsis /OE /oe /quotedblleft /quotedblright /fi +/fl /endash /emdash /bullet /dagger /daggerdbl /florin /fraction +/dotlessi /grave /acute /circumflex /tilde /macron /breve /dotaccent +/dieresis /.notdef /ring /cedilla /.notdef /hungarumlaut /ogonek /caron +/space /exclamdown /cent /sterling /currency /yen /brokenbar /section +/dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen /registered /macron +/degree /plusminus /twosuperior /threesuperior /acute /mu /paragraph /periodcentered +/cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf /threequarters /questiondown +/Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla +/Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis +/Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply +/Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /germandbls +/agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla +/egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis +/eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide +/oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /ydieresis +] def +%%EndResource + +%%BeginResource: procset LoutTabPrependGraphic +% @PrependGraphic file /export/home/6monthspace/jeff/lout.lib/include/tabf.lpg +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % +% PostScript @SysPrependGraphic file for @Tab % +% % +% To assist in avoiding name clashes, the names % +% of all these symbols begin with "ltab". % +% % +% Jeffrey H. Kingston % +% 24 September 1991 % +% 22 December 1992 % +% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% linewidth ltabhs - +% horizontal single line +/ltabhs +{ 0 0 moveto xsize 0 lineto + setlinewidth 0 setlinecap stroke +} def + +% linewidth ltabhsp - +% horizontal single line with projecting ends +/ltabhsp +{ 0 0 moveto xsize 0 lineto + setlinewidth 2 setlinecap stroke +} def + +% linewidth ltabhd - +% horizontal double line +/ltabhd +{ dup dup + 0 0 moveto xsize 0 lineto + 0 exch 3 mul moveto xsize exch 3 mul lineto + setlinewidth 0 setlinecap stroke +} def + +% linewidth ltabhdb - +% horizontal double line below mark +/ltabhdb +{ dup dup + 0 0 moveto xsize 0 lineto + 0 exch -3 mul moveto xsize exch -3 mul lineto + setlinewidth 0 setlinecap stroke +} def + +% linewidth ltabhdnw - +% horizontal double line with northwest corner +/ltabhdnw +{ dup dup dup dup + 0 0 moveto xsize 0 lineto + xsize exch 3 mul moveto + -3 mul exch 3 mul lineto + -3 mul 0 lineto + setlinewidth 0 setlinejoin 2 setlinecap stroke +} def + +% linewidth ltabhdne - +% horizontal double line with northeast corner +/ltabhdne +{ dup dup dup dup + 0 0 moveto xsize 0 lineto + 0 exch 3 mul moveto + 3 mul xsize add exch 3 mul lineto + 3 mul xsize add 0 lineto + setlinewidth 0 setlinejoin 2 setlinecap stroke +} def + +% linewidth ltabhdsw - +% horizontal double line with southwest corner +/ltabhdsw +{ dup dup dup dup + 0 0 moveto xsize 0 lineto + xsize exch -3 mul moveto + -3 mul exch -3 mul lineto + -3 mul 0 lineto + setlinewidth 0 setlinejoin 2 setlinecap stroke +} def + +% linewidth ltabhdse - +% horizontal double line with southeast corner +/ltabhdse +{ dup dup dup dup + 0 0 moveto xsize 0 lineto + 0 exch -3 mul moveto + 3 mul xsize add exch -3 mul lineto + 3 mul xsize add 0 lineto + setlinewidth 0 setlinejoin 2 setlinecap stroke +} def + +% linewidth ltabvs - +% vertical single line +/ltabvs +{ 0 0 moveto 0 ysize lineto + setlinewidth 0 setlinecap stroke +} def + +% linewidth ltabvd - +% vertical double line +/ltabvd +{ dup dup + 0 0 moveto 0 ysize lineto + -3 mul 0 moveto -3 mul ysize lineto + setlinewidth 0 setlinecap stroke +} def + +% linewidth ltabvdr - +% vertical double line to right of mark +/ltabvdr +{ dup dup + 0 0 moveto 0 ysize lineto + 3 mul 0 moveto 3 mul ysize lineto + setlinewidth 0 setlinecap stroke +} def +%%EndResource + +%%BeginResource: procset LoutFigPrependGraphic +% @PrependGraphic file /export/home/6monthspace/jeff/lout.lib/include/figf.lpg +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % +% PostScript @SysPrependGraphic file for @Fig Jeffrey H. Kingston % +% Version 2.0 (includes CIRCUM label) January 1992 % +% % +% To assist in avoiding name clashes, the names of all symbols % +% defined here begin with "lfig". However, this is not feasible % +% with user-defined labels and some labels used by users. % +% % +% <point> is two numbers, a point. % +% <length> is one number, a length % +% <angle> is one number, an angle in degrees % +% <dashlength> is one number, the preferred length of a dash % +% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +errordict begin + /handleerror + { + { /Times-Roman findfont 8 pt scalefont setfont + 0 setgray 4 pt 4 pt moveto + $error /errorname get + dup lfigdict exch known + { lfigdict exch get } + { 30 string cvs } ifelse + show + ( Command: ) show + $error /command get 30 string cvs show + } stopped {} if + showpage stop + } def +end + +% concat strings: <string> <string> lfigconcat <string> +% must be defined outside lfigdict since used in lfigpromotelabels +/lfigconcat +{ 2 copy length exch length add string + dup 0 4 index putinterval + dup 3 index length 3 index putinterval + 3 1 roll pop pop +} def + +% <string> lfigdebugprint - +% must be defined outside lfigdict since used in arbitrary places +% /lfigdebugprint +% { print +% (; operand stack:\n) print +% count copy +% count 2 idiv +% { == +% (\n) print +% } repeat +% (\n) print +% } def + +/lfigdict 120 dict def +lfigdict begin + +% error messages +/dictfull (dictfull error: too many labels?) def +/dictstackoverflow (dictstackoverflow error: labels nested too deeply?) def +/execstackoverflow (execstackoverflow error: figure nested too deeply?) def +/limitcheck (limitcheck error: figure nested too deeply or too large?) def +/syntaxerror (syntaxerror error: syntax error in text of figure?) def +/typecheck (typecheck error: syntax error in text of figure?) def +/undefined (undefined error: unknown or misspelt label?) def +/VMError (VMError error: run out of memory?) def + +% push pi onto stack: - lfigpi <num> +/lfigpi 3.14159 def + +% arc directions +/clockwise false def +/anticlockwise true def + +% maximum of two numbers: <num> <num> lfigmax <num> +/lfigmax { 2 copy gt { pop } { exch pop } ifelse } def + +% minimum of two numbers: <num> <num> lfigmin <num> +/lfigmin { 2 copy lt { pop } { exch pop } ifelse } def + +% add two points: <point> <point> lfigpadd <point> +/lfigpadd { exch 3 1 roll add 3 1 roll add exch } def + +% subtract first point from second: <point> <point> lfigpsub <point> +/lfigpsub { 3 2 roll sub 3 1 roll exch sub exch } def + +% max two points: <point> <point> lfigpmax <point> +/lfigpmax { exch 3 1 roll lfigmax 3 1 roll lfigmax exch } def + +% min two points: <point> <point> lfigpmin <point> +/lfigpmin { exch 3 1 roll lfigmin 3 1 roll lfigmin exch } def + +% scalar multiplication: <point> <num> lfigpmul <point> +/lfigpmul { dup 3 1 roll mul 3 1 roll mul exch } def + +% point at angle and distance: <point> <length> <angle> lfigatangle <point> +/lfigatangle { 2 copy cos mul 3 1 roll sin mul lfigpadd } def + +% angle from one point to another: <point> <point> lfigangle <angle> +/lfigangle { lfigpsub 2 copy 0 eq exch 0 eq and {pop} {exch atan} ifelse } def + +% distance between two points: <point> <point> lfigdistance <length> +/lfigdistance { lfigpsub dup mul exch dup mul add sqrt } def + +% difference in x coords: <point> <point> lfigxdistance <length> +/lfigxdistance { pop 3 1 roll pop sub } def + +%difference in y coords: <point> <point> lfigydistance <length> +/lfigydistance { 3 1 roll pop sub exch pop } def + +% stroke a solid line: <length> <dashlength> lfigsolid - +/lfigsolid +{ pop pop [] 0 setdash stroke +} def + +% stroke a lfigdashed line: <length> <dashlength> lfigdashed - +/lfigdashed +{ 2 copy div 2 le 1 index 0 le or + { exch pop 1 pt lfigmax [ exch dup ] 0 setdash } + { dup [ exch 4 2 roll 2 copy div + 1 sub 2 div ceiling dup 4 1 roll + 1 add mul sub exch div ] 0 setdash + } ifelse stroke +} def + +% stroke a lfigcdashed line: <length> <dashlength> lfigcdashed - +/lfigcdashed +{ 2 copy le 1 index 0 le or + { exch pop 1 pt lfigmax [ exch dup ] dup 0 get 2 div setdash } + { dup [ 4 2 roll exch 2 copy exch div + 2 div ceiling div 1 index sub + ] exch 2 div setdash + } ifelse stroke +} def + +% stroke a dotted line: <length> <dashlength> lfigdotted - +/lfigdotted +{ 2 copy le 1 index 0 le or + { exch pop 1 pt lfigmax [ exch 0 exch ] 0 setdash } + { 1 index exch div ceiling div + [ 0 3 2 roll ] 0 setdash + } ifelse stroke +} def + +% stroke a noline line: <length> <dashlength> lfignoline - +/lfignoline +{ pop pop +} def + +% painting (i.e. filling): - lfigwhite - (etc.) +/lfignopaint { } def +/lfignochange { fill } def +/lfigdarkblue { 0.0 0.0 0.5 setrgbcolor fill } def +/lfigblue { 0.0 0.0 1.0 setrgbcolor fill } def +/lfiglightblue { 0.5 0.5 1.0 setrgbcolor fill } def +/lfigdarkgreen { 0.0 0.5 0.0 setrgbcolor fill } def +/lfiggreen { 0.0 1.0 0.0 setrgbcolor fill } def +/lfiglightgreen { 0.5 1.0 0.5 setrgbcolor fill } def +/lfigdarkred { 0.5 0.0 0.0 setrgbcolor fill } def +/lfigred { 1.0 0.0 0.0 setrgbcolor fill } def +/lfiglightred { 1.0 0.5 0.5 setrgbcolor fill } def +/lfigdarkcyan { 0.0 0.5 0.5 setrgbcolor fill } def +/lfigcyan { 0.0 1.0 1.0 setrgbcolor fill } def +/lfiglightcyan { 0.5 1.0 1.0 setrgbcolor fill } def +/lfigdarkmagenta { 0.5 0.0 0.5 setrgbcolor fill } def +/lfigmagenta { 1.0 0.0 1.0 setrgbcolor fill } def +/lfiglightmagenta { 1.0 0.5 1.0 setrgbcolor fill } def +/lfigdarkyellow { 0.5 0.5 0.0 setrgbcolor fill } def +/lfigyellow { 1.0 1.0 0.0 setrgbcolor fill } def +/lfiglightyellow { 1.0 1.0 0.5 setrgbcolor fill } def +/lfigdarkgray { 0.2 0.2 0.2 setrgbcolor fill } def +/lfiggray { 0.5 0.5 0.5 setrgbcolor fill } def +/lfiglightgray { 0.8 0.8 0.8 setrgbcolor fill } def +/lfigdarkgrey { 0.2 0.2 0.2 setrgbcolor fill } def +/lfiggrey { 0.5 0.5 0.5 setrgbcolor fill } def +/lfiglightgrey { 0.8 0.8 0.8 setrgbcolor fill } def +/lfigblack { 0.0 0.0 0.0 setrgbcolor fill } def +/lfigwhite { 1.0 1.0 1.0 setrgbcolor fill } def + +% line caps (and joins, not currently used) +/lfigbutt 0 def +/lfiground 1 def +/lfigprojecting 2 def +/lfigmiter 0 def +/lfigbevel 2 def + +% shape and labels of the @Box symbol +/lfigbox +{ + 0 0 /SW lfigpointdef + xsize 0 /SE lfigpointdef + xsize ysize /NE lfigpointdef + 0 ysize /NW lfigpointdef + SE 0.5 lfigpmul /S lfigpointdef + NW 0.5 lfigpmul /W lfigpointdef + W SE lfigpadd /E lfigpointdef + S NW lfigpadd /N lfigpointdef + NE 0.5 lfigpmul /CTR lfigpointdef + [ CTR NE lfigpsub /lfigboxcircum cvx ] lfigcircumdef + SW SE NE NW SW +} def + +% shape and labels of the @CurveBox symbol +/lfigcurvebox +{ + + xsize 0.5 mul ysize 0.5 mul /CTR lfigpointdef + xsize 0.5 mul 0 /S lfigpointdef + xsize ysize 0.5 mul /E lfigpointdef + xsize 0.5 mul ysize /N lfigpointdef + 0 ysize 0.5 mul /W lfigpointdef + + xmark 0.293 mul xmark 0.293 mul /SW lfigpointdef + xsize xmark 0.293 mul sub xmark 0.293 mul /SE lfigpointdef + xsize xmark 0.293 mul sub ysize xmark 0.293 mul sub /NE lfigpointdef + xmark 0.293 mul ysize xmark 0.293 mul sub /NW lfigpointdef + + [ xsize ysize 0.5 lfigpmul xmark /lfigcurveboxcircum cvx ] lfigcircumdef + + xmark 0 + xsize xmark sub 0 + [ xsize xmark sub xmark ] + xsize xmark + xsize ysize xmark sub + [ xsize xmark sub ysize xmark sub ] + xsize xmark sub ysize + xmark ysize + [ xmark ysize xmark sub ] + 0 ysize xmark sub + 0 xmark + [ xmark xmark ] + xmark 0 +} def + +% shadow of the @ShadowBox symbol +% its shape and labels are done, somewhat inaccurately, with lfigbox +/lfigshadow +{ xmark 2 mul 0 moveto xsize 0 lineto + xsize ysize xmark 2 mul sub lineto + xsize xmark sub ysize xmark 2 mul sub lineto + xsize xmark sub xmark lineto + xmark 2 mul xmark lineto closepath fill +} def + +% shape and labels of the @Square symbol +/lfigsquare +{ + xsize ysize 0.5 lfigpmul /CTR lfigpointdef + CTR xsize xsize ysize ysize lfigpmax 0.5 lfigpmul lfigpadd /NE lfigpointdef + CTR 0 0 CTR NE lfigdistance 135 lfigatangle lfigpadd /NW lfigpointdef + CTR 0 0 CTR NE lfigdistance 225 lfigatangle lfigpadd /SW lfigpointdef + CTR 0 0 CTR NE lfigdistance 315 lfigatangle lfigpadd /SE lfigpointdef + SW 0.5 lfigpmul SE 0.5 lfigpmul lfigpadd /S lfigpointdef + NW 0.5 lfigpmul NE 0.5 lfigpmul lfigpadd /N lfigpointdef + SW 0.5 lfigpmul NW 0.5 lfigpmul lfigpadd /W lfigpointdef + SE 0.5 lfigpmul NE 0.5 lfigpmul lfigpadd /E lfigpointdef + [ CTR NE lfigpsub /lfigboxcircum cvx ] lfigcircumdef + SW SE NE NW SW +} def + +% shape and labels of the @Diamond symbol +/lfigdiamond +{ + xsize 0 0.5 lfigpmul /S lfigpointdef + 0 ysize 0.5 lfigpmul /W lfigpointdef + S W lfigpadd /CTR lfigpointdef + CTR W lfigpadd /N lfigpointdef + CTR S lfigpadd /E lfigpointdef + [ xsize ysize 0.5 lfigpmul /lfigdiamondcircum cvx ] lfigcircumdef + S E N W S +} def + +% shape and labels of the @Ellipse symbol +/lfigellipse +{ + xsize 0 0.5 lfigpmul /S lfigpointdef + 0 ysize 0.5 lfigpmul /W lfigpointdef + S W lfigpadd /CTR lfigpointdef + CTR W lfigpadd /N lfigpointdef + CTR S lfigpadd /E lfigpointdef + CTR xsize 0 0.3536 lfigpmul lfigpadd 0 ysize 0.3536 lfigpmul lfigpadd /NE lfigpointdef + 0 ysize 0.3536 lfigpmul CTR xsize 0 0.3536 lfigpmul lfigpadd lfigpsub /SE lfigpointdef + xsize 0 0.3536 lfigpmul CTR lfigpsub 0 ysize 0.3536 lfigpmul lfigpadd /NW lfigpointdef + 0 ysize 0.3536 lfigpmul xsize 0 0.3536 lfigpmul CTR lfigpsub lfigpsub /SW lfigpointdef + [ xsize ysize 0.5 lfigpmul /lfigellipsecircum cvx ] lfigcircumdef + S [ CTR ] E [ CTR ] N [ CTR ] W [ CTR ] S +} def + +% shape and labels of the @Circle symbol +/lfigcircle +{ + xsize ysize 0.5 lfigpmul /CTR lfigpointdef + CTR xsize 0 ysize 0 lfigpmax 0.5 lfigpmul lfigpadd /E lfigpointdef + CTR 0 0 CTR E lfigdistance 45 lfigatangle lfigpadd /NE lfigpointdef + CTR 0 0 CTR E lfigdistance 90 lfigatangle lfigpadd /N lfigpointdef + CTR 0 0 CTR E lfigdistance 135 lfigatangle lfigpadd /NW lfigpointdef + CTR 0 0 CTR E lfigdistance 180 lfigatangle lfigpadd /W lfigpointdef + CTR 0 0 CTR E lfigdistance 225 lfigatangle lfigpadd /SW lfigpointdef + CTR 0 0 CTR E lfigdistance 270 lfigatangle lfigpadd /S lfigpointdef + CTR 0 0 CTR E lfigdistance 315 lfigatangle lfigpadd /SE lfigpointdef + [ S E lfigpsub /lfigellipsecircum cvx ] lfigcircumdef + S [ CTR ] E [ CTR ] N [ CTR ] W [ CTR ] S +} def + +% shape and labels of the @HLine and @HArrow symbols +/lfighline +{ + 0 ymark lfigprevious /FROM lfigpointdef + xsize ymark lfigprevious /TO lfigpointdef +} def + +% shape and labels of the @VLine and @VArrow symbols +/lfigvline +{ + xmark ysize lfigprevious /FROM lfigpointdef + xmark 0 lfigprevious /TO lfigpointdef +} def + +% points of a polygon around base with given no of sides, vert init angle: +% <sides> <angle> figpolygon <point> ... <point> +/lfigpolygon +{ xsize ysize 0.5 lfigpmul /CTR lfigpointdef + 90 sub CTR 2 copy lfigmax 5 3 roll + [ 4 copy pop /lfigpolycircum cvx ] lfigcircumdef + exch dup 360 exch div exch + 1 1 3 2 roll + { 4 string cvs (P) exch lfigconcat cvn + 6 copy pop pop lfigatangle 2 copy 10 2 roll + 3 2 roll lfigpointdef + dup 3 1 roll add exch + } for + pop lfigatangle +} def + +% next array element: <array> <index> lfiggetnext <array> <index> <any> true +% or <array> <index> false +/lfiggetnext +{ 2 copy exch length ge + { false } + { 2 copy get exch 1 add exch true } ifelse +} def + +% check whether thing is number: <any> lfigisnumbertype <any> <bool> +/lfigisnumbertype +{ dup type dup + /integertype eq exch /realtype eq or +} def + +% check whether thing is an array: <any> lfigisarraytype <any> <bool> +/lfigisarraytype { dup type /arraytype eq } def + +% get next item: <array> <index> lfiggetnextitem <array> <index> 0 +% or <array> <index> <array> 1 +% or <array> <index> <point> 2 +/lfiggetnextitem +{ lfiggetnext + { lfigisarraytype + { 1 + } + { lfigisnumbertype + { 3 1 roll + lfiggetnext + { lfigisnumbertype + { 4 3 roll exch 2 + } + { pop 3 2 roll pop 0 + } ifelse + } + { 3 2 roll pop 0 + } ifelse + } + { pop 0 + } ifelse + } ifelse + } + { 0 + } ifelse +} def + +% set arc path: bool x1 y1 x2 y2 x0 y0 lfigsetarc <angle> <angle> <dist> +% the path goes from x1 y1 to x2 y2 about centre x0 y0, +% anticlockwise if bool is true else clockwise. +% The orientations of backwards pointing and forwards pointing +% arrowheads are returned in the two angles, and +% the length of the arc is returned in <dist>. +/lfigsetarc +{ + 20 dict begin + matrix currentmatrix 8 1 roll + 2 copy translate 2 copy 8 2 roll + 4 2 roll lfigpsub 6 2 roll lfigpsub + dup /y1 exch def dup mul /y1s exch def + dup /x1 exch def dup mul /x1s exch def + dup /y2 exch def dup mul /y2s exch def + dup /x2 exch def dup mul /x2s exch def + + y1s y2s eq + { -1 + } + { y1s x2s mul y2s x1s mul sub y1s y2s sub div + } ifelse + /da exch def + + x1s x2s eq + { -1 + } + { x1s y2s mul x2s y1s mul sub x1s x2s sub div + } ifelse + /db exch def + + da 0 gt db 0 gt and + { /LMax da sqrt db sqrt lfigmax def + /scalex da sqrt LMax div def + /scaley db sqrt LMax div def + scalex scaley scale + 0 0 LMax + 0 0 x1 scalex mul y1 scaley mul lfigangle + 0 0 x2 scalex mul y2 scaley mul lfigangle + 2 copy eq { 360 add } if + 2 copy 8 2 roll + 5 index { arc } { arcn } ifelse + 2 index 1 index + { 90 sub } { 90 add } ifelse + dup sin scaley mul exch cos scalex mul atan + 2 index 2 index + { 90 add } { 90 sub } ifelse + dup sin scaley mul exch cos scalex mul atan + 5 2 roll % res1 res2 ang1 ang2 anticlockwise + { exch sub } { sub } ifelse + dup 0 le { 360 add } if lfigpi mul LMax mul 180 div + } + { 0 0 x1 y1 lfigdistance 0 0 x2 y2 lfigdistance eq + 0 0 x1 y1 lfigdistance 0 gt and + { 0 0 + 0 0 x1 y1 lfigdistance + 0 0 x1 y1 lfigangle + 0 0 x2 y2 lfigangle + 2 copy eq { 360 add } if + 2 copy 8 2 roll + 5 index { arc } { arcn } ifelse + 2 index 1 index + { 90 sub } { 90 add } ifelse + 2 index 2 index + { 90 add } { 90 sub } ifelse + 5 2 roll % res1 res2 ang1 ang2 clockwise + { exch sub } { sub } ifelse + dup 0 le { 360 add } if lfigpi mul 0 0 x1 y1 lfigdistance mul 180 div + } + { x2 y2 lineto pop + x2 y2 x1 y1 lfigangle + x1 y1 x2 y2 lfigangle + x1 y1 x2 y2 lfigdistance + } ifelse + } ifelse + 4 -1 roll setmatrix + end +} def + +% lfigsetcurve: set up a Bezier curve from x0 y0 to x3 y3 +% and return arrowhead angles and length of curve (actually 0) +% x0 y0 x1 y1 x2 y2 x3 y3 lfigsetcurve <angle> <angle> <length> +/lfigsetcurve +{ 8 copy curveto pop pop + lfigangle + 5 1 roll + 4 2 roll lfigangle + exch + 0 +} def + +% lfigpaintpath: paint a path of the given shape +% /paint [ shape ] lfigpaintpath - +/lfigpaintpath +{ + 10 dict begin + 0 newpath + /prevseen false def + /curveseen false def + { lfiggetnextitem + dup 0 eq { pop exit } + { 1 eq + { /curveseen true def + /curve exch def + curve length 0 eq { /curveseen false def } if + } + { /ycurr exch def + /xcurr exch def + prevseen + { curveseen + { curve length 4 eq + { xprev yprev + curve 0 get curve 1 get + curve 2 get curve 3 get + xcurr ycurr + lfigsetcurve pop pop pop + } + { xprev yprev xcurr ycurr + curve length 1 ge { curve 0 get } { 0 } ifelse + curve length 2 ge { curve 1 get } { 0 } ifelse + curve length 3 ge { curve 2 get } { true } ifelse + 7 1 roll + lfigsetarc pop pop pop + } ifelse + } + { xcurr ycurr lineto + } ifelse + } + { xcurr ycurr moveto + } ifelse + /xprev xcurr def + /yprev ycurr def + /prevseen true def + /curveseen false def + } ifelse + } ifelse + } loop pop pop cvx exec + end +} def + +% stroke a path of the given shape in the given linestyle and dash length. +% Return the origin and angle of the backward and forward arrow heads. +% dashlength /linestyle [shape] lfigdopath [<point> <angle>] [<point> <angle>] +/lfigdopath +{ + 10 dict begin + 0 + /prevseen false def + /curveseen false def + /backarrow [] def + /fwdarrow [] def + { + lfiggetnextitem + dup 0 eq { pop exit } + { + 1 eq + { /curveseen true def + /curve exch def + curve length 0 eq { /prevseen false def } if + } + { /ycurr exch def + /xcurr exch def + prevseen + { newpath xprev yprev moveto + curveseen + { curve length 4 eq + { xprev yprev + curve 0 get curve 1 get + curve 2 get curve 3 get + xcurr ycurr lfigsetcurve + } + { xprev yprev xcurr ycurr + curve length 1 ge { curve 0 get } { 0 } ifelse + curve length 2 ge { curve 1 get } { 0 } ifelse + curve length 3 ge { curve 2 get } { true } ifelse + 7 1 roll + lfigsetarc + } ifelse + } + { xcurr ycurr lineto + xcurr ycurr xprev yprev lfigangle dup 180 sub + xprev yprev xcurr ycurr lfigdistance + } ifelse + 6 index 6 index cvx exec + [ xprev yprev 5 -1 roll ] + backarrow length 0 eq + { /backarrow exch def } + { pop } ifelse + [ xcurr ycurr 4 -1 roll ] /fwdarrow exch def + } if + /xprev xcurr def + /yprev ycurr def + /prevseen true def + /curveseen false def + } ifelse + } ifelse + } loop + pop pop pop pop + backarrow length 0 eq { [ 0 0 0 ] } { backarrow } ifelse + fwdarrow length 0 eq { [ 0 0 0 ] } { fwdarrow } ifelse + end +} def + +% lfigdoarrow: draw an arrow head of given form +% dashlength /lstyle /pstyle hfrac height width [ <point> <angle> ] lfigdoarrow - +/lfigdoarrow +{ matrix currentmatrix 8 1 roll + dup 0 get 1 index 1 get translate + 2 get rotate + [ 2 index neg 2 index 0 0 + 3 index 3 index neg + 1 index 10 index mul 0 + 7 index 7 index ] + 4 1 roll pop pop pop + dup 3 1 roll + gsave lfigpaintpath grestore lfigdopath pop pop + setmatrix +} def + +% arrow head styles +/lfigopen 0.0 def +/lfighalfopen 0.5 def +/lfigclosed 1.0 def + +% stroke no arrows, forward, back, and both +/lfignoarrow { pop pop pop pop pop pop pop pop } def +/lfigforward { 7 -1 roll lfigdoarrow pop } def +/lfigback { 8 -2 roll pop lfigdoarrow } def +/lfigboth { 8 -1 roll 7 copy lfigdoarrow pop 7 -1 roll lfigdoarrow } def + +% lfigprevious: return previous point on path +/lfigprevious +{ lfigisnumbertype + { 2 copy } + { lfigisarraytype + { 2 index 2 index } + { 0 0 } + ifelse + } ifelse +} def + +% label a point in 2nd top dictionary: <point> /name lfigpointdef - +/lfigpointdef +{ + % (Entering lfigpointdef) lfigdebugprint + [ 4 2 roll transform + /itransform cvx ] cvx + currentdict end + 3 1 roll + % currentdict length currentdict maxlength lt + % { def } + % { exec moveto (too many labels) show stop } + % ifelse + def + begin + % (Leaving lfigpointdef) lfigdebugprint +} def + +% promote labels from second top to third top dictionary +% <string> lfigpromotelabels - +/lfigpromotelabels +{ + % (Entering lfigpromotelabels) lfigdebugprint + currentdict end exch currentdict end + { exch 20 string cvs 2 index + (@) lfigconcat exch lfigconcat cvn exch def + } forall pop begin + % (Leaving lfigpromotelabels) lfigdebugprint +} def + +% show labels (except CIRCUM): - lfigshowlabels - +/lfigshowlabels +{ + % (Entering lfigshowlabels) lfigdebugprint + currentdict end + currentdict + { 1 index 20 string cvs (CIRCUM) search % if CIRCUM in key + { pop pop pop pop pop } + { pop cvx exec 2 copy + newpath 1.5 pt 0 360 arc + 0 setgray fill + /Times-Roman findfont 8 pt scalefont setfont + moveto 0.2 cm 0.1 cm rmoveto 20 string cvs show + } + ifelse + } forall + begin + % (Leaving lfigshowlabels) lfigdebugprint +} def + +% fix an angle to 0 <= res < 360: <angle> lfigfixangle <angle> +/lfigfixangle +{ + % (Entering lfigfixangle) lfigdebugprint + { dup 0 ge { exit } if + 360 add + } loop + { dup 360 lt { exit } if + 360 sub + } loop + % (Leaving lfigfixangle) lfigdebugprint +} def + +% find point on circumference of box: alpha a b lfigboxcircum x y +/lfigboxcircum +{ + % (Entering lfigboxcircum) lfigdebugprint + 4 dict begin + /b exch def + /a exch def + lfigfixangle /alpha exch def + 0 0 a b lfigangle /theta exch def + + % if alpha <= theta, return (a, a*tan(alpha)) + alpha theta le + { a a alpha sin mul alpha cos div } + { + % else if alpha <= 180 - theta, return (b*cot(alpha), b) + alpha 180 theta sub le + { b alpha cos mul alpha sin div b } + { + % else if alpha <= 180 + theta, return (-a, -a*tan(alpha)) + alpha 180 theta add le + { a neg a neg alpha sin mul alpha cos div } + { + % else if alpha <= 360 - theta, return (-b*cot(alpha), -b) + alpha 360 theta sub le + { b neg alpha cos mul alpha sin div b neg } + { + % else 360 - theta <= alpha, return (a, a*tan(alpha)) + a a alpha sin mul alpha cos div + } ifelse + } ifelse + } ifelse + } ifelse + end + % (Leaving lfigboxcircum) lfigdebugprint +} def + +% find quadratic roots (assume a != 0): a b c lfigqroots x1 x2 2 +% or x2 1 +% or 0 +/lfigqroots +{ + 4 dict begin + /c exch def + /b exch def + /a exch def + /disc b b mul 4 a c mul mul sub def + disc 0 lt + { 0 + } + { disc 0 eq + { b neg 2 a mul div + 1 + } + { b neg disc sqrt add 2 a mul div + b neg disc sqrt sub 2 a mul div + 2 + } + ifelse + } + ifelse + end +} def + +% work our which quadrant: <angle> lfigquadrant <0-3> +/lfigquadrant +{ dup 90 lt + { pop 0 + } + { dup 180 lt + { pop 1 + } + { 270 lt + { 2 + } + { 3 + } ifelse + } ifelse + } ifelse +} def + +% find curvebox circum, assuming upper right quadrant: alpha a b xmk lfigcb x y +/lfigcb +{ + 6 dict begin + /xmk exch def + /b exch def + /a exch def + /alpha exch def + /theta1 0 0 a b xmk sub lfigangle def + /theta2 0 0 a xmk sub b lfigangle def + alpha theta1 le + { % if alpha <= theta1, return (a, a*tan(alpha)) + a a alpha sin mul alpha cos div + } + { alpha theta2 ge + { % else if alpha > theta2, return (b*cot(alpha), b) + b alpha cos mul alpha sin div b + } + { + % else, return the intersection of line and circle + a xmk sub b xmk sub xmk 0 0 alpha lfigcircleintersect + dup 0 eq + { % should never happen, just return any reasonable point + pop + a b 0.5 lfigpmul + } + { 1 eq + { % should never happen, just return the point on top of stack + } + { % the usual case, two points on stack, return the larger + lfigpmax + } ifelse + } ifelse + } ifelse + } ifelse + end +} def + +% find point on circumference of curvebox: alpha a b xmk lfigcurveboxcircum x y +/lfigcurveboxcircum +{ + % (Entering lfigcurveboxcircum) lfigdebugprint + 5 dict begin + /xmk exch def + /b exch def + /a exch def + lfigfixangle /alpha exch def + + % work out which quadrant we are in, and reflect accordingly + /quad alpha lfigquadrant def + quad 0 eq + { alpha a b xmk lfigcb + } + { quad 1 eq + { 180 alpha sub a b xmk lfigcb exch neg exch + } + { quad 2 eq + { alpha 180 sub a b xmk lfigcb neg exch neg exch + } + { 360 alpha sub a b xmk lfigcb neg + } ifelse + } ifelse + } ifelse + end + % (Leaving lfigcurveboxcircum) lfigdebugprint +} def + +% find point on circumference of diamond: alpha a b lfigdiamondcircum x y +/lfigdiamondcircum +{ + % (Entering lfigdiamondcircum) lfigdebugprint + 4 dict begin + /b exch def + /a exch def + lfigfixangle /alpha exch def + b alpha cos abs mul a alpha sin abs mul add /denom exch def + a b mul alpha cos mul denom div + a b mul alpha sin mul denom div + end + % (Leaving lfigdiamondcircum) lfigdebugprint +} def + +% find point on circumference of ellipse: alpha a b lfigellipsecircum x y +/lfigellipsecircum +{ + % (Entering lfigellipsecircum) lfigdebugprint + 4 dict begin + /b exch def + /a exch def + lfigfixangle /alpha exch def + b alpha cos mul dup mul a alpha sin mul dup mul add sqrt /denom exch def + a b mul alpha cos mul denom div + a b mul alpha sin mul denom div + end + % (Leaving lfigellipsecircum) lfigdebugprint +} def + +% find point of intersection of two lines each defined by two points +% x1 y1 x2 y2 x3 y3 x4 y4 lfiglineintersect x y +/lfiglineintersect +{ + % (Entering lfiglineintersect) lfigdebugprint + 13 dict begin + /y4 exch def + /x4 exch def + /y3 exch def + /x3 exch def + /y2 exch def + /x2 exch def + /y1 exch def + /x1 exch def + x2 x1 sub /x21 exch def + x4 x3 sub /x43 exch def + y2 y1 sub /y21 exch def + y4 y3 sub /y43 exch def + y21 x43 mul y43 x21 mul sub /det exch def + + % calculate x + y21 x43 mul x1 mul + y43 x21 mul x3 mul sub + y3 y1 sub x21 mul x43 mul add + det div + + % calculate y + x21 y43 mul y1 mul + x43 y21 mul y3 mul sub + x3 x1 sub y21 mul y43 mul add + det neg div + + end + % (Leaving lfiglineintersect) lfigdebugprint +} def + +% find point on circumference of polygon +% alpha radius num theta lfigpolycircum x y +/lfigpolycircum +{ + % (Entering lfigpolycircum) lfigdebugprint + 13 dict begin + /theta exch def + /num exch def + /radius exch def + /alpha exch def + + % calculate delta, the angle from theta to alpha + alpha theta sub lfigfixangle + + % calculate the angle which is the multiple of 360/num closest to delta + 360 num div div truncate 360 num div mul theta add /anglea exch def + + % calculate the next multiple of 360/num after anglea + anglea 360 num div add /angleb exch def + + % intersect the line through these two points with the alpha line + anglea cos anglea sin angleb cos angleb sin + 0 0 alpha cos 2 mul alpha sin 2 mul + lfiglineintersect radius lfigpmul + + end + % (Leaving lfigpolycircum) lfigdebugprint +} def + +% find point of intersection of a point and a circle +% x0 y0 r x1 y1 theta lfigcircleintersect xa ya xb yb 2 +% or xb yb 1 +% or 0 +/lfigcircleintersect +{ + % (Entering lfigcircleintersect) lfigdebugprint + 15 dict begin + /theta exch def + /y1 exch def + /x1 exch def + /r exch def + /y0 exch def + /x0 exch def + + % if sin(theta) = 0 then line is horizontal and y must be y1 + theta sin abs 0.00001 lt + { + /a 1 def + /b -2 x0 mul def + /c x0 dup mul y1 y0 sub dup mul add r dup mul sub def + a b c lfigqroots dup + 0 eq + { pop + 0 + } + { 1 eq + { y1 1 + } + { y1 exch y1 2 + } ifelse + } ifelse + } + { + /ct theta cos theta sin div def + /a ct ct mul 1 add def + /b ct x1 x0 sub mul y1 add y0 sub 2 mul def + /c x1 x0 sub dup mul y1 y0 sub dup mul add r dup mul sub def + a b c lfigqroots dup + 0 eq + { pop + 0 + } + { 1 eq + { y1 add /yb exch def + yb y1 sub ct mul x1 add /xb exch def + xb yb 1 + } + { y1 add /ya exch def + ya y1 sub ct mul x1 add /xa exch def + y1 add /yb exch def + yb y1 sub ct mul x1 add /xb exch def + xa ya xb yb 2 + } ifelse + } ifelse + } ifelse + end + % (Leaving lfigcircleintersect) lfigdebugprint +} def + +% add CIRCUM operator with this body: <array> lfigcircumdef - +/lfigcircumdef +{ % (Entering lfigcircumdef) lfigdebugprint + /CIRCUM exch cvx + currentdict end + 3 1 roll + % currentdict length currentdict maxlength lt + % { def } + % { exec moveto (too many labels) show stop } + % ifelse + def + begin + % (Leaving lfigcircumdef) lfigdebugprint +} def + +end +%%EndResource + +%%BeginResource: procset LoutGraphPrependGraphic +% @PrependGraphic file /export/home/6monthspace/jeff/lout.lib/include/graphf.lpg +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % +% PostScript @SysPrependGraphic file for @Graph (Version 1.0) % +% % +% Version 1.0 by Jeffrey H. Kingston, December 1993. % +% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +errordict begin + /handleerror + { + { /Times-Roman findfont 8 pt scalefont setfont + 0 setgray 4 pt 4 pt moveto + $error /errorname get + dup lgraphdict exch known + { lgraphdict exch get } + { 30 string cvs } ifelse + show + ( Command: ) show + $error /command get 30 string cvs show + } stopped {} if + showpage stop + } def +end + +/lgraphdict 200 dict def +lgraphdict begin + +% error messages +/dictfull (dictfull error) def +/dictstackoverflow (dictstackoverflow error) def +/execstackoverflow (execstackoverflow error: expression too complex?) def +/limitcheck (limitcheck error: graph too complex or too large?) def +/syntaxerror (syntaxerror error: syntax error in text of graph?) def +/typecheck (typecheck error: syntax error in text of graph?) def +/undefined (undefined error: unknown or misspelt symbol?) def +/rangecheck (rangecheck error: undefined expression (e.g. divide by zero)?) def +/VMError (VMError error: run out of memory?) def + +% random number between x and y inclusive: x y dorand num +/dorand { 1 index sub 1 add rand exch mod add } def + +% log to given base: base num dolog num +/dolog { ln exch ln div } def + +% maximum of two numbers: <num> <num> max <num> +/max { 2 copy gt { pop } { exch pop } ifelse } def + +% add two points: <point> <point> padd <point> +/padd { exch 3 1 roll add 3 1 roll add exch } def + +% subtract first point from second: <point> <point> psub <point> +/psub { 3 2 roll sub 3 1 roll exch sub exch } def + +% distance between two points: <point> <point> distance <length> +/distance { psub dup mul exch dup mul add sqrt } def + +% point at angle and distance: <point> <length> <angle> atangle <point> +/atangle { 2 copy cos mul 3 1 roll sin mul padd } def + +% angle from one point to another: <point> <point> angle <angle> +/angle { psub 2 copy 0 eq exch 0 eq and {pop} {exch atan} ifelse } def + + +% set up for line +% - linesetup <length> <dashlength> +/linesetup +{ newpath + xcurr ycurr trpoint xprev yprev trpoint + 4 copy moveto lineto distance dashlength +} def + +% set up for icon-avoiding line +% - ilinesetup <length> <dashlength> +/ilinesetup +{ newpath + xprev yprev trpoint xcurr ycurr trpoint 4 copy + 4 copy angle symbolsize 1.5 mul exch 4 2 roll pop pop atangle + 6 2 roll 4 2 roll + 4 copy angle symbolsize 1.5 mul exch 4 2 roll pop pop atangle + 4 copy moveto lineto distance dashlength +} def + + +% stroke a solid line: <length> <dashlength> solid - +/solid +{ pop pop [] 0 setdash linewidth setlinewidth stroke +} def + +% stroke a dashed line: <length> <dashlength> dashed - +/dashed +{ 2 copy 2 mul le 1 index 0 le or + { exch pop 1 pt max [ exch dup ] 0 setdash } + { dup [ exch 4 2 roll 2 copy div + 1 sub 2 div ceiling dup 4 1 roll + 1 add mul sub exch div ] 0 setdash + } ifelse linewidth setlinewidth stroke +} def + +% stroke a cdashed line: <length> <dashlength> cdashed - +/cdashed +{ 2 copy le 1 index 0 le or + { exch pop 1 pt max [ exch dup ] dup 0 get 2 div setdash } + { dup [ 4 2 roll exch 2 copy exch div + 2 div ceiling div 1 index sub + ] exch 2 div setdash + } ifelse linewidth setlinewidth stroke +} def + +% stroke a dotted line: <length> <dashlength> dotted - +/dotted +{ 2 copy le 1 index 0 le or + { exch pop 1 pt max [ exch 0 exch ] 0 setdash } + { 1 index exch div ceiling div 0.99999 mul + [ 0 3 2 roll ] 0 setdash + } ifelse gsave 1 setlinecap linewidth setlinewidth stroke grestore newpath +} def + +% stroke a noline line: <length> <dashlength> noline - +/noline +{ pop pop +} def + +% stroke a y histogram: - yhisto - +/yhisto +{ xprev yleft trpoint yextra sub moveto + xprev yprev trpoint lineto + xcurr yprev trpoint lineto + xcurr yleft trpoint yextra sub lineto + linewidth setlinewidth stroke +} def + +% stroke an x histogram: - xhisto - +/xhisto +{ xleft yprev trpoint exch xextra sub exch moveto + xcurr yprev trpoint lineto + xcurr ycurr trpoint lineto + xleft ycurr trpoint exch xextra sub exch lineto + linewidth setlinewidth stroke +} def + +% stroke a surface y histogram: - surfaceyhisto - +/surfaceyhisto +{ firstpair + { xprev yleft trpoint yextra sub moveto + xprev yprev trpoint lineto + } + { xprev yprev trpoint moveto + } ifelse + xcurr yprev trpoint lineto + lastpair + { xcurr yleft trpoint yextra sub lineto + } + { xcurr ycurr trpoint lineto + } ifelse + linewidth setlinewidth stroke +} def + +% stroke a surface x histogram: - surfacexhisto - +/surfacexhisto +{ firstpair + { xleft yprev trpoint exch xextra sub exch moveto + } + { xprev yprev trpoint moveto + } ifelse + xcurr yprev trpoint lineto + xcurr ycurr trpoint lineto + lastpair + { xleft ycurr trpoint exch xextra sub exch lineto + } if + linewidth setlinewidth stroke +} def + +% stroke a filled y histogram: - filledyhisto - +/filledyhisto +{ + linewidth setlinewidth + xprev yleft trpoint exch currentlinewidth 2 div add exch yextra sub moveto + xprev yprev trpoint exch currentlinewidth 2 div add exch lineto + xcurr yprev trpoint exch currentlinewidth 2 div sub exch lineto + xcurr yleft trpoint exch currentlinewidth 2 div sub exch yextra sub lineto + closepath fill +} def + +% stroke a filled x histogram: - filledxhisto - +/filledxhisto +{ + linewidth setlinewidth + xleft yprev trpoint currentlinewidth 2 div add exch xextra sub exch moveto + xcurr yprev trpoint currentlinewidth 2 div add lineto + xcurr ycurr trpoint currentlinewidth 2 div sub lineto + xleft ycurr trpoint currentlinewidth 2 div sub exch xextra sub exch lineto + closepath fill +} def + + +% cross: show a small cross +/cross +{ newpath + xcurr ycurr trpoint moveto + symbolsize neg symbolsize neg rmoveto + symbolsize 2 mul symbolsize 2 mul rlineto + 0 symbolsize -2 mul rmoveto + symbolsize -2 mul symbolsize 2 mul rlineto + [] 0 setdash stroke +} def + +% plus: show a small plus +/plus +{ newpath + xcurr ycurr trpoint moveto + symbolsize neg 0 rmoveto + symbolsize 2 mul 0 rlineto + symbolsize neg symbolsize neg rmoveto + 0 symbolsize 2 mul rlineto + [] 0 setdash stroke +} def + +% square: show a small square +/square +{ newpath + xcurr ycurr trpoint moveto + symbolsize neg symbolsize neg rmoveto + symbolsize 2 mul 0 rlineto + 0 symbolsize 2 mul rlineto + symbolsize -2 mul 0 rlineto + closepath [] 0 setdash stroke +} def + +% filledsquare: show a small filled square +/filledsquare +{ newpath + xcurr ycurr trpoint moveto + symbolsize neg symbolsize neg rmoveto + symbolsize 2 mul 0 rlineto + 0 symbolsize 2 mul rlineto + symbolsize -2 mul 0 rlineto + closepath gsave [] 0 setdash stroke grestore fill +} def + +% diamond: show a small diamond +/diamond +{ newpath + xcurr ycurr trpoint moveto + symbolsize neg 0 rmoveto + symbolsize symbolsize neg rlineto + symbolsize symbolsize rlineto + symbolsize neg symbolsize rlineto + closepath [] 0 setdash stroke +} def + +% filleddiamond: show a small filled diamond +/filleddiamond +{ newpath + xcurr ycurr trpoint moveto + symbolsize neg 0 rmoveto + symbolsize symbolsize neg rlineto + symbolsize symbolsize rlineto + symbolsize neg symbolsize rlineto + closepath gsave [] 0 setdash stroke grestore fill +} def + +% circle: show a small circle +/circle +{ newpath + xcurr ycurr trpoint symbolsize 0 360 arc [] 0 setdash stroke +} def + +% filledcircle: show a small filled circle +/filledcircle +{ newpath + xcurr ycurr trpoint symbolsize 0 360 arc gsave [] 0 setdash stroke grestore fill +} def + +% triangle: show a small triangle +/triangle +{ newpath + xcurr ycurr trpoint moveto + 0 symbolsize 1.5 mul rmoveto + symbolsize neg symbolsize -2.5 mul rlineto + symbolsize 2 mul 0 rlineto + closepath [] 0 setdash stroke +} def + +% filledtriangle: show a small filled triangle +/filledtriangle +{ newpath + xcurr ycurr trpoint moveto + 0 symbolsize 1.5 mul rmoveto + symbolsize neg symbolsize -2.5 mul rlineto + symbolsize 2 mul 0 rlineto + closepath gsave [] 0 setdash stroke grestore fill +} def + + +%plog: like log only with a base, and protected from failing if <= 0 +% base x plog res +/plog { dup 0 le { pop pop 0 } { ln exch ln div } ifelse } def + +% xtr: transform one x value logarithmically if xlog > 1 +% <num> xtr <num> +/xtr +{ xlog 1 gt + { xlog exch plog + } if +} def + +% ytr: transform one y value logarithmically if ylog > 1 +% <num> ytr <num> +/ytr +{ ylog 1 gt + { ylog exch plog + } if +} def + +% % trpoint: transform (x, y) in graph space into (x', y') in print space +% % x y trpoint x' y' +% /trpoint +% { exch xtr trxmin sub trxmax trxmin sub div xwidth mul xextra add +% exch ytr trymin sub trymax trymin sub div ywidth mul yextra add +% } def + + +% trpoint: transform (x, y) in graph space into (x', y') in print space +% x y trpoint x' y' +/trpoint +{ exch xtr xdecr { trxmax exch sub } { trxmin sub } ifelse + trxmax trxmin sub div xwidth mul xextra add + + exch ytr ydecr { trymax exch sub } { trymin sub } ifelse + trymax trymin sub div ywidth mul yextra add +} def + + +% yonly: interpolate x values 1, 2, ... into data +% [ data ] yonly [ newdata ] +/yonly +{ dup /tmp exch def + length [ exch 1 exch 1 exch + { dup tmp exch 1 sub get + } for + ] +} def + +% xonly: interpolate y values 1, 2, ... into data +% [ data ] yonly [ newdata ] +/xonly +{ dup /tmp exch def + length [ exch 1 exch 1 exch + { dup tmp exch 1 sub get exch + } for + ] +} def + +% xandy: no interpolation of x or y values +% [ data ] xandy [ data ] +/xandy {} def + + +% expstringwidth: calculate width of string containing optional exponent +% <string> expstringwidth <width> +/expstringwidth +{ (^) search + { exch pop stringwidth pop exch stringwidth pop 0.7 mul add } + { stringwidth pop } + ifelse +} def + +% expstringshow: show string containing optional exponent +% <string> expstringshow - +/expstringshow +{ (^) search + { exch pop show 0 0.5 ft rmoveto + gsave currentfont 0.7 scalefont setfont show grestore + } + { show + } + ifelse +} def + +% concatenate two strings: <string> <string> strconcat <string> +/strconcat +{ 2 copy length exch length add string + dup 0 4 index putinterval + dup 3 index length 3 index putinterval + 3 1 roll pop pop +} def + +% lgen: generate one label automatically +% num lgen num string +/lgen { dup 20 string cvs } def + +% loglgen: generate one logarithmic label (with exponent) +% <base> <exponent> loglgen <string> +/loglgen +{ 20 string cvs exch 20 string cvs + (^) strconcat exch strconcat +} def + + +% printxtick: print one x tick +% xpos printxtick - +/printxtick +{ newpath + yleft trpoint moveto 0 yextra neg rmoveto + 0 xticklength neg rlineto [] 0 setdash stroke +} def + +% printxlabel: print one x label +% (xlabel) xpos printxlabel - +/printxlabel +{ yleft trpoint moveto 0 yextra neg rmoveto + 0 xticklength neg rmoveto 0 0.9 ft neg rmoveto + xlog 1 gt { 0 0.3 ft neg rmoveto } if + dup expstringwidth -2 div 0 rmoveto expstringshow +} def + +% printytick: print one y tick +% ypos printytick - +/printytick +{ newpath + xleft exch trpoint moveto xextra neg 0 rmoveto + yticklength neg 0 rlineto [] 0 setdash stroke +} def + +% printylabel: print one y label +% (ylabel) ypos printylabel - +/printylabel +{ xleft exch trpoint moveto xextra neg 0 rmoveto + yticklength neg 0 rmoveto -0.3 ft -0.3 ft rmoveto + dup expstringwidth neg 0 rmoveto expstringshow +} def + +% printrtick: print one r tick +% ypos printrtick - +/printrtick +{ newpath + xright exch trpoint moveto xextra 0 rmoveto + rticklength 0 rlineto [] 0 setdash stroke +} def + +% printrlabel: print one r label +% (rlabel) ypos printrlabel - +/printrlabel +{ xright exch trpoint moveto xextra 0 rmoveto + rticklength 0 rmoveto 0.3 ft -0.3 ft rmoveto + expstringshow +} def + +% printticks: print ticks and labels +% /tickproc /labelproc [ tickandlabeldata ] min printticks - +/printticks +{ /prev exch def + { dup type dup dup /integertype eq exch /realtype eq or + { pop dup /prev exch def 2 index cvx exec + } + { /stringtype eq + { prev 2 index cvx exec + } + { pop + } ifelse + } ifelse + } forall + pop pop +} def + + +% printxaxistick: print one x axis tick +% xpos printxaxistick - +/printxaxistick +{ newpath + yaxis trpoint moveto 0 xticklength -2 div rmoveto + 0 xticklength rlineto [] 0 setdash stroke +} def + +% printxaxislabel: print one x axis label +% (xlabel) xpos printxaxislabel - +/printxaxislabel +{ yaxis trpoint moveto + 0 xticklength -2 div rmoveto 0 0.9 ft neg rmoveto + xlog 1 gt { 0 0.3 ft neg rmoveto } if + dup expstringwidth -2 div 0 rmoveto expstringshow +} def + +% printyaxistick: print one y axis tick +% ypos printyaxistick - +/printyaxistick +{ newpath + xaxis exch trpoint moveto + yticklength -2 div 0 rmoveto + yticklength 0 rlineto [] 0 setdash stroke +} def + +% printyaxislabel: print one y axis label +% (ylabel) ypos printyaxislabel - +/printyaxislabel +{ xaxis exch trpoint moveto + yticklength -2 div 0 rmoveto -0.3 ft -0.3 ft rmoveto + dup expstringwidth neg 0 rmoveto expstringshow +} def + + +% <val> minmax - +% perform minv := min(minv, val); maxv := max(maxv, val) +% allowing for the possibility of minv, maxv, val being false (undefined) +/minmax +{ dup false eq + { pop } + { minv false eq + { dup /minv exch def /maxv exch def } + { dup minv lt + { /minv exch def } + { dup maxv gt + { /maxv exch def } + { pop } + ifelse + } ifelse + } ifelse + } ifelse +} def + +% <ticks> ticksundef <ticks> <bool> +% returns true iff the ticks array is undefined (one false entry) +/ticksundef +{ dup length 1 eq + { dup 0 get false eq + } + { false } + ifelse +} def + +% <number> integral <boolean> +% true if the number has an integral value +/integral { dup round eq } def + +% ticksep ticks xory alldata minval maxval axis base ticksandlimits ticks min max base +% ticksandlimits: sort out value of x or y ticks and limits and log base +/ticksandlimits +{ /base exch def + /minv false def + /maxv false def + + % min and max of user-supplied minval, maxval, and axis + minmax minmax minmax + + % min and max of data points + { 0 get dup dup length 1 sub 3 index exch 2 exch + { get minmax dup + } for pop pop + } forall + pop dup + + % min and max of tick values + { dup type /stringtype eq + { pop } { minmax } ifelse + } forall + + % fix minv and maxv if undefined (false) or equal + minv false eq + { /minv -1 def /maxv 1 def } + { minv maxv eq + { minv 0 lt + { /minv 2 minv mul def /maxv 0 def + } + { minv 0 eq + { /minv -1 def /maxv 1 def + } + { /minv 0 def /maxv 2 maxv mul def + } ifelse + } ifelse + } if + } ifelse + + % invent ticks if undefined + ticksundef + { pop /ticksep exch def + + % if base is reasonable and minv is positive, logarithmic ticks + base 1 gt minv 0 gt and + { + % get integral log of minv and maxv + /logminv base minv plog floor cvi def + /logmaxv base maxv plog ceiling cvi def + + % if minv close to base, make it 1; reset minv and maxv + logminv 1 eq logmaxv 4 ge and { /logminv 0 def } if + /minv base logminv exp def + /maxv base logmaxv exp def + + % ticks := [ base**logminv, ... , base**logmaxv ] + [ logminv 1 logmaxv + { dup base exch exp + exch base exch loglgen + } for + ] + } + { % non-logarithmic ticks + { + % fix tick separation if undefined (0) or too small + /base 0 def + /delta maxv minv sub def + ticksep delta 30 div le + { /ticksep 10 delta log 1 sub ceiling exp def + ticksep delta 2 div ge + { /ticksep ticksep 2 div def } + { ticksep delta 5 div lt + { /ticksep 2 ticksep mul def + } if + } ifelse + } if + + % adjust minv and maxv to be multiples of ticksep + /minv minv ticksep div floor ticksep mul def + /maxv maxv ticksep div ceiling ticksep mul def + /delta maxv minv sub def + + % if minv or maxv near zero, move to zero and redo + minv ticksep eq + { /minv 0 def } + { maxv ticksep neg eq { /maxv 0 def } { exit } ifelse + } ifelse + } loop + + % if minv, maxv, and ticksep are all integral, set "makeint" to true + /makeint minv integral maxv integral ticksep integral and and def + + % ticks := [ minv, minv+ticksep, ... , maxv ] + [ 0 1 delta ticksep div round + { ticksep mul minv add makeint { cvi } if lgen } + for + ] + } ifelse + } + { exch pop + } ifelse + minv maxv base +} def + +% xset: set up all data for x axis, including limits and ticks +% xticksep xticks 0 alldata xmin xmax xlog xextra xdecr xaxis xticklength xset - +/xset +{ /xticklength exch def + /xaxis exch def + /xdecr exch def + /xextra exch def + xaxis exch ticksandlimits + /xlog exch def /xmax exch def /xmin exch def /xticks exch def + /xleft xdecr { xmax } { xmin } ifelse def + /xright xdecr { xmin } { xmax } ifelse def + /xwidth xsize xextra 2 mul sub def + /trxmin xmin xtr def /trxmax xmax xtr def +} def + +% yset: set up all data for y axis, including limits and yticks +% yticksep yticks 0 alldata ymin ymax ylog yextra ydecr yaxis yticklength yset - +/yset +{ /yticklength exch def + /yaxis exch def + /ydecr exch def + /yextra exch def + yaxis exch ticksandlimits + /ylog exch def /ymax exch def /ymin exch def /yticks exch def + /yleft ydecr { ymax } { ymin } ifelse def + /yright ydecr { ymin } { ymax } ifelse def + /ywidth ysize yextra 2 mul sub def + /trymin ymin ytr def /trymax ymax ytr def +} def + +% rset: set up all data for y axis (again), but including limits and rticks +% rticksep rticks 0 alldata ymin ymax ylog yextra ydecr yaxis rticklength rset - +/rset +{ /rticklength exch def + /yaxis exch def + /ydecr exch def + /yextra exch def + yaxis exch ticksandlimits + /ylog exch def /ymax exch def /ymin exch def /rticks exch def + /yleft ydecr { ymax } { ymin } ifelse def + /yright ydecr { ymin } { ymax } ifelse def + /ywidth ysize yextra 2 mul sub def + /trymin ymin ytr def /trymax ymax ytr def +} def + +% norset: set up data for no rticks +% - norset - +/norset +{ /rticklength 0 def + /rticks [] def +} def + +% framestyle: print a frame around the graph +/framestyle +{ 0 0 moveto xsize 0 lineto xsize ysize lineto + 0 ysize lineto closepath stroke + /printxtick /printxlabel xticks xleft printticks + /printytick /printylabel yticks ymin printticks + /printrtick /printrlabel rticks ymin printticks +} def + +% nonestyle: print nothing around the graph +/nonestyle +{ +} def + +% axesstyle: print axes for the graph (unless axis values missing) +/axesstyle +{ + xaxis false eq yaxis false eq or + { framestyle } + { xaxis yaxis trpoint dup 0 exch moveto xsize exch lineto + dup 0 moveto ysize lineto stroke + /printxaxistick /printxaxislabel xticks xleft printticks + /printyaxistick /printyaxislabel yticks ymin printticks + } ifelse +} def + +% rundata: run all data sets +/rundata +{ alldata + { gsave + dup dup dup dup + 4 get /dopaint exch def + 3 get /initrun exch def + 2 get /pairs exch def + 1 get /points exch def + 0 get /data exch def + dopaint + { data length 4 ge + { initrun + newpath + data 0 get ymin trpoint yextra sub moveto + 0 2 data length 2 sub + { dup 1 add + data exch get /ycurr exch def + data exch get /xcurr exch def + xcurr ycurr trpoint lineto + } for + data dup length 2 sub get ymin trpoint yextra sub lineto + closepath fill + } if + } if + initrun + data length 2 ge + { + /xcurr data 0 get def + /ycurr data 1 get def + points + data length 4 ge + { 2 2 data length 2 sub + { /xprev xcurr def + /yprev ycurr def + dup dup 2 eq /firstpair exch def + data length 2 sub eq /lastpair exch def + dup 1 add + data exch get /ycurr exch def + data exch get /xcurr exch def + pairs + points + } for + } if + } if + grestore + } forall +} def + +end +%%EndResource + +%%BeginResource: procset LoutBasicSetup +% @PrependGraphic file /export/home/6monthspace/jeff/lout.lib/include/bsf.lpg + +% width height linethickness louteuro - +% draw a Euro symbol of this width and height with this line thickness +/louteuro { + 20 dict begin + /eurothick exch def + /euroheight exch def + /eurowidth exch def + /eurostrokewidth euroheight 0.8 mul def + /eurostep eurothick 60 cos mul 60 sin div def + /eurotheta 40 def + + % llx lly width thickness louteurobox - + % draw angled box starting at (llx, lly) with given width and thickness + /louteurobox + { + /euroboxthick exch def + /euroboxwidth exch def + newpath moveto euroboxwidth 0 rlineto + eurostep euroboxthick rlineto + euroboxwidth neg 0 rlineto closepath fill + } def + + % lower cross stroke + 0 euroheight 2 div eurothick 1.5 mul sub + eurostrokewidth eurothick louteurobox + + % upper cross stroke + 0 euroheight 2 div eurothick 0.5 mul add + eurostrokewidth eurostep 2 mul add eurothick louteurobox + + % circular part + /eurohctr eurowidth euroheight 2 div eurotheta cos mul sub def + /eurovctr euroheight 2 div def + newpath + eurohctr eurovctr eurovctr eurotheta 350 eurotheta sub arc + eurohctr eurovctr eurovctr eurothick sub 365 eurotheta sub eurotheta arcn + closepath fill + end +} def + +% path for @FullWidthRule symbol +/LoutRule +{ 0 0 moveto xsize 0 lineto +} def + +% path for @Box symbol +/LoutBox +{ 0 0 moveto xsize 0 lineto + xsize ysize lineto 0 ysize lineto + closepath +} def + +% path for @CurveBox symbol +/LoutCurveBox +{ xmark 0 moveto + xsize xmark sub xmark xmark 270 360 arc + xsize xmark sub ysize xmark sub xmark 0 90 arc + xmark ysize xmark sub xmark 90 180 arc + xmark xmark xmark 180 270 arc + closepath +} def + +% path for @ShadowBox symbol +/LoutShadowBox +{ xmark 2 mul 0 moveto xsize 0 lineto + xsize ysize xmark 2 mul sub lineto + xsize xmark sub ysize xmark 2 mul sub lineto + xsize xmark sub xmark lineto + xmark 2 mul xmark lineto + closepath +} def + +% set up dictionary containing margin note data: parity LoutMargSet - +/LoutMargSet +{ /LoutMargDict 12 dict def + LoutMargDict begin + /parity exch def + /matr matrix currentmatrix def + /rightx xsize def + /lefty ysize def % highest allowable point for top of next left note + /righty ysize def % highest allowable point for top of next right note + /max { 2 copy gt { pop } { exch pop } ifelse } def + /min { 2 copy lt { pop } { exch pop } ifelse } def + end +} def + +%translate coordinate system for marginal notes: type LoutMargShift - +% where type 0 is left margin, 1 is right margin, 2 is outer, 3 is inner +/LoutMargShift +{ LoutMargDict begin + + % y coordinate of top of note, in margin coords, before vertical adjust + 0 ysize transform matr itransform exch pop + + % decide whether left or right margin based on type and parity + exch [ 0 1 parity 1 parity sub ] exch get 0 eq + { + % left margin: adjust top of note downwards if overlaps previous note + lefty min + + % bottom of note is new lefty position and also translate position + ysize sub dup /lefty exch def + + % want right edge of note at coordinate zero + xsize neg exch + } + { + % right margin: adjust top of note downwards if overlaps previous note + righty min + + % bottom of note is new righty position and also translate position + ysize sub dup /righty exch def + + % want left edge of note at coordinate rightx + rightx exch + } ifelse + + % stack now contains coord of bottom left corner in margin coordinates + matr setmatrix translate + end +} def + +% create LoutPageDict with left, right, foot, top for @Place symbol users +/LoutPageSet +{ + /LoutPageDict 5 dict def + LoutPageDict begin + /matr matrix currentmatrix def + /left 0 def + /right xsize def + /foot 0 def + /top ysize def + end + +} def + +%%EndResource + +%%EndProlog + +%%BeginSetup +%%IncludeResource: font Times-Roman +/Times-Romanfnt82 vec2 /Times-Roman LoutRecode +/fnt82 { /Times-Romanfnt82 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt35 vec2 /Helvetica LoutRecode +/fnt35 { /Helveticafnt35 LoutFont } def +%%IncludeResource: font Helvetica-Oblique +/Helvetica-Obliquefnt36 vec2 /Helvetica-Oblique LoutRecode +/fnt36 { /Helvetica-Obliquefnt36 LoutFont } def +%%EndSetup + +%%Page: 1 1 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Helvetica +%%+ font Helvetica-Oblique +/pgsave save def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup + +gsave +0 0 translate +400 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 12588 0 12588 400 480 100 1417 -14005 LoutGr2 +1 LoutMargSet +grestore +160 fnt82 0 12479(lout)m 9002(1)s 600 fnt35 691 11623(A)m +1250(Pr)s 6(actical)k 3667(Introduction)s 6922(to)s 7566(the)s +3956 10183(Lout)m 616 8743(Document)m 3500(F)s 18(or)k -15(matting)k +6490(System)s 400 fnt35 2882 6881(Jeffre)m 8(y)k 4180(H.)s +4656(Kingston)s 400 fnt36 1395 5779(Basser)m 2794(Dept.)s 3834(of)s +4333(Computer)s 6242(Science)s 2251 5299(The)m 3058(Univ)s 10(ersity)k +4951(of)s 5450(Sydne)s 8(y)k +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 2 2 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +400 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 12588 0 12588 400 480 100 1417 -14005 LoutGr2 +0 LoutMargSet +grestore +160 fnt82 0 12479(lout)m 8990(2)s 400 fnt84 2988 11377(A)m +3363(simple)s 4565(input)s 5575(\207le)s 360 fnt35 800 9646(@SysInclude { doc })m +800 9166(@Doc @T)m 43(e)k 10(xt @Begin)k 800 8686(Hello)m 14(, w)k 3(or)k -5(ld)k +800 8206(@End @T)m 43(e)k 10(xt)k 400 fnt84 0 6379(Ho)m 4(w)k +889(to)s 1313(f)s 10(ormat)k 2579(it)s 360 fnt35 +800 5633(lout \207lename > out.ps)m 800 5153(ghostvie)m 7(w out.ps)k 800 4673(mpr out.ps)m +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 3 3 +%%BeginPageSetup +%%PageResources: font Times-Roman +/pgsave save def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +400 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 12588 0 12588 400 480 100 1417 -14005 LoutGr2 +1 LoutMargSet +grestore +160 fnt82 0 12479(lout)m 8997(3)s gsave +0 667 translate +400 fnt82 8640 10080 1440 8457 400 480 100 LoutGraphic +gsave +LoutBox stroke +grestore +1440 8367(Hello,)m 2505(w)s 4(orld)k + +grestore + +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 4 4 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +400 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 12588 0 12588 400 480 100 1417 -14005 LoutGr2 +0 LoutMargSet +grestore +160 fnt82 0 12479(lout)m 8990(4)s 400 fnt84 2339 11377(Headings)m +4026(and)s 4762(paragraphs)s 360 fnt35 800 9646(@SysInclude { doc })m 800 9166(@Doc @T)m 43(e)k 10(xt @Begin)k +800 8686(@Heading { Introduction })m 800 8206(@PP)m 800 7726(The design of the Lout f)m 10(or)k -9(matting)k +800 7246(system w)m 5(as under)k -14(tak)k 7(en with the)k 800 6766(needs of the @I { ordinar)m -10(y user })k +800 6286(v)m 9(er)k -10(y m)k 3(uch in mind.)k 800 5806(@End @T)m 43(e)k 10(xt)k + +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 5 5 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +%%+ font Times-Italic +/pgsave save def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +400 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 12588 0 12588 400 480 100 1417 -14005 LoutGr2 +1 LoutMargSet +grestore +160 fnt82 0 12478(lout)m 8995(5)s gsave +0 666 translate +400 fnt82 8640 10080 1440 8456 400 480 100 LoutGraphic +gsave +LoutBox stroke +grestore +400 fnt84 1440 8364(Intr)m 7(oduction)k +400 fnt82 2240 7742(The)m 2953(design)s 4090(of)s 4543(the)s +5123(Lout)s 1440 7262(formatting)m 3215(system)s 4423(w)s 4(as)k +5123(undertak)s 4(en)k 1440 6782(with)m 2245(the)s 2825(needs)s +3818(of)s 4271(the)s 400 fnt83 4851 6784(or)m 14(dinary)k +6328(user)s 400 fnt82 1440 6302(v)m 6(ery)k 2234(much)s +3217(in)s 3622(mind.)s +grestore + +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 6 6 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +400 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 12588 0 12588 400 480 100 1417 -14005 LoutGr2 +0 LoutMargSet +grestore +160 fnt82 0 12479(lout)m 8991(6)s 400 fnt84 3817 11376(Displays)m +360 fnt35 800 9652(Y)m 50(ou cer)k -14(tainly don't w)k 5(ant to retur)k -9(n to)k +800 9172(his of\207ce and repor)m -14(t:)k 800 8692(@IndentedDispla)m 10(y @I {)k 800 8212(`I can't \207nd an ef\207cient algor)m -5(ithm, I)k +800 7732(guess I'm just too dumb)m 14(.)k 36(')k 800 7252(})m 800 6772(T)m 43(o a)k 7(v)k 9(oid ser)k -5(ious damage to y)k 7(our)k +800 6292(position in the compan)m 5(y)k 36(, it w)k 3(ould)k 800 5812(be better if ...)m + +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 7 7 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Italic +/pgsave save def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +400 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 12588 0 12588 400 480 100 1417 -14005 LoutGr2 +1 LoutMargSet +grestore +160 fnt82 0 12479(lout)m 8994(7)s gsave +0 668 translate +400 fnt82 8640 10080 1440 8457 400 480 100 LoutGraphic +gsave +LoutBox stroke +grestore +1440 8367(Y)m 44(ou)k +2173(certainly)s 3657(don')s 7(t)k 4591(w)s 4(ant)k +5460(to)s 5856(return)s 6901(to)s 1440 7887(his)m 1990(of\207ce)s +2991(and)s 3665(report:)s 400 fnt83 2240 7048(`I)m 2626(can')s 12(t)k +3542(\207nd)s 4252(an)s 4742(ef\207cient)s 2240 6568(algorithm,)m 3970(I)s +4223(guess)s 5201(I'm)s 5848(just)s 6532(too)s 2240 6088(dumb)m 16(.)k 56(')k +400 fnt82 1440 5330(T)m 32(o)k 1940(a)s 8(v)k 8(oid)k +2909(serious)s 4124(damage)s 5458(to)s 5857(your)s 1440 4850(position)m +2822(in)s 3227(the)s 3807(compan)s 6(y)k 26(,)k +5418(it)s 5740(w)s 4(ould)k 6831(be)s 1440 4370(better)m +2449(if)s 2813(\202)s +grestore + +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 8 8 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +400 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 12588 0 12588 400 480 100 1417 -14005 LoutGr2 +0 LoutMargSet +grestore +160 fnt82 0 12479(lout)m 8994(8)s 400 fnt84 2299 11376(P)m 4(aragraph)k +4229(br)s 7(eaking)k 5847(styles)s 360 fnt35 800 9652(Y)m 50(ou cer)k -14(tainly don't w)k 5(ant to retur)k -9(n to)k +800 9172(his of\207ce and repor)m -14(t:)k 800 8692(@ID { r)m 3(agged noh)k 10(yphen } @Break @I {)k +800 8212(`I can't \207nd an ef\207cient algor)m -5(ithm, I)k 800 7732(guess I'm just too dumb)m 14(.)k 36(')k +800 7252(})m 800 6772(T)m 43(o a)k 7(v)k 9(oid ser)k -5(ious damage to y)k 7(our)k +800 6292(position in the compan)m 5(y)k 36(, it w)k 3(ould)k 800 5812(be better if ...)m + +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 9 9 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Italic +/pgsave save def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +400 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 12588 0 12588 400 480 100 1417 -14005 LoutGr2 +1 LoutMargSet +grestore +160 fnt82 0 12479(lout)m 8992(9)s gsave +0 666 translate +400 fnt82 8640 10080 1440 8457 400 480 100 LoutGraphic +gsave +LoutBox stroke +grestore +1440 8367(Y)m 44(ou)k +2173(certainly)s 3657(don')s 7(t)k 4591(w)s 4(ant)k +5460(to)s 5856(return)s 6901(to)s 1440 7887(his)m 1990(of\207ce)s +2991(and)s 3665(report:)s 400 fnt83 2240 7048(`I)m 2626(can')s 12(t)k +3542(\207nd)s 4252(an)s 4742(ef\207cient)s 2240 6568(algorithm,)m 3970(I)s +4223(guess)s 5201(I'm)s 5848(just)s 6532(too)s 2240 6088(dumb)m 16(.)k 56(')k +400 fnt82 1440 5330(T)m 32(o)k 1940(a)s 8(v)k 8(oid)k +2909(serious)s 4124(damage)s 5458(to)s 5857(your)s 1440 4850(position)m +2822(in)s 3227(the)s 3807(compan)s 6(y)k 26(,)k +5418(it)s 5740(w)s 4(ould)k 6831(be)s 1440 4370(better)m +2449(if)s 2813(\202)s +grestore + +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 10 10 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +400 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 12588 0 12588 400 480 100 1417 -14005 LoutGr2 +0 LoutMargSet +grestore +160 fnt82 0 12479(lout)m 8909(10)s 400 fnt84 4128 11376(Lists)m +360 fnt35 800 9722(@Heading { Oper)m 3(ating Instr)k -5(uctions })k 800 9242(@NumberedList)m +800 8762(@ListItem { Press small g)m 3(reen le)k 10(v)k 9(er)k 18(.)k 21( })k +800 8282(@ListItem { )m 14(W)k 14(ait appro)k 10(ximately 10 seconds)k 800 7802(until red light \210ashes)m 5(.)k 21( })k +800 7322(@ListItem { If smok)m 7(e emerges from rear of unit,)k 800 6842(call Ser)m -10(vice Depar)k -14(tment.)k 21( })k +800 6362(@EndList)m +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 11 11 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +/pgsave save def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +400 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 12588 0 12588 400 480 100 1417 -14005 LoutGr2 +1 LoutMargSet +grestore +160 fnt82 0 12479(lout)m 8922(11)s gsave +0 668 translate +400 fnt82 8640 10080 1440 8456 400 480 100 LoutGraphic +gsave +LoutBox stroke +grestore +400 fnt84 1440 8364(Operating)m +3287(Instructions)s 400 fnt82 1440 7529(1.)m 2240(Press)s 3166(small)s +4123(green)s 5104(le)s 10(v)k 6(er)k 22(.)k +1440 6689(2.)m 2240(W)s 32(ait)k 3077(approximately)s 5468(10)s +5952(seconds)s 2240 6209(until)m 3065(red)s 3672(light)s 4505(\210ashes.)s +1440 5369(3.)m 2240(If)s 2626(smok)s 4(e)k 3757(emer)s 7(ges)k +5164(from)s 6040(rear)s 6760(of)s 2240 4889(unit,)m 3040(call)s +3708(Service)s 4997(Department.)s +grestore + +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 12 12 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +400 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 12588 0 12588 400 480 100 1417 -14005 LoutGr2 +0 LoutMargSet +grestore +160 fnt82 0 12479(lout)m 8910(12)s 400 fnt84 3062 11377(T)m 36(echnical)k +4780(r)s 7(eports)k 360 fnt35 800 9646(@SysInclude { repor)m -14(t })k +800 9166(@Repor)m -14(t)k 800 8686( @Title { ...)m 21( })k 800 8206( @A)m 10(uthor { ...)k 21( })k +800 7726( @Institution { ...)m 21( })k 800 7246( @DateLine { ...)m 21( })k 800 6766(//)m +800 6286(@Abstr)m 3(act { ...)k 21( })k 800 5806(@Section { ...)m 21( })k +800 5326(@Section { ...)m 21( })k 800 4846(@Section { ...)m 21( })k 800 4366(@Appendix { ...)m 21( })k +800 3886(@Appendix { ...)m 21( })k +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 13 13 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +400 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 12588 0 12588 400 480 100 1417 -14005 LoutGr2 +1 LoutMargSet +grestore +160 fnt82 0 12479(lout)m 8917(13)s 400 fnt84 3840 11376(Sections)m +360 fnt35 800 9720(@Section)m 800 9240( @T)m 43(ag { dfs })k 800 8760( @Title { Depth-\207rst search })m +800 8280(@Begin)m 800 7800(@PP)m 800 7320(W)m 10(e tur)k -9(n no)k 5(w to our \207rst algor)k -5(ithm)k +800 6840(on gener)m 3(al g)k 3(r)k 3(aphs ...)k 800 6360(@End @Section)m + +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 14 14 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +/pgsave save def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +400 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 12588 0 12588 400 480 100 1417 -14005 LoutGr2 +0 LoutMargSet +grestore +160 fnt82 0 12479(lout)m 8910(14)s gsave +0 668 translate +400 fnt82 8640 10080 1440 8456 400 480 100 LoutGraphic +gsave +LoutBox stroke +grestore +400 fnt84 1440 8364(10.6.)m +2424(Depth-\207rst)s 4386(sear)s 7(ch)k 400 fnt82 2240 7742(W)m 32(e)k +2854(turn)s 3592(no)s 10(w)k 4359(to)s 4758(our)s +5391(\207rst)s 1440 7262(algorithm)m 3093(on)s 3587(general)s 4854(graphs)s +6003(\202)s +grestore + +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 15 15 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +400 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 12588 0 12588 400 480 100 1417 -14005 LoutGr2 +1 LoutMargSet +grestore +160 fnt82 0 12478(lout)m 8915(15)s 400 fnt84 3142 11375(Cr)m 7(oss)k +4199(r)s 7(efer)k 7(ences)k 360 fnt35 800 9722(F)m 10(or fur)k -14(ther inf)k 10(or)k -9(mation, consult)k +800 9242(Section @NumberOf dfs on page)m 800 8762(@P)m 14(ageOf { dfs }.)k +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 16 16 +%%BeginPageSetup +%%PageResources: font Times-Roman +/pgsave save def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +400 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 12588 0 12588 400 480 100 1417 -14005 LoutGr2 +0 LoutMargSet +grestore +160 fnt82 0 12479(lout)m 8911(16)s gsave +0 667 translate +400 fnt82 8640 10080 1440 8457 400 480 100 LoutGraphic +gsave +LoutBox stroke +grestore +1440 8367(F)m 6(or)k +2089(further)s 3276(information,)s 5341(consult)s 1440 7887(Section)m 2732(10.6)s +3520(on)s 4014(page)s 4860(245.)s +grestore + +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 17 17 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +400 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 12588 0 12588 400 480 100 1417 -14005 LoutGr2 +1 LoutMargSet +grestore +160 fnt82 0 12479(lout)m 8914(17)s 400 fnt84 3612 11377(Refer)m 7(ences)k +360 fnt35 800 9723(@Database @Ref)m 10(erence { m)k 5(yrefs })k 800 9243(...)m +800 8763(F)m 10(or the details)k 5(, consult the User')k 18(s)k 800 8283(Guide @Cite { $kingston1995lout.user }.)m + +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 18 18 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +%%+ font Times-Italic +/pgsave save def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +400 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 12588 0 12588 400 480 100 1417 -14005 LoutGr2 +0 LoutMargSet +grestore +160 fnt82 0 12479(lout)m 8914(18)s gsave +0 667 translate +400 fnt82 8640 10080 1440 8457 400 480 100 LoutGraphic +gsave +LoutBox stroke +grestore +1440 8367(F)m 6(or)k +2089(the)s 2669(details,)s 3889(consult)s 5143(the)s 5723(User')s 22(s)k +1440 7887(Guide)m 2508([1].)s 1440 7263(\202)m 400 fnt84 1440 6637(Refer)m 7(ences)k +400 fnt82 1440 5879(1.)m 2240(Jef)s 10(fre)k 6(y)k +3422(H.)s 3883(Kingston.)s 400 fnt83 5621 5881(A)m 5947(User')s 16(s)k +2240 5401(Guide)m 3304(to)s 3703(the)s 4279(Lout)s 5119(Document)s +2240 4921(F)m 42(ormatting)k 4107(System)s 5308(\(V)s 44(er)k 4(sion)k +2240 4441(3\))m 400 fnt82 2556 4439(.)m 2829(Basser)s 3992(Department)s +5977(of)s 2240 3959(Computer)m 3938(Science)s 5171(,)s 5349(Uni)s 10(v)k 6(ersity)k +2240 3479(of)m 2693(Sydne)s 6(y)k 3876(,)s 4054(1995)s +4830(.)s 1440 2642(2.)m 2240(\202)s +grestore + +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 19 19 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +400 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 12588 0 12588 400 480 100 1417 -14005 LoutGr2 +1 LoutMargSet +grestore +160 fnt82 0 12479(lout)m 8912(19)s 400 fnt84 2601 11375(Database)m +4269(\207le)s 4872(myr)s 7(efs.ld)k 360 fnt35 800 9644({ @Ref)m 10(erence)k +800 9164( @T)m 43(ag { kingston1995lout.user })k 800 8684( @T)m 43(ype { Book })k 800 8204( @A)m 10(uthor { Jeffre)k 7(y H.)k 21( Kingston })k +800 7724( @Title { A User')m 18(s Guide to the Lout)k 800 7244(Document F)m 10(or)k -9(matting System \(V)k 28(ersion 3\) })k +800 6764( @Institution { Basser Depar)m -14(tment of)k 800 6284(Computer Science })m 800 5804( @Address { Univ)m 9(ersity of Sydne)k 7(y)k +800 5324(2006, A)m 10(ustr)k 3(alia })k 800 4844( @Y)m 50(ear { 1994 })k +800 4364(})m +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 20 20 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +/pgsave save def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +400 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 12588 0 12588 400 480 100 1417 -14005 LoutGr2 +0 LoutMargSet +grestore +160 fnt82 0 12479(lout)m 8909(20)s 400 fnt84 2965 11375(Books)m +4097(\(and)s 4966(theses\))s 400 fnt82 0 9650(\213)m 800(T)s 14(itle)k +1632(page,)s 2564(pref)s 4(ace,)k 3912(introduction)s 0 8810(\213)m +800(Automatic)s 2574(table)s 3442(of)s 3895(contents)s 0 8053(\213)m +800(Pref)s 4(atory)k 2372(pages)s 3365(numbered)s 5060(in)s +5465(Roman)s 6713(numerals)s 0 7213(\213)m 800(Chapters,)s 2397(sections,)s +3861(subsections,)s 5880(appendices)s 0 6374(\213)m 800(References)s 2656(at)s +3044(end)s 3718(of)s 4171(chapters)s 5585(or)s 6018(book)s +0 5535(\213)m 800(Running)s 2265(page)s 3111(headers)s 0 4695(\213)m +800(Odd-e)s 10(v)k 6(en)k 2453(page)s 3299(formats)s +0 3855(\213)m 800(Sorted)s 1940(inde)s 6(x)k +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 21 21 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +400 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 12588 0 12588 400 480 100 1417 -14005 LoutGr2 +1 LoutMargSet +grestore +160 fnt82 0 12479(lout)m 8922(21)s 400 fnt84 2631 11377(Making)m +4057(a)s 4353(sorted)s 5509(index)s 360 fnt35 800 9646(@PP)m +800 9166(There are se)m 10(v)k 9(er)k 3(al possib)k 7(le w)k 5(a)k 10(ys to implement the)k +800 8686(@I P)m 14(ar)k -14(tition procedure)k 5(,)k 800 8206(par)m -14(tition @Inde)k 10(x { @I P)k 14(ar)k -14(tition \(in {@I Quic)k 7(ksor)k -14(t}\) })k +800 7726(b)m 7(ut the f)k 10(ollo)k 5(wing seems to be the best.)k 21( Star)k -14(ting ...)k + +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 22 22 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +%%+ font Times-Italic +/pgsave save def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +400 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 12588 0 12588 400 480 100 1417 -14005 LoutGr2 +0 LoutMargSet +grestore +160 fnt82 0 12479(lout)m 8910(22)s gsave +0 668 translate +400 fnt82 8640 10080 1440 8462 400 480 100 LoutGraphic +gsave +LoutBox stroke +grestore +400 fnt84 1440 8370(Index)m +400 fnt82 1440 7795(\202)m 1440 7315(partial)m 2552(order)s 16(,)k +3557(227)s 400 fnt83 1440 6837(P)m 32(artition)k 400 fnt82 +2941 6835(\(in)m 400 fnt83 3479 6837(Quic)m 8(ksort)k 400 fnt82 +5052 6835(\),)m 5363(189)s 1440 6355(postorder)m 3049(tra)s 8(v)k 6(ersal)k +1840 5875(of)m 2293(binary)s 3404(tree,)s 4180(19)s 1840 5395(topological)m +3730(ordering,)s 5262(229)s 1440 4915(\202)m +grestore + +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 23 23 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +400 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 12588 0 12588 400 480 100 1417 -14005 LoutGr2 +1 LoutMargSet +grestore +160 fnt82 0 12479(lout)m 8917(23)s 400 fnt84 2785 11376(Equation)m +4455(f)s 10(ormatting)k 360 fnt35 800 9645(@SysInclude { eq })m 800 9165(...)m +800 8685(Since @Eq { )m 18(T\(n-i\) = )k 18(T\(0\) = 0 } w)k 3(e ha)k 7(v)k 9(e)k +800 8205(@IndentedDispla)m 10(y @Eq {)k 800 7725(T\(n\) = big sum from i=0 to n-1 2 sup i = 2 sup n - 1)m 800 7245(})m 800 6765(f)m 10(or the n)k 3(umber of disk mo)k 5(v)k 9(es made b)k 7(y the )k 18(T)k 43(o)k 5(w)k 3(ers)k +800 6285(of Hanoi algor)m -5(ithm, giv)k 9(en @Eq { n } disks)k 5(.)k +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 24 24 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Italic +%%+ font Symbol +/pgsave save def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +%%IncludeResource: font Symbol +/fnt78 { /Symbol LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +400 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 12588 0 12588 400 480 100 1417 -14005 LoutGr2 +0 LoutMargSet +grestore +160 fnt82 0 12479(lout)m 8910(24)s gsave +0 668 translate +400 fnt82 8640 10080 1440 8457 400 480 100 LoutGraphic +gsave +LoutBox stroke +grestore +1440 8367(Since)m 400 fnt83 +2419 8369(T)m 400 fnt78 2691 8357(\()m 400 fnt83 2831 8369(n)m +400 fnt78 3141 8357(-)m 400 fnt83 3475 8369(i)m 400 fnt78 +3601 8357(\))m 3852(=)s 400 fnt83 4207 8369(T)m 400 fnt78 +4479 8357(\()m 4619(0)s 4828(\))s 5079(=)s 5434(0)s +400 fnt82 5723 8367(we)m 6280(ha)s 8(v)k 6(e)k +400 fnt83 2240 7204(T)m 400 fnt78 2512 7192(\()m 400 fnt83 +2652 7204(n)m 400 fnt78 2862 7192(\))m 3113(=)s 280 fnt83 +3468 7622(n)m 280 fnt78 3640 7613(-)m 3829(1)s 520 fnt78 +3522 7162(\345)m 280 fnt83 3483 6864(i)m 280 fnt78 3599 6855(=)m +3791(0)s 280 fnt83 4149 7367(i)m 400 fnt78 3959 7192(2)m +4363(=)s 280 fnt83 4908 7400(n)m 400 fnt78 4718 7192(2)m +5161(-)s 5495(1)s 400 fnt82 1440 6098(for)m 2006(the)s +2586(number)s 3907(of)s 4360(disk)s 5128(mo)s 6(v)k 6(es)k +6243(made)s 1440 5618(by)m 1930(the)s 2510(T)s 32(o)k 10(wers)k +3749(of)s 4202(Hanoi)s 5268(algorithm,)s 1440 5138(gi)m 10(v)k 6(en)k +400 fnt83 2406 5140(n)m 400 fnt82 2696 5138(disks.)m +grestore + +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 25 25 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +400 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 12588 0 12588 400 480 100 1417 -14005 LoutGr2 +1 LoutMargSet +grestore +160 fnt82 0 12478(lout)m 8915(25)s 400 fnt84 3035 11375(Another)m +4550(equation)s 360 fnt35 800 9644(@CenteredDispla)m 10(y @Eq {)k 800 9164(big int supp 1 on 0 )m 21(`)k +800 8684(dx o)m 5(v)k 9(er sqr)k -14(t { 1 - x sup 2 })k 800 8204(= pi o)m 5(v)k 9(er 2)k +800 7724(})m +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 26 26 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Symbol +%%+ font Times-Italic +/pgsave save def +%%IncludeResource: font Symbol +/fnt78 { /Symbol LoutFont } def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +400 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 12588 0 12588 400 480 100 1417 -14005 LoutGr2 +0 LoutMargSet +grestore +160 fnt82 0 12479(lout)m 8911(26)s gsave +0 667 translate +400 fnt82 8640 10080 1440 8640 400 480 100 LoutGraphic +gsave +LoutBox stroke +grestore +676 fnt78 3159 7423(\362)m +280 fnt78 3355 7972(1)m 3355 7281(0)m 400 fnt83 3991 7782(dx)m +1187 0 0 0 400 480 20 3587 7697 LoutGr2 +0 0 moveto xsize 0 lineto 0.05 ft setlinewidth stroke +grestore + +grestore +gsave +0 7292 translate +1.0000 1.2231 scale +400 fnt78 3587 -100(\326)m +grestore +981 0 0 0 400 480 20 3793 7617 LoutGr2 +0 0 moveto xsize 0 lineto 0.03 ft setlinewidth 2 setlinecap stroke +grestore + +grestore +400 fnt78 3853 7251(1)m 4129(-)s +280 fnt78 4641 7365(2)m 400 fnt83 4463 7263(x)m 400 fnt78 +4914 7597(=)m 5269 7784(p)m gsave +5269 7697 translate +400 fnt83 212 0 0 0 400 480 20 LoutGraphic +gsave +0 0 moveto xsize 0 lineto 0.05 ft setlinewidth stroke +grestore + +grestore +5280 7317(2)m +grestore + +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 27 27 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +400 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 12588 0 12588 400 480 100 1417 -14005 LoutGr2 +1 LoutMargSet +grestore +160 fnt82 0 12479(lout)m 8914(27)s 400 fnt84 3991 11383(T)m 36(ables)k +360 fnt35 800 9729(@SysInclude { tab })m 800 9249(...)m 800 8769(@T)m 43(ab)k +800 8289( @Fmta { @Col @I A ! @Col B })m 800 7809({)m 800 7329(@Ro)m 5(w)k 5(a)k +800 6849( A { F)m 10(or)k -14(tr)k 3(an })k 800 6369( B { )m 18(The \207rst ...)k 21( language })k +800 5889(@Ro)m 5(w)k 5(a)k 800 5409( A { Algol-60 })m 800 4929( B { Said to be ...)m 21( successors })k +800 4449(@Ro)m 5(w)k 5(a)k 800 3969( A { P)m 14(ascal })k +800 3489( B { )m 18(The f)k 10(amous ...)k 21( successors })k 800 3009(})m + +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 28 28 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Italic +/pgsave save def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +400 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 12588 0 12588 400 480 100 1417 -14005 LoutGr2 +0 LoutMargSet +grestore +160 fnt82 0 12479(lout)m 8914(28)s gsave +0 667 translate +400 fnt82 8640 10080 1440 8640 400 480 100 LoutGraphic +gsave +LoutBox stroke +grestore +400 fnt83 1440 8177(F)m 42(ortr)k 6(an)k +400 fnt82 3178 8175(The)m 3891(\207rst)s 4612(high-le)s 10(v)k 6(el)k +3178 7695(programming)m 5442(language)s 400 fnt83 1440 6950(Algol-60)m 400 fnt82 +3178 6948(Said)m 3985(to)s 4384(be)s 4853(a)s 5130(better)s +3178 6468(language)m 4712(than)s 5494(most)s 6371(of)s 6824(its)s +3178 5988(successors)m 400 fnt83 1440 5327(P)m 32(ascal)k 400 fnt82 +3178 5325(The)m 3891(most)s 4768(f)s 4(amous)k 6024(of)s +3178 4845(Algol-60')m 22(s)k 4971(successors)s +grestore + +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 29 29 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +400 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 12588 0 12588 400 480 100 1417 -14005 LoutGr2 +1 LoutMargSet +grestore +160 fnt82 0 12479(lout)m 8912(29)s 400 fnt84 3357 11375(Another)m +4872(table)s 360 fnt35 800 10201(@T)m 43(ab)k 800 9721( hmargin { 0.4c })m +800 9241( vmargin { 0.3v })m 800 8761( side { single })m 800 8281( @Fmta { @Col @B @CC X @Ov)m 9(er A,B)k 7(,C })k +800 7801( @Fmtb { @Col @I A ! @Col B !! @Col C })m 800 7321({)m 800 6361(@Ro)m 5(w)k 5(a abo)k 5(v)k 9(e { single })k +800 5881( X { )m 18(V)k 25(alue of mathematical ...)k 21( dollars\) })k 800 4921(@Ro)m 5(wb abo)k 5(v)k 9(e { doub)k 7(le })k +800 4441( A { Quadr)m 3(atic f)k 10(or)k -9(m)k 3(ula })k +800 3961( B { @Eq { x ^= { ...)m 21( } o)k 5(v)k 9(er 2a } })k 800 3481( C { 3^.5 })m +800 2521(@Ro)m 5(wb belo)k 5(w { single })k 800 2041( A { Binomial theorem })m 800 1561( B { @Eq { \( a + b \) sup n ^= ...)m 21( b sup n-k } })k +800 1081( C { 12^ })m 800 601(})m +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 30 30 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +%%+ font Times-Italic +%%+ font Symbol +/pgsave save def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +%%IncludeResource: font Symbol +/fnt78 { /Symbol LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +400 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 12588 0 12588 400 480 100 1417 -14005 LoutGr2 +0 LoutMargSet +grestore +160 fnt82 0 12479(lout)m 8909(30)s gsave +0 667 translate +400 fnt82 8640 10080 1440 8640 400 480 100 LoutGraphic +gsave +LoutBox stroke +grestore +gsave +1440 8640 translate +0.5938 0.5938 scale +0 144 0 144 400 480 100 0 -144 LoutGr2 +0.5 pt ltabvs +grestore + +grestore +226 0 0 0 400 480 100 0 0 LoutGr2 +0.5 pt ltabhsp +grestore + +grestore +0 344 0 159 400 480 100 0 -488 LoutGr2 +0.5 pt ltabvs +grestore + +grestore +0 144 0 0 400 480 100 0 -632 LoutGr2 +0.5 pt ltabvs +grestore + +grestore +8889 0 0 0 400 480 100 226 0 LoutGr2 +0.5 pt ltabhs +grestore + +grestore +400 fnt84 226 -421(V)m 36(alue)k +1281(of)s 1736(mathematical)s 4157(f)s 10(ormulae)k 5793(\(millions)s +7369(of)s 7824(dollars\))s gsave +9115 0 translate +400 fnt82 226 0 0 0 400 480 100 LoutGraphic +gsave +0.5 pt ltabhsp +grestore + +grestore +gsave +9341 -144 translate +400 fnt82 360 144 0 144 400 480 100 LoutGraphic +gsave +0.5 pt ltabvs +grestore + +grestore +gsave +9341 -488 translate +400 fnt82 360 344 0 159 400 480 100 LoutGraphic +gsave +0.5 pt ltabvs +grestore + +grestore +gsave +9341 -632 translate +400 fnt82 360 144 0 0 400 480 100 LoutGraphic +gsave +0.5 pt ltabvs +grestore + +grestore +gsave +0 -776 translate +400 fnt82 0 144 0 144 400 480 100 LoutGraphic +gsave +0.5 pt ltabvs +grestore + +grestore +gsave +0 -632 translate +400 fnt82 226 0 0 0 400 480 100 LoutGraphic +gsave +0.5 pt ltabhd +grestore + +grestore +gsave +0 -1867 translate +400 fnt82 0 1091 0 480 400 480 100 LoutGraphic +gsave +0.5 pt ltabvs +grestore + +grestore +gsave +0 -2011 translate +400 fnt82 0 144 0 0 400 480 100 LoutGraphic +gsave +0.5 pt ltabvs +grestore + +grestore +gsave +226 -632 translate +400 fnt82 2985 0 0 0 400 480 100 LoutGraphic +gsave +0.5 pt ltabhd +grestore + +grestore +400 fnt83 226 -1475(Quadr)m 6(atic)k +1955(formula)s gsave +3211 -632 translate +400 fnt82 226 0 0 0 400 480 100 LoutGraphic +gsave +0.5 pt ltabhd +grestore + +grestore +gsave +3437 -632 translate +400 fnt82 226 0 0 0 400 480 100 LoutGraphic +gsave +0.5 pt ltabhd +grestore + +grestore +gsave +3663 -632 translate +400 fnt82 4255 0 1260 0 400 480 100 LoutGraphic +gsave +0.5 pt ltabhd +grestore + +grestore +4725(x)s 400 fnt78 5063 -1487(=)m 5418 -1207(-)m +400 fnt83 5652 -1195(b)m 400 fnt78 5962 -1207(\261)m gsave +0 -1146 translate +1.0000 1.3937 scale +6297 -100(\326)m + +grestore +gsave +6503 -776 translate +400 fnt83 1415 0 0 0 400 480 20 LoutGraphic +gsave +0 0 moveto xsize 0 lineto 0.03 ft setlinewidth 2 setlinecap stroke +grestore + +grestore +280 fnt78 6753 -1028(2)m 400 fnt83 6563 -1195(b)m 400 fnt78 +7006 -1207(-)m 7340(4)s 400 fnt83 7548 -1195(ac)m 2500 0 0 0 400 480 20 5418 -1387 LoutGr2 +0 0 moveto xsize 0 lineto 0.05 ft setlinewidth stroke +grestore + +grestore +400 fnt78 +6467 -1767(2)m 400 fnt83 6677 -1755(a)m gsave +7918 -632 translate +400 fnt82 226 0 0 0 400 480 100 LoutGraphic +gsave +0.5 pt ltabhd +grestore + +grestore +gsave +8144 -776 translate +400 fnt82 0 144 0 144 400 480 100 LoutGraphic +gsave +0.5 pt ltabvs +grestore + +grestore +gsave +8144 -632 translate +400 fnt82 226 0 0 0 400 480 100 LoutGraphic +gsave +0.5 pt ltabhd +grestore + +grestore +gsave +8144 -1867 translate +400 fnt82 0 1091 0 480 400 480 100 LoutGraphic +gsave +0.5 pt ltabvs +grestore + +grestore +gsave +8144 -2011 translate +400 fnt82 0 144 0 0 400 480 100 LoutGraphic +gsave +0.5 pt ltabvs +grestore + +grestore +gsave +8370 -632 translate +400 fnt82 745 0 390 0 400 480 100 LoutGraphic +gsave +0.5 pt ltabhd +grestore + +grestore +400 fnt82 8587 -1477(3)m +8760(.5)s 226 0 0 0 400 480 100 9115 -632 LoutGr2 +0.5 pt ltabhd +grestore + +grestore +360 144 0 144 400 480 100 9341 -776 LoutGr2 +0.5 pt ltabvs +grestore + +grestore +360 1091 0 480 400 480 100 9341 -1867 LoutGr2 +0.5 pt ltabvs +grestore + +grestore +360 144 0 0 400 480 100 9341 -2011 LoutGr2 +0.5 pt ltabvs +grestore + +grestore +0 144 0 144 400 480 100 0 -2155 LoutGr2 +0.5 pt ltabvs +grestore + +grestore +0 863 0 449 400 480 100 0 -3018 LoutGr2 +0.5 pt ltabvs +grestore + +grestore +0 144 0 0 400 480 100 0 -3162 LoutGr2 +0.5 pt ltabvs +grestore + +grestore +226 0 0 0 400 480 100 0 -3162 LoutGr2 +0.5 pt ltabhsp +grestore + +grestore +400 fnt83 226 -2657(Binomial)m 1791(theor)s 14(em)k +gsave +226 -3162 translate +400 fnt82 2985 0 0 0 400 480 100 LoutGraphic +gsave +0.5 pt ltabhs +grestore + +grestore +gsave +3211 -3162 translate +400 fnt82 226 0 0 0 400 480 100 LoutGraphic +gsave +0.5 pt ltabhs +grestore + +grestore +gsave +3437 -3162 translate +400 fnt82 226 0 0 0 400 480 100 LoutGraphic +gsave +0.5 pt ltabhs +grestore + +grestore +400 fnt78 3663 -2669(\()m 400 fnt83 3803 -2657(a)m 400 fnt78 +4114 -2669(+)m 400 fnt83 4449 -2657(b)m 280 fnt83 4770 -2463(n)m +400 fnt78 4659 -2669(\))m 5063(=)s 336 fnt78 5549 -2290(\245)m +520 fnt78 5484 -2699(\345)m 280 fnt83 5418 -3005(k)m 280 fnt78 +5588 -3014(=)m 5780(0)s gsave +0 -2560 translate +1.0000 2.3652 scale +400 fnt78 5932 -100(\()m +grestore +400 fnt83 +6112 -2417(n)m 6115 -2893(k)m gsave +0 -2560 translate +1.0000 2.3652 scale +400 fnt78 6362 -100(\))m +grestore +280 fnt83 +6684 -2501(k)m 400 fnt83 6493 -2657(a)m 280 fnt83 7022 -2488(n)m +280 fnt78 7194 -2497(-)m 280 fnt83 7383 -2488(k)m 400 fnt83 +6832 -2657(b)m gsave +3663 -3162 translate +400 fnt82 4255 0 1260 0 400 480 100 LoutGraphic +gsave +0.5 pt ltabhs +grestore + +grestore +gsave +7918 -3162 translate +400 fnt82 226 0 0 0 400 480 100 LoutGraphic +gsave +0.5 pt ltabhs +grestore + +grestore +gsave +8144 -2155 translate +400 fnt82 0 144 0 144 400 480 100 LoutGraphic +gsave +0.5 pt ltabvs +grestore + +grestore +gsave +8144 -3018 translate +400 fnt82 0 863 0 449 400 480 100 LoutGraphic +gsave +0.5 pt ltabvs +grestore + +grestore +gsave +8144 -3162 translate +400 fnt82 0 144 0 0 400 480 100 LoutGraphic +gsave +0.5 pt ltabvs +grestore + +grestore +gsave +8144 -3162 translate +400 fnt82 226 0 0 0 400 480 100 LoutGraphic +gsave +0.5 pt ltabhs +grestore + +grestore +400 fnt82 8370 -2659(12)m 745 0 390 0 400 480 100 8370 -3162 LoutGr2 +0.5 pt ltabhs +grestore + +grestore +226 0 0 0 400 480 100 9115 -3162 LoutGr2 +0.5 pt ltabhsp +grestore + +grestore +360 144 0 144 400 480 100 9341 -2155 LoutGr2 +0.5 pt ltabvs +grestore + +grestore +360 863 0 449 400 480 100 9341 -3018 LoutGr2 +0.5 pt ltabvs +grestore + +grestore +360 144 0 0 400 480 100 9341 -3162 LoutGr2 +0.5 pt ltabvs +grestore + +grestore + +grestore + +grestore + +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 31 31 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +400 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 12588 0 12588 400 480 100 1417 -14005 LoutGr2 +1 LoutMargSet +grestore +160 fnt82 0 12479(lout)m 8922(31)s 400 fnt84 3123 11382(P)m 4(ascal)k +4297(pr)s 7(ograms)k 360 fnt35 800 9651(@SysInclude { pas })m 800 9171(...)m +800 8691(@ID @P)m 14(as {)k 800 8211(procedure DoPr)m -5(iAbstr)k 3(act\(root:)k 18( Pr)k -5(iEntr)k -10(y\);)k +800 7731(begin)m 800 7251( if root^.leftchild <> nil then begin)m 800 6771( DoPr)m -5(iAbstr)k 3(act\(root^.leftchild\);)k +800 6291( wr)m -5(ite\(', '\);)k 800 5811( end;)m 800 5331( Pr)m -5(iK)k 14(e)k 7(yAbstr)k 3(act\(root^.k)k 7(e)k 7(y\);)k +800 4851( wr)m -5(ite\(':'\);)k 800 4371( Pr)m -5(iV)k 25(alueAbstr)k 3(act\(root^.v)k 9(alue\);)k +800 3891( if root^.r)m -5(ightchild <> nil then begin)k 800 3411( wr)m -5(ite\(', '\);)k 800 2931( DoPr)m -5(iAbstr)k 3(act\(root^.r)k -5(ightchild\);)k +800 2451( end;)m 800 1971(end;)m 800 1491(})m +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 32 32 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +%%+ font Times-Italic +%%+ font Symbol +/pgsave save def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +%%IncludeResource: font Symbol +/fnt78 { /Symbol LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +400 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 12588 0 12588 400 480 100 1417 -14005 LoutGr2 +0 LoutMargSet +grestore +160 fnt82 0 12479(lout)m 8910(32)s gsave +0 667 translate +400 fnt82 8640 10080 1440 8455 400 480 100 LoutGraphic +gsave +LoutBox stroke +grestore +400 fnt84 1440 8363(pr)m 7(ocedur)k 7(e)k +400 fnt83 3270 8367(DoPriAbstr)m 6(act)k 400 fnt82 5622 8365(\()m +400 fnt83 5744 8367(r)m 18(oot)k 400 fnt82 6399 8365(:)m +400 fnt83 6576 8367(PriEntry)m 400 fnt82 7966 8365(\);)m 400 fnt84 +1440 7883(begin)m 1840 7403(if)m 400 fnt83 2206 7407(r)m 18(oot)k +320 fnt78 2861 7415(\255)m 400 fnt82 3043 7405(.)m 400 fnt83 +3116 7407(leftc)m 6(hild)k 400 fnt78 4529 7395(\271)m 400 fnt84 +4845 7403(nil)m 5380(then)s 6228(begin)s 400 fnt83 2240 6927(DoPriAbstr)m 6(act)k +400 fnt82 4592 6925(\()m 400 fnt83 4714 6927(r)m 18(oot)k +320 fnt78 5369 6935(\255)m 400 fnt82 5551 6925(.)m 400 fnt83 +5624 6927(leftc)m 6(hild)k 400 fnt82 6937 6925(\);)m 400 fnt83 +2240 6447(write)m 400 fnt82 3048 6445(\(',)m 3492('\);)s 400 fnt84 +1840 5963(end)m 400 fnt82 2453 5965(;)m 400 fnt83 1840 5487(PriK)m 14(e)k 12(yAbstr)k 6(act)k +400 fnt82 4298 5485(\()m 400 fnt83 4420 5487(r)m 18(oot)k +320 fnt78 5075 5495(\255)m 400 fnt82 5257 5485(.)m 400 fnt83 +5330 5487(k)m 4(e)k 12(y)k 400 fnt82 5838 5485(\);)m +400 fnt83 1840 5007(write)m 400 fnt82 2648 5005(\(':'\);)m 400 fnt83 +1840 4527(PriV)m 44(alueAbstr)k 6(act)k 400 fnt82 4592 4525(\()m +400 fnt83 4714 4527(r)m 18(oot)k 320 fnt78 5369 4535(\255)m +400 fnt82 5551 4525(.)m 400 fnt83 5624 4527(value)m 400 fnt82 +6477 4525(\);)m 400 fnt84 1840 4043(if)m 400 fnt83 2206 4047(r)m 18(oot)k +320 fnt78 2861 4055(\255)m 400 fnt82 3043 4045(.)m 400 fnt83 +3116 4047(rightc)m 6(hild)k 400 fnt78 4796 4035(\271)m 400 fnt84 +5112 4043(nil)m 5647(then)s 6495(begin)s 400 fnt83 2240 3567(write)m +400 fnt82 3048 3565(\(',)m 3492('\);)s 400 fnt83 2240 3087(DoPriAbstr)m 6(act)k +400 fnt82 4592 3085(\()m 400 fnt83 4714 3087(r)m 18(oot)k +320 fnt78 5369 3095(\255)m 400 fnt82 5551 3085(.)m 400 fnt83 +5624 3087(rightc)m 6(hild)k 400 fnt82 7204 3085(\);)m 400 fnt84 +1840 2603(end)m 400 fnt82 2453 2605(;)m 400 fnt84 1440 2123(end)m +400 fnt82 2053 2125(;)m +grestore + +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 33 33 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +400 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 12588 0 12588 400 480 100 1417 -14005 LoutGr2 +1 LoutMargSet +grestore +160 fnt82 0 12479(lout)m 8917(33)s 400 fnt84 3304 11376(Basic)m +4308(graphics)s 360 fnt35 800 9645(45d @Rotate 1.5 @Scale @Bo)m 10(x {)k 800 9165( Hello)m 14(, w)k 3(or)k -5(ld)k +800 8685(})m +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 34 34 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Helvetica +/pgsave save def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +400 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 12588 0 12588 400 480 100 1417 -14005 LoutGr2 +0 LoutMargSet +grestore +160 fnt82 0 12479(lout)m 8910(34)s gsave +0 667 translate +400 fnt82 8640 10080 1440 8640 400 480 100 LoutGraphic +gsave +LoutBox stroke +grestore +gsave +2528 5722 translate +45.0000 rotate +gsave +0 0 translate +1.5000 1.5000 scale +gsave +0 -254 translate +360 fnt35 2027 526 108 254 360 480 100 LoutGraphic +gsave +LoutBox stroke +grestore +108 161(Hello)m 14(,)k +1080(w)s 3(or)k -5(ld)k +grestore + +grestore + +grestore + +grestore + +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 35 35 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +400 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 12588 0 12588 400 480 100 1417 -14005 LoutGr2 +1 LoutMargSet +grestore +160 fnt82 0 12478(lout)m 8915(35)s 400 fnt84 2908 11375(Adv)m 4(anced)k +4704(graphics)s 360 fnt35 800 9644(@SysInclude { \207g })m 800 9164(...)m 800 8684(@Fig {)m +800 8204(@Bo)m 10(x)k 800 7724( margin { 0c })m 800 7244( paint { b)m 7(lac)k 7(k })k +800 6764(@Ellipse)m 800 6284( linestyle { noline })m 800 5804( paint { white })m 800 5324({ Hello)m 14(, w)k 3(or)k -5(ld })k +800 4844(})m +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 36 36 +%%BeginPageSetup +%%PageResources: font Times-Roman +/pgsave save def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +400 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 12588 0 12588 400 480 100 1417 -14005 LoutGr2 +0 LoutMargSet +grestore +160 fnt82 0 12479(lout)m 8911(36)s gsave +0 667 translate +400 fnt82 8640 10080 1440 8231 400 480 100 LoutGraphic +gsave +LoutBox stroke +grestore +5760 781 226 372 400 480 100 1440 7859 LoutGr2 +grestore save gsave 200 dict begin lfigdict begin +grestore +2442 781 226 372 400 480 100 0 0 LoutGr2 +/lfigblack [ lfigbox ] gsave lfigpaintpath grestore +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigbox ] lfigdopath +pop pop +grestore +2442 781 226 372 400 480 100 0 0 LoutGr2 +/lfigwhite [ lfigellipse ] gsave lfigpaintpath grestore +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfignoline [ lfigellipse ] lfigdopath +pop pop +grestore +226 282(Hello,)m 1291(w)s 4(orld)k + +grestore + +grestore +end end restore +grestore + +grestore + +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 37 37 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +400 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 12588 0 12588 400 480 100 1417 -14005 LoutGr2 +1 LoutMargSet +grestore +160 fnt82 0 12479(lout)m 8914(37)s 400 fnt84 3302 11376(P)m 8(oint)k +4304(labelling)s 360 fnt35 800 9645(@Fig {)m 800 9165(A::)m 800 8685({)m +800 8205( 1::)m 18( @Ellipse { 3c @Wide 2c @High })k 800 7725( //3c)m 800 7245( 2::)m 18( @Bo)k 10(x { 3c @Wide 2c @High })k +800 6765(})m 800 6285(@Sho)m 5(wLabels)k 800 5805(})m +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 38 38 +%%BeginPageSetup +%%PageResources: font Times-Roman +/pgsave save def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +400 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 12588 0 12588 400 480 100 1417 -14005 LoutGr2 +0 LoutMargSet +grestore +160 fnt82 0 12479(lout)m 8914(38)s gsave +0 667 translate +400 fnt82 8640 10080 1440 8414 400 480 100 LoutGraphic +gsave +LoutBox stroke +grestore +5760 4873 0 4647 400 480 100 1440 3767 LoutGr2 +grestore save gsave 200 dict begin lfigdict begin +grestore +2153 4873 0 4647 400 480 100 0 0 LoutGr2 +currentdict end 200 dict begin begin +grestore +2153 1586 226 1360 400 480 100 0 3287 LoutGr2 +currentdict end 200 dict begin begin +grestore +2153 1586 226 1360 400 480 100 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigellipse ] lfigdopath +pop pop +grestore + +grestore +(1) lfigpromotelabels +grestore +2153 1586 226 1360 400 480 100 0 0 LoutGr2 +currentdict end 200 dict begin begin +grestore +2153 1586 226 1360 400 480 100 0 0 LoutGr2 + +0.5 pt setlinewidth lfiground setlinecap +0.15 cm /lfigsolid [ lfigbox ] lfigdopath +pop pop +grestore + +grestore +(2) lfigpromotelabels +grestore +(A) lfigpromotelabels +grestore +3507 4873 0 4647 400 480 100 2253 0 LoutGr2 +lfigshowlabels +grestore + +grestore +end end restore +grestore + +grestore + +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 39 39 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +400 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 12588 0 12588 400 480 100 1417 -14005 LoutGr2 +1 LoutMargSet +grestore +160 fnt82 0 12479(lout)m 8912(39)s 400 fnt84 3895 11375(Graphs)m +340 fnt35 800 9035(@Gr)m 3(aph)k 800 8555( abo)m 5(v)k 8(ecaption { Ne)k 6(w South )k 13(W)k 13(ales road deaths)k +800 8075(\(per 100 million v)m 8(ehicle km\) })k 800 7595({)m 800 7115( @Data points { plus } pairs { dashed })m 800 6635( { 1963 5.6 1971 4.3 1976 3.7 1979 3.4)m +800 6155( 1982 2.9 1985 2.3 1988 2.0 })m 800 5675(})m +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 40 40 +%%BeginPageSetup +%%PageResources: font Times-Roman +/pgsave save def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +400 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 12588 0 12588 400 480 100 1417 -14005 LoutGr2 +0 LoutMargSet +grestore +160 fnt82 0 12479(lout)m 8909(40)s gsave +0 667 translate +400 fnt82 8640 10080 1440 8640 400 480 100 LoutGraphic +gsave +LoutBox stroke +grestore +1631 8367(Ne)m 10(w)k +2463(South)s 3491(W)s 32(ales)k 4540(road)s 5347(deaths)s +1717 7887(\(per)m 2460(100)s 3151(million)s 4400(v)s 6(ehicle)k +5639(km\))s 5103 3402 0 3402 400 480 100 1440 4116 LoutGr2 +grestore + +gsave xsize ysize lgraphdict begin /ysize exch def /xsize exch def +/alldata [ [ [ 1963 5.6 1971 4.3 1976 3.7 1979 3.4 1982 2.9 1985 2.3 1988 2.0 ] xandy +{ plus } +{ ilinesetup dashed } +{ /dashlength 0.2 ft def + /linewidth currentlinewidth def + /symbolsize 0.15 ft def } +{ false } +] ] def +0 [ false ] 0 alldata false false 0 +0.5 cm false false 0.5 ft xset +0 [ false ] 1 alldata false false 0 +0.5 cm false false 0.5 ft yset +norset +rundata framestyle +grestore +end + +grestore + +grestore + +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 41 41 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Helvetica +/pgsave save def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +400 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 12588 0 12588 400 480 100 1417 -14005 LoutGr2 +1 LoutMargSet +grestore +160 fnt82 0 12479(lout)m 8922(41)s 360 fnt35 800 10484(-2p @F)m 10(ont @Gr)k 3(aph)k +800 10004( style { ax)m 10(es })k 800 9524( xor)m -5(igin { 0 } y)k 7(or)k -5(igin { 0 })k +800 9044( xtic)m 7(ks { 10@ 50@ 100@ 200@ 500@ })k 800 8564( objects { @NE at { 300 2 } @I { Exponential })m 800 8084( @SE at { ...)m 21( } @I { Unif)k 10(or)k -9(m } })k +800 7604( belo)m 5(wcaption { @I n })k 800 7124({)m 800 6644( @Data points { \207lledcircle } { ...)m 21( })k +800 6164( @Data points { \207lledcircle } { ...)m 21( })k 800 5204( @Data pairs { dashed })m 800 4724( { 10 2 500 2 })m 800 3764( @Data pairs { dashed })m +800 3284( {)m 800 2804( xloop from { 10 } to { 500 } b)m 7(y { 20 } do)k 800 2324( {)m 800 1844( x sqr)m -14(t { pi*x / 4 } + 1)k +800 1364( })m 800 884( })m 800 404(})m +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 42 42 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Italic +/pgsave save def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +400 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 12588 0 12588 400 480 100 1417 -14005 LoutGr2 +0 LoutMargSet +grestore +160 fnt82 0 12479(lout)m 8910(42)s gsave +0 668 translate +400 fnt82 8640 10080 1440 8640 400 480 100 LoutGraphic +gsave +LoutBox stroke +grestore +gsave +1440 4671 translate +360 fnt82 5670 3969 0 3969 360 480 90 LoutGraphic +gsave +grestore + +gsave xsize ysize lgraphdict begin /ysize exch def /xsize exch def +/alldata [ [ [ 10 1.97 50 2.01 100 2.00 200 2.0 500 2.00 ] xandy +{ filledcircle } +{ } +{ /dashlength 0.2 ft def + /linewidth currentlinewidth def + /symbolsize 0.15 ft def } +{ false } +] +[ [ 10 3.53 50 7.45 100 9.32 200 13.41 500 21.63 ] xandy +{ filledcircle } +{ } +{ /dashlength 0.2 ft def + /linewidth currentlinewidth def + /symbolsize 0.15 ft def } +{ false } +] +[ [ 10 2 500 2 ] xandy +{ } +{ linesetup cdashed } +{ /dashlength 0.2 ft def + /linewidth currentlinewidth def + /symbolsize 0.15 ft def } +{ false } +] +[ [ 10 20 500 { /xval exch def xval 3.14159 xval mul 4 div sqrt 1 add } for ] xandy +{ } +{ linesetup cdashed } +{ /dashlength 0.2 ft def + /linewidth currentlinewidth def + /symbolsize 0.15 ft def } +{ false } +] ] def +0 [ 10 lgen 50 lgen 100 lgen 200 lgen 500 lgen ] 0 alldata false false 0 +0 false 0 0.5 ft xset +0 [ false ] 1 alldata false false 0 +0 false 0 0.5 ft yset +norset +rundata axesstyle +grestore +1953 535 0 535 360 480 90 0 -535 LoutGr2 +300 2 trpoint translate 0 ysize translate gsave +grestore +360 fnt83 108 182(Exponential)m +grestore +grestore +1428 533 0 533 360 480 90 0 -533 LoutGr2 +300 3.14159 300 4 div mul sqrt 1 add trpoint translate 0 0 translate gsave +grestore +360 fnt83 108 182(Uniform)m grestore +grestore +end + +grestore +360 fnt83 4189 3901(n)m +grestore + +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Trailer +%%DocumentNeededResources: font Helvetica +%%+ font Helvetica-Oblique +%%+ font Symbol +%%+ font Times-Roman +%%+ font Times-Italic +%%+ font Times-Bold +%%DocumentSuppliedResources: procset LoutStartUp +%%+ procset LoutTabPrependGraphic +%%+ procset LoutFigPrependGraphic +%%+ procset LoutGraphPrependGraphic +%%+ procset LoutBasicSetup +%%+ encoding vec2 +%%Pages: 42 +%%EOF diff --git a/doc/user/README b/doc/user/README index 0fc5704..0cf3731 100644 --- a/doc/user/README +++ b/doc/user/README @@ -34,4 +34,4 @@ A copy of the final PostScript output file (A4 paper size) is stored at "ftp://ftp.cs.su.oz.au/jeff/lout/lout-3.19.user.ps.gz". Jeffrey H. Kingston -9 March 2000 +8 April 2000 diff --git a/doc/user/all b/doc/user/all index a4bb049..64eaf96 100644 --- a/doc/user/all +++ b/doc/user/all @@ -7,6 +7,7 @@ @SysInclude { diag } @SysInclude { cprint } @SysInclude { eiffel } +@SysInclude { perl } @SysInclude { book } # @Include { letterbook } # for testing Letter size formatting @@ -20,8 +21,8 @@ Lout Document Formatting System } @Author { Jeffrey H. Kingston } - @Edition { Version 3.19 -March, 2000 } + @Edition { Version 3.20 +April, 2000 } @Publisher { Copyright @CopyRight 1991, 2000 Jeffrey H. Kingston, Basser Department of Computer Science, @@ -42,7 +43,7 @@ The University of Sydney 2006, Australia. ISBN 0 86758 951 5. @Include { bgr } @Include { dia } @Include { gra } -@Include { cpp } +@Include { prg } @Include { pascal } @Include { ap_qck } @Include { ap_byp } diff --git a/doc/user/cpp_chan b/doc/user/cpp_chan deleted file mode 100644 index bee0493..0000000 --- a/doc/user/cpp_chan +++ /dev/null @@ -1,91 +0,0 @@ -@Section - @Title { Changing the appearance of all programs simultaneously } - @Tag { cpsetup } -@Begin -@PP -We have just seen that the {@Code "@CP"}, {@Code "@Eiffel"} etc. symbols -have many options for changing the appearance of the program text. However, -most people would not want to have a different style for every program text -in their document; they want to define the style once at the start, and have -all their program texts come out in that style without laboriously setting -options on every symbol. You do this by copying the setup file and -changing it. -@PP -For general information about how to make your own setup file, consult -Section {@NumberOf setup}. The options that determine the default -values are in the @Code "@Use" clause which occupies most of the setup -file. Here is the @Code "@Use" clause from {@Code cprint}: -cprint. @Index @Code "@CPSetup" -@ID @Code @Tbl - mv { 0.5vx } - aformat { @Cell A | @Cell B | @Cell C } - bformat { @Cell { " #" A } | @Cell { "{" B } | @Cell "}" } -{ -@Rowa A { "@Use { @CPSetup" } -@Rowb A { "pipe" } B { } -@Rowb A { "style" } B { fixed } - -@Rowa -@Rowb A { "fixedfont" } B { Courier } -@Rowb A { "fixedstrings" } B { Base } -@Rowb A { "fixedidentifiers" } B { Base } -@Rowb A { "fixedcomments" } B { Base } -@Rowb A { "fixedkeywords" } B { Base } -@Rowb A { "fixednumbers" } B { Base } -@Rowb A { "fixedoperators" } B { Base } -@Rowb A { "fixedsize" } B { -1.0p } -@Rowb A { "fixedline" } B { 1.0vx } -@Rowb A { "fixedtabin" } B { 8 } -@Rowb A { "fixedtabout" } B { 8s } - -@Rowa -@Rowb A { "varyingfont" } B { } -@Rowb A { "varyingstrings" } B { Slope } -@Rowb A { "varyingidentifiers" } B { Slope } -@Rowb A { "varyingcomments" } B { Base } -@Rowb A { "varyingkeywords" } B { Bold } -@Rowb A { "varyingnumbers" } B { Base } -@Rowb A { "varyingoperators" } B { Base } -@Rowb A { "varyingsize" } B { 1.0f } -@Rowb A { "varyingline" } B { 1.0vx } -@Rowb A { "varyingtabin" } B { 8 } -@Rowb A { "varyingtabout" } B { 3f } - -@Rowa -@Rowb A { "symbolfont" } B { } -@Rowb A { "symbolstrings" } B { Slope } -@Rowb A { "symbolidentifiers" } B { Slope } -@Rowb A { "symbolcomments" } B { Base } -@Rowb A { "symbolkeywords" } B { Bold } -@Rowb A { "symbolnumbers" } B { Base } -@Rowb A { "symboloperators" } B { Base } -@Rowb A { "symbolsize" } B { 1.0f } -@Rowb A { "symbolline" } B { 1.0vx } -@Rowb A { "symboltabin" } B { 8 } -@Rowb A { "symboltabout" } B { 3f } - -@Rowa A { "}" } -} -This shows the default font families, font faces, font sizes, line -spacings, and tab settings in force for the three styles, and also that -the default style is {@Code "fixed"}. Notice that the font family name -for @Code "fixed" style is {@Code "Courier"}, but for the other styles is -empty. This causes the @Code "fixed" style to always switch to Courier, -and the other styles to use the same font family as in the surrounding -document. The @Code pipe option will be explained in Section {@NumberOf pipes}. -@PP -To change a default value, delete the preceding @Code "#" and change the -part between braces. For example, suppose you are happy with @Code "fixed" -except that you want bold keywords. Then one line needs to be changed, to -@ID @Code "fixedkeywords { Bold }" -Or suppose you like @Code "varying" as it stands, but would like it to be -the default style rather than {@Code "fixed"}. Again, only one line needs -to be changed, to {@Code "style { varying }"}. -@PP -The setup files for the other languages are identical to this one, except -that the symbol after @Code "@Use" is different, and some of the -default values may be different. Changing an option affects only the -language of that setup file; if you have multiple languages you can -have multiple setup files and change their options quite independently -of each other. -@End @Section diff --git a/doc/user/preface b/doc/user/preface index 3634a89..2f258eb 100644 --- a/doc/user/preface +++ b/doc/user/preface @@ -18,7 +18,7 @@ gnu. @Index { GNU Public License } primary source is directory @ID @Code "ftp://ftp.cs.usyd.edu.au/jeff/lout" in which may be found a gzipped tar file containing the main distribution -(currently {@Code "lout-3.19.tar.gz"}), and various other things including +(currently {@Code "lout-3.20.tar.gz"}), and various other things including a PostScript version of this guide. The distribution contains source code, libraries, documentation, license, and installation instructions. @PP diff --git a/doc/user/cpp b/doc/user/prg index 0e7748a..ec473aa 100644 --- a/doc/user/cpp +++ b/doc/user/prg @@ -30,6 +30,8 @@ At the time of writing, the available programming languages are: eiffel. @Index { Eiffel program printing } c. @Index { C and C++ program printing } blue. @Index { Blue program printing } +perl. @Index { Perl program printing } +pod. @Index { Pod (for Perl) printing } @CD @Tbl mv { 0.5vx } af { Italic } @@ -61,26 +63,41 @@ blue. @Index { Blue program printing } C { "@Blue" } D { varying } E { Yes } +@Rowb + A { Perl } + B { perl } + C { "@Perl" } + D { fixed } + E { No } +@Rowb + A { Pod } + B { pod } + C { "@Pod" } + D { varying } + E { No } } C and C++ are handled together since, for formatting purposes, they differ only in that C++ has some additional keywords plus an extra way to make comments. Whenever we mention C from now on, we mean -both C and C++. The second to fifth columns of this table will be +both C and C++. See Section {@NumberOf prg_perl} for more on Perl +and its handmaiden Pod. The second to fifth columns of this table will be explained at various points later in this chapter. @PP The list of languages is likely to expand, because the @Code "prg2lout" -program has been designed to make it easy to add new languages. Consult -the instructions at the top of the source file of that program if you -want to try it yourself. +program has been designed to make it relatively easy to add new languages +(you don't have to write executable code, just declare a lot of records +describing your language). Consult the instructions at the top of the +source file of that program ({@I prg2lout.c}) if you want to try it yourself. @BeginSections -@Include { cpp_lone } -@Include { cpp_embe } -@Include { cpp_opti } -@Include { cpp_chan } -@Include { cpp_tabs } -@Include { cpp_comm } -@Include { cpp_prog } -@Include { cpp_pipe } -@Include { cpp_erro } +@Include { prg_lone } +@Include { prg_embe } +@Include { prg_opti } +@Include { prg_chan } +@Include { prg_tabs } +@Include { prg_comm } +@Include { prg_prog } +@Include { prg_pipe } +@Include { prg_erro } +@Include { prg_perl } @EndSections @End @Chapter diff --git a/doc/user/prg_chan b/doc/user/prg_chan new file mode 100644 index 0000000..6273b7d --- /dev/null +++ b/doc/user/prg_chan @@ -0,0 +1,108 @@ +@Section + @Title { Changing the appearance of all programs simultaneously } + @Tag { cpsetup } +@Begin +@PP +We have just seen that the {@Code "@CP"}, {@Code "@Eiffel"} etc. symbols +have many options for changing the appearance of the program text. However, +most people would not want to have a different style for every program text +in their document; they want to define the style once at the start, and have +all their program texts come out in that style without laboriously setting +options on every symbol. You do this by copying the setup file and +changing it. +@PP +For general information about how to make your own setup file, consult +Section {@NumberOf setup}. The options that determine the default +values are in the @Code "@Use" clause which occupies most of the setup +file. Here is part of the @Code "@Use" clause from {@Code cprint}: +cprint. @Index @Code "@CPSetup" +@ID @Code @Tbl + mv { 0.5vx } + aformat { @Cell A | @Cell B | @Cell C } + bformat { @Cell { " #" A } | @Cell { "{" B } | @Cell "}" } +{ +@Rowa A { "@Use { @CPSetup" } +@Rowb A { "pipe" } B { } +@Rowb A { "style" } B { fixed } + +@Rowa +@Rowb A { "fixedfont" } B { Courier } +@Rowb A { "fixedsize" } B { -1.0p } +@Rowb A { "fixedline" } B { 1.0vx } +@Rowb A { "fixedtabin" } B { 8 } +@Rowb A { "fixedtabout" } B { 8s } + +@Rowa +@Rowb A { "fixedidentifiers" } B { Base } +@Rowb A { "fixedkeywords" } B { Base } +@Rowb A { "fixedoperators" } B { Base } +@Rowb A { "fixednumbers" } B { Base } +@Rowb A { "fixedstrings" } B { Base } +@Rowb A { "fixedcomments" } B { Base } + +@Rowa +@Rowb A { "fixedidentifiersformat" } B { "@Body" } +@Rowb A { "fixedkeywordsformat" } B { "@Body" } +@Rowb A { "fixedoperatorsformat" } B { "@Body" } +@Rowb A { "fixednumbersformat" } B { "@Body" } +@Rowb A { "fixedstringsformat" } B { "@Body" } +@Rowb A { "fixedcommentsformat" } B { "@Body" } + +@Rowa +@Rowa A { "..." } + +@Rowa +@Rowa A { "}" } +} +The @Code pipe option will be explained in Section {@NumberOf pipes}. The +options whose name begins with @Code "fixed" apply only when +@Code style is {@Code fixed}; there are corresponding options, not +shown, which apply when @Code style is {@Code varying} and {@Code symbol}. +@PP +We can see in this extract that the default value of @Code style is +{@Code fixed}. We can also see the default font family, font face, font size, +line spacing, and tab settings when the style is {@Code "fixed"}. The +font family name for @Code "fixed" style is {@Code "Courier"}, but for the +other styles (not shown) it is empty. This causes the @Code "fixed" style +to always switch to Courier, and the other styles to use the same font +family as in the surrounding document. +@PP +The @Code fixedidentifiersformat option allows you to make a more +radical change to the format of identifiers than just the font. Within +this option, @Code "@Body" stands for the identifier being formatted, and +by applying Lout symbols to it, you apply them to every identifier. For +example, +@ID @Code "fixedidentifiersformat { red @Colour @Body }" +will cause identifiers to be printed red. +@FootNote { +@Code "@Colour" is not a Lout primitive like, say, {@Code "@Font"}; it is +defined when you write @Code "@SysInclude { doc }" or the equivalent for +the other document types. This is true of quite a few generally useful +symbols, including {@Code "@Box"} and {@Code "@I"}. If you want to use +these symbols here, you must include your setup file @I after +@Code "@SysInclude { doc }" or whatever, the reverse of the usual +arrangement, so that they are defined before Lout reads your setup +file. This reversal is carried out automatically when formatting +programs independently of any document, so you can use these symbols +in a setup file given by a @Code { -S } command line flag. +} If you do use exotic formats, remember that in some programming languages, +comments and even strings may occupy more than one line: {@Code "@Box"}, +for example, will give a logical but probably unwanted result when +formatting a multi-line string. +@PP +As always with setup files, to change a default value, delete the preceding +@Code "#" and change the part between braces. For example, suppose you are +happy with @Code "fixed" except that you want bold keywords. Then one line +needs to be changed, to +@ID @Code "fixedkeywords { Bold }" +Or suppose you like @Code "varying" as it stands, but would like it to be +the default style rather than {@Code "fixed"}. Again, only one line needs +to be changed, to {@Code "style { varying }"}. +@PP +The setup files for the other languages are identical to this one, except +that the symbol after @Code "@Use" is different, and some of the +default values may be different. Changing an option affects only the +language of that setup file; if you have multiple languages you can +have multiple setup files and change their options quite independently +of each other. +@End @Section diff --git a/doc/user/cpp_comm b/doc/user/prg_comm index 96ac110..a679f4f 100644 --- a/doc/user/cpp_comm +++ b/doc/user/prg_comm @@ -16,7 +16,7 @@ formfeed. @Index { formfeed in program texts } character, control-L, without any comment; whatever the language, a formfeed in program text is taken to be a request to start a new page.) Or, to make a heading in an Eiffel program, do this: -@ID @Code "--@ @Display @Heading { treeprint() }" +@ID @Code "--@ @Display @Heading { treeprint }" (Eiffel comments begin with @Code "--" and end at the end of the line.) Other possible uses for this feature include index entries and margin notes. Incredible as it may seem, you can even write diff --git a/doc/user/cpp_embe b/doc/user/prg_embe index 0cefc84..cfa84d4 100644 --- a/doc/user/cpp_embe +++ b/doc/user/prg_embe @@ -66,8 +66,7 @@ equivalent for other languages), so that Lout does not confuse program braces with Lout braces. In that case the program text must not contain {@Code "@End"}; and in either case the program text must not include @Code "@Include" or @Code "@SysInclude" unless you are really -including a file at that point (which is allowed, and follows the -rules given for @Code "@Verbatim" in Section {@NumberOf verbatim}). +including a file at that point (Section {@NumberOf pipes}). @PP If your Lout document contains program texts in several languages, simply add one @Code "@SysInclude" line for each of them and proceed @@ -77,6 +76,6 @@ a viable alternative is These symbols cause the text between braces to be set verbatim in a fixed-width font, as explained elsewhere in this guide. This fallback method will not handle tab and formfeed characters very well. Again, -use @Code "@Begin" and @Code "@End @Verbatim" instead of braces if -your program text contains unbalanced braces. +use @Code "@Verbatim @Begin ... @End @Verbatim" if your program text +contains unbalanced braces. @End @Section diff --git a/doc/user/cpp_erro b/doc/user/prg_erro index ff89591..7ebbe3e 100644 --- a/doc/user/cpp_erro +++ b/doc/user/prg_erro @@ -27,7 +27,7 @@ line number, and column number pointing to the Lout symbol ({@Code "@CP"}, {@Code "@Eiffel"} etc.) whose program text caused the error message, like this: @ID @Code @Verbatim { -lout file "cpp_tabs" (from "cpp" line 80, from "all" line 45): +lout file "prg_tabs" (from "prg" line 96, from "all" line 46): 56,23: prg2lout 2,1: program text ended within comment } This is an actual message produced when formatting this chapter. The diff --git a/doc/user/cpp_lone b/doc/user/prg_lone index a377d86..1717998 100644 --- a/doc/user/cpp_lone +++ b/doc/user/prg_lone @@ -31,6 +31,11 @@ Select an inter-line spacing size in Lout units. The default is @Code -v1.1fx meaning 1.1 times the font size measured from baseline to baseline. } +@TI { {@Code -S}{@I file} } { +Use @I file as the setup file for printing your language. This allows +you to change all the options mentioned in subsequent sections, rather +than just the few given here. +} @EndList There are also {@Code -t} and {@Code -T} options for dealing with tab characters (Section {@NumberOf tabs}). diff --git a/doc/user/cpp_opti b/doc/user/prg_opti index 538bda2..9eb1818 100644 --- a/doc/user/cpp_opti +++ b/doc/user/prg_opti @@ -1,6 +1,6 @@ @Section @Title { Changing the appearance of a program } - @Tag { cpp_opti } + @Tag { prg_opti } @Begin @PP The {@Code "@CP"}, {@Code "@Eiffel"} etc. symbols have a number of @@ -69,37 +69,33 @@ default values: "@CP [ or @Eiffel, @Blue, etc. ]" " style { fixed }" " font { Courier }" -" strings { Base }" -" identifiers { Base }" -" comments { Base }" -" keywords { Base }" -" numbers { Base }" -" operators { Base }" " size { -1.0p }" " line { 1.0vx }" " tabin { 8 }" " tabout { 8s }" +" identifiers { Base }" +" keywords { Base }" +" operators { Base }" +" numbers { Base }" +" strings { Base }" +" comments { Base }" "{" " ..." "}" } We are already familiar with {@Code "style"}. After that comes -{@Code "font"}, which determines the font family to use, followed -by six options giving the particular faces within that family in which to -print strings, identifiers, comments, keywords, numbers, and -operators. {@Code "Base"} means the basic face; other commonly available -choices are {@Code "Slope"} and {@Code "Bold"}. These options may all be -set to different faces if desired. The default values shown are correct -for @Code "style { fixed }" only; the other styles have other defaults -(Section {@NumberOf cpsetup}). -@PP -The @Code "size" option is the font size to use, and @Code "line" is the -inter-line spacing. The default values specify that @Code "size" is -to be one point smaller than in the surrounding document; this was done -to compensate for Courier's relatively large appearance compared -to other fonts of the same nominal size. Again, these defaults are -different for different values of {@Code "style"}. +{@Code "font"}, which determines the font family to use, {@Code "size"}, +the font size to use, and {@Code "line"}, the inter-line spacing. The +default value for @Code "size" asks for one point smaller than in the +surrounding document; this was done to compensate for Courier's relatively +large appearance compared to other fonts of the same nominal size. @PP The @Code "tabin" and @Code "tabout" options are the subject of -Section {@NumberOf tabs}. +Section {@NumberOf tabs}. After them come six options giving the +particular font faces in which to print identifiers, keywords, operators, +numbers, strings, and comments. {@Code "Base"} means the basic face; other +commonly available choices are {@Code "Slope"} and {@Code "Bold"}. These +options may all be set to different faces if desired. The default values +shown are correct for @Code "style { fixed }" only; the other styles +have other defaults (Section {@NumberOf cpsetup}). @End @Section diff --git a/doc/user/prg_perl b/doc/user/prg_perl new file mode 100644 index 0000000..4a14860 --- /dev/null +++ b/doc/user/prg_perl @@ -0,0 +1,108 @@ +@Section + @Title { Notes on Perl and Pod } + @Tag { prg_perl } +@Begin +@PP +The Perl programming language +@FootNote { My thanks to Mark Summerfield for help with Perl and Pod. } +is quite a difficult one for the @Code { prg2lout } program to deal with, +and our boast that programs can be included with `absolutely no +modifications' is not quite true for Perl. +@PP +Here is the complete list of problem areas. In most cases their +effect is to get the formatting wrong over a short region, which is not +perhaps so disastrous; and it should be easy to modify your Perl program +without changing its meaning, to work around these problems. After all, +in Perl there is always more than one way to do it. +@NumberedList + +@LI { +@I Here-documents such as +@ID @Verbatim { +<<"EOF" +These lines will be read as though +enclosed in double quotes +EOF +} +will be handled correctly only if the string appearing immediately after +the @Perl { << } operator (that is, the string used to terminate the +here-document) is one of @Perl { EOF }, @Perl { EOT }, @Perl { END }, +and the empty string, all optionally enclosed in quotes of any of the +three kinds. If this condition is not met, then the here-document will +be treated as Perl program text. If the condition is met, there is still +another problem: everything after the @Perl { << } symbol on the same +line will be treated (incorrectly) as a string; the worst consequence +of this is that stacked here-documents will not be printed properly. +} + +@LI { +When @Code { prg2lout } is scanning the program text looking for the +beginning of a lexical unit, it may come upon a @Code "/" character, +and this @I initial @Code "/" (not subsequent ones in the same lexical +unit) it finds difficult to interpret, since it may be the beginning +of a regular expression, to be formatted like a string, or it may be a +complete lexical unit denoting division. The program chooses the regular +expression (or equivalently, string) interpretation if the @Code "/" +character is immediately preceded by @Code { "q" }, @Code { "qq" }, +@Code { "qx" }, @Code { "qw" }, @Code { "qr" }, @Code { "m" }, +@Code { "s" }, @Code { "y" }, or @Code { "tr" }. It also chooses the +regular expression interpretation if the @Code "/" character appears +at the start of a line, or if it is +immediately preceded by zero, one, or two space or tab characters, which +are themselves immediately preceded by a complete lexical unit which is +one of @Code { "(" }, @Code { "=" }, @Code { "=~" }, @Code { "!~" }, +@Code { "split" }, @Code { "if" }, @Code { "not" }, @Code { "unless" }, +@Code { "for" }, @Code { "foreach" }, and @Code { "while" }. Otherwise +it chooses the division interpretation. In the rare cases where this +rule fails, you can force @Code { prg2lout } to choose the regular expression +interpretation by placing an @Code { m } in front of the initial @Code "/" +(this does not change the meaning of the program), and you can force the +division interpretation by placing at least three spaces before the +@Code "/" character. +} + +@LI { +The @Code { prg2lout } program recognises complete substitution operators, +such as @Code "s/abc/ABC/" and {@Code "s{abc}{ABC}"}, as individual lexical +units, and it formats them as it does strings. However, its rule for +deciding where these units end is rather simple-minded: at the start, +it works out what character finishes the unit (in the examples above, +@Code "/" and @Code "}" respectively), and scans along until it reaches +the second occurrence of this character not preceded by the @Code "\\" +escape character. This is inadequate in two respects. Firstly, +@ID @Code "s{{}}{}" +is a complete legal substitution expression in Perl, but @Code { prg2lout } +will think it ends after the second {@Code "}"}, and so format the rest +of it wrongly. Secondly, and more seriously, +@ID @Code "s{abc}<ABC>" +is also allowed in Perl, but @Code { prg2lout } does not understand that +the finishing character can change in this way, so in this example it will +keep scanning forever, looking for the second @Code "}" character, which is +disastrous. +} + +@EndList +Further work may eliminate some of these problems. +@PP +The Pod language is used by Perl programmers for creating documentation, +and may be found within Perl programs or standing alone. Lout supports +both arrangements without any special action by the user. At the +beginning of the @Code perl setup line, the following line has been placed: +@ID @Code "@SysInclude { pod }" +Thus, asking for Perl always gives you Pod as well. If you are using +your own setup files for both languages, it is probably better to +break this connection by deleting this line from your copy of the +@Code perl setup file and placing +@ID @Code { +"@Include { mypod }" +"@Include { myperl }" +} +at the start of your document in the usual way. +@PP +Because Pod is a documentation language rather than a programming +language, the setup file options listed in Section {@NumberOf cpsetup} +do not really apply. So for Pod only these have been discarded and replaced +by a completely different set of options, controlling such things as +the size of headings and the gaps between list items, which you can +find documented in the @Code { pod } setup file. +@End @Section diff --git a/doc/user/cpp_pipe b/doc/user/prg_pipe index afbb87e..afbb87e 100644 --- a/doc/user/cpp_pipe +++ b/doc/user/prg_pipe diff --git a/doc/user/cpp_prog b/doc/user/prg_prog index a049e3d..8d343f6 100644 --- a/doc/user/cpp_prog +++ b/doc/user/prg_prog @@ -7,7 +7,7 @@ The standard reference for the Eiffel language @Cite { $meyer1992eiffel } specifies that identifiers within comments may or should be enclosed in ` and ' so that they may be noticed and printed in an italic font: -@ID lines @Break @F @Verbatim { +@ID @Code @Verbatim { @ID @Eiffel { deposit(amount: REAL) is -- deposit `amount' dollars diff --git a/doc/user/cpp_tabs b/doc/user/prg_tabs index 3a04bfa..3a04bfa 100644 --- a/doc/user/cpp_tabs +++ b/doc/user/prg_tabs diff --git a/doc/user/user.ps b/doc/user/user.ps new file mode 100644 index 0000000..203f7e3 --- /dev/null +++ b/doc/user/user.ps @@ -0,0 +1,5202 @@ +%!PS-Adobe-3.0 +%%Creator: Basser Lout Version 3.19 (March 2000) +%%CreationDate: Mon Apr 3 16:16:36 2000 +%%DocumentData: Binary +%%DocumentNeededResources: (atend) +%%DocumentSuppliedResources: (atend) +%%DocumentMedia: A4 595 842 0 white () +%%PageOrder: Ascend +%%Pages: (atend) +%%BoundingBox: 0 0 595 842 +%%EndComments + +%%BeginProlog +%%BeginResource: procset LoutStartUp +/m { 3 1 roll moveto show } bind def +/mo { 3 1 roll moveto true charpath stroke } bind def +/s { exch currentpoint exch pop moveto show } bind def +/so { exch currentpoint exch pop moveto true charpath stroke } bind def +/k { exch neg 0 rmoveto show } bind def +/ko { exch neg 0 rmoveto true charpath stroke } bind def +/ul { gsave setlinewidth dup 3 1 roll + moveto lineto stroke grestore } bind def +/in { 1440 mul } def +/cm { 567 mul } def +/pt { 20 mul } def +/em { 120 mul } def +/sp { louts mul } def +/vs { loutv mul } def +/ft { loutf mul } def +/dg { } def + +/LoutGraphic { + /louts exch def + /loutv exch def + /loutf exch def + /ymark exch def + /xmark exch def + /ysize exch def + /xsize exch def +} def + +/LoutGr2 { gsave translate LoutGraphic gsave } def + +/LoutFont +{ findfont exch scalefont setfont +} bind def + +/LoutRecode { + { findfont dup length dict begin + {1 index /FID ne {def} {pop pop} ifelse} forall + /Encoding exch def + currentdict end definefont pop + } + stopped pop +} bind def + +/BeginEPSF { + /LoutEPSFState save def + /dict_count countdictstack def + /op_count count 1 sub def + userdict begin + /showpage { } def + 0 setgray 0 setlinecap + 1 setlinewidth 0 setlinejoin + 10 setmiterlimit [] 0 setdash newpath + /languagelevel where + { pop languagelevel + 1 ne + { false setstrokeadjust false setoverprint + } if + } if +} bind def + +/EndEPSF { + count op_count sub { pop } repeat + countdictstack dict_count sub { end } repeat + LoutEPSFState restore +} bind def +%%EndResource + +%%BeginResource: encoding vec2 +/vec2 [ +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright +/parenleft /parenright /asterisk /plus /comma /hyphen /period /slash +/zero /one /two /three /four /five /six /seven +/eight /nine /colon /semicolon /less /equal /greater /question +/at /A /B /C /D /E /F /G +/H /I /J /K /L /M /N /O +/P /Q /R /S /T /U /V /W +/X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore +/quoteleft /a /b /c /d /e /f /g +/h /i /j /k /l /m /n /o +/p /q /r /s /t /u /v /w +/x /y /z /braceleft /bar /braceright /asciitilde /.notdef +/quotesinglbase /quotedblbase /ellipsis /OE /oe /quotedblleft /quotedblright /fi +/fl /endash /emdash /bullet /dagger /daggerdbl /florin /fraction +/dotlessi /grave /acute /circumflex /tilde /macron /breve /dotaccent +/dieresis /.notdef /ring /cedilla /.notdef /hungarumlaut /ogonek /caron +/space /exclamdown /cent /sterling /currency /yen /brokenbar /section +/dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen /registered /macron +/degree /plusminus /twosuperior /threesuperior /acute /mu /paragraph /periodcentered +/cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf /threequarters /questiondown +/Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla +/Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis +/Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply +/Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /germandbls +/agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla +/egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis +/eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide +/oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /ydieresis +] def +%%EndResource + +%%BeginResource: procset LoutTabPrependGraphic +% @PrependGraphic file /export/home/6monthspace/jeff/lout.lib/include/tabf.lpg +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % +% PostScript @SysPrependGraphic file for @Tab % +% % +% To assist in avoiding name clashes, the names % +% of all these symbols begin with "ltab". % +% % +% Jeffrey H. Kingston % +% 24 September 1991 % +% 22 December 1992 % +% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% linewidth ltabhs - +% horizontal single line +/ltabhs +{ 0 0 moveto xsize 0 lineto + setlinewidth 0 setlinecap stroke +} def + +% linewidth ltabhsp - +% horizontal single line with projecting ends +/ltabhsp +{ 0 0 moveto xsize 0 lineto + setlinewidth 2 setlinecap stroke +} def + +% linewidth ltabhd - +% horizontal double line +/ltabhd +{ dup dup + 0 0 moveto xsize 0 lineto + 0 exch 3 mul moveto xsize exch 3 mul lineto + setlinewidth 0 setlinecap stroke +} def + +% linewidth ltabhdb - +% horizontal double line below mark +/ltabhdb +{ dup dup + 0 0 moveto xsize 0 lineto + 0 exch -3 mul moveto xsize exch -3 mul lineto + setlinewidth 0 setlinecap stroke +} def + +% linewidth ltabhdnw - +% horizontal double line with northwest corner +/ltabhdnw +{ dup dup dup dup + 0 0 moveto xsize 0 lineto + xsize exch 3 mul moveto + -3 mul exch 3 mul lineto + -3 mul 0 lineto + setlinewidth 0 setlinejoin 2 setlinecap stroke +} def + +% linewidth ltabhdne - +% horizontal double line with northeast corner +/ltabhdne +{ dup dup dup dup + 0 0 moveto xsize 0 lineto + 0 exch 3 mul moveto + 3 mul xsize add exch 3 mul lineto + 3 mul xsize add 0 lineto + setlinewidth 0 setlinejoin 2 setlinecap stroke +} def + +% linewidth ltabhdsw - +% horizontal double line with southwest corner +/ltabhdsw +{ dup dup dup dup + 0 0 moveto xsize 0 lineto + xsize exch -3 mul moveto + -3 mul exch -3 mul lineto + -3 mul 0 lineto + setlinewidth 0 setlinejoin 2 setlinecap stroke +} def + +% linewidth ltabhdse - +% horizontal double line with southeast corner +/ltabhdse +{ dup dup dup dup + 0 0 moveto xsize 0 lineto + 0 exch -3 mul moveto + 3 mul xsize add exch -3 mul lineto + 3 mul xsize add 0 lineto + setlinewidth 0 setlinejoin 2 setlinecap stroke +} def + +% linewidth ltabvs - +% vertical single line +/ltabvs +{ 0 0 moveto 0 ysize lineto + setlinewidth 0 setlinecap stroke +} def + +% linewidth ltabvd - +% vertical double line +/ltabvd +{ dup dup + 0 0 moveto 0 ysize lineto + -3 mul 0 moveto -3 mul ysize lineto + setlinewidth 0 setlinecap stroke +} def + +% linewidth ltabvdr - +% vertical double line to right of mark +/ltabvdr +{ dup dup + 0 0 moveto 0 ysize lineto + 3 mul 0 moveto 3 mul ysize lineto + setlinewidth 0 setlinecap stroke +} def +%%EndResource + +%%BeginResource: procset LoutTblPrependGraphic +% @PrependGraphic file /export/home/6monthspace/jeff/lout.lib/include/tblf.lpg +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % +% PostScript @SysPrependGraphic file for @Tbl Jeffrey H. Kingston % +% Version 1.0 June 1998 % +% % +% To assist in avoiding name clashes, the names of all symbols % +% defined here begin with "ltbl". % +% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% painting (i.e. filling): - ltblwhite - (etc.) +/ltblnopaint { } def +/ltblnochange { fill } def +/ltbldarkblue { 0.0 0.0 0.5 setrgbcolor fill } def +/ltblblue { 0.0 0.0 1.0 setrgbcolor fill } def +/ltbllightblue { 0.5 0.5 1.0 setrgbcolor fill } def +/ltbldarkgreen { 0.0 0.5 0.0 setrgbcolor fill } def +/ltblgreen { 0.0 1.0 0.0 setrgbcolor fill } def +/ltbllightgreen { 0.5 1.0 0.5 setrgbcolor fill } def +/ltbldarkred { 0.5 0.0 0.0 setrgbcolor fill } def +/ltblred { 1.0 0.0 0.0 setrgbcolor fill } def +/ltbllightred { 1.0 0.5 0.5 setrgbcolor fill } def +/ltbldarkcyan { 0.0 0.5 0.5 setrgbcolor fill } def +/ltblcyan { 0.0 1.0 1.0 setrgbcolor fill } def +/ltbllightcyan { 0.5 1.0 1.0 setrgbcolor fill } def +/ltbldarkmagenta { 0.5 0.0 0.5 setrgbcolor fill } def +/ltblmagenta { 1.0 0.0 1.0 setrgbcolor fill } def +/ltbllightmagenta { 1.0 0.5 1.0 setrgbcolor fill } def +/ltbldarkyellow { 0.5 0.5 0.0 setrgbcolor fill } def +/ltblyellow { 1.0 1.0 0.0 setrgbcolor fill } def +/ltbllightyellow { 1.0 1.0 0.5 setrgbcolor fill } def +/ltbldarkgray { 0.2 0.2 0.2 setrgbcolor fill } def +/ltblgray { 0.5 0.5 0.5 setrgbcolor fill } def +/ltbllightgray { 0.8 0.8 0.8 setrgbcolor fill } def +/ltbldarkgrey { 0.2 0.2 0.2 setrgbcolor fill } def +/ltblgrey { 0.5 0.5 0.5 setrgbcolor fill } def +/ltbllightgrey { 0.8 0.8 0.8 setrgbcolor fill } def +/ltblblack { 0.0 0.0 0.0 setrgbcolor fill } def +/ltblwhite { 1.0 1.0 1.0 setrgbcolor fill } def +%%EndResource + +%%BeginResource: procset LoutFigPrependGraphic +% @PrependGraphic file /export/home/6monthspace/jeff/lout.lib/include/figf.lpg +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % +% PostScript @SysPrependGraphic file for @Fig Jeffrey H. Kingston % +% Version 2.0 (includes CIRCUM label) January 1992 % +% % +% To assist in avoiding name clashes, the names of all symbols % +% defined here begin with "lfig". However, this is not feasible % +% with user-defined labels and some labels used by users. % +% % +% <point> is two numbers, a point. % +% <length> is one number, a length % +% <angle> is one number, an angle in degrees % +% <dashlength> is one number, the preferred length of a dash % +% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +errordict begin + /handleerror + { + { /Times-Roman findfont 8 pt scalefont setfont + 0 setgray 4 pt 4 pt moveto + $error /errorname get + dup lfigdict exch known + { lfigdict exch get } + { 30 string cvs } ifelse + show + ( Command: ) show + $error /command get 30 string cvs show + } stopped {} if + showpage stop + } def +end + +% concat strings: <string> <string> lfigconcat <string> +% must be defined outside lfigdict since used in lfigpromotelabels +/lfigconcat +{ 2 copy length exch length add string + dup 0 4 index putinterval + dup 3 index length 3 index putinterval + 3 1 roll pop pop +} def + +% <string> lfigdebugprint - +% must be defined outside lfigdict since used in arbitrary places +% /lfigdebugprint +% { print +% (; operand stack:\n) print +% count copy +% count 2 idiv +% { == +% (\n) print +% } repeat +% (\n) print +% } def + +/lfigdict 120 dict def +lfigdict begin + +% error messages +/dictfull (dictfull error: too many labels?) def +/dictstackoverflow (dictstackoverflow error: labels nested too deeply?) def +/execstackoverflow (execstackoverflow error: figure nested too deeply?) def +/limitcheck (limitcheck error: figure nested too deeply or too large?) def +/syntaxerror (syntaxerror error: syntax error in text of figure?) def +/typecheck (typecheck error: syntax error in text of figure?) def +/undefined (undefined error: unknown or misspelt label?) def +/VMError (VMError error: run out of memory?) def + +% push pi onto stack: - lfigpi <num> +/lfigpi 3.14159 def + +% arc directions +/clockwise false def +/anticlockwise true def + +% maximum of two numbers: <num> <num> lfigmax <num> +/lfigmax { 2 copy gt { pop } { exch pop } ifelse } def + +% minimum of two numbers: <num> <num> lfigmin <num> +/lfigmin { 2 copy lt { pop } { exch pop } ifelse } def + +% add two points: <point> <point> lfigpadd <point> +/lfigpadd { exch 3 1 roll add 3 1 roll add exch } def + +% subtract first point from second: <point> <point> lfigpsub <point> +/lfigpsub { 3 2 roll sub 3 1 roll exch sub exch } def + +% max two points: <point> <point> lfigpmax <point> +/lfigpmax { exch 3 1 roll lfigmax 3 1 roll lfigmax exch } def + +% min two points: <point> <point> lfigpmin <point> +/lfigpmin { exch 3 1 roll lfigmin 3 1 roll lfigmin exch } def + +% scalar multiplication: <point> <num> lfigpmul <point> +/lfigpmul { dup 3 1 roll mul 3 1 roll mul exch } def + +% point at angle and distance: <point> <length> <angle> lfigatangle <point> +/lfigatangle { 2 copy cos mul 3 1 roll sin mul lfigpadd } def + +% angle from one point to another: <point> <point> lfigangle <angle> +/lfigangle { lfigpsub 2 copy 0 eq exch 0 eq and {pop} {exch atan} ifelse } def + +% distance between two points: <point> <point> lfigdistance <length> +/lfigdistance { lfigpsub dup mul exch dup mul add sqrt } def + +% difference in x coords: <point> <point> lfigxdistance <length> +/lfigxdistance { pop 3 1 roll pop sub } def + +%difference in y coords: <point> <point> lfigydistance <length> +/lfigydistance { 3 1 roll pop sub exch pop } def + +% stroke a solid line: <length> <dashlength> lfigsolid - +/lfigsolid +{ pop pop [] 0 setdash stroke +} def + +% stroke a lfigdashed line: <length> <dashlength> lfigdashed - +/lfigdashed +{ 2 copy div 2 le 1 index 0 le or + { exch pop 1 pt lfigmax [ exch dup ] 0 setdash } + { dup [ exch 4 2 roll 2 copy div + 1 sub 2 div ceiling dup 4 1 roll + 1 add mul sub exch div ] 0 setdash + } ifelse stroke +} def + +% stroke a lfigcdashed line: <length> <dashlength> lfigcdashed - +/lfigcdashed +{ 2 copy le 1 index 0 le or + { exch pop 1 pt lfigmax [ exch dup ] dup 0 get 2 div setdash } + { dup [ 4 2 roll exch 2 copy exch div + 2 div ceiling div 1 index sub + ] exch 2 div setdash + } ifelse stroke +} def + +% stroke a dotted line: <length> <dashlength> lfigdotted - +/lfigdotted +{ 2 copy le 1 index 0 le or + { exch pop 1 pt lfigmax [ exch 0 exch ] 0 setdash } + { 1 index exch div ceiling div + [ 0 3 2 roll ] 0 setdash + } ifelse stroke +} def + +% stroke a noline line: <length> <dashlength> lfignoline - +/lfignoline +{ pop pop +} def + +% painting (i.e. filling): - lfigwhite - (etc.) +/lfignopaint { } def +/lfignochange { fill } def +/lfigdarkblue { 0.0 0.0 0.5 setrgbcolor fill } def +/lfigblue { 0.0 0.0 1.0 setrgbcolor fill } def +/lfiglightblue { 0.5 0.5 1.0 setrgbcolor fill } def +/lfigdarkgreen { 0.0 0.5 0.0 setrgbcolor fill } def +/lfiggreen { 0.0 1.0 0.0 setrgbcolor fill } def +/lfiglightgreen { 0.5 1.0 0.5 setrgbcolor fill } def +/lfigdarkred { 0.5 0.0 0.0 setrgbcolor fill } def +/lfigred { 1.0 0.0 0.0 setrgbcolor fill } def +/lfiglightred { 1.0 0.5 0.5 setrgbcolor fill } def +/lfigdarkcyan { 0.0 0.5 0.5 setrgbcolor fill } def +/lfigcyan { 0.0 1.0 1.0 setrgbcolor fill } def +/lfiglightcyan { 0.5 1.0 1.0 setrgbcolor fill } def +/lfigdarkmagenta { 0.5 0.0 0.5 setrgbcolor fill } def +/lfigmagenta { 1.0 0.0 1.0 setrgbcolor fill } def +/lfiglightmagenta { 1.0 0.5 1.0 setrgbcolor fill } def +/lfigdarkyellow { 0.5 0.5 0.0 setrgbcolor fill } def +/lfigyellow { 1.0 1.0 0.0 setrgbcolor fill } def +/lfiglightyellow { 1.0 1.0 0.5 setrgbcolor fill } def +/lfigdarkgray { 0.2 0.2 0.2 setrgbcolor fill } def +/lfiggray { 0.5 0.5 0.5 setrgbcolor fill } def +/lfiglightgray { 0.8 0.8 0.8 setrgbcolor fill } def +/lfigdarkgrey { 0.2 0.2 0.2 setrgbcolor fill } def +/lfiggrey { 0.5 0.5 0.5 setrgbcolor fill } def +/lfiglightgrey { 0.8 0.8 0.8 setrgbcolor fill } def +/lfigblack { 0.0 0.0 0.0 setrgbcolor fill } def +/lfigwhite { 1.0 1.0 1.0 setrgbcolor fill } def + +% line caps (and joins, not currently used) +/lfigbutt 0 def +/lfiground 1 def +/lfigprojecting 2 def +/lfigmiter 0 def +/lfigbevel 2 def + +% shape and labels of the @Box symbol +/lfigbox +{ + 0 0 /SW lfigpointdef + xsize 0 /SE lfigpointdef + xsize ysize /NE lfigpointdef + 0 ysize /NW lfigpointdef + SE 0.5 lfigpmul /S lfigpointdef + NW 0.5 lfigpmul /W lfigpointdef + W SE lfigpadd /E lfigpointdef + S NW lfigpadd /N lfigpointdef + NE 0.5 lfigpmul /CTR lfigpointdef + [ CTR NE lfigpsub /lfigboxcircum cvx ] lfigcircumdef + SW SE NE NW SW +} def + +% shape and labels of the @CurveBox symbol +/lfigcurvebox +{ + + xsize 0.5 mul ysize 0.5 mul /CTR lfigpointdef + xsize 0.5 mul 0 /S lfigpointdef + xsize ysize 0.5 mul /E lfigpointdef + xsize 0.5 mul ysize /N lfigpointdef + 0 ysize 0.5 mul /W lfigpointdef + + xmark 0.293 mul xmark 0.293 mul /SW lfigpointdef + xsize xmark 0.293 mul sub xmark 0.293 mul /SE lfigpointdef + xsize xmark 0.293 mul sub ysize xmark 0.293 mul sub /NE lfigpointdef + xmark 0.293 mul ysize xmark 0.293 mul sub /NW lfigpointdef + + [ xsize ysize 0.5 lfigpmul xmark /lfigcurveboxcircum cvx ] lfigcircumdef + + xmark 0 + xsize xmark sub 0 + [ xsize xmark sub xmark ] + xsize xmark + xsize ysize xmark sub + [ xsize xmark sub ysize xmark sub ] + xsize xmark sub ysize + xmark ysize + [ xmark ysize xmark sub ] + 0 ysize xmark sub + 0 xmark + [ xmark xmark ] + xmark 0 +} def + +% shadow of the @ShadowBox symbol +% its shape and labels are done, somewhat inaccurately, with lfigbox +/lfigshadow +{ xmark 2 mul 0 moveto xsize 0 lineto + xsize ysize xmark 2 mul sub lineto + xsize xmark sub ysize xmark 2 mul sub lineto + xsize xmark sub xmark lineto + xmark 2 mul xmark lineto closepath fill +} def + +% shape and labels of the @Square symbol +/lfigsquare +{ + xsize ysize 0.5 lfigpmul /CTR lfigpointdef + CTR xsize xsize ysize ysize lfigpmax 0.5 lfigpmul lfigpadd /NE lfigpointdef + CTR 0 0 CTR NE lfigdistance 135 lfigatangle lfigpadd /NW lfigpointdef + CTR 0 0 CTR NE lfigdistance 225 lfigatangle lfigpadd /SW lfigpointdef + CTR 0 0 CTR NE lfigdistance 315 lfigatangle lfigpadd /SE lfigpointdef + SW 0.5 lfigpmul SE 0.5 lfigpmul lfigpadd /S lfigpointdef + NW 0.5 lfigpmul NE 0.5 lfigpmul lfigpadd /N lfigpointdef + SW 0.5 lfigpmul NW 0.5 lfigpmul lfigpadd /W lfigpointdef + SE 0.5 lfigpmul NE 0.5 lfigpmul lfigpadd /E lfigpointdef + [ CTR NE lfigpsub /lfigboxcircum cvx ] lfigcircumdef + SW SE NE NW SW +} def + +% shape and labels of the @Diamond symbol +/lfigdiamond +{ + xsize 0 0.5 lfigpmul /S lfigpointdef + 0 ysize 0.5 lfigpmul /W lfigpointdef + S W lfigpadd /CTR lfigpointdef + CTR W lfigpadd /N lfigpointdef + CTR S lfigpadd /E lfigpointdef + [ xsize ysize 0.5 lfigpmul /lfigdiamondcircum cvx ] lfigcircumdef + S E N W S +} def + +% shape and labels of the @Ellipse symbol +/lfigellipse +{ + xsize 0 0.5 lfigpmul /S lfigpointdef + 0 ysize 0.5 lfigpmul /W lfigpointdef + S W lfigpadd /CTR lfigpointdef + CTR W lfigpadd /N lfigpointdef + CTR S lfigpadd /E lfigpointdef + CTR xsize 0 0.3536 lfigpmul lfigpadd 0 ysize 0.3536 lfigpmul lfigpadd /NE lfigpointdef + 0 ysize 0.3536 lfigpmul CTR xsize 0 0.3536 lfigpmul lfigpadd lfigpsub /SE lfigpointdef + xsize 0 0.3536 lfigpmul CTR lfigpsub 0 ysize 0.3536 lfigpmul lfigpadd /NW lfigpointdef + 0 ysize 0.3536 lfigpmul xsize 0 0.3536 lfigpmul CTR lfigpsub lfigpsub /SW lfigpointdef + [ xsize ysize 0.5 lfigpmul /lfigellipsecircum cvx ] lfigcircumdef + S [ CTR ] E [ CTR ] N [ CTR ] W [ CTR ] S +} def + +% shape and labels of the @Circle symbol +/lfigcircle +{ + xsize ysize 0.5 lfigpmul /CTR lfigpointdef + CTR xsize 0 ysize 0 lfigpmax 0.5 lfigpmul lfigpadd /E lfigpointdef + CTR 0 0 CTR E lfigdistance 45 lfigatangle lfigpadd /NE lfigpointdef + CTR 0 0 CTR E lfigdistance 90 lfigatangle lfigpadd /N lfigpointdef + CTR 0 0 CTR E lfigdistance 135 lfigatangle lfigpadd /NW lfigpointdef + CTR 0 0 CTR E lfigdistance 180 lfigatangle lfigpadd /W lfigpointdef + CTR 0 0 CTR E lfigdistance 225 lfigatangle lfigpadd /SW lfigpointdef + CTR 0 0 CTR E lfigdistance 270 lfigatangle lfigpadd /S lfigpointdef + CTR 0 0 CTR E lfigdistance 315 lfigatangle lfigpadd /SE lfigpointdef + [ S E lfigpsub /lfigellipsecircum cvx ] lfigcircumdef + S [ CTR ] E [ CTR ] N [ CTR ] W [ CTR ] S +} def + +% shape and labels of the @HLine and @HArrow symbols +/lfighline +{ + 0 ymark lfigprevious /FROM lfigpointdef + xsize ymark lfigprevious /TO lfigpointdef +} def + +% shape and labels of the @VLine and @VArrow symbols +/lfigvline +{ + xmark ysize lfigprevious /FROM lfigpointdef + xmark 0 lfigprevious /TO lfigpointdef +} def + +% points of a polygon around base with given no of sides, vert init angle: +% <sides> <angle> figpolygon <point> ... <point> +/lfigpolygon +{ xsize ysize 0.5 lfigpmul /CTR lfigpointdef + 90 sub CTR 2 copy lfigmax 5 3 roll + [ 4 copy pop /lfigpolycircum cvx ] lfigcircumdef + exch dup 360 exch div exch + 1 1 3 2 roll + { 4 string cvs (P) exch lfigconcat cvn + 6 copy pop pop lfigatangle 2 copy 10 2 roll + 3 2 roll lfigpointdef + dup 3 1 roll add exch + } for + pop lfigatangle +} def + +% next array element: <array> <index> lfiggetnext <array> <index> <any> true +% or <array> <index> false +/lfiggetnext +{ 2 copy exch length ge + { false } + { 2 copy get exch 1 add exch true } ifelse +} def + +% check whether thing is number: <any> lfigisnumbertype <any> <bool> +/lfigisnumbertype +{ dup type dup + /integertype eq exch /realtype eq or +} def + +% check whether thing is an array: <any> lfigisarraytype <any> <bool> +/lfigisarraytype { dup type /arraytype eq } def + +% get next item: <array> <index> lfiggetnextitem <array> <index> 0 +% or <array> <index> <array> 1 +% or <array> <index> <point> 2 +/lfiggetnextitem +{ lfiggetnext + { lfigisarraytype + { 1 + } + { lfigisnumbertype + { 3 1 roll + lfiggetnext + { lfigisnumbertype + { 4 3 roll exch 2 + } + { pop 3 2 roll pop 0 + } ifelse + } + { 3 2 roll pop 0 + } ifelse + } + { pop 0 + } ifelse + } ifelse + } + { 0 + } ifelse +} def + +% set arc path: bool x1 y1 x2 y2 x0 y0 lfigsetarc <angle> <angle> <dist> +% the path goes from x1 y1 to x2 y2 about centre x0 y0, +% anticlockwise if bool is true else clockwise. +% The orientations of backwards pointing and forwards pointing +% arrowheads are returned in the two angles, and +% the length of the arc is returned in <dist>. +/lfigsetarc +{ + 20 dict begin + matrix currentmatrix 8 1 roll + 2 copy translate 2 copy 8 2 roll + 4 2 roll lfigpsub 6 2 roll lfigpsub + dup /y1 exch def dup mul /y1s exch def + dup /x1 exch def dup mul /x1s exch def + dup /y2 exch def dup mul /y2s exch def + dup /x2 exch def dup mul /x2s exch def + + y1s y2s eq + { -1 + } + { y1s x2s mul y2s x1s mul sub y1s y2s sub div + } ifelse + /da exch def + + x1s x2s eq + { -1 + } + { x1s y2s mul x2s y1s mul sub x1s x2s sub div + } ifelse + /db exch def + + da 0 gt db 0 gt and + { /LMax da sqrt db sqrt lfigmax def + /scalex da sqrt LMax div def + /scaley db sqrt LMax div def + scalex scaley scale + 0 0 LMax + 0 0 x1 scalex mul y1 scaley mul lfigangle + 0 0 x2 scalex mul y2 scaley mul lfigangle + 2 copy eq { 360 add } if + 2 copy 8 2 roll + 5 index { arc } { arcn } ifelse + 2 index 1 index + { 90 sub } { 90 add } ifelse + dup sin scaley mul exch cos scalex mul atan + 2 index 2 index + { 90 add } { 90 sub } ifelse + dup sin scaley mul exch cos scalex mul atan + 5 2 roll % res1 res2 ang1 ang2 anticlockwise + { exch sub } { sub } ifelse + dup 0 le { 360 add } if lfigpi mul LMax mul 180 div + } + { 0 0 x1 y1 lfigdistance 0 0 x2 y2 lfigdistance eq + 0 0 x1 y1 lfigdistance 0 gt and + { 0 0 + 0 0 x1 y1 lfigdistance + 0 0 x1 y1 lfigangle + 0 0 x2 y2 lfigangle + 2 copy eq { 360 add } if + 2 copy 8 2 roll + 5 index { arc } { arcn } ifelse + 2 index 1 index + { 90 sub } { 90 add } ifelse + 2 index 2 index + { 90 add } { 90 sub } ifelse + 5 2 roll % res1 res2 ang1 ang2 clockwise + { exch sub } { sub } ifelse + dup 0 le { 360 add } if lfigpi mul 0 0 x1 y1 lfigdistance mul 180 div + } + { x2 y2 lineto pop + x2 y2 x1 y1 lfigangle + x1 y1 x2 y2 lfigangle + x1 y1 x2 y2 lfigdistance + } ifelse + } ifelse + 4 -1 roll setmatrix + end +} def + +% lfigsetcurve: set up a Bezier curve from x0 y0 to x3 y3 +% and return arrowhead angles and length of curve (actually 0) +% x0 y0 x1 y1 x2 y2 x3 y3 lfigsetcurve <angle> <angle> <length> +/lfigsetcurve +{ 8 copy curveto pop pop + lfigangle + 5 1 roll + 4 2 roll lfigangle + exch + 0 +} def + +% lfigpaintpath: paint a path of the given shape +% /paint [ shape ] lfigpaintpath - +/lfigpaintpath +{ + 10 dict begin + 0 newpath + /prevseen false def + /curveseen false def + { lfiggetnextitem + dup 0 eq { pop exit } + { 1 eq + { /curveseen true def + /curve exch def + curve length 0 eq { /curveseen false def } if + } + { /ycurr exch def + /xcurr exch def + prevseen + { curveseen + { curve length 4 eq + { xprev yprev + curve 0 get curve 1 get + curve 2 get curve 3 get + xcurr ycurr + lfigsetcurve pop pop pop + } + { xprev yprev xcurr ycurr + curve length 1 ge { curve 0 get } { 0 } ifelse + curve length 2 ge { curve 1 get } { 0 } ifelse + curve length 3 ge { curve 2 get } { true } ifelse + 7 1 roll + lfigsetarc pop pop pop + } ifelse + } + { xcurr ycurr lineto + } ifelse + } + { xcurr ycurr moveto + } ifelse + /xprev xcurr def + /yprev ycurr def + /prevseen true def + /curveseen false def + } ifelse + } ifelse + } loop pop pop cvx exec + end +} def + +% stroke a path of the given shape in the given linestyle and dash length. +% Return the origin and angle of the backward and forward arrow heads. +% dashlength /linestyle [shape] lfigdopath [<point> <angle>] [<point> <angle>] +/lfigdopath +{ + 10 dict begin + 0 + /prevseen false def + /curveseen false def + /backarrow [] def + /fwdarrow [] def + { + lfiggetnextitem + dup 0 eq { pop exit } + { + 1 eq + { /curveseen true def + /curve exch def + curve length 0 eq { /prevseen false def } if + } + { /ycurr exch def + /xcurr exch def + prevseen + { newpath xprev yprev moveto + curveseen + { curve length 4 eq + { xprev yprev + curve 0 get curve 1 get + curve 2 get curve 3 get + xcurr ycurr lfigsetcurve + } + { xprev yprev xcurr ycurr + curve length 1 ge { curve 0 get } { 0 } ifelse + curve length 2 ge { curve 1 get } { 0 } ifelse + curve length 3 ge { curve 2 get } { true } ifelse + 7 1 roll + lfigsetarc + } ifelse + } + { xcurr ycurr lineto + xcurr ycurr xprev yprev lfigangle dup 180 sub + xprev yprev xcurr ycurr lfigdistance + } ifelse + 6 index 6 index cvx exec + [ xprev yprev 5 -1 roll ] + backarrow length 0 eq + { /backarrow exch def } + { pop } ifelse + [ xcurr ycurr 4 -1 roll ] /fwdarrow exch def + } if + /xprev xcurr def + /yprev ycurr def + /prevseen true def + /curveseen false def + } ifelse + } ifelse + } loop + pop pop pop pop + backarrow length 0 eq { [ 0 0 0 ] } { backarrow } ifelse + fwdarrow length 0 eq { [ 0 0 0 ] } { fwdarrow } ifelse + end +} def + +% lfigdoarrow: draw an arrow head of given form +% dashlength /lstyle /pstyle hfrac height width [ <point> <angle> ] lfigdoarrow - +/lfigdoarrow +{ matrix currentmatrix 8 1 roll + dup 0 get 1 index 1 get translate + 2 get rotate + [ 2 index neg 2 index 0 0 + 3 index 3 index neg + 1 index 10 index mul 0 + 7 index 7 index ] + 4 1 roll pop pop pop + dup 3 1 roll + gsave lfigpaintpath grestore lfigdopath pop pop + setmatrix +} def + +% arrow head styles +/lfigopen 0.0 def +/lfighalfopen 0.5 def +/lfigclosed 1.0 def + +% stroke no arrows, forward, back, and both +/lfignoarrow { pop pop pop pop pop pop pop pop } def +/lfigforward { 7 -1 roll lfigdoarrow pop } def +/lfigback { 8 -2 roll pop lfigdoarrow } def +/lfigboth { 8 -1 roll 7 copy lfigdoarrow pop 7 -1 roll lfigdoarrow } def + +% lfigprevious: return previous point on path +/lfigprevious +{ lfigisnumbertype + { 2 copy } + { lfigisarraytype + { 2 index 2 index } + { 0 0 } + ifelse + } ifelse +} def + +% label a point in 2nd top dictionary: <point> /name lfigpointdef - +/lfigpointdef +{ + % (Entering lfigpointdef) lfigdebugprint + [ 4 2 roll transform + /itransform cvx ] cvx + currentdict end + 3 1 roll + % currentdict length currentdict maxlength lt + % { def } + % { exec moveto (too many labels) show stop } + % ifelse + def + begin + % (Leaving lfigpointdef) lfigdebugprint +} def + +% promote labels from second top to third top dictionary +% <string> lfigpromotelabels - +/lfigpromotelabels +{ + % (Entering lfigpromotelabels) lfigdebugprint + currentdict end exch currentdict end + { exch 20 string cvs 2 index + (@) lfigconcat exch lfigconcat cvn exch def + } forall pop begin + % (Leaving lfigpromotelabels) lfigdebugprint +} def + +% show labels (except CIRCUM): - lfigshowlabels - +/lfigshowlabels +{ + % (Entering lfigshowlabels) lfigdebugprint + currentdict end + currentdict + { 1 index 20 string cvs (CIRCUM) search % if CIRCUM in key + { pop pop pop pop pop } + { pop cvx exec 2 copy + newpath 1.5 pt 0 360 arc + 0 setgray fill + /Times-Roman findfont 8 pt scalefont setfont + moveto 0.2 cm 0.1 cm rmoveto 20 string cvs show + } + ifelse + } forall + begin + % (Leaving lfigshowlabels) lfigdebugprint +} def + +% fix an angle to 0 <= res < 360: <angle> lfigfixangle <angle> +/lfigfixangle +{ + % (Entering lfigfixangle) lfigdebugprint + { dup 0 ge { exit } if + 360 add + } loop + { dup 360 lt { exit } if + 360 sub + } loop + % (Leaving lfigfixangle) lfigdebugprint +} def + +% find point on circumference of box: alpha a b lfigboxcircum x y +/lfigboxcircum +{ + % (Entering lfigboxcircum) lfigdebugprint + 4 dict begin + /b exch def + /a exch def + lfigfixangle /alpha exch def + 0 0 a b lfigangle /theta exch def + + % if alpha <= theta, return (a, a*tan(alpha)) + alpha theta le + { a a alpha sin mul alpha cos div } + { + % else if alpha <= 180 - theta, return (b*cot(alpha), b) + alpha 180 theta sub le + { b alpha cos mul alpha sin div b } + { + % else if alpha <= 180 + theta, return (-a, -a*tan(alpha)) + alpha 180 theta add le + { a neg a neg alpha sin mul alpha cos div } + { + % else if alpha <= 360 - theta, return (-b*cot(alpha), -b) + alpha 360 theta sub le + { b neg alpha cos mul alpha sin div b neg } + { + % else 360 - theta <= alpha, return (a, a*tan(alpha)) + a a alpha sin mul alpha cos div + } ifelse + } ifelse + } ifelse + } ifelse + end + % (Leaving lfigboxcircum) lfigdebugprint +} def + +% find quadratic roots (assume a != 0): a b c lfigqroots x1 x2 2 +% or x2 1 +% or 0 +/lfigqroots +{ + 4 dict begin + /c exch def + /b exch def + /a exch def + /disc b b mul 4 a c mul mul sub def + disc 0 lt + { 0 + } + { disc 0 eq + { b neg 2 a mul div + 1 + } + { b neg disc sqrt add 2 a mul div + b neg disc sqrt sub 2 a mul div + 2 + } + ifelse + } + ifelse + end +} def + +% work our which quadrant: <angle> lfigquadrant <0-3> +/lfigquadrant +{ dup 90 lt + { pop 0 + } + { dup 180 lt + { pop 1 + } + { 270 lt + { 2 + } + { 3 + } ifelse + } ifelse + } ifelse +} def + +% find curvebox circum, assuming upper right quadrant: alpha a b xmk lfigcb x y +/lfigcb +{ + 6 dict begin + /xmk exch def + /b exch def + /a exch def + /alpha exch def + /theta1 0 0 a b xmk sub lfigangle def + /theta2 0 0 a xmk sub b lfigangle def + alpha theta1 le + { % if alpha <= theta1, return (a, a*tan(alpha)) + a a alpha sin mul alpha cos div + } + { alpha theta2 ge + { % else if alpha > theta2, return (b*cot(alpha), b) + b alpha cos mul alpha sin div b + } + { + % else, return the intersection of line and circle + a xmk sub b xmk sub xmk 0 0 alpha lfigcircleintersect + dup 0 eq + { % should never happen, just return any reasonable point + pop + a b 0.5 lfigpmul + } + { 1 eq + { % should never happen, just return the point on top of stack + } + { % the usual case, two points on stack, return the larger + lfigpmax + } ifelse + } ifelse + } ifelse + } ifelse + end +} def + +% find point on circumference of curvebox: alpha a b xmk lfigcurveboxcircum x y +/lfigcurveboxcircum +{ + % (Entering lfigcurveboxcircum) lfigdebugprint + 5 dict begin + /xmk exch def + /b exch def + /a exch def + lfigfixangle /alpha exch def + + % work out which quadrant we are in, and reflect accordingly + /quad alpha lfigquadrant def + quad 0 eq + { alpha a b xmk lfigcb + } + { quad 1 eq + { 180 alpha sub a b xmk lfigcb exch neg exch + } + { quad 2 eq + { alpha 180 sub a b xmk lfigcb neg exch neg exch + } + { 360 alpha sub a b xmk lfigcb neg + } ifelse + } ifelse + } ifelse + end + % (Leaving lfigcurveboxcircum) lfigdebugprint +} def + +% find point on circumference of diamond: alpha a b lfigdiamondcircum x y +/lfigdiamondcircum +{ + % (Entering lfigdiamondcircum) lfigdebugprint + 4 dict begin + /b exch def + /a exch def + lfigfixangle /alpha exch def + b alpha cos abs mul a alpha sin abs mul add /denom exch def + a b mul alpha cos mul denom div + a b mul alpha sin mul denom div + end + % (Leaving lfigdiamondcircum) lfigdebugprint +} def + +% find point on circumference of ellipse: alpha a b lfigellipsecircum x y +/lfigellipsecircum +{ + % (Entering lfigellipsecircum) lfigdebugprint + 4 dict begin + /b exch def + /a exch def + lfigfixangle /alpha exch def + b alpha cos mul dup mul a alpha sin mul dup mul add sqrt /denom exch def + a b mul alpha cos mul denom div + a b mul alpha sin mul denom div + end + % (Leaving lfigellipsecircum) lfigdebugprint +} def + +% find point of intersection of two lines each defined by two points +% x1 y1 x2 y2 x3 y3 x4 y4 lfiglineintersect x y +/lfiglineintersect +{ + % (Entering lfiglineintersect) lfigdebugprint + 13 dict begin + /y4 exch def + /x4 exch def + /y3 exch def + /x3 exch def + /y2 exch def + /x2 exch def + /y1 exch def + /x1 exch def + x2 x1 sub /x21 exch def + x4 x3 sub /x43 exch def + y2 y1 sub /y21 exch def + y4 y3 sub /y43 exch def + y21 x43 mul y43 x21 mul sub /det exch def + + % calculate x + y21 x43 mul x1 mul + y43 x21 mul x3 mul sub + y3 y1 sub x21 mul x43 mul add + det div + + % calculate y + x21 y43 mul y1 mul + x43 y21 mul y3 mul sub + x3 x1 sub y21 mul y43 mul add + det neg div + + end + % (Leaving lfiglineintersect) lfigdebugprint +} def + +% find point on circumference of polygon +% alpha radius num theta lfigpolycircum x y +/lfigpolycircum +{ + % (Entering lfigpolycircum) lfigdebugprint + 13 dict begin + /theta exch def + /num exch def + /radius exch def + /alpha exch def + + % calculate delta, the angle from theta to alpha + alpha theta sub lfigfixangle + + % calculate the angle which is the multiple of 360/num closest to delta + 360 num div div truncate 360 num div mul theta add /anglea exch def + + % calculate the next multiple of 360/num after anglea + anglea 360 num div add /angleb exch def + + % intersect the line through these two points with the alpha line + anglea cos anglea sin angleb cos angleb sin + 0 0 alpha cos 2 mul alpha sin 2 mul + lfiglineintersect radius lfigpmul + + end + % (Leaving lfigpolycircum) lfigdebugprint +} def + +% find point of intersection of a point and a circle +% x0 y0 r x1 y1 theta lfigcircleintersect xa ya xb yb 2 +% or xb yb 1 +% or 0 +/lfigcircleintersect +{ + % (Entering lfigcircleintersect) lfigdebugprint + 15 dict begin + /theta exch def + /y1 exch def + /x1 exch def + /r exch def + /y0 exch def + /x0 exch def + + % if sin(theta) = 0 then line is horizontal and y must be y1 + theta sin abs 0.00001 lt + { + /a 1 def + /b -2 x0 mul def + /c x0 dup mul y1 y0 sub dup mul add r dup mul sub def + a b c lfigqroots dup + 0 eq + { pop + 0 + } + { 1 eq + { y1 1 + } + { y1 exch y1 2 + } ifelse + } ifelse + } + { + /ct theta cos theta sin div def + /a ct ct mul 1 add def + /b ct x1 x0 sub mul y1 add y0 sub 2 mul def + /c x1 x0 sub dup mul y1 y0 sub dup mul add r dup mul sub def + a b c lfigqroots dup + 0 eq + { pop + 0 + } + { 1 eq + { y1 add /yb exch def + yb y1 sub ct mul x1 add /xb exch def + xb yb 1 + } + { y1 add /ya exch def + ya y1 sub ct mul x1 add /xa exch def + y1 add /yb exch def + yb y1 sub ct mul x1 add /xb exch def + xa ya xb yb 2 + } ifelse + } ifelse + } ifelse + end + % (Leaving lfigcircleintersect) lfigdebugprint +} def + +% add CIRCUM operator with this body: <array> lfigcircumdef - +/lfigcircumdef +{ % (Entering lfigcircumdef) lfigdebugprint + /CIRCUM exch cvx + currentdict end + 3 1 roll + % currentdict length currentdict maxlength lt + % { def } + % { exec moveto (too many labels) show stop } + % ifelse + def + begin + % (Leaving lfigcircumdef) lfigdebugprint +} def + +end +%%EndResource + +%%BeginResource: procset LoutGraphPrependGraphic +% @PrependGraphic file /export/home/6monthspace/jeff/lout.lib/include/graphf.lpg +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % +% PostScript @SysPrependGraphic file for @Graph (Version 1.0) % +% % +% Version 1.0 by Jeffrey H. Kingston, December 1993. % +% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +errordict begin + /handleerror + { + { /Times-Roman findfont 8 pt scalefont setfont + 0 setgray 4 pt 4 pt moveto + $error /errorname get + dup lgraphdict exch known + { lgraphdict exch get } + { 30 string cvs } ifelse + show + ( Command: ) show + $error /command get 30 string cvs show + } stopped {} if + showpage stop + } def +end + +/lgraphdict 200 dict def +lgraphdict begin + +% error messages +/dictfull (dictfull error) def +/dictstackoverflow (dictstackoverflow error) def +/execstackoverflow (execstackoverflow error: expression too complex?) def +/limitcheck (limitcheck error: graph too complex or too large?) def +/syntaxerror (syntaxerror error: syntax error in text of graph?) def +/typecheck (typecheck error: syntax error in text of graph?) def +/undefined (undefined error: unknown or misspelt symbol?) def +/rangecheck (rangecheck error: undefined expression (e.g. divide by zero)?) def +/VMError (VMError error: run out of memory?) def + +% random number between x and y inclusive: x y dorand num +/dorand { 1 index sub 1 add rand exch mod add } def + +% log to given base: base num dolog num +/dolog { ln exch ln div } def + +% maximum of two numbers: <num> <num> max <num> +/max { 2 copy gt { pop } { exch pop } ifelse } def + +% add two points: <point> <point> padd <point> +/padd { exch 3 1 roll add 3 1 roll add exch } def + +% subtract first point from second: <point> <point> psub <point> +/psub { 3 2 roll sub 3 1 roll exch sub exch } def + +% distance between two points: <point> <point> distance <length> +/distance { psub dup mul exch dup mul add sqrt } def + +% point at angle and distance: <point> <length> <angle> atangle <point> +/atangle { 2 copy cos mul 3 1 roll sin mul padd } def + +% angle from one point to another: <point> <point> angle <angle> +/angle { psub 2 copy 0 eq exch 0 eq and {pop} {exch atan} ifelse } def + + +% set up for line +% - linesetup <length> <dashlength> +/linesetup +{ newpath + xcurr ycurr trpoint xprev yprev trpoint + 4 copy moveto lineto distance dashlength +} def + +% set up for icon-avoiding line +% - ilinesetup <length> <dashlength> +/ilinesetup +{ newpath + xprev yprev trpoint xcurr ycurr trpoint 4 copy + 4 copy angle symbolsize 1.5 mul exch 4 2 roll pop pop atangle + 6 2 roll 4 2 roll + 4 copy angle symbolsize 1.5 mul exch 4 2 roll pop pop atangle + 4 copy moveto lineto distance dashlength +} def + + +% stroke a solid line: <length> <dashlength> solid - +/solid +{ pop pop [] 0 setdash linewidth setlinewidth stroke +} def + +% stroke a dashed line: <length> <dashlength> dashed - +/dashed +{ 2 copy 2 mul le 1 index 0 le or + { exch pop 1 pt max [ exch dup ] 0 setdash } + { dup [ exch 4 2 roll 2 copy div + 1 sub 2 div ceiling dup 4 1 roll + 1 add mul sub exch div ] 0 setdash + } ifelse linewidth setlinewidth stroke +} def + +% stroke a cdashed line: <length> <dashlength> cdashed - +/cdashed +{ 2 copy le 1 index 0 le or + { exch pop 1 pt max [ exch dup ] dup 0 get 2 div setdash } + { dup [ 4 2 roll exch 2 copy exch div + 2 div ceiling div 1 index sub + ] exch 2 div setdash + } ifelse linewidth setlinewidth stroke +} def + +% stroke a dotted line: <length> <dashlength> dotted - +/dotted +{ 2 copy le 1 index 0 le or + { exch pop 1 pt max [ exch 0 exch ] 0 setdash } + { 1 index exch div ceiling div 0.99999 mul + [ 0 3 2 roll ] 0 setdash + } ifelse gsave 1 setlinecap linewidth setlinewidth stroke grestore newpath +} def + +% stroke a noline line: <length> <dashlength> noline - +/noline +{ pop pop +} def + +% stroke a y histogram: - yhisto - +/yhisto +{ xprev yleft trpoint yextra sub moveto + xprev yprev trpoint lineto + xcurr yprev trpoint lineto + xcurr yleft trpoint yextra sub lineto + linewidth setlinewidth stroke +} def + +% stroke an x histogram: - xhisto - +/xhisto +{ xleft yprev trpoint exch xextra sub exch moveto + xcurr yprev trpoint lineto + xcurr ycurr trpoint lineto + xleft ycurr trpoint exch xextra sub exch lineto + linewidth setlinewidth stroke +} def + +% stroke a surface y histogram: - surfaceyhisto - +/surfaceyhisto +{ firstpair + { xprev yleft trpoint yextra sub moveto + xprev yprev trpoint lineto + } + { xprev yprev trpoint moveto + } ifelse + xcurr yprev trpoint lineto + lastpair + { xcurr yleft trpoint yextra sub lineto + } + { xcurr ycurr trpoint lineto + } ifelse + linewidth setlinewidth stroke +} def + +% stroke a surface x histogram: - surfacexhisto - +/surfacexhisto +{ firstpair + { xleft yprev trpoint exch xextra sub exch moveto + } + { xprev yprev trpoint moveto + } ifelse + xcurr yprev trpoint lineto + xcurr ycurr trpoint lineto + lastpair + { xleft ycurr trpoint exch xextra sub exch lineto + } if + linewidth setlinewidth stroke +} def + +% stroke a filled y histogram: - filledyhisto - +/filledyhisto +{ + linewidth setlinewidth + xprev yleft trpoint exch currentlinewidth 2 div add exch yextra sub moveto + xprev yprev trpoint exch currentlinewidth 2 div add exch lineto + xcurr yprev trpoint exch currentlinewidth 2 div sub exch lineto + xcurr yleft trpoint exch currentlinewidth 2 div sub exch yextra sub lineto + closepath fill +} def + +% stroke a filled x histogram: - filledxhisto - +/filledxhisto +{ + linewidth setlinewidth + xleft yprev trpoint currentlinewidth 2 div add exch xextra sub exch moveto + xcurr yprev trpoint currentlinewidth 2 div add lineto + xcurr ycurr trpoint currentlinewidth 2 div sub lineto + xleft ycurr trpoint currentlinewidth 2 div sub exch xextra sub exch lineto + closepath fill +} def + + +% cross: show a small cross +/cross +{ newpath + xcurr ycurr trpoint moveto + symbolsize neg symbolsize neg rmoveto + symbolsize 2 mul symbolsize 2 mul rlineto + 0 symbolsize -2 mul rmoveto + symbolsize -2 mul symbolsize 2 mul rlineto + [] 0 setdash stroke +} def + +% plus: show a small plus +/plus +{ newpath + xcurr ycurr trpoint moveto + symbolsize neg 0 rmoveto + symbolsize 2 mul 0 rlineto + symbolsize neg symbolsize neg rmoveto + 0 symbolsize 2 mul rlineto + [] 0 setdash stroke +} def + +% square: show a small square +/square +{ newpath + xcurr ycurr trpoint moveto + symbolsize neg symbolsize neg rmoveto + symbolsize 2 mul 0 rlineto + 0 symbolsize 2 mul rlineto + symbolsize -2 mul 0 rlineto + closepath [] 0 setdash stroke +} def + +% filledsquare: show a small filled square +/filledsquare +{ newpath + xcurr ycurr trpoint moveto + symbolsize neg symbolsize neg rmoveto + symbolsize 2 mul 0 rlineto + 0 symbolsize 2 mul rlineto + symbolsize -2 mul 0 rlineto + closepath gsave [] 0 setdash stroke grestore fill +} def + +% diamond: show a small diamond +/diamond +{ newpath + xcurr ycurr trpoint moveto + symbolsize neg 0 rmoveto + symbolsize symbolsize neg rlineto + symbolsize symbolsize rlineto + symbolsize neg symbolsize rlineto + closepath [] 0 setdash stroke +} def + +% filleddiamond: show a small filled diamond +/filleddiamond +{ newpath + xcurr ycurr trpoint moveto + symbolsize neg 0 rmoveto + symbolsize symbolsize neg rlineto + symbolsize symbolsize rlineto + symbolsize neg symbolsize rlineto + closepath gsave [] 0 setdash stroke grestore fill +} def + +% circle: show a small circle +/circle +{ newpath + xcurr ycurr trpoint symbolsize 0 360 arc [] 0 setdash stroke +} def + +% filledcircle: show a small filled circle +/filledcircle +{ newpath + xcurr ycurr trpoint symbolsize 0 360 arc gsave [] 0 setdash stroke grestore fill +} def + +% triangle: show a small triangle +/triangle +{ newpath + xcurr ycurr trpoint moveto + 0 symbolsize 1.5 mul rmoveto + symbolsize neg symbolsize -2.5 mul rlineto + symbolsize 2 mul 0 rlineto + closepath [] 0 setdash stroke +} def + +% filledtriangle: show a small filled triangle +/filledtriangle +{ newpath + xcurr ycurr trpoint moveto + 0 symbolsize 1.5 mul rmoveto + symbolsize neg symbolsize -2.5 mul rlineto + symbolsize 2 mul 0 rlineto + closepath gsave [] 0 setdash stroke grestore fill +} def + + +%plog: like log only with a base, and protected from failing if <= 0 +% base x plog res +/plog { dup 0 le { pop pop 0 } { ln exch ln div } ifelse } def + +% xtr: transform one x value logarithmically if xlog > 1 +% <num> xtr <num> +/xtr +{ xlog 1 gt + { xlog exch plog + } if +} def + +% ytr: transform one y value logarithmically if ylog > 1 +% <num> ytr <num> +/ytr +{ ylog 1 gt + { ylog exch plog + } if +} def + +% % trpoint: transform (x, y) in graph space into (x', y') in print space +% % x y trpoint x' y' +% /trpoint +% { exch xtr trxmin sub trxmax trxmin sub div xwidth mul xextra add +% exch ytr trymin sub trymax trymin sub div ywidth mul yextra add +% } def + + +% trpoint: transform (x, y) in graph space into (x', y') in print space +% x y trpoint x' y' +/trpoint +{ exch xtr xdecr { trxmax exch sub } { trxmin sub } ifelse + trxmax trxmin sub div xwidth mul xextra add + + exch ytr ydecr { trymax exch sub } { trymin sub } ifelse + trymax trymin sub div ywidth mul yextra add +} def + + +% yonly: interpolate x values 1, 2, ... into data +% [ data ] yonly [ newdata ] +/yonly +{ dup /tmp exch def + length [ exch 1 exch 1 exch + { dup tmp exch 1 sub get + } for + ] +} def + +% xonly: interpolate y values 1, 2, ... into data +% [ data ] yonly [ newdata ] +/xonly +{ dup /tmp exch def + length [ exch 1 exch 1 exch + { dup tmp exch 1 sub get exch + } for + ] +} def + +% xandy: no interpolation of x or y values +% [ data ] xandy [ data ] +/xandy {} def + + +% expstringwidth: calculate width of string containing optional exponent +% <string> expstringwidth <width> +/expstringwidth +{ (^) search + { exch pop stringwidth pop exch stringwidth pop 0.7 mul add } + { stringwidth pop } + ifelse +} def + +% expstringshow: show string containing optional exponent +% <string> expstringshow - +/expstringshow +{ (^) search + { exch pop show 0 0.5 ft rmoveto + gsave currentfont 0.7 scalefont setfont show grestore + } + { show + } + ifelse +} def + +% concatenate two strings: <string> <string> strconcat <string> +/strconcat +{ 2 copy length exch length add string + dup 0 4 index putinterval + dup 3 index length 3 index putinterval + 3 1 roll pop pop +} def + +% lgen: generate one label automatically +% num lgen num string +/lgen { dup 20 string cvs } def + +% loglgen: generate one logarithmic label (with exponent) +% <base> <exponent> loglgen <string> +/loglgen +{ 20 string cvs exch 20 string cvs + (^) strconcat exch strconcat +} def + + +% printxtick: print one x tick +% xpos printxtick - +/printxtick +{ newpath + yleft trpoint moveto 0 yextra neg rmoveto + 0 xticklength neg rlineto [] 0 setdash stroke +} def + +% printxlabel: print one x label +% (xlabel) xpos printxlabel - +/printxlabel +{ yleft trpoint moveto 0 yextra neg rmoveto + 0 xticklength neg rmoveto 0 0.9 ft neg rmoveto + xlog 1 gt { 0 0.3 ft neg rmoveto } if + dup expstringwidth -2 div 0 rmoveto expstringshow +} def + +% printytick: print one y tick +% ypos printytick - +/printytick +{ newpath + xleft exch trpoint moveto xextra neg 0 rmoveto + yticklength neg 0 rlineto [] 0 setdash stroke +} def + +% printylabel: print one y label +% (ylabel) ypos printylabel - +/printylabel +{ xleft exch trpoint moveto xextra neg 0 rmoveto + yticklength neg 0 rmoveto -0.3 ft -0.3 ft rmoveto + dup expstringwidth neg 0 rmoveto expstringshow +} def + +% printrtick: print one r tick +% ypos printrtick - +/printrtick +{ newpath + xright exch trpoint moveto xextra 0 rmoveto + rticklength 0 rlineto [] 0 setdash stroke +} def + +% printrlabel: print one r label +% (rlabel) ypos printrlabel - +/printrlabel +{ xright exch trpoint moveto xextra 0 rmoveto + rticklength 0 rmoveto 0.3 ft -0.3 ft rmoveto + expstringshow +} def + +% printticks: print ticks and labels +% /tickproc /labelproc [ tickandlabeldata ] min printticks - +/printticks +{ /prev exch def + { dup type dup dup /integertype eq exch /realtype eq or + { pop dup /prev exch def 2 index cvx exec + } + { /stringtype eq + { prev 2 index cvx exec + } + { pop + } ifelse + } ifelse + } forall + pop pop +} def + + +% printxaxistick: print one x axis tick +% xpos printxaxistick - +/printxaxistick +{ newpath + yaxis trpoint moveto 0 xticklength -2 div rmoveto + 0 xticklength rlineto [] 0 setdash stroke +} def + +% printxaxislabel: print one x axis label +% (xlabel) xpos printxaxislabel - +/printxaxislabel +{ yaxis trpoint moveto + 0 xticklength -2 div rmoveto 0 0.9 ft neg rmoveto + xlog 1 gt { 0 0.3 ft neg rmoveto } if + dup expstringwidth -2 div 0 rmoveto expstringshow +} def + +% printyaxistick: print one y axis tick +% ypos printyaxistick - +/printyaxistick +{ newpath + xaxis exch trpoint moveto + yticklength -2 div 0 rmoveto + yticklength 0 rlineto [] 0 setdash stroke +} def + +% printyaxislabel: print one y axis label +% (ylabel) ypos printyaxislabel - +/printyaxislabel +{ xaxis exch trpoint moveto + yticklength -2 div 0 rmoveto -0.3 ft -0.3 ft rmoveto + dup expstringwidth neg 0 rmoveto expstringshow +} def + + +% <val> minmax - +% perform minv := min(minv, val); maxv := max(maxv, val) +% allowing for the possibility of minv, maxv, val being false (undefined) +/minmax +{ dup false eq + { pop } + { minv false eq + { dup /minv exch def /maxv exch def } + { dup minv lt + { /minv exch def } + { dup maxv gt + { /maxv exch def } + { pop } + ifelse + } ifelse + } ifelse + } ifelse +} def + +% <ticks> ticksundef <ticks> <bool> +% returns true iff the ticks array is undefined (one false entry) +/ticksundef +{ dup length 1 eq + { dup 0 get false eq + } + { false } + ifelse +} def + +% <number> integral <boolean> +% true if the number has an integral value +/integral { dup round eq } def + +% ticksep ticks xory alldata minval maxval axis base ticksandlimits ticks min max base +% ticksandlimits: sort out value of x or y ticks and limits and log base +/ticksandlimits +{ /base exch def + /minv false def + /maxv false def + + % min and max of user-supplied minval, maxval, and axis + minmax minmax minmax + + % min and max of data points + { 0 get dup dup length 1 sub 3 index exch 2 exch + { get minmax dup + } for pop pop + } forall + pop dup + + % min and max of tick values + { dup type /stringtype eq + { pop } { minmax } ifelse + } forall + + % fix minv and maxv if undefined (false) or equal + minv false eq + { /minv -1 def /maxv 1 def } + { minv maxv eq + { minv 0 lt + { /minv 2 minv mul def /maxv 0 def + } + { minv 0 eq + { /minv -1 def /maxv 1 def + } + { /minv 0 def /maxv 2 maxv mul def + } ifelse + } ifelse + } if + } ifelse + + % invent ticks if undefined + ticksundef + { pop /ticksep exch def + + % if base is reasonable and minv is positive, logarithmic ticks + base 1 gt minv 0 gt and + { + % get integral log of minv and maxv + /logminv base minv plog floor cvi def + /logmaxv base maxv plog ceiling cvi def + + % if minv close to base, make it 1; reset minv and maxv + logminv 1 eq logmaxv 4 ge and { /logminv 0 def } if + /minv base logminv exp def + /maxv base logmaxv exp def + + % ticks := [ base**logminv, ... , base**logmaxv ] + [ logminv 1 logmaxv + { dup base exch exp + exch base exch loglgen + } for + ] + } + { % non-logarithmic ticks + { + % fix tick separation if undefined (0) or too small + /base 0 def + /delta maxv minv sub def + ticksep delta 30 div le + { /ticksep 10 delta log 1 sub ceiling exp def + ticksep delta 2 div ge + { /ticksep ticksep 2 div def } + { ticksep delta 5 div lt + { /ticksep 2 ticksep mul def + } if + } ifelse + } if + + % adjust minv and maxv to be multiples of ticksep + /minv minv ticksep div floor ticksep mul def + /maxv maxv ticksep div ceiling ticksep mul def + /delta maxv minv sub def + + % if minv or maxv near zero, move to zero and redo + minv ticksep eq + { /minv 0 def } + { maxv ticksep neg eq { /maxv 0 def } { exit } ifelse + } ifelse + } loop + + % if minv, maxv, and ticksep are all integral, set "makeint" to true + /makeint minv integral maxv integral ticksep integral and and def + + % ticks := [ minv, minv+ticksep, ... , maxv ] + [ 0 1 delta ticksep div round + { ticksep mul minv add makeint { cvi } if lgen } + for + ] + } ifelse + } + { exch pop + } ifelse + minv maxv base +} def + +% xset: set up all data for x axis, including limits and ticks +% xticksep xticks 0 alldata xmin xmax xlog xextra xdecr xaxis xticklength xset - +/xset +{ /xticklength exch def + /xaxis exch def + /xdecr exch def + /xextra exch def + xaxis exch ticksandlimits + /xlog exch def /xmax exch def /xmin exch def /xticks exch def + /xleft xdecr { xmax } { xmin } ifelse def + /xright xdecr { xmin } { xmax } ifelse def + /xwidth xsize xextra 2 mul sub def + /trxmin xmin xtr def /trxmax xmax xtr def +} def + +% yset: set up all data for y axis, including limits and yticks +% yticksep yticks 0 alldata ymin ymax ylog yextra ydecr yaxis yticklength yset - +/yset +{ /yticklength exch def + /yaxis exch def + /ydecr exch def + /yextra exch def + yaxis exch ticksandlimits + /ylog exch def /ymax exch def /ymin exch def /yticks exch def + /yleft ydecr { ymax } { ymin } ifelse def + /yright ydecr { ymin } { ymax } ifelse def + /ywidth ysize yextra 2 mul sub def + /trymin ymin ytr def /trymax ymax ytr def +} def + +% rset: set up all data for y axis (again), but including limits and rticks +% rticksep rticks 0 alldata ymin ymax ylog yextra ydecr yaxis rticklength rset - +/rset +{ /rticklength exch def + /yaxis exch def + /ydecr exch def + /yextra exch def + yaxis exch ticksandlimits + /ylog exch def /ymax exch def /ymin exch def /rticks exch def + /yleft ydecr { ymax } { ymin } ifelse def + /yright ydecr { ymin } { ymax } ifelse def + /ywidth ysize yextra 2 mul sub def + /trymin ymin ytr def /trymax ymax ytr def +} def + +% norset: set up data for no rticks +% - norset - +/norset +{ /rticklength 0 def + /rticks [] def +} def + +% framestyle: print a frame around the graph +/framestyle +{ 0 0 moveto xsize 0 lineto xsize ysize lineto + 0 ysize lineto closepath stroke + /printxtick /printxlabel xticks xleft printticks + /printytick /printylabel yticks ymin printticks + /printrtick /printrlabel rticks ymin printticks +} def + +% nonestyle: print nothing around the graph +/nonestyle +{ +} def + +% axesstyle: print axes for the graph (unless axis values missing) +/axesstyle +{ + xaxis false eq yaxis false eq or + { framestyle } + { xaxis yaxis trpoint dup 0 exch moveto xsize exch lineto + dup 0 moveto ysize lineto stroke + /printxaxistick /printxaxislabel xticks xleft printticks + /printyaxistick /printyaxislabel yticks ymin printticks + } ifelse +} def + +% rundata: run all data sets +/rundata +{ alldata + { gsave + dup dup dup dup + 4 get /dopaint exch def + 3 get /initrun exch def + 2 get /pairs exch def + 1 get /points exch def + 0 get /data exch def + dopaint + { data length 4 ge + { initrun + newpath + data 0 get ymin trpoint yextra sub moveto + 0 2 data length 2 sub + { dup 1 add + data exch get /ycurr exch def + data exch get /xcurr exch def + xcurr ycurr trpoint lineto + } for + data dup length 2 sub get ymin trpoint yextra sub lineto + closepath fill + } if + } if + initrun + data length 2 ge + { + /xcurr data 0 get def + /ycurr data 1 get def + points + data length 4 ge + { 2 2 data length 2 sub + { /xprev xcurr def + /yprev ycurr def + dup dup 2 eq /firstpair exch def + data length 2 sub eq /lastpair exch def + dup 1 add + data exch get /ycurr exch def + data exch get /xcurr exch def + pairs + points + } for + } if + } if + grestore + } forall +} def + +end +%%EndResource + +%%BeginResource: procset LoutFigPrependGraphic +% @PrependGraphic file /export/home/6monthspace/jeff/lout.lib/include/diagf.lpg +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % +% PostScript @SysPrependGraphic file for @Diag Jeffrey H. Kingston % +% Version 2.0 (includes CIRCUM label) September 1996 % +% % +% To assist in avoiding name clashes, the names of all symbols % +% defined here begin with "ldiag". However, this is not feasible % +% with user-defined labels and some labels used by users. % +% % +% <point> is two numbers, a point. % +% <length> is one number, a length % +% <angle> is one number, an angle in degrees % +% <dashlength> is one number, the preferred length of a dash % +% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +errordict begin + /handleerror + { + { /Times-Roman findfont 8 pt scalefont setfont + 0 setgray 4 pt 4 pt moveto + $error /errorname get + dup ldiagdict exch known + { ldiagdict exch get } + { 50 string cvs } ifelse + show + ( Command: ) show + $error /command get 50 string cvs show + } stopped {} if + showpage stop + } def +end + +% begin diagram: <maxlabels> ldiagbegin - +% must be defined outside ldiagdict since it loads it +/ldiagbegin +{ xsize 0 0 ysize ldiagdict begin + 5 -1 roll /ldiagmaxlabels exch def + (@Diag) ldiagpushtagdict + /OOY ldiagpointdef /OOX ldiagpointdef 0 0 /OOO ldiagpointdef +} def + +% end diagram: - ldiagend - +/ldiagend +{ ldiagpoptagdict end +} def + +% concat strings: <string> <string> ldiagconcat <string> +% must be defined outside ldiagdict since used in ldiagpromotelabels +/ldiagconcat +{ 2 copy length exch length add string + dup 0 4 index putinterval + dup 3 index length 3 index putinterval + 3 1 roll pop pop +} def + +/ldiagdebugposy 432 def +/ldiagdebugposx 72 def + +% <string> <int> ldiagdebugprint - +% must be defined outside ldiagdict since used in arbitrary places +% print count or <int> stack entries, which ever is the smaller +/ldiagdebugprint +{ + exch + gsave + initgraphics + ldiagdebugposy 72 lt + { /ldiagdebugposx ldiagdebugposx 144 add store + /ldiagdebugposy 432 store + } + { + /ldiagdebugposy ldiagdebugposy 12 sub store + } ifelse + ldiagdebugposx ldiagdebugposy moveto + /Times-Roman findfont 10 scalefont setfont + 0 setgray show + count 1 sub 2 copy lt { pop } { exch pop } ifelse 1 sub + 0 exch 1 exch + { + /ldiagdebugposy ldiagdebugposy 12 sub store + ldiagdebugposx 12 add ldiagdebugposy moveto + index 50 string cvs show + } for + grestore +} def + +/ldiagdict 200 dict def +ldiagdict begin + +% error messages +/dictfull (dictfull error: too many labels?) def +/dictstackoverflow (dictstackoverflow error: labels nested too deeply?) def +/execstackoverflow (execstackoverflow error: figure nested too deeply?) def +/limitcheck (limitcheck error: figure nested too deeply or too large?) def +/syntaxerror (syntaxerror error: syntax error in text of figure?) def +/typecheck (typecheck error: syntax error in text of figure?) def +/undefined (undefined error: unknown or misspelt label?) def +/VMError (VMError error: run out of memory?) def + +% push pi onto stack: - ldiagpi <num> +/ldiagpi 3.14159 def + +% push e onto stack: - ldiage <num> +/ldiage 2.71828 def + +% arc directions +/clockwise false def +/anticlockwise true def + +% test equality between two angles: <angle> <angle> ldiagangleeq <bool> +/ldiagangleeq { ldiagfixangle exch ldiagfixangle eq } def + +% test inequality between two angles: <angle> <angle> ldiaganglene <bool> +/ldiaganglene { ldiagangleeq not } def + +% maximum of two numbers: <num> <num> ldiagmax <num> +/ldiagmax { 2 copy gt { pop } { exch pop } ifelse } def + +% minimum of two numbers: <num> <num> ldiagmin <num> +/ldiagmin { 2 copy lt { pop } { exch pop } ifelse } def + +% add two points: <point> <point> ldiagpadd <point> +/ldiagpadd +{ + % (Entering padd) 4 ldiagdebugprint + exch 3 1 roll add 3 1 roll add exch + % (Leaving padd) 2 ldiagdebugprint +} def + +% subtract first point from second: <point> <point> ldiagpsub <point> +/ldiagpsub { 3 2 roll sub 3 1 roll exch sub exch } def + +% max two points: <point> <point> ldiagpmax <point> +/ldiagpmax { exch 3 1 roll ldiagmax 3 1 roll ldiagmax exch } def + +% min two points: <point> <point> ldiagpmin <point> +/ldiagpmin { exch 3 1 roll ldiagmin 3 1 roll ldiagmin exch } def + +% scalar multiplication: <point> <num> ldiagpmul <point> +/ldiagpmul { dup 3 1 roll mul 3 1 roll mul exch } def + +% point at angle and distance: <point> <length> <angle> ldiagatangle <point> +/ldiagatangle { 2 copy cos mul 3 1 roll sin mul ldiagpadd } def + +% angle from one point to another: <point> <point> ldiagangleto <angle> +/ldiagangleto { ldiagpsub 2 copy 0 eq exch 0 eq and {pop} {exch atan} ifelse } def + +% distance between two points: <point> <point> ldiagdistance <length> +/ldiagdistance { ldiagpsub dup mul exch dup mul add sqrt } def + +% stroke a solid line: <length> <dashlength> ldiagsolid - +/ldiagsolid +{ pop pop [] 0 setdash 1 setlinecap stroke +} def + +% stroke a dashed line: <length> <dashlength> ldiagdashed - +/ldiagdashed +{ 2 copy div 2 le 1 index 0 le or + { exch pop 1 pt ldiagmax [ exch dup ] 0 setdash } + { dup [ exch 4 2 roll 2 copy div + 1 sub 2 div ceiling dup 4 1 roll + 1 add mul sub exch div ] 0 setdash + } ifelse 0 setlinecap stroke +} def + +% stroke a cdashed line: <length> <dashlength> ldiagcdashed - +/ldiagcdashed +{ % (Entering ldiagcdashed) 2 ldiagdebugprint + 2 copy le 1 index 0 le or + { exch pop 1 pt ldiagmax [ exch dup ] dup 0 get 2 div setdash } + { dup [ 4 2 roll exch 2 copy exch div + 2 div ceiling div 1 index sub + ] exch 2 div setdash + } ifelse 0 setlinecap stroke + % (Leaving ldiagcdashed) 0 ldiagdebugprint +} def + +% stroke a dotted line: <length> <dashlength> ldiagdotted - +/ldiagdotted +{ 2 copy le 1 index 0 le or + { exch pop 1 pt ldiagmax [ exch 0 exch ] 0 setdash } + { 1 index exch div ceiling div + [ 0 3 2 roll ] 0 setdash + } ifelse 1 setlinecap stroke +} def + +% stroke a noline line: <length> <dashlength> ldiagnoline - +/ldiagnoline +{ pop pop +} def + +% painting (i.e. filling): - ldiagwhite - (etc.) +/ldiagnopaint { } def +/ldiagnochange { fill } def +/ldiagdarkblue { 0.0 0.0 0.5 setrgbcolor fill } def +/ldiagblue { 0.0 0.0 1.0 setrgbcolor fill } def +/ldiaglightblue { 0.5 0.5 1.0 setrgbcolor fill } def +/ldiagdarkgreen { 0.0 0.5 0.0 setrgbcolor fill } def +/ldiaggreen { 0.0 1.0 0.0 setrgbcolor fill } def +/ldiaglightgreen { 0.5 1.0 0.5 setrgbcolor fill } def +/ldiagdarkred { 0.5 0.0 0.0 setrgbcolor fill } def +/ldiagred { 1.0 0.0 0.0 setrgbcolor fill } def +/ldiaglightred { 1.0 0.5 0.5 setrgbcolor fill } def +/ldiagdarkcyan { 0.0 0.5 0.5 setrgbcolor fill } def +/ldiagcyan { 0.0 1.0 1.0 setrgbcolor fill } def +/ldiaglightcyan { 0.5 1.0 1.0 setrgbcolor fill } def +/ldiagdarkmagenta { 0.5 0.0 0.5 setrgbcolor fill } def +/ldiagmagenta { 1.0 0.0 1.0 setrgbcolor fill } def +/ldiaglightmagenta { 1.0 0.5 1.0 setrgbcolor fill } def +/ldiagdarkyellow { 0.5 0.5 0.0 setrgbcolor fill } def +/ldiagyellow { 1.0 1.0 0.0 setrgbcolor fill } def +/ldiaglightyellow { 1.0 1.0 0.5 setrgbcolor fill } def +/ldiagdarkgray { 0.2 0.2 0.2 setrgbcolor fill } def +/ldiaggray { 0.5 0.5 0.5 setrgbcolor fill } def +/ldiaglightgray { 0.8 0.8 0.8 setrgbcolor fill } def +/ldiagdarkgrey { 0.2 0.2 0.2 setrgbcolor fill } def +/ldiaggrey { 0.5 0.5 0.5 setrgbcolor fill } def +/ldiaglightgrey { 0.8 0.8 0.8 setrgbcolor fill } def +/ldiagblack { 0.0 0.0 0.0 setrgbcolor fill } def +/ldiagwhite { 1.0 1.0 1.0 setrgbcolor fill } def + +% shape and labels of the @Box symbol +/ldiagbox +{ + 0 0 /SW ldiagpointdef + xsize 0 /SE ldiagpointdef + xsize ysize /NE ldiagpointdef + 0 ysize /NW ldiagpointdef + SE 0.5 ldiagpmul /S ldiagpointdef + NW 0.5 ldiagpmul /W ldiagpointdef + W SE ldiagpadd /E ldiagpointdef + S NW ldiagpadd /N ldiagpointdef + NE 0.5 ldiagpmul /CTR ldiagpointdef + + 0 dg /S@ANGLE ldiagangledef + 45 dg /SE@ANGLE ldiagangledef + 90 dg /E@ANGLE ldiagangledef + 135 dg /NE@ANGLE ldiagangledef + 180 dg /N@ANGLE ldiagangledef + 225 dg /NW@ANGLE ldiagangledef + 270 dg /W@ANGLE ldiagangledef + 315 dg /SW@ANGLE ldiagangledef + + [ CTR NE ldiagpsub /ldiagboxcircum cvx ] ldiagcircumdef + SW SE NE NW SW +} def + +% shape and labels of the @CurveBox symbol +% <margin> ldiagcurvebox <shape> +/ldiagcurvebox +{ + + % (Entering ldiagcurvebox) 1 ldiagdebugprint + ldiagdecodelength /cbmgn exch def + + xsize 0.5 mul ysize 0.5 mul /CTR ldiagpointdef + xsize 0.5 mul 0 /S ldiagpointdef + xsize ysize 0.5 mul /E ldiagpointdef + xsize 0.5 mul ysize /N ldiagpointdef + 0 ysize 0.5 mul /W ldiagpointdef + + cbmgn 0.293 mul cbmgn 0.293 mul /SW ldiagpointdef + xsize cbmgn 0.293 mul sub cbmgn 0.293 mul /SE ldiagpointdef + xsize cbmgn 0.293 mul sub ysize cbmgn 0.293 mul sub /NE ldiagpointdef + cbmgn 0.293 mul ysize cbmgn 0.293 mul sub /NW ldiagpointdef + + 0 dg /S@ANGLE ldiagangledef + 45 dg /SE@ANGLE ldiagangledef + 90 dg /E@ANGLE ldiagangledef + 135 dg /NE@ANGLE ldiagangledef + 180 dg /N@ANGLE ldiagangledef + 225 dg /NW@ANGLE ldiagangledef + 270 dg /W@ANGLE ldiagangledef + 315 dg /SW@ANGLE ldiagangledef + + [ xsize ysize 0.5 ldiagpmul cbmgn /ldiagcurveboxcircum cvx ] ldiagcircumdef + + cbmgn 0 + xsize cbmgn sub 0 + [ xsize cbmgn sub cbmgn ] + xsize cbmgn + xsize ysize cbmgn sub + [ xsize cbmgn sub ysize cbmgn sub ] + xsize cbmgn sub ysize + cbmgn ysize + [ cbmgn ysize cbmgn sub ] + 0 ysize cbmgn sub + 0 cbmgn + [ cbmgn cbmgn ] + cbmgn 0 + + % (Leaving ldiagcurvebox) 0 ldiagdebugprint +} def + +% shadow of the @ShadowBox symbol +% its shape and labels are done, somewhat inaccurately, with ldiagbox +% <shadowmargin> ldiagshadow - +/ldiagshadow +{ + /lfshm exch def + + lfshm 0 moveto + 0 lfshm neg rlineto + xsize 0 rlineto + 0 ysize rlineto + lfshm neg 0 rlineto + xsize 0 lineto + closepath fill + +} def + +% shape and labels of the @Square symbol +/ldiagsquare +{ + xsize ysize 0.5 ldiagpmul /CTR ldiagpointdef + CTR xsize xsize ysize ysize ldiagpmax 0.5 ldiagpmul ldiagpadd /NE ldiagpointdef + CTR 0 0 CTR NE ldiagdistance 135 ldiagatangle ldiagpadd /NW ldiagpointdef + CTR 0 0 CTR NE ldiagdistance 225 ldiagatangle ldiagpadd /SW ldiagpointdef + CTR 0 0 CTR NE ldiagdistance 315 ldiagatangle ldiagpadd /SE ldiagpointdef + SW 0.5 ldiagpmul SE 0.5 ldiagpmul ldiagpadd /S ldiagpointdef + NW 0.5 ldiagpmul NE 0.5 ldiagpmul ldiagpadd /N ldiagpointdef + SW 0.5 ldiagpmul NW 0.5 ldiagpmul ldiagpadd /W ldiagpointdef + SE 0.5 ldiagpmul NE 0.5 ldiagpmul ldiagpadd /E ldiagpointdef + + 0 dg /S@ANGLE ldiagangledef + 45 dg /SE@ANGLE ldiagangledef + 90 dg /E@ANGLE ldiagangledef + 135 dg /NE@ANGLE ldiagangledef + 180 dg /N@ANGLE ldiagangledef + 225 dg /NW@ANGLE ldiagangledef + 270 dg /W@ANGLE ldiagangledef + 315 dg /SW@ANGLE ldiagangledef + + [ CTR NE ldiagpsub /ldiagboxcircum cvx ] ldiagcircumdef + SW SE NE NW SW +} def + +% shape and labels of the @Diamond symbol +/ldiagdiamond +{ + xsize 0 0.5 ldiagpmul /S ldiagpointdef + 0 ysize 0.5 ldiagpmul /W ldiagpointdef + S W ldiagpadd /CTR ldiagpointdef + CTR W ldiagpadd /N ldiagpointdef + CTR S ldiagpadd /E ldiagpointdef + E N ldiagpadd 0.5 ldiagpmul /NE ldiagpointdef + N W ldiagpadd 0.5 ldiagpmul /NW ldiagpointdef + S W ldiagpadd 0.5 ldiagpmul /SW ldiagpointdef + S E ldiagpadd 0.5 ldiagpmul /SE ldiagpointdef + + 0 dg /S@ANGLE ldiagangledef + 90 dg /E@ANGLE ldiagangledef + 180 dg /N@ANGLE ldiagangledef + 270 dg /W@ANGLE ldiagangledef + S E ldiagangleto /SE@ANGLE ldiagangledef + E N ldiagangleto /NE@ANGLE ldiagangledef + N W ldiagangleto /NW@ANGLE ldiagangledef + W S ldiagangleto /SW@ANGLE ldiagangledef + + [ xsize ysize 0.5 ldiagpmul /ldiagdiamondcircum cvx ] ldiagcircumdef + S E N W S +} def + +% shape and labels of the @Ellipse symbol +/ldiagellipse +{ + xsize 0 0.5 ldiagpmul /S ldiagpointdef + 0 ysize 0.5 ldiagpmul /W ldiagpointdef + S W ldiagpadd /CTR ldiagpointdef + CTR W ldiagpadd /N ldiagpointdef + CTR S ldiagpadd /E ldiagpointdef + CTR xsize 0 0.3536 ldiagpmul ldiagpadd 0 ysize 0.3536 ldiagpmul ldiagpadd /NE ldiagpointdef + 0 ysize 0.3536 ldiagpmul CTR xsize 0 0.3536 ldiagpmul ldiagpadd ldiagpsub /SE ldiagpointdef + xsize 0 0.3536 ldiagpmul CTR ldiagpsub 0 ysize 0.3536 ldiagpmul ldiagpadd /NW ldiagpointdef + 0 ysize 0.3536 ldiagpmul xsize 0 0.3536 ldiagpmul CTR ldiagpsub ldiagpsub /SW ldiagpointdef + [ xsize ysize 0.5 ldiagpmul /ldiagellipsecircum cvx ] ldiagcircumdef + + 0 dg /S@ANGLE ldiagangledef + 90 dg /E@ANGLE ldiagangledef + 180 dg /N@ANGLE ldiagangledef + 270 dg /W@ANGLE ldiagangledef + + S E ldiagangleto /SE@ANGLE ldiagangledef + E N ldiagangleto /NE@ANGLE ldiagangledef + N W ldiagangleto /NW@ANGLE ldiagangledef + W S ldiagangleto /SW@ANGLE ldiagangledef + + S [ CTR ] E [ CTR ] N [ CTR ] W [ CTR ] S +} def + +% shape and labels of the @Circle symbol +/ldiagcircle +{ + xsize ysize 0.5 ldiagpmul /CTR ldiagpointdef + CTR xsize 0 ysize 0 ldiagpmax 0.5 ldiagpmul ldiagpadd /E ldiagpointdef + CTR 0 0 CTR E ldiagdistance 45 ldiagatangle ldiagpadd /NE ldiagpointdef + CTR 0 0 CTR E ldiagdistance 90 ldiagatangle ldiagpadd /N ldiagpointdef + CTR 0 0 CTR E ldiagdistance 135 ldiagatangle ldiagpadd /NW ldiagpointdef + CTR 0 0 CTR E ldiagdistance 180 ldiagatangle ldiagpadd /W ldiagpointdef + CTR 0 0 CTR E ldiagdistance 225 ldiagatangle ldiagpadd /SW ldiagpointdef + CTR 0 0 CTR E ldiagdistance 270 ldiagatangle ldiagpadd /S ldiagpointdef + CTR 0 0 CTR E ldiagdistance 315 ldiagatangle ldiagpadd /SE ldiagpointdef + [ S E ldiagpsub /ldiagellipsecircum cvx ] ldiagcircumdef + + 0 dg /S@ANGLE ldiagangledef + 45 dg /SE@ANGLE ldiagangledef + 90 dg /E@ANGLE ldiagangledef + 135 dg /NE@ANGLE ldiagangledef + 180 dg /N@ANGLE ldiagangledef + 225 dg /NW@ANGLE ldiagangledef + 270 dg /W@ANGLE ldiagangledef + 315 dg /SW@ANGLE ldiagangledef + + S [ CTR ] E [ CTR ] N [ CTR ] W [ CTR ] S +} def + +% shape and labels of the @VLine and @VArrow symbols +/ldiagvline +{ + xmark ysize ldiagprevious /FROM ldiagpointdef + xmark 0 ldiagprevious /TO ldiagpointdef +} def + +% points of a polygon around base with given no of sides, vert init angle: +% <sides> <angle> ldiagpolygon <point> ... <point> +/ldiagpolygon +{ exch round cvi exch + xsize ysize 0.5 ldiagpmul /CTR ldiagpointdef + 90 sub CTR 2 copy ldiagmax 5 3 roll + [ 4 copy pop /ldiagpolycircum cvx ] ldiagcircumdef + exch dup 360 exch div exch + 1 1 3 2 roll + { 4 string cvs (P) exch ldiagconcat + 3 copy exch pop (@ANGLE) ldiagconcat cvn exch 90 add exch ldiagangledef + cvn 6 copy pop pop ldiagatangle 2 copy 10 2 roll + 3 2 roll ldiagpointdef + dup 3 1 roll add exch + } for + pop ldiagatangle +} def + +% shape and labels of the @Isosceles triangle symbol +/ldiagisosceles +{ + xsize ysize 0.5 ldiagpmul /CTR ldiagpointdef + 0 0 /SW ldiagpointdef + xsize 0 /SE ldiagpointdef + xsize 0.5 mul ysize /N ldiagpointdef + xsize 0.5 mul 0 /S ldiagpointdef + SE 0.5 ldiagpmul N 0.5 ldiagpmul ldiagpadd /NE ldiagpointdef + SW 0.5 ldiagpmul N 0.5 ldiagpmul ldiagpadd /NW ldiagpointdef + + [ xsize ysize /ldiagisoscelescircum cvx ] ldiagcircumdef + + 0 dg /SW@ANGLE ldiagangledef + 0 dg /SE@ANGLE ldiagangledef + 180 dg /N@ANGLE ldiagangledef + 0 dg /S@ANGLE ldiagangledef + SE N ldiagangleto /NE@ANGLE ldiagangledef + N SW ldiagangleto /NW@ANGLE ldiagangledef + + SW SE N SW +} def + +% next array element: <array> <index> ldiaggetnext <array> <index> <any> true +% or <array> <index> false +/ldiaggetnext +{ 2 copy exch length ge + { false } + { 2 copy get exch 1 add exch true } ifelse +} def + +% check whether thing is number: <any> ldiagisnumbertype <any> <bool> +/ldiagisnumbertype +{ dup type dup + /integertype eq exch /realtype eq or +} def + +% check whether thing is an array: <any> ldiagisarraytype <any> <bool> +/ldiagisarraytype { dup type /arraytype eq } def + +% check whether thing is an array: <any> ldiagisnametype <any> <bool> +/ldiagisnametype { dup type /nametype eq } def + +% get next item: <array> <index> ldiaggetnextitem <array> <index> 0 +% or <array> <index> <array> 1 +% or <array> <index> <point> 2 +/ldiaggetnextitem +{ ldiaggetnext + { ldiagisarraytype + { 1 + } + { ldiagisnumbertype + { 3 1 roll + ldiaggetnext + { ldiagisnumbertype + { 4 3 roll exch 2 + } + { pop 3 2 roll pop 0 + } ifelse + } + { 3 2 roll pop 0 + } ifelse + } + { pop 0 + } ifelse + } ifelse + } + { 0 + } ifelse +} def + +% approximate equality: num1 num2 approxeq <boolean> +/approxeq +{ dup 0 eq + { pop 0 eq + } + { dup 3 1 roll sub exch div abs 0.001 lt + } ifelse +} def + +% set arc path: bool x1 y1 x2 y2 x0 y0 ldiagsetarc <angle> <angle> <dist> +% the path goes from x1 y1 to x2 y2 about centre x0 y0, +% anticlockwise if bool is true else clockwise. +% The orientations of backwards pointing and forwards pointing +% arrowheads are returned in the two angles, and +% the length of the arc is returned in <dist>. +/ldiagsetarc +{ + % (Entering ldiagsetarc) 7 ldiagdebugprint + 20 dict begin + matrix currentmatrix 8 1 roll + 2 copy translate 2 copy 8 2 roll + 4 2 roll ldiagpsub 6 2 roll ldiagpsub + dup /y1 exch def dup mul /y1s exch def + dup /x1 exch def dup mul /x1s exch def + dup /y2 exch def dup mul /y2s exch def + dup /x2 exch def dup mul /x2s exch def + /dist1 0 0 x1 y1 ldiagdistance def + /dist2 0 0 x2 y2 ldiagdistance def + + y1s y2s approxeq + { -1 + } + { y1s x2s mul y2s x1s mul sub y1s y2s sub div + } ifelse + /da exch def + + x1s x2s approxeq + { -1 + } + { x1s y2s mul x2s y1s mul sub x1s x2s sub div + } ifelse + /db exch def + + da 0 gt db 0 gt and + { + % ( case 1, ellipse) 0 ldiagdebugprint + /LMax da sqrt db sqrt ldiagmax def + /scalex da sqrt LMax div def + /scaley db sqrt LMax div def + scalex scaley scale + 0 0 LMax + 0 0 x1 scalex mul y1 scaley mul ldiagangleto + 0 0 x2 scalex mul y2 scaley mul ldiagangleto + 2 copy eq { 360 add } if + 2 copy 8 2 roll + 5 index { arc } { arcn } ifelse + 2 index 1 index + { 90 sub } { 90 add } ifelse + dup sin scaley mul exch cos scalex mul atan + 2 index 2 index + { 90 add } { 90 sub } ifelse + dup sin scaley mul exch cos scalex mul atan + 5 2 roll % res1 res2 ang1 ang2 anticlockwise + { exch sub } { sub } ifelse + dup 0 le { 360 add } if ldiagpi mul LMax mul 180 div + } + { + dist1 dist2 approxeq + % x1 y1 dist1 ( x1 y1, d) 3 ldiagdebugprint pop pop pop + % x2 y2 dist2 ( x2 y2, d) 3 ldiagdebugprint pop pop pop + { + % ( case 2, circle) 0 ldiagdebugprint + 0 0 + dist1 + 0 0 x1 y1 ldiagangleto + 0 0 x2 y2 ldiagangleto + 2 copy eq { 360 add } if + 2 copy 8 2 roll + 5 index { arc } { arcn } ifelse + 2 index 1 index + { 90 sub } { 90 add } ifelse + 2 index 2 index + { 90 add } { 90 sub } ifelse + 5 2 roll % res1 res2 ang1 ang2 clockwise + { exch sub } { sub } ifelse + dup 0 le { 360 add } if + ldiagpi mul dist1 mul 180 div + } + { + % ( case 3, line) 0 ldiagdebugprint + x2 y2 lineto pop + x2 y2 x1 y1 ldiagangleto + x1 y1 x2 y2 ldiagangleto + x1 y1 x2 y2 ldiagdistance + } ifelse + } ifelse + 4 -1 roll setmatrix + end + % (Leaving ldiagsetarc) 3 ldiagdebugprint +} def + +% ldiagsetcurve: set up a Bezier curve from x0 y0 to x3 y3 +% and return arrowhead angles and length of curve (actually 0) +% x0 y0 x1 y1 x2 y2 x3 y3 ldiagsetcurve <angle> <angle> <length> +/ldiagsetcurve +{ 8 copy curveto pop pop + ldiagangleto + 5 1 roll + 4 2 roll ldiagangleto + exch + 0 +} def + +% ldiagsetpath: convert a Diag path into a PostScript path +% [ shape ] ldiagsetpath +/ldiagsetpath +{ + 10 dict begin + 0 newpath + /prevseen false def + /curveseen false def + { ldiaggetnextitem + dup 0 eq { pop exit } + { 1 eq + { /curveseen true def + /curve exch def + curve length 0 eq { /curveseen false def } if + } + { /ycurr exch def + /xcurr exch def + prevseen + { curveseen + { curve length 4 eq + { xprev yprev + curve 0 get curve 1 get + curve 2 get curve 3 get + xcurr ycurr + ldiagsetcurve pop pop pop + } + { xprev yprev xcurr ycurr + curve length 1 ge { curve 0 get } { 0 } ifelse + curve length 2 ge { curve 1 get } { 0 } ifelse + curve length 3 ge { curve 2 get } { true } ifelse + 7 1 roll + ldiagsetarc pop pop pop + } ifelse + } + { xcurr ycurr lineto + } ifelse + } + { xcurr ycurr moveto + } ifelse + /xprev xcurr def + /yprev ycurr def + /prevseen true def + /curveseen false def + } ifelse + } ifelse + } loop pop pop + end +} def + +% ldiagpaintpath: paint a path of the given shape +% /paint [ shape ] ldiagpaintpath - +/ldiagpaintpath +{ + ldiagsetpath cvx exec +} def + +% stroke a path of the given shape in the given linestyle and dash length. +% Return the origin and angle of the backward and forward arrow heads. +% dashlength /linestyle [shape] ldiagdopath [<point> <angle>] [<point> <angle>] +/ldiagdopath +{ + 10 dict begin + 0 + /prevseen false def + /curveseen false def + /backarrow [] def + /fwdarrow [] def + { + ldiaggetnextitem + dup 0 eq { pop exit } + { + 1 eq + { /curveseen true def + /curve exch def + curve length 0 eq { /prevseen false def } if + } + { /ycurr exch def + /xcurr exch def + prevseen + { newpath xprev yprev moveto + curveseen + { curve length 4 eq + { xprev yprev + curve 0 get curve 1 get + curve 2 get curve 3 get + xcurr ycurr ldiagsetcurve + } + { xprev yprev xcurr ycurr + curve length 1 ge { curve 0 get } { 0 } ifelse + curve length 2 ge { curve 1 get } { 0 } ifelse + curve length 3 ge { curve 2 get } { true } ifelse + 7 1 roll + ldiagsetarc + } ifelse + } + { xcurr ycurr lineto + xcurr ycurr xprev yprev ldiagangleto dup 180 sub + xprev yprev xcurr ycurr ldiagdistance + } ifelse + 6 index 6 index cvx exec + [ xprev yprev 5 -1 roll ] + backarrow length 0 eq + { /backarrow exch def } + { pop } ifelse + [ xcurr ycurr 4 -1 roll ] /fwdarrow exch def + } if + /xprev xcurr def + /yprev ycurr def + /prevseen true def + /curveseen false def + } ifelse + } ifelse + } loop + pop pop pop pop + backarrow length 0 eq { [ 0 0 0 ] } { backarrow } ifelse + fwdarrow length 0 eq { [ 0 0 0 ] } { fwdarrow } ifelse + end +} def + + +% stroke a path of the given shape in the given linestyle and dash length. +% dashlength [ /linestyle ] [shape] ldiagdosegpath - +/ldiagdosegpath +{ + 12 dict begin + 1 index /seg exch def + 1 index length /seglength exch def + 0 /segcount exch def + 0 + /prevseen false def + /curveseen false def + /backarrow [] def + /fwdarrow [] def + { + ldiaggetnextitem + dup 0 eq { pop exit } + { + 1 eq + { /curveseen true def + /curve exch def + curve length 0 eq { /prevseen false def } if + } + { /ycurr exch def + /xcurr exch def + prevseen + { newpath xprev yprev moveto + curveseen + { curve length 4 eq + { xprev yprev + curve 0 get curve 1 get + curve 2 get curve 3 get + xcurr ycurr ldiagsetcurve + } + { xprev yprev xcurr ycurr + curve length 1 ge { curve 0 get } { 0 } ifelse + curve length 2 ge { curve 1 get } { 0 } ifelse + curve length 3 ge { curve 2 get } { true } ifelse + 7 1 roll + ldiagsetarc + } ifelse + } + { xcurr ycurr lineto + xcurr ycurr xprev yprev ldiagangleto dup 180 sub + xprev yprev xcurr ycurr ldiagdistance + } ifelse + 6 index seg segcount seglength mod get cvx exec + /segcount segcount 1 add def + [ xprev yprev 5 -1 roll ] + backarrow length 0 eq + { /backarrow exch def } + { pop } ifelse + [ xcurr ycurr 4 -1 roll ] /fwdarrow exch def + } if + /xprev xcurr def + /yprev ycurr def + /prevseen true def + /curveseen false def + } ifelse + } ifelse + } loop + pop pop pop pop + end +} def + +% ldiagnodebegin: start of node parameters +% ldiagnodebegin - +/ldiagnodebegin +{ % (Entering ldiagnodebegin) 0 ldiagdebugprint + ldiagmaxlabels dict begin +} def + +% ldiagnodeend: end of node parameters (so do the node) +% <outline> <dashlength> <style> <linewidth> <paint> ldiagnodeend - +/ldiagnodeend +{ + % (Entering ldiagnodeend) 0 ldiagdebugprint + end % matches begin in ldiagnodebegin + 4 index gsave ldiagpaintpath grestore + 3 index ldiagsetpath clip newpath + 2 mul setlinewidth + 3 -1 roll ldiagdosegpath + % (Leaving ldiagnodeend) 0 ldiagdebugprint +} def + +% ldiaglinkbegin: start of link parameters +% <direct> ldiaglinkbegin - +/ldiaglinkbegin +{ ldiagmaxlabels dict begin + 1 eq /direct exch def +} def + +% ldiaglinkend: end of link parameters (so do the link) +% <outline> <dashlength> <style> <linewidth> ldiaglinkend - +/ldiaglinkend +{ + end % matches begin in ldiaglinkbegin + setlinewidth + 3 -1 roll ldiagdosegpath +} def + +% ldiagdoarrow: draw an arrow head of given form +% dashlength /lstyle /pstyle hfrac height width [ <point> <angle> ] ldiagdoarrow - +/ldiagdoarrow +{ matrix currentmatrix 8 1 roll + dup 0 get 1 index 1 get translate + 2 get rotate + [ 2 index neg 2 index 0 0 + 3 index 3 index neg + 1 index 10 index mul 0 + 7 index 7 index ] + 4 1 roll pop pop pop + dup 3 1 roll + gsave ldiagpaintpath grestore ldiagdopath pop pop + setmatrix +} def + +% arrow head styles +/ldiagopen 0.0 def +/ldiaghalfopen 0.5 def +/ldiagclosed 1.0 def + +% stroke no arrows, forward, back, and both +/ldiagnoarrow { pop pop pop pop pop pop pop pop } def +/ldiagforward { 7 -1 roll ldiagdoarrow pop } def +/ldiagback { 8 -2 roll pop ldiagdoarrow } def +/ldiagboth { 8 -1 roll 7 copy ldiagdoarrow pop 7 -1 roll ldiagdoarrow } def + +% ldiagprevious: return previous point on path +/ldiagprevious +{ ldiagisnumbertype + { 2 copy } + { ldiagisarraytype + { 2 index 2 index } + { 0 0 } + ifelse + } ifelse +} def + +% Tag dictionary operators +% +% Diag's tag dictionaries are kept on the same stack as other dictionaries, +% since there is nowhere else to put them. However, they are managed like +% a separate stack using the following operators: +% +% <tag> ldiagpushtagdict - Push a new, empty tag dictionary +% ldiagtoptagdict dict Find the top tag dictionary +% ldiagpoptagdict - Pop and destroy the top tag dictionary +% ldiagpopuptagdict - Pop top tag dict and promote its entries +% ldiagdebugtagdict - Debug print of dictionary stack +% +% They are distinguished from other dictionaries by containing /ldiagtagdict, +% whose value is the <tag> which is used by ldiagpopuptagdict, +% and they are hopefully never the target of any non-tag definition because +% they are never the top dictionary, since push places the new dict second. + +/ldiagpushtagdict +{ ldiagmaxlabels dict dup + currentdict end exch begin begin + exch /ldiagtagdict exch put +} def + +/ldiagtoptagdict +{ /ldiagtagdict where not + { (Diag internal error: no tag dictionary) show stop + } if +} def + +/ldiagpoptagdict +{ + % (Entering poptagdict) 0 ldiagdebugprint + % ldiagdebugtagdict + mark + { currentdict end + dup /ldiagtagdict known + { exit + } if + } loop + pop + counttomark + { begin + } repeat + pop + % (Leaving poptagdict) 0 ldiagdebugprint + % ldiagdebugtagdict +} def + +% promote labels from top tag dictionary to second top tag dictionary +% each prefixed by <string>@ if <string> (value of /ldiagtagdict) is not empty +% - ldiagpopuptagdict - +/ldiagpopuptagdict +{ + ldiagtagdict + % (Entering ldiagpopuptagdict) 1 ldiagdebugprint + % ldiagdebugtagdict + ldiagtoptagdict ldiagpoptagdict ldiagtoptagdict exch + { exch 50 string cvs 3 index + dup length 0 ne + { (@) ldiagconcat + } if + exch ldiagconcat cvn exch 2 index 3 1 roll put + } forall + pop pop + % (Leaving ldiagpopuptagdict) 0 ldiagdebugprint + % ldiagdebugtagdict +} def + +% debug tag dictionary stack +/ldiagdebugtagdict +{ (Entering ldiagdebugtagdict) 0 ldiagdebugprint + 30 array dictstack + { dup /ldiagtagdict known + { dup /ldiagtagdict get 0 ldiagdebugprint + { pop 50 string cvs ( ) exch ldiagconcat + dup 0 ldiagdebugprint + pop + } + forall + } + { pop (other) 0 ldiagdebugprint + } ifelse + } forall + (Leaving ldiagdebugtagdict) 0 ldiagdebugprint +} def + +% label a point in top tag dictionary: <point> /name ldiagpointdef - +/ldiagpointdef +{ + % (Entering ldiagpointdef) 3 ldiagdebugprint + [ 4 2 roll transform /itransform cvx ] cvx + ldiagtoptagdict 3 1 roll put + % (Leaving ldiagpointdef) 0 ldiagdebugprint +} def + +% label an angle in top tag dictionary: <angle> /name ldiagangledef - +/ldiagangledef +{ + % (Entering ldiagangledef) 2 ldiagdebugprint + exch ldiagfixangle ldiagtoptagdict 3 1 roll put + % (Leaving ldiagangledef) 0 ldiagdebugprint +} def + +% add CIRCUM operator with this body: <array> ldiagcircumdef - +/ldiagcircumdef +{ % (Entering ldiagcircumdef) 1 ldiagdebugprint + /CIRCUM exch cvx + ldiagtoptagdict 3 1 roll put + % currentdict end + % 3 1 roll + % def + % begin + % (Leaving ldiagcircumdef) 0 ldiagdebugprint +} def + +% show points (except CIRCUM and ANGLE): - ldiagshowpoints - +/ldiagshowpoints +{ + % (Entering ldiagshowpoints) 0 ldiagdebugprint + ldiagtoptagdict + { 1 index 50 string cvs + (ldiagdebugpos) search + { pop pop pop pop pop } + { + (CIRCUM) search % if CIRCUM in key + { pop pop pop pop pop } + { + (ANGLE) search % if ANGLE in key + { + pop pop pop pop pop + } + { + (ldiagtagdict) search + { + pop pop pop pop pop + } + { + pop cvx exec + newpath 2.0 pt 0 360 arc 0 setgray fill pop + } ifelse + } ifelse + } ifelse + } ifelse + } forall + % (Leaving ldiagshowpoints) 0 ldiagdebugprint +} def + + +/ldiagshowtags +{ + % (Entering ldiagshowtags) 0 ldiagdebugprint + ldiagtoptagdict + { 1 index 50 string cvs + % dup 0 ldiagdebugprint + (ldiagdebugpos) search + { pop pop pop pop pop } + { + (CIRCUM) search % if CIRCUM in key + { pop pop pop pop pop } + { + (ANGLE) search % if ANGLE in key + { + pop pop pop pop pop + } + { + (ldiagtagdict) search + { + pop pop pop pop pop + } + { + pop cvx exec 2 copy + gsave + newpath 2.0 pt 0 360 arc 0 setgray fill + /Times-Roman findfont 8 pt scalefont setfont + translate 40 rotate 0.2 cm 0.1 cm moveto 20 string cvs show + grestore + } ifelse + } ifelse + } ifelse + } ifelse + } forall + % (Leaving ldiagshowtags) 0 ldiagdebugprint +} def + + +% show angles: - ldiagshowangles - +/ldiagshowangles +{ + % (Entering ldiagshowangles) 0 ldiagdebugprint + ldiagtoptagdict + { 1 index 20 string cvs + % dup 0 ldiagdebugprint + (ldiagdebugpos) search + { pop pop pop pop pop } + { + (ldiagtagdict) search + { + pop pop pop pop pop + } + { + (CIRCUM) search % if CIRCUM in key + { pop pop pop pop pop } + { + (@ANGLE) search % if ANGLE in key, draw the angle at the point + { + % (showing ANGLE) 5 ldiagdebugprint + gsave exch pop exch pop cvx + % (about to execute) 1 ldiagdebugprint + exec translate rotate 0.8 0.8 scale pop + newpath 0 0 2.0 pt 0 360 arc 0 setgray fill + newpath 4 pt 0 moveto 9 pt 0 lineto + 9 pt 1.5 pt lineto 11 pt 0 lineto 9 pt -1.5 pt lineto + 9 pt 0 lineto [] 0 setdash 4 pt setlinewidth 0 setlinejoin + stroke grestore + % (finished ANGLE) 5 ldiagdebugprint + } + { + % else must be a point, we aren't showing those + pop pop pop + } ifelse + } ifelse + } ifelse + } ifelse + } forall + % (Leaving ldiagshowangles) 0 ldiagdebugprint +} def + +% fix an angle to 0 <= res < 360: <angle> ldiagfixangle <angle> +/ldiagfixangle +{ + % (Entering ldiagfixangle) 1 ldiagdebugprint + { dup 0 ge { exit } if + 360 add + } loop + { dup 360 lt { exit } if + 360 sub + } loop + % (Leaving ldiagfixangle) 1 ldiagdebugprint +} def + +% find point on circumference of box: alpha a b ldiagboxcircum x y +/ldiagboxcircum +{ + % (Entering ldiagboxcircum) 3 ldiagdebugprint + 4 dict begin + /b exch def + /a exch def + ldiagfixangle /alpha exch def + 0 0 a b ldiagangleto /theta exch def + + % if alpha <= theta, return (a, a*tan(alpha)) + alpha theta le + { a a alpha sin mul alpha cos div } + { + % else if alpha <= 180 - theta, return (b*cot(alpha), b) + alpha 180 theta sub le + { b alpha cos mul alpha sin div b } + { + % else if alpha <= 180 + theta, return (-a, -a*tan(alpha)) + alpha 180 theta add le + { a neg a neg alpha sin mul alpha cos div } + { + % else if alpha <= 360 - theta, return (-b*cot(alpha), -b) + alpha 360 theta sub le + { b neg alpha cos mul alpha sin div b neg } + { + % else 360 - theta <= alpha, return (a, a*tan(alpha)) + a a alpha sin mul alpha cos div + } ifelse + } ifelse + } ifelse + } ifelse + end + % (Leaving ldiagboxcircum) 2 ldiagdebugprint +} def + +% find quadratic roots (assume a != 0): a b c ldiagqroots x1 x2 2 +% or x2 1 +% or 0 +/ldiagqroots +{ + 4 dict begin + /c exch def + /b exch def + /a exch def + /disc b b mul 4 a c mul mul sub def + disc 0 lt + { 0 + } + { disc 0 eq + { b neg 2 a mul div + 1 + } + { b neg disc sqrt add 2 a mul div + b neg disc sqrt sub 2 a mul div + 2 + } + ifelse + } + ifelse + end +} def + +% work our which quadrant: <angle> ldiagquadrant <0-3> +/ldiagquadrant +{ dup 90 lt + { pop 0 + } + { dup 180 lt + { pop 1 + } + { 270 lt + { 2 + } + { 3 + } ifelse + } ifelse + } ifelse +} def + +% find curvebox circum, assuming upper right quadrant: alpha a b xmk ldiagcb x y +/ldiagcb +{ + 6 dict begin + /xmk exch def + /b exch def + /a exch def + /alpha exch def + /theta1 0 0 a b xmk sub ldiagangleto def + /theta2 0 0 a xmk sub b ldiagangleto def + alpha theta1 le + { % if alpha <= theta1, return (a, a*tan(alpha)) + a a alpha sin mul alpha cos div + } + { alpha theta2 ge + { % else if alpha > theta2, return (b*cot(alpha), b) + b alpha cos mul alpha sin div b + } + { + % else, return the intersection of line and circle + a xmk sub b xmk sub xmk 0 0 alpha ldiagcircleintersect + dup 0 eq + { % should never happen, just return any reasonable point + pop + a b 0.5 ldiagpmul + } + { 1 eq + { % should never happen, just return the point on top of stack + } + { % the usual case, two points on stack, return the larger + ldiagpmax + } ifelse + } ifelse + } ifelse + } ifelse + end +} def + +% find point on circumference of curvebox: alpha a b xmk ldiagcurveboxcircum x y +/ldiagcurveboxcircum +{ + % (Entering ldiagcurveboxcircum) 4 ldiagdebugprint + 5 dict begin + /xmk exch def + /b exch def + /a exch def + ldiagfixangle /alpha exch def + + % work out which quadrant we are in, and reflect accordingly + /quad alpha ldiagquadrant def + quad 0 eq + { alpha a b xmk ldiagcb + } + { quad 1 eq + { 180 alpha sub a b xmk ldiagcb exch neg exch + } + { quad 2 eq + { alpha 180 sub a b xmk ldiagcb neg exch neg exch + } + { 360 alpha sub a b xmk ldiagcb neg + } ifelse + } ifelse + } ifelse + end + % (Leaving ldiagcurveboxcircum) 2 ldiagdebugprint +} def + +% find point on circumference of diamond: alpha a b ldiagdiamondcircum x y +/ldiagdiamondcircum +{ + % (Entering ldiagdiamondcircum) 3 ldiagdebugprint + 4 dict begin + /b exch def + /a exch def + ldiagfixangle /alpha exch def + b alpha cos abs mul a alpha sin abs mul add /denom exch def + a b mul alpha cos mul denom div + a b mul alpha sin mul denom div + end + % (Leaving ldiagdiamondcircum) 2 ldiagdebugprint +} def + +% find point on circumference of ellipse: alpha a b ldiagellipsecircum x y +/ldiagellipsecircum +{ + % (Entering ldiagellipsecircum) 3 ldiagdebugprint + 4 dict begin + /b exch def + /a exch def + ldiagfixangle /alpha exch def + b alpha cos mul dup mul a alpha sin mul dup mul add sqrt /denom exch def + a b mul alpha cos mul denom div + a b mul alpha sin mul denom div + end + % (Leaving ldiagellipsecircum) 2 ldiagdebugprint +} def + +% find point on circumference of isosceles: alpha a b ldiagisoscelescircum x y +/ldiagisoscelescircum +{ + % (Entering ldiagisoscelescircum) 3 ldiagdebugprint + 7 dict begin + /b exch def + /a exch def + /alpha exch ldiagfixangle def + /theta1 90 def + /theta2 a b 0.5 ldiagpmul 0 0 ldiagangleto def + /theta3 a b 0.5 ldiagpmul a 0 ldiagangleto def + alpha theta1 ge alpha theta2 le and + { 0 0 a 2 div b + } + { alpha theta2 ge alpha theta3 le and + { 0 0 a 0 + } + { a 0 a 2 div b + } ifelse + } ifelse + a 2 div b 2 div 2 copy 1 ft alpha ldiagatangle ldiaglineintersect + a 2 div b 2 div 4 2 roll ldiagpsub + end + % (Leaving ldiagisoscelescircum) 2 ldiagdebugprint +} def + +% find point of intersection of two lines each defined by two points +% x1 y1 x2 y2 x3 y3 x4 y4 ldiaglineintersect x y +/ldiaglineintersect +{ + % (Entering ldiaglineintersect) 8 ldiagdebugprint + 13 dict begin + /y4 exch def + /x4 exch def + /y3 exch def + /x3 exch def + /y2 exch def + /x2 exch def + /y1 exch def + /x1 exch def + x2 x1 sub /x21 exch def + x4 x3 sub /x43 exch def + y2 y1 sub /y21 exch def + y4 y3 sub /y43 exch def + y21 x43 mul y43 x21 mul sub /det exch def + + % calculate x + y21 x43 mul x1 mul + y43 x21 mul x3 mul sub + y3 y1 sub x21 mul x43 mul add + det div + + % calculate y + x21 y43 mul y1 mul + x43 y21 mul y3 mul sub + x3 x1 sub y21 mul y43 mul add + det neg div + + end + % (Leaving ldiaglineintersect) 2 ldiagdebugprint +} def + +% find point on circumference of polygon +% alpha radius num theta ldiagpolycircum x y +/ldiagpolycircum +{ + % (Entering ldiagpolycircum) 4 ldiagdebugprint + 13 dict begin + /theta exch def + /num exch def + /radius exch def + /alpha exch def + + % calculate delta, the angle from theta to alpha + alpha theta sub ldiagfixangle + + % calculate the angle which is the multiple of 360/num closest to delta + 360 num div div truncate 360 num div mul theta add /anglea exch def + + % calculate the next multiple of 360/num after anglea + anglea 360 num div add /angleb exch def + + % intersect the line through these two points with the alpha line + anglea cos anglea sin angleb cos angleb sin + 0 0 alpha cos 2 mul alpha sin 2 mul + ldiaglineintersect radius ldiagpmul + + end + % (Leaving ldiagpolycircum) 2 ldiagdebugprint +} def + +% find point of intersection of a line and a circle +% x0 y0 r x1 y1 theta ldiagcircleintersect xa ya xb yb 2 +% or xb yb 1 +% or 0 +/ldiagcircleintersect +{ + % (Entering ldiagcircleintersect) 6 ldiagdebugprint + 15 dict begin + /theta exch def + /y1 exch def + /x1 exch def + /r exch def + /y0 exch def + /x0 exch def + + % if sin(theta) = 0 then line is horizontal and y must be y1 + theta sin abs 0.00001 lt + { + /a 1 def + /b -2 x0 mul def + /c x0 dup mul y1 y0 sub dup mul add r dup mul sub def + a b c ldiagqroots dup + 0 eq + { pop + 0 + } + { 1 eq + { y1 1 + } + { y1 exch y1 2 + } ifelse + } ifelse + } + { + /ct theta cos theta sin div def + /a ct ct mul 1 add def + /b ct x1 x0 sub mul y1 add y0 sub 2 mul def + /c x1 x0 sub dup mul y1 y0 sub dup mul add r dup mul sub def + a b c ldiagqroots dup + 0 eq + { pop + 0 + } + { 1 eq + { y1 add /yb exch def + yb y1 sub ct mul x1 add /xb exch def + xb yb 1 + } + { y1 add /ya exch def + ya y1 sub ct mul x1 add /xa exch def + y1 add /yb exch def + yb y1 sub ct mul x1 add /xb exch def + xa ya xb yb 2 + } ifelse + } ifelse + } ifelse + end + % (Leaving ldiagcircleintersect) 1 ldiagdebugprint +} def + +% find line which is the perpendicular bisector of two points, defined +% by two points +% x1 y1 x2 y2 ldiaglinebetween x3 y3 x4 y4 +/ldiaglinebetween +{ % (Entering ldiaglinebetween) 4 ldiagdebugprint + /y2 exch def /x2 exch def + /y1 exch def /x1 exch def + + % let x3, y3 be the point halfway between the two points + x1 y1 x2 y2 ldiagpadd 0.5 ldiagpmul + /y3 exch def /x3 exch def + + % find a point perpendicular to x3, y3 + x3 y3 50 x1 y1 x2 y2 ldiagangleto 90 dg add ldiagatangle + + % plus x3 y3 gives the two points + x3 y3 + + % (Leaving ldiaglinebetween) 4 ldiagdebugprint +} def + +% find <proc>@<string>: <proc> <string> ldiagfindlabel <any> true +% <proc> <string> false +/ldiagfindlabel +{ + % (Entering ldiagfindlabel) 2 ldiagdebugprint + exch dup length 1 ne + { exch false + % (Leaving ldiagfindabel (length not 1)) 3 ldiagdebugprint + } + { dup 0 get type /nametype ne + { exch false + % (Leaving ldiagfindabel (not a name)) 3 ldiagdebugprint + } + { dup 0 get 50 string cvs (@) ldiagconcat 2 index ldiagconcat dup where + { exch get exch pop exch pop cvx exec true + % (Leaving ldiagfindlabel with success) 100 ldiagdebugprint + } + { + pop exch false + % (Leaving ldiagfindabel (concat not sensible)) 3 ldiagdebugprint + } ifelse + } ifelse + } ifelse +} bind def + +% execute <proc>@<string> or else default: <proc> <string> ldiagdolabel <various> +/ldiagdolabel +{ + % (Entering ldiagdolabel) 2 ldiagdebugprint + ldiagfindlabel not + { + dup (CIRCUM) eq + { pop pop pop 0 0 + } + { + dup (ANGLE) eq + { pop pop 0 + } + { pop cvx exec + } ifelse + } ifelse + } if + % (Leaving ldiagdolabel) 2 ldiagdebugprint +} bind def + +% execute a proc depending on whether number is negative, zero, or positive +% procneg proczero procpos number ldiagsigncase <anything> +/ldiagsigncase +{ + % (Entering ldiagsigncase) 4 ldiagdebugprint + dup 0 lt + { pop pop pop exec + } + { 0 gt + { exch pop exch pop exec + } + { pop exch pop exec + } ifelse + } ifelse + % (Leaving ldiagsigncase) 0 ldiagdebugprint +} bind def + +% execute proci if angle is in ith quadrant +% proc45 proc270 proc180 proc90 proc0 proc315 proc225 proc135 angle ldiagquadcase <anything> +/ldiagquadcase +{ + % (Entering ldiagquadcase) 9 ldiagdebugprint + round ldiagfixangle cvi dup 90 mod 0 eq + { 90 idiv 4 add } { 90 idiv } ifelse + 8 exch roll pop pop pop pop pop pop pop exec + % (Leaving ldiagquadcase) 0 ldiagdebugprint +} bind def + +% decode Lout length into PostScript length +% <string> ldiagdecodelength <number> +/ldiagdecodelength +{ + % (Entering ldiagdecodelength) 1 ldiagdebugprint + (f) search + { exch pop exch pop cvr ft + } + { (c) search + { exch pop exch pop cvr cm + } + { (p) search + { exch pop exch pop cvr pt + } + { (m) search + { exch pop exch pop cvr em + } + { (s) search + { exch pop exch pop cvr sp + } + { (v) search + { exch pop exch pop cvr vs + } + { (i) search + { exch pop exch pop cvr in + } + { pop 0 + } ifelse + } ifelse + } ifelse + } ifelse + } ifelse + } ifelse + } ifelse + % (Leaving ldiagdecodelength) 1 ldiagdebugprint +} def + +% implement aabout function +% logical form: <circum> <extra> <centre> aabout <point> +% actual form: { <labelorpoint> } cvlit <length> [ <point> ] cvx aabout <point> +/ldiagaabout +{ + /centre exch def + /extra exch def + /circum exch def + + /ZXCTR [ centre ] cvx def + /ZFCTR [ circum (CTR) ldiagdolabel ] cvx def + /ZAREF ZFCTR ZXCTR ldiagangleto def + /ZAMIN 0 dg def + /ZPMIN [ circum (CTR) ldiagdolabel ZAREF ZAMIN sub + circum (CIRCUM) ldiagdolabel ldiagpadd + 0 0 extra ZAREF ZAMIN sub ldiagatangle + ldiagpadd ] cvx def + + /ZAMAX 90 dg def + /ZPMAX [ circum (CTR) ldiagdolabel ZAREF ZAMAX sub + circum (CIRCUM) ldiagdolabel ldiagpadd + 0 0 extra ZAREF ZAMAX sub ldiagatangle + ldiagpadd ] cvx def + + 1 1 20 + { /xval exch def + /ZAMID ZAMIN ZAMAX add 0.5 mul def + /ZPMID [ circum (CTR) ldiagdolabel ZAREF ZAMID sub + circum (CIRCUM) ldiagdolabel ldiagpadd + 0 0 extra ZAREF ZAMID sub ldiagatangle + ldiagpadd ] cvx def + ZPMID ZXCTR ldiagdistance ZFCTR ZXCTR ldiagdistance gt + { + /ZAMAX [ ZAMID ] cvx def + /ZPMAX [ ZPMID ] cvx def + } + { + /ZAMIN [ ZAMID ] cvx def + /ZPMIN [ ZPMID ] cvx def + } ifelse + } for + ZPMID +} def + +% implement cabout function +% logical form: <circum> <extra> <centre> cabout <point> +% actual form: { <labelorpoint> } cvlit <length> [ <point> ] cvx cabout <point> +/ldiagcabout +{ + /centre exch def + /extra exch def + /circum exch def + + /ZXCTR [ centre ] cvx def + /ZFCTR [ circum (CTR) ldiagdolabel ] cvx def + /ZAREF ZFCTR ZXCTR ldiagangleto def + /ZAMIN 0 dg def + /ZPMIN [ circum (CTR) ldiagdolabel ZAREF ZAMIN add + circum (CIRCUM) ldiagdolabel ldiagpadd + 0 0 extra ZAREF ZAMIN add ldiagatangle + ldiagpadd ] cvx def + + /ZAMAX 90 dg def + /ZPMAX [ circum (CTR) ldiagdolabel ZAREF ZAMAX add + circum (CIRCUM) ldiagdolabel ldiagpadd + 0 0 extra ZAREF ZAMAX add ldiagatangle + ldiagpadd ] cvx def + + 1 1 20 + { /xval exch def + /ZAMID ZAMIN ZAMAX add 0.5 mul def + /ZPMID [ circum (CTR) ldiagdolabel ZAREF ZAMID add + circum (CIRCUM) ldiagdolabel ldiagpadd + 0 0 extra ZAREF ZAMID add ldiagatangle + ldiagpadd ] cvx def + ZPMID ZXCTR ldiagdistance ZFCTR ZXCTR ldiagdistance gt + { + /ZAMAX [ ZAMID ] cvx def + /ZPMAX [ ZPMID ] cvx def + } + { + /ZAMIN [ ZAMID ] cvx def + /ZPMIN [ ZPMID ] cvx def + } ifelse + } for + ZPMID +} def + +% fromarrowlength toarrowlength { from } { to } xindent zindent ldiaglinepath - +/ldiaglinepath +{ + % (entering ldiaglinepath) 0 ldiagdebugprint + /zindent exch def + /xindent exch def + cvlit /to exch def + cvlit /from exch def + /toarrowlength exch def + /fromarrowlength exch def + + from (CTR) ldiagdolabel to (CTR) ldiagdolabel ldiagangleto + /FROM@ANGLE ldiagangledef + from (CTR) ldiagdolabel FROM@ANGLE from (CIRCUM) ldiagdolabel ldiagpadd + 0 0 fromarrowlength FROM@ANGLE ldiagatangle ldiagpadd + /FROM ldiagpointdef + + FROM@ANGLE /TO@ANGLE ldiagangledef + to (CTR) ldiagdolabel TO@ANGLE 180 dg sub to (CIRCUM) ldiagdolabel ldiagpadd + 0 0 toarrowlength TO@ANGLE 180 dg sub ldiagatangle ldiagpadd /TO ldiagpointdef + + FROM 0.5 ldiagpmul TO 0.5 ldiagpmul ldiagpadd /LMID ldiagpointdef + FROM@ANGLE /LMID@ANGLE ldiagangledef + + /XINDENT xindent FROM LMID ldiagdistance ldiagmin def + FROM 0 0 XINDENT FROM@ANGLE ldiagatangle ldiagpadd /LFROM ldiagpointdef + FROM@ANGLE /LFROM@ANGLE ldiagangledef + + /ZINDENT zindent TO LMID ldiagdistance ldiagmin def + 0 0 ZINDENT FROM@ANGLE ldiagatangle TO ldiagpsub /LTO ldiagpointdef + FROM@ANGLE /LTO@ANGLE ldiagangledef + + direct { FROM TO } { FROM LFROM LMID LTO TO } ifelse + + % (leaving ldiaglinepath) 0 ldiagdebugprint +} def + +% fromarrowlength toarrowlength { from } { to } xindent zindent pathgap ldiagdoublelinepath - +/ldiagdoublelinepath +{ + % (entering ldiagdoublelinepath) 0 ldiagdebugprint + /pathgap exch def + /zindent exch def + /xindent exch def + cvlit /to exch def + cvlit /from exch def + /toarrowlength exch def + /fromarrowlength exch def + + from (CTR) ldiagdolabel to (CTR) ldiagdolabel ldiagangleto + /FROM@ANGLE ldiagangledef + from (CTR) ldiagdolabel FROM@ANGLE from (CIRCUM) ldiagdolabel ldiagpadd + 0 0 fromarrowlength FROM@ANGLE ldiagatangle ldiagpadd + /FROM ldiagpointdef + + FROM@ANGLE /TO@ANGLE ldiagangledef + to (CTR) ldiagdolabel TO@ANGLE 180 dg sub to (CIRCUM) ldiagdolabel ldiagpadd + 0 0 toarrowlength TO@ANGLE 180 dg sub ldiagatangle ldiagpadd /TO ldiagpointdef + + FROM 0.5 ldiagpmul TO 0.5 ldiagpmul ldiagpadd /LMID ldiagpointdef + FROM@ANGLE /LMID@ANGLE ldiagangledef + + /XINDENT xindent FROM LMID ldiagdistance ldiagmin def + FROM 0 0 XINDENT FROM@ANGLE ldiagatangle ldiagpadd /LFROM ldiagpointdef + FROM@ANGLE /LFROM@ANGLE ldiagangledef + + /ZINDENT zindent TO LMID ldiagdistance ldiagmin def + 0 0 ZINDENT FROM@ANGLE ldiagatangle TO ldiagpsub /LTO ldiagpointdef + FROM@ANGLE /LTO@ANGLE ldiagangledef + + direct { + FROM pathgap 2 div FROM@ANGLE 90 dg sub ldiagatangle + TO pathgap 2 div FROM@ANGLE 90 dg sub ldiagatangle + [] + FROM pathgap 2 div FROM@ANGLE 90 dg add ldiagatangle + TO pathgap 2 div FROM@ANGLE 90 dg add ldiagatangle + } + { + FROM pathgap 2 div FROM@ANGLE 90 dg sub ldiagatangle + LFROM pathgap 2 div FROM@ANGLE 90 dg sub ldiagatangle + LMID pathgap 2 div FROM@ANGLE 90 dg sub ldiagatangle + LTO pathgap 2 div FROM@ANGLE 90 dg sub ldiagatangle + TO pathgap 2 div FROM@ANGLE 90 dg sub ldiagatangle + [] + FROM pathgap 2 div FROM@ANGLE 90 dg add ldiagatangle + LFROM pathgap 2 div FROM@ANGLE 90 dg add ldiagatangle + LMID pathgap 2 div FROM@ANGLE 90 dg add ldiagatangle + LTO pathgap 2 div FROM@ANGLE 90 dg add ldiagatangle + TO pathgap 2 div FROM@ANGLE 90 dg add ldiagatangle + } ifelse + + % (leaving ldiagdoublelinepath) 0 ldiagdebugprint +} def + +% fromarrowlen toarrowlen { from } { to } xindent zindent bias ldiagacurvepath - +/ldiagacurvepath +{ + % (entering ldiagacurvepath) 0 ldiagdebugprint + /bias exch def + /zindent exch def + /xindent exch def + cvlit /to exch def + cvlit /from exch def + /toarrowlength exch def + /fromarrowlength exch def + + %/B1 bias 0.02 ft ldiagmax def + %/B2 from (CTR) ldiagdolabel to (CTR) ldiagdolabel ldiagdistance 0.5 mul def + %/BIAS B1 B2 ldiagmin def + /BIAS bias 0.02 ft ldiagmax def + /XMID [ from (CTR) ldiagdolabel 0.5 ldiagpmul + to (CTR) ldiagdolabel 0.5 ldiagpmul ldiagpadd ] cvx def + /XTOP [ XMID 0 0 BIAS from (CTR) ldiagdolabel to (CTR) ldiagdolabel + ldiagangleto 90 dg sub ldiagatangle ldiagpadd ] cvx def + /CTR [ from (CTR) ldiagdolabel XTOP ldiaglinebetween + to (CTR) ldiagdolabel XTOP ldiaglinebetween + ldiaglineintersect ] cvx def + + from fromarrowlength [ CTR ] cvx ldiagaabout /FROM ldiagpointdef + from (CTR) ldiagdolabel FROM ldiagdistance 0 gt + { from (CTR) ldiagdolabel FROM ldiagangleto + } + { CTR FROM ldiagangleto 90 dg add + } ifelse /FROM@ANGLE ldiagangledef + + to toarrowlength [ CTR ] cvx ldiagcabout /TO ldiagpointdef + TO to (CTR) ldiagdolabel ldiagdistance 0 gt + { TO to (CTR) ldiagdolabel ldiagangleto + } + { CTR TO ldiagangleto 90 dg add + } ifelse /TO@ANGLE ldiagangledef + + /RADIUS CTR FROM ldiagdistance def + CTR 0 0 RADIUS CTR FROM ldiagangleto 360 dg CTR TO ldiagangleto + add CTR FROM ldiagangleto sub cvi 360 mod 0.5 mul add + ldiagatangle ldiagpadd /LMID ldiagpointdef + CTR LMID ldiagangleto 90 dg add /LMID@ANGLE ldiagangledef + + /XINDENT xindent FROM LMID ldiagdistance ldiagmin def + CTR 0 0 RADIUS CTR FROM 0 0 XINDENT FROM@ANGLE ldiagatangle + ldiagpadd ldiagangleto ldiagatangle ldiagpadd /LFROM ldiagpointdef + CTR LFROM ldiagangleto 90 dg add /LFROM@ANGLE ldiagangledef + + /ZINDENT zindent TO LMID ldiagdistance ldiagmin def + CTR 0 0 RADIUS CTR TO 0 0 ZINDENT TO@ANGLE 180 dg add + ldiagatangle ldiagpadd ldiagangleto ldiagatangle ldiagpadd /LTO ldiagpointdef + CTR LTO ldiagangleto 90 dg add /LTO@ANGLE ldiagangledef + + direct + { FROM [CTR] TO } + { FROM [CTR] LFROM [CTR] LMID [CTR] LTO [CTR] TO } + ifelse + + % (leaving ldiagacurvepath) 0 ldiagdebugprint +} def + +% fromarrowlen toarrowlen { from } { to } xindent zindent bias ldiagccurvepath - +/ldiagccurvepath +{ + % (entering ldiagccurvepath) 0 ldiagdebugprint + % count ( stack size is) 1 ldiagdebugprint pop + /bias exch def + /zindent exch def + /xindent exch def + cvlit /to exch def + cvlit /from exch def + /toarrowlength exch def + /fromarrowlength exch def + + %/B1 bias 0.02 ft ldiagmax def + %/B2 from (CTR) ldiagdolabel to (CTR) ldiagdolabel ldiagdistance 0.5 mul def + %/BIAS B1 B2 ldiagmin def + /BIAS bias 0.02 ft ldiagmax def + /XMID [ from (CTR) ldiagdolabel 0.5 ldiagpmul + to (CTR) ldiagdolabel 0.5 ldiagpmul ldiagpadd ] cvx def + /XTOP [ XMID 0 0 BIAS from (CTR) ldiagdolabel to (CTR) ldiagdolabel + ldiagangleto 90 dg add ldiagatangle ldiagpadd ] cvx def + /CTR [ from (CTR) ldiagdolabel XTOP ldiaglinebetween + to (CTR) ldiagdolabel XTOP ldiaglinebetween ldiaglineintersect ] cvx def + + from fromarrowlength [ CTR ] cvx ldiagcabout /FROM ldiagpointdef + from (CTR) ldiagdolabel FROM ldiagdistance 0 gt + { from (CTR) ldiagdolabel FROM ldiagangleto } + { CTR FROM ldiagangleto 90 dg sub } + ifelse /FROM@ANGLE ldiagangledef + + to toarrowlength [ CTR ] cvx ldiagaabout /TO ldiagpointdef + TO to (CTR) ldiagdolabel ldiagdistance 0 gt + { TO to (CTR) ldiagdolabel ldiagangleto } + { CTR TO ldiagangleto 90 dg sub } + ifelse /TO@ANGLE ldiagangledef + + /RADIUS [ CTR FROM ldiagdistance ] cvx def + CTR 0 0 RADIUS CTR TO ldiagangleto 360 dg CTR FROM ldiagangleto add + CTR TO ldiagangleto sub cvi 360 cvi mod 2 div add ldiagatangle + ldiagpadd /LMID ldiagpointdef + CTR LMID ldiagangleto 90 dg sub /LMID@ANGLE ldiagangledef + + /XINDENT [ xindent FROM LMID ldiagdistance ldiagmin ] cvx def + CTR 0 0 RADIUS CTR FROM 0 0 XINDENT FROM@ANGLE ldiagatangle ldiagpadd + ldiagangleto ldiagatangle ldiagpadd /LFROM ldiagpointdef + CTR LFROM ldiagangleto 90 dg sub /LFROM@ANGLE ldiagangledef + + /ZINDENT [ zindent TO LMID ldiagdistance ldiagmin ] cvx def + CTR 0 0 RADIUS CTR TO 0 0 ZINDENT TO@ANGLE 180 dg add ldiagatangle + ldiagpadd ldiagangleto ldiagatangle ldiagpadd /LTO ldiagpointdef + CTR LTO ldiagangleto 90 dg sub /LTO@ANGLE ldiagangledef + + direct + { FROM [CTR clockwise] TO } + { FROM [CTR clockwise] LFROM [CTR clockwise] + LMID [CTR clockwise] LTO [CTR clockwise] TO } + ifelse + % (leaving ldiagccurvepath) 0 ldiagdebugprint +} def + + +% farr tarr { from } { to } xindent zindent [frompt] [topt] ldiagbezierpath - +/ldiagbezierpath +{ + % (entering ldiagbezierpath) 0 ldiagdebugprint + % count ( stack size is) 1 ldiagdebugprint pop + cvx /topt exch def + cvx /frompt exch def + /zindent exch def + /xindent exch def + cvlit /to exch def + cvlit /from exch def + /toarrowlength exch def + /fromarrowlength exch def + + from (CTR) ldiagdolabel frompt ldiagangleto /FROM@ANGLE ldiagangledef + from (CTR) ldiagdolabel FROM@ANGLE from (CIRCUM) ldiagdolabel + ldiagpadd 0 0 fromarrowlength FROM@ANGLE ldiagatangle ldiagpadd + /FROM ldiagpointdef + + topt to (CTR) ldiagdolabel ldiagangleto /TO@ANGLE ldiagangledef + to (CTR) ldiagdolabel TO@ANGLE 180 dg add to (CIRCUM) ldiagdolabel + ldiagpadd 0 0 toarrowlength TO@ANGLE 180 dg add ldiagatangle ldiagpadd + /TO ldiagpointdef + + FROM 0 0 xindent FROM@ANGLE ldiagatangle ldiagpadd + /LFROM ldiagpointdef + FROM@ANGLE /LFROM@ANGLE ldiagangledef + + TO 0 0 zindent TO@ANGLE 180 dg add ldiagatangle ldiagpadd + /LTO ldiagpointdef + TO@ANGLE /LTO@ANGLE ldiagangledef + + FROM TO ldiagpadd frompt ldiagpadd topt ldiagpadd 0.25 ldiagpmul + /LMID ldiagpointdef + + FROM [frompt topt] TO + + % (leaving ldiagbezierpath) 0 ldiagdebugprint + % count ( stack size is) 1 ldiagdebugprint pop +} def + + +% farr tarr { from } { to } xindent zindent ldiagvhlinepath - +/ldiagvhlinepath +{ + % (entering ldiagvhlinepath) 0 ldiagdebugprint + % count ( stack size is) 1 ldiagdebugprint pop + /zindent exch def + /xindent exch def + cvlit /to exch def + cvlit /from exch def + /toarrowlength exch def + /fromarrowlength exch def + + /CTR [ from (CTR) ldiagdolabel pop to (CTR) ldiagdolabel exch pop ] cvx def + /FANG [ from (CTR) ldiagdolabel CTR ldiagangleto ] cvx def + /TANG [ to (CTR) ldiagdolabel CTR ldiagangleto ] cvx def + + from (CTR) ldiagdolabel FANG from (CIRCUM) ldiagdolabel ldiagpadd + 0 0 fromarrowlength FANG ldiagatangle ldiagpadd /FROM ldiagpointdef + FANG /FROM@ANGLE ldiagangledef + + to (CTR) ldiagdolabel TANG to (CIRCUM) ldiagdolabel ldiagpadd + 0 0 toarrowlength TANG ldiagatangle ldiagpadd /TO ldiagpointdef + TANG 180 dg add /TO@ANGLE ldiagangledef + + /FDIST [ FROM CTR ldiagdistance ] cvx def + /TDIST [ TO CTR ldiagdistance ] cvx def + /XINDENT [ xindent FDIST ldiagmin ] cvx def + /ZINDENT [ zindent TDIST ldiagmin ] cvx def + FROM 0 0 XINDENT FANG ldiagatangle ldiagpadd /LFROM ldiagpointdef + FROM@ANGLE /LFROM@ANGLE ldiagangledef + TO 0 0 ZINDENT TANG ldiagatangle ldiagpadd /LTO ldiagpointdef + TO@ANGLE /LTO@ANGLE ldiagangledef + + CTR /LMID ldiagpointdef + 0 0 1 ft FANG 180 dg add ldiagatangle + 0 0 1 ft TANG 180 dg add ldiagatangle + ldiagangleto /LMID@ANGLE ldiagangledef + + FROM LFROM LMID LTO TO + + % (leaving ldiagvhlinepath) 0 ldiagdebugprint + % count ( stack size is) 1 ldiagdebugprint pop +} def + +% farr tarr { from } { to } xindent zindent radius ldiagvhcurvepath - +/ldiagvhcurvepath +{ + % (entering ldiagvhcurvepath) 0 ldiagdebugprint + % count ( stack size is) 1 ldiagdebugprint pop + /radius exch def + /zindent exch def + /xindent exch def + cvlit /to exch def + cvlit /from exch def + /toarrowlength exch def + /fromarrowlength exch def + + /CTR [ from (CTR) ldiagdolabel pop to (CTR) ldiagdolabel exch pop ] cvx def + /FANG [ from (CTR) ldiagdolabel CTR ldiagangleto ] cvx def + /TANG [ to (CTR) ldiagdolabel CTR ldiagangleto ] cvx def + + from (CTR) ldiagdolabel FANG from (CIRCUM) ldiagdolabel ldiagpadd + 0 0 fromarrowlength FANG ldiagatangle ldiagpadd /FROM ldiagpointdef + FANG /FROM@ANGLE ldiagangledef + + to (CTR) ldiagdolabel TANG to (CIRCUM) ldiagdolabel ldiagpadd + 0 0 toarrowlength TANG ldiagatangle ldiagpadd /TO ldiagpointdef + TANG 180 dg add /TO@ANGLE ldiagangledef + + /FDIST [ FROM CTR ldiagdistance ] cvx def + /TDIST [ TO CTR ldiagdistance ] cvx def + /RADIUS [ radius FDIST TDIST ldiagmin ldiagmin ] cvx def + /XINDENT [ xindent FDIST RADIUS sub ldiagmin ] cvx def + /ZINDENT [ zindent TDIST RADIUS sub ldiagmin ] cvx def + + FROM 0 0 XINDENT FANG ldiagatangle ldiagpadd /LFROM ldiagpointdef + FROM@ANGLE /LFROM@ANGLE ldiagangledef + TO 0 0 ZINDENT TANG ldiagatangle ldiagpadd /LTO ldiagpointdef + TO@ANGLE /LTO@ANGLE ldiagangledef + + /FCTR [ CTR 0 0 RADIUS FROM@ANGLE 180 dg add ldiagatangle ldiagpadd ] cvx def + /TCTR [ CTR 0 0 RADIUS TO@ANGLE ldiagatangle ldiagpadd ] cvx def + /XCTR [ CTR 0 0 RADIUS FROM@ANGLE 180 dg add ldiagatangle ldiagpadd + 0 0 RADIUS TO@ANGLE ldiagatangle ldiagpadd ] cvx def + XCTR 0 0 RADIUS XCTR CTR ldiagangleto ldiagatangle ldiagpadd + /LMID ldiagpointdef + FCTR TCTR ldiagangleto /LMID@ANGLE ldiagangledef + + FROM LFROM FCTR + {[XCTR clockwise]} {} {} {} {} {[XCTR]} {[XCTR clockwise]} {[XCTR]} + FCTR TCTR ldiagangleto ldiagquadcase + TCTR LTO TO + + % (leaving ldiagvhcurvepath) 0 ldiagdebugprint + % count ( stack size is) 1 ldiagdebugprint pop +} def + +% farr tarr { from } { to } xindent zindent ldiaghvlinepath - +/ldiaghvlinepath +{ + % (entering ldiaghvlinepath) 0 ldiagdebugprint + % count ( stack size is) 1 ldiagdebugprint pop + /zindent exch def + /xindent exch def + cvlit /to exch def + cvlit /from exch def + /toarrowlength exch def + /fromarrowlength exch def + + /CTR [ to (CTR) ldiagdolabel pop from (CTR) ldiagdolabel exch pop ] cvx def + /FANG [ from (CTR) ldiagdolabel CTR ldiagangleto ] cvx def + /TANG [ to (CTR) ldiagdolabel CTR ldiagangleto ] cvx def + + from (CTR) ldiagdolabel FANG from (CIRCUM) ldiagdolabel ldiagpadd + 0 0 fromarrowlength FANG ldiagatangle ldiagpadd /FROM ldiagpointdef + FANG /FROM@ANGLE ldiagangledef + + to (CTR) ldiagdolabel TANG to (CIRCUM) ldiagdolabel ldiagpadd + 0 0 toarrowlength TANG ldiagatangle ldiagpadd /TO ldiagpointdef + TANG 180 dg add /TO@ANGLE ldiagangledef + + /FDIST [ FROM CTR ldiagdistance ] cvx def + /TDIST [ TO CTR ldiagdistance ] cvx def + /XINDENT [ xindent FDIST ldiagmin ] cvx def + /ZINDENT [ zindent TDIST ldiagmin ] cvx def + + FROM 0 0 XINDENT FANG ldiagatangle ldiagpadd /LFROM ldiagpointdef + FROM@ANGLE /LFROM@ANGLE ldiagangledef + TO 0 0 ZINDENT TANG ldiagatangle ldiagpadd /LTO ldiagpointdef + TO@ANGLE /LTO@ANGLE ldiagangledef + + CTR /LMID ldiagpointdef + 0 0 1 ft FANG 180 dg add ldiagatangle + 0 0 1 ft TANG 180 dg add ldiagatangle ldiagangleto + /LMID@ANGLE ldiagangledef + + FROM LFROM LMID LTO TO + + % (leaving ldiaghvlinepath) 0 ldiagdebugprint + % count ( stack size is) 1 ldiagdebugprint pop +} def + +% farr tarr { from } { to } xindent zindent radius ldiaghvcurvepath - +/ldiaghvcurvepath +{ + % (entering ldiaghvcurvepath) 0 ldiagdebugprint + % count ( stack size is) 1 ldiagdebugprint pop + /radius exch def + /zindent exch def + /xindent exch def + cvlit /to exch def + cvlit /from exch def + /toarrowlength exch def + /fromarrowlength exch def + + /CTR [ to (CTR) ldiagdolabel pop from (CTR) ldiagdolabel exch pop ] cvx def + /FANG [ from (CTR) ldiagdolabel CTR ldiagangleto ] cvx def + /TANG [ to (CTR) ldiagdolabel CTR ldiagangleto ] cvx def + + from (CTR) ldiagdolabel FANG from (CIRCUM) ldiagdolabel ldiagpadd + 0 0 fromarrowlength FANG ldiagatangle ldiagpadd /FROM ldiagpointdef + FANG /FROM@ANGLE ldiagangledef + + to (CTR) ldiagdolabel TANG to (CIRCUM) ldiagdolabel ldiagpadd + 0 0 toarrowlength TANG ldiagatangle ldiagpadd /TO ldiagpointdef + TANG 180 dg add /TO@ANGLE ldiagangledef + + /FDIST [ FROM CTR ldiagdistance ] cvx def + /TDIST [ TO CTR ldiagdistance ] cvx def + /RADIUS [ radius FDIST TDIST ldiagmin ldiagmin ] cvx def + /XINDENT [ xindent FDIST RADIUS sub ldiagmin ] cvx def + /ZINDENT [ zindent TDIST RADIUS sub ldiagmin ] cvx def + FROM 0 0 XINDENT FANG ldiagatangle ldiagpadd /LFROM ldiagpointdef + FROM@ANGLE /LFROM@ANGLE ldiagangledef + TO 0 0 ZINDENT TANG ldiagatangle ldiagpadd /LTO ldiagpointdef + TO@ANGLE /LTO@ANGLE ldiagangledef + + /FCTR [ CTR 0 0 RADIUS FROM@ANGLE 180 dg add ldiagatangle ldiagpadd ] cvx def + /TCTR [ CTR 0 0 RADIUS TO@ANGLE ldiagatangle ldiagpadd ] cvx def + /XCTR [ CTR 0 0 RADIUS FROM@ANGLE 180 dg add ldiagatangle ldiagpadd + 0 0 RADIUS TO@ANGLE ldiagatangle ldiagpadd ] cvx def + XCTR 0 0 RADIUS XCTR CTR ldiagangleto ldiagatangle ldiagpadd + /LMID ldiagpointdef + FCTR TCTR ldiagangleto /LMID@ANGLE ldiagangledef + + FROM LFROM FCTR + {[XCTR]} {} {} {} {} {[XCTR clockwise]} {[XCTR]} {[XCTR clockwise]} + FCTR TCTR ldiagangleto ldiagquadcase + TCTR LTO TO + + % (leaving ldiaghvcurvepath) 0 ldiagdebugprint + % count ( stack size is) 1 ldiagdebugprint pop +} def + +% farr tarr { from } { to } xindent zindent bias ldiaglvrlinepath - +/ldiaglvrlinepath +{ + % (entering ldiaglvrlinepath) 0 ldiagdebugprint + % count ( stack size is) 1 ldiagdebugprint pop + /bias exch def + /zindent exch def + /xindent exch def + cvlit /to exch def + cvlit /from exch def + /toarrowlength exch def + /fromarrowlength exch def + + from (CTR) ldiagdolabel 180 dg from (CIRCUM) ldiagdolabel ldiagpadd + 0 0 fromarrowlength 180 dg ldiagatangle ldiagpadd /FROM ldiagpointdef + 180 dg /FROM@ANGLE ldiagangledef + + to (CTR) ldiagdolabel 180 dg to (CIRCUM) ldiagdolabel ldiagpadd + 0 0 toarrowlength 180 dg ldiagatangle ldiagpadd /TO ldiagpointdef + 0 dg /TO@ANGLE ldiagangledef + + /XLEFT [ FROM pop TO pop ldiagmin bias sub ] cvx def + XLEFT FROM exch pop /P1 ldiagpointdef + XLEFT TO exch pop /P2 ldiagpointdef + /VERT [ P1 P2 ldiagangleto ] cvx def + P1 P1 0 0 1 ft 180 dg ldiagatangle ldiagpadd 0 0 1 ft VERT ldiagatangle + ldiagpadd ldiagangleto /P1@ANGLE ldiagangledef + P2 P2 0 0 1 ft 0 dg ldiagatangle ldiagpadd 0 0 1 ft VERT ldiagatangle + ldiagpadd ldiagangleto /P2@ANGLE ldiagangledef + + P1 0.5 ldiagpmul P2 0.5 ldiagpmul ldiagpadd /LMID ldiagpointdef + VERT /LMID@ANGLE ldiagangledef + + /XINDENT [ xindent FROM P1 ldiagdistance ldiagmin ] cvx def + /ZINDENT [ zindent P2 TO ldiagdistance ldiagmin ] cvx def + XINDENT 0 FROM ldiagpsub /LFROM ldiagpointdef + 180 dg /LFROM@ANGLE ldiagangledef + ZINDENT 0 TO ldiagpsub /LTO ldiagpointdef + 0 dg /LTO@ANGLE ldiagangledef + + FROM LFROM P1 LMID P2 LTO TO + + % (leaving ldiaglvrlinepath) 0 ldiagdebugprint + % count ( stack size is) 1 ldiagdebugprint pop +} def + +% farr tarr { from } { to } xindent zindent bias radius ldiaglvrcurvepath - +/ldiaglvrcurvepath +{ + % (entering ldiaglvrcurvepath) 0 ldiagdebugprint + % count ( stack size is) 1 ldiagdebugprint pop + /radius exch def + /bias exch def + /zindent exch def + /xindent exch def + cvlit /to exch def + cvlit /from exch def + /toarrowlength exch def + /fromarrowlength exch def + + from (CTR) ldiagdolabel 180 dg from (CIRCUM) ldiagdolabel ldiagpadd 0 0 + fromarrowlength 180 dg ldiagatangle ldiagpadd /FROM ldiagpointdef + 180 dg /FROM@ANGLE ldiagangledef + to (CTR) ldiagdolabel 180 dg to (CIRCUM) ldiagdolabel ldiagpadd 0 0 + toarrowlength 180 dg ldiagatangle ldiagpadd /TO ldiagpointdef + 0 dg /TO@ANGLE ldiagangledef + /XLEFT [ FROM pop TO pop ldiagmin bias sub ] cvx def + /XP1 [ XLEFT FROM exch pop ] cvx def + /XP2 [ XLEFT TO exch pop ] cvx def + /VERT [ XP1 XP2 ldiagangleto ] cvx def + XP1 0.5 ldiagpmul XP2 0.5 ldiagpmul ldiagpadd /LMID ldiagpointdef + VERT /LMID@ANGLE ldiagangledef + /XINDENT [ xindent FROM XP1 ldiagdistance ldiagmin ] cvx def + /ZINDENT [ zindent XP2 TO ldiagdistance ldiagmin ] cvx def + XINDENT 0 FROM ldiagpsub /LFROM ldiagpointdef + 180 dg /LFROM@ANGLE ldiagangledef + ZINDENT 0 TO ldiagpsub /LTO ldiagpointdef + 0 dg /LTO@ANGLE ldiagangledef + /RADIUS [ radius XP1 XP2 ldiagdistance 2 div ldiagmin ] cvx def + /XP1PRE [ XP1 0 0 RADIUS 0 dg ldiagatangle ldiagpadd ] cvx def + /XP1POST [ XP1 0 0 RADIUS VERT ldiagatangle ldiagpadd ] cvx def + /XP1CTR [ XP1PRE 0 0 RADIUS VERT ldiagatangle ldiagpadd ] cvx def + XP1CTR 0 0 RADIUS XP1CTR XP1 ldiagangleto ldiagatangle ldiagpadd + /P1 ldiagpointdef + XP1PRE XP1POST ldiagangleto /P1@ANGLE ldiagangledef + /XP2PRE [ 0 0 RADIUS VERT ldiagatangle XP2 ldiagpsub ] cvx def + /XP2POST [ XP2 0 0 RADIUS 0 dg ldiagatangle ldiagpadd ] cvx def + /XP2CTR [ XP2PRE 0 0 RADIUS 0 dg ldiagatangle ldiagpadd ] cvx def + XP2CTR 0 0 RADIUS XP2CTR XP2 ldiagangleto ldiagatangle ldiagpadd + /P2 ldiagpointdef + XP2PRE XP2POST ldiagangleto /P2@ANGLE ldiagangledef + FROM LFROM XP1PRE + { } { [XP1CTR] P1 [XP1CTR] } { } { [XP1CTR clockwise] P1 [XP1CTR clockwise] } + { } { } { } { } VERT round ldiagquadcase + XP1POST LMID XP2PRE + { } { [XP2CTR] P2 [XP2CTR] } { } { [XP2CTR clockwise] P2 [XP2CTR clockwise] } + { } { } { } { } VERT round ldiagquadcase + XP2POST LTO TO + + % (leaving ldiaglvrcurvepath) 0 ldiagdebugprint + % count ( stack size is) 1 ldiagdebugprint pop +} def + +% farr tarr { from } { to } xindent zindent bias ldiagrvllinepath - +/ldiagrvllinepath +{ + % (entering ldiagrvllinepath) 0 ldiagdebugprint + % count ( stack size is) 1 ldiagdebugprint pop + /bias exch def + /zindent exch def + /xindent exch def + cvlit /to exch def + cvlit /from exch def + /toarrowlength exch def + /fromarrowlength exch def + + from (CTR) ldiagdolabel 0 dg from (CIRCUM) ldiagdolabel ldiagpadd + 0 0 fromarrowlength 0 dg ldiagatangle ldiagpadd /FROM ldiagpointdef + 0 dg /FROM@ANGLE ldiagangledef + to (CTR) ldiagdolabel 0 dg to (CIRCUM) ldiagdolabel ldiagpadd + 0 0 toarrowlength 0 dg ldiagatangle ldiagpadd /TO ldiagpointdef + 180 dg /TO@ANGLE ldiagangledef + /XRIGHT [ FROM pop TO pop ldiagmax bias add ] cvx def + XRIGHT FROM exch pop /P1 ldiagpointdef + XRIGHT TO exch pop /P2 ldiagpointdef + /VERT [ P1 P2 ldiagangleto ] cvx def + P1 P1 0 0 1 ft 0 dg ldiagatangle ldiagpadd 0 0 1 ft VERT ldiagatangle + ldiagpadd ldiagangleto /P1@ANGLE ldiagangledef + P2 P2 0 0 1 ft 180 dg ldiagatangle ldiagpadd 0 0 1 ft VERT ldiagatangle + ldiagpadd ldiagangleto /P2@ANGLE ldiagangledef + P1 0.5 ldiagpmul P2 0.5 ldiagpmul ldiagpadd /LMID ldiagpointdef + VERT /LMID@ANGLE ldiagangledef + /XINDENT [ xindent FROM P1 ldiagdistance ldiagmin ] cvx def + /ZINDENT [ zindent P2 TO ldiagdistance ldiagmin ] cvx def + FROM XINDENT 0 ldiagpadd /LFROM ldiagpointdef + 0 dg /LFROM@ANGLE ldiagangledef + TO ZINDENT 0 ldiagpadd /LTO ldiagpointdef + 180 dg /LTO@ANGLE ldiagangledef + FROM LFROM P1 LMID P2 LTO TO + + % (leaving ldiagrvllinepath) 0 ldiagdebugprint + % count ( stack size is) 1 ldiagdebugprint pop +} def + + +% farr tarr { from } { to } xindent zindent bias radius ldiagrvlcurvepath - +/ldiagrvlcurvepath +{ + % (entering ldiagrvlcurvepath) 0 ldiagdebugprint + % count ( stack size is) 1 ldiagdebugprint pop + /radius exch def + /bias exch def + /zindent exch def + /xindent exch def + cvlit /to exch def + cvlit /from exch def + /toarrowlength exch def + /fromarrowlength exch def + + from (CTR) ldiagdolabel 0 dg from (CIRCUM) ldiagdolabel ldiagpadd + 0 0 fromarrowlength 0 dg ldiagatangle ldiagpadd /FROM ldiagpointdef + 0 dg /FROM@ANGLE ldiagangledef + to (CTR) ldiagdolabel 0 dg to (CIRCUM) ldiagdolabel ldiagpadd + 0 0 toarrowlength 0 dg ldiagatangle ldiagpadd /TO ldiagpointdef + 180 dg /TO@ANGLE ldiagangledef + /XRIGHT [ FROM pop TO pop ldiagmax bias add ] cvx def + /XP1 [ XRIGHT FROM exch pop ] cvx def + /XP2 [ XRIGHT TO exch pop ] cvx def + /VERT [ XP1 XP2 ldiagangleto ] cvx def + XP1 0.5 ldiagpmul XP2 0.5 ldiagpmul ldiagpadd /LMID ldiagpointdef + VERT /LMID@ANGLE ldiagangledef + /XINDENT [ xindent FROM XP1 ldiagdistance ldiagmin ] cvx def + /ZINDENT [ zindent XP2 TO ldiagdistance ldiagmin ] cvx def + FROM XINDENT 0 ldiagpadd /LFROM ldiagpointdef + 0 dg /LFROM@ANGLE ldiagangledef + TO ZINDENT 0 ldiagpadd /LTO ldiagpointdef + 180 dg /LTO@ANGLE ldiagangledef + /RADIUS [ radius XP1 XP2 ldiagdistance 0.5 mul ldiagmin ] cvx def + /XP1PRE [ XP1 0 0 RADIUS 180 dg ldiagatangle ldiagpadd ] cvx def + /XP1POST [ XP1 0 0 RADIUS VERT ldiagatangle ldiagpadd ] cvx def + /XP1CTR [ XP1PRE 0 0 RADIUS VERT ldiagatangle ldiagpadd ] cvx def + XP1CTR 0 0 RADIUS XP1CTR XP1 ldiagangleto ldiagatangle ldiagpadd + /P1 ldiagpointdef + XP1PRE XP1POST ldiagangleto /P1@ANGLE ldiagangledef + /XP2PRE [ 0 0 RADIUS VERT ldiagatangle XP2 ldiagpsub ] cvx def + /XP2POST [ XP2 0 0 RADIUS 180 dg ldiagatangle ldiagpadd ] cvx def + /XP2CTR [ XP2PRE 0 0 RADIUS 180 dg ldiagatangle ldiagpadd ] cvx def + XP2CTR 0 0 RADIUS XP2CTR XP2 ldiagangleto ldiagatangle ldiagpadd + /P2 ldiagpointdef + XP2PRE XP2POST ldiagangleto /P2@ANGLE ldiagangledef + FROM LFROM XP1PRE + {} {[XP1CTR clockwise] P1 [XP1CTR clockwise]} {} {[XP1CTR] P1 [XP1CTR]} + {} {} {} {} VERT round ldiagquadcase + XP1POST LMID XP2PRE + {} {[XP2CTR clockwise] P2 [XP2CTR clockwise]} {} {[XP2CTR] P2 [XP2CTR]} + {} {} {} {} VERT round ldiagquadcase + XP2POST LTO TO + + % (leaving ldiagrvlcurvepath) 0 ldiagdebugprint + % count ( stack size is) 1 ldiagdebugprint pop +} def + +% farr tarr { from } { to } xindent zindent bias fbias tbias ldiagdwraplinepath - +/ldiagdwraplinepath +{ + % (entering ldiagdwraplinepath) 0 ldiagdebugprint + % count ( stack size is) 1 ldiagdebugprint pop + /tbias exch def + /fbias exch def + /bias exch def + /zindent exch def + /xindent exch def + cvlit /to exch def + cvlit /from exch def + /toarrowlength exch def + /fromarrowlength exch def + + /DIRN [ from (CTR) ldiagdolabel pop to (CTR) ldiagdolabel pop + lt { 180 dg } { 0 dg } ifelse ] cvx def + from (CTR) ldiagdolabel DIRN from (CIRCUM) ldiagdolabel ldiagpadd 0 0 + fromarrowlength DIRN ldiagatangle ldiagpadd /FROM ldiagpointdef + DIRN /FROM@ANGLE ldiagangledef + to (CTR) ldiagdolabel DIRN 180 dg add to (CIRCUM) ldiagdolabel ldiagpadd + 0 0 toarrowlength DIRN 180 dg add ldiagatangle ldiagpadd /TO ldiagpointdef + DIRN /TO@ANGLE ldiagangledef + FROM 0 0 fbias 0 ldiagmax DIRN ldiagatangle ldiagpadd /P1 ldiagpointdef + DIRN 180 dg eq { 225 dg } { -45 dg } ifelse /P1@ANGLE ldiagangledef + TO 0 0 tbias 0 ldiagmax DIRN 180 dg add ldiagatangle ldiagpadd + /P4 ldiagpointdef + DIRN 180 dg eq { 135 dg } { 45 dg } ifelse /P4@ANGLE ldiagangledef + /YC [ from (CTR) ldiagdolabel 270 dg from (CIRCUM) ldiagdolabel ldiagpadd + exch pop to (CTR) ldiagdolabel 270 dg to (CIRCUM) ldiagdolabel ldiagpadd + exch pop ldiagmin bias 0 ldiagmax sub ] cvx def + P1 pop YC /P2 ldiagpointdef + P4@ANGLE 180 dg sub /P2@ANGLE ldiagangledef + P4 pop YC /P3 ldiagpointdef + P1@ANGLE 180 dg sub /P3@ANGLE ldiagangledef + /XINDENT [ xindent FROM P1 ldiagdistance ldiagmin ] cvx def + FROM 0 0 XINDENT DIRN ldiagatangle ldiagpadd /LFROM ldiagpointdef + FROM@ANGLE /LFROM@ANGLE ldiagangledef + /ZINDENT [ zindent TO P4 ldiagdistance ldiagmin ] cvx def + TO 0 0 ZINDENT DIRN 180 dg add ldiagatangle ldiagpadd /LTO ldiagpointdef + TO@ANGLE /LTO@ANGLE ldiagangledef + P2 0.5 ldiagpmul P3 0.5 ldiagpmul ldiagpadd /LMID ldiagpointdef + DIRN 180 dg sub /LMID@ANGLE ldiagangledef + FROM P1 P2 P3 P4 TO + + % (leaving ldiagdwraplinepath) 0 ldiagdebugprint + % count ( stack size is) 1 ldiagdebugprint pop +} def + +% farr tarr { from } { to } xindent zindent bias fbias tbias radius +% ldiagdwrapcurvepath - +/ldiagdwrapcurvepath +{ + % (entering ldiagdwrapcurvepath) 0 ldiagdebugprint + % count ( stack size is) 1 ldiagdebugprint pop + /radius exch def + /tbias exch def + /fbias exch def + /bias exch def + /zindent exch def + /xindent exch def + cvlit /to exch def + cvlit /from exch def + /toarrowlength exch def + /fromarrowlength exch def + + /DIRN [ from (CTR) ldiagdolabel pop to (CTR) ldiagdolabel pop lt + { 180 dg } { 0 dg } ifelse ] cvx def + /CLOCK [ from (CTR) ldiagdolabel pop to (CTR) ldiagdolabel pop lt + { anticlockwise } { clockwise } ifelse ] cvx def + from (CTR) ldiagdolabel DIRN from (CIRCUM) ldiagdolabel ldiagpadd + 0 0 fromarrowlength DIRN ldiagatangle ldiagpadd /FROM ldiagpointdef + DIRN /FROM@ANGLE ldiagangledef + to (CTR) ldiagdolabel DIRN 180 dg add to (CIRCUM) ldiagdolabel ldiagpadd + 0 0 toarrowlength DIRN 180 dg add ldiagatangle ldiagpadd /TO ldiagpointdef + DIRN /TO@ANGLE ldiagangledef + /XP1 [ FROM 0 0 fbias 0 ldiagmax DIRN ldiagatangle ldiagpadd ] cvx def + /XP4 [ TO 0 0 tbias 0 ldiagmax DIRN 180 dg add ldiagatangle ldiagpadd ] cvx def + /YC [ from (CTR) ldiagdolabel 270 dg from (CIRCUM) ldiagdolabel ldiagpadd + exch pop to (CTR) ldiagdolabel 270 dg to (CIRCUM) ldiagdolabel ldiagpadd + exch pop ldiagmin bias 0 ldiagmax sub ] cvx def + /XP2 [ XP1 pop YC ] cvx def + /XP3 [ XP4 pop YC ] cvx def + /RP1 [ radius XP1 FROM ldiagdistance XP1 XP2 ldiagdistance 2 div + ldiagmin ldiagmin ] cvx def + /XP1PRE [ XP1 0 0 RP1 XP1 FROM ldiagangleto ldiagatangle ldiagpadd ] cvx def + /XP1POST [ XP1 0 0 RP1 XP1 XP2 ldiagangleto ldiagatangle ldiagpadd ] cvx def + /XP1CTR [ XP1PRE 0 0 RP1 XP1 XP2 ldiagangleto ldiagatangle ldiagpadd ] cvx def + XP1CTR 0 0 RP1 XP1CTR XP1 ldiagangleto ldiagatangle ldiagpadd /P1 ldiagpointdef + XP1CTR P1 ldiagangleto DIRN add 90 dg sub /P1@ANGLE ldiagangledef + /RP2 [ radius XP1 XP2 ldiagdistance 2 div XP2 XP3 ldiagdistance 2 div + ldiagmin ldiagmin ] cvx def + /XP2PRE [ XP2 0 0 RP2 XP2 XP1 ldiagangleto ldiagatangle ldiagpadd ] cvx def + /XP2POST [ XP2 0 0 RP2 XP2 XP3 ldiagangleto ldiagatangle ldiagpadd ] cvx def + /XP2CTR [ XP2PRE 0 0 RP2 XP2 XP3 ldiagangleto ldiagatangle ldiagpadd ] cvx def + XP2CTR 0 0 RP2 XP2CTR XP2 ldiagangleto ldiagatangle ldiagpadd /P2 ldiagpointdef + XP2CTR P2 ldiagangleto DIRN add 90 dg sub /P2@ANGLE ldiagangledef + /RP3 [ radius XP2 XP3 ldiagdistance 2 div XP3 XP4 ldiagdistance 2 div + ldiagmin ldiagmin ] cvx def + /XP3PRE [ XP3 0 0 RP3 XP3 XP2 ldiagangleto ldiagatangle ldiagpadd ] cvx def + /XP3POST [ XP3 0 0 RP3 XP3 XP4 ldiagangleto ldiagatangle ldiagpadd ] cvx def + /XP3CTR [ XP3PRE 0 0 RP3 XP3 XP4 ldiagangleto ldiagatangle ldiagpadd ] cvx def + XP3CTR 0 0 RP3 XP3CTR XP3 ldiagangleto ldiagatangle ldiagpadd /P3 ldiagpointdef + XP3CTR P3 ldiagangleto DIRN add 90 dg sub /P3@ANGLE ldiagangledef + /RP4 [ radius XP4 XP3 ldiagdistance 2 div XP4 TO ldiagdistance + ldiagmin ldiagmin ] cvx def + /XP4PRE [ XP4 0 0 RP4 XP4 XP3 ldiagangleto ldiagatangle ldiagpadd ] cvx def + /XP4POST [ XP4 0 0 RP4 XP4 TO ldiagangleto ldiagatangle ldiagpadd ] cvx def + /XP4CTR [ XP4PRE 0 0 RP4 XP4 TO ldiagangleto ldiagatangle ldiagpadd ] cvx def + XP4CTR 0 0 RP4 XP4CTR XP4 ldiagangleto ldiagatangle ldiagpadd /P4 ldiagpointdef + XP4CTR P4 ldiagangleto DIRN add 90 dg sub /P4@ANGLE ldiagangledef + /XINDENT [ xindent FROM XP1PRE ldiagdistance ldiagmin ] cvx def + FROM 0 0 XINDENT DIRN ldiagatangle ldiagpadd /LFROM ldiagpointdef + FROM@ANGLE /LFROM@ANGLE ldiagangledef + XP2 0.5 ldiagpmul XP3 0.5 ldiagpmul ldiagpadd /LMID ldiagpointdef + DIRN 180 dg sub /LMID@ANGLE ldiagangledef + /ZINDENT [ zindent TO XP4POST ldiagdistance ldiagmin ] cvx def + TO 0 0 ZINDENT DIRN 180 dg add ldiagatangle ldiagpadd /LTO ldiagpointdef + TO@ANGLE /LTO@ANGLE ldiagangledef + FROM LFROM + XP1PRE [XP1CTR CLOCK] XP1POST + XP2PRE [XP2CTR CLOCK] XP2POST + LMID + XP3PRE [XP3CTR CLOCK] XP3POST + XP4PRE [XP4CTR CLOCK] XP4POST + LTO TO + + % (leaving ldiagdwrapcurvepath) 0 ldiagdebugprint + % count ( stack size is) 1 ldiagdebugprint pop +} def + +% farr tarr { from } { to } xindent zindent bias fbias tbias ldiaguwraplinepath - +/ldiaguwraplinepath +{ + % (entering ldiaguwraplinepath) 0 ldiagdebugprint + % count ( stack size is) 1 ldiagdebugprint pop + /tbias exch def + /fbias exch def + /bias exch def + /zindent exch def + /xindent exch def + cvlit /to exch def + cvlit /from exch def + /toarrowlength exch def + /fromarrowlength exch def + + /DIRN [ from (CTR) ldiagdolabel pop to (CTR) ldiagdolabel pop lt + { 180 dg } { 0 dg } ifelse ] cvx def + from (CTR) ldiagdolabel DIRN from (CIRCUM) ldiagdolabel ldiagpadd + 0 0 fromarrowlength DIRN ldiagatangle ldiagpadd /FROM ldiagpointdef + DIRN /FROM@ANGLE ldiagangledef + to (CTR) ldiagdolabel DIRN 180 dg add to (CIRCUM) ldiagdolabel ldiagpadd + 0 0 toarrowlength DIRN 180 dg add ldiagatangle ldiagpadd /TO ldiagpointdef + DIRN /TO@ANGLE ldiagangledef + FROM 0 0 fbias 0 ldiagmax DIRN ldiagatangle ldiagpadd /P1 ldiagpointdef + DIRN 180 dg eq { 135 dg } { 45 dg } ifelse /P1@ANGLE ldiagangledef + TO 0 0 tbias 0 ldiagmax DIRN 180 dg add ldiagatangle ldiagpadd + /P4 ldiagpointdef + DIRN 180 dg eq { 225 dg } { -45 dg } ifelse /P4@ANGLE ldiagangledef + /YC [ from (CTR) ldiagdolabel 90 dg from (CIRCUM) ldiagdolabel ldiagpadd + exch pop to (CTR) ldiagdolabel 90 dg to (CIRCUM) ldiagdolabel ldiagpadd + exch pop ldiagmax bias 0 ldiagmax add ] cvx def + P1 pop YC /P2 ldiagpointdef + P4@ANGLE 180 dg sub /P2@ANGLE ldiagangledef + P4 pop YC /P3 ldiagpointdef + P1@ANGLE 180 dg sub /P3@ANGLE ldiagangledef + /XINDENT [ xindent FROM P1 ldiagdistance ldiagmin ] cvx def + FROM 0 0 XINDENT DIRN ldiagatangle ldiagpadd /LFROM ldiagpointdef + FROM@ANGLE /LFROM@ANGLE ldiagangledef + /ZINDENT [ zindent TO P4 ldiagdistance ldiagmin ] cvx def + TO 0 0 ZINDENT DIRN 180 dg add ldiagatangle ldiagpadd /LTO ldiagpointdef + TO@ANGLE /LTO@ANGLE ldiagangledef + P2 0.5 ldiagpmul P3 0.5 ldiagpmul ldiagpadd /LMID ldiagpointdef + DIRN 180 dg sub /LMID@ANGLE ldiagangledef + FROM P1 P2 P3 P4 TO + + % (leaving ldiaguwraplinepath) 0 ldiagdebugprint + % count ( stack size is) 1 ldiagdebugprint pop +} def + +% farr tarr { from } { to } xindent zindent bias fbias tbias radius +% ldiaguwrapcurvepath - +/ldiaguwrapcurvepath +{ + % (entering ldiaguwrapcurvepath) 0 ldiagdebugprint + % count ( stack size is) 1 ldiagdebugprint pop + /radius exch def + /tbias exch def + /fbias exch def + /bias exch def + /zindent exch def + /xindent exch def + cvlit /to exch def + cvlit /from exch def + /toarrowlength exch def + /fromarrowlength exch def + + /DIRN [ from (CTR) ldiagdolabel pop to (CTR) ldiagdolabel pop lt + { 180 dg } { 0 dg } ifelse ] cvx def + /CLOCK [ from (CTR) ldiagdolabel pop to (CTR) ldiagdolabel pop lt + { clockwise } { anticlockwise } ifelse ] cvx def + from (CTR) ldiagdolabel DIRN from (CIRCUM) ldiagdolabel ldiagpadd + 0 0 fromarrowlength DIRN ldiagatangle ldiagpadd /FROM ldiagpointdef + DIRN /FROM@ANGLE ldiagangledef + to (CTR) ldiagdolabel DIRN 180 dg add to (CIRCUM) ldiagdolabel ldiagpadd + 0 0 toarrowlength DIRN 180 dg add ldiagatangle ldiagpadd /TO ldiagpointdef + DIRN /TO@ANGLE ldiagangledef + /XP1 [ FROM 0 0 fbias 0 ldiagmax DIRN ldiagatangle ldiagpadd ] cvx def + /XP4 [ TO 0 0 tbias 0 ldiagmax DIRN 180 dg add ldiagatangle ldiagpadd ] cvx def + /YC [ from (CTR) ldiagdolabel 90 dg from (CIRCUM) ldiagdolabel ldiagpadd + exch pop to (CTR) ldiagdolabel 90 dg to (CIRCUM) ldiagdolabel ldiagpadd + exch pop ldiagmax bias 0 ldiagmax add ] cvx def + /XP2 [ XP1 pop YC ] cvx def + /XP3 [ XP4 pop YC ] cvx def + /RP1 [ radius XP1 FROM ldiagdistance XP1 XP2 ldiagdistance 2 div + ldiagmin ldiagmin ] cvx def + /XP1PRE [ XP1 0 0 RP1 XP1 FROM ldiagangleto ldiagatangle ldiagpadd ] cvx def + /XP1POST [ XP1 0 0 RP1 XP1 XP2 ldiagangleto ldiagatangle ldiagpadd ] cvx def + /XP1CTR [ XP1PRE 0 0 RP1 XP1 XP2 ldiagangleto ldiagatangle ldiagpadd ] cvx def + XP1CTR 0 0 RP1 XP1CTR XP1 ldiagangleto ldiagatangle ldiagpadd /P1 ldiagpointdef + XP1CTR P1 ldiagangleto DIRN add 90 dg add /P1@ANGLE ldiagangledef + /RP2 [ radius XP1 XP2 ldiagdistance 2 div XP2 XP3 ldiagdistance 2 div + ldiagmin ldiagmin ] cvx def + /XP2PRE [ XP2 0 0 RP2 XP2 XP1 ldiagangleto ldiagatangle ldiagpadd ] cvx def + /XP2POST [ XP2 0 0 RP2 XP2 XP3 ldiagangleto ldiagatangle ldiagpadd ] cvx def + /XP2CTR [ XP2PRE 0 0 RP2 XP2 XP3 ldiagangleto ldiagatangle ldiagpadd ] cvx def + XP2CTR 0 0 RP2 XP2CTR XP2 ldiagangleto ldiagatangle ldiagpadd /P2 ldiagpointdef + XP2CTR P2 ldiagangleto DIRN add 90 dg add /P2@ANGLE ldiagangledef + /RP3 [ radius XP2 XP3 ldiagdistance 2 div XP3 XP4 ldiagdistance 2 div + ldiagmin ldiagmin ] cvx def + /XP3PRE [ XP3 0 0 RP3 XP3 XP2 ldiagangleto ldiagatangle ldiagpadd ] cvx def + /XP3POST [ XP3 0 0 RP3 XP3 XP4 ldiagangleto ldiagatangle ldiagpadd ] cvx def + /XP3CTR [ XP3PRE 0 0 RP3 XP3 XP4 ldiagangleto ldiagatangle ldiagpadd ] cvx def + XP3CTR 0 0 RP3 XP3CTR XP3 ldiagangleto ldiagatangle ldiagpadd /P3 ldiagpointdef + XP3CTR P3 ldiagangleto DIRN add 90 dg add /P3@ANGLE ldiagangledef + /RP4 [ radius XP4 XP3 ldiagdistance 2 div XP4 TO ldiagdistance + ldiagmin ldiagmin ] cvx def + /XP4PRE [ XP4 0 0 RP4 XP4 XP3 ldiagangleto ldiagatangle ldiagpadd ] cvx def + /XP4POST [ XP4 0 0 RP4 XP4 TO ldiagangleto ldiagatangle ldiagpadd ] cvx def + /XP4CTR [ XP4PRE 0 0 RP4 XP4 TO ldiagangleto ldiagatangle ldiagpadd ] cvx def + XP4CTR 0 0 RP4 XP4CTR XP4 ldiagangleto ldiagatangle ldiagpadd /P4 ldiagpointdef + XP4CTR P4 ldiagangleto DIRN add 90 dg add /P4@ANGLE ldiagangledef + /XINDENT [ xindent FROM XP1PRE ldiagdistance ldiagmin ] cvx def + FROM 0 0 XINDENT DIRN ldiagatangle ldiagpadd /LFROM ldiagpointdef + FROM@ANGLE /LFROM@ANGLE ldiagangledef + XP2 0.5 ldiagpmul XP3 0.5 ldiagpmul ldiagpadd /LMID ldiagpointdef + DIRN 180 dg sub /LMID@ANGLE ldiagangledef + /ZINDENT [ zindent TO XP4POST ldiagdistance ldiagmin ] cvx def + TO 0 0 ZINDENT DIRN 180 dg add ldiagatangle ldiagpadd /LTO ldiagpointdef + TO@ANGLE /LTO@ANGLE ldiagangledef + FROM LFROM + XP1PRE [XP1CTR CLOCK] XP1POST + XP2PRE [XP2CTR CLOCK] XP2POST + LMID + XP3PRE [XP3CTR CLOCK] XP3POST + XP4PRE [XP4CTR CLOCK] XP4POST + LTO TO + + % (leaving ldiaguwrapcurvepath) 0 ldiagdebugprint + % count ( stack size is) 1 ldiagdebugprint pop +} def + +% shape and labels of the @SolidArrowHead symbol +% - ldiagsolidarrowhead - +/ldiagsolidarrowhead +{ + 0 0 xsize ysize 0.5 mul 0 ysize +} def + +% shape and labels of the @OpenArrowHead symbol +% <pathwidth> ldiagopenarrowhead - +/ldiagopenarrowhead +{ + /pathwidth exch def + /PSW [ 0 0 ] cvx def + /PNW [ 0 ysize ] cvx def + /PE [ xsize ysize 0.5 mul ] cvx def + /REL [ 0 0 pathwidth PE PNW ldiagangleto 90 add ldiagatangle ] cvx def + /PNA [ 0 ysize 0.5 mul pathwidth 0.5 mul add ] cvx def + /PSA [ 0 ysize 0.5 mul pathwidth 0.5 mul sub ] cvx def + /PNI [ PNA PNA xsize 0 ldiagpadd PNW REL ldiagpadd + PE REL ldiagpadd ldiaglineintersect ] cvx def + /PSI [ 0 pathwidth PNI ldiagpsub ] cvx def + + PSW PE PNW PNI PNA PSA PSI PSW +} def + +% shape and labels of the @HalfOpenArrowHead symbol +% <pathwidth> ldiaghalfopenarrowhead - +/ldiaghalfopenarrowhead +{ + /pathwidth exch def + 0 0 + xsize ysize 0.5 mul + 0 ysize + xsize 0.3 mul ysize 0.5 mul pathwidth 0.5 mul add + 0 ysize 0.5 mul pathwidth 0.5 mul add + 0 ysize 0.5 mul pathwidth 0.5 mul sub + xsize 0.3 mul ysize 0.5 mul pathwidth 0.5 mul sub + 0 0 +} def + +% shape and labels of the @SolidCurvedArrowHead symbol +% - ldiagsolidcurvedarrowhead - +/ldiagsolidcurvedarrowhead +{ + 0 0 + [0 0 xsize ysize 0.5 mul ldiaglinebetween + xsize 0 xsize ysize ldiaglineintersect clockwise] + xsize ysize 0.5 mul + [xsize ysize 0.5 mul 0 ysize ldiaglinebetween + xsize 0 xsize ysize ldiaglineintersect clockwise] + 0 ysize +} def + +% shape and labels of the @OpenCurvedArrowHead symbol +% <pathwidth> ldiagopencurvedarrowhead - +/ldiagopencurvedarrowhead +{ + /pathwidth exch def + /LR [ 0 0 xsize ysize 0.5 mul ldiaglinebetween + xsize 0 xsize ysize ldiaglineintersect + ] cvx def + /UR [ xsize ysize 0.5 mul 0 ysize ldiaglinebetween + xsize 0 xsize ysize ldiaglineintersect + ] cvx def + /PW2 [ pathwidth 0.5 mul ] cvx def + /UMID [ + 0 ysize 0.5 mul PW2 add + xsize ysize 0.5 mul PW2 add + 0 ysize 0 0 1 ft UR 0 ysize ldiagangleto 90 add ldiagatangle + ldiagpadd 0 ysize ldiaglineintersect + ] cvx def + /LMID [ 0 pathwidth UMID ldiagpsub ] cvx def + 0 0 + [LR clockwise] + xsize ysize 0.5 mul + [UR clockwise] + 0 ysize + UMID + 0 ysize 0.5 mul PW2 add + 0 ysize 0.5 mul PW2 sub + LMID + 0 0 +} def + +% shape and labels of the @HalfOpenCurvedArrowHead symbol +% <pathwidth> ldiaghalfopencurvedarrowhead - +/ldiaghalfopencurvedarrowhead +{ + /pathwidth exch def + /LR [ 0 0 xsize ysize 0.5 mul ldiaglinebetween + xsize 0 xsize ysize ldiaglineintersect + ] cvx def + /UR [ xsize ysize 0.5 mul 0 ysize ldiaglinebetween + xsize 0 xsize ysize ldiaglineintersect + ] cvx def + /BR [ 0 0 LR 0 ysize UR ldiaglineintersect ] cvx def + /BRAD [ 0 0 BR ldiagdistance ] cvx def + /PW2 [ pathwidth 0.5 mul ] cvx def + /XDIST [ BRAD dup mul PW2 dup mul sub sqrt ] cvx def + /UMID [ BR XDIST PW2 ldiagpadd ] cvx def + /LMID [ BR XDIST 0 PW2 sub ldiagpadd ] cvx def + 0 0 + [LR clockwise] + xsize ysize 0.5 mul + [UR clockwise] + 0 ysize + [BR clockwise] + UMID + 0 ysize 0.5 mul PW2 add + 0 ysize 0.5 mul PW2 sub + LMID + [BR clockwise] + 0 0 +} def + +end +%%EndResource + +%%BeginResource: procset LoutBasicSetup +% @PrependGraphic file /export/home/6monthspace/jeff/lout.lib/include/bsf.lpg + +% width height linethickness louteuro - +% draw a Euro symbol of this width and height with this line thickness +/louteuro { + 20 dict begin + /eurothick exch def + /euroheight exch def + /eurowidth exch def + /eurostrokewidth euroheight 0.8 mul def + /eurostep eurothick 60 cos mul 60 sin div def + /eurotheta 40 def + + % llx lly width thickness louteurobox - + % draw angled box starting at (llx, lly) with given width and thickness + /louteurobox + { + /euroboxthick exch def + /euroboxwidth exch def + newpath moveto euroboxwidth 0 rlineto + eurostep euroboxthick rlineto + euroboxwidth neg 0 rlineto closepath fill + } def + + % lower cross stroke + 0 euroheight 2 div eurothick 1.5 mul sub + eurostrokewidth eurothick louteurobox + + % upper cross stroke + 0 euroheight 2 div eurothick 0.5 mul add + eurostrokewidth eurostep 2 mul add eurothick louteurobox + + % circular part + /eurohctr eurowidth euroheight 2 div eurotheta cos mul sub def + /eurovctr euroheight 2 div def + newpath + eurohctr eurovctr eurovctr eurotheta 350 eurotheta sub arc + eurohctr eurovctr eurovctr eurothick sub 365 eurotheta sub eurotheta arcn + closepath fill + end +} def + +% path for @FullWidthRule symbol +/LoutRule +{ 0 0 moveto xsize 0 lineto +} def + +% path for @Box symbol +/LoutBox +{ 0 0 moveto xsize 0 lineto + xsize ysize lineto 0 ysize lineto + closepath +} def + +% path for @CurveBox symbol +/LoutCurveBox +{ xmark 0 moveto + xsize xmark sub xmark xmark 270 360 arc + xsize xmark sub ysize xmark sub xmark 0 90 arc + xmark ysize xmark sub xmark 90 180 arc + xmark xmark xmark 180 270 arc + closepath +} def + +% path for @ShadowBox symbol +/LoutShadowBox +{ xmark 2 mul 0 moveto xsize 0 lineto + xsize ysize xmark 2 mul sub lineto + xsize xmark sub ysize xmark 2 mul sub lineto + xsize xmark sub xmark lineto + xmark 2 mul xmark lineto + closepath +} def + +% set up dictionary containing margin note data: parity LoutMargSet - +/LoutMargSet +{ /LoutMargDict 12 dict def + LoutMargDict begin + /parity exch def + /matr matrix currentmatrix def + /rightx xsize def + /lefty ysize def % highest allowable point for top of next left note + /righty ysize def % highest allowable point for top of next right note + /max { 2 copy gt { pop } { exch pop } ifelse } def + /min { 2 copy lt { pop } { exch pop } ifelse } def + end +} def + +%translate coordinate system for marginal notes: type LoutMargShift - +% where type 0 is left margin, 1 is right margin, 2 is outer, 3 is inner +/LoutMargShift +{ LoutMargDict begin + + % y coordinate of top of note, in margin coords, before vertical adjust + 0 ysize transform matr itransform exch pop + + % decide whether left or right margin based on type and parity + exch [ 0 1 parity 1 parity sub ] exch get 0 eq + { + % left margin: adjust top of note downwards if overlaps previous note + lefty min + + % bottom of note is new lefty position and also translate position + ysize sub dup /lefty exch def + + % want right edge of note at coordinate zero + xsize neg exch + } + { + % right margin: adjust top of note downwards if overlaps previous note + righty min + + % bottom of note is new righty position and also translate position + ysize sub dup /righty exch def + + % want left edge of note at coordinate rightx + rightx exch + } ifelse + + % stack now contains coord of bottom left corner in margin coordinates + matr setmatrix translate + end +} def + +% create LoutPageDict with left, right, foot, top for @Place symbol users +/LoutPageSet +{ + /LoutPageDict 5 dict def + LoutPageDict begin + /matr matrix currentmatrix def + /left 0 def + /right xsize def + /foot 0 def + /top ysize def + end + +} def + +%%EndResource + +%%EndProlog + +%%BeginSetup +%%IncludeResource: font Times-Roman +/Times-Romanfnt82 vec2 /Times-Roman LoutRecode +/fnt82 { /Times-Romanfnt82 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt35 vec2 /Helvetica LoutRecode +/fnt35 { /Helveticafnt35 LoutFont } def +%%IncludeResource: font Symbol +/fnt78 { /Symbol LoutFont } def +%%EndSetup + +%%Page: 11 1 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Italic +%%+ font Times-Bold +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +1 LoutMargSet +grestore +240 fnt83 0 13843(1.10.)m 574(Notes)s 1174(on)s 1468(P)s 19(erl)k +1920(and)s 2346(P)s 19(od)k 240 fnt84 8839 13840(11)m +0 13250(1.10.)m 591(Notes)s 1216(on)s 1525(P)s 4(erl)k +2000(and)s 2441(P)s 4(od)k 240 fnt82 480 12818(The)m +923(Perl)s 1378(programming)s 2749(language)s 153 fnt82 3609 12907(1)m +240 fnt82 3744 12818(is)m 3970(quite)s 4520(a)s 4702(dif\207cult)s +5533(one)s 5951(for)s 6305(the)s 220 fnt35 6668 12815(prg2lout)m +240 fnt82 7532 12818(program)m 8418(to)s 8673(deal)s 0 12530(with,)m +526(and)s 924(our)s 1297(boast)s 1855(that)s 2267(programs)s +3215(can)s 3598(be)s 3873(included)s 4749(with)s 5225(`absolutely)s +6335(no)s 6621(modi\207cations')s 8029(is)s 8233(not)s 8592(quite)s +0 12242(true)m 427(for)s 765(Perl.)s 480 11868(Here)m 1000(is)s +1211(the)s 1560(complete)s 2493(list)s 2844(of)s 3116(problem)s +3974(areas.)s 4629(In)s 4885(most)s 5411(cases)s 5967(the)s +6316(ef)s 6(fect)k 6912(is)s 7123(to)s 7363(get)s +7716(the)s 8065(formatting)s 0 11580(wrong)m 675(o)s 3(v)k 3(er)k +1164(a)s 1341(short)s 1889(re)s 3(gion,)k 2615(which)s +3267(is)s 3488(not)s 3864(perhaps)s 4670(so)s 4946(disastrous;)s +6025(and)s 6439(it)s 6642(should)s 7349(be)s 7642(easy)s +8131(to)s 8381(modify)s 0 11292(your)m 507(Perl)s 955(program)s +1834(without)s 2634(changing)s 3574(its)s 3859(meaning,)s 4799(to)s +5046(w)s 2(ork)k 5606(around)s 6338(these)s 6894(problems.)s +7957(After)s 8529(all,)s 8883(in)s 0 11004(Perl)m 439(there)s +972(is)s 1182(al)s 2(w)k 2(ays)k 1893(more)s +2440(than)s 2909(one)s 3311(w)s 2(ay)k 3762(to)s +4001(do)s 4294(it.)s 0 10499(1.)m 240 fnt83 480 10501(Her)m 8(e-documents)k +240 fnt82 2108 10499(such)m 2604(as)s 960 10047(<<"EOF")m 960 9759(These lines will be read as though)m +960 9471(enclosed in double quotes)m 960 9183(EOF)m 480 8729(will)m 910(be)s 1196(handled)s +2017(correctly)s 2923(only)s 3407(if)s 3629(the)s 3981(string)s +4583(used)s 5084(to)s 5327(terminate)s 6289(the)s 6641(document)s +7649(is)s 7864(one)s 8270(of)s 240 fnt83 8546 8731(EOF)m +240 fnt82 9019 8729(,)m 240 fnt83 480 8443(EO)m 9(T)k +240 fnt82 941 8441(,)m 240 fnt83 1040 8443(END)m 240 fnt82 +1514 8441(,)m 1613(and)s 2009(the)s 2348(empty)s 2992(string.)s +3692(This)s 4160(terminating)s 5305(string)s 5894(may)s 6352(be)s +6626(enclosed)s 7512(in)s 7747(all)s 8032(three)s 8556(kinds)s +480 8153(of)m 761(quotes,)s 1504(or)s 1773(in)s 2027(none.)s +2668(An)s 3(ything)k 3633(after)s 4140(the)s 4498(<<)s +4833(symbol)s 5604(on)s 5911(the)s 6270(same)s 6827(line)s +7252(will)s 7689(be)s 7981(treated)s 8699(as)s 8960(a)s +480 7865(string,)m 1131(which)s 1773(means)s 2435(that)s 2853(stack)s 2(ed)k +3626(here-documents)s 5204(will)s 5630(not)s 5996(be)s 6278(printed)s +7013(properly)s 15(.)k 0 7362(2.)m 480(When)s 220 fnt35 +1115 7359(prg2lout)m 240 fnt82 1969 7362(is)m 2186(scanning)s 3096(the)s +3451(program)s 4327(looking)s 5118(for)s 5463(the)s 5817(be)s 3(ginning)k +6832(of)s 7109(a)s 7281(le)s 3(xical)k 7976(unit,)s +8461(it)s 8660(may)s 480 7074(come)m 1074(upon)s 1632(a)s +220 fnt35 1819 7071(/)m 240 fnt82 1964 7074(character)m 9(,)k +2957(and)s 3382(this)s 240 fnt83 3799 7076(initial)m 220 fnt35 +4450 7071(/)m 240 fnt82 4594 7074(\(not)m 5060(subsequent)s 6205(ones)s +6716(in)s 6980(the)s 7349(same)s 7917(le)s 3(xical)k +8626(unit\))s 480 6786(it)m 691(\207nds)s 1227(dif\207cult)s 2062(to)s +2320(interpret,)s 3254(since)s 3820(it)s 4031(may)s 4517(be)s +4818(the)s 5185(be)s 3(ginning)k 6212(of)s 6502(a)s +6687(re)s 3(gular)k 7439(e)s 3(xpression,)k 8585(to)s +8844(be)s 480 6498(formatted)m 1460(lik)s 2(e)k 1865(a)s +2024(string,)s 2668(or)s 2920(it)s 3105(may)s 3564(be)s +3839(a)s 3998(complete)s 4923(le)s 3(xical)k 5604(unit)s +6029(denoting)s 6913(di)s 6(vision.)k 7835(The)s 8256(program)s +480 6210(chooses)m 1308(the)s 1675(re)s 3(gular)k 2427(e)s 3(xpression)k +3524(\(or)s 3881(equi)s 6(v)k 6(alently)k 15(,)k +5162(string\))s 5853(interpretation)s 7216(if)s 7452(the)s 220 fnt35 +7819 6207(/)m 240 fnt82 7962 6210(character)m 8916(is)s 480 5922(immediately)m +1714(preceded)s 2620(by)s 220 fnt35 2900 5919(q)m 240 fnt82 +3009 5922(,)m 220 fnt35 3101 5919(qq)m 240 fnt82 3332 5922(,)m +220 fnt35 3424 5919(qx)m 240 fnt82 3654 5922(,)m 220 fnt35 +3747 5919(qw)m 240 fnt82 4025 5922(,)m 220 fnt35 4117 5919(qr)m +240 fnt82 4312 5922(,)m 220 fnt35 4405 5919(m)m 240 fnt82 +4574 5922(,)m 220 fnt35 4666 5919(s)m 240 fnt82 4769 5922(,)m +220 fnt35 4861 5919(y)m 240 fnt82 4969 5922(,)m 5062(or)s +220 fnt35 5306 5919(tr)m 240 fnt82 5440 5922(.)m 5590(It)s +5780(also)s 6203(chooses)s 6998(the)s 7331(re)s 3(gular)k +8049(e)s 3(xpression)k 480 5634(interpretation)m 1834(if)s 2063(the)s +220 fnt35 2423 5631(/)m 240 fnt82 2558 5634(character)m 3504(is)s +3726(immediately)s 4986(preceded)s 5918(by)s 6224(zero,)s 6754(one,)s +7219(or)s 7489(tw)s 2(o)k 7911(space)s 8510(or)s +8781(tab)s 480 5346(characters,)m 1549(which)s 2186(are)s 2528(themselv)s 3(es)k +3633(immediately)s 4876(preceded)s 5792(by)s 6081(a)s 6242(complete)s +7169(le)s 3(xical)k 7852(unit)s 8279(which)s 8916(is)s +480 5058(either)m 220 fnt35 1078 5055(=)m 240 fnt82 1198 5058(,)m +220 fnt35 1300 5055(=~)m 240 fnt82 1543 5058(,)m 220 fnt35 +1645 5055(!~)m 240 fnt82 1821 5058(,)m 220 fnt35 1923 5055(split)m +240 fnt82 2308 5058(,)m 2410(or)s 220 fnt35 2664 5055(if)m +240 fnt82 2770 5058(.)m 2929(Otherwise)s 3961(it)s 4148(chooses)s +4952(the)s 5295(di)s 6(vision)k 6112(interpretation.)s 7557(In)s +7808(the)s 8151(rare)s 8571(cases)s 480 4770(where)m 1120(this)s +1517(rule)s 1945(f)s 2(ails,)k 2460(you)s 2876(can)s +3266(force)s 220 fnt35 3812 4767(prg2lout)m 240 fnt82 4661 4770(to)m +4901(choose)s 5622(the)s 5971(re)s 3(gular)k 6705(e)s 3(xpression)k +7783(interpretation)s 480 4482(by)m 777(placing)s 1537(an)s 220 fnt35 +1823 4479(m)m 240 fnt82 2055 4482(in)m 2301(front)s 2829(of)s +3103(the)s 3454(initial)s 220 fnt35 4068 4479(/)m 240 fnt82 +4195 4482(\(this)m 4673(does)s 5167(not)s 5536(change)s 6273(the)s +6624(meaning)s 7504(of)s 7778(the)s 8130(program\),)s 480 4194(and)m +910(you)s 1352(can)s 1768(force)s 2341(the)s 2716(di)s 6(vision)k +3565(interpretation)s 4935(by)s 5256(placing)s 6040(at)s 6299(least)s +6823(three)s 7383(spaces)s 8085(before)s 8778(the)s 220 fnt35 +480 3903(/)m 240 fnt82 604 3906(character)m 13(.)k 0 3448(3.)m +480(The)s 220 fnt35 910 3445(prg2lout)m 240 fnt82 1761 3448(program)m +2634(recognises)s 3697(complete)s 4632(substitution)s 5808(operators,)s 6807(such)s +7306(as)s 220 fnt35 7559 3445(s/abc/ABC/)m 240 fnt82 8722 3448(and)m +220 fnt35 480 3157(s{abc}{ABC})m 240 fnt82 1677 3160(,)m 1799(as)s +2065(indi)s 6(vidual)k 3100(le)s 3(xical)k 3804(units,)s +4392(and)s 4812(it)s 5019(formats)s 5815(them)s 6369(as)s +6635(it)s 6843(does)s 7349(strings.)s 8166(Ho)s 6(we)k 6(v)k 3(er)k 9(,)k +480 2872(its)m 774(rule)s 1219(for)s 1575(deciding)s 2470(where)s +3128(these)s 3693(units)s 4227(end)s 4650(is)s 4878(rather)s +5512(simple-minded:)s 7130(at)s 7380(the)s 7746(start,)s 8281(it)s +8492(w)s 2(orks)k 480 2584(out)m 846(what)s 1372(character)s +2306(\207nishes)s 3089(the)s 3438(unit)s 3870(\(in)s 4193(the)s +4541(e)s 3(xamples)k 5493(abo)s 3(v)k 3(e,)k +220 fnt35 6167 2581(/)m 240 fnt82 6291 2584(and)m 220 fnt35 +6696 2581(})m 240 fnt82 6820 2584(respecti)m 6(v)k 3(ely\),)k +8152(and)s 8557(scans)s 480 2296(along)m 1070(until)s 1569(it)s +1767(reaches)s 2540(the)s 2894(second)s 3622(occurrence)s 4732(of)s +5009(this)s 5411(character)s 6351(not)s 6722(preceded)s 7649(by)s +7949(the)s 220 fnt35 8303 2293(\\)m 240 fnt82 8433 2296(escape)m +480 2008(character)m 13(.)k 1505(This)s 1981(is)s 2191(inadequate)s +3283(in)s 3526(tw)s 2(o)k 3936(respects.)s 4869(Firstly)s 15(,)k +220 fnt35 960 1510(s{{}}{})m 240 fnt82 480 1016(is)m 698(a)s +872(complete)s 1812(le)s 3(g)k 1(al)k 2336(substitution)s +3517(e)s 3(xpression)k 4602(in)s 4853(Perl,)s 5353(b)s 4(ut)k +220 fnt35 5723 1013(prg2lout)m 240 fnt82 6579 1016(will)m 7013(think)s +7575(it)s 7775(ends)s 8273(after)s 8778(the)s 480 728(second)m +220 fnt35 1203 725(})m 240 fnt82 1267 728(,)m 1374(and)s +1778(so)s 2044(format)s 2740(the)s 3088(rest)s 3492(of)s +3763(it)s 3955(wrongly)s 15(.)k 4902(Secondly)s 15(,)k +5885(and)s 6289(more)s 6836(seriously)s 15(,)k 1134 0 0 0 240 288 60 0 307 LoutGr2 +0 0 moveto xsize 0 lineto stroke +grestore + +grestore +122 fnt82 +0 112(1)m 192 fnt82 58 42(My)m 368(thanks)s 909(to)s +1101(Mark)s 1563(Summer\207eld)s 2598(for)s 2868(help)s 3241(with)s +3627(Perl)s 3978(and)s 4302(Pod.)s +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 12 2 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +%%+ font Times-Italic +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec2 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec2 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 +0 LoutMargSet +grestore +240 fnt84 0 13840(12)m 240 fnt83 5981 13843(Chapter)m 6831(1.)s +7105(Computer)s 8128(Pr)s 10(o)k 2(gr)k 3(ams)k +220 fnt35 960 13207(s{abc}<ABC>)m 240 fnt82 480 12713(is)m 711(also)s +1171(allo)s 6(wed)k 2001(in)s 2266(Perl,)s 2778(b)s 4(ut)k +220 fnt35 3162 12710(prg2lout)m 240 fnt82 4031 12713(does)m 4543(not)s +4930(understand)s 6060(that)s 6499(the)s 6869(\207nishing)s 7781(character)s +8737(can)s 480 12425(change)m 1215(in)s 1459(this)s 1856(w)s 2(ay)k 15(,)k +2346(so)s 2613(in)s 2858(this)s 3255(e)s 3(xample)k +4119(it)s 4312(will)s 4739(k)s 2(eep)k 5244(scanning)s +6149(fore)s 6(v)k 3(er)k 9(,)k 6928(looking)s +7714(for)s 8053(the)s 8403(second)s 220 fnt35 480 12134(})m +240 fnt82 604 12137(character)m 9(,)k 1576(which)s 2218(is)s +2428(disastrous.)s 0 11640(Further)m 763(w)s 2(ork)k 1314(may)s +1780(eliminate)s 2724(some)s 3285(of)s 3556(these)s 4103(problems.)s +480 11266(The)m 953(Pod)s 1429(language)s 2394(is)s 2650(used)s +3192(by)s 3531(Perl)s 4015(programmers)s 5386(for)s 5769(creating)s +6636(documentation,)s 8210(and)s 8660(may)s 0 10978(be)m 313(found)s +961(within)s 1660(Perl)s 2131(programs)s 3116(or)s 3406(standing)s +4301(alone.)s 5015(Lout)s 5558(supports)s 6451(both)s 6965(arrangements)s +8335(without)s 0 10690(an)m 3(y)k 418(special)s 1157(action)s +1819(by)s 2134(the)s 2503(user)s 13(.)k 3073(At)s +3393(the)s 3762(be)s 3(ginning)k 4792(of)s 5084(the)s +220 fnt35 5453 10687(per)m -3(l)k 240 fnt82 5888 10690(setup)m +6467(line,)s 6953(the)s 7322(follo)s 6(wing)k 8320(line)s +8756(has)s 0 10402(been)m 509(placed:)s 220 fnt35 480 9901(@SysInclude { pod })m +240 fnt82 0 9403(Thus,)m 576(asking)s 1244(for)s 1571(Perl)s +2000(al)s 2(w)k 2(ays)k 2700(gi)s 6(v)k 3(es)k +3237(you)s 3641(Pod)s 4062(as)s 4301(well.)s 4866(If)s +5085(you)s 5490(are)s 5826(using)s 6388(your)s 6876(o)s 6(wn)k +7330(setup)s 7877(\207les)s 8316(for)s 8643(both)s 0 9115(languages,)m +1068(it)s 1265(is)s 1480(probably)s 2390(better)s 2998(to)s +3242(break)s 3839(this)s 4240(connection)s 5352(by)s 5651(deleting)s +6479(this)s 6880(line)s 7299(from)s 7828(your)s 8332(cop)s 2(y)k +8855(of)s 0 8827(the)m 220 fnt35 348 8824(per)m -3(l)k +240 fnt82 762 8827(setup)m 1320(\207le)s 1681(and)s 2085(placing)s +220 fnt35 480 8326(@Include { m)m 3(ypod })k 480 8038(@Include { m)m 3(yper)k -3(l })k +240 fnt82 0 7540(at)m 232(the)s 580(start)s 1050(of)s +1321(your)s 1820(document)s 2824(in)s 3067(the)s 3415(usual)s +3975(w)s 2(ay)k 15(.)k 480 7166(Because)m 1341(Pod)s +1781(is)s 2000(a)s 2174(documentation)s 3662(language)s 4591(rather)s +5215(than)s 5693(a)s 5868(programming)s 7231(language,)s 8211(the)s +8568(setup)s 0 6878(\207le)m 376(options)s 1148(listed)s 1739(in)s +1998(Section)s 2787(1.4)s 3157(are)s 3520(mostly)s 4241(of)s +4527(no)s 4836(rele)s 6(v)k 6(ance.)k 5919(So)s +6241(for)s 6594(Pod)s 7041(only)s 7537(these)s 8100(ha)s 4(v)k 3(e)k +8617(been)s 0 6590(discarded)m 987(and)s 1405(replaced)s 2285(by)s +2593(a)s 2772(completely)s 3902(dif)s 6(ferent)k 4791(set)s +5129(of)s 5414(options,)s 6239(controlling)s 7355(such)s 7864(things)s +8514(as)s 8778(the)s 0 6302(size)m 448(of)s 741(headings)s +1664(and)s 2090(the)s 2460(g)s 1(aps)k 2970(between)s +3846(list)s 4219(items,)s 4864(which)s 5528(you)s 5964(can)s +6375(\207nd)s 6828(documented)s 8077(in)s 8342(the)s 220 fnt35 +8712 6299(pod)m 240 fnt82 0 6014(setup)m 558(\207le.)s 480 5640(The)m +955(only)s 1483(kno)s 6(wn)k 2234(problem)s 3139(with)s +3669(Pod)s 4147(formatting)s 5256(is)s 5513(that)s 5979(the)s +220 fnt35 6375 5637(E<>)m 240 fnt82 6874 5640(constructs)m 7942(enclosing)s +8960(a)s 0 5352(character)m 963(number)s 1783(or)s 2072(a)s +2267(`non-numeric)s 3650(HTML)s 4415(entity')s 5100(\(to)s 5447(quote)s +6065(the)s 6442(author)s 7142(of)s 7443(Pod\))s 7973(will)s +8429(appear)s 0 5064(v)m 3(erbatim)k 906(rather)s 1522(than)s +1991(being)s 2576(replaced)s 3443(by)s 3737(the)s 4085(characters)s +5103(the)s 3(y)k 5566(represent.)s +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Trailer +%%DocumentNeededResources: font Courier +%%+ font Helvetica +%%+ font Symbol +%%+ font Times-Roman +%%+ font Times-Italic +%%+ font Times-Bold +%%+ font Times-Italic +%%DocumentSuppliedResources: procset LoutStartUp +%%+ procset LoutTabPrependGraphic +%%+ procset LoutTblPrependGraphic +%%+ procset LoutFigPrependGraphic +%%+ procset LoutGraphPrependGraphic +%%+ procset LoutFigPrependGraphic +%%+ procset LoutBasicSetup +%%+ encoding vec2 +%%Pages: 2 +%%EOF diff --git a/doc/user/vcpp b/doc/user/vcpp deleted file mode 100644 index b7c18ca..0000000 --- a/doc/user/vcpp +++ /dev/null @@ -1 +0,0 @@ -vi cpp cpp_lone cpp_embe cpp_opti cpp_chan cpp_tabs cpp_comm cpp_prog cpp_pipe cpp_erro diff --git a/doc/user/vprg b/doc/user/vprg new file mode 100644 index 0000000..21668ba --- /dev/null +++ b/doc/user/vprg @@ -0,0 +1 @@ +vi prg prg_lone prg_embe prg_opti prg_chan prg_tabs prg_comm prg_prog prg_pipe prg_erro prg_perl |