%!PS-Adobe-3.0 %%Creator: Basser Lout Version 3.28 (December 2002) %%CreationDate: Fri Dec 20 10:16:39 2002 %%DocumentData: Binary %%DocumentNeededResources: (atend) %%DocumentSuppliedResources: (atend) %%DocumentMedia: A4 595 842 0 white () %%PageOrder: Ascend %%LanguageLevel: 2 %%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 /LoutStartEPSF { % prepare for EPSF inclusion userdict begin /PreEPSF_state save def /dict_stack countdictstack def /ops_count count 1 sub def /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 /LoutEPSFCleanUp { % clean up after EPSF inclusion count ops_count sub { pop } repeat countdictstack dict_stack sub { end } repeat PreEPSF_state restore end % userdict } bind def % Find current texture (may be null) % - LoutCurrentP p /LoutCurrentP { currentcolorspace 0 get /Pattern eq { [ currentcolor ] dup length 1 sub get } { null } ifelse } def % Find current color and color space % - LoutCurrentCCS c cs /LoutCurrentCCS { LoutCurrentP dup null eq { pop [ currentcolor ] currentcolorspace } { dup /UnderlyingColor get exch /UnderlyingColorSpace get } ifelse } def % Install c, cs, and (a copy of) p into graphics state % c cs p LoutSetCCSP - /LoutSetCCSP { dup null eq { pop setcolorspace aload pop setcolor } { % copy pattern dictionary 12 dict copy % record cs and c in p dup /UnderlyingColorSpace 3 index put dup /UnderlyingColor 4 index put % do setcolorspace and setcolor dup /PaintType get 1 eq { [ /Pattern ] setcolorspace setcolor pop pop } { [ /Pattern 4 -1 roll ] setcolorspace exch aload length 1 add -1 roll setcolor } ifelse } ifelse } def % num LoutSetGray - /LoutSetGray { [ 2 1 roll ] [ /DeviceGray ] LoutCurrentP LoutSetCCSP } def % r g b LoutSetRGBColor - /LoutSetRGBColor { [ 4 1 roll ] [ /DeviceRGB ] LoutCurrentP LoutSetCCSP } def % h s b LoutSetHSBColor - /LoutSetHSBColor { gsave sethsbcolor currentrgbcolor grestore LoutSetRGBColor } def % c m y k LoutSetRGBColor - /LoutSetCMYKColor { [ 5 1 roll ] [ /DeviceCMYK ] LoutCurrentP LoutSetCCSP } def % p LoutSetTexture - /LoutSetTexture { LoutCurrentCCS 3 -1 roll LoutSetCCSP } def % % LoutMakeTexture p /LoutMakeTexture { 12 dict begin /PaintProc exch def /YStep exch def /XStep exch def /BBox exch def /PaintType exch def /PatternType 1 def /TilingType 1 def currentdict end 7 1 roll matrix translate 5 1 roll matrix rotate 4 1 roll matrix scale exch dup matrix scale matrix concatmatrix matrix concatmatrix matrix concatmatrix /makepattern where { pop makepattern } { pop pop null } ifelse } def /LoutTextureSolid { null LoutSetTexture } def %%EndResource %%BeginResource: procset LoutTabPrependGraphic % @PrependGraphic file /home/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 /home/jeff/lout.lib/include/figf.lpg %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % PostScript @SysPrependGraphic file for @Fig Jeffrey H. Kingston % % Version 2.0 (includes CIRCUM label) January 1992 % % % % Although Fig is now obsolete I have updated it 20 October 2002 % % to work with textures, i.e. replacing setrgbcolor with % % LoutSetRGBColor. % % % % 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 LoutSetRGBColor fill } def /lfigblue { 0.0 0.0 1.0 LoutSetRGBColor fill } def /lfiglightblue { 0.5 0.5 1.0 LoutSetRGBColor fill } def /lfigdarkgreen { 0.0 0.5 0.0 LoutSetRGBColor fill } def /lfiggreen { 0.0 1.0 0.0 LoutSetRGBColor fill } def /lfiglightgreen { 0.5 1.0 0.5 LoutSetRGBColor fill } def /lfigdarkred { 0.5 0.0 0.0 LoutSetRGBColor fill } def /lfigred { 1.0 0.0 0.0 LoutSetRGBColor fill } def /lfiglightred { 1.0 0.5 0.5 LoutSetRGBColor fill } def /lfigdarkcyan { 0.0 0.5 0.5 LoutSetRGBColor fill } def /lfigcyan { 0.0 1.0 1.0 LoutSetRGBColor fill } def /lfiglightcyan { 0.5 1.0 1.0 LoutSetRGBColor fill } def /lfigdarkmagenta { 0.5 0.0 0.5 LoutSetRGBColor fill } def /lfigmagenta { 1.0 0.0 1.0 LoutSetRGBColor fill } def /lfiglightmagenta { 1.0 0.5 1.0 LoutSetRGBColor fill } def /lfigdarkyellow { 0.5 0.5 0.0 LoutSetRGBColor fill } def /lfigyellow { 1.0 1.0 0.0 LoutSetRGBColor fill } def /lfiglightyellow { 1.0 1.0 0.5 LoutSetRGBColor fill } def /lfigdarkgray { 0.2 0.2 0.2 LoutSetRGBColor fill } def /lfiggray { 0.5 0.5 0.5 LoutSetRGBColor fill } def /lfiglightgray { 0.8 0.8 0.8 LoutSetRGBColor fill } def /lfigdarkgrey { 0.2 0.2 0.2 LoutSetRGBColor fill } def /lfiggrey { 0.5 0.5 0.5 LoutSetRGBColor fill } def /lfiglightgrey { 0.8 0.8 0.8 LoutSetRGBColor fill } def /lfigblack { 0.0 0.0 0.0 LoutSetRGBColor fill } def /lfigwhite { 1.0 1.0 1.0 LoutSetRGBColor 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 /home/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 /pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse %%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 LoutSetRGBColor LoutTextureSolid 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 LoutSetRGBColor LoutTextureSolid 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 [ /Dest /LOUT18_651_s1_0_1 /DEST pdfmark 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 /fnt4 { /Symbol LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt3 vec2 /Times-Italic LoutRecode /fnt3 { /Times-Italicfnt3 LoutFont } def %%IncludeResource: font Helvetica /Helveticafnt5 vec2 /Helvetica LoutRecode /fnt5 { /Helveticafnt5 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave 0 0 translate 240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 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 [ /Dest /LOUT18_651_s2_0_1 /DEST pdfmark 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 [ /Dest /LOUTgenesis /DEST pdfmark 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 167 fnt4 586 8392(2)m 240 fnt3 480 8332(x)m 240 fnt4 737 8324(+)m 938(1)s gsave 480 8276 translate 240 fnt3 552 0 0 0 240 288 12 LoutGraphic gsave 0 0 moveto xsize 0 lineto 0.05 ft setlinewidth stroke grestore grestore 699 8048(4)m 240 fnt1 0 7537(is)m 210(produced)s 1159(by)s 1453(typing)s 220 fnt5 480 7039({ x sup 2 + 1 } o)m 3(v)k 5(er 4)k 240 fnt1 0 6543(in)m 261(the)s 627(input)s 1197(\207le;)s 220 fnt5 1632 6540(sup)m 240 fnt1 2056 6543(and)m 220 fnt5 2478 6540(o)m 3(v)k 5(er)k 240 fnt1 2975 6543(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 6255(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 5967(reference)m 943(to)s 1182(font)s 1627(changes)s 2449(and)s 2853(spacing)s 3637(suppressed.)s 480 5593(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 fnt3 5009 5595(e)m 4(xpr)k 8(ession)k 240 fnt1 6014 5593(\),)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 5305(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 5017(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 4729(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 4441(matting.)m 480 4067(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 fnt3 5743 4069(horizontal)m 6787(axis)s 240 fnt1 7167 4067(,)m 7274(used)s 7771(for)s 8110(alignment)s 0 3779(with)m 482(adjacent)s 1338(e)s 3(xpressions:)k 552 517 0 288 240 288 60 480 2922 LoutGr2 grestore save gsave 200 dict begin lfigdict begin grestore 552 517 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 552 517 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 167 fnt4 106 404(2)m 240 fnt3 0 344(x)m 240 fnt4 257 336(+)m 458(1)s gsave 0 288 translate 240 fnt3 552 0 0 0 240 288 12 LoutGraphic gsave 0 0 moveto xsize 0 lineto 0.05 ft setlinewidth stroke grestore grestore 219 60(4)m grestore grestore end end restore grestore 0 2471(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 2183(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 1895(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 1607(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 1319(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 945(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 657(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-Italicfnt3 vec2 /Times-Italic LoutRecode /fnt3 { /Times-Italicfnt3 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt2 vec2 /Times-Bold LoutRecode /fnt2 { /Times-Boldfnt2 LoutFont } def %%IncludeResource: font Symbol /fnt4 { /Symbol LoutFont } def %%IncludeResource: font Helvetica /Helveticafnt5 vec2 /Helvetica LoutRecode /fnt5 { /Helveticafnt5 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave 0 0 translate 240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 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 fnt3 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 fnt3 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 [ /Dest /LOUTlexical /DEST pdfmark 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 fnt4 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 fnt3 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 fnt5 1826 2371({)m 240 fnt3 1974 2376(object)m 220 fnt5 2646 2371(})m 240 fnt3 1826 2043(object)m 2498(object)s 240 fnt1 0 1248(where)m 240 fnt3 640 1250(in\207xop)m 240 fnt1 1285 1248(,)m 240 fnt3 1391 1250(pr)m 8(e\207xop)k 240 fnt1 2161 1248(,)m 240 fnt3 2267 1250(post\207xop)m 240 fnt1 3125 1248(,)m 3232(and)s 240 fnt3 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 fnt3 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 /Helveticafnt5 vec2 /Helvetica LoutRecode /fnt5 { /Helveticafnt5 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt3 vec2 /Times-Italic LoutRecode /fnt3 { /Times-Italicfnt3 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 LoutSetRGBColor LoutTextureSolid 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 fnt5 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 fnt3 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 fnt3 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 fnt5 8946 7437(+)m 240 fnt1 0 7152(and)m 220 fnt5 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 fnt5 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 fnt5 2390 5960(<=++)m 240 fnt1 2894 5963(,)m 220 fnt5 3032 5960(<=+)m 240 fnt1 3408 5963(,)m 220 fnt5 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 [ /Dest /LOUTobjects /DEST pdfmark 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 fnt5 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-Italicfnt3 vec2 /Times-Italic LoutRecode /fnt3 { /Times-Italicfnt3 LoutFont } def %%IncludeResource: font Helvetica /Helveticafnt5 vec2 /Helvetica LoutRecode /fnt5 { /Helveticafnt5 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 LoutSetRGBColor LoutTextureSolid 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 fnt3 266 13217(object)m 220 fnt5 974 13212(/)m 240 fnt3 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 fnt3 266 12929(object)m 220 fnt5 974 12924(//)m 240 fnt3 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 fnt3 266 12641(object)m 220 fnt5 974 12636(|)m 240 fnt3 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 fnt3 266 12353(object)m 220 fnt5 974 12348(||)m 240 fnt3 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 fnt3 266 12065(object)m 220 fnt5 974 12060(&)m 240 fnt3 1116 12065(gap)m 1589(object)s 240 fnt1 3816 12063(Horizontal)m 4893(concatenation)s 6278(within)s 6946(paragraphs)s 220 fnt5 266 11772(@OneCol)m 240 fnt3 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 fnt3 6992 11777(object)m 220 fnt5 266 11484(@OneRo)m 3(w)k 240 fnt3 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 fnt3 6637 11489(object)m 266 11201(font)m 220 fnt5 762 11196(@F)m 6(ont)k 240 fnt3 1534 11201(object)m 240 fnt1 3816 11199(Render)m 240 fnt3 4567 11201(object)m 240 fnt1 5215 11199(in)m 5458(nominated)s 6526(font)s 240 fnt3 266 10913(br)m 8(eakstyle)k 220 fnt5 1353 10908(@Break)m 240 fnt3 2269 10913(object)m 240 fnt1 3816 10911(Break)m 4448(paragraphs)s 5548(of)s 240 fnt3 5819 10913(object)m 240 fnt1 6467 10911(in)m 6710(nominated)s 7778(style)s 240 fnt3 266 10625(spacestyle)m 220 fnt5 1361 10620(@Space)m 240 fnt3 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 fnt3 266 10337(length)m 220 fnt5 979 10332(@Wide)m 240 fnt3 1813 10337(object)m 240 fnt1 3816 10335(Render)m 240 fnt3 4567 10337(object)m 240 fnt1 5215 10335(to)m 5454(width)s 240 fnt3 6056 10337(length)m 266 10049(length)m 220 fnt5 979 10044(@High)m 240 fnt3 1758 10049(object)m 240 fnt1 3816 10047(Render)m 240 fnt3 4567 10049(object)m 240 fnt1 5215 10047(to)m 5454(height)s 240 fnt3 6112 10049(length)m 220 fnt5 266 9756(@HExpand)m 240 fnt3 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 fnt5 266 9468(@VExpand)m 240 fnt3 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 fnt5 266 9180(@HScale)m 240 fnt3 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 fnt5 266 8892(@VScale)m 240 fnt3 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 fnt3 266 8609(angle)m 220 fnt5 911 8604(@Rotate)m 240 fnt3 1892 8609(object)m 240 fnt1 3816 8607(Rotate)m 240 fnt3 4496 8609(object)m 240 fnt1 5144 8607(by)m 240 fnt3 5438 8609(angle)m 266 8321(P)m 19(ostScript)k 220 fnt5 1367 8316(@Gr)m 2(aphic)k 240 fnt3 2471 8321(object)m 240 fnt1 3816 8319(Escape)m 4549(to)s 4788(graphics)s 5649(language)s 220 fnt5 266 8028(@Ne)m 6(xt)k 240 fnt3 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 fnt3 266 7745(object)m 220 fnt5 974 7740(@Case)m 240 fnt3 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 fnt3 266 7457(identi\207er)m 220 fnt5 1254 7452(&&)m 240 fnt3 1662 7457(object)m 240 fnt1 3816 7455(Cross)m 4412(reference)s 240 fnt3 266 7169(cr)m 10(oss-r)k 8(efer)k 8(ence)k 220 fnt5 1839 7164(@Open)m 240 fnt3 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 fnt3 266 6881(cr)m 10(oss-r)k 8(efer)k 8(ence)k 220 fnt5 1839 6876(@T)m 26(agged)k 240 fnt3 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 [ /Dest /LOUTprimitives /DEST pdfmark 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 fnt5 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 fnt5 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 fnt3 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 fnt5 3049 1571(0i)m 240 fnt1 3205 1574(.)m 240 fnt3 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 fnt5 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 fnt5 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 /Helveticafnt5 vec2 /Helvetica LoutRecode /fnt5 { /Helveticafnt5 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 LoutSetRGBColor LoutTextureSolid 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 fnt5 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 fnt5 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 fnt5 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 fnt5 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 fnt5 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 fnt5 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 fnt3 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 fnt5 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 fnt5 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 fnt5 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 fnt5 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 fnt5 5862 4887(r)m 240 fnt1 6012 4890(unit:)m 6568(one)s 220 fnt5 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 fnt5 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 fnt5 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 fnt3 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 fnt5 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 fnt5 3156 1215(^)m 240 fnt1 3322 1218(to)m 3561(the)s 3909(preceding)s 4905(concatenation)s 6290(operator:)s 220 fnt5 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 /Helveticafnt5 vec2 /Helvetica LoutRecode /fnt5 { /Helveticafnt5 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt3 vec2 /Times-Italic LoutRecode /fnt3 { /Times-Italicfnt3 LoutFont } def %%IncludeResource: font Symbol /fnt4 { /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 LoutSetRGBColor LoutTextureSolid 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 fnt5 1786 7444(|)m 240 fnt3 1843 7449(length)m 220 fnt5 2456 7444(e)m 240 fnt1 0 6238(Hyphenation)m 220 fnt5 1786 6235(|)m 240 fnt3 1843 6240(length)m 220 fnt5 2456 6235(h)m 240 fnt1 0 5029(Ov)m 3(erstrik)k 2(e)k 220 fnt5 1786 5026(|)m 240 fnt3 1843 5031(length)m 220 fnt5 2456 5026(o)m 240 fnt1 0 3820(Mark-to-mark)m 220 fnt5 1786 3817(|)m 240 fnt3 1843 3822(length)m 220 fnt5 2456 3817(x)m 240 fnt1 0 2611(K)m 6(erning)k 220 fnt5 1786 2608(|)m 240 fnt3 1843 2613(length)m 220 fnt5 2456 2608(k)m 240 fnt1 0 1402(T)m 19(ab)k 4(ulation)k 220 fnt5 1786 1399(|)m 240 fnt3 1843 1404(length)m 220 fnt5 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 7394 translate 180.0000 rotate gsave 0 0 translate 30.0000 rotate gsave 0 1 translate 180 fnt1 68 -1 0 -1 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 -1 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore grestore grestore gsave 1247 7394 translate 30.0000 rotate gsave 0 1 translate 180 fnt1 68 -1 0 -1 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore grestore gsave 1247 7394 translate 180 fnt1 1020 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore gsave 1247 7394 translate -30.0000 rotate gsave 0 0 translate 180 fnt1 68 -1 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore grestore 180 fnt3 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 6213 translate 180.0000 rotate gsave 0 0 translate 30.0000 rotate gsave 0 1 translate 180 fnt1 68 -1 0 -1 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 -1 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore grestore grestore gsave 1247 6213 translate 30.0000 rotate gsave 0 1 translate 180 fnt1 68 -1 0 -1 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore grestore gsave 1247 6213 translate 180 fnt1 1020 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore gsave 1247 6213 translate -30.0000 rotate gsave 0 0 translate 180 fnt1 68 -1 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 4975 translate 180.0000 rotate gsave 0 0 translate 30.0000 rotate gsave 0 1 translate 180 fnt1 68 -1 0 -1 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 -1 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore grestore grestore gsave 680 4975 translate 30.0000 rotate gsave 0 1 translate 180 fnt1 68 -1 0 -1 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore grestore gsave 680 4975 translate 180 fnt1 1871 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore gsave 680 4975 translate -30.0000 rotate gsave 0 0 translate 180 fnt1 68 -1 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 3738 translate 180.0000 rotate gsave 0 0 translate 30.0000 rotate gsave 0 1 translate 180 fnt1 68 -1 0 -1 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 -1 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore grestore grestore gsave 680 3738 translate 30.0000 rotate gsave 0 1 translate 180 fnt1 68 -1 0 -1 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore grestore gsave 680 3738 translate 180 fnt1 1871 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore gsave 680 3738 translate -30.0000 rotate gsave 0 0 translate 180 fnt1 68 -1 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore grestore 180 fnt1 941 3536(max)m 180 fnt4 1256 3531(\()m 180 fnt3 1319 3537(length)m 180 fnt4 1774 3531(,)m 180 fnt3 1854 3537(a)m 180 fnt4 1994 3531(+)m 180 fnt3 2145 3537(b)m 180 fnt4 2240 3531(\))m gsave 1247 4362 translate 180.0000 rotate gsave 0 0 translate 30.0000 rotate gsave 0 1 translate 180 fnt1 68 -1 0 -1 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 -1 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore grestore grestore gsave 680 4362 translate 30.0000 rotate gsave 0 1 translate 180 fnt1 68 -1 0 -1 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore grestore gsave 680 4362 translate 180 fnt1 567 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore gsave 680 4362 translate -30.0000 rotate gsave 0 0 translate 180 fnt1 68 -1 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore grestore 180 fnt3 920 4431(a)m gsave 2551 4362 translate 180.0000 rotate gsave 0 0 translate 30.0000 rotate gsave 0 1 translate 180 fnt1 68 -1 0 -1 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 -1 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore grestore grestore gsave 2268 4362 translate 30.0000 rotate gsave 0 1 translate 180 fnt1 68 -1 0 -1 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore grestore gsave 2268 4362 translate 180 fnt1 283 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore gsave 2268 4362 translate -30.0000 rotate gsave 0 0 translate 180 fnt1 68 -1 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 2442 translate 180.0000 rotate gsave 0 0 translate 30.0000 rotate gsave 0 1 translate 180 fnt1 68 -1 0 -1 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 -1 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore grestore grestore gsave 680 2442 translate 30.0000 rotate gsave 0 1 translate 180 fnt1 68 -1 0 -1 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore grestore gsave 680 2442 translate 180 fnt1 1871 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore gsave 680 2442 translate -30.0000 rotate gsave 0 0 translate 180 fnt1 68 -1 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore grestore 180 fnt1 999 2240(max)m 180 fnt4 1314 2235(\()m 180 fnt3 1377 2241(length)m 180 fnt4 1832 2235(,)m 180 fnt3 1912 2241(a)m 180 fnt4 2007 2235(,)m 180 fnt3 2087 2241(b)m 180 fnt4 2182 2235(\))m gsave 1247 3066 translate 180.0000 rotate gsave 0 0 translate 30.0000 rotate gsave 0 1 translate 180 fnt1 68 -1 0 -1 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 -1 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore grestore grestore gsave 680 3066 translate 30.0000 rotate gsave 0 1 translate 180 fnt1 68 -1 0 -1 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore grestore gsave 680 3066 translate 180 fnt1 567 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore gsave 680 3066 translate -30.0000 rotate gsave 0 0 translate 180 fnt1 68 -1 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore grestore 180 fnt3 920 3135(a)m gsave 2551 3066 translate 180.0000 rotate gsave 0 0 translate 30.0000 rotate gsave 0 1 translate 180 fnt1 68 -1 0 -1 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 -1 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore grestore grestore gsave 2268 3066 translate 30.0000 rotate gsave 0 1 translate 180 fnt1 68 -1 0 -1 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore grestore gsave 2268 3066 translate 180 fnt1 283 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore gsave 2268 3066 translate -30.0000 rotate gsave 0 0 translate 180 fnt1 68 -1 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 1233 translate 180.0000 rotate gsave 0 0 translate 30.0000 rotate gsave 0 1 translate 180 fnt1 68 -1 0 -1 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 -1 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore grestore grestore gsave 0 1233 translate 30.0000 rotate gsave 0 1 translate 180 fnt1 68 -1 0 -1 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore grestore gsave 0 1233 translate 180 fnt1 2268 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore gsave 0 1233 translate -30.0000 rotate gsave 0 0 translate 180 fnt1 68 -1 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 1 translate 180 fnt1 68 -1 0 -1 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 -1 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 1 translate 180 fnt1 68 -1 0 -1 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 -1 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore grestore 1189 522(curr)m 6(ent)k 1759(bound)s grestore end end restore grestore [ /Dest /LOUTgapmodes /DEST pdfmark 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 fnt3 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 fnt5 2874 4005(2p)m 240 fnt1 3197 4008(is)m 3433(tw)s 2(o)k 3870(points)s 4532(and)s 220 fnt5 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 fnt5 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 fnt5 1753 3343(/)m 240 fnt1 1895 3346(called)m 220 fnt5 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 fnt5 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 /Helveticafnt5 vec2 /Helvetica LoutRecode /fnt5 { /Helveticafnt5 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 %%IncludeResource: font Symbol /fnt4 { /Symbol LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave 0 0 translate 240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 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 fnt5 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 fnt5 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 fnt5 7841 12300(x // y)m 240 fnt1 8409 12303(can)m 8844(be)s 0 12015(replaced)m 867(by)s 220 fnt5 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 fnt5 1462 10725(x)m 240 fnt1 1629 10728(and)m 220 fnt5 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 fnt5 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 fnt5 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 fnt5 349 10149(y)m 240 fnt1 457 10152(,)m 575(so)s 852(the)s 220 fnt5 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 fnt5 2214 9861(//)m 240 fnt1 2339 9864(.)m 480 9490(Unfortunately)m 15(,)k 1915(if)s 220 fnt5 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 fnt5 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 fnt5 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 fnt5 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 fnt5 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 fnt5 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 fnt5 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 [ /Dest /LOUTobjects_impl /DEST pdfmark 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 fnt5 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 fnt3 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 fnt4 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 fnt4 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 fnt3 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 fnt4 56 105(0)m 192 fnt3 195 111(.)m 192 fnt4 270 105(5)m 192 fnt3 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 fnt3 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 fnt4 56 105(0)m 192 fnt3 195 111(.)m 192 fnt4 270 105(2)m 192 fnt3 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 fnt4 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 fnt3 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 fnt3 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 fnt3 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 fnt4 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 fnt3 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 fnt4 56 105(0)m 192 fnt3 195 111(.)m 192 fnt4 270 105(2)m 192 fnt3 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 fnt4 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 fnt3 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 fnt4 56 105(0)m 192 fnt3 195 111(.)m 192 fnt4 270 105(3)m 192 fnt3 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 fnt3 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 fnt4 3284 1886(\336)m gsave 3825 648 translate 240 fnt3 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 fnt4 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 fnt3 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 fnt4 56 105(0)m 192 fnt3 195 111(.)m 192 fnt4 270 105(2)m 192 fnt3 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 fnt3 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 fnt4 56 105(0)m 192 fnt3 195 111(.)m 192 fnt4 270 105(3)m 192 fnt3 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 fnt3 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-Italicfnt3 vec2 /Times-Italic LoutRecode /fnt3 { /Times-Italicfnt3 LoutFont } def %%IncludeResource: font Symbol /fnt4 { /Symbol LoutFont } def %%IncludeResource: font Helvetica /Helveticafnt5 vec2 /Helvetica LoutRecode /fnt5 { /Helveticafnt5 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave 0 0 translate 240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 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 fnt3 5090 11353(hgap)m 240 fnt4 5583 11345(\()m 240 fnt3 5675 11353(x)m 240 fnt4 5801 11345(,)m 240 fnt3 5932 11353(g)m 240 fnt4 6066 11345(,)m 240 fnt3 6197 11353(y)m 240 fnt4 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 fnt3 3561 11065(x)m 240 fnt1 3719 11063(and)m 240 fnt3 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 fnt3 7255 11065(g)m 240 fnt1 7369 11063(:)m 240 fnt3 7527 11065(right)m 240 fnt4 8000 11057(\()m 240 fnt3 8075 11065(x)m 240 fnt4 8185 11057(\))m 8298(+)s 240 fnt3 8473 11065(length)m 240 fnt4 0 10769(\()m 240 fnt3 89 10777(g)m 240 fnt4 221 10769(\))m 376(+)s 240 fnt3 594 10777(left)m 240 fnt4 920 10769(\()m 240 fnt3 1009 10777(y)m 240 fnt4 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 fnt3 6018 10777(length)m 240 fnt4 6629 10769(\()m 240 fnt3 6718 10777(g)m 240 fnt4 6850 10769(\))m 240 fnt1 6982 10775(and)m 240 fnt3 7391 10777(right)m 240 fnt4 7878 10769(\()m 240 fnt3 7968 10777(x)m 240 fnt4 8091 10769(\))m 8246(+)s 240 fnt3 8464 10777(left)m 240 fnt4 8790 10769(\()m 240 fnt3 8880 10777(y)m 240 fnt4 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 fnt3 480 9992(X)m 240 fnt4 720 9984(=)m 240 fnt3 933 9992(x)m 167 fnt4 1039 9900(1)m 240 fnt4 1248 9984(|)m 240 fnt3 1293 9992(g)m 167 fnt4 1404 9900(1)m 240 fnt4 1613 9984(\274)m 200 fnt3 1971 10000(^)m 240 fnt4 2067 9984(|)m 240 fnt3 2112 9992(g)m 167 fnt3 2223 9905(i)m 167 fnt4 2289 9900(-)m 2400(1)s 240 fnt3 2609 9992(x)m 167 fnt3 2715 9905(i)m 240 fnt4 2903 9984(\274)m 3261(|)s 240 fnt3 3306 9992(g)m 167 fnt3 3417 9905(n)m 167 fnt4 3518 9900(-)m 3629(1)s 240 fnt3 3838 9992(x)m 167 fnt3 3944 9905(n)m 240 fnt1 0 9449(we)m 335(may)s 801(calculate)s 1705(its)s 1981(size)s 2408(as)s 2658(follo)s 6(ws:)k 240 fnt3 740 8946(left)m 240 fnt4 1060 8938(\()m 240 fnt3 1144 8946(X)m 240 fnt4 1312 8938(\))m 1474(=)s 240 fnt3 1687 8946(left)m 240 fnt4 2007 8938(\()m 240 fnt3 2091 8946(x)m 167 fnt4 2197 8854(1)m 240 fnt4 2274 8938(\))m 2412(+)s 240 fnt3 2613 8946(hgap)m 240 fnt4 3098 8938(\()m 240 fnt3 3182 8946(x)m 167 fnt4 3288 8854(1)m 240 fnt4 3365 8938(,)m 240 fnt3 3472 8946(g)m 167 fnt4 3583 8854(1)m 240 fnt4 3660 8938(,)m 240 fnt3 3767 8946(x)m 167 fnt4 3873 8854(2)m 240 fnt4 3964 8938(\))m 4102(+)s 4303(\274)s 4589(+)s 240 fnt3 4790 8946(hgap)m 240 fnt4 5275 8938(\()m 240 fnt3 5359 8946(x)m 167 fnt3 5465 8859(i)m 167 fnt4 5531 8854(-)m 5642(1)s 240 fnt4 5719 8938(,)m 240 fnt3 5826 8946(g)m 167 fnt3 5937 8859(i)m 167 fnt4 6003 8854(-)m 6114(1)s 240 fnt4 6191 8938(,)m 240 fnt3 6298 8946(x)m 167 fnt3 6404 8859(i)m 240 fnt4 6460 8938(\))m 240 fnt3 579 8543(right)m 240 fnt4 1060 8535(\()m 240 fnt3 1144 8543(X)m 240 fnt4 1312 8535(\))m 1474(=)s 240 fnt3 1687 8543(hgap)m 240 fnt4 2172 8535(\()m 240 fnt3 2256 8543(x)m 167 fnt3 2362 8456(i)m 240 fnt4 2418 8535(,)m 240 fnt3 2525 8543(g)m 167 fnt3 2636 8456(i)m 240 fnt4 2692 8535(,)m 240 fnt3 2799 8543(x)m 167 fnt3 2905 8456(i)m 167 fnt4 2971 8451(+)m 3083(1)s 240 fnt4 3160 8535(\))m 3298(+)s 3499(\274)s 3785(+)s 240 fnt3 3986 8543(hgap)m 240 fnt4 4471 8535(\()m 240 fnt3 4555 8543(x)m 167 fnt3 4661 8456(n)m 167 fnt4 4762 8451(-)m 4873(1)s 240 fnt4 4950 8535(,)m 240 fnt3 5057 8543(g)m 167 fnt3 5168 8456(n)m 167 fnt4 5269 8451(-)m 5380(1)s 240 fnt4 5457 8535(,)m 240 fnt3 5564 8543(x)m 167 fnt3 5670 8456(n)m 240 fnt4 5761 8535(\))m 5899(+)s 240 fnt3 6100 8543(right)m 240 fnt4 6581 8535(\()m 240 fnt3 6665 8543(x)m 167 fnt3 6771 8456(n)m 240 fnt4 6862 8535(\))m 240 fnt3 485 8140(abo)m 2(ve)k 240 fnt4 1060 8132(\()m 240 fnt3 1144 8140(X)m 240 fnt4 1312 8132(\))m 1474(=)s 240 fnt3 1687 8140(abo)m 2(ve)k 240 fnt4 2262 8132(\()m 240 fnt3 2346 8140(x)m 167 fnt4 2452 8046(1)m 240 fnt4 2529 8132(\))m 2679(\255)s 2900(\274)s 3198(\255)s 240 fnt3 3419 8140(abo)m 2(ve)k 240 fnt4 3994 8132(\()m 240 fnt3 4078 8140(x)m 167 fnt3 4184 8051(n)m 240 fnt4 4275 8132(\))m 240 fnt3 480 7737(below)m 240 fnt4 1060 7729(\()m 240 fnt3 1144 7737(X)m 240 fnt4 1312 7729(\))m 1474(=)s 240 fnt3 1687 7737(below)m 240 fnt4 2267 7729(\()m 240 fnt3 2351 7737(x)m 167 fnt4 2457 7643(1)m 240 fnt4 2534 7729(\))m 2684(\255)s 2905(\274)s 3203(\255)s 240 fnt3 3424 7737(below)m 240 fnt4 4004 7729(\()m 240 fnt3 4088 7737(x)m 167 fnt3 4194 7648(n)m 240 fnt4 4285 7729(\))m 240 fnt1 0 7143(where)m 240 fnt4 693 7137(\255)m 240 fnt1 943 7143(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 6855(other)m 551(operators.)s 480 6481(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 fnt5 0 6190(0i)m 240 fnt1 156 6193(,)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 5905(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 fnt3 555 5402(width)m 240 fnt4 1094 5394(\()m 240 fnt3 1178 5402(x)m 167 fnt4 1284 5310(1)m 240 fnt4 1433 5394(|)m 1550(\274)s 1848(|)s 240 fnt3 1965 5402(x)m 167 fnt3 2071 5315(n)m 240 fnt4 2162 5394(\))m 2324(=)s 240 fnt3 2537 5402(width)m 240 fnt4 3076 5394(\()m 240 fnt3 3160 5402(x)m 167 fnt4 3266 5310(1)m 240 fnt4 3343 5394(\))m 3481(+)s 3682(\274)s 3968(+)s 240 fnt3 4169 5402(width)m 240 fnt4 4708 5394(\()m 240 fnt3 4792 5402(x)m 167 fnt3 4898 5315(n)m 240 fnt4 4989 5394(\))m 240 fnt3 480 4999(height)m 240 fnt4 1094 4991(\()m 240 fnt3 1178 4999(x)m 167 fnt4 1284 4907(1)m 240 fnt4 1433 4991(|)m 1550(\274)s 1848(|)s 240 fnt3 1965 4999(x)m 167 fnt3 2071 4912(n)m 240 fnt4 2162 4991(\))m 2324(=)s 240 fnt3 2537 4999(height)m 240 fnt4 3151 4991(\()m 240 fnt3 3235 4999(x)m 167 fnt4 3341 4907(1)m 240 fnt4 3418 4991(\))m 3568(\255)s 3789(\274)s 4087(\255)s 240 fnt3 4308 4999(height)m 240 fnt4 4922 4991(\()m 240 fnt3 5006 4999(x)m 167 fnt3 5112 4912(n)m 240 fnt4 5203 4991(\))m 240 fnt1 0 4456(The)m 428(corresponding)s 1850(formulas)s 2750(for)s 3088(v)s 3(ertical)k 3855(concatenation)s 5240(are)s 240 fnt3 555 3906(width)m 240 fnt4 1094 3898(\()m 240 fnt3 1178 3906(x)m 167 fnt4 1284 3814(1)m 240 fnt3 1433 3906(/)m 240 fnt4 1608 3898(\274)m 240 fnt3 1906 3906(/)m 2081(x)s 167 fnt3 2187 3819(n)m 240 fnt4 2278 3898(\))m 2440(=)s 240 fnt3 2653 3906(width)m 240 fnt4 3192 3898(\()m 240 fnt3 3276 3906(x)m 167 fnt4 3382 3814(1)m 240 fnt4 3459 3898(\))m 3609(\255)s 3830(\274)s 4128(\255)s 240 fnt3 4349 3906(width)m 240 fnt4 4888 3898(\()m 240 fnt3 4972 3906(x)m 167 fnt3 5078 3819(n)m 240 fnt4 5169 3898(\))m 240 fnt3 480 3503(height)m 240 fnt4 1094 3495(\()m 240 fnt3 1178 3503(x)m 167 fnt4 1284 3411(1)m 240 fnt3 1433 3503(/)m 240 fnt4 1608 3495(\274)m 240 fnt3 1906 3503(/)m 2081(x)s 167 fnt3 2187 3416(n)m 240 fnt4 2278 3495(\))m 2440(=)s 240 fnt3 2653 3503(height)m 240 fnt4 3267 3495(\()m 240 fnt3 3351 3503(x)m 167 fnt4 3457 3411(1)m 240 fnt4 3534 3495(\))m 3672(+)s 3873(\274)s 4159(+)s 240 fnt3 4360 3503(height)m 240 fnt4 4974 3495(\()m 240 fnt3 5058 3503(x)m 167 fnt3 5164 3416(n)m 240 fnt4 5255 3495(\))m 240 fnt1 0 2960(According)m 1063(to)s 1302(these)s 1849(formulas,)s 2805(the)s 3153(height)s 3811(of)s gsave 480 1266 translate 240 fnt3 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 fnt3 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 fnt4 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 fnt3 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 fnt4 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 fnt3 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 fnt4 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 fnt3 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 /fnt4 { /Symbol 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 LoutSetRGBColor LoutTextureSolid 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 fnt4 480 12745([)m 240 fnt3 563 12753(height)m 240 fnt4 1177 12745(\()m 240 fnt3 1261 12753(a)m 240 fnt4 1388 12745(\))m 1538(\255)s 240 fnt3 1759 12753(height)m 240 fnt4 2373 12745(\()m 240 fnt3 2457 12753(b)m 240 fnt4 2583 12745(\))m 2661(])s 2792(+)s 2993([)s 240 fnt3 3076 12753(height)m 240 fnt4 3690 12745(\()m 240 fnt3 3774 12753(c)m 240 fnt4 3888 12745(\))m 4038(\255)s 240 fnt3 4259 12753(height)m 240 fnt4 4873 12745(\()m 240 fnt3 4957 12753(d)m 240 fnt4 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 fnt4 480 11691([)m 240 fnt3 563 11699(width)m 240 fnt4 1102 11691(\()m 240 fnt3 1186 11699(a)m 240 fnt4 1313 11691(\))m 1451(+)s 240 fnt3 1652 11699(width)m 240 fnt4 2191 11691(\()m 240 fnt3 2275 11699(b)m 240 fnt4 2401 11691(\))m 2479(])s 2622(\255)s 2843([)s 240 fnt3 2926 11699(width)m 240 fnt4 3465 11691(\()m 240 fnt3 3549 11699(c)m 240 fnt4 3663 11691(\))m 3801(+)s 240 fnt3 4002 11699(width)m 240 fnt4 4541 11691(\()m 240 fnt3 4625 11699(d)m 240 fnt4 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 fnt3 7918 10909(a)m 240 fnt1 8113 10907(and)m 240 fnt3 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 fnt3 4814 10621(a)m 240 fnt1 4982 10619(and)m 240 fnt3 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 fnt3 715 9383(a)m 240 fnt1 896 9381(and)m 240 fnt3 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 fnt3 7028 9383(width)m 240 fnt4 7572 9375(\()m 240 fnt3 7662 9383(a)m 240 fnt4 7795 9375(\))m 7961(\255)s 240 fnt3 8199 9383(width)m 240 fnt4 8743 9375(\()m 240 fnt3 8833 9383(c)m 240 fnt4 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 fnt3 0 8807(COL)m 240 fnt1 466 8805(,)m 573(de\207ned)s 1336(by)s 240 fnt3 480 8255(width)m 240 fnt4 1019 8247(\()m 240 fnt3 1103 8255(x)m 167 fnt4 1209 8163(1)m 240 fnt3 1346 8255(COL)m 240 fnt4 1884 8247(\274)m 240 fnt3 2170 8255(COL)m 2708(x)s 167 fnt3 2814 8168(n)m 240 fnt4 2905 8247(\))m 3055(=)s 240 fnt3 3268 8255(width)m 240 fnt4 3807 8247(\()m 240 fnt3 3891 8255(x)m 167 fnt4 3997 8163(1)m 240 fnt4 4074 8247(\))m 4224(\255)s 4445(\274)s 4743(\255)s 240 fnt3 4964 8255(width)m 240 fnt4 5503 8247(\()m 240 fnt3 5587 8255(x)m 167 fnt3 5693 8168(n)m 240 fnt4 5784 8247(\))m 240 fnt1 0 7712(and)m 440(replace)s 1221(both)s 240 fnt3 1741 7714(a)m 240 fnt1 1952 7712(and)m 240 fnt3 2393 7714(c)m 240 fnt1 2591 7712(by)m 240 fnt3 2922 7714(a)m 3218(COL)s 3865(c)s 240 fnt1 3967 7712(.)m 4168(T)s 19(o)k 4504(pre)s 6(v)k 3(ent)k 240 fnt3 5309 7714(COL)m 240 fnt1 5871 7712(operators)m 6848(from)s 7408(disturbing)s 8468(height)s 0 7424(calculations,)m 1248(we)s 1583(de\207ne)s 2224(a)s 2390(binary)s 3055(operator)s 3911(called)s 240 fnt3 4539 7426(SPLIT)m 240 fnt1 5228 7424(by)m 240 fnt3 555 6921(width)m 240 fnt4 1094 6913(\()m 240 fnt3 1178 6921(x)m 1356(SPLIT)s 2057(y)s 240 fnt4 2171 6913(\))m 2333(=)s 240 fnt3 2546 6921(width)m 240 fnt4 3085 6913(\()m 240 fnt3 3169 6921(x)m 240 fnt4 3287 6913(\))m 240 fnt3 480 6518(height)m 240 fnt4 1094 6510(\()m 240 fnt3 1178 6518(x)m 1356(SPLIT)s 2057(y)s 240 fnt4 2171 6510(\))m 2333(=)s 240 fnt3 2546 6518(height)m 240 fnt4 3160 6510(\()m 240 fnt3 3244 6518(y)m 240 fnt4 3358 6510(\))m 240 fnt1 0 6014(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 4315 translate 240 fnt3 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 fnt3 123 128(a)m grestore (T) lfigpromotelabels grestore end end restore grestore 240 fnt4 1130 5553(\336)m gsave 1671 4315 translate 240 fnt3 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 fnt3 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 fnt3 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 fnt3 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 fnt3 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 fnt3 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 3815(widens)m 240 fnt3 740 3817(a)m 240 fnt1 926 3815(to)m 240 fnt3 1176 3817(width)m 240 fnt4 1726 3809(\()m 240 fnt3 1821 3817(a)m 240 fnt4 1959 3809(\))m 2142(\255)s 240 fnt3 2396 3817(width)m 240 fnt4 2946 3809(\()m 240 fnt3 3041 3817(c)m 240 fnt4 3166 3809(\))m 240 fnt1 3303 3815(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 3527(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 fnt3 8552 3529(R)m 9(O)k 12(W)k 240 fnt1 0 3239(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 1545 translate 240 fnt3 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 fnt3 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 fnt4 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 fnt3 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 fnt4 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 fnt3 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 fnt4 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 fnt3 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 1094(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-Italicfnt3 vec2 /Times-Italic LoutRecode /fnt3 { /Times-Italicfnt3 LoutFont } def %%IncludeResource: font Symbol /fnt4 { /Symbol LoutFont } def %%IncludeResource: font Helvetica /Helveticafnt5 vec2 /Helvetica LoutRecode /fnt5 { /Helveticafnt5 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave 0 0 translate 240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 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 fnt3 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 fnt4 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 fnt4 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 fnt3 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 fnt3 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 fnt3 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 fnt3 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 fnt3 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 fnt3 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 fnt3 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 fnt3 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 fnt3 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 fnt3 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 fnt3 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 fnt3 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 fnt3 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 fnt3 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 fnt4 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 fnt3 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 fnt3 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 fnt3 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 fnt3 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 fnt3 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 fnt3 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 fnt3 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 fnt3 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 fnt3 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 fnt3 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 fnt3 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 fnt3 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 fnt3 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 fnt3 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 fnt3 7274 10312(COL)m 240 fnt1 7790 10310(or)m 240 fnt3 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 fnt5 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 fnt3 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 fnt3 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 fnt3 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 fnt3 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 fnt3 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 fnt3 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 fnt3 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 fnt3 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 fnt3 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 fnt3 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 fnt3 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 fnt4 480 4915(\()m 564(\()s 240 fnt3 648 4923(width)m 240 fnt4 1187 4915(\()m 240 fnt3 1271 4923(a)m 240 fnt4 1398 4915(\))m 1548(\255)s 1769(\()s 240 fnt3 1853 4923(x)m 240 fnt4 2031 4915(+)m 240 fnt3 2232 4923(y)m 240 fnt4 2346 4915(\))m 2424(\))s 2562(+)s 240 fnt3 2763 4923(z)m 240 fnt4 2866 4915(\))m 3016(\255)s 3237(\()s 240 fnt3 3321 4923(x)m 240 fnt4 3499 4915(+)m 3700(\()s 3784(\()s 240 fnt3 3868 4923(y)m 240 fnt4 4042 4915(+)m 240 fnt3 4243 4923(z)m 240 fnt4 4346 4915(\))m 4496(\255)s 240 fnt3 4717 4923(width)m 240 fnt4 5256 4915(\()m 240 fnt3 5340 4923(j)m 240 fnt4 5418 4915(\))m 5496(\))s 5574(\))s 240 fnt1 0 4419(where)m 240 fnt3 480 3918(x)m 240 fnt4 670 3910(=)m 240 fnt3 883 3918(width)m 240 fnt4 1422 3910(\()m 240 fnt3 1506 3918(c)m 240 fnt4 1620 3910(\))m 1770(\255)s 240 fnt3 1991 3918(width)m 240 fnt4 2530 3910(\()m 240 fnt3 2662 3918(f)m 240 fnt4 2823 3910(\))m 2973(\255)s 240 fnt3 3194 3918(width)m 240 fnt4 3733 3910(\()m 240 fnt3 3817 3918(i)m 240 fnt4 3892 3910(\))m [ /Dest /LOUT12_1490_s2_4_1 /DEST pdfmark 240 fnt3 480 3367(y)m 240 fnt4 666 3359(=)m 240 fnt3 879 3367(width)m 240 fnt4 1418 3359(\()m 240 fnt3 1502 3367(d)m 240 fnt4 1688 3359(\))m 1838(\255)s 240 fnt3 2059 3367(width)m 240 fnt4 2598 3359(\()m 240 fnt3 2682 3367(g)m 240 fnt4 2808 3359(\))m [ /Dest /LOUT12_1490_s2_4_2 /DEST pdfmark 240 fnt3 480 2816(z)m 240 fnt4 655 2808(=)m 240 fnt3 868 2816(width)m 240 fnt4 1407 2808(\()m 240 fnt3 1491 2816(b)m 240 fnt4 1617 2808(\))m 1767(\255)s 240 fnt3 1988 2816(width)m 240 fnt4 2527 2808(\()m 240 fnt3 2611 2816(e)m 240 fnt4 2722 2808(\))m 2872(\255)s 240 fnt3 3093 2816(width)m 240 fnt4 3632 2808(\()m 240 fnt3 3716 2816(h)m 240 fnt4 3843 2808(\))m [ /Dest /LOUT12_1490_s2_4_3 /DEST pdfmark 240 fnt1 0 2312(It)m 224(seems)s 878(clear)s 1420(that)s 240 fnt3 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 fnt3 7449 1450(Constr)m 3(ained)k 240 fnt1 8722 1448(and)m 240 fnt3 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-Italicfnt3 vec2 /Times-Italic LoutRecode /fnt3 { /Times-Italicfnt3 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt2 vec2 /Times-Bold LoutRecode /fnt2 { /Times-Boldfnt2 LoutFont } def %%IncludeResource: font Helvetica /Helveticafnt5 vec2 /Helvetica LoutRecode /fnt5 { /Helveticafnt5 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave 0 0 translate 240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 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 fnt3 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 fnt3 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 fnt3 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 fnt3 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 fnt3 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 fnt3 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 fnt3 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 fnt3 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 fnt3 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 fnt3 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 fnt3 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 fnt3 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 fnt3 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 fnt3 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 fnt3 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 fnt3 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 fnt3 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 fnt3 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 fnt3 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 fnt3 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 fnt3 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 fnt3 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 fnt3 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 fnt3 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 [ /Dest /LOUTstyle /DEST pdfmark 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 fnt5 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 /Helveticafnt5 vec2 /Helvetica LoutRecode /fnt5 { /Helveticafnt5 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 LoutSetRGBColor LoutTextureSolid 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 fnt5 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 fnt3 480 8750(Hello,)m 1104(world)s 240 fnt1 0 8268(Lout)m 528(also)s 983(pro)s 3(vides)k 220 fnt5 1872 8265(@Break)m 240 fnt1 2745 8268(and)m 220 fnt5 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 fnt5 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 fnt5 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 fnt3 2724 1625(WIDE)m 240 fnt1 3375 1623(node,)m 3936(corresponding)s 5346(to)s 5573(a)s 220 fnt5 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 fnt5 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 /Helveticafnt5 vec2 /Helvetica LoutRecode /fnt5 { /Helveticafnt5 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt2 vec2 /Times-Bold LoutRecode /fnt2 { /Times-Boldfnt2 LoutFont } def %%IncludeResource: font Symbol /fnt4 { /Symbol LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave 0 0 translate 240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 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 fnt5 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 fnt5 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 fnt5 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 fnt5 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 [ /Dest /LOUT18_651_s3_0_1 /DEST pdfmark 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 [ /Dest /LOUToperators /DEST pdfmark 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 fnt5 480 4056(2 sup n)m 240 fnt1 0 3531(appears)m 781(as)s 167 fnt1 1145 3647(n)m 240 fnt4 1031 3525(2)m 240 fnt1 1226 3531(,)m 1333(the)s 1681(follo)s 6(wing)k 2658(operator)s 3514(de\207nition)s 4488(may)s 4954(be)s 5236(used:)s 220 fnt5 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 fnt5 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-Italicfnt3 vec2 /Times-Italic LoutRecode /fnt3 { /Times-Italicfnt3 LoutFont } def %%IncludeResource: font Helvetica /Helveticafnt5 vec2 /Helvetica LoutRecode /fnt5 { /Helveticafnt5 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 LoutSetRGBColor LoutTextureSolid 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 fnt3 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 fnt5 0 56(y)m grestore grestore end end restore grestore gsave 480 12634 translate 280 fnt3 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 fnt5 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 fnt5 4118 12180(@OneRo)m 3(w)k 240 fnt1 5268 12183(operator)m 9(,)k 6181(and)s 220 fnt5 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 fnt5 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 fnt5 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 fnt5 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 fnt5 586 11028(0)m 240 fnt1 765 11031(to)m 220 fnt5 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 fnt5 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 fnt3 2352 9133(Named)m 240 fnt1 3097 9131(parameters)m 4195(solv)s 3(e)k 4753(both)s 5236(problems:)s 220 fnt5 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 fnt5 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 fnt5 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 fnt5 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 [ /Dest /LOUTrecursion /DEST pdfmark 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 /Helveticafnt5 vec2 /Helvetica LoutRecode /fnt5 { /Helveticafnt5 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave 0 0 translate 240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 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 fnt5 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 fnt5 480 7493(def @Leaders { ..)m 13( @Leaders })k 240 fnt1 0 6999(Note)m 535(that)s 968(both)s 220 fnt5 1465 6996(..)m 240 fnt1 1643 6999(and)m 220 fnt5 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 fnt5 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 fnt5 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 fnt5 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 fnt5 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 fnt5 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 /Helveticafnt5 vec2 /Helvetica LoutRecode /fnt5 { /Helveticafnt5 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave 0 0 translate 240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 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 fnt5 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 fnt5 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 fnt5 170 2000(@T)m 16(e)k 4(xtPlace)k 170 173(@F)m 4(ootSect)k grestore 140 fnt5 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 fnt5 2422 7227(@F)m 6(ootSect)k 240 fnt1 3573 7230(lik)m 2(e)k 3985(this:)s 220 fnt5 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 fnt5 2292 2488(@F)m 6(ootSect)k 240 fnt1 3443 2491(produces)m gsave 480 2151 translate 220 fnt5 1440 0 0 0 220 288 61 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore 220 fnt5 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 /Helveticafnt5 vec2 /Helvetica LoutRecode /fnt5 { /Helveticafnt5 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 LoutSetRGBColor LoutTextureSolid 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 fnt5 5951 12588(@T)m 26(e)k 6(xtPlace)k 240 fnt1 7170 12591(and)m 220 fnt5 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 [ /Dest /LOUTmodules /DEST pdfmark 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 fnt5 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 fnt5 1679 8123(sup)m 240 fnt1 2025 8126(,)m 220 fnt5 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 fnt5 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 fnt5 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 fnt3 7032 7178(body)m 240 fnt1 7554 7176(parameter:)m 220 fnt5 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 fnt5 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 fnt5 1188 3601(@Eq)m 240 fnt1 1666 3604(;)m 1790(and)s 2206(the)s 220 fnt5 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 fnt5 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 /Helveticafnt5 vec2 /Helvetica LoutRecode /fnt5 { /Helveticafnt5 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave 0 0 translate 240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 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 fnt5 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 fnt5 579 10164(@Heading)m 240 fnt1 1732 10167(and)m 220 fnt5 2202 10164(@PP)m 240 fnt1 2833 10167(may)m 3365(in)s 9(v)k 4(ok)k 2(e)k 220 fnt5 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 fnt5 0 9876(@Heading)m 240 fnt1 1100 9879(and)m 220 fnt5 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 fnt5 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 fnt5 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 fnt5 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 fnt5 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 fnt5 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 fnt5 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 fnt5 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 fnt5 1606 2877(@Use)m 240 fnt1 2282 2880(and)m 220 fnt5 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 fnt5 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 fnt5 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 /Helveticafnt5 vec2 /Helvetica LoutRecode /fnt5 { /Helveticafnt5 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 LoutSetRGBColor LoutTextureSolid 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 fnt5 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 fnt5 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 fnt5 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 fnt5 2811 10894(@Eq)m 240 fnt1 3289 10897(,)m 3396(and)s 3800(replace)s 220 fnt5 480 10396(@Eq { object })m 240 fnt1 0 9899(by)m 220 fnt5 480 9398(@Eq @Open { @Body { object } })m 240 fnt1 0 8898(If)m 220 fnt5 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 fnt5 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 fnt5 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 fnt5 4613 6664(@Eq)m 240 fnt1 5172 6667(package)m 6033(itself,)s 6637(where)s 220 fnt5 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 fnt5 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 fnt5 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 fnt5 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 fnt5 7220 4805(@Eq)m 240 fnt1 7761 4808(visible)m 8458(within)s 0 4520(the)m 335(body)s 855(of)s 220 fnt5 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 fnt5 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 fnt5 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 [ /Dest /LOUTdefs_impl /DEST pdfmark 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 fnt3 3682 1380(PushScope)m 240 fnt1 4791 1378(and)m 240 fnt3 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 fnt5 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-Italicfnt3 vec2 /Times-Italic LoutRecode /fnt3 { /Times-Italicfnt3 LoutFont } def %%IncludeResource: font Helvetica /Helveticafnt5 vec2 /Helvetica LoutRecode /fnt5 { /Helveticafnt5 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 LoutSetRGBColor LoutTextureSolid 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 fnt3 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 fnt5 6763 8387(@Ne)m 6(xt)k 240 fnt3 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 fnt5 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 [ /Dest /LOUTfunctional /DEST pdfmark 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 fnt3 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 fnt3 0 1310(FONT)m 240 fnt1 630 1308(,)m 240 fnt3 737 1310(BREAK)m 240 fnt1 1494 1308(,)m 1601(and)s 240 fnt3 2005 1310(SP)m 21(A)k 7(CE)k 240 fnt1 2760 1308(nodes,)m 3426(and)s 3830(insert)s 240 fnt3 4420 1310(SPLIT)m 240 fnt1 5049 1308(,)m 240 fnt3 5156 1310(COL)m 240 fnt1 5622 1308(,)m 5729(and)s 240 fnt3 6133 1310(R)m 9(O)k 12(W)k 240 fnt1 6707 1308(nodes)m 7317(\(Section)s 8170(2.3\).)s 240 fnt3 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 fnt3 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-Italicfnt3 vec2 /Times-Italic LoutRecode /fnt3 { /Times-Italicfnt3 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt2 vec2 /Times-Bold LoutRecode /fnt2 { /Times-Boldfnt2 LoutFont } def %%IncludeResource: font Helvetica /Helveticafnt5 vec2 /Helvetica LoutRecode /fnt5 { /Helveticafnt5 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave 0 0 translate 240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 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 fnt3 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 fnt3 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 fnt3 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 [ /Dest /LOUT18_651_s5_0_1 /DEST pdfmark 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 [ /Dest /LOUTgalleys /DEST pdfmark 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 fnt5 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-Italicfnt3 vec2 /Times-Italic LoutRecode /fnt3 { /Times-Italicfnt3 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 LoutSetRGBColor LoutTextureSolid 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 fnt3 2163 10628(Constr)m 3(ained)k 240 fnt1 3410 10626(and)m 240 fnt3 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 [ /Dest /LOUTcomponents /DEST pdfmark 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 fnt3 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 fnt3 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-Italicfnt3 vec2 /Times-Italic LoutRecode /fnt3 { /Times-Italicfnt3 LoutFont } def %%IncludeResource: font Helvetica /Helveticafnt5 vec2 /Helvetica LoutRecode /fnt5 { /Helveticafnt5 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 LoutSetRGBColor LoutTextureSolid 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 fnt3 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 fnt5 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 fnt5 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 fnt5 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 fnt5 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 fnt5 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 fnt5 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 fnt5 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 fnt5 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 fnt5 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 fnt5 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 fnt5 6584 3936(preceding)m 240 fnt1 7606 3939(or)m 220 fnt5 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 fnt5 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 fnt5 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 [ /Dest /LOUTflushing /DEST pdfmark 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 fnt3 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 /Helveticafnt5 vec2 /Helvetica LoutRecode /fnt5 { /Helveticafnt5 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 LoutSetRGBColor LoutTextureSolid 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 fnt5 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 fnt3 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 fnt5 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 fnt5 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 fnt5 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 fnt5 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 fnt5 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 fnt5 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 fnt3 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 fnt3 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 fnt3 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 fnt5 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 fnt5 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 fnt3 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 fnt3 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 fnt5 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 fnt3 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 fnt3 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 fnt3 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 fnt3 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 fnt5 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-Italicfnt3 vec2 /Times-Italic LoutRecode /fnt3 { /Times-Italicfnt3 LoutFont } def %%IncludeResource: font Helvetica /Helveticafnt5 vec2 /Helvetica LoutRecode /fnt5 { /Helveticafnt5 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave 0 0 translate 240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 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 fnt3 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 fnt3 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 fnt3 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 fnt3 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 fnt3 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 fnt3 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 fnt3 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 fnt5 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 fnt5 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 fnt3 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 fnt3 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 fnt3 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 fnt3 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 fnt3 7351 5408(G)m 240 fnt1 7524 5406(.)m 0 4903(2.)m 284(If)s 514(no)s 240 fnt3 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 fnt3 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 fnt3 3316 4402(G)m 240 fnt1 3489 4400(.)m 3649(Preserv)s 3(e)k 240 fnt3 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 fnt3 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 fnt3 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 fnt3 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 fnt3 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 fnt3 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 fnt3 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 fnt3 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 fnt3 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 fnt3 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 fnt3 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 fnt3 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 fnt3 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-Italicfnt3 vec2 /Times-Italic LoutRecode /fnt3 { /Times-Italicfnt3 LoutFont } def %%IncludeResource: font Helvetica /Helveticafnt5 vec2 /Helvetica LoutRecode /fnt5 { /Helveticafnt5 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave 0 0 translate 240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 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 fnt3 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 fnt3 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 fnt3 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 fnt3 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 fnt3 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 fnt3 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 fnt5 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 fnt5 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 fnt3 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 fnt3 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 fnt5 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 fnt3 0 3(UN)m 5(A)k 7(TT)k 10(A)k 6(CHED)k grestore (C) lfigpromotelabels grestore 180 fnt5 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 fnt5 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 fnt5 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 fnt5 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 fnt3 524 2321(G)m 240 fnt1 762 2319(will)m 1193(\207nd)s 1629(the)s 220 fnt5 1982 2316(@GT)m 26(arget)k 240 fnt1 3045 2319(tar)m 4(get)k 3649(within)s 240 fnt3 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 fnt3 303 2033(G)m 240 fnt1 568 2031(is)m 811(then)s 1312(promoted)s 2320(via)s 240 fnt3 2704 2033(X)m 240 fnt1 2952 2031(into)m 3410(the)s 3790(\207rst)s 220 fnt5 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 fnt3 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 fnt5 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 fnt3 1074 795(PRECEDES)m 240 fnt1 2327 793(inde)m 3(x)k 2921(at)s 240 fnt3 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 fnt3 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 fnt3 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 fnt3 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-Italicfnt3 vec2 /Times-Italic LoutRecode /fnt3 { /Times-Italicfnt3 LoutFont } def %%IncludeResource: font Helvetica /Helveticafnt5 vec2 /Helvetica LoutRecode /fnt5 { /Helveticafnt5 LoutFont } def %%IncludeResource: font Symbol /fnt4 { /Symbol LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave 0 0 translate 240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 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 fnt3 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 fnt3 3697 12967(PRECEDES)m 240 fnt1 4939 12965(and)m 240 fnt3 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 fnt5 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 fnt5 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 fnt3 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 fnt5 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 fnt5 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 fnt5 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 fnt5 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 fnt5 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 fnt5 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 fnt5 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 fnt3 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 fnt5 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 fnt5 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 fnt5 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 fnt3 0 53(f)m 240 fnt4 113 45(\()m 240 fnt3 197 53(x)m 240 fnt4 315 45(\))m 477(=)s 240 fnt3 690 53(g)m 240 fnt4 816 45(\()m 240 fnt3 900 53(x)m 240 fnt4 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 fnt5 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 fnt5 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 fnt3 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 fnt5 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 fnt5 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 fnt3 666 917(f)m 240 fnt4 779 909(\()m 240 fnt3 863 917(x)m 240 fnt4 981 909(\))m 1143(=)s 240 fnt3 1356 917(g)m 240 fnt4 1482 909(\()m 240 fnt3 1566 917(x)m 240 fnt4 1684 909(\))m 1822(+)s 2023(2)s 240 fnt3 0 629(f)m 240 fnt4 113 621(\()m 240 fnt3 197 629(x)m 240 fnt4 315 621(\))m 453(-)s 240 fnt3 653 629(g)m 240 fnt4 779 621(\()m 240 fnt3 863 629(x)m 240 fnt4 981 621(\))m 1143(=)s 1356(2)s 220 fnt5 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 /Helveticafnt5 vec2 /Helvetica LoutRecode /fnt5 { /Helveticafnt5 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt3 vec2 /Times-Italic LoutRecode /fnt3 { /Times-Italicfnt3 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt2 vec2 /Times-Bold LoutRecode /fnt2 { /Times-Boldfnt2 LoutFont } def %%IncludeResource: font Symbol /fnt4 { /Symbol LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave 0 0 translate 240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 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 fnt5 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 fnt5 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 fnt5 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 fnt5 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 fnt3 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 fnt5 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 [ /Dest /LOUTconstraints /DEST pdfmark 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 fnt5 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 fnt5 2883 5110(a)m 240 fnt1 3062 5113(is)m 240 fnt4 3274 5107(1)m 240 fnt3 3382 5115(i)m 240 fnt4 3459 5107(,)m 3572(2)s 240 fnt3 3700 5115(i)m 240 fnt1 3825 5113(\()m 240 fnt4 3898 5107(1)m 240 fnt3 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 fnt4 6324 5107(2)m 240 fnt3 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 fnt5 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 fnt5 4507 4822(b)m 240 fnt1 4681 4825(be)m 240 fnt3 4963 4827(l)m 240 fnt4 5041 4819(,)m 240 fnt3 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 fnt4 480 4277(\()m 564(1)s 240 fnt3 670 4285(i)m 240 fnt4 817 4277(\255)m 240 fnt3 1038 4285(l)m 240 fnt4 1116 4277(\))m 1254(+)s 1455(\()s 1539(2)s 240 fnt3 1665 4285(i)m 240 fnt4 1812 4277(\255)m 240 fnt3 2033 4285(r)m 240 fnt4 2143 4277(\))m 2293(\243)s 2503(5)s 240 fnt3 2622 4285(i)m 240 fnt1 0 3732(with)m 482(the)s 240 fnt4 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 fnt4 480 3180(1)m 240 fnt3 586 3188(i)m 240 fnt4 721 3180(+)m 922(2)s 240 fnt3 1048 3188(i)m 240 fnt4 1207 3180(\243)m 1417(5)s 240 fnt3 1536 3188(i)m 583 2893(l)m 240 fnt4 721 2885(+)m 922(2)s 240 fnt3 1048 2893(i)m 240 fnt4 1207 2885(\243)m 1417(5)s 240 fnt3 1536 2893(i)m 240 fnt4 571 2597(1)m 240 fnt3 677 2605(i)m 240 fnt4 812 2597(+)m 240 fnt3 1013 2605(r)m 240 fnt4 1207 2597(\243)m 1417(5)s 240 fnt3 1536 2605(i)m 674 2310(l)m 240 fnt4 812 2302(+)m 240 fnt3 1013 2310(r)m 240 fnt4 1207 2302(\243)m 1417(5)s 240 fnt3 1536 2310(i)m 240 fnt1 0 1799(and)m 428(since)s 1000(we)s 1359(assume)s 2144(that)s 220 fnt5 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-Italicfnt3 vec2 /Times-Italic LoutRecode /fnt3 { /Times-Italicfnt3 LoutFont } def %%IncludeResource: font Symbol /fnt4 { /Symbol LoutFont } def %%IncludeResource: font Helvetica /Helveticafnt5 vec2 /Helvetica LoutRecode /fnt5 { /Helveticafnt5 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave 0 0 translate 240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 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 fnt3 851 13205(l)m 240 fnt4 1013 13197(\243)m 1223(3)s 240 fnt3 1340 13205(i)m 480 12910(l)m 240 fnt4 618 12902(+)m 240 fnt3 819 12910(r)m 240 fnt4 1013 12902(\243)m 1223(5)s 240 fnt3 1342 12910(i)m 819 12622(r)m 240 fnt4 1013 12614(\243)m 1223(4)s 240 fnt3 1348 12622(i)m 240 fnt1 0 12113(Object)m 220 fnt5 697 12110(b)m 240 fnt1 871 12113(may)m 1337(ha)s 4(v)k 3(e)k 1838(width)s 240 fnt3 2440 12115(l)m 240 fnt4 2518 12107(,)m 240 fnt3 2625 12115(r)m 240 fnt1 2783 12113(for)m 3121(an)s 3(y)k 240 fnt3 3518 12115(l)m 240 fnt1 3644 12113(and)m 240 fnt3 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 fnt5 480 11238(5i @High { a /2ix b })m 240 fnt1 0 10737(Assuming)m 1024(that)s 220 fnt5 1442 10734(a)m 240 fnt1 1619 10737(has)m 1989(height)s 240 fnt4 2647 10731(1)m 240 fnt3 2753 10739(i)m 240 fnt4 2828 10731(,)m 2935(1)s 240 fnt3 3041 10739(i)m 240 fnt1 3104 10737(,)m 3211(the)s 3559(height)s 240 fnt3 4217 10739(l)m 240 fnt4 4295 10731(,)m 240 fnt3 4402 10739(r)m 240 fnt1 4560 10737(of)m 220 fnt5 4831 10734(b)m 240 fnt1 5005 10737(must)m 5530(satisfy)s 240 fnt4 480 10179(1)m 240 fnt3 586 10187(i)m 240 fnt4 721 10179(+)m 922(\()s 1006(\()s 1090(1)s 240 fnt3 1196 10187(i)m 240 fnt4 1331 10179(+)m 240 fnt3 1532 10187(l)m 240 fnt4 1610 10179(\))m 1760(\255)s 1981(2)s 240 fnt3 2107 10187(i)m 240 fnt4 2182 10179(\))m 2320(+)s 240 fnt3 2521 10187(r)m 240 fnt4 2703 10179(\243)m 2913(5)s 240 fnt3 3032 10187(i)m 240 fnt1 0 9634(This)m 478(time)s 960(the)s 240 fnt4 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 fnt4 8474 9628(2)m 240 fnt3 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 fnt5 2207 9343(a)m 240 fnt1 2384 9346(and)m 220 fnt5 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 fnt3 851 8795(l)m 240 fnt4 1013 8787(\243)m 288 fnt4 1223 8775(\245)m 240 fnt3 480 8504(l)m 240 fnt4 618 8496(+)m 240 fnt3 819 8504(r)m 240 fnt4 1013 8496(\243)m 1223(3)s 240 fnt3 1340 8504(i)m 819 8216(r)m 240 fnt4 1013 8208(\243)m 1223(2)s 240 fnt3 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 fnt3 851 6870(l)m 240 fnt4 1013 6862(\243)m 240 fnt3 1223 6870(x)m 480 6579(l)m 240 fnt4 618 6571(+)m 240 fnt3 819 6579(r)m 240 fnt4 1013 6571(\243)m 240 fnt3 1223 6579(y)m 819 6264(r)m 240 fnt4 1013 6256(\243)m 240 fnt3 1223 6264(z)m 240 fnt1 0 5743(where)m 240 fnt3 641 5745(x)m 240 fnt1 747 5743(,)m 240 fnt3 855 5745(y)m 240 fnt1 1018 5743(and)m 240 fnt3 1423 5745(z)m 240 fnt1 1575 5743(may)m 2042(be)s 288 fnt4 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 fnt3 6579 5745(l)m 240 fnt4 6658 5737(,)m 240 fnt3 6768 5745(r)m 240 fnt4 6953 5737(\243)m 240 fnt3 7166 5745(x)m 240 fnt4 7285 5737(,)m 240 fnt3 7395 5745(y)m 240 fnt4 7510 5737(,)m 240 fnt3 7620 5745(z)m 240 fnt1 7711 5743(,)m 7819(and)s 8224(we)s 8560(call)s 240 fnt3 8960 5745(x)m 240 fnt4 0 5449(,)m 240 fnt3 107 5457(y)m 240 fnt4 221 5449(,)m 240 fnt3 328 5457(z)m 240 fnt1 479 5455(a)m 240 fnt3 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 fnt4 7291 5063(\245)m 240 fnt4 7514 5075(,)m 7659(5)s 240 fnt3 7791 5083(i)m 240 fnt4 7879 5075(,)m 288 fnt4 8025 5063(\245)m 240 fnt1 8296 5081(for)m 220 fnt5 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 fnt5 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 fnt3 480 3721(x)m 167 fnt4 586 3629(1)m 220 fnt5 771 3716(/)m 240 fnt3 955 3721(x)m 167 fnt4 1061 3629(2)m 220 fnt5 1260 3716(/)m 240 fnt3 1444 3721(.)m 1550(.)s 1656(.)s 220 fnt5 1810 3716(/)m 240 fnt3 1994 3721(x)m 167 fnt3 2100 3634(n)m 240 fnt1 0 3176(where)m 240 fnt3 640 3178(x)m 167 fnt3 746 3091(j)m 240 fnt1 852 3176(has)m 1222(width)s 240 fnt3 1824 3178(l)m 167 fnt3 1890 3091(j)m 240 fnt4 1948 3170(,)m 240 fnt3 2055 3178(r)m 167 fnt3 2127 3091(j)m 240 fnt1 2233 3176(for)m 2571(all)s 240 fnt3 2864 3178(j)m 240 fnt1 2930 3176(.)m 480 2802(Suppose)m 1345(the)s 1689(whole)s 2326(object)s 2966(has)s 3333(width)s 3931(constraint)s 240 fnt3 4929 2804(X)m 240 fnt4 5097 2796(,)m 240 fnt3 5204 2804(Y)m 240 fnt4 5367 2796(,)m 240 fnt3 5474 2804(Z)m 240 fnt1 5619 2802(,)m 5722(and)s 6123(we)s 6454(require)s 7182(the)s 7526(width)s 8124(constraint)s 0 2514(of)m 240 fnt3 271 2516(x)m 167 fnt3 377 2429(i)m 240 fnt1 421 2514(.)m 586(Let)s 240 fnt3 965 2516(L)m 240 fnt4 1185 2508(=)m 240 fnt1 1401 2514(max)m 167 fnt3 1808 2429(j)m 240 fnt3 1917 2516(l)m 167 fnt3 1983 2429(j)m 240 fnt1 2090 2514(and)m 240 fnt3 2495 2516(R)m 240 fnt4 2723 2508(=)m 240 fnt1 2939 2514(max)m 167 fnt3 3346 2429(j)m 240 fnt3 3455 2516(r)m 167 fnt3 3527 2429(j)m 240 fnt1 3573 2514(,)m 3681(so)s 3948(that)s 240 fnt3 4367 2516(L)m 240 fnt4 4512 2508(,)m 240 fnt3 4619 2516(R)m 240 fnt1 4821 2514(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 fnt3 0 2203(L)m 240 fnt4 145 2195(,)m 240 fnt3 252 2203(R)m 240 fnt4 477 2195(\243)m 240 fnt3 687 2203(X)m 240 fnt4 855 2195(,)m 240 fnt3 962 2203(Y)m 240 fnt4 1125 2195(,)m 240 fnt3 1232 2203(Z)m 240 fnt1 1377 2201(.)m 1541(Then)s 240 fnt3 2090 2203(x)m 167 fnt3 2196 2116(i)m 240 fnt1 2300 2201(can)m 2689(be)s 2971(enlar)s 4(ged)k 3848(to)s 4087(an)s 3(y)k 4484(size)s 240 fnt3 4911 2203(l)m 167 fnt3 4977 2116(i)m 240 fnt4 5081 2195(,)m 240 fnt3 5188 2203(r)m 167 fnt3 5260 2116(i)m 240 fnt1 5364 2201(satisfying)m 240 fnt4 480 1608(\()m 240 fnt3 564 1616(l)m 167 fnt3 630 1529(i)m 240 fnt4 758 1608(\255)m 240 fnt3 979 1616(L)m 240 fnt4 1124 1608(\))m 1202(,)s 1309(\()s 240 fnt3 1393 1616(r)m 167 fnt3 1465 1529(i)m 240 fnt4 1593 1608(\255)m 240 fnt3 1814 1616(R)m 240 fnt4 1967 1608(\))m 2117(\243)s 240 fnt3 2327 1616(X)m 240 fnt4 2495 1608(,)m 240 fnt3 2602 1616(Y)m 240 fnt4 2765 1608(,)m 240 fnt3 2872 1616(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-Italicfnt3 vec2 /Times-Italic LoutRecode /fnt3 { /Times-Italicfnt3 LoutFont } def %%IncludeResource: font Symbol /fnt4 { /Symbol LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt2 vec2 /Times-Bold LoutRecode /fnt2 { /Times-Boldfnt2 LoutFont } def %%IncludeResource: font Helvetica /Helveticafnt5 vec2 /Helvetica LoutRecode /fnt5 { /Helveticafnt5 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave 0 0 translate 240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 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 fnt3 917 12702(l)m 167 fnt3 983 12615(i)m 240 fnt4 1123 12694(\243)m 240 fnt3 1333 12702(X)m 894 12338(L)m 240 fnt4 1123 12330(\243)m 240 fnt3 1333 12338(X)m 528 12047(l)m 167 fnt3 594 11960(i)m 240 fnt4 710 12039(+)m 240 fnt3 911 12047(r)m 167 fnt3 983 11960(i)m 240 fnt4 1123 12039(\243)m 240 fnt3 1333 12047(Y)m 503 11675(l)m 167 fnt3 569 11588(i)m 240 fnt4 685 11667(+)m 240 fnt3 886 11675(R)m 240 fnt4 1123 11667(\243)m 240 fnt3 1333 11675(Y)m 505 11311(L)m 240 fnt4 710 11303(+)m 240 fnt3 911 11311(r)m 167 fnt3 983 11224(i)m 240 fnt4 1123 11303(\243)m 240 fnt3 1333 11311(Y)m 480 10947(L)m 240 fnt4 685 10939(+)m 240 fnt3 886 10947(R)m 240 fnt4 1123 10939(\243)m 240 fnt3 1333 10947(Y)m 911 10664(r)m 167 fnt3 983 10577(i)m 240 fnt4 1123 10656(\243)m 240 fnt3 1333 10664(Z)m 886 10300(R)m 240 fnt4 1123 10292(\243)m 240 fnt3 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 fnt3 869 9242(l)m 167 fnt3 935 9155(i)m 240 fnt4 1075 9234(\243)m 240 fnt3 1285 9242(X)m 869 8870(l)m 167 fnt3 935 8783(i)m 240 fnt4 1075 8862(\243)m 240 fnt3 1285 8870(Y)m 240 fnt4 1508 8862(-)m 240 fnt3 1708 8870(R)m 480 8498(l)m 167 fnt3 546 8411(i)m 240 fnt4 662 8490(+)m 240 fnt3 863 8498(r)m 167 fnt3 935 8411(i)m 240 fnt4 1075 8490(\243)m 240 fnt3 1285 8498(Y)m 863 8134(r)m 167 fnt3 935 8047(i)m 240 fnt4 1075 8126(\243)m 240 fnt3 1285 8134(Z)m 863 7770(r)m 167 fnt3 935 7683(i)m 240 fnt4 1075 7762(\243)m 240 fnt3 1285 7770(Y)m 240 fnt4 1508 7762(-)m 240 fnt3 1708 7770(L)m 240 fnt1 0 7182(Therefore)m 997(the)s 1345(width)s 1947(constraint)s 2949(of)s 240 fnt3 3220 7184(x)m 167 fnt3 3326 7097(i)m 240 fnt1 3430 7182(is)m 480 6644(min)m 240 fnt4 861 6638(\()m 240 fnt3 945 6646(X)m 240 fnt4 1113 6638(,)m 240 fnt3 1220 6646(Y)m 240 fnt4 1443 6638(-)m 240 fnt3 1643 6646(R)m 240 fnt4 1796 6638(\))m 1874(,)s 240 fnt3 1981 6646(Y)m 240 fnt4 2144 6638(,)m 240 fnt1 2251 6644(min)m 240 fnt4 2632 6638(\()m 240 fnt3 2716 6646(Z)m 240 fnt4 2873 6638(,)m 240 fnt3 2980 6646(Y)m 240 fnt4 3203 6638(-)m 240 fnt3 3403 6646(L)m 240 fnt4 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 fnt3 6962 6144(WIDE)m 240 fnt1 7641 6142(or)m 240 fnt3 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 fnt3 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 fnt3 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 [ /Dest /LOUTlookahead /DEST pdfmark 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 fnt5 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 fnt5 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 fnt5 7905 809(@BodyT)m 26(e)k 6(xt)k 240 fnt1 9019 812(,)m 0 524(and)m 220 fnt5 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 fnt5 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 /Helveticafnt5 vec2 /Helvetica LoutRecode /fnt5 { /Helveticafnt5 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 LoutSetRGBColor LoutTextureSolid 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 fnt5 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 fnt5 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 fnt5 6449 8640(@Chapter)m 240 fnt1 7550 8643(or)m 220 fnt5 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 fnt5 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 fnt5 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 fnt5 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 fnt3 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 fnt5 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 fnt5 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 fnt5 7230 4436(@F)m 6(ootNote)k 240 fnt1 8402 4439(g)m 1(alle)k 3(ys)k 0 4151(\(with)m 220 fnt5 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 fnt5 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 fnt5 4778 3198(@Chapter)m 240 fnt1 5781 3201(,)m 220 fnt5 5879 3198(@Section)m 240 fnt1 6819 3201(,)m 220 fnt5 6916 3198(@BodyT)m 26(e)k 6(xt)k 240 fnt1 8030 3201(\))m 8149(as)s 240 fnt3 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 fnt5 1871 2910(f)m 6(orce into)k 240 fnt1 2841 2913(instead)m 3596(of)s 220 fnt5 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 fnt5 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 fnt5 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 fnt5 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-Italicfnt3 vec2 /Times-Italic LoutRecode /fnt3 { /Times-Italicfnt3 LoutFont } def %%IncludeResource: font Helvetica /Helveticafnt5 vec2 /Helvetica LoutRecode /fnt5 { /Helveticafnt5 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave 0 0 translate 240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 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 [ /Dest /LOUThorizontal /DEST pdfmark 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 fnt3 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 fnt5 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 fnt5 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 fnt5 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 fnt5 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 fnt5 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 /Helveticafnt5 vec2 /Helvetica LoutRecode /fnt5 { /Helveticafnt5 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 LoutSetRGBColor LoutTextureSolid 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 fnt5 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 fnt5 7241 10983(@LineList)m 240 fnt1 8215 10986(:)m 220 fnt5 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 fnt3 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 fnt5 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 fnt5 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 fnt5 5262 1071(@T)m 26(e)k 6(xtPlace)k 240 fnt1 6487 1074(and)m 220 fnt5 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 /Helveticafnt5 vec2 /Helvetica LoutRecode /fnt5 { /Helveticafnt5 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 LoutSetRGBColor LoutTextureSolid 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 [ /Dest /LOUT18_651_s6_0_1 /DEST pdfmark 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 [ /Dest /LOUTcross /DEST pdfmark 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 fnt5 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 fnt5 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 fnt5 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 fnt5 480 4308(@Ref)m 6(erence&&kingston91)k 240 fnt1 0 3809(This)m 240 fnt3 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 fnt5 480 3069(@Ref)m 6(erence&&kingston91 @Open { @A)k 6(uthor)k 11(, @Title })k 240 fnt1 0 2570(The)m 220 fnt5 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 fnt5 0 1329(preceding)m 240 fnt1 1049 1332(and)m 220 fnt5 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 fnt5 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 fnt5 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 /Helveticafnt5 vec2 /Helvetica LoutRecode /fnt5 { /Helveticafnt5 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 LoutSetRGBColor LoutTextureSolid 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 fnt5 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 fnt5 0 12672(@Chapter&&intro)m 240 fnt1 1714 12675(,)m 1821(then)s 2290(from)s 2814(there)s 3347(to)s 220 fnt5 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 fnt5 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 fnt5 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 fnt5 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 fnt5 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 fnt5 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 fnt5 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 fnt5 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 fnt5 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 fnt5 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 fnt5 4555 5385(preceding)m 240 fnt1 5578 5388(and)m 220 fnt5 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 fnt5 5369 5097(@T)m 26(agged)k 240 fnt1 6358 5100(operator:)m 220 fnt5 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 fnt5 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 fnt5 2321 3809(@P)m 8(age)k 240 fnt1 3040 3812(,)m 3147(so)s 3413(that)s 220 fnt5 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 fnt5 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 [ /Dest /LOUTcross_impl /DEST pdfmark 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-Italicfnt3 vec2 /Times-Italic LoutRecode /fnt3 { /Times-Italicfnt3 LoutFont } def %%IncludeResource: font Helvetica /Helveticafnt5 vec2 /Helvetica LoutRecode /fnt5 { /Helveticafnt5 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave 0 0 translate 240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 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 fnt3 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 fnt3 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 fnt5 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 fnt5 1913 7387(preceding)m 240 fnt1 2918 7390(and)m 220 fnt5 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 fnt5 1297 3759(preceding)m 240 fnt1 2319 3762(or)m 220 fnt5 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 fnt3 474 3476(CR)m 9(OSS_PREC)k 240 fnt1 1973 3474(or)m 240 fnt3 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 fnt3 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 fnt5 8115 1743(preceding)m 240 fnt1 0 1458(and)m 220 fnt5 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 fnt5 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 fnt5 1923 505(@T)m 26(agged)k 240 fnt1 2903 508(operator)m 3751(we)s 4078(produce)s 4897(one)s 240 fnt3 5290 510(CR)m 9(OSS_PREC)k 240 fnt1 6775 508(or)m 240 fnt3 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 fnt5 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-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 LoutSetRGBColor LoutTextureSolid 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 [ /Dest /LOUT18_651_s7_0_1 /DEST pdfmark 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 fnt3 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-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 LoutSetRGBColor LoutTextureSolid 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 [ /Dest /LOUT12_1490_s7_0_1 /DEST pdfmark 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 [ /Dest /LOUT12_1490_s7_0_2 /DEST pdfmark 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 fnt3 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 fnt3 8084 10639(ftp)m 240 fnt1 8408 10637(to)m 8667(host)s 240 fnt3 480 10351(ftp.cs.su.oz.au)m 240 fnt1 1924 10349(with)m 2439(login)s 3021(name)s 240 fnt3 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 fnt3 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 [ /Dest /LOUT12_1490_s7_0_3 /DEST pdfmark 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 fnt3 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 [ /Dest /LOUT12_1490_s7_0_4 /DEST pdfmark 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 fnt3 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 [ /Dest /LOUT12_1490_s7_0_5 /DEST pdfmark 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 [ /Dest /LOUT12_1490_s7_0_6 /DEST pdfmark 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 fnt3 8206 7186(Pr)m 10(oceed)k 8999(-)s 480 6898(ings)m 935(of)s 1217(the)s 1564(7th)s 1926(Symposium)s 3075(on)s 3370(the)s 3717(Principles)s 4755(of)s 5038(Pr)s 10(o)k 2(gr)k 3(amming)k 6422(Langua)s 2(g)k 2(es)k 7527(\(POPL\),)s 8377(Las)s 8780(V)s 26(e)k 8999(-)s 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 [ /Dest /LOUT12_1490_s7_0_7 /DEST pdfmark 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 [ /Dest /LOUT12_1490_s7_0_8 /DEST pdfmark 0 5310(9.)m 480(Knuth,)s 1186(Donald)s 1949(E..)s 240 fnt3 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 [ /Dest /LOUT12_1490_s7_0_9 /DEST pdfmark 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 [ /Dest /LOUT12_1490_s7_0_10 /DEST pdfmark 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 [ /Dest /LOUT12_1490_s7_0_11 /DEST pdfmark 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 [ /Dest /LOUT12_1490_s7_0_12 /DEST pdfmark 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 fnt3 5908 2148(IEEE)m 6490(Computer)s 240 fnt1 7453 2146(,)m 7560(7\21119)s 8091(\(1991\))s 8718(.)s [ /Dest /LOUT12_1490_s7_0_13 /DEST pdfmark 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 Symbol %%+ font Helvetica %%DocumentSuppliedResources: procset LoutStartUp %%+ procset LoutTabPrependGraphic %%+ procset LoutFigPrependGraphic %%+ procset LoutBasicSetup %%+ encoding vec2 %%Pages: 40 %%EOF