%!PS-Adobe-3.0 %%Creator: Basser Lout Version 3.22 (June 2000) %%CreationDate: Sat Jun 3 12:54:58 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 /save_cp { currentpoint /cp_y exch def /cp_x exch def } def /restore_cp { cp_x cp_y moveto } def /outline { gsave 1 1 1 setrgbcolor dup show save_cp grestore true charpath stroke restore_cp } bind def /m { 3 1 roll moveto show } bind def /mo { 3 1 roll moveto outline } bind def /s { exch currentpoint exch pop moveto show } bind def /so { exch currentpoint exch pop moveto outline } bind def /k { exch neg 0 rmoveto show } bind def /ko { exch neg 0 rmoveto outline } bind def /r { exch 0 rmoveto show } bind def /ro { exch 0 rmoveto outline } bind def /c { gsave 3 1 roll rmoveto show grestore } bind def /co { gsave 3 1 roll rmoveto outline grestore } 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: 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. % % % % is two numbers, a point. % % is one number, a length % % is one number, an angle in degrees % % 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: lfigconcat % 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 % 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 /lfigpi 3.14159 def % arc directions /clockwise false def /anticlockwise true def % maximum of two numbers: lfigmax /lfigmax { 2 copy gt { pop } { exch pop } ifelse } def % minimum of two numbers: lfigmin /lfigmin { 2 copy lt { pop } { exch pop } ifelse } def % add two points: lfigpadd /lfigpadd { exch 3 1 roll add 3 1 roll add exch } def % subtract first point from second: lfigpsub /lfigpsub { 3 2 roll sub 3 1 roll exch sub exch } def % max two points: lfigpmax /lfigpmax { exch 3 1 roll lfigmax 3 1 roll lfigmax exch } def % min two points: lfigpmin /lfigpmin { exch 3 1 roll lfigmin 3 1 roll lfigmin exch } def % scalar multiplication: lfigpmul /lfigpmul { dup 3 1 roll mul 3 1 roll mul exch } def % point at angle and distance: lfigatangle /lfigatangle { 2 copy cos mul 3 1 roll sin mul lfigpadd } def % angle from one point to another: lfigangle /lfigangle { lfigpsub 2 copy 0 eq exch 0 eq and {pop} {exch atan} ifelse } def % distance between two points: lfigdistance /lfigdistance { lfigpsub dup mul exch dup mul add sqrt } def % difference in x coords: lfigxdistance /lfigxdistance { pop 3 1 roll pop sub } def %difference in y coords: lfigydistance /lfigydistance { 3 1 roll pop sub exch pop } def % stroke a solid line: lfigsolid - /lfigsolid { pop pop [] 0 setdash stroke } def % stroke a lfigdashed line: 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: 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: 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: 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: % figpolygon ... /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: lfiggetnext true % or false /lfiggetnext { 2 copy exch length ge { false } { 2 copy get exch 1 add exch true } ifelse } def % check whether thing is number: lfigisnumbertype /lfigisnumbertype { dup type dup /integertype eq exch /realtype eq or } def % check whether thing is an array: lfigisarraytype /lfigisarraytype { dup type /arraytype eq } def % get next item: lfiggetnextitem 0 % or 1 % or 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 % 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 . /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 /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 [ ] [ ] /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 [ ] 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: /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 % 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: lfigfixangle /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: 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: 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 %%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 %%EndSetup %%Page: i 1 %%BeginPageSetup %%PageResources: font Times-Roman %%+ font Times-Bold %%+ font Times-Italic /pgsave save def %%IncludeResource: font Times-Roman /Times-Romanfnt1 vec2 /Times-Roman LoutRecode /fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt2 vec2 /Times-Bold LoutRecode /fnt2 { /Times-Boldfnt2 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt3 vec2 /Times-Italic LoutRecode /fnt3 { /Times-Italicfnt3 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave 0 0 translate 240 fnt1 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 fnt2 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 fnt3 3630 11097(J)m 6(ef)k 4(fr)k 8(e)k 7(y)k 4310(H.)s 4577(Kingston)s 240 fnt1 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 fnt2 3901 8775(SUMMAR)m 8(Y)k 240 fnt1 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 fnt2 0 6664(K)m 6(eyw)k 2(ords)k 240 fnt1 1143 6665(document)m 2147(formatting)s 3208(typesetting)s grestore 0 0 0 0 240 288 60 1417 -15423 LoutGr2 1 LoutMargSet grestore grestore grestore grestore pgsave restore showpage %%Page: 1 2 %%BeginPageSetup %%PageResources: font Times-Roman %%+ font Times-Bold %%+ font Times-Italic /pgsave save def %%IncludeResource: font Times-Roman /Times-Romanfnt1 vec2 /Times-Roman LoutRecode /fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt2 vec2 /Times-Bold LoutRecode /fnt2 { /Times-Boldfnt2 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt3 vec2 /Times-Italic LoutRecode /fnt3 { /Times-Italicfnt3 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave 0 0 translate 240 fnt1 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 fnt2 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 fnt3 3630 11097(J)m 6(ef)k 4(fr)k 8(e)k 7(y)k 4310(H.)s 4577(Kingston)s 240 fnt1 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 fnt2 0 8926(1.)m 291(Intr)s 4(oduction)k 240 fnt1 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 fnt1 4100 8008(1)m 240 fnt1 4223 7919(which)m 4869(translates)s 5824(Lout)s 6340(source)s 7023(code)s 7535(into)s 7964(PostScript,)s 153 fnt1 8993 8008(2)m 240 fnt1 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 fnt1 0 379(1)m 192 fnt1 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 fnt1 0 112(2)m 192 fnt1 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 0 0 0 0 240 288 60 1417 -15423 LoutGr2 1 LoutMargSet grestore 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 Times-Roman /Times-Romanfnt1 vec2 /Times-Roman LoutRecode /fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt2 vec2 /Times-Bold LoutRecode /fnt2 { /Times-Boldfnt2 LoutFont } def %%IncludeResource: font Symbol /fnt5 { /Symbol LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt4 vec2 /Times-Italic LoutRecode /fnt4 { /Times-Italicfnt4 LoutFont } def %%IncludeResource: font Helvetica /Helveticafnt6 vec2 /Helvetica LoutRecode /fnt6 { /Helveticafnt6 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave 0 0 translate 240 fnt1 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 5765 -1579(-)m 5893(2)s 6067(-)s 9066 13419 0 13310 240 288 60 1417 -15423 LoutGr2 0 LoutMargSet grestore 0 13256(further)m 709(impro)s 3(v)k 3(ement.)k 240 fnt2 0 12463(2.)m 291(Objects)s 240 fnt1 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 fnt2 0 9898(2.1.)m 471(The)s 926(genesis)s 1697(of)s 1969(the)s 2343(object)s 3026(abstraction)s 240 fnt1 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 fnt5 586 8390(2)m 240 fnt4 480 8330(x)m 240 fnt5 738 8322(+)m 939(1)s gsave 480 8274 translate 240 fnt4 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 fnt1 0 7535(is)m 210(produced)s 1159(by)s 1453(typing)s 220 fnt6 480 7037({ x sup 2 + 1 } o)m 3(v)k 5(er 4)k 240 fnt1 0 6541(in)m 261(the)s 627(input)s 1197(\207le;)s 220 fnt6 1632 6538(sup)m 240 fnt1 2056 6541(and)m 220 fnt6 2478 6538(o)m 3(v)k 5(er)k 240 fnt1 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 fnt4 5009 5593(e)m 4(xpr)k 8(ession)k 240 fnt1 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 fnt4 5743 4067(horizontal)m 6787(axis)s 240 fnt1 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 fnt5 106 404(2)m 240 fnt4 0 344(x)m 240 fnt5 258 336(+)m 459(1)s gsave 0 288 translate 240 fnt4 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 0 0 0 0 240 288 60 1417 -15423 LoutGr2 0 LoutMargSet grestore 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 Times-Roman /Times-Romanfnt1 vec2 /Times-Roman LoutRecode /fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt4 vec2 /Times-Italic LoutRecode /fnt4 { /Times-Italicfnt4 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt2 vec2 /Times-Bold LoutRecode /fnt2 { /Times-Boldfnt2 LoutFont } def %%IncludeResource: font Symbol /fnt5 { /Symbol LoutFont } def %%IncludeResource: font Helvetica /Helveticafnt6 vec2 /Helvetica LoutRecode /fnt6 { /Helveticafnt6 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave 0 0 translate 240 fnt1 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 5770 -1579(-)m 5898(3)s 6062(-)s 9066 13416 0 13307 240 288 60 1417 -15423 LoutGr2 1 LoutMargSet grestore 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 fnt4 2810 12009(r)m 10(ow)k 3244(mark)s 240 fnt1 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 fnt4 7749 12009(column)m 8523(mark)s 240 fnt1 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 fnt2 0 5224(2.2.)m 471(Grammatical)s 1893(and)s 2334(lexical)s 3039(structur)s 4(e)k 240 fnt1 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 fnt5 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 fnt4 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 fnt6 1826 2371({)m 240 fnt4 1974 2376(object)m 220 fnt6 2646 2371(})m 240 fnt4 1826 2043(object)m 2498(object)s 240 fnt1 0 1248(where)m 240 fnt4 640 1250(in\207xop)m 240 fnt1 1285 1248(,)m 240 fnt4 1391 1250(pr)m 8(e\207xop)k 240 fnt1 2161 1248(,)m 240 fnt4 2267 1250(post\207xop)m 240 fnt1 3125 1248(,)m 3232(and)s 240 fnt4 3635 1250(nopar)m 2(sop)k 240 fnt1 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 fnt4 2940 962(liter)m 3(alwor)k 8(d)k 240 fnt1 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 0 0 0 0 240 288 60 1417 -15423 LoutGr2 1 LoutMargSet grestore 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 Times-Roman /Times-Romanfnt1 vec2 /Times-Roman LoutRecode /fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Helvetica /Helveticafnt6 vec2 /Helvetica LoutRecode /fnt6 { /Helveticafnt6 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt4 vec2 /Times-Italic LoutRecode /fnt4 { /Times-Italicfnt4 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt2 vec2 /Times-Bold LoutRecode /fnt2 { /Times-Boldfnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave 0 0 translate 240 fnt1 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 5765 -1579(-)m 5893(4)s 6067(-)s 9066 13419 0 13310 240 288 60 1417 -15423 LoutGr2 0 LoutMargSet grestore 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 fnt6 6691 13253({})m 240 fnt1 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 fnt4 2562 12970(empty)m 3187(object)s 240 fnt1 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 fnt4 1333 12020(par)m 3(a)k 2(gr)k 3(aphs)k 240 fnt1 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 fnt6 8946 7437(+)m 240 fnt1 0 7152(and)m 220 fnt6 404 7149(<=)m 240 fnt1 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 fnt6 480 6702(<=++)m 240 fnt1 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 fnt6 2390 5960(<=++)m 240 fnt1 2894 5963(,)m 220 fnt6 3032 5960(<=+)m 240 fnt1 3408 5963(,)m 220 fnt6 3546 5960(<=)m 240 fnt1 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 fnt2 0 5026(2.3.)m 471(Basic)s 1073(structural)s 2149(operators)s 240 fnt1 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 fnt6 6254 544(metempsychosis)m 240 fnt1 7882 547(,)m 7986(which)s 8625(ha)s 4(v)k 3(e)k grestore 0 0 0 0 240 288 60 1417 -15423 LoutGr2 0 LoutMargSet grestore 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 Times-Roman /Times-Romanfnt1 vec2 /Times-Roman LoutRecode /fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt4 vec2 /Times-Italic LoutRecode /fnt4 { /Times-Italicfnt4 LoutFont } def %%IncludeResource: font Helvetica /Helveticafnt6 vec2 /Helvetica LoutRecode /fnt6 { /Helveticafnt6 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt2 vec2 /Times-Bold LoutRecode /fnt2 { /Times-Boldfnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave 0 0 translate 240 fnt1 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 5769 -1582(-)m 5897(5)s 6063(-)s 9066 13413 0 13413 240 288 60 1417 -15423 LoutGr2 1 LoutMargSet grestore 240 fnt4 266 13217(object)m 220 fnt6 974 13212(/)m 240 fnt4 1038 13217(gap)m 1511(object)s 240 fnt1 3816 13215(V)m 26(ertical)k 4613(concatenation)s 5998(with)s 6480(mark)s 7032(alignment)s 240 fnt4 266 12929(object)m 220 fnt6 974 12924(//)m 240 fnt4 1099 12929(gap)m 1572(object)s 240 fnt1 3816 12927(V)m 26(ertical)k 4613(concatenation)s 5998(with)s 6480(left)s 6857(justi\207cation)s 240 fnt4 266 12641(object)m 220 fnt6 974 12636(|)m 240 fnt4 1011 12641(gap)m 1484(object)s 240 fnt1 3816 12639(Horizontal)m 4893(concatenation)s 6278(with)s 6760(mark)s 7312(alignment)s 240 fnt4 266 12353(object)m 220 fnt6 974 12348(||)m 240 fnt4 1068 12353(gap)m 1541(object)s 240 fnt1 3816 12351(Horizontal)m 4893(concatenation)s 6278(with)s 6760(top-justi\207cation)s 240 fnt4 266 12065(object)m 220 fnt6 974 12060(&)m 240 fnt4 1116 12065(gap)m 1589(object)s 240 fnt1 3816 12063(Horizontal)m 4893(concatenation)s 6278(within)s 6946(paragraphs)s 220 fnt6 266 11772(@OneCol)m 240 fnt4 1338 11777(object)m 240 fnt1 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 fnt4 6992 11777(object)m 220 fnt6 266 11484(@OneRo)m 3(w)k 240 fnt4 1457 11489(object)m 240 fnt1 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 fnt4 6637 11489(object)m 266 11201(font)m 220 fnt6 762 11196(@F)m 6(ont)k 240 fnt4 1534 11201(object)m 240 fnt1 3816 11199(Render)m 240 fnt4 4567 11201(object)m 240 fnt1 5215 11199(in)m 5458(nominated)s 6526(font)s 240 fnt4 266 10913(br)m 8(eakstyle)k 220 fnt6 1353 10908(@Break)m 240 fnt4 2269 10913(object)m 240 fnt1 3816 10911(Break)m 4448(paragraphs)s 5548(of)s 240 fnt4 5819 10913(object)m 240 fnt1 6467 10911(in)m 6710(nominated)s 7778(style)s 240 fnt4 266 10625(spacestyle)m 220 fnt6 1361 10620(@Space)m 240 fnt4 2318 10625(object)m 240 fnt1 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 fnt4 266 10337(length)m 220 fnt6 979 10332(@Wide)m 240 fnt4 1813 10337(object)m 240 fnt1 3816 10335(Render)m 240 fnt4 4567 10337(object)m 240 fnt1 5215 10335(to)m 5454(width)s 240 fnt4 6056 10337(length)m 266 10049(length)m 220 fnt6 979 10044(@High)m 240 fnt4 1758 10049(object)m 240 fnt1 3816 10047(Render)m 240 fnt4 4567 10049(object)m 240 fnt1 5215 10047(to)m 5454(height)s 240 fnt4 6112 10049(length)m 220 fnt6 266 9756(@HExpand)m 240 fnt4 1499 9761(object)m 240 fnt1 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 fnt6 266 9468(@VExpand)m 240 fnt4 1487 9473(object)m 240 fnt1 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 fnt6 266 9180(@HScale)m 240 fnt4 1307 9185(object)m 240 fnt1 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 fnt6 266 8892(@VScale)m 240 fnt4 1295 8897(object)m 240 fnt1 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 fnt4 266 8609(angle)m 220 fnt6 911 8604(@Rotate)m 240 fnt4 1892 8609(object)m 240 fnt1 3816 8607(Rotate)m 240 fnt4 4496 8609(object)m 240 fnt1 5144 8607(by)m 240 fnt4 5438 8609(angle)m 266 8321(P)m 19(ostScript)k 220 fnt6 1367 8316(@Gr)m 2(aphic)k 240 fnt4 2471 8321(object)m 240 fnt1 3816 8319(Escape)m 4549(to)s 4788(graphics)s 5649(language)s 220 fnt6 266 8028(@Ne)m 6(xt)k 240 fnt4 1050 8033(object)m 240 fnt1 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 fnt4 266 7745(object)m 220 fnt6 974 7740(@Case)m 240 fnt4 1821 7745(alternatives)m 240 fnt1 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 fnt4 266 7457(identi\207er)m 220 fnt6 1254 7452(&&)m 240 fnt4 1662 7457(object)m 240 fnt1 3816 7455(Cross)m 4412(reference)s 240 fnt4 266 7169(cr)m 10(oss-r)k 8(efer)k 8(ence)k 220 fnt6 1839 7164(@Open)m 240 fnt4 2705 7169(object)m 240 fnt1 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 fnt4 266 6881(cr)m 10(oss-r)k 8(efer)k 8(ence)k 220 fnt6 1839 6876(@T)m 26(agged)k 240 fnt4 2888 6881(object)m 240 fnt1 3816 6879(Attach)m 4510(cross)s 5052(referencing)s 6192(tag)s 6537(to)s 6776(object)s 200 fnt2 1346 6226(Figur)m 3(e)k 1954(1.)s 200 fnt1 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 fnt1 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 fnt6 6992 4636(|)m 240 fnt1 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 fnt6 480 3850(USA |0.2i A)m 6(ustr)k 2(alia)k 240 fnt1 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 fnt4 5214 2152(gap)m 240 fnt1 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 fnt6 3049 1571(0i)m 240 fnt1 3205 1574(.)m 240 fnt4 480 1202(V)m 26(ertical)k 1294(concatenation)s 240 fnt1 2644 1200(,)m 2762(denoted)s 3590(by)s 3895(the)s 4254(in\207x)s 4760(operator)s 220 fnt6 5627 1197(/)m 240 fnt1 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 fnt6 480 461(A)m 6(ustr)k 2(alia /0.1i USA)k grestore 0 0 0 0 240 288 60 1417 -15423 LoutGr2 1 LoutMargSet grestore grestore grestore grestore pgsave restore showpage %%Page: 6 7 %%BeginPageSetup %%PageResources: font Times-Roman %%+ font Helvetica %%+ font Times-Italic /pgsave save def %%IncludeResource: font Times-Roman /Times-Romanfnt1 vec2 /Times-Roman LoutRecode /fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Helvetica /Helveticafnt6 vec2 /Helvetica LoutRecode /fnt6 { /Helveticafnt6 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt4 vec2 /Times-Italic LoutRecode /fnt4 { /Times-Italicfnt4 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave 0 0 translate 240 fnt1 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 5765 -1581(-)m 5893(6)s 6066(-)s 9066 13414 0 13305 240 288 60 1417 -15423 LoutGr2 0 LoutMargSet grestore 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 fnt6 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 fnt1 0 10324(The)m 445(tw)s 2(o)k 872(parameters)s 1987(of)s 220 fnt6 2275 10321(/)m 240 fnt1 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 fnt6 425 8717(0.2i)m 240 fnt1 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 fnt6 0 8429(|)m 240 fnt1 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 fnt6 1830 7565(|)m 240 fnt1 1927 7568(is)m 2137(higher)s 2808(than)s 3277(the)s 3625(precedence)s 4756(of)s 220 fnt6 5027 7565(/)m 240 fnt1 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 fnt4 8059 6620(gap)m 8459(modes)s 240 fnt1 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 fnt6 6899 6327(|0.2i)m 240 fnt1 7366 6330(is)m 7586(an)s 7880(abbre)s 6(viation)k 0 6042(for)m 220 fnt6 377 6039(|0.2ie)m 240 fnt1 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 fnt6 6061 6039(|0.3ix)m 240 fnt1 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 fnt6 7954 5751(|2.5it)m 240 fnt1 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 fnt6 5862 4887(r)m 240 fnt1 6012 4890(unit:)m 6568(one)s 220 fnt6 6987 4887(r)m 240 fnt1 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 fnt6 4546 4599(|1r)m -8(t)k 240 fnt1 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 fnt6 2103 4311(|0.5r)m -8(t)k 240 fnt1 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 fnt4 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 fnt6 4545 1791(@OneRo)m 3(w)k 240 fnt1 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 fnt6 3156 1215(^)m 240 fnt1 3322 1218(to)m 3561(the)s 3909(preceding)s 4905(concatenation)s 6290(operator:)s 220 fnt6 480 717(@OneRo)m 3(w { X ^/2p @HLine /2p )k 19(Y })k grestore 0 0 0 0 240 288 60 1417 -15423 LoutGr2 0 LoutMargSet grestore 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 Times-Roman /Times-Romanfnt1 vec2 /Times-Roman LoutRecode /fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Helvetica /Helveticafnt6 vec2 /Helvetica LoutRecode /fnt6 { /Helveticafnt6 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt4 vec2 /Times-Italic LoutRecode /fnt4 { /Times-Italicfnt4 LoutFont } def %%IncludeResource: font Symbol /fnt5 { /Symbol LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt2 vec2 /Times-Bold LoutRecode /fnt2 { /Times-Boldfnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave 0 0 translate 240 fnt1 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 5768 -1575(-)m 5896(7)s 6064(-)s 9066 13422 0 13422 240 288 60 1417 -15423 LoutGr2 1 LoutMargSet grestore 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 fnt6 1786 7444(|)m 240 fnt4 1843 7449(length)m 220 fnt6 2456 7444(e)m 240 fnt1 0 6238(Hyphenation)m 220 fnt6 1786 6235(|)m 240 fnt4 1843 6240(length)m 220 fnt6 2456 6235(h)m 240 fnt1 0 5029(Ov)m 3(erstrik)k 2(e)k 220 fnt6 1786 5026(|)m 240 fnt4 1843 5031(length)m 220 fnt6 2456 5026(o)m 240 fnt1 0 3820(Mark-to-mark)m 220 fnt6 1786 3817(|)m 240 fnt4 1843 3822(length)m 220 fnt6 2456 3817(x)m 240 fnt1 0 2611(K)m 6(erning)k 220 fnt6 1786 2608(|)m 240 fnt4 1843 2613(length)m 220 fnt6 2456 2608(k)m 240 fnt1 0 1402(T)m 19(ab)k 4(ulation)k 220 fnt6 1786 1399(|)m 240 fnt4 1843 1404(length)m 220 fnt6 2456 1399(t)m gsave 3291 0 translate 240 fnt1 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 fnt1 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 fnt1 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 fnt1 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 fnt1 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 fnt1 68 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore grestore gsave 0 0 translate 180 fnt1 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 fnt1 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 fnt1 68 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore grestore gsave 1247 7395 translate 180 fnt1 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 fnt1 68 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore grestore 180 fnt4 1534 7192(length)m gsave 567 6304 translate 180 fnt1 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 fnt1 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 fnt1 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 fnt1 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 fnt1 68 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore grestore gsave 0 0 translate 180 fnt1 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 fnt1 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 fnt1 68 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore grestore gsave 1247 6214 translate 180 fnt1 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 fnt1 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 fnt1 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 fnt1 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 fnt1 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 fnt1 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 fnt1 68 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore grestore gsave 0 0 translate 180 fnt1 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 fnt1 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 fnt1 68 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore grestore gsave 680 4976 translate 180 fnt1 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 fnt1 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 fnt1 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 fnt1 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 fnt1 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 fnt1 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 fnt1 68 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore grestore gsave 0 0 translate 180 fnt1 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 fnt1 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 fnt1 68 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore grestore gsave 680 3739 translate 180 fnt1 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 fnt1 68 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore grestore 180 fnt1 941 3536(max)m 180 fnt5 1256 3531(\()m 180 fnt4 1319 3537(length)m 180 fnt5 1774 3531(,)m 180 fnt4 1854 3537(a)m 180 fnt5 1994 3531(+)m 180 fnt4 2145 3537(b)m 180 fnt5 2240 3531(\))m gsave 1247 4363 translate 180.0000 rotate gsave 0 0 translate 30.0000 rotate gsave 0 0 translate 180 fnt1 68 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore grestore gsave 0 0 translate 180 fnt1 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 fnt1 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 fnt1 68 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore grestore gsave 680 4363 translate 180 fnt1 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 fnt1 68 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore grestore 180 fnt4 920 4431(a)m gsave 2551 4363 translate 180.0000 rotate gsave 0 0 translate 30.0000 rotate gsave 0 0 translate 180 fnt1 68 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore grestore gsave 0 0 translate 180 fnt1 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 fnt1 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 fnt1 68 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore grestore gsave 2268 4363 translate 180 fnt1 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 fnt1 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 fnt1 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 fnt1 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 fnt1 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 fnt1 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 fnt1 68 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore grestore gsave 0 0 translate 180 fnt1 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 fnt1 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 fnt1 68 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore grestore gsave 680 2443 translate 180 fnt1 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 fnt1 68 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore grestore 180 fnt1 999 2240(max)m 180 fnt5 1314 2235(\()m 180 fnt4 1377 2241(length)m 180 fnt5 1832 2235(,)m 180 fnt4 1912 2241(a)m 180 fnt5 2007 2235(,)m 180 fnt4 2087 2241(b)m 180 fnt5 2182 2235(\))m gsave 1247 3067 translate 180.0000 rotate gsave 0 0 translate 30.0000 rotate gsave 0 0 translate 180 fnt1 68 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore grestore gsave 0 0 translate 180 fnt1 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 fnt1 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 fnt1 68 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore grestore gsave 680 3067 translate 180 fnt1 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 fnt1 68 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore grestore 180 fnt4 920 3135(a)m gsave 2551 3067 translate 180.0000 rotate gsave 0 0 translate 30.0000 rotate gsave 0 0 translate 180 fnt1 68 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore grestore gsave 0 0 translate 180 fnt1 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 fnt1 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 fnt1 68 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore grestore gsave 2268 3067 translate 180 fnt1 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 fnt1 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 fnt1 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 fnt1 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 fnt1 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 fnt1 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 fnt1 68 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore grestore gsave 0 0 translate 180 fnt1 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 fnt1 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 fnt1 68 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore grestore gsave 0 1234 translate 180 fnt1 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 fnt1 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 fnt1 68 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore grestore gsave 0 0 translate 180 fnt1 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 fnt1 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 fnt1 68 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore grestore gsave 0 734 translate 180 fnt1 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 fnt1 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 fnt2 180 4638(Figur)m 3(e)k 788(2.)s 200 fnt1 1030 4639(The)m 1386(six)s 1664(g)s 1(ap)k 1995(modes)s 2557(\()s 200 fnt4 2618 4640(length)m 200 fnt1 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 fnt1 0 4008(has)m 396(the)s 770(desired)s 1545(result,)s 2208(where)s 220 fnt6 2874 4005(2p)m 240 fnt1 3197 4008(is)m 3433(tw)s 2(o)k 3870(points)s 4532(and)s 220 fnt6 4962 4005(@HLine)m 240 fnt1 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 fnt6 3760 3717(@OneCol)m 240 fnt1 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 fnt6 1753 3343(/)m 240 fnt1 1895 3346(called)m 220 fnt6 2542 3343(//)m 240 fnt1 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 fnt6 480 2557(Heading //0.1i)m 480 2269(A |0.2i B /0.1i)m 480 1981(C | D)m 240 fnt1 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 0 0 0 0 240 288 60 1417 -15423 LoutGr2 1 LoutMargSet grestore 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 Times-Roman /Times-Romanfnt1 vec2 /Times-Roman LoutRecode /fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Helvetica /Helveticafnt6 vec2 /Helvetica LoutRecode /fnt6 { /Helveticafnt6 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt2 vec2 /Times-Bold LoutRecode /fnt2 { /Times-Boldfnt2 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt4 vec2 /Times-Italic LoutRecode /fnt4 { /Times-Italicfnt4 LoutFont } def %%IncludeResource: font Symbol /fnt5 { /Symbol LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave 0 0 translate 240 fnt1 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 5768 -1579(-)m 5896(8)s 6063(-)s 9066 13416 0 13307 240 288 60 1417 -15423 LoutGr2 0 LoutMargSet grestore 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 fnt6 1029 12962(||)m 240 fnt1 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 fnt6 953 12300(//)m 240 fnt1 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 fnt6 7841 12300(x // y)m 240 fnt1 8409 12303(can)m 8844(be)s 0 12015(replaced)m 867(by)s 220 fnt6 480 11514(@OneCol { | x } /)m 480 11226(@OneCol { | y })m 240 fnt1 0 10728(for)m 338(an)s 3(y)k 734(objects)s 220 fnt6 1462 10725(x)m 240 fnt1 1629 10728(and)m 220 fnt6 2032 10725(y)m 240 fnt1 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 fnt6 6820 10725(x)m 240 fnt1 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 fnt6 4615 10437(x)m 240 fnt1 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 fnt6 349 10149(y)m 240 fnt1 457 10152(,)m 575(so)s 852(the)s 220 fnt6 1211 10149(/)m 240 fnt1 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 fnt6 2214 9861(//)m 240 fnt1 2339 9864(.)m 480 9490(Unfortunately)m 15(,)k 1915(if)s 220 fnt6 2134 9487(y)m 240 fnt1 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 fnt6 5570 9487(/)m 240 fnt1 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 fnt6 2504 9199(@OneCol)m 240 fnt1 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 fnt6 6649 8911(//)m 240 fnt1 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 fnt6 4841 7961(&)m 240 fnt1 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 fnt6 1177 7385(|)m 240 fnt1 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 fnt6 8604 7385(//1vx)m 240 fnt1 0 7100(during)m 678(paragraph)s 1691(breaking)s 2581(\(Section)s 3434(2.5\).)s 240 fnt2 0 6451(2.4.)m 471(Implementation)s 2159(of)s 2431(objects)s 3201(and)s 3642(concatenation)s 240 fnt1 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 fnt6 480 5185(a |0.5i b /0.2i c | d)m 240 fnt1 0 4730(into)m 425(parse)s 985(trees)s 1486(such)s 1982(as)s gsave 480 3036 translate 240 fnt4 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 fnt5 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 fnt5 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 fnt4 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 fnt5 56 105(0)m 192 fnt4 195 111(.)m 192 fnt5 270 105(5)m 192 fnt4 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 fnt4 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 fnt5 56 105(0)m 192 fnt4 195 111(.)m 192 fnt5 270 105(2)m 192 fnt4 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 fnt5 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 fnt4 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 fnt4 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 fnt4 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 fnt5 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 fnt4 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 fnt5 56 105(0)m 192 fnt4 195 111(.)m 192 fnt5 270 105(2)m 192 fnt4 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 fnt5 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 fnt4 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 fnt5 56 105(0)m 192 fnt4 195 111(.)m 192 fnt5 270 105(3)m 192 fnt4 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 fnt4 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 fnt5 3284 1886(\336)m gsave 3825 648 translate 240 fnt4 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 fnt5 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 fnt4 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 fnt5 56 105(0)m 192 fnt4 195 111(.)m 192 fnt5 270 105(2)m 192 fnt4 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 fnt4 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 fnt5 56 105(0)m 192 fnt4 195 111(.)m 192 fnt5 270 105(3)m 192 fnt4 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 fnt4 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 0 0 0 0 240 288 60 1417 -15423 LoutGr2 0 LoutMargSet 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 Times-Roman /Times-Romanfnt1 vec2 /Times-Roman LoutRecode /fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt4 vec2 /Times-Italic LoutRecode /fnt4 { /Times-Italicfnt4 LoutFont } def %%IncludeResource: font Symbol /fnt5 { /Symbol LoutFont } def %%IncludeResource: font Helvetica /Helveticafnt6 vec2 /Helvetica LoutRecode /fnt6 { /Helveticafnt6 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave 0 0 translate 240 fnt1 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 5766 -1579(-)m 5894(9)s 6065(-)s 9066 13414 0 13305 240 288 60 1417 -15423 LoutGr2 1 LoutMargSet grestore 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 fnt4 5090 11353(hgap)m 240 fnt5 5583 11345(\()m 240 fnt4 5675 11353(x)m 240 fnt5 5801 11345(,)m 240 fnt4 5932 11353(g)m 240 fnt5 6066 11345(,)m 240 fnt4 6197 11353(y)m 240 fnt5 6319 11345(\))m 240 fnt1 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 fnt4 3561 11065(x)m 240 fnt1 3719 11063(and)m 240 fnt4 4114 11065(y)m 240 fnt1 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 fnt4 7255 11065(g)m 240 fnt1 7369 11063(:)m 240 fnt4 7527 11065(right)m 240 fnt5 8000 11057(\()m 240 fnt4 8075 11065(x)m 240 fnt5 8185 11057(\))m 8298(+)s 240 fnt4 8473 11065(length)m 240 fnt5 0 10769(\()m 240 fnt4 89 10777(g)m 240 fnt5 221 10769(\))m 376(+)s 240 fnt4 594 10777(left)m 240 fnt5 920 10769(\()m 240 fnt4 1009 10777(y)m 240 fnt5 1129 10769(\))m 240 fnt1 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 fnt4 6018 10777(length)m 240 fnt5 6629 10769(\()m 240 fnt4 6718 10777(g)m 240 fnt5 6850 10769(\))m 240 fnt1 6982 10775(and)m 240 fnt4 7391 10777(right)m 240 fnt5 7878 10769(\()m 240 fnt4 7968 10777(x)m 240 fnt5 8091 10769(\))m 8246(+)s 240 fnt4 8464 10777(left)m 240 fnt5 8790 10769(\()m 240 fnt4 8880 10777(y)m 240 fnt5 9000 10769(\))m 240 fnt1 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 fnt4 480 9992(X)m 240 fnt5 720 9984(=)m 240 fnt4 933 9992(x)m 168 fnt5 1039 9899(1)m 240 fnt5 1249 9984(|)m 240 fnt4 1294 9992(g)m 168 fnt5 1405 9899(1)m 240 fnt5 1615 9984(\274)m 200 fnt4 1973 10000(^)m 240 fnt5 2069 9984(|)m 240 fnt4 2114 9992(g)m 168 fnt4 2225 9905(i)m 168 fnt5 2291 9899(-)m 2403(1)s 240 fnt4 2613 9992(x)m 168 fnt4 2719 9905(i)m 240 fnt5 2907 9984(\274)m 3265(|)s 240 fnt4 3310 9992(g)m 168 fnt4 3421 9905(n)m 168 fnt5 3523 9899(-)m 3635(1)s 240 fnt4 3845 9992(x)m 168 fnt4 3951 9905(n)m 240 fnt1 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 fnt4 740 8945(left)m 240 fnt5 1060 8937(\()m 240 fnt4 1144 8945(X)m 240 fnt5 1312 8937(\))m 1474(=)s 240 fnt4 1687 8945(left)m 240 fnt5 2007 8937(\()m 240 fnt4 2091 8945(x)m 168 fnt5 2197 8852(1)m 240 fnt5 2275 8937(\))m 2413(+)s 240 fnt4 2614 8945(hgap)m 240 fnt5 3099 8937(\()m 240 fnt4 3183 8945(x)m 168 fnt5 3289 8852(1)m 240 fnt5 3367 8937(,)m 240 fnt4 3474 8945(g)m 168 fnt5 3585 8852(1)m 240 fnt5 3663 8937(,)m 240 fnt4 3770 8945(x)m 168 fnt5 3876 8852(2)m 240 fnt5 3968 8937(\))m 4106(+)s 4307(\274)s 4593(+)s 240 fnt4 4794 8945(hgap)m 240 fnt5 5279 8937(\()m 240 fnt4 5363 8945(x)m 168 fnt4 5469 8858(i)m 168 fnt5 5535 8852(-)m 5647(1)s 240 fnt5 5725 8937(,)m 240 fnt4 5832 8945(g)m 168 fnt4 5943 8858(i)m 168 fnt5 6009 8852(-)m 6121(1)s 240 fnt5 6199 8937(,)m 240 fnt4 6306 8945(x)m 168 fnt4 6412 8858(i)m 240 fnt5 6468 8937(\))m 240 fnt4 579 8542(right)m 240 fnt5 1060 8534(\()m 240 fnt4 1144 8542(X)m 240 fnt5 1312 8534(\))m 1474(=)s 240 fnt4 1687 8542(hgap)m 240 fnt5 2172 8534(\()m 240 fnt4 2256 8542(x)m 168 fnt4 2362 8455(i)m 240 fnt5 2418 8534(,)m 240 fnt4 2525 8542(g)m 168 fnt4 2636 8455(i)m 240 fnt5 2692 8534(,)m 240 fnt4 2799 8542(x)m 168 fnt4 2905 8455(i)m 168 fnt5 2971 8449(+)m 3084(1)s 240 fnt5 3162 8534(\))m 3300(+)s 3501(\274)s 3787(+)s 240 fnt4 3988 8542(hgap)m 240 fnt5 4473 8534(\()m 240 fnt4 4557 8542(x)m 168 fnt4 4663 8455(n)m 168 fnt5 4765 8449(-)m 4877(1)s 240 fnt5 4955 8534(,)m 240 fnt4 5062 8542(g)m 168 fnt4 5173 8455(n)m 168 fnt5 5275 8449(-)m 5387(1)s 240 fnt5 5465 8534(,)m 240 fnt4 5572 8542(x)m 168 fnt4 5678 8455(n)m 240 fnt5 5770 8534(\))m 5908(+)s 240 fnt4 6109 8542(right)m 240 fnt5 6590 8534(\()m 240 fnt4 6674 8542(x)m 168 fnt4 6780 8455(n)m 240 fnt5 6872 8534(\))m 240 fnt4 485 8139(abo)m 2(ve)k 240 fnt5 1060 8131(\()m 240 fnt4 1144 8139(X)m 240 fnt5 1312 8131(\))m 1474(=)s 240 fnt4 1687 8139(abo)m 2(ve)k 240 fnt5 2262 8131(\()m 240 fnt4 2346 8139(x)m 168 fnt5 2452 8044(1)m 240 fnt5 2530 8131(\))m 2680(\255)s 2901(\274)s 3199(\255)s 240 fnt4 3420 8139(abo)m 2(ve)k 240 fnt5 3995 8131(\()m 240 fnt4 4079 8139(x)m 168 fnt4 4185 8050(n)m 240 fnt5 4277 8131(\))m 240 fnt4 480 7736(below)m 240 fnt5 1060 7728(\()m 240 fnt4 1144 7736(X)m 240 fnt5 1312 7728(\))m 1474(=)s 240 fnt4 1687 7736(below)m 240 fnt5 2267 7728(\()m 240 fnt4 2351 7736(x)m 168 fnt5 2457 7641(1)m 240 fnt5 2535 7728(\))m 2685(\255)s 2906(\274)s 3204(\255)s 240 fnt4 3425 7736(below)m 240 fnt5 4005 7728(\()m 240 fnt4 4089 7736(x)m 168 fnt4 4195 7647(n)m 240 fnt5 4287 7728(\))m 240 fnt1 0 7141(where)m 240 fnt5 693 7135(\255)m 240 fnt1 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 fnt6 0 6188(0i)m 240 fnt1 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 fnt4 555 5400(width)m 240 fnt5 1094 5392(\()m 240 fnt4 1178 5400(x)m 168 fnt5 1284 5307(1)m 240 fnt5 1434 5392(|)m 1551(\274)s 1849(|)s 240 fnt4 1966 5400(x)m 168 fnt4 2072 5313(n)m 240 fnt5 2164 5392(\))m 2326(=)s 240 fnt4 2539 5400(width)m 240 fnt5 3078 5392(\()m 240 fnt4 3162 5400(x)m 168 fnt5 3268 5307(1)m 240 fnt5 3346 5392(\))m 3484(+)s 3685(\274)s 3971(+)s 240 fnt4 4172 5400(width)m 240 fnt5 4711 5392(\()m 240 fnt4 4795 5400(x)m 168 fnt4 4901 5313(n)m 240 fnt5 4993 5392(\))m 240 fnt4 480 4997(height)m 240 fnt5 1094 4989(\()m 240 fnt4 1178 4997(x)m 168 fnt5 1284 4904(1)m 240 fnt5 1434 4989(|)m 1551(\274)s 1849(|)s 240 fnt4 1966 4997(x)m 168 fnt4 2072 4910(n)m 240 fnt5 2164 4989(\))m 2326(=)s 240 fnt4 2539 4997(height)m 240 fnt5 3153 4989(\()m 240 fnt4 3237 4997(x)m 168 fnt5 3343 4904(1)m 240 fnt5 3421 4989(\))m 3571(\255)s 3792(\274)s 4090(\255)s 240 fnt4 4311 4997(height)m 240 fnt5 4925 4989(\()m 240 fnt4 5009 4997(x)m 168 fnt4 5115 4910(n)m 240 fnt5 5207 4989(\))m 240 fnt1 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 fnt4 555 3903(width)m 240 fnt5 1094 3895(\()m 240 fnt4 1178 3903(x)m 168 fnt5 1284 3810(1)m 240 fnt4 1434 3903(/)m 240 fnt5 1609 3895(\274)m 240 fnt4 1907 3903(/)m 2082(x)s 168 fnt4 2188 3816(n)m 240 fnt5 2280 3895(\))m 2442(=)s 240 fnt4 2655 3903(width)m 240 fnt5 3194 3895(\()m 240 fnt4 3278 3903(x)m 168 fnt5 3384 3810(1)m 240 fnt5 3462 3895(\))m 3612(\255)s 3833(\274)s 4131(\255)s 240 fnt4 4352 3903(width)m 240 fnt5 4891 3895(\()m 240 fnt4 4975 3903(x)m 168 fnt4 5081 3816(n)m 240 fnt5 5173 3895(\))m 240 fnt4 480 3500(height)m 240 fnt5 1094 3492(\()m 240 fnt4 1178 3500(x)m 168 fnt5 1284 3407(1)m 240 fnt4 1434 3500(/)m 240 fnt5 1609 3492(\274)m 240 fnt4 1907 3500(/)m 2082(x)s 168 fnt4 2188 3413(n)m 240 fnt5 2280 3492(\))m 2442(=)s 240 fnt4 2655 3500(height)m 240 fnt5 3269 3492(\()m 240 fnt4 3353 3500(x)m 168 fnt5 3459 3407(1)m 240 fnt5 3537 3492(\))m 3675(+)s 3876(\274)s 4162(+)s 240 fnt4 4363 3500(height)m 240 fnt5 4977 3492(\()m 240 fnt4 5061 3500(x)m 168 fnt4 5167 3413(n)m 240 fnt5 5259 3492(\))m 240 fnt1 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 fnt4 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 fnt4 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 fnt5 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 fnt4 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 fnt5 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 fnt4 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 fnt5 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 fnt4 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 0 0 0 0 240 288 60 1417 -15423 LoutGr2 1 LoutMargSet 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 Times-Roman /Times-Romanfnt1 vec2 /Times-Roman LoutRecode /fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Symbol /fnt5 { /Symbol LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt4 vec2 /Times-Italic LoutRecode /fnt4 { /Times-Italicfnt4 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave 0 0 translate 240 fnt1 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 5704 -1579(-)m 5832(10)s 6127(-)s 9066 13416 0 13307 240 288 60 1417 -15423 LoutGr2 0 LoutMargSet grestore 0 13253(is)m 240 fnt5 480 12745([)m 240 fnt4 563 12753(height)m 240 fnt5 1177 12745(\()m 240 fnt4 1261 12753(a)m 240 fnt5 1388 12745(\))m 1538(\255)s 240 fnt4 1759 12753(height)m 240 fnt5 2373 12745(\()m 240 fnt4 2457 12753(b)m 240 fnt5 2583 12745(\))m 2661(])s 2792(+)s 2993([)s 240 fnt4 3076 12753(height)m 240 fnt5 3690 12745(\()m 240 fnt4 3774 12753(c)m 240 fnt5 3888 12745(\))m 4038(\255)s 240 fnt4 4259 12753(height)m 240 fnt5 4873 12745(\()m 240 fnt4 4957 12753(d)m 240 fnt5 5095 12745(\))m 5173(])s 240 fnt1 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 fnt5 480 11691([)m 240 fnt4 563 11699(width)m 240 fnt5 1102 11691(\()m 240 fnt4 1186 11699(a)m 240 fnt5 1313 11691(\))m 1451(+)s 240 fnt4 1652 11699(width)m 240 fnt5 2191 11691(\()m 240 fnt4 2275 11699(b)m 240 fnt5 2401 11691(\))m 2479(])s 2622(\255)s 2843([)s 240 fnt4 2926 11699(width)m 240 fnt5 3465 11691(\()m 240 fnt4 3549 11699(c)m 240 fnt5 3663 11691(\))m 3801(+)s 240 fnt4 4002 11699(width)m 240 fnt5 4541 11691(\()m 240 fnt4 4625 11699(d)m 240 fnt5 4763 11691(\))m 4841(])s 240 fnt1 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 fnt4 7918 10909(a)m 240 fnt1 8113 10907(and)m 240 fnt4 8537 10909(b)m 240 fnt1 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 fnt4 4814 10621(a)m 240 fnt1 4982 10619(and)m 240 fnt4 5379 10621(c)m 240 fnt1 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 fnt4 715 9383(a)m 240 fnt1 896 9381(and)m 240 fnt4 1305 9383(c)m 240 fnt1 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 fnt4 7028 9383(width)m 240 fnt5 7572 9375(\()m 240 fnt4 7662 9383(a)m 240 fnt5 7795 9375(\))m 7961(\255)s 240 fnt4 8199 9383(width)m 240 fnt5 8743 9375(\()m 240 fnt4 8833 9383(c)m 240 fnt5 8953 9375(\))m 240 fnt1 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 fnt4 0 8807(COL)m 240 fnt1 466 8805(,)m 573(de\207ned)s 1336(by)s 240 fnt4 480 8255(width)m 240 fnt5 1019 8247(\()m 240 fnt4 1103 8255(x)m 168 fnt5 1209 8162(1)m 240 fnt4 1347 8255(COL)m 240 fnt5 1885 8247(\274)m 240 fnt4 2171 8255(COL)m 2709(x)s 168 fnt4 2815 8168(n)m 240 fnt5 2907 8247(\))m 3057(=)s 240 fnt4 3270 8255(width)m 240 fnt5 3809 8247(\()m 240 fnt4 3893 8255(x)m 168 fnt5 3999 8162(1)m 240 fnt5 4077 8247(\))m 4227(\255)s 4448(\274)s 4746(\255)s 240 fnt4 4967 8255(width)m 240 fnt5 5506 8247(\()m 240 fnt4 5590 8255(x)m 168 fnt4 5696 8168(n)m 240 fnt5 5788 8247(\))m 240 fnt1 0 7711(and)m 440(replace)s 1221(both)s 240 fnt4 1741 7713(a)m 240 fnt1 1952 7711(and)m 240 fnt4 2393 7713(c)m 240 fnt1 2591 7711(by)m 240 fnt4 2922 7713(a)m 3218(COL)s 3865(c)s 240 fnt1 3967 7711(.)m 4168(T)s 19(o)k 4504(pre)s 6(v)k 3(ent)k 240 fnt4 5309 7713(COL)m 240 fnt1 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 fnt4 4539 7425(SPLIT)m 240 fnt1 5228 7423(by)m 240 fnt4 555 6920(width)m 240 fnt5 1094 6912(\()m 240 fnt4 1178 6920(x)m 1356(SPLIT)s 2057(y)s 240 fnt5 2171 6912(\))m 2333(=)s 240 fnt4 2546 6920(width)m 240 fnt5 3085 6912(\()m 240 fnt4 3169 6920(x)m 240 fnt5 3287 6912(\))m 240 fnt4 480 6517(height)m 240 fnt5 1094 6509(\()m 240 fnt4 1178 6517(x)m 1356(SPLIT)s 2057(y)s 240 fnt5 2171 6509(\))m 2333(=)s 240 fnt4 2546 6517(height)m 240 fnt5 3160 6509(\()m 240 fnt4 3244 6517(y)m 240 fnt5 3358 6509(\))m 240 fnt1 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 fnt4 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 fnt4 123 128(a)m grestore (T) lfigpromotelabels grestore end end restore grestore 240 fnt5 1130 5552(\336)m gsave 1671 4314 translate 240 fnt4 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 fnt4 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 fnt4 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 fnt4 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 fnt4 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 fnt4 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 fnt1 0 3814(widens)m 240 fnt4 740 3816(a)m 240 fnt1 926 3814(to)m 240 fnt4 1176 3816(width)m 240 fnt5 1726 3808(\()m 240 fnt4 1821 3816(a)m 240 fnt5 1959 3808(\))m 2142(\255)s 240 fnt4 2396 3816(width)m 240 fnt5 2946 3808(\()m 240 fnt4 3041 3816(c)m 240 fnt5 3166 3808(\))m 240 fnt1 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 fnt4 8552 3528(R)m 9(O)k 12(W)k 240 fnt1 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 fnt4 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 fnt4 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 fnt5 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 fnt4 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 fnt5 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 fnt4 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 fnt5 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 fnt4 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 0 0 0 0 240 288 60 1417 -15423 LoutGr2 0 LoutMargSet grestore 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 Times-Roman /Times-Romanfnt1 vec2 /Times-Roman LoutRecode /fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt4 vec2 /Times-Italic LoutRecode /fnt4 { /Times-Italicfnt4 LoutFont } def %%IncludeResource: font Symbol /fnt5 { /Symbol LoutFont } def %%IncludeResource: font Helvetica /Helveticafnt6 vec2 /Helvetica LoutRecode /fnt6 { /Helveticafnt6 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave 0 0 translate 240 fnt1 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 5714 -1579(-)m 5842(11)s 6117(-)s 9066 13419 0 13363 240 288 60 1417 -15423 LoutGr2 1 LoutMargSet grestore gsave 480 11049 translate 240 fnt4 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 fnt5 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 fnt5 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 fnt4 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 fnt4 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 fnt4 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 fnt4 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 fnt4 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 fnt4 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 fnt4 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 fnt4 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 fnt4 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 fnt4 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 fnt4 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 fnt4 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 fnt4 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 fnt4 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 fnt5 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 fnt4 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 fnt4 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 fnt4 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 fnt4 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 fnt4 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 fnt4 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 fnt4 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 fnt4 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 fnt4 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 fnt4 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 fnt4 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 fnt4 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 fnt4 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 fnt4 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 fnt4 7274 10312(COL)m 240 fnt1 7790 10310(or)m 240 fnt4 8040 10312(R)m 9(O)k 12(W)k 240 fnt1 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 fnt6 480 8859({ a // c | d } | { b / e })m 480 8571(/ { f / i } | { g | h // j })m 240 fnt1 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 fnt4 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 fnt4 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 fnt4 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 fnt4 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 fnt4 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 fnt4 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 fnt4 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 fnt4 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 fnt4 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 fnt4 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 fnt4 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 fnt5 480 4915(\()m 564(\()s 240 fnt4 648 4923(width)m 240 fnt5 1187 4915(\()m 240 fnt4 1271 4923(a)m 240 fnt5 1398 4915(\))m 1548(\255)s 1769(\()s 240 fnt4 1853 4923(x)m 240 fnt5 2031 4915(+)m 240 fnt4 2232 4923(y)m 240 fnt5 2346 4915(\))m 2424(\))s 2562(+)s 240 fnt4 2763 4923(z)m 240 fnt5 2866 4915(\))m 3016(\255)s 3237(\()s 240 fnt4 3321 4923(x)m 240 fnt5 3499 4915(+)m 3700(\()s 3784(\()s 240 fnt4 3868 4923(y)m 240 fnt5 4042 4915(+)m 240 fnt4 4243 4923(z)m 240 fnt5 4346 4915(\))m 4496(\255)s 240 fnt4 4717 4923(width)m 240 fnt5 5256 4915(\()m 240 fnt4 5340 4923(j)m 240 fnt5 5418 4915(\))m 5496(\))s 5574(\))s 240 fnt1 0 4419(where)m 240 fnt4 480 3918(x)m 240 fnt5 670 3910(=)m 240 fnt4 883 3918(width)m 240 fnt5 1422 3910(\()m 240 fnt4 1506 3918(c)m 240 fnt5 1620 3910(\))m 1770(\255)s 240 fnt4 1991 3918(width)m 240 fnt5 2530 3910(\()m 240 fnt4 2662 3918(f)m 240 fnt5 2823 3910(\))m 2973(\255)s 240 fnt4 3194 3918(width)m 240 fnt5 3733 3910(\()m 240 fnt4 3817 3918(i)m 240 fnt5 3892 3910(\))m 240 fnt4 480 3367(y)m 240 fnt5 666 3359(=)m 240 fnt4 879 3367(width)m 240 fnt5 1418 3359(\()m 240 fnt4 1502 3367(d)m 240 fnt5 1688 3359(\))m 1838(\255)s 240 fnt4 2059 3367(width)m 240 fnt5 2598 3359(\()m 240 fnt4 2682 3367(g)m 240 fnt5 2808 3359(\))m 240 fnt4 480 2816(z)m 240 fnt5 655 2808(=)m 240 fnt4 868 2816(width)m 240 fnt5 1407 2808(\()m 240 fnt4 1491 2816(b)m 240 fnt5 1617 2808(\))m 1767(\255)s 240 fnt4 1988 2816(width)m 240 fnt5 2527 2808(\()m 240 fnt4 2611 2816(e)m 240 fnt5 2722 2808(\))m 2872(\255)s 240 fnt4 3093 2816(width)m 240 fnt5 3632 2808(\()m 240 fnt4 3716 2816(h)m 240 fnt5 3843 2808(\))m 240 fnt1 0 2312(It)m 224(seems)s 878(clear)s 1420(that)s 240 fnt4 1857 2314(y)m 240 fnt1 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 fnt4 7449 1450(Constr)m 3(ained)k 240 fnt1 8722 1448(and)m 240 fnt4 0 1162(AdjustSize)m 240 fnt1 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 0 0 0 0 240 288 60 1417 -15423 LoutGr2 1 LoutMargSet grestore 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 Times-Roman /Times-Romanfnt1 vec2 /Times-Roman LoutRecode /fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt4 vec2 /Times-Italic LoutRecode /fnt4 { /Times-Italicfnt4 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt2 vec2 /Times-Bold LoutRecode /fnt2 { /Times-Boldfnt2 LoutFont } def %%IncludeResource: font Helvetica /Helveticafnt6 vec2 /Helvetica LoutRecode /fnt6 { /Helveticafnt6 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave 0 0 translate 240 fnt1 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 5705 -1579(-)m 5833(12)s 6127(-)s 9066 13419 0 13310 240 288 60 1417 -15423 LoutGr2 0 LoutMargSet grestore 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 fnt4 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 fnt4 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 fnt4 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 fnt4 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 fnt4 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 fnt4 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 fnt4 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 fnt4 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 fnt4 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 fnt4 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 fnt4 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 fnt4 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 fnt4 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 fnt4 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 fnt4 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 fnt4 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 fnt4 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 fnt4 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 fnt4 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 fnt4 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 fnt4 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 fnt4 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 fnt4 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 fnt4 645 5110(LK)m 240 fnt1 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 fnt2 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 fnt1 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 fnt6 480 518(A shor)m -8(t par)k 2(ag)k 2(r)k 2(aph of te)k 6(xt.)k grestore 0 0 0 0 240 288 60 1417 -15423 LoutGr2 0 LoutMargSet grestore grestore grestore grestore pgsave restore showpage %%Page: 13 14 %%BeginPageSetup %%PageResources: font Times-Roman %%+ font Helvetica %%+ font Times-Italic /pgsave save def %%IncludeResource: font Times-Roman /Times-Romanfnt1 vec2 /Times-Roman LoutRecode /fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Helvetica /Helveticafnt6 vec2 /Helvetica LoutRecode /fnt6 { /Helveticafnt6 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt4 vec2 /Times-Italic LoutRecode /fnt4 { /Times-Italicfnt4 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave 0 0 translate 240 fnt1 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 5710 -1579(-)m 5838(13)s 6122(-)s 9066 13416 0 13307 240 288 60 1417 -15423 LoutGr2 1 LoutMargSet grestore 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 fnt6 480 9700({ )m 11(Times Slope 12p } @F)k 6(ont { Hello)k 8(, w)k 2(or)k -3(ld })k 240 fnt1 0 9204(should)m 697(ha)s 4(v)k 3(e)k 1198(result)s 240 fnt4 480 8750(Hello,)m 1104(world)s 240 fnt1 0 8268(Lout)m 528(also)s 983(pro)s 3(vides)k 220 fnt6 1872 8265(@Break)m 240 fnt1 2745 8268(and)m 220 fnt6 3166 8265(@Space)m 240 fnt1 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 fnt6 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 fnt1 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 fnt6 5100 2484(\(1\))m 240 fnt1 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 fnt4 2724 1625(WIDE)m 240 fnt1 3375 1623(node,)m 3936(corresponding)s 5346(to)s 5573(a)s 220 fnt6 5728 1620(@Wide)m 240 fnt1 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 fnt6 0 756(|)m 240 fnt1 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 0 0 0 0 240 288 60 1417 -15423 LoutGr2 1 LoutMargSet grestore 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 Times-Roman /Times-Romanfnt1 vec2 /Times-Roman LoutRecode /fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Helvetica /Helveticafnt6 vec2 /Helvetica LoutRecode /fnt6 { /Helveticafnt6 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt2 vec2 /Times-Bold LoutRecode /fnt2 { /Times-Boldfnt2 LoutFont } def %%IncludeResource: font Symbol /fnt5 { /Symbol LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave 0 0 translate 240 fnt1 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 5705 -1579(-)m 5833(14)s 6127(-)s 9066 13419 0 13310 240 288 60 1417 -15423 LoutGr2 0 LoutMargSet grestore 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 fnt6 480 11805(2i @Wide { Heading // a |1r)m -8(t b })k 240 fnt1 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 fnt6 6366 11303(a |1r)m -8(t b)k 240 fnt1 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 fnt6 6230 11015(Heading)m 240 fnt1 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 fnt6 1660 8625(@Break)m 240 fnt1 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 fnt2 0 7547(3.)m 291(De\207nitions)s 240 fnt1 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 fnt2 0 5603(3.1.)m 471(Operators)s 240 fnt1 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 fnt6 480 4056(2 sup n)m 240 fnt1 0 3531(appears)m 781(as)s 168 fnt1 1145 3647(n)m 240 fnt5 1031 3525(2)m 240 fnt1 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 fnt6 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 fnt1 0 520(The)m 220 fnt6 481 517(sup)m 240 fnt1 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 0 0 0 0 240 288 60 1417 -15423 LoutGr2 0 LoutMargSet grestore 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 Times-Roman /Times-Romanfnt1 vec2 /Times-Roman LoutRecode /fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt4 vec2 /Times-Italic LoutRecode /fnt4 { /Times-Italicfnt4 LoutFont } def %%IncludeResource: font Helvetica /Helveticafnt6 vec2 /Helvetica LoutRecode /fnt6 { /Helveticafnt6 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt2 vec2 /Times-Bold LoutRecode /fnt2 { /Times-Boldfnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave 0 0 translate 240 fnt1 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 5709 -1582(-)m 5837(15)s 6123(-)s 9066 13413 0 13304 240 288 60 1417 -15423 LoutGr2 1 LoutMargSet grestore 0 13250(the)m 348(structure)s gsave 608 12769 translate 280 fnt4 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 fnt6 0 56(y)m grestore grestore end end restore grestore gsave 480 12634 translate 280 fnt4 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 fnt6 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 fnt6 4118 12180(@OneRo)m 3(w)k 240 fnt1 5268 12183(operator)m 9(,)k 6181(and)s 220 fnt6 6604 12180(y)m 240 fnt1 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 fnt6 4231 11892(0.5f)m 240 fnt1 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 fnt6 1280 11604(k)m 240 fnt1 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 fnt6 2024 11316(2)m 240 fnt1 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 fnt6 586 11028(0)m 240 fnt1 765 11031(to)m 220 fnt6 1009 11028(9)m 240 fnt1 1186 11031(are)m 1538(classed)s 2291(as)s 2546(punctuation)s 3737(characters,)s 4816(permitting)s 220 fnt6 5869 11028(234)m 240 fnt1 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 fnt4 2352 9133(Named)m 240 fnt1 3097 9131(parameters)m 4195(solv)s 3(e)k 4753(both)s 5236(problems:)s 220 fnt6 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 fnt1 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 fnt6 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 fnt1 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 fnt6 1958 3394(@T)m 26(ag)k 240 fnt1 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 fnt6 348 3106(@Title)m 240 fnt1 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 fnt2 0 1222(3.2.)m 471(Recursion)s 1563(and)s 2004(page)s 2539(lay)s 6(out)k 240 fnt1 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 0 0 0 0 240 288 60 1417 -15423 LoutGr2 1 LoutMargSet grestore grestore grestore grestore pgsave restore showpage %%Page: 16 17 %%BeginPageSetup %%PageResources: font Times-Roman %%+ font Helvetica /pgsave save def %%IncludeResource: font Times-Roman /Times-Romanfnt1 vec2 /Times-Roman LoutRecode /fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Helvetica /Helveticafnt6 vec2 /Helvetica LoutRecode /fnt6 { /Helveticafnt6 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave 0 0 translate 240 fnt1 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 5705 -1581(-)m 5833(16)s 6126(-)s 9066 13414 0 13305 240 288 60 1417 -15423 LoutGr2 0 LoutMargSet grestore 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 fnt6 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 fnt1 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 fnt6 480 7493(def @Leaders { ..)m 13( @Leaders })k 240 fnt1 0 6999(Note)m 535(that)s 968(both)s 220 fnt6 1465 6996(..)m 240 fnt1 1643 6999(and)m 220 fnt6 2061 6996(@Leaders)m 240 fnt1 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 fnt6 7273 6420(@Leaders)m 240 fnt1 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 fnt6 480 5634(4i @Wide { Chapter 7 @Leaders 53 })m 240 fnt1 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 fnt6 0 4559(@Leaders)m 240 fnt1 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 fnt6 1358 3609(@Ne)m 6(xt)k 240 fnt1 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 fnt6 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 0 0 0 0 240 288 60 1417 -15423 LoutGr2 0 LoutMargSet grestore grestore grestore grestore pgsave restore showpage %%Page: 17 18 %%BeginPageSetup %%PageResources: font Times-Roman %%+ font Helvetica /pgsave save def %%IncludeResource: font Times-Roman /Times-Romanfnt1 vec2 /Times-Roman LoutRecode /fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Helvetica /Helveticafnt6 vec2 /Helvetica LoutRecode /fnt6 { /Helveticafnt6 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave 0 0 translate 240 fnt1 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 5708 -1579(-)m 5836(17)s 6124(-)s 9066 13418 0 13418 240 288 60 1417 -15423 LoutGr2 1 LoutMargSet grestore 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 fnt6 3059 13252(@P)m 8(ageList 1)k 240 fnt1 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 fnt1 845 2216(-)m 931(1)s 1035(-)s 140 fnt6 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 fnt1 839 2216(-)m 925(2)s 1041(-)s 140 fnt6 170 2000(@T)m 16(e)k 4(xtPlace)k 170 173(@F)m 4(ootSect)k grestore 140 fnt6 480 7712(@P)m 5(ageList 3)k 240 fnt1 0 7230(Similarly)m 15(,)k 980(we)s 1315(may)s 1781(de\207ne)s 220 fnt6 2422 7227(@F)m 6(ootSect)k 240 fnt1 3573 7230(lik)m 2(e)k 3985(this:)s 220 fnt6 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 fnt1 0 2491(so)m 266(that)s 684(an)s 967(in)s 9(v)k 4(ocation)k 2021(of)s 220 fnt6 2292 2488(@F)m 6(ootSect)k 240 fnt1 3443 2491(produces)m gsave 480 2151 translate 220 fnt6 1440 0 0 0 220 288 61 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore 220 fnt6 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 0 0 0 0 240 288 60 1417 -15423 LoutGr2 1 LoutMargSet grestore 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 Times-Roman /Times-Romanfnt1 vec2 /Times-Roman LoutRecode /fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Helvetica /Helveticafnt6 vec2 /Helvetica LoutRecode /fnt6 { /Helveticafnt6 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt2 vec2 /Times-Bold LoutRecode /fnt2 { /Times-Boldfnt2 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt4 vec2 /Times-Italic LoutRecode /fnt4 { /Times-Italicfnt4 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave 0 0 translate 240 fnt1 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 5708 -1579(-)m 5836(18)s 6123(-)s 9066 13416 0 13307 240 288 60 1417 -15423 LoutGr2 0 LoutMargSet grestore 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 fnt6 5951 12588(@T)m 26(e)k 6(xtPlace)k 240 fnt1 7170 12591(and)m 220 fnt6 7575 12588(@F)m 6(ootPlace)k 240 fnt1 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 fnt2 0 11079(3.3.)m 471(Modules)s 240 fnt1 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 fnt6 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 fnt1 0 8126(with)m 482(the)s 830(symbols)s 220 fnt6 1679 8123(sup)m 240 fnt1 2025 8126(,)m 220 fnt6 2132 8123(o)m 3(v)k 5(er)k 240 fnt1 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 fnt6 5066 7749(@Eq)m 240 fnt1 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 fnt6 4830 7461(@Eq)m 240 fnt1 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 fnt4 7032 7178(body)m 240 fnt1 7554 7176(parameter:)m 220 fnt6 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 fnt1 0 3892(The)m 220 fnt6 426 3889(e)m 6(xpor)k -8(t)k 240 fnt1 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 fnt6 1188 3601(@Eq)m 240 fnt1 1666 3604(;)m 1790(and)s 2206(the)s 220 fnt6 2566 3601(body)m 240 fnt1 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 fnt6 4162 3313(@Eq)m 240 fnt1 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 0 0 0 0 240 288 60 1417 -15423 LoutGr2 0 LoutMargSet grestore grestore grestore grestore pgsave restore showpage %%Page: 19 20 %%BeginPageSetup %%PageResources: font Times-Roman %%+ font Helvetica /pgsave save def %%IncludeResource: font Times-Roman /Times-Romanfnt1 vec2 /Times-Roman LoutRecode /fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Helvetica /Helveticafnt6 vec2 /Helvetica LoutRecode /fnt6 { /Helveticafnt6 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave 0 0 translate 240 fnt1 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 5706 -1579(-)m 5834(19)s 6125(-)s 9066 13414 0 13310 240 288 60 1417 -15423 LoutGr2 1 LoutMargSet grestore 220 fnt6 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 fnt1 0 10167(No)m 6(w)k 220 fnt6 579 10164(@Heading)m 240 fnt1 1732 10167(and)m 220 fnt6 2202 10164(@PP)m 240 fnt1 2833 10167(may)m 3365(in)s 9(v)k 4(ok)k 2(e)k 220 fnt6 4124 10164(@InitialF)m 6(ont)k 240 fnt1 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 fnt6 0 9876(@Heading)m 240 fnt1 1100 9879(and)m 220 fnt6 1517 9876(@PP)m 240 fnt1 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 fnt6 0 9588(@BookLa)m 6(y)k 4(out)k 240 fnt1 1428 9591(and)m 1832(present)s 2582(the)s 2930(entire)s 3529(document)s 4533(as)s 220 fnt6 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 fnt1 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 fnt6 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 fnt1 0 4780(which)m 643(has)s 1015(the)s 1365(same)s 1914(ef)s 6(fect:)k 220 fnt6 2617 4777(@Use)m 240 fnt1 3284 4780(mak)m 2(es)k 3946(the)s 4296(e)s 3(xported)k 5190(symbols)s 6040(of)s 220 fnt6 6313 4777(@BookLa)m 6(y)k 4(out)k 240 fnt1 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 fnt6 1889 3827(@Open)m 240 fnt1 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 fnt6 6009 3539(with)m 240 fnt1 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 fnt6 1606 2877(@Use)m 240 fnt1 2282 2880(and)m 220 fnt6 2696 2877(@Open)m 240 fnt1 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 fnt6 0 2589(@Open)m 240 fnt1 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 fnt6 480 2091(@Use { x })m 480 1803(@Use { y })m 480 1515(Body of document)m 240 fnt1 0 1017(can)m 389(be)s 671(replaced)s 1538(by)s grestore 0 0 0 0 240 288 60 1417 -15423 LoutGr2 1 LoutMargSet grestore 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 Times-Roman /Times-Romanfnt1 vec2 /Times-Roman LoutRecode /fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Helvetica /Helveticafnt6 vec2 /Helvetica LoutRecode /fnt6 { /Helveticafnt6 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt2 vec2 /Times-Bold LoutRecode /fnt2 { /Times-Boldfnt2 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt4 vec2 /Times-Italic LoutRecode /fnt4 { /Times-Italicfnt4 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave 0 0 translate 240 fnt1 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 5704 -1579(-)m 5832(20)s 6127(-)s 9066 13416 0 13312 240 288 60 1417 -15423 LoutGr2 0 LoutMargSet grestore 220 fnt6 480 13255(x @Open {)m 480 12967(y @Open {)m 480 12679(Body of document)m 480 12391(}})m 240 fnt1 0 11897(and,)m 453(taking)s 1104(the)s 220 fnt6 1452 11894(@Eq)m 240 fnt1 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 fnt6 480 11396(def @Body r)m -3(ight x { Slope @F)k 6(ont x })k 240 fnt1 0 10897(to)m 239(the)s 587(e)s 3(xported)k 1479(de\207nitions)s 2540(of)s 220 fnt6 2811 10894(@Eq)m 240 fnt1 3289 10897(,)m 3396(and)s 3800(replace)s 220 fnt6 480 10396(@Eq { object })m 240 fnt1 0 9899(by)m 220 fnt6 480 9398(@Eq @Open { @Body { object } })m 240 fnt1 0 8898(If)m 220 fnt6 232 8895(@Eq)m 240 fnt1 772 8898(is)m 985(a)s 1153(g)s 1(alle)k 3(y)k 1790(\(Section)s 2645(5.1\),)s 220 fnt6 3133 8895(@Body)m 240 fnt1 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 fnt6 480 7161(def isum { sum from i=1 to n })m 240 fnt1 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 fnt6 4613 6664(@Eq)m 240 fnt1 5172 6667(package)m 6033(itself,)s 6637(where)s 220 fnt6 7298 6664(sum)m 240 fnt1 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 fnt6 1155 6088(impor)m -8(t)k 240 fnt1 1828 6091(clause)m 2481(to)s 2720(solv)s 3(e)k 3278(this)s 3674(problem:)s 220 fnt6 480 5590(impor)m -8(t @Eq)k 480 5302(def isum { sum from i=1 to n })m 240 fnt1 0 4808(may)m 469(appear)s 1169(after)s 220 fnt6 1669 4805(@Eq)m 240 fnt1 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 fnt6 7220 4805(@Eq)m 240 fnt1 7761 4808(visible)m 8458(within)s 0 4520(the)m 335(body)s 855(of)s 220 fnt6 1112 4517(isum)m 240 fnt1 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 fnt6 2952 4229(isum)m 240 fnt1 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 fnt6 3339 3941(impor)m -8(t)k 240 fnt1 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 fnt2 0 2719(3.4.)m 471(Implementation)s 2159(of)s 2431(de\207nitions)s 240 fnt1 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 fnt4 3682 1380(PushScope)m 240 fnt1 4791 1378(and)m 240 fnt4 5200 1380(P)m 19(opScope)k 240 fnt1 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 fnt6 0 799(@Open)m 240 fnt1 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 0 0 0 0 240 288 60 1417 -15423 LoutGr2 0 LoutMargSet grestore 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 Times-Roman /Times-Romanfnt1 vec2 /Times-Roman LoutRecode /fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt4 vec2 /Times-Italic LoutRecode /fnt4 { /Times-Italicfnt4 LoutFont } def %%IncludeResource: font Helvetica /Helveticafnt6 vec2 /Helvetica LoutRecode /fnt6 { /Helveticafnt6 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt2 vec2 /Times-Bold LoutRecode /fnt2 { /Times-Boldfnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave 0 0 translate 240 fnt1 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 5714 -1579(-)m 5842(21)s 6117(-)s 9066 13419 0 13310 240 288 60 1417 -15423 LoutGr2 1 LoutMargSet grestore 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 fnt4 5275 10782(en)m 9(vir)k 10(onment)k 240 fnt1 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 fnt6 6763 8387(@Ne)m 6(xt)k 240 fnt4 7478 8392(object)m 240 fnt1 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 fnt6 5486 8099(@Ne)m 6(xt)k 240 fnt1 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 fnt2 0 6157(4.)m 291(Implementation)s 1979(of)s 2251(the)s 2625(functional)s 3715(subset)s 240 fnt1 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 fnt4 0 2174(1.)m 330(Evaluation)s 1490(of)s 1827(unsized)s 2667(objects.)s 240 fnt1 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 fnt4 0 1310(FONT)m 240 fnt1 630 1308(,)m 240 fnt4 737 1310(BREAK)m 240 fnt1 1494 1308(,)m 1601(and)s 240 fnt4 2005 1310(SP)m 21(A)k 7(CE)k 240 fnt1 2760 1308(nodes,)m 3426(and)s 3830(insert)s 240 fnt4 4420 1310(SPLIT)m 240 fnt1 5049 1308(,)m 240 fnt4 5156 1310(COL)m 240 fnt1 5622 1308(,)m 5729(and)s 240 fnt4 6133 1310(R)m 9(O)k 12(W)k 240 fnt1 6707 1308(nodes)m 7317(\(Section)s 8170(2.3\).)s 240 fnt4 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 fnt1 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 fnt4 3115 527(WIDE)m 240 fnt1 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 0 0 0 0 240 288 60 1417 -15423 LoutGr2 1 LoutMargSet grestore 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 Times-Roman /Times-Romanfnt1 vec2 /Times-Roman LoutRecode /fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt4 vec2 /Times-Italic LoutRecode /fnt4 { /Times-Italicfnt4 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt2 vec2 /Times-Bold LoutRecode /fnt2 { /Times-Boldfnt2 LoutFont } def %%IncludeResource: font Helvetica /Helveticafnt6 vec2 /Helvetica LoutRecode /fnt6 { /Helveticafnt6 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave 0 0 translate 240 fnt1 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 5705 -1579(-)m 5833(22)s 6127(-)s 9066 13419 0 13308 240 288 60 1417 -15423 LoutGr2 0 LoutMargSet grestore 240 fnt4 0 13256(3.)m 274(Height)s 989(calculations.)s 240 fnt1 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 fnt4 0 12751(4.)m 283(Horizontal)s 1389(coor)s 8(dinates.)k 240 fnt1 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 fnt4 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 fnt1 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 fnt2 0 8338(5.)m 291(Galleys)s 240 fnt1 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 fnt2 0 6060(5.1.)m 471(The)s 926(galley)s 1580(abstraction)s 240 fnt1 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 fnt6 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 fnt1 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 0 0 0 0 240 288 60 1417 -15423 LoutGr2 0 LoutMargSet grestore grestore grestore grestore pgsave restore showpage %%Page: 23 24 %%BeginPageSetup %%PageResources: font Times-Roman %%+ font Times-Italic %%+ font Times-Bold /pgsave save def %%IncludeResource: font Times-Roman /Times-Romanfnt1 vec2 /Times-Roman LoutRecode /fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt4 vec2 /Times-Italic LoutRecode /fnt4 { /Times-Italicfnt4 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt2 vec2 /Times-Bold LoutRecode /fnt2 { /Times-Boldfnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave 0 0 translate 240 fnt1 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 5710 -1579(-)m 5838(23)s 6122(-)s 9066 13416 0 13416 240 288 60 1417 -15423 LoutGr2 1 LoutMargSet grestore 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 fnt4 2163 10628(Constr)m 3(ained)k 240 fnt1 3410 10626(and)m 240 fnt4 3814 10628(AdjustSize)m 240 fnt1 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 fnt2 41 8421(Figur)m 3(e)k 649(3.)s 200 fnt1 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 fnt1 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 fnt4 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 fnt4 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 0 0 0 0 240 288 60 1417 -15423 LoutGr2 1 LoutMargSet 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 Times-Roman /Times-Romanfnt1 vec2 /Times-Roman LoutRecode /fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt4 vec2 /Times-Italic LoutRecode /fnt4 { /Times-Italicfnt4 LoutFont } def %%IncludeResource: font Helvetica /Helveticafnt6 vec2 /Helvetica LoutRecode /fnt6 { /Helveticafnt6 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt2 vec2 /Times-Bold LoutRecode /fnt2 { /Times-Boldfnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave 0 0 translate 240 fnt1 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 5705 -1579(-)m 5833(24)s 6127(-)s 9066 13419 0 13419 240 288 60 1417 -15423 LoutGr2 0 LoutMargSet grestore 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 fnt4 371 11156(galle)m 7(y)k 240 fnt1 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 fnt6 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 fnt1 0 7769(The)m 220 fnt6 445 7766(@F)m 6(ootPlace)k 240 fnt1 1719 7769(symbol)m 2496(contains)s 3362(the)s 3727(special)s 4463(symbol)s 220 fnt6 5240 7766(@Galle)m 4(y)k 240 fnt1 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 fnt6 4965 7478(@F)m 6(ootPlace)k 240 fnt1 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 fnt6 863 6902(@Galle)m 4(y)k 240 fnt1 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 fnt6 6550 6614(into)m 240 fnt1 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 fnt6 1332 6326(@F)m 6(ootNote)k 240 fnt1 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 fnt6 6098 6038(into)m 240 fnt1 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 fnt6 1497 5750(@F)m 6(ootPlace)k 240 fnt1 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 fnt6 3021 4800(@F)m 6(ootPlace)k 240 fnt1 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 fnt6 6584 3936(preceding)m 240 fnt1 7606 3939(or)m 220 fnt6 7876 3936(f)m 6(ollo)k 3(wing)k 240 fnt1 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 fnt6 6358 3648(preceding)m 240 fnt1 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 fnt6 7475 2698(@K)m 8(e)k 4(y)k 240 fnt1 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 fnt2 0 1476(5.2.)m 471(The)s 926(galley)s 1580(\210ushing)s 2447(algorithm)s 240 fnt1 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 fnt4 1703 425(galle)m 7(y)k 2368(\210ushing)s 240 fnt1 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 0 0 0 0 240 288 60 1417 -15423 LoutGr2 0 LoutMargSet grestore grestore grestore grestore pgsave restore showpage %%Page: 25 26 %%BeginPageSetup %%PageResources: font Times-Roman %%+ font Helvetica %%+ font Times-Italic /pgsave save def %%IncludeResource: font Times-Roman /Times-Romanfnt1 vec2 /Times-Roman LoutRecode /fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Helvetica /Helveticafnt6 vec2 /Helvetica LoutRecode /fnt6 { /Helveticafnt6 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt4 vec2 /Times-Italic LoutRecode /fnt4 { /Times-Italicfnt4 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave 0 0 translate 240 fnt1 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 5709 -1582(-)m 5837(25)s 6123(-)s 9066 13413 0 13304 240 288 60 1417 -15423 LoutGr2 1 LoutMargSet grestore 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 fnt6 6556 13247(@P)m 8(ageList)k 240 fnt1 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 fnt4 0 3121(output)m 563(\207le)s gsave 860 0 translate 240 fnt1 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 fnt1 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 fnt1 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 fnt1 845 2216(-)m 931(1)s 1035(-)s 410 2000(A)m 563(small)s 140 fnt6 170 1784(@Galle)m 2(y)k 160 fnt1 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 fnt6 170 173(@F)m 4(ootSect)k grestore gsave 1994 0 translate 240 fnt1 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 fnt6 170 201(@P)m 5(ageList 2)k grestore 5055 2611(body)m 5490(te)s 4(xt)k gsave 5055 1974 translate 240 fnt1 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 fnt1 170 204(paragraph)m grestore (D) lfigpromotelabels grestore gsave 5055 1524 translate 240 fnt1 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 fnt1 170 171(of)m 351(te)s 2(xt.)k grestore gsave 5055 1034 translate 240 fnt1 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 fnt6 170 203(@Input)m grestore gsave 0 0 translate 240 fnt1 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 fnt1 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 fnt6 0 8672(@Input)m 240 fnt1 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 fnt6 6781 8384(@P)m 8(ageList)k 240 fnt1 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 fnt1 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 fnt4 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 fnt4 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 fnt4 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 fnt1 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 fnt6 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 fnt6 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 fnt4 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 fnt4 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 fnt6 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 fnt4 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 fnt1 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 fnt4 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 fnt1 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 fnt4 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 fnt4 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 fnt6 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 0 0 0 0 240 288 60 1417 -15423 LoutGr2 1 LoutMargSet 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 Times-Roman /Times-Romanfnt1 vec2 /Times-Roman LoutRecode /fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt4 vec2 /Times-Italic LoutRecode /fnt4 { /Times-Italicfnt4 LoutFont } def %%IncludeResource: font Helvetica /Helveticafnt6 vec2 /Helvetica LoutRecode /fnt6 { /Helveticafnt6 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave 0 0 translate 240 fnt1 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 5705 -1581(-)m 5833(26)s 6126(-)s 9066 13414 0 13414 240 288 60 1417 -15423 LoutGr2 0 LoutMargSet grestore 0 13251(Each)m 521(g)s 1(alle)k 3(y)k 1140(has)s 1495(a)s 240 fnt4 1647 13253(HEAD)m 240 fnt1 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 fnt4 8007 13253(GAP)m 240 fnt1 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 fnt4 4925 12591(galle)m 7(y)k 5569(inde)s 4(x)k 6155(nodes)s 240 fnt1 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 fnt4 2216 12303(RECEPTIVE)m 240 fnt1 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 fnt4 7831 12015(RECEIVING)m 240 fnt1 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 fnt4 3664 11439(UN)m 6(A)k 8(TT)k 12(A)k 7(CHED)k 240 fnt1 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 fnt4 2722 8387(HEAD)m 240 fnt1 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 fnt6 351 7144(@Galle)m 4(y)k 240 fnt1 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 fnt6 7095 7144(@Input)m 240 fnt1 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 fnt4 1822 6487(G)m 240 fnt1 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 fnt4 1132 5696(G)m 240 fnt1 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 fnt4 6687 5696(UN)m 6(A)k 8(TT)k 12(A)k 7(CHED)k 240 fnt1 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 fnt4 3421 5408(S)m 240 fnt1 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 fnt4 7351 5408(G)m 240 fnt1 7524 5406(.)m 0 4903(2.)m 284(If)s 514(no)s 240 fnt4 807 4905(S)m 240 fnt1 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 fnt4 1068 4402(S)m 240 fnt1 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 fnt4 3316 4402(G)m 240 fnt1 3489 4400(.)m 3649(Preserv)s 3(e)k 240 fnt4 4521 4402(S)m 240 fnt1 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 fnt4 3072 4114(S)m 240 fnt1 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 fnt4 6145 3611(G)m 240 fnt1 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 fnt4 2819 3323(G)m 240 fnt1 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 fnt4 8341 3323(G)m 240 fnt1 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 fnt4 3017 2579(G)m 240 fnt1 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 fnt4 480 2205(A)m 7(CCEPT)k 17(.)k 240 fnt1 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 fnt4 8471 1917(G)m 240 fnt1 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 fnt4 959 1341(G)m 240 fnt1 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 fnt4 480 967(REJECT)m 17(.)k 240 fnt1 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 fnt4 7379 967(FOLLO)m 12(WS)k 240 fnt1 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 fnt4 6333 679(G)m 240 fnt1 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 fnt4 3114 391(S)m 240 fnt1 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 0 0 0 0 240 288 60 1417 -15423 LoutGr2 0 LoutMargSet grestore grestore grestore grestore pgsave restore showpage %%Page: 27 28 %%BeginPageSetup %%PageResources: font Times-Roman %%+ font Times-Italic %%+ font Helvetica /pgsave save def %%IncludeResource: font Times-Roman /Times-Romanfnt1 vec2 /Times-Roman LoutRecode /fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt4 vec2 /Times-Italic LoutRecode /fnt4 { /Times-Italicfnt4 LoutFont } def %%IncludeResource: font Helvetica /Helveticafnt6 vec2 /Helvetica LoutRecode /fnt6 { /Helveticafnt6 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave 0 0 translate 240 fnt1 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 5708 -1579(-)m 5836(27)s 6124(-)s 9066 13418 0 13309 240 288 60 1417 -15423 LoutGr2 1 LoutMargSet grestore 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 fnt4 480 12883(SUSPEND.)m 240 fnt1 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 fnt4 4825 10436(G)m 240 fnt1 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 fnt4 5929 10148(UN)m 6(A)k 8(TT)k 12(A)k 7(CHED)k 240 fnt1 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 fnt4 4073 9284(G)m 240 fnt1 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 fnt4 4813 8910(G)m 240 fnt1 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 fnt4 2917 8622(G)m 240 fnt1 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 fnt6 1486 8329(into)m 240 fnt1 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 fnt6 7216 8041(f)m 6(ollo)k 3(wing)k 240 fnt1 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 fnt4 5026 7758(G)m 240 fnt1 5199 7756(')m 13(s)k 5409(in)s 9(v)k 4(ocation)k 6463(point:)s gsave 480 2770 translate 200 fnt1 5379 4646 0 4646 200 288 50 LoutGraphic gsave grestore save gsave 200 dict begin lfigdict begin grestore 200 fnt4 0 4510(dynamic)m 722(par)s 7(ent)k gsave 0 1353 translate 200 fnt1 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 fnt6 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 fnt4 0 3(UN)m 5(A)k 7(TT)k 10(A)k 6(CHED)k grestore (C) lfigpromotelabels grestore 180 fnt6 226 752(@XT)m 21(arget)k grestore gsave 2889 4135 translate 200 fnt1 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 fnt6 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 fnt1 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 fnt6 226 492(@GT)m 21(arget)k grestore gsave 2889 1982 translate 200 fnt1 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 fnt6 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 fnt1 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 fnt1 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 fnt1 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 fnt4 524 2321(G)m 240 fnt1 762 2319(will)m 1193(\207nd)s 1629(the)s 220 fnt6 1982 2316(@GT)m 26(arget)k 240 fnt1 3045 2319(tar)m 4(get)k 3649(within)s 240 fnt4 4322 2321(X)m 240 fnt1 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 fnt4 303 2033(G)m 240 fnt1 568 2031(is)m 811(then)s 1312(promoted)s 2320(via)s 240 fnt4 2704 2033(X)m 240 fnt1 2952 2031(into)m 3410(the)s 3790(\207rst)s 220 fnt6 4254 2028(@XT)m 26(arget)k 240 fnt1 5319 2031(rather)m 5967(than)s 6469(into)s 6926(the)s 7307(second,)s 240 fnt4 8111 2033(G)m 240 fnt1 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 fnt6 0 1452(into)m 240 fnt1 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 fnt4 1074 795(PRECEDES)m 240 fnt1 2327 793(inde)m 3(x)k 2921(at)s 240 fnt4 3163 795(G)m 240 fnt1 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 fnt4 5817 795(FOLLO)m 12(WS)k 240 fnt1 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 fnt4 1000 507(G)m 240 fnt1 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 fnt4 5632 507(FOLLO)m 12(WS)k 240 fnt1 6767 505(inde)m 3(x)k 7360(that)s 7787(its)s 8072(promotion)s grestore 0 0 0 0 240 288 60 1417 -15423 LoutGr2 1 LoutMargSet grestore 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 Times-Roman /Times-Romanfnt1 vec2 /Times-Roman LoutRecode /fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt4 vec2 /Times-Italic LoutRecode /fnt4 { /Times-Italicfnt4 LoutFont } def %%IncludeResource: font Helvetica /Helveticafnt6 vec2 /Helvetica LoutRecode /fnt6 { /Helveticafnt6 LoutFont } def %%IncludeResource: font Symbol /fnt5 { /Symbol LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave 0 0 translate 240 fnt1 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 5708 -1579(-)m 5836(28)s 6123(-)s 9066 13416 0 13307 240 288 60 1417 -15423 LoutGr2 0 LoutMargSet grestore 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 fnt4 4730 13255(PRECEDES)m 240 fnt1 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 fnt4 3697 12967(PRECEDES)m 240 fnt1 4939 12965(and)m 240 fnt4 5340 12967(FOLLO)m 12(WS)k 240 fnt1 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 fnt6 4359 12300(/)m 240 fnt1 4423 12303(,)m 4535(as)s 4790(opposed)s 5652(to)s 5897(the)s 6250(more)s 6802(usual)s 220 fnt6 7367 12300(//)m 240 fnt1 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 fnt4 5492 12017(SUSPEND)m 240 fnt1 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 fnt6 6770 11724(/)m 240 fnt1 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 fnt6 3186 11436(//)m 240 fnt1 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 fnt6 6558 11062(@Align)m 240 fnt1 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 fnt6 921 10112(@Align)m 240 fnt1 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 fnt6 6430 9824(@AlignList)m 240 fnt1 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 fnt6 3470 9536(@AlignPlace)m 240 fnt1 4779 9539(recepti)m 6(v)k 3(e)k 5701(symbols)s 6550(separated)s 7510(by)s 220 fnt6 7804 9536(/)m 240 fnt1 7928 9539(operators:)m 4777 3207 0 3207 240 288 60 480 5992 LoutGr2 grestore save gsave 200 dict begin lfigdict begin grestore 240 fnt4 0 3044(body)m 522(te)s 4(xt)k 926(galle)s 7(y)k gsave 0 161 translate 240 fnt1 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 fnt6 0 47(@Galle)m 4(y)k grestore (A) lfigpromotelabels grestore grestore gsave 2889 1638 translate 240 fnt1 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 fnt6 0 48(@AlignList)m grestore (B) lfigpromotelabels grestore gsave 2889 0 translate 240 fnt1 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 fnt6 226 1138(@AlignPlace)m 226 850(@AlignPlace)m 226 562(...)m 226 274(@EndAlignList)m grestore gsave 0 0 translate 240 fnt1 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 fnt4 0 53(f)m 240 fnt5 113 45(\()m 240 fnt4 197 53(x)m 240 fnt5 315 45(\))m 477(=)s 240 fnt4 690 53(g)m 240 fnt5 816 45(\()m 240 fnt4 900 53(x)m 240 fnt5 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 fnt6 2239 4533(@AlignPlace&&f)m 6(ollo)k 3(wing)k 240 fnt1 4690 4536(tar)m 4(gets.)k 5498(The)s 3(y)k 6052(collect)s 6760(in)s 7014(the)s 220 fnt6 7374 4533(@AlignList)m 240 fnt1 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 fnt4 0 3049(body)m 522(te)s 4(xt)k 926(galle)s 7(y)k gsave 0 166 translate 240 fnt1 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 fnt6 0 47(@Galle)m 4(y)k grestore (A) lfigpromotelabels grestore grestore gsave 2889 1643 translate 240 fnt1 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 fnt6 0 48(@AlignList)m grestore (B) lfigpromotelabels grestore gsave 2889 0 translate 240 fnt1 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 fnt4 666 917(f)m 240 fnt5 779 909(\()m 240 fnt4 863 917(x)m 240 fnt5 981 909(\))m 1143(=)s 240 fnt4 1356 917(g)m 240 fnt5 1482 909(\()m 240 fnt4 1566 917(x)m 240 fnt5 1684 909(\))m 1822(+)s 2023(2)s 240 fnt4 0 629(f)m 240 fnt5 113 621(\()m 240 fnt4 197 629(x)m 240 fnt5 315 621(\))m 453(-)s 240 fnt4 653 629(g)m 240 fnt5 779 621(\()m 240 fnt4 863 629(x)m 240 fnt5 981 621(\))m 1143(=)s 1356(2)s 220 fnt6 1059 336(...)m 1059 48(@EndAlignList)m grestore grestore gsave 0 0 translate 240 fnt1 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 0 0 0 0 240 288 60 1417 -15423 LoutGr2 0 LoutMargSet 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 Times-Roman /Times-Romanfnt1 vec2 /Times-Roman LoutRecode /fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Helvetica /Helveticafnt6 vec2 /Helvetica LoutRecode /fnt6 { /Helveticafnt6 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt4 vec2 /Times-Italic LoutRecode /fnt4 { /Times-Italicfnt4 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt2 vec2 /Times-Bold LoutRecode /fnt2 { /Times-Boldfnt2 LoutFont } def %%IncludeResource: font Symbol /fnt5 { /Symbol LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave 0 0 translate 240 fnt1 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 5706 -1579(-)m 5834(29)s 6125(-)s 9066 13414 0 13305 240 288 60 1417 -15423 LoutGr2 1 LoutMargSet grestore 0 13251(The)m 220 fnt6 450 13248(@AlignList)m 240 fnt1 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 fnt6 1054 12960(/)m 240 fnt1 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 fnt6 5984 12586(@EndAlignList)m 240 fnt1 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 fnt6 3699 12298(@AlignList)m 240 fnt1 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 fnt4 8000 12303(FOLLO)m 12(WS)k 240 fnt1 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 fnt6 4166 9620(into)m 240 fnt1 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 fnt2 0 7822(5.3.)m 471(Size)s 938(constraints)s 2120(and)s 2561(size)s 2988(adjustments)s 240 fnt1 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 fnt6 480 5607(5i @Wide { a / b })m 240 fnt1 0 5113(and)m 406(suppose)s 1236(that)s 1656(the)s 2006(width)s 2610(of)s 220 fnt6 2883 5110(a)m 240 fnt1 3062 5113(is)m 240 fnt5 3274 5107(1)m 240 fnt4 3382 5115(i)m 240 fnt5 3459 5107(,)m 3572(2)s 240 fnt4 3700 5115(i)m 240 fnt1 3825 5113(\()m 240 fnt5 3898 5107(1)m 240 fnt4 4006 5115(i)m 240 fnt1 4131 5113(to)m 4372(the)s 4722(left)s 5101(of)s 5374(the)s 5724(mark,)s 240 fnt5 6324 5107(2)m 240 fnt4 6452 5115(i)m 240 fnt1 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 fnt6 2090 4822(b)m 240 fnt1 2204 4825(?)m 2423(If)s 2653(we)s 2988(let)s 3286(the)s 3634(width)s 4236(of)s 220 fnt6 4507 4822(b)m 240 fnt1 4681 4825(be)m 240 fnt4 4963 4827(l)m 240 fnt5 5041 4819(,)m 240 fnt4 5148 4827(r)m 240 fnt1 5246 4825(,)m 5353(we)s 5688(must)s 6213(ha)s 4(v)k 3(e)k 240 fnt5 480 4277(\()m 564(1)s 240 fnt4 670 4285(i)m 240 fnt5 817 4277(\255)m 240 fnt4 1038 4285(l)m 240 fnt5 1116 4277(\))m 1254(+)s 1455(\()s 1539(2)s 240 fnt4 1665 4285(i)m 240 fnt5 1812 4277(\255)m 240 fnt4 2033 4285(r)m 240 fnt5 2143 4277(\))m 2293(\243)s 2503(5)s 240 fnt4 2622 4285(i)m 240 fnt1 0 3732(with)m 482(the)s 240 fnt5 842 3726(\255)m 240 fnt1 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 fnt5 480 3180(1)m 240 fnt4 586 3188(i)m 240 fnt5 721 3180(+)m 922(2)s 240 fnt4 1048 3188(i)m 240 fnt5 1207 3180(\243)m 1417(5)s 240 fnt4 1536 3188(i)m 583 2893(l)m 240 fnt5 721 2885(+)m 922(2)s 240 fnt4 1048 2893(i)m 240 fnt5 1207 2885(\243)m 1417(5)s 240 fnt4 1536 2893(i)m 240 fnt5 571 2597(1)m 240 fnt4 677 2605(i)m 240 fnt5 812 2597(+)m 240 fnt4 1013 2605(r)m 240 fnt5 1207 2597(\243)m 1417(5)s 240 fnt4 1536 2605(i)m 674 2310(l)m 240 fnt5 812 2302(+)m 240 fnt4 1013 2310(r)m 240 fnt5 1207 2302(\243)m 1417(5)s 240 fnt4 1536 2310(i)m 240 fnt1 0 1799(and)m 428(since)s 1000(we)s 1359(assume)s 2144(that)s 220 fnt6 2587 1796(a)m 240 fnt1 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 0 0 0 0 240 288 60 1417 -15423 LoutGr2 1 LoutMargSet grestore 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 Times-Roman /Times-Romanfnt1 vec2 /Times-Roman LoutRecode /fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt4 vec2 /Times-Italic LoutRecode /fnt4 { /Times-Italicfnt4 LoutFont } def %%IncludeResource: font Symbol /fnt5 { /Symbol LoutFont } def %%IncludeResource: font Helvetica /Helveticafnt6 vec2 /Helvetica LoutRecode /fnt6 { /Helveticafnt6 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave 0 0 translate 240 fnt1 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 5704 -1579(-)m 5832(30)s 6127(-)s 9066 13416 0 12991 240 288 60 1417 -15423 LoutGr2 0 LoutMargSet grestore 240 fnt4 851 13205(l)m 240 fnt5 1013 13197(\243)m 1223(3)s 240 fnt4 1340 13205(i)m 480 12910(l)m 240 fnt5 618 12902(+)m 240 fnt4 819 12910(r)m 240 fnt5 1013 12902(\243)m 1223(5)s 240 fnt4 1342 12910(i)m 819 12622(r)m 240 fnt5 1013 12614(\243)m 1223(4)s 240 fnt4 1348 12622(i)m 240 fnt1 0 12113(Object)m 220 fnt6 697 12110(b)m 240 fnt1 871 12113(may)m 1337(ha)s 4(v)k 3(e)k 1838(width)s 240 fnt4 2440 12115(l)m 240 fnt5 2518 12107(,)m 240 fnt4 2625 12115(r)m 240 fnt1 2783 12113(for)m 3121(an)s 3(y)k 240 fnt4 3518 12115(l)m 240 fnt1 3644 12113(and)m 240 fnt4 4048 12115(r)m 240 fnt1 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 fnt6 480 11238(5i @High { a /2ix b })m 240 fnt1 0 10737(Assuming)m 1024(that)s 220 fnt6 1442 10734(a)m 240 fnt1 1619 10737(has)m 1989(height)s 240 fnt5 2647 10731(1)m 240 fnt4 2753 10739(i)m 240 fnt5 2828 10731(,)m 2935(1)s 240 fnt4 3041 10739(i)m 240 fnt1 3104 10737(,)m 3211(the)s 3559(height)s 240 fnt4 4217 10739(l)m 240 fnt5 4295 10731(,)m 240 fnt4 4402 10739(r)m 240 fnt1 4560 10737(of)m 220 fnt6 4831 10734(b)m 240 fnt1 5005 10737(must)m 5530(satisfy)s 240 fnt5 480 10179(1)m 240 fnt4 586 10187(i)m 240 fnt5 721 10179(+)m 922(\()s 1006(\()s 1090(1)s 240 fnt4 1196 10187(i)m 240 fnt5 1331 10179(+)m 240 fnt4 1532 10187(l)m 240 fnt5 1610 10179(\))m 1760(\255)s 1981(2)s 240 fnt4 2107 10187(i)m 240 fnt5 2182 10179(\))m 2320(+)s 240 fnt4 2521 10187(r)m 240 fnt5 2703 10179(\243)m 2913(5)s 240 fnt4 3032 10187(i)m 240 fnt1 0 9634(This)m 478(time)s 960(the)s 240 fnt5 1325 9628(\255)m 240 fnt1 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 fnt5 8474 9628(2)m 240 fnt4 8602 9636(i)m 240 fnt1 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 fnt6 2207 9343(a)m 240 fnt1 2384 9346(and)m 220 fnt6 2788 9343(b)m 240 fnt1 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 fnt4 851 8795(l)m 240 fnt5 1013 8787(\243)m 288 fnt5 1223 8775(\245)m 240 fnt4 480 8504(l)m 240 fnt5 618 8496(+)m 240 fnt4 819 8504(r)m 240 fnt5 1013 8496(\243)m 1223(3)s 240 fnt4 1340 8504(i)m 819 8216(r)m 240 fnt5 1013 8208(\243)m 1223(2)s 240 fnt4 1349 8216(i)m 240 fnt1 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 fnt4 851 6870(l)m 240 fnt5 1013 6862(\243)m 240 fnt4 1223 6870(x)m 480 6579(l)m 240 fnt5 618 6571(+)m 240 fnt4 819 6579(r)m 240 fnt5 1013 6571(\243)m 240 fnt4 1223 6579(y)m 819 6264(r)m 240 fnt5 1013 6256(\243)m 240 fnt4 1223 6264(z)m 240 fnt1 0 5743(where)m 240 fnt4 641 5745(x)m 240 fnt1 747 5743(,)m 240 fnt4 855 5745(y)m 240 fnt1 1018 5743(and)m 240 fnt4 1423 5745(z)m 240 fnt1 1575 5743(may)m 2042(be)s 288 fnt5 2325 5725(\245)m 240 fnt1 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 fnt4 6579 5745(l)m 240 fnt5 6658 5737(,)m 240 fnt4 6768 5745(r)m 240 fnt5 6953 5737(\243)m 240 fnt4 7166 5745(x)m 240 fnt5 7285 5737(,)m 240 fnt4 7395 5745(y)m 240 fnt5 7510 5737(,)m 240 fnt4 7620 5745(z)m 240 fnt1 7711 5743(,)m 7819(and)s 8224(we)s 8560(call)s 240 fnt4 8960 5745(x)m 240 fnt5 0 5449(,)m 240 fnt4 107 5457(y)m 240 fnt5 221 5449(,)m 240 fnt4 328 5457(z)m 240 fnt1 479 5455(a)m 240 fnt4 645 5457(size)m 1056(constr)s 3(aint)k 240 fnt1 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 fnt5 7291 5063(\245)m 240 fnt5 7514 5075(,)m 7659(5)s 240 fnt4 7791 5083(i)m 240 fnt5 7879 5075(,)m 288 fnt5 8025 5063(\245)m 240 fnt1 8296 5081(for)m 220 fnt6 8647 5078(a / b)m 240 fnt1 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 fnt6 2636 4790(b)m 240 fnt1 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 fnt4 480 3721(x)m 168 fnt5 586 3628(1)m 220 fnt6 772 3716(/)m 240 fnt4 956 3721(x)m 168 fnt5 1062 3628(2)m 220 fnt6 1262 3716(/)m 240 fnt4 1446 3721(.)m 1552(.)s 1658(.)s 220 fnt6 1812 3716(/)m 240 fnt4 1996 3721(x)m 168 fnt4 2102 3634(n)m 240 fnt1 0 3175(where)m 240 fnt4 640 3177(x)m 168 fnt4 746 3090(j)m 240 fnt1 852 3175(has)m 1222(width)s 240 fnt4 1824 3177(l)m 168 fnt4 1890 3090(j)m 240 fnt5 1948 3169(,)m 240 fnt4 2055 3177(r)m 168 fnt4 2127 3090(j)m 240 fnt1 2233 3175(for)m 2571(all)s 240 fnt4 2864 3177(j)m 240 fnt1 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 fnt4 4929 2803(X)m 240 fnt5 5097 2795(,)m 240 fnt4 5204 2803(Y)m 240 fnt5 5367 2795(,)m 240 fnt4 5474 2803(Z)m 240 fnt1 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 fnt4 271 2515(x)m 168 fnt4 377 2428(i)m 240 fnt1 421 2513(.)m 586(Let)s 240 fnt4 965 2515(L)m 240 fnt5 1185 2507(=)m 240 fnt1 1401 2513(max)m 168 fnt4 1808 2428(j)m 240 fnt4 1917 2515(l)m 168 fnt4 1983 2428(j)m 240 fnt1 2090 2513(and)m 240 fnt4 2495 2515(R)m 240 fnt5 2723 2507(=)m 240 fnt1 2939 2513(max)m 168 fnt4 3346 2428(j)m 240 fnt4 3455 2515(r)m 168 fnt4 3527 2428(j)m 240 fnt1 3573 2513(,)m 3681(so)s 3948(that)s 240 fnt4 4367 2515(L)m 240 fnt5 4512 2507(,)m 240 fnt4 4619 2515(R)m 240 fnt1 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 fnt4 0 2202(L)m 240 fnt5 145 2194(,)m 240 fnt4 252 2202(R)m 240 fnt5 477 2194(\243)m 240 fnt4 687 2202(X)m 240 fnt5 855 2194(,)m 240 fnt4 962 2202(Y)m 240 fnt5 1125 2194(,)m 240 fnt4 1232 2202(Z)m 240 fnt1 1377 2200(.)m 1541(Then)s 240 fnt4 2090 2202(x)m 168 fnt4 2196 2115(i)m 240 fnt1 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 fnt4 4911 2202(l)m 168 fnt4 4977 2115(i)m 240 fnt5 5081 2194(,)m 240 fnt4 5188 2202(r)m 168 fnt4 5260 2115(i)m 240 fnt1 5364 2200(satisfying)m 240 fnt5 480 1607(\()m 240 fnt4 564 1615(l)m 168 fnt4 630 1528(i)m 240 fnt5 758 1607(\255)m 240 fnt4 979 1615(L)m 240 fnt5 1124 1607(\))m 1202(,)s 1309(\()s 240 fnt4 1393 1615(r)m 168 fnt4 1465 1528(i)m 240 fnt5 1593 1607(\255)m 240 fnt4 1814 1615(R)m 240 fnt5 1967 1607(\))m 2117(\243)s 240 fnt4 2327 1615(X)m 240 fnt5 2495 1607(,)m 240 fnt4 2602 1615(Y)m 240 fnt5 2765 1607(,)m 240 fnt4 2872 1615(Z)m grestore 0 0 0 0 240 288 60 1417 -15423 LoutGr2 0 LoutMargSet grestore 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 Times-Roman /Times-Romanfnt1 vec2 /Times-Roman LoutRecode /fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt4 vec2 /Times-Italic LoutRecode /fnt4 { /Times-Italicfnt4 LoutFont } def %%IncludeResource: font Symbol /fnt5 { /Symbol LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt2 vec2 /Times-Bold LoutRecode /fnt2 { /Times-Boldfnt2 LoutFont } def %%IncludeResource: font Helvetica /Helveticafnt6 vec2 /Helvetica LoutRecode /fnt6 { /Helveticafnt6 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave 0 0 translate 240 fnt1 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 5714 -1579(-)m 5842(31)s 6117(-)s 9066 13416 0 13307 240 288 60 1417 -15423 LoutGr2 1 LoutMargSet grestore 0 13253(which)m 642(e)s 3(xpands)k 1475(to)s 1714(eight)s 2252(inequalities:)s 240 fnt4 917 12702(l)m 168 fnt4 983 12615(i)m 240 fnt5 1123 12694(\243)m 240 fnt4 1333 12702(X)m 894 12338(L)m 240 fnt5 1123 12330(\243)m 240 fnt4 1333 12338(X)m 528 12047(l)m 168 fnt4 594 11960(i)m 240 fnt5 710 12039(+)m 240 fnt4 911 12047(r)m 168 fnt4 983 11960(i)m 240 fnt5 1123 12039(\243)m 240 fnt4 1333 12047(Y)m 503 11675(l)m 168 fnt4 569 11588(i)m 240 fnt5 685 11667(+)m 240 fnt4 886 11675(R)m 240 fnt5 1123 11667(\243)m 240 fnt4 1333 11675(Y)m 505 11311(L)m 240 fnt5 710 11303(+)m 240 fnt4 911 11311(r)m 168 fnt4 983 11224(i)m 240 fnt5 1123 11303(\243)m 240 fnt4 1333 11311(Y)m 480 10947(L)m 240 fnt5 685 10939(+)m 240 fnt4 886 10947(R)m 240 fnt5 1123 10939(\243)m 240 fnt4 1333 10947(Y)m 911 10664(r)m 168 fnt4 983 10577(i)m 240 fnt5 1123 10656(\243)m 240 fnt4 1333 10664(Z)m 886 10300(R)m 240 fnt5 1123 10292(\243)m 240 fnt4 1333 10300(Z)m 240 fnt1 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 fnt4 869 9242(l)m 168 fnt4 935 9155(i)m 240 fnt5 1075 9234(\243)m 240 fnt4 1285 9242(X)m 869 8870(l)m 168 fnt4 935 8783(i)m 240 fnt5 1075 8862(\243)m 240 fnt4 1285 8870(Y)m 240 fnt5 1508 8862(-)m 240 fnt4 1708 8870(R)m 480 8498(l)m 168 fnt4 546 8411(i)m 240 fnt5 662 8490(+)m 240 fnt4 863 8498(r)m 168 fnt4 935 8411(i)m 240 fnt5 1075 8490(\243)m 240 fnt4 1285 8498(Y)m 863 8134(r)m 168 fnt4 935 8047(i)m 240 fnt5 1075 8126(\243)m 240 fnt4 1285 8134(Z)m 863 7770(r)m 168 fnt4 935 7683(i)m 240 fnt5 1075 7762(\243)m 240 fnt4 1285 7770(Y)m 240 fnt5 1508 7762(-)m 240 fnt4 1708 7770(L)m 240 fnt1 0 7182(Therefore)m 997(the)s 1345(width)s 1947(constraint)s 2949(of)s 240 fnt4 3220 7184(x)m 168 fnt4 3326 7097(i)m 240 fnt1 3430 7182(is)m 480 6644(min)m 240 fnt5 861 6638(\()m 240 fnt4 945 6646(X)m 240 fnt5 1113 6638(,)m 240 fnt4 1220 6646(Y)m 240 fnt5 1443 6638(-)m 240 fnt4 1643 6646(R)m 240 fnt5 1796 6638(\))m 1874(,)s 240 fnt4 1981 6646(Y)m 240 fnt5 2144 6638(,)m 240 fnt1 2251 6644(min)m 240 fnt5 2632 6638(\()m 240 fnt4 2716 6646(Z)m 240 fnt5 2873 6638(,)m 240 fnt4 2980 6646(Y)m 240 fnt5 3203 6638(-)m 240 fnt4 3403 6646(L)m 240 fnt5 3548 6638(\))m 240 fnt1 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 fnt4 6962 6144(WIDE)m 240 fnt1 7641 6142(or)m 240 fnt4 7918 6144(HIGH)m 240 fnt1 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 fnt4 1283 5568(Constr)m 3(ained)k 240 fnt1 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 fnt4 4504 4330(AdjustSize)m 240 fnt1 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 fnt2 0 3391(5.4.)m 471(The)s 926(limited)s 1696(lookahead)s 2802(pr)s 4(oblem)k 240 fnt1 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 fnt6 818 809(@BodyT)m 26(e)k 6(xt)k 240 fnt1 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 fnt6 4872 809(@Chapter)m 240 fnt1 5934 812(g)m 1(alle)k 3(ys)k 6658(tar)s 4(geted)k 7481(into)s 220 fnt6 7905 809(@BodyT)m 26(e)k 6(xt)k 240 fnt1 9019 812(,)m 0 524(and)m 220 fnt6 404 521(@Section)m 240 fnt1 1404 524(g)m 1(alle)k 3(ys)k 2128(tar)s 4(geted)k 2951(into)s 3376(the)s 220 fnt6 3724 521(@Chapter)m 240 fnt1 4787 524(g)m 1(alle)k 3(ys:)k grestore 0 0 0 0 240 288 60 1417 -15423 LoutGr2 1 LoutMargSet grestore grestore grestore grestore pgsave restore showpage %%Page: 32 33 %%BeginPageSetup %%PageResources: font Times-Roman %%+ font Helvetica %%+ font Times-Italic /pgsave save def %%IncludeResource: font Times-Roman /Times-Romanfnt1 vec2 /Times-Roman LoutRecode /fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Helvetica /Helveticafnt6 vec2 /Helvetica LoutRecode /fnt6 { /Helveticafnt6 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt4 vec2 /Times-Italic LoutRecode /fnt4 { /Times-Italicfnt4 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave 0 0 translate 240 fnt1 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 5705 -1579(-)m 5833(32)s 6127(-)s 9066 13416 0 13312 240 288 60 1417 -15423 LoutGr2 0 LoutMargSet grestore 220 fnt6 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 fnt1 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 fnt6 0 9014(//)m 240 fnt1 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 fnt6 6449 8640(@Chapter)m 240 fnt1 7550 8643(or)m 220 fnt6 7848 8640(@Section)m 240 fnt1 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 fnt6 5991 8352(@Input)m 240 fnt1 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 fnt6 5524 7776(@Input)m 240 fnt1 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 fnt6 7257 7200(@Input)m 240 fnt1 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 fnt4 2256 6341(UN)m 6(A)k 8(TT)k 12(A)k 7(CHED)k 240 fnt1 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 fnt6 5886 5386(@F)m 6(ootSect)k 240 fnt1 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 fnt6 5705 4724(@F)m 6(ootSect)k 240 fnt1 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 fnt6 7230 4436(@F)m 6(ootNote)k 240 fnt1 8402 4439(g)m 1(alle)k 3(ys)k 0 4151(\(with)m 220 fnt6 555 4148(@F)m 6(ootPlace&&f)k 6(ollo)k 3(wing)k 240 fnt1 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 fnt6 7975 4148(@F)m 6(ootSect)k 240 fnt1 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 fnt6 4778 3198(@Chapter)m 240 fnt1 5781 3201(,)m 220 fnt6 5879 3198(@Section)m 240 fnt1 6819 3201(,)m 220 fnt6 6916 3198(@BodyT)m 26(e)k 6(xt)k 240 fnt1 8030 3201(\))m 8149(as)s 240 fnt4 8389 3203(for)m 8(cing)k 0 2915(galle)m 7(ys)k 240 fnt1 665 2913(,)m 792(by)s 1107(writing)s 220 fnt6 1871 2910(f)m 6(orce into)k 240 fnt1 2841 2913(instead)m 3596(of)s 220 fnt6 3888 2910(into)m 240 fnt1 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 fnt6 3237 2046(@F)m 6(ootSect)k 240 fnt1 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 fnt6 1139 808(f)m 6(ollo)k 3(wing)k 240 fnt1 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 fnt6 3026 520(preceding)m 240 fnt1 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 0 0 0 0 240 288 60 1417 -15423 LoutGr2 0 LoutMargSet grestore 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 Times-Roman /Times-Romanfnt1 vec2 /Times-Roman LoutRecode /fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt2 vec2 /Times-Bold LoutRecode /fnt2 { /Times-Boldfnt2 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt4 vec2 /Times-Italic LoutRecode /fnt4 { /Times-Italicfnt4 LoutFont } def %%IncludeResource: font Helvetica /Helveticafnt6 vec2 /Helvetica LoutRecode /fnt6 { /Helveticafnt6 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave 0 0 translate 240 fnt1 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 5710 -1579(-)m 5838(33)s 6122(-)s 9066 13416 0 13307 240 288 60 1417 -15423 LoutGr2 1 LoutMargSet grestore 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 fnt2 0 10502(5.5.)m 471(Horizontal)s 1628(galleys)s 240 fnt1 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 fnt4 6334 9451(horizontal)m 7384(galle)s 7(ys)k 240 fnt1 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 fnt6 4425 7920(hor)m -3(iz)k 3(ontally)k 5582(into)s 240 fnt1 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 fnt6 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 fnt1 0 2320(The)m 220 fnt6 431 2317(@HExpand)m 240 fnt1 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 fnt6 5447 1741(&1r)m -8(t)k 240 fnt1 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 fnt6 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 fnt1 0 456(w)m 2(ould)k 655(then)s 1124(be)s 1406(something)s 2456(lik)s 2(e)k grestore 0 0 0 0 240 288 60 1417 -15423 LoutGr2 1 LoutMargSet grestore grestore grestore grestore pgsave restore showpage %%Page: 34 35 %%BeginPageSetup %%PageResources: font Times-Roman %%+ font Helvetica %%+ font Times-Italic /pgsave save def %%IncludeResource: font Times-Roman /Times-Romanfnt1 vec2 /Times-Roman LoutRecode /fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Helvetica /Helveticafnt6 vec2 /Helvetica LoutRecode /fnt6 { /Helveticafnt6 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt4 vec2 /Times-Italic LoutRecode /fnt4 { /Times-Italicfnt4 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave 0 0 translate 240 fnt1 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 5705 -1579(-)m 5833(34)s 6127(-)s 9066 13416 0 13307 240 288 60 1417 -15423 LoutGr2 0 LoutMargSet grestore 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 fnt6 3459 11559(|0.5i)m 240 fnt1 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 fnt6 7241 10983(@LineList)m 240 fnt1 8215 10986(:)m 220 fnt6 480 10485(def @LineList)m 480 10197({)m 480 9909( |0.5i @HExpand @LinePlace)m 480 9621( //1vx @LineList)m 480 9333(})m 240 fnt1 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 fnt1 480 6838(1)m 240 fnt1 559 6743(See)m 987(Jones)s 1597(and)s 2028(Saunders)s 2983(\(1982\).)s 200 fnt1 3932 6838(2)m 240 fnt1 4027 6743(Or)m 4366(so)s 4659(Jacobsen)s 480 6443(\(1973\))m 1167(asserts.)s 200 fnt1 2087 6538(3)m 240 fnt4 2174 6445(ibid)m 240 fnt1 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 fnt6 4144 5937(@F)m 6(ootPlace)k 240 fnt1 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 fnt6 3233 2799(@P)m 8(ar)k 2(ag)k 2(r)k 2(aph { ...)k 13( })k 240 fnt1 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 fnt6 5262 1071(@T)m 26(e)k 6(xtPlace)k 240 fnt1 6487 1074(and)m 220 fnt6 6898 1071(@F)m 6(ootSect)k 240 fnt1 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 0 0 0 0 240 288 60 1417 -15423 LoutGr2 0 LoutMargSet grestore 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 Times-Roman /Times-Romanfnt1 vec2 /Times-Roman LoutRecode /fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt2 vec2 /Times-Bold LoutRecode /fnt2 { /Times-Boldfnt2 LoutFont } def %%IncludeResource: font Helvetica /Helveticafnt6 vec2 /Helvetica LoutRecode /fnt6 { /Helveticafnt6 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt4 vec2 /Times-Italic LoutRecode /fnt4 { /Times-Italicfnt4 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave 0 0 translate 240 fnt1 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 5709 -1582(-)m 5837(35)s 6123(-)s 9066 13413 0 13413 240 288 60 1417 -15423 LoutGr2 1 LoutMargSet grestore 240 fnt2 0 12672(6.)m 291(Cr)s 4(oss)k 926(r)s 4(efer)k 4(ences)k 240 fnt1 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 fnt2 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 fnt1 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 fnt6 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 fnt1 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 fnt6 2768 6044(@Ref)m 6(erence)k 240 fnt1 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 fnt6 0 5468(@T)m 26(ag)k 240 fnt1 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 fnt6 480 4308(@Ref)m 6(erence&&kingston91)k 240 fnt1 0 3809(This)m 240 fnt4 534 3811(cr)m 10(oss)k 1143(r)s 8(efer)k 8(ence)k 240 fnt1 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 fnt6 480 3069(@Ref)m 6(erence&&kingston91 @Open { @A)k 6(uthor)k 11(, @Title })k 240 fnt1 0 2570(The)m 220 fnt6 484 2567(@Open)m 240 fnt1 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 fnt6 0 1329(preceding)m 240 fnt1 1049 1332(and)m 220 fnt6 1491 1329(f)m 6(ollo)k 3(wing)k 240 fnt1 2321 1332(;)m 2471(for)s 2848(e)s 3(xample,)k 220 fnt6 3800 1329(@Sym&&f)m 6(ollo)k 3(wing)k 240 fnt1 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 fnt6 1383 1041(@Sym)m 240 fnt1 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 0 0 0 0 240 288 60 1417 -15423 LoutGr2 1 LoutMargSet grestore grestore grestore grestore pgsave restore showpage %%Page: 36 37 %%BeginPageSetup %%PageResources: font Times-Roman %%+ font Helvetica %%+ font Times-Bold /pgsave save def %%IncludeResource: font Times-Roman /Times-Romanfnt1 vec2 /Times-Roman LoutRecode /fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Helvetica /Helveticafnt6 vec2 /Helvetica LoutRecode /fnt6 { /Helveticafnt6 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt2 vec2 /Times-Bold LoutRecode /fnt2 { /Times-Boldfnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave 0 0 translate 240 fnt1 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 5705 -1581(-)m 5833(36)s 6126(-)s 9066 13414 0 13305 240 288 60 1417 -15423 LoutGr2 0 LoutMargSet grestore 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 fnt6 3318 12960(intro)m 240 fnt1 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 fnt6 0 12672(@Chapter&&intro)m 240 fnt1 1714 12675(,)m 1821(then)s 2290(from)s 2814(there)s 3347(to)s 220 fnt6 3586 12672(@P)m 8(age&&preceding)k 240 fnt1 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 fnt6 480 11800(@Chapter&&intro @Open {)m 480 11512( @P)m 8(age&&preceding @Open { @P)k 8(ageNum })k 480 11224(})m 240 fnt1 0 10730(b)m 4(ut)k 363(this)s 761(f)s 2(ails)k 1222(because)s 220 fnt6 2037 10727(@P)m 8(age&&preceding)k 240 fnt1 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 fnt6 271 10439(@Chapter&&intro)m 240 fnt1 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 fnt6 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 fnt1 0 8914(with)m 482(the)s 220 fnt6 830 8911(@P)m 8(age&&preceding)k 240 fnt1 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 fnt6 480 8413(@Chapter&&intro @Open { @P)m 8(ageNum })k 240 fnt1 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 fnt6 0 7623(@P)m 8(age&&preceding)k 240 fnt1 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 fnt6 480 6837(@P)m 8(age&&{ @Preceding @Chapter&&intro })k 240 fnt1 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 fnt6 2738 6047(@P)m 8(age&&preceding)k 240 fnt1 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 fnt6 4555 5385(preceding)m 240 fnt1 5578 5388(and)m 220 fnt6 5994 5385(f)m 6(ollo)k 3(wing)k 240 fnt1 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 fnt6 5369 5097(@T)m 26(agged)k 240 fnt1 6358 5100(operator:)m 220 fnt6 480 4599(@P)m 8(age&&preceding @T)k 26(agged intro)k 240 fnt1 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 fnt6 5908 4097(intro)m 240 fnt1 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 fnt6 2321 3809(@P)m 8(age)k 240 fnt1 3040 3812(,)m 3147(so)s 3413(that)s 220 fnt6 480 3311(@P)m 8(age&&intro @Open { @P)k 8(ageNum })k 240 fnt1 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 fnt6 8137 2809(@T)m 26(agged)k 240 fnt1 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 fnt2 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 fnt1 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 0 0 0 0 240 288 60 1417 -15423 LoutGr2 0 LoutMargSet grestore grestore grestore grestore pgsave restore showpage %%Page: 37 38 %%BeginPageSetup %%PageResources: font Times-Roman %%+ font Times-Italic %%+ font Helvetica /pgsave save def %%IncludeResource: font Times-Roman /Times-Romanfnt1 vec2 /Times-Roman LoutRecode /fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt4 vec2 /Times-Italic LoutRecode /fnt4 { /Times-Italicfnt4 LoutFont } def %%IncludeResource: font Helvetica /Helveticafnt6 vec2 /Helvetica LoutRecode /fnt6 { /Helveticafnt6 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave 0 0 translate 240 fnt1 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 5708 -1579(-)m 5836(37)s 6124(-)s 9066 13416 0 13307 240 288 60 1417 -15423 LoutGr2 1 LoutMargSet grestore 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 fnt4 8208 10779(database)m 0 10491(\207les)m 240 fnt1 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 fnt4 4078 10491(inde)m 4(x)k 4650(\207le)s 240 fnt1 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 fnt6 480 9700(@Chapter&&intro ch1.ld 57)m 240 fnt1 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 fnt6 1913 7387(preceding)m 240 fnt1 2918 7390(and)m 220 fnt6 3316 7387(f)m 6(ollo)k 3(wing)k 240 fnt1 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 fnt6 1297 3759(preceding)m 240 fnt1 2319 3762(or)m 220 fnt6 2590 3759(f)m 6(ollo)k 3(wing)k 240 fnt1 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 fnt4 474 3476(CR)m 9(OSS_PREC)k 240 fnt1 1973 3474(or)m 240 fnt4 2238 3476(CR)m 9(OSS_FOLL)k 240 fnt1 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 fnt4 401 2900(CR)m 9(OSS_T)k 12(ARG)k 240 fnt1 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 fnt6 8115 1743(preceding)m 240 fnt1 0 1458(and)m 220 fnt6 408 1455(f)m 6(ollo)k 3(wing)k 240 fnt1 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 fnt6 4216 793(@T)m 26(agged)k 240 fnt1 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 fnt6 1923 505(@T)m 26(agged)k 240 fnt1 2903 508(operator)m 3751(we)s 4078(produce)s 4897(one)s 240 fnt4 5290 510(CR)m 9(OSS_PREC)k 240 fnt1 6775 508(or)m 240 fnt4 7026 510(CR)m 9(OSS_FOLL)k 240 fnt1 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 fnt6 6333 217(@T)m 26(agged)k 240 fnt1 7331 220(operator)m 13(.)k 8288(Nothing)s grestore 0 0 0 0 240 288 60 1417 -15423 LoutGr2 1 LoutMargSet grestore grestore grestore grestore pgsave restore showpage %%Page: 38 39 %%BeginPageSetup %%PageResources: font Times-Roman %%+ font Times-Bold %%+ font Times-Italic /pgsave save def %%IncludeResource: font Times-Roman /Times-Romanfnt1 vec2 /Times-Roman LoutRecode /fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt2 vec2 /Times-Bold LoutRecode /fnt2 { /Times-Boldfnt2 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt4 vec2 /Times-Italic LoutRecode /fnt4 { /Times-Italicfnt4 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave 0 0 translate 240 fnt1 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 5708 -1579(-)m 5836(38)s 6123(-)s 9066 13416 0 13307 240 288 60 1417 -15423 LoutGr2 0 LoutMargSet grestore 0 13253(more)m 547(is)s 757(required.)s 240 fnt2 0 12460(7.)m 291(Conclusion)s 240 fnt1 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 fnt4 6213 5436(ftp)m 240 fnt1 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 fnt2 0 1719(Note.)m 240 fnt1 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 fnt2 0 683(Ackno)m 2(wledgment.)k 240 fnt1 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 0 0 0 0 240 288 60 1417 -15423 LoutGr2 0 LoutMargSet grestore grestore grestore grestore pgsave restore showpage %%Page: 39 40 %%BeginPageSetup %%PageResources: font Times-Roman %%+ font Times-Bold %%+ font Times-Italic /pgsave save def %%IncludeResource: font Times-Roman /Times-Romanfnt1 vec2 /Times-Roman LoutRecode /fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt2 vec2 /Times-Bold LoutRecode /fnt2 { /Times-Boldfnt2 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt4 vec2 /Times-Italic LoutRecode /fnt4 { /Times-Italicfnt4 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave 0 0 translate 240 fnt1 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 5706 -1579(-)m 5834(39)s 6125(-)s 9066 13414 0 13414 240 288 60 1417 -15423 LoutGr2 1 LoutMargSet grestore 240 fnt2 0 12961(Refer)m 4(ences)k 240 fnt1 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 fnt4 3893 10639(pub)m 240 fnt1 4326 10637(subdirectory)m 5595(of)s 5885(the)s 6252(home)s 6859(directory)s 7794(of)s 240 fnt4 8084 10639(ftp)m 240 fnt1 8408 10637(to)m 8667(host)s 240 fnt4 480 10351(ftp.cs.su.oz.au)m 240 fnt1 1924 10349(with)m 2439(login)s 3021(name)s 240 fnt4 3628 10351(anonymous)m 240 fnt1 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 fnt4 2154 10063(ftp)m 240 fnt1 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 fnt4 2554 9272(Computing)m 3673(Surve)s 7(ys)k 240 fnt2 4465 9269(14)m 240 fnt1 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 fnt4 480 8479(Communications)m 2158(of)s 2439(the)s 2784(A)s 7(CM)k 240 fnt2 3351 8476(18)m 240 fnt1 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 fnt4 8205 7186(Pr)m 10(oceed)k 240 fnt1 8998 7184(-)m 240 fnt4 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 fnt1 8998 6896(-)m 240 fnt4 480 6610(gas)m 868(NV)s 240 fnt1 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 fnt4 2319 5312(The)m 2731(T)s 2882 5264(E)m 3033 5312(XBook)m 240 fnt1 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 fnt4 5908 2148(IEEE)m 6490(Computer)s 240 fnt1 7453 2146(,)m 7560(7\21119)s 8091(\(1991\))s 8718(.)s grestore 0 0 0 0 240 288 60 1417 -15423 LoutGr2 1 LoutMargSet grestore grestore grestore grestore pgsave restore showpage %%Trailer %%DocumentNeededResources: font Times-Roman %%+ font Times-Bold %%+ font Times-Italic %%+ font Times-Italic %%+ font Symbol %%+ font Helvetica %%DocumentSuppliedResources: procset LoutStartUp %%+ procset LoutTabPrependGraphic %%+ procset LoutFigPrependGraphic %%+ procset LoutBasicSetup %%+ encoding vec2 %%Pages: 40 %%EOF