%!PS-Adobe-3.0 %%Creator: Basser Lout Version 3.20 (April 2000) %%CreationDate: Sat Apr 8 14:53:13 2000 %%DocumentData: Binary %%DocumentNeededResources: (atend) %%DocumentSuppliedResources: (atend) %%DocumentMedia: A4 595 842 0 white () %%PageOrder: Ascend %%Pages: (atend) %%BoundingBox: 0 0 595 842 %%EndComments %%BeginProlog %%BeginResource: procset LoutStartUp /m { 3 1 roll moveto show } bind def /mo { 3 1 roll moveto true charpath stroke } bind def /s { exch currentpoint exch pop moveto show } bind def /so { exch currentpoint exch pop moveto true charpath stroke } bind def /k { exch neg 0 rmoveto show } bind def /ko { exch neg 0 rmoveto true charpath stroke } bind def /ul { gsave setlinewidth dup 3 1 roll moveto lineto stroke grestore } bind def /in { 1440 mul } def /cm { 567 mul } def /pt { 20 mul } def /em { 120 mul } def /sp { louts mul } def /vs { loutv mul } def /ft { loutf mul } def /dg { } def /LoutGraphic { /louts exch def /loutv exch def /loutf exch def /ymark exch def /xmark exch def /ysize exch def /xsize exch def } def /LoutGr2 { gsave translate LoutGraphic gsave } def /LoutFont { findfont exch scalefont setfont } bind def /LoutRecode { { findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding exch def currentdict end definefont pop } stopped pop } bind def /BeginEPSF { /LoutEPSFState save def /dict_count countdictstack def /op_count count 1 sub def userdict begin /showpage { } def 0 setgray 0 setlinecap 1 setlinewidth 0 setlinejoin 10 setmiterlimit [] 0 setdash newpath /languagelevel where { pop languagelevel 1 ne { false setstrokeadjust false setoverprint } if } if } bind def /EndEPSF { count op_count sub { pop } repeat countdictstack dict_count sub { end } repeat LoutEPSFState restore } bind def %%EndResource %%BeginResource: encoding vec2 /vec2 [ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright /parenleft /parenright /asterisk /plus /comma /hyphen /period /slash /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /.notdef /quotesinglbase /quotedblbase /ellipsis /OE /oe /quotedblleft /quotedblright /fi /fl /endash /emdash /bullet /dagger /daggerdbl /florin /fraction /dotlessi /grave /acute /circumflex /tilde /macron /breve /dotaccent /dieresis /.notdef /ring /cedilla /.notdef /hungarumlaut /ogonek /caron /space /exclamdown /cent /sterling /currency /yen /brokenbar /section /dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen /registered /macron /degree /plusminus /twosuperior /threesuperior /acute /mu /paragraph /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf /threequarters /questiondown /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla /Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis /Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /germandbls /agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis /eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /ydieresis ] def %%EndResource %%BeginResource: procset LoutTabPrependGraphic % @PrependGraphic file /export/home/6monthspace/jeff/lout.lib/include/tabf.lpg %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % PostScript @SysPrependGraphic file for @Tab % % % % To assist in avoiding name clashes, the names % % of all these symbols begin with "ltab". % % % % Jeffrey H. Kingston % % 24 September 1991 % % 22 December 1992 % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % linewidth ltabhs - % horizontal single line /ltabhs { 0 0 moveto xsize 0 lineto setlinewidth 0 setlinecap stroke } def % linewidth ltabhsp - % horizontal single line with projecting ends /ltabhsp { 0 0 moveto xsize 0 lineto setlinewidth 2 setlinecap stroke } def % linewidth ltabhd - % horizontal double line /ltabhd { dup dup 0 0 moveto xsize 0 lineto 0 exch 3 mul moveto xsize exch 3 mul lineto setlinewidth 0 setlinecap stroke } def % linewidth ltabhdb - % horizontal double line below mark /ltabhdb { dup dup 0 0 moveto xsize 0 lineto 0 exch -3 mul moveto xsize exch -3 mul lineto setlinewidth 0 setlinecap stroke } def % linewidth ltabhdnw - % horizontal double line with northwest corner /ltabhdnw { dup dup dup dup 0 0 moveto xsize 0 lineto xsize exch 3 mul moveto -3 mul exch 3 mul lineto -3 mul 0 lineto setlinewidth 0 setlinejoin 2 setlinecap stroke } def % linewidth ltabhdne - % horizontal double line with northeast corner /ltabhdne { dup dup dup dup 0 0 moveto xsize 0 lineto 0 exch 3 mul moveto 3 mul xsize add exch 3 mul lineto 3 mul xsize add 0 lineto setlinewidth 0 setlinejoin 2 setlinecap stroke } def % linewidth ltabhdsw - % horizontal double line with southwest corner /ltabhdsw { dup dup dup dup 0 0 moveto xsize 0 lineto xsize exch -3 mul moveto -3 mul exch -3 mul lineto -3 mul 0 lineto setlinewidth 0 setlinejoin 2 setlinecap stroke } def % linewidth ltabhdse - % horizontal double line with southeast corner /ltabhdse { dup dup dup dup 0 0 moveto xsize 0 lineto 0 exch -3 mul moveto 3 mul xsize add exch -3 mul lineto 3 mul xsize add 0 lineto setlinewidth 0 setlinejoin 2 setlinecap stroke } def % linewidth ltabvs - % vertical single line /ltabvs { 0 0 moveto 0 ysize lineto setlinewidth 0 setlinecap stroke } def % linewidth ltabvd - % vertical double line /ltabvd { dup dup 0 0 moveto 0 ysize lineto -3 mul 0 moveto -3 mul ysize lineto setlinewidth 0 setlinecap stroke } def % linewidth ltabvdr - % vertical double line to right of mark /ltabvdr { dup dup 0 0 moveto 0 ysize lineto 3 mul 0 moveto 3 mul ysize lineto setlinewidth 0 setlinecap stroke } def %%EndResource %%BeginResource: procset LoutFigPrependGraphic % @PrependGraphic file /export/home/6monthspace/jeff/lout.lib/include/figf.lpg %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % PostScript @SysPrependGraphic file for @Fig Jeffrey H. Kingston % % Version 2.0 (includes CIRCUM label) January 1992 % % % % To assist in avoiding name clashes, the names of all symbols % % defined here begin with "lfig". However, this is not feasible % % with user-defined labels and some labels used by users. % % % % is two numbers, a point. % % is one number, a length % % is one number, an angle in degrees % % is one number, the preferred length of a dash % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% errordict begin /handleerror { { /Times-Roman findfont 8 pt scalefont setfont 0 setgray 4 pt 4 pt moveto $error /errorname get dup lfigdict exch known { lfigdict exch get } { 30 string cvs } ifelse show ( Command: ) show $error /command get 30 string cvs show } stopped {} if showpage stop } def end % concat strings: lfigconcat % must be defined outside lfigdict since used in lfigpromotelabels /lfigconcat { 2 copy length exch length add string dup 0 4 index putinterval dup 3 index length 3 index putinterval 3 1 roll pop pop } def % lfigdebugprint - % must be defined outside lfigdict since used in arbitrary places % /lfigdebugprint % { print % (; operand stack:\n) print % count copy % count 2 idiv % { == % (\n) print % } repeat % (\n) print % } def /lfigdict 120 dict def lfigdict begin % error messages /dictfull (dictfull error: too many labels?) def /dictstackoverflow (dictstackoverflow error: labels nested too deeply?) def /execstackoverflow (execstackoverflow error: figure nested too deeply?) def /limitcheck (limitcheck error: figure nested too deeply or too large?) def /syntaxerror (syntaxerror error: syntax error in text of figure?) def /typecheck (typecheck error: syntax error in text of figure?) def /undefined (undefined error: unknown or misspelt label?) def /VMError (VMError error: run out of memory?) def % push pi onto stack: - lfigpi /lfigpi 3.14159 def % arc directions /clockwise false def /anticlockwise true def % maximum of two numbers: lfigmax /lfigmax { 2 copy gt { pop } { exch pop } ifelse } def % minimum of two numbers: lfigmin /lfigmin { 2 copy lt { pop } { exch pop } ifelse } def % add two points: lfigpadd /lfigpadd { exch 3 1 roll add 3 1 roll add exch } def % subtract first point from second: lfigpsub /lfigpsub { 3 2 roll sub 3 1 roll exch sub exch } def % max two points: lfigpmax /lfigpmax { exch 3 1 roll lfigmax 3 1 roll lfigmax exch } def % min two points: lfigpmin /lfigpmin { exch 3 1 roll lfigmin 3 1 roll lfigmin exch } def % scalar multiplication: lfigpmul /lfigpmul { dup 3 1 roll mul 3 1 roll mul exch } def % point at angle and distance: lfigatangle /lfigatangle { 2 copy cos mul 3 1 roll sin mul lfigpadd } def % angle from one point to another: lfigangle /lfigangle { lfigpsub 2 copy 0 eq exch 0 eq and {pop} {exch atan} ifelse } def % distance between two points: lfigdistance /lfigdistance { lfigpsub dup mul exch dup mul add sqrt } def % difference in x coords: lfigxdistance /lfigxdistance { pop 3 1 roll pop sub } def %difference in y coords: lfigydistance /lfigydistance { 3 1 roll pop sub exch pop } def % stroke a solid line: lfigsolid - /lfigsolid { pop pop [] 0 setdash stroke } def % stroke a lfigdashed line: lfigdashed - /lfigdashed { 2 copy div 2 le 1 index 0 le or { exch pop 1 pt lfigmax [ exch dup ] 0 setdash } { dup [ exch 4 2 roll 2 copy div 1 sub 2 div ceiling dup 4 1 roll 1 add mul sub exch div ] 0 setdash } ifelse stroke } def % stroke a lfigcdashed line: lfigcdashed - /lfigcdashed { 2 copy le 1 index 0 le or { exch pop 1 pt lfigmax [ exch dup ] dup 0 get 2 div setdash } { dup [ 4 2 roll exch 2 copy exch div 2 div ceiling div 1 index sub ] exch 2 div setdash } ifelse stroke } def % stroke a dotted line: lfigdotted - /lfigdotted { 2 copy le 1 index 0 le or { exch pop 1 pt lfigmax [ exch 0 exch ] 0 setdash } { 1 index exch div ceiling div [ 0 3 2 roll ] 0 setdash } ifelse stroke } def % stroke a noline line: lfignoline - /lfignoline { pop pop } def % painting (i.e. filling): - lfigwhite - (etc.) /lfignopaint { } def /lfignochange { fill } def /lfigdarkblue { 0.0 0.0 0.5 setrgbcolor fill } def /lfigblue { 0.0 0.0 1.0 setrgbcolor fill } def /lfiglightblue { 0.5 0.5 1.0 setrgbcolor fill } def /lfigdarkgreen { 0.0 0.5 0.0 setrgbcolor fill } def /lfiggreen { 0.0 1.0 0.0 setrgbcolor fill } def /lfiglightgreen { 0.5 1.0 0.5 setrgbcolor fill } def /lfigdarkred { 0.5 0.0 0.0 setrgbcolor fill } def /lfigred { 1.0 0.0 0.0 setrgbcolor fill } def /lfiglightred { 1.0 0.5 0.5 setrgbcolor fill } def /lfigdarkcyan { 0.0 0.5 0.5 setrgbcolor fill } def /lfigcyan { 0.0 1.0 1.0 setrgbcolor fill } def /lfiglightcyan { 0.5 1.0 1.0 setrgbcolor fill } def /lfigdarkmagenta { 0.5 0.0 0.5 setrgbcolor fill } def /lfigmagenta { 1.0 0.0 1.0 setrgbcolor fill } def /lfiglightmagenta { 1.0 0.5 1.0 setrgbcolor fill } def /lfigdarkyellow { 0.5 0.5 0.0 setrgbcolor fill } def /lfigyellow { 1.0 1.0 0.0 setrgbcolor fill } def /lfiglightyellow { 1.0 1.0 0.5 setrgbcolor fill } def /lfigdarkgray { 0.2 0.2 0.2 setrgbcolor fill } def /lfiggray { 0.5 0.5 0.5 setrgbcolor fill } def /lfiglightgray { 0.8 0.8 0.8 setrgbcolor fill } def /lfigdarkgrey { 0.2 0.2 0.2 setrgbcolor fill } def /lfiggrey { 0.5 0.5 0.5 setrgbcolor fill } def /lfiglightgrey { 0.8 0.8 0.8 setrgbcolor fill } def /lfigblack { 0.0 0.0 0.0 setrgbcolor fill } def /lfigwhite { 1.0 1.0 1.0 setrgbcolor fill } def % line caps (and joins, not currently used) /lfigbutt 0 def /lfiground 1 def /lfigprojecting 2 def /lfigmiter 0 def /lfigbevel 2 def % shape and labels of the @Box symbol /lfigbox { 0 0 /SW lfigpointdef xsize 0 /SE lfigpointdef xsize ysize /NE lfigpointdef 0 ysize /NW lfigpointdef SE 0.5 lfigpmul /S lfigpointdef NW 0.5 lfigpmul /W lfigpointdef W SE lfigpadd /E lfigpointdef S NW lfigpadd /N lfigpointdef NE 0.5 lfigpmul /CTR lfigpointdef [ CTR NE lfigpsub /lfigboxcircum cvx ] lfigcircumdef SW SE NE NW SW } def % shape and labels of the @CurveBox symbol /lfigcurvebox { xsize 0.5 mul ysize 0.5 mul /CTR lfigpointdef xsize 0.5 mul 0 /S lfigpointdef xsize ysize 0.5 mul /E lfigpointdef xsize 0.5 mul ysize /N lfigpointdef 0 ysize 0.5 mul /W lfigpointdef xmark 0.293 mul xmark 0.293 mul /SW lfigpointdef xsize xmark 0.293 mul sub xmark 0.293 mul /SE lfigpointdef xsize xmark 0.293 mul sub ysize xmark 0.293 mul sub /NE lfigpointdef xmark 0.293 mul ysize xmark 0.293 mul sub /NW lfigpointdef [ xsize ysize 0.5 lfigpmul xmark /lfigcurveboxcircum cvx ] lfigcircumdef xmark 0 xsize xmark sub 0 [ xsize xmark sub xmark ] xsize xmark xsize ysize xmark sub [ xsize xmark sub ysize xmark sub ] xsize xmark sub ysize xmark ysize [ xmark ysize xmark sub ] 0 ysize xmark sub 0 xmark [ xmark xmark ] xmark 0 } def % shadow of the @ShadowBox symbol % its shape and labels are done, somewhat inaccurately, with lfigbox /lfigshadow { xmark 2 mul 0 moveto xsize 0 lineto xsize ysize xmark 2 mul sub lineto xsize xmark sub ysize xmark 2 mul sub lineto xsize xmark sub xmark lineto xmark 2 mul xmark lineto closepath fill } def % shape and labels of the @Square symbol /lfigsquare { xsize ysize 0.5 lfigpmul /CTR lfigpointdef CTR xsize xsize ysize ysize lfigpmax 0.5 lfigpmul lfigpadd /NE lfigpointdef CTR 0 0 CTR NE lfigdistance 135 lfigatangle lfigpadd /NW lfigpointdef CTR 0 0 CTR NE lfigdistance 225 lfigatangle lfigpadd /SW lfigpointdef CTR 0 0 CTR NE lfigdistance 315 lfigatangle lfigpadd /SE lfigpointdef SW 0.5 lfigpmul SE 0.5 lfigpmul lfigpadd /S lfigpointdef NW 0.5 lfigpmul NE 0.5 lfigpmul lfigpadd /N lfigpointdef SW 0.5 lfigpmul NW 0.5 lfigpmul lfigpadd /W lfigpointdef SE 0.5 lfigpmul NE 0.5 lfigpmul lfigpadd /E lfigpointdef [ CTR NE lfigpsub /lfigboxcircum cvx ] lfigcircumdef SW SE NE NW SW } def % shape and labels of the @Diamond symbol /lfigdiamond { xsize 0 0.5 lfigpmul /S lfigpointdef 0 ysize 0.5 lfigpmul /W lfigpointdef S W lfigpadd /CTR lfigpointdef CTR W lfigpadd /N lfigpointdef CTR S lfigpadd /E lfigpointdef [ xsize ysize 0.5 lfigpmul /lfigdiamondcircum cvx ] lfigcircumdef S E N W S } def % shape and labels of the @Ellipse symbol /lfigellipse { xsize 0 0.5 lfigpmul /S lfigpointdef 0 ysize 0.5 lfigpmul /W lfigpointdef S W lfigpadd /CTR lfigpointdef CTR W lfigpadd /N lfigpointdef CTR S lfigpadd /E lfigpointdef CTR xsize 0 0.3536 lfigpmul lfigpadd 0 ysize 0.3536 lfigpmul lfigpadd /NE lfigpointdef 0 ysize 0.3536 lfigpmul CTR xsize 0 0.3536 lfigpmul lfigpadd lfigpsub /SE lfigpointdef xsize 0 0.3536 lfigpmul CTR lfigpsub 0 ysize 0.3536 lfigpmul lfigpadd /NW lfigpointdef 0 ysize 0.3536 lfigpmul xsize 0 0.3536 lfigpmul CTR lfigpsub lfigpsub /SW lfigpointdef [ xsize ysize 0.5 lfigpmul /lfigellipsecircum cvx ] lfigcircumdef S [ CTR ] E [ CTR ] N [ CTR ] W [ CTR ] S } def % shape and labels of the @Circle symbol /lfigcircle { xsize ysize 0.5 lfigpmul /CTR lfigpointdef CTR xsize 0 ysize 0 lfigpmax 0.5 lfigpmul lfigpadd /E lfigpointdef CTR 0 0 CTR E lfigdistance 45 lfigatangle lfigpadd /NE lfigpointdef CTR 0 0 CTR E lfigdistance 90 lfigatangle lfigpadd /N lfigpointdef CTR 0 0 CTR E lfigdistance 135 lfigatangle lfigpadd /NW lfigpointdef CTR 0 0 CTR E lfigdistance 180 lfigatangle lfigpadd /W lfigpointdef CTR 0 0 CTR E lfigdistance 225 lfigatangle lfigpadd /SW lfigpointdef CTR 0 0 CTR E lfigdistance 270 lfigatangle lfigpadd /S lfigpointdef CTR 0 0 CTR E lfigdistance 315 lfigatangle lfigpadd /SE lfigpointdef [ S E lfigpsub /lfigellipsecircum cvx ] lfigcircumdef S [ CTR ] E [ CTR ] N [ CTR ] W [ CTR ] S } def % shape and labels of the @HLine and @HArrow symbols /lfighline { 0 ymark lfigprevious /FROM lfigpointdef xsize ymark lfigprevious /TO lfigpointdef } def % shape and labels of the @VLine and @VArrow symbols /lfigvline { xmark ysize lfigprevious /FROM lfigpointdef xmark 0 lfigprevious /TO lfigpointdef } def % points of a polygon around base with given no of sides, vert init angle: % figpolygon ... /lfigpolygon { xsize ysize 0.5 lfigpmul /CTR lfigpointdef 90 sub CTR 2 copy lfigmax 5 3 roll [ 4 copy pop /lfigpolycircum cvx ] lfigcircumdef exch dup 360 exch div exch 1 1 3 2 roll { 4 string cvs (P) exch lfigconcat cvn 6 copy pop pop lfigatangle 2 copy 10 2 roll 3 2 roll lfigpointdef dup 3 1 roll add exch } for pop lfigatangle } def % next array element: lfiggetnext true % or false /lfiggetnext { 2 copy exch length ge { false } { 2 copy get exch 1 add exch true } ifelse } def % check whether thing is number: lfigisnumbertype /lfigisnumbertype { dup type dup /integertype eq exch /realtype eq or } def % check whether thing is an array: lfigisarraytype /lfigisarraytype { dup type /arraytype eq } def % get next item: lfiggetnextitem 0 % or 1 % or 2 /lfiggetnextitem { lfiggetnext { lfigisarraytype { 1 } { lfigisnumbertype { 3 1 roll lfiggetnext { lfigisnumbertype { 4 3 roll exch 2 } { pop 3 2 roll pop 0 } ifelse } { 3 2 roll pop 0 } ifelse } { pop 0 } ifelse } ifelse } { 0 } ifelse } def % set arc path: bool x1 y1 x2 y2 x0 y0 lfigsetarc % the path goes from x1 y1 to x2 y2 about centre x0 y0, % anticlockwise if bool is true else clockwise. % The orientations of backwards pointing and forwards pointing % arrowheads are returned in the two angles, and % the length of the arc is returned in . /lfigsetarc { 20 dict begin matrix currentmatrix 8 1 roll 2 copy translate 2 copy 8 2 roll 4 2 roll lfigpsub 6 2 roll lfigpsub dup /y1 exch def dup mul /y1s exch def dup /x1 exch def dup mul /x1s exch def dup /y2 exch def dup mul /y2s exch def dup /x2 exch def dup mul /x2s exch def y1s y2s eq { -1 } { y1s x2s mul y2s x1s mul sub y1s y2s sub div } ifelse /da exch def x1s x2s eq { -1 } { x1s y2s mul x2s y1s mul sub x1s x2s sub div } ifelse /db exch def da 0 gt db 0 gt and { /LMax da sqrt db sqrt lfigmax def /scalex da sqrt LMax div def /scaley db sqrt LMax div def scalex scaley scale 0 0 LMax 0 0 x1 scalex mul y1 scaley mul lfigangle 0 0 x2 scalex mul y2 scaley mul lfigangle 2 copy eq { 360 add } if 2 copy 8 2 roll 5 index { arc } { arcn } ifelse 2 index 1 index { 90 sub } { 90 add } ifelse dup sin scaley mul exch cos scalex mul atan 2 index 2 index { 90 add } { 90 sub } ifelse dup sin scaley mul exch cos scalex mul atan 5 2 roll % res1 res2 ang1 ang2 anticlockwise { exch sub } { sub } ifelse dup 0 le { 360 add } if lfigpi mul LMax mul 180 div } { 0 0 x1 y1 lfigdistance 0 0 x2 y2 lfigdistance eq 0 0 x1 y1 lfigdistance 0 gt and { 0 0 0 0 x1 y1 lfigdistance 0 0 x1 y1 lfigangle 0 0 x2 y2 lfigangle 2 copy eq { 360 add } if 2 copy 8 2 roll 5 index { arc } { arcn } ifelse 2 index 1 index { 90 sub } { 90 add } ifelse 2 index 2 index { 90 add } { 90 sub } ifelse 5 2 roll % res1 res2 ang1 ang2 clockwise { exch sub } { sub } ifelse dup 0 le { 360 add } if lfigpi mul 0 0 x1 y1 lfigdistance mul 180 div } { x2 y2 lineto pop x2 y2 x1 y1 lfigangle x1 y1 x2 y2 lfigangle x1 y1 x2 y2 lfigdistance } ifelse } ifelse 4 -1 roll setmatrix end } def % lfigsetcurve: set up a Bezier curve from x0 y0 to x3 y3 % and return arrowhead angles and length of curve (actually 0) % x0 y0 x1 y1 x2 y2 x3 y3 lfigsetcurve /lfigsetcurve { 8 copy curveto pop pop lfigangle 5 1 roll 4 2 roll lfigangle exch 0 } def % lfigpaintpath: paint a path of the given shape % /paint [ shape ] lfigpaintpath - /lfigpaintpath { 10 dict begin 0 newpath /prevseen false def /curveseen false def { lfiggetnextitem dup 0 eq { pop exit } { 1 eq { /curveseen true def /curve exch def curve length 0 eq { /curveseen false def } if } { /ycurr exch def /xcurr exch def prevseen { curveseen { curve length 4 eq { xprev yprev curve 0 get curve 1 get curve 2 get curve 3 get xcurr ycurr lfigsetcurve pop pop pop } { xprev yprev xcurr ycurr curve length 1 ge { curve 0 get } { 0 } ifelse curve length 2 ge { curve 1 get } { 0 } ifelse curve length 3 ge { curve 2 get } { true } ifelse 7 1 roll lfigsetarc pop pop pop } ifelse } { xcurr ycurr lineto } ifelse } { xcurr ycurr moveto } ifelse /xprev xcurr def /yprev ycurr def /prevseen true def /curveseen false def } ifelse } ifelse } loop pop pop cvx exec end } def % stroke a path of the given shape in the given linestyle and dash length. % Return the origin and angle of the backward and forward arrow heads. % dashlength /linestyle [shape] lfigdopath [ ] [ ] /lfigdopath { 10 dict begin 0 /prevseen false def /curveseen false def /backarrow [] def /fwdarrow [] def { lfiggetnextitem dup 0 eq { pop exit } { 1 eq { /curveseen true def /curve exch def curve length 0 eq { /prevseen false def } if } { /ycurr exch def /xcurr exch def prevseen { newpath xprev yprev moveto curveseen { curve length 4 eq { xprev yprev curve 0 get curve 1 get curve 2 get curve 3 get xcurr ycurr lfigsetcurve } { xprev yprev xcurr ycurr curve length 1 ge { curve 0 get } { 0 } ifelse curve length 2 ge { curve 1 get } { 0 } ifelse curve length 3 ge { curve 2 get } { true } ifelse 7 1 roll lfigsetarc } ifelse } { xcurr ycurr lineto xcurr ycurr xprev yprev lfigangle dup 180 sub xprev yprev xcurr ycurr lfigdistance } ifelse 6 index 6 index cvx exec [ xprev yprev 5 -1 roll ] backarrow length 0 eq { /backarrow exch def } { pop } ifelse [ xcurr ycurr 4 -1 roll ] /fwdarrow exch def } if /xprev xcurr def /yprev ycurr def /prevseen true def /curveseen false def } ifelse } ifelse } loop pop pop pop pop backarrow length 0 eq { [ 0 0 0 ] } { backarrow } ifelse fwdarrow length 0 eq { [ 0 0 0 ] } { fwdarrow } ifelse end } def % lfigdoarrow: draw an arrow head of given form % dashlength /lstyle /pstyle hfrac height width [ ] lfigdoarrow - /lfigdoarrow { matrix currentmatrix 8 1 roll dup 0 get 1 index 1 get translate 2 get rotate [ 2 index neg 2 index 0 0 3 index 3 index neg 1 index 10 index mul 0 7 index 7 index ] 4 1 roll pop pop pop dup 3 1 roll gsave lfigpaintpath grestore lfigdopath pop pop setmatrix } def % arrow head styles /lfigopen 0.0 def /lfighalfopen 0.5 def /lfigclosed 1.0 def % stroke no arrows, forward, back, and both /lfignoarrow { pop pop pop pop pop pop pop pop } def /lfigforward { 7 -1 roll lfigdoarrow pop } def /lfigback { 8 -2 roll pop lfigdoarrow } def /lfigboth { 8 -1 roll 7 copy lfigdoarrow pop 7 -1 roll lfigdoarrow } def % lfigprevious: return previous point on path /lfigprevious { lfigisnumbertype { 2 copy } { lfigisarraytype { 2 index 2 index } { 0 0 } ifelse } ifelse } def % label a point in 2nd top dictionary: /name lfigpointdef - /lfigpointdef { % (Entering lfigpointdef) lfigdebugprint [ 4 2 roll transform /itransform cvx ] cvx currentdict end 3 1 roll % currentdict length currentdict maxlength lt % { def } % { exec moveto (too many labels) show stop } % ifelse def begin % (Leaving lfigpointdef) lfigdebugprint } def % promote labels from second top to third top dictionary % lfigpromotelabels - /lfigpromotelabels { % (Entering lfigpromotelabels) lfigdebugprint currentdict end exch currentdict end { exch 20 string cvs 2 index (@) lfigconcat exch lfigconcat cvn exch def } forall pop begin % (Leaving lfigpromotelabels) lfigdebugprint } def % show labels (except CIRCUM): - lfigshowlabels - /lfigshowlabels { % (Entering lfigshowlabels) lfigdebugprint currentdict end currentdict { 1 index 20 string cvs (CIRCUM) search % if CIRCUM in key { pop pop pop pop pop } { pop cvx exec 2 copy newpath 1.5 pt 0 360 arc 0 setgray fill /Times-Roman findfont 8 pt scalefont setfont moveto 0.2 cm 0.1 cm rmoveto 20 string cvs show } ifelse } forall begin % (Leaving lfigshowlabels) lfigdebugprint } def % fix an angle to 0 <= res < 360: lfigfixangle /lfigfixangle { % (Entering lfigfixangle) lfigdebugprint { dup 0 ge { exit } if 360 add } loop { dup 360 lt { exit } if 360 sub } loop % (Leaving lfigfixangle) lfigdebugprint } def % find point on circumference of box: alpha a b lfigboxcircum x y /lfigboxcircum { % (Entering lfigboxcircum) lfigdebugprint 4 dict begin /b exch def /a exch def lfigfixangle /alpha exch def 0 0 a b lfigangle /theta exch def % if alpha <= theta, return (a, a*tan(alpha)) alpha theta le { a a alpha sin mul alpha cos div } { % else if alpha <= 180 - theta, return (b*cot(alpha), b) alpha 180 theta sub le { b alpha cos mul alpha sin div b } { % else if alpha <= 180 + theta, return (-a, -a*tan(alpha)) alpha 180 theta add le { a neg a neg alpha sin mul alpha cos div } { % else if alpha <= 360 - theta, return (-b*cot(alpha), -b) alpha 360 theta sub le { b neg alpha cos mul alpha sin div b neg } { % else 360 - theta <= alpha, return (a, a*tan(alpha)) a a alpha sin mul alpha cos div } ifelse } ifelse } ifelse } ifelse end % (Leaving lfigboxcircum) lfigdebugprint } def % find quadratic roots (assume a != 0): a b c lfigqroots x1 x2 2 % or x2 1 % or 0 /lfigqroots { 4 dict begin /c exch def /b exch def /a exch def /disc b b mul 4 a c mul mul sub def disc 0 lt { 0 } { disc 0 eq { b neg 2 a mul div 1 } { b neg disc sqrt add 2 a mul div b neg disc sqrt sub 2 a mul div 2 } ifelse } ifelse end } def % work our which quadrant: lfigquadrant <0-3> /lfigquadrant { dup 90 lt { pop 0 } { dup 180 lt { pop 1 } { 270 lt { 2 } { 3 } ifelse } ifelse } ifelse } def % find curvebox circum, assuming upper right quadrant: alpha a b xmk lfigcb x y /lfigcb { 6 dict begin /xmk exch def /b exch def /a exch def /alpha exch def /theta1 0 0 a b xmk sub lfigangle def /theta2 0 0 a xmk sub b lfigangle def alpha theta1 le { % if alpha <= theta1, return (a, a*tan(alpha)) a a alpha sin mul alpha cos div } { alpha theta2 ge { % else if alpha > theta2, return (b*cot(alpha), b) b alpha cos mul alpha sin div b } { % else, return the intersection of line and circle a xmk sub b xmk sub xmk 0 0 alpha lfigcircleintersect dup 0 eq { % should never happen, just return any reasonable point pop a b 0.5 lfigpmul } { 1 eq { % should never happen, just return the point on top of stack } { % the usual case, two points on stack, return the larger lfigpmax } ifelse } ifelse } ifelse } ifelse end } def % find point on circumference of curvebox: alpha a b xmk lfigcurveboxcircum x y /lfigcurveboxcircum { % (Entering lfigcurveboxcircum) lfigdebugprint 5 dict begin /xmk exch def /b exch def /a exch def lfigfixangle /alpha exch def % work out which quadrant we are in, and reflect accordingly /quad alpha lfigquadrant def quad 0 eq { alpha a b xmk lfigcb } { quad 1 eq { 180 alpha sub a b xmk lfigcb exch neg exch } { quad 2 eq { alpha 180 sub a b xmk lfigcb neg exch neg exch } { 360 alpha sub a b xmk lfigcb neg } ifelse } ifelse } ifelse end % (Leaving lfigcurveboxcircum) lfigdebugprint } def % find point on circumference of diamond: alpha a b lfigdiamondcircum x y /lfigdiamondcircum { % (Entering lfigdiamondcircum) lfigdebugprint 4 dict begin /b exch def /a exch def lfigfixangle /alpha exch def b alpha cos abs mul a alpha sin abs mul add /denom exch def a b mul alpha cos mul denom div a b mul alpha sin mul denom div end % (Leaving lfigdiamondcircum) lfigdebugprint } def % find point on circumference of ellipse: alpha a b lfigellipsecircum x y /lfigellipsecircum { % (Entering lfigellipsecircum) lfigdebugprint 4 dict begin /b exch def /a exch def lfigfixangle /alpha exch def b alpha cos mul dup mul a alpha sin mul dup mul add sqrt /denom exch def a b mul alpha cos mul denom div a b mul alpha sin mul denom div end % (Leaving lfigellipsecircum) lfigdebugprint } def % find point of intersection of two lines each defined by two points % x1 y1 x2 y2 x3 y3 x4 y4 lfiglineintersect x y /lfiglineintersect { % (Entering lfiglineintersect) lfigdebugprint 13 dict begin /y4 exch def /x4 exch def /y3 exch def /x3 exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def x2 x1 sub /x21 exch def x4 x3 sub /x43 exch def y2 y1 sub /y21 exch def y4 y3 sub /y43 exch def y21 x43 mul y43 x21 mul sub /det exch def % calculate x y21 x43 mul x1 mul y43 x21 mul x3 mul sub y3 y1 sub x21 mul x43 mul add det div % calculate y x21 y43 mul y1 mul x43 y21 mul y3 mul sub x3 x1 sub y21 mul y43 mul add det neg div end % (Leaving lfiglineintersect) lfigdebugprint } def % find point on circumference of polygon % alpha radius num theta lfigpolycircum x y /lfigpolycircum { % (Entering lfigpolycircum) lfigdebugprint 13 dict begin /theta exch def /num exch def /radius exch def /alpha exch def % calculate delta, the angle from theta to alpha alpha theta sub lfigfixangle % calculate the angle which is the multiple of 360/num closest to delta 360 num div div truncate 360 num div mul theta add /anglea exch def % calculate the next multiple of 360/num after anglea anglea 360 num div add /angleb exch def % intersect the line through these two points with the alpha line anglea cos anglea sin angleb cos angleb sin 0 0 alpha cos 2 mul alpha sin 2 mul lfiglineintersect radius lfigpmul end % (Leaving lfigpolycircum) lfigdebugprint } def % find point of intersection of a point and a circle % x0 y0 r x1 y1 theta lfigcircleintersect xa ya xb yb 2 % or xb yb 1 % or 0 /lfigcircleintersect { % (Entering lfigcircleintersect) lfigdebugprint 15 dict begin /theta exch def /y1 exch def /x1 exch def /r exch def /y0 exch def /x0 exch def % if sin(theta) = 0 then line is horizontal and y must be y1 theta sin abs 0.00001 lt { /a 1 def /b -2 x0 mul def /c x0 dup mul y1 y0 sub dup mul add r dup mul sub def a b c lfigqroots dup 0 eq { pop 0 } { 1 eq { y1 1 } { y1 exch y1 2 } ifelse } ifelse } { /ct theta cos theta sin div def /a ct ct mul 1 add def /b ct x1 x0 sub mul y1 add y0 sub 2 mul def /c x1 x0 sub dup mul y1 y0 sub dup mul add r dup mul sub def a b c lfigqroots dup 0 eq { pop 0 } { 1 eq { y1 add /yb exch def yb y1 sub ct mul x1 add /xb exch def xb yb 1 } { y1 add /ya exch def ya y1 sub ct mul x1 add /xa exch def y1 add /yb exch def yb y1 sub ct mul x1 add /xb exch def xa ya xb yb 2 } ifelse } ifelse } ifelse end % (Leaving lfigcircleintersect) lfigdebugprint } def % add CIRCUM operator with this body: lfigcircumdef - /lfigcircumdef { % (Entering lfigcircumdef) lfigdebugprint /CIRCUM exch cvx currentdict end 3 1 roll % currentdict length currentdict maxlength lt % { def } % { exec moveto (too many labels) show stop } % ifelse def begin % (Leaving lfigcircumdef) lfigdebugprint } def end %%EndResource %%BeginResource: procset LoutBasicSetup % @PrependGraphic file /export/home/6monthspace/jeff/lout.lib/include/bsf.lpg % width height linethickness louteuro - % draw a Euro symbol of this width and height with this line thickness /louteuro { 20 dict begin /eurothick exch def /euroheight exch def /eurowidth exch def /eurostrokewidth euroheight 0.8 mul def /eurostep eurothick 60 cos mul 60 sin div def /eurotheta 40 def % llx lly width thickness louteurobox - % draw angled box starting at (llx, lly) with given width and thickness /louteurobox { /euroboxthick exch def /euroboxwidth exch def newpath moveto euroboxwidth 0 rlineto eurostep euroboxthick rlineto euroboxwidth neg 0 rlineto closepath fill } def % lower cross stroke 0 euroheight 2 div eurothick 1.5 mul sub eurostrokewidth eurothick louteurobox % upper cross stroke 0 euroheight 2 div eurothick 0.5 mul add eurostrokewidth eurostep 2 mul add eurothick louteurobox % circular part /eurohctr eurowidth euroheight 2 div eurotheta cos mul sub def /eurovctr euroheight 2 div def newpath eurohctr eurovctr eurovctr eurotheta 350 eurotheta sub arc eurohctr eurovctr eurovctr eurothick sub 365 eurotheta sub eurotheta arcn closepath fill end } def % path for @FullWidthRule symbol /LoutRule { 0 0 moveto xsize 0 lineto } def % path for @Box symbol /LoutBox { 0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath } def % path for @CurveBox symbol /LoutCurveBox { xmark 0 moveto xsize xmark sub xmark xmark 270 360 arc xsize xmark sub ysize xmark sub xmark 0 90 arc xmark ysize xmark sub xmark 90 180 arc xmark xmark xmark 180 270 arc closepath } def % path for @ShadowBox symbol /LoutShadowBox { xmark 2 mul 0 moveto xsize 0 lineto xsize ysize xmark 2 mul sub lineto xsize xmark sub ysize xmark 2 mul sub lineto xsize xmark sub xmark lineto xmark 2 mul xmark lineto closepath } def % set up dictionary containing margin note data: parity LoutMargSet - /LoutMargSet { /LoutMargDict 12 dict def LoutMargDict begin /parity exch def /matr matrix currentmatrix def /rightx xsize def /lefty ysize def % highest allowable point for top of next left note /righty ysize def % highest allowable point for top of next right note /max { 2 copy gt { pop } { exch pop } ifelse } def /min { 2 copy lt { pop } { exch pop } ifelse } def end } def %translate coordinate system for marginal notes: type LoutMargShift - % where type 0 is left margin, 1 is right margin, 2 is outer, 3 is inner /LoutMargShift { LoutMargDict begin % y coordinate of top of note, in margin coords, before vertical adjust 0 ysize transform matr itransform exch pop % decide whether left or right margin based on type and parity exch [ 0 1 parity 1 parity sub ] exch get 0 eq { % left margin: adjust top of note downwards if overlaps previous note lefty min % bottom of note is new lefty position and also translate position ysize sub dup /lefty exch def % want right edge of note at coordinate zero xsize neg exch } { % right margin: adjust top of note downwards if overlaps previous note righty min % bottom of note is new righty position and also translate position ysize sub dup /righty exch def % want left edge of note at coordinate rightx rightx exch } ifelse % stack now contains coord of bottom left corner in margin coordinates matr setmatrix translate end } def % create LoutPageDict with left, right, foot, top for @Place symbol users /LoutPageSet { /LoutPageDict 5 dict def LoutPageDict begin /matr matrix currentmatrix def /left 0 def /right xsize def /foot 0 def /top ysize def end } def %%EndResource %%EndProlog %%BeginSetup %%IncludeResource: font Times-Roman /Times-Romanfnt82 vec2 /Times-Roman LoutRecode /fnt82 { /Times-Romanfnt82 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt84 vec2 /Times-Bold LoutRecode /fnt84 { /Times-Boldfnt84 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt83 vec2 /Times-Italic LoutRecode /fnt83 { /Times-Italicfnt83 LoutFont } def %%EndSetup %%Page: i 1 %%BeginPageSetup %%PageResources: font Times-Roman %%+ font Times-Bold %%+ font Times-Italic /pgsave save def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave 0 0 translate 240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate 9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 1 LoutMargSet grestore 240 fnt84 2897 12401(The)m 3352(Design)s 4099(and)s 4540(Implementation)s 4239 11998(of)m 4511(the)s 2589 11595(Lout)m 3141(Document)s 4250(F)s 6(ormatting)k 5468(Language)s 240 fnt83 3630 11097(J)m 6(ef)k 4(fr)k 8(e)k 7(y)k 4310(H.)s 4577(Kingston)s 240 fnt82 2551 10596(Basser)m 3248(Department)s 4436(of)s 4707(Computer)s 5724(Science,)s 3007 10308(The)m 3435(Uni)s 6(v)k 3(ersity)k 4489(of)s 4760(Sydne)s 3(y)k 5530(2006,)s 4095 10020(Australia)m 3739 9568(27)m 4027(January)s 15(,)k 4863(1993)s 240 fnt84 0 8775(SUMMAR)m 8(Y)k 240 fnt82 0 8320(Lout)m 543(is)s 784(a)s 982(high-le)s 6(v)k 3(el)k 2028(language)s 2979(for)s 3349(document)s 4384(formatting,)s 5530(whose)s 6230(ease)s 6728(of)s 7030(use)s 7437(has)s 7838(permitted)s 8843(an)s 0 8032(unprecedented)m 1501(number)s 2340(of)s 2659(adv)s 6(anced)k 3663(features)s 4517(to)s 4804(be)s 5134(added)s 5812(quickly)s 6632(and)s 7084(reliably)s 15(.)k 8010(This)s 8535(paper)s 0 7744(charts)m 625(the)s 978(e)s 6(v)k 4(olution)k 1933(of)s 2209(the)s 2561(design)s 3248(and)s 3656(implementation)s 5218(of)s 5493(Lout)s 6010(from)s 6538(conception)s 7650(in)s 7897(mid-1984)s 8887(to)s 0 7456(public)m 672(release)s 1412(in)s 1677(October)s 2529(1991.)s 3194(It)s 3421(includes)s 4291(e)s 3(xtensi)k 6(v)k 3(e)k 5260(discussions)s 6422(of)s 6715(remaining)s 7759(problems)s 8722(and)s 0 7168(possible)m 840(solutions.)s 240 fnt84 0 6664(K)m 6(eyw)k 2(ords)k 240 fnt82 1143 6665(document)m 2147(formatting)s 3208(typesetting)s grestore grestore grestore pgsave restore showpage %%Page: 1 2 %%BeginPageSetup %%PageResources: font Times-Roman %%+ font Times-Bold %%+ font Times-Italic /pgsave save def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave 0 0 translate 240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate 9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 1 LoutMargSet grestore 240 fnt84 2897 12401(The)m 3352(Design)s 4099(and)s 4540(Implementation)s 4239 11998(of)m 4511(the)s 2589 11595(Lout)m 3141(Document)s 4250(F)s 6(ormatting)k 5468(Language)s 240 fnt83 3630 11097(J)m 6(ef)k 4(fr)k 8(e)k 7(y)k 4310(H.)s 4577(Kingston)s 240 fnt82 2551 10596(Basser)m 3248(Department)s 4436(of)s 4707(Computer)s 5724(Science,)s 3007 10308(The)m 3435(Uni)s 6(v)k 3(ersity)k 4489(of)s 4760(Sydne)s 3(y)k 5530(2006,)s 4095 10020(Australia)m 3739 9568(27)m 4027(January)s 15(,)k 4863(1993)s 240 fnt84 0 8926(1.)m 291(Intr)s 4(oduction)k 240 fnt82 480 8495(Lout)m 985([1,)s 1284(2])s 1515(is)s 1718(a)s 1877(high-le)s 6(v)k 3(el)k 2885(language)s 3798(for)s 4129(document)s 5126(formatting,)s 6234(designed)s 7136(and)s 7533(implemented)s 8832(by)s 0 8207(the)m 341(author)s 13(.)k 1096(The)s 1517(implementation,)s 3117(kno)s 6(wn)k 3814(as)s 4057(Basser)s 4747(Lout,)s 5299(is)s 5502(a)s 5661(fully)s 6159(operational)s 7282(production)s 8368(v)s 3(ersion)k 0 7919(written)m 736(in)s 983(C)s 1198(for)s 1540(the)s 1891(Unix)s 2429(operating)s 3389(system,)s 153 fnt82 4100 8008(1)m 240 fnt82 4223 7919(which)m 4869(translates)s 5824(Lout)s 6340(source)s 7023(code)s 7535(into)s 7964(PostScript,)s 153 fnt82 8993 8008(2)m 240 fnt82 0 7631(a)m 201(de)s 6(vice-independent)k 2164(graphics)s 3061(rendering)s 4066(language)s 5021(accepted)s 5951(by)s 6281(man)s 3(y)k 6900(high-resolution)s 8454(output)s 0 7343(de)m 6(vices,)k 833(including)s 1805(most)s 2346(laser)s 2871(printers.)s 3779(Basser)s 4492(Lout)s 5019(is)s 5244(a)s 4(v)k 6(ailable)k 6168(free)s 6609(of)s 6895(char)s 4(ge)k 7600([3].)s 8057(It)s 8278(includes)s 0 7055(installation)m 1118(instructions,)s 2339(C)s 2550(source,)s 3281(se)s 6(v)k 3(en)k 3873(standard)s 4740(packages,)s 5723(and)s 6127(complete)s 7058(documentation)s 8536(in)s 8778(the)s 0 6767(form)m 524(of)s 795(six)s 1129(technical)s 2046(reports)s 2760(and)s 3164(a)s 3330(manual)s 4089(page.)s 480 6393(The)m 900(Lout)s 1404(project)s 2118(arose)s 2670(out)s 3027(of)s 3290(the)s 3629(author')s 13(s)k 4442(desire)s 5060(to)s 5290(bring)s 5840(to)s 6070(document)s 7066(formatting)s 8118(languages)s 0 6105(the)m 343(ele)s 3(g)k 1(ance)k 1225(of)s 1491(e)s 3(xpression)k 2562(found)s 3174(in)s 3411(programming)s 4761(languages)s 5763(lik)s 2(e)k 6170(Algol-)s 6783(60)s 7072(and)s 7471(P)s 3(ascal.)k 8236(This)s 8706(em)s 8998(-)s 0 5817(phasis)m 638(on)s 924(e)s 3(xpressi)k 6(v)k 3(eness)k 2373(has)s 2731(produced)s 3669(an)s 3941(order)s 4493(of)s 4753(magnitude)s 5808(reduction)s 6757(in)s 6988(the)s 7325(cost)s 7759(of)s 8018(de)s 6(v)k 3(eloping)k 0 5529(document)m 998(formatting)s 2053(applications.)s 3366(F)s 3(or)k 3748(e)s 3(xample,)k 4656(an)s 4933(equation)s 5807(formatting)s 6862(application,)s 8025(which)s 8660(may)s 0 5241(be)m 282(dif\207cult)s 1098(or)s 1357(impossible)s 2449(to)s 2688(add)s 3092(to)s 3331(other)s 3882(systems,)s 4746(can)s 5135(be)s 5417(written)s 6150(in)s 6393(Lout)s 6905(in)s 7148(a)s 7314(fe)s 6(w)k 7720(days.)s 480 4867(When)m 1099(e)s 3(xpert)k 1742(users)s 2274(can)s 2652(implement)s 3724(such)s 4209(applications)s 5405(quickly)s 15(,)k 6204(non-)s 6632(e)s 3(xperts)k 7360(bene\207t.)s 8164(Although)s 0 4579(Lout)m 509(itself)s 1053(pro)s 3(vides)k 1922(only)s 2398(a)s 2560(small)s 3129(k)s 2(ernel)k 3775(of)s 4042(carefully)s 4941(chosen)s 5659(primiti)s 6(v)k 3(es,)k 6721(packages)s 7646(written)s 8375(in)s 8614(Lout)s 0 4291(and)m 399(distrib)s 4(uted)k 1470(with)s 1946(Basser)s 2638(Lout)s 3145(pro)s 3(vide)k 3923(an)s 4201(unprecedented)s 5649(array)s 6187(of)s 6453(adv)s 6(anced)k 7404(features)s 8204(in)s 8442(a)s 8602(form)s 0 4003(accessible)m 1035(to)s 1286(non-)s 1714(e)s 3(xpert)k 2380(users.)s 3047(The)s 3487(features)s 4305(include)s 5076(rotation)s 5888(and)s 6304(scaling,)s 7100(fonts,)s 7697(paragraph)s 8722(and)s 0 3715(page)m 500(breaking,)s 1436(displays)s 2263(and)s 2659(lists,)s 3141(\210oating)s 3917(\207gures)s 4611(and)s 5007(tables,)s 5662(footnotes,)s 6651(chapters)s 7490(and)s 7886(sections)s 8698(\(au)s 8998(-)s 0 3427(tomatically)m 1128(numbered\),)s 2272(running)s 3070(page)s 3579(headers)s 4361(and)s 4765(footers,)s 5536(odd-)s 5964(e)s 6(v)k 3(en)k 6464(page)s 6973(layouts,)s 7772(automatically)s 0 3139(generated)m 975(tables)s 1570(of)s 1829(contents,)s 2720(sorted)s 3350(inde)s 3(x)k 3(es)k 4113(and)s 4505(reference)s 5435(lists,)s 5914(bibliographic)s 7229(and)s 7621(other)s 8159(databases)s 0 2851(\(including)m 1038(databases)s 2008(of)s 2281(formats)s 3064(for)s 3405(printing)s 4217(references\),)s 5386(equations,)s 6412(tables,)s 7079(diagrams,)s 8065(formatting)s 0 2563(of)m 271(P)s 3(ascal)k 933(programs,)s 1943(and)s 2347(automatically)s 3701(maintained)s 4821(cross)s 5363(references.)s 480 2189(This)m 1015(paper)s 1666(charts)s 2347(the)s 2755(e)s 6(v)k 4(olution)k 3766(of)s 4097(Lout)s 4669(from)s 5253(conception)s 6420(in)s 6723(mid-1984)s 7768(to)s 8067(the)s 8475(public)s 0 1901(release)m 722(of)s 997(Basser)s 1699(Lout)s 2215(in)s 2462(October)s 3297(1991.)s 3945(Lout)s 4461(is)s 4676(or)s 4(g)k 1(anized)k 5676(around)s 6403(four)s 6866(k)s 2(e)k 3(y)k 7265(concepts)s 8157(\211)s 8342(objects,)s 0 1613(de\207nitions,)m 1131(g)s 1(alle)k 3(ys,)k 1925(and)s 2343(cross)s 2899(references)s 3944(\211)s 4138(and)s 4556(the)s 3(y)k 5033(were)s 5567(de)s 6(v)k 3(eloped)k 6614(in)s 6871(the)s 7233(order)s 7811(listed,)s 8449(so)s 8730(this)s 0 1325(paper)m 593(will)s 1022(treat)s 1508(each)s 2006(in)s 2252(turn,)s 2747(discussing)s 3800(its)s 4079(design,)s 4814(implementation,)s 6424(problems,)s 7424(and)s 7831(prospects)s 8788(for)s 1134 0 0 0 240 288 60 0 574 LoutGr2 0 0 moveto xsize 0 lineto stroke grestore grestore 122 fnt82 0 379(1)m 192 fnt82 58 309(Unix)m 485(is)s 653(a)s 786(trademark)s 1609(of)s 1825(A)s 21(T&T)k 2370(Bell)s 2733(Laboratories.)s 122 fnt82 0 112(2)m 192 fnt82 67 42(PostScript)m 900(is)s 1068(a)s 1201(trademark)s 2024(of)s 2240(Adobe)s 2796(Systems,)s 3519(Incorporated.)s grestore grestore grestore pgsave restore showpage %%Page: 2 3 %%BeginPageSetup %%PageResources: font Times-Roman %%+ font Times-Bold %%+ font Symbol %%+ font Times-Italic %%+ font Helvetica /pgsave save def %%IncludeResource: font Symbol /fnt78 { /Symbol LoutFont } def %%IncludeResource: font Helvetica /Helveticafnt35 vec2 /Helvetica LoutRecode /fnt35 { /Helveticafnt35 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave 0 0 translate 240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate 9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 0 LoutMargSet grestore 4348 13844(-)m 4476(2)s 4650(-)s 0 13256(further)m 709(impro)s 3(v)k 3(ement.)k 240 fnt84 0 12463(2.)m 291(Objects)s 240 fnt82 480 11987(The)m 923(essence)s 1725(of)s 2011(an)s 3(y)k 2424(mo)s 3(v)k 3(e)k 3021(to)s 3276(a)s 3457(higher)s 4144(le)s 6(v)k 3(el)k 4669(is)s 4895(the)s 5258(introduction)s 6500(of)s 6786(some)s 7363(abstraction)s 8484(which)s 0 11699(serv)m 3(es)k 639(to)s 872(or)s 4(g)k 1(anize)k 1740(the)s 2082(lo)s 6(w-)k 2503(le)s 6(v)k 3(el)k 3006(operations,)s 4103(resulting)s 4986(in)s 5223(a)s 5383(more)s 5923(succinct)s 6760(e)s 3(xpression)k 7831(of)s 8096(their)s 8586(com)s 8998(-)s 0 11411(mon)m 475(combinations)s 1806(at)s 2030(the)s 2369(cost)s 2805(of)s 3068(some)s 3620(loss)s 4034(of)s 4297(detailed)s 5102(control.)s 5934(The)s 6354(early)s 6876(part)s 7298(of)s 7561(the)s 7900(Lout)s 8403(project)s 0 11123(w)m 2(as)k 426(spent)s 996(in)s 1245(the)s 1598(de)s 6(v)k 3(elopment)k 2891(of)s 3167(such)s 3668(an)s 3957(abstraction)s 5067(for)s 5411(the)s 5764(b)s 4(uilding)k 6616(blocks)s 7298(of)s 7574(documents,)s 8724(one)s 0 10835(which)m 635(could)s 1217(e)s 3(xplain,)k 2017(not)s 2375(just)s 2772(the)s 3113(simple)s 3798(phenomena)s 4954(of)s 5217(w)s 2(ords,)k 5899(lines,)s 6450(and)s 6846(paragraphs,)s 7994(b)s 4(ut)k 8348(also)s 8778(the)s 0 10547(alignment)m 1016(of)s 1287(columns)s 2149(in)s 2392(tables,)s 3056(and)s 3460(the)s 3808(comple)s 3(x)k 4684(nested)s 5353(structures)s 6332(of)s 6603(equations.)s 240 fnt84 0 9898(2.1.)m 471(The)s 926(genesis)s 1697(of)s 1969(the)s 2343(object)s 3026(abstraction)s 240 fnt82 480 9421(When)m 1163(one)s 1620(e)s 3(xamines)k 2626(pre)s 6(vious)k 3549(document)s 4608(formatting)s 5724(systems)s 6587([4])s 6958(looking)s 7798(for)s 8191(ideas)s 8788(for)s 0 9133(abstractions,)m 1245(as)s 1492(the)s 1837(author)s 2505(did)s 2866(in)s 3106(1984,)s 3690(the)s 4035(Eqn)s 4475(formatting)s 5533(language)s 6450([5])s 6764(stands)s 7410(out)s 7773(lik)s 2(e)k 8182(a)s 8344(beacon.)s 0 8845(In)m 256(Eqn,)s 749(a)s 915(mathematical)s 2256(formula)s 3072(such)s 3568(as)s 168 fnt78 586 8390(2)m 240 fnt83 480 8330(x)m 240 fnt78 738 8322(+)m 939(1)s gsave 480 8274 translate 240 fnt83 553 0 0 0 240 288 12 LoutGraphic gsave 0 0 moveto xsize 0 lineto 0.05 ft setlinewidth stroke grestore grestore 700 8046(4)m 240 fnt82 0 7535(is)m 210(produced)s 1159(by)s 1453(typing)s 220 fnt35 480 7037({ x sup 2 + 1 } o)m 3(v)k 5(er 4)k 240 fnt82 0 6541(in)m 261(the)s 627(input)s 1197(\207le;)s 220 fnt35 1632 6538(sup)m 240 fnt82 2056 6541(and)m 220 fnt35 2478 6538(o)m 3(v)k 5(er)k 240 fnt82 2975 6541(are)m 3340(binary)s 4023(operators,)s 5037(and)s 5459(braces)s 6138(are)s 6503(used)s 7018(for)s 7374(grouping.)s 8421(This)s 8916(is)s 0 6253(document)m 1017(formatting)s 2091(at)s 2337(a)s 2516(v)s 3(ery)k 3006(high)s 3502(le)s 6(v)k 3(el,)k 4077(close)s 4638(to)s 4890(the)s 5252(language)s 6185(of)s 6469(mathematics)s 7741(itself,)s 8337(with)s 8833(all)s 0 5965(reference)m 943(to)s 1182(font)s 1627(changes)s 2449(and)s 2853(spacing)s 3637(suppressed.)s 480 5591(Eqn)m 916(pro)s 3(vides)k 1780(a)s 1938(single)s 2557(data)s 3008(type)s 3468(\(let)s 3837(us)s 4093(call)s 4485(it)s 4669(the)s 240 fnt83 5009 5593(e)m 4(xpr)k 8(ession)k 240 fnt82 6014 5591(\),)m 6192(b)s 4(uilt)k 6679(up)s 6964(recursi)s 6(v)k 3(ely)k 8062(in)s 8297(conte)s 3(xt-)k 0 5303(free)m 457(style:)s 1106(where)s 1778(one)s 2212(e)s 3(xpression)k 3321(may)s 3819(appear)s 9(,)k 4586(an)s 3(y)k 5015(e)s 3(xpression)k 6124(may)s 6622(appear)s 13(.)k 7442(This)s 7950(approach)s 8916(is)s 0 5015(common)m 905(in)s 1158(algebra)s 1931(and)s 2345(programming)s 3710(languages,)s 4785(where)s 5435(its)s 5721(simplicity)s 6740(and)s 7154(e)s 3(xpressi)k 6(v)k 3(eness)k 8625(ha)s 4(v)k 3(e)k 0 4727(long)m 478(been)s 986(appreciated;)s 2198(b)s 4(ut)k 2559(Eqn)s 3001(w)s 2(as)k 3421(the)s 3768(\207rst)s 4198(language)s 5117(to)s 5355(demonstrate)s 6578(its)s 6853(utility)s 7476(in)s 7718(document)s 8720(for)s 8998(-)s 0 4439(matting.)m 480 4065(Each)m 1015(e)s 3(xpression)k 2092(is)s 2302(treated)s 3009(by)s 3304(Eqn)s 3747(as)s 3997(a)s 4163(rectangle)s 5094(with)s 5577(a)s 240 fnt83 5743 4067(horizontal)m 6787(axis)s 240 fnt82 7167 4065(,)m 7274(used)s 7771(for)s 8110(alignment)s 0 3777(with)m 482(adjacent)s 1338(e)s 3(xpressions:)k 553 519 0 288 240 288 60 480 2918 LoutGr2 grestore save gsave 200 dict begin lfigdict begin grestore 553 519 0 288 240 288 60 0 0 LoutGr2 /lfiglightgrey [ lfigbox ] gsave lfigpaintpath grestore 0.015 cm setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigbox ] lfigdopath pop pop grestore 553 519 0 288 240 288 60 0 0 LoutGr2 0.015 cm setlinewidth lfiground setlinecap 0.15 cm /lfigdashed [ -0.3 cm ymark xsize ymark 0.3 cm 0 lfigpadd ] lfigdopath pop pop grestore 168 fnt78 106 404(2)m 240 fnt83 0 344(x)m 240 fnt78 258 336(+)m 459(1)s gsave 0 288 translate 240 fnt83 553 0 0 0 240 288 12 LoutGraphic gsave 0 0 moveto xsize 0 lineto 0.05 ft setlinewidth stroke grestore grestore 220 60(4)m grestore grestore end end restore grestore 0 2467(The)m 425(size)s 848(and)s 1248(rendering)s 2213(of)s 2481(the)s 2825(e)s 3(xpression)k 3898(on)s 4191(the)s 4536(printed)s 5267(page)s 5771(are)s 6114(kno)s 6(wn)k 6815(only)s 7291(to)s 7526(the)s 7870(implementa)s 8998(-)s 0 2179(tion,)m 481(ne)s 6(v)k 3(er)k 1066(e)s 3(xplicitly)k 2022(calculated)s 3051(or)s 3313(accessed)s 4209(by)s 4506(the)s 4857(user)s 13(.)k 5409(This)s 5888(prohibition)s 7010(is)s 7223(crucial)s 7930(to)s 8172(the)s 8523(main)s 8998(-)s 0 1891(tenance)m 785(of)s 1055(the)s 1402(conte)s 3(xt-)k 2171(free)s 2596(property)s 3459(in)s 3701(practice.)s 4619(In)s 4874(Lout,)s 5432(for)s 5769(e)s 3(xample,)k 6682(equations,)s 7705(\207gures,)s 8462(tables,)s 0 1603(and)m 393(arbitrary)s 1256(objects)s 1972(may)s 2427(be)s 2697(mix)s 3(ed)k 3338(together)s 4169(freely)s 15(.)k 4863(This)s 5327(w)s 2(ould)k 5970(be)s 6241(impossible)s 7321(if)s 7526(size)s 7941(information)s 0 1315(w)m 2(as)k 421(hidden)s 1130(from)s 1654(the)s 2002(implementation)s 3559(in)s 3802(user)s 4260(calculations.)s 480 941(The)m 927(object)s 1591(abstraction)s 2715(of)s 3006(Lout)s 3537(is)s 3767(a)s 3952(direct)s 4575(descendant)s 5717(of)s 6008(the)s 6375(Eqn)s 6838(e)s 3(xpression.)k 8041(It)s 8266(emplo)s 2(ys)k 0 653(the)m 385(same)s 969(conte)s 3(xt-free)k 2212(recursi)s 6(v)k 3(e)k 3171(style)s 3715(of)s 4023(construction,)s 5350(and)s 5791(each)s 6323(object)s 7004(is)s 7251(treated)s 7995(by)s 8326(Lout)s 8876(as)s grestore grestore grestore pgsave restore showpage %%Page: 3 4 %%BeginPageSetup %%PageResources: font Times-Roman %%+ font Times-Italic %%+ font Times-Bold %%+ font Symbol %%+ font Helvetica /pgsave save def %%IncludeResource: font Symbol /fnt78 { /Symbol LoutFont } def %%IncludeResource: font Helvetica /Helveticafnt35 vec2 /Helvetica LoutRecode /fnt35 { /Helveticafnt35 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave 0 0 translate 240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate 9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 1 LoutMargSet grestore 4353 13844(-)m 4481(3)s 4645(-)s 0 13253(a)m 166(rectangle:)s 1701 453 567 198 240 288 60 480 12460 LoutGr2 grestore save gsave 200 dict begin lfigdict begin grestore 1701 453 567 198 240 288 60 0 0 LoutGr2 grestore save gsave 200 dict begin lfigdict begin grestore 1701 453 567 198 240 288 60 0 0 LoutGr2 /lfiglightgrey [ lfigbox ] gsave lfigpaintpath grestore 0.015 cm setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigbox ] lfigdopath pop pop grestore 1701 453 567 198 240 288 60 0 0 LoutGr2 0.015 cm setlinewidth lfiground setlinecap 0.15 cm /lfigdashed [ -0.3 cm ymark xsize ymark 0.3 cm 0 lfigpadd [] xmark -0.3 cm xmark ysize 0 0.3 cm lfigpadd ] lfigdopath pop pop grestore grestore grestore end end restore grestore end end restore grestore 0 12007(The)m 442(horizontal)s 1481(axis,)s 1987(called)s 2630(a)s 240 fnt83 2810 12009(r)m 10(ow)k 3244(mark)s 240 fnt82 3814 12007(in)m 4072(Lout,)s 4645(has)s 5030(a)s 5210(v)s 3(ertical)k 5992(analogue)s 6926(called)s 7569(a)s 240 fnt83 7749 12009(column)m 8523(mark)s 240 fnt82 9019 12007(,)m 0 11719(creating)m 822(a)s 988(v)s 6(aluable)k 1848(symmetry)s 2857(between)s 3711(horizontal)s 4735(and)s 5139(v)s 3(ertical.)k 6014(Multiple)s 6893(column)s 7668(and)s 8072(ro)s 6(w)k 8491(marks)s 0 11431(are)m 347(permitted:)s 1984 1189 0 1189 240 288 60 480 9902 LoutGr2 grestore save gsave 200 dict begin lfigdict begin grestore 680 453 0 453 240 288 60 0 736 LoutGr2 currentdict end 200 dict begin begin grestore 680 453 0 453 240 288 60 0 0 LoutGr2 /lfiggrey [ lfigbox ] gsave lfigpaintpath grestore 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigbox ] lfigdopath pop pop grestore grestore (A) lfigpromotelabels grestore 737 453 0 453 240 288 60 1247 736 LoutGr2 currentdict end 200 dict begin begin grestore 567 453 0 453 240 288 60 0 0 LoutGr2 /lfiggrey [ lfigbox ] gsave lfigpaintpath grestore 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigbox ] lfigdopath pop pop grestore grestore (B) lfigpromotelabels grestore 680 453 0 453 240 288 60 0 0 LoutGr2 currentdict end 200 dict begin begin grestore 396 453 0 453 240 288 60 0 0 LoutGr2 /lfiggrey [ lfigbox ] gsave lfigpaintpath grestore 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigbox ] lfigdopath pop pop grestore grestore (C) lfigpromotelabels grestore 737 453 0 453 240 288 60 1247 0 LoutGr2 currentdict end 200 dict begin begin grestore 737 453 0 453 240 288 60 0 0 LoutGr2 /lfiggrey [ lfigbox ] gsave lfigpaintpath grestore 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigbox ] lfigdopath pop pop grestore grestore (D) lfigpromotelabels grestore 0 0 0 0 240 288 60 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigdashed [ 0.3 cm 0 A@W lfigpsub lfigprevious /FROM lfigpointdef B@W 1.6 cm 0 lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath pop pop grestore grestore 0 0 0 0 240 288 60 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigdashed [ 0.3 cm 0 C@W lfigpsub lfigprevious /FROM lfigpointdef D@W 1.6 cm 0 lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath pop pop grestore grestore 0 0 0 0 240 288 60 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigdashed [ A@NW 0 0.3 cm lfigpadd lfigprevious /FROM lfigpointdef 0 0.3 cm C@SW lfigpsub lfigprevious /TO lfigpointdef ] lfigdopath pop pop grestore grestore 0 0 0 0 240 288 60 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigdashed [ B@NW 0.3 cm 0.3 cm lfigpadd lfigprevious /FROM lfigpointdef D@SW 0.3 cm -0.3 cm lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath pop pop grestore grestore end end restore grestore 0 9451(so)m 266(that)s 684(objects)s 1412(are)s 1759(able)s 2213(to)s 2452(represent)s 3387(tables.)s 480 9077(This)m 946(abstraction)s 2041(has)s 2401(some)s 2952(limitations,)s 4069(the)s 4407(most)s 4922(ob)s 3(vious)k 5719(being)s 6293(the)s 6631(restriction)s 7645(of)s 7906(size)s 8322(calcula)s 8998(-)s 0 8789(tions)m 507(to)s 736(rectangular)s 1860(bounding)s 2809(box)s 3(es.)k 3519(Non-)s 4000(rectangular)s 5124(and)s 5518(disconnected)s 6815(shapes)s 7494(arise)s 7990(naturally)s 8883(in)s 0 8501(\207gures)m 704(and)s 1111(in)s 1356(the)s 1707(characters)s 2727(of)s 3001(fonts;)s 3594(the)s 3944(e)s 3(xtension)k 4918(to)s 5159(them)s 5700(is)s 5912(conceptually)s 7191(straightforw)s 2(ard)k 8722(and)s 0 8213(might)m 615(help)s 1076(to)s 1311(e)s 3(xplain)k 2066(some)s 2623(\207ne)s 3034(points)s 3667(of)s 3934(layout)s 4588(such)s 5081(as)s 5327(k)s 2(erning.)k 6216(Ho)s 6(we)k 6(v)k 3(er)k 9(,)k 7173(there)s 7702(are)s 8045(implemen)s 8998(-)s 0 7925(tation)m 599(and)s 1001(language)s 1918(design)s 2598(problems,)s 3592(particularly)s 4744(when)s 5317(\207lling)s 5939(non-)s 6367(rectangular)s 7498(shapes)s 8185(with)s 8664(te)s 3(xt,)k 0 7637(and)m 404(so)s 670(the)s 1018(author)s 1689(chose)s 2290(to)s 2529(k)s 2(eep)k 3032(to)s 3271(Eqn')s 13(s)k 3867(rectangles.)s 480 7263(A)m 766(more)s 1370(fundamental)s 2676(limitation)s 3718(of)s 4045(the)s 4450(object)s 5151(abstraction)s 6312(arises)s 6963(from)s 7543(the)s 7948(inability)s 8855(of)s 0 6975(recursi)m 6(v)k 3(e)k 936(data)s 1408(types)s 1978(to)s 2231(describe)s 3097(cross-link)s 2(ed)k 4335(structures,)s 5384(which)s 6040(seem)s 6605(to)s 6858(require)s 7604(some)s 8179(means)s 8855(of)s 0 6687(naming)m 756(the)s 1089(multiply)s 1938(referenced)s 2988(parts.)s 3601(Lout)s 4098(is)s 4293(obliged)s 5054(to)s 5278(introduce)s 6222(additional)s 7218(abstractions)s 8395(to)s 8618(cope)s 0 6399(with)m 490(cross)s 1040(linking:)s 1892(g)s 1(alle)k 3(ys)k 2624(for)s 2970(inserting)s 3867(te)s 3(xt)k 4291(into)s 4724(pages)s 5328(\(Section)s 6189(5.1\),)s 6683(cross)s 7233(references)s 8273(\(Section)s 0 6111(6.1\),)m 490(and)s 898(labelled)s 1716(points)s 2356(in)s 2603(\207gure)s 3221(dra)s 3(wing)k 4059([6].)s 4506(An)s 4860(abstraction)s 5969(closer)s 6603(to)s 6846(h)s 1(yperte)k 3(xt)k 7809(might)s 8431(form)s 8960(a)s 0 5823(more)m 547(uni\207ed)s 1270(basis)s 1799(for)s 2137(these)s 2684(features.)s 240 fnt84 0 5224(2.2.)m 471(Grammatical)s 1893(and)s 2334(lexical)s 3039(structur)s 4(e)k 240 fnt82 480 4792(If)m 700(objects)s 1418(are)s 1755(to)s 1984(be)s 2256(constructed)s 3406(lik)s 2(e)k 3807(mathematical)s 5138(e)s 3(xpressions,)k 6348(the)s 6686(natural)s 7394(notation)s 8225(is)s 8425(a)s 8580(func)s 8998(-)s 0 4504(tional)m 599(language)s 1519(based)s 2122(on)s 2419(operators,)s 3415(as)s 3665(in)s 3908(Eqn.)s 4458(The)s 4886(grammar)s 5808(of)s 6079(Lout)s 6591(objects)s 7319(is)s 7529(accordingly)s 240 fnt78 1332 3945(\256)m 1332 3612(\256)m 1332 3279(\256)m 1332 2995(\256)m 1332 2662(\256)m 1332 2368(\256)m 1332 2035(\256)m 1332 1751(\256)m 240 fnt83 480 3953(object)m 1826(object)s 2498(in\207xop)s 3227(object)s 1826 3620(pr)m 8(e\207xop)k 2680(object)s 1826 3287(object)m 2498(post\207xop)s 1826 3003(nopar)m 2(sop)k 1826 2670(liter)m 3(alwor)k 8(d)k 220 fnt35 1826 2371({)m 240 fnt83 1974 2376(object)m 220 fnt35 2646 2371(})m 240 fnt83 1826 2043(object)m 2498(object)s 240 fnt82 0 1248(where)m 240 fnt83 640 1250(in\207xop)m 240 fnt82 1285 1248(,)m 240 fnt83 1391 1250(pr)m 8(e\207xop)k 240 fnt82 2161 1248(,)m 240 fnt83 2267 1250(post\207xop)m 240 fnt82 3125 1248(,)m 3232(and)s 240 fnt83 3635 1250(nopar)m 2(sop)k 240 fnt82 4591 1248(are)m 4938(identi\207ers)s 5943(naming)s 6713(operators)s 7653(which)s 8294(tak)s 2(e)k 8745(0,)s 8971(1)s 0 960(or)m 255(2)s 424(parameters,)s 1573(as)s 1819(sho)s 6(wn,)k 2541(and)s 240 fnt83 2940 962(liter)m 3(alwor)k 8(d)k 240 fnt82 4067 960(is)m 4272(a)s 4433(sequence)s 5362(of)s 5628(non-space)s 6649(characters,)s 7719(or)s 7973(an)s 8251(arbitrary)s 0 672(sequence)m 969(of)s 1276(characters)s 2330(enclosed)s 3262(in)s 3541(double)s 4285(quotes.)s 5110(Ambiguities)s 6380(are)s 6763(resolv)s 3(ed)k 7664(by)s 7995(precedence)s 0 384(and)m 404(associati)s 6(vity)k 15(.)k grestore grestore grestore pgsave restore showpage %%Page: 4 5 %%BeginPageSetup %%PageResources: font Times-Roman %%+ font Helvetica %%+ font Times-Italic %%+ font Times-Bold /pgsave save def %%IncludeResource: font Helvetica /Helveticafnt35 vec2 /Helvetica LoutRecode /fnt35 { /Helveticafnt35 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave 0 0 translate 240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate 9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 0 LoutMargSet grestore 4348 13844(-)m 4476(4)s 4650(-)s 480 13256(The)m 941(last)s 1366(production)s 2494(allo)s 6(ws)k 3197(a)s 3397(meaning)s 4307(for)s 4679(e)s 3(xpressions)k 5877(such)s 6407(as)s 220 fnt35 6691 13253({})m 240 fnt82 6828 13256(,)m 6968(in)s 7245(which)s 7921(an)s 8238(object)s 8916(is)s 0 12968(missing.)m 907(The)s 1333(v)s 6(alue)k 1899(of)s 2168(this)s 240 fnt83 2562 12970(empty)m 3187(object)s 240 fnt82 3833 12968(is)m 4041(a)s 4205(rectangle)s 5135(of)s 5404(size)s 5829(0)s 6002(by)s 6294(0,)s 6519(with)s 6999(one)s 7399(column)s 8172(mark)s 8722(and)s 0 12680(one)m 402(ro)s 6(w)k 822(mark,)s 1420(that)s 1838(prints)s 2433(as)s 2683(nothing.)s 480 12306(The)m 938(second-last)s 2103(production)s 3227(generates)s 4210(sequences)s 5261(of)s 5562(arbitrary)s 6467(objects)s 7225(separated)s 8215(by)s 8539(white)s 0 12018(space,)m 671(called)s 240 fnt83 1333 12020(par)m 3(a)k 2(gr)k 3(aphs)k 240 fnt82 2439 12018(.)m 2636(Ignoring)s 3547(paragraph)s 4593(breaking)s 5517(for)s 5888(no)s 6(w)k 15(,)k 6421(the)s 6802(natural)s 7554(meaning)s 8464(is)s 8708(that)s 0 11730(the)m 361(tw)s 2(o)k 784(objects)s 1525(should)s 2235(appear)s 2946(side)s 3400(by)s 3707(side,)s 4212(and)s 4629(Lout')s 13(s)k 5305(parser)s 5961(accordingly)s 7157(interpolates)s 8335(an)s 8632(in\207x)s 0 11442(horizontal)m 1017(concatenation)s 2395(operator)s 3244(\(see)s 3677(belo)s 6(w\))k 4377(between)s 5224(them.)s 5859(This)s 6328(operator)s 7177(is)s 7380(associati)s 6(v)k 3(e,)k 8519(so)s 8778(the)s 0 11154(grammatical)m 1262(ambiguity)s 2301(does)s 2806(no)s 3113(harm.)s 3783(Ho)s 6(we)k 6(v)k 3(er)k 9(,)k 4758(the)s 5120(Algol-60)s 6054(rule)s 6496(that)s 6928(white)s 7530(space)s 8132(should)s 8844(be)s 0 10866(signi\207cant)m 1056(only)s 1536(as)s 1786(a)s 1952(separator)s 2887(is)s 3097(necessarily)s 4212(brok)s 2(en)k 4932(by)s 5226(Lout)s 5738(in)s 5981(just)s 6386(this)s 6782(one)s 7184(place.)s 480 10492(Algol-lik)m 2(e)k 1506(languages)s 2504(distinguish)s 3601(literal)s 4201(strings)s 4879(from)s 5393(identi\207ers)s 6389(by)s 6673(enclosing)s 7633(them)s 8161(in)s 8394(quotes,)s 0 10204(b)m 4(ut)k 372(literals)s 1082(are)s 1440(f)s 2(ar)k 1773(too)s 2143(frequent)s 3010(in)s 3264(document)s 4278(formatting)s 5350(for)s 5699(this)s 6106(to)s 6356(be)s 6649(viable.)s 7408(The)s 7847(con)s 9(v)k 3(entional)k 0 9916(solution)m 829(is)s 1041(to)s 1282(be)s 3(gin)k 1870(identi\207ers)s 2878(with)s 3362(a)s 3530(special)s 4250(character)s 9(,)k 5224(and)s 5630(Lout)s 6144(follo)s 6(ws)k 6908(Scribe)s 7576([7])s 7895(in)s 8140(using)s 8714(`@')s 0 9628(rather)m 616(than)s 1085(the)s 1433(`\\')s 1690(of)s 1961(trof)s 6(f)k 2450([8])s 2767(and)s 3171(T)s 3313 9580(E)m 3456 9628(X)m 3685([9].)s 480 9254(Ho)m 6(we)k 6(v)k 3(er)k 9(,)k 1447(Lout)s 1966(tak)s 2(es)k 2513(the)s 2868(unusual)s 3675(step)s 4120(of)s 4398(making)s 5176(an)s 5466(initial)s 6084(`@')s 6503(optional.)s 7458(The)s 7893(designers)s 8855(of)s 0 8966(Eqn)m 449(apparently)s 1519(considered)s 2620(such)s 3122(characters)s 4147(dis\207guring)s 5244(in)s 5494(\207ne-grained)s 6713(input)s 7272(lik)s 2(e)k 7691(equations,)s 8722(and)s 0 8678(this)m 401(author)s 1077(agrees.)s 1856(The)s 2289(implementation)s 3851(is)s 4066(straightforw)s 2(ard:)k 5707(`@')s 6124(is)s 6339(classed)s 7092(as)s 7347(just)s 7757(another)s 8539(letter)s 9(,)k 0 8390(and)m 407(e)s 6(v)k 3(ery)k 986(w)s 2(ord)k 1537(is)s 1750(searched)s 2647(for)s 2988(in)s 3234(the)s 3585(symbol)s 4348(table.)s 4979(If)s 5212(it)s 5407(is)s 5620(found,)s 6289(it)s 6484(is)s 6697(an)s 6983(identi\207er)s 9(,)k 7946(otherwise)s 8934(it)s 0 8102(is)m 214(a)s 384(literal.)s 1107(A)s 1341(w)s 2(arning)k 2181(message)s 3051(is)s 3265(printed)s 4004(when)s 4585(a)s 4755(literal)s 5369(be)s 3(ginning)k 6381(with)s 6867(`@')s 7284(is)s 7498(found,)s 8168(since)s 8719(it)s 8916(is)s 0 7814(probably)m 905(a)s 1071(mis-spelt)s 2006(identi\207er)s 13(.)k 3019(No)s 3365(such)s 3861(safety)s 4485(net)s 4837(is)s 5047(possible)s 5887(for)s 6225(identi\207ers)s 7231(without)s 8022(`@'.)s 480 7440(Equation)m 1418(formatting)s 2496(also)s 2951(demands)s 3871(symbols)s 4737(made)s 5328(from)s 5869(punctuation)s 7074(characters,)s 8165(such)s 8678(as)s 220 fnt35 8946 7437(+)m 240 fnt82 0 7152(and)m 220 fnt35 404 7149(<=)m 240 fnt82 652 7152(.)m 816(It)s 1021(is)s 1231(traditional)s 2267(to)s 2506(allo)s 6(w)k 3085(such)s 3581(symbols)s 4430(to)s 4669(be)s 4951(juxtaposed,)s 6095(which)s 6737(means)s 7399(that)s 7817(the)s 8165(input)s 220 fnt35 480 6702(<=++)m 240 fnt82 0 6251(for)m 354(e)s 3(xample)k 1234(must)s 1776(be)s 2075(interpreted)s 3184(within)s 3869(the)s 4234(le)s 3(xical)k 4939(analyser)s 5812(by)s 6123(searching)s 7109(the)s 7474(symbol)s 8251(table)s 8788(for)s 0 5963(its)m 306(pre\207x)s 3(es)k 1142(in)s 1416(the)s 1795(order)s 220 fnt35 2390 5960(<=++)m 240 fnt82 2894 5963(,)m 220 fnt35 3032 5960(<=+)m 240 fnt82 3408 5963(,)m 220 fnt35 3546 5960(<=)m 240 fnt82 3794 5963(.)m 3988(Although)s 4981(this)s 5408(tak)s 2(es)k 5979(quadratic)s 6952(time,)s 7514(in)s 7788(practice)s 8630(such)s 0 5675(sequences)m 1021(are)s 1368(too)s 1727(short)s 2265(to)s 2504(mak)s 2(e)k 3076(a)s 3242(more)s 3789(sophisticated)s 5095(linear)s 5698(method)s 6474(lik)s 2(e)k 6886(tries)s 7347(w)s 2(orthwhile.)k 240 fnt84 0 5026(2.3.)m 471(Basic)s 1073(structural)s 2149(operators)s 240 fnt82 480 4549(A)m 696(programming)s 2036(language)s 2941(may)s 3393(be)s 3660(considered)s 4739(complete)s 5656(when)s 6218(it)s 6395(attains)s 7054(the)s 7388(po)s 6(wer)k 8025(of)s 8281(a)s 8432(T)s 10(uring)k 0 4261(machine,)m 917(b)s 4(ut)k 1280(no)s 1574(such)s 2071(criterion)s 2937(seems)s 3573(rele)s 6(v)k 6(ant)k 4390(to)s 4630(document)s 5635(formatting.)s 6808(Instead,)s 7606(as)s 7857(the)s 8206(language)s 0 3973(de)m 6(v)k 3(elops)k 913(and)s 1338(ne)s 6(w)k 1806(applications)s 3033(are)s 3401(attempted,)s 4471(de\207ciencies)s 5670(are)s 6038(e)s 3(xposed)k 6899(and)s 7324(the)s 7693(operator)s 8570(set)s 8916(is)s 0 3685(re)m 6(vised)k 742(to)s 981(o)s 3(v)k 3(ercome)k 1974(them.)s 480 3311(Lout)m 1025(has)s 1429(a)s 1629(repertoire)s 2646(of)s 2950(23)s 3268(primiti)s 6(v)k 3(e)k 4224(operators)s 5198(\(Figure)s 5990(1\),)s 6390(which)s 7066(has)s 7470(pro)s 3(v)k 3(en)k 8220(adequate)s 0 3023(for)m 348(a)s 525(wide)s 1056(v)s 6(ariety)k 1778(of)s 2059(features,)s 2932(including)s 3899(equations,)s 4934(tables,)s 5609(and)s 6023(page)s 6542(layout,)s 7257(and)s 7672(so)s 7948(seems)s 8594(to)s 8844(be)s 0 2735(reasonably)m 1077(complete)s 1995(in)s 2225(this)s 2607(pragmatic)s 3602(sense.)s 4270(In)s 4513(this)s 4895(section)s 5616(we)s 5937(introduce)s 6883(the)s 7217(eight)s 7741(concatenation)s 0 2447(and)m 424(mark-hiding)s 1680(operators.)s 2754(T)s 19(o)k 3075(them)s 3634(f)s 2(alls)k 4114(the)s 4482(basic)s 5047(task)s 5514(of)s 5806(assembling)s 6956(comple)s 3(x)k 7853(objects)s 8602(from)s 0 2159(simple)m 693(ones,)s 1239(and)s 1643(the)s 3(y)k 2106(were)s 2626(the)s 2974(\207rst)s 3405(to)s 3644(be)s 3926(designed)s 4835(and)s 5239(implemented.)s 480 1785(Man)m 3(y)k 1094(of)s 1370(the)s 1723(operators)s 2668(of)s 2944(Eqn)s 3392(can)s 3786(be)s 4073(vie)s 6(wed)k 4821(as)s 5076(b)s 4(uilding)k 5928(small)s 6505(tables.)s 7231(A)s 7466(b)s 4(uilt-up)k 8277(fraction,)s 0 1497(for)m 367(e)s 3(xample,)k 1310(has)s 1710(one)s 2141(column)s 2945(and)s 3379(three)s 3941(ro)s 6(ws)k 4480(\(numerator)s 9(,)k 5669(line,)s 6163(and)s 6596(denominator\).)s 8078(Numerous)s 0 1209(in)m 9(v)k 3(estig)k 1(ations)k 1377(of)s 1660(this)s 2068(kind)s 2564(con)s 9(vinced)k 3609(the)s 3969(author)s 4652(that)s 5082(operators)s 6034(capable)s 6832(of)s 7115(assembling)s 8256(the)s 8616(ro)s 6(ws)k 0 921(and)m 404(columns)s 1266(of)s 1537(tables)s 2145(w)s 2(ould)k 2800(suf\207ce)s 3493(for)s 3831(b)s 4(uilding)k 4678(all)s 4971(kinds)s 5541(of)s 5812(objects.)s 480 547(The)m 906(simplest)s 1759(objects)s 2485(are)s 2829(empty)s 3479(objects)s 4204(and)s 4605(literal)s 5213(w)s 2(ords)k 5844(lik)s 2(e)k 220 fnt35 6254 544(metempsychosis)m 240 fnt82 7882 547(,)m 7986(which)s 8625(ha)s 4(v)k 3(e)k grestore grestore grestore pgsave restore showpage %%Page: 5 6 %%BeginPageSetup %%PageResources: font Times-Roman %%+ font Times-Italic %%+ font Helvetica %%+ font Times-Bold /pgsave save def %%IncludeResource: font Helvetica /Helveticafnt35 vec2 /Helvetica LoutRecode /fnt35 { /Helveticafnt35 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave 0 0 translate 240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate 9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 1 LoutMargSet grestore 4352 13841(-)m 4480(5)s 4646(-)s 240 fnt83 266 13217(object)m 220 fnt35 974 13212(/)m 240 fnt83 1038 13217(gap)m 1511(object)s 240 fnt82 3816 13215(V)m 26(ertical)k 4613(concatenation)s 5998(with)s 6480(mark)s 7032(alignment)s 240 fnt83 266 12929(object)m 220 fnt35 974 12924(//)m 240 fnt83 1099 12929(gap)m 1572(object)s 240 fnt82 3816 12927(V)m 26(ertical)k 4613(concatenation)s 5998(with)s 6480(left)s 6857(justi\207cation)s 240 fnt83 266 12641(object)m 220 fnt35 974 12636(|)m 240 fnt83 1011 12641(gap)m 1484(object)s 240 fnt82 3816 12639(Horizontal)m 4893(concatenation)s 6278(with)s 6760(mark)s 7312(alignment)s 240 fnt83 266 12353(object)m 220 fnt35 974 12348(||)m 240 fnt83 1068 12353(gap)m 1541(object)s 240 fnt82 3816 12351(Horizontal)m 4893(concatenation)s 6278(with)s 6760(top-justi\207cation)s 240 fnt83 266 12065(object)m 220 fnt35 974 12060(&)m 240 fnt83 1116 12065(gap)m 1589(object)s 240 fnt82 3816 12063(Horizontal)m 4893(concatenation)s 6278(within)s 6946(paragraphs)s 220 fnt35 266 11772(@OneCol)m 240 fnt83 1338 11777(object)m 240 fnt82 3816 11775(Hide)m 4337(all)s 4630(b)s 4(ut)k 4992(one)s 5394(column)s 6169(mark)s 6721(of)s 240 fnt83 6992 11777(object)m 220 fnt35 266 11484(@OneRo)m 3(w)k 240 fnt83 1457 11489(object)m 240 fnt82 3816 11487(Hide)m 4337(all)s 4630(b)s 4(ut)k 4992(one)s 5394(ro)s 6(w)k 5814(mark)s 6366(of)s 240 fnt83 6637 11489(object)m 266 11201(font)m 220 fnt35 762 11196(@F)m 6(ont)k 240 fnt83 1534 11201(object)m 240 fnt82 3816 11199(Render)m 240 fnt83 4567 11201(object)m 240 fnt82 5215 11199(in)m 5458(nominated)s 6526(font)s 240 fnt83 266 10913(br)m 8(eakstyle)k 220 fnt35 1353 10908(@Break)m 240 fnt83 2269 10913(object)m 240 fnt82 3816 10911(Break)m 4448(paragraphs)s 5548(of)s 240 fnt83 5819 10913(object)m 240 fnt82 6467 10911(in)m 6710(nominated)s 7778(style)s 240 fnt83 266 10625(spacestyle)m 220 fnt35 1361 10620(@Space)m 240 fnt83 2318 10625(object)m 240 fnt82 3816 10623(Render)m 4567(spaces)s 5242(between)s 6096(w)s 2(ords)k 6730(in)s 6973(nominated)s 8041(style)s 240 fnt83 266 10337(length)m 220 fnt35 979 10332(@Wide)m 240 fnt83 1813 10337(object)m 240 fnt82 3816 10335(Render)m 240 fnt83 4567 10337(object)m 240 fnt82 5215 10335(to)m 5454(width)s 240 fnt83 6056 10337(length)m 266 10049(length)m 220 fnt35 979 10044(@High)m 240 fnt83 1758 10049(object)m 240 fnt82 3816 10047(Render)m 240 fnt83 4567 10049(object)m 240 fnt82 5215 10047(to)m 5454(height)s 240 fnt83 6112 10049(length)m 220 fnt35 266 9756(@HExpand)m 240 fnt83 1499 9761(object)m 240 fnt82 3816 9759(Expand)m 4606(horizontal)s 5630(g)s 1(aps)k 6119(to)s 6358(\207ll)s 6678(a)s 4(v)k 6(ailable)k 7586(space)s 220 fnt35 266 9468(@VExpand)m 240 fnt83 1487 9473(object)m 240 fnt82 3816 9471(Expand)m 4606(v)s 3(ertical)k 5373(g)s 1(aps)k 5862(to)s 6101(\207ll)s 6421(a)s 4(v)k 6(ailable)k 7329(space)s 220 fnt35 266 9180(@HScale)m 240 fnt83 1307 9185(object)m 240 fnt82 3816 9183(Horizontal)m 4893(geometrical)s 6075(scaling)s 6805(to)s 7044(\207ll)s 7364(a)s 4(v)k 6(ailable)k 8272(space)s 220 fnt35 266 8892(@VScale)m 240 fnt83 1295 8897(object)m 240 fnt82 3816 8895(V)m 26(ertical)k 4613(geometrical)s 5795(scaling)s 6525(to)s 6764(\207ll)s 7084(a)s 4(v)k 6(ailable)k 7992(space)s 240 fnt83 266 8609(angle)m 220 fnt35 911 8604(@Rotate)m 240 fnt83 1892 8609(object)m 240 fnt82 3816 8607(Rotate)m 240 fnt83 4496 8609(object)m 240 fnt82 5144 8607(by)m 240 fnt83 5438 8609(angle)m 266 8321(P)m 19(ostScript)k 220 fnt35 1367 8316(@Gr)m 2(aphic)k 240 fnt83 2471 8321(object)m 240 fnt82 3816 8319(Escape)m 4549(to)s 4788(graphics)s 5649(language)s 220 fnt35 266 8028(@Ne)m 6(xt)k 240 fnt83 1050 8033(object)m 240 fnt82 3816 8031(Add)m 4287(1)s 4442(to)s 4681(an)s 4964(object)s 5608(denoting)s 6499(a)s 6665(number)s 240 fnt83 266 7745(object)m 220 fnt35 974 7740(@Case)m 240 fnt83 1821 7745(alternatives)m 240 fnt82 3816 7743(Select)m 4459(from)s 4983(a)s 5149(set)s 5474(of)s 5745(alternati)s 6(v)k 3(e)k 6799(objects)s 240 fnt83 266 7457(identi\207er)m 220 fnt35 1254 7452(&&)m 240 fnt83 1662 7457(object)m 240 fnt82 3816 7455(Cross)m 4412(reference)s 240 fnt83 266 7169(cr)m 10(oss-r)k 8(efer)k 8(ence)k 220 fnt35 1839 7164(@Open)m 240 fnt83 2705 7169(object)m 240 fnt82 3816 7167(Retrie)m 6(v)k 3(e)k 4672(v)s 6(alue)k 5240(from)s 5764(cross)s 6306(reference)s 240 fnt83 266 6881(cr)m 10(oss-r)k 8(efer)k 8(ence)k 220 fnt35 1839 6876(@T)m 26(agged)k 240 fnt83 2888 6881(object)m 240 fnt82 3816 6879(Attach)m 4510(cross)s 5052(referencing)s 6192(tag)s 6537(to)s 6776(object)s 200 fnt84 1346 6226(Figur)m 3(e)k 1954(1.)s 200 fnt82 2196 6227(The)m 2552(23)s 2789(primiti)s 5(v)k 3(e)k 3556(operators)s 4338(of)s 4564(Lout,)s 5030(in)s 5232(order)s 5702(of)s 5928(increasing)s 6789(precedence.)s 240 fnt82 0 5596(one)m 402(column)s 1177(mark)s 1729(and)s 2133(one)s 2535(ro)s 6(w)k 2955(mark:)s 1572 215 0 106 240 288 60 480 5090 LoutGr2 grestore save gsave 200 dict begin lfigdict begin grestore 1572 215 0 106 240 288 60 0 0 LoutGr2 /lfiglightgrey [ lfigbox ] gsave lfigpaintpath grestore 0.015 cm setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigbox ] lfigdopath pop pop grestore 1572 215 0 106 240 288 60 0 0 LoutGr2 0.015 cm setlinewidth lfiground setlinecap 0.15 cm /lfigdashed [ -0.3 cm ymark xsize ymark 0.3 cm 0 lfigpadd [] xmark -0.3 cm xmark ysize 0 0.3 cm lfigpadd ] lfigdopath pop pop grestore 0 52(metempsychosis)m grestore grestore end end restore grestore 0 4639(T)m 19(o)k 337(place)s 934(tw)s 2(o)k 1381(arbitrary)s 2294(objects)s 3059(side)s 3537(by)s 3868(side,)s 4398(we)s 4770(use)s 5182(the)s 5567(in\207x)s 6099(operator)s 220 fnt35 6992 4636(|)m 240 fnt82 7029 4639(,)m 7173(denoting)s 8102(horizontal)s 0 4351(concatenation.)m 1492(F)s 3(or)k 1881(e)s 3(xample,)k 220 fnt35 480 3850(USA |0.2i A)m 6(ustr)k 2(alia)k 240 fnt82 0 3395(produces)m 915(the)s 1263(object)s 476 166 0 57 240 288 60 480 2889 LoutGr2 grestore save gsave 200 dict begin lfigdict begin grestore 476 165 0 57 240 288 60 0 0 LoutGr2 /lfiglightgrey [ lfigbox ] gsave lfigpaintpath grestore 0.015 cm setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigbox ] lfigdopath pop pop grestore 476 165 0 57 240 288 60 0 0 LoutGr2 0.015 cm setlinewidth lfiground setlinecap 0.15 cm /lfigdashed [ -0.3 cm ymark xsize ymark 0.3 cm 0 lfigpadd [] xmark -0.3 cm xmark ysize 0 0.3 cm lfigpadd ] lfigdopath pop pop grestore 0 3(USA)m grestore grestore end end restore grestore 875 166 0 57 240 288 60 1244 2889 LoutGr2 grestore save gsave 200 dict begin lfigdict begin grestore 875 165 0 56 240 288 60 0 1 LoutGr2 /lfiglightgrey [ lfigbox ] gsave lfigpaintpath grestore 0.015 cm setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigbox ] lfigdopath pop pop grestore 875 165 0 56 240 288 60 0 0 LoutGr2 0.015 cm setlinewidth lfiground setlinecap 0.15 cm /lfigdashed [ -0.3 cm ymark xsize ymark 0.3 cm 0 lfigpadd [] xmark -0.3 cm xmark ysize 0 0.3 cm lfigpadd ] lfigdopath pop pop grestore 0 2(Australia)m grestore grestore end end restore grestore 0 2438(The)m 443(ro)s 6(w)k 879(marks)s 1529(are)s 1892(mer)s 4(ged)k 2678(into)s 3119(one,)s 3587(\207xing)s 4215(the)s 4579(v)s 3(ertical)k 5361(position)s 6205(of)s 6491(the)s 6855(objects)s 7598(relati)s 6(v)k 3(e)k 8376(to)s 8631(each)s 0 2150(other;)m 611(their)s 1116(horizontal)s 2148(separation)s 3196(is)s 3414(determined)s 4555(by)s 4857(the)s 240 fnt83 5214 2152(gap)m 240 fnt82 5635 2150(attached)m 6497(to)s 6744(the)s 7101(operator)s 9(,)k 8003(in)s 8254(this)s 8659(case)s 0 1862(0.2)m 361(inches.)s 1143(W)s 19(e)k 1519(think)s 2080(of)s 2358(the)s 2713(g)s 1(ap)k 3118(as)s 3376(part)s 3814(of)s 4092(the)s 4448(operator)s 9(,)k 5349(although)s 6251(strictly)s 6974(it)s 7174(is)s 7391(a)s 7564(third)s 8081(parameter)s 13(.)k 0 1574(It)m 205(may)s 671(be)s 953(omitted,)s 1790(def)s 2(aulting)k 2810(to)s 220 fnt35 3049 1571(0i)m 240 fnt82 3205 1574(.)m 240 fnt83 480 1202(V)m 26(ertical)k 1294(concatenation)s 240 fnt82 2644 1200(,)m 2762(denoted)s 3590(by)s 3895(the)s 4254(in\207x)s 4760(operator)s 220 fnt35 5627 1197(/)m 240 fnt82 5691 1200(,)m 5809(is)s 6031(the)s 6390(same)s 6948(apart)s 7497(from)s 8032(the)s 8392(change)s 0 912(of)m 271(direction:)s 220 fnt35 480 461(A)m 6(ustr)k 2(alia /0.1i USA)k grestore grestore grestore pgsave restore showpage %%Page: 6 7 %%BeginPageSetup %%PageResources: font Times-Roman %%+ font Helvetica %%+ font Times-Italic /pgsave save def %%IncludeResource: font Helvetica /Helveticafnt35 vec2 /Helvetica LoutRecode /fnt35 { /Helveticafnt35 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave 0 0 translate 240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate 9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 0 LoutMargSet grestore 4348 13842(-)m 4476(6)s 4649(-)s 0 13251(produces)m 915(the)s 1263(object)s 875 165 0 56 240 288 60 480 12746 LoutGr2 grestore save gsave 200 dict begin lfigdict begin grestore 875 165 0 56 240 288 60 0 0 LoutGr2 /lfiglightgrey [ lfigbox ] gsave lfigpaintpath grestore 0.015 cm setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigbox ] lfigdopath pop pop grestore 875 165 0 56 240 288 60 0 0 LoutGr2 0.015 cm setlinewidth lfiground setlinecap 0.15 cm /lfigdashed [ -0.3 cm ymark xsize ymark 0.3 cm 0 lfigpadd [] xmark -0.3 cm xmark ysize 0 0.3 cm lfigpadd ] lfigdopath pop pop grestore 0 2(Australia)m grestore grestore end end restore grestore 875 165 0 57 240 288 60 480 12437 LoutGr2 grestore save gsave 200 dict begin lfigdict begin grestore 476 165 0 57 240 288 60 0 0 LoutGr2 /lfiglightgrey [ lfigbox ] gsave lfigpaintpath grestore 0.015 cm setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigbox ] lfigdopath pop pop grestore 476 165 0 57 240 288 60 0 0 LoutGr2 0.015 cm setlinewidth lfiground setlinecap 0.15 cm /lfigdashed [ -0.3 cm ymark xsize ymark 0.3 cm 0 lfigpadd [] xmark -0.3 cm xmark ysize 0 0.3 cm lfigpadd ] lfigdopath pop pop grestore 0 3(USA)m grestore grestore end end restore grestore 0 11986(with)m 482(column)s 1257(marks)s 1892(mer)s 4(ged)k 2663(and)s 3067(a)s 3233(0.1)s 3568(inch)s 4037(g)s 1(ap.)k 480 11612(Consider)m 1404(no)s 6(w)k 1865(what)s 2390(happens)s 3226(when)s 3802(horizontal)s 4826(and)s 5230(v)s 3(ertical)k 5997(are)s 6344(combined:)s 220 fnt35 1000 11111({)m 1186(USA)s 2442(|0.2i)s 2958(A)s 6(ustr)k 2(alia)k 3919(})s 480 10823(/0.1i)m 1000({)s 1186(W)s 8(ashington)k 2442(|)s 2958(Canberr)s 2(a)k 3987(})s 240 fnt82 0 10324(The)m 445(tw)s 2(o)k 872(parameters)s 1987(of)s 220 fnt35 2275 10321(/)m 240 fnt82 2416 10324(no)m 6(w)k 2895(ha)s 4(v)k 3(e)k 3413(tw)s 2(o)k 3840(column)s 4632(marks)s 5284(each,)s 5846(and)s 6268(the)s 3(y)k 6748(will)s 7191(be)s 7490(mer)s 4(ged)k 8278(with)s 8778(the)s 0 10036(corresponding)m 1422(marks)s 2057(in)s 2300(the)s 2648(other)s 3199(parameter)s 9(,)k 4251(yielding)s 5088(the)s 5436(object)s 476 166 0 57 240 288 60 480 9530 LoutGr2 grestore save gsave 200 dict begin lfigdict begin grestore 476 165 0 57 240 288 60 0 0 LoutGr2 /lfiglightgrey [ lfigbox ] gsave lfigpaintpath grestore 0.015 cm setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigbox ] lfigdopath pop pop grestore 476 165 0 57 240 288 60 0 0 LoutGr2 0.015 cm setlinewidth lfiground setlinecap 0.15 cm /lfigdashed [ -0.3 cm ymark xsize ymark 0.3 cm 0 lfigpadd [] xmark -0.3 cm xmark ysize 0 0.3 cm lfigpadd ] lfigdopath pop pop grestore 0 3(USA)m grestore grestore end end restore grestore 659 166 0 57 240 288 60 956 9530 LoutGr2 0 ymark moveto xsize 10 pt add ymark lineto [ 3 pt ] 0 setdash stroke grestore grestore 876 166 0 57 240 288 60 1903 9530 LoutGr2 grestore save gsave 200 dict begin lfigdict begin grestore 875 165 0 56 240 288 60 0 1 LoutGr2 /lfiglightgrey [ lfigbox ] gsave lfigpaintpath grestore 0.015 cm setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigbox ] lfigdopath pop pop grestore 875 165 0 56 240 288 60 0 0 LoutGr2 0.015 cm setlinewidth lfiground setlinecap 0.15 cm /lfigdashed [ -0.3 cm ymark xsize ymark 0.3 cm 0 lfigpadd [] xmark -0.3 cm xmark ysize 0 0.3 cm lfigpadd ] lfigdopath pop pop grestore 0 2(Australia)m grestore grestore end end restore grestore 1135 215 0 106 240 288 60 480 9171 LoutGr2 grestore save gsave 200 dict begin lfigdict begin grestore 1135 215 0 106 240 288 60 0 0 LoutGr2 /lfiglightgrey [ lfigbox ] gsave lfigpaintpath grestore 0.015 cm setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigbox ] lfigdopath pop pop grestore 1135 215 0 106 240 288 60 0 0 LoutGr2 0.015 cm setlinewidth lfiground setlinecap 0.15 cm /lfigdashed [ -0.3 cm ymark xsize ymark 0.3 cm 0 lfigpadd [] xmark -0.3 cm xmark ysize 0 0.3 cm lfigpadd ] lfigdopath pop pop grestore 0 52(W)m 19(ashington)k grestore grestore end end restore grestore 876 215 0 106 240 288 60 1903 9171 LoutGr2 grestore save gsave 200 dict begin lfigdict begin grestore 876 166 0 57 240 288 60 0 49 LoutGr2 /lfiglightgrey [ lfigbox ] gsave lfigpaintpath grestore 0.015 cm setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigbox ] lfigdopath pop pop grestore 876 166 0 57 240 288 60 0 0 LoutGr2 0.015 cm setlinewidth lfiground setlinecap 0.15 cm /lfigdashed [ -0.3 cm ymark xsize ymark 0.3 cm 0 lfigpadd [] xmark -0.3 cm xmark ysize 0 0.3 cm lfigpadd ] lfigdopath pop pop grestore 0 3(Canberra)m grestore grestore end end restore grestore 0 8720(The)m 220 fnt35 425 8717(0.2i)m 240 fnt82 821 8720(g)m 1(ap)k 1216(separates)s 2139(columns,)s 3054(not)s 3416(indi)s 6(vidual)k 4432(items)s 4997(in)s 5237(columns,)s 6152(so)s 6414(a)s 6577(g)s 1(ap)k 6972(attached)s 7823(to)s 8059(the)s 8403(second)s 220 fnt35 0 8429(|)m 240 fnt82 96 8432(w)m 2(ould)k 749(serv)s 3(e)k 1304(no)s 1595(purpose;)s 2464(an)s 3(y)k 2859(such)s 3353(g)s 1(ap)k 3749(is)s 3957(ignored.)s 4851(If)s 5079(the)s 5425(number)s 6214(of)s 6484(marks)s 7117(to)s 7354(be)s 7634(mer)s 4(ged)k 8403(dif)s 6(fers,)k 0 8144(empty)m 638(columns)s 1485(are)s 1818(added)s 2433(at)s 2651(the)s 2984(right)s 3481(to)s 3705(equalize)s 4542(the)s 4876(number)s 13(.)k 5743(The)s 6157(four)s 6600(marks)s 7221(protruding)s 8269(from)s 8778(the)s 0 7856(result)m 601(are)s 959(all)s 1263(a)s 4(v)k 6(ailable)k 2182(for)s 2531(mer)s 4(ging)k 3389(with)s 3882(neighbouring)s 5223(marks)s 5869(by)s 6174(other)s 6736(concatenation)s 8133(operators.)s 0 7568(The)m 428(precedence)s 1559(of)s 220 fnt35 1830 7565(|)m 240 fnt82 1927 7568(is)m 2137(higher)s 2808(than)s 3277(the)s 3625(precedence)s 4756(of)s 220 fnt35 5027 7565(/)m 240 fnt82 5091 7568(,)m 5198(so)s 5464(the)s 5812(braces)s 6473(could)s 7063(be)s 7345(omitted.)s 480 7194(When)m 1131(lines)s 1656(of)s 1950(te)s 3(xt)k 2387(are)s 2757(concatenated,)s 4135(it)s 4349(is)s 4582(con)s 9(v)k 3(entional)k 5884(to)s 6145(measure)s 7020(their)s 7540(separation)s 8602(from)s 0 6906(baseline)m 832(to)s 1063(baseline)s 1894(\(mark)s 2517(to)s 2748(mark)s 3292(in)s 3527(Lout\),)s 4157(rather)s 4765(than)s 5226(from)s 5742(edge)s 6242(to)s 6473(edge)s 6973(as)s 7215(abo)s 3(v)k 3(e.)k 7937(This)s 8405(idea)s 8855(of)s 0 6618(dif)m 6(ferent)k 863(reference)s 1794(points)s 2417(for)s 2743(measurement)s 4065(e)s 6(v)k 4(olv)k 3(ed)k 4855(o)s 3(v)k 3(er)k 5322(the)s 5658(years)s 6200(into)s 6613(a)s 6767(system)s 7478(of)s 7737(six)s 240 fnt83 8059 6620(gap)m 8459(modes)s 240 fnt82 0 6330(\(Figure)m 769(2\),)s 1085(e)s 3(xpressed)k 2094(by)s 2398(appending)s 3460(a)s 3636(letter)s 4195(to)s 4445(the)s 4803(length.)s 5576(F)s 3(or)k 5975(e)s 3(xample,)k 220 fnt35 6899 6327(|0.2i)m 240 fnt82 7366 6330(is)m 7586(an)s 7880(abbre)s 6(viation)k 0 6042(for)m 220 fnt35 377 6039(|0.2ie)m 240 fnt82 901 6042(,)m 1047(meaning)s 1963(0.2)s 2356(inches)s 3057(measured)s 4070(from)s 4633(edge)s 5180(to)s 5458(edge;)s 220 fnt35 6061 6039(|0.3ix)m 240 fnt82 6678 6042(produces)m 7632(a)s 7837(0.3)s 8220(inch)s 8728(g)s 1(ap)k 0 5754(measured)m 972(from)s 1493(mark)s 2043(to)s 2279(mark)s 2829(and)s 3230(widened)s 4097(if)s 4311(necessary)s 5292(to)s 5528(pre)s 6(v)k 3(ent)k 6294(o)s 3(v)k 3(erstriking;)k 7552(and)s 220 fnt35 7954 5751(|2.5it)m 240 fnt82 8478 5754(places)m 0 5466(its)m 273(right)s 781(parameter)s 1792(2.5)s 2135(inches)s 2794(from)s 3314(the)s 3659(current)s 4392(left)s 4766(mar)s 4(gin,)k 5543(irrespecti)s 6(v)k 3(e)k 6699(of)s 6967(the)s 7312(position)s 8137(of)s 8405(the)s 8749(left)s 0 5178(parameter)m 13(.)k 1098(There)s 1704(is)s 1907(also)s 2338(a)s 2496(choice)s 3169(of)s 3433(ele)s 6(v)k 3(en)k 4098(units)s 4606(of)s 4870(measurement)s 6197(\(inches,)s 6987(centimetres,)s 8186(multiples)s 0 4890(of)m 288(the)s 654(current)s 1407(font)s 1870(size,)s 2365(etc.\),)s 2907(the)s 3272(most)s 3815(interesting)s 4894(being)s 5496(the)s 220 fnt35 5862 4887(r)m 240 fnt82 6012 4890(unit:)m 6568(one)s 220 fnt35 6987 4887(r)m 240 fnt82 7138 4890(is)m 7365(the)s 7731(column)s 8524(width)s 0 4602(minus)m 635(the)s 982(width)s 1583(of)s 1852(the)s 2199(follo)s 6(wing)k 3175(object,)s 3864(so)s 4129(that)s 220 fnt35 4546 4599(|1r)m -8(t)k 240 fnt82 4921 4602(produces)m 5835(suf\207cient)s 6783(space)s 7368(to)s 7606(right)s 8116(justify)s 8778(the)s 0 4314(follo)m 6(wing)k 987(object,)s 1688(and)s 220 fnt35 2103 4311(|0.5r)m -8(t)k 240 fnt82 2673 4314(to)m 2923(center)s 3576(it.)s 3883(These)s 4520(features)s 5337(implement)s 6429(spacings)s 7315(needed)s 8061(in)s 8315(practice)s 0 4026(rather)m 608(than)s 1069(suggested)s 2063(by)s 2349(theory)s 15(.)k 3101(The)s 3(y)k 3636(w)s 2(ork)k 4179(with)s 4653(all)s 4938(\207v)s 3(e)k 5342(concatenation)s 6719(operators,)s 7707(horizontal)s 8722(and)s 0 3738(v)m 3(ertical.)k 480 3364(When)m 1113(we)s 1452(construct)s 2392(a)s 2562(b)s 4(uilt-up)k 3372(fraction,)s 4225(the)s 4577(result)s 5171(has)s 5545(three)s 6082(ro)s 6(w)k 6506(marks,)s 7201(b)s 4(ut)k 7567(only)s 8051(the)s 8403(second)s 0 3076(should)m 697(be)s 979(visible)s 1672(outside)s 2419(the)s 2767(object:)s gsave 480 2245 translate 240 fnt83 156 491 0 288 240 288 12 LoutGraphic gsave grestore save gsave 200 dict begin lfigdict begin grestore 156 491 0 288 240 288 12 0 0 LoutGr2 /lfiglightgrey [ lfigbox ] gsave lfigpaintpath grestore 0.015 cm setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigbox ] lfigdopath pop pop grestore 156 491 0 288 240 288 12 0 0 LoutGr2 0.015 cm setlinewidth lfiground setlinecap 0.15 cm /lfigdashed [ -0.3 cm ymark xsize ymark 0.3 cm 0 lfigpadd [] xmark -0.3 cm xmark ysize 0 0.3 cm lfigpadd ] lfigdopath pop pop grestore 0 336(X)m 156 0 0 0 240 288 12 0 288 LoutGr2 0 0 moveto xsize 0 lineto 0.05 ft setlinewidth stroke grestore grestore 2 68(Y)m grestore grestore end end restore grestore 0 1794(This)m 493(is)s 721(a)s 905(common)s 1817(problem,)s 2739(and)s 3161(accordingly)s 4361(a)s 220 fnt35 4545 1791(@OneRo)m 3(w)k 240 fnt82 5694 1794(operator)m 6567(w)s 2(as)k 7006(introduced)s 8105(for)s 8461(hiding)s 0 1506(all)m 291(b)s 4(ut)k 650(one)s 1050(of)s 1318(the)s 1663(ro)s 6(w)k 2081(marks)s 2713(of)s 2981(its)s 3255(parameter)s 13(.)k 4357(Normally)s 15(,)k 5363(the)s 5708(\207rst)s 6136(mark)s 6686(is)s 6893(the)s 7238(survi)s 6(v)k 4(or)k 9(,)k 8121(b)s 4(ut)k 8480(a)s 8643(later)s 0 1218(mark)m 552(can)s 941(be)s 1223(chosen)s 1945(by)s 2239(pre\207xing)s 220 fnt35 3156 1215(^)m 240 fnt82 3322 1218(to)m 3561(the)s 3909(preceding)s 4905(concatenation)s 6290(operator:)s 220 fnt35 480 717(@OneRo)m 3(w { X ^/2p @HLine /2p )k 19(Y })k grestore grestore grestore pgsave restore showpage %%Page: 7 8 %%BeginPageSetup %%PageResources: font Times-Roman %%+ font Helvetica %%+ font Times-Italic %%+ font Symbol %%+ font Times-Bold /pgsave save def %%IncludeResource: font Helvetica /Helveticafnt35 vec2 /Helvetica LoutRecode /fnt35 { /Helveticafnt35 LoutFont } def %%IncludeResource: font Symbol /fnt78 { /Symbol LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave 0 0 translate 240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate 9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 1 LoutMargSet grestore 4351 13848(-)m 4479(7)s 4647(-)s 6693 8221 0 8221 240 288 60 1186 5201 LoutGr2 grestore save gsave 200 dict begin lfigdict begin grestore 0 7447(Edge-to-edge)m 220 fnt35 1786 7444(|)m 240 fnt83 1843 7449(length)m 220 fnt35 2456 7444(e)m 240 fnt82 0 6238(Hyphenation)m 220 fnt35 1786 6235(|)m 240 fnt83 1843 6240(length)m 220 fnt35 2456 6235(h)m 240 fnt82 0 5029(Ov)m 3(erstrik)k 2(e)k 220 fnt35 1786 5026(|)m 240 fnt83 1843 5031(length)m 220 fnt35 2456 5026(o)m 240 fnt82 0 3820(Mark-to-mark)m 220 fnt35 1786 3817(|)m 240 fnt83 1843 3822(length)m 220 fnt35 2456 3817(x)m 240 fnt82 0 2611(K)m 6(erning)k 220 fnt35 1786 2608(|)m 240 fnt83 1843 2613(length)m 220 fnt35 2456 2608(k)m 240 fnt82 0 1402(T)m 19(ab)k 4(ulation)k 220 fnt35 1786 1399(|)m 240 fnt83 1843 1404(length)m 220 fnt35 2456 1399(t)m gsave 3291 0 translate 240 fnt82 3402 8221 0 8221 240 288 60 LoutGraphic gsave 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigbox ] lfigdopath pop pop grestore gsave 567 7485 translate 180 fnt82 680 340 0 340 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath gsave 0.9 setgray fill grestore stroke grestore grestore gsave 680 7371 translate 180 fnt82 2722 567 0 567 180 288 45 LoutGraphic gsave 0 0 moveto 0 ysize lineto [ 3 pt ] 0 setdash stroke grestore grestore gsave 2268 7485 translate 180 fnt82 680 340 0 340 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath gsave 0.9 setgray fill grestore stroke grestore grestore gsave 2551 7371 translate 180 fnt82 851 567 0 567 180 288 45 LoutGraphic gsave 0 0 moveto 0 ysize lineto [ 3 pt ] 0 setdash stroke grestore grestore gsave 2267 7395 translate 180.0000 rotate gsave 0 0 translate 30.0000 rotate gsave 0 0 translate 180 fnt82 68 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore grestore gsave 0 0 translate 180 fnt82 1020 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore gsave 0 0 translate -30.0000 rotate gsave 0 0 translate 180 fnt82 68 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore grestore grestore gsave 1247 7395 translate 30.0000 rotate gsave 0 0 translate 180 fnt82 68 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore grestore gsave 1247 7395 translate 180 fnt82 1020 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore gsave 1247 7395 translate -30.0000 rotate gsave 0 0 translate 180 fnt82 68 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore grestore 180 fnt83 1534 7192(length)m gsave 567 6304 translate 180 fnt82 680 340 0 340 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath gsave 0.9 setgray fill grestore stroke grestore grestore gsave 680 6190 translate 180 fnt82 2722 567 0 567 180 288 45 LoutGraphic gsave 0 0 moveto 0 ysize lineto [ 3 pt ] 0 setdash stroke grestore grestore gsave 2268 6304 translate 180 fnt82 680 340 0 340 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath gsave 0.9 setgray fill grestore stroke grestore grestore gsave 2551 6190 translate 180 fnt82 851 567 0 567 180 288 45 LoutGraphic gsave 0 0 moveto 0 ysize lineto [ 3 pt ] 0 setdash stroke grestore grestore gsave 2267 6214 translate 180.0000 rotate gsave 0 0 translate 30.0000 rotate gsave 0 0 translate 180 fnt82 68 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore grestore gsave 0 0 translate 180 fnt82 1020 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore gsave 0 0 translate -30.0000 rotate gsave 0 0 translate 180 fnt82 68 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore grestore grestore gsave 1247 6214 translate 30.0000 rotate gsave 0 0 translate 180 fnt82 68 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore grestore gsave 1247 6214 translate 180 fnt82 1020 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore gsave 1247 6214 translate -30.0000 rotate gsave 0 0 translate 180 fnt82 68 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore grestore 1534 6011(length)m gsave 567 5123 translate 180 fnt82 680 340 0 340 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath gsave 0.9 setgray fill grestore stroke grestore grestore gsave 680 5009 translate 180 fnt82 2722 567 0 567 180 288 45 LoutGraphic gsave 0 0 moveto 0 ysize lineto [ 3 pt ] 0 setdash stroke grestore grestore gsave 2268 5123 translate 180 fnt82 680 340 0 340 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath gsave 0.9 setgray fill grestore stroke grestore grestore gsave 2551 5009 translate 180 fnt82 851 567 0 567 180 288 45 LoutGraphic gsave 0 0 moveto 0 ysize lineto [ 3 pt ] 0 setdash stroke grestore grestore gsave 2551 4976 translate 180.0000 rotate gsave 0 0 translate 30.0000 rotate gsave 0 0 translate 180 fnt82 68 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore grestore gsave 0 0 translate 180 fnt82 1871 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore gsave 0 0 translate -30.0000 rotate gsave 0 0 translate 180 fnt82 68 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore grestore grestore gsave 680 4976 translate 30.0000 rotate gsave 0 0 translate 180 fnt82 68 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore grestore gsave 680 4976 translate 180 fnt82 1871 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore gsave 680 4976 translate -30.0000 rotate gsave 0 0 translate 180 fnt82 68 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore grestore 1392 4774(length)m gsave 567 3886 translate 180 fnt82 680 340 0 340 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath gsave 0.9 setgray fill grestore stroke grestore grestore gsave 680 3772 translate 180 fnt82 2722 567 0 567 180 288 45 LoutGraphic gsave 0 0 moveto 0 ysize lineto [ 3 pt ] 0 setdash stroke grestore grestore gsave 2268 3886 translate 180 fnt82 680 340 0 340 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath gsave 0.9 setgray fill grestore stroke grestore grestore gsave 2551 3772 translate 180 fnt82 851 567 0 567 180 288 45 LoutGraphic gsave 0 0 moveto 0 ysize lineto [ 3 pt ] 0 setdash stroke grestore grestore gsave 2551 3739 translate 180.0000 rotate gsave 0 0 translate 30.0000 rotate gsave 0 0 translate 180 fnt82 68 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore grestore gsave 0 0 translate 180 fnt82 1871 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore gsave 0 0 translate -30.0000 rotate gsave 0 0 translate 180 fnt82 68 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore grestore grestore gsave 680 3739 translate 30.0000 rotate gsave 0 0 translate 180 fnt82 68 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore grestore gsave 680 3739 translate 180 fnt82 1871 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore gsave 680 3739 translate -30.0000 rotate gsave 0 0 translate 180 fnt82 68 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore grestore 180 fnt82 941 3536(max)m 180 fnt78 1256 3531(\()m 180 fnt83 1319 3537(length)m 180 fnt78 1774 3531(,)m 180 fnt83 1854 3537(a)m 180 fnt78 1994 3531(+)m 180 fnt83 2145 3537(b)m 180 fnt78 2240 3531(\))m gsave 1247 4363 translate 180.0000 rotate gsave 0 0 translate 30.0000 rotate gsave 0 0 translate 180 fnt82 68 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore grestore gsave 0 0 translate 180 fnt82 567 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore gsave 0 0 translate -30.0000 rotate gsave 0 0 translate 180 fnt82 68 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore grestore grestore gsave 680 4363 translate 30.0000 rotate gsave 0 0 translate 180 fnt82 68 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore grestore gsave 680 4363 translate 180 fnt82 567 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore gsave 680 4363 translate -30.0000 rotate gsave 0 0 translate 180 fnt82 68 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore grestore 180 fnt83 920 4431(a)m gsave 2551 4363 translate 180.0000 rotate gsave 0 0 translate 30.0000 rotate gsave 0 0 translate 180 fnt82 68 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore grestore gsave 0 0 translate 180 fnt82 283 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore gsave 0 0 translate -30.0000 rotate gsave 0 0 translate 180 fnt82 68 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore grestore grestore gsave 2268 4363 translate 30.0000 rotate gsave 0 0 translate 180 fnt82 68 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore grestore gsave 2268 4363 translate 180 fnt82 283 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore gsave 2268 4363 translate -30.0000 rotate gsave 0 0 translate 180 fnt82 68 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore grestore 2366 4387(b)m gsave 567 2590 translate 180 fnt82 680 340 0 340 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath gsave 0.9 setgray fill grestore stroke grestore grestore gsave 680 2476 translate 180 fnt82 2722 567 0 567 180 288 45 LoutGraphic gsave 0 0 moveto 0 ysize lineto [ 3 pt ] 0 setdash stroke grestore grestore gsave 2268 2590 translate 180 fnt82 680 340 0 340 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath gsave 0.9 setgray fill grestore stroke grestore grestore gsave 2551 2476 translate 180 fnt82 851 567 0 567 180 288 45 LoutGraphic gsave 0 0 moveto 0 ysize lineto [ 3 pt ] 0 setdash stroke grestore grestore gsave 2551 2443 translate 180.0000 rotate gsave 0 0 translate 30.0000 rotate gsave 0 0 translate 180 fnt82 68 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore grestore gsave 0 0 translate 180 fnt82 1871 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore gsave 0 0 translate -30.0000 rotate gsave 0 0 translate 180 fnt82 68 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore grestore grestore gsave 680 2443 translate 30.0000 rotate gsave 0 0 translate 180 fnt82 68 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore grestore gsave 680 2443 translate 180 fnt82 1871 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore gsave 680 2443 translate -30.0000 rotate gsave 0 0 translate 180 fnt82 68 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore grestore 180 fnt82 999 2240(max)m 180 fnt78 1314 2235(\()m 180 fnt83 1377 2241(length)m 180 fnt78 1832 2235(,)m 180 fnt83 1912 2241(a)m 180 fnt78 2007 2235(,)m 180 fnt83 2087 2241(b)m 180 fnt78 2182 2235(\))m gsave 1247 3067 translate 180.0000 rotate gsave 0 0 translate 30.0000 rotate gsave 0 0 translate 180 fnt82 68 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore grestore gsave 0 0 translate 180 fnt82 567 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore gsave 0 0 translate -30.0000 rotate gsave 0 0 translate 180 fnt82 68 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore grestore grestore gsave 680 3067 translate 30.0000 rotate gsave 0 0 translate 180 fnt82 68 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore grestore gsave 680 3067 translate 180 fnt82 567 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore gsave 680 3067 translate -30.0000 rotate gsave 0 0 translate 180 fnt82 68 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore grestore 180 fnt83 920 3135(a)m gsave 2551 3067 translate 180.0000 rotate gsave 0 0 translate 30.0000 rotate gsave 0 0 translate 180 fnt82 68 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore grestore gsave 0 0 translate 180 fnt82 283 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore gsave 0 0 translate -30.0000 rotate gsave 0 0 translate 180 fnt82 68 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore grestore grestore gsave 2268 3067 translate 30.0000 rotate gsave 0 0 translate 180 fnt82 68 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore grestore gsave 2268 3067 translate 180 fnt82 283 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore gsave 2268 3067 translate -30.0000 rotate gsave 0 0 translate 180 fnt82 68 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore grestore 2366 3091(b)m gsave 567 1438 translate 180 fnt82 680 340 0 340 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath gsave 0.9 setgray fill grestore stroke grestore grestore gsave 680 1324 translate 180 fnt82 2722 567 0 567 180 288 45 LoutGraphic gsave 0 0 moveto 0 ysize lineto [ 3 pt ] 0 setdash stroke grestore grestore gsave 2268 1438 translate 180 fnt82 680 340 0 340 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath gsave 0.9 setgray fill grestore stroke grestore grestore gsave 2551 1324 translate 180 fnt82 851 567 0 567 180 288 45 LoutGraphic gsave 0 0 moveto 0 ysize lineto [ 3 pt ] 0 setdash stroke grestore grestore gsave 2268 1234 translate 180.0000 rotate gsave 0 0 translate 30.0000 rotate gsave 0 0 translate 180 fnt82 68 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore grestore gsave 0 0 translate 180 fnt82 2268 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore gsave 0 0 translate -30.0000 rotate gsave 0 0 translate 180 fnt82 68 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore grestore grestore gsave 0 1234 translate 30.0000 rotate gsave 0 0 translate 180 fnt82 68 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore grestore gsave 0 1234 translate 180 fnt82 2268 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore gsave 0 1234 translate -30.0000 rotate gsave 0 0 translate 180 fnt82 68 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore grestore 1587 1032(length)m gsave 3402 734 translate 180.0000 rotate gsave 0 0 translate 30.0000 rotate gsave 0 0 translate 180 fnt82 68 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore grestore gsave 0 0 translate 180 fnt82 3402 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore gsave 0 0 translate -30.0000 rotate gsave 0 0 translate 180 fnt82 68 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore grestore grestore gsave 0 734 translate 30.0000 rotate gsave 0 0 translate 180 fnt82 68 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore grestore gsave 0 734 translate 180 fnt82 3402 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore gsave 0 734 translate -30.0000 rotate gsave 0 0 translate 180 fnt82 68 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore grestore 1189 523(curr)m 6(ent)k 1759(bound)s grestore end end restore grestore 200 fnt84 180 4638(Figur)m 3(e)k 788(2.)s 200 fnt82 1030 4639(The)m 1386(six)s 1664(g)s 1(ap)k 1995(modes)s 2557(\()s 200 fnt83 2618 4640(length)m 200 fnt82 3162 4639(is)m 3336(an)s 3(y)k 3666(length\).)s 4367(Hyphenation)s 5444(mode)s 5933(has)s 6240(an)s 6475(e)s 3(xtra)k 6919(property)s 7639(not)s 7944(sho)s 5(wn)k 8507(here.)s 240 fnt82 0 4008(has)m 396(the)s 770(desired)s 1545(result,)s 2208(where)s 220 fnt35 2874 4005(2p)m 240 fnt82 3197 4008(is)m 3433(tw)s 2(o)k 3870(points)s 4532(and)s 220 fnt35 4962 4005(@HLine)m 240 fnt82 5836 4008(is)m 6072(an)s 6381(easy)s 6887(combination)s 8166(of)s 8464(Lout')s 13(s)k 0 3720(graphics)m 861(operators.)s 1914(A)s 2144(similar)s 2866(operator)s 9(,)k 220 fnt35 3760 3717(@OneCol)m 240 fnt82 4712 3720(,)m 4819(hides)s 5375(column)s 6150(marks.)s 480 3346(A)m 728(v)s 6(ariant)k 1463(of)s 220 fnt35 1753 3343(/)m 240 fnt82 1895 3346(called)m 220 fnt35 2542 3343(//)m 240 fnt82 2745 3346(is)m 2974(pro)s 3(vided)k 3898(which)s 4558(performs)s 5490(v)s 3(ertical)k 6275(concatenation)s 7679(b)s 4(ut)k 8059(ignores)s 8833(all)s 0 3058(column)m 775(marks)s 1410(and)s 1814(simply)s 2519(left-justi\207es)s 3709(its)s 3985(tw)s 2(o)k 4395(parameters:)s 220 fnt35 480 2557(Heading //0.1i)m 480 2269(A |0.2i B /0.1i)m 480 1981(C | D)m 240 fnt82 0 1526(has)m 370(result)s 480 1073(Heading)m 480 716(A)m 938(B)s 480 410(C)m 938(D)s grestore grestore grestore pgsave restore showpage %%Page: 8 9 %%BeginPageSetup %%PageResources: font Times-Roman %%+ font Helvetica %%+ font Times-Bold %%+ font Times-Italic %%+ font Symbol /pgsave save def %%IncludeResource: font Helvetica /Helveticafnt35 vec2 /Helvetica LoutRecode /fnt35 { /Helveticafnt35 LoutFont } def %%IncludeResource: font Symbol /fnt78 { /Symbol LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave 0 0 translate 240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate 9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 0 LoutMargSet grestore 4351 13844(-)m 4479(8)s 4646(-)s 0 13253(sho)m 6(wing)k 883(that)s 1325(spanning)s 2267(columns)s 3153(in)s 3420(tables)s 4052(moti)s 6(v)k 6(ate)k 4956(the)s 5328(inclusion)s 6286(of)s 6581(this)s 7001(operator)s 13(.)k 7972(There)s 8609(is)s 8843(an)s 0 12965(analogous)m 220 fnt35 1029 12962(||)m 240 fnt82 1191 12965(operator)m 13(.)k 2145(The)s 2581(author)s 3259(w)s 2(ould)k 3922(ha)s 4(v)k 3(e)k 4430(preferred)s 5370(to)s 5616(lea)s 4(v)k 3(e)k 6177(out)s 6550(these)s 7105(operators,)s 8108(since)s 8663(the)s 3(y)k 0 12677(complicate)m 1104(the)s 1452(implementation,)s 3059(and)s 3463(it)s 3655(is)s 3865(interesting)s 4926(to)s 5165(e)s 3(xamine)k 6028(the)s 6376(prospects)s 7330(of)s 7601(doing)s 8200(so.)s 480 12303(The)m 220 fnt35 953 12300(//)m 240 fnt82 1184 12303(operator)m 2086(is)s 2342(formally)s 3263(redundant,)s 4373(because)s 5232(in)s 5521(general)s 6324(the)s 6718(e)s 3(xpression)k 220 fnt35 7841 12300(x // y)m 240 fnt82 8409 12303(can)m 8844(be)s 0 12015(replaced)m 867(by)s 220 fnt35 480 11514(@OneCol { | x } /)m 480 11226(@OneCol { | y })m 240 fnt82 0 10728(for)m 338(an)s 3(y)k 734(objects)s 220 fnt35 1462 10725(x)m 240 fnt82 1629 10728(and)m 220 fnt35 2032 10725(y)m 240 fnt82 2140 10728(.)m 2304(By)s 2637(concatenating)s 4017(an)s 4300(empty)s 4951(object)s 5594(at)s 5826(the)s 6173(left)s 6549(of)s 220 fnt35 6820 10725(x)m 240 fnt82 6987 10728(and)m 7390(hiding)s 8055(all)s 8347(b)s 4(ut)k 8708(that)s 0 10440(empty)m 641(object')s 13(s)k 1423(column)s 2186(mark,)s 2772(we)s 3095(ef)s 6(fecti)k 6(v)k 3(ely)k 4143(shift)s 220 fnt35 4615 10437(x)m 240 fnt82 4723 10440(')m 13(s)k 4921(column)s 5684(mark)s 6224(to)s 6452(its)s 6716(left)s 7081(edge.)s 7685(The)s 8101(same)s 8636(goes)s 0 10152(for)m 220 fnt35 349 10149(y)m 240 fnt82 457 10152(,)m 575(so)s 852(the)s 220 fnt35 1211 10149(/)m 240 fnt82 1347 10152(operator)m 2214(has)s 2595(just)s 3011(one)s 3424(column)s 4211(mark)s 4774(to)s 5024(mer)s 4(ge,)k 5735(at)s 5978(the)s 6338(e)s 3(xtreme)k 7171(left,)s 7606(and)s 8021(its)s 8308(ef)s 6(fect)k 8916(is)s 0 9864(indistinguishable)m 1690(from)s 220 fnt35 2214 9861(//)m 240 fnt82 2339 9864(.)m 480 9490(Unfortunately)m 15(,)k 1915(if)s 220 fnt35 2134 9487(y)m 240 fnt82 2304 9490(consists)m 3114(of)s 3387(tw)s 2(o)k 3799(ro)s 6(ws)k 4311(separated)s 5274(by)s 220 fnt35 5570 9487(/)m 240 fnt82 5634 9490(,)m 5743(as)s 5995(in)s 6240(the)s 6590(e)s 3(xample)k 7455(abo)s 3(v)k 3(e,)k 8130(both)s 8616(ro)s 6(ws)k 0 9202(must)m 533(be)s 823(placed)s 1513(inside)s 2148(the)s 220 fnt35 2504 9199(@OneCol)m 240 fnt82 3456 9202(,)m 3571(and)s 3983(the)s 4340(table)s 4868(cannot)s 5574(be)s 5864(entered)s 6633(in)s 6884(the)s 7240(simple)s 7942(ro)s 6(w-by-ro)k 6(w)k 0 8914(manner)m 777(that)s 1194(non-e)s 3(xpert)k 2287(users)s 2828(naturally)s 3731(e)s 3(xpect.)k 4515(Another)s 5359(adv)s 6(antage)k 6378(of)s 220 fnt35 6649 8911(//)m 240 fnt82 6833 8914(is)m 7043(that)s 7460(its)s 7736(left)s 8112(parameter)s 0 8626(can)m 382(be)s 657(printed)s 1385(before)s 2044(its)s 2313(right)s 2817(parameter)s 3824(is)s 4027(kno)s 6(wn;)k 4779(this)s 5168(is)s 5371(important)s 6353(when)s 6922(the)s 7263(left)s 7633(parameter)s 8640(is)s 8843(an)s 0 8338(entire)m 599(page.)s 480 7964(The)m 960(\207fth)s 1468(and)s 1924(\207nal)s 2457(concatenation)s 3895(operator)s 9(,)k 220 fnt35 4841 7961(&)m 240 fnt82 4983 7964(,)m 5143(is)s 5405(an)s 5741(e)s 3(xplicit)k 6567(v)s 3(ersion)k 7377(of)s 7701(the)s 8102(horizontal)s 0 7676(concatenation)m 1402(operator)s 2275(interpolated)s 3492(when)s 4085(objects)s 4830(are)s 5195(separated)s 6172(by)s 6483(white)s 7088(space.)s 7800(It)s 8022(is)s 8250(formally)s 0 7388(identical)m 907(to)s 220 fnt35 1177 7385(|)m 240 fnt82 1305 7388(e)m 3(xcept)k 2017(for)s 2386(taking)s 3068(higher)s 3770(precedence)s 4932(and)s 5367(being)s 5983(subject)s 6751(to)s 7021(replacement)s 8279(by)s 220 fnt35 8604 7385(//1vx)m 240 fnt82 0 7100(during)m 678(paragraph)s 1691(breaking)s 2581(\(Section)s 3434(2.5\).)s 240 fnt84 0 6451(2.4.)m 471(Implementation)s 2159(of)s 2431(objects)s 3201(and)s 3642(concatenation)s 240 fnt82 480 5974(In)m 738(this)s 1136(section)s 1872(we)s 2210(discuss)s 2954(the)s 3304(implementation)s 4863(of)s 5137(objects)s 5867(and)s 6273(concatenation,)s 7710(and)s 8117(especially)s 0 5686(mark)m 552(alignment.)s 1672(The)s 2100(\207rst)s 2531(step)s 2969(is)s 3179(to)s 3418(use)s 3793(an)s 4076(operator)s 4932(precedence)s 6063(parser)s 6706(to)s 6945(con)s 9(v)k 3(ert)k 7710(input)s 8262(such)s 8758(as)s 220 fnt35 480 5185(a |0.5i b /0.2i c | d)m 240 fnt82 0 4730(into)m 425(parse)s 985(trees)s 1486(such)s 1982(as)s gsave 480 3036 translate 240 fnt83 3396 1354 0 1298 240 288 12 LoutGraphic gsave grestore save gsave 200 dict begin lfigdict begin grestore 1867 338 56 282 240 288 12 1529 1016 LoutGr2 currentdict end 200 dict begin begin grestore 338 338 56 282 240 288 12 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore 192 fnt78 136 106(\244)m grestore (T) lfigpromotelabels grestore 1413 846 0 790 240 288 12 0 0 LoutGr2 currentdict end 200 dict begin begin grestore 876 338 56 282 240 288 12 537 508 LoutGr2 currentdict end 200 dict begin begin grestore 338 338 56 282 240 288 12 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore 192 fnt78 156 121(|)m grestore (T) lfigpromotelabels grestore 338 338 56 282 240 288 12 0 0 LoutGr2 currentdict end 200 dict begin begin grestore 338 338 56 282 240 288 12 0 0 LoutGr2 currentdict end 200 dict begin begin grestore 338 338 56 282 240 288 12 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore 192 fnt83 123 128(a)m grestore (T) lfigpromotelabels grestore (S) lfigpromotelabels grestore 0 0 0 0 240 288 12 338 282 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath pop pop grestore grestore 511 338 56 282 240 288 12 451 0 LoutGr2 currentdict end 200 dict begin begin grestore 511 338 56 282 240 288 12 0 0 LoutGr2 currentdict end 200 dict begin begin grestore 511 338 56 282 240 288 12 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigellipse ] lfigdopath pop pop grestore 192 fnt78 56 105(0)m 192 fnt83 195 111(.)m 192 fnt78 270 105(5)m 192 fnt83 404 111(i)m grestore (T) lfigpromotelabels grestore (S) lfigpromotelabels grestore 0 0 0 0 240 288 12 962 282 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath pop pop grestore grestore 338 338 56 282 240 288 12 1075 0 LoutGr2 currentdict end 200 dict begin begin grestore 338 338 56 282 240 288 12 0 0 LoutGr2 currentdict end 200 dict begin begin grestore 338 338 56 282 240 288 12 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore 192 fnt83 123 105(b)m grestore (T) lfigpromotelabels grestore (S) lfigpromotelabels grestore 0 0 0 0 240 288 12 1413 282 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath pop pop grestore grestore (S) lfigpromotelabels grestore 0 0 0 0 240 288 12 1413 790 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath pop pop grestore grestore 517 846 56 790 240 288 12 1526 0 LoutGr2 currentdict end 200 dict begin begin grestore 517 846 56 790 240 288 12 0 0 LoutGr2 currentdict end 200 dict begin begin grestore 517 338 56 282 240 288 12 0 508 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigellipse ] lfigdopath pop pop grestore 192 fnt78 56 105(0)m 192 fnt83 195 111(.)m 192 fnt78 270 105(2)m 192 fnt83 410 111(i)m grestore (T) lfigpromotelabels grestore (S) lfigpromotelabels grestore 0 0 0 0 240 288 12 2043 790 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath pop pop grestore grestore 1240 846 0 790 240 288 12 2156 0 LoutGr2 currentdict end 200 dict begin begin grestore 789 338 56 282 240 288 12 451 508 LoutGr2 currentdict end 200 dict begin begin grestore 338 338 56 282 240 288 12 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore 192 fnt78 156 121(|)m grestore (T) lfigpromotelabels grestore 338 338 56 282 240 288 12 0 0 LoutGr2 currentdict end 200 dict begin begin grestore 338 338 56 282 240 288 12 0 0 LoutGr2 currentdict end 200 dict begin begin grestore 338 338 56 282 240 288 12 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore 192 fnt83 128 128(c)m grestore (T) lfigpromotelabels grestore (S) lfigpromotelabels grestore 0 0 0 0 240 288 12 338 282 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath pop pop grestore grestore 338 338 56 282 240 288 12 451 0 LoutGr2 currentdict end 200 dict begin begin grestore 338 338 56 282 240 288 12 0 0 LoutGr2 currentdict end 200 dict begin begin grestore 338 338 56 282 240 288 12 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore grestore (T) lfigpromotelabels grestore (S) lfigpromotelabels grestore 0 0 0 0 240 288 12 789 282 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath pop pop grestore grestore 338 338 56 282 240 288 12 902 0 LoutGr2 currentdict end 200 dict begin begin grestore 338 338 56 282 240 288 12 0 0 LoutGr2 currentdict end 200 dict begin begin grestore 338 338 56 282 240 288 12 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore 192 fnt83 118 105(d)m grestore (T) lfigpromotelabels grestore (S) lfigpromotelabels grestore 0 0 0 0 240 288 12 1240 282 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath pop pop grestore grestore (S) lfigpromotelabels grestore 0 0 0 0 240 288 12 3396 790 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath pop pop grestore grestore end end restore grestore 0 2585(Missing)m 879(objects)s 1662(are)s 2065(replaced)s 2987(by)s 3336(empty)s 4044(objects,)s 4883(and)s 5342(sequences)s 6419(of)s 6745(concatenation)s 8186(operators)s 0 2297(are)m 347(consolidated:)s gsave 480 648 translate 240 fnt83 2492 1359 0 1298 240 288 12 LoutGraphic gsave grestore save gsave 200 dict begin lfigdict begin grestore 1415 338 56 282 240 288 12 1077 1016 LoutGr2 currentdict end 200 dict begin begin grestore 338 338 56 282 240 288 12 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore 192 fnt78 156 121(|)m grestore (T) lfigpromotelabels grestore 338 846 56 790 240 288 12 0 0 LoutGr2 currentdict end 200 dict begin begin grestore 338 846 56 790 240 288 12 0 0 LoutGr2 currentdict end 200 dict begin begin grestore 338 338 56 282 240 288 12 0 508 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore 192 fnt83 123 128(a)m grestore (T) lfigpromotelabels grestore (S) lfigpromotelabels grestore 0 0 0 0 240 288 12 338 790 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath pop pop grestore grestore 517 846 56 790 240 288 12 451 0 LoutGr2 currentdict end 200 dict begin begin grestore 517 846 56 790 240 288 12 0 0 LoutGr2 currentdict end 200 dict begin begin grestore 517 338 56 282 240 288 12 0 508 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigellipse ] lfigdopath pop pop grestore 192 fnt78 56 105(0)m 192 fnt83 195 111(.)m 192 fnt78 270 105(2)m 192 fnt83 410 111(i)m grestore (T) lfigpromotelabels grestore (S) lfigpromotelabels grestore 0 0 0 0 240 288 12 968 790 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath pop pop grestore grestore 1411 846 0 790 240 288 12 1081 0 LoutGr2 currentdict end 200 dict begin begin grestore 875 338 56 282 240 288 12 536 508 LoutGr2 currentdict end 200 dict begin begin grestore 338 338 56 282 240 288 12 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore 192 fnt78 156 121(|)m grestore (T) lfigpromotelabels grestore 338 338 56 282 240 288 12 0 0 LoutGr2 currentdict end 200 dict begin begin grestore 338 338 56 282 240 288 12 0 0 LoutGr2 currentdict end 200 dict begin begin grestore 338 338 56 282 240 288 12 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore 192 fnt83 128 128(c)m grestore (T) lfigpromotelabels grestore (S) lfigpromotelabels grestore 0 0 0 0 240 288 12 338 282 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath pop pop grestore grestore 509 338 56 282 240 288 12 451 0 LoutGr2 currentdict end 200 dict begin begin grestore 509 338 56 282 240 288 12 0 0 LoutGr2 currentdict end 200 dict begin begin grestore 509 338 56 282 240 288 12 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigellipse ] lfigdopath pop pop grestore 192 fnt78 56 105(0)m 192 fnt83 195 111(.)m 192 fnt78 270 105(3)m 192 fnt83 402 111(i)m grestore (T) lfigpromotelabels grestore (S) lfigpromotelabels grestore 0 0 0 0 240 288 12 960 282 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath pop pop grestore grestore 338 338 56 282 240 288 12 1073 0 LoutGr2 currentdict end 200 dict begin begin grestore 338 338 56 282 240 288 12 0 0 LoutGr2 currentdict end 200 dict begin begin grestore 338 338 56 282 240 288 12 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore 192 fnt83 118 105(d)m grestore (T) lfigpromotelabels grestore (S) lfigpromotelabels grestore 0 0 0 0 240 288 12 1411 282 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath pop pop grestore grestore (S) lfigpromotelabels grestore 0 0 0 0 240 288 12 2492 790 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath pop pop grestore grestore end end restore grestore 240 fnt78 3284 1886(\336)m gsave 3825 648 translate 240 fnt83 2492 1359 0 1298 240 288 12 LoutGraphic gsave grestore save gsave 200 dict begin lfigdict begin grestore 1415 338 56 282 240 288 12 1077 1016 LoutGr2 currentdict end 200 dict begin begin grestore 338 338 56 282 240 288 12 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore 192 fnt78 156 121(|)m grestore (T) lfigpromotelabels grestore 338 846 56 790 240 288 12 0 0 LoutGr2 currentdict end 200 dict begin begin grestore 338 846 56 790 240 288 12 0 0 LoutGr2 currentdict end 200 dict begin begin grestore 338 338 56 282 240 288 12 0 508 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore 192 fnt83 123 128(a)m grestore (T) lfigpromotelabels grestore (S) lfigpromotelabels grestore 0 0 0 0 240 288 12 338 790 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath pop pop grestore grestore 517 846 56 790 240 288 12 451 0 LoutGr2 currentdict end 200 dict begin begin grestore 517 846 56 790 240 288 12 0 0 LoutGr2 currentdict end 200 dict begin begin grestore 517 338 56 282 240 288 12 0 508 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigellipse ] lfigdopath pop pop grestore 192 fnt78 56 105(0)m 192 fnt83 195 111(.)m 192 fnt78 270 105(2)m 192 fnt83 410 111(i)m grestore (T) lfigpromotelabels grestore (S) lfigpromotelabels grestore 0 0 0 0 240 288 12 968 790 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath pop pop grestore grestore 338 846 56 790 240 288 12 1081 0 LoutGr2 currentdict end 200 dict begin begin grestore 338 846 56 790 240 288 12 0 0 LoutGr2 currentdict end 200 dict begin begin grestore 338 338 56 282 240 288 12 0 508 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore 192 fnt83 128 128(c)m grestore (T) lfigpromotelabels grestore (S) lfigpromotelabels grestore 0 0 0 0 240 288 12 1419 790 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath pop pop grestore grestore 509 846 56 790 240 288 12 1532 0 LoutGr2 currentdict end 200 dict begin begin grestore 509 846 56 790 240 288 12 0 0 LoutGr2 currentdict end 200 dict begin begin grestore 509 338 56 282 240 288 12 0 508 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigellipse ] lfigdopath pop pop grestore 192 fnt78 56 105(0)m 192 fnt83 195 111(.)m 192 fnt78 270 105(3)m 192 fnt83 402 111(i)m grestore (T) lfigpromotelabels grestore (S) lfigpromotelabels grestore 0 0 0 0 240 288 12 2041 790 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath pop pop grestore grestore 338 846 56 790 240 288 12 2154 0 LoutGr2 currentdict end 200 dict begin begin grestore 338 846 56 790 240 288 12 0 0 LoutGr2 currentdict end 200 dict begin begin grestore 338 338 56 282 240 288 12 0 508 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore 192 fnt83 118 105(d)m grestore (T) lfigpromotelabels grestore (S) lfigpromotelabels grestore 0 0 0 0 240 288 12 2492 790 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath pop pop grestore grestore end end restore grestore grestore grestore grestore pgsave restore showpage %%Page: 9 10 %%BeginPageSetup %%PageResources: font Times-Roman %%+ font Times-Italic %%+ font Symbol %%+ font Helvetica /pgsave save def %%IncludeResource: font Symbol /fnt78 { /Symbol LoutFont } def %%IncludeResource: font Helvetica /Helveticafnt35 vec2 /Helvetica LoutRecode /fnt35 { /Helveticafnt35 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave 0 0 translate 240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate 9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 1 LoutMargSet grestore 4349 13844(-)m 4477(9)s 4648(-)s 0 13251(to)m 239(mak)s 2(e)k 811(manifest)s 1693(their)s 2190(associati)s 6(vity)k 3432(and)s 3836(reduce)s 4529(the)s 4877(depth)s 5466(of)s 5737(the)s 6085(tree)s 6498(for)s 6836(ef\207cienc)s 3(y)k 7829(later)s 13(.)k 480 12877(The)m 970(required)s 1887(semantic)s 2851(information)s 4099(is)s 4371(the)s 4782(size)s 5271(of)s 5605(each)s 6162(subobject,)s 7249(consisting)s 8334(of)s 8668(four)s 0 12589(inte)m 3(gers:)k 920(width)s 1524(to)s 1765(left)s 2144(and)s 2550(right)s 3062(of)s 3335(the)s 3685(distinguished)s 5021(column)s 5798(mark,)s 6397(and)s 6803(height)s 7463(abo)s 3(v)k 3(e)k 8087(and)s 8493(belo)s 6(w)k 0 12301(the)m 368(distinguished)s 1722(ro)s 6(w)k 2162(mark.)s 2837(These)s 3484(numbers)s 4379(are)s 4746(al)s 2(w)k 2(ays)k 5477(non-ne)s 3(g)k 1(ati)k 6(v)k 3(e)k 6789(in)s 7052(Basser)s 7769(Lout,)s 8348(b)s 4(ut)k 8730(this)s 0 12013(restriction)m 1024(is)s 1234(unnecessary)s 2457(and)s 2861(should)s 3558(be)s 3840(dropped.)s 480 11639(F)m 3(or)k 867(the)s 1212(lea)s 4(v)k 3(es,)k 1907(which)s 2546(are)s 2890(simple)s 3581(w)s 2(ords,)k 4268(the)s 4614(numbers)s 5486(are)s 5830(obtained)s 6710(from)s 7231(font)s 7674(tables.)s 8392(F)s 3(or)k 8778(the)s 0 11351(higher)m 678(le)s 6(v)k 3(els)k 1285(we)s 1628(apply)s 2222(recursi)s 6(v)k 3(e)k 3152(rules.)s 3788(Suppose)s 4664(that)s 240 fnt83 5090 11353(hgap)m 240 fnt78 5583 11345(\()m 240 fnt83 5675 11353(x)m 240 fnt78 5801 11345(,)m 240 fnt83 5932 11353(g)m 240 fnt78 6066 11345(,)m 240 fnt83 6197 11353(y)m 240 fnt78 6319 11345(\))m 240 fnt82 6453 11351(returns)m 7175(the)s 7531(desired)s 8287(distance)s 0 11063(between)m 846(the)s 1186(column)s 1952(marks)s 2579(of)s 2841(objects)s 240 fnt83 3561 11065(x)m 240 fnt82 3719 11063(and)m 240 fnt83 4114 11065(y)m 240 fnt82 4268 11063(when)m 4835(the)s 3(y)k 5290(are)s 5629(separated)s 6580(by)s 6866(g)s 1(ap)k 240 fnt83 7255 11065(g)m 240 fnt82 7369 11063(:)m 240 fnt83 7527 11065(right)m 240 fnt78 8000 11057(\()m 240 fnt83 8075 11065(x)m 240 fnt78 8185 11057(\))m 8298(+)s 240 fnt83 8473 11065(length)m 240 fnt78 0 10769(\()m 240 fnt83 89 10777(g)m 240 fnt78 221 10769(\))m 376(+)s 240 fnt83 594 10777(left)m 240 fnt78 920 10769(\()m 240 fnt83 1009 10777(y)m 240 fnt78 1129 10769(\))m 240 fnt82 1261 10775(when)m 1842(the)s 2196(g)s 1(ap)k 2600(mode)s 3193(is)s 3409(edge-to-edge,)s 4770(the)s 5124(lar)s 4(ger)k 5741(of)s 240 fnt83 6018 10777(length)m 240 fnt78 6629 10769(\()m 240 fnt83 6718 10777(g)m 240 fnt78 6850 10769(\))m 240 fnt82 6982 10775(and)m 240 fnt83 7391 10777(right)m 240 fnt78 7878 10769(\()m 240 fnt83 7968 10777(x)m 240 fnt78 8091 10769(\))m 8246(+)s 240 fnt83 8464 10777(left)m 240 fnt78 8790 10769(\()m 240 fnt83 8880 10777(y)m 240 fnt78 9000 10769(\))m 240 fnt82 0 10487(when)m 576(the)s 924(mode)s 1512(is)s 1722(mark-to-mark,)s 3155(and)s 3559(so)s 3825(on.)s 4229(Gi)s 6(v)k 3(en)k 4862(an)s 5145(object)s 240 fnt83 480 9992(X)m 240 fnt78 720 9984(=)m 240 fnt83 933 9992(x)m 168 fnt78 1039 9899(1)m 240 fnt78 1249 9984(|)m 240 fnt83 1294 9992(g)m 168 fnt78 1405 9899(1)m 240 fnt78 1615 9984(\274)m 200 fnt83 1973 10000(^)m 240 fnt78 2069 9984(|)m 240 fnt83 2114 9992(g)m 168 fnt83 2225 9905(i)m 168 fnt78 2291 9899(-)m 2403(1)s 240 fnt83 2613 9992(x)m 168 fnt83 2719 9905(i)m 240 fnt78 2907 9984(\274)m 3265(|)s 240 fnt83 3310 9992(g)m 168 fnt83 3421 9905(n)m 168 fnt78 3523 9899(-)m 3635(1)s 240 fnt83 3845 9992(x)m 168 fnt83 3951 9905(n)m 240 fnt82 0 9448(we)m 335(may)s 801(calculate)s 1705(its)s 1981(size)s 2408(as)s 2658(follo)s 6(ws:)k 240 fnt83 740 8945(left)m 240 fnt78 1060 8937(\()m 240 fnt83 1144 8945(X)m 240 fnt78 1312 8937(\))m 1474(=)s 240 fnt83 1687 8945(left)m 240 fnt78 2007 8937(\()m 240 fnt83 2091 8945(x)m 168 fnt78 2197 8852(1)m 240 fnt78 2275 8937(\))m 2413(+)s 240 fnt83 2614 8945(hgap)m 240 fnt78 3099 8937(\()m 240 fnt83 3183 8945(x)m 168 fnt78 3289 8852(1)m 240 fnt78 3367 8937(,)m 240 fnt83 3474 8945(g)m 168 fnt78 3585 8852(1)m 240 fnt78 3663 8937(,)m 240 fnt83 3770 8945(x)m 168 fnt78 3876 8852(2)m 240 fnt78 3968 8937(\))m 4106(+)s 4307(\274)s 4593(+)s 240 fnt83 4794 8945(hgap)m 240 fnt78 5279 8937(\()m 240 fnt83 5363 8945(x)m 168 fnt83 5469 8858(i)m 168 fnt78 5535 8852(-)m 5647(1)s 240 fnt78 5725 8937(,)m 240 fnt83 5832 8945(g)m 168 fnt83 5943 8858(i)m 168 fnt78 6009 8852(-)m 6121(1)s 240 fnt78 6199 8937(,)m 240 fnt83 6306 8945(x)m 168 fnt83 6412 8858(i)m 240 fnt78 6468 8937(\))m 240 fnt83 579 8542(right)m 240 fnt78 1060 8534(\()m 240 fnt83 1144 8542(X)m 240 fnt78 1312 8534(\))m 1474(=)s 240 fnt83 1687 8542(hgap)m 240 fnt78 2172 8534(\()m 240 fnt83 2256 8542(x)m 168 fnt83 2362 8455(i)m 240 fnt78 2418 8534(,)m 240 fnt83 2525 8542(g)m 168 fnt83 2636 8455(i)m 240 fnt78 2692 8534(,)m 240 fnt83 2799 8542(x)m 168 fnt83 2905 8455(i)m 168 fnt78 2971 8449(+)m 3084(1)s 240 fnt78 3162 8534(\))m 3300(+)s 3501(\274)s 3787(+)s 240 fnt83 3988 8542(hgap)m 240 fnt78 4473 8534(\()m 240 fnt83 4557 8542(x)m 168 fnt83 4663 8455(n)m 168 fnt78 4765 8449(-)m 4877(1)s 240 fnt78 4955 8534(,)m 240 fnt83 5062 8542(g)m 168 fnt83 5173 8455(n)m 168 fnt78 5275 8449(-)m 5387(1)s 240 fnt78 5465 8534(,)m 240 fnt83 5572 8542(x)m 168 fnt83 5678 8455(n)m 240 fnt78 5770 8534(\))m 5908(+)s 240 fnt83 6109 8542(right)m 240 fnt78 6590 8534(\()m 240 fnt83 6674 8542(x)m 168 fnt83 6780 8455(n)m 240 fnt78 6872 8534(\))m 240 fnt83 485 8139(abo)m 2(ve)k 240 fnt78 1060 8131(\()m 240 fnt83 1144 8139(X)m 240 fnt78 1312 8131(\))m 1474(=)s 240 fnt83 1687 8139(abo)m 2(ve)k 240 fnt78 2262 8131(\()m 240 fnt83 2346 8139(x)m 168 fnt78 2452 8044(1)m 240 fnt78 2530 8131(\))m 2680(\255)s 2901(\274)s 3199(\255)s 240 fnt83 3420 8139(abo)m 2(ve)k 240 fnt78 3995 8131(\()m 240 fnt83 4079 8139(x)m 168 fnt83 4185 8050(n)m 240 fnt78 4277 8131(\))m 240 fnt83 480 7736(below)m 240 fnt78 1060 7728(\()m 240 fnt83 1144 7736(X)m 240 fnt78 1312 7728(\))m 1474(=)s 240 fnt83 1687 7736(below)m 240 fnt78 2267 7728(\()m 240 fnt83 2351 7736(x)m 168 fnt78 2457 7641(1)m 240 fnt78 2535 7728(\))m 2685(\255)s 2906(\274)s 3204(\255)s 240 fnt83 3425 7736(below)m 240 fnt78 4005 7728(\()m 240 fnt83 4089 7736(x)m 168 fnt83 4195 7647(n)m 240 fnt78 4287 7728(\))m 240 fnt82 0 7141(where)m 240 fnt78 693 7135(\255)m 240 fnt82 943 7141(returns)m 1678(the)s 2046(lar)s 4(ger)k 2679(of)s 2971(its)s 3267(tw)s 2(o)k 3698(parameters.)s 4930(Similar)s 5712(formulas)s 6633(are)s 7001(easily)s 7632(deri)s 6(v)k 3(ed)k 8419(for)s 8778(the)s 0 6853(other)m 551(operators.)s 480 6479(F)m 3(or)k 866(purposes)s 1765(of)s 2033(e)s 3(xposition)k 3081(we)s 3412(will)s 3835(no)s 6(w)k 4293(mak)s 2(e)k 4862(the)s 5207(simplifying)s 6358(assumptions)s 7589(that)s 8004(all)s 8294(g)s 1(aps)k 8779(are)s 220 fnt35 0 6188(0i)m 240 fnt82 156 6191(,)m 248(all)s 525(column)s 1285(marks)s 1904(lie)s 2183(at)s 2399(the)s 2732(left)s 3093(edge,)s 3637(and)s 4025(all)s 4303(ro)s 6(w)k 4707(marks)s 5327(lie)s 5605(at)s 5822(the)s 6154(top)s 6498(edge.)s 7098(Then)s 7632(the)s 7964(size)s 8376(of)s 8631(each)s 0 5903(object)m 644(can)s 1033(be)s 1315(e)s 3(xpressed)k 2313(by)s 2607(just)s 3012(tw)s 2(o)k 3422(numbers,)s 4353(width)s 4955(and)s 5359(height,)s 6064(and)s 6468(the)s 6816(four)s 7274(formulas)s 8174(reduce)s 8867(to)s 240 fnt83 555 5400(width)m 240 fnt78 1094 5392(\()m 240 fnt83 1178 5400(x)m 168 fnt78 1284 5307(1)m 240 fnt78 1434 5392(|)m 1551(\274)s 1849(|)s 240 fnt83 1966 5400(x)m 168 fnt83 2072 5313(n)m 240 fnt78 2164 5392(\))m 2326(=)s 240 fnt83 2539 5400(width)m 240 fnt78 3078 5392(\()m 240 fnt83 3162 5400(x)m 168 fnt78 3268 5307(1)m 240 fnt78 3346 5392(\))m 3484(+)s 3685(\274)s 3971(+)s 240 fnt83 4172 5400(width)m 240 fnt78 4711 5392(\()m 240 fnt83 4795 5400(x)m 168 fnt83 4901 5313(n)m 240 fnt78 4993 5392(\))m 240 fnt83 480 4997(height)m 240 fnt78 1094 4989(\()m 240 fnt83 1178 4997(x)m 168 fnt78 1284 4904(1)m 240 fnt78 1434 4989(|)m 1551(\274)s 1849(|)s 240 fnt83 1966 4997(x)m 168 fnt83 2072 4910(n)m 240 fnt78 2164 4989(\))m 2326(=)s 240 fnt83 2539 4997(height)m 240 fnt78 3153 4989(\()m 240 fnt83 3237 4997(x)m 168 fnt78 3343 4904(1)m 240 fnt78 3421 4989(\))m 3571(\255)s 3792(\274)s 4090(\255)s 240 fnt83 4311 4997(height)m 240 fnt78 4925 4989(\()m 240 fnt83 5009 4997(x)m 168 fnt83 5115 4910(n)m 240 fnt78 5207 4989(\))m 240 fnt82 0 4453(The)m 428(corresponding)s 1850(formulas)s 2750(for)s 3088(v)s 3(ertical)k 3855(concatenation)s 5240(are)s 240 fnt83 555 3903(width)m 240 fnt78 1094 3895(\()m 240 fnt83 1178 3903(x)m 168 fnt78 1284 3810(1)m 240 fnt83 1434 3903(/)m 240 fnt78 1609 3895(\274)m 240 fnt83 1907 3903(/)m 2082(x)s 168 fnt83 2188 3816(n)m 240 fnt78 2280 3895(\))m 2442(=)s 240 fnt83 2655 3903(width)m 240 fnt78 3194 3895(\()m 240 fnt83 3278 3903(x)m 168 fnt78 3384 3810(1)m 240 fnt78 3462 3895(\))m 3612(\255)s 3833(\274)s 4131(\255)s 240 fnt83 4352 3903(width)m 240 fnt78 4891 3895(\()m 240 fnt83 4975 3903(x)m 168 fnt83 5081 3816(n)m 240 fnt78 5173 3895(\))m 240 fnt83 480 3500(height)m 240 fnt78 1094 3492(\()m 240 fnt83 1178 3500(x)m 168 fnt78 1284 3407(1)m 240 fnt83 1434 3500(/)m 240 fnt78 1609 3492(\274)m 240 fnt83 1907 3500(/)m 2082(x)s 168 fnt83 2188 3413(n)m 240 fnt78 2280 3492(\))m 2442(=)s 240 fnt83 2655 3500(height)m 240 fnt78 3269 3492(\()m 240 fnt83 3353 3500(x)m 168 fnt78 3459 3407(1)m 240 fnt78 3537 3492(\))m 3675(+)s 3876(\274)s 4162(+)s 240 fnt83 4363 3500(height)m 240 fnt78 4977 3492(\()m 240 fnt83 5061 3500(x)m 168 fnt83 5167 3413(n)m 240 fnt78 5259 3492(\))m 240 fnt82 0 2956(According)m 1063(to)s 1302(these)s 1849(formulas,)s 2805(the)s 3153(height)s 3811(of)s gsave 480 1262 translate 240 fnt83 3044 1354 56 1298 240 288 12 LoutGraphic gsave grestore save gsave 200 dict begin lfigdict begin grestore 1240 846 56 790 240 288 12 0 0 LoutGr2 currentdict end 200 dict begin begin grestore 338 338 56 282 240 288 12 0 0 LoutGr2 currentdict end 200 dict begin begin grestore 338 338 56 282 240 288 12 0 0 LoutGr2 currentdict end 200 dict begin begin grestore 338 338 56 282 240 288 12 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore 192 fnt83 123 128(a)m grestore (T) lfigpromotelabels grestore (L) lfigpromotelabels grestore 338 338 56 282 240 288 12 451 508 LoutGr2 currentdict end 200 dict begin begin grestore 338 338 56 282 240 288 12 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore 192 fnt78 156 121(|)m grestore (T) lfigpromotelabels grestore 0 0 0 0 240 288 12 789 790 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ L@T@CTR L@T@CTR T@CTR lfigangle L@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef T@CTR T@CTR L@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath pop pop grestore grestore 338 338 56 282 240 288 12 902 0 LoutGr2 currentdict end 200 dict begin begin grestore 338 338 56 282 240 288 12 0 0 LoutGr2 currentdict end 200 dict begin begin grestore 338 338 56 282 240 288 12 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore 192 fnt83 123 105(b)m grestore (T) lfigpromotelabels grestore (R) lfigpromotelabels grestore 0 0 0 0 240 288 12 1240 790 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ R@T@CTR R@T@CTR T@CTR lfigangle R@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef T@CTR T@CTR R@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath pop pop grestore grestore (L) lfigpromotelabels grestore 338 338 56 282 240 288 12 1353 1016 LoutGr2 currentdict end 200 dict begin begin grestore 338 338 56 282 240 288 12 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore 192 fnt78 136 106(\244)m grestore (T) lfigpromotelabels grestore 0 0 0 0 240 288 12 1691 1298 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ L@T@CTR L@T@CTR T@CTR lfigangle L@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef T@CTR T@CTR L@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath pop pop grestore grestore 1240 846 56 790 240 288 12 1804 0 LoutGr2 currentdict end 200 dict begin begin grestore 338 338 56 282 240 288 12 0 0 LoutGr2 currentdict end 200 dict begin begin grestore 338 338 56 282 240 288 12 0 0 LoutGr2 currentdict end 200 dict begin begin grestore 338 338 56 282 240 288 12 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore 192 fnt83 128 128(c)m grestore (T) lfigpromotelabels grestore (L) lfigpromotelabels grestore 338 338 56 282 240 288 12 451 508 LoutGr2 currentdict end 200 dict begin begin grestore 338 338 56 282 240 288 12 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore 192 fnt78 156 121(|)m grestore (T) lfigpromotelabels grestore 0 0 0 0 240 288 12 789 790 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ L@T@CTR L@T@CTR T@CTR lfigangle L@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef T@CTR T@CTR L@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath pop pop grestore grestore 338 338 56 282 240 288 12 902 0 LoutGr2 currentdict end 200 dict begin begin grestore 338 338 56 282 240 288 12 0 0 LoutGr2 currentdict end 200 dict begin begin grestore 338 338 56 282 240 288 12 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore 192 fnt83 118 105(d)m grestore (T) lfigpromotelabels grestore (R) lfigpromotelabels grestore 0 0 0 0 240 288 12 1240 790 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ R@T@CTR R@T@CTR T@CTR lfigangle R@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef T@CTR T@CTR R@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath pop pop grestore grestore (R) lfigpromotelabels grestore 0 0 0 0 240 288 12 3044 1298 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ R@T@CTR R@T@CTR T@CTR lfigangle R@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef T@CTR T@CTR R@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath pop pop grestore grestore end end restore grestore grestore grestore grestore pgsave restore showpage %%Page: 10 11 %%BeginPageSetup %%PageResources: font Times-Roman %%+ font Symbol %%+ font Times-Italic /pgsave save def %%IncludeResource: font Symbol /fnt78 { /Symbol LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave 0 0 translate 240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate 9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 0 LoutMargSet grestore 4287 13844(-)m 4415(10)s 4710(-)s 0 13253(is)m 240 fnt78 480 12745([)m 240 fnt83 563 12753(height)m 240 fnt78 1177 12745(\()m 240 fnt83 1261 12753(a)m 240 fnt78 1388 12745(\))m 1538(\255)s 240 fnt83 1759 12753(height)m 240 fnt78 2373 12745(\()m 240 fnt83 2457 12753(b)m 240 fnt78 2583 12745(\))m 2661(])s 2792(+)s 2993([)s 240 fnt83 3076 12753(height)m 240 fnt78 3690 12745(\()m 240 fnt83 3774 12753(c)m 240 fnt78 3888 12745(\))m 4038(\255)s 240 fnt83 4259 12753(height)m 240 fnt78 4873 12745(\()m 240 fnt83 4957 12753(d)m 240 fnt78 5095 12745(\))m 5173(])s 240 fnt82 0 12249(which)m 642(is)s 852(correct,)s 1621(b)s 4(ut)k 1983(for)s 2321(width)s 2923(the)s 3(y)k 3386(yield)s 240 fnt78 480 11691([)m 240 fnt83 563 11699(width)m 240 fnt78 1102 11691(\()m 240 fnt83 1186 11699(a)m 240 fnt78 1313 11691(\))m 1451(+)s 240 fnt83 1652 11699(width)m 240 fnt78 2191 11691(\()m 240 fnt83 2275 11699(b)m 240 fnt78 2401 11691(\))m 2479(])s 2622(\255)s 2843([)s 240 fnt83 2926 11699(width)m 240 fnt78 3465 11691(\()m 240 fnt83 3549 11699(c)m 240 fnt78 3663 11691(\))m 3801(+)s 240 fnt83 4002 11699(width)m 240 fnt78 4541 11691(\()m 240 fnt83 4625 11699(d)m 240 fnt78 4763 11691(\))m 4841(])s 240 fnt82 0 11195(which)m 645(is)s 859(not,)s 1276(since)s 1827(it)s 2023(does)s 2517(not)s 2887(tak)s 2(e)k 3343(the)s 3694(mer)s 4(ging)k 4544(of)s 4819(column)s 5598(marks)s 6237(into)s 6666(account.)s 7578(The)s 8010(asymmetry)s 0 10907(between)m 874(horizontal)s 1918(and)s 2342(v)s 3(ertical)k 3130(has)s 3520(come)s 4114(about)s 4726(because)s 5560(the)s 5928(ro)s 6(w)k 6368(entries,)s 7131(such)s 7648(as)s 240 fnt83 7918 10909(a)m 240 fnt82 8113 10907(and)m 240 fnt83 8537 10909(b)m 240 fnt82 8651 10907(,)m 8779(are)s 0 10619(adjacent)m 849(in)s 1085(the)s 1426(tree,)s 1883(b)s 4(ut)k 2238(the)s 2579(column)s 3346(entries,)s 4082(such)s 4571(as)s 240 fnt83 4814 10621(a)m 240 fnt82 4982 10619(and)m 240 fnt83 5379 10621(c)m 240 fnt82 5481 10619(,)m 5581(are)s 5920(not.)s 6383(It)s 6581(w)s 2(ould)k 7229(be)s 7504(possible)s 8337(to)s 8568(solv)s 3(e)k 0 10331(this)m 395(cross-linking)s 1694(problem)s 2550(by)s 2842(augmenting)s 4024(the)s 4370(size)s 4795(information)s 5979(stored)s 6619(in)s 6861(each)s 7354(node)s 7875(to)s 8112(record)s 8778(the)s 0 10043(number)m 791(of)s 1063(marks)s 1698(and)s 2103(the)s 2451(size)s 2879(of)s 3150(each,)s 3696(b)s 4(ut)k 4058(the)s 4407(author)s 5078(has)s 5449(preferred)s 6381(the)s 6730(follo)s 6(wing)k 7707(method)s 8484(which)s 0 9755(mak)m 2(es)k 660(structural)s 1616(changes)s 2438(to)s 2677(the)s 3025(tree)s 3438(instead.)s 480 9381(If)m 240 fnt83 715 9383(a)m 240 fnt82 896 9381(and)m 240 fnt83 1305 9383(c)m 240 fnt82 1473 9381(share)m 2038(a)s 2210(column)s 2990(mark,)s 3594(the)s 3(y)k 4063(each)s 4563(might)s 5187(as)s 5442(well)s 5914(ha)s 4(v)k 3(e)k 6420(width)s 240 fnt83 7028 9383(width)m 240 fnt78 7572 9375(\()m 240 fnt83 7662 9383(a)m 240 fnt78 7795 9375(\))m 7961(\255)s 240 fnt83 8199 9383(width)m 240 fnt78 8743 9375(\()m 240 fnt83 8833 9383(c)m 240 fnt78 8953 9375(\))m 240 fnt82 9019 9381(,)m 0 9093(since)m 547(all)s 840(width)s 1442(calculations)s 2635(apply)s 3221(to)s 3460(entire)s 4060(columns.)s 5035(Accordingly)s 15(,)k 6323(we)s 6659(introduce)s 7618(a)s 7784(ne)s 6(w)k 8232(operator)s 9(,)k 240 fnt83 0 8807(COL)m 240 fnt82 466 8805(,)m 573(de\207ned)s 1336(by)s 240 fnt83 480 8255(width)m 240 fnt78 1019 8247(\()m 240 fnt83 1103 8255(x)m 168 fnt78 1209 8162(1)m 240 fnt83 1347 8255(COL)m 240 fnt78 1885 8247(\274)m 240 fnt83 2171 8255(COL)m 2709(x)s 168 fnt83 2815 8168(n)m 240 fnt78 2907 8247(\))m 3057(=)s 240 fnt83 3270 8255(width)m 240 fnt78 3809 8247(\()m 240 fnt83 3893 8255(x)m 168 fnt78 3999 8162(1)m 240 fnt78 4077 8247(\))m 4227(\255)s 4448(\274)s 4746(\255)s 240 fnt83 4967 8255(width)m 240 fnt78 5506 8247(\()m 240 fnt83 5590 8255(x)m 168 fnt83 5696 8168(n)m 240 fnt78 5788 8247(\))m 240 fnt82 0 7711(and)m 440(replace)s 1221(both)s 240 fnt83 1741 7713(a)m 240 fnt82 1952 7711(and)m 240 fnt83 2393 7713(c)m 240 fnt82 2591 7711(by)m 240 fnt83 2922 7713(a)m 3218(COL)s 3865(c)s 240 fnt82 3967 7711(.)m 4168(T)s 19(o)k 4504(pre)s 6(v)k 3(ent)k 240 fnt83 5309 7713(COL)m 240 fnt82 5871 7711(operators)m 6848(from)s 7408(disturbing)s 8468(height)s 0 7423(calculations,)m 1248(we)s 1583(de\207ne)s 2224(a)s 2390(binary)s 3055(operator)s 3911(called)s 240 fnt83 4539 7425(SPLIT)m 240 fnt82 5228 7423(by)m 240 fnt83 555 6920(width)m 240 fnt78 1094 6912(\()m 240 fnt83 1178 6920(x)m 1356(SPLIT)s 2057(y)s 240 fnt78 2171 6912(\))m 2333(=)s 240 fnt83 2546 6920(width)m 240 fnt78 3085 6912(\()m 240 fnt83 3169 6920(x)m 240 fnt78 3287 6912(\))m 240 fnt83 480 6517(height)m 240 fnt78 1094 6509(\()m 240 fnt83 1178 6517(x)m 1356(SPLIT)s 2057(y)s 240 fnt78 2171 6509(\))m 2333(=)s 240 fnt83 2546 6517(height)m 240 fnt78 3160 6509(\()m 240 fnt83 3244 6517(y)m 240 fnt78 3358 6509(\))m 240 fnt82 0 6013(which)m 642(switches)s 1516(height)s 2174(and)s 2578(width)s 3180(calculations)s 4372(onto)s 4851(dif)s 6(ferent)k 5726(subtrees.)s 6673(Then)s 7222(the)s 7570(transformation)s gsave 480 4314 translate 240 fnt83 338 1359 56 1298 240 288 12 LoutGraphic gsave grestore save gsave 200 dict begin lfigdict begin grestore 338 1359 56 1298 240 288 12 0 0 LoutGr2 currentdict end 200 dict begin begin grestore 338 338 56 282 240 288 12 0 1016 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore 192 fnt83 123 128(a)m grestore (T) lfigpromotelabels grestore end end restore grestore 240 fnt78 1130 5552(\336)m gsave 1671 4314 translate 240 fnt83 2564 1359 56 1298 240 288 12 LoutGraphic gsave grestore save gsave 200 dict begin lfigdict begin grestore 1386 846 56 790 240 288 12 0 0 LoutGr2 currentdict end 200 dict begin begin grestore 338 338 56 282 240 288 12 0 0 LoutGr2 currentdict end 200 dict begin begin grestore 338 338 56 282 240 288 12 0 0 LoutGr2 currentdict end 200 dict begin begin grestore 338 338 56 282 240 288 12 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore 192 fnt83 123 128(a)m grestore (T) lfigpromotelabels grestore (L) lfigpromotelabels grestore 484 338 56 282 240 288 12 451 508 LoutGr2 currentdict end 200 dict begin begin grestore 484 338 56 282 240 288 12 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigellipse ] lfigdopath pop pop grestore 192 fnt83 56 107(COL)m grestore (T) lfigpromotelabels grestore 0 0 0 0 240 288 12 935 790 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ L@T@CTR L@T@CTR T@CTR lfigangle L@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef T@CTR T@CTR L@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath pop pop grestore grestore 338 338 56 282 240 288 12 1048 0 LoutGr2 currentdict end 200 dict begin begin grestore 338 338 56 282 240 288 12 0 0 LoutGr2 currentdict end 200 dict begin begin grestore 338 338 56 282 240 288 12 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore 192 fnt83 128 128(c)m grestore (T) lfigpromotelabels grestore (R) lfigpromotelabels grestore 0 0 0 0 240 288 12 1386 790 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ R@T@CTR R@T@CTR T@CTR lfigangle R@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef T@CTR T@CTR R@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath pop pop grestore grestore (L) lfigpromotelabels grestore 614 338 56 282 240 288 12 1499 1016 LoutGr2 currentdict end 200 dict begin begin grestore 614 338 56 282 240 288 12 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigellipse ] lfigdopath pop pop grestore 192 fnt83 56 107(SPLIT)m grestore (T) lfigpromotelabels grestore 0 0 0 0 240 288 12 2113 1298 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ L@T@CTR L@T@CTR T@CTR lfigangle L@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef T@CTR T@CTR L@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath pop pop grestore grestore 338 846 56 790 240 288 12 2226 0 LoutGr2 currentdict end 200 dict begin begin grestore 338 846 56 790 240 288 12 0 0 LoutGr2 currentdict end 200 dict begin begin grestore 338 338 56 282 240 288 12 0 508 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore 192 fnt83 123 128(a)m grestore (T) lfigpromotelabels grestore (R) lfigpromotelabels grestore 0 0 0 0 240 288 12 2564 1298 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ R@T@CTR R@T@CTR T@CTR lfigangle R@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef T@CTR T@CTR R@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath pop pop grestore grestore end end restore grestore 240 fnt82 0 3814(widens)m 240 fnt83 740 3816(a)m 240 fnt82 926 3814(to)m 240 fnt83 1176 3816(width)m 240 fnt78 1726 3808(\()m 240 fnt83 1821 3816(a)m 240 fnt78 1959 3808(\))m 2142(\255)s 240 fnt83 2396 3816(width)m 240 fnt78 2946 3808(\()m 240 fnt83 3041 3816(c)m 240 fnt78 3166 3808(\))m 240 fnt82 3303 3814(without)m 4105(af)s 6(fecting)k 5011(its)s 5298(height;)s 6019(it)s 6222(is)s 6443(applied)s 7216(to)s 7466(e)s 6(v)k 3(ery)k 8053(object)s 8708(that)s 0 3526(shares)m 638(its)s 904(column)s 1669(mark)s 2211(with)s 2683(at)s 2905(least)s 3392(one)s 3784(other)s 4325(object.)s 5063(A)s 5283(similar)s 5995(transformation)s 7448(in)s 9(v)k 4(olving)k 8396(a)s 240 fnt83 8552 3528(R)m 9(O)k 12(W)k 240 fnt82 0 3238(operator)m 856(deals)s 1398(with)s 1880(shared)s 2562(ro)s 6(w)k 2982(marks.)s 3730(The)s 4158(ef)s 6(fect)k 4754(on)s 5051(our)s 5430(little)s 5922(table)s 6442(is)s 6652(to)s 6891(replace)s gsave 480 1544 translate 240 fnt83 3044 1354 56 1298 240 288 12 LoutGraphic gsave grestore save gsave 200 dict begin lfigdict begin grestore 1240 846 56 790 240 288 12 0 0 LoutGr2 currentdict end 200 dict begin begin grestore 338 338 56 282 240 288 12 0 0 LoutGr2 currentdict end 200 dict begin begin grestore 338 338 56 282 240 288 12 0 0 LoutGr2 currentdict end 200 dict begin begin grestore 338 338 56 282 240 288 12 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore 192 fnt83 123 128(a)m grestore (T) lfigpromotelabels grestore (L) lfigpromotelabels grestore 338 338 56 282 240 288 12 451 508 LoutGr2 currentdict end 200 dict begin begin grestore 338 338 56 282 240 288 12 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore 192 fnt78 156 121(|)m grestore (T) lfigpromotelabels grestore 0 0 0 0 240 288 12 789 790 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ L@T@CTR L@T@CTR T@CTR lfigangle L@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef T@CTR T@CTR L@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath pop pop grestore grestore 338 338 56 282 240 288 12 902 0 LoutGr2 currentdict end 200 dict begin begin grestore 338 338 56 282 240 288 12 0 0 LoutGr2 currentdict end 200 dict begin begin grestore 338 338 56 282 240 288 12 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore 192 fnt83 123 105(b)m grestore (T) lfigpromotelabels grestore (R) lfigpromotelabels grestore 0 0 0 0 240 288 12 1240 790 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ R@T@CTR R@T@CTR T@CTR lfigangle R@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef T@CTR T@CTR R@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath pop pop grestore grestore (L) lfigpromotelabels grestore 338 338 56 282 240 288 12 1353 1016 LoutGr2 currentdict end 200 dict begin begin grestore 338 338 56 282 240 288 12 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore 192 fnt78 136 106(\244)m grestore (T) lfigpromotelabels grestore 0 0 0 0 240 288 12 1691 1298 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ L@T@CTR L@T@CTR T@CTR lfigangle L@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef T@CTR T@CTR L@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath pop pop grestore grestore 1240 846 56 790 240 288 12 1804 0 LoutGr2 currentdict end 200 dict begin begin grestore 338 338 56 282 240 288 12 0 0 LoutGr2 currentdict end 200 dict begin begin grestore 338 338 56 282 240 288 12 0 0 LoutGr2 currentdict end 200 dict begin begin grestore 338 338 56 282 240 288 12 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore 192 fnt83 128 128(c)m grestore (T) lfigpromotelabels grestore (L) lfigpromotelabels grestore 338 338 56 282 240 288 12 451 508 LoutGr2 currentdict end 200 dict begin begin grestore 338 338 56 282 240 288 12 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore 192 fnt78 156 121(|)m grestore (T) lfigpromotelabels grestore 0 0 0 0 240 288 12 789 790 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ L@T@CTR L@T@CTR T@CTR lfigangle L@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef T@CTR T@CTR L@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath pop pop grestore grestore 338 338 56 282 240 288 12 902 0 LoutGr2 currentdict end 200 dict begin begin grestore 338 338 56 282 240 288 12 0 0 LoutGr2 currentdict end 200 dict begin begin grestore 338 338 56 282 240 288 12 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore 192 fnt83 118 105(d)m grestore (T) lfigpromotelabels grestore (R) lfigpromotelabels grestore 0 0 0 0 240 288 12 1240 790 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ R@T@CTR R@T@CTR T@CTR lfigangle R@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef T@CTR T@CTR R@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath pop pop grestore grestore (R) lfigpromotelabels grestore 0 0 0 0 240 288 12 3044 1298 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ R@T@CTR R@T@CTR T@CTR lfigangle R@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef T@CTR T@CTR R@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath pop pop grestore grestore end end restore grestore 0 1093(by)m grestore grestore grestore pgsave restore showpage %%Page: 11 12 %%BeginPageSetup %%PageResources: font Times-Roman %%+ font Times-Italic %%+ font Symbol %%+ font Helvetica /pgsave save def %%IncludeResource: font Symbol /fnt78 { /Symbol LoutFont } def %%IncludeResource: font Helvetica /Helveticafnt35 vec2 /Helvetica LoutRecode /fnt35 { /Helveticafnt35 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave 0 0 translate 240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate 9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 1 LoutMargSet grestore 4297 13844(-)m 4425(11)s 4700(-)s gsave 480 11049 translate 240 fnt83 6248 2370 0 2314 240 288 12 LoutGraphic gsave grestore save gsave 70 dict begin lfigdict begin grestore 3293 338 56 282 240 288 12 2955 2032 LoutGr2 currentdict end 70 dict begin begin grestore 338 338 56 282 240 288 12 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore 192 fnt78 136 106(\244)m grestore (T) lfigpromotelabels grestore 3096 1862 0 1806 240 288 12 0 0 LoutGr2 currentdict end 70 dict begin begin grestore 1717 338 56 282 240 288 12 1379 1524 LoutGr2 currentdict end 70 dict begin begin grestore 338 338 56 282 240 288 12 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore 192 fnt78 156 121(|)m grestore (T) lfigpromotelabels grestore 1520 1354 0 1298 240 288 12 0 0 LoutGr2 currentdict end 70 dict begin begin grestore 1067 338 56 282 240 288 12 453 1016 LoutGr2 currentdict end 70 dict begin begin grestore 614 338 56 282 240 288 12 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigellipse ] lfigdopath pop pop grestore 192 fnt83 56 107(SPLIT)m grestore (T) lfigpromotelabels grestore 732 846 0 790 240 288 12 0 0 LoutGr2 currentdict end 70 dict begin begin grestore 608 338 56 282 240 288 12 124 508 LoutGr2 currentdict end 70 dict begin begin grestore 484 338 56 282 240 288 12 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigellipse ] lfigdopath pop pop grestore 192 fnt83 56 107(COL)m grestore (T) lfigpromotelabels grestore 338 338 56 282 240 288 12 0 0 LoutGr2 currentdict end 70 dict begin begin grestore 338 338 56 282 240 288 12 0 0 LoutGr2 currentdict end 70 dict begin begin grestore 338 338 56 282 240 288 12 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore 192 fnt83 123 128(a)m grestore (T) lfigpromotelabels grestore (S) lfigpromotelabels grestore 0 0 0 0 240 288 12 338 282 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath pop pop grestore grestore 338 338 56 282 240 288 12 394 0 LoutGr2 currentdict end 70 dict begin begin grestore 338 338 56 282 240 288 12 0 0 LoutGr2 currentdict end 70 dict begin begin grestore 338 338 56 282 240 288 12 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore 192 fnt83 128 128(c)m grestore (T) lfigpromotelabels grestore (S) lfigpromotelabels grestore 0 0 0 0 240 288 12 732 282 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath pop pop grestore grestore (S) lfigpromotelabels grestore 0 0 0 0 240 288 12 732 790 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath pop pop grestore grestore 732 846 0 790 240 288 12 788 0 LoutGr2 currentdict end 70 dict begin begin grestore 628 338 56 282 240 288 12 104 508 LoutGr2 currentdict end 70 dict begin begin grestore 524 338 56 282 240 288 12 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigellipse ] lfigdopath pop pop grestore 192 fnt83 56 107(R)m 7(O)k 9(W)k grestore (T) lfigpromotelabels grestore 338 338 56 282 240 288 12 0 0 LoutGr2 currentdict end 70 dict begin begin grestore 338 338 56 282 240 288 12 0 0 LoutGr2 currentdict end 70 dict begin begin grestore 338 338 56 282 240 288 12 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore 192 fnt83 123 128(a)m grestore (T) lfigpromotelabels grestore (S) lfigpromotelabels grestore 0 0 0 0 240 288 12 338 282 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath pop pop grestore grestore 338 338 56 282 240 288 12 394 0 LoutGr2 currentdict end 70 dict begin begin grestore 338 338 56 282 240 288 12 0 0 LoutGr2 currentdict end 70 dict begin begin grestore 338 338 56 282 240 288 12 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore 192 fnt83 123 105(b)m grestore (T) lfigpromotelabels grestore (S) lfigpromotelabels grestore 0 0 0 0 240 288 12 732 282 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath pop pop grestore grestore (S) lfigpromotelabels grestore 0 0 0 0 240 288 12 1520 790 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath pop pop grestore grestore (S) lfigpromotelabels grestore 0 0 0 0 240 288 12 1520 1298 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath pop pop grestore grestore 1520 1354 0 1298 240 288 12 1576 0 LoutGr2 currentdict end 70 dict begin begin grestore 1067 338 56 282 240 288 12 453 1016 LoutGr2 currentdict end 70 dict begin begin grestore 614 338 56 282 240 288 12 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigellipse ] lfigdopath pop pop grestore 192 fnt83 56 107(SPLIT)m grestore (T) lfigpromotelabels grestore 732 846 0 790 240 288 12 0 0 LoutGr2 currentdict end 70 dict begin begin grestore 608 338 56 282 240 288 12 124 508 LoutGr2 currentdict end 70 dict begin begin grestore 484 338 56 282 240 288 12 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigellipse ] lfigdopath pop pop grestore 192 fnt83 56 107(COL)m grestore (T) lfigpromotelabels grestore 338 338 56 282 240 288 12 0 0 LoutGr2 currentdict end 70 dict begin begin grestore 338 338 56 282 240 288 12 0 0 LoutGr2 currentdict end 70 dict begin begin grestore 338 338 56 282 240 288 12 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore 192 fnt83 123 105(b)m grestore (T) lfigpromotelabels grestore (S) lfigpromotelabels grestore 0 0 0 0 240 288 12 338 282 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath pop pop grestore grestore 338 338 56 282 240 288 12 394 0 LoutGr2 currentdict end 70 dict begin begin grestore 338 338 56 282 240 288 12 0 0 LoutGr2 currentdict end 70 dict begin begin grestore 338 338 56 282 240 288 12 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore 192 fnt83 118 105(d)m grestore (T) lfigpromotelabels grestore (S) lfigpromotelabels grestore 0 0 0 0 240 288 12 732 282 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath pop pop grestore grestore (S) lfigpromotelabels grestore 0 0 0 0 240 288 12 732 790 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath pop pop grestore grestore 732 846 0 790 240 288 12 788 0 LoutGr2 currentdict end 70 dict begin begin grestore 628 338 56 282 240 288 12 104 508 LoutGr2 currentdict end 70 dict begin begin grestore 524 338 56 282 240 288 12 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigellipse ] lfigdopath pop pop grestore 192 fnt83 56 107(R)m 7(O)k 9(W)k grestore (T) lfigpromotelabels grestore 338 338 56 282 240 288 12 0 0 LoutGr2 currentdict end 70 dict begin begin grestore 338 338 56 282 240 288 12 0 0 LoutGr2 currentdict end 70 dict begin begin grestore 338 338 56 282 240 288 12 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore 192 fnt83 123 128(a)m grestore (T) lfigpromotelabels grestore (S) lfigpromotelabels grestore 0 0 0 0 240 288 12 338 282 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath pop pop grestore grestore 338 338 56 282 240 288 12 394 0 LoutGr2 currentdict end 70 dict begin begin grestore 338 338 56 282 240 288 12 0 0 LoutGr2 currentdict end 70 dict begin begin grestore 338 338 56 282 240 288 12 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore 192 fnt83 123 105(b)m grestore (T) lfigpromotelabels grestore (S) lfigpromotelabels grestore 0 0 0 0 240 288 12 732 282 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath pop pop grestore grestore (S) lfigpromotelabels grestore 0 0 0 0 240 288 12 1520 790 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath pop pop grestore grestore (S) lfigpromotelabels grestore 0 0 0 0 240 288 12 3096 1298 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath pop pop grestore grestore (S) lfigpromotelabels grestore 0 0 0 0 240 288 12 3096 1806 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath pop pop grestore grestore 3096 1862 0 1806 240 288 12 3152 0 LoutGr2 currentdict end 70 dict begin begin grestore 1717 338 56 282 240 288 12 1379 1524 LoutGr2 currentdict end 70 dict begin begin grestore 338 338 56 282 240 288 12 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore 192 fnt78 156 121(|)m grestore (T) lfigpromotelabels grestore 1520 1354 0 1298 240 288 12 0 0 LoutGr2 currentdict end 70 dict begin begin grestore 1067 338 56 282 240 288 12 453 1016 LoutGr2 currentdict end 70 dict begin begin grestore 614 338 56 282 240 288 12 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigellipse ] lfigdopath pop pop grestore 192 fnt83 56 107(SPLIT)m grestore (T) lfigpromotelabels grestore 732 846 0 790 240 288 12 0 0 LoutGr2 currentdict end 70 dict begin begin grestore 608 338 56 282 240 288 12 124 508 LoutGr2 currentdict end 70 dict begin begin grestore 484 338 56 282 240 288 12 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigellipse ] lfigdopath pop pop grestore 192 fnt83 56 107(COL)m grestore (T) lfigpromotelabels grestore 338 338 56 282 240 288 12 0 0 LoutGr2 currentdict end 70 dict begin begin grestore 338 338 56 282 240 288 12 0 0 LoutGr2 currentdict end 70 dict begin begin grestore 338 338 56 282 240 288 12 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore 192 fnt83 123 128(a)m grestore (T) lfigpromotelabels grestore (S) lfigpromotelabels grestore 0 0 0 0 240 288 12 338 282 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath pop pop grestore grestore 338 338 56 282 240 288 12 394 0 LoutGr2 currentdict end 70 dict begin begin grestore 338 338 56 282 240 288 12 0 0 LoutGr2 currentdict end 70 dict begin begin grestore 338 338 56 282 240 288 12 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore 192 fnt83 128 128(c)m grestore (T) lfigpromotelabels grestore (S) lfigpromotelabels grestore 0 0 0 0 240 288 12 732 282 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath pop pop grestore grestore (S) lfigpromotelabels grestore 0 0 0 0 240 288 12 732 790 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath pop pop grestore grestore 732 846 0 790 240 288 12 788 0 LoutGr2 currentdict end 70 dict begin begin grestore 628 338 56 282 240 288 12 104 508 LoutGr2 currentdict end 70 dict begin begin grestore 524 338 56 282 240 288 12 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigellipse ] lfigdopath pop pop grestore 192 fnt83 56 107(R)m 7(O)k 9(W)k grestore (T) lfigpromotelabels grestore 338 338 56 282 240 288 12 0 0 LoutGr2 currentdict end 70 dict begin begin grestore 338 338 56 282 240 288 12 0 0 LoutGr2 currentdict end 70 dict begin begin grestore 338 338 56 282 240 288 12 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore 192 fnt83 128 128(c)m grestore (T) lfigpromotelabels grestore (S) lfigpromotelabels grestore 0 0 0 0 240 288 12 338 282 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath pop pop grestore grestore 338 338 56 282 240 288 12 394 0 LoutGr2 currentdict end 70 dict begin begin grestore 338 338 56 282 240 288 12 0 0 LoutGr2 currentdict end 70 dict begin begin grestore 338 338 56 282 240 288 12 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore 192 fnt83 118 105(d)m grestore (T) lfigpromotelabels grestore (S) lfigpromotelabels grestore 0 0 0 0 240 288 12 732 282 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath pop pop grestore grestore (S) lfigpromotelabels grestore 0 0 0 0 240 288 12 1520 790 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath pop pop grestore grestore (S) lfigpromotelabels grestore 0 0 0 0 240 288 12 1520 1298 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath pop pop grestore grestore 1520 1354 0 1298 240 288 12 1576 0 LoutGr2 currentdict end 70 dict begin begin grestore 1067 338 56 282 240 288 12 453 1016 LoutGr2 currentdict end 70 dict begin begin grestore 614 338 56 282 240 288 12 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigellipse ] lfigdopath pop pop grestore 192 fnt83 56 107(SPLIT)m grestore (T) lfigpromotelabels grestore 732 846 0 790 240 288 12 0 0 LoutGr2 currentdict end 70 dict begin begin grestore 608 338 56 282 240 288 12 124 508 LoutGr2 currentdict end 70 dict begin begin grestore 484 338 56 282 240 288 12 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigellipse ] lfigdopath pop pop grestore 192 fnt83 56 107(COL)m grestore (T) lfigpromotelabels grestore 338 338 56 282 240 288 12 0 0 LoutGr2 currentdict end 70 dict begin begin grestore 338 338 56 282 240 288 12 0 0 LoutGr2 currentdict end 70 dict begin begin grestore 338 338 56 282 240 288 12 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore 192 fnt83 123 105(b)m grestore (T) lfigpromotelabels grestore (S) lfigpromotelabels grestore 0 0 0 0 240 288 12 338 282 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath pop pop grestore grestore 338 338 56 282 240 288 12 394 0 LoutGr2 currentdict end 70 dict begin begin grestore 338 338 56 282 240 288 12 0 0 LoutGr2 currentdict end 70 dict begin begin grestore 338 338 56 282 240 288 12 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore 192 fnt83 118 105(d)m grestore (T) lfigpromotelabels grestore (S) lfigpromotelabels grestore 0 0 0 0 240 288 12 732 282 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath pop pop grestore grestore (S) lfigpromotelabels grestore 0 0 0 0 240 288 12 732 790 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath pop pop grestore grestore 732 846 0 790 240 288 12 788 0 LoutGr2 currentdict end 70 dict begin begin grestore 628 338 56 282 240 288 12 104 508 LoutGr2 currentdict end 70 dict begin begin grestore 524 338 56 282 240 288 12 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigellipse ] lfigdopath pop pop grestore 192 fnt83 56 107(R)m 7(O)k 9(W)k grestore (T) lfigpromotelabels grestore 338 338 56 282 240 288 12 0 0 LoutGr2 currentdict end 70 dict begin begin grestore 338 338 56 282 240 288 12 0 0 LoutGr2 currentdict end 70 dict begin begin grestore 338 338 56 282 240 288 12 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore 192 fnt83 128 128(c)m grestore (T) lfigpromotelabels grestore (S) lfigpromotelabels grestore 0 0 0 0 240 288 12 338 282 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath pop pop grestore grestore 338 338 56 282 240 288 12 394 0 LoutGr2 currentdict end 70 dict begin begin grestore 338 338 56 282 240 288 12 0 0 LoutGr2 currentdict end 70 dict begin begin grestore 338 338 56 282 240 288 12 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore 192 fnt83 118 105(d)m grestore (T) lfigpromotelabels grestore (S) lfigpromotelabels grestore 0 0 0 0 240 288 12 732 282 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath pop pop grestore grestore (S) lfigpromotelabels grestore 0 0 0 0 240 288 12 1520 790 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath pop pop grestore grestore (S) lfigpromotelabels grestore 0 0 0 0 240 288 12 3096 1298 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath pop pop grestore grestore (S) lfigpromotelabels grestore 0 0 0 0 240 288 12 6248 1806 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath pop pop grestore grestore end end restore grestore 0 10598(In)m 244(f)s 2(act,)k 693(common)s 1576(sube)s 3(xpressions)k 3060(are)s 3395(identi\207ed)s 4343(\(tri)s 6(vially\))k 5286(and)s 5678(the)s 6013(result)s 6591(is)s 6788(a)s 6942(directed)s 7756(ac)s 3(yclic)k 8469(graph;)s 0 10310(each)m 486(af)s 6(fected)k 1296(leaf)s 1716(has)s 2076(tw)s 2(o)k 2477(parents,)s 3264(one)s 3657(for)s 3985(width)s 4578(and)s 4972(one)s 5365(for)s 5693(height;)s 6394(and)s 6788(each)s 240 fnt83 7274 10312(COL)m 240 fnt82 7790 10310(or)m 240 fnt83 8040 10312(R)m 9(O)k 12(W)k 240 fnt82 8604 10310(node)m 0 10022(has)m 360(one)s 752(parent)s 1398(and)s 1792(one)s 2184(child)s 2709(for)s 3037(each)s 3521(object)s 4155(lying)s 4690(on)s 4976(the)s 5314(corresponding)s 6726(mark.)s 7370(The)s 7788(data)s 8235(structure)s 0 9734(roughly)m 799(doubles)s 1595(in)s 1838(size,)s 2316(and)s 2720(this)s 3116(occurs)s 3791(only)s 4271(rarely)s 4881(in)s 5124(practice.)s 480 9360(This)m 956(method)s 1732(can)s 2121(cope)s 2629(with)s 3111(an)s 3(y)k 3508(le)s 3(g)k 1(al)k 4023(input,)s 4622(including)s 220 fnt35 480 8859({ a // c | d } | { b / e })m 480 8571(/ { f / i } | { g | h // j })m 240 fnt82 0 8072(which)m 642(produces)s 1557(o)s 3(v)k 3(erlapping)k 2747(spanning)s 3665(columns:)s gsave 480 5924 translate 240 fnt83 1699 1808 0 1695 240 288 60 LoutGraphic gsave grestore save gsave 200 dict begin lfigdict begin grestore 1133 452 113 339 240 288 60 0 1356 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigbox ] lfigdopath pop pop grestore 230 fnt83 511 178(a)m grestore 566 452 113 339 240 288 60 1133 1356 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigbox ] lfigdopath pop pop grestore 230 fnt83 228 150(b)m grestore 566 452 113 339 240 288 60 0 904 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigbox ] lfigdopath pop pop grestore 230 fnt83 234 178(c)m grestore 566 452 113 339 240 288 60 566 904 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigbox ] lfigdopath pop pop grestore 230 fnt83 222 150(d)m grestore 566 452 113 339 240 288 60 1132 904 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigbox ] lfigdopath pop pop grestore 230 fnt83 235 178(e)m grestore 566 452 113 339 240 288 60 0 452 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigbox ] lfigdopath pop pop grestore 230 fnt83 235 173(f)m grestore 566 452 113 339 240 288 60 566 452 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigbox ] lfigdopath pop pop grestore 230 fnt83 228 200(g)m grestore 566 452 113 339 240 288 60 1132 452 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigbox ] lfigdopath pop pop grestore 230 fnt83 228 149(h)m grestore 566 452 113 339 240 288 60 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigbox ] lfigdopath pop pop grestore 230 fnt83 253 153(i)m grestore 1133 452 113 339 240 288 60 566 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigbox ] lfigdopath pop pop grestore 230 fnt83 535 176(j)m grestore end end restore grestore 0 5473(The)m 428(box)s 3(es)k 1035(ha)s 4(v)k 3(e)k 1536(been)s 2045(added)s 2675(to)s 2914(clarify)s 3590(the)s 3938(structure.)s 4937(The)s 5365(width)s 5967(of)s 6238(this)s 6634(object)s 7278(is)s 7488(formally)s 240 fnt78 480 4915(\()m 564(\()s 240 fnt83 648 4923(width)m 240 fnt78 1187 4915(\()m 240 fnt83 1271 4923(a)m 240 fnt78 1398 4915(\))m 1548(\255)s 1769(\()s 240 fnt83 1853 4923(x)m 240 fnt78 2031 4915(+)m 240 fnt83 2232 4923(y)m 240 fnt78 2346 4915(\))m 2424(\))s 2562(+)s 240 fnt83 2763 4923(z)m 240 fnt78 2866 4915(\))m 3016(\255)s 3237(\()s 240 fnt83 3321 4923(x)m 240 fnt78 3499 4915(+)m 3700(\()s 3784(\()s 240 fnt83 3868 4923(y)m 240 fnt78 4042 4915(+)m 240 fnt83 4243 4923(z)m 240 fnt78 4346 4915(\))m 4496(\255)s 240 fnt83 4717 4923(width)m 240 fnt78 5256 4915(\()m 240 fnt83 5340 4923(j)m 240 fnt78 5418 4915(\))m 5496(\))s 5574(\))s 240 fnt82 0 4419(where)m 240 fnt83 480 3918(x)m 240 fnt78 670 3910(=)m 240 fnt83 883 3918(width)m 240 fnt78 1422 3910(\()m 240 fnt83 1506 3918(c)m 240 fnt78 1620 3910(\))m 1770(\255)s 240 fnt83 1991 3918(width)m 240 fnt78 2530 3910(\()m 240 fnt83 2662 3918(f)m 240 fnt78 2823 3910(\))m 2973(\255)s 240 fnt83 3194 3918(width)m 240 fnt78 3733 3910(\()m 240 fnt83 3817 3918(i)m 240 fnt78 3892 3910(\))m 240 fnt83 480 3367(y)m 240 fnt78 666 3359(=)m 240 fnt83 879 3367(width)m 240 fnt78 1418 3359(\()m 240 fnt83 1502 3367(d)m 240 fnt78 1688 3359(\))m 1838(\255)s 240 fnt83 2059 3367(width)m 240 fnt78 2598 3359(\()m 240 fnt83 2682 3367(g)m 240 fnt78 2808 3359(\))m 240 fnt83 480 2816(z)m 240 fnt78 655 2808(=)m 240 fnt83 868 2816(width)m 240 fnt78 1407 2808(\()m 240 fnt83 1491 2816(b)m 240 fnt78 1617 2808(\))m 1767(\255)s 240 fnt83 1988 2816(width)m 240 fnt78 2527 2808(\()m 240 fnt83 2611 2816(e)m 240 fnt78 2722 2808(\))m 2872(\255)s 240 fnt83 3093 2816(width)m 240 fnt78 3632 2808(\()m 240 fnt83 3716 2816(h)m 240 fnt78 3843 2808(\))m 240 fnt82 0 2312(It)m 224(seems)s 878(clear)s 1420(that)s 240 fnt83 1857 2314(y)m 240 fnt82 2038 2312(at)m 2289(least)s 2805(must)s 3349(appear)s 4065(twice)s 4657(in)s 4919(an)s 3(y)k 5335(e)s 3(xpression)k 6431(for)s 6788(the)s 7155(width)s 7776(of)s 8066(this)s 8482(object)s 0 2024(made)m 602(out)s 997(of)s 1297(simple)s 2019(addition)s 2889(and)s 3322(maxing)s 4121(operations,)s 5253(sho)s 6(wing)k 6141(that)s 6588(an)s 6900(ordinary)s 7793(tree)s 8235(structure)s 0 1736(is)m 227(insuf\207cient)s 1379(for)s 1734(o)s 3(v)k 3(erlapping)k 2941(spanning)s 3876(columns.)s 4868(The)s 5313(Basser)s 6027(Lout)s 6556(interpreter)s 7626(actually)s 8453(rejects)s 0 1448(such)m 521(structures,)s 1581(o)s 6(wing)k 2252(to)s 2517(the)s 2890(author')s 13(s)k 3736(doubts)s 4451(about)s 5069(the)s 5442(implementability)s 7153(of)s 240 fnt83 7449 1450(Constr)m 3(ained)k 240 fnt82 8722 1448(and)m 240 fnt83 0 1162(AdjustSize)m 240 fnt82 1049 1160(\(Section)m 1902(5.3\))s 2330(on)s 2627(them;)s 3217(b)s 4(ut)k 3579(with)s 4061(hindsight)s 5012(this)s 5408(caution)s 6169(w)s 2(as)k 6590(unnecessary)s 15(.)k 480 786(The)m 915(directed)s 1749(ac)s 3(yclic)k 2482(graph)s 3091(is)s 3308(ordered)s 4104(in)s 4354(the)s 4709(sense)s 5290(that)s 5715(the)s 6071(order)s 6642(of)s 6920(the)s 7275(edges)s 7878(entering)s 8722(and)s 0 498(lea)m 4(ving)k 746(each)s 1234(node)s 1748(matters.)s 2607(The)s 3028(structure)s 3911(is)s 4114(highly)s 4773(dynamic,)s 5696(and)s 6093(tra)s 4(v)k 3(ersals)k 7044(both)s 7519(with)s 7994(and)s 8390(ag)s 1(ainst)k grestore grestore grestore pgsave restore showpage %%Page: 12 13 %%BeginPageSetup %%PageResources: font Times-Roman %%+ font Times-Italic %%+ font Times-Bold %%+ font Helvetica /pgsave save def %%IncludeResource: font Helvetica /Helveticafnt35 vec2 /Helvetica LoutRecode /fnt35 { /Helveticafnt35 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave 0 0 translate 240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate 9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 0 LoutMargSet grestore 4288 13844(-)m 4416(12)s 4710(-)s 0 13256(the)m 349(arro)s 6(ws)k 1045(are)s 1394(required.)s 2355(After)s 2920(a)s 3087(fe)s 6(w)k 3494(ad-)s 3788(hoc)s 4189(attempts)s 5050(to)s 5291(e)s 3(xtend)k 5985(the)s 6334(usual)s 6896(tree)s 7310(representation)s 8722(had)s 0 12968(f)m 2(ailed,)k 665(the)s 1030(author)s 1718(de)s 6(v)k 3(eloped)k 2769(a)s 2952(representation)s 4379(based)s 5000(on)s 5314(doubly)s 6051(link)s 2(ed)k 6723(lists)s 7175(of)s 7463(records)s 8235(denoting)s 0 12680(links,)m 578(whose)s 1253(\210e)s 3(xibility)k 2240(more)s 2794(than)s 3270(compensated)s 4584(for)s 4929(the)s 5284(some)s 6(what)k 6315(e)s 3(xcessi)k 6(v)k 3(e)k 7282(memory)s 8140(consump)s 8998(-)s 0 12392(tion.)m 536(F)s 3(or)k 925(e)s 3(xample,)k gsave 480 10526 translate 240 fnt83 3282 1526 0 1470 240 288 12 LoutGraphic gsave grestore save gsave 200 dict begin lfigdict begin grestore 338 338 56 282 240 288 12 0 1188 LoutGr2 currentdict end 200 dict begin begin grestore 338 338 56 282 240 288 12 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore 192 fnt83 123 128(a)m grestore (A) lfigpromotelabels grestore 338 338 56 282 240 288 12 2944 1188 LoutGr2 currentdict end 200 dict begin begin grestore 338 338 56 282 240 288 12 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore 192 fnt83 123 105(b)m grestore (B) lfigpromotelabels grestore 338 338 56 282 240 288 12 0 0 LoutGr2 currentdict end 200 dict begin begin grestore 338 338 56 282 240 288 12 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore 192 fnt83 128 128(c)m grestore (C) lfigpromotelabels grestore 338 338 56 282 240 288 12 1472 0 LoutGr2 currentdict end 200 dict begin begin grestore 338 338 56 282 240 288 12 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore 192 fnt83 118 105(d)m grestore (D) lfigpromotelabels grestore 0 0 0 0 240 288 12 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ A@CTR A@CTR C@CTR lfigangle A@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef C@CTR C@CTR A@CTR lfigangle C@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath 0.15 cm /lfigsolid /lfigblack lfigopen 0.15 cm 0.05 cm lfigforward grestore grestore 0 0 0 0 240 288 12 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ A@CTR A@CTR D@CTR lfigangle A@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef D@CTR D@CTR A@CTR lfigangle D@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath 0.15 cm /lfigsolid /lfigblack lfigopen 0.15 cm 0.05 cm lfigforward grestore grestore 0 0 0 0 240 288 12 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ B@CTR B@CTR D@CTR lfigangle B@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef D@CTR D@CTR B@CTR lfigangle D@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath 0.15 cm /lfigsolid /lfigblack lfigopen 0.15 cm 0.05 cm lfigforward grestore grestore end end restore grestore 0 10075(is)m 210(represented)s 1369(by)s gsave 1135 5559 translate 240 fnt83 6796 4176 0 4120 240 288 12 LoutGraphic gsave grestore save gsave 300 dict begin lfigdict begin grestore 452 1014 0 958 240 288 12 0 3162 LoutGr2 currentdict end 300 dict begin begin grestore 452 338 56 282 240 288 12 0 676 LoutGr2 currentdict end 300 dict begin begin grestore 452 338 56 282 240 288 12 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigbox ] lfigdopath pop pop grestore grestore (TOP) lfigpromotelabels grestore 452 338 56 282 240 288 12 0 338 LoutGr2 currentdict end 300 dict begin begin grestore 452 338 56 282 240 288 12 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigbox ] lfigdopath pop pop grestore gsave 206 150 translate 192 fnt83 39 39 0 39 192 288 48 LoutGraphic gsave /lfigblack [ lfigcircle ] gsave lfigpaintpath grestore 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore grestore grestore (MID) lfigpromotelabels grestore 452 338 56 282 240 288 12 0 0 LoutGr2 currentdict end 300 dict begin begin grestore 452 338 56 282 240 288 12 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigbox ] lfigdopath pop pop grestore 192 fnt83 180 128(a)m grestore (BASE) lfigpromotelabels grestore (A) lfigpromotelabels grestore 452 1014 0 958 240 288 12 6344 3162 LoutGr2 currentdict end 300 dict begin begin grestore 452 338 56 282 240 288 12 0 676 LoutGr2 currentdict end 300 dict begin begin grestore 452 338 56 282 240 288 12 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigbox ] lfigdopath pop pop grestore grestore (TOP) lfigpromotelabels grestore 452 338 56 282 240 288 12 0 338 LoutGr2 currentdict end 300 dict begin begin grestore 452 338 56 282 240 288 12 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigbox ] lfigdopath pop pop grestore gsave 206 150 translate 192 fnt83 39 39 0 39 192 288 48 LoutGraphic gsave /lfigblack [ lfigcircle ] gsave lfigpaintpath grestore 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore grestore grestore (MID) lfigpromotelabels grestore 452 338 56 282 240 288 12 0 0 LoutGr2 currentdict end 300 dict begin begin grestore 452 338 56 282 240 288 12 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigbox ] lfigdopath pop pop grestore 192 fnt83 180 105(b)m grestore (BASE) lfigpromotelabels grestore (B) lfigpromotelabels grestore 452 1014 0 958 240 288 12 0 1581 LoutGr2 currentdict end 300 dict begin begin grestore 452 338 56 282 240 288 12 0 676 LoutGr2 currentdict end 300 dict begin begin grestore 452 338 56 282 240 288 12 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigbox ] lfigdopath pop pop grestore gsave 206 150 translate 192 fnt83 39 39 0 39 192 288 48 LoutGraphic gsave /lfigblack [ lfigcircle ] gsave lfigpaintpath grestore 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore grestore grestore (TOP) lfigpromotelabels grestore 452 338 56 282 240 288 12 0 338 LoutGr2 currentdict end 300 dict begin begin grestore 452 338 56 282 240 288 12 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigbox ] lfigdopath pop pop grestore gsave 206 150 translate 192 fnt83 39 39 0 39 192 288 48 LoutGraphic gsave /lfigblack [ lfigcircle ] gsave lfigpaintpath grestore 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore grestore grestore (MID) lfigpromotelabels grestore 452 338 56 282 240 288 12 0 0 LoutGr2 currentdict end 300 dict begin begin grestore 452 338 56 282 240 288 12 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigbox ] lfigdopath pop pop grestore 192 fnt83 104 107(LK)m grestore (BASE) lfigpromotelabels grestore (L) lfigpromotelabels grestore 452 1014 0 958 240 288 12 1586 1581 LoutGr2 currentdict end 300 dict begin begin grestore 452 338 56 282 240 288 12 0 676 LoutGr2 currentdict end 300 dict begin begin grestore 452 338 56 282 240 288 12 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigbox ] lfigdopath pop pop grestore gsave 206 150 translate 192 fnt83 39 39 0 39 192 288 48 LoutGraphic gsave /lfigblack [ lfigcircle ] gsave lfigpaintpath grestore 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore grestore grestore (TOP) lfigpromotelabels grestore 452 338 56 282 240 288 12 0 338 LoutGr2 currentdict end 300 dict begin begin grestore 452 338 56 282 240 288 12 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigbox ] lfigdopath pop pop grestore gsave 206 150 translate 192 fnt83 39 39 0 39 192 288 48 LoutGraphic gsave /lfigblack [ lfigcircle ] gsave lfigpaintpath grestore 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore grestore grestore (MID) lfigpromotelabels grestore 452 338 56 282 240 288 12 0 0 LoutGr2 currentdict end 300 dict begin begin grestore 452 338 56 282 240 288 12 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigbox ] lfigdopath pop pop grestore 192 fnt83 104 107(LK)m grestore (BASE) lfigpromotelabels grestore (M) lfigpromotelabels grestore 452 1014 0 958 240 288 12 4758 1581 LoutGr2 currentdict end 300 dict begin begin grestore 452 338 56 282 240 288 12 0 676 LoutGr2 currentdict end 300 dict begin begin grestore 452 338 56 282 240 288 12 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigbox ] lfigdopath pop pop grestore gsave 206 150 translate 192 fnt83 39 39 0 39 192 288 48 LoutGraphic gsave /lfigblack [ lfigcircle ] gsave lfigpaintpath grestore 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore grestore grestore (TOP) lfigpromotelabels grestore 452 338 56 282 240 288 12 0 338 LoutGr2 currentdict end 300 dict begin begin grestore 452 338 56 282 240 288 12 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigbox ] lfigdopath pop pop grestore gsave 206 150 translate 192 fnt83 39 39 0 39 192 288 48 LoutGraphic gsave /lfigblack [ lfigcircle ] gsave lfigpaintpath grestore 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore grestore grestore (MID) lfigpromotelabels grestore 452 338 56 282 240 288 12 0 0 LoutGr2 currentdict end 300 dict begin begin grestore 452 338 56 282 240 288 12 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigbox ] lfigdopath pop pop grestore 192 fnt83 104 107(LK)m grestore (BASE) lfigpromotelabels grestore (N) lfigpromotelabels grestore 452 1014 0 958 240 288 12 0 0 LoutGr2 currentdict end 300 dict begin begin grestore 452 338 56 282 240 288 12 0 676 LoutGr2 currentdict end 300 dict begin begin grestore 452 338 56 282 240 288 12 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigbox ] lfigdopath pop pop grestore gsave 206 150 translate 192 fnt83 39 39 0 39 192 288 48 LoutGraphic gsave /lfigblack [ lfigcircle ] gsave lfigpaintpath grestore 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore grestore grestore (TOP) lfigpromotelabels grestore 452 338 56 282 240 288 12 0 338 LoutGr2 currentdict end 300 dict begin begin grestore 452 338 56 282 240 288 12 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigbox ] lfigdopath pop pop grestore grestore (MID) lfigpromotelabels grestore 452 338 56 282 240 288 12 0 0 LoutGr2 currentdict end 300 dict begin begin grestore 452 338 56 282 240 288 12 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigbox ] lfigdopath pop pop grestore 192 fnt83 185 128(c)m grestore (BASE) lfigpromotelabels grestore (C) lfigpromotelabels grestore 452 1014 0 958 240 288 12 3172 0 LoutGr2 currentdict end 300 dict begin begin grestore 452 338 56 282 240 288 12 0 676 LoutGr2 currentdict end 300 dict begin begin grestore 452 338 56 282 240 288 12 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigbox ] lfigdopath pop pop grestore gsave 206 150 translate 192 fnt83 39 39 0 39 192 288 48 LoutGraphic gsave /lfigblack [ lfigcircle ] gsave lfigpaintpath grestore 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore grestore grestore (TOP) lfigpromotelabels grestore 452 338 56 282 240 288 12 0 338 LoutGr2 currentdict end 300 dict begin begin grestore 452 338 56 282 240 288 12 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigbox ] lfigdopath pop pop grestore grestore (MID) lfigpromotelabels grestore 452 338 56 282 240 288 12 0 0 LoutGr2 currentdict end 300 dict begin begin grestore 452 338 56 282 240 288 12 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigbox ] lfigdopath pop pop grestore 192 fnt83 175 105(d)m grestore (BASE) lfigpromotelabels grestore (D) lfigpromotelabels grestore 0 0 0 0 240 288 12 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ 0.5 cm 0 A@MID@CTR L@MID@CTR A@MID@CTR M@MID@CTR lfigpmin lfigpmin lfigpmin lfigpsub /BL lfigpointdef A@MID@CTR L@MID@CTR A@MID@CTR M@MID@CTR lfigpmax lfigpmax lfigpmax 0.5 cm 0 lfigpadd /TR lfigpointdef BL 0 BL TR lfigydistance lfigpadd /TL lfigpointdef BL BL TR lfigxdistance 0 lfigpadd /BR lfigpointdef BL BR [ BR 0 0.5 cm lfigpadd ] BR 0.5 cm 0.5 cm lfigpadd TR 0.5 cm -0.5 cm lfigpadd [ 0 0.5 cm TR lfigpsub ] TR TL [ 0 0.5 cm TL lfigpsub ] 0.5 cm 0.5 cm TL lfigpsub BL -0.5 cm 0.5 cm lfigpadd [ BL 0 0.5 cm lfigpadd ] BL ] lfigdopath pop pop grestore grestore 0 0 0 0 240 288 12 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ 0.5 cm 0 L@TOP@CTR C@TOP@CTR L@TOP@CTR C@TOP@CTR lfigpmin lfigpmin lfigpmin lfigpsub /BL lfigpointdef L@TOP@CTR C@TOP@CTR L@TOP@CTR C@TOP@CTR lfigpmax lfigpmax lfigpmax 0.5 cm 0 lfigpadd /TR lfigpointdef BL 0 BL TR lfigydistance lfigpadd /TL lfigpointdef BL BL TR lfigxdistance 0 lfigpadd /BR lfigpointdef BL BR [ BR 0 0.5 cm lfigpadd ] BR 0.5 cm 0.5 cm lfigpadd TR 0.5 cm -0.5 cm lfigpadd [ 0 0.5 cm TR lfigpsub ] TR TL [ 0 0.5 cm TL lfigpsub ] 0.5 cm 0.5 cm TL lfigpsub BL -0.5 cm 0.5 cm lfigpadd [ BL 0 0.5 cm lfigpadd ] BL ] lfigdopath pop pop grestore grestore 0 0 0 0 240 288 12 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ 0.5 cm 0 M@TOP@CTR D@TOP@CTR N@TOP@CTR D@TOP@CTR lfigpmin lfigpmin lfigpmin lfigpsub /BL lfigpointdef M@TOP@CTR D@TOP@CTR N@TOP@CTR D@TOP@CTR lfigpmax lfigpmax lfigpmax 0.5 cm 0 lfigpadd /TR lfigpointdef BL 0 BL TR lfigydistance lfigpadd /TL lfigpointdef BL BL TR lfigxdistance 0 lfigpadd /BR lfigpointdef BL BR [ BR 0 0.5 cm lfigpadd ] BR 0.5 cm 0.5 cm lfigpadd TR 0.5 cm -0.5 cm lfigpadd [ 0 0.5 cm TR lfigpsub ] TR TL [ 0 0.5 cm TL lfigpsub ] 0.5 cm 0.5 cm TL lfigpsub BL -0.5 cm 0.5 cm lfigpadd [ BL 0 0.5 cm lfigpadd ] BL ] lfigdopath pop pop grestore grestore 0 0 0 0 240 288 12 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ 0.5 cm 0 B@MID@CTR N@MID@CTR B@MID@CTR N@MID@CTR lfigpmin lfigpmin lfigpmin lfigpsub /BL lfigpointdef B@MID@CTR N@MID@CTR B@MID@CTR N@MID@CTR lfigpmax lfigpmax lfigpmax 0.5 cm 0 lfigpadd /TR lfigpointdef BL 0 BL TR lfigydistance lfigpadd /TL lfigpointdef BL BL TR lfigxdistance 0 lfigpadd /BR lfigpointdef BL BR [ BR 0 0.5 cm lfigpadd ] BR 0.5 cm 0.5 cm lfigpadd TR 0.5 cm -0.5 cm lfigpadd [ 0 0.5 cm TR lfigpsub ] TR TL [ 0 0.5 cm TL lfigpsub ] 0.5 cm 0.5 cm TL lfigpsub BL -0.5 cm 0.5 cm lfigpadd [ BL 0 0.5 cm lfigpadd ] BL ] lfigdopath pop pop grestore grestore end end restore grestore 0 5108(where)m 240 fnt83 645 5110(LK)m 240 fnt82 1017 5108(tags)m 1458(a)s 1630(record)s 2304(representing)s 3543(a)s 3715(link.)s 4257(The)s 4690(\207rst)s 5127(list)s 5484(in)s 5732(an)s 3(y)k 6135(node)s 6663(contains)s 7516(all)s 7815(the)s 8169(incoming)s 0 4820(links,)m 577(the)s 931(second)s 1660(contains)s 2514(the)s 2867(outgoing)s 3778(ones.)s 4387(The)s 4821(node)s 5348(serv)s 3(es)k 5999(as)s 6255(the)s 6609(header)s 7311(for)s 7655(both)s 8144(lists.)s 8698(The)s 0 4532(required)m 890(operations)s 1974(reduce)s 2704(to)s 2979(simple)s 3709(appends,)s 4638(deletes,)s 5444(and)s 5885(tra)s 4(v)k 3(ersals)k 6880(of)s 7187(doubly)s 7944(link)s 2(ed)k 8635(lists,)s 0 4244(all)m 325(ha)s 4(ving)k 1058(small)s 1663(constant)s 2552(cost.)s 3133(There)s 3779(is)s 4021(a)s 4219(highly)s 4918(tuned)s 5540(memory)s 6423(allocator)s 9(,)k 7389(and)s 7825(care)s 8310(is)s 8553(tak)s 2(en)k 0 3956(to)m 269(dispose)s 1073(of)s 1374(each)s 1900(node)s 2452(when)s 3058(the)s 3436(last)s 3858(incoming)s 4845(link)s 5308(is)s 5549(deleted,)s 6376(so)s 6672(that)s 7120(there)s 7684(is)s 7924(no)s 8247(need)s 8788(for)s 0 3668(g)m 1(arbage)k 812(collection.)s 480 3294(In)m 739(normal)s 1475(use)s 1854(the)s 2205(number)s 3000(of)s 3275(nodes)s 3888(at)s 4124(higher)s 4799(le)s 6(v)k 3(els)k 5402(of)s 5676(the)s 6028(dag)s 6431(is)s 6644(small)s 7220(in)s 7467(comparison)s 8644(with)s 0 3006(the)m 351(lea)s 4(v)k 3(es)k 995(and)s 1402(their)s 1903(incoming)s 2863(links,)s 3438(so)s 3707(we)s 4046(may)s 4515(estimate)s 5369(the)s 5720(space)s 6311(comple)s 3(xity)k 7441(at)s 7676(about)s 8271(60)s 8570(bytes)s 0 2718(per)m 355(input)s 896(w)s 2(ord)k 1433(\(20)s 1797(bytes)s 2342(per)s 2696(link,)s 3165(40)s 3449(per)s 3803(leaf)s 4222(node\).)s 4920(Careful)s 5680(optimization)s 6935(could)s 7514(easily)s 8114(halv)s 3(e)k 8674(this,)s 0 2430(b)m 4(ut)k 362(since)s 909(memory)s 1760(is)s 1970(reclaimed)s 2969(after)s 3465(printing)s 4275(each)s 4770(page)s 5278(there)s 5811(is)s 6021(little)s 6513(need.)s 240 fnt84 0 1781(2.5.)m 471(Context-sensiti)s 2(v)k 2(e)k 2274(attrib)s 4(utes)k 3318(of)s 3590(objects)s 240 fnt82 480 1305(Although)m 1466(we)s 1826(are)s 2198(free)s 2649(to)s 2913(place)s 3498(an)s 3(y)k 3920(object)s 4588(in)s 4856(an)s 3(y)k 5278(conte)s 3(xt,)k 6111(the)s 6484(conte)s 3(xt)k 7270(must)s 7820(in\210uence)s 8778(the)s 0 1017(appearance)m 1131(of)s 1402(the)s 1750(object,)s 2441(since)s 2988(otherwise)s 220 fnt35 480 518(A shor)m -8(t par)k 2(ag)k 2(r)k 2(aph of te)k 6(xt.)k grestore grestore grestore pgsave restore showpage %%Page: 13 14 %%BeginPageSetup %%PageResources: font Times-Roman %%+ font Helvetica %%+ font Times-Italic /pgsave save def %%IncludeResource: font Helvetica /Helveticafnt35 vec2 /Helvetica LoutRecode /fnt35 { /Helveticafnt35 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave 0 0 translate 240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate 9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 1 LoutMargSet grestore 4293 13844(-)m 4421(13)s 4705(-)s 0 13253(could)m 588(not)s 952(appear)s 1647(in)s 1887(a)s 2051(v)s 6(ariety)k 2760(of)s 3028(fonts,)s 3611(column)s 4384(widths,)s 5126(etc.)s 5566(This)s 6040(in\210uence)s 6970(cannot)s 7666(tak)s 2(e)k 8116(the)s 8461(purely)s 0 12965(static)m 569(form)s 1106(that)s 1538(block-structured)s 3175(languages)s 4196(use)s 4585(to)s 4837(associate)s 5769(v)s 6(alues)k 6438(with)s 6933(identi\207ers,)s 8009(for)s 8360(then)s 8843(an)s 0 12677(operator)m 850(could)s 1434(not)s 1794(in\210uence)s 2721(the)s 3063(appearance)s 4188(of)s 4453(its)s 4723(parameters;)s 5876(and)s 6274(a)s 6434(state)s 6921(v)s 6(ariable)k 7734(solution)s 8556(is)s 8760(not)s 0 12389(compatible)m 1118(with)s 1600(the)s 1948(o)s 3(v)k 3(erall)k 2660(functional)s 3684(design.)s 480 12015(The)m 914(information)s 2105(needed)s 2848(from)s 3378(the)s 3733(conte)s 3(xt)k 4500(seems)s 5141(quite)s 5682(limited,)s 6471(comprising)s 7607(the)s 7961(font)s 8413(f)s 2(amily)k 15(,)k 0 11727(f)m 2(ace,)k 525(and)s 952(size)s 1402(to)s 1664(use,)s 2114(the)s 2485(style)s 3015(of)s 3309(paragraph)s 4345(breaking)s 5259(required,)s 6185(ho)s 6(w)k 6669(much)s 7281(space)s 7891(to)s 8154(substitute)s 0 11439(between)m 873(the)s 1240(w)s 2(ords)k 1893(of)s 2184(paragraphs,)s 3359(and)s 3782(ho)s 6(w)k 4263(much)s 4871(horizontal)s 5914(and)s 6337(v)s 3(ertical)k 7124(space)s 7730(is)s 7959(a)s 4(v)k 6(ailable)k 8887(to)s 0 11151(recei)m 6(v)k 3(e)k 763(the)s 1139(object.)s 1914(These)s 2569(four)s 3054(items)s 3650(constitute)s 4662(the)s 5038(so-called)s 5985(`style)s 6599(information')s 7866(of)s 8165(Lout.)s 8809(As)s 0 10863(graphics)m 902(rendering)s 1912(hardw)s 2(are)k 2896(impro)s 3(v)k 3(es,)k 3928(the)s 4317(style)s 4865(information)s 6091(will)s 6558(probably)s 7504(gro)s 6(w)k 8085(to)s 8366(include)s 0 10575(colour)m 671(and)s 1075(te)s 3(xture)k 1791(information.)s 480 10201(The)m 908(w)s 2(ay)k 1359(to)s 1598(deal)s 2051(with)s 2533(fonts)s 3062(at)s 3294(least)s 3791(is)s 4001(v)s 3(ery)k 4477(clear:)s 220 fnt35 480 9700({ )m 11(Times Slope 12p } @F)k 6(ont { Hello)k 8(, w)k 2(or)k -3(ld })k 240 fnt82 0 9204(should)m 697(ha)s 4(v)k 3(e)k 1198(result)s 240 fnt83 480 8750(Hello,)m 1104(world)s 240 fnt82 0 8268(Lout)m 528(also)s 983(pro)s 3(vides)k 220 fnt35 1872 8265(@Break)m 240 fnt82 2745 8268(and)m 220 fnt35 3166 8265(@Space)m 240 fnt82 4080 8268(symbols)m 4946(for)s 5301(controlling)s 6420(the)s 6785(paragraph)s 7815(breaking)s 8722(and)s 0 7980(space)m 610(styles)s 1229(mentioned)s 2320(abo)s 3(v)k 3(e.)k 3074(These)s 3724(w)s 2(ork)k 4299(in)s 4565(the)s 4937(same)s 5507(w)s 2(ay)k 15(,)k 6020(returning)s 6972(their)s 7493(right)s 8028(parameters)s 0 7692(in)m 261(the)s 627(style)s 1152(of)s 1441(their)s 1956(left.)s 2455(The)s 2901(implementation)s 4476(is)s 4704(v)s 3(ery)k 5198(simple:)s 6019(one)s 6439(merely)s 7174(broadcasts)s 8252(the)s 8619(style)s 0 7404(information)m 1183(do)s 6(wn)k 1765(into)s 2188(the)s 2533(parse)s 3091(tree)s 3502(of)s 3771(the)s 4116(right)s 4625(parameter)s 13(.)k 5728(A)s 5956(font,)s 6445(for)s 6781(e)s 3(xample,)k 7693(is)s 7901(con)s 9(v)k 3(erted)k 8887(to)s 0 7116(an)m 278(8-bit)s 783(internal)s 1562(name)s 2130(and)s 2529(stored)s 3165(in)s 3403(each)s 3892(leaf,)s 4351(while)s 4932(a)s 5093(breaking)s 5977(style)s 6479(is)s 6683(stored)s 7320(in)s 7557(the)s 7900(root)s 8339(node)s 8855(of)s 0 6828(each)m 495(paragraph.)s 480 6454(The)m 954(same)s 1547(language)s 2514(design)s 3242(can)s 3677(be)s 4006(used)s 4549(for)s 4933(a)s 4(v)k 6(ailable)k 5888(width)s 6536(and)s 6986(height,)s 7738(only)s 8264(here)s 8778(the)s 0 6166(implementation)m 1557(is)s 1767(much)s 2356(more)s 2903(demanding:)s 220 fnt35 480 5665(2i @Wide {)m 480 5377(\(1\) |0.1i An e)m 6(xample)k 480 5089(containing a small)m 480 4801(par)m 2(ag)k 2(r)k 2(aph of \207lled te)k 6(xt.)k 480 4513(})m 240 fnt82 0 4019(is)m 210(guaranteed)s 1317(to)s 1556(be)s 1838(tw)s 2(o)k 2248(inches)s 2910(wide:)s 480 3516(\(1\))m 891(An)s 1270(e)s 3(xample)k 2162(containing)s 3254(a)s 891 3228(small)m 1504(paragraph)s 2558(of)s 2871(\207lled)s 891 2940(te)m 3(xt.)k 0 2487(One)m 448(must)s 966(calculate)s 1863(that)s 2273(1.9)s 2617(inches)s 3272(minus)s 3900(the)s 4241(width)s 4836(of)s 220 fnt35 5100 2484(\(1\))m 240 fnt82 5406 2487(is)m 5609(a)s 4(v)k 6(ailable)k 6510(to)s 6741(the)s 7082(paragraph,)s 8138(and)s 8534(break)s 0 2199(it)m 186(accordingly;)s 1421(Basser)s 2111(Lout)s 2617(does)s 3100(this)s 3490(in)s 3727(tw)s 2(o)k 4130(stages.)s 4872(In)s 5121(the)s 5463(\207rst,)s 5935(upw)s 2(ard-mo)k 3(ving)k 7505(stage,)s 8097(widths)s 8779(are)s 0 1911(calculated)m 1018(using)s 1581(the)s 1920(formulae)s 2829(of)s 3091(Section)s 3856(2.3,)s 4254(which)s 4887(assume)s 5638(that)s 6047(a)s 4(v)k 6(ailable)k 6946(space)s 7524(is)s 7725(in\207nite.)s 8557(If)s 8778(the)s 0 1623(upw)m 2(ard)k 763(mo)s 3(v)k 3(ement)k 1815(reaches)s 2570(a)s 240 fnt83 2724 1625(WIDE)m 240 fnt82 3375 1623(node,)m 3936(corresponding)s 5346(to)s 5573(a)s 220 fnt35 5728 1620(@Wide)m 240 fnt82 6490 1623(operator)m 9(,)k 7372(and)s 7764(the)s 8100(calculated)s 0 1335(width)m 627(e)s 3(xceeds)k 1457(that)s 1900(allo)s 6(wed,)k 2784(a)s 2975(second,)s 3772(do)s 6(wnw)k 2(ard-mo)k 3(ving)k 5661(stage)s 6234(is)s 6469(initiated)s 7334(which)s 8001(attempts)s 8887(to)s 0 1047(reduce)m 681(the)s 1017(width)s 1606(by)s 1888(\207nding)s 2607(and)s 2999(breaking)s 3877(paragraphs.)s 5077(This)s 5541(second)s 6251(stage)s 6786(is)s 6984(quite)s 7505(routine)s 8226(e)s 3(xcept)k 8894(at)s 220 fnt35 0 756(|)m 240 fnt82 84 759(nodes,)m 736(whose)s 1390(children)s 2216(are)s 2549(the)s 2883(columns)s 3731(of)s 3988(a)s 4141(table.)s 4755(It)s 4946(is)s 5142(necessary)s 6111(to)s 6336(apportion)s 7296(the)s 7630(a)s 4(v)k 6(ailable)k 8524(width)s 0 471(\(minus)m 727(inter)s 4(-column)k 2026(g)s 1(aps\))k 2604(among)s 3321(the)s 3681(columns.)s 4668(Basser)s 5377(Lout)s 5901(lea)s 4(v)k 3(es)k 6554(narro)s 6(w)k 7291(columns)s 8166(unbrok)s 2(en)k grestore grestore grestore pgsave restore showpage %%Page: 14 15 %%BeginPageSetup %%PageResources: font Times-Roman %%+ font Helvetica %%+ font Times-Bold %%+ font Symbol /pgsave save def %%IncludeResource: font Helvetica /Helveticafnt35 vec2 /Helvetica LoutRecode /fnt35 { /Helveticafnt35 LoutFont } def %%IncludeResource: font Symbol /fnt78 { /Symbol LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave 0 0 translate 240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate 9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 0 LoutMargSet grestore 4288 13844(-)m 4416(14)s 4710(-)s 0 13256(and)m 404(breaks)s 1079(the)s 1427(remaining)s 2449(columns)s 3311(to)s 3550(equal)s 4123(width,)s 4775(using)s 5347(up)s 5640(all)s 5933(of)s 6204(the)s 6552(a)s 4(v)k 6(ailable)k 7460(space.)s 480 12882(The)m 897(size)s 1313(of)s 1572(an)s 1844(object)s 2476(is)s 2675(not)s 3029(clearly)s 3721(determined)s 4843(when)s 5407(the)s 5744(upw)s 2(ard-mo)k 3(ving)k 7309(size)s 7725(is)s 7923(less)s 8321(than)s 8778(the)s 0 12594(do)m 6(wnw)k 2(ard-mo)k 3(ving)k 1871(a)s 4(v)k 6(ailable)k 2786(space,)s 3431(and)s 3842(the)s 4197(object)s 4849(contains)s 5704(constructs)s 6731(that)s 7156(depend)s 7913(on)s 8218(a)s 4(v)k 6(ailable)k 0 12306(space)m 587(\(e.g.)s 1056(right)s 1567(justi\207cation\).)s 2938(F)s 3(or)k 3327(e)s 3(xample,)k 4241(in)s 220 fnt35 480 11805(2i @Wide { Heading // a |1r)m -8(t b })k 240 fnt82 0 11306(it)m 211(seems)s 865(natural)s 1603(to)s 1861(assign)s 2536(a)s 2721(width)s 3342(of)s 3633(tw)s 2(o)k 4062(inches)s 4744(to)s 5002(the)s 5369(subobject)s 220 fnt35 6366 11303(a |1r)m -8(t b)k 240 fnt82 7124 11306(because)m 7957(of)s 8247(the)s 8615(right)s 0 11018(justi\207cation,)m 1270(b)s 4(ut)k 1667(it)s 1895(w)s 2(ould)k 2585(be)s 2903(equally)s 3696(plausible)s 4650(if)s 4903(the)s 5286(width)s 5924(of)s 220 fnt35 6230 11015(Heading)m 240 fnt82 7129 11018(w)m 2(as)k 7586(assigned)s 8503(to)s 8778(the)s 0 10730(subobject)m 989(instead.)s 1843(The)s 2284(author)s 2968(is)s 3191(conscious)s 4199(of)s 4483(ha)s 4(ving)k 5197(f)s 2(ailed)k 5809(to)s 6061(resolv)s 3(e)k 6817(this)s 7226(matter)s 7908(properly;)s 8843(an)s 0 10442(e)m 3(xtra)k 534(operator)s 1390(for)s 1728(controlling)s 2830(a)s 4(v)k 6(ailable)k 3738(space)s 4325(is)s 4535(probably)s 5440(necessary)s 15(.)k 480 10068(The)m 930(actual)s 1578(paragraph)s 2614(breaking)s 3527(is)s 3759(just)s 4187(a)s 4376(simple)s 5092(transformation)s 6578(on)s 6897(the)s 7268(parse)s 7851(tree;)s 8343(the)s 8714(real)s 0 9780(issue)m 544(is)s 764(ho)s 6(w)k 1235(to)s 1484(describe)s 2346(the)s 2704(v)s 6(arious)k 3463(styles:)s 4183(ragged)s 4902(right,)s 5470(adjusted,)s 6384(outdented,)s 7445(and)s 7859(so)s 8135(on.)s 8549(Their)s 0 9492(di)m 6(v)k 3(ersity)k 874(suggests)s 1729(that)s 2140(the)s 3(y)k 2596(should)s 3286(someho)s 6(w)k 4245(be)s 4519(de\207ned)s 5275(using)s 5840(more)s 6380(basic)s 6917(features;)s 7777(b)s 4(ut)k 8132(then)s 8593(there)s 0 9204(are)m 367(algorithms)s 1461(for)s 1820(high-quality)s 3064(paragraph)s 4098(breaking,)s 5063(which)s 5726(presumably)s 6917(must)s 7463(be)s 7766(b)s 4(uilt-in.)k 8650(This)s 0 8916(dilemma)m 915(w)s 2(as)k 1355(not)s 1741(clearly)s 2463(grasped)s 3285(by)s 3598(the)s 3966(author)s 4656(in)s 4919(1985,)s 5525(and)s 5949(he)s 6250(included)s 7152(a)s 7337(b)s 4(uilt-in)k 8113(paragraph)s 0 8628(break)m 2(er)k 9(,)k 818(with)s 1306(the)s 220 fnt35 1660 8625(@Break)m 240 fnt82 2522 8628(operator)m 3384(selecting)s 4292(from)s 4822(a)s 4995(\207x)s 3(ed)k 5535(set)s 5866(of)s 6143(styles.)s 6857(A)s 7093(much)s 7688(better)s 8298(solution)s 0 8340(based)m 603(on)s 900(g)s 1(alle)k 3(ys)k 1624(will)s 2050(be)s 2332(gi)s 6(v)k 3(en)k 2912(in)s 3155(Section)s 3929(5.5,)s 4336(b)s 4(ut,)k 4745(re)s 3(grettably)k 15(,)k 5868(it)s 6060(is)s 6270(not)s 6636(implemented.)s 240 fnt84 0 7547(3.)m 291(De\207nitions)s 240 fnt82 480 7116(The)m 936(need)s 1474(to)s 1741(pro)s 3(vide)k 2554(a)s 2748(means)s 3438(of)s 3737(packaging)s 4803(useful)s 5470(pieces)s 6146(of)s 6445(code)s 6982(for)s 7348(easy)s 7855(repeated)s 8751(use)s 0 6828(w)m 2(as)k 440(recognised)s 1554(in)s 1816(the)s 2184(v)s 3(ery)k 2679(earliest)s 3447(programming)s 4822(languages.)s 5962(This)s 6458(need)s 6987(is)s 7217(e)s 6(v)k 3(en)k 7736(more)s 8303(acute)s 8883(in)s 0 6540(document)m 1004(formatting,)s 2118(if)s 2335(that)s 2752(is)s 2962(possible,)s 3852(because)s 4664(the)s 5012(majority)s 5874(of)s 6145(users)s 6686(are)s 7033(not)s 7398(programmers)s 8722(and)s 0 6252(do)m 293(not)s 659(understand)s 1767(the)s 2115(code)s 2623(the)s 3(y)k 3086(in)s 9(v)k 4(ok)k 2(e.)k 240 fnt84 0 5603(3.1.)m 471(Operators)s 240 fnt82 480 5126(It)m 680(is)s 885(e)s 6(vident)k 1637(from)s 2156(the)s 2498(e)s 3(xample)k 3356(of)s 3621(Eqn)s 4059(that)s 4471(user)s 4(-de\207ned)k 5702(operators)s 6636(are)s 6978(needed)s 7708(that)s 8121(mimic)s 8778(the)s 0 4838(primiti)m 6(v)k 3(e)k 929(ones)s 1426(in)s 1677(taking)s 2335(objects)s 3071(as)s 3328(parameters)s 4434(and)s 4845(returning)s 5781(objects)s 6517(as)s 6774(results.)s 7569(F)s 3(or)k 7965(e)s 3(xample,)k 8887(to)s 0 4550(de\207ne)m 641(a)s 807(superscript)s 1915(operator)s 2771(so)s 3037(that)s 220 fnt35 480 4056(2 sup n)m 240 fnt82 0 3531(appears)m 781(as)s 168 fnt82 1145 3647(n)m 240 fnt78 1031 3525(2)m 240 fnt82 1227 3531(,)m 1334(the)s 1682(follo)s 6(wing)k 2659(operator)s 3515(de\207nition)s 4489(may)s 4955(be)s 5237(used:)s 220 fnt35 480 3032(def sup)m 480 2744( precedence 50)m 480 2456( associativity r)m -3(ight)k 480 2168( left x)m 480 1880( r)m -3(ight y)k 480 1592({)m 480 1304( @OneRo)m 3(w { | {-2p @F)k 6(ont y} ^/0.5fk x })k 480 1016(})m 240 fnt82 0 520(The)m 220 fnt35 481 517(sup)m 240 fnt82 940 520(operator)m 1850(has)s 2273(precedence)s 3458(50,)s 3858(is)s 4122(right)s 4686(associati)s 6(v)k 3(e,)k 5886(tak)s 2(es)k 6479(tw)s 2(o)k 6943(objects)s 7724(as)s 8028(parameters)s 0 232(passed)m 720(on)s 1041(the)s 1413(left)s 1814(and)s 2242(right,)s 2825(and)s 3253(returns)s 3991(the)s 4363(object)s 5031(between)s 5910(braces)s 6595(as)s 6869(result.)s 7587(This)s 8087(object)s 8756(has)s grestore grestore grestore pgsave restore showpage %%Page: 15 16 %%BeginPageSetup %%PageResources: font Times-Roman %%+ font Times-Italic %%+ font Helvetica %%+ font Times-Bold /pgsave save def %%IncludeResource: font Helvetica /Helveticafnt35 vec2 /Helvetica LoutRecode /fnt35 { /Helveticafnt35 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave 0 0 translate 240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate 9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 1 LoutMargSet grestore 4292 13841(-)m 4420(15)s 4706(-)s 0 13250(the)m 348(structure)s gsave 608 12769 translate 280 fnt83 128 191 0 123 280 288 70 LoutGraphic gsave grestore save gsave 200 dict begin lfigdict begin grestore 128 191 0 123 280 288 70 0 0 LoutGr2 /lfiglightgrey [ lfigbox ] gsave lfigpaintpath grestore 0.015 cm setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigbox ] lfigdopath pop pop grestore 128 191 0 123 280 288 70 0 0 LoutGr2 0.015 cm setlinewidth lfiground setlinecap 0.15 cm /lfigdashed [ -0.3 cm ymark xsize ymark 0.3 cm 0 lfigpadd [] xmark -0.3 cm xmark ysize 0 0.3 cm lfigpadd ] lfigdopath pop pop grestore 260 fnt35 0 56(y)m grestore grestore end end restore grestore gsave 480 12634 translate 280 fnt83 128 135 0 67 280 288 70 LoutGraphic gsave grestore save gsave 200 dict begin lfigdict begin grestore 128 135 0 67 280 288 70 0 0 LoutGr2 /lfiglightgrey [ lfigbox ] gsave lfigpaintpath grestore 0.015 cm setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigbox ] lfigdopath pop pop grestore 128 135 0 67 280 288 70 0 0 LoutGr2 0.015 cm setlinewidth lfiground setlinecap 0.15 cm /lfigdashed [ -0.3 cm ymark xsize ymark 0.3 cm 0 lfigpadd [] xmark -0.3 cm xmark ysize 0 0.3 cm lfigpadd ] lfigdopath pop pop grestore 260 fnt35 0 0(x)m grestore grestore end end restore grestore 0 12183(b)m 4(ut)k 381(with)s 882(the)s 1249(\207rst)s 1699(ro)s 6(w)k 2138(mark)s 2709(hidden)s 3437(by)s 3751(the)s 220 fnt35 4118 12180(@OneRo)m 3(w)k 240 fnt82 5268 12183(operator)m 9(,)k 6181(and)s 220 fnt35 6604 12180(y)m 240 fnt82 6791 12183(tw)m 2(o)k 7220(points)s 7875(smaller)s 8657(than)s 0 11895(it)m 220(w)s 2(ould)k 904(otherwise)s 1917(ha)s 4(v)k 3(e)k 2447(been.)s 3091(The)s 3548(length)s 220 fnt35 4231 11892(0.5f)m 240 fnt82 4683 11895(speci\207es)m 5585(half)s 6057(the)s 6433(current)s 7198(font)s 7671(size;)s 8243(Figure)s 8952(2)s 0 11607(describes)m 936(the)s 220 fnt35 1280 11604(k)m 240 fnt82 1446 11607(g)m 1(ap)k 1840(mode.)s 2532(In)s 2784(the)s 3128(Eq)s 3448(equation)s 4325(formatting)s 5382(package)s 6218([10])s 6651(the)s 6995(equation)s 7872(as)s 8118(a)s 8280(whole)s 8916(is)s 0 11319(set)m 331(in)s 580(italic)s 1116(font,)s 1614(and)s 220 fnt35 2024 11316(2)m 240 fnt82 2203 11319(is)m 2419(an)s 2709(identi\207er)s 3637(whose)s 4311(body)s 4852(contains)s 5706(a)s 5879(font)s 6330(change)s 7070(back)s 7590(to)s 7835(Roman.)s 8698(The)s 0 11031(digits)m 220 fnt35 586 11028(0)m 240 fnt82 765 11031(to)m 220 fnt35 1009 11028(9)m 240 fnt82 1186 11031(are)m 1538(classed)s 2291(as)s 2546(punctuation)s 3737(characters,)s 4816(permitting)s 220 fnt35 5869 11028(234)m 240 fnt82 6293 11031(for)m 6635(e)s 3(xample)k 7503(to)s 7747(be)s 8034(interpreted)s 0 10743(as)m 250(a)s 416(sequence)s 1349(of)s 1620(three)s 2153(identi\207ers.)s 480 10369(These)m 1152(de\207nitions)s 2258(are)s 2650(easily)s 3307(implemented)s 4658(by)s 4997(a)s 5208(standard)s 6122(symbol)s 6927(table)s 7492(and)s 7941(an)s 8270(operator)s 0 10081(precedence)m 1155(parser)s 13(.)k 1914(Algol)s 2539(block)s 3157(structure)s 4073(with)s 4580(the)s 4953(usual)s 5538(scope)s 6164(rules)s 6704(w)s 2(as)k 7150(adopted)s 7991(as)s 8266(a)s 8457(matter)s 0 9793(of)m 271(course.)s 480 9419(Operators)m 1481(are)s 1837(limited)s 2580(to)s 2828(at)s 3069(most)s 3603(tw)s 2(o)k 4022(parameters,)s 5185(left)s 5571(and)s 5984(right,)s 6551(and)s 6964(the)s 7321(parameters)s 8428(cannot)s 0 9131(be)m 282(gi)s 6(v)k 3(en)k 862(def)s 2(ault)k 1583(v)s 6(alues.)k 240 fnt83 2352 9133(Named)m 240 fnt82 3097 9131(parameters)m 4195(solv)s 3(e)k 4753(both)s 5236(problems:)s 220 fnt35 480 8630(def @Pref)m 6(ace)k 480 8342( named @T)m 26(ag {})k 480 8054( named @Title { Pref)m 6(ace })k 480 7766( r)m -3(ight @Body)k 480 7478({)m 480 7190( Bold @F)m 6(ont @Title)k 480 6902( //0.3v @Body)m 480 6614(})m 240 fnt82 0 6120(The)m 452(def)s 2(ault)k 1197(v)s 6(alue)k 1789(appears)s 2594(just)s 3023(after)s 3543(the)s 3915(parameter')s 13(s)k 5103(declaration,)s 6295(between)s 7173(braces.)s 7972(In)s 9(v)k 4(ocations)k 0 5832(ha)m 4(v)k 3(e)k 501(a)s 667(natural)s 1385(syntax:)s 220 fnt35 480 5331(@Pref)m 6(ace)k 480 5043( @Title { About this book })m 480 4755({)m 480 4467( F)m 6(e)k 4(w obser)k -6(v)k 5(ers w)k 2(ould ha)k 4(v)k 5(e supposed in 1984, that ...)k 480 4179(})m 240 fnt82 0 3685(with)m 481(the)s 827(actual)s 1450(named)s 2145(parameters)s 3241(follo)s 6(wing)k 4216(directly)s 4998(after)s 5492(the)s 5838(operator)s 9(,)k 6731(before)s 7395(an)s 3(y)k 7790(right)s 8299(parame)s 8998(-)s 0 3397(ter)m 13(.)k 400(In)s 653(this)s 1046(e)s 3(xample,)k 220 fnt35 1958 3394(@T)m 26(ag)k 240 fnt82 2578 3397(will)m 3001(recei)s 6(v)k 3(e)k 3735(its)s 4008(def)s 2(ault)k 4726(v)s 6(alue,)k 5342(and)s 5744(a)s 5907(less)s 6313(e)s 3(xpert)k 6965(user)s 7420(could)s 8007(safely)s 8628(omit)s 0 3109(the)m 220 fnt35 348 3106(@Title)m 240 fnt82 1036 3109(parameter)m 2050(as)s 2300(well.)s 480 2735(Lout)m 1007(permits)s 1790(named)s 2502(parameters)s 3616(to)s 3870(ha)s 4(v)k 3(e)k 4387(parameters,)s 5557(a)s 5739(feature)s 6472(with)s 6970(applications)s 8192(to)s 8447(biblio)s 8998(-)s 0 2447(graphic)m 781(databases,)s 1816(running)s 2626(headers,)s 3475(and)s 3891(other)s 4454(places)s 5114(where)s 5766(a)s 5944(format)s 6652(has)s 7034(to)s 7285(be)s 7579(supplied)s 8460(before)s 0 2159(content)m 760(is)s 965(kno)s 6(wn.)k 1771(One)s 2221(could)s 2806(go)s 3094(further)s 3798(and)s 4197(pro)s 3(vide)k 4976(a)s 5137(complete)s 6064(lambda)s 6823(calculus,)s 7708(with)s 8185(functions)s 0 1871(as)m 250(\207rst-)s 689(class)s 1204(objects,)s 1988(pro)s 3(vided)k 2894(care)s 3347(w)s 2(as)k 3768(tak)s 2(en)k 4341(not)s 4707(to)s 4946(intimidate)s 5970(the)s 6318(non-)s 6746(e)s 3(xpert)k 7400(user)s 13(.)k 240 fnt84 0 1222(3.2.)m 471(Recursion)s 1563(and)s 2004(page)s 2539(lay)s 6(out)k 240 fnt82 480 745(Design)m 1302(and)s 1794(implementation)s 3439(should)s 4223(proceed)s 5126(together)s 6057(in)s 6387(e)s 3(xploratory)k 7628(projects,)s 8579(since)s 0 457(otherwise)m 988(the)s 1340(design)s 2025(too)s 2388(easily)s 3003(becomes)s 3894(unrealistic.)s 5056(Sometimes)s 6173(the)s 6524(implementation)s 8085(does)s 8579(more)s grestore grestore grestore pgsave restore showpage %%Page: 16 17 %%BeginPageSetup %%PageResources: font Times-Roman %%+ font Helvetica /pgsave save def %%IncludeResource: font Helvetica /Helveticafnt35 vec2 /Helvetica LoutRecode /fnt35 { /Helveticafnt35 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave 0 0 translate 240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate 9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 0 LoutMargSet grestore 4288 13842(-)m 4416(16)s 4709(-)s 0 13251(than)m 469(its)s 745(designer)s 1615(intended.)s 2603(The)s 3031(author)s 3702(wrote)s 4302(the)s 4650(follo)s 6(wing)k 5627(purely)s 6292(as)s 6542(a)s 6708(testing)s 7398(scaf)s 6(fold:)k 220 fnt35 480 12750(def @P)m 8(age r)k -3(ight x)k 480 12462({)m 480 12174( 8i @Wide 11i @High)m 480 11886( {)m 480 11598( //1i ||1i x ||1i)m 480 11310( //1i)m 480 11022( })m 480 10734(})m 240 fnt82 0 10240(Only)m 518(afterw)s 2(ards)k 1558(did)s 1906(he)s 2172(realize)s 2848(its)s 3108(signi\207cance:)s 4400(the)s 4732(concept)s 5521(of)s 5776(a)s 5926(page)s 6418(had)s 6807(been)s 7300(de\207ned)s 8047(outside)s 8778(the)s 0 9952(implementation,)m 1619(remo)s 3(ving)k 2598(the)s 2959(need)s 3481(for)s 3831(commands)s 4932(for)s 5282(setting)s 5984(page)s 6505(width)s 7119(and)s 7535(height,)s 8253(mar)s 4(gins,)k 0 9664(and)m 404(so)s 670(on.)s 480 9290(De\207ning)m 1393(a)s 1582(sequence)s 2538(of)s 2831(pages)s 3450(is)s 3683(harder)s 9(,)k 4414(since)s 4983(their)s 5503(number)s 6317(is)s 6550(not)s 6938(kno)s 6(wn)k 7665(in)s 7931(adv)s 6(ance.)k 8896(A)s 0 9002(simple)m 693(v)s 3(ersion)k 1451(of)s 1722(this)s 2118(same)s 2665(problem)s 3522(is)s 3732(af)s 6(forded)k 4593(by)s 4887(the)s 5235(leaders)s 5962(found)s 6579(in)s 6822(tables)s 7430(of)s 7701(contents:)s 480 8497(Chapter)m 1297(7)s 1525(..)s 1809(..)s 2093(..)s 2377(..)s 2661(..)s 2945(..)s 3229(..)s 3513(..)s 3797(..)s 4081(..)s 4365(..)s 4649(..)s 4933(..)s 5217(..)s 5501(..)s 5785(..)s 6009(53)s 0 7994(This)m 476(seemed)s 1251(to)s 1490(require)s 2222(recursion,)s 3218(speci\207cally)s 4360(the)s 4708(de\207nition)s 220 fnt35 480 7493(def @Leaders { ..)m 13( @Leaders })k 240 fnt82 0 6999(Note)m 535(that)s 968(both)s 220 fnt35 1465 6996(..)m 240 fnt82 1643 6999(and)m 220 fnt35 2061 6996(@Leaders)m 240 fnt82 3145 6999(are)m 3506(objects,)s 4305(so)s 4585(the)s 4948(tw)s 2(o)k 5372(spaces)s 6062(separating)s 7111(them)s 7664(are)s 8026(signi\207cant.)s 0 6711(No)m 361(base)s 858(case)s 1341(is)s 1567(gi)s 6(v)k 3(en,)k 2213(and)s 2633(indeed)s 3345(we)s 3696(ha)s 4(v)k 3(e)k 4213(no)s 4522(boolean)s 5353(or)s 5628(conditional)s 6775(operators)s 7731(with)s 8229(which)s 8887(to)s 0 6423(e)m 3(xpress)k 757(it;)s 993(b)s 4(ut)k 1346(we)s 1673(can)s 2053(adopt)s 2637(the)s 2977(implicit)s 3770(base)s 4243(`if)s 4530(space)s 5109(is)s 5311(not)s 5668(suf\207cient,)s 6656(delete)s 220 fnt35 7273 6420(@Leaders)m 240 fnt82 8334 6423(and)m 8729(an)s 3(y)k 0 6135(preceding)m 996(space'.)s 1770(Then)s 2319(the)s 2667(e)s 3(xpression)k 220 fnt35 480 5634(4i @Wide { Chapter 7 @Leaders 53 })m 240 fnt82 0 5138(will)m 417(produce)s 1234(the)s 1572(object)s 2206(sho)s 6(wn)k 2873(abo)s 3(v)k 3(e.)k 3593(It)s 3788(is)s 3988(hard)s 4461(to)s 4691(see)s 5042(ho)s 6(w)k 5493(this)s 5879(base)s 6350(could)s 6930(be)s 7202(made)s 7766(e)s 3(xplicit,)k 8576(with)s 8998(-)s 0 4850(out)m 348(violating)s 1232(the)s 1561(general)s 2301(principle)s 3187(of)s 3439(k)s 2(eeping)k 4230(all)s 4504(size)s 4912(information)s 6079(internal.)s 6953(In)s 7190(the)s 7519(implementation,)s 220 fnt35 0 4559(@Leaders)m 240 fnt82 1071 4562(remains)m 1881(une)s 3(xpanded)k 3097(while)s 3686(sizes)s 4204(are)s 4554(being)s 5142(calculated;)s 6224(then)s 6696(it)s 6891(is)s 7103(treated)s 7813(similarly)s 8718(to)s 8960(a)s 0 4274(recepti)m 6(v)k 3(e)k 922(symbol,)s 1734(with)s 2216(its)s 2492(body)s 3026(as)s 3276(an)s 3559(incoming)s 4516(g)s 1(alle)k 3(y)k 5150(\(Section)s 6003(5.2\).)s 480 3900(W)m 9(ith)k 1014(this)s 1418(settled,)s 2156(it)s 2356(is)s 2574(no)s 6(w)k 3044(clear)s 3575(ho)s 6(w)k 4044(to)s 4291(de\207ne)s 4940(a)s 5115(document)s 6127(which)s 6777(is)s 6995(a)s 7169(numbered)s 8193(sequence)s 0 3612(of)m 271(pages.)s 980(Let)s 220 fnt35 1358 3609(@Ne)m 6(xt)k 240 fnt82 2082 3612(be)m 2364(a)s 2530(pre\207x)s 3143(operator)s 3999(which)s 4641(returns)s 5355(its)s 5631(parameter)s 6645(plus)s 7095(one.)s 7605(Then)s 220 fnt35 480 3111(def @P)m 8(ageList)k 480 2823( r)m -3(ight @P)k 8(ageNum)k 480 2535({)m 480 2247( @P)m 8(age {)k 480 1959( |0.5r)m -8(t - @P)k 8(ageNum -)k 480 1671( //1v @T)m 26(e)k 6(xtPlace)k 480 1383( //1r)m -8(t @F)k 6(ootSect)k 480 1095( })m 480 807( //)m 480 519( @P)m 8(ageList @Ne)k 6(xt @P)k 8(ageNum)k 480 231(})m grestore grestore grestore pgsave restore showpage %%Page: 17 18 %%BeginPageSetup %%PageResources: font Times-Roman %%+ font Helvetica /pgsave save def %%IncludeResource: font Helvetica /Helveticafnt35 vec2 /Helvetica LoutRecode /fnt35 { /Helveticafnt35 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave 0 0 translate 240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate 9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 1 LoutMargSet grestore 4291 13844(-)m 4419(17)s 4707(-)s 0 13255(when)m 576(in)s 9(v)k 4(ok)k 2(ed)k 1391(in)s 1634(the)s 1982(e)s 3(xpression)k 220 fnt35 3059 13252(@P)m 8(ageList 1)k 240 fnt82 4267 13255(,)m 4374(has)s 4744(for)s 5082(its)s 5358(result)s 5948(the)s 6296(potentially)s 7372(in\207nite)s 8105(object)s 1927 2494 0 2494 240 288 60 480 10421 LoutGr2 0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath stroke grestore 160 fnt82 845 2216(-)m 931(1)s 1035(-)s 140 fnt35 170 2000(@T)m 16(e)k 4(xtPlace)k 170 173(@F)m 4(ootSect)k grestore 1927 2494 0 2494 240 288 60 480 7927 LoutGr2 0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath stroke grestore 160 fnt82 839 2216(-)m 925(2)s 1041(-)s 140 fnt35 170 2000(@T)m 16(e)k 4(xtPlace)k 170 173(@F)m 4(ootSect)k grestore 140 fnt35 480 7712(@P)m 5(ageList 3)k 240 fnt82 0 7230(Similarly)m 15(,)k 980(we)s 1315(may)s 1781(de\207ne)s 220 fnt35 2422 7227(@F)m 6(ootSect)k 240 fnt82 3573 7230(lik)m 2(e)k 3985(this:)s 220 fnt35 480 6729(def @F)m 6(ootSect)k 480 6441({)m 480 6153( def @F)m 6(ootList)k 480 5865( r)m -3(ight @Num)k 480 5577( {)m 480 5289( @F)m 6(ootPlace)k 480 5001( //1v)m 480 4713( @F)m 6(ootList @Ne)k 6(xt @Num)k 480 4425( })m 480 3849( 1i @Wide @HLine)m 480 3561( //1v)m 480 3273( @F)m 6(ootList 1)k 480 2985(})m 240 fnt82 0 2491(so)m 266(that)s 684(an)s 967(in)s 9(v)k 4(ocation)k 2021(of)s 220 fnt35 2292 2488(@F)m 6(ootSect)k 240 fnt82 3443 2491(produces)m gsave 480 2151 translate 220 fnt35 1440 0 0 0 220 288 61 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore 220 fnt35 480 1806(@F)m 6(ootPlace)k 480 1518(@F)m 6(ootPlace)k 480 1230(@F)m 6(ootPlace)k 480 942(...)m grestore grestore grestore pgsave restore showpage %%Page: 18 19 %%BeginPageSetup %%PageResources: font Times-Roman %%+ font Helvetica %%+ font Times-Bold %%+ font Times-Italic /pgsave save def %%IncludeResource: font Helvetica /Helveticafnt35 vec2 /Helvetica LoutRecode /fnt35 { /Helveticafnt35 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave 0 0 translate 240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate 9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 0 LoutMargSet grestore 4291 13844(-)m 4419(18)s 4706(-)s 0 13253(The)m 476(e)s 3(xpansion)k 1550(process)s 2367(is)s 2626(v)s 3(ery)k 3150(similar)s 3921(to)s 4209(a)s 4424(BNF)s 4997(deri)s 6(v)k 6(ation,)k 6109(and)s 6562(w)s 2(ould)k 7266(be)s 7597(attempted)s 8646(only)s 0 12965(on)m 297(demand.)s 480 12591(Clearly)m 15(,)k 1276(deciding)s 2154(which)s 2797(e)s 3(xpansions)k 3910(to)s 4150(tak)s 2(e)k 4603(and)s 5008(replacing)s 220 fnt35 5951 12588(@T)m 26(e)k 6(xtPlace)k 240 fnt82 7170 12591(and)m 220 fnt35 7575 12588(@F)m 6(ootPlace)k 240 fnt82 8832 12591(by)m 0 12303(the)m 338(appropriate)s 1471(actual)s 2085(te)s 3(xt)k 2489(will)s 2904(not)s 3259(be)s 3530(easy;)s 4056(this)s 4441(is)s 4640(the)s 4977(subject)s 5703(of)s 5963(Section)s 6726(5.1.)s 7179(The)s 7596(important)s 8574(point)s 0 12015(for)m 331(no)s 6(w)k 784(is)s 986(that)s 1397(we)s 1724(ha)s 4(v)k 3(e)k 2217(here)s 2677(a)s 2835(v)s 3(ery)k 3303(simple)s 3989(and)s 4385(\210e)s 3(xible)k 5147(method)s 5916(of)s 6179(specifying)s 7220(the)s 7561(layout)s 8211(of)s 8474(pages,)s 0 11727(which)m 642(requires)s 1462(no)s 1755(specialized)s 2874(language)s 3794(features.)s 240 fnt84 0 11079(3.3.)m 471(Modules)s 240 fnt82 480 10648(It)m 679(is)s 882(well)s 1342(accepted)s 2229(that)s 2641(the)s 2982(visibility)s 3879(of)s 4143(symbols)s 4986(is)s 5189(not)s 5549(adequately)s 6632(controlled)s 7653(by)s 7940(Algol)s 8533(block)s 0 10360(structure.)m 999(The)s 1427(author)s 2098(is)s 2308(a)s 3(w)k 2(are)k 2929(of)s 3200(se)s 6(v)k 3(eral)k 3922(major)s 4539(problems)s 5480(of)s 5751(this)s 6147(kind)s 6631(in)s 6874(document)s 7878(formatting.)s 480 9986(One)m 976(problem)s 1874(is)s 2126(that)s 2585(some)s 3187(symbols)s 4078(should)s 4816(be)s 5139(visible)s 5874(only)s 6395(within)s 7104(restricted)s 8091(parts)s 8647(of)s 8960(a)s 0 9698(document.)m 1108(F)s 3(or)k 1497(e)s 3(xample,)k 2411(we)s 2746(naturally)s 3649(e)s 3(xpect)k 4330(equation)s 5211(formatting)s 6272(to)s 6511(be)s 6793(accomplished)s 8166(lik)s 2(e)k 8578(this:)s 220 fnt35 480 9201(surrounding te)m 6(xt)k 480 8913(@Eq { {x sup 2 + 1} o)m 3(v)k 5(er 4 })k 480 8625(surrounding te)m 6(xt)k 240 fnt82 0 8126(with)m 482(the)s 830(symbols)s 220 fnt35 1679 8123(sup)m 240 fnt82 2025 8126(,)m 220 fnt35 2132 8123(o)m 3(v)k 5(er)k 240 fnt82 2551 8126(,)m 2658(etc.,)s 3103(visible)s 3796(only)s 4276(within)s 4944(the)s 5292(equation,)s 6223(not)s 6589(in)s 6832(the)s 7180(surrounding)s 8390(te)s 3(xt.)k 480 7752(It)m 695(seems)s 1341(natural)s 2069(to)s 2319(de\207ne)s 2970(these)s 3528(symbols)s 4387(within)s 220 fnt35 5066 7749(@Eq)m 240 fnt82 5544 7752(,)m 5661(since)s 6219(the)s 3(y)k 6692(are)s 7050(local)s 7579(to)s 7829(equations.)s 8921(It)s 0 7464(only)m 494(remains)s 1316(then)s 1799(to)s 2053(decree)s 2746(that)s 3179(symbols)s 4043(local)s 4576(to)s 220 fnt35 4830 7461(@Eq)m 240 fnt82 5382 7464(are)m 5744(to)s 5998(be)s 6294(visible)s 7002(within)s 7684(its)s 7975(actual)s 8615(right)s 0 7176(parameter)m 9(,)k 1052(and)s 1456(this)s 1852(is)s 2062(done)s 2584(by)s 2878(replacing)s 3820(the)s 4168(right)s 4679(formal)s 5370(parameter)s 6384(with)s 6866(a)s 240 fnt83 7032 7178(body)m 240 fnt82 7554 7176(parameter:)m 220 fnt35 480 6690(e)m 6(xpor)k -8(t sup o)k 3(v)k 5(er)k 480 6402(def @Eq)m 480 6114( body @Body)m 480 5826({)m 480 5538( def sup ...)m 480 5250( def o)m 3(v)k 5(er ...)k 480 4674( Slope @F)m 6(ont @Body)k 480 4386(})m 240 fnt82 0 3892(The)m 220 fnt35 426 3889(e)m 6(xpor)k -8(t)k 240 fnt82 1092 3892(clause)m 1743(lists)s 2176(the)s 2522(identi\207ers)s 3526(which)s 4166(are)s 4511(permitted)s 5482(to)s 5719(be)s 5999(visible)s 6690(outside)s 7435(their)s 7930(usual)s 8488(range,)s 0 3604(the)m 359(body)s 905(of)s 220 fnt35 1188 3601(@Eq)m 240 fnt82 1666 3604(;)m 1790(and)s 2206(the)s 220 fnt35 2566 3601(body)m 240 fnt82 3112 3604(declaration)m 4241(imports)s 5034(them)s 5584(into)s 6021(\(mak)s 2(es)k 6772(them)s 7322(visible)s 8027(within\))s 8778(the)s 0 3316(actual)m 614(right)s 1114(parameter)s 2117(of)s 2376(each)s 2860(in)s 9(v)k 4(ocation)k 3903(of)s 220 fnt35 4162 3313(@Eq)m 240 fnt82 4640 3316(.)m 4793(This)s 5258(arrangement)s 6500(has)s 6859(pro)s 3(v)k 3(en)k 7564(v)s 3(ery)k 8028(con)s 9(v)k 3(enient)k 0 3028(for)m 338(de\207ning)s 1176(a)s 1342(v)s 6(ariety)k 2053(of)s 2324(special-purpose)s 3880(packages.)s 480 2654(Another)m 1361(problem)s 2256(arises)s 2888(when)s 3502(global)s 4193(symbols,)s 5136(such)s 5669(as)s 5957(the)s 6343(ones)s 6871(used)s 7406(for)s 7782(headings)s 8722(and)s 0 2366(paragraph)m 1034(separators,)s 2130(call)s 2550(on)s 2868(v)s 6(alues)k 3545(that)s 3984(the)s 4353(non-e)s 3(xpert)k 5468(user)s 5947(will)s 6394(need)s 6925(to)s 7185(modify)s 15(,)k 7989(such)s 8506(as)s 8778(the)s 0 2078(initial)m 605(font)s 1044(or)s 1297(paragraph)s 2303(indent.)s 3059(These)s 3680(v)s 6(alues)k 4329(are)s 4670(lik)s 2(e)k 5076(parameters)s 6167(of)s 6432(the)s 6774(document)s 7771(as)s 8015(a)s 8175(whole,)s 8860(so)s 0 1790(it)m 192(is)s 402(natural)s 1120(to)s 1359(try)s 1678(this:)s grestore grestore grestore pgsave restore showpage %%Page: 19 20 %%BeginPageSetup %%PageResources: font Times-Roman %%+ font Helvetica /pgsave save def %%IncludeResource: font Helvetica /Helveticafnt35 vec2 /Helvetica LoutRecode /fnt35 { /Helveticafnt35 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave 0 0 translate 240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate 9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 1 LoutMargSet grestore 4289 13844(-)m 4417(19)s 4708(-)s 220 fnt35 480 13253(e)m 6(xpor)k -8(t @Heading @PP ...)k 480 12965(def @BookLa)m 6(y)k 4(out)k 480 12677( named @InitialF)m 6(ont { )k 11(Times Base 12p })k 480 12389( named @InitialBreak { adjust 14p })m 480 12101( named @ColumnWidth { 6i })m 480 11813( ...)m 480 11525({)m 480 11237( def @Heading ...)m 480 10949( def @PP ...)m 480 10661(})m 240 fnt82 0 10167(No)m 6(w)k 220 fnt35 579 10164(@Heading)m 240 fnt82 1732 10167(and)m 220 fnt35 2202 10164(@PP)m 240 fnt82 2833 10167(may)m 3365(in)s 9(v)k 4(ok)k 2(e)k 220 fnt35 4124 10164(@InitialF)m 6(ont)k 240 fnt82 5411 10167(and)m 5881(the)s 6295(other)s 6911(parameters.)s 8188(T)s 19(o)k 8554(mak)s 2(e)k 220 fnt35 0 9876(@Heading)m 240 fnt82 1100 9879(and)m 220 fnt35 1517 9876(@PP)m 240 fnt82 2096 9879(visible)m 2802(throughout)s 3926(the)s 4287(document,)s 5352(we)s 5700(need)s 6223(only)s 6716(add)s 7133(a)s 7312(body)s 7859(parameter)s 8887(to)s 220 fnt35 0 9588(@BookLa)m 6(y)k 4(out)k 240 fnt82 1428 9591(and)m 1832(present)s 2582(the)s 2930(entire)s 3529(document)s 4533(as)s 220 fnt35 480 9090(@BookLa)m 6(y)k 4(out)k 480 8802( @InitialF)m 6(ont { Helv)k 5(etica Base 10p })k 480 8514( @InitialBreak { adjust 12p })m 480 8226({)m 480 7938( )m 11(The document.)k 480 7650(})m 240 fnt82 0 7156(b)m 4(ut)k 383(for)s 742(practical)s 1639(reasons)s 2429(gi)s 6(v)k 3(en)k 3030(belo)s 6(w)k 3684(we)s 4040(prefer)s 4691(not)s 5078(to)s 5338(enclose)s 6132(the)s 6502(entire)s 7122(document)s 8147(in)s 8412(braces.)s 0 6868(Instead,)m 797(we)s 1132(write)s 220 fnt35 480 6386(@Use { @BookLa)m 6(y)k 4(out)k 480 6098( @InitialF)m 6(ont { Helv)k 5(etica Base 10p })k 480 5810( @InitialBreak { adjust 12p })m 480 5522(})m 480 5234(The document.)m 240 fnt82 0 4780(which)m 643(has)s 1015(the)s 1365(same)s 1914(ef)s 6(fect:)k 220 fnt35 2617 4777(@Use)m 240 fnt82 3284 4780(mak)m 2(es)k 3946(the)s 4296(e)s 3(xported)k 5190(symbols)s 6040(of)s 220 fnt35 6313 4777(@BookLa)m 6(y)k 4(out)k 240 fnt82 7743 4780(visible)m 8438(for)s 8778(the)s 0 4492(remainder)m 1028(of)s 1299(the)s 1647(document,)s 2698(and)s 3102(is)s 3312(permitted)s 4285(only)s 4765(at)s 4997(the)s 5345(be)s 3(ginning.)k 480 4118(The)m 925(third)s 1451(feature)s 2187(that)s 2622(af)s 6(fects)k 3319(visibility)s 15(,)k 4278(and)s 4699(which)s 5359(will)s 5802(pro)s 3(v)k 3(e)k 6414(useful)s 7071(for)s 7426(cross)s 7986(referencing)s 0 3830(\(Section)m 851(6.1\),)s 1335(is)s 1543(the)s 220 fnt35 1889 3827(@Open)m 240 fnt82 2693 3830(symbol.)m 3560(It)s 3763(mak)s 2(es)k 4421(the)s 4767(e)s 3(xported)k 5657(symbols)s 6504(of)s 6773(its)s 7047(left)s 7422(parameter)s 8433(visible)s 0 3542(within)m 668(its)s 944(right)s 1455(parameter)s 9(,)k 2507(and)s 2911(is)s 3121(therefore)s 4038(similar)s 4760(to)s 4999(the)s 5347(P)s 3(ascal)k 220 fnt35 6009 3539(with)m 240 fnt82 6444 3542(statement.)m 480 3168(It)m 698(could)s 1301(be)s 1596(ar)s 4(gued)k 2314(that)s 2745(Lout)s 3270(is)s 3493(o)s 3(v)k 3(er)k 4(-supplied)k 4869(with)s 5364(these)s 5924(visibility)s 6840(modifying)s 7903(features:)s 8778(the)s 0 2880(body)m 544(parameter)s 9(,)k 220 fnt35 1606 2877(@Use)m 240 fnt82 2282 2880(and)m 220 fnt35 2696 2877(@Open)m 240 fnt82 3513 2880(do)m 3816(not)s 4193(seem)s 4754(suf\207ciently)s 5894(dif)s 6(ferent)k 6779(from)s 7314(each)s 7819(another)s 13(.)k 8698(The)s 220 fnt35 0 2589(@Open)m 240 fnt82 806 2592(symbol)m 1566(is)s 1776(the)s 2124(most)s 2649(general,)s 3459(being)s 4044(capable)s 4830(of)s 5101(replacing)s 6043(the)s 6391(other)s 6942(tw)s 2(o.)k 7463(F)s 3(or)k 7852(e)s 3(xample,)k 220 fnt35 480 2091(@Use { x })m 480 1803(@Use { y })m 480 1515(Body of document)m 240 fnt82 0 1017(can)m 389(be)s 671(replaced)s 1538(by)s grestore grestore grestore pgsave restore showpage %%Page: 20 21 %%BeginPageSetup %%PageResources: font Times-Roman %%+ font Helvetica %%+ font Times-Bold %%+ font Times-Italic /pgsave save def %%IncludeResource: font Helvetica /Helveticafnt35 vec2 /Helvetica LoutRecode /fnt35 { /Helveticafnt35 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave 0 0 translate 240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate 9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 0 LoutMargSet grestore 4287 13844(-)m 4415(20)s 4710(-)s 220 fnt35 480 13255(x @Open {)m 480 12967(y @Open {)m 480 12679(Body of document)m 480 12391(}})m 240 fnt82 0 11897(and,)m 453(taking)s 1104(the)s 220 fnt35 1452 11894(@Eq)m 240 fnt82 1990 11897(symbol)m 2750(abo)s 3(v)k 3(e)k 3372(as)s 3622(e)s 3(xample,)k 4536(we)s 4871(could)s 5461(eliminate)s 6405(its)s 6681(body)s 7215(parameter)s 9(,)k 8267(add)s 220 fnt35 480 11396(def @Body r)m -3(ight x { Slope @F)k 6(ont x })k 240 fnt82 0 10897(to)m 239(the)s 587(e)s 3(xported)k 1479(de\207nitions)s 2540(of)s 220 fnt35 2811 10894(@Eq)m 240 fnt82 3289 10897(,)m 3396(and)s 3800(replace)s 220 fnt35 480 10396(@Eq { object })m 240 fnt82 0 9899(by)m 220 fnt35 480 9398(@Eq @Open { @Body { object } })m 240 fnt82 0 8898(If)m 220 fnt35 232 8895(@Eq)m 240 fnt82 772 8898(is)m 985(a)s 1153(g)s 1(alle)k 3(y)k 1790(\(Section)s 2645(5.1\),)s 220 fnt35 3133 8895(@Body)m 240 fnt82 3917 8898(must)m 4444(tak)s 2(e)k 4899(o)s 3(v)k 3(er)k 5380(that)s 5800(function.)s 6764(But)s 7172(one)s 7577(w)s 2(ould)k 8234(not)s 8603(w)s 2(ant)k 0 8610(to)m 253(write)s 813(these)s 1374(clumsy)s 2133(e)s 3(xpressions)k 3311(in)s 3568(practice,)s 4444(and)s 4862(the)s 5224(enclosure)s 6210(of)s 6495(lar)s 4(ge)k 7038(quantities)s 8032(of)s 8317(input)s 8883(in)s 0 8322(e)m 3(xtra)k 534(braces)s 1195(could)s 1785(cause)s 2372(Basser)s 3069(Lout)s 3581(to)s 3820(run)s 4196(out)s 4562(of)s 4833(memory)s 5684(\(Section)s 6537(5.4\).)s 480 7948(A)m 700(quite)s 1224(separate)s 2052(kind)s 2526(of)s 2786(visibility)s 3679(problem)s 4526(arises)s 5110(when)s 5676(e)s 3(xpert)k 6319(users)s 6851(wish)s 7350(to)s 7579(de\207ne)s 8210(an)s 8482(object)s 0 7660(or)m 259(operator)s 1115(for)s 1453(repeated)s 2320(use)s 2695(within,)s 3413(say)s 15(,)k 3824(equations:)s 220 fnt35 480 7161(def isum { sum from i=1 to n })m 240 fnt82 0 6667(As)m 338(it)s 551(stands)s 1221(this)s 1638(can)s 2048(only)s 2549(be)s 2852(placed)s 3555(within)s 4244(the)s 220 fnt35 4613 6664(@Eq)m 240 fnt82 5172 6667(package)m 6033(itself,)s 6637(where)s 220 fnt35 7298 6664(sum)m 240 fnt82 7780 6667(and)m 8205(the)s 8575(other)s 0 6379(symbols)m 841(are)s 1179(visible,)s 1915(b)s 4(ut)k 2268(it)s 2451(is)s 2653(not)s 3010(desirable)s 3919(to)s 4150(modify)s 4886(the)s 5225(source)s 5897(code)s 6396(of)s 6658(a)s 6816(standard)s 7675(package.)s 8614(Lout)s 0 6091(pro)m 3(vides)k 872(an)s 220 fnt35 1155 6088(impor)m -8(t)k 240 fnt82 1828 6091(clause)m 2481(to)s 2720(solv)s 3(e)k 3278(this)s 3674(problem:)s 220 fnt35 480 5590(impor)m -8(t @Eq)k 480 5302(def isum { sum from i=1 to n })m 240 fnt82 0 4808(may)m 469(appear)s 1169(after)s 220 fnt35 1669 4805(@Eq)m 240 fnt82 2210 4808(is)m 2423(de\207ned,)s 3239(and)s 3646(it)s 3842(will)s 4271(mak)s 2(e)k 4846(the)s 5198(e)s 3(xported)k 6093(symbols)s 6945(of)s 220 fnt35 7220 4805(@Eq)m 240 fnt82 7761 4808(visible)m 8458(within)s 0 4520(the)m 335(body)s 855(of)s 220 fnt35 1112 4517(isum)m 240 fnt82 1561 4520(.)m 1711(This)s 2174(feature)s 2878(complicates)s 4056(the)s 4390(treatment)s 5337(of)s 5595(en)s 9(vironments)k 6925(\(Section)s 7764(3.4\),)s 8236(and)s 8626(e)s 6(v)k 3(en)k 0 4232(introduces)m 1050(an)s 1336(insecurity)s 15(,)k 2373(when)s 220 fnt35 2952 4229(isum)m 240 fnt82 3464 4232(is)m 3677(in)s 9(v)k 4(ok)k 2(ed)k 4495(outside)s 5245(an)s 5531(equation.)s 6522(A)s 6755(simpler)s 7534(approach)s 8471(w)s 2(ould)k 0 3944(be)m 290(to)s 538(allo)s 6(w)k 1126(only)s 1615(one)s 2026(symbol)s 2795(in)s 3047(an)s 220 fnt35 3339 3941(impor)m -8(t)k 240 fnt82 4020 3944(clause,)m 4733(and)s 5146(treat)s 5638(the)s 5995(follo)s 6(wing)k 6981(de\207nition)s 7964(e)s 3(xactly)k 8714(lik)s 2(e)k 0 3656(a)m 174(local)s 702(de\207nition)s 1684(of)s 1964(that)s 2390(symbol;)s 3216(b)s 4(ut)k 3587(then)s 4064(it)s 4265(w)s 2(ould)k 4928(not)s 5303(be)s 5594(possible)s 6442(to)s 6690(de\207ne)s 7339(symbols)s 8197(using)s 8778(the)s 0 3368(resources)m 953(of)s 1224(more)s 1771(than)s 2240(one)s 2642(of)s 2913(the)s 3261(standard)s 4129(packages.)s 240 fnt84 0 2719(3.4.)m 471(Implementation)s 2159(of)s 2431(de\207nitions)s 240 fnt82 480 2242(Input)m 1089(is)s 1343(processed)s 2388(by)s 2726(a)s 2936(h)s 1(ybrid)k 3663(parser)s 4350(which)s 5036(emplo)s 2(ys)k 5940(operator)s 6840(precedence)s 8015(for)s 8398(objects)s 0 1954(and)m 433(simple)s 1156(recursi)s 6(v)k 3(e)k 2108(descent)s 2915(for)s 3283(the)s 3661(headers)s 4472(of)s 4772(de\207nitions.)s 5976(A)s 6236(symbol)s 7026(table)s 7576(stores)s 8214(the)s 8592(body)s 0 1666(of)m 278(each)s 780(de\207nition)s 1761(as)s 2018(a)s 2191(parse)s 2758(tree,)s 3229(e)s 3(xcept)k 3917(for)s 4263(macros)s 5011(which)s 5660(are)s 6014(lists)s 6456(of)s 6734(tok)s 2(ens,)k 7471(and)s 7882(manages)s 8778(the)s 0 1378(usual)m 564(stack)s 1121(of)s 1397(static)s 1958(scopes,)s 2708(accepting)s 240 fnt83 3682 1380(PushScope)m 240 fnt82 4791 1378(and)m 240 fnt83 5200 1380(P)m 19(opScope)k 240 fnt82 6197 1378(operations)m 7249(as)s 7504(the)s 7857(parser)s 8505(enters)s 0 1090(and)m 447(lea)s 4(v)k 3(es)k 1131(scope)s 1775(re)s 3(gions,)k 2626(including)s 3627(actual)s 4295(body)s 4872(parameters)s 6013(and)s 6461(the)s 6852(right)s 7406(parameter)s 8463(of)s 8778(the)s 220 fnt35 0 799(@Open)m 240 fnt82 806 802(operator)m 13(.)k 480 428(As)m 818(the)s 1187(parse)s 1769(proceeds,)s 2747(a)s 2934(complete)s 3888(call)s 4308(graph)s 4932(is)s 5163(constructed,)s 6393(recording,)s 7438(for)s 7797(each)s 8314(symbol,)s 0 140(which)m 633(symbols)s 1473(are)s 1810(in)s 9(v)k 4(ok)k 2(ed)k 2616(within)s 3274(its)s 3541(body)s 15(.)k 4160(Immediately)s 5412(after)s 5898(the)s 6237(last)s 6618(de\207nition)s 7583(is)s 7783(read,)s 8292(the)s 8630(tran)s 8998(-)s grestore grestore grestore pgsave restore showpage %%Page: 21 22 %%BeginPageSetup %%PageResources: font Times-Roman %%+ font Times-Italic %%+ font Helvetica %%+ font Times-Bold /pgsave save def %%IncludeResource: font Helvetica /Helveticafnt35 vec2 /Helvetica LoutRecode /fnt35 { /Helveticafnt35 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave 0 0 translate 240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate 9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 1 LoutMargSet grestore 4297 13844(-)m 4425(21)s 4700(-)s 0 13256(siti)m 6(v)k 3(e)k 565(closure)s 1312(of)s 1584(the)s 1933(call)s 2334(graph)s 2937(is)s 3148(computed,)s 4200(and)s 4605(used)s 5104(to)s 5344(determine)s 6356(whether)s 7187(each)s 7684(non-)s 8112(parameter)s 0 12968(symbol)m 775(is)s 1001(recursi)s 6(v)k 3(e)k 1939(or)s 2214(recepti)s 6(v)k 3(e)k 3151(\(Section)s 4020(5.1\),)s 4522(and)s 4942(whether)s 5787(each)s 6298(parameter)s 7328(is)s 7554(in)s 9(v)k 4(ok)k 2(ed)k 8385(e)s 3(xactly)k 0 12680(once)m 508(or)s 767(not.)s 480 12306(Purely)m 1188(functional)s 2243(systems)s 3082(may)s 3579(e)s 6(v)k 6(aluate)k 4450(symbol)s 5240(in)s 9(v)k 4(ocations)k 6412(in)s 6686(applicati)s 6(v)k 3(e)k 7812(order)s 8407(\(where)s 0 12018(parameters)m 1092(are)s 1433(e)s 6(v)k 6(aluated)k 2389(before)s 3049(substitution)s 4216(into)s 4635(bodies\),)s 5440(or)s 5693(in)s 5930(normal)s 6656(order)s 7214(\(substitution)s 8460(before)s 0 11730(e)m 6(v)k 6(aluation\),)k 1164(and)s 1562(the)s 3(y)k 2018(may)s 2478(also)s 2909(share)s 3463(the)s 3804(v)s 6(alue)k 4366(of)s 4630(a)s 4790(parameter)s 5798(among)s 6496(all)s 6783(uses)s 7239(of)s 7504(it.)s 7793(But)s 8193(in)s 8429(Basser)s 0 11442(Lout,)m 603(the)s 996(presence)s 1932(of)s 2248(conte)s 3(xt-sensiti)k 6(v)k 3(e)k 3955(style)s 4507(information)s 5736(\(Section)s 6634(2.5\))s 7106(forces)s 7785(normal)s 8562(order)s 0 11154(e)m 6(v)k 6(aluation)k 1041(and)s 1445(pre)s 6(v)k 3(ents)k 2297(sharing)s 3054(of)s 3325(parameter)s 4339(v)s 6(alues.)k 480 10780(T)m 19(o)k 780(e)s 6(v)k 6(aluate)k 1620(an)s 1903(unsized)s 2692(object)s 3336(\(pure)s 3896(parse)s 4456(tree\),)s 4999(its)s 240 fnt83 5275 10782(en)m 9(vir)k 10(onment)k 240 fnt82 6456 10780(,)m 6563(the)s 6911(equi)s 6(v)k 6(alent)k 7955(of)s 8226(the)s 8574(stack)s 0 10492(frames)m 728(in)s 999(Algol-lik)s 2(e)k 2064(languages,)s 3156(must)s 3710(be)s 4020(a)s 4(v)k 6(ailable,)k 5008(containing)s 6099(the)s 6476(actual)s 7129(v)s 6(alues)k 7814(of)s 8113(all)s 8435(formal)s 0 10204(parameters)m 1119(that)s 1558(are)s 1927(visible)s 2641(within)s 3330(the)s 3700(unsized)s 4510(object.)s 5279(En)s 9(vironment)k 6601(handling)s 7513(is)s 7744(a)s 7932(well-kno)s 6(wn)k 0 9916(implementation)m 1557(technique,)s 2594(so)s 2860(it)s 3052(will)s 3478(be)s 3760(discussed)s 4735(only)s 5215(brie\210y)s 5893(here.)s 480 9542(En)m 9(vironments)k 1894(are)s 2272(e)s 3(xtra)k 2837(subtrees)s 3702(hung)s 4265(from)s 4820(the)s 5199(objects)s 5958(the)s 3(y)k 6451(refer)s 6991(to.)s 7372(This)s 7879(or)s 4(g)k 1(anization)k 0 9254(mak)m 2(es)k 668(e)s 3(xcellent)k 1595(use)s 1978(of)s 2257(the)s 2613(ordered)s 3409(dag)s 3816(to)s 4063(permit)s 4754(en)s 9(vironments)k 6106(to)s 6353(be)s 6643(shared,)s 7382(and)s 7794(deleted)s 8550(when)s 0 8966(the)m 339(last)s 721(reference)s 1655(to)s 1885(them)s 2413(is)s 2614(remo)s 3(v)k 3(ed.)k 3600(Se)s 6(v)k 3(eral)k 4353(optimizations)s 5695(ha)s 4(v)k 3(e)k 6187(been)s 6687(implemented.)s 8090(Actual)s 8772(pa)s 8998(-)s 0 8678(rameters)m 860(kno)s 6(wn)k 1552(to)s 1778(be)s 2048(in)s 9(v)k 4(ok)k 2(ed)k 2850(only)s 3318(once)s 3814(are)s 4148(mo)s 3(v)k 3(ed)k 4840(in)s 5070(from)s 5582(the)s 5918(en)s 9(vironment,)k 7212(not)s 7566(copied;)s 8303(cop)s 2(ying)k 0 8390(could)m 581(lead)s 1028(to)s 1258(quadratic)s 2191(time)s 2662(comple)s 3(xity)k 15(.)k 3875(Actual)s 4558(parameters)s 5647(of)s 5909(the)s 6248(form)s 220 fnt35 6763 8387(@Ne)m 6(xt)k 240 fnt83 7478 8392(object)m 240 fnt82 8117 8390(recei)m 6(v)k 3(e)k 8843(an)s 0 8102(applicati)m 6(v)k 3(e)k 1105(pre-)s 1478(e)s 6(v)k 6(aluation)k 2529(which)s 3181(pre)s 6(v)k 3(ents)k 4044(long)s 4533(chains)s 5205(of)s 220 fnt35 5486 8099(@Ne)m 6(xt)k 240 fnt82 6221 8102(symbols)m 7080(from)s 7614(forming)s 8448(during)s 0 7814(the)m 359(generation)s 1437(of)s 1719(lar)s 4(ge)k 2260(page)s 2779(numbers.)s 3779(Some)s 4391(en)s 9(vironments)k 5747(which)s 6400(pro)s 3(v)k 6(ably)k 7308(contrib)s 4(ute)k 8341(nothing)s 0 7526(are)m 344(deleted,)s 1137(most)s 1659(notably)s 2427(when)s 3000(a)s 3162(symbol)s 3918(in)s 9(v)k 4(ocation)k 4969(has)s 5335(no)s 5625(symbols)s 6470(within)s 7135(its)s 7407(actual)s 8028(parameters)s 0 7238(and)m 406(no)s 702(import)s 1402(list,)s 1803(so)s 2071(that)s 2492(only)s 2975(the)s 3326(en)s 9(vironment)k 4589(of)s 4862(its)s 5141(body)s 5678(need)s 6191(be)s 6476(k)s 2(ept;)k 7000(this)s 7399(sa)s 4(v)k 3(es)k 7964(a)s 8133(great)s 8673(deal)s 0 6950(of)m 271(space)s 858(when)s 1434(objects)s 2162(with)s 2644(en)s 9(vironments)k 3988(are)s 4335(written)s 5068(to)s 5307(auxiliary)s 6210(\207les)s 6659(\(Section)s 7512(6.1\).)s 240 fnt84 0 6157(4.)m 291(Implementation)s 1979(of)s 2251(the)s 2625(functional)s 3715(subset)s 240 fnt82 480 5680(The)m 941(objects)s 1702(and)s 2139(de\207nitions)s 3233(of)s 3537(Lout)s 4082(are)s 4462(v)s 3(ery)k 4971(similar)s 5726(to)s 5998(those)s 6592(found)s 7242(in)s 7518(other)s 8102(functional)s 0 5392(languages,)m 1085(and)s 1510(the)s 3(y)k 1994(form)s 2539(a)s 2726(natural)s 3465(subset)s 4144(of)s 4436(the)s 4805(language.)s 5854(So)s 6181(we)s 6537(pause)s 7159(here)s 7647(and)s 8072(present)s 8843(an)s 0 5104(o)m 3(v)k 3(ervie)k 6(w)k 932(of)s 1203(the)s 1551(Basser)s 2248(Lout)s 2760(object)s 3404(e)s 6(v)k 6(aluation)k 4445(algorithm.)s 480 4730(The)m 922(problem)s 1794(is)s 2019(to)s 2272(tak)s 2(e)k 2739(an)s 3037(unsized)s 3841(object)s 4499(\(pure)s 5074(parse)s 5649(tree\),)s 6206(its)s 6497(en)s 9(vironment)k 7772(\(Section)s 8640(3.4\),)s 0 4442(and)m 404(its)s 681(style)s 1188(\(Section)s 2042(2.5\),)s 2528(and)s 2933(to)s 3173(produce)s 4000(a)s 4167(PostScript)s 5209(\207le)s 5571(for)s 5910(rendering)s 6879(the)s 7228(object)s 7872(on)s 8170(an)s 8454(output)s 0 4154(de)m 6(vice.)k 786(This)s 1267(\207le)s 1632(is)s 1847(essentially)s 2914(a)s 3084(sequence)s 4022(of)s 4298(instructions)s 5468(to)s 5712(print)s 6227(a)s 6398(gi)s 6(v)k 3(en)k 6983(string)s 7584(of)s 7860(characters)s 8883(in)s 0 3866(a)m 166(gi)s 6(v)k 3(en)k 746(font)s 1191(at)s 1423(a)s 1589(gi)s 6(v)k 3(en)k 2169(point.)s 480 3492(Before)m 1189(the)s 1541(algorithm)s 2534(be)s 3(gins,)k 3266(the)s 3618(parse)s 4182(tree)s 4599(must)s 5127(be)s 5413(obtained,)s 6348(either)s 6955(by)s 7252(parsing)s 8013(input)s 8569(or)s 8832(by)s 0 3204(cop)m 2(ying)k 823(from)s 1347(the)s 1695(symbol)s 2455(table.)s 3082(Afterw)s 2(ards)k 4205(the)s 4553(data)s 5011(structure)s 5901(must)s 6426(be)s 6708(disposed.)s 7710(The)s 8137(algorithm)s 0 2916(proper)m 692(consists)s 1508(of)s 1787(\207v)s 3(e)k 2207(passes,)s 2933(each)s 3437(a)s 3611(recursi)s 6(v)k 3(e)k 4541(tra)s 4(v)k 3(ersal)k 5418(of)s 5697(the)s 6054(structure)s 6953(from)s 7485(the)s 7841(root)s 8294(do)s 6(wn)k 8887(to)s 0 2628(the)m 348(lea)s 4(v)k 3(es)k 989(and)s 1393(back.)s 240 fnt83 0 2174(1.)m 330(Evaluation)s 1490(of)s 1827(unsized)s 2667(objects.)s 240 fnt82 3554 2172(On)m 3960(the)s 4364(w)s 2(ay)k 4871(do)s 6(wn,)k 5561(calculate)s 6521(en)s 9(vironments)k 7921(and)s 8381(replace)s 0 1884(non-recursi)m 6(v)k 3(e,)k 1404(non-recepti)s 6(v)k 3(e)k 2757(symbols)s 3598(by)s 3884(their)s 4373(bodies)s 5041(\(Section)s 5886(3.4\);)s 6369(broadcast)s 7337(fonts)s 7858(to)s 8089(the)s 8429(lea)s 4(v)k 3(es,)k 0 1596(and)m 409(paragraph)s 1427(breaking)s 2322(and)s 2731(spacing)s 3521(styles)s 4121(to)s 4365(the)s 4718(paragraph)s 5736(nodes.)s 6465(On)s 6820(the)s 7173(w)s 2(ay)k 7629(back)s 8147(up,)s 8500(delete)s 240 fnt83 0 1310(FONT)m 240 fnt82 630 1308(,)m 240 fnt83 737 1310(BREAK)m 240 fnt82 1494 1308(,)m 1601(and)s 240 fnt83 2005 1310(SP)m 21(A)k 7(CE)k 240 fnt82 2760 1308(nodes,)m 3426(and)s 3830(insert)s 240 fnt83 4420 1310(SPLIT)m 240 fnt82 5049 1308(,)m 240 fnt83 5156 1310(COL)m 240 fnt82 5622 1308(,)m 5729(and)s 240 fnt83 6133 1310(R)m 9(O)k 12(W)k 240 fnt82 6707 1308(nodes)m 7317(\(Section)s 8170(2.3\).)s 240 fnt83 0 815(2.)m 293(W)s 13(idth)k 925(calculations)s 2169(and)s 2614(br)s 8(eaking)k 3(.)k 240 fnt82 3628 813(Calculate)m 4605(the)s 4973(width)s 5594(of)s 5885(e)s 6(v)k 3(ery)k 6480(subobject)s 7477(from)s 8020(the)s 8388(bottom)s 0 525(up.)m 404(As)s 720(described)s 1693(in)s 1936(Section)s 2709(2.3,)s 240 fnt83 3115 527(WIDE)m 240 fnt82 3777 525(nodes)m 4386(may)s 4851(trigger)s 5547(object)s 6190(breaking)s 7079(sub-tra)s 4(v)k 3(ersals)k 8448(during)s 0 237(this)m 396(pass.)s grestore grestore grestore pgsave restore showpage %%Page: 22 23 %%BeginPageSetup %%PageResources: font Times-Roman %%+ font Times-Italic %%+ font Times-Bold %%+ font Helvetica /pgsave save def %%IncludeResource: font Helvetica /Helveticafnt35 vec2 /Helvetica LoutRecode /fnt35 { /Helveticafnt35 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave 0 0 translate 240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate 9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 0 LoutMargSet grestore 4288 13844(-)m 4416(22)s 4710(-)s 240 fnt83 0 13256(3.)m 274(Height)s 989(calculations.)s 240 fnt82 2312 13254(Calculate)m 3270(the)s 3618(height)s 4276(of)s 4547(e)s 6(v)k 3(ery)k 5123(subobject,)s 6147(from)s 6671(the)s 7019(bottom)s 7757(up.)s 240 fnt83 0 12751(4.)m 283(Horizontal)s 1389(coor)s 8(dinates.)k 240 fnt82 2674 12749(Calculate)m 3641(the)s 3998(horizontal)s 5032(coordinate)s 6106(of)s 6386(each)s 6890(subobject)s 7876(from)s 8409(the)s 8767(top)s 0 12461(do)m 6(wn,)k 634(and)s 1038(store)s 1558(each)s 2053(leaf)s -13(')k 13(s)k 2633(coordinate)s 3698(in)s 3941(the)s 4289(leaf.)s 240 fnt83 0 11977(5.)m 295(V)s 26(ertical)k 1119(coor)s 8(dinates)k 2317(and)s 2765(P)s 19(ostScript)k 3827(g)s 2(ener)k 3(ation.)k 240 fnt82 5034 11975(Calculate)m 6013(the)s 6383(v)s 3(ertical)k 7171(coordinate)s 8257(of)s 8550(e)s 6(v)k 3(ery)k 0 11687(subobject)m 981(from)s 1509(the)s 1861(top)s 2224(do)s 6(wn,)k 2862(and)s 3270(at)s 3506(each)s 4005(leaf,)s 4473(retrie)s 6(v)k 3(e)k 5252(the)s 5604(character)s 6542(string,)s 7197(font,)s 7693(and)s 8102(horizontal)s 0 11399(coordinate,)m 1116(and)s 1520(print)s 2031(the)s 2379(PostScript)s 3421(instruction)s 4500(for)s 4838(rendering)s 5807(that)s 6225(leaf.)s 0 10896(Figure)m 692(3)s 869(gi)s 6(v)k 3(es)k 1428(the)s 1789(amount)s 2579(of)s 2863(code)s 3383(required)s 4250(for)s 4600(each)s 5168(pass.)s 5756(Symmetry)s 6819(between)s 7685(horizontal)s 8722(and)s 0 10608(v)m 3(ertical)k 764(is)s 971(e)s 3(xploited)k 1913(throughout)s 3021(Basser)s 3715(Lout,)s 4271(and)s 4672(passes)s 5331(2)s 5502(and)s 5903(3,)s 6127(as)s 6374(well)s 6837(as)s 7084(4)s 7255(and)s 7656(5,)s 7880(are)s 8224(e)s 3(x)k 3(ecuted)k 0 10320(on)m 297(shared)s 979(code.)s 480 9946(The)m 929(author)s 1621(can)s 2031(see)s 2413(no)s 2728(simple)s 3442(w)s 2(ay)k 3914(to)s 4174(reduce)s 4888(the)s 5258(number)s 6070(of)s 6362(passes.)s 7158(The)s 7607(introduction)s 8855(of)s 0 9658(horizontal)m 1027(g)s 1(alle)k 3(ys)k 1755(\(Section)s 2612(5.5\))s 3044(w)s 2(ould)k 3703(remo)s 3(v)k 3(e)k 4474(the)s 4826(need)s 5340(for)s 5682(the)s 6034(object)s 6682(breaking)s 7576(transformations)s 0 9370(within)m 700(this)s 1128(algorithm)s 2149(that)s 2599(are)s 2978(the)s 3359(principal)s 4295(obstacles)s 5254(in)s 5529(the)s 5909(w)s 2(ay)k 6393(of)s 6696(the)s 7076(mer)s 4(ging)k 7954(of)s 8257(passes)s 8952(2)s 0 9082(and)m 404(3.)s 240 fnt84 0 8338(5.)m 291(Galleys)s 240 fnt82 480 7861(W)m 9(ith)k 1022(objects)s 1767(and)s 2188(de\207nitions)s 3266(under)s 3888(control,)s 4689(the)s 5053(author)s 5741(f)s 2(aced)k 6331(the)s 6696(problem)s 7570(of)s 7858(getting)s 8592(body)s 0 7573(te)m 3(xt,)k 478(footnotes,)s 1491(\210oating)s 2291(\207gures)s 3009(and)s 3429(tables,)s 4109(references,)s 5213(inde)s 3(x)k 5813(entries,)s 6572(and)s 6992(entries)s 7695(in)s 7954(the)s 8318(table)s 8855(of)s 0 7285(contents)m 844(into)s 1264(their)s 1757(places.)s 2513(The)s 2937(resulting)s 3821(in)s 9(v)k 3(estig)k 1(ation)k 5095(occupied)s 6013(three)s 6541(months)s 7293(of)s 7559(full-time)s 8444(design)s 0 6997(w)m 2(ork,)k 612(and)s 1031(proceeded)s 2088(approximately)s 3538(as)s 3803(described)s 4793(in)s 5051(Section)s 5840(5.1;)s 6268(the)s 6631(implementation)s 8204(occupied)s 0 6709(the)m 348(years)s 903(1987-89.)s 240 fnt84 0 6060(5.1.)m 471(The)s 926(galley)s 1580(abstraction)s 240 fnt82 480 5583(Let)m 870(us)s 1147(tak)s 2(e)k 1611(the)s 1972(footnote)s 2838(as)s 3100(a)s 3279(representati)s 6(v)k 3(e)k 4677(e)s 3(xample.)k 5661(At)s 5973(some)s 6546(point)s 7111(in)s 7366(the)s 7727(document,)s 8791(we)s 0 5295(wish)m 509(to)s 748(write)s 220 fnt35 480 4847(preceding te)m 6(xt)k 480 4559(@F)m 6(ootNote { f)k 6(ootnote te)k 6(xt })k 480 4271(f)m 6(ollo)k 3(wing te)k 6(xt)k 240 fnt82 0 3772(and)m 406(we)s 744(e)s 3(xpect)k 1428(the)s 1779(formatter)s 2729(to)s 2971(remo)s 3(v)k 3(e)k 3741(the)s 4092(footnote)s 4947(from)s 5474(this)s 5873(conte)s 3(xt)k 6637(and)s 7044(place)s 7607(it)s 7802(at)s 8037(the)s 8388(bottom)s 0 3484(of)m 281(the)s 639(current)s 1386(page,)s 1955(possibly)s 2817(splitting)s 3664(some)s 4235(or)s 4504(all)s 4808(of)s 5089(it)s 5291(onto)s 5781(a)s 5957(follo)s 6(wing)k 6944(page)s 7463(if)s 7690(space)s 8287(is)s 8508(insuf)s 8998(-)s 0 3196(\207cient.)m 480 2822(An)m 844(object)s 1503(appears)s 2298(in)s 2556(the)s 2918(\207nal)s 3413(document)s 4431(at)s 4678(the)s 5040(point)s 5607(it)s 5813(is)s 6038(in)s 9(v)k 4(ok)k 2(ed,)k 6916(b)s 4(ut)k 7293(this)s 7703(basic)s 8262(property)s 0 2534(does)m 503(not)s 882(hold)s 1379(for)s 1730(footnotes:)s 2799(the)s 3160(point)s 3725(of)s 4009(in)s 9(v)k 4(ocation)k 5076(and)s 5493(the)s 5854(point)s 6419(of)s 6703(appearance)s 7847(are)s 8207(dif)s 6(ferent.)k 0 2246(In)m 254(some)s 813(w)s 2(ay)k 15(,)k 1299(the)s 1645(footnote)s 2496(is)s 2703(attached)s 3555(to)s 3791(the)s 4137(document)s 5139(at)s 5368(both)s 5849(points,)s 6539(introducing)s 7692(a)s 7856(cross)s 8395(linking)s 0 1958(\(Section)m 853(2.1\))s 1281(that)s 1699(cannot)s 2397(be)s 2679(described)s 3653(in)s 3896(purely)s 4561(functional)s 5585(terms.)s 480 1584(Since)m 1069(the)s 1420(interpretation)s 2766(of)s 3040(an)s 3(y)k 3440(object)s 4087(depends)s 4926(on)s 5226(an)s 5512(en)s 9(vironment)k 6775(and)s 7182(style)s 7692(inherited)s 8602(from)s 0 1296(the)m 347(conte)s 3(xt,)k 1153(the)s 1499(\207rst)s 1929(question)s 2795(must)s 3318(be)s 3598(whether)s 4427(the)s 4773(footnote)s 5624(inherits)s 6390(them)s 6926(through)s 7726(the)s 8072(in)s 9(v)k 4(ocation)k 0 1008(point)m 552(or)s 811(through)s 1613(the)s 1961(point\(s\))s 2753(of)s 3024(appearance.)s 480 634(If)m 697(symbols)s 1533(are)s 1867(to)s 2092(be)s 2361(interpreted)s 3440(statically)s 4341(as)s 4578(heretofore,)s 5653(then)s 6108(en)s 9(vironments)k 7439(must)s 7951(be)s 8219(inherited)s 0 346(through)m 829(the)s 1204(in)s 9(v)k 4(ocation)k 2285(point)s 2865(alone.)s 3574(Dynamic)s 4531(inheritance)s 5675(through)s 6505(the)s 6880(point)s 7459(of)s 7757(appearance)s 8916(is)s 0 58(enticing)m 836(in)s 1092(some)s 1666(w)s 2(ays:)k 2335(it)s 2541(might)s 3172(replace)s 3930(the)s 4291(body)s 4838(parameter)s 9(,)k 5904(and)s 6321(it)s 6526(might)s 7157(help)s 7635(with)s 8131(automatic)s grestore grestore grestore pgsave restore showpage %%Page: 23 24 %%BeginPageSetup %%PageResources: font Times-Roman %%+ font Times-Italic %%+ font Times-Bold /pgsave save def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave 0 0 translate 240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate 9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 1 LoutMargSet grestore 4293 13844(-)m 4421(23)s 4705(-)s 1659 13218(1.)m 2163(Initialization)s 7172(200)s 1659 12930(2.)m 2163(Memory)s 3041(allocation,)s 4090(ordered)s 4878(dag)s 5277(operations)s 7172(400)s 1659 12642(3.)m 2163(Le)s 3(xical)k 2931(analysis,)s 3808(macros,)s 4605(\207le)s 4966(handling)s 6992(1,350)s 1659 12354(4.)m 2163(P)s 3(arsing)k 2930(of)s 3201(objects)s 3929(and)s 4333(de\207nitions)s 6992(1,150)s 1659 12066(5.)m 2163(Symbol)s 2963(table)s 3483(and)s 3887(call)s 4286(graph)s 7172(600)s 1659 11778(6.)m 2163(Ev)s 6(aluation)k 3250(of)s 3521(pure)s 4002(parse)s 4562(trees)s 6992(1,650)s 1659 11490(7.)m 2163(Reading,)s 3068(storing,)s 3839(and)s 4243(scaling)s 4973(of)s 5244(fonts)s 7172(600)s 1659 11202(8.)m 2163(Cross)s 2759(references)s 3790(and)s 4194(databases)s 6992(1,000)s 1659 10914(9.)m 2163(W)s 9(idth)k 2809(and)s 3213(height)s 3871(calculations,)s 5119(and)s 5523(breaking)s 7172(700)s 1539 10626(10.)m 240 fnt83 2163 10628(Constr)m 3(ained)k 240 fnt82 3410 10626(and)m 240 fnt83 3814 10628(AdjustSize)m 240 fnt82 7172 10626(700)m 1539 10338(11.)m 2163(T)s 8(ransfer)k 3023(of)s 3294(sized)s 3843(objects)s 4571(into)s 4996(g)s 1(alle)k 3(y)k 5630(tree)s 7172(450)s 1539 10050(12.)m 2163(Galle)s 3(y)k 2851(\210ushing)s 3676(algorithm)s 6992(1,500)s 1539 9762(13.)m 2163(Coordinate)s 3282(calculations)s 4474(and)s 4878(PostScript)s 5920(output)s 7172(700)s 1539 9474(14.)m 2163(Deb)s 4(ugging)k 3277(and)s 3681(error)s 4204(handling)s 6992(1,200)s 655 0 0 0 240 288 60 6872 9328 LoutGr2 0.5 pt ltabhs grestore grestore 6872 9074(12,200)m 200 fnt84 41 8421(Figur)m 3(e)k 649(3.)s 200 fnt82 891 8422(Major)m 1427(components)s 2432(of)s 2658(the)s 2947(Basser)s 3526(Lout)s 3953(interpreter)s 8(,)k 4861(sho)s 5(wing)k 5576(the)s 5865(approximate)s 6906(number)s 7565(of)s 7791(lines)s 8208(of)s 8434(C)s 8611(code.)s 240 fnt82 0 7791(numbering,)m 1163(since)s 1730(the)s 2097(number)s 2908(of)s 3198(a)s 3384(footnote)s 4256(is)s 4486(kno)s 6(wn)k 5209(only)s 5709(at)s 5960(the)s 6328(point)s 6899(of)s 7190(appearance;)s 8396(b)s 4(ut)k 8778(the)s 0 7503(implementation)m 1606(problems)s 2597(are)s 2993(se)s 6(v)k 3(ere,)k 3751(and)s 4204(static)s 4810(inheritance)s 5976(seems)s 6661(much)s 7299(simpler)s 8125(and)s 8579(more)s 0 7215(comprehensible)m 1572(to)s 1814(the)s 2165(user)s 13(.)k 2716(Style,)s 3317(at)s 3552(least)s 4052(its)s 4330(a)s 4(v)k 6(ailable)k 5241(width)s 5846(and)s 6253(height)s 6913(part,)s 7394(must)s 7922(of)s 8196(necessity)s 0 6927(be)m 268(inherited)s 1160(through)s 1947(the)s 2280(point)s 2817(of)s 3073(appearance.)s 4297(F)s 3(or)k 4671(consistenc)s 3(y)k 15(,)k 5861(the)s 6194(entire)s 6778(style)s 7270(should)s 7952(be)s 8219(inherited)s 0 6639(in)m 256(this)s 666(w)s 2(ay)k 15(.)k 1226(There)s 1853(is)s 2077(a)s 2257(suggesti)s 6(v)k 3(e)k 3328(analogy)s 4154(here)s 4635(with)s 5131(actual)s 5770(parameters,)s 6938(which)s 7594(ha)s 4(v)k 3(e)k 8109(a)s 8289(point)s 8855(of)s 0 6351(in)m 9(v)k 4(ocation)k 1060(from)s 1591(which)s 2240(the)s 3(y)k 2710(inherit)s 3400(an)s 3690(en)s 9(vironment,)k 5004(and)s 5414(a)s 5587(point)s 6146(of)s 6424(appearance)s 7562(within)s 8237(the)s 8592(body)s 0 6063(of)m 265(the)s 606(enclosing)s 1569(de\207nition,)s 2587(from)s 3104(which)s 3739(the)s 3(y)k 4196(inherit)s 4872(a)s 5031(style.)s 5639(It)s 5838(may)s 6297(be)s 6572(possible)s 7406(to)s 7638(treat)s 8114(a)s 8273(footnote)s 0 5775(as)m 250(the)s 598(actual)s 1223(parameter)s 2237(of)s 2508(some)s 3069(symbol,)s 3881(therefore,)s 4849(although)s 5744(the)s 6092(details)s 6766(seem)s 7317(v)s 3(ery)k 7793(obscure.)s 480 5401(But)m 881(the)s 1224(most)s 1744(profound)s 2674(consequence)s 3948(of)s 4214(ha)s 4(ving)k 4910(tw)s 2(o)k 5314(types)s 5865(of)s 6131(attachment)s 7234(point)s 7780(is)s 7985(that)s 8398(it)s 8584(leads)s 0 5113(to)m 261(tw)s 2(o)k 693(distincti)s 6(v)k 3(e)k 1757(tree)s 2192(structures.)s 3306(Considering)s 4551(in)s 9(v)k 4(ocation)k 5627(points)s 6285(only)s 6787(leads)s 7351(to)s 7612(static)s 8190(trees)s 8714(lik)s 2(e)k 0 4825(this)m 396(one:)s gsave 480 2539 translate 240 fnt83 3666 1996 170 1715 240 288 60 LoutGraphic gsave grestore save gsave 200 dict begin lfigdict begin grestore 1117 1273 170 993 240 288 60 0 0 LoutGr2 currentdict end 200 dict begin begin grestore 1117 1273 170 993 240 288 60 0 0 LoutGr2 currentdict end 200 dict begin begin grestore 1117 551 170 272 240 288 60 0 721 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigellipse ] lfigdopath pop pop grestore 170 220(footnote)m grestore (T) lfigpromotelabels grestore (L) lfigpromotelabels grestore 1206 553 170 272 240 288 60 1230 1443 LoutGr2 currentdict end 200 dict begin begin grestore 1206 553 170 272 240 288 60 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigellipse ] lfigdopath pop pop grestore 170 220(body)m 692(te)s 4(xt)k grestore (T) lfigpromotelabels grestore 0 0 0 0 240 288 60 2436 1715 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ L@T@CTR L@T@CTR T@CTR lfigangle L@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef T@CTR T@CTR L@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath pop pop grestore grestore 1117 1273 0 993 240 288 60 2549 0 LoutGr2 currentdict end 200 dict begin begin grestore 1001 552 170 272 240 288 60 116 721 LoutGr2 currentdict end 200 dict begin begin grestore 884 552 170 272 240 288 60 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigellipse ] lfigdopath pop pop grestore 170 220(\207gur)m 8(e)k grestore (T) lfigpromotelabels grestore 1117 551 170 272 240 288 60 0 0 LoutGr2 currentdict end 200 dict begin begin grestore 1117 551 170 272 240 288 60 0 0 LoutGr2 currentdict end 200 dict begin begin grestore 1117 551 170 272 240 288 60 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigellipse ] lfigdopath pop pop grestore 170 220(footnote)m grestore (T) lfigpromotelabels grestore (S) lfigpromotelabels grestore 0 0 0 0 240 288 60 1117 272 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath pop pop grestore grestore (R) lfigpromotelabels grestore 0 0 0 0 240 288 60 3666 1715 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ R@T@CTR R@T@CTR T@CTR lfigangle R@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef T@CTR T@CTR R@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath pop pop grestore grestore end end restore grestore 0 2088(which)m 663(sho)s 6(ws)k 1329(that)s 1769(the)s 2139(body)s 2695(te)s 3(xt)k 3131(contains)s 4001(a)s 4189(footnote)s 5064(and)s 5490(a)s 5677(\207gure,)s 6364(the)s 6734(latter)s 7305(itself)s 7875(containing)s 8960(a)s 0 1800(footnote.)m 961(Considering)s 2184(points)s 2820(of)s 3091(appearance)s 4222(only)s 4702(gi)s 6(v)k 3(es)k 5249(a)s 5415(completely)s 6531(dif)s 6(ferent,)k 7453(dynamic)s 8330(tree:)s gsave 480 186 translate 240 fnt83 4663 1274 0 995 240 288 60 LoutGraphic gsave grestore save gsave 200 dict begin lfigdict begin grestore 3382 551 170 272 240 288 60 1281 723 LoutGr2 currentdict end 200 dict begin begin grestore 2101 551 170 272 240 288 60 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigellipse ] lfigdopath pop pop grestore 170 220(sequence)m 1100(of)s 1381(pa)s 2(g)k 2(es)k grestore (T) lfigpromotelabels grestore 1206 553 170 272 240 288 60 0 0 LoutGr2 currentdict end 200 dict begin begin grestore 1206 553 170 272 240 288 60 0 0 LoutGr2 currentdict end 200 dict begin begin grestore 1206 553 170 272 240 288 60 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigellipse ] lfigdopath pop pop grestore 170 220(body)m 692(te)s 4(xt)k grestore (T) lfigpromotelabels grestore (S) lfigpromotelabels grestore 0 0 0 0 240 288 60 1206 272 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath pop pop grestore grestore 1117 553 170 272 240 288 60 1319 0 LoutGr2 currentdict end 200 dict begin begin grestore 1117 553 170 272 240 288 60 0 0 LoutGr2 currentdict end 200 dict begin begin grestore 1117 551 170 272 240 288 60 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigellipse ] lfigdopath pop pop grestore 170 220(footnote)m grestore (T) lfigpromotelabels grestore (S) lfigpromotelabels grestore 0 0 0 0 240 288 60 2436 272 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath pop pop grestore grestore 884 553 170 272 240 288 60 2549 0 LoutGr2 currentdict end 200 dict begin begin grestore 884 553 170 272 240 288 60 0 0 LoutGr2 currentdict end 200 dict begin begin grestore 884 552 170 272 240 288 60 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigellipse ] lfigdopath pop pop grestore 170 220(\207gur)m 8(e)k grestore (T) lfigpromotelabels grestore (S) lfigpromotelabels grestore 0 0 0 0 240 288 60 3433 272 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath pop pop grestore grestore 1117 553 170 272 240 288 60 3546 0 LoutGr2 currentdict end 200 dict begin begin grestore 1117 553 170 272 240 288 60 0 0 LoutGr2 currentdict end 200 dict begin begin grestore 1117 551 170 272 240 288 60 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigellipse ] lfigdopath pop pop grestore 170 220(footnote)m grestore (T) lfigpromotelabels grestore (S) lfigpromotelabels grestore 0 0 0 0 240 288 60 4663 272 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath pop pop grestore grestore end end restore grestore grestore grestore grestore pgsave restore showpage %%Page: 24 25 %%BeginPageSetup %%PageResources: font Times-Roman %%+ font Times-Italic %%+ font Helvetica %%+ font Times-Bold /pgsave save def %%IncludeResource: font Helvetica /Helveticafnt35 vec2 /Helvetica LoutRecode /fnt35 { /Helveticafnt35 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave 0 0 translate 240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate 9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 0 LoutMargSet grestore 4288 13844(-)m 4416(24)s 4710(-)s 0 13256(The)m 468(tree)s 921(can)s 1351(be)s 1673(deeper)s 9(,)k 2448(for)s 2827(e)s 3(xample)k 3730(with)s 4253(sections)s 5114(appearing)s 6150(within)s 6859(chapters)s 7746(which)s 8429(appear)s 0 12968(within)m 680(the)s 1041(body)s 1587(te)s 3(xt,)k 2062(which)s 2717(appears)s 3510(within)s 4191(the)s 4551(\207nal)s 5044(sequence)s 5990(of)s 6273(pages.)s 6995(Document)s 8065(formatting)s 0 12680(languages)m 1024(generally)s 1984(shirk)s 2540(the)s 2905(issues)s 3544(raised)s 4189(by)s 4500(this)s 4912(dual)s 5396(tree)s 5826(structure,)s 6785(by)s 7096(making)s 7884(the)s 8249(dynamic)s 0 12392(tree)m 421(b)s 4(uilt-in,)k 1235(by)s 1537(limiting)s 2354(one)s 2764(or)s 3032(both)s 3523(trees)s 4032(to)s 4279(tw)s 2(o)k 4697(le)s 6(v)k 3(els,)k 5360(and)s 5773(so)s 6047(on,)s 6402(pro)s 3(viding)k 7391(a)s 7565(classic)s 8263(e)s 3(xample)k 0 12104(of)m 295(the)s 667(impo)s 3(v)k 3(erishing)k 2120(ef)s 6(fect)k 2740(of)s 3035(f)s 2(ailing)k 3733(to)s 3997(permit)s 4704(language)s 5648(features)s 6478(to)s 6741(attain)s 7352(their)s 7873(natural)s 8616(le)s 6(v)k 3(el)k 0 11816(of)m 271(generality)s 15(.)k 480 11442(W)m 19(e)k 854(are)s 1206(thus)s 1662(led)s 2017(to)s 2261(propose)s 3081(a)s 3252(second)s 3980(abstraction)s 5091(for)s 5434(document)s 6443(formatting,)s 7564(which)s 8211(we)s 8552(name)s 0 11154(the)m 240 fnt83 371 11156(galle)m 7(y)k 240 fnt82 1028 11154(in)m 1294(recognition)s 2464(of)s 2759(its)s 3058(similarity)s 4050(to)s 4312(the)s 4684(g)s 1(alle)k 3(ys)k 5432(used)s 5952(in)s 6219(manual)s 7001(typesetting.)s 8238(A)s 8492(g)s 1(alle)k 3(y)k 0 10866(consists)m 817(of)s 1098(an)s 1391(object)s 2045(\(such)s 2630(as)s 2890(a)s 3066(footnote\))s 4001(together)s 4854(with)s 5346(a)s 5522(sequence)s 6465(of)s 6746(places)s 7404(where)s 8054(that)s 8482(object)s 0 10578(may)m 491(appear)s 1214(\(such)s 1814(as)s 2090(the)s 2464(bottoms)s 3311(of)s 3608(the)s 3982(current)s 4743(and)s 5173(follo)s 6(wing)k 6176(pages\).)s 6989(Splitting)s 7891(occurs)s 8592(quite)s 0 10290(naturally)m 903(when)s 1479(space)s 2066(at)s 2298(an)s 3(y)k 2695(place)s 3255(is)s 3465(insuf\207cient)s 4600(to)s 4839(hold)s 5323(the)s 5671(entire)s 6270(object.)s 480 9916(In)m 736(Lout,)s 1295(a)s 1461(footnote)s 2314(g)s 1(alle)k 3(y)k 2948(and)s 3352(its)s 3628(place)s 4188(of)s 4459(appearance)s 5590(are)s 5937(de\207ned)s 6700(as)s 6950(follo)s 6(ws:)k 220 fnt35 480 9415(def @F)m 6(ootPlace { @Galle)k 4(y })k 480 8839(def @F)m 6(ootNote into { @F)k 6(ootPlace&&f)k 6(ollo)k 3(wing })k 480 8551( r)m -3(ight x)k 480 8263({ x })m 240 fnt82 0 7769(The)m 220 fnt35 445 7766(@F)m 6(ootPlace)k 240 fnt82 1719 7769(symbol)m 2496(contains)s 3362(the)s 3727(special)s 4463(symbol)s 220 fnt35 5240 7766(@Galle)m 4(y)k 240 fnt82 6078 7769(,)m 6203(indicating)s 7229(that)s 7665(it)s 7874(is)s 8102(a)s 8285(point)s 8855(of)s 0 7481(appearance)m 1143(for)s 1493(a)s 1672(g)s 1(alle)k 3(y)k 15(.)k 2413(By)s 2759(placing)s 3529(in)s 9(v)k 4(ocations)k 4682(of)s 220 fnt35 4965 7478(@F)m 6(ootPlace)k 240 fnt82 6234 7481(at)m 6478(the)s 6838(bottoms)s 7673(of)s 7956(pages,)s 8620(as)s 8883(in)s 0 7193(Section)m 801(3.2,)s 1235(we)s 1597(de\207ne)s 2265(the)s 2640(desired)s 3415(points)s 4078(of)s 4376(appearance)s 5534(for)s 5899(footnotes.)s 6980(Symbols)s 7896(whose)s 8592(body)s 0 6905(contains)m 220 fnt35 863 6902(@Galle)m 4(y)k 240 fnt82 1776 6905(either)m 2394(directly)s 3192(or)s 3466(indirectly)s 4450(are)s 4812(called)s 5455(recepti)s 6(v)k 3(e)k 6392(symbols,)s 7312(meaning)s 8204(recepti)s 6(v)k 3(e)k 0 6617(to)m 239(g)s 1(alle)k 3(ys,)k 1019(and)s 1423(the)s 3(y)k 1886(are)s 2233(e)s 3(xpanded)k 3207(only)s 3687(on)s 3984(demand.)s 4906(The)s 5334(ef)s 6(fect)k 5930(of)s 6202(the)s 220 fnt35 6550 6614(into)m 240 fnt82 6956 6617(clause)m 7609(is)s 7819(to)s 8058(mak)s 2(e)k 8631(each)s 0 6329(in)m 9(v)k 4(ocation)k 1057(of)s 220 fnt35 1332 6326(@F)m 6(ootNote)k 240 fnt82 2506 6329(a)m 2676(g)s 1(alle)k 3(y)k 3313(whose)s 3985(object)s 4632(is)s 4846(the)s 5198(result)s 5791(of)s 6066(the)s 6417(in)s 9(v)k 4(ocation)k 7475(in)s 7721(the)s 8073(usual)s 8637(w)s 2(ay)k 15(,)k 0 6041(and)m 406(whose)s 1076(sequence)s 2011(of)s 2285(points)s 2923(of)s 3196(appearance)s 4329(is)s 4542(speci\207ed)s 5452(by)s 5748(the)s 220 fnt35 6098 6038(into)m 240 fnt82 6507 6041(clause;)m 7218(in)s 7463(this)s 7861(e)s 3(xample,)k 8778(the)s 0 5753(sequence)m 933(of)s 1204(all)s 220 fnt35 1497 5750(@F)m 6(ootPlace)k 240 fnt82 2753 5753(symbols)m 3602(follo)s 6(wing)k 4579(the)s 4927(in)s 9(v)k 4(ocation)k 5981(point.)s 480 5379(Lout)m 995(permits)s 1766(g)s 1(alle)k 3(ys)k 2494(to)s 2737(be)s 3023(in)s 9(v)k 4(ok)k 2(ed)k 3842(within)s 4514(other)s 5069(g)s 1(alle)k 3(ys)k 5797(to)s 6040(arbitrary)s 6919(depth,)s 7562(so)s 7832(that)s 8254(one)s 8660(may)s 0 5091(ha)m 4(v)k 3(e)k 514(footnotes)s 1468(within)s 2149(\207gures)s 2864(within)s 3546(the)s 3907(body)s 4454(te)s 3(xt)k 4882(g)s 1(alle)k 3(y)k 15(,)k 5568(for)s 5919(e)s 3(xample,)k 6846(creating)s 7681(arbitrary)s 8570(static)s 0 4803(trees.)m 649(Recepti)s 6(v)k 3(e)k 1688(symbols)s 2573(lik)s 2(e)k 220 fnt35 3021 4800(@F)m 6(ootPlace)k 240 fnt82 4313 4803(may)m 4815(appear)s 5548(within)s 6252(an)s 3(y)k 6685(g)s 1(alle)k 3(y)k 15(,)k 7393(creating)s 8251(arbitrary)s 0 4515(dynamic)m 912(trees)s 1449(as)s 1734(well.)s 2345(The)s 2808(root)s 3289(of)s 3595(the)s 3979(dynamic)s 4891(tree,)s 5391(which)s 6068(w)s 2(ould)k 6759(normally)s 7711(consist)s 8471(of)s 8778(the)s 0 4227(sequence)m 959(of)s 1257(pages)s 1880(of)s 2178(the)s 2553(complete)s 3512(assembled)s 4593(document,)s 5671(is)s 5908(considered)s 7029(to)s 7295(be)s 7604(a)s 7797(g)s 1(alle)k 3(y)k 8458(whose)s 0 3939(point)m 563(of)s 845(appearance)s 1987(is)s 2208(the)s 2567(output)s 3250(\207le.)s 3730(Points)s 4390(of)s 4672(appearance)s 5814(may)s 6291(be)s 220 fnt35 6584 3936(preceding)m 240 fnt82 7606 3939(or)m 220 fnt35 7876 3936(f)m 6(ollo)k 3(wing)k 240 fnt82 8778 3939(the)m 0 3651(in)m 9(v)k 4(ocation)k 1054(point;)s 1658(entries)s 2345(in)s 2588(tables)s 3196(of)s 3467(contents)s 4315(are)s 4662(the)s 5010(main)s 5545(users)s 6087(of)s 220 fnt35 6358 3648(preceding)m 240 fnt82 7309 3651(.)m 480 3277(The)m 913(g)s 1(alle)k 3(y)k 1552(abstraction)s 2662(is)s 2877(adequate)s 3788(for)s 4131(all)s 4429(of)s 4706(the)s 5059(applications)s 6270(listed)s 6850(at)s 7087(the)s 7440(be)s 3(ginning)k 8453(of)s 8730(this)s 0 2989(section,)m 808(e)s 3(xcept)k 1514(that)s 1957(there)s 2515(is)s 2749(no)s 3067(pro)s 3(vision)k 4050(for)s 4413(sorting)s 5155(inde)s 3(x)k 5763(entries)s 6475(and)s 6904(references.)s 8073(Sorting)s 8855(of)s 0 2701(g)m 1(alle)k 3(ys)k 715(has)s 1075(been)s 1574(added)s 2194(to)s 2423(Lout)s 2925(as)s 3165(a)s 3321(b)s 4(uilt-in)k 4068(feature,)s 4827(in)s 9(v)k 4(ok)k 2(ed)k 5632(by)s 5916(adding)s 6611(a)s 6767(special)s 220 fnt35 7475 2698(@K)m 8(e)k 4(y)k 240 fnt82 8112 2701(parameter)m 0 2413(to)m 227(the)s 563(g)s 1(alle)k 3(ys,)k 1330(and)s 1722(using)s 2281(its)s 2545(v)s 6(alue)k 3100(as)s 3338(the)s 3673(sort)s 4079(k)s 2(e)k 3(y)k 15(.)k 4556(The)s 4972(author)s 5631(w)s 2(as)k 6039(at)s 6259(a)s 6412(loss)s 6823(to)s 7049(\207nd)s 7468(an)s 3(y)k 7852(other)s 8391(w)s 2(ay)k 15(,)k 8867(or)s 0 2125(an)m 3(y)k 397(useful)s 1036(generalization)s 2446(of)s 2717(this)s 3113(feature.)s 3939(Its)s 4228(implementation)s 5785(will)s 6211(be)s 6493(discussed)s 7468(in)s 7711(Section)s 8485(6.2.)s 240 fnt84 0 1476(5.2.)m 471(The)s 926(galley)s 1580(\210ushing)s 2447(algorithm)s 240 fnt82 480 999(Galle)m 3(y)k 1177(components)s 2395(are)s 2751(promoted)s 3736(one)s 4148(by)s 4451(one)s 4863(into)s 5298(the)s 5655(point)s 6217(of)s 6498(appearance)s 7638(in)s 7891(the)s 8249(dynamic)s 0 711(parent)m 672(g)s 1(alle)k 3(y)k 15(,)k 1359(then)s 1843(carried)s 2579(along)s 3179(with)s 3676(it,)s 3931(ultimately)s 4968(to)s 5222(the)s 5586(root)s 6046(g)s 1(alle)k 3(y)k 6695(and)s 7115(the)s 7478(output)s 8165(\207le.)s 8650(This)s 0 423(process)m 800(is)s 1042(called)s 240 fnt83 1703 425(galle)m 7(y)k 2368(\210ushing)s 240 fnt82 3121 423(:)m 3259(the)s 3640(g)s 1(alle)k 3(ys)k 4396(are)s 4775(ri)s 6(v)k 3(ers)k 5393(running)s 6223(together)s 7098(to)s 7370(the)s 7750(sea,)s 8194(and)s 8631(each)s 0 135(component)m 1124(is)s 1334(a)s 1500(drop)s 1992(of)s 2263(w)s 2(ater)k 13(.)k grestore grestore grestore pgsave restore showpage %%Page: 25 26 %%BeginPageSetup %%PageResources: font Times-Roman %%+ font Helvetica %%+ font Times-Italic /pgsave save def %%IncludeResource: font Helvetica /Helveticafnt35 vec2 /Helvetica LoutRecode /fnt35 { /Helveticafnt35 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave 0 0 translate 240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate 9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 1 LoutMargSet grestore 4292 13841(-)m 4420(25)s 4706(-)s 480 13250(Here)m 1057(is)s 1324(a)s 1547(snapshot)s 2502(of)s 2830(a)s 3053(small)s 3682(dynamic)s 4616(tree,)s 5137(based)s 5797(on)s 6151(the)s 220 fnt35 6556 13247(@P)m 8(ageList)k 240 fnt82 7737 13250(de\207nitions)m 8855(of)s 0 12962(Section)m 774(3.2:)s 6982 3257 0 3257 240 288 60 480 9414 LoutGr2 grestore save gsave 200 dict begin lfigdict begin grestore 200 fnt83 0 3121(output)m 563(\207le)s gsave 860 0 translate 240 fnt82 0 3257 0 3165 240 288 60 LoutGraphic gsave currentdict end 200 dict begin begin grestore 0 0 0 0 240 288 60 0 3165 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfignoline [ lfigbox ] lfigdopath pop pop grestore grestore (A) lfigpromotelabels grestore 1994(r)s 9(oot)k 2370(galle)s 6(y)k gsave 1994 2967 translate 240 fnt82 1927 0 0 0 240 288 60 LoutGraphic gsave currentdict end 200 dict begin begin grestore 0 0 0 0 240 288 60 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfignoline [ lfigbox ] lfigdopath pop pop grestore grestore (B) lfigpromotelabels grestore gsave 1994 473 translate 240 fnt82 1927 2494 0 2494 240 288 60 LoutGraphic gsave 0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath stroke grestore 160 fnt82 845 2216(-)m 931(1)s 1035(-)s 410 2000(A)m 563(small)s 140 fnt35 170 1784(@Galle)m 2(y)k 160 fnt82 743(*)s 904 1617 5 1545 160 180 40 853 275 LoutGr2 currentdict end 200 dict begin begin grestore 10 10 5 5 160 180 40 0 1540 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfignoline [ lfigbox ] lfigdopath pop pop grestore grestore (C) lfigpromotelabels grestore 140 fnt35 170 173(@F)m 4(ootSect)k grestore gsave 1994 0 translate 240 fnt82 1927 473 170 237 240 288 60 LoutGraphic gsave 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigbox ] lfigdopath pop pop grestore 140 fnt35 170 201(@P)m 5(ageList 2)k grestore 5055 2611(body)m 5490(te)s 4(xt)k gsave 5055 1974 translate 240 fnt82 1927 483 170 240 240 288 60 LoutGraphic gsave currentdict end 200 dict begin begin grestore 1927 483 170 240 240 288 60 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigbox ] lfigdopath pop pop grestore 160 fnt82 170 204(paragraph)m grestore (D) lfigpromotelabels grestore gsave 5055 1524 translate 240 fnt82 1927 450 170 207 240 288 60 LoutGraphic gsave 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigbox ] lfigdopath pop pop grestore 160 fnt82 170 171(of)m 351(te)s 2(xt.)k grestore gsave 5055 1034 translate 240 fnt82 1927 490 170 244 240 288 60 LoutGraphic gsave 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigbox ] lfigdopath pop pop grestore 160 fnt35 170 203(@Input)m grestore gsave 0 0 translate 240 fnt82 0 0 0 0 240 288 60 LoutGraphic gsave 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ B@W lfigprevious /FROM lfigpointdef A@E lfigprevious /TO lfigpointdef ] lfigdopath 0.15 cm /lfigsolid /lfigblack lfigopen 0.15 cm 0.05 cm lfigforward grestore grestore gsave 0 0 translate 240 fnt82 0 0 0 0 240 288 60 LoutGraphic gsave 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ D@W lfigprevious /FROM lfigpointdef C@E lfigprevious /TO lfigpointdef ] lfigdopath 0.15 cm /lfigsolid /lfigblack lfigopen 0.15 cm 0.05 cm lfigforward grestore grestore end end restore grestore 0 8963(The)m 472(components)s 1724(of)s 2039(the)s 2431(body)s 3009(te)s 3(xt)k 3468(g)s 1(alle)k 3(y)k 4146(are)s 4537(lines,)s 5139(e)s 3(xcept)k 5864(for)s 6246(the)s 6638(special)s 7400(recepti)s 6(v)k 3(e)k 8366(symbol)s 220 fnt35 0 8672(@Input)m 240 fnt82 759 8675(which)m 1393(is)s 1595(a)s 1753(placeholder)s 2920(for)s 3249(as)s 3491(yet)s 3835(unread)s 4536(input)s 5080(\(Section)s 5924(5.4\).)s 6459(The)s 6879(components)s 8079(of)s 8342(the)s 8681(root)s 0 8387(g)m 1(alle)k 3(y)k 646(are)s 1006(pages,)s 1671(e)s 3(xcept)k 2364(for)s 2715(the)s 3076(concluding)s 4205(une)s 3(xpanded)k 5431(in)s 9(v)k 4(ocation)k 6498(of)s 220 fnt35 6781 8384(@P)m 8(ageList)k 240 fnt82 7845 8387(,)m 7965(which)s 8620(is)s 8843(an)s 0 8099(ine)m 3(xhaustible)k 1328(source)s 2008(of)s 2279(more)s 2826(pages,)s 3478(e)s 3(xpanded)k 4451(on)s 4748(demand.)s 480 7725(The)m 923(concrete)s 1804(data)s 2277(structure)s 3184(used)s 3696(by)s 4006(Basser)s 4718(Lout)s 5246(permits)s 6028(the)s 6392(g)s 1(alle)k 3(y)k 7041(\210ushing)s 7882(algorithm)s 8887(to)s 0 7437(na)m 4(vig)k 1(ate)k 861(the)s 1209(dynamic)s 2086(tree)s 2499(and)s 2903(\207nd)s 3334(signi\207cant)s 4390(features)s 5196(quickly:)s gsave 480 78 translate 200 fnt82 8081 7019 226 7019 200 288 50 LoutGraphic gsave grestore save gsave 100 dict begin lfigdict begin grestore 980 7019 226 6704 200 288 50 0 0 LoutGr2 currentdict end 100 dict begin begin grestore 980 585 226 270 200 288 50 0 6434 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigellipse ] lfigdopath pop pop grestore 200 fnt83 226 226(HEAD)m grestore (A) lfigpromotelabels grestore 1927 588 226 273 200 288 50 1830 6431 LoutGr2 currentdict end 100 dict begin begin grestore 1631 588 226 273 200 288 50 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigellipse ] lfigdopath pop pop grestore 200 fnt83 226 229(RECEIVING)m 1306(*)s grestore (B) lfigpromotelabels grestore 0 0 0 0 200 288 50 1830 6431 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ A@CTR A@CTR B@W lfigangle A@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef B@W lfigprevious /TO lfigpointdef ] lfigdopath 0.15 cm /lfigsolid /lfigblack lfigopen 0.15 cm 0.05 cm lfigforward grestore grestore 1927 588 226 273 200 288 50 1830 5503 LoutGr2 currentdict end 100 dict begin begin grestore 1498 588 226 273 200 288 50 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigellipse ] lfigdopath pop pop grestore 200 fnt83 226 229(RECEPTIVE)m grestore (C) lfigpromotelabels grestore 0 0 0 0 200 288 50 1830 5503 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ A@CTR A@CTR C@W lfigangle A@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef C@W lfigprevious /TO lfigpointdef ] lfigdopath 0.15 cm /lfigsolid /lfigblack lfigopen 0.15 cm 0.05 cm lfigforward grestore grestore 1927 0 0 0 200 288 50 1830 5163 LoutGr2 currentdict end 100 dict begin begin grestore 0 0 0 0 200 288 50 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfignoline [ lfigbox ] lfigdopath pop pop grestore grestore (D) lfigpromotelabels grestore 0 0 0 0 200 288 50 1830 5163 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ A@CTR A@CTR D@NW lfigangle A@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef D@NW lfigprevious /TO lfigpointdef ] lfigdopath 0.15 cm /lfigsolid /lfigblack lfigopen 0.15 cm 0.05 cm lfigforward grestore grestore 1927 2494 0 2494 200 288 50 1830 2669 LoutGr2 0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath stroke grestore 160 fnt82 845 2216(-)m 931(1)s 1035(-)s 410 2000(A)m 563(small)s 1587 1611 0 1545 160 180 40 170 275 LoutGr2 currentdict end 100 dict begin begin grestore 572 132 0 66 160 180 40 0 1479 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfignoline [ lfigbox ] lfigdopath pop pop grestore 140 fnt35 0 30(@Galle)m 2(y )k grestore (E) lfigpromotelabels grestore 1587 105 0 39 160 180 40 170 170 LoutGr2 currentdict end 100 dict begin begin grestore 731 105 0 39 160 180 40 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfignoline [ lfigbox ] lfigdopath pop pop grestore 140 fnt35 0 3(@F)m 4(ootSect )k grestore (F) lfigpromotelabels grestore grestore 0 0 0 0 200 288 50 1830 2669 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ B@E B@E 0 B@E E@E lfigydistance lfigpadd E@E ] lfigdopath 0.15 cm /lfigsolid /lfigblack lfigopen 0.15 cm 0.05 cm lfigforward grestore grestore 0 0 0 0 200 288 50 1830 2669 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ C@E C@E 0 C@E F@E lfigydistance lfigpadd F@E ] lfigdopath 0.15 cm /lfigsolid /lfigblack lfigopen 0.15 cm 0.05 cm lfigforward grestore grestore 1927 588 226 273 200 288 50 1830 1741 LoutGr2 currentdict end 100 dict begin begin grestore 839 588 226 273 200 288 50 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigellipse ] lfigdopath pop pop grestore 200 fnt83 226 229(GAP)m grestore (C) lfigpromotelabels grestore 0 0 0 0 200 288 50 1830 1741 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ A@CTR A@CTR C@W lfigangle A@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef C@W lfigprevious /TO lfigpointdef ] lfigdopath 0.15 cm /lfigsolid /lfigblack lfigopen 0.15 cm 0.05 cm lfigforward grestore grestore 1927 588 226 273 200 288 50 1830 813 LoutGr2 currentdict end 100 dict begin begin grestore 1498 588 226 273 200 288 50 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigellipse ] lfigdopath pop pop grestore 200 fnt83 226 229(RECEPTIVE)m grestore (C) lfigpromotelabels grestore 0 0 0 0 200 288 50 1830 813 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ A@CTR A@CTR C@W lfigangle A@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef C@W lfigprevious /TO lfigpointdef ] lfigdopath 0.15 cm /lfigsolid /lfigblack lfigopen 0.15 cm 0.05 cm lfigforward grestore grestore 1927 473 170 237 200 288 50 1830 0 LoutGr2 currentdict end 100 dict begin begin grestore 1927 473 170 237 200 288 50 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigbox ] lfigdopath pop pop grestore 140 fnt35 170 201(@P)m 5(ageList 2)k grestore (D) lfigpromotelabels grestore 0 0 0 0 200 288 50 1830 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ A@CTR A@CTR D@NW lfigangle A@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef D@NW lfigprevious /TO lfigpointdef ] lfigdopath 0.15 cm /lfigsolid /lfigblack lfigopen 0.15 cm 0.05 cm lfigforward grestore grestore 0 0 0 0 200 288 50 1830 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ C@E C@E 0 C@E D@W 1.8 cm 0 lfigpadd lfigydistance lfigpadd D@W 1.8 cm 0 lfigpadd ] lfigdopath 0.15 cm /lfigsolid /lfigblack lfigopen 0.15 cm 0.05 cm lfigforward grestore grestore 980 7019 226 6704 200 288 50 4324 0 LoutGr2 currentdict end 100 dict begin begin grestore 980 585 226 270 200 288 50 0 6434 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigellipse ] lfigdopath pop pop grestore 200 fnt83 226 226(HEAD)m grestore (A) lfigpromotelabels grestore 0 0 0 0 200 288 50 5304 6704 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ B@E lfigprevious /FROM lfigpointdef A@W lfigprevious /TO lfigpointdef ] lfigdopath 0.15 cm /lfigsolid /lfigblack lfigopen 0.15 cm 0.05 cm lfigforward grestore grestore 1927 483 170 240 200 288 50 6154 6536 LoutGr2 currentdict end 100 dict begin begin grestore 1927 483 170 240 200 288 50 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigbox ] lfigdopath pop pop grestore 160 fnt82 170 204(paragraph)m grestore (B) lfigpromotelabels grestore 0 0 0 0 200 288 50 6154 6536 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ A@CTR A@CTR B@W lfigangle A@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef B@W lfigprevious /TO lfigpointdef ] lfigdopath 0.15 cm /lfigsolid /lfigblack lfigopen 0.15 cm 0.05 cm lfigforward grestore grestore 1927 588 226 273 200 288 50 6154 5608 LoutGr2 currentdict end 100 dict begin begin grestore 839 588 226 273 200 288 50 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigellipse ] lfigdopath pop pop grestore 200 fnt83 226 229(GAP)m grestore (B) lfigpromotelabels grestore 0 0 0 0 200 288 50 6154 5608 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ A@CTR A@CTR B@W lfigangle A@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef B@W lfigprevious /TO lfigpointdef ] lfigdopath 0.15 cm /lfigsolid /lfigblack lfigopen 0.15 cm 0.05 cm lfigforward grestore grestore 1927 450 170 207 200 288 50 6154 4818 LoutGr2 currentdict end 100 dict begin begin grestore 1927 450 170 207 200 288 50 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigbox ] lfigdopath pop pop grestore 160 fnt82 170 171(of)m 351(te)s 2(xt.)k grestore (B) lfigpromotelabels grestore 0 0 0 0 200 288 50 6154 4818 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ A@CTR A@CTR B@NW lfigangle A@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef B@NW lfigprevious /TO lfigpointdef ] lfigdopath 0.15 cm /lfigsolid /lfigblack lfigopen 0.15 cm 0.05 cm lfigforward grestore grestore 1927 588 226 273 200 288 50 6154 3890 LoutGr2 currentdict end 100 dict begin begin grestore 839 588 226 273 200 288 50 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigellipse ] lfigdopath pop pop grestore 200 fnt83 226 229(GAP)m grestore (B) lfigpromotelabels grestore 0 0 0 0 200 288 50 6154 3890 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ A@CTR A@CTR B@W lfigangle A@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef B@W lfigprevious /TO lfigpointdef ] lfigdopath 0.15 cm /lfigsolid /lfigblack lfigopen 0.15 cm 0.05 cm lfigforward grestore grestore 1927 588 226 273 200 288 50 6154 2962 LoutGr2 currentdict end 100 dict begin begin grestore 1498 588 226 273 200 288 50 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigellipse ] lfigdopath pop pop grestore 200 fnt83 226 229(RECEPTIVE)m grestore (B) lfigpromotelabels grestore 0 0 0 0 200 288 50 6154 2962 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ A@CTR A@CTR B@W lfigangle A@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef B@W lfigprevious /TO lfigpointdef ] lfigdopath 0.15 cm /lfigsolid /lfigblack lfigopen 0.15 cm 0.05 cm lfigforward grestore grestore 1927 471 170 235 200 288 50 6154 2151 LoutGr2 currentdict end 100 dict begin begin grestore 1927 471 170 235 200 288 50 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigbox ] lfigdopath pop pop grestore 140 fnt35 170 199(@Input)m grestore (C) lfigpromotelabels grestore 0 0 0 0 200 288 50 6154 2151 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ A@CTR A@CTR C@NW lfigangle A@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef C@NW lfigprevious /TO lfigpointdef ] lfigdopath 0.15 cm /lfigsolid /lfigblack lfigopen 0.15 cm 0.05 cm lfigforward grestore grestore 0 0 0 0 200 288 50 6154 2151 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ B@E B@E 0 B@E C@W 1.2 cm 0 lfigpadd lfigydistance lfigpadd C@W 1.2 cm 0 lfigpadd ] lfigdopath 0.15 cm /lfigsolid /lfigblack lfigopen 0.15 cm 0.05 cm lfigforward grestore grestore end end restore grestore grestore grestore grestore pgsave restore showpage %%Page: 26 27 %%BeginPageSetup %%PageResources: font Times-Roman %%+ font Times-Italic %%+ font Helvetica /pgsave save def %%IncludeResource: font Helvetica /Helveticafnt35 vec2 /Helvetica LoutRecode /fnt35 { /Helveticafnt35 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave 0 0 translate 240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate 9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 0 LoutMargSet grestore 4288 13842(-)m 4416(26)s 4709(-)s 0 13251(Each)m 521(g)s 1(alle)k 3(y)k 1140(has)s 1495(a)s 240 fnt83 1647 13253(HEAD)m 240 fnt82 2325 13251(node)m 2832(whose)s 3485(children)s 4311(are)s 4643(its)s 4904(component)s 6013(objects,)s 6783(separated)s 7728(by)s 240 fnt83 8007 13253(GAP)m 240 fnt82 8516 13251(nodes)m 0 12963(recording)m 969(the)s 1317(inter)s 4(-component)k 2953(g)s 1(aps.)k 480 12589(Each)m 1026(component)s 2161(is)s 2383(preceded)s 3315(by)s 3621(zero)s 4096(or)s 4367(more)s 240 fnt83 4925 12591(galle)m 7(y)k 5569(inde)s 4(x)k 6155(nodes)s 240 fnt82 6780 12589(of)m 7063(v)s 6(arious)k 7823(types.)s 8504(Ev)s 3(ery)k 0 12301(recepti)m 6(v)k 3(e)k 922(symbol)s 1681(has)s 2051(a)s 240 fnt83 2216 12303(RECEPTIVE)m 240 fnt82 3529 12301(inde)m 3(x)k 4112(pointing)s 4963(to)s 5201(it,)s 5440(so)s 5705(that)s 6123(it)s 6314(can)s 6703(be)s 6984(found)s 7601(without)s 8391(search)s 8998(-)s 0 12013(ing)m 355(through)s 1152(its)s 1423(component.)s 2646(If)s 2871(the)s 3215(symbol)s 3970(is)s 4175(currently)s 5086(the)s 5429(tar)s 4(get)k 6023(of)s 6290(a)s 6451(g)s 1(alle)k 3(y)k 15(,)k 7118(it)s 7305(has)s 7670(a)s 240 fnt83 7831 12015(RECEIVING)m 240 fnt82 0 11725(inde)m 3(x)k 595(instead)s 1342(which)s 1995(is)s 2217(also)s 2667(link)s 2(ed)k 3332(to)s 3583(the)s 3942(incoming)s 4911(g)s 1(alle)k 3(y)k 15(.)k 5652(Galle)s 3(ys)k 6441(that)s 6871(are)s 7229(currently)s 8157(without)s 8960(a)s 0 11437(tar)m 4(get)k 586(are)s 920(link)s 2(ed)k 1560(to)s 1786(the)s 2120(dynamic)s 2984(tree)s 3383(by)s 240 fnt83 3664 11439(UN)m 6(A)k 8(TT)k 12(A)k 7(CHED)k 240 fnt82 5215 11437(g)m 1(alle)k 3(y)k 5836(inde)s 3(x)k 3(es,)k 6654(either)s 7244(just)s 7635(after)s 8118(their)s 8601(most)s 0 11149(recent)m 643(tar)s 4(get)k 1242(if)s 1459(there)s 1992(has)s 2362(been)s 2871(one,)s 3324(or)s 3583(else)s 4010(at)s 4242(their)s 4739(point)s 5291(of)s 5562(in)s 9(v)k 4(ocation.)k 480 10775(Each)m 1041(g)s 1(alle)k 3(y)k 1701(should)s 2424(be)s 2732(thought)s 3550(of)s 3847(as)s 4123(a)s 4315(concurrent)s 5423(process,)s 6273(although)s 7194(the)s 7569(implementation)s 0 10487(in)m 268(C)s 506(uses)s 995(coroutines)s 2067(implemented)s 3399(by)s 3719(procedures.)s 4957(A)s 5213(g)s 1(alle)k 3(y)k 5873(may)s 6364(promote)s 7243(its)s 7545(\207rst)s 8002(component)s 0 10199(only)m 499(if)s 735(it)s 946(has)s 1335(a)s 1520(tar)s 4(get,)k 2185(suf\207cient)s 3153(space)s 3759(is)s 3988(a)s 4(v)k 6(ailable)k 4915(at)s 5166(the)s 5533(tar)s 4(get)k 6151(to)s 6409(recei)s 6(v)k 3(e)k 7164(the)s 7531(component,)s 8722(and)s 0 9911(the)m 349(component)s 1475(contains)s 2325(no)s 2620(recepti)s 6(v)k 3(e)k 3544(symbols.)s 4508(This)s 4986(last)s 5379(condition)s 6342(seems)s 6979(to)s 7220(be)s 7504(the)s 7854(k)s 2(e)k 3(y)k 8251(to)s 8492(g)s 1(alle)k 3(y)k 0 9623(synchronization:)m 1722(it)s 1943(forces)s 2606(a)s 2801(bottom-up)s 3880(promotion)s 4963(re)s 3(gime,)k 5759(pre)s 6(v)k 3(enting)k 6855(pages)s 7480(from)s 8033(\210ushing)s 8887(to)s 0 9335(output)m 672(before)s 1338(te)s 3(xt)k 1753(\210ushes)s 2469(into)s 2894(them,)s 3479(for)s 3817(e)s 3(xample.)k 480 8961(Each)m 1022(g)s 1(alle)k 3(y)k 1663(contains)s 2519(a)s 2692(number)s 3490(of)s 3769(binary)s 4441(semaphores,)s 5685(sho)s 6(wn)k 6369(as)s 6626(asterisks)s 7507(in)s 7757(our)s 8144(snapshots)s 0 8673(when)m 583(set.)s 1019(At)s 1325(an)s 3(y)k 1730(gi)s 6(v)k 3(en)k 2317(moment,)s 3215(a)s 3389(g)s 1(alle)k 3(y)k 4030(process)s 4805(is)s 5022(either)s 5633(running)s 6438(or)s 6704(else)s 7139(is)s 7356(suspended)s 8419(on)s 8724(one)s 0 8385(of)m 269(its)s 543(o)s 6(wn)k 1005(semaphores.)s 2296(The)s 240 fnt83 2722 8387(HEAD)m 240 fnt82 3413 8385(node)m 3933(contains)s 4779(a)s 4943(semaphore)s 6033(which)s 6673(is)s 6881(set)s 7204(when)s 7778(the)s 8124(g)s 1(alle)k 3(y)k 8756(has)s 0 8097(tried)m 499(to)s 742(\207nd)s 1177(a)s 1347(tar)s 4(get)k 1950(and)s 2359(f)s 2(ailed.)k 3068(Each)s 3607(recepti)s 6(v)k 3(e)k 4533(symbol)s 5297(has)s 5671(a)s 5842(semaphore)s 6938(which)s 7584(is)s 7798(set)s 8127(when)s 8708(that)s 0 7809(symbol)m 760(is)s 970(pre)s 6(v)k 3(enting)k 2037(the)s 2385(\207rst)s 2816(component)s 3940(from)s 4464(being)s 5049(promoted.)s 480 7435(F)m 3(or)k 859(e)s 3(xample,)k 1762(in)s 1994(the)s 2331(snapshot)s 3218(at)s 3439(the)s 3776(be)s 3(ginning)k 4773(of)s 5033(this)s 5418(section,)s 6191(the)s 6528(root)s 6962(g)s 1(alle)k 3(y)k 7585(is)s 7784(suspended)s 8829(on)s 0 7147(the)m 220 fnt35 351 7144(@Galle)m 4(y)k 240 fnt82 1253 7147(symbol,)m 2069(b)s 4(ut)k 2435(the)s 2787(te)s 3(xt)k 3205(g)s 1(alle)k 3(y)k 3843(is)s 4057(running.)s 4970(It)s 5179(will)s 5608(suspend)s 6442(on)s 6743(the)s 220 fnt35 7095 7144(@Input)m 240 fnt82 7866 7147(symbol)m 8630(after)s 0 6859(the)m 348(\207rst)s 779(tw)s 2(o)k 1189(components)s 2397(are)s 2744(promoted.)s 480 6485(Ev)m 3(ery)k 1145(g)s 1(alle)k 3(y)k 240 fnt83 1822 6487(G)m 240 fnt82 1995 6485(,)m 2145(be)s 2470(it)s 2705(a)s 2914(list)s 3308(of)s 3623(pages,)s 4318(body)s 4895(te)s 3(xt,)k 5400(a)s 5609(footnote,)s 6556(or)s 6858(whate)s 6(v)k 3(er)k 9(,)k 7866(e)s 3(x)k 3(ecutes)k 8778(the)s 0 6197(follo)m 6(wing)k 977(algorithm)s 1966(in)s 2209(parallel)s 2979(with)s 3461(e)s 6(v)k 3(ery)k 4037(other)s 4588(g)s 1(alle)k 3(y:)k 0 5694(1.)m 303(Initially)s 240 fnt83 1132 5696(G)m 240 fnt82 1384 5694(is)m 1614(unattached.)s 2834(Search)s 3560(forw)s 2(ards)k 4478(or)s 4756(backw)s 2(ards)k 5848(from)s 6392(its)s 240 fnt83 6687 5696(UN)m 6(A)k 8(TT)k 12(A)k 7(CHED)k 240 fnt82 8272 5694(inde)m 3(x)k 8876(as)s 0 5406(required,)m 903(to)s 1142(\207nd)s 1573(a)s 1739(recepti)s 6(v)k 3(e)k 2661(symbol)s 240 fnt83 3421 5408(S)m 240 fnt82 3602 5406(which)m 4244(can)s 4633(e)s 3(xpand)k 5380(to)s 5619(re)s 6(v)k 3(eal)k 6248(a)s 6414(tar)s 4(get)k 7013(for)s 240 fnt83 7351 5408(G)m 240 fnt82 7524 5406(.)m 0 4903(2.)m 284(If)s 514(no)s 240 fnt83 807 4905(S)m 240 fnt82 988 4903(can)m 1377(be)s 1659(found,)s 2325(suspend)s 3155(on)s 3452(the)s 3800(attachment)s 4908(semaphore.)s 6108(Resume)s 6935(later)s 7418(from)s 7942(step)s 8380(1.)s 0 4400(3.)m 281(Expand)s 240 fnt83 1068 4402(S)m 240 fnt82 1246 4400(to)m 1482(re)s 6(v)k 3(eal)k 2107(the)s 2452(tar)s 4(get)k 3048(of)s 240 fnt83 3316 4402(G)m 240 fnt82 3489 4400(.)m 3649(Preserv)s 3(e)k 240 fnt83 4521 4402(S)m 240 fnt82 4642 4400(')m 13(s)k 4849(semaphore)s 5938(by)s 6229(mo)s 3(ving)k 7007(it)s 7196(to)s 7432(the)s 7777(\207rst)s 8204(recepti)s 6(v)k 3(e)k 0 4112(symbol)m 760(within)s 1428(the)s 1776(e)s 3(xpansion)k 2801(of)s 240 fnt83 3072 4114(S)m 240 fnt82 3193 4112(.)m 0 3609(4.)m 295(Calculate)s 1264(the)s 1624(a)s 4(v)k 6(ailable)k 2543(width)s 3156(and)s 3572(height)s 4241(at)s 4484(the)s 4844(tar)s 4(get,)k 5501(and)s 5917(if)s 240 fnt83 6145 3611(G)m 240 fnt82 6389 3609(is)m 6611(still)s 7034(a)s 7211(pure)s 7704(parse)s 8275(tree,)s 8751(use)s 0 3321(the)m 377(en)s 9(vironment)k 1667(attached)s 2550(to)s 240 fnt83 2819 3323(G)m 240 fnt82 3081 3321(and)m 3515(the)s 3892(style)s 4429(information)s 5643(from)s 6197(the)s 6574(tar)s 4(get)k 7203(to)s 7471(e)s 6(v)k 6(aluate)k 240 fnt83 8341 3323(G)m 240 fnt82 8603 3321(as)m 8883(in)s 0 3033(Section)m 774(4.)s 0 2577(5.)m 284(Examine)s 1190(the)s 1538(components)s 2746(of)s 240 fnt83 3017 2579(G)m 240 fnt82 3250 2577(one)m 3652(by)s 3946(one.)s 4456(F)s 3(or)k 4845(each)s 5340(component)s 6464(there)s 6997(are)s 7344(three)s 7877(possibilities:)s 240 fnt83 480 2205(A)m 7(CCEPT)k 17(.)k 240 fnt82 1513 2203(If)m 1756(the)s 2116(component)s 3253(\207ts)s 3609(into)s 4046(the)s 4407(a)s 4(v)k 6(ailable)k 5328(space,)s 5978(and)s 6395(has)s 6778(no)s 7083(other)s 7647(problems,)s 8657(then)s 0 1915(promote)m 875(it)s 1090(into)s 1538(the)s 1909(tar)s 4(get.)k 2635(If)s 2888(this)s 3306(is)s 3539(the)s 3910(\207rst)s 4364(component)s 5511(promoted)s 6509(into)s 6956(this)s 7375(tar)s 4(get,)k 8044(and)s 240 fnt83 8471 1917(G)m 240 fnt82 8727 1915(is)m 8960(a)s 0 1627(forcing)m 768(g)s 1(alle)k 3(y)k 1428(\(Section)s 2307(5.4\),)s 2819(delete)s 3470(e)s 6(v)k 3(ery)k 4072(recepti)s 6(v)k 3(e)k 5020(symbol)s 5806(preceding)s 6827(the)s 7201(tar)s 4(get)k 7826(in)s 8095(the)s 8469(parent)s 0 1339(g)m 1(alle)k 3(y)k 15(.)k 729(If)s 240 fnt83 959 1341(G)m 240 fnt82 1192 1339(is)m 1402(the)s 1750(root)s 2195(g)s 1(alle)k 3(y)k 15(,)k 2867(render)s 3537(the)s 3885(component)s 5009(on)s 5306(the)s 5654(output)s 6326(\207le)s 6687(and)s 7091(dispose)s 7865(it;)s 240 fnt83 480 967(REJECT)m 17(.)k 240 fnt82 1490 965(If)m 1756(the)s 2140(component)s 3300(is)s 3546(too)s 3941(lar)s 4(ge)k 4506(for)s 4880(the)s 5264(a)s 4(v)k 6(ailable)k 6208(space,)s 6882(or)s 7177(a)s 240 fnt83 7379 967(FOLLO)m 12(WS)k 240 fnt82 8542 965(inde)m 3(x)k 0 677(\(described)m 1043(belo)s 6(w\))k 1740(forbids)s 2458(its)s 2723(promotion)s 3767(into)s 4182(this)s 4568(tar)s 4(get,)k 5203(then)s 5662(detach)s 240 fnt83 6333 679(G)m 240 fnt82 6556 677(from)m 7069(the)s 7407(tar)s 4(get.)k 8100(If)s 8320(this)s 8705(w)s 2(as)k 0 389(the)m 338(\207rst)s 758(component)s 1872(at)s 2093(this)s 2479(tar)s 4(get,)k 240 fnt83 3114 391(S)m 240 fnt82 3284 389(has)m 3644(been)s 4142(a)s 4298(complete)s 5219(f)s 2(ailure,)k 5936(so)s 6191(undo)s 6713(step)s 7141(3)s 7294(\(Basser)s 8060(Lout)s 8561(is)s 8760(not)s grestore grestore grestore pgsave restore showpage %%Page: 27 28 %%BeginPageSetup %%PageResources: font Times-Roman %%+ font Times-Italic %%+ font Helvetica /pgsave save def %%IncludeResource: font Helvetica /Helveticafnt35 vec2 /Helvetica LoutRecode /fnt35 { /Helveticafnt35 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave 0 0 translate 240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate 9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 1 LoutMargSet grestore 4291 13844(-)m 4419(27)s 4707(-)s 0 13255(able)m 454(to)s 693(undo)s 1226(step)s 1664(4\);)s 1975(otherwise)s 2960(delete)s 3586(the)s 3934(tar)s 4(get.)k 4637(Return)s 5345(to)s 5584(step)s 6022(1)s 6177(and)s 6581(continue)s 7461(immediately;)s 240 fnt83 480 12883(SUSPEND.)m 240 fnt82 1685 12881(If)m 1928(the)s 2289(component)s 3426(contains)s 4287(a)s 4466(recepti)s 6(v)k 3(e)k 5402(symbol,)s 6227(it)s 6432(cannot)s 7143(be)s 7438(promoted)s 8426(yet.)s 8896(If)s 0 12593(this)m 392(symbol)s 1148(is)s 1354(the)s 1697(tar)s 4(get)k 2292(of)s 2559(a)s 2720(g)s 1(alle)k 3(y)k 3350(that)s 3764(w)s 2(as)k 4180(written)s 4909(to)s 5144(an)s 5423(auxiliary)s 6321(\207le)s 6678(on)s 6971(a)s 7132(pre)s 6(vious)k 7997(run,)s 8419(read)s 8883(in)s 0 12305(that)m 427(g)s 1(alle)k 3(y)k 1071(and)s 1484(\210ush)s 2017(it.)s 2322(Otherwise)s 3370(suspend)s 4209(on)s 4516(the)s 4873(recepti)s 6(v)k 3(e)k 5805(symbol')s 13(s)k 6729(semaphore;)s 7887(resume)s 8643(later)s 0 12017(from)m 524(step)s 962(4.)s 0 11513(6.)m 284(T)s 16(erminate)k 1305(when)s 1881(the)s 2229(g)s 1(alle)k 3(y)k 2863(is)s 3073(empty)s 15(.)k 0 11010(At)m 354(v)s 6(arious)k 1158(points)s 1850(in)s 2148(this)s 2599(algorithm,)s 3691(recepti)s 6(v)k 3(e)k 4668(symbols)s 5572(\(and)s 6111(their)s 6663(semaphores\))s 7975(are)s 8378(deleted)s 0 10722(in)m 273(the)s 652(dynamic)s 1560(parent)s 2247(g)s 1(alle)k 3(y)k 15(,)k 2950(possibly)s 3833(permitting)s 4911(it)s 5134(to)s 5404(resume)s 6180(\210ushing.)s 7147(When)s 7807(this)s 8234(happens,)s 0 10434(Basser)m 701(Lout)s 1218(resumes)s 2057(the)s 2410(parent)s 3071(immediately)s 4324(after)s 240 fnt83 4825 10436(G)m 240 fnt82 5063 10434(suspends)m 5983(or)s 6247(terminates.)s 7410(Also,)s 7974(whene)s 6(v)k 3(er)k 8960(a)s 0 10146(component)m 1140(is)s 1366(promoted,)s 2406(an)s 3(y)k 2819(child)s 3371(g)s 1(alle)k 3(ys)k 4111(connected)s 5156(to)s 5411(it)s 5619(by)s 240 fnt83 5929 10148(UN)m 6(A)k 8(TT)k 12(A)k 7(CHED)k 240 fnt82 7510 10146(inde)m 3(x)k 3(es)k 8302(must)s 8844(be)s 0 9858(resumed,)m 918(since)s 1466(these)s 2014(g)s 1(alle)k 3(ys)k 2739(may)s 3206(be)s 3490(able)s 3945(to)s 4185(\207nd)s 4617(a)s 4784(tar)s 4(get)k 5384(no)s 6(w)k 15(.)k 5942(A)s 6173(good)s 6712(e)s 3(xample)k 7576(of)s 7848(this)s 8246(situation)s 0 9570(occurs)m 664(when)s 1228(a)s 1382(line)s 1785(of)s 2044(body)s 2566(te)s 3(xt)k 2969(with)s 3440(one)s 3830(or)s 4077(more)s 4613(footnotes)s 5542(is)s 5740(promoted)s 6703(onto)s 7171(a)s 7325(page.)s 7929(Basser)s 8614(Lout)s 0 9282(gi)m 6(v)k 3(es)k 547(priority)s 1317(to)s 1556(such)s 2052(children,)s 2942(suspending)s 240 fnt83 4073 9284(G)m 240 fnt82 4306 9282(while)m 4893(each)s 5388(is)s 5598(gi)s 6(v)k 3(en)k 6178(a)s 6344(chance)s 7064(to)s 7303(\210ush.)s 480 8908(Basser)m 1211(Lout)s 1758(searches)s 2653(for)s 3025(the)s 3408(\207rst)s 3874(tar)s 4(get)k 4507(of)s 240 fnt83 4813 8910(G)m 240 fnt82 5081 8908(only)m 5595(in)s 5873(re)s 3(gions)k 6660(of)s 6965(the)s 7348(dynamic)s 8260(tree)s 8708(that)s 0 8620(will)m 437(clearly)s 1152(precede)s 1963(or)s 2233(follo)s 6(w)k 240 fnt83 2917 8622(G)m 240 fnt82 3090 8620(')m 13(s)k 3312(in)s 9(v)k 4(ocation)k 4378(point)s 4941(in)s 5196(the)s 5556(\207nal)s 6047(printed)s 6794(document,)s 7857(whiche)s 6(v)k 3(er)k 8916(is)s 0 8332(speci\207ed)m 904(in)s 1142(the)s 220 fnt35 1486 8329(into)m 240 fnt82 1887 8332(clause;)m 2591(subsequent)s 3711(tar)s 4(gets)k 4389(are)s 4731(sought)s 5426(later)s 5904(in)s 6142(the)s 6486(same)s 7028(g)s 1(alle)k 3(y)k 7657(as)s 7903(the)s 8246(\207rst.)s 8776(An)s 0 8044(e)m 3(xception)k 982(to)s 1219(this)s 1613(rule,)s 2089(whose)s 2755(necessity)s 3683(will)s 4107(be)s 4387(made)s 4959(clear)s 5480(later)s 9(,)k 5999(is)s 6207(that)s 6623(a)s 6787(\207rst)s 220 fnt35 7216 8041(f)m 6(ollo)k 3(wing)k 240 fnt82 8104 8044(tar)m 4(get)k 8700(will)s 0 7756(be)m 282(sought)s 981(within)s 1649(a)s 1815(dynamic)s 2692(sibling)s 3396(g)s 1(alle)k 3(y)k 4030(preceding)s 240 fnt83 5026 7758(G)m 240 fnt82 5199 7756(')m 13(s)k 5409(in)s 9(v)k 4(ocation)k 6463(point:)s gsave 480 2770 translate 200 fnt82 5379 4646 0 4646 200 288 50 LoutGraphic gsave grestore save gsave 200 dict begin lfigdict begin grestore 200 fnt83 0 4510(dynamic)m 722(par)s 7(ent)k gsave 0 1353 translate 200 fnt82 2039 3003 226 2777 200 288 50 LoutGraphic gsave 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigbox ] lfigdopath pop pop grestore 1587 171 0 86 200 288 50 226 2323 LoutGr2 currentdict end 200 dict begin begin grestore 796 171 0 86 200 288 50 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfignoline [ lfigbox ] lfigdopath pop pop grestore 180 fnt35 0 40(@XT)m 21(arget)k grestore (A) lfigpromotelabels grestore 1587 136 0 47 200 288 50 226 1620 LoutGr2 currentdict end 200 dict begin begin grestore 1254 136 0 47 200 288 50 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfignoline [ lfigbox ] lfigdopath pop pop grestore 200 fnt83 0 3(UN)m 5(A)k 7(TT)k 10(A)k 6(CHED)k grestore (C) lfigpromotelabels grestore 180 fnt35 226 752(@XT)m 21(arget)k grestore gsave 2889 4135 translate 200 fnt82 2490 171 0 86 200 288 50 LoutGraphic gsave currentdict end 200 dict begin begin grestore 2450 171 0 86 200 288 50 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfignoline [ lfigbox ] lfigdopath pop pop grestore 180 fnt35 0 40(X into { @XT)m 21(arget&&f)k 5(ollo)k 2(wing })k grestore (B) lfigpromotelabels grestore gsave 2889 2720 translate 200 fnt82 2039 1302 226 1076 200 288 50 LoutGraphic gsave 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigbox ] lfigdopath pop pop grestore 180 fnt35 226 492(@GT)m 21(arget)k grestore gsave 2889 1982 translate 200 fnt82 2490 171 0 86 200 288 50 LoutGraphic gsave currentdict end 200 dict begin begin grestore 2490 171 0 86 200 288 50 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfignoline [ lfigbox ] lfigdopath pop pop grestore 180 fnt35 0 40(G into { @GT)m 21(arget&&f)k 5(ollo)k 2(wing })k grestore (D) lfigpromotelabels grestore gsave 2889 0 translate 200 fnt82 2039 1869 226 1643 200 288 50 LoutGraphic gsave 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigbox ] lfigdopath pop pop grestore grestore gsave 0 0 translate 200 fnt82 0 0 0 0 200 288 50 LoutGraphic gsave 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ A@E 0.2 cm 0 lfigpadd lfigprevious /FROM lfigpointdef 0.2 cm 0 B@W lfigpsub lfigprevious /TO lfigpointdef ] lfigdopath 0.15 cm /lfigsolid /lfigblack lfigopen 0.15 cm 0.05 cm lfigforward grestore grestore gsave 0 0 translate 200 fnt82 0 0 0 0 200 288 50 LoutGraphic gsave 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ C@E 0.2 cm 0 lfigpadd lfigprevious /FROM lfigpointdef 0.2 cm 0 D@W lfigpsub lfigprevious /TO lfigpointdef ] lfigdopath 0.15 cm /lfigsolid /lfigblack lfigopen 0.15 cm 0.05 cm lfigforward grestore grestore end end restore grestore 0 2319(Here)m 240 fnt83 524 2321(G)m 240 fnt82 762 2319(will)m 1193(\207nd)s 1629(the)s 220 fnt35 1982 2316(@GT)m 26(arget)k 240 fnt82 3045 2319(tar)m 4(get)k 3649(within)s 240 fnt83 4322 2321(X)m 240 fnt82 4478 2319(.)m 4647(This)s 5128(is)s 5343(dangerous,)s 6439(since)s 6991(if)s 7213(the)s 7566(\207rst)s 8002(component)s 0 2031(of)m 240 fnt83 303 2033(G)m 240 fnt82 568 2031(is)m 811(then)s 1312(promoted)s 2320(via)s 240 fnt83 2704 2033(X)m 240 fnt82 2952 2031(into)m 3410(the)s 3790(\207rst)s 220 fnt35 4254 2028(@XT)m 26(arget)k 240 fnt82 5319 2031(rather)m 5967(than)s 6469(into)s 6926(the)s 7307(second,)s 240 fnt83 8111 2033(G)m 240 fnt82 8284 2031(')m 13(s)k 8527(tar)s 4(get)k 0 1743(will)m 438(not)s 817(appear)s 1526(later)s 2022(in)s 2277(the)s 2638(\207nal)s 3130(printed)s 3878(document)s 4894(than)s 5376(its)s 5664(in)s 9(v)k 4(ocation)k 6731(point,)s 7342(as)s 7605(required)s 8471(by)s 8778(the)s 220 fnt35 0 1452(into)m 240 fnt82 406 1455(clause.)m 480 1081(Accordingly)m 15(,)k 1753(when)s 2313(such)s 2794(a)s 2944(tar)s 4(get)k 3528(is)s 3722(chosen,)s 4478(tw)s 2(o)k 4873(special)s 5575(g)s 1(alle)k 3(y)k 6194(inde)s 3(x)k 3(es)k 6954(are)s 7286(inserted)s 8084(and)s 8472(link)s 2(ed)k 0 793(together:)m 898(a)s 240 fnt83 1074 795(PRECEDES)m 240 fnt82 2327 793(inde)m 3(x)k 2921(at)s 240 fnt83 3163 795(G)m 240 fnt82 3336 793(')m 13(s)k 3555(in)s 9(v)k 4(ocation)k 4619(point,)s 5227(and)s 5641(a)s 240 fnt83 5817 795(FOLLO)m 12(WS)k 240 fnt82 6952 793(inde)m 3(x)k 7546(at)s 7787(the)s 8145(\207rst)s 8586(com)s 8998(-)s 0 505(ponent)m 720(of)s 240 fnt83 1000 507(G)m 240 fnt82 1173 505(.)m 1346(The)s 1783(algorithm)s 2781(checks)s 3492(before)s 4167(promoting)s 5226(an)s 3(y)k 240 fnt83 5632 507(FOLLO)m 12(WS)k 240 fnt82 6767 505(inde)m 3(x)k 7360(that)s 7787(its)s 8072(promotion)s grestore grestore grestore pgsave restore showpage %%Page: 28 29 %%BeginPageSetup %%PageResources: font Times-Roman %%+ font Times-Italic %%+ font Helvetica %%+ font Symbol /pgsave save def %%IncludeResource: font Helvetica /Helveticafnt35 vec2 /Helvetica LoutRecode /fnt35 { /Helveticafnt35 LoutFont } def %%IncludeResource: font Symbol /fnt78 { /Symbol LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave 0 0 translate 240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate 9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 0 LoutMargSet grestore 4291 13844(-)m 4419(28)s 4706(-)s 0 13253(w)m 2(ould)k 661(not)s 1033(place)s 1600(it)s 1798(earlier)s 2472(than)s 2948(the)s 3302(corresponding)s 240 fnt83 4730 13255(PRECEDES)m 240 fnt82 5981 13253(inde)m 3(x)k 6571(in)s 6820(the)s 7175(same)s 7728(g)s 1(alle)k 3(y)k 15(,)k 8406(and)s 8817(re)s 8998(-)s 0 12965(jects)m 486(the)s 831(component)s 1952(if)s 2166(it)s 2355(w)s 2(ould.)k 3113(Since)s 240 fnt83 3697 12967(PRECEDES)m 240 fnt82 4939 12965(and)m 240 fnt83 5340 12967(FOLLO)m 12(WS)k 240 fnt82 6463 12965(inde)m 3(x)k 3(es)k 7236(are)s 7580(rarely)s 8187(used,)s 8730(this)s 0 12677(check)m 619(can)s 1008(be)s 1290(implemented)s 2596(by)s 2890(linear)s 3493(search.)s 480 12303(When)m 1114(tw)s 2(o)k 1529(components)s 2742(are)s 3094(separated)s 4060(by)s 220 fnt35 4359 12300(/)m 240 fnt82 4423 12303(,)m 4535(as)s 4790(opposed)s 5652(to)s 5897(the)s 6250(more)s 6802(usual)s 220 fnt35 7367 12300(//)m 240 fnt82 7492 12303(,)m 7604(each)s 8105(in\210uences)s 0 12015(the)m 358(horizontal)s 1393(position)s 2232(of)s 2514(the)s 2872(other)s 13(.)k 3525(Because)s 4389(of)s 4671(this,)s 5133(the)s 240 fnt83 5492 12017(SUSPEND)m 240 fnt82 6596 12015(action)m 7248(is)s 7468(in)s 7722(f)s 2(act)k 8148(tak)s 2(en)k 8732(if)s 8960(a)s 0 11727(recepti)m 6(v)k 3(e)k 930(symbol)s 1698(occurs)s 2382(in)s 2633(an)s 3(y)k 3039(component)s 4171(separated)s 5140(from)s 5672(the)s 6028(\207rst)s 6468(by)s 220 fnt35 6770 11724(/)m 240 fnt82 6903 11727(operators)m 7851(only)s 15(.)k 8435(Ag)s 1(ain,)k 0 11439(linear)m 603(search)s 1270(forw)s 2(ards)k 2168(to)s 2407(the)s 2755(\207rst)s 220 fnt35 3186 11436(//)m 240 fnt82 3371 11439(suf\207ces)m 4152(for)s 4490(this)s 4886(check.)s 480 11065(A)m 740(good)s 1308(illustration)s 2430(of)s 2731(these)s 3308(unusual)s 4139(cases)s 4724(is)s 4964(af)s 6(forded)k 5856(by)s 6180(the)s 220 fnt35 6558 11062(@Align)m 240 fnt82 7344 11065(symbols)m 8223(from)s 8778(the)s 0 10777(standard)m 867(DocumentLayout)s 2600(package.)s 3546(These)s 4171(are)s 4516(used)s 5012(to)s 5249(produce)s 6074(displayed)s 7047(equations,)s 8069(aligned)s 8829(on)s 0 10489(their)m 497(equals)s 1159(signs)s 1702(despite)s 2435(being)s 3020(separated)s 3980(by)s 4274(arbitrary)s 5149(body)s 5683(te)s 3(xt.)k 480 10115(The)m 220 fnt35 921 10112(@Align)m 240 fnt82 1689 10115(symbols)m 2551(are)s 2911(packaged)s 3886(neatly)s 4537(for)s 4889(the)s 5250(con)s 9(v)k 3(enience)k 6503(of)s 6787(the)s 7148(non-e)s 3(xpert)k 8254(user)s 9(,)k 8764(b)s 4(ut)k 0 9827(we)m 335(will)s 761(sho)s 6(w)k 1315(just)s 1720(the)s 2067(essence)s 2853(of)s 3124(the)s 3472(implementation)s 5029(here.)s 5603(First,)s 6147(an)s 220 fnt35 6430 9824(@AlignList)m 240 fnt82 7536 9827(g)m 1(alle)k 3(y)k 8170(is)s 8379(created)s 0 9539(which)m 642(contains)s 1490(an)s 1773(in\207nite)s 2506(supply)s 3199(of)s 220 fnt35 3470 9536(@AlignPlace)m 240 fnt82 4779 9539(recepti)m 6(v)k 3(e)k 5701(symbols)s 6550(separated)s 7510(by)s 220 fnt35 7804 9536(/)m 240 fnt82 7928 9539(operators:)m 4777 3207 0 3207 240 288 60 480 5992 LoutGr2 grestore save gsave 200 dict begin lfigdict begin grestore 240 fnt83 0 3044(body)m 522(te)s 4(xt)k 926(galle)s 7(y)k gsave 0 161 translate 240 fnt82 2039 2720 226 2494 240 288 60 LoutGraphic gsave 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigbox ] lfigdopath pop pop grestore 1587 1418 0 1314 240 288 60 226 226 LoutGr2 currentdict end 200 dict begin begin grestore 838 208 0 104 240 288 60 0 1210 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfignoline [ lfigbox ] lfigdopath pop pop grestore 220 fnt35 0 47(@Galle)m 4(y)k grestore (A) lfigpromotelabels grestore grestore gsave 2889 1638 translate 240 fnt82 1888 209 0 105 240 288 60 LoutGraphic gsave currentdict end 200 dict begin begin grestore 1046 209 0 105 240 288 60 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfignoline [ lfigbox ] lfigdopath pop pop grestore 220 fnt35 0 48(@AlignList)m grestore (B) lfigpromotelabels grestore gsave 2889 0 translate 240 fnt82 1888 1525 226 1195 240 288 60 LoutGraphic gsave 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigbox ] lfigdopath pop pop grestore 220 fnt35 226 1138(@AlignPlace)m 226 850(@AlignPlace)m 226 562(...)m 226 274(@EndAlignList)m grestore gsave 0 0 translate 240 fnt82 0 0 0 0 240 288 60 LoutGraphic gsave 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ A@E 0.2 cm 0 lfigpadd lfigprevious /FROM lfigpointdef 0.2 cm 0 B@W lfigpsub lfigprevious /TO lfigpointdef ] lfigdopath 0.15 cm /lfigsolid /lfigblack lfigopen 0.15 cm 0.05 cm lfigforward grestore grestore end end restore grestore 0 5541(Then)m 549(equations)s 1517(lik)s 2(e)k 1471 214 393 105 240 288 60 480 4987 LoutGr2 grestore save gsave 200 dict begin lfigdict begin grestore 1471 214 393 105 240 288 60 0 0 LoutGr2 /lfiglightgrey [ lfigbox ] gsave lfigpaintpath grestore 0.015 cm setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigbox ] lfigdopath pop pop grestore 1471 214 393 105 240 288 60 0 0 LoutGr2 0.015 cm setlinewidth lfiground setlinecap 0.15 cm /lfigdashed [ -0.3 cm ymark xsize ymark 0.3 cm 0 lfigpadd [] xmark -0.3 cm xmark ysize 0 0.3 cm lfigpadd ] lfigdopath pop pop grestore 240 fnt83 0 53(f)m 240 fnt78 113 45(\()m 240 fnt83 197 53(x)m 240 fnt78 315 45(\))m 477(=)s 240 fnt83 690 53(g)m 240 fnt78 816 45(\()m 240 fnt83 900 53(x)m 240 fnt78 1018 45(\))m 1156(+)s 1357(2)s grestore grestore end end restore grestore 0 4536(are)m 358(created)s 1117(and)s 1532(sent)s 1989(to)s 220 fnt35 2239 4533(@AlignPlace&&f)m 6(ollo)k 3(wing)k 240 fnt82 4690 4536(tar)m 4(gets.)k 5498(The)s 3(y)k 6052(collect)s 6760(in)s 7014(the)s 220 fnt35 7374 4533(@AlignList)m 240 fnt82 8492 4536(g)m 1(alle)k 3(y)k 0 4248(and)m 404(are)s 751(aligned)s 1513(there:)s 5836 3212 0 3212 240 288 60 480 696 LoutGr2 grestore save gsave 200 dict begin lfigdict begin grestore 240 fnt83 0 3049(body)m 522(te)s 4(xt)k 926(galle)s 7(y)k gsave 0 166 translate 240 fnt82 2039 2720 226 2494 240 288 60 LoutGraphic gsave 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigbox ] lfigdopath pop pop grestore 1587 1418 0 1314 240 288 60 226 226 LoutGr2 currentdict end 200 dict begin begin grestore 838 208 0 104 240 288 60 0 1210 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfignoline [ lfigbox ] lfigdopath pop pop grestore 220 fnt35 0 47(@Galle)m 4(y)k grestore (A) lfigpromotelabels grestore grestore gsave 2889 1643 translate 240 fnt82 2947 209 0 105 240 288 60 LoutGraphic gsave currentdict end 200 dict begin begin grestore 1046 209 0 105 240 288 60 0 0 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfignoline [ lfigbox ] lfigdopath pop pop grestore 220 fnt35 0 48(@AlignList)m grestore (B) lfigpromotelabels grestore gsave 2889 0 translate 240 fnt82 2947 1530 1285 1195 240 288 60 LoutGraphic gsave 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ lfigbox ] lfigdopath pop pop grestore 2495 1078 1059 969 240 288 60 226 226 LoutGr2 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigdashed [ xmark ysize lfigprevious /FROM lfigpointdef xmark 0 lfigprevious /TO lfigpointdef ] lfigdopath pop pop grestore 240 fnt83 666 917(f)m 240 fnt78 779 909(\()m 240 fnt83 863 917(x)m 240 fnt78 981 909(\))m 1143(=)s 240 fnt83 1356 917(g)m 240 fnt78 1482 909(\()m 240 fnt83 1566 917(x)m 240 fnt78 1684 909(\))m 1822(+)s 2023(2)s 240 fnt83 0 629(f)m 240 fnt78 113 621(\()m 240 fnt83 197 629(x)m 240 fnt78 315 621(\))m 453(-)s 240 fnt83 653 629(g)m 240 fnt78 779 621(\()m 240 fnt83 863 629(x)m 240 fnt78 981 621(\))m 1143(=)s 1356(2)s 220 fnt35 1059 336(...)m 1059 48(@EndAlignList)m grestore grestore gsave 0 0 translate 240 fnt82 0 0 0 0 240 288 60 LoutGraphic gsave 0.5 pt setlinewidth lfiground setlinecap 0.15 cm /lfigsolid [ A@E 0.2 cm 0 lfigpadd lfigprevious /FROM lfigpointdef 0.2 cm 0 B@W lfigpsub lfigprevious /TO lfigpointdef ] lfigdopath 0.15 cm /lfigsolid /lfigblack lfigopen 0.15 cm 0.05 cm lfigforward grestore grestore end end restore grestore grestore grestore grestore pgsave restore showpage %%Page: 29 30 %%BeginPageSetup %%PageResources: font Times-Roman %%+ font Helvetica %%+ font Times-Italic %%+ font Times-Bold %%+ font Symbol /pgsave save def %%IncludeResource: font Helvetica /Helveticafnt35 vec2 /Helvetica LoutRecode /fnt35 { /Helveticafnt35 LoutFont } def %%IncludeResource: font Symbol /fnt78 { /Symbol LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave 0 0 translate 240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate 9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 1 LoutMargSet grestore 4289 13844(-)m 4417(29)s 4708(-)s 0 13251(The)m 220 fnt35 450 13248(@AlignList)m 240 fnt82 1579 13251(g)m 1(alle)k 3(y)k 2236(does)s 2749(not)s 3138(\210ush,)s 3734(because)s 4570(its)s 4868(\207rst)s 5322(component)s 6469(is)s 6702(connected)s 7753(to)s 8015(a)s 8204(recepti)s 6(v)k 3(e)k 0 12963(symbol)m 760(by)s 220 fnt35 1054 12960(/)m 240 fnt82 1178 12963(operators.)m 480 12589(After)m 1048(the)s 1402(last)s 1799(equation,)s 2736(an)s 3025(empty)s 3683(forcing)s 4432(g)s 1(alle)k 3(y)k 5072(is)s 5288(sent)s 5739(to)s 220 fnt35 5984 12586(@EndAlignList)m 240 fnt82 7420 12589(,)m 7533(deleting)s 8362(the)s 8716(tw)s 2(o)k 0 12301(remaining)m 1028(recepti)s 6(v)k 3(e)k 1957(symbols)s 2813(from)s 3344(the)s 220 fnt35 3699 12298(@AlignList)m 240 fnt82 4812 12301(g)m 1(alle)k 3(y)k 5452(and)s 5863(permitting)s 6918(it)s 7117(to)s 7363(\210ush.)s 240 fnt83 8000 12303(FOLLO)m 12(WS)k 240 fnt82 0 12013(inde)m 3(x)k 3(es)k 797(ensure)s 1499(that)s 1939(each)s 2456(equation)s 3359(\207nds)s 3898(a)s 4086(tar)s 4(get)k 4707(placed)s 5410(in)s 5675(the)s 6045(body)s 6601(te)s 3(xt)k 7038(just)s 7465(after)s 7983(its)s 8281(point)s 8855(of)s 0 11725(in)m 9(v)k 4(ocation,)k 1090(so)s 1341(the)s 1675(equations)s 2628(return,)s 3290(aligned,)s 4087(to)s 4311(approximately)s 5732(the)s 6065(points)s 6686(where)s 7312(the)s 3(y)k 7760(were)s 8265(in)s 9(v)k 4(ok)k 2(ed.)k 0 11437(Notice)m 703(that)s 1131(the)s 1489(\210ushing)s 2324(of)s 2605(body)s 3149(te)s 3(xt)k 3574(is)s 3794(suspended)s 4860(until)s 5363(the)s 5721(list)s 6082(of)s 6363(equations)s 7341(is)s 7561(completed,)s 8674(as)s 8934(it)s 0 11149(must)m 513(be,)s 833(since)s 1367(the)s 1702(horizontal)s 2713(position)s 3528(of)s 3786(the)s 4121(\207rst)s 4539(equation)s 5407(cannot)s 6092(be)s 6361(kno)s 6(wn)k 7052(until)s 7532(the)s 7867(last)s 8245(equation)s 0 10861(is)m 210(added)s 840(to)s 1079(the)s 1427(list.)s 480 10487(Layout)m 1262(quality)s 2025(can)s 2459(occasionally)s 3753(be)s 4080(impro)s 3(v)k 3(ed)k 5094(by)s 5433(rejecting)s 6366(a)s 6577(component)s 7746(that)s 8209(could)s 8844(be)s 0 10199(promoted)m 978(\211)s 1161(for)s 1502(e)s 3(xample,)k 2419(a)s 2588(component)s 3715(of)s 3989(body)s 4526(te)s 3(xt)k 4944(that)s 5365(carries)s 6054(a)s 6223(footnote)s 7079(too)s 7441(lar)s 4(ge)k 7973(to)s 8215(\207t)s 8477(on)s 8778(the)s 0 9911(current)m 747(page.)s 1374(Since)s 1972(Lout)s 2496(does)s 2997(not)s 3374(specify)s 4130(ho)s 6(w)k 4602(breaking)s 5503(decisions)s 6455(are)s 6814(made,)s 7450(be)s 3(yond)k 8222(the)s 8582(basic)s 0 9623(constraints)m 1089(imposed)s 1961(by)s 2258(a)s 4(v)k 6(ailable)k 3169(space)s 3759(and)s 220 fnt35 4166 9620(into)m 240 fnt82 4575 9623(clauses,)m 5375(in)s 5621(principle)s 6529(such)s 7028(high)s 7514(quality)s 8236(breaking)s 0 9335(could)m 592(be)s 877(added)s 1510(to)s 1752(the)s 2102(implementation)s 3662(with)s 4147(no)s 4443(change)s 5180(to)s 5421(the)s 5772(language.)s 6803(Ho)s 6(we)k 6(v)k 3(er)k 9(,)k 7766(the)s 8117(generality)s 0 9047(of)m 280(the)s 637(g)s 1(alle)k 3(y)k 1280(\210ushing)s 2115(algorithm,)s 3160(and)s 3573(its)s 3859(already)s 4625(considerable)s 5898(comple)s 3(xity)k 15(,)k 7073(mak)s 2(e)k 7654(this)s 8059(a)s 8235(daunting)s 0 8759(problem)m 890(in)s 1167(practice,)s 2062(although)s 2991(a)s 3190(f)s 2(ascinating)k 4323(one.)s 4866(T)s 5008 8711(E)m 5151 8759(X)m 5414([9],)s 5832(with)s 6348(its)s 6657(unnested)s 7600(set)s 7958(of)s 8263(`\210oating)s 0 8471(insertions')m 1041(clearly)s 1744(identi\207able)s 2875(as)s 3125(each)s 3620(page)s 4128(is)s 4338(be)s 3(gun,)k 5028(has)s 5398(the)s 5746(adv)s 6(antage)k 6766(in)s 7009(this)s 7405(respect.)s 240 fnt84 0 7822(5.3.)m 471(Size)s 938(constraints)s 2120(and)s 2561(size)s 2988(adjustments)s 240 fnt82 480 7346(The)m 893(g)s 1(alle)k 3(y)k 1512(\210ushing)s 2321(algorithm)s 3295(needs)s 3876(to)s 4099(kno)s 6(w)k 4665(the)s 4998(a)s 4(v)k 6(ailable)k 5890(width)s 6477(and)s 6866(height)s 7508(at)s 7725(each)s 8204(recepti)s 6(v)k 3(e)k 0 7058(symbol.)m 869(These)s 1496(symbols)s 2346(may)s 2812(lie)s 3106(within)s 3775(arbitrarily)s 4782(comple)s 3(x)k 5659(objects,)s 6443(and)s 6847(the)s 3(y)k 7311(may)s 7777(compete)s 8644(with)s 0 6770(each)m 492(other)s 1040(for)s 1375(a)s 4(v)k 6(ailable)k 2280(space)s 2864(\(as)s 3189(body)s 3720(te)s 3(xt)k 4132(and)s 4533(footnote)s 5383(tar)s 4(gets)k 6062(do\),)s 6485(so)s 6748(this)s 7141(information)s 8323(must)s 8844(be)s 0 6482(e)m 3(xtracted)k 930(from)s 1454(the)s 1802(tree)s 2215(structure)s 3106(when)s 3682(required.)s 480 6108(F)m 3(or)k 869(e)s 3(xample,)k 1783(consider)s 2653(the)s 3001(object)s 220 fnt35 480 5607(5i @Wide { a / b })m 240 fnt82 0 5113(and)m 406(suppose)s 1236(that)s 1656(the)s 2006(width)s 2610(of)s 220 fnt35 2883 5110(a)m 240 fnt82 3062 5113(is)m 240 fnt78 3274 5107(1)m 240 fnt83 3382 5115(i)m 240 fnt78 3459 5107(,)m 3572(2)s 240 fnt83 3700 5115(i)m 240 fnt82 3825 5113(\()m 240 fnt78 3898 5107(1)m 240 fnt83 4006 5115(i)m 240 fnt82 4131 5113(to)m 4372(the)s 4722(left)s 5101(of)s 5374(the)s 5724(mark,)s 240 fnt78 6324 5107(2)m 240 fnt83 6452 5115(i)m 240 fnt82 6577 5113(to)m 6818(the)s 7168(right\).)s 7864(What)s 8444(then)s 8916(is)s 0 4825(the)m 348(a)s 4(v)k 6(ailable)k 1256(width)s 1858(at)s 220 fnt35 2090 4822(b)m 240 fnt82 2204 4825(?)m 2423(If)s 2653(we)s 2988(let)s 3286(the)s 3634(width)s 4236(of)s 220 fnt35 4507 4822(b)m 240 fnt82 4681 4825(be)m 240 fnt83 4963 4827(l)m 240 fnt78 5041 4819(,)m 240 fnt83 5148 4827(r)m 240 fnt82 5246 4825(,)m 5353(we)s 5688(must)s 6213(ha)s 4(v)k 3(e)k 240 fnt78 480 4277(\()m 564(1)s 240 fnt83 670 4285(i)m 240 fnt78 817 4277(\255)m 240 fnt83 1038 4285(l)m 240 fnt78 1116 4277(\))m 1254(+)s 1455(\()s 1539(2)s 240 fnt83 1665 4285(i)m 240 fnt78 1812 4277(\255)m 240 fnt83 2033 4285(r)m 240 fnt78 2143 4277(\))m 2293(\243)s 2503(5)s 240 fnt83 2622 4285(i)m 240 fnt82 0 3732(with)m 482(the)s 240 fnt78 842 3726(\255)m 240 fnt82 1051 3732(\(i.e.)m 1466(max\))s 2006(operations)s 3053(arising)s 3756(from)s 4280(mark)s 4832(alignment.)s 5952(Eliminating)s 7133(them)s 7671(gi)s 6(v)k 3(es)k 240 fnt78 480 3180(1)m 240 fnt83 586 3188(i)m 240 fnt78 721 3180(+)m 922(2)s 240 fnt83 1048 3188(i)m 240 fnt78 1207 3180(\243)m 1417(5)s 240 fnt83 1536 3188(i)m 583 2893(l)m 240 fnt78 721 2885(+)m 922(2)s 240 fnt83 1048 2893(i)m 240 fnt78 1207 2885(\243)m 1417(5)s 240 fnt83 1536 2893(i)m 240 fnt78 571 2597(1)m 240 fnt83 677 2605(i)m 240 fnt78 812 2597(+)m 240 fnt83 1013 2605(r)m 240 fnt78 1207 2597(\243)m 1417(5)s 240 fnt83 1536 2605(i)m 674 2310(l)m 240 fnt78 812 2302(+)m 240 fnt83 1013 2310(r)m 240 fnt78 1207 2302(\243)m 1417(5)s 240 fnt83 1536 2310(i)m 240 fnt82 0 1799(and)m 428(since)s 1000(we)s 1359(assume)s 2144(that)s 220 fnt35 2587 1796(a)m 240 fnt82 2788 1799(\207ts)m 3156(into)s 3606(the)s 3978(a)s 4(v)k 6(ailable)k 4911(space,)s 5573(the)s 5946(\207rst)s 6402(inequality)s 7436(may)s 7927(be)s 8234(dropped,)s 0 1511(lea)m 4(ving)k grestore grestore grestore pgsave restore showpage %%Page: 30 31 %%BeginPageSetup %%PageResources: font Times-Roman %%+ font Times-Italic %%+ font Symbol %%+ font Helvetica /pgsave save def %%IncludeResource: font Symbol /fnt78 { /Symbol LoutFont } def %%IncludeResource: font Helvetica /Helveticafnt35 vec2 /Helvetica LoutRecode /fnt35 { /Helveticafnt35 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave 0 0 translate 240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate 9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 0 LoutMargSet grestore 4287 13844(-)m 4415(30)s 4710(-)s 240 fnt83 851 13205(l)m 240 fnt78 1013 13197(\243)m 1223(3)s 240 fnt83 1340 13205(i)m 480 12910(l)m 240 fnt78 618 12902(+)m 240 fnt83 819 12910(r)m 240 fnt78 1013 12902(\243)m 1223(5)s 240 fnt83 1342 12910(i)m 819 12622(r)m 240 fnt78 1013 12614(\243)m 1223(4)s 240 fnt83 1348 12622(i)m 240 fnt82 0 12113(Object)m 220 fnt35 697 12110(b)m 240 fnt82 871 12113(may)m 1337(ha)s 4(v)k 3(e)k 1838(width)s 240 fnt83 2440 12115(l)m 240 fnt78 2518 12107(,)m 240 fnt83 2625 12115(r)m 240 fnt82 2783 12113(for)m 3121(an)s 3(y)k 240 fnt83 3518 12115(l)m 240 fnt82 3644 12113(and)m 240 fnt83 4048 12115(r)m 240 fnt82 4206 12113(satisfying)m 5188(these)s 5735(inequalities,)s 6943(and)s 7347(no)s 7640(others.)s 480 11739(Here)m 1000(is)s 1210(another)s 1987(e)s 3(xample:)k 220 fnt35 480 11238(5i @High { a /2ix b })m 240 fnt82 0 10737(Assuming)m 1024(that)s 220 fnt35 1442 10734(a)m 240 fnt82 1619 10737(has)m 1989(height)s 240 fnt78 2647 10731(1)m 240 fnt83 2753 10739(i)m 240 fnt78 2828 10731(,)m 2935(1)s 240 fnt83 3041 10739(i)m 240 fnt82 3104 10737(,)m 3211(the)s 3559(height)s 240 fnt83 4217 10739(l)m 240 fnt78 4295 10731(,)m 240 fnt83 4402 10739(r)m 240 fnt82 4560 10737(of)m 220 fnt35 4831 10734(b)m 240 fnt82 5005 10737(must)m 5530(satisfy)s 240 fnt78 480 10179(1)m 240 fnt83 586 10187(i)m 240 fnt78 721 10179(+)m 922(\()s 1006(\()s 1090(1)s 240 fnt83 1196 10187(i)m 240 fnt78 1331 10179(+)m 240 fnt83 1532 10187(l)m 240 fnt78 1610 10179(\))m 1760(\255)s 1981(2)s 240 fnt83 2107 10187(i)m 240 fnt78 2182 10179(\))m 2320(+)s 240 fnt83 2521 10187(r)m 240 fnt78 2703 10179(\243)m 2913(5)s 240 fnt83 3032 10187(i)m 240 fnt82 0 9634(This)m 478(time)s 960(the)s 240 fnt78 1325 9628(\255)m 240 fnt82 1539 9634(operation)m 2501(arises)s 3098(from)s 3624(the)s 3975(mark-to-mark)s 5364(g)s 1(ap)k 5765(mode,)s 6406(which)s 7050(will)s 7479(widen)s 8123(the)s 240 fnt78 8474 9628(2)m 240 fnt83 8602 9636(i)m 240 fnt82 8728 9634(g)m 1(ap)k 0 9346(if)m 217(necessary)s 1200(to)s 1439(pre)s 6(v)k 3(ent)k 220 fnt35 2207 9343(a)m 240 fnt82 2384 9346(and)m 220 fnt35 2788 9343(b)m 240 fnt82 2962 9346(from)m 3486(o)s 3(v)k 3(erlapping.)k 4787(This)s 5263(inequality)s 6273(can)s 6662(be)s 6944(re)s 6(written)k 7856(as)s 240 fnt83 851 8795(l)m 240 fnt78 1013 8787(\243)m 288 fnt78 1223 8775(\245)m 240 fnt83 480 8504(l)m 240 fnt78 618 8496(+)m 240 fnt83 819 8504(r)m 240 fnt78 1013 8496(\243)m 1223(3)s 240 fnt83 1340 8504(i)m 819 8216(r)m 240 fnt78 1013 8208(\243)m 1223(2)s 240 fnt83 1349 8216(i)m 240 fnt82 0 7709(In)m 263(general,)s 1080(Lout)s 1599(is)s 1816(designed)s 2732(so)s 3005(that)s 3430(the)s 3785(a)s 4(v)k 6(ailable)k 4700(width)s 5309(or)s 5575(height)s 6240(at)s 6479(an)s 3(y)k 6883(point)s 7442(can)s 7838(be)s 8128(e)s 3(xpressed)k 0 7421(by)m 294(three)s 827(inequalities)s 1979(of)s 2250(the)s 2598(form)s 240 fnt83 851 6870(l)m 240 fnt78 1013 6862(\243)m 240 fnt83 1223 6870(x)m 480 6579(l)m 240 fnt78 618 6571(+)m 240 fnt83 819 6579(r)m 240 fnt78 1013 6571(\243)m 240 fnt83 1223 6579(y)m 819 6264(r)m 240 fnt78 1013 6256(\243)m 240 fnt83 1223 6264(z)m 240 fnt82 0 5743(where)m 240 fnt83 641 5745(x)m 240 fnt82 747 5743(,)m 240 fnt83 855 5745(y)m 240 fnt82 1018 5743(and)m 240 fnt83 1423 5745(z)m 240 fnt82 1575 5743(may)m 2042(be)s 288 fnt78 2325 5725(\245)m 240 fnt82 2523 5743(.)m 2688(W)s 19(e)k 3058(abbre)s 6(viate)k 4104(these)s 4652(three)s 5186(inequalities)s 6339(to)s 240 fnt83 6579 5745(l)m 240 fnt78 6658 5737(,)m 240 fnt83 6768 5745(r)m 240 fnt78 6953 5737(\243)m 240 fnt83 7166 5745(x)m 240 fnt78 7285 5737(,)m 240 fnt83 7395 5745(y)m 240 fnt78 7510 5737(,)m 240 fnt83 7620 5745(z)m 240 fnt82 7711 5743(,)m 7819(and)s 8224(we)s 8560(call)s 240 fnt83 8960 5745(x)m 240 fnt78 0 5449(,)m 240 fnt83 107 5457(y)m 240 fnt78 221 5449(,)m 240 fnt83 328 5457(z)m 240 fnt82 479 5455(a)m 240 fnt83 645 5457(size)m 1056(constr)s 3(aint)k 240 fnt82 2027 5455(.)m 480 5081(The)m 920(tw)s 2(o)k 1343(e)s 3(xamples)k 2307(abo)s 3(v)k 3(e)k 2942(sho)s 6(wed)k 3739(ho)s 6(w)k 4213(to)s 4465(propag)s 1(ate)k 5475(the)s 5836(size)s 6276(constraint)s 288 fnt78 7291 5063(\245)m 240 fnt78 7514 5075(,)m 7659(5)s 240 fnt83 7791 5083(i)m 240 fnt78 7879 5075(,)m 288 fnt78 8025 5063(\245)m 240 fnt82 8296 5081(for)m 220 fnt35 8647 5078(a / b)m 240 fnt82 0 4793(do)m 6(wn)k 586(one)s 991(le)s 6(v)k 3(el)k 1504(to)s 1746(the)s 2097(child)s 220 fnt35 2636 4790(b)m 240 fnt82 2750 4793(.)m 2917(Basser)s 3617(Lout)s 4132(contains)s 4982(a)s 5151(complete)s 6086(set)s 6414(of)s 6688(general)s 7449(rules)s 7967(for)s 8308(all)s 8604(node)s 0 4505(types,)m 627(too)s 1002(complicated)s 2244(to)s 2499(gi)s 6(v)k 3(e)k 2974(here.)s 3565(Instead,)s 4378(we)s 4729(gi)s 6(v)k 3(e)k 5203(just)s 5624(one)s 6042(e)s 3(xample)k 6921(of)s 7208(ho)s 6(w)k 7685(these)s 8248(rules)s 8779(are)s 0 4217(deri)m 6(v)k 3(ed,)k 815(using)s 1387(the)s 1735(object)s 240 fnt83 480 3721(x)m 168 fnt78 586 3628(1)m 220 fnt35 772 3716(/)m 240 fnt83 956 3721(x)m 168 fnt78 1062 3628(2)m 220 fnt35 1262 3716(/)m 240 fnt83 1446 3721(.)m 1552(.)s 1658(.)s 220 fnt35 1812 3716(/)m 240 fnt83 1996 3721(x)m 168 fnt83 2102 3634(n)m 240 fnt82 0 3175(where)m 240 fnt83 640 3177(x)m 168 fnt83 746 3090(j)m 240 fnt82 852 3175(has)m 1222(width)s 240 fnt83 1824 3177(l)m 168 fnt83 1890 3090(j)m 240 fnt78 1948 3169(,)m 240 fnt83 2055 3177(r)m 168 fnt83 2127 3090(j)m 240 fnt82 2233 3175(for)m 2571(all)s 240 fnt83 2864 3177(j)m 240 fnt82 2930 3175(.)m 480 2801(Suppose)m 1345(the)s 1689(whole)s 2326(object)s 2966(has)s 3333(width)s 3931(constraint)s 240 fnt83 4929 2803(X)m 240 fnt78 5097 2795(,)m 240 fnt83 5204 2803(Y)m 240 fnt78 5367 2795(,)m 240 fnt83 5474 2803(Z)m 240 fnt82 5619 2801(,)m 5722(and)s 6123(we)s 6454(require)s 7182(the)s 7526(width)s 8124(constraint)s 0 2513(of)m 240 fnt83 271 2515(x)m 168 fnt83 377 2428(i)m 240 fnt82 421 2513(.)m 586(Let)s 240 fnt83 965 2515(L)m 240 fnt78 1185 2507(=)m 240 fnt82 1401 2513(max)m 168 fnt83 1808 2428(j)m 240 fnt83 1917 2515(l)m 168 fnt83 1983 2428(j)m 240 fnt82 2090 2513(and)m 240 fnt83 2495 2515(R)m 240 fnt78 2723 2507(=)m 240 fnt82 2939 2513(max)m 168 fnt83 3346 2428(j)m 240 fnt83 3455 2515(r)m 168 fnt83 3527 2428(j)m 240 fnt82 3573 2513(,)m 3681(so)s 3948(that)s 240 fnt83 4367 2515(L)m 240 fnt78 4512 2507(,)m 240 fnt83 4619 2515(R)m 240 fnt82 4821 2513(is)m 5032(the)s 5381(width)s 5984(of)s 6256(the)s 6605(whole)s 7247(object.)s 7996(W)s 19(e)k 8366(assume)s 240 fnt83 0 2202(L)m 240 fnt78 145 2194(,)m 240 fnt83 252 2202(R)m 240 fnt78 477 2194(\243)m 240 fnt83 687 2202(X)m 240 fnt78 855 2194(,)m 240 fnt83 962 2202(Y)m 240 fnt78 1125 2194(,)m 240 fnt83 1232 2202(Z)m 240 fnt82 1377 2200(.)m 1541(Then)s 240 fnt83 2090 2202(x)m 168 fnt83 2196 2115(i)m 240 fnt82 2300 2200(can)m 2689(be)s 2971(enlar)s 4(ged)k 3848(to)s 4087(an)s 3(y)k 4484(size)s 240 fnt83 4911 2202(l)m 168 fnt83 4977 2115(i)m 240 fnt78 5081 2194(,)m 240 fnt83 5188 2202(r)m 168 fnt83 5260 2115(i)m 240 fnt82 5364 2200(satisfying)m 240 fnt78 480 1607(\()m 240 fnt83 564 1615(l)m 168 fnt83 630 1528(i)m 240 fnt78 758 1607(\255)m 240 fnt83 979 1615(L)m 240 fnt78 1124 1607(\))m 1202(,)s 1309(\()s 240 fnt83 1393 1615(r)m 168 fnt83 1465 1528(i)m 240 fnt78 1593 1607(\255)m 240 fnt83 1814 1615(R)m 240 fnt78 1967 1607(\))m 2117(\243)s 240 fnt83 2327 1615(X)m 240 fnt78 2495 1607(,)m 240 fnt83 2602 1615(Y)m 240 fnt78 2765 1607(,)m 240 fnt83 2872 1615(Z)m grestore grestore grestore pgsave restore showpage %%Page: 31 32 %%BeginPageSetup %%PageResources: font Times-Roman %%+ font Times-Italic %%+ font Symbol %%+ font Times-Bold %%+ font Helvetica /pgsave save def %%IncludeResource: font Symbol /fnt78 { /Symbol LoutFont } def %%IncludeResource: font Helvetica /Helveticafnt35 vec2 /Helvetica LoutRecode /fnt35 { /Helveticafnt35 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave 0 0 translate 240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate 9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 1 LoutMargSet grestore 4297 13844(-)m 4425(31)s 4700(-)s 0 13253(which)m 642(e)s 3(xpands)k 1475(to)s 1714(eight)s 2252(inequalities:)s 240 fnt83 917 12702(l)m 168 fnt83 983 12615(i)m 240 fnt78 1123 12694(\243)m 240 fnt83 1333 12702(X)m 894 12338(L)m 240 fnt78 1123 12330(\243)m 240 fnt83 1333 12338(X)m 528 12047(l)m 168 fnt83 594 11960(i)m 240 fnt78 710 12039(+)m 240 fnt83 911 12047(r)m 168 fnt83 983 11960(i)m 240 fnt78 1123 12039(\243)m 240 fnt83 1333 12047(Y)m 503 11675(l)m 168 fnt83 569 11588(i)m 240 fnt78 685 11667(+)m 240 fnt83 886 11675(R)m 240 fnt78 1123 11667(\243)m 240 fnt83 1333 11675(Y)m 505 11311(L)m 240 fnt78 710 11303(+)m 240 fnt83 911 11311(r)m 168 fnt83 983 11224(i)m 240 fnt78 1123 11303(\243)m 240 fnt83 1333 11311(Y)m 480 10947(L)m 240 fnt78 685 10939(+)m 240 fnt83 886 10947(R)m 240 fnt78 1123 10939(\243)m 240 fnt83 1333 10947(Y)m 911 10664(r)m 168 fnt83 983 10577(i)m 240 fnt78 1123 10656(\243)m 240 fnt83 1333 10664(Z)m 886 10300(R)m 240 fnt78 1123 10292(\243)m 240 fnt83 1333 10300(Z)m 240 fnt82 0 9793(Three)m 613(are)s 960(already)s 1717(kno)s 6(wn,)k 2471(and)s 2875(slightly)s 3646(rearranging)s 4800(the)s 5148(others)s 5783(gi)s 6(v)k 3(es)k 240 fnt83 869 9242(l)m 168 fnt83 935 9155(i)m 240 fnt78 1075 9234(\243)m 240 fnt83 1285 9242(X)m 869 8870(l)m 168 fnt83 935 8783(i)m 240 fnt78 1075 8862(\243)m 240 fnt83 1285 8870(Y)m 240 fnt78 1508 8862(-)m 240 fnt83 1708 8870(R)m 480 8498(l)m 168 fnt83 546 8411(i)m 240 fnt78 662 8490(+)m 240 fnt83 863 8498(r)m 168 fnt83 935 8411(i)m 240 fnt78 1075 8490(\243)m 240 fnt83 1285 8498(Y)m 863 8134(r)m 168 fnt83 935 8047(i)m 240 fnt78 1075 8126(\243)m 240 fnt83 1285 8134(Z)m 863 7770(r)m 168 fnt83 935 7683(i)m 240 fnt78 1075 7762(\243)m 240 fnt83 1285 7770(Y)m 240 fnt78 1508 7762(-)m 240 fnt83 1708 7770(L)m 240 fnt82 0 7182(Therefore)m 997(the)s 1345(width)s 1947(constraint)s 2949(of)s 240 fnt83 3220 7184(x)m 168 fnt83 3326 7097(i)m 240 fnt82 3430 7182(is)m 480 6644(min)m 240 fnt78 861 6638(\()m 240 fnt83 945 6646(X)m 240 fnt78 1113 6638(,)m 240 fnt83 1220 6646(Y)m 240 fnt78 1443 6638(-)m 240 fnt83 1643 6646(R)m 240 fnt78 1796 6638(\))m 1874(,)s 240 fnt83 1981 6646(Y)m 240 fnt78 2144 6638(,)m 240 fnt82 2251 6644(min)m 240 fnt78 2632 6638(\()m 240 fnt83 2716 6646(Z)m 240 fnt78 2873 6638(,)m 240 fnt83 2980 6646(Y)m 240 fnt78 3203 6638(-)m 240 fnt83 3403 6646(L)m 240 fnt78 3548 6638(\))m 240 fnt82 0 6142(The)m 445(size)s 890(constraint)s 1909(of)s 2198(an)s 3(y)k 2613(node)s 3152(can)s 3559(be)s 3858(found)s 4493(by)s 4805(climbing)s 5725(the)s 6091(tree)s 6521(to)s 6778(a)s 240 fnt83 6962 6144(WIDE)m 240 fnt82 7641 6142(or)m 240 fnt83 7918 6144(HIGH)m 240 fnt82 8604 6142(node)m 0 5854(where)m 636(the)s 980(constraint)s 1978(is)s 2184(tri)s 6(vial,)k 2850(then)s 3315(propag)s 1(ating)k 4506(it)s 4694(back)s 5203(do)s 6(wn)k 5783(to)s 6018(the)s 6362(node,)s 6931(and)s 7331(this)s 7723(is)s 7929(the)s 8272(function)s 0 5566(of)m 271(procedure)s 240 fnt83 1283 5568(Constr)m 3(ained)k 240 fnt82 2530 5566(in)m 2773(Basser)s 3470(Lout.)s 480 5192(After)m 1043(some)s 1604(components)s 2813(ha)s 4(v)k 3(e)k 3314(been)s 3824(promoted)s 4799(into)s 5225(a)s 5391(tar)s 4(get,)k 6038(the)s 6386(sizes)s 6902(stored)s 7544(in)s 7788(its)s 8064(parent)s 8722(and)s 0 4904(higher)m 665(ancestors)s 1598(must)s 2117(be)s 2392(adjusted)s 3241(to)s 3473(re\210ect)s 4122(the)s 4464(increased)s 5417(size.)s 5946(This)s 6415(is)s 6618(done)s 7134(by)s 7421(yet)s 7767(another)s 8537(set)s 8855(of)s 0 4616(recursi)m 6(v)k 3(e)k 925(rules,)s 1500(upw)s 2(ard-mo)k 3(ving)k 3081(this)s 3481(time,)s 4016(which)s 4662(cease)s 5239(as)s 5492(soon)s 6006(as)s 6260(some)s 6825(ancestor')s 13(s)k 7835(size)s 8266(does)s 8760(not)s 0 4328(change.)m 830(These)s 1445(rules)s 1948(are)s 2283(embodied)s 3273(in)s 3504(procedure)s 240 fnt83 4504 4330(AdjustSize)m 240 fnt82 5541 4328(of)m 5800(Basser)s 6485(Lout.)s 7089(The)s 7505(adjustment)s 8601(must)s 0 4040(be)m 282(done)s 804(before)s 1470(relinquishing)s 2785(control)s 3517(to)s 3756(an)s 3(y)k 4153(other)s 4704(g)s 1(alle)k 3(y)k 15(,)k 5376(b)s 4(ut)k 5738(not)s 6104(after)s 6600(e)s 6(v)k 3(ery)k 7176(component.)s 240 fnt84 0 3391(5.4.)m 471(The)s 926(limited)s 1696(lookahead)s 2802(pr)s 4(oblem)k 240 fnt82 480 2914(Basser)m 1189(Lout)s 1714(assumes)s 2575(that)s 3006(there)s 3552(will)s 3991(be)s 4286(enough)s 5062(internal)s 5859(memory)s 6723(to)s 6975(hold)s 7472(the)s 7833(symbol)s 8606(table)s 0 2626(plus)m 461(a)s 638(fe)s 6(w)k 1055(pages,)s 1719(b)s 4(ut)k 2092(not)s 2469(an)s 2764(entire)s 3374(document.)s 4493(This)s 4980(section)s 5726(describes)s 6677(the)s 7036(consequent)s 8185(problems)s 0 2338(and)m 441(ho)s 6(w)k 940(the)s 3(y)k 1441(were)s 1999(solv)s 3(ed.)k 2763(Other)s 3405(interpreters,)s 4636(notably)s 5446(interacti)s 6(v)k 3(e)k 6538(editors)s 7277(running)s 8113(on)s 8448(virtual)s 0 2050(memory)m 851(systems,)s 1715(w)s 2(ould)k 2370(not)s 2736(necessarily)s 3851(need)s 4361(this)s 4757(assumption.)s 480 1676(Although)m 1434(Basser)s 2122(Lout)s 2625(can)s 3005(read)s 3466(and)s 3861(format)s 4548(an)s 3(y)k 4936(le)s 3(g)k 1(al)k 5442(input,)s 6033(its)s 6300(memory)s 7142(consumption)s 8427(will)s 8844(be)s 0 1388(optimized)m 1004(when)s 1570(the)s 1908(b)s 4(ulk)k 2381(of)s 2642(the)s 2980(document)s 3974(resides)s 4677(in)s 4910(g)s 1(alle)k 3(ys)k 5624(whose)s 6282(tar)s 4(gets)k 6955(can)s 7334(be)s 7606(identi\207ed)s 8557(at)s 8778(the)s 0 1100(moment)m 843(the)s 3(y)k 1304(are)s 1650(encountered.)s 2981(Let)s 3358(us)s 3620(tak)s 2(e)k 4071(the)s 4417(typical)s 5121(e)s 3(xample)k 5982(of)s 6252(a)s 6416(root)s 6860(g)s 1(alle)k 3(y)k 7492(which)s 8133(is)s 8341(a)s 8506(list)s 8855(of)s 0 812(pages,)m 652(a)s 220 fnt35 818 809(@BodyT)m 26(e)k 6(xt)k 240 fnt82 1991 812(g)m 1(alle)k 3(y)k 2625(tar)s 4(geted)k 3448(into)s 3872(the)s 4220(pages,)s 220 fnt35 4872 809(@Chapter)m 240 fnt82 5934 812(g)m 1(alle)k 3(ys)k 6658(tar)s 4(geted)k 7481(into)s 220 fnt35 7905 809(@BodyT)m 26(e)k 6(xt)k 240 fnt82 9019 812(,)m 0 524(and)m 220 fnt35 404 521(@Section)m 240 fnt82 1404 524(g)m 1(alle)k 3(ys)k 2128(tar)s 4(geted)k 2951(into)s 3376(the)s 220 fnt35 3724 521(@Chapter)m 240 fnt82 4787 524(g)m 1(alle)k 3(ys:)k grestore grestore grestore pgsave restore showpage %%Page: 32 33 %%BeginPageSetup %%PageResources: font Times-Roman %%+ font Helvetica %%+ font Times-Italic /pgsave save def %%IncludeResource: font Helvetica /Helveticafnt35 vec2 /Helvetica LoutRecode /fnt35 { /Helveticafnt35 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave 0 0 translate 240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate 9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 0 LoutMargSet grestore 4288 13844(-)m 4416(32)s 4710(-)s 220 fnt35 480 13255(@P)m 8(ageList)k 480 12967(//)m 480 12679(@BodyT)m 26(e)k 6(xt)k 480 12391(//)m 480 12103(@Chapter {)m 480 11815( @Section { ...)m 13( })k 480 11527( @Section { ...)m 13( })k 480 11239( ...)m 480 10951( @Section { ...)m 13( })k 480 10663(})m 480 10375(@Chapter {)m 480 10087( ...)m 480 9799(})m 240 fnt82 0 9305(Basser)m 702(Lout)s 1220(is)s 1436(able)s 1896(to)s 2141(read)s 2616(and)s 3026(process)s 3800(such)s 4302(g)s 1(alle)k 3(ys)k 5032(one)s 5440(paragraph)s 6459(at)s 6697(a)s 6869(time)s 7355(\(strictly)s 15(,)k 8194(from)s 8724(one)s 220 fnt35 0 9014(//)m 240 fnt82 185 9017(at)m 417(the)s 765(outer)s 1316(le)s 6(v)k 3(el)k 1826(of)s 2097(a)s 2263(g)s 1(alle)k 3(y)k 2897(to)s 3136(the)s 3484(ne)s 3(xt\),)k 4079(as)s 4329(we)s 4664(no)s 6(w)k 5125(describe.)s 480 8643(When)m 1147(the)s 1534(parser)s 2215(encounters)s 3341(the)s 3727(be)s 3(ginning)k 4774(of)s 5083(a)s 5288(g)s 1(alle)k 3(y)k 15(,)k 5998(lik)s 2(e)k 220 fnt35 6449 8640(@Chapter)m 240 fnt82 7550 8643(or)m 220 fnt35 7848 8640(@Section)m 240 fnt82 8788 8643(,)m 8934(it)s 0 8355(initiates)m 831(a)s 1023(ne)s 6(w)k 1495(g)s 1(alle)k 3(y)k 2155(process.)s 3061(The)s 3515(special)s 4258(recepti)s 6(v)k 3(e)k 5206(symbol)s 220 fnt35 5991 8352(@Input)m 240 fnt82 6784 8355(is)m 7019(substituted)s 8139(for)s 8502(the)s 8876(as)s 0 8067(yet)m 357(unread)s 1071(right)s 1588(parameter)s 2607(of)s 2884(the)s 3237(g)s 1(alle)k 3(y)k 15(.)k 3972(As)s 4294(each)s 4795(paragraph)s 5813(of)s 6090(the)s 6443(right)s 6960(parameter)s 7979(is)s 8195(read,)s 8718(it)s 8916(is)s 0 7779(deleted)m 763(from)s 1302(the)s 1665(parse)s 2240(tree)s 2668(and)s 3087(injected)s 3916(into)s 4356(the)s 4719(g)s 1(alle)k 3(y')k 13(s)k 220 fnt35 5524 7776(@Input)m 240 fnt82 6231 7779(.)m 6410(The)s 6853(g)s 1(alle)k 3(y)k 7502(is)s 7727(then)s 8212(resumed.)s 0 7491(The)m 429(parser)s 1074(thus)s 1526(acts)s 1950(as)s 2202(an)s 2487(e)s 3(xtra)k 3022(concurrent)s 4106(process;)s 4937(it)s 5131(has)s 5503(lo)s 6(w)k 5912(priority)s 15(,)k 6721(so)s 6989(that)s 7409(input)s 7963(is)s 8175(read)s 8646(only)s 0 7203(when)m 597(there)s 1151(is)s 1382(nothing)s 2188(else)s 2636(to)s 2897(do.)s 3322(Since)s 3930(g)s 1(alle)k 3(ys)k 4675(may)s 5162(be)s 5465(nested,)s 6205(a)s 6392(stack)s 6965(of)s 220 fnt35 7257 7200(@Input)m 240 fnt82 8045 7203(symbols)m 8916(is)s 0 6915(needed,)m 781(each)s 1271(with)s 1749(its)s 2020(o)s 6(wn)k 2480(en)s 9(vironment)k 3735(and)s 4135(style.)s 4745(If)s 4971(a)s 5132(g)s 1(alle)k 3(y)k 5762(is)s 5967(encountered)s 7190(for)s 7523(which)s 8161(a)s 8322(tar)s 4(get)k 8916(is)s 0 6627(not)m 370(immediately)s 1622(identi\207able)s 2757(\(a)s 3006(footnote,)s 3914(for)s 4257(e)s 3(xample\),)k 5254(it)s 5450(is)s 5664(read)s 6137(in)s 6385(its)s 6665(entirety)s 7452(and)s 7860(hung)s 8397(in)s 8645(pure)s 0 6339(parse)m 551(tree)s 954(form)s 1468(from)s 1983(an)s 240 fnt83 2256 6341(UN)m 6(A)k 8(TT)k 12(A)k 7(CHED)k 240 fnt82 3811 6339(inde)m 3(x)k 4386(in)s 4619(the)s 4957(usual)s 5508(w)s 2(ay)k 15(,)k 5987(with)s 6459(an)s 6733(en)s 9(vironment)k 7983(b)s 4(ut)k 8335(without)s 0 6051(a)m 166(style.)s 781(It)s 986(will)s 1412(be)s 1694(\210ushed)s 2444(later)s 2927(when)s 3503(its)s 3779(component)s 4903(is)s 5113(promoted.)s 480 5677(In)m 735(addition)s 1575(to)s 1813(producing)s 2836(a)s 3001(steady)s 3665(\210o)s 6(w)k 4138(of)s 4407(components)s 5614(from)s 6137(input,)s 6735(we)s 7069(must)s 7593(also)s 8030(ensure)s 8708(that)s 0 5389(recepti)m 6(v)k 3(e)k 928(symbols)s 1783(do)s 2083(not)s 2455(unduly)s 3182(block)s 3781(their)s 4285(promotion.)s 5452(The)s 220 fnt35 5886 5386(@F)m 6(ootSect)k 240 fnt82 7044 5389(symbol)m 7810(at)s 8049(the)s 8403(foot)s 8855(of)s 0 5101(each)m 495(page)s 1003(is)s 1213(a)s 1379(typical)s 2084(e)s 3(xample:)k 3057(until)s 3550(it)s 3742(is)s 3952(deleted)s 4700(the)s 5048(page)s 5556(cannot)s 6254(be)s 6536(printed.)s 480 4727(Recepti)m 6(v)k 3(e)k 1501(symbols)s 2368(are)s 2733(e)s 3(xpanded)k 3724(only)s 4222(on)s 4537(demand,)s 5421(so)s 220 fnt35 5705 4724(@F)m 6(ootSect)k 240 fnt82 6874 4727(can)m 7281(be)s 7581(deleted)s 8347(as)s 8616(soon)s 0 4439(as)m 250(we)s 585(can)s 974(pro)s 3(v)k 3(e)k 1570(that)s 1988(it)s 2180(is)s 2390(not)s 2757(w)s 2(anted.)k 3610(The)s 4038(symbol)s 4799(table)s 5319(can)s 5708(tell)s 6067(us)s 6332(that)s 6750(only)s 220 fnt35 7230 4436(@F)m 6(ootNote)k 240 fnt82 8402 4439(g)m 1(alle)k 3(ys)k 0 4151(\(with)m 220 fnt35 555 4148(@F)m 6(ootPlace&&f)k 6(ollo)k 3(wing)k 240 fnt82 2935 4151(tar)m 4(gets\))k 3688(w)s 2(ant)k 4205(it,)s 4438(so)s 4697(it)s 4883(might)s 5494(be)s 5770(possible)s 6604(to)s 6836(deduce)s 7564(that)s 220 fnt35 7975 4148(@F)m 6(ootSect)k 240 fnt82 0 3863(may)m 466(be)s 748(deleted)s 1496(as)s 1746(soon)s 2256(as)s 2506(body)s 3040(te)s 3(xt)k 3455(enters)s 4076(the)s 4424(follo)s 6(wing)k 5401(page.)s 480 3489(The)m 904(author)s 1571(w)s 2(as)k 1987(unable)s 2677(to)s 2912(mak)s 2(e)k 3479(this)s 3871(w)s 2(ork,)k 4463(so)s 4725(Basser)s 5418(Lout)s 5925(requires)s 6741(the)s 7085(user)s 7538(to)s 7773(identify)s 8565(those)s 0 3201(g)m 1(alle)k 3(ys)k 715(which)s 1348(will)s 1764(carry)s 2299(the)s 2637(b)s 4(ulk)k 3111(of)s 3372(the)s 3711(document)s 4705(\()s 220 fnt35 4778 3198(@Chapter)m 240 fnt82 5781 3201(,)m 220 fnt35 5879 3198(@Section)m 240 fnt82 6819 3201(,)m 220 fnt35 6916 3198(@BodyT)m 26(e)k 6(xt)k 240 fnt82 8030 3201(\))m 8149(as)s 240 fnt83 8389 3203(for)m 8(cing)k 0 2915(galle)m 7(ys)k 240 fnt82 665 2913(,)m 792(by)s 1107(writing)s 220 fnt35 1871 2910(f)m 6(orce into)k 240 fnt82 2841 2913(instead)m 3596(of)s 220 fnt35 3888 2910(into)m 240 fnt82 4315 2913(in)m 4579(their)s 5097(de\207nitions.)s 6291(As)s 6629(described)s 7624(in)s 7888(the)s 8257(pre)s 6(vious)k 0 2625(section,)m 790(when)s 1373(a)s 1546(forcing)s 2296(g)s 1(alle)k 3(y)k 2937(attaches)s 3763(to)s 4009(a)s 4182(tar)s 4(get,)k 4835(all)s 5135(recepti)s 6(v)k 3(e)k 6063(symbols)s 6919(preceding)s 7922(the)s 8277(tar)s 4(get)k 8883(in)s 0 2337(its)m 278(g)s 1(alle)k 3(y)k 914(are)s 1263(deleted,)s 2062(remo)s 3(ving)k 3031(all)s 3326(impediments)s 4614(to)s 4855(\210ushing.)s 5793(F)s 3(or)k 6184(e)s 3(xample,)k 7100(when)s 7678(a)s 7846(forcing)s 8592(body)s 0 2049(te)m 3(xt)k 421(g)s 1(alle)k 3(y)k 1062(enters)s 1690(a)s 1863(ne)s 6(w)k 2317(page,)s 2882(the)s 220 fnt35 3237 2046(@F)m 6(ootSect)k 240 fnt82 4395 2049(symbol)m 5162(on)s 5466(the)s 5820(preceding)s 6823(page)s 7338(will)s 7771(be)s 8060(deleted.)s 8921(It)s 0 1761(seems)m 629(lik)s 2(ely)k 1219(that)s 1631(a)s 1791(system)s 2509(which)s 3145(could)s 3729(af)s 6(ford)k 4358(to)s 4591(w)s 2(ait)k 5054(until)s 5541(all)s 5828(input)s 6374(w)s 2(as)k 6789(read)s 7252(before)s 7912(deleting)s 8729(an)s 3(y)k 0 1473(recepti)m 6(v)k 3(e)k 922(symbols)s 1771(w)s 2(ould)k 2426(not)s 2792(need)s 3302(forcing)s 4045(g)s 1(alle)k 3(ys.)k 480 1099(Galle)m 3(ys)k 1258(whose)s 1925(tar)s 4(gets)k 2607(are)s 2953(a)s 3118(long)s 3597(w)s 2(ay)k 4047(from)s 4570(their)s 5066(in)s 9(v)k 4(ocation)k 6119(points)s 6755(can)s 7143(be)s 7424(a)s 7589(problem.)s 8549(If)s 8778(the)s 0 811(direction)m 917(is)s 220 fnt35 1139 808(f)m 6(ollo)k 3(wing)k 240 fnt82 1969 811(,)m 2087(such)s 2595(g)s 1(alle)k 3(ys)k 3330(are)s 3689(held)s 4170(in)s 4425(internal)s 5221(memory)s 6083(for)s 6433(a)s 6610(long)s 7101(time,)s 7643(unless)s 8304(the)s 3(y)k 8779(are)s 0 523(to)m 248(be)s 539(sorted.)s 1296(If)s 1535(the)s 1892(direction)s 2807(is)s 220 fnt35 3026 520(preceding)m 240 fnt82 3977 523(,)m 4093(then)s 4571(either)s 5183(the)s 5540(entire)s 6148(interv)s 3(ening)k 7296(document)s 8309(must)s 8844(be)s grestore grestore grestore pgsave restore showpage %%Page: 33 34 %%BeginPageSetup %%PageResources: font Times-Roman %%+ font Times-Bold %%+ font Times-Italic %%+ font Helvetica /pgsave save def %%IncludeResource: font Helvetica /Helveticafnt35 vec2 /Helvetica LoutRecode /fnt35 { /Helveticafnt35 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave 0 0 translate 240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate 9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 1 LoutMargSet grestore 4293 13844(-)m 4421(33)s 4705(-)s 0 13253(held)m 466(in)s 704(memory)s 1551(\(pre)s 6(v)k 3(ented)k 2617(by)s 2907(the)s 3250(tar)s 4(get)k 3844(from)s 4364(\210ushing\),)s 5317(or)s 5572(else)s 5994(some)s 6551(forcing)s 7289(g)s 1(alle)k 3(y)k 7918(prematurely)s 0 12965(deletes)m 714(the)s 1062(tar)s 4(get,)k 1708(lea)s 4(ving)k 2461(the)s 2809(g)s 1(alle)k 3(y)k 3443(bereft.)s 480 12591(The)m 929(typical)s 1655(e)s 3(xample)k 2539(of)s 2832(the)s 3201(latter)s 3771(case)s 4260(occurs)s 4956(when)s 5553(the)s 5922(g)s 1(alle)k 3(y)k 6578(is)s 6809(an)s 7113(entry)s 7680(in)s 7944(the)s 8313(table)s 8855(of)s 0 12303(contents,)m 907(launched)s 1832(backw)s 2(ards)k 2907(from)s 3435(the)s 3786(be)s 3(ginning)k 4797(of)s 5071(a)s 5241(chapter)s 6007(or)s 6269(section.)s 7113(Its)s 7406(tar)s 4(get)k 8008(in)s 8254(the)s 8606(table)s 0 12015(of)m 286(contents)s 1150(will)s 1592(ha)s 4(v)k 3(e)k 2108(been)s 2633(deleted)s 3397(long)s 3891(before,)s 4624(to)s 4879(permit)s 5578(the)s 5941(rest)s 6361(of)s 6648(the)s 7011(document)s 8031(to)s 8286(print,)s 8860(so)s 0 11727(the)m 349(g)s 1(alle)k 3(y)k 985(ultimately)s 2009(emer)s 4(ges)k 2854(as)s 3106(an)s 3391(unattached)s 4487(g)s 1(alle)k 3(y)k 5122(promoted)s 6099(out)s 6467(of)s 6740(the)s 7090(root)s 7537(g)s 1(alle)k 3(y)k 15(.)k 8268(All)s 8630(such)s 0 11439(g)m 1(alle)k 3(ys)k 717(are)s 1056(written)s 1781(to)s 2013(an)s 2288(auxiliary)s 3183(\207le,)s 3588(inde)s 3(x)k 3(ed)k 4390(by)s 4676(the)s 5016(missing)s 5806(tar)s 4(get.)k 6501(On)s 6843(the)s 7184(ne)s 3(xt)k 7645(run,)s 8063(just)s 8460(before)s 0 11151(that)m 418(tar)s 4(get)k 1017(is)s 1227(deleted,)s 2024(the)s 2372(auxiliary)s 3275(\207le)s 3636(is)s 3846(check)s 2(ed)k 4686(and)s 5090(an)s 3(y)k 5487(g)s 1(alle)k 3(ys)k 6211(for)s 6549(it)s 6741(are)s 7088(read)s 7557(in)s 7800(and)s 8204(\210ushed.)s 240 fnt84 0 10502(5.5.)m 471(Horizontal)s 1628(galleys)s 240 fnt82 480 10025(There)m 1108(is)s 1333(a)s 1514(strong)s 2180(analogy)s 3007(between)s 3876(breaking)s 4781(a)s 4962(column)s 5752(of)s 6038(te)s 3(xt)k 6468(into)s 6908(page-sized)s 8003(pieces,)s 8722(and)s 0 9737(breaking)m 912(a)s 1101(paragraph)s 2137(into)s 2585(line-sized)s 3594(pieces.)s 4378(In)s 4657(f)s 2(act,)k 5142(the)s 5513(tw)s 2(o)k 5946(dif)s 6(fer)k 6552(only)s 7055(in)s 7321(direction:)s 8359(v)s 3(ertical)k 0 9449(for)m 343(body)s 883(te)s 3(xt,)k 1351(horizontal)s 2381(for)s 2724(paragraphs.)s 3943(In)s 4205(this)s 4607(section)s 5347(we)s 5687(de\207ne)s 240 fnt83 6334 9451(horizontal)m 7384(galle)s 7(ys)k 240 fnt82 8049 9449(,)m 8162(and)s 8572(sho)s 6(w)k 0 9161(ho)m 6(w)k 493(the)s 3(y)k 989(pro)s 3(vide)k 1806(an)s 2122(unlimited)s 3129(number)s 3953(of)s 4257(paragraph)s 5302(breaking)s 6225(styles,)s 6909(as)s 7192(well)s 7691(as)s 7974(solv)s 3(e)k 8565(some)s 0 8873(other)m 587(problems.)s 1677(Re)s 3(grettably)k 15(,)k 2917(lack)s 3412(of)s 3719(time)s 4235(has)s 4641(pre)s 6(v)k 3(ented)k 5669(their)s 6202(incorporation)s 7583(into)s 8044(the)s 8429(Basser)s 0 8585(Lout)m 512(interpreter)s 13(.)k 480 8211(Imagine)m 1337(a)s 1521(g)s 1(alle)k 3(y)k 2173(whose)s 2859(components)s 4085(are)s 4450(separated)s 5428(by)s 5740(horizontal)s 6782(concatenation)s 8186(operators)s 0 7923(instead)m 725(of)s 986(v)s 3(ertical)k 1742(ones,)s 2278(perhaps)s 3062(indicated)s 3986(by)s 4269(a)s 220 fnt35 4425 7920(hor)m -3(iz)k 3(ontally)k 5582(into)s 240 fnt82 5977 7923(clause.)m 6728(Then)s 7266(all)s 7549(object)s 8182(breaking,)s 0 7635(including)m 957(paragraph)s 1970(breaking,)s 2914(could)s 3504(be)s 3786(replaced)s 4653(by)s 4947(g)s 1(alle)k 3(y)k 5581(component)s 6705(promotion)s 7759(lik)s 2(e)k 8171(this:)s 220 fnt35 480 7134(def @P)m 8(ar)k 2(ag)k 2(r)k 2(aph r)k -3(ight x)k 480 6846({)m 480 6558( def @LinePlace { @Galle)m 4(y })k 480 5982( def @LineList)m 480 5694( {)m 480 5406( @HExpand @LinePlace)m 480 5118( //1vx @LineList)m 480 4830( })m 480 4254( def @P)m 8(ar hor)k -3(iz)k 3(ontally into { @LinePlace&&preceding })k 480 3966( r)m -3(ight x)k 480 3678( { x })m 480 3102( @LineList // @P)m 8(ar { 0.2i @Wide {} &0i x &1r)k -8(t })k 480 2814(})m 240 fnt82 0 2320(The)m 220 fnt35 431 2317(@HExpand)m 240 fnt82 1607 2320(operator)m 9(,)k 2504(which)s 3149(is)s 3362(a)s 3531(primiti)s 6(v)k 3(e)k 4456(of)s 4730(Basser)s 5430(Lout,)s 5992(horizontally)s 7204(e)s 3(xpands)k 8040(the)s 8391(g)s 1(aps)k 8883(in)s 0 2032(its)m 290(right)s 816(parameter)s 1844(until)s 2352(the)s 2715(result)s 3319(\207lls)s 3743(the)s 4105(a)s 4(v)k 6(ailable)k 5028(space,)s 5681(thus)s 6145(implementing)s 7541(line)s 7970(adjustment,)s 0 1744(e)m 3(xcept)k 689(when)s 1274(the)s 1631(parameter)s 2654(contains)s 3511(tab)s 4(ulation)k 4529(g)s 1(aps)k 5027(lik)s 2(e)k 220 fnt35 5447 1741(&1r)m -8(t)k 240 fnt82 5853 1744(,)m 5969(which)s 6620(cause)s 7216(the)s 7573(parameter)s 8596(to)s 8844(be)s 0 1456(already)m 757(e)s 3(xpanded.)k 1836(The)s 2264(result)s 2854(of)s 220 fnt35 480 955(@P)m 8(ar)k 2(ag)k 2(r)k 2(aph { A shor)k -8(t par)k 2(ag)k 2(r)k 2(aph of te)k 6(xt.)k 13( })k 240 fnt82 0 456(w)m 2(ould)k 655(then)s 1124(be)s 1406(something)s 2456(lik)s 2(e)k grestore grestore grestore pgsave restore showpage %%Page: 34 35 %%BeginPageSetup %%PageResources: font Times-Roman %%+ font Helvetica %%+ font Times-Italic /pgsave save def %%IncludeResource: font Helvetica /Helveticafnt35 vec2 /Helvetica LoutRecode /fnt35 { /Helveticafnt35 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave 0 0 translate 240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate 9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 0 LoutMargSet grestore 4288 13844(-)m 4416(34)s 4710(-)s 768 13253(A)m 1073(short)s 1687(paragraph)s 480 12965(of)m 751(te)s 3(xt.)k 0 12512(depending)m 1061(on)s 1368(the)s 1726(a)s 4(v)k 6(ailable)k 2645(horizontal)s 3679(space.)s 4384(An)s 4744(unlimited)s 5729(range)s 6326(of)s 6607(paragraph)s 7630(breaking)s 8531(styles)s 0 12224(could)m 590(be)s 872(de\207ned,)s 1684(including)s 2641(ragged)s 3350(right,)s 3908(ragged)s 4617(left,)s 5041(break-and-center)s 9(,)k 6757(and)s 7161(so)s 7427(on.)s 480 11850(In)m 765(Basser)s 1492(Lout,)s 2081(indented)s 2992(paragraphs)s 4122(are)s 4499(produced)s 5477(by)s 5801(preceding)s 6827(them)s 7394(with)s 7906(a)s 8102(horizontal)s 0 11562(concatenation)m 1380(operator)s 9(,)k 2269(for)s 2602(e)s 3(xample)k 220 fnt35 3459 11559(|0.5i)m 240 fnt82 3855 11562(.)m 4014(This)s 4485(has)s 4849(the)s 5192(unfortunate)s 6345(ef)s 6(fect)k 6935(of)s 7201(making)s 7967(an)s 8244(indented)s 0 11274(paragraph)m 1007(into)s 1426(a)s 1586(single)s 2207(component)s 3325(of)s 3590(the)s 3932(enclosing)s 4895(g)s 1(alle)k 3(y)k 15(,)k 5561(so)s 5821(that)s 6233(it)s 6419(will)s 6839(al)s 2(w)k 2(ays)k 7544(be)s 7820(k)s 2(ept)k 8283(together)s 0 10986(on)m 297(one)s 699(page.)s 1315(Horizontal)s 2392(g)s 1(alle)k 3(ys)k 3116(solv)s 3(e)k 3674(this)s 4070(problem)s 4927(with)s 5409(a)s 5575(simple)s 6268(change)s 7002(to)s 220 fnt35 7241 10983(@LineList)m 240 fnt82 8215 10986(:)m 220 fnt35 480 10485(def @LineList)m 480 10197({)m 480 9909( |0.5i @HExpand @LinePlace)m 480 9621( //1vx @LineList)m 480 9333(})m 240 fnt82 0 8839(sho)m 6(wing)k 860(the)s 1210(\210e)s 3(xibility)k 2192(that)s 2611(comes)s 3275(from)s 3801(bringing)s 4666(the)s 5016(full)s 5404(po)s 6(wer)k 6057(of)s 6330(the)s 6680(Lout)s 7193(language)s 8115(to)s 8356(bear)s 8829(on)s 0 8551(paragraph)m 1013(layout.)s 1775(It)s 1980(is)s 2190(easy)s 2669(to)s 2908(mak)s 2(e)k 3480(pro)s 3(vision)k 4438(for)s 4776(a)s 4942(tag)s 5287(on)s 5584(the)s 5932(\207rst)s 6363(line.)s 480 8177(Although)m 1451(Basser)s 2158(Lout)s 2679(permits)s 3456(recepti)s 6(v)k 3(e)k 4387(symbols)s 5246(within)s 5923(paragraphs,)s 7089(the)s 3(y)k 7561(are)s 7918(of)s 8198(little)s 8700(use,)s 0 7889(because)m 835(their)s 1355(a)s 4(v)k 6(ailable)k 2286(width)s 2911(is)s 3144(calculated)s 4193(after)s 4711(paragraph)s 5747(breaking,)s 6714(and)s 7141(the)s 7512(incoming)s 8492(g)s 1(alle)k 3(y)k 0 7601(cannot)m 736(spread)s 1456(o)s 3(v)k 3(er)k 1973(more)s 2558(than)s 3065(one)s 3505(line.)s 4066(W)s 9(ith)k 4630(horizontal)s 5692(g)s 1(alle)k 3(ys,)k 6510(such)s 7044(symbols)s 7931(w)s 2(ould)k 8625(ha)s 4(v)k 3(e)k 0 7313(in\207nite)m 733(a)s 4(v)k 6(ailable)k 1641(width,)s 2293(and)s 2697(we)s 3032(could)s 3622(easily)s 4233(produce)s 5060(a)s 5226(\207lled)s 5775(paragraph)s 6788(of)s 7059(footnotes)s 8000(lik)s 2(e)k 8412(this:)s 200 fnt82 480 6838(1)m 240 fnt82 559 6743(See)m 987(Jones)s 1597(and)s 2028(Saunders)s 2983(\(1982\).)s 200 fnt82 3932 6838(2)m 240 fnt82 4027 6743(Or)m 4366(so)s 4659(Jacobsen)s 480 6443(\(1973\))m 1167(asserts.)s 200 fnt82 2087 6538(3)m 240 fnt83 2174 6445(ibid)m 240 fnt82 2552 6443(,)m 2659(p.)s 2883(327.)s 0 5940(based)m 603(on)s 900(an)s 1183(in\207nite)s 1916(horizontal)s 2940(sequence)s 3873(of)s 220 fnt35 4144 5937(@F)m 6(ootPlace)k 240 fnt82 5400 5940(symbols)m 6249(inside)s 6876(a)s 7042(horizontal)s 8066(g)s 1(alle)k 3(y)k 15(.)k 480 5566(When)m 1133(body)s 1692(te)s 3(xt)k 2132(is)s 2367(placed)s 3074(on)s 3395(pages,)s 4072(the)s 4445(length)s 5125(of)s 5421(each)s 5940(column)s 6740(v)s 6(aries)k 7380(depending)s 8456(on)s 8778(the)s 0 5278(a)m 4(v)k 6(ailable)k 914(v)s 3(ertical)k 1687(space.)s 2389(Horizontal)s 3472(g)s 1(alle)k 3(ys)k 4203(could)s 4799(analogously)s 6017(produce)s 6850(lines)s 7359(of)s 7636(v)s 6(arying)k 8421(length,)s 0 4990(and)m 404(so)s 670(could)s 1260(\207ll)s 1580(non-rectangular)s 3153(shapes.)s 480 4616(An)m 835(important)s 1829(theoretical)s 2896(bene\207t)s 3612(of)s 3888(horizontal)s 4918(g)s 1(alle)k 3(ys)k 5647(is)s 5862(that)s 6285(the)s 3(y)k 6753(w)s 2(ould)k 7413(permit)s 8102(horizontal)s 0 4328(and)m 403(v)s 3(ertical)k 1168(to)s 1405(be)s 1685(treated)s 2390(in)s 2631(a)s 2795(perfectly)s 3695(symmetrical)s 4928(w)s 2(ay)k 15(,)k 5415(whereas)s 6247(at)s 6477(present)s 7225(paragraph)s 8236(breaking)s 0 4040(is)m 243(horizontal)s 1300(only)s 15(,)k 1851(and)s 2288(g)s 1(alle)k 3(y)k 2955(breaking)s 3878(is)s 4121(v)s 3(ertical)k 4921(only)s 15(.)k 5529(This)s 6038(must)s 6596(simplify)s 7479(the)s 7860(treatment)s 8855(of)s 0 3752(non-European)m 1432(languages)s 2459(which)s 3121(\207ll)s 3460(in)s 3722(unusual)s 4542(directions,)s 5610(although)s 6525(it)s 6736(is)s 6965(not)s 7351(itself)s 7918(suf\207cient)s 8887(to)s 0 3464(implement)m 1082(them.)s 480 3090(There)m 1132(are)s 1519(a)s 1725(fe)s 6(w)k 2170(minor)s 2841(problems)s 3822(with)s 4343(horizontal)s 5407(g)s 1(alle)k 3(ys.)k 6284(First,)s 6867(the)s 7255(syntactic)s 8197(o)s 3(v)k 3(erhead)k 0 2802(of)m 319(enclosing)s 1337(each)s 1880(paragraph)s 2941(in)s 220 fnt35 3233 2799(@P)m 8(ar)k 2(ag)k 2(r)k 2(aph { ...)k 13( })k 240 fnt82 5064 2802(or)m 5371(whate)s 6(v)k 3(er)k 6346(is)s 6604(unacceptable.)s 8065(Permitting)s 0 2514(user)m 4(-de\207ned)k 1234(operators)s 2172(to)s 2409(ha)s 4(v)k 3(e)k 2908(lo)s 6(wer)k 3504(precedence)s 4633(than)s 5100(the)s 5446(white)s 6031(space)s 6616(between)s 7468(tw)s 2(o)k 7876(w)s 2(ords)k 8508(might)s 0 2226(help)m 450(here.)s 1009(Second,)s 1805(the)s 2137(b)s 4(uilt-in)k 2877(paragraph)s 3874(break)s 2(er)k 4632(includes)s 5464(h)s 1(yphenation,)k 6738(and)s 7126(it)s 7302(permits)s 8053(line)s 8451(breaks)s 0 1938(in)m 246(the)s 598(input)s 1153(to)s 1396(determine)s 2410(line)s 2828(breaks)s 3506(in)s 3753(the)s 4105(output,)s 4827(if)s 5048(desired.)s 5905(These)s 6536(features)s 7345(must)s 7874(someho)s 6(w)k 8844(be)s 0 1650(preserv)m 3(ed.)k 1081(Finally)s 15(,)k 1841(we)s 2167(ha)s 4(v)k 3(e)k 2659(e)s 3(xplained)k 3634(ho)s 6(w)k 4086(the)s 4425(Basser)s 5113(Lout)s 5616(interpreter)s 6659(assigns)s 7392(equal)s 7956(width)s 8549(to)s 8778(the)s 0 1362(wider)m 607(columns)s 1473(of)s 1748(tables)s 2359(\(Section)s 3216(2.5\).)s 3763(The)s 4194(equi)s 6(v)k 6(alent)k 5242(situation)s 6126(in)s 6372(v)s 3(ertical)k 7143(g)s 1(alle)k 3(ys)k 7871(occurs)s 8550(when)s 0 1074(tw)m 2(o)k 416(recepti)s 6(v)k 3(e)k 1345(symbols)s 2201(compete)s 3074(for)s 3419(v)s 3(ertical)k 4193(space)s 4786(\(e.g.)s 220 fnt35 5262 1071(@T)m 26(e)k 6(xtPlace)k 240 fnt82 6487 1074(and)m 220 fnt35 6898 1071(@F)m 6(ootSect)k 240 fnt82 7989 1074(\),)m 8182(and)s 8593(there)s 0 786(it)m 187(is)s 392(con)s 9(v)k 3(entional)k 1666(to)s 1900(grant)s 2446(as)s 2691(much)s 3274(as)s 3519(required)s 4368(to)s 4602(the)s 4945(\207rst)s 5371(arri)s 6(v)k 6(al.)k 6140(It)s 6339(is)s 6544(not)s 6905(clear)s 7423(to)s 7657(the)s 8000(author)s 8665(ho)s 6(w)k 0 498(these)m 547(dif)s 6(ferent)k 1422(approaches)s 2549(can)s 2938(be)s 3220(reconciled.)s grestore grestore grestore pgsave restore showpage %%Page: 35 36 %%BeginPageSetup %%PageResources: font Times-Roman %%+ font Times-Bold %%+ font Helvetica %%+ font Times-Italic /pgsave save def %%IncludeResource: font Helvetica /Helveticafnt35 vec2 /Helvetica LoutRecode /fnt35 { /Helveticafnt35 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave 0 0 translate 240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate 9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 1 LoutMargSet grestore 4292 13841(-)m 4420(35)s 4706(-)s 240 fnt84 0 12672(6.)m 291(Cr)s 4(oss)k 926(r)s 4(efer)k 4(ences)k 240 fnt82 480 12240(Cross)m 1064(references,)s 2138(such)s 2622(as)s 2859(`see)s 3286(page)s 3782(57')s 4121(and)s 4512(`see)s 4940(Figure)s 5607(5,)s 16(')k 5871(are)s 6205(a)s 6358(useful)s 6985(b)s 4(ut)k 7334(highly)s 7987(error)s 4(-prone)k 0 11952(feature)m 716(of)s 985(documents.)s 2184(Scribe)s 2848([7])s 3163(introduced)s 4242(a)s 4406(method)s 5180(of)s 5449(k)s 2(eeping)k 6256(them)s 6792(up)s 7083(to)s 7320(date)s 7772(automatically)s 0 11664(as)m 245(the)s 587(document)s 1585(changes:)s 2517(the)s 2859(user)s 3311(gi)s 6(v)k 3(es)k 3852(each)s 4342(referenced)s 5401(entity)s 5993(a)s 6153(tag,)s 6547(and)s 6945(operators)s 7879(are)s 8220(pro)s 3(vided)k 0 11376(that)m 418(return)s 1045(the)s 1393(page)s 1901(or)s 2160(sequence)s 3093(number)s 3884(of)s 4155(the)s 4503(entity)s 5101(with)s 5583(a)s 5749(gi)s 6(v)k 3(en)k 6329(tag.)s 480 11002(A)m 712(cross)s 1256(reference)s 2201(tak)s 2(es)k 2743(an)s 3028(object)s 3674(\(such)s 4251(as)s 4503(a)s 4671(page)s 5181(number\))s 6042(from)s 6568(one)s 6972(point)s 7526(in)s 7771(the)s 8122(document)s 0 10714(and)m 435(copies)s 1128(it)s 1351(to)s 1621(another)s 9(,)k 2467(and)s 2902(this)s 3329(generalization)s 4770(suggests)s 5663(other)s 6245(applications.)s 7595(F)s 3(or)k 8015(e)s 3(xample,)k 8960(a)s 0 10426(running)m 831(header)s 1562(is)s 1806(copied)s 2536(from)s 3094(the)s 3475(title)s 3935(of)s 4240(a)s 4440(nearby)s 5179(chapter)s 9(,)k 6013(and)s 6451(a)s 6651(reference)s 7628(is)s 7872(copied)s 8602(from)s 0 10138(a)m 207(bibliographic)s 1576(database.)s 2604(Making)s 3443(the)s 3832(unity)s 4419(of)s 4731(these)s 5319(applications)s 6566(manifest)s 7489(is)s 7740(an)s 8065(interesting)s 0 9850(language)m 920(design)s 1602(problem.)s 240 fnt84 0 9201(6.1.)m 471(The)s 926(cr)s 4(oss)k 1494(r)s 4(efer)k 4(ence)k 2496(abstraction)s 240 fnt82 480 8770(In)m 736(de)s 6(v)k 3(eloping)k 1844(the)s 2192(cross)s 2734(reference)s 3677(abstraction,)s 4832(it)s 5024(seemed)s 5799(best)s 6244(to)s 6483(be)s 3(gin)k 7069(with)s 7551(the)s 7899(database)s 8779(ap)s 8998(-)s 0 8482(plication,)m 943(since)s 1490(it)s 1682(is)s 1892(the)s 2240(simplest.)s 3200(Database)s 4132(relations)s 5005(are)s 5352(naturally)s 6255(mapped)s 7071(into)s 7496(Lout)s 8008(de\207nitions:)s 220 fnt35 480 7981(def @Ref)m 6(erence)k 480 7693( named @T)m 26(ag {})k 480 7405( named @A)m 6(uthor {})k 480 7117( named @Title {})m 480 6829( named @Jour)m -5(nal {})k 480 6541({})m 240 fnt82 0 6047(The)m 434(set)s 766(of)s 1043(all)s 1343(in)s 9(v)k 4(ocations)k 2490(of)s 220 fnt35 2768 6044(@Ref)m 6(erence)k 240 fnt82 4055 6047(is)m 4272(a)s 4444(relation)s 5237(whose)s 5911(attrib)s 4(utes)k 6853(are)s 7206(the)s 7561(parameters,)s 8722(and)s 0 5759(whose)m 659(tuples)s 1271(are)s 1608(the)s 1946(in)s 9(v)k 4(ocations.)k 3191(T)s 19(o)k 3481(complete)s 4403(the)s 4741(correspondence,)s 6339(we)s 6665(need)s 7165(only)s 7635(declare)s 8370(that)s 8778(the)s 220 fnt35 0 5468(@T)m 26(ag)k 240 fnt82 623 5471(parameter)m 1637(is)s 1847(special,)s 2617(serving)s 3374(as)s 3624(the)s 3972(k)s 2(e)k 3(y)k 4367(attrib)s 4(ute.)k 480 5097(F)m 3(ollo)k 6(wing)k 1508(the)s 1856(database)s 2735(model,)s 3440(we)s 3775(ne)s 3(xt)k 4244(need)s 4755(a)s 4921(notation)s 5762(for)s 6100(retrie)s 6(ving)k 7075(the)s 7423(in)s 9(v)k 4(ocation)k 8477(with)s 8960(a)s 0 4809(gi)m 6(v)k 3(en)k 580(tag:)s 220 fnt35 480 4308(@Ref)m 6(erence&&kingston91)k 240 fnt82 0 3809(This)m 240 fnt83 534 3811(cr)m 10(oss)k 1143(r)s 8(efer)k 8(ence)k 240 fnt82 2141 3809(is)m 2410(lik)s 2(e)k 2881(an)s 3223(arro)s 6(w)k 3887(pointing)s 4796(to)s 5094(the)s 5501(in)s 9(v)k 4(ocation.)k 6721(T)s 19(o)k 7080(access)s 7800(its)s 8135(attrib)s 4(utes,)k 0 3521(we)m 335(write)s 220 fnt35 480 3069(@Ref)m 6(erence&&kingston91 @Open { @A)k 6(uthor)k 11(, @Title })k 240 fnt82 0 2570(The)m 220 fnt35 484 2567(@Open)m 240 fnt82 1347 2570(operator)m 2260(e)s 6(v)k 6(aluates)k 3245(its)s 3578(right)s 4146(parameter)s 5217(in)s 5517(an)s 5857(en)s 9(vironment)k 7174(which)s 7873(includes)s 8778(the)s 0 2282(e)m 3(xported)k 892(parameters)s 1990(of)s 2261(its)s 2537(left.)s 480 1908(An)m 829(in)s 9(v)k 4(ocation)k 1882(is)s 2091(chosen)s 2812(to)s 3050(be)s 3331(a)s 3496(running)s 4293(header)s 4989(because)s 5801(of)s 6071(its)s 6346(proximity)s 7342(to)s 7580(the)s 7927(place)s 8486(where)s 0 1620(it)m 223(is)s 465(used,)s 1043(rather)s 1691(than)s 2192(by)s 2517(its)s 2825(tag.)s 3313(Such)s 3881(proximity)s 4910(is)s 5151(naturally)s 6086(e)s 3(xpressed)k 7116(by)s 7442(tw)s 2(o)k 7884(special)s 8634(tags,)s 220 fnt35 0 1329(preceding)m 240 fnt82 1049 1332(and)m 220 fnt35 1491 1329(f)m 6(ollo)k 3(wing)k 240 fnt82 2321 1332(;)m 2471(for)s 2848(e)s 3(xample,)k 220 fnt35 3800 1329(@Sym&&f)m 6(ollo)k 3(wing)k 240 fnt82 5682 1332(will)m 6146(point)s 6737(to)s 7014(the)s 7400(closest)s 8149(follo)s 6(wing)k 0 1044(in)m 9(v)k 4(ocation)k 1083(of)s 220 fnt35 1383 1041(@Sym)m 240 fnt82 2121 1044(in)m 2393(the)s 2771(\207nal)s 3280(printed)s 4045(document.)s 5182(This)s 5688(is)s 5927(much)s 6546(simpler)s 7351(conceptually)s 8657(than)s 0 756(reference)m 937(to)s 1169(the)s 1511(internal)s 2288(state)s 2775(of)s 3039(the)s 3381(document)s 4378(formatter)s 5319(at)s 5544(a)s 5704(critical)s 6413(moment,)s 7298(the)s 7639(usual)s 8192(approach)s 0 468(to)m 239(running)s 1037(headers.)s 480 94(It)m 691(turns)s 1227(out)s 1600(that)s 2025(the)s 2380(abo)s 3(v)k 3(e)k 3009(design)s 3698(solv)s 3(es)k 4350(all)s 4650(the)s 5005(cross)s 5554(referencing)s 6701(problems)s 7649(encountered)s 8883(in)s grestore grestore grestore pgsave restore showpage %%Page: 36 37 %%BeginPageSetup %%PageResources: font Times-Roman %%+ font Helvetica %%+ font Times-Bold /pgsave save def %%IncludeResource: font Helvetica /Helveticafnt35 vec2 /Helvetica LoutRecode /fnt35 { /Helveticafnt35 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave 0 0 translate 240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate 9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 0 LoutMargSet grestore 4288 13842(-)m 4416(36)s 4709(-)s 0 13251(practice)m 825(e)s 3(xcept)k 1521(one,)s 1988(which)s 2645(may)s 3126(be)s 3422(typi\207ed)s 4226(by)s 4535(the)s 4897(problem)s 5769(of)s 6054(\207nding)s 6801(the)s 7164(number)s 7969(of)s 8255(the)s 8618(page)s 0 12963(on)m 303(which)s 952(the)s 1306(chapter)s 2076(whose)s 2750(tag)s 3102(is)s 220 fnt35 3318 12960(intro)m 240 fnt82 3804 12963(be)m 3(gins.)k 4596(T)s 19(w)k 2(o)k 5074(cross)s 5622(referencing)s 6769(steps)s 7304(are)s 7658(needed,)s 8449(\207rst)s 8887(to)s 220 fnt35 0 12672(@Chapter&&intro)m 240 fnt82 1714 12675(,)m 1821(then)s 2290(from)s 2814(there)s 3347(to)s 220 fnt35 3586 12672(@P)m 8(age&&preceding)k 240 fnt82 5556 12675(,)m 5663(where)s 6303(the)s 6651(page)s 7159(number)s 7950(is)s 8160(kno)s 6(wn.)k 480 12301(Gi)m 6(v)k 3(en)k 1113(our)s 1492(success)s 2260(so)s 2526(f)s 2(ar)k 9(,)k 2886(this)s 3282(last)s 3673(problem)s 4530(pro)s 3(v)k 3(es)k 5213(to)s 5452(be)s 5734(surprisingly)s 6930(dif\207cult.)s 7850(W)s 19(e)k 8219(\207rst)s 8650(try)s 220 fnt35 480 11800(@Chapter&&intro @Open {)m 480 11512( @P)m 8(age&&preceding @Open { @P)k 8(ageNum })k 480 11224(})m 240 fnt82 0 10730(b)m 4(ut)k 363(this)s 761(f)s 2(ails)k 1222(because)s 220 fnt35 2037 10727(@P)m 8(age&&preceding)k 240 fnt82 4069 10730(is)m 4281(e)s 6(v)k 6(aluated)k 5245(in)s 5490(the)s 5840(present)s 6592(conte)s 3(xt,)k 7402(not)s 7770(in)s 8015(the)s 8365(conte)s 3(xt)k 0 10442(of)m 220 fnt35 271 10439(@Chapter&&intro)m 240 fnt82 2045 10442(as)m 2295(required.)s 3255(So)s 3561(our)s 3940(ne)s 3(xt)k 4409(attempt)s 5185(is)s 220 fnt35 480 9941(def @Chapter)m 480 9653( named @P)m 8(ageNum { @P)k 8(age&&preceding @Open { @P)k 8(ageNum } })k 480 9365( ...)m 240 fnt82 0 8914(with)m 482(the)s 220 fnt35 830 8911(@P)m 8(age&&preceding)k 240 fnt82 2860 8914(cross)m 3402(reference)s 4345(attached)s 5199(to)s 5438(the)s 5786(chapter;)s 6601(we)s 6936(write)s 220 fnt35 480 8413(@Chapter&&intro @Open { @P)m 8(ageNum })k 240 fnt82 0 7914(This)m 604(also)s 1170(f)s 2(ails,)k 1813(because)s 2754(parameters)s 3980(are)s 4456(e)s 6(v)k 6(aluated)k 5546(after)s 6170(substitution,)s 7521(so)s 7915(once)s 8552(ag)s 1(ain)k 220 fnt35 0 7623(@P)m 8(age&&preceding)k 240 fnt82 2015 7626(is)m 2209(e)s 6(v)k 6(aluated)k 3156(in)s 3383(the)s 3716(wrong)s 4365(conte)s 3(xt.)k 5215(W)s 19(e)k 5568(could)s 6143(of)s 6398(course)s 7063(de\207ne)s 7688(a)s 7839(ne)s 6(w)k 8270(operator)s 0 7338(speci\207cally)m 1142(for)s 1480(this)s 1876(case:)s 220 fnt35 480 6837(@P)m 8(age&&{ @Preceding @Chapter&&intro })k 240 fnt82 0 6338(or)m 267(some)s 836(such.)s 1448(This)s 1932(is)s 2151(free)s 2585(of)s 2864(the)s 3221(anno)s 2(ying)k 4172(conte)s 3(xt-sensiti)k 6(vity)k 15(,)k 6029(b)s 4(ut)k 6399(it)s 6599(seems)s 7243(quite)s 7785(comple)s 3(x,)k 8722(and)s 0 6050(the)m 348(e)s 3(xpected)k 1253(cross)s 1795(reference)s 220 fnt35 2738 6047(@P)m 8(age&&preceding)k 240 fnt82 4768 6050(does)m 5258(not)s 5624(appear)s 13(.)k 480 5676(The)m 939(author)s 1642(w)s 2(as)k 2095(lost)s 2532(in)s 2806(these)s 3385(obscurities)s 4503(for)s 4873(some)s 5465(time,)s 6028(and)s 6464(ultimately)s 7518(rescued)s 8338(himself)s 0 5388(by)m 306(looking)s 1103(ahead)s 1731(to)s 1982(the)s 2342(implementation)s 3912(of)s 4195(the)s 220 fnt35 4555 5385(preceding)m 240 fnt82 5578 5388(and)m 220 fnt35 5994 5385(f)m 6(ollo)k 3(wing)k 240 fnt82 6897 5388(tags,)m 7401(to)s 7652(see)s 8025(if)s 8254(a)s 8433(simple)s 0 5100(e)m 3(xtension)k 971(of)s 1242(it)s 1434(w)s 2(ould)k 2089(solv)s 3(e)k 2647(the)s 2995(problem.)s 3956(This)s 4432(led)s 4782(to)s 5021(the)s 220 fnt35 5369 5097(@T)m 26(agged)k 240 fnt82 6358 5100(operator:)m 220 fnt35 480 4599(@P)m 8(age&&preceding @T)k 26(agged intro)k 240 fnt82 0 4100(placed)m 686(at)s 922(the)s 1274(be)s 3(ginning)k 2286(of)s 2562(the)s 2914(body)s 3452(of)s 3727(the)s 4079(chapter)s 4847(will)s 5277(attach)s 220 fnt35 5908 4097(intro)m 240 fnt82 6391 4100(as)m 6645(an)s 6933(e)s 3(xtra)k 7471(tag)s 7820(to)s 8063(the)s 8416(closest)s 0 3812(preceding)m 996(in)s 9(v)k 4(ocation)k 2050(of)s 220 fnt35 2321 3809(@P)m 8(age)k 240 fnt82 3040 3812(,)m 3147(so)s 3413(that)s 220 fnt35 480 3311(@P)m 8(age&&intro @Open { @P)k 8(ageNum })k 240 fnt82 0 2812(yields)m 635(the)s 996(desired)s 1758(page)s 2279(number)s 13(.)k 3174(There)s 3801(is)s 4024(something)s 5087(lo)s 6(w-le)k 6(v)k 3(el)k 6043(and)s 6460(ad)s 6757(hoc)s 7170(about)s 7775(the)s 220 fnt35 8137 2809(@T)m 26(agged)k 240 fnt82 0 2524(operator)m 9(,)k 894(b)s 4(ut)k 1256(the)s 1604(tw)s 2(o)k 2014(cross)s 2556(references)s 3587(do)s 3880(appear)s 4577(naturally)s 15(,)k 5518(and)s 5922(it)s 6114(w)s 2(orks.)k 240 fnt84 0 1875(6.2.)m 471(Implementation)s 2159(of)s 2431(cr)s 4(oss)k 2999(r)s 4(efer)k 4(ences)k 240 fnt82 480 1398(Before)m 1185(an)s 1466(object)s 2109(can)s 2496(be)s 2777(sized)s 3324(and)s 3727(printed,)s 4509(the)s 4855(v)s 6(alues)k 5510(of)s 5779(an)s 3(y)k 6175(cross)s 6715(references)s 7745(within)s 8411(it)s 8601(must)s 0 1110(be)m 279(kno)s 6(wn.)k 1086(If)s 1312(the)s 3(y)k 1772(refer)s 2277(to)s 2512(in)s 9(v)k 4(ocations)k 3650(that)s 4064(ha)s 4(v)k 3(e)k 4561(not)s 4924(yet)s 5272(been)s 5777(read,)s 6292(there)s 6821(is)s 7027(a)s 7190(problem.)s 8147(Scribe)s 8809([7])s 0 822(solv)m 3(es)k 649(it)s 844(by)s 1141(capitalizing)s 2311(on)s 2611(the)s 2962(f)s 2(act)k 3381(that)s 3802(documents)s 4893(are)s 5243(formatted)s 6232(repeatedly)s 7284(during)s 7965(the)s 8317(drafting)s 0 534(process.)m 868(All)s 1214(tagged)s 1897(in)s 9(v)k 4(ocations)k 3024(are)s 3358(copied)s 4040(to)s 4266(an)s 4535(auxiliary)s 5425(\207le)s 5772(during)s 6437(the)s 6771(\207rst)s 7189(run,)s 7601(and)s 7992(inde)s 3(x)k 3(ed)k 8788(for)s 0 246(quick)m 593(retrie)s 6(v)k 6(al)k 1429(on)s 1725(the)s 2072(second.)s 2901(A)s 3130(ne)s 6(w)k 3576(auxiliary)s 4478(\207le)s 4839(is)s 5048(written)s 5780(during)s 6457(the)s 6805(second)s 7527(run,)s 7952(for)s 8289(retrie)s 6(v)k 6(al)k grestore grestore grestore pgsave restore showpage %%Page: 37 38 %%BeginPageSetup %%PageResources: font Times-Roman %%+ font Times-Italic %%+ font Helvetica /pgsave save def %%IncludeResource: font Helvetica /Helveticafnt35 vec2 /Helvetica LoutRecode /fnt35 { /Helveticafnt35 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave 0 0 translate 240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate 9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 1 LoutMargSet grestore 4291 13844(-)m 4419(37)s 4707(-)s 0 13253(on)m 301(the)s 654(third,)s 1217(and)s 1625(so)s 1896(on.)s 2305(Cross)s 2906(references)s 3941(al)s 2(w)k 2(ays)k 4657(lag)s 5007(one)s 5413(run)s 5794(behind)s 6509(the)s 6862(rest)s 7270(of)s 7546(the)s 7899(document;)s 8960(a)s 0 12965(perfect)m 711(cop)s 2(y)k 1217(may)s 1671(be)s 1942(produced)s 2879(by)s 3161(formatting)s 4210(the)s 4547(same)s 5082(v)s 3(ersion)k 5828(twice,)s 6440(e)s 3(xcept)k 7110(in)s 7341(a)s 7495(fe)s 6(w)k 7889(pathological)s 0 12677(cases)m 555(that)s 973(f)s 2(ail)k 1343(to)s 1582(con)s 9(v)k 3(er)k 4(ge.)k 480 12303(Cross)m 1123(referencing)s 2310(in)s 2600(Lout)s 3159(is)s 3416(implemented)s 4769(on)s 5113(top)s 5519(of)s 5837(a)s 6050(simple)s 6790(database)s 7716(system.)s 8591(Each)s 0 12015(database)m 879(is)s 1089(either)s 1692(writable)s 2530(or)s 2790(readable)s 3655(b)s 4(ut)k 4017(not)s 4383(both)s 4867(at)s 5099(once,)s 5658(and)s 6062(holds)s 6633(a)s 6799(set)s 7124(of)s 7395(k)s 2(e)k 3(y-v)k 6(alue)k 8384(entries:)s 0 11727(the)m 348(k)s 2(e)k 3(ys)k 833(are)s 1180(ASCII)s 1861(strings,)s 2605(and)s 3009(the)s 3358(v)s 6(alues)k 4014(are)s 4361(Lout)s 4873(objects,)s 5658(possibly)s 6510(with)s 6992(en)s 9(vironments,)k 8393(written)s 0 11439(in)m 290(Lout)s 850(source.)s 1685(Operations)s 2833(are)s 3227(pro)s 3(vided)k 4181(for)s 4566(writing)s 5357(an)s 5687(entry)s 15(,)k 6318(con)s 9(v)k 3(erting)k 7429(from)s 8001(writable)s 8887(to)s 0 11151(readable,)m 916(retrie)s 6(v)k 6(al)k 1753(by)s 2047(k)s 2(e)k 3(y)k 15(,)k 2480(and)s 2884(sequential)s 3908(retrie)s 6(v)k 6(al)k 4745(in)s 4988(k)s 2(e)k 3(y)k 5383(order)s 13(.)k 480 10777(The)m 905(implementation,)s 2509(which)s 3148(is)s 3354(quite)s 3885(unsophisticated,)s 5477(emplo)s 2(ys)k 6334(one)s 6732(or)s 6988(more)s 7532(ASCII)s 240 fnt83 8208 10779(database)m 0 10491(\207les)m 240 fnt82 380 10489(,)m 485(containing)s 1545(the)s 1891(v)s 6(alues,)k 2600(and)s 3001(one)s 3401(ASCII)s 240 fnt83 4078 10491(inde)m 4(x)k 4650(\207le)s 240 fnt82 4992 10489(per)m 5354(database,)s 6282(containing)s 7342(the)s 7688(k)s 2(e)k 3(ys.)k 8283(T)s 19(o)k 8580(write)s 0 10201(an)m 283(entry)s 15(,)k 866(the)s 1214(v)s 6(alue)k 1782(is)s 1992(\207rst)s 2423(appended)s 3399(to)s 3638(a)s 3804(database)s 4683(\207le,)s 5095(then)s 5564(a)s 5730(line)s 6144(lik)s 2(e)k 220 fnt35 480 9700(@Chapter&&intro ch1.ld 57)m 240 fnt82 0 9204(is)m 204(appended)s 1174(to)s 1406(the)s 1748(inde)s 3(x)k 2326(\207le,)s 2731(gi)s 6(ving)k 3384(the)s 3725(\207le)s 4080(and)s 4478(of)s 6(fset)k 5068(where)s 5702(the)s 6043(v)s 6(alue)k 6605(is)s 6809(stored.)s 7550(T)s 19(o)k 7844(con)s 9(v)k 3(ert)k 8602(from)s 0 8916(writable)m 831(to)s 1062(readable,)s 1971(the)s 2311(inde)s 3(x)k 2887(\207le)s 3241(is)s 3443(sorted.)s 4183(Then)s 4725(retrie)s 6(v)k 6(al)k 5554(by)s 5840(k)s 2(e)k 3(y)k 6228(requires)s 7040(a)s 7198(binary)s 7856(search)s 8515(of)s 8778(the)s 0 8628(inde)m 3(x)k 584(\207le)s 945(and)s 1349(one)s 1751(seek)s 2237(into)s 2662(a)s 2828(database)s 3707(\207le,)s 4119(and)s 4523(sequential)s 5547(retrie)s 6(v)k 6(al)k 6384(by)s 6678(k)s 2(e)k 3(y)k 7073(is)s 7283(tri)s 6(vial.)k 480 8254(This)m 945(database)s 1813(system)s 2526(is)s 2725(used)s 3211(in)s 3443(se)s 6(v)k 3(eral)k 4154(w)s 2(ays.)k 4797(F)s 3(or)k 5175(an)s 5447(e)s 3(xternal)k 6257(database,)s 7176(say)s 7538(of)s 7798(bibliographic)s 0 7966(references,)m 1093(the)s 1447(user)s 1912(creates)s 2631(the)s 2985(database)s 3871(\207le)s 4238(of)s 4516(v)s 6(alues)k 5178(\(without)s 6054(en)s 9(vironments\),)k 7540(Lout)s 8058(creates)s 8778(the)s 0 7678(inde)m 3(x)k 587(\207le)s 951(whene)s 6(v)k 3(er)k 1935(it)s 2130(cannot)s 2831(\207nd)s 3265(one,)s 3721(and)s 4128(retrie)s 6(v)k 6(als)k 5057(by)s 5354(k)s 2(e)k 3(y)k 5752(proceed)s 6570(as)s 6823(usual.)s 7495(Cross)s 8095(references)s 0 7390(with)m 476(tags)s 906(other)s 1451(than)s 220 fnt35 1913 7387(preceding)m 240 fnt82 2918 7390(and)m 220 fnt35 3316 7387(f)m 6(ollo)k 3(wing)k 240 fnt82 4200 7390(are)m 4540(treated)s 5241(as)s 5485(described)s 6453(abo)s 3(v)k 3(e,)k 7119(by)s 7407(writing)s 8144(all)s 8430(tagged)s 0 7102(in)m 9(v)k 4(ocations)k 1131(\(with)s 1681(en)s 9(vironments\))k 3092(to)s 3320(a)s 3475(single)s 4092(database,)s 5011(which)s 5643(is)s 5842(con)s 9(v)k 3(erted)k 6820(to)s 7049(readable)s 7903(at)s 8125(the)s 8462(end)s 8855(of)s 0 6814(the)m 334(run)s 695(for)s 1018(retrie)s 6(v)k 6(als)k 1930(on)s 2212(the)s 2545(ne)s 3(xt)k 3000(run.)s 3468(Sorted)s 4135(g)s 1(alle)k 3(ys,)k 4900(such)s 5382(as)s 5617(inde)s 3(x)k 6186(entries,)s 6915(are)s 7247(written)s 7965(out)s 8316(inde)s 3(x)k 3(ed)k 0 6526(by)m 307(tar)s 4(get)k 920(and)s 1337(k)s 2(e)k 3(y)k 1746(and)s 2163(retrie)s 6(v)k 3(ed)k 3074(sequentially)s 4297(on)s 4607(the)s 4969(ne)s 3(xt)k 5451(run.)s 5948(Unsorted)s 6896(g)s 1(alle)k 3(ys)k 7634(with)s 8130(preceding)s 0 6238(tar)m 4(gets)k 684(which)s 1327(pop)s 1741(of)s 6(f)k 2086(the)s 2435(top)s 2795(of)s 3067(the)s 3416(root)s 3863(g)s 1(alle)k 3(y)k 4498(without)s 5290(\207nding)s 6023(a)s 6190(tar)s 4(get,)k 6837(such)s 7334(as)s 7585(entries)s 8273(in)s 8518(tables)s 0 5950(of)m 274(contents,)s 1181(are)s 1532(treated)s 2242(similarly)s 15(,)k 3186(e)s 3(xcept)k 3870(that)s 4291(the)s 3(y)k 4758(are)s 5108(inde)s 3(x)k 3(ed)k 5922(by)s 6219(tar)s 4(get)k 6821(and)s 7229(a)s 7398(sequence)s 8335(number)s 0 5662(that)m 418(preserv)s 3(es)k 1368(their)s 1865(relati)s 6(v)k 3(e)k 2627(order)s 3191(during)s 3869(the)s 4217(sort.)s 480 5288(When)m 1107(Lout)s 1617(processes)s 2581(a)s 2745(multi-\207le)s 3687(document,)s 4735(one)s 5135(cross)s 5674(reference)s 6615(database)s 7492(\207le)s 7850(is)s 8058(written)s 8788(for)s 0 5000(each)m 504(input)s 1065(\207le,)s 1486(b)s 4(ut)k 1858(the)s 3(y)k 2330(share)s 2899(a)s 3074(common)s 3979(inde)s 3(x)k 4572(\207le.)s 5050(At)s 5358(end)s 5772(of)s 6052(run,)s 6487(the)s 6844(ne)s 6(w)k 7301(inde)s 3(x)k 7894(\207le)s 8264(is)s 8484(sorted)s 0 4712(and)m 404(mer)s 4(ged)k 1176(with)s 1658(the)s 2007(old)s 2371(one)s 2774(in)s 3017(such)s 3514(a)s 3680(w)s 2(ay)k 4132(as)s 4383(to)s 4622(preserv)s 3(e)k 5485(entries)s 6172(relating)s 6955(to)s 7194(\207les)s 7644(not)s 8010(read)s 8480(on)s 8778(the)s 0 4424(current)m 737(run.)s 1221(This)s 1699(pro)s 3(vides)k 2572(some)s 3135(support)s 3914(for)s 4254(piecemeal)s 5278(formatting,)s 6395(b)s 4(ut)k 6758(e)s 6(v)k 3(entually)k 7801(the)s 8150(\207les)s 8601(must)s 0 4136(all)m 293(be)s 575(formatted)s 1561(together)s 13(.)k 480 3762(When)m 1120(a)s 220 fnt35 1297 3759(preceding)m 240 fnt82 2319 3762(or)m 220 fnt35 2590 3759(f)m 6(ollo)k 3(wing)k 240 fnt82 3491 3762(cross)m 4044(reference)s 4998(is)s 5220(found,)s 5897(it)s 6100(is)s 6321(attached)s 7187(to)s 7437(a)s 7614(g)s 1(alle)k 3(y)k 8259(inde)s 3(x)k 8855(of)s 0 3474(type)m 240 fnt83 474 3476(CR)m 9(OSS_PREC)k 240 fnt82 1973 3474(or)m 240 fnt83 2238 3476(CR)m 9(OSS_FOLL)k 240 fnt82 3653 3474(,)m 3766(together)s 4615(with)s 5103(an)s 5392(automatically)s 6752(generated)s 7745(tag)s 8097(composed)s 0 3186(of)m 258(the)s 593(current)s 1316(\207le)s 1663(name)s 2224(and)s 2615(a)s 2767(sequence)s 3687(number)s 13(.)k 4556(When)s 5172(a)s 5324(tagged)s 6007(in)s 9(v)k 4(ocation)k 7048(is)s 7244(found,)s 7897(it)s 8076(is)s 8272(attached)s 0 2898(to)m 237(a)s 240 fnt83 401 2900(CR)m 9(OSS_T)k 12(ARG)k 240 fnt82 1875 2898(inde)m 3(x.)k 2565(These)s 3190(g)s 1(alle)k 3(y)k 3822(inde)s 3(x)k 3(es)k 4595(are)s 4940(carried)s 5658(along)s 6241(through)s 7040(the)s 7386(dynamic)s 8261(tree,)s 8722(and)s 0 2610(e)m 6(v)k 3(entually)k 1049(pop)s 1470(of)s 6(f)k 1822(the)s 2178(top)s 2545(of)s 2824(the)s 3180(root)s 3633(g)s 1(alle)k 3(y)k 15(,)k 4313(at)s 4553(which)s 5203(point)s 5763(it)s 5963(is)s 6181(easy)s 6668(to)s 6915(determine)s 7934(which)s 8584(cross)s 0 2322(references)m 1029(refer)s 1536(to)s 1773(which)s 2413(in)s 9(v)k 4(ocations,)k 3608(since)s 4153(the)s 4499(inde)s 3(x)k 3(es)k 5273(are)s 5618(no)s 6(w)k 6077(in)s 6318(\207nal)s 6796(printed)s 7529(document)s 8531(order)s 13(.)k 0 2034(Each)m 541(referenced)s 1613(in)s 9(v)k 4(ocation)k 2674(is)s 2891(then)s 3367(written)s 4107(to)s 4353(the)s 4708(cross)s 5257(reference)s 6207(database,)s 7144(multiply)s 8015(inde)s 3(x)k 3(ed)k 8832(by)s 0 1746(the)m 344(generated)s 1327(tags)s 1758(of)s 2025(the)s 2369(associated)s 3404(cross)s 3942(references.)s 5082(On)s 5427(the)s 5771(ne)s 3(xt)k 6236(run,)s 6657(when)s 7229(the)s 7573(same)s 220 fnt35 8115 1743(preceding)m 240 fnt82 0 1458(and)m 220 fnt35 408 1455(f)m 6(ollo)k 3(wing)k 240 fnt82 1302 1458(cross)m 1848(references)s 2883(are)s 3234(found,)s 3904(chances)s 4716(are)s 5067(good)s 5609(that)s 6031(the)s 6383(same)s 6934(tags)s 7374(will)s 7804(be)s 8090(generated,)s 0 1170(and)m 404(the)s 752(appropriate)s 1896(v)s 6(alues)k 2552(can)s 2941(be)s 3223(retrie)s 6(v)k 3(ed)k 4120(from)s 4644(the)s 4992(database)s 5871(immediately)s 15(.)k 480 796(This)m 982(approach)s 1942(w)s 2(as)k 2389(the)s 2763(genesis)s 3544(of)s 3842(the)s 220 fnt35 4216 793(@T)m 26(agged)k 240 fnt82 5231 796(operator)m 9(,)k 6151(whose)s 6845(implementation)s 8428(is)s 8665(no)s 6(w)k 0 508(immediate:)m 1106(for)s 1436(each)s 220 fnt35 1923 505(@T)m 26(agged)k 240 fnt82 2903 508(operator)m 3751(we)s 4078(produce)s 4897(one)s 240 fnt83 5290 510(CR)m 9(OSS_PREC)k 240 fnt82 6775 508(or)m 240 fnt83 7026 510(CR)m 9(OSS_FOLL)k 240 fnt82 8492 508(g)m 1(alle)k 3(y)k 0 220(inde)m 3(x,)k 645(replacing)s 1596(the)s 1953(generated)s 2949(tag)s 3304(with)s 3795(the)s 4152(right)s 4672(parameter)s 5696(of)s 5976(the)s 220 fnt35 6333 217(@T)m 26(agged)k 240 fnt82 7331 220(operator)m 13(.)k 8288(Nothing)s grestore grestore grestore pgsave restore showpage %%Page: 38 39 %%BeginPageSetup %%PageResources: font Times-Roman %%+ font Times-Bold %%+ font Times-Italic /pgsave save def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave 0 0 translate 240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate 9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 0 LoutMargSet grestore 4291 13844(-)m 4419(38)s 4706(-)s 0 13253(more)m 547(is)s 757(required.)s 240 fnt84 0 12460(7.)m 291(Conclusion)s 240 fnt82 480 12028(Since)m 1054(its)s 1316(public)s 1953(release)s 2657(in)s 2886(October)s 3702(1991,)s 4275(the)s 4609(Basser)s 5292(Lout)s 5790(interpreter)s 6829(has)s 7185(been)s 7680(ported)s 8335(without)s 0 11740(incident)m 819(to)s 1047(a)s 1202(wide)s 1712(v)s 6(ariety)k 2412(of)s 2672(Unix)s 3195(systems)s 3992(and)s 4385(hardw)s 2(are.)k 5425(It)s 5619(w)s 2(as)k 6029(tested)s 6633(e)s 3(xtensi)k 6(v)k 3(ely)k 7753(before)s 8408(release)s 0 11452(on)m 293(its)s 565(o)s 6(wn)k 1025(documentation,)s 2549(and)s 2949(the)s 3293(fe)s 6(w)k 3695(minor)s 4321(b)s 4(ugs)k 4817(which)s 5455(ha)s 4(v)k 3(e)k 5952(emer)s 4(ged)k 6824(since)s 7367(then)s 7832(ha)s 4(v)k 3(e)k 8329(all)s 8617(been)s 0 11164(\207x)m 3(ed)k 534(in)s 777(the)s 1125(second)s 1848(release,)s 2617(scheduled)s 3632(to)s 3871(appear)s 4568(in)s 4811(mid-1992.)s 480 10790(Se)m 6(v)k 3(en)k 1105(substantial)s 2173(packages)s 3093(of)s 3355(de\207nitions)s 4407(are)s 4746(distrib)s 4(uted)k 5813(with)s 6286(Basser)s 6975(Lout.)s 7582(The)s 8001(Document)s 8998(-)s 0 10502(Layout)m 748(package,)s 1649(and)s 2063(its)s 2349(v)s 6(ariants)k 3160(ReportLayout)s 4560(and)s 4974(BookLayout,)s 6289(pro)s 3(vide)k 7083(the)s 7441(standard)s 8320(features)s 0 10214(that)m 411(all)s 696(documents)s 1776(require:)s 2610(pages,)s 3254(columns,)s 4165(paragraphs,)s 5313(headings,)s 6263(footnotes,)s 7252(\210oating)s 8028(\207gures)s 8722(and)s 0 9926(tables,)m 683(chapters)s 1550(and)s 1973(sections,)s 2870(displays)s 3724(and)s 4148(lists,)s 4658(access)s 5339(to)s 5597(bibliographic)s 6945(databases,)s 7987(cross)s 8549(refer)s 8998(-)s 0 9638(ences,)m 623(and)s 1012(so)s 1263(on)s 1545([11].)s 2092(The)s 2505(BookLayout)s 3748(package)s 4572(has)s 4927(e)s 3(xtra)k 5446(features)s 6237(needed)s 6958(by)s 7237(books,)s 7902(including)s 8843(an)s 0 9350(automatically)m 1355(generated)s 2343(table)s 2864(of)s 3136(contents,)s 4041(Roman)s 4791(page)s 5300(numbers)s 6176(for)s 6515(the)s 6864(pref)s 2(atory)k 7792(material,)s 8682(run)s 8998(-)s 0 9062(ning)m 468(page)s 965(headers,)s 1790(odd)s 2197(and)s 2589(e)s 6(v)k 3(en)k 3078(page)s 3574(layouts,)s 4361(and)s 4754(a)s 4908(sorted)s 5539(inde)s 3(x.)k 6220(The)s 6637(Eq)s 6949(package)s 7778(formats)s 8546(equa)s 8998(-)s 0 8774(tions,)m 572(and)s 976(P)s 3(as)k 1356(formats)s 2136(P)s 3(ascal)k 2798(programs)s 3752([10];)s 4262(T)s 19(ab)k 4668(formats)s 5448(tables)s 6056([12];)s 6566(and)s 6970(Fig)s 7342(dra)s 3(ws)k 7961(\207gures)s 8663([6].)s 480 8400(The)m 899(non-e)s 3(xpert)k 1983(user)s 2431(who)s 2888(uses)s 3341(these)s 3879(packages)s 4797(percei)s 6(v)k 3(es)k 5732(a)s 5889(system)s 6603(of)s 6865(a)s 7021(standard)s 7880(quite)s 8404(similar)s 0 8112(to)m 246(other)s 804(fully)s 1317(de)s 6(v)k 3(eloped)k 2357(batch)s 2940(formatters,)s 4034(although)s 4936(the)s 5292(interf)s 2(ace)k 6187(is)s 6405(considerably)s 7688(more)s 8243(coherent)s 0 7824(than,)m 525(say)s 15(,)k 942(the)s 1297(trof)s 6(f)k 1792(f)s 2(amily')k 13(s)k 2630([8].)s 3078(The)s 3512(e)s 3(xpert)k 4173(user)s 4637(percei)s 6(v)k 3(es)k 5588(a)s 5760(system)s 6490(which)s 7139(is)s 7355(radically)s 8251(dif)s 6(ferent)k 0 7536(from)m 547(pre)s 6(vious)k 1440(ones,)s 2009(in)s 2276(which)s 2941(a)s 3131(great)s 3691(deal)s 4168(can)s 4580(be)s 4886(achie)s 6(v)k 3(ed)k 5808(v)s 3(ery)k 6308(quickly)s 15(.)k 7198(T)s 19(o)k 7522(tak)s 2(e)k 7997(an)s 8304(e)s 3(xtreme)k 0 7248(e)m 3(xample,)k 936(P)s 3(as)k 1338(w)s 2(as)k 1781(designed,)s 2761(implemented,)s 4138(tested,)s 4825(and)s 5251(documented)s 6501(in)s 6766(one)s 7190(afternoon.)s 8292(Eq)s 8639(took)s 0 6960(about)m 587(a)s 747(week,)s 1353(b)s 4(ut)k 1709(most)s 2229(of)s 2494(that)s 2906(time)s 3380(w)s 2(as)k 3796(spent)s 4355(in)s 4592(marshalling)s 5767(the)s 6110(v)s 6(ast)k 6543(repertoire)s 7520(of)s 7785(mathematical)s 0 6672(symbols,)m 934(and)s 1367(\207ne-tuning)s 2499(the)s 2876(spacing.)s 3800(Most)s 4381(of)s 4681(the)s 5059(ef)s 6(fort)k 5671(seems)s 6335(to)s 6603(go)s 6925(into)s 7379(designing)s 8392(a)s 8588(good)s 0 6384(interf)m 2(ace;)k 944(most)s 1469(symbols)s 2318(are)s 2665(implemented)s 3971(in)s 4214(just)s 4619(one)s 5021(or)s 5280(a)s 5446(fe)s 6(w)k 5852(lines)s 6354(of)s 6625(Lout.)s 480 6010(A)m 698(group)s 1297(of)s 1556(about)s 2135(20)s 2418(satis\207ed)s 3246(non-e)s 3(xpert)k 4327(users)s 4856(has)s 5214(gro)s 6(wn)k 5864(up)s 6145(within)s 6800(the)s 7136(author')s 13(s)k 7944(department,)s 0 5722(mainly)m 703(Honours)s 1563(students)s 2383(with)s 2849(no)s 3127(in)s 9(v)k 3(estment)k 4208(in)s 4436(older)s 4971(systems)s 5764(to)s 5987(hold)s 6456(them)s 6978(back.)s 7579(Basser)s 8260(Lout)s 8756(has)s 0 5434(been)m 511(adv)s 3(ertised)k 1550(on)s 1849(the)s 2199(Internet)s 3003(ne)s 6(ws)k 3542(as)s 3794(a)s 4(v)k 6(ailable)k 4704(via)s 5058(anon)s 3(ymous)k 240 fnt83 6213 5436(ftp)m 240 fnt82 6458 5434(,)m 6567(so)s 6835(the)s 7185(e)s 3(xtent)k 7828(of)s 8101(its)s 8379(outside)s 0 5146(user)m 469(community)s 1624(is)s 1845(hard)s 2339(to)s 2589(g)s 1(auge.)k 3335(About)s 4005(50)s 4311(people)s 5016(ha)s 4(v)k 3(e)k 5528(mailed)s 6247(comments)s 7292(or)s 7562(questions)s 8528(to)s 8778(the)s 0 4858(author;)m 733(man)s 3(y)k 1327(of)s 1608(these)s 2166(people)s 2871(ha)s 4(v)k 3(e)k 3382(ported)s 4062(the)s 4420(program,)s 5348(written)s 6092(small)s 6674(de\207nitions,)s 7802(and)s 8217(modi\207ed)s 0 4570(the)m 348(standard)s 1216(packages.)s 480 4196(Future)m 1160(w)s 2(ork)k 1711(could)s 2301(usefully)s 3125(be)s 3(gin)k 3711(with)s 4194(the)s 4542(impro)s 3(v)k 3(ements)k 5955(suggested)s 6957(in)s 7200(this)s 7596(paper:)s 8294(o)s 3(v)k 3(erlap)k 8998(-)s 0 3908(ping)m 489(spanning)s 1418(columns,)s 2346(better)s 2960(semantics)s 3964(for)s 4312(a)s 4(v)k 6(ailable)k 5231(space,)s 5880(and)s 6294(especially)s 7314(horizontal)s 8349(g)s 1(alle)k 3(ys.)k 0 3620(Support)m 814(for)s 1147(non-)s 1575(European)s 2544(languages)s 3547(is)s 3752(also)s 4185(needed.)s 5022(Ho)s 6(we)k 6(v)k 3(er)k 9(,)k 5977(the)s 6320(main)s 6850(task)s 7291(is)s 7496(the)s 7839(de)s 6(v)k 3(elopment)k 0 3332(of)m 271(an)s 553(interacti)s 6(v)k 3(e)k 1607(document)s 2610(editor)s 3227(based)s 3829(on)s 4126(Lout.)s 4741(A)s 4971(structure)s 5861(editor)s 6478(similar)s 7199(to)s 7438(Lilac)s 7980([13],)s 8484(which)s 0 3044(already)m 753(has)s 1119(objects)s 1843(and)s 2243(user)s 4(-)k 2705(de\207ned)s 3463(symbols,)s 4364(is)s 4570(en)s 9(visaged;)k 5626(since)s 6168(cross)s 6706(references)s 7733(are)s 8076(easy)s 8550(when)s 0 2756(the)m 343(whole)s 979(document)s 1978(is)s 2182(a)s 4(v)k 6(ailable,)k 3136(the)s 3479(only)s 3954(major)s 4565(ne)s 6(w)k 5007(problem)s 5859(is)s 6064(the)s 6406(treatment)s 7362(of)s 7628(g)s 1(alle)k 3(ys,)k 8402(includ)s 8998(-)s 0 2468(ing)m 359(the)s 707(e)s 3(xpansion)k 1732(and)s 2136(retraction)s 3107(of)s 3378(recepti)s 6(v)k 3(e)k 4300(symbols.)s 240 fnt84 0 1719(Note.)m 240 fnt82 657 1720(Since)m 1253(the)s 1610(abo)s 3(v)k 3(e)k 2240(w)s 2(as)k 2670(written)s 3412(the)s 3768(author)s 4448(has)s 4827(completed)s 5889(a)s 6064(re)s 6(vised)k 6815(v)s 3(ersion)k 7581(of)s 7861(Basser)s 8567(Lout,)s 0 1432(in)m 243(which)s 885(the)s 1233(problem)s 2090(concerning)s 3206(a)s 4(v)k 6(ailable)k 4114(space)s 4701(mentioned)s 5769(in)s 6012(Section)s 6786(2.5)s 7132(has)s 7502(been)s 8011(resolv)s 3(ed.)k 240 fnt84 0 683(Ackno)m 2(wledgment.)k 240 fnt82 2027 684(The)m 2534(author)s 3283(gratefully)s 4344(ackno)s 6(wledges)k 5824(man)s 3(y)k 6485(v)s 6(aluable)k 7424(discussions)s 8644(with)s 0 396(Douglas)m 862(W)s 22(.)k 1183(Jones,)s 1835(especially)s 2857(during)s 3548(the)s 3909(de)s 6(v)k 3(elopment)k 5209(of)s 5493(the)s 5854(g)s 1(alle)k 3(y)k 6501(abstraction;)s 7674(and)s 8091(also)s 8543(man)s 3(y)k 0 108(helpful)m 732(comments)s 1766(on)s 2063(presentation)s 3288(by)s 3582(the)s 3930(anon)s 3(ymous)k 5083(referee.)s grestore grestore grestore pgsave restore showpage %%Page: 39 40 %%BeginPageSetup %%PageResources: font Times-Roman %%+ font Times-Bold %%+ font Times-Italic /pgsave save def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave 0 0 translate 240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate 9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 1 LoutMargSet grestore 4289 13844(-)m 4417(39)s 4708(-)s 240 fnt84 0 12961(Refer)m 4(ences)k 240 fnt82 0 12507(1.)m 480(Kingston,)s 1501(Jef)s 6(fre)k 3(y)k 2244(H..)s 2677(Document)s 3770(F)s 3(ormatting)k 4918(with)s 5436(Lout)s 5888(.)s 6088(T)s 16(ech.)k 6690(Rep.)s 7216(408)s 7659(\(1991\))s 8286(,)s 8429(Basser)s 480 12219(Department)m 1668(of)s 1939(Computer)s 2956(Science,)s 3806(The)s 4234(Uni)s 6(v)k 3(ersity)k 5288(of)s 5559(Sydne)s 3(y)k 15(,)k 6367(Australia)s 7242(.)s 0 11716(2.)m 480(Kingston,)s 1492(Jef)s 6(fre)k 3(y)k 2227(H..)s 2652(A)s 2910(ne)s 6(w)k 3385(approach)s 4347(to)s 4613(document)s 5645(formatting)s 6646(.)s 6838(T)s 16(ech.)k 7432(Rep.)s 7950(412)s 8392(\(1991\))s 9019(,)s 480 11428(Basser)m 1177(Department)s 2365(of)s 2636(Computer)s 3653(Science,)s 4503(The)s 4931(Uni)s 6(v)k 3(ersity)k 5985(of)s 6256(Sydne)s 3(y)k 15(,)k 7064(Australia)s 7939(.)s 0 10925(3.)m 480(Kingston,)s 1491(Jef)s 6(fre)k 3(y)k 2224(H..)s 2647(The)s 3101(Basser)s 3824(Lout)s 4362(Document)s 5445(F)s 3(ormatter)k 6383(,)s 6516(1991)s 6971(.)s 7161(Computer)s 8204(program;)s 480 10637(V)m 26(ersion)k 1287(2)s 1480(publicly)s 2337(a)s 4(v)k 6(ailable)k 3264(in)s 3526(the)s 240 fnt83 3893 10639(pub)m 240 fnt82 4326 10637(subdirectory)m 5595(of)s 5885(the)s 6252(home)s 6859(directory)s 7794(of)s 240 fnt83 8084 10639(ftp)m 240 fnt82 8408 10637(to)m 8667(host)s 240 fnt83 480 10351(ftp.cs.su.oz.au)m 240 fnt82 1924 10349(with)m 2439(login)s 3021(name)s 240 fnt83 3628 10351(anonymous)m 240 fnt82 4808 10349(and)m 5246(no)s 5572(passw)s 2(ord.)k 6671(Distrib)s 4(ution)k 7912(via)s 8297(email)s 8916(is)s 480 10061(a)m 4(v)k 6(ailable)k 1388(for)s 1726(non-)s 240 fnt83 2154 10063(ftp)m 240 fnt82 2459 10061(sites.)m 3047(All)s 3407(enquiries)s 4334(to)s 4573(jef)s 6(f@cs.su.oz.au.)k 0 9558(4.)m 480(Furuta,)s 1211(Richard,)s 2075(Sco\207eld,)s 2965(Jef)s 6(fre)k 3(y)k 15(,)k 3710(and)s 4113(Sha)s 3(w)k 15(,)k 4734(Alan.)s 5363(Document)s 6419(formatting)s 7480(systems:)s 8402(surv)s 3(e)k 3(y)k 15(,)k 480 9270(concepts,)m 1424(and)s 1828(issues)s 2390(.)s 240 fnt83 2554 9272(Computing)m 3673(Surve)s 7(ys)k 240 fnt84 4465 9269(14)m 240 fnt82 4699 9270(,)m 4806(417\211472)s 5700(\(1982\))s 6327(.)s 0 8765(5.)m 480(K)s 6(ernighan,)k 1645(Brian)s 2287(W)s 22(.)k 2649(and)s 3107(Cherry)s 15(,)k 3917(Lorinda)s 4789(L..)s 5213(A)s 5497(system)s 6275(for)s 6667(typesetting)s 7824(mathematics)s 9022(.)s 240 fnt83 480 8479(Communications)m 2158(of)s 2439(the)s 2784(A)s 7(CM)k 240 fnt84 3351 8476(18)m 240 fnt82 3585 8477(,)m 3692(182\211193)s 4576(\(1975\))s 5203(.)s 0 7977(6.)m 480(Kingston,)s 1488(Jef)s 6(fre)k 3(y)k 2218(H..)s 2638(Fig)s 3033(\211)s 3236(a)s 3425(Lout)s 3961(package)s 4824(for)s 5185(dra)s 3(wing)k 6042(\207gures)s 6684(.)s 6871(T)s 16(ech.)k 7460(Rep.)s 7973(411)s 8392(\(1991\))s 9019(,)s 480 7689(Basser)m 1177(Department)s 2365(of)s 2636(Computer)s 3653(Science,)s 4503(The)s 4931(Uni)s 6(v)k 3(ersity)k 5985(of)s 6256(Sydne)s 3(y)k 15(,)k 7064(Australia)s 7939(.)s 0 7184(7.)m 480(Reid,)s 1042(Brian)s 1633(K..)s 2033(A)s 2266(High-)s 2813(Le)s 6(v)k 3(el)k 3406(Approach)s 4410(to)s 4652(Computer)s 5672(Document)s 6732(Production)s 7779(.)s 7946(In)s 240 fnt83 8205 7186(Pr)m 10(oceed)k 240 fnt82 8998 7184(-)m 240 fnt83 480 6898(ings)m 935(of)s 1217(the)s 1564(7th)s 1926(Symposium)s 3074(on)s 3370(the)s 3716(Principles)s 4755(of)s 5037(Pr)s 10(o)k 2(gr)k 3(amming)k 6421(Langua)s 2(g)k 2(es)k 7526(\(POPL\),)s 8376(Las)s 8779(V)s 26(e)k 240 fnt82 8998 6896(-)m 240 fnt83 480 6610(gas)m 868(NV)s 240 fnt82 1192 6608(,)m 1299(pages)s 1895(24\21131)s 2470(,)s 2577(1980)s 3052(.)s 0 6103(8.)m 480(Joseph)s 1207(F)s 19(.)k 1443(Ossanna.)s 2436(Nrof)s 6(f/T)k 8(rof)k 6(f)k 3605(User')s 13(s)k 4284(Manual)s 5010(.)s 5193(T)s 16(ech.)k 5777(Rep.)s 6285(54)s 6597(\(1976\))s 7224(,)s 7349(Bell)s 7821(Laboratories)s 9019(,)s 480 5815(Murray)m 1251(Hill,)s 1729(NJ)s 2051(07974)s 2645(.)s 0 5310(9.)m 480(Knuth,)s 1186(Donald)s 1949(E..)s 240 fnt83 2319 5312(The)m 2731(T)s 2882 5264(E)m 3033 5312(XBook)m 240 fnt82 3675 5310(.)m 3839(Addison-W)s 19(esle)k 3(y)k 5419(,)s 5526(1984)s 6000(.)s 0 4807(10.)m 480(Kingston,)s 1485(Jef)s 6(fre)k 3(y)k 2212(H..)s 2629(Eq)s 2973(\211)s 3173(a)s 3359(Lout)s 3892(package)s 4752(for)s 5110(typesetting)s 6232(mathematics)s 7430(.)s 7614(T)s 16(ech.)k 8200(Rep.)s 8711(410)s 480 4519(\(1991\))m 1107(,)s 1248(Basser)s 1980(Department)s 3203(of)s 3509(Computer)s 4561(Science,)s 5446(The)s 5909(Uni)s 6(v)k 3(ersity)k 6998(of)s 7304(Sydne)s 3(y)k 15(,)k 8147(Australia)s 9022(.)s 480 4231(\(Contains)m 1461(an)s 1744(appendix)s 2677(describing)s 3726(the)s 4074(P)s 3(as)k 4454(P)s 3(ascal)k 5116(formatter)s 13(.\))k 0 3728(11.)m 480(Kingston,)s 1478(Jef)s 6(fre)k 3(y)k 2198(H..)s 2608(A)s 2851(be)s 3(ginners')k 3903(guide)s 4504(to)s 4756(Lout)s 5208(.)s 5385(T)s 16(ech.)k 5964(Rep.)s 6467(409)s 6891(\(1991\))s 7518(,)s 7638(Basser)s 8348(Depart)s 8998(-)s 480 3440(ment)m 1018(of)s 1289(Computer)s 2306(Science,)s 3156(The)s 3584(Uni)s 6(v)k 3(ersity)k 4638(of)s 4909(Sydne)s 3(y)k 15(,)k 5717(Australia)s 6592(.)s 0 2937(12.)m 480(Kingston,)s 1475(Jef)s 6(fre)k 3(y)k 2193(H..)s 2600(T)s 19(ab)k 3017(\211)s 3207(a)s 3384(Lout)s 3907(package)s 4757(for)s 5106(formatting)s 6177(tables)s 6725(.)s 6900(T)s 16(ech.)k 7476(Rep.)s 7977(413)s 8392(\(1991\))s 9019(,)s 480 2649(Basser)m 1177(Department)s 2365(of)s 2636(Computer)s 3653(Science,)s 4503(The)s 4931(Uni)s 6(v)k 3(ersity)k 5985(of)s 6256(Sydne)s 3(y)k 15(,)k 7064(Australia)s 7939(.)s 0 2146(13.)m 480(Brooks,)s 1279(K)s 6(enneth)k 2141(P)s 26(..)k 2472(Lilac:)s 3068(a)s 3234(tw)s 2(o-vie)k 6(w)k 4183(document)s 5187(editor)s 5744(.)s 240 fnt83 5908 2148(IEEE)m 6490(Computer)s 240 fnt82 7453 2146(,)m 7560(7\21119)s 8091(\(1991\))s 8718(.)s grestore grestore grestore pgsave restore showpage %%Trailer %%DocumentNeededResources: font Helvetica %%+ font Symbol %%+ font Times-Roman %%+ font Times-Italic %%+ font Times-Bold %%DocumentSuppliedResources: procset LoutStartUp %%+ procset LoutTabPrependGraphic %%+ procset LoutFigPrependGraphic %%+ procset LoutBasicSetup %%+ encoding vec2 %%Pages: 40 %%EOF