aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJeffrey H. Kingston <jeff@it.usyd.edu.au>2010-09-14 19:36:16 +0000
committerJeffrey H. Kingston <jeff@it.usyd.edu.au>2010-09-14 19:36:16 +0000
commita0423a5c6e7ae16023d22892ce2124989745c7a1 (patch)
tree26e8947ef0a82e8150e46ebd0b257ec5cd13c0ed
parent71bdb35d52747e6d7d9f55df4524d57c2966be94 (diff)
downloadlout-a0423a5c6e7ae16023d22892ce2124989745c7a1.tar.gz
Lout 3.18 tag.3.18
git-svn-id: http://svn.savannah.nongnu.org/svn/lout/tags/3.18@6 9365b830-b601-4143-9ba8-b4a8e2c3339c
-rw-r--r--doc/design/outfile.ps11727
-rw-r--r--doc/expert/README2
-rw-r--r--doc/expert/all6
-rw-r--r--doc/expert/det_gall33
-rw-r--r--doc/expert/det_lexi11
-rw-r--r--doc/expert/det_size17
-rw-r--r--doc/expert/mydefs5
-rw-r--r--doc/expert/outfile.ps15746
-rw-r--r--doc/expert/pre1
-rw-r--r--doc/expert/pre_outl21
-rw-r--r--doc/expert/pre_yuni9
-rw-r--r--doc/expert/preface2
-rw-r--r--doc/slides/README2
-rw-r--r--doc/slides/outfile.ps4470
-rw-r--r--doc/user/README10
-rw-r--r--doc/user/all7
-rw-r--r--doc/user/ap_qck2
-rw-r--r--doc/user/bas_lang1
-rw-r--r--doc/user/bgr1
-rw-r--r--doc/user/bgr_outl16
-rw-r--r--doc/user/cpp89
-rw-r--r--doc/user/cpp_chan40
-rw-r--r--doc/user/cpp_comm31
-rw-r--r--doc/user/cpp_eiff42
-rw-r--r--doc/user/cpp_embe144
-rw-r--r--doc/user/cpp_erro39
-rw-r--r--doc/user/cpp_lone23
-rw-r--r--doc/user/cpp_opti105
-rw-r--r--doc/user/cpp_pipe57
-rw-r--r--doc/user/cpp_prog35
-rw-r--r--doc/user/cpp_tabs34
-rw-r--r--doc/user/dia10
-rw-r--r--doc/user/dia_node51
-rw-r--r--doc/user/dia_summ99
-rw-r--r--doc/user/dia_synt573
-rw-r--r--doc/user/equ_summ5
-rw-r--r--doc/user/johnson19
-rw-r--r--doc/user/johnson.out66
-rw-r--r--doc/user/mydefs13
-rw-r--r--doc/user/preface4
-rw-r--r--doc/user/tbl7
-rw-r--r--doc/user/tbl_alig31
-rw-r--r--doc/user/tbl_inde13
-rw-r--r--doc/user/tbl_mark2
-rw-r--r--doc/user/tbl_plai63
-rw-r--r--doc/user/tbl_span12
-rw-r--r--doc/user/tbl_summ6
-rw-r--r--doc/user/vcpp1
-rw-r--r--externs.h207
-rw-r--r--hyph/old.italian.lh135
-rw-r--r--hyph/portugal.lh104
-rw-r--r--include/README18
-rw-r--r--include/blue71
-rw-r--r--include/bluef275
-rw-r--r--include/book11
-rw-r--r--include/bsf.lpg1
-rw-r--r--include/cprint7
-rw-r--r--include/cprintf251
-rw-r--r--include/diag286
-rw-r--r--include/diagf2648
-rw-r--r--include/doc9
-rw-r--r--include/dsf14
-rw-r--r--include/eiffel71
-rw-r--r--include/eiffelf274
-rw-r--r--include/eqf233
-rw-r--r--include/langdefs1
-rw-r--r--include/picture9
-rw-r--r--include/progf259
-rw-r--r--include/report12
-rw-r--r--include/reportf6
-rw-r--r--include/slides9
-rw-r--r--include/tblf8
-rw-r--r--makefile53
-rw-r--r--man/prg2lout.1135
-rw-r--r--man/prg2lout.txt96
-rw-r--r--maps/LtLatin2.LCM4
-rw-r--r--prg2lout.c1832
-rw-r--r--software/lout.eiffel36
-rw-r--r--whatsnew18
-rw-r--r--z01.c7
-rw-r--r--z02.c8
-rw-r--r--z03.c4
-rw-r--r--z04.c7
-rw-r--r--z05.c7
-rw-r--r--z06.c16
-rw-r--r--z07.c8
-rw-r--r--z08.c36
-rw-r--r--z09.c10
-rw-r--r--z10.c4
-rw-r--r--z11.c4
-rw-r--r--z12.c17
-rw-r--r--z13.c10
-rw-r--r--z14.c30
-rw-r--r--z15.c4
-rw-r--r--z16.c4
-rw-r--r--z17.c10
-rw-r--r--z18.c5
-rw-r--r--z19.c4
-rw-r--r--z20.c4
-rw-r--r--z21.c5
-rw-r--r--z22.c5
-rw-r--r--z23.c12
-rw-r--r--z24.c99
-rw-r--r--z25.c7
-rw-r--r--z26.c7
-rw-r--r--z27.c4
-rw-r--r--z28.c4
-rw-r--r--z29.c6
-rw-r--r--z30.c4
-rw-r--r--z31.c7
-rw-r--r--z32.c5
-rw-r--r--z33.c4
-rw-r--r--z34.c4
-rw-r--r--z35.c4
-rw-r--r--z36.c6
-rw-r--r--z37.c4
-rw-r--r--z38.c7
-rw-r--r--z39.c4
-rw-r--r--z40.c4
-rw-r--r--z41.c7
-rw-r--r--z42.c4
-rw-r--r--z43.c4
-rw-r--r--z44.c8
-rw-r--r--z45.c4
-rw-r--r--z46.c5
-rw-r--r--z47.c4
-rw-r--r--z48.c7
127 files changed, 8210 insertions, 33030 deletions
diff --git a/doc/design/outfile.ps b/doc/design/outfile.ps
deleted file mode 100644
index 3f7525a..0000000
--- a/doc/design/outfile.ps
+++ /dev/null
@@ -1,11727 +0,0 @@
-%!PS-Adobe-3.0
-%%Creator: Basser Lout Version 3.17 (September 1999)
-%%CreationDate: Fri Sep 17 11:56:58 1999
-%%DocumentData: Binary
-%%DocumentNeededResources: (atend)
-%%DocumentMedia: Plain 595 842 0 white ()
-%%DocumentSuppliedResources: (atend)
-%%Pages: (atend)
-%%BoundingBox: 0 0 595 842
-%%EndComments
-
-%%BeginProlog
-%%BeginResource: procset LoutStartUp
-/m { 3 1 roll moveto show } bind def
-/s { exch currentpoint exch pop moveto show } bind def
-/k { exch neg 0 rmoveto show } 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 /usr/staff/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 /usr/staff/jeff/lout.lib/include/figf.lpg
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% %
-% PostScript @SysPrependGraphic file for @Fig Jeffrey H. Kingston %
-% Version 2.0 (includes CIRCUM label) January 1992 %
-% %
-% To assist in avoiding name clashes, the names of all symbols %
-% defined here begin with "lfig". However, this is not feasible %
-% with user-defined labels and some labels used by users. %
-% %
-% <point> is two numbers, a point. %
-% <length> is one number, a length %
-% <angle> is one number, an angle in degrees %
-% <dashlength> is one number, the preferred length of a dash %
-% %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-errordict begin
- /handleerror
- {
- { /Times-Roman findfont 8 pt scalefont setfont
- 0 setgray 4 pt 4 pt moveto
- $error /errorname get
- dup lfigdict exch known
- { lfigdict exch get }
- { 30 string cvs } ifelse
- show
- ( Command: ) show
- $error /command get 30 string cvs show
- } stopped {} if
- showpage stop
- } def
-end
-
-% concat strings: <string> <string> lfigconcat <string>
-% must be defined outside lfigdict since used in lfigpromotelabels
-/lfigconcat
-{ 2 copy length exch length add string
- dup 0 4 index putinterval
- dup 3 index length 3 index putinterval
- 3 1 roll pop pop
-} def
-
-% <string> lfigdebugprint -
-% must be defined outside lfigdict since used in arbitrary places
-% /lfigdebugprint
-% { print
-% (; operand stack:\n) print
-% count copy
-% count 2 idiv
-% { ==
-% (\n) print
-% } repeat
-% (\n) print
-% } def
-
-/lfigdict 120 dict def
-lfigdict begin
-
-% error messages
-/dictfull (dictfull error: too many labels?) def
-/dictstackoverflow (dictstackoverflow error: labels nested too deeply?) def
-/execstackoverflow (execstackoverflow error: figure nested too deeply?) def
-/limitcheck (limitcheck error: figure nested too deeply or too large?) def
-/syntaxerror (syntaxerror error: syntax error in text of figure?) def
-/typecheck (typecheck error: syntax error in text of figure?) def
-/undefined (undefined error: unknown or misspelt label?) def
-/VMError (VMError error: run out of memory?) def
-
-% push pi onto stack: - lfigpi <num>
-/lfigpi 3.14159 def
-
-% arc directions
-/clockwise false def
-/anticlockwise true def
-
-% maximum of two numbers: <num> <num> lfigmax <num>
-/lfigmax { 2 copy gt { pop } { exch pop } ifelse } def
-
-% minimum of two numbers: <num> <num> lfigmin <num>
-/lfigmin { 2 copy lt { pop } { exch pop } ifelse } def
-
-% add two points: <point> <point> lfigpadd <point>
-/lfigpadd { exch 3 1 roll add 3 1 roll add exch } def
-
-% subtract first point from second: <point> <point> lfigpsub <point>
-/lfigpsub { 3 2 roll sub 3 1 roll exch sub exch } def
-
-% max two points: <point> <point> lfigpmax <point>
-/lfigpmax { exch 3 1 roll lfigmax 3 1 roll lfigmax exch } def
-
-% min two points: <point> <point> lfigpmin <point>
-/lfigpmin { exch 3 1 roll lfigmin 3 1 roll lfigmin exch } def
-
-% scalar multiplication: <point> <num> lfigpmul <point>
-/lfigpmul { dup 3 1 roll mul 3 1 roll mul exch } def
-
-% point at angle and distance: <point> <length> <angle> lfigatangle <point>
-/lfigatangle { 2 copy cos mul 3 1 roll sin mul lfigpadd } def
-
-% angle from one point to another: <point> <point> lfigangle <angle>
-/lfigangle { lfigpsub 2 copy 0 eq exch 0 eq and {pop} {exch atan} ifelse } def
-
-% distance between two points: <point> <point> lfigdistance <length>
-/lfigdistance { lfigpsub dup mul exch dup mul add sqrt } def
-
-% difference in x coords: <point> <point> lfigxdistance <length>
-/lfigxdistance { pop 3 1 roll pop sub } def
-
-%difference in y coords: <point> <point> lfigydistance <length>
-/lfigydistance { 3 1 roll pop sub exch pop } def
-
-% stroke a solid line: <length> <dashlength> lfigsolid -
-/lfigsolid
-{ pop pop [] 0 setdash stroke
-} def
-
-% stroke a lfigdashed line: <length> <dashlength> lfigdashed -
-/lfigdashed
-{ 2 copy div 2 le 1 index 0 le or
- { exch pop 1 pt lfigmax [ exch dup ] 0 setdash }
- { dup [ exch 4 2 roll 2 copy div
- 1 sub 2 div ceiling dup 4 1 roll
- 1 add mul sub exch div ] 0 setdash
- } ifelse stroke
-} def
-
-% stroke a lfigcdashed line: <length> <dashlength> lfigcdashed -
-/lfigcdashed
-{ 2 copy le 1 index 0 le or
- { exch pop 1 pt lfigmax [ exch dup ] dup 0 get 2 div setdash }
- { dup [ 4 2 roll exch 2 copy exch div
- 2 div ceiling div 1 index sub
- ] exch 2 div setdash
- } ifelse stroke
-} def
-
-% stroke a dotted line: <length> <dashlength> lfigdotted -
-/lfigdotted
-{ 2 copy le 1 index 0 le or
- { exch pop 1 pt lfigmax [ exch 0 exch ] 0 setdash }
- { 1 index exch div ceiling div
- [ 0 3 2 roll ] 0 setdash
- } ifelse stroke
-} def
-
-% stroke a noline line: <length> <dashlength> lfignoline -
-/lfignoline
-{ pop pop
-} def
-
-% painting (i.e. filling): - lfigwhite - (etc.)
-/lfignopaint { } def
-/lfignochange { fill } def
-/lfigdarkblue { 0.0 0.0 0.5 setrgbcolor fill } def
-/lfigblue { 0.0 0.0 1.0 setrgbcolor fill } def
-/lfiglightblue { 0.5 0.5 1.0 setrgbcolor fill } def
-/lfigdarkgreen { 0.0 0.5 0.0 setrgbcolor fill } def
-/lfiggreen { 0.0 1.0 0.0 setrgbcolor fill } def
-/lfiglightgreen { 0.5 1.0 0.5 setrgbcolor fill } def
-/lfigdarkred { 0.5 0.0 0.0 setrgbcolor fill } def
-/lfigred { 1.0 0.0 0.0 setrgbcolor fill } def
-/lfiglightred { 1.0 0.5 0.5 setrgbcolor fill } def
-/lfigdarkcyan { 0.0 0.5 0.5 setrgbcolor fill } def
-/lfigcyan { 0.0 1.0 1.0 setrgbcolor fill } def
-/lfiglightcyan { 0.5 1.0 1.0 setrgbcolor fill } def
-/lfigdarkmagenta { 0.5 0.0 0.5 setrgbcolor fill } def
-/lfigmagenta { 1.0 0.0 1.0 setrgbcolor fill } def
-/lfiglightmagenta { 1.0 0.5 1.0 setrgbcolor fill } def
-/lfigdarkyellow { 0.5 0.5 0.0 setrgbcolor fill } def
-/lfigyellow { 1.0 1.0 0.0 setrgbcolor fill } def
-/lfiglightyellow { 1.0 1.0 0.5 setrgbcolor fill } def
-/lfigdarkgray { 0.2 0.2 0.2 setrgbcolor fill } def
-/lfiggray { 0.5 0.5 0.5 setrgbcolor fill } def
-/lfiglightgray { 0.8 0.8 0.8 setrgbcolor fill } def
-/lfigdarkgrey { 0.2 0.2 0.2 setrgbcolor fill } def
-/lfiggrey { 0.5 0.5 0.5 setrgbcolor fill } def
-/lfiglightgrey { 0.8 0.8 0.8 setrgbcolor fill } def
-/lfigblack { 0.0 0.0 0.0 setrgbcolor fill } def
-/lfigwhite { 1.0 1.0 1.0 setrgbcolor fill } def
-
-% line caps (and joins, not currently used)
-/lfigbutt 0 def
-/lfiground 1 def
-/lfigprojecting 2 def
-/lfigmiter 0 def
-/lfigbevel 2 def
-
-% shape and labels of the @Box symbol
-/lfigbox
-{
- 0 0 /SW lfigpointdef
- xsize 0 /SE lfigpointdef
- xsize ysize /NE lfigpointdef
- 0 ysize /NW lfigpointdef
- SE 0.5 lfigpmul /S lfigpointdef
- NW 0.5 lfigpmul /W lfigpointdef
- W SE lfigpadd /E lfigpointdef
- S NW lfigpadd /N lfigpointdef
- NE 0.5 lfigpmul /CTR lfigpointdef
- [ CTR NE lfigpsub /lfigboxcircum cvx ] lfigcircumdef
- SW SE NE NW SW
-} def
-
-% shape and labels of the @CurveBox symbol
-/lfigcurvebox
-{
-
- xsize 0.5 mul ysize 0.5 mul /CTR lfigpointdef
- xsize 0.5 mul 0 /S lfigpointdef
- xsize ysize 0.5 mul /E lfigpointdef
- xsize 0.5 mul ysize /N lfigpointdef
- 0 ysize 0.5 mul /W lfigpointdef
-
- xmark 0.293 mul xmark 0.293 mul /SW lfigpointdef
- xsize xmark 0.293 mul sub xmark 0.293 mul /SE lfigpointdef
- xsize xmark 0.293 mul sub ysize xmark 0.293 mul sub /NE lfigpointdef
- xmark 0.293 mul ysize xmark 0.293 mul sub /NW lfigpointdef
-
- [ xsize ysize 0.5 lfigpmul xmark /lfigcurveboxcircum cvx ] lfigcircumdef
-
- xmark 0
- xsize xmark sub 0
- [ xsize xmark sub xmark ]
- xsize xmark
- xsize ysize xmark sub
- [ xsize xmark sub ysize xmark sub ]
- xsize xmark sub ysize
- xmark ysize
- [ xmark ysize xmark sub ]
- 0 ysize xmark sub
- 0 xmark
- [ xmark xmark ]
- xmark 0
-} def
-
-% shadow of the @ShadowBox symbol
-% its shape and labels are done, somewhat inaccurately, with lfigbox
-/lfigshadow
-{ xmark 2 mul 0 moveto xsize 0 lineto
- xsize ysize xmark 2 mul sub lineto
- xsize xmark sub ysize xmark 2 mul sub lineto
- xsize xmark sub xmark lineto
- xmark 2 mul xmark lineto closepath fill
-} def
-
-% shape and labels of the @Square symbol
-/lfigsquare
-{
- xsize ysize 0.5 lfigpmul /CTR lfigpointdef
- CTR xsize xsize ysize ysize lfigpmax 0.5 lfigpmul lfigpadd /NE lfigpointdef
- CTR 0 0 CTR NE lfigdistance 135 lfigatangle lfigpadd /NW lfigpointdef
- CTR 0 0 CTR NE lfigdistance 225 lfigatangle lfigpadd /SW lfigpointdef
- CTR 0 0 CTR NE lfigdistance 315 lfigatangle lfigpadd /SE lfigpointdef
- SW 0.5 lfigpmul SE 0.5 lfigpmul lfigpadd /S lfigpointdef
- NW 0.5 lfigpmul NE 0.5 lfigpmul lfigpadd /N lfigpointdef
- SW 0.5 lfigpmul NW 0.5 lfigpmul lfigpadd /W lfigpointdef
- SE 0.5 lfigpmul NE 0.5 lfigpmul lfigpadd /E lfigpointdef
- [ CTR NE lfigpsub /lfigboxcircum cvx ] lfigcircumdef
- SW SE NE NW SW
-} def
-
-% shape and labels of the @Diamond symbol
-/lfigdiamond
-{
- xsize 0 0.5 lfigpmul /S lfigpointdef
- 0 ysize 0.5 lfigpmul /W lfigpointdef
- S W lfigpadd /CTR lfigpointdef
- CTR W lfigpadd /N lfigpointdef
- CTR S lfigpadd /E lfigpointdef
- [ xsize ysize 0.5 lfigpmul /lfigdiamondcircum cvx ] lfigcircumdef
- S E N W S
-} def
-
-% shape and labels of the @Ellipse symbol
-/lfigellipse
-{
- xsize 0 0.5 lfigpmul /S lfigpointdef
- 0 ysize 0.5 lfigpmul /W lfigpointdef
- S W lfigpadd /CTR lfigpointdef
- CTR W lfigpadd /N lfigpointdef
- CTR S lfigpadd /E lfigpointdef
- CTR xsize 0 0.3536 lfigpmul lfigpadd 0 ysize 0.3536 lfigpmul lfigpadd /NE lfigpointdef
- 0 ysize 0.3536 lfigpmul CTR xsize 0 0.3536 lfigpmul lfigpadd lfigpsub /SE lfigpointdef
- xsize 0 0.3536 lfigpmul CTR lfigpsub 0 ysize 0.3536 lfigpmul lfigpadd /NW lfigpointdef
- 0 ysize 0.3536 lfigpmul xsize 0 0.3536 lfigpmul CTR lfigpsub lfigpsub /SW lfigpointdef
- [ xsize ysize 0.5 lfigpmul /lfigellipsecircum cvx ] lfigcircumdef
- S [ CTR ] E [ CTR ] N [ CTR ] W [ CTR ] S
-} def
-
-% shape and labels of the @Circle symbol
-/lfigcircle
-{
- xsize ysize 0.5 lfigpmul /CTR lfigpointdef
- CTR xsize 0 ysize 0 lfigpmax 0.5 lfigpmul lfigpadd /E lfigpointdef
- CTR 0 0 CTR E lfigdistance 45 lfigatangle lfigpadd /NE lfigpointdef
- CTR 0 0 CTR E lfigdistance 90 lfigatangle lfigpadd /N lfigpointdef
- CTR 0 0 CTR E lfigdistance 135 lfigatangle lfigpadd /NW lfigpointdef
- CTR 0 0 CTR E lfigdistance 180 lfigatangle lfigpadd /W lfigpointdef
- CTR 0 0 CTR E lfigdistance 225 lfigatangle lfigpadd /SW lfigpointdef
- CTR 0 0 CTR E lfigdistance 270 lfigatangle lfigpadd /S lfigpointdef
- CTR 0 0 CTR E lfigdistance 315 lfigatangle lfigpadd /SE lfigpointdef
- [ S E lfigpsub /lfigellipsecircum cvx ] lfigcircumdef
- S [ CTR ] E [ CTR ] N [ CTR ] W [ CTR ] S
-} def
-
-% shape and labels of the @HLine and @HArrow symbols
-/lfighline
-{
- 0 ymark lfigprevious /FROM lfigpointdef
- xsize ymark lfigprevious /TO lfigpointdef
-} def
-
-% shape and labels of the @VLine and @VArrow symbols
-/lfigvline
-{
- xmark ysize lfigprevious /FROM lfigpointdef
- xmark 0 lfigprevious /TO lfigpointdef
-} def
-
-% points of a polygon around base with given no of sides, vert init angle:
-% <sides> <angle> figpolygon <point> ... <point>
-/lfigpolygon
-{ xsize ysize 0.5 lfigpmul /CTR lfigpointdef
- 90 sub CTR 2 copy lfigmax 5 3 roll
- [ 4 copy pop /lfigpolycircum cvx ] lfigcircumdef
- exch dup 360 exch div exch
- 1 1 3 2 roll
- { 4 string cvs (P) exch lfigconcat cvn
- 6 copy pop pop lfigatangle 2 copy 10 2 roll
- 3 2 roll lfigpointdef
- dup 3 1 roll add exch
- } for
- pop lfigatangle
-} def
-
-% next array element: <array> <index> lfiggetnext <array> <index> <any> true
-% or <array> <index> false
-/lfiggetnext
-{ 2 copy exch length ge
- { false }
- { 2 copy get exch 1 add exch true } ifelse
-} def
-
-% check whether thing is number: <any> lfigisnumbertype <any> <bool>
-/lfigisnumbertype
-{ dup type dup
- /integertype eq exch /realtype eq or
-} def
-
-% check whether thing is an array: <any> lfigisarraytype <any> <bool>
-/lfigisarraytype { dup type /arraytype eq } def
-
-% get next item: <array> <index> lfiggetnextitem <array> <index> 0
-% or <array> <index> <array> 1
-% or <array> <index> <point> 2
-/lfiggetnextitem
-{ lfiggetnext
- { lfigisarraytype
- { 1
- }
- { lfigisnumbertype
- { 3 1 roll
- lfiggetnext
- { lfigisnumbertype
- { 4 3 roll exch 2
- }
- { pop 3 2 roll pop 0
- } ifelse
- }
- { 3 2 roll pop 0
- } ifelse
- }
- { pop 0
- } ifelse
- } ifelse
- }
- { 0
- } ifelse
-} def
-
-% set arc path: bool x1 y1 x2 y2 x0 y0 lfigsetarc <angle> <angle> <dist>
-% the path goes from x1 y1 to x2 y2 about centre x0 y0,
-% anticlockwise if bool is true else clockwise.
-% The orientations of backwards pointing and forwards pointing
-% arrowheads are returned in the two angles, and
-% the length of the arc is returned in <dist>.
-/lfigsetarc
-{
- 20 dict begin
- matrix currentmatrix 8 1 roll
- 2 copy translate 2 copy 8 2 roll
- 4 2 roll lfigpsub 6 2 roll lfigpsub
- dup /y1 exch def dup mul /y1s exch def
- dup /x1 exch def dup mul /x1s exch def
- dup /y2 exch def dup mul /y2s exch def
- dup /x2 exch def dup mul /x2s exch def
-
- y1s y2s eq
- { -1
- }
- { y1s x2s mul y2s x1s mul sub y1s y2s sub div
- } ifelse
- /da exch def
-
- x1s x2s eq
- { -1
- }
- { x1s y2s mul x2s y1s mul sub x1s x2s sub div
- } ifelse
- /db exch def
-
- da 0 gt db 0 gt and
- { /LMax da sqrt db sqrt lfigmax def
- /scalex da sqrt LMax div def
- /scaley db sqrt LMax div def
- scalex scaley scale
- 0 0 LMax
- 0 0 x1 scalex mul y1 scaley mul lfigangle
- 0 0 x2 scalex mul y2 scaley mul lfigangle
- 2 copy eq { 360 add } if
- 2 copy 8 2 roll
- 5 index { arc } { arcn } ifelse
- 2 index 1 index
- { 90 sub } { 90 add } ifelse
- dup sin scaley mul exch cos scalex mul atan
- 2 index 2 index
- { 90 add } { 90 sub } ifelse
- dup sin scaley mul exch cos scalex mul atan
- 5 2 roll % res1 res2 ang1 ang2 anticlockwise
- { exch sub } { sub } ifelse
- dup 0 le { 360 add } if lfigpi mul LMax mul 180 div
- }
- { 0 0 x1 y1 lfigdistance 0 0 x2 y2 lfigdistance eq
- 0 0 x1 y1 lfigdistance 0 gt and
- { 0 0
- 0 0 x1 y1 lfigdistance
- 0 0 x1 y1 lfigangle
- 0 0 x2 y2 lfigangle
- 2 copy eq { 360 add } if
- 2 copy 8 2 roll
- 5 index { arc } { arcn } ifelse
- 2 index 1 index
- { 90 sub } { 90 add } ifelse
- 2 index 2 index
- { 90 add } { 90 sub } ifelse
- 5 2 roll % res1 res2 ang1 ang2 clockwise
- { exch sub } { sub } ifelse
- dup 0 le { 360 add } if lfigpi mul 0 0 x1 y1 lfigdistance mul 180 div
- }
- { x2 y2 lineto pop
- x2 y2 x1 y1 lfigangle
- x1 y1 x2 y2 lfigangle
- x1 y1 x2 y2 lfigdistance
- } ifelse
- } ifelse
- 4 -1 roll setmatrix
- end
-} def
-
-% lfigsetcurve: set up a Bezier curve from x0 y0 to x3 y3
-% and return arrowhead angles and length of curve (actually 0)
-% x0 y0 x1 y1 x2 y2 x3 y3 lfigsetcurve <angle> <angle> <length>
-/lfigsetcurve
-{ 8 copy curveto pop pop
- lfigangle
- 5 1 roll
- 4 2 roll lfigangle
- exch
- 0
-} def
-
-% lfigpaintpath: paint a path of the given shape
-% /paint [ shape ] lfigpaintpath -
-/lfigpaintpath
-{
- 10 dict begin
- 0 newpath
- /prevseen false def
- /curveseen false def
- { lfiggetnextitem
- dup 0 eq { pop exit }
- { 1 eq
- { /curveseen true def
- /curve exch def
- curve length 0 eq { /curveseen false def } if
- }
- { /ycurr exch def
- /xcurr exch def
- prevseen
- { curveseen
- { curve length 4 eq
- { xprev yprev
- curve 0 get curve 1 get
- curve 2 get curve 3 get
- xcurr ycurr
- lfigsetcurve pop pop pop
- }
- { xprev yprev xcurr ycurr
- curve length 1 ge { curve 0 get } { 0 } ifelse
- curve length 2 ge { curve 1 get } { 0 } ifelse
- curve length 3 ge { curve 2 get } { true } ifelse
- 7 1 roll
- lfigsetarc pop pop pop
- } ifelse
- }
- { xcurr ycurr lineto
- } ifelse
- }
- { xcurr ycurr moveto
- } ifelse
- /xprev xcurr def
- /yprev ycurr def
- /prevseen true def
- /curveseen false def
- } ifelse
- } ifelse
- } loop pop pop cvx exec
- end
-} def
-
-% stroke a path of the given shape in the given linestyle and dash length.
-% Return the origin and angle of the backward and forward arrow heads.
-% dashlength /linestyle [shape] lfigdopath [<point> <angle>] [<point> <angle>]
-/lfigdopath
-{
- 10 dict begin
- 0
- /prevseen false def
- /curveseen false def
- /backarrow [] def
- /fwdarrow [] def
- {
- lfiggetnextitem
- dup 0 eq { pop exit }
- {
- 1 eq
- { /curveseen true def
- /curve exch def
- curve length 0 eq { /prevseen false def } if
- }
- { /ycurr exch def
- /xcurr exch def
- prevseen
- { newpath xprev yprev moveto
- curveseen
- { curve length 4 eq
- { xprev yprev
- curve 0 get curve 1 get
- curve 2 get curve 3 get
- xcurr ycurr lfigsetcurve
- }
- { xprev yprev xcurr ycurr
- curve length 1 ge { curve 0 get } { 0 } ifelse
- curve length 2 ge { curve 1 get } { 0 } ifelse
- curve length 3 ge { curve 2 get } { true } ifelse
- 7 1 roll
- lfigsetarc
- } ifelse
- }
- { xcurr ycurr lineto
- xcurr ycurr xprev yprev lfigangle dup 180 sub
- xprev yprev xcurr ycurr lfigdistance
- } ifelse
- 6 index 6 index cvx exec
- [ xprev yprev 5 -1 roll ]
- backarrow length 0 eq
- { /backarrow exch def }
- { pop } ifelse
- [ xcurr ycurr 4 -1 roll ] /fwdarrow exch def
- } if
- /xprev xcurr def
- /yprev ycurr def
- /prevseen true def
- /curveseen false def
- } ifelse
- } ifelse
- } loop
- pop pop pop pop
- backarrow length 0 eq { [ 0 0 0 ] } { backarrow } ifelse
- fwdarrow length 0 eq { [ 0 0 0 ] } { fwdarrow } ifelse
- end
-} def
-
-% lfigdoarrow: draw an arrow head of given form
-% dashlength /lstyle /pstyle hfrac height width [ <point> <angle> ] lfigdoarrow -
-/lfigdoarrow
-{ matrix currentmatrix 8 1 roll
- dup 0 get 1 index 1 get translate
- 2 get rotate
- [ 2 index neg 2 index 0 0
- 3 index 3 index neg
- 1 index 10 index mul 0
- 7 index 7 index ]
- 4 1 roll pop pop pop
- dup 3 1 roll
- gsave lfigpaintpath grestore lfigdopath pop pop
- setmatrix
-} def
-
-% arrow head styles
-/lfigopen 0.0 def
-/lfighalfopen 0.5 def
-/lfigclosed 1.0 def
-
-% stroke no arrows, forward, back, and both
-/lfignoarrow { pop pop pop pop pop pop pop pop } def
-/lfigforward { 7 -1 roll lfigdoarrow pop } def
-/lfigback { 8 -2 roll pop lfigdoarrow } def
-/lfigboth { 8 -1 roll 7 copy lfigdoarrow pop 7 -1 roll lfigdoarrow } def
-
-% lfigprevious: return previous point on path
-/lfigprevious
-{ lfigisnumbertype
- { 2 copy }
- { lfigisarraytype
- { 2 index 2 index }
- { 0 0 }
- ifelse
- } ifelse
-} def
-
-% label a point in 2nd top dictionary: <point> /name lfigpointdef -
-/lfigpointdef
-{
- % (Entering lfigpointdef) lfigdebugprint
- [ 4 2 roll transform
- /itransform cvx ] cvx
- currentdict end
- 3 1 roll
- % currentdict length currentdict maxlength lt
- % { def }
- % { exec moveto (too many labels) show stop }
- % ifelse
- def
- begin
- % (Leaving lfigpointdef) lfigdebugprint
-} def
-
-% promote labels from second top to third top dictionary
-% <string> lfigpromotelabels -
-/lfigpromotelabels
-{
- % (Entering lfigpromotelabels) lfigdebugprint
- currentdict end exch currentdict end
- { exch 20 string cvs 2 index
- (@) lfigconcat exch lfigconcat cvn exch def
- } forall pop begin
- % (Leaving lfigpromotelabels) lfigdebugprint
-} def
-
-% show labels (except CIRCUM): - lfigshowlabels -
-/lfigshowlabels
-{
- % (Entering lfigshowlabels) lfigdebugprint
- currentdict end
- currentdict
- { 1 index 20 string cvs (CIRCUM) search % if CIRCUM in key
- { pop pop pop pop pop }
- { pop cvx exec 2 copy
- newpath 1.5 pt 0 360 arc
- 0 setgray fill
- /Times-Roman findfont 8 pt scalefont setfont
- moveto 0.2 cm 0.1 cm rmoveto 20 string cvs show
- }
- ifelse
- } forall
- begin
- % (Leaving lfigshowlabels) lfigdebugprint
-} def
-
-% fix an angle to 0 <= res < 360: <angle> lfigfixangle <angle>
-/lfigfixangle
-{
- % (Entering lfigfixangle) lfigdebugprint
- { dup 0 ge { exit } if
- 360 add
- } loop
- { dup 360 lt { exit } if
- 360 sub
- } loop
- % (Leaving lfigfixangle) lfigdebugprint
-} def
-
-% find point on circumference of box: alpha a b lfigboxcircum x y
-/lfigboxcircum
-{
- % (Entering lfigboxcircum) lfigdebugprint
- 4 dict begin
- /b exch def
- /a exch def
- lfigfixangle /alpha exch def
- 0 0 a b lfigangle /theta exch def
-
- % if alpha <= theta, return (a, a*tan(alpha))
- alpha theta le
- { a a alpha sin mul alpha cos div }
- {
- % else if alpha <= 180 - theta, return (b*cot(alpha), b)
- alpha 180 theta sub le
- { b alpha cos mul alpha sin div b }
- {
- % else if alpha <= 180 + theta, return (-a, -a*tan(alpha))
- alpha 180 theta add le
- { a neg a neg alpha sin mul alpha cos div }
- {
- % else if alpha <= 360 - theta, return (-b*cot(alpha), -b)
- alpha 360 theta sub le
- { b neg alpha cos mul alpha sin div b neg }
- {
- % else 360 - theta <= alpha, return (a, a*tan(alpha))
- a a alpha sin mul alpha cos div
- } ifelse
- } ifelse
- } ifelse
- } ifelse
- end
- % (Leaving lfigboxcircum) lfigdebugprint
-} def
-
-% find quadratic roots (assume a != 0): a b c lfigqroots x1 x2 2
-% or x2 1
-% or 0
-/lfigqroots
-{
- 4 dict begin
- /c exch def
- /b exch def
- /a exch def
- /disc b b mul 4 a c mul mul sub def
- disc 0 lt
- { 0
- }
- { disc 0 eq
- { b neg 2 a mul div
- 1
- }
- { b neg disc sqrt add 2 a mul div
- b neg disc sqrt sub 2 a mul div
- 2
- }
- ifelse
- }
- ifelse
- end
-} def
-
-% work our which quadrant: <angle> lfigquadrant <0-3>
-/lfigquadrant
-{ dup 90 lt
- { pop 0
- }
- { dup 180 lt
- { pop 1
- }
- { 270 lt
- { 2
- }
- { 3
- } ifelse
- } ifelse
- } ifelse
-} def
-
-% find curvebox circum, assuming upper right quadrant: alpha a b xmk lfigcb x y
-/lfigcb
-{
- 6 dict begin
- /xmk exch def
- /b exch def
- /a exch def
- /alpha exch def
- /theta1 0 0 a b xmk sub lfigangle def
- /theta2 0 0 a xmk sub b lfigangle def
- alpha theta1 le
- { % if alpha <= theta1, return (a, a*tan(alpha))
- a a alpha sin mul alpha cos div
- }
- { alpha theta2 ge
- { % else if alpha > theta2, return (b*cot(alpha), b)
- b alpha cos mul alpha sin div b
- }
- {
- % else, return the intersection of line and circle
- a xmk sub b xmk sub xmk 0 0 alpha lfigcircleintersect
- dup 0 eq
- { % should never happen, just return any reasonable point
- pop
- a b 0.5 lfigpmul
- }
- { 1 eq
- { % should never happen, just return the point on top of stack
- }
- { % the usual case, two points on stack, return the larger
- lfigpmax
- } ifelse
- } ifelse
- } ifelse
- } ifelse
- end
-} def
-
-% find point on circumference of curvebox: alpha a b xmk lfigcurveboxcircum x y
-/lfigcurveboxcircum
-{
- % (Entering lfigcurveboxcircum) lfigdebugprint
- 5 dict begin
- /xmk exch def
- /b exch def
- /a exch def
- lfigfixangle /alpha exch def
-
- % work out which quadrant we are in, and reflect accordingly
- /quad alpha lfigquadrant def
- quad 0 eq
- { alpha a b xmk lfigcb
- }
- { quad 1 eq
- { 180 alpha sub a b xmk lfigcb exch neg exch
- }
- { quad 2 eq
- { alpha 180 sub a b xmk lfigcb neg exch neg exch
- }
- { 360 alpha sub a b xmk lfigcb neg
- } ifelse
- } ifelse
- } ifelse
- end
- % (Leaving lfigcurveboxcircum) lfigdebugprint
-} def
-
-% find point on circumference of diamond: alpha a b lfigdiamondcircum x y
-/lfigdiamondcircum
-{
- % (Entering lfigdiamondcircum) lfigdebugprint
- 4 dict begin
- /b exch def
- /a exch def
- lfigfixangle /alpha exch def
- b alpha cos abs mul a alpha sin abs mul add /denom exch def
- a b mul alpha cos mul denom div
- a b mul alpha sin mul denom div
- end
- % (Leaving lfigdiamondcircum) lfigdebugprint
-} def
-
-% find point on circumference of ellipse: alpha a b lfigellipsecircum x y
-/lfigellipsecircum
-{
- % (Entering lfigellipsecircum) lfigdebugprint
- 4 dict begin
- /b exch def
- /a exch def
- lfigfixangle /alpha exch def
- b alpha cos mul dup mul a alpha sin mul dup mul add sqrt /denom exch def
- a b mul alpha cos mul denom div
- a b mul alpha sin mul denom div
- end
- % (Leaving lfigellipsecircum) lfigdebugprint
-} def
-
-% find point of intersection of two lines each defined by two points
-% x1 y1 x2 y2 x3 y3 x4 y4 lfiglineintersect x y
-/lfiglineintersect
-{
- % (Entering lfiglineintersect) lfigdebugprint
- 13 dict begin
- /y4 exch def
- /x4 exch def
- /y3 exch def
- /x3 exch def
- /y2 exch def
- /x2 exch def
- /y1 exch def
- /x1 exch def
- x2 x1 sub /x21 exch def
- x4 x3 sub /x43 exch def
- y2 y1 sub /y21 exch def
- y4 y3 sub /y43 exch def
- y21 x43 mul y43 x21 mul sub /det exch def
-
- % calculate x
- y21 x43 mul x1 mul
- y43 x21 mul x3 mul sub
- y3 y1 sub x21 mul x43 mul add
- det div
-
- % calculate y
- x21 y43 mul y1 mul
- x43 y21 mul y3 mul sub
- x3 x1 sub y21 mul y43 mul add
- det neg div
-
- end
- % (Leaving lfiglineintersect) lfigdebugprint
-} def
-
-% find point on circumference of polygon
-% alpha radius num theta lfigpolycircum x y
-/lfigpolycircum
-{
- % (Entering lfigpolycircum) lfigdebugprint
- 13 dict begin
- /theta exch def
- /num exch def
- /radius exch def
- /alpha exch def
-
- % calculate delta, the angle from theta to alpha
- alpha theta sub lfigfixangle
-
- % calculate the angle which is the multiple of 360/num closest to delta
- 360 num div div truncate 360 num div mul theta add /anglea exch def
-
- % calculate the next multiple of 360/num after anglea
- anglea 360 num div add /angleb exch def
-
- % intersect the line through these two points with the alpha line
- anglea cos anglea sin angleb cos angleb sin
- 0 0 alpha cos 2 mul alpha sin 2 mul
- lfiglineintersect radius lfigpmul
-
- end
- % (Leaving lfigpolycircum) lfigdebugprint
-} def
-
-% find point of intersection of a point and a circle
-% x0 y0 r x1 y1 theta lfigcircleintersect xa ya xb yb 2
-% or xb yb 1
-% or 0
-/lfigcircleintersect
-{
- % (Entering lfigcircleintersect) lfigdebugprint
- 15 dict begin
- /theta exch def
- /y1 exch def
- /x1 exch def
- /r exch def
- /y0 exch def
- /x0 exch def
-
- % if sin(theta) = 0 then line is horizontal and y must be y1
- theta sin abs 0.00001 lt
- {
- /a 1 def
- /b -2 x0 mul def
- /c x0 dup mul y1 y0 sub dup mul add r dup mul sub def
- a b c lfigqroots dup
- 0 eq
- { pop
- 0
- }
- { 1 eq
- { y1 1
- }
- { y1 exch y1 2
- } ifelse
- } ifelse
- }
- {
- /ct theta cos theta sin div def
- /a ct ct mul 1 add def
- /b ct x1 x0 sub mul y1 add y0 sub 2 mul def
- /c x1 x0 sub dup mul y1 y0 sub dup mul add r dup mul sub def
- a b c lfigqroots dup
- 0 eq
- { pop
- 0
- }
- { 1 eq
- { y1 add /yb exch def
- yb y1 sub ct mul x1 add /xb exch def
- xb yb 1
- }
- { y1 add /ya exch def
- ya y1 sub ct mul x1 add /xa exch def
- y1 add /yb exch def
- yb y1 sub ct mul x1 add /xb exch def
- xa ya xb yb 2
- } ifelse
- } ifelse
- } ifelse
- end
- % (Leaving lfigcircleintersect) lfigdebugprint
-} def
-
-% add CIRCUM operator with this body: <array> lfigcircumdef -
-/lfigcircumdef
-{ % (Entering lfigcircumdef) lfigdebugprint
- /CIRCUM exch cvx
- currentdict end
- 3 1 roll
- % currentdict length currentdict maxlength lt
- % { def }
- % { exec moveto (too many labels) show stop }
- % ifelse
- def
- begin
- % (Leaving lfigcircumdef) lfigdebugprint
-} def
-
-end
-%%EndResource
-
-%%BeginResource: procset LoutBasicSetup
-% @PrependGraphic file /usr/staff/jeff/lout.lib/include/bsf.lpg
-
-% width height linethickness louteuro -
-% draw a Euro symbol of this width and height with this line thickness
-% Author: Jeff Kingston, based on code from Andrew Beardsley
-/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
-3901 8775(SUMMAR)m 8(Y)k 240 fnt82 480 8320(Lout)m 992(is)s
-1202(a)s 1367(high-)s 1861(le)s 6(v)k 3(el)k
-2371(language)s 3291(for)s 3628(document)s 4632(formatting,)s 5746(whose)s
-6414(ease)s 6881(of)s 7151(use)s 7526(has)s 7895(permit)s
-8518(-)s 480 8032(ted)m 839(an)s 1131(unprecedented)s 2593(number)s
-3394(of)s 3674(adv)s 6(anced)k 4639(features)s 5454(to)s
-5703(be)s 5994(added)s 6633(quickly)s 7414(and)s 7828(reliably)s 15(.)k
-480 7744(This)m 942(paper)s 1518(charts)s 2125(the)s 2458(e)s 6(v)k 4(olution)k
-3395(of)s 3651(the)s 3985(design)s 4652(and)s 5042(implementation)s
-6584(of)s 6841(Lout)s 7338(from)s 7847(concep)s 8518(-)s
-480 7456(tion)m 913(in)s 1161(mid-)s 1601(1984)s 2139(to)s
-2383(public)s 3038(release)s 3761(in)s 4008(October)s 4843(1991.)s
-5491(It)s 5701(includes)s 6553(e)s 3(xtensi)k 6(v)k 3(e)k
-7505(discussions)s 480 7168(of)m 751(remaining)s 1773(problems)s 2714(and)s
-3118(possible)s 3958(solutions.)s 240 fnt84 480 6664(K)m 6(eyw)k 2(ords)k
-240 fnt82 1623 6665(document)m 2627(formatting)s 3688(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
-
-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(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 0 12965(a)m 166(rectangle:)s 1701 453 567 198 240 288 60 480 12172 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 11719(The)m 442(horizontal)s
-1481(axis,)s 1987(called)s 2630(a)s 240 fnt83 2810 11721(r)m 10(ow)k
-3244(mark)s 240 fnt82 3814 11719(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 11721(column)m 8523(mark)s 240 fnt82
-9019 11719(,)m 0 11431(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 11143(are)m 347(permitted:)s 1984 1189 0 1189 240 288 60 480 9614 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 9163(so)m 266(that)s
-684(objects)s 1412(are)s 1759(able)s 2213(to)s 2452(represent)s
-3387(tables.)s 480 8789(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 8501(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 8213(\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 7925(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 7637(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 7349(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 6975(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 6687(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 6399(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 6111(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 5823(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 5535(more)m 547(uni\207ed)s
-1270(basis)s 1799(for)s 2137(these)s 2684(features.)s 240 fnt84
-0 4936(2.2.)m 471(Grammatical)s 1893(and)s 2334(lexical)s 3039(structur)s 4(e)k
-240 fnt82 480 4504(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 4216(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 3657(\256)m 1332 3324(\256)m 1332 2991(\256)m 1332 2707(\256)m 1332 2374(\256)m
-1332 2080(\256)m 1332 1747(\256)m 1332 1463(\256)m 240 fnt83 480 3665(object)m
-1826(object)s 2498(in\207xop)s 3227(object)s 1826 3332(pr)m 8(e\207xop)k
-2680(object)s 1826 2999(object)m 2498(post\207xop)s 1826 2715(nopar)m 2(sop)k
-1826 2382(liter)m 3(alwor)k 8(d)k 220 fnt35 1826 2083({)m
-240 fnt83 1974 2088(object)m 220 fnt35 2646 2083(})m 240 fnt83
-1826 1755(object)m 2498(object)s 240 fnt82 0 960(where)m 240 fnt83
-640 962(in\207xop)m 240 fnt82 1285 960(,)m 240 fnt83 1391 962(pr)m 8(e\207xop)k
-240 fnt82 2161 960(,)m 240 fnt83 2267 962(post\207xop)m 240 fnt82
-3125 960(,)m 3232(and)s 240 fnt83 3635 962(nopar)m 2(sop)k
-240 fnt82 4591 960(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 672(or)m 255(2)s 424(parameters,)s 1573(as)s 1819(sho)s 6(wn,)k
-2541(and)s 240 fnt83 2940 674(liter)m 3(alwor)k 8(d)k
-240 fnt82 4067 672(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
-
-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 0 13256(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 12968(and)m 404(associati)s 6(vity)k 15(.)k
-480 12594(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 12591({})m 240 fnt82
-6828 12594(,)m 6968(in)s 7245(which)s 7921(an)s 8238(object)s
-8916(is)s 0 12306(missing.)m 907(The)s 1333(v)s 6(alue)k
-1899(of)s 2168(this)s 240 fnt83 2562 12308(empty)m 3187(object)s
-240 fnt82 3833 12306(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 12018(one)m
-402(ro)s 6(w)k 822(mark,)s 1420(that)s 1838(prints)s
-2433(as)s 2683(nothing.)s 480 11644(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 11356(space,)m 671(called)s
-240 fnt83 1333 11358(par)m 3(a)k 2(gr)k 3(aphs)k
-240 fnt82 2439 11356(.)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 11068(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 10780(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 10492(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 10204(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 9830(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 9542(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 9254(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 8966(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 8918(E)m 3456 8966(X)m
-3685([9].)s 480 8592(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 8304(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 8016(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 7728(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 7440(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 7152(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 6778(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 6775(+)m 240 fnt82 0 6490(and)m
-220 fnt35 404 6487(<=)m 240 fnt82 652 6490(.)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 6040(<=++)m 240 fnt82 0 5589(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 5301(its)m
-306(pre\207x)s 3(es)k 1142(in)s 1416(the)s 1795(order)s
-220 fnt35 2390 5298(<=++)m 240 fnt82 2894 5301(,)m 220 fnt35
-3032 5298(<=+)m 240 fnt82 3408 5301(,)m 220 fnt35 3546 5298(<=)m
-240 fnt82 3794 5301(.)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 5013(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 4364(2.3.)m 471(Basic)s
-1073(structural)s 2149(operators)s 240 fnt82 480 3887(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 3599(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 3311(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 3023(re)m 6(vised)k
-742(to)s 981(o)s 3(v)k 3(ercome)k 1974(them.)s
-480 2649(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 2361(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 2073(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 1785(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 1497(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 1123(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 835(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
-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 240 fnt84 472 6199(Figur)m 4(e)k
-1201(1.)s 1492(The)s 1947(23)s 2240(primiti)s 2(v)k 2(e)k
-3233(operators)s 4270(of)s 4542(Lout,)s 5148(in)s 5403(order)s
-6032(of)s 6304(incr)s 4(easing)k 7405(pr)s 4(ecedence.)k
-240 fnt82 0 5562(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 5274(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 4900(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 4897(metempsychosis)m 240 fnt82 7882 4900(,)m 7986(which)s
-8625(ha)s 4(v)k 3(e)k 0 4612(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 4106 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 3655(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 3652(|)m 240 fnt82
-7029 3655(,)m 7173(denoting)s 8102(horizontal)s 0 3367(concatenation.)m 1492(F)s 3(or)k
-1881(e)s 3(xample,)k 220 fnt35 480 2866(USA |0.2i A)m 6(ustr)k 2(alia)k
-240 fnt82 0 2411(produces)m 915(the)s 1263(object)s 476 166 0 57 240 288 60 480 1905 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 1905 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 1454(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 1166(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 1168(gap)m 240 fnt82 5635 1166(attached)m 6497(to)s
-6744(the)s 7101(operator)s 9(,)k 8003(in)s 8254(this)s
-8659(case)s 0 878(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 590(It)m 205(may)s
-671(be)s 953(omitted,)s 1790(def)s 2(aulting)k 2810(to)s
-220 fnt35 3049 587(0i)m 240 fnt82 3205 590(.)m 240 fnt83
-480 218(V)m 26(ertical)k 1294(concatenation)s 240 fnt82 2644 216(,)m
-2762(denoted)s 3590(by)s 3895(the)s 4254(in\207x)s 4760(operator)s
-220 fnt35 5627 213(/)m 240 fnt82 5691 216(,)m 5809(is)s
-6031(the)s 6390(same)s 6948(apart)s 7497(from)s 8032(the)s
-8392(change)s
-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(of)m 271(direction:)s
-220 fnt35 480 12800(A)m 6(ustr)k 2(alia /0.1i USA)k 240 fnt82
-0 12345(produces)m 915(the)s 1263(object)s 875 165 0 56 240 288 60 480 11840 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 11531 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 11080(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 10706(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 10205({)m 1186(USA)s
-2442(|0.2i)s 2958(A)s 6(ustr)k 2(alia)k 3919(})s
-480 9917(/0.1i)m 1000({)s 1186(W)s 8(ashington)k 2442(|)s
-2958(Canberr)s 2(a)k 3987(})s 240 fnt82 0 9418(The)m
-445(tw)s 2(o)k 872(parameters)s 1987(of)s 220 fnt35
-2275 9415(/)m 240 fnt82 2416 9418(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 9130(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 8624 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 8624 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 8624 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 8265 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 8265 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 7814(The)m 220 fnt35
-425 7811(0.2i)m 240 fnt82 821 7814(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 7523(|)m 240 fnt82 96 7526(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 7238(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 6950(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 6662(The)m
-428(precedence)s 1559(of)s 220 fnt35 1830 6659(|)m 240 fnt82
-1927 6662(is)m 2137(higher)s 2808(than)s 3277(the)s 3625(precedence)s
-4756(of)s 220 fnt35 5027 6659(/)m 240 fnt82 5091 6662(,)m
-5198(so)s 5464(the)s 5812(braces)s 6473(could)s 7063(be)s
-7345(omitted.)s 480 6288(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 6000(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 5712(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 5714(gap)m 8459(modes)s 240 fnt82 0 5424(\(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 5421(|0.2i)m 240 fnt82 7366 5424(is)m 7586(an)s 7880(abbre)s 6(viation)k
-0 5136(for)m 220 fnt35 377 5133(|0.2ie)m 240 fnt82 901 5136(,)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 5133(|0.3ix)m
-240 fnt82 6678 5136(produces)m 7632(a)s 7837(0.3)s 8220(inch)s
-8728(g)s 1(ap)k 0 4848(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 4845(|2.5it)m 240 fnt82 8478 4848(places)m 0 4560(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 4272(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 3984(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 3981(r)m 240 fnt82
-6012 3984(unit:)m 6568(one)s 220 fnt35 6987 3981(r)m 240 fnt82
-7138 3984(is)m 7365(the)s 7731(column)s 8524(width)s 0 3696(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 3693(|1r)m -8(t)k
-240 fnt82 4921 3696(produces)m 5835(suf\207cient)s 6783(space)s 7368(to)s
-7606(right)s 8116(justify)s 8778(the)s 0 3408(follo)m 6(wing)k
-987(object,)s 1688(and)s 220 fnt35 2103 3405(|0.5r)m -8(t)k
-240 fnt82 2673 3408(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 3120(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 2832(v)m 3(ertical.)k
-480 2458(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 2170(should)m 697(be)s
-979(visible)s 1672(outside)s 2419(the)s 2767(object:)s gsave
-480 1339 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 888(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 885(@OneRo)m 3(w)k 240 fnt82 5694 888(operator)m 6567(w)s 2(as)k
-7006(introduced)s 8105(for)s 8461(hiding)s 0 600(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
-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
-240 fnt84 0 4610(Figur)m 4(e)k 774(2.)s
-1110(The)s 1610(six)s 1991(gap)s 2462(modes)s 3212(\()s
-240 fnt83 3285 4613(length)m 240 fnt84 3984 4610(is)m 4242(any)s
-4716(length\).)s 5648(Hyphenation)s 7078(mode)s 7737(has)s 8182(an)s
-8537(extra)s 0 4322(pr)m 4(operty)k 955(not)s 1347(sho)s 2(wn)k
-2053(her)s 4(e.)k 240 fnt82 0 3685(mark)m 552(can)s
-941(be)s 1223(chosen)s 1945(by)s 2239(pre\207xing)s 220 fnt35
-3156 3682(^)m 240 fnt82 3322 3685(to)m 3561(the)s 3909(preceding)s
-4905(concatenation)s 6290(operator:)s 220 fnt35 480 3184(@OneRo)m 3(w { X ^/2p @HLine /2p )k 19(Y })k
-240 fnt82 0 2688(has)m 396(the)s 770(desired)s 1545(result,)s
-2208(where)s 220 fnt35 2874 2685(2p)m 240 fnt82 3197 2688(is)m
-3433(tw)s 2(o)k 3870(points)s 4532(and)s 220 fnt35
-4962 2685(@HLine)m 240 fnt82 5836 2688(is)m 6072(an)s 6381(easy)s
-6887(combination)s 8166(of)s 8464(Lout')s 13(s)k 0 2400(graphics)m
-861(operators.)s 1914(A)s 2144(similar)s 2866(operator)s 9(,)k
-220 fnt35 3760 2397(@OneCol)m 240 fnt82 4712 2400(,)m 4819(hides)s
-5375(column)s 6150(marks.)s 480 2026(A)m 728(v)s 6(ariant)k
-1463(of)s 220 fnt35 1753 2023(/)m 240 fnt82 1895 2026(called)m
-220 fnt35 2542 2023(//)m 240 fnt82 2745 2026(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 1738(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 1237(Heading //0.1i)m
-480 949(A |0.2i B /0.1i)m 480 661(C | D)m 240 fnt82 0 206(has)m 370(result)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 480 13253(Heading)m 480 12896(A)m
-938(B)s 480 12590(C)m 938(D)s 0 12136(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 11848(analogous)m 220 fnt35 1029 11845(||)m
-240 fnt82 1191 11848(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 11560(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 11186(The)m 220 fnt35 953 11183(//)m 240 fnt82 1184 11186(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 11183(x // y)m 240 fnt82 8409 11186(can)m 8844(be)s 0 10898(replaced)m
-867(by)s 220 fnt35 480 10397(@OneCol { | x } /)m 480 10109(@OneCol { | y })m 240 fnt82
-0 9611(for)m 338(an)s 3(y)k 734(objects)s 220 fnt35
-1462 9608(x)m 240 fnt82 1629 9611(and)m 220 fnt35 2032 9608(y)m
-240 fnt82 2140 9611(.)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 9608(x)m 240 fnt82 6987 9611(and)m
-7390(hiding)s 8055(all)s 8347(b)s 4(ut)k 8708(that)s
-0 9323(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 9320(x)m 240 fnt82 4723 9323(')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 9035(for)m
-220 fnt35 349 9032(y)m 240 fnt82 457 9035(,)m 575(so)s
-852(the)s 220 fnt35 1211 9032(/)m 240 fnt82 1347 9035(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 8747(indistinguishable)m 1690(from)s
-220 fnt35 2214 8744(//)m 240 fnt82 2339 8747(.)m 480 8373(Unfortunately)m 15(,)k
-1915(if)s 220 fnt35 2134 8370(y)m 240 fnt82 2304 8373(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 8370(/)m 240 fnt82
-5634 8373(,)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 8085(must)m 533(be)s 823(placed)s 1513(inside)s 2148(the)s
-220 fnt35 2504 8082(@OneCol)m 240 fnt82 3456 8085(,)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 7797(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 7794(//)m 240 fnt82 6833 7797(is)m
-7043(that)s 7460(its)s 7736(left)s 8112(parameter)s 0 7509(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 7221(entire)m 599(page.)s
-480 6847(The)m 960(\207fth)s 1468(and)s 1924(\207nal)s 2457(concatenation)s
-3895(operator)s 9(,)k 220 fnt35 4841 6844(&)m 240 fnt82
-4983 6847(,)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 6559(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 6271(identical)m 907(to)s
-220 fnt35 1177 6268(|)m 240 fnt82 1305 6271(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 6268(//1vx)m 240 fnt82 0 5983(during)m 678(paragraph)s
-1691(breaking)s 2581(\(Section)s 3434(2.5\).)s 240 fnt84 0 5334(2.4.)m
-471(Implementation)s 2159(of)s 2431(objects)s 3201(and)s 3642(concatenation)s
-240 fnt82 480 4857(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 4569(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 4068(a |0.5i b /0.2i c | d)m
-240 fnt82 0 3613(into)m 425(parse)s 985(trees)s 1486(such)s
-1982(as)s gsave
-480 1919 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 1468(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
-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(are)m 347(consolidated:)s
-gsave
-480 11602 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 12840(\336)m gsave
-3825 11602 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
-240 fnt82 0 11151(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 10777(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 10489(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 10201(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 9913(restriction)m 1024(is)s 1234(unnecessary)s 2457(and)s
-2861(should)s 3558(be)s 3840(dropped.)s 480 9539(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 9251(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 9253(hgap)m 240 fnt78 5583 9245(\()m
-240 fnt83 5675 9253(x)m 240 fnt78 5801 9245(,)m 240 fnt83
-5932 9253(g)m 240 fnt78 6066 9245(,)m 240 fnt83 6197 9253(y)m
-240 fnt78 6319 9245(\))m 240 fnt82 6453 9251(returns)m 7175(the)s
-7531(desired)s 8287(distance)s 0 8963(between)m 846(the)s 1186(column)s
-1952(marks)s 2579(of)s 2841(objects)s 240 fnt83 3561 8965(x)m
-240 fnt82 3719 8963(and)m 240 fnt83 4114 8965(y)m 240 fnt82
-4268 8963(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 8965(g)m
-240 fnt82 7369 8963(:)m 240 fnt83 7527 8965(right)m 240 fnt78
-8000 8957(\()m 240 fnt83 8075 8965(x)m 240 fnt78 8185 8957(\))m
-8298(+)s 240 fnt83 8473 8965(length)m 240 fnt78 0 8669(\()m
-240 fnt83 89 8677(g)m 240 fnt78 221 8669(\))m 376(+)s
-240 fnt83 594 8677(left)m 240 fnt78 920 8669(\()m 240 fnt83
-1009 8677(y)m 240 fnt78 1129 8669(\))m 240 fnt82 1261 8675(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 8677(length)m 240 fnt78 6629 8669(\()m 240 fnt83
-6718 8677(g)m 240 fnt78 6850 8669(\))m 240 fnt82 6982 8675(and)m
-240 fnt83 7391 8677(right)m 240 fnt78 7878 8669(\()m 240 fnt83
-7968 8677(x)m 240 fnt78 8091 8669(\))m 8246(+)s 240 fnt83
-8464 8677(left)m 240 fnt78 8790 8669(\()m 240 fnt83 8880 8677(y)m
-240 fnt78 9000 8669(\))m 240 fnt82 0 8387(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 7892(X)m 240 fnt78 720 7884(=)m
-240 fnt83 933 7892(x)m 168 fnt78 1039 7799(1)m 240 fnt78
-1249 7884(|)m 240 fnt83 1294 7892(g)m 168 fnt78 1405 7799(1)m
-240 fnt78 1615 7884(\274)m 200 fnt83 1973 7900(^)m 240 fnt78
-2069 7884(|)m 240 fnt83 2114 7892(g)m 168 fnt83 2225 7805(i)m
-168 fnt78 2291 7799(-)m 2403(1)s 240 fnt83 2613 7892(x)m
-168 fnt83 2719 7805(i)m 240 fnt78 2907 7884(\274)m 3265(|)s
-240 fnt83 3310 7892(g)m 168 fnt83 3421 7805(n)m 168 fnt78
-3523 7799(-)m 3635(1)s 240 fnt83 3845 7892(x)m 168 fnt83
-3951 7805(n)m 240 fnt82 0 7348(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 6845(left)m 240 fnt78 1060 6837(\()m 240 fnt83
-1144 6845(X)m 240 fnt78 1312 6837(\))m 1474(=)s 240 fnt83
-1687 6845(left)m 240 fnt78 2007 6837(\()m 240 fnt83 2091 6845(x)m
-168 fnt78 2197 6752(1)m 240 fnt78 2275 6837(\))m 2413(+)s
-240 fnt83 2614 6845(hgap)m 240 fnt78 3099 6837(\()m 240 fnt83
-3183 6845(x)m 168 fnt78 3289 6752(1)m 240 fnt78 3367 6837(,)m
-240 fnt83 3474 6845(g)m 168 fnt78 3585 6752(1)m 240 fnt78
-3663 6837(,)m 240 fnt83 3770 6845(x)m 168 fnt78 3876 6752(2)m
-240 fnt78 3968 6837(\))m 4106(+)s 4307(\274)s 4593(+)s
-240 fnt83 4794 6845(hgap)m 240 fnt78 5279 6837(\()m 240 fnt83
-5363 6845(x)m 168 fnt83 5469 6758(i)m 168 fnt78 5535 6752(-)m
-5647(1)s 240 fnt78 5725 6837(,)m 240 fnt83 5832 6845(g)m
-168 fnt83 5943 6758(i)m 168 fnt78 6009 6752(-)m 6121(1)s
-240 fnt78 6199 6837(,)m 240 fnt83 6306 6845(x)m 168 fnt83
-6412 6758(i)m 240 fnt78 6468 6837(\))m 240 fnt83 579 6442(right)m
-240 fnt78 1060 6434(\()m 240 fnt83 1144 6442(X)m 240 fnt78
-1312 6434(\))m 1474(=)s 240 fnt83 1687 6442(hgap)m 240 fnt78
-2172 6434(\()m 240 fnt83 2256 6442(x)m 168 fnt83 2362 6355(i)m
-240 fnt78 2418 6434(,)m 240 fnt83 2525 6442(g)m 168 fnt83
-2636 6355(i)m 240 fnt78 2692 6434(,)m 240 fnt83 2799 6442(x)m
-168 fnt83 2905 6355(i)m 168 fnt78 2971 6349(+)m 3084(1)s
-240 fnt78 3162 6434(\))m 3300(+)s 3501(\274)s 3787(+)s
-240 fnt83 3988 6442(hgap)m 240 fnt78 4473 6434(\()m 240 fnt83
-4557 6442(x)m 168 fnt83 4663 6355(n)m 168 fnt78 4765 6349(-)m
-4877(1)s 240 fnt78 4955 6434(,)m 240 fnt83 5062 6442(g)m
-168 fnt83 5173 6355(n)m 168 fnt78 5275 6349(-)m 5387(1)s
-240 fnt78 5465 6434(,)m 240 fnt83 5572 6442(x)m 168 fnt83
-5678 6355(n)m 240 fnt78 5770 6434(\))m 5908(+)s 240 fnt83
-6109 6442(right)m 240 fnt78 6590 6434(\()m 240 fnt83 6674 6442(x)m
-168 fnt83 6780 6355(n)m 240 fnt78 6872 6434(\))m 240 fnt83
-485 6039(abo)m 2(ve)k 240 fnt78 1060 6031(\()m 240 fnt83
-1144 6039(X)m 240 fnt78 1312 6031(\))m 1474(=)s 240 fnt83
-1687 6039(abo)m 2(ve)k 240 fnt78 2262 6031(\()m 240 fnt83
-2346 6039(x)m 168 fnt78 2452 5944(1)m 240 fnt78 2530 6031(\))m
-2680(\255)s 2901(\274)s 3199(\255)s 240 fnt83 3420 6039(abo)m 2(ve)k
-240 fnt78 3995 6031(\()m 240 fnt83 4079 6039(x)m 168 fnt83
-4185 5950(n)m 240 fnt78 4277 6031(\))m 240 fnt83 480 5636(below)m
-240 fnt78 1060 5628(\()m 240 fnt83 1144 5636(X)m 240 fnt78
-1312 5628(\))m 1474(=)s 240 fnt83 1687 5636(below)m 240 fnt78
-2267 5628(\()m 240 fnt83 2351 5636(x)m 168 fnt78 2457 5541(1)m
-240 fnt78 2535 5628(\))m 2685(\255)s 2906(\274)s 3204(\255)s
-240 fnt83 3425 5636(below)m 240 fnt78 4005 5628(\()m 240 fnt83
-4089 5636(x)m 168 fnt83 4195 5547(n)m 240 fnt78 4287 5628(\))m
-240 fnt82 0 5041(where)m 240 fnt78 693 5035(\255)m 240 fnt82
-943 5041(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 4753(other)m 551(operators.)s 480 4379(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 4088(0i)m
-240 fnt82 156 4091(,)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 3803(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 3300(width)m 240 fnt78 1094 3292(\()m 240 fnt83 1178 3300(x)m
-168 fnt78 1284 3207(1)m 240 fnt78 1434 3292(|)m 1551(\274)s
-1849(|)s 240 fnt83 1966 3300(x)m 168 fnt83 2072 3213(n)m
-240 fnt78 2164 3292(\))m 2326(=)s 240 fnt83 2539 3300(width)m
-240 fnt78 3078 3292(\()m 240 fnt83 3162 3300(x)m 168 fnt78
-3268 3207(1)m 240 fnt78 3346 3292(\))m 3484(+)s 3685(\274)s
-3971(+)s 240 fnt83 4172 3300(width)m 240 fnt78 4711 3292(\()m
-240 fnt83 4795 3300(x)m 168 fnt83 4901 3213(n)m 240 fnt78
-4993 3292(\))m 240 fnt83 480 2897(height)m 240 fnt78 1094 2889(\()m
-240 fnt83 1178 2897(x)m 168 fnt78 1284 2804(1)m 240 fnt78
-1434 2889(|)m 1551(\274)s 1849(|)s 240 fnt83 1966 2897(x)m
-168 fnt83 2072 2810(n)m 240 fnt78 2164 2889(\))m 2326(=)s
-240 fnt83 2539 2897(height)m 240 fnt78 3153 2889(\()m 240 fnt83
-3237 2897(x)m 168 fnt78 3343 2804(1)m 240 fnt78 3421 2889(\))m
-3571(\255)s 3792(\274)s 4090(\255)s 240 fnt83 4311 2897(height)m
-240 fnt78 4925 2889(\()m 240 fnt83 5009 2897(x)m 168 fnt83
-5115 2810(n)m 240 fnt78 5207 2889(\))m 240 fnt82 0 2353(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 1803(width)m 240 fnt78
-1094 1795(\()m 240 fnt83 1178 1803(x)m 168 fnt78 1284 1710(1)m
-240 fnt83 1434 1803(/)m 240 fnt78 1609 1795(\274)m 240 fnt83
-1907 1803(/)m 2082(x)s 168 fnt83 2188 1716(n)m 240 fnt78
-2280 1795(\))m 2442(=)s 240 fnt83 2655 1803(width)m 240 fnt78
-3194 1795(\()m 240 fnt83 3278 1803(x)m 168 fnt78 3384 1710(1)m
-240 fnt78 3462 1795(\))m 3612(\255)s 3833(\274)s 4131(\255)s
-240 fnt83 4352 1803(width)m 240 fnt78 4891 1795(\()m 240 fnt83
-4975 1803(x)m 168 fnt83 5081 1716(n)m 240 fnt78 5173 1795(\))m
-240 fnt83 480 1400(height)m 240 fnt78 1094 1392(\()m 240 fnt83
-1178 1400(x)m 168 fnt78 1284 1307(1)m 240 fnt83 1434 1400(/)m
-240 fnt78 1609 1392(\274)m 240 fnt83 1907 1400(/)m 2082(x)s
-168 fnt83 2188 1313(n)m 240 fnt78 2280 1392(\))m 2442(=)s
-240 fnt83 2655 1400(height)m 240 fnt78 3269 1392(\()m 240 fnt83
-3353 1400(x)m 168 fnt78 3459 1307(1)m 240 fnt78 3537 1392(\))m
-3675(+)s 3876(\274)s 4162(+)s 240 fnt83 4363 1400(height)m
-240 fnt78 4977 1392(\()m 240 fnt83 5061 1400(x)m 168 fnt83
-5167 1313(n)m 240 fnt78 5259 1392(\))m
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 10 11
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Italic
-%%+ font Symbol
-/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(According)m 1063(to)s
-1302(these)s 1849(formulas,)s 2805(the)s 3153(height)s 3811(of)s
-gsave
-480 11559 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 11108(is)m
-240 fnt78 480 10600([)m 240 fnt83 563 10608(height)m 240 fnt78
-1177 10600(\()m 240 fnt83 1261 10608(a)m 240 fnt78 1388 10600(\))m
-1538(\255)s 240 fnt83 1759 10608(height)m 240 fnt78 2373 10600(\()m
-240 fnt83 2457 10608(b)m 240 fnt78 2583 10600(\))m 2661(])s
-2792(+)s 2993([)s 240 fnt83 3076 10608(height)m 240 fnt78
-3690 10600(\()m 240 fnt83 3774 10608(c)m 240 fnt78 3888 10600(\))m
-4038(\255)s 240 fnt83 4259 10608(height)m 240 fnt78 4873 10600(\()m
-240 fnt83 4957 10608(d)m 240 fnt78 5095 10600(\))m 5173(])s
-240 fnt82 0 10104(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 9546([)m 240 fnt83 563 9554(width)m 240 fnt78
-1102 9546(\()m 240 fnt83 1186 9554(a)m 240 fnt78 1313 9546(\))m
-1451(+)s 240 fnt83 1652 9554(width)m 240 fnt78 2191 9546(\()m
-240 fnt83 2275 9554(b)m 240 fnt78 2401 9546(\))m 2479(])s
-2622(\255)s 2843([)s 240 fnt83 2926 9554(width)m 240 fnt78
-3465 9546(\()m 240 fnt83 3549 9554(c)m 240 fnt78 3663 9546(\))m
-3801(+)s 240 fnt83 4002 9554(width)m 240 fnt78 4541 9546(\()m
-240 fnt83 4625 9554(d)m 240 fnt78 4763 9546(\))m 4841(])s
-240 fnt82 0 9050(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 8762(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 8764(a)m 240 fnt82 8113 8762(and)m 240 fnt83
-8537 8764(b)m 240 fnt82 8651 8762(,)m 8779(are)s 0 8474(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 8476(a)m 240 fnt82 4982 8474(and)m 240 fnt83
-5379 8476(c)m 240 fnt82 5481 8474(,)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 8186(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 7898(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 7610(mak)m 2(es)k 660(structural)s
-1616(changes)s 2438(to)s 2677(the)s 3025(tree)s 3438(instead.)s
-480 7236(If)m 240 fnt83 715 7238(a)m 240 fnt82 896 7236(and)m
-240 fnt83 1305 7238(c)m 240 fnt82 1473 7236(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 7238(width)m 240 fnt78 7572 7230(\()m
-240 fnt83 7662 7238(a)m 240 fnt78 7795 7230(\))m 7961(\255)s
-240 fnt83 8199 7238(width)m 240 fnt78 8743 7230(\()m 240 fnt83
-8833 7238(c)m 240 fnt78 8953 7230(\))m 240 fnt82 9019 7236(,)m
-0 6948(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 6662(COL)m 240 fnt82
-466 6660(,)m 573(de\207ned)s 1336(by)s 240 fnt83 480 6110(width)m
-240 fnt78 1019 6102(\()m 240 fnt83 1103 6110(x)m 168 fnt78
-1209 6017(1)m 240 fnt83 1347 6110(COL)m 240 fnt78 1885 6102(\274)m
-240 fnt83 2171 6110(COL)m 2709(x)s 168 fnt83 2815 6023(n)m
-240 fnt78 2907 6102(\))m 3057(=)s 240 fnt83 3270 6110(width)m
-240 fnt78 3809 6102(\()m 240 fnt83 3893 6110(x)m 168 fnt78
-3999 6017(1)m 240 fnt78 4077 6102(\))m 4227(\255)s 4448(\274)s
-4746(\255)s 240 fnt83 4967 6110(width)m 240 fnt78 5506 6102(\()m
-240 fnt83 5590 6110(x)m 168 fnt83 5696 6023(n)m 240 fnt78
-5788 6102(\))m 240 fnt82 0 5566(and)m 440(replace)s 1221(both)s
-240 fnt83 1741 5568(a)m 240 fnt82 1952 5566(and)m 240 fnt83
-2393 5568(c)m 240 fnt82 2591 5566(by)m 240 fnt83 2922 5568(a)m
-3218(COL)s 3865(c)s 240 fnt82 3967 5566(.)m 4168(T)s 19(o)k
-4504(pre)s 6(v)k 3(ent)k 240 fnt83 5309 5568(COL)m
-240 fnt82 5871 5566(operators)m 6848(from)s 7408(disturbing)s 8468(height)s
-0 5278(calculations,)m 1248(we)s 1583(de\207ne)s 2224(a)s 2390(binary)s
-3055(operator)s 3911(called)s 240 fnt83 4539 5280(SPLIT)m 240 fnt82
-5228 5278(by)m 240 fnt83 555 4775(width)m 240 fnt78 1094 4767(\()m
-240 fnt83 1178 4775(x)m 1356(SPLIT)s 2057(y)s 240 fnt78
-2171 4767(\))m 2333(=)s 240 fnt83 2546 4775(width)m 240 fnt78
-3085 4767(\()m 240 fnt83 3169 4775(x)m 240 fnt78 3287 4767(\))m
-240 fnt83 480 4372(height)m 240 fnt78 1094 4364(\()m 240 fnt83
-1178 4372(x)m 1356(SPLIT)s 2057(y)s 240 fnt78 2171 4364(\))m
-2333(=)s 240 fnt83 2546 4372(height)m 240 fnt78 3160 4364(\()m
-240 fnt83 3244 4372(y)m 240 fnt78 3358 4364(\))m 240 fnt82
-0 3868(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 2169 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 3407(\336)m gsave
-1671 2169 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 1669(widens)m 240 fnt83
-740 1671(a)m 240 fnt82 926 1669(to)m 240 fnt83 1176 1671(width)m
-240 fnt78 1726 1663(\()m 240 fnt83 1821 1671(a)m 240 fnt78
-1959 1663(\))m 2142(\255)s 240 fnt83 2396 1671(width)m 240 fnt78
-2946 1663(\()m 240 fnt83 3041 1671(c)m 240 fnt78 3166 1663(\))m
-240 fnt82 3303 1669(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 1381(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 1383(R)m 9(O)k 12(W)k
-240 fnt82 0 1093(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
-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 12065 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 11614(by)m gsave
-480 8904 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 8453(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 8165(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 8167(COL)m
-240 fnt82 7790 8165(or)m 240 fnt83 8040 8167(R)m 9(O)k 12(W)k
-240 fnt82 8604 8165(node)m 0 7877(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 7589(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 7215(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 6714({ a // c | d } | { b / e })m 480 6426(/ { f / i } | { g | h // j })m
-240 fnt82 0 5927(which)m 642(produces)s 1557(o)s 3(v)k 3(erlapping)k
-2747(spanning)s 3665(columns:)s gsave
-480 3779 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 3328(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 2770(\()m 564(\()s 240 fnt83
-648 2778(width)m 240 fnt78 1187 2770(\()m 240 fnt83 1271 2778(a)m
-240 fnt78 1398 2770(\))m 1548(\255)s 1769(\()s 240 fnt83
-1853 2778(x)m 240 fnt78 2031 2770(+)m 240 fnt83 2232 2778(y)m
-240 fnt78 2346 2770(\))m 2424(\))s 2562(+)s 240 fnt83
-2763 2778(z)m 240 fnt78 2866 2770(\))m 3016(\255)s 3237(\()s
-240 fnt83 3321 2778(x)m 240 fnt78 3499 2770(+)m 3700(\()s
-3784(\()s 240 fnt83 3868 2778(y)m 240 fnt78 4042 2770(+)m
-240 fnt83 4243 2778(z)m 240 fnt78 4346 2770(\))m 4496(\255)s
-240 fnt83 4717 2778(width)m 240 fnt78 5256 2770(\()m 240 fnt83
-5340 2778(j)m 240 fnt78 5418 2770(\))m 5496(\))s 5574(\))s
-240 fnt82 0 2274(where)m 240 fnt83 480 1773(x)m 240 fnt78
-670 1765(=)m 240 fnt83 883 1773(width)m 240 fnt78 1422 1765(\()m
-240 fnt83 1506 1773(c)m 240 fnt78 1620 1765(\))m 1770(\255)s
-240 fnt83 1991 1773(width)m 240 fnt78 2530 1765(\()m 240 fnt83
-2662 1773(f)m 240 fnt78 2823 1765(\))m 2973(\255)s 240 fnt83
-3194 1773(width)m 240 fnt78 3733 1765(\()m 240 fnt83 3817 1773(i)m
-240 fnt78 3892 1765(\))m 240 fnt83 480 1222(y)m 240 fnt78
-666 1214(=)m 240 fnt83 879 1222(width)m 240 fnt78 1418 1214(\()m
-240 fnt83 1502 1222(d)m 240 fnt78 1688 1214(\))m 1838(\255)s
-240 fnt83 2059 1222(width)m 240 fnt78 2598 1214(\()m 240 fnt83
-2682 1222(g)m 240 fnt78 2808 1214(\))m 240 fnt83 480 671(z)m
-240 fnt78 655 663(=)m 240 fnt83 868 671(width)m 240 fnt78
-1407 663(\()m 240 fnt83 1491 671(b)m 240 fnt78 1617 663(\))m
-1767(\255)s 240 fnt83 1988 671(width)m 240 fnt78 2527 663(\()m
-240 fnt83 2611 671(e)m 240 fnt78 2722 663(\))m 2872(\255)s
-240 fnt83 3093 671(width)m 240 fnt78 3632 663(\()m 240 fnt83
-3716 671(h)m 240 fnt78 3843 663(\))m
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 12 13
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ 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
-4288 13844(-)m 4416(12)s 4710(-)s 0 12968(It)m 224(seems)s
-878(clear)s 1420(that)s 240 fnt83 1857 12970(y)m 240 fnt82
-2038 12968(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 12680(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 12392(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 12104(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 12106(Constr)m 3(ained)k 240 fnt82 8722 12104(and)m
-240 fnt83 0 11818(AdjustSize)m 240 fnt82 1049 11816(\(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 11442(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 11154(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
-0 10866(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 10578(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 10290(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 10002(tion.)m 536(F)s 3(or)k
-925(e)s 3(xample,)k gsave
-480 8136 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 7685(is)m 210(represented)s 1369(by)s gsave
-1135 3169 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 2718(where)m 240 fnt83 645 2720(LK)m
-240 fnt82 1017 2718(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 2430(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 2142(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 1854(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 1566(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 1278(g)m 1(arbage)k
-812(collection.)s
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 13 14
-%%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
-4293 13844(-)m 4421(13)s 4705(-)s 480 13253(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 12965(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 12677(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 12389(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 11740(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 11264(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 10976(appearance)m 1131(of)s 1402(the)s 1750(object,)s
-2441(since)s 2988(otherwise)s 220 fnt35 480 10477(A shor)m -8(t par)k 2(ag)k 2(r)k 2(aph of te)k 6(xt.)k
-240 fnt82 0 9978(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 9690(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 9402(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 9114(compatible)m 1118(with)s 1600(the)s
-1948(o)s 3(v)k 3(erall)k 2660(functional)s 3684(design.)s
-480 8740(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 8452(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 8164(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 7876(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 7588(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 7300(colour)m 671(and)s 1075(te)s 3(xture)k
-1791(information.)s 480 6926(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 6425({ )m 11(Times Slope 12p } @F)k 6(ont { Hello)k 8(, w)k 2(or)k -3(ld })k
-240 fnt82 0 5929(should)m 697(ha)s 4(v)k 3(e)k
-1198(result)s 240 fnt83 480 5475(Hello,)m 1104(world)s 240 fnt82
-0 4993(Lout)m 528(also)s 983(pro)s 3(vides)k 220 fnt35
-1872 4990(@Break)m 240 fnt82 2745 4993(and)m 220 fnt35 3166 4990(@Space)m
-240 fnt82 4080 4993(symbols)m 4946(for)s 5301(controlling)s 6420(the)s
-6785(paragraph)s 7815(breaking)s 8722(and)s 0 4705(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 4417(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 4129(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 3841(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 3553(each)m 495(paragraph.)s 480 3179(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 2891(implementation)m
-1557(is)s 1767(much)s 2356(more)s 2903(demanding:)s 220 fnt35
-480 2390(2i @Wide {)m 480 2102(\(1\) |0.1i An e)m 6(xample)k 480 1814(containing a small)m 480 1526(par)m 2(ag)k 2(r)k 2(aph of \207lled te)k 6(xt.)k
-480 1238(})m
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 14 15
-%%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
-4288 13844(-)m 4416(14)s 4710(-)s 0 13256(is)m 210(guaranteed)s
-1317(to)s 1556(be)s 1838(tw)s 2(o)k 2248(inches)s
-2910(wide:)s 480 12753(\(1\))m 891(An)s 1270(e)s 3(xample)k
-2162(containing)s 3254(a)s 891 12465(small)m 1504(paragraph)s 2558(of)s
-2871(\207lled)s 891 12177(te)m 3(xt.)k 0 11724(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 11721(\(1\))m
-240 fnt82 5406 11724(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 11436(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 11148(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 10860(upw)m 2(ard)k 763(mo)s 3(v)k 3(ement)k
-1815(reaches)s 2570(a)s 240 fnt83 2724 10862(WIDE)m 240 fnt82
-3375 10860(node,)m 3936(corresponding)s 5346(to)s 5573(a)s 220 fnt35
-5728 10857(@Wide)m 240 fnt82 6490 10860(operator)m 9(,)k 7372(and)s
-7764(the)s 8100(calculated)s 0 10572(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 10284(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 9993(|)m 240 fnt82 84 9996(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 9708(\(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 0 9420(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 9046(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 8758(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 8470(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 7969(2i @Wide { Heading // a |1r)m -8(t b })k
-240 fnt82 0 7470(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 7467(a |1r)m -8(t b)k 240 fnt82 7124 7470(because)m 7957(of)s
-8247(the)s 8615(right)s 0 7182(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 7179(Heading)m 240 fnt82 7129 7182(w)m 2(as)k
-7586(assigned)s 8503(to)s 8778(the)s 0 6894(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 6606(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 6232(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 5944(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 5656(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 5368(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 5080(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 4792(break)m 2(er)k 9(,)k
-818(with)s 1306(the)s 220 fnt35 1660 4789(@Break)m 240 fnt82
-2522 4792(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 4504(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 3711(3.)m 291(De\207nitions)s
-240 fnt82 480 3280(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 2992(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 2704(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 2416(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 1767(3.1.)m 471(Operators)s 240 fnt82 480 1290(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
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 15 16
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Helvetica
-%%+ font Symbol
-%%+ font Times-Italic
-/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
-4292 13841(-)m 4420(15)s 4706(-)s 0 13250(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 12962(de\207ne)m 641(a)s 807(superscript)s 1915(operator)s
-2771(so)s 3037(that)s 220 fnt35 480 12468(2 sup n)m 240 fnt82
-0 11943(appears)m 781(as)s 168 fnt82 1145 12059(n)m 240 fnt78
-1031 11937(2)m 240 fnt82 1227 11943(,)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 11444(def sup)m 480 11156( precedence 50)m 480 10868( associativity r)m -3(ight)k
-480 10580( left x)m 480 10292( r)m -3(ight y)k 480 10004({)m 480 9716( @OneRo)m 3(w { | {-2p @F)k 6(ont y} ^/0.5fk x })k
-480 9428(})m 240 fnt82 0 8932(The)m 220 fnt35 481 8929(sup)m
-240 fnt82 940 8932(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 8644(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 0 8356(the)m
-348(structure)s gsave
-608 7875 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 7740 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 7289(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 7286(@OneRo)m 3(w)k 240 fnt82
-5268 7289(operator)m 9(,)k 6181(and)s 220 fnt35 6604 7286(y)m
-240 fnt82 6791 7289(tw)m 2(o)k 7220(points)s 7875(smaller)s
-8657(than)s 0 7001(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 6998(0.5f)m 240 fnt82 4683 7001(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 6713(describes)m 936(the)s 220 fnt35
-1280 6710(k)m 240 fnt82 1446 6713(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 6425(set)m 331(in)s
-580(italic)s 1116(font,)s 1614(and)s 220 fnt35 2024 6422(2)m
-240 fnt82 2203 6425(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 6137(digits)m
-220 fnt35 586 6134(0)m 240 fnt82 765 6137(to)m 220 fnt35
-1009 6134(9)m 240 fnt82 1186 6137(are)m 1538(classed)s 2291(as)s
-2546(punctuation)s 3737(characters,)s 4816(permitting)s 220 fnt35 5869 6134(234)m
-240 fnt82 6293 6137(for)m 6635(e)s 3(xample)k 7503(to)s
-7747(be)s 8034(interpreted)s 0 5849(as)m 250(a)s 416(sequence)s
-1349(of)s 1620(three)s 2153(identi\207ers.)s 480 5475(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 5187(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 4899(of)m 271(course.)s
-480 4525(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 4237(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 4239(Named)m 240 fnt82 3097 4237(parameters)m 4195(solv)s 3(e)k
-4753(both)s 5236(problems:)s 220 fnt35 480 3736(def @Pref)m 6(ace)k
-480 3448( named @T)m 26(ag {})k 480 3160( named @Title { Pref)m 6(ace })k 480 2872( r)m -3(ight @Body)k
-480 2584({)m 480 2296( Bold @F)m 6(ont @Title)k 480 2008( //0.3v @Body)m 480 1720(})m
-240 fnt82 0 1226(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
-
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 16 17
-%%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(16)s 4709(-)s 0 13251(ha)m 4(v)k 3(e)k
-501(a)s 667(natural)s 1385(syntax:)s 220 fnt35 480 12750(@Pref)m 6(ace)k
-480 12462( @Title { About this book })m 480 12174({)m 480 11886( 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 11598(})m 240 fnt82 0 11104(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 10816(ter)m 13(.)k 400(In)s 653(this)s 1046(e)s 3(xample,)k
-220 fnt35 1958 10813(@T)m 26(ag)k 240 fnt82 2578 10816(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 10528(the)m 220 fnt35 348 10525(@Title)m 240 fnt82
-1036 10528(parameter)m 2050(as)s 2300(well.)s 480 10154(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 9866(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 9578(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 9290(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 8641(3.2.)m 471(Recursion)s 1563(and)s 2004(page)s 2539(lay)s 6(out)k
-240 fnt82 480 8164(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 7876(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 0 7588(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 7087(def @P)m 8(age r)k -3(ight x)k 480 6799({)m
-480 6511( 8i @Wide 11i @High)m 480 6223( {)m 480 5935( //1i ||1i x ||1i)m 480 5647( //1i)m 480 5359( })m
-480 5071(})m 240 fnt82 0 4577(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 4289(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 4001(and)m 404(so)s 670(on.)s 480 3627(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 3339(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 2834(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 2331(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 1830(def @Leaders { ..)m 13( @Leaders })k 240 fnt82 0 1336(Note)m
-535(that)s 968(both)s 220 fnt35 1465 1333(..)m 240 fnt82
-1643 1336(and)m 220 fnt35 2061 1333(@Leaders)m 240 fnt82 3145 1336(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 1048(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
-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(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 13252(@Leaders)m 240 fnt82 8334 13255(and)m 8729(an)s 3(y)k
-0 12967(preceding)m 996(space'.)s 1770(Then)s 2319(the)s 2667(e)s 3(xpression)k
-220 fnt35 480 12466(4i @Wide { Chapter 7 @Leaders 53 })m 240 fnt82 0 11970(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 11682(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 11391(@Leaders)m 240 fnt82 1071 11394(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 11106(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 10732(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 10444(of)m 271(pages.)s 980(Let)s
-220 fnt35 1358 10441(@Ne)m 6(xt)k 240 fnt82 2082 10444(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 9943(def @P)m 8(ageList)k 480 9655( r)m -3(ight @P)k 8(ageNum)k
-480 9367({)m 480 9079( @P)m 8(age {)k 480 8791( |0.5r)m -8(t - @P)k 8(ageNum -)k
-480 8503( //1v @T)m 26(e)k 6(xtPlace)k 480 8215( //1r)m -8(t @F)k 6(ootSect)k
-480 7927( })m 480 7639( //)m 480 7351( @P)m 8(ageList @Ne)k 6(xt @P)k 8(ageNum)k
-480 7063(})m 240 fnt82 0 6569(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 6566(@P)m 8(ageList 1)k 240 fnt82 4267 6569(,)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 3735 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 1241 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 1026(@P)m 5(ageList 3)k
-
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 18 19
-%%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
-4291 13844(-)m 4419(18)s 4706(-)s 0 13253(Similarly)m 15(,)k
-980(we)s 1315(may)s 1781(de\207ne)s 220 fnt35 2422 13250(@F)m 6(ootSect)k
-240 fnt82 3573 13253(lik)m 2(e)k 3985(this:)s 220 fnt35
-480 12752(def @F)m 6(ootSect)k 480 12464({)m 480 12176( def @F)m 6(ootList)k
-480 11888( r)m -3(ight @Num)k 480 11600( {)m 480 11312( @F)m 6(ootPlace)k
-480 11024( //1v)m 480 10736( @F)m 6(ootList @Ne)k 6(xt @Num)k 480 10448( })m
-480 9872( 1i @Wide @HLine)m 480 9584( //1v)m 480 9296( @F)m 6(ootList 1)k 480 9008(})m
-240 fnt82 0 8514(so)m 266(that)s 684(an)s 967(in)s 9(v)k 4(ocation)k
-2021(of)s 220 fnt35 2292 8511(@F)m 6(ootSect)k 240 fnt82
-3443 8514(produces)m gsave
-480 8174 translate
-220 fnt35 1440 0 0 0 220 288 61 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-220 fnt35 480 7829(@F)m 6(ootPlace)k 480 7541(@F)m 6(ootPlace)k
-480 7253(@F)m 6(ootPlace)k 480 6965(...)m 240 fnt82 0 6514(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 6226(on)m 297(demand.)s 480 5852(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 5849(@T)m 26(e)k 6(xtPlace)k 240 fnt82 7170 5852(and)m
-220 fnt35 7575 5849(@F)m 6(ootPlace)k 240 fnt82 8832 5852(by)m
-0 5564(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 5276(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 4988(which)m 642(requires)s 1462(no)s
-1755(specialized)s 2874(language)s 3794(features.)s 240 fnt84 0 4340(3.3.)m
-471(Modules)s 240 fnt82 480 3909(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 3621(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 3247(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 2959(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 2462(surrounding te)m 6(xt)k
-480 2174(@Eq { {x sup 2 + 1} o)m 3(v)k 5(er 4 })k 480 1886(surrounding te)m 6(xt)k
-240 fnt82 0 1387(with)m 482(the)s 830(symbols)s 220 fnt35
-1679 1384(sup)m 240 fnt82 2025 1387(,)m 220 fnt35 2132 1384(o)m 3(v)k 5(er)k
-240 fnt82 2551 1387(,)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 1013(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 1010(@Eq)m 240 fnt82
-5544 1013(,)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
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 19 20
-%%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
-4289 13844(-)m 4417(19)s 4708(-)s 0 13251(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 13248(@Eq)m 240 fnt82
-5382 13251(are)m 5744(to)s 5998(be)s 6294(visible)s 7002(within)s
-7684(its)s 7975(actual)s 8615(right)s 0 12963(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 12965(body)m 240 fnt82
-7554 12963(parameter:)m 220 fnt35 480 12477(e)m 6(xpor)k -8(t sup o)k 3(v)k 5(er)k
-480 12189(def @Eq)m 480 11901( body @Body)m 480 11613({)m 480 11325( def sup ...)m 480 11037( def o)m 3(v)k 5(er ...)k
-480 10461( Slope @F)m 6(ont @Body)k 480 10173(})m 240 fnt82 0 9679(The)m
-220 fnt35 426 9676(e)m 6(xpor)k -8(t)k 240 fnt82
-1092 9679(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 9391(the)m
-359(body)s 905(of)s 220 fnt35 1188 9388(@Eq)m 240 fnt82
-1666 9391(;)m 1790(and)s 2206(the)s 220 fnt35 2566 9388(body)m
-240 fnt82 3112 9391(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 9103(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 9100(@Eq)m 240 fnt82 4640 9103(.)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 8815(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 8441(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 8153(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 7865(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 7577(it)m 192(is)s 402(natural)s 1120(to)s 1359(try)s
-1678(this:)s 220 fnt35 480 7076(e)m 6(xpor)k -8(t @Heading @PP ...)k
-480 6788(def @BookLa)m 6(y)k 4(out)k 480 6500( named @InitialF)m 6(ont { )k 11(Times Base 12p })k
-480 6212( named @InitialBreak { adjust 14p })m 480 5924( named @ColumnWidth { 6i })m 480 5636( ...)m 480 5348({)m 480 5060( def @Heading ...)m
-480 4772( def @PP ...)m 480 4484(})m 240 fnt82 0 3990(No)m 6(w)k
-220 fnt35 579 3987(@Heading)m 240 fnt82 1732 3990(and)m 220 fnt35
-2202 3987(@PP)m 240 fnt82 2833 3990(may)m 3365(in)s 9(v)k 4(ok)k 2(e)k
-220 fnt35 4124 3987(@InitialF)m 6(ont)k 240 fnt82 5411 3990(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 3699(@Heading)m 240 fnt82
-1100 3702(and)m 220 fnt35 1517 3699(@PP)m 240 fnt82 2096 3702(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 3411(@BookLa)m 6(y)k 4(out)k
-240 fnt82 1428 3414(and)m 1832(present)s 2582(the)s 2930(entire)s
-3529(document)s 4533(as)s 220 fnt35 480 2913(@BookLa)m 6(y)k 4(out)k
-480 2625( @InitialF)m 6(ont { Helv)k 5(etica Base 10p })k 480 2337( @InitialBreak { adjust 12p })m 480 2049({)m
-480 1761( )m 11(The document.)k 480 1473(})m 240 fnt82 0 979(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
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 20 21
-%%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
-4287 13844(-)m 4415(20)s 4710(-)s 0 13253(Instead,)m 797(we)s
-1132(write)s 220 fnt35 480 12771(@Use { @BookLa)m 6(y)k 4(out)k
-480 12483( @InitialF)m 6(ont { Helv)k 5(etica Base 10p })k 480 12195( @InitialBreak { adjust 12p })m 480 11907(})m
-480 11619(The document.)m 240 fnt82 0 11165(which)m 643(has)s 1015(the)s
-1365(same)s 1914(ef)s 6(fect:)k 220 fnt35 2617 11162(@Use)m
-240 fnt82 3284 11165(mak)m 2(es)k 3946(the)s 4296(e)s 3(xported)k
-5190(symbols)s 6040(of)s 220 fnt35 6313 11162(@BookLa)m 6(y)k 4(out)k
-240 fnt82 7743 11165(visible)m 8438(for)s 8778(the)s 0 10877(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 10503(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 10215(\(Section)m 851(6.1\),)s 1335(is)s
-1543(the)s 220 fnt35 1889 10212(@Open)m 240 fnt82 2693 10215(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 9927(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 9924(with)m
-240 fnt82 6444 9927(statement.)m 480 9553(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 9265(body)m 544(parameter)s 9(,)k 220 fnt35 1606 9262(@Use)m
-240 fnt82 2282 9265(and)m 220 fnt35 2696 9262(@Open)m 240 fnt82
-3513 9265(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 8974(@Open)m 240 fnt82 806 8977(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 8476(@Use { x })m 480 8188(@Use { y })m 480 7900(Body of document)m 240 fnt82 0 7402(can)m
-389(be)s 671(replaced)s 1538(by)s 220 fnt35 480 6901(x @Open {)m
-480 6613(y @Open {)m 480 6325(Body of document)m 480 6037(}})m 240 fnt82 0 5543(and,)m
-453(taking)s 1104(the)s 220 fnt35 1452 5540(@Eq)m 240 fnt82
-1990 5543(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 5042(def @Body r)m -3(ight x { Slope @F)k 6(ont x })k 240 fnt82
-0 4543(to)m 239(the)s 587(e)s 3(xported)k 1479(de\207nitions)s
-2540(of)s 220 fnt35 2811 4540(@Eq)m 240 fnt82 3289 4543(,)m
-3396(and)s 3800(replace)s 220 fnt35 480 4042(@Eq { object })m 240 fnt82
-0 3545(by)m 220 fnt35 480 3044(@Eq @Open { @Body { object } })m 240 fnt82 0 2544(If)m
-220 fnt35 232 2541(@Eq)m 240 fnt82 772 2544(is)m 985(a)s
-1153(g)s 1(alle)k 3(y)k 1790(\(Section)s 2645(5.1\),)s
-220 fnt35 3133 2541(@Body)m 240 fnt82 3917 2544(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 2256(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 1968(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 1594(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 1306(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 807(def isum { sum from i=1 to n })m
-240 fnt82 0 313(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 310(@Eq)m 240 fnt82 5172 313(package)m
-6033(itself,)s 6637(where)s 220 fnt35 7298 310(sum)m 240 fnt82
-7780 313(and)m 8205(the)s 8575(other)s
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 21 22
-%%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
-1 LoutMargSet
-grestore
-4297 13844(-)m 4425(21)s 4700(-)s 0 13256(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 12968(pro)m 3(vides)k 872(an)s
-220 fnt35 1155 12965(impor)m -8(t)k 240 fnt82 1828 12968(clause)m
-2481(to)s 2720(solv)s 3(e)k 3278(this)s 3674(problem:)s
-220 fnt35 480 12467(impor)m -8(t @Eq)k 480 12179(def isum { sum from i=1 to n })m 240 fnt82
-0 11685(may)m 469(appear)s 1169(after)s 220 fnt35 1669 11682(@Eq)m
-240 fnt82 2210 11685(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 11682(@Eq)m 240 fnt82
-7761 11685(visible)m 8458(within)s 0 11397(the)m 335(body)s 855(of)s
-220 fnt35 1112 11394(isum)m 240 fnt82 1561 11397(.)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 11109(introduces)m 1050(an)s
-1336(insecurity)s 15(,)k 2373(when)s 220 fnt35 2952 11106(isum)m
-240 fnt82 3464 11109(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 10821(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 10818(impor)m -8(t)k
-240 fnt82 4020 10821(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 10533(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 10245(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 9596(3.4.)m 471(Implementation)s 2159(of)s
-2431(de\207nitions)s 240 fnt82 480 9119(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 8831(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 8543(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 8255(usual)m 564(stack)s 1121(of)s 1397(static)s
-1958(scopes,)s 2708(accepting)s 240 fnt83 3682 8257(PushScope)m 240 fnt82
-4791 8255(and)m 240 fnt83 5200 8257(P)m 19(opScope)k 240 fnt82
-6197 8255(operations)m 7249(as)s 7504(the)s 7857(parser)s 8505(enters)s
-0 7967(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 7676(@Open)m 240 fnt82
-806 7679(operator)m 13(.)k 480 7305(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 7017(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 0 6729(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 6441(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 6153(once)m 508(or)s 767(not.)s
-480 5779(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 5491(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 5203(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 4915(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 4627(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 4253(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 4255(en)m 9(vir)k 10(onment)k 240 fnt82
-6456 4253(,)m 6563(the)s 6911(equi)s 6(v)k 6(alent)k
-7955(of)s 8226(the)s 8574(stack)s 0 3965(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 3677(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 3389(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 3015(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 2727(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 2439(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 2151(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 1863(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 1860(@Ne)m 6(xt)k 240 fnt83 7478 1865(object)m
-240 fnt82 8117 1863(recei)m 6(v)k 3(e)k 8843(an)s
-0 1575(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 1572(@Ne)m 6(xt)k
-240 fnt82 6221 1575(symbols)m 7080(from)s 7614(forming)s 8448(during)s
-0 1287(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 999(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 711(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 423(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
-
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 22 23
-%%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
-4288 13844(-)m 4416(22)s 4710(-)s 240 fnt84 0 12678(4.)m
-291(Implementation)s 1979(of)s 2251(the)s 2625(functional)s 3715(subset)s
-240 fnt82 480 12201(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 11913(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 11625(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 11251(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 10963(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 10675(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 10387(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 10013(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 9725(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 9437(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 9149(the)m
-348(lea)s 4(v)k 3(es)k 989(and)s 1393(back.)s
-240 fnt83 0 8695(1.)m 330(Evaluation)s 1490(of)s 1827(unsized)s
-2667(objects.)s 240 fnt82 3554 8693(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 8405(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 8117(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 7831(FONT)m 240 fnt82
-630 7829(,)m 240 fnt83 737 7831(BREAK)m 240 fnt82 1494 7829(,)m
-1601(and)s 240 fnt83 2005 7831(SP)m 21(A)k 7(CE)k
-240 fnt82 2760 7829(nodes,)m 3426(and)s 3830(insert)s 240 fnt83
-4420 7831(SPLIT)m 240 fnt82 5049 7829(,)m 240 fnt83 5156 7831(COL)m
-240 fnt82 5622 7829(,)m 5729(and)s 240 fnt83 6133 7831(R)m 9(O)k 12(W)k
-240 fnt82 6707 7829(nodes)m 7317(\(Section)s 8170(2.3\).)s 240 fnt83
-0 7336(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 7334(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 7046(up.)m
-404(As)s 720(described)s 1693(in)s 1936(Section)s 2709(2.3,)s
-240 fnt83 3115 7048(WIDE)m 240 fnt82 3777 7046(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 6758(this)m 396(pass.)s 240 fnt83 0 6255(3.)m
-274(Height)s 989(calculations.)s 240 fnt82 2312 6253(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 5750(4.)m 283(Horizontal)s 1389(coor)s 8(dinates.)k
-240 fnt82 2674 5748(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 5460(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 4976(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 4974(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 4686(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 4398(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 3895(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 3607(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 3319(on)m 297(shared)s 979(code.)s 480 2945(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 2657(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 2369(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 2081(and)m 404(3.)s 240 fnt84 0 1337(5.)m
-291(Galleys)s 240 fnt82 480 860(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 572(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 284(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
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 23 24
-%%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
-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 240 fnt84 0 8394(Figur)m 4(e)k
-761(3.)s 1084(Major)s 1825(components)s 3134(of)s 3438(the)s
-3844(Basser)s 4612(Lout)s 5197(inter)s 2(pr)k 4(eter)k 22(,)k
-6441(sho)s 2(wing)k 7365(the)s 7772(appr)s 4(oximate)k
-0 8106(number)m 868(of)s 1140(lines)s 1658(of)s 1930(C)s
-2155(code.)s 240 fnt82 0 7512(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 7224(the)m 348(years)s 903(1987-89.)s 240 fnt84 0 6575(5.1.)m
-471(The)s 926(galley)s 1580(abstraction)s 240 fnt82 480 6098(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 5810(wish)m
-509(to)s 748(write)s 220 fnt35 480 5362(preceding te)m 6(xt)k
-480 5074(@F)m 6(ootNote { f)k 6(ootnote te)k 6(xt })k 480 4786(f)m 6(ollo)k 3(wing te)k 6(xt)k
-240 fnt82 0 4287(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 3999(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 3711(\207cient.)m 480 3337(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 3049(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 2761(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 2473(\(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 2099(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 1811(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 1523(point)m 552(or)s 811(through)s 1613(the)s 1961(point\(s\))s
-2753(of)s 3024(appearance.)s 480 1149(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 861(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 573(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 0 285(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
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 24 25
-%%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 13844(-)m 4416(24)s 4710(-)s 0 13256(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 12968(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 12680(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 12392(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 12104(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 11816(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 11528(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 11154(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 10866(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 10578(this)m 396(one:)s gsave
-480 8292 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 7841(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 7553(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 5939 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
-0 5488(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 5200(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 4912(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 4624(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 4336(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 4048(of)m
-271(generality)s 15(.)k 480 3674(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 3386(the)m 240 fnt83
-371 3388(galle)m 7(y)k 240 fnt82 1028 3386(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 3098(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 2810(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 2522(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 2148(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 1647(def @F)m 6(ootPlace { @Galle)k 4(y })k 480 1071(def @F)m 6(ootNote into { @F)k 6(ootPlace&&f)k 6(ollo)k 3(wing })k
-480 783( r)m -3(ight x)k 480 495({ x })m
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 25 26
-%%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
-1 LoutMargSet
-grestore
-4292 13841(-)m 4420(25)s 4706(-)s 0 13250(The)m 220 fnt35
-445 13247(@F)m 6(ootPlace)k 240 fnt82 1719 13250(symbol)m 2496(contains)s
-3362(the)s 3727(special)s 4463(symbol)s 220 fnt35 5240 13247(@Galle)m 4(y)k
-240 fnt82 6078 13250(,)m 6203(indicating)s 7229(that)s 7665(it)s
-7874(is)s 8102(a)s 8285(point)s 8855(of)s 0 12962(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 12959(@F)m 6(ootPlace)k 240 fnt82
-6234 12962(at)m 6478(the)s 6838(bottoms)s 7673(of)s 7956(pages,)s
-8620(as)s 8883(in)s 0 12674(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 12386(contains)m 220 fnt35 863 12383(@Galle)m 4(y)k
-240 fnt82 1776 12386(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 12098(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 12095(into)m 240 fnt82
-6956 12098(clause)m 7609(is)s 7819(to)s 8058(mak)s 2(e)k
-8631(each)s 0 11810(in)m 9(v)k 4(ocation)k 1057(of)s
-220 fnt35 1332 11807(@F)m 6(ootNote)k 240 fnt82 2506 11810(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 11522(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 11519(into)m 240 fnt82 6507 11522(clause;)m 7218(in)s
-7463(this)s 7861(e)s 3(xample,)k 8778(the)s 0 11234(sequence)m
-933(of)s 1204(all)s 220 fnt35 1497 11231(@F)m 6(ootPlace)k
-240 fnt82 2753 11234(symbols)m 3602(follo)s 6(wing)k 4579(the)s
-4927(in)s 9(v)k 4(ocation)k 5981(point.)s 480 10860(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 10572(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 10284(trees.)m 649(Recepti)s 6(v)k 3(e)k
-1688(symbols)s 2573(lik)s 2(e)k 220 fnt35 3021 10281(@F)m 6(ootPlace)k
-240 fnt82 4313 10284(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 9996(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 9708(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 9420(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 9417(preceding)m 240 fnt82
-7606 9420(or)m 220 fnt35 7876 9417(f)m 6(ollo)k 3(wing)k
-240 fnt82 8778 9420(the)m 0 9132(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 9129(preceding)m 240 fnt82 7309 9132(.)m
-480 8758(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 8470(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 8182(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 8179(@K)m 8(e)k 4(y)k
-240 fnt82 8112 8182(parameter)m 0 7894(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 7606(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 6957(5.2.)m 471(The)s 926(galley)s 1580(\210ushing)s
-2447(algorithm)s 240 fnt82 480 6480(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 6192(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 5904(process)m 800(is)s 1042(called)s 240 fnt83 1703 5906(galle)m 7(y)k
-2368(\210ushing)s 240 fnt82 3121 5904(:)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 5616(component)m 1124(is)s 1334(a)s 1500(drop)s
-1992(of)s 2263(w)s 2(ater)k 13(.)k 480 5242(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 5239(@P)m 8(ageList)k 240 fnt82
-7737 5242(de\207nitions)m 8855(of)s 0 4954(Section)m 774(3.2:)s 6982 3257 0 3257 240 288 60 480 1406 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 955(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 664(@Input)m 240 fnt82 759 667(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
-
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 26 27
-%%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 13842(-)m 4416(26)s 4709(-)s 0 13251(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 13248(@P)m 8(ageList)k 240 fnt82
-7845 13251(,)m 7965(which)s 8620(is)s 8843(an)s 0 12963(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 12589(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 12301(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 4942 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
-0 4491(Each)m 521(g)s 1(alle)k 3(y)k 1140(has)s
-1495(a)s 240 fnt83 1647 4493(HEAD)m 240 fnt82 2325 4491(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 4493(GAP)m
-240 fnt82 8516 4491(nodes)m 0 4203(recording)m 969(the)s 1317(inter)s 4(-component)k
-2953(g)s 1(aps.)k 480 3829(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 3831(galle)m 7(y)k 5569(inde)s 4(x)k
-6155(nodes)s 240 fnt82 6780 3829(of)m 7063(v)s 6(arious)k
-7823(types.)s 8504(Ev)s 3(ery)k 0 3541(recepti)m 6(v)k 3(e)k
-922(symbol)s 1681(has)s 2051(a)s 240 fnt83 2216 3543(RECEPTIVE)m
-240 fnt82 3529 3541(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 3253(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 3255(RECEIVING)m
-240 fnt82 0 2965(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 2677(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 2679(UN)m 6(A)k 8(TT)k 12(A)k 7(CHED)k
-240 fnt82 5215 2677(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 2389(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 2015(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 1727(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 1439(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 1151(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 863(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 575(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
-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 480 13255(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 12967(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 12679(of)m 269(its)s 543(o)s 6(wn)k 1005(semaphores.)s
-2296(The)s 240 fnt83 2722 12681(HEAD)m 240 fnt82 3413 12679(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 12391(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 12103(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 11729(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 11441(the)m 220 fnt35
-351 11438(@Galle)m 4(y)k 240 fnt82 1253 11441(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 11438(@Input)m 240 fnt82
-7866 11441(symbol)m 8630(after)s 0 11153(the)m 348(\207rst)s 779(tw)s 2(o)k
-1189(components)s 2397(are)s 2744(promoted.)s 480 10779(Ev)m 3(ery)k
-1145(g)s 1(alle)k 3(y)k 240 fnt83 1822 10781(G)m
-240 fnt82 1995 10779(,)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 10491(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 9988(1.)m
-303(Initially)s 240 fnt83 1132 9990(G)m 240 fnt82 1384 9988(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 9990(UN)m 6(A)k 8(TT)k 12(A)k 7(CHED)k
-240 fnt82 8272 9988(inde)m 3(x)k 8876(as)s 0 9700(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 9702(S)m 240 fnt82 3602 9700(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 9702(G)m 240 fnt82 7524 9700(.)m 0 9197(2.)m 284(If)s
-514(no)s 240 fnt83 807 9199(S)m 240 fnt82 988 9197(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 8694(3.)m 281(Expand)s 240 fnt83
-1068 8696(S)m 240 fnt82 1246 8694(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 8696(G)m 240 fnt82 3489 8694(.)m 3649(Preserv)s 3(e)k
-240 fnt83 4521 8696(S)m 240 fnt82 4642 8694(')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 8406(symbol)m 760(within)s 1428(the)s 1776(e)s 3(xpansion)k
-2801(of)s 240 fnt83 3072 8408(S)m 240 fnt82 3193 8406(.)m
-0 7903(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 7905(G)m 240 fnt82 6389 7903(is)m 6611(still)s 7034(a)s
-7211(pure)s 7704(parse)s 8275(tree,)s 8751(use)s 0 7615(the)m
-377(en)s 9(vironment)k 1667(attached)s 2550(to)s 240 fnt83
-2819 7617(G)m 240 fnt82 3081 7615(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 7617(G)m 240 fnt82 8603 7615(as)m 8883(in)s 0 7327(Section)m
-774(4.)s 0 6871(5.)m 284(Examine)s 1190(the)s 1538(components)s
-2746(of)s 240 fnt83 3017 6873(G)m 240 fnt82 3250 6871(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 6499(A)m 7(CCEPT)k 17(.)k 240 fnt82
-1513 6497(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 6209(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 6211(G)m 240 fnt82 8727 6209(is)m 8960(a)s 0 5921(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 5633(g)m 1(alle)k 3(y)k 15(.)k
-729(If)s 240 fnt83 959 5635(G)m 240 fnt82 1192 5633(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 5261(REJECT)m 17(.)k 240 fnt82 1490 5259(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 5261(FOLLO)m 12(WS)k
-240 fnt82 8542 5259(inde)m 3(x)k 0 4971(\(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 4973(G)m 240 fnt82 6556 4971(from)m 7069(the)s 7407(tar)s 4(get.)k
-8100(If)s 8320(this)s 8705(w)s 2(as)k 0 4683(the)m
-338(\207rst)s 758(component)s 1872(at)s 2093(this)s 2479(tar)s 4(get,)k
-240 fnt83 3114 4685(S)m 240 fnt82 3284 4683(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 0 4395(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 4023(SUSPEND.)m 240 fnt82 1685 4021(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 3733(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 3445(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 3157(from)m 524(step)s 962(4.)s 0 2653(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 2150(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 1862(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 1574(Basser)m 701(Lout)s
-1218(resumes)s 2057(the)s 2410(parent)s 3071(immediately)s 4324(after)s
-240 fnt83 4825 1576(G)m 240 fnt82 5063 1574(suspends)m 5983(or)s
-6247(terminates.)s 7410(Also,)s 7974(whene)s 6(v)k 3(er)k
-8960(a)s 0 1286(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 1288(UN)m 6(A)k 8(TT)k 12(A)k 7(CHED)k
-240 fnt82 7510 1286(inde)m 3(x)k 3(es)k 8302(must)s
-8844(be)s 0 998(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 710(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
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 28 29
-%%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
-4291 13844(-)m 4419(28)s 4706(-)s 0 13253(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 13255(G)m 240 fnt82 4306 13253(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 12879(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 12881(G)m 240 fnt82 5081 12879(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 12591(will)m 437(clearly)s
-1152(precede)s 1963(or)s 2233(follo)s 6(w)k 240 fnt83
-2917 12593(G)m 240 fnt82 3090 12591(')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 12303(speci\207ed)m 904(in)s 1142(the)s 220 fnt35 1486 12300(into)m
-240 fnt82 1887 12303(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 12015(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 12012(f)m 6(ollo)k 3(wing)k 240 fnt82 8104 12015(tar)m 4(get)k
-8700(will)s 0 11727(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 11729(G)m 240 fnt82 5199 11727(')m 13(s)k
-5409(in)s 9(v)k 4(ocation)k 6463(point:)s gsave
-480 6741 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 6290(Here)m 240 fnt83 524 6292(G)m 240 fnt82 762 6290(will)m
-1193(\207nd)s 1629(the)s 220 fnt35 1982 6287(@GT)m 26(arget)k
-240 fnt82 3045 6290(tar)m 4(get)k 3649(within)s 240 fnt83
-4322 6292(X)m 240 fnt82 4478 6290(.)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 6002(of)m 240 fnt83 303 6004(G)m 240 fnt82
-568 6002(is)m 811(then)s 1312(promoted)s 2320(via)s 240 fnt83
-2704 6004(X)m 240 fnt82 2952 6002(into)m 3410(the)s 3790(\207rst)s
-220 fnt35 4254 5999(@XT)m 26(arget)k 240 fnt82 5319 6002(rather)m
-5967(than)s 6469(into)s 6926(the)s 7307(second,)s 240 fnt83
-8111 6004(G)m 240 fnt82 8284 6002(')m 13(s)k 8527(tar)s 4(get)k
-0 5714(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 5423(into)m 240 fnt82 406 5426(clause.)m 480 5052(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 4764(together:)m 898(a)s 240 fnt83 1074 4766(PRECEDES)m 240 fnt82
-2327 4764(inde)m 3(x)k 2921(at)s 240 fnt83 3163 4766(G)m
-240 fnt82 3336 4764(')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 4766(FOLLO)m 12(WS)k
-240 fnt82 6952 4764(inde)m 3(x)k 7546(at)s 7787(the)s
-8145(\207rst)s 8586(com)s 8998(-)s 0 4476(ponent)m 720(of)s
-240 fnt83 1000 4478(G)m 240 fnt82 1173 4476(.)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 4478(FOLLO)m 12(WS)k 240 fnt82 6767 4476(inde)m 3(x)k
-7360(that)s 7787(its)s 8072(promotion)s 0 4188(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 4190(PRECEDES)m 240 fnt82
-5981 4188(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 3900(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 3902(PRECEDES)m 240 fnt82 4939 3900(and)m 240 fnt83
-5340 3902(FOLLO)m 12(WS)k 240 fnt82 6463 3900(inde)m 3(x)k 3(es)k
-7236(are)s 7580(rarely)s 8187(used,)s 8730(this)s 0 3612(check)m
-619(can)s 1008(be)s 1290(implemented)s 2596(by)s 2890(linear)s
-3493(search.)s 480 3238(When)m 1114(tw)s 2(o)k 1529(components)s
-2742(are)s 3094(separated)s 4060(by)s 220 fnt35 4359 3235(/)m
-240 fnt82 4423 3238(,)m 4535(as)s 4790(opposed)s 5652(to)s
-5897(the)s 6250(more)s 6802(usual)s 220 fnt35 7367 3235(//)m
-240 fnt82 7492 3238(,)m 7604(each)s 8105(in\210uences)s 0 2950(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 2952(SUSPEND)m 240 fnt82 6596 2950(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 2662(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 2659(/)m 240 fnt82 6903 2662(operators)m 7851(only)s 15(.)k
-8435(Ag)s 1(ain,)k 0 2374(linear)m 603(search)s 1270(forw)s 2(ards)k
-2168(to)s 2407(the)s 2755(\207rst)s 220 fnt35 3186 2371(//)m
-240 fnt82 3371 2374(suf\207ces)m 4152(for)s 4490(this)s 4886(check.)s
-480 2000(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 1997(@Align)m 240 fnt82
-7344 2000(symbols)m 8223(from)s 8778(the)s 0 1712(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 1424(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 1050(The)m 220 fnt35 921 1047(@Align)m 240 fnt82 1689 1050(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 762(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 759(@AlignList)m
-240 fnt82 7536 762(g)m 1(alle)k 3(y)k 8170(is)s
-8379(created)s 0 474(which)m 642(contains)s 1490(an)s 1773(in\207nite)s
-2506(supply)s 3199(of)s 220 fnt35 3470 471(@AlignPlace)m 240 fnt82
-4779 474(recepti)m 6(v)k 3(e)k 5701(symbols)s 6550(separated)s
-7510(by)s 220 fnt35 7804 471(/)m 240 fnt82 7928 474(operators:)m
-
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 29 30
-%%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
-1 LoutMargSet
-grestore
-4289 13844(-)m 4417(29)s 4708(-)s 4777 3207 0 3207 240 288 60 480 10207 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 9756(Then)m
-549(equations)s 1517(lik)s 2(e)k 1471 214 393 105 240 288 60 480 9202 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 8751(are)m 358(created)s 1117(and)s
-1532(sent)s 1989(to)s 220 fnt35 2239 8748(@AlignPlace&&f)m 6(ollo)k 3(wing)k
-240 fnt82 4690 8751(tar)m 4(gets.)k 5498(The)s 3(y)k
-6052(collect)s 6760(in)s 7014(the)s 220 fnt35 7374 8748(@AlignList)m
-240 fnt82 8492 8751(g)m 1(alle)k 3(y)k 0 8463(and)m
-404(are)s 751(aligned)s 1513(there:)s 5836 3212 0 3212 240 288 60 480 4911 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
-0 4460(The)m 220 fnt35 450 4457(@AlignList)m 240 fnt82 1579 4460(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 4172(symbol)m
-760(by)s 220 fnt35 1054 4169(/)m 240 fnt82 1178 4172(operators.)m
-480 3798(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 3795(@EndAlignList)m
-240 fnt82 7420 3798(,)m 7533(deleting)s 8362(the)s 8716(tw)s 2(o)k
-0 3510(remaining)m 1028(recepti)s 6(v)k 3(e)k 1957(symbols)s
-2813(from)s 3344(the)s 220 fnt35 3699 3507(@AlignList)m 240 fnt82
-4812 3510(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 3512(FOLLO)m 12(WS)k
-240 fnt82 0 3222(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 2934(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 2646(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 2358(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 2070(is)m 210(added)s 840(to)s
-1079(the)s 1427(list.)s 480 1696(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 1408(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 1120(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 832(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 829(into)m 240 fnt82
-4575 832(clauses,)m 5375(in)s 5621(principle)s 6529(such)s 7028(high)s
-7514(quality)s 8236(breaking)s 0 544(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 256(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
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 30 31
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Helvetica
-%%+ font Symbol
-%%+ font Times-Italic
-/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
-4287 13844(-)m 4415(30)s 4710(-)s 0 13253(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 13205(E)m 5151 13253(X)m 5414([9],)s
-5832(with)s 6348(its)s 6657(unnested)s 7600(set)s 7958(of)s
-8263(`\210oating)s 0 12965(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 12316(5.3.)m 471(Size)s
-938(constraints)s 2120(and)s 2561(size)s 2988(adjustments)s 240 fnt82
-480 11840(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 11552(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 11264(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 10976(e)m 3(xtracted)k 930(from)s 1454(the)s 1802(tree)s
-2215(structure)s 3106(when)s 3682(required.)s 480 10602(F)m 3(or)k
-869(e)s 3(xample,)k 1783(consider)s 2653(the)s 3001(object)s
-220 fnt35 480 10101(5i @Wide { a / b })m 240 fnt82 0 9607(and)m 406(suppose)s
-1236(that)s 1656(the)s 2006(width)s 2610(of)s 220 fnt35
-2883 9604(a)m 240 fnt82 3062 9607(is)m 240 fnt78 3274 9601(1)m
-240 fnt83 3382 9609(i)m 240 fnt78 3459 9601(,)m 3572(2)s
-240 fnt83 3700 9609(i)m 240 fnt82 3825 9607(\()m 240 fnt78
-3898 9601(1)m 240 fnt83 4006 9609(i)m 240 fnt82 4131 9607(to)m
-4372(the)s 4722(left)s 5101(of)s 5374(the)s 5724(mark,)s
-240 fnt78 6324 9601(2)m 240 fnt83 6452 9609(i)m 240 fnt82
-6577 9607(to)m 6818(the)s 7168(right\).)s 7864(What)s 8444(then)s
-8916(is)s 0 9319(the)m 348(a)s 4(v)k 6(ailable)k
-1256(width)s 1858(at)s 220 fnt35 2090 9316(b)m 240 fnt82
-2204 9319(?)m 2423(If)s 2653(we)s 2988(let)s 3286(the)s
-3634(width)s 4236(of)s 220 fnt35 4507 9316(b)m 240 fnt82
-4681 9319(be)m 240 fnt83 4963 9321(l)m 240 fnt78 5041 9313(,)m
-240 fnt83 5148 9321(r)m 240 fnt82 5246 9319(,)m 5353(we)s
-5688(must)s 6213(ha)s 4(v)k 3(e)k 240 fnt78
-480 8771(\()m 564(1)s 240 fnt83 670 8779(i)m 240 fnt78
-817 8771(\255)m 240 fnt83 1038 8779(l)m 240 fnt78 1116 8771(\))m
-1254(+)s 1455(\()s 1539(2)s 240 fnt83 1665 8779(i)m
-240 fnt78 1812 8771(\255)m 240 fnt83 2033 8779(r)m 240 fnt78
-2143 8771(\))m 2293(\243)s 2503(5)s 240 fnt83 2622 8779(i)m
-240 fnt82 0 8226(with)m 482(the)s 240 fnt78 842 8220(\255)m
-240 fnt82 1051 8226(\(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 7674(1)m
-240 fnt83 586 7682(i)m 240 fnt78 721 7674(+)m 922(2)s
-240 fnt83 1048 7682(i)m 240 fnt78 1207 7674(\243)m 1417(5)s
-240 fnt83 1536 7682(i)m 583 7387(l)m 240 fnt78 721 7379(+)m
-922(2)s 240 fnt83 1048 7387(i)m 240 fnt78 1207 7379(\243)m
-1417(5)s 240 fnt83 1536 7387(i)m 240 fnt78 571 7091(1)m
-240 fnt83 677 7099(i)m 240 fnt78 812 7091(+)m 240 fnt83
-1013 7099(r)m 240 fnt78 1207 7091(\243)m 1417(5)s 240 fnt83
-1536 7099(i)m 674 6804(l)m 240 fnt78 812 6796(+)m 240 fnt83
-1013 6804(r)m 240 fnt78 1207 6796(\243)m 1417(5)s 240 fnt83
-1536 6804(i)m 240 fnt82 0 6293(and)m 428(since)s 1000(we)s
-1359(assume)s 2144(that)s 220 fnt35 2587 6290(a)m 240 fnt82
-2788 6293(\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 6005(lea)m 4(ving)k 240 fnt83
-851 5454(l)m 240 fnt78 1013 5446(\243)m 1223(3)s 240 fnt83
-1340 5454(i)m 480 5159(l)m 240 fnt78 618 5151(+)m 240 fnt83
-819 5159(r)m 240 fnt78 1013 5151(\243)m 1223(5)s 240 fnt83
-1342 5159(i)m 819 4871(r)m 240 fnt78 1013 4863(\243)m 1223(4)s
-240 fnt83 1348 4871(i)m 240 fnt82 0 4362(Object)m 220 fnt35
-697 4359(b)m 240 fnt82 871 4362(may)m 1337(ha)s 4(v)k 3(e)k
-1838(width)s 240 fnt83 2440 4364(l)m 240 fnt78 2518 4356(,)m
-240 fnt83 2625 4364(r)m 240 fnt82 2783 4362(for)m 3121(an)s 3(y)k
-240 fnt83 3518 4364(l)m 240 fnt82 3644 4362(and)m 240 fnt83
-4048 4364(r)m 240 fnt82 4206 4362(satisfying)m 5188(these)s 5735(inequalities,)s
-6943(and)s 7347(no)s 7640(others.)s 480 3988(Here)m 1000(is)s
-1210(another)s 1987(e)s 3(xample:)k 220 fnt35 480 3487(5i @High { a /2ix b })m
-240 fnt82 0 2986(Assuming)m 1024(that)s 220 fnt35 1442 2983(a)m
-240 fnt82 1619 2986(has)m 1989(height)s 240 fnt78 2647 2980(1)m
-240 fnt83 2753 2988(i)m 240 fnt78 2828 2980(,)m 2935(1)s
-240 fnt83 3041 2988(i)m 240 fnt82 3104 2986(,)m 3211(the)s
-3559(height)s 240 fnt83 4217 2988(l)m 240 fnt78 4295 2980(,)m
-240 fnt83 4402 2988(r)m 240 fnt82 4560 2986(of)m 220 fnt35
-4831 2983(b)m 240 fnt82 5005 2986(must)m 5530(satisfy)s 240 fnt78
-480 2428(1)m 240 fnt83 586 2436(i)m 240 fnt78 721 2428(+)m
-922(\()s 1006(\()s 1090(1)s 240 fnt83 1196 2436(i)m
-240 fnt78 1331 2428(+)m 240 fnt83 1532 2436(l)m 240 fnt78
-1610 2428(\))m 1760(\255)s 1981(2)s 240 fnt83 2107 2436(i)m
-240 fnt78 2182 2428(\))m 2320(+)s 240 fnt83 2521 2436(r)m
-240 fnt78 2703 2428(\243)m 2913(5)s 240 fnt83 3032 2436(i)m
-240 fnt82 0 1883(This)m 478(time)s 960(the)s 240 fnt78
-1325 1877(\255)m 240 fnt82 1539 1883(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 1877(2)m 240 fnt83 8602 1885(i)m 240 fnt82 8728 1883(g)m 1(ap)k
-0 1595(if)m 217(necessary)s 1200(to)s 1439(pre)s 6(v)k 3(ent)k
-220 fnt35 2207 1592(a)m 240 fnt82 2384 1595(and)m 220 fnt35
-2788 1592(b)m 240 fnt82 2962 1595(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 1044(l)m 240 fnt78 1013 1036(\243)m
-288 fnt78 1223 1024(\245)m 240 fnt83 480 753(l)m 240 fnt78
-618 745(+)m 240 fnt83 819 753(r)m 240 fnt78 1013 745(\243)m
-1223(3)s 240 fnt83 1340 753(i)m 819 465(r)m 240 fnt78
-1013 457(\243)m 1223(2)s 240 fnt83 1349 465(i)m
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 31 32
-%%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(31)s 4700(-)s 0 13253(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 12965(by)m 294(three)s 827(inequalities)s 1979(of)s 2250(the)s
-2598(form)s 240 fnt83 851 12414(l)m 240 fnt78 1013 12406(\243)m
-240 fnt83 1223 12414(x)m 480 12123(l)m 240 fnt78 618 12115(+)m
-240 fnt83 819 12123(r)m 240 fnt78 1013 12115(\243)m 240 fnt83
-1223 12123(y)m 819 11808(r)m 240 fnt78 1013 11800(\243)m 240 fnt83
-1223 11808(z)m 240 fnt82 0 11287(where)m 240 fnt83 641 11289(x)m
-240 fnt82 747 11287(,)m 240 fnt83 855 11289(y)m 240 fnt82
-1018 11287(and)m 240 fnt83 1423 11289(z)m 240 fnt82 1575 11287(may)m
-2042(be)s 288 fnt78 2325 11269(\245)m 240 fnt82 2523 11287(.)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 11289(l)m
-240 fnt78 6658 11281(,)m 240 fnt83 6768 11289(r)m 240 fnt78
-6953 11281(\243)m 240 fnt83 7166 11289(x)m 240 fnt78 7285 11281(,)m
-240 fnt83 7395 11289(y)m 240 fnt78 7510 11281(,)m 240 fnt83
-7620 11289(z)m 240 fnt82 7711 11287(,)m 7819(and)s 8224(we)s
-8560(call)s 240 fnt83 8960 11289(x)m 240 fnt78 0 10993(,)m
-240 fnt83 107 11001(y)m 240 fnt78 221 10993(,)m 240 fnt83
-328 11001(z)m 240 fnt82 479 10999(a)m 240 fnt83 645 11001(size)m
-1056(constr)s 3(aint)k 240 fnt82 2027 10999(.)m 480 10625(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 10607(\245)m 240 fnt78 7514 10619(,)m 7659(5)s
-240 fnt83 7791 10627(i)m 240 fnt78 7879 10619(,)m 288 fnt78
-8025 10607(\245)m 240 fnt82 8296 10625(for)m 220 fnt35 8647 10622(a / b)m
-240 fnt82 0 10337(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 10334(b)m
-240 fnt82 2750 10337(.)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 10049(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 9761(deri)m 6(v)k 3(ed,)k 815(using)s 1387(the)s
-1735(object)s 240 fnt83 480 9265(x)m 168 fnt78 586 9172(1)m
-220 fnt35 772 9260(/)m 240 fnt83 956 9265(x)m 168 fnt78
-1062 9172(2)m 220 fnt35 1262 9260(/)m 240 fnt83 1446 9265(.)m
-1552(.)s 1658(.)s 220 fnt35 1812 9260(/)m 240 fnt83
-1996 9265(x)m 168 fnt83 2102 9178(n)m 240 fnt82 0 8719(where)m
-240 fnt83 640 8721(x)m 168 fnt83 746 8634(j)m 240 fnt82
-852 8719(has)m 1222(width)s 240 fnt83 1824 8721(l)m 168 fnt83
-1890 8634(j)m 240 fnt78 1948 8713(,)m 240 fnt83 2055 8721(r)m
-168 fnt83 2127 8634(j)m 240 fnt82 2233 8719(for)m 2571(all)s
-240 fnt83 2864 8721(j)m 240 fnt82 2930 8719(.)m 480 8345(Suppose)m
-1345(the)s 1689(whole)s 2326(object)s 2966(has)s 3333(width)s
-3931(constraint)s 240 fnt83 4929 8347(X)m 240 fnt78 5097 8339(,)m
-240 fnt83 5204 8347(Y)m 240 fnt78 5367 8339(,)m 240 fnt83
-5474 8347(Z)m 240 fnt82 5619 8345(,)m 5722(and)s 6123(we)s
-6454(require)s 7182(the)s 7526(width)s 8124(constraint)s 0 8057(of)m
-240 fnt83 271 8059(x)m 168 fnt83 377 7972(i)m 240 fnt82
-421 8057(.)m 586(Let)s 240 fnt83 965 8059(L)m 240 fnt78
-1185 8051(=)m 240 fnt82 1401 8057(max)m 168 fnt83 1808 7972(j)m
-240 fnt83 1917 8059(l)m 168 fnt83 1983 7972(j)m 240 fnt82
-2090 8057(and)m 240 fnt83 2495 8059(R)m 240 fnt78 2723 8051(=)m
-240 fnt82 2939 8057(max)m 168 fnt83 3346 7972(j)m 240 fnt83
-3455 8059(r)m 168 fnt83 3527 7972(j)m 240 fnt82 3573 8057(,)m
-3681(so)s 3948(that)s 240 fnt83 4367 8059(L)m 240 fnt78
-4512 8051(,)m 240 fnt83 4619 8059(R)m 240 fnt82 4821 8057(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 7746(L)m 240 fnt78 145 7738(,)m 240 fnt83 252 7746(R)m
-240 fnt78 477 7738(\243)m 240 fnt83 687 7746(X)m 240 fnt78
-855 7738(,)m 240 fnt83 962 7746(Y)m 240 fnt78 1125 7738(,)m
-240 fnt83 1232 7746(Z)m 240 fnt82 1377 7744(.)m 1541(Then)s
-240 fnt83 2090 7746(x)m 168 fnt83 2196 7659(i)m 240 fnt82
-2300 7744(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 7746(l)m
-168 fnt83 4977 7659(i)m 240 fnt78 5081 7738(,)m 240 fnt83
-5188 7746(r)m 168 fnt83 5260 7659(i)m 240 fnt82 5364 7744(satisfying)m
-240 fnt78 480 7151(\()m 240 fnt83 564 7159(l)m 168 fnt83
-630 7072(i)m 240 fnt78 758 7151(\255)m 240 fnt83 979 7159(L)m
-240 fnt78 1124 7151(\))m 1202(,)s 1309(\()s 240 fnt83
-1393 7159(r)m 168 fnt83 1465 7072(i)m 240 fnt78 1593 7151(\255)m
-240 fnt83 1814 7159(R)m 240 fnt78 1967 7151(\))m 2117(\243)s
-240 fnt83 2327 7159(X)m 240 fnt78 2495 7151(,)m 240 fnt83
-2602 7159(Y)m 240 fnt78 2765 7151(,)m 240 fnt83 2872 7159(Z)m
-240 fnt82 0 6619(which)m 642(e)s 3(xpands)k 1475(to)s
-1714(eight)s 2252(inequalities:)s 240 fnt83 917 6068(l)m 168 fnt83
-983 5981(i)m 240 fnt78 1123 6060(\243)m 240 fnt83 1333 6068(X)m
-894 5704(L)m 240 fnt78 1123 5696(\243)m 240 fnt83 1333 5704(X)m
-528 5413(l)m 168 fnt83 594 5326(i)m 240 fnt78 710 5405(+)m
-240 fnt83 911 5413(r)m 168 fnt83 983 5326(i)m 240 fnt78
-1123 5405(\243)m 240 fnt83 1333 5413(Y)m 503 5041(l)m 168 fnt83
-569 4954(i)m 240 fnt78 685 5033(+)m 240 fnt83 886 5041(R)m
-240 fnt78 1123 5033(\243)m 240 fnt83 1333 5041(Y)m 505 4677(L)m
-240 fnt78 710 4669(+)m 240 fnt83 911 4677(r)m 168 fnt83
-983 4590(i)m 240 fnt78 1123 4669(\243)m 240 fnt83 1333 4677(Y)m
-480 4313(L)m 240 fnt78 685 4305(+)m 240 fnt83 886 4313(R)m
-240 fnt78 1123 4305(\243)m 240 fnt83 1333 4313(Y)m 911 4030(r)m
-168 fnt83 983 3943(i)m 240 fnt78 1123 4022(\243)m 240 fnt83
-1333 4030(Z)m 886 3666(R)m 240 fnt78 1123 3658(\243)m 240 fnt83
-1333 3666(Z)m 240 fnt82 0 3159(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 2608(l)m 168 fnt83 935 2521(i)m 240 fnt78
-1075 2600(\243)m 240 fnt83 1285 2608(X)m 869 2236(l)m 168 fnt83
-935 2149(i)m 240 fnt78 1075 2228(\243)m 240 fnt83 1285 2236(Y)m
-240 fnt78 1508 2228(-)m 240 fnt83 1708 2236(R)m 480 1864(l)m
-168 fnt83 546 1777(i)m 240 fnt78 662 1856(+)m 240 fnt83
-863 1864(r)m 168 fnt83 935 1777(i)m 240 fnt78 1075 1856(\243)m
-240 fnt83 1285 1864(Y)m 863 1500(r)m 168 fnt83 935 1413(i)m
-240 fnt78 1075 1492(\243)m 240 fnt83 1285 1500(Z)m 863 1136(r)m
-168 fnt83 935 1049(i)m 240 fnt78 1075 1128(\243)m 240 fnt83
-1285 1136(Y)m 240 fnt78 1508 1128(-)m 240 fnt83 1708 1136(L)m
-
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 32 33
-%%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
-0 LoutMargSet
-grestore
-4288 13844(-)m 4416(32)s 4710(-)s 0 13253(Therefore)m 997(the)s
-1345(width)s 1947(constraint)s 2949(of)s 240 fnt83 3220 13255(x)m
-168 fnt83 3326 13168(i)m 240 fnt82 3430 13253(is)m 480 12715(min)m
-240 fnt78 861 12709(\()m 240 fnt83 945 12717(X)m 240 fnt78
-1113 12709(,)m 240 fnt83 1220 12717(Y)m 240 fnt78 1443 12709(-)m
-240 fnt83 1643 12717(R)m 240 fnt78 1796 12709(\))m 1874(,)s
-240 fnt83 1981 12717(Y)m 240 fnt78 2144 12709(,)m 240 fnt82
-2251 12715(min)m 240 fnt78 2632 12709(\()m 240 fnt83 2716 12717(Z)m
-240 fnt78 2873 12709(,)m 240 fnt83 2980 12717(Y)m 240 fnt78
-3203 12709(-)m 240 fnt83 3403 12717(L)m 240 fnt78 3548 12709(\))m
-240 fnt82 0 12213(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 12215(WIDE)m 240 fnt82
-7641 12213(or)m 240 fnt83 7918 12215(HIGH)m 240 fnt82 8604 12213(node)m
-0 11925(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 11637(of)m 271(procedure)s 240 fnt83 1283 11639(Constr)m 3(ained)k
-240 fnt82 2530 11637(in)m 2773(Basser)s 3470(Lout.)s 480 11263(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 10975(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 10687(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 10399(change.)m 830(These)s
-1445(rules)s 1948(are)s 2283(embodied)s 3273(in)s 3504(procedure)s
-240 fnt83 4504 10401(AdjustSize)m 240 fnt82 5541 10399(of)m 5800(Basser)s
-6485(Lout.)s 7089(The)s 7505(adjustment)s 8601(must)s 0 10111(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 9462(5.4.)m 471(The)s 926(limited)s
-1696(lookahead)s 2802(pr)s 4(oblem)k 240 fnt82 480 8985(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 8697(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 8409(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 8121(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 7747(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 7459(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 7171(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 6883(pages,)m 652(a)s 220 fnt35 818 6880(@BodyT)m 26(e)k 6(xt)k
-240 fnt82 1991 6883(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 6880(@Chapter)m
-240 fnt82 5934 6883(g)m 1(alle)k 3(ys)k 6658(tar)s 4(geted)k
-7481(into)s 220 fnt35 7905 6880(@BodyT)m 26(e)k 6(xt)k
-240 fnt82 9019 6883(,)m 0 6595(and)m 220 fnt35 404 6592(@Section)m
-240 fnt82 1404 6595(g)m 1(alle)k 3(ys)k 2128(tar)s 4(geted)k
-2951(into)s 3376(the)s 220 fnt35 3724 6592(@Chapter)m 240 fnt82
-4787 6595(g)m 1(alle)k 3(ys:)k 220 fnt35 480 6094(@P)m 8(ageList)k
-480 5806(//)m 480 5518(@BodyT)m 26(e)k 6(xt)k 480 5230(//)m
-480 4942(@Chapter {)m 480 4654( @Section { ...)m 13( })k 480 4366( @Section { ...)m 13( })k
-480 4078( ...)m 480 3790( @Section { ...)m 13( })k 480 3502(})m 480 3214(@Chapter {)m
-480 2926( ...)m 480 2638(})m 240 fnt82 0 2144(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 1853(//)m 240 fnt82 185 1856(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 1482(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 1479(@Chapter)m 240 fnt82 7550 1482(or)m 220 fnt35
-7848 1479(@Section)m 240 fnt82 8788 1482(,)m 8934(it)s 0 1194(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 1191(@Input)m 240 fnt82 6784 1194(is)m
-7019(substituted)s 8139(for)s 8502(the)s 8876(as)s 0 906(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 618(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 615(@Input)m 240 fnt82 6231 618(.)m 6410(The)s
-6853(g)s 1(alle)k 3(y)k 7502(is)s 7727(then)s
-8212(resumed.)s
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 33 34
-%%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
-1 LoutMargSet
-grestore
-4293 13844(-)m 4421(33)s 4705(-)s 0 13253(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 12965(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 12962(@Input)m 240 fnt82 8045 12965(symbols)m 8916(is)s
-0 12677(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 12389(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 12101(parse)m
-551(tree)s 954(form)s 1468(from)s 1983(an)s 240 fnt83
-2256 12103(UN)m 6(A)k 8(TT)k 12(A)k 7(CHED)k
-240 fnt82 3811 12101(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 11813(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 11439(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 11151(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 11148(@F)m 6(ootSect)k
-240 fnt82 7044 11151(symbol)m 7810(at)s 8049(the)s 8403(foot)s
-8855(of)s 0 10863(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 10489(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 10486(@F)m 6(ootSect)k
-240 fnt82 6874 10489(can)m 7281(be)s 7581(deleted)s 8347(as)s
-8616(soon)s 0 10201(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 10198(@F)m 6(ootNote)k
-240 fnt82 8402 10201(g)m 1(alle)k 3(ys)k 0 9913(\(with)m
-220 fnt35 555 9910(@F)m 6(ootPlace&&f)k 6(ollo)k 3(wing)k
-240 fnt82 2935 9913(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 9910(@F)m 6(ootSect)k 240 fnt82 0 9625(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 9251(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 8963(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 8960(@Chapter)m 240 fnt82 5781 8963(,)m 220 fnt35 5879 8960(@Section)m
-240 fnt82 6819 8963(,)m 220 fnt35 6916 8960(@BodyT)m 26(e)k 6(xt)k
-240 fnt82 8030 8963(\))m 8149(as)s 240 fnt83 8389 8965(for)m 8(cing)k
-0 8677(galle)m 7(ys)k 240 fnt82 665 8675(,)m 792(by)s
-1107(writing)s 220 fnt35 1871 8672(f)m 6(orce into)k 240 fnt82
-2841 8675(instead)m 3596(of)s 220 fnt35 3888 8672(into)m 240 fnt82
-4315 8675(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 8387(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 8099(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 7811(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 7808(@F)m 6(ootSect)k 240 fnt82 4395 7811(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 7523(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 7235(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 6861(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 6573(direction)m 917(is)s 220 fnt35
-1139 6570(f)m 6(ollo)k 3(wing)k 240 fnt82 1969 6573(,)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 6285(to)m 248(be)s 539(sorted.)s 1296(If)s
-1535(the)s 1892(direction)s 2807(is)s 220 fnt35 3026 6282(preceding)m
-240 fnt82 3977 6285(,)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 0 5997(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 5709(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 5335(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 5047(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 4759(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 4471(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 4183(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 3895(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 3246(5.5.)m 471(Horizontal)s
-1628(galleys)s 240 fnt82 480 2769(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 2481(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 2193(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 2195(horizontal)m
-7384(galle)s 7(ys)k 240 fnt82 8049 2193(,)m 8162(and)s
-8572(sho)s 6(w)k 0 1905(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 1617(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 1329(Lout)m 512(interpreter)s 13(.)k 480 955(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 667(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 664(hor)m -3(iz)k 3(ontally)k 5582(into)s
-240 fnt82 5977 667(clause.)m 6728(Then)s 7266(all)s 7549(object)s
-8182(breaking,)s
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 34 35
-%%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 13844(-)m 4416(34)s 4710(-)s 0 13253(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 12752(def @P)m 8(ar)k 2(ag)k 2(r)k 2(aph r)k -3(ight x)k
-480 12464({)m 480 12176( def @LinePlace { @Galle)m 4(y })k 480 11600( def @LineList)m 480 11312( {)m
-480 11024( @HExpand @LinePlace)m 480 10736( //1vx @LineList)m 480 10448( })m 480 9872( def @P)m 8(ar hor)k -3(iz)k 3(ontally into { @LinePlace&&preceding })k
-480 9584( r)m -3(ight x)k 480 9296( { x })m 480 8720( @LineList // @P)m 8(ar { 0.2i @Wide {} &0i x &1r)k -8(t })k
-480 8432(})m 240 fnt82 0 7938(The)m 220 fnt35 431 7935(@HExpand)m
-240 fnt82 1607 7938(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 7650(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 7362(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 7359(&1r)m -8(t)k
-240 fnt82 5853 7362(,)m 5969(which)s 6620(cause)s 7216(the)s
-7573(parameter)s 8596(to)s 8844(be)s 0 7074(already)m 757(e)s 3(xpanded.)k
-1836(The)s 2264(result)s 2854(of)s 220 fnt35 480 6573(@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 6074(w)m 2(ould)k 655(then)s 1124(be)s
-1406(something)s 2456(lik)s 2(e)k 768 5571(A)m 1073(short)s
-1687(paragraph)s 480 5283(of)m 751(te)s 3(xt.)k 0 4830(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 4542(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 4168(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 3880(concatenation)m 1380(operator)s 9(,)k 2269(for)s 2602(e)s 3(xample)k
-220 fnt35 3459 3877(|0.5i)m 240 fnt82 3855 3880(.)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 3592(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 3304(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 3301(@LineList)m 240 fnt82 8215 3304(:)m 220 fnt35 480 2803(def @LineList)m
-480 2515({)m 480 2227( |0.5i @HExpand @LinePlace)m 480 1939( //1vx @LineList)m 480 1651(})m 240 fnt82
-0 1157(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 869(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 495(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
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 35 36
-%%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(35)s 4706(-)s 0 13250(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 12962(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 12674(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 12199(1)m
-240 fnt82 559 12104(See)m 987(Jones)s 1597(and)s 2028(Saunders)s
-2983(\(1982\).)s 200 fnt82 3932 12199(2)m 240 fnt82 4027 12104(Or)m
-4366(so)s 4659(Jacobsen)s 480 11804(\(1973\))m 1167(asserts.)s 200 fnt82
-2087 11899(3)m 240 fnt83 2174 11806(ibid)m 240 fnt82 2552 11804(,)m
-2659(p.)s 2883(327.)s 0 11301(based)m 603(on)s 900(an)s
-1183(in\207nite)s 1916(horizontal)s 2940(sequence)s 3873(of)s 220 fnt35
-4144 11298(@F)m 6(ootPlace)k 240 fnt82 5400 11301(symbols)m 6249(inside)s
-6876(a)s 7042(horizontal)s 8066(g)s 1(alle)k 3(y)k 15(.)k
-480 10927(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 10639(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 10351(and)m 404(so)s
-670(could)s 1260(\207ll)s 1580(non-rectangular)s 3153(shapes.)s 480 9977(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 9689(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 9401(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 9113(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 8825(implement)m 1082(them.)s 480 8451(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 8163(of)m 319(enclosing)s 1337(each)s 1880(paragraph)s 2941(in)s
-220 fnt35 3233 8160(@P)m 8(ar)k 2(ag)k 2(r)k 2(aph { ...)k 13( })k
-240 fnt82 5064 8163(or)m 5371(whate)s 6(v)k 3(er)k
-6346(is)s 6604(unacceptable.)s 8065(Permitting)s 0 7875(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 7587(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 7299(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 7011(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 6723(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 6435(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 6432(@T)m 26(e)k 6(xtPlace)k
-240 fnt82 6487 6435(and)m 220 fnt35 6898 6432(@F)m 6(ootSect)k
-240 fnt82 7989 6435(\),)m 8182(and)s 8593(there)s 0 6147(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 5859(these)m
-547(dif)s 6(ferent)k 1422(approaches)s 2549(can)s 2938(be)s
-3220(reconciled.)s 240 fnt84 0 5066(6.)m 291(Cr)s 4(oss)k
-926(r)s 4(efer)k 4(ences)k 240 fnt82 480 4634(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 4346(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 4058(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 3770(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 3396(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 3108(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 2820(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 2532(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 2244(language)m
-920(design)s 1602(problem.)s 240 fnt84 0 1595(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 1164(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 876(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
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 36 37
-%%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 13842(-)m 4416(36)s 4709(-)s 220 fnt35 480 13253(def @Ref)m 6(erence)k
-480 12965( named @T)m 26(ag {})k 480 12677( named @A)m 6(uthor {})k 480 12389( named @Title {})m
-480 12101( named @Jour)m -5(nal {})k 480 11813({})m 240 fnt82 0 11319(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 11316(@Ref)m 6(erence)k 240 fnt82
-4055 11319(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 11031(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 10740(@T)m 26(ag)k 240 fnt82
-623 10743(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 10369(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 10081(gi)m 6(v)k 3(en)k 580(tag:)s
-220 fnt35 480 9580(@Ref)m 6(erence&&kingston91)k 240 fnt82 0 9081(This)m
-240 fnt83 534 9083(cr)m 10(oss)k 1143(r)s 8(efer)k 8(ence)k
-240 fnt82 2141 9081(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 8793(we)m
-335(write)s 220 fnt35 480 8341(@Ref)m 6(erence&&kingston91 @Open { @A)k 6(uthor)k 11(, @Title })k
-240 fnt82 0 7842(The)m 220 fnt35 484 7839(@Open)m 240 fnt82
-1347 7842(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 7554(e)m 3(xported)k
-892(parameters)s 1990(of)s 2261(its)s 2537(left.)s 480 7180(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 6892(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 6601(preceding)m 240 fnt82
-1049 6604(and)m 220 fnt35 1491 6601(f)m 6(ollo)k 3(wing)k
-240 fnt82 2321 6604(;)m 2471(for)s 2848(e)s 3(xample,)k
-220 fnt35 3800 6601(@Sym&&f)m 6(ollo)k 3(wing)k 240 fnt82
-5682 6604(will)m 6146(point)s 6737(to)s 7014(the)s 7400(closest)s
-8149(follo)s 6(wing)k 0 6316(in)m 9(v)k 4(ocation)k
-1083(of)s 220 fnt35 1383 6313(@Sym)m 240 fnt82 2121 6316(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 6028(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 5740(to)m 239(running)s 1037(headers.)s 480 5366(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
-0 5078(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 4790(on)m 303(which)s
-952(the)s 1306(chapter)s 2076(whose)s 2750(tag)s 3102(is)s
-220 fnt35 3318 4787(intro)m 240 fnt82 3804 4790(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 4499(@Chapter&&intro)m 240 fnt82 1714 4502(,)m 1821(then)s
-2290(from)s 2814(there)s 3347(to)s 220 fnt35 3586 4499(@P)m 8(age&&preceding)k
-240 fnt82 5556 4502(,)m 5663(where)s 6303(the)s 6651(page)s
-7159(number)s 7950(is)s 8160(kno)s 6(wn.)k 480 4128(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 3627(@Chapter&&intro @Open {)m 480 3339( @P)m 8(age&&preceding @Open { @P)k 8(ageNum })k
-480 3051(})m 240 fnt82 0 2557(b)m 4(ut)k 363(this)s
-761(f)s 2(ails)k 1222(because)s 220 fnt35 2037 2554(@P)m 8(age&&preceding)k
-240 fnt82 4069 2557(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 2269(of)m 220 fnt35 271 2266(@Chapter&&intro)m 240 fnt82 2045 2269(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 1768(def @Chapter)m 480 1480( named @P)m 8(ageNum { @P)k 8(age&&preceding @Open { @P)k 8(ageNum } })k
-480 1192( ...)m 240 fnt82 0 741(with)m 482(the)s 220 fnt35
-830 738(@P)m 8(age&&preceding)k 240 fnt82 2860 741(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 240(@Chapter&&intro @Open { @P)m 8(ageNum })k
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 37 38
-%%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
-1 LoutMargSet
-grestore
-4291 13844(-)m 4419(37)s 4707(-)s 0 13253(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 12962(@P)m 8(age&&preceding)k 240 fnt82 2015 12965(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 12677(speci\207cally)m 1142(for)s 1480(this)s 1876(case:)s 220 fnt35
-480 12176(@P)m 8(age&&{ @Preceding @Chapter&&intro })k 240 fnt82 0 11677(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 11389(the)m 348(e)s 3(xpected)k
-1253(cross)s 1795(reference)s 220 fnt35 2738 11386(@P)m 8(age&&preceding)k
-240 fnt82 4768 11389(does)m 5258(not)s 5624(appear)s 13(.)k
-480 11015(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 10727(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 10724(preceding)m
-240 fnt82 5578 10727(and)m 220 fnt35 5994 10724(f)m 6(ollo)k 3(wing)k
-240 fnt82 6897 10727(tags,)m 7401(to)s 7652(see)s 8025(if)s
-8254(a)s 8433(simple)s 0 10439(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 10436(@T)m 26(agged)k 240 fnt82
-6358 10439(operator:)m 220 fnt35 480 9938(@P)m 8(age&&preceding @T)k 26(agged intro)k
-240 fnt82 0 9439(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 9436(intro)m
-240 fnt82 6391 9439(as)m 6645(an)s 6933(e)s 3(xtra)k
-7471(tag)s 7820(to)s 8063(the)s 8416(closest)s 0 9151(preceding)m
-996(in)s 9(v)k 4(ocation)k 2050(of)s 220 fnt35
-2321 9148(@P)m 8(age)k 240 fnt82 3040 9151(,)m 3147(so)s
-3413(that)s 220 fnt35 480 8650(@P)m 8(age&&intro @Open { @P)k 8(ageNum })k
-240 fnt82 0 8151(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 8148(@T)m 26(agged)k 240 fnt82 0 7863(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 7214(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 6737(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 6449(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 6161(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 5873(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 5585(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
-0 5297(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 5009(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 4721(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 4347(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 4059(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 3771(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 3483(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 3195(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 2821(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 2823(database)m 0 2535(\207les)m
-240 fnt82 380 2533(,)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 2535(inde)m 4(x)k
-4650(\207le)s 240 fnt82 4992 2533(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 2245(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 1744(@Chapter&&intro ch1.ld 57)m 240 fnt82 0 1248(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 960(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 672(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 298(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
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 38 39
-%%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
-4291 13844(-)m 4419(38)s 4706(-)s 0 13253(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 12965(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 12677(with)m
-476(tags)s 906(other)s 1451(than)s 220 fnt35 1913 12674(preceding)m
-240 fnt82 2918 12677(and)m 220 fnt35 3316 12674(f)m 6(ollo)k 3(wing)k
-240 fnt82 4200 12677(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 12389(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 12101(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 11813(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 11525(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 11237(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 10949(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 10575(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 10287(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 9999(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 9711(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 9423(all)m 293(be)s 575(formatted)s 1561(together)s 13(.)k
-480 9049(When)m 1120(a)s 220 fnt35 1297 9046(preceding)m 240 fnt82
-2319 9049(or)m 220 fnt35 2590 9046(f)m 6(ollo)k 3(wing)k
-240 fnt82 3491 9049(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 8761(type)m 240 fnt83 474 8763(CR)m 9(OSS_PREC)k
-240 fnt82 1973 8761(or)m 240 fnt83 2238 8763(CR)m 9(OSS_FOLL)k
-240 fnt82 3653 8761(,)m 3766(together)s 4615(with)s 5103(an)s
-5392(automatically)s 6752(generated)s 7745(tag)s 8097(composed)s 0 8473(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 8185(to)m 237(a)s 240 fnt83 401 8187(CR)m 9(OSS_T)k 12(ARG)k
-240 fnt82 1875 8185(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 7897(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 7609(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 7321(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 7033(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 7030(preceding)m 240 fnt82
-0 6745(and)m 220 fnt35 408 6742(f)m 6(ollo)k 3(wing)k
-240 fnt82 1302 6745(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 6457(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 6083(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 6080(@T)m 26(agged)k
-240 fnt82 5231 6083(operator)m 9(,)k 6151(whose)s 6845(implementation)s
-8428(is)s 8665(no)s 6(w)k 0 5795(immediate:)m 1106(for)s
-1436(each)s 220 fnt35 1923 5792(@T)m 26(agged)k 240 fnt82
-2903 5795(operator)m 3751(we)s 4078(produce)s 4897(one)s 240 fnt83
-5290 5797(CR)m 9(OSS_PREC)k 240 fnt82 6775 5795(or)m 240 fnt83
-7026 5797(CR)m 9(OSS_FOLL)k 240 fnt82 8492 5795(g)m 1(alle)k 3(y)k
-0 5507(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 5504(@T)m 26(agged)k
-240 fnt82 7331 5507(operator)m 13(.)k 8288(Nothing)s 0 5219(more)m
-547(is)s 757(required.)s 240 fnt84 0 4426(7.)m 291(Conclusion)s
-240 fnt82 480 3994(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 3706(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 3418(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 3130(\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 2756(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 2468(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 2180(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 1892(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 1604(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 1316(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 1028(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 740(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 366(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 78(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
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 39 40
-%%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
-4289 13844(-)m 4417(39)s 4708(-)s 0 13251(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 12963(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 12675(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 12387(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 12099(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 11811(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 11437(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 11149(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 10861(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 10863(ftp)m
-240 fnt82 6458 10861(,)m 6567(so)s 6835(the)s 7185(e)s 3(xtent)k
-7828(of)s 8101(its)s 8379(outside)s 0 10573(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 10285(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 9997(the)m 348(standard)s
-1216(packages.)s 480 9623(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 9335(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 9047(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 8759(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 8471(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 8183(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 7895(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 7146(Note.)m 240 fnt82 657 7147(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 6859(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 6110(Ackno)m 2(wledgment.)k 240 fnt82 2027 6111(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 5823(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 5535(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 240 fnt84 0 4742(Refer)m 4(ences)k
-240 fnt82 0 4288(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 4000(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 3497(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 3209(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 2706(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 2418(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 2420(pub)m 240 fnt82 4326 2418(subdirectory)m
-5595(of)s 5885(the)s 6252(home)s 6859(directory)s 7794(of)s
-240 fnt83 8084 2420(ftp)m 240 fnt82 8408 2418(to)m 8667(host)s
-240 fnt83 480 2132(ftp.cs.su.oz.au)m 240 fnt82 1924 2130(with)m 2439(login)s
-3021(name)s 240 fnt83 3628 2132(anonymous)m 240 fnt82 4808 2130(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 1842(a)m 4(v)k 6(ailable)k
-1388(for)s 1726(non-)s 240 fnt83 2154 1844(ftp)m 240 fnt82
-2459 1842(sites.)m 3047(All)s 3407(enquiries)s 4334(to)s 4573(jef)s 6(f@cs.su.oz.au.)k
-0 1339(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 1051(concepts,)m 1424(and)s 1828(issues)s 2390(.)s 240 fnt83
-2554 1053(Computing)m 3673(Surve)s 7(ys)k 240 fnt84 4465 1050(14)m
-240 fnt82 4699 1051(,)m 4806(417\211472)s 5700(\(1982\))s 6327(.)s
-0 546(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 260(Communications)m 2158(of)s 2439(the)s
-2784(A)s 7(CM)k 240 fnt84 3351 257(18)m 240 fnt82
-3585 258(,)m 3692(182\211193)s 4576(\(1975\))s 5203(.)s
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 40 41
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ 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
-4287 13844(-)m 4415(40)s 4710(-)s 0 13252(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 12964(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 12459(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 12461(Pr)m 10(oceed)k
-240 fnt82 8998 12459(-)m 240 fnt83 480 12173(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 12171(-)m 240 fnt83
-480 11885(gas)m 868(NV)s 240 fnt82 1192 11883(,)m 1299(pages)s
-1895(24\21131)s 2470(,)s 2577(1980)s 3052(.)s 0 11378(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 11090(Murray)m 1251(Hill,)s 1729(NJ)s
-2051(07974)s 2645(.)s 0 10585(9.)m 480(Knuth,)s 1186(Donald)s
-1949(E..)s 240 fnt83 2319 10587(The)m 2731(T)s 2882 10539(E)m
-3033 10587(XBook)m 240 fnt82 3675 10585(.)m 3839(Addison-W)s 19(esle)k 3(y)k
-5419(,)s 5526(1984)s 6000(.)s 0 10082(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 9794(\(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 9506(\(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 9003(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 8715(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 8212(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 7924(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 7421(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 7423(IEEE)m
-6490(Computer)s 240 fnt82 7453 7421(,)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: 41
-%%EOF
diff --git a/doc/expert/README b/doc/expert/README
index 9b9c3e0..d066d57 100644
--- a/doc/expert/README
+++ b/doc/expert/README
@@ -16,4 +16,4 @@ copy of the final outfile.ps is included. There
should be no warning messages on the fifth run.
Jeffrey H. Kingston
-!7 September 1999
+26 February 2000
diff --git a/doc/expert/all b/doc/expert/all
index 46471c0..e2a5a78 100644
--- a/doc/expert/all
+++ b/doc/expert/all
@@ -10,9 +10,9 @@ Lout
Document Formatting System }
@Author { Jeffrey H. Kingston }
- @Edition { Version 3.17
-September, 1999 }
- @Publisher { @I { @CopyRight Copyright 1991, 1999, Jeffrey
+ @Edition { Version 3.18
+February, 2000 }
+ @Publisher { @I { @CopyRight Copyright 1991, 2000, Jeffrey
H. Kingston, Basser Department of Computer Science, The University
of Sydney 2006, Australia.} }
@InitialLanguage { English }
diff --git a/doc/expert/det_gall b/doc/expert/det_gall
index e68d58f..e5e6e99 100644
--- a/doc/expert/det_gall
+++ b/doc/expert/det_gall
@@ -325,24 +325,33 @@ enclose.sym @Index @@Enclose
meaning: when components of the galley replace a @@Galley or @@ForceGalley
symbol, that symbol is first replaced by @@Enclose @@Galley or
@@Enclose @@ForceGalley. For example,
-@ID @Code {
-"def @Enclose"
-" right x"
-"{"
-" @Box x"
-"}"
+@ID @Code @Verbatim {
+def @Figure into @FigurePlace&&following
+ right @Body
+{
+ def @Enclose
+ right x
+ {
+ @Box x
+ }
+
+ @Body
+}
}
-within some galley definition causes each @@Galley or @@ForceGalley
-symbol that receives components of the galley to be replaced by
-{@Code "@Box @Galley"} or {@Code "@Box @ForceGalley"}, assuming an
-appropriate definition of @Code "@Box". This is useful, for example,
-when producing multi-page boxed displays, figures, and tables.
+causes each @@Galley or @@ForceGalley symbol that receives components of
+galley @Code "@Figure" to be replaced by {@Code "@Box @Galley"} or
+{@Code "@Box @ForceGalley"}, assuming an appropriate definition of
+@Code "@Box". This is useful, for example, when producing multi-page
+boxed displays, figures, and tables.
@PP
An @@Enclose symbol may have only one parameter, which must be a
right parameter. It would not make sense to allow more parameters,
since there is no suitable value to assign to them. However, the
@@Enclose symbol may contain inner definitions, and it may make use
-of any symbol that is available at that point, in the usual way.
+of any symbol that is available at that point, in the usual way. The
+@@Enclose symbol may be a named parameter (itself with a right parameter)
+of the galley symbol, rather than an inner definition as shown above,
+if desired.
@PP
A @Code "following" galley may fail to find a first target lying in a
following component of the same galley as its invocation point. This is
diff --git a/doc/expert/det_lexi b/doc/expert/det_lexi
index e0ad9f1..4f98875 100644
--- a/doc/expert/det_lexi
+++ b/doc/expert/det_lexi
@@ -98,6 +98,8 @@ do so. The complete list of predefined identifiers is
@JL "@CurrFace"
@JL "@CurrFamily"
@JL "@CurrLang"
+ @JL "@CurrYUnit"
+ @JL "@CurrZUnit"
@JL "@Database"
@JL "@End"
@JL "@Enclose"
@@ -117,9 +119,9 @@ do so. The complete list of predefined identifiers is
@JL "@HLimited"
@JL "@HScale"
@JL "@HShift"
- @JL "@HSpan"
} |4.4cx {
- "@Include"
+ "@HSpan"
+ @JL "@Include"
@JL "@IncludeGraphic"
@JL "@Insert"
@JL "@KernShrink"
@@ -142,15 +144,16 @@ do so. The complete list of predefined identifiers is
@JL "@OneRow"
@JL "@Open"
@JL "@Optimize"
+ @JL "@Outline"
@JL "@PAdjust"
@JL "@PageLabel"
@JL "@PlainGraphic"
@JL "@Plus"
@JL "@PrependGraphic"
@JL "@RawVerbatim"
- @JL "@Rotate"
} |4.4cx {
- "@Rump"
+ "@Rotate"
+ @JL "@Rump"
@JL "@Scale"
@JL "@SetColor"
@JL "@SetColour"
diff --git a/doc/expert/det_size b/doc/expert/det_size
index aea894b..56738ac 100644
--- a/doc/expert/det_size
+++ b/doc/expert/det_size
@@ -26,6 +26,7 @@ measurement (Section {@NumberOf yunit}); }
(also defining the @Code v unit); }
@ListItem { Whether to permit hyphenation or not; }
@ListItem { What colour the object is to appear in; }
+@ListItem { Whether @@Outline is in effect; }
@ListItem { The language of the object; }
@ListItem { Whether @@VAdjust, @@HAdjust and @@PAdjust are in effect. }
@EndList
@@ -34,16 +35,16 @@ document. For example, the style of a parameter depends on where it is
used; the style of a galley is the style of the first target that it
attempts to attach itself to. Of course, the style of any object can be
changed by using the @@Font, @@Break, @@Space, @@SetColour or
-@@SetColor, and @@Language symbols.
+@@SetColor, @@Outline, and @@Language symbols.
@PP
There are no standard default values for style, except that small capitals
-are initially off, the interpretation of white space is initially {@Code
-lout}, and the values of the @Code y and @Code z units are zero. Therefore
-one must ensure that the root galley or each of its components is enclosed
-in @@Font, @@Break, @@SetColour or @@SetColor, and @@Language symbols. From
-there the style is passed to incoming galleys and the objects within
-them. Enclosure in @@Space is not required because the @Code "s" unit
-is also set by @@Font (Section {@NumberOf space}).
+and outlining are initially off, the interpretation of white space is
+initially {@Code lout}, and the values of the @Code y and @Code z units
+are zero. Therefore one must ensure that the root galley or each of its
+components is enclosed in @@Font, @@Break, @@SetColour or @@SetColor, and
+@@Language symbols. From there the style is passed to incoming galleys
+and the objects within them. Enclosure in @@Space is not required because
+the @Code "s" unit is also set by @@Font (Section {@NumberOf space}).
@PP
width. @Index { Width of an object }
height. @Index { Height of an object }
diff --git a/doc/expert/mydefs b/doc/expert/mydefs
index e7f0d15..0a4d364 100644
--- a/doc/expert/mydefs
+++ b/doc/expert/mydefs
@@ -24,6 +24,8 @@
def @@CurrLang { @Code "@CurrLang" }
def @@CurrFamily { @Code "@CurrFamily" }
def @@CurrFace { @Code "@CurrFace" }
+ def @@CurrYUnit { @Code "@CurrYUnit" }
+ def @@CurrZUnit { @Code "@CurrZUnit" }
def @@Database { @Code "@Database" }
def @@End { @Code "@End" }
def @@Enclose { @Code "@Enclose" }
@@ -60,9 +62,10 @@
def @@OneOf { @Code "@OneOf" }
def @@OneRow { @Code "@OneRow" }
def @@Open { @Code "@Open" }
+ def @@Outline { @Code "@Outline" }
def @@PAdjust { @Code "@PAdjust" }
def @@PageLabel { @Code "@PageLabel" }
- def @@PlainGraphic { @Code "@PlainGraphic" }
+ def @@PlainGraphic { @Code "@PlainGraphic" }
def @@PrependGraphic { @Code "@PrependGraphic" }
def @@RawVerbatim { @Code "@RawVerbatim" }
def @@Rotate { @Code "@Rotate" }
diff --git a/doc/expert/outfile.ps b/doc/expert/outfile.ps
deleted file mode 100644
index 477b7da..0000000
--- a/doc/expert/outfile.ps
+++ /dev/null
@@ -1,15746 +0,0 @@
-%!PS-Adobe-3.0
-%%Creator: Basser Lout Version 3.17 (September 1999)
-%%CreationDate: Fri Sep 17 12:08:04 1999
-%%DocumentData: Binary
-%%DocumentNeededResources: (atend)
-%%DocumentMedia: Plain 595 842 0 white ()
-%%DocumentSuppliedResources: (atend)
-%%Pages: (atend)
-%%BoundingBox: 0 0 595 842
-%%EndComments
-
-%%BeginProlog
-%%BeginResource: procset LoutStartUp
-/m { 3 1 roll moveto show } bind def
-/s { exch currentpoint exch pop moveto show } bind def
-/k { exch neg 0 rmoveto show } 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 /usr/staff/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 /usr/staff/jeff/lout.lib/include/figf.lpg
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% %
-% PostScript @SysPrependGraphic file for @Fig Jeffrey H. Kingston %
-% Version 2.0 (includes CIRCUM label) January 1992 %
-% %
-% To assist in avoiding name clashes, the names of all symbols %
-% defined here begin with "lfig". However, this is not feasible %
-% with user-defined labels and some labels used by users. %
-% %
-% <point> is two numbers, a point. %
-% <length> is one number, a length %
-% <angle> is one number, an angle in degrees %
-% <dashlength> is one number, the preferred length of a dash %
-% %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-errordict begin
- /handleerror
- {
- { /Times-Roman findfont 8 pt scalefont setfont
- 0 setgray 4 pt 4 pt moveto
- $error /errorname get
- dup lfigdict exch known
- { lfigdict exch get }
- { 30 string cvs } ifelse
- show
- ( Command: ) show
- $error /command get 30 string cvs show
- } stopped {} if
- showpage stop
- } def
-end
-
-% concat strings: <string> <string> lfigconcat <string>
-% must be defined outside lfigdict since used in lfigpromotelabels
-/lfigconcat
-{ 2 copy length exch length add string
- dup 0 4 index putinterval
- dup 3 index length 3 index putinterval
- 3 1 roll pop pop
-} def
-
-% <string> lfigdebugprint -
-% must be defined outside lfigdict since used in arbitrary places
-% /lfigdebugprint
-% { print
-% (; operand stack:\n) print
-% count copy
-% count 2 idiv
-% { ==
-% (\n) print
-% } repeat
-% (\n) print
-% } def
-
-/lfigdict 120 dict def
-lfigdict begin
-
-% error messages
-/dictfull (dictfull error: too many labels?) def
-/dictstackoverflow (dictstackoverflow error: labels nested too deeply?) def
-/execstackoverflow (execstackoverflow error: figure nested too deeply?) def
-/limitcheck (limitcheck error: figure nested too deeply or too large?) def
-/syntaxerror (syntaxerror error: syntax error in text of figure?) def
-/typecheck (typecheck error: syntax error in text of figure?) def
-/undefined (undefined error: unknown or misspelt label?) def
-/VMError (VMError error: run out of memory?) def
-
-% push pi onto stack: - lfigpi <num>
-/lfigpi 3.14159 def
-
-% arc directions
-/clockwise false def
-/anticlockwise true def
-
-% maximum of two numbers: <num> <num> lfigmax <num>
-/lfigmax { 2 copy gt { pop } { exch pop } ifelse } def
-
-% minimum of two numbers: <num> <num> lfigmin <num>
-/lfigmin { 2 copy lt { pop } { exch pop } ifelse } def
-
-% add two points: <point> <point> lfigpadd <point>
-/lfigpadd { exch 3 1 roll add 3 1 roll add exch } def
-
-% subtract first point from second: <point> <point> lfigpsub <point>
-/lfigpsub { 3 2 roll sub 3 1 roll exch sub exch } def
-
-% max two points: <point> <point> lfigpmax <point>
-/lfigpmax { exch 3 1 roll lfigmax 3 1 roll lfigmax exch } def
-
-% min two points: <point> <point> lfigpmin <point>
-/lfigpmin { exch 3 1 roll lfigmin 3 1 roll lfigmin exch } def
-
-% scalar multiplication: <point> <num> lfigpmul <point>
-/lfigpmul { dup 3 1 roll mul 3 1 roll mul exch } def
-
-% point at angle and distance: <point> <length> <angle> lfigatangle <point>
-/lfigatangle { 2 copy cos mul 3 1 roll sin mul lfigpadd } def
-
-% angle from one point to another: <point> <point> lfigangle <angle>
-/lfigangle { lfigpsub 2 copy 0 eq exch 0 eq and {pop} {exch atan} ifelse } def
-
-% distance between two points: <point> <point> lfigdistance <length>
-/lfigdistance { lfigpsub dup mul exch dup mul add sqrt } def
-
-% difference in x coords: <point> <point> lfigxdistance <length>
-/lfigxdistance { pop 3 1 roll pop sub } def
-
-%difference in y coords: <point> <point> lfigydistance <length>
-/lfigydistance { 3 1 roll pop sub exch pop } def
-
-% stroke a solid line: <length> <dashlength> lfigsolid -
-/lfigsolid
-{ pop pop [] 0 setdash stroke
-} def
-
-% stroke a lfigdashed line: <length> <dashlength> lfigdashed -
-/lfigdashed
-{ 2 copy div 2 le 1 index 0 le or
- { exch pop 1 pt lfigmax [ exch dup ] 0 setdash }
- { dup [ exch 4 2 roll 2 copy div
- 1 sub 2 div ceiling dup 4 1 roll
- 1 add mul sub exch div ] 0 setdash
- } ifelse stroke
-} def
-
-% stroke a lfigcdashed line: <length> <dashlength> lfigcdashed -
-/lfigcdashed
-{ 2 copy le 1 index 0 le or
- { exch pop 1 pt lfigmax [ exch dup ] dup 0 get 2 div setdash }
- { dup [ 4 2 roll exch 2 copy exch div
- 2 div ceiling div 1 index sub
- ] exch 2 div setdash
- } ifelse stroke
-} def
-
-% stroke a dotted line: <length> <dashlength> lfigdotted -
-/lfigdotted
-{ 2 copy le 1 index 0 le or
- { exch pop 1 pt lfigmax [ exch 0 exch ] 0 setdash }
- { 1 index exch div ceiling div
- [ 0 3 2 roll ] 0 setdash
- } ifelse stroke
-} def
-
-% stroke a noline line: <length> <dashlength> lfignoline -
-/lfignoline
-{ pop pop
-} def
-
-% painting (i.e. filling): - lfigwhite - (etc.)
-/lfignopaint { } def
-/lfignochange { fill } def
-/lfigdarkblue { 0.0 0.0 0.5 setrgbcolor fill } def
-/lfigblue { 0.0 0.0 1.0 setrgbcolor fill } def
-/lfiglightblue { 0.5 0.5 1.0 setrgbcolor fill } def
-/lfigdarkgreen { 0.0 0.5 0.0 setrgbcolor fill } def
-/lfiggreen { 0.0 1.0 0.0 setrgbcolor fill } def
-/lfiglightgreen { 0.5 1.0 0.5 setrgbcolor fill } def
-/lfigdarkred { 0.5 0.0 0.0 setrgbcolor fill } def
-/lfigred { 1.0 0.0 0.0 setrgbcolor fill } def
-/lfiglightred { 1.0 0.5 0.5 setrgbcolor fill } def
-/lfigdarkcyan { 0.0 0.5 0.5 setrgbcolor fill } def
-/lfigcyan { 0.0 1.0 1.0 setrgbcolor fill } def
-/lfiglightcyan { 0.5 1.0 1.0 setrgbcolor fill } def
-/lfigdarkmagenta { 0.5 0.0 0.5 setrgbcolor fill } def
-/lfigmagenta { 1.0 0.0 1.0 setrgbcolor fill } def
-/lfiglightmagenta { 1.0 0.5 1.0 setrgbcolor fill } def
-/lfigdarkyellow { 0.5 0.5 0.0 setrgbcolor fill } def
-/lfigyellow { 1.0 1.0 0.0 setrgbcolor fill } def
-/lfiglightyellow { 1.0 1.0 0.5 setrgbcolor fill } def
-/lfigdarkgray { 0.2 0.2 0.2 setrgbcolor fill } def
-/lfiggray { 0.5 0.5 0.5 setrgbcolor fill } def
-/lfiglightgray { 0.8 0.8 0.8 setrgbcolor fill } def
-/lfigdarkgrey { 0.2 0.2 0.2 setrgbcolor fill } def
-/lfiggrey { 0.5 0.5 0.5 setrgbcolor fill } def
-/lfiglightgrey { 0.8 0.8 0.8 setrgbcolor fill } def
-/lfigblack { 0.0 0.0 0.0 setrgbcolor fill } def
-/lfigwhite { 1.0 1.0 1.0 setrgbcolor fill } def
-
-% line caps (and joins, not currently used)
-/lfigbutt 0 def
-/lfiground 1 def
-/lfigprojecting 2 def
-/lfigmiter 0 def
-/lfigbevel 2 def
-
-% shape and labels of the @Box symbol
-/lfigbox
-{
- 0 0 /SW lfigpointdef
- xsize 0 /SE lfigpointdef
- xsize ysize /NE lfigpointdef
- 0 ysize /NW lfigpointdef
- SE 0.5 lfigpmul /S lfigpointdef
- NW 0.5 lfigpmul /W lfigpointdef
- W SE lfigpadd /E lfigpointdef
- S NW lfigpadd /N lfigpointdef
- NE 0.5 lfigpmul /CTR lfigpointdef
- [ CTR NE lfigpsub /lfigboxcircum cvx ] lfigcircumdef
- SW SE NE NW SW
-} def
-
-% shape and labels of the @CurveBox symbol
-/lfigcurvebox
-{
-
- xsize 0.5 mul ysize 0.5 mul /CTR lfigpointdef
- xsize 0.5 mul 0 /S lfigpointdef
- xsize ysize 0.5 mul /E lfigpointdef
- xsize 0.5 mul ysize /N lfigpointdef
- 0 ysize 0.5 mul /W lfigpointdef
-
- xmark 0.293 mul xmark 0.293 mul /SW lfigpointdef
- xsize xmark 0.293 mul sub xmark 0.293 mul /SE lfigpointdef
- xsize xmark 0.293 mul sub ysize xmark 0.293 mul sub /NE lfigpointdef
- xmark 0.293 mul ysize xmark 0.293 mul sub /NW lfigpointdef
-
- [ xsize ysize 0.5 lfigpmul xmark /lfigcurveboxcircum cvx ] lfigcircumdef
-
- xmark 0
- xsize xmark sub 0
- [ xsize xmark sub xmark ]
- xsize xmark
- xsize ysize xmark sub
- [ xsize xmark sub ysize xmark sub ]
- xsize xmark sub ysize
- xmark ysize
- [ xmark ysize xmark sub ]
- 0 ysize xmark sub
- 0 xmark
- [ xmark xmark ]
- xmark 0
-} def
-
-% shadow of the @ShadowBox symbol
-% its shape and labels are done, somewhat inaccurately, with lfigbox
-/lfigshadow
-{ xmark 2 mul 0 moveto xsize 0 lineto
- xsize ysize xmark 2 mul sub lineto
- xsize xmark sub ysize xmark 2 mul sub lineto
- xsize xmark sub xmark lineto
- xmark 2 mul xmark lineto closepath fill
-} def
-
-% shape and labels of the @Square symbol
-/lfigsquare
-{
- xsize ysize 0.5 lfigpmul /CTR lfigpointdef
- CTR xsize xsize ysize ysize lfigpmax 0.5 lfigpmul lfigpadd /NE lfigpointdef
- CTR 0 0 CTR NE lfigdistance 135 lfigatangle lfigpadd /NW lfigpointdef
- CTR 0 0 CTR NE lfigdistance 225 lfigatangle lfigpadd /SW lfigpointdef
- CTR 0 0 CTR NE lfigdistance 315 lfigatangle lfigpadd /SE lfigpointdef
- SW 0.5 lfigpmul SE 0.5 lfigpmul lfigpadd /S lfigpointdef
- NW 0.5 lfigpmul NE 0.5 lfigpmul lfigpadd /N lfigpointdef
- SW 0.5 lfigpmul NW 0.5 lfigpmul lfigpadd /W lfigpointdef
- SE 0.5 lfigpmul NE 0.5 lfigpmul lfigpadd /E lfigpointdef
- [ CTR NE lfigpsub /lfigboxcircum cvx ] lfigcircumdef
- SW SE NE NW SW
-} def
-
-% shape and labels of the @Diamond symbol
-/lfigdiamond
-{
- xsize 0 0.5 lfigpmul /S lfigpointdef
- 0 ysize 0.5 lfigpmul /W lfigpointdef
- S W lfigpadd /CTR lfigpointdef
- CTR W lfigpadd /N lfigpointdef
- CTR S lfigpadd /E lfigpointdef
- [ xsize ysize 0.5 lfigpmul /lfigdiamondcircum cvx ] lfigcircumdef
- S E N W S
-} def
-
-% shape and labels of the @Ellipse symbol
-/lfigellipse
-{
- xsize 0 0.5 lfigpmul /S lfigpointdef
- 0 ysize 0.5 lfigpmul /W lfigpointdef
- S W lfigpadd /CTR lfigpointdef
- CTR W lfigpadd /N lfigpointdef
- CTR S lfigpadd /E lfigpointdef
- CTR xsize 0 0.3536 lfigpmul lfigpadd 0 ysize 0.3536 lfigpmul lfigpadd /NE lfigpointdef
- 0 ysize 0.3536 lfigpmul CTR xsize 0 0.3536 lfigpmul lfigpadd lfigpsub /SE lfigpointdef
- xsize 0 0.3536 lfigpmul CTR lfigpsub 0 ysize 0.3536 lfigpmul lfigpadd /NW lfigpointdef
- 0 ysize 0.3536 lfigpmul xsize 0 0.3536 lfigpmul CTR lfigpsub lfigpsub /SW lfigpointdef
- [ xsize ysize 0.5 lfigpmul /lfigellipsecircum cvx ] lfigcircumdef
- S [ CTR ] E [ CTR ] N [ CTR ] W [ CTR ] S
-} def
-
-% shape and labels of the @Circle symbol
-/lfigcircle
-{
- xsize ysize 0.5 lfigpmul /CTR lfigpointdef
- CTR xsize 0 ysize 0 lfigpmax 0.5 lfigpmul lfigpadd /E lfigpointdef
- CTR 0 0 CTR E lfigdistance 45 lfigatangle lfigpadd /NE lfigpointdef
- CTR 0 0 CTR E lfigdistance 90 lfigatangle lfigpadd /N lfigpointdef
- CTR 0 0 CTR E lfigdistance 135 lfigatangle lfigpadd /NW lfigpointdef
- CTR 0 0 CTR E lfigdistance 180 lfigatangle lfigpadd /W lfigpointdef
- CTR 0 0 CTR E lfigdistance 225 lfigatangle lfigpadd /SW lfigpointdef
- CTR 0 0 CTR E lfigdistance 270 lfigatangle lfigpadd /S lfigpointdef
- CTR 0 0 CTR E lfigdistance 315 lfigatangle lfigpadd /SE lfigpointdef
- [ S E lfigpsub /lfigellipsecircum cvx ] lfigcircumdef
- S [ CTR ] E [ CTR ] N [ CTR ] W [ CTR ] S
-} def
-
-% shape and labels of the @HLine and @HArrow symbols
-/lfighline
-{
- 0 ymark lfigprevious /FROM lfigpointdef
- xsize ymark lfigprevious /TO lfigpointdef
-} def
-
-% shape and labels of the @VLine and @VArrow symbols
-/lfigvline
-{
- xmark ysize lfigprevious /FROM lfigpointdef
- xmark 0 lfigprevious /TO lfigpointdef
-} def
-
-% points of a polygon around base with given no of sides, vert init angle:
-% <sides> <angle> figpolygon <point> ... <point>
-/lfigpolygon
-{ xsize ysize 0.5 lfigpmul /CTR lfigpointdef
- 90 sub CTR 2 copy lfigmax 5 3 roll
- [ 4 copy pop /lfigpolycircum cvx ] lfigcircumdef
- exch dup 360 exch div exch
- 1 1 3 2 roll
- { 4 string cvs (P) exch lfigconcat cvn
- 6 copy pop pop lfigatangle 2 copy 10 2 roll
- 3 2 roll lfigpointdef
- dup 3 1 roll add exch
- } for
- pop lfigatangle
-} def
-
-% next array element: <array> <index> lfiggetnext <array> <index> <any> true
-% or <array> <index> false
-/lfiggetnext
-{ 2 copy exch length ge
- { false }
- { 2 copy get exch 1 add exch true } ifelse
-} def
-
-% check whether thing is number: <any> lfigisnumbertype <any> <bool>
-/lfigisnumbertype
-{ dup type dup
- /integertype eq exch /realtype eq or
-} def
-
-% check whether thing is an array: <any> lfigisarraytype <any> <bool>
-/lfigisarraytype { dup type /arraytype eq } def
-
-% get next item: <array> <index> lfiggetnextitem <array> <index> 0
-% or <array> <index> <array> 1
-% or <array> <index> <point> 2
-/lfiggetnextitem
-{ lfiggetnext
- { lfigisarraytype
- { 1
- }
- { lfigisnumbertype
- { 3 1 roll
- lfiggetnext
- { lfigisnumbertype
- { 4 3 roll exch 2
- }
- { pop 3 2 roll pop 0
- } ifelse
- }
- { 3 2 roll pop 0
- } ifelse
- }
- { pop 0
- } ifelse
- } ifelse
- }
- { 0
- } ifelse
-} def
-
-% set arc path: bool x1 y1 x2 y2 x0 y0 lfigsetarc <angle> <angle> <dist>
-% the path goes from x1 y1 to x2 y2 about centre x0 y0,
-% anticlockwise if bool is true else clockwise.
-% The orientations of backwards pointing and forwards pointing
-% arrowheads are returned in the two angles, and
-% the length of the arc is returned in <dist>.
-/lfigsetarc
-{
- 20 dict begin
- matrix currentmatrix 8 1 roll
- 2 copy translate 2 copy 8 2 roll
- 4 2 roll lfigpsub 6 2 roll lfigpsub
- dup /y1 exch def dup mul /y1s exch def
- dup /x1 exch def dup mul /x1s exch def
- dup /y2 exch def dup mul /y2s exch def
- dup /x2 exch def dup mul /x2s exch def
-
- y1s y2s eq
- { -1
- }
- { y1s x2s mul y2s x1s mul sub y1s y2s sub div
- } ifelse
- /da exch def
-
- x1s x2s eq
- { -1
- }
- { x1s y2s mul x2s y1s mul sub x1s x2s sub div
- } ifelse
- /db exch def
-
- da 0 gt db 0 gt and
- { /LMax da sqrt db sqrt lfigmax def
- /scalex da sqrt LMax div def
- /scaley db sqrt LMax div def
- scalex scaley scale
- 0 0 LMax
- 0 0 x1 scalex mul y1 scaley mul lfigangle
- 0 0 x2 scalex mul y2 scaley mul lfigangle
- 2 copy eq { 360 add } if
- 2 copy 8 2 roll
- 5 index { arc } { arcn } ifelse
- 2 index 1 index
- { 90 sub } { 90 add } ifelse
- dup sin scaley mul exch cos scalex mul atan
- 2 index 2 index
- { 90 add } { 90 sub } ifelse
- dup sin scaley mul exch cos scalex mul atan
- 5 2 roll % res1 res2 ang1 ang2 anticlockwise
- { exch sub } { sub } ifelse
- dup 0 le { 360 add } if lfigpi mul LMax mul 180 div
- }
- { 0 0 x1 y1 lfigdistance 0 0 x2 y2 lfigdistance eq
- 0 0 x1 y1 lfigdistance 0 gt and
- { 0 0
- 0 0 x1 y1 lfigdistance
- 0 0 x1 y1 lfigangle
- 0 0 x2 y2 lfigangle
- 2 copy eq { 360 add } if
- 2 copy 8 2 roll
- 5 index { arc } { arcn } ifelse
- 2 index 1 index
- { 90 sub } { 90 add } ifelse
- 2 index 2 index
- { 90 add } { 90 sub } ifelse
- 5 2 roll % res1 res2 ang1 ang2 clockwise
- { exch sub } { sub } ifelse
- dup 0 le { 360 add } if lfigpi mul 0 0 x1 y1 lfigdistance mul 180 div
- }
- { x2 y2 lineto pop
- x2 y2 x1 y1 lfigangle
- x1 y1 x2 y2 lfigangle
- x1 y1 x2 y2 lfigdistance
- } ifelse
- } ifelse
- 4 -1 roll setmatrix
- end
-} def
-
-% lfigsetcurve: set up a Bezier curve from x0 y0 to x3 y3
-% and return arrowhead angles and length of curve (actually 0)
-% x0 y0 x1 y1 x2 y2 x3 y3 lfigsetcurve <angle> <angle> <length>
-/lfigsetcurve
-{ 8 copy curveto pop pop
- lfigangle
- 5 1 roll
- 4 2 roll lfigangle
- exch
- 0
-} def
-
-% lfigpaintpath: paint a path of the given shape
-% /paint [ shape ] lfigpaintpath -
-/lfigpaintpath
-{
- 10 dict begin
- 0 newpath
- /prevseen false def
- /curveseen false def
- { lfiggetnextitem
- dup 0 eq { pop exit }
- { 1 eq
- { /curveseen true def
- /curve exch def
- curve length 0 eq { /curveseen false def } if
- }
- { /ycurr exch def
- /xcurr exch def
- prevseen
- { curveseen
- { curve length 4 eq
- { xprev yprev
- curve 0 get curve 1 get
- curve 2 get curve 3 get
- xcurr ycurr
- lfigsetcurve pop pop pop
- }
- { xprev yprev xcurr ycurr
- curve length 1 ge { curve 0 get } { 0 } ifelse
- curve length 2 ge { curve 1 get } { 0 } ifelse
- curve length 3 ge { curve 2 get } { true } ifelse
- 7 1 roll
- lfigsetarc pop pop pop
- } ifelse
- }
- { xcurr ycurr lineto
- } ifelse
- }
- { xcurr ycurr moveto
- } ifelse
- /xprev xcurr def
- /yprev ycurr def
- /prevseen true def
- /curveseen false def
- } ifelse
- } ifelse
- } loop pop pop cvx exec
- end
-} def
-
-% stroke a path of the given shape in the given linestyle and dash length.
-% Return the origin and angle of the backward and forward arrow heads.
-% dashlength /linestyle [shape] lfigdopath [<point> <angle>] [<point> <angle>]
-/lfigdopath
-{
- 10 dict begin
- 0
- /prevseen false def
- /curveseen false def
- /backarrow [] def
- /fwdarrow [] def
- {
- lfiggetnextitem
- dup 0 eq { pop exit }
- {
- 1 eq
- { /curveseen true def
- /curve exch def
- curve length 0 eq { /prevseen false def } if
- }
- { /ycurr exch def
- /xcurr exch def
- prevseen
- { newpath xprev yprev moveto
- curveseen
- { curve length 4 eq
- { xprev yprev
- curve 0 get curve 1 get
- curve 2 get curve 3 get
- xcurr ycurr lfigsetcurve
- }
- { xprev yprev xcurr ycurr
- curve length 1 ge { curve 0 get } { 0 } ifelse
- curve length 2 ge { curve 1 get } { 0 } ifelse
- curve length 3 ge { curve 2 get } { true } ifelse
- 7 1 roll
- lfigsetarc
- } ifelse
- }
- { xcurr ycurr lineto
- xcurr ycurr xprev yprev lfigangle dup 180 sub
- xprev yprev xcurr ycurr lfigdistance
- } ifelse
- 6 index 6 index cvx exec
- [ xprev yprev 5 -1 roll ]
- backarrow length 0 eq
- { /backarrow exch def }
- { pop } ifelse
- [ xcurr ycurr 4 -1 roll ] /fwdarrow exch def
- } if
- /xprev xcurr def
- /yprev ycurr def
- /prevseen true def
- /curveseen false def
- } ifelse
- } ifelse
- } loop
- pop pop pop pop
- backarrow length 0 eq { [ 0 0 0 ] } { backarrow } ifelse
- fwdarrow length 0 eq { [ 0 0 0 ] } { fwdarrow } ifelse
- end
-} def
-
-% lfigdoarrow: draw an arrow head of given form
-% dashlength /lstyle /pstyle hfrac height width [ <point> <angle> ] lfigdoarrow -
-/lfigdoarrow
-{ matrix currentmatrix 8 1 roll
- dup 0 get 1 index 1 get translate
- 2 get rotate
- [ 2 index neg 2 index 0 0
- 3 index 3 index neg
- 1 index 10 index mul 0
- 7 index 7 index ]
- 4 1 roll pop pop pop
- dup 3 1 roll
- gsave lfigpaintpath grestore lfigdopath pop pop
- setmatrix
-} def
-
-% arrow head styles
-/lfigopen 0.0 def
-/lfighalfopen 0.5 def
-/lfigclosed 1.0 def
-
-% stroke no arrows, forward, back, and both
-/lfignoarrow { pop pop pop pop pop pop pop pop } def
-/lfigforward { 7 -1 roll lfigdoarrow pop } def
-/lfigback { 8 -2 roll pop lfigdoarrow } def
-/lfigboth { 8 -1 roll 7 copy lfigdoarrow pop 7 -1 roll lfigdoarrow } def
-
-% lfigprevious: return previous point on path
-/lfigprevious
-{ lfigisnumbertype
- { 2 copy }
- { lfigisarraytype
- { 2 index 2 index }
- { 0 0 }
- ifelse
- } ifelse
-} def
-
-% label a point in 2nd top dictionary: <point> /name lfigpointdef -
-/lfigpointdef
-{
- % (Entering lfigpointdef) lfigdebugprint
- [ 4 2 roll transform
- /itransform cvx ] cvx
- currentdict end
- 3 1 roll
- % currentdict length currentdict maxlength lt
- % { def }
- % { exec moveto (too many labels) show stop }
- % ifelse
- def
- begin
- % (Leaving lfigpointdef) lfigdebugprint
-} def
-
-% promote labels from second top to third top dictionary
-% <string> lfigpromotelabels -
-/lfigpromotelabels
-{
- % (Entering lfigpromotelabels) lfigdebugprint
- currentdict end exch currentdict end
- { exch 20 string cvs 2 index
- (@) lfigconcat exch lfigconcat cvn exch def
- } forall pop begin
- % (Leaving lfigpromotelabels) lfigdebugprint
-} def
-
-% show labels (except CIRCUM): - lfigshowlabels -
-/lfigshowlabels
-{
- % (Entering lfigshowlabels) lfigdebugprint
- currentdict end
- currentdict
- { 1 index 20 string cvs (CIRCUM) search % if CIRCUM in key
- { pop pop pop pop pop }
- { pop cvx exec 2 copy
- newpath 1.5 pt 0 360 arc
- 0 setgray fill
- /Times-Roman findfont 8 pt scalefont setfont
- moveto 0.2 cm 0.1 cm rmoveto 20 string cvs show
- }
- ifelse
- } forall
- begin
- % (Leaving lfigshowlabels) lfigdebugprint
-} def
-
-% fix an angle to 0 <= res < 360: <angle> lfigfixangle <angle>
-/lfigfixangle
-{
- % (Entering lfigfixangle) lfigdebugprint
- { dup 0 ge { exit } if
- 360 add
- } loop
- { dup 360 lt { exit } if
- 360 sub
- } loop
- % (Leaving lfigfixangle) lfigdebugprint
-} def
-
-% find point on circumference of box: alpha a b lfigboxcircum x y
-/lfigboxcircum
-{
- % (Entering lfigboxcircum) lfigdebugprint
- 4 dict begin
- /b exch def
- /a exch def
- lfigfixangle /alpha exch def
- 0 0 a b lfigangle /theta exch def
-
- % if alpha <= theta, return (a, a*tan(alpha))
- alpha theta le
- { a a alpha sin mul alpha cos div }
- {
- % else if alpha <= 180 - theta, return (b*cot(alpha), b)
- alpha 180 theta sub le
- { b alpha cos mul alpha sin div b }
- {
- % else if alpha <= 180 + theta, return (-a, -a*tan(alpha))
- alpha 180 theta add le
- { a neg a neg alpha sin mul alpha cos div }
- {
- % else if alpha <= 360 - theta, return (-b*cot(alpha), -b)
- alpha 360 theta sub le
- { b neg alpha cos mul alpha sin div b neg }
- {
- % else 360 - theta <= alpha, return (a, a*tan(alpha))
- a a alpha sin mul alpha cos div
- } ifelse
- } ifelse
- } ifelse
- } ifelse
- end
- % (Leaving lfigboxcircum) lfigdebugprint
-} def
-
-% find quadratic roots (assume a != 0): a b c lfigqroots x1 x2 2
-% or x2 1
-% or 0
-/lfigqroots
-{
- 4 dict begin
- /c exch def
- /b exch def
- /a exch def
- /disc b b mul 4 a c mul mul sub def
- disc 0 lt
- { 0
- }
- { disc 0 eq
- { b neg 2 a mul div
- 1
- }
- { b neg disc sqrt add 2 a mul div
- b neg disc sqrt sub 2 a mul div
- 2
- }
- ifelse
- }
- ifelse
- end
-} def
-
-% work our which quadrant: <angle> lfigquadrant <0-3>
-/lfigquadrant
-{ dup 90 lt
- { pop 0
- }
- { dup 180 lt
- { pop 1
- }
- { 270 lt
- { 2
- }
- { 3
- } ifelse
- } ifelse
- } ifelse
-} def
-
-% find curvebox circum, assuming upper right quadrant: alpha a b xmk lfigcb x y
-/lfigcb
-{
- 6 dict begin
- /xmk exch def
- /b exch def
- /a exch def
- /alpha exch def
- /theta1 0 0 a b xmk sub lfigangle def
- /theta2 0 0 a xmk sub b lfigangle def
- alpha theta1 le
- { % if alpha <= theta1, return (a, a*tan(alpha))
- a a alpha sin mul alpha cos div
- }
- { alpha theta2 ge
- { % else if alpha > theta2, return (b*cot(alpha), b)
- b alpha cos mul alpha sin div b
- }
- {
- % else, return the intersection of line and circle
- a xmk sub b xmk sub xmk 0 0 alpha lfigcircleintersect
- dup 0 eq
- { % should never happen, just return any reasonable point
- pop
- a b 0.5 lfigpmul
- }
- { 1 eq
- { % should never happen, just return the point on top of stack
- }
- { % the usual case, two points on stack, return the larger
- lfigpmax
- } ifelse
- } ifelse
- } ifelse
- } ifelse
- end
-} def
-
-% find point on circumference of curvebox: alpha a b xmk lfigcurveboxcircum x y
-/lfigcurveboxcircum
-{
- % (Entering lfigcurveboxcircum) lfigdebugprint
- 5 dict begin
- /xmk exch def
- /b exch def
- /a exch def
- lfigfixangle /alpha exch def
-
- % work out which quadrant we are in, and reflect accordingly
- /quad alpha lfigquadrant def
- quad 0 eq
- { alpha a b xmk lfigcb
- }
- { quad 1 eq
- { 180 alpha sub a b xmk lfigcb exch neg exch
- }
- { quad 2 eq
- { alpha 180 sub a b xmk lfigcb neg exch neg exch
- }
- { 360 alpha sub a b xmk lfigcb neg
- } ifelse
- } ifelse
- } ifelse
- end
- % (Leaving lfigcurveboxcircum) lfigdebugprint
-} def
-
-% find point on circumference of diamond: alpha a b lfigdiamondcircum x y
-/lfigdiamondcircum
-{
- % (Entering lfigdiamondcircum) lfigdebugprint
- 4 dict begin
- /b exch def
- /a exch def
- lfigfixangle /alpha exch def
- b alpha cos abs mul a alpha sin abs mul add /denom exch def
- a b mul alpha cos mul denom div
- a b mul alpha sin mul denom div
- end
- % (Leaving lfigdiamondcircum) lfigdebugprint
-} def
-
-% find point on circumference of ellipse: alpha a b lfigellipsecircum x y
-/lfigellipsecircum
-{
- % (Entering lfigellipsecircum) lfigdebugprint
- 4 dict begin
- /b exch def
- /a exch def
- lfigfixangle /alpha exch def
- b alpha cos mul dup mul a alpha sin mul dup mul add sqrt /denom exch def
- a b mul alpha cos mul denom div
- a b mul alpha sin mul denom div
- end
- % (Leaving lfigellipsecircum) lfigdebugprint
-} def
-
-% find point of intersection of two lines each defined by two points
-% x1 y1 x2 y2 x3 y3 x4 y4 lfiglineintersect x y
-/lfiglineintersect
-{
- % (Entering lfiglineintersect) lfigdebugprint
- 13 dict begin
- /y4 exch def
- /x4 exch def
- /y3 exch def
- /x3 exch def
- /y2 exch def
- /x2 exch def
- /y1 exch def
- /x1 exch def
- x2 x1 sub /x21 exch def
- x4 x3 sub /x43 exch def
- y2 y1 sub /y21 exch def
- y4 y3 sub /y43 exch def
- y21 x43 mul y43 x21 mul sub /det exch def
-
- % calculate x
- y21 x43 mul x1 mul
- y43 x21 mul x3 mul sub
- y3 y1 sub x21 mul x43 mul add
- det div
-
- % calculate y
- x21 y43 mul y1 mul
- x43 y21 mul y3 mul sub
- x3 x1 sub y21 mul y43 mul add
- det neg div
-
- end
- % (Leaving lfiglineintersect) lfigdebugprint
-} def
-
-% find point on circumference of polygon
-% alpha radius num theta lfigpolycircum x y
-/lfigpolycircum
-{
- % (Entering lfigpolycircum) lfigdebugprint
- 13 dict begin
- /theta exch def
- /num exch def
- /radius exch def
- /alpha exch def
-
- % calculate delta, the angle from theta to alpha
- alpha theta sub lfigfixangle
-
- % calculate the angle which is the multiple of 360/num closest to delta
- 360 num div div truncate 360 num div mul theta add /anglea exch def
-
- % calculate the next multiple of 360/num after anglea
- anglea 360 num div add /angleb exch def
-
- % intersect the line through these two points with the alpha line
- anglea cos anglea sin angleb cos angleb sin
- 0 0 alpha cos 2 mul alpha sin 2 mul
- lfiglineintersect radius lfigpmul
-
- end
- % (Leaving lfigpolycircum) lfigdebugprint
-} def
-
-% find point of intersection of a point and a circle
-% x0 y0 r x1 y1 theta lfigcircleintersect xa ya xb yb 2
-% or xb yb 1
-% or 0
-/lfigcircleintersect
-{
- % (Entering lfigcircleintersect) lfigdebugprint
- 15 dict begin
- /theta exch def
- /y1 exch def
- /x1 exch def
- /r exch def
- /y0 exch def
- /x0 exch def
-
- % if sin(theta) = 0 then line is horizontal and y must be y1
- theta sin abs 0.00001 lt
- {
- /a 1 def
- /b -2 x0 mul def
- /c x0 dup mul y1 y0 sub dup mul add r dup mul sub def
- a b c lfigqroots dup
- 0 eq
- { pop
- 0
- }
- { 1 eq
- { y1 1
- }
- { y1 exch y1 2
- } ifelse
- } ifelse
- }
- {
- /ct theta cos theta sin div def
- /a ct ct mul 1 add def
- /b ct x1 x0 sub mul y1 add y0 sub 2 mul def
- /c x1 x0 sub dup mul y1 y0 sub dup mul add r dup mul sub def
- a b c lfigqroots dup
- 0 eq
- { pop
- 0
- }
- { 1 eq
- { y1 add /yb exch def
- yb y1 sub ct mul x1 add /xb exch def
- xb yb 1
- }
- { y1 add /ya exch def
- ya y1 sub ct mul x1 add /xa exch def
- y1 add /yb exch def
- yb y1 sub ct mul x1 add /xb exch def
- xa ya xb yb 2
- } ifelse
- } ifelse
- } ifelse
- end
- % (Leaving lfigcircleintersect) lfigdebugprint
-} def
-
-% add CIRCUM operator with this body: <array> lfigcircumdef -
-/lfigcircumdef
-{ % (Entering lfigcircumdef) lfigdebugprint
- /CIRCUM exch cvx
- currentdict end
- 3 1 roll
- % currentdict length currentdict maxlength lt
- % { def }
- % { exec moveto (too many labels) show stop }
- % ifelse
- def
- begin
- % (Leaving lfigcircumdef) lfigdebugprint
-} def
-
-end
-%%EndResource
-
-%%BeginResource: procset LoutBasicSetup
-% @PrependGraphic file /usr/staff/jeff/lout.lib/include/bsf.lpg
-
-% width height linethickness louteuro -
-% draw a Euro symbol of this width and height with this line thickness
-% Author: Jeff Kingston, based on code from Andrew Beardsley
-/louteuro {
- 20 dict begin
- /eurothick exch def
- /euroheight exch def
- /eurowidth exch def
- /eurostrokewidth euroheight 0.8 mul def
- /eurostep eurothick 60 cos mul 60 sin div def
- /eurotheta 40 def
-
- % llx lly width thickness louteurobox -
- % draw angled box starting at (llx, lly) with given width and thickness
- /louteurobox
- {
- /euroboxthick exch def
- /euroboxwidth exch def
- newpath moveto euroboxwidth 0 rlineto
- eurostep euroboxthick rlineto
- euroboxwidth neg 0 rlineto closepath fill
- } def
-
- % lower cross stroke
- 0 euroheight 2 div eurothick 1.5 mul sub
- eurostrokewidth eurothick louteurobox
-
- % upper cross stroke
- 0 euroheight 2 div eurothick 0.5 mul add
- eurostrokewidth eurostep 2 mul add eurothick louteurobox
-
- % circular part
- /eurohctr eurowidth euroheight 2 div eurotheta cos mul sub def
- /eurovctr euroheight 2 div def
- newpath
- eurohctr eurovctr eurovctr eurotheta 350 eurotheta sub arc
- eurohctr eurovctr eurovctr eurothick sub 365 eurotheta sub eurotheta arcn
- closepath fill
- end
-} def
-
-% path for @FullWidthRule symbol
-/LoutRule
-{ 0 0 moveto xsize 0 lineto
-} def
-
-% path for @Box symbol
-/LoutBox
-{ 0 0 moveto xsize 0 lineto
- xsize ysize lineto 0 ysize lineto
- closepath
-} def
-
-% path for @CurveBox symbol
-/LoutCurveBox
-{ xmark 0 moveto
- xsize xmark sub xmark xmark 270 360 arc
- xsize xmark sub ysize xmark sub xmark 0 90 arc
- xmark ysize xmark sub xmark 90 180 arc
- xmark xmark xmark 180 270 arc
- closepath
-} def
-
-% path for @ShadowBox symbol
-/LoutShadowBox
-{ xmark 2 mul 0 moveto xsize 0 lineto
- xsize ysize xmark 2 mul sub lineto
- xsize xmark sub ysize xmark 2 mul sub lineto
- xsize xmark sub xmark lineto
- xmark 2 mul xmark lineto
- closepath
-} def
-
-% set up dictionary containing margin note data: parity LoutMargSet -
-/LoutMargSet
-{ /LoutMargDict 12 dict def
- LoutMargDict begin
- /parity exch def
- /matr matrix currentmatrix def
- /rightx xsize def
- /lefty ysize def % highest allowable point for top of next left note
- /righty ysize def % highest allowable point for top of next right note
- /max { 2 copy gt { pop } { exch pop } ifelse } def
- /min { 2 copy lt { pop } { exch pop } ifelse } def
- end
-} def
-
-%translate coordinate system for marginal notes: type LoutMargShift -
-% where type 0 is left margin, 1 is right margin, 2 is outer, 3 is inner
-/LoutMargShift
-{ LoutMargDict begin
-
- % y coordinate of top of note, in margin coords, before vertical adjust
- 0 ysize transform matr itransform exch pop
-
- % decide whether left or right margin based on type and parity
- exch [ 0 1 parity 1 parity sub ] exch get 0 eq
- {
- % left margin: adjust top of note downwards if overlaps previous note
- lefty min
-
- % bottom of note is new lefty position and also translate position
- ysize sub dup /lefty exch def
-
- % want right edge of note at coordinate zero
- xsize neg exch
- }
- {
- % right margin: adjust top of note downwards if overlaps previous note
- righty min
-
- % bottom of note is new righty position and also translate position
- ysize sub dup /righty exch def
-
- % want left edge of note at coordinate rightx
- rightx exch
- } ifelse
-
- % stack now contains coord of bottom left corner in margin coordinates
- matr setmatrix translate
- end
-} def
-
-% create LoutPageDict with left, right, foot, top for @Place symbol users
-/LoutPageSet
-{
- /LoutPageDict 5 dict def
- LoutPageDict begin
- /matr matrix currentmatrix def
- /left 0 def
- /right xsize def
- /foot 0 def
- /top ysize def
- end
-
-} def
-
-%%EndResource
-
-%%EndProlog
-
-%%BeginSetup
-%%IncludeResource: font Times-Roman
-/Times-Romanfnt82 vec2 /Times-Roman LoutRecode
-/fnt82 { /Times-Romanfnt82 LoutFont } def
-%%IncludeResource: font Helvetica
-/Helveticafnt35 vec2 /Helvetica LoutRecode
-/fnt35 { /Helveticafnt35 LoutFont } def
-%%IncludeResource: font Symbol
-/fnt78 { /Symbol LoutFont } def
-%%IncludeResource: font Helvetica-Oblique
-/Helvetica-Obliquefnt36 vec2 /Helvetica-Oblique LoutRecode
-/fnt36 { /Helvetica-Obliquefnt36 LoutFont } def
-%%EndSetup
-
-%%Page: i 1
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Helvetica
-%%+ font Symbol
-%%+ font Helvetica-Oblique
-/pgsave save def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-1 LoutMargSet
-grestore
-600 fnt35 1355 12125(An)m 2215(Exper)s -24(t')k 30(s)k
-4518(Guide)s 6258(to)s 6902(the)s 3956 10685(Lout)m 616 9245(Document)m
-3500(F)s 18(or)k -15(matting)k 6490(System)s 240 fnt35
-3544 6059(Jeffre)m 4(y)k 4321(H.)s 4606(Kingston)s 3882 4395(V)m 19(ersion)k
-4725(3.17)s 3637 4107(September)m 12(,)k 4906(1999)s 240 fnt78
-0 342(\343)m 240 fnt36 315 340(Cop)m 7(yr)k -3(ight)k
-1493(1991,)s 2214(1999,)s 2935(Jeffre)s 4(y)k 3811(H.)s
-4173(Kingston,)s 5293(Basser)s 6203(Depar)s -9(tment)k 7619(of)s
-7990(Computer)s 0 52(Science)m 3(,)k 966(The)s 1449(Univ)s 6(ersity)k
-2583(of)s 2881(Sydne)s 4(y)k 3766(2006,)s 4415(A)s 7(ustr)k 2(alia.)k
-
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: ii 2
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-/pgsave save def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-0 LoutMargSet
-grestore
-480 fnt84 0 12955(Pr)m 8(eface)k 240 fnt82 540 12095(This)m
-1016(manual)s 1775(is)s 1984(addressed)s 2985(to)s 3224(those)s
-3784(who)s 4250(wish)s 4759(to)s 4997(become)s 5797(e)s 3(xpert)k
-6451(users)s 6992(of)s 7263(the)s 7611(Lout)s 8122(document)s
-0 11807(formatting)m 1092(system.)s 1952(An)s 2334(e)s 3(xpert)k
-3020(user)s 3510(is)s 3752(someone)s 4690(who)s 5188(understands)s
-6414(the)s 6794(principles)s 7819(of)s 8122(document)s 0 11519(formatting)m
-1083(that)s 1524(Lout)s 2059(embodies,)s 3105(and)s 3532(is)s
-3765(able)s 4242(to)s 4503(apply)s 5112(them,)s 5720(for)s
-6081(e)s 3(xample)k 6966(to)s 7228(design)s 7933(a)s
-8122(document)s 0 11231(format)m 690(or)s 943(a)s 1103(special-purpose)s
-2653(package.)s 3595(In)s 3845(contrast,)s 4701(a)s 4861(non-e)s 3(xpert)k
-5948(user)s 6400(is)s 6604(someone)s 7505(who)s 7965(simply)s
-8663(uses)s 0 10943(Lout)m 512(to)s 751(format)s 1447(documents.)s
-480 10569(Chapter)m 1295(1)s 1448(e)s 3(xplains)k 2291(these)s
-2836(principles,)s 3883(and)s 4285(it)s 4475(should)s 5170(be)s
-5450(read)s 5917(carefully)s 6817(and)s 7219(in)s 7460(sequence.)s
-8499(Chap)s 8998(-)s 0 10281(ters)m 412(2)s 604(and)s
-1025(3)s 1207(are)s 1571(for)s 1927(reference;)s 2943(respecti)s 6(v)k 3(ely)k 15(,)k
-4198(the)s 3(y)k 4678(contain)s 5457(descriptions)s 6680(of)s
-6969(the)s 7334(detailed)s 8166(operation)s 0 9993(of)m 277(Lout')s 13(s)k
-945(major)s 1568(components,)s 2838(and)s 3248(a)s 3420(complete)s
-4359(description)s 5484(of)s 5761(each)s 6262(prede\207ned)s 7336(symbol.)s
-8211(The)s 8646(\207nal)s 0 9705(chapter)m 763(presents)s 1597(a)s
-1763(collection)s 2762(of)s 3033(adv)s 6(anced)k 3989(e)s 3(xamples.)k
-480 9331(This)m 971(manual)s 1745(presents)s 2594(V)s 26(ersion)k
-3397(3)s 3576(of)s 3862(Basser)s 4574(Lout,)s 5148(publicly)s
-6001(released)s 6856(in)s 7114(September)s 8211(1994)s 8760([3)s
-8943(].)s 0 9043(This)m 480(manual)s 1244(w)s 2(as)k
-1670(rendered)s 2569(into)s 2999(PostScript)s 4046(by)s 4345(V)s 26(ersion)k
-5137(3.17)s 5610(of)s 5886(the)s 6239(Basser)s 6941(Lout)s
-7458(interpreter)s 9(,)k 8554(using)s 0 8755(the)m 348(symbols)s
-1197(described)s 2171(in)s 2414(the)s 2762(User')s 13(s)k
-3423(Guide)s 4064([4)s 4257(].)s 240 fnt84 0 8250(Ackno)m 2(wledgment.)k
-240 fnt82 1986 8251(V)m 26(ersion)k 2811(3)s 3012(has)s
-3419(bene\207ted)s 4391(from)s 4953(hundreds)s 5919(of)s 6227(comments)s
-7298(recei)s 6(v)k 3(ed)k 8193(since)s 8778(the)s
-0 7963(release)m 726(of)s 1006(V)s 26(ersion)k 1803(1)s
-1967(in)s 2219(October)s 3057(1991.)s 3710(Not)s 4138(e)s 6(v)k 3(ery)k
-4723(suggestion)s 5813(could)s 6411(be)s 6702(follo)s 6(wed,)k
-7662(b)s 4(ut)k 8033(man)s 3(y)k 8625(ha)s 4(v)k 3(e)k
-0 7675(been,)m 559(and)s 963(the)s 1311(encouragement)s 2832(w)s 2(as)k
-3253(greatly)s 3970(appreciated.)s
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: iii 3
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-/pgsave save def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-1 LoutMargSet
-grestore
-480 fnt84 0 12955(Contents)m 240 fnt84 0 11982(Chapter)m 908(1)s
-240 fnt82 1015 11983(.)m 240 fnt84 1179 11982(Principles)m 240 fnt82
-2738 11983(..)m 3082(..)s 3426(..)s 3770(..)s 4114(..)s
-4458(..)s 4802(..)s 5146(..)s 5490(..)s 5834(..)s
-6178(..)s 6522(..)s 6866(..)s 7210(..)s 7554(..)s
-7898(..)s 8242(..)s 8971(1)s 720 11638(1.1.)m 1184(Objects)s
-2394(..)s 2738(..)s 3082(..)s 3426(..)s 3770(..)s
-4114(..)s 4458(..)s 4802(..)s 5146(..)s 5490(..)s
-5834(..)s 6178(..)s 6522(..)s 6866(..)s 7210(..)s
-7554(..)s 7898(..)s 8242(..)s 8971(1)s 720 11293(1.2.)m
-1184(De\207nitions)s 2738(..)s 3082(..)s 3426(..)s 3770(..)s
-4114(..)s 4458(..)s 4802(..)s 5146(..)s 5490(..)s
-5834(..)s 6178(..)s 6522(..)s 6866(..)s 7210(..)s
-7554(..)s 7898(..)s 8242(..)s 8962(3)s 720 10948(1.3.)m
-1184(Cross)s 1780(references)s 3082(..)s 3426(..)s 3770(..)s
-4114(..)s 4458(..)s 4802(..)s 5146(..)s 5490(..)s
-5834(..)s 6178(..)s 6522(..)s 6866(..)s 7210(..)s
-7554(..)s 7898(..)s 8242(..)s 8958(7)s 720 10603(1.4.)m
-1184(Galle)s 3(ys)k 2394(..)s 2738(..)s 3082(..)s
-3426(..)s 3770(..)s 4114(..)s 4458(..)s 4802(..)s
-5146(..)s 5490(..)s 5834(..)s 6178(..)s 6522(..)s
-6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s
-8955(9)s 240 fnt84 0 9974(Chapter)m 908(2)s 240 fnt82
-1023 9975(.)m 240 fnt84 1187 9974(Details)m 240 fnt82 2394 9975(..)m
-2738(..)s 3082(..)s 3426(..)s 3770(..)s 4114(..)s
-4458(..)s 4802(..)s 5146(..)s 5490(..)s 5834(..)s
-6178(..)s 6522(..)s 6866(..)s 7210(..)s 7554(..)s
-7898(..)s 8242(..)s 8842(13)s 720 9630(2.1.)m 1184(Le)s 3(xical)k
-1952(structure)s 2843(\(w)s 2(ords,)k 3612(spaces,)s 4343(symbols\))s
-5269(and)s 5673(macros)s 6866(..)s 7210(..)s 7554(..)s
-7898(..)s 8242(..)s 8842(13)s 720 9285(2.2.)m 1184(Named)s
-1933(parameters)s 3426(..)s 3770(..)s 4114(..)s 4458(..)s
-4802(..)s 5146(..)s 5490(..)s 5834(..)s 6178(..)s
-6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s
-8242(..)s 8840(15)s 720 8940(2.3.)m 1184(Nested)s 1906(de\207nitions,)s
-3023(body)s 3557(parameters,)s 4711(e)s 3(xtend,)k 5453(import,)s
-6197(and)s 6601(e)s 3(xport)k 7554(..)s 7898(..)s
-8242(..)s 8838(17)s 720 8595(2.4.)m 1184(Filtered)s 1984(right)s
-2495(and)s 2899(body)s 3433(parameters)s 4802(..)s 5146(..)s
-5490(..)s 5834(..)s 6178(..)s 6522(..)s 6866(..)s
-7210(..)s 7554(..)s 7898(..)s 8242(..)s 8831(20)s
-720 8250(2.5.)m 1184(Precedence)s 2328(and)s 2732(associati)s 6(vity)k
-3974(of)s 4245(symbols)s 5490(..)s 5834(..)s 6178(..)s
-6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s
-8242(..)s 8832(22)s 720 7905(2.6.)m 1184(The)s 1612(style)s
-2119(and)s 2523(size)s 2950(of)s 3221(objects)s 4458(..)s
-4802(..)s 5146(..)s 5490(..)s 5834(..)s 6178(..)s
-6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s
-8242(..)s 8842(23)s 720 7560(2.7.)m 1184(Galle)s 3(ys)k
-1962(and)s 2366(tar)s 4(gets)k 3426(..)s 3770(..)s
-4114(..)s 4458(..)s 4802(..)s 5146(..)s 5490(..)s
-5834(..)s 6178(..)s 6522(..)s 6866(..)s 7210(..)s
-7554(..)s 7898(..)s 8242(..)s 8840(25)s 720 7215(2.8.)m
-1184(Sorted)s 1866(g)s 1(alle)k 3(ys)k 3082(..)s
-3426(..)s 3770(..)s 4114(..)s 4458(..)s 4802(..)s
-5146(..)s 5490(..)s 5834(..)s 6178(..)s 6522(..)s
-6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s
-8851(31)s 720 6870(2.9.)m 1184(Horizontal)s 2261(g)s 1(alle)k 3(ys)k
-3426(..)s 3770(..)s 4114(..)s 4458(..)s 4802(..)s
-5146(..)s 5490(..)s 5834(..)s 6178(..)s 6522(..)s
-6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s
-8842(33)s 720 6525(2.10.)m 1304(Optimal)s 2142(g)s 1(alle)k 3(y)k
-2776(breaking)s 4114(..)s 4458(..)s 4802(..)s 5146(..)s
-5490(..)s 5834(..)s 6178(..)s 6522(..)s 6866(..)s
-7210(..)s 7554(..)s 7898(..)s 8242(..)s 8832(34)s
-240 fnt84 0 5896(Chapter)m 908(3)s 240 fnt82 1021 5897(.)m
-240 fnt84 1185 5896(Pr)m 4(ede\207ned)k 2338(symbols)s 240 fnt82
-3426 5897(..)m 3770(..)s 4114(..)s 4458(..)s 4802(..)s
-5146(..)s 5490(..)s 5834(..)s 6178(..)s 6522(..)s
-6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s
-8833(36)s 720 5552(3.1.)m 1184(@Be)s 3(gin)k 2031(and)s
-2435(@End)s 3426(..)s 3770(..)s 4114(..)s 4458(..)s
-4802(..)s 5146(..)s 5490(..)s 5834(..)s 6178(..)s
-6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s
-8242(..)s 8833(36)s 720 5207(3.2.)m 1184(Concatenation)s 2623(symbols)s
-3472(and)s 3876(paragraphs)s 5490(..)s 5834(..)s 6178(..)s
-6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s
-8242(..)s 8833(36)s 720 4862(3.3.)m 1184(@F)s 3(ont)k
-1901(and)s 2305(@Char)s 3426(..)s 3770(..)s 4114(..)s
-4458(..)s 4802(..)s 5146(..)s 5490(..)s 5834(..)s
-6178(..)s 6522(..)s 6866(..)s 7210(..)s 7554(..)s
-7898(..)s 8242(..)s 8831(40)s 720 4517(3.4.)m 1184(@Break)s
-2394(..)s 2738(..)s 3082(..)s 3426(..)s 3770(..)s
-4114(..)s 4458(..)s 4802(..)s 5146(..)s 5490(..)s
-5834(..)s 6178(..)s 6522(..)s 6866(..)s 7210(..)s
-7554(..)s 7898(..)s 8242(..)s 8832(42)s 720 4172(3.5.)m
-1184(@Space)s 2394(..)s 2738(..)s 3082(..)s 3426(..)s
-3770(..)s 4114(..)s 4458(..)s 4802(..)s 5146(..)s
-5490(..)s 5834(..)s 6178(..)s 6522(..)s 6866(..)s
-7210(..)s 7554(..)s 7898(..)s 8242(..)s 8842(43)s
-720 3827(3.6.)m 1184(@YUnit)s 2063(and)s 2467(@ZUnit)s 3770(..)s
-4114(..)s 4458(..)s 4802(..)s 5146(..)s 5490(..)s
-5834(..)s 6178(..)s 6522(..)s 6866(..)s 7210(..)s
-7554(..)s 7898(..)s 8242(..)s 8832(44)s 720 3482(3.7.)m
-1184(@SetColour)s 2435(and)s 2839(@SetColor)s 4458(..)s 4802(..)s
-5146(..)s 5490(..)s 5834(..)s 6178(..)s 6522(..)s
-6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s
-8832(44)s 720 3137(3.8.)m 1184(@Language)s 2405(and)s 2809(@CurrLang)s
-4458(..)s 4802(..)s 5146(..)s 5490(..)s 5834(..)s
-6178(..)s 6522(..)s 6866(..)s 7210(..)s 7554(..)s
-7898(..)s 8242(..)s 8840(45)s 720 2792(3.9.)m 1184(@OneCol)s
-2205(and)s 2609(@OneRo)s 6(w)k 4114(..)s 4458(..)s
-4802(..)s 5146(..)s 5490(..)s 5834(..)s 6178(..)s
-6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s
-8242(..)s 8833(46)s 720 2447(3.10.)m 1304(@W)s 9(ide)k
-2090(and)s 2494(@High)s 3770(..)s 4114(..)s 4458(..)s
-4802(..)s 5146(..)s 5490(..)s 5834(..)s 6178(..)s
-6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s
-8242(..)s 8838(47)s 720 2102(3.11.)m 1304(@HShift)s 2222(and)s
-2626(@VShift)s 3770(..)s 4114(..)s 4458(..)s 4802(..)s
-5146(..)s 5490(..)s 5834(..)s 6178(..)s 6522(..)s
-6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s
-8838(47)s 720 1757(3.12.)m 1304(@HExpand)s 2488(and)s 2892(@VExpand)s
-4458(..)s 4802(..)s 5146(..)s 5490(..)s 5834(..)s
-6178(..)s 6522(..)s 6866(..)s 7210(..)s 7554(..)s
-7898(..)s 8242(..)s 8839(48)s 720 1412(3.13.)m 1304(@HContract)s
-2581(and)s 2985(@VContract)s 4458(..)s 4802(..)s 5146(..)s
-5490(..)s 5834(..)s 6178(..)s 6522(..)s 6866(..)s
-7210(..)s 7554(..)s 7898(..)s 8242(..)s 8839(48)s
-720 1067(3.14.)m 1304(@HLimited)s 2512(and)s 2916(@VLimited)s 4458(..)s
-4802(..)s 5146(..)s 5490(..)s 5834(..)s 6178(..)s
-6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s
-8242(..)s 8839(48)s 720 722(3.15.)m 1304(@HAdjust,)s 2443(@V)s 32(Adjust,)k
-3550(and)s 3954(@P)s 22(Adjust)k 5490(..)s 5834(..)s
-6178(..)s 6522(..)s 6866(..)s 7210(..)s 7554(..)s
-7898(..)s 8242(..)s 8835(49)s 720 377(3.16.)m 1304(@HScale)s
-2271(and)s 2675(@VScale)s 4114(..)s 4458(..)s 4802(..)s
-5146(..)s 5490(..)s 5834(..)s 6178(..)s 6522(..)s
-6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s
-8835(49)s
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: iv 4
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-/pgsave save def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-0 LoutMargSet
-grestore
-720 13808(3.17.)m 1304(@HCo)s 3(v)k 3(er)k 2337(and)s
-2741(@VCo)s 3(v)k 3(er)k 4114(..)s 4458(..)s
-4802(..)s 5146(..)s 5490(..)s 5834(..)s 6178(..)s
-6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s
-8242(..)s 8831(50)s 720 13463(3.18.)m 1304(@StartHSpan,@StartVSpan,)s 4117(@StartHVSpan,)s
-5720(@HSpan,)s 6700(and)s 7104(@VSpan)s 8242(..)s 8831(50)s
-720 13118(3.19.)m 1304(@Scale)s 2394(..)s 2738(..)s 3082(..)s
-3426(..)s 3770(..)s 4114(..)s 4458(..)s 4802(..)s
-5146(..)s 5490(..)s 5834(..)s 6178(..)s 6522(..)s
-6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s
-8851(51)s 720 12773(3.20.)m 1304(@Rotate)s 2394(..)s 2738(..)s
-3082(..)s 3426(..)s 3770(..)s 4114(..)s 4458(..)s
-4802(..)s 5146(..)s 5490(..)s 5834(..)s 6178(..)s
-6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s
-8242(..)s 8832(52)s 720 12428(3.21.)m 1304(@Background)s 3082(..)s
-3426(..)s 3770(..)s 4114(..)s 4458(..)s 4802(..)s
-5146(..)s 5490(..)s 5834(..)s 6178(..)s 6522(..)s
-6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s
-8842(53)s 720 12083(3.22.)m 1304(@K)s 6(ernShrink)k 3082(..)s
-3426(..)s 3770(..)s 4114(..)s 4458(..)s 4802(..)s
-5146(..)s 5490(..)s 5834(..)s 6178(..)s 6522(..)s
-6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s
-8842(53)s 720 11738(3.23.)m 1304(@Common,)s 2524(@Rump,)s 3438(and)s
-3842(@Meld)s 5146(..)s 5490(..)s 5834(..)s 6178(..)s
-6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s
-8242(..)s 8842(53)s 720 11393(3.24.)m 1304(@Insert)s 2394(..)s
-2738(..)s 3082(..)s 3426(..)s 3770(..)s 4114(..)s
-4458(..)s 4802(..)s 5146(..)s 5490(..)s 5834(..)s
-6178(..)s 6522(..)s 6866(..)s 7210(..)s 7554(..)s
-7898(..)s 8242(..)s 8832(54)s 720 11048(3.25.)m 1304(@OneOf)s
-2738(..)s 3082(..)s 3426(..)s 3770(..)s 4114(..)s
-4458(..)s 4802(..)s 5146(..)s 5490(..)s 5834(..)s
-6178(..)s 6522(..)s 6866(..)s 7210(..)s 7554(..)s
-7898(..)s 8242(..)s 8832(54)s 720 10703(3.26.)m 1304(@Ne)s 3(xt)k
-2394(..)s 2738(..)s 3082(..)s 3426(..)s 3770(..)s
-4114(..)s 4458(..)s 4802(..)s 5146(..)s 5490(..)s
-5834(..)s 6178(..)s 6522(..)s 6866(..)s 7210(..)s
-7554(..)s 7898(..)s 8242(..)s 8833(56)s 720 10358(3.27.)m
-1304(@Case)s 2394(..)s 2738(..)s 3082(..)s 3426(..)s
-3770(..)s 4114(..)s 4458(..)s 4802(..)s 5146(..)s
-5490(..)s 5834(..)s 6178(..)s 6522(..)s 6866(..)s
-7210(..)s 7554(..)s 7898(..)s 8242(..)s 8833(56)s
-720 10013(3.28.)m 1304(@Moment)s 2738(..)s 3082(..)s 3426(..)s
-3770(..)s 4114(..)s 4458(..)s 4802(..)s 5146(..)s
-5490(..)s 5834(..)s 6178(..)s 6522(..)s 6866(..)s
-7210(..)s 7554(..)s 7898(..)s 8242(..)s 8838(57)s
-720 9668(3.29.)m 1304(@Null)s 2394(..)s 2738(..)s 3082(..)s
-3426(..)s 3770(..)s 4114(..)s 4458(..)s 4802(..)s
-5146(..)s 5490(..)s 5834(..)s 6178(..)s 6522(..)s
-6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s
-8838(57)s 720 9323(3.30.)m 1304(@Galle)s 3(y)k 2213(and)s
-2617(@F)s 3(orceGalle)k 3(y)k 4458(..)s 4802(..)s
-5146(..)s 5490(..)s 5834(..)s 6178(..)s 6522(..)s
-6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s
-8839(58)s 720 8978(3.31.)m 1304(@NotRe)s 6(v)k 3(ealed)k
-3082(..)s 3426(..)s 3770(..)s 4114(..)s 4458(..)s
-4802(..)s 5146(..)s 5490(..)s 5834(..)s 6178(..)s
-6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s
-8242(..)s 8839(58)s 720 8633(3.32.)m 1304(The)s 1732(cross)s
-2274(reference)s 3217(symbols)s 4066(&&)s 4492(and)s 4896(&&&)s
-5834(..)s 6178(..)s 6522(..)s 6866(..)s 7210(..)s
-7554(..)s 7898(..)s 8242(..)s 8835(59)s 720 8288(3.33.)m
-1304(@T)s 19(agged)k 2738(..)s 3082(..)s 3426(..)s
-3770(..)s 4114(..)s 4458(..)s 4802(..)s 5146(..)s
-5490(..)s 5834(..)s 6178(..)s 6522(..)s 6866(..)s
-7210(..)s 7554(..)s 7898(..)s 8242(..)s 8835(59)s
-720 7943(3.34.)m 1304(@Open and @Use)s 3426(..)s 3770(..)s 4114(..)s
-4458(..)s 4802(..)s 5146(..)s 5490(..)s 5834(..)s
-6178(..)s 6522(..)s 6866(..)s 7210(..)s 7554(..)s
-7898(..)s 8242(..)s 8831(60)s 720 7598(3.35.)m 1304(@Database and @SysDatabase)s
-4802(..)s 5146(..)s 5490(..)s 5834(..)s 6178(..)s
-6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s
-8242(..)s 8831(60)s 720 7253(3.36.)m 1304(@Graphic)s 2738(..)s
-3082(..)s 3426(..)s 3770(..)s 4114(..)s 4458(..)s
-4802(..)s 5146(..)s 5490(..)s 5834(..)s 6178(..)s
-6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s
-8242(..)s 8851(61)s 720 6908(3.37.)m 1304(@PlainGraphic)s 3082(..)s
-3426(..)s 3770(..)s 4114(..)s 4458(..)s 4802(..)s
-5146(..)s 5490(..)s 5834(..)s 6178(..)s 6522(..)s
-6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s
-8840(65)s 720 6563(3.38.)m 1304(@IncludeGraphic)s 3065(and)s 3469(@SysIncludeGraphic)s
-5834(..)s 6178(..)s 6522(..)s 6866(..)s 7210(..)s
-7554(..)s 7898(..)s 8242(..)s 8840(65)s 720 6218(3.39.)m
-1304(@PrependGraphic and @SysPrependGraphic)s 6178(..)s 6522(..)s 6866(..)s 7210(..)s
-7554(..)s 7898(..)s 8242(..)s 8840(65)s 720 5873(3.40.)m
-1304(@Include and @SysInclude)s 4458(..)s 4802(..)s 5146(..)s 5490(..)s
-5834(..)s 6178(..)s 6522(..)s 6866(..)s 7210(..)s
-7554(..)s 7898(..)s 8242(..)s 8833(66)s 720 5528(3.41.)m
-1304(@BackEnd)s 2461(and)s 2865(the)s 3213(PlainT)s 16(e)k 3(xt)k
-4183(and)s 4587(PDF)s 5084(back)s 5597(ends)s 6522(..)s
-6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s
-8833(66)s 720 5183(3.42.)m 1304(@V)s 26(erbatim and @Ra)k 3(wV)k 26(erbatim)k
-4802(..)s 5146(..)s 5490(..)s 5834(..)s 6178(..)s
-6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s
-8242(..)s 8838(67)s 720 4838(3.43.)m 1304(@Underline)s 2738(..)s
-3082(..)s 3426(..)s 3770(..)s 4114(..)s 4458(..)s
-4802(..)s 5146(..)s 5490(..)s 5834(..)s 6178(..)s
-6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s
-8242(..)s 8838(67)s 720 4493(3.44.)m 1304(@P)s 3(ageLabel)k
-3082(..)s 3426(..)s 3770(..)s 4114(..)s 4458(..)s
-4802(..)s 5146(..)s 5490(..)s 5834(..)s 6178(..)s
-6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s
-8242(..)s 8839(68)s 240 fnt84 0 3864(Chapter)m 908(4)s
-240 fnt82 1022 3865(.)m 240 fnt84 1186 3864(Examples)m 240 fnt82
-2738 3865(..)m 3082(..)s 3426(..)s 3770(..)s 4114(..)s
-4458(..)s 4802(..)s 5146(..)s 5490(..)s 5834(..)s
-6178(..)s 6522(..)s 6866(..)s 7210(..)s 7554(..)s
-7898(..)s 8242(..)s 8835(69)s 720 3520(4.1.)m 1184(An)s
-1534(equation)s 2415(formatting)s 3476(package)s 4802(..)s 5146(..)s
-5490(..)s 5834(..)s 6178(..)s 6522(..)s 6866(..)s
-7210(..)s 7554(..)s 7898(..)s 8242(..)s 8835(69)s
-720 3175(4.2.)m 1184(P)s 3(aragraphs,)k 2350(displays,)s 3241(and)s
-3645(lists)s 4458(..)s 4802(..)s 5146(..)s 5490(..)s
-5834(..)s 6178(..)s 6522(..)s 6866(..)s 7210(..)s
-7554(..)s 7898(..)s 8242(..)s 8851(71)s 720 2830(4.3.)m
-1184(P)s 3(age)k 1702(layout)s 2738(..)s 3082(..)s
-3426(..)s 3770(..)s 4114(..)s 4458(..)s 4802(..)s
-5146(..)s 5490(..)s 5834(..)s 6178(..)s 6522(..)s
-6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s
-8840(75)s 720 2485(4.4.)m 1184(Chapters)s 2085(and)s 2489(sections)s
-3770(..)s 4114(..)s 4458(..)s 4802(..)s 5146(..)s
-5490(..)s 5834(..)s 6178(..)s 6522(..)s 6866(..)s
-7210(..)s 7554(..)s 7898(..)s 8242(..)s 8831(80)s
-720 2140(4.5.)m 1184(Bibliographies)s 3082(..)s 3426(..)s 3770(..)s
-4114(..)s 4458(..)s 4802(..)s 5146(..)s 5490(..)s
-5834(..)s 6178(..)s 6522(..)s 6866(..)s 7210(..)s
-7554(..)s 7898(..)s 8242(..)s 8840(85)s 240 fnt84
-0 1511(Refer)m 4(ences)k 240 fnt82 1362 1512(..)m 1706(..)s
-2050(..)s 2394(..)s 2738(..)s 3082(..)s 3426(..)s
-3770(..)s 4114(..)s 4458(..)s 4802(..)s 5146(..)s
-5490(..)s 5834(..)s 6178(..)s 6522(..)s 6866(..)s
-7210(..)s 7554(..)s 7898(..)s 8242(..)s 8831(90)s
-0 3(i)m 6(v)k
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: v 5
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-/pgsave save def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-1 LoutMargSet
-grestore
-240 fnt84 0 13843(Index)m 240 fnt82 1018 13844(..)m 1362(..)s
-1706(..)s 2050(..)s 2394(..)s 2738(..)s 3082(..)s
-3426(..)s 3770(..)s 4114(..)s 4458(..)s 4802(..)s
-5146(..)s 5490(..)s 5834(..)s 6178(..)s 6522(..)s
-6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s
-8851(91)s 8951 3(v)m
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: vi 6
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-/pgsave save def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-0 LoutMargSet
-grestore
-0 3(vi)m
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 1 7
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Times-Italic
-/pgsave save def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-1 LoutMargSet
-grestore
-480 fnt84 0 12955(Chapter)m 1819(1.)s 2400(Principles)s 240 fnt82
-0 12004(The)m 414(Lout)s 911(document)s 1900(formatting)s 2946(language)s
-3852(is)s 4047(based)s 4635(on)s 4917(just)s 5307(four)s
-5751(k)s 2(e)k 3(y)k 6131(ideas:)s 6713(objects,)s
-7482(de\207nitions,)s 8584(cross)s 0 11716(references,)m 1087(and)s 1491(g)s 1(alle)k 3(ys.)k
-2328(This)s 2804(chapter)s 3567(concentrates)s 4812(on)s 5109(them,)s
-5694(postponing)s 6812(the)s 7160(ine)s 6(vitable)k 8152(details.)s
-240 fnt84 0 10923(1.1.)m 471(Objects)s 240 fnt82 480 10447(Since)m
-1075(our)s 1462(aim)s 1888(is)s 2106(to)s 2354(produce)s
-3189(neatly)s 3835(formatted)s 4829(documents,)s 5981(we)s 6325(should)s
-7030(be)s 3(gin)k 7624(by)s 7926(looking)s 8719(at)s
-8960(a)s 0 10159(typical)m 705(e)s 3(xample)k 1568(of)s
-1839(such)s 2335(a)s 2501(document:)s 1927 2494 0 2494 240 288 60 480 7325 LoutGr2
-0 0 moveto xsize 0 lineto xsize ysize lineto
-0 ysize lineto closepath stroke
-grestore
-160 fnt84 560 1987(PURCELL)m
-128 fnt82 1316 2059(1)m 160 fnt82 170 1695(In)m 395(the)s
-681(w)s 1(orld)k 1145(of)s 1381(music)s 170 1515(England)m
-882(is)s 1163(supposed)s 170 1335(to)m 376(be)s 611(a)s
-768(mere)s 1171(pro)s 2(vince.)k 170 1155(If)m 465(she)s
-856(produces)s 1608(an)s 170 975(indif)m 4(ferent)k 1136(composer)s
-567 0 0 0 160 180 40 170 763 LoutGr2
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-128 fnt82 170 624(1)m 160 fnt82 221 552(Blom,)m 703(Eric.)s
-160 fnt83 1133 553(Some)m 170 373(Gr)m 5(eat)k 734(Composer)s 1(s.)k
-160 fnt82 170 192(Oxford,)m 703(1944.)s
-grestore
-1927 2494 0 2494 240 288 60 480 4831 LoutGr2
-0 0 moveto xsize 0 lineto xsize ysize lineto
-0 ysize lineto closepath stroke
-grestore
-160 fnt82 170 2161(or)m
-453(performer)s 6(,)k 1267(that)s 1657(is)s 170 1981(re)m 2(garded)k
-862(else)s 4(where)k 1630(as)s 170 1801(perfectly)m 905(normal)s
-1527(and)s 170 1621(natural;)m 762(b)s 3(ut)k 1078(if)s
-1298(foreign)s 170 1441(students)m 905(of)s 1264(musical)s 170 1261(history)m
-976(ha)s 3(v)k 2(e)k 1637(to)s 170 1081(ackno)m 4(wledge)k
-1130(a)s 1326(British)s 170 901(musical)m 795(genius,)s 1376(he)s
-1657(is)s 170 721(considered)m 901(a)s 1012(freak.)s 490 488(Such)m
-957(a)s 1178(freak)s 1657(is)s 170 308(Henry)m 607(Purcell.)s
-1170(Y)s 16(et)k 1426(if)s 1574(we)s
-grestore
-1927 2494 0 2494 240 288 60 480 2337 LoutGr2
-0 0 moveto xsize 0 lineto xsize ysize lineto
-0 ysize lineto closepath stroke
-grestore
-160 fnt82
-170 2161(mak)m 1(e)k 565(a)s 690(choice)s 1157(of)s
-1352(\207fteen)s 170 1981(of)m 407(the)s 695(w)s 1(orld')k 8(s)k
-1264(musical)s 170 1801(classics,)m 740(as)s 918(here,)s 1276(we)s
-1510(\207nd)s 170 1621(that)m 464(we)s 703(cannot)s 1185(omit)s
-1533(this)s 170 1441(English)m 695(master)s 8(.)k
-grestore
-0 1886(It)m
-229(is)s 463(a)s 653(lar)s 4(ge)k 1206(rectangle)s
-2161(made)s 2759(from)s 3307(three)s 3864(smaller)s 4651(rectangles)s
-5694(\211)s 5898(its)s 6198(pages.)s 6931(Each)s 7490(page)s
-8022(is)s 8256(made)s 8855(of)s 0 1598(lines;)m 578(each)s
-1088(line)s 1517(is)s 1743(made)s 2332(of)s 2618(w)s 2(ords,)k
-3324(although)s 4234(it)s 4441(mak)s 2(es)k 5117(sense)s
-5706(for)s 6059(an)s 3(y)k 6472(rectangle)s 7418(\(e)s 6(v)k 3(en)k
-8012(a)s 8194(complete)s 0 1310(document\))m 1072(to)s 1311(be)s
-1593(part)s 2024(of)s 2295(a)s 2461(line,)s 2926(pro)s 3(vided)k
-3832(it)s 4024(is)s 4234(not)s 4600(too)s 4959(lar)s 4(ge.)k
-480 936(Lout)m 995(deals)s 1541(with)s 2027(something)s 3081(a)s
-3251(little)s 3747(more)s 4298(complicated)s 5528(than)s 6001(rectangles:)s
-240 fnt83 7079 938(objects.)m 240 fnt82 7914 936(An)m 8268(object)s
-8916(is)s 0 648(a)m 176(rectangle)s 1118(with)s 1611(at)s
-1854(least)s 2362(one)s 240 fnt83 2775 650(column)m 3545(mark)s
-240 fnt82 4112 648(protruding)m 5186(abo)s 3(v)k 3(e)k
-5819(and)s 6234(belo)s 6(w)k 6878(it,)s 7128(and)s
-7543(at)s 7786(least)s 8294(one)s 240 fnt83 8707 650(r)m 10(ow)k
-192 fnt84 4490 0(1)m
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 2 8
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Times-Italic
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-0 LoutMargSet
-grestore
-240 fnt84 0 13840(2)m 240 fnt83 6965 13843(Chapter)m 7815(1.)s
-8089(Principles)s 0 13205(mark)m 240 fnt82 557 13203(protruding)m 1621(to)s
-1861(the)s 2211(left)s 2589(and)s 2994(right.)s 3611(The)s
-4040(simplest)s 4897(objects)s 5627(contain)s 6389(w)s 2(ords)k
-7024(lik)s 2(e)k 7438(metempsychosis,)s 0 12915(and)m 404(ha)s 4(v)k 3(e)k
-905(one)s 1307(mark)s 1859(of)s 2130(each)s 2625(type:)s
-1572 215 0 106 240 288 60 480 12360 LoutGr2
-grestore save gsave 200 dict begin lfigdict begin
-grestore
-1572 215 0 106 240 288 60 0 0 LoutGr2
-/lfiglightgrey [ lfigbox ] gsave lfigpaintpath grestore
-0.015 cm setlinewidth lfiground setlinecap
-0.15 cm /lfigsolid [ lfigbox ] lfigdopath
-pop pop
-grestore
-1572 215 0 106 240 288 60 0 0 LoutGr2
-
-0.015 cm setlinewidth lfiground setlinecap
-0.15 cm /lfigdashed [ -0.3 cm ymark
-xsize ymark 0.3 cm 0 lfigpadd []
-xmark -0.3 cm
-xmark ysize 0 0.3 cm lfigpadd ] lfigdopath
-pop pop
-grestore
-0 52(metempsychosis)m
-grestore
-
-grestore
-end end restore
-grestore
-0 11909(The)m 441(rectangle)s 1386(e)s 3(xactly)k
-2141(encloses)s 3016(the)s 3377(w)s 2(ord;)k 3993(its)s
-4283(column)s 5072(mark)s 5637(is)s 5861(at)s 6107(the)s
-6469(left)s 6859(edge,)s 7432(and)s 7850(its)s 8140(ro)s 6(w)k
-8574(mark)s 0 11621(passes)m 668(through)s 1477(the)s 1831(middle)s
-2558(of)s 2835(the)s 3190(lo)s 6(wer)k 4(-case)k
-4276(letters.)s 5029(The)s 5463(rectangle)s 6401(and)s 6811(marks)s
-7453(do)s 7752(not)s 8125(appear)s 8829(on)s 0 11333(the)m
-348(printed)s 1083(page,)s 1642(b)s 4(ut)k 2004(to)s
-2243(understand)s 3351(what)s 3876(Lout)s 4388(is)s 4598(doing)s
-5197(you)s 5612(ha)s 4(v)k 3(e)k 6113(to)s
-6352(imagine)s 7178(them.)s 480 10959(T)m 19(o)k 782(place)s
-1344(tw)s 2(o)k 1756(objects)s 2487(side)s 2930(by)s
-3226(side,)s 3721(we)s 4058(separate)s 4898(them)s 5438(by)s
-5735(the)s 6085(symbol)s 220 fnt35 6847 10956(|,)m 240 fnt82
-7009 10959(which)m 7653(denotes)s 8437(the)s 8788(act)s 0 10671(of)m
-240 fnt83 271 10673(horizontal)m 1315(concatenation)s 240 fnt82 2665 10671(.)m
-2829(So,)s 3189(if)s 3406(we)s 3741(write)s 220 fnt35
-480 10189(USA | A)m 6(ustr)k 2(alia)k 240 fnt82 0 9734(the)m
-348(result)s 938(will)s 1364(be)s 1646(the)s 1994(object)s
-476 165 0 57 240 288 60 480 9228 LoutGr2
-grestore save gsave 200 dict begin lfigdict begin
-grestore
-476 165 0 57 240 288 60 0 0 LoutGr2
-/lfiglightgrey [ lfigbox ] gsave lfigpaintpath grestore
-0.015 cm setlinewidth lfiground setlinecap
-0.15 cm /lfigsolid [ lfigbox ] lfigdopath
-pop pop
-grestore
-476 165 0 57 240 288 60 0 0 LoutGr2
-
-0.015 cm setlinewidth lfiground setlinecap
-0.15 cm /lfigdashed [ -0.3 cm ymark
-xsize ymark 0.3 cm 0 lfigpadd []
-xmark -0.3 cm
-xmark ysize 0 0.3 cm lfigpadd ] lfigdopath
-pop pop
-grestore
-0 3(USA)m
-grestore
-
-grestore
-end end restore
-grestore
-875 165 0 56 240 288 60 956 9229 LoutGr2
-grestore save gsave 200 dict begin lfigdict begin
-grestore
-875 165 0 56 240 288 60 0 0 LoutGr2
-/lfiglightgrey [ lfigbox ] gsave lfigpaintpath grestore
-0.015 cm setlinewidth lfiground setlinecap
-0.15 cm /lfigsolid [ lfigbox ] lfigdopath
-pop pop
-grestore
-875 165 0 56 240 288 60 0 0 LoutGr2
-
-0.015 cm setlinewidth lfiground setlinecap
-0.15 cm /lfigdashed [ -0.3 cm ymark
-xsize ymark 0.3 cm 0 lfigpadd []
-xmark -0.3 cm
-xmark ysize 0 0.3 cm lfigpadd ] lfigdopath
-pop pop
-grestore
-0 2(Australia)m
-grestore
-
-grestore
-end end restore
-grestore
-0 8777(Notice)m 718(that)s 1162(this)s
-1583(object)s 2253(has)s 2648(tw)s 2(o)k 3084(column)s
-3884(marks,)s 4601(b)s 4(ut)k 4988(still)s 5426(only)s
-5931(one)s 6359(ro)s 6(w)k 6804(mark,)s 7428(because)s
-220 fnt35 8266 8774(|)m 240 fnt82 8389 8777(mer)m 4(ges)k
-0 8489(the)m 382(tw)s 2(o)k 827(ro)s 6(w)k
-1282(marks)s 1952(together)s 13(.)k 2921(This)s 3431(mer)s 4(ging)k
-4312(of)s 4618(ro)s 6(w)k 5073(marks)s 5743(\207x)s 3(es)k
-6277(the)s 6660(v)s 3(ertical)k 7462(position)s 8325(of)s
-8631(each)s 0 8201(object)m 647(with)s 1133(respect)s 1873(to)s
-2115(the)s 2467(other)s 9(,)k 3060(b)s 4(ut)k
-3425(it)s 3621(does)s 4115(not)s 4485(determine)s 5499(ho)s 6(w)k
-5964(f)s 2(ar)k 6290(apart)s 6830(the)s 3(y)k
-7297(are.)s 7756(This)s 8236(distance,)s 0 7913(or)m 240 fnt83
-276 7915(gap)m 240 fnt82 629 7913(,)m 753(may)s 1236(be)s
-1536(gi)s 6(v)k 3(en)k 2133(just)s 2555(after)s
-3069(the)s 3434(symbol,)s 4263(as)s 4531(in)s 220 fnt35
-4791 7910(|0.5i)m 240 fnt82 5264 7913(for)m 5620(e)s 3(xample,)k
-6551(which)s 7210(speci\207es)s 8102(horizontal)s 0 7625(concatenation)m 1385(with)s
-1867(a)s 2033(g)s 1(ap)k 2431(of)s 2702(half)s
-3145(an)s 3428(inch.)s 4004(If)s 4234(no)s 4527(g)s 1(ap)k
-4925(is)s 5135(gi)s 6(v)k 3(en,)k 5765(it)s
-5957(is)s 6167(assumed)s 7049(to)s 7288(be)s 220 fnt35
-7570 7622(0i)m 240 fnt82 7726 7625(.)m 240 fnt83 480 7253(V)m 26(ertical)k
-1283(concatenation)s 240 fnt82 2633 7251(,)m 2740(denoted)s 3556(by)s
-220 fnt35 3850 7248(/)m 240 fnt82 3914 7251(,)m 4021(is)s
-4231(the)s 4579(same)s 5126(apart)s 5663(from)s 6187(the)s
-6535(change)s 7269(of)s 7540(direction:)s 220 fnt35 480 6750(A)m 6(ustr)k 2(alia /0.1i USA)k
-240 fnt82 0 6295(has)m 370(result)s 875 165 0 56 240 288 60 480 5840 LoutGr2
-grestore save gsave 200 dict begin lfigdict begin
-grestore
-875 165 0 56 240 288 60 0 0 LoutGr2
-/lfiglightgrey [ lfigbox ] gsave lfigpaintpath grestore
-0.015 cm setlinewidth lfiground setlinecap
-0.15 cm /lfigsolid [ lfigbox ] lfigdopath
-pop pop
-grestore
-875 165 0 56 240 288 60 0 0 LoutGr2
-
-0.015 cm setlinewidth lfiground setlinecap
-0.15 cm /lfigdashed [ -0.3 cm ymark
-xsize ymark 0.3 cm 0 lfigpadd []
-xmark -0.3 cm
-xmark ysize 0 0.3 cm lfigpadd ] lfigdopath
-pop pop
-grestore
-0 2(Australia)m
-grestore
-
-grestore
-end end restore
-grestore
-476 165 0 57 240 288 60 480 5531 LoutGr2
-grestore save gsave 200 dict begin lfigdict begin
-grestore
-476 165 0 57 240 288 60 0 0 LoutGr2
-/lfiglightgrey [ lfigbox ] gsave lfigpaintpath grestore
-0.015 cm setlinewidth lfiground setlinecap
-0.15 cm /lfigsolid [ lfigbox ] lfigdopath
-pop pop
-grestore
-476 165 0 57 240 288 60 0 0 LoutGr2
-
-0.015 cm setlinewidth lfiground setlinecap
-0.15 cm /lfigdashed [ -0.3 cm ymark
-xsize ymark 0.3 cm 0 lfigpadd []
-xmark -0.3 cm
-xmark ysize 0 0.3 cm lfigpadd ] lfigdopath
-pop pop
-grestore
-0 3(USA)m
-
-grestore
-
-grestore
-end end restore
-grestore
-0 5080(The)m 485(usual)s 1102(mer)s 4(ging)k 2005(of)s
-2333(marks)s 3026(occurs,)s 3814(and)s 4275(no)s 6(w)k
-4793(the)s 5199(g)s 1(ap)k 5654(determines)s 6810(the)s
-7215(v)s 3(ertical)k 8040(separation.)s 0 4792(Horizontal)m 1077(and)s
-1481(v)s 3(ertical)k 2248(can)s 2637(be)s 2919(combined:)s
-220 fnt35 1000 4340(USA)m 2256(|0.2i)s 2772(A)s 6(ustr)k 2(alia)k
-480 4052(/0.1i)m 1000(W)s 8(ashington)k 2256(|)s 2772(Canberr)s 2(a)k
-240 fnt82 0 3553(has)m 370(result)s 476 165 0 57 240 288 60 480 3097 LoutGr2
-grestore save gsave 200 dict begin lfigdict begin
-grestore
-476 165 0 57 240 288 60 0 0 LoutGr2
-/lfiglightgrey [ lfigbox ] gsave lfigpaintpath grestore
-0.015 cm setlinewidth lfiground setlinecap
-0.15 cm /lfigsolid [ lfigbox ] lfigdopath
-pop pop
-grestore
-476 165 0 57 240 288 60 0 0 LoutGr2
-
-0.015 cm setlinewidth lfiground setlinecap
-0.15 cm /lfigdashed [ -0.3 cm ymark
-xsize ymark 0.3 cm 0 lfigpadd []
-xmark -0.3 cm
-xmark ysize 0 0.3 cm lfigpadd ] lfigdopath
-pop pop
-grestore
-0 3(USA)m
-grestore
-
-grestore
-end end restore
-grestore
-659 166 0 57 240 288 60 956 3097 LoutGr2
-0 ymark moveto xsize 10 pt add ymark lineto [ 3 pt ] 0 setdash stroke
-grestore
-
-grestore
-875 165 0 56 240 288 60 1903 3098 LoutGr2
-grestore save gsave 200 dict begin lfigdict begin
-grestore
-875 165 0 56 240 288 60 0 0 LoutGr2
-/lfiglightgrey [ lfigbox ] gsave lfigpaintpath grestore
-0.015 cm setlinewidth lfiground setlinecap
-0.15 cm /lfigsolid [ lfigbox ] lfigdopath
-pop pop
-grestore
-875 165 0 56 240 288 60 0 0 LoutGr2
-
-0.015 cm setlinewidth lfiground setlinecap
-0.15 cm /lfigdashed [ -0.3 cm ymark
-xsize ymark 0.3 cm 0 lfigpadd []
-xmark -0.3 cm
-xmark ysize 0 0.3 cm lfigpadd ] lfigdopath
-pop pop
-grestore
-0 2(Australia)m
-
-grestore
-
-grestore
-end end restore
-grestore
-1135 215 0 106 240 288 60 480 2738 LoutGr2
-grestore save gsave 200 dict begin lfigdict begin
-grestore
-1135 215 0 106 240 288 60 0 0 LoutGr2
-/lfiglightgrey [ lfigbox ] gsave lfigpaintpath grestore
-0.015 cm setlinewidth lfiground setlinecap
-0.15 cm /lfigsolid [ lfigbox ] lfigdopath
-pop pop
-grestore
-1135 215 0 106 240 288 60 0 0 LoutGr2
-
-0.015 cm setlinewidth lfiground setlinecap
-0.15 cm /lfigdashed [ -0.3 cm ymark
-xsize ymark 0.3 cm 0 lfigpadd []
-xmark -0.3 cm
-xmark ysize 0 0.3 cm lfigpadd ] lfigdopath
-pop pop
-grestore
-0 52(W)m 19(ashington)k
-grestore
-
-grestore
-end end restore
-grestore
-876 166 0 57 240 288 60 1903 2787 LoutGr2
-grestore save gsave 200 dict begin lfigdict begin
-grestore
-876 166 0 57 240 288 60 0 0 LoutGr2
-/lfiglightgrey [ lfigbox ] gsave lfigpaintpath grestore
-0.015 cm setlinewidth lfiground setlinecap
-0.15 cm /lfigsolid [ lfigbox ] lfigdopath
-pop pop
-grestore
-876 166 0 57 240 288 60 0 0 LoutGr2
-
-0.015 cm setlinewidth lfiground setlinecap
-0.15 cm /lfigdashed [ -0.3 cm ymark
-xsize ymark 0.3 cm 0 lfigpadd []
-xmark -0.3 cm
-xmark ysize 0 0.3 cm lfigpadd ] lfigdopath
-pop pop
-grestore
-0 3(Canberra)m
-grestore
-
-grestore
-end end restore
-grestore
-0 2287(There)m 655(are)s
-1044(se)s 6(v)k 3(eral)k 1808(things)s 2486(to)s
-2768(note)s 3278(carefully)s 4222(here.)s 4839(White)s 5522(space)s
-6151(\(including)s 7229(tabs)s 7707(and)s 8154(ne)s 6(wlines\))k
-0 1999(adjacent)m 848(to)s 1078(a)s 1236(concatenation)s 2612(symbol)s
-3364(is)s 3565(ignored,)s 4395(so)s 4652(it)s 4836(may)s
-5293(be)s 5567(used)s 6055(to)s 6286(lay)s 6623(out)s
-6981(the)s 7320(e)s 3(xpression)k 8388(clearly)s 15(.)k
-0 1711(The)m 425(symbol)s 220 fnt35 1182 1708(|)m 240 fnt82
-1275 1711(tak)m 2(es)k 1812(precedence)s 2940(o)s 3(v)k 3(er)k
-220 fnt35 3415 1708(/)m 240 fnt82 3479 1711(,)m 3583(which)s
-4221(means)s 4880(that)s 5295(the)s 5639(ro)s 6(ws)k
-6146(are)s 6490(formed)s 7234(\207rst,)s 7709(then)s 8174(v)s 3(ertically)k
-0 1423(concatenated.)m 1420(The)s 1856(symbol)s 220 fnt35 2625 1420(/)m
-240 fnt82 2757 1423(will)m 3191(mer)s 4(ge)k 3849(tw)s 2(o)k
-4267(or)s 4535(more)s 5090(column)s 5873(marks,)s 6573(creating)s
-7403(multiple)s 8264(columns)s 0 1135(\(and)m 220 fnt35 484 1132(|)m
-240 fnt82 583 1135(will)m 1011(mer)s 4(ge)k 1662(tw)s 2(o)k
-2073(or)s 2334(more)s 2883(ro)s 6(w)k 3305(marks\).)s
-4134(This)s 4611(implies)s 5367(that)s 5787(the)s 6137(g)s 1(ap)k
-220 fnt35 6536 1132(0.2i)m 240 fnt82 6937 1135(used)m 7436(abo)s 3(v)k 3(e)k
-8060(is)s 8272(between)s 0 847(columns,)m 910(not)s 1268(indi)s 6(vidual)k
-2278(items)s 2838(in)s 3072(columns;)s 3987(a)s 4144(g)s 1(ap)k
-4534(in)s 4768(the)s 5108(second)s 5822(ro)s 6(w)k
-6234(w)s 2(ould)k 6880(therefore)s 7789(be)s 8062(redundant,)s
-0 559(and)m 404(so)s 670(is)s 880(omitted.)s 480 185(A)m
-710(v)s 6(ariant)k 1427(of)s 220 fnt35 1698 182(/)m
-240 fnt82 1822 185(called)m 220 fnt35 2450 182(//)m 240 fnt82
-2635 185(left-justi\207es)m 3825(tw)s 2(o)k 4235(objects)s 4963(instead)s
-5698(of)s 5969(mer)s 4(ging)k 6815(their)s 7312(marks.)s
-
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 3 9
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Italic
-%%+ font Times-Bold
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-1 LoutMargSet
-grestore
-240 fnt83 0 13843(1.1.)m 454(Objects)s 240 fnt84 8953 13840(3)m
-240 fnt82 480 13205(By)m 840(enclosing)s 1836(an)s 2145(object)s
-2815(in)s 3085(braces,)s 3828(it)s 4046(is)s 4282(possible)s
-5148(to)s 5414(o)s 3(v)k 3(erride)k 6286(the)s
-6660(set)s 7011(precedences.)s 8369(Here)s 8916(is)s 0 12917(another)m
-777(e)s 3(xpression)k 1854(for)s 2192(the)s 2540(table)s
-3060(abo)s 3(v)k 3(e,)k 3733(in)s 3976(which)s
-4618(the)s 4966(columns)s 5828(are)s 6175(formed)s 6923(\207rst:)s
-220 fnt35 996 12416({ USA)m 2089(/0.1i)s 2609(W)s 8(ashington })k
-480 12128(|0.2i)m 996({ A)s 6(ustr)k 2(alia)k 2089(/)s
-2609(Canberr)s 2(a })k 240 fnt82 0 11634(Braces)m 701(ha)s 4(v)k 3(e)k
-1202(no)s 1495(ef)s 6(fect)k 2091(other)s 2642(than)s
-3111(to)s 3350(alter)s 3833(the)s 4181(grouping.)s 240 fnt83
-480 11262(P)m 19(ar)k 3(a)k 2(gr)k 3(aph)k
-1569(br)s 8(eaking)k 240 fnt82 2476 11260(occurs)m 3160(when)s
-3746(an)s 4038(object)s 4692(is)s 4911(too)s 5280(wide)s
-5810(to)s 6059(\207t)s 6327(into)s 6762(the)s 7119(space)s
-7716(a)s 4(v)k 6(ailable)k 8633(to)s 8882(it;)s
-0 10972(by)m 286(breaking)s 1168(its)s 1436(paragraphs)s 2527(into)s
-2944(lines,)s 3494(its)s 3762(width)s 4355(is)s 4557(reduced)s
-5364(to)s 5595(an)s 5869(acceptable)s 6925(amount.)s 7799(The)s
-8218(a)s 4(v)k 6(ailable)k 0 10684(space)m 587(is)s
-797(determined)s 1930(by)s 2224(the)s 220 fnt35 2572 10681(@Wide)m
-240 fnt82 3346 10684(symbol,)m 4158(whose)s 4826(form)s 5350(is)s
-240 fnt83 480 10181(length)m 220 fnt35 1193 10176(@Wide)m 240 fnt83
-2027 10181(object)m 240 fnt82 0 9680(and)m 404(whose)s 1072(result)s
-1662(is)s 1872(the)s 2220(gi)s 6(v)k 3(en)k
-2800(object)s 3444(modi\207ed)s 4353(to)s 4592(ha)s 4(v)k 3(e)k
-5093(e)s 3(xactly)k 5834(the)s 6182(gi)s 6(v)k 3(en)k
-6762(length.)s 7524(F)s 3(or)k 7913(e)s 3(xample,)k
-220 fnt35 480 9179(5i @Wide {)m 480 8891(Macbeth w)m 3(as v)k 5(er)k -6(y ambitious)k 3(.)k 13( )k 11(This led him to wish to become king of)k
-480 8603(Scotland.)m 13( )k 11(The witches told him that this wish of his w)k 2(ould come tr)k -3(ue)k 3(.)k 13( )k 11(The)k
-480 8315(king of Scotland at this time w)m 3(as Duncan.)k 13( Encour)k 2(aged b)k 4(y his wif)k 6(e)k 3(, Macbeth)k
-480 8027(m)m 2(urdered Duncan.)k 13( He w)k 3(as thus enab)k 4(led to succeed Duncan as king.)k 13( \(51 w)k 2(ords\))k
-480 7739(|0.5i)m 480 7451(Encour)m 2(aged b)k 4(y his wif)k 6(e)k 3(, Macbeth achie)k 6(v)k 5(ed his ambition and realiz)k 3(ed the)k
-480 7163(prediction of the witches b)m 4(y m)k 2(urder)k -3(ing Duncan and becoming king of Scotland)k 480 6875(in his place)m 3(.)k 13( \(26 w)k 2(ords\))k
-480 6587(})m 240 fnt82 0 6093(has)m 370(for)s 708(its)s
-984(result)s 1574(the)s 1922(follo)s 6(wing)k 2899(\207v)s 3(e)k
-3311(inch)s 3780(wide)s 4301(object)s 4945([7)s 5132(]:)s
-480 5590(Macbeth)m 1356(w)s 2(as)k 1758(v)s 3(ery)k
-2216(ambitious.)s 3304(This)s 480 5302(led)m 828(him)s 1257(to)s
-1493(wish)s 2000(to)s 2236(become)s 3033(king)s 3509(of)s
-480 5014(Scotland.)m 1538(The)s 2023(witches)s 2861(told)s 3348(him)s
-480 4726(that)m 922(this)s 1343(wish)s 1876(of)s 2172(his)s
-2526(w)s 2(ould)k 3206(come)s 480 4438(true.)m 1025(The)s
-1464(king)s 1954(of)s 2235(Scotland)s 3141(at)s 3384(this)s
-480 4150(time)m 959(w)s 2(as)k 1379(Duncan.)s 2287(Encouraged)s
-3486(by)s 480 3862(his)m 818(wife,)s 1357(Macbeth)s 2259(murdered)s
-3242(Dun)s 3652(-)s 480 3574(can.)m 995(He)s 1350(w)s 2(as)k
-1790(thus)s 2260(enabled)s 3081(to)s 3340(suc)s 3652(-)s
-480 3286(ceed)m 976(Duncan)s 1778(as)s 2028(king.)s 2618(\(51)s
-2972(w)s 2(ords\))k 4440 5590(Encouraged)m 5653(by)s 5960(his)s
-6302(wife,)s 6846(Macbeth)s 4440 5302(achie)m 6(v)k 3(ed)k
-5409(his)s 5809(ambition)s 6786(and)s 7260(real)s 7612(-)s
-4440 5014(ized)m 4910(the)s 5272(prediction)s 6312(of)s 6597(the)s
-6959(witches)s 4440 4726(by)m 4731(murdering)s 5776(Duncan)s 6574(and)s
-6974(becom)s 7612(-)s 4440 4438(ing)m 4818(king)s 5316(of)s
-5606(Scotland)s 6520(in)s 6782(his)s 7132(place.)s 4440 4150(\(26)m
-4812(w)s 2(ords\))k 0 2783(A)m 232(paragraph)s 1247(of)s
-1520(te)s 3(xt)k 1937(can)s 2328(be)s 2612(included)s
-3496(an)s 3(ywhere,)k 4533(and)s 4939(it)s 5133(will)s
-5561(be)s 5845(brok)s 2(en)k 6567(automatically)s 7923(if)s
-8143(necessary)s 0 2495(to)m 239(\207t)s 498(the)s 846(a)s 4(v)k 6(ailable)k
-1754(space.)s 2449(The)s 2877(spaces)s 3552(between)s 4406(w)s 2(ords)k
-5040(are)s 5387(con)s 9(v)k 3(erted)k 6376(into)s
-6801(concatenation)s 8186(symbols.)s 480 2121(These)m 1136(are)s 1512(the)s
-1889(most)s 2443(signi\207cant)s 3528(of)s 3828(Lout')s 13(s)k
-4519(object-b)s 4(uilding)k 6058(symbols.)s 7049(There)s 7691(are)s
-8067(others,)s 8788(for)s 0 1833(changing)m 924(fonts,)s 1501(controlling)s
-2596(paragraph)s 3601(breaking,)s 4538(printing)s 5340(graphical)s 6277(objects)s
-6997(lik)s 2(e)k 7402(box)s 3(es)k 8001(and)s
-8397(circles,)s 0 1545(and)m 404(so)s 670(on,)s 1017(b)s 4(ut)k
-1379(the)s 3(y)k 1842(do)s 2135(not)s 2501(add)s
-2905(an)s 3(ything)k 3793(ne)s 6(w)k 4240(in)s
-4483(principle.)s 240 fnt84 0 752(1.2.)m 471(De\207nitions)s 240 fnt82
-480 321(The)m 897(features)s 1691(of)s 1950(Lout)s 2451(are)s
-2786(v)s 3(ery)k 3250(general.)s 4105(The)s 3(y)k
-4637(do)s 4918(not)s 5272(assume)s 6020(that)s 6427(documents)s
-7503(are)s 7838(composed)s 8855(of)s
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 4 10
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Times-Italic
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-0 LoutMargSet
-grestore
-240 fnt84 0 13840(4)m 240 fnt83 6965 13843(Chapter)m 7815(1.)s
-8089(Principles)s 240 fnt82 0 13204(pages,)m 637(nor)s 1001(that)s
-1403(there)s 1921(are)s 2252(such)s 2733(things)s 3353(as)s
-3588(mar)s 4(gins)k 4389(and)s 4778(footnotes,)s 5759(for)s
-6082(e)s 3(xample.)k 240 fnt83 7037 13206(De\207nitions)m 240 fnt82
-8127 13204(bridge)m 8778(the)s 0 12916(g)m 1(ap)k 397(between)s
-1249(Lout')s 13(s)k 1910(general)s 2666(features)s 3470(and)s
-3873(the)s 4219(special)s 4935(features)s 5740(\211)s 5918(footnotes,)s
-6913(equations,)s 7936(pages)s 8530(\211)s 8708(that)s 0 12628(particular)m
-991(documents)s 2097(require.)s 2954(The)s 3(y)k 3515(hold)s
-4017(the)s 4382(instr)s 4806(uct)s 5098(ions)s 5566(for)s
-5922(producing)s 6963(these)s 7528(special)s 8264(features,)s 0 12340(con)m 9(v)k 3(eniently)k
-1278(packaged)s 2240(ready)s 2825(for)s 3163(use.)s 480 11966(F)m 3(or)k
-885(e)s 3(xample,)k 1815(consider)s 2701(the)s 3065(challenge)s
-4053(posed)s 4686(by)s 4996(`)s 5057(T)s 5153 11918(E)m
-5261 11966(X)m 5430(',)s 5633(which)s 6291(is)s 6517(the)s
-6881(name)s 7471(of)s 7758(one)s 8176(of)s 8464(Lout')s 13(s)k
-0 11678(most)m 525(illustrious)s 1531(ri)s 6(v)k 6(als)k
-2100([5)s 2285(].)s 2528(Lout)s 3040(solv)s 3(es)k
-3686(it)s 3878(easily)s 4489(enough,)s 5302(lik)s 2(e)k
-5714(this:)s 220 fnt35 480 11177(T{ /0.2f)m 6(o E }X)k 240 fnt82
-0 10683(b)m 4(ut)k 373(to)s 624(type)s 1103(this)s
-1511(e)s 6(v)k 3(ery)k 2098(time)s 2590(T)s
-2686 10635(E)m 2794 10683(X)m 3035(is)s 3256(mentioned)s 4336(w)s 2(ould)k
-5002(be)s 5296(tedious)s 6050(and)s 6465(error)s 4(-prone.)k
-7724(So)s 8041(we)s 8388(place)s 8960(a)s 0 10395(de\207nition)m
-974(at)s 1206(the)s 1554(be)s 3(ginning)k 2562(of)s
-2833(the)s 3181(document:)s 220 fnt35 480 9894(def @T)m 26(eX { )k 11(T{ /0.2f)k 6(o E }X })k
-240 fnt82 0 9400(No)m 6(w)k 220 fnt35 514 9397(@T)m 26(eX)k
-240 fnt82 1169 9400(stands)m 1818(for)s 2156(the)s 2504(object)s
-3148(follo)s 6(wing)k 4125(it)s 4317(between)s 5171(braces,)s
-5888(and)s 6292(we)s 6627(may)s 7093(write)s 220 fnt35
-480 8899(consider)m 1370(the)s 1728(challenge)s 2719(posed)s 3366(b)s 4(y)k
-3653(`@T)s 26(eX',)k 4451(\202)s 240 fnt82 0 8400(as)m
-250(the)s 598(author)s 1269(did)s 1633(earlier)s 2301(in)s
-2544(this)s 2940(paragraph.)s 480 8026(A)m 240 fnt83 706 8028(symbol)m
-240 fnt82 1440 8026(is)m 1646(a)s 1808(name,)s 2429(lik)s 2(e)k
-220 fnt35 2837 8023(@T)m 26(eX)k 240 fnt82 3432 8026(,)m
-3535(which)s 4172(stands)s 4817(for)s 5151(something)s 6197(other)s
-6744(than)s 7209(itself.)s 7845(The)s 8269(initial)s 220 fnt35
-8875 8023(@)m 240 fnt82 0 7738(is)m 201(not)s 558(compulsory)s 15(,)k
-1771(b)s 4(ut)k 2124(it)s 2307(does)s 2788(mak)s 2(e)k
-3351(the)s 3690(name)s 4254(stand)s 4808(out)s 5165(clearly)s 15(.)k
-5954(A)s 240 fnt83 6175 7740(de\207nition)m 240 fnt82 7124 7738(of)m
-7386(a)s 7543(symbol)s 8293(declares)s 0 7450(a)m 164(name)s
-736(to)s 973(be)s 1253(a)s 1417(symbol,)s 2227(and)s
-2629(says)s 3090(what)s 3613(the)s 3959(symbol)s 4717(stands)s
-5364(for)s 13(.)k 5791(The)s 240 fnt83 6217 7452(body)m
-240 fnt82 6737 7450(of)m 7006(a)s 7170(de\207nition)s 8142(is)s
-8350(the)s 8695(part)s 0 7162(follo)m 6(wing)k 977(the)s
-1325(name,)s 1950(between)s 2804(the)s 3152(braces.)s 3926(T)s 19(o)k
-240 fnt83 4226 7164(in)m 9(vok)k 2(e)k 240 fnt82
-4892 7162(a)m 5058(symbol)s 5818(is)s 6028(to)s 6267(mak)s 2(e)k
-6839(use)s 7214(of)s 7485(it.)s 480 6788(Another)m 1324(e)s 3(xpression)k
-2401(ripe)s 2828(for)s 3166(packaging)s 4203(in)s 4446(a)s
-4612(de\207nition)s 5586(is)s 220 fnt35 480 6287(@OneRo)m 3(w { | -2p @F)k 6(ont n ^/0.5fk 2 })k
-240 fnt82 0 5745(which)m 642(produces)s 200 fnt82 1671 5862(n)m
-240 fnt82 1557 5745(2)m 1828(\(see)s 2268(Chapter)s 3085(2\).)s
-3448(But)s 3854(this)s 4250(time)s 4730(we)s 5065(w)s 2(ould)k
-5720(lik)s 2(e)k 6132(to)s 6371(be)s 6653(able)s
-7107(to)s 7346(write)s 240 fnt83 480 5242(object)m 220 fnt35
-1188 5237(@Super)m 240 fnt83 2116 5242(object)m 240 fnt82 0 4640(so)m
-296(that)s 220 fnt35 745 4637(a)m 953(@Super)s 1853(2)s
-240 fnt82 2055 4640(w)m 2(ould)k 2741(come)s 3345(out)s
-3742(as)s 200 fnt82 4128 4769(2)m 240 fnt82 4022 4640(a)m
-4223(,)s 4361(and)s 4796(so)s 5092(on,)s 5470(for)s
-5838(in)s 6112(this)s 6538(w)s 2(ay)k 7020(the)s
-7398(usefulness)s 8476(of)s 8778(the)s 0 4352(de\207nition)m 974(is)s
-1184(greatly)s 1901(increased.)s 2967(Here)s 3487(is)s 3697(ho)s 6(w)k
-4158(it)s 4350(is)s 4560(done:)s 220 fnt35 480 3851(def @Super)m
-480 3563( left x)m 480 3275( r)m -3(ight y)k 480 2987({ @OneRo)m 3(w { | -2p @F)k 6(ont y ^/0.5fk x })k
-480 2699(})m 240 fnt82 0 2205(This)m 492(de\207nition)s 1483(says)s
-1963(that)s 220 fnt35 2398 2202(@Super)m 240 fnt82 3283 2205(has)m
-3669(tw)s 2(o)k 240 fnt83 4096 2207(par)m 3(ameter)k 2(s)k
-240 fnt82 5176 2205(,)m 220 fnt35 5300 2202(x)m 240 fnt82
-5485 2205(and)m 220 fnt35 5906 2202(y)m 240 fnt82 6014 2205(.)m
-6194(When)s 220 fnt35 6840 2202(@Super)m 240 fnt82 7725 2205(is)m
-7952(in)s 9(v)k 4(ok)k 2(ed,)k 8833(all)s
-0 1917(occurrences)m 1205(of)s 220 fnt35 1490 1914(x)m 240 fnt82
-1671 1917(in)m 1928(the)s 2289(body)s 2837(will)s 3276(be)s
-3572(replaced)s 4452(by)s 4760(the)s 5121(object)s 5779(just)s
-6197(to)s 6450(the)s 6811(left)s 7202(of)s 220 fnt35
-7486 1914(@Super)m 240 fnt82 8294 1917(,)m 8415(and)s 8833(all)s
-0 1629(occurrences)m 1192(of)s 220 fnt35 1462 1626(y)m 240 fnt82
-1630 1629(will)m 2055(be)s 2337(replaced)s 3203(by)s 3496(the)s
-3844(object)s 4487(just)s 4892(to)s 5130(the)s 5477(right.)s
-6092(So,)s 6451(for)s 6789(e)s 3(xample,)k 7702(the)s
-8049(e)s 3(xpression)k 220 fnt35 480 1128(2 @Super { Slope @F)m 6(ont n })k
-240 fnt82 0 632(is)m 210(equal)s 783(to)s 220 fnt35
-480 131(@OneRo)m 3(w { | -2p @F)k 6(ont { Slope @F)k 6(ont n } ^/0.5fk 2 })k
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 5 11
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Italic
-%%+ font Times-Bold
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-1 LoutMargSet
-grestore
-240 fnt83 0 13844(1.2.)m 454(De\207nitions)s 240 fnt84 8953 13841(5)m
-240 fnt82 0 13151(and)m 404(so)s 670(comes)s 1332(out)s
-1698(as)s 200 fnt83 2062 13281(n)m 240 fnt82 1948 13151(2)m
-2157(.)s 480 12777(Lout)m 994(permits)s 1764(de\207nitions)s 2828(to)s
-3070(in)s 9(v)k 4(ok)k 2(e)k 3765(themselv)s 3(es,)k
-4934(a)s 5103(peculiarly)s 6115(circular)s 6905(thing)s 7453(to)s
-7695(do)s 7991(which)s 8636(goes)s 0 12489(by)m 294(the)s
-642(name)s 1216(of)s 240 fnt83 1487 12491(r)m 8(ecur)k 2(sion.)k
-240 fnt82 2548 12489(Here)m 3068(is)s 3278(an)s 3561(e)s 3(xample)k
-4424(of)s 4695(a)s 4861(recursi)s 6(v)k 3(e)k
-5783(de\207nition:)s 220 fnt35 480 11988(def @Leaders { ..)m 13( @Leaders })k 240 fnt82
-0 11494(The)m 418(usual)s 968(rule)s 1384(is)s 1584(that)s
-1991(the)s 2329(v)s 6(alue)k 2886(of)s 3147(an)s
-3420(in)s 9(v)k 4(ocation)k 4463(of)s 4724(a)s
-4879(symbol)s 5629(is)s 5828(a)s 5984(cop)s 2(y)k
-6492(of)s 6752(the)s 7090(body)s 7613(of)s 7874(the)s
-8211(symbol')s 13(s)k 0 11206(de\207nition,)m 1024(so)s 1290(the)s
-1638(v)s 6(alue)k 2206(of)s 220 fnt35 2477 11203(@Leaders)m
-240 fnt82 3546 11206(must)m 4071(be)s 220 fnt35 480 10724(..)m 13( @Leaders)k
-240 fnt82 0 10269(But)m 406(no)s 6(w)k 867(this)s
-1263(rule)s 1690(applies)s 2418(to)s 2657(this)s 3053(ne)s 6(w)k
-3500(in)s 9(v)k 4(ocation)k 4554(of)s 220 fnt35
-4825 10266(@Leaders)m 240 fnt82 5834 10269(;)m 5946(substituting)s 7115(its)s
-7391(body)s 7925(gi)s 6(v)k 3(es)k 220 fnt35
-480 9768(..)m 13( ..)k 13( @Leaders)k 240 fnt82 0 9313(and)m
-408(so)s 679(on)s 980(fore)s 6(v)k 3(er)k 13(.)k
-1816(In)s 2076(order)s 2645(to)s 2888(mak)s 2(e)k
-3465(this)s 3865(useful,)s 4561(an)s 4848(in)s 9(v)k 4(ocation)k
-5907(of)s 6182(a)s 6353(recursi)s 6(v)k 3(e)k
-7279(symbol)s 8044(is)s 8259(replaced)s 0 9025(by)m 294(its)s
-570(body)s 1104(only)s 1584(if)s 1801(suf\207cient)s 2750(space)s
-3337(is)s 3547(a)s 4(v)k 6(ailable.)k 4563(So,)s
-4923(for)s 5261(e)s 3(xample,)k 220 fnt35 480 8524(4i @Wide { Chapter 7 @Leaders 62 })m
-240 fnt82 0 8028(has)m 370(for)s 708(its)s 984(result)s
-1574(the)s 1922(object)s 480 7524(Chapter)m 1297(7)s 1525(..)s
-1809(..)s 2093(..)s 2377(..)s 2661(..)s 2945(..)s
-3229(..)s 3513(..)s 3797(..)s 4081(..)s 4365(..)s
-4649(..)s 4933(..)s 5217(..)s 5501(..)s 5785(62)s
-0 7021(with)m 478(Lout)s 985(checking)s 1897(before)s 2558(each)s
-3049(replacement)s 4271(of)s 220 fnt35 4537 7018(@Leaders)m 240 fnt82
-5601 7021(by)m 220 fnt35 5891 7018(..)m 6177(@Leaders)s 240 fnt82
-7241 7021(that)m 7654(the)s 7997(total)s 8471(length)s 0 6733(afterw)m 2(ards,)k
-1112(including)s 2069(the)s 2417(other)s 2968(w)s 2(ords,)k
-3658(w)s 2(ould)k 4313(not)s 4679(e)s 3(xceed)k
-5398(four)s 5856(inches.)s 480 6359(The)m 902(remaining)s 1918(issue)s
-2445(is)s 2649(what)s 3168(happens)s 3997(when)s 4567(Lout)s
-5072(decides)s 5834(that)s 6246(it)s 6431(is)s 6635(time)s
-7109(to)s 7341(stop.)s 7898(The)s 8319(ob)s 3(vious)k
-0 6071(thing)m 545(to)s 784(do)s 1077(is)s 1287(to)s
-1526(replace)s 2271(the)s 2619(last)s 3010(in)s 9(v)k 4(ocation)k
-4064(by)s 4358(an)s 4641(empty)s 5293(object:)s 220 fnt35
-480 5573(..)m 13( ..)k 13( ..)k 13( ..)k 13( ..)k 13( ..)k 13( ..)k 13( ..)k 13( {})k
-240 fnt82 0 5079(As)m 316(the)s 662(e)s 3(xample)k
-1524(sho)s 6(ws,)k 2222(this)s 2617(w)s 2(ould)k
-3270(lea)s 4(v)k 3(e)k 3822(a)s 3986(small)s
-4556(trailing)s 5297(space,)s 5933(which)s 6574(is)s 6782(a)s
-6947(major)s 7562(headache.)s 8614(Lout)s 0 4791(\207x)m 3(es)k
-517(this)s 930(by)s 1242(replacing)s 2201(the)s 2566(last)s
-2975(in)s 9(v)k 4(ocation)k 4046(with)s 4545(a)s
-4729(dif)s 6(ferent)k 5621(kind)s 6122(of)s 6411(empty)s
-7080(object,)s 7788(called)s 220 fnt35 8434 4788(@Null)m 240 fnt82
-9019 4791(,)m 0 4503(whose)m 677(ef)s 6(fect)k 1282(is)s
-1501(to)s 1749(mak)s 2(e)k 2330(an)s 2623(adjacent)s
-3488(concatenation)s 4882(symbol)s 5651(disappear)s 9(,)k 6674(preferably)s
-7718(one)s 8130(preceding)s 0 4215(the)m 220 fnt35 348 4212(@Null)m
-240 fnt82 933 4215(.)m 1097(Thus,)s 1683(when)s 2259(Lout)s
-2771(replaces)s 220 fnt35 3604 4212(@Leaders)m 240 fnt82 4673 4215(by)m
-220 fnt35 4967 4212(@Null)m 240 fnt82 5612 4215(in)m 5855(the)s
-6203(e)s 3(xpression)k 220 fnt35 480 3714(..)m 13( ..)k 13( ..)k 13( ..)k 13( ..)k 13( ..)k 13( ..)k 13( ..)k 13( @Leaders)k
-240 fnt82 0 3259(the)m 348(trailing)s 1089(space,)s 1727(which)s
-2368(is)s 2577(really)s 3174(a)s 3339(horizontal)s 4362(concatenation)s
-5747(symbol,)s 6558(disappears)s 7617(as)s 7867(well.)s 8441(This)s
-8916(is)s 0 2971(tak)m 2(en)k 573(into)s 998(account)s
-1802(when)s 2378(deciding)s 3255(whether)s 4085(there)s 4618(is)s
-4828(room)s 5393(to)s 5632(replace)s 220 fnt35 6377 2968(@Leaders)m
-240 fnt82 7446 2971(by)m 7740(its)s 8016(body)s 15(.)k
-480 2597(The)m 903(remainder)s 1926(of)s 2192(this)s 2583(section)s
-3312(is)s 3517(de)s 6(v)k 4(oted)k 4318(to)s
-4552(sho)s 6(wing)k 5406(ho)s 6(w)k 5862(de\207nitions)s
-6918(may)s 7379(be)s 7656(used)s 8148(to)s 8382(specify)s
-0 2309(the)m 240 fnt83 348 2311(pa)m 2(g)k 2(e)k
-863(layout)s 240 fnt82 1525 2309(of)m 1796(a)s 1962(document.)s
-3070(T)s 19(o)k 3370(be)s 3(gin)k 3956(with,)s
-4488(we)s 4823(can)s 5212(de\207ne)s 5853(a)s 6019(page)s
-6527(lik)s 2(e)k 6939(this:)s 220 fnt35 480 1808(def @P)m 8(age)k
-480 1520({)m 480 1232( //1i ||1i)m 480 944( 6i @Wide 9.5i @High)m 480 656( { @T)m 26(e)k 6(xtPlace //1r)k -8(t @F)k 6(ootSect })k
-480 368( ||1i //1i)m 480 80(})m
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 6 12
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Times-Italic
-%%+ font Helvetica
-%%+ font Symbol
-/pgsave save def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-0 LoutMargSet
-grestore
-240 fnt84 0 13840(6)m 240 fnt83 6965 13843(Chapter)m 7815(1.)s
-8089(Principles)s 240 fnt82 0 13205(No)m 6(w)k 220 fnt35
-520 13202(@P)m 8(age)k 240 fnt82 1306 13205(is)m 1523(an)s
-1813(eight)s 2358(by)s 2659(ele)s 6(v)k 3(en)k
-3338(and)s 3749(a)s 3922(half)s 4371(inch)s 4847(object,)s
-5545(with)s 6034(one)s 6443(inch)s 6919(mar)s 4(gins,)k
-7799(a)s 7972(place)s 8539(at)s 8778(the)s 0 12917(top)m
-367(for)s 713(te)s 3(xt,)k 1183(and)s 1595(a)s
-1769(section)s 2511(at)s 2751(the)s 3108(bottom)s 3854(for)s
-4200(footnotes)s 5149(\(since)s 220 fnt35 5783 12914(//1r)m -8(t)k
-240 fnt82 6233 12917(bottom-justi\207es)m 7792(the)s 8149(follo)s 6(wing)k
-0 12629(object\).)m 827(It)s 1032(will)s 1458(be)s 1740(con)s 9(v)k 3(enient)k
-2838(for)s 3176(us)s 3440(to)s 3679(sho)s 6(w)k
-4233(the)s 4581(ef)s 6(fect)k 5177(of)s 5448(in)s 9(v)k 4(oking)k
-220 fnt35 6340 12626(@P)m 8(age)k 240 fnt82 7119 12629(lik)m 2(e)k
-7531(this:)s 160 fnt35 480 11528(@P)m 6(age)k 220 fnt78
-1240 11514(\336)m gsave
-1690 9795 translate
-220 fnt35 1927 2494 0 2494 220 288 61 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto xsize ysize lineto
-0 ysize lineto closepath stroke
-grestore
-160 fnt35 170 2207(@T)m 19(e)k 4(xtPlace)k
-170 173(@F)m 4(ootSect)k
-grestore
-240 fnt82 0 9344(with)m 482(the)s
-830(in)s 9(v)k 4(ok)k 2(ed)k 1645(symbol)s
-2405(appearing)s 3401(to)s 3640(the)s 3988(left)s 4365(of)s
-4636(the)s 4984(arro)s 6(w)k 15(,)k 5627(and)s
-6031(its)s 6307(body)s 6841(to)s 7080(the)s 7428(right.)s
-480 8970(The)m 908(de\207nition)s 1882(of)s 2153(a)s 2319(v)s 3(ertical)k
-3086(list)s 3437(of)s 3708(pages)s 4304(should)s 5001(come)s
-5575(as)s 5825(no)s 6118(surprise:)s 220 fnt35 480 8469(def @P)m 8(ageList)k
-480 8181({)m 480 7893( @P)m 8(age // @P)k 8(ageList)k 480 7605(})m
-240 fnt82 0 7111(This)m 476(allo)s 6(ws)k 1145(in)s 9(v)k 4(ocations)k
-2286(lik)s 2(e)k 2698(the)s 3046(follo)s 6(wing:)k
-gsave
-480 0 translate
-1.0867 1.0000 scale
-160 fnt35 0 6010(@P)m 6(ageList)k 220 fnt78 890 5996(\336)m
-gsave
-1220 4277 translate
-220 fnt35 1927 2494 0 2494 220 288 61 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto xsize ysize lineto
-0 ysize lineto closepath stroke
-grestore
-160 fnt35 170 2207(@T)m 19(e)k 4(xtPlace)k 170 173(@F)m 4(ootSect)k
-
-grestore
-160 fnt35 1220 4047(@P)m 6(ageList)k 220 fnt78 3267 5996(\336)m
-gsave
-3597 4277 translate
-220 fnt35 1927 2494 0 2494 220 288 61 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto xsize ysize lineto
-0 ysize lineto closepath stroke
-grestore
-160 fnt35 170 2207(@T)m 19(e)k 4(xtPlace)k 170 173(@F)m 4(ootSect)k
-
-grestore
-gsave
-3597 1783 translate
-220 fnt35 1927 2494 0 2494 220 288 61 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto xsize ysize lineto
-0 ysize lineto closepath stroke
-grestore
-160 fnt35 170 2207(@T)m 19(e)k 4(xtPlace)k 170 173(@F)m 4(ootSect)k
-
-grestore
-160 fnt35 3597 1553(@P)m 6(ageList)k 220 fnt78 5644 5996(\336)m
-gsave
-5974 4277 translate
-220 fnt35 1927 2494 0 2494 220 288 61 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto xsize ysize lineto
-0 ysize lineto closepath stroke
-grestore
-160 fnt35 170 2207(@T)m 19(e)k 4(xtPlace)k 170 173(@F)m 4(ootSect)k
-
-grestore
-gsave
-5974 1783 translate
-220 fnt35 1927 2494 0 2494 220 288 61 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto xsize ysize lineto
-0 ysize lineto closepath stroke
-grestore
-160 fnt35 170 2207(@T)m 19(e)k 4(xtPlace)k 170 173(@F)m 4(ootSect)k
-
-grestore
-
-grestore
-0 1067(setting)m 220 fnt35 750 1064(@P)m 8(ageList)k 240 fnt82
-1874 1067(to)m 200 fnt35 2113 1069(@Null)m 240 fnt82 2706 1067(on)m
-3003(the)s 3351(last)s 3742(step.)s 4291(An)s 3(y)k
-4755(number)s 5546(of)s 5817(pages)s 6413(can)s 6802(be)s
-7084(generated.)s 480 693(A)m 703(de\207nition)s 1669(for)s 220 fnt35
-1999 690(@T)m 26(e)k 6(xtPlace)k 240 fnt82 3209 693(is)m
-3411(be)s 3(yond)k 4164(us)s 4420(at)s 4644(present,)s
-5433(since)s 220 fnt35 5972 690(@T)m 26(e)k 6(xtPlace)k
-240 fnt82 7182 693(must)m 7699(be)s 7973(replaced)s 8832(by)s
-0 405(dif)m 6(ferent)k 877(parts)s 1394(of)s 1667(the)s
-2018(te)s 3(xt)k 2435(of)s 2708(the)s 3059(document)s
-4065(on)s 4364(dif)s 6(ferent)k 5242(pages.)s 5953(But)s
-6361(we)s 6699(can)s 7090(de\207ne)s 220 fnt35 7733 402(@F)m 6(ootSect)k
-240 fnt82 8887 405(to)m 0 117(be)m 282(a)s 448(small)s
-1020(space)s 1607(follo)s 6(wed)k 2509(by)s 2803(a)s
-2969(horizontal)s 3993(line)s 4407(follo)s 6(wed)k 5309(by)s
-5603(a)s 5769(list)s 6120(of)s 6391(places)s 7039(where)s
-7679(footnotes)s 8620(go:)s
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 7 13
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Italic
-%%+ font Times-Bold
-%%+ font Helvetica
-%%+ font Symbol
-/pgsave save def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-1 LoutMargSet
-grestore
-240 fnt83 0 13844(1.2.)m 454(De\207nitions)s 240 fnt84 8951 13841(7)m
-220 fnt35 480 13208(def @F)m 6(ootList )k 480 12920({ )m 480 12632( @F)m 6(ootPlace //0.3v @F)k 6(ootList)k
-480 12344(} )m 480 12056( )m 480 11768(def @F)m 6(ootSect)k 480 11480({ )m
-480 11192( //0.3v 1i @Wide @HLine)m 480 10904( //0.3v @F)m 6(ootList )k 480 10616(} )m 240 fnt82
-0 10122(assuming)m 950(that)s 220 fnt35 1360 10119(@HLine)m 240 fnt82
-2199 10122(will)m 2617(produce)s 3436(a)s 3594(horizontal)s 4610(line)s
-5016(of)s 5279(the)s 5619(indicated)s 6545(width.)s 7246(W)s 9(ith)k
-7764(this)s 8152(de\207nition)s 0 9834(we)m 335(can)s 724(generate)s
-1589(pages)s 2185(lik)s 2(e)k 2597(this:)s gsave
-480 7000 translate
-220 fnt35 1927 2494 0 2494 220 288 61 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto xsize ysize lineto
-0 ysize lineto closepath stroke
-grestore
-160 fnt35
-170 2207(@T)m 19(e)k 4(xtPlace)k 170 173(@F)m 4(ootSect)k
-
-grestore
-220 fnt78 2647 8719(\336)m gsave
-3097 7000 translate
-220 fnt35 1927 2494 0 2494 220 288 61 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto xsize ysize lineto
-0 ysize lineto closepath stroke
-grestore
-160 fnt35 170 2207(@T)m 19(e)k 4(xtPlace)k
-567 0 0 0 160 180 44 170 346 LoutGr2
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-170 173(@F)m 4(ootList)k
-grestore
-5264(\336)s gsave
-5714 7000 translate
-220 fnt35 1927 2494 0 2494 220 288 61 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto xsize ysize lineto
-0 ysize lineto closepath stroke
-grestore
-160 fnt35 170 2207(@T)m 19(e)k 4(xtPlace)k
-567 0 0 0 160 180 44 170 522 LoutGr2
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-170 349(@F)m 4(ootPlace)k 170 173(@F)m 4(ootList)k
-grestore
-240 fnt82
-0 6549(and)m 404(so)s 670(on)s 967(for)s 1305(arbitrarily)s
-2312(man)s 3(y)k 2895(footnotes.)s 480 6175(W)m 19(e)k
-852(will)s 1281(see)s 1646(in)s 1892(the)s 2244(ne)s 3(xt)k
-2716(section)s 3454(ho)s 6(w)k 3918(in)s 9(v)k 4(ocations)k
-5063(of)s 220 fnt35 5337 6172(@P)m 8(ageList,)k 6511(@F)s 6(ootSect)k
-240 fnt82 7665 6175(and)m 220 fnt35 8073 6172(@F)m 6(ootList)k
-240 fnt82 0 5887(are)m 356(replaced)s 1232(by)s 1535(their)s
-2041(bodies)s 2726(only)s 3216(when)s 3801(the)s 4158(need)s
-4677(to)s 4925(insert)s 5524(te)s 3(xt)k 5949(and)s
-6362(footnotes)s 7312(obliges)s 8063(Lout)s 8584(to)s 8833(do)s
-0 5599(so;)m 352(otherwise)s 1364(the)s 1740(in)s 9(v)k 4(ocations)k
-2908(are)s 3283(replaced)s 4177(by)s 220 fnt35 4499 5596(@Null)m
-240 fnt82 5084 5599(.)m 5275(In)s 5559(this)s 5982(w)s 2(ay)k 15(,)k
-6499(the)s 6874(right)s 7413(number)s 8231(of)s 8530(pages)s
-0 5311(is)m 223(made,)s 862(the)s 1224(small)s 1810(line)s
-2238(appears)s 3033(only)s 3527(on)s 3838(pages)s 4447(that)s
-4879(ha)s 4(v)k 3(e)k 5394(at)s 5640(least)s
-6151(one)s 6567(footnote,)s 7485(and)s 7903(unnecessary)s 0 5023(concatenation)m
-1385(symbols)s 2234(disappear)s 13(.)k 480 4649(This)m 958(approach)s
-1894(to)s 2135(page)s 2645(layout)s 3305(is)s 3517(the)s
-3867(most)s 4394(original)s 5194(contrib)s 4(ution)k 6418(Lout)s
-6932(has)s 7304(made)s 7880(to)s 8122(document)s 0 4361(formatting.)m
-1172(It)s 1377(is)s 1587(e)s 3(xtraordinarily)k 3057(\210e)s 3(xible.)k
-3935(T)s 19(w)k 2(o-column)k 5207(pages?)s 5971(Use)s
-220 fnt35 480 3860({2.8i @Wide @T)m 26(e)k 6(xtPlace} ||0.4i {2.8i @Wide @T)k 26(e)k 6(xtPlace})k
-240 fnt82 0 3366(instead)m 768(of)s 220 fnt35 1072 3363(@T)m 26(e)k 6(xtPlace)k
-240 fnt82 2230 3366(.)m 2427(F)s 3(ootnotes)k 3452(in)s
-3728(smaller)s 4523(type?)s 5187(Use)s 220 fnt35 5648 3363(-2p)m
-6051(@F)s 6(ont)k 6797(@F)s 6(ootPlace)k 240 fnt82
-8086 3366(instead)m 8855(of)s 220 fnt35 0 3075(@F)m 6(ootPlace)k
-240 fnt82 1196 3078(.)m 1360(And)s 1831(on)s 2128(and)s
-2532(on.)s 240 fnt84 0 2330(1.3.)m 471(Cr)s 4(oss)k
-1106(r)s 4(efer)k 4(ences)k 240 fnt82 480 1898(A)m
-705(cross)s 1241(reference)s 2178(in)s 2415(common)s 3304(terminology)s
-4521(is)s 4725(something)s 5769(lik)s 2(e)k 6176(`see)s
-6610(T)s 19(able)k 7185(6')s 7411(or)s 7664(`see)s
-8098(page)s 8600(57')s 8946(\211)s 0 1610(a)m 168(reference)s
-1114(within)s 1785(a)s 1954(document)s 2961(to)s 3202(some)s
-3766(other)s 4320(part)s 4754(of)s 5028(it.)s 5327(Readers)s
-6150(\207nd)s 6584(them)s 7125(v)s 3(ery)k 7604(useful,)s
-8298(b)s 4(ut)k 8663(the)s 3(y)k 0 1322(are)m
-343(a)s 504(major)s 1116(problem)s 1969(for)s 2302(authors.)s
-3165(As)s 3478(the)s 3821(document)s 4820(is)s 5025(re)s 6(vised,)k
-5812(T)s 19(able)k 6388(6)s 6556(becomes)s 7440(T)s 19(able)k
-8016(7,)s 8238(the)s 8581(thing)s 0 1034(on)m 297(page)s
-805(57)s 1093(mo)s 3(v)k 3(es)k 1763(to)s
-2002(page)s 2510(63,)s 2857(and)s 3261(all)s 3554(the)s
-3902(cross)s 4444(references)s 5475(must)s 6000(be)s 6282(changed.)s
-480 660(The)m 917(Scribe)s 1593(document)s 2606(formatter)s 9(,)k
-3601(de)s 6(v)k 3(eloped)k 4644(by)s 4947(Brian)s
-5545(K.)s 5831(Reid)s 6351([6)s 6543(],)s 6739(introduced)s
-7829(a)s 8005(scheme)s 8788(for)s 0 372(k)m 2(eeping)k
-804(track)s 1337(of)s 1603(cross)s 2140(references.)s 3279(It)s
-3479(allo)s 6(ws)k 4143(you)s 4553(to)s 4787(gi)s 6(v)k 3(e)k
-5241(names)s 5898(to)s 6132(tables,)s 6791(\207gures,)s 7544(etc.,)s
-7984(and)s 8383(to)s 8617(refer)s 0 84(to)m 233(them)s
-764(by)s 1051(name.)s 1726(The)s 2147(formatter)s 3087(inserts)s
-3754(the)s 4095(appropriate)s 5233(numbers)s 6101(in)s 6337(place)s
-6890(of)s 7154(the)s 7495(names,)s 8206(so)s 8465(that)s
-8876(as)s
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 8 14
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Times-Italic
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-0 LoutMargSet
-grestore
-240 fnt84 0 13840(8)m 240 fnt83 6965 13843(Chapter)m 7815(1.)s
-8089(Principles)s 240 fnt82 0 13205(the)m 342(document)s 1339(is)s
-1543(re)s 6(vised,)k 2327(the)s 2669(cross)s 3204(references)s
-4229(are)s 4569(k)s 2(ept)k 5033(up)s 5319(to)s
-5552(date)s 5999(automatically)s 15(.)k 7442(Lout)s 7947(has)s
-8310(adopted)s 0 12917(and)m 404(e)s 3(xtended)k 1323(this)s
-1719(scheme.)s 480 12543(In)m 726(Lout,)s 1275(automatic)s 2260(cross)s
-2792(referencing)s 3922(w)s 2(orks)k 4546(in)s 4779(the)s
-5117(follo)s 6(wing)k 6084(w)s 2(ay)k 15(.)k
-6620(First)s 7107(de\207ne)s 7738(a)s 7894(symbol)s 8644(with)s
-0 12255(a)m 166(parameter)s 1180(with)s 1662(the)s 2010(special)s
-2728(name)s 220 fnt35 3302 12252(@T)m 26(ag:)k 480 11754(def @T)m 26(ab)k 4(le)k
-480 11466( left @T)m 26(ag)k 480 11178( r)m -3(ight @V)k 15(alue)k
-480 10890({)m 480 10602( ||1i @V)m 15(alue)k 480 10314(})m 240 fnt82
-0 9820(When)m 643(this)s 1054(symbol)s 1829(is)s 2054(in)s 9(v)k 4(ok)k 2(ed,)k
-2933(the)s 3296(v)s 6(alue)k 3879(gi)s 6(v)k 3(en)k
-4474(to)s 220 fnt35 4727 9817(@T)m 26(ag)k 240 fnt82
-5365 9820(should)m 6077(be)s 6374(a)s 6555(simple)s 7263(w)s 2(ord)k
-7826(lik)s 2(e)k 220 fnt35 8253 9817(cities)m 240 fnt82
-8745 9820(,)m 8867(or)s 0 9532(se)m 6(v)k 3(eral)k
-722(simple)s 1415(w)s 2(ords)k 2049(juxtaposed)s 3144(lik)s 2(e)k
-220 fnt35 3556 9529(cities compare)m 240 fnt82 4962 9532(;)m 5074(it)s
-5266(serv)s 3(es)k 5911(to)s 6150(name)s 6724(the)s
-7072(in)s 9(v)k 4(ocation:)k 220 fnt35 480 9031({ cities compare } @T)m 26(ab)k 4(le)k
-480 8743({)m 480 8455( )m 8(W)k 8(ashington |0.5i Canberr)k 2(a)k
-480 8167(})m 240 fnt82 0 7673(W)m 19(e)k 410(may)s
-917(no)s 6(w)k 1419(refer)s 1969(to)s 2249(this)s
-2686(in)s 9(v)k 4(ocation)k 3782(else)s 6(where)k
-4828(in)s 5112(the)s 5501(document,)s 6593(using)s 7206(the)s
-240 fnt83 7595 7675(cr)m 10(oss)k 8187(r)s 8(efer)k 8(ence)k
-220 fnt35 0 7382(@T)m 26(ab)k 4(le&&{ cities compare }.)k 240 fnt82
-2918 7385(Here)m 220 fnt35 3480 7382(&&)m 240 fnt82 3870 7385(is)m
-4122(the)s 240 fnt83 4511 7387(cr)m 10(oss)k 5103(r)s 8(efer)k 8(ence)k
-6084(symbol)s 240 fnt82 6762 7385(;)m 6916(its)s 7233(left)s
-7652(parameter)s 8708(is)s 8960(a)s 0 7097(symbol)m 772(and)s
-1189(its)s 1478(right)s 2002(parameter)s 3028(is)s 3251(the)s
-3612(v)s 6(alue)k 4193(of)s 4476(the)s 220 fnt35
-4837 7094(@T)m 26(ag)k 240 fnt82 5473 7097(parameter)m 6500(of)s
-6783(some)s 7357(in)s 9(v)k 4(ocation)k 8424(of)s
-8708(that)s 0 6809(symbol.)m 869(Of)s 1193(course)s 1873(it')s 13(s)k
-2215(simplest)s 3071(if)s 3288(you)s 3703(use)s 4078(just)s
-4483(a)s 4649(one-w)s 2(ord)k 5622(tag;)s 6026(then)s
-6495(no)s 6788(braces)s 7449(are)s 7796(needed.)s 480 6435(A)m
-695(cross)s 1222(reference)s 2150(is)s 2345(not)s 2696(an)s
-2964(object;)s 3645(the)s 3978(reader)s 4619(should)s 5301(think)s
-5839(of)s 6095(it)s 6272(as)s 6507(an)s 6775(arro)s 6(w)k
-7365(in)s 7593(the)s 7926(\207nal)s 8391(printed)s 0 6147(document,)m
-1049(be)s 3(ginning)k 2054(at)s 2284(the)s 2629(cross)s
-3169(reference)s 4109(and)s 4511(ending)s 5213(at)s 5443(the)s
-5788(top)s 6145(of)s 6413(the)s 6759(tar)s 4(get)k
-7355(in)s 9(v)k 4(ocation.)k 8513(Three)s 0 5859(special)m
-715(v)s 6(alues)k 1367(may)s 1830(be)s 2108(gi)s 6(v)k 3(en)k
-2685(to)s 2920(the)s 3264(right)s 3772(parameter)s 4782(of)s
-220 fnt35 5050 5856(&&)m 240 fnt82 5338 5859(:)m 220 fnt35
-5500 5856(preceding)m 240 fnt82 6451 5859(,)m 220 fnt35 6555 5856(f)m 6(ollo)k 3(wing)k
-240 fnt82 7385 5859(,)m 7488(and)s 220 fnt35 7888 5856(f)m 6(oll_or_prec)k
-240 fnt82 9022 5859(.)m 0 5571(The)m 467(cross)s 1049(reference)s
-220 fnt35 2032 5568(@T)m 26(ab)k 4(le&&preceding)k 240 fnt82
-4116 5571(points)m 4792(to)s 5071(some)s 5671(table)s 6231(appearing)s
-7267(earlier)s 7975(in)s 8258(the)s 8646(\207nal)s 0 5283(printed)m
-760(document)s 1790(than)s 2285(itself;)s 2899(that)s 3343(is,)s
-3635(the)s 4009(arro)s 6(w)k 4640(is)s 4876(guaranteed)s
-6009(to)s 6274(point)s 6852(backw)s 2(ards)k 7950(through)s
-8778(the)s 0 4995(document.)m 1108(Usually)s 1907(it)s 2100(points)s
-2737(to)s 2977(the)s 3326(nearest)s 4063(preceding)s 5060(in)s 9(v)k 4(ocation.)k
-6222(Similarly)s 15(,)k 220 fnt35 7203 4992(@T)m 26(ab)k 4(le&&f)k 6(ollo)k 3(wing)k
-240 fnt82 0 4707(points)m 636(forw)s 2(ards,)k 1590(usually)s
-2335(to)s 2574(the)s 2922(nearest)s 3657(follo)s 6(wing)k
-4634(in)s 9(v)k 4(ocation.)k 220 fnt35 5795 4704(@T)m 26(ab)k 4(le&&f)k 6(oll_or_prec)k
-240 fnt82 8022 4707(is)m 8232(the)s 8579(same)s 0 4419(as)m
-220 fnt35 250 4416(@T)m 26(ab)k 4(le&&f)k 6(ollo)k 3(wing)k
-240 fnt82 2173 4419(if)m 2390(it)s 2582(e)s 3(xists,)k
-3230(otherwise)s 4215(it)s 4407(is)s 4617(the)s 4965(same)s
-5512(as)s 220 fnt35 5762 4416(@T)m 26(ab)k 4(le&&preceding)k
-240 fnt82 7746 4419(.)m 480 4045(This)m 962(section)s 1702(has)s
-2079(been)s 2594(concerned)s 3641(with)s 4130(what)s 4661(a)s
-4834(cross)s 5382(reference)s 6331(is)s 6548(\211)s 6734(an)s
-7023(arro)s 6(w)k 7635(from)s 8165(one)s 8574(point)s
-0 3757(in)m 242(a)s 407(document)s 1410(to)s 1648(another)s
-2424(\211)s 2603(b)s 4(ut)k 2963(not)s 3328(with)s
-3809(ho)s 6(w)k 4269(it)s 4460(is)s 4669(used.)s
-5271(One)s 5724(simple)s 6416(w)s 2(ay)k 6866(to)s
-7104(use)s 7478(a)s 7643(cross)s 8183(reference)s 0 3469(is)m
-210(to)s 449(put)s 815(it)s 1007(where)s 1647(an)s
-1930(object)s 2574(is)s 2784(e)s 3(xpected,)k 3738(lik)s 2(e)k
-4150(this:)s 220 fnt35 480 2968(a | @T)m 26(ab)k 4(le&&cities | c)k
-240 fnt82 0 2513(In)m 265(this)s 670(case)s 1146(the)s
-1504(cross)s 2055(reference)s 3007(will)s 3443(be)s 3734(replaced)s
-4610(by)s 4914(a)s 5089(cop)s 2(y)k 5616(of)s
-5897(the)s 6254(in)s 9(v)k 4(ocation)k 7317(it)s
-7519(points)s 8164(to:)s 8525(in)s 8778(the)s 0 2225(e)m 3(xample)k
-866(just)s 1275(gi)s 6(v)k 3(en,)k 1909(a)s
-2079(table)s 2603(will)s 3033(appear)s 3734(between)s 220 fnt35
-4591 2222(a)m 240 fnt82 4772 2225(and)m 220 fnt35 5180 2222(c.)m
-240 fnt82 5456 2225(Other)m 6064(applications)s 7274(of)s 7549(cross)s
-8095(references)s 0 1937(may)m 466(be)s 747(found)s 1364(in)s
-1606(Chapter)s 2423(4,)s 2649(including)s 3606(\207nding)s 4337(the)s
-4685(number)s 5475(of)s 5746(the)s 6093(page)s 6601(where)s
-7240(something)s 8289(appears,)s 0 1649(producing)m 1018(running)s 1809(page)s
-2311(headers)s 3085(and)s 3483(footers,)s 4246(and)s 4643(accessing)s
-5606(databases)s 6566(of)s 6831(Roman)s 7573(numerals,)s 8549(refer)s
-8998(-)s 0 1361(ences,)m 638(etc.)s 1080(Cross)s 1676(references)s
-2707(are)s 3054(also)s 3492(used)s 3989(by)s 4283(g)s 1(alle)k 3(ys,)k
-5063(as)s 5313(will)s 5739(be)s 6021(e)s 3(xplained)k
-7006(in)s 7249(the)s 7597(ne)s 3(xt)k 8066(section.)s
-480 987(The)m 943(implementation)s 2535(of)s 2841(cross)s 3418(referencing)s
-4593(copies)s 5290(e)s 6(v)k 3(ery)k 5901(symbol)s
-6696(in)s 9(v)k 4(ocation)k 7785(with)s 8302(a)s
-220 fnt35 8503 984(@T)m 26(ag)k 240 fnt82 0 699(parameter)m
-1008(into)s 1427(the)s 240 fnt83 1768 701(cr)m 10(oss-r)k 8(efer)k 8(ence)k
-3275(database)s 240 fnt82 4133 699(,)m 4233(a)s 4393(collection)s
-5385(of)s 5650(\207les)s 6093(whose)s 6754(names)s 7410(end)s
-7807(in)s 220 fnt35 8044 696(.ld)m 240 fnt82 8316 699(inde)m 3(x)k 3(ed)k
-0 411(by)m 286(one)s 679(\207le)s 1032(whose)s 1691(name)s
-2256(is)s 220 fnt35 2458 408(lout.li)m 240 fnt82 2954 411(.)m
-3109(It)s 3306(is)s 3507(generally)s 4441(the)s 4781(case)s
-5239(that)s 5649(the)s 5988(b)s 4(ulk)k 6462(content)s
-7218(of)s 7480(a)s 7638(symbol)s 8389(such)s 8876(as)s
-0 123(the)m 337(table)s 845(abo)s 3(v)k 3(e)k
-1455(is)s 1653(contained)s 2629(in)s 2860(its)s 3124(right)s
-3623(or)s 3870(body)s 4393(parameter)s 9(,)k 5433(and)s
-5825(that)s 6231(this)s 6615(b)s 4(ulk)k 7086(content)s
-7838(is)s 8036(not)s 8390(needed)s
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 9 15
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Italic
-%%+ font Times-Bold
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-1 LoutMargSet
-grestore
-240 fnt83 0 13845(1.3.)m 454(Cr)s 10(oss)k 1058(r)s 8(efer)k 8(ences)k
-240 fnt84 8952 13842(9)m 240 fnt82 0 13207(by)m 297(cross)s
-843(references)s 1878(to)s 2121(the)s 2472(symbol.)s 3345(Hence,)s
-4067(to)s 4310(sa)s 4(v)k 3(e)k 4787(space)s
-5378(in)s 5625(the)s 5977(database,)s 6910(Lout)s 7426(replaces)s
-8263(the)s 8615(right)s 0 12919(parameter)m 1011(of)s 1279(each)s
-1771(symbol)s 2527(it)s 2716(writes)s 3347(into)s 3768(it)s
-3957(by)s 4248(the)s 4592(w)s 2(ord)k 5137(???)s
-5505(whene)s 6(v)k 3(er)k 6482(the)s 6827(right)s
-7335(parameter)s 8345(appears)s 0 12631(to)m 249(be)s 542(lar)s 4(ge.)k
-1190(The)s 1629(table)s 2160(abo)s 3(v)k 3(e)k
-2792(w)s 2(ould)k 3458(appear)s 4166(as)s 4427(???)s
-4809(because)s 5632(of)s 5914(this)s 6321(optimization,)s 7647(and)s
-8062(in)s 8316(general,)s 0 12343(the)m 367(user)s 845(must)s
-1390(ensure)s 2089(that)s 2527(an)s 3(y)k 2944(content)s
-3728(required)s 4601(by)s 4915(cross)s 5477(references)s 6527(is)s
-6757(contained)s 7765(in)s 8028(parameters)s 0 12055(other)m 545(than)s
-1007(the)s 1348(right)s 1852(or)s 2104(body)s 2631(parameter)s 13(.)k
-3729(This)s 4199(optimization)s 5457(does)s 5940(not)s 6299(apply)s
-6878(when)s 7447(the)s 7788(symbol)s 8541(being)s 0 11767(written)m
-733(into)s 1158(the)s 1506(cross-reference)s 3019(database)s 3898(is)s
-4108(a)s 4274(g)s 1(alle)k 3(y)k 15(.)k
-240 fnt84 0 10974(1.4.)m 471(Galleys)s 240 fnt82 480 10497(It)m
-695(is)s 915(time)s 1406(to)s 1655(pause)s 2267(and)s
-2681(ask)s 3072(ourselv)s 3(es)k 4033(ho)s 6(w)k
-4505(close)s 5062(we)s 5408(are)s 5765(to)s 6015(achie)s 6(ving)k
-7002(our)s 7392(aim)s 7820(of)s 8102(producing)s 0 10209(neatly)m
-638(formatted)s 1624(documents.)s 2825(W)s 19(e)k 3194(can)s
-3583(certainly)s 4472(produce)s 5299(the)s 5647(pieces)s 6295(of)s
-6566(a)s 6732(document:)s 160 fnt84 870 9532(PURCELL)m 128 fnt82
-1626 9604(1)m 160 fnt82 480 9240(In)m 705(the)s 991(w)s 1(orld)k
-1455(of)s 1691(music)s 480 9060(England)m 1192(is)s 1473(supposed)s
-480 8880(to)m 686(be)s 921(a)s 1078(mere)s 1481(pro)s 2(vince.)k
-480 8700(If)m 775(she)s 1166(produces)s 1918(an)s 480 8520(indif)m 4(ferent)k
-1446(composer)s 480 8340(or)m 763(performer)s 6(,)k 1577(that)s
-1967(is)s 480 8160(re)m 2(garded)k 1172(else)s 4(where)k
-1940(as)s 480 7980(perfectly)m 1215(normal)s 1837(and)s 480 7800(natural;)m
-1072(b)s 3(ut)k 1388(if)s 1608(foreign)s 480 7620(students)m
-1215(of)s 1574(musical)s 480 7440(history)m 1286(ha)s 3(v)k 2(e)k
-1947(to)s 480 7260(ackno)m 4(wledge)k 1440(a)s 1636(British)s
-480 7080(musical)m 1105(genius,)s 1686(he)s 1967(is)s 480 6900(considered)m
-1211(a)s 1322(freak.)s 800 6667(Such)m 1267(a)s 1488(freak)s
-1967(is)s 480 6487(Henry)m 917(Purcell.)s 1480(Y)s 16(et)k
-1736(if)s 1884(we)s 480 6307(mak)m 1(e)k 875(a)s
-1000(choice)s 1467(of)s 1662(\207fteen)s 480 6127(of)m 717(the)s
-1005(w)s 1(orld')k 8(s)k 1574(musical)s 480 5947(classics,)m
-1050(as)s 1228(here,)s 1586(we)s 1820(\207nd)s 480 5767(that)m
-774(we)s 1013(cannot)s 1495(omit)s 1843(this)s 480 5587(English)m
-1005(master)s 8(.)k 128 fnt82 2634 9784(1)m 160 fnt82
-2685 9712(Blom,)m 3107(Eric.)s 160 fnt83 3476 9713(Some)m 3852(Gr)s 5(eat)k
-2634 9533(Composer)m 1(s.)k 160 fnt82 3728 9532(Oxford,)m 2634 9352(1944.)m
-gsave
-4788 7375 translate
-220 fnt35 1927 2494 0 2494 220 288 61 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto xsize ysize lineto
-0 ysize lineto closepath stroke
-grestore
-160 fnt35 170 2207(@T)m 19(e)k 4(xtPlace)k 170 173(@F)m 4(ootSect)k
-
-grestore
-gsave
-4788 4881 translate
-220 fnt35 1927 2494 0 2494 220 288 61 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto xsize ysize lineto
-0 ysize lineto closepath stroke
-grestore
-160 fnt35 170 2207(@T)m 19(e)k 4(xtPlace)k 170 173(@F)m 4(ootSect)k
-
-grestore
-gsave
-4788 2387 translate
-220 fnt35 1927 2494 0 2494 220 288 61 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto xsize ysize lineto
-0 ysize lineto closepath stroke
-grestore
-160 fnt35 170 2207(@T)m 19(e)k 4(xtPlace)k 170 173(@F)m 4(ootSect)k
-
-grestore
-160 fnt35 4788 2157(@P)m 6(ageList)k 240 fnt82 0 1671(b)m 4(ut)k
-362(when)s 938(we)s 1273(try)s 1592(to)s 1831(mer)s 4(ge)k
-2480(them)s 3018(together)s 9(,)k 3899(we)s 4234(encounter)s
-5237(tw)s 2(o)k 5647(obstacles.)s 480 1297(First,)m 1029(when)s
-1610(an)s 1899(object)s 2548(is)s 2763(entered)s 3530(at)s
-3767(a)s 3938(certain)s 4650(place)s 5215(in)s 5463(the)s
-5817(document,)s 6873(it)s 7070(appears)s 7857(at)s 8094(that)s
-8518(place.)s 0 1009(But)m 393(a)s 546(footnote)s 1385(is)s
-1582(naturally)s 2472(entered)s 3219(immediately)s 4454(after)s 4936(the)s
-5271(point)s 5810(it)s 5988(refers)s 6568(to)s 6794(\(`)s
-200 fnt82 6934 1018(PURCELL)m 240 fnt82 7819 1009(')m 7917(in)s
-8147(this)s 8529(case\),)s 0 721(yet)m 352(it)s 544(appears)s
-1325(some)s 6(where)k 2464(else:)s 2941(at)s 3173(the)s
-3521(bottom)s 4259(of)s 4530(a)s 4696(page.)s 480 347(Second,)m
-1285(all)s 1570(our)s 1942(features)s 2740(b)s 4(uild)k
-3278(up)s 3564(lar)s 4(ger)k 4168(objects)s 4889(out)s
-5247(of)s 5510(smaller)s 6265(ones,)s 6803(b)s 4(ut)k
-7158(the)s 200 fnt82 7498 356(PURCELL)m 240 fnt82 8435 347(object,)m
-0 59(for)m 333(e)s 3(xample,)k 1242(must)s 1762(be)s
-2039(brok)s 2(en)k 2753(do)s 6(wn)k 3332(into)s
-3752(page-sized)s 4827(pieces.)s 5583(This)s 6053(occurs)s 6723(when)s
-7294(the)s 7637(a)s 4(v)k 6(ailable)k 8539(space)s
-
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 10 16
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Times-Italic
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-0 LoutMargSet
-grestore
-240 fnt84 0 13840(10)m 240 fnt83 6965 13843(Chapter)m 7815(1.)s
-8089(Principles)s 240 fnt82 0 13205(at)m 230(the)s 575(`some)s 6(where)k
-1790(else')s 2270(is)s 2477(insuf\207cient)s 3610(to)s 3846(hold)s
-4327(the)s 4672(entire)s 5268(object,)s 5957(so)s 6220(this)s
-6613(second)s 7333(obstacle)s 8169(arises)s 8760(out)s 0 12917(of)m
-271(the)s 619(\207rst.)s 480 12543(Lout')m 13(s)k 1135(last)s
-1518(major)s 2127(feature,)s 2888(which)s 3523(we)s 3850(introduce)s
-4801(to)s 5032(o)s 3(v)k 3(ercome)k 6017(these)s
-6557(obstacles,)s 7532(is)s 7734(the)s 240 fnt83 8074 12545(galle)m 7(y)k
-240 fnt82 8699 12543(\(the)m 0 12255(name)m 564(is)s 764(borro)s 6(wed)k
-1723(from)s 2237(the)s 2575(g)s 1(alle)k 3(ys)k
-3288(used)s 3775(in)s 4008(manual)s 4757(typesetting\).)s 6039(A)s
-6259(g)s 1(alle)k 3(y)k 6882(is)s 7082(an)s
-7355(object)s 7989(plus)s 8429(a)s 8584(cross)s 0 11967(reference)m
-943(which)s 1585(points)s 2221(to)s 2460(where)s 3100(the)s
-3448(object)s 4092(is)s 4302(to)s 4541(appear)s 13(.)k
-5329(The)s 5757(e)s 3(xample)k 6620(abo)s 3(v)k 3(e)k
-7242(has)s 7612(three)s 8145(g)s 1(alle)k 3(ys:)k
-160 fnt84 870 11234(PURCELL)m 128 fnt82 1626 11306(1)m 160 fnt82
-480 10942(In)m 705(the)s 991(w)s 1(orld)k 1455(of)s
-1691(music)s 480 10762(England)m 1192(is)s 1473(supposed)s 480 10582(to)m
-686(be)s 921(a)s 1078(mere)s 1481(pro)s 2(vince.)k
-480 10402(If)m 775(she)s 1166(produces)s 1918(an)s 480 10222(indif)m 4(ferent)k
-1446(composer)s 480 10042(or)m 763(performer)s 6(,)k 1577(that)s
-1967(is)s 480 9862(re)m 2(garded)k 1172(else)s 4(where)k
-1940(as)s 480 9682(perfectly)m 1215(normal)s 1837(and)s 480 9502(natural;)m
-1072(b)s 3(ut)k 1388(if)s 1608(foreign)s 480 9322(students)m
-1215(of)s 1574(musical)s 480 9142(history)m 1286(ha)s 3(v)k 2(e)k
-1947(to)s 480 8962(ackno)m 4(wledge)k 1440(a)s 1636(British)s
-480 8782(musical)m 1105(genius,)s 1686(he)s 1967(is)s 480 8602(considered)m
-1211(a)s 1322(freak.)s 800 8369(Such)m 1267(a)s 1488(freak)s
-1967(is)s 480 8189(Henry)m 917(Purcell.)s 1480(Y)s 16(et)k
-1736(if)s 1884(we)s 480 8009(mak)m 1(e)k 875(a)s
-1000(choice)s 1467(of)s 1662(\207fteen)s 480 7829(of)m 717(the)s
-1005(w)s 1(orld')k 8(s)k 1574(musical)s 480 7649(classics,)m
-1050(as)s 1228(here,)s 1586(we)s 1820(\207nd)s 480 7469(that)m
-774(we)s 1013(cannot)s 1495(omit)s 1843(this)s 480 7289(English)m
-1005(master)s 8(.)k gsave
-3321 11312 translate
-180.0000 rotate
-gsave
-0 0 translate
-30.0000 rotate
-gsave
-0 0 translate
-240 fnt82 68 0 0 0 240 288 60 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-
-grestore
-gsave
-0 0 translate
-240 fnt82 1134 0 0 0 240 288 60 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-gsave
-0 0 translate
--30.0000 rotate
-gsave
-0 0 translate
-240 fnt82 68 0 0 0 240 288 60 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-
-grestore
-
-grestore
-gsave
-3201 9047 translate
-220 fnt35 1927 2494 0 2494 220 288 61 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto xsize ysize lineto
-0 ysize lineto closepath stroke
-grestore
-160 fnt35 170 2207(@T)m 19(e)k 4(xtPlace)k
-170 173(@F)m 4(ootSect)k
-grestore
-gsave
-3201 6553 translate
-220 fnt35 1927 2494 0 2494 220 288 61 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto xsize ysize lineto
-0 ysize lineto closepath stroke
-grestore
-160 fnt35 170 2207(@T)m 19(e)k 4(xtPlace)k
-170 173(@F)m 4(ootSect)k
-grestore
-gsave
-3201 4059 translate
-220 fnt35 1927 2494 0 2494 220 288 61 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto xsize ysize lineto
-0 ysize lineto closepath stroke
-grestore
-160 fnt35 170 2207(@T)m 19(e)k 4(xtPlace)k
-170 173(@F)m 4(ootSect)k
-grestore
-160 fnt35 3201 3829(@P)m 6(ageList)k
-gsave
-6688 11541 translate
-180.0000 rotate
-gsave
-0 0 translate
-30.0000 rotate
-gsave
-0 0 translate
-240 fnt82 68 0 0 0 240 288 60 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-
-grestore
-gsave
-0 0 translate
-240 fnt82 1440 0 0 0 240 288 60 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-gsave
-0 0 translate
--30.0000 rotate
-gsave
-0 0 translate
-240 fnt82 68 0 0 0 240 288 60 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-
-grestore
-
-grestore
-200 fnt83 6748 11497(to)m 6947(printer)s gsave
-4335 9295 translate
-30.0000 rotate
-gsave
-0 0 translate
-240 fnt82 68 0 0 0 240 288 60 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-
-grestore
-gsave
-4335 9295 translate
-240 fnt82 963 0 0 0 240 288 60 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-gsave
-4335 9295 translate
--30.0000 rotate
-gsave
-0 0 translate
-240 fnt82 68 0 0 0 240 288 60 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-
-grestore
-128 fnt82 5418 9331(1)m
-160 fnt82 5469 9259(Blom,)m 5891(Eric.)s 160 fnt83 6260 9260(Some)m
-6636(Gr)s 5(eat)k 5418 9080(Composer)m 1(s.)k 160 fnt82
-6512 9079(Oxford,)m 5418 8899(1944.)m 240 fnt82 0 3343(A)m 229(g)s 1(alle)k 3(y)k
-861(replaces)s 1693(the)s 2039(in)s 9(v)k 4(ocation)k
-3091(pointed)s 3866(to)s 4103(by)s 4395(its)s 4670(cross)s
-5210(reference.)s 6260(If)s 6488(space)s 7073(is)s 7282(not)s
-7646(suf\207cient)s 8593(there)s 0 3055(to)m 232(hold)s 708(it)s
-892(all,)s 1230(the)s 1570(remainder)s 2590(of)s 2854(the)s
-3194(g)s 1(alle)k 3(y)k 3820(is)s 4023(split)s
-4486(of)s 6(f)k 4822(\(the)s 5242(v)s 3(ertical)k
-6001(concatenation)s 7378(symbol)s 8130(preceding)s 0 2767(it)m 199(being)s
-791(discarded\))s 1842(and)s 2253(it)s 2452(replaces)s 3293(later)s
-3783(in)s 9(v)k 4(ocations)k 4931(of)s 5209(the)s
-5564(same)s 6119(symbol.)s 6935(This)s 7418(is)s 7635(e)s 3(xactly)k
-8383(what)s 8916(is)s 0 2479(required)m 854(to)s 1093(get)s
-1445(te)s 3(xt)k 1860(and)s 2264(footnotes)s 3205(onto)s
-3684(pages.)s 480 2105(T)m 19(o)k 780(create)s 1405(a)s
-1571(g)s 1(alle)k 3(y)k 15(,)k 2243(\207rst)s
-2674(de\207ne)s 3315(a)s 3481(symbol)s 4241(with)s 4723(a)s
-4889(special)s 220 fnt35 5607 2102(into)m 240 fnt82 6013 2105(clause,)m
-6717(lik)s 2(e)k 7129(this:)s 220 fnt35 480 1604(def @F)m 6(ootNote into { @F)k 6(ootPlace&&f)k 6(ollo)k 3(wing })k
-480 1316( r)m -3(ight x)k 480 1028({)m 480 740( 8p @F)m 6(ont x)k
-480 452(})m
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 11 17
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Italic
-%%+ font Times-Bold
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-1 LoutMargSet
-grestore
-240 fnt83 0 13843(1.4.)m 454(Galle)s 7(ys)k 240 fnt84
-8839 13840(11)m 240 fnt82 0 13205(An)m 343(in)s 9(v)k 4(ocation)k
-1390(of)s 1654(such)s 2142(a)s 2301(symbol)s 3054(will)s
-3473(then)s 3934(be)s 4209(a)s 4368(g)s 1(alle)k 3(y)k
-4994(whose)s 5655(object)s 6292(is)s 6495(the)s 6835(result)s
-7418(of)s 7682(the)s 8022(in)s 9(v)k 4(ocation,)k
-0 12917(and)m 399(whose)s 1062(cross)s 1598(reference)s 2536(is)s
-2740(gi)s 6(v)k 3(en)k 3315(by)s 3603(the)s
-220 fnt35 3946 12914(into)m 240 fnt82 4347 12917(clause.)m 5102(The)s
-5525(right)s 6030(parameter)s 7039(of)s 7304(the)s 7647(cross)s
-8183(reference)s 0 12629(must)m 525(be)s 807(one)s 1209(of)s
-220 fnt35 1480 12626(preceding)m 240 fnt82 2431 12629(,)m 220 fnt35
-2538 12626(f)m 6(ollo)k 3(wing)k 240 fnt82 3368 12629(,)m
-3475(and)s 220 fnt35 3879 12626(f)m 6(oll_or_prec)k 240 fnt82
-5013 12629(.)m 480 12255(A)m 700(symbol,)s 1502(lik)s 2(e)k
-220 fnt35 1903 12252(@F)m 6(ootPlace)k 3(,)k 240 fnt82
-3196 12255(which)m 3827(is)s 4027(the)s 240 fnt83 4364 12257(tar)m 8(g)k 2(et)k
-240 fnt82 4979 12255(of)m 5239(a)s 5395(g)s 1(alle)k 3(y)k 15(,)k
-6056(must)s 6571(contain)s 7321(the)s 7659(special)s 8366(symbol)s
-220 fnt35 0 11964(@Galle)m 4(y)k 240 fnt82 898 11967(e)m 3(xactly)k
-1639(once)s 2147(in)s 2390(its)s 2666(body;)s 3258(often)s
-3806(this)s 4202(is)s 4412(all)s 4705(that)s 5123(the)s
-5471(body)s 6005(contains:)s 220 fnt35 480 11466(def @F)m 6(ootPlace { @Galle)k 4(y })k
-240 fnt82 0 10968(It)m 229(is)s 464(this)s 885(special)s
-1628(symbol)s 2412(that)s 2855(is)s 3090(replaced)s 3982(by)s
-4300(the)s 4673(incoming)s 5655(g)s 1(alle)k 3(y)k 15(,)k
-6352(in)s 6619(f)s 2(act,)k 7106(not)s 7497(the)s
-220 fnt35 7870 10965(@F)m 6(ootPlace)k 240 fnt82 0 10680(symbol)m
-760(as)s 1010(a)s 1176(whole.)s 480 10306(A)m 718(symbol)s
-1487(which)s 2138(contains)s 220 fnt35 2994 10303(@Galle)m 4(y)k
-240 fnt82 3832 10306(,)m 3948(either)s 4560(directly)s 5351(within)s
-6028(its)s 6313(body)s 6855(or)s 7123(indirectly)s 8101(within)s
-8778(the)s 0 10018(body)m 533(of)s 802(a)s 966(symbol)s
-1725(it)s 1915(in)s 9(v)k 4(ok)k 2(es,)k
-2750(is)s 2959(called)s 3585(a)s 240 fnt83 3749 10020(r)m 8(eceptive)k
-240 fnt82 4668 10018(symbol,)m 5478(meaning)s 6353(recepti)s 6(v)k 3(e)k
-7274(to)s 7511(g)s 1(alle)k 3(ys.)k 220 fnt35
-8346 10015(@F)m 6(oot)k 240 fnt82 8998 10018(-)m 220 fnt35
-0 9727(Place)m 240 fnt82 630 9730(is)m 870(recepti)s 6(v)k 3(e,)k
-1873(which)s 2545(mak)s 2(es)k 220 fnt35 3235 9727(@F)m 6(ootList,)k
-4364(@F)s 6(ootSect)k 240 fnt82 5545 9730(and)m 220 fnt35
-5979 9727(@P)m 8(ageList)k 240 fnt82 7133 9730(recepti)m 6(v)k 3(e)k
-8085(since)s 8663(the)s 3(y)k 0 9442(in)m 9(v)k 4(ok)k 2(e)k
-220 fnt35 704 9439(@F)m 6(ootPlace)k 3(.)k 240 fnt82
-2078 9442(If)m 2319(no)s 2623(g)s 1(alle)k 3(y)k
-3268(replaces)s 4112(an)s 3(y)k 220 fnt35 4520 9439(@Galle)m 4(y)k
-240 fnt82 5429 9442(within)m 6108(some)s 6680(in)s 9(v)k 4(ocation)k
-7745(of)s 8027(a)s 8204(recepti)s 6(v)k 3(e)k
-0 9154(symbol,)m 816(that)s 1239(in)s 9(v)k 4(ocation)k
-2297(is)s 2512(replaced)s 3383(by)s 220 fnt35 3682 9151(@Null)m
-240 fnt82 4267 9154(.)m 4435(The)s 4868(adv)s 6(antages)k
-5980(of)s 6256(this)s 6656(rule)s 7088(for)s 7430(page)s
-7943(layout)s 8606(were)s 0 8866(e)m 3(xplained)k 985(at)s
-1217(the)s 1565(end)s 1969(of)s 2240(Section)s 3014(1.2.)s
-480 8492(Let)m 852(us)s 1109(no)s 6(w)k 1563(follo)s 6(w)k
-2228(through)s 3023(the)s 3364(construction)s 4596(of)s 4861(our)s
-5233(e)s 3(xample)k 6089(document.)s 7190(Initially)s 7992(there)s
-8518(is)s 8721(just)s 0 8204(the)m 348(one)s 240 fnt83
-750 8206(r)m 10(oot)k 240 fnt82 1203 8204(g)m 1(alle)k 3(y)k 15(,)k
-1875(containing)s 2938(an)s 3221(une)s 3(xpanded)k 4434(in)s 9(v)k 4(ocation)k
-5488(of)s 220 fnt35 5759 8201(@P)m 8(ageList:)k 180 fnt35
-3315 7732(@P)m 7(ageList)k gsave
-5746 7778 translate
-180.0000 rotate
-gsave
-0 0 translate
-30.0000 rotate
-gsave
-0 0 translate
-240 fnt82 68 0 0 0 240 288 60 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-
-grestore
-gsave
-0 0 translate
-240 fnt82 1440 0 0 0 240 288 60 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-gsave
-0 0 translate
--30.0000 rotate
-gsave
-0 0 translate
-240 fnt82 68 0 0 0 240 288 60 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-
-grestore
-
-grestore
-200 fnt83 5806 7734(to)m 6005(printer)s
-240 fnt82 0 7241(Then)m 602(the)s 200 fnt82 1004 7250(PURCELL)m
-240 fnt82 2002 7241(g)m 1(alle)k 3(y)k 2690(appears,)s
-3580(tar)s 4(geted)k 4457(to)s 4750(a)s 220 fnt35
-4969 7238(@T)m 26(e)k 6(xtPlace)k 3(.)k 240 fnt82
-6348 7241(Lout)m 6913(kno)s 6(ws)k 7638(that)s 8109(there)s
-8696(is)s 8960(a)s 220 fnt35 0 6950(@T)m 26(e)k 6(xtPlace)k
-240 fnt82 1218 6953(hidden)m 1927(inside)s 220 fnt35 2554 6950(@P)m 8(ageList,)k
-240 fnt82 3724 6953(so)m 3990(it)s 4182(e)s 3(xpands)k
-220 fnt35 5015 6950(@P)m 8(ageList:)k 160 fnt84 870 6220(PURCELL)m
-128 fnt82 1626 6292(1)m 160 fnt82 480 5928(In)m 705(the)s
-991(w)s 1(orld)k 1455(of)s 1691(music)s 480 5748(England)m
-1192(is)s 1473(supposed)s 480 5568(to)m 686(be)s 921(a)s
-1078(mere)s 1481(pro)s 2(vince.)k 480 5388(If)m 775(she)s
-1166(produces)s 1918(an)s 480 5208(indif)m 4(ferent)k 1446(composer)s
-480 5028(or)m 763(performer)s 6(,)k 1577(that)s 1967(is)s
-480 4848(re)m 2(garded)k 1172(else)s 4(where)k 1940(as)s
-480 4668(perfectly)m 1215(normal)s 1837(and)s 480 4488(natural;)m 1072(b)s 3(ut)k
-1388(if)s 1608(foreign)s 480 4308(students)m 1215(of)s 1574(musical)s
-480 4128(history)m 1286(ha)s 3(v)k 2(e)k 1947(to)s
-480 3948(ackno)m 4(wledge)k 1440(a)s 1636(British)s 480 3768(musical)m
-1105(genius,)s 1686(he)s 1967(is)s 480 3588(considered)m 1211(a)s
-1322(freak.)s 800 3355(Such)m 1267(a)s 1488(freak)s 1967(is)s
-480 3175(Henry)m 917(Purcell.)s 1480(Y)s 16(et)k 1736(if)s
-1884(we)s 480 2995(mak)m 1(e)k 875(a)s 1000(choice)s
-1467(of)s 1662(\207fteen)s 480 2815(of)m 717(the)s 1005(w)s 1(orld')k 8(s)k
-1574(musical)s 480 2635(classics,)m 1050(as)s 1228(here,)s 1586(we)s
-1820(\207nd)s 480 2455(that)m 774(we)s 1013(cannot)s 1495(omit)s
-1843(this)s 480 2275(English)m 1005(master)s 8(.)k gsave
-3434 6298 translate
-180.0000 rotate
-gsave
-0 0 translate
-30.0000 rotate
-gsave
-0 0 translate
-240 fnt82 68 0 0 0 240 288 60 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-
-grestore
-gsave
-0 0 translate
-240 fnt82 1247 0 0 0 240 288 60 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-gsave
-0 0 translate
--30.0000 rotate
-gsave
-0 0 translate
-240 fnt82 68 0 0 0 240 288 60 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-
-grestore
-
-grestore
-gsave
-3315 4033 translate
-220 fnt35 1927 2494 0 2494 220 288 61 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto xsize ysize lineto
-0 ysize lineto closepath stroke
-grestore
-160 fnt35
-170 2207(@T)m 19(e)k 4(xtPlace)k 170 173(@F)m 4(ootSect)k
-
-grestore
-160 fnt35 3315 3803(@P)m 6(ageList)k gsave
-6802 6527 translate
-180.0000 rotate
-gsave
-0 0 translate
-30.0000 rotate
-gsave
-0 0 translate
-240 fnt82 68 0 0 0 240 288 60 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-
-grestore
-gsave
-0 0 translate
-240 fnt82 1440 0 0 0 240 288 60 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-gsave
-0 0 translate
--30.0000 rotate
-gsave
-0 0 translate
-240 fnt82 68 0 0 0 240 288 60 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-
-grestore
-
-grestore
-200 fnt83 6862 6483(to)m
-7061(printer)s 240 fnt82 0 1790(After)m 586(promoting)s 1659(the)s
-2030(\207rst)s 2484(line)s 2922(into)s 220 fnt35 3370 1787(@T)m 26(e)k 6(xtPlace)k 3(,)k
-240 fnt82 4658 1790(the)m 5029(footnote)s 5905(g)s 1(alle)k 3(y)k
-6563(attached)s 7440(to)s 7702(it)s 7917(appears)s 8722(and)s
-0 1502(demands)m 938(an)s 1257(in)s 9(v)k 4(ocation)k
-2347(of)s 220 fnt35 2654 1499(@F)m 6(ootPlace)k 240 fnt82
-3946 1502(follo)m 6(wing)k 4960(its)s 5272(attachment)s 6416(point)s
-7004(\(`)s 200 fnt82 7144 1511(PURCELL)m 240 fnt82 8029 1502('\).)m
-8387(Such)s 8960(a)s 220 fnt35 0 1211(@F)m 6(ootPlace)k
-240 fnt82 1274 1214(is)m 1502(found)s 2138(at)s 2388(the)s
-2754(bottom)s 3511(of)s 3800(the)s 4166(\207rst)s 4616(page,)s
-5193(inside)s 220 fnt35 5838 1211(@F)m 6(ootSect,)k 240 fnt82
-7054 1214(which)m 7714(is)s 7943(accordingly)s 0 926(e)m 3(xpanded,)k
-1022(and)s 1426(the)s 1774(footnote)s 2627(is)s 2837(promoted)s
-3812(onto)s 4291(the)s 4639(page:)s
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 12 18
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Times-Italic
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-0 LoutMargSet
-grestore
-240 fnt84 0 13840(12)m 240 fnt83 6965 13843(Chapter)m 7815(1.)s
-8089(Principles)s 160 fnt82 480 12579(In)m 705(the)s 991(w)s 1(orld)k
-1455(of)s 1691(music)s 480 12399(England)m 1192(is)s 1473(supposed)s
-480 12219(to)m 686(be)s 921(a)s 1078(mere)s 1481(pro)s 2(vince.)k
-480 12039(If)m 775(she)s 1166(produces)s 1918(an)s 480 11859(indif)m 4(ferent)k
-1446(composer)s 480 11679(or)m 763(performer)s 6(,)k 1577(that)s
-1967(is)s 480 11499(re)m 2(garded)k 1172(else)s 4(where)k
-1940(as)s 480 11319(perfectly)m 1215(normal)s 1837(and)s 480 11139(natural;)m
-1072(b)s 3(ut)k 1388(if)s 1608(foreign)s 480 10959(students)m
-1215(of)s 1574(musical)s 480 10779(history)m 1286(ha)s 3(v)k 2(e)k
-1947(to)s 480 10599(ackno)m 4(wledge)k 1440(a)s 1636(British)s
-480 10419(musical)m 1105(genius,)s 1686(he)s 1967(is)s 480 10239(considered)m
-1211(a)s 1322(freak.)s 800 10006(Such)m 1267(a)s 1488(freak)s
-1967(is)s 480 9826(Henry)m 917(Purcell.)s 1480(Y)s 16(et)k
-1736(if)s 1884(we)s 480 9646(mak)m 1(e)k 875(a)s
-1000(choice)s 1467(of)s 1662(\207fteen)s 480 9466(of)m 717(the)s
-1005(w)s 1(orld')k 8(s)k 1574(musical)s 480 9286(classics,)m
-1050(as)s 1228(here,)s 1586(we)s 1820(\207nd)s 480 9106(that)m
-774(we)s 1013(cannot)s 1495(omit)s 1843(this)s 480 8926(English)m
-1005(master)s 8(.)k gsave
-3434 12615 translate
-180.0000 rotate
-gsave
-0 0 translate
-30.0000 rotate
-gsave
-0 0 translate
-240 fnt82 68 0 0 0 240 288 60 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-
-grestore
-gsave
-0 0 translate
-240 fnt82 1247 0 0 0 240 288 60 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-gsave
-0 0 translate
--30.0000 rotate
-gsave
-0 0 translate
-240 fnt82 68 0 0 0 240 288 60 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-
-grestore
-
-grestore
-gsave
-3315 10788 translate
-240 fnt82 1927 2494 0 2494 240 288 60 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto xsize ysize lineto
-0 ysize lineto closepath stroke
-grestore
-160 fnt84 560 1987(PURCELL)m 128 fnt82
-1316 2059(1)m 140 fnt35 170 1807(@T)m 16(e)k 4(xtPlace)k
-gsave
-170 924 translate
-160 fnt82 567 0 0 0 160 180 40 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-128 fnt82 170 785(1)m 160 fnt82 221 713(Blom,)m 703(Eric.)s
-160 fnt83 1133 714(Some)m 170 534(Gr)m 5(eat)k 734(Composer)s 1(s.)k
-160 fnt82 170 353(Oxford,)m 703(1944.)s 140 fnt35 170 173(@F)m 4(ootList)k
-
-grestore
-140 fnt35 3315 10573(@P)m 5(ageList)k gsave
-6802 13282 translate
-180.0000 rotate
-gsave
-0 0 translate
-30.0000 rotate
-gsave
-0 0 translate
-240 fnt82 68 0 0 0 240 288 60 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-
-grestore
-gsave
-0 0 translate
-240 fnt82 1440 0 0 0 240 288 60 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-gsave
-0 0 translate
--30.0000 rotate
-gsave
-0 0 translate
-240 fnt82 68 0 0 0 240 288 60 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-
-grestore
-
-grestore
-200 fnt83 6862 13238(to)m
-7061(printer)s 240 fnt82 0 8441(No)m 6(w)k 512(the)s
-858(promotion)s 1910(of)s 2179(the)s 200 fnt82 2525 8450(PURCELL)m
-240 fnt82 3468 8441(g)m 1(alle)k 3(y)k 4100(resumes.)s
-5045(When)s 5672(the)s 6018(\207rst)s 6447(page)s 6953(is)s
-7161(\207lled,)s 7757(Lout)s 8266(searches)s 0 8153(forw)m 2(ards)k
-898(for)s 1236(another)s 220 fnt35 2013 8150(@T)m 26(e)k 6(xtPlace)k
-240 fnt82 3231 8153(to)m 3470(recei)s 6(v)k 3(e)k
-4206(the)s 4554(remainder)s 9(,)k 5620(once)s 6128(ag)s 1(ain)k
-6702(e)s 3(xpanding)k 7750(a)s 220 fnt35 7916 8150(@P)m 8(ageList:)k
-160 fnt82 480 4955(performer)m 6(,)k 1436(that)s 1967(is)s
-480 4775(re)m 2(garded)k 1172(else)s 4(where)k 1940(as)s
-480 4595(perfectly)m 1215(normal)s 1837(and)s 480 4415(natural;)m 1072(b)s 3(ut)k
-1388(if)s 1608(foreign)s 480 4235(students)m 1215(of)s 1574(musical)s
-480 4055(history)m 1286(ha)s 3(v)k 2(e)k 1947(to)s
-480 3875(ackno)m 4(wledge)k 1440(a)s 1636(British)s 480 3695(musical)m
-1105(genius,)s 1686(he)s 1967(is)s 480 3515(considered)m 1211(a)s
-1322(freak.)s 800 3282(Such)m 1267(a)s 1488(freak)s 1967(is)s
-480 3102(Henry)m 917(Purcell.)s 1480(Y)s 16(et)k 1736(if)s
-1884(we)s 480 2922(mak)m 1(e)k 875(a)s 1000(choice)s
-1467(of)s 1662(\207fteen)s 480 2742(of)m 717(the)s 1005(w)s 1(orld')k 8(s)k
-1574(musical)s 480 2562(classics,)m 1050(as)s 1228(here,)s 1586(we)s
-1820(\207nd)s 480 2382(that)m 774(we)s 1013(cannot)s 1495(omit)s
-1843(this)s 480 2202(English)m 1005(master)s 8(.)k gsave
-3434 4991 translate
-180.0000 rotate
-gsave
-0 0 translate
-30.0000 rotate
-gsave
-0 0 translate
-240 fnt82 68 0 0 0 240 288 60 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-
-grestore
-gsave
-0 0 translate
-240 fnt82 1247 0 0 0 240 288 60 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-gsave
-0 0 translate
--30.0000 rotate
-gsave
-0 0 translate
-240 fnt82 68 0 0 0 240 288 60 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-
-grestore
-
-grestore
-gsave
-3315 5233 translate
-240 fnt82 1927 2494 0 2494 240 288 60 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto xsize ysize lineto
-0 ysize lineto closepath stroke
-grestore
-160 fnt84
-560 1987(PURCELL)m 128 fnt82 1316 2059(1)m 160 fnt82 170 1695(In)m
-341(the)s 573(w)s 1(orld)k 983(of)s 1164(music)s
-170 1515(England)m 741(is)s 881(supposed)s 1515(to)s 170 1335(be)m
-358(a)s 469(mere)s 825(pro)s 2(vince.)k 1491(If)s
-170 1155(she)m 708(produces)s 1608(an)s 170 975(indif)m 4(ferent)k
-879(composer)s 1540(or)s 567 0 0 0 160 180 40 170 763 LoutGr2
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-128 fnt82 170 624(1)m 160 fnt82
-221 552(Blom,)m 703(Eric.)s 160 fnt83 1133 553(Some)m 170 373(Gr)m 5(eat)k
-734(Composer)s 1(s.)k 160 fnt82 170 192(Oxford,)m 703(1944.)s
-
-grestore
-gsave
-3315 2739 translate
-240 fnt82 1927 2494 0 2494 240 288 60 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto xsize ysize lineto
-0 ysize lineto closepath stroke
-grestore
-140 fnt35 170 2222(@T)m 16(e)k 4(xtPlace)k 170 173(@F)m 4(ootSect)k
-
-grestore
-140 fnt35 3315 2524(@P)m 5(ageList)k gsave
-6802 7727 translate
-180.0000 rotate
-gsave
-0 0 translate
-30.0000 rotate
-gsave
-0 0 translate
-240 fnt82 68 0 0 0 240 288 60 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-
-grestore
-gsave
-0 0 translate
-240 fnt82 1440 0 0 0 240 288 60 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-gsave
-0 0 translate
--30.0000 rotate
-gsave
-0 0 translate
-240 fnt82 68 0 0 0 240 288 60 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-
-grestore
-
-grestore
-200 fnt83 6862 7683(to)m
-7061(printer)s 240 fnt82 0 1717(and)m 404(so)s 671(on.)s
-1076(All)s 1437(these)s 1985(e)s 3(xpansions)k 3098(and)s
-3503(replacements)s 4814(are)s 5162(done)s 5685(with)s 6168(total)s
-6648(inte)s 3(grity)k 15(.)k 7604(F)s 3(or)k
-7994(e)s 3(xample,)k 8909(if)s 0 1429(Lout)m 510(\207nds)s
-1024(after)s 1517(e)s 3(xpanding)k 220 fnt35 2563 1426(@F)m 6(ootSect)k
-240 fnt82 3711 1429(that)m 4126(the)s 4472(page)s 4977(is)s
-5184(too)s 5541(full)s 5924(to)s 6160(accept)s 6828(e)s 6(v)k 3(en)k
-7325(the)s 7670(\207rst)s 8099(line)s 8510(of)s 8778(the)s
-0 1141(footnote,)m 220 fnt35 915 1138(@F)m 6(ootSect)k 240 fnt82
-2077 1141(is)m 2298(reset)s 2819(to)s 3070(une)s 3(xpanded)k
-4294(and)s 4709(the)s 5068(search)s 5746(for)s 6096(a)s
-6273(tar)s 4(get)k 6883(for)s 7232(the)s 7591(footnote)s
-8456(mo)s 3(v)k 3(es)k 0 853(on.)m 396(And)s
-858(the)s 1197(cross)s 1730(reference)s 2664(direction,)s 220 fnt35
-3611 850(preceding)m 240 fnt82 4613 853(or)m 220 fnt35 4864 850(f)m 6(ollo)k 3(wing,)k
-240 fnt82 5799 853(is)m 6000(al)s 2(w)k 2(ays)k
-6702(obe)s 3(yed)k 7440(\(although)s 8405(lack)s 8855(of)s
-0 565(space)m 586(sometimes)s 1658(pre)s 6(v)k 3(ents)k
-2509(Lout)s 3020(from)s 3543(choosing)s 4460(the)s 4807(nearest)s
-5542(tar)s 4(get\).)k 6323(Only)s 6855(the)s 7202(root)s
-7646(g)s 1(alle)k 3(y)k 8278(contains)s 0 277(recepti)m 6(v)k 3(e)k
-922(symbols)s 1771(in)s 2014(our)s 2393(running)s 3191(e)s 3(xample,)k
-4105(b)s 4(ut)k 4467(an)s 3(y)k 4864(g)s 1(alle)k 3(y)k
-5498(may)s 5964(contain)s 6725(them.)s
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 13 19
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Times-Italic
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-1 LoutMargSet
-grestore
-480 fnt84 0 12955(Chapter)m 1819(2.)s 2400(Details)s 240 fnt84
-0 11690(2.1.)m 471(Lexical)s 1270(structur)s 4(e)k 2263(\(w)s 2(ords,)k
-3079(spaces,)s 3844(symbols\))s 4796(and)s 5237(macr)s 4(os)k
-240 fnt82 480 11213(The)m 902(input)s 1447(to)s 1679(Lout)s
-2184(consists)s 2985(of)s 3249(a)s 3408(sequence)s 4334(of)s
-240 fnt83 4598 11215(te)m 4(xtual)k 5297(units)s 240 fnt82
-5757 11213(,)m 5857(which)s 6492(may)s 6951(be)s 7226(either)s
-240 fnt83 7822 11215(white)m 8386(spaces)s 240 fnt82 9019 11213(,)m
-240 fnt83 0 10927(identi\207er)m 2(s,)k 1047(delimiter)s 2(s,)k
-240 fnt82 2093 10925(or)m 240 fnt83 2352 10927(liter)m 3(al)k
-2992(wor)s 8(ds)k 240 fnt82 3565 10925(.)m 3729(Each)s
-4264(is)s 4474(a)s 4640(sequence)s 5573(of)s 240 fnt83
-5844 10927(c)m 3(har)k 3(acter)k 2(s)k 240 fnt82
-6914 10925(chosen)m 7636(from:)s 480 10387(letter)m 220 fnt35 1934 10384(@ab-zAB-Z_)m
-240 fnt82 480 10099(white)m 1067(space)s 240 fnt83 1934 10101(space)m
-2592(formfeed)s 3568(tab)s 3988(ne)s 3(wline)k 240 fnt82
-480 9811(quote)m 220 fnt35 1934 9808(")m 240 fnt82 480 9523(escape)m
-220 fnt35 1934 9520(\\)m 240 fnt82 480 9235(comment)m 220 fnt35
-1934 9232(#)m 240 fnt82 480 8947(other)m 220 fnt35 1934 8944(!$%&'\(\)*+,-./0123456789:;<=>?[]^`{|}~)m
-240 fnt82 0 8406(Notice)m 732(that)s 220 fnt35 1189 8403(@)m
-240 fnt82 1480 8406(and)m 220 fnt35 1923 8403(_)m 240 fnt82
-2144 8406(are)m 2531(classed)s 3318(as)s 3608(letters.)s 4393(Basser)s
-5129(Lout)s 5681(accepts)s 6474(the)s 6861(accented)s 7795(letters)s
-8467(of)s 8778(the)s 0 8118(ISO-LA)m 26(TIN-1)k 1421(character)s
-2388(set)s 2746(\(depending)s 3909(on)s 4238(ho)s 6(w)k
-4732(it)s 4957(is)s 5200(installed\),)s 6228(and)s 6664(these)s
-7244(are)s 7624(also)s 8095(classed)s 8876(as)s 0 7830(letters.)m
-756(The)s 1195(ten)s 1555(digits)s 2148(are)s 2505(classed)s
-3264(as)s 3525(`other')s 4218(characters,)s 5302(and)s 5717(in)s
-5971(f)s 2(act)k 6397(the)s 6755(`other')s 7448(class)s
-7974(contains)s 8833(all)s 0 7542(8-bit)m 511(characters)s 1529(\(e)s 3(xcept)k
-2289(octal)s 2808(0\))s 3056(not)s 3422(assigned)s 4304(to)s
-4543(pre)s 6(vious)k 5412(classes.)s 480 7168(A)m 240 fnt83
-698 7170(white)m 1256(space)s 240 fnt82 1841 7168(is)m 2038(a)s
-2191(sequence)s 3111(of)s 3369(one)s 3758(or)s 4005(more)s
-4539(white)s 5113(space)s 5687(characters.)s 6805(Lout)s 7304(treats)s
-7858(the)s 8193(formfeed)s 0 6880(character)m 931(e)s 3(xactly)k
-1668(lik)s 2(e)k 2076(the)s 2420(space)s 3003(character;)s
-3985(it)s 4173(is)s 4379(useful)s 5014(for)s 5348(getting)s
-6061(page)s 6565(breaks)s 7236(when)s 7808(printing)s 8614(Lout)s
-0 6592(source)m 680(code.)s 480 6218(A)m 240 fnt83 709 6220(delimiter)m
-240 fnt82 1635 6218(is)m 1844(a)s 2009(sequence)s 2941(of)s
-3211(one)s 3612(or)s 3870(more)s 4415(`other')s 5096(characters)s
-6113(which)s 6754(is)s 6963(the)s 7310(name)s 7883(of)s
-8153(a)s 8317(symbol.)s 0 5930(F)m 3(or)k 417(e)s 3(xample,)k
-220 fnt35 1360 5927({)m 240 fnt82 1512 5930(and)m 220 fnt35
-1945 5927(//)m 240 fnt82 2159 5930(are)m 2534(delimiters.)s 3681(When)s
-4338(de\207ning)s 5205(a)s 5400(delimiter)s 9(,)k 6387(the)s
-6764(name)s 7366(must)s 7920(be)s 8231(enclosed)s 0 5642(in)m
-243(quotes:)s 220 fnt35 480 5143(def "^" { {} ^& {} })m 240 fnt82 0 4649(b)m 4(ut)k
-361(quotes)s 1036(are)s 1381(not)s 1746(used)s 2242(when)s
-2816(the)s 3163(delimiter)s 4082(is)s 4291(in)s 9(v)k 4(ok)k 2(ed.)k
-5211(A)s 5439(delimiter)s 6359(may)s 6824(ha)s 4(v)k 3(e)k
-7323(delimiters)s 8327(and)s 8729(an)s 3(y)k 0 4361(other)m
-558(characters)s 1584(adjacent,)s 2495(whereas)s 3337(identi\207ers)s 4351(may)s
-4825(not)s 5199(be)s 5489(adjacent)s 6353(to)s 6600(letters)s
-7241(or)s 7508(other)s 8067(identi\207ers.)s 0 4073(The)m 428(complete)s
-1360(list)s 1711(of)s 1982(prede\207ned)s 3050(delimiters)s 4055(is)s
-220 fnt35 480 3572(/)m 480 3284(//)m 480 2996(^/)m 480 2708(^//)m
-1727 3572(|)m 1727 3284(||)m 1727 2996(^|)m 1727 2708(^||)m 2974 3572(&)m
-2974 3284(^&)m 4221 3572(&&)m 4221 3284({)m 4221 2996(})m 240 fnt82
-0 2253(A)m 230(longer)s 901(delimiter)s 1822(lik)s 2(e)k
-220 fnt35 2234 2250(<=)m 240 fnt82 2542 2253(will)m 2968(be)s
-3250(recognised)s 4344(in)s 4587(preference)s 5650(to)s 5889(a)s
-6055(shorter)s 6778(one)s 7180(lik)s 2(e)k 220 fnt35
-7592 2250(<)m 240 fnt82 7710 2253(.)m 480 1879(An)m 240 fnt83
-855 1881(identi\207er)m 240 fnt82 1808 1879(is)m 2043(a)s 2234(sequence)s
-3192(of)s 3488(one)s 3915(or)s 4199(more)s 4772(letters)s
-5430(which)s 6097(is)s 6332(the)s 6705(name)s 7304(of)s
-7600(a)s 7791(symbol.)s 8685(It)s 8916(is)s 0 1591(con)m 9(v)k 3(entional)k
-1308(b)s 4(ut)k 1700(not)s 2096(essential)s 3003(to)s
-3272(be)s 3(gin)k 3888(identi\207ers)s 4924(with)s 220 fnt35
-5436 1588(@)m 240 fnt82 5627 1591(;)m 5829(Basser)s 6556(Lout)s
-7098(will)s 7554(print)s 8095(a)s 8291(w)s 2(arning)k
-0 1303(message)m 865(if)s 1081(it)s 1272(\207nds)s 1788(an)s
-2070(unquoted)s 3019(literal)s 3628(w)s 2(ord)k 4175(\(see)s
-4614(belo)s 6(w\))k 5320(be)s 3(ginning)k 6327(with)s
-220 fnt35 6808 1300(@)m 240 fnt82 6999 1303(,)m 7105(since)s
-7651(such)s 8146(w)s 2(ords)k 8779(are)s 192 fnt84
-4440 2(13)m
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 14 20
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Times-Italic
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-0 LoutMargSet
-grestore
-240 fnt84 0 13840(14)m 240 fnt83 7257 13843(Chapter)m 8107(2.)s
-8381(Details)s 240 fnt82 0 13205(usually)m 748(misspelt)s 1608(identi\207ers.)s
-2730(The)s 3162(ten)s 3515(digits)s 4100(are)s 4451(not)s
-4820(letters)s 5457(and)s 5865(may)s 6334(not)s 6704(appear)s
-7404(in)s 7651(identi\207ers;)s 8722(and)s 0 12917(although)m 890(the)s
-1233(underscore)s 2333(character)s 3262(is)s 3467(a)s 3628(letter)s
-4172(and)s 4570(may)s 5031(be)s 5308(used)s 5800(in)s
-6038(identi\207ers,)s 7095(it)s 7282(is)s 7487(not)s 7847(con)s 9(v)k 3(entional)k
-0 12629(to)m 239(do)s 532(so.)s 909(The)s 1337(complete)s
-2269(list)s 2620(of)s 2891(prede\207ned)s 3959(identi\207ers)s 4965(is)s
-220 fnt35 480 12128(@Bac)m 4(kEnd)k 480 11840(@Bac)m 4(kg)k 2(round)k
-480 11552(@Begin)m 480 11264(@Break)m 480 10976(@Case)m 480 10688(@Common)m 480 10400(@Char)m
-480 10112(@CurrF)m 11(ace)k 480 9824(@CurrF)m 11(amily)k 480 9536(@CurrLang)m
-480 9248(@Database)m 480 8960(@End)m 480 8672(@Enclose)m 480 8384(@Filter)m 480 8096(@FilterErr)m
-480 7808(@FilterIn)m 480 7520(@FilterOut)m 480 7232(@F)m 6(ont)k 480 6944(@F)m 6(orceGalle)k 4(y)k
-480 6656(@Galle)m 4(y)k 480 6368(@Gr)m 2(aphic)k 480 6080(@HAdjust)m
-480 5792(@HContr)m 2(act)k 480 5504(@HCo)m 3(v)k 5(er)k
-480 5216(@HExpand)m 480 4928(@High)m 480 4640(@HLimited)m 480 4352(@HScale)m 480 4064(@HShift)m
-480 3776(@HSpan)m 2974 12128(@Include)m 2974 11840(@IncludeGr)m 2(aphic)k 2974 11552(@Inser)m -8(t)k
-2974 11264(@K)m 8(er)k -5(nShr)k -3(ink)k 2974 10976(@K)m 8(e)k 4(y)k
-2974 10688(@Language)m 2974 10400(@LClos)m 2974 10112(@LEn)m 4(v)k 2974 9824(@LInput)m
-2974 9536(@L)m 24(Vis)k 2974 9248(@LUse)m 2974 8960(@Meld)m 2974 8672(@Merge)m
-2974 8384(@Min)m 2(us)k 2974 8096(@Moment)m 2974 7808(@Ne)m 6(xt)k
-2974 7520(@NotRe)m 6(v)k 5(ealed)k 2974 7232(@Null)m 2974 6944(@OneCol)m
-2974 6656(@OneOf)m 2974 6368(@OneRo)m 3(w)k 2974 6080(@Open)m 2974 5792(@Optimiz)m 3(e)k
-2974 5504(@P)m 26(Adjust)k 2974 5216(@P)m 8(ageLabel)k 2974 4928(@PlainGr)m 2(aphic)k
-2974 4640(@Plus)m 2974 4352(@PrependGr)m 2(aphic)k 2974 4064(@Ra)m 4(wV)k 17(erbatim)k
-2974 3776(@Rotate)m 5468 12128(@Rump)m 5468 11840(@Scale)m 5468 11552(@SetColor)m 5468 11264(@SetColour)m
-5468 10976(@Space)m 5468 10688(@Star)m -8(tHSpan)k 5468 10400(@Star)m -8(tHVSpan)k
-5468 10112(@Star)m -8(tVSpan)k 5468 9824(@SysDatabase)m 5468 9536(@SysInclude)m 5468 9248(@SysIncludeGr)m 2(aphic)k
-5468 8960(@SysPrependGr)m 2(aphic)k 5468 8672(@T)m 26(ag)k 5468 8384(@T)m 26(agged)k
-5468 8096(@T)m 26(arget)k 5468 7808(@Under)m -3(line)k 5468 7520(@Use)m
-5468 7232(@V)m 17(Adjust)k 5468 6944(@VContr)m 2(act)k 5468 6656(@VCo)m 3(v)k 5(er)k
-5468 6368(@V)m 17(erbatim)k 5468 6080(@VExpand)m 5468 5792(@VLimited)m 5468 5504(@VScale)m
-5468 5216(@VShift)m 5468 4928(@VSpan)m 5468 4640(@Wide)m 5468 4352(@Y)m 4(ield)k
-5468 4064(@YUnit)m 5468 3776(@ZUnit)m 240 fnt82 0 3280(plus)m 498(the)s
-894(names)s 1605(of)s 1924(the)s 2321(parameters)s 3467(of)s
-220 fnt35 3786 3277(@Moment)m 240 fnt82 4798 3280(.)m 5011(The)s
-5487(symbols)s 220 fnt35 6385 3277(@LClos)m 240 fnt82 7161 3280(,)m
-220 fnt35 7316 3277(@LEn)m 4(v)k 240 fnt82 8034 3280(,)m
-220 fnt35 8190 3277(@LInput)m 240 fnt82 9019 3280(,)m 220 fnt35
-0 2989(@L)m 24(Vis)k 240 fnt82 722 2992(and)m 220 fnt35
-1170 2989(@LUse)m 240 fnt82 2001 2992(appear)m 2742(in)s 3029(cross)s
-3615(reference)s 4602(databases)s 5613(generated)s 6644(by)s 6982(Lout)s
-7538(and)s 7986(are)s 8377(not)s 8788(for)s 0 2704(use)m
-375(else)s 6(where.)k 480 2330(A)m 728(sequence)s 1679(of)s
-1968(characters)s 3004(which)s 3664(is)s 3892(neither)s 4633(a)s
-4817(white)s 5422(space,)s 6078(an)s 6379(identi\207er)s 9(,)k
-7357(nor)s 7754(a)s 7938(delimiter)s 9(,)k 8916(is)s
-0 2042(by)m 304(def)s 2(ault)k 1036(a)s 240 fnt83
-1213 2044(liter)m 3(al)k 1864(wor)s 8(d)k 240 fnt82
-2355 2042(,)m 2473(which)s 3126(means)s 3799(that)s 4227(it)s
-4430(will)s 4867(pass)s 5341(through)s 6154(Lout)s 6677(unchanged.)s
-7890(An)s 8251(arbitrary)s 0 1754(sequence)m 926(of)s 1190(characters)s
-2201(enclosed)s 3089(in)s 3325(double)s 4026(quotes,)s 4751(for)s
-5082(e)s 3(xample)k 220 fnt35 5938 1751("{ }",)m 240 fnt82
-6457 1754(is)m 6660(also)s 7091(a)s 7250(literal)s 7853(w)s 2(ord.)k
-8499(Space)s 0 1466(characters)m 1005(may)s 1458(be)s 1726(included,)s
-2644(b)s 4(ut)k 2992(not)s 3345(tabs)s 3767(or)s
-4013(ne)s 6(wlines.)k 5008(There)s 5607(are)s 5941(special)s
-6645(character)s 7566(sequences,)s 8629(used)s 0 1178(only)m 480(between)s
-1334(quotes,)s 2066(for)s 2404(obtaining)s 3361(otherwise)s 4346(inaccessible)s
-5556(characters:)s
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 15 21
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Italic
-%%+ font Times-Bold
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-1 LoutMargSet
-grestore
-240 fnt83 0 13843(2.1.)m 454(Le)s 4(xical)k 1213(structur)s 8(e)k
-2121(\(wor)s 8(ds,)k 2871(spaces,)s 3602(symbols\))s 4502(and)s
-4928(macr)s 10(os)k 240 fnt84 8833 13840(15)m 220 fnt35
-480 13167(\\")m 240 fnt82 1235 13170(produces)m 220 fnt35 2150 13167(")m
-480 12879(\\\\)m 240 fnt82 1235 12882(\\)m 220 fnt35 480 12591(\\ddd)m
-240 fnt82 1235 12594(the)m 1583(character)s 2517(whose)s 3185(ASCII)s
-3865(code)s 4373(is)s 1235 12306(the)m 1583(up)s 1876(to)s
-2115(three)s 2648(digit)s 3146(octal)s 3665(number)s 220 fnt35
-4456 12303(ddd)m 240 fnt82 0 11765(So,)m 360(for)s 698(e)s 3(xample,)k
-220 fnt35 1612 11762("\\"@PP\\"")m 240 fnt82 2606 11765(produces)m 220 fnt35
-3521 11762("@PP")m 240 fnt82 4177 11765(.)m 480 11391(When)m 1106(the)s
-1451(comment)s 2398(character)s 220 fnt35 3328 11388(#)m 240 fnt82
-3502 11391(is)m 3709(encountered,)s 4982(e)s 6(v)k 3(erything)k
-6045(from)s 6566(that)s 6981(point)s 7530(to)s 7765(the)s
-8110(end)s 8511(of)s 8778(the)s 0 11103(line)m 414(is)s
-624(ignored.)s 1519(This)s 1995(is)s 2205(useful)s 2844(for)s
-3182(including)s 4139(reminders)s 5145(to)s 5384(oneself,)s 6181(lik)s 2(e)k
-6593(this:)s 220 fnt35 480 10606(# Lout user man)m 2(ual)k 480 10318(# J)m 6(.)k 13( Kingston, J)k 4(une 1989)k
-240 fnt82 0 9819(for)m 338(temporarily)s 1506(deleting)s 2329(parts)s
-2844(of)s 3115(the)s 3463(document,)s 4514(and)s 4918(so)s
-5184(on.)s 240 fnt83 480 9447(Macr)m 10(os)k 240 fnt82
-1268 9445(pro)m 3(vide)k 2064(a)s 2242(means)s 2916(of)s
-3199(de\207ning)s 4049(symbols)s 4910(which)s 5564(stand)s 6139(for)s
-6489(a)s 6667(sequence)s 7612(of)s 7895(te)s 3(xtual)k
-8610(units)s 0 9157(rather)m 616(than)s 1085(an)s 1368(object.)s
-2116(F)s 3(or)k 2505(e)s 3(xample,)k 3419(the)s
-3767(macro)s 4417(de\207nition)s 220 fnt35 480 8656(macro @PP { //1.3vx 2.0f @Wide &0i })m 240 fnt82
-0 8162(mak)m 2(es)k 663(Lout)s 1178(replace)s 1926(the)s
-2277(symbol)s 220 fnt35 3040 8159(@PP)m 240 fnt82 3609 8162(by)m
-3906(the)s 4258(gi)s 6(v)k 3(en)k 4841(te)s 3(xtual)k
-5546(units)s 6065(before)s 6734(assembling)s 7866(its)s 8145(input)s
-8701(into)s 0 7874(objects.)m 841(A)s 1071(similar)s 1793(macro)s
-2443(to)s 2682(this)s 3077(one)s 3479(is)s 3689(used)s
-4186(to)s 4425(separate)s 5262(the)s 5610(paragraphs)s 6710(of)s
-6981(the)s 7329(present)s 8078(document.)s 0 7586(The)m 450(enclosing)s
-1442(braces)s 2126(and)s 2552(an)s 3(y)k 2972(spaces)s
-3669(adjacent)s 4548(to)s 4809(them)s 5370(are)s 5739(dropped,)s
-6654(which)s 7318(can)s 7730(be)s 8034(a)s 8223(problem:)s
-220 fnt35 0 7295(@PP2i)m 240 fnt82 731 7298(has)m 1101(result)s
-220 fnt35 1691 7295(//1.3vx 2.0f @Wide &0i2i)m 240 fnt82 4141 7298(which)m 4783(is)s
-4993(erroneous.)s 480 6924(The)m 938(meaning)s 1846(of)s 2148(symbols)s
-3028(used)s 3556(within)s 4254(the)s 4633(body)s 5198(of)s
-5500(a)s 5697(macro)s 6377(is)s 6618(determined)s 7782(by)s
-8107(where)s 8778(the)s 0 6636(macro)m 667(is)s 895(de\207ned,)s
-1724(not)s 2108(by)s 2419(where)s 3077(it)s 3287(is)s
-3514(used.)s 4135(Due)s 4607(to)s 4864(implementation)s 6438(problems,)s
-220 fnt35 7453 6633(@Open)m 240 fnt82 8277 6636(symbols)m 0 6348(will)m
-423(not)s 786(w)s 2(ork)k 1333(within)s 1998(macros.)s
-2849(Named)s 3594(and)s 3995(body)s 4525(parameters)s 5620(will)s
-6043(w)s 2(ork)k 6590(if)s 6804(the)s 7149(symbol)s
-7905(that)s 8320(the)s 3(y)k 8779(are)s 0 6060(parameters)m
-1090(of)s 1352(is)s 1553(also)s 1983(present.)s 2828(There)s
-3432(is)s 3633(no)s 3918(w)s 2(ay)k 4360(to)s
-4590(get)s 4934(a)s 5091(left)s 5459(or)s 5709(right)s
-6212(brace)s 6776(into)s 7192(the)s 7532(body)s 8057(of)s
-8319(a)s 8476(macro)s 0 5772(without)m 791(the)s 1139(matching)s
-2082(brace.)s 480 5398(Macros)m 1253(may)s 1724(be)s 2011(nested)s
-2685(within)s 3358(other)s 3914(de\207nitions)s 4980(and)s 5389(e)s 3(xported,)k
-6335(b)s 4(ut)k 6702(the)s 3(y)k 7170(may)s
-7641(not)s 8012(be)s 8299(parame)s 8998(-)s 0 5110(ters.)m
-511(The)s 3(y)k 1058(may)s 1528(not)s 1898(ha)s 4(v)k 3(e)k
-2403(parameters)s 3504(or)s 3767(nested)s 4440(de\207nitions)s 5505(of)s
-5780(their)s 6280(o)s 6(wn,)k 6798(and)s 7206(consequently)s
-8527(a)s 8697(pre)s 8998(-)s 0 4822(ceding)m 220 fnt35
-691 4819(e)m 6(xpor)k -8(t)k 240 fnt82 1359 4822(clause)m
-2012(\(Section)s 2865(2.3\))s 3293(w)s 2(ould)k 3948(be)s
-4230(pointless;)s 5192(ho)s 6(we)k 6(v)k 3(er)k 9(,)k
-6099(an)s 220 fnt35 6382 4819(impor)m -8(t)k 240 fnt82
-7055 4822(clause)m 7708(is)s 7918(permitted.)s 240 fnt84 0 4030(2.2.)m
-471(Named)s 1257(parameters)s 240 fnt82 480 3553(In)m 728(addition)s
-1560(to)s 1790(left)s 2159(and)s 2554(right)s 3056(\(or)s
-3386(body\))s 3985(parameters,)s 5130(a)s 5288(symbol)s 6039(may)s
-6496(ha)s 4(v)k 3(e)k 6989(an)s 3(y)k
-7377(number)s 8159(of)s 240 fnt83 8421 3555(named)m 0 3267(par)m 3(ameter)k 2(s)k
-240 fnt82 1080 3265(:)m 220 fnt35 480 2768(def @Chapter)m 480 2480( named @T)m 26(ag {})k
-480 2192( named @Title {})m 480 1904( r)m -3(ight x)k 480 1616({)m 480 1328( ...)m
-480 1040(})m 240 fnt82 0 546(Their)m 577(de\207nitions)s 1639(appear)s
-2336(in)s 2580(between)s 3434(those)s 3996(of)s 4267(an)s 3(y)k
-4665(left)s 5042(and)s 5447(right)s 5958(parameters,)s 7113(and)s
-7517(each)s 8013(is)s 8224(follo)s 6(wed)k 0 258(by)m
-293(a)s 240 fnt83 457 260(default)m 1183(value)s 240 fnt82
-1753 258(between)m 2605(braces.)s 3377(When)s 220 fnt35 4004 255(@Chapter)m
-240 fnt82 5066 258(is)m 5274(in)s 9(v)k 4(ok)k 2(ed,)k
-6136(its)s 6411(named)s 7105(parameters)s 8201(are)s 8546(gi)s 6(v)k 3(en)k
-
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 16 22
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Times-Italic
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-0 LoutMargSet
-grestore
-240 fnt84 0 13840(16)m 240 fnt83 7257 13843(Chapter)m 8107(2.)s
-8381(Details)s 240 fnt82 0 13205(v)m 6(alues)k 656(in)s
-899(the)s 1247(follo)s 6(wing)k 2224(w)s 2(ay:)k
-220 fnt35 480 12704(@Chapter)m 480 12416( @T)m 26(ag { intro })k 480 12128( @Title { Introduction })m
-480 11840({)m 480 11552( ...)m 480 11264(})m 240 fnt82 0 10770(That)m
-485(is,)s 737(a)s 889(list)s 1226(of)s 1483(named)s
-2166(parameters)s 3250(appears)s 4017(immediately)s 5251(follo)s 6(wing)k
-6214(the)s 6549(symbol,)s 7347(each)s 7828(with)s 8296(its)s
-8558(v)s 6(alue)k 0 10482(enclosed)m 900(in)s 1149(braces.)s
-1929(An)s 3(y)k 2399(right)s 2916(parameter)s 3936(follo)s 6(ws)k
-4704(after)s 5206(them.)s 5854(The)s 3(y)k 6403(do)s
-6702(not)s 7074(ha)s 4(v)k 3(e)k 7581(to)s
-7826(appear)s 8529(in)s 8778(the)s 0 10194(order)m 558(the)s 3(y)k
-1015(were)s 1529(de\207ned,)s 2334(and)s 2732(the)s 3(y)k
-3189(can)s 3571(e)s 6(v)k 3(en)k 4065(be)s
-4341(omitted)s 5122(altogether)s 9(,)k 6169(in)s 6406(which)s
-7041(case)s 7502(the)s 7844(def)s 2(ault)k 8558(v)s 6(alue)k
-0 9906(from)m 524(the)s 872(de\207nition)s 1846(is)s 2056(used)s
-2553(instead.)s 480 9532(If)m 699(the)s 1036(k)s 2(e)k 3(yw)k 2(ord)k
-220 fnt35 1913 9529(compulsor)m -6(y)k 240 fnt82 3088 9532(appears)m
-3858(after)s 220 fnt35 4342 9529(named)m 240 fnt82 5050 9532(and)m
-5442(before)s 6097(the)s 6434(parameter')s 13(s)k 7586(name,)s
-8200(Lout)s 8700(will)s 0 9244(print)m 501(a)s 657(w)s 2(arning)k
-1481(message)s 2337(whene)s 6(v)k 3(er)k 3307(this)s
-3693(parameter)s 4696(is)s 4896(missing.)s 5793(Ho)s 6(we)k 6(v)k 3(er)k
-6705(it)s 6886(will)s 7302(still)s 7703(use)s 8068(the)s
-8405(def)s 2(ault)k 0 8956(v)m 6(alue)k 568(as)s
-818(just)s 1223(described.)s 480 8582(A)m 719(named)s 220 fnt35
-1424 8579(@T)m 26(ag)k 240 fnt82 2057 8582(parameter)m 3080(does)s
-3580(not)s 3955(tak)s 2(e)k 4417(its)s 4702(def)s 2(ault)k
-5433(v)s 6(alue)k 6010(from)s 6544(the)s 6901(de\207nition;)s
-7940(instead,)s 8733(if)s 8960(a)s 0 8294(def)m 2(ault)k
-726(v)s 6(alue)k 1300(is)s 1516(needed,)s 2306(Lout)s
-2824(in)s 9(v)k 3(ents)k 3560(a)s 3731(simple)s
-4430(w)s 2(ord)k 4984(which)s 5631(dif)s 6(fers)k
-6304(from)s 6834(e)s 6(v)k 3(ery)k 7415(other)s
-7972(tag.)s 8434(This)s 8916(is)s 0 8006(important,)m 1034(for)s
-1370(e)s 3(xample,)k 2282(in)s 2523(the)s 2868(production)s
-3960(of)s 4229(numbered)s 5242(chapters)s 6086(and)s 6488(sections)s
-7307(\(Section)s 8158(4.4\).)s 8698(The)s 0 7718(same)m 551(thing)s
-1101(occurs)s 1781(if)s 2003(there)s 2541(is)s 2756(a)s
-220 fnt35 2927 7715(@T)m 26(ag)k 240 fnt82 3555 7718(parameter)m
-4574(b)s 4(ut)k 4940(its)s 5221(v)s 6(alue)k
-5794(is)s 6009(the)s 6362(empty)s 7019(object:)s 7774(the)s
-8127(v)s 6(alue)k 8700(will)s 0 7430(be)m 282(replaced)s
-1149(by)s 1443(an)s 1726(in)s 9(v)k 3(ented)k
-2596(one.)s 480 7056(Named)m 1229(parameters)s 2327(may)s 2793(ha)s 4(v)k 3(e)k
-3294(parameters,)s 4448(as)s 4698(in)s 4941(the)s 5289(follo)s 6(wing)k
-6266(de\207nition:)s 220 fnt35 480 6555(def @Str)m 2(ange)k 480 6267( named @F)m 6(or)k -5(mat r)k -3(ight @V)k 15(al { [@V)k 15(al] })k
-480 5979( r)m -3(ight x)k 480 5691({)m 480 5403( @F)m 6(or)k -5(mat x)k
-480 5115(})m 240 fnt82 0 4621(The)m 428(named)s 1125(parameter)s
-220 fnt35 2139 4618(@F)m 6(or)k -5(mat)k 240 fnt82
-3113 4621(has)m 3483(right)s 3995(parameter)s 220 fnt35 5010 4618(@V)m 15(al)k
-240 fnt82 5520 4621(,)m 5627(and)s 6032(the)s 6380(def)s 2(ault)k
-7102(v)s 6(alue)k 7670(of)s 220 fnt35 7942 4618(@F)m 6(or)k -5(mat)k
-240 fnt82 8916 4621(is)m 0 4333(this)m 394(parameter)s 1406(enclosed)s
-2299(in)s 2539(brack)s 2(ets.)k 3495(When)s 220 fnt35
-4122 4330(@F)m 6(or)k -5(mat)k 240 fnt82 5093 4333(is)m
-5300(in)s 9(v)k 4(ok)k 2(ed)k 6113(it)s
-6303(must)s 6826(be)s 7105(supplied)s 7972(with)s 8452(a)s
-8615(right)s 0 4045(parameter)m 9(,)k 1052(which)s 1694(will)s
-2120(replace)s 220 fnt35 2865 4042(@V)m 15(al)k 240 fnt82
-3375 4045(.)m 3539(Thus,)s 220 fnt35 480 3544(@Str)m 2(ange 27)k
-240 fnt82 0 3045(equals)m 220 fnt35 662 3042(@F)m 6(or)k -5(mat 27)k
-240 fnt82 1937 3045(and)m 2341(so)s 2607(has)s 2977(result)s
-480 2543([27])m 0 2055(The)m 220 fnt35 428 2052(@F)m 6(or)k -5(mat)k
-240 fnt82 1401 2055(symbol)m 2161(is)s 2371(lik)s 2(e)k
-2783(a)s 2949(de\207nition)s 3923(with)s 4405(parameters)s 5503(whose)s
-6171(body)s 6705(can)s 7094(be)s 7376(changed:)s 220 fnt35
-480 1554(@Str)m 2(ange)k 480 1266( @F)m 6(or)k -5(mat { Slope @F)k 6(ont @V)k 15(al.)k 13( })k
-480 978(27)m 240 fnt82 0 527(still)m 412(equals)s 220 fnt35
-1074 524(@F)m 6(or)k -5(mat 27)k 240 fnt82 2289 527(,)m
-2396(b)s 4(ut)k 2758(this)s 3154(time)s 3634(the)s
-3982(result)s 4572(is)s 240 fnt83 480 26(27.)m
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 17 23
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Italic
-%%+ font Times-Bold
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-1 LoutMargSet
-grestore
-240 fnt83 0 13843(2.2.)m 454(Named)s 1199(par)s 3(ameter)k 2(s)k
-240 fnt84 8831 13840(17)m 240 fnt82 0 13205(In)m 252(practice,)s
-1110(e)s 3(xamples)k 2057(of)s 2323(named)s 3015(parameters)s
-4109(with)s 4586(parameters)s 5680(all)s 5969(ha)s 4(v)k 3(e)k
-6466(this)s 6857(\210a)s 4(v)k 4(our)k 7583(of)s
-7850(format)s 8541(being)s 0 12917(separated)m 996(from)s 1556(content;)s
-2409(running)s 3243(headers)s 4060(\(Section)s 4950(4.3\))s 5414(and)s
-5854(printing)s 6701(styles)s 7332(for)s 7707(bibliographies)s 0 12629(\(Section)m
-853(4.5\))s 1281(are)s 1628(tw)s 2(o)k 2038(major)s
-2655(ones.)s 240 fnt84 0 11836(2.3.)m 471(Nested)s 1216(de\207nitions,)s
-2392(body)s 2954(parameters,)s 4236(extend,)s 5027(import,)s 5844(and)s
-6285(export)s 240 fnt82 480 11359(A)m 710(de\207nition)s 1684(may)s
-2150(contain)s 2911(other)s 3462(de\207nitions)s 4523(at)s 4755(the)s
-5103(be)s 3(ginning)k 6111(of)s 6382(its)s 6658(body:)s
-220 fnt35 480 10858(def @NineSquare)m 480 10570( r)m -3(ight x)k 480 10282({)m
-480 9994( def @Three { x |0.2i x |0.2i x })m 480 9418( @Three /0.2i @Three /0.2i @Three)m 480 9130(})m 240 fnt82 0 8636(A)m
-227(parameter)s 1238(lik)s 2(e)k 220 fnt35 1646 8633(x)m
-240 fnt82 1811 8636(may)m 2274(be)s 2552(in)s 9(v)k 4(ok)k 2(ed)k
-3364(an)s 3(ywhere)k 4343(within)s 5008(the)s 5353(body)s
-5883(of)s 6151(the)s 6495(symbol)s 7252(it)s 7441(is)s
-7647(a)s 7810(parameter)s 8820(of,)s 0 8348(including)m 973(within)s
-1657(nested)s 2342(de\207nitions.)s 3532(A)s 3778(nested)s 4463(symbol)s
-5239(lik)s 2(e)k 220 fnt35 5667 8345(@Three)m 240 fnt82
-6531 8348(may)m 7013(be)s 7311(in)s 9(v)k 4(ok)k 2(ed)k
-8143(an)s 3(ywhere)k 0 8060(from)m 518(the)s 860(be)s 3(ginning)k
-1862(of)s 2127(its)s 2397(o)s 6(wn)k 2855(body)s
-3383(to)s 3616(the)s 3958(end)s 4355(of)s 4620(the)s
-4962(body)s 5490(of)s 5755(the)s 6097(symbol)s 6851(it)s
-7037(is)s 7241(de\207ned)s 7998(within.)s 8766(So,)s 0 7772(assuming)m
-957(an)s 1240(appropriate)s 2384(de\207nition)s 3358(of)s 220 fnt35
-3629 7769(@Bo)m 6(x)k 240 fnt82 4222 7772(,)m 220 fnt35
-480 7271(@NineSquare @Bo)m 6(x)k 240 fnt82 0 6775(has)m 370(result)s
-2796 2796 226 2570 240 288 60 480 3689 LoutGr2
-grestore save gsave 200 dict begin lfigdict begin
-grestore
-740 740 226 514 240 288 60 0 2056 LoutGr2
-
-0.5 pt setlinewidth lfiground setlinecap
-0.15 cm /lfigsolid [ lfigbox ] lfigdopath
-pop pop
-grestore
-
-grestore
-740 740 226 514 240 288 60 1028 2056 LoutGr2
-
-0.5 pt setlinewidth lfiground setlinecap
-0.15 cm /lfigsolid [ lfigbox ] lfigdopath
-pop pop
-grestore
-
-grestore
-740 740 226 514 240 288 60 2056 2056 LoutGr2
-
-0.5 pt setlinewidth lfiground setlinecap
-0.15 cm /lfigsolid [ lfigbox ] lfigdopath
-pop pop
-grestore
-
-grestore
-740 740 226 514 240 288 60 0 1028 LoutGr2
-
-0.5 pt setlinewidth lfiground setlinecap
-0.15 cm /lfigsolid [ lfigbox ] lfigdopath
-pop pop
-grestore
-
-grestore
-740 740 226 514 240 288 60 1028 1028 LoutGr2
-
-0.5 pt setlinewidth lfiground setlinecap
-0.15 cm /lfigsolid [ lfigbox ] lfigdopath
-pop pop
-grestore
-
-grestore
-740 740 226 514 240 288 60 2056 1028 LoutGr2
-
-0.5 pt setlinewidth lfiground setlinecap
-0.15 cm /lfigsolid [ lfigbox ] lfigdopath
-pop pop
-grestore
-
-grestore
-740 740 226 514 240 288 60 0 0 LoutGr2
-
-0.5 pt setlinewidth lfiground setlinecap
-0.15 cm /lfigsolid [ lfigbox ] lfigdopath
-pop pop
-grestore
-
-grestore
-740 740 226 514 240 288 60 1028 0 LoutGr2
-
-0.5 pt setlinewidth lfiground setlinecap
-0.15 cm /lfigsolid [ lfigbox ] lfigdopath
-pop pop
-grestore
-
-grestore
-740 740 226 514 240 288 60 2056 0 LoutGr2
-
-0.5 pt setlinewidth lfiground setlinecap
-0.15 cm /lfigsolid [ lfigbox ] lfigdopath
-pop pop
-grestore
-
-grestore
-end end restore
-grestore
-0 3238(Nested)m 722(de\207nitions)s 1783(may)s 2249(themselv)s 3(es)k
-3359(contain)s 4120(nested)s 4789(de\207nitions,)s 5906(to)s 6145(arbitrary)s
-7020(depth.)s 480 2864(There)m 1100(are)s 1454(three)s 1994(special)s
-2719(features)s 3532(which)s 4181(permit)s 4872(a)s 5045(nested)s
-5721(symbol)s 6488(or)s 6754(parameter)s 7775(to)s 8021(be)s
-8311(in)s 9(v)k 4(ok)k 2(ed)k 0 2576(outside)m
-737(its)s 1003(normal)s 1725(range;)s 2358(that)s 2766(is,)s
-3022(outside)s 3759(the)s 4096(body)s 4620(of)s 4881(the)s
-5219(enclosing)s 6179(symbol.)s 7038(The)s 7456(\207rst)s 7877(and)s
-8270(simplest)s 0 2288(of)m 267(these)s 810(features)s 1611(is)s
-1817(the)s 240 fnt83 2161 2290(body)m 2678(par)s 3(ameter)k
-240 fnt82 3677 2288(,)m 3780(an)s 4059(alternati)s 6(v)k 3(e)k
-5108(form)s 5628(of)s 5895(right)s 6401(parameter)s 13(.)k
-7502(The)s 7926(Eq)s 8245(equation)s 0 2000(formatting)m 1052(package)s
-1883([4)s 2076(,)s 2174(Chapter)s 2982(7])s 3211(is)s
-3412(a)s 3569(classic)s 4249(e)s 3(xample)k 5102(of)s
-5364(the)s 5703(use)s 6069(of)s 6331(a)s 6488(body)s
-7013(parameter)s 13(.)k 8109(In)s 8355(outline,)s 0 1712(it)m
-192(looks)s 762(lik)s 2(e)k 1174(this:)s
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 18 24
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Times-Italic
-%%+ font Helvetica
-%%+ font Symbol
-/pgsave save def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-0 LoutMargSet
-grestore
-240 fnt84 0 13840(18)m 240 fnt83 7257 13843(Chapter)m 8107(2.)s
-8381(Details)s 220 fnt35 480 13211(e)m 6(xpor)k -8(t "+" sup o)k 3(v)k 5(er)k
-480 12635(def @Eq)m 480 12347( body x)m 480 12059({)m 480 11771( def "+" ...)m 480 11483( def sup ...)m
-480 11195( def o)m 3(v)k 5(er ...)k 480 10907( ...)m 480 10331( Slope @F)m 6(ont x)k
-480 10043(})m 240 fnt82 0 9549(First)m 518(we)s 874(list)s
-1246(those)s 1828(nested)s 2518(symbols)s 3388(and)s 3813(parameters)s
-4932(that)s 5371(we)s 5727(intend)s 6404(to)s 6664(refer)s
-7194(to)s 7454(outside)s 8222(the)s 8592(body)s 0 9261(of)m
-220 fnt35 274 9258(@Eq)m 240 fnt82 815 9261(in)m 1061(an)s
-220 fnt35 1347 9258(e)m 6(xpor)k -8(t)k 240 fnt82
-2018 9261(clause,)m 2725(preceding)s 3724(the)s 4075(de\207nition)s 5052(as)s
-5305(sho)s 6(wn.)k 6092(Only)s 6628(e)s 3(xported)k
-7523(symbols)s 8375(may)s 8844(be)s 0 8973(in)m 9(v)k 4(ok)k 2(ed)k
-817(outside)s 1566(the)s 1916(body)s 2452(of)s 220 fnt35
-2725 8970(@Eq)m 240 fnt82 3203 8973(.)m 3369(The)s 3799(body)s
-4335(parameter)s 5351(is)s 5563(lik)s 2(e)k 5977(a)s
-6145(right)s 6658(parameter)s 7674(e)s 3(xcept)k 8357(that)s
-8778(the)s 0 8685(e)m 3(xported)k 892(symbols)s 1741(are)s
-2088(visible)s 2781(within)s 3449(it:)s 220 fnt35 480 8184(@Eq { {x sup 2 + y sup 2} o)m 3(v)k 5(er 2 })k
-240 fnt82 0 7686(calls)m 488(on)s 785(the)s 1133(nested)s
-1802(de\207nitions)s 2863(of)s 220 fnt35 3134 7683(@Eq)m 240 fnt82
-3672 7686(to)m 3911(produce)s 4738(the)s 5086(result)s 168 fnt78
-586 7231(2)m 240 fnt83 480 7171(x)m 240 fnt78 738 7163(+)m
-168 fnt78 1041 7231(2)m 240 fnt83 939 7171(y)m 641 0 0 0 240 288 12 480 7073 LoutGr2
-0 0 moveto xsize 0 lineto 0.05 ft setlinewidth stroke
-grestore
-
-grestore
-240 fnt78
-743 6845(2)m 240 fnt82 0 6334(The)m 416(body)s 937(parameter')s 13(s)k
-2089(v)s 6(alue)k 2644(must)s 3156(be)s 3426(enclosed)s
-4308(in)s 4539(braces.)s 5300(The)s 5715(term)s 6200(`body)s
-6800(parameter')s 7854(is)s 8051(a)s 8204(reminder)s 0 6046(that)m
-418(the)s 766(v)s 6(alue)k 1334(is)s 1544(interpreted)s
-2636(as)s 2886(if)s 3103(it)s 3295(w)s 2(as)k
-3716(within)s 4384(the)s 4732(body)s 5266(of)s 5537(the)s
-5885(symbol.)s 480 5672(A)m 710(body)s 1244(parameter)s 2257(may)s
-2723(not)s 3089(be)s 3370(e)s 3(xported,)k 4311(and)s
-4714(in)s 4957(f)s 2(act)k 5372(a)s 5537(body)s
-6071(parameter)s 7085(may)s 7550(be)s 7832(in)s 9(v)k 4(ok)k 2(ed)k
-8646(only)s 0 5384(within)m 656(the)s 991(body)s 1512(of)s
-1770(the)s 2105(enclosing)s 3063(symbol,)s 3862(not)s 4215(within)s
-4870(an)s 3(y)k 5254(nested)s 5911(de\207nitions.)s 7072(F)s 3(or)k
-7448(e)s 3(xample,)k 220 fnt35 8349 5381(x)m 240 fnt82
-8504 5384(abo)m 3(v)k 3(e)k 0 5096(may)m 471(not)s
-843(be)s 1131(in)s 9(v)k 4(ok)k 2(ed)k
-1952(within)s 220 fnt35 2626 5093(sup)m 240 fnt82 2972 5096(.)m
-3141(This)s 3623(restriction)s 4653(is)s 4869(needed)s 5611(to)s
-5855(a)s 4(v)k 4(oid)k 6443(the)s 6797(possibility)s
-7853(of)s 8130(recursion,)s 0 4808(when)m 585(the)s 943(actual)s
-1577(body)s 2121(parameter)s 3145(in)s 9(v)k 4(ok)k 2(es)k
-3935(an)s 4228(e)s 3(xported)k 5129(nested)s 5808(de\207nition)s
-6792(which)s 7443(in)s 9(v)k 4(ok)k 2(es)k
-8234(the)s 8592(body)s 0 4520(parameter)m 9(,)k 1052(etc.)s
-480 4146(The)m 932(second)s 1679(place)s 2263(where)s 2928(e)s 3(xported)k
-3844(symbols)s 4717(may)s 5207(be)s 5514(used)s 6035(is)s
-6269(in)s 6536(the)s 6909(right)s 7444(parameter)s 8482(of)s
-8778(the)s 220 fnt35 0 3855(@Open)m 240 fnt82 806 3858(symbol,)m
-1618(and)s 2022(follo)s 6(wing)k 2999(its)s 3275(alternati)s 6(v)k 3(e)k
-4329(form,)s 220 fnt35 4900 3855(@Use)m 240 fnt82 5565 3858(\(Section)m
-6418(3.34\).)s 480 3484(Exported)m 1480(nested)s 2214(symbols)s 3128(and)s
-3598(parameters)s 4761(may)s 5292(be)s 5639(made)s 6279(visible)s
-7037(within)s 7770(a)s 8002(subsequent)s 0 3196(de\207nition)m 974(or)s
-1233(macro)s 1883(by)s 2177(preceding)s 3173(it)s 3365(with)s
-3847(an)s 220 fnt35 4130 3193(impor)m -8(t)k 240 fnt82
-4803 3196(clause,)m 5507(lik)s 2(e)k 5919(this:)s 220 fnt35
-480 2695(impor)m -8(t @Eq)k 480 2407(def p)m 6(ythag { sqr)k -8(t { x sup 2 + y sup 2 } })k
-240 fnt82 0 1908(Note)m 548(ho)s 6(we)k 6(v)k 3(er)k
-1444(that)s 220 fnt35 1889 1905(p)m 6(ythag)k 240 fnt82
-2617 1908(can)m 3033(only)s 3540(be)s 3849(used)s 4374(with)s
-4883(some)s 5471(in)s 9(v)k 4(ocation)k 6552(of)s
-220 fnt35 6850 1905(@Eq)m 240 fnt82 7328 1908(:)m 7521(within)s
-8216(the)s 8592(body)s 0 1620(parameter)m 1036(of)s 1329(an)s
-1635(in)s 9(v)k 4(ocation)k 2711(of)s 220 fnt35
-3005 1617(@Eq)m 240 fnt82 3483 1620(,)m 3612(within)s 4303(the)s
-4673(right)s 5207(parameter)s 6243(of)s 6537(an)s 220 fnt35
-6842 1617(@Eq&&tag @Open)m 240 fnt82 8737 1620(,)m 8867(or)s 0 1332(follo)m 6(wing)k
-977(a)s 220 fnt35 1143 1329(@Use { @Eq ...)m 13( })k 240 fnt82
-2798 1332(.)m 2962(There)s 3575(may)s 4041(be)s 4323(se)s 6(v)k 3(eral)k
-5045(symbols)s 5894(in)s 6137(the)s 220 fnt35 6485 1329(impor)m -8(t)k
-240 fnt82 7158 1332(clause.)m 480 958(In)m 760(a)s 951(similar)s
-1698(w)s 2(ay)k 2174(to)s 220 fnt35 2438 955(impor)m -8(t)k
-240 fnt82 3051 958(,)m 3183(a)s 3374(de\207nition)s 4373(may)s
-4864(be)s 5171(preceded)s 6117(by)s 220 fnt35 6436 955(e)m 6(xtend)k
-240 fnt82 7162 958(follo)m 6(wed)k 8089(by)s 8408(a)s
-8599(sym)s 8998(-)s 0 670(bol)m 361(name:)s
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 19 25
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Italic
-%%+ font Times-Bold
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-1 LoutMargSet
-grestore
-240 fnt83 0 13843(2.3.)m 454(Nested)s 1171(de\207nitions,)s 2261(body)s
-2783(par)s 3(ameter)k 2(s,)k 3961(e)s 4(xtend,)k
-4674(import,)s 5405(and)s 5831(e)s 4(xport)k 240 fnt84
-8832 13840(19)m 220 fnt35 480 13207(e)m 6(xtend @Eq)k 480 12919(def p)m 6(ythag { sqr)k -8(t { x sup 2 + y sup 2 } })k
-240 fnt82 0 12420(The)m 418(ef)s 6(fect)k 1003(of)s
-1264(this)s 1649(is)s 1849(just)s 2243(as)s 2483(though)s
-3195(the)s 3533(de\207nition)s 4496(of)s 220 fnt35 4757 12417(p)m 6(ythag)k
-240 fnt82 5447 12420(had)m 5841(occurred)s 6724(directly)s 7497(after)s
-7982(the)s 8319(e)s 3(xisting)k 0 12132(de\207nitions)m 1058(within)s
-220 fnt35 1722 12129(@Eq)m 240 fnt82 2200 12132(,)m 2303(with)s
-220 fnt35 2782 12129(p)m 6(ythag)k 240 fnt82 3479 12132(added)m
-4105(to)s 220 fnt35 4340 12129(@Eq)m 240 fnt82 4818 12132(')m 13(s)k
-5025(e)s 3(xport)k 5689(list.)s 6140(This)s 6612(is)s
-6819(useful)s 7454(for)s 7788(e)s 3(xtending)k 8778(the)s
-0 11844(capabilities)m 1128(of)s 1389(a)s 1545(package)s 2375(of)s
-2636(de\207nitions)s 3687(lik)s 2(e)k 220 fnt35 4088 11841(@Eq)m
-240 fnt82 4616 11844(without)m 5397(modifying)s 6437(its)s 6703(source)s
-7373(\207le.)s 7832(The)s 8249(essential)s 0 11556(dif)m 6(ferences)k
-1106(to)s 220 fnt35 1346 11553(impor)m -8(t)k 240 fnt82
-2020 11556(are)m 2368(that)s 2787(all)s 3081(the)s 3430(symbols)s
-4280(of)s 220 fnt35 4552 11553(@Eq)m 240 fnt82 5091 11556(become)m
-5892(visible)s 6586(within)s 220 fnt35 7255 11553(p)m 6(ythag)k
-240 fnt82 7896 11556(,)m 8004(not)s 8371(just)s 8778(the)s
-0 11268(e)m 3(xported)k 892(ones,)s 1438(and)s 1842(only)s
-2322(one)s 2724(symbol)s 3484(may)s 3950(follo)s 6(w)k
-4622(the)s 220 fnt35 4970 11265(e)m 6(xtend)k 240 fnt82
-5671 11268(k)m 2(e)k 3(yw)k 2(ord.)k 480 10894(Actually)m 15(,)k
-1399(more)s 1951(than)s 2424(one)s 2831(symbol)s 3595(may)s
-4066(follo)s 6(w)k 220 fnt35 4743 10891(e)m 6(xtend)k
-240 fnt82 5384 10894(,)m 5495(b)s 4(ut)k 5862(this)s
-6262(usage)s 6868(indicates)s 7772(a)s 7943(`path)s 8496(name')s
-0 10606(of)m 271(the)s 619(symbol.)s 1488(F)s 3(or)k
-1877(e)s 3(xample,)k 220 fnt35 480 10105(e)m 6(xtend @DocumentLa)k 6(y)k 4(out @Repor)k -8(tLa)k 6(y)k 4(out)k
-480 9817(def @K)m 8(e)k 4(yw)k 2(ords ...)k 240 fnt82
-0 9319(causes)m 676(the)s 1026(de\207nition)s 2002(of)s 220 fnt35
-2275 9316(@K)m 8(e)k 4(yw)k 2(ords)k 240 fnt82
-3502 9319(to)m 3743(occur)s 4335(directly)s 5120(after)s 5618(the)s
-5968(e)s 3(xisting)k 6777(de\207nitions)s 7840(of)s 220 fnt35
-8113 9316(@Repor)m -8(t)k 240 fnt82 8998 9319(-)m 220 fnt35
-0 9028(La)m 6(y)k 4(out)k 240 fnt82 645 9031(,)m
-752(which)s 1394(itself)s 1942(lies)s 2324(within)s 220 fnt35
-2992 9028(@DocumentLa)m 6(y)k 4(out)k 240 fnt82 4860 9031(.)m
-480 8657(A)m 702(named)s 1390(parameter)s 2395(may)s 2853(also)s
-3283(be)s 3556(preceded)s 4469(by)s 4754(an)s 220 fnt35
-5029 8654(impor)m -8(t)k 240 fnt82 5694 8657(clause.)m 6386(As)s
-6695(usual,)s 7299(the)s 7638(meaning)s 8507(is)s 8708(that)s
-0 8369(the)m 336(visible)s 1016(local)s 1522(de\207nitions)s 2570(of)s
-2828(the)s 3163(import)s 3847(symbol\(s\))s 4839(are)s 5173(visible)s
-5853(within)s 6508(the)s 6843(body)s 7364(\(the)s 7778(def)s 2(ault)k
-8486(v)s 6(alue\))k 0 8081(of)m 281(the)s 640(named)s
-1347(parameter)s 13(.)k 2463(But)s 2879(furthermore,)s 4137(those)s
-4709(symbols)s 5569(will)s 6005(be)s 6298(visible)s 7002(within)s
-7681(all)s 7985(in)s 9(v)k 4(ocations)k 0 7793(of)m
-271(the)s 619(parameter)s 13(.)k 1724(F)s 3(or)k
-2113(e)s 3(xample,)k 3027(suppose)s 3855(we)s 4190(de\207ne)s
-220 fnt35 480 7292(def @Diag)m 480 7004( impor)m -8(t @Algebr)k 2(a named line)k 4(width { 1p })k
-480 6716( impor)m -8(t @Algebr)k 2(a named dashlength { 2p })k 480 6428( ...)m 240 fnt82
-0 5977(Then,)m 599(if)s 220 fnt35 816 5974(@Algebr)m 2(a)k
-240 fnt82 1847 5977(e)m 3(xports)k 2599(symbols)s 220 fnt35
-3448 5974(+)m 240 fnt82 3568 5977(,)m 220 fnt35 3675 5974(-)m
-240 fnt82 3739 5977(,)m 3846(and)s 4250(so)s 4516(on,)s
-4863(we)s 5198(may)s 5664(write)s 220 fnt35 480 5476(@Diag)m
-480 5188( line)m 4(width { 1f - 2p })k 480 4900( dashlength { 1f + 2p })m 240 fnt82 0 4401(using)m
-565(the)s 905(symbols)s 1747(from)s 220 fnt35 2263 4398(@Algebr)m 2(a)k
-240 fnt82 3234 4401(.)m 3391(There)s 3996(may)s 4454(be)s
-4729(se)s 6(v)k 3(eral)k 5443(symbols)s 6285(after)s
-6773(the)s 220 fnt35 7114 4398(impor)m -8(t)k 240 fnt82
-7779 4401(k)m 2(e)k 3(yw)k 2(ord.)k 8766(All)s
-0 4113(these)m 558(symbols)s 1418(share)s 1990(an)s 2284(important)s
-3285(restriction:)s 4429(the)s 3(y)k 4904(may)s 5381(not)s
-5759(ha)s 4(v)k 3(e)k 6271(parameters.)s 7434(This)s
-7921(is)s 8143(necessary)s 0 3825(because)m 841(Lout)s 1382(w)s 2(ould)k
-2065(be)s 2376(unable)s 3098(to)s 3366(determine)s 4406(suitable)s
-5233(v)s 6(alues)k 5918(for)s 6284(an)s 3(y)k
-6710(such)s 7234(parameters,)s 8417(if)s 8663(the)s 3(y)k
-0 3537(did)m 364(e)s 3(xist.)k 480 3163(As)m 814(an)s
-1115(e)s 3(xception)k 2116(to)s 2373(the)s 2738(rule)s
-3183(just)s 3605(gi)s 6(v)k 3(en,)k 4253(a)s
-4436(named)s 5150(parameter)s 6181(may)s 6665(import)s 7379(the)s
-7745(symbol)s 8522(it)s 8732(is)s 8960(a)s 0 2875(parameter)m
-1014(of:)s 220 fnt35 480 2374(e)m 6(xpor)k -8(t @Cell)k
-480 2086(def @Tb)m 4(l)k 480 1798( impor)m -8(t @Tb)k 4(l named @F)k 6(or)k -5(mat { ...)k 13( })k
-240 fnt82 0 1302(In)m 274(this)s 688(e)s 3(xample)k
-1569(the)s 1936(e)s 3(xported)k 2846(de\207nitions)s 3925(of)s
-220 fnt35 4215 1299(@Tb)m 4(l)k 240 fnt82 4802 1302(\(i.e.)m
-220 fnt35 5235 1299(@Cell)m 240 fnt82 5820 1302(\))m 5966(will)s
-6411(be)s 6711(visible)s 7422(within)s 220 fnt35 8109 1299(@F)m 6(or)k -5(mat)k
-240 fnt82 9022 1302(.)m 0 1014(Ho)m 6(we)k 6(v)k 3(er)k 9(,)k
-984(the)s 3(y)k 1472(may)s 1963(only)s 2467(be)s
-2774(used)s 3296(in)s 3563(actual)s 4213(parameters,)s 5392(not)s
-5782(in)s 6050(the)s 6423(def)s 2(ault)k 7168(v)s 6(alue)k
-7761(of)s 8057(the)s 8430(named)s 0 726(parameter)m 13(.)k
-1098(This)s 1567(is)s 1769(o)s 6(wing)k 2408(to)s
-2639(implementation)s 4189(problems:)s 5237(at)s 5462(the)s 5803(time)s
-6275(the)s 6616(def)s 2(ault)k 7329(v)s 6(alue)k
-7890(of)s 220 fnt35 8153 723(@F)m 6(or)k -5(mat)k
-
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 20 26
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Times-Italic
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-0 LoutMargSet
-grestore
-240 fnt84 0 13840(20)m 240 fnt83 7257 13843(Chapter)m 8107(2.)s
-8381(Details)s 240 fnt82 0 13205(is)m 210(read,)s 728(the)s
-1076(e)s 3(xported)k 1968(symbols)s 2817(ha)s 4(v)k 3(e)k
-3318(not)s 3684(been)s 4193(read)s 4662(and)s 5066(are)s
-5413(consequently)s 6730(not)s 7096(kno)s 6(wn.)k 480 12831(Since)m
-220 fnt35 1064 12828(@Cell)m 240 fnt82 1706 12831(is)m 1913(nested)s
-2579(within)s 220 fnt35 3244 12828(@Tb)m 4(l)k 240 fnt82
-3753 12831(,)m 3857(the)s 4202(v)s 6(alue)k 4766(of)s
-5034(an)s 5314(in)s 9(v)k 4(ocation)k 6365(of)s
-220 fnt35 6633 12828(@Cell)m 240 fnt82 7275 12831(may)m 7738(depend)s
-8485(on)s 8778(the)s 0 12543(v)m 6(alue)k 582(of)s
-868(parameters)s 1980(of)s 220 fnt35 2266 12540(@Tb)m 4(l)k
-240 fnt82 2775 12543(.)m 2953(If)s 220 fnt35 3198 12540(@Cell)m
-240 fnt82 3857 12543(is)m 4082(used)s 4593(within)s 5276(an)s
-5573(actual)s 220 fnt35 6213 12540(@F)m 6(or)k -5(mat)k
-240 fnt82 7200 12543(parameter)m 9(,)k 8267(its)s 8558(v)s 6(alue)k
-0 12255(depends)m 833(on)s 1126(the)s 1471(v)s 6(alue)k
-2035(of)s 2303(parameters)s 3397(of)s 3665(the)s 4009(in)s 9(v)k 4(ocation)k
-5060(of)s 220 fnt35 5327 12252(@Tb)m 4(l)k 240 fnt82
-5893 12255(of)m 6160(which)s 6799(the)s 220 fnt35 7143 12252(@F)m 6(or)k -5(mat)k
-240 fnt82 8112 12255(parameter)m 0 11967(is)m 210(a)s 376(part.)s
-480 11593(A)m 710(de\207nition,)s 1734(macro,)s 2438(or)s 2697(named)s
-3393(parameter)s 4407(may)s 4873(ha)s 4(v)k 3(e)k
-5374(se)s 6(v)k 3(eral)k 6096(alternati)s 6(v)k 3(e)k
-7150(names,)s 7868(lik)s 2(e)k 8280(this:)s 220 fnt35
-480 11092(macro @CD @CentredDispla)m 6(y @CenteredDispla)k 6(y { ...)k 13( })k 240 fnt82
-0 10594(This)m 489(is)s 713(useful)s 1366(for)s 1718(abbre)s 6(viated)k
-2898(and)s 3316(alternati)s 6(v)k 3(e)k 4384(spellings,)s
-5355(as)s 5618(sho)s 6(wn.)k 6416(The)s 6858(names)s
-7534(appear)s 8245(together)s 9(,)k 0 10306(and)m 404(the)s 3(y)k
-867(may)s 1333(subsequently)s 2637(be)s 2919(used)s 3416(interchangeably)s 15(.)k
-480 9932(If)m 698(one)s 1088(name)s 1649(of)s 1908(a)s
-2062(symbol)s 2809(appears)s 3578(in)s 3809(an)s 4079(e)s 3(xport)k
-4735(or)s 4982(import)s 5666(list,)s 6052(its)s 6316(other)s
-6854(names)s 7504(are)s 7838(automaticaly)s 0 9644(included)m 882(as)s
-1132(well,)s 1650(and)s 2054(should)s 2751(not)s 3117(also)s
-3555(appear)s 4252(in)s 4495(the)s 4843(list.)s 240 fnt84
-0 8851(2.4.)m 471(Filter)s 4(ed)k 1330(right)s 1894(and)s
-2335(body)s 2897(parameters)s 240 fnt82 480 8374(A)m 719(right)s
-1239(or)s 1507(body)s 2050(parameter)s 3073(may)s 3548(be)s
-3839(\207ltered)s 4582(by)s 4885(some)s 5455(other)s 6015(computer)s
-6987(program)s 7866(before)s 8541(being)s 0 8086(included)m 882(by)s
-1176(Lout.)s 1792(As)s 2109(an)s 2392(e)s 3(xample)k
-3255(of)s 3526(such)s 4022(a)s 4188(program)s 5058(we)s
-5393(will)s 5819(use)s 6194(the)s 6542(Unix)s 220 fnt35
-7076 8083(sor)m -8(t)k 240 fnt82 7506 8086(command:)m 220 fnt35
-480 7587(sor)m -8(t -o out\207le in\207le)k 240 fnt82 0 7133(This)m 499(causes)s
-1198(\207le)s 220 fnt35 1582 7130(out\207le)m 240 fnt82 2243 7133(to)m
-2505(contain)s 3290(a)s 3480(sorted)s 4145(cop)s 2(y)k
-4687(of)s 4981(\207le)s 220 fnt35 5366 7130(in\207le)m 240 fnt82
-5808 7133(.)m 5996(W)s 19(e)k 6388(incorporate)s 7556(this)s
-7975(into)s 8424(a)s 8614(Lout)s 0 6845(de\207nition)m 974(as)s
-1224(follo)s 6(ws:)k 220 fnt35 480 6393(def @Sor)m -8(t)k
-480 6105( named @Options {})m 480 5817( r)m -3(ight x)k 480 5529({)m 480 5241( def @Filter { sor)m -8(t @Options -o @FilterOut @FilterIn })k
-480 4665( lines @Break x)m 480 4377(})m 240 fnt82 0 3883(The)m 440(presence)s
-1345(within)s 220 fnt35 2026 3880(@Sor)m -8(t)k 240 fnt82
-2728 3883(of)m 3012(a)s 3191(de\207nition)s 4178(of)s 4462(a)s
-4641(symbol)s 5414(called)s 220 fnt35 6055 3880(@Filter)m 240 fnt82
-6837 3883(tells)m 7298(Lout)s 7823(that)s 8254(the)s 8615(right)s
-0 3595(parameter)m 1057(of)s 220 fnt35 1372 3592(@Sor)m -8(t)k
-240 fnt82 2104 3595(is)m 2358(to)s 2640(be)s 2966(\207ltered)s
-3743(before)s 4453(inclusion.)s 5537(When)s 220 fnt35 6210 3592(@Sor)m -8(t)k
-240 fnt82 6942 3595(is)m 7196(in)s 9(v)k 4(ok)k 2(ed,)k
-220 fnt35 8103 3592(@Filter)m 240 fnt82 8916 3595(is)m 0 3307(e)m 6(v)k 6(aluated)k
-978(and)s 1399(its)s 1692(v)s 6(alue)k 2277(e)s 3(x)k 3(ecuted)k
-3196(as)s 3463(a)s 3646(system)s 4387(command.)s 5512(In)s
-5785(addition)s 6643(to)s 6899(the)s 7264(symbols)s 8130(ordinarily)s
-0 3019(a)m 4(v)k 6(ailable)k 908(within)s 1576(the)s
-1924(body)s 2458(of)s 220 fnt35 2729 3016(@Filter)m 240 fnt82
-3438 3019(,)m 3545(there)s 4078(are)s 4425(three)s 4958(others:)s
-220 fnt35 0 2513(@FilterIn)m 240 fnt82 1920 2516(the)m 2273(name)s
-2852(of)s 3128(a)s 3299(\207le)s 3665(which)s 4312(will,)s
-4795(at)s 5032(the)s 5385(time)s 5870(the)s 6223(system)s
-6952(command)s 7959(is)s 8175(e)s 3(x)k 3(ecuted,)k
-1920 2228(contain)m 2726(the)s 3119(actual)s 3789(right)s 4345(or)s
-4649(body)s 5228(parameter)s 6287(of)s 6603(the)s 6996(symbol,)s
-7853(e)s 3(xactly)k 8639(as)s 8934(it)s 1920 1940(appears)m
-2701(in)s 2944(the)s 3292(input)s 3844(\207le;)s 220 fnt35
-0 1434(@FilterOut)m 240 fnt82 1920 1437(the)m 2305(name)s 2916(of)s
-3224(a)s 3427(\207le)s 3826(of)s 4134(Lout)s 4683(te)s 3(xt)k
-5135(whose)s 5840(contents)s 6726(Lout)s 7275(will)s 7738(read)s
-8244(after)s 8778(the)s 1920 1149(system)m 2657(command)s 3673(has)s
-4057(\207nished,)s 4936(as)s 5200(a)s 5380(replacement)s 6620(for)s
-6972(what)s 7511(w)s 2(as)k 7946(put)s 8326(into)s
-8765(\207le)s 220 fnt35 1920 858(@FilterIn)m 240 fnt82 2798 861(;)m
-220 fnt35 0 374(@FilterErr)m 240 fnt82 1920 377(the)m 2273(name)s
-2852(of)s 3129(a)s 3300(\207le)s 3667(that)s 4090(Lout)s
-4608(will)s 5039(attempt)s 5820(to)s 6065(read)s 6539(after)s
-7041(the)s 7394(system)s 8124(command)s
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 21 27
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Italic
-%%+ font Times-Bold
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-1 LoutMargSet
-grestore
-240 fnt83 0 13843(2.4.)m 454(F)s 10(ilter)k 8(ed)k
-1271(right)s 1800(and)s 2226(body)s 2748(par)s 3(ameter)k 2(s)k
-240 fnt84 8839 13840(21)m 240 fnt82 1920 13205(has)m 2281(\207nished,)s
-3137(containing)s 4191(error)s 4705(messages)s 5649(produced)s 6589(by)s
-6874(the)s 7213(command)s 8206(that)s 8614(Lout)s 1920 12917(will)m
-2346(pass)s 2809(on)s 3106(to)s 3345(the)s 3693(user)s
-4151(as)s 4401(non-f)s 2(atal)k 5316(errors.)s 6036(Use)s
-6464(of)s 6735(this)s 7131(\207le)s 7492(is)s 7702(optional.)s
-0 12414(It)m 205(is)s 415(a)s 581(f)s 2(atal)k
-1057(error)s 1580(for)s 1918(the)s 2266(system)s 2990(command)s
-3992(to)s 4231(return)s 4858(a)s 5024(non-zero)s 5927(status.)s
-480 12040(No)m 6(w)k 1001(the)s 220 fnt35 1356 12037(sor)m -8(t)k
-240 fnt82 1793 12040(command)m 2802(has)s 3179(options)s 220 fnt35
-3942 12037(-u)m 240 fnt82 4190 12040(for)m 4535(deleting)s 5365(duplicate)s
-6304(lines,)s 6869(and)s 220 fnt35 7280 12037(-r)m 240 fnt82
-7493 12040(for)m 7838(re)s 6(v)k 3(ersing)k 8778(the)s
-0 11752(sorting)m 717(order)s 13(.)k 1372(So)s 1678(the)s
-2026(result)s 2616(of)s 220 fnt35 480 11251(@Sor)m -8(t)k
-480 10963( @Options { -r -u })m 480 10675({)m 480 10387(A)m 6(usten, J)k 4(ane)k
-480 10099(Dic)m 4(k)k 4(ens)k 3(, Char)k -3(les)k
-480 9811(Eliot, George)m 480 9523(Hardy)m 22(, )k 11(Thomas)k 480 9235(Bront{@Char edieresis}, Char)m -3(lotte)k
-480 8947(})m 240 fnt82 0 8453(is)m 480 8000(Hardy)m 15(,)k
-1170(Thomas)s 480 7712(Eliot,)m 1051(Geor)s 4(ge)k 480 7424(Dick)m 2(ens,)k
-1369(Charles)s 480 7136(Bront\353,)m 1238(Charlotte)s 480 6848(Austen,)m 1265(Jane)s
-0 6364(Unlik)m 2(e)k 705(all)s 998(the)s 1347(other)s
-1898(e)s 3(xamples)k 2849(in)s 3093(this)s 3489(manual,)s
-4300(this)s 4697(output)s 5369(is)s 5579(simulated.)s 6673(This)s
-7149(w)s 2(as)k 7570(done)s 8093(so)s 8359(that)s
-8778(the)s 0 6076(ability)m 661(to)s 896(format)s 1588(this)s
-1980(manual)s 2735(is)s 2942(not)s 3304(dependent)s 4344(on)s
-4637(the)s 4981(e)s 3(xistence)k 5919(of)s 6187(the)s
-6531(Unix)s 220 fnt35 7061 6073(sor)m -8(t)k 240 fnt82
-7487 6076(command,)m 8534(and)s 8934(it)s 0 5788(highlights)m 1008(the)s
-1356(f)s 2(act)k 1771(that)s 2189(\207ltered)s 2923(actual)s
-3548(parameters)s 4646(are)s 4993(by)s 5287(their)s 5784(nature)s
-6437(of)s 6708(uncertain)s 7654(portability)s 15(.)k 480 5414(There)m
-1114(is)s 1345(no)s 1660(need)s 2191(for)s 2550(an)s
-2855(actual)s 3501(\207ltered)s 4257(parameter)s 5292(to)s 5552(obe)s 3(y)k
-6091(the)s 6460(le)s 3(xical)k 7169(rules)s 7706(of)s
-7998(Lout,)s 8579(since)s 0 5126(it)m 207(is)s 432(passed)s
-1143(directly)s 1941(to)s 2195(the)s 2558(other)s 3124(program.)s
-4113(Ho)s 6(we)k 6(v)k 3(er)k 9(,)k
-5088(Lout)s 5615(must)s 6155(be)s 6452(able)s 6921(to)s
-7175(w)s 2(ork)k 7741(out)s 8122(where)s 8778(the)s
-0 4838(parameter)m 1034(ends,)s 1601(which)s 2263(gi)s 6(v)k 3(es)k
-2831(rise)s 3251(to)s 3511(the)s 3879(follo)s 6(wing)k
-4877(rules.)s 5525(As)s 5863(with)s 6365(a)s 6552(body)s
-7106(parameter)s 9(,)k 8179(a)s 8366(symbol)s 220 fnt35
-0 4547(@Sym)m 240 fnt82 730 4550(with)m 1235(a)s 1423(\207ltered)s
-2180(parameter)s 3217(must)s 3764(be)s 4069(in)s 9(v)k 4(ok)k 2(ed)k
-4906(in)s 5172(either)s 5798(the)s 6168(form)s 220 fnt35
-6715 4547(@Sym { ...)m 13( })k 240 fnt82 7949 4550(or)m 8231(the)s
-8602(form)s 220 fnt35 0 4259(@Sym @Begin ...)m 13( @End @Sym)k 240 fnt82
-3120 4262(,)m 3251(plus)s 3725(options)s 4505(as)s 4779(usual.)s
-5472(In)s 5753(the)s 6125(former)s 6858(case,)s 7400(braces)s
-8085(within)s 8778(the)s 0 3974(actual)m 625(parameter)s 1639(must)s
-2164(match;)s 2860(in)s 3103(the)s 3451(latter)s 4000(case,)s
-4518(the)s 4866(actual)s 5491(parameter)s 6505(may)s 6971(not)s
-7337(contain)s 220 fnt35 8098 3971(@End)m 240 fnt82 8699 3974(.)m
-480 3600(If)m 725(an)s 1024(actual)s 1664(\207ltered)s 2414(parameter)s
-3444(contains)s 220 fnt35 4307 3597(@Include)m 240 fnt82 5229 3600(,)m
-5352(this)s 5764(is)s 5989(tak)s 2(en)k 6578(to)s
-6833(be)s 3(gin)k 7434(a)s 7616(Lout)s 220 fnt35
-8144 3597(@Include)m 240 fnt82 0 3312(directi)m 6(v)k 3(e)k
-882(in)s 1125(the)s 1473(usual)s 2033(form)s 2557(\(Section)s
-3410(3.40\):)s 220 fnt35 480 2821(@Sor)m -8(t {)k 480 2533(A)m 6(usten, J)k 4(ane)k
-480 2245(@Include { authors })m 480 1957(Hardy)m 22(, )k 11(Thomas)k 480 1669(})m
-240 fnt82 0 1175(The)m 421(included)s 1296(\207le)s 1649(becomes)s
-2530(part)s 2954(of)s 220 fnt35 3217 1172(@FilterIn)m 240 fnt82
-4095 1175(,)m 4195(b)s 4(ut)k 4549(an)s 3(y)k
-4939(braces,)s 220 fnt35 5649 1172(@Include)m 240 fnt82 6571 1175(,)m
-6670(or)s 220 fnt35 6922 1172(@End)m 240 fnt82 7576 1175(within)m
-8236(it)s 8421(are)s 8760(not)s 0 887(noticed)m 762(by)s
-1056(Lout.)s
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 22 28
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Times-Italic
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-0 LoutMargSet
-grestore
-240 fnt84 0 13840(22)m 240 fnt83 7257 13843(Chapter)m 8107(2.)s
-8381(Details)s 240 fnt82 480 13205(The)m 928(\207rst)s 1380(character)s
-2335(of)s 2627(\207le)s 220 fnt35 3009 13202(@FilterIn)m 240 fnt82
-3968 13205(will)m 4415(be)s 4718(the)s 5087(\207rst)s 5539(non-white)s
-6586(space)s 7194(character)s 8149(follo)s 6(wing)k 0 12917(the)m
-353(opening)s 220 fnt35 1184 12914({)m 240 fnt82 1314 12917(or)m
-220 fnt35 1579 12914(@Begin)m 240 fnt82 2348 12917(,)m 2461(or)s
-2726(the)s 3080(\207rst)s 3517(character)s 4457(of)s 4734(an)s
-5023(included)s 5911(\207le)s 6278(if)s 220 fnt35 6501 12914(@Include)m
-240 fnt82 7489 12917(comes)m 8157(\207rst.)s 8698(The)s 0 12629(second-last)m
-1146(character)s 2091(of)s 2374(\207le)s 220 fnt35 2746 12626(@FilterIn)m
-240 fnt82 3696 12629(will)m 4133(be)s 4427(the)s 4786(last)s
-5189(non-white)s 6226(space)s 6825(character)s 7770(preceding)s 8778(the)s
-0 12341(closing)m 220 fnt35 745 12338(})m 240 fnt82 871 12341(or)m
-220 fnt35 1132 12338(@End @Sym)m 240 fnt82 2454 12341(,)m 2563(or)s
-2824(the)s 3174(last)s 3567(character)s 4503(of)s 4775(an)s
-5060(included)s 5944(\207le)s 6307(if)s 220 fnt35 6526 12338(@Include)m
-240 fnt82 7510 12341(comes)m 8174(last.)s 8671(One)s 0 12053(ne)m 6(wline)k
-833(character)s 1794(is)s 2030(al)s 2(w)k 2(ays)k
-2768(appended)s 3770(and)s 4201(is)s 4437(the)s 4812(last)s
-5229(character)s 6190(of)s 6487(\207le)s 220 fnt35 6875 12050(@FilterIn)m
-240 fnt82 7753 12053(.)m 7943(This)s 8446(ef)s 6(fects)k
-0 11765(a)m 206(compromise)s 1484(between)s 2378(the)s 2766(Lout)s
-3319(con)s 9(v)k 3(ention,)k 4518(that)s 4976(spaces)s
-5691(follo)s 6(wing)k 220 fnt35 6708 11762({)m 240 fnt82
-6873 11765(or)m 7172(preceding)s 220 fnt35 8208 11762(})m 240 fnt82
-8372 11765(are)m 8760(not)s 0 11477(signi\207cant,)m 1103(with)s 1585(the)s
-1933(Unix)s 2467(con)s 9(v)k 3(ention)k 3576(that)s
-3994(all)s 4287(te)s 3(xt)k 4702(\207les)s 5151(end)s
-5555(with)s 6037(a)s 6203(ne)s 6(wline)k 7010(character)s 13(.)k
-240 fnt84 0 10684(2.5.)m 471(Pr)s 4(ecedence)k 1677(and)s
-2118(associati)s 2(vity)k 3420(of)s 3692(symbols)s 240 fnt82
-480 10207(Ev)m 3(ery)k 1131(symbol)s 1920(in)s 2192(Lout)s
-2733(has)s 3132(a)s 240 fnt83 3327 10209(pr)m 8(ecedence)k
-240 fnt82 4401 10207(,)m 4538(which)s 5209(is)s 5448(a)s
-5643(positi)s 6(v)k 3(e)k 6476(whole)s 7146(number)s 13(.)k
-8057(When)s 8716(tw)s 2(o)k 0 9919(symbols)m 849(compete)s
-1715(for)s 2053(an)s 2336(object,)s 3027(the)s 3375(one)s
-3777(with)s 4259(the)s 4607(higher)s 5278(precedence)s 6409(wins)s
-6912(it.)s 7208(F)s 3(or)k 7597(e)s 3(xample,)k
-220 fnt35 480 9418(a | b / c)m 240 fnt82 0 8963(is)m 210(equi)s 6(v)k 6(alent)k
-1253(to)s 220 fnt35 1491 8960({)m 1616(a)s 1794(|)s
-1892(b)s 2067(})s 2192(/)s 2317(c)s 240 fnt82
-2482 8963(rather)m 3097(than)s 220 fnt35 3565 8960(a)m 3743(|)s
-3841({)s 3966(b)s 4141(/)s 4266(c)s 4432(})s
-240 fnt82 4496 8963(,)m 4603(because)s 220 fnt35 5415 8960(|)m
-240 fnt82 5511 8963(has)m 5881(higher)s 6551(precedence)s 7681(than)s
-220 fnt35 8150 8960(/)m 240 fnt82 8273 8963(and)m 8676(thus)s
-0 8675(wins)m 503(the)s 220 fnt35 851 8672(b)m 240 fnt82
-965 8675(.)m 480 8301(When)m 1149(the)s 1538(tw)s 2(o)k
-1988(competing)s 3092(symbols)s 3981(ha)s 4(v)k 3(e)k
-4523(equal)s 5137(precedence,)s 6359(Lout)s 6912(applies)s 7680(a)s
-7887(second)s 8651(rule.)s 0 8013(Each)m 545(symbol)s 1316(is)s
-1537(either)s 240 fnt83 2151 8015(left-associative)m 240 fnt82 3659 8013(or)m
-240 fnt83 3929 8015(right-associative)m 240 fnt82 5528 8013(.)m 5703(The)s
-6142(v)s 6(alue)k 6720(of)s 220 fnt35 7002 8010(a)m
-7180(op1)s 7564(b)s 7739(op2)s 8156(c)s 240 fnt82
-8332 8013(is)m 8553(tak)s 2(en)k 0 7725(to)m 252(be)s
-220 fnt35 547 7722({)m 672(a)s 850(op1)s 1234(b)s
-1409(})s 1534(op2)s 1951(c)s 240 fnt82 2129 7725(if)m
-2359(the)s 2720(symbols)s 3582(are)s 3942(both)s 4438(left-associati)s 6(v)k 3(e,)k
-5993(and)s 220 fnt35 6410 7722(a op1 { b op2 c })m 240 fnt82 8072 7725(if)m
-8302(the)s 3(y)k 8779(are)s 0 7437(right-associati)m 6(v)k 3(e.)k
-1733(In)s 1989(cases)s 2544(not)s 2910(co)s 3(v)k 3(ered)k
-3719(by)s 4013(these)s 4560(tw)s 2(o)k 4970(rules,)s
-5541(use)s 5916(braces.)s 480 7063(It)m 672(sometimes)s 1732(happens)s
-2554(that)s 2959(the)s 3294(result)s 3870(is)s 4067(the)s
-4402(same)s 4935(re)s 3(g)k 1(ardless)k 5937(of)s
-6195(ho)s 6(w)k 6642(the)s 6977(e)s 3(xpression)k
-8041(is)s 8237(grouped.)s 0 6775(F)m 3(or)k 382(e)s 3(xample,)k
-220 fnt35 1289 6772({)m 1414(a)s 1592(|)s 1690(b)s
-1865(})s 1990(|)s 2088(c)s 240 fnt82 2246 6775(and)m
-220 fnt35 2643 6772(a)m 2821(|)s 2919({)s 3044(b)s
-3219(|)s 3317(c)s 3483(})s 240 fnt82 3599 6775(are)m
-3939(al)s 2(w)k 2(ays)k 4643(the)s 4984(same,)s
-5575(for)s 5905(an)s 3(y)k 6295(combination)s 7541(of)s
-7805(objects,)s 8581(g)s 1(aps,)k 0 6487(and)m 416(v)s 6(ariants)k
-1230(of)s 220 fnt35 1513 6484(|)m 240 fnt82 1550 6487(.)m
-1727(In)s 1995(such)s 2504(cases)s 3071(the)s 3432(symbols)s
-4293(are)s 4653(said)s 5108(to)s 5360(be)s 240 fnt83
-5654 6489(associative)m 240 fnt82 6709 6487(,)m 6829(and)s 7245(we)s
-7593(can)s 7995(con\207dently)s 0 6199(omit)m 498(the)s 846(braces.)s
-480 5825(User)m 4(-de\207ned)k 1769(symbols)s 2618(may)s 3084(be)s
-3366(gi)s 6(v)k 3(en)k 3946(a)s 4112(precedence)s
-5243(and)s 5647(associati)s 6(vity:)k 220 fnt35 480 5324(def @Super)m
-480 5036( precedence 50)m 480 4748( associativity r)m -3(ight)k 480 4460( left x)m 480 4172( r)m -3(ight y)k
-480 3884({)m 480 3596( @OneRo)m 3(w { | -2p @F)k 6(ont y ^/0.5fk x })k 480 3308(})m
-240 fnt82 0 2814(The)m 3(y)k 541(come)s 1113(just)s
-1516(after)s 2010(an)s 3(y)k 220 fnt35 2405 2811(into)m
-240 fnt82 2809 2814(clause)m 3460(and)s 3862(before)s 4526(an)s 3(y)k
-4921(parameter)s 5933(de\207nitions.)s 7105(The)s 7531(precedence)s 8660(may)s
-0 2526(be)m 280(an)s 3(y)k 674(whole)s 1313(number)s
-2101(between)s 2952(10)s 3245(and)s 3646(100,)s 4110(and)s
-4512(if)s 4726(omitted)s 5511(is)s 5719(assigned)s 6598(the)s
-6943(v)s 6(alue)k 7509(100.)s 8030(The)s 8455(higher)s
-0 2238(the)m 373(number)s 9(,)k 1227(the)s 1600(higher)s
-2296(the)s 2669(precedence.)s 3933(The)s 4386(associati)s 6(vity)k
-5654(may)s 6145(be)s 220 fnt35 6452 2235(left)m 240 fnt82
-6825 2238(or)m 220 fnt35 7109 2235(r)m -3(ight)k 240 fnt82
-7534 2238(,)m 7666(and)s 8095(if)s 8338(omitted)s 0 1950(def)m 2(aults)k
-805(to)s 220 fnt35 1044 1947(r)m -3(ight)k 240 fnt82
-1469 1950(.)m 1633(Lout')s 13(s)k 2295(symbols)s 3144(ha)s 4(v)k 3(e)k
-3645(the)s 3993(follo)s 6(wing)k 4970(precedences)s 6189(and)s
-6593(associati)s 6(vities:)k
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 23 29
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Italic
-%%+ font Times-Bold
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-1 LoutMargSet
-grestore
-240 fnt83 0 13843(2.5.)m 454(Pr)s 8(ecedence)k 1614(and)s
-2040(associativity)s 3290(of)s 3571(symbols)s 240 fnt84 8833 13840(23)m
-240 fnt82 480 13170(Precedence)m 1904(Associati)s 6(vity)k 3493(Symbols)s
-969 12594(5)m 2011(associati)s 6(v)k 3(e)k 220 fnt35
-3493 12591(/ ^/ // ^//)m 240 fnt82 965 12306(6)m 2011(associati)s 6(v)k 3(e)k
-220 fnt35 3493 12303(| ^| || ^||)m 240 fnt82 968 12018(7)m 2011(associati)s 6(v)k 3(e)k
-220 fnt35 3493 12015(& ^&)m 240 fnt82 968 11730(7)m 2011(associati)s 6(v)k 3(e)k
-220 fnt35 3493 11727(&)m 240 fnt82 3695 11730(in)m 3938(the)s
-4286(form)s 4810(of)s 5081(one)s 5483(or)s 5742(more)s
-6289(white)s 6876(space)s 7463(characters)s 685 11442(10-100)m 220 fnt35
-2012 11439(left)m 240 fnt82 2360 11442(or)m 220 fnt35 2619 11439(r)m -3(ight)k
-240 fnt82 3493 11442(user)m 4(-de\207ned)k 4729(symbols)s 844 11154(100)m
-220 fnt35 2316 11151(r)m -3(ight)k 3493(@Wide)s 240 fnt82
-4207 11154(,)m 220 fnt35 4314 11151(@High)m 240 fnt82 4973 11154(,)m
-220 fnt35 5080 11151(@Gr)m 2(aphic)k 240 fnt82 6064 11154(,)m
-6171(etc.)s 854 10866(101)m 2494(-)s 220 fnt35 3493 10863(&&)m
-240 fnt82 845 10578(102)m 2011(associati)s 6(v)k 3(e)k
-220 fnt35 3493 10575(&)m 240 fnt82 3695 10578(in)m 3938(the)s
-4286(form)s 4810(of)s 5081(0)s 5256(spaces)s 850 10290(103)m
-2494(-)s 3493(Body)s 4067(parameters)s 5165(and)s 5569(right)s
-6080(parameters)s 7178(of)s 220 fnt35 7449 10287(@Open)m 240 fnt82
-0 9749(Actually)m 883(the)s 1238(precedence)s 2375(of)s 2653(juxtaposition)s
-3965(\(tw)s 2(o)k 4461(objects)s 5195(separated)s 6162(by)s
-6462(zero)s 6933(spaces\))s 7691(is)s 7908(a)s 8080(little)s
-8579(more)s 0 9461(complicated.)m 1333(If)s 1565(either)s 2170(of)s
-2443(the)s 2793(tw)s 2(o)k 3205(objects)s 3934(is)s
-4146(enclosed)s 5043(in)s 5288(braces,)s 6007(the)s 6357(precedence)s
-7489(is)s 7701(7)s 7871(as)s 8123(for)s 8463(one)s
-8867(or)s 0 9173(more)m 541(spaces.)s 1322(If)s 1545(neither)s
-2262(object)s 2899(is)s 3102(enclosed)s 3991(in)s 4227(braces,)s
-4937(the)s 5279(precedence)s 6403(is)s 6606(102)s 7014(as)s
-7257(sho)s 6(wn)k 7927(abo)s 3(v)k 3(e.)k
-8650(This)s 0 8885(complicated)m 1216(rule)s 1633(seems)s 2258(to)s
-2486(accord)s 3171(better)s 3764(with)s 4235(what)s 4750(people)s
-5434(e)s 3(xpect)k 6104(and)s 6498(need)s 6998(in)s
-7230(practice)s 8031(than)s 8490(a)s 8645(pure)s 0 8597(precedence)m
-1131(rule)s 1558(can)s 1947(do.)s 240 fnt84 0 7804(2.6.)m
-471(The)s 926(style)s 1446(and)s 1887(size)s 2314(of)s
-2586(objects)s 240 fnt82 480 7327(This)m 944(section)s 1666(e)s 3(xplains)k
-2499(ho)s 6(w)k 2948(Lout)s 3448(determines)s 4535(the)s
-4870(style)s 5365(and)s 5757(size)s 6172(of)s 6431(each)s
-6914(object.)s 7650(T)s 19(ogether)k 9(,)k 8579(these)s
-0 7039(attrib)m 4(utes)k 935(determine)s 1946(the)s 2294(object')s 13(s)k
-3088(\207nal)s 3568(appearance)s 4699(in)s 4942(the)s 5290(output.)s
-480 6665(The)m 908(style)s 1415(of)s 1686(an)s 1969(object)s
-2613(comprises)s 3633(the)s 3981(follo)s 6(wing:)k 0 6162(\213)m
-480(Which)s 1175(font)s 1620(f)s 2(amily)k 15(,)k
-2333(f)s 2(ace)k 2784(and)s 3188(size)s 3615(to)s
-3854(use)s 4229(\(also)s 4746(de\207ning)s 5584(the)s 220 fnt35
-5932 6159(f)m 240 fnt82 6050 6162(unit\);)m 0 5659(\213)m 480(Whether)s
-1363(small)s 1935(capitals)s 2715(are)s 3062(in)s 3305(ef)s 6(fect)k
-3901(or)s 4160(not;)s 0 5156(\213)m 480(What)s 1058(g)s 1(ap)k
-1456(to)s 1695(replace)s 2440(a)s 2606(single)s 3233(space)s
-3820(between)s 4674(tw)s 2(o)k 5084(objects)s 5812(by)s
-6106(\(also)s 6623(de\207ning)s 7461(the)s 220 fnt35 7809 5153(s)m
-240 fnt82 7972 5156(unit\);)m 0 4653(\213)m 480(The)s 900(interpretation)s
-2235(to)s 2465(place)s 3017(on)s 3306(white)s 3884(space)s
-4463(separating)s 5490(tw)s 2(o)k 5891(objects)s 6611(\()s
-220 fnt35 6684 4650(lout)m 240 fnt82 7033 4653(,)m 220 fnt35
-7132 4650(compress)m 240 fnt82 8077 4653(,)m 220 fnt35 8175 4650(separ)m 2(ate)k
-240 fnt82 9019 4653(,)m 220 fnt35 480 4362(troff)m 240 fnt82
-855 4365(,)m 962(or)s 220 fnt35 1221 4362(te)m 6(x)k
-240 fnt82 1566 4365(as)m 1816(in)s 2059(Section)s 2833(3.5\);)s
-0 3871(\213)m 480(The)s 908(current)s 1644(v)s 6(alue)k
-2212(of)s 2483(the)s 220 fnt35 2831 3868(y)m 240 fnt82
-2999 3871(and)m 220 fnt35 3403 3868(z)m 240 fnt82 3567 3871(units)m
-4083(of)s 4354(measurement)s 5688(\(Section)s 6541(3.6\);)s 0 3370(\213)m
-480(The)s 908(kind)s 1392(of)s 1663(paragraph)s 2676(breaking)s
-3566(to)s 3805(emplo)s 2(y)k 4575(\()s 220 fnt35
-4648 3367(adjust)m 240 fnt82 5229 3370(,)m 220 fnt35 5336 3367(r)m 2(agged)k
-240 fnt82 6005 3370(,)m 6112(etc.\))s 0 2867(\213)m 480(What)s
-1058(g)s 1(ap)k 1456(to)s 1695(insert)s 2285(between)s
-3139(the)s 3487(lines)s 3989(of)s 4260(paragraphs)s 5360(\(also)s
-5877(de\207ning)s 6715(the)s 220 fnt35 7063 2864(v)m 240 fnt82
-7232 2867(unit\);)m 0 2364(\213)m 480(Whether)s 1363(to)s 1602(permit)s
-2285(h)s 1(yphenation)k 3525(or)s 3784(not;)s 0 1861(\213)m
-480(What)s 1058(colour)s 1729(the)s 2077(object)s 2721(is)s
-2931(to)s 3170(appear)s 3867(in;)s 0 1358(\213)m 480(The)s
-908(language)s 1828(of)s 2099(the)s 2447(object;)s 0 855(\213)m
-480(Whether)s 220 fnt35 1363 852(@V)m 17(Adjust)k 240 fnt82
-2320 855(,)m 220 fnt35 2427 852(@HAdjust)m 240 fnt82 3473 855(and)m
-220 fnt35 3877 852(@P)m 26(Adjust)k 240 fnt82 4885 855(are)m
-5232(in)s 5475(ef)s 6(fect.)k 0 355(The)m 423(style)s
-925(of)s 1191(an)s 1468(object)s 2107(depends)s 2938(on)s
-3229(where)s 3864(it)s 4051(appears)s 4827(in)s 5064(the)s
-5407(\207nal)s 5882(document.)s 6984(F)s 3(or)k 7368(e)s 3(xample,)k
-8277(the)s 8619(style)s 0 67(of)m 286(a)s 467(parameter)s
-1497(depends)s 2348(on)s 2661(where)s 3316(it)s 3524(is)s
-3749(used;)s 4316(the)s 4679(style)s 5201(of)s 5488(a)s
-5669(g)s 1(alle)k 3(y)k 6319(is)s 6544(the)s
-6908(style)s 7430(of)s 7717(the)s 8080(\207rst)s 8527(tar)s 4(get)k
-
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 24 30
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Times-Italic
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-0 LoutMargSet
-grestore
-240 fnt84 0 13840(24)m 240 fnt83 7257 13843(Chapter)m 8107(2.)s
-8381(Details)s 240 fnt82 0 13205(that)m 415(it)s 603(attempts)s
-1459(to)s 1695(attach)s 2318(itself)s 2862(to.)s 3208(Of)s
-3529(course,)s 4256(the)s 4600(style)s 5103(of)s 5371(an)s 3(y)k
-5764(object)s 6404(can)s 6789(be)s 7068(changed)s 7920(by)s
-8210(using)s 8778(the)s 220 fnt35 0 12914(@F)m 6(ont)k
-240 fnt82 652 12917(,)m 220 fnt35 759 12914(@Break)m 240 fnt82
-1555 12917(,)m 220 fnt35 1662 12914(@Space)m 240 fnt82 2499 12917(,)m
-220 fnt35 2606 12914(@SetColour)m 240 fnt82 3863 12917(or)m 220 fnt35
-4122 12914(@SetColor)m 240 fnt82 5197 12917(,)m 5304(and)s 220 fnt35
-5708 12914(@Language)m 240 fnt82 6959 12917(symbols.)m 480 12543(There)m 1112(are)s
-1479(no)s 1792(standard)s 2680(def)s 2(ault)k 3421(v)s 6(alues)k
-4097(for)s 4455(style,)s 5033(e)s 3(xcept)k 5734(that)s
-6172(small)s 6764(capitals)s 7564(are)s 7931(initially)s 8747(of)s 6(f,)k
-0 12255(the)m 369(interpretation)s 1734(of)s 2026(white)s 2635(space)s
-3243(is)s 3475(initially)s 220 fnt35 4292 12252(lout)m 240 fnt82
-4641 12255(,)m 4770(and)s 5195(the)s 5565(v)s 6(alues)k
-6242(of)s 6535(the)s 220 fnt35 6904 12252(y)m 240 fnt82
-7094 12255(and)m 220 fnt35 7519 12252(z)m 240 fnt82 7705 12255(units)m
-8242(are)s 8611(zero.)s 0 11967(Therefore)m 1000(one)s 1406(must)s
-1935(ensure)s 2619(that)s 3041(the)s 3392(root)s 3841(g)s 1(alle)k 3(y)k
-4479(or)s 4742(each)s 5241(of)s 5515(its)s 5795(components)s
-7007(is)s 7221(enclosed)s 8120(in)s 220 fnt35 8367 11964(@F)m 6(ont)k
-240 fnt82 9019 11967(,)m 220 fnt35 0 11676(@Break)m 240 fnt82
-796 11679(,)m 220 fnt35 906 11676(@SetColour)m 240 fnt82 2166 11679(or)m
-220 fnt35 2428 11676(@SetColor)m 240 fnt82 3503 11679(,)m 3613(and)s
-220 fnt35 4020 11676(@Language)m 240 fnt82 5274 11679(symbols.)m 6239(From)s
-6820(there)s 7356(the)s 7707(style)s 8217(is)s 8430(passed)s
-0 11391(to)m 240(incoming)s 1199(g)s 1(alle)k 3(ys)k
-1924(and)s 2330(the)s 2679(objects)s 3409(within)s 4078(them.)s
-4722(Enclosure)s 5735(in)s 220 fnt35 5980 11388(@Space)m 240 fnt82
-6878 11391(is)m 7090(not)s 7457(required)s 8313(because)s 0 11103(the)m
-220 fnt35 348 11100(s)m 240 fnt82 511 11103(unit)m 943(is)s
-1153(also)s 1591(set)s 1916(by)s 220 fnt35 2210 11100(@F)m 6(ont)k
-240 fnt82 2922 11103(\(Section)m 3775(3.5\).)s 536 10729(The)m 959(remainder)s
-1983(of)s 2249(this)s 2641(section)s 3370(e)s 3(xplains)k
-4210(ho)s 6(w)k 4667(the)s 5010(size)s 5433(of)s
-5699(each)s 6189(object)s 6829(\(its)s 7179(width)s 7777(and)s
-8176(height)s 8829(on)s 0 10441(the)m 353(printed)s 1094(page\))s
-1679(is)s 1895(determined.)s 3140(W)s 19(e)k 3514(will)s
-3946(treat)s 4434(width)s 5042(only)s 15(,)k 5566(since)s
-6118(height)s 6782(is)s 6997(determined)s 8136(in)s 8385(e)s 3(xactly)k
-0 10153(the)m 348(same)s 895(w)s 2(ay)k 15(,)k
-1384(e)s 3(xcept)k 2065(that)s 2483(the)s 2831(complications)s
-4223(introduced)s 5304(by)s 5598(paragraph)s 6611(breaking)s 7501(are)s
-7848(absent.)s 480 9779(W)m 9(ith)k 1006(three)s 1539(e)s 3(xceptions)k
-2611(\(see)s 3051(belo)s 6(w\),)k 3817(the)s 4165(width)s
-4768(of)s 5039(an)s 5323(object)s 5967(is)s 6178(as)s
-6428(lar)s 4(ge)k 6958(as)s 7208(it)s 7401(possibly)s
-8253(could)s 8844(be)s 0 9491(without)m 784(violating)s 1679(a)s
-220 fnt35 1837 9488(@Wide)m 240 fnt82 2603 9491(symbol)m 3355(or)s
-3606(intruding)s 4528(into)s 4945(the)s 5285(space)s 5864(occupied)s
-6778(by)s 7064(neighbouring)s 8386(g)s 1(aps)k 8867(or)s
-0 9203(objects.)m 841(As)s 1158(an)s 1441(aid)s 1791(to)s
-2030(in)s 9(v)k 3(estig)k 1(ating)k 3305(this)s
-3701(rule,)s 4179(we)s 4514(will)s 4940(use)s 5315(the)s
-5663(de\207nition)s 220 fnt35 480 8702(def @TightBo)m 6(x r)k -3(ight x)k
-480 8414({)m 480 8126( "0 0 mo)m 3(v)k 5(eto xsiz)k 3(e 0 lineto xsiz)k 3(e ysiz)k 3(e lineto 0 ysiz)k 3(e lineto closepath strok)k 4(e")k
-480 7838( @Gr)m 2(aphic x)k 480 7550(})m 240 fnt82 0 7055(which)m
-657(dra)s 3(ws)k 1291(a)s 1472(box)s 1903(around)s
-2641(the)s 3004(boundary)s 3978(of)s 4265(its)s 4556(right)s
-5082(parameter)s 6111(\(Section)s 6980(3.36\))s 7543(with)s 8040(no)s
-8349(mar)s 4(gin.)k 0 6767(The)m 428(result)s 1018(of)s
-220 fnt35 480 6316(5c @Wide @TightBo)m 6(x metempsychosis)k 240 fnt82 0 5817(is)m
-2835 215 0 106 240 288 60 480 5312 LoutGr2
-0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath stroke
-grestore
-0 52(metempsychosis)m
-grestore
-0 4861(The)m 432(widest)s 1120(that)s 220 fnt35
-1542 4858(@TightBo)m 6(x metempsychosis)k 240 fnt82 4377 4861(could)m 4971(possibly)s
-5827(be)s 6113(is)s 6327(\207v)s 3(e)k 6743(centimetres,)s
-7954(and)s 8363(accord)s 8998(-)s 0 4573(ingly)m 552(that)s
-977(is)s 1194(its)s 1477(width.)s 2193(The)s 2628(same)s
-3182(applies)s 3917(to)s 220 fnt35 4163 4570(metempsychosis)m 240 fnt82
-5791 4573(,)m 5905(which)s 6554(is)s 6771(\207v)s 3(e)k
-7190(centimetres)s 8348(wide)s 8876(as)s 0 4285(well.)m 583(Note)s
-1113(carefully)s 2024(that)s 2451(there)s 2992(is)s 3211(no)s
-3513(object)s 4166(in)s 4418(this)s 4822(e)s 3(xample)k
-5694(whose)s 6371(width)s 6982(is)s 7200(equal)s 7782(to)s
-8030(the)s 8387(sum)s 8855(of)s 0 3997(the)m 348(widths)s
-1037(of)s 1308(the)s 1656(letters)s 2289(of)s 220 fnt35
-2560 3994(metempsychosis)m 240 fnt82 4188 3997(.)m 480 3623(The)m 903(\207rst)s
-1329(of)s 1595(the)s 1938(three)s 2466(e)s 3(xceptions)k
-3532(to)s 3766(the)s 4109(`as)s 4433(wide)s 4949(as)s
-5194(possible')s 6085(rule)s 6507(is)s 6712(the)s 220 fnt35
-7055 3620(@HContr)m 2(act)k 240 fnt82 8314 3623(symbol,)m 0 3335(which)m
-644(causes)s 1322(the)s 1672(width)s 2277(of)s 2551(its)s
-2829(right)s 3343(parameter)s 4360(to)s 4601(be)s 4886(reduced)s
-5703(to)s 5945(a)s 6114(reasonable)s 7194(minimum)s 8187(\(a)s
-8435(formal)s 0 3047(de\207nition)m 974(will)s 1400(not)s 1766(be)s
-2048(attempted\):)s 220 fnt35 480 2546(5c @Wide @HContr)m 2(act @TightBo)k 6(x metempsychosis)k
-240 fnt82 0 2047(produces)m 1572 215 0 106 240 288 60 480 1492 LoutGr2
-0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath stroke
-grestore
-0 52(metempsychosis)m
-grestore
-0 1041(The)m 482(object)s
-220 fnt35 1180 1038(@HContr)m 2(act @TightBo)k 6(x metempsychosis)k 240 fnt82
-5334 1041(is)m 5598(still)s 6064(\207v)s 3(e)k 6530(centimetres)s
-7735(wide,)s 8361(b)s 4(ut)k 8778(the)s 0 753(object)m
-220 fnt35 644 750(@TightBo)m 6(x metempsychosis)k 240 fnt82 3475 753(has)m
-3845(been)s 4354(reduced.)s 480 379(The)m 922(second)s 1659(of)s
-1945(the)s 2307(three)s 2855(e)s 3(xceptions)k 3940(is)s
-4165(the)s 4527(horizontal)s 5565(concatenation)s 6965(symbol)s 220 fnt35
-7739 376(|)m 240 fnt82 7851 379(\(and)m 8348(also)s 220 fnt35
-8801 376(&)m 240 fnt82 8943 379(\).)m 0 91(Consider)m 924(this)s
-1320(e)s 3(xample:)k
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 25 31
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Italic
-%%+ font Times-Bold
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-1 LoutMargSet
-grestore
-240 fnt83 0 13843(2.6.)m 454(The)s 866(style)s 1356(and)s
-1782(size)s 2193(of)s 2474(objects)s 240 fnt84 8833 13840(25)m
-220 fnt35 480 13207(5c @Wide @TightBo)m 6(x { A |1c B |1c C })k 240 fnt82 0 12708(As)m
-317(usual,)s 929(the)s 1277(right)s 1788(parameter)s 2802(of)s
-220 fnt35 3073 12705(@Wide)m 240 fnt82 3847 12708(is)m 4057(\207v)s 3(e)k
-4469(centimetres)s 5620(wide,)s 6192(and)s 6596(the)s 6944(result)s
-7534(looks)s 8104(lik)s 2(e)k 8516(this:)s 2835 165 0 57 240 288 60 480 12203 LoutGr2
-0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath stroke
-grestore
-0 3(A)m
-737(B)s 1447(C)s
-grestore
-0 11752(Lout)m 512(has)s 882(to)s
-1121(apportion)s 2095(the)s 2443(size)s 2870(minus)s 3506(inter)s 4(-column)k
-4793(g)s 1(aps)k 5282(among)s 5987(the)s 6335(three)s
-6868(columns.)s 480 11378(If)m 707(the)s 1052(columns)s 1911(are)s
-2255(wide)s 2772(enough)s 3532(to)s 3768(require)s 4497(paragraph)s
-5507(breaking,)s 6447(Lout)s 6956(will)s 7379(assign)s 8031(sizes)s
-8543(to)s 8778(the)s 0 11090(columns)m 864(in)s 1110(such)s
-1609(a)s 1778(w)s 2(ay)k 2232(as)s 2484(to)s
-2726(lea)s 4(v)k 3(e)k 3282(narro)s 6(w)k
-4010(columns)s 4875(unbrok)s 2(en)k 5837(and)s 6244(break)s
-6839(wider)s 7446(columns)s 8311(to)s 8553(equal)s 0 10802(width,)m
-652(occup)s 2(ying)k 1702(the)s 2051(full)s 2438(size.)s
-2974(Otherwise,)s 4064(paragraph)s 5077(breaking)s 5968(is)s 6179(not)s
-6546(required,)s 7450(and)s 7855(each)s 8351(column)s 0 10514(will)m
-431(be)s 719(assigned)s 1607(a)s 1779(reasonable)s 2863(minimum)s
-3858(size)s 4291(in)s 4540(the)s 4894(manner)s 5677(of)s
-220 fnt35 5953 10511(@HContr)m 2(act)k 240 fnt82 7157 10514(,)m
-7270(e)s 3(xcept)k 7957(that)s 8381(the)s 8735(last)s
-0 10226(column)m 775(recei)s 6(v)k 3(es)k 1599(all)s
-1892(the)s 2240(lefto)s 3(v)k 3(er)k 3036(width.)s
-3745(F)s 3(or)k 4134(e)s 3(xample,)k 220 fnt35
-480 9725(5c @Wide { @TightBo)m 6(x A |1c @TightBo)k 6(x B |1c @TightBo)k 6(x C })k 240 fnt82
-0 9226(has)m 370(result)s 170 165 0 57 240 288 60 480 8771 LoutGr2
-0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath stroke
-grestore
-0 3(A)m
-grestore
-143 165 0 57 240 288 60 1217 8771 LoutGr2
-0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath stroke
-grestore
-0 3(B)m
-grestore
-1388 165 0 57 240 288 60 1927 8771 LoutGr2
-0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath stroke
-grestore
-0 3(C)m
-
-grestore
-0 8320(If)m 237(it)s 436(is)s 653(desired)s 1408(that)s
-1833(the)s 2188(lefto)s 3(v)k 3(er)k 2991(width)s
-3600(remain)s 4327(unused,)s 5120(rather)s 5743(than)s 6219(going)s
-6825(into)s 7257(the)s 7612(last)s 8010(column,)s 8843(an)s
-0 8032(empty)m 654(column)s 1431(can)s 1822(be)s 2106(appended,)s
-3133(or)s 3394(the)s 3744(last)s 4137(column)s 4914(can)s
-5305(be)s 5589(enclosed)s 6486(in)s 220 fnt35 6731 8029(@HContr)m 2(act)k
-240 fnt82 7935 8032(.)m 8101(T)s 19(w)k 2(o)k
-8575(other)s 0 7744(w)m 2(ays)k 560(to)s 819(apportion)s
-1813(the)s 2181(lefto)s 3(v)k 3(er)k 2997(width)s
-3619(are)s 3986(pro)s 3(vided)k 4912(by)s 5226(the)s
-220 fnt35 5594 7741(@HExpand)m 240 fnt82 6787 7744(and)m 220 fnt35
-7211 7741(@HAdjust)m 240 fnt82 8277 7744(symbols)m 0 7456(\(Sections)m 940(3.12)s
-1414(and)s 1818(3.15\).)s 480 7082(The)m 914(third)s 1430(and)s
-1841(\207nal)s 2328(e)s 3(xception)k 3319(to)s 3565(the)s
-3920(`as)s 4255(wide)s 4783(as)s 5040(possible')s 5943(rule)s
-6377(concerns)s 7285(the)s 7640(components)s 8855(of)s 0 6794(the)m
-348(root)s 793(g)s 1(alle)k 3(y)k 15(.)k
-1522(Each)s 2057(is)s 2267(considered)s 3361(to)s 3600(be)s
-3882(enclosed)s 4777(in)s 220 fnt35 5020 6791(@HContr)m 2(act)k
-240 fnt82 6284 6794(and)m 220 fnt35 6688 6791(@VContr)m 2(act)k
-240 fnt82 7940 6794(symbols.)m 480 6420(Up)m 836(to)s 1086(this)s
-1493(point)s 2056(we)s 2401(ha)s 4(v)k 3(e)k
-2913(treated)s 3631(width)s 4244(as)s 4505(a)s 4681(single)s
-5319(quantity)s 15(,)k 6206(b)s 4(ut)k 6579(of)s
-6860(course)s 7551(it)s 7754(has)s 8135(tw)s 2(o)k
-8556(parts:)s 0 6132(width)m 602(to)s 841(left)s 1218(and)s
-1622(right)s 2133(of)s 2404(the)s 2752(mark.)s 3407(The)s
-3835(`as)s 4164(wide)s 4685(as)s 4935(possible')s 5831(rule)s
-6258(applies)s 6986(to)s 7225(both)s 7708(directions:)s 220 fnt35
-480 5631(@HContr)m 2(act { @TightBo)k 6(x 953^.05 /0.5c @TightBo)k 6(x 2^.8286 })k 240 fnt82
-0 5132(has)m 370(result)s 877 170 344 59 240 288 60 480 4672 LoutGr2
-0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath stroke
-grestore
-0 5(953)m 344(.05)s
-grestore
-877 167 344 57 240 288 60 480 4222 LoutGr2
-0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath stroke
-grestore
-230 3(2)m
-344(.8286)s
-grestore
-0 3771(Lefto)m 3(v)k 3(er)k 868(width)s
-1461(usually)s 2197(goes)s 2678(to)s 2908(the)s 3247(right,)s
-3796(as)s 4037(we)s 4364(ha)s 4(v)k 3(e)k
-4856(seen,)s 5379(b)s 4(ut)k 5732(here)s 6190(some)s
-6742(width)s 7335(w)s 2(as)k 7747(a)s 4(v)k 6(ailable)k
-8646(only)s 0 3483(to)m 239(the)s 587(left)s 964(of)s
-220 fnt35 1235 3480(2.8286)m 240 fnt82 1958 3483(o)m 6(wing)k
-2604(to)s 2843(the)s 3191(column)s 3966(mark)s 4518(alignment.)s
-240 fnt84 0 2690(2.7.)m 471(Galleys)s 1282(and)s 1723(tar)s 2(gets)k
-240 fnt82 480 2213(The)m 909(beha)s 4(viour)k 1924(of)s
-2197(g)s 1(alle)k 3(ys)k 2923(and)s 3328(their)s
-3827(tar)s 4(gets,)k 4568(as)s 4820(described)s 5796(in)s
-6040(Section)s 6816(1.4,)s 7225(can)s 7616(be)s 7900(summarized)s
-0 1925(in)m 243(three)s 776(la)s 3(ws:)k 240 fnt83
-0 1473(F)m 10(ir)k 2(st)k 540(Law)s 240 fnt82
-949 1471(:)m 1139(The)s 1592(\207rst)s 2047(tar)s 4(get)k
-2671(is)s 2905(the)s 3278(closest)s 4012(in)s 9(v)k 4(ocation)k
-5091(of)s 5386(the)s 5759(tar)s 4(get)k 6382(symbol,)s
-7219(either)s 7846(preceding)s 8867(or)s 0 1183(follo)m 6(wing)k
-972(the)s 1315(in)s 9(v)k 4(ocation)k 2363(point)s
-2910(of)s 3175(the)s 3518(g)s 1(alle)k 3(y)k
-4146(as)s 4391(required,)s 5288(which)s 5925(has)s 6289(suf\207cient)s
-7233(space)s 7814(to)s 8048(recei)s 6(v)k 3(e)k
-8778(the)s 0 895(\207rst)m 431(component;)s 240 fnt83 0 392(Second)m
-773(Law)s 240 fnt82 1182 390(:)m 1364(Each)s 1915(subsequent)s
-3055(tar)s 4(get)k 3670(is)s 3896(the)s 4259(closest)s
-4985(in)s 9(v)k 4(ocation)k 6055(of)s 6342(the)s
-6706(tar)s 4(get)k 7321(symbol,)s 8149(follo)s 6(wing)k
-
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 26 32
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Times-Italic
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-0 LoutMargSet
-grestore
-240 fnt84 0 13840(26)m 240 fnt83 7257 13843(Chapter)m 8107(2.)s
-8381(Details)s 240 fnt82 0 13205(the)m 337(pre)s 6(vious)k
-1195(tar)s 4(get)k 1783(and)s 2176(lying)s 2710(within)s
-3367(the)s 3704(same)s 4240(g)s 1(alle)k 3(y)k 15(,)k
-4901(which)s 5532(has)s 5891(suf\207cient)s 6829(space)s 7405(to)s
-7633(recei)s 6(v)k 3(e)k 8358(the)s 8695(\207rst)s
-0 12917(remaining)m 1022(component;)s 240 fnt83 0 12414(Thir)m 8(d)k
-607(Law)s 240 fnt82 1016 12412(:)m 1199(A)s 1446(recepti)s 6(v)k 3(e)k
-2385(symbol)s 3162(that)s 3597(does)s 4104(not)s 4487(recei)s 6(v)k 3(e)k
-5240(at)s 5489(least)s 6003(one)s 6422(component)s 7563(of)s
-7851(an)s 3(y)k 8265(g)s 1(alle)k 3(y)k
-8916(is)s 0 12124(replaced)m 867(by)s 220 fnt35 1161 12121(@Null)m
-240 fnt82 1746 12124(.)m 0 11621(The)m 436(terms)s 1025(`closest,)s 16(')k
-1918(`preceding,)s 16(')k 3104(and)s 3516(`follo)s 6(wing')k
-4639(refer)s 5156(to)s 5403(position)s 6239(in)s 6490(the)s
-6846(\207nal)s 7334(printed)s 8078(document.)s 0 11333(This)m 476(section)s
-1210(e)s 3(xplains)k 2055(the)s 2403(operation)s 3363(of)s
-3634(these)s 4181(la)s 3(ws)k 4667(in)s 4910(Basser)s
-5607(Lout.)s 480 10959(When)m 1100(a)s 1257(g)s 1(alle)k 3(y)k
-1881(cannot)s 2570(be)s 2843(\207tted)s 3382(into)s 3798(just)s
-4194(one)s 4586(tar)s 4(get,)k 5223(Lout)s 5726(must)s
-6241(\207nd)s 6663(points)s 7290(in)s 7523(the)s 7862(g)s 1(alle)k 3(y)k
-8486(where)s 0 10671(it)m 191(can)s 579(be)s 860(split)s
-1330(in)s 1572(tw)s 2(o.)k 2091(The)s 2518(object)s
-3161(lying)s 3705(between)s 4558(tw)s 2(o)k 4966(neighbouring)s
-6295(potential)s 7185(split)s 7655(points)s 8290(is)s 8498(called)s
-0 10383(a)m 240 fnt83 166 10385(component)m 240 fnt82 1281 10383(of)m
-1552(the)s 1900(g)s 1(alle)k 3(y)k 15(.)k
-2629(By)s 2963(de\207nition,)s 3987(a)s 4153(component)s 5277(cannot)s
-5975(be)s 6257(split.)s 480 10009(T)m 19(o)k 813(determine)s
-1857(the)s 2239(components)s 3480(of)s 3785(a)s 3984(g)s 1(alle)k 3(y)k 15(,)k
-4690(e)s 3(xpand)k 5470(all)s 5797(symbols)s 6679(other)s
-7264(than)s 7766(recursi)s 6(v)k 3(e)k 8722(and)s
-0 9721(recepti)m 6(v)k 3(e)k 909(ones,)s 1442(discard)s
-2177(all)s 220 fnt35 2457 9718(@F)m 6(ont)k 240 fnt82
-3109 9721(,)m 220 fnt35 3203 9718(@Break)m 240 fnt82 3999 9721(,)m
-220 fnt35 4093 9718(@Space)m 240 fnt82 4930 9721(,)m 220 fnt35
-5024 9718(@SetColor)m 240 fnt82 6099 9721(,)m 220 fnt35 6193 9718(@SetColour)m
-240 fnt82 7390 9721(,)m 7484(and)s 220 fnt35 7875 9718(@Language)m
-240 fnt82 0 9433(symbols,)m 908(perform)s 1740(paragraph)s 2756(breaking)s
-3649(as)s 3902(required,)s 4809(and)s 5216(discard)s 5967(all)s
-6263(redundant)s 7283(braces.)s 8060(Then)s 8613(vie)s 6(w)k
-0 9145(the)m 367(g)s 1(alle)k 3(y)k 1020(as)s
-1290(a)s 1475(sequence)s 2428(of)s 2718(one)s 3140(or)s
-3418(more)s 3984(objects)s 4732(separated)s 5711(by)s 6025(v)s 3(ertical)k
-6811(concatenation)s 8216(symbols;)s 0 8857(these)m 567(are)s 935(the)s
-1304(components)s 2533(and)s 2958(split)s 3450(points,)s 4163(e)s 3(xcept)k
-4865(that)s 5304(concatenation)s 6710(symbols)s 7580(whose)s 8269(g)s 1(aps)k
-8779(are)s 0 8569(unbreakable)m 1225(\(Section)s 2078(3.2\))s 2506(are)s
-2853(not)s 3219(eligible)s 3991(to)s 4230(be)s 4512(split)s
-4983(points.)s 5732(F)s 3(or)k 6121(e)s 3(xample,)k
-7035(gi)s 6(v)k 3(en)k 7615(the)s 7963(de\207nition)s
-220 fnt35 480 8068(def @Section into { @SectionPlace&&preceding })m 480 7780( named @Title {})m 480 7492( r)m -3(ight @Body)k
-480 7204({)m 480 6916( 15p @F)m 6(ont { @Title //0.7f })k 480 6628( //)m 480 6340( @Body)m
-480 6052(})m 240 fnt82 0 5558(the)m 348(g)s 1(alle)k 3(y)k
-220 fnt35 480 5057(@Section)m 480 4769( @Title { Introduction })m 480 4481({ )m 11(This is a subject that really)k
-480 4193(needs no introduction.)m 13( })k 240 fnt82 0 3699(becomes)m 220 fnt35
-480 3252(Introduction)m 480 2964(//0.7f)m 480 2676({})m 480 2388(//)m 480 2100(This is a subject that really needs)m
-480 1812(//1vx)m 480 1524(no introduction.)m 240 fnt82 0 1070(with)m 482(four)s
-939(components.)s 2260(If)s 220 fnt35 2489 1067(@Body)m 240 fnt82
-3269 1070(had)m 3673(been)s 4181(preceded)s 5102(by)s 220 fnt35
-5395 1067(|1.0c)m 240 fnt82 5921 1070(in)m 6164(the)s 6511(de\207nition,)s
-7535(the)s 7882(result)s 8471(w)s 2(ould)k 0 782(ha)m 4(v)k 3(e)k
-501(been)s
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 27 33
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Italic
-%%+ font Times-Bold
-%%+ font Helvetica
-%%+ font Symbol
-/pgsave save def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-1 LoutMargSet
-grestore
-240 fnt83 0 13843(2.7.)m 454(Galle)s 7(ys)k 1232(and)s
-1658(tar)s 8(g)k 2(ets)k 240 fnt84 8831 13840(27)m
-220 fnt35 480 13211(Introduction)m 480 12923(//0.7f)m 480 12635({})m 480 12347(//)m
-480 12059(|1.0c { )m 11(This is a subject that really needs //1vx no introduction.)k 13( })k 240 fnt82 0 11561(with)m
-220 fnt35 524 11558(//1vx)m 240 fnt82 1089 11561(b)m 4(uried)k
-1796(within)s 2507(one)s 2951(component)s 4118(and)s 4564(hence)s
-5221(not)s 5629(a)s 5838(potential)s 6771(split)s 7285(point.)s
-7983(If)s 220 fnt35 8256 11558(0.7f)m 240 fnt82 8722 11561(had)m
-0 11273(been)m 220 fnt35 525 11270(0.7fu)m 240 fnt82 999 11273(,)m
-1123(the)s 1488(g)s 1(ap)k 1903(w)s 2(ould)k
-2575(ha)s 4(v)k 3(e)k 3092(been)s 3618(unbreakable)s
-4860(and)s 220 fnt35 5281 11270(//0.7fu)m 240 fnt82 5954 11273(w)m 2(ould)k
-6625(not)s 7008(ha)s 4(v)k 3(e)k 7526(been)s
-8052(a)s 8235(potential)s 0 10985(split)m 471(point.)s 480 10611(V)m 26(ersion)k
-1310(3.03)s 1816(has)s 2228(liberalized)s 3335(this)s 3773(some)s 6(what)k
-4840(in)s 5125(the)s 5515(follo)s 6(wing)k 6534(w)s 2(ay)k 15(.)k
-7122(When)s 7793(a)s 8002(component)s 0 10323(consists)m 808(of)s
-1080(a)s 1247(horizontal)s 2271(sequence)s 3205(of)s 3477(tw)s 2(o)k
-3887(or)s 4147(more)s 4695(objects)s 240 fnt83 5423 10325(A)m
-168 fnt78 5558 10232(1)m 240 fnt78 5637 10317(,)m 5746(\274)s
-6046(,)s 240 fnt83 6155 10325(A)m 168 fnt83 6290 10238(n)m
-240 fnt82 6431 10323(separated)m 7391(by)s 220 fnt35 7686 10320(|)m
-240 fnt82 7784 10323(\(not)m 220 fnt35 8229 10320(||)m 240 fnt82
-8323 10323(,)m 8431(not)s 220 fnt35 8798 10320(&)m 240 fnt82
-8940 10323(\),)m 0 10035(Lout)m 506(will)s 926(in)s 9(v)k 3(estig)k 1(ate)k
-1998(the)s 2339(component)s 3457(to)s 3690(see)s 4044(whether)s
-4868(it)s 5054(can)s 5436(be)s 5712(brok)s 2(en)k
-6426(up.)s 6823(It)s 7022(looks)s 7586(at)s 7811(each)s
-240 fnt83 8300 10037(A)m 168 fnt83 8435 9950(i)m 240 fnt82
-8533 10035(to)m 8765(see)s 0 9747(whether)m 830(it)s 1023(is)s
-1234(a)s 1401(v)s 3(ertical)k 2169(concatenation)s 3555(of)s
-3827(objects)s 240 fnt83 4556 9749(A)m 168 fnt83 4691 9662(i)m
-168 fnt78 4743 9656(1)m 240 fnt78 4822 9741(,)m 4932(\274)s
-5232(,)s 240 fnt83 5342 9749(A)m 168 fnt83 5477 9662(im)m
-240 fnt82 5641 9747(;)m 5754(if)s 5972(tw)s 2(o)k
-6383(or)s 6643(more)s 7191(of)s 7463(the)s 240 fnt83
-7812 9749(A)m 168 fnt83 7947 9662(i)m 240 fnt82 8052 9747(satisfy)m
-8730(this)s 0 9459(condition,)m 1009(the)s 1354(component)s 2475(will)s
-2898(not)s 3262(be)s 3541(brok)s 2(en)k 4258(up.)s
-4659(So)s 4962(no)s 6(w)k 5421(suppose)s 6246(we)s
-6578(ha)s 4(v)k 3(e)k 7076(just)s 7479(one)s
-240 fnt83 7878 9461(A)m 168 fnt83 8013 9374(i)m 240 fnt82
-8114 9459(which)m 8753(is)s 8960(a)s 0 9171(v)m 3(ertical)k
-757(concatenation.)s 2239(Lout)s 2741(will)s 3156(break)s 3738(the)s
-4076(component)s 5189(into)s 5604(one)s 5996(component)s 7109(for)s
-7437(each)s 7922(of)s 8182(the)s 240 fnt83 8520 9173(A)m
-168 fnt83 8655 9086(i)m 168 fnt78 8707 9080(1)m 240 fnt78
-8775 9165(,)m 8851(\274)s 3 8877(,)m 240 fnt83 80 8885(A)m
-168 fnt83 215 8798(im)m 240 fnt82 379 8883(,)m 476(pro)s 3(vided)k
-1373(that)s 1781(the)s 3(y)k 2234(are)s 2571(separated)s
-3521(by)s 220 fnt35 3806 8880(//)m 240 fnt82 3981 8883(symbols)m
-4820(\(not)s 220 fnt35 5255 8880(/)m 240 fnt82 5319 8883(\),)m
-5495(and)s 5890(pro)s 3(vided)k 6786(this)s 7172(can)s
-7551(be)s 7823(done)s 8335(without)s 0 8595(introducing)m 1155(an)s 3(y)k
-1550(apparent)s 2431(change)s 3164(into)s 3587(the)s 3933(appearance)s
-5062(of)s 5332(the)s 5678(component)s 6800(\(this)s 7274(second)s
-7995(rule)s 8420(will)s 8844(be)s 0 8307(satis\207ed)m 847(if)s
-1071(the)s 1426(other)s 240 fnt83 1984 8309(A)m 168 fnt83
-2119 8222(j)m 240 fnt82 2232 8307(are)m 2586(not)s 2959(v)s 3(ery)k
-3442(lar)s 4(ge\).)k 4165(The)s 4600(e)s 3(xample)k
-5470(abo)s 3(v)k 3(e)k 6099(satis\207es)s 6913(all)s
-7213(these)s 7767(rules)s 8289(and)s 8700(will)s 0 7996(be)m
-282(brok)s 2(en)k 1002(up)s 1295(into)s 1720(tw)s 2(o)k
-2130(components,)s 3394(so)s 3660(the)s 220 fnt35 4008 7993(//1vx)m
-240 fnt82 4530 7996(becomes)m 5418(a)s 5584(potential)s 6475(split)s
-6946(point)s 7498(after)s 7994(all.)s 480 7622(The)m 913(lines)s
-1421(of)s 1697(a)s 1869(paragraph)s 2887(become)s 3693(separate)s
-4536(components)s 5750(if)s 5972(the)s 6326(paragraph)s 7344(occupies)s
-8238(an)s 8527(entire)s 0 7334(component)m 1151(before)s 1844(breaking;)s
-2820(otherwise)s 3833(the)s 3(y)k 4323(are)s 4697(enclosed)s
-5619(in)s 5890(a)s 220 fnt35 6083 7331(@OneRo)m 3(w)k
-240 fnt82 7241 7334(symbol)m 8028(within)s 8724(one)s 0 7046(component.)m
-1237(The)s 1675(same)s 2232(is)s 2452(true)s 2888(of)s
-3169(incoming)s 4136(components)s 5354(of)s 5635(other)s 6195(g)s 1(alle)k 3(ys.)k
-7042(If)s 7282(a)s 220 fnt35 7458 7043(@Galle)m 4(y)k
-240 fnt82 8366 7046(symbol)m 0 6758(occupies)m 892(an)s 1180(entire)s
-1783(component)s 2912(by)s 3211(the)s 3563(rules)s 4083(abo)s 3(v)k 3(e,)k
-4761(then)s 5234(the)s 5587(incoming)s 6549(components)s 7761(that)s
-8184(replace)s 8934(it)s 0 6470(become)m 800(components)s 2008(of)s
-2279(their)s 2776(ne)s 6(w)k 3223(home:)s 220 fnt35
-480 5916(An e)m 6(xample)k 480 5628(//0.5c)m 480 5340(@Galle)m 4(y)k
-480 5052(//0.5c)m 480 4764(@SomethingList)m 240 fnt78 2500 5625(\336)m 220 fnt35
-3141 5916(An e)m 6(xample)k 3141 5628(//0.5c)m 3141 5340(Incoming components)m 3141 5052(//0.2c)m
-3141 4764(from some other galle)m 4(y)k 3141 4476(//0.5c)m 3141 4188(@SomethingList)m 240 fnt82
-0 3632(Otherwise)m 1062(the)s 1435(incoming)s 2416(components)s 3649(are)s
-4020(grouped)s 4888(within)s 5580(a)s 220 fnt35 5771 3629(@OneRo)m 3(w)k
-240 fnt82 6926 3632(symbol)m 7711(and)s 8139(lie)s 8458(within)s
-0 3344(one)m 402(component.)s 480 2970(This)m 985(distinction)s 2080(has)s
-2480(a)s 2675(mark)s 2(ed)k 3477(ef)s 6(fect)k
-4103(on)s 4429(the)s 4806(v)s 3(ertical)k 5603(concatenation)s
-7017(symbol)s 220 fnt35 7806 2967(//1.1b)m 240 fnt82 8347 2970(,)m
-8484(which)s 0 2682(calls)m 509(for)s 868(more)s 1436(space)s
-2045(than)s 2535(is)s 2766(a)s 4(v)k 6(ailable)k
-3695(\(Section)s 4570(3.2\).)s 5134(There)s 5768(is)s 5999(no)s
-6314(room)s 6900(for)s 7259(this)s 7676(symbol)s 8458(within)s
-0 2394(an)m 3(y)k 402(component,)s 1579(so)s 1851(it)s
-2049(will)s 2481(force)s 3033(a)s 3205(split)s 3682(and)s
-4092(be)s 4379(discarded)s 5359(in)s 5608(that)s 6032(case.)s
-6613(But)s 7025(it)s 7223(can)s 7618(be)s 7906(promoted)s
-8887(to)s 0 2106(between)m 854(tw)s 2(o)k 1264(components.)s
-480 1732(Components)m 1749(may)s 2223(be)s 2513(separated)s 3481(by)s
-220 fnt35 3783 1729(/)m 240 fnt82 3914 1732(as)m 4172(well)s
-4646(as)s 4904(by)s 220 fnt35 5206 1729(//)m 240 fnt82
-5331 1732(,)m 5445(gi)s 6(ving)k 6112(rise)s 6520(to)s
-6767(column)s 7550(mark)s 8110(alignment)s 0 1444(between)m 854(adjacent)s
-1710(components:)s
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 28 34
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Times-Italic
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-0 LoutMargSet
-grestore
-240 fnt84 0 13840(28)m 240 fnt83 7257 13843(Chapter)m 8107(2.)s
-8381(Details)s gsave
-480 12008 translate
-240 fnt82 1701 1360 567 1360 240 288 60 LoutGraphic
-gsave
-grestore save gsave 200 dict begin lfigdict begin
-grestore
-1701 1360 567 1360 240 288 60 0 0 LoutGr2
-
-0.015 cm setlinewidth lfiground setlinecap
-0.15 cm /lfigdashed [ xmark -0.3 cm
-xmark ysize 0 0.3 cm lfigpadd ] lfigdopath
-pop pop
-grestore
-1134 340 567 340 240 288 60 0 1020 LoutGr2
-0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath 0.8 setgray fill
-grestore
-
-grestore
-1134 340 0 340 240 288 60 567 510 LoutGr2
-0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath 0.8 setgray fill
-grestore
-
-grestore
-736 340 283 340 240 288 60 284 0 LoutGr2
-0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath 0.8 setgray fill
-grestore
-
-grestore
-
-grestore
-end end restore
-grestore
-240 fnt82 0 11557(When)m 688(aligned)s 1509(components)s
-2777(are)s 3183(promoted)s 4218(into)s 4702(dif)s 6(ferent)k
-5637(tar)s 4(gets,)k 6435(the)s 6843(meaning)s 7779(of)s
-8110(alignment)s 0 11269(becomes)m 882(v)s 3(ery)k 1351(doubtful.)s
-2319(F)s 3(or)k 2702(e)s 3(xample,)k 3609(what)s
-4127(if)s 4338(the)s 4679(tar)s 4(gets)k 5355(are)s
-5696(in)s 5932(dif)s 6(ferent)k 6800(columns)s 7656(of)s
-7920(one)s 8315(page,)s 8867(or)s 0 10981(what)m 525(if)s
-742(one)s 1144(lies)s 1526(within)s 220 fnt35 2194 10978(90d @Rotate)m
-240 fnt82 3482 10981(?)m 480 10607(The)m 908(truth)s 1416(is)s
-1626(that)s 220 fnt35 2044 10604(/)m 240 fnt82 2168 10607(causes)m
-2843(all)s 3136(the)s 3484(objects)s 4212(that)s 4630(share)s
-5190(a)s 5356(mark)s 5908(to)s 6147(ha)s 4(v)k 3(e)k
-6648(equal)s 7221(width:)s 1701 1360 567 1360 240 288 60 480 8907 LoutGr2
-grestore save gsave 200 dict begin lfigdict begin
-grestore
-1701 1360 567 1360 240 288 60 0 0 LoutGr2
-
-0.015 cm setlinewidth lfiground setlinecap
-0.15 cm /lfigdashed [ xmark -0.3 cm
-xmark ysize 0 0.3 cm lfigpadd ] lfigdopath
-pop pop
-grestore
-1701 340 567 340 240 288 60 0 1020 LoutGr2
-0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath stroke
-grestore
-1134 340 567 340 240 288 60 0 0 LoutGr2
-0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath 0.8 setgray fill
-grestore
-
-grestore
-
-grestore
-1701 340 567 340 240 288 60 0 510 LoutGr2
-0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath stroke
-grestore
-1134 340 0 340 240 288 60 567 0 LoutGr2
-0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath 0.8 setgray fill
-grestore
-
-grestore
-
-grestore
-1701 340 567 340 240 288 60 0 0 LoutGr2
-0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath stroke
-grestore
-736 340 283 340 240 288 60 284 0 LoutGr2
-0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath 0.8 setgray fill
-grestore
-
-grestore
-
-grestore
-
-grestore
-end end restore
-grestore
-0 8455(This)m 495(is)s 724(a)s
-909(consequence)s 2207(of)s 2497(the)s 2864(`as)s 3212(wide)s
-3753(as)s 4022(possible')s 4937(rule)s 5383(\(Section)s 6255(2.6\).)s
-6817(Mark)s 7415(alignment)s 8451(occurs)s 240 fnt83 0 8169(incidentally)m
-240 fnt82 1124 8167(,)m 1231(whene)s 6(v)k 3(er)k
-2212(the)s 2560(fragments)s 3566(are)s 3913(placed)s 4595(into)s
-5020(similar)s 5742(conte)s 3(xts.)k 480 7793(In)m 723(this)s
-1106(connection)s 2200(we)s 2521(must)s 3033(also)s 3458(consider)s
-4315(the)s 4649(special)s 5354(case)s 5808(of)s 6066(a)s
-220 fnt35 6218 7790(@Galle)m 4(y)k 240 fnt82 7103 7793(symbol)m
-7850(which)s 8478(shares)s 0 7505(its)m 276(column)s 1051(mark)s
-1603(with)s 2085(some)s 2646(other)s 3197(object:)s 220 fnt35
-480 7004(@Galle)m 4(y)k 480 6716(/0.2c)m 480 6428(@SomethingList)m 240 fnt82
-0 5929(\(The)m 220 fnt35 501 5926(@Galle)m 4(y)k 240 fnt82
-1392 5929(may)m 1851(or)s 2104(may)s 2563(not)s 2922(occup)s 2(y)k
-3660(an)s 3936(entire)s 4528(component;)s 5698(that)s 6109(doesn')s 4(t)k
-6862(matter)s 7525(here.\))s 8177(If)s 8400(incom)s 8998(-)s
-0 5641(ing)m 355(components)s 1559(are)s 1901(separated)s 2857(by)s
-220 fnt35 3147 5638(//)m 240 fnt82 3327 5641(rather)m 3939(than)s
-4404(by)s 220 fnt35 4693 5638(/)m 240 fnt82 4757 5641(,)m
-4860(the)s 5204(meaning)s 6076(is)s 6282(so)s 6544(doubtful)s
-7405(that)s 7819(this)s 8211(is)s 8416(forbid)s 8998(-)s
-0 5353(den.)m 496(In)s 738(f)s 2(act,)k 1186(a)s
-1337(g)s 1(alle)k 3(y)k 1957(whose)s 2611(components)s
-3804(replace)s 4535(such)s 5017(a)s 220 fnt35 5168 5350(@Galle)m 4(y)k
-240 fnt82 6052 5353(must)m 6563(ha)s 4(v)k 3(e)k
-7049(a)s 7201(single)s 7814(column)s 8574(mark)s 0 5065(running)m
-783(its)s 1043(full)s 1413(length;)s 2108(that)s 2510(is,)s
-2760(its)s 3021(components)s 4213(must)s 4722(all)s 4999(share)s
-5544(a)s 5694(single)s 6305(column)s 7065(mark.)s 7704(This)s
-8164(mark)s 8700(will)s 0 4777(be)m 281(mer)s 4(ged)k
-1050(with)s 1530(the)s 1876(column)s 2649(mark)s 3199(passing)s
-3969(through)s 4769(each)s 220 fnt35 5262 4774(@Galle)m 4(y)k
-240 fnt82 6158 4777(that)m 6574(these)s 7119(components)s 8325(replace;)s
-0 4489(all)m 293(the)s 641(objects)s 1369(on)s 1666(the)s
-2014(resulting)s 2903(mer)s 4(ged)k 3674(mark)s 4226(will)s
-4652(ha)s 4(v)k 3(e)k 5153(equal)s 5726(width.)s
-480 4115(The)m 906(root)s 1348(g)s 1(alle)k 3(y)k 15(,)k
-2018(where)s 2655(e)s 6(v)k 3(erything)k 3720(collects)s
-4497(immediately)s 5742(prior)s 6264(to)s 6500(output,)s 7217(is)s
-7424(created)s 8168(automati)s 8998(-)s 0 3827(cally)m 15(,)k
-556(not)s 921(by)s 1214(a)s 1379(de\207nition.)s 2459(Its)s
-2747(tar)s 4(get)k 3346(is)s 3555(the)s 3902(output)s
-4573(\207le,)s 4984(and)s 5387(its)s 5663(object)s 6306(is)s
-6515(the)s 6862(entire)s 7460(input,)s 8058(which)s 8699(typ)s
-8998(-)s 0 3539(ically)m 584(looks)s 1154(lik)s 2(e)k
-1566(this:)s 220 fnt35 480 3038(@P)m 8(ageList)k 480 2750(//)m
-480 2462(@T)m 26(e)k 6(xt {)k 480 2174( Body te)m 6(xt of the document ...)k
-480 1886(})m 240 fnt82 0 1392(where)m 220 fnt35 639 1389(@P)m 8(ageList)k
-240 fnt82 1761 1392(e)m 3(xpands)k 2592(to)s 2830(a)s
-2994(sequence)s 3925(of)s 4195(pages)s 4789(containing)s 220 fnt35
-5850 1389(@T)m 26(e)k 6(xtPlace)k 240 fnt82 7067 1392(symbols)m
-7914(\(see)s 8352(Section)s 0 1104(1.2\),)m 486(and)s 220 fnt35
-890 1101(@T)m 26(e)k 6(xt)k 240 fnt82 1564 1104(is)m
-1774(a)s 1940(g)s 1(alle)k 3(y:)k
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 29 35
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Italic
-%%+ font Times-Bold
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-1 LoutMargSet
-grestore
-240 fnt83 0 13843(2.7.)m 454(Galle)s 7(ys)k 1232(and)s
-1658(tar)s 8(g)k 2(ets)k 240 fnt84 8832 13840(29)m
-220 fnt35 480 13207(def @T)m 26(e)k 6(xtPlace { @Galle)k 4(y })k
-480 12631(def @T)m 26(e)k 6(xt into { @T)k 26(e)k 6(xtPlace&&preceding })k
-480 12343( r)m -3(ight x)k 480 12055({)m 480 11767( x)m 480 11479(})m
-240 fnt82 0 10985(The)m 428(spot)s 886(v)s 6(acated)k
-1668(by)s 1961(a)s 2127(g)s 1(alle)k 3(y)k
-2760(\211)s 2940(its)s 3215(in)s 9(v)k 4(ocation)k
-4268(point)s 4820(\211)s 4999(becomes)s 5887(a)s 220 fnt35
-6052 10982(@Null)m 240 fnt82 6697 10985(object,)m 7387(so)s 7653(this)s
-8048(root)s 8492(g)s 1(alle)k 3(y)k 0 10697(is)m
-210(ef)s 6(fecti)k 6(v)k 3(ely)k 220 fnt35
-1269 10694(@P)m 8(ageList)k 240 fnt82 2393 10697(alone,)m 3018(as)s
-3269(required.)s 4229(The)s 220 fnt35 4657 10694(@T)m 26(e)k 6(xt)k
-240 fnt82 5331 10697(g)m 1(alle)k 3(y)k 5965(will)s
-6392(\207nd)s 6823(its)s 7099(\207rst)s 7530(tar)s 4(get)k
-8130(preceding)s 0 10409(its)m 276(in)s 9(v)k 4(ocation)k
-1330(point,)s 1929(within)s 220 fnt35 2597 10406(@P)m 8(ageList)k
-240 fnt82 3661 10409(.)m 480 10035(Printing)m 1308(the)s 1661(root)s
-2112(g)s 1(alle)k 3(y)k 2751(on)s 3054(the)s
-3407(output)s 4085(\207le)s 4451(is)s 4666(some)s 6(what)k
-5696(problematical,)s 7121(because)s 7940(Lout)s 8457(has)s 8833(no)s
-0 9747(w)m 2(ay)k 461(of)s 742(kno)s 6(wing)k
-1638(ho)s 6(w)k 2109(lar)s 4(ge)k 2648(the)s
-3006(paper)s 3607(is.)s 3941(Basser)s 4648(Lout)s 5170(simply)s
-5885(prints)s 6490(one)s 6902(root)s 7357(g)s 1(alle)k 3(y)k
-8002(component)s 0 9459(per)m 355(page)s 852(\(e)s 3(xcept)k
-1601(it)s 1782(skips)s 2314(components)s 3511(of)s 3771(height)s
-4418(zero\),)s 5005(and)s 5398(the)s 5735(user)s 6182(is)s
-6381(responsible)s 7515(for)s 7842(ensuring)s 8708(that)s 0 9171(each)m
-504(component)s 1637(is)s 1856(page-sized.)s 3051(Gaps)s 3603(between)s
-4466(root)s 4920(g)s 1(alle)k 3(y)k 5563(components,)s
-6836(e)s 6(v)k 3(en)k 7345(unbreakable)s 8580(ones,)s
-0 8883(ha)m 4(v)k 3(e)k 501(no)s 794(ef)s 6(fect)k
-1390(on)s 1687(the)s 2035(result.)s 480 8509(Basser)m 1204(Lout)s
-1744(will)s 2198(promote)s 3079(a)s 3273(component)s 4425(only)s
-4933(after)s 5457(an)s 3(y)k 5882(recepti)s 6(v)k 3(e)k
-6832(symbols)s 7709(within)s 8405(it)s 8625(ha)s 4(v)k 3(e)k
-0 8221(been)m 509(replaced,)s 1426(either)s 2029(by)s 2324(g)s 1(alle)k 3(ys)k
-3048(or)s 3308(by)s 220 fnt35 3602 8218(@Null)m 240 fnt82
-4187 8221(,)m 4295(since)s 4842(until)s 5336(then)s 5805(the)s
-6154(component)s 7278(is)s 7489(not)s 7855(complete.)s 8896(A)s
-0 7933(component)m 1109(which)s 1736(shares)s 2369(a)s 2520(mark)s
-3057(with)s 3524(follo)s 6(wing)k 4486(components)s 5679(is)s
-5874(held)s 6329(up)s 6607(until)s 7085(the)s 3(y)k
-7533(are)s 7865(all)s 8143(complete,)s 0 7645(since)m 547(until)s
-1040(then)s 1509(their)s 2006(width)s 2608(is)s 2818(uncertain.)s
-480 7271(Consider)m 1409(a)s 1581(page)s 2095(with)s 220 fnt35
-2583 7268(@T)m 26(e)k 6(xtPlace)k 240 fnt82 3806 7271(and)m
-220 fnt35 4216 7268(@F)m 6(ootSect)k 240 fnt82 5373 7271(recepti)m 6(v)k 3(e)k
-6301(symbols.)s 7268(The)s 7702(rule)s 8135(just)s 8546(gi)s 6(v)k 3(en)k
-0 6983(will)m 418(pre)s 6(v)k 3(ent)k 1177(the)s
-1517(page)s 2016(from)s 2531(being)s 3108(printed)s 3834(until)s
-220 fnt35 4319 6980(@T)m 26(e)k 6(xtPlace)k 240 fnt82
-5528 6983(is)m 5729(replaced)s 6588(by)s 6873(body)s 7399(te)s 3(xt,)k
-7852(quite)s 8377(rightly;)s 0 6695(b)m 4(ut)k 220 fnt35
-362 6692(@F)m 6(ootSect)k 240 fnt82 1513 6695(will)m 1939(also)s
-2377(pre)s 6(v)k 3(ent)k 3145(its)s 3421(printing,)s
-4285(e)s 6(v)k 3(en)k 4785(when)s 5361(there)s
-5894(are)s 6241(no)s 6534(footnotes.)s 480 6321(Basser)m 1187(Lout)s
-1709(is)s 1930(k)s 2(een)k 2447(to)s 2696(write)s
-3253(out)s 3629(pages)s 4235(as)s 4496(soon)s 5016(as)s
-5276(possible,)s 6178(to)s 6427(sa)s 4(v)k 3(e)k
-6911(memory)s 15(,)k 7811(and)s 8225(it)s 8428(cannot)s
-0 6033(af)m 6(ford)k 624(to)s 852(w)s 2(ait)k
-1309(fore)s 6(v)k 3(er)k 2038(for)s 2365(non-e)s 3(xistent)k
-3592(footnotes.)s 4635(A)s 4854(v)s 6(ariant)k 5559(of)s
-5819(the)s 6156(g)s 1(alle)k 3(y)k 6778(concept,)s
-7618(called)s 8235(a)s 240 fnt83 8389 6035(for)m 8(cing)k
-0 5747(galle)m 7(y)k 240 fnt82 573 5745(,)m 680(is)s
-890(introduced)s 1971(to)s 2210(solv)s 3(e)k 2768(this)s
-3164(problem.)s 4125(A)s 4355(forcing)s 5098(g)s 1(alle)k 3(y)k
-5732(is)s 5942(de\207ned)s 6705(lik)s 2(e)k 7117(this:)s
-220 fnt35 480 5244(def @T)m 26(e)k 6(xt f)k 6(orce into { @T)k 26(e)k 6(xtPlace&&preceding })k
-480 4956( ...)m 240 fnt82 0 4505(and)m 392(so)s 646(on.)s
-1037(When)s 1654(such)s 2138(a)s 2291(g)s 1(alle)k 3(y)k
-2913(replaces)s 3734(a)s 220 fnt35 3887 4502(@Galle)m 4(y)k
-240 fnt82 4773 4505(symbol,)m 5573(Lout)s 6072(replaces)s 6893(e)s 6(v)k 3(ery)k
-7457(recepti)s 6(v)k 3(e)k 8366(symbol)s 0 4217(preceding)m
-1004(the)s 220 fnt35 1360 4214(@Galle)m 4(y)k 240 fnt82
-2266 4217(by)m 220 fnt35 2568 4214(@Null)m 240 fnt82 3153 4217(,)m
-3268(thus)s 3726(ensuring)s 4611(that)s 5038(as)s 5296(soon)s
-5814(as)s 6072(te)s 3(xt)k 6495(enters)s 7124(a)s
-7298(page,)s 7865(for)s 8212(e)s 3(xample,)k 0 3929(e)m 6(v)k 3(erything)k
-1064(up)s 1354(to)s 1590(and)s 1991(including)s 2945(the)s
-3289(preceding)s 4282(page)s 4787(can)s 5173(be)s 5452(printed.)s
-6290(This)s 6762(does)s 7249(not)s 7612(tak)s 2(e)k
-8061(care)s 8511(of)s 8778(the)s 0 3641(v)m 3(ery)k
-479(last)s 873(page,)s 1435(b)s 4(ut)k 1801(Basser)s
-2501(Lout)s 3016(replaces)s 3852(all)s 4149(recepti)s 6(v)k 3(e)k
-5074(symbols)s 5926(by)s 220 fnt35 6223 3638(@Null)m 240 fnt82
-6872 3641(when)m 7451(it)s 7646(realizes)s 8428(that)s 8850(its)s
-0 3353(input)m 552(has)s 922(all)s 1215(been)s 1724(read,)s
-2242(thus)s 2692(allo)s 6(wing)k 3576(the)s 3924(last)s
-4315(page)s 4823(to)s 5062(print.)s 480 2979(A)m 714(forcing)s
-1461(g)s 1(alle)k 3(y)k 2099(causes)s 2779(the)s
-3131(Third)s 3724(La)s 3(w)k 4204(to)s 4448(be)s
-4734(applied)s 5500(earlier)s 6172(than)s 6646(e)s 3(xpected,)k
-7604(and)s 8012(this)s 8413(creates)s 0 2691(tw)m 2(o)k
-425(problems.)s 1495(First,)s 2055(the)s 2419(replacement)s 3662(by)s
-220 fnt35 3972 2688(@Null)m 240 fnt82 4633 2691(may)m 5114(be)s
-5412(premature:)s 6562(a)s 6744(g)s 1(alle)k 3(y)k
-7394(may)s 7876(turn)s 8334(up)s 8643(later)s 0 2403(w)m 2(anting)k
-869(one)s 1318(of)s 1636(the)s 2032(defunct)s 2856(tar)s 4(gets.)k
-3699(Such)s 4283(g)s 1(alle)k 3(ys)k 5054(\(entries)s
-5867(in)s 6157(tables)s 6813(of)s 7131(contents)s 8026(are)s
-8421(typical)s 0 2115(e)m 3(xamples\))k 1020(are)s 1358(copied)s
-2045(into)s 2461(the)s 2801(cross)s 3334(reference)s 4268(database)s
-5138(and)s 5534(read)s 5994(in)s 6228(during)s 6897(the)s
-7237(ne)s 3(xt)k 7697(run)s 8064(just)s 8460(before)s
-0 1827(their)m 488(tar)s 4(gets)k 1161(are)s 1498(closed,)s
-2206(and)s 2600(so)s 2856(the)s 3(y)k 3309(\207nd)s
-3730(their)s 4217(tar)s 4(gets)k 4891(in)s 5124(the)s
-5462(end.)s 5962(Care)s 6459(must)s 6974(be)s 7246(tak)s 2(en)k
-7809(to)s 8038(ensure)s 8708(that)s 0 1539(lar)m 4(ge)k
-526(g)s 1(alle)k 3(ys)k 1247(such)s 1739(as)s
-1986(chapters)s 2829(and)s 3230(sections)s 4047(do)s 4337(not)s
-4700(ha)s 4(v)k 3(e)k 5197(defunct)s 5971(tar)s 4(gets,)k
-6706(since)s 7250(the)s 7594(cost)s 8036(of)s 8303(cop)s 2(ying)k
-0 1251(them)m 538(to)s 777(and)s 1181(from)s 1705(the)s
-2053(database)s 2932(is)s 3142(unacceptably)s 4458(high.)s 480 877(It)m
-694(is)s 914(actually)s 1734(an)s 2027(o)s 3(v)k 3(er)k 4(-simpli\207cation)k
-3901(to)s 4150(say)s 4533(that)s 4961(these)s 5517(replacements)s
-6838(occur)s 7439(when)s 8025(the)s 8383(forcing)s 0 589(g)m 1(alle)k 3(y)k
-633(replaces)s 1464(its)s 220 fnt35 1738 586(@Galle)m 4(y)k
-240 fnt82 2576 589(.)m 2738(What)s 3315(really)s 3910(happens)s
-4744(is)s 4952(that)s 5368(from)s 5891(this)s 6285(moment)s
-7127(on)s 7422(Lout)s 7932(understands)s 0 301(that)m 414(it)s
-602(has)s 968(the)s 1311(right)s 1818(to)s 2053(mak)s 2(e)k
-2621(these)s 3163(replacements,)s 4526(and)s 4926(it)s 5114(will)s
-5535(do)s 5824(each)s 6315(one)s 6713(at)s 6940(the)s
-7284(\207rst)s 7711(moment)s 8550(when)s
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 30 36
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Times-Italic
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-0 LoutMargSet
-grestore
-240 fnt84 0 13840(30)m 240 fnt83 7257 13843(Chapter)m 8107(2.)s
-8381(Details)s 240 fnt82 0 13205(not)m 369(doing)s 972(it)s
-1168(w)s 2(ould)k 1827(hold)s 2315(things)s 2955(up.)s
-3363(So)s 3673(there)s 4210(is)s 4423(a)s 4593(short)s
-5135(period)s 5808(of)s 6083(grace)s 6660(when)s 7240(g)s 1(alle)k 3(ys,)k
-8024(such)s 8524(as)s 8778(the)s 0 12917(entries)m 687(in)s
-930(tables)s 1538(of)s 1809(contents)s 2657(just)s 3062(alluded)s
-3824(to,)s 4117(can)s 4506(sneak)s 5112(into)s 5537(these)s
-6084(recepti)s 6(v)k 3(e)k 7006(symbols.)s 480 12543(The)m
-220 fnt35 902 12540(into)m 240 fnt82 1302 12543(and)m 220 fnt35
-1699 12540(f)m 6(orce into)k 240 fnt82 2642 12543(forms)m 3243(are)s
-3584(actually)s 4387(just)s 4786(abbre)s 6(viations)k 6112(for)s
-6444(the)s 6785(true)s 7206(w)s 2(ay)k 7650(that)s
-8062(g)s 1(alle)k 3(ys)k 8779(are)s 0 12255(de\207ned,)m
-806(which)s 1442(is)s 1646(by)s 1934(gi)s 6(ving)k
-2586(the)s 2928(symbol)s 3682(that)s 4094(is)s 4297(to)s
-4530(be)s 4806(a)s 4966(g)s 1(alle)k 3(y)k
-5594(a)s 5753(parameter)s 6761(or)s 7014(nested)s 7677(de\207nition)s
-8644(with)s 0 11967(the)m 348(special)s 1066(name)s 220 fnt35
-1640 11964(@T)m 26(arget)k 240 fnt82 2467 11967(:)m 220 fnt35
-480 11466(def @T)m 26(e)k 6(xt)k 480 11178( r)m -3(ight x)k
-480 10890({)m 480 10602( def @T)m 26(arget { @T)k 26(e)k 6(xtPlace&&preceding })k
-480 10026( x)m 480 9738(})m 240 fnt82 0 9244(A)m 237(forcing)s
-988(g)s 1(alle)k 3(y)k 1630(is)s 1848(obtained)s
-2738(by)s 3039(using)s 220 fnt35 3619 9241(&&&)m 240 fnt82
-4121 9244(instead)m 4864(of)s 220 fnt35 5143 9241(&&)m 240 fnt82
-5431 9244(.)m 220 fnt35 5602 9241(@T)m 26(arget)k 240 fnt82
-6497 9244(may)m 6971(be)s 7261(an)s 7552(arbitrary)s 8435(object,)s
-0 8956(pro)m 3(vided)k 908(that)s 1329(it)s 1524(yields)s
-2149(such)s 2648(a)s 2817(cross)s 3362(reference)s 4307(when)s
-4886(e)s 6(v)k 6(aluated.)k 5957(In)s 6216(this)s
-6615(w)s 2(ay)k 15(,)k 7107(dif)s 6(ferent)k
-7985(in)s 9(v)k 4(ocations)k 0 8668(may)m 466(ha)s 4(v)k 3(e)k
-967(dif)s 6(ferent)k 1842(tar)s 4(gets.)k 480 8294(The)m
-904(forcing)s 1643(g)s 1(alle)k 3(y)k 2273(ef)s 6(fect)k
-2865(can)s 3249(be)s 3527(obtained)s 4405(in)s 4644(another)s
-5417(w)s 2(ay)k 15(,)k 5901(by)s 6191(replacing)s
-7129(the)s 220 fnt35 7473 8291(@Galle)m 4(y)k 240 fnt82
-8366 8294(symbol)m 0 8006(to)m 245(which)s 893(the)s 1247(g)s 1(alle)k 3(y)k
-1887(is)s 2103(attached)s 2964(by)s 220 fnt35 3264 8003(@F)m 6(orceGalle)k 4(y)k
-240 fnt82 4657 8006(.)m 4827(The)s 5261(adv)s 6(antage)k
-6287(of)s 6565(this)s 6967(form)s 7497(is)s 7713(that)s
-8137(the)s 8492(g)s 1(alle)k 3(y)k 0 7718(can)m
-389(then)s 858(be)s 1140(forcing)s 1883(at)s 2115(some)s
-2676(places)s 3324(and)s 3728(not)s 4094(at)s 4326(others,)s
-5017(using)s 5589(the)s 5937(formula)s 220 fnt35 480 7217(def @SomePlace r)m -3(ight x)k
-480 6929({)m 480 6641( x @Case {)m 480 6353( nof)m 6(orce @Y)k 4(ield @Galle)k 4(y)k
-480 6065( f)m 6(orce @Y)k 4(ield @F)k 6(orceGalle)k 4(y)k
-480 5777( })m 480 5489(})m 240 fnt82 0 4995(No)m 6(w)k
-514(a)s 680(g)s 1(alle)k 3(y)k 1314(may)s
-1780(ha)s 4(v)k 3(e)k 220 fnt35 2281 4992(@SomePlace)m
-240 fnt82 3677 4995(for)m 4015(its)s 4291(tar)s 4(get,)k
-4937(and)s 5341(if)s 5558(it)s 5750(happens)s 6586(to)s
-6825(attach)s 7452(to)s 220 fnt35 480 4494(@SomePlace f)m 6(orce)k
-240 fnt82 0 4039(it)m 192(will)s 618(ha)s 4(v)k 3(e)k
-1119(the)s 1467(ef)s 6(fect)k 2063(of)s 2334(a)s
-2500(forcing)s 3243(g)s 1(alle)k 3(y)k 15(,)k
-3915(while)s 4502(if)s 4719(it)s 4911(happens)s 5747(to)s
-5986(attach)s 6613(to)s 220 fnt35 480 3538(@SomePlace nof)m 6(orce)k
-240 fnt82 0 3083(it)m 192(will)s 618(not.)s 480 2709(Although)m
-1436(it)s 1621(doesn')s 4(t)k 2374(matter)s 3036(whether)s
-3859(a)s 4018(g)s 1(alle)k 3(y)k 4645(is)s
-4848(declared)s 5708(as)s 5951(a)s 6110(forcing)s 6846(g)s 1(alle)k 3(y)k
-7473(or)s 7725(merely)s 8435(arri)s 6(v)k 3(es)k
-0 2421(at)m 244(a)s 220 fnt35 422 2418(@F)m 6(orceGalle)k 4(y)k
-240 fnt82 1887 2421(symbol)m 2659(from)s 3195(the)s 3555(point)s
-4119(of)s 4402(vie)s 6(w)k 4928(of)s 5211(the)s
-5571(ef)s 6(fect)k 6179(on)s 6488(nearby)s 7205(tar)s 4(gets,)k
-7956(there)s 8501(is)s 8724(one)s 0 2133(w)m 2(ay)k
-446(in)s 683(which)s 1319(Lout)s 1825(treats)s 2387(the)s
-2729(tw)s 2(o)k 3133(cases)s 3682(dif)s 6(ferently)k 15(.)k
-4827(If)s 5051(a)s 5211(forcing)s 5948(g)s 1(alle)k 3(y')k 13(s)k
-6733(\207rst)s 7158(component)s 8276(does)s 8760(not)s 0 1845(\207t)m
-264(into)s 695(the)s 1048(a)s 4(v)k 6(ailable)k
-1962(space,)s 2606(that)s 3029(component)s 4159(will)s 4590(be)s
-4878(scaled)s 5539(v)s 3(ertically)k 6496(until)s 6995(it)s
-7192(does.)s 7801(The)s 8235(rationale)s 0 1557(for)m 343(this)s
-744(is)s 959(that)s 1382(forcing)s 2130(g)s 1(alle)k 3(ys)k
-2860(are)s 3212(meant)s 3861(to)s 4105(carry)s 4654(the)s
-5007(b)s 4(ulk)k 5496(of)s 5772(the)s 6125(document)s
-7134(and)s 7543(cannot)s 8246(af)s 6(ford)k 8887(to)s
-0 1269(be)m 295(held)s 779(up)s 1086(because)s 1913(the)s
-2275(user)s 2747(has)s 3131(inadv)s 3(ertently)k 4456(included)s
-5352(an)s 5649(o)s 3(v)k 3(er)k 4(-high)k
-6640(component,)s 7825(which)s 8481(for)s 8833(all)s 0 981(Lout)m
-514(kno)s 6(ws)k 1188(to)s 1430(the)s 1781(contrary)s
-2634(may)s 3103(not)s 3472(\207t)s 3734(on)s 4034(an)s 3(y)k
-4433(page.)s 5052(If)s 5285(this)s 5684(scaling)s 6417(is)s
-6630(not)s 6999(w)s 2(anted)k 7749(b)s 4(ut)k
-8114(forcing)s 8860(is,)s 0 693(the)m 348(g)s 1(alle)k 3(y)k
-982(may)s 1448(be)s 1730(declared)s 2597(not)s 2963(forcing)s
-3706(b)s 4(ut)k 4068(all)s 4361(its)s 4637(tar)s 4(gets)k
-5320(may)s 5786(be)s 6068(set)s 6393(to)s 6632(contain)s
-220 fnt35 7393 690(@F)m 6(orceGalle)k 4(y)k 240 fnt82
-8786 693(.)m 480 319(W)m 9(ithin)k 1197(a)s 1368(g)s 1(alle)k 3(y)k 15(,)k
-2045(a)s 2216(symbol)s 2981(whose)s 3654(name)s 4233(is)s
-220 fnt35 4448 316(@Enclose)m 240 fnt82 5508 319(has)m 5883(a)s
-6054(special)s 6777(meaning:)s 7772(when)s 8353(compo)s 8998(-)s
-
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 31 37
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Italic
-%%+ font Times-Bold
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-1 LoutMargSet
-grestore
-240 fnt83 0 13843(2.7.)m 454(Galle)s 7(ys)k 1232(and)s
-1658(tar)s 8(g)k 2(ets)k 240 fnt84 8839 13840(31)m
-240 fnt82 0 13205(nents)m 556(of)s 827(the)s 1175(g)s 1(alle)k 3(y)k
-1810(replace)s 2555(a)s 220 fnt35 2721 13202(@Galle)m 4(y)k
-240 fnt82 3619 13205(or)m 220 fnt35 3879 13202(@F)m 6(orceGalle)k 4(y)k
-240 fnt82 5332 13205(symbol,)m 6144(that)s 6562(symbol)s 7323(is)s
-7533(\207rst)s 7964(replaced)s 8832(by)s 220 fnt35 0 12914(@Enclose)m
-1055(@Galle)s 4(y)k 240 fnt82 1953 12917(or)m 220 fnt35
-2212 12914(@Enclose)m 3267(@F)s 6(orceGalle)k 4(y)k 240 fnt82
-4660 12917(.)m 4824(F)s 3(or)k 5213(e)s 3(xample,)k
-220 fnt35 480 12416(def @Enclose)m 480 12128( r)m -3(ight x)k 480 11840({)m
-480 11552( @Bo)m 6(x x)k 480 11264(})m 240 fnt82 0 10770(within)m
-714(some)s 1321(g)s 1(alle)k 3(y)k 2001(de\207nition)s
-3021(causes)s 3742(each)s 220 fnt35 4283 10767(@Galle)m 4(y)k
-240 fnt82 5227 10770(or)m 220 fnt35 5532 10767(@F)m 6(orceGalle)k 4(y)k
-240 fnt82 7031 10770(symbol)m 7837(that)s 8302(recei)s 6(v)k 3(es)k
-0 10482(components)m 1213(of)s 1489(the)s 1842(g)s 1(alle)k 3(y)k
-2481(to)s 2725(be)s 3013(replaced)s 3885(by)s 220 fnt35
-4184 10479(@Bo)m 6(x @Galle)k 4(y)k 240 fnt82 5743 10482(or)m
-220 fnt35 6007 10479(@Bo)m 6(x @F)k 6(orceGalle)k 4(y)k
-240 fnt82 8056 10482(,)m 8169(assuming)s 0 10194(an)m 314(appropriate)s
-1489(de\207nition)s 2495(of)s 220 fnt35 2797 10191(@Bo)m 6(x.)k
-240 fnt82 3586 10194(This)m 4093(is)s 4334(useful,)s 5057(for)s
-5426(e)s 3(xample,)k 6372(when)s 6979(producing)s 8035(multi-page)s
-0 9906(box)m 3(ed)k 641(displays,)s 1532(\207gures,)s 2290(and)s
-2694(tables.)s 480 9532(An)m 220 fnt35 861 9529(@Enclose)m 240 fnt82
-1947 9532(symbol)m 2739(may)s 3236(ha)s 4(v)k 3(e)k
-3769(only)s 4280(one)s 4714(parameter)s 9(,)k 5797(which)s
-6471(must)s 7027(be)s 7341(a)s 7538(right)s 8081(parameter)s 13(.)k
-0 9244(It)m 213(w)s 2(ould)k 877(not)s 1252(mak)s 2(e)k
-1833(sense)s 2416(to)s 2664(allo)s 6(w)k 3252(more)s
-3808(parameters,)s 4971(since)s 5527(there)s 6069(is)s 6288(no)s
-6590(suitable)s 7398(v)s 6(alue)k 7975(to)s 8223(assign)s
-8887(to)s 0 8956(them.)m 655(Ho)s 6(we)k 6(v)k 3(er)k 9(,)k
-1628(the)s 220 fnt35 1989 8953(@Enclose)m 240 fnt82 3058 8956(symbol)m
-3831(may)s 4310(contain)s 5085(inner)s 5649(de\207nitions,)s 6779(and)s
-7196(it)s 7402(may)s 7881(mak)s 2(e)k 8466(use)s
-8855(of)s 0 8668(an)m 3(y)k 397(symbol)s 1157(that)s
-1575(is)s 1785(a)s 4(v)k 6(ailable)k 2693(at)s
-2925(that)s 3343(point,)s 3942(in)s 4185(the)s 4533(usual)s
-5093(w)s 2(ay)k 15(.)k 480 8294(A)m 220 fnt35
-709 8291(f)m 6(ollo)k 3(wing)k 240 fnt82 1597 8294(g)m 1(alle)k 3(y)k
-2229(may)s 2693(f)s 2(ail)k 3061(to)s 3299(\207nd)s
-3728(a)s 3892(\207rst)s 4321(tar)s 4(get)k 4918(lying)s
-5461(in)s 5703(a)s 5867(follo)s 6(wing)k 6842(component)s
-7964(of)s 8233(the)s 8579(same)s 0 8006(g)m 1(alle)k 3(y)k
-634(as)s 884(its)s 1159(in)s 9(v)k 4(ocation)k
-2213(point.)s 2868(This)s 3344(is)s 3553(a)s 3719(de\207cienc)s 3(y)k
-4752(of)s 5023(Basser)s 5719(Lout,)s 6278(which)s 6919(occurs)s
-7594(if)s 7810(the)s 8158(tar)s 4(get)k 8756(has)s
-0 7718(not)m 356(been)s 855(read)s 1313(from)s 1827(input)s
-2369(at)s 2590(the)s 2928(time)s 3398(the)s 3735(g)s 1(alle)k 3(y)k
-4359(tries)s 4810(to)s 5038(\207nd)s 5459(it.)s 5745(A)s
-5964(w)s 2(orkaround)k 7167(is)s 7367(to)s 7595(use)s
-7960(a)s 220 fnt35 8115 7715(preceding)m 240 fnt82 0 7430(g)m 1(alle)k 3(y)k
-634(instead,)s 1418(de\207ned)s 2181(lik)s 2(e)k 2593(this:)s
-220 fnt35 480 6929(def @A)m 6(Galle)k 4(y into { @A)k 6(Galle)k 4(yPlace&&preceding })k
-480 6641( r)m -3(ight @Body)k 480 6353({)m 480 6065( //1.1b)m 480 5777( @Body)m
-480 5489(})m 240 fnt82 0 4995(and)m 404(in)s 9(v)k 4(ok)k 2(ed)k
-1219(lik)s 2(e)k 1631(this:)s 220 fnt35 480 4543(@A)m 6(Galle)k 4(yPlace | @A)k 6(Galle)k 4(y { content of galle)k 4(y })k
-480 4255(//)m 480 3967(...)m 480 3679(@A)m 6(Galle)k 4(yPlace)k
-240 fnt82 0 3181(The)m 419(\207rst)s 220 fnt35 841 3178(@A)m 6(Galle)k 4(yPlace)k
-240 fnt82 2411 3181(recei)m 6(v)k 3(es)k 3226(only)s
-3696(the)s 4035(initial)s 4636(empty)s 5279(object,)s 5960(since)s
-6498(the)s 220 fnt35 6836 3178(//1.1b)m 240 fnt82 7428 3181(forces)m
-8052(a)s 8209(split;)s 8722(and)s 0 2893(the)m 348(Second)s
-1111(La)s 3(w)k 1587(puts)s 2037(Basser)s 2734(Lout)s
-3246(on)s 3543(the)s 3891(right)s 4402(track)s 4940(thereafter)s 13(.)k
-240 fnt84 0 2100(2.8.)m 471(Sorted)s 1203(galleys)s 240 fnt82
-480 1623(When)m 1128(footnotes)s 2088(are)s 2455(placed)s 3156(at)s
-3407(the)s 3775(bottom)s 4532(of)s 4823(a)s 5008(page,)s
-5586(the)s 3(y)k 6069(appear)s 6785(there)s 7337(in)s
-7600(\207rst)s 8050(come,)s 8695(\207rst)s 0 1335(serv)m 3(ed)k
-674(order)s 13(.)k 1324(T)s 19(o)k 1618(mak)s 2(e)k
-2185(g)s 1(alle)k 3(ys)k 2903(appear)s 3595(in)s
-3832(sorted)s 4469(order)s 9(,)k 5065(as)s 5310(is)s
-5514(needed)s 6245(in)s 6482(bibliographies)s 7896(and)s 8294(inde)s 3(x)k 3(es,)k
-0 1047(a)m 178(parameter)s 1205(or)s 1477(nested)s 2158(de\207nition)s
-3145(with)s 3640(the)s 4000(special)s 4731(name)s 220 fnt35
-5318 1044(@K)m 8(e)k 4(y)k 240 fnt82 5977 1047(is)m
-6200(added)s 6843(to)s 7094(the)s 7455(g)s 1(alle)k 3(y)k
-8102(de\207nition,)s 0 759(lik)m 2(e)k 412(this:)s
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 32 38
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Times-Italic
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-0 LoutMargSet
-grestore
-240 fnt84 0 13840(32)m 240 fnt83 7257 13843(Chapter)m 8107(2.)s
-8381(Details)s 220 fnt35 480 13207(def @Inde)m 6(xEntr)k -6(y into { @Inde)k 6(xPlace&&f)k 6(ollo)k 3(wing })k
-480 12919( left @K)m 8(e)k 4(y)k 480 12631( r)m -3(ight x)k
-480 12343({ x })m 0 11846(@K)m 8(e)k 4(y)k 240 fnt82
-674 11849(must)m 1226(be)s 1535(set)s 1887(to)s 2153(a)s
-2346(simple)s 3066(w)s 2(ord,)k 3690(or)s 3976(se)s 6(v)k 3(eral)k
-4725(w)s 2(ords)k 5386(with)s 5895(nothing)s 6707(more)s
-7281(comple)s 3(x)k 8184(than)s 8681(font)s 0 11561(changes)m
-822(within)s 1490(them,)s 2075(when)s 2651(the)s 2999(g)s 1(alle)k 3(y)k
-3633(is)s 3843(in)s 9(v)k 4(ok)k 2(ed:)k
-220 fnt35 480 11060({ cities compare } @Inde)m 6(xEntr)k -6(y { cities)k 3(, compar)k -3(ison of)k 6(, 27 })k
-240 fnt82 0 10562(and)m 404(this)s 800(k)s 2(e)k 3(y)k
-1195(is)s 1405(used)s 1902(to)s 2141(sort)s 2559(the)s
-2907(g)s 1(alle)k 3(ys.)k 480 10188(If)m 707(se)s 6(v)k 3(eral)k
-1425(sorted)s 2063(g)s 1(alle)k 3(ys)k 2783(with)s
-3261(the)s 3605(same)s 4148(k)s 2(e)k 3(y)k
-4539(are)s 4882(sent)s 5323(to)s 5558(the)s 5902(same)s
-6445(place,)s 7052(the)s 7396(def)s 2(ault)k 8113(beha)s 4(viour)k
-0 9900(is)m 253(to)s 536(print)s 1091(only)s 1615(the)s
-2007(\207rst)s 2481(of)s 2796(them;)s 3430(the)s 3822(assumption)s
-5013(is)s 5266(that)s 5728(the)s 6120(others)s 6799(are)s
-7190(probably)s 8139(unw)s 2(anted)k 0 9612(duplicates.)m 1146(This)s
-1636(holds)s 2220(good)s 2772(for)s 3123(sorted)s 3779(reference)s
-4736(lists,)s 5241(for)s 5593(e)s 3(xample:)k 6579(we)s
-6928(don')s 4(t)k 7503(w)s 2(ant)k 8040(tw)s 2(o)k
-8464(copies)s 0 9324(of)m 273(a)s 442(reference)s 1388(just)s
-1796(because)s 2611(we)s 2949(happen)s 3701(to)s 3943(cite)s
-4345(it)s 4540(twice.)s 5224(Ho)s 6(we)k 6(v)k 3(er)k 9(,)k
-6187(the)s 6537(other)s 7091(common)s 7989(e)s 3(xample)k
-8855(of)s 0 9036(sorted)m 642(g)s 1(alle)k 3(ys,)k
-1422(inde)s 3(x)k 2006(entries,)s 2749(requires)s 3569(something)s
-4619(dif)s 6(ferent:)k 240 fnt83 5600 9038(mer)m 8(g)k 2(ed)k
-240 fnt82 6374 9036(g)m 1(alle)k 3(ys.)k 480 8662(Suppose)m
-1348(that)s 1766(at)s 1998(some)s 2559(point)s 3111(of)s
-3382(the)s 3730(document)s 4734(we)s 5069(insert)s 5659(the)s
-6007(inde)s 3(x)k 6591(entry)s 220 fnt35 480 8161(aardv)m 5(ar)k -3(ks @Inde)k 6(xEntr)k -6(y { Aardv)k 5(ar)k -3(ks)k 3(, 23 })k
-240 fnt82 0 7663(while)m 587(at)s 819(another)s 1596(point)s
-2148(we)s 2483(insert)s 220 fnt35 480 7162(aardv)m 5(ar)k -3(ks @Inde)k 6(xEntr)k -6(y { Aardv)k 5(ar)k -3(ks)k 3(, 359 })k
-240 fnt82 0 6664(Ho)m 6(w)k 505(the)s 843(page)s
-1341(numbers)s 2206(are)s 2544(w)s 2(ork)k 2(ed)k
-3306(out)s 3662(is)s 3862(not)s 4219(rele)s 6(v)k 6(ant)k
-5026(here.)s 5591(Clearly)s 6338(we)s 6664(w)s 2(ould)k
-7309(lik)s 2(e)k 7711(to)s 7940(mer)s 4(ge)k
-8579(these)s 0 6376(tw)m 2(o)k 410(entries)s 1097(into)s
-1522(one)s 1924(entry)s 2469(that)s 2887(comes)s 3549(out)s
-3915(as)s 480 5871(Aardv)m 6(arks, 23, 359)k 0 5387(The)m 428(follo)s 6(wing)k
-1405(de\207nition)s 2379(will)s 2805(mer)s 4(ge)k 3454(tw)s 2(o)k
-3864(objects)s 4592(in)s 4835(this)s 5231(w)s 2(ay:)k
-220 fnt35 480 4886(def @Merge left x r)m -3(ight y)k 480 4598({)m 480 4310( {x @Rump y} @Case)m
-480 4022( {)m 480 3734( "" @Y)m 4(ield x)k 480 3446( else @Y)m 4(ield { x, x @Rump y })k
-480 3158( })m 480 2870(})m 240 fnt82 0 2376(The)m 220 fnt35
-429 2373(@Rump)m 240 fnt82 1290 2376(symbol)m 2051(is)s 2262(the)s
-2611(subject)s 3349(of)s 3621(Section)s 4396(3.23;)s 4929(this)s
-5326(says)s 5790(`if)s 6087(the)s 6436(tw)s 2(o)k
-6847(things)s 7484(to)s 7724(be)s 8007(mer)s 4(ged)k
-8779(are)s 0 2088(equal,)m 622(the)s 967(result)s 1553(is)s
-1760(one)s 2158(of)s 2426(them;)s 3012(otherwise)s 3994(it)s
-4182(is)s 4389(the)s 4733(\207rst)s 5161(follo)s 6(wed)k
-6059(by)s 6350(a)s 6512(comma)s 7273(and)s 7673(space)s
-8257(and)s 8657(then)s 0 1800(the)m 355(rump)s 921(of)s
-1200(the)s 1556(second.)s 16(')k 2445(Our)s 2885(only)s
-3372(problem)s 4237(is)s 4455(that)s 4881(this)s 5285(symbol)s
-6053(has)s 6430(to)s 6677(be)s 6967(applied)s 7737(to)s
-7984(tw)s 2(o)k 8402(g)s 1(alle)k 3(ys)k
-0 1512(from)m 524(widely)s 1229(separated)s 2189(parts)s 2704(of)s
-2975(the)s 3323(document.)s 480 1138(Lout)m 993(mak)s 2(es)k
-1654(this)s 2052(possible)s 2893(by)s 3189(the)s 3538(follo)s 6(wing)k
-4517(special)s 5236(rule:)s 5775(if)s 5993(a)s 6161(sorted)s
-6804(g)s 1(alle)k 3(y)k 7440(contains)s 8289(a)s
-8457(nested)s 0 850(de\207nition)m 965(of)s 1227(a)s 1383(symbol)s
-2134(whose)s 2793(name)s 3357(is)s 220 fnt35 3558 847(@Merge)m
-240 fnt82 4446 850(\()m 220 fnt35 4519 847(@Merge)m 240 fnt82
-5406 850(must)m 5922(ha)s 4(v)k 3(e)k 6414(just)s
-6809(tw)s 2(o)k 7210(parameters,)s 8355(left)s 8722(and)s
-0 562(right\),)m 643(and)s 1054(if)s 1277(that)s 1702(sorted)s
-2350(g)s 1(alle)k 3(y)k 2991(is)s 3207(preceded)s
-4135(in)s 4384(the)s 4739(list)s 5096(of)s 5374(sorted)s
-6022(g)s 1(alle)k 3(ys)k 6753(destined)s 7614(for)s
-7959(some)s 8527(tar)s 4(get)k 0 274(by)m 300(another)s
-1084(sorted)s 1733(g)s 1(alle)k 3(y)k 2374(with)s
-2863(the)s 3217(same)s 3771(k)s 2(e)k 3(y)k 15(,)k
-4211(then)s 4687(rather)s 5310(than)s 5785(being)s 6377(discarded,)s
-7407(the)s 7762(second)s 8492(g)s 1(alle)k 3(y)k
-
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 33 39
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Italic
-%%+ font Times-Bold
-%%+ font Helvetica
-%%+ font Symbol
-/pgsave save def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-1 LoutMargSet
-grestore
-240 fnt83 0 13843(2.8.)m 454(Sorted)s 1145(galle)s 7(ys)k
-240 fnt84 8833 13840(33)m 240 fnt82 0 13205(is)m 210(mer)s 4(ged)k
-981(into)s 1406(the)s 1754(\207rst)s 2185(using)s 2757(the)s
-220 fnt35 3105 13202(@Merge)m 240 fnt82 4002 13205(symbol.)m 480 12831(The)m
-909(natural)s 1629(thing)s 2175(to)s 2416(do)s 2711(when)s
-3288(more)s 3837(than)s 4307(tw)s 2(o)k 4719(g)s 1(alle)k 3(ys)k
-5445(ha)s 4(v)k 3(e)k 5947(the)s 6297(same)s
-6845(k)s 2(e)k 3(y)k 7242(is)s 7454(to)s
-7694(mer)s 4(ge)k 8345(the)s 8695(\207rst)s 0 12543(tw)m 2(o,)k
-477(then)s 959(mer)s 4(ge)k 1621(the)s 1982(third)s
-2504(with)s 2999(the)s 3360(result)s 3963(of)s 4247(that,)s
-4725(then)s 5207(the)s 5568(fourth)s 6222(with)s 6717(the)s
-7078(result)s 7681(of)s 7965(that,)s 8443(and)s 8860(so)s
-0 12255(on.)m 403(F)s 3(or)k 790(ef\207cienc)s 3(y)k
-1781(reasons)s 2547(be)s 3(yond)k 3306(our)s 3684(scope)s
-4283(here,)s 4799(Lout)s 5309(does)s 5797(the)s 6144(mer)s 4(ging)k
-6988(in)s 7229(a)s 7393(dif)s 6(ferent)k 8266(order:)s
-8934(it)s 0 11967(mer)m 4(ges)k 240 fnt83 736 11969(n)m
-240 fnt82 909 11967(g)m 1(alle)k 3(ys)k 1632(by)s
-1925(mer)s 4(ging)k 2770(the)s 3116(\207rst)s 240 fnt78
-3592 11925(\353)m 240 fnt83 3685 11969(n)m 240 fnt78 3809 11961(/)m
-3881(2)s 4006 11925(\373)m 240 fnt82 4197 11967(together)m 9(,)k
-5077(then)s 5545(the)s 5892(last)s 240 fnt78 6327 11937(\351)m
-240 fnt83 6420 11969(n)m 240 fnt78 6545 11961(/)m 6617(2)s
-6741 11937(\371)m 240 fnt82 6933 11967(together)m 9(,)k 7813(then)s
-8280(mer)s 4(ging)k 0 11679(the)m 337(result.)s 1019(Of)s
-1332(course,)s 2051(if)s 2257(the)s 220 fnt35 2593 11676(@Merge)m
-240 fnt82 3479 11679(symbol)m 4227(is)s 4426(associati)s 6(v)k 3(e)k
-5509(this)s 5894(has)s 6252(the)s 6589(same)s 7124(ef)s 6(fect.)k
-7813(The)s 220 fnt35 8229 11676(@Merge)m 240 fnt82 0 11391(symbol)m
-758(abo)s 3(v)k 3(e)k 1377(is)s 1584(not)s
-1947(strictly)s 2660(associati)s 6(v)k 3(e,)k 3803(b)s 4(ut)k
-4162(it)s 4351(is)s 4559(close)s 5103(enough)s 5863(in)s
-6103(practice.)s 7019(The)s 7444(total)s 7920(time)s 8397(it)s
-8586(tak)s 2(es)k 0 11103(to)m 252(mer)s 4(ge)k
-240 fnt83 915 11105(n)m 240 fnt82 1102 11103(g)m 1(alle)k 3(ys)k
-1840(with)s 2335(equal)s 2922(k)s 2(e)k 3(ys)k
-3421(is)s 240 fnt83 3644 11105(O)m 240 fnt78 3838 11097(\()m
-168 fnt78 4049 11196(2)m 240 fnt83 3935 11105(n)m 240 fnt78
-4155 11097(\))m 240 fnt82 4294 11103(or)m 4567(some)s 6(what)k
-5605(higher)s 6289(\(b)s 4(ut)k 6744(al)s 2(w)k 2(ays)k
-7468(polynomial)s 8627(in)s 240 fnt83 8884 11105(n)m 240 fnt82
-8998 11103(\))m 0 10815(depending)m 1053(on)s 1353(ho)s 6(w)k
-1816(man)s 3(y)k 2402(times)s 2972(the)s 3323(parameters)s
-4424(occur)s 5017(within)s 5688(the)s 6038(body)s 6575(of)s
-220 fnt35 6849 10812(@Merge)m 240 fnt82 7686 10815(;)m 7800(to)s
-8042(do)s 8337(it)s 8532(in)s 8778(the)s 0 10527(natural)m
-718(linear)s 1321(order)s 1885(w)s 2(ould)k 2540(tak)s 2(e)k
-2992(Lout)s 3504(e)s 3(xponential)k 4672(time.)s 240 fnt84
-0 9734(2.9.)m 471(Horizontal)s 1628(galleys)s 240 fnt82 480 9257(All)m
-846(the)s 1201(g)s 1(alle)k 3(ys)k 1932(so)s
-2205(f)s 2(ar)k 2534(ha)s 4(v)k 3(e)k
-3042(been)s 240 fnt83 3557 9259(vertical)m 4353(galle)s 7(ys)k
-240 fnt82 5018 9257(:)m 5191(g)s 1(alle)k 3(ys)k
-5922(whose)s 6597(components)s 7812(are)s 8166(separated)s 0 8969(by)m
-320(v)s 3(ertical)k 1114(concatenation)s 2525(symbols.)s 3514(There)s
-4154(are)s 4527(also)s 4992(horizontal)s 6043(g)s 1(alle)k 3(ys,)k
-6849(whose)s 7544(components)s 8779(are)s 0 8681(separated)m 951(by)s
-1235(the)s 1574(horizontal)s 2588(concatenation)s 3963(operator)s 220 fnt35
-4810 8678(&)m 240 fnt82 5002 8681(\(or)m 5331(equi)s 6(v)k 6(alently)k 15(,)k
-6583(by)s 6867(spaces\).)s 7725(These)s 8342(w)s 2(ork)k
-8883(in)s 0 8393(the)m 346(same)s 891(w)s 2(ay)k
-1340(as)s 1588(v)s 3(ertical)k 2353(g)s 1(alle)k 3(ys,)k
-3131(e)s 3(xcept)k 3810(for)s 4146(the)s 4492(change)s
-5224(of)s 5493(direction.)s 6504(F)s 3(or)k 6891(e)s 3(xample,)k
-7803(the)s 8149(follo)s 6(wing)k 0 8105(de\207nes)m 730(the)s
-1079(equi)s 6(v)k 6(alent)k 2124(of)s 2396(an)s
-2681(ordinary)s 3546(outdented)s 4549(paragraph,)s 5613(e)s 3(xcept)k
-6295(that)s 6715(an)s 6999(option)s 7669(is)s 7880(pro)s 3(vided)k
-8788(for)s 0 7817(v)m 6(arying)k 778(the)s 1126(size)s
-1553(of)s 1824(the)s 2172(outdent:)s 220 fnt35 480 7316(def @OutdentP)m 8(ar)k
-480 7028( named outdent { 2f })m 480 6740( r)m -3(ight x)k 480 6452({)m 480 6164( def @P)m 8(arPlace { @Galle)k 4(y })k
-480 5588( def @LineList)m 480 5300( {)m 480 5012( outdent @Wide {} | @P)m 26(Adjust @P)k 8(arPlace)k
-480 4724( //1vx @LineList)m 480 4436( })m 480 3860( def @P)m 8(arGalle)k 4(y f)k 6(orce hor)k -3(iz)k 3(ontally into { @P)k 8(arPlace&&preceding })k
-480 3572( r)m -3(ight x)k 480 3284( {)m 480 2996( x)m 480 2708( })m
-480 2132( @P)m 26(Adjust @P)k 8(arPlace)k 480 1844( // @P)m 8(arGalle)k 4(y { x &1r)k -8(t })k
-480 1556( //1vx @LineList)m 480 1268(})m 240 fnt82 0 774(Notice)m 703(the)s
-1061(use)s 1446(of)s 220 fnt35 1727 771(&1r)m -8(t)k
-240 fnt82 2203 774(to)m 2452(cancel)s 3127(the)s 3485(ef)s 6(fect)k
-4091(of)s 220 fnt35 4372 771(@P)m 26(Adjust)k 240 fnt82
-5390 774(on)m 5697(the)s 6055(last)s 6456(line)s 6880(of)s
-7161(the)s 7519(paragraph.)s 8650(This)s 0 486(de\207nition)m 969(has)s
-1334(a)s 1494(problem)s 2346(in)s 2584(that)s 2996(there)s
-3524(will)s 3945(be)s 4221(a)s 4382(concluding)s 5494(une)s 3(xpanded)k
-220 fnt35 6701 483(@LineList)m 240 fnt82 7730 486(symbol)m 8484(which)s
-0 198(will)m 431(hold)s 921(up)s 1219(promotion)s 2279(of)s
-2555(the)s 2909(enclosing)s 3884(g)s 1(alle)k 3(y;)k
-4582(this)s 4983(problem)s 5846(may)s 6317(be)s 6605(\207x)s 3(ed)k
-7144(by)s 7444(the)s 7797(same)s 8350(method)s
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 34 40
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Times-Italic
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-0 LoutMargSet
-grestore
-240 fnt84 0 13840(34)m 240 fnt83 7257 13843(Chapter)m 8107(2.)s
-8381(Details)s 240 fnt82 0 13205(used)m 497(to)s 736(end)s
-1140(a)s 1306(list.)s 480 12831(In)m 735(an)s 1016(ideal)s
-1533(w)s 2(orld,)k 2194(there)s 2725(w)s 2(ould)k
-3378(be)s 3658(nothing)s 4442(further)s 5149(to)s 5386(say)s
-5757(about)s 6347(horizontal)s 7369(g)s 1(alle)k 3(ys.)k
-8204(Ho)s 6(we)k 6(v)k 3(er)k 0 12543(there)m
-558(are)s 931(a)s 1123(fe)s 6(w)k 1555(dif)s 6(ferences)k
-2686(which)s 3354(arise)s 3886(from)s 4436(v)s 6(arious)k
-5211(practical)s 6113(considerations)s 7571(and)s 8001(limitations.)s 0 12255(Perhaps)m
-808(some)s 1369(day)s 1769(a)s 1935(more)s 2482(perfect)s
-3204(symmetry)s 4214(will)s 4640(be)s 4922(implemented.)s 480 11881(Each)m
-1021(v)s 3(ertical)k 1795(g)s 1(alle)k 3(y)k
-2436(has)s 2812(a)s 2985(\207x)s 3(ed)k 3526(\207nite)s
-4080(width,)s 4738(and)s 5149(e)s 6(v)k 3(ery)k
-5732(component)s 6863(is)s 7079(brok)s 2(en)k 7806(to)s
-8052(that)s 8477(width.)s 0 11593(This)m 517(is)s 769(needed)s
-1546(basically)s 2491(to)s 2772(trigger)s 3509(paragraph)s 4564(breaking.)s
-5606(Ho)s 6(we)k 6(v)k 3(er)k 9(,)k
-6608(there)s 7183(is)s 7434(no)s 7769(equi)s 6(v)k 6(alent)k
-8855(of)s 0 11305(paragraph)m 1001(breaking)s 1879(in)s 2110(the)s
-2446(v)s 3(ertical)k 3201(direction,)s 4145(so)s 4398(horizontal)s
-5410(g)s 1(alle)k 3(ys)k 6122(do)s 6403(not)s
-6757(ha)s 4(v)k 3(e)k 7246(an)s 3(y)k
-7631(particular)s 8592(\207x)s 3(ed)k 0 11017(height.)m 762(Instead,)s
-1559(each)s 2054(component)s 3178(has)s 3548(its)s 3824(o)s 6(wn)k
-4288(indi)s 6(vidual)k 5307(height.)s 480 10643(When)m 1096(tw)s 2(o)k
-1492(objects)s 2206(are)s 2539(separated)s 3485(by)s 220 fnt35
-3766 10640(/)m 240 fnt82 3830 10643(,)m 3923(the)s 3(y)k
-4372(are)s 4705(assigned)s 5573(the)s 5908(same)s 6441(width)s
-7029(\(Section)s 7868(2.7\),)s 8340(and)s 8730(this)s 0 10355(holds)m
-581(true)s 1020(e)s 6(v)k 3(en)k 1531(if)s
-1760(the)s 2119(tw)s 2(o)k 2541(objects)s 3280(are)s
-3639(subsequently)s 4954(separated)s 5926(by)s 6231(being)s 6828(promoted)s
-7814(into)s 8251(dif)s 6(ferent)k 0 10067(tar)m 4(gets.)k
-788(F)s 3(or)k 1169(e)s 3(xample,)k 2074(tw)s 2(o)k
-2476(aligned)s 3229(equations)s 4189(will)s 4606(ha)s 4(v)k 3(e)k
-5099(the)s 5439(same)s 5977(width,)s 6621(and)s 7016(hence)s
-7622(their)s 8110(alignment)s 0 9779(will)m 437(be)s 731(preserv)s 3(ed,)k
-1776(e)s 6(v)k 3(en)k 2287(if)s 2516(the)s 3(y)k
-2991(appear)s 3699(in)s 3954(dif)s 6(ferent)k 4841(columns)s
-5714(or)s 5985(pages.)s 6706(Ho)s 6(we)k 6(v)k 3(er)k 9(,)k
-7677(e)s 6(v)k 3(en)k 8189(though)s 220 fnt35
-8924 9776(&)m 240 fnt82 0 9491(aligns)m 635(the)s 996(marks)s
-1644(of)s 1928(its)s 2217(tw)s 2(o)k 2640(parameters,)s
-3807(it)s 4012(does)s 4515(not)s 4894(assign)s 5562(them)s
-6113(a)s 6292(common)s 7200(height.)s 7975(This)s 8464(means)s
-0 9203(that)m 416(the)s 762(height)s 1417(of)s 1686(an)s 3(y)k
-2081(component)s 3202(of)s 3471(a)s 3634(horizontal)s 4656(g)s 1(alle)k 3(y)k
-5288(promoted)s 6260(into)s 6683(one)s 7083(tar)s 4(get)k
-7679(does)s 8167(not)s 8530(af)s 6(fect)k 0 8915(the)m
-362(height)s 1034(consumed)s 2078(by)s 2386(the)s 2748(components)s
-3971(promoted)s 4960(into)s 5400(an)s 3(y)k 5811(other)s
-6376(tar)s 4(get.)k 7094(The)s 7536(other)s 8102(horizontal)s
-0 8627(concatenation)m 1392(operator)s 9(,)k 220 fnt35 2293 8624(|)m
-240 fnt82 2330 8627(,)m 2444(does)s 2941(assign)s 3604(a)s
-3777(common)s 4679(height)s 5344(to)s 5590(its)s 5874(tw)s 2(o)k
-6291(parameters;)s 7457(b)s 4(ut)k 7826(sequences)s 8855(of)s
-0 8339(objects)m 728(separated)s 1688(by)s 1982(this)s 2378(operator)s
-3234(cannot)s 3932(be)s 4214(the)s 4562(components)s 5770(of)s
-6041(a)s 6207(horizontal)s 7231(g)s 1(alle)k 3(y)k 15(.)k
-480 7965(Lout)m 985(is)s 1187(able)s 1633(to)s 1864(read)s
-2325(v)s 3(ertical)k 3084(g)s 1(alle)k 3(ys)k
-3800(one)s 4194(paragraph)s 5199(at)s 5424(a)s 5582(time;)s
-6110(in)s 6345(this)s 6733(w)s 2(ay)k 7176(it)s
-7360(processes)s 8319(the)s 8659(doc)s 8998(-)s 0 7677(ument)m
-660(in)s 906(small)s 1481(chunks,)s 2270(ne)s 6(v)k 3(er)k
-2855(holding)s 3642(more)s 4192(than)s 4664(a)s 4833(fe)s 6(w)k
-5242(pages)s 5840(in)s 6086(memory)s 6940(at)s 7175(an)s 3(y)k
-7575(time.)s 8166(Ho)s 6(we)k 6(v)k 3(er)k 9(,)k
-0 7389(horizontal)m 1024(g)s 1(alle)k 3(ys)k 1748(are)s
-2095(al)s 2(w)k 2(ays)k 2806(read)s 3275(in)s
-3518(completely)s 15(,)k 4672(so)s 4938(the)s 3(y)k
-5401(should)s 6098(not)s 6464(be)s 6746(e)s 3(xtremely)k
-7752(long.)s 480 7015(In)m 744(principle)s 1658(Lout)s 2178(should)s
-2884(be)s 3174(able)s 3637(to)s 3884(h)s 1(yphenate)k
-4932(the)s 5288(components)s 6505(of)s 6784(horizontal)s 7817(g)s 1(alle)k 3(ys)k
-8550(when)s 0 6727(the)m 3(y)k 463(are)s 810(simple)s
-1503(w)s 2(ords,)k 2193(b)s 4(ut)k 2555(this)s
-2951(is)s 3161(not)s 3527(implemented)s 4833(at)s 5065(present.)s
-480 6353(In)m 738(an)s 1023(ideal)s 1544(w)s 2(orld,)k
-2209(e)s 6(v)k 3(ery)k 2787(paragraph)s 3802(w)s 2(ould)k
-4459(be)s 4743(treated)s 5452(as)s 5704(a)s 5872(horizontal)s
-6898(g)s 1(alle)k 3(y)k 15(.)k 7629(Ho)s 6(we)k 6(v)k 3(er)k 9(,)k
-8591(to)s 8833(do)s 0 6065(so)m 256(in)s 488(practice)s
-1288(w)s 2(ould)k 1932(be)s 2203(too)s 2551(slo)s 6(w)k
-3040(and)s 3433(w)s 2(ould)k 4077(lead)s 4522(to)s
-4750(e)s 3(xcessi)k 6(v)k 3(e)k 5699(clumsiness)s
-6788(in)s 7020(notation,)s 7900(so)s 8155(at)s 8376(present)s
-0 5777(Lout)m 509(has)s 876(tw)s 2(o)k 1282(competing)s
-2342(mechanisms)s 3572(in)s 3811(this)s 4204(area:)s 4764(the)s
-5108(b)s 4(uilt-in)k 5861(paragraph)s 6871(break)s 2(er)k
-7641(with)s 8120(its)s 8392(limited)s 0 5489(set)m 314(of)s
-573(options)s 1318(as)s 1556(gi)s 6(v)k 3(en)k
-2124(under)s 2718(the)s 220 fnt35 3054 5486(@Break)m 240 fnt82
-3899 5489(operator)m 9(,)k 4781(and)s 5173(horizontal)s 6186(g)s 1(alle)k 3(ys.)k
-7011(As)s 7317(the)s 7653(e)s 3(xample)k 8504(abo)s 3(v)k 3(e)k
-0 5201(sho)m 6(ws,)k 700(horizontal)s 1725(g)s 1(alle)k 3(ys)k
-2449(are)s 2797(in)s 3040(principle)s 3946(capable)s 4733(of)s
-5004(implementing)s 6386(man)s 3(y)k 6969(more)s 7517(paragraph)s
-8531(styles)s 0 4913(than)m 470(the)s 820(b)s 4(uilt-in)k
-1578(paragraph)s 2593(break)s 2(er)k 3369(could)s 3961(e)s 6(v)k 3(er)k
-4425(hope)s 4949(to)s 5190(do.)s 5596(The)s 6026(recommended)s
-7441(practical)s 8319(strate)s 3(gy)k 0 4625(is)m 221(to)s
-472(use)s 858(the)s 1218(b)s 4(uilt-in)k 1985(paragraph)s
-3010(break)s 2(er)k 3795(most)s 4332(of)s 4614(the)s
-4974(time,)s 5516(and)s 5932(switch)s 6624(to)s 6875(horizontal)s
-7910(g)s 1(alle)k 3(ys)k 8646(only)s 0 4337(for)m
-338(occasional)s 1402(tricks,)s 2039(such)s 2535(as)s 2785(paragraphs)s
-3885(with)s 4367(drop)s 4859(capitals,)s 5695(circular)s 6483(outlines,)s
-7347(etc.)s 240 fnt84 0 3544(2.10.)m 591(Optimal)s 1495(galley)s
-2149(br)s 4(eaking)k 240 fnt82 480 3067(As)m 814(e)s 3(xplained)k
-1817(in)s 2077(Section)s 2869(2.7,)s 3294(the)s 3659(components)s
-4885(of)s 5174(a)s 5357(g)s 1(alle)k 3(y)k
-6009(are)s 6373(promoted)s 7366(one)s 7786(by)s 8097(one)s
-8517(into)s 8960(a)s 0 2779(tar)m 4(get.)k 703(When)s
-1332(space)s 1919(runs)s 2382(out)s 2748(there,)s 3332(the)s
-3680(g)s 1(alle)k 3(y)k 4314(searches)s 5174(for)s
-5512(a)s 5678(ne)s 6(w)k 6125(tar)s 4(get)k
-6724(and)s 7128(promotion)s 8182(resumes.)s 480 2405(This)m 977(process)s
-1766(is)s 1997(e)s 3(xactly)k 2759(analogous)s 3802(to)s
-4062(placing)s 4840(w)s 2(ords)k 5495(onto)s 5995(a)s
-6182(line)s 6617(until)s 7131(space)s 7739(runs)s 8223(out,)s
-8657(then)s 0 2117(mo)m 3(ving)k 776(to)s 1008(another)s
-1778(line.)s 2293(But,)s 2740(as)s 2983(we)s 3311(kno)s 6(w)k 15(,)k
-3923(that)s 4335(simple)s 5021(method)s 5790(is)s 5993(inferior)s
-6762(to)s 6994(the)s 7335(optimal)s 8113(paragraph)s 0 1829(breaking)m
-893(used)s 1393(by)s 1690(Lout)s 2206(\(copied)s 2984(from)s
-3511(the)s 3863(T)s 3959 1781(E)m 4067 1829(X)m 4299(system\),)s
-5152(which)s 5797(e)s 3(xamines)k 6752(the)s 7103(entire)s
-7705(paragraph)s 8722(and)s 0 1541(determines)m 1099(the)s 1447(most)s
-1972(e)s 6(v)k 3(en)k 2472(assignment)s 3608(of)s
-3879(w)s 2(ords)k 4513(to)s 4752(lines.)s 480 1167(Lout)m
-1050(of)s 6(fers)k 240 fnt83 1709 1169(optimal)m 2559(galle)s 7(y)k
-3250(br)s 8(eaking)k 240 fnt82 4087 1167(,)m 4252(the)s
-4659(equi)s 6(v)k 6(alent)k 5761(for)s 6157(g)s 1(alle)k 3(ys)k
-6940(of)s 7269(optimal)s 8113(paragraph)s 0 879(breaking.)m 1020(Optimal)s
-1878(g)s 1(alle)k 3(y)k 2532(breaking)s 3442(can)s
-3851(reduce)s 4564(the)s 4932(size)s 5378(of)s 5669(ugly)s
-6169(blank)s 6782(spaces)s 7477(at)s 7729(the)s 8097(bottom)s
-8855(of)s 0 591(pages)m 596(preceding)s 1592(lar)s 4(ge)k
-2121(unbreakable)s 3346(displays,)s 4237(sometimes)s 5310(quite)s 5844(dramatically)s 15(.)k
-480 217(Optimal)m 1337(g)s 1(alle)k 3(y)k 1990(breaking)s
-2900(is)s 3129(applied)s 3910(to)s 4169(each)s 4683(g)s 1(alle)k 3(y)k 15(,)k
-5375(horizontal)s 6418(or)s 6696(v)s 3(ertical,)k 7535(that)s
-7972(possesses)s 8960(a)s
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 35 41
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Italic
-%%+ font Times-Bold
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-1 LoutMargSet
-grestore
-240 fnt83 0 13843(2.10.)m 574(Optimal)s 1418(galle)s 7(y)k
-2051(br)s 8(eaking)k 240 fnt84 8833 13840(35)m 240 fnt82
-0 13205(parameter)m 1036(or)s 1317(nested)s 2008(symbol)s 2790(called)s
-220 fnt35 3440 13202(@Optimiz)m 3(e)k 240 fnt82 4599 13205(whose)m
-5290(v)s 6(alue)k 5880(is)s 220 fnt35 6112 13202(Y)m 30(es)k
-240 fnt82 6453 13205(.)m 6639(Lik)s 2(e)k 7153(cross)s
-7717(referencing,)s 8934(it)s 0 12917(tak)m 2(es)k 539(tw)s 2(o)k
-947(runs)s 1409(to)s 1646(ha)s 4(v)k 3(e)k
-2145(ef)s 6(fect.)k 2844(On)s 3192(the)s 3538(\207rst)s
-3968(run,)s 4392(Lout)s 4902(records)s 5655(the)s 6001(sizes)s
-6514(of)s 6784(the)s 7130(g)s 1(alle)k 3(y')k 13(s)k
-7918(components)s 0 12629(and)m 393(g)s 1(aps,)k 927(and)s
-1319(also)s 1746(the)s 2083(space)s 2658(a)s 4(v)k 6(ailable)k
-3555(at)s 3776(each)s 4259(of)s 4519(its)s 4783(tar)s 4(gets.)k
-5568(At)s 5856(end)s 6248(of)s 6508(run)s 6873(this)s
-7257(information)s 8431(is)s 8629(used)s 0 12341(to)m 232(\207nd)s
-656(an)s 932(optimal)s 1709(break,)s 2340(which)s 2975(is)s
-3177(written)s 3903(to)s 4135(the)s 4475(cross-reference)s 5981(database.)s
-6961(On)s 7303(the)s 7644(second)s 8360(run,)s 8778(the)s
-0 12053(optimal)m 785(break)s 1377(is)s 1587(retrie)s 6(v)k 3(ed)k
-2484(and)s 2888(used.)s 480 11679(Considering)m 1727(that)s 2170(this)s
-2590(process)s 3383(must)s 3932(cope)s 4465(with)s 4971(\210oating)s
-5780(\207gures,)s 6562(ne)s 6(w)k 7034(page)s 7566(and)s
-7995(conditional)s 0 11391(ne)m 6(w)k 460(page)s 982(symbols,)s
-1901(breaks)s 2589(for)s 2941(ne)s 6(w)k 3402(chapters,)s
-4318(and)s 4736(e)s 6(v)k 4(olving)k 5631(documents,)s
-6788(it)s 6994(is)s 7218(surprisingly)s 8428(rob)s 4(ust.)k
-0 11103(If)m 250(it)s 463(does)s 974(go)s 1287(badly)s
-1894(wrong,)s 2634(remo)s 3(ving)k 3621(\207le)s 220 fnt35
-4003 11100(lout.li)m 240 fnt82 4580 11103(then)m 5069(running)s 5888(Lout)s
-6421(twice)s 7014(without)s 7826(changing)s 8778(the)s 0 10815(document)m
-1036(may)s 1534(solv)s 3(e)k 2125(the)s 2505(problem.)s
-3498(Ho)s 6(we)k 6(v)k 3(er)k 9(,)k
-4491(cases)s 5078(are)s 5457(kno)s 6(wn)k 6194(where)s
-6866(the)s 7246(optimization)s 8544(ne)s 6(v)k 3(er)k
-0 10527(con)m 9(v)k 3(er)k 4(ges.)k 1151(These)s
-1812(are)s 2193(usually)s 2972(related)s 3713(to)s 3986(\207gures)s
-4721(and)s 5159(footnotes)s 6134(whose)s 6836(anchor)s 7581(points)s
-8251(f)s 2(all)k 8655(near)s 0 10239(page)m 508(boundaries.)s
-
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 36 42
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-0 LoutMargSet
-grestore
-480 fnt84 0 12955(Chapter)m 1819(3.)s 2400(Pr)s 8(ede\207ned)k
-4711(symbols)s 240 fnt84 0 11691(3.1.)m 471(@Begin)s 1335(and)s
-1776(@End)s 240 fnt82 480 11214(The)m 905(body)s 1435(of)s
-1702(a)s 1864(symbol)s 220 fnt35 2620 11211(@Sym)m 240 fnt82
-3324 11214(may)m 3786(be)s 4064(enclosed)s 4955(in)s 220 fnt35
-5194 11211(@Begin)m 240 fnt82 6019 11214(and)m 220 fnt35 6419 11211(@End)m
-7076(@Sym)s 240 fnt82 7780 11214(instead)m 8511(of)s 8778(the)s
-0 10926(more)m 547(usual)s 1107(braces:)s 220 fnt35 480 10475(def @Section)m
-480 10187( named @Title {})m 480 9899( r)m -3(ight @Body)k 480 9611(@Begin)m 480 9323( @Title //2v @Body)m
-480 9035(@End @Section)m 240 fnt82 0 8580(The)m 3(y)k 543(may)s
-1009(also)s 1447(enclose)s 2220(the)s 2568(right)s 3079(or)s
-3338(body)s 3872(parameter)s 4886(of)s 5157(a)s 5323(symbol)s
-6083(in)s 9(v)k 4(ocation:)k 220 fnt35 480 8079(@Chapter)m
-480 7791( @Title { Introduction })m 480 7503(@Begin)m 480 7215(This subject needs no introduction.)m 480 6927(@End @Chapter)m 240 fnt82
-0 6431(Apart)m 651(from)s 1222(their)s 1767(utility)s 2438(as)s
-2735(documentation)s 4262(aids,)s 4801(these)s 5396(forms)s 6051(allo)s 6(w)k
-6677(Basser)s 7422(Lout)s 7981(to)s 8268(pinpoint)s 0 6143(mismatched)m
-1206(braces,)s 1915(which)s 2549(can)s 2930(otherwise)s 3908(create)s
-4525(total)s 4996(ha)s 4(v)k 4(oc.)k 5716(F)s 3(or)k
-6098(this)s 6486(reason,)s 7209(the)s 3(y)k 7664(should)s
-8353(enclose)s 0 5855(the)m 339(major)s 946(parts)s 1451(of)s
-1712(documents,)s 2846(such)s 3333(as)s 3573(chapters)s 4410(and)s
-4804(sections.)s 5728(Note)s 6240(that)s 6648(braces)s 7299(cannot)s
-7987(be)s 8259(replaced)s 0 5567(by)m 220 fnt35 294 5564(@Begin)m
-240 fnt82 1123 5567(and)m 220 fnt35 1527 5564(@End)m 240 fnt82
-2188 5567(in)m 2431(general.)s 240 fnt84 0 4774(3.2.)m 471(Concatenation)s
-2015(symbols)s 2893(and)s 3334(paragraphs)s 240 fnt82 480 4297(There)m
-1093(are)s 1440(ten)s 1789(concatenation)s 3174(symbols,)s 4079(in)s
-4322(three)s 4855(f)s 2(amilies:)k 220 fnt35 480 3756(/)m
-962(^/)s 1547(//)s 2012(^//)s 240 fnt82 2580 3759(V)m 26(ertical)k
-3377(concatenation)s 220 fnt35 480 3468(|)m 962(^|)s 1547(||)s
-2012(^||)s 240 fnt82 2580 3471(Horizontal)m 3657(concatenation)s 220 fnt35
-480 3180(&)m 962(^&)s 240 fnt82 2580 3183(In-paragraph)m 3871(concatenation)s
-0 2642(Each)m 587(symbol)s 1399(produces)s 2367(an)s 2702(object)s
-3398(which)s 4093(combines)s 5113(together)s 6008(the)s 6409(tw)s 2(o)k
-6871(parameters.)s 8134(The)s 8615(right)s 0 2354(parameter)m 1014(must)s
-1539(be)s 1821(separated)s 2781(from)s 3305(the)s 3653(symbol)s
-4413(by)s 4707(at)s 4939(least)s 5436(one)s 5838(white)s
-6425(space)s 7012(character)s 13(.)k 480 1980(The)m 906(v)s 3(ertical)k
-1670(concatenation)s 3052(symbol)s 220 fnt35 3809 1977(/)m 240 fnt82
-3930 1980(places)m 4575(its)s 4848(left)s 5222(parameter)s 6233(abo)s 3(v)k 3(e)k
-6852(its)s 7125(right)s 7633(parameter)s 8644(with)s 0 1692(their)m
-519(column)s 1317(marks)s 1975(aligned.)s 2866(If)s 3119(one)s
-3544(parameter)s 4581(has)s 4973(more)s 5543(column)s 6341(marks)s
-6999(than)s 7491(the)s 7862(other)s 9(,)k 8474(empty)s
-0 1404(columns)m 868(are)s 1221(inserted)s 2041(at)s 2279(the)s
-2633(right)s 3150(to)s 3395(equalize)s 4253(the)s 4607(numbers.)s
-5601(The)s 6035(v)s 6(ariant)k 220 fnt35 6758 1401(//)m
-240 fnt82 6949 1404(ignores)m 7710(column)s 8491(marks)s 0 1116(and)m
-404(left-justi\207es)s 1594(the)s 1942(objects.)s 480 742(The)m 896(horizontal)s
-1908(concatenation)s 3280(symbols)s 220 fnt35 4117 739(|)m 240 fnt82
-4201 742(and)m 220 fnt35 4593 739(||)m 240 fnt82 4734 742(are)m
-5069(horizontal)s 6080(analogues)s 7076(of)s 220 fnt35 7334 739(/)m
-240 fnt82 7446 742(and)m 220 fnt35 7837 739(//)m 240 fnt82
-7962 742(:)m 8116(the)s 3(y)k 8566(place)s 192 fnt84
-4439 2(36)m
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 37 43
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Italic
-%%+ font Times-Bold
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-1 LoutMargSet
-grestore
-240 fnt83 0 13843(3.2.)m 454(Concatenation)s 1918(symbols)s 2744(and)s
-3170(par)s 3(a)k 2(gr)k 3(aphs)k 240 fnt84
-8831 13840(37)m 240 fnt82 0 13205(their)m 488(tw)s 2(o)k
-888(parameters)s 1976(side)s 2407(by)s 2692(side,)s 3174(with)s
-3646(ro)s 6(w)k 4056(mark)s 4599(alignment)s 5605(or)s
-5854(top-justi\207cation)s 7414(respecti)s 6(v)k 3(ely)k 15(.)k
-8698(The)s 0 12917(in-paragraph)m 1278(concatenation)s 2663(symbol)s 220 fnt35
-3423 12914(&)m 240 fnt82 3625 12917(produces)m 4540(horizontal)s 5564(concatenation)s
-6949(within)s 7617(a)s 7783(paragraph;)s 8850(its)s 0 12629(special)m
-718(properties)s 1724(are)s 2071(treated)s 2778(in)s 3021(detail)s
-3606(at)s 3838(the)s 4186(end)s 4590(of)s 4861(this)s
-5257(section.)s 480 12255(The)m 908(concatenation)s 2293(symbols)s 3142(in)s
-3385(an)s 3(y)k 3782(one)s 4184(f)s 2(amily)k
-4859(are)s 240 fnt83 5206 12257(mutually)m 6099(associative)s 240 fnt82
-7154 12255(,)m 7261(which)s 7903(means)s 8565(that)s 220 fnt35
-480 11754({)m 240 fnt83 664 11759(x)m 220 fnt35 890 11754(|)m
-240 fnt83 927 11759(p)m 1160(y)s 220 fnt35 1382 11754(})m
-1566(|)s 240 fnt83 1603 11759(q)m 1839(z)s 240 fnt82
-0 11258(is)m 210(al)s 2(w)k 2(ays)k 921(the)s
-1269(same)s 1816(as)s 240 fnt83 480 10762(x)m 220 fnt35
-706 10757(|)m 240 fnt83 743 10762(p)m 220 fnt35 976 10757({)m
-240 fnt83 1160 10762(y)m 220 fnt35 1382 10757(|)m 240 fnt83
-1419 10762(q)m 1655(z)s 220 fnt35 1866 10757(})m 240 fnt82
-0 10261(for)m 339(an)s 3(y)k 737(objects)s 240 fnt83
-1466 10263(x)m 240 fnt82 1572 10261(,)m 240 fnt83 1680 10263(y)m
-240 fnt82 1782 10261(,)m 1891(and)s 240 fnt83 2296 10263(z)m
-240 fnt82 2387 10261(,)m 2495(an)s 3(y)k 2893(g)s 1(aps)k
-240 fnt83 3383 10263(p)m 240 fnt82 3558 10261(and)m 240 fnt83
-3963 10263(q)m 240 fnt82 4140 10261(\(de\207ned)m 4983(belo)s 6(w\),)k
-5750(and)s 6155(an)s 3(y)k 6553(choice)s 7234(of)s
-220 fnt35 7506 10258(|)m 240 fnt82 7543 10261(,)m 220 fnt35
-7652 10258(^|)m 240 fnt82 7792 10261(,)m 220 fnt35 7900 10258(||)m
-240 fnt82 7994 10261(,)m 8102(and)s 220 fnt35 8507 10258(^||)m
-240 fnt82 8704 10261(.)m 8870(In)s 0 9973(practice)m 803(we)s
-1130(al)s 2(w)k 2(ays)k 1833(omit)s 2323(such)s
-2811(braces,)s 3520(since)s 4059(the)s 3(y)k 4513(are)s
-4852(redundant)s 5861(and)s 6257(can)s 6638(be)s 6912(misleading.)s
-8117(The)s 8536(result)s 0 9685(of)m 277(the)s 631(complete)s
-1569(sequence)s 2508(of)s 2786(concatenations)s 4264(will)s 4696(be)s
-4984(called)s 5619(the)s 240 fnt83 5973 9687(whole)m 6604(concatenation)s
-8020(object)s 240 fnt82 8608 9685(,)m 8722(and)s 0 9397(the)m
-348(objects)s 1076(which)s 1718(mak)s 2(e)k 2290(it)s
-2482(up)s 2775(will)s 3201(be)s 3483(called)s 4111(the)s
-240 fnt83 4459 9399(components)m 240 fnt82 5598 9397(.)m 480 9023(One)m
-938(mark)s 1494(is)s 1708(designated)s 2793(as)s 3047(the)s
-240 fnt83 3398 9025(principal)m 4339(mark)s 240 fnt82 4835 9023(,)m
-4946(usually)s 5695(the)s 6047(mark)s 6602(of)s 6877(the)s
-7229(\207rst)s 7664(component.)s 8896(A)s 0 8735(later)m 486(mark)s
-1042(can)s 1435(be)s 1721(chosen)s 2447(for)s 2789(this)s
-3189(honour)s 3932(by)s 4230(attaching)s 220 fnt35 5163 8732(^)m
-240 fnt82 5333 8735(to)m 5576(the)s 5928(preceding)s 6928(concatenation)s
-8317(symbol.)s 0 8447(See)m 401(Section)s 1175(3.9)s 1526(for)s
-1864(e)s 3(xamples.)k 480 8073(A)m 240 fnt83 712 8075(gap)m
-240 fnt82 1065 8073(,)m 1175(specifying)s 2227(the)s 2578(distance)s
-3420(between)s 4277(the)s 4627(tw)s 2(o)k 5040(parameters,)s
-6197(may)s 6666(follo)s 6(w)k 7341(an)s 3(y)k
-7741(concatenation)s 0 7785(symbol.)m 866(There)s 1475(may)s 1937(be)s
-2215(no)s 2504(spaces)s 3176(between)s 4026(a)s 4188(concatenation)s
-5569(symbol)s 6325(and)s 6726(its)s 6998(g)s 1(ap.)k
-7503(A)s 7729(missing)s 8522(g)s 1(ap)k 8916(is)s
-0 7497(tak)m 2(en)k 569(to)s 803(be)s 220 fnt35
-1081 7494(0ie)m 240 fnt82 1365 7497(.)m 1524(The)s 1948(g)s 1(ap)k
-2341(is)s 2546(ef)s 6(fecti)k 6(v)k 3(ely)k
-3601(a)s 3762(third)s 4267(parameter)s 5276(of)s 5542(the)s
-5886(concatenation)s 7266(symbol,)s 8074(and)s 8473(it)s 8660(may)s
-0 7209(be)m 289(an)s 579(arbitrary)s 1462(object)s 2113(pro)s 3(vided)k
-3026(that)s 3452(it)s 3651(e)s 6(v)k 6(aluates)k
-4586(to)s 4833(a)s 5006(juxtaposition)s 6319(of)s 6598(simple)s
-7298(w)s 2(ords.)k 8052(In)s 8316(general,)s 0 6921(the)m
-348(g)s 1(ap)k 746(must)s 1271(be)s 1553(enclosed)s
-2448(in)s 2691(braces,)s 3408(lik)s 2(e)k 3820(this:)s
-220 fnt35 480 6420(//{ @Style&&m)m 3(ystyle @Open { @T)k 26(opMargin } })k 240 fnt82
-0 5921(b)m 4(ut)k 349(the)s 684(braces)s 1332(may)s
-1785(be)s 2053(omitted)s 2828(when)s 3391(the)s 3726(object)s
-4356(is)s 4553(a)s 4706(juxtaposition)s 5999(of)s 6256(simple)s
-6936(w)s 2(ords)k 7557(or)s 7803(an)s 8072(in)s 9(v)k 4(ocation)k
-0 5633(of)m 271(a)s 437(symbol)s 1197(without)s 1988(parameters,)s
-3142(as)s 3392(in)s 220 fnt35 3635 5630(//0.3vx)m 240 fnt82
-4340 5633(and)m 220 fnt35 4744 5630(||@Indent)m 240 fnt82 5687 5633(.)m
-480 5259(A)m 704(g)s 1(ap)k 1096(consists)s 1898(of)s
-2162(a)s 2322(length)s 2971(plus)s 3415(a)s 3574(g)s 1(ap)k
-3966(mode)s 4548(plus)s 4992(an)s 5268(optional)s 6101(indication)s
-7108(of)s 7373(unbreakability)s 15(.)k 8896(A)s 240 fnt83
-0 4973(length)m 240 fnt82 659 4971(is)m 875(represented)s 2040(by)s
-2341(an)s 2630(decimal)s 3447(number)s 4244(\(which)s 4972(may)s
-5444(not)s 5816(be)s 6104(ne)s 3(g)k 1(ati)k 6(v)k 3(e\))k
-7036(follo)s 6(wed)k 7944(by)s 8244(a)s 8416(unit)s
-8855(of)s 0 4683(measurement.)m 1437(F)s 3(or)k 1825(e)s 3(xample,)k
-220 fnt35 2738 4680(2.5c)m 240 fnt82 3207 4683(represents)m 4225(the)s
-4572(length)s 5226(2.5)s 5571(centimetres.)s 6834(Figure)s 7513(3.1)s
-7847(gi)s 6(v)k 3(es)k 8393(the)s 8740(full)s
-0 4395(selection)m 906(of)s 1177(units)s 1693(of)s 1964(measurement.)s
-480 4021(After)m 1045(the)s 1396(length)s 2054(comes)s 2718(an)s
-3004(optional)s 240 fnt83 3846 4023(gap)m 4261(mode)s 240 fnt82
-4773 4021(,)m 4883(which)s 5528(is)s 5740(a)s 5909(single)s
-6539(letter)s 7090(follo)s 6(wing)k 8070(the)s 8421(length,)s
-0 3733(indicating)m 1031(ho)s 6(w)k 1514(the)s 1884(length)s
-2562(is)s 2794(to)s 3055(be)s 3359(measured.)s 4462(As)s
-4801(sho)s 6(wn)k 5500(in)s 5765(Figure)s 6468(3.2,)s
-6897(with)s 7401(edge-to-edge)s 8728(g)s 1(ap)k 0 3445(mode)m
-603(the)s 967(length)s 240 fnt83 1638 3447(l)m 240 fnt82
-1780 3445(is)m 2006(measured)s 2996(from)s 3536(the)s 3900(trailing)s
-4658(edge)s 5181(of)s 5468(the)s 5832(\207rst)s 6279(object)s
-6939(to)s 7194(the)s 7558(leading)s 8331(edge)s 8855(of)s
-0 3157(the)m 347(second.)s 1174(Edge-to-edge)s 2516(is)s 2725(the)s
-3071(def)s 2(ault)k 3790(mode:)s 4486(the)s 220 fnt35
-4833 3154(e)m 240 fnt82 5005 3157(may)m 5469(be)s 5749(omitted.)s
-6642(Hyphenation)s 7934(g)s 1(ap)k 8330(mode)s 8916(is)s
-0 2869(similar)m 9(,)k 760(e)s 3(xcept)k 1441(as)s
-1691(e)s 3(xplained)k 2676(at)s 2908(the)s 3256(end)s
-3660(of)s 3931(this)s 4327(section.)s 480 2495(Mark-to-mark,)m 1957(o)s 3(v)k 3(erstrik)k 2(e,)k
-3028(and)s 3450(k)s 2(erning)k 4249(measure)s 5118(the)s
-5484(length)s 6156(from)s 6698(the)s 7063(last)s 7471(mark)s
-8041(of)s 8329(the)s 8695(\207rst)s 0 2207(object)m 648(to)s
-892(the)s 1245(\207rst)s 1680(mark)s 2237(of)s 2513(the)s
-2865(second.)s 3699(In)s 3960(the)s 4312(case)s 4784(of)s
-5060(mark-to-mark,)s 6497(if)s 6719(the)s 7072(length)s 7731(is)s
-7946(too)s 8310(small)s 8887(to)s 0 1919(pre)m 6(v)k 3(ent)k
-771(the)s 1123(objects)s 1855(almost)s 2556(o)s 3(v)k 3(erlapping,)k
-3804(it)s 4000(is)s 4214(widened)s 5087(until)s 5584(the)s 3(y)k
-6051(no)s 6348(longer)s 7023(do.)s 7431(\(The)s 7942(e)s 3(xtra)k
-240 fnt83 8480 1921(l/10)m 240 fnt82 8916 1919(is)m 0 1631(not)m
-362(applied)s 1119(when)s 1690(plain)s 2220(te)s 3(xt)k
-2630(output)s 3298(is)s 3503(in)s 3741(ef)s 6(fect.\))k
-4520(K)s 6(erning)k 5346(also)s 5780(widens,)s 6560(with)s
-7037(the)s 7380(aim)s 7793(of)s 8059(pre)s 6(v)k 3(enting)k
-0 1343(the)m 372(mark)s 948(of)s 1243(either)s 1870(object)s
-2539(from)s 3087(o)s 3(v)k 3(erlapping)k 4301(the)s
-4673(other)s 5248(object;)s 5969(this)s 6389(mode)s 7001(is)s
-7235(used)s 7756(for)s 8119(subscripts)s 0 1055(and)m 404(superscripts.)s
-558 681(T)m 19(ab)k 4(ulation)k 1646(ignores)s 2419(the)s
-2785(\207rst)s 3234(object)s 3896(and)s 4318(places)s 4984(the)s
-5350(leading)s 6125(edge)s 6651(of)s 6940(the)s 7306(second)s
-8047(object)s 8709(at)s 8960(a)s 0 393(distance)m 240 fnt83
-842 395(l)m 240 fnt82 971 393(from)m 1498(the)s 1849(left)s
-2229(edge)s 2740(of)s 3014(the)s 3365(whole)s 4009(concatenation)s
-5397(object.)s 6148(It)s 6356(is)s 6569(the)s 6920(main)s
-7458(user)s 7919(of)s 8193(the)s 220 fnt35 8544 390(b)m
-240 fnt82 8722 393(and)m 220 fnt35 0 102(r)m 240 fnt82
-141 105(units)m 666(of)s 945(measurement;)s 2340(for)s 2686(e)s 3(xample,)k
-220 fnt35 3609 102(|1r)m -8(t)k 240 fnt82 3994 105(will)m
-4429(right-justify)s 5631(the)s 5988(follo)s 6(wing)k 6973(component,)s
-8153(and)s 220 fnt35 8566 102(|0.5r)m -8(t)k
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 38 44
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Times-Italic
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-0 LoutMargSet
-grestore
-240 fnt84 0 13840(38)m 240 fnt83 6081 13843(Chapter)m 6931(3.)s
-7205(Pr)s 8(ede\207ned)k 8300(symbols)s gsave
-0 13282 translate
-240 fnt82 0 86 0 86 240 288 60 LoutGraphic
-gsave
-0.5 pt ltabvs
-grestore
-
-grestore
-gsave
-0 13368 translate
-240 fnt82 170 0 0 0 240 288 60 LoutGraphic
-gsave
-0.5 pt ltabhsp
-grestore
-
-grestore
-gsave
-0 13113 translate
-240 fnt82 0 169 0 60 240 288 60 LoutGraphic
-gsave
-0.5 pt ltabvs
-grestore
-
-grestore
-gsave
-0 13027 translate
-240 fnt82 0 86 0 0 240 288 60 LoutGraphic
-gsave
-0.5 pt ltabvs
-grestore
-
-grestore
-gsave
-170 13368 translate
-240 fnt82 169 0 0 0 240 288 60 LoutGraphic
-gsave
-0.5 pt ltabhs
-grestore
-
-grestore
-220 fnt35 170 13116(c)m
-gsave
-339 13368 translate
-240 fnt82 170 0 0 0 240 288 60 LoutGraphic
-gsave
-0.5 pt ltabhs
-grestore
-
-grestore
-gsave
-509 13368 translate
-240 fnt82 170 0 0 0 240 288 60 LoutGraphic
-gsave
-0.5 pt ltabhs
-grestore
-
-grestore
-gsave
-679 13368 translate
-240 fnt82 8217 0 0 0 240 288 60 LoutGraphic
-gsave
-0.5 pt ltabhs
-grestore
-
-grestore
-240 fnt82 679 13119(Centimetres.)m 170 0 0 0 240 288 60 8896 13368 LoutGr2
-0.5 pt ltabhsp
-grestore
-
-grestore
-0 86 0 86 240 288 60 9066 13282 LoutGr2
-0.5 pt ltabvs
-grestore
-
-grestore
-0 169 0 60 240 288 60 9066 13113 LoutGr2
-0.5 pt ltabvs
-grestore
-
-grestore
-0 86 0 0 240 288 60 9066 13027 LoutGr2
-0.5 pt ltabvs
-grestore
-
-grestore
-0 86 0 86 240 288 60 0 12941 LoutGr2
-0.5 pt ltabvs
-grestore
-
-grestore
-0 166 0 57 240 288 60 0 12775 LoutGr2
-0.5 pt ltabvs
-grestore
-
-grestore
-0 86 0 0 240 288 60 0 12689 LoutGr2
-0.5 pt ltabvs
-grestore
-
-grestore
-220 fnt35 170 12775(i)m 240 fnt82
-679 12778(Inches.)m 0 86 0 86 240 288 60 9066 12941 LoutGr2
-0.5 pt ltabvs
-grestore
-
-grestore
-0 166 0 57 240 288 60 9066 12775 LoutGr2
-0.5 pt ltabvs
-grestore
-
-grestore
-0 86 0 0 240 288 60 9066 12689 LoutGr2
-0.5 pt ltabvs
-grestore
-
-grestore
-0 86 0 86 240 288 60 0 12603 LoutGr2
-0.5 pt ltabvs
-grestore
-
-grestore
-0 211 0 102 240 288 60 0 12392 LoutGr2
-0.5 pt ltabvs
-grestore
-
-grestore
-0 86 0 0 240 288 60 0 12306 LoutGr2
-0.5 pt ltabvs
-grestore
-
-grestore
-220 fnt35 170 12437(p)m 240 fnt82 679 12440(Points)m
-1328(\()s 220 fnt35 1401 12437(72p)m 240 fnt82 1819 12440(=)m
-220 fnt35 2007 12437(1i)m 240 fnt82 2163 12440(\).)m 0 86 0 86 240 288 60 9066 12603 LoutGr2
-0.5 pt ltabvs
-grestore
-
-grestore
-0 211 0 102 240 288 60 9066 12392 LoutGr2
-0.5 pt ltabvs
-grestore
-
-grestore
-0 86 0 0 240 288 60 9066 12306 LoutGr2
-0.5 pt ltabvs
-grestore
-
-grestore
-0 86 0 86 240 288 60 0 12220 LoutGr2
-0.5 pt ltabvs
-grestore
-
-grestore
-0 204 0 96 240 288 60 0 12016 LoutGr2
-0.5 pt ltabvs
-grestore
-
-grestore
-0 86 0 0 240 288 60 0 11930 LoutGr2
-0.5 pt ltabvs
-grestore
-
-grestore
-220 fnt35
-170 12055(m)m 240 fnt82 679 12058(Ems)m 1155(\()s 220 fnt35
-1228 12055(12m)m 240 fnt82 1701 12058(=)m 220 fnt35 1889 12055(1i)m
-240 fnt82 2045 12058(\).)m 0 86 0 86 240 288 60 9066 12220 LoutGr2
-0.5 pt ltabvs
-grestore
-
-grestore
-0 204 0 96 240 288 60 9066 12016 LoutGr2
-0.5 pt ltabvs
-grestore
-
-grestore
-0 86 0 0 240 288 60 9066 11930 LoutGr2
-0.5 pt ltabvs
-grestore
-
-grestore
-0 86 0 86 240 288 60 0 11844 LoutGr2
-0.5 pt ltabvs
-grestore
-
-grestore
-0 503 0 394 240 288 60 0 11341 LoutGr2
-0.5 pt ltabvs
-grestore
-
-grestore
-0 86 0 0 240 288 60 0 11255 LoutGr2
-0.5 pt ltabvs
-grestore
-
-grestore
-220 fnt35 170 11678(f)m 240 fnt82
-679 11681(One)m 220 fnt35 1123 11678(f)m 240 fnt82 1229 11681(equals)m
-1879(the)s 2215(size)s 2631(of)s 2890(the)s 3226(current)s
-3950(font,)s 4431(as)s 4669(speci\207ed)s 5565(by)s 5847(the)s
-220 fnt35 6184 11678(@F)m 6(ont)k 240 fnt82 6884 11681(symbol)m
-7632(\(Section)s 8473(3.3\).)s 679 11393(This)m 1155(unit)s 1587(is)s
-1797(appropriate)s 2941(for)s 3279(lengths)s 4021(that)s 4439(should)s
-5136(change)s 5870(with)s 6352(the)s 6700(font)s 7145(size.)s
-0 86 0 86 240 288 60 9066 11844 LoutGr2
-0.5 pt ltabvs
-grestore
-
-grestore
-0 503 0 394 240 288 60 9066 11341 LoutGr2
-0.5 pt ltabvs
-grestore
-
-grestore
-0 86 0 0 240 288 60 9066 11255 LoutGr2
-0.5 pt ltabvs
-grestore
-
-grestore
-0 86 0 86 240 288 60 0 11169 LoutGr2
-0.5 pt ltabvs
-grestore
-
-grestore
-0 503 0 394 240 288 60 0 10666 LoutGr2
-0.5 pt ltabvs
-grestore
-
-grestore
-0 86 0 0 240 288 60 0 10580 LoutGr2
-0.5 pt ltabvs
-grestore
-
-grestore
-220 fnt35 170 11003(s)m 240 fnt82 679 11006(One)m 220 fnt35
-1125 11003(s)m 240 fnt82 1279 11006(equals)m 1932(the)s 2271(preferred)s
-3194(g)s 1(ap)k 3582(between)s 4427(tw)s 2(o)k
-4828(w)s 2(ords)k 5453(in)s 5687(the)s 6025(current)s
-6752(font,)s 7235(as)s 7476(speci\207ed)s 8375(in)s 8608(the)s
-679 10718(de\207nition)m 1653(of)s 1924(the)s 2272(font,)s 2764(or)s
-3023(by)s 3317(the)s 220 fnt35 3665 10715(@Space)m 240 fnt82
-4562 10718(symbol)m 5322(\(Section)s 6175(3.4\).)s 0 86 0 86 240 288 60 9066 11169 LoutGr2
-0.5 pt ltabvs
-grestore
-
-grestore
-0 503 0 394 240 288 60 9066 10666 LoutGr2
-0.5 pt ltabvs
-grestore
-
-grestore
-0 86 0 0 240 288 60 9066 10580 LoutGr2
-0.5 pt ltabvs
-grestore
-
-grestore
-0 86 0 86 240 288 60 0 10494 LoutGr2
-0.5 pt ltabvs
-grestore
-
-grestore
-0 791 0 682 240 288 60 0 9703 LoutGr2
-0.5 pt ltabvs
-grestore
-
-grestore
-0 86 0 0 240 288 60 0 9617 LoutGr2
-0.5 pt ltabvs
-grestore
-
-grestore
-220 fnt35 170 10328(v)m
-240 fnt82 679 10331(One)m 220 fnt35 1149 10328(v)m 240 fnt82
-1334 10331(equals)m 2011(the)s 2375(current)s 3126(g)s 1(ap)k
-3540(between)s 4410(lines)s 4927(introduced)s 6024(during)s 6717(paragraph)s
-7746(breaking,)s 8706(as)s 679 10043(speci\207ed)m 1574(by)s 1854(the)s
-220 fnt35 2188 10040(@Break)m 240 fnt82 3030 10043(symbol)m 3777(\(Section)s
-4616(3.4\).)s 5145(This)s 5607(unit)s 6026(is)s 6222(appropriate)s
-7352(for)s 7676(lengths,)s 8460(such)s 679 9755(as)m 929(the)s
-1277(spaces)s 1952(between)s 2806(paragraphs,)s 3962(which)s 4604(should)s
-5301(change)s 6035(with)s 6517(the)s 6865(inter)s 4(-line)k
-7791(g)s 1(ap.)k 0 86 0 86 240 288 60 9066 10494 LoutGr2
-0.5 pt ltabvs
-grestore
-
-grestore
-0 791 0 682 240 288 60 9066 9703 LoutGr2
-0.5 pt ltabvs
-grestore
-
-grestore
-0 86 0 0 240 288 60 9066 9617 LoutGr2
-0.5 pt ltabvs
-grestore
-
-grestore
-0 86 0 86 240 288 60 0 9531 LoutGr2
-0.5 pt ltabvs
-grestore
-
-grestore
-0 454 0 345 240 288 60 0 9077 LoutGr2
-0.5 pt ltabvs
-grestore
-
-grestore
-0 86 0 0 240 288 60 0 8991 LoutGr2
-0.5 pt ltabvs
-grestore
-
-grestore
-220 fnt35 170 9365(w)m 240 fnt82
-679 9368(One)m 220 fnt35 1167 9365(w)m 240 fnt82 1416 9368(equals)m
-2111(the)s 2493(width)s 3128(of)s 3432(the)s 3813(follo)s 6(wing)k
-4824(component,)s 6028(or)s 6320(its)s 6629(height)s 7321(if)s
-7571(the)s 7952(symbol)s 8746(is)s 679 9080(v)m 3(ertical)k
-1446(concatenation.)s 0 86 0 86 240 288 60 9066 9531 LoutGr2
-0.5 pt ltabvs
-grestore
-
-grestore
-0 454 0 345 240 288 60 9066 9077 LoutGr2
-0.5 pt ltabvs
-grestore
-
-grestore
-0 86 0 0 240 288 60 9066 8991 LoutGr2
-0.5 pt ltabvs
-grestore
-
-grestore
-0 86 0 86 240 288 60 0 8905 LoutGr2
-0.5 pt ltabvs
-grestore
-
-grestore
-0 454 0 345 240 288 60 0 8451 LoutGr2
-0.5 pt ltabvs
-grestore
-
-grestore
-0 86 0 0 240 288 60 0 8365 LoutGr2
-0.5 pt ltabvs
-grestore
-
-grestore
-220 fnt35 170 8739(b)m 240 fnt82 679 8742(One)m
-220 fnt35 1133 8739(b)m 240 fnt82 1305 8742(equals)m 1965(the)s
-2311(width)s 2912(of)s 3181(the)s 3527(whole)s 4166(concatenation)s
-5550(object,)s 6239(or)s 6496(its)s 6770(height)s 7427(if)s
-7642(the)s 7988(symbol)s 8746(is)s 679 8454(v)m 3(ertical)k
-1446(concatenation.)s 0 86 0 86 240 288 60 9066 8905 LoutGr2
-0.5 pt ltabvs
-grestore
-
-grestore
-0 454 0 345 240 288 60 9066 8451 LoutGr2
-0.5 pt ltabvs
-grestore
-
-grestore
-0 86 0 0 240 288 60 9066 8365 LoutGr2
-0.5 pt ltabvs
-grestore
-
-grestore
-0 86 0 86 240 288 60 0 8279 LoutGr2
-0.5 pt ltabvs
-grestore
-
-grestore
-0 503 0 394 240 288 60 0 7776 LoutGr2
-0.5 pt ltabvs
-grestore
-
-grestore
-0 86 0 0 240 288 60 0 7690 LoutGr2
-0.5 pt ltabvs
-grestore
-
-grestore
-220 fnt35 170 8113(r)m 240 fnt82 679 8116(One)m
-220 fnt35 1176 8113(r)m 240 fnt82 1352 8116(equals)m 2057(one)s
-220 fnt35 2502 8113(b)m 240 fnt82 2718 8116(minus)m 3397(one)s
-220 fnt35 3842 8113(w)m 240 fnt82 3998 8116(.)m 4205(This)s
-4723(unit)s 5198(is)s 5451(used)s 5991(for)s 6371(centring,)s
-7304(and)s 7751(for)s 8132(left)s 8552(and)s 679 7828(right)m
-1190(justi\207cation.)s 0 86 0 86 240 288 60 9066 8279 LoutGr2
-0.5 pt ltabvs
-grestore
-
-grestore
-0 503 0 394 240 288 60 9066 7776 LoutGr2
-0.5 pt ltabvs
-grestore
-
-grestore
-0 86 0 0 240 288 60 9066 7690 LoutGr2
-0.5 pt ltabvs
-grestore
-
-grestore
-0 86 0 86 240 288 60 0 7604 LoutGr2
-0.5 pt ltabvs
-grestore
-
-grestore
-0 215 0 106 240 288 60 0 7389 LoutGr2
-0.5 pt ltabvs
-grestore
-
-grestore
-0 86 0 0 240 288 60 0 7303 LoutGr2
-0.5 pt ltabvs
-grestore
-
-grestore
-220 fnt35 170 7438(d)m 240 fnt82 679 7441(De)m 3(grees.)k
-1623(This)s 2099(unit)s 2531(may)s 2997(only)s 3477(be)s
-3759(used)s 4256(with)s 4738(the)s 220 fnt35 5086 7438(@Rotate)m
-240 fnt82 6007 7441(symbol.)m 0 86 0 86 240 288 60 9066 7604 LoutGr2
-0.5 pt ltabvs
-grestore
-
-grestore
-0 215 0 106 240 288 60 9066 7389 LoutGr2
-0.5 pt ltabvs
-grestore
-
-grestore
-0 86 0 0 240 288 60 9066 7303 LoutGr2
-0.5 pt ltabvs
-grestore
-
-grestore
-0 86 0 86 240 288 60 0 7217 LoutGr2
-0.5 pt ltabvs
-grestore
-
-grestore
-0 504 0 394 240 288 60 0 6713 LoutGr2
-0.5 pt ltabvs
-grestore
-
-grestore
-0 86 0 0 240 288 60 0 6627 LoutGr2
-0.5 pt ltabvs
-grestore
-
-grestore
-220 fnt35 170 7050(y)m 240 fnt82
-679 7053(One)m 220 fnt35 1129 7050(y)m 240 fnt82 1292 7053(equals)m
-1949(the)s 2292(current)s 3023(v)s 6(alue)k 3586(set)s
-3906(by)s 4195(the)s 220 fnt35 4538 7050(@YUnit)m 240 fnt82
-5347 7053(symbol)m 6102(\(Section)s 6950(3.6\).)s 7488(This)s 7959(unit)s
-8386(is)s 8590(not)s 679 6765(used)m 1176(internally)s 2145(by)s
-2439(Lout;)s 3003(it)s 3195(is)s 3405(included)s 4287(for)s
-4625(the)s 4973(con)s 9(v)k 3(enience)k 6213(of)s
-6484(application)s 7603(packages.)s 0 86 0 86 240 288 60 9066 7217 LoutGr2
-0.5 pt ltabvs
-grestore
-
-grestore
-0 504 0 394 240 288 60 9066 6713 LoutGr2
-0.5 pt ltabvs
-grestore
-
-grestore
-0 86 0 0 240 288 60 9066 6627 LoutGr2
-0.5 pt ltabvs
-grestore
-
-grestore
-0 86 0 86 240 288 60 0 6541 LoutGr2
-0.5 pt ltabvs
-grestore
-
-grestore
-0 504 0 394 240 288 60 0 6037 LoutGr2
-0.5 pt ltabvs
-grestore
-
-grestore
-0 86 0 0 240 288 60 0 5951 LoutGr2
-0.5 pt ltabvs
-grestore
-
-grestore
-170 0 0 0 240 288 60 0 5951 LoutGr2
-0.5 pt ltabhsp
-grestore
-
-grestore
-220 fnt35 170 6374(z)m gsave
-170 5951 translate
-240 fnt82 169 0 0 0 240 288 60 LoutGraphic
-gsave
-0.5 pt ltabhs
-grestore
-
-grestore
-gsave
-339 5951 translate
-240 fnt82 170 0 0 0 240 288 60 LoutGraphic
-gsave
-0.5 pt ltabhs
-grestore
-
-grestore
-gsave
-509 5951 translate
-240 fnt82 170 0 0 0 240 288 60 LoutGraphic
-gsave
-0.5 pt ltabhs
-grestore
-
-grestore
-240 fnt82
-679 6377(One)m 220 fnt35 1130 6374(z)m 240 fnt82 1290 6377(equals)m
-1948(the)s 2292(current)s 3024(v)s 6(alue)k 3588(set)s
-3909(by)s 4199(the)s 220 fnt35 4543 6374(@ZUnit)m 240 fnt82
-5341 6377(symbol)m 6097(\(Section)s 6946(3.6\).)s 7485(This)s 7957(unit)s
-8385(is)s 8590(not)s 679 6089(used)m 1176(internally)s 2145(by)s
-2439(Lout;)s 3003(it)s 3195(is)s 3405(included)s 4287(for)s
-4625(the)s 4973(con)s 9(v)k 3(enience)k 6213(of)s
-6484(application)s 7603(packages.)s 8217 0 0 0 240 288 60 679 5951 LoutGr2
-0.5 pt ltabhs
-grestore
-
-grestore
-170 0 0 0 240 288 60 8896 5951 LoutGr2
-0.5 pt ltabhsp
-grestore
-
-grestore
-0 86 0 86 240 288 60 9066 6541 LoutGr2
-0.5 pt ltabvs
-grestore
-
-grestore
-0 504 0 394 240 288 60 9066 6037 LoutGr2
-0.5 pt ltabvs
-grestore
-
-grestore
-0 86 0 0 240 288 60 9066 5951 LoutGr2
-0.5 pt ltabvs
-grestore
-
-grestore
-240 fnt84 1231 5361(Figur)m 4(e)k
-1960(3.1.)s 2431(The)s 2886(thirteen)s 3750(units)s 4308(of)s
-4580(measur)s 4(ement)k 6016(pr)s 4(o)k 2(vided)k
-6982(by)s 7291(Lout.)s 240 fnt82 0 4724(will)m 426(centre)s
-1065(it.)s 480 4350(The)m 914(v)s 6(alue)k 220 fnt35
-1488 4347(|0r)m -8(t)k 240 fnt82 1871 4350(separating)m 2913(the)s
-3267(\207rst)s 3704(and)s 4115(second)s 4844(items)s 5418(in)s
-5667(a)s 5840(sequence)s 6779(of)s 7056(horizontally)s 8272(concate)s
-8998(-)s 0 4062(nated)m 572(objects)s 1296(is)s 1502(some)s 6(what)k
-2522(special)s 3236(in)s 3475(that)s 3889(it)s 4077(denotes)s
-4855(left)s 5228(justi\207cation)s 6409(of)s 6676(the)s 7020(object)s
-7660(to)s 7895(its)s 8167(left)s 8540(in)s 8778(the)s
-0 3774(a)m 4(v)k 6(ailable)k 902(space.)s 1590(This)s
-2059(is)s 2262(identical)s 3132(with)s 220 fnt35 3607 3771(|0ie)m
-240 fnt82 4001 3774(when)m 4570(the)s 4911(object)s 5548(to)s
-5780(the)s 6121(left)s 6491(also)s 6922(has)s 7285(the)s
-7626(principal)s 8523(mark;)s 0 3486(b)m 4(ut)k 354(when)s
-922(it)s 1105(does)s 1587(not,)s 220 fnt35 1991 3483(|0r)m -8(t)k
-240 fnt82 2360 3486(will)m 2777(cause)s 3356(the)s 3695(object)s
-4331(to)s 4561(the)s 4901(left)s 5269(to)s 5500(appear)s
-6188(further)s 6889(to)s 7119(the)s 7459(left)s 7827(than)s
-8288(it)s 8471(w)s 2(ould)k 0 3198(otherwise)m 985(ha)s 4(v)k 3(e)k
-1486(done,)s 2059(if)s 2276(space)s 2863(to)s 3102(do)s
-3395(so)s 3661(is)s 3871(a)s 4(v)k 6(ailable.)k
-480 2824(A)m 744(g)s 1(ap)k 1177(is)s 1421(optionally)s
-2480(concluded)s 3557(with)s 4073(an)s 4391(indication)s 5439(of)s
-5744(unbreakability)s 15(,)k 7252(which)s 7929(is)s 8173(a)s
-8374(letter)s 220 fnt35 8958 2821(u)m 240 fnt82 0 2536(appended)m
-976(to)s 1215(the)s 1563(g)s 1(ap.)k 2072(A)s
-2303(paragraph)s 3316(will)s 3742(ne)s 6(v)k 3(er)k
-4324(be)s 4607(brok)s 2(en)k 5327(at)s 5559(an)s
-5842(unbreakable)s 7068(g)s 1(ap,)k 7520(nor)s 7899(will)s
-8325(a)s 8492(g)s 1(alle)k 3(y)k 0 2248(be)m
-293(brok)s 2(en)k 1025(across)s 1684(tw)s 2(o)k
-2106(tar)s 4(gets)k 2800(at)s 3044(such)s 3551(a)s
-3729(g)s 1(ap.)k 4249(Basser)s 4958(Lout')s 13(s)k
-5631(implementation)s 7200(is)s 7421(slightly)s 8204(defecti)s 6(v)k 3(e)k
-0 1960(in)m 242(that)s 659(it)s 849(ignores)s 1603(an)s 3(y)k
-1999(unbreakable)s 3222(indication)s 4234(in)s 4476(the)s 4822(g)s 1(ap)k
-5219(separating)s 6253(the)s 6599(\207rst)s 7029(component)s 8151(promoted)s
-0 1672(into)m 425(an)s 3(y)k 822(tar)s 4(get)k
-1421(from)s 1945(the)s 2293(second.)s 480 1298(When)m 1111(tw)s 2(o)k
-1523(objects)s 2254(are)s 2603(separated)s 3566(only)s 4048(by)s
-4345(zero)s 4811(or)s 5072(more)s 5622(white)s 6211(space)s
-6801(characters)s 7821(\(spaces,)s 8634(tabs,)s 0 1010(ne)m 6(wlines,)k
-983(and)s 1420(formfeeds\),)s 2607(Lout)s 3152(inserts)s 220 fnt35
-3859 1007(&)m 240 fnt83 4001 1012(k)m 220 fnt35 4111 1007(s)m
-240 fnt82 4307 1010(between)m 5194(the)s 5575(tw)s 2(o)k
-6018(objects,)s 6835(where)s 240 fnt83 7508 1012(k)m 240 fnt82
-7711 1010(is)m 7954(the)s 8335(number)s 0 722(of)m 291(spaces.)s
-1100(Precisely)s 15(,)k 240 fnt83 2087 724(k)m 240 fnt82
-2278 722(is)m 2509(determined)s 3662(by)s 3977(discarding)s 5047(all)s
-5360(space)s 5968(characters)s 7007(and)s 7431(tabs)s 7888(that)s
-8327(precede)s 0 434(ne)m 6(wlines)k 903(\(these)s 1537(are)s
-1892(in)s 9(visible)k 2771(so)s 3045(are)s 3400(better)s
-4012(ignored\),)s 4937(then)s 5414(counting)s 6313(1)s 6477(for)s
-6823(each)s 7326(ne)s 6(wline,)k 8193(formfeed)s 0 146(or)m
-259(space,)s 897(and)s 1301(8)s 1468(for)s 1806(each)s
-2301(tab)s 2646(character)s 13(.)k 3671(The)s 4099(g)s 1(ap)k
-4497(will)s 4923(be)s 5205(unbreakable)s 6430(if)s 240 fnt83
-6647 148(k)m 240 fnt82 6817 146(is)m 7027(zero.)s
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 39 45
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Italic
-%%+ font Times-Bold
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-1 LoutMargSet
-grestore
-240 fnt83 0 13843(3.2.)m 454(Concatenation)s 1918(symbols)s 2744(and)s
-3170(par)s 3(a)k 2(gr)k 3(aphs)k 240 fnt84
-8832 13840(39)m gsave
-1450 5884 translate
-240 fnt82 6166 7484 0 7484 240 288 60 LoutGraphic
-gsave
-grestore save gsave 200 dict begin lfigdict begin
-grestore
-0 6710(Edge-to-edge)m 220 fnt35 1786 6707(|)m 240 fnt83
-1843 6712(l)m 220 fnt35 1929 6707(e)m 240 fnt82 0 5558(Hyphenation)m
-220 fnt35 1786 5555(|)m 240 fnt83 1843 5560(l)m 220 fnt35
-1929 5555(h)m 240 fnt82 0 4406(Ov)m 3(erstrik)k 2(e)k
-220 fnt35 1786 4403(|)m 240 fnt83 1843 4408(l)m 220 fnt35
-1929 4403(o)m 240 fnt82 0 3254(Mark-to-mark)m 220 fnt35 1786 3251(|)m
-240 fnt83 1843 3256(l)m 220 fnt35 1929 3251(x)m 240 fnt82
-0 2102(K)m 6(erning)k 220 fnt35 1786 2099(|)m 240 fnt83
-1843 2104(l)m 220 fnt35 1929 2099(k)m 240 fnt82 0 950(T)m 19(ab)k 4(ulation)k
-220 fnt35 1786 947(|)m 240 fnt83 1843 952(l)m 220 fnt35
-1929 947(t)m gsave
-2764 0 translate
-240 fnt82 3402 7484 0 7484 240 288 60 LoutGraphic
-gsave
-
-0.5 pt setlinewidth lfiground setlinecap
-0.15 cm /lfigsolid [ lfigbox ] lfigdopath
-pop pop
-grestore
-gsave
-567 6748 translate
-180 fnt82 680 340 0 340 180 288 45 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto
-xsize ysize lineto 0 ysize lineto closepath
-gsave 0.9 setgray fill grestore stroke
-grestore
-
-grestore
-gsave
-680 6634 translate
-180 fnt82 0 567 0 567 180 288 45 LoutGraphic
-gsave
-0 0 moveto 0 ysize lineto [ 3 pt ] 0 setdash stroke
-grestore
-
-grestore
-gsave
-2268 6748 translate
-180 fnt82 680 340 0 340 180 288 45 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto
-xsize ysize lineto 0 ysize lineto closepath
-gsave 0.9 setgray fill grestore stroke
-grestore
-
-grestore
-gsave
-2551 6634 translate
-180 fnt82 0 567 0 567 180 288 45 LoutGraphic
-gsave
-0 0 moveto 0 ysize lineto [ 3 pt ] 0 setdash stroke
-grestore
-
-grestore
-gsave
-2267 6658 translate
-180.0000 rotate
-gsave
-0 0 translate
-30.0000 rotate
-gsave
-0 0 translate
-180 fnt82 68 0 0 0 180 288 45 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-
-grestore
-gsave
-0 0 translate
-180 fnt82 1020 0 0 0 180 288 45 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-gsave
-0 0 translate
--30.0000 rotate
-gsave
-0 0 translate
-180 fnt82 68 0 0 0 180 288 45 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-
-grestore
-
-grestore
-gsave
-1247 6658 translate
-30.0000 rotate
-gsave
-0 0 translate
-180 fnt82 68 0 0 0 180 288 45 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-
-grestore
-gsave
-1247 6658 translate
-180 fnt82 1020 0 0 0 180 288 45 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-gsave
-1247 6658 translate
--30.0000 rotate
-gsave
-0 0 translate
-180 fnt82 68 0 0 0 180 288 45 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-
-grestore
-180 fnt83 1732 6455(l)m gsave
-567 5596 translate
-180 fnt82 680 340 0 340 180 288 45 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto
-xsize ysize lineto 0 ysize lineto closepath
-gsave 0.9 setgray fill grestore stroke
-grestore
-
-grestore
-gsave
-680 5482 translate
-180 fnt82 0 567 0 567 180 288 45 LoutGraphic
-gsave
-0 0 moveto 0 ysize lineto [ 3 pt ] 0 setdash stroke
-grestore
-
-grestore
-gsave
-2268 5596 translate
-180 fnt82 680 340 0 340 180 288 45 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto
-xsize ysize lineto 0 ysize lineto closepath
-gsave 0.9 setgray fill grestore stroke
-grestore
-
-grestore
-gsave
-2551 5482 translate
-180 fnt82 0 567 0 567 180 288 45 LoutGraphic
-gsave
-0 0 moveto 0 ysize lineto [ 3 pt ] 0 setdash stroke
-grestore
-
-grestore
-gsave
-2267 5506 translate
-180.0000 rotate
-gsave
-0 0 translate
-30.0000 rotate
-gsave
-0 0 translate
-180 fnt82 68 0 0 0 180 288 45 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-
-grestore
-gsave
-0 0 translate
-180 fnt82 1020 0 0 0 180 288 45 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-gsave
-0 0 translate
--30.0000 rotate
-gsave
-0 0 translate
-180 fnt82 68 0 0 0 180 288 45 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-
-grestore
-
-grestore
-gsave
-1247 5506 translate
-30.0000 rotate
-gsave
-0 0 translate
-180 fnt82 68 0 0 0 180 288 45 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-
-grestore
-gsave
-1247 5506 translate
-180 fnt82 1020 0 0 0 180 288 45 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-gsave
-1247 5506 translate
--30.0000 rotate
-gsave
-0 0 translate
-180 fnt82 68 0 0 0 180 288 45 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-
-grestore
-1732 5303(l)m gsave
-567 4444 translate
-180 fnt82 680 340 0 340 180 288 45 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto
-xsize ysize lineto 0 ysize lineto closepath
-gsave 0.9 setgray fill grestore stroke
-grestore
-
-grestore
-gsave
-680 4330 translate
-180 fnt82 0 567 0 567 180 288 45 LoutGraphic
-gsave
-0 0 moveto 0 ysize lineto [ 3 pt ] 0 setdash stroke
-grestore
-
-grestore
-gsave
-2268 4444 translate
-180 fnt82 680 340 0 340 180 288 45 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto
-xsize ysize lineto 0 ysize lineto closepath
-gsave 0.9 setgray fill grestore stroke
-grestore
-
-grestore
-gsave
-2551 4330 translate
-180 fnt82 0 567 0 567 180 288 45 LoutGraphic
-gsave
-0 0 moveto 0 ysize lineto [ 3 pt ] 0 setdash stroke
-grestore
-
-grestore
-gsave
-2551 4297 translate
-180.0000 rotate
-gsave
-0 0 translate
-30.0000 rotate
-gsave
-0 0 translate
-180 fnt82 68 0 0 0 180 288 45 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-
-grestore
-gsave
-0 0 translate
-180 fnt82 1871 0 0 0 180 288 45 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-gsave
-0 0 translate
--30.0000 rotate
-gsave
-0 0 translate
-180 fnt82 68 0 0 0 180 288 45 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-
-grestore
-
-grestore
-gsave
-680 4297 translate
-30.0000 rotate
-gsave
-0 0 translate
-180 fnt82 68 0 0 0 180 288 45 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-
-grestore
-gsave
-680 4297 translate
-180 fnt82 1871 0 0 0 180 288 45 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-gsave
-680 4297 translate
--30.0000 rotate
-gsave
-0 0 translate
-180 fnt82 68 0 0 0 180 288 45 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-
-grestore
-1590 4095(l)m
-gsave
-567 3242 translate
-180 fnt82 680 340 0 340 180 288 45 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto
-xsize ysize lineto 0 ysize lineto closepath
-gsave 0.9 setgray fill grestore stroke
-grestore
-
-grestore
-gsave
-680 3128 translate
-180 fnt82 0 567 0 567 180 288 45 LoutGraphic
-gsave
-0 0 moveto 0 ysize lineto [ 3 pt ] 0 setdash stroke
-grestore
-
-grestore
-gsave
-2268 3242 translate
-180 fnt82 680 340 0 340 180 288 45 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto
-xsize ysize lineto 0 ysize lineto closepath
-gsave 0.9 setgray fill grestore stroke
-grestore
-
-grestore
-gsave
-2551 3128 translate
-180 fnt82 0 567 0 567 180 288 45 LoutGraphic
-gsave
-0 0 moveto 0 ysize lineto [ 3 pt ] 0 setdash stroke
-grestore
-
-grestore
-gsave
-2551 3095 translate
-180.0000 rotate
-gsave
-0 0 translate
-30.0000 rotate
-gsave
-0 0 translate
-180 fnt82 68 0 0 0 180 288 45 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-
-grestore
-gsave
-0 0 translate
-180 fnt82 1871 0 0 0 180 288 45 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-gsave
-0 0 translate
--30.0000 rotate
-gsave
-0 0 translate
-180 fnt82 68 0 0 0 180 288 45 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-
-grestore
-
-grestore
-gsave
-680 3095 translate
-30.0000 rotate
-gsave
-0 0 translate
-180 fnt82 68 0 0 0 180 288 45 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-
-grestore
-gsave
-680 3095 translate
-180 fnt82 1871 0 0 0 180 288 45 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-gsave
-680 3095 translate
--30.0000 rotate
-gsave
-0 0 translate
-180 fnt82 68 0 0 0 180 288 45 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-
-grestore
-180 fnt82 975 2892(max\()m 180 fnt83 1383 2893(l,)m 1503(a+b+l/10)s
-180 fnt82 2205 2892(\))m gsave
-1247 3719 translate
-180.0000 rotate
-gsave
-0 0 translate
-30.0000 rotate
-68 0 0 0 180 288 45 0 0 LoutGr2
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-
-grestore
-567 0 0 0 180 288 45 0 0 LoutGr2
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-gsave
-0 0 translate
--30.0000 rotate
-68 0 0 0 180 288 45 0 0 LoutGr2
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-
-grestore
-
-grestore
-gsave
-680 3719 translate
-30.0000 rotate
-68 0 0 0 180 288 45 0 0 LoutGr2
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-
-grestore
-567 0 0 0 180 288 45 680 3719 LoutGr2
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-gsave
-680 3719 translate
--30.0000 rotate
-68 0 0 0 180 288 45 0 0 LoutGr2
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-
-grestore
-180 fnt83 920 3787(a)m gsave
-2551 3719 translate
-180.0000 rotate
-gsave
-0 0 translate
-30.0000 rotate
-gsave
-0 0 translate
-180 fnt82 68 0 0 0 180 288 45 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-
-grestore
-gsave
-0 0 translate
-180 fnt82 283 0 0 0 180 288 45 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-gsave
-0 0 translate
--30.0000 rotate
-gsave
-0 0 translate
-180 fnt82 68 0 0 0 180 288 45 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-
-grestore
-
-grestore
-gsave
-2268 3719 translate
-30.0000 rotate
-gsave
-0 0 translate
-180 fnt82 68 0 0 0 180 288 45 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-
-grestore
-gsave
-2268 3719 translate
-180 fnt82 283 0 0 0 180 288 45 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-gsave
-2268 3719 translate
--30.0000 rotate
-gsave
-0 0 translate
-180 fnt82 68 0 0 0 180 288 45 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-
-grestore
-2366 3743(b)m
-gsave
-567 2090 translate
-180 fnt82 680 340 0 340 180 288 45 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto
-xsize ysize lineto 0 ysize lineto closepath
-gsave 0.9 setgray fill grestore stroke
-grestore
-
-grestore
-gsave
-680 1976 translate
-180 fnt82 0 567 0 567 180 288 45 LoutGraphic
-gsave
-0 0 moveto 0 ysize lineto [ 3 pt ] 0 setdash stroke
-grestore
-
-grestore
-gsave
-2268 2090 translate
-180 fnt82 680 340 0 340 180 288 45 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto
-xsize ysize lineto 0 ysize lineto closepath
-gsave 0.9 setgray fill grestore stroke
-grestore
-
-grestore
-gsave
-2551 1976 translate
-180 fnt82 0 567 0 567 180 288 45 LoutGraphic
-gsave
-0 0 moveto 0 ysize lineto [ 3 pt ] 0 setdash stroke
-grestore
-
-grestore
-gsave
-2551 1943 translate
-180.0000 rotate
-gsave
-0 0 translate
-30.0000 rotate
-gsave
-0 0 translate
-180 fnt82 68 0 0 0 180 288 45 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-
-grestore
-gsave
-0 0 translate
-180 fnt82 1871 0 0 0 180 288 45 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-gsave
-0 0 translate
--30.0000 rotate
-gsave
-0 0 translate
-180 fnt82 68 0 0 0 180 288 45 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-
-grestore
-
-grestore
-gsave
-680 1943 translate
-30.0000 rotate
-gsave
-0 0 translate
-180 fnt82 68 0 0 0 180 288 45 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-
-grestore
-gsave
-680 1943 translate
-180 fnt82 1871 0 0 0 180 288 45 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-gsave
-680 1943 translate
--30.0000 rotate
-gsave
-0 0 translate
-180 fnt82 68 0 0 0 180 288 45 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-
-grestore
-180 fnt82 1203 1740(max\()m 180 fnt83 1611 1741(l,)m 1731(a,)s
-1891(b)s 180 fnt82 1977 1740(\))m gsave
-1247 2567 translate
-180.0000 rotate
-gsave
-0 0 translate
-30.0000 rotate
-68 0 0 0 180 288 45 0 0 LoutGr2
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-
-grestore
-567 0 0 0 180 288 45 0 0 LoutGr2
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-gsave
-0 0 translate
--30.0000 rotate
-68 0 0 0 180 288 45 0 0 LoutGr2
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-
-grestore
-
-grestore
-gsave
-680 2567 translate
-30.0000 rotate
-68 0 0 0 180 288 45 0 0 LoutGr2
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-
-grestore
-567 0 0 0 180 288 45 680 2567 LoutGr2
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-gsave
-680 2567 translate
--30.0000 rotate
-68 0 0 0 180 288 45 0 0 LoutGr2
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-
-grestore
-180 fnt83 920 2635(a)m
-gsave
-2551 2567 translate
-180.0000 rotate
-gsave
-0 0 translate
-30.0000 rotate
-gsave
-0 0 translate
-180 fnt82 68 0 0 0 180 288 45 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-
-grestore
-gsave
-0 0 translate
-180 fnt82 283 0 0 0 180 288 45 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-gsave
-0 0 translate
--30.0000 rotate
-gsave
-0 0 translate
-180 fnt82 68 0 0 0 180 288 45 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-
-grestore
-
-grestore
-gsave
-2268 2567 translate
-30.0000 rotate
-gsave
-0 0 translate
-180 fnt82 68 0 0 0 180 288 45 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-
-grestore
-gsave
-2268 2567 translate
-180 fnt82 283 0 0 0 180 288 45 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-gsave
-2268 2567 translate
--30.0000 rotate
-gsave
-0 0 translate
-180 fnt82 68 0 0 0 180 288 45 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-
-grestore
-2366 2591(b)m gsave
-567 938 translate
-180 fnt82 680 340 0 340 180 288 45 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto
-xsize ysize lineto 0 ysize lineto closepath
-gsave 0.9 setgray fill grestore stroke
-grestore
-
-grestore
-gsave
-680 824 translate
-180 fnt82 0 567 0 567 180 288 45 LoutGraphic
-gsave
-0 0 moveto 0 ysize lineto [ 3 pt ] 0 setdash stroke
-grestore
-
-grestore
-gsave
-2268 938 translate
-180 fnt82 680 340 0 340 180 288 45 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto
-xsize ysize lineto 0 ysize lineto closepath
-gsave 0.9 setgray fill grestore stroke
-grestore
-
-grestore
-gsave
-2551 824 translate
-180 fnt82 0 567 0 567 180 288 45 LoutGraphic
-gsave
-0 0 moveto 0 ysize lineto [ 3 pt ] 0 setdash stroke
-grestore
-
-grestore
-gsave
-2268 734 translate
-180.0000 rotate
-gsave
-0 0 translate
-30.0000 rotate
-gsave
-0 0 translate
-180 fnt82 68 0 0 0 180 288 45 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-
-grestore
-gsave
-0 0 translate
-180 fnt82 2268 0 0 0 180 288 45 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-gsave
-0 0 translate
--30.0000 rotate
-gsave
-0 0 translate
-180 fnt82 68 0 0 0 180 288 45 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-
-grestore
-
-grestore
-gsave
-0 734 translate
-30.0000 rotate
-gsave
-0 0 translate
-180 fnt82 68 0 0 0 180 288 45 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-
-grestore
-gsave
-0 734 translate
-180 fnt82 2268 0 0 0 180 288 45 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-gsave
-0 734 translate
--30.0000 rotate
-gsave
-0 0 translate
-180 fnt82 68 0 0 0 180 288 45 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-
-grestore
-1587 532(l)m gsave
-3402 234 translate
-180.0000 rotate
-gsave
-0 0 translate
-30.0000 rotate
-gsave
-0 0 translate
-180 fnt82 68 0 0 0 180 288 45 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-
-grestore
-gsave
-0 0 translate
-180 fnt82 3402 0 0 0 180 288 45 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-gsave
-0 0 translate
--30.0000 rotate
-gsave
-0 0 translate
-180 fnt82 68 0 0 0 180 288 45 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-
-grestore
-
-grestore
-gsave
-0 234 translate
-30.0000 rotate
-gsave
-0 0 translate
-180 fnt82 68 0 0 0 180 288 45 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-
-grestore
-gsave
-0 234 translate
-180 fnt82 3402 0 0 0 180 288 45 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-gsave
-0 234 translate
--30.0000 rotate
-gsave
-0 0 translate
-180 fnt82 68 0 0 0 180 288 45 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-
-grestore
-1189 23(curr)m 6(ent)k 1759(bound)s
-
-grestore
-end end restore
-grestore
-2063 5294(Figur)m 4(e)k 2792(3.2.)s 3263(The)s 3718(six)s
-4054(gap)s 4480(modes)s 5185(pr)s 4(o)k 2(vided)k
-6151(by)s 6460(Lout.)s 240 fnt82 480 4655(A)m 724(sequence)s
-1672(of)s 1958(tw)s 2(o)k 2383(or)s 2657(more)s
-3219(objects)s 3962(separated)s 4936(by)s 220 fnt35 5245 4652(&)m
-240 fnt82 5462 4655(symbols)m 6326(is)s 6551(a)s 240 fnt83
-6732 4657(par)m 3(a)k 2(gr)k 3(aph)k 240 fnt82
-7745 4655(.)m 7924(Lout)s 8451(breaks)s 0 4367(paragraphs)m 1100(into)s
-1526(lines)s 2029(automatically)s 3384(as)s 3635(required,)s 4539(by)s
-4834(con)s 9(v)k 3(erting)k 5898(some)s 6460(of)s
-6732(the)s 220 fnt35 7081 4364(&)m 240 fnt82 7284 4367(symbols)m
-8134(into)s 220 fnt35 8560 4364(//1vx)m 240 fnt82 9022 4367(.)m
-0 4079(Unbreakable)m 1279(g)s 1(aps)k 1769(are)s 2117(not)s
-2485(eligible)s 3258(for)s 3597(this)s 3995(con)s 9(v)k 3(ersion.)k
-5198(`Optimal')s 6173(line)s 6588(breaks)s 7265(are)s 7613(chosen,)s
-8386(using)s 8960(a)s 0 3791(method)m 776(adapted)s 1578(from)s
-2102(T)s 2198 3743(E)m 2306 3791(X)m 2535([5)s 2720(].)s
-480 3417(If)m 735(an)s 220 fnt35 1043 3414(&)m 240 fnt82
-1271 3417(symbol)m 2056(whose)s 2750(g)s 1(ap)k 3173(has)s
-3568(h)s 1(yphenation)k 4834(mode)s 5447(is)s 5683(chosen)s
-6430(for)s 6793(replacement)s 8046(by)s 220 fnt35 8365 3414(//1vx)m
-240 fnt82 8827 3417(,)m 8960(a)s 0 3129(h)m 1(yphen)k
-755(will)s 1174(be)s 1448(appended)s 2417(to)s 2649(the)s
-2989(preceding)s 3978(object,)s 4661(unless)s 5303(that)s 5714(object)s
-6350(is)s 6553(a)s 6712(w)s 2(ord)k 7252(which)s
-7887(already)s 8636(ends)s 0 2841(with)m 482(a)s 648(h)s 1(yphen.)k
-1517(F)s 3(or)k 1906(e)s 3(xample,)k 220 fnt35
-480 2344(Long)m 1017(w)s 2(ords)k 1654(ma)s 6(y)k
-2122(be)s 2419(h)s 6(yph &0ih enat &0ih ed.)k 240 fnt82 0 1845(could)m
-590(ha)s 4(v)k 3(e)k 1091(the)s 1439(follo)s 6(wing)k
-2416(result,)s 3053(depending)s 4104(where)s 4744(the)s 5092(line)s
-5506(breaks)s 6181(f)s 2(all:)k 480 1342(Long)m 1038(w)s 2(ords)k
-1670(may)s 2135(be)s 2415(h)s 1(yphenat)k 3292(-)s
-480 1054(ed.)m 0 601(Basser)m 702(Lout)s 1219(inserts)s 1898(h)s 1(yphenation)k
-3143(g)s 1(aps)k 3637(automatically)s 4996(as)s 5251(required,)s
-6159(ag)s 1(ain)k 6738(follo)s 6(wing)k 7720(the)s
-8073(method)s 8855(of)s 0 313(T)m 96 265(E)m 204 313(X)m
-373(,)s 479(which)s 1120(approximates)s 2458(the)s 2804(h)s 1(yphenations)k
-4130(in)s 4372(W)s 19(ebster')k 13(s)k 5358(dictionary)s 15(.)k
-6474(T)s 19(o)k 6773(pre)s 6(v)k 3(ent)k
-7540(the)s 7886(h)s 1(yphenation)k
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 40 46
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Times-Italic
-%%+ font Helvetica
-%%+ font Times-BoldItalic
-/pgsave save def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-%%IncludeResource: font Times-BoldItalic
-/Times-BoldItalicfnt85 vec2 /Times-BoldItalic LoutRecode
-/fnt85 { /Times-BoldItalicfnt85 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-0 LoutMargSet
-grestore
-240 fnt84 0 13840(40)m 240 fnt83 6081 13843(Chapter)m 6931(3.)s
-7205(Pr)s 8(ede\207ned)k 8300(symbols)s 240 fnt82 0 13205(of)m
-268(a)s 430(single)s 1053(w)s 2(ord,)k 1646(enclose)s
-2416(it)s 2604(in)s 2843(quotes.)s 3628(Further)s 4387(control)s
-5116(o)s 3(v)k 3(er)k 5591(paragraph)s 6600(breaking)s
-7486(and)s 7886(h)s 1(yphenation)k 0 12917(is)m 210(pro)s 3(vided)k
-1116(by)s 1410(the)s 220 fnt35 1758 12914(@Break)m 240 fnt82
-2614 12917(and)m 220 fnt35 3018 12914(@Space)m 240 fnt82 3915 12917(symbols)m
-4764(\(Sections)s 5704(3.4)s 6058(and)s 6462(3.5\).)s 240 fnt84
-0 12124(3.3.)m 471(@F)s 6(ont)k 1226(and)s 1667(@Char)s
-240 fnt82 480 11692(A)m 240 fnt83 728 11694(font)m 240 fnt82
-1182 11692(is)m 1410(a)s 1594(collection)s 2611(of)s 2900(characters)s
-3936(which)s 4596(may)s 5080(be)s 5380(printed.)s 6239(Man)s 3(y)k
-6867(fonts)s 7414(come)s 8006(in)s 240 fnt83 8268 11694(families)m
-240 fnt82 9019 11692(,)m 0 11404(which)m 634(are)s 973(groups)s
-1667(of)s 1930(fonts)s 2450(that)s 2860(ha)s 4(v)k 3(e)k
-3352(been)s 3853(designed)s 4754(to)s 4984(go)s 5269(together)s 13(.)k
-6194(F)s 3(or)k 6575(e)s 3(xample,)k 7480(the)s
-7820(T)s 8(imes)k 8451(f)s 2(amily)k 0 11116(includes)m
-848(the)s 1196(follo)s 6(wing)k 2173(fonts:)s 480 10613(T)m 8(imes)k
-1120(Base)s 240 fnt83 480 10327(T)m 13(imes)k 1093(Slope)s
-240 fnt84 480 10036(T)m 4(imes)k 1154(Bold)s 240 fnt85
-480 9748(T)m 8(imes)k 1116(BoldSlope)s 240 fnt82 0 9246(Thus,)m
-586(each)s 1080(font)s 1524(has)s 1893(tw)s 2(o)k
-2303(names:)s 3019(its)s 240 fnt83 3294 9248(family)m 3946(name)s
-240 fnt82 4518 9246(\(T)m 8(imes,)k 5292(Helv)s 3(etica,)k
-6310(etc.\))s 6775(and)s 7179(its)s 240 fnt83 7454 9248(face)m
-7904(name)s 240 fnt82 8475 9246(\(Base,)m 0 8958(Slope,)m 682(etc.\).)s
-1294(T)s 8(imes)k 1964(Base)s 2516(is)s 2756(more)s
-3334(commonly)s 4443(called)s 5101(T)s 8(imes)k 5772(Roman,)s
-6601(and)s 7036(T)s 8(imes)k 7706(Slope)s 8338(is)s
-8579(more)s 0 8670(commonly)m 1085(called)s 1720(T)s 8(imes)k
-2367(Italic.)s 3027(Lout)s 3547(a)s 4(v)k 4(oids)k
-4222(these)s 4776(names)s 5445(in)s 5695(f)s 2(a)k 4(v)k 4(our)k
-6377(of)s 6655(generic)s 7418(names)s 8087(which)s 8737(can)s
-0 8382(be)m 282(applied)s 1044(to)s 1283(man)s 3(y)k
-1866(font)s 2311(f)s 2(amilies.)k 480 8008(Lig)m 1(atures,)k
-1488(such)s 1984(as)s 2234(\210)s 2420(for)s 2758(f)s
-2849(l)s 2970(and)s 3375(\207)s 3560(for)s 3898(f)s
-3989(i,)s 4163(are)s 4510(considered)s 5604(by)s 5899(Basser)s
-6596(Lout)s 7108(to)s 7348(be)s 7630(an)s 7913(inte)s 3(gral)k
-8695(part)s 0 7720(of)m 257(the)s 591(font:)s 1128(if)s
-1331(the)s 1665(font)s 2096(de\207nition)s 3056(\(see)s 3482(belo)s 6(w\))k
-4175(mentions)s 5089(them,)s 5660(the)s 3(y)k 6109(will)s
-6521(be)s 6789(used.)s 7378(Similarly)s 15(,)k 8344(k)s 2(erning)k
-0 7432(\(\207ne)m 510(adjustment)s 1636(of)s 1924(the)s 2289(space)s
-2893(between)s 3764(adjacent)s 4637(characters)s 5672(to)s 5928(impro)s 3(v)k 3(e)k
-6792(the)s 7157(appearance\))s 8377(is)s 8604(done)s 0 7144(whene)m 6(v)k 3(er)k
-988(indicated)s 1929(in)s 2179(the)s 2535(font)s 2987(de\207nition.)s
-4075(Enclosing)s 5092(one)s 5502(of)s 5780(the)s 6135(letters)s
-6775(in)s 220 fnt35 7026 7141(@OneCol)m 240 fnt82 8045 7144(is)m
-8262(one)s 8672(sure)s 0 6856(w)m 2(ay)k 451(to)s
-690(disable)s 1423(a)s 1589(lig)s 1(ature)k 2373(or)s
-2632(k)s 2(ern.)k 480 6482(The)m 220 fnt35 908 6479(@F)m 6(ont)k
-240 fnt82 1620 6482(symbol)m 2380(returns)s 3094(its)s 3370(right)s
-3881(parameter)s 4895(in)s 5138(a)s 5304(font)s 5749(and)s
-6153(size)s 6580(speci\207ed)s 7488(by)s 7782(its)s 8058(left:)s
-220 fnt35 480 5974({ )m 11(Times Base 12p } @F)k 6(ont)k 240 fnt83
-3155 5979(object)m 240 fnt82 0 5478(The)m 417(f)s 2(amily)k
-1080(and)s 1473(f)s 2(ace)k 1912(names)s 2563(must)s
-3076(ha)s 4(v)k 3(e)k 3565(appeared)s 4475(together)s
-5306(in)s 5538(a)s 220 fnt35 5692 5475(f)m 6(ontdef)k
-240 fnt82 6354 5478(;)m 6454(the)s 6791(size)s 7206(is)s
-7405(arbitrary)s 8268(and)s 8660(may)s 0 5190(be)m 283(gi)s 6(v)k 3(en)k
-865(in)s 1109(an)s 3(y)k 1508(one)s 1911(of)s
-2184(the)s 220 fnt35 2533 5187(c)m 240 fnt82 2638 5190(,)m
-220 fnt35 2747 5187(i)m 240 fnt82 2781 5190(,)m 220 fnt35
-2889 5187(p)m 240 fnt82 3003 5190(,)m 220 fnt35 3112 5187(m)m
-240 fnt82 3281 5190(,)m 220 fnt35 3389 5187(f)m 240 fnt82
-3447 5190(,)m 220 fnt35 3556 5187(s)m 240 fnt82 3659 5190(,)m
-3767(and)s 220 fnt35 4173 5187(v)m 240 fnt82 4343 5190(units)m
-4861(of)s 5133(measurement)s 6469(\(Section)s 7323(3.2\),)s 7811(although)s
-220 fnt35 8708 5187(10p)m 240 fnt82 0 4902(and)m 220 fnt35
-407 4899(12p)m 240 fnt82 828 4902(are)m 1178(the)s 1530(most)s
-2058(common)s 2956(sizes)s 3475(for)s 3816(te)s 3(xt.)k
-4338(There)s 4954(may)s 5424(be)s 5709(empty)s 6364(objects)s
-7096(and)s 220 fnt35 7503 4899(@Null)m 240 fnt82 8151 4902(objects)m
-8883(in)s 0 4614(the)m 348(left)s 725(parameter)s 1739(of)s
-220 fnt35 2010 4611(@F)m 6(ont)k 240 fnt82 2662 4614(;)m
-2774(these)s 3321(are)s 3668(ignored.)s 480 4240(When)m 1114(a)s
-220 fnt35 1286 4237(@F)m 6(ont)k 240 fnt82 2004 4240(symbol)m
-2769(is)s 2985(nested)s 3660(inside)s 4293(the)s 4646(right)s
-5163(parameter)s 6183(of)s 6459(another)s 220 fnt35 7242 4237(@F)m 6(ont)k
-240 fnt82 7960 4240(symbol,)m 8778(the)s 0 3952(inner)m 555(one)s
-961(determines)s 2065(the)s 2417(font)s 2867(of)s 3142(its)s
-3423(o)s 6(wn)k 3891(right)s 4406(parameter)s 13(.)k
-5516(Ho)s 6(we)k 6(v)k 3(er)k 9(,)k
-6480(it)s 6677(may)s 7147(be)s 7434(abbre)s 6(viated)k
-8605(so)s 8876(as)s 0 3664(to)m 239(inherit)s 922(part)s
-1353(of)s 1624(the)s 1972(outer)s 2523(symbol:)s 220 fnt35
-480 3163({ )m 11(Times Base 12p } @F)k 6(ont)k 480 2875({ hello)m 8(, Slope @F)k 6(ont hello)k 8(, 15p @F)k 6(ont hello })k
-240 fnt82 0 2379(has)m 370(result)s 480 1898(hello,)m 240 fnt83
-1065 1900(hello,)m 300 fnt82 1636 1885(hello)m 240 fnt82 0 1414(The)m
-457(\207rst)s 918(inner)s 220 fnt35 1498 1411(@F)m 6(ont)k
-240 fnt82 2240 1414(inherits)m 3037(the)s 3414(outer)s 3995(f)s 2(amily)k
-4699(and)s 5133(size,)s 5641(changing)s 6601(only)s 7111(the)s
-7488(f)s 2(ace;)k 8025(the)s 8403(second)s 0 1126(inherits)m
-754(the)s 1089(outer)s 1627(f)s 2(amily)k 2289(and)s
-2680(f)s 2(ace.)k 3225(When)s 3841(a)s 3994(f)s 2(amily)k
-4656(name)s 5217(is)s 5413(gi)s 6(v)k 3(en,)k
-6030(it)s 6209(must)s 6721(be)s 6990(follo)s 6(wed)k
-7878(immediately)s 0 838(by)m 294(a)s 460(f)s 2(ace)k
-911(name.)s 1593(A)s 1823(size)s 2250(change)s 2984(may)s
-3450(appear)s 4147(\207rst)s 4578(or)s 4837(last.)s 480 464(Sizes)m
-1035(of)s 1307(the)s 1656(form)s 2180(+)s 240 fnt83
-2308 466(length)m 240 fnt82 2962 464(and)m 3367(\211)s 240 fnt83
-3487 466(length)m 240 fnt82 4140 464(may)m 4607(also)s 5046(be)s
-5328(used,)s 5875(meaning)s 6753(that)s 7171(the)s 7520(font)s
-7966(size)s 8393(is)s 8604(to)s 8844(be)s 240 fnt83
-0 178(length)m 240 fnt82 649 176(lar)m 4(ger)k 1257(or)s
-1512(smaller)s 2269(than)s 2734(the)s 3078(inherited)s 3981(v)s 6(alue.)k
-4652(F)s 3(or)k 5037(e)s 3(xample,)k 5947(\211)s
-220 fnt35 6067 173(2p)m 240 fnt82 6359 176(is)m 6564(often)s
-7108(used)s 7601(for)s 7934(superscripts)s
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 41 47
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Italic
-%%+ font Times-Bold
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-1 LoutMargSet
-grestore
-240 fnt83 0 13843(3.3.)m 454(@F)s 25(ont)k 1165(and)s
-1591(@Char)s 240 fnt84 8839 13840(41)m 240 fnt82 0 13250(and)m
-407(subscripts.)s 1530(These)s 2161(forms)s 2772(are)s 3123(highly)s
-3792(recommended,)s 5257(since)s 5808(the)s 3(y)k 6274(don')s 4(t)k
-6839(need)s 7352(to)s 7594(be)s 7880(changed)s 8739(if)s
-8960(a)s 0 12962(decision)m 854(is)s 1064(made)s 1638(to)s
-1877(alter)s 2360(the)s 2708(font)s 3153(size)s 3580(of)s
-3851(the)s 4199(document)s 5203(as)s 5453(a)s 5619(whole.)s
-480 12588(The)m 220 fnt35 908 12585(@F)m 6(ont)k 240 fnt82
-1620 12588(symbol)m 2380(also)s 2818(switches)s 3692(to)s 3931(and)s
-4335(from)s 4859(small)s 5431(capitals:)s 220 fnt35 480 12087(smallcaps @F)m 6(ont ...)k
-480 11799(nosmallcaps @F)m 6(ont ...)k 240 fnt82 0 11303(These)m 639(may)s
-1118(be)s 1412(nested,)s 2143(and)s 2559(the)s 3(y)k
-3035(cooperate)s 4033(with)s 4527(other)s 5091(font)s 5548(changes.)s
-6496(The)s 6936(precise)s 7681(ef)s 6(fect)k 8290(depends)s
-0 11015(on)m 293(the)s 637(font)s 1078(\(see)s 1514(belo)s 6(w\).)k
-2331(There)s 2940(is)s 3146(a)s 3308(def)s 2(ault)k
-4024(v)s 6(alue)k 4588(\()s 220 fnt35 4661 11012(nosmallcaps)m
-240 fnt82 5873 11015(\),)m 6055(so)s 6317(it)s 6504(is)s
-6710(not)s 7072(necessary)s 8051(to)s 8285(mention)s 0 10727(this)m
-396(attrib)s 4(ute)k 1243(when)s 1819(gi)s 6(ving)k
-2478(an)s 2761(initial)s 3372(font.)s 480 10353(There)m 1080(are)s
-1413(tw)s 2(o)k 1810(prede\207ned)s 2864(symbols,)s 220 fnt35
-3756 10350(@CurrF)m 11(amily)k 240 fnt82 5083 10353(and)m 220 fnt35
-5474 10350(@CurrF)m 11(ace)k 240 fnt82 6592 10353(,)m 6685(which)s
-7314(respecti)s 6(v)k 3(ely)k 8499(return)s 0 10065(the)m
-337(f)s 2(amily)k 1000(and)s 1392(f)s 2(ace)k
-1831(names)s 2482(of)s 2741(the)s 3077(current)s 3801(font.)s
-4339(F)s 3(or)k 4716(e)s 3(xample,)k 5618(right)s
-6117(no)s 6(w)k 220 fnt35 6567 10062(@CurrF)m 11(amily)k
-240 fnt82 7896 10065(is)m 8094(T)s 8(imes)k 8722(and)s
-220 fnt35 0 9774(@CurrF)m 11(ace)k 240 fnt82 1178 9777(is)m
-1388(Base.)s 480 9403(When)m 1109(Lout)s 1621(runs,)s 2140(the)s
-2488(\207rst)s 2919(thing)s 3464(it)s 3656(reads)s 4211(is)s
-4421(a)s 4587(list)s 4938(of)s 5209(font)s 5654(de\207nitions,)s
-6771(lik)s 2(e)k 7183(these:)s 220 fnt35 480 8895(f)m 6(ontdef )k 11(Times Base {)k
-240 fnt83 2842 8900(implementation-dependent)m 220 fnt35 5517 8895(})m 480 8607(f)m 6(ontdef )k 11(Times Slope {)k
-240 fnt83 2841 8612(implementation-dependent)m 220 fnt35 5516 8607(})m 240 fnt82
-0 8111(Each)m 552(line)s 983(tells)s 1449(Lout)s 1978(of)s
-2267(the)s 2632(e)s 3(xistence)k 3591(of)s 3880(a)s
-4063(font,)s 4573(and)s 4994(assigns)s 5754(it)s 5963(a)s
-6146(f)s 2(amily)k 6839(name)s 7430(and)s 7852(a)s
-8035(f)s 2(ace)k 8504(name.)s 0 7823(There)m 617(are)s
-969(a)s 1140(fe)s 6(w)k 1551(fonts)s 2085(which)s
-2732(are)s 3084(the)s 3437(only)s 3921(members)s 4853(of)s
-5129(their)s 5631(f)s 2(amilies;)k 6514(e)s 6(v)k 3(en)k
-7019(though)s 7747(these)s 8299(fonts)s 8833(do)s 0 7535(not)m
-357(need)s 857(a)s 1013(f)s 2(ace)k 1455(name,)s
-2070(the)s 3(y)k 2523(must)s 3039(be)s 3311(gi)s 6(v)k 3(en)k
-3881(one)s 4274(by)s 4558(their)s 220 fnt35 5045 7532(f)m 6(ontdef)k
-240 fnt82 5707 7535(.)m 5862(The)s 6280(part)s 6701(between)s
-7546(braces)s 8197(may)s 8653(v)s 6(ary)k 0 7247(with)m
-486(dif)s 6(ferent)k 1365(implementations)s 3013(of)s 3288(Lout;)s
-3856(it)s 4052(is)s 4267(supposed)s 5221(to)s 5464(contain)s
-6229(the)s 6581(information)s 7770(Lout)s 8286(needs)s 8887(to)s
-0 6959(w)m 2(ork)k 551(with)s 1033(the)s 1381(font.)s
-480 6585(In)m 735(Basser)s 1431(Lout)s 1941(V)s 26(ersion)k
-2728(3,)s 2954(this)s 3348(implementation-dependent)s 5970(part)s 6400(consists)s
-7206(of)s 7476(a)s 7641(PostScript)s 8681(font)s 0 6297(name,)m
-635(an)s 928(Adobe)s 1634(font)s 2089(metrics)s 2852(\(formerly)s
-3831(AFM\))s 4488(\207le)s 4859(whose)s 5538(F)s 3(ontName)k
-6611(entry)s 7166(must)s 7702(agree)s 8285(with)s 8778(the)s
-0 6009(PostScript)m 1034(font)s 1471(name)s 2037(just)s 2433(mentioned,)s
-3542(the)s 3882(name)s 4448(of)s 4710(a)s 4868(Lout)s
-5372(Character)s 6352(Mapping)s 7261(\(LCM\))s 7979(\207le,)s 8383(and)s
-8778(the)s 0 5721(w)m 2(ord)k 220 fnt35 548 5718(Recode)m
-240 fnt82 1356 5721(or)m 220 fnt35 1615 5718(NoRecode)m 240 fnt82
-2643 5721(:)m 220 fnt35 480 5266(f)m 6(ontdef )k 11(Times Base { )k 11(Times-Roman )k 11(Ti-Ro LtLatin1.LCM Recode })k
-240 fnt82 0 4772(It)m 226(seems)s 883(to)s 1143(ha)s 4(v)k 3(e)k
-1666(become)s 2487(an)s 2792(in)s 9(v)k 6(ariable)k
-3810(rule)s 4258(at)s 4512(Adobe)s 5228(Systems)s 6098(that)s
-6538(the)s 6907(font)s 7374(name)s 7969(and)s 8395(the)s
-8765(\207le)s 0 4484(name)m 591(should)s 1305(be)s 1605(the)s
-1970(same,)s 2585(b)s 4(ut)k 2965(some)s 3543(operating)s
-4517(systems)s 5342(do)s 5652(not)s 6036(permit)s 6736(such)s
-7249(long)s 7746(\207le)s 8124(names,)s 8860(so)s 0 4196(Lout)m
-526(does)s 1031(not)s 1411(use)s 1801(them.)s 2457(The)s
-2900(\207les)s 3363(are)s 3725(searched)s 4633(for)s 4986(in)s
-5243(standard)s 6126(places.)s 6901(Consult)s 7721(the)s 8084(PostScript)s
-0 3908(Reference)m 1064(Manual)s 1891([1)s 2065(])s 2224(for)s
-2603(general)s 3401(information)s 4627(about)s 5260(fonts)s 5830(and)s
-6274(encoding)s 7246(v)s 3(ectors;)k 8086(brie\210y)s 15(,)k
-8843(an)s 0 3620(8-bit)m 520(character)s 1464(code)s 240 fnt83
-1981 3622(c)m 240 fnt82 2153 3620(in)m 2405(Lout')s 13(s)k
-3077(input)s 3638(is)s 3858(mapped)s 4683(to)s 4932(the)s
-5289(character)s 6233(in)s 6485(the)s 6843(Adobe)s 7547(font)s
-8002(metrics)s 8765(\207le)s 0 3332(whose)m 677(name)s 1260(appears)s
-2050(on)s 2356(the)s 2714(line)s 3137(labelled)s 240 fnt83
-3960 3334(c)m 240 fnt82 4131 3332(in)m 4384(the)s 4741(LCM)s
-5323(\207le.)s 5801(The)s 6239(LCM)s 6821(\207le)s 7191(also)s
-7638(de\207nes)s 8377(v)s 6(arious)k 0 3044(character)m 4(-to-character)k
-2162(mappings,)s 3215(such)s 3726(as)s 3991(upper)s 4(-case)k
-5093(to)s 5347(lo)s 6(wer)k 4(-case,)k 6493(which)s
-7150(are)s 7512(used)s 8024(for)s 8377(v)s 6(arious)k
-0 2756(purposes,)m 947(such)s 1431(as)s 1669(the)s 2005(production)s
-3087(of)s 3346(small)s 3906(capitals.)s 4787(If)s 5005(the)s
-5341(w)s 2(ord)k 220 fnt35 5877 2753(NoRecode)m 240 fnt82
-6953 2756(appears,)m 7778(Lout)s 8278(assumes)s 0 2468(that)m 428(the)s
-786(gi)s 6(v)k 3(en)k 1376(encoding)s 2317(v)s 3(ector)k
-2981(is)s 3201(already)s 3968(associated)s 5018(with)s 5510(this)s
-5916(font)s 6371(in)s 6624(the)s 6982(PostScript)s 8035(interpreter)s 9(,)k
-0 2180(and)m 404(optimizes)s 1384(its)s 1660(output)s 2332(accordingly)s 15(.)k
-480 1806(If)m 723(there)s 1270(are)s 1630(tw)s 2(o)k
-2054(font)s 2512(de\207nitions)s 3587(with)s 4083(the)s 4444(same)s
-5005(f)s 2(amily)k 5693(and)s 6111(f)s 2(ace)k
-6576(name,)s 7214(it)s 7420(is)s 7643(an)s 7940(error)s
-8477(unless)s 0 1518(the)m 371(second)s 1117(one)s 1542(has)s
-1936(the)s 2307(same)s 2877(font)s 3346(name)s 3943(and)s
-4370(\207le)s 4755(name)s 5352(as)s 5625(the)s 5997(\207rst,)s
-6498(in)s 6764(which)s 7430(case)s 7920(it)s 8135(is)s
-8369(silently)s 0 1230(ignored.)m 902(A)s 1139(PostScript)s 2188(font)s
-2640(name)s 3221(and)s 3632(\207le)s 4000(may)s 4474(appear)s
-5178(in)s 5428(tw)s 2(o)k 5845(or)s 6111(more)s
-6665(font)s 7117(de\207nitions,)s 8242(allo)s 6(wing)k 0 942(one)m
-402(PostScript)s 1444(font)s 1889(to)s 2128(ha)s 4(v)k 3(e)k
-2629(tw)s 2(o)k 3039(or)s 3298(more)s 3845(equally)s
-4603(v)s 6(alid)k 5133(Lout)s 5645(names,)s 6363(and)s
-6767(dif)s 6(ferent)k 7642(LCM)s 8215(\207les.)s 480 568(The)m
-220 fnt35 917 565(@Char)m 240 fnt82 1685 568(symbol)m 2454(allo)s 6(ws)k
-3133(a)s 3309(character)s 4252(to)s 4501(be)s 4792(speci\207ed)s
-5710(by)s 6014(its)s 6299(name)s 6883(\(its)s 7247(PostScript)s
-8299(name)s 8883(in)s 0 280(Basser)m 697(Lout\))s 1277(rather)s
-1893(than)s 2362(by)s 2656(its)s 2932(code:)s
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 42 48
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Times-Italic
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-0 LoutMargSet
-grestore
-240 fnt84 0 13840(42)m 240 fnt83 6081 13843(Chapter)m 6931(3.)s
-7205(Pr)s 8(ede\207ned)k 8300(symbols)s 220 fnt35 480 13207(@Char nine)m
-240 fnt82 0 12752(is)m 215(equi)s 6(v)k 6(alent)k
-1265(to)s 220 fnt35 1510 12749(9)m 240 fnt82 1689 12752(in)m
-1938(most)s 2469(fonts.)s 3117(This)s 3599(is)s 3815(useful)s
-4460(as)s 4716(a)s 4888(documentation)s 6373(aid)s 6729(and)s
-7139(to)s 7384(be)s 7672(sure)s 8132(of)s 8409(getting)s
-0 12464(the)m 347(right)s 856(character)s 1788(e)s 6(v)k 3(en)k
-2286(if)s 2501(the)s 2848(encoding)s 3777(v)s 3(ector)k
-4429(of)s 4698(the)s 5044(font)s 5488(is)s 5696(changed.)s
-6656(Ho)s 6(we)k 6(v)k 3(er)k 220 fnt35
-7576 12461(@Char)m 240 fnt82 8332 12464(will)m 8756(f)s 2(ail)k
-0 12176(if)m 217(the)s 565(character)s 1499(named)s 2195(is)s
-2405(not)s 2771(in)s 3014(the)s 3362(encoding)s 4293(v)s 3(ector)k
-4947(of)s 5218(the)s 5566(current)s 6302(font.)s 240 fnt84
-0 11383(3.4.)m 471(@Br)s 4(eak)k 240 fnt82 480 10951(The)m
-220 fnt35 898 10948(@Break)m 240 fnt82 1744 10951(symbol)m 2493(in\210uences)s
-3504(the)s 3842(appearance)s 4962(of)s 5223(paragraphs)s 6313(\(Section)s
-7155(3.2\),)s 7631(of)s 6(fering)k 8437(a)s 8592(\207x)s 3(ed)k
-0 10663(set)m 325(of)s 596(nine)s 1064(styles:)s 220 fnt35
-1275 10155(adjust)m 1916(@Break)s 240 fnt83 2772 10160(object)m 240 fnt82
-3600 10158(Break)m 4301(the)s 4718(paragraphs)s 5887(of)s 240 fnt83
-6228 10160(object)m 240 fnt82 6945 10158(into)m 7439(lines,)s 8066(and)s
-8540(apply)s 220 fnt35 3600 9867(@P)m 26(Adjust)k 240 fnt82
-4633 9870(\(Section)m 5511(3.15\))s 6084(to)s 6348(e)s 6(v)k 3(ery)k
-6949(line)s 7388(e)s 3(xcept)k 8094(the)s 8467(last)s
-8883(in)s 3600 9582(each)m 4095(paragraph;)s 220 fnt35 1128 9074(outdent)m
-1916(@Break)s 240 fnt83 2772 9079(object)m 240 fnt82 3600 9077(Lik)m 2(e)k
-220 fnt35 4122 9074(adjust)m 240 fnt82 4703 9077(,)m 4840(e)s 3(xcept)k
-5551(that)s 220 fnt35 6000 9074(2.0f @Wide {} &0i)m 240 fnt82 7809 9077(is)m
-8049(inserted)s 8894(at)s 3600 8789(the)m 3981(be)s 3(ginning)k
-5022(of)s 5326(e)s 6(v)k 3(ery)k 5935(line)s
-6382(e)s 3(xcept)k 7096(the)s 7477(\207rst,)s 7988(creating)s
-8843(an)s 3600 8501(outdented)m 4602(paragraph;)s 220 fnt35 1187 7993(r)m 2(agged)k
-1916(@Break)s 240 fnt83 2772 7998(object)m 240 fnt82 3600 7996(Break)m
-4222(the)s 4559(paragraphs)s 5648(of)s 240 fnt83 5908 7998(object)m
-240 fnt82 6545 7996(into)m 6960(lines,)s 7507(b)s 4(ut)k
-7858(do)s 8140(not)s 8495(adjust)s 3600 7708(the)m 3948(lines)s
-4450(\(`ragged)s 5317(right'\);)s 220 fnt35 1077 7200(cr)m 2(agged)k
-1916(@Break)s 240 fnt83 2772 7205(object)m 240 fnt82 3600 7203(Lik)m 2(e)k
-220 fnt35 4125 7200(r)m 2(agged)k 240 fnt82 4794 7203(,)m
-4934(e)s 3(xcept)k 5648(that)s 6099(each)s 6628(line)s
-7075(will)s 7534(be)s 7849(centred)s 8644(with)s 3600 6915(respect)m
-4336(to)s 4575(the)s 4923(others;)s 220 fnt35 1114 6407(rr)m 2(agged)k
-1916(@Break)s 240 fnt83 2772 6412(object)m 240 fnt82 3600 6410(Lik)m 2(e)k
-220 fnt35 4115 6407(r)m 2(agged)k 240 fnt82 4784 6410(,)m
-4914(e)s 3(xcept)k 5618(that)s 6059(each)s 6577(line)s
-7014(will)s 7463(be)s 7768(right-justi\207ed)s 3600 6122(with)m 4082(respect)s
-4818(to)s 5057(the)s 5405(others)s 6040(\(`ragged)s 6907(left'\);)s
-220 fnt35 1065 5614(or)m 2(agged)k 1916(@Break)s 240 fnt83
-2772 5619(object)m 240 fnt82 3600 5617(The)m 4028(ob)s 3(vious)k
-4835(combination)s 6088(of)s 220 fnt35 6359 5614(r)m 2(agged)k
-240 fnt82 7088 5617(and)m 220 fnt35 7492 5614(outdent)m 240 fnt82
-8220 5617(;)m 220 fnt35 1413 5110(lines)m 1916(@Break)s 240 fnt83
-2772 5115(object)m 240 fnt82 3600 5113(Break)m 4284(the)s 4685(paragraphs)s
-5837(of)s 240 fnt83 6161 5115(object)m 240 fnt82 6861 5113(into)m
-7339(lines)s 7893(at)s 8178(the)s 8579(same)s 3600 4825(points)m
-4235(that)s 4651(the)s 3(y)k 5113(are)s 5458(brok)s 2(en)k
-6177(into)s 6600(lines)s 7101(in)s 7342(the)s 7689(input,)s
-8286(and)s 8688(also)s 3600 4537(at)m 3819(concatenation)s 5190(symbols)s
-6026(of)s 6283(the)s 6617(form)s 220 fnt35 7128 4534(&)m
-240 fnt83 7270 4539(k)m 220 fnt35 7380 4534(b)m 240 fnt82
-7540 4537(for)m 7865(an)s 3(y)k 240 fnt83 8248 4539(k)m
-240 fnt82 8404 4537(greater)m 3600 4249(than)m 4069(1.)s 4354(Do)s
-4700(not)s 5067(adjust)s 5698(the)s 6047(lines.)s 6663(An)s 3(y)k
-7127(spaces)s 7803(at)s 8035(the)s 8384(start)s 8855(of)s
-3600 3961(a)m 3766(line)s 4180(other)s 4731(than)s 5200(the)s
-5548(\207rst)s 5979(line)s 6393(will)s 6819(appear)s 7516(in)s
-7759(the)s 8107(output;)s 220 fnt35 1303 3453(clines)m 1916(@Break)s
-240 fnt83 2772 3458(object)m 240 fnt82 3600 3456(Break)m 4288(the)s
-4693(paragraphs)s 5849(of)s 240 fnt83 6177 3458(object)m 240 fnt82
-6881 3456(into)m 7363(lines)s 7921(as)s 8228(for)s 220 fnt35
-8623 3453(lines)m 3600 3165(@Break)m 240 fnt82 4396 3168(,)m 4503(then)s
-4972(centre)s 5611(each)s 6106(line)s 6520(with)s 7002(respect)s
-7738(to)s 7977(the)s 8325(others;)s 220 fnt35 1337 2660(r)m -3(lines)k
-1916(@Break)s 240 fnt83 2772 2665(object)m 240 fnt82 3600 2663(Break)m
-4288(the)s 4693(paragraphs)s 5849(of)s 240 fnt83 6177 2665(object)m
-240 fnt82 6881 2663(into)m 7363(lines)s 7921(as)s 8228(for)s
-220 fnt35 8623 2660(lines)m 3600 2372(@Break)m 240 fnt82 4396 2375(,)m
-4535(then)s 5036(right-)s 5555(justify)s 6251(each)s 6778(line)s
-7224(with)s 7738(respect)s 8506(to)s 8778(the)s 3600 2087(others.)m
-0 1634(If)m 235(the)s 588(paragraph)s 1606(w)s 2(as)k
-2032(an)s 2320(entire)s 2924(component)s 4053(of)s 4329(a)s
-4501(g)s 1(alle)k 3(y)k 15(,)k 5178(so)s
-5449(will)s 5880(each)s 6380(of)s 6656(its)s 6937(lines)s
-7444(be;)s 7787(otherwise)s 8778(the)s 0 1346(lines)m 502(are)s
-849(enclosed)s 1744(in)s 1987(a)s 220 fnt35 2153 1343(@OneRo)m 3(w)k
-240 fnt82 3284 1346(symbol)m 4044(after)s 4540(breaking.)s 480 972(The)m
-911(length)s 1570(of)s 1845(the)s 2196(g)s 1(ap)k
-2598(used)s 3099(to)s 3341(separate)s 4183(the)s 4535(lines)s
-5040(produced)s 5993(by)s 6291(paragraph)s 7307(breaking)s 8201(is)s
-8415(al)s 2(w)k 2(ays)k 220 fnt35 0 681(1v)m
-240 fnt82 231 684(.)m 395(Ho)s 6(we)k 6(v)k 3(er)k 9(,)k
-1355(the)s 220 fnt35 1703 681(v)m 240 fnt82 1872 684(unit)m
-2304(itself)s 2852(and)s 3256(the)s 3604(g)s 1(ap)k
-4002(mode)s 4590(may)s 5056(be)s 5338(changed:)s
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 43 49
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Italic
-%%+ font Times-Bold
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-1 LoutMargSet
-grestore
-240 fnt83 0 13843(3.4.)m 454(@Br)s 8(eak)k 240 fnt84
-8833 13840(43)m 240 fnt83 1503 13249(gap)m 220 fnt35 1916 13244(@Break)m
-240 fnt83 2772 13249(object)m 240 fnt82 3600 13247(W)m 9(ithin)k
-240 fnt83 4312 13249(object)m 240 fnt82 4900 13247(,)m 5008(tak)s 2(e)k
-5460(the)s 5809(v)s 6(alue)k 6377(of)s 6649(the)s
-220 fnt35 6998 13244(v)m 240 fnt82 7167 13247(unit)m 7600(to)s
-7839(be)s 8122(the)s 8471(length)s 3600 12959(of)m 240 fnt83
-3871 12961(gap)m 240 fnt82 4224 12959(;)m 1375 12458(+)m 240 fnt83
-1503 12460(gap)m 220 fnt35 1916 12455(@Break)m 240 fnt83 2772 12460(object)m
-240 fnt82 3600 12458(W)m 9(ithin)k 240 fnt83 4320 12460(object)m
-240 fnt82 4908 12458(,)m 5024(tak)s 2(e)k 5485(the)s
-5841(v)s 6(alue)k 6418(of)s 6698(the)s 220 fnt35
-7054 12455(v)m 240 fnt82 7232 12458(unit)m 7673(to)s 7920(be)s
-8211(lar)s 4(ger)k 8832(by)s 3600 12170(the)m 3948(length)s
-4603(of)s 240 fnt83 4874 12172(gap)m 240 fnt82 5287 12170(than)m
-5756(it)s 5948(w)s 2(ould)k 6603(otherwise)s 7588(ha)s 4(v)k 3(e)k
-8089(been;)s 1383 11665(\211)m 240 fnt83 1503 11667(gap)m 220 fnt35
-1916 11662(@Break)m 240 fnt83 2772 11667(object)m 240 fnt82 3600 11665(W)m 9(ithin)k
-240 fnt83 4309 11667(object)m 240 fnt82 4897 11665(,)m 5000(tak)s 2(e)k
-5448(the)s 5792(v)s 6(alue)k 6356(of)s 6623(the)s
-220 fnt35 6968 11662(v)m 240 fnt82 7133 11665(unit)m 7561(to)s
-7796(be)s 8074(smaller)s 8832(by)s 3600 11377(the)m 3948(length)s
-4603(of)s 240 fnt83 4874 11379(gap)m 240 fnt82 5287 11377(than)m
-5756(it)s 5948(w)s 2(ould)k 6603(otherwise)s 7588(ha)s 4(v)k 3(e)k
-8089(been.)s 0 10872(In)m 256(each)s 751(case,)s 1269(the)s
-1617(mode)s 2205(of)s 240 fnt83 2476 10874(gap)m 240 fnt82
-2889 10872(is)m 3099(adopted)s 3915(within)s 240 fnt83 4583 10874(object)m
-240 fnt82 5171 10872(.)m 480 10498(The)m 220 fnt35 908 10495(@Break)m
-240 fnt82 1764 10498(symbol)m 2524(also)s 2962(controls)s 3783(h)s 1(yphenation:)k
-220 fnt35 1141 9990(h)m 6(yphen @Break)k 240 fnt83 2772 9995(object)m
-240 fnt82 3600 9993(Permit)m 4296(h)s 1(yphenation)k 5536(within)s
-6204(the)s 6552(paragraphs)s 7652(of)s 240 fnt83 7923 9995(object)m
-240 fnt82 8511 9993(;)m 220 fnt35 897 9485(noh)m 6(yphen @Break)k
-240 fnt83 2772 9490(object)m 240 fnt82 3600 9488(Prohibit)m 4440(h)s 1(yphenation)k
-5691(within)s 6370(the)s 6729(paragraphs)s 7840(of)s 240 fnt83
-8122 9490(object)m 240 fnt82 8710 9488(;)m 8833(all)s 3600 9200(h)m 1(yphenation)k
-4897(g)s 1(aps)k 5443(without)s 6291(e)s 3(xception)k
-7332(re)s 6(v)k 3(ert)k 7996(to)s 8292(edge-)s
-8812(to-)s 3600 8912(edge)m 4108(mode.)s 0 8409(The)m 220 fnt35
-428 8406(@Break)m 240 fnt82 1284 8409(also)m 1722(has)s 2092(options)s
-2848(which)s 3490(control)s 4222(wido)s 6(w)k 4922(and)s
-5326(orphan)s 6048(lines:)s 220 fnt35 480 7901(unbreakab)m 4(le\207rst @Break)k
-240 fnt83 3058 7906(ob)m 240 fnt82 3292 7904(-)m 240 fnt83
-480 7618(ject)m 240 fnt82 3600 7904(Pre)m 6(v)k 3(ent)k
-4431(column)s 5256(and)s 5710(page)s 6268(breaks)s 6993(\(i.e.)s
-7458(pre)s 6(v)k 3(ent)k 8276(a)s 8492(g)s 1(alle)k 3(y)k
-3600 7616(from)m 4147(splitting\))s 5081(between)s 5959(the)s 6330(\207rst)s
-6784(and)s 7212(second)s 7958(lines)s 8483(of)s 8778(the)s
-3600 7328(paragraphs)m 4700(of)s 240 fnt83 4971 7330(object)m 240 fnt82
-5559 7328(;)m 220 fnt35 480 6820(unbreakab)m 4(lelast @Break)k 240 fnt83
-3058 6825(ob)m 240 fnt82 3292 6823(-)m 240 fnt83 480 6537(ject)m
-240 fnt82 3600 6823(Pre)m 6(v)k 3(ent)k 4429(column)s
-5252(and)s 5704(page)s 6261(breaks)s 6984(between)s 7886(the)s
-8282(last)s 8722(and)s 3600 6535(second)m 4323(last)s 4714(lines)s
-5216(of)s 5487(the)s 5835(paragraphs)s 6935(of)s 240 fnt83
-7206 6537(object)m 240 fnt82 7794 6535(.)m 0 6032(These)m 688(options)s
-1506(w)s 2(ork)k 2119(by)s 2475(adding)s 3241(the)s
-220 fnt35 3651 6029(u)m 240 fnt82 3881 6032(\(unbreakable\))m 5319(suf\207x)s
-5980(to)s 6281(the)s 6691(appropriate)s 7897(g)s 1(aps)k
-8448(during)s 0 5744(paragraph)m 1017(breaking,)s 1966(so)s 2237(their)s
-2738(precise)s 3475(ef)s 6(fect)k 4076(is)s 4290(as)s
-4545(described)s 5524(for)s 5866(this)s 6267(suf\207x.)s 6981(These)s
-7612(options)s 8373(may)s 8844(be)s 0 5456(countermanded)m 1533(by)s
-220 fnt35 1827 5453(breakab)m 4(le\207rst @Break)k 240 fnt82 4057 5456(and)m
-220 fnt35 4461 5453(breakab)m 4(lelast @Break.)k 240 fnt82 480 5082(Se)m 6(v)k 3(eral)k
-1310(options)s 2135(may)s 2669(be)s 3020(gi)s 6(v)k 3(en)k
-3668(to)s 3976(the)s 220 fnt35 4392 5079(@Break)m 240 fnt82
-5317 5082(symbol)m 6145(simultaneously)s 15(,)k 7754(in)s 8065(an)s 3(y)k
-8531(order)s 13(.)k 0 4794(F)m 3(or)k 389(e)s 3(xample,)k
-220 fnt35 480 4293({ adjust 1.2fx h)m 6(yphen } @Break ...)k 240 fnt82 0 3795(is)m
-210(a)s 375(typical)s 1079(initial)s 1689(v)s 6(alue.)k
-2365(There)s 2977(may)s 3442(be)s 3723(empty)s 4375(objects)s
-5102(and)s 220 fnt35 5505 3792(@Null)m 240 fnt82 6149 3795(objects)m
-6877(in)s 7119(the)s 7466(left)s 7842(parameter)s 8855(of)s
-220 fnt35 0 3504(@Break)m 240 fnt82 796 3507(;)m 908(these)s
-1455(are)s 1802(ignored.)s 240 fnt84 0 2714(3.5.)m 471(@Space)s
-240 fnt82 480 2237(The)m 220 fnt35 911 2234(@Space)m 240 fnt82
-1812 2237(symbol)m 2576(changes)s 3402(the)s 3754(v)s 6(alue)k
-4326(of)s 4601(the)s 220 fnt35 4953 2234(s)m 240 fnt82
-5120 2237(unit)m 5556(of)s 5831(measurement)s 7169(\(Section)s 8026(3.2\))s
-8458(within)s 0 1949(its)m 276(right)s 787(parameter)s 1801(to)s
-2040(the)s 2388(v)s 6(alue)k 2956(gi)s 6(v)k 3(en)k
-3536(by)s 3830(the)s 4178(left)s 4555(parameter:)s 220 fnt35
-480 1448(1c @Space { a b c d })m 240 fnt82 0 952(has)m 370(result)s 480 499(a)m
-1153(b)s 1833(c)s 2499(d)s
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 44 50
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Times-Italic
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-0 LoutMargSet
-grestore
-240 fnt84 0 13840(44)m 240 fnt83 6081 13843(Chapter)m 6931(3.)s
-7205(Pr)s 8(ede\207ned)k 8300(symbols)s 240 fnt82 0 13205(As)m
-311(for)s 643(the)s 220 fnt35 985 13202(@Break)m 240 fnt82
-1835 13205(symbol,)m 2641(the)s 2982(left)s 3353(parameter)s 4361(of)s
-220 fnt35 4626 13202(@Space)m 240 fnt82 5517 13205(may)m 5976(be)s
-6252(gi)s 6(v)k 3(en)k 6826(relati)s 6(v)k 3(e)k
-7582(to)s 7815(the)s 8156(enclosing)s 220 fnt35 0 12914(s)m
-240 fnt82 163 12917(unit,)m 642(and)s 1046(it)s 1238(may)s
-1704(include)s 2464(a)s 2630(g)s 1(ap)k 3028(mode.)s
-3724(Note)s 4245(that)s 4663(the)s 220 fnt35 5011 12914(@F)m 6(ont)k
-240 fnt82 5723 12917(symbol)m 6483(also)s 6921(sets)s 7330(the)s
-220 fnt35 7678 12914(s)m 240 fnt82 7841 12917(unit.)m 480 12543(The)m
-906(left)s 1280(parameter)s 2292(of)s 2560(the)s 220 fnt35
-2906 12540(@Space)m 240 fnt82 3800 12543(symbol)m 4558(may)s 5021(also)s
-5456(hold)s 5938(an)s 3(y)k 6332(one)s 6732(of)s
-7000(the)s 7346(\207v)s 3(e)k 7755(special)s 8470(v)s 6(alues)k
-220 fnt35 0 12252(lout)m 240 fnt82 349 12255(,)m 220 fnt35
-461 12252(compress)m 240 fnt82 1406 12255(,)m 220 fnt35 1518 12252(separ)m 2(ate)k
-240 fnt82 2362 12255(,)m 220 fnt35 2474 12252(troff)m 240 fnt82
-2849 12255(,)m 2961(and)s 220 fnt35 3371 12252(te)m 6(x)k
-240 fnt82 3656 12255(,)m 3768(which)s 4415(control)s 5152(the)s
-5505(w)s 2(ay)k 5962(in)s 6210(which)s 6857(Lout)s
-7374(treats)s 7946(white)s 8539(space)s 0 11967(separating)m 1047(tw)s 2(o)k
-1470(objects.)s 2324(The)s 2764(names)s 220 fnt35 3439 11964(troff)m
-240 fnt82 3887 11967(and)m 220 fnt35 4304 11964(te)m 6(x)k
-240 fnt82 4661 11967(indicate)m 5486(that)s 5917(the)s 6278(beha)s 4(viour)k
-7303(of)s 7587(these)s 8147(options)s 8916(is)s 0 11679(inspired)m
-828(by)s 1122(these)s 1669(other)s 2220(document)s 3224(formatting)s
-4285(systems.)s 480 11305(The)m 897(def)s 2(ault)k 1607(setting,)s
-220 fnt35 2339 11302(lout)m 240 fnt82 2688 11305(,)m 2784(produces)s
-3687(as)s 3926(man)s 3(y)k 4498(spaces)s 5161(in)s
-5393(the)s 5729(output)s 6390(as)s 6629(there)s 7150(are)s
-7486(in)s 7717(the)s 8054(input.)s 8698(The)s 220 fnt35
-0 11014(compress)m 240 fnt82 1017 11017(setting)m 1719(causes)s 2407(all)s
-2712(sequences)s 3746(of)s 4029(tw)s 2(o)k 4452(or)s
-4723(more)s 5283(white)s 5882(space)s 6482(characters)s 7512(to)s
-7764(be)s 8058(treated)s 8778(the)s 0 10729(same)m 556(as)s
-815(one)s 1227(white)s 1823(space)s 2419(character)s 13(.)k
-3454(The)s 220 fnt35 3891 10726(separ)m 2(ate)k 240 fnt82
-4804 10729(setting)m 5504(is)s 5723(lik)s 2(e)k 220 fnt35
-6144 10726(compress)m 240 fnt82 7159 10729(b)m 4(ut)k 7530(also)s
-7977(causes)s 8662(zero)s 0 10441(white)m 587(spaces)s 1263(between)s
-2118(tw)s 2(o)k 2529(objects)s 3258(\(b)s 4(ut)k
-3700(not)s 4067(within)s 4736(one)s 5138(w)s 2(ord\))k
-5757(to)s 5997(be)s 6280(treated)s 6988(the)s 7337(same)s
-7885(as)s 8136(one)s 8539(white)s 0 10153(space)m 587(character)s 13(.)k
-480 9779(The)m 220 fnt35 902 9776(troff)m 240 fnt82 1330 9779(setting)m
-2013(is)s 2216(the)s 2557(same)s 3097(as)s 220 fnt35
-3340 9776(lout)m 240 fnt82 3742 9779(e)m 3(xcept)k 4416(that)s
-4828(where)s 6(v)k 3(er)k 5761(a)s 5920(sentence)s
-6792(ends)s 7275(at)s 7500(the)s 7841(end)s 8238(of)s
-8502(a)s 8661(line,)s 0 9491(one)m 415(e)s 3(xtra)k
-962(space)s 1562(is)s 1785(added.)s 2535(F)s 3(ormally)k 15(,)k
-3513(when)s 4102(tw)s 2(o)k 4525(objects)s 5266(are)s
-5627(separated)s 6600(by)s 6907(white)s 7507(space)s 8108(characters)s
-0 9203(which)m 660(include)s 1439(at)s 1689(least)s 2205(one)s
-2625(ne)s 6(wline)k 3451(character)s 9(,)k 4442(and)s
-4864(the)s 5231(\207rst)s 5680(object)s 6343(is)s 6572(a)s
-6756(w)s 2(ord)k 7323(ending)s 8046(in)s 8308(an)s 3(y)k
-8724(one)s 0 8915(of)m 288(a)s 471(certain)s 1194(set)s
-1536(of)s 1824(sequences)s 2862(of)s 3150(characters,)s 4241(the)s
-4606(e)s 3(xtra)k 5157(space)s 5761(is)s 5988(added.)s
-6741(The)s 7186(set)s 7528(of)s 7816(sequences)s 8855(of)s
-0 8627(characters)m 1025(depends)s 1868(on)s 2173(the)s 2528(current)s
-3272(language)s 4199(and)s 4610(is)s 4828(de\207ned)s 5598(in)s
-5849(the)s 220 fnt35 6204 8624(langdef)m 240 fnt82 6987 8627(for)m
-7333(that)s 7758(language)s 8686(\(see)s 0 8339(Section)m 774(3.8\).)s
-480 7965(The)m 220 fnt35 930 7962(te)m 6(x)k 240 fnt82
-1297 7965(option)m 1989(is)s 2221(the)s 2592(most)s 3139(complicated.)s
-4494(First,)s 5060(the)s 220 fnt35 5430 7962(compress)m 240 fnt82
-6458 7965(option)m 7149(is)s 7382(applied.)s 8272(Then,)s 8894(at)s
-0 7677(e)m 6(v)k 3(ery)k 576(sentence)s 1455(ending,)s
-2213(whether)s 3043(or)s 3302(not)s 3667(at)s 3899(the)s
-4246(end)s 4650(of)s 4921(a)s 5086(line,)s 5551(one)s
-5952(e)s 3(xtra)k 6486(space)s 7073(is)s 7282(added.)s
-8018(A)s 8247(sentence)s 0 7389(ending)m 709(is)s 923(de\207ned)s
-1690(as)s 1944(for)s 220 fnt35 2286 7386(troff)m 240 fnt82
-2726 7389(e)m 3(xcept)k 3411(that,)s 3880(in)s 4127(addition)s
-4972(to)s 5215(the)s 5568(preceding)s 6568(w)s 2(ord)k
-7120(ha)s 4(ving)k 7825(to)s 8068(end)s 8476(in)s
-8724(one)s 0 7101(of)m 268(a)s 431(certain)s 1134(set)s
-1456(of)s 1724(sequences)s 2742(of)s 3010(characters,)s 4081(the)s
-4426(character)s 5357(preceding)s 6350(that)s 6765(sequence)s 7695(must)s
-8217(e)s 3(xist)k 8722(and)s 0 6813(must)m 525(be)s
-807(a)s 973(lo)s 6(wer)k 4(-case)k 2053(letter)s 13(.)k
-2693(A)s 2924(character)s 3858(is)s 4068(a)s 4234(lo)s 6(wer)k 4(-case)k
-5314(letter)s 5864(if,)s 6116(in)s 6359(the)s 6707(Lout)s
-7219(Character)s 8208(Mapping)s 0 6525(\207le)m 393(\(Section)s 1278(3.3\))s
-1738(associated)s 2810(with)s 3325(the)s 3705(current)s 4473(font,)s
-4997(an)s 5313(upper)s 4(-case)k 6432(equi)s 6(v)k 6(alent)k
-7508(of)s 7811(the)s 8192(character)s 0 6237(is)m 210(de\207ned.)s
-240 fnt84 0 5494(3.6.)m 471(@YUnit)s 1378(and)s 1819(@ZUnit)s
-240 fnt82 480 5062(The)m 220 fnt35 917 5059(@YUnit)m 240 fnt82
-1741 5062(symbol)m 2510(changes)s 3342(the)s 3699(v)s 6(alue)k
-4277(of)s 4557(the)s 220 fnt35 4915 5059(y)m 240 fnt82
-5092 5062(unit)m 5534(of)s 5814(measurement)s 7158(\(Section)s 8020(3.2\))s
-8458(within)s 0 4774(its)m 276(right)s 787(parameter)s 1801(to)s
-2040(the)s 2388(v)s 6(alue)k 2956(gi)s 6(v)k 3(en)k
-3536(by)s 3830(the)s 4178(left)s 4555(parameter:)s 220 fnt35
-480 4273(1c @YUnit { ...)m 13( })k 240 fnt82 0 3779(ensures)m 760(that)s
-1170(the)s 1510(v)s 6(alue)k 2070(of)s 220 fnt35
-2333 3776(1y)m 240 fnt82 2615 3779(within)m 3275(the)s 3615(right)s
-4118(parameter)s 5124(will)s 5542(be)s 220 fnt35 5816 3776(1c)m
-240 fnt82 6043 3779(.)m 6199(The)s 220 fnt35 6619 3776(@ZUnit)m
-240 fnt82 7413 3779(symbol)m 8165(is)s 8366(similar)s 9(,)k
-0 3491(setting)m 688(the)s 1034(v)s 6(alue)k 1600(of)s
-1869(the)s 220 fnt35 2215 3488(z)m 240 fnt82 2376 3491(unit)m
-2806(in)s 3047(its)s 3321(right)s 3830(parameter)s 13(.)k
-4933(Both)s 5453(units)s 5967(ha)s 4(v)k 3(e)k
-6466(def)s 2(ault)k 7185(v)s 6(alue)k 7751(zero.)s
-8324(The)s 8749(left)s 0 3203(parameter)m 1011(may)s 1473(not)s
-1836(include)s 2592(a)s 2755(g)s 1(ap)k 3149(mode,)s
-3784(nor)s 4160(may)s 4622(it)s 4811(use)s 5182(the)s
-220 fnt35 5526 3200(w)m 240 fnt82 5682 3203(,)m 220 fnt35
-5786 3200(b)m 240 fnt82 5900 3203(,)m 220 fnt35 6003 3200(r)m
-240 fnt82 6076 3203(,)m 6180(or)s 6435(of)s 6702(course)s
-220 fnt35 7379 3200(d)m 240 fnt82 7545 3203(units,)m 8114(b)s 4(ut)k
-8472(it)s 8660(may)s 0 2915(be)m 3(gin)k 577(with)s
-220 fnt35 1050 2912(+)m 240 fnt82 1220 2915(or)m 220 fnt35
-1470 2912(-)m 240 fnt82 1584 2915(to)m 1814(indicate)s 2616(that)s
-3025(v)s 6(alue)k 3583(is)s 3784(to)s 4014(be)s
-4286(added)s 4907(to)s 5136(or)s 5386(subtracted)s 6416(from)s
-6931(the)s 7269(current)s 7996(v)s 6(alue.)k 8662(An)s 3(y)k
-0 2627(ne)m 3(g)k 1(ati)k 6(v)k 3(e)k
-853(result)s 1443(of)s 1714(using)s 220 fnt35 2286 2624(-)m
-240 fnt82 2410 2627(will)m 2836(be)s 3118(silently)s 3875(replaced)s
-4742(by)s 5036(zero.)s 480 2253(These)m 1123(units)s 1655(are)s
-2018(not)s 2400(used)s 2913(internally)s 3898(by)s 4208(Lout.)s
-4840(The)s 3(y)k 5399(are)s 5762(supplied)s 6647(as)s
-6913(part)s 7360(of)s 7647(the)s 8011(style)s 8534(infor)s
-8998(-)s 0 1965(mation)m 731(for)s 1080(the)s 1439(con)s 9(v)k 3(enience)k
-2690(of)s 2972(application)s 4102(packages.)s 5154(F)s 3(or)k
-5554(e)s 3(xample,)k 6479(the)s 6838(Eq)s 7173(equation)s
-8065(formatting)s 0 1677(package)m 840(uses)s 1303(them)s 1841(to)s
-2080(\207ne-)s 2507(tune)s 2975(the)s 3323(appearance)s 4454(of)s
-4725(equations.)s 240 fnt84 0 884(3.7.)m 471(@SetColour)s 1788(and)s
-2229(@SetColor)s 240 fnt82 480 452(The)m 220 fnt35 927 449(@SetColour)m
-240 fnt82 2204 452(and)m 220 fnt35 2628 449(@SetColor)m 240 fnt82
-3783 452(symbols,)m 4708(which)s 5370(ha)s 4(v)k 3(e)k
-5891(identical)s 6788(ef)s 6(fect,)k 7451(return)s 8098(their)s
-8615(right)s 0 164(parameter)m 1047(in)s 1323(the)s 1704(colour)s
-2408(speci\207ed)s 3349(by)s 3676(their)s 4206(left)s 4617(parameter)s 13(.)k
-5755(The)s 6216(form)s 6773(of)s 7077(the)s 7458(left)s
-7868(parameter)s 8916(is)s
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 45 51
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Italic
-%%+ font Times-Bold
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-1 LoutMargSet
-grestore
-240 fnt83 0 13843(3.7.)m 454(@SetColour)s 1710(and)s 2136(@SetColor)s
-240 fnt84 8833 13840(45)m 240 fnt82 0 13250(implementation-dependent;)m 2693(in)s
-2954(Basser)s 3670(Lout)s 4200(it)s 4410(must)s 4954(be)s
-5254(an)s 5555(object)s 6218(whose)s 6904(v)s 6(alue)k
-7490(is)s 7719(a)s 7903(sequence)s 8855(of)s 0 12962(w)m 2(ords)k
-634(comprising)s 1763(a)s 1929(PostScript)s 2971(command)s 3973(for)s
-4311(setting)s 5001(colour)s 13(.)k 5763(F)s 3(or)k
-6152(e)s 3(xample,)k 220 fnt35 480 12461({ 1.0 0.0 0.0 setrgbcolor } @SetColour { hello)m 8(, w)k 2(or)k -3(ld })k
-240 fnt82 0 11962(produces)m 915(the)s 1263(red)s 1626(result)s
-1.0 0.0 0.0 setrgbcolor 480 11459(hello,)m 1065(w)s 2(orld)k 0.0 0.0 0.0 setrgbcolor
-0 10975(Of)m 322(course,)s 1050(a)s 1213(colour)s 1881(output)s
-2550(de)s 6(vice)k 3222(is)s 3429(needed)s 4162(to)s
-4398(see)s 4756(the)s 5101(ef)s 6(fect;)k 5747(on)s
-6041(a)s 6204(monochrome)s 7520(de)s 6(vice)k 8191(the)s
-8536(result)s 0 10687(will)m 422(be)s 700(some)s 1257(shade)s
-1854(of)s 2121(gre)s 3(y)k 15(.)k 2688(The)s
-220 fnt35 3112 10684(@SetColour)m 240 fnt82 4365 10687(command)m 5363(will)s
-5785(not)s 6147(accept)s 6813(an)s 7092(empty)s 7740(left)s
-8112(parameter)s 0 10399(\(it)m 273(refuses)s 1002(to)s 1243(belie)s 6(v)k 3(e)k
-1983(that)s 2403(this)s 2801(could)s 3393(cause)s 3983(a)s
-4151(change)s 4887(of)s 5161(colour\),)s 5960(b)s 4(ut)k
-6324(otherwise)s 7311(it)s 7506(trusts)s 8076(the)s 8426(user)s
-8887(to)s 0 10111(supply)m 693(something)s 1743(sensible.)s 480 9737(The)m
-220 fnt35 901 9734(@SetColour)m 240 fnt82 2151 9737(command)m 3145(accepts)s
-3892(the)s 4232(special)s 4943(v)s 6(alue)k 220 fnt35
-5504 9734(nochange)m 240 fnt82 6512 9737(for)m 6843(the)s 7183(left)s
-7553(parameter)s 13(.)k 8650(This)s 0 9449(v)m 6(alue)k
-574(causes)s 1256(the)s 1611(right)s 2129(parameter)s 3150(to)s
-3396(ha)s 4(v)k 3(e)k 3904(the)s 4258(colour)s
-4936(it)s 5135(w)s 2(ould)k 5797(ha)s 4(v)k 3(e)k
-6305(had)s 6716(without)s 7514(the)s 220 fnt35 7869 9446(@SetColour)m
-240 fnt82 0 9161(command.)m 480 8787(There)m 1132(is)s 1382(no)s
-1715(def)s 2(ault)k 2476(colour)s 9(,)k 3225(so)s
-3530(the)s 3918(user)s 4416(must)s 4981(ensure)s 5701(that)s
-6159(the)s 6546(root)s 7031(g)s 1(alle)k 3(y)k
-7705(or)s 8004(each)s 8539(of)s 8850(its)s 0 8499(components)m
-1208(is)s 1418(enclosed)s 2313(in)s 2556(a)s 220 fnt35
-2722 8496(@SetColour)m 240 fnt82 3979 8499(symbol)m 4739(whose)s 5407(left)s
-5784(parameter)s 6798(is)s 7008(not)s 220 fnt35 7374 8496(nochange)m
-240 fnt82 8330 8499(.)m 480 8125(Lout)m 1023(mak)s 2(es)k
-1715(no)s 2039(attempt)s 2847(to)s 3117(understand)s 4257(colour)s 9(,)k
-4998(it)s 5221(simply)s 5958(prints)s 6584(the)s 6964(PostScript)s
-8038(commands)s 0 7837(when)m 601(appropriate.)s 1879(This)s 2381(has)s
-2776(the)s 3150(adv)s 6(antage)k 4196(of)s 4492(permitting)s
-5566(access)s 6253(to)s 6517(an)s 3(y)k 6940(of)s
-7237(PostScript')s 13(s)k 8455(colour)s 0 7549(models)m 768(\(some)s
-1434(require)s 2192(initialization)s 3481(which)s 4149(can)s 4564(be)s
-4872(supplied)s 5767(using)s 220 fnt35 6365 7546(@PrependGr)m 2(aphic)k
-240 fnt82 8178 7549(\),)m 8390(b)s 4(ut)k 8778(the)s
-0 7261(disadv)m 6(antage)k 1299(of)s 1570(of)s 6(fering)k
-2386(no)s 2679(w)s 2(ay)k 3130(to)s 3369(mak)s 2(e)k
-3941(relati)s 6(v)k 3(e)k 4703(changes)s 5525(\(`as)s
-5933(before)s 6599(only)s 7079(redder)s 9(,)k 16(')k
-7836(and)s 8240(so)s 8506(on\).)s 480 6887(F)m 3(or)k
-870(those)s 1432(who)s 1899(wish)s 2409(to)s 2649(obtain)s
-3305(colour)s 3977(without)s 4769(w)s 2(orking)k 5619(v)s 3(ery)k
-6096(hard,)s 6629(the)s 220 fnt35 6978 6884(setrgbcolor)m 240 fnt82
-8124 6887(command)m 0 6599(used)m 496(abo)s 3(v)k 3(e)k
-1117(is)s 1325(a)s 4(v)k 6(ailable)k 2232(in)s
-2474(e)s 6(v)k 3(ery)k 3048(v)s 3(ersion)k
-3805(of)s 4075(PostScript,)s 5162(requires)s 5981(no)s 6273(initialization,)s
-7584(and)s 7987(is)s 8196(simple)s 8887(to)s 0 6311(use.)m
-485(The)s 915(three)s 1450(numbers,)s 2384(which)s 3028(range)s
-3617(from)s 4143(0.0)s 4501(to)s 4742(1.0,)s 5151(determine)s
-6164(the)s 6515(intensity)s 7394(of)s 7667(red,)s 8081(green,)s
-8722(and)s 0 6023(blue)m 468(respecti)s 6(v)k 3(ely)k 15(.)k
-1762(Some)s 2363(useful)s 3002(v)s 6(alues)k 3658(for)s
-3996(the)s 4344(left)s 4721(parameter)s 5735(are)s 220 fnt35
-480 5458(1.0)m 838(0.0)s 1196(0.0)s 1554(setrgbcolor)s 240 fnt83
-2979 5463(r)m 8(ed)k 220 fnt35 480 5139(0.0)m 838(1.0)s
-1196(0.0)s 1554(setrgbcolor)s 240 fnt83 2979 5144(gr)m 8(een)k
-220 fnt35 480 4809(0.0)m 838(0.0)s 1196(1.0)s 1554(setrgbcolor)s
-240 fnt83 2979 4814(blue)m 220 fnt35 480 4479(1.0)m 838(1.0)s
-1196(1.0)s 1554(setrgbcolor)s 240 fnt83 2979 4484(white)m 220 fnt35
-480 4160(0.5)m 837(0.5)s 1194(0.5)s 1551(setrgbcolor)s 240 fnt83
-2979 4165(gr)m 8(e)k 7(y)k 220 fnt35 480 3830(0.0)m
-838(0.0)s 1196(0.0)s 1554(setrgbcolor)s 240 fnt83 2979 3835(blac)m 4(k)k
-240 fnt82 0 3274(Colouring)m 1042(an)s 1344(object)s 2007(white)s
-2613(is)s 2841(useful)s 3499(for)s 3856(producing)s 4899(an)s
-5200(empty)s 5871(space)s 6477(whose)s 7164(size)s 7609(is)s
-7838(that)s 8275(of)s 8565(some)s 0 2986(object.)m 240 fnt84
-0 2193(3.8.)m 471(@Language)s 1762(and)s 2203(@CurrLang)s 240 fnt82
-480 1716(The)m 220 fnt35 905 1713(@Language)m 240 fnt82 2153 1716(symbol)m
-2910(informs)s 3701(Lout)s 4210(that)s 4625(its)s 4898(right)s
-5406(parameter)s 6417(is)s 6624(written)s 7354(in)s 7594(the)s
-7939(language)s 8855(of)s 0 1428(its)m 276(left)s 653(parameter:)s
-220 fnt35 480 927(Danish @Language { ...)m 13( })k 240 fnt82 0 428(Basser)m
-706(Lout)s 1228(V)s 26(ersion)k 2025(3)s 2199(uses)s
-2671(this)s 3077(information)s 4271(in)s 4524(tw)s 2(o)k
-4943(w)s 2(ays:)k 5609(to)s 5857(h)s 1(yphenate)k
-6906(w)s 2(ords)k 7549(appropriately)s 8887(to)s 0 140(that)m
-418(language,)s 1389(and)s 1793(to)s 2032(change)s 2766(the)s
-3114(v)s 6(alue)k 3682(of)s 3953(the)s 220 fnt35
-4301 137(@CurrLang)m 240 fnt82 5486 140(symbol)m 6246(\(see)s 6686(belo)s 6(w\).)k
-7508(Other)s 8112(uses,)s 8630(such)s
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 46 52
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Times-Italic
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-0 LoutMargSet
-grestore
-240 fnt84 0 13840(46)m 240 fnt83 6081 13843(Chapter)m 6931(3.)s
-7205(Pr)s 8(ede\207ned)k 8300(symbols)s 240 fnt82 0 13205(as)m
-250(right-to-left)s 1422(formatting)s 2483(of)s 2754(certain)s 3460(languages,)s
-4524(may)s 4990(be)s 5272(added)s 5902(in)s 6145(the)s
-6493(future.)s 480 12831(The)m 953(left)s 1375(parameter)s 2434(must)s
-3004(either)s 3652(be)s 3979(empty)s 4676(\(which)s 5442(means)s
-6149(to)s 6433(lea)s 4(v)k 3(e)k 7031(the)s
-7424(current)s 8206(language)s 0 12543(unchanged\))m 1167(or)s 1428(else)s
-1857(it)s 2051(must)s 2578(ha)s 4(v)k 3(e)k
-3080(been)s 3591(gi)s 6(v)k 3(en)k 4173(in)s
-4418(a)s 220 fnt35 4586 12540(langdef)m 240 fnt82 5363 12543(language)m
-6285(de\207nition)s 7261(at)s 7495(the)s 7845(be)s 3(ginning)k
-8855(of)s 0 12255(the)m 348(input:)s 220 fnt35 480 11747(langdef Danish Dansk {)m
-240 fnt83 2993 11752(implementation-dependent)m 220 fnt35 5608 11747(})m 240 fnt82
-0 11248(After)m 220 fnt35 571 11245(langdef)m 240 fnt82 1355 11248(comes)m
-2025(a)s 2199(sequence)s 3140(of)s 3419(one)s 3829(or)s
-4096(more)s 4651(simple)s 5352(w)s 2(ords,)k 6050(which)s
-6700(are)s 7055(alternati)s 6(v)k 3(e)k 8117(names)s
-8788(for)s 0 10960(the)m 347(language)s 1265(being)s 1849(de\207ned.)s
-2716(F)s 3(ollo)k 6(wing)k 3743(them)s 4279(comes)s
-4940(an)s 5221(implementation-dependent)s 7843(part)s 8272(between)s 0 10672(braces.)m
-760(In)s 1001(Basser)s 1684(Lout)s 2181(V)s 26(ersion)k
-2955(3)s 3104(this)s 3486(part)s 3902(contains)s 4736(the)s
-5069(name)s 5629(of)s 5885(the)s 6219(Lout)s 6716(h)s 1(yphenation)k
-7941(information)s 0 10384(\207le)m 383(\(minus)s 1121(its)s 1419(.lh)s
-1745(suf\207x\))s 2441(to)s 2702(be)s 3007(used)s 3527(when)s
-4125(h)s 1(yphenating)k 5384(w)s 2(ords)k 6040(in)s
-6306(this)s 6725(language,)s 7718(follo)s 6(wed)k 8643(by)s
-8960(a)s 0 10096(sequence)m 933(of)s 1204(w)s 2(ords)k
-1838(which)s 2480(de\207ne)s 3121(the)s 3469(ends)s 3959(of)s
-4230(sentences.)s 5310(F)s 3(or)k 5699(e)s 3(xample:)k
-220 fnt35 480 9596(langdef English { english .)m 13( :)k 11( ? ! .\) ?\) !\) })k 240 fnt82
-0 9097(de\207nes)m 748(a)s 934(language)s 1874(called)s 2522(English)s
-3329(with)s 3831(h)s 1(yphenation)k 5091(patterns)s 5918(\207le)s
-220 fnt35 6298 9094(english.lh)m 240 fnt82 7289 9097(and)m 7713(se)s 6(v)k 3(en)k
-8326(w)s 2(ays)k 8887(to)s 0 8809(end)m 424(a)s
-610(sentence.)s 1617(The)s 2065(use)s 2460(of)s 2751(these)s
-3318(sentence)s 4217(endings)s 5034(is)s 5264(described)s 6258(in)s
-6521(Section)s 7315(3.5.)s 7799(If)s 8049(there)s 8602(is)s
-8833(no)s 0 8521(h)m 1(yphenation)k 1236(\207le)s 1592(a)s 4(v)k 6(ailable,)k
-2546(this)s 2937(is)s 3143(indicated)s 4072(by)s 4361(writing)s
-220 fnt35 5099 8518(-)m 240 fnt82 5219 8521(for)m 5552(the)s
-5895(\207le)s 6251(name;)s 6877(if)s 7089(there)s 7617(are)s
-7959(no)s 8247(sentence)s 0 8233(ends,)m 546(the)s 3(y)k
-1009(are)s 1356(simply)s 2061(omitted.)s 480 7859(The)m 220 fnt35
-913 7856(@CurrLang)m 240 fnt82 2103 7859(symbol,)m 2920(which)s 3567(has)s
-3942(no)s 4240(parameters,)s 5399(e)s 6(v)k 6(aluates)k
-6332(to)s 6576(the)s 6929(\207rst)s 7365(name)s 7944(gi)s 6(v)k 3(en)k
-8529(in)s 8778(the)s 220 fnt35 0 7568(langdef)m 240 fnt82
-776 7571(of)m 1047(the)s 1395(language)s 2315(in)s 2558(force)s
-3104(at)s 3336(the)s 3684(point)s 4236(where)s 4876(it)s
-5068(is)s 5278(in)s 9(v)k 4(ok)k 2(ed:)k
-220 fnt35 480 7070(Dansk @Language { )m 11(This is @CurrLang.)k 13( })k 240 fnt82
-0 6571(has)m 370(result)s 480 6118(This)m 956(is)s 1166(Danish.)s
-0 5665(It)m 205(is)s 415(typically)s 1305(used)s 1802(with)s
-2284(the)s 220 fnt35 2632 5662(@Case)m 240 fnt82 3419 5665(symbol)m
-4179(lik)s 2(e)k 4591(this:)s 220 fnt35 480 5164(@CurrLang @Case {)m
-480 4876( Danish @Y)m 4(ield tirsdag)k 480 4588( English @Y)m 4(ield )k 11(T)k 26(uesda)k 6(y)k
-480 4300( F)m 9(rench @Y)k 4(ield Mardi)k 480 4012(})m 240 fnt82
-0 3518(This)m 476(e)s 3(xample)k 1339(e)s 6(v)k 6(aluates)k
-2267(to)s 2506(the)s 2854(name)s 3428(of)s 3699(the)s
-4047(third)s 4556(day)s 4956(of)s 5227(the)s 5575(week)s
-6141(in)s 6384(the)s 6732(current)s 7468(language.)s 480 3144(The)m
-908(current)s 1644(language)s 2563(is)s 2773(part)s 3204(of)s
-3474(the)s 3822(style)s 4329(of)s 4599(an)s 4882(object,)s
-5573(lik)s 2(e)k 5984(its)s 6260(font.)s 6809(As)s
-7125(e)s 3(xplained)k 8110(in)s 8352(Section)s 0 2856(2.6,)m
-419(style)s 939(is)s 1162(inherited)s 2081(through)s 2896(the)s
-3257(point)s 3822(of)s 4105(appearance,)s 5300(which)s 5955(for)s
-6305(language)s 7238(can)s 7640(be)s 7935(une)s 3(xpected.)k
-0 2568(F)m 3(or)k 380(e)s 3(xample,)k 1284(an)s
-1557(inde)s 3(x)k 2131(entry)s 2666(which)s 3298(originates)s
-4281(in)s 4514(a)s 4671(French)s 5382(chapter)s 6135(b)s 4(ut)k
-6487(appears)s 7258(in)s 7491(an)s 7764(English)s 8542(inde)s 3(x)k
-0 2280(will)m 426(ha)s 4(v)k 3(e)k 927(English)s
-1715(for)s 2053(its)s 2329(language,)s 3300(so)s 3566(must)s
-4091(be)s 4373(e)s 3(xplicitly)k 5326(set)s 5651(to)s
-5890(French)s 6611(using)s 220 fnt35 7183 2277(@Language)m 240 fnt82
-8374 2280(.)m 240 fnt84 0 1487(3.9.)m 471(@OneCol)s 1533(and)s
-1974(@OneRo)s 2(w)k 240 fnt82 480 1055(The)m 220 fnt35
-913 1052(@OneRo)m 3(w)k 240 fnt82 2049 1055(symbol)m 2814(returns)s
-3533(its)s 3814(right)s 4330(parameter)s 5350(modi\207ed)s 6264(so)s
-6535(that)s 6958(only)s 7443(the)s 7796(principal)s 8706(ro)s 6(w)k
-0 767(mark)m 540(protrudes.)s 1595(This)s 2059(is)s 2257(normally)s
-3162(the)s 3498(\207rst)s 3917(ro)s 6(w)k 4324(mark,)s
-4910(b)s 4(ut)k 5260(another)s 6025(one)s 6415(may)s
-6869(be)s 7139(chosen)s 7849(by)s 8130(preceding)s 0 479(it)m
-192(with)s 220 fnt35 674 476(^/)m 240 fnt82 901 479(or)m
-220 fnt35 1160 476(^//)m 240 fnt82 1388 479(.)m 1552(F)s 3(or)k
-1941(e)s 3(xample,)k
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 47 53
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Italic
-%%+ font Times-Bold
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-1 LoutMargSet
-grestore
-240 fnt83 0 13843(3.9.)m 454(@OneCol)s 1479(and)s 1905(@OneRow)s
-240 fnt84 8831 13840(47)m 220 fnt35 480 13252(@OneRo)m 3(w { |0.5r)k -8(t Slope @F)k 6(ont x + 2 ^//1p @HLine //1p |0.5r)k -8(t 5 })k
-240 fnt82 0 12756(has)m 370(result)s 468 371 0 188 240 288 60 480 11777 LoutGr2
-grestore save gsave 200 dict begin lfigdict begin
-grestore
-468 371 0 188 240 288 60 0 0 LoutGr2
-/lfiglightgrey [ lfigbox ] gsave lfigpaintpath grestore
-0.015 cm setlinewidth lfiground setlinecap
-0.15 cm /lfigsolid [ lfigbox ] lfigdopath
-pop pop
-grestore
-468 371 0 188 240 288 60 0 0 LoutGr2
-
-0.015 cm setlinewidth lfiground setlinecap
-0.15 cm /lfigdashed [ -0.3 cm ymark
-xsize ymark 0.3 cm 0 lfigpadd []
-xmark -0.3 cm
-xmark ysize 0 0.3 cm lfigpadd ] lfigdopath
-pop pop
-grestore
-240 fnt83 0 211(x)m
-240 fnt82 166 209(+)m 354(2)s 468 0 0 0 240 288 60 0 188 LoutGr2
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-181 3(5)m
-grestore
-
-grestore
-end end restore
-grestore
-0 11061(with)m
-482(one)s 884(ro)s 6(w)k 1304(mark)s 1856(protruding)s
-2919(from)s 3443(the)s 3791(bar)s 4156(as)s 4406(sho)s 6(wn.)k
-5190(Compare)s 6123(this)s 6519(with)s 220 fnt35 480 10560(@OneRo)m 3(w { |0.5r)k -8(t Slope @F)k 6(ont x + 2 //1p @HLine //1p |0.5r)k -8(t 5 })k
-240 fnt82 0 10064(where)m 640(the)s 988(mark)s 1540(protrudes)s
-2494(from)s 3018(the)s 3366(numerator:)s 468 371 0 263 240 288 60 480 9085 LoutGr2
-grestore save gsave 200 dict begin lfigdict begin
-grestore
-468 371 0 263 240 288 60 0 0 LoutGr2
-/lfiglightgrey [ lfigbox ] gsave lfigpaintpath grestore
-0.015 cm setlinewidth lfiground setlinecap
-0.15 cm /lfigsolid [ lfigbox ] lfigdopath
-pop pop
-grestore
-468 371 0 263 240 288 60 0 0 LoutGr2
-
-0.015 cm setlinewidth lfiground setlinecap
-0.15 cm /lfigdashed [ -0.3 cm ymark
-xsize ymark 0.3 cm 0 lfigpadd []
-xmark -0.3 cm
-xmark ysize 0 0.3 cm lfigpadd ] lfigdopath
-pop pop
-grestore
-240 fnt83 0 211(x)m
-240 fnt82 166 209(+)m 354(2)s 468 0 0 0 240 288 60 0 188 LoutGr2
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-181 3(5)m
-grestore
-
-grestore
-end end restore
-grestore
-220 fnt35
-0 8631(@OneCol)m 240 fnt82 1016 8634(has)m 1391(the)s 1744(same)s
-2296(ef)s 6(fect)k 2897(on)s 3198(columns)s 4065(as)s
-220 fnt35 4320 8631(@OneRo)m 3(w)k 240 fnt82 5456 8634(does)m
-5951(on)s 6252(ro)s 6(ws,)k 6823(with)s 7310(the)s
-7663(symbols)s 220 fnt35 8517 8631(^|)m 240 fnt82 8722 8634(and)m
-220 fnt35 0 8343(^||)m 240 fnt82 257 8346(\(or)m 220 fnt35
-595 8343(^&)m 240 fnt82 840 8346(\))m 968(determining)s 2176(which)s
-2818(mark)s 3370(is)s 3580(chosen.)s 240 fnt84 0 7553(3.10.)m
-591(@W)s 4(ide)k 1411(and)s 1852(@High)s 240 fnt82
-480 7076(The)m 220 fnt35 910 7073(@Wide)m 240 fnt82 1687 7076(symbol)m
-2450(returns)s 3167(its)s 3446(right)s 3960(parameter)s 4977(modi\207ed)s
-5888(to)s 6130(ha)s 4(v)k 3(e)k 6634(the)s
-6985(width)s 7590(gi)s 6(v)k 3(en)k 8173(by)s
-8470(its)s 8749(left)s 0 6788(parameter)m 9(,)k 1058(which)s
-1707(must)s 2238(be)s 2527(a)s 2699(length)s 3361(\(Section)s
-4220(3.2\))s 4655(whose)s 5329(unit)s 5768(of)s 6045(measurement)s
-7386(is)s 220 fnt35 7602 6785(c)m 240 fnt82 7707 6788(,)m
-220 fnt35 7821 6785(i)m 240 fnt82 7855 6788(,)m 220 fnt35
-7968 6785(p)m 240 fnt82 8082 6788(,)m 220 fnt35 8196 6785(m)m
-240 fnt82 8365 6788(,)m 220 fnt35 8478 6785(f)m 240 fnt82
-8536 6788(,)m 220 fnt35 8650 6785(s)m 240 fnt82 8753 6788(,)m
-8867(or)s 220 fnt35 0 6497(v)m 240 fnt82 109 6500(.)m
-278(If)s 513(the)s 867(right)s 1383(parameter)s 2403(is)s
-2618(not)s 2990(as)s 3245(wide)s 3772(as)s 4027(required,)s
-4936(white)s 5528(space)s 6121(is)s 6336(added)s 6972(at)s
-7209(the)s 7563(right;)s 8131(if)s 8354(it)s 8551(is)s
-8767(too)s 0 6212(wide,)m 585(its)s 875(paragraphs)s 1988(are)s
-2349(brok)s 2(en)k 3083(\(Section)s 3949(3.4\))s 4391(so)s
-4670(that)s 5102(it)s 5308(\207ts.)s 5777(A)s 220 fnt35
-6021 6209(@OneCol)m 240 fnt82 7046 6212(operation)m 8020(is)s 8244(included)s
-0 5924(in)m 257(the)s 620(ef)s 6(fect)k 1231(of)s
-220 fnt35 1517 5921(@Wide)m 240 fnt82 2231 5924(,)m 2353(since)s
-2915(it)s 3122(does)s 3627(not)s 4008(mak)s 2(e)k
-4595(sense)s 5184(for)s 5537(an)s 5835(object)s 6494(of)s
-6780(\207x)s 3(ed)k 7329(width)s 7946(to)s 8200(ha)s 4(v)k 3(e)k
-8716(tw)s 2(o)k 0 5636(column)m 775(marks.)s 552 5262(The)m
-220 fnt35 993 5259(@High)m 240 fnt82 1725 5262(symbol)m 2498(similarly)s
-3413(ensures)s 4194(that)s 4625(its)s 4914(result)s 5517(is)s
-5740(of)s 6024(a)s 6203(gi)s 6(v)k 3(en)k
-6796(height,)s 7514(by)s 7821(adding)s 8539(white)s 0 4974(space)m
-573(at)s 790(the)s 1123(bottom.)s 1950(In)s 2191(this)s
-2572(case)s 3024(it)s 3201(is)s 3396(an)s 3664(error)s
-4172(for)s 4495(the)s 4828(right)s 5324(parameter)s 6323(to)s
-6547(be)s 6814(too)s 7158(lar)s 4(ge.)k 7780(A)s
-220 fnt35 7995 4971(@OneRo)m 3(w)k 240 fnt82 0 4686(operation)m
-960(is)s 1170(included.)s 240 fnt84 0 3893(3.11.)m 591(@HShift)s
-1550(and)s 1991(@VShift)s 240 fnt82 480 3461(The)m 220 fnt35
-917 3458(@HShift)m 240 fnt82 1802 3461(symbol)m 2572(returns)s 3296(its)s
-3582(right)s 4103(parameter)s 5127(with)s 5619(principal)s 6533(mark)s
-7095(shifted)s 7813(as)s 8073(prescribed)s 0 3173(by)m 294(its)s
-570(left)s 947(parameter:)s 220 fnt35 1124 2665(+)m 240 fnt83
-1244 2670(length)m 220 fnt35 1897 2665(@HShift)m 240 fnt83 2772 2670(object)m
-240 fnt82 3600 2668(Principal)m 4517(mark)s 5069(shifted)s 5777(to)s
-6016(the)s 6364(right)s 6875(by)s 240 fnt83 7169 2670(length)m
-240 fnt82 7762 2668(;)m 220 fnt35 1180 2160(-)m 240 fnt83
-1244 2165(length)m 220 fnt35 1897 2160(@HShift)m 240 fnt83 2772 2165(object)m
-240 fnt82 3600 2163(Principal)m 4517(mark)s 5069(shifted)s 5777(to)s
-6016(the)s 6364(left)s 6741(by)s 240 fnt83 7035 2165(length)m
-240 fnt82 7628 2163(;)m 240 fnt83 1244 1660(length)m 220 fnt35
-1897 1655(@HShift)m 240 fnt83 2772 1660(object)m 240 fnt82 3600 1658(Principal)m
-4512(mark)s 5058(shifted)s 5760(so)s 6020(as)s 6264(to)s
-6497(lie)s 240 fnt83 6786 1660(length)m 240 fnt82 7433 1658(to)m
-7666(the)s 8008(right)s 8513(of)s 8778(the)s 3600 1370(left)m
-3977(edge)s 4485(of)s 240 fnt83 4756 1372(object)m 240 fnt82
-5344 1370(;)m 0 867(In)m 256(each)s 751(chase)s 220 fnt35
-1338 864(@HShift)m 240 fnt82 2213 867(includes)m 3061(a)s 220 fnt35
-3227 864(@OneCol)m 240 fnt82 4239 867(ef)m 6(fect.)k
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 48 54
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Times-Italic
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-0 LoutMargSet
-grestore
-240 fnt84 0 13840(48)m 240 fnt83 6081 13843(Chapter)m 6931(3.)s
-7205(Pr)s 8(ede\207ned)k 8300(symbols)s 240 fnt82 480 13203(The)m
-916(units)s 1440(of)s 1720(measurement)s 3062(of)s 240 fnt83
-3342 13205(length)m 240 fnt82 4003 13203(may)m 4478(be)s 220 fnt35
-4768 13200(c)m 240 fnt82 4873 13203(,)m 220 fnt35 4989 13200(i)m
-240 fnt82 5023 13203(,)m 220 fnt35 5138 13200(p)m 240 fnt82
-5252 13203(,)m 220 fnt35 5368 13200(m)m 240 fnt82 5537 13203(,)m
-220 fnt35 5652 13200(f)m 240 fnt82 5710 13203(,)m 220 fnt35
-5825 13200(s)m 240 fnt82 5928 13203(,)m 220 fnt35 6044 13200(v)m
-240 fnt82 6153 13203(,)m 6268(or)s 220 fnt35 6536 13200(w)m
-240 fnt82 6692 13203(.)m 6864(In)s 7129(the)s 7485(latter)s
-8043(case,)s 220 fnt35 8569 13200(1w)m 240 fnt82 8916 13203(is)m
-0 12915(tak)m 2(en)k 579(to)s 825(be)s 1113(the)s
-1468(width)s 2076(of)s 2354(the)s 2708(right)s 3226(parameter)s 9(,)k
-4285(so)s 4557(that,)s 5029(for)s 5373(e)s 3(xample,)k
-220 fnt35 6294 12912(0.5w @HShift)m 240 fnt82 7699 12915(will)m 8132(centre)s
-8778(the)s 0 12627(principal)m 904(column)s 1679(mark)s 2231(within)s
-2899(the)s 3247(right)s 3758(parameter)s 13(.)k 548 12253(The)m
-220 fnt35 984 12250(@VShift)m 240 fnt82 1855 12253(symbol)m 2624(is)s
-2842(similar)s 3572(e)s 3(xcept)k 4261(that)s 4688(it)s
-4888(applies)s 5624(v)s 3(ertically)k 6584(to)s 6832(the)s
-7188(principal)s 8100(ro)s 6(w)k 8529(mark:)s 220 fnt35
-0 11962(+)m 240 fnt83 120 11967(length)m 240 fnt82 771 11965(shifts)m
-1337(it)s 1527(do)s 6(wn,)k 220 fnt35 2159 11962(-)m
-240 fnt83 2223 11967(length)m 240 fnt82 2874 11965(shifts)m 3440(it)s
-3629(up,)s 3974(and)s 240 fnt83 4376 11967(length)m 240 fnt82
-5027 11965(shifts)m 5593(it)s 5783(to)s 240 fnt83 6019 11967(length)m
-240 fnt82 6670 11965(belo)m 6(w)k 7301(the)s 7647(top)s
-8004(edge)s 8510(of)s 8778(the)s 0 11677(object.)m 748(W)s 9(ith)k
-220 fnt35 1274 11674(@VShift)m 240 fnt82 2077 11677(,)m 220 fnt35
-2184 11674(1w)m 240 fnt82 2522 11677(is)m 2732(tak)s 2(en)k
-3305(to)s 3544(be)s 3826(the)s 4174(height)s 4832(of)s
-5103(the)s 5451(right)s 5962(parameter)s 13(.)k 240 fnt84
-0 10884(3.12.)m 591(@HExpand)s 1854(and)s 2295(@VExpand)s 240 fnt82
-558 10407(The)m 220 fnt35 1004 10404(@HExpand)m 240 fnt82 2195 10407(symbol)m
-2973(causes)s 3666(its)s 3961(right)s 4490(parameter)s 5522(to)s
-5779(be)s 6079(as)s 6348(wide)s 6887(as)s 7155(it)s
-7365(possibly)s 8235(could)s 8844(be)s 0 10119(without)m 784(violating)s
-1679(a)s 220 fnt35 1837 10116(@Wide)m 240 fnt82 2603 10119(symbol)m
-3355(or)s 3606(intruding)s 4528(into)s 4945(the)s 5285(space)s
-5864(occupied)s 6778(by)s 7064(neighbouring)s 8386(g)s 1(aps)k
-8867(or)s 0 9831(objects.)m 841(The)s 220 fnt35 1269 9828(@VExpand)m
-240 fnt82 2430 9831(symbol)m 3190(is)s 3400(similar)s 9(,)k
-4160(b)s 4(ut)k 4522(it)s 4714(af)s 6(fects)k
-5394(height.)s 6156(F)s 3(or)k 6545(e)s 3(xample,)k
-7459(in)s 7702(the)s 8050(object)s 220 fnt35 480 9330(8i @Wide 11i @High {)m
-480 9042( //1i ||1i @HExpand @VExpand x ||1i)m 480 8754( //1i)m 480 8466(})m 240 fnt82 0 7972(object)m
-220 fnt35 655 7969(x)m 240 fnt82 834 7972(could)m 1435(ha)s 4(v)k 3(e)k
-1947(an)s 3(y)k 2356(size)s 2794(up)s 3098(to)s
-3348(six)s 3694(inches)s 4367(wide)s 4899(by)s 5204(nine)s
-5683(inches)s 6357(high,)s 6901(so)s 7178(the)s 220 fnt35
-7537 7969(@HExpand)m 240 fnt82 8722 7972(and)m 220 fnt35 0 7681(@VExpand)m
-240 fnt82 1166 7684(symbols)m 2021(cause)s 2614(it)s 2812(to)s
-3057(ha)s 4(v)k 3(e)k 3564(e)s 3(xactly)k
-4311(this)s 4713(size.)s 5254(This)s 5736(is)s 5952(important,)s
-6994(for)s 7338(e)s 3(xample,)k 8258(if)s 220 fnt35
-8481 7681(x)m 240 fnt82 8655 7684(con)m 8998(-)s 0 7396(tains)m
-220 fnt35 502 7393(|1r)m -8(t)k 240 fnt82 879 7396(or)m
-220 fnt35 1138 7393(/1r)m -8(t)k 240 fnt82 1459 7396(;)m
-1571(without)s 2362(the)s 2710(e)s 3(xpansion)k 3735(these)s
-4282(might)s 4900(not)s 5266(mo)s 3(v)k 3(e)k
-5848(as)s 6098(f)s 2(ar)k 6420(across)s 7068(or)s
-7327(do)s 6(wn)k 7911(as)s 8161(e)s 3(xpected.)k
-480 7022(As)m 809(Section)s 1595(2.6)s 1961(e)s 3(xplains)k
-2818(in)s 3074(detail,)s 3723(most)s 4260(objects)s 5001(are)s
-5360(already)s 6130(as)s 6392(lar)s 4(ge)k 6933(as)s
-7196(the)s 3(y)k 7671(possibly)s 8536(could)s 0 6734(be.)m
-379(Consequently)s 1738(these)s 2273(symbols)s 3110(are)s 3446(needed)s
-4170(only)s 4638(rarely)s 15(.)k 220 fnt35 5331 6731(@HExpand)m
-240 fnt82 6493 6734(includes)m 7329(a)s 220 fnt35 7483 6731(@OneCol)m
-240 fnt82 8483 6734(ef)m 6(fect,)k 0 6446(and)m 220 fnt35
-404 6443(@VExpand)m 240 fnt82 1565 6446(includes)m 2413(a)s 220 fnt35
-2579 6443(@OneRo)m 3(w)k 240 fnt82 3710 6446(ef)m 6(fect.)k
-240 fnt84 0 5657(3.13.)m 591(@HContract)s 1976(and)s 2417(@VContract)s
-240 fnt82 542 5225(The)m 220 fnt35 972 5222(@HContr)m 2(act)k
-240 fnt82 2239 5225(symbol)m 3001(reduces)s 3784(the)s 4135(size)s
-4564(of)s 4837(its)s 5116(right)s 5629(parameter)s 6645(to)s
-6887(a)s 7055(reasonable)s 8136(minimum)s 0 4937(\(after)m 575(paragraph)s
-1588(breaking\).)s 2668(F)s 3(or)k 3057(e)s 3(xample,)k
-220 fnt35 480 4436(5i @Wide @HContr)m 2(act { A |1r)k -8(t B })k 240 fnt82
-0 3942(has)m 370(result)s 480 3491(A)m 650(B)s 0 3040(in)m
-233(which)s 864(the)s 1201(B)s 1393(is)s 1592(much)s
-2170(closer)s 2789(to)s 3017(the)s 3354(A)s 3574(than)s
-4032(it)s 4213(w)s 2(ould)k 4857(otherwise)s 5831(ha)s 4(v)k 3(e)k
-6321(been.)s 220 fnt35 6926 3037(@VContr)m 2(act)k 240 fnt82
-8167 3040(is)m 8366(similar)s 9(,)k 0 2752(b)m 4(ut)k
-362(in)s 605(a)s 771(v)s 3(ertical)k 1538(direction.)s
-2551(See)s 2952(Section)s 3726(2.6)s 4079(for)s 4417(a)s
-4583(more)s 5130(e)s 3(xtensi)k 6(v)k 3(e)k
-6077(discussion.)s 240 fnt84 0 2008(3.14.)m 591(@HLimited)s 1864(and)s
-2305(@VLimited)s 240 fnt82 579 1576(The)m 220 fnt35 1047 1573(@HLimited)m
-240 fnt82 2221 1576(symbol)m 3021(limits)s 3654(the)s 4042(width)s
-4684(a)s 4(v)k 6(ailable)k 5631(to)s 5910(recursi)s 6(v)k 3(e)k
-6871(and)s 7315(recepti)s 6(v)k 3(e)k 8277(symbols)s
-0 1288(within)m 692(its)s 993(right)s 1529(parameter)s 2567(to)s
-2831(whate)s 6(v)k 3(er)k 3783(is)s 4018(a)s 4(v)k 6(ailable)k
-4950(without)s 5766(increasing)s 6826(the)s 7198(e)s 3(xisting)k
-8030(size)s 8482(of)s 8778(the)s 220 fnt35 0 997(@HLimited)m
-240 fnt82 1138 1000(object.)m 1890(So)s 2199(this)s 2599(symbol)s
-3362(acts)s 3788(lik)s 2(e)k 220 fnt35 4204 997(@Wide)m
-240 fnt82 4981 1000(with)m 5467(respect)s 6206(to)s 6449(limiting)s
-7261(the)s 7613(space)s 8204(occupied)s 0 712(by)m 315(recursi)s 6(v)k 3(e)k
-1258(and)s 1684(recepti)s 6(v)k 3(e)k 2627(symbols,)s
-3553(e)s 3(xcept)k 4256(that)s 4695(instead)s 5451(of)s
-5744(enforcing)s 6734(a)s 6921(\207x)s 3(ed)k 7477(constant)s
-8355(limit,)s 8934(it)s 0 424(enforces)m 860(whate)s 6(v)k 3(er)k
-1787(size)s 2214(is)s 2424(already)s 3181(in)s 3424(place.)s
-
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 49 55
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Italic
-%%+ font Times-Bold
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-1 LoutMargSet
-grestore
-240 fnt83 0 13843(3.14.)m 574(@HLimited)s 1763(and)s 2189(@VLimited)s
-240 fnt84 8832 13840(49)m 240 fnt82 480 13249(The)m 220 fnt35
-904 13246(@VLimited)m 240 fnt82 2022 13249(symbol)m 2778(is)s 2983(e)s 3(xactly)k
-3719(the)s 4063(same,)s 4656(e)s 3(xcept)k 5332(that)s
-5746(it)s 5933(applies)s 6656(v)s 3(ertically)k 7604(rather)s
-8215(than)s 8679(hor)s 8998(-)s 0 12961(izontally)m 15(.)k
-240 fnt84 0 12168(3.15.)m 591(@HAdjust,)s 1804(@V)s 32(Adjust,)k
-2972(and)s 3413(@P)s 17(Adjust)k 240 fnt82 551 11692(These)m
-1189(symbols)s 2050(spread)s 2743(their)s 3252(right)s 3774(parameter)s
-4800(apart)s 5348(until)s 5852(it)s 6056(occupies)s 6955(all)s
-7260(the)s 7619(space)s 8218(a)s 4(v)k 6(ailable)k
-0 11404(to)m 268(it;)s 220 fnt35 602 11401(@HAdjust)m 240 fnt82
-1678 11404(adjusts)m 220 fnt35 2422 11401(|)m 240 fnt82 2549 11404(sequences,)m
-220 fnt35 3656 11401(@V)m 17(Adjust)k 240 fnt82 4702 11404(adjusts)m
-220 fnt35 5447 11401(/)m 240 fnt82 5601 11404(sequences,)m 6707(and)s
-220 fnt35 7141 11401(@P)m 26(Adjust)k 240 fnt82 8179 11404(adjusts)m
-220 fnt35 8924 11401(&)m 240 fnt82 0 11116(sequences.)m 1134(F)s 3(or)k
-1523(e)s 3(xample,)k 220 fnt35 480 10615(4i @Wide @P)m 26(Adjust { 1 2 3 4 5 6 7 8 })k
-240 fnt82 0 10118(has)m 370(result)s 480 9663(1)m 1274(2)s
-2088(3)s 2892(4)s 3706(5)s 4512(6)s 5325(7)s
-6133(8)s 0 9209(More)m 571(precisely)s 15(,)k 1521(the)s
-1865(widening)s 2806(is)s 3012(ef)s 6(fected)k 3828(by)s
-4119(enlar)s 4(ging)k 5067(the)s 5411(size)s 5835(of)s
-6102(each)s 6593(component)s 7714(e)s 3(xcept)k 8391(the)s
-8735(last)s 0 8921(by)m 284(an)s 556(equal)s 1118(fraction)s
-1907(of)s 2167(the)s 2504(space)s 3080(that)s 3488(w)s 2(ould)k
-4132(otherwise)s 5106(be)s 5377(left)s 5744(o)s 3(v)k 3(er)k
-6212(\211)s 6381(just)s 6775(the)s 7113(opposite)s 7969(of)s
-8229(the)s 8566(usual)s 0 8633(procedure,)m 1063(which)s 1705(assigns)s
-2447(all)s 2740(the)s 3088(lefto)s 3(v)k 3(er)k
-3884(space)s 4471(to)s 4710(the)s 5058(last)s 5449(component)s
-6573(\(Section)s 7426(2.6\).)s 220 fnt35 480 8256(@P)m 26(Adjust)k
-240 fnt82 1497 8259(is)m 1716(used)s 2222(by)s 2525(the)s
-220 fnt35 2883 8256(adjust)m 240 fnt82 3533 8259(and)m 220 fnt35
-3946 8256(outdent)m 240 fnt82 4743 8259(options)m 5508(of)s 5789(the)s
-220 fnt35 6146 8256(@Break)m 240 fnt82 7011 8259(symbol)m 7780(\(Section)s
-8643(3.4\).)s 0 7971(It)m 213(has)s 591(a)s 765(slight)s
-1364(peculiarity:)s 2559(it)s 2759(will)s 3193(not)s 3567(enlar)s 4(ge)k
-4330(components)s 5546(when)s 6130(the)s 6486(immediately)s 7742(follo)s 6(wing)k
-8728(g)s 1(ap)k 0 7683(has)m 398(width)s 1029(0.)s
-1342(This)s 1847(is)s 2086(to)s 2354(pre)s 6(v)k 3(ent)k
-3151(space)s 3767(from)s 4320(appearing)s 5345(\(for)s 5791(e)s 3(xample\))k
-6755(between)s 7638(a)s 7833(w)s 2(ord)k 8410(and)s
-8843(an)s 0 7395(immediately)m 1248(follo)s 6(wing)k 2225(comma.)s
-3093(The)s 3521(other)s 4072(tw)s 2(o)k 4482(symbols)s
-5331(will)s 5757(enlar)s 4(ge)k 6512(such)s 7008(components.)s
-240 fnt84 0 6602(3.16.)m 591(@HScale)s 1587(and)s 2028(@VScale)s
-220 fnt35 538 6167(@HScale)m 240 fnt82 1516 6170(causes)m 2189(its)s
-2462(right)s 2970(parameter)s 3982(to)s 4218(e)s 3(xpand)k
-4962(to)s 5199(\207ll)s 5516(the)s 5861(space)s 6446(a)s 4(v)k 6(ailable,)k
-7402(by)s 7693(geometricallly)s 0 5882(scaling)m 730(it:)s 220 fnt35
-480 5381(4i @Wide @HScale { 1 2 3 4 5 6 7 8 })m 240 fnt82 0 4887(has)m 370(result)s gsave
-480 0 translate
-4.4965 1.0000 scale
-0 4432(1)m
-155(2)s 329(3)s 493(4)s 667(5)s 833(6)s
-1006(7)s 1174(8)s
-grestore
-0 3978(and)m 220 fnt35 480 3527(0.5i @Wide @HScale { 1 2 3 4 5 6 7 8 })m
-240 fnt82 0 3033(has)m 370(result)s gsave
-480 0 translate
-0.5621 1.0000 scale
-0 2578(1)m 155(2)s
-329(3)s 493(4)s 667(5)s 833(6)s 1006(7)s
-1174(8)s
-grestore
-220 fnt35 0 2121(@HScale)m 240 fnt82 980 2124(\207rst)m
-1409(applies)s 220 fnt35 2136 2121(@HContr)m 2(act)k 240 fnt82
-3398 2124(to)m 3635(its)s 3910(parameter)s 9(,)k 4960(then)s
-5427(horizontally)s 6635(scales)s 7254(it)s 7444(to)s 7682(the)s
-8028(actual)s 8651(size.)s 0 1836(The)m 433(principal)s 1342(mark)s
-1899(of)s 2175(the)s 2528(right)s 3044(parameter)s 4063(has)s
-4438(no)s 4736(ef)s 6(fect)k 5337(on)s 5639(the)s
-5992(result;)s 6639(the)s 6992(parameter)s 8011(is)s 8226(scaled)s
-8887(to)s 0 1548(the)m 365(actual)s 1007(size)s 1451(and)s
-1872(positioned)s 2944(to)s 3200(\207ll)s 3537(the)s 3902(space)s
-4506(a)s 4(v)k 6(ailable.)k 5539(\(T)s 19(aking)k
-6347(account)s 7168(of)s 7456(alignment)s 8489(of)s 8778(the)s
-0 1260(principal)m 904(mark)s 1456(only)s 1936(causes)s 2611(trouble)s
-3344(in)s 3587(practice.\))s 220 fnt35 480 883(@VScale)m 240 fnt82
-1460 886(is)m 1681(similar)s 9(,)k 2452(b)s 4(ut)k
-2825(in)s 3080(a)s 3257(v)s 3(ertical)k 4035(direction.)s
-220 fnt35 5059 883(@HScale)m 240 fnt82 6051 886(and)m 220 fnt35
-6467 883(@VScale)m 240 fnt82 7447 886(each)m 7953(ha)s 4(v)k 3(e)k
-8465(both)s 8960(a)s 220 fnt35 0 595(@OneCol)m 240 fnt82
-1012 598(and)m 1416(a)s 220 fnt35 1582 595(@OneRo)m 3(w)k
-240 fnt82 2713 598(ef)m 6(fect.)k
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 50 56
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Times-Italic
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-0 LoutMargSet
-grestore
-240 fnt84 0 13840(50)m 240 fnt83 6081 13843(Chapter)m 6931(3.)s
-7205(Pr)s 8(ede\207ned)k 8300(symbols)s 240 fnt84 0 13203(3.17.)m
-591(@HCo)s 2(v)k 2(er)k 1679(and)s 2120(@VCo)s 2(v)k 2(er)k
-240 fnt82 529 12771(The)m 220 fnt35 946 12768(@VCo)m 3(v)k 5(er)k
-240 fnt82 1941 12771(symbol)m 2690(v)s 3(ertically)k 3631(scales)s
-4241(its)s 4506(right)s 5006(parameter)s 6009(so)s 6264(that)s
-6671(it)s 6852(co)s 3(v)k 3(ers)k 7510(e)s 6(v)k 3(ery)k
-8075(object)s 8708(that)s 0 12483(shares)m 648(its)s 924(ro)s 6(w)k
-1344(mark.)s 1999(F)s 3(or)k 2388(e)s 3(xample,)k
-220 fnt35 480 11982(@VCo)m 3(v)k 5(er \( 45d @Rotate Hello @VCo)k 3(v)k 5(er \))k
-240 fnt82 0 11486(produces)m 748 843 0 396 240 288 60 480 10303 LoutGr2
-grestore save gsave 200 dict begin lfigdict begin
-grestore
-748 843 0 396 240 288 60 0 0 LoutGr2
-
-0.015 cm setlinewidth lfiground setlinecap
-0.15 cm /lfigdashed [ -0.3 cm ymark
-xsize ymark 0.3 cm 0 lfigpadd ] lfigdopath
-pop pop
-grestore
-gsave
-0 396 translate
-1.0000 4.1328 scale
-0 -54(\()m
-grestore
-gsave
-210 396 translate
-45.0000 rotate
-0 -54(Hello)m
-grestore
-gsave
-680 396 translate
-1.0000 4.1328 scale
-0 -54(\))m
-
-grestore
-
-grestore
-end end restore
-grestore
-0 9852(The)m 428(ro)s 6(w)k 848(mark)s 1400(has)s
-1770(been)s 2279(added)s 2909(to)s 3148(sho)s 6(w)k
-3702(clearly)s 4405(where)s 5045(it)s 5237(lies.)s 5732(This)s
-6208(should)s 6905(be)s 7187(compared)s 8188(with)s 220 fnt35
-480 9351(@VScale \( 45d @Rotate Hello @VScale \))m 240 fnt82 0 8855(which)m 642(produces)s 748 486 0 39 240 288 60 480 8029 LoutGr2
-grestore save gsave 200 dict begin lfigdict begin
-grestore
-748 486 0 39 240 288 60 0 0 LoutGr2
-
-0.015 cm setlinewidth lfiground setlinecap
-0.15 cm /lfigdashed [ -0.3 cm ymark
-xsize ymark 0.3 cm 0 lfigpadd ] lfigdopath
-pop pop
-grestore
-gsave
-0 229 translate
-1.0000 2.3824 scale
-0 -54(\()m
-
-grestore
-gsave
-210 39 translate
-45.0000 rotate
-0 -54(Hello)m
-grestore
-gsave
-0 229 translate
-1.0000 2.3824 scale
-680 -54(\))m
-grestore
-
-grestore
-end end restore
-grestore
-0 7578(Scaling)m 786(abandons)s 1759(mark)s
-2328(alignment)s 3361(and)s 3782(so)s 4065(is)s 4292(able)s
-4763(to)s 5018(e)s 3(xactly)k 5776(co)s 3(v)k 3(er)k
-6378(the)s 6743(rest)s 7164(of)s 7452(the)s 7817(ro)s 6(w)k 15(,)k
-8292(whereas)s 0 7290(co)m 3(v)k 3(ering)k 896(preserv)s 3(es)k
-1859(mark)s 2424(alignment)s 3453(and)s 3869(so)s 4148(is)s
-4371(obliged)s 5160(in)s 5415(general)s 6186(to)s 6438(more)s
-6998(than)s 7479(co)s 3(v)k 3(er)k 8077(the)s
-8438(rest)s 8855(of)s 0 7002(the)m 348(ro)s 6(w)k 15(.)k
-480 6628(If)m 700(the)s 1038(parameter)s 2042(of)s 220 fnt35
-2303 6625(@VCo)m 3(v)k 5(er)k 240 fnt82 3299 6628(has)m
-3658(zero)s 4112(v)s 3(ertical)k 4869(size,)s 5337(this)s
-5723(is)s 5923(tak)s 2(en)k 6485(to)s 6714(mean)s
-7279(that)s 7687(co)s 3(v)k 3(ering)k 8561(is)s
-8760(not)s 0 6340(required)m 863(after)s 1368(all)s 1670(and)s
-2083(the)s 220 fnt35 2441 6337(@VCo)m 3(v)k 5(er)k
-240 fnt82 3456 6340(is)m 3675(silently)s 4441(ignored.)s 5345(If)s
-5585(ho)s 6(we)k 6(v)k 3(er)k 6463(the)s
-6820(parameter)s 7843(has)s 8223(non-zero)s 0 6052(size)m 434(abo)s 3(v)k 3(e)k
-1064(the)s 1420(mark)s 1980(b)s 4(ut)k 2350(zero)s
-2822(size)s 3256(belo)s 6(w)k 15(,)k 3935(or)s
-4202(vice)s 4664(v)s 3(ersa,)k 5280(this)s 5684(is)s
-5901(tak)s 2(en)k 6482(to)s 6729(be)s 7019(an)s
-7310(error)s 7841(since)s 8396(scaling)s 0 5764(cannot)m 698(mak)s 2(e)k
-1270(the)s 1618(parameter)s 2632(co)s 3(v)k 3(er)k
-3217(the)s 3565(rest)s 3969(of)s 4240(the)s 4588(ro)s 6(w)k 15(.)k
-220 fnt35 480 5387(@HCo)m 3(v)k 5(er)k 240 fnt82
-1505 5390(is)m 1722(similar)s 9(,)k 2489(horizontally)s 3705(co)s 3(v)k 3(ering)k
-4596(all)s 4896(objects)s 5631(that)s 6056(share)s 6623(its)s
-6906(column)s 7688(mark.)s 8350(Neither)s 0 5102(symbol)m 753(w)s 2(orks)k
-1379(well)s 1837(near)s 2300(g)s 1(alle)k 3(y)k
-2926(tar)s 4(gets,)k 3658(because)s 4463(the)s 4803(scale)s
-5328(f)s 2(actor)k 5934(to)s 6166(apply)s 6744(is)s
-6946(determined)s 8071(before)s 8729(an)s 3(y)k 0 4814(g)m 1(alle)k 3(y)k
-634(\210ushing)s 1459(tak)s 2(es)k 1999(place.)s 240 fnt84
-0 4021(3.18.)m 591(@StartHSpan,@StartVSpan,)s 3642(@StartHVSpan,)s 5374(@HSpan,)s 6416(and)s
-6857(@VSpan)s 240 fnt82 556 3544(These)m 1199(symbols)s 2065(w)s 2(ork)k
-2632(together)s 3492(to)s 3747(produce)s 4591(spanning)s 5525(columns)s
-6403(and)s 6824(ro)s 6(ws)k 7350(in)s 7610(a)s
-7792(more)s 8356(\210e)s 3(xible)k 0 3256(w)m 2(ay)k
-451(than)s 920(is)s 1130(possible)s 1970(in)s 2213(practice)s
-3024(with)s 220 fnt35 3506 3253(//)m 240 fnt82 3691 3256(and)m
-220 fnt35 4095 3253(||)m 240 fnt82 4189 3256(.)m 4353(An)s
-4703(object)s 220 fnt35 480 2755(@Star)m -8(tHSpan object)k 240 fnt82
-0 2258(causes)m 220 fnt35 682 2255(object)m 240 fnt82 1330 2258(to)m
-1577(be)s 1866(printed,)s 2658(b)s 4(ut)k 3027(occup)s 2(ying)k
-4084(all)s 4384(the)s 4740(horizontal)s 5771(space)s 6366(to)s
-6612(the)s 6968(right)s 7486(on)s 7791(the)s 8146(ro)s 6(w)k
-8574(mark)s 0 1970(on)m 289(which)s 922(it)s 1105(lies)s
-1478(up)s 1762(to)s 1992(and)s 2387(including)s 3335(the)s
-3675(rightmost)s 220 fnt35 4642 1967(@HSpan)m 240 fnt82 5572 1970(symbol)m
-6323(on)s 6611(that)s 7020(mark)s 7563(not)s 7920(preceded)s
-8832(by)s 220 fnt35 0 1679(@Star)m -8(tHVSpan)k 240 fnt82
-1496 1682(,)m 220 fnt35 1603 1679(@Star)m -8(tHSpan)k 240 fnt82
-2953 1682(,)m 220 fnt35 3059 1679(@Star)m -8(tVSpan)k 240 fnt82
-4397 1682(,)m 4503(or)s 220 fnt35 4761 1679(@VSpan)m 240 fnt82
-5628 1682(.)m 5791(The)s 6218(column)s 6992(mark)s 7543(of)s
-7813(this)s 8208(spanning)s 0 1394(object)m 644(is)s 854(not)s
-1220(constrained)s 2380(to)s 2619(align)s 3154(with)s 3636(an)s 3(y)k
-4033(of)s 4304(the)s 4652(column)s 5427(marks)s 6062(of)s
-6333(the)s 6681(columns)s 7543(it)s 7735(spans.)s 480 1020(If)m
-739(there)s 1301(is)s 1541(no)s 220 fnt35 1863 1017(@HSpan)m
-240 fnt82 2831 1020(symbol)m 3621(an)s 3(ywhere)k 4633(to)s
-4901(the)s 5279(right)s 5819(of)s 220 fnt35 6119 1017(@Star)m -8(tHSpan)k
-240 fnt82 7469 1020(,)m 7606(then)s 8104(the)s 8482(object)s
-
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 51 57
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Italic
-%%+ font Times-Bold
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-1 LoutMargSet
-grestore
-240 fnt83 0 13843(3.18.)m 574(@StartHSpan,@StartVSpan,)s 3376(@StartHVSpan,)s 4953(@HSpan,)s
-5919(and)s 6345(@VSpan)s 240 fnt84 8839 13840(51)m 240 fnt82
-0 13205(spans)m 585(only)s 1067(its)s 1345(o)s 6(wn)k
-1811(column.)s 2695(This)s 3173(means)s 3837(that)s 4257(it)s
-4451(occupies)s 5341(that)s 5761(column)s 6538(as)s 6790(usual)s
-7352(b)s 4(ut)k 7716(its)s 7994(mark)s 8548(is)s
-8760(not)s 0 12917(constrained)m 1160(to)s 1399(align)s 1934(with)s
-2416(those)s 2977(of)s 3248(the)s 3596(other)s 4147(objects)s
-4875(in)s 5118(the)s 5466(column.)s 480 12543(Similarly)m 15(,)k
-1457(the)s 220 fnt35 1801 12540(@Star)m -8(tVSpan)k 240 fnt82
-3196 12543(symbol)m 3952(causes)s 4624(its)s 4896(object)s 5537(to)s
-5772(occup)s 2(y)k 6513(all)s 6802(the)s 7147(v)s 3(ertical)k
-7910(space)s 8493(belo)s 6(w)k 0 12255(it)m 191(on)s
-486(the)s 832(column)s 1605(mark)s 2155(on)s 2451(which)s
-3091(it)s 3281(lies,)s 3717(do)s 6(wn)k 4299(to)s
-4537(and)s 4939(including)s 5894(the)s 6240(bottommost)s 220 fnt35
-7441 12252(@VSpan)m 240 fnt82 8366 12255(symbol)m 0 11967(on)m 294(that)s
-708(mark)s 1256(not)s 1618(preceded)s 2535(by)s 2825(a)s
-220 fnt35 2987 11964(@Star)m -8(tHVSpan)k 240 fnt82 4483 11967(,)m
-220 fnt35 4586 11964(@Star)m -8(tHSpan)k 240 fnt82 5936 11967(,)m
-220 fnt35 6039 11964(@Star)m -8(tVSpan)k 240 fnt82 7377 11967(,)m
-7480(or)s 220 fnt35 7735 11964(@HSpan)m 240 fnt82 8614 11967(;)m
-8722(and)s 0 11679(if)m 206(there)s 728(is)s 927(no)s
-220 fnt35 1209 11676(@VSpan)m 240 fnt82 2125 11679(symbol)m 2874(an)s 3(ywhere)k
-3846(belo)s 6(w)k 4468(it)s 4649(on)s 4935(that)s
-5342(mark,)s 5929(then)s 6387(the)s 6724(object)s 7357(spans)s
-7929(only)s 8398(its)s 8662(o)s 6(wn)k 0 11391(ro)m 6(w)k 15(,)k
-458(occup)s 2(ying)k 1507(its)s 1783(ro)s 6(w)k
-2203(b)s 4(ut)k 2565(with)s 3047(its)s 3323(mark)s
-3875(not)s 4241(constrained)s 5401(to)s 5640(align)s 6175(with)s
-6657(the)s 7005(ro)s 6(w)k 7425(mark.)s 480 11017(The)m
-220 fnt35 949 11014(@Star)m -8(tHVSpan)k 240 fnt82 2547 11017(symbol)m
-3349(combines)s 4359(the)s 4748(ef)s 6(fects)k 5470(of)s
-220 fnt35 5783 11014(@Star)m -8(tHSpan)k 240 fnt82 7235 11017(and)m
-220 fnt35 7681 11014(@Star)m -8(tVSpan)k 240 fnt82 9019 11017(,)m
-0 10729(allo)m 6(wing)k 884(an)s 1167(object)s 1811(to)s
-2050(span)s 2546(both)s 3029(columns)s 3891(and)s 4295(ro)s 6(ws)k
-4805(simultaneously)s 15(.)k 6402(F)s 3(or)k 6791(e)s 3(xample,)k
-7705(in)s 220 fnt35 480 10228(@Star)m -8(tHVSpan x | | @HSpan)k 480 9940(/)m
-480 9652(@VSpan | |)m 240 fnt82 0 9156(the)m 378(object)s 220 fnt35
-1052 9153(x)m 240 fnt82 1250 9156(will)m 1706(occup)s 2(y)k
-2481(a)s 2677(rectangular)s 3841(area)s 4328(spanning)s 5276(three)s
-5840(columns,)s 6788(tw)s 2(o)k 7228(ro)s 6(ws,)k
-7824(and)s 8258(the)s 8637(g)s 1(aps)k 0 8868(between)m
-854(them.)s 480 8494(The)m 908(objects)s 1636(lying)s 2182(in)s
-2425(the)s 2774(re)s 3(gion)k 3439(spanned)s 4283(should)s
-4980(all)s 5274(be)s 5556(empty)s 15(,)k 6247(or)s
-6506(the)s 220 fnt35 6855 8491(@HSpan)m 240 fnt82 7794 8494(and)m
-220 fnt35 8199 8491(@VSpan)m 240 fnt82 0 8206(symbols)m 865(can)s
-1271(be)s 1570(used)s 2084(to)s 2340(document)s 3360(the)s
-3725(spanning)s 4660(that)s 5095(is)s 5322(occurring.)s 6418(At)s
-6734(present)s 7501(there)s 8051(may)s 8534(be)s 8833(no)s
-0 7918(g)m 1(alle)k 3(y)k 639(tar)s 4(gets)k
-1328(or)s 1593(recursi)s 6(v)k 3(e)k 2521(symbols)s
-3376(within)s 4050(the)s 4404(right)s 4921(parameter)s 5941(of)s
-220 fnt35 6218 7915(@Star)m -8(tHSpan)k 240 fnt82 7568 7918(,)m
-220 fnt35 7681 7915(@Star)m -8(tVSpan)k 240 fnt82 9019 7918(,)m
-0 7630(or)m 220 fnt35 246 7627(@Star)m -8(tHVSpan)k 240 fnt82
-1742 7630(.)m 1892(Ho)s 6(we)k 6(v)k 3(er)k 9(,)k
-2838(the)s 3172(right)s 3670(parameter)s 4670(may)s 5122(otherwise)s
-6093(be)s 6362(an)s 6631(arbitrary)s 7492(object,)s 8169(including)s
-0 7342(paragraphs)m 1100(of)s 1371(te)s 3(xt)k 1786(that)s
-2204(require)s 2936(breaking.)s 480 6968(If)m 722(the)s 1082(right)s
-1605(parameter)s 2631(of)s 220 fnt35 2914 6965(@Star)m -8(tHSpan)k
-240 fnt82 4264 6968(,)m 220 fnt35 4383 6965(@Star)m -8(tVSpan)k
-240 fnt82 5721 6968(,)m 5840(or)s 220 fnt35 6111 6965(@Star)m -8(tHVSpan)k
-240 fnt82 7679 6968(occupies)m 8579(more)s 0 6680(horizontal)m 1022(or)s
-1279(v)s 3(ertical)k 2044(space)s 2629(than)s 3095(all)s
-3386(of)s 3655(the)s 4001(spanned)s 4842(columns)s 5701(or)s
-5958(ro)s 6(ws)k 6466(combined)s 7466(require,)s 8247(the)s
-8592(e)s 3(xtra)k 0 6392(space)m 601(goes)s 1106(into)s
-1546(the)s 1908(last)s 2314(spanned)s 3172(column)s 3962(or)s
-4235(ro)s 6(w)k 15(.)k 4765(Ov)s 3(erlapping)k
-6026(spanning)s 6958(ro)s 6(ws)k 7483(and)s 7902(columns)s
-8779(are)s 0 6104(permitted.)m 1081(Gaps)s 1626(spanned)s 2471(by)s
-2767(span)s 3266(objects)s 3996(are)s 4345(unbreakable)s 5572(\(their)s
-220 fnt35 6151 6101(u)m 240 fnt82 6321 6104(indicator)m 7232(is)s
-7444(set)s 7772(automatically)s 0 5816(and)m 404(cannot)s 1102(be)s
-1384(re)s 6(v)k 4(ok)k 2(ed\).)k 240 fnt84
-0 5033(3.19.)m 591(@Scale)s 240 fnt82 588 4601(This)m 1112(symbol)s
-1920(geometrically)s 3335(scales)s 4004(its)s 4328(right)s 4887(parameter)s
-5949(by)s 6291(the)s 6687(scale)s 7268(f)s 2(actor)k
-7930(gi)s 6(v)k 3(en)k 8558(in)s 8850(its)s
-0 4313(left)m 377(parameter:)s 220 fnt35 480 3812(1.0 @Scale Hello 2.0 @Scale Hello 0.5 @Scale Hello)m 240 fnt82
-0 3357(has)m 370(result)s gsave
-480 2849 translate
-1.0000 1.0000 scale
-0 -54(Hello)m
-grestore
-gsave
-1124 2849 translate
-2.0000 2.0000 scale
-0 -54(Hello)m
-grestore
-gsave
-2292 2849 translate
-0.5000 0.5000 scale
-0 -54(Hello)m
-
-grestore
-0 2286(The)m 433(left)s 815(parameter)s 1834(can)s 2228(be)s
-2515(tw)s 2(o)k 2930(scale)s 3468(f)s 2(actors,)k
-4227(in)s 4475(which)s 5122(case)s 5594(the)s 5947(\207rst)s
-6383(applies)s 7116(horizontally)s 15(,)k 8368(and)s 8778(the)s
-0 1998(second)m 723(v)s 3(ertically:)k 220 fnt35 480 1497({0.5 2.0} @Scale Hello)m
-240 fnt82 0 1003(has)m 370(result)s gsave
-480 495 translate
-0.5000 2.0000 scale
-0 -54(Hello)m
-grestore
-
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 52 58
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Times-Italic
-%%+ font Helvetica
-%%+ font Symbol
-/pgsave save def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-0 LoutMargSet
-grestore
-240 fnt84 0 13840(52)m 240 fnt83 6081 13843(Chapter)m 6931(3.)s
-7205(Pr)s 8(ede\207ned)k 8300(symbols)s 240 fnt82 0 13205(The)m
-433(left)s 815(parameter)s 1834(may)s 2305(be)s 2592(empty)s 15(,)k
-3287(in)s 3535(which)s 4182(case)s 4654(Lout)s 5171(will)s
-5602(scale)s 6140(the)s 6493(object)s 7142(by)s 7441(a)s
-7612(common)s 8512(f)s 2(actor)k 0 12917(horizontally)m 1209(and)s
-1613(v)s 3(ertically)k 2565(so)s 2831(as)s 3081(to)s
-3320(occup)s 2(y)k 4064(all)s 4357(a)s 4(v)k 6(ailable)k
-5265(horizontal)s 6289(space:)s 220 fnt35 480 12416({} @Scale { Hello w)m 2(or)k -3(ld })k
-240 fnt82 0 11922(has)m 370(result)s gsave
-0 10765 translate
-7.9609 7.9609 scale
-0 -54(Hello)m 583(w)s 2(orld)k
-
-grestore
-0 9861(The)m 433(right)s 949(parameter)s 1969(may)s 2440(be)s
-2728(an)s 3(y)k 3130(object.)s 220 fnt35 3884 9858(@Scale)m
-240 fnt82 4712 9861(has)m 5088(both)s 5576(a)s 220 fnt35
-5748 9858(@OneCol)m 240 fnt82 6765 9861(and)m 7175(a)s 220 fnt35
-7346 9858(@OneRo)m 3(w)k 240 fnt82 8483 9861(ef)m 6(fect,)k
-0 9573(and)m 404(the)s 752(marks)s 1387(of)s 1658(the)s
-2006(result)s 2596(coincide)s 3462(with)s 3944(the)s 4292(principal)s
-5196(marks)s 5831(of)s 6102(the)s 6450(right)s 6961(parameter)s 13(.)k
-240 fnt84 0 8780(3.20.)m 591(@Rotate)s 240 fnt82 542 8348(The)m
-220 fnt35 973 8345(@Rotate)m 240 fnt82 1897 8348(symbol)m 2660(will)s
-3089(rotate)s 3691(its)s 3970(right)s 4484(parameter)s 5501(counterclockwise)s
-7233(an)s 7519(amount)s 8300(gi)s 6(v)k 3(en)k
-8883(in)s 0 8060(de)m 3(grees)k 778(\(positi)s 6(v)k 3(e)k
-1661(or)s 1920(ne)s 3(g)k 1(ati)k 6(v)k 3(e\))k
-2845(by)s 3139(its)s 3415(left)s 3792(parameter)s 13(.)k
-4897(F)s 3(or)k 5286(e)s 3(xample,)k 220 fnt35
-480 7559(30d @Rotate { hello)m 8(, w)k 2(or)k -3(ld })k 240 fnt82
-0 7065(has)m 370(result)s gsave
-534 6112 translate
-30.0000 rotate
-0 -54(hello,)m 583(w)s 2(orld)k
-
-grestore
-0 5586(Before)m 710(rotating)s 1511(the)s 1863(object,)s 220 fnt35
-2559 5583(@OneCol)m 240 fnt82 3576 5586(and)m 220 fnt35 3984 5583(@OneRo)m 3(w)k
-240 fnt82 5120 5586(are)m 5471(applied)s 6238(to)s 6482(it.)s
-6782(The)s 7215(result)s 7809(is)s 8024(a)s 8195(rectangle)s
-0 5298(whose)m 668(marks)s 1303(pass)s 1766(through)s 2568(the)s
-2916(point)s 3468(where)s 4108(the)s 4456(original)s 5254(marks)s
-5889(crossed:)s 1587 283 340 113 240 288 60 480 4075 LoutGr2
-grestore save gsave 200 dict begin lfigdict begin
-grestore
-1587 283 340 113 240 288 60 0 0 LoutGr2
-/lfiglightgrey [ lfigbox ] gsave lfigpaintpath grestore
-0.015 cm setlinewidth lfiground setlinecap
-0.15 cm /lfigsolid [ lfigbox ] lfigdopath
-pop pop
-grestore
-1587 283 340 113 240 288 60 0 0 LoutGr2
-
-0.015 cm setlinewidth lfiground setlinecap
-0.15 cm /lfigdashed [ -0.3 cm ymark
-xsize ymark 0.3 cm 0 lfigpadd []
-xmark -0.3 cm
-xmark ysize 0 0.3 cm lfigpadd ] lfigdopath
-pop pop
-grestore
-
-grestore
-
-grestore
-end end restore
-grestore
-240 fnt78 2547 4128(\336)m gsave
-3256 3921 translate
-240 fnt82 1515 1037 379 267 240 288 60 LoutGraphic
-gsave
-grestore save gsave 200 dict begin lfigdict begin
-grestore
-1515 1037 379 267 240 288 60 0 0 LoutGr2
-/lfiglightgrey [ lfigbox ] gsave lfigpaintpath grestore
-0.015 cm setlinewidth lfiground setlinecap
-0.15 cm /lfigsolid [ lfigbox ] lfigdopath
-pop pop
-grestore
-1515 1037 379 267 240 288 60 0 0 LoutGr2
-
-0.015 cm setlinewidth lfiground setlinecap
-0.15 cm /lfigdashed [ -0.3 cm ymark
-xsize ymark 0.3 cm 0 lfigpadd []
-xmark -0.3 cm
-xmark ysize 0 0.3 cm lfigpadd ] lfigdopath
-pop pop
-grestore
-gsave
-379 267 translate
-30.0000 rotate
-1587 283 340 113 240 288 60 -340 -113 LoutGr2
-grestore save gsave 200 dict begin lfigdict begin
-grestore
-1587 283 340 113 240 288 60 0 0 LoutGr2
-/lfiglightgrey [ lfigbox ] gsave lfigpaintpath grestore
-0.015 cm setlinewidth lfiground setlinecap
-0.15 cm /lfigsolid [ lfigbox ] lfigdopath
-pop pop
-grestore
-1587 283 340 113 240 288 60 0 0 LoutGr2
-
-0.015 cm setlinewidth lfiground setlinecap
-0.15 cm /lfigdashed [ -0.3 cm ymark
-xsize ymark 0.3 cm 0 lfigpadd []
-xmark -0.3 cm
-xmark ysize 0 0.3 cm lfigpadd ] lfigdopath
-pop pop
-grestore
-
-grestore
-
-grestore
-end end restore
-grestore
-
-grestore
-
-grestore
-
-grestore
-end end restore
-grestore
-240 fnt82 0 3470(As)m
-324(this)s 728(e)s 3(xample)k 1598(sho)s 6(ws,)k
-2306(rotation)s 3113(by)s 3415(an)s 3705(angle)s 4287(other)s
-4845(than)s 5322(a)s 5495(multiple)s 6355(of)s 6633(ninety)s
-7293(de)s 3(grees)k 8079(introduces)s 0 3182(quite)m 534(a)s
-700(lot)s 1012(of)s 1283(white)s 1870(space.)s 2565(So,)s
-2925(for)s 3263(e)s 3(xample,)k 4177(the)s 4525(result)s
-5115(of)s 220 fnt35 480 2674(-30d)m 968(@Rotate)s 1890(30d)s
-2305(@Rotate)s 240 fnt83 3286 2679(object)m 240 fnt82 0 2176(is)m
-210(a)s 376(much)s 965(lar)s 4(ger)k 1577(object)s
-2221(than)s 240 fnt83 2690 2178(object)m 240 fnt82 3278 2176(,)m
-3385(despite)s 4118(the)s 4466(f)s 2(act)k 4881(that)s
-5299(one)s 5701(rotation)s 6501(cancels)s 7255(the)s 7603(other)s 13(.)k
-480 1802(Rotation)m 1362(of)s 1634(objects)s 2363(containing)s 3427(recepti)s 6(v)k 3(e)k
-4350(and)s 4755(recursi)s 6(v)k 3(e)k 5678(symbols)s
-6528(is)s 6739(permitted,)s 7762(b)s 4(ut)k 8125(for)s
-8464(angles)s 0 1514(other)m 553(than)s 1024(multiples)s 1967(of)s
-2240(ninety)s 2894(de)s 3(grees)k 3675(it)s 3869(is)s
-4082(best)s 4529(to)s 4770(mak)s 2(e)k 5345(the)s
-5695(size)s 6125(of)s 6398(the)s 6748(rotated)s 7472(object)s
-8118(clear)s 8644(with)s 220 fnt35 0 1223(@Wide)m 240 fnt82
-774 1226(and)m 220 fnt35 1178 1223(@High)m 240 fnt82 1897 1226(symbols:)m
-220 fnt35 480 725(30d @Rotate 5i @Wide 4i @High)m
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 53 59
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Italic
-%%+ font Times-Bold
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-1 LoutMargSet
-grestore
-240 fnt83 0 13845(3.20.)m 574(@Rotate)s 240 fnt84 8833 13842(53)m
-220 fnt35 480 13253({ //1i @T)m 26(e)k 6(xtPlace)k 480 12965( //1i)m
-480 12677(})m 240 fnt82 0 12183(This)m 532(is)s 798(because)s
-1667(for)s 2061(angles)s 2779(other)s 3386(than)s 3911(multiples)s
-4907(of)s 5234(ninety)s 5942(de)s 3(grees)k 6776(the)s
-7180(space)s 7823(a)s 4(v)k 6(ailable)k 8788(for)s
-220 fnt35 0 11892(@T)m 26(e)k 6(xtPlace)k 240 fnt82
-1218 11895(to)m 1457(occup)s 2(y)k 2201(is)s 2411(indeterminate,)s
-3831(and)s 4235(the)s 4583(result)s 5173(is)s 5383(poor)s 13(.)k
-240 fnt84 0 11102(3.21.)m 591(@Backgr)s 4(ound)k 240 fnt82
-577 10625(The)m 220 fnt35 1042 10622(@Bac)m 4(kg)k 2(round)k
-240 fnt82 2515 10625(symbol)m 3312(will)s 3775(print)s 4323(its)s
-4637(left)s 5051(parameter)s 6102(in)s 6382(the)s 6767(background)s
-7993(of)s 8301(its)s 8615(right)s 0 10337(parameter)m 13(.)k
-1115(That)s 1624(is,)s 1901(the)s 2260(result)s 2860(has)s
-3241(the)s 3600(size)s 4038(of)s 4319(the)s 4678(right)s
-5200(parameter)s 9(,)k 6263(b)s 4(ut)k 6635(the)s
-6994(left)s 7382(parameter)s 8407(will)s 8844(be)s 0 10049(printed)m
-735(\207rst)s 1166(in)s 1409(the)s 1757(same)s 2304(space,)s
-2942(with)s 3424(its)s 3700(marks)s 4335(aligned)s 5097(with)s
-5579(the)s 5927(marks)s 6562(of)s 6833(the)s 7181(right)s
-7692(parameter)s 13(.)k 240 fnt84 0 9256(3.22.)m 591(@K)s 6(er)k 3(nShrink)k
-240 fnt82 541 8824(This)m 1018(symbol)s 1779(returns)s 2495(its)s
-2772(right)s 3284(parameter)s 4300(unchanged)s 5397(in)s 5641(appearance)s
-6774(b)s 4(ut)k 7137(occup)s 2(ying)k 8187(a)s
-8355(slightly)s 0 8536(smaller)m 770(bounding)s 1737(box.)s 2269(The)s
-2705(reduction)s 3673(is)s 3891(by)s 4193(the)s 4549(amount)s
-5335(of)s 5614(k)s 2(erning)k 6404(that)s 6830(w)s 2(ould)k
-7493(be)s 7783(applied)s 8553(if)s 8778(the)s 0 8248(right)m
-511(parameter)s 1525(w)s 2(as)k 1946(immediately)s 240 fnt83
-3194 8250(followed)m 240 fnt82 4084 8248(by)m 4378(the)s 4726(left)s
-5103(parameter)s 13(.)k 6208(F)s 3(or)k 6597(e)s 3(xample,)k
-220 fnt35 480 7747(.)m 13( @K)k 8(er)k -5(nShr)k -3(ink P)k
-240 fnt82 0 7292(has)m 370(result)s 104 158 0 54 240 288 60 480 6844 LoutGr2
-LoutBox stroke
-grestore
-0 0(P)m
-grestore
-0 6393(where)m
-649(a)s 824(box)s 1249(of)s 1529(size)s 1965(0)s
-2150(has)s 2529(been)s 3048(dra)s 3(wn)k 3709(around)s
-4441(the)s 4799(result)s 5398(to)s 5647(mak)s 2(e)k
-6228(its)s 6513(e)s 3(xtent)k 7164(clear)s 13(.)k
-7787(Compare)s 8730(this)s 0 6105(with)m 482(`P')s 806(alone:)s
-130 158 0 54 240 288 60 480 5656 LoutGr2
-LoutBox stroke
-grestore
-0 0(P)m
-grestore
-0 5205(in)m 243(which)s 885(the)s 1232(bounding)s
-2191(box)s 2605(e)s 3(xactly)k 3346(encloses)s 4206(the)s
-4554(object,)s 5245(or)s 5503(at)s 5735(least)s 6231(is)s
-6441(supposed)s 7390(to.)s 7740(The)s 8167(bounding)s 0 4917(box)m
-415(is)s 625(smaller)s 1387(on)s 1684(the)s 2032(right)s
-2543(by)s 2837(the)s 3185(amount)s 3963(of)s 4234(k)s 2(erning)k
-5016(that)s 5434(w)s 2(ould)k 6089(be)s 6371(applied)s
-7133(between)s 7987(`P')s 8311(and)s 8715(`.)s 16('.)k
-480 4543(The)m 916(only)s 1405(kno)s 6(wn)k 2117(use)s
-2501(for)s 2847(this)s 3252(symbol)s 4020(is)s 4239(to)s
-4486(produce)s 5322(tuck)s 2(ed-in)k 6288(subscripts)s 7304(in)s
-7555(the)s 7912(Eq)s 8245(equation)s 0 4255(formatting)m 1061(package.)s
-240 fnt84 0 3462(3.23.)m 591(@Common,)s 1872(@Rump,)s 2847(and)s
-3288(@Meld)s 240 fnt82 540 2985(The)m 220 fnt35 968 2982(@Common)m
-240 fnt82 2127 2985(and)m 220 fnt35 2531 2982(@Rump)m 240 fnt82
-3391 2985(symbols)m 4240(compare)s 5119(tw)s 2(o)k 5529(paragraph)s
-6542(objects:)s 220 fnt35 480 2484({ Aardv)m 5(ar)k -3(k, 29 } @Common { Aardv)k 5(ar)k -3(k, 359 })k
-240 fnt82 0 1990(If)m 234(either)s 842(parameter)s 1860(is)s
-2075(not)s 2446(a)s 2616(paragraph)s 3634(object,)s 4329(it)s
-4526(is)s 4741(con)s 9(v)k 3(erted)k 5734(into)s
-6164(a)s 6334(single-object)s 7633(paragraph)s 8651(\207rst.)s 0 1702(The)m
-418(result)s 998(of)s 220 fnt35 1259 1699(@Common)m 240 fnt82
-2408 1702(is)m 2608(the)s 2946(common)s 3831(pre\207x)s 4433(of)s
-4694(the)s 5032(tw)s 2(o)k 5432(paragraphs;)s 6583(that)s
-6991(is,)s 7247(those)s 7798(initial)s 8398(objects)s 0 1414(which)m
-640(are)s 985(equal)s 1555(in)s 1796(the)s 2142(tw)s 2(o)k
-2549(paragraphs.)s 3760(In)s 4013(the)s 4359(e)s 3(xample)k
-5220(abo)s 3(v)k 3(e,)k 5890(the)s 6236(result)s
-6824(is)s 220 fnt35 7031 1411(Aardv)m 5(ar)k -3(k,)k
-240 fnt82 7949 1414(.)m 8111(The)s 8536(result)s 0 1126(of)m
-220 fnt35 271 1123(@Rump)m 240 fnt82 1131 1126(is)m 1341(that)s
-1759(part)s 2190(of)s 2461(the)s 2809(second)s 3532(object)s
-4176(which)s 4818(is)s 5028(not)s 5394(included)s 6276(in)s
-220 fnt35 6519 1123(@Common)m 240 fnt82 7618 1126(;)m 7730(the)s
-8078(result)s 8668(of)s 220 fnt35 480 625({ Aardv)m 5(ar)k -3(k, 29 } @Rump { Aardv)k 5(ar)k -3(k, 359 })k
-
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 54 60
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Times-Italic
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-0 LoutMargSet
-grestore
-240 fnt84 0 13840(54)m 240 fnt83 6081 13843(Chapter)m 6931(3.)s
-7205(Pr)s 8(ede\207ned)k 8300(symbols)s 240 fnt82 0 13205(is)m
-220 fnt35 210 13202(359)m 240 fnt82 567 13205(.)m 480 12831(If)m
-698(the)s 1034(tw)s 2(o)k 1431(objects)s 2147(ha)s 4(v)k 3(e)k
-2635(nothing)s 3408(in)s 3638(common,)s 4571(the)s 4907(result)s
-5484(of)s 220 fnt35 5743 12828(@Common)m 240 fnt82 6889 12831(will)m
-7303(be)s 7572(an)s 7843(empty)s 8482(object)s 0 12543(and)m
-400(the)s 744(result)s 1330(of)s 220 fnt35 1597 12540(@Rump)m
-240 fnt82 2453 12543(will)m 2874(be)s 3152(the)s 3496(second)s
-4215(object.)s 4959(If)s 5185(the)s 5528(tw)s 2(o)k
-5934(objects)s 6658(are)s 7001(identical,)s 7926(the)s 8270(result)s
-8855(of)s 220 fnt35 0 12252(@Common)m 240 fnt82 1159 12255(will)m
-1585(be)s 1867(the)s 2215(\207rst)s 2646(object,)s 3337(and)s
-3741(the)s 4089(result)s 4679(of)s 220 fnt35 4950 12252(@Rump)m
-240 fnt82 5810 12255(will)m 6236(be)s 6518(an)s 6801(empty)s
-7453(object.)s 480 11881(The)m 933(only)s 1438(kno)s 6(wn)k
-2167(use)s 2567(for)s 220 fnt35 2930 11878(@Rump)m 240 fnt82
-3815 11881(and)m 220 fnt35 4244 11878(@Common)m 240 fnt82 5428 11881(is)m
-5663(to)s 5927(implement)s 7034(mer)s 4(ged)k 7830(inde)s 3(x)k
-8439(entries)s 0 11593(\(Section)m 853(2.8\).)s 480 11219(The)m 220 fnt35
-947 11216(@Meld)m 240 fnt82 1732 11219(symbol)m 2531(returns)s 3284(the)s
-3671(minimum)s 4700(meld)s 5275(of)s 5585(tw)s 2(o)k
-6034(paragraphs,)s 7229(that)s 7686(is)s 7935(the)s 8323(shortest)s
-0 10931(paragraph)m 1013(that)s 1431(contains)s 2279(the)s 2627(tw)s 2(o)k
-3037(original)s 3835(paragraphs)s 4935(as)s 5185(subsequences.)s 6652(F)s 3(or)k
-7041(e)s 3(xample,)k 220 fnt35 480 10430({ Aardv)m 5(ar)k -3(k , 1 , 2 } @Meld { Aardv)k 5(ar)k -3(k , 2 , 3 })k
-240 fnt82 0 9936(produces)m 480 9433(Aardv)m 6(ark)k 1438(,)s
-1545(1)s 1700(,)s 1807(2)s 1981(,)s 2088(3)s
-0 8949(The)m 455(result)s 1073(is)s 1310(related)s 2045(to)s
-2312(the)s 2687(well-kno)s 6(wn)k 3909(longest)s 4688(common)s
-5610(substring,)s 6622(in)s 6893(that)s 7338(the)s 7714(meld)s
-8278(contains)s 0 8661(e)m 6(v)k 3(erything)k 1076(not)s
-1451(in)s 1704(the)s 2061(lcs)s 2387(plus)s 2846(one)s
-3257(cop)s 2(y)k 3785(of)s 4065(e)s 6(v)k 3(erything)k
-5142(in)s 5394(the)s 5751(lcs.)s 6190(This)s 6675(function)s
-7539(is)s 7758(well-suited)s 8887(to)s 0 8373(melding)m 830(comple)s 3(x)k
-1698(inde)s 3(x)k 2274(entries.)s 3067(Note)s 3580(that)s
-3990(there)s 4515(must)s 5033(be)s 5307(a)s 5465(non-zero)s
-6360(amount)s 7131(of)s 7394(space)s 7973(before)s 8631(each)s
-0 8085(comma,)m 805(otherwise)s 1783(each)s 2271(will)s 2690(become)s
-3484(part)s 3908(of)s 4172(the)s 4513(preceding)s 5502(w)s 2(ord,)k
-6093(and,)s 6539(since)s 220 fnt35 7079 8082(@Meld)m 240 fnt82
-7818 8085(compares)m 8778(the)s 0 7797(tw)m 2(o)k 410(paragraphs)s
-1510(w)s 2(ord)k 2058(by)s 2352(w)s 2(ord,)k
-2949(the)s 3297(result)s 3887(will)s 4313(be)s 4595(dif)s 6(ferent)k
-5470(and)s 5874(less)s 6283(satisf)s 2(actory)k 15(.)k
-240 fnt84 0 7004(3.24.)m 591(@Insert)s 240 fnt82 541 6572(The)m
-220 fnt35 970 6569(@Inser)m -8(t)k 240 fnt82 1808 6572(symbol)m
-2569(inserts)s 3245(its)s 3522(left)s 3901(parameter)s 4916(at)s
-5149(the)s 5499(be)s 3(ginning)k 6508(of)s 6781(the)s
-7130(\207rst)s 7563(paragraph)s 8577(of)s 8850(its)s 0 6284(right)m
-511(parameter:)s 220 fnt35 480 5783(X @Inser)m -8(t { A B // C // D })k 240 fnt82
-0 5289(is)m 210(equi)s 6(v)k 6(alent)k 1254(to)s
-220 fnt35 480 4788({ XA B // C // D })m 240 fnt82 0 4294(Notice)m 707(that)s
-1139(a)s 1320(zero-width)s 2426(space)s 3028(separates)s 220 fnt35
-3968 4291(X)m 240 fnt82 4185 4294(from)m 4723(the)s 5085(\207rst)s
-5531(paragraph,)s 6608(so)s 6889(if)s 7120(some)s 7696(wider)s
-8314(space)s 8916(is)s 0 4006(required)m 857(it)s 1052(must)s
-1580(be)s 1865(placed)s 2550(at)s 2785(the)s 3137(end)s
-3544(of)s 220 fnt35 3818 4003(X)m 240 fnt82 3960 4006(.)m
-4127(The)s 220 fnt35 4558 4003(@Inser)m -8(t)k 240 fnt82
-5397 4006(operation)m 6361(is)s 6574(applied)s 7339(to)s 7581(the)s
-7932(v)s 6(alue)k 8503(of)s 8778(the)s 0 3718(right)m
-511(parameter)s 1525(after)s 2021(e)s 6(v)k 6(aluation.)k
-480 3344(The)m 917(only)s 1407(kno)s 6(wn)k 2121(use)s
-2506(for)s 2853(this)s 3259(symbol)s 4029(is)s 4249(to)s
-4498(attach)s 5134(something)s 6194(lik)s 2(e)k 240 fnt84
-6616 3343(Figur)m 4(e)k 7355(6)s 240 fnt82 7538 3344(to)m
-7787(the)s 8145(front)s 8679(of)s 8960(a)s 0 3056(multi-paragraph)m
-1596(caption.)s 240 fnt84 0 2263(3.25.)m 591(@OneOf)s 240 fnt82
-534 1831(The)m 220 fnt35 956 1828(@OneOf)m 240 fnt82 1877 1831(symbol)m
-2631(returns)s 3339(one)s 3734(of)s 3999(the)s 4341(sequence)s
-5268(of)s 5533(objects)s 6254(which)s 6890(is)s 7094(its)s
-7364(right)s 7869(parameter)s 8876(as)s 0 1543(its)m 276(result:)s
-220 fnt35 480 1092(@OneOf {)m 480 804( @ResultA)m
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 55 61
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Italic
-%%+ font Times-Bold
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-1 LoutMargSet
-grestore
-240 fnt83 0 13845(3.25.)m 574(@OneOf)s 240 fnt84 8833 13842(55)m
-220 fnt35 480 13209( @ResultB)m 480 12921( @ResultC)m 480 12633(})m 240 fnt82
-0 12139(The)m 451(choice)s 1155(is)s 1388(made)s 1986(to)s
-2248(ensure)s 2952(that)s 3393(whate)s 6(v)k 3(er)k
-4344(g)s 1(alle)k 3(y)k 5001(tar)s 4(get)k
-5624(is)s 5857(required)s 6735(at)s 6990(the)s 7362(moment)s
-8229(is)s 8463(found.)s 0 11851(F)m 3(or)k 389(e)s 3(xample,)k
-1304(if)s 1522(we)s 1858(are)s 2206(e)s 6(v)k 6(aluating)k
-220 fnt35 3244 11848(@OneOf)m 240 fnt82 4172 11851(as)m 4423(part)s
-4855(of)s 5127(an)s 5411(attempt)s 6188(to)s 6428(attach)s
-7056(a)s 7223(g)s 1(alle)k 3(y)k 7858(whose)s
-8527(tar)s 4(get)k 0 11563(is)m 220 fnt35 222 11560(@SomeT)m 26(arget)k
-240 fnt82 1622 11563(,)m 1741(then)s 2223(the)s 2583(result)s
-3186(abo)s 3(v)k 3(e)k 3820(will)s 4259(be)s
-220 fnt35 4553 11560(@ResultA)m 240 fnt82 5613 11563(if)m 5843(it)s
-6047(contains)s 220 fnt35 6908 11560(@SomeT)m 26(arget)k 240 fnt82
-8308 11563(,)m 8427(or)s 8699(else)s 220 fnt35 0 11272(@ResultB)m
-240 fnt82 1042 11275(if)m 1260(it)s 1453(contains)s 220 fnt35
-2302 11272(@SomeT)m 26(arget)k 240 fnt82 3702 11275(,)m 3810(or)s
-4070(else)s 220 fnt35 4498 11272(@ResultC)m 240 fnt82 5552 11275(\(whether)m
-6462(or)s 6722(not)s 7089(it)s 7282(contains)s 8131(the)s
-8480(tar)s 4(get,)k 0 10987(or)m 259(if)s 476(there)s
-1009(is)s 1219(no)s 1512(tar)s 4(get\).)k 480 10613(Use)m
-930(of)s 220 fnt35 1224 10610(@OneOf)m 240 fnt82 2174 10613(in)m
-2440(conjunction)s 3650(with)s 4155(recursi)s 6(v)k 3(e)k
-5100(symbols)s 5972(can)s 6384(lead)s 6863(to)s 7125(problems.)s
-8202(Consider)s 0 10325(this)m 396(e)s 3(xample:)k 220 fnt35
-480 9824(def @Recursiv)m 5(e {)k 480 9248( def @ChoiceA { @APlace // @Recursiv)m 5(e })k 480 8672( def @ChoiceB { @BPlace // @Recursiv)m 5(e })k
-480 8096( @OneOf {)m 480 7808( @ChoiceA)m 480 7520( @ChoiceB)m 480 7232( })m 480 6944(})m
-240 fnt82 0 6450(Lout)m 523(belie)s 6(v)k 3(es)k
-1360(that)s 1790(e)s 3(xpanding)k 220 fnt35 2849 6447(@Recursiv)m 5(e)k
-240 fnt82 4106 6450(is)m 4328(the)s 4687(right)s 5210(thing)s
-5767(to)s 6017(do)s 6322(when)s 6910(searching)s 7890(for)s
-8240(either)s 8855(of)s 0 6162(the)m 380(g)s 1(alle)k 3(y)k
-1046(tar)s 4(gets)k 220 fnt35 1762 6159(@APlace)m 240 fnt82
-2763 6162(and)m 220 fnt35 3199 6159(@BPlace)m 240 fnt82 4108 6162(.)m
-4305(When)s 4966(searching)s 5968(for)s 220 fnt35 6338 6159(@BPlace)m
-240 fnt82 7339 6162(this)m 7768(leads)s 8342(Lout)s 8887(to)s
-0 5874(e)m 3(xpand)k 220 fnt35 760 5871(@Recursiv)m 5(e)k
-240 fnt82 1945 5874(,)m 2065(then)s 220 fnt35 2547 5871(@ChoiceA)m
-240 fnt82 3596 5874(,)m 3717(then)s 4199(the)s 220 fnt35
-4560 5871(@Recursiv)m 5(e)k 240 fnt82 5818 5874(symbol)m 6592(within)s
-220 fnt35 7273 5871(@ChoiceA)m 240 fnt82 8322 5874(,)m 8442(and)s
-8860(so)s 0 5586(on)m 320(in\207nitely)s 15(.)k 1355(This)s
-1854(problem)s 2734(can)s 3146(be)s 3451(a)s 4(v)k 4(oided)k
-4283(by)s 4600(attaching)s 5552(a)s 220 fnt35 5741 5583(@NotRe)m 6(v)k 5(ealed)k
-240 fnt82 7291 5586(symbol)m 8074(to)s 8336(each)s 8855(of)s
-0 5298(the)m 357(inner)s 220 fnt35 918 5295(@Recursiv)m 5(e)k
-240 fnt82 2172 5298(symbols:)m 3146(these)s 3703(are)s 4059(then)s
-4538(not)s 4914(a)s 4(v)k 6(ailable)k 5831(for)s
-6179(e)s 3(xpansion)k 7214(until)s 7716(a)s 7892(decision)s
-8756(has)s 0 5010(been)m 510(made)s 1085(to)s 1326(e)s 3(xpand)k
-2074(the)s 2424(symbol)s 3185(the)s 3(y)k 3650(lie)s
-3945(within.)s 4721(In)s 4979(this)s 5376(particular)s 6352(e)s 3(xample)k
-7216(it)s 7410(w)s 2(ould)k 8066(be)s 8350(simpler)s
-0 4722(to)m 239(write)s 220 fnt35 480 4270(def @Recursiv)m 5(e {)k
-480 3694( @OneOf {)m 480 3406( @APlace)m 480 3118( @BPlace)m 480 2830( })m 480 2542( // @Recursiv)m 5(e)k
-480 2254(})m 240 fnt82 0 1760(b)m 4(ut)k 378(this)s
-791(f)s 2(actoring)k 1720(is)s 1947(not)s 2329(possible)s
-3186(when)s 3778(the)s 4143(recursi)s 6(v)k 3(e)k
-5081(calls)s 5586(ha)s 4(v)k 3(e)k 6103(parameters)s
-7218(that)s 7652(are)s 8016(required)s 8887(to)s 0 1472(dif)m 6(fer)k
-583(in)s 826(the)s 1174(tw)s 2(o)k 1584(cases.)s
-
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 56 62
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Times-Italic
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-0 LoutMargSet
-grestore
-240 fnt84 0 13840(56)m 240 fnt83 6081 13843(Chapter)m 6931(3.)s
-7205(Pr)s 8(ede\207ned)k 8300(symbols)s 240 fnt84 0 13203(3.26.)m
-591(@Next)s 240 fnt82 535 12771(The)m 220 fnt35 957 12768(@Ne)m 6(xt)k
-240 fnt82 1676 12771(symbol)m 2430(returns)s 3138(its)s 3409(parameter)s
-4417(plus)s 4861(one.)s 5366(It)s 5565(is)s 5769(rather)s
-6380(cle)s 6(v)k 3(er)k 7008(at)s 7234(w)s 2(orking)k
-8078(this)s 8468(out:)s 8934(it)s 0 12483(hunts)m 570(through)s
-1372(the)s 1720(parameter)s 2734(from)s 3258(right)s 3769(to)s
-4008(left,)s 4432(looking)s 5217(for)s 5555(a)s 5721(number)s
-6512(to)s 6751(increment:)s 220 fnt35 480 11982(@Ne)m 6(xt \(3.99\))k
-240 fnt82 0 11486(has)m 404(result)s 1029(\(3.100\).)s 1925(If)s
-220 fnt35 2190 11483(@Ne)m 6(xt)k 240 fnt82 2949 11486(cannot)m
-3681(\207nd)s 4147(a)s 4348(digit)s 4880(inside)s 5542(its)s
-5852(parameter)s 9(,)k 6939(it)s 7166(is)s 7410(an)s
-7728(error)s 13(.)k 8377(Roman)s 0 11198(numerals)m 925(are)s
-1270(handled)s 2084(by)s 2376(storing)s 3091(them)s 3627(in)s
-3868(a)s 4032(database,)s 4960(as)s 5208(e)s 3(xplained)k
-6191(in)s 6432(Section)s 7204(4.2;)s 220 fnt35 7614 11195(@Ne)m 6(xt)k
-240 fnt82 8336 11198(will)m 8760(not)s 0 10910(increment)m 1015(a)s
-1181(Roman)s 1930(numeral.)s 240 fnt84 0 10167(3.27.)m 591(@Case)s
-240 fnt82 540 9735(The)m 220 fnt35 968 9732(@Case)m 240 fnt82
-1755 9735(symbol)m 2515(selects)s 3202(its)s 3478(result)s 4068(from)s
-4592(a)s 4758(list)s 5109(of)s 5380(alternati)s 6(v)k 3(es,)k
-6578(depending)s 7629(on)s 7926(a)s 8092(tag:)s 220 fnt35
-480 9234(@Da)m 6(y @Case {)k 480 8946( { 1 21 31 } @Y)m 4(ield st)k 480 8658( { 2 22 } @Y)m 4(ield nd)k
-480 8370( { 3 23 } @Y)m 4(ield rd)k 480 8082( else @Y)m 4(ield th)k 480 7794(})m
-240 fnt82 0 7300(In)m 257(this)s 654(e)s 3(xample)k
-1518(the)s 1868(result)s 2459(will)s 2886(be)s 3169(st)s
-3390(if)s 220 fnt35 3608 7297(@Da)m 6(y)k 240 fnt82
-4274 7300(is)m 4485(1,)s 4714(21,)s 5062(or)s 5322(31,)s
-5670(and)s 6076(nd)s 6375(if)s 220 fnt35 6593 7297(@Da)m 6(y)k
-240 fnt82 7259 7300(is)m 7471(2)s 7646(or)s 7906(22,)s
-8254(etc.)s 8698(The)s 0 7012(ef)m 6(fect)k 594(is)s
-801(similar)s 1520(to)s 1756(accessing)s 2722(a)s 2885(database,)s
-3812(though)s 4532(in)s 4773(a)s 4936(more)s 5480(compact)s
-6347(form.)s 6972(The)s 7397(right)s 7905(parameter)s 8916(is)s
-0 6724(a)m 171(sequence)s 1109(of)s 220 fnt35 1385 6721(@Y)m 4(ield)k
-240 fnt82 2143 6724(symbols,)m 3053(each)s 3553(with)s 4040(a)s
-4211(left)s 4594(parameter)s 5613(whose)s 6286(v)s 6(alue)k
-6859(is)s 7074(a)s 7245(sequence)s 8183(of)s 8459(one)s
-8867(or)s 0 6436(more)m 547(juxtapositions)s 1940(of)s 2211(simple)s
-2904(w)s 2(ords,)k 3594(and)s 3998(a)s 4164(right)s
-4675(parameter)s 5689(which)s 6331(may)s 6797(be)s 7079(an)s 3(y)k
-7476(object.)s 480 6062(W)m 19(e)k 895(\207rst)s 1372(describe)s
-2271(the)s 2665(beha)s 4(viour)k 3725(when)s 4347(the)s
-4742(v)s 6(alue)k 5356(of)s 5674(the)s 6068(left)s
-6492(parameter)s 7552(of)s 220 fnt35 7870 6059(@Case)m 240 fnt82
-8703 6062(is)m 8960(a)s 0 5774(juxtaposition)m 1302(of)s 1568(one)s
-1965(or)s 2220(more)s 2762(simple)s 3450(w)s 2(ords.)k
-4193(Then)s 4737(the)s 5080(result)s 5666(of)s 5932(the)s
-220 fnt35 6275 5771(@Case)m 240 fnt82 7058 5774(is)m 7263(the)s
-7606(right)s 8112(parameter)s 0 5486(of)m 287(the)s 652(\207rst)s
-220 fnt35 1100 5483(@Y)m 4(ield)k 240 fnt82 1870 5486(whose)m
-2554(left)s 2948(parameter)s 3979(contains)s 4844(either)s 5463(the)s
-5828(v)s 6(alue)k 6413(of)s 6701(the)s 7065(left)s
-7459(parameter)s 8490(of)s 8778(the)s 220 fnt35 0 5195(@Case)m
-240 fnt82 727 5198(,)m 834(or)s 1093(the)s 1441(special)s
-2159(v)s 6(alue)k 220 fnt35 2727 5195(else)m 240 fnt82
-3121 5198(.)m 3285(If)s 3515(there)s 4048(is)s 4258(no)s
-4551(such)s 220 fnt35 5047 5195(@Y)m 4(ield)k 240 fnt82
-5800 5198(it)m 5992(is)s 6202(an)s 6485(error)s 13(.)k
-480 4824(When)m 1133(the)s 1506(left)s 1908(parameter)s 2946(of)s
-220 fnt35 3242 4821(@Case)m 240 fnt82 4054 4824(is)m 4288(not)s
-4679(a)s 4870(juxtaposition)s 6200(of)s 6496(simple)s 7214(w)s 2(ords,)k
-7928(the)s 8301(result)s 8916(is)s 0 4536(the)m 350(right)s
-864(parameter)s 1881(of)s 2155(the)s 2506(\207rst)s 220 fnt35
-2940 4533(@Y)m 4(ield)k 240 fnt82 3696 4536(whose)m 4367(left)s
-4746(parameter)s 5763(is)s 220 fnt35 5976 4533(else)m 240 fnt82
-6370 4536(,)m 6480(or)s 6742(an)s 7028(error)s 7554(otherwise.)s
-8650(This)s 0 4248(permits)m 767(e)s 3(xamples)k 1718(lik)s 2(e)k
-220 fnt35 480 3747(@RunningTitle @Case {)m 480 3459( dft @Y)m 4(ield @Title)k 480 3171( else @Y)m 4(ield @RunningTitle)k
-480 2883(})m 240 fnt82 0 2389(where)m 661(a)s 848(running)s
-1667(title)s 2115(is)s 2346(returned)s 3221(unless)s 3892(it)s
-4105(has)s 4496(the)s 4866(v)s 6(alue)k 220 fnt35
-5455 2386(dft)m 240 fnt82 5776 2389(\(which)m 6519(presumably)s 7710(means)s
-8393(that)s 8833(no)s 0 2101(running)m 798(title)s 1224(w)s 2(as)k
-1645(supplied\),)s 2642(in)s 2885(which)s 3527(case)s 3994(an)s
-4277(ordinary)s 5141(title)s 5567(is)s 5777(returned)s 6631(instead.)s
-480 1727(When)m 1126(a)s 1310(recepti)s 6(v)k 3(e)k
-2250(symbol)s 3028(is)s 3256(placed)s 3955(within)s 4641(a)s
-220 fnt35 4825 1724(@Case)m 240 fnt82 5552 1727(,)m 5677(it)s
-5887(should)s 6601(be)s 6901(included)s 7801(in)s 8062(each)s
-8575(alter)s 8998(-)s 0 1439(nati)m 6(v)k 3(e,)k
-695(since)s 1255(otherwise)s 2254(Basser)s 2964(Lout)s 3490(may)s
-3969(become)s 4783(confused)s 5718(when)s 6308(trying)s 6945(to)s
-7198(predict)s 7934(whether)s 8778(the)s 0 1151(symbol)m 755(will)s
-1176(be)s 1453(a)s 1613(part)s 2039(of)s 2305(the)s
-2648(result)s 3232(or)s 3486(not.)s 3951(Alternati)s 6(v)k 3(ely)k 15(,)k
-5288(if)s 5500(it)s 5687(can)s 6071(be)s 6347(guaranteed)s
-7449(that)s 7862(the)s 8204(recepti)s 6(v)k 3(e)k
-0 863(symbol)m 764(will)s 1195(ne)s 6(v)k 3(er)k
-1782(be)s 2069(searched)s 2967(for)s 3310(when)s 3891(the)s
-4244(cases)s 4804(that)s 5226(it)s 5423(does)s 5918(not)s
-6289(lie)s 6587(within)s 7260(are)s 7612(selected,)s 8493(that)s
-8916(is)s 0 575(all)m 293(right)s 804(too.)s
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 57 63
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Italic
-%%+ font Times-Bold
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-1 LoutMargSet
-grestore
-240 fnt83 0 13845(3.28.)m 574(@Moment)s 240 fnt84 8831 13842(57)m
-0 13250(3.28.)m 591(@Moment)s 240 fnt82 480 12818(The)m 908(prede\207ned)s
-1976(symbol)s 220 fnt35 2736 12815(@Moment)m 240 fnt82 3808 12818(has)m
-4178(the)s 4526(follo)s 6(wing)k 5503(de\207nition:)s 220 fnt35
-480 12317(def @Moment)m 480 12029( named @T)m 26(ag {})k 480 11741( named @Second {})m 480 11453( named @Min)m 2(ute {})k
-480 11165( named @Hour {})m 480 10877( named @Da)m 6(y {})k 480 10589( named @Month {})m 480 10301( named @Y)m 30(ear {})k
-480 10013( named @Centur)m -6(y {})k 480 9725( named @W)m 6(eekDa)k 6(y {})k
-480 9437( named @Y)m 30(earDa)k 6(y {})k 480 9149( named @Da)m 6(ylightSa)k 4(ving {})k
-480 8861({})m 240 fnt82 0 8367(It)m 208(may)s 677(be)s
-962(used)s 1463(lik)s 2(e)k 1878(an)s 3(y)k
-2278(other)s 2832(symbol.)s 3705(Lout)s 4220(pro)s 3(vides)k
-5095(an)s 5381(in)s 9(v)k 4(ocation)k 6439(of)s
-220 fnt35 6713 8364(@Moment)m 240 fnt82 7788 8367(with)m 8273(tag)s
-220 fnt35 8622 8364(no)m 3(w)k 240 fnt82 9019 8367(,)m
-0 8079(whose)m 668(other)s 1219(parameters)s 2317(are)s 2664(numbers)s
-3539(encoding)s 4470(the)s 4818(current)s 5554(date)s 6008(and)s
-6412(time:)s 220 fnt35 480 7514(@Second)m 240 fnt82 2482 7517(the)m
-2830(current)s 3566(second,)s 4338(usually)s 5083(between)s 5937(00)s
-6232(and)s 6636(59)s 220 fnt35 480 7183(@Min)m 2(ute)k
-240 fnt82 2482 7186(the)m 2830(current)s 3566(minute,)s 4337(between)s
-5191(00)s 5486(and)s 5890(59)s 220 fnt35 480 6873(@Hour)m
-240 fnt82 2482 6876(the)m 2830(current)s 3566(hour)s 9(,)k
-4103(between)s 4957(00)s 5252(and)s 5656(23)s 220 fnt35
-480 6563(@Da)m 6(y)k 240 fnt82 2482 6566(the)m 2830(current)s
-3566(day)s 3966(of)s 4237(the)s 4585(month,)s 5304(between)s
-6158(1)s 6313(and)s 6717(31)s 220 fnt35 480 6234(@Month)m
-240 fnt82 2482 6237(the)m 2830(current)s 3566(month,)s 4285(between)s
-5139(1)s 5294(\(January\))s 6245(and)s 6649(12)s 6943(\(December\))s
-220 fnt35 480 5905(@Y)m 30(ear)k 240 fnt82 2482 5908(the)m
-2830(current)s 3566(year)s 4037(of)s 4308(the)s 4656(century)s 15(,)k
-5465(between)s 6319(00)s 6614(and)s 7018(99)s 220 fnt35
-480 5576(@Centur)m -6(y)k 240 fnt82 2482 5579(the)m 2830(current)s
-3566(century)s 15(,)k 4375(e.g.)s 4765(19)s 5056(or)s
-5315(20)s 220 fnt35 480 5247(@W)m 6(eekDa)k 6(y)k
-240 fnt82 2482 5250(the)m 2830(current)s 3566(day)s 3966(of)s
-4237(the)s 4585(week,)s 5197(between)s 6051(1)s 6206(\(Sunday\))s
-7132(and)s 7536(7)s 7704(\(Saturday\))s 220 fnt35 480 4916(@Y)m 30(earDa)k 6(y)k
-240 fnt82 2482 4919(the)m 2830(current)s 3566(day)s 3966(of)s
-4237(the)s 4585(year)s 9(,)k 5094(between)s 5948(0)s
-6123(and)s 6527(365)s 220 fnt35 480 4587(@Da)m 6(ylightSa)k 4(ving)k
-240 fnt82 2482 4590(an)m 2784(implementation-dependent)s 5427(number)s 6237(that)s
-6675(may)s 7160(encode)s 7914(the)s 8282(daylight)s 2482 4302(sa)m 4(ving)k
-3156(currently)s 4072(in)s 4315(ef)s 6(fect)k 0 3741(Unix)m
-519(manual)s 1262(entries)s 1934(state)s 2411(that)s 220 fnt35
-2814 3738(@Second)m 240 fnt82 3813 3741(can)m 4186(be)s 4453(as)s
-4687(high)s 5155(as)s 5389(61,)s 5720(to)s 5944(allo)s 6(w)k
-6507(for)s 6830(leap)s 7265(seconds.)s 8171(Judicious)s 0 3453(use)m
-375(of)s 646(databases)s 1613(can)s 2002(con)s 9(v)k 3(ert)k
-2767(these)s 3314(numbers)s 4189(into)s 4614(useful)s 5253(dates.)s
-5908(F)s 3(or)k 6297(e)s 3(xample,)k 220 fnt35
-480 2952(@Moment&&no)m 3(w @Open { @Da)k 6(y {@Months&&@Month}, @Centur)k -6(y{@Y)k 30(ear} })k
-240 fnt82 0 2454(produces)m 915(something)s 1965(lik)s 2(e)k
-2377(17)s 2665(September)s 9(,)k 3785(1999)s 4316(gi)s 6(v)k 3(en)k
-4896(a)s 5062(suitable)s 5861(database)s 6740(of)s 7011(months.)s
-240 fnt84 0 1661(3.29.)m 591(@Null)s 240 fnt82 480 1229(This)m
-979(symbol)s 1762(pro)s 3(vides)k 2657(a)s 2846(con)s 9(v)k 3(enient)k
-3967(w)s 2(ay)k 4441(to)s 4703(remo)s 3(v)k 3(e)k
-5493(unw)s 2(anted)k 6503(concatenation)s 7911(symbols.)s 8896(If)s
-0 941(there)m 544(is)s 765(a)s 942(concatenation)s 2339(symbol)s
-3110(preceding)s 220 fnt35 4117 938(@Null)m 240 fnt82 4702 941(,)m
-4821(the)s 220 fnt35 5180 938(@Null)m 240 fnt82 5836 941(and)m
-6252(the)s 6611(concatenation)s 8007(symbol)s 8779(are)s 0 653(both)m
-482(deleted.)s 1335(Otherwise,)s 2423(if)s 2638(there)s 3170(is)s
-3379(a)s 3544(follo)s 6(wing)k 4519(concatenation)s 5903(symbol,)s
-6714(it)s 6905(and)s 7307(the)s 220 fnt35 7654 650(@Null)m
-240 fnt82 8298 653(are)m 8643(both)s 0 365(deleted.)m 794(Otherwise,)s
-220 fnt35 1883 362(@Null)m 240 fnt82 2528 365(becomes)m 3416(an)s
-3699(empty)s 4351(object.)s
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 58 64
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Times-Italic
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-0 LoutMargSet
-grestore
-240 fnt84 0 13840(58)m 240 fnt83 6081 13843(Chapter)m 6931(3.)s
-7205(Pr)s 8(ede\207ned)k 8300(symbols)s 240 fnt82 480 13205(These)m
-1107(rules)s 1622(apply)s 2208(to)s 2447(a)s 2613(fully)s
-3118(parenthesized)s 4490(v)s 3(ersion)k 5248(of)s 5519(the)s
-5867(e)s 3(xpression.)k 7051(F)s 3(or)k 7440(e)s 3(xample,)k
-8354(in)s 220 fnt35 480 12704(...)m 13( //1vx @Null |0.5i ...)k 240 fnt82
-0 12249(it)m 202(is)s 423(the)s 782(horizontal)s 1817(concatenation)s
-3213(symbol)s 3984(follo)s 6(wing)k 220 fnt35 4972 12246(@Null)m
-240 fnt82 5628 12249(that)m 6057(disappears,)s 7184(because)s 8008(in)s
-8262(the)s 8621(fully)s 0 11961(parenthesized)m 1372(v)s 3(ersion)k
-220 fnt35 480 11460(...)m 13( //1vx { @Null |0.5i ...)k 13( })k 240 fnt82
-0 10966(there)m 533(is)s 743(no)s 1036(concatenation)s 2421(symbol)s
-3181(preceding)s 4177(the)s 220 fnt35 4525 10963(@Null)m 240 fnt82
-5110 10966(.)m 240 fnt84 0 10173(3.30.)m 591(@Galley)s 1534(and)s
-1975(@F)s 6(or)k 4(ceGalley)k 240 fnt82 480 9696(These)m
-1131(symbols)s 2004(both)s 2511(act)s 2874(as)s 3148(a)s
-3338(placeholder)s 4538(for)s 4900(a)s 5090(g)s 1(alle)k 3(y)k 15(.)k
-5844(That)s 6366(is,)s 6656(the)s 3(y)k 7144(may)s
-7634(be)s 7940(replaced)s 8832(by)s 0 9408(components)m 1210(of)s
-1483(a)s 1651(g)s 1(alle)k 3(y)k 15(.)k
-2383(In)s 2641(the)s 2991(case)s 3460(of)s 220 fnt35
-3734 9405(@F)m 6(orceGalle)k 4(y)k 240 fnt82 5189 9408(the)m
-5539(g)s 1(alle)k 3(y)k 6175(will)s 6604(then)s
-7075(ha)s 4(v)k 3(e)k 7578(a)s 7746(forcing)s
-8492(g)s 1(alle)k 3(y)k 0 9120(ef)m 6(fect)k
-583(at)s 802(this)s 1184(point)s 1723(although)s 2604(it)s
-2783(need)s 3280(not)s 3632(be)s 3901(declared)s 4754(using)s
-220 fnt35 5313 9117(f)m 6(orce into)k 240 fnt82 6202 9120(.)m
-6353(See)s 6740(Section)s 7501(2.7)s 7835(for)s 8160(a)s
-8312(detailed)s 0 8832(discussion)m 1054(of)s 1325(g)s 1(alle)k 3(ys,)k
-2105(forcing)s 2848(g)s 1(alle)k 3(ys,)k 3628(and)s
-4032(tar)s 4(gets.)k 240 fnt84 0 8039(3.31.)m 591(@NotRe)s 3(v)k 2(ealed)k
-240 fnt82 480 7607(The)m 220 fnt35 938 7604(@NotRe)m 6(v)k 5(ealed)k
-240 fnt82 2495 7607(symbol)m 3285(e)s 3(x)k 3(erts)k
-3931(\207ne)s 4376(control)s 5138(o)s 3(v)k 3(er)k
-5647(the)s 6026(process)s 6824(of)s 7125(e)s 3(xpanding)k
-8204(recepti)s 6(v)k 3(e)k 0 7319(symbols.)m 955(It)s
-1152(may)s 1611(appear)s 2300(only)s 2773(within)s 3433(the)s
-3774(body)s 4300(of)s 4564(a)s 4722(de\207nition,)s 5739(immediately)s
-6979(follo)s 6(wing)k 7949(the)s 8289(name)s 8855(of)s
-0 7031(a)m 166(recepti)s 6(v)k 3(e)k 1088(symbol.)s
-1957(F)s 3(or)k 2346(e)s 3(xample:)k 220 fnt35
-480 6530(def A { @Galle)m 4(y })k 480 5954(def B { @Galle)m 4(y })k 480 5378(def ABList)m
-480 5090({)m 480 4802( A)m 480 4514( // B @NotRe)m 6(v)k 5(ealed)k
-480 4226( // ABList)m 480 3938(})m 240 fnt82 0 3444(The)m 424(meaning)s
-1297(is)s 1503(that)s 1916(the)s 2260(symbol)s 3016(immediately)s
-4259(preceding)s 220 fnt35 5251 3441(@NotRe)m 6(v)k 5(ealed)k
-240 fnt82 6718 3444(,)m 220 fnt35 6821 3441(B)m 240 fnt82
-7015 3444(in)m 7253(this)s 7645(e)s 3(xample,)k 8555(is)s
-8760(not)s 0 3156(re)m 6(v)k 3(ealed)k 851(to)s
-1083(g)s 1(alle)k 3(ys)k 1800(which)s 2435(encounter)s
-220 fnt35 3431 3153(ABList)m 240 fnt82 4113 3156(while)m 4693(searching)s
-5655(for)s 5986(tar)s 4(gets;)k 6723(to)s 6955(such)s
-7444(g)s 1(alle)k 3(ys)k 8161(it)s 8345(appears)s
-0 2868(that)m 220 fnt35 408 2865(ABList)m 240 fnt82 1086 2868(contains)m
-220 fnt35 1923 2865(A)m 240 fnt82 2116 2868(only)m 15(,)k
-2624(not)s 220 fnt35 2979 2865(B)m 240 fnt82 3117 2868(,)m
-3213(hence)s 3816(only)s 4286(g)s 1(alle)k 3(ys)k
-4999(tar)s 4(geted)k 5811(to)s 220 fnt35 6039 2865(A)m
-240 fnt82 6233 2868(will)m 6648(e)s 3(xpand)k 220 fnt35
-7384 2865(ABList)m 240 fnt82 8013 2868(.)m 8166(Ho)s 6(we)k 6(v)k 3(er)k 9(,)k
-0 2580(after)m 220 fnt35 496 2577(ABList)m 240 fnt82 1185 2580(is)m
-1395(e)s 3(xpanded)k 2368(by)s 2662(such)s 3158(a)s
-3324(g)s 1(alle)k 3(y)k 15(,)k 220 fnt35
-3996 2577(B)m 240 fnt82 4194 2580(will)m 4620(be)s 4902(a)s 4(v)k 6(ailable)k
-5810(as)s 6060(a)s 6226(tar)s 4(get)k 6825(in)s
-7068(the)s 7416(usual)s 7976(w)s 2(ay)k 15(.)k
-480 2206(Apart)m 1081(from)s 1602(this)s 1994(meaning,)s 220 fnt35
-2922 2203(@NotRe)m 6(v)k 5(ealed)k 240 fnt82 4445 2206(has)m
-4812(no)s 5102(ef)s 6(fect)k 5694(at)s 5923(all,)s
-6264(and)s 6665(the)s 7010(body)s 7540(of)s 7808(the)s
-8152(de\207nition)s 0 1918(may)m 501(be)s 819(understood)s 1976(by)s
-2306(deleting)s 220 fnt35 3164 1915(@NotRe)m 6(v)k 5(ealed)k
-240 fnt82 4727 1918(and)m 5166(an)s 3(y)k 5599(preceding)s
-6630(space.)s 7361(Thus,)s 7982(the)s 8366(symbol)s 0 1630(preceding)m
-220 fnt35 1001 1627(@NotRe)m 6(v)k 5(ealed)k 240 fnt82
-2533 1630(may)m 3004(ha)s 4(v)k 3(e)k 3510(named)s
-4211(and)s 4620(right)s 5136(parameters)s 6239(in)s 6487(the)s
-6840(usual)s 7405(w)s 2(ay;)k 7919(these)s 8471(w)s 2(ould)k
-0 1342(follo)m 6(w)k 672(after)s 1168(the)s 220 fnt35
-1516 1339(@NotRe)m 6(v)k 5(ealed)k 240 fnt82 3043 1342(symbol.)m
-480 968(This)m 944(symbol)s 1692(w)s 2(as)k 2101(introduced)s
-3169(to)s 3396(o)s 3(v)k 3(ercome)k 4377(a)s
-4530(problem)s 5375(with)s 5845(\210oating)s 6616(\207gures)s 7306(treated)s
-8001(as)s 8238(displays.)s 0 680(It)m 205(turned)s 874(out)s
-1240(to)s 1479(be)s 1761(essential)s 2638(to)s 2877(specify)s
-3621(the)s 3969(layout)s 4627(of)s 4898(a)s 5064(column)s
-5839(\(in)s 6161(part\))s 6660(as)s
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 59 65
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Italic
-%%+ font Times-Bold
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-1 LoutMargSet
-grestore
-240 fnt83 0 13843(3.31.)m 574(@NotRe)s 3(vealed)k 240 fnt84
-8832 13840(59)m 220 fnt35 480 13251(@BodyT)m 26(e)k 6(xtPlace)k
-480 12963(// @FigurePlace)m 480 12675(// @BodyT)m 26(e)k 6(xtPlace)k 480 12387(// @FigurePlace)m
-480 12099(// @BodyT)m 26(e)k 6(xtPlace)k 480 11811(...)m 240 fnt82
-0 11360(so)m 256(that)s 664(\207gures)s 1356(could)s 1935(alternate)s
-2802(with)s 3274(body)s 3798(te)s 3(xt)k 4202(do)s 6(wn)k
-4776(the)s 5114(column.)s 5986(Ho)s 6(we)k 6(v)k 3(er)k 9(,)k
-6935(some)s 7486(means)s 8138(w)s 2(as)k 8548(need)s
-8998(-)s 0 11072(ed)m 291(to)s 538(ensure)s 1226(that)s
-1652(in)s 1903(the)s 2259(absence)s 3080(of)s 3359(an)s 3(y)k
-3764(\207gures)s 4474(there)s 5015(could)s 5613(only)s 6101(be)s
-6391(one)s 220 fnt35 6801 11069(@BodyT)m 26(e)k 6(xtPlace)k
-240 fnt82 8527 11072(in)m 8778(the)s 0 10784(column,)m 831(since)s
-1385(otherwise)s 2377(v)s 6(arious)k 3132(problems)s 4080(arose,)s
-4698(for)s 5042(e)s 3(xample)k 5912(the)s 220 fnt35
-6267 10781(@NP)m 240 fnt82 6851 10784(symbol)m 7618(merely)s 8342(causing)s
-0 10496(a)m 174(skip)s 634(from)s 1167(one)s 220 fnt35
-1577 10493(@BodyT)m 26(e)k 6(xtPlace)k 240 fnt82 3303 10496(to)m
-3551(the)s 3907(ne)s 3(xt)k 4385(in)s 4636(the)s
-4992(same)s 5548(column,)s 6381(rather)s 7006(than)s 7483(to)s
-7730(the)s 8087(\207rst)s 8526(in)s 8778(the)s 0 10208(ne)m 3(xt)k
-490(column.)s 1394(Also,)s 1974(without)s 2787(this)s 3204(feature)s
-3944(the)s 4314(optimal)s 5120(page)s 5650(break)s 2(er')k 13(s)k
-6595(attempts)s 7477(to)s 7737(end)s 8163(a)s 8351(column)s
-0 9920(early)m 545(w)s 2(ould)k 1214(be)s 1510(frustrated)s
-2496(by)s 2805(Lout)s 3331(then)s 3814(disco)s 3(v)k 3(ering)k
-4991(that)s 5423(plenty)s 6090(of)s 6375(space)s 6976(e)s 3(xisted)k
-7722(at)s 7968(a)s 8149(follo)s 6(wing)k 220 fnt35
-0 9629(@BodyT)m 26(e)k 6(xtPlace)k 240 fnt82 1703 9632(in)m
-1931(the)s 2263(same)s 2795(column.)s 3662(The)s 4074(solution)s
-4887(is)s 5082(based)s 5669(on)s 220 fnt35 5951 9629(ABList)m
-240 fnt82 6625 9632(abo)m 3(v)k 3(e;)k 7287(each)s
-7767(occurrence)s 8855(of)s 220 fnt35 0 9341(@BodyT)m 26(e)k 6(xtPlace)k
-240 fnt82 1712 9344(after)m 2201(a)s 220 fnt35 2361 9341(@FigurePlace)m
-240 fnt82 3798 9344(is)m 4002(not)s 4361(re)s 6(v)k 3(ealed)k
-5213(in)s 5449(the)s 5791(enclosing)s 6754(de\207nition,)s 7772(and)s
-8169(so)s 8428(cannot)s 0 9056(be)m 282(found)s 899(by)s
-1193(body)s 1727(te)s 3(xt)k 2142(g)s 1(alle)k 3(ys)k
-2866(unless)s 3515(a)s 3682(\207gure)s 4296(has)s 4666(pre)s 6(viously)k
-5724(attached)s 6578(to)s 6817(the)s 7165(preceding)s 220 fnt35
-8162 9053(@Figure)m 240 fnt82 8998 9056(-)m 220 fnt35 0 8765(Place)m
-240 fnt82 540 8768(.)m 240 fnt84 0 8021(3.32.)m 591(The)s
-1046(cr)s 4(oss)k 1614(r)s 4(efer)k 4(ence)k
-2616(symbols)s 3494(&&)s 3941(and)s 4382(&&&)s 240 fnt82
-480 7544(The)m 941(cross)s 1516(reference)s 2493(symbol)s 220 fnt35
-3286 7541(&&)m 240 fnt82 3668 7544(tak)m 2(es)k 4241(the)s
-4623(name)s 5230(of)s 5534(a)s 5734(symbol)s 6527(\(not)s
-7006(an)s 7322(object\))s 8068(for)s 8439(its)s 8749(left)s
-0 7256(parameter)m 9(,)k 1068(and)s 1489(an)s 1788(object)s
-2449(whose)s 3134(v)s 6(alue)k 3718(must)s 4260(be)s
-4559(a)s 4741(simple)s 5451(w)s 2(ord,)k 6064(or)s
-6340(se)s 6(v)k 3(eral)k 7079(simple)s 7788(w)s 2(ords,)k
-8495(for)s 8850(its)s 0 6968(right)m 519(parameter)s 13(.)k
-1633(The)s 2069(result)s 2668(is)s 2887(a)s 3061(cross)s
-3612(reference,)s 4615(which)s 5265(may)s 5740(be)s 6030(thought)s
-6831(of)s 7111(as)s 7369(an)s 7661(arro)s 6(w)k
-8275(pointing)s 0 6680(from)m 524(the)s 872(cross)s 1414(reference)s
-2357(symbol)s 3117(to)s 3356(the)s 3704(be)s 3(ginning)k
-4712(of)s 4983(an)s 5266(in)s 9(v)k 4(ocation)k
-6320(of)s 6591(the)s 6939(named)s 7635(symbol.)s 480 6306(The)m
-894(in)s 9(v)k 4(ocation)k 1934(pointed)s 2696(to,)s
-2975(kno)s 6(wn)k 3665(as)s 3901(the)s 240 fnt83
-4235 6308(tar)m 8(g)k 2(et)k 240 fnt82 4846 6306(of)m
-5103(the)s 5437(cross)s 5965(reference,)s 6945(is)s 7141(generally)s
-8070(one)s 8458(whose)s 220 fnt35 0 6015(@T)m 26(ag)k
-240 fnt82 643 6018(parameter)m 1677(has)s 2067(v)s 6(alue)k
-2655(equal)s 3248(to)s 3507(the)s 3875(right)s 4406(parameter)s
-5440(of)s 5731(the)s 6099(cross)s 6661(reference)s 7624(symbol.)s
-8513(Three)s 0 5730(special)m 759(tags,)s 220 fnt35 1292 5727(preceding)m
-240 fnt82 2243 5730(,)m 220 fnt35 2391 5727(f)m 6(ollo)k 3(wing)k
-240 fnt82 3221 5730(,)m 3369(and)s 220 fnt35 3814 5727(f)m 6(oll_or_prec)k
-240 fnt82 4948 5730(,)m 5097(point)s 5690(respecti)s 6(v)k 3(ely)k
-6930(to)s 7210(the)s 7599(\207rst)s 8072(in)s 9(v)k 4(ocation)k
-0 5442(preceding)m 1006(the)s 1365(cross)s 1918(reference)s 2872(in)s
-3126(the)s 3485(\207nal)s 3976(printed)s 4721(document,)s 5783(to)s
-6033(the)s 6392(\207rst)s 6834(in)s 9(v)k 4(ocation)k
-7899(follo)s 6(wing)k 8887(it,)s 0 5154(and)m 404(to)s
-643(the)s 991(\207rst)s 1422(follo)s 6(wing)k 2399(it)s
-2591(if)s 2808(such)s 3304(e)s 3(xists)k 3896(else)s
-4323(to)s 4562(the)s 4910(\207rst)s 5341(preceding)s 6337(it.)s
-480 4780(A)m 709(cross)s 1249(reference)s 2190(may)s 2654(be)s
-2935(used)s 3430(in)s 3671(four)s 4127(w)s 2(ays:)k
-4782(where)s 5420(an)s 5701(object)s 6343(is)s 6552(e)s 3(xpected,)k
-7504(in)s 7745(which)s 8385(case)s 8850(its)s 0 4492(v)m 6(alue)k
-576(is)s 795(a)s 970(cop)s 2(y)k 1497(of)s
-1777(the)s 2134(tar)s 4(get;)k 2794(with)s 3285(the)s
-220 fnt35 3642 4489(@Open)m 240 fnt82 4457 4492(and)m 220 fnt35
-4870 4489(@Use)m 240 fnt82 5544 4492(symbols;)m 6463(with)s 6954(the)s
-220 fnt35 7311 4489(@T)m 26(agged)k 240 fnt82 8309 4492(symbol;)m
-0 4204(and)m 414(in)s 667(the)s 220 fnt35 1025 4201(into)m
-240 fnt82 1441 4204(clause)m 2105(or)s 220 fnt35 2374 4201(@T)m 26(arget)k
-240 fnt82 3271 4204(symbol)m 4041(of)s 4323(a)s 4499(g)s 1(alle)k 3(y)k
-5143(de\207nition,)s 6177(in)s 6430(which)s 7083(case)s 7560(the)s
-7918(v)s 6(alue)k 8496(of)s 8778(the)s 0 3916(tag)m
-345(must)s 870(be)s 220 fnt35 1152 3913(preceding)m 240 fnt82
-2103 3916(,)m 220 fnt35 2210 3913(f)m 6(ollo)k 3(wing)k
-240 fnt82 3040 3916(,)m 3147(or)s 220 fnt35 3406 3913(f)m 6(oll_or_prec)k
-240 fnt82 4540 3916(.)m 480 3542(W)m 9(ithin)k 1233(an)s
-220 fnt35 1557 3539(into)m 240 fnt82 2004 3542(clause)m 2698(or)s
-220 fnt35 2999 3539(@T)m 26(arget)k 240 fnt82 3927 3542(symbol,)m
-4780(the)s 5169(alternati)s 6(v)k 3(e)k 6265(form)s
-220 fnt35 6830 3539(&&&)m 240 fnt82 7365 3542(is)m 7616(acceptable)s
-8722(and)s 0 3254(indicates)m 900(a)s 1066(forcing)s 1809(g)s 1(alle)k 3(y)k
-2443(\(Section)s 3296(2.7\).)s 480 2880(Except)m 1203(within)s 1870(an)s
-220 fnt35 2151 2877(into)m 240 fnt82 2556 2880(clause)m 3208(or)s
-220 fnt35 3465 2877(@T)m 26(arget)k 240 fnt82 4351 2880(symbol,)m
-5162(the)s 5508(symbol)s 6267(referred)s 7078(to)s 7315(must)s
-7839(ha)s 4(v)k 3(e)k 8339(a)s 220 fnt35
-8503 2877(@T)m 26(ag)k 240 fnt82 0 2592(parameter)m 13(.)k
-1100(This)s 1570(is)s 1775(so)s 2035(e)s 6(v)k 3(en)k
-2530(if)s 2741(the)s 3084(right)s 3589(parameter)s 4597(of)s
-4863(the)s 5205(cross)s 5742(reference)s 6679(is)s 220 fnt35
-6884 2589(preceding)m 240 fnt82 7835 2592(,)m 220 fnt35 7936 2589(f)m 6(ollo)k 3(wing)k
-240 fnt82 8766 2592(,)m 8867(or)s 220 fnt35 0 2301(f)m 6(oll_or_prec)k
-240 fnt82 1134 2304(.)m 240 fnt84 0 1515(3.33.)m 591(@T)s 22(agged)k
-240 fnt82 480 1038(The)m 220 fnt35 924 1035(@T)m 26(agged)k
-240 fnt82 1929 1038(symbol)m 2705(tak)s 2(es)k 3261(a)s
-3444(cross)s 4002(reference)s 4961(for)s 5315(its)s 5607(left)s
-6001(parameter)s 7031(and)s 7451(an)s 7750(object,)s 8458(whose)s
-0 750(v)m 6(alue)k 565(must)s 1087(be)s 1366(a)s
-1528(juxtaposition)s 2831(of)s 3099(simple)s 3788(w)s 2(ords,)k
-4475(or)s 4731(se)s 6(v)k 3(eral)k 5450(w)s 2(ords,)k
-6136(or)s 6392(an)s 6672(empty)s 7320(object,)s 8008(for)s
-8343(its)s 8615(right)s 0 462(parameter)m 13(.)k 1104(It)s
-1307(has)s 1675(the)s 2021(ef)s 6(fect)k 2615(of)s
-2885(attaching)s 3812(its)s 4086(right)s 4595(parameter)s 5607(as)s
-5856(an)s 6137(additional)s 7146(tag)s 7489(to)s 7726(the)s
-8072(in)s 9(v)k 4(ocation)k 0 174(denoted)m 819(by)s
-1117(its)s 1397(left)s 1778(parameter)s 9(,)k 2834(unless)s
-3487(the)s 3839(right)s 4353(parameter)s 5371(is)s 5585(empty)s 15(,)k
-6279(in)s 6526(which)s 7172(case)s 220 fnt35 7643 171(@T)m 26(agged)k
-240 fnt82 8636 174(does)m
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 60 66
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Times-Italic
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-0 LoutMargSet
-grestore
-240 fnt84 0 13840(60)m 240 fnt83 6081 13843(Chapter)m 6931(3.)s
-7205(Pr)s 8(ede\207ned)k 8300(symbols)s 240 fnt82 0 13205(nothing.)m
-896(The)s 1324(result)s 1914(of)s 220 fnt35 2185 13202(@T)m 26(agged)k
-240 fnt82 3174 13205(is)m 3384(al)s 2(w)k 2(ays)k
-220 fnt35 4095 13202(@Null)m 240 fnt82 4680 13205(,)m 4787(which)s
-5429(mak)s 2(es)k 6089(it)s 6281(ef)s 6(fecti)k 6(v)k 3(ely)k
-7340(in)s 9(visible.)k 240 fnt84 0 12412(3.34.)m 591(@Open and @Use)s
-240 fnt82 480 11935(The)m 220 fnt35 904 11932(@Open)m 240 fnt82
-1706 11935(symbol)m 2462(tak)s 2(es)k 2998(a)s 3159(cross)s
-3697(reference)s 4636(or)s 4891(symbol)s 5647(in)s 9(v)k 4(ocation)k
-6696(for)s 7030(its)s 7302(left)s 7675(parameter)s 9(,)k
-8722(and)s 0 11647(an)m 269(arbitrary)s 1130(object,)s 1807(which)s
-2435(must)s 2946(be)s 3214(enclosed)s 4095(in)s 4324(braces,)s
-5027(for)s 5351(its)s 5613(right)s 6110(parameter)s 13(.)k
-7201(The)s 7615(right)s 8112(parameter)s 0 11359(may)m 462(refer)s
-966(to)s 1201(the)s 1544(e)s 3(xported)k 2432(parameters)s
-3525(and)s 3925(nested)s 4589(de\207nitions)s 5646(of)s 5912(the)s
-6256(in)s 9(v)k 4(ocation)k 7305(denoted)s 8117(by)s
-8406(the)s 8749(left)s 0 11071(parameter)m 9(,)k 1050(and)s
-1452(its)s 1725(v)s 6(alue)k 2291(is)s 2499(the)s
-220 fnt35 2844 11068(@Open)m 240 fnt82 3648 11071(symbol')m 13(s)k
-4560(result.)s 5252(The)s 5678(tar)s 4(get)k 6274(of)s
-6543(the)s 6889(cross)s 7428(reference)s 8369(may)s 8832(lie)s
-0 10783(in)m 234(an)s 507(e)s 3(xternal)k 1318(database)s
-2187(\(Section)s 3031(3.35\).)s 3684(An)s 3(y)k 4138(symbol)s
-4888(a)s 4(v)k 6(ailable)k 5787(outside)s 6524(the)s
-220 fnt35 6862 10780(@Open)m 240 fnt82 7658 10783(which)m 8290(happens)s
-0 10495(to)m 239(ha)s 4(v)k 3(e)k 741(the)s
-1089(same)s 1637(name)s 2212(as)s 2462(one)s 2865(of)s
-3137(the)s 3485(symbols)s 4335(made)s 4910(a)s 4(v)k 6(ailable)k
-5818(by)s 6113(the)s 220 fnt35 6462 10492(@Open)m 240 fnt82
-7268 10495(will)m 7695(be)s 7978(una)s 4(v)k 6(ailable)k
-0 10207(within)m 668(the)s 220 fnt35 1016 10204(@Open)m 240 fnt82
-1762 10207(.)m 538 9833(The)m 220 fnt35 963 9830(@Use)m 240 fnt82
-1625 9833(symbol)m 2382(is)s 2589(an)s 220 fnt35 2869 9830(@Open)m
-240 fnt82 3672 9833(symbol)m 4429(in)s 4669(a)s 4832(dif)s 6(ferent)k
-5704(form.)s 6329(It)s 6531(may)s 6994(only)s 7471(appear)s
-8165(among)s 8867(or)s 0 9545(after)m 502(the)s 857(de\207nitions)s
-1925(in)s 2175(Lout')s 13(s)k 2844(input,)s 3450(and)s
-3861(it)s 4060(is)s 4277(equi)s 6(v)k 6(alent)k
-5328(to)s 5574(enclosing)s 6551(the)s 6906(remainder)s 7941(of)s
-8219(the)s 8574(input)s 0 9257(in)m 243(an)s 220 fnt35
-526 9254(@Open)m 240 fnt82 1332 9257(symbol.)m 2201(F)s 3(or)k
-2590(e)s 3(xample,)k 240 fnt83 480 8754(de\207nitions)m 220 fnt35
-480 8461(@Use)m 1145({)s 240 fnt83 1269 8466(x)m 220 fnt35
-1435 8461(})m 480 8173(@Use)m 1145({)s 240 fnt83 1269 8178(y)m
-220 fnt35 1431 8173(})m 240 fnt83 480 7890(r)m 8(est)k
-894(of)s 1175(input)s 240 fnt82 0 7389(is)m 210(equi)s 6(v)k 6(alent)k
-1254(to)s 240 fnt83 480 6886(de\207nitions)m 480 6598(x)m 220 fnt35
-646 6593(@Open)m 480 6305({)m 240 fnt83 960 6310(y)m 220 fnt35
-1122 6305(@Open)m 960 6017({)m 240 fnt83 1084 6022(r)m 8(est)k
-1498(of)s 1779(input)s 220 fnt35 960 5729(})m 480 5441(})m
-240 fnt82 0 4947(The)m 220 fnt35 424 4944(@Use)m 240 fnt82
-1085 4947(symbol)m 1841(allo)s 6(ws)k 2506(a)s 2668(set)s
-2989(of)s 3256(standard)s 4120(packages)s 5044(to)s 5279(be)s
-5557(opened)s 6303(without)s 7090(the)s 7434(incon)s 9(v)k 3(enience)k
-8855(of)s 0 4659(enclosing)m 974(the)s 1327(entire)s 1931(document)s
-2939(in)s 220 fnt35 3187 4656(@Open)m 240 fnt82 3998 4659(symbols.)m
-4964(Such)s 5505(enclosure)s 6482(could)s 7076(cause)s 7668(Basser)s
-8370(Lout)s 8887(to)s 0 4371(run)m 376(out)s 742(of)s
-1013(memory)s 15(.)k 240 fnt84 0 3578(3.35.)m 591(@Database and @SysDatabase)s
-240 fnt82 529 3101(The)m 220 fnt35 945 3098(@Database)m 240 fnt82
-2148 3101(symbol)m 2896(is)s 3095(used)s 3580(to)s 3808(declare)s
-4541(the)s 4877(e)s 3(xistence)k 5808(of)s 6067(a)s
-6222(\207le)s 6571(of)s 6831(symbol)s 7579(in)s 9(v)k 4(ocations)k
-8708(that)s 0 2813(Lout)m 512(may)s 978(refer)s 1487(to)s
-1726(when)s 2302(e)s 6(v)k 6(aluating)k 3339(cross)s
-3881(references.)s 5025(In)s 5281(Basser)s 5978(Lout,)s 6537(for)s
-6875(e)s 3(xample,)k 220 fnt35 480 2312(@Database @Months @W)m 6(eekDa)k 6(ys { standard })k
-240 fnt82 0 1814(means)m 690(that)s 1137(there)s 1698(is)s
-1937(a)s 2131(\207le)s 2521(called)s 220 fnt35 3177 1811(standard.ld)m
-240 fnt82 4339 1814(containing)m 5430(in)s 9(v)k 4(ocations)k
-6600(of)s 6899(the)s 7276(pre)s 6(viously)k 8363(de\207ned)s
-0 1526(symbols)m 220 fnt35 846 1523(@Months)m 240 fnt82 1838 1526(and)m
-220 fnt35 2238 1523(@W)m 6(eekDa)k 6(ys)k 240 fnt82
-3503 1526(.)m 3663(A)s 220 fnt35 3889 1523(@Database)m 240 fnt82
-5100 1526(symbol)m 5856(may)s 6318(appear)s 7011(an)s 3(ywhere)k
-7990(a)s 8152(de\207nition)s 0 1238(or)m 252(a)s 220 fnt35
-411 1235(@Use)m 240 fnt82 1069 1238(symbol)m 1822(may)s 2281(appear)s 13(.)k
-3062(Dif)s 6(ferent)k 3982(de\207nitions)s 5036(packages)s 5957(may)s
-6416(refer)s 6918(to)s 7150(a)s 7309(common)s 8196(database,)s
-0 950(pro)m 3(vided)k 935(the)s 1312(de\207nitions)s 2402(the)s 3(y)k
-2894(gi)s 6(v)k 3(e)k 3382(for)s 3749(its)s
-4054(symbols)s 4932(are)s 5308(compatible.)s 6563(An)s 6942(entry)s
-7516(is)s 7755(interpreted)s 8876(as)s 0 662(though)m 756(it)s
-981(appears)s 1795(at)s 2060(the)s 2441(point)s 3026(where)s
-3699(the)s 4080(cross)s 4655(reference)s 5631(that)s 6082(retrie)s 6(v)k 3(es)k
-6978(it)s 7203(does,)s 7782(which)s 8457(allo)s 6(ws)k
-0 374(symbols)m 866(lik)s 2(e)k 220 fnt35 1296 371(@I)m
-240 fnt82 1639 374(for)m 220 fnt35 1995 371(Slope @F)m 6(ont)k
-240 fnt82 3346 374(to)m 3602(be)s 3902(used)s 4417(in)s
-4678(databases.)s 5776(The)s 6221(database)s 7118(\207le)s 7497(may)s
-7981(not)s 8365(contain)s
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 61 67
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Italic
-%%+ font Times-Bold
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-1 LoutMargSet
-grestore
-240 fnt83 0 13843(3.35.)m 574(@Database and @SysDatabase)s 240 fnt84 8839 13840(61)m
-220 fnt35 0 13202(@Database)m 240 fnt82 1214 13205(or)m 220 fnt35
-1473 13202(@Include)m 240 fnt82 2455 13205(symbols,)m 3360(and)s 3764(each)s
-4259(in)s 9(v)k 4(ocation)k 5313(within)s 5981(it)s
-6173(must)s 6698(be)s 6980(enclosed)s 7875(in)s 8118(braces.)s
-480 12831(Basser)m 1198(Lout)s 1732(constructs)s 2773(an)s 240 fnt83
-3078 12833(inde)m 4(x)k 3674(\207le)s 240 fnt82 3959 12831(,)m
-4087(which)s 4751(in)s 5016(this)s 5433(e)s 3(xample)k
-6318(is)s 6550(called)s 220 fnt35 7199 12828(standard.li)m 240 fnt82
-8196 12831(,)m 8325(the)s 8695(\207rst)s 0 12543(time)m 481(it)s
-675(e)s 6(v)k 3(er)k 1139(encounters)s 2227(the)s
-2577(database,)s 3509(as)s 3761(an)s 4045(aid)s 4397(to)s
-4638(searching)s 5608(it.)s 5906(If)s 6138(the)s 6488(database)s
-7368(\207le)s 7731(is)s 7943(changed,)s 8850(its)s 0 12255(inde)m 3(x)k
-586(\207le)s 950(must)s 1477(be)s 1762(deleted)s 2512(by)s
-2809(the)s 3159(user)s 3620(so)s 3888(that)s 4309(Basser)s
-5008(Lout)s 5523(kno)s 6(ws)k 6196(to)s 6438(reconstruct)s
-7561(it.)s 7860(There)s 8475(is)s 8688(also)s 0 11967(an)m
-300(installation)s 1435(option)s 2121(which)s 2780(allo)s 6(ws)k
-3466(this)s 3879(deletion)s 4723(to)s 4979(be)s 5278(done)s
-5817(automatically)s 7188(on)s 7502(suitable)s 8318(systems)s 0 11679(\(including)m
-1036(Unix\).)s 480 11305(Basser)m 1210(Lout)s 1756(searches)s 2649(for)s
-3021(databases)s 4021(in)s 4298(the)s 4679(current)s 5449(directory)s
-6398(\207rst,)s 6910(then)s 7412(in)s 7689(a)s 7888(sequence)s
-8855(of)s 0 11017(standard)m 868(places.)s 1629(T)s 19(o)k
-1929(search)s 2596(the)s 2944(standard)s 3812(places)s 4460(only)s 15(,)k
-4978(use)s 220 fnt35 5353 11014(@SysDatabase)m 240 fnt82 6873 11017(.)m
-240 fnt84 0 10224(3.36.)m 591(@Graphic)s 240 fnt82 556 9747(Lout)m
-1084(does)s 1590(not)s 1972(pro)s 3(vide)k 2772(the)s
-3136(v)s 6(ast)k 3592(repertoire)s 4591(of)s 4878(graphical)s
-5838(objects)s 6582(\(lines,)s 7235(circles,)s 7980(box)s 3(es,)k
-8660(etc.\))s 0 9459(required)m 846(by)s 1132(diagrams.)s 2163(Instead,)s
-2952(it)s 3135(pro)s 3(vides)k 3999(an)s 4274(escape)s
-4958(route)s 5497(to)s 5727(some)s 6280(other)s 6823(language)s
-7734(that)s 8144(does)s 8625(ha)s 4(v)k 3(e)k
-0 9171(these)m 547(features,)s 1409(via)s 1761(its)s 220 fnt35
-2037 9168(@Gr)m 2(aphic)k 240 fnt82 3081 9171(symbol:)m 220 fnt35
-480 8673({ 0 0 mo)m 3(v)k 5(eto)k 480 8385( 0 ysiz)m 3(e lineto)k
-480 8097( xsiz)m 3(e ysiz)k 3(e lineto)k 480 7809( xsiz)m 3(e 0 lineto)k
-480 7521( closepath)m 480 7233( strok)m 4(e)k 480 6945(})m 480 6657(@Gr)m 2(aphic)k
-480 6369({ //0.2c)m 480 6081( ||0.2c hello)m 8(, w)k 2(or)k -3(ld ||0.2c)k
-480 5793( //0.2c)m 480 5505(})m 240 fnt82 0 5011(The)m 428(result)s
-1018(of)s 1289(the)s 1637(abo)s 3(v)k 3(e)k
-2259(in)s 9(v)k 4(ocation)k 3313(of)s 3584(the)s
-3932(symbol)s 220 fnt35 4692 5008(@Gr)m 2(aphic)k 240 fnt82
-5736 5011(is)m 1365 422 0 422 240 288 60 480 4249 LoutGr2
-0 0 moveto
-0 ysize lineto
-xsize ysize lineto
-xsize 0 lineto
-closepath
-stroke
-grestore
-113 146(hello,)m 698(w)s 2(orld)k
-grestore
-480 3533(The)m
-909(right)s 1421(parameter)s 2437(al)s 2(w)k 2(ays)k
-3149(appears)s 3931(as)s 4183(part)s 4615(of)s 4888(the)s
-5237(result,)s 5875(and)s 6281(indeed)s 6978(the)s 7327(result)s
-7919(is)s 8130(al)s 2(w)k 2(ays)k 8843(an)s
-0 3245(object)m 651(whose)s 1327(size)s 1761(is)s 1979(identical)s
-2863(to)s 3110(the)s 3465(size)s 3900(of)s 4178(the)s
-4534(right)s 5052(parameter)s 6074(with)s 220 fnt35 6563 3242(@OneCol)m
-240 fnt82 7583 3245(and)m 220 fnt35 7995 3242(@OneRo)m 3(w)k
-240 fnt82 0 2957(applied)m 762(to)s 1001(it.)s 1297(From)s
-1875(no)s 6(w)k 2336(on)s 2633(we)s 2968(refer)s
-3477(to)s 3716(this)s 4112(part)s 4543(of)s 4814(the)s
-5162(result)s 5752(as)s 6002(the)s 240 fnt83 6350 2959(base)m
-240 fnt82 6782 2957(.)m 480 2583(The)m 898(left)s 1264(parameter)s
-2267(is)s 2466(implementation-dependent:)s 5184(that)s 5591(is,)s 5847(its)s
-6112(meaning)s 6978(is)s 7177(not)s 7532(de\207ned)s 8284(by)s
-8567(Lout,)s 0 2295(and)m 421(dif)s 6(ferent)k 1313(implementations)s
-2975(could)s 3582(require)s 4332(dif)s 6(ferent)k 5224(v)s 6(alues)k
-5898(for)s 6253(it.)s 6567(The)s 7012(follo)s 6(wing)k
-8007(description)s 0 2007(applies)m 752(to)s 1016(Basser)s 1737(Lout,)s
-2321(which)s 2988(uses)s 3475(the)s 3848(PostScript)s 4914(page)s
-5447(description)s 6591(language)s 7535([1)s 7709(].)s 7977(Similar)s
-8764(b)s 4(ut)k 0 1719(more)m 559(restricted)s 1517(possibilities)s
-2722(e)s 3(xist)k 3243(with)s 3737(the)s 4098(PDF)s
-4608(back)s 5134(end)s 5550(\(see)s 6003(a)s 6182(separate)s
-7033(document)s 8050(distrib)s 4(uted)k 0 1431(with)m 482(Lout\);)s
-1125(to)s 1364(include)s 2124(both,)s 2657(use)s 3032(the)s
-220 fnt35 3380 1428(@Bac)m 4(kEnd)k 240 fnt82 4525 1431(symbol)m
-5285(lik)s 2(e)k 5697(this:)s
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 62 68
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Times-Italic
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-0 LoutMargSet
-grestore
-240 fnt84 0 13840(62)m 240 fnt83 6081 13843(Chapter)m 6931(3.)s
-7205(Pr)s 8(ede\207ned)k 8300(symbols)s 220 fnt35 480 13207({ @Bac)m 4(kEnd @Case {)k
-480 12919( P)m 11(ostScr)k -3(ipt @Y)k 4(ield)k 480 12631( {)m
-480 12343( ...)m 480 12055( })m 480 11767( PDF @Y)m 4(ield)k 480 11479( {)m
-480 11191( ...)m 480 10903( })m 480 10615( })m 480 10327( @Gr)m 2(aphic)k
-480 10039( {)m 480 9751( ...)m 480 9463( })m 480 9175(})m 240 fnt82
-0 8681(Returning)m 1039(to)s 1307(PostScript,)s 2425(the)s 2802(left)s
-3208(parameter)s 4251(refers)s 4874(to)s 5142(a)s 5337(coordinate)s
-6431(system)s 7184(whose)s 7881(origin)s 8538(is)s 8778(the)s
-0 8393(bottom)m 773(left-hand)s 1728(corner)s 2433(of)s 2740(the)s
-3123(base.)s 3747(It)s 3987(may)s 4489(use)s 4899(the)s
-5282(symbols)s 220 fnt35 6166 8390(xsiz)m 3(e)k 240 fnt82
-6751 8393(and)m 220 fnt35 7190 8390(ysiz)m 3(e)k 240 fnt82
-7774 8393(to)m 8048(denote)s 8778(the)s 0 8105(horizontal)m 1031(and)s
-1442(v)s 3(ertical)k 2216(size)s 2650(of)s 2928(the)s
-3283(base;)s 3827(similarly)s 15(,)k 220 fnt35 4774 8102(xmar)m -3(k)k
-240 fnt82 5442 8105(and)m 220 fnt35 5853 8102(ymar)m -3(k)k
-240 fnt82 6521 8105(denote)m 7222(the)s 7577(positions)s 8499(of)s
-8778(the)s 0 7817(base')m 13(s)k 635(column)s 1410(and)s
-1814(ro)s 6(w)k 2234(marks:)s gsave
-480 5454 translate
-180 fnt82 3570 2072 0 1994 180 288 45 LoutGraphic
-gsave
-grestore save gsave 200 dict begin lfigdict begin
-grestore
-180 fnt83 107 1955(ysize)m
-0 1388(ymark)m 180 fnt82 364 253(0)m 2551 1701 850 1134 180 288 45 676 293 LoutGr2
-grestore save gsave 200 dict begin lfigdict begin
-grestore
-2551 1701 850 1134 180 288 45 0 0 LoutGr2
-/lfiglightgrey [ lfigbox ] gsave lfigpaintpath grestore
-0.015 cm setlinewidth lfiground setlinecap
-0.15 cm /lfigsolid [ lfigbox ] lfigdopath
-pop pop
-grestore
-2551 1701 850 1134 180 288 45 0 0 LoutGr2
-
-0.015 cm setlinewidth lfiground setlinecap
-0.15 cm /lfigdashed [ -0.3 cm ymark
-xsize ymark 0.3 cm 0 lfigpadd []
-xmark -0.3 cm
-xmark ysize 0 0.3 cm lfigpadd ] lfigdopath
-pop pop
-grestore
-
-grestore
-
-grestore
-end end restore
-grestore
-676 14(0)m 180 fnt83
-1526 15(xmark)m 3227(xsize)s end end restore
-grestore
-0 5003(In)m 265(addition)s 1115(to)s
-1363(these)s 1920(four)s 2387(symbols)s 3245(and)s 3658(0,)s
-3895(lengths)s 4646(may)s 5121(be)s 5412(denoted)s 6238(in)s
-6490(centimetres,)s 7706(inches,)s 8434(points,)s 0 4715(ems,)m 492(f)s -13(')k 13(s,)k
-850(v')s 13(s)k 1180(and)s 1584(s')s 13(s)k
-1887(using)s 2459(the)s 2807(notation)s 240 fnt83 480 4179(l)m
-220 fnt35 666 4174(cm)m 240 fnt82 1197 4177(instead)m 1932(of)s
-2203(Lout')s 13(s)k 240 fnt83 3045 4179(l)m 240 fnt82
-3111 4177(c)m 240 fnt83 480 3891(l)m 220 fnt35 666 3886(in)m
-240 fnt82 1197 3889(instead)m 1932(of)s 2203(Lout')s 13(s)k
-240 fnt83 3045 3891(l)m 240 fnt82 3111 3889(i)m 240 fnt83
-480 3603(l)m 220 fnt35 666 3598(pt)m 240 fnt82 1197 3601(instead)m
-1932(of)s 2203(Lout')s 13(s)k 240 fnt83 3045 3603(l)m
-240 fnt82 3111 3601(p)m 240 fnt83 480 3315(l)m 220 fnt35
-666 3310(em)m 240 fnt82 1197 3313(instead)m 1932(of)s 2203(Lout')s 13(s)k
-240 fnt83 3045 3315(l)m 240 fnt82 3111 3313(m)m 240 fnt83
-480 3027(l)m 220 fnt35 666 3022(ft)m 240 fnt82 1197 3025(instead)m
-1932(of)s 2203(Lout')s 13(s)k 240 fnt83 3045 3027(l)m
-240 fnt82 3111 3025(f)m 240 fnt83 480 2739(l)m 220 fnt35
-666 2734(vs)m 240 fnt82 1197 2737(instead)m 1932(of)s 2203(Lout')s 13(s)k
-240 fnt83 3045 2739(l)m 240 fnt82 3111 2737(v)m 240 fnt83
-480 2451(l)m 220 fnt35 666 2446(sp)m 240 fnt82 1197 2449(instead)m
-1932(of)s 2203(Lout')s 13(s)k 240 fnt83 3045 2451(l)m
-240 fnt82 3111 2449(s)m 0 1908(Note)m 521(that)s 939(there)s
-1472(must)s 1997(be)s 2279(a)s 2445(space)s 3032(between)s
-3886(the)s 4234(number)s 5025(and)s 5429(its)s 5705(unit,)s
-6184(unlik)s 2(e)k 6836(Lout)s 7348(proper)s 13(.)k
-480 1534(A)m 732(point)s 1306(within)s 1996(the)s 2366(base)s
-2869(\(and,)s 3423(with)s 3927(care,)s 4453(a)s 4642(point)s
-5216(outside)s 5985(it\))s 6267(may)s 6755(be)s 7059(denoted)s
-7897(by)s 8213(a)s 8401(pair)s 8855(of)s 0 1246(lengths.)m
-855(F)s 3(or)k 1244(e)s 3(xample,)k 220 fnt35
-480 749(xmar)m -3(k ymar)k -3(k)k 240 fnt82 0 251(is)m
-210(the)s 558(point)s 1110(where)s 1750(the)s 2098(marks)s
-2733(cross,)s 3331(and)s
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 63 69
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Italic
-%%+ font Times-Bold
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-1 LoutMargSet
-grestore
-240 fnt83 0 13843(3.36.)m 574(@Gr)s 3(aphic)k 240 fnt84
-8833 13840(63)m 220 fnt35 480 13214(0 2 cm)m 240 fnt82 0 12759(is)m
-195(a)s 346(point)s 883(on)s 1164(the)s 1497(left)s
-1859(edge,)s 2402(tw)s 2(o)k 2797(centimetres)s 3933(abo)s 3(v)k 3(e)k
-4539(the)s 4872(bottom)s 5595(left-hand)s 6499(corner)s 13(.)k
-7245(These)s 7857(tw)s 2(o)k 8251(numbers)s 0 12471(are)m
-347(called)s 975(the)s 240 fnt83 1323 12473(x)m 1489(coor)s 8(dinate)k
-240 fnt82 2571 12471(and)m 2975(the)s 240 fnt83 3323 12473(y)m
-3485(coor)s 8(dinate)k 240 fnt82 4567 12471(of)m 4838(the)s
-5186(point.)s 480 12097(The)m 906(\207rst)s 1335(step)s 1770(in)s
-2011(specifying)s 3057(a)s 3221(graphic)s 3988(object)s 4630(is)s
-4837(to)s 5074(de\207ne)s 5712(a)s 240 fnt83 5876 12099(path)m
-240 fnt82 6297 12097(.)m 6458(A)s 6686(path)s 7152(can)s
-7539(be)s 7818(thought)s 8608(of)s 8876(as)s 0 11809(the)m
-349(track)s 888(of)s 1161(a)s 1328(pen)s 1733(mo)s 3(ving)k
-2516(o)s 3(v)k 3(er)k 2996(the)s 3346(page.)s
-3963(The)s 4393(pen)s 4797(may)s 5265(be)s 5548(up)s
-5842(\(not)s 6289(dra)s 3(wing\))k 7199(or)s 7460(do)s 6(wn)k
-8045(\(dra)s 3(wing)k 8960(a)s 0 11521(line)m 414(or)s
-673(curv)s 3(e\))k 1329(as)s 1579(it)s 1771(mo)s 3(v)k 3(es.)k
-2554(The)s 2982(entire)s 3581(path)s 4050(is)s 4260(a)s
-4426(sequence)s 5359(of)s 5630(the)s 5978(follo)s 6(wing)k
-6955(items:)s 240 fnt83 1847 11149(x)m 2013(y)s 220 fnt35
-2175 11144(mo)m 3(v)k 5(eto)k 240 fnt82 3120 11147(Lift)m
-3537(the)s 3885(pen)s 4288(and)s 4692(mo)s 3(v)k 3(e)k
-5274(it)s 5466(to)s 5705(the)s 6053(indicated)s 6987(point.)s
-240 fnt83 2036 10790(x)m 2202(y)s 220 fnt35 2364 10785(lineto)m
-240 fnt82 3120 10788(Put)m 3557(the)s 3963(pen)s 4424(do)s 6(wn)k
-5066(and)s 5528(dra)s 3(w)k 6115(a)s 6339(straight)s
-7173(line)s 7645(to)s 7942(the)s 8348(indicat)s 8998(-)s
-3120 10500(ed)m 3404(point.)s 240 fnt83 702 10141(x)m 868(y)s
-1030(r)s 1188(angle1)s 1879(angle2)s 220 fnt35 2580 10136(arc)m
-240 fnt82 3120 10139(Put)m 3502(the)s 3853(pen)s 4259(do)s 6(wn)k
-4846(and)s 5253(dra)s 3(w)k 5785(a)s 5954(circular)s
-6745(arc)s 7092(whose)s 7763(centre)s 8405(has)s 8779(co)s
-8998(-)s 3120 9851(ordinates)m 240 fnt83 4058 9853(x)m 240 fnt82
-4235 9851(and)m 240 fnt83 4650 9853(y)m 240 fnt82 4823 9851(and)m
-5238(whose)s 5917(radius)s 6563(is)s 240 fnt83 6784 9853(r)m
-240 fnt82 6882 9851(.)m 7057(The)s 7496(arc)s 7851(be)s 3(gins)k
-8535(at)s 8778(the)s 3120 9563(angle)m 240 fnt83 3727 9565(angle1)m
-240 fnt82 4451 9563(measuring)m 5533(counterclockwise)s 7295(from)s 7852(the)s
-8233(point)s 8818(di)s 8998(-)s 3120 9275(rectly)m 3714(to)s
-3949(the)s 4294(right)s 4801(of)s 5069(the)s 5413(centre,)s
-6100(and)s 6500(proceeds)s 7397(counterclockwise)s 3120 8987(to)m 240 fnt83
-3361 8989(angle2)m 240 fnt82 4002 8987(.)m 4168(If)s 4401(the)s
-4751(arc)s 5098(is)s 5310(not)s 5679(the)s 6029(\207rst)s
-6462(thing)s 7010(on)s 7309(the)s 7660(path,)s 8181(a)s
-8350(straight)s 3120 8699(line)m 3549(will)s 3990(be)s 4287(dra)s 3(wn)k
-4954(connecting)s 6072(the)s 6435(current)s 7186(point)s 7753(to)s
-8007(the)s 8370(start)s 8855(of)s 3120 8411(the)m 3468(arc.)s
-240 fnt83 589 8102(x)m 755(y)s 917(r)s 1075(angle1)s
-1766(angle2)s 220 fnt35 2467 8097(arcn)m 240 fnt82 3120 8100(As)m
-3437(for)s 3775(arc,)s 4173(b)s 4(ut)k 4535(the)s
-4883(arc)s 5227(goes)s 5717(clockwise)s 6729(from)s 240 fnt83
-7253 8102(angle1)m 240 fnt82 7944 8100(to)m 240 fnt83 8183 8102(angle2)m
-240 fnt82 8824 8100(.)m 220 fnt35 1955 7738(closepath)m 240 fnt82
-3120 7741(Dra)m 3(w)k 3702(a)s 3868(straight)s 4644(line)s
-5058(back)s 5571(to)s 5810(the)s 6158(point)s 6710(most)s
-7235(recently)s 8058(mo)s 3(v)k 3(ed)k 8762(to.)s
-0 7367(The)m 428(\207rst)s 860(item)s 1344(should)s 2042(al)s 2(w)k 2(ays)k
-2753(be)s 3036(a)s 220 fnt35 3202 7364(mo)m 3(v)k 5(eto)k
-240 fnt82 3907 7367(,)m 220 fnt35 4015 7364(arc)m 240 fnt82
-4315 7367(,)m 4422(or)s 220 fnt35 4682 7364(arcn)m 240 fnt82
-5095 7367(.)m 5259(It)s 5465(should)s 6162(be)s 6445(clear)s
-6968(from)s 7493(this)s 7889(that)s 8308(the)s 8657(path)s
-0 7079(gi)m 6(v)k 3(en)k 580(earlier:)s 220 fnt35
-480 6585(0 0 mo)m 3(v)k 5(eto)k 480 6297(0 ysiz)m 3(e lineto)k
-480 6009(xsiz)m 3(e ysiz)k 3(e lineto)k 480 5721(xsiz)m 3(e 0 lineto)k
-480 5433(closepath)m 240 fnt82 0 4937(traces)m 607(around)s 1330(the)s
-1678(boundary)s 2637(of)s 2908(the)s 3256(base)s 3737(with)s
-4219(the)s 4567(pen)s 4970(do)s 6(wn.)k 480 4563(Once)m
-1039(a)s 1203(path)s 1670(is)s 1877(set)s 2200(up,)s
-2545(we)s 2877(are)s 3222(ready)s 3805(to)s 240 fnt83
-4041 4565(paint)m 240 fnt82 4595 4563(it)m 4785(onto)s 5262(the)s
-5607(page.)s 6221(There)s 6832(are)s 7176(tw)s 2(o)k
-7584(choices:)s 8405(we)s 8737(can)s 0 4275(either)m 240 fnt83
-618 4277(str)m 10(ok)k 2(e)k 240 fnt82 1259 4275(it,)m
-1514(which)s 2172(means)s 2850(to)s 3105(display)s 3866(it)s
-4074(as)s 4340(described;)s 5383(or)s 5658(we)s 6009(can)s
-240 fnt83 6414 4277(\207ll)m 240 fnt82 6742 4275(it,)m 6997(which)s
-7655(means)s 8333(to)s 8588(paint)s 0 3987(e)m 6(v)k 3(erything)k
-1067(inside)s 1694(it)s 1886(gre)s 3(y)k 2362(or)s
-2621(black.)s 3303(F)s 3(or)k 3692(stroking)s 4529(the)s
-4877(tw)s 2(o)k 5287(main)s 5822(options)s 6578(are)s
-240 fnt83 1581 3484(length)m 220 fnt35 2234 3479(setline)m 4(width)k
-240 fnt82 3600 3482(The)m 4028(pen)s 4431(will)s 4857(dra)s 3(w)k
-5386(lines)s 5888(of)s 6159(the)s 6507(gi)s 6(v)k 3(en)k
-7087(width.)s 220 fnt35 1553 2974([)m 240 fnt83 1668 2979(length)m
-220 fnt35 2321 2974(])m 2430(0)s 2605(setdash)s 240 fnt82
-3600 2977(The)m 4034(pen)s 4444(will)s 4876(dra)s 3(w)k
-5412(dashed)s 6142(lines)s 6650(when)s 7233(it)s 7432(is)s
-7648(do)s 6(wn,)k 8289(with)s 8778(the)s 3600 2689(dashes)m
-4289(each)s 4784(of)s 5055(the)s 5403(gi)s 6(v)k 3(en)k
-5983(length.)s 0 2186(These)m 627(options)s 1383(are)s 1730(follo)s 6(wed)k
-2632(by)s 2926(the)s 3274(w)s 2(ord)k 220 fnt35
-3822 2183(strok)m 4(e)k 240 fnt82 4408 2186(.)m 4572(So,)s
-4932(for)s 5270(e)s 3(xample,)k 220 fnt35 480 1688({ 0 0 mo)m 3(v)k 5(eto xsiz)k 3(e 0 lineto)k
-480 1400( 2 pt setline)m 4(width [ 5 pt ] 0 setdash strok)k 4(e)k 480 1112(})m 480 824(@Gr)m 2(aphic { 3i @Wide })k
-240 fnt82 0 328(has)m 370(result)s 4320 0 0 0 240 288 60 480 38 LoutGr2
-0 0 moveto xsize 0 lineto
-2 pt setlinewidth [ 5 pt ] 0 setdash stroke
-grestore
-
-grestore
-
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 64 70
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Times-Italic
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-0 LoutMargSet
-grestore
-240 fnt84 0 13840(64)m 240 fnt83 6081 13843(Chapter)m 6931(3.)s
-7205(Pr)s 8(ede\207ned)k 8300(symbols)s 240 fnt82 480 12940(When)m
-1106(\207lling)s 1726(in)s 1965(the)s 2310(re)s 3(gion)k
-2971(enclosed)s 3862(by)s 4153(a)s 4315(path,)s 4830(the)s
-5175(main)s 5706(option)s 6371(is)s 220 fnt35 6578 12937(setg)m 2(r)k 2(a)k 6(y)k
-240 fnt82 7286 12940(,)m 7389(which)s 8027(determines)s 0 12652(the)m
-348(shade)s 949(of)s 1220(gre)s 3(y)k 1696(to)s
-1935(use,)s 2361(on)s 2658(a)s 2824(scale)s 3357(from)s
-3881(0)s 4056(\(black\))s 4781(to)s 5020(1)s 5175(\(white\).)s
-6028(So,)s 6388(for)s 6726(e)s 3(xample,)k 220 fnt35
-480 12154({ 0 0 mo)m 3(v)k 5(eto xsiz)k 3(e 0 lineto 0 ysiz)k 3(e lineto closepath)k
-480 11866( 0.8 setg)m 2(r)k 2(a)k 6(y \207ll)k 480 11578(})m
-480 11290(@Gr)m 2(aphic)k 480 11002({ 2c @Wide 2c @High })m 240 fnt82 0 10503(has)m
-370(result)s 1134 1134 0 1134 240 288 60 480 9079 LoutGr2
-0 0 moveto xsize 0 lineto 0 ysize lineto closepath
-0.8 setgray fill
-grestore
-
-grestore
-480 8363(There)m 1107(are)s 1468(man)s 3(y)k
-2066(other)s 2631(options.)s 3515(The)s 3957(v)s 6(alue)k
-4540(of)s 4825(the)s 5188(left)s 5579(parameter)s 6608(of)s
-220 fnt35 6893 8360(@Gr)m 2(aphic)k 240 fnt82 7952 8363(may)m
-8432(be)s 8729(an)s 3(y)k 0 8075(fragment)m 922(of)s
-1193(the)s 1541(PostScript)s 2583(page)s 3091(description)s 4210(language)s
-5130([1)s 5304(].)s 5547(Here)s 6067(are)s 6414(tw)s 2(o)k
-6824(other)s 7375(e)s 3(xamples:)k 220 fnt35 480 7578(xsiz)m 3(e)k
-1030(2)s 1203(div)s 240 fnt82 0 7124(denoting)m 891(a)s
-1057(length)s 1712(equal)s 2285(to)s 2524(half)s 2967(the)s
-3315(horizontal)s 4339(size)s 4766(of)s 5037(the)s 5385(base,)s
-5917(and)s 220 fnt35 480 6625(gsa)m 4(v)k 5(e)k
-1110(\207ll)s 1363(g)s 2(restore)k 2219(strok)s 4(e)k
-240 fnt82 0 6126(which)m 648(both)s 1138(\207lls)s 1554(and)s
-1965(strok)s 2(es)k 2698(the)s 3053(path.)s 3636(Since)s
-4230(Basser)s 4933(Lout)s 5452(does)s 5949(not)s 6322(check)s
-6948(that)s 7373(the)s 7728(left)s 8112(parameter)s 0 5838(is)m
-209(v)s 6(alid)k 737(PostScript,)s 1824(it)s 2014(is)s
-2222(possible)s 3061(to)s 3298(cause)s 3883(mysterious)s 4981(errors)s
-5586(in)s 5828(the)s 6174(printing)s 6982(de)s 6(vice,)k
-7705(resulting)s 8592(in)s 8833(no)s 0 5550(output,)m 708(if)s
-914(an)s 1186(incorrect)s 2083(v)s 6(alue)k 2640(is)s
-2839(gi)s 6(v)k 3(en.)k 3515(It)s 3709(is)s
-3908(a)s 4063(good)s 4590(idea)s 5037(to)s 5265(encapsulate)s
-6425(graphics)s 7275(objects)s 7992(in)s 8224(carefully)s 0 5262(tested)m
-635(de\207nitions,)s 1772(lik)s 2(e)k 2205(those)s 2786(of)s
-3078(the)s 3446(Diag)s 3985(\207gure)s 4619(dra)s 3(wing)k
-5473(package)s 6334([4)s 6527(,)s 6654(Chapter)s 7492(9],)s
-7818(to)s 8078(be)s 8380(sure)s 8855(of)s 0 4974(a)m 4(v)k 4(oiding)k
-883(these)s 1430(errors.)s 480 4600(PostScript)m 1543(e)s 3(xperts)k
-2302(may)s 2789(\207nd)s 3241(the)s 3610(follo)s 6(wing)k
-4608(information)s 5814(helpful)s 6567(when)s 7164(designing)s 8170(adv)s 6(anced)k
-0 4312(graphics)m 861(features.)s 1780(The)s 2208(left)s 2585(parameter)s
-3599(of)s 220 fnt35 3870 4309(@Gr)m 2(aphic)k 240 fnt82
-4914 4312(may)m 5380(ha)s 4(v)k 3(e)k 5881(tw)s 2(o)k
-6291(parts,)s 6862(separated)s 7822(by)s 220 fnt35 8116 4309(//)m
-240 fnt82 8241 4312(:)m 220 fnt35 480 3804({)m 240 fnt83
-604 3809(\207r)m 2(st)k 1038(part)s 220 fnt35 1501 3804(//)m
-240 fnt83 1686 3809(second)m 2417(part)s 220 fnt35 2880 3804(} @Gr)m 2(aphic)k
-240 fnt83 4058 3809(object)m 240 fnt82 0 3308(If)m 230(there)s
-763(is)s 973(no)s 220 fnt35 1266 3305(//)m 240 fnt82
-1391 3308(,)m 1498(the)s 1846(second)s 2569(part)s 3000(is)s
-3210(tak)s 2(en)k 3783(to)s 4022(be)s 4304(empty)s 15(.)k
-5051(The)s 5479(PostScript)s 6521(output)s 7193(has)s 7563(the)s
-7911(form)s 220 fnt35 480 2851(gsa)m 4(v)k 5(e)k
-240 fnt83 480 2568(x)m 646(y)s 220 fnt35 808 2563(tr)m 2(anslate)k
-240 fnt83 480 2280(Code)m 1039(whic)s 3(h)k 1663(de\207nes)s
-220 fnt35 2383 2275(xsiz)m 3(e)k 240 fnt83 2872 2280(,)m
-220 fnt35 2965 2275(ysiz)m 3(e)k 240 fnt83 3454 2280(,)m
-220 fnt35 3547 2275(xmar)m -3(k)k 240 fnt83 4148 2280(,)m
-220 fnt35 4241 2275(ymar)m -3(k)k 240 fnt83 4842 2280(,)m
-220 fnt35 4935 2275(ft)m 240 fnt83 5053 2280(,)m 220 fnt35
-5146 2275(vs)m 240 fnt83 5359 2280(,)m 5452(and)s 220 fnt35
-5878 2275(sp)m 480 1987(gsa)m 4(v)k 5(e)k 240 fnt83
-480 1704(\207r)m 2(st)k 914(part)s 220 fnt35 480 1411(g)m 2(restore)k
-240 fnt83 480 1128(Code)m 1039(whic)s 3(h)k 1663(r)s 8(ender)k 2(s)k
-2439(the)s 2784(right)s 3313(par)s 3(ameter)k 4372(in)s
-4612(tr)s 3(anslated)k 5645(coor)s 8(dinates)k 480 840(second)m
-1211(part)s 220 fnt35 480 547(g)m 2(restore)k
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 65 71
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Italic
-%%+ font Times-Bold
-%%+ font Symbol
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-1 LoutMargSet
-grestore
-240 fnt83 0 13843(3.36.)m 574(@Gr)s 3(aphic)k 240 fnt84
-8833 13840(65)m 240 fnt82 0 13205(where)m 240 fnt83 628 13207(x)m
-240 fnt78 733 13199(,)m 240 fnt83 802 13207(y)m 240 fnt82
-952 13205(is)m 1149(the)s 1485(position)s 2300(of)s 2558(the)s
-2894(lo)s 6(wer)k 3479(left)s 3843(corner)s 4501(of)s
-4759(the)s 5095(base.)s 5671(Ha)s 4(ving)k 6412(tw)s 2(o)k
-6810(parts)s 7312(permits)s 8066(brack)s 2(eting)k 0 12917(operations,)m
-1112(lik)s 2(e)k 220 fnt35 1533 12914(sa)m 4(v)k 5(e)k
-240 fnt82 2049 12917(and)m 220 fnt35 2462 12914(restore)m 240 fnt82
-3206 12917(or)m 220 fnt35 3474 12914(begin)m 240 fnt82 4065 12917(and)m
-220 fnt35 4478 12914(end)m 240 fnt82 4832 12917(,)m 4949(to)s
-5197(enclose)s 5979(an)s 6271(object.)s 7028(See)s 7438(the)s
-7795(source)s 8484(\207le)s 8855(of)s 0 12629(the)m 348(Diag)s
-866(package)s 1706(for)s 2044(e)s 3(xamples.)k 240 fnt84
-0 11836(3.37.)m 591(@PlainGraphic)s 240 fnt82 567 11359(The)m 220 fnt35
-1023 11356(@PlainGr)m 2(aphic)k 240 fnt82 2580 11359(symbol)m 3368(is)s
-3606(a)s 4(v)k 3(ery)k 4211(rudimentary)s 5461(analogue)s
-6408(for)s 6774(plain)s 7337(te)s 3(xt)k 7779(output)s
-8479(of)s 8778(the)s 220 fnt35 0 11068(@Gr)m 2(aphic)k
-240 fnt82 1037 11071(symbol)m 1789(for)s 2119(PostScript)s 3153(output.)s
-3921(Its)s 4202(result)s 4784(is)s 4986(its)s 5254(right)s
-5757(parameter)s 6763(printed)s 7490(on)s 7779(a)s 7937(background)s
-0 10783(created)m 747(by)s 1041(repeated)s 1908(printings)s 2809(of)s
-3080(its)s 3356(left)s 3733(parameter)s 9(,)k 4785(which)s
-5427(must)s 5952(be)s 6234(a)s 6400(simple)s 7093(w)s 2(ord.)k
-7747(F)s 3(or)k 8136(e)s 3(xample,)k 480 10278("." @PlainGraphic 5s @W)m 9(ide)k
-0 9775(w)m 2(ould)k 676(produce)s 1525(\207v)s 3(e)k
-1959(dots.)s 220 fnt35 2544 9772(@PlainGr)m 2(aphic)k 240 fnt82
-4096 9775(is)m 4328(used)s 4847(in)s 5112(the)s 220 fnt35
-5482 9772(tb)m 4(l)k 240 fnt82 5777 9775(table-dra)m 3(wing)k
-7176(package)s 8038(to)s 8299(produce)s 0 9487(plain-te)m 3(xt)k
-972(rules.)s 240 fnt84 0 8694(3.38.)m 591(@IncludeGraphic)s 2491(and)s
-2932(@SysIncludeGraphic)s 240 fnt82 540 8217(These)m 1167(symbols)s 2016(instruct)s
-2792(Lout)s 3304(to)s 3543(incorporate)s 4687(a)s 4853(separately)s
-5875(created)s 6622(illustration:)s 220 fnt35 480 7716(@IncludeGr)m 2(aphic "m)k 3(ypor)k -8(tr)k 2(ait.eps")k
-240 fnt82 0 7218(The)m 457(parameter)s 1500(is)s 1739(implementation-dependent;)s
-4443(in)s 4715(Basser)s 5441(Lout)s 5982(it)s 6203(is)s
-6442(an)s 6754(object)s 7427(whose)s 8124(v)s 6(alue)k
-8721(is)s 8960(a)s 0 6930(simple)m 705(w)s 2(ord)k
-1265(denoting)s 2168(the)s 2528(name)s 3114(of)s 3397(a)s
-3575(\207le.)s 4056(This)s 4544(\207le)s 4917(should)s 5626(ideally)s
-6342(be)s 6636(a)s 6814(PostScript)s 7868(EPS)s 8338(V)s 26(ersion)k
-0 6642(3.0)m 345(\207le)s 696([1)s 870(],)s 1045(since)s
-1582(then)s 2040(Lout)s 2542(will)s 2957(k)s 2(eep)k
-3450(careful)s 4156(track)s 4684(of)s 4944(what)s 5459(resources)s
-6401(are)s 6738(required)s 7581(for)s 7909(printing)s 8708(that)s
-0 6354(\207le.)m 473(Ho)s 6(we)k 6(v)k 3(er)k 9(,)k
-1437(an)s 3(y)k 1838(PostScript)s 2885(\207le)s 3250(containing)s
-4317(the)s 220 fnt35 4669 6351(%%BoundingBo)m 6(x:)k 240 fnt82
-6464 6354(comment)m 7418(and)s 7826(not)s 8197(requiring)s 0 6066(unusual)m
-800(resources)s 1753(is)s 1963(lik)s 2(ely)k 2559(to)s
-2798(w)s 2(ork.)k 480 5692(The)m 924(result)s 1530(of)s
-220 fnt35 1817 5689(@IncludeGr)m 2(aphic)k 240 fnt82 3584 5692(is)m
-3811(an)s 4110(ordinary)s 4990(Lout)s 5518(object)s 6179(with)s
-6677(marks)s 7328(through)s 8146(its)s 8439(centre.)s 0 5404(It)m
-202(may)s 665(be)s 944(rotated,)s 1711(scaled,)s 2412(and)s
-2813(generally)s 3753(treated)s 4456(lik)s 2(e)k 4865(an)s 3(y)k
-5259(other)s 5807(object.)s 6552(Basser)s 7246(Lout)s 7755(determines)s
-8850(its)s 0 5116(size)m 434(by)s 735(consulting)s 1792(the)s
-2147(bounding)s 3113(box)s 3536(information)s 4728(in)s 4978(the)s
-5333(\207le.)s 5809(If)s 6047(this)s 6450(cannot)s 7155(be)s
-7444(found,)s 8117(a)s 8291(w)s 2(arning)k 0 4828(message)m
-866(is)s 1076(printed)s 1811(and)s 2215(the)s 2563(result)s
-3153(object)s 3797(has)s 4167(zero)s 4631(size.)s 220 fnt35
-480 4451(@IncludeGr)m 2(aphic)k 240 fnt82 2228 4454(searches)m 3085(the)s
-3429(same)s 3973(directories)s 5027(that)s 220 fnt35 5442 4451(@Include)m
-240 fnt82 6421 4454(does)m 6907(\(Section)s 7757(3.40\).)s 220 fnt35
-8416 4451(@Sys)m 240 fnt82 8998 4454(-)m 220 fnt35 0 4163(IncludeGr)m 2(aphic)k
-240 fnt82 1562 4166(is)m 1806(the)s 2188(same)s 2769(as)s
-220 fnt35 3053 4163(@IncludeGr)m 2(aphic)k 240 fnt82 4744 4166(,)m
-4885(e)s 3(xcept)k 5600(that)s 6052(it)s 6278(searches)s
-7172(only)s 7686(the)s 8068(directories)s 0 3878(searched)m 894(by)s
-220 fnt35 1188 3875(@SysInclude)m 240 fnt82 2476 3878(.)m 480 3504(If)m
-720(the)s 1079(\207le)s 1450(name)s 2035(ends)s 2536(in)s
-2789(an)s 3(y)k 3197(of)s 220 fnt35 3478 3501(.gz)m
-240 fnt82 3765 3504(,)m 220 fnt35 3883 3501(-gz)m 240 fnt82
-4182 3504(,)m 220 fnt35 4300 3501(.z)m 240 fnt82 4465 3504(,)m
-220 fnt35 4582 3501(-z)m 240 fnt82 4759 3504(,)m 220 fnt35
-4877 3501(_z)m 240 fnt82 5103 3504(,)m 5220(or)s 220 fnt35
-5490 3501(.Z)m 240 fnt82 5680 3504(,)m 5798(the)s 6156(\207le)s
-6528(will)s 6964(\207rst)s 7406(be)s 7699(uncompressed)s 0 3216(using)m
-565(the)s 220 fnt35 906 3213(gunzip)m 240 fnt82 1597 3216(command)m
-2592(into)s 3010(a)s 3169(temporary)s 4198(\207le)s 4552(called)s
-220 fnt35 5173 3213(lout.eps)m 240 fnt82 5987 3216(in)m 6223(the)s
-6564(current)s 7293(directory)s 15(.)k 8297(This)s 8765(\207le)s
-0 2928(is)m 210(remo)s 3(v)k 3(ed)k 1099(immediately)s
-2347(after)s 2843(it)s 3035(is)s 3245(copied)s 3941(into)s
-4366(the)s 4714(output)s 5386(\207le.)s 240 fnt84 0 2135(3.39.)m
-591(@Pr)s 4(ependGraphic and @SysPr)k 4(ependGraphic)k 240 fnt82 582 1658(These)m
-1252(symbols,)s 2200(which)s 2885(may)s 3394(appear)s 4134(an)s 3(ywhere)k
-5160(that)s 5621(a)s 5830(de\207nition)s 6847(or)s 220 fnt35
-7149 1655(@Use)m 240 fnt82 7857 1658(symbol)m 8660(may)s 0 1370(appear)m 9(,)k
-738(tell)s 1101(Lout)s 1617(to)s 1860(include)s 2624(the)s
-2976(contents)s 3828(of)s 4103(a)s 4273(\207le)s 4637(in)s
-4884(the)s 5236(preamble)s 6185(of)s 6460(its)s 6740(output.)s
-7520(F)s 3(or)k 7913(Basser)s 8614(Lout)s 0 1082(this)m
-418(means)s 1102(that)s 1542(the)s 1912(\207le)s 2295(must)s
-2843(contain)s 3626(PostScript)s 4690(\(and)s 5195(ideally)s 5921(it)s
-6136(w)s 2(ould)k 6813(be)s 3(gin)k 7421(and)s
-7847(end)s 8273(with)s 8778(the)s 220 fnt35 0 791(%%BeginResource)m
-240 fnt82 1941 794(and)m 220 fnt35 2345 791(%%EndResource)m 240 fnt82
-4116 794(comments)m 5150(of)s 5421(DSC)s 5939(3.0\).)s 6482(F)s 3(or)k
-6871(e)s 3(xample,)k 220 fnt35 480 293(@SysPrependGr)m 2(aphic { diagf)k 6(.lpg })k
-
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 66 72
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Times-Italic
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-0 LoutMargSet
-grestore
-240 fnt84 0 13840(66)m 240 fnt83 6081 13843(Chapter)m 6931(3.)s
-7205(Pr)s 8(ede\207ned)k 8300(symbols)s 240 fnt82 0 13205(appears)m
-818(at)s 1088(the)s 1474(start)s 1981(of)s 2290(the)s
-2676(Diag)s 3231(package;)s 4165(the)s 4551(\207le)s 220 fnt35
-4949 13202(diagf)m 6(.lpg)k 240 fnt82 5857 13205(contains)m 6743(a)s
-6946(number)s 7775(of)s 8084(PostScript)s 0 12917(de\207nitions)m 1048(used)s
-1532(by)s 1812(Diag)s 2317(for)s 2642(dra)s 3(wing)k
-3462(diagrams.)s 4489(It)s 4680(sa)s 4(v)k 3(es)k
-5229(a)s 5382(lot)s 5680(of)s 5938(space)s 6511(to)s
-6737(include)s 7484(them)s 8008(just)s 8400(once)s 8894(at)s
-0 12629(the)m 334(start)s 789(lik)s 2(e)k 1186(this,)s
-1624(rather)s 2225(than)s 2679(with)s 3146(e)s 6(v)k 3(ery)k
-3708(diagram.)s 220 fnt35 4640 12626(@PrependGr)m 2(aphic)k 240 fnt82
-6498 12629(and)m 220 fnt35 6887 12626(@SysPrependGr)m 2(aphic)k 240 fnt82
-0 12341(search)m 667(for)s 1005(the)s 1353(\207le)s 1714(in)s
-1957(the)s 2305(same)s 2852(places)s 3500(as)s 220 fnt35
-3750 12338(@Include)m 240 fnt82 4732 12341(and)m 220 fnt35 5136 12338(@SysInclude)m
-240 fnt82 6484 12341(respecti)m 6(v)k 3(ely)k 15(.)k
-240 fnt84 0 11548(3.40.)m 591(@Include and @SysInclude)s 240 fnt82 562 11071(These)m
-1212(symbols)s 2083(instruct)s 2882(Lout)s 3417(to)s 3678(temporarily)s
-4869(switch)s 5572(to)s 5834(reading)s 6627(another)s 7426(\207le,)s
-7861(whose)s 8552(name)s 0 10783(appears)m 781(in)s 1024(braces)s
-1685(follo)s 6(wing)k 2662(the)s 3010(symbol.)s 3879(F)s 3(or)k
-4268(e)s 3(xample,)k 220 fnt35 480 10282(@Include { "/usr/lout/f)m 6(ontdefs" })k
-240 fnt82 0 9788(will)m 434(cause)s 1030(the)s 1386(contents)s
-2243(of)s 2522(\207le)s 2892(/usr/lout/fontdefs)s 4596(to)s 4844(be)s
-5134(read)s 5612(at)s 5852(the)s 6209(point)s 6769(it)s
-6970(occurs.)s 7766(After)s 8338(that)s 8765(\207le)s 0 9500(is)m
-214(read,)s 736(the)s 1089(current)s 1829(\207le)s 2194(is)s
-2409(resumed.)s 3387(The)s 3819(included)s 4706(\207le)s 5071(may)s
-5541(contain)s 6307(arbitrary)s 7186(Lout)s 7702(te)s 3(xt,)k
-8169(including)s 0 9212(other)m 220 fnt35 566 9209(@Include)m 240 fnt82
-1564 9212(commands.)m 2780(The)s 3224(\207le)s 3600(is)s 3826(searched)s
-4735(for)s 5089(\207rst)s 5535(in)s 5794(the)s 6157(current)s
-6909(directory)s 15(,)k 7878(then)s 8363(in)s 8621(a)s
-8803(se)s 8998(-)s 0 8924(quence)m 732(of)s 1001(standard)s
-1866(places)s 2512(which)s 3151(are)s 3496(not)s 3859(necessarily)s
-4972(the)s 5318(same)s 5862(places)s 6508(that)s 6923(databases)s
-7888(are)s 8232(searched)s 0 8636(for)m 13(.)k 220 fnt35
-429 8633(@SysInclude)m 240 fnt82 1777 8636(searches)m 2637(the)s 2985(standard)s
-3853(places)s 4501(only)s 15(.)k 240 fnt84 0 7843(3.41.)m
-591(@BackEnd)s 1814(and)s 2255(the)s 2629(PlainT)s 22(ext)k
-3663(and)s 4104(PDF)s 4623(back)s 5172(ends)s 240 fnt82
-547 7411(The)m 220 fnt35 983 7408(@Bac)m 4(kEnd)k 240 fnt82
-2136 7411(symbol,)m 2955(which)s 3605(tak)s 2(es)k 4153(no)s
-4454(parameters,)s 5615(has)s 5993(for)s 6339(its)s 6623(result)s
-7220(a)s 7394(string)s 7999(naming)s 8778(the)s 0 7123(back)m
-523(end)s 938(currently)s 1865(in)s 2119(use.)s 2613(Three)s
-3237(back)s 3761(ends)s 4262(are)s 4620(a)s 4(v)k 6(ailable,)k
-5590(PostScript,)s 6690(PDF)s 7198(and)s 7613(PlainT)s 16(e)k 3(xt.)k
-8698(The)s 0 6835(symbol)m 760(is)s 970(generally)s 1913(used)s
-2410(lik)s 2(e)k 2822(this:)s 220 fnt35 480 6334(@Bac)m 4(kEnd @Case {)k
-480 6046( PlainT)m 26(e)k 6(xt @Y)k 4(ield { ...)k 13( })k
-480 5758( P)m 11(ostScr)k -3(ipt @Y)k 4(ield { ...)k 13( })k
-480 5470( PDF @Y)m 4(ield { ...)k 13( })k 480 5182(})m 240 fnt82
-0 4688(to)m 255(obtain)s 926(dif)s 6(ferent)k 1817(objects)s
-2561(depending)s 3628(on)s 3941(the)s 4305(back)s 4834(end.)s
-5360(No)s 220 fnt35 5722 4685(else)m 240 fnt82 6192 4688(is)m
-6418(required)s 7288(since)s 7851(these)s 8414(are)s 8778(the)s
-0 4400(only)m 480(possible)s 1320(v)s 6(alues.)k 480 4026(When)m
-1101(a)s 220 fnt35 1259 4023(@Case)m 240 fnt82 2037 4026(symbol)m
-2789(has)s 220 fnt35 3151 4023(@Bac)m 4(kEnd)k 240 fnt82
-4287 4026(for)m 4617(its)s 4885(left)s 5253(parameter)s 6259(and)s
-6655(the)s 6994(left)s 7363(parameter)s 8369(of)s 8631(each)s
-220 fnt35 0 3735(@Y)m 4(ield)k 240 fnt82 768 3738(symbol)m
-1544(within)s 2228(it)s 2435(consists)s 3259(of)s 3546(a)s
-3728(sequence)s 4676(of)s 4963(one)s 5381(or)s 5656(more)s
-6218(literal)s 6844(w)s 2(ords)k 7494(\(including)s 220 fnt35
-8546 3735(else)m 240 fnt82 8940 3738(\),)m 0 3450(Lout)m 531(will)s
-976(optimize)s 1888(by)s 2201(e)s 6(v)k 6(aluating)k
-3258(the)s 220 fnt35 3625 3447(@Case)m 240 fnt82 4432 3450(symbol)m
-5211(at)s 5463(the)s 5830(time)s 6330(it)s 6541(is)s
-6771(read.)s 7365(This)s 7861(optimization)s 0 3162(ensures)m 789(that)s
-1228(there)s 1782(is)s 2013(only)s 2514(a)s 2701(small)s
-3294(once-only)s 4326(performance)s 5610(penalty)s 6389(for)s 6748(multiple)s
-7621(back)s 8155(ends,)s 8722(and)s 0 2874(it)m 206(permits)s
-987(these)s 220 fnt35 1548 2871(@Case)m 240 fnt82 2350 2874(symbols)m
-3213(\(b)s 4(ut)k 3668(no)s 3976(other)s 4541(symbols\))s
-5481(to)s 5734(appear)s 6446(within)s 7128(the)s 7490(object)s
-8149(follo)s 6(wing)k 220 fnt35 0 2583(@Include)m 240 fnt82
-982 2586(and)m 220 fnt35 1386 2583(@PrependGr)m 2(aphic)k 240 fnt82
-3259 2586(symbols.)m 480 2212(The)m 918(PlainT)s 16(e)k 3(xt)k
-1899(back)s 2423(end)s 2837(dif)s 6(fers)k 3515(from)s
-4050(the)s 4409(PostScript)s 5461(one)s 5874(in)s 6128(tw)s 2(o)k
-6548(main)s 7094(respects.)s 8038(First,)s 8593(there)s 0 1924(is)m
-226(ef)s 6(fecti)k 6(v)k 3(ely)k 1302(just)s
-1724(one)s 2143(font:)s 2711(although)s 3622(all)s 3932(the)s
-4297(font)s 4759(commands)s 5864(w)s 2(ork)k 6431(e)s 3(xactly)k
-7189(as)s 7456(usual,)s 8085(the)s 3(y)k 8565(don')s 4(t)k
-0 1636(actually)m 817(change)s 1558(an)s 3(ything.)k 2565(Each)s
-3107(character)s 4049(in)s 4299(this)s 4702(font)s 5155(is)s
-5372(tak)s 2(en)k 5953(to)s 6199(be)s 6488(one)s
-6898(tenth)s 7440(of)s 7719(one)s 8128(inch)s 8605(wide)s
-0 1348(and)m 404(20)s 699(points)s 1335(high.)s 1925(Second,)s
-2737(the)s 3085(output)s 3757(is)s 3967(an)s 4250(ordinary)s
-5114(te)s 3(xt)k 5529(\207le,)s 5941(not)s 6307(a)s
-6473(PostScript)s 7515(\207le.)s 480 974(Clearly)m 15(,)k 1306(with)s
-1820(ordinary)s 2716(te)s 3(xt)k 3162(output)s 3866(the)s
-4246(possibility)s 5327(of)s 5630(adv)s 6(anced)k 6618(graphics)s
-7510(features)s 8348(such)s 8876(as)s 0 686(rotation)m 829(and)s
-1262(scaling)s 2022(is)s 2261(curtailed.)s 3290(Ne)s 6(v)k 3(ertheless,)k
-4651(all)s 4974(symbols)s 5852(ha)s 4(v)k 3(e)k
-6383(well-de\207ned)s 7665(\(possibly)s 8626(null\))s 0 398(ef)m 6(fects)k
-706(in)s 976(the)s 1351(PlainT)s 16(e)k 3(xt)k
-2348(back)s 2888(end,)s 3368(so)s 3661(there)s 4221(is)s
-4457(no)s 4777(additional)s 5815(danger)s 6553(of)s 6851(crashing)s
-7741(the)s 8116(system)s 8867(or)s 0 110(obtaining)m 957(grossly)s
-1702(unreasonable)s 3020(output)s 3692(by)s 3986(a)s 4152(change)s
-4886(to)s 5125(PlainT)s 16(e)k 3(xt.)k
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 67 73
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Italic
-%%+ font Times-Bold
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-1 LoutMargSet
-grestore
-240 fnt83 0 13843(3.41.)m 574(@Bac)s 4(kEnd)k 1720(and)s
-2146(the)s 2491(PlainT)s 22(e)k 4(xt)k 3458(and)s
-3884(PDF)s 4417(bac)s 4(k)k 4929(ends)s 240 fnt84
-8831 13840(67)m 240 fnt82 480 13249(The)m 905(PlainT)s 16(e)k 3(xt)k
-1872(back)s 2382(end)s 2783(is)s 2990(obtained)s 3869(by)s
-4160(the)s 220 fnt35 4505 13246(-p)m 240 fnt82 4749 13249(option)m
-5415(to)s 5651(Basser)s 6345(Lout.)s 6958(The)s 7383(character)s
-8314(size)s 8737(can)s 0 12961(be)m 282(changed)s 1138(by)s
-1432(adding)s 2137(tw)s 2(o)k 2547(lengths)s 3289(to)s
-3528(the)s 220 fnt35 3876 12958(-p)m 240 fnt82 4123 12961(option,)m
-4842(lik)s 2(e)k 5254(this:)s 220 fnt35 480 12464(lout -p0.1i12p ...)m
-240 fnt82 0 11968(which)m 650(in)s 9(v)k 4(ok)k 2(es)k
-1439(the)s 1795(PlainT)s 16(e)k 3(xt)k 2773(back)s
-3294(end)s 3706(with)s 4196(each)s 4699(character)s 5641(being)s
-6234(0.1)s 6577(inches)s 7247(wide)s 7776(and)s 8188(12)s
-8490(points)s 0 11680(high.)m 595(Ho)s 6(we)k 6(v)k 3(er)k 9(,)k
-1561(e)s 3(xperience)k 2655(suggests)s 3523(that)s 3947(the)s
-4301(best)s 4752(approach)s 5691(is)s 5907(to)s 6152(de\207ne)s
-6799(all)s 7098(horizontal)s 8128(lengths)s 8876(as)s 0 11392(multiples)m
-943(of)s 1218(the)s 220 fnt35 1569 11389(s)m 240 fnt82
-1736 11392(unit)m 2171(\(the)s 2602(width)s 3208(of)s 3482(a)s
-3652(space,)s 4293(hence)s 4911(the)s 5262(width)s 5868(of)s
-6143(all)s 6439(characters\))s 7538(and)s 7945(to)s 8188(de\207ne)s
-8833(all)s 0 11104(v)m 3(ertical)k 777(lengths)s 1530(as)s
-1791(multiples)s 2742(of)s 3023(the)s 220 fnt35 3382 11101(f)m
-240 fnt82 3511 11104(unit)m 3954(\(the)s 4391(font)s 4847(size,)s
-5336(equal)s 5920(to)s 6169(the)s 6528(height)s 7197(of)s
-7479(e)s 6(v)k 3(ery)k 8066(character\),)s 0 10816(and)m
-404(not)s 770(to)s 1009(change)s 1743(the)s 2091(character)s
-3025(size)s 3452(in)s 3695(the)s 4043(command)s 5045(line.)s
-480 10442(There)m 1098(is)s 1314(a)s 220 fnt35 1486 10439(-P)m
-240 fnt82 1762 10442(option)m 2437(which)s 3085(is)s 3301(identical)s
-4184(with)s 4671(the)s 220 fnt35 5025 10439(-p)m 240 fnt82
-5278 10442(option)m 5953(e)s 3(xcept)k 6640(that)s 7064(it)s
-7262(inserts)s 7942(a)s 8114(form-feed)s 0 10154(character)m 934(between)s
-1788(each)s 2283(tw)s 2(o)k 2693(components)s 3901(of)s
-4172(the)s 4520(output,)s 5239(b)s 4(ut)k 5601(not)s
-5967(before)s 6633(the)s 6981(\207rst)s 7412(or)s 7671(after)s
-8167(the)s 8515(last.)s 480 9780(The)m 911(PDF)s 1412(back)s
-1928(end)s 2336(is)s 2549(obtained)s 3435(by)s 3732(typing)s
-220 fnt35 4401 9777(lout -Z)m 240 fnt82 5017 9780(.)m 5185(It)s
-5393(is)s 5607(similar)s 6332(to)s 6575(PostScript)s 7620(b)s 4(ut)k
-7986(much)s 8579(more)s 0 9492(limited)m 755(in)s 1019(functionality)s 15(.)k
-2411(Consult)s 3237(a)s 3425(separate)s 4284(document)s 5309(distrib)s 4(uted)k
-6407(with)s 6910(Lout)s 7444(for)s 7803(further)s 8534(infor)s
-8998(-)s 0 9204(mation.)m 240 fnt84 0 8461(3.42.)m 591(@V)s 24(erbatim and @RawV)k 24(erbatim)k
-240 fnt82 543 8029(These)m 1173(symbols)s 2026(instruct)s 2805(Lout)s
-3321(to)s 3563(read)s 4036(the)s 4387(follo)s 6(wing)k
-5367(te)s 3(xt)k 5786(\(enclosed)s 6763(in)s 7010(braces\))s
-7751(v)s 3(erbatim,)k 8708(that)s 0 7741(is,)m 266(turning)s
-1010(of)s 6(f)k 1354(all)s 1647(special)s 2365(character)s
-3299(meanings.)s 4380(F)s 3(or)k 4769(e)s 3(xample,)k
-220 fnt35 480 7240(@V)m 17(erbatim { "hello" })k 240 fnt82 0 6746(produces)m
-480 6243("hello")m 220 fnt35 0 5787(@V)m 17(erbatim)k 240 fnt82
-1178 5790(ignores)m 1983(all)s 2325(characters)s 3393(after)s 3938(the)s
-4336(opening)s 5210(brace)s 5833(up)s 6175(to)s 6464(b)s 4(ut)k
-6875(not)s 7291(including)s 8297(the)s 8695(\207rst)s 0 5502(non-white-space)m
-1654(character)s 13(.)k 220 fnt35 2697 5499(@Ra)m 4(wV)k 17(erbatim)k
-240 fnt82 4278 5502(dif)m 6(fers)k 4964(from)s 220 fnt35
-5506 5499(@V)m 17(erbatim)k 240 fnt82 6653 5502(only)m 7151(in)s
-7413(that)s 7849(it)s 8059(ignores)s 8833(all)s 0 5214(characters)m
-1018(after)s 1514(the)s 1862(opening)s 2687(brace)s 3261(up)s
-3554(to)s 3793(b)s 4(ut)k 4155(not)s 4521(including)s
-5479(the)s 5827(\207rst)s 6258(non-white-space)s 7894(character)s 9(,)k
-8867(or)s 0 4926(up)m 302(to)s 551(and)s 965(including)s
-1931(the)s 2289(\207rst)s 2730(ne)s 6(wline)k 3547(character)s 9(,)k
-4528(whiche)s 6(v)k 3(er)k 5585(comes)s 6257(\207rst.)s
-6802(This)s 7287(v)s 6(ariant)k 8014(is)s 8234(useful)s
-8883(in)s 0 4638(cases)m 555(such)s 1051(as)s 220 fnt35
-480 4187(@Ra)m 4(wV)k 17(erbatim {)k 480 3899( v)m 5(ar x:)k 11( Real)k
-480 3611(begin)m 480 3323(})m 240 fnt82 0 2829(where)m 662(the)s
-1033(\207rst)s 1486(line)s 1923(of)s 2217(the)s 2587(v)s 3(erbatim)k
-3516(te)s 3(xt)k 3954(be)s 3(gins)k 4649(with)s
-5154(white)s 5763(space)s 6373(which)s 7038(w)s 2(ould)k
-7715(be)s 8020(ignored)s 8832(by)s 220 fnt35 0 2538(@V)m 17(erbatim)k
-240 fnt82 1069 2541(.)m 1232(Both)s 1754(symbols)s 2602(ignore)s
-3268(all)s 3560(white)s 4146(spaces)s 4820(at)s 5051(the)s
-5398(end)s 5801(of)s 6071(the)s 6418(v)s 3(erbatim)k
-7323(te)s 3(xt,)k 7784(preceding)s 8778(the)s 0 2253(closing)m
-744(brace.)s 240 fnt84 0 1460(3.43.)m 591(@Underline)s 240 fnt82
-533 1028(The)m 220 fnt35 953 1025(@Under)m -3(line)k 240 fnt82
-2160 1028(symbol)m 2912(underlines)s 3951(its)s 4219(right)s 4722(parameter)s 9(,)k
-5767(b)s 4(ut)k 6121(only)s 6593(if)s 6802(that)s
-7212(parameter)s 8218(is)s 8420(a)s 8578(w)s 2(ord)k
-0 740(or)m 259(a)s 425(paragraph:)s 220 fnt35 480 239(W)m 6(e @Under)k -3(line { really do } mean this)k 3(.)k
-
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 68 74
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Times-Italic
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-0 LoutMargSet
-grestore
-240 fnt84 0 13840(68)m 240 fnt83 6081 13843(Chapter)m 6931(3.)s
-7205(Pr)s 8(ede\207ned)k 8300(symbols)s 240 fnt82 0 13205(produces)m
-480 12702(W)m 19(e)k 849(really)s 849 1679 12678 12 ul
-1446(do)s 1739(mean)s
-2314(this.)s 0 12199(It)m 204(is)s 412(not)s 776(possible)s
-1614(to)s 1851(underline)s 2808(an)s 3089(arbitrary)s 3962(object)s
-4604(using)s 5174(this)s 5568(symbol;)s 6383(the)s 220 fnt35
-6729 12196(@Under)m -3(line)k 240 fnt82 7942 12199(symbol)m 8700(will)s
-0 11911(be)m 282(ignored)s 1071(if)s 1288(this)s 1684(is)s
-1894(attempted.)s 480 11537(It)m 731(is)s 987(v)s 3(ery)k
-1509(easy)s 2034(to)s 240 fnt83 2319 11539(de\207ne)m 240 fnt82
-2990 11537(a)m 3202(symbol)s 4008(which)s 4696(will)s 5168(underline)s
-6173(an)s 6502(arbitrary)s 7423(object,)s 8160(using)s 8778(the)s
-220 fnt35 0 11246(@Gr)m 2(aphic)k 240 fnt82 1045 11249(symbol.)m
-1915(This)s 2393(raises)s 2988(the)s 3337(question)s 4207(of)s
-4479(wh)s 1(y)k 220 fnt35 4946 11246(@Under)m -3(line)k
-240 fnt82 6163 11249(is)m 6374(needed)s 7111(at)s 7345(all.)s
-7748(The)s 8177(answer)s 8916(is)s 0 10961(that)m 220 fnt35
-418 10958(@Under)m -3(line)k 240 fnt82 1633 10961(has)m 2003(tw)s 2(o)k
-2413(properties)s 3419(that)s 3837(distinguish)s 4944(it)s 5136(from)s
-5660(symbols)s 6509(based)s 7112(on)s 220 fnt35 7409 10958(@Gr)m 2(aphic)k
-240 fnt82 8393 10961(.)m 480 10587(First,)m 1021(when)s 220 fnt35
-1594 10584(@Under)m -3(line)k 240 fnt82 2806 10587(both)m 3286(contains)s
-4130(a)s 4293(paragraph)s 5303(and)s 5704(is)s 5911(used)s
-6404(within)s 7069(a)s 7232(paragraph,)s 8292(as)s 8539(in)s
-8778(the)s 0 10299(e)m 3(xample)k 875(abo)s 3(v)k 3(e,)k
-1561(the)s 1921(inner)s 2485(and)s 2901(outer)s 3465(paragraphs)s
-4577(are)s 4937(mer)s 4(ged)k 5720(into)s 6158(one,)s
-6623(permitting)s 7684(the)s 8045(underlined)s 0 10011(te)m 3(xt)k
-412(to)s 647(break)s 1236(o)s 3(v)k 3(er)k
-1711(se)s 6(v)k 3(eral)k 2430(lines.)s 3041(This)s
-3513(is)s 3720(ho)s 6(w)k 4177(the)s 220 fnt35
-4522 10008(@F)m 6(ont)k 240 fnt82 5230 10011(symbol)m 5986(w)s 2(orks)k
-6617(too,)s 7026(b)s 4(ut)k 7385(symbols)s 8230(based)s
-8829(on)s 220 fnt35 0 9720(@Gr)m 2(aphic)k 240 fnt82
-1044 9723(do)m 1337(not)s 1703(permit)s 2386(this)s 2782(mer)s 4(ging.)k
-480 9349(Second,)m 1292(Adobe)s 1987(font)s 2432(\207les)s 2881(specify)s
-3625(the)s 3973(correct)s 4694(position)s 5522(and)s 5926(thickness)s
-6867(of)s 7138(underlining)s 8294(for)s 8631(each)s 0 9061(font,)m
-501(and)s 914(the)s 220 fnt35 1272 9058(@Under)m -3(line)k
-240 fnt82 2496 9061(symbol)m 3266(follo)s 6(ws)k 4037(these)s
-4593(speci\207cations.)s 6068(The)s 6505(font)s 6960(used)s 7466(is)s
-7685(the)s 8043(font)s 8497(of)s 8778(the)s 0 8773(\207rst)m
-431(object)s 1075(underlined,)s 2205(if)s 2422(it)s 2614(is)s
-2824(a)s 2990(simple)s 3683(w)s 2(ord,)k 4280(or)s
-4539(else)s 4966(the)s 5314(font)s 5759(of)s 6030(the)s
-6378(enclosing)s 7348(paragraph.)s 240 fnt84 0 7980(3.44.)m 591(@P)s 2(ageLabel)k
-240 fnt82 533 7503(The)m 220 fnt35 953 7500(@P)m 8(ageLabel)k
-240 fnt82 2255 7503(symbol)m 3007(associates)s 4005(a)s 4164(page)s
-4664(label)s 5176(in)s 5411(the)s 5751(PostScript)s 6786(output)s
-7450(\207le)s 7804(with)s 8278(the)s 8618(page)s 0 7215(within)m
-688(which)s 1350(\(or)s 1708(just)s 2133(before)s 2819(which\))s
-3552(the)s 3920(symbol)s 4700(occurs,)s 5451(so)s 5737(that)s
-6175(PostScript)s 7237(vie)s 6(wers)k 8045(are)s 8412(able)s
-8887(to)s 0 6927(inde)m 3(x)k 587(the)s 939(page)s
-1450(by)s 1748(this)s 2148(label.)s 2779(\(The)s 3290(label)s
-3813(is)s 4026(printed)s 4765(in)s 5011(the)s 220 fnt35
-5363 6924(%%P)m 8(age)k 240 fnt82 6313 6927(comment)m 7266(preceding)s
-8266(the)s 8618(page)s 0 6639(in)m 243(the)s 591(PostScript)s
-1633(output)s 2305(\207le.\))s 2858(F)s 3(or)k 3247(e)s 3(xample,)k
-220 fnt35 480 6138(@P)m 8(ageLabel iv)k 240 fnt82 0 5639(associates)m
-1018(the)s 1379(label)s 220 fnt35 1910 5636(iv)m 240 fnt82
-2140 5639(with)m 2634(the)s 2995(page.)s 3623(The)s 4064(label)s
-4595(may)s 5074(be)s 5368(an)s 5664(arbitrary)s 6551(object;)s
-7260(if)s 7489(its)s 7778(v)s 6(alue)k 8358(is)s
-8581(not)s 8960(a)s 0 5351(simple)m 693(w)s 2(ord,)k
-1290(it)s 1482(will)s 1908(be)s 2190(replaced)s 3057(by)s
-220 fnt35 3351 5348(?)m 240 fnt82 3459 5351(.)m 220 fnt35
-480 4974(@P)m 8(ageLabel)k 240 fnt82 1799 4977(is)m 2019(unrelated)s
-2977(to)s 3226(Lout')s 13(s)k 3899(cross)s 4451(referencing)s
-5602(mechanism;)s 6813(it)s 7016(is)s 7236(for)s 7585(communicating)s
-0 4689(a)m 176(label)s 706(to)s 956(the)s 1315(PostScript)s
-2368(output)s 3051(\207le,)s 3474(not)s 3851(to)s 4101(other)s
-4662(parts)s 5188(of)s 5470(Lout.)s 6097(The)s 6536(result)s
-7137(of)s 220 fnt35 7419 4686(@P)m 8(ageLabel)k 240 fnt82
-8739 4689(is)m 8960(a)s 0 4401(null)m 427(object.)s
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 69 75
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Helvetica
-%%+ font Symbol
-%%+ font Times-Italic
-/pgsave save def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-1 LoutMargSet
-grestore
-480 fnt84 0 12955(Chapter)m 1819(4.)s 2400(Examples)s 240 fnt82
-0 12004(This)m 503(chapter)s 1294(presents)s 2156(some)s 2744(e)s 3(xamples)k
-3723(tak)s 2(en)k 4324(from)s 4875(the)s 5251(v)s 6(arious)k
-6028(packages)s 6983(a)s 4(v)k 6(ailable)k 7919(with)s
-8429(Basser)s 0 11716(Lout.)m 661(The)s 1134(reader)s 1835(who)s
-2346(masters)s 3171(these)s 3763(e)s 3(xamples)k 4759(will)s
-5230(be)s 5557(well)s 6068(prepared)s 7007(to)s 7291(read)s
-7805(the)s 8198(packages)s 0 11428(themselv)m 3(es.)k 1223(The)s
-1650(e)s 3(xamples)k 2600(ha)s 4(v)k 3(e)k
-3100(not)s 3465(been)s 3973(simpli\207ed)s 4986(in)s 5229(an)s 3(y)k
-5625(w)s 2(ay)k 15(,)k 6113(since)s 6659(an)s
-6941(important)s 7929(part)s 8359(of)s 8629(their)s 0 11140(purpose)m
-814(is)s 1024(to)s 1263(sho)s 6(w)k 1817(Lout)s
-2329(in)s 2572(actual)s 3197(practice.)s 240 fnt84 0 10347(4.1.)m
-471(An)s 833(equation)s 1779(f)s 6(ormatting)k 2930(package)s
-240 fnt82 480 9870(In)m 751(this)s 1162(section)s 1911(we)s
-2261(describe)s 3128(the)s 3491(design)s 4189(and)s 4608(implementation)s
-6180(of)s 6466(the)s 6829(Eq)s 7168(equation)s 8065(formatting)s
-0 9582(package.)m 976(Equation)s 1925(formatting)s 3014(mak)s 2(es)k
-3702(a)s 3896(natural)s 4642(\207rst)s 5101(e)s 3(xample,)k
-6043(partly)s 6682(because)s 7523(its)s 7828(requirements)s 0 9294(ha)m 4(v)k 3(e)k
-514(strongly)s 1366(in\210uenced)s 2435(the)s 2797(design)s 3493(of)s
-3778(Lout,)s 4351(and)s 4769(partly)s 5394(because)s 6221(no)s
-6528(cross)s 7084(references)s 8129(or)s 8402(g)s 1(alle)k 3(ys)k
-0 9006(are)m 347(required.)s 480 8632(T)m 19(o)k 777(the)s
-1122(author')s 13(s)k 1939(kno)s 6(wledge,)k 3088(Eq)s
-3409(is)s 3615(the)s 3960(\207rst)s 4388(equation)s 5265(formatter)s
-6209(to)s 6445(be)s 6723(implemented)s 8026(as)s 8273(a)s
-8435(collec)s 8998(-)s 0 8344(tion)m 430(of)s 702(high-)s
-1196(le)s 6(v)k 3(el)k 1707(de\207nitions.)s 2883(This)s
-3360(approach)s 4295(has)s 4666(signi\207cant)s 5724(adv)s 6(antages:)k
-6948(the)s 7297(basics)s 7933(of)s 8206(language)s 0 8056(and)m
-426(layout)s 1106(are)s 1475(tri)s 6(vial,)k 2167(so)s
-2456(the)s 2826(implementor)s 4129(can)s 4540(concentrate)s 5720(on)s
-6039(\207ne-)s 6466(tuning;)s 7212(and)s 7638(the)s 8009(de\207nitions,)s
-0 7768(being)m 585(readily)s 1302(a)s 4(v)k 6(ailable,)k
-2261(can)s 2650(be)s 2932(impro)s 3(v)k 3(ed,)k
-3950(e)s 3(xtended,)k 4918(or)s 5177(e)s 6(v)k 3(en)k
-5677(replaced.)s 480 7394(As)m 808(described)s 1793(in)s 2048(the)s
-2407(User')s 13(s)k 3079(Guide)s 3732([4)s 3925(],)s
-4122(an)s 4416(equation)s 5309(is)s 5530(entered)s 6302(in)s
-6557(a)s 6734(format)s 7441(based)s 8056(on)s 8364(the)s
-8724(one)s 0 7106(introduced)m 1081(by)s 1375(the)s 1723(eqn)s
-2126(language)s 3046(of)s 3317(K)s 6(ernighan)k 4378(and)s
-4782(Cherry)s 5500([2)s 5693(]:)s 220 fnt35 480 6605(@Eq { { x sup 2 + y sup 2 } o)m 3(v)k 5(er 2 })k
-240 fnt82 0 6107(The)m 428(result)s 1018(is)s 168 fnt78
-586 5702(2)m 240 fnt83 480 5642(x)m 240 fnt78 738 5634(+)m
-168 fnt78 1041 5702(2)m 240 fnt83 939 5642(y)m 641 0 0 0 240 288 12 480 5544 LoutGr2
-0 0 moveto xsize 0 lineto 0.05 ft setlinewidth stroke
-grestore
-
-grestore
-240 fnt78
-743 5316(2)m 240 fnt82 0 4805(In)m 256(outline,)s 1027(the)s
-1375(de\207nition)s 2349(of)s 2620(the)s 220 fnt35 2968 4802(@Eq)m
-240 fnt82 3506 4805(symbol)m 4266(is)s 220 fnt35 480 4308(e)m 6(xpor)k -8(t sup o)k 3(v)k 5(er "+" "2" "<=")k
-480 4020(def @Eq)m 480 3732( body @Body)m 480 3444({)m 480 3156( def sup precedence 60 left x r)m -3(ight y { ...)k 13( })k
-480 2868( def o)m 3(v)k 5(er precedence 54 left x r)k -3(ight y { ...)k 13( })k
-480 2580( def "2" { Base @F)m 6(ont "2" })k 480 2292( def "+" { {Symbol Base} @F)m 6(ont "+" })k 480 2004( def "<=" { {Symbol Base} @F)m 6(ont "\\243" })k
-480 1716( ...)m 480 1140( Slope @F)m 6(ont 1.2f @Break 0c @Space @Body)k 480 852(})m 192 fnt84
-4439 2(69)m
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 70 76
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Times-Italic
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-0 LoutMargSet
-grestore
-240 fnt84 0 13840(70)m 240 fnt83 7017 13843(Chapter)m 7867(4.)s
-8141(Examples)s 240 fnt82 0 13205(A)m 259(body)s 822(parameter)s
-1865(is)s 2104(used)s 2630(to)s 2898(restrict)s 3649(the)s
-4026(visibility)s 4958(of)s 5258(the)s 5635(equation)s 6545(formatting)s
-7635(symbols)s 8514(\(there)s 0 12917(are)m 366(hundreds)s 1315(of)s
-1606(them\).)s 2347(The)s 2794(equation)s 3695(as)s 3965(a)s
-4151(whole)s 4811(is)s 5041(set)s 5386(in)s 5649(Slope)s
-6269(\(i.e.)s 6704(Italic\))s 7341(font,)s 7853(and)s 8277(symbols)s
-0 12629(such)m 515(as)s 220 fnt35 784 12626("2")m 240 fnt82
-1127 12629(and)m 220 fnt35 1550 12626("+")m 240 fnt82 1899 12629(are)m
-2265(de\207ned)s 3048(when)s 3643(other)s 4213(fonts)s 4762(are)s
-5128(needed.)s 5990(Precedences)s 7241(are)s 7608(used)s 8124(to)s
-8383(resolv)s 3(e)k 0 12341(ambiguities)m 1170(such)s 1670(as)s
-220 fnt35 1925 12338(a sup b o)m 3(v)k 5(er c)k 240 fnt82
-3291 12341(.)m 3459(Eq)s 3788(tak)s 2(es)k 4332(all)s
-4630(spacing)s 5418(decisions)s 6363(on)s 6665(itself,)s 7252(so)s
-7523(to)s 7766(pre)s 6(v)k 3(ent)k 8539(white)s
-0 12053(space)m 574(typed)s 1151(by)s 1432(the)s 1767(user)s
-2212(from)s 2723(interfering,)s 3824(the)s 4158(equation)s 5026(is)s
-5223(enclosed)s 6105(in)s 220 fnt35 6335 12050(0c @Space)m 240 fnt82
-7465 12053(.)m 7616(W)s 19(e)k 7972(will)s 8384(discuss)s
-0 11765(the)m 220 fnt35 348 11762(1.2f @Break)m 240 fnt82 1631 11765(later)m 13(.)k
-480 11391(Thus)m 1015(ha)s 4(v)k 3(e)k 1521(we)s
-1861(disposed)s 2762(of)s 3038(the)s 3391(language)s 4316(design)s
-5003(part)s 5439(of)s 5715(the)s 6068(equation)s 6954(formatting)s
-8020(problem;)s 8934(it)s 0 11103(remains)m 807(no)s 6(w)k
-1268(to)s 1507(de\207ne)s 2148(the)s 2496(twenty)s 3201(or)s
-3460(so)s 3726(symbols)s 4575(with)s 5057(parameters,)s 6211(and)s
-6615(get)s 6967(the)s 7315(layout)s 7973(right.)s 480 10729(Ev)m 3(ery)k
-1115(equation)s 2010(has)s 2393(an)s 240 fnt83 2690 10731(axis)m
-240 fnt82 3070 10729(:)m 3250(an)s 3546(imaginary)s 4583(horizontal)s
-5620(line)s 6048(through)s 6864(the)s 7225(centre)s 7878(of)s
-8163(v)s 6(ariables,)k 0 10441(through)m 795(the)s 1136(bar)s
-1494(of)s 1757(b)s 4(uilt-up)k 2556(fractions,)s 3491(and)s
-3888(so)s 4146(on.)s 4543(W)s 19(e)k 4905(can)s
-5287(satisfy)s 5956(this)s 6345(requirement)s 7552(by)s 7839(ensuring)s
-8708(that)s 0 10153(the)m 362(result)s 966(of)s 1251(each)s
-1761(symbol)s 2535(has)s 2919(a)s 3100(single)s 3741(ro)s 6(w)k
-4175(mark,)s 4788(on)s 5099(the)s 5461(axis.)s 6025(F)s 3(or)k
-6428(e)s 3(xample,)k 7356(the)s 7719(superscripting)s 0 9865(symbol)m
-760(is)s 970(de\207ned)s 1733(as)s 1983(follo)s 6(ws:)k
-220 fnt35 480 9366(def sup)m 480 9078( precedence 60)m 480 8790( associativity left)m 480 8502( left x)m
-480 8214( named gap { @SupGap })m 480 7926( r)m -3(ight y)k 480 7638({)m 480 7350( @HContr)m 2(act @VContr)k 2(act {)k
-480 7062( | @Smaller y)m 480 6774( ^/gap x)m 480 6486( })m 480 6198(})m 240 fnt82
-0 5704(The)m 220 fnt35 430 5701(@VContr)m 2(act)k 240 fnt82
-1684 5704(and)m 220 fnt35 2091 5701(^/)m 240 fnt82 2320 5704(symbols)m
-3171(together)s 4017(ensure)s 4699(that)s 5119(the)s 5470(axis)s
-5908(of)s 6181(the)s 6532(result)s 7124(is)s 7336(the)s
-7687(axis)s 8125(of)s 8398(the)s 8749(left)s 0 5416(parameter)m 13(.)k
-1119(A)s 220 fnt35 1363 5413(gap)m 240 fnt82 1795 5416(parameter)m
-2823(has)s 3207(been)s 3730(pro)s 3(vided)k 4650(for)s
-5002(v)s 6(arying)k 5794(the)s 6156(height)s 6828(of)s
-7113(the)s 7475(superscript,)s 8644(with)s 0 5128(def)m 2(ault)k
-709(v)s 6(alue)k 220 fnt35 1265 5125(@SupGap)m 240 fnt82
-2393 5128(de\207ned)m 3144(else)s 6(where)k 4137(as)s 220 fnt35
-4375 5125(0.40fk)m 240 fnt82 4973 5128(.)m 5124(It)s 5317(is)s
-5515(important)s 6492(that)s 6898(such)s 7382(g)s 1(aps)k
-7859(be)s 8128(e)s 3(xpressed)k 0 4840(in)m 232(units)s
-736(that)s 1142(v)s 6(ary)k 1603(with)s 2073(the)s
-2410(font)s 2843(size,)s 3309(so)s 3563(that)s 3969(the)s 3(y)k
-4420(remain)s 5129(correct)s 5839(when)s 6403(the)s 6739(size)s
-7154(changes.)s 8077(Collecting)s 0 4552(the)m 351(def)s 2(ault)k
-1076(v)s 6(alues)k 1735(into)s 2164(symbols)s 3016(lik)s 2(e)k
-220 fnt35 3432 4549(@SupGap)m 240 fnt82 4515 4552(ensures)m 5287(consistenc)s 3(y)k
-6457(and)s 6865(assists)s 7529(when)s 8109(tuning)s 8778(the)s
-0 4264(v)m 6(alues.)k 769(Here)s 1289(is)s 1499(another)s
-2276(characteristic)s 3600(de\207nition:)s 220 fnt35 480 3814(def o)m 3(v)k 5(er)k
-480 3526( precedence 54)m 480 3238( associativity left)m 480 2950( left x)m 480 2662( named gap { 0.2f })m 480 2374( r)m -3(ight y)k
-480 2086({)m 480 1798( @HContr)m 2(act @VContr)k 2(act {)k 480 1510( |0.5r)m -8(t @OneCol x)k
-480 1222( ^//gap @HLine)m 480 934( //gap |0.5r)m -8(t @OneCol y)k 480 646( })m 480 358(})m
-
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 71 77
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Italic
-%%+ font Times-Bold
-%%+ font Helvetica
-%%+ font Symbol
-/pgsave save def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-1 LoutMargSet
-grestore
-240 fnt83 0 13843(4.1.)m 454(An)s 774(equation)s 1666(formatting)s
-2730(pac)s 4(ka)k 2(g)k 2(e)k 240 fnt84
-8839 13840(71)m 240 fnt82 0 13205(Both)m 518(parameters)s 1611(are)s
-1953(centred,)s 2758(since)s 3299(we)s 3629(do)s 3917(not)s
-4278(kno)s 6(w)k 4853(which)s 5490(will)s 5911(be)s
-6188(the)s 6530(wider;)s 7181(we)s 7511(use)s 220 fnt35
-7881 13202(@OneCol)m 240 fnt82 8887 13205(to)m 0 12917(mak)m 2(e)k
-570(sure)s 1021(that)s 1437(the)s 1782(entire)s 2379(parameter)s
-3390(is)s 3598(centred,)s 4405(not)s 4769(just)s 5171(its)s
-5445(\207rst)s 5873(column,)s 6696(and)s 220 fnt35 7097 12914(@HContr)m 2(act)k
-240 fnt82 8358 12917(ensures)m 0 12629(that)m 428(the)s 787(fraction)s
-1597(will)s 2034(ne)s 6(v)k 3(er)k 2627(e)s 3(xpand)k
-3385(to)s 3635(\207ll)s 3966(all)s 4269(the)s 4628(a)s 4(v)k 6(ailable)k
-5547(space,)s 6196(as)s 6457(Lout)s 6980(objects)s 7719(ha)s 4(v)k 3(e)k
-8231(a)s 8408(natural)s 0 12341(tendenc)m 3(y)k 915(to)s
-1154(do)s 1447(\(Section)s 2300(2.6\).)s 220 fnt35 2843 12338(@HLine)m
-240 fnt82 3690 12341(is)m 3900(a)s 4066(horizontal)s 5090(line)s
-5504(of)s 5775(the)s 6123(width)s 6725(of)s 6996(the)s
-7344(column:)s 220 fnt35 480 11840(def @HLine)m 480 11552( named line { "0.05 ft setline)m 4(width" })k
-480 11264({ )m 480 10976( { "0 0 mo)m 3(v)k 5(eto xsiz)k 3(e 0 lineto" line "strok)k 4(e" } @Gr)k 2(aphic {})k
-480 10688(})m 240 fnt82 0 10194(Here)m 520(we)s 855(are)s
-1202(relying)s 1932(on)s 2229(the)s 2577(e)s 3(xpanding)k
-3625(tendenc)s 3(y)k 4540(just)s 4945(mentioned.)s 480 9820(The)m
-906(remaining)s 1925(symbols)s 2772(are)s 3116(quite)s 3647(similar)s
-4367(to)s 4603(these)s 5148(ones.)s 5748(W)s 19(e)k
-6114(conclude)s 7032(with)s 7511(a)s 7675(fe)s 6(w)k
-8078(\207ne)s 8490(points)s 0 9532(of)m 271(mathematical)s 1612(typesetting)s
-2714(mentioned)s 3782(by)s 4076(a)s 4242(leading)s 4999(authority)s 15(,)k
-5954(D.)s 6231(E.)s 6481(Knuth)s 7137([5)s 7322(].)s
-480 9158(Some)m 1090(symbols,)s 2004(such)s 2509(as)s 240 fnt78
-2768 9152(\243)m 240 fnt82 2963 9158(and)m 240 fnt78 3376 9152(\271)m
-240 fnt82 3505 9158(,)m 3621(should)s 4327(ha)s 4(v)k 3(e)k
-4837(a)s 5012(thick)s 5560(space)s 6156(on)s 6462(each)s
-6966(side;)s 7472(others,)s 8172(such)s 8677(as)s 240 fnt78
-8937 9152(+)m 240 fnt82 0 8870(and)m 240 fnt78 397 8864(-)m
-240 fnt82 525 8870(,)m 625(ha)s 4(v)k 3(e)k
-1119(a)s 1278(medium)s 2115(space;)s 2751(others)s 3379(ha)s 4(v)k 3(e)k
-3873(a)s 4032(thin)s 4454(space)s 5034(on)s 5324(the)s
-5665(right)s 6169(only)s 15(.)k 6737(This)s 7206(w)s 2(ould)k
-7854(be)s 8129(easy)s 8601(to)s 8833(do)s 0 8582(e)m 3(xcept)k
-681(that)s 1099(these)s 1646(spaces)s 2321(are)s 2668(not)s
-3034(w)s 2(anted)k 3781(in)s 4024(superscripts)s 5216(and)s
-5620(subscripts:)s 168 fnt83 578 8135(n)m 168 fnt78 680 8129(+)m
-793(1)s 240 fnt83 480 8037(r)m 240 fnt78 931 8029(-)m
-1131(1)s 240 fnt82 0 7578(In)m 271(ef)s 6(fect,)k
-929(the)s 1292(de\207nition)s 2281(of)s 2568(such)s 3079(symbols)s
-3943(changes)s 4780(depending)s 5846(on)s 6159(the)s 6522(conte)s 3(xt;)k
-7350(b)s 4(ut)k 7727(Lout)s 8254(does)s 8760(not)s
-0 7290(permit)m 682(such)s 1176(a)s 1340(change.)s 2180(Luckily)s 15(,)k
-3015(the)s 3361(so-called)s 4279(`style')s 4919(information)s 6102(set)s
-6426(by)s 6718(the)s 220 fnt35 7064 7287(@F)m 6(ont)k
-240 fnt82 7716 7290(,)m 220 fnt35 7821 7287(@Break)m 240 fnt82
-8617 7290(,)m 8722(and)s 220 fnt35 0 6999(@Space)m 240 fnt82
-891 7002(symbols)m 1734(can)s 2116(change)s 2844(in)s 3080(this)s
-3470(w)s 2(ay)k 15(.)k 4009(Accordingly)s 15(,)k
-5291(Eq)s 5608(uses)s 6065(the)s 220 fnt35 6406 6999(y)m
-240 fnt82 6568 7002(unit,)m 7040(which)s 7676(is)s 7879(part)s
-8304(of)s 8568(style,)s 0 6714(for)m 338(these)s 885(spaces:)s
-220 fnt35 480 6213(def @MedGap { 0.20y })m 480 5637(def "+" { &@MedGap plus &@MedGap })m 480 5061(def @HSqueez)m 3(e r)k -3(ight x { 0.2f @YUnit x })k
-240 fnt82 0 4562(In)m 261(the)s 615(equation)s 1502(as)s
-1758(a)s 1929(whole,)s 2627(the)s 2981(y)s 3161(unit)s
-3599(is)s 3814(initially)s 4616(set)s 4947(to)s 220 fnt35
-5192 4559(1f)m 240 fnt82 5372 4562(,)m 5484(and)s 5894(so)s
-220 fnt35 6166 4559(@MedGap)m 240 fnt82 7289 4562(ordinarily)m 8291(supplies)s
-0 4274(20%)m 495(of)s 777(this)s 1184(amount.)s 2077(But)s
-2494(superscripts)s 3697(and)s 4112(subscripts)s 5130(are)s 5488(enclosed)s
-6394(in)s 6648(the)s 220 fnt35 7007 4271(@HSqueez)m 3(e)k
-240 fnt82 8314 4274(symbol,)m 0 3986(which,)m 744(by)s 1091(changing)s
-2075(the)s 2476(y)s 2703(unit,)s 3235(ensures)s 4056(that)s
-4527(an)s 3(y)k 220 fnt35 4977 3983(@MedGap)m 240 fnt82
-6147 3986(within)m 6868(them)s 7459(is)s 7722(much)s 8364(smaller)s
-0 3698(than)m 469(usual.)s 240 fnt84 0 2955(4.2.)m 471(P)s 2(aragraphs,)k
-1780(displays,)s 2718(and)s 3159(lists)s 240 fnt82 480 2478(The)m
-914(remaining)s 1942(sections)s 2770(of)s 3047(this)s 3449(chapter)s
-4219(are)s 4572(all)s 4871(based)s 5481(on)s 5784(V)s 26(ersion)k
-6578(2)s 6759(of)s 7036(the)s 7391(DocumentLayout)s 0 2190(package.)m
-941(V)s 26(ersion)k 1722(3,)s 1942(which)s 2577(is)s
-2779(similar)s 3494(b)s 4(ut)k 3849(more)s 4389(elaborate,)s
-5364(is)s 5566(described)s 6533(from)s 7050(the)s 7391(user')s 13(s)k
-7991(perspecti)s 6(v)k 3(e)k 0 1902(in)m 249(the)s
-604(User')s 13(s)k 1272(Guide)s 1920([4)s 2113(].)s
-2363(In)s 2625(26)s 2925(pages)s 3528(of)s 3806(Lout,)s
-4372(the)s 4726(DocumentLaytout)s 6534(package)s 7381(de\207nes)s 8117(man)s 3(y)k
-8707(fea)s 8998(-)s 0 1614(tures)m 506(required)s 1350(in)s
-1583(the)s 1921(formatting)s 2972(of)s 3233(simple)s 3916(documents,)s
-5050(technical)s 5957(reports,)s 6717(and)s 7111(books,)s 7781(including)s
-8728(dis)s 8998(-)s 0 1326(plays,)m 603(lists,)s 1085(page)s
-1584(layout,)s 2280(cross)s 2813(references,)s 3891(tables)s 4490(of)s
-4752(contents,)s 5647(footnotes,)s 6635(\207gures,)s 7384(tables,)s 8039(references,)s
-0 1038(chapters,)m 903(sections,)s 1780(and)s 2184(sorted)s 2826(inde)s 3(x)k 3(es.)k
-480 664(The)m 939(symbols)s 1819(used)s 2347(for)s 2716(separating)s
-3782(paragraphs)s 4913(and)s 5348(producing)s 6403(displays)s 7269(and)s
-7704(lists)s 8170(may)s 8667(lack)s 0 376(the)m 351(e)s 3(xcitement)k
-1459(of)s 1733(more)s 2284(e)s 3(xotic)k 2921(features,)s
-3786(b)s 4(ut)k 4152(the)s 3(y)k 4618(can)s
-5010(teach)s 5574(some)s 6139(important)s 7131(lessons)s 7876(about)s
-8472(rob)s 4(ust)k 0 88(design.)m 786(The)s 1211(follo)s 6(wing)k
-2185(macro)s 2832(for)s 3167(separating)s 4199(paragraphs)s 5296(produces)s
-6207(a)s 6370(0.3)s 6711(cm)s 7060(v)s 3(ertical)k
-7824(space)s 8408(and)s 8809(a)s 8971(1)s
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 72 78
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Times-Italic
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-0 LoutMargSet
-grestore
-240 fnt84 0 13840(72)m 240 fnt83 7017 13843(Chapter)m 7867(4.)s
-8141(Examples)s 240 fnt82 0 13205(cm)m 352(indent)s 1010(on)s
-1307(the)s 1655(follo)s 6(wing)k 2632(line,)s 3097(and)s
-3501(is)s 3711(clearly)s 4414(on)s 4711(the)s 5059(right)s
-5570(track:)s 220 fnt35 480 12704(macro @PP { //0.3c &1c })m 240 fnt82 0 12210(Ne)m 6(v)k 3(ertheless)k
-1276(it)s 1468(has)s 1838(se)s 6(v)k 3(eral)k
-2560(major)s 3177(problems.)s 480 11836(The)m 220 fnt35 926 11833(&)m
-240 fnt82 1147 11836(symbol)m 1926(is)s 2154(subject)s 2910(to)s
-3168(widening)s 4130(during)s 4827(line)s 5260(adjustment,)s 6434(so)s
-6719(it)s 6930(should)s 7645(be)s 7946(replaced)s 8832(by)s
-220 fnt35 0 11545(1c @Wide {})m 240 fnt82 1213 11548(.)m 1387(But)s
-1804(then)s 2284(white)s 2882(space)s 3480(follo)s 6(wing)k
-4468(the)s 4827(symbol)s 5597(will)s 6034(af)s 6(fect)k
-6641(the)s 7000(result,)s 7648(so)s 7925(an)s 8219(e)s 3(xtra)k
-220 fnt35 8764 11545(&0i)m 240 fnt82 0 11260(must)m 528(be)s
-814(added.)s 1553(If)s 1787(the)s 2138(document)s 3146(is)s
-3359(printed)s 4098(double)s 4810(spaced,)s 5571(this)s 5971(paragraph)s
-6987(g)s 1(ap)k 7389(will)s 7818(f)s 2(ail)k
-8192(to)s 8435(widen:)s 0 10972(it)m 204(should)s 914(be)s
-1208(e)s 3(xpressed)k 2219(in)s 2475(terms)s 3068(of)s
-3352(the)s 220 fnt35 3712 10969(v)m 240 fnt82 3894 10972(unit,)m
-4386(with)s 4880(mark-to-mark)s 6280(spacing)s 7076(mode.)s 7785(Similarly)s 15(,)k
-8778(the)s 0 10684(paragraph)m 1013(indent)s 1671(should)s 2368(probably)s
-3273(be)s 3555(made)s 4129(proportional)s 5366(to)s 5605(the)s
-5953(font)s 6398(size.)s 480 10310(`Magic)m 1211(numbers')s 2135(lik)s 2(e)k
-220 fnt35 2535 10307(0.3c)m 240 fnt82 2993 10310(should)m 3678(not)s
-4032(be)s 4302(b)s 4(uried)k 4955(in)s 5186(de\207nitions)s
-6235(where)s 6863(the)s 3(y)k 7314(cannot)s 8000(be)s
-8270(changed)s 0 10022(easily)m 15(,)k 649(or)s 908(k)s 2(ept)k
-1378(consistent)s 2394(with)s 2876(similar)s 3598(de\207nitions)s 4659(during)s
-5337(tuning.)s 6113(The)s 3(y)k 6656(are)s 7003(much)s
-7592(better)s 8195(placed)s 8876(as)s 0 9734(symbols,)m 905(possibly)s
-1757(parameters)s 2855(of)s 3126(the)s 3474(enclosing)s 4444(package:)s
-220 fnt35 480 9233(def @DocumentLa)m 6(y)k 4(out)k 480 8945( named @P)m 8(ar)k 2(aGap { 1.3vx })k
-480 8657( named @P)m 8(ar)k 2(aIndent { 2f })k 480 8369( ...)m 480 8081(@Begin)m
-480 7505( macro @PP { //@P)m 8(ar)k 2(aGap @P)k 8(ar)k 2(aIndent @Wide &0i })k
-480 7217( macro @LP { //@P)m 8(ar)k 2(aGap })k 480 6929( ...)m 480 6641(@End @DocumentLa)m 6(y)k 4(out)k
-240 fnt82 0 6143(and)m 404(we)s 739(ha)s 4(v)k 3(e)k
-1240(arri)s 6(v)k 3(ed)k 1965(at)s 2197(the)s
-2545(de\207nition)s 3519(of)s 220 fnt35 3790 6140(@PP)m 240 fnt82
-4356 6143(as)m 4606(it)s 4798(appears)s 5579(in)s 5822(the)s
-6170(DocumentLayout)s 7905(package.)s 480 5769(A)m 710(display)s 1455(is)s
-1665(a)s 1831(table)s 2351(in)s 2594(which)s 3236(the)s
-3584(\207rst)s 4015(column)s 4790(is)s 5000(blank:)s 240 fnt83
-480 5266(pr)m 8(eceding)k 1483(te)s 4(xt)k 220 fnt35
-480 4973(//@DispGap |@DispIndent)m 240 fnt83 3183 4978(display)m 220 fnt35 480 4685(//@DispGap)m
-240 fnt83 480 4402(following)m 1438(te)s 4(xt)k 240 fnt82
-0 3901(Edge-to-edge)m 1345(is)s 1557(the)s 1906(appropriate)s 3052(spacing)s
-3838(mode)s 4427(before)s 5095(and)s 5500(after)s 5998(displays,)s
-6891(since)s 7439(the)s 7789(display)s 8536(could)s 0 3613(be)m
-273(a)s 430(table)s 941(or)s 1191(\207gure)s 1796(whose)s
-2455(mark)s 2998(does)s 3479(not)s 3836(correspond)s 4948(to)s
-5178(a)s 5335(baseline.)s 6273(Thus,)s 220 fnt35 6850 3610(1v)m
-240 fnt82 7132 3613(is)m 7333(a)s 7490(reasonable)s 8558(v)s 6(alue)k
-0 3325(for)m 220 fnt35 338 3322(@DispGap)m 240 fnt82 1406 3325(.)m
-480 2951(The)m 957(ordinary)s 1871(user)s 2379(cannot)s 3126(be)s
-3458(e)s 3(xpected)k 4413(to)s 4702(type)s 5219(the)s
-5617(Lout)s 6179(source)s 6908(sho)s 6(wn)k 7635(abo)s 3(v)k 3(e;)k
-8363(a)s 8579(more)s 0 2663(appropriate)m 1144(syntax)s 1824(is)s
-240 fnt83 480 2160(pr)m 8(eceding)k 1483(te)s 4(xt)k
-220 fnt35 480 1867(@IndentedDispla)m 6(y {)k 240 fnt83 2514 1872(display)m
-220 fnt35 3321 1867(})m 240 fnt83 480 1584(following)m 1438(te)s 4(xt)k
-240 fnt82 0 1083(This)m 491(presents)s 1340(a)s 1521(problem:)s
-2499(if)s 220 fnt35 2731 1080(@IndentedDispla)m 6(y)k 240 fnt82
-4593 1083(is)m 4819(made)s 5408(a)s 5589(de\207nition)s 6578(with)s
-7075(a)s 7256(right)s 7782(parameter)s 9(,)k 8850(its)s
-0 795(result)m 598(will)s 1032(be)s 1322(an)s 1613(object)s
-2265(separated)s 3233(from)s 3765(the)s 4121(surrounding)s 5339(te)s 3(xt)k
-5762(only)s 6250(by)s 6552(white)s 7147(space,)s 7793(hence)s
-8415(part)s 8855(of)s 0 507(the)m 343(paragraph;)s 1405(while)s
-1986(if)s 2197(it)s 2383(is)s 2587(a)s 2747(macro,)s
-3445(the)s 3787(\207nal)s 220 fnt35 4261 504(//@DispGap)m 240 fnt82
-5505 507(cannot)m 6197(be)s 6473(included)s 7349(in)s 7586(it.)s
-7876(The)s 8298(solution)s 0 219(adopted)m 816(in)s 1059(the)s
-1407(DocumentLayout)s 3142(package)s 3982(uses)s 4445(a)s 4611(g)s 1(alle)k 3(y)k
-5245(and)s 5649(a)s 5815(macro:)s
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 73 79
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Italic
-%%+ font Times-Bold
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-1 LoutMargSet
-grestore
-240 fnt83 0 13843(4.2.)m 454(P)s 19(ar)k 3(a)k 2(gr)k 3(aphs,)k
-1665(displays,)s 2542(and)s 2968(lists)s 240 fnt84 8833 13840(73)m
-220 fnt35 480 13207( def @DispPlace { @Galle)m 4(y })k 480 12919( def @Disp into { @DispPlace&&preceding })m 480 12631( r)m -3(ight x)k
-480 12343( {)m 480 12055( @OneRo)m 3(w x)k 480 11767( })m 480 11191( macro @IndentedDispla)m 6(y)k
-480 10903( {)m 480 10615( //@DispGap |@DispIndent @DispPlace |)m 480 10327( //@DispGap // @Disp)m 480 10039( })m 0 9542(@DispPlace)m
-240 fnt82 1257 9545(and)m 220 fnt35 1657 9542(@Disp)m 240 fnt82
-2366 9545(are)m 2709(not)s 3070(e)s 3(xported,)k 4007(so)s
-4269(there)s 4798(is)s 5003(no)s 5292(danger)s 5999(of)s
-6266(a)s 6427(name)s 6997(clash)s 7541(with)s 8019(some)s
-8575(other)s 0 9257(symbol.)m 869(The)s 1297(ordinary)s 2161(user')s 13(s)k
-2769(syntax)s 3449(e)s 3(xpands)k 4282(to)s 240 fnt83
-480 8754(pr)m 8(eceding)k 1483(te)s 4(xt)k 220 fnt35
-480 8461(//@DispGap |@DispIndent @DispPlace |)m 480 8173(//@DispGap // @Disp {)m 240 fnt83 2890 8178(display)m 220 fnt35
-3637 8173(})m 240 fnt83 480 7890(following)m 1438(te)s 4(xt)k
-240 fnt82 0 7389(and)m 397(the)s 220 fnt35 737 7386(@Disp)m
-240 fnt82 1442 7389(g)m 1(alle)k 3(y)k 2068(appears)s
-2842(at)s 3066(the)s 3406(preceding)s 220 fnt35 4394 7386(@DispPlace)m
-240 fnt82 5595 7389(,)m 5694(being)s 6272(itself)s 6812(replaced)s
-7671(by)s 220 fnt35 7957 7386(@Null)m 240 fnt82 8542 7389(.)m
-8698(The)s 220 fnt35 0 7098(//)m 240 fnt82 184 7101(symbol)m
-942(protects)s 1748(the)s 2094(preceding)s 220 fnt35 3088 7098(//@DispGap)m
-240 fnt82 4337 7101(from)m 4859(being)s 5443(deleted)s 6189(by)s
-6481(this)s 220 fnt35 6876 7098(@Null)m 240 fnt82 7519 7101(when)m
-8094(there)s 8625(is)s 8833(no)s 0 6813(follo)m 6(wing)k
-977(te)s 3(xt.)k 480 6439(An)m 858(automatically)s 2240(numbered)s
-3283(list)s 3662(could)s 4280(ha)s 4(v)k 3(e)k
-4809(an)s 5121(arbitrarily)s 6156(lar)s 4(ge)k 6713(number)s
-7532(of)s 7831(items,)s 8483(so,)s 8832(by)s 0 6151(analogy)m
-812(with)s 1294(sequences)s 2315(of)s 2586(pages,)s 3238(we)s
-3573(see)s 3934(immmediately)s 5368(that)s 5786(recursion)s 6732(must)s
-7257(be)s 7539(in)s 9(v)k 4(olv)k 3(ed:)k
-220 fnt35 480 5650(def @List r)m -3(ight n)k 2(um)k 480 5362({)m
-480 5074( @DispIndent @Wide n)m 2(um.)k 13( | @ItemPlace)k 480 4786( //@DispGap @List @Ne)m 6(xt n)k 2(um)k
-480 4498(})m 240 fnt82 0 4004(Notice)m 689(ho)s 6(w)k
-1146(the)s 220 fnt35 1490 4001(@Ne)m 6(xt)k 240 fnt82
-2210 4004(symbol)m 2965(w)s 2(orks)k 3595(in)s 3834(conjunction)s
-5017(with)s 5495(the)s 5838(recursion)s 6780(to)s 7015(produce)s
-7838(an)s 8116(ascending)s 0 3716(sequence)m 933(of)s 1204(numbers;)s
-2140(the)s 2488(result)s 3078(of)s 220 fnt35 3349 3713(@List 1)m
-240 fnt82 4113 3716(will)m 4539(be)s 220 fnt35 480 3215(1.)m 13( @ItemPlace)k
-480 2927(2.)m 13( @ItemPlace)k 480 2639(3.)m 13( @ItemPlace)k 480 2351(...)m
-240 fnt82 0 1900(W)m 19(e)k 362(can)s 744(follo)s 6(w)k
-1408(this)s 1797(with)s 2271(items)s 2832(which)s 3466(are)s
-3806(g)s 1(alle)k 3(ys)k 4522(tar)s 4(geted)k
-5338(to)s 220 fnt35 5569 1897(@ItemPlace&&preceding)m 240 fnt82 8010 1900(,)m
-8110(and)s 220 fnt35 8506 1897(@List)m 240 fnt82 0 1612(will)m
-426(e)s 3(xpand)k 1173(just)s 1578(enough)s 2341(to)s
-2580(accommodate)s 3964(them.)s 480 1238(The)m 908(usual)s 1468(problem)s
-2325(with)s 2807(recursi)s 6(v)k 3(e-)k 3741(recepti)s 6(v)k 3(e)k
-4663(symbols)s 5513(no)s 6(w)k 5974(arises:)s 6683(there)s
-7216(is)s 7426(al)s 2(w)k 2(ays)k 8137(one)s
-8540(une)s 3(x)k 8998(-)s 0 950(panded)m 220 fnt35
-753 947(@List)m 240 fnt82 1313 950(,)m 1424(and)s 1832(until)s
-2329(it)s 2525(can)s 2917(be)s 3203(remo)s 3(v)k 3(ed)k
-4096(the)s 4448(g)s 1(alle)k 3(y)k 5086(containing)s
-6152(it)s 6348(will)s 6778(appear)s 7479(to)s 7722(be)s
-8008(incomplete)s 0 662(and)m 394(will)s 810(be)s 1081(pre)s 6(v)k 3(ented)k
-2063(at)s 2285(that)s 2692(point)s 3234(from)s 3747(\210ushing)s
-4562(into)s 4977(its)s 5242(parent)s 5889(\(see)s 6318(page)s
-6816(29\).)s 7289(W)s 19(e)k 7647(adopt)s 8229(the)s
-8566(usual)s 0 374(solution:)m 937(a)s 1104(forcing)s 1847(g)s 1(alle)k 3(y)k
-2482(into)s 2908(a)s 3074(later)s 3558(tar)s 4(get)k
-4158(will)s 4584(replace)s 5330(the)s 5679(last)s 220 fnt35
-6070 371(@List)m 240 fnt82 6691 374(by)m 220 fnt35 6986 371(@Null)m
-240 fnt82 7571 374(.)m 7735(This)s 8212(brings)s 8862(us)s
-0 86(to)m 239(the)s 587(de\207nitions)s 1648(as)s 1898(the)s 3(y)k
-2361(appear)s 3058(in)s 3301(DocumentLayout:)s
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 74 80
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Times-Italic
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-0 LoutMargSet
-grestore
-240 fnt84 0 13840(74)m 240 fnt83 7017 13843(Chapter)m 7867(4.)s
-8141(Examples)s 220 fnt35 480 13207(def @ItemPlace { @Galle)m 4(y })k 480 12919(def @ListItem into { @ItemPlace&&preceding })m
-480 12631( r)m -3(ight x)k 480 12343({ x })m 480 11851(def @EndListPlace { @Galle)m 4(y })k
-480 11563(def @EndList f)m 6(orce into { @EndListPlace&&preceding })k 480 11275({})m 480 10783(def @Ra)m 4(wIndentedList)k
-480 10495( named style r)m -3(ight tag {})k 480 10207( named indent { @DispIndent })m 480 9919( named gap { @DispGap })m 480 9631( named star)m -8(t { 1 })k
-480 9343({)m 480 9055( def @IList r)m -3(ight n)k 2(um)k 480 8767( {)m
-480 8479( indent @Wide {style n)m 2(um} | @ItemPlace)k 480 8191( //gap @IList @Ne)m 6(xt n)k 2(um)k
-480 7903( })m 480 7327( @IList star)m -8(t // @EndListPlace)k 480 7039(})m 240 fnt82
-0 6545(No)m 6(w)k 514(gi)s 6(v)k 3(en)k
-1094(the)s 1442(input)s 220 fnt35 480 6044(@Ra)m 4(wIndentedList)k
-480 5756(@ListItem { \207rst item })m 480 5468(@ListItem { second item })m 480 5180(...)m 480 4892(@ListItem { last item })m 480 4604(@EndList)m
-0 4146(@Ra)m 4(wIndentedList)k 240 fnt82 1908 4149(will)m 2334(e)s 3(xpand)k
-3081(to)s 3320(recei)s 6(v)k 3(e)k 4056(the)s
-4404(items,)s 5028(and)s 5432(will)s 5858(be)s 6140(closed)s
-6809(of)s 6(f)k 7153(by)s 220 fnt35 7447 4146(@EndList)m
-240 fnt82 8397 4149(.)m 480 3775(The)m 220 fnt35 913 3772(indent)m
-240 fnt82 1506 3775(,)m 220 fnt35 1619 3772(gap)m 240 fnt82
-1977 3775(,)m 2089(and)s 220 fnt35 2499 3772(star)m -8(t)k
-240 fnt82 2996 3775(parameters)m 4099(are)s 4452(straightforw)s 2(ard)k
-5986(\(note)s 6538(that)s 6962(the)s 7316(b)s 4(urden)k
-8039(of)s 8316(typing)s 220 fnt35 8987 3772(1)m 240 fnt82
-0 3487(has)m 378(been)s 895(lifted)s 1464(from)s 1996(the)s
-2352(ordinary)s 3224(user\),)s 3816(b)s 4(ut)k 4186(the)s
-220 fnt35 4543 3484(style)m 240 fnt82 5054 3487(parameter)m 6076(has)s
-6454(a)s 6628(parameter)s 7650(of)s 7929(its)s 8213(o)s 6(wn)k
-8686(\(see)s 0 3199(page)m 508(16\).)s 991(It)s 1196(is)s
-1406(used)s 1903(lik)s 2(e)k 2315(this:)s 220 fnt35
-480 2698(def @Ra)m 4(wNumberedList { @Ra)k 4(wIndentedList style { tag.)k 13( } })k 480 2410(def @Ra)m 4(wP)k 8(arenNumberedList { @Ra)k 4(wIndentedList style { \(tag\) } })k
-240 fnt82 0 1911(In)m 220 fnt35 276 1908(@Ra)m 4(wNumberedList)k
-240 fnt82 2294 1911(,)m 220 fnt35 2422 1908(style)m 240 fnt82
-2946 1911(is)m 3176(gi)s 6(v)k 3(en)k 3777(the)s
-4146(v)s 6(alue)k 220 fnt35 4734 1908(tag.)m 240 fnt82
-5081 1911(,)m 5209(where)s 220 fnt35 5870 1908(tag)m 240 fnt82
-6243 1911(is)m 6474(its)s 6771(o)s 6(wn)k 7255(right)s
-7787(parameter)s 9(,)k 8860(so)s 0 1623(the)m 348(v)s 6(alue)k
-916(of)s 220 fnt35 1187 1620({style n)m 2(um})k 240 fnt82
-2321 1623(within)m 220 fnt35 2989 1620(@IList)m 240 fnt82 3670 1623(is)m
-220 fnt35 3880 1620(n)m 2(um.)k 240 fnt82 4347 1623(;)m
-4459(while)s 5046(in)s 220 fnt35 5289 1620(@Ra)m 4(wP)k 8(arenNumberedList)k
-240 fnt82 7884 1623(,)m 220 fnt35 7992 1620({style n)m 2(um})k
-240 fnt82 0 1335(is)m 220 fnt35 219 1332(\(n)m 2(um\))k
-240 fnt82 776 1335(.)m 949(In)s 1215(this)s 1620(w)s 2(ay)k
-2080(we)s 2425(achie)s 6(v)k 3(e)k 3211(an)s
-3503(unlimited)s 4487(v)s 6(ariety)k 5207(of)s 5487(numbering)s
-6587(formats)s 7376(without)s 8176(ha)s 4(ving)k 8887(to)s
-0 1047(re)m 6(write)k 220 fnt35 725 1044(@Ra)m 4(wIndentedList)k
-240 fnt82 2633 1047(o)m 3(v)k 3(er)k 3112(and)s
-3516(o)s 3(v)k 3(er)k 13(.)k 480 673(These)m
-1113(list)s 1470(symbols)s 2325(are)s 2678(objects)s 3412(without)s
-4209(surrounding)s 5425(space,)s 6069(so)s 6341(macros)s 7088(similar)s
-7816(to)s 8061(those)s 8629(used)s 0 385(for)m 338(displays)s
-1173(are)s 1520(needed:)s
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 75 81
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Italic
-%%+ font Times-Bold
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-1 LoutMargSet
-grestore
-240 fnt83 0 13843(4.2.)m 454(P)s 19(ar)k 3(a)k 2(gr)k 3(aphs,)k
-1665(displays,)s 2542(and)s 2968(lists)s 240 fnt84 8833 13840(75)m
-220 fnt35 480 13207(macro @NumberedList { //@DispGap @Ra)m 4(wNumberedList //@DispGap })k 480 12919(macro @P)m 8(arenNumberedList { //@DispGap @Ra)k 4(wP)k 8(arenNumberedList //@DispGap })k
-240 fnt82 0 12423(and)m 404(so)s 670(on.)s 480 12049(Lists)m
-994(numbered)s 2007(by)s 2300(Roman)s 3047(numerals)s 3973(present)s
-4721(a)s 4886(problem,)s 5788(because)s 220 fnt35 6600 12046(@Ne)m 6(xt)k
-240 fnt82 7322 12049(will)m 7747(not)s 8111(increment)s 0 11761(Roman)m
-749(numerals.)s 1789(Instead,)s 2586(the)s 3(y)k 3049(must)s
-3574(be)s 3856(stored)s 4498(in)s 4741(a)s 4907(database:)s
-220 fnt35 480 11260(def @Roman)m 480 10972( left @T)m 26(ag)k 480 10684( r)m -3(ight @V)k 15(al)k
-480 10396({ @V)m 15(al })k 480 9820(@SysDatabase @Roman { standard })m 0 9319(@SysDatabase)m 240 fnt82
-1602 9322(is)m 1835(preferred)s 2790(o)s 3(v)k 3(er)k
-220 fnt35 3292 9319(@Database)m 240 fnt82 4529 9322(here)m 5019(because)s
-5855(this)s 6274(database)s 7176(should)s 7896(be)s 8201(k)s 2(ept)k
-8694(in)s 8960(a)s 0 9034(standard)m 880(place)s 1452(and)s
-1868(shared)s 2562(by)s 2868(e)s 6(v)k 3(eryone.)k
-3912(The)s 4352(database)s 5243(itself,)s 5838(a)s 6016(\207le)s
-6389(called)s 220 fnt35 7029 9031(standard.ld)m 240 fnt82 8174 9034(in)m
-8429(Basser)s 0 8746(Lout,)m 559(contains)s 1407(in)s 9(v)k 4(ocations)k
-2548(of)s 220 fnt35 2819 8743(@Roman)m 240 fnt82 3735 8746(,)m
-3842(each)s 4337(enclosed)s 5232(in)s 5475(braces:)s 220 fnt35
-480 8264({ 1 @Roman i })m 480 7976({ 2 @Roman ii })m 480 7688(...)m 480 7400({ 100 @Roman c })m 240 fnt82
-0 6906(Then)m 220 fnt35 549 6903(@Roman&&12)m 240 fnt82 2065 6906(for)m
-2403(e)s 3(xample)k 3266(has)s 3636(v)s 6(alue)k
-4204(xii,)s 4563(and)s 220 fnt35 480 6405(def @Ra)m 4(wRomanList { @Ra)k 4(wIndentedList style { {@Roman&&tag}.)k 13( } })k
-240 fnt82 0 5906(produces)m 922(a)s 1096(list)s 1454(numbered)s
-2477(by)s 2779(Roman)s 3535(numerals.)s 4583(The)s 5019(counting)s
-5917(still)s 6337(proceeds)s 7246(in)s 7496(Arabic,)s 8261(b)s 4(ut)k
-8631(each)s 0 5618(Arabic)m 719(numeral)s 1573(is)s 1799(con)s 9(v)k 3(erted)k
-2804(to)s 3059(Roman)s 3824(by)s 4134(the)s 4498(cross)s
-5056(reference.)s 6123(Since)s 6726(arbitrary)s 7617(objects)s 8361(may)s
-8844(be)s 0 5330(stored)m 642(in)s 885(databases,)s 1908(arbitrary)s
-2783(\207nite)s 3330(sequences)s 4351(of)s 4622(objects)s 5350(may)s
-5816(be)s 6098(`counted')s 7047(in)s 7290(this)s 7686(w)s 2(ay)k 15(.)k
-240 fnt84 0 4538(4.3.)m 471(P)s 2(age)k 1017(lay)s 6(out)k
-240 fnt82 480 4061(The)m 921(page)s 1443(layout)s 2115(de\207nitions)s
-3190(gi)s 6(v)k 3(en)k 3783(in)s 4040(Section)s
-4828(1.2,)s 5249(although)s 6158(correct,)s 6940(are)s 7301(v)s 3(ery)k
-7791(basic.)s 8460(In)s 8730(this)s 0 3773(section)m 726(we)s
-1053(present)s 1795(the)s 2135(de\207nitions)s 3187(used)s 3676(by)s
-3962(the)s 4302(DocumentLayout)s 6029(package)s 6860(for)s 7190(laying)s
-7833(out)s 8191(the)s 8530(pages)s 0 3485(of)m 271(books,)s
-950(including)s 1906(running)s 2704(page)s 3211(headers)s 3991(and)s
-4394(footers,)s 5164(dif)s 6(ferent)k 6038(formats)s 6817(for)s
-7155(odd)s 7572(and)s 7975(e)s 6(v)k 3(en)k
-8474(pages,)s 0 3197(and)m 404(so)s 670(on.)s 1074(The)s
-1502(present)s 2252(document)s 3256(is)s 3466(produced)s 4415(with)s
-4897(these)s 5444(de\207nitions.)s 480 2823(W)m 19(e)k 846(be)s 3(gin)k
-1429(with)s 1908(a)s 2071(fe)s 6(w)k 2474(de\207nitions)s
-3531(which)s 4170(permit)s 4850(the)s 5195(user)s 5650(to)s
-5885(create)s 6507(cross)s 7046(references)s 8074(of)s 8342(the)s
-8686(`see)s 0 2535(page)m 509(27')s 863(v)s 6(ariety)k
-1576(which)s 2220(will)s 2647(be)s 2931(k)s 2(ept)k
-3403(up)s 3698(to)s 3938(date)s 4394(automatically)s 15(.)k
-5845(The)s 6275(user)s 6734(marks)s 7371(the)s 7721(tar)s 4(get)k
-8322(page)s 8832(by)s 0 2247(placing)m 220 fnt35 756 2244(@P)m 8(ageMar)k -3(k intro)k
-240 fnt82 2454 2247(,)m 2560(for)s 2897(e)s 3(xample,)k
-3810(at)s 4041(the)s 4388(point)s 4939(of)s 5209(interest,)s
-6017(and)s 6420(refers)s 7012(to)s 7250(the)s 7597(mark)s 2(ed)k
-8369(page)s 8876(as)s 220 fnt35 0 1956(@P)m 8(ageOf intro)k
-240 fnt82 1499 1959(else)m 6(where:)k 220 fnt35 480 1459(e)m 6(xpor)k -8(t @T)k 26(ag)k
-480 1171(def @P)m 8(ageMar)k -3(k)k 4(er r)k -3(ight @T)k 26(ag { @Null })k
-480 674(def @P)m 8(ageMar)k -3(k r)k -3(ight x)k 480 386({)m
-480 98( @P)m 8(ageMar)k -3(k)k 4(er&&preceding @T)k 26(agged x)k
-
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 76 82
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Times-Italic
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-0 LoutMargSet
-grestore
-240 fnt84 0 13840(76)m 240 fnt83 7017 13843(Chapter)m 7867(4.)s
-8141(Examples)s 220 fnt35 480 13210(})m 480 12718(def @P)m 8(ageOf r)k -3(ight x)k
-480 12430({)m 480 12142( @P)m 8(ageMar)k -3(k)k 4(er&&x @Open { @T)k 26(ag })k
-480 11854(})m 240 fnt82 0 11360(W)m 19(e)k 385(will)s
-828(see)s 1206(belo)s 6(w)k 1856(that)s 2291(an)s
-2591(in)s 9(v)k 4(ocation)k 3662(of)s 220 fnt35
-3949 11357(@P)m 8(ageMar)k -3(k)k 4(er)k 240 fnt82
-5435 11360(appears)m 6233(before)s 6916(each)s 7428(page,)s 8004(with)s
-220 fnt35 8503 11357(@T)m 26(ag)k 240 fnt82 0 11072(parameter)m
-1014(equal)s 1587(to)s 1826(the)s 2174(page)s 2682(number)s 13(.)k
-3564(Suppose)s 4432(that)s 220 fnt35 4850 11069(@P)m 8(ageMar)k -3(k intro)k
-240 fnt82 6548 11072(,)m 6655(which)s 7297(e)s 3(xpands)k
-8130(to)s 220 fnt35 480 10571(@P)m 8(ageMar)k -3(k)k 4(er&&preceding @T)k 26(agged intro)k
-240 fnt82 0 10072(happens)m 855(to)s 1113(f)s 2(all)k
-1502(on)s 1819(page)s 2346(27)s 2653(of)s 2944(the)s
-3311(\207nal)s 3810(printed)s 4564(document)s 5588(\(of)s 5957(course,)s
-6707(its)s 7003(v)s 6(alue)k 7590(is)s 220 fnt35
-7819 10069(@Null)m 240 fnt82 8484 10072(which)m 0 9784(mak)m 2(es)k
-686(it)s 905(in)s 9(visible\).)k 1988(Then)s 2564(the)s
-2939(ef)s 6(fect)k 3561(of)s 220 fnt35 3859 9781(@T)m 26(agged)k
-240 fnt82 4874 9784(is)m 5111(to)s 5377(attach)s 220 fnt35
-6030 9781(intro)m 240 fnt82 6536 9784(as)m 6812(an)s 7122(e)s 3(xtra)k
-7683(tag)s 8054(to)s 8320(the)s 8695(\207rst)s 0 9496(in)m 9(v)k 4(ocation)k
-1092(of)s 220 fnt35 1401 9493(@P)m 8(ageMar)k -3(k)k 4(er)k
-240 fnt82 2908 9496(preceding)m 3943(that)s 4399(\207nal)s 4917(point,)s
-5554(and)s 5997(this)s 6431(must)s 6994(be)s 220 fnt35
-7315 9493(@P)m 8(ageMar)k -3(k)k 4(er 27)k 240 fnt82
-9022 9496(.)m 0 9208(Therefore)m 997(the)s 1345(e)s 3(xpression)k
-220 fnt35 480 8707(@P)m 8(ageMar)k -3(k)k 4(er&&intro @Open { @T)k 26(ag })k
-240 fnt82 0 8208(will)m 422(open)s 941(the)s 1285(in)s 9(v)k 4(ocation)k
-220 fnt35 2334 8205(@P)m 8(ageMar)k -3(k)k 4(er 27)k
-240 fnt82 4097 8208(and)m 4497(yield)s 5028(the)s 5372(v)s 6(alue)k
-5936(of)s 6203(its)s 220 fnt35 6474 8205(@T)m 26(ag)k
-240 fnt82 7093 8208(parameter)m 9(,)k 8141(27.)s 8540(Thus,)s
-220 fnt35 0 7917(@P)m 8(ageOf intro)k 240 fnt82 1499 7920(appearing)m
-2495(an)s 3(ywhere)k 3478(in)s 3721(the)s 4069(document)s
-5073(yields)s 5695(27.)s 480 7546(Ne)m 3(xt)k 1009(we)s
-1351(ha)s 4(v)k 3(e)k 1859(some)s 2427(little)s
-2926(de\207nitions)s 3994(for)s 4339(v)s 6(arious)k 5095(parts)s
-5617(of)s 5895(the)s 6250(page.)s 220 fnt35 6873 7543(@FullPlace)m
-240 fnt82 8055 7546(will)m 8488(be)s 8778(the)s 0 7258(tar)m 4(get)k
-599(of)s 870(full-width)s 1882(body)s 2416(te)s 3(xt:)k
-220 fnt35 480 6757(def @FullPlace { @Galle)m 4(y })k 0 6256(@ColPlace)m 240 fnt82
-1151 6259(will)m 1577(be)s 1859(the)s 2207(tar)s 4(get)k
-2806(of)s 3077(body)s 3611(te)s 3(xt)k 4026(within)s
-4694(one)s 5096(column:)s 220 fnt35 480 5758(def @ColPlace { @Galle)m 4(y })k
-0 5257(@T)m 26(opList)k 240 fnt82 972 5260(will)m 1398(be)s
-1680(the)s 2028(tar)s 4(get)k 2627(of)s 2898(\207gures)s
-3600(and)s 4004(tables:)s 220 fnt35 480 4759(e)m 6(xpor)k -8(t @T)k 26(ag)k
-480 4471(def @T)m 26(opList r)k -3(ight @T)k 26(ag)k 480 4183({)m
-480 3895( @Galle)m 4(y)k 480 3607( //@T)m 26(opGap @T)k 26(opList @Ne)k 6(xt @T)k 26(ag)k
-480 3319(})m 240 fnt82 0 2825(W)m 19(e)k 392(ha)s 4(v)k 3(e)k
-916(tak)s 2(en)k 1512(a)s 1702(shortcut)s 2555(here,)s
-3096(a)s 4(v)k 4(oiding)k 4002(an)s 4309(unnecessary)s
-220 fnt35 5555 2822(@T)m 26(opPlace)k 240 fnt82 6753 2825(symbol.)m
-220 fnt35 7645 2822(@F)m 6(ootList)k 240 fnt82 8722 2825(and)m
-220 fnt35 0 2534(@F)m 6(ootSect)k 240 fnt82 1142 2537(de\207ne)m
-1774(a)s 1931(sequence)s 2854(of)s 3116(full-width)s 4119(tar)s 4(gets)k
-4793(at)s 5015(the)s 5354(foot)s 5790(of)s 6052(the)s
-6390(page)s 6889(for)s 7218(footnotes,)s 8205(preceded)s 0 2249(by)m
-294(a)s 460(short)s 998(horizontal)s 2022(line:)s 220 fnt35
-480 1748(e)m 6(xpor)k -8(t @T)k 26(ag)k 480 1460(def @F)m 6(ootList r)k -3(ight @T)k 26(ag)k
-480 1172({)m 480 884( @Galle)m 4(y)k 480 596( //@F)m 6(ootGap @F)k 6(ootList @Ne)k 6(xt @T)k 26(ag)k
-480 308(})m
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 77 83
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Italic
-%%+ font Times-Bold
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-1 LoutMargSet
-grestore
-240 fnt83 0 13843(4.3.)m 454(P)s 19(a)k 2(g)k 2(e)k
-976(layout)s 240 fnt84 8831 13840(77)m 220 fnt35 480 13207(def @F)m 6(ootSect)k
-480 12919({)m 480 12631( @F)m 6(ootLen @Wide @HLine)k 480 12343( //@F)m 6(ootGap @F)k 6(ootList 1 ||@F)k 6(ootLen)k
-480 12055(})m 240 fnt82 0 11561(Similarly)m 15(,)k 220 fnt35
-988 11558(@ColF)m 6(ootList)k 240 fnt82 2378 11561(and)m 220 fnt35
-2791 11558(@ColF)m 6(ootSect)k 240 fnt82 4279 11561(pro)m 3(vide)k
-5072(a)s 5247(sequence)s 6189(of)s 6469(tar)s 4(gets)k
-7161(for)s 7508(footnotes)s 8458(within)s 0 11273(one)m 402(column:)s
-220 fnt35 480 10822(e)m 6(xpor)k -8(t @T)k 26(ag)k
-480 10534(def @ColF)m 6(ootList r)k -3(ight @T)k 26(ag)k 480 10246({)m
-480 9958( @Galle)m 4(y)k 480 9670( //@F)m 6(ootGap @ColF)k 6(ootList @Ne)k 6(xt @T)k 26(ag)k
-480 9382(})m 480 8806(def @ColF)m 6(ootSect)k 480 8518({)m 480 8230( @ColF)m 6(ootLen @Wide @HLine)k
-480 7942( //@F)m 6(ootGap @ColF)k 6(ootList 1 ||@ColF)k 6(ootLen)k 480 7654(})m
-240 fnt82 0 7160(The)m 428(ne)s 3(xt)k 897(de\207nition)s
-1871(pro)s 3(vides)k 2743(a)s 2909(horizontal)s 3933(sequence)s
-4866(of)s 5137(one)s 5539(or)s 5798(more)s 6345(columns:)s
-220 fnt35 480 6659(def @ColList r)m -3(ight col)k 480 6371({)m 480 6083( def @Column)m
-480 5795( { @VExpand { @ColPlace //1r)m -8(t @OneRo)k 3(w { //@MidGap @ColF)k 6(ootSect } } })k 480 5219( col @Case {)m
-480 4931( Single @Y)m 4(ield @Column)k 480 4643( Doub)m 4(le @Y)k 4(ield { @Doub)k 4(leColWidth @Wide @Column ||@ColGap @ColList col })k
-480 4355( Multi @Y)m 4(ield { @MultiColWidth @Wide @Column ||@ColGap @ColList col })k 480 4067( })m 480 3779(})m 240 fnt82
-0 3285(Each)m 537(column)s 1315(consists)s 2125(of)s 2399(a)s
-220 fnt35 2568 3282(@ColPlace)m 240 fnt82 3721 3285(at)m 3956(the)s
-4307(top)s 4668(and)s 5075(a)s 220 fnt35 5243 3282(@F)m 6(ootSect)k
-240 fnt82 6397 3285(at)m 6632(the)s 6982(foot.)s 7534(The)s
-220 fnt35 7965 3282(@VExpand)m 240 fnt82 0 2997(symbol)m 772(ensures)s
-1553(that)s 1983(whene)s 6(v)k 3(er)k 2977(a)s
-3156(column)s 3943(comes)s 4618(into)s 5056(e)s 3(xistence,)k
-6061(it)s 6266(will)s 6705(e)s 3(xpand)k 7464(v)s 3(ertically)k
-8429(so)s 8708(that)s 0 2709(the)m 360(bottom-justi\207cation)s 220 fnt35
-2315 2706(//1r)m -8(t)k 240 fnt82 2769 2709(has)m 3152(as)s
-3414(much)s 4016(space)s 4615(as)s 4878(possible)s 5730(to)s
-5982(w)s 2(ork)k 6545(within.)s 7333(The)s 220 fnt35
-7773 2706(col)m 240 fnt82 8112 2709(parameter)m 0 2421(determines)m 1099(whether)s
-1929(the)s 2277(result)s 2867(has)s 3237(a)s 3403(single)s
-4030(column,)s 4855(double)s 5563(columns,)s 6481(or)s 6740(multiple)s
-7592(columns.)s 480 2047(The)m 220 fnt35 908 2044(@P)m 8(age)k
-240 fnt82 1687 2047(symbol)m 2447(places)s 3095(its)s 3371(parameter)s
-4385(in)s 4628(a)s 4794(page)s 5302(of)s 5573(\207x)s 3(ed)k
-6107(width,)s 6759(height,)s 7464(and)s 7868(mar)s 4(gins:)k
-220 fnt35 480 1546(def @P)m 8(age r)k -3(ight x)k 480 1258({)m
-480 970( @P)m 8(ageWidth @Wide @P)k 8(ageHeight @High {)k 480 682( //@P)m 8(ageMargin ||@P)k 8(ageMargin)k
-480 394( @HExpand @VExpand x)m
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 78 84
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Times-Italic
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-0 LoutMargSet
-grestore
-240 fnt84 0 13840(78)m 240 fnt83 7017 13843(Chapter)m 7867(4.)s
-8141(Examples)s 220 fnt35 480 13207( ||@P)m 8(ageMargin //@P)k 8(ageMargin)k
-480 12919( })m 480 12631(})m 0 12134(@HExpand)m 240 fnt82 1169 12137(and)m
-220 fnt35 1568 12134(@VExpand)m 240 fnt82 2725 12137(ensure)m 3400(that)s
-3814(the)s 4157(right)s 4664(parameter)s 5673(occupies)s 6557(all)s
-6845(the)s 7189(a)s 4(v)k 6(ailable)k 8092(space;)s
-8730(this)s 0 11849(is)m 218(important)s 1215(when)s 1800(the)s
-2156(right)s 2676(parameter)s 3698(is)s 3916(unusually)s 4910(small.)s
-5599(The)s 220 fnt35 6036 11846(@High)m 240 fnt82 6763 11849(symbol)m
-7531(gi)s 6(v)k 3(es)k 8087(the)s 8443(page)s
-8960(a)s 0 11561(single)m 627(ro)s 6(w)k 1047(mark,)s
-1645(ensuring)s 2522(that)s 2940(it)s 3132(will)s 3558(be)s
-3840(printed)s 4575(on)s 4872(a)s 5038(single)s 5665(sheet)s
-6216(of)s 6487(paper)s 7078(\(page)s 7665(29\).)s 480 11187(Ne)m 3(xt)k
-1002(we)s 1337(ha)s 4(v)k 3(e)k 220 fnt35
-1838 11184(@OneP)m 8(age)k 240 fnt82 2972 11187(,)m 3079(de\207ning)s
-3917(a)s 4083(typical)s 4788(page)s 5296(of)s 5567(a)s
-5733(book)s 6274(or)s 6533(other)s 7084(document:)s 220 fnt35
-480 10686(def @OneP)m 8(age)k 480 10398( named @Columns {})m 480 10110( named @P)m 8(ageT)k 26(op {})k
-480 9822( named @P)m 8(ageF)k 6(oot {})k 480 9534({)m 480 9246( @P)m 8(age {)k
-480 8958( @P)m 8(ageT)k 26(op)k 480 8670( //@MidGap @T)m 26(opList)k
-480 8382( //@MidGap @FullPlace)m 480 8094( //@MidGap @ColList @Columns)m 480 7806( // //1r)m -8(t @OneRo)k 3(w { //@MidGap @F)k 6(ootSect //@MidGap @P)k 8(ageF)k 6(oot })k
-480 7518( })m 480 7230(})m 240 fnt82 0 6736(The)m 431(page)s
-943(top)s 1305(and)s 1713(page)s 2224(foot,)s 2720(and)s
-3128(the)s 3479(number)s 4274(of)s 4548(columns,)s 5470(are)s
-5821(parameters)s 6922(that)s 7344(will)s 7773(be)s 8059(gi)s 6(v)k 3(en)k
-8643(later)s 0 6448(when)m 220 fnt35 565 6445(@OneP)m 8(age)k
-240 fnt82 1747 6448(is)m 1946(in)s 9(v)k 4(ok)k 2(ed.)k
-2855(The)s 3272(body)s 3794(of)s 4054(the)s 4390(page)s
-4887(is)s 5085(a)s 5240(straightforw)s 2(ard)k 6756(combination)s
-7998(of)s 8257(pre)s 6(vious)k 0 6160(de\207nitions.)m 1171(The)s
-220 fnt35 1595 6157(//)m 240 fnt82 1777 6160(symbol)m 2533(protects)s
-3337(the)s 3681(follo)s 6(wing)k 220 fnt35 4655 6157(//1r)m -8(t)k
-240 fnt82 5093 6160(from)m 5614(deletion)s 6437(in)s 6677(the)s
-7021(unlik)s 2(ely)k 7854(e)s 6(v)k 3(ent)k
-8419(that)s 8833(all)s 0 5872(the)m 342(preceding)s 1331(symbols)s
-2174(are)s 2514(replaced)s 3375(by)s 220 fnt35 3662 5869(@Null)m
-240 fnt82 4247 5872(.)m 4405(The)s 4826(follo)s 6(wing)k
-5797(object)s 6434(is)s 6638(enclosed)s 7526(in)s 220 fnt35
-7763 5869(@OneRo)m 3(w)k 240 fnt82 8887 5872(to)m 0 5584(ensure)m
-680(that)s 1098(all)s 1391(of)s 1662(it)s 1854(is)s
-2064(bottom-justi\207ed,)s 3698(not)s 4064(just)s 4469(its)s 4745(\207rst)s
-5176(component.)s 480 5210(Before)m 1199(presenting)s 2262(the)s 2624(de\207nition)s
-3612(of)s 3896(a)s 4076(sequence)s 5023(of)s 5308(pages,)s
-5974(we)s 6322(must)s 6861(detour)s 7546(to)s 7799(describe)s
-8665(ho)s 6(w)k 0 4922(running)m 803(page)s 1317(headers)s
-2104(and)s 2513(footers)s 3233(\(lik)s 2(e)k 3730(those)s
-4297(in)s 4545(the)s 4899(present)s 5655(document\))s 6732(are)s
-7085(produced.)s 8146(These)s 8779(are)s 0 4634(based)m 603(on)s
-900(the)s 220 fnt35 1248 4631(@Runner)m 240 fnt82 2250 4634(symbol:)m
-220 fnt35 480 4133(e)m 6(xpor)k -8(t @T)k 26(opOdd @T)k 26(opEv)k 5(en @F)k 6(ootOdd @F)k 6(ootEv)k 5(en)k
-480 3845(def @Runner)m 480 3557( named @T)m 26(opOdd r)k -3(ight @P)k 8(ageNum { @Null })k
-480 3269( named @T)m 26(opEv)k 5(en r)k -3(ight @P)k 8(ageNum { @Null })k
-480 2981( named @F)m 6(ootOdd r)k -3(ight @P)k 8(ageNum { @Null })k 480 2693( named @F)m 6(ootEv)k 5(en r)k -3(ight @P)k 8(ageNum { @Null })k
-480 2405( named @T)m 26(ag {})k 480 2117({ @Null })m 240 fnt82 0 1623(The)m
-440(four)s 910(parameters)s 2020(control)s 2764(the)s 3125(format)s
-3833(of)s 4116(running)s 4926(headers)s 5719(and)s 6136(footers)s
-6862(on)s 7171(odd)s 7601(and)s 8017(e)s 6(v)k 3(en)k
-8530(pages)s 0 1335(respecti)m 6(v)k 3(ely)k 15(.)k
-1294(In)s 9(v)k 4(ocations)k 2448(of)s 220 fnt35
-2719 1332(@Runner)m 240 fnt82 3661 1335(,)m 3768(for)s 4106(e)s 3(xample)k
-220 fnt35 480 834(@Runner)m 480 546( @T)m 26(opEv)k 5(en { @B @P)k 8(ageNum |1r)k -8(t @I { Chapter 4 } })k
-480 258( @T)m 26(opOdd { @I { Examples } |1r)k -8(t @B @P)k 8(ageNum })k
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 79 85
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Italic
-%%+ font Times-Bold
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-1 LoutMargSet
-grestore
-240 fnt83 0 13843(4.3.)m 454(P)s 19(a)k 2(g)k 2(e)k
-976(layout)s 240 fnt84 8832 13840(79)m 240 fnt82 0 13205(will)m
-416(be)s 687(embedded)s 1719(in)s 1951(the)s 2289(body)s
-2812(te)s 3(xt)k 3217(of)s 3477(the)s 3815(document,)s
-4855(and,)s 5298(as)s 5537(we)s 5862(will)s 6277(see)s
-6628(in)s 6860(a)s 7016(moment,)s 7896(are)s 8232(accessed)s
-0 12917(by)m 220 fnt35 296 12914(@Runner&&f)m 6(ollo)k 3(wing)k
-240 fnt82 2423 12917(cross)m 2967(references)s 4001(on)s 4301(the)s
-4651(pages.)s 5363(Notice)s 6059(ho)s 6(w)k 6522(the)s
-220 fnt35 6873 12914(@P)m 8(ageNum)k 240 fnt82 8112 12917(parameter)m
-0 12629(of)m 265(each)s 753(parameter)s 1761(allo)s 6(ws)k
-2423(the)s 2764(format)s 3454(of)s 3718(the)s 4059(running)s
-4851(header)s 5541(to)s 5774(be)s 6049(speci\207ed)s 6950(while)s
-7531(lea)s 4(ving)k 8277(the)s 8618(page)s 0 12341(number)m
-791(to)s 1030(be)s 1312(substituted)s 2406(later)s 13(.)k
-480 11967(W)m 19(e)k 843(may)s 1303(no)s 6(w)k
-1758(de\207ne)s 220 fnt35 2393 11964(@OddP)m 8(ageList)k 240 fnt82
-3872 11967(,)m 3973(whose)s 4635(result)s 5219(is)s 5423(a)s
-5583(sequence)s 6510(of)s 6775(pages)s 7365(be)s 3(ginning)k
-8367(with)s 8843(an)s 0 11679(odd-numbered)m 1454(page:)s 220 fnt35
-480 11178(def @OddP)m 8(ageList)k 480 10890( named @Columns {})m 480 10602( r)m -3(ight @P)k 8(ageNum)k
-480 10314({)m 480 10026( def @Ev)m 5(enP)k 8(ageList ...)k 480 9450( @P)m 8(ageMar)k -3(k)k 4(er @P)k 8(ageNum)k
-480 9162( // @Runner&&f)m 6(ollo)k 3(wing @Open {)k 480 8874( @OneP)m 8(age)k
-480 8586( @Columns { @Columns })m 480 8298( @P)m 8(ageT)k 26(op { @T)k 26(opOdd @P)k 8(ageNum })k
-480 8010( @P)m 8(ageF)k 6(oot { @F)k 6(ootOdd @P)k 8(ageNum })k
-480 7722( })m 480 7434( // @Ev)m 5(enP)k 8(ageList)k 480 7146( @Columns { @Columns })m
-480 6858( @Ne)m 6(xt @P)k 8(ageNum)k 480 6570(})m 240 fnt82
-0 6076(Ignoring)m 220 fnt35 887 6073(@Ev)m 5(enP)k 8(ageList)k
-240 fnt82 2516 6076(for)m 2865(the)s 3223(moment,)s 4125(notice)s
-4775(\207rst)s 5217(that)s 5645(the)s 6004(in)s 9(v)k 4(ocation)k
-7068(of)s 220 fnt35 7350 6073(@OneP)m 8(age)k 240 fnt82
-8554 6076(is)m 8775(en)s 8998(-)s 0 5788(closed)m 679(in)s
-220 fnt35 932 5785(@Runner&&f)m 6(ollo)k 3(wing @Open)k 240 fnt82
-3815 5788(.)m 3989(Since)s 220 fnt35 4586 5785(@Runner&&f)m 6(ollo)k 3(wing)k
-240 fnt82 6721 5788(refers)m 7324(to)s 7573(the)s 7931(\207rst)s
-8373(in)s 9(v)k 4(oca)k 8998(-)s 0 5500(tion)m
-421(of)s 220 fnt35 684 5497(@Runner)m 240 fnt82 1678 5500(appearing)m
-2666(after)s 3154(itself)s 3694(in)s 3929(the)s 4269(\207nal)s
-4741(printed)s 5468(document,)s 6511(the)s 6851(symbols)s 220 fnt35
-7692 5497(@T)m 26(opOdd)k 240 fnt82 8722 5500(and)m 220 fnt35
-0 5209(@F)m 6(ootOdd)k 240 fnt82 1127 5212(will)m 1562(tak)s 2(e)k
-2023(their)s 2528(v)s 6(alue)k 3105(from)s 3638(the)s
-3995(\207rst)s 4434(in)s 9(v)k 4(ocation)k 5497(of)s
-220 fnt35 5777 5209(@Runner)m 240 fnt82 6788 5212(follo)m 6(wing)k
-7773(the)s 8130(top)s 8498(of)s 8778(the)s 0 4924(page,)m
-554(e)s 6(v)k 3(en)k 1049(though)s 220 fnt35
-1767 4921(@F)m 6(ootOdd)k 240 fnt82 2880 4924(appears)m 3656(at)s
-3883(the)s 4225(foot)s 4665(of)s 4931(the)s 5274(page.)s
-5884(Their)s 220 fnt35 6456 4921(@P)m 8(ageNum)k 240 fnt82
-7687 4924(parameters)m 8779(are)s 0 4636(replaced)m 867(by)s 220 fnt35
-1161 4633(@P)m 8(ageNum)k 240 fnt82 2337 4636(,)m 2444(the)s
-2792(actual)s 3417(page)s 3925(number)s 4716(parameter)s 5730(of)s
-220 fnt35 6001 4633(@OddP)m 8(ageList)k 240 fnt82 7480 4636(.)m
-480 4262(After)m 1043(producing)s 2067(the)s 2415(odd-numbered)s 3869(page,)s
-220 fnt35 4428 4259(@OddP)m 8(ageList)k 240 fnt82 5967 4262(in)m 9(v)k 4(ok)k 2(es)k
-220 fnt35 6748 4259(@Ev)m 5(enP)k 8(ageList)k 240 fnt82
-8307 4262(:)m 220 fnt35 480 3761(def @Ev)m 5(enP)k 8(ageList)k
-480 3473( named @Columns {})m 480 3185( r)m -3(ight @P)k 8(ageNum)k 480 2897({)m
-480 2609( @P)m 8(ageMar)k -3(k)k 4(er @P)k 8(ageNum)k
-480 2321( // @Runner&&f)m 6(ollo)k 3(wing @Open {)k 480 2033( @OneP)m 8(age)k
-480 1745( @Columns { @Columns })m 480 1457( @P)m 8(ageT)k 26(op { @T)k 26(opEv)k 5(en @P)k 8(ageNum })k
-480 1169( @P)m 8(ageF)k 6(oot { @F)k 6(ootEv)k 5(en @P)k 8(ageNum })k
-480 881( })m 480 593( // @OddP)m 8(ageList)k 480 305( @Columns { @Columns })m
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 80 86
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Times-Italic
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-0 LoutMargSet
-grestore
-240 fnt84 0 13840(80)m 240 fnt83 7017 13843(Chapter)m 7867(4.)s
-8141(Examples)s 220 fnt35 480 13207( @Ne)m 6(xt @P)k 8(ageNum)k
-480 12919(})m 240 fnt82 0 12425(This)m 465(produces)s 1369(an)s
-1641(e)s 6(v)k 3(en-numbered)k 3167(page,)s 3714(then)s
-4172(passes)s 4823(the)s 5160(ball)s 5562(back)s 6063(to)s
-220 fnt35 6291 12422(@OddP)m 8(ageList)k 240 fnt82 7819 12425(\211)m
-7988(a)s 8142(delightful)s 0 12137(e)m 3(xample)k 877(of)s
-1162(what)s 1701(computer)s 2678(scientists)s 3619(call)s 4032(mutual)s
-4765(recursion.)s 5832(The)s 6274(tw)s 2(o)k 6699(page)s
-7221(types)s 7791(dif)s 6(fer)k 8388(only)s 8883(in)s
-0 11849(their)m 497(running)s 1295(headers)s 2076(and)s 2480(footers,)s
-3250(b)s 4(ut)k 3612(other)s 4163(changes)s 4985(could)s
-5575(easily)s 6186(be)s 6468(made.)s 480 11475(It)m 682(w)s 2(as)k
-1099(foreshado)s 6(wed)k 2489(earlier)s 3153(that)s 3568(an)s
-3847(in)s 9(v)k 4(ocation)k 4897(of)s 220 fnt35
-5164 11472(@P)m 8(ageMar)k -3(k)k 4(er)k 240 fnt82
-6630 11475(w)m 2(ould)k 7281(precede)s 8076(each)s 8567(page,)s
-0 11187(and)m 412(this)s 817(has)s 1195(been)s 1713(done.)s
-2351(Although)s 3322(this)s 220 fnt35 3726 11184(@P)m 8(ageMar)k -3(k)k 4(er)k
-240 fnt82 5204 11187(is)m 5422(a)s 5597(component)s 6729(of)s
-7009(the)s 7365(root)s 7819(g)s 1(alle)k 3(y)k 15(,)k
-8499(it)s 8700(will)s 0 10899(not)m 366(cause)s 953(a)s
-1119(page)s 1627(to)s 1866(be)s 2148(printed,)s 2932(because)s
-3745(Basser)s 4442(Lout)s 4954(skips)s 5497(components)s 6705(of)s
-6976(height)s 7634(zero.)s 240 fnt84 0 10106(4.4.)m 471(Chapters)s
-1468(and)s 1909(sections)s 240 fnt82 480 9629(The)m 905(de\207nitions)s
-1962(of)s 2229(chapters)s 3073(and)s 3473(sections)s 4290(from)s
-4811(the)s 5155(DocumentSetup)s 6746(package)s 7583(of)s 7850(V)s 26(ersion)k
-8634(2)s 8804(\(in)s 0 9341(V)m 26(ersion)k 793(3,)s
-1026(the)s 1379(BookSetup)s 2503(e)s 3(xtension)k 3480(of)s
-3756(DocumentSetup\))s 5432(form)s 5961(the)s 6315(subject)s 7058(of)s
-7334(this)s 7736(section.)s 8583(The)s 3(y)k 0 9053(allo)m 6(w)k
-579(a)s 745(chapter)s 1508(to)s 1747(be)s 2029(entered)s
-2790(lik)s 2(e)k 3202(this:)s 220 fnt35 480 8552(@Chapter)m
-480 8264( @Title { ...)m 13( })k 480 7976( @T)m 26(ag { ...)k 13( })k
-480 7688(@Begin)m 480 7400( ...)m 480 7112(@End @Chapter)m 240 fnt82 0 6616(W)m 9(ithin)k
-712(the)s 1060(chapter)s 1823(a)s 1989(sequence)s 2922(of)s
-3193(sections)s 4014(may)s 4480(be)s 4762(included)s 5644(by)s
-5938(writing)s 220 fnt35 480 6115(@BeginSections)m 480 5827(@Section { ...)m 13( })k
-480 5539(...)m 480 5251(@Section { ...)m 13( })k 480 4963(@EndSections)m 240 fnt82
-0 4508(These)m 627(are)s 974(numbered)s 1989(automatically)s 15(,)k
-3381(and)s 3785(an)s 4068(entry)s 4613(is)s 4823(made)s
-5397(for)s 5735(each)s 6230(in)s 6473(a)s 6639(table)s
-7159(of)s 7430(contents.)s 480 4134(The)m 901(user)s 1352(of)s
-1615(the)s 1956(DocumentSetup)s 3544(package)s 4376(can)s 4758(\207nd)s
-5182(the)s 5522(number)s 6306(of)s 6570(the)s 6910(chapter)s
-7666(or)s 7918(section)s 8644(with)s 0 3846(a)m 176(gi)s 6(v)k 3(en)k
-766(tag)s 1121(by)s 1426(writing)s 220 fnt35 2179 3843(@NumberOf tag)m
-240 fnt82 3838 3846(at)m 4081(an)s 3(y)k 4488(point)s
-5050(in)s 5304(the)s 5662(document.)s 6780(This)s 7267(feature)s
-7995(is)s 8215(based)s 8829(on)s 0 3558(the)m 348(follo)s 6(wing)k
-1325(de\207nitions:)s 220 fnt35 480 3057(e)m 6(xpor)k -8(t @T)k 26(ag)k
-480 2769(def @NumberMar)m -3(k)k 4(er r)k -3(ight @T)k 26(ag { @Null })k
-480 2193(def @NumberOf r)m -3(ight x)k 480 1905({ @NumberMar)m -3(k)k 4(er&&x @Open { @T)k 26(ag } })k
-240 fnt82 0 1406(Each)m 522(chapter)s 1272(and)s 1663(section)s
-2384(will)s 2797(contain)s 3545(one)s 3934(in)s 9(v)k 4(ocation)k
-4975(of)s 220 fnt35 5233 1403(@NumberMar)m -3(k)k 4(er)k
-240 fnt82 6918 1406(;)m 7017(a)s 7170(full)s 7543(e)s 3(xplanation)k
-8700(will)s 0 1118(be)m 282(gi)s 6(v)k 3(en)k
-862(later)s 13(.)k 480 744(A)m 710(sequence)s 1643(of)s
-1914(places)s 2562(for)s 2900(recei)s 6(ving)k 3836(chapters)s
-4683(is)s 4893(easily)s 5504(de\207ned:)s 220 fnt35 480 243(e)m 6(xpor)k -8(t @T)k 26(ag)k
-
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 81 87
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Italic
-%%+ font Times-Bold
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-1 LoutMargSet
-grestore
-240 fnt83 0 13843(4.4.)m 454(Chapter)s 2(s)k 1385(and)s
-1811(sections)s 240 fnt84 8839 13840(81)m 220 fnt35 480 13207(def @ChapterList r)m -3(ight @T)k 26(ag)k
-480 12919({)m 480 12631( @Galle)m 4(y)k 480 12343( //@ChapterGap @ChapterList @Ne)m 6(xt @T)k 26(ag)k
-480 12055(})m 0 11558(@ChapterGap)m 240 fnt82 1505 11561(will)m 1967(usually)s
-2747(be)s 220 fnt35 3065 11558(1.1b)m 240 fnt82 3484 11561(,)m
-3626(ensuring)s 4539(that)s 4992(each)s 5523(chapter)s 6321(be)s 3(gins)k
-7030(on)s 7362(a)s 7564(ne)s 6(w)k 8046(page.)s
-8698(The)s 220 fnt35 0 11270(@Chapter)m 240 fnt82 1063 11273(g)m 1(alle)k 3(y)k
-1697(itself)s 2245(is)s 2455(de\207ned)s 3218(as)s 3468(follo)s 6(ws:)k
-220 fnt35 480 10772(e)m 6(xpor)k -8(t @F)k 6(ootNote @BeginSections @EndSections @Section)k
-480 10484(def @Chapter f)m 6(orce into { @ChapterList&&preceding })k 480 10196( named @T)m 26(ag {})k 480 9908( named @Title {})m
-480 9620( named @RunningTitle { dft })m 480 9332( body @Body)m 480 9044({)m 480 8756( def @F)m 6(ootNote r)k -3(ight x { @ColF)k 6(ootNote x })k
-480 8180( def @BeginSections ...)m 480 7892( def @EndSections ...)m 480 7604( def @Section ...)m 480 7151( def @ChapterTitle)m 480 6863( {)m
-480 6575( @ChapterNumbers @Case {)m 480 6287( {Y)m 30(es y)k 4(es} @Y)k 4(ield { Chapter {@NumberOf @T)k 26(ag}.)k 13( |2s @Title })k
-480 5999( else @Y)m 4(ield @Title)k 480 5711( })m 480 5423( })m 480 4847( def @ChapterNum)m
-480 4559( {)m 480 4271( @ChapterNumbers @Case {)m 480 3983( {Y)m 30(es y)k 4(es} @Y)k 4(ield { Chapter {@NumberOf @T)k 26(ag} })k
-480 3695( else @Y)m 4(ield @Null)k 480 3407( })m 480 3119( })m 480 2627( r)m 2(agged @Break @BookTitleF)k 6(or)k -5(mat @ChapterTitle)k
-480 2339( // @NumberMar)m -3(k)k 4(er {)k 480 2051( @ChapterList&&@T)m 26(ag @Open { @T)k 26(ag })k
-480 1763( })m 480 1475( // @ChapterList&&preceding @T)m 26(agged @T)k 26(ag)k 480 1187( // @NumberMar)m -3(k)k 4(er&&preceding @T)k 26(agged @T)k 26(ag)k
-480 899( // @P)m 8(ageMar)k -3(k)k 4(er&&preceding @T)k 26(agged @T)k 26(ag)k
-480 611( // { @ChapterTitle } @MajorContentsEntr)m -6(y {@P)k 8(ageOf @T)k 26(ag})k 480 323( // @Runner)m
-
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 82 88
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Times-Italic
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-0 LoutMargSet
-grestore
-240 fnt84 0 13840(82)m 240 fnt83 7017 13843(Chapter)m 7867(4.)s
-8141(Examples)s 220 fnt35 480 13207( @F)m 6(ootEv)k 5(en { |0.5r)k -8(t 0.8f @F)k 6(ont @B @P)k 8(ageNum })k
-480 12919( @F)m 6(ootOdd { |0.5r)k -8(t 0.8f @F)k 6(ont @B @P)k 8(ageNum })k
-480 12631( // @Body)m 480 12343( //@SectionGap @ChapRefSection)m 480 12055( // @Runner)m 480 11767( @T)m 26(opEv)k 5(en { @B @P)k 8(ageNum |1r)k -8(t @I @ChapterNum })k
-480 11479( @T)m 26(opOdd { @I {@RunningTitle @OrElse @Title} |1r)k -8(t @B @P)k 8(ageNum })k 480 11191(})m
-240 fnt82 0 10697(W)m 19(e)k 371(will)s 800(see)s
-1164(the)s 1515(symbols)s 2366(for)s 2707(sections)s 3531(shortly)s 15(.)k
-4347(Notice)s 5042(ho)s 6(w)k 5506(their)s 6006(use)s
-6384(has)s 6756(been)s 7268(restricted)s 8216(to)s 8458(within)s
-0 10409(the)m 348(right)s 859(parameter)s 1873(of)s 220 fnt35
-2144 10406(@Chapter)m 240 fnt82 3147 10409(,)m 3254(by)s 3548(nesting)s
-4292(them)s 4830(and)s 5234(using)s 5806(a)s 5972(body)s
-6506(parameter)s 13(.)k 480 10035(The)m 956(meaning)s 1882(of)s
-220 fnt35 2202 10032(@F)m 6(ootNote)k 240 fnt82 3422 10035(within)m
-220 fnt35 4139 10032(@Chapter)m 240 fnt82 5250 10035(has)m 5669(been)s
-6227(set)s 6601(to)s 220 fnt35 6889 10032(@ColF)m 6(ootNote)k
-240 fnt82 8328 10035(,)m 8484(which)s 0 9747(produces)m 907(a)s
-1064(footnote)s 1908(tar)s 4(geted)k 2722(to)s 220 fnt35
-2953 9744(@ColF)m 6(ootList)k 240 fnt82 4325 9747(\(see)m 4756(Section)s
-5521(4.3\).)s 6056(In)s 6303(other)s 6845(w)s 2(ords,)k
-7526(footnotes)s 8458(within)s 0 9459(chapters)m 851(go)s 1149(at)s
-1386(the)s 1739(foot)s 2189(of)s 2465(the)s 2818(column,)s
-3648(not)s 4019(at)s 4256(the)s 4609(foot)s 5059(of)s
-5335(the)s 5688(page.)s 6309(\(Of)s 6717(course,)s 7453(in)s
-7701(single-column)s 0 9171(books)m 623(this)s 1018(distinction)s 2083(is)s
-2292(insigni\207cant.\))s 220 fnt35 3721 9168(@ChapterTitle)m 240 fnt82 5188 9171(and)m
-220 fnt35 5591 9168(@ChapterNum)m 240 fnt82 7102 9171(are)m 7448(tri)s 6(vial)k
-8065(de\207nitions)s 0 8883(which)m 642(v)s 6(ary)k 1115(depending)s
-2166(on)s 2463(whether)s 3293(the)s 3641(user)s 4099(has)s
-4469(requested)s 5443(numbered)s 6458(chapters)s 7305(or)s 7564(not.)s
-480 8509(Each)m 1014(in)s 9(v)k 4(ocation)k 2066(of)s
-220 fnt35 2336 8506(@Chapter)m 240 fnt82 3397 8509(has)m 3766(its)s
-4040(o)s 6(wn)k 4503(unique)s 220 fnt35 5209 8506(@T)m 26(ag)k
-240 fnt82 5772 8509(,)m 5878(either)s 6479(supplied)s 7347(by)s
-7639(the)s 7986(user)s 8442(or)s 8699(else)s 0 8221(inserted)m
-835(automatically)s 2210(by)s 2525(Lout.)s 3162(W)s 19(e)k
-3553(no)s 6(w)k 4035(trace)s 4575(the)s 4944(cross)s
-5507(referencing)s 6669(of)s 6961(chapter)s 7745(numbers)s 8641(on)s
-8960(a)s 0 7933(h)m 1(ypothetical)k 1236(third)s 1745(chapter)s
-2508(whose)s 3176(tag)s 3521(is)s 220 fnt35 3731 7930(euclid)m
-240 fnt82 4291 7933(.)m 220 fnt35 480 7556(@ChapterList&&preceding @T)m 26(agged euclid)k
-240 fnt82 4758 7559(attaches)m 220 fnt35 5574 7556(euclid)m 240 fnt82
-6190 7559(as)m 6436(an)s 6715(e)s 3(xtra)k 7245(tag)s
-7586(to)s 7821(the)s 8165(\207rst)s 8592(in)s 9(v)k 4(o)k
-8998(-)s 0 7271(cation)m 653(of)s 220 fnt35 937 7268(@ChapterList)m
-240 fnt82 2350 7271(preceding)m 3359(itself)s 3920(in)s 4176(the)s
-4536(\207nal)s 5029(printed)s 5777(document.)s 6898(But)s 7317(this)s
-220 fnt35 7726 7268(@ChapterList)m 240 fnt82 0 6983(must)m 525(be)s
-807(the)s 1155(tar)s 4(get)k 1754(of)s 2025(the)s
-2373(chapter)s 9(,)k 3174(and)s 3578(so)s 220 fnt35
-480 6482(@ChapterList&&euclid @Open { @T)m 26(ag })k 240 fnt82 0 5983(is)m 200(3,)s
-416(the)s 754(number)s 1534(of)s 1795(the)s 2132(chapter)s
-2885(\()s 220 fnt35 2958 5980(@T)m 26(ag)k 240 fnt82
-3570 5983(refers)m 4153(to)s 4381(the)s 4719(parameter)s 5722(of)s
-220 fnt35 5983 5980(@ChapterList)m 240 fnt82 7323 5983(,)m 7419(not)s
-7775(the)s 8112(parameter)s 0 5695(of)m 220 fnt35 272 5692(@Chapter)m
-240 fnt82 1275 5695(\).)m 1520(Consequently)s 2892(the)s 3242(in)s 9(v)k 4(ocation)k
-4297(of)s 220 fnt35 4570 5692(@NumberMar)m -3(k)k 4(er)k
-240 fnt82 6317 5695(within)m 6986(the)s 7336(chapter)s 8100(is)s
-8312(equal)s 8887(to)s 220 fnt35 0 5404(@NumberMar)m -3(k)k 4(er 3)k
-240 fnt82 1861 5407(.)m 220 fnt35 480 5030(@NumberMar)m -3(k)k 4(er&&preceding @T)k 26(agged euclid)k
-240 fnt82 5137 5033(attaches)m 220 fnt35 5992 5030(euclid)m 240 fnt82
-6646 5033(to)m 220 fnt35 6920 5030(@NumberMar)m -3(k)k 4(er 3)k
-240 fnt82 8876 5033(as)m 0 4745(an)m 283(e)s 3(xtra)k
-817(tag,)s 1216(and)s 1620(so)s 220 fnt35 1886 4742(@NumberOf euclid)m
-240 fnt82 3742 4745(,)m 3849(which)s 4491(e)s 3(xpands)k
-5324(to)s 220 fnt35 480 4244(@NumberMar)m -3(k)k 4(er&&euclid @Open { @T)k 26(ag })k
-240 fnt82 0 3745(must)m 538(be)s 833(equal)s 1419(to)s
-1671(3,)s 1911(as)s 2175(required.)s 3148(This)s 3637(scheme)s
-4423(could)s 5026(be)s 5322(simpli\207ed)s 6349(by)s 6656(placing)s
-7426(the)s 7787(in)s 9(v)k 4(ocation)k 8855(of)s
-220 fnt35 0 3454(@NumberMar)m -3(k)k 4(er)k 240 fnt82
-1758 3457(within)m 220 fnt35 2440 3454(@ChapterList)m 240 fnt82 3854 3457(rather)m
-4484(than)s 4966(within)s 220 fnt35 5648 3454(@Chapter)m 240 fnt82
-6651 3457(,)m 6772(b)s 4(ut)k 7148(it)s 7353(turns)s
-7896(out)s 8276(that)s 8708(that)s 0 3169(scheme)m 773(does)s
-1263(not)s 1629(generalize)s 2666(well)s 3132(to)s 3371(sections)s
-4192(and)s 4596(subsections.)s 480 2795(There)m 1124(is)s 1365(a)s
-1562(trap)s 2017(for)s 2386(the)s 2765(unw)s 2(ary)k
-3566(in)s 3840(the)s 4219(use)s 4625(of)s 220 fnt35
-4927 2792(preceding)m 240 fnt82 5969 2795(and)m 220 fnt35 6404 2792(f)m 6(ollo)k 3(wing)k
-240 fnt82 7234 2795(.)m 7429(Suppose)s 8328(that)s 8778(the)s
-0 2507(in)m 9(v)k 4(ocation)k 1054(of)s 220 fnt35
-1325 2504(@NumberMar)m -3(k)k 4(er)k 240 fnt82 3070 2507(within)m
-220 fnt35 3738 2504(@Chapter)m 240 fnt82 4801 2507(is)m 5011(replaced)s
-5878(by)s 6172(the)s 6520(seemingly)s 7557(equi)s 6(v)k 6(alent)k
-220 fnt35 480 2006(@NumberMar)m -3(k)k 4(er { @ChapterList&&preceding @Open { @T)k 26(ag } })k
-240 fnt82 0 1507(No)m 6(w)k 514(suppose)s 1342(that)s
-220 fnt35 1760 1504(@NumberOf euclid)m 240 fnt82 3676 1507(appears)m 4457(some)s 6(where)k
-5596(within)s 6264(Chapter)s 7081(7.)s 7365(It)s 7570(will)s
-7996(e)s 3(xpand)k 8743(to)s 220 fnt35 480 1006(@NumberMar)m -3(k)k 4(er&&euclid @Open { @T)k 26(ag })k
-240 fnt82 0 507(which)m 642(w)s 2(ould)k 1297(no)s 6(w)k
-1758(be)s 2040(equal)s 2613(to)s
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 83 89
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Italic
-%%+ font Times-Bold
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-1 LoutMargSet
-grestore
-240 fnt83 0 13843(4.4.)m 454(Chapter)s 2(s)k 1385(and)s
-1811(sections)s 240 fnt84 8833 13840(83)m 220 fnt35 480 13207(@ChapterList&&preceding @Open { @T)m 26(ag })k
-240 fnt82 0 12708(whose)m 663(v)s 6(alue,)k 1276(e)s 6(v)k 6(aluated)k
-2233(as)s 2477(it)s 2663(is)s 2868(within)s 3530(Chapter)s
-4342(7,)s 4563(is)s 4767(7,)s 4989(not)s 5349(3.)s
-5628(Use)s 6050(of)s 220 fnt35 6315 12705(preceding)m 240 fnt82
-7321 12708(or)m 220 fnt35 7574 12705(f)m 6(ollo)k 3(wing)k
-240 fnt82 8458 12708(within)m 0 12420(the)m 348(parameter)s 1362(of)s
-1633(a)s 1799(symbol,)s 2611(rather)s 3227(than)s 3696(within)s
-4364(the)s 4712(body)s 15(,)k 5284(is)s 5494(lik)s 2(ely)k
-6090(to)s 6329(be)s 6611(erroneous.)s 480 12046(Much)m 1112(of)s
-1400(the)s 1765(remainder)s 2810(of)s 3098(the)s 3463(de\207nition)s
-4454(of)s 220 fnt35 4742 12043(@Chapter)m 240 fnt82 5822 12046(is)m
-6049(f)s 2(airly)k 6634(self-e)s 3(xplanatory:)k 8366(there)s
-8916(is)s 0 11758(a)m 180(heading,)s 1060(a)s 1241(tag)s
-1601(sent)s 2060(to)s 2314(mark)s 2881(the)s 3244(page)s
-3766(on)s 4078(which)s 4735(the)s 5098(chapter)s 5875(be)s 3(gins,)k
-6619(a)s 220 fnt35 6800 11755(@ContentsEntr)m -6(y)k 240 fnt82
-8492 11758(g)m 1(alle)k 3(y)k 0 11470(sent)m 484(to)s
-762(the)s 1149(table)s 1708(of)s 2018(contents,)s 2961(g)s 1(alle)k 3(ys)k
-3724(for)s 4101(the)s 4489(\207gures)s 5230(and)s 5673(tables)s
-6320(of)s 6630(the)s 7017(chapter)s 7819(to)s 8097(collect)s
-8833(in,)s 220 fnt35 0 11179(@Body)m 240 fnt82 781 11182(where)m
-1421(the)s 1769(body)s 2303(of)s 2574(the)s 2922(chapter)s
-3685(goes,)s 4230(and)s 220 fnt35 4634 11179(@ChapRefSection)m 240 fnt82
-6499 11182(to)m 6738(hold)s 7222(a)s 7388(concluding)s 8505(list)s
-8855(of)s 0 10894(references.)m 1144(This)s 1620(lea)s 4(v)k 3(es)k
-2261(only)s 2741(the)s 3089(tw)s 2(o)k 3499(in)s 9(v)k 4(ocations)k
-4640(of)s 220 fnt35 4911 10891(@Runner)m 240 fnt82 5913 10894(to)m
-6152(e)s 3(xplain.)k 480 10520(The)m 977(\207rst)s 220 fnt35
-1478 10517(@Runner)m 240 fnt82 2550 10520(is)m 2830(just)s 3305(belo)s 6(w)k
-4008(the)s 4426(heading.)s 5418(It)s 5693(will)s 6189(be)s
-6541(the)s 6959(tar)s 4(get)k 7628(of)s 7969(the)s
-220 fnt35 8387 10517(@Run)m 240 fnt82 8998 10520(-)m 220 fnt35
-0 10229(ner&&f)m 6(ollo)k 3(wing)k 240 fnt82 1494 10232(cross)m
-2030(reference)s 2967(at)s 3194(the)s 3536(be)s 3(ginning)k
-4538(of)s 4803(the)s 5146(\207rst)s 5571(page)s 6073(of)s
-6338(the)s 6681(chapter)s 7438(\(see)s 7872(Section)s 8640(4.3\),)s
-0 9944(which)m 642(consequently)s 1959(will)s 2385(ha)s 4(v)k 3(e)k
-2886(null)s 3313(running)s 4111(headers)s 4892(and)s 5296(the)s
-5644(gi)s 6(v)k 3(en)k 6224(footers.)s 480 9570(The)m
-954(second)s 220 fnt35 1724 9567(@Runner)m 240 fnt82 2772 9570(appears)m
-3600(at)s 3878(the)s 4273(v)s 3(ery)k 4795(end)s
-5246(of)s 5563(the)s 5958(chapter)s 9(,)k 6805(hence)s
-7466(on)s 7809(its)s 8132(last)s 8570(page.)s 0 9282(Since)m
-595(no)s 896(in)s 9(v)k 4(ocations)k 2046(of)s
-220 fnt35 2325 9279(@Runner)m 240 fnt82 3335 9282(lie)m 3638(between)s
-4500(it)s 4700(and)s 5113(the)s 5469(\207rst)s 220 fnt35
-5908 9279(@Runner)m 240 fnt82 6850 9282(,)m 6966(it)s 7166(will)s
-7600(be)s 7891(the)s 8247(tar)s 4(get)k 8855(of)s
-220 fnt35 0 8991(@Runner&&f)m 6(ollo)k 3(wing)k 240 fnt82
-2134 8994(on)m 2442(e)s 6(v)k 3(ery)k 3029(page)s
-3547(from)s 4082(the)s 4441(second)s 5175(page)s 5693(of)s
-5975(the)s 6334(chapter)s 7107(to)s 7357(the)s 7716(last,)s
-8165(inclusi)s 6(v)k 3(e,)k 0 8706(and)m 404(will)s
-830(supply)s 1523(the)s 1871(format)s 2567(of)s 2838(their)s
-3335(headers)s 4116(and)s 4520(footers.)s 480 8332(The)m 908(interested)s
-1893(reader)s 2549(might)s 3166(care)s 3618(to)s 3857(predict)s
-4579(the)s 4927(outcome)s 5806(in)s 6048(unusual)s 6848(cases,)s
-7458(such)s 7954(as)s 8203(when)s 8778(the)s 0 8044(heading)m
-811(occupies)s 1699(tw)s 2(o)k 2109(pages,)s 2761(or)s
-3020(when)s 3596(a)s 3762(chapter)s 4524(occupies)s 5412(only)s
-5892(one,)s 6345(or)s 6604(\(assuming)s 7640(a)s 7806(change)s
-8540(to)s 8778(the)s 0 7756(g)m 1(ap)k 386(between)s
-1227(chapters\))s 2138(when)s 2702(a)s 2855(chapter)s 3605(starts)s
-4146(halfw)s 2(ay)k 4956(do)s 6(wn)k 5527(a)s
-5680(page.)s 6283(Such)s 6807(predictions)s 7907(can)s 8283(be)s
-8552(made)s 0 7468(with)m 482(great)s 1019(con\207dence.)s 480 7094(The)m
-903(e)s 3(xpression)k 220 fnt35 1975 7091(@RunningTitle @OrElse @Title)m 240 fnt82
-5125 7094(appearing)m 6116(in)s 6354(the)s 6697(second)s 220 fnt35
-7415 7091(@Runner)m 240 fnt82 8412 7094(returns)m 0 6806(the)m 354(v)s 6(alue)k
-928(of)s 1205(the)s 220 fnt35 1560 6803(@RunningTitle)m 240 fnt82
-3070 6806(parameter)m 4090(of)s 220 fnt35 4368 6803(@Chapter)m 240 fnt82
-5437 6806(if)m 5660(this)s 6063(is)s 6279(not)s 6651(equal)s
-7231(to)s 7476(the)s 7830(def)s 2(ault)k 8558(v)s 6(alue)k
-220 fnt35 0 6515(dft)m 240 fnt82 240 6518(,)m 347(or)s
-220 fnt35 606 6515(@Title)m 240 fnt82 1294 6518(otherwise:)m 220 fnt35
-480 6036(def @OrElse)m 480 5748( left x)m 480 5460( r)m -3(ight y)k 480 5172({)m
-480 4884( x @Case {)m 480 4596( dft @Y)m 4(ield y)k 480 4308( else @Y)m 4(ield x)k
-480 4020( })m 480 3732(})m 240 fnt82 0 3238(This)m 476(produces)s
-1391(the)s 1739(ef)s 6(fect)k 2335(of)s 220 fnt35
-480 2737(named @RunningTitle { @Title })m 240 fnt82 0 2238(which)m 676(unfortunately)s 2052(is)s
-2296(not)s 2696(permissible)s 3887(as)s 4171(it)s 4397(stands,)s
-5136(because)s 220 fnt35 5983 2235(@Title)m 240 fnt82 6705 2238(is)m
-6949(not)s 7349(visible)s 8076(within)s 8778(the)s 0 1950(def)m 2(ault)k
-721(v)s 6(alue)k 1289(of)s 220 fnt35 1560 1947(@RunningTitle)m
-240 fnt82 3004 1950(.)m 480 1576(Finally)m 15(,)k 1249(the)s
-1597(de\207nitions)s 2658(for)s 2996(sections)s 3817(omitted)s 4605(earlier)s
-5273(are)s 5620(as)s 5870(follo)s 6(ws:)k 220 fnt35
-480 1075(def @EndSectionsPlace { @Galle)m 4(y })k 480 787(def @EndSections f)m 6(orce into { @EndSectionsPlace&&preceding } {})k 480 499(macro @BeginSections { //@SectionGap @SectionList 1 // @EndSectionsPlace // })m
-
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 84 90
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Times-Italic
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-0 LoutMargSet
-grestore
-240 fnt84 0 13840(84)m 240 fnt83 7017 13843(Chapter)m 7867(4.)s
-8141(Examples)s 220 fnt35 480 13207(def @Section f)m 6(orce into { @SectionList&&preceding })k 480 12919( named @T)m 26(ag {})k
-480 12631( named @Title {})m 480 12343( named @RunningTitle { dft })m 480 12055( body @Body)m 480 11767({)m 480 11479( def @SectionTitle)m
-480 11191( {)m 480 10903( @SectionNumbers @Case {)m 480 10615( {Y)m 30(es y)k 4(es} @Y)k 4(ield { {@NumberOf @T)k 26(ag}.)k 13( |2s @Title })k
-480 10327( else @Y)m 4(ield @Title)k 480 10039( })m 480 9751( })m 480 9175( @Heading @Protect @SectionTitle)m
-480 8887( // @NumberMar)m -3(k)k 4(er {)k 480 8599( {@ChapterList&&@T)m 26(ag @Open { @T)k 26(ag }}.{)k
-480 8311( @SectionList&&@T)m 26(ag @Open { @T)k 26(ag }})k 480 8023( })m 480 7735( // @ChapterList&&preceding @T)m 26(agged @T)k 26(ag)k
-480 7447( // @SectionList&&preceding @T)m 26(agged @T)k 26(ag)k 480 7159( // @NumberMar)m -3(k)k 4(er&&preceding @T)k 26(agged @T)k 26(ag)k
-480 6871( // @P)m 8(ageMar)k -3(k)k 4(er&&preceding @T)k 26(agged @T)k 26(ag)k
-480 6583( // { &3f @SectionTitle } @ContentsEntr)m -6(y {@P)k 8(ageOf @T)k 26(ag})k 480 6295( //0io @Body)m
-480 6007(})m 240 fnt82 0 5513(The)m 220 fnt35 409 5510(@BeginSections)m
-240 fnt82 2066 5513(macro)m 2696(in)s 9(v)k 4(ok)k 2(es)k
-220 fnt35 3457 5510(@SectionList)m 240 fnt82 4748 5513(,)m 4835(preceded)s
-5736(by)s 6010(the)s 6338(appropriate)s 7462(g)s 1(ap)k
-7840(and)s 8224(follo)s 6(wed)k 0 5225(by)m 284(an)s
-220 fnt35 556 5222(@EndSectsPlace)m 240 fnt82 2307 5225(for)m 2635(closing)s
-3368(the)s 3705(list)s 4045(of)s 4306(sections)s 5116(when)s
-5681(the)s 220 fnt35 6019 5222(@EndSections)m 240 fnt82 7515 5225(symbol)m
-8264(is)s 8463(found.)s 220 fnt35 0 4934(@Section)m 240 fnt82
-997 4937(itself)m 1542(is)s 1749(just)s 2151(a)s 2314(cop)s 2(y)k
-2829(of)s 220 fnt35 3097 4934(@Chapter)m 240 fnt82 4156 4937(with)m
-4635(slight)s 5223(changes)s 6042(to)s 6278(the)s 6623(format.)s
-7420(The)s 7845(parameter)s 8855(of)s 220 fnt35 0 4646(@NumberMar)m -3(k)k 4(er)k
-240 fnt82 1752 4649(is)m 1970(a)s 2143(simple)s 2844(generalization)s
-4262(of)s 4540(the)s 4896(one)s 5305(within)s 220 fnt35
-5981 4646(@Chapter)m 240 fnt82 6984 4649(.)m 7156(Notice)s 7856(that)s
-8282(we)s 8625(ha)s 4(v)k 3(e)k 0 4361(tak)m 2(en)k
-573(care)s 1026(that)s 1444(the)s 1792(v)s 6(alue)k
-2360(of)s 2631(this)s 3027(parameter)s 4041(be)s 4323(a)s
-4489(juxtaposition)s 5795(of)s 6066(simple)s 6759(w)s 2(ords:)k
-7508(although)s 220 fnt35 480 3860({@ChapterList&&@T)m 26(ag @Open { @T)k 26(ag }}.)k 13( &)k
-480 3572({@SectionList&&@T)m 26(ag @Open { @T)k 26(ag }})k 240 fnt82 0 3073(is)m
-210(formally)s 1086(equi)s 6(v)k 6(alent,)k 220 fnt35
-2177 3070(&)m 240 fnt82 2379 3073(w)m 2(as)k 2800(not)s
-3166(permitted)s 4139(within)s 4807(a)s 220 fnt35 4973 3070(@T)m 26(ag)k
-240 fnt82 5596 3073(parameter)m 6610(until)s 7103(recently)s 15(.)k
-480 2699(The)m 930(DocumentSetup)s 2548(package)s 3411(also)s 3872(contains)s
-4743(de\207nitions)s 5826(for)s 6187(subsections)s 7364(in)s 7630(the)s
-8001(same)s 8571(style.)s 0 2411(The)m 3(y)k 564(raise)s
-1091(the)s 1461(question)s 2350(of)s 2643(whether)s 3494(Lout)s
-4028(is)s 4259(capable)s 5066(of)s 5359(producing)s 6404(subsections)s
-7580(should)s 8298(the)s 8668(user)s 0 2123(place)m 220 fnt35
-542 2120(@BeginSections)m 240 fnt82 2159 2123(,)m 220 fnt35 2248 2120(@Section)m
-240 fnt82 3188 2123(,)m 3276(and)s 220 fnt35 3662 2120(@EndSections)m
-240 fnt82 5151 2123(within)m 5800(a)s 240 fnt83 5948 2125(section)m
-240 fnt82 6619 2123(,)m 6708(and)s 7093(whether)s 7905(such)s
-8382(nesting)s 0 1835(could)m 592(proceed)s 1409(to)s 1650(arbitrary)s
-2527(depth.)s 3225(Arbitrary)s 4169(nesting)s 4915(of)s 5188(sections)s
-6011(within)s 6681(sections)s 7504(is)s 7716(a)s 4(v)k 6(ailable)k
-8627(no)s 6(w)k 15(,)k 0 1547(although)m 883(the)s
-1218(numbering)s 2295(w)s 2(ould)k 2937(of)s 3195(course)s
-3862(be)s 4131(wrong.)s 4894(The)s 5309(author)s 5967(has)s
-6324(w)s 2(ork)k 2(ed)k 7083(out)s 7436(de\207nitions)s
-8484(which)s 0 1259(pro)m 3(vide)k 773(correct)s 1484(numbering)s
-2563(to)s 2790(arbitrary)s 3654(depth,)s 4282(with)s 4752(an)s
-5024(arbitrary)s 5888(format)s 6573(for)s 6899(each)s 7383(le)s 6(v)k 3(el.)k
-7991(These)s 8606(were)s 0 971(not)m 376(incorporated)s 1652(into)s
-2087(DocumentSetup)s 3693(because)s 4516(the)s 4874(author)s 5555(considers)s
-6520(sub-)s 6921(subsections)s 8085(to)s 8334(be)s 8627(poor)s
-0 683(style,)m 558(and)s 962(he)s 1244(prefers)s 1957(separate)s
-2795(names)s 3457(for)s 3795(the)s 4143(symbols)s 4992(at)s
-5224(each)s 5719(le)s 6(v)k 3(el.)k
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 85 91
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Italic
-%%+ font Times-Bold
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-1 LoutMargSet
-grestore
-240 fnt83 0 13843(4.5.)m 454(Biblio)s 2(gr)k 3(aphies)k
-240 fnt84 8833 13840(85)m 0 13203(4.5.)m 471(Bibliographies)s 240 fnt82
-533 12726(The)m 953(\207rst)s 1376(step)s 1806(in)s 2041(the)s
-2382(production)s 3468(of)s 3731(a)s 3889(bibliograph)s 1(y)k
-5157(is)s 5359(to)s 5591(create)s 6208(a)s 6366(database)s
-7237(of)s 7500(references)s 8523(based)s 0 12438(on)m 297(the)s
-645(de\207nition)s 220 fnt35 480 11987(e)m 6(xpor)k -8(t @T)k 26(ype @A)k 6(uthor @Title @Institution @Number @Pub)k 4(lisher)k
-480 11699( @Y)m 30(ear @Proceedings @Jour)k -5(nal @V)k 17(olume @P)k 8(ages @Comment)k
-480 11123(def @Ref)m 6(erence)k 480 10835( named @T)m 26(ag)k 3270({ )s 11(T)k 26(A)k 6(G? })k
-480 10547( named @T)m 26(ype)k 3270({ )s 11(TYPE? })k 480 10259( named @A)m 6(uthor)k
-3270({ A)s 11(UTHOR? })k 480 9971( named @Title)m 3270({ )s 11(TITLE? })k
-480 9683( named @Institution)m 3270({ INSTITUTION? })s 480 9395( named @Number)m 3270({ NUMBER? })s 480 9107( named @Pub)m 4(lisher)k
-3270({ PUBLISHER? })s 480 8819( named @Y)m 30(ear)k 3270({ )s 19(YEAR? })k
-480 8531( named @Proceedings)m 3270({ PR)s 4(OCEEDINGS? })k 480 8243( named @Jour)m -5(nal)k
-3270({ JOURNAL? })s 480 7955( named @V)m 17(olume)k 3270({ )s 11(V)k 8(OLUME? })k
-480 7667( named @P)m 8(ages)k 3270({ P)s 26(A)k 6(GES? })k
-480 7379( named @Comment)m 3270({ @Null })s 480 7091({ @Null })m 240 fnt82 0 6597(F)m 3(or)k
-389(e)s 3(xample,)k 1303(the)s 1651(database)s 2530(might)s
-3148(contain)s 220 fnt35 480 6096({ @Ref)m 6(erence)k 480 5808( @T)m 26(ag { str)k -3(unk1979style })k
-480 5520( @T)m 26(ype { Book })k 480 5232( @A)m 6(uthor { Str)k -3(unk, )k 8(William and )k 8(White)k 3(, E.)k 13( B)k 4(.)k 13( })k
-480 4944( @Title { )m 11(The Elements of Style })k 480 4656( @Pub)m 4(lisher { MacMillan, third edition })k 480 4368( @Y)m 30(ear { 1979 })k
-480 4080(})m 480 3588({ @Ref)m 6(erence)k 480 3300( @T)m 26(ag { kingston92 })k
-480 3012( @T)m 26(ype { )k 11(T)k 26(echRepor)k -8(t })k
-480 2724( @A)m 6(uthor { Kingston, Jeffre)k 4(y H.)k 13( })k 480 2436( @Title { Document F)m 6(or)k -5(matting with Lout \(Second Edition\) })k
-480 2148( @Number { 449 })m 480 1860( @Institution { Basser Depar)m -8(tment of Computer)k 480 1572(Science F09, Univ)m 5(ersity of Sydne)k 4(y 2006, A)k 6(ustr)k 2(alia })k
-480 1284( @Y)m 30(ear { 1992 })k 480 996(})m 240 fnt82 0 502(Since)m
-596(named)s 1301(parameters)s 2408(are)s 2764(optional,)s 3664(we)s
-4008(ha)s 4(v)k 3(e)k 4519(one)s 4930(for)s
-5277(e)s 6(v)k 3(ery)k 5862(concei)s 6(v)k 6(able)k
-7057(type)s 7534(of)s 7814(attrib)s 4(ute,)k 8722(and)s
-0 214(simply)m 702(lea)s 4(v)k 3(e)k 1252(out)s
-1614(those)s 2172(that)s 2586(do)s 2876(not)s 3238(apply)s
-3821(in)s 4060(an)s 3(y)k 4454(particular)s 5424(reference.)s
-6472(W)s 19(e)k 6837(can)s 7223(print)s 7730(a)s
-7893(reference)s 8832(by)s
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 86 92
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Times-Italic
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-0 LoutMargSet
-grestore
-240 fnt84 0 13840(86)m 240 fnt83 7017 13843(Chapter)m 7867(4.)s
-8141(Examples)s 240 fnt82 0 13205(using)m 572(the)s 220 fnt35
-920 13202(@Open)m 240 fnt82 1726 13205(symbol)m 2486(to)s 2725(get)s
-3077(at)s 3309(its)s 3585(attrib)s 4(utes:)k 220 fnt35
-480 12704(@Ref)m 6(erence&&str)k -3(unk1979style @Open)k 480 12416({ @A)m 6(uthor)k 11(, {Slope @F)k 6(ont @Title}.)k 13( @Pub)k 4(lisher)k 11(, @Y)k 30(ear)k 11(.)k 13( })k
-240 fnt82 0 11920(The)m 428(right)s 939(parameter)s 1953(of)s
-220 fnt35 2224 11917(@Open)m 240 fnt82 3030 11920(may)m 3496(use)s
-3871(the)s 4219(e)s 3(xported)k 5111(parameters)s 6209(of)s
-6480(the)s 6828(left,)s 7252(and)s 7656(so)s 7922(the)s
-8270(result)s 8860(is)s 480 11415(W)m 9(illiam)k 1313(Strunk)s
-2012(and)s 2416(E.)s 2666(B.)s 2930(White,)s 240 fnt83
-3681 11417(The)m 4093(Elements)s 5024(of)s 5305(Style)s 240 fnt82
-5762 11415(.)m 5926(Macmillan,)s 7068(1979.)s 0 10916(Incidentally)m 15(,)k
-1235(we)s 1573(are)s 1923(not)s 2292(limited)s 3029(to)s
-3271(just)s 3679(one)s 4084(database)s 4966(of)s 5240(references;)s
-6335(se)s 6(v)k 3(eral)k 220 fnt35 7060 10913(@Database)m
-240 fnt82 8277 10916(symbols)m 0 10628(can)m 380(nominate)s 1317(the)s
-1656(same)s 2193(symbol,)s 2996(and)s 3391(in)s 9(v)k 4(ocations)k
-4523(of)s 4784(that)s 5193(symbol)s 5944(can)s 6324(appear)s
-7011(in)s 7245(the)s 7584(document)s 8578(itself)s 0 10340(as)m
-250(well)s 716(if)s 933(we)s 1268(wish.)s 480 9966(The)m
-930(second)s 1675(step)s 2135(is)s 2368(to)s 2629(create)s
-3276(a)s 3464(database)s 4366(of)s 4659(print)s 5192(styles)s
-5809(for)s 6170(the)s 6540(v)s 6(arious)k 7311(types)s
-7889(of)s 8183(reference)s 0 9678(\(Book,)m 706(T)s 16(echReport,)k
-1926(etc.\),)s 2450(based)s 3053(on)s 3350(the)s 3698(follo)s 6(wing)k
-4675(de\207nition:)s 220 fnt35 480 9177(e)m 6(xpor)k -8(t @Style)k
-480 8889(def @RefStyle)m 480 8601( left @T)m 26(ag)k 480 8313( named @Style r)m -3(ight reftag {})k
-480 8025({})m 240 fnt82 0 7531(Notice)m 682(that)s 1089(the)s
-1426(named)s 2111(parameter)s 220 fnt35 3114 7528(@Style)m 240 fnt82
-3865 7531(has)m 4224(a)s 4379(right)s 4879(parameter)s 220 fnt35
-5882 7528(reftag)m 240 fnt82 6431 7531(.)m 6584(The)s 7001(style)s
-7497(database)s 8365(has)s 8724(one)s 0 7243(entry)m 545(for)s
-883(each)s 1378(type)s 1846(of)s 2117(reference:)s 220 fnt35
-480 6742({ Book @RefStyle @Style)m 480 6454( { @Ref)m 6(erence&&reftag @Open)k 480 6166( { @A)m 6(uthor)k 11(, {Slope @F)k 6(ont @Title}.)k 13( @Pub)k 4(lisher)k 11(, @Y)k 30(ear)k 11(.)k 13( @Comment })k
-480 5878( })m 480 5590(})m 480 5014({ )m 11(T)k 26(echRepor)k -8(t @RefStyle @Style)k
-480 4726( { @Ref)m 6(erence&&reftag @Open)k 480 4438( { @A)m 6(uthor)k 11(, {Slope @F)k 6(ont @Title}.)k 13( )k 11(T)k 26(ech.)k 13( Rep)k 7(.)k 13( @Number \(@Y)k 30(ear\),)k
-480 4150(@Institution.)m 13( @Comment })k 480 3862( })m 480 3574(})m 240 fnt82
-0 3080(and)m 404(so)s 670(on.)s 1074(The)s 1502(follo)s 6(wing)k
-2479(prints)s 3074(the)s 3422(reference)s 4365(whose)s 5033(tag)s
-5378(is)s 220 fnt35 5588 3077(str)m -3(unk1979style)k 240 fnt82
-7180 3080(in)m 7423(the)s 7771(Book)s 8352(style:)s 220 fnt35
-480 2579(@RefStyle&&Book @Open { @Style str)m -3(unk1979style })k 240 fnt82 0 2081(It)m 205(has)s
-575(result)s 480 1626(W)m 9(illiam)k 1313(Strunk)s 2012(and)s
-2416(E.)s 2666(B.)s 2930(White.)s 240 fnt83 3678 1628(The)m
-4090(Elements)s 5021(of)s 5302(Style)s 240 fnt82 5759 1626(.)m
-5923(Macmillan)s 6955(.)s 7119(Third)s 7708(Edition)s 8409(,)s
-8516(1979)s 8987(.)s 0 1127(Notice)m 696(ho)s 6(w)k
-1160(the)s 220 fnt35 1512 1124(@Style)m 240 fnt82 2277 1127(parameter)m
-3295(of)s 220 fnt35 3569 1124(@RefStyle)m 240 fnt82 4675 1127(is)m
-4889(gi)s 6(v)k 3(en)k 5472(the)s 5824(parameter)s
-220 fnt35 6841 1124(str)m -3(unk1979style)k 240 fnt82 8373 1127(,)m
-8484(which)s 0 839(it)m 192(uses)s 655(to)s 894(open)s
-1417(the)s 1765(appropriate)s 2909(reference.)s 480 465(W)m 19(e)k
-858(can)s 1256(consult)s 2017(the)s 220 fnt35 2374 462(@T)m 26(ype)k
-240 fnt82 3121 465(attrib)m 4(ute)k 3977(of)s 4258(a)s
-4433(reference)s 5386(to)s 5634(\207nd)s 6075(out)s 6450(its)s
-6736(style,)s 7303(which)s 7955(brings)s 8613(us)s 8887(to)s
-0 177(the)m 348(follo)s 6(wing)k 1325(de\207nition)s 2299(for)s
-2637(printing)s 3447(out)s 3813(a)s 3979(reference)s 4922(in)s
-5165(the)s 5513(style)s 6020(appropriate)s 7164(to)s 7403(it:)s
-
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 87 93
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Italic
-%%+ font Times-Bold
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-1 LoutMargSet
-grestore
-240 fnt83 0 13843(4.5.)m 454(Biblio)s 2(gr)k 3(aphies)k
-240 fnt84 8831 13840(87)m 220 fnt35 480 13207(def @RefPr)m -3(int)k
-480 12919( r)m -3(ight reftag)k 480 12631({ @RefStyle&&{ @Ref)m 6(erence&&reftag @Open { @T)k 26(ype } })k
-480 12343( @Open { @Style reftag })m 480 12055(})m 240 fnt82 0 11561(F)m 3(or)k
-389(e)s 3(xample,)k 1303(to)s 1542(e)s 6(v)k 6(aluate)k
-220 fnt35 2382 11558(@RefPr)m -3(int str)k -3(unk1979style)k 240 fnt82
-4992 11561(,)m 5099(Lout)s 5611(\207rst)s 6042(e)s 6(v)k 6(aluates)k
-220 fnt35 480 11060(@Ref)m 6(erence&&str)k -3(unk1979style @Open { @T)k 26(ype })k
-240 fnt82 0 10562(whose)m 668(result)s 1258(is)s 220 fnt35
-1468 10559(Book)m 240 fnt82 1968 10562(,)m 2075(and)s 2479(then)s
-2948(e)s 6(v)k 6(aluates)k 220 fnt35 480 10080(@RefStyle&&Book @Open { @Style str)m -3(unk1979style })k
-240 fnt82 0 9582(as)m 266(before.)s 1056(Complicated)s 2353(as)s
-2619(this)s 3032(is,)s 3314(with)s 3813(its)s 4105(tw)s 2(o)k
-4531(databases)s 5515(and)s 5935(cle)s 6(v)k 3(er)k
-6586(passing)s 7373(about)s 7982(of)s 8269(tags,)s 8778(the)s
-0 9294(adv)m 6(antages)k 1098(of)s 1359(separating)s 2384(references)s
-3405(from)s 3919(printing)s 4718(styles)s 5303(are)s 5640(considerable:)s
-7004(printing)s 7804(styles)s 8389(may)s 8844(be)s 0 9006(changed)m
-856(easily)s 15(,)k 1505(and)s 1909(non-e)s 3(xpert)k
-3002(users)s 3544(need)s 4054(ne)s 6(v)k 3(er)k
-4636(see)s 4997(them.)s 480 8632(Finally)m 15(,)k 1243(we)s
-1571(come)s 2138(to)s 2370(the)s 2711(problem)s 3561(of)s
-3825(printing)s 4628(out)s 4987(a)s 5146(numbered)s 6154(list)s
-6498(of)s 6762(references,)s 7842(and)s 8239(referring)s 0 8344(to)m
-251(them)s 802(by)s 1108(number)s 1912(in)s 2167(the)s
-2528(body)s 3074(of)s 3358(the)s 3718(document.)s 4839(The)s
-5279(\207rst)s 5723(step)s 6173(is)s 6396(to)s 6647(create)s
-7285(a)s 7463(numbered)s 8491(list)s 8855(of)s 0 8056(places)m
-648(that)s 1066(g)s 1(alle)k 3(ys)k 1790(containing)s
-2853(references)s 3884(may)s 4350(attach)s 4977(to:)s 220 fnt35
-480 7555(def @Ref)m 6(erenceSection)k 480 7267( named @T)m 26(ag {})k 480 6979( named @Title { Ref)m 6(erences })k
-480 6691( named @RunningTitle { dft })m 480 6403( named style r)m -3(ight tag { tag.)k 13( })k 480 6115( named headstyle r)m -3(ight @Title { @Heading @Title })k
-480 5827( named indent { @DispIndent })m 480 5539( named gap { @DispGap })m 480 5251( named star)m -8(t { 1 })k 480 4963({)m
-480 4675( def @RefList r)m -3(ight n)k 2(um)k 480 4387( {)m 480 4099( @NumberMar)m -3(k)k 4(er n)k 2(um & indent @Wide {style n)k 2(um} | @RefPlace)k
-480 3811( //gap @RefList @Ne)m 6(xt n)k 2(um)k 480 3523( })m 480 2947( @Protect headstyle @Title)m
-480 2659( // @P)m 8(ageMar)k -3(k)k 4(er&&preceding @T)k 26(agged @T)k 26(ag)k
-480 2371( // @Title @MajorContentsEntr)m -6(y {@P)k 8(ageOf @T)k 26(ag})k 480 2083( // @Runner)m
-480 1795( @F)m 6(ootEv)k 5(en { |0.5r)k -8(t 0.8f @F)k 6(ont @B @P)k 8(ageNum })k
-480 1507( @F)m 6(ootOdd { |0.5r)k -8(t 0.8f @F)k 6(ont @B @P)k 8(ageNum })k
-480 1219( //@DispGap @RefList star)m -8(t)k 480 931( // @Runner)m 480 643( @T)m 26(opEv)k 5(en { @B @P)k 8(ageNum })k
-480 355( @T)m 26(opOdd { @I {@RunningTitle @OrElse @Title} |1r)k -8(t @B @P)k 8(ageNum })k 480 67(})m
-
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 88 94
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Times-Italic
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-0 LoutMargSet
-grestore
-240 fnt84 0 13840(88)m 240 fnt83 7017 13843(Chapter)m 7867(4.)s
-8141(Examples)s 240 fnt82 0 13205(W)m 19(e)k 378(place)s
-948(the)s 1305(e)s 3(xpression)k 220 fnt35 2392 13202(@Ref)m 6(erenceSection)k
-240 fnt82 4408 13205(at)m 4649(the)s 5007(point)s 5569(where)s
-6218(we)s 6563(w)s 2(ant)k 7096(the)s 7453(list)s
-7814(of)s 8095(references)s 0 12917(to)m 239(appear;)s 988(its)s
-1264(v)s 6(alue)k 1832(is)s 2042(something)s 3092(lik)s 2(e)k
-220 fnt35 480 12416(1.)m 13( @RefPlace)k 480 12128(2.)m 13( @RefPlace)k
-480 11840(3.)m 13( @RefPlace)k 480 11552(...)m 240 fnt82 0 11101(where)m
-220 fnt35 648 11098(@RefPlace)m 240 fnt82 1820 11101(is)m 220 fnt35
-2038 11098(@Galle)m 4(y)k 240 fnt82 2945 11101(as)m 3203(usual.)s
-3880(W)s 19(e)k 4258(can)s 4655(scatter)s 5345(multiple)s
-6205(lists)s 6649(of)s 6928(references)s 7967(through)s 8778(the)s
-0 10813(document)m 1004(if)s 1221(we)s 1555(wish)s 2064(\(at)s
-2375(the)s 2722(end)s 3126(of)s 3397(each)s 3891(chapter)s 9(,)k
-4692(for)s 5030(e)s 3(xample\),)k 6022(simply)s 6727(by)s
-7021(placing)s 220 fnt35 7777 10810(@Ref)m 6(erence)k 240 fnt82
-8998 10813(-)m 220 fnt35 0 10522(Section)m 240 fnt82 777 10525(at)m
-1009(each)s 1504(point.)s 480 10151(Our)m 912(task)s 1358(is)s
-1568(completed)s 2622(by)s 2916(the)s 3264(follo)s 6(wing)k
-4241(de\207nition:)s 220 fnt35 480 9650(def @Ref r)m -3(ight x)k 480 9362({)m
-480 9074( def sendref into { @RefPlace&&f)m 6(ollo)k 3(wing })k 480 8786( r)m -3(ight @K)k 8(e)k 4(y)k
-480 8498( {)m 480 8210( @NumberMar)m -3(k)k 4(er&&preceding @T)k 26(agged x &)k
-480 7922( @P)m 8(ageMar)k -3(k)k 4(er&&preceding @T)k 26(agged x &)k
-480 7634( @RefPr)m -3(int x)k 480 7346( })m 480 6770( @NumberMar)m -3(k)k 4(er&&x @Open { @T)k 26(ag } sendref x)k
-480 6482(})m 240 fnt82 0 5988(Gi)m 6(v)k 3(en)k
-633(this)s 1029(de\207nition,)s 2053(the)s 2401(in)s 9(v)k 4(ocation)k
-220 fnt35 3455 5985(@Ref str)m -3(unk1979style)k 240 fnt82 5672 5988(has)m
-6042(result)s 220 fnt35 480 5489(@NumberMar)m -3(k)k 4(er&&str)k -3(unk1979style @Open { @T)k 26(ag })k
-240 fnt82 0 4990(plus)m 450(the)s 798(g)s 1(alle)k 3(y)k
-220 fnt35 1432 4987(sendref str)m -3(unk1979style)k 240 fnt82 3757 4990(.)m
-3921(W)s 19(e)k 4290(\207rst)s 4721(follo)s 6(w)k
-5393(what)s 5918(happens)s 6754(to)s 6993(the)s 7341(g)s 1(alle)k 3(y)k 15(.)k
-480 4616(According)m 1555(to)s 1806(its)s 220 fnt35 2094 4613(into)m
-240 fnt82 2512 4616(clause,)m 3229(the)s 3589(g)s 1(alle)k 3(y)k
-4235(will)s 4673(replace)s 5430(a)s 220 fnt35 5609 4613(@RefPlace)m
-240 fnt82 6785 4616(in)m 7040(the)s 7400(nearest)s 8149(follo)s 6(wing)k
-220 fnt35 0 4325(@Ref)m 6(erenceSection)k 240 fnt82 1946 4328(.)m
-2114(If)s 2348(e)s 6(v)k 3(ery)k 2928(such)s
-3428(g)s 1(alle)k 3(y)k 4066(is)s 4280(a)s
-4450(sorted)s 5096(g)s 1(alle)k 3(y)k 5734(whose)s
-6406(k)s 2(e)k 3(y)k 6805(is)s 7019(the)s
-7371(reference')s 13(s)k 8472(tag,)s 8876(as)s 0 4040(this)m
-396(one)s 798(is,)s 1064(the)s 3(y)k 1527(will)s
-1953(appear)s 2650(sorted)s 3292(by)s 3586(tag.)s 4042(The)s
-4470(g)s 1(alle)k 3(y')k 13(s)k 5260(object)s
-5904(is)s 220 fnt35 480 3539(@NumberMar)m -3(k)k 4(er&&preceding @T)k 26(agged str)k -3(unk1979style &)k
-480 3251(@P)m 8(ageMar)k -3(k)k 4(er&&preceding @T)k 26(agged str)k -3(unk1979style &)k
-480 2963(@RefPr)m -3(int str)k -3(unk1979style)k 240 fnt82 0 2465(The)m
-428(result)s 1017(of)s 1287(the)s 220 fnt35 1634 2462(@T)m 26(agged)k
-240 fnt82 2622 2465(symbol)m 3381(is)s 3590(al)s 2(w)k 2(ays)k
-220 fnt35 4300 2462(@Null)m 240 fnt82 4885 2465(,)m 4991(so)s
-5256(this)s 5651(prints)s 6245(the)s 220 fnt35 6592 2462(str)m -3(unk1979style)k
-240 fnt82 8183 2465(reference)m 0 2177(in)m 243(the)s 591(appropriate)s
-1735(style)s 2242(at)s 2474(the)s 220 fnt35 2822 2174(@RefPlace)m
-240 fnt82 3926 2177(,)m 4033(as)s 4283(desired.)s 480 1803(No)m 6(w)k
-220 fnt35 1043 1800(@NumberMar)m -3(k)k 4(er&&preceding)k 240 fnt82
-4081 1803(is)m 4341(the)s 4739(nearest)s 5524(preceding)s 6570(in)s 9(v)k 4(ocation)k
-7674(of)s 220 fnt35 7995 1800(@Number)m 240 fnt82 8998 1803(-)m
-220 fnt35 0 1512(Mar)m -3(k)k 4(er)k 240 fnt82
-775 1515(in)m 1051(the)s 1432(\207nal)s 1946(document.)s 3087(This)s
-3596(must)s 4155(be)s 4470(the)s 4851(in)s 9(v)k 4(ocation)k
-5939(of)s 220 fnt35 6243 1512(@NumberMar)m -3(k)k 4(er)k
-240 fnt82 8021 1515(just)m 8460(before)s 0 1227(the)m 220 fnt35
-378 1224(@RefPlace)m 240 fnt82 1572 1227(that)m 2020(recei)s 6(v)k 3(ed)k
-2908(the)s 3286(g)s 1(alle)k 3(y)k 15(,)k
-3988(and)s 4423(so)s 4719(this)s 5145(in)s 9(v)k 4(ocation)k
-6229(of)s 220 fnt35 6530 1224(@NumberMar)m -3(k)k 4(er)k
-240 fnt82 8305 1227(is)m 8546(gi)s 6(v)k 3(en)k
-220 fnt35 0 936(str)m -3(unk1979style)k 240 fnt82 1585 939(as)m
-1827(an)s 2102(additional)s 3105(tag)s 3442(by)s 3728(the)s
-220 fnt35 4068 936(@T)m 26(agged)k 240 fnt82 5050 939(symbol.)m
-5911(Its)s 6192(original)s 6982(tag)s 7319(w)s 2(as)k
-7732(the)s 8072(number)s 8855(of)s 0 651(the)m 348(reference)s
-1291(place,)s 1902(which)s 2544(means)s 3206(that)s 220 fnt35
-480 150(@NumberMar)m -3(k)k 4(er&&str)k -3(unk1979style @Open { @T)k 26(ag })k
-
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 89 95
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Italic
-%%+ font Times-Bold
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-1 LoutMargSet
-grestore
-240 fnt83 0 13843(4.5.)m 454(Biblio)s 2(gr)k 3(aphies)k
-240 fnt84 8832 13840(89)m 240 fnt82 0 13205(has)m 370(for)s
-708(its)s 984(result)s 1574(the)s 1922(number)s 2713(of)s
-2984(the)s 3332(reference)s 4275(place)s 4835(that)s 5253(recei)s 6(v)k 3(ed)k
-6111(the)s 220 fnt35 6459 13202(str)m -3(unk1979style)k 240 fnt82
-8051 13205(g)m 1(alle)k 3(y)k 15(,)k 8722(and)s
-0 12917(this)m 396(is)s 606(the)s 954(desired)s 1702(result)s
-2292(of)s 220 fnt35 2563 12914(@Ref str)m -3(unk1979style)k 240 fnt82
-4720 12917(.)m 480 12543(It)m 674(might)s 1281(seem)s 1821(that)s
-2228(if)s 2434(we)s 2758(refer)s 3256(to)s 3483(the)s
-220 fnt35 3820 12540(str)m -3(unk1979style)k 240 fnt82 5401 12543(reference)m
-6333(twice,)s 6946(tw)s 2(o)k 7345(copies)s 7996(will)s
-8411(be)s 8681(sent)s 0 12255(to)m 247(the)s 603(reference)s
-1554(list)s 1914(and)s 2326(it)s 2526(will)s 2961(appear)s
-3666(twice.)s 4355(Ho)s 6(we)k 6(v)k 3(er)k 9(,)k
-5324(when)s 5908(more)s 6463(than)s 6941(one)s 7351(sorted)s
-8001(g)s 1(alle)k 3(y)k 8644(with)s 0 11967(the)m
-341(same)s 881(k)s 2(e)k 3(y)k 1269(is)s
-1472(sent)s 1910(to)s 2142(the)s 2483(same)s 3023(place,)s
-3627(only)s 4100(one)s 4495(of)s 4759(them)s 5290(is)s
-5493(printed)s 6221(\(Section)s 7067(1.4\);)s 7551(so)s 7810(pro)s 3(vided)k
-8708(that)s 0 11679(sorted)m 642(g)s 1(alle)k 3(ys)k
-1366(are)s 1713(used)s 2210(there)s 2743(is)s 2953(no)s
-3246(problem.)s
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 90 96
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Times-Italic
-/pgsave save def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-0 LoutMargSet
-grestore
-480 fnt84 0 12955(Refer)m 8(ences)k 240 fnt82 0 12358([1])m
-480(Adobe)s 1182(Systems,)s 2094(Inc..)s 240 fnt83 2631 12360(P)m 19(ostScript)k
-3680(Langua)s 2(g)k 2(e)k 4696(Refer)s 8(ence)k
-5704(Manual,)s 6550(Second)s 7316(Edition)s 240 fnt82 8014 12358(.)m
-8186(Addison-)s 480 12070(W)m 19(esle)k 3(y)k 1169(,)s
-1276(1990)s 1751(.)s 0 11567([2])m 480(Brian)s 1132(W)s 22(.)k
-1504(K)s 6(ernighan)k 2630(and)s 3098(Lorinda)s 3980(L.)s
-4294(Cherry)s 15(.)k 5172(A)s 5466(system)s 6255(for)s
-6657(typesetting)s 7824(mathematics)s 9022(.)s 240 fnt83 480 11281(Communications)m
-2158(of)s 2439(the)s 2784(A)s 7(CM)k 240 fnt84
-3351 11278(18)m 240 fnt82 3585 11279(,)m 3692(182\211193)s 4576(\(1975\))s
-5203(.)s 0 10778([3])m 480(Jef)s 6(fre)k 3(y)k
-1177(H.)s 1443(Kingston.)s 240 fnt83 2475 10780(The)m 2876(Basser)s
-3581(Lout)s 4074(Document)s 5111(F)s 25(ormatting)k 6219(System)s
-6929(\(V)s 26(er)k 2(sion)k 7767(3\))s 240 fnt82
-7956 10778(.)m 8109(Computer)s 480 10490(program)m 1290(,)s 1408(1995)s
-1874(.)s 2050(Publicly)s 2913(a)s 4(v)k 6(ailable)k
-3833(in)s 4088(the)s 240 fnt83 4448 10492(jef)m 4(f)k
-240 fnt82 4855 10490(subdirectory)m 6116(of)s 6399(the)s 6759(home)s
-7359(directory)s 8287(of)s 240 fnt83 8570 10492(ftp)m 240 fnt82
-8887 10490(to)m 480 10202(host)m 240 fnt83 950 10204(ftp.cs.su.oz.au)m 240 fnt82
-2373 10202(with)m 2866(login)s 3427(name)s 240 fnt83 4012 10204(anonymous)m
-240 fnt82 5171 10202(or)m 240 fnt83 5442 10204(ftp)m 240 fnt82
-5758 10202(and)m 6174(an)s 3(y)k 6582(non-empty)s 7685(passw)s 2(ord)k
-8657(\(e.g.)s 240 fnt83 480 9916(none)m 240 fnt82 939 9914(\).)m
-1175(Lout)s 1680(distrib)s 4(utions)k 2914(are)s 3254(also)s
-3685(a)s 4(v)k 6(ailable)k 4585(from)s 5102(the)s
-240 fnt83 5443 9916(comp.sour)m 8(ces.misc)k 240 fnt82 7291 9914(ne)m 6(wsgroup,)k
-8436(and)s 8832(by)s 480 9626(electronic)m 1474(mail)s 1953(from)s
-2477(the)s 2825(author)s 13(.)k 3587(All)s 3947(enquiries)s
-4874(to)s 240 fnt83 5113 9628(jef)m 4(f@cs.su.oz.au)k 240 fnt82
-6672 9626(.)m 0 9121([4])m 480(Jef)s 6(fre)k 3(y)k
-1187(H.)s 1463(Kingston.)s 240 fnt83 2504 9123(A)m 2698(User')s 9(s)k
-3380(Guide)s 4017(to)s 4255(the)s 4599(Lout)s 5101(Document)s
-6148(F)s 25(ormatting)k 7266(System)s 7985(\(V)s 26(er)k 2(sion)k
-8833(3\))s 240 fnt82 9022 9121(.)m 480 8833(Basser)m 1177(Department)s
-2365(of)s 2636(Computer)s 3653(Science)s 4392(,)s 4499(Uni)s 6(v)k 3(ersity)k
-5553(of)s 5824(Sydne)s 3(y)k 6534(,)s 6641(1995)s
-7107(.)s 0 8328([5])m 480(Donald)s 1243(E.)s 1493(Knuth.)s
-240 fnt83 2256 8330(The)m 2668(T)s 2764 8282(E)m 2872 8330(X)m
-3028(Book)s 240 fnt82 3524 8328(.)m 3688(Addison-W)s 19(esle)k 3(y)k
-5268(,)s 5375(1984)s 5849(.)s 0 7823([6])m 480(Brian)s
-1048(K.)s 1305(Reid.)s 1900(A)s 2110(High-)s 2657(Le)s 6(v)k 3(el)k
-3227(Approach)s 4207(to)s 4426(Computer)s 5423(Document)s 6459(Production)s
-7506(.)s 7650(In)s 240 fnt83 7885 7825(Pr)m 10(oceedings)k
-480 7537(of)m 745(the)s 1073(7th)s 1417(Symposium)s 2548(on)s
-2825(the)s 3153(Principles)s 4174(of)s 4438(Pr)s 10(o)k 2(gr)k 3(amming)k
-5804(Langua)s 2(g)k 2(es)k 6891(\(POPL\),)s 7723(Las)s
-8107(V)s 26(e)k 9(gas)k 8695(NV)s 240 fnt82
-9019 7535(,)m 480 7247(pages)m 1076(24\21131)s 1651(,)s 1758(1980)s
-2233(.)s 0 6742([7])m 480(W)s 9(illiam)k 1313(Strunk)s
-2012(and)s 2416(E.)s 2666(B.)s 2930(White.)s 240 fnt83
-3678 6744(The)m 4090(Elements)s 5021(of)s 5302(Style)s 240 fnt82
-5759 6742(.)m 5923(Macmillan)s 6955(.)s 7119(Third)s 7708(Edition)s
-8409(,)s 8516(1979)s 8987(.)s 192 fnt84 4439 2(90)m
-
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 91 97
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Helvetica
-%%+ font Times-Italic
-/pgsave save def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-1 LoutMargSet
-grestore
-480 fnt84 0 12962(Index)m 220 fnt35 0 12365(adjust)m 641(@Break)s
-240 fnt82 1444 12368(,)m 1551(42)s 0 12080(Adjustment)m 1176(of)s
-1447(object)s 2038(,)s 2145(49)s 0 11792(Adobe)m 695(Systems,)s
-1599(Inc.)s 1955(,)s 2062(41)s 0 11504(Alignment)m 240 fnt83
-1083 11506(see)m 240 fnt82 1441 11504(mark)m 1993(alignment)s 0 11216(Associati)m 6(vity)k
-1256(,)s 1363(22)s 220 fnt35 0 10637(b)m 240 fnt82
-174 10640(unit)m 553(,)s 660(37)s 240 10352(use)m 615(in)s
-220 fnt35 858 10349(//1.1b)m 240 fnt82 1406 10352(,)m 1513(27)s
-220 fnt35 0 10061(@Bac)m 4(kEnd)k 240 fnt82 1145 10064(symbol)m
-1852(,)s 1959(66)s 220 fnt35 0 9773(@Bac)m 4(kg)k 2(round)k
-240 fnt82 1436 9776(symbol)m 2143(,)s 2250(53)s 220 fnt35
-0 9485(@Begin)m 240 fnt82 829 9488(symbol)m 1536(,)s 1643(36)s
-0 9200(Bibliographies)m 1406(,)s 1513(85)s 0 8912(Body)m 574(of)s
-845(a)s 1011(de\207nition)s 1932(,)s 2039(4)s 220 fnt35
-0 8621(body)m 240 fnt82 534 8624(parameter)m 1495(,)s 1602(17)s
-0 8336(Braces)m 648(,)s 755(3)s 220 fnt35 0 7757(c)m
-240 fnt82 165 7760(unit)m 544(,)s 651(37)s 220 fnt35
-0 7469(@Case)m 240 fnt82 787 7472(symbol)m 1494(,)s 1601(56)s
-0 7184(Centring)m 837(,)s 944(37)s 220 fnt35 0 6893(@Chapter)m
-240 fnt82 1063 6896(e)m 3(xample)k 1873(,)s 1980(81)s
-0 6608(Chapters)m 901(and)s 1305(sections)s 2073(,)s 2180(80)s
-220 fnt35 0 6317(@Char)m 240 fnt82 758 6320(symbol)m 1465(,)s
-1572(41)s 0 6032(Cherry)m 15(,)k 756(L.)s 953(,)s
-1060(69)s 220 fnt35 0 5741(clines)m 613(@Break)s 240 fnt82
-1416 5744(,)m 1523(42)s 220 fnt35 0 5453(@ColList)m 240 fnt82
-948 5456(e)m 3(xample)k 1758(,)s 1865(77)s 0 5168(Column)m
-829(mark)s 1328(,)s 1435(1)s 0 4880(Comment)m 951(,)s
-1058(15)s 0 4592(Comment)m 1004(character)s 1885(,)s 1992(13)s
-220 fnt35 0 4301(@Common)m 240 fnt82 1159 4304(symbol)m 1866(,)s
-1973(53)s 0 4016(Components)m 1262(of)s 1533(a)s 1699(g)s 1(alle)k 3(y)k
-2280(,)s 2387(26)s 240 3728(promotion)m 1294(of)s 1512(,)s
-1619(29)s 0 3440(Concatenation)m 1439(symbols)s 2235(,)s 2342(36)s
-0 3152(Contraction)m 1186(of)s 1457(object)s 2048(,)s 2155(48)s
-220 fnt35 0 2861(cr)m 2(agged)k 839(@Break)s 240 fnt82
-1642 2864(,)m 1749(42)s 0 2576(Cross)m 596(reference)s 1486(,)s
-1593(7)s 220 fnt35 0 2285(@CurrLang)m 240 fnt82 1185 2288(symbol)m
-1892(,)s 1999(46)s 220 fnt35 0 1709(d)m 240 fnt82
-170 1712(unit)m 549(,)s 656(37)s 220 fnt35 0 1421(@Database)m
-240 fnt82 1214 1424(symbol)m 1921(,)s 2028(60)s 0 1136(Date,)m
-558(printing)s 1368(of)s 1639(current)s 2322(,)s 2429(57)s
-0 848(Def)m 2(ault)k 774(v)s 6(alue)k 1342(of)s
-1613(parameter)s 2574(,)s 2681(15)s 4816 12367(De\207nitions)m 5877(,)s
-5984(4)s 4816 12079(Delimiter)m 5737(,)s 5844(13)s 4816 11791(Diag)m
-5334(diagram-dra)s 3(wing)k 7030(package)s 7817(,)s 7924(64)s
-4816 11503(Diagrams)m 5743(,)s 5850(61)s 4816 11215(DocumentLayout)m 6551(package)s
-7338(,)s 7445(71)s 5056 10927(chapters)m 5903(and)s 6307(sections)s
-7075(,)s 7182(80)s 5056 10639(displays)m 5838(,)s 5945(72)s
-5056 10351(lists)m 5438(,)s 5545(73)s 5056 10063(page)m 5564(layout)s
-6169(,)s 6276(75)s 5056 9775(paragraphs)m 6103(,)s 6210(71)s
-220 fnt35 4816 9196(e)m 240 fnt82 4990 9199(g)m 1(ap)k
-5388(mode)s 5923(,)s 6030(37)s 4816 8911(Edge-to-edge)m 6160(g)s 1(ap)k
-6558(mode)s 7093(,)s 7200(37)s 220 fnt35 4816 8620(@Enclose)m
-240 fnt82 5818 8623(,)m 5925(30)s 220 fnt35 4816 8332(@End)m
-240 fnt82 5477 8335(symbol)m 6184(,)s 6291(36)s 4816 8047(Eq)m
-5140(equation)s 6021(formatting)s 7082(package)s 7869(,)s 7976(69)s
-220 fnt35 4816 7756(@Eq)m 240 fnt82 5354 7759(e)m 3(xample)k
-6164(,)s 6271(69)s 4816 7471(Escape)m 5549(character)s 6430(,)s
-6537(13)s 220 fnt35 4816 7180(@Ev)m 5(enP)k 8(ageList)k
-240 fnt82 6435 7183(e)m 3(xample)k 7245(,)s 7352(79)s
-4816 6895(Expansion)m 5884(of)s 6155(object)s 6746(,)s 6853(48)s
-220 fnt35 4816 6604(e)m 6(xpor)k -8(t)k 240 fnt82
-5484 6607(clause)m 6084(,)s 6191(18)s 220 fnt35 4816 6028(f)m
-240 fnt82 4934 6031(unit)m 5313(,)s 5420(37)s 4816 5743(F)m 3(ace)k
-5320(of)s 5591(a)s 5757(font)s 6149(,)s 6256(40)s
-4816 5455(F)m 3(amily)k 5544(of)s 5815(a)s 5981(font)s
-6373(,)s 6480(40)s 220 fnt35 4816 5164(f)m 6(ollo)k 3(wing)k
-240 fnt82 5653 5167(,)m 5760(8)s 220 fnt35 4816 4876(f)m 6(ollo)k 3(wing)k
-240 fnt82 5653 4879(,)m 5760(8)s 4816 4591(F)m 3(onts)k
-5343(,)s 5450(40)s 220 fnt35 4816 4300(f)m 6(ontdef)k
-240 fnt82 5485 4303(,)m 5592(41)s 220 fnt35 4816 4012(@F)m 6(ont)k
-240 fnt82 5528 4015(symbol)m 6235(,)s 6342(40)s 220 fnt35
-4816 3724(@F)m 6(ootSect)k 240 fnt82 5967 3727(e)m 3(xample)k
-6777(,)s 6884(76)s 4816 3439(F)m 3(orcing)k 5610(g)s 1(alle)k 3(y)k
-6191(,)s 6298(29)s 4816 3151(F)m 3(ormfeed)k 5747(,)s
-5854(13)s 4816 2575(Galle)m 3(ys)k 5541(,)s 5648(10)s
-5056 2287(in)m 5299(detail)s 5831(,)s 5938(25)s 220 fnt35
-4816 1996(@Galle)m 4(y)k 5654(@F)s 6(orceGalle)k 4(y)k
-240 fnt82 7107 1999(symbol)m 7814(,)s 7921(58)s 8155(,)s
-4816 1711(Gap)m 5215(,)s 5322(37)s 4816 1423(Gap)m 5268(mode)s
-5803(,)s 5910(37)s 220 fnt35 4816 1132(@Gr)m 2(aphic)k
-240 fnt82 5860 1135(symbol)m 6567(,)s 6674(61)s 192 fnt84
-4442 2(91)m
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 92 98
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Times-Italic
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-0 LoutMargSet
-grestore
-240 fnt84 0 13840(92)m 240 fnt83 8539 13843(Inde)m 4(x)k
-220 fnt35 0 13246(h)m 240 fnt82 168 13249(g)m 1(ap)k
-566(mode)s 1101(,)s 1208(37)s 220 fnt35 0 12958(@HAdjust)m
-240 fnt82 1046 12961(symbol)m 1753(,)s 1860(49)s 220 fnt35
-0 12670(@HContr)m 2(act)k 240 fnt82 1264 12673(symbol)m 1971(,)s
-2078(48)s 220 fnt35 0 12382(@HCo)m 3(v)k 5(er)k
-240 fnt82 1018 12385(symbol)m 1725(,)s 1832(50)s 0 12097(Height)m
-711(of)s 982(an)s 1265(object)s 1856(,)s 1963(24)s
-220 fnt35 0 11806(@HExpand)m 240 fnt82 1173 11809(symbol)m 1880(,)s
-1987(48)s 220 fnt35 0 11518(@High)m 240 fnt82 719 11521(symbol)m
-1426(,)s 1533(47)s 220 fnt35 0 11230(@HLimited)m 240 fnt82
-1135 11233(symbol)m 1842(,)s 1949(48)s 220 fnt35 0 10942(@Hline)m
-240 fnt82 773 10945(e)m 3(xample)k 1583(,)s 1690(71)s
-0 10657(Horizontal)m 1077(concatenation)s 2409(,)s 2516(36)s 220 fnt35
-0 10366(@HScale)m 240 fnt82 981 10369(symbol)m 1688(,)s 1795(49)s
-220 fnt35 0 10078(@HShift)m 240 fnt82 875 10081(symbol)m 1582(,)s
-1689(47)s 220 fnt35 0 9790(@HSpan)m 240 fnt82 939 9793(symbol)m
-1646(,)s 1753(50)s 220 fnt35 0 9502(h)m 6(yphen)k
-760(@Break)s 240 fnt82 1563 9505(,)m 1670(43)s 0 9217(Hyphenation)m
-1294(g)s 1(ap)k 1692(mode)s 2227(,)s 2334(39)s
-0 8929(Hyphenation)m 1294(g)s 1(ap)k 1692(mode)s 2227(,)s
-2334(37)s 0 8353(Identi\207er)m 882(,)s 989(13)s 220 fnt35
-0 8062(impor)m -8(t)k 240 fnt82 673 8065(clause)m 1273(,)s
-1380(18)s 0 7777(In-paragraph)m 1291(concatenation)s 2623(,)s 2730(37)s
-220 fnt35 0 7486(@Include)m 240 fnt82 982 7489(symbol)m 1689(,)s
-1796(66)s 220 fnt35 0 7198(@IncludeGr)m 2(aphic)k 240 fnt82
-1751 7201(symbol)m 2458(,)s 2565(65)s 220 fnt35 0 6910(@IndentedDispla)m 6(y)k
-240 fnt82 1847 6913(e)m 3(xample)k 2657(,)s 2764(72)s
-220 fnt35 0 6622(@IndentedList)m 240 fnt82 1474 6625(e)m 3(xample)k
-2284(,)s 2391(73)s 0 6337(Inde)m 3(x)k 597(\207le)s
-958(\(for)s 1375(databases\))s 2366(,)s 2473(61)s 220 fnt35
-0 6046(@Inser)m -8(t)k 240 fnt82 836 6049(symbol)m 1543(,)s
-1650(54)s 220 fnt35 0 5758(into)m 240 fnt82 406 5761(clause)m
-1006(,)s 1113(10)s 0 5473(In)m 9(v)k 4(ocation)k
-1067(of)s 1338(a)s 1504(symbol)s 2211(,)s 2318(4)s
-220 fnt35 0 4606(k)m 240 fnt82 170 4609(g)m 1(ap)k
-568(mode)s 1103(,)s 1210(37)s 0 4321(K)m 6(ernighan,)k
-1111(B.)s 1322(,)s 1429(69)s 0 4033(K)m 6(erning)k
-778(,)s 885(40)s 0 3745(K)m 6(erning)k 831(g)s 1(ap)k
-1229(mode)s 1764(,)s 1871(37)s 220 fnt35 0 3454(@K)m 8(er)k -5(nShr)k -3(ink)k
-240 fnt82 1367 3457(symbol)m 2074(,)s 2181(53)s 220 fnt35
-0 3166(@K)m 8(e)k 4(y)k 240 fnt82 647 3169(parameter)m
-1608(,)s 1715(31)s 0 2881(Knuth,)m 706(D.)s 930(,)s
-1037(71)s 220 fnt35 0 2302(langdef)m 240 fnt82 776 2305(language)m
-1696(de\207nition)s 2617(,)s 2724(46)s 220 fnt35 0 2014(@Language)m
-240 fnt82 1251 2017(symbol)m 1958(,)s 2065(45)s 220 fnt35
-0 1726(@LClos)m 240 fnt82 836 1729(symbol)m 1543(,)s 1650(14)s
-0 1441(LCM)m 573(\207le)s 881(,)s 988(41)s 0 1153(Length)m
-682(,)s 789(37)s 220 fnt35 0 862(@LEn)m 4(v)k
-240 fnt82 778 865(symbol)m 1485(,)s 1592(14)s 0 577(Letter)m
-629(character)s 1510(,)s 1617(13)s 0 289(Lig)m 1(atures)k
-899(,)s 1006(40)s 220 fnt35 4816 13247(lines)m 5319(@Break)s
-240 fnt82 6122 13250(,)m 6229(42)s 220 fnt35 4816 12959(@LInput)m
-240 fnt82 5705 12962(symbol)m 6412(,)s 6519(14)s 4816 12674(Literal)m
-5506(w)s 2(ord)k 6001(,)s 6108(14)s 220 fnt35
-4816 12383(@LUse)m 240 fnt82 5603 12386(symbol)m 6310(,)s 6417(14)s
-220 fnt35 4816 12095(@L)m 24(Vis)k 240 fnt82 5494 12098(symbol)m
-6201(,)s 6308(14)s 220 fnt35 4816 11519(m)m 240 fnt82
-5045 11522(unit)m 5424(,)s 5531(37)s 4816 11234(Macro)m 5440(,)s
-5547(15)s 4816 10946(Mark)m 5395(alignment)s 6358(,)s 6465(1)s
-5056 10658(in)m 5299(detail)s 5831(,)s 5938(28)s 4816 10370(Mark-to-mark)m
-6230(g)s 1(ap)k 6628(mode)s 7163(,)s 7270(37)s
-220 fnt35 4816 10079(@Meld)m 240 fnt82 5562 10082(symbol)m 6269(,)s
-6376(53)s 220 fnt35 4816 9791(@Merge)m 240 fnt82 5713 9794(symbol)m
-6420(,)s 6527(32)s 220 fnt35 4816 9503(@Moment)m 240 fnt82
-5888 9506(symbol)m 6595(,)s 6702(57)s 220 fnt35 4816 8927(named)m
-240 fnt82 5535 8930(parameter)m 6496(,)s 6603(15)s 4816 8642(Nested)m
-5538(de\207nitions)s 6546(,)s 6653(17)s 220 fnt35 4816 8351(@Ne)m 6(xt)k
-240 fnt82 5540 8354(symbol)m 6247(,)s 6354(56)s 220 fnt35
-4816 8063(noh)m 6(yphen)k 5820(@Break)s 240 fnt82 6623 8066(,)m
-6730(43)s 220 fnt35 4816 7775(@NotRe)m 6(v)k 5(ealed)k
-240 fnt82 6343 7778(symbol)m 7050(,)s 7157(58)s 220 fnt35
-4816 7487(@Null)m 240 fnt82 5461 7490(symbol)m 6168(,)s 6275(57)s
-4816 7202(Numbered)m 5884(list)s 6182(,)s 6289(73)s 220 fnt35
-4816 6911(@NumberOf)m 240 fnt82 6108 6914(e)m 3(xample)k 6918(,)s
-7025(80)s 220 fnt35 4816 6335(o)m 240 fnt82 4991 6338(g)m 1(ap)k
-5389(mode)s 5924(,)s 6031(37)s 4816 6050(Object)m 5460(,)s
-5567(1)s 220 fnt35 4816 5759(@OddP)m 8(ageList)k 240 fnt82
-6355 5762(e)m 3(xample)k 7165(,)s 7272(79)s 220 fnt35
-4816 5471(@OneCol)m 240 fnt82 5828 5474(symbol)m 6535(,)s 6642(47)s
-220 fnt35 4816 5183(@OneOf)m 240 fnt82 5743 5186(symbol)m 6450(,)s
-6557(54)s 220 fnt35 4816 4895(@OneP)m 8(age)k 240 fnt82
-6010 4898(e)m 3(xample)k 6820(,)s 6927(78)s 220 fnt35
-4816 4607(@OneRo)m 3(w)k 240 fnt82 5947 4610(symbol)m 6654(,)s
-6761(46)s 220 fnt35 4816 4319(@Open)m 240 fnt82 5622 4322(symbol)m
-6329(,)s 6436(60)s 4816 4034(Optimal)m 5654(g)s 1(alle)k 3(y)k
-6288(breaking)s 7125(,)s 7232(34)s 220 fnt35 4816 3743(@Optimiz)m 3(e)k
-240 fnt82 5953 3746(symbol)m 6660(,)s 6767(35)s 220 fnt35
-4816 3455(or)m 2(agged)k 5667(@Break)s 240 fnt82 6470 3458(,)m
-6577(42)s 220 fnt35 4816 3167(@OrElse)m 240 fnt82 5761 3170(e)m 3(xample)k
-6571(,)s 6678(83)s 4816 2882(Other)m 5420(character)s 6301(,)s
-6408(13)s 220 fnt35 4816 2591(outdent)m 5604(@Break)s 240 fnt82
-6407 2594(,)m 6514(42)s 220 fnt35 4816 2303(o)m 3(v)k 5(er)k
-240 fnt82 5295 2306(e)m 3(xample)k 6105(,)s 6212(70)s
-4816 2018(Ov)m 3(erstrik)k 2(e)k 5875(g)s 1(ap)k
-6273(mode)s 6808(,)s 6915(37)s 220 fnt35 4816 1439(p)m
-240 fnt82 4990 1442(unit)m 5369(,)s 5476(37)s 220 fnt35
-4816 1151(@P)m 26(Adjust)k 240 fnt82 5824 1154(symbol)m 6531(,)s
-6638(49)s 220 fnt35 4816 863(@P)m 8(age)k 240 fnt82
-5595 866(e)m 3(xample)k 6405(,)s 6512(77)s 4816 578(P)m 3(age)k
-5334(layout)s 5056 290(principles)m 6049(of)s 6267(,)s 6374(5)s
-
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 93 99
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Italic
-%%+ font Times-Bold
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-1 LoutMargSet
-grestore
-240 fnt83 0 13843(Inde)m 4(x)k 240 fnt84 8833 13840(93)m
-240 fnt82 240 13247(in)m 483(practice)s 1241(,)s 1348(75)s
-220 fnt35 0 12956(@P)m 8(ageLabel)k 240 fnt82 1309 12959(symbol)m
-2016(,)s 2123(68)s 220 fnt35 0 12668(@P)m 8(ageOf)k
-240 fnt82 1016 12671(e)m 3(xample)k 1826(,)s 1933(75)s
-0 12383(P)m 3(aragraph)k 1023(breaking)s 1860(,)s 1967(3)s
-240 12095(in)m 483(detail)s 1015(,)s 1122(39)s 0 11807(P)m 3(arameter)k
-971(,)s 1078(4)s 220 fnt35 240 11516(body)m 240 fnt82
-774 11519(parameter)m 1735(,)s 1842(17)s 220 fnt35 240 11228(named)m
-240 fnt82 959 11231(parameter)m 1920(,)s 2027(15)s 220 fnt35
-0 10940(@PlainGr)m 2(aphic)k 240 fnt82 1530 10943(symbol)m 2237(,)s
-2344(65)s 0 10655(PostScript)m 989(,)s 1096(ii)s 240 10367(used)m
-737(by)s 220 fnt35 1031 10364(@Gr)m 2(aphic)k 240 fnt82
-2022 10367(,)m 2129(61)s 240 10079(used)m 737(by)s 220 fnt35
-1031 10076(@IncludeGr)m 2(aphic)k 240 fnt82 2729 10079(,)m 2836(65)s
-240 9791(used)m 737(by)s 220 fnt35 1031 9788(@PrependGr)m 2(aphic)k
-240 fnt82 2851 9791(,)m 2958(65)s 220 fnt35 0 9500(@PP)m
-240 fnt82 566 9503(e)m 3(xample)k 1376(,)s 1483(72)s
-0 9215(Precedence)m 1091(,)s 1198(22)s 220 fnt35 0 8924(preceding)m
-240 fnt82 958 8927(,)m 1065(8)s 220 fnt35 0 8636(@PrependGr)m 2(aphic)k
-240 fnt82 1873 8639(symbol)m 2580(,)s 2687(65)s 0 8351(Principal)m
-917(mark)s 1416(,)s 1523(37)s 240 8063(ef)m 6(fect)k
-836(on)s 220 fnt35 1133 8060(@OneCol)m 240 fnt82 2145 8063(and)m
-220 fnt35 2549 8060(@OneRo)m 3(w)k 240 fnt82 3627 8063(,)m
-3734(46)s 0 7775(Promotion)m 1067(of)s 1338(components)s 2493(,)s
-2600(29)s 0 7199(Quote)m 641(character)s 1522(,)s 1629(13)s
-0 6911(Quoted)m 763(w)s 2(ord)k 1258(,)s 1365(14)s
-220 fnt35 0 6332(r)m 240 fnt82 133 6335(unit)m 512(,)s
-619(37)s 220 fnt35 0 6044(r)m 2(agged)k 729(@Break)s
-240 fnt82 1532 6047(,)m 1639(42)s 220 fnt35 0 5756(@Ra)m 4(wV)k 17(erbatim)k
-240 fnt82 1563 5759(symbol)m 2270(,)s 2377(67)s 0 5471(Recepti)m 6(v)k 3(e)k
-1003(symbol)s 1710(,)s 1817(11)s 0 5183(Recursion)m 974(,)s
-1081(5)s 220 fnt35 0 4892(@Ref)m 240 fnt82 621 4895(e)m 3(xample)k
-1431(,)s 1538(88)s 220 fnt35 0 4604(@Ref)m 6(erence)k
-240 fnt82 1281 4607(e)m 3(xample)k 2091(,)s 2198(85)s
-220 fnt35 0 4316(@Ref)m 6(erenceSection)k 240 fnt82 2006 4319(e)m 3(xample)k
-2816(,)s 2923(87)s 0 4031(Reid,)m 559(Brian)s 1147(K.)s
-1371(,)s 1478(7)s 0 3743(Right)m 592(justi\207cation)s 1724(,)s
-1831(37)s 220 fnt35 0 3452(r)m -3(lines)k 579(@Break)s
-240 fnt82 1382 3455(,)m 1489(42)s 0 3167(Roman)m 749(numerals)s
-1623(,)s 1730(75)s 0 2879(Root)m 526(g)s 1(alle)k 3(y)k
-1107(,)s 1214(11)s 240 2591(in)m 483(detail)s 1015(,)s
-1122(28)s 240 2303(printing)m 1050(of)s 1268(,)s 1375(29)s
-240 2015(size)m 667(of)s 938(components)s 2146(of)s 2364(,)s
-2471(25)s 220 fnt35 0 1724(@Rotate)m 240 fnt82 921 1727(symbol)m
-1628(,)s 1735(52)s 0 1439(Rotation)m 881(of)s 1152(object)s
-1743(,)s 1850(52)s 0 1151(Ro)m 6(w)k 501(mark)s
-1000(,)s 1107(2)s 220 fnt35 0 860(rr)m 2(agged)k
-802(@Break)s 240 fnt82 1605 863(,)m 1712(42)s 220 fnt35
-0 572(@Rump)m 240 fnt82 860 575(symbol)m 1567(,)s 1674(53)s
-220 fnt35 0 284(@Runner)m 240 fnt82 1002 287(e)m 3(xample)k
-1812(,)s 1919(78)s 220 fnt35 4816 13246(s)m 240 fnt82
-4979 13249(unit)m 5358(,)s 5465(37)s 5056 12961(and)m 220 fnt35
-5460 12958(@Space)m 240 fnt82 6357 12961(symbol)m 7064(,)s 7171(43)s
-220 fnt35 4816 12670(@Scale)m 240 fnt82 5639 12673(symbol)m 6346(,)s
-6453(51)s 4816 12385(Scaling)m 5586(of)s 5857(object)s 6448(,)s
-6555(49)s 4816 12097(Scribe)m 5429(,)s 5536(7)s 220 fnt35
-4816 11806(@Section)m 240 fnt82 5816 11809(e)m 3(xample)k 6626(,)s
-6733(83)s 220 fnt35 4816 11518(@SetColor)m 240 fnt82 5951 11521(symbol)m
-6658(,)s 6765(44)s 220 fnt35 4816 11230(@SetColour)m 240 fnt82
-6073 11233(symbol)m 6780(,)s 6887(44)s 4816 10945(Size)m 5283(of)s
-5554(an)s 5837(object)s 6428(,)s 6535(24)s 4816 10657(small)m
-5388(capitals)s 6115(,)s 6222(41)s 4816 10369(Sorted)m 5498(g)s 1(alle)k 3(ys)k
-6169(,)s 6276(31)s 4816 10081(Space)m 5390(,)s 5497(13)s
-5056 9793(when)m 5632(signi\207cant)s 6635(,)s 6742(38)s 220 fnt35
-4816 9502(@Space)m 240 fnt82 5713 9505(symbol)m 6420(,)s 6527(43)s
-220 fnt35 4816 9214(@Star)m -8(tHSpan)k 240 fnt82 6226 9217(symbol)m
-6933(,)s 7040(50)s 220 fnt35 4816 8926(@Star)m -8(tHVSpan)k
-240 fnt82 6372 8929(symbol)m 7079(,)s 7186(50)s 220 fnt35
-4816 8638(@Star)m -8(tVSpan)k 240 fnt82 6214 8641(symbol)m 6921(,)s
-7028(50)s 4816 8353(Style)m 5363(of)s 5634(an)s 5917(object)s
-6508(,)s 6615(23)s 220 fnt35 4816 8062(sup)m 240 fnt82
-5222 8065(e)m 3(xample)k 6032(,)s 6139(70)s 4816 7777(Symbol)m
-5563(,)s 5670(4)s 220 fnt35 4816 7486(@SysDatabase)m 240 fnt82
-6396 7489(symbol)m 7103(,)s 7210(61)s 220 fnt35 4816 7198(@SysInclude)m
-240 fnt82 6164 7201(symbol)m 6871(,)s 6978(66)s 220 fnt35
-4816 6910(@SysIncludeGr)m 2(aphic)k 240 fnt82 6933 6913(symbol)m 7640(,)s
-7747(65)s 220 fnt35 4816 6622(@SysPrependGr)m 2(aphic)k 240 fnt82
-7055 6625(symbol)m 7762(,)s 7869(65)s 220 fnt35 4816 6046(t)m
-240 fnt82 4933 6049(g)m 1(ap)k 5331(mode)s 5866(,)s
-5973(37)s 4816 5761(T)m 19(ables)k 5432(,)s 5539(2)s
-4816 5473(T)m 19(ab)k 4(ulation)k 5886(g)s 1(ap)k
-6284(mode)s 6819(,)s 6926(37)s 220 fnt35 4816 5182(@T)m 26(ag)k
-240 fnt82 5439 5185(parameter)m 9(,)k 6491(def)s 2(ault)k
-7212(v)s 6(alue)k 7780(of)s 7998(,)s 8105(16)s
-220 fnt35 4816 4894(@T)m 26(agged)k 240 fnt82 5805 4897(symbol)m
-6512(,)s 6619(59)s 4816 4609(T)m 19(ar)k 4(get)k
-5476(of)s 5747(cross)s 6289(reference)s 7179(,)s 7286(8)s
-4816 4321(T)m 19(ar)k 4(get)k 5476(of)s 5747(a)s
-5913(g)s 1(alle)k 3(y)k 6494(,)s 6601(11)s
-220 fnt35 4816 4030(@T)m 26(arget)k 240 fnt82 5703 4033(symbol)m
-6410(,)s 6517(30)s 5056 3745(in)m 5299(detail)s 5831(,)s
-5938(25)s 4816 3457(T)m 4912 3409(E)m 5020 3457(X)m 5056 3169(h)m 1(yphenation)k
-6243(,)s 6350(39)s 5056 2881(optimal)m 5841(paragraph)s 6854(breaking)s
-7691(,)s 7798(39)s 4816 2593(T)m 16(e)k 3(xtual)k
-5582(unit)s 5961(,)s 6068(13)s 220 fnt35 4816 2014(@Under)m -3(line)k
-240 fnt82 6031 2017(symbol)m 6738(,)s 6845(67)s 4816 1729(Underscore)m
-5974(character)s 6855(,)s 6962(13)s 220 fnt35 4816 1438(@Use)m
-240 fnt82 5481 1441(symbol)m 6188(,)s 6295(60)s 220 fnt35
-4816 862(v)m 240 fnt82 4985 865(unit)m 5364(,)s 5471(37)s
-5056 577(ef)m 6(fect)k 5652(on)s 5949(paragraph)s 6962(breaking)s
-7799(,)s 7906(42)s 220 fnt35 4816 286(@V)m 17(Adjust)k
-240 fnt82 5833 289(symbol)m 6540(,)s 6647(49)s
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 94 100
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Times-Italic
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-0 LoutMargSet
-grestore
-240 fnt84 0 13840(94)m 240 fnt83 8539 13843(Inde)m 4(x)k
-220 fnt35 0 13246(@VContr)m 2(act)k 240 fnt82 1252 13249(symbol)m
-1959(,)s 2066(48)s 220 fnt35 0 12958(@VCo)m 3(v)k 5(er)k
-240 fnt82 1006 12961(symbol)m 1713(,)s 1820(50)s 220 fnt35
-0 12670(@V)m 17(erbatim)k 240 fnt82 1129 12673(symbol)m 1836(,)s
-1943(67)s 0 12385(V)m 26(ertical)k 797(concatenation)s 2129(,)s
-2236(36)s 220 fnt35 0 12094(@VExpand)m 240 fnt82 1161 12097(symbol)m
-1868(,)s 1975(48)s 220 fnt35 0 11806(@VLimited)m 240 fnt82
-1123 11809(symbol)m 1830(,)s 1937(48)s 220 fnt35 0 11518(@VScale)m
-240 fnt82 969 11521(symbol)m 1676(,)s 1783(49)s 220 fnt35
-0 11230(@VShift)m 240 fnt82 863 11233(symbol)m 1570(,)s 1677(48)s
-220 fnt35 0 10942(@VSpan)m 240 fnt82 927 10945(symbol)m 1634(,)s
-1741(50)s 220 fnt35 0 10366(w)m 240 fnt82 216 10369(unit)m
-595(,)s 702(37)s 0 10081(White)m 640(space)s 1174(,)s
-1281(13)s 240 9793(when)m 816(signi\207cant)s 1819(,)s 1926(38)s
-220 fnt35 0 9502(@Wide)m 240 fnt82 774 9505(symbol)m 1481(,)s
-1588(47)s 0 9217(W)m 9(idth)k 646(of)s 917(an)s
-1200(object)s 1791(,)s 1898(24)s 0 8929(W)m 19(ord)k
-531(,)s 638(14)s 220 fnt35 0 8350(x)m 240 fnt82
-168 8353(g)m 1(ap)k 566(mode)s 1101(,)s 1208(37)s
-220 fnt35 0 7774(@Y)m 4(ield)k 240 fnt82 753 7777(symbol)m
-1460(,)s 1567(56)s 220 fnt35 0 7486(@YUnit)m 240 fnt82
-814 7489(symbol)m 1521(,)s 1628(44)s 220 fnt35 0 6910(@ZUnit)m
-240 fnt82 802 6913(symbol)m 1509(,)s 1616(44)s
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Trailer
-%%DocumentNeededResources: font Helvetica
-%%+ font Helvetica-Oblique
-%%+ font Symbol
-%%+ font Times-Roman
-%%+ font Times-Italic
-%%+ font Times-Bold
-%%+ font Times-BoldItalic
-%%DocumentSuppliedResources: procset LoutStartUp
-%%+ procset LoutTabPrependGraphic
-%%+ procset LoutFigPrependGraphic
-%%+ procset LoutBasicSetup
-%%+ encoding vec2
-%%Pages: 100
-%%EOF
diff --git a/doc/expert/pre b/doc/expert/pre
index 72a4fa3..02320cc 100644
--- a/doc/expert/pre
+++ b/doc/expert/pre
@@ -10,6 +10,7 @@
@Include { pre_spac }
@Include { pre_yuni }
@Include { pre_colo }
+@Include { pre_outl }
@Include { pre_lang }
@Include { pre_oner }
@Include { pre_wide }
diff --git a/doc/expert/pre_outl b/doc/expert/pre_outl
new file mode 100644
index 0000000..f62ec9f
--- /dev/null
+++ b/doc/expert/pre_outl
@@ -0,0 +1,21 @@
+@Section
+ @Title { "@Outline" }
+ @Tag { outline }
+@Begin
+@PP
+The @@Outline symbol
+outline.sym @Index { @@Outline symbol }
+causes all the words in the right parameter (which may be an
+arbitrary object) to be printed in outline, rather than filled as
+is usual. For example,
+@ID @Code @Verbatim { @Outline @Box 24p @Font HELP }
+produces
+@ID @Outline @Box 24p @Font HELP
+Outlining is part of the style information, in the same way as
+colour, font, underlining, and so forth. Outlining can be applied
+to any font likely to be used in practice. At the time of writing,
+there is no way to control the thickness of the outline, and
+@@Outline has no effect in PDF output. The size of outlined
+words is taken by Lout to be the same as if they had not been
+outlined, even though they are in reality slightly larger.
+@End @Section
diff --git a/doc/expert/pre_yuni b/doc/expert/pre_yuni
index 7b06b5d..cd5dd17 100644
--- a/doc/expert/pre_yuni
+++ b/doc/expert/pre_yuni
@@ -1,5 +1,5 @@
@Section
- @Title { "@YUnit" and "@ZUnit" }
+ @Title { "@YUnit", "@ZUnit", "@CurrYUnit", and "@CurrZUnit" }
@Tag { yunit }
@Begin
@PP
@@ -21,6 +21,13 @@ but it may begin with @Code "+" or @Code "-" to indicate that value is
to be added to or subtracted from the current value. Any negative result
of using @Code "-" will be silently replaced by zero.
@PP
+The @@CurrYUnit and @@CurrZUnit symbols report the value of the @Code y
+and @Code z units, in points, truncated to the nearest integer. For example,
+@ID @Code "1i @YUnit { The current value of the y unit is @CurrYUnit }"
+produces
+@ID @Code "1i @YUnit { The current value of the y unit is @CurrYUnit }"
+since there are 72 points in one inch (at least, Lout thinks there are).
+@PP
These units are not used internally by Lout. They are supplied as
part of the style information for the convenience of application
packages. For example, the Eq equation formatting package uses them
diff --git a/doc/expert/preface b/doc/expert/preface
index 1150929..9e37913 100644
--- a/doc/expert/preface
+++ b/doc/expert/preface
@@ -21,7 +21,7 @@ This manual presents Version 3 of Basser Lout, publicly released in
September 1994 @Cite { $kingston1995lout.program }. This manual was
rendered into PostScript
postscript @Index { PostScript }
-by Version 3.17 of the Basser Lout interpreter, using the symbols
+by Version 3.18 of the Basser Lout interpreter, using the symbols
described in the User's Guide @Cite { $kingston1995lout.user }.
@DP
@Heading { Acknowledgment. } Version 3 has benefited from hundreds of
diff --git a/doc/slides/README b/doc/slides/README
index a494b7c..66d5a78 100644
--- a/doc/slides/README
+++ b/doc/slides/README
@@ -15,4 +15,4 @@ after the second run. A copy of the final
outfile.ps is included.
Jeff Kingston
-17 September 1999
+26 February 2000
diff --git a/doc/slides/outfile.ps b/doc/slides/outfile.ps
deleted file mode 100644
index ed978e9..0000000
--- a/doc/slides/outfile.ps
+++ /dev/null
@@ -1,4470 +0,0 @@
-%!PS-Adobe-3.0
-%%Creator: Basser Lout Version 3.17 (September 1999)
-%%CreationDate: Fri Sep 17 11:58:48 1999
-%%DocumentData: Binary
-%%DocumentNeededResources: (atend)
-%%DocumentMedia: Plain 595 842 0 white ()
-%%DocumentSuppliedResources: (atend)
-%%Pages: (atend)
-%%BoundingBox: 0 0 595 842
-%%EndComments
-
-%%BeginProlog
-%%BeginResource: procset LoutStartUp
-/m { 3 1 roll moveto show } bind def
-/s { exch currentpoint exch pop moveto show } bind def
-/k { exch neg 0 rmoveto show } 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 /usr/staff/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 /usr/staff/jeff/lout.lib/include/figf.lpg
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% %
-% PostScript @SysPrependGraphic file for @Fig Jeffrey H. Kingston %
-% Version 2.0 (includes CIRCUM label) January 1992 %
-% %
-% To assist in avoiding name clashes, the names of all symbols %
-% defined here begin with "lfig". However, this is not feasible %
-% with user-defined labels and some labels used by users. %
-% %
-% <point> is two numbers, a point. %
-% <length> is one number, a length %
-% <angle> is one number, an angle in degrees %
-% <dashlength> is one number, the preferred length of a dash %
-% %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-errordict begin
- /handleerror
- {
- { /Times-Roman findfont 8 pt scalefont setfont
- 0 setgray 4 pt 4 pt moveto
- $error /errorname get
- dup lfigdict exch known
- { lfigdict exch get }
- { 30 string cvs } ifelse
- show
- ( Command: ) show
- $error /command get 30 string cvs show
- } stopped {} if
- showpage stop
- } def
-end
-
-% concat strings: <string> <string> lfigconcat <string>
-% must be defined outside lfigdict since used in lfigpromotelabels
-/lfigconcat
-{ 2 copy length exch length add string
- dup 0 4 index putinterval
- dup 3 index length 3 index putinterval
- 3 1 roll pop pop
-} def
-
-% <string> lfigdebugprint -
-% must be defined outside lfigdict since used in arbitrary places
-% /lfigdebugprint
-% { print
-% (; operand stack:\n) print
-% count copy
-% count 2 idiv
-% { ==
-% (\n) print
-% } repeat
-% (\n) print
-% } def
-
-/lfigdict 120 dict def
-lfigdict begin
-
-% error messages
-/dictfull (dictfull error: too many labels?) def
-/dictstackoverflow (dictstackoverflow error: labels nested too deeply?) def
-/execstackoverflow (execstackoverflow error: figure nested too deeply?) def
-/limitcheck (limitcheck error: figure nested too deeply or too large?) def
-/syntaxerror (syntaxerror error: syntax error in text of figure?) def
-/typecheck (typecheck error: syntax error in text of figure?) def
-/undefined (undefined error: unknown or misspelt label?) def
-/VMError (VMError error: run out of memory?) def
-
-% push pi onto stack: - lfigpi <num>
-/lfigpi 3.14159 def
-
-% arc directions
-/clockwise false def
-/anticlockwise true def
-
-% maximum of two numbers: <num> <num> lfigmax <num>
-/lfigmax { 2 copy gt { pop } { exch pop } ifelse } def
-
-% minimum of two numbers: <num> <num> lfigmin <num>
-/lfigmin { 2 copy lt { pop } { exch pop } ifelse } def
-
-% add two points: <point> <point> lfigpadd <point>
-/lfigpadd { exch 3 1 roll add 3 1 roll add exch } def
-
-% subtract first point from second: <point> <point> lfigpsub <point>
-/lfigpsub { 3 2 roll sub 3 1 roll exch sub exch } def
-
-% max two points: <point> <point> lfigpmax <point>
-/lfigpmax { exch 3 1 roll lfigmax 3 1 roll lfigmax exch } def
-
-% min two points: <point> <point> lfigpmin <point>
-/lfigpmin { exch 3 1 roll lfigmin 3 1 roll lfigmin exch } def
-
-% scalar multiplication: <point> <num> lfigpmul <point>
-/lfigpmul { dup 3 1 roll mul 3 1 roll mul exch } def
-
-% point at angle and distance: <point> <length> <angle> lfigatangle <point>
-/lfigatangle { 2 copy cos mul 3 1 roll sin mul lfigpadd } def
-
-% angle from one point to another: <point> <point> lfigangle <angle>
-/lfigangle { lfigpsub 2 copy 0 eq exch 0 eq and {pop} {exch atan} ifelse } def
-
-% distance between two points: <point> <point> lfigdistance <length>
-/lfigdistance { lfigpsub dup mul exch dup mul add sqrt } def
-
-% difference in x coords: <point> <point> lfigxdistance <length>
-/lfigxdistance { pop 3 1 roll pop sub } def
-
-%difference in y coords: <point> <point> lfigydistance <length>
-/lfigydistance { 3 1 roll pop sub exch pop } def
-
-% stroke a solid line: <length> <dashlength> lfigsolid -
-/lfigsolid
-{ pop pop [] 0 setdash stroke
-} def
-
-% stroke a lfigdashed line: <length> <dashlength> lfigdashed -
-/lfigdashed
-{ 2 copy div 2 le 1 index 0 le or
- { exch pop 1 pt lfigmax [ exch dup ] 0 setdash }
- { dup [ exch 4 2 roll 2 copy div
- 1 sub 2 div ceiling dup 4 1 roll
- 1 add mul sub exch div ] 0 setdash
- } ifelse stroke
-} def
-
-% stroke a lfigcdashed line: <length> <dashlength> lfigcdashed -
-/lfigcdashed
-{ 2 copy le 1 index 0 le or
- { exch pop 1 pt lfigmax [ exch dup ] dup 0 get 2 div setdash }
- { dup [ 4 2 roll exch 2 copy exch div
- 2 div ceiling div 1 index sub
- ] exch 2 div setdash
- } ifelse stroke
-} def
-
-% stroke a dotted line: <length> <dashlength> lfigdotted -
-/lfigdotted
-{ 2 copy le 1 index 0 le or
- { exch pop 1 pt lfigmax [ exch 0 exch ] 0 setdash }
- { 1 index exch div ceiling div
- [ 0 3 2 roll ] 0 setdash
- } ifelse stroke
-} def
-
-% stroke a noline line: <length> <dashlength> lfignoline -
-/lfignoline
-{ pop pop
-} def
-
-% painting (i.e. filling): - lfigwhite - (etc.)
-/lfignopaint { } def
-/lfignochange { fill } def
-/lfigdarkblue { 0.0 0.0 0.5 setrgbcolor fill } def
-/lfigblue { 0.0 0.0 1.0 setrgbcolor fill } def
-/lfiglightblue { 0.5 0.5 1.0 setrgbcolor fill } def
-/lfigdarkgreen { 0.0 0.5 0.0 setrgbcolor fill } def
-/lfiggreen { 0.0 1.0 0.0 setrgbcolor fill } def
-/lfiglightgreen { 0.5 1.0 0.5 setrgbcolor fill } def
-/lfigdarkred { 0.5 0.0 0.0 setrgbcolor fill } def
-/lfigred { 1.0 0.0 0.0 setrgbcolor fill } def
-/lfiglightred { 1.0 0.5 0.5 setrgbcolor fill } def
-/lfigdarkcyan { 0.0 0.5 0.5 setrgbcolor fill } def
-/lfigcyan { 0.0 1.0 1.0 setrgbcolor fill } def
-/lfiglightcyan { 0.5 1.0 1.0 setrgbcolor fill } def
-/lfigdarkmagenta { 0.5 0.0 0.5 setrgbcolor fill } def
-/lfigmagenta { 1.0 0.0 1.0 setrgbcolor fill } def
-/lfiglightmagenta { 1.0 0.5 1.0 setrgbcolor fill } def
-/lfigdarkyellow { 0.5 0.5 0.0 setrgbcolor fill } def
-/lfigyellow { 1.0 1.0 0.0 setrgbcolor fill } def
-/lfiglightyellow { 1.0 1.0 0.5 setrgbcolor fill } def
-/lfigdarkgray { 0.2 0.2 0.2 setrgbcolor fill } def
-/lfiggray { 0.5 0.5 0.5 setrgbcolor fill } def
-/lfiglightgray { 0.8 0.8 0.8 setrgbcolor fill } def
-/lfigdarkgrey { 0.2 0.2 0.2 setrgbcolor fill } def
-/lfiggrey { 0.5 0.5 0.5 setrgbcolor fill } def
-/lfiglightgrey { 0.8 0.8 0.8 setrgbcolor fill } def
-/lfigblack { 0.0 0.0 0.0 setrgbcolor fill } def
-/lfigwhite { 1.0 1.0 1.0 setrgbcolor fill } def
-
-% line caps (and joins, not currently used)
-/lfigbutt 0 def
-/lfiground 1 def
-/lfigprojecting 2 def
-/lfigmiter 0 def
-/lfigbevel 2 def
-
-% shape and labels of the @Box symbol
-/lfigbox
-{
- 0 0 /SW lfigpointdef
- xsize 0 /SE lfigpointdef
- xsize ysize /NE lfigpointdef
- 0 ysize /NW lfigpointdef
- SE 0.5 lfigpmul /S lfigpointdef
- NW 0.5 lfigpmul /W lfigpointdef
- W SE lfigpadd /E lfigpointdef
- S NW lfigpadd /N lfigpointdef
- NE 0.5 lfigpmul /CTR lfigpointdef
- [ CTR NE lfigpsub /lfigboxcircum cvx ] lfigcircumdef
- SW SE NE NW SW
-} def
-
-% shape and labels of the @CurveBox symbol
-/lfigcurvebox
-{
-
- xsize 0.5 mul ysize 0.5 mul /CTR lfigpointdef
- xsize 0.5 mul 0 /S lfigpointdef
- xsize ysize 0.5 mul /E lfigpointdef
- xsize 0.5 mul ysize /N lfigpointdef
- 0 ysize 0.5 mul /W lfigpointdef
-
- xmark 0.293 mul xmark 0.293 mul /SW lfigpointdef
- xsize xmark 0.293 mul sub xmark 0.293 mul /SE lfigpointdef
- xsize xmark 0.293 mul sub ysize xmark 0.293 mul sub /NE lfigpointdef
- xmark 0.293 mul ysize xmark 0.293 mul sub /NW lfigpointdef
-
- [ xsize ysize 0.5 lfigpmul xmark /lfigcurveboxcircum cvx ] lfigcircumdef
-
- xmark 0
- xsize xmark sub 0
- [ xsize xmark sub xmark ]
- xsize xmark
- xsize ysize xmark sub
- [ xsize xmark sub ysize xmark sub ]
- xsize xmark sub ysize
- xmark ysize
- [ xmark ysize xmark sub ]
- 0 ysize xmark sub
- 0 xmark
- [ xmark xmark ]
- xmark 0
-} def
-
-% shadow of the @ShadowBox symbol
-% its shape and labels are done, somewhat inaccurately, with lfigbox
-/lfigshadow
-{ xmark 2 mul 0 moveto xsize 0 lineto
- xsize ysize xmark 2 mul sub lineto
- xsize xmark sub ysize xmark 2 mul sub lineto
- xsize xmark sub xmark lineto
- xmark 2 mul xmark lineto closepath fill
-} def
-
-% shape and labels of the @Square symbol
-/lfigsquare
-{
- xsize ysize 0.5 lfigpmul /CTR lfigpointdef
- CTR xsize xsize ysize ysize lfigpmax 0.5 lfigpmul lfigpadd /NE lfigpointdef
- CTR 0 0 CTR NE lfigdistance 135 lfigatangle lfigpadd /NW lfigpointdef
- CTR 0 0 CTR NE lfigdistance 225 lfigatangle lfigpadd /SW lfigpointdef
- CTR 0 0 CTR NE lfigdistance 315 lfigatangle lfigpadd /SE lfigpointdef
- SW 0.5 lfigpmul SE 0.5 lfigpmul lfigpadd /S lfigpointdef
- NW 0.5 lfigpmul NE 0.5 lfigpmul lfigpadd /N lfigpointdef
- SW 0.5 lfigpmul NW 0.5 lfigpmul lfigpadd /W lfigpointdef
- SE 0.5 lfigpmul NE 0.5 lfigpmul lfigpadd /E lfigpointdef
- [ CTR NE lfigpsub /lfigboxcircum cvx ] lfigcircumdef
- SW SE NE NW SW
-} def
-
-% shape and labels of the @Diamond symbol
-/lfigdiamond
-{
- xsize 0 0.5 lfigpmul /S lfigpointdef
- 0 ysize 0.5 lfigpmul /W lfigpointdef
- S W lfigpadd /CTR lfigpointdef
- CTR W lfigpadd /N lfigpointdef
- CTR S lfigpadd /E lfigpointdef
- [ xsize ysize 0.5 lfigpmul /lfigdiamondcircum cvx ] lfigcircumdef
- S E N W S
-} def
-
-% shape and labels of the @Ellipse symbol
-/lfigellipse
-{
- xsize 0 0.5 lfigpmul /S lfigpointdef
- 0 ysize 0.5 lfigpmul /W lfigpointdef
- S W lfigpadd /CTR lfigpointdef
- CTR W lfigpadd /N lfigpointdef
- CTR S lfigpadd /E lfigpointdef
- CTR xsize 0 0.3536 lfigpmul lfigpadd 0 ysize 0.3536 lfigpmul lfigpadd /NE lfigpointdef
- 0 ysize 0.3536 lfigpmul CTR xsize 0 0.3536 lfigpmul lfigpadd lfigpsub /SE lfigpointdef
- xsize 0 0.3536 lfigpmul CTR lfigpsub 0 ysize 0.3536 lfigpmul lfigpadd /NW lfigpointdef
- 0 ysize 0.3536 lfigpmul xsize 0 0.3536 lfigpmul CTR lfigpsub lfigpsub /SW lfigpointdef
- [ xsize ysize 0.5 lfigpmul /lfigellipsecircum cvx ] lfigcircumdef
- S [ CTR ] E [ CTR ] N [ CTR ] W [ CTR ] S
-} def
-
-% shape and labels of the @Circle symbol
-/lfigcircle
-{
- xsize ysize 0.5 lfigpmul /CTR lfigpointdef
- CTR xsize 0 ysize 0 lfigpmax 0.5 lfigpmul lfigpadd /E lfigpointdef
- CTR 0 0 CTR E lfigdistance 45 lfigatangle lfigpadd /NE lfigpointdef
- CTR 0 0 CTR E lfigdistance 90 lfigatangle lfigpadd /N lfigpointdef
- CTR 0 0 CTR E lfigdistance 135 lfigatangle lfigpadd /NW lfigpointdef
- CTR 0 0 CTR E lfigdistance 180 lfigatangle lfigpadd /W lfigpointdef
- CTR 0 0 CTR E lfigdistance 225 lfigatangle lfigpadd /SW lfigpointdef
- CTR 0 0 CTR E lfigdistance 270 lfigatangle lfigpadd /S lfigpointdef
- CTR 0 0 CTR E lfigdistance 315 lfigatangle lfigpadd /SE lfigpointdef
- [ S E lfigpsub /lfigellipsecircum cvx ] lfigcircumdef
- S [ CTR ] E [ CTR ] N [ CTR ] W [ CTR ] S
-} def
-
-% shape and labels of the @HLine and @HArrow symbols
-/lfighline
-{
- 0 ymark lfigprevious /FROM lfigpointdef
- xsize ymark lfigprevious /TO lfigpointdef
-} def
-
-% shape and labels of the @VLine and @VArrow symbols
-/lfigvline
-{
- xmark ysize lfigprevious /FROM lfigpointdef
- xmark 0 lfigprevious /TO lfigpointdef
-} def
-
-% points of a polygon around base with given no of sides, vert init angle:
-% <sides> <angle> figpolygon <point> ... <point>
-/lfigpolygon
-{ xsize ysize 0.5 lfigpmul /CTR lfigpointdef
- 90 sub CTR 2 copy lfigmax 5 3 roll
- [ 4 copy pop /lfigpolycircum cvx ] lfigcircumdef
- exch dup 360 exch div exch
- 1 1 3 2 roll
- { 4 string cvs (P) exch lfigconcat cvn
- 6 copy pop pop lfigatangle 2 copy 10 2 roll
- 3 2 roll lfigpointdef
- dup 3 1 roll add exch
- } for
- pop lfigatangle
-} def
-
-% next array element: <array> <index> lfiggetnext <array> <index> <any> true
-% or <array> <index> false
-/lfiggetnext
-{ 2 copy exch length ge
- { false }
- { 2 copy get exch 1 add exch true } ifelse
-} def
-
-% check whether thing is number: <any> lfigisnumbertype <any> <bool>
-/lfigisnumbertype
-{ dup type dup
- /integertype eq exch /realtype eq or
-} def
-
-% check whether thing is an array: <any> lfigisarraytype <any> <bool>
-/lfigisarraytype { dup type /arraytype eq } def
-
-% get next item: <array> <index> lfiggetnextitem <array> <index> 0
-% or <array> <index> <array> 1
-% or <array> <index> <point> 2
-/lfiggetnextitem
-{ lfiggetnext
- { lfigisarraytype
- { 1
- }
- { lfigisnumbertype
- { 3 1 roll
- lfiggetnext
- { lfigisnumbertype
- { 4 3 roll exch 2
- }
- { pop 3 2 roll pop 0
- } ifelse
- }
- { 3 2 roll pop 0
- } ifelse
- }
- { pop 0
- } ifelse
- } ifelse
- }
- { 0
- } ifelse
-} def
-
-% set arc path: bool x1 y1 x2 y2 x0 y0 lfigsetarc <angle> <angle> <dist>
-% the path goes from x1 y1 to x2 y2 about centre x0 y0,
-% anticlockwise if bool is true else clockwise.
-% The orientations of backwards pointing and forwards pointing
-% arrowheads are returned in the two angles, and
-% the length of the arc is returned in <dist>.
-/lfigsetarc
-{
- 20 dict begin
- matrix currentmatrix 8 1 roll
- 2 copy translate 2 copy 8 2 roll
- 4 2 roll lfigpsub 6 2 roll lfigpsub
- dup /y1 exch def dup mul /y1s exch def
- dup /x1 exch def dup mul /x1s exch def
- dup /y2 exch def dup mul /y2s exch def
- dup /x2 exch def dup mul /x2s exch def
-
- y1s y2s eq
- { -1
- }
- { y1s x2s mul y2s x1s mul sub y1s y2s sub div
- } ifelse
- /da exch def
-
- x1s x2s eq
- { -1
- }
- { x1s y2s mul x2s y1s mul sub x1s x2s sub div
- } ifelse
- /db exch def
-
- da 0 gt db 0 gt and
- { /LMax da sqrt db sqrt lfigmax def
- /scalex da sqrt LMax div def
- /scaley db sqrt LMax div def
- scalex scaley scale
- 0 0 LMax
- 0 0 x1 scalex mul y1 scaley mul lfigangle
- 0 0 x2 scalex mul y2 scaley mul lfigangle
- 2 copy eq { 360 add } if
- 2 copy 8 2 roll
- 5 index { arc } { arcn } ifelse
- 2 index 1 index
- { 90 sub } { 90 add } ifelse
- dup sin scaley mul exch cos scalex mul atan
- 2 index 2 index
- { 90 add } { 90 sub } ifelse
- dup sin scaley mul exch cos scalex mul atan
- 5 2 roll % res1 res2 ang1 ang2 anticlockwise
- { exch sub } { sub } ifelse
- dup 0 le { 360 add } if lfigpi mul LMax mul 180 div
- }
- { 0 0 x1 y1 lfigdistance 0 0 x2 y2 lfigdistance eq
- 0 0 x1 y1 lfigdistance 0 gt and
- { 0 0
- 0 0 x1 y1 lfigdistance
- 0 0 x1 y1 lfigangle
- 0 0 x2 y2 lfigangle
- 2 copy eq { 360 add } if
- 2 copy 8 2 roll
- 5 index { arc } { arcn } ifelse
- 2 index 1 index
- { 90 sub } { 90 add } ifelse
- 2 index 2 index
- { 90 add } { 90 sub } ifelse
- 5 2 roll % res1 res2 ang1 ang2 clockwise
- { exch sub } { sub } ifelse
- dup 0 le { 360 add } if lfigpi mul 0 0 x1 y1 lfigdistance mul 180 div
- }
- { x2 y2 lineto pop
- x2 y2 x1 y1 lfigangle
- x1 y1 x2 y2 lfigangle
- x1 y1 x2 y2 lfigdistance
- } ifelse
- } ifelse
- 4 -1 roll setmatrix
- end
-} def
-
-% lfigsetcurve: set up a Bezier curve from x0 y0 to x3 y3
-% and return arrowhead angles and length of curve (actually 0)
-% x0 y0 x1 y1 x2 y2 x3 y3 lfigsetcurve <angle> <angle> <length>
-/lfigsetcurve
-{ 8 copy curveto pop pop
- lfigangle
- 5 1 roll
- 4 2 roll lfigangle
- exch
- 0
-} def
-
-% lfigpaintpath: paint a path of the given shape
-% /paint [ shape ] lfigpaintpath -
-/lfigpaintpath
-{
- 10 dict begin
- 0 newpath
- /prevseen false def
- /curveseen false def
- { lfiggetnextitem
- dup 0 eq { pop exit }
- { 1 eq
- { /curveseen true def
- /curve exch def
- curve length 0 eq { /curveseen false def } if
- }
- { /ycurr exch def
- /xcurr exch def
- prevseen
- { curveseen
- { curve length 4 eq
- { xprev yprev
- curve 0 get curve 1 get
- curve 2 get curve 3 get
- xcurr ycurr
- lfigsetcurve pop pop pop
- }
- { xprev yprev xcurr ycurr
- curve length 1 ge { curve 0 get } { 0 } ifelse
- curve length 2 ge { curve 1 get } { 0 } ifelse
- curve length 3 ge { curve 2 get } { true } ifelse
- 7 1 roll
- lfigsetarc pop pop pop
- } ifelse
- }
- { xcurr ycurr lineto
- } ifelse
- }
- { xcurr ycurr moveto
- } ifelse
- /xprev xcurr def
- /yprev ycurr def
- /prevseen true def
- /curveseen false def
- } ifelse
- } ifelse
- } loop pop pop cvx exec
- end
-} def
-
-% stroke a path of the given shape in the given linestyle and dash length.
-% Return the origin and angle of the backward and forward arrow heads.
-% dashlength /linestyle [shape] lfigdopath [<point> <angle>] [<point> <angle>]
-/lfigdopath
-{
- 10 dict begin
- 0
- /prevseen false def
- /curveseen false def
- /backarrow [] def
- /fwdarrow [] def
- {
- lfiggetnextitem
- dup 0 eq { pop exit }
- {
- 1 eq
- { /curveseen true def
- /curve exch def
- curve length 0 eq { /prevseen false def } if
- }
- { /ycurr exch def
- /xcurr exch def
- prevseen
- { newpath xprev yprev moveto
- curveseen
- { curve length 4 eq
- { xprev yprev
- curve 0 get curve 1 get
- curve 2 get curve 3 get
- xcurr ycurr lfigsetcurve
- }
- { xprev yprev xcurr ycurr
- curve length 1 ge { curve 0 get } { 0 } ifelse
- curve length 2 ge { curve 1 get } { 0 } ifelse
- curve length 3 ge { curve 2 get } { true } ifelse
- 7 1 roll
- lfigsetarc
- } ifelse
- }
- { xcurr ycurr lineto
- xcurr ycurr xprev yprev lfigangle dup 180 sub
- xprev yprev xcurr ycurr lfigdistance
- } ifelse
- 6 index 6 index cvx exec
- [ xprev yprev 5 -1 roll ]
- backarrow length 0 eq
- { /backarrow exch def }
- { pop } ifelse
- [ xcurr ycurr 4 -1 roll ] /fwdarrow exch def
- } if
- /xprev xcurr def
- /yprev ycurr def
- /prevseen true def
- /curveseen false def
- } ifelse
- } ifelse
- } loop
- pop pop pop pop
- backarrow length 0 eq { [ 0 0 0 ] } { backarrow } ifelse
- fwdarrow length 0 eq { [ 0 0 0 ] } { fwdarrow } ifelse
- end
-} def
-
-% lfigdoarrow: draw an arrow head of given form
-% dashlength /lstyle /pstyle hfrac height width [ <point> <angle> ] lfigdoarrow -
-/lfigdoarrow
-{ matrix currentmatrix 8 1 roll
- dup 0 get 1 index 1 get translate
- 2 get rotate
- [ 2 index neg 2 index 0 0
- 3 index 3 index neg
- 1 index 10 index mul 0
- 7 index 7 index ]
- 4 1 roll pop pop pop
- dup 3 1 roll
- gsave lfigpaintpath grestore lfigdopath pop pop
- setmatrix
-} def
-
-% arrow head styles
-/lfigopen 0.0 def
-/lfighalfopen 0.5 def
-/lfigclosed 1.0 def
-
-% stroke no arrows, forward, back, and both
-/lfignoarrow { pop pop pop pop pop pop pop pop } def
-/lfigforward { 7 -1 roll lfigdoarrow pop } def
-/lfigback { 8 -2 roll pop lfigdoarrow } def
-/lfigboth { 8 -1 roll 7 copy lfigdoarrow pop 7 -1 roll lfigdoarrow } def
-
-% lfigprevious: return previous point on path
-/lfigprevious
-{ lfigisnumbertype
- { 2 copy }
- { lfigisarraytype
- { 2 index 2 index }
- { 0 0 }
- ifelse
- } ifelse
-} def
-
-% label a point in 2nd top dictionary: <point> /name lfigpointdef -
-/lfigpointdef
-{
- % (Entering lfigpointdef) lfigdebugprint
- [ 4 2 roll transform
- /itransform cvx ] cvx
- currentdict end
- 3 1 roll
- % currentdict length currentdict maxlength lt
- % { def }
- % { exec moveto (too many labels) show stop }
- % ifelse
- def
- begin
- % (Leaving lfigpointdef) lfigdebugprint
-} def
-
-% promote labels from second top to third top dictionary
-% <string> lfigpromotelabels -
-/lfigpromotelabels
-{
- % (Entering lfigpromotelabels) lfigdebugprint
- currentdict end exch currentdict end
- { exch 20 string cvs 2 index
- (@) lfigconcat exch lfigconcat cvn exch def
- } forall pop begin
- % (Leaving lfigpromotelabels) lfigdebugprint
-} def
-
-% show labels (except CIRCUM): - lfigshowlabels -
-/lfigshowlabels
-{
- % (Entering lfigshowlabels) lfigdebugprint
- currentdict end
- currentdict
- { 1 index 20 string cvs (CIRCUM) search % if CIRCUM in key
- { pop pop pop pop pop }
- { pop cvx exec 2 copy
- newpath 1.5 pt 0 360 arc
- 0 setgray fill
- /Times-Roman findfont 8 pt scalefont setfont
- moveto 0.2 cm 0.1 cm rmoveto 20 string cvs show
- }
- ifelse
- } forall
- begin
- % (Leaving lfigshowlabels) lfigdebugprint
-} def
-
-% fix an angle to 0 <= res < 360: <angle> lfigfixangle <angle>
-/lfigfixangle
-{
- % (Entering lfigfixangle) lfigdebugprint
- { dup 0 ge { exit } if
- 360 add
- } loop
- { dup 360 lt { exit } if
- 360 sub
- } loop
- % (Leaving lfigfixangle) lfigdebugprint
-} def
-
-% find point on circumference of box: alpha a b lfigboxcircum x y
-/lfigboxcircum
-{
- % (Entering lfigboxcircum) lfigdebugprint
- 4 dict begin
- /b exch def
- /a exch def
- lfigfixangle /alpha exch def
- 0 0 a b lfigangle /theta exch def
-
- % if alpha <= theta, return (a, a*tan(alpha))
- alpha theta le
- { a a alpha sin mul alpha cos div }
- {
- % else if alpha <= 180 - theta, return (b*cot(alpha), b)
- alpha 180 theta sub le
- { b alpha cos mul alpha sin div b }
- {
- % else if alpha <= 180 + theta, return (-a, -a*tan(alpha))
- alpha 180 theta add le
- { a neg a neg alpha sin mul alpha cos div }
- {
- % else if alpha <= 360 - theta, return (-b*cot(alpha), -b)
- alpha 360 theta sub le
- { b neg alpha cos mul alpha sin div b neg }
- {
- % else 360 - theta <= alpha, return (a, a*tan(alpha))
- a a alpha sin mul alpha cos div
- } ifelse
- } ifelse
- } ifelse
- } ifelse
- end
- % (Leaving lfigboxcircum) lfigdebugprint
-} def
-
-% find quadratic roots (assume a != 0): a b c lfigqroots x1 x2 2
-% or x2 1
-% or 0
-/lfigqroots
-{
- 4 dict begin
- /c exch def
- /b exch def
- /a exch def
- /disc b b mul 4 a c mul mul sub def
- disc 0 lt
- { 0
- }
- { disc 0 eq
- { b neg 2 a mul div
- 1
- }
- { b neg disc sqrt add 2 a mul div
- b neg disc sqrt sub 2 a mul div
- 2
- }
- ifelse
- }
- ifelse
- end
-} def
-
-% work our which quadrant: <angle> lfigquadrant <0-3>
-/lfigquadrant
-{ dup 90 lt
- { pop 0
- }
- { dup 180 lt
- { pop 1
- }
- { 270 lt
- { 2
- }
- { 3
- } ifelse
- } ifelse
- } ifelse
-} def
-
-% find curvebox circum, assuming upper right quadrant: alpha a b xmk lfigcb x y
-/lfigcb
-{
- 6 dict begin
- /xmk exch def
- /b exch def
- /a exch def
- /alpha exch def
- /theta1 0 0 a b xmk sub lfigangle def
- /theta2 0 0 a xmk sub b lfigangle def
- alpha theta1 le
- { % if alpha <= theta1, return (a, a*tan(alpha))
- a a alpha sin mul alpha cos div
- }
- { alpha theta2 ge
- { % else if alpha > theta2, return (b*cot(alpha), b)
- b alpha cos mul alpha sin div b
- }
- {
- % else, return the intersection of line and circle
- a xmk sub b xmk sub xmk 0 0 alpha lfigcircleintersect
- dup 0 eq
- { % should never happen, just return any reasonable point
- pop
- a b 0.5 lfigpmul
- }
- { 1 eq
- { % should never happen, just return the point on top of stack
- }
- { % the usual case, two points on stack, return the larger
- lfigpmax
- } ifelse
- } ifelse
- } ifelse
- } ifelse
- end
-} def
-
-% find point on circumference of curvebox: alpha a b xmk lfigcurveboxcircum x y
-/lfigcurveboxcircum
-{
- % (Entering lfigcurveboxcircum) lfigdebugprint
- 5 dict begin
- /xmk exch def
- /b exch def
- /a exch def
- lfigfixangle /alpha exch def
-
- % work out which quadrant we are in, and reflect accordingly
- /quad alpha lfigquadrant def
- quad 0 eq
- { alpha a b xmk lfigcb
- }
- { quad 1 eq
- { 180 alpha sub a b xmk lfigcb exch neg exch
- }
- { quad 2 eq
- { alpha 180 sub a b xmk lfigcb neg exch neg exch
- }
- { 360 alpha sub a b xmk lfigcb neg
- } ifelse
- } ifelse
- } ifelse
- end
- % (Leaving lfigcurveboxcircum) lfigdebugprint
-} def
-
-% find point on circumference of diamond: alpha a b lfigdiamondcircum x y
-/lfigdiamondcircum
-{
- % (Entering lfigdiamondcircum) lfigdebugprint
- 4 dict begin
- /b exch def
- /a exch def
- lfigfixangle /alpha exch def
- b alpha cos abs mul a alpha sin abs mul add /denom exch def
- a b mul alpha cos mul denom div
- a b mul alpha sin mul denom div
- end
- % (Leaving lfigdiamondcircum) lfigdebugprint
-} def
-
-% find point on circumference of ellipse: alpha a b lfigellipsecircum x y
-/lfigellipsecircum
-{
- % (Entering lfigellipsecircum) lfigdebugprint
- 4 dict begin
- /b exch def
- /a exch def
- lfigfixangle /alpha exch def
- b alpha cos mul dup mul a alpha sin mul dup mul add sqrt /denom exch def
- a b mul alpha cos mul denom div
- a b mul alpha sin mul denom div
- end
- % (Leaving lfigellipsecircum) lfigdebugprint
-} def
-
-% find point of intersection of two lines each defined by two points
-% x1 y1 x2 y2 x3 y3 x4 y4 lfiglineintersect x y
-/lfiglineintersect
-{
- % (Entering lfiglineintersect) lfigdebugprint
- 13 dict begin
- /y4 exch def
- /x4 exch def
- /y3 exch def
- /x3 exch def
- /y2 exch def
- /x2 exch def
- /y1 exch def
- /x1 exch def
- x2 x1 sub /x21 exch def
- x4 x3 sub /x43 exch def
- y2 y1 sub /y21 exch def
- y4 y3 sub /y43 exch def
- y21 x43 mul y43 x21 mul sub /det exch def
-
- % calculate x
- y21 x43 mul x1 mul
- y43 x21 mul x3 mul sub
- y3 y1 sub x21 mul x43 mul add
- det div
-
- % calculate y
- x21 y43 mul y1 mul
- x43 y21 mul y3 mul sub
- x3 x1 sub y21 mul y43 mul add
- det neg div
-
- end
- % (Leaving lfiglineintersect) lfigdebugprint
-} def
-
-% find point on circumference of polygon
-% alpha radius num theta lfigpolycircum x y
-/lfigpolycircum
-{
- % (Entering lfigpolycircum) lfigdebugprint
- 13 dict begin
- /theta exch def
- /num exch def
- /radius exch def
- /alpha exch def
-
- % calculate delta, the angle from theta to alpha
- alpha theta sub lfigfixangle
-
- % calculate the angle which is the multiple of 360/num closest to delta
- 360 num div div truncate 360 num div mul theta add /anglea exch def
-
- % calculate the next multiple of 360/num after anglea
- anglea 360 num div add /angleb exch def
-
- % intersect the line through these two points with the alpha line
- anglea cos anglea sin angleb cos angleb sin
- 0 0 alpha cos 2 mul alpha sin 2 mul
- lfiglineintersect radius lfigpmul
-
- end
- % (Leaving lfigpolycircum) lfigdebugprint
-} def
-
-% find point of intersection of a point and a circle
-% x0 y0 r x1 y1 theta lfigcircleintersect xa ya xb yb 2
-% or xb yb 1
-% or 0
-/lfigcircleintersect
-{
- % (Entering lfigcircleintersect) lfigdebugprint
- 15 dict begin
- /theta exch def
- /y1 exch def
- /x1 exch def
- /r exch def
- /y0 exch def
- /x0 exch def
-
- % if sin(theta) = 0 then line is horizontal and y must be y1
- theta sin abs 0.00001 lt
- {
- /a 1 def
- /b -2 x0 mul def
- /c x0 dup mul y1 y0 sub dup mul add r dup mul sub def
- a b c lfigqroots dup
- 0 eq
- { pop
- 0
- }
- { 1 eq
- { y1 1
- }
- { y1 exch y1 2
- } ifelse
- } ifelse
- }
- {
- /ct theta cos theta sin div def
- /a ct ct mul 1 add def
- /b ct x1 x0 sub mul y1 add y0 sub 2 mul def
- /c x1 x0 sub dup mul y1 y0 sub dup mul add r dup mul sub def
- a b c lfigqroots dup
- 0 eq
- { pop
- 0
- }
- { 1 eq
- { y1 add /yb exch def
- yb y1 sub ct mul x1 add /xb exch def
- xb yb 1
- }
- { y1 add /ya exch def
- ya y1 sub ct mul x1 add /xa exch def
- y1 add /yb exch def
- yb y1 sub ct mul x1 add /xb exch def
- xa ya xb yb 2
- } ifelse
- } ifelse
- } ifelse
- end
- % (Leaving lfigcircleintersect) lfigdebugprint
-} def
-
-% add CIRCUM operator with this body: <array> lfigcircumdef -
-/lfigcircumdef
-{ % (Entering lfigcircumdef) lfigdebugprint
- /CIRCUM exch cvx
- currentdict end
- 3 1 roll
- % currentdict length currentdict maxlength lt
- % { def }
- % { exec moveto (too many labels) show stop }
- % ifelse
- def
- begin
- % (Leaving lfigcircumdef) lfigdebugprint
-} def
-
-end
-%%EndResource
-
-%%BeginResource: procset LoutGraphPrependGraphic
-% @PrependGraphic file /usr/staff/jeff/lout.lib/include/graphf.lpg
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% %
-% PostScript @SysPrependGraphic file for @Graph (Version 1.0) %
-% %
-% Version 1.0 by Jeffrey H. Kingston, December 1993. %
-% %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-errordict begin
- /handleerror
- {
- { /Times-Roman findfont 8 pt scalefont setfont
- 0 setgray 4 pt 4 pt moveto
- $error /errorname get
- dup lgraphdict exch known
- { lgraphdict exch get }
- { 30 string cvs } ifelse
- show
- ( Command: ) show
- $error /command get 30 string cvs show
- } stopped {} if
- showpage stop
- } def
-end
-
-/lgraphdict 200 dict def
-lgraphdict begin
-
-% error messages
-/dictfull (dictfull error) def
-/dictstackoverflow (dictstackoverflow error) def
-/execstackoverflow (execstackoverflow error: expression too complex?) def
-/limitcheck (limitcheck error: graph too complex or too large?) def
-/syntaxerror (syntaxerror error: syntax error in text of graph?) def
-/typecheck (typecheck error: syntax error in text of graph?) def
-/undefined (undefined error: unknown or misspelt symbol?) def
-/rangecheck (rangecheck error: undefined expression (e.g. divide by zero)?) def
-/VMError (VMError error: run out of memory?) def
-
-% random number between x and y inclusive: x y dorand num
-/dorand { 1 index sub 1 add rand exch mod add } def
-
-% log to given base: base num dolog num
-/dolog { ln exch ln div } def
-
-% maximum of two numbers: <num> <num> max <num>
-/max { 2 copy gt { pop } { exch pop } ifelse } def
-
-% add two points: <point> <point> padd <point>
-/padd { exch 3 1 roll add 3 1 roll add exch } def
-
-% subtract first point from second: <point> <point> psub <point>
-/psub { 3 2 roll sub 3 1 roll exch sub exch } def
-
-% distance between two points: <point> <point> distance <length>
-/distance { psub dup mul exch dup mul add sqrt } def
-
-% point at angle and distance: <point> <length> <angle> atangle <point>
-/atangle { 2 copy cos mul 3 1 roll sin mul padd } def
-
-% angle from one point to another: <point> <point> angle <angle>
-/angle { psub 2 copy 0 eq exch 0 eq and {pop} {exch atan} ifelse } def
-
-
-% set up for line
-% - linesetup <length> <dashlength>
-/linesetup
-{ newpath
- xcurr ycurr trpoint xprev yprev trpoint
- 4 copy moveto lineto distance dashlength
-} def
-
-% set up for icon-avoiding line
-% - ilinesetup <length> <dashlength>
-/ilinesetup
-{ newpath
- xprev yprev trpoint xcurr ycurr trpoint 4 copy
- 4 copy angle symbolsize 1.5 mul exch 4 2 roll pop pop atangle
- 6 2 roll 4 2 roll
- 4 copy angle symbolsize 1.5 mul exch 4 2 roll pop pop atangle
- 4 copy moveto lineto distance dashlength
-} def
-
-
-% stroke a solid line: <length> <dashlength> solid -
-/solid
-{ pop pop [] 0 setdash linewidth setlinewidth stroke
-} def
-
-% stroke a dashed line: <length> <dashlength> dashed -
-/dashed
-{ 2 copy 2 mul le 1 index 0 le or
- { exch pop 1 pt max [ exch dup ] 0 setdash }
- { dup [ exch 4 2 roll 2 copy div
- 1 sub 2 div ceiling dup 4 1 roll
- 1 add mul sub exch div ] 0 setdash
- } ifelse linewidth setlinewidth stroke
-} def
-
-% stroke a cdashed line: <length> <dashlength> cdashed -
-/cdashed
-{ 2 copy le 1 index 0 le or
- { exch pop 1 pt max [ exch dup ] dup 0 get 2 div setdash }
- { dup [ 4 2 roll exch 2 copy exch div
- 2 div ceiling div 1 index sub
- ] exch 2 div setdash
- } ifelse linewidth setlinewidth stroke
-} def
-
-% stroke a dotted line: <length> <dashlength> dotted -
-/dotted
-{ 2 copy le 1 index 0 le or
- { exch pop 1 pt max [ exch 0 exch ] 0 setdash }
- { 1 index exch div ceiling div 0.99999 mul
- [ 0 3 2 roll ] 0 setdash
- } ifelse gsave 1 setlinecap linewidth setlinewidth stroke grestore newpath
-} def
-
-% stroke a noline line: <length> <dashlength> noline -
-/noline
-{ pop pop
-} def
-
-% stroke a y histogram: - yhisto -
-/yhisto
-{ xprev yleft trpoint yextra sub moveto
- xprev yprev trpoint lineto
- xcurr yprev trpoint lineto
- xcurr yleft trpoint yextra sub lineto
- linewidth setlinewidth stroke
-} def
-
-% stroke an x histogram: - xhisto -
-/xhisto
-{ xleft yprev trpoint exch xextra sub exch moveto
- xcurr yprev trpoint lineto
- xcurr ycurr trpoint lineto
- xleft ycurr trpoint exch xextra sub exch lineto
- linewidth setlinewidth stroke
-} def
-
-% stroke a surface y histogram: - surfaceyhisto -
-/surfaceyhisto
-{ firstpair
- { xprev yleft trpoint yextra sub moveto
- xprev yprev trpoint lineto
- }
- { xprev yprev trpoint moveto
- } ifelse
- xcurr yprev trpoint lineto
- lastpair
- { xcurr yleft trpoint yextra sub lineto
- }
- { xcurr ycurr trpoint lineto
- } ifelse
- linewidth setlinewidth stroke
-} def
-
-% stroke a surface x histogram: - surfacexhisto -
-/surfacexhisto
-{ firstpair
- { xleft yprev trpoint exch xextra sub exch moveto
- }
- { xprev yprev trpoint moveto
- } ifelse
- xcurr yprev trpoint lineto
- xcurr ycurr trpoint lineto
- lastpair
- { xleft ycurr trpoint exch xextra sub exch lineto
- } if
- linewidth setlinewidth stroke
-} def
-
-% stroke a filled y histogram: - filledyhisto -
-/filledyhisto
-{
- linewidth setlinewidth
- xprev yleft trpoint exch currentlinewidth 2 div add exch yextra sub moveto
- xprev yprev trpoint exch currentlinewidth 2 div add exch lineto
- xcurr yprev trpoint exch currentlinewidth 2 div sub exch lineto
- xcurr yleft trpoint exch currentlinewidth 2 div sub exch yextra sub lineto
- closepath fill
-} def
-
-% stroke a filled x histogram: - filledxhisto -
-/filledxhisto
-{
- linewidth setlinewidth
- xleft yprev trpoint currentlinewidth 2 div add exch xextra sub exch moveto
- xcurr yprev trpoint currentlinewidth 2 div add lineto
- xcurr ycurr trpoint currentlinewidth 2 div sub lineto
- xleft ycurr trpoint currentlinewidth 2 div sub exch xextra sub exch lineto
- closepath fill
-} def
-
-
-% cross: show a small cross
-/cross
-{ newpath
- xcurr ycurr trpoint moveto
- symbolsize neg symbolsize neg rmoveto
- symbolsize 2 mul symbolsize 2 mul rlineto
- 0 symbolsize -2 mul rmoveto
- symbolsize -2 mul symbolsize 2 mul rlineto
- [] 0 setdash stroke
-} def
-
-% plus: show a small plus
-/plus
-{ newpath
- xcurr ycurr trpoint moveto
- symbolsize neg 0 rmoveto
- symbolsize 2 mul 0 rlineto
- symbolsize neg symbolsize neg rmoveto
- 0 symbolsize 2 mul rlineto
- [] 0 setdash stroke
-} def
-
-% square: show a small square
-/square
-{ newpath
- xcurr ycurr trpoint moveto
- symbolsize neg symbolsize neg rmoveto
- symbolsize 2 mul 0 rlineto
- 0 symbolsize 2 mul rlineto
- symbolsize -2 mul 0 rlineto
- closepath [] 0 setdash stroke
-} def
-
-% filledsquare: show a small filled square
-/filledsquare
-{ newpath
- xcurr ycurr trpoint moveto
- symbolsize neg symbolsize neg rmoveto
- symbolsize 2 mul 0 rlineto
- 0 symbolsize 2 mul rlineto
- symbolsize -2 mul 0 rlineto
- closepath gsave [] 0 setdash stroke grestore fill
-} def
-
-% diamond: show a small diamond
-/diamond
-{ newpath
- xcurr ycurr trpoint moveto
- symbolsize neg 0 rmoveto
- symbolsize symbolsize neg rlineto
- symbolsize symbolsize rlineto
- symbolsize neg symbolsize rlineto
- closepath [] 0 setdash stroke
-} def
-
-% filleddiamond: show a small filled diamond
-/filleddiamond
-{ newpath
- xcurr ycurr trpoint moveto
- symbolsize neg 0 rmoveto
- symbolsize symbolsize neg rlineto
- symbolsize symbolsize rlineto
- symbolsize neg symbolsize rlineto
- closepath gsave [] 0 setdash stroke grestore fill
-} def
-
-% circle: show a small circle
-/circle
-{ newpath
- xcurr ycurr trpoint symbolsize 0 360 arc [] 0 setdash stroke
-} def
-
-% filledcircle: show a small filled circle
-/filledcircle
-{ newpath
- xcurr ycurr trpoint symbolsize 0 360 arc gsave [] 0 setdash stroke grestore fill
-} def
-
-% triangle: show a small triangle
-/triangle
-{ newpath
- xcurr ycurr trpoint moveto
- 0 symbolsize 1.5 mul rmoveto
- symbolsize neg symbolsize -2.5 mul rlineto
- symbolsize 2 mul 0 rlineto
- closepath [] 0 setdash stroke
-} def
-
-% filledtriangle: show a small filled triangle
-/filledtriangle
-{ newpath
- xcurr ycurr trpoint moveto
- 0 symbolsize 1.5 mul rmoveto
- symbolsize neg symbolsize -2.5 mul rlineto
- symbolsize 2 mul 0 rlineto
- closepath gsave [] 0 setdash stroke grestore fill
-} def
-
-
-%plog: like log only with a base, and protected from failing if <= 0
-% base x plog res
-/plog { dup 0 le { pop pop 0 } { ln exch ln div } ifelse } def
-
-% xtr: transform one x value logarithmically if xlog > 1
-% <num> xtr <num>
-/xtr
-{ xlog 1 gt
- { xlog exch plog
- } if
-} def
-
-% ytr: transform one y value logarithmically if ylog > 1
-% <num> ytr <num>
-/ytr
-{ ylog 1 gt
- { ylog exch plog
- } if
-} def
-
-% % trpoint: transform (x, y) in graph space into (x', y') in print space
-% % x y trpoint x' y'
-% /trpoint
-% { exch xtr trxmin sub trxmax trxmin sub div xwidth mul xextra add
-% exch ytr trymin sub trymax trymin sub div ywidth mul yextra add
-% } def
-
-
-% trpoint: transform (x, y) in graph space into (x', y') in print space
-% x y trpoint x' y'
-/trpoint
-{ exch xtr xdecr { trxmax exch sub } { trxmin sub } ifelse
- trxmax trxmin sub div xwidth mul xextra add
-
- exch ytr ydecr { trymax exch sub } { trymin sub } ifelse
- trymax trymin sub div ywidth mul yextra add
-} def
-
-
-% yonly: interpolate x values 1, 2, ... into data
-% [ data ] yonly [ newdata ]
-/yonly
-{ dup /tmp exch def
- length [ exch 1 exch 1 exch
- { dup tmp exch 1 sub get
- } for
- ]
-} def
-
-% xonly: interpolate y values 1, 2, ... into data
-% [ data ] yonly [ newdata ]
-/xonly
-{ dup /tmp exch def
- length [ exch 1 exch 1 exch
- { dup tmp exch 1 sub get exch
- } for
- ]
-} def
-
-% xandy: no interpolation of x or y values
-% [ data ] xandy [ data ]
-/xandy {} def
-
-
-% expstringwidth: calculate width of string containing optional exponent
-% <string> expstringwidth <width>
-/expstringwidth
-{ (^) search
- { exch pop stringwidth pop exch stringwidth pop 0.7 mul add }
- { stringwidth pop }
- ifelse
-} def
-
-% expstringshow: show string containing optional exponent
-% <string> expstringshow -
-/expstringshow
-{ (^) search
- { exch pop show 0 0.5 ft rmoveto
- gsave currentfont 0.7 scalefont setfont show grestore
- }
- { show
- }
- ifelse
-} def
-
-% concatenate two strings: <string> <string> strconcat <string>
-/strconcat
-{ 2 copy length exch length add string
- dup 0 4 index putinterval
- dup 3 index length 3 index putinterval
- 3 1 roll pop pop
-} def
-
-% lgen: generate one label automatically
-% num lgen num string
-/lgen { dup 20 string cvs } def
-
-% loglgen: generate one logarithmic label (with exponent)
-% <base> <exponent> loglgen <string>
-/loglgen
-{ 20 string cvs exch 20 string cvs
- (^) strconcat exch strconcat
-} def
-
-
-% printxtick: print one x tick
-% xpos printxtick -
-/printxtick
-{ newpath
- yleft trpoint moveto 0 yextra neg rmoveto
- 0 xticklength neg rlineto [] 0 setdash stroke
-} def
-
-% printxlabel: print one x label
-% (xlabel) xpos printxlabel -
-/printxlabel
-{ yleft trpoint moveto 0 yextra neg rmoveto
- 0 xticklength neg rmoveto 0 0.9 ft neg rmoveto
- xlog 1 gt { 0 0.3 ft neg rmoveto } if
- dup expstringwidth -2 div 0 rmoveto expstringshow
-} def
-
-% printytick: print one y tick
-% ypos printytick -
-/printytick
-{ newpath
- xleft exch trpoint moveto xextra neg 0 rmoveto
- yticklength neg 0 rlineto [] 0 setdash stroke
-} def
-
-% printylabel: print one y label
-% (ylabel) ypos printylabel -
-/printylabel
-{ xleft exch trpoint moveto xextra neg 0 rmoveto
- yticklength neg 0 rmoveto -0.3 ft -0.3 ft rmoveto
- dup expstringwidth neg 0 rmoveto expstringshow
-} def
-
-% printrtick: print one r tick
-% ypos printrtick -
-/printrtick
-{ newpath
- xright exch trpoint moveto xextra 0 rmoveto
- rticklength 0 rlineto [] 0 setdash stroke
-} def
-
-% printrlabel: print one r label
-% (rlabel) ypos printrlabel -
-/printrlabel
-{ xright exch trpoint moveto xextra 0 rmoveto
- rticklength 0 rmoveto 0.3 ft -0.3 ft rmoveto
- expstringshow
-} def
-
-% printticks: print ticks and labels
-% /tickproc /labelproc [ tickandlabeldata ] min printticks -
-/printticks
-{ /prev exch def
- { dup type dup dup /integertype eq exch /realtype eq or
- { pop dup /prev exch def 2 index cvx exec
- }
- { /stringtype eq
- { prev 2 index cvx exec
- }
- { pop
- } ifelse
- } ifelse
- } forall
- pop pop
-} def
-
-
-% printxaxistick: print one x axis tick
-% xpos printxaxistick -
-/printxaxistick
-{ newpath
- yaxis trpoint moveto 0 xticklength -2 div rmoveto
- 0 xticklength rlineto [] 0 setdash stroke
-} def
-
-% printxaxislabel: print one x axis label
-% (xlabel) xpos printxaxislabel -
-/printxaxislabel
-{ yaxis trpoint moveto
- 0 xticklength -2 div rmoveto 0 0.9 ft neg rmoveto
- xlog 1 gt { 0 0.3 ft neg rmoveto } if
- dup expstringwidth -2 div 0 rmoveto expstringshow
-} def
-
-% printyaxistick: print one y axis tick
-% ypos printyaxistick -
-/printyaxistick
-{ newpath
- xaxis exch trpoint moveto
- yticklength -2 div 0 rmoveto
- yticklength 0 rlineto [] 0 setdash stroke
-} def
-
-% printyaxislabel: print one y axis label
-% (ylabel) ypos printyaxislabel -
-/printyaxislabel
-{ xaxis exch trpoint moveto
- yticklength -2 div 0 rmoveto -0.3 ft -0.3 ft rmoveto
- dup expstringwidth neg 0 rmoveto expstringshow
-} def
-
-
-% <val> minmax -
-% perform minv := min(minv, val); maxv := max(maxv, val)
-% allowing for the possibility of minv, maxv, val being false (undefined)
-/minmax
-{ dup false eq
- { pop }
- { minv false eq
- { dup /minv exch def /maxv exch def }
- { dup minv lt
- { /minv exch def }
- { dup maxv gt
- { /maxv exch def }
- { pop }
- ifelse
- } ifelse
- } ifelse
- } ifelse
-} def
-
-% <ticks> ticksundef <ticks> <bool>
-% returns true iff the ticks array is undefined (one false entry)
-/ticksundef
-{ dup length 1 eq
- { dup 0 get false eq
- }
- { false }
- ifelse
-} def
-
-% <number> integral <boolean>
-% true if the number has an integral value
-/integral { dup round eq } def
-
-% ticksep ticks xory alldata minval maxval axis base ticksandlimits ticks min max base
-% ticksandlimits: sort out value of x or y ticks and limits and log base
-/ticksandlimits
-{ /base exch def
- /minv false def
- /maxv false def
-
- % min and max of user-supplied minval, maxval, and axis
- minmax minmax minmax
-
- % min and max of data points
- { 0 get dup dup length 1 sub 3 index exch 2 exch
- { get minmax dup
- } for pop pop
- } forall
- pop dup
-
- % min and max of tick values
- { dup type /stringtype eq
- { pop } { minmax } ifelse
- } forall
-
- % fix minv and maxv if undefined (false) or equal
- minv false eq
- { /minv -1 def /maxv 1 def }
- { minv maxv eq
- { minv 0 lt
- { /minv 2 minv mul def /maxv 0 def
- }
- { minv 0 eq
- { /minv -1 def /maxv 1 def
- }
- { /minv 0 def /maxv 2 maxv mul def
- } ifelse
- } ifelse
- } if
- } ifelse
-
- % invent ticks if undefined
- ticksundef
- { pop /ticksep exch def
-
- % if base is reasonable and minv is positive, logarithmic ticks
- base 1 gt minv 0 gt and
- {
- % get integral log of minv and maxv
- /logminv base minv plog floor cvi def
- /logmaxv base maxv plog ceiling cvi def
-
- % if minv close to base, make it 1; reset minv and maxv
- logminv 1 eq logmaxv 4 ge and { /logminv 0 def } if
- /minv base logminv exp def
- /maxv base logmaxv exp def
-
- % ticks := [ base**logminv, ... , base**logmaxv ]
- [ logminv 1 logmaxv
- { dup base exch exp
- exch base exch loglgen
- } for
- ]
- }
- { % non-logarithmic ticks
- {
- % fix tick separation if undefined (0) or too small
- /base 0 def
- /delta maxv minv sub def
- ticksep delta 30 div le
- { /ticksep 10 delta log 1 sub ceiling exp def
- ticksep delta 2 div ge
- { /ticksep ticksep 2 div def }
- { ticksep delta 5 div lt
- { /ticksep 2 ticksep mul def
- } if
- } ifelse
- } if
-
- % adjust minv and maxv to be multiples of ticksep
- /minv minv ticksep div floor ticksep mul def
- /maxv maxv ticksep div ceiling ticksep mul def
- /delta maxv minv sub def
-
- % if minv or maxv near zero, move to zero and redo
- minv ticksep eq
- { /minv 0 def }
- { maxv ticksep neg eq { /maxv 0 def } { exit } ifelse
- } ifelse
- } loop
-
- % if minv, maxv, and ticksep are all integral, set "makeint" to true
- /makeint minv integral maxv integral ticksep integral and and def
-
- % ticks := [ minv, minv+ticksep, ... , maxv ]
- [ 0 1 delta ticksep div round
- { ticksep mul minv add makeint { cvi } if lgen }
- for
- ]
- } ifelse
- }
- { exch pop
- } ifelse
- minv maxv base
-} def
-
-% xset: set up all data for x axis, including limits and ticks
-% xticksep xticks 0 alldata xmin xmax xlog xextra xdecr xaxis xticklength xset -
-/xset
-{ /xticklength exch def
- /xaxis exch def
- /xdecr exch def
- /xextra exch def
- xaxis exch ticksandlimits
- /xlog exch def /xmax exch def /xmin exch def /xticks exch def
- /xleft xdecr { xmax } { xmin } ifelse def
- /xright xdecr { xmin } { xmax } ifelse def
- /xwidth xsize xextra 2 mul sub def
- /trxmin xmin xtr def /trxmax xmax xtr def
-} def
-
-% yset: set up all data for y axis, including limits and yticks
-% yticksep yticks 0 alldata ymin ymax ylog yextra ydecr yaxis yticklength yset -
-/yset
-{ /yticklength exch def
- /yaxis exch def
- /ydecr exch def
- /yextra exch def
- yaxis exch ticksandlimits
- /ylog exch def /ymax exch def /ymin exch def /yticks exch def
- /yleft ydecr { ymax } { ymin } ifelse def
- /yright ydecr { ymin } { ymax } ifelse def
- /ywidth ysize yextra 2 mul sub def
- /trymin ymin ytr def /trymax ymax ytr def
-} def
-
-% rset: set up all data for y axis (again), but including limits and rticks
-% rticksep rticks 0 alldata ymin ymax ylog yextra ydecr yaxis rticklength rset -
-/rset
-{ /rticklength exch def
- /yaxis exch def
- /ydecr exch def
- /yextra exch def
- yaxis exch ticksandlimits
- /ylog exch def /ymax exch def /ymin exch def /rticks exch def
- /yleft ydecr { ymax } { ymin } ifelse def
- /yright ydecr { ymin } { ymax } ifelse def
- /ywidth ysize yextra 2 mul sub def
- /trymin ymin ytr def /trymax ymax ytr def
-} def
-
-% norset: set up data for no rticks
-% - norset -
-/norset
-{ /rticklength 0 def
- /rticks [] def
-} def
-
-% framestyle: print a frame around the graph
-/framestyle
-{ 0 0 moveto xsize 0 lineto xsize ysize lineto
- 0 ysize lineto closepath stroke
- /printxtick /printxlabel xticks xleft printticks
- /printytick /printylabel yticks ymin printticks
- /printrtick /printrlabel rticks ymin printticks
-} def
-
-% nonestyle: print nothing around the graph
-/nonestyle
-{
-} def
-
-% axesstyle: print axes for the graph (unless axis values missing)
-/axesstyle
-{
- xaxis false eq yaxis false eq or
- { framestyle }
- { xaxis yaxis trpoint dup 0 exch moveto xsize exch lineto
- dup 0 moveto ysize lineto stroke
- /printxaxistick /printxaxislabel xticks xleft printticks
- /printyaxistick /printyaxislabel yticks ymin printticks
- } ifelse
-} def
-
-% rundata: run all data sets
-/rundata
-{ alldata
- { gsave
- dup dup dup dup
- 4 get /dopaint exch def
- 3 get /initrun exch def
- 2 get /pairs exch def
- 1 get /points exch def
- 0 get /data exch def
- dopaint
- { data length 4 ge
- { initrun
- newpath
- data 0 get ymin trpoint yextra sub moveto
- 0 2 data length 2 sub
- { dup 1 add
- data exch get /ycurr exch def
- data exch get /xcurr exch def
- xcurr ycurr trpoint lineto
- } for
- data dup length 2 sub get ymin trpoint yextra sub lineto
- closepath fill
- } if
- } if
- initrun
- data length 2 ge
- {
- /xcurr data 0 get def
- /ycurr data 1 get def
- points
- data length 4 ge
- { 2 2 data length 2 sub
- { /xprev xcurr def
- /yprev ycurr def
- dup dup 2 eq /firstpair exch def
- data length 2 sub eq /lastpair exch def
- dup 1 add
- data exch get /ycurr exch def
- data exch get /xcurr exch def
- pairs
- points
- } for
- } if
- } if
- grestore
- } forall
-} def
-
-end
-%%EndResource
-
-%%BeginResource: procset LoutBasicSetup
-% @PrependGraphic file /usr/staff/jeff/lout.lib/include/bsf.lpg
-
-% width height linethickness louteuro -
-% draw a Euro symbol of this width and height with this line thickness
-% Author: Jeff Kingston, based on code from Andrew Beardsley
-/louteuro {
- 20 dict begin
- /eurothick exch def
- /euroheight exch def
- /eurowidth exch def
- /eurostrokewidth euroheight 0.8 mul def
- /eurostep eurothick 60 cos mul 60 sin div def
- /eurotheta 40 def
-
- % llx lly width thickness louteurobox -
- % draw angled box starting at (llx, lly) with given width and thickness
- /louteurobox
- {
- /euroboxthick exch def
- /euroboxwidth exch def
- newpath moveto euroboxwidth 0 rlineto
- eurostep euroboxthick rlineto
- euroboxwidth neg 0 rlineto closepath fill
- } def
-
- % lower cross stroke
- 0 euroheight 2 div eurothick 1.5 mul sub
- eurostrokewidth eurothick louteurobox
-
- % upper cross stroke
- 0 euroheight 2 div eurothick 0.5 mul add
- eurostrokewidth eurostep 2 mul add eurothick louteurobox
-
- % circular part
- /eurohctr eurowidth euroheight 2 div eurotheta cos mul sub def
- /eurovctr euroheight 2 div def
- newpath
- eurohctr eurovctr eurovctr eurotheta 350 eurotheta sub arc
- eurohctr eurovctr eurovctr eurothick sub 365 eurotheta sub eurotheta arcn
- closepath fill
- end
-} def
-
-% path for @FullWidthRule symbol
-/LoutRule
-{ 0 0 moveto xsize 0 lineto
-} def
-
-% path for @Box symbol
-/LoutBox
-{ 0 0 moveto xsize 0 lineto
- xsize ysize lineto 0 ysize lineto
- closepath
-} def
-
-% path for @CurveBox symbol
-/LoutCurveBox
-{ xmark 0 moveto
- xsize xmark sub xmark xmark 270 360 arc
- xsize xmark sub ysize xmark sub xmark 0 90 arc
- xmark ysize xmark sub xmark 90 180 arc
- xmark xmark xmark 180 270 arc
- closepath
-} def
-
-% path for @ShadowBox symbol
-/LoutShadowBox
-{ xmark 2 mul 0 moveto xsize 0 lineto
- xsize ysize xmark 2 mul sub lineto
- xsize xmark sub ysize xmark 2 mul sub lineto
- xsize xmark sub xmark lineto
- xmark 2 mul xmark lineto
- closepath
-} def
-
-% set up dictionary containing margin note data: parity LoutMargSet -
-/LoutMargSet
-{ /LoutMargDict 12 dict def
- LoutMargDict begin
- /parity exch def
- /matr matrix currentmatrix def
- /rightx xsize def
- /lefty ysize def % highest allowable point for top of next left note
- /righty ysize def % highest allowable point for top of next right note
- /max { 2 copy gt { pop } { exch pop } ifelse } def
- /min { 2 copy lt { pop } { exch pop } ifelse } def
- end
-} def
-
-%translate coordinate system for marginal notes: type LoutMargShift -
-% where type 0 is left margin, 1 is right margin, 2 is outer, 3 is inner
-/LoutMargShift
-{ LoutMargDict begin
-
- % y coordinate of top of note, in margin coords, before vertical adjust
- 0 ysize transform matr itransform exch pop
-
- % decide whether left or right margin based on type and parity
- exch [ 0 1 parity 1 parity sub ] exch get 0 eq
- {
- % left margin: adjust top of note downwards if overlaps previous note
- lefty min
-
- % bottom of note is new lefty position and also translate position
- ysize sub dup /lefty exch def
-
- % want right edge of note at coordinate zero
- xsize neg exch
- }
- {
- % right margin: adjust top of note downwards if overlaps previous note
- righty min
-
- % bottom of note is new righty position and also translate position
- ysize sub dup /righty exch def
-
- % want left edge of note at coordinate rightx
- rightx exch
- } ifelse
-
- % stack now contains coord of bottom left corner in margin coordinates
- matr setmatrix translate
- end
-} def
-
-% create LoutPageDict with left, right, foot, top for @Place symbol users
-/LoutPageSet
-{
- /LoutPageDict 5 dict def
- LoutPageDict begin
- /matr matrix currentmatrix def
- /left 0 def
- /right xsize def
- /foot 0 def
- /top ysize def
- end
-
-} def
-
-%%EndResource
-
-%%EndProlog
-
-%%BeginSetup
-%%IncludeResource: font Times-Roman
-/Times-Romanfnt82 vec2 /Times-Roman LoutRecode
-/fnt82 { /Times-Romanfnt82 LoutFont } def
-%%IncludeResource: font Helvetica
-/Helveticafnt35 vec2 /Helvetica LoutRecode
-/fnt35 { /Helveticafnt35 LoutFont } def
-%%IncludeResource: font Helvetica-Oblique
-/Helvetica-Obliquefnt36 vec2 /Helvetica-Oblique LoutRecode
-/fnt36 { /Helvetica-Obliquefnt36 LoutFont } def
-%%EndSetup
-
-%%Page: 1 1
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Helvetica
-%%+ font Helvetica-Oblique
-/pgsave save def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-
-gsave
-0 0 translate
-400 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 12588 0 12588 400 480 100 1417 -14005 LoutGr2
-1 LoutMargSet
-grestore
-160 fnt82 0 12479(lout)m 9002(1)s 600 fnt35 691 11623(A)m
-1250(Pr)s 6(actical)k 3667(Introduction)s 6922(to)s 7566(the)s
-3956 10183(Lout)m 616 8743(Document)m 3500(F)s 18(or)k -15(matting)k
-6490(System)s 400 fnt35 2882 6881(Jeffre)m 8(y)k 4180(H.)s
-4656(Kingston)s 400 fnt36 1395 5779(Basser)m 2794(Dept.)s 3834(of)s
-4333(Computer)s 6242(Science)s 2251 5299(The)m 3058(Univ)s 10(ersity)k
-4951(of)s 5450(Sydne)s 8(y)k
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 2 2
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-400 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 12588 0 12588 400 480 100 1417 -14005 LoutGr2
-0 LoutMargSet
-grestore
-160 fnt82 0 12479(lout)m 8990(2)s 400 fnt84 2988 11377(A)m
-3363(simple)s 4565(input)s 5575(\207le)s 360 fnt35 800 9646(@SysInclude { doc })m
-800 9166(@Doc @T)m 43(e)k 10(xt @Begin)k 800 8686(Hello)m 14(, w)k 3(or)k -5(ld)k
-800 8206(@End @T)m 43(e)k 10(xt)k 400 fnt84 0 6379(Ho)m 4(w)k
-889(to)s 1313(f)s 10(ormat)k 2579(it)s 360 fnt35
-800 5633(lout \207lename > out.ps)m 800 5153(ghostvie)m 7(w out.ps)k 800 4673(mpr out.ps)m
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 3 3
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-/pgsave save def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-400 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 12588 0 12588 400 480 100 1417 -14005 LoutGr2
-1 LoutMargSet
-grestore
-160 fnt82 0 12479(lout)m 8997(3)s gsave
-0 667 translate
-400 fnt82 8640 10080 1440 8457 400 480 100 LoutGraphic
-gsave
-LoutBox stroke
-grestore
-1440 8367(Hello,)m 2505(w)s 4(orld)k
-
-grestore
-
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 4 4
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-400 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 12588 0 12588 400 480 100 1417 -14005 LoutGr2
-0 LoutMargSet
-grestore
-160 fnt82 0 12479(lout)m 8990(4)s 400 fnt84 2339 11377(Headings)m
-4026(and)s 4762(paragraphs)s 360 fnt35 800 9646(@SysInclude { doc })m 800 9166(@Doc @T)m 43(e)k 10(xt @Begin)k
-800 8686(@Heading { Introduction })m 800 8206(@PP)m 800 7726(The design of the Lout f)m 10(or)k -9(matting)k
-800 7246(system w)m 5(as under)k -14(tak)k 7(en with the)k 800 6766(needs of the @I { ordinar)m -10(y user })k
-800 6286(v)m 9(er)k -10(y m)k 3(uch in mind.)k 800 5806(@End @T)m 43(e)k 10(xt)k
-
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 5 5
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Times-Italic
-/pgsave save def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-400 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 12588 0 12588 400 480 100 1417 -14005 LoutGr2
-1 LoutMargSet
-grestore
-160 fnt82 0 12478(lout)m 8995(5)s gsave
-0 666 translate
-400 fnt82 8640 10080 1440 8456 400 480 100 LoutGraphic
-gsave
-LoutBox stroke
-grestore
-400 fnt84 1440 8364(Intr)m 7(oduction)k
-400 fnt82 2240 7742(The)m 2953(design)s 4090(of)s 4543(the)s
-5123(Lout)s 1440 7262(formatting)m 3215(system)s 4423(w)s 4(as)k
-5123(undertak)s 4(en)k 1440 6782(with)m 2245(the)s 2825(needs)s
-3818(of)s 4271(the)s 400 fnt83 4851 6784(or)m 14(dinary)k
-6328(user)s 400 fnt82 1440 6302(v)m 6(ery)k 2234(much)s
-3217(in)s 3622(mind.)s
-grestore
-
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 6 6
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-400 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 12588 0 12588 400 480 100 1417 -14005 LoutGr2
-0 LoutMargSet
-grestore
-160 fnt82 0 12479(lout)m 8991(6)s 400 fnt84 3817 11376(Displays)m
-360 fnt35 800 9652(Y)m 50(ou cer)k -14(tainly don't w)k 5(ant to retur)k -9(n to)k
-800 9172(his of\207ce and repor)m -14(t:)k 800 8692(@IndentedDispla)m 10(y @I {)k 800 8212(`I can't \207nd an ef\207cient algor)m -5(ithm, I)k
-800 7732(guess I'm just too dumb)m 14(.)k 36(')k 800 7252(})m 800 6772(T)m 43(o a)k 7(v)k 9(oid ser)k -5(ious damage to y)k 7(our)k
-800 6292(position in the compan)m 5(y)k 36(, it w)k 3(ould)k 800 5812(be better if ...)m
-
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 7 7
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Italic
-/pgsave save def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-400 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 12588 0 12588 400 480 100 1417 -14005 LoutGr2
-1 LoutMargSet
-grestore
-160 fnt82 0 12479(lout)m 8994(7)s gsave
-0 668 translate
-400 fnt82 8640 10080 1440 8457 400 480 100 LoutGraphic
-gsave
-LoutBox stroke
-grestore
-1440 8367(Y)m 44(ou)k
-2173(certainly)s 3657(don')s 7(t)k 4591(w)s 4(ant)k
-5460(to)s 5856(return)s 6901(to)s 1440 7887(his)m 1990(of\207ce)s
-2991(and)s 3665(report:)s 400 fnt83 2240 7048(`I)m 2626(can')s 12(t)k
-3542(\207nd)s 4252(an)s 4742(ef\207cient)s 2240 6568(algorithm,)m 3970(I)s
-4223(guess)s 5201(I'm)s 5848(just)s 6532(too)s 2240 6088(dumb)m 16(.)k 56(')k
-400 fnt82 1440 5330(T)m 32(o)k 1940(a)s 8(v)k 8(oid)k
-2909(serious)s 4124(damage)s 5458(to)s 5857(your)s 1440 4850(position)m
-2822(in)s 3227(the)s 3807(compan)s 6(y)k 26(,)k
-5418(it)s 5740(w)s 4(ould)k 6831(be)s 1440 4370(better)m
-2449(if)s 2813(\202)s
-grestore
-
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 8 8
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-400 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 12588 0 12588 400 480 100 1417 -14005 LoutGr2
-0 LoutMargSet
-grestore
-160 fnt82 0 12479(lout)m 8994(8)s 400 fnt84 2299 11376(P)m 4(aragraph)k
-4229(br)s 7(eaking)k 5847(styles)s 360 fnt35 800 9652(Y)m 50(ou cer)k -14(tainly don't w)k 5(ant to retur)k -9(n to)k
-800 9172(his of\207ce and repor)m -14(t:)k 800 8692(@ID { r)m 3(agged noh)k 10(yphen } @Break @I {)k
-800 8212(`I can't \207nd an ef\207cient algor)m -5(ithm, I)k 800 7732(guess I'm just too dumb)m 14(.)k 36(')k
-800 7252(})m 800 6772(T)m 43(o a)k 7(v)k 9(oid ser)k -5(ious damage to y)k 7(our)k
-800 6292(position in the compan)m 5(y)k 36(, it w)k 3(ould)k 800 5812(be better if ...)m
-
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 9 9
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Italic
-/pgsave save def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-400 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 12588 0 12588 400 480 100 1417 -14005 LoutGr2
-1 LoutMargSet
-grestore
-160 fnt82 0 12479(lout)m 8992(9)s gsave
-0 666 translate
-400 fnt82 8640 10080 1440 8457 400 480 100 LoutGraphic
-gsave
-LoutBox stroke
-grestore
-1440 8367(Y)m 44(ou)k
-2173(certainly)s 3657(don')s 7(t)k 4591(w)s 4(ant)k
-5460(to)s 5856(return)s 6901(to)s 1440 7887(his)m 1990(of\207ce)s
-2991(and)s 3665(report:)s 400 fnt83 2240 7048(`I)m 2626(can')s 12(t)k
-3542(\207nd)s 4252(an)s 4742(ef\207cient)s 2240 6568(algorithm,)m 3970(I)s
-4223(guess)s 5201(I'm)s 5848(just)s 6532(too)s 2240 6088(dumb)m 16(.)k 56(')k
-400 fnt82 1440 5330(T)m 32(o)k 1940(a)s 8(v)k 8(oid)k
-2909(serious)s 4124(damage)s 5458(to)s 5857(your)s 1440 4850(position)m
-2822(in)s 3227(the)s 3807(compan)s 6(y)k 26(,)k
-5418(it)s 5740(w)s 4(ould)k 6831(be)s 1440 4370(better)m
-2449(if)s 2813(\202)s
-grestore
-
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 10 10
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-400 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 12588 0 12588 400 480 100 1417 -14005 LoutGr2
-0 LoutMargSet
-grestore
-160 fnt82 0 12479(lout)m 8909(10)s 400 fnt84 4128 11376(Lists)m
-360 fnt35 800 9722(@Heading { Oper)m 3(ating Instr)k -5(uctions })k 800 9242(@NumberedList)m
-800 8762(@ListItem { Press small g)m 3(reen le)k 10(v)k 9(er)k 18(.)k 21( })k
-800 8282(@ListItem { )m 14(W)k 14(ait appro)k 10(ximately 10 seconds)k 800 7802(until red light \210ashes)m 5(.)k 21( })k
-800 7322(@ListItem { If smok)m 7(e emerges from rear of unit,)k 800 6842(call Ser)m -10(vice Depar)k -14(tment.)k 21( })k
-800 6362(@EndList)m
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 11 11
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-/pgsave save def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-400 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 12588 0 12588 400 480 100 1417 -14005 LoutGr2
-1 LoutMargSet
-grestore
-160 fnt82 0 12479(lout)m 8922(11)s gsave
-0 668 translate
-400 fnt82 8640 10080 1440 8456 400 480 100 LoutGraphic
-gsave
-LoutBox stroke
-grestore
-400 fnt84 1440 8364(Operating)m
-3287(Instructions)s 400 fnt82 1440 7529(1.)m 2240(Press)s 3166(small)s
-4123(green)s 5104(le)s 10(v)k 6(er)k 22(.)k
-1440 6689(2.)m 2240(W)s 32(ait)k 3077(approximately)s 5468(10)s
-5952(seconds)s 2240 6209(until)m 3065(red)s 3672(light)s 4505(\210ashes.)s
-1440 5369(3.)m 2240(If)s 2626(smok)s 4(e)k 3757(emer)s 7(ges)k
-5164(from)s 6040(rear)s 6760(of)s 2240 4889(unit,)m 3040(call)s
-3708(Service)s 4997(Department.)s
-grestore
-
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 12 12
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-400 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 12588 0 12588 400 480 100 1417 -14005 LoutGr2
-0 LoutMargSet
-grestore
-160 fnt82 0 12479(lout)m 8910(12)s 400 fnt84 3062 11377(T)m 36(echnical)k
-4780(r)s 7(eports)k 360 fnt35 800 9646(@SysInclude { repor)m -14(t })k
-800 9166(@Repor)m -14(t)k 800 8686( @Title { ...)m 21( })k 800 8206( @A)m 10(uthor { ...)k 21( })k
-800 7726( @Institution { ...)m 21( })k 800 7246( @DateLine { ...)m 21( })k 800 6766(//)m
-800 6286(@Abstr)m 3(act { ...)k 21( })k 800 5806(@Section { ...)m 21( })k
-800 5326(@Section { ...)m 21( })k 800 4846(@Section { ...)m 21( })k 800 4366(@Appendix { ...)m 21( })k
-800 3886(@Appendix { ...)m 21( })k
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 13 13
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-400 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 12588 0 12588 400 480 100 1417 -14005 LoutGr2
-1 LoutMargSet
-grestore
-160 fnt82 0 12479(lout)m 8917(13)s 400 fnt84 3840 11376(Sections)m
-360 fnt35 800 9720(@Section)m 800 9240( @T)m 43(ag { dfs })k 800 8760( @Title { Depth-\207rst search })m
-800 8280(@Begin)m 800 7800(@PP)m 800 7320(W)m 10(e tur)k -9(n no)k 5(w to our \207rst algor)k -5(ithm)k
-800 6840(on gener)m 3(al g)k 3(r)k 3(aphs ...)k 800 6360(@End @Section)m
-
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 14 14
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-/pgsave save def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-400 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 12588 0 12588 400 480 100 1417 -14005 LoutGr2
-0 LoutMargSet
-grestore
-160 fnt82 0 12479(lout)m 8910(14)s gsave
-0 668 translate
-400 fnt82 8640 10080 1440 8456 400 480 100 LoutGraphic
-gsave
-LoutBox stroke
-grestore
-400 fnt84 1440 8364(10.6.)m
-2424(Depth-\207rst)s 4386(sear)s 7(ch)k 400 fnt82 2240 7742(W)m 32(e)k
-2854(turn)s 3592(no)s 10(w)k 4359(to)s 4758(our)s
-5391(\207rst)s 1440 7262(algorithm)m 3093(on)s 3587(general)s 4854(graphs)s
-6003(\202)s
-grestore
-
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 15 15
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-400 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 12588 0 12588 400 480 100 1417 -14005 LoutGr2
-1 LoutMargSet
-grestore
-160 fnt82 0 12478(lout)m 8915(15)s 400 fnt84 3142 11375(Cr)m 7(oss)k
-4199(r)s 7(efer)k 7(ences)k 360 fnt35 800 9722(F)m 10(or fur)k -14(ther inf)k 10(or)k -9(mation, consult)k
-800 9242(Section @NumberOf dfs on page)m 800 8762(@P)m 14(ageOf { dfs }.)k
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 16 16
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-/pgsave save def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-400 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 12588 0 12588 400 480 100 1417 -14005 LoutGr2
-0 LoutMargSet
-grestore
-160 fnt82 0 12479(lout)m 8911(16)s gsave
-0 667 translate
-400 fnt82 8640 10080 1440 8457 400 480 100 LoutGraphic
-gsave
-LoutBox stroke
-grestore
-1440 8367(F)m 6(or)k
-2089(further)s 3276(information,)s 5341(consult)s 1440 7887(Section)m 2732(10.6)s
-3520(on)s 4014(page)s 4860(245.)s
-grestore
-
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 17 17
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-400 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 12588 0 12588 400 480 100 1417 -14005 LoutGr2
-1 LoutMargSet
-grestore
-160 fnt82 0 12479(lout)m 8914(17)s 400 fnt84 3612 11377(Refer)m 7(ences)k
-360 fnt35 800 9723(@Database @Ref)m 10(erence { m)k 5(yrefs })k 800 9243(...)m
-800 8763(F)m 10(or the details)k 5(, consult the User')k 18(s)k 800 8283(Guide @Cite { $kingston1995lout.user }.)m
-
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 18 18
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Times-Italic
-/pgsave save def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-400 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 12588 0 12588 400 480 100 1417 -14005 LoutGr2
-0 LoutMargSet
-grestore
-160 fnt82 0 12479(lout)m 8914(18)s gsave
-0 667 translate
-400 fnt82 8640 10080 1440 8457 400 480 100 LoutGraphic
-gsave
-LoutBox stroke
-grestore
-1440 8367(F)m 6(or)k
-2089(the)s 2669(details,)s 3889(consult)s 5143(the)s 5723(User')s 22(s)k
-1440 7887(Guide)m 2508([1].)s 1440 7263(\202)m 400 fnt84 1440 6637(Refer)m 7(ences)k
-400 fnt82 1440 5879(1.)m 2240(Jef)s 10(fre)k 6(y)k
-3422(H.)s 3883(Kingston.)s 400 fnt83 5621 5881(A)m 5947(User')s 16(s)k
-2240 5401(Guide)m 3304(to)s 3703(the)s 4279(Lout)s 5119(Document)s
-2240 4921(F)m 42(ormatting)k 4107(System)s 5308(\(V)s 44(er)k 4(sion)k
-2240 4441(3\))m 400 fnt82 2556 4439(.)m 2829(Basser)s 3992(Department)s
-5977(of)s 2240 3959(Computer)m 3938(Science)s 5171(,)s 5349(Uni)s 10(v)k 6(ersity)k
-2240 3479(of)m 2693(Sydne)s 6(y)k 3876(,)s 4054(1995)s
-4830(.)s 1440 2642(2.)m 2240(\202)s
-grestore
-
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 19 19
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-400 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 12588 0 12588 400 480 100 1417 -14005 LoutGr2
-1 LoutMargSet
-grestore
-160 fnt82 0 12479(lout)m 8912(19)s 400 fnt84 2601 11375(Database)m
-4269(\207le)s 4872(myr)s 7(efs.ld)k 360 fnt35 800 9644({ @Ref)m 10(erence)k
-800 9164( @T)m 43(ag { kingston1995lout.user })k 800 8684( @T)m 43(ype { Book })k 800 8204( @A)m 10(uthor { Jeffre)k 7(y H.)k 21( Kingston })k
-800 7724( @Title { A User')m 18(s Guide to the Lout)k 800 7244(Document F)m 10(or)k -9(matting System \(V)k 28(ersion 3\) })k
-800 6764( @Institution { Basser Depar)m -14(tment of)k 800 6284(Computer Science })m 800 5804( @Address { Univ)m 9(ersity of Sydne)k 7(y)k
-800 5324(2006, A)m 10(ustr)k 3(alia })k 800 4844( @Y)m 50(ear { 1994 })k
-800 4364(})m
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 20 20
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-/pgsave save def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-400 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 12588 0 12588 400 480 100 1417 -14005 LoutGr2
-0 LoutMargSet
-grestore
-160 fnt82 0 12479(lout)m 8909(20)s 400 fnt84 2965 11375(Books)m
-4097(\(and)s 4966(theses\))s 400 fnt82 0 9650(\213)m 800(T)s 14(itle)k
-1632(page,)s 2564(pref)s 4(ace,)k 3912(introduction)s 0 8810(\213)m
-800(Automatic)s 2574(table)s 3442(of)s 3895(contents)s 0 8053(\213)m
-800(Pref)s 4(atory)k 2372(pages)s 3365(numbered)s 5060(in)s
-5465(Roman)s 6713(numerals)s 0 7213(\213)m 800(Chapters,)s 2397(sections,)s
-3861(subsections,)s 5880(appendices)s 0 6374(\213)m 800(References)s 2656(at)s
-3044(end)s 3718(of)s 4171(chapters)s 5585(or)s 6018(book)s
-0 5535(\213)m 800(Running)s 2265(page)s 3111(headers)s 0 4695(\213)m
-800(Odd-e)s 10(v)k 6(en)k 2453(page)s 3299(formats)s
-0 3855(\213)m 800(Sorted)s 1940(inde)s 6(x)k
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 21 21
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-400 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 12588 0 12588 400 480 100 1417 -14005 LoutGr2
-1 LoutMargSet
-grestore
-160 fnt82 0 12479(lout)m 8922(21)s 400 fnt84 2631 11377(Making)m
-4057(a)s 4353(sorted)s 5509(index)s 360 fnt35 800 9646(@PP)m
-800 9166(There are se)m 10(v)k 9(er)k 3(al possib)k 7(le w)k 5(a)k 10(ys to implement the)k
-800 8686(@I P)m 14(ar)k -14(tition procedure)k 5(,)k 800 8206(par)m -14(tition @Inde)k 10(x { @I P)k 14(ar)k -14(tition \(in {@I Quic)k 7(ksor)k -14(t}\) })k
-800 7726(b)m 7(ut the f)k 10(ollo)k 5(wing seems to be the best.)k 21( Star)k -14(ting ...)k
-
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 22 22
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Times-Italic
-/pgsave save def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-400 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 12588 0 12588 400 480 100 1417 -14005 LoutGr2
-0 LoutMargSet
-grestore
-160 fnt82 0 12479(lout)m 8910(22)s gsave
-0 668 translate
-400 fnt82 8640 10080 1440 8462 400 480 100 LoutGraphic
-gsave
-LoutBox stroke
-grestore
-400 fnt84 1440 8370(Index)m
-400 fnt82 1440 7795(\202)m 1440 7315(partial)m 2552(order)s 16(,)k
-3557(227)s 400 fnt83 1440 6837(P)m 32(artition)k 400 fnt82
-2941 6835(\(in)m 400 fnt83 3479 6837(Quic)m 8(ksort)k 400 fnt82
-5052 6835(\),)m 5363(189)s 1440 6355(postorder)m 3049(tra)s 8(v)k 6(ersal)k
-1840 5875(of)m 2293(binary)s 3404(tree,)s 4180(19)s 1840 5395(topological)m
-3730(ordering,)s 5262(229)s 1440 4915(\202)m
-grestore
-
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 23 23
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-400 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 12588 0 12588 400 480 100 1417 -14005 LoutGr2
-1 LoutMargSet
-grestore
-160 fnt82 0 12479(lout)m 8917(23)s 400 fnt84 2785 11376(Equation)m
-4455(f)s 10(ormatting)k 360 fnt35 800 9645(@SysInclude { eq })m 800 9165(...)m
-800 8685(Since @Eq { )m 18(T\(n-i\) = )k 18(T\(0\) = 0 } w)k 3(e ha)k 7(v)k 9(e)k
-800 8205(@IndentedDispla)m 10(y @Eq {)k 800 7725(T\(n\) = big sum from i=0 to n-1 2 sup i = 2 sup n - 1)m 800 7245(})m 800 6765(f)m 10(or the n)k 3(umber of disk mo)k 5(v)k 9(es made b)k 7(y the )k 18(T)k 43(o)k 5(w)k 3(ers)k
-800 6285(of Hanoi algor)m -5(ithm, giv)k 9(en @Eq { n } disks)k 5(.)k
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 24 24
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Italic
-%%+ font Symbol
-/pgsave save def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-%%IncludeResource: font Symbol
-/fnt78 { /Symbol LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-400 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 12588 0 12588 400 480 100 1417 -14005 LoutGr2
-0 LoutMargSet
-grestore
-160 fnt82 0 12479(lout)m 8910(24)s gsave
-0 668 translate
-400 fnt82 8640 10080 1440 8457 400 480 100 LoutGraphic
-gsave
-LoutBox stroke
-grestore
-1440 8367(Since)m 400 fnt83
-2419 8369(T)m 400 fnt78 2691 8357(\()m 400 fnt83 2831 8369(n)m
-400 fnt78 3141 8357(-)m 400 fnt83 3475 8369(i)m 400 fnt78
-3601 8357(\))m 3852(=)s 400 fnt83 4207 8369(T)m 400 fnt78
-4479 8357(\()m 4619(0)s 4828(\))s 5079(=)s 5434(0)s
-400 fnt82 5723 8367(we)m 6280(ha)s 8(v)k 6(e)k
-400 fnt83 2240 7204(T)m 400 fnt78 2512 7192(\()m 400 fnt83
-2652 7204(n)m 400 fnt78 2862 7192(\))m 3113(=)s 280 fnt83
-3468 7622(n)m 280 fnt78 3640 7613(-)m 3829(1)s 520 fnt78
-3522 7162(\345)m 280 fnt83 3483 6864(i)m 280 fnt78 3599 6855(=)m
-3791(0)s 280 fnt83 4149 7367(i)m 400 fnt78 3959 7192(2)m
-4363(=)s 280 fnt83 4908 7400(n)m 400 fnt78 4718 7192(2)m
-5161(-)s 5495(1)s 400 fnt82 1440 6098(for)m 2006(the)s
-2586(number)s 3907(of)s 4360(disk)s 5128(mo)s 6(v)k 6(es)k
-6243(made)s 1440 5618(by)m 1930(the)s 2510(T)s 32(o)k 10(wers)k
-3749(of)s 4202(Hanoi)s 5268(algorithm,)s 1440 5138(gi)m 10(v)k 6(en)k
-400 fnt83 2406 5140(n)m 400 fnt82 2696 5138(disks.)m
-grestore
-
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 25 25
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-400 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 12588 0 12588 400 480 100 1417 -14005 LoutGr2
-1 LoutMargSet
-grestore
-160 fnt82 0 12478(lout)m 8915(25)s 400 fnt84 3035 11375(Another)m
-4550(equation)s 360 fnt35 800 9644(@CenteredDispla)m 10(y @Eq {)k 800 9164(big int supp 1 on 0 )m 21(`)k
-800 8684(dx o)m 5(v)k 9(er sqr)k -14(t { 1 - x sup 2 })k 800 8204(= pi o)m 5(v)k 9(er 2)k
-800 7724(})m
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 26 26
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Symbol
-%%+ font Times-Italic
-/pgsave save def
-%%IncludeResource: font Symbol
-/fnt78 { /Symbol LoutFont } def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-400 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 12588 0 12588 400 480 100 1417 -14005 LoutGr2
-0 LoutMargSet
-grestore
-160 fnt82 0 12479(lout)m 8911(26)s gsave
-0 667 translate
-400 fnt82 8640 10080 1440 8640 400 480 100 LoutGraphic
-gsave
-LoutBox stroke
-grestore
-676 fnt78 3159 7423(\362)m
-280 fnt78 3355 7972(1)m 3355 7281(0)m 400 fnt83 3991 7782(dx)m
-1187 0 0 0 400 480 20 3587 7697 LoutGr2
-0 0 moveto xsize 0 lineto 0.05 ft setlinewidth stroke
-grestore
-
-grestore
-gsave
-0 7292 translate
-1.0000 1.2231 scale
-400 fnt78 3587 -100(\326)m
-grestore
-981 0 0 0 400 480 20 3793 7617 LoutGr2
-0 0 moveto xsize 0 lineto 0.03 ft setlinewidth 2 setlinecap stroke
-grestore
-
-grestore
-400 fnt78 3853 7251(1)m 4129(-)s
-280 fnt78 4641 7365(2)m 400 fnt83 4463 7263(x)m 400 fnt78
-4914 7597(=)m 5269 7784(p)m gsave
-5269 7697 translate
-400 fnt83 212 0 0 0 400 480 20 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto 0.05 ft setlinewidth stroke
-grestore
-
-grestore
-5280 7317(2)m
-grestore
-
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 27 27
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-400 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 12588 0 12588 400 480 100 1417 -14005 LoutGr2
-1 LoutMargSet
-grestore
-160 fnt82 0 12479(lout)m 8914(27)s 400 fnt84 3991 11383(T)m 36(ables)k
-360 fnt35 800 9729(@SysInclude { tab })m 800 9249(...)m 800 8769(@T)m 43(ab)k
-800 8289( @Fmta { @Col @I A ! @Col B })m 800 7809({)m 800 7329(@Ro)m 5(w)k 5(a)k
-800 6849( A { F)m 10(or)k -14(tr)k 3(an })k 800 6369( B { )m 18(The \207rst ...)k 21( language })k
-800 5889(@Ro)m 5(w)k 5(a)k 800 5409( A { Algol-60 })m 800 4929( B { Said to be ...)m 21( successors })k
-800 4449(@Ro)m 5(w)k 5(a)k 800 3969( A { P)m 14(ascal })k
-800 3489( B { )m 18(The f)k 10(amous ...)k 21( successors })k 800 3009(})m
-
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 28 28
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Italic
-/pgsave save def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-400 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 12588 0 12588 400 480 100 1417 -14005 LoutGr2
-0 LoutMargSet
-grestore
-160 fnt82 0 12479(lout)m 8914(28)s gsave
-0 667 translate
-400 fnt82 8640 10080 1440 8640 400 480 100 LoutGraphic
-gsave
-LoutBox stroke
-grestore
-400 fnt83 1440 8177(F)m 42(ortr)k 6(an)k
-400 fnt82 3178 8175(The)m 3891(\207rst)s 4612(high-le)s 10(v)k 6(el)k
-3178 7695(programming)m 5442(language)s 400 fnt83 1440 6950(Algol-60)m 400 fnt82
-3178 6948(Said)m 3985(to)s 4384(be)s 4853(a)s 5130(better)s
-3178 6468(language)m 4712(than)s 5494(most)s 6371(of)s 6824(its)s
-3178 5988(successors)m 400 fnt83 1440 5327(P)m 32(ascal)k 400 fnt82
-3178 5325(The)m 3891(most)s 4768(f)s 4(amous)k 6024(of)s
-3178 4845(Algol-60')m 22(s)k 4971(successors)s
-grestore
-
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 29 29
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-400 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 12588 0 12588 400 480 100 1417 -14005 LoutGr2
-1 LoutMargSet
-grestore
-160 fnt82 0 12479(lout)m 8912(29)s 400 fnt84 3357 11375(Another)m
-4872(table)s 360 fnt35 800 10201(@T)m 43(ab)k 800 9721( hmargin { 0.4c })m
-800 9241( vmargin { 0.3v })m 800 8761( side { single })m 800 8281( @Fmta { @Col @B @CC X @Ov)m 9(er A,B)k 7(,C })k
-800 7801( @Fmtb { @Col @I A ! @Col B !! @Col C })m 800 7321({)m 800 6361(@Ro)m 5(w)k 5(a abo)k 5(v)k 9(e { single })k
-800 5881( X { )m 18(V)k 25(alue of mathematical ...)k 21( dollars\) })k 800 4921(@Ro)m 5(wb abo)k 5(v)k 9(e { doub)k 7(le })k
-800 4441( A { Quadr)m 3(atic f)k 10(or)k -9(m)k 3(ula })k
-800 3961( B { @Eq { x ^= { ...)m 21( } o)k 5(v)k 9(er 2a } })k 800 3481( C { 3^.5 })m
-800 2521(@Ro)m 5(wb belo)k 5(w { single })k 800 2041( A { Binomial theorem })m 800 1561( B { @Eq { \( a + b \) sup n ^= ...)m 21( b sup n-k } })k
-800 1081( C { 12^ })m 800 601(})m
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 30 30
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Times-Italic
-%%+ font Symbol
-/pgsave save def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-%%IncludeResource: font Symbol
-/fnt78 { /Symbol LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-400 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 12588 0 12588 400 480 100 1417 -14005 LoutGr2
-0 LoutMargSet
-grestore
-160 fnt82 0 12479(lout)m 8909(30)s gsave
-0 667 translate
-400 fnt82 8640 10080 1440 8640 400 480 100 LoutGraphic
-gsave
-LoutBox stroke
-grestore
-gsave
-1440 8640 translate
-0.5938 0.5938 scale
-0 144 0 144 400 480 100 0 -144 LoutGr2
-0.5 pt ltabvs
-grestore
-
-grestore
-226 0 0 0 400 480 100 0 0 LoutGr2
-0.5 pt ltabhsp
-grestore
-
-grestore
-0 344 0 159 400 480 100 0 -488 LoutGr2
-0.5 pt ltabvs
-grestore
-
-grestore
-0 144 0 0 400 480 100 0 -632 LoutGr2
-0.5 pt ltabvs
-grestore
-
-grestore
-8889 0 0 0 400 480 100 226 0 LoutGr2
-0.5 pt ltabhs
-grestore
-
-grestore
-400 fnt84 226 -421(V)m 36(alue)k
-1281(of)s 1736(mathematical)s 4157(f)s 10(ormulae)k 5793(\(millions)s
-7369(of)s 7824(dollars\))s gsave
-9115 0 translate
-400 fnt82 226 0 0 0 400 480 100 LoutGraphic
-gsave
-0.5 pt ltabhsp
-grestore
-
-grestore
-gsave
-9341 -144 translate
-400 fnt82 360 144 0 144 400 480 100 LoutGraphic
-gsave
-0.5 pt ltabvs
-grestore
-
-grestore
-gsave
-9341 -488 translate
-400 fnt82 360 344 0 159 400 480 100 LoutGraphic
-gsave
-0.5 pt ltabvs
-grestore
-
-grestore
-gsave
-9341 -632 translate
-400 fnt82 360 144 0 0 400 480 100 LoutGraphic
-gsave
-0.5 pt ltabvs
-grestore
-
-grestore
-gsave
-0 -776 translate
-400 fnt82 0 144 0 144 400 480 100 LoutGraphic
-gsave
-0.5 pt ltabvs
-grestore
-
-grestore
-gsave
-0 -632 translate
-400 fnt82 226 0 0 0 400 480 100 LoutGraphic
-gsave
-0.5 pt ltabhd
-grestore
-
-grestore
-gsave
-0 -1867 translate
-400 fnt82 0 1091 0 480 400 480 100 LoutGraphic
-gsave
-0.5 pt ltabvs
-grestore
-
-grestore
-gsave
-0 -2011 translate
-400 fnt82 0 144 0 0 400 480 100 LoutGraphic
-gsave
-0.5 pt ltabvs
-grestore
-
-grestore
-gsave
-226 -632 translate
-400 fnt82 2985 0 0 0 400 480 100 LoutGraphic
-gsave
-0.5 pt ltabhd
-grestore
-
-grestore
-400 fnt83 226 -1475(Quadr)m 6(atic)k
-1955(formula)s gsave
-3211 -632 translate
-400 fnt82 226 0 0 0 400 480 100 LoutGraphic
-gsave
-0.5 pt ltabhd
-grestore
-
-grestore
-gsave
-3437 -632 translate
-400 fnt82 226 0 0 0 400 480 100 LoutGraphic
-gsave
-0.5 pt ltabhd
-grestore
-
-grestore
-gsave
-3663 -632 translate
-400 fnt82 4255 0 1260 0 400 480 100 LoutGraphic
-gsave
-0.5 pt ltabhd
-grestore
-
-grestore
-4725(x)s 400 fnt78 5063 -1487(=)m 5418 -1207(-)m
-400 fnt83 5652 -1195(b)m 400 fnt78 5962 -1207(\261)m gsave
-0 -1146 translate
-1.0000 1.3937 scale
-6297 -100(\326)m
-
-grestore
-gsave
-6503 -776 translate
-400 fnt83 1415 0 0 0 400 480 20 LoutGraphic
-gsave
-0 0 moveto xsize 0 lineto 0.03 ft setlinewidth 2 setlinecap stroke
-grestore
-
-grestore
-280 fnt78 6753 -1028(2)m 400 fnt83 6563 -1195(b)m 400 fnt78
-7006 -1207(-)m 7340(4)s 400 fnt83 7548 -1195(ac)m 2500 0 0 0 400 480 20 5418 -1387 LoutGr2
-0 0 moveto xsize 0 lineto 0.05 ft setlinewidth stroke
-grestore
-
-grestore
-400 fnt78
-6467 -1767(2)m 400 fnt83 6677 -1755(a)m gsave
-7918 -632 translate
-400 fnt82 226 0 0 0 400 480 100 LoutGraphic
-gsave
-0.5 pt ltabhd
-grestore
-
-grestore
-gsave
-8144 -776 translate
-400 fnt82 0 144 0 144 400 480 100 LoutGraphic
-gsave
-0.5 pt ltabvs
-grestore
-
-grestore
-gsave
-8144 -632 translate
-400 fnt82 226 0 0 0 400 480 100 LoutGraphic
-gsave
-0.5 pt ltabhd
-grestore
-
-grestore
-gsave
-8144 -1867 translate
-400 fnt82 0 1091 0 480 400 480 100 LoutGraphic
-gsave
-0.5 pt ltabvs
-grestore
-
-grestore
-gsave
-8144 -2011 translate
-400 fnt82 0 144 0 0 400 480 100 LoutGraphic
-gsave
-0.5 pt ltabvs
-grestore
-
-grestore
-gsave
-8370 -632 translate
-400 fnt82 745 0 390 0 400 480 100 LoutGraphic
-gsave
-0.5 pt ltabhd
-grestore
-
-grestore
-400 fnt82 8587 -1477(3)m
-8760(.5)s 226 0 0 0 400 480 100 9115 -632 LoutGr2
-0.5 pt ltabhd
-grestore
-
-grestore
-360 144 0 144 400 480 100 9341 -776 LoutGr2
-0.5 pt ltabvs
-grestore
-
-grestore
-360 1091 0 480 400 480 100 9341 -1867 LoutGr2
-0.5 pt ltabvs
-grestore
-
-grestore
-360 144 0 0 400 480 100 9341 -2011 LoutGr2
-0.5 pt ltabvs
-grestore
-
-grestore
-0 144 0 144 400 480 100 0 -2155 LoutGr2
-0.5 pt ltabvs
-grestore
-
-grestore
-0 863 0 449 400 480 100 0 -3018 LoutGr2
-0.5 pt ltabvs
-grestore
-
-grestore
-0 144 0 0 400 480 100 0 -3162 LoutGr2
-0.5 pt ltabvs
-grestore
-
-grestore
-226 0 0 0 400 480 100 0 -3162 LoutGr2
-0.5 pt ltabhsp
-grestore
-
-grestore
-400 fnt83 226 -2657(Binomial)m 1791(theor)s 14(em)k
-gsave
-226 -3162 translate
-400 fnt82 2985 0 0 0 400 480 100 LoutGraphic
-gsave
-0.5 pt ltabhs
-grestore
-
-grestore
-gsave
-3211 -3162 translate
-400 fnt82 226 0 0 0 400 480 100 LoutGraphic
-gsave
-0.5 pt ltabhs
-grestore
-
-grestore
-gsave
-3437 -3162 translate
-400 fnt82 226 0 0 0 400 480 100 LoutGraphic
-gsave
-0.5 pt ltabhs
-grestore
-
-grestore
-400 fnt78 3663 -2669(\()m 400 fnt83 3803 -2657(a)m 400 fnt78
-4114 -2669(+)m 400 fnt83 4449 -2657(b)m 280 fnt83 4770 -2463(n)m
-400 fnt78 4659 -2669(\))m 5063(=)s 336 fnt78 5549 -2290(\245)m
-520 fnt78 5484 -2699(\345)m 280 fnt83 5418 -3005(k)m 280 fnt78
-5588 -3014(=)m 5780(0)s gsave
-0 -2560 translate
-1.0000 2.3652 scale
-400 fnt78 5932 -100(\()m
-grestore
-400 fnt83
-6112 -2417(n)m 6115 -2893(k)m gsave
-0 -2560 translate
-1.0000 2.3652 scale
-400 fnt78 6362 -100(\))m
-grestore
-280 fnt83
-6684 -2501(k)m 400 fnt83 6493 -2657(a)m 280 fnt83 7022 -2488(n)m
-280 fnt78 7194 -2497(-)m 280 fnt83 7383 -2488(k)m 400 fnt83
-6832 -2657(b)m gsave
-3663 -3162 translate
-400 fnt82 4255 0 1260 0 400 480 100 LoutGraphic
-gsave
-0.5 pt ltabhs
-grestore
-
-grestore
-gsave
-7918 -3162 translate
-400 fnt82 226 0 0 0 400 480 100 LoutGraphic
-gsave
-0.5 pt ltabhs
-grestore
-
-grestore
-gsave
-8144 -2155 translate
-400 fnt82 0 144 0 144 400 480 100 LoutGraphic
-gsave
-0.5 pt ltabvs
-grestore
-
-grestore
-gsave
-8144 -3018 translate
-400 fnt82 0 863 0 449 400 480 100 LoutGraphic
-gsave
-0.5 pt ltabvs
-grestore
-
-grestore
-gsave
-8144 -3162 translate
-400 fnt82 0 144 0 0 400 480 100 LoutGraphic
-gsave
-0.5 pt ltabvs
-grestore
-
-grestore
-gsave
-8144 -3162 translate
-400 fnt82 226 0 0 0 400 480 100 LoutGraphic
-gsave
-0.5 pt ltabhs
-grestore
-
-grestore
-400 fnt82 8370 -2659(12)m 745 0 390 0 400 480 100 8370 -3162 LoutGr2
-0.5 pt ltabhs
-grestore
-
-grestore
-226 0 0 0 400 480 100 9115 -3162 LoutGr2
-0.5 pt ltabhsp
-grestore
-
-grestore
-360 144 0 144 400 480 100 9341 -2155 LoutGr2
-0.5 pt ltabvs
-grestore
-
-grestore
-360 863 0 449 400 480 100 9341 -3018 LoutGr2
-0.5 pt ltabvs
-grestore
-
-grestore
-360 144 0 0 400 480 100 9341 -3162 LoutGr2
-0.5 pt ltabvs
-grestore
-
-grestore
-
-grestore
-
-grestore
-
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 31 31
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-400 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 12588 0 12588 400 480 100 1417 -14005 LoutGr2
-1 LoutMargSet
-grestore
-160 fnt82 0 12479(lout)m 8922(31)s 400 fnt84 3123 11382(P)m 4(ascal)k
-4297(pr)s 7(ograms)k 360 fnt35 800 9651(@SysInclude { pas })m 800 9171(...)m
-800 8691(@ID @P)m 14(as {)k 800 8211(procedure DoPr)m -5(iAbstr)k 3(act\(root:)k 18( Pr)k -5(iEntr)k -10(y\);)k
-800 7731(begin)m 800 7251( if root^.leftchild <> nil then begin)m 800 6771( DoPr)m -5(iAbstr)k 3(act\(root^.leftchild\);)k
-800 6291( wr)m -5(ite\(', '\);)k 800 5811( end;)m 800 5331( Pr)m -5(iK)k 14(e)k 7(yAbstr)k 3(act\(root^.k)k 7(e)k 7(y\);)k
-800 4851( wr)m -5(ite\(':'\);)k 800 4371( Pr)m -5(iV)k 25(alueAbstr)k 3(act\(root^.v)k 9(alue\);)k
-800 3891( if root^.r)m -5(ightchild <> nil then begin)k 800 3411( wr)m -5(ite\(', '\);)k 800 2931( DoPr)m -5(iAbstr)k 3(act\(root^.r)k -5(ightchild\);)k
-800 2451( end;)m 800 1971(end;)m 800 1491(})m
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 32 32
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Times-Italic
-%%+ font Symbol
-/pgsave save def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-%%IncludeResource: font Symbol
-/fnt78 { /Symbol LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-400 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 12588 0 12588 400 480 100 1417 -14005 LoutGr2
-0 LoutMargSet
-grestore
-160 fnt82 0 12479(lout)m 8910(32)s gsave
-0 667 translate
-400 fnt82 8640 10080 1440 8455 400 480 100 LoutGraphic
-gsave
-LoutBox stroke
-grestore
-400 fnt84 1440 8363(pr)m 7(ocedur)k 7(e)k
-400 fnt83 3270 8367(DoPriAbstr)m 6(act)k 400 fnt82 5622 8365(\()m
-400 fnt83 5744 8367(r)m 18(oot)k 400 fnt82 6399 8365(:)m
-400 fnt83 6576 8367(PriEntry)m 400 fnt82 7966 8365(\);)m 400 fnt84
-1440 7883(begin)m 1840 7403(if)m 400 fnt83 2206 7407(r)m 18(oot)k
-320 fnt78 2861 7415(\255)m 400 fnt82 3043 7405(.)m 400 fnt83
-3116 7407(leftc)m 6(hild)k 400 fnt78 4529 7395(\271)m 400 fnt84
-4845 7403(nil)m 5380(then)s 6228(begin)s 400 fnt83 2240 6927(DoPriAbstr)m 6(act)k
-400 fnt82 4592 6925(\()m 400 fnt83 4714 6927(r)m 18(oot)k
-320 fnt78 5369 6935(\255)m 400 fnt82 5551 6925(.)m 400 fnt83
-5624 6927(leftc)m 6(hild)k 400 fnt82 6937 6925(\);)m 400 fnt83
-2240 6447(write)m 400 fnt82 3048 6445(\(',)m 3492('\);)s 400 fnt84
-1840 5963(end)m 400 fnt82 2453 5965(;)m 400 fnt83 1840 5487(PriK)m 14(e)k 12(yAbstr)k 6(act)k
-400 fnt82 4298 5485(\()m 400 fnt83 4420 5487(r)m 18(oot)k
-320 fnt78 5075 5495(\255)m 400 fnt82 5257 5485(.)m 400 fnt83
-5330 5487(k)m 4(e)k 12(y)k 400 fnt82 5838 5485(\);)m
-400 fnt83 1840 5007(write)m 400 fnt82 2648 5005(\(':'\);)m 400 fnt83
-1840 4527(PriV)m 44(alueAbstr)k 6(act)k 400 fnt82 4592 4525(\()m
-400 fnt83 4714 4527(r)m 18(oot)k 320 fnt78 5369 4535(\255)m
-400 fnt82 5551 4525(.)m 400 fnt83 5624 4527(value)m 400 fnt82
-6477 4525(\);)m 400 fnt84 1840 4043(if)m 400 fnt83 2206 4047(r)m 18(oot)k
-320 fnt78 2861 4055(\255)m 400 fnt82 3043 4045(.)m 400 fnt83
-3116 4047(rightc)m 6(hild)k 400 fnt78 4796 4035(\271)m 400 fnt84
-5112 4043(nil)m 5647(then)s 6495(begin)s 400 fnt83 2240 3567(write)m
-400 fnt82 3048 3565(\(',)m 3492('\);)s 400 fnt83 2240 3087(DoPriAbstr)m 6(act)k
-400 fnt82 4592 3085(\()m 400 fnt83 4714 3087(r)m 18(oot)k
-320 fnt78 5369 3095(\255)m 400 fnt82 5551 3085(.)m 400 fnt83
-5624 3087(rightc)m 6(hild)k 400 fnt82 7204 3085(\);)m 400 fnt84
-1840 2603(end)m 400 fnt82 2453 2605(;)m 400 fnt84 1440 2123(end)m
-400 fnt82 2053 2125(;)m
-grestore
-
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 33 33
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-400 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 12588 0 12588 400 480 100 1417 -14005 LoutGr2
-1 LoutMargSet
-grestore
-160 fnt82 0 12479(lout)m 8917(33)s 400 fnt84 3304 11376(Basic)m
-4308(graphics)s 360 fnt35 800 9645(45d @Rotate 1.5 @Scale @Bo)m 10(x {)k 800 9165( Hello)m 14(, w)k 3(or)k -5(ld)k
-800 8685(})m
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 34 34
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Helvetica
-/pgsave save def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-400 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 12588 0 12588 400 480 100 1417 -14005 LoutGr2
-0 LoutMargSet
-grestore
-160 fnt82 0 12479(lout)m 8910(34)s gsave
-0 667 translate
-400 fnt82 8640 10080 1440 8640 400 480 100 LoutGraphic
-gsave
-LoutBox stroke
-grestore
-gsave
-2528 5722 translate
-45.0000 rotate
-gsave
-0 0 translate
-1.5000 1.5000 scale
-gsave
-0 -254 translate
-360 fnt35 2027 526 108 254 360 480 100 LoutGraphic
-gsave
-LoutBox stroke
-grestore
-108 161(Hello)m 14(,)k
-1080(w)s 3(or)k -5(ld)k
-grestore
-
-grestore
-
-grestore
-
-grestore
-
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 35 35
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-400 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 12588 0 12588 400 480 100 1417 -14005 LoutGr2
-1 LoutMargSet
-grestore
-160 fnt82 0 12478(lout)m 8915(35)s 400 fnt84 2908 11375(Adv)m 4(anced)k
-4704(graphics)s 360 fnt35 800 9644(@SysInclude { \207g })m 800 9164(...)m 800 8684(@Fig {)m
-800 8204(@Bo)m 10(x)k 800 7724( margin { 0c })m 800 7244( paint { b)m 7(lac)k 7(k })k
-800 6764(@Ellipse)m 800 6284( linestyle { noline })m 800 5804( paint { white })m 800 5324({ Hello)m 14(, w)k 3(or)k -5(ld })k
-800 4844(})m
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 36 36
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-/pgsave save def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-400 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 12588 0 12588 400 480 100 1417 -14005 LoutGr2
-0 LoutMargSet
-grestore
-160 fnt82 0 12479(lout)m 8911(36)s gsave
-0 667 translate
-400 fnt82 8640 10080 1440 8231 400 480 100 LoutGraphic
-gsave
-LoutBox stroke
-grestore
-5760 781 226 372 400 480 100 1440 7859 LoutGr2
-grestore save gsave 200 dict begin lfigdict begin
-grestore
-2442 781 226 372 400 480 100 0 0 LoutGr2
-/lfigblack [ lfigbox ] gsave lfigpaintpath grestore
-0.5 pt setlinewidth lfiground setlinecap
-0.15 cm /lfigsolid [ lfigbox ] lfigdopath
-pop pop
-grestore
-2442 781 226 372 400 480 100 0 0 LoutGr2
-/lfigwhite [ lfigellipse ] gsave lfigpaintpath grestore
-0.5 pt setlinewidth lfiground setlinecap
-0.15 cm /lfignoline [ lfigellipse ] lfigdopath
-pop pop
-grestore
-226 282(Hello,)m 1291(w)s 4(orld)k
-
-grestore
-
-grestore
-end end restore
-grestore
-
-grestore
-
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 37 37
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-400 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 12588 0 12588 400 480 100 1417 -14005 LoutGr2
-1 LoutMargSet
-grestore
-160 fnt82 0 12479(lout)m 8914(37)s 400 fnt84 3302 11376(P)m 8(oint)k
-4304(labelling)s 360 fnt35 800 9645(@Fig {)m 800 9165(A::)m 800 8685({)m
-800 8205( 1::)m 18( @Ellipse { 3c @Wide 2c @High })k 800 7725( //3c)m 800 7245( 2::)m 18( @Bo)k 10(x { 3c @Wide 2c @High })k
-800 6765(})m 800 6285(@Sho)m 5(wLabels)k 800 5805(})m
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 38 38
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-/pgsave save def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-400 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 12588 0 12588 400 480 100 1417 -14005 LoutGr2
-0 LoutMargSet
-grestore
-160 fnt82 0 12479(lout)m 8914(38)s gsave
-0 667 translate
-400 fnt82 8640 10080 1440 8414 400 480 100 LoutGraphic
-gsave
-LoutBox stroke
-grestore
-5760 4873 0 4647 400 480 100 1440 3767 LoutGr2
-grestore save gsave 200 dict begin lfigdict begin
-grestore
-2153 4873 0 4647 400 480 100 0 0 LoutGr2
-currentdict end 200 dict begin begin
-grestore
-2153 1586 226 1360 400 480 100 0 3287 LoutGr2
-currentdict end 200 dict begin begin
-grestore
-2153 1586 226 1360 400 480 100 0 0 LoutGr2
-
-0.5 pt setlinewidth lfiground setlinecap
-0.15 cm /lfigsolid [ lfigellipse ] lfigdopath
-pop pop
-grestore
-
-grestore
-(1) lfigpromotelabels
-grestore
-2153 1586 226 1360 400 480 100 0 0 LoutGr2
-currentdict end 200 dict begin begin
-grestore
-2153 1586 226 1360 400 480 100 0 0 LoutGr2
-
-0.5 pt setlinewidth lfiground setlinecap
-0.15 cm /lfigsolid [ lfigbox ] lfigdopath
-pop pop
-grestore
-
-grestore
-(2) lfigpromotelabels
-grestore
-(A) lfigpromotelabels
-grestore
-3507 4873 0 4647 400 480 100 2253 0 LoutGr2
-lfigshowlabels
-grestore
-
-grestore
-end end restore
-grestore
-
-grestore
-
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 39 39
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-400 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 12588 0 12588 400 480 100 1417 -14005 LoutGr2
-1 LoutMargSet
-grestore
-160 fnt82 0 12479(lout)m 8912(39)s 400 fnt84 3895 11375(Graphs)m
-340 fnt35 800 9035(@Gr)m 3(aph)k 800 8555( abo)m 5(v)k 8(ecaption { Ne)k 6(w South )k 13(W)k 13(ales road deaths)k
-800 8075(\(per 100 million v)m 8(ehicle km\) })k 800 7595({)m 800 7115( @Data points { plus } pairs { dashed })m 800 6635( { 1963 5.6 1971 4.3 1976 3.7 1979 3.4)m
-800 6155( 1982 2.9 1985 2.3 1988 2.0 })m 800 5675(})m
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 40 40
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-/pgsave save def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-400 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 12588 0 12588 400 480 100 1417 -14005 LoutGr2
-0 LoutMargSet
-grestore
-160 fnt82 0 12479(lout)m 8909(40)s gsave
-0 667 translate
-400 fnt82 8640 10080 1440 8640 400 480 100 LoutGraphic
-gsave
-LoutBox stroke
-grestore
-1631 8367(Ne)m 10(w)k
-2463(South)s 3491(W)s 32(ales)k 4540(road)s 5347(deaths)s
-1717 7887(\(per)m 2460(100)s 3151(million)s 4400(v)s 6(ehicle)k
-5639(km\))s 5103 3402 0 3402 400 480 100 1440 4116 LoutGr2
-grestore
-
-gsave xsize ysize lgraphdict begin /ysize exch def /xsize exch def
-/alldata [ [ [ 1963 5.6 1971 4.3 1976 3.7 1979 3.4 1982 2.9 1985 2.3 1988 2.0 ] xandy
-{ plus }
-{ ilinesetup dashed }
-{ /dashlength 0.2 ft def
- /linewidth currentlinewidth def
- /symbolsize 0.15 ft def }
-{ false }
-] ] def
-0 [ false ] 0 alldata false false 0
-0.5 cm false false 0.5 ft xset
-0 [ false ] 1 alldata false false 0
-0.5 cm false false 0.5 ft yset
-norset
-rundata framestyle
-grestore
-end
-
-grestore
-
-grestore
-
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 41 41
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Helvetica
-/pgsave save def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-400 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 12588 0 12588 400 480 100 1417 -14005 LoutGr2
-1 LoutMargSet
-grestore
-160 fnt82 0 12479(lout)m 8922(41)s 360 fnt35 800 10484(-2p @F)m 10(ont @Gr)k 3(aph)k
-800 10004( style { ax)m 10(es })k 800 9524( xor)m -5(igin { 0 } y)k 7(or)k -5(igin { 0 })k
-800 9044( xtic)m 7(ks { 10@ 50@ 100@ 200@ 500@ })k 800 8564( objects { @NE at { 300 2 } @I { Exponential })m 800 8084( @SE at { ...)m 21( } @I { Unif)k 10(or)k -9(m } })k
-800 7604( belo)m 5(wcaption { @I n })k 800 7124({)m 800 6644( @Data points { \207lledcircle } { ...)m 21( })k
-800 6164( @Data points { \207lledcircle } { ...)m 21( })k 800 5204( @Data pairs { dashed })m 800 4724( { 10 2 500 2 })m 800 3764( @Data pairs { dashed })m
-800 3284( {)m 800 2804( xloop from { 10 } to { 500 } b)m 7(y { 20 } do)k 800 2324( {)m 800 1844( x sqr)m -14(t { pi*x / 4 } + 1)k
-800 1364( })m 800 884( })m 800 404(})m
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 42 42
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Italic
-/pgsave save def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-400 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 12588 0 12588 400 480 100 1417 -14005 LoutGr2
-0 LoutMargSet
-grestore
-160 fnt82 0 12479(lout)m 8910(42)s gsave
-0 668 translate
-400 fnt82 8640 10080 1440 8640 400 480 100 LoutGraphic
-gsave
-LoutBox stroke
-grestore
-gsave
-1440 4671 translate
-360 fnt82 5670 3969 0 3969 360 480 90 LoutGraphic
-gsave
-grestore
-
-gsave xsize ysize lgraphdict begin /ysize exch def /xsize exch def
-/alldata [ [ [ 10 1.97 50 2.01 100 2.00 200 2.0 500 2.00 ] xandy
-{ filledcircle }
-{ }
-{ /dashlength 0.2 ft def
- /linewidth currentlinewidth def
- /symbolsize 0.15 ft def }
-{ false }
-]
-[ [ 10 3.53 50 7.45 100 9.32 200 13.41 500 21.63 ] xandy
-{ filledcircle }
-{ }
-{ /dashlength 0.2 ft def
- /linewidth currentlinewidth def
- /symbolsize 0.15 ft def }
-{ false }
-]
-[ [ 10 2 500 2 ] xandy
-{ }
-{ linesetup cdashed }
-{ /dashlength 0.2 ft def
- /linewidth currentlinewidth def
- /symbolsize 0.15 ft def }
-{ false }
-]
-[ [ 10 20 500 { /xval exch def xval 3.14159 xval mul 4 div sqrt 1 add } for ] xandy
-{ }
-{ linesetup cdashed }
-{ /dashlength 0.2 ft def
- /linewidth currentlinewidth def
- /symbolsize 0.15 ft def }
-{ false }
-] ] def
-0 [ 10 lgen 50 lgen 100 lgen 200 lgen 500 lgen ] 0 alldata false false 0
-0 false 0 0.5 ft xset
-0 [ false ] 1 alldata false false 0
-0 false 0 0.5 ft yset
-norset
-rundata axesstyle
-grestore
-1953 535 0 535 360 480 90 0 -535 LoutGr2
-300 2 trpoint translate 0 ysize translate gsave
-grestore
-360 fnt83 108 182(Exponential)m
-grestore
-grestore
-1428 533 0 533 360 480 90 0 -533 LoutGr2
-300 3.14159 300 4 div mul sqrt 1 add trpoint translate 0 0 translate gsave
-grestore
-360 fnt83 108 182(Uniform)m grestore
-grestore
-end
-
-grestore
-360 fnt83 4189 3901(n)m
-grestore
-
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Trailer
-%%DocumentNeededResources: font Helvetica
-%%+ font Helvetica-Oblique
-%%+ font Symbol
-%%+ font Times-Roman
-%%+ font Times-Italic
-%%+ font Times-Bold
-%%DocumentSuppliedResources: procset LoutStartUp
-%%+ procset LoutTabPrependGraphic
-%%+ procset LoutFigPrependGraphic
-%%+ procset LoutGraphPrependGraphic
-%%+ procset LoutBasicSetup
-%%+ encoding vec2
-%%Pages: 42
-%%EOF
diff --git a/doc/user/README b/doc/user/README
index fd69ccb..2363b0c 100644
--- a/doc/user/README
+++ b/doc/user/README
@@ -16,9 +16,9 @@ nearly all beginning with "unresolved cross reference". These
should gradually go away on later runs. The following shows the
error message output on the fifth run for A4 size printing:
-lout file "cpp_tabs" (from "cpp" line 24, from "all" line 38):
- 53,23: c2lout: C text ended inside a comment
- 55,35: c2lout: C text ended inside a comment
+lout file "cpp_tabs" (from "cpp" line 80, from "all" line 45):
+ 56,23: prg2lout 2,1: program text ended within comment
+ 58,35: prg2lout 2,1: program text ended within comment
These two warnings point to two places where a C program text ended
inside a comment, which in these cases was deliberate so is no problem.
@@ -31,7 +31,7 @@ repeated failure to converge, caused by footnotes and floating figures
close to large unbreakable displays.
A copy of the final PostScript output file (A4 paper size) is
-stored at "ftp://ftp.cs.su.oz.au/jeff/lout/lout.3.17.user.ps.gz".
+stored at "ftp://ftp.cs.su.oz.au/jeff/lout/lout-3.18.user.ps.gz".
Jeffrey H. Kingston
-17 September 1999
+23 February 2000
diff --git a/doc/user/all b/doc/user/all
index 1b131f6..ef7fcdf 100644
--- a/doc/user/all
+++ b/doc/user/all
@@ -6,6 +6,7 @@
@SysInclude { pas }
@SysInclude { diag }
@SysInclude { cprint }
+@SysInclude { eiffel }
@SysInclude { book }
# @Include { letterbook } # for testing Letter size formatting
@@ -19,10 +20,10 @@ Lout
Document Formatting System
}
@Author { Jeffrey H. Kingston }
- @Edition { Version 3.17
-September, 1999 }
+ @Edition { Version 3.18
+February, 2000 }
@Publisher {
-Copyright @CopyRight 1991, 1999 Jeffrey H. Kingston,
+Copyright @CopyRight 1991, 2000 Jeffrey H. Kingston,
Basser Department of Computer Science,
The University of Sydney 2006, Australia. ISBN 0 86758 951 5.
}
diff --git a/doc/user/ap_qck b/doc/user/ap_qck
index 92ea7ad..092673d 100644
--- a/doc/user/ap_qck
+++ b/doc/user/ap_qck
@@ -56,8 +56,8 @@
" @PageHeaders { Simple }"
" @FirstPageNumber { 1 }"
" @ColumnNumber { 1 }"
+" @Abstract { ... }"
"//"
-"@Abstract ... @End @Abstract"
"@Section ... @End @Section"
"@Appendix ... @End @Appendix"
}
diff --git a/doc/user/bas_lang b/doc/user/bas_lang
index 3b32a94..01fbf2d 100644
--- a/doc/user/bas_lang
+++ b/doc/user/bas_lang
@@ -45,6 +45,7 @@ Hungarian Magyar
Italian Italiano
Norwegian Norsk
Polish Polski
+Portuguese Português
Russian
Slovenian Slovenia Slovenija
Spanish Espa{@Char ntilde}ol
diff --git a/doc/user/bgr b/doc/user/bgr
index 9452ff0..86e0af4 100644
--- a/doc/user/bgr
+++ b/doc/user/bgr
@@ -10,6 +10,7 @@ get them.
@BeginSections
@Include { bgr_colo }
@Include { bgr_boxs }
+@Include { bgr_outl }
@Include { bgr_rota }
@Include { bgr_scal }
@Include { bgr_incl }
diff --git a/doc/user/bgr_outl b/doc/user/bgr_outl
new file mode 100644
index 0000000..af11eb1
--- /dev/null
+++ b/doc/user/bgr_outl
@@ -0,0 +1,16 @@
+@Section
+ @Title { Outlined words }
+ @Tag { outline }
+@Begin
+@PP
+The @@Outline symbol
+outline.sym @Index { @@Outline symbol }
+causes all the words in the following object (which may be
+arbitrary as usual) to be printed in outline. For example,
+@ID @Code @Verbatim { @Outline @Box 24p @Font HELP }
+produces
+@ID @Outline @Box 24p @Font HELP
+There is no way to control the thickness of the outline, and
+@@Outline has no effect in PDF output. On the other hand,
+it works with any font likely to be used in practice.
+@End @Section
diff --git a/doc/user/cpp b/doc/user/cpp
index 9b413ed..0e7748a 100644
--- a/doc/user/cpp
+++ b/doc/user/cpp
@@ -1,27 +1,86 @@
@Chapter
- @Title { C and C++ Programs }
+ @Title { Computer Programs }
@Tag { cprint }
@Begin
@LP
-This chapter describes how to typeset C and C++ program text using the
-cp. @Index @Code "@CP"
-c. @Index { C++ }
-@Code "@CP" symbol in conjunction with the @Code c2lout filter. The
-@Code "@CP" symbol looks after printing keywords in bold, variables
-in italic, and so on, depending on a style you choose. It does not lay
-out programs in the sense of choosing indenting, it preserves the layout
-you give to the program. From now on, `C' means `C or C++' wherever
-it occurs.
+This chapter describes how to typeset computer program text using Lout
+in conjunction with the @Code prg2lout
+prg2lout. @Index { @Code prg2lout filter program }
+@FootNote {
+Prior to Version 3.18 of Lout, this chapter described how to typeset
+programs written in the C programming language using the
+@Code c2lout filter, and Eiffel programs using the @Code eif2lout
+filter. These have now been withdrawn and replaced by {@Code prg2lout},
+which handles multiple languages. Ordinary Lout documents require no
+modifications as a result of this change.
+}
+filter program, which is always installed wherever Lout is.
@PP
-It is possible to simply print out one or more C files; we call this
-@I { stand-alone mode }. Alternatively, the C program text may be printed
-as part of a larger Lout document; we call this @I { embedded mode }.
+It is possible to simply print out one or more program files independently
+of any document. Alternatively, the program text may be printed as part of
+a larger Lout document. Either way, Lout does not lay out the programs in
+the sense of choosing line breaks and indenting; it uses whatever line
+breaks and indenting you give to the program. What Lout does do is cope
+with characters in the program text that it would ordinarily either reject
+or interpret in some way (braces and so on), ensuring that you can include
+program texts with absolutely no modifications; plus, if you wish, Lout
+will print keywords in bold, identifiers in italics, etc.
+@PP
+At the time of writing, the available programming languages are:
+eiffel. @Index { Eiffel program printing }
+c. @Index { C and C++ program printing }
+blue. @Index { Blue program printing }
+@CD @Tbl
+ mv { 0.5vx }
+ af { Italic }
+ arb { yes }
+ aformat { @Cell A | @Cell B | @Cell C | @Cell D | @Cell E }
+ bformat { @Cell A | @Cell @Code B | @Cell @Code C | @Cell @Code D | @Cell E }
+{
+@Rowa
+ A { Language name }
+ B { Setup file name }
+ C { Lout symbol }
+ D { Default style }
+ E { ` ' escapes }
+@Rowb
+ A { C, C++ }
+ B { cprint }
+ C { "@CP" }
+ D { fixed }
+ E { No }
+@Rowb
+ A { Eiffel }
+ B { eiffel }
+ C { "@Eiffel" }
+ D { varying }
+ E { Yes }
+@Rowb
+ A { Blue }
+ B { blue }
+ C { "@Blue" }
+ D { varying }
+ E { Yes }
+}
+C and C++ are handled together since, for formatting purposes, they
+differ only in that C++ has some additional keywords plus an extra
+way to make comments. Whenever we mention C from now on, we mean
+both C and C++. The second to fifth columns of this table will be
+explained at various points later in this chapter.
+@PP
+The list of languages is likely to expand, because the @Code "prg2lout"
+program has been designed to make it easy to add new languages. Consult
+the instructions at the top of the source file of that program if you
+want to try it yourself.
@BeginSections
@Include { cpp_lone }
@Include { cpp_embe }
+@Include { cpp_opti }
@Include { cpp_chan }
-@Include { cpp_comm }
@Include { cpp_tabs }
-@Include { cpp_eiff }
+@Include { cpp_comm }
+@Include { cpp_prog }
+@Include { cpp_pipe }
+@Include { cpp_erro }
@EndSections
@End @Chapter
diff --git a/doc/user/cpp_chan b/doc/user/cpp_chan
index ddedd51..bee0493 100644
--- a/doc/user/cpp_chan
+++ b/doc/user/cpp_chan
@@ -1,27 +1,28 @@
@Section
- @Title { Changing the default values }
+ @Title { Changing the appearance of all programs simultaneously }
@Tag { cpsetup }
@Begin
@PP
-We have just seen that the @Code "@CP" symbol has many options for
-changing the appearance of the C text. However, most people would
-not want to have a different style for every C text in their document;
-they want to define the style once at the start, and have all their
-C texts come out in that style without laboriously setting options
-on every @Code "@CP" symbol. This is done by copying the setup file
-and changing it.
+We have just seen that the {@Code "@CP"}, {@Code "@Eiffel"} etc. symbols
+have many options for changing the appearance of the program text. However,
+most people would not want to have a different style for every program text
+in their document; they want to define the style once at the start, and have
+all their program texts come out in that style without laboriously setting
+options on every symbol. You do this by copying the setup file and
+changing it.
@PP
For general information about how to make your own setup file, consult
Section {@NumberOf setup}. The options that determine the default
-values are in the @Code "@CPSetup" @Code "@Use" clause near the end of
+values are in the @Code "@Use" clause which occupies most of the setup
+file. Here is the @Code "@Use" clause from {@Code cprint}:
cprint. @Index @Code "@CPSetup"
-the @Code "cpsetup." setup file:
-@ID @Code @Tab
- vmargin { 0.5vx }
- @Fmta { @Col A ! @Col B ! @Col C}
- @Fmtb { @Col { " #" A } ! @Col { "{" B } ! @Col "}" }
+@ID @Code @Tbl
+ mv { 0.5vx }
+ aformat { @Cell A | @Cell B | @Cell C }
+ bformat { @Cell { " #" A } | @Cell { "{" B } | @Cell "}" }
{
@Rowa A { "@Use { @CPSetup" }
+@Rowb A { "pipe" } B { }
@Rowb A { "style" } B { fixed }
@Rowa
@@ -65,13 +66,13 @@ the @Code "cpsetup." setup file:
@Rowa A { "}" }
}
-These show the default font families, font faces, font sizes, line
+This shows the default font families, font faces, font sizes, line
spacings, and tab settings in force for the three styles, and also that
the default style is {@Code "fixed"}. Notice that the font family name
for @Code "fixed" style is {@Code "Courier"}, but for the other styles is
empty. This causes the @Code "fixed" style to always switch to Courier,
and the other styles to use the same font family as in the surrounding
-document.
+document. The @Code pipe option will be explained in Section {@NumberOf pipes}.
@PP
To change a default value, delete the preceding @Code "#" and change the
part between braces. For example, suppose you are happy with @Code "fixed"
@@ -80,4 +81,11 @@ except that you want bold keywords. Then one line needs to be changed, to
Or suppose you like @Code "varying" as it stands, but would like it to be
the default style rather than {@Code "fixed"}. Again, only one line needs
to be changed, to {@Code "style { varying }"}.
+@PP
+The setup files for the other languages are identical to this one, except
+that the symbol after @Code "@Use" is different, and some of the
+default values may be different. Changing an option affects only the
+language of that setup file; if you have multiple languages you can
+have multiple setup files and change their options quite independently
+of each other.
@End @Section
diff --git a/doc/user/cpp_comm b/doc/user/cpp_comm
index f877c06..96ac110 100644
--- a/doc/user/cpp_comm
+++ b/doc/user/cpp_comm
@@ -1,20 +1,27 @@
@Section
- @Title { Lout inside C comments }
+ @Title { Embedding Lout commands within program comments }
@Tag { cpcomm }
@Begin
@PP
-It is possible to embed Lout text inside C and C++ comments, by
-starting off the comment with an @Code "@" character. The entire
-comment after the @Code "@" character should be Lout text. For
-example, to force Lout to start a new page at some point within a C
-program, place
+It is possible to embed Lout text inside program comments. How this
+is done could in principle vary from language to language, but in
+every language supported so far it is done by starting off the comment
+with an @Code "@" character. If the language has several ways to get
+a comment, this will work every way. The entire comment after the @Code "@"
+character should then be Lout text. For example, to force Lout to start
+a new page at some point within a C program, place
@ID @Code "/*@ @NP */"
-at that point. Or you could make a heading like this:
-@ID @Code "/*@ @Display @Heading { treeprint() } */"
-Other possible uses for this feature include index entries and margin
-notes. Incredible as it may seem, you can even write
+at that point. (In this case you can also simply include a formfeed
+formfeed. @Index { formfeed in program texts }
+character, control-L, without any comment; whatever the language, a formfeed
+in program text is taken to be a request to start a new page.) Or, to
+make a heading in an Eiffel program, do this:
+@ID @Code "--@ @Display @Heading { treeprint() }"
+(Eiffel comments begin with @Code "--" and end at the end of the
+line.) Other possible uses for this feature include index entries and
+margin notes. Incredible as it may seem, you can even write
@ID @Code "/*@ @CD @Heading { Function @CP { treeprint() } } */"
with a @Code "@CP" symbol and some C code inside the Lout code
-inside the C code. You probably can't go further, however, since
-that would require a C comment inside a C comment.
+inside the C code. You probably can't go further, however, at least
+not in C, since that would require a C comment inside a C comment.
@End @Section
diff --git a/doc/user/cpp_eiff b/doc/user/cpp_eiff
deleted file mode 100644
index d0ec6df..0000000
--- a/doc/user/cpp_eiff
+++ /dev/null
@@ -1,42 +0,0 @@
-@Section
- @Title { Eiffel program printing }
- @Tag { eiffel }
-@Begin
-@PP
-There is an @Code "@Eiffel" symbol for typesetting Eiffel programs
-in conjuction with a filter called {@Code "eif2lout"}. Apart from
-the change of language, everything is identical to C printing. The
-file and symbol names are different, of course:
-@ID @OneRow @Tab
- vmargin { 0.5vx }
- @Fmta { @Col A ! @Col B }
-{
-@Rowa
- A { @Code cprint }
- B { @Code eiffel }
-@Rowa
- A { @Code c2lout }
- B { @Code eif2lout }
-@Rowa
- A { @Code "@CP" }
- B { @Code "@Eiffel" }
-@Rowa
- A { @Code "@CPSetup" }
- B { @Code "@EiffelSetup" }
-}
-but everything works in an exactly analogous way: you place
-@ID @Code "@SysInclude { eiffel }"
-at the top of your document, enclose Eiffel program texts in
-@Code "@Eiffel { ... }", embed Lout into Eiffel using comments
-beginning with {@Code "--@"}, and so on. The default style has been
-changed to {@Code varying}, so as to conform to the style guidelines
-in the standard Eiffel reference @Cite { $meyer1992eiffel }. Some care
-has gone into making this conformance strict; in particular, if you
-enclose identifiers within comments in ` and ', as the style guidelines
-say you should, they will come out in italics; in fact, arbitrary text
-between ` and ' within comments will be set as Eiffel code.
-@PP
-The files needed for Eiffel printing are distributed separately from
-Basser Lout. You can get them from the author's @Code ftp directory
-(see the preface of this guide).
-@End @Section
diff --git a/doc/user/cpp_embe b/doc/user/cpp_embe
index 8ca2dfc..0cefc84 100644
--- a/doc/user/cpp_embe
+++ b/doc/user/cpp_embe
@@ -1,11 +1,11 @@
@Section
- @Title { Embedded mode }
+ @Title { Typesetting computer programs as part of a larger document }
@Tag { embedded }
@Begin
@PP
-When the C program texts are to be embedded in a larger Lout document,
-the procedure is somewhat different. You need to include the
-@Code "cprint" setup file, like this:
+When the program texts are to be part of a larger Lout document,
+the procedure is somewhat different. You need to include the setup file
+appropriate to your language, like this:
@ID @OneRow @Code {
"@SysInclude { cprint }"
"@SysInclude { doc }"
@@ -13,9 +13,13 @@ the procedure is somewhat different. You need to include the
"..."
"@End @Text"
}
-This file includes everything needed to set up for C program formatting.
+The @Code cprint setup file includes everything needed to set up for C
+program formatting; for the other languages, consult the second column
+of the table at the start of this chapter.
@PP
-The C parts of the document are enclosed in @Code "@CP { ... }" like this:
+The program texts within the Lout document are enclosed in braces
+preceded by the Lout symbol from the third column of the table, like
+this for the C language:
@ID @OneRow @Code {
"@IndentedDisplay @CP {"
"#include <stdio.h>"
@@ -31,9 +35,10 @@ The C parts of the document are enclosed in @Code "@CP { ... }" like this:
"}"
"}"
}
-Although C programs violate the rules of legal Lout input in many ways,
-these rules are suspended by the @Code "@CP" symbol, allowing the C
-text to be incorporated with absolutely no modifications. The result is
+Although computer programs violate the rules of legal Lout input in many ways,
+these rules are suspended by the {@Code "@CP"}, {@Code "@Eiffel"} etc. symbols,
+allowing the program text to be incorporated with absolutely no
+modifications. The result is
@ID @OneRow @CP {
#include <stdio.h>
@@ -49,104 +54,29 @@ struct tnode *p;
}
We have chosen to use the @Code "@IndentedDisplay" symbol from Section
{@NumberOf displays} to obtain an indented display, but in fact
-@Code "@CP" may appear anywhere at all. When including a C text within
-a paragraph, use @Code "@OneCol @CP { ... }" to prevent it being broken
-across two lines, if desired.
+{@Code "@CP"}, {@Code "@Eiffel"} and the rest may appear anywhere at
+all: the result is an object in the usual way, which may go
+anywhere. When including a program text within a paragraph, use
+@Code "@OneCol @CP { ... }" (or @Code "@OneCol @Eiffel { ... }" etc. for
+other languages) to prevent it being broken across two lines, if desired.
@PP
-In cases where the C text has unbalanced braces, it is necessary to
-use the alternative form @Code "@CP @Begin ... @End @CP" so that
-Lout does not confuse C braces with Lout braces.
+In cases where the program text has unbalanced braces, it is necessary to
+use the alternative form @Code "@CP @Begin ... @End @CP" (or the
+equivalent for other languages), so that Lout does not confuse program
+braces with Lout braces. In that case the program text must not
+contain {@Code "@End"}; and in either case the program text must not
+include @Code "@Include" or @Code "@SysInclude" unless you are really
+including a file at that point (which is allowed, and follows the
+rules given for @Code "@Verbatim" in Section {@NumberOf verbatim}).
@PP
-The @Code "@CP" symbol has a @Code "style" option for changing the
-printing style. The default value of @Code "style" is {@Code "fixed"},
-which produces the style shown above. To obtain a varying-width font
-style, use @Code "style { varying }" like this:
-@ID @OneRow @Code {
-"@CP"
-" style { varying }"
-"{"
-"#include <stdio.h>"
-""
-"treeprint(p) /* print tree p recursively */"
-"struct tnode *p;"
-"{"
-" if (p != NULL) {"
-" treeprint(p->left);"
-" printf(\"%4d %s\\n\", p->count, p->word);"
-" treeprint(p->right);"
-" }"
-"}"
-"}"
-}
-The result in this case will be
-@ID @OneRow @CP style { varying }
-{
-#include <stdio.h>
-
-treeprint(p) /* print tree p recursively */
-struct tnode *p;
-{
- if (p != NULL) {
- treeprint(p->left);
- printf("%4d %s\n", p->count, p->word);
- treeprint(p->right);
- }
-}
-}
-There is also a third style called @Code "style { symbol }" which is
-similar to @Code "varying" except that it uses characters from the
-Adobe Symbol font to produce a more mathematical-looking result:
-@ID @OneRow @CP style { symbol }
-{
-#include <stdio.h>
-
-treeprint(p) /* print tree p recursively */
-struct tnode *p;
-{
- if (p != NULL) {
- treeprint(p->left);
- printf("%4d %s\n", p->count, p->word);
- treeprint(p->right);
- }
-}
-}
-The @Code "@CP" symbol has additional options which allow a finer
-control over the style. Here they all are, with their default values:
-@ID @OneRow @Code {
-"@CP"
-" style { fixed }"
-" font { Courier }"
-" strings { Base }"
-" identifiers { Base }"
-" comments { Base }"
-" keywords { Base }"
-" numbers { Base }"
-" operators { Base }"
-" size { -1.0p }"
-" line { 1.0vx }"
-" tabin { 8 }"
-" tabout { 8s }"
-"{"
-" ..."
-"}"
-}
-We are already familiar with {@Code "style"}. After that comes
-{@Code "font"}, which determines the font family to use, followed
-by six options giving the particular faces within that family in which to
-print C strings, identifiers, comments, keywords, numbers, and
-operators. {@Code "Base"} means the basic face; other commonly available
-choices are {@Code "Slope"} and {@Code "Bold"}. These options may all be
-set to different faces if desired. The default values shown are correct
-for @Code "style { fixed }" only; the other styles have other defaults
-(Section {@NumberOf cpsetup}).
-@PP
-The @Code "size" option is the font size to use, and @Code "line" is the
-inter-line spacing. The default values specify that @Code "size" is
-to be one point smaller than in the surrounding document; this was done
-to compensate for Courier's relatively large appearance compared
-to other fonts of the same nominal size. Again, these defaults are
-different for different values of {@Code "style"}.
-@PP
-The @Code "tabin" and @Code "tabout" options are the subject of
-Section {@NumberOf tabs}.
+If your Lout document contains program texts in several languages,
+simply add one @Code "@SysInclude" line for each of them and proceed
+as before. If your programming language is not currently supported,
+a viable alternative is
+@ID @Code "@F @Verbatim { ... }"
+These symbols cause the text between braces to be set verbatim in
+a fixed-width font, as explained elsewhere in this guide. This fallback
+method will not handle tab and formfeed characters very well. Again,
+use @Code "@Begin" and @Code "@End @Verbatim" instead of braces if
+your program text contains unbalanced braces.
@End @Section
diff --git a/doc/user/cpp_erro b/doc/user/cpp_erro
new file mode 100644
index 0000000..ff89591
--- /dev/null
+++ b/doc/user/cpp_erro
@@ -0,0 +1,39 @@
+@Section
+ @Title { Error messages }
+ @Tag { cpp_erro }
+@Begin
+@PP
+In order to understand the error messages produced by program
+printing, it is necessary to understand that Lout's first step when
+given a program text is to pass it to the separate {@Code prg2lout}
+program for analysis. This separate program is the source of most
+of the error messages associated with program printing.
+@PP
+The {@Code prg2lout} program is quite happy to format a fragment of a
+computer program: there is no need to supply a complete routine, or
+a complete statement, or any such thing. However, it will complain if
+you supply only a fragment of one lexical unit, such as a comment or
+string without its terminating delimiter. It will also complain if
+there is a character that cannot be classified as part of an identifier,
+number, etc. according to the rules of the language as they have been
+given to @Code prg2lout by the implementer. Irrespective of the
+language rules, @Code prg2lout always interprets spaces, tabs, newlines,
+and formfeed characters in the usual way.
+@PP
+If an error message is generated by {@Code prg2lout}, it will contain
+a line and column number counting from the start of the program text
+involved. Lout will precede this error message with a file name,
+line number, and column number pointing to the Lout symbol
+({@Code "@CP"}, {@Code "@Eiffel"} etc.) whose program text caused the
+error message, like this:
+@ID @Code @Verbatim {
+lout file "cpp_tabs" (from "cpp" line 80, from "all" line 45):
+ 56,23: prg2lout 2,1: program text ended within comment
+}
+This is an actual message produced when formatting this chapter. The
+program text in question has only one line, containing an incomplete comment,
+so when @Code "prg2lout" tried to start the second line and found nothing,
+it complained as shown. In general, then, you have to add
+{@Code "prg2lout"}'s line number to Lout's line number, and use some
+initiative, to find the precise point of the problem.
+@End @Section
diff --git a/doc/user/cpp_lone b/doc/user/cpp_lone
index 8d8e367..a377d86 100644
--- a/doc/user/cpp_lone
+++ b/doc/user/cpp_lone
@@ -1,21 +1,22 @@
@Section
- @Title { Stand-alone mode }
+ @Title { Typesetting computer programs independently of any document }
@Tag { alone }
@Begin
@PP
-Printing of C files in stand-alone mode is accomplished by the following
-c2lout @Index { @Code "c2lout" filter }
-Unix pipeline:
-@ID @Code "c2lout options C-files | lout -s > out.ps"
-As usual with Lout, the output will be a PostScript file. Each input
-file will begin on a new page of the output, starting with its name
-in bold type. The options provide control over the final appearance,
-as follows:
+Printing of program files independently of any document is accomplished by
+the following Unix pipeline:
+@ID @Code "prg2lout -l language options files | lout -s > out.ps"
+where @Code language stands for any one of the programming language
+names in the first column of the table above. As usual with Lout, the
+output will be a PostScript file. Each input file will begin on a new
+page of the output, starting with its name in bold type. The options
+provide control over the final appearance, as follows:
@WideTaggedList
@TI { {@Code-p}{@I style} } {
Select a printing style. Your choices are {@Code -pfixed},
-{@Code -pvarying}, and {@Code -psymbol}, with the default being
-{@Code -pfixed}. Consult Section {@NumberOf embedded} for examples
+{@Code -pvarying}, and {@Code -psymbol}, with the default value
+varying with the language as given in the fourth column of the
+table above. Consult Section {@NumberOf embedded} for examples
of these styles.
}
@TI { @Code -n } {
diff --git a/doc/user/cpp_opti b/doc/user/cpp_opti
new file mode 100644
index 0000000..538bda2
--- /dev/null
+++ b/doc/user/cpp_opti
@@ -0,0 +1,105 @@
+@Section
+ @Title { Changing the appearance of a program }
+ @Tag { cpp_opti }
+@Begin
+@PP
+The {@Code "@CP"}, {@Code "@Eiffel"} etc. symbols have a number of
+options for changing the appearance of the printed program. These
+options are the same for all symbols, although their default values
+may vary. The @Code "style" option changes the printing style; its
+value may be {@Code "fixed"} (fixed-width font), {@Code "varying"}
+(varying-width font), or {@Code "symbol"} (varying-width font with
+mathematical symbols used for some operators). Its default value
+depends on the language, and may be found in the fourth column of
+the table at the start of this chapter. The example in the previous
+section was in @Code fixed style; we can switch styles like this:
+@ID @OneRow @Code {
+"@CP"
+" style { varying }"
+"{"
+"#include <stdio.h>"
+""
+"treeprint(p) /* print tree p recursively */"
+"struct tnode *p;"
+"{"
+" if (p != NULL) {"
+" treeprint(p->left);"
+" printf(\"%4d %s\\n\", p->count, p->word);"
+" treeprint(p->right);"
+" }"
+"}"
+"}"
+}
+The result in this case will be
+@ID @OneRow @CP style { varying }
+{
+#include <stdio.h>
+
+treeprint(p) /* print tree p recursively */
+struct tnode *p;
+{
+ if (p != NULL) {
+ treeprint(p->left);
+ printf("%4d %s\n", p->count, p->word);
+ treeprint(p->right);
+ }
+}
+}
+If we use @Code "style { symbol }" we get this:
+@ID @OneRow @CP style { symbol }
+{
+#include <stdio.h>
+
+treeprint(p) /* print tree p recursively */
+struct tnode *p;
+{
+ if (p != NULL) {
+ treeprint(p->left);
+ printf("%4d %s\n", p->count, p->word);
+ treeprint(p->right);
+ }
+}
+}
+with mathematical symbols replacing some of the operators.
+@PP
+The {@Code "@CP"}, {@Code "@Eiffel"} etc. symbols have additional options
+which allow a finer control over the style. Here they all are, with their
+default values:
+@ID @OneRow @Code {
+"@CP [ or @Eiffel, @Blue, etc. ]"
+" style { fixed }"
+" font { Courier }"
+" strings { Base }"
+" identifiers { Base }"
+" comments { Base }"
+" keywords { Base }"
+" numbers { Base }"
+" operators { Base }"
+" size { -1.0p }"
+" line { 1.0vx }"
+" tabin { 8 }"
+" tabout { 8s }"
+"{"
+" ..."
+"}"
+}
+We are already familiar with {@Code "style"}. After that comes
+{@Code "font"}, which determines the font family to use, followed
+by six options giving the particular faces within that family in which to
+print strings, identifiers, comments, keywords, numbers, and
+operators. {@Code "Base"} means the basic face; other commonly available
+choices are {@Code "Slope"} and {@Code "Bold"}. These options may all be
+set to different faces if desired. The default values shown are correct
+for @Code "style { fixed }" only; the other styles have other defaults
+(Section {@NumberOf cpsetup}).
+@PP
+The @Code "size" option is the font size to use, and @Code "line" is the
+inter-line spacing. The default values specify that @Code "size" is
+to be one point smaller than in the surrounding document; this was done
+to compensate for Courier's relatively large appearance compared
+to other fonts of the same nominal size. Again, these defaults are
+different for different values of {@Code "style"}.
+@PP
+The @Code "tabin" and @Code "tabout" options are the subject of
+Section {@NumberOf tabs}.
+@End @Section
diff --git a/doc/user/cpp_pipe b/doc/user/cpp_pipe
new file mode 100644
index 0000000..afbb87e
--- /dev/null
+++ b/doc/user/cpp_pipe
@@ -0,0 +1,57 @@
+@Section
+ @Title { Reading and selecting program text from separate files }
+ @Tag { pipes }
+@Begin
+@PP
+We have said that program text within @Code "@CP { ... }" and the other
+symbols is passed directly to @Code prg2lout for analysis. However,
+there is an exception. The program text may contain an
+@Code "@Include" or @Code "@SysInclude" command, which, as for the
+@Code "@Verbatim" symbol (Section {@NumberOf verbatim}), causes Lout
+to take the program text from a file:
+@ID @Code {
+"@Eiffel"
+"{"
+" @Include { \"/usr/staff/jeff/Eiffel/hash.e\" }"
+"}"
+}
+The included file is not examined for balanced braces or @Code "@End" or
+{@Code "@Include"}; it is treated entirely verbatim and passed straight
+on to {@Code prg2lout}. There may be several @Code "@Include" commands,
+and any amount of program text as well, within @Code "@CP { ... }" and
+the rest.
+@PP
+When including files in this way it often happens that only part of an
+actual program file is wanted for display. Rather than placing the
+wanted part in a separate file, which is error-prone and tedious when
+the program is changing, Unix users can use the @Code "pipe" option
+to pipe the entire file through an arbitrary sequence of Unix commands,
+which may be used to make the wanted selection before the program text
+is passed to {@Code prg2lout}.
+@PP
+For example, suppose that all your Eiffel routines begin with the
+routine name one tab stop from the left margin and end at the first
+following @Eiffel { end } indented two tab stops. Then
+@ID @Code {
+"@Eiffel"
+" pipe { \"sed -n /^.insert/,/^..end/p\" }"
+"{"
+" @Include { \"/usr/staff/jeff/Eiffel/hash.e\" }"
+"}"
+}
+will select just the @Eiffel { insert } routine from the @Code { hash.e }
+file. Assuming that your program text has been laid out in a
+disciplined manner, every line of the selection will begin with a
+tab character that is not wanted in this display, so an even better
+pipe is
+@ID @Code {
+"@Eiffel"
+" pipe { \"sed -n /^.insert/,/^..end/p | cut -c2-\" }"
+"{"
+" @Include { \"/usr/staff/jeff/Eiffel/hash.e\" }"
+"}"
+}
+since it cuts away the unwanted tab characters. Unfortunately, we
+can't show the result of this on an actual example, since that would
+prevent this manual from being formatted on a non-Unix system.
+@End @Section
diff --git a/doc/user/cpp_prog b/doc/user/cpp_prog
new file mode 100644
index 0000000..a049e3d
--- /dev/null
+++ b/doc/user/cpp_prog
@@ -0,0 +1,35 @@
+@Section
+ @Title { Embedding program text within program comments }
+ @Tag { cpp_prog }
+@Begin
+@PP
+The standard reference for the Eiffel language @Cite { $meyer1992eiffel }
+specifies that identifiers within comments may or should be enclosed
+in ` and ' so that they may be noticed and printed in an italic
+font:
+@ID lines @Break @F @Verbatim {
+@ID @Eiffel {
+deposit(amount: REAL) is
+ -- deposit `amount' dollars
+}
+}
+produces
+@ID @Eiffel {
+deposit(amount: REAL) is
+ -- deposit `amount' dollars
+}
+This has been generalized in Lout: arbitrary text within an
+Eiffel comment between ` and ' will be treated as Eiffel text and
+printed accordingly. Some other languages may also offer this
+feature: see the fifth column of the table at the start of this
+chapter. In principle the precise means of getting it could vary
+from language to language, but the languages available at the moment
+either do not have it at all, or else they use ` and ' like Eiffel.
+@PP
+On the subject of Eiffel, the Eiffel reference @Cite { $meyer1992eiffel }
+has some quite detailed style guidelines, and these have been closely
+followed in the implementation of the @Code "@Eiffel" symbol. In
+particular, @Code "@Eiffel" prints dots larger than usual when they
+denote feature calls, as the example @OneCol @Eiffel { account.deposit(20) }
+shows.
+@End @Section
diff --git a/doc/user/cpp_tabs b/doc/user/cpp_tabs
index 1157a51..3a04bfa 100644
--- a/doc/user/cpp_tabs
+++ b/doc/user/cpp_tabs
@@ -1,28 +1,31 @@
@Section
- @Title { Tab characters }
+ @Title { Dealing with tab characters in programs }
@Tag { tabs }
@Begin
@PP
-Tab characters provide a convenient way to indent and align parts of C
-tab.c @Index { tab characters in C programs }
-programs. With care, this alignment can be preserved in the final
+Tab characters provide a convenient way to indent and align parts of
+tab.c @Index { tab characters in programs }
+computer programs. With care, this alignment can be preserved in the final
print even with varying-width fonts.
@PP
-The distance between two tab stops in the input file is by default taken
+The distance between two tab stops in the program text is by default taken
to be 8 characters, which is standard for Unix. This can be changed with
the @Code "tabin" option. For example,
@ID @Code "@CP tabin { 4 }"
-informs Lout that tab stops occur every 4 characters in the input file.
+informs Lout that tab stops occur every 4 characters in the program
+text. All the symbols ({@Code "@CP"}, {@Code "@Eiffel"}, etc.) and
+their setup files have this option and the next; but to save repetition
+we will stick with C for the rest of this section.
@PP
-The distance between two tab stops in the output file (on the printed
-page) is quite a different thing, and it is determined by the value of
-the @Code "tabout" option, which must be a Lout length. For example,
+The distance between two tab stops on the printed page is quite a different
+thing, and it is determined by the value of the @Code "tabout" option, which
+must be a Lout length. For example,
@ID @Code "@CP tabout { 0.5i }"
requests that tab stops be placed at half-inch intervals. In other
-words, a distance of one tab stop in the input will be equivalent to a
-distance of half an inch in the output. For example,
+words, a distance of one tab stop in the program text will be equivalent to a
+distance of half an inch on the printed page. For example,
@ID @Code "@CP style { varying } tabout { 3f }"
-might produce the following, where tab characters in the input file
+might produce the following, where tab characters in the program text
have been used for indenting and also to align the comments:
@ID @OneRow @CP style { varying } tabout { 3f } {
struct tnode { /* the basic node */
@@ -37,7 +40,7 @@ it is the default value of @Code "tabout" for the @Code { varying }
and @Code { symbol } styles (Section {@NumberOf cpsetup}). In a
12 point font this is 36 points, or half an inch.
@PP
-If @Code "tabout" is made too small, there is a danger that the
+If @Code "tabout" is too small, there is a danger that the
alignment might fail. For example,
@ID @Code "@CP style { varying } tabout { 0.2i }"
produces
@@ -56,7 +59,8 @@ wider than this. This causes @CP { /* } to be shifted further to the
right than expected, and the alignment is lost. The only solution is
to increase {@Code "tabout"}.
@PP
-In stand-alone mode there are @Code "-t" and @Code "-T" options
-equivalent to @Code "tabin" and @Code "tabout" respectively. For
+When typesetting computer program texts independently of any document,
+there are @Code "-t" and @Code "-T" options to the @Code "prg2lout"
+program equivalent to @Code "tabin" and @Code "tabout" respectively. For
example, @Code "-T0.5i" produces a half-inch tab width.
@End @Section
diff --git a/doc/user/dia b/doc/user/dia
index 4029cec..6462c88 100644
--- a/doc/user/dia
+++ b/doc/user/dia
@@ -6,6 +6,13 @@
This chapter describes how to use the @@Diag symbol
diag. @Index { @@Diag }
@FootNote {
+Starting with Version 3.18 of Lout, the @@Diag symbol was enhanced with
+the {@Code "@ANode"}, {@Code "@BNode"}, and {@Code "@CNode"} symbols
+described in Section {@NumberOf dia_node}, and with the symbols for
+syntax diagrams described in Section {@NumberOf dia_synt}. These
+enhancements are upwardly compatible, unless the user has defined
+symbols with these same names and used them within diagrams.
+@LP
Prior to Version 3.09 of Lout, this chapter described a symbol called
fig. @Index @Code "@Fig"
{@Code "@Fig"} which was similar to but more primitive than
@@ -29,7 +36,7 @@ diag. @Index @Code "@Diag"
// @Arrow from { E } to { D }
}
@@Diag offers nodes and links, arrows, labels, positioning using coordinates,
-and tree diagrams.
+tree diagrams, and syntax diagrams.
@BeginSections
@Include { dia_intr }
@Include { dia_node }
@@ -38,6 +45,7 @@ and tree diagrams.
@Include { dia_labe }
@Include { dia_posi }
@Include { dia_tree }
+@Include { dia_synt }
@Include { dia_erro }
@Include { dia_defi }
@Include { dia_geom }
diff --git a/doc/user/dia_node b/doc/user/dia_node
index b72c6e2..8980978 100644
--- a/doc/user/dia_node
+++ b/doc/user/dia_node
@@ -79,10 +79,53 @@ document. As the number of nodes increases, it becomes very tedious and
error-prone to duplicate options at all the nodes. Giving each option
just once, at the @Code "@Diag" symbol or in the setup file, saves time
and makes it easy to change all the nodes into squares or any other shape
-later on. Any setup file option may be overridden in a diagram by
-giving the option to its @Code "@Diag" symbol; any @Code "@Diag" option
-or setup file option may be overridden at any node by giving the option
-again there.
+later on. Any setup file option may be overridden in a diagram by giving
+the option to its @Code "@Diag" symbol; any @Code "@Diag" option or setup
+file option may be overridden at any node by giving the option again there.
+@PP
+Sometimes a diagram contains several different node types, each with
+its own combination of options (for example, the syntax diagrams of
+Section {@NumberOf dia_synt} have three node types). To handle these
+cases there are three alternative versions of the @Code "@Node"
+symbol, called {@Code "@ANode"}, {@Code "@BNode"}, and
+anode.fig @Index { @Code "@ANode" in @Code "@Diag" }
+bnode.fig @Index { @Code "@BNode" in @Code "@Diag" }
+cnode.fig @Index { @Code "@CNode" in @Code "@Diag" }
+{@Code "@CNode"}. These have exactly the same options as
+{@Code "@Node"}, but the @I default values of these options
+are different, in that they come from @Code "@Diag" options,
+or else setup file options, that have an extra letter in front
+of their name: @Code { a }, @Code { b }, or @Code { c }. Here is
+a small example (see later in this section for the @Code font option):
+@ID @OneRow {
+@Code @Verbatim {
+@Diag
+ aoutline { box }
+ afont { Italic }
+ boutline { curvebox }
+ bfont { Bold }
+{
+ @ANode identifier
+ @DP
+ @BNode keyword
+}
+}
+||7ct
+@Diag
+ aoutline { box }
+ afont { Italic }
+ boutline { curvebox }
+ bfont { Bold }
+{
+ @ANode identifier
+ @DP
+ @BNode keyword
+}
+}
+Note that when giving an option directly to {@Code "@ANode"},
+{@Code "@BNode"}, and {@Code "@CNode"}, the initial @Code { a },
+@Code { b }, or @Code { c } used with @Code "@Diag" and in the
+setup file is omitted.
@PP
To save time in simple cases, @Code "@Diag" provides nine other
node symbols called
diff --git a/doc/user/dia_summ b/doc/user/dia_summ
index b9dc9e9..4539785 100644
--- a/doc/user/dia_summ
+++ b/doc/user/dia_summ
@@ -1212,6 +1212,93 @@ The @Code "@HTree" option has a similar @Code "treevindent" option,
which may be {@Code "top"}, {@Code ctr}, {@Code foot}, or any length
from Section {@NumberOf objects}.
@PP
+Here are all the syntax diagrams symbols, used within {@Code "@SyntaxDiag"}
+usually but also available within {@Code "@Diag"}. To begin with we have
+the six starter symbols:
+@CD @SyntaxDiag {
+@Tbl
+ aformat { @Cell @Code A | @Cell B | @Cell | @Cell @Code C |
+ @Cell D | @Cell | @Cell @Code E | @Cell F }
+{
+@Rowa
+ A { "@StartRight ..." }
+ B { @StartRight @ACell "..." }
+ C { "@StartUp ..." }
+ D { @StartUp @ACell "..." }
+ E {
+"@StartRightRight"
+ "A { ... }"
+ "B { ... }"
+}
+ F { @StartRightRight A { @ACell A } B { @ACell B } }
+@Rowa
+ A { "@StartLeft ..." }
+ B { @StartLeft @ACell "..." }
+ C { "@StartDown ..." }
+ D { @StartDown @ACell "..." }
+ E {
+"@StartRightDown"
+ "A { ... }"
+ "B { ... }"
+}
+ F { @StartRightDown A { @ACell A } B { @ACell B } }
+}
+}
+And here are all the syntax diagram types, shown in all four directions
+(right, up, left, and down). @Code "@Sequence" and @Code "@Select" may
+have up to twelve options, {@Code "A"} to {@Code "L"}.
+@IndentedList
+
+@LI @SyntaxDiag { @Four code { "@ACell ..." } @ACell "..." }
+
+@LI @SyntaxDiag { @Four code { "@BCell ..." } @BCell "..." }
+
+@LI @SyntaxDiag { @Four code { "@CCell ..." } @CCell "..." }
+
+@LI @SyntaxDiag { @Four code { "@Skip" } @Skip }
+
+@LI @SyntaxDiag { @Four code {
+"@Sequence"
+ "A { ... }"
+ "B { ... }"
+ "C { ... }"
+} @Sequence A { @ACell A } B { @ACell B } C { @ACell C } }
+
+@LI @SyntaxDiag { @Four code {
+"@Select"
+ "A { ... }"
+ "B { ... }"
+ "C { ... }"
+} @Select A { @ACell A } B { @ACell B } C { @ACell C } }
+
+@LI @SyntaxDiag { @Four code { "@Optional ..." } @Optional @ACell "..." }
+
+@LI @SyntaxDiag { @Four code { "@OptionalDiverted ..." }
+ @OptionalDiverted @ACell "..." }
+
+@LI @SyntaxDiag { @Four code { "@Diverted ..." } @Diverted @ACell "..." }
+
+@LI @SyntaxDiag { @Four code {
+"@Loop"
+ "A { ... }"
+ "B { ... }"
+} @Loop A { @ACell A } B { @ACell B } }
+
+@LI @SyntaxDiag { @Four code { "@Repeat ..." } @Repeat @ACell "..." }
+
+@LI @SyntaxDiag { @Four code {
+"@LoopOpposite"
+ "A { ... }"
+ "B { ... }"
+} @LoopOpposite A { @ACell A } B { @ACell B } }
+
+@LI @SyntaxDiag { @Four code { "@RepeatOpposite ..." }
+ @RepeatOpposite @ACell "..." }
+
+@LI @SyntaxDiag { @Four code { "@RepeatDiverted ..." }
+ @RepeatDiverted @ACell "..." }
+
+@EndList
The @Code "@Diag" symbol and to the {@Code "@DiagSetup"} setup
file symbol have all of the options of {@Code "@Node"}, {@Code "@Link"},
{@Code "@Tree"}, and {@Code "@HTree"}. They also have the following
@@ -1240,8 +1327,16 @@ options:
B { 0.5f }
C { any length from Section {@NumberOf objects} }
@Rowa
- A { " treevsep" }
- B { 0.5f }
+ A { " syntaxgap" }
+ B { 0.35f }
+ C { any length from Section {@NumberOf objects} }
+@Rowa
+ A { " syntaxbias" }
+ B { 1.0f }
+ C { any length from Section {@NumberOf objects} }
+@Rowa
+ A { " syntaxradius" }
+ B { 0.3f }
C { any length from Section {@NumberOf objects} }
}
@DP
diff --git a/doc/user/dia_synt b/doc/user/dia_synt
new file mode 100644
index 0000000..6cef550
--- /dev/null
+++ b/doc/user/dia_synt
@@ -0,0 +1,573 @@
+@Section
+ @Tag { dia_synt }
+ @Title { Syntax diagrams }
+@Begin
+@PP
+A variant of the @@Diag symbol, called {@Code "@SyntaxDiag"},
+syntax.diag @Index { @Code "@SyntaxDiag" symbol }
+syntax.diagrams @Index { syntax diagrams }
+railroad.diagrams @Index { railroad diagrams }
+produces syntax diagrams (sometimes called railroad diagrams):
+@CD @SyntaxDiag
+ title { call-chain }
+{
+ @StartRight @Sequence
+ A { @Optional @Sequence
+ A { @BCell "super" }
+ B { @CCell "!" }
+ }
+ B { @Loop
+ A { @Sequence
+ A { @ACell identifier }
+ B { @Optional @Sequence
+ A { @CCell "(" }
+ B { @Loop
+ A { @ACell expression }
+ B { @CCell "," }
+ }
+ C { @CCell ")" }
+ }
+ }
+ B { @CCell "." }
+ }
+}
+These are used to define the syntax of computer programming languages,
+although they could be put to other uses. We'll explain how to get
+syntax diagrams first. At the end of this section is an explanation of
+how to change the formats of things, which people who use these diagrams
+for other purposes will probably need to do.
+@PP
+A syntax diagram can be @I { right-moving }, which means it starts
+at the left and heads right (like the example above), or it can be
+@I { down-moving }, starting at the top and heading downwards. The
+@Code "@StartRight" and @Code "@StartDown" symbols are used at the start
+of the diagram to say which of these directions is wanted:
+@ID @OneRow @Code @Verbatim {
+@SyntaxDiag
+ title { call-chain }
+{
+ @StartRight ...
+}
+}
+where @Code { ... } stands for the rest of the diagram, as we are about
+to describe. For completeness there are also @Code "@StartLeft" and
+@Code "@StartUp" symbols, but diagrams never start off in these directions.
+@PP
+The @Code title option is optional; if given, the effect is as shown
+(this option is also available with {@Code "@Diag"}). Subsequent
+examples will omit the enclosing {@Code "@SyntaxDiag { ... }"}.
+@PP
+The basic components of syntax diagrams are @I { category cells },
+shown as boxes in the example above and obtained with the
+@Code "@ACell" symbol; @I { keyword cells }, shown as curved boxes
+and obtained with {@Code "@BCell"}; and @I { punctuation cells },
+containing punctuation symbols small enough to be enclosed in circles,
+and obtained with {@Code "@CCell"}. After each symbol, place whatever
+has to go inside the cell:
+@ID @OneRow {
+@Code @Verbatim { @StartRight @BCell loop }
+|7ct
+@SyntaxDiag {
+@StartRight @BCell loop
+}
+}
+Lout will insert the appropriate arrows, taking account of which
+direction (right, up, left, or down) the diagram is currently
+moving. This is true for all the syntax diagram symbols; we
+won't mention it again.
+@FootNote {
+This wonderfully useful effect is achieved by a dirty trick, one
+of whose consequences is that if you see an error message
+similar to `@Code { replacing unknown "@Case" option 0p by 1p }'
+it means you've forgotten the initial @Code "@StartRight" or
+whatever.
+}
+@PP
+Occasionally, instead of a cell one wants the horizontal or
+vertical line to continue uninterrupted. For this there is
+the @Code "@Skip" symbol:
+@ID @OneRow {
+@Code @Verbatim { @StartDown @Skip }
+|7ct
+@SyntaxDiag {
+@StartDown @Skip
+}
+}
+Some examples of its use in practice appear below.
+@PP
+There are three main ways to build up larger syntax diagrams out
+of smaller ones: @I { sequencing }, @I { selection }, and
+@I { looping }. For sequencing there is the @Code "@Sequence" symbol:
+@ID @OneRow {
+@Code @Verbatim {
+@StartRight @Sequence
+ A { @BCell loop }
+ B { @ACell statements }
+ C { @BCell end }
+}
+||7ct
+@SyntaxDiag {
+@StartRight @Sequence
+ A { @BCell loop }
+ B { @ACell statements }
+ C { @BCell end }
+}
+}
+This is what the sequence looks like in the other three directions:
+@CD @OneRow @SyntaxDiag {
+@Tbl
+ mh { 1f }
+ mv { 0i }
+ iv { top }
+ aformat { @Cell ml { 0i } @StartUp A | @Cell @StartLeft A |
+ @Cell mr { 0i } @StartDown A }
+{
+@Rowa A {
+@Sequence
+ A { @BCell loop }
+ B { @ACell statements }
+ C { @BCell end }
+}
+} }
+Whatever the direction, the arrows go from option @Code A to option @Code B
+to option @Code C and so on. You can have up to twelve items in the
+sequence, in options @Code A to {@Code L}; if more than twelve are needed,
+just place another sequence inside any one of these options: where one
+syntax diagram is allowed, any syntax diagram is allowed, provided there
+is enough space on the page (Lout makes a total mess of any diagram that
+is too wide to fit on the page).
+@PP
+After sequencing comes selection, which is obtained with the
+@Code "@Select" symbol:
+@ID @OneRow {
+@Code @Verbatim {
+@StartRight @Select
+ A { @ACell asst }
+ B { @ACell call-chain }
+ C { @Sequence
+ A { @BCell assert }
+ B { @ACell condition }
+ }
+}
+||7ct
+@SyntaxDiag {
+@StartRight @Select
+ A { @ACell asst }
+ B { @ACell call-chain }
+ C { @Sequence
+ A { @BCell assert }
+ B { @ACell condition }
+ }
+}
+}
+This example shows right-moving selection of three alternatives,
+the third being a sequence of things. Here is the same example
+in the other three directions:
+@CD @OneRow @SyntaxDiag {
+@Tbl
+ mh { 1f }
+ mv { 0i }
+ iv { top }
+ aformat { @Cell ml { 0i } @StartUp A | @Cell @StartLeft A |
+ @Cell mr { 0i } @StartDown A }
+{
+@Rowa A {
+@Select
+ A { @ACell asst }
+ B { @ACell call-chain }
+ C { @Sequence
+ A { @BCell assert }
+ B { @ACell condition }
+ }
+} } }
+When building up complex diagrams like this, it pays to keep the indenting
+perfect in the source document. As with sequences, there can be
+up to twelve alternatives, in options from @Code A to {@Code L}.
+@PP
+To say that something is @I optional is to select either that thing or
+nothing:
+@ID @OneRow {
+@Code @Verbatim {
+@StartRight @Select
+ A { @Skip }
+ B { @ACell parameters }
+}
+||7ct
+@SyntaxDiag {
+@StartRight @Select
+ A { @Skip }
+ B { @ACell parameters }
+}
+}
+Since this case is so common, there is an @Code "@Optional" symbol for it:
+@ID @OneRow {
+@Code @Verbatim {
+@StartRight @Optional
+@ACell parameters
+}
+||7ct
+@SyntaxDiag {
+@StartRight @Optional
+@ACell parameters
+}
+}
+@Code "@Optional" is exactly like @Code "@Select" with option @Code A
+set to @Code "@Skip" and option @Code B set to the syntax diagram
+following the @Code "@Optional" symbol. Here is the same example in
+the other three directions:
+@CD @OneRow @SyntaxDiag {
+@Tbl
+ mh { 1f }
+ mv { 0i }
+ iv { top }
+ aformat { @Cell ml { 0i } @StartUp A | @Cell @StartLeft A |
+ @Cell mr { 0i } @StartDown A }
+{
+@Rowa A {
+@Optional @ACell parameters
+} } }
+There is another kind of `optional' layout, {@Code "@OptionalDiverted"}:
+@ID @OneRow {
+@Code @Verbatim {
+@StartDown @OptionalDiverted
+@Sequence
+ A { @BCell creation }
+ B { @ACell parameters }
+}
+||7ct
+@SyntaxDiag {
+@StartDown @OptionalDiverted @Sequence
+ A { @BCell creation }
+ B { @ACell parameters }
+}
+}
+Here is the same example in the other three directions:
+@CD @OneRow @SyntaxDiag {
+@Tbl
+ mh { 1f }
+ mv { 0i }
+ iv { top }
+ aformat { @Cell ml { 0i } @StartRight A | @Cell @StartUp A |
+ @Cell mr { 0i } @StartLeft A }
+{
+@Rowa A {
+@OptionalDiverted @Sequence
+ A { @BCell creation }
+ B { @ACell parameters }
+} } }
+The optional material goes in a direction perpendicular to what
+it would have otherwise: right-moving if previously up or down, and
+down-moving if previously left or right.
+@PP
+Another, related symbol is {@Code "@Diverted"}; it is similar to
+@Code "@OptionalDiverted" but without the path which produces nothing:
+@ID @OneRow {
+@Code @Verbatim {
+@StartDown @Diverted @Sequence
+ A { @BCell creation }
+ B { @ACell parameters }
+}
+||7ct
+@SyntaxDiag {
+@StartDown @Diverted @Sequence
+ A { @BCell creation }
+ B { @ACell parameters }
+}
+}
+Here is the same example in the other three directions:
+@CD @OneRow @SyntaxDiag {
+@Tbl
+ mh { 1f }
+ mv { 0i }
+ iv { top }
+ aformat { @Cell ml { 0i } @StartRight A | @Cell @StartUp A |
+ @Cell mr { 0i } @StartLeft A }
+{
+@Rowa A {
+@Diverted @Sequence
+ A { @BCell creation }
+ B { @ACell parameters }
+} } }
+This symbol is a great aid to packing a big syntax diagram into a
+compact shape.
+@PP
+That covers sequencing and selection; now for looping. The @Code "@Loop"
+symbol produces a loop, with option @Code A going forwards and option
+@Code B centred and going backwards:
+@ID @OneRow {
+@Code @Verbatim {
+@StartRight @Loop
+ A { @Sequence
+ A { @ACell identifier }
+ B { @CCell : }
+ C { @ACell type }
+ }
+ B { @CCell , }
+}
+||7ct
+@SyntaxDiag {
+@StartRight @Loop
+ A { @Sequence
+ A { @ACell identifier }
+ B { @CCell : }
+ C { @ACell type }
+ }
+ B { @CCell , }
+}
+}
+Here is the same example in the other three directions:
+@CD @OneRow @SyntaxDiag {
+@Tbl
+ mh { 1f }
+ mv { 0i }
+ iv { top }
+ aformat { @Cell ml { 0i } @StartUp A | @Cell @StartLeft A |
+ @Cell mr { 0i } @StartDown A }
+{
+@Rowa A {
+@Loop
+ A { @Sequence
+ A { @ACell identifier }
+ B { @CCell : }
+ C { @ACell type }
+ }
+ B { @CCell , }
+} } }
+One common case of looping is to have nothing on the way back. We could
+get this by placing @Code "@Skip" in option {@Code B} of {@Code "@Loop"},
+but there is an even easier way, the {@Code "@Repeat"} symbol:
+@ID @OneRow {
+@Code @Verbatim {
+@StartRight @Repeat
+@ACell statement
+}
+||7ct
+@SyntaxDiag {
+@StartRight @Repeat
+@ACell statement
+}
+}
+Here is the same example in the other three directions:
+@CD @OneRow @SyntaxDiag {
+@Tbl
+ mh { 1f }
+ mv { 0i }
+ iv { top }
+ aformat { @Cell ml { 0i } @StartUp A | @Cell @StartLeft A |
+ @Cell mr { 0i } @StartDown A }
+{
+@Rowa A {
+@Repeat
+@ACell statement
+} } }
+Occasionally it looks better to have the empty returning arrow go on
+the opposite side of the forward part; for that, there are
+@Code "@LoopOpposite" and @Code "@RepeatOpposite" symbols:
+@ID @OneRow {
+@Code @Verbatim {
+@StartRight @LoopOpposite
+ A { @Sequence
+ A { @ACell identifier }
+ B { @CCell : }
+ C { @ACell type }
+ }
+ B { @CCell , }
+}
+||7ct
+@SyntaxDiag {
+@StartRight @LoopOpposite
+ A { @Sequence
+ A { @ACell identifier }
+ B { @CCell : }
+ C { @ACell type }
+ }
+ B { @CCell , }
+}
+}
+Here is the same example in the other three directions:
+@CD @OneRow @SyntaxDiag {
+@Tbl
+ mh { 1f }
+ mv { 0i }
+ iv { top }
+ aformat { @Cell ml { 0i } @StartUp A | @Cell @StartLeft A |
+ @Cell mr { 0i } @StartDown A }
+{
+@Rowa A {
+@LoopOpposite
+ A { @Sequence
+ A { @ACell identifier }
+ B { @CCell : }
+ C { @ACell type }
+ }
+ B { @CCell , }
+} } }
+@Code "@RepeatOpposite" is particularly useful around a large
+{@Code "@Select"}:
+@ID @OneRow {
+@Code @Verbatim {
+@StartRight @RepeatOpposite
+@Select
+ A { @ACell asst }
+ B { @ACell call-chain }
+ C { @BCell return }
+ D { @Sequence
+ A { @BCell assert }
+ B { @ACell condition }
+ }
+ E { @ACell conditional }
+ F { @ACell selection }
+ G { @ACell loop }
+}
+||7ct
+@SyntaxDiag {
+@StartRight @RepeatOpposite
+@Select
+ A { @ACell asst }
+ B { @ACell call-chain }
+ C { @BCell return }
+ D { @Sequence
+ A { @BCell assert }
+ B { @ACell condition }
+ }
+ E { @ACell conditional }
+ F { @ACell selection }
+ G { @ACell loop }
+}
+}
+since it clearly distinguishes the loop from the selection.
+@PP
+Finally, the @Code "@RepeatDiverted" symbol combines the two ideas
+of repetition and diversion:
+@ID @OneRow {
+@Code @Verbatim {
+@StartDown @RepeatDiverted
+@ACell statement
+}
+||7ct
+@SyntaxDiag {
+@StartDown @RepeatDiverted
+@ACell statement
+}
+}
+Here is the same example in the other three directions:
+@CD @OneRow @SyntaxDiag {
+@Tbl
+ mh { 1f }
+ mv { 0i }
+ iv { top }
+ aformat { @Cell ml { 0i } @StartRight A | @Cell @StartUp A |
+ @Cell mr { 0i } @StartLeft A }
+{
+@Rowa A {
+@RepeatDiverted
+@ACell statement
+} } }
+There is no {@Code "@LoopDiverted"} symbol, for good reason.
+@PP
+Every syntax diagram, from the simplest to the most complex, has
+one arrow going into it, and one coming out. There are no exceptions
+to this rule. In most syntax diagrams, these two arrows lie on the
+same (invisible) line and point in the same direction, and this is
+the direction that we say the diagram is moving. There are two symbols
+that produce syntax diagrams that lack this second property. Because
+of this lack, these symbols cannot be used at arbitrary places in a
+complex diagram; they can only be used instead of the @Code "@StartRight"
+or @Code "@StartDown" symbols at the beginning of a diagram. The first
+symbol, {@Code "@StartRightDown"}, prints its option @Code A right-moving
+and its option @Code B down-moving like this:
+@ID @OneRow {
+@Code @Verbatim {
+@StartRightDown
+ A { @ACell A }
+ B { @ACell B }
+}
+||7ct
+@SyntaxDiag {
+@StartRightDown
+ A { @ACell A }
+ B { @ACell B }
+}
+}
+The second symbol, {@Code "@StartRightRight"}, prints both options
+right-moving like this:
+@ID @OneRow {
+@Code @Verbatim {
+@StartRightRight
+ A { @ACell A }
+ B { @ACell B }
+}
+||7ct
+@SyntaxDiag {
+@StartRightRight
+ A { @ACell A }
+ B { @ACell B }
+}
+}
+As usual, the options to these symbols may contain arbitrarily complex
+syntax diagrams.
+@PP
+Finally, a few words about changing things. The @Code "@SyntaxDiag"
+symbol used the {@Code "@ANode"}, {@Code "@BNode"}, and {@Code "@CNode"}
+symbols of @@Diag to construct its three types of cells. In fact, the
+@Code "@SyntaxDiag" symbol is nothing more than this:
+@ID @OneRow @Code @Verbatim {
+@Diag
+ avalign { mark }
+ avstrut { yes }
+ amargin { 0.2f }
+ aoutline { box }
+ afont { Italic }
+ bvalign { mark }
+ bvstrut { yes }
+ bmargin { 0.2f }
+ boutline { curvebox }
+ bfont { Bold }
+ cvalign { mark }
+ cvstrut { yes }
+ cmargin { 0.2f }
+ coutline { circle }
+ chsize { 1f }
+ arrowlength { 0.4f }
+}
+So any of the other @Code "@Diag" options can be used freely with
+{@Code "@SyntaxDiag"}; and the format of the three cell types can be
+changed by using @Code "@Diag" instead of {@Code "@SyntaxDiag"}, and
+choosing new values for these (and other) options.
+@PP
+If there are more than three cell types, it is necessary to fall back
+on the {@Code "@XCell"} symbol, which produces a cell without nominating
+any particular cell type. After @Code "@XCell" there must be a regular
+@Code "@Diag" node, like this:
+@ID @OneRow {
+@Code @Verbatim {
+@StartRight @XCell @Ellipse INIT
+}
+|7ct
+@SyntaxDiag {
+@StartRight @XCell @Ellipse INIT
+}
+}
+This way there is no limit to the number of different kinds of cells. Also,
+since (for example) @Code "@ACell" is merely an abbreviation for
+@ID @OneRow @Code @Verbatim { @XCell @ANode }
+any node options may follow {@Code "@ACell"}, {@Code "@BCell"}, and
+{@Code "@CCell"}. The appearance of the arrows can be changed in the usual
+way, by setting options as has been done above for {@Code "arrowlength"}.
+@PP
+There are three options specifically related to syntax diagrams:
+@ID @OneRow @Code @Verbatim {
+@SyntaxDiag
+ syntaxgap { 0.35f }
+ syntaxbias { 1.0f }
+ syntaxradius { 0.3f }
+}
+The @Code syntaxgap option determines the spacing between the various
+elements; changing it causes the syntax diagrams to be set tighter or
+looser in a consistent way. The default value shown is 0.35 times the
+current font size. The @Code syntaxbias and @Code syntaxradius
+options affect the appearance of curved lines, as in @Code "@RVLCurve"
+and its relatives. These options are also available with {@Code "@Diag"},
+and in the setup file. Note however that these options cannot be given to
+individual elements in a syntax diagram, only to the diagram as a whole.
+@End @Section
diff --git a/doc/user/equ_summ b/doc/user/equ_summ
index bcfbeb3..b1e6fbc 100644
--- a/doc/user/equ_summ
+++ b/doc/user/equ_summ
@@ -37,6 +37,9 @@ and full names. The auxiliary symbols are:
@Rowa
A { @Code "big x" }
B { Make @Code x larger }
+@Rowa
+ A { @Code "small x" }
+ B { Make @Code x smaller }
}
Here are all the parameterized symbols, shown in groups of equal
precedence, with the precedence itself at right:
@@ -262,6 +265,7 @@ ragged @Break {
"propto" @Dbl @Eq { propto }
"models" @Dbl @Eq { models }
"doteq" @Dbl @Eq { doteq }
+"trieq" @Dbl @Eq { trieq }
"perp" @Dbl @Eq { perp }
"notsub" @Dbl @Eq { notsub }
"notin" @Dbl @Eq { notin }
@@ -504,6 +508,7 @@ ragged @Break {
"exists" @Dbl @Eq { exists }
"neg" @Dbl @Eq { neg }
"circle" @Dbl @Eq { circle }
+"filledcircle" @Dbl @Eq { filledcircle }
"square" @Dbl @Eq { square }
"ldots" @Dbl @Eq { ldots }
"cdots" @Dbl @Eq { cdots }
diff --git a/doc/user/johnson b/doc/user/johnson
new file mode 100644
index 0000000..aaedd4c
--- /dev/null
+++ b/doc/user/johnson
@@ -0,0 +1,19 @@
+@SysInclude { fig }
+@SysInclude { diag }
+@SysInclude { eq }
+@SysInclude { tbl }
+@SysInclude { doc }
+@Doc @Text @Begin
+@QD @Tbl
+ rule { yes }
+{
+@Row format { @StartVSpan @Cell A | @StartHSpan @Cell B | @HSpan }
+ A { @SomeText }
+ B { @SomeText }
+@Row format { @VSpan | @Cell B | @StartVSpan @Cell C }
+ B { @SomeText }
+ C { @SomeText }
+@Row format { @StartHSpan @Cell A | @HSpan | @VSpan }
+ A { @SomeText }
+}
+@End @Text
diff --git a/doc/user/johnson.out b/doc/user/johnson.out
new file mode 100644
index 0000000..ead54ef
--- /dev/null
+++ b/doc/user/johnson.out
@@ -0,0 +1,66 @@
+
+
+
+
+
+
+ ...................................................
+ . . .
+ . Johnson . Johnson suddenly uttered, in .
+ . suddenly . a strong determined tone, an .
+ . uttered, . apophegm, at which many will .
+ . in a strong . start: `Patriotism is the .
+ . determined . last refuge of a scoundrel.' .
+ . tone, an . .
+ . apophegm, at . .
+ . which many ..................................
+ . will start: . . .
+ . `Patriotism . Johnson . Johnson .
+ . is the last . suddenly . suddenly .
+ . refuge of a . uttered, . uttered, .
+ . scoundrel.' . in a strong . in a strong .
+ . . determined . determined .
+ . . tone, an . tone, an .
+ . . apophegm, at . apophegm, at .
+ . . which many . which many .
+ . . will start: . will start: .
+ . . `Patriotism . `Patriotism .
+ . . is the last . is the last .
+ . . refuge of a . refuge of a .
+ . . scoundrel.' . scoundrel.' .
+ . . . .
+ . . . .
+ .................................. .
+ . . .
+ . Johnson suddenly uttered, in . .
+ . a strong determined tone, an . .
+ . apophegm, at which many will . .
+ . start: `Patriotism is the . .
+ . last refuge of a scoundrel.' . .
+ . . .
+ . . .
+ ...................................................
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/doc/user/mydefs b/doc/user/mydefs
index 2ef9639..727bb27 100644
--- a/doc/user/mydefs
+++ b/doc/user/mydefs
@@ -39,6 +39,7 @@
def @@OneCol { @Code "@OneCol" }
def @@OneRow { @Code "@OneRow" }
def @@Open { @Code "@Open" }
+ def @@Outline { @Code "@Outline" }
def @@PAdjust { @Code "@PAdjust" }
def @@PrependGraphic { @Code "@PrependGraphic" }
def @@Rotate { @Code "@Rotate" }
@@ -189,7 +190,7 @@ which many will start: `Patriotism is the last refuge of a scoundrel.'
def @AmberLight
{
@OneRow @Tbl
- aformat { @Cell A }
+ aformat { @Cell indentvertical { align } A }
marginhorizontal { 0i }
marginvertical { 0i }
strut { no }
@@ -201,3 +202,13 @@ which many will start: `Patriotism is the last refuge of a scoundrel.'
@Rowa A { @OpenCircle }
}
}
+
+ import @DiagSetup @Diag
+ def @Four named code { } right x
+ {
+ 3.8c @Wide @Code code ||0.3c
+ 2.7c @Wide @StartRight x ||0.3c
+ 2.7c @Wide @StartUp x ||0.3c
+ 2.7c @Wide @StartLeft x ||0.3c
+ 2.2c @Wide @StartDown x
+ }
diff --git a/doc/user/preface b/doc/user/preface
index eada554..9b3e964 100644
--- a/doc/user/preface
+++ b/doc/user/preface
@@ -16,9 +16,9 @@ with the software.
Lout is distributed free of charge under the GNU Public License. The
gnu. @Index { GNU Public License }
primary source is directory
-@ID @Code "ftp://ftp.cs.su.oz.au/jeff/lout"
+@ID @Code "ftp://ftp.cs.usyd.edu.au/jeff/lout"
in which may be found a gzipped tar file containing the main distribution
-(currently {@Code "lout-3.17.tar.gz"}), and various other things including
+(currently {@Code "lout-3.18.tar.gz"}), and various other things including
a PostScript version of this guide. The distribution contains source code,
libraries, documentation, license, and installation instructions.
@PP
diff --git a/doc/user/tbl b/doc/user/tbl
index 230c69e..5ed15e1 100644
--- a/doc/user/tbl
+++ b/doc/user/tbl
@@ -27,6 +27,13 @@ matrix atleft { ( } atright { ) } { n above k } a sup k b sup n-k
}
As the example shows, the tables may contain spanning columns, aligned
columns, and rules, and the cells may contain arbitrary objects.
+@FootNote {
+There has been a slight change to {@Code "@Tbl"}, starting with Version
+3.18: if you want columns whose entries are aligned (on decimal points,
+equals signs, etc.), or the analogous thing with rows, you have to ask
+for it now, whereas before it happened automatically. See
+Section {@NumberOf tbl_alig} for the details.
+}
@BeginSections
@Include { tbl_intr } # introduction
diff --git a/doc/user/tbl_alig b/doc/user/tbl_alig
index 24b6864..0032e86 100644
--- a/doc/user/tbl_alig
+++ b/doc/user/tbl_alig
@@ -7,19 +7,21 @@ Columns of numbers are often presented with decimal points aligned:
aligned.columns @Index { aligned columns in tables }
@CD @OneRow @Tbl
marginvertical { 0.5vx }
- aformat { @Cell A }
+ aformat { @Cell indent { align } A }
{
@Rowa A { 5^.46 } marginabove { 0i }
@Rowa A { 3^.4159 }
@Rowa A { 5772^ } marginbelow { 0i }
}
-You can produce this by placing a @Code "^" symbol, which is used
-generally throughout Lout for alignment, just before the alignment point in
+To produce this you need two steps. First, indicate that you want
+an aligned column, using @Code "indent { align }" on the relevant
+cell; and second, place a @Code "^" symbol, which is used generally
+throughout Lout for alignment, just before the alignment point in
each entry:
@ID @OneRow @Code @Verbatim {
@Tbl
marginvertical { 0.5vx }
- aformat { @Cell A }
+ aformat { @Cell indent { align } A }
{
@Rowa A { 5^.46 }
@Rowa A { 3^.4159 }
@@ -27,12 +29,17 @@ each entry:
}
}
The equals signs of equations can be aligned in the same way (see the
-example at the start of this chapter). Aligned cells should have no
-@Code indent option.
+example at the start of this chapter).
@PP
-Owing to problems behind the scenes, getting a heading over the top
-of an aligned column is a problem with no ideal solution. What most
-people want is for the heading to be centred in the column, and the
+Owing to problems behind the scenes, in a column in which one cell is
+labelled {@Code "indent { align }"}, all the other cells have to be
+so labelled, otherwise Lout make a mess of things. This is a problem
+when we want to get a heading over the top of an aligned column: if
+we follow the rule, the @I heading gets aligned, which is wrong; but
+if we don't, Lout makes a mess of things. There is no ideal solution
+to this problem.
+@PP
+What most people want is for the heading to be centred in the column, and the
aligned entries to be centred in the column as a block, but Lout cannot
do this. One approximation is to make the heading cell a spanning
cell with centring, like this:
@@ -51,14 +58,14 @@ an empty second column. }
@Rowb A { 5772^ }
}
}
-The spanning frees the heading from alignment, permitting
-@Code "indent { ctr }" to work:
+The spanning quarantines the centred cell from the aligned cells,
+permitting @Code "indent { ctr }" to work:
@CD @OneRow @Tbl
marginvertical { 0.5vx }
aformat { @StartHSpan @Cell indent { ctr } @B A | }
bformat { @Cell A | }
{
-@Rowa A { Heading } marginabove { 0i }
+@Rowa A { V } marginabove { 0i }
@Rowb A { 5^.46 }
@Rowb A { 3^.4159 }
@Rowb A { 5772^ } marginbelow { 0i }
diff --git a/doc/user/tbl_inde b/doc/user/tbl_inde
index 75a3471..22f89cc 100644
--- a/doc/user/tbl_inde
+++ b/doc/user/tbl_inde
@@ -10,19 +10,18 @@ horizontally. For example,
horizontally centres the entry within the cell. The other possible values
centred.entries @Index { centred entries in tables }
right.justified.entries @Index { right justified entries in tables }
-of this option are {@Code "left"}, {@Code "right"}, or any length (for
+of this option are {@Code "left"} (the default value), {@Code "right"},
+{@Code "align"} (Section {@NumberOf tbl_alig}), or any length (for
example, {@Code 2f}) meaning that much indent.
@PP
There is a corresponding @Code "indentvertical" option for vertical indenting
within the cell. It takes the same values except that @Code "left" is
-renamed {@Code "top"}, and @Code "right" is renamed {@Code foot}.
-A common problem with vertical placement is that words that lack
-ascenders (parts of letters that rise up) or descenders (parts that
-sink down) can easily become misaligned with words that
-don't. Looking at
+renamed {@Code "top"}, @Code "right" is renamed {@Code foot}. A common
+problem with vertical placement is that words that lack ascenders (parts
+of letters that rise up) or descenders (parts that sink down) can easily
+become misaligned with words that don't. Looking at
@CD @Tbl
aformat { @Cell A | @Cell B | @Cell C }
- marginvertical { 0i }
{
@Rowa
A { resume }
diff --git a/doc/user/tbl_mark b/doc/user/tbl_mark
index 8761979..fcd4768 100644
--- a/doc/user/tbl_mark
+++ b/doc/user/tbl_mark
@@ -44,7 +44,7 @@ import @TblSetup
def @AmberLight
{
@OneRow @Tbl
- aformat { @Cell A }
+ aformat { @Cell indentvertical { align } A }
margin { 0i }
strut { no }
paint { no } rule { no }
diff --git a/doc/user/tbl_plai b/doc/user/tbl_plai
index 0813717..d887b86 100644
--- a/doc/user/tbl_plai
+++ b/doc/user/tbl_plai
@@ -7,35 +7,40 @@ Tables work well with plain text output (Section {@NumberOf plain}):
plain.text.tables @Index { plain text tables }
@CD @OneRow -1px @Break @F @Verbatim {
...................................................
-. . .
-. Johnson . Johnson suddenly uttered an .
-. suddenly . apophegm, at which many will .
-. uttered an . start: `Patriotism is the .
-. apophegm, at . last refuge of a scoundrel.' .
-. which many . .
-. will start: . .
-. `Patriotism .................................
-. is the last . . .
-. refuge of a . Johnson . Johnson .
-. scoundrel.' . suddenly . suddenly .
-. . uttered an . uttered an .
-. . apophegm, at . apophegm, at .
-. . which many . which many .
-. . will start: . will start: .
-. . `Patriotism . `Patriotism .
-. . is the last . is the last .
-. . refuge of a . refuge of a .
-. . scoundrel.' . scoundrel.' .
-. . . .
-. . . .
-................................... .
-. . .
-. Johnson suddenly uttered an . .
-. apophegm, at which many will . .
-. start: `Patriotism is the . .
-. last refuge of a scoundrel.' . .
-. . .
-. . .
+. . .
+. Johnson . Johnson suddenly uttered, in .
+. suddenly . a strong determined tone, an .
+. uttered, . apophegm, at which many will .
+. in a strong . start: `Patriotism is the .
+. determined . last refuge of a scoundrel.' .
+. tone, an . .
+. apophegm, at . .
+. which many ..................................
+. will start: . . .
+. `Patriotism . Johnson . Johnson .
+. is the last . suddenly . suddenly .
+. refuge of a . uttered, . uttered, .
+. scoundrel.' . in a strong . in a strong .
+. . determined . determined .
+. . tone, an . tone, an .
+. . apophegm, at . apophegm, at .
+. . which many . which many .
+. . will start: . will start: .
+. . `Patriotism . `Patriotism .
+. . is the last . is the last .
+. . refuge of a . refuge of a .
+. . scoundrel.' . scoundrel.' .
+. . . .
+. . . .
+.................................. .
+. . .
+. Johnson suddenly uttered, in . .
+. a strong determined tone, an . .
+. apophegm, at which many will . .
+. start: `Patriotism is the . .
+. last refuge of a scoundrel.' . .
+. . .
+. . .
...................................................
}
This table was produced by a separate run of Lout and pasted into this
diff --git a/doc/user/tbl_span b/doc/user/tbl_span
index 5621961..ec568dc 100644
--- a/doc/user/tbl_span
+++ b/doc/user/tbl_span
@@ -134,12 +134,12 @@ The names given to the entries ({@Code "A"}, {@Code "B"}, {@Code "C"},
etc.) are quite irrelevant: having a @Code "@Cell D" in one row and a
@Code "@Cell D" in another does not mean that the cells will appear in
the same column.
-@PP
-There is an asymmetry in the spiral above: the first column
-occupies slightly more space than the other two. This arises
-because the left margin of the leftmost column is excluded from the
-calculation of how much space is available. This anomaly might be
-corrected some day.
+# @PP
+# There is an asymmetry in the spiral above: the first column
+# occupies slightly more space than the other two. This arises
+# because the left margin of the leftmost column is excluded from the
+# calculation of how much space is available. This anomaly might be
+# corrected some day.
@PP
There is a @Code "@StartHVSpan" symbol which combines the effects
of @Code "@StartHSpan" and {@Code "@StartVSpan"}. You need to
diff --git a/doc/user/tbl_summ b/doc/user/tbl_summ
index 6fed734..53f957e 100644
--- a/doc/user/tbl_summ
+++ b/doc/user/tbl_summ
@@ -58,10 +58,12 @@ plain text }
D { any length e.g. @Code 3c }
@Rowa
A { indent i }
- D { {@Code left}, {@Code ctr}, {@Code mctr}, {@Code right}, or any length }
+ B { @Code left }
+ D { {@Code left}, {@Code ctr}, {@Code align}, {@Code mctr}, {@Code right}, or any length }
@Rowa
A { indentvertical iv }
- D { {@Code top}, {@Code ctr}, {@Code mctr}, {@Code foot}, or any length }
+ B { @Code top }
+ D { {@Code top}, {@Code ctr}, {@Code align}, {@Code mctr}, {@Code foot}, or any length }
@Rowa
A { strut s }
B { yes }
diff --git a/doc/user/vcpp b/doc/user/vcpp
new file mode 100644
index 0000000..b7c18ca
--- /dev/null
+++ b/doc/user/vcpp
@@ -0,0 +1 @@
+vi cpp cpp_lone cpp_embe cpp_opti cpp_chan cpp_tabs cpp_comm cpp_prog cpp_pipe cpp_erro
diff --git a/externs.h b/externs.h
index a68ff4c..7e64b36 100644
--- a/externs.h
+++ b/externs.h
@@ -1,7 +1,7 @@
/*@externs.h:External Declarations:Directories and file conventions@**********/
/* */
-/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.17) */
-/* COPYRIGHT (C) 1991, 1999 Jeffrey H. Kingston */
+/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.18) */
+/* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */
/* */
/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */
/* Basser Department of Computer Science */
@@ -95,7 +95,7 @@ extern nl_catd MsgCat;
/* */
/*****************************************************************************/
-#define LOUT_VERSION AsciiToFull("Basser Lout Version 3.17 (September 1999)")
+#define LOUT_VERSION AsciiToFull("Basser Lout Version 3.18 (February 2000)")
#define CROSS_DB AsciiToFull("lout")
#define SOURCE_SUFFIX AsciiToFull(".lt")
#define INDEX_SUFFIX AsciiToFull(".li")
@@ -225,7 +225,7 @@ If you're compiling this, you've got the wrong settings in the makefile!
/* */
/* MAX_COLOUR The maximum number of distinct left parameters of */
/* @SetColour and @SetColor symbols allowed (after */
-/* evaluation). This can be increased beyond 4096 */
+/* evaluation). This can be increased beyond 1024 */
/* only by setting aside a larger word_colour() field. */
/* */
/* MAX_LANGUAGE The maximum number of distinct languages allowed. */
@@ -614,7 +614,8 @@ typedef struct
SHORT_LENGTH oyunit; /* value of y unit of measurement */
SHORT_LENGTH ozunit; /* value of z unit of measurement */
FONT_NUM ofont : 12; /* current font */
- COLOUR_NUM ocolour : 12; /* current colour */
+ COLOUR_NUM ocolour : 10; /* current colour */
+ BOOLEAN ooutline : 2; /* TRUE if outlining words */
LANGUAGE_NUM olanguage : 6; /* current language */
BOOLEAN onobreakfirst : 1; /* no break after first line of para */
BOOLEAN onobreaklast : 1; /* no break after last line of para */
@@ -632,6 +633,7 @@ typedef struct
#define display_style(x)(x).osu2.oss2.odisplay_style
#define font(x) (x).ofont
#define colour(x) (x).ocolour
+#define outline(x) (x).ooutline
#define language(x) (x).olanguage
#define nobreakfirst(x) (x).onobreaklast
#define nobreaklast(x) (x).onobreakfirst
@@ -647,6 +649,7 @@ typedef struct
GapCopy(space_gap(x), space_gap(y)), \
font(x) = font(y), \
colour(x) = colour(y), \
+ outline(x) = outline(y), \
language(x) = language(y), \
nobreakfirst(x) = nobreakfirst(y), \
nobreaklast(x) = nobreaklast(y), \
@@ -768,7 +771,8 @@ typedef union
struct /* used by WORD objects only, except underline used by all */
/* objects, including GAP_OBJ */
{ FONT_NUM oword_font : 12;
- COLOUR_NUM oword_colour : 11;
+ COLOUR_NUM oword_colour : 10;
+ BOOLEAN oword_outline : 1;
LANGUAGE_NUM oword_language : 6;
unsigned ounderline : 2;
unsigned oword_hyph : 1;
@@ -962,6 +966,7 @@ typedef union
/* zunit Value of z unit of measurement */
/* font Which internal font (including size) to use */
/* colour Which internal colour to use */
+/* outline TRUE if outlining words rather than filling them */
/* language Which internal language to use */
/* nobreakfirst TRUE if break not allowed after first line of para */
/* nobreaklastt TRUE if break not allowed before last line of para */
@@ -1064,6 +1069,7 @@ typedef union
/* SIZED The size of the word */
/* word_font Font to print this word in (from style) */
/* word_colour Colour to print this word in (from style) */
+/* word_outline If TRUE, print this word in outline (from style) */
/* word_language Language (for hyphenation) of this word (from style) */
/* underline TRUE if continuous underlining goes under this word */
/* word_hyph Hyphenation wanted for this word (from style) */
@@ -1230,7 +1236,8 @@ typedef union
/* last child The right parameter of this symbol */
/* */
/* FONT, SPACE, BREAK - @Font, @Space, @Break symbols */
-/* YUNIT, ZUNIT, COLOUR, LANGUAGE - @YUnit, @ZUnit, @Colour, @Language syms */
+/* YUNIT, ZUNIT - @YUnit, @ZUnit symbols */
+/* COLOUR, OUTLINE, LANGUAGE - @Colour, @Outline, @Language symbols */
/* PLUS, MINUS, - @Plus, @Minus symbols */
/* MELD, COMMON, RUMP, INSERT - @Meld, @Common, @Rump, @Insert symbols */
/* OPEN, TAGGED - @Open, @Tagged symbols */
@@ -1279,6 +1286,7 @@ typedef union
/* CENV, CLOS, LVIS, LUSE, LEO - @LCEnv, @LClos, @LVis, @LUse, @LEO tokens */
/* BACKEND - @BackEnd symbol */
/* CURR_LANG, CURR_FAMILY, CURR_FACE - @CurrLang, @CurrFamily, @CurrFace */
+/* CURR_YUNIT, CURR_ZUNIT - @CurrYUnit, @CurrZUnit */
/* */
/* TOKEN While still being parsed */
/* */
@@ -1598,6 +1606,7 @@ typedef union rec
#define spanner_count(x) word_font(x)
#define word_colour(x) (x)->os1.ou2.os22.oword_colour
#define spanner_sized(x) word_colour(x)
+#define word_outline(x) (x)->os1.ou2.os22.oword_outline
#define word_language(x) (x)->os1.ou2.os22.oword_language
#define spanner_broken(x) word_language(x)
#define underline(x) (x)->os1.ou2.os22.ounderline
@@ -1886,85 +1895,88 @@ typedef struct mapvec {
#define BREAK 59 /* to s @Break */
#define UNDERLINE 60 /* to s @Underline */
#define COLOUR 61 /* to s @SetColour and @SetColor */
-#define LANGUAGE 62 /* to s @Language */
-#define CURR_LANG 63 /* to s @CurrLang */
-#define CURR_FAMILY 64 /* to s @CurrFamily */
-#define CURR_FACE 65 /* to s @CurrFace */
-#define COMMON 66 /* to s @Common */
-#define RUMP 67 /* to s @Rump */
-#define MELD 68 /* to s @Meld */
-#define INSERT 69 /* to s @Insert */
-#define ONE_OF 70 /* to s @OneOf */
-#define NEXT 71 /* to s @Next */
-#define PLUS 72 /* to s @Plus */
-#define MINUS 73 /* to s @Minus */
-#define ENV_OBJ 74 /* to s object with envt (no name) */
-#define ENV 75 /* to s @LEnv */
-#define ENVA 76 /* to s @LEnvA */
-#define ENVB 77 /* to s @LEnvB */
-#define ENVC 78 /* to s @LEnvC */
-#define ENVD 79 /* to s @LEnvD */
-#define CENV 80 /* to s @LCEnv */
-#define CLOS 81 /* to s @LClos */
-#define LVIS 82 /* to s @LVis */
-#define LUSE 83 /* to s @LUse */
-#define LEO 84 /* to s @LEO */
-#define OPEN 85 /* to s @Open */
-#define TAGGED 86 /* to s @Tagged */
-#define INCGRAPHIC 87 /* to s @IncludeGraphic */
-#define SINCGRAPHIC 88 /* to s @SysIncludeGraphic */
-#define PLAIN_GRAPHIC 89 /* to s @PlainGraphic */
-#define GRAPHIC 90 /* to s @Graphic */
-#define TSPACE 91 /* t a space token, parser only */
-#define TJUXTA 92 /* t a juxta token, parser only */
-#define LBR 93 /* t s left brace token */
-#define RBR 94 /* t s right brace token */
-#define BEGIN 95 /* t s @Begin token */
-#define END 96 /* t s @End token */
-#define USE 97 /* t s @Use */
-#define NOT_REVEALED 98 /* t s @NotRevealed */
-#define GSTUB_NONE 99 /* t a galley stub, no rpar */
-#define GSTUB_INT 100 /* t galley stub internal rpar */
-#define GSTUB_EXT 101 /* t galley stub external rpar */
-#define UNEXPECTED_EOF 102 /* t unexpected end of file */
-#define INCLUDE 103 /* s @Include */
-#define SYS_INCLUDE 104 /* s @SysInclude */
-#define PREPEND 105 /* s @Prepend */
-#define SYS_PREPEND 106 /* s @SysPrepend */
-#define DATABASE 107 /* s @Database */
-#define SYS_DATABASE 108 /* s @SysDatabase */
-/* #define START 109 */ /* s \Start */
-#define DEAD 110 /* i a dead galley */
-#define UNATTACHED 111 /* i an inner, unsized galley */
-#define RECEPTIVE 112 /* i a receptive object index */
-#define RECEIVING 113 /* i a receiving object index */
-#define RECURSIVE 114 /* i a recursive definite obj. */
-#define PRECEDES 115 /* i an ordering constraint */
-#define FOLLOWS 116 /* i other end of ordering c. */
-#define CROSS_LIT 117 /* i literal word cross-ref */
-#define CROSS_FOLL 118 /* i following type cross-ref */
-#define CROSS_FOLL_OR_PREC 119 /* i follorprec type cross-ref */
-#define GALL_FOLL 120 /* i galley with &&following */
-#define GALL_FOLL_OR_PREC 121 /* i galley with &&following */
-#define CROSS_TARG 122 /* i value of cross-ref */
-#define GALL_TARG 123 /* i target of these galleys */
-#define GALL_PREC 124 /* i galley with &&preceding */
-#define CROSS_PREC 125 /* i preceding type cross-ref */
-#define PAGE_LABEL_IND 126 /* i index of PAGE_LABEL */
-#define SCALE_IND 127 /* i index of auto SCALE */
-#define COVER_IND 128 /* i index of HCOVER or VCOVER */
-#define EXPAND_IND 129 /* i index of HEXPAND or VEXPD */
-#define THREAD 130 /* a sequence of threads */
-#define CROSS_SYM 131 /* cross-ref info */
-#define CR_ROOT 132 /* RootCross */
-#define MACRO 133 /* a macro symbol */
-#define LOCAL 134 /* a local symbol */
-#define LPAR 135 /* a left parameter */
-#define NPAR 136 /* a named parameter */
-#define RPAR 137 /* a right parameter */
-#define EXT_GALL 138 /* an external galley */
-#define CR_LIST 139 /* a list of cross references */
-#define DISPOSED 140 /* a disposed record */
+#define OUTLINE 62 /* to s @Outline */
+#define LANGUAGE 63 /* to s @Language */
+#define CURR_LANG 64 /* to s @CurrLang */
+#define CURR_FAMILY 65 /* to s @CurrFamily */
+#define CURR_FACE 66 /* to s @CurrFace */
+#define CURR_YUNIT 67 /* to s @CurrYUnit */
+#define CURR_ZUNIT 68 /* to s @CurrZUnit */
+#define COMMON 69 /* to s @Common */
+#define RUMP 70 /* to s @Rump */
+#define MELD 71 /* to s @Meld */
+#define INSERT 72 /* to s @Insert */
+#define ONE_OF 73 /* to s @OneOf */
+#define NEXT 74 /* to s @Next */
+#define PLUS 75 /* to s @Plus */
+#define MINUS 76 /* to s @Minus */
+#define ENV_OBJ 77 /* to s object with envt (no name) */
+#define ENV 78 /* to s @LEnv */
+#define ENVA 79 /* to s @LEnvA */
+#define ENVB 80 /* to s @LEnvB */
+#define ENVC 81 /* to s @LEnvC */
+#define ENVD 82 /* to s @LEnvD */
+#define CENV 83 /* to s @LCEnv */
+#define CLOS 84 /* to s @LClos */
+#define LVIS 85 /* to s @LVis */
+#define LUSE 86 /* to s @LUse */
+#define LEO 87 /* to s @LEO */
+#define OPEN 88 /* to s @Open */
+#define TAGGED 89 /* to s @Tagged */
+#define INCGRAPHIC 90 /* to s @IncludeGraphic */
+#define SINCGRAPHIC 91 /* to s @SysIncludeGraphic */
+#define PLAIN_GRAPHIC 92 /* to s @PlainGraphic */
+#define GRAPHIC 93 /* to s @Graphic */
+#define TSPACE 94 /* t a space token, parser only */
+#define TJUXTA 95 /* t a juxta token, parser only */
+#define LBR 96 /* t s left brace token */
+#define RBR 97 /* t s right brace token */
+#define BEGIN 98 /* t s @Begin token */
+#define END 99 /* t s @End token */
+#define USE 100 /* t s @Use */
+#define NOT_REVEALED 101 /* t s @NotRevealed */
+#define GSTUB_NONE 102 /* t a galley stub, no rpar */
+#define GSTUB_INT 103 /* t galley stub internal rpar */
+#define GSTUB_EXT 104 /* t galley stub external rpar */
+#define UNEXPECTED_EOF 105 /* t unexpected end of file */
+#define INCLUDE 106 /* s @Include */
+#define SYS_INCLUDE 107 /* s @SysInclude */
+#define PREPEND 108 /* s @Prepend */
+#define SYS_PREPEND 109 /* s @SysPrepend */
+#define DATABASE 110 /* s @Database */
+#define SYS_DATABASE 111 /* s @SysDatabase */
+/* #define START 112 */ /* s \Start */
+#define DEAD 113 /* i a dead galley */
+#define UNATTACHED 114 /* i an inner, unsized galley */
+#define RECEPTIVE 115 /* i a receptive object index */
+#define RECEIVING 116 /* i a receiving object index */
+#define RECURSIVE 117 /* i a recursive definite obj. */
+#define PRECEDES 118 /* i an ordering constraint */
+#define FOLLOWS 119 /* i other end of ordering c. */
+#define CROSS_LIT 120 /* i literal word cross-ref */
+#define CROSS_FOLL 121 /* i following type cross-ref */
+#define CROSS_FOLL_OR_PREC 122 /* i follorprec type cross-ref */
+#define GALL_FOLL 123 /* i galley with &&following */
+#define GALL_FOLL_OR_PREC 124 /* i galley with &&following */
+#define CROSS_TARG 125 /* i value of cross-ref */
+#define GALL_TARG 126 /* i target of these galleys */
+#define GALL_PREC 127 /* i galley with &&preceding */
+#define CROSS_PREC 128 /* i preceding type cross-ref */
+#define PAGE_LABEL_IND 129 /* i index of PAGE_LABEL */
+#define SCALE_IND 130 /* i index of auto SCALE */
+#define COVER_IND 131 /* i index of HCOVER or VCOVER */
+#define EXPAND_IND 132 /* i index of HEXPAND or VEXPD */
+#define THREAD 133 /* a sequence of threads */
+#define CROSS_SYM 134 /* cross-ref info */
+#define CR_ROOT 135 /* RootCross */
+#define MACRO 136 /* a macro symbol */
+#define LOCAL 137 /* a local symbol */
+#define LPAR 138 /* a left parameter */
+#define NPAR 139 /* a named parameter */
+#define RPAR 140 /* a right parameter */
+#define EXT_GALL 141 /* an external galley */
+#define CR_LIST 142 /* a list of cross references */
+#define DISPOSED 143 /* a disposed record */
#define is_indefinite(x) ((x) >= CLOSURE && (x) <= HEAD)
#define is_definite(x) ((x) >= SPLIT && (x) <= GRAPHIC)
@@ -2029,9 +2041,9 @@ typedef struct mapvec {
#define SMALL_CAPS_ON 1 /* small capitals */
/* sides of a mark */
-#define BACK 141 /* means lies to left of mark */
-#define ON 142 /* means lies on mark */
-#define FWD 143 /* means lies to right of mark */
+#define BACK 144 /* means lies to left of mark */
+#define ON 145 /* means lies on mark */
+#define FWD 146 /* means lies to right of mark */
/* statuses of thread objects */
#define NOTSIZED 0 /* this thread object is not sized */
@@ -2039,15 +2051,15 @@ typedef struct mapvec {
#define FINALSIZE 2 /* thread object size is now final */
/* constraint statuses */
-#define PROMOTE 144 /* this component may be promoted */
-#define CLOSE 145 /* must close dest before promoting */
-#define BLOCK 146 /* cannot promote this component */
-#define CLEAR 147 /* this constraint is now satisfied */
+#define PROMOTE 147 /* this component may be promoted */
+#define CLOSE 148 /* must close dest before promoting */
+#define BLOCK 149 /* cannot promote this component */
+#define CLEAR 150 /* this constraint is now satisfied */
/* gap increment types */
-#define GAP_ABS 148 /* absolute, e.g. 3p */
-#define GAP_INC 149 /* increment, e.g. +3p */
-#define GAP_DEC 150 /* decrement, e.g. -3p */
+#define GAP_ABS 151 /* absolute, e.g. 3p */
+#define GAP_INC 152 /* increment, e.g. +3p */
+#define GAP_DEC 153 /* decrement, e.g. -3p */
/* file types */
#define SOURCE_FILE 0 /* input file from command line */
@@ -2231,10 +2243,13 @@ typedef struct mapvec {
#define KW_UNDERLINE AsciiToFull("@Underline")
#define KW_COLOUR AsciiToFull("@SetColour")
#define KW_COLOR AsciiToFull("@SetColor")
+#define KW_OUTLINE AsciiToFull("@Outline")
#define KW_LANGUAGE AsciiToFull("@Language")
#define KW_CURR_LANG AsciiToFull("@CurrLang")
#define KW_CURR_FAMILY AsciiToFull("@CurrFamily")
#define KW_CURR_FACE AsciiToFull("@CurrFace")
+#define KW_CURR_YUNIT AsciiToFull("@CurrYUnit")
+#define KW_CURR_ZUNIT AsciiToFull("@CurrZUnit")
#define KW_ENV AsciiToFull("@LEnv")
#define KW_ENVA AsciiToFull("@@A")
#define KW_ENVB AsciiToFull("@@B")
diff --git a/hyph/old.italian.lh b/hyph/old.italian.lh
deleted file mode 100644
index 032366c..0000000
--- a/hyph/old.italian.lh
+++ /dev/null
@@ -1,135 +0,0 @@
-Lout hyphenation information
-%
-% Italian hyphenation file, created by Andrea Cisternino on
-% 20 April 1997 from a TeX file supplied by Claudio Beccari.
-% See long comment below for full information about the origin
-% of this file, and a copyright notice.
-%
-% JeffK has made the following modifications to convert to ISO-LATIN-1:
-%
-% TeX file Lout file
-% 'a \341
-% 'e \351
-% 'i \355
-% 'o \363
-% 'u \372
-% "u \374
-% ~n \361
-%
-
-Classes:
-@!$%^&*()_-+=~`{[}]:;|<,.>?/0123456789
-aA
-bB
-cC
-dD
-eE
-fF
-gG
-hH
-iI
-jJ
-kK
-lL
-mM
-nN
-oO
-pP
-qQ
-rR
-sS
-tT
-uU
-vV
-wW
-xX
-yY
-zZ
-áÁ
-éÉ
-íÍ
-óÓ
-úÚ
-'
-
-Patterns:
-%%%%%%%%%%%%%%%%%%%%%%%%%%% file ithyph.tex %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-% Prepared by Claudio Beccari e-mail beccari@polito.it
-%
-% Dipartimento di Elettronica
-% Politecnico di Torino
-% Corso Duca degli Abruzzi, 24
-% 10129 TORINO
-%
-% \versionnumber{4.2} \versiondate{24 may 1996}
-%
-% These hyphenation patterns for the Italian language are supposed to comply
-% with the Reccomendation UNI 6461 on hyphenation issued by the Italian
-% Standards Institution (Ente Nazionale di Unificazione UNI). No guarantee
-% or declaration of fitness to any particular purpose is given and any
-% liability is disclaimed.
-%
-% See comments and loading instructions at the end of the file
-%
-% Commented (AC): \lccode`\'=`\' % Apostrophe has its own lccode
-% Commented (AC): % so that it is treated as a
-% Commented (AC): % letter
-% Commented (AC): \patterns{
-.anti1 .anti3m2n
-.di2s3cine
-.e2x
-.fran2k3
-.circu2m1
-.wa2g3n
-.ca4p3s
-.opto1
-.para1
-.pre1
-.p2s
-%.ri1a2 .ri1e2 .re1i2 .ri1o2 .ri1u2
-.su2b3lu .su2b3r
-.wel2t1
-3p2sic
-3p2neu1
-a1ia a1ie a1io a1iu a1uo a1ya 2at.
-e1iu e2w
-io1i
-o1ia o1ie o1io o1iu
-u1u
-%
-'2
-1b 2bb 2bc 2bd 2bf 2bm 2bn 2bp 2bs 2bt 2bv
- b2l b2r 2b. 2b'. 2b''
-1c 2cb 2cc 2cd 2cf 2ck 2cm 2cn 2cq 2cs 2ct 2cz
- 2chh c2h 2chb ch2r 2chn c2l c2r 2c. 2c'. 2c'' .c2
-1d 2db 2dd 2dg 2dl 2dm 2dn 2dp d2r 2ds 2dt 2dv 2dw
- 2d. 2d'. 2d'' .d2
-1f 2fb 2fg 2ff 2fn f2l f2r 2fs 2ft 2f. 2f'. 2f''
-1g 2gb 2gd 2gf 2gg g2h g2l 2gm g2n 2gp g2r 2gs 2gt
- 2gv 2gw 2gz 2gh2t 2g. 2g'. 2g''
-1h 2hb 2hd h2l 2hm 2hn 2hr 2hv 2h. 2h'. 2h''
-1j 2j. 2j'. 2j''
-1k 2kg 2kf k2h 2kk k2l k2r 2kt 2k. 2k'. 2k''
-1l 2lb 2lc 2ld 2l3f2 2lg l2h 2lk 2ll 2lm 2ln 2lp
- 2lq 2lr 2ls 2lt 2lv 2lw 2lz 2l. 2l'. 2l''
-1m 2mb 2mc 2mf 2ml 2mm 2mn 2mp 2mq 2mr 2ms 2mt 2mv 2mw
- 2m. 2m'. 2m''
-1n 2nc 2nd 2nf 2ng 2nk 2nl 2nm 2nn 2np 2nq 2nr 2ns n2s3r
- 2nt 2nv 2nz 2n' n2g3n 2nheit. 2n. 2n'. 2n''
-1p 2pd p2h p2l 2pn 2pp p2r 2ps 2pt 2pz 2p. 2p'. 2p''
-1q 2qq 2q. 2q'. 2q''
-1r 2rb 2rc 2rd 2rf r2h 2rg 2rk 2rl 2rm 2rn 2rp
- 2rq 2rr 2rs 2rt rt2s3 2rv 2rx 2rw 2rz 2r. 2r'. 2r''
-1s2 2shm 2s3s 2s3p2n 2stb 2stc 2std 2stf 2stg 2stm 2stn 2stp 2sts 2stt 2stv 2sz
- 4s. 4s'. 4s''
-1t 2tb 2tc 2td 2tf 2tg t2h t2l 2tm 2tn 2tp t2r 2ts 3t2sch
- 2tt 2tv 2tw t2z 2tzk 2tzs 2t. 2t'. 2t''
-1v 2vc 2vl v2r 2vv 2v. 2v'. 2v''
-1w w2h wa2r 2w1y 2w. 2w'. 2w''
-1x 2xw 2x. 2x'. 2x''
-y1ou y1i
-1z 2zb 2zd 2zl 2zn 2zp 2zt 2zs 2zv 2zz 2z. 2z'. 2z'' .z2
-% Commented (AC): } % Pattern end
-% Commented (AC):
-% Commented (AC): \endinput
diff --git a/hyph/portugal.lh b/hyph/portugal.lh
new file mode 100644
index 0000000..8139f55
--- /dev/null
+++ b/hyph/portugal.lh
@@ -0,0 +1,104 @@
+Lout hyphenation information
+% Portuguese hyphenation file, created by José Roberto B. de A. Monteiro
+% at 29 october 1999 from scratch
+%
+% (C) 1999 José Roberto B. de A. Monteiro (betoes@sel.eesc.sc.usp.br)
+%
+% This is free software. You may copy it or redistribute under the
+% terms of GNU General Public License.
+%
+% END OF COPYRIGHT NOTICE
+%
+%
+
+Classes:
+@!$%^&*()_-+=~`{[}]:;'|<,.>?/0123456789
+aA
+áÁ
+âÂ
+àÀ
+ãÃ
+bB
+cC
+çÇ
+dD
+eE
+éÉ
+êÊ
+fF
+gG
+hH
+iI
+íÍ
+jJ
+kK
+lL
+mM
+nN
+oO
+óÓ
+ôÔ
+õÕ
+pP
+qQ
+rR
+sS
+tT
+uU
+úÚ
+üÜ
+vV
+wW
+xX
+yY
+zZ
+
+Patterns:
+% simple patterns
+1ba 1be 1bi 1bo 1bu 1bá 1bé 1bí 1bó 1bú 1bâ 1bê 1bô 1bã 1bõ
+1ca 1ce 1ci 1co 1cu 1cá 1cé 1cí 1có 1cú 1câ 1cê 1cô 1cã 1cõ
+1da 1de 1di 1do 1du 1dá 1dé 1dí 1dó 1dú 1dâ 1dê 1dô 1dã 1dõ
+1fa 1fe 1fi 1fo 1fu 1fá 1fé 1fí 1fó 1fú 1fâ 1fê 1fô 1fã 1fõ
+1ga 1ge 1gi 1go 1gu 1gá 1gé 1gí 1gó 1gú 1gâ 1gê 1gô 1gã 1gõ
+1ha 1he 1hi 1ho 1hu 1há 1hé 1hí 1hó 1hú 1hâ 1hê 1hô 1hã 1hõ
+1ja 1je 1ji 1jo 1ju 1já 1jé 1jí 1jó 1jú 1jâ 1jê 1jô 1jã 1jõ
+1ka 1ke 1ki 1ko 1ku 1ká 1ké 1kí 1kó 1kú 1kâ 1kê 1kô 1kã 1kõ
+1la 1le 1li 1lo 1lu 1lá 1lé 1lí 1ló 1lú 1lâ 1lê 1lô 1lã 1lõ
+1ma 1me 1mi 1mo 1mu 1má 1mé 1mí 1mó 1mú 1mâ 1mê 1mô 1mã 1mõ
+1na 1ne 1ni 1no 1nu 1ná 1né 1ní 1nó 1nú 1nâ 1nê 1nô 1nã 1nõ
+1pa 1pe 1pi 1po 1pu 1pá 1pé 1pí 1pó 1pú 1pâ 1pê 1pô 1pã 1põ
+% q-u is not used
+1ra 1re 1ri 1ro 1ru 1rá 1ré 1rí 1ró 1rú 1râ 1rê 1rô 1rã 1rõ
+1sa 1se 1si 1so 1su 1sá 1sé 1sí 1só 1sú 1sâ 1sê 1sô 1sã 1sõ
+1ta 1te 1ti 1to 1tu 1tá 1té 1tí 1tó 1tú 1tâ 1tê 1tô 1tã 1tõ
+1va 1ve 1vi 1vo 1vu 1vá 1vé 1ví 1vó 1vú 1vâ 1vê 1vô 1vã 1võ
+1wa 1we 1wi 1wo 1wu 1wá 1wé 1wí 1wó 1wú 1wâ 1wê 1wô 1wã 1wõ
+1xa 1xe 1xi 1xo 1xu 1xá 1xé 1xí 1xó 1xú 1xâ 1xê 1xô 1xã 1xõ
+1ya 1ye 1yi 1yo 1yu 1yá 1yé 1yí 1yó 1yú 1yâ 1yê 1yô 1yã 1yõ
+1za 1ze 1zi 1zo 1zu 1zá 1zé 1zí 1zó 1zú 1zâ 1zê 1zô 1zã 1zõ
+1-
+
+1b2l 1b2r
+1c2h 1c2l 1c2r
+1d2l 1d2r
+1f2l 1f2r
+1g2l 1g2r 1gu4a 1gu4e 1gu4i 1gü4e 1gü4i
+1k2l 1k2r
+1l2h
+1n2h
+1p2l 1p2r
+1qu4a 1qu4e 1qu4i 1qu4o 1qü4e 1qü4i
+1t2l 1t2r
+1v2l 1v2r
+1w2l 1w2r
+
+a3a a3e a3o
+c3c
+e3a e3e e3o
+i3a i3e i3i i3o i3â i3ê i3ô
+o3a o3e o3o
+r3r
+s3s
+u3a u3e u3o u3u
+% sub- ...
+su2b2r su2b2l
diff --git a/include/README b/include/README
index 0204b0c..dc2cd91 100644
--- a/include/README
+++ b/include/README
@@ -22,12 +22,17 @@ Setup files (containing mainly lists of options settable by the user)
diag The Diag diagram drawing package
fig The Fig advanced graphics package (OBSOLETE, use diag)
graph The Graph graph drawing package
- cprint The cprint C and C++ program printing package
pas The Pas Pascal progam printing package
modula The Modula Modula-2 progam printing package
latin2 The Latin2 (Eastern European characters) package
russian The Russian language package
+ Setup files for program formatting packages (choose any combination):
+
+ cprint C and C++
+ eiffel Eiffel
+ blue Blue
+
Source files (containing Lout and PostScript source code for the packages)
--------------------------------------------------------------------------
@@ -53,9 +58,12 @@ Source files (containing Lout and PostScript source code for the packages)
graphf The Graph graph drawing package
graphf.etc A file included by graphf
graphf.lpg A PostScript prepend file needed by graphf
- cprintf The cprint C and C++ program printing package
- pasf The Pas Pascal progam printing package
- modulaf The Modula Modula-2 progam printing package
+ progf Programming language formatting (for use by prg2lout)
+ cprintf C and C++
+ eiffelf Eiffel
+ bluef Blue
+ pasf Pascal
+ modulaf Modula-2
latin2.fd Latin2 font definitions file (placeholder file)
russian.fd Russian font definitions file (placeholder file)
@@ -70,4 +78,4 @@ Miscellaneous
Jeffrey H. Kingston
-26 May 1999
+26 February 2000
diff --git a/include/blue b/include/blue
new file mode 100644
index 0000000..78c5d33
--- /dev/null
+++ b/include/blue
@@ -0,0 +1,71 @@
+###############################################################################
+# #
+# Lout setup file for Blue program printing #
+# #
+# Jeffrey H. Kingston #
+# 23 February 2000 #
+# #
+###############################################################################
+
+
+###############################################################################
+# #
+# The @SysInclude { bluef } line #
+# #
+# This line causes Lout to read the definitions for Blue, and should #
+# not be touched. #
+# #
+###############################################################################
+
+@SysInclude { bluef }
+
+
+###############################################################################
+# #
+# The @BlueSetup @Use clause #
+# #
+# To change the default value of any option, delete the # at the start of #
+# its line and change the value between braces. #
+# #
+###############################################################################
+
+@Use { @BlueSetup
+ # style { varying @OrIfPlain fixed } # fixed, varying, or symbol
+ # pipe { } # pipe source through this
+
+ # fixedfont { Courier } # font family if fixed
+ # fixedstrings { Base } # string face if fixed
+ # fixedidentifiers { Base } # identifier face if fixed
+ # fixedcomments { Base } # comment face if fixed
+ # fixedkeywords { Base } # keyword face if fixed
+ # fixednumbers { Base } # number face if fixed
+ # fixedoperators { Base } # operator face if fixed
+ # fixedsize { -1.0p } # font size if fixed
+ # fixedline { 1.0vx } # line-space if fixed
+ # fixedtabin { 8 } # tab interval if fixed
+ # fixedtabout { 8s } # tab width if fixed
+
+ # varyingfont { } # font family if varying
+ # varyingstrings { Slope } # string face if varying
+ # varyingidentifiers { Slope } # identifier face if varying
+ # varyingcomments { Base } # comment face if varying
+ # varyingkeywords { Bold } # keyword face if varying
+ # varyingnumbers { Base } # number face if varying
+ # varyingoperators { Base } # operator face if varying
+ # varyingsize { 1.0f } # font size if varying
+ # varyingline { 1.0vx } # line-space if varying
+ # varyingtabin { 8 } # tab interval if varying
+ # varyingtabout { 3f } # tab width if varying
+
+ # symbolfont { } # font family if symbol
+ # symbolstrings { Slope } # string face if symbol
+ # symbolidentifiers { Slope } # identifier face if symbol
+ # symbolcomments { Base } # comment face if symbol
+ # symbolkeywords { Bold } # keyword face if symbol
+ # symbolnumbers { Base } # number face if symbol
+ # symboloperators { Base } # operator face if symbol
+ # symbolsize { 1.0f } # font size if symbol
+ # symbolline { 1.0vx } # line-space if symbol
+ # symboltabin { 8 } # tab interval if symbol
+ # symboltabout { 3f } # tab width if symbol
+}
diff --git a/include/bluef b/include/bluef
new file mode 100644
index 0000000..5d4a06d
--- /dev/null
+++ b/include/bluef
@@ -0,0 +1,275 @@
+
+###############################################################################
+# #
+# Lout @BlueSetup package for formatting Blue programs #
+# #
+# Version 2.0 by Jeffrey H. Kingston, February 2000. #
+# #
+# This package uses a filtered body parameter to convert Blue source #
+# code into Lout source. The filter program is prg2lout, which is #
+# distributed with Lout and should be compiled and installed wherever #
+# Lout itself is. #
+# #
+###############################################################################
+
+export @Blue
+def @BlueSetup
+ named style
+ named @OrIfPlain left x right y
+ { @BackEnd @Case { PlainText @Yield y else @Yield x } }
+ { varying @OrIfPlain fixed } # print style
+ named pipe { } # pipe through this first
+
+ named fixedfont { Courier } # font family if fixed
+ named fixedstrings { Base } # string face if fixed
+ named fixedidentifiers { Base } # identifier face if fixed
+ named fixedcomments { Base } # comment face if fixed
+ named fixedkeywords { Base } # keyword face if fixed
+ named fixednumbers { Base } # number face if fixed
+ named fixedoperators { Base } # operator face if fixed
+ named fixedsize { -1.0p } # font size if fixed
+ named fixedline { 1.0vx } # line-space if fixed
+ named fixedtabin { 8 } # tab interval if fixed
+ named fixedtabout { 8s } # tab width if fixed
+
+ named varyingfont { } # font family if varying
+ named varyingstrings { Slope } # string face if varying
+ named varyingidentifiers { Slope } # identifier face if varying
+ named varyingcomments { Base } # comment face if varying
+ named varyingkeywords { Bold } # keyword face if varying
+ named varyingnumbers { Base } # number face if varying
+ named varyingoperators { Base } # operator face if varying
+ named varyingsize { 1.0f } # font size if varying
+ named varyingline { 1.0vx } # line-space if varying
+ named varyingtabin { 8 } # tab interval if varying
+ named varyingtabout { 3f } # tab width if varying
+
+ named symbolfont { } # font family if symbol
+ named symbolstrings { Slope } # string face if symbol
+ named symbolidentifiers { Slope } # identifier face if symbol
+ named symbolcomments { Base } # comment face if symbol
+ named symbolkeywords { Bold } # keyword face if symbol
+ named symbolnumbers { Base } # number face if symbol
+ named symboloperators { Base } # operator face if symbol
+ named symbolsize { 1.0f } # font size if symbol
+ named symbolline { 1.0vx } # line-space if symbol
+ named symboltabin { 8 } # tab interval if symbol
+ named symboltabout { 3f } # tab width if symbol
+
+@Begin
+
+ export
+
+ "$>" @S @D @C @K @N @O @A @ST @ED @M
+
+ def @Blue
+ named style { style } # style
+ named pipe { pipe } # pipe through this first
+ named font { dft } # font family
+ named strings { dft } # string font
+ named identifiers { dft } # ident. font
+ named comments { dft } # comment font
+ named keywords { dft } # keyword font
+ named numbers { dft } # number font
+ named operators { dft } # operator font
+ named size { dft } # font size
+ named line { dft } # line-space
+ named tabin { dft } # tab interval
+ named tabout { dft } # tab width
+ body @Body # filtered, see below
+ @Begin
+
+ def @Test # returns x unless x is dft
+ left x
+ named iffixed {}
+ named ifvarying {}
+ named ifsymbol {}
+ {
+ x @Case {
+ dft @Yield {
+ style @Case {
+ fixed @Yield { iffixed }
+ varying @Yield { ifvarying }
+ symbol @Yield { ifsymbol }
+ }
+ }
+ else @Yield x
+ }
+ }
+
+ def @InitTab
+ {
+ tabin @Test
+ iffixed { fixedtabin }
+ ifvarying { varyingtabin }
+ ifsymbol { symboltabin }
+ }
+
+ def @InitTabWidth
+ {
+ tabout @Test
+ iffixed { fixedtabout }
+ ifvarying { varyingtabout }
+ ifsymbol { symboltabout }
+ }
+
+ def @Filter
+ {
+ pipe @Case {
+ "" @Yield {
+ "prg2lout -r -lBlue" -i{@FilterIn} -o{@FilterOut} -e{@FilterErr}
+ -t{@InitTab} -T{@InitTabWidth}
+ }
+ else @Yield {
+ "cat" @FilterIn "|" pipe "|"
+ "prg2lout -r -lBlue" -o{@FilterOut}
+ -e{@FilterErr} -t{@InitTab} -T{@InitTabWidth}
+ }
+ }
+ }
+
+ def @InitFontFamily
+ {
+ font @Test
+ iffixed { fixedfont }
+ ifvarying { varyingfont }
+ ifsymbol { symbolfont }
+ }
+
+ def @InitSize
+ {
+ size @Test
+ iffixed { fixedsize }
+ ifvarying { varyingsize }
+ ifsymbol { symbolsize }
+ }
+
+ def @InitLine
+ {
+ line @Test
+ iffixed { fixedline }
+ ifvarying { varyingline }
+ ifsymbol { symbolline }
+ }
+
+ def @S # for formatting strings
+ right x
+ {
+ # "\"" &
+ strings @Test
+ iffixed { fixedstrings }
+ ifvarying { varyingstrings }
+ ifsymbol { symbolstrings }
+ @Font x
+ # & "\""
+ }
+
+# def "`"
+# {
+# style @Case {
+# symbol @Yield { "`" }
+# else @Yield { "'" }
+# }
+# }
+
+ def @D # for formatting identifiers
+ right x
+ {
+ identifiers @Test
+ iffixed { fixedidentifiers }
+ ifvarying { varyingidentifiers }
+ ifsymbol { symbolidentifiers }
+ @Font x
+ }
+
+ def @C # for formatting comments
+ right x
+ {
+ comments @Test
+ iffixed { fixedcomments }
+ ifvarying { varyingcomments }
+ ifsymbol { symbolcomments }
+ @Font x
+ }
+
+ def @K # for formatting keywords
+ right x
+ {
+ keywords @Test
+ iffixed { fixedkeywords }
+ ifvarying { varyingkeywords }
+ ifsymbol { symbolkeywords }
+ @Font x
+ }
+
+ def @N # for formatting numbers
+ right x
+ {
+ numbers @Test
+ iffixed { fixednumbers }
+ ifvarying { varyingnumbers }
+ ifsymbol { symbolnumbers }
+ @Font x
+ }
+
+ def @O # for formatting operators
+ named symb {}
+ right x
+ {
+ operators @Test
+ iffixed { fixedoperators }
+ ifvarying { varyingoperators }
+ ifsymbol { symboloperators }
+ @Font x
+ }
+
+ def @A # get characters from the Adobe Symbol font
+ left sym
+ right x
+ {
+ style @Case {
+ symbol @Yield { { Symbol Base } @Font @Char sym }
+ else @Yield { x }
+ }
+ }
+
+ def @ST # for formatting asterisks
+ right x
+ {
+ operators @Test
+ iffixed { fixedoperators }
+ ifvarying { varyingoperators }
+ ifsymbol { symboloperators }
+ @Font "0.5w" @VShift x
+ }
+
+ def @ED # for formatting larger dots
+ right x
+ {
+ operators @Test
+ iffixed { fixedoperators }
+ ifvarying { varyingoperators }
+ ifsymbol { symboloperators }
+ @Font @BackEnd @Case {
+ PlainText @Yield x
+ else @Yield { "1.2f" @Font "+0.05f" @VShift @O x &"0.05f" }
+ }
+ }
+
+ macro "$>" { {} & }
+
+ def @M right x
+ {
+ style @Case {
+ fixed @Yield "-"
+ varying @Yield { { Symbol Base } @Font @Char minus }
+ symbol @Yield { { Symbol Base } @Font @Char minus }
+ }
+ }
+
+ { @InitFontFamily Base @InitSize } @Font
+ { @InitLine lines } @Break @Body
+
+ @End @Blue
+
+@End @BlueSetup
diff --git a/include/book b/include/book
index 2d28f62..4a8a5a8 100644
--- a/include/book
+++ b/include/book
@@ -101,9 +101,12 @@
# @TableNumbers { Arabic } # method of numbering tables
# @FigureCaptionPos { Below } # Above or Below
# @TableCaptionPos { Below } # Above or Below
- # @CaptionFont { } # figure, table caption font
- # @CaptionBreak { } # figure, table caption break
- # @CaptionFormat { @B { number @DotSep @OneCol } } # figure, table caption format
+ # @FigureCaptionFont { -2p } # figure caption font
+ # @FigureCaptionBreak { adjust hyphen 1.2fx } # figure caption break
+ # @FigureCaptionFormat{ {@B { word @NumSep number. &2s }} @Insert caption }
+ # @TableCaptionFont { -2p } # table caption font
+ # @TableCaptionBreak { adjust hyphen 1.2fx } # table caption break
+ # @TableCaptionFormat { {@B { word @NumSep number. &2s }} @Insert caption }
# @MakeFigureContents { No } # list of figures at start
# @MakeTableContents { No } # list of tables at start
# @MakeContents { No } # make contents? Yes or No
@@ -254,6 +257,7 @@
# @FigureListWord { figurelist } # word for "List of Figures"
# @TableListWord { tablelist } # word for "List of Tables"
# @IntroductionWord { introduction } # word for "Introduction"
+ # @AbbreviationsWord { abbreviations } # word for "Abbreviations"
# @ChapterWord { chapter } # word for "Chapter"
# @AppendixWord { appendix } # word for "Appendix"
# @IndexWord { index } # word for "Index"
@@ -304,6 +308,7 @@
# @SubSubSectionGap { 1.5v @OrIfPlain 2f } # between sub-subs.
# @SubAppendixGap { 2.0v @OrIfPlain 3f } # between subappendices
# @SubSubAppendixGap { 1.5v @OrIfPlain 2f } # between sub-subapps
+ # @PrefaceInContents { Yes } # add preface to contents
# @AbbreviationsInContents { Yes } # add abbreviations to contents
# @IntroductionInContents { Yes } # add introduction to contents
# @PartInContents { Yes } # add parts to contents
diff --git a/include/bsf.lpg b/include/bsf.lpg
index 8eb6c02..9183b69 100644
--- a/include/bsf.lpg
+++ b/include/bsf.lpg
@@ -2,7 +2,6 @@
% width height linethickness louteuro -
% draw a Euro symbol of this width and height with this line thickness
-% Author: Jeff Kingston, based on code from Andrew Beardsley
/louteuro {
20 dict begin
/eurothick exch def
diff --git a/include/cprint b/include/cprint
index d7acb06..e720b22 100644
--- a/include/cprint
+++ b/include/cprint
@@ -1,9 +1,9 @@
###############################################################################
# #
-# Lout setup file for C and C++ program printing #
+# Lout setup file for C program printing #
# #
# Jeffrey H. Kingston #
-# 5 February 1999 #
+# 23 February 2000 #
# #
###############################################################################
@@ -12,7 +12,7 @@
# #
# The @SysInclude { cprintf } line #
# #
-# This line causes Lout to read the definitions for C printing, and should #
+# This line causes Lout to read the definitions for C, and should #
# not be touched. #
# #
###############################################################################
@@ -31,6 +31,7 @@
@Use { @CPSetup
# style { fixed } # fixed, varying, or symbol
+ # pipe { } # pipe source through this
# fixedfont { Courier } # font family if fixed
# fixedstrings { Base } # string face if fixed
diff --git a/include/cprintf b/include/cprintf
index fca806e..311369c 100644
--- a/include/cprintf
+++ b/include/cprintf
@@ -1,22 +1,25 @@
###############################################################################
# #
-# Lout @CPSetup package for formatting C and C++ programs (Version 1.1) #
+# Lout @CPSetup package for formatting C programs #
# #
-# Version 1.0 by Jeffrey H. Kingston, March 1994. #
-# Version 1.1 by Jeffrey H. Kingston, November 1998 (name change only) #
+# Version 2.0 by Jeffrey H. Kingston, February 2000. #
# #
-# This package uses a filtered body parameter to convert C and C++ source #
-# code into Lout source. The filter program is c2lout which is distributed #
-# with Basser Lout Version 3. The list of keywords and tokens is from #
-# Stroustrup, 2nd Edition. See "User's Guide to the Lout Document #
-# Formatting System" for user information. #
+# This package uses a filtered body parameter to convert C source #
+# code into Lout source. The filter program is prg2lout, which is #
+# distributed with Lout and should be compiled and installed wherever #
+# Lout itself is. #
# #
###############################################################################
export @CP
def @CPSetup
- named style { fixed } # print style
+ named style
+ named @OrIfPlain left x right y
+ { @BackEnd @Case { PlainText @Yield y else @Yield x } }
+ { fixed } # print style
+
+ named pipe { } # pipe through this first
named fixedfont { Courier } # font family if fixed
named fixedstrings { Base } # string face if fixed
@@ -58,29 +61,11 @@ def @CPSetup
export
- "$$" "$>" "`" @L @S @C
-
- "0" "1" "2" "3" "4" "5" "6" "7" "8" "9"
-
- "!" "%" "^" "&" "*" "(" ")" "-" "+" "=" "${" "$}" "|" "~"
- "[" "]" ";" "'" ":" "<" ">" "?" "," "." "/"
-
- "->" "++" "--" ".*" "->*" "<<" ">>" "<=" ">=" "==" "!=" "&&"
- "||" "*=" "/=" "%=" "+=" "-=" "<<=" ">>=" "&=" "^=" "|=" "::"
-
- asm continue float new signed try
- auto default for operator sizeof typedef
- break delete friend private static union
- case do goto protected struct unsigned
- catch double if public switch virtual
- char else inline register template void
- class enum int return this volatile
- const extern long short throw while
-
- @EvaluateCp
+ "$>" @S @D @C @K @N @O @A @ST @ED @M
def @CP
named style { style } # style
+ named pipe { pipe } # pipe through this first
named font { dft } # font family
named strings { dft } # string font
named identifiers { dft } # ident. font
@@ -131,8 +116,17 @@ def @CPSetup
def @Filter
{
- c2lout -r -i{@FilterIn} -o{@FilterOut} -e{@FilterErr}
- -t{@InitTab} -T{@InitTabWidth}
+ pipe @Case {
+ "" @Yield {
+ "prg2lout -r -lC" -i{@FilterIn} -o{@FilterOut} -e{@FilterErr}
+ -t{@InitTab} -T{@InitTabWidth}
+ }
+ else @Yield {
+ "cat" @FilterIn "|" pipe "|"
+ "prg2lout -r -lC" -o{@FilterOut}
+ -e{@FilterErr} -t{@InitTab} -T{@InitTabWidth}
+ }
+ }
}
def @InitFontFamily
@@ -159,47 +153,37 @@ def @CPSetup
ifsymbol { symbolline }
}
- def @S # for formatting C strings
+ def @S # for formatting strings
right x
{
- "\"" &
+ # "\"" &
strings @Test
iffixed { fixedstrings }
ifvarying { varyingstrings }
ifsymbol { symbolstrings }
@Font x
- & "\""
+ # & "\""
}
- def "`"
- {
- style @Case {
- symbol @Yield { "`" }
- else @Yield { "'" }
- }
- }
+# def "`"
+# {
+# style @Case {
+# symbol @Yield { "`" }
+# else @Yield { "'" }
+# }
+# }
- def @L # for formatting C character literals
+ def @D # for formatting identifiers
right x
{
- ` &
- strings @Test
- iffixed { fixedstrings }
- ifvarying { varyingstrings }
- ifsymbol { symbolstrings }
- @Font x
- & '
- }
-
- def @Ident # for formatting C identifiers
- {
identifiers @Test
iffixed { fixedidentifiers }
ifvarying { varyingidentifiers }
ifsymbol { symbolidentifiers }
+ @Font x
}
- def @C # for formatting C comments
+ def @C # for formatting comments
right x
{
comments @Test
@@ -209,7 +193,7 @@ def @CPSetup
@Font x
}
- def @K # for formatting C keywords
+ def @K # for formatting keywords
right x
{
keywords @Test
@@ -219,7 +203,7 @@ def @CPSetup
@Font x
}
- def @N # for formatting C numbers
+ def @N # for formatting numbers
right x
{
numbers @Test
@@ -229,7 +213,8 @@ def @CPSetup
@Font x
}
- def @O # for formatting C operators
+ def @O # for formatting operators
+ named symb {}
right x
{
operators @Test
@@ -249,133 +234,41 @@ def @CPSetup
}
}
- macro "$>" { {} & }
-
- def "$$" { "#" }
-
- def "0" { @N "0" }
- def "1" { @N "1" }
- def "2" { @N "2" }
- def "3" { @N "3" }
- def "4" { @N "4" }
- def "5" { @N "5" }
- def "6" { @N "6" }
- def "7" { @N "7" }
- def "8" { @N "8" }
- def "9" { @N "9" }
-
- def "!" { @O "!" }
- def "%" { @O "%" }
- def "^" { @O "^" }
- def "&" { @O "&" }
- def "*" { asteriskmath @A @O "*" }
- def "(" { @O "(" }
- def ")" { @O ")" }
- def "-" { minus @A @O "-" }
- def "+" { plus @A @O "+" }
- def "=" { equal @A @O "=" }
- def "${" { @O "{" }
- def "$}" { @O "}" }
- def "|" { @O "|" }
- def "~" { @O "~" }
- def "[" { @O "[" }
- def "]" { @O "]" }
- def ";" { @O ";" }
- def "'" { @O "'" }
- def ":" { @O ":" }
- def "<" { less @A @O "<" }
- def ">" { greater @A @O ">" }
- def "?" { @O "?" }
- def "," { @O "," }
- def "." { @O "." }
- def "/" { @O "/" }
- def "->" { arrowright @A @O "->" }
- def "++" { { + }{ + } }
- def "--" { { - }{ - } }
- def ".*" { { . }{ * } }
- def "->*" { { ->}{ * } }
- def "<<" { { < }{ < } }
- def ">>" { { > }{ > } }
- def "<=" { lessequal @A @O "<=" }
- def ">=" { greaterequal @A @O ">=" }
- def "==" { { = }{ = } }
- def "!=" { notequal @A @O "!=" }
- def "&&" { { & }{ & } }
- def "||" { { | }{ | } }
- def "*=" { { * }{ = } }
- def "/=" { { / }{ = } }
- def "%=" { { % }{ = } }
- def "+=" { { + }{ = } }
- def "-=" { { - }{ = } }
- def "<<=" { { <<}{ = } }
- def ">>=" { { >>}{ = } }
- def "&=" { { & }{ = } }
- def "^=" { { ^ }{ = } }
- def "|=" { { | }{ = } }
- def "::" { { : }{ : } }
-
- def asm { @K "asm" }
- def auto { @K "auto" }
- def break { @K "break" }
- def case { @K "case" }
- def catch { @K "catch" }
- def char { @K "char" }
- def class { @K "class" }
- def const { @K "const" }
-
- def continue { @K "continue" }
- def default { @K "default" }
- def delete { @K "delete" }
- def do { @K "do" }
- def double { @K "double" }
- def else { @K "else" }
- def enum { @K "enum" }
- def extern { @K "extern" }
-
- def float { @K "float" }
- def for { @K "for" }
- def friend { @K "friend" }
- def goto { @K "goto" }
- def if { @K "if" }
- def inline { @K "inline" }
- def int { @K "int" }
- def long { @K "long" }
-
- def new { @K "new" }
- def operator { @K "operator" }
- def private { @K "private" }
- def protected { @K "protected" }
- def public { @K "public" }
- def register { @K "register" }
- def return { @K "return" }
- def short { @K "short" }
-
- def signed { @K "signed" }
- def sizeof { @K "sizeof" }
- def static { @K "static" }
- def struct { @K "struct" }
- def switch { @K "switch" }
- def template { @K "template" }
- def this { @K "this" }
- def throw { @K "throw" }
+ def @ST # for formatting asterisks
+ right x
+ {
+ operators @Test
+ iffixed { fixedoperators }
+ ifvarying { varyingoperators }
+ ifsymbol { symboloperators }
+ @Font "0.5w" @VShift x
+ }
+
+ def @ED # for formatting larger dots (not used in C)
+ right x
+ {
+ operators @Test
+ iffixed { fixedoperators }
+ ifvarying { varyingoperators }
+ ifsymbol { symboloperators }
+ @Font @BackEnd @Case {
+ PlainText @Yield x
+ else @Yield { "1.2f" @Font "+0.05f" @VShift @O x &"0.05f" }
+ }
+ }
- def try { @K "try" }
- def typedef { @K "typedef" }
- def union { @K "union" }
- def unsigned { @K "unsigned" }
- def virtual { @K "virtual" }
- def void { @K "void" }
- def volatile { @K "volatile" }
- def while { @K "while" }
+ macro "$>" { {} & }
- def @EvaluateCp right x
+ def @M right x
{
- { @InitFontFamily Base } @Font
- { @Ident @InitSize } @Font
- { @InitLine lines } @Break x
+ style @Case {
+ fixed @Yield "-"
+ varying @Yield { { Symbol Base } @Font @Char minus }
+ symbol @Yield { { Symbol Base } @Font @Char minus }
+ }
}
- { @InitFontFamily Base } @Font { @Ident @InitSize } @Font
+ { @InitFontFamily Base @InitSize } @Font
{ @InitLine lines } @Break @Body
@End @CP
diff --git a/include/diag b/include/diag
index b4ffdb2..9289975 100644
--- a/include/diag
+++ b/include/diag
@@ -32,6 +32,15 @@
@Use { @DiagSetup
# save { no }
# maxlabels { 200 }
+ # title { (none) }
+ # titleformat { Italic @Font @Title //0.7f ||0.35f @Body }
+
+ #############################################################################
+ # #
+ # Node options #
+ # #
+ #############################################################################
+
# outline { box }
# margin { 0.6f }
# shadow { 0.4f }
@@ -109,6 +118,265 @@
# dlabelangle { }
# dlabelctr { }
# dlabeladjust { }
+
+ #############################################################################
+ # #
+ # @ANode options #
+ # #
+ #############################################################################
+
+ # aoutline { box }
+ # amargin { 0.6f }
+ # ashadow { 0.4f }
+ # asides { 3 }
+ # aangle { "dup 180 exch div" } # 180d / sides
+ # atranslate { }
+ # aoutlinestyle { solid }
+ # aoutlinedashlength { 0.2f }
+ # aoutlinewidth { 0.02f }
+ # apaint { nopaint }
+ # afont { }
+ # abreak { }
+ # aformat { @Body }
+ # avalign { ctr }
+ # avsize { }
+ # avindent { ctr }
+ # avstrut { no }
+ # avmargin { }
+ # atopmargin { }
+ # afootmargin { }
+ # ahalign { ctr }
+ # ahsize { }
+ # ahindent { ctr }
+ # ahstrut { no }
+ # ahmargin { }
+ # aleftmargin { }
+ # arightmargin { }
+ # anodelabel { }
+ # anodelabelmargin { 0.2f }
+ # anodelabelfont { "-2p" }
+ # anodelabelbreak { ragged nohyphen }
+ # anodelabelformat { @Body }
+ # anodelabelpos { }
+ # anodelabelprox { outside }
+ # anodelabelangle { horizontal }
+ # anodelabelctr { no }
+ # anodelabeladjust { 0 0 }
+ # aalabel { }
+ # aalabelmargin { }
+ # aalabelfont { }
+ # aalabelbreak { }
+ # aalabelformat { }
+ # aalabelpos { NE }
+ # aalabelprox { }
+ # aalabelangle { }
+ # aalabelctr { }
+ # aalabeladjust { }
+ # ablabel { }
+ # ablabelmargin { }
+ # ablabelfont { }
+ # ablabelbreak { }
+ # ablabelformat { }
+ # ablabelpos { NW }
+ # ablabelprox { }
+ # ablabelangle { }
+ # ablabelctr { }
+ # ablabeladjust { }
+ # aclabel { }
+ # aclabelmargin { }
+ # aclabelfont { }
+ # aclabelbreak { }
+ # aclabelformat { }
+ # aclabelpos { SW }
+ # aclabelprox { }
+ # aclabelangle { }
+ # aclabelctr { }
+ # aclabeladjust { }
+ # adlabel { }
+ # adlabelmargin { }
+ # adlabelfont { }
+ # adlabelbreak { }
+ # adlabelformat { }
+ # adlabelpos { SE }
+ # adlabelprox { }
+ # adlabelangle { }
+ # adlabelctr { }
+ # adlabeladjust { }
+
+ #############################################################################
+ # #
+ # @BNode options #
+ # #
+ #############################################################################
+
+ # boutline { box }
+ # bmargin { 0.6f }
+ # bshadow { 0.4f }
+ # bsides { 3 }
+ # bangle { "dup 180 exch div" } # 180d / sides
+ # btranslate { }
+ # boutlinestyle { solid }
+ # boutlinedashlength { 0.2f }
+ # boutlinewidth { 0.02f }
+ # bpaint { nopaint }
+ # bfont { }
+ # bbreak { }
+ # bformat { @Body }
+ # bvalign { ctr }
+ # bvsize { }
+ # bvindent { ctr }
+ # bvstrut { no }
+ # bvmargin { }
+ # btopmargin { }
+ # bfootmargin { }
+ # bhalign { ctr }
+ # bhsize { }
+ # bhindent { ctr }
+ # bhstrut { no }
+ # bhmargin { }
+ # bleftmargin { }
+ # brightmargin { }
+ # bnodelabel { }
+ # bnodelabelmargin { 0.2f }
+ # bnodelabelfont { "-2p" }
+ # bnodelabelbreak { ragged nohyphen }
+ # bnodelabelformat { @Body }
+ # bnodelabelpos { }
+ # bnodelabelprox { outside }
+ # bnodelabelangle { horizontal }
+ # bnodelabelctr { no }
+ # bnodelabeladjust { 0 0 }
+ # balabel { }
+ # balabelmargin { }
+ # balabelfont { }
+ # balabelbreak { }
+ # balabelformat { }
+ # balabelpos { NE }
+ # balabelprox { }
+ # balabelangle { }
+ # balabelctr { }
+ # balabeladjust { }
+ # bblabel { }
+ # bblabelmargin { }
+ # bblabelfont { }
+ # bblabelbreak { }
+ # bblabelformat { }
+ # bblabelpos { NW }
+ # bblabelprox { }
+ # bblabelangle { }
+ # bblabelctr { }
+ # bblabeladjust { }
+ # bclabel { }
+ # bclabelmargin { }
+ # bclabelfont { }
+ # bclabelbreak { }
+ # bclabelformat { }
+ # bclabelpos { SW }
+ # bclabelprox { }
+ # bclabelangle { }
+ # bclabelctr { }
+ # bclabeladjust { }
+ # bdlabel { }
+ # bdlabelmargin { }
+ # bdlabelfont { }
+ # bdlabelbreak { }
+ # bdlabelformat { }
+ # bdlabelpos { SE }
+ # bdlabelprox { }
+ # bdlabelangle { }
+ # bdlabelctr { }
+ # bdlabeladjust { }
+
+ #############################################################################
+ # #
+ # @CNode options #
+ # #
+ #############################################################################
+
+ # coutline { box }
+ # cmargin { 0.6f }
+ # cshadow { 0.4f }
+ # csides { 3 }
+ # cangle { "dup 180 exch div" } # 180d / sides
+ # ctranslate { }
+ # coutlinestyle { solid }
+ # coutlinedashlength { 0.2f }
+ # coutlinewidth { 0.02f }
+ # cpaint { nopaint }
+ # cfont { }
+ # cbreak { }
+ # cformat { @Body }
+ # cvalign { ctr }
+ # cvsize { }
+ # cvindent { ctr }
+ # cvstrut { no }
+ # cvmargin { }
+ # ctopmargin { }
+ # cfootmargin { }
+ # chalign { ctr }
+ # chsize { }
+ # chindent { ctr }
+ # chstrut { no }
+ # chmargin { }
+ # cleftmargin { }
+ # crightmargin { }
+ # cnodelabel { }
+ # cnodelabelmargin { 0.2f }
+ # cnodelabelfont { "-2p" }
+ # cnodelabelbreak { ragged nohyphen }
+ # cnodelabelformat { @Body }
+ # cnodelabelpos { }
+ # cnodelabelprox { outside }
+ # cnodelabelangle { horizontal }
+ # cnodelabelctr { no }
+ # cnodelabeladjust { 0 0 }
+ # calabel { }
+ # calabelmargin { }
+ # calabelfont { }
+ # calabelbreak { }
+ # calabelformat { }
+ # calabelpos { NE }
+ # calabelprox { }
+ # calabelangle { }
+ # calabelctr { }
+ # calabeladjust { }
+ # cblabel { }
+ # cblabelmargin { }
+ # cblabelfont { }
+ # cblabelbreak { }
+ # cblabelformat { }
+ # cblabelpos { NW }
+ # cblabelprox { }
+ # cblabelangle { }
+ # cblabelctr { }
+ # cblabeladjust { }
+ # cclabel { }
+ # cclabelmargin { }
+ # cclabelfont { }
+ # cclabelbreak { }
+ # cclabelformat { }
+ # cclabelpos { SW }
+ # cclabelprox { }
+ # cclabelangle { }
+ # cclabelctr { }
+ # cclabeladjust { }
+ # cdlabel { }
+ # cdlabelmargin { }
+ # cdlabelfont { }
+ # cdlabelbreak { }
+ # cdlabelformat { }
+ # cdlabelpos { SE }
+ # cdlabelprox { }
+ # cdlabelangle { }
+ # cdlabelctr { }
+ # cdlabeladjust { }
+
+ #############################################################################
+ # #
+ # Link options #
+ # #
+ #############################################################################
+
# path { line }
# from { 0, 0 }
# to { 1, 1 }
@@ -186,8 +454,26 @@
# tolabelangle { parallel }
# tolabelctr { no }
# tolabeladjust { 0 0 }
+
+ #############################################################################
+ # #
+ # Tree options #
+ # #
+ #############################################################################
+
# treehsep { 0.5f }
# treevsep { 0.5f }
# treehindent { ctr }
# treevindent { ctr }
+
+ #############################################################################
+ # #
+ # Syntax diagram options #
+ # #
+ #############################################################################
+
+ # syntaxgap { 0.35f }
+ # syntaxbias { 1.0f }
+ # syntaxradius { 0.3f }
+
}
diff --git a/include/diagf b/include/diagf
index 18b888a..999c82e 100644
--- a/include/diagf
+++ b/include/diagf
@@ -2,9 +2,10 @@
###############################################################################
# #
# Lout @Diag package for drawing diagrams #
-# Version 1.0 (July 1996) #
+# Version 1.1 (February 2000) #
# Jeffrey H. Kingston #
# #
+# Version 1.0 (July 1996) #
# Based on Version 2.0 of the @Fig package (Jeffrey H. Kingston, Dec 1992). #
# #
###############################################################################
@@ -12,10 +13,27 @@
@SysPrependGraphic { diagf.lpg }
@SysInclude { diagf.etc }
-export @Diag
+###############################################################################
+# #
+# @DiagSetup symbol #
+# #
+###############################################################################
+
+export @Diag @SyntaxDiag
def @DiagSetup
named save { no }
named maxlabels { 200 }
+ named title { "--titledft--" }
+ named titleformat
+ left @Title
+ right @Body
+ { Italic @Font @Title //0.7f ||0.35f @Body }
+
+ ###########################################################################
+ # #
+ # @Node options of @DiagSetup #
+ # #
+ ###########################################################################
import @Geometry named outline
named margin {}
@@ -123,6 +141,348 @@ def @DiagSetup
named dlabelctr { }
import @Geometry named dlabeladjust { }
+ ###########################################################################
+ # #
+ # @ANode options of @DiagSetup #
+ # #
+ ###########################################################################
+
+ import @Geometry named aoutline
+ named margin {}
+ named shadow {}
+ named sides {}
+ named angle {}
+ { box }
+ named amargin { 0.6f }
+ import @Geometry named ashadow { 0.4f }
+ import @Geometry named asides { 3 }
+ import @Geometry named aangle { "dup 180 exch div" }
+ named atranslate { }
+ named aoutlinestyle
+ named solid { "/ldiagsolid" }
+ named dashed { "/ldiagdashed" }
+ named cdashed { "/ldiagcdashed" }
+ named dotted { "/ldiagdotted" }
+ named noline { "/ldiagnoline" }
+ { solid }
+ import @Geometry named aoutlinedashlength { 0.2f }
+ import @Geometry named aoutlinewidth
+ named thin { 0.04 ft }
+ named medium { 0.08 ft }
+ named thick { 0.12 ft }
+ { thin }
+ named apaint { nopaint }
+ named afont { }
+ named abreak { }
+ named aformat right @Body { @Body }
+
+ named avalign { ctr }
+ named avsize { }
+ named avindent { ctr }
+ named avstrut
+ named no { 0.0f }
+ named yes { 1.0f }
+ { no }
+ named avmargin { }
+ named atopmargin { }
+ named afootmargin { }
+
+ named ahalign { ctr }
+ named ahsize { }
+ named ahindent { ctr }
+ named ahstrut
+ named no { 0.0f }
+ named yes { 1.0f }
+ { no }
+ named ahmargin { }
+ named aleftmargin { }
+ named arightmargin { }
+
+ named anodelabel { }
+ named anodelabelmargin { 0.2f }
+ named anodelabelfont { -2p }
+ named anodelabelbreak { ragged nohyphen }
+ named anodelabelformat right @Body { @Body }
+ import @Geometry named anodelabelpos{ }
+ named anodelabelprox { outside }
+ import @Geometry named anodelabelangle { horizontal }
+ named anodelabelctr { no }
+ import @Geometry named anodelabeladjust { 0 0 }
+
+ named aalabel { }
+ named aalabelmargin { }
+ named aalabelfont { }
+ named aalabelbreak { }
+ named aalabelformat right @Body { }
+ import @Geometry named aalabelpos { NE }
+ named aalabelprox { }
+ import @Geometry named aalabelangle { }
+ named aalabelctr { }
+ import @Geometry named aalabeladjust{ }
+
+ named ablabel { }
+ named ablabelmargin { }
+ named ablabelfont { }
+ named ablabelbreak { }
+ named ablabelformat right @Body { }
+ import @Geometry named ablabelpos { NW }
+ named ablabelprox { }
+ import @Geometry named ablabelangle { }
+ named ablabelctr { }
+ import @Geometry named ablabeladjust{ }
+
+ named aclabel { }
+ named aclabelmargin { }
+ named aclabelfont { }
+ named aclabelbreak { }
+ named aclabelformat right @Body { }
+ import @Geometry named aclabelpos { SW }
+ named aclabelprox { }
+ import @Geometry named aclabelangle { }
+ named aclabelctr { }
+ import @Geometry named aclabeladjust{ }
+
+ named adlabel { }
+ named adlabelmargin { }
+ named adlabelfont { }
+ named adlabelbreak { }
+ named adlabelformat right @Body { }
+ import @Geometry named adlabelpos { SE }
+ named adlabelprox { }
+ import @Geometry named adlabelangle { }
+ named adlabelctr { }
+ import @Geometry named adlabeladjust{ }
+
+ ###########################################################################
+ # #
+ # @BNode options of @DiagSetup #
+ # #
+ ###########################################################################
+
+ import @Geometry named boutline
+ named margin {}
+ named shadow {}
+ named sides {}
+ named angle {}
+ { box }
+ named bmargin { 0.6f }
+ import @Geometry named bshadow { 0.4f }
+ import @Geometry named bsides { 3 }
+ import @Geometry named bangle { "dup 180 exch div" }
+ named btranslate { }
+ named boutlinestyle
+ named solid { "/ldiagsolid" }
+ named dashed { "/ldiagdashed" }
+ named cdashed { "/ldiagcdashed" }
+ named dotted { "/ldiagdotted" }
+ named noline { "/ldiagnoline" }
+ { solid }
+ import @Geometry named boutlinedashlength { 0.2f }
+ import @Geometry named boutlinewidth
+ named thin { 0.04 ft }
+ named medium { 0.08 ft }
+ named thick { 0.12 ft }
+ { thin }
+ named bpaint { nopaint }
+ named bfont { }
+ named bbreak { }
+ named bformat right @Body { @Body }
+
+ named bvalign { ctr }
+ named bvsize { }
+ named bvindent { ctr }
+ named bvstrut
+ named no { 0.0f }
+ named yes { 1.0f }
+ { no }
+ named bvmargin { }
+ named btopmargin { }
+ named bfootmargin { }
+
+ named bhalign { ctr }
+ named bhsize { }
+ named bhindent { ctr }
+ named bhstrut
+ named no { 0.0f }
+ named yes { 1.0f }
+ { no }
+ named bhmargin { }
+ named bleftmargin { }
+ named brightmargin { }
+
+ named bnodelabel { }
+ named bnodelabelmargin { 0.2f }
+ named bnodelabelfont { -2p }
+ named bnodelabelbreak { ragged nohyphen }
+ named bnodelabelformat right @Body { @Body }
+ import @Geometry named bnodelabelpos{ }
+ named bnodelabelprox { outside }
+ import @Geometry named bnodelabelangle { horizontal }
+ named bnodelabelctr { no }
+ import @Geometry named bnodelabeladjust { 0 0 }
+
+ named balabel { }
+ named balabelmargin { }
+ named balabelfont { }
+ named balabelbreak { }
+ named balabelformat right @Body { }
+ import @Geometry named balabelpos { NE }
+ named balabelprox { }
+ import @Geometry named balabelangle { }
+ named balabelctr { }
+ import @Geometry named balabeladjust{ }
+
+ named bblabel { }
+ named bblabelmargin { }
+ named bblabelfont { }
+ named bblabelbreak { }
+ named bblabelformat right @Body { }
+ import @Geometry named bblabelpos { NW }
+ named bblabelprox { }
+ import @Geometry named bblabelangle { }
+ named bblabelctr { }
+ import @Geometry named bblabeladjust{ }
+
+ named bclabel { }
+ named bclabelmargin { }
+ named bclabelfont { }
+ named bclabelbreak { }
+ named bclabelformat right @Body { }
+ import @Geometry named bclabelpos { SW }
+ named bclabelprox { }
+ import @Geometry named bclabelangle { }
+ named bclabelctr { }
+ import @Geometry named bclabeladjust{ }
+
+ named bdlabel { }
+ named bdlabelmargin { }
+ named bdlabelfont { }
+ named bdlabelbreak { }
+ named bdlabelformat right @Body { }
+ import @Geometry named bdlabelpos { SE }
+ named bdlabelprox { }
+ import @Geometry named bdlabelangle { }
+ named bdlabelctr { }
+ import @Geometry named bdlabeladjust{ }
+
+ ###########################################################################
+ # #
+ # @CNode options of @DiagSetup #
+ # #
+ ###########################################################################
+
+ import @Geometry named coutline
+ named margin {}
+ named shadow {}
+ named sides {}
+ named angle {}
+ { box }
+ named cmargin { 0.6f }
+ import @Geometry named cshadow { 0.4f }
+ import @Geometry named csides { 3 }
+ import @Geometry named cangle { "dup 180 exch div" }
+ named ctranslate { }
+ named coutlinestyle
+ named solid { "/ldiagsolid" }
+ named dashed { "/ldiagdashed" }
+ named cdashed { "/ldiagcdashed" }
+ named dotted { "/ldiagdotted" }
+ named noline { "/ldiagnoline" }
+ { solid }
+ import @Geometry named coutlinedashlength { 0.2f }
+ import @Geometry named coutlinewidth
+ named thin { 0.04 ft }
+ named medium { 0.08 ft }
+ named thick { 0.12 ft }
+ { thin }
+ named cpaint { nopaint }
+ named cfont { }
+ named cbreak { }
+ named cformat right @Body { @Body }
+
+ named cvalign { ctr }
+ named cvsize { }
+ named cvindent { ctr }
+ named cvstrut
+ named no { 0.0f }
+ named yes { 1.0f }
+ { no }
+ named cvmargin { }
+ named ctopmargin { }
+ named cfootmargin { }
+
+ named chalign { ctr }
+ named chsize { }
+ named chindent { ctr }
+ named chstrut
+ named no { 0.0f }
+ named yes { 1.0f }
+ { no }
+ named chmargin { }
+ named cleftmargin { }
+ named crightmargin { }
+
+ named cnodelabel { }
+ named cnodelabelmargin { 0.2f }
+ named cnodelabelfont { -2p }
+ named cnodelabelbreak { ragged nohyphen }
+ named cnodelabelformat right @Body { @Body }
+ import @Geometry named cnodelabelpos{ }
+ named cnodelabelprox { outside }
+ import @Geometry named cnodelabelangle { horizontal }
+ named cnodelabelctr { no }
+ import @Geometry named cnodelabeladjust { 0 0 }
+
+ named calabel { }
+ named calabelmargin { }
+ named calabelfont { }
+ named calabelbreak { }
+ named calabelformat right @Body { }
+ import @Geometry named calabelpos { NE }
+ named calabelprox { }
+ import @Geometry named calabelangle { }
+ named calabelctr { }
+ import @Geometry named calabeladjust{ }
+
+ named cblabel { }
+ named cblabelmargin { }
+ named cblabelfont { }
+ named cblabelbreak { }
+ named cblabelformat right @Body { }
+ import @Geometry named cblabelpos { NW }
+ named cblabelprox { }
+ import @Geometry named cblabelangle { }
+ named cblabelctr { }
+ import @Geometry named cblabeladjust{ }
+
+ named cclabel { }
+ named cclabelmargin { }
+ named cclabelfont { }
+ named cclabelbreak { }
+ named cclabelformat right @Body { }
+ import @Geometry named cclabelpos { SW }
+ named cclabelprox { }
+ import @Geometry named cclabelangle { }
+ named cclabelctr { }
+ import @Geometry named cclabeladjust{ }
+
+ named cdlabel { }
+ named cdlabelmargin { }
+ named cdlabelfont { }
+ named cdlabelbreak { }
+ named cdlabelformat right @Body { }
+ import @Geometry named cdlabelpos { SE }
+ named cdlabelprox { }
+ import @Geometry named cdlabelangle { }
+ named cdlabelctr { }
+ import @Geometry named cdlabeladjust{ }
+
+ ###########################################################################
+ # #
+ # @Link options of @DiagSetup #
+ # #
+ ###########################################################################
+
import @Geometry named path
named from {}
named to {}
@@ -236,6 +596,12 @@ def @DiagSetup
named tolabelctr { no }
import @Geometry named tolabeladjust { 0 0 }
+ ###########################################################################
+ # #
+ # Tree and syntax diagram options of @DiagSetup #
+ # #
+ ###########################################################################
+
named treehsep { 0.5f }
named treevsep { 0.5f }
named treehindent
@@ -249,13 +615,21 @@ def @DiagSetup
named foot { 1.0rt }
{ ctr }
+ named syntaxgap { 0.35f }
+ named syntaxbias { 1.0f }
+ named syntaxradius { 0.3f }
{
- export "::" @ShowPoints @ShowTags @ShowDirections @CatchTags @Transform
- @Tree @HTree
+ ###########################################################################
+ # #
+ # @Diag symbol #
+ # #
+ ###########################################################################
+
+ export "::" @ShowPoints @ShowTags @ShowDirections @CatchTags @Transform
- @Node
+ @Node @ANode @BNode @CNode
@Box @CurveBox @ShadowBox @Square @Diamond @Polygon
@Isosceles @Ellipse @Circle
@ArrowHead @SolidArrowHead @OpenArrowHead @HalfOpenArrowHead
@@ -273,9 +647,28 @@ def @DiagSetup
@DWrapLine @DWrapArrow @UWrapLine @UWrapArrow
@DWrapCurve @DWrapCurveArrow @UWrapCurve @UWrapCurveArrow
+ @Tree @HTree
+
+ @StartRight @StartUp @StartLeft @StartDown
+ @StartRightRight @StartRightDown
+ @Skip @XCell @ACell @BCell @CCell
+ @Sequence @Select @Optional @OptionalDiverted @Diverted
+ @Loop @LoopOpposite @Repeat @RepeatOpposite @RepeatDiverted
+
def @Diag
named save { save }
named maxlabels { maxlabels }
+ named title { title }
+ named titleformat
+ left @Title
+ right @Body
+ { @Title titleformat @Body }
+
+ #######################################################################
+ # #
+ # @Node options of @Diag #
+ # #
+ #######################################################################
import @Geometry named outline
named margin {}
@@ -332,6 +725,195 @@ def @DiagSetup
named leftmargin { leftmargin }
named rightmargin { rightmargin }
+ #######################################################################
+ # #
+ # @ANode options of @Diag #
+ # #
+ #######################################################################
+
+ import @Geometry named aoutline
+ named margin {}
+ named shadow {}
+ named sides {}
+ named angle {}
+ { aoutline
+ margin { margin }
+ shadow { shadow }
+ sides { sides }
+ angle { angle }
+ }
+ named amargin { amargin }
+ import @Geometry named ashadow { ashadow }
+ import @Geometry named asides { asides }
+ import @Geometry named aangle { aangle }
+ named atranslate { atranslate }
+ named anodetag { }
+ named aoutlinestyle
+ named solid { "/ldiagsolid" }
+ named dashed { "/ldiagdashed" }
+ named cdashed { "/ldiagcdashed" }
+ named dotted { "/ldiagdotted" }
+ named noline { "/ldiagnoline" }
+ { aoutlinestyle }
+ import @Geometry named aoutlinedashlength{ aoutlinedashlength }
+ import @Geometry named aoutlinewidth
+ named thin { 0.04 ft }
+ named medium { 0.08 ft }
+ named thick { 0.12 ft }
+ { aoutlinewidth }
+ named apaint { apaint }
+ named afont { afont }
+ named abreak { abreak }
+ named aformat right @Body { aformat @Body }
+ named avalign { avalign }
+ named avsize { avsize }
+ named avindent { avindent }
+ named avstrut
+ named no { 0.0f }
+ named yes { 1.0f }
+ { avstrut }
+ named avmargin { avmargin }
+ named atopmargin { atopmargin }
+ named afootmargin { afootmargin }
+ named ahalign { ahalign }
+ named ahsize { ahsize }
+ named ahindent { ahindent }
+ named ahstrut
+ named no { 0.0f }
+ named yes { 1.0f }
+ { ahstrut }
+ named ahmargin { ahmargin }
+ named aleftmargin { aleftmargin }
+ named arightmargin { arightmargin }
+
+ #######################################################################
+ # #
+ # @BNode options of @Diag #
+ # #
+ #######################################################################
+
+ import @Geometry named boutline
+ named margin {}
+ named shadow {}
+ named sides {}
+ named angle {}
+ { boutline
+ margin { margin }
+ shadow { shadow }
+ sides { sides }
+ angle { angle }
+ }
+ named bmargin { bmargin }
+ import @Geometry named bshadow { bshadow }
+ import @Geometry named bsides { bsides }
+ import @Geometry named bangle { bangle }
+ named btranslate { btranslate }
+ named bnodetag { }
+ named boutlinestyle
+ named solid { "/ldiagsolid" }
+ named dashed { "/ldiagdashed" }
+ named cdashed { "/ldiagcdashed" }
+ named dotted { "/ldiagdotted" }
+ named noline { "/ldiagnoline" }
+ { boutlinestyle }
+ import @Geometry named boutlinedashlength{ boutlinedashlength }
+ import @Geometry named boutlinewidth
+ named thin { 0.04 ft }
+ named medium { 0.08 ft }
+ named thick { 0.12 ft }
+ { boutlinewidth }
+ named bpaint { bpaint }
+ named bfont { bfont }
+ named bbreak { bbreak }
+ named bformat right @Body { bformat @Body }
+ named bvalign { bvalign }
+ named bvsize { bvsize }
+ named bvindent { bvindent }
+ named bvstrut
+ named no { 0.0f }
+ named yes { 1.0f }
+ { bvstrut }
+ named bvmargin { bvmargin }
+ named btopmargin { btopmargin }
+ named bfootmargin { bfootmargin }
+ named bhalign { bhalign }
+ named bhsize { bhsize }
+ named bhindent { bhindent }
+ named bhstrut
+ named no { 0.0f }
+ named yes { 1.0f }
+ { bhstrut }
+ named bhmargin { bhmargin }
+ named bleftmargin { bleftmargin }
+ named brightmargin { brightmargin }
+
+ #######################################################################
+ # #
+ # @CNode options of @Diag #
+ # #
+ #######################################################################
+
+ import @Geometry named coutline
+ named margin {}
+ named shadow {}
+ named sides {}
+ named angle {}
+ { coutline
+ margin { margin }
+ shadow { shadow }
+ sides { sides }
+ angle { angle }
+ }
+ named cmargin { cmargin }
+ import @Geometry named cshadow { cshadow }
+ import @Geometry named csides { csides }
+ import @Geometry named cangle { cangle }
+ named ctranslate { ctranslate }
+ named cnodetag { }
+ named coutlinestyle
+ named solid { "/ldiagsolid" }
+ named dashed { "/ldiagdashed" }
+ named cdashed { "/ldiagcdashed" }
+ named dotted { "/ldiagdotted" }
+ named noline { "/ldiagnoline" }
+ { coutlinestyle }
+ import @Geometry named coutlinedashlength{ coutlinedashlength }
+ import @Geometry named coutlinewidth
+ named thin { 0.04 ft }
+ named medium { 0.08 ft }
+ named thick { 0.12 ft }
+ { coutlinewidth }
+ named cpaint { cpaint }
+ named cfont { cfont }
+ named cbreak { cbreak }
+ named cformat right @Body { cformat @Body }
+ named cvalign { cvalign }
+ named cvsize { cvsize }
+ named cvindent { cvindent }
+ named cvstrut
+ named no { 0.0f }
+ named yes { 1.0f }
+ { cvstrut }
+ named cvmargin { cvmargin }
+ named ctopmargin { ctopmargin }
+ named cfootmargin { cfootmargin }
+ named chalign { chalign }
+ named chsize { chsize }
+ named chindent { chindent }
+ named chstrut
+ named no { 0.0f }
+ named yes { 1.0f }
+ { chstrut }
+ named chmargin { chmargin }
+ named cleftmargin { cleftmargin }
+ named crightmargin { crightmargin }
+
+ #######################################################################
+ # #
+ # @Link options of @Diag #
+ # #
+ #######################################################################
+
import @Geometry named path
named from {}
named to {}
@@ -513,6 +1095,12 @@ def @DiagSetup
named tolabelctr { tolabelctr }
import @Geometry named tolabeladjust { tolabeladjust }
+ #######################################################################
+ # #
+ # Tree and syntax diagram options of @Diag #
+ # #
+ #######################################################################
+
named treehsep { treehsep }
named treevsep { treevsep }
named treehindent
@@ -525,9 +1113,19 @@ def @DiagSetup
named ctr { 0.5rt }
named foot { 1.0rt }
{ treevindent }
+ named syntaxgap { syntaxgap }
+ named syntaxbias { syntaxbias }
+ named syntaxradius { syntaxradius }
body @Body
@Begin
+
+ #######################################################################
+ # #
+ # Miscellaneous helper definitions #
+ # #
+ #######################################################################
+
# Like @Graphic, but affects the graphics state of right parameter
def @InnerGraphic
left ps
@@ -615,6 +1213,12 @@ def @DiagSetup
}
}
+ def @ShowMarks right x
+ {
+ { "xmark -0.5 cm moveto xmark ysize 0.5 cm add lineto stroke" } @Graphic x
+ }
+
+
def "::"
precedence 33
associativity right
@@ -759,6 +1363,13 @@ def @DiagSetup
}
}
+
+ #######################################################################
+ # #
+ # @DoLabel definition for drawing one label #
+ # #
+ #######################################################################
+
def @DoLabel
named which {}
named labeltag { LABEL }
@@ -1571,9 +2182,14 @@ def @DiagSetup
}
+ #######################################################################
+ # #
+ # @Node #
+ # #
+ #######################################################################
+
def @Node
import @Geometry named translate
-# named to precedence 10 left x right y { x y "ldiagpsub" }
named to precedence 10 left x right y {
@BackEnd @Case {
PostScript @Yield { x y "ldiagpsub" }
@@ -1908,6 +2524,1042 @@ def @DiagSetup
}
}
+
+ #######################################################################
+ # #
+ # @ANode #
+ # #
+ #######################################################################
+
+ def @ANode
+ import @Geometry named translate
+ named to precedence 10 left x right y {
+ @BackEnd @Case {
+ PostScript @Yield { x y "ldiagpsub" }
+ PDF @Yield {""}
+ }
+ }
+ {}
+ import @Geometry named rotate { 0d }
+ import @Geometry named outline
+ named margin {}
+ named shadow {}
+ named sides {}
+ named angle {}
+ { aoutline
+ margin { margin }
+ shadow { shadow }
+ sides { sides }
+ angle { angle }
+ }
+ named margin { amargin }
+ import @Geometry named shadow { ashadow }
+ import @Geometry named sides { asides }
+ import @Geometry named angle { aangle }
+ named nodetag { anodetag }
+ named outlinestyle
+ named solid { "/ldiagsolid" }
+ named dashed { "/ldiagdashed" }
+ named cdashed { "/ldiagcdashed" }
+ named dotted { "/ldiagdotted" }
+ named noline { "/ldiagnoline" }
+ { aoutlinestyle }
+ import @Geometry named outlinedashlength { aoutlinedashlength}
+ import @Geometry named outlinewidth
+ named thin { 0.04 ft }
+ named medium { 0.08 ft }
+ named thick { 0.12 ft }
+ { aoutlinewidth }
+ named paint { apaint }
+ named font { afont }
+ named break { abreak }
+ named format right @Body { aformat @Body }
+ named valign { avalign }
+ named vsize { avsize }
+ named vindent { avindent }
+ named vstrut
+ named no { 0.0f }
+ named yes { 1.0f }
+ { avstrut }
+ named vmargin { avmargin }
+ named topmargin { atopmargin }
+ named footmargin { afootmargin }
+
+ named halign { ahalign }
+ named hsize { ahsize }
+ named hindent { ahindent }
+ named hstrut
+ named no { 0.0f }
+ named yes { 1.0f }
+ { ahstrut }
+ named hmargin { ahmargin }
+ named leftmargin { aleftmargin }
+ named rightmargin { arightmargin }
+
+ named nodelabel { anodelabel }
+ named nodelabelmargin { anodelabelmargin }
+ named nodelabelfont { anodelabelfont }
+ named nodelabelbreak { anodelabelbreak }
+ named nodelabelformat right @Body { anodelabelformat @Body }
+ import @Geometry named nodelabelpos { anodelabelpos }
+ named nodelabelprox { anodelabelprox }
+ import @Geometry named nodelabelangle { anodelabelangle }
+ named nodelabelctr { anodelabelctr }
+ import @Geometry named nodelabeladjust { anodelabeladjust }
+
+ named alabel { aalabel }
+ named alabelmargin { aalabelmargin }
+ named alabelfont { aalabelfont }
+ named alabelbreak { aalabelbreak }
+ named alabelformat right @Body { aalabelformat @Body }
+ import @Geometry named alabelpos { aalabelpos }
+ named alabelprox { aalabelprox }
+ import @Geometry named alabelangle { aalabelangle }
+ named alabelctr { aalabelctr }
+ import @Geometry named alabeladjust { aalabeladjust }
+
+ named blabel { ablabel }
+ named blabelmargin { ablabelmargin }
+ named blabelfont { ablabelfont }
+ named blabelbreak { ablabelbreak }
+ named blabelformat right @Body { ablabelformat @Body }
+ import @Geometry named blabelpos { ablabelpos }
+ named blabelprox { ablabelprox }
+ import @Geometry named blabelangle { ablabelangle }
+ named blabelctr { ablabelctr }
+ import @Geometry named blabeladjust { ablabeladjust }
+
+ named clabel { aclabel }
+ named clabelmargin { aclabelmargin }
+ named clabelfont { aclabelfont }
+ named clabelbreak { aclabelbreak }
+ named clabelformat right @Body { aclabelformat @Body }
+ import @Geometry named clabelpos { aclabelpos }
+ named clabelprox { aclabelprox }
+ import @Geometry named clabelangle { aclabelangle }
+ named clabelctr { aclabelctr }
+ import @Geometry named clabeladjust { aclabeladjust }
+
+ named dlabel { adlabel }
+ named dlabelmargin { adlabelmargin }
+ named dlabelfont { adlabelfont }
+ named dlabelbreak { adlabelbreak }
+ named dlabelformat right @Body { adlabelformat @Body }
+ import @Geometry named dlabelpos { adlabelpos }
+ named dlabelprox { adlabelprox }
+ import @Geometry named dlabelangle { adlabelangle }
+ named dlabelctr { adlabelctr }
+ import @Geometry named dlabeladjust { adlabeladjust }
+
+ right @Body
+ {
+
+ def @LabelPos
+ left x
+ right y
+ {
+ nodelabelpos @Case {
+ x @Yield y
+ else @Yield ""
+ }
+ }
+
+ def @If
+ left cond
+ right x
+ {
+ cond @Case {
+ { yes Yes } @Yield x
+ else @Yield ""
+ }
+ }
+
+
+ def @Strut right x
+ {
+ def vs { 0.5w @VShift { vstrut @High } }
+ def hs { hstrut @Wide }
+
+ @HContract @VContract {
+ @HContract @VContract x | vs / hs |
+ }
+ }
+
+ def @Indent right x
+ {
+ x @Case {
+ { top left } @Yield 0.0rt
+ { ctr } @Yield 0.5rt
+ { foot right } @Yield 1.0rt
+ { mctr } @Yield 0.5bx
+ else @Yield x
+ }
+ }
+
+ def @VSize right x
+ {
+ vsize @Case {
+ "" @Yield x
+ else @Yield { vsize @High { /{@Indent vindent} x / } }
+ }
+ }
+
+ def @HSize right x
+ {
+ hsize @Case {
+ "" @Yield x
+ else @Yield { hsize @Wide { |{@Indent hindent} x | } }
+ }
+ }
+
+ def @Align right x
+ {
+ x @Case {
+ { top left } @Yield 0.0w
+ { ctr } @Yield 0.5w
+ { foot right } @Yield 1.0w
+ { mark } @Yield "+0i"
+ else @Yield x
+ }
+ }
+
+ def @ALabel
+ {
+ @DoLabel
+ which { "a" }
+ label { alabel @Else nodelabel }
+ labelmargin { alabelmargin @Else nodelabelmargin }
+ labelfont { alabelfont @Else nodelabelfont }
+ labelbreak { alabelbreak @Else nodelabelbreak }
+ labelformat { alabelformat @Body @Else nodelabelformat @Body}
+ labelpos { alabelpos @Else nodelabelpos }
+ labelprox { alabelprox @Else nodelabelprox }
+ labelangle { alabelangle @Else nodelabelangle }
+ labelctr { alabelctr @Else nodelabelctr }
+ labeladjust { alabeladjust @Else nodelabeladjust }
+ }
+
+ def @BLabel
+ {
+ @DoLabel
+ which { "b" }
+ label { blabel @Else nodelabel }
+ labelmargin { blabelmargin @Else nodelabelmargin }
+ labelfont { blabelfont @Else nodelabelfont }
+ labelbreak { blabelbreak @Else nodelabelbreak }
+ labelformat { blabelformat @Body @Else nodelabelformat @Body}
+ labelpos { blabelpos @Else nodelabelpos }
+ labelprox { blabelprox @Else nodelabelprox }
+ labelangle { blabelangle @Else nodelabelangle }
+ labelctr { blabelctr @Else nodelabelctr }
+ labeladjust { blabeladjust @Else nodelabeladjust }
+ }
+
+ def @CLabel
+ {
+ @DoLabel
+ which { "c" }
+ label { clabel @Else nodelabel }
+ labelmargin { clabelmargin @Else nodelabelmargin }
+ labelfont { clabelfont @Else nodelabelfont }
+ labelbreak { clabelbreak @Else nodelabelbreak }
+ labelformat { clabelformat @Body @Else nodelabelformat @Body}
+ labelpos { clabelpos @Else nodelabelpos }
+ labelprox { clabelprox @Else nodelabelprox }
+ labelangle { clabelangle @Else nodelabelangle }
+ labelctr { clabelctr @Else nodelabelctr }
+ labeladjust { clabeladjust @Else nodelabeladjust }
+ }
+
+ def @DLabel
+ {
+ @DoLabel
+ which { "d" }
+ label { dlabel @Else nodelabel }
+ labelmargin { dlabelmargin @Else nodelabelmargin }
+ labelfont { dlabelfont @Else nodelabelfont }
+ labelbreak { dlabelbreak @Else nodelabelbreak }
+ labelformat { dlabelformat @Body @Else nodelabelformat @Body}
+ labelpos { dlabelpos @Else nodelabelpos }
+ labelprox { dlabelprox @Else nodelabelprox }
+ labelangle { dlabelangle @Else nodelabelangle }
+ labelctr { dlabelctr @Else nodelabelctr }
+ labeladjust { dlabeladjust @Else nodelabeladjust }
+ }
+
+ import @Geometry
+ def @OutLine
+ {
+ @BackEnd @Case {
+ PostScript @Yield {
+ outline @Case {
+ box @Yield { "ldiagbox" }
+ curvebox @Yield { "("margin") ldiagcurvebox" }
+ shadowbox @Yield { shadow "ldiagshadow ldiagbox" }
+ square @Yield { "ldiagsquare" }
+ diamond @Yield { "ldiagdiamond" }
+ polygon @Yield { sides angle "ldiagpolygon" }
+ isosceles @Yield { "ldiagisosceles" }
+ ellipse @Yield { "ldiagellipse" }
+ circle @Yield { "ldiagcircle" }
+ else @Yield {
+ outline
+ margin { "("margin") ldiagdecodelength" }
+ shadow { shadow }
+ sides { sides }
+ angle { angle }
+ }
+ }
+ }
+ PDF @Yield {}
+ }
+ }
+
+ def @Value
+ {
+ @BackEnd @Case {
+ PostScript @Yield {
+ @HContract @VContract
+ {
+ {
+ "ldiagnodebegin [" @OutLine "]"
+ outlinedashlength "[" outlinestyle "]"
+ outlinewidth "/ldiag"paint "ldiagnodeend"
+ "(IN) ldiagpushtagdict"
+ //
+ "ldiagpopuptagdict"
+ }
+ @Graphic
+ {
+ {@Align valign} @VShift {@Align halign} @HShift
+ @AddMargins
+ mtop { topmargin @Else vmargin @Else margin }
+ mfoot { footmargin @Else vmargin @Else margin }
+ mleft { leftmargin @Else hmargin @Else margin }
+ mright { rightmargin @Else hmargin @Else margin }
+ @HSize @VSize @HContract @VContract
+ font @Font break @Break format @Strut @Body
+ }
+ / {alabel @Else nodelabel} @IfNonEmpty @ALabel
+ / {blabel @Else nodelabel} @IfNonEmpty @BLabel
+ / {clabel @Else nodelabel} @IfNonEmpty @CLabel
+ / {dlabel @Else nodelabel} @IfNonEmpty @DLabel
+ }
+ }
+ PDF @Yield {}
+ }
+ }
+
+ def @TValue
+ {
+ nodetag @Case {
+ "" @Yield @Value
+ else @Yield { nodetag:: @Value }
+ }
+ }
+
+ translate @Case {
+ "" @Yield @TValue
+ else @Yield {
+ @Null & # so that preceding space gets chewed up
+ @Transform translate { translate } rotate { rotate } @TValue
+ }
+ }
+ }
+
+
+ #######################################################################
+ # #
+ # @BNode #
+ # #
+ #######################################################################
+
+ def @BNode
+ import @Geometry named translate
+ named to precedence 10 left x right y {
+ @BackEnd @Case {
+ PostScript @Yield { x y "ldiagpsub" }
+ PDF @Yield {""}
+ }
+ }
+ {}
+ import @Geometry named rotate { 0d }
+ import @Geometry named outline
+ named margin {}
+ named shadow {}
+ named sides {}
+ named angle {}
+ { boutline
+ margin { margin }
+ shadow { shadow }
+ sides { sides }
+ angle { angle }
+ }
+ named margin { bmargin }
+ import @Geometry named shadow { bshadow }
+ import @Geometry named sides { bsides }
+ import @Geometry named angle { bangle }
+ named nodetag { bnodetag }
+ named outlinestyle
+ named solid { "/ldiagsolid" }
+ named dashed { "/ldiagdashed" }
+ named cdashed { "/ldiagcdashed" }
+ named dotted { "/ldiagdotted" }
+ named noline { "/ldiagnoline" }
+ { boutlinestyle }
+ import @Geometry named outlinedashlength { boutlinedashlength}
+ import @Geometry named outlinewidth
+ named thin { 0.04 ft }
+ named medium { 0.08 ft }
+ named thick { 0.12 ft }
+ { boutlinewidth }
+ named paint { bpaint }
+ named font { bfont }
+ named break { bbreak }
+ named format right @Body { bformat @Body }
+ named valign { bvalign }
+ named vsize { bvsize }
+ named vindent { bvindent }
+ named vstrut
+ named no { 0.0f }
+ named yes { 1.0f }
+ { bvstrut }
+ named vmargin { bvmargin }
+ named topmargin { btopmargin }
+ named footmargin { bfootmargin }
+
+ named halign { bhalign }
+ named hsize { bhsize }
+ named hindent { bhindent }
+ named hstrut
+ named no { 0.0f }
+ named yes { 1.0f }
+ { bhstrut }
+ named hmargin { bhmargin }
+ named leftmargin { bleftmargin }
+ named rightmargin { brightmargin }
+
+ named nodelabel { bnodelabel }
+ named nodelabelmargin { bnodelabelmargin }
+ named nodelabelfont { bnodelabelfont }
+ named nodelabelbreak { bnodelabelbreak }
+ named nodelabelformat right @Body { bnodelabelformat @Body }
+ import @Geometry named nodelabelpos { bnodelabelpos }
+ named nodelabelprox { bnodelabelprox }
+ import @Geometry named nodelabelangle { bnodelabelangle }
+ named nodelabelctr { bnodelabelctr }
+ import @Geometry named nodelabeladjust { bnodelabeladjust }
+
+ named alabel { balabel }
+ named alabelmargin { balabelmargin }
+ named alabelfont { balabelfont }
+ named alabelbreak { balabelbreak }
+ named alabelformat right @Body { balabelformat @Body }
+ import @Geometry named alabelpos { balabelpos }
+ named alabelprox { balabelprox }
+ import @Geometry named alabelangle { balabelangle }
+ named alabelctr { balabelctr }
+ import @Geometry named alabeladjust { balabeladjust }
+
+ named blabel { bblabel }
+ named blabelmargin { bblabelmargin }
+ named blabelfont { bblabelfont }
+ named blabelbreak { bblabelbreak }
+ named blabelformat right @Body { bblabelformat @Body }
+ import @Geometry named blabelpos { bblabelpos }
+ named blabelprox { bblabelprox }
+ import @Geometry named blabelangle { bblabelangle }
+ named blabelctr { bblabelctr }
+ import @Geometry named blabeladjust { bblabeladjust }
+
+ named clabel { bclabel }
+ named clabelmargin { bclabelmargin }
+ named clabelfont { bclabelfont }
+ named clabelbreak { bclabelbreak }
+ named clabelformat right @Body { bclabelformat @Body }
+ import @Geometry named clabelpos { bclabelpos }
+ named clabelprox { bclabelprox }
+ import @Geometry named clabelangle { bclabelangle }
+ named clabelctr { bclabelctr }
+ import @Geometry named clabeladjust { bclabeladjust }
+
+ named dlabel { bdlabel }
+ named dlabelmargin { bdlabelmargin }
+ named dlabelfont { bdlabelfont }
+ named dlabelbreak { bdlabelbreak }
+ named dlabelformat right @Body { bdlabelformat @Body }
+ import @Geometry named dlabelpos { bdlabelpos }
+ named dlabelprox { bdlabelprox }
+ import @Geometry named dlabelangle { bdlabelangle }
+ named dlabelctr { bdlabelctr }
+ import @Geometry named dlabeladjust { bdlabeladjust }
+
+ right @Body
+ {
+
+ def @LabelPos
+ left x
+ right y
+ {
+ nodelabelpos @Case {
+ x @Yield y
+ else @Yield ""
+ }
+ }
+
+ def @If
+ left cond
+ right x
+ {
+ cond @Case {
+ { yes Yes } @Yield x
+ else @Yield ""
+ }
+ }
+
+
+ def @Strut right x
+ {
+ def vs { 0.5w @VShift { vstrut @High } }
+ def hs { hstrut @Wide }
+
+ @HContract @VContract {
+ @HContract @VContract x | vs / hs |
+ }
+ }
+
+ def @Indent right x
+ {
+ x @Case {
+ { top left } @Yield 0.0rt
+ { ctr } @Yield 0.5rt
+ { foot right } @Yield 1.0rt
+ { mctr } @Yield 0.5bx
+ else @Yield x
+ }
+ }
+
+ def @VSize right x
+ {
+ vsize @Case {
+ "" @Yield x
+ else @Yield { vsize @High { /{@Indent vindent} x / } }
+ }
+ }
+
+ def @HSize right x
+ {
+ hsize @Case {
+ "" @Yield x
+ else @Yield { hsize @Wide { |{@Indent hindent} x | } }
+ }
+ }
+
+ def @Align right x
+ {
+ x @Case {
+ { top left } @Yield 0.0w
+ { ctr } @Yield 0.5w
+ { foot right } @Yield 1.0w
+ { mark } @Yield "+0i"
+ else @Yield x
+ }
+ }
+
+ def @ALabel
+ {
+ @DoLabel
+ which { "a" }
+ label { alabel @Else nodelabel }
+ labelmargin { alabelmargin @Else nodelabelmargin }
+ labelfont { alabelfont @Else nodelabelfont }
+ labelbreak { alabelbreak @Else nodelabelbreak }
+ labelformat { alabelformat @Body @Else nodelabelformat @Body}
+ labelpos { alabelpos @Else nodelabelpos }
+ labelprox { alabelprox @Else nodelabelprox }
+ labelangle { alabelangle @Else nodelabelangle }
+ labelctr { alabelctr @Else nodelabelctr }
+ labeladjust { alabeladjust @Else nodelabeladjust }
+ }
+
+ def @BLabel
+ {
+ @DoLabel
+ which { "b" }
+ label { blabel @Else nodelabel }
+ labelmargin { blabelmargin @Else nodelabelmargin }
+ labelfont { blabelfont @Else nodelabelfont }
+ labelbreak { blabelbreak @Else nodelabelbreak }
+ labelformat { blabelformat @Body @Else nodelabelformat @Body}
+ labelpos { blabelpos @Else nodelabelpos }
+ labelprox { blabelprox @Else nodelabelprox }
+ labelangle { blabelangle @Else nodelabelangle }
+ labelctr { blabelctr @Else nodelabelctr }
+ labeladjust { blabeladjust @Else nodelabeladjust }
+ }
+
+ def @CLabel
+ {
+ @DoLabel
+ which { "c" }
+ label { clabel @Else nodelabel }
+ labelmargin { clabelmargin @Else nodelabelmargin }
+ labelfont { clabelfont @Else nodelabelfont }
+ labelbreak { clabelbreak @Else nodelabelbreak }
+ labelformat { clabelformat @Body @Else nodelabelformat @Body}
+ labelpos { clabelpos @Else nodelabelpos }
+ labelprox { clabelprox @Else nodelabelprox }
+ labelangle { clabelangle @Else nodelabelangle }
+ labelctr { clabelctr @Else nodelabelctr }
+ labeladjust { clabeladjust @Else nodelabeladjust }
+ }
+
+ def @DLabel
+ {
+ @DoLabel
+ which { "d" }
+ label { dlabel @Else nodelabel }
+ labelmargin { dlabelmargin @Else nodelabelmargin }
+ labelfont { dlabelfont @Else nodelabelfont }
+ labelbreak { dlabelbreak @Else nodelabelbreak }
+ labelformat { dlabelformat @Body @Else nodelabelformat @Body}
+ labelpos { dlabelpos @Else nodelabelpos }
+ labelprox { dlabelprox @Else nodelabelprox }
+ labelangle { dlabelangle @Else nodelabelangle }
+ labelctr { dlabelctr @Else nodelabelctr }
+ labeladjust { dlabeladjust @Else nodelabeladjust }
+ }
+
+ import @Geometry
+ def @OutLine
+ {
+ @BackEnd @Case {
+ PostScript @Yield {
+ outline @Case {
+ box @Yield { "ldiagbox" }
+ curvebox @Yield { "("margin") ldiagcurvebox" }
+ shadowbox @Yield { shadow "ldiagshadow ldiagbox" }
+ square @Yield { "ldiagsquare" }
+ diamond @Yield { "ldiagdiamond" }
+ polygon @Yield { sides angle "ldiagpolygon" }
+ isosceles @Yield { "ldiagisosceles" }
+ ellipse @Yield { "ldiagellipse" }
+ circle @Yield { "ldiagcircle" }
+ else @Yield {
+ outline
+ margin { "("margin") ldiagdecodelength" }
+ shadow { shadow }
+ sides { sides }
+ angle { angle }
+ }
+ }
+ }
+ PDF @Yield {}
+ }
+ }
+
+ def @Value
+ {
+ @BackEnd @Case {
+ PostScript @Yield {
+ @HContract @VContract
+ {
+ {
+ "ldiagnodebegin [" @OutLine "]"
+ outlinedashlength "[" outlinestyle "]"
+ outlinewidth "/ldiag"paint "ldiagnodeend"
+ "(IN) ldiagpushtagdict"
+ //
+ "ldiagpopuptagdict"
+ }
+ @Graphic
+ {
+ {@Align valign} @VShift {@Align halign} @HShift
+ @AddMargins
+ mtop { topmargin @Else vmargin @Else margin }
+ mfoot { footmargin @Else vmargin @Else margin }
+ mleft { leftmargin @Else hmargin @Else margin }
+ mright { rightmargin @Else hmargin @Else margin }
+ @HSize @VSize @HContract @VContract
+ font @Font break @Break format @Strut @Body
+ }
+ / {alabel @Else nodelabel} @IfNonEmpty @ALabel
+ / {blabel @Else nodelabel} @IfNonEmpty @BLabel
+ / {clabel @Else nodelabel} @IfNonEmpty @CLabel
+ / {dlabel @Else nodelabel} @IfNonEmpty @DLabel
+ }
+ }
+ PDF @Yield {}
+ }
+ }
+
+ def @TValue
+ {
+ nodetag @Case {
+ "" @Yield @Value
+ else @Yield { nodetag:: @Value }
+ }
+ }
+
+ translate @Case {
+ "" @Yield @TValue
+ else @Yield {
+ @Null & # so that preceding space gets chewed up
+ @Transform translate { translate } rotate { rotate } @TValue
+ }
+ }
+ }
+
+
+ #######################################################################
+ # #
+ # @CNode #
+ # #
+ #######################################################################
+
+ def @CNode
+ import @Geometry named translate
+ named to precedence 10 left x right y {
+ @BackEnd @Case {
+ PostScript @Yield { x y "ldiagpsub" }
+ PDF @Yield {""}
+ }
+ }
+ {}
+ import @Geometry named rotate { 0d }
+ import @Geometry named outline
+ named margin {}
+ named shadow {}
+ named sides {}
+ named angle {}
+ { coutline
+ margin { margin }
+ shadow { shadow }
+ sides { sides }
+ angle { angle }
+ }
+ named margin { cmargin }
+ import @Geometry named shadow { cshadow }
+ import @Geometry named sides { csides }
+ import @Geometry named angle { cangle }
+ named nodetag { cnodetag }
+ named outlinestyle
+ named solid { "/ldiagsolid" }
+ named dashed { "/ldiagdashed" }
+ named cdashed { "/ldiagcdashed" }
+ named dotted { "/ldiagdotted" }
+ named noline { "/ldiagnoline" }
+ { coutlinestyle }
+ import @Geometry named outlinedashlength { coutlinedashlength}
+ import @Geometry named outlinewidth
+ named thin { 0.04 ft }
+ named medium { 0.08 ft }
+ named thick { 0.12 ft }
+ { coutlinewidth }
+ named paint { cpaint }
+ named font { cfont }
+ named break { cbreak }
+ named format right @Body { cformat @Body }
+ named valign { cvalign }
+ named vsize { cvsize }
+ named vindent { cvindent }
+ named vstrut
+ named no { 0.0f }
+ named yes { 1.0f }
+ { cvstrut }
+ named vmargin { cvmargin }
+ named topmargin { ctopmargin }
+ named footmargin { cfootmargin }
+
+ named halign { chalign }
+ named hsize { chsize }
+ named hindent { chindent }
+ named hstrut
+ named no { 0.0f }
+ named yes { 1.0f }
+ { chstrut }
+ named hmargin { chmargin }
+ named leftmargin { cleftmargin }
+ named rightmargin { crightmargin }
+
+ named nodelabel { cnodelabel }
+ named nodelabelmargin { cnodelabelmargin }
+ named nodelabelfont { cnodelabelfont }
+ named nodelabelbreak { cnodelabelbreak }
+ named nodelabelformat right @Body { cnodelabelformat @Body }
+ import @Geometry named nodelabelpos { cnodelabelpos }
+ named nodelabelprox { cnodelabelprox }
+ import @Geometry named nodelabelangle { cnodelabelangle }
+ named nodelabelctr { cnodelabelctr }
+ import @Geometry named nodelabeladjust { cnodelabeladjust }
+
+ named alabel { calabel }
+ named alabelmargin { calabelmargin }
+ named alabelfont { calabelfont }
+ named alabelbreak { calabelbreak }
+ named alabelformat right @Body { calabelformat @Body }
+ import @Geometry named alabelpos { calabelpos }
+ named alabelprox { calabelprox }
+ import @Geometry named alabelangle { calabelangle }
+ named alabelctr { calabelctr }
+ import @Geometry named alabeladjust { calabeladjust }
+
+ named blabel { cblabel }
+ named blabelmargin { cblabelmargin }
+ named blabelfont { cblabelfont }
+ named blabelbreak { cblabelbreak }
+ named blabelformat right @Body { cblabelformat @Body }
+ import @Geometry named blabelpos { cblabelpos }
+ named blabelprox { cblabelprox }
+ import @Geometry named blabelangle { cblabelangle }
+ named blabelctr { cblabelctr }
+ import @Geometry named blabeladjust { cblabeladjust }
+
+ named clabel { cclabel }
+ named clabelmargin { cclabelmargin }
+ named clabelfont { cclabelfont }
+ named clabelbreak { cclabelbreak }
+ named clabelformat right @Body { cclabelformat @Body }
+ import @Geometry named clabelpos { cclabelpos }
+ named clabelprox { cclabelprox }
+ import @Geometry named clabelangle { cclabelangle }
+ named clabelctr { cclabelctr }
+ import @Geometry named clabeladjust { cclabeladjust }
+
+ named dlabel { cdlabel }
+ named dlabelmargin { cdlabelmargin }
+ named dlabelfont { cdlabelfont }
+ named dlabelbreak { cdlabelbreak }
+ named dlabelformat right @Body { cdlabelformat @Body }
+ import @Geometry named dlabelpos { cdlabelpos }
+ named dlabelprox { cdlabelprox }
+ import @Geometry named dlabelangle { cdlabelangle }
+ named dlabelctr { cdlabelctr }
+ import @Geometry named dlabeladjust { cdlabeladjust }
+
+ right @Body
+ {
+
+ def @LabelPos
+ left x
+ right y
+ {
+ nodelabelpos @Case {
+ x @Yield y
+ else @Yield ""
+ }
+ }
+
+ def @If
+ left cond
+ right x
+ {
+ cond @Case {
+ { yes Yes } @Yield x
+ else @Yield ""
+ }
+ }
+
+
+ def @Strut right x
+ {
+ def vs { 0.5w @VShift { vstrut @High } }
+ def hs { hstrut @Wide }
+
+ @HContract @VContract {
+ @HContract @VContract x | vs / hs |
+ }
+ }
+
+ def @Indent right x
+ {
+ x @Case {
+ { top left } @Yield 0.0rt
+ { ctr } @Yield 0.5rt
+ { foot right } @Yield 1.0rt
+ { mctr } @Yield 0.5bx
+ else @Yield x
+ }
+ }
+
+ def @VSize right x
+ {
+ vsize @Case {
+ "" @Yield x
+ else @Yield { vsize @High { /{@Indent vindent} x / } }
+ }
+ }
+
+ def @HSize right x
+ {
+ hsize @Case {
+ "" @Yield x
+ else @Yield { hsize @Wide { |{@Indent hindent} x | } }
+ }
+ }
+
+ def @Align right x
+ {
+ x @Case {
+ { top left } @Yield 0.0w
+ { ctr } @Yield 0.5w
+ { foot right } @Yield 1.0w
+ { mark } @Yield "+0i"
+ else @Yield x
+ }
+ }
+
+ def @ALabel
+ {
+ @DoLabel
+ which { "a" }
+ label { alabel @Else nodelabel }
+ labelmargin { alabelmargin @Else nodelabelmargin }
+ labelfont { alabelfont @Else nodelabelfont }
+ labelbreak { alabelbreak @Else nodelabelbreak }
+ labelformat { alabelformat @Body @Else nodelabelformat @Body}
+ labelpos { alabelpos @Else nodelabelpos }
+ labelprox { alabelprox @Else nodelabelprox }
+ labelangle { alabelangle @Else nodelabelangle }
+ labelctr { alabelctr @Else nodelabelctr }
+ labeladjust { alabeladjust @Else nodelabeladjust }
+ }
+
+ def @BLabel
+ {
+ @DoLabel
+ which { "b" }
+ label { blabel @Else nodelabel }
+ labelmargin { blabelmargin @Else nodelabelmargin }
+ labelfont { blabelfont @Else nodelabelfont }
+ labelbreak { blabelbreak @Else nodelabelbreak }
+ labelformat { blabelformat @Body @Else nodelabelformat @Body}
+ labelpos { blabelpos @Else nodelabelpos }
+ labelprox { blabelprox @Else nodelabelprox }
+ labelangle { blabelangle @Else nodelabelangle }
+ labelctr { blabelctr @Else nodelabelctr }
+ labeladjust { blabeladjust @Else nodelabeladjust }
+ }
+
+ def @CLabel
+ {
+ @DoLabel
+ which { "c" }
+ label { clabel @Else nodelabel }
+ labelmargin { clabelmargin @Else nodelabelmargin }
+ labelfont { clabelfont @Else nodelabelfont }
+ labelbreak { clabelbreak @Else nodelabelbreak }
+ labelformat { clabelformat @Body @Else nodelabelformat @Body}
+ labelpos { clabelpos @Else nodelabelpos }
+ labelprox { clabelprox @Else nodelabelprox }
+ labelangle { clabelangle @Else nodelabelangle }
+ labelctr { clabelctr @Else nodelabelctr }
+ labeladjust { clabeladjust @Else nodelabeladjust }
+ }
+
+ def @DLabel
+ {
+ @DoLabel
+ which { "d" }
+ label { dlabel @Else nodelabel }
+ labelmargin { dlabelmargin @Else nodelabelmargin }
+ labelfont { dlabelfont @Else nodelabelfont }
+ labelbreak { dlabelbreak @Else nodelabelbreak }
+ labelformat { dlabelformat @Body @Else nodelabelformat @Body}
+ labelpos { dlabelpos @Else nodelabelpos }
+ labelprox { dlabelprox @Else nodelabelprox }
+ labelangle { dlabelangle @Else nodelabelangle }
+ labelctr { dlabelctr @Else nodelabelctr }
+ labeladjust { dlabeladjust @Else nodelabeladjust }
+ }
+
+ import @Geometry
+ def @OutLine
+ {
+ @BackEnd @Case {
+ PostScript @Yield {
+ outline @Case {
+ box @Yield { "ldiagbox" }
+ curvebox @Yield { "("margin") ldiagcurvebox" }
+ shadowbox @Yield { shadow "ldiagshadow ldiagbox" }
+ square @Yield { "ldiagsquare" }
+ diamond @Yield { "ldiagdiamond" }
+ polygon @Yield { sides angle "ldiagpolygon" }
+ isosceles @Yield { "ldiagisosceles" }
+ ellipse @Yield { "ldiagellipse" }
+ circle @Yield { "ldiagcircle" }
+ else @Yield {
+ outline
+ margin { "("margin") ldiagdecodelength" }
+ shadow { shadow }
+ sides { sides }
+ angle { angle }
+ }
+ }
+ }
+ PDF @Yield {}
+ }
+ }
+
+ def @Value
+ {
+ @BackEnd @Case {
+ PostScript @Yield {
+ @HContract @VContract
+ {
+ {
+ "ldiagnodebegin [" @OutLine "]"
+ outlinedashlength "[" outlinestyle "]"
+ outlinewidth "/ldiag"paint "ldiagnodeend"
+ "(IN) ldiagpushtagdict"
+ //
+ "ldiagpopuptagdict"
+ }
+ @Graphic
+ {
+ {@Align valign} @VShift {@Align halign} @HShift
+ @AddMargins
+ mtop { topmargin @Else vmargin @Else margin }
+ mfoot { footmargin @Else vmargin @Else margin }
+ mleft { leftmargin @Else hmargin @Else margin }
+ mright { rightmargin @Else hmargin @Else margin }
+ @HSize @VSize @HContract @VContract
+ font @Font break @Break format @Strut @Body
+ }
+ / {alabel @Else nodelabel} @IfNonEmpty @ALabel
+ / {blabel @Else nodelabel} @IfNonEmpty @BLabel
+ / {clabel @Else nodelabel} @IfNonEmpty @CLabel
+ / {dlabel @Else nodelabel} @IfNonEmpty @DLabel
+ }
+ }
+ PDF @Yield {}
+ }
+ }
+
+ def @TValue
+ {
+ nodetag @Case {
+ "" @Yield @Value
+ else @Yield { nodetag:: @Value }
+ }
+ }
+
+ translate @Case {
+ "" @Yield @TValue
+ else @Yield {
+ @Null & # so that preceding space gets chewed up
+ @Transform translate { translate } rotate { rotate } @TValue
+ }
+ }
+ }
+
+
+ #######################################################################
+ # #
+ # @Box, @CurveBox, and other standard node abbreviations #
+ # #
+ #######################################################################
+
macro @@Node { @Node }
macro @Box { @Node outline { box } }
macro @CurveBox { @Node outline { curvebox } }
@@ -1920,6 +3572,12 @@ def @DiagSetup
macro @Circle { @Node outline { circle } }
+ #######################################################################
+ # #
+ # Arrowheads #
+ # #
+ #######################################################################
+
macro @InsulatedNode {
@Node
topmargin { 0i }
@@ -2202,6 +3860,13 @@ def @DiagSetup
}
}
+
+ #######################################################################
+ # #
+ # @Link #
+ # #
+ #######################################################################
+
def @Link
import @Geometry named path
named from {}
@@ -3575,6 +5240,13 @@ def @DiagSetup
}
}
+
+ #######################################################################
+ # #
+ # Abbreviations for standard link types #
+ # #
+ #######################################################################
+
macro @Line { @Link path { line } }
macro @DoubleLine { @Link path { doubleline } }
macro @Arrow { @Link path { line } arrow { yes } }
@@ -3616,6 +5288,13 @@ def @DiagSetup
macro @UWrapCurve { @Link path {uwrapcurve} }
macro @UWrapCurveArrow { @Link path {uwrapcurve} arrow { yes } }
+
+ #######################################################################
+ # #
+ # Tree code. #
+ # #
+ #######################################################################
+
export
@Node @Box @CurveBox @ShadowBox @Square @Diamond
@@ -3828,18 +5507,953 @@ def @DiagSetup
@HContract @VContract x
}
- @BackEnd @Case {
- PostScript @Yield {
- {
- save @Case { { yes Yes } @Yield "grestore save gsave" else @Yield {} }
- maxlabels "ldiagbegin"
- //
- "ldiagend"
- save @Case { { yes Yes } @Yield "restore" else @Yield {} }
- } @Graphic @Body
- }
- PDF @Yield {}
+
+ #######################################################################
+ # #
+ # Syntax diagrams code #
+ # #
+ # Helper definitions; also skips #
+ # #
+ #######################################################################
+
+ def pslength right x { "("x") ldiagdecodelength" }
+ def pssyntaxgap { "("syntaxgap") ldiagdecodelength" }
+ def pssyntaxbias { "("syntaxbias") ldiagdecodelength" }
+ def pssyntaxradius { "("syntaxradius") ldiagdecodelength" }
+
+ def @ArrowLeftFrom left direction right pt
+ {
+ @Line arrow { direction } from { pt } to { pt -- { pssyntaxgap 0 } }
+ }
+
+ def @ArrowRightFrom left direction right pt
+ {
+ @Line arrow { direction } from { pt } to { pt ++ { pssyntaxgap 0 } }
+ }
+
+ def @ArrowUpFrom left direction right pt
+ {
+ @Line arrow { direction } from { pt } to { pt ++ { 0 pssyntaxgap } }
+ }
+
+ def @ArrowDownFrom left direction right pt
+ {
+ @Line arrow { direction } from { pt } to { pt -- { 0 pssyntaxgap } }
+ }
+
+ macro @LineLeftFrom { no @ArrowLeftFrom }
+ macro @LineRightFrom { no @ArrowRightFrom }
+ macro @LineUpFrom { no @ArrowUpFrom }
+ macro @LineDownFrom { no @ArrowDownFrom }
+
+ macro @Right { "1p" }
+ macro @Up { "2p" }
+ macro @Left { "3p" }
+ macro @Down { "4p" }
+
+ macro @CurrDirection { @CurrZUnit }
+
+ def @GoRight right x { @Right @ZUnit x }
+ def @GoUp right x { @Up @ZUnit x }
+ def @GoLeft right x { @Left @ZUnit x }
+ def @GoDown right x { @Down @ZUnit x }
+
+ def @GoReverse right x
+ {
+ @CurrDirection @Case {
+ @Right @Yield @GoLeft x
+ @Up @Yield @GoDown x
+ @Left @Yield @GoRight x
+ @Down @Yield @GoUp x
+ }
+ }
+
+
+ def @LabelMarks right x {
+ @HContract @VContract @ANode
+ outline {
+ NMK:: { xmark ysize }
+ SMK:: { xmark 0 }
+ WMK:: { 0 ymark }
+ EMK:: { xsize ymark }
+ NW:: { 0 ysize }
+ SW:: { 0 0 }
+ SE:: { xsize 0 }
+ NE:: { xsize ysize }
+ }
+ font {}
+ margin { 0c }
+ vstrut { no }
+ outlinestyle { noline }
+ halign { mark }
+ valign { mark }
+ x
+ }
+
+ def @HSkip
+ {
+ OX:: @LabelMarks { syntaxgap @Wide {} }
+ / @Line from { "OX@WMK" } to { "OX@EMK" }
+ }
+
+ def @VSkip
+ {
+ OX:: @LabelMarks { syntaxgap @High {} }
+ / @Line from { "OX@NMK" } to { "OX@SMK" }
+ }
+
+ def @Skip
+ {
+ @CurrDirection @Case {
+ { @Left @Right } @Yield @HSkip
+ { @Up @Down } @Yield @VSkip
+ }
+ }
+
+ def @LRLine right x
+ {
+ @HContract @VContract { @HSkip | x | @HSkip }
+ }
+
+ def @UDLine right x
+ {
+ @HContract @VContract { @VSkip / x / @VSkip }
+ }
+
+
+ #######################################################################
+ # #
+ # Ordinary starts: @StartRight, @StartUp, @StartLeft, @StartDown #
+ # #
+ #######################################################################
+
+ def @StartRight right x
+ {
+ @VContract {
+ @LabelMarks {
+ |syntaxgap @GoRight x |syntaxgap
+ }
+ / @LineRightFrom WMK
+ / back @ArrowLeftFrom EMK
+ }
+ }
+
+ def @StartUp right x
+ {
+ @VContract {
+ @LabelMarks {
+ ^/syntaxgap @GoUp x /syntaxgap
+ }
+ / @LineUpFrom SMK
+ / back @ArrowDownFrom NMK
+ }
+ }
+
+ def @StartLeft right x
+ {
+ @VContract {
+ @LabelMarks {
+ |syntaxgap @GoLeft x |syntaxgap
+ }
+ / @LineLeftFrom EMK
+ / back @ArrowRightFrom WMK
+ }
+ }
+
+ def @StartDown right x
+ {
+ @VContract {
+ @LabelMarks {
+ ^/syntaxgap @GoDown x /syntaxgap
+ }
+ / @LineDownFrom NMK
+ / back @ArrowUpFrom SMK
+ }
+ }
+
+
+ #######################################################################
+ # #
+ # Fancy starts: @StartRightRight, @StartRightDown #
+ # #
+ #######################################################################
+
+ def @StartRightRight
+ named A {}
+ named B {}
+ {
+ AA:: @LabelMarks { @HSkip & @GoRight A }
+ //syntaxgap
+ //syntaxgap
+ |syntaxgap |syntaxgap |syntaxgap |syntaxgap |syntaxgap |syntaxgap
+ CC:: @LabelMarks {}
+ //syntaxgap
+ //syntaxgap
+ |syntaxgap |syntaxgap |syntaxgap |syntaxgap |syntaxgap |syntaxgap
+ BB:: @LabelMarks { @GoRight B & @HSkip }
+ // @RVLCurve from { AA@EMK } to { CC@WMK }
+ bias { pssyntaxbias } radius { pssyntaxradius }
+ // @LVRCurve from { CC@WMK } to { BB@WMK }
+ bias { pssyntaxbias } radius { pssyntaxradius }
+ back @ArrowLeftFrom BB@EMK
+ }
+
+ def @StartRightDown
+ named A {}
+ named B {}
+ {
+ @HContract @VContract {
+ / BB:: @LabelMarks |syntaxgap AA::@LabelMarks @GoRight A |syntaxbias
+ /syntaxgap | |
+ /syntaxgap | |
+ }
+ / @Line from { BB@EMK } to { AA@WMK }
+ / @RVLCurve from { AA@EMK } to { xcoord AA@EMK pssyntaxgap }
+ bias { pssyntaxbias } radius { pssyntaxradius }
+ / @HVCurve from { xcoord AA@EMK pssyntaxgap } to { 0 0 }
+ bias { pssyntaxbias } radius { pssyntaxradius }
+ / @GoDown B
+ / @VSkip
+ / CC:: @LabelMarks {}
+ / back @ArrowUpFrom CC@NMK
+ }
+
+
+ #######################################################################
+ # #
+ # Cells: @XCell, @ACell, @BCell, @CCell #
+ # #
+ #######################################################################
+
+ def @RightCell right x
+ {
+ @VContract {
+ @LabelMarks {
+ |syntaxgap x |syntaxgap
+ }
+ / forward @ArrowRightFrom WMK
+ / @LineLeftFrom EMK
+ }
+ }
+
+ def @LeftCell right x
+ {
+ @VContract {
+ @LabelMarks {
+ |syntaxgap x |syntaxgap
+ }
+ / forward @ArrowLeftFrom EMK
+ / @LineRightFrom WMK
+ }
+ }
+
+ def @DownCell right x
+ {
+ @VContract {
+ @LabelMarks {
+ ^/syntaxgap x /syntaxgap
+ }
+ / forward @ArrowDownFrom NMK
+ / @LineUpFrom SMK
+ }
+ }
+
+ def @UpCell right x
+ {
+ @VContract {
+ @LabelMarks {
+ ^/syntaxgap x /syntaxgap
+ }
+ / forward @ArrowUpFrom SMK
+ / @LineDownFrom NMK
+ }
+ }
+
+ def @XCell right x
+ {
+ @CurrDirection @Case {
+ @Right @Yield @RightCell x
+ @Up @Yield @UpCell x
+ @Left @Yield @LeftCell x
+ @Down @Yield @DownCell x
+ }
+ }
+
+ macro @ACell { @XCell @ANode }
+ macro @BCell { @XCell @BNode }
+ macro @CCell { @XCell @CNode }
+
+
+ #######################################################################
+ # #
+ # @Sequence #
+ # #
+ #######################################################################
+
+ def @Sequence
+ named A {}
+ named B {}
+ named C {}
+ named D {}
+ named E {}
+ named F {}
+ named G {}
+ named H {}
+ named I {}
+ named J {}
+ named K {}
+ named L {}
+ {
+
+ @CurrDirection @Case {
+ @Right @Yield
+ @HContract { A | B | C | D | E | F | G | H | I | J | K | L }
+ @Up @Yield
+ @VContract { L / K / J / I / H / G / F / E / D / C / B / A }
+ @Left @Yield
+ @HContract { L | K | J | I | H | G | F | E | D | C | B | A }
+ @Down @Yield
+ @VContract { A / B / C / D / E / F / G / H / I / J / K / L }
+ }
+ }
+
+
+ #######################################################################
+ # #
+ # @Select and @Optional #
+ # #
+ #######################################################################
+
+ def @Select
+ named A {}
+ named B {}
+ named C {}
+ named D {}
+ named E {}
+ named F {}
+ named G {}
+ named H {}
+ named I {}
+ named J {}
+ named K {}
+ named L {}
+ {
+
+ def @RLFirstOrMiddle
+ left label
+ named i { 0i }
+ named al { no }
+ named ar { no }
+ right x
+ {
+ {|i @HContract { |syntaxgap label:: @LabelMarks x |syntaxgap }}
+ // @Line from { label"@WMK" } to { 0 ycoord label"@WMK" }
+ arrow { al }
+ // @Line from { label"@EMK" } to { xsize ycoord label"@EMK" }
+ arrow { ar }
+ }
+
+ def @UDFirstOrMiddle
+ left label
+ named i { 0i }
+ named au { no }
+ named ad { no }
+ right x
+ {
+ {/i @VContract { /syntaxgap label:: @LabelMarks x /syntaxgap }}
+ || @Line from { label"@NMK" } to { xcoord label"@NMK" ysize }
+ arrow { au }
+ || @Line from { label"@SMK" } to { xcoord label"@SMK" 0 }
+ arrow { ad }
+ }
+
+ def @RLLast
+ left label
+ named i { 0i }
+ named al { no }
+ named ar { no }
+ right x
+ {
+ {|i @HContract { |syntaxgap label:: @LabelMarks x |syntaxgap }}
+ // @HVCurve from { label"@WMK" } to { 0 ycoord "AX@WMK" }
+ arrow { al } bias { pssyntaxbias } radius { pssyntaxradius }
+ // @HVCurve from { label"@EMK" } to { xsize ycoord "AX@WMK" }
+ arrow { ar } bias { pssyntaxbias } radius { pssyntaxradius }
+ }
+
+ def @UDLast
+ left label
+ named i { 0i }
+ named au { no }
+ named ad { no }
+ right x
+ {
+ {/i @VContract { /syntaxgap label:: @LabelMarks x /syntaxgap }}
+ || @VHCurve from { label"@NMK" } to { xcoord "AX@NMK" ysize }
+ arrow { au } bias { pssyntaxbias } radius { pssyntaxradius }
+ || @VHCurve from { label"@SMK" } to { xcoord "AX@SMK" 0 }
+ arrow { ad } bias { pssyntaxbias } radius { pssyntaxradius }
+ }
+
+ def @DirectedSelect
+ named @First left label right x {}
+ named @Middle left label right x {}
+ named @Last left label right x {}
+ named @Join precedence 90 left x right y {}
+ {
+
+ def @LastIsA
+ {
+ A
+ }
+
+ def @LastIsB
+ {
+ AX @First A
+ @Join BX @Last B
+ }
+
+ def @LastIsC
+ {
+ AX @First A
+ @Join BX @Middle B
+ @Join CX @Last C
+ }
+
+ def @LastIsD
+ {
+ AX @First A
+ @Join BX @Middle B
+ @Join CX @Middle C
+ @Join DX @Last D
+ }
+
+ def @LastIsE
+ {
+ AX @First A
+ @Join BX @Middle B
+ @Join CX @Middle C
+ @Join DX @Middle D
+ @Join EX @Last E
+ }
+
+ def @LastIsF
+ {
+ AX @First A
+ @Join BX @Middle B
+ @Join CX @Middle C
+ @Join DX @Middle D
+ @Join EX @Middle E
+ @Join FX @Last F
+ }
+
+ def @UpToF
+ {
+ AX @First A
+ @Join BX @Middle B
+ @Join CX @Middle C
+ @Join DX @Middle D
+ @Join EX @Middle E
+ @Join FX @Middle F
+ }
+
+ def @LastIsG
+ {
+ @UpToF
+ @Join GX @Last G
+ }
+
+ def @LastIsH
+ {
+ @UpToF
+ @Join GX @Middle G
+ @Join HX @Last H
+ }
+
+ def @LastIsI
+ {
+ @UpToF
+ @Join GX @Middle G
+ @Join HX @Middle H
+ @Join IX @Last I
+ }
+
+ def @LastIsJ
+ {
+ @UpToF
+ @Join GX @Middle G
+ @Join HX @Middle H
+ @Join IX @Middle I
+ @Join JX @Last J
+ }
+
+ def @LastIsK
+ {
+ @UpToF
+ @Join GX @Middle G
+ @Join HX @Middle H
+ @Join IX @Middle I
+ @Join JX @Middle J
+ @Join KX @Last K
+ }
+
+ def @LastIsL
+ {
+ @UpToF
+ @Join GX @Middle G
+ @Join HX @Middle H
+ @Join IX @Middle I
+ @Join JX @Middle J
+ @Join KX @Middle K
+ @Join LX @Last L
+ }
+
+ def @TryA { A @Case { {} @Yield @Skip else @Yield @LastIsA } }
+ def @TryB { B @Case { {} @Yield @TryA else @Yield @LastIsB } }
+ def @TryC { C @Case { {} @Yield @TryB else @Yield @LastIsC } }
+ def @TryD { D @Case { {} @Yield @TryC else @Yield @LastIsD } }
+ def @TryE { E @Case { {} @Yield @TryD else @Yield @LastIsE } }
+ def @TryF { F @Case { {} @Yield @TryE else @Yield @LastIsF } }
+ def @TryG { G @Case { {} @Yield @TryF else @Yield @LastIsG } }
+ def @TryH { H @Case { {} @Yield @TryG else @Yield @LastIsH } }
+ def @TryI { I @Case { {} @Yield @TryH else @Yield @LastIsI } }
+ def @TryJ { J @Case { {} @Yield @TryI else @Yield @LastIsJ } }
+ def @TryK { K @Case { {} @Yield @TryJ else @Yield @LastIsK } }
+ def @TryL { L @Case { {} @Yield @TryK else @Yield @LastIsL } }
+
+ @TryL
+ }
+
+ def @RightSelect
+ {
+ @LRLine @DirectedSelect
+ @First { label @RLFirstOrMiddle x }
+ @Middle { label @RLFirstOrMiddle ar { yes } x }
+ @Last { label @RLLast ar { yes } x }
+ @Join { x //syntaxgap y }
+ }
+
+ def @UpSelect
+ {
+ @UDLine @DirectedSelect
+ @First { label @UDFirstOrMiddle i { 1r } x }
+ @Middle { label @UDFirstOrMiddle i { 1r } au { yes } x }
+ @Last { label @UDLast i { 1r } au { yes } x }
+ @Join { x ||syntaxgap y }
+ }
+
+ def @LeftSelect
+ {
+ @LRLine @DirectedSelect
+ @First { label @RLFirstOrMiddle i { 1r } x }
+ @Middle { label @RLFirstOrMiddle i { 1r } al { yes } x }
+ @Last { label @RLLast i { 1r } al { yes } x }
+ @Join { x //syntaxgap y }
+ }
+
+ def @DownSelect
+ {
+ @UDLine @DirectedSelect
+ @First { label @UDFirstOrMiddle x }
+ @Middle { label @UDFirstOrMiddle ad { yes } x }
+ @Last { label @UDLast ad { yes } x }
+ @Join { x ||syntaxgap y }
+ }
+
+ @CurrDirection @Case {
+ @Right @Yield @RightSelect
+ @Up @Yield @UpSelect
+ @Left @Yield @LeftSelect
+ @Down @Yield @DownSelect
+ }
+ }
+
+
+ def @Optional right x
+ {
+ @Select A { @Skip } B { x }
+ }
+
+
+ #######################################################################
+ # #
+ # @OptionalDiverted #
+ # #
+ #######################################################################
+
+ def @DownRightOptionalDiverted right x
+ {
+ @UDLine {
+ OX:: @LabelMarks {
+ |syntaxgap AX:: @LabelMarks @GoRight x |syntaxbias
+ /syntaxgap
+ }
+ / @Line from { "OX@NW" } to { "OX@SW" }
+ / @Line from { "OX@WMK" } to { "OX@IN@AX@WMK" }
+ / @RVLCurveArrow from { "OX@IN@AX@EMK" } to { "OX@SW" }
+ bias { pssyntaxbias } radius { pssyntaxradius }
+ }
+ }
+
+ def @UpRightOptionalDiverted right x
+ {
+ @UDLine {
+ OX:: @LabelMarks {
+ ^/syntaxgap
+ |syntaxgap AX:: @LabelMarks @GoRight x |syntaxbias
+ }
+ / @Line from { "OX@NW" } to { "OX@SW" }
+ / @Line from { "OX@WMK" } to { "OX@IN@AX@WMK" }
+ / @RVLCurveArrow from { "OX@IN@AX@EMK" } to { "OX@NW" }
+ bias { pssyntaxbias } radius { pssyntaxradius }
+ }
+ }
+
+ def @RightDownOptionalDiverted right x
+ {
+ @LRLine {
+ OX:: @LabelMarks {
+ { /syntaxgap AX:: @LabelMarks @GoDown x /syntaxbias }
+ |syntaxgap
+ }
+ / @Line from { "OX@NW" } to { "OX@NE" }
+ / @Line from { "OX@NMK" } to { "OX@IN@AX@NMK" }
+ / @VHCurve from {"OX@IN@AX@SMK"} to { "OX@SE"--{pssyntaxgap 0} }
+ bias { pssyntaxbias } radius { pssyntaxradius }
+ / @HVCurve from { "OX@SE" -- {pssyntaxgap 0} } to { "OX@NE" }
+ arrow { yes } bias { pssyntaxbias } radius { pssyntaxradius }
+ }
+ }
+
+ def @LeftDownOptionalDiverted right x
+ {
+ @LRLine {
+ OX:: @LabelMarks {
+ ^|syntaxgap
+ { /syntaxgap AX:: @LabelMarks @GoDown x /syntaxbias }
+ }
+ / @Line from { "OX@NW" } to { "OX@NE" }
+ / @Line from { "OX@NMK" } to { "OX@IN@AX@NMK" }
+ / @VHCurve from {"OX@IN@AX@SMK"} to { "OX@SW"++{pssyntaxgap 0} }
+ bias { pssyntaxbias } radius { pssyntaxradius }
+ / @HVCurve from { "OX@SW" ++ {pssyntaxgap 0} } to { "OX@NW" }
+ arrow { yes } bias { pssyntaxbias } radius { pssyntaxradius }
+ }
+ }
+
+ def @OptionalDiverted right x
+ {
+ @CurrDirection @Case {
+ @Right @Yield @RightDownOptionalDiverted x
+ @Up @Yield @UpRightOptionalDiverted x
+ @Left @Yield @LeftDownOptionalDiverted x
+ @Down @Yield @DownRightOptionalDiverted x
+ }
+ }
+
+
+ #######################################################################
+ # #
+ # @Diverted #
+ # #
+ #######################################################################
+
+ def @DownRightDiverted right x
+ {
+ @UDLine {
+ OX:: @LabelMarks {
+ |syntaxgap AX:: @LabelMarks @GoRight x |syntaxbias
+ ^/syntaxgap
+ /syntaxgap
+ }
+ / @VHCurve from { "OX@NW" } to { "OX@IN@AX@WMK" }
+ bias { pssyntaxbias } radius { pssyntaxradius }
+ / @RVLCurve from { "OX@IN@AX@EMK" }
+ to { xcoord "OX@IN@AX@WMK" ycoord "OX@EMK" }
+ bias { pssyntaxbias } radius { pssyntaxradius }
+ / @HVCurve from { xcoord "OX@IN@AX@WMK" ycoord "OX@EMK" }
+ to { "OX@SW" } bias { pssyntaxbias } radius {pssyntaxradius}
+ }
+ }
+
+ def @UpRightDiverted right x
+ {
+ @UDLine {
+ OX:: @LabelMarks {
+ ^/syntaxgap
+ /syntaxgap
+ |syntaxgap AX:: @LabelMarks @GoRight x |syntaxbias
+ }
+ / @VHCurve from { "OX@SW" } to { "OX@IN@AX@WMK" }
+ bias { pssyntaxbias } radius { pssyntaxradius }
+ / @RVLCurve from { "OX@IN@AX@EMK" }
+ to { xcoord "OX@IN@AX@WMK" ycoord "OX@EMK" }
+ bias { pssyntaxbias } radius { pssyntaxradius }
+ / @HVCurve from { xcoord "OX@IN@AX@WMK" ycoord "OX@EMK" }
+ to { "OX@NW" } bias { pssyntaxbias } radius {pssyntaxradius}
+ }
+ }
+
+ def @RightDownDiverted right x
+ {
+ @LRLine {
+ OX:: @LabelMarks {
+ { /syntaxgap AX:: @LabelMarks @GoDown x /syntaxbias }
+ ^|syntaxgap
+ |syntaxgap
+ }
+ / @HVCurve from { "OX@NW" } to { "OX@IN@AX@NMK" }
+ bias { pssyntaxbias } radius { pssyntaxradius }
+ / @VHCurve from { "OX@IN@AX@SMK" }
+ to { xcoord "OX@IN@AX@EMK" ycoord "OX@SMK" }
+ bias { pssyntaxbias } radius { pssyntaxradius }
+ / @HVCurve from { xcoord "OX@IN@AX@EMK" ycoord "OX@SMK" }
+ to { "OX@IN@AX@EMK" ++ { pssyntaxgap 0 } }
+ bias { pssyntaxbias } radius {pssyntaxradius}
+ / @VHCurve from { "OX@IN@AX@EMK" ++ { pssyntaxgap 0 } }
+ to { "OX@NE" } bias { pssyntaxbias } radius {pssyntaxradius}
+ }
+ }
+
+ def @LeftDownDiverted right x
+ {
+ @LRLine {
+ OX:: @LabelMarks {
+ |syntaxgap
+ ^|syntaxgap
+ { /syntaxgap AX:: @LabelMarks @GoDown x /syntaxbias }
+ }
+ / @HVCurve from { "OX@NE" } to { "OX@IN@AX@NMK" }
+ bias { pssyntaxbias } radius { pssyntaxradius }
+ / @VHCurve from { "OX@IN@AX@SMK" }
+ to { xcoord "OX@IN@AX@WMK" ycoord "OX@SMK" }
+ bias { pssyntaxbias } radius { pssyntaxradius }
+ / @HVCurve from { xcoord "OX@IN@AX@WMK" ycoord "OX@SMK" }
+ to { "OX@IN@AX@WMK" -- { pssyntaxgap 0 } }
+ bias { pssyntaxbias } radius {pssyntaxradius}
+ / @VHCurve from { "OX@IN@AX@WMK" -- { pssyntaxgap 0 } }
+ to { "OX@NW" } bias { pssyntaxbias } radius {pssyntaxradius}
+ }
+ }
+
+ def @Diverted right x
+ {
+ @CurrDirection @Case {
+ @Right @Yield @RightDownDiverted x
+ @Up @Yield @UpRightDiverted x
+ @Left @Yield @LeftDownDiverted x
+ @Down @Yield @DownRightDiverted x
+ }
+ }
+
+
+ #######################################################################
+ # #
+ # @RepeatDiverted #
+ # #
+ #######################################################################
+
+ def @RepeatDiverted right x
+ {
+ # this implementation exploits the coincidental similarity
+ # of @RepeatDiverted to @OptionalDiverted
+
+ @CurrDirection @Case {
+ @Right @Yield @LeftDownOptionalDiverted x
+ @Up @Yield @DownRightOptionalDiverted x
+ @Left @Yield @RightDownOptionalDiverted x
+ @Down @Yield @UpRightOptionalDiverted x
+ }
+ }
+
+
+
+ #######################################################################
+ # #
+ # @Loop and @Repeat #
+ # #
+ #######################################################################
+
+ def @Loop
+ named A {}
+ named B {}
+ {
+ def @LeftOrRightLoop
+ named al { no }
+ named ar { no }
+ {
+ @LRLine {
+ @HContract @VContract { OX:: @LabelMarks {
+ { |syntaxgap AX:: @LabelMarks A |syntaxgap }
+ //syntaxgap
+ { |0.5rt BX:: @LabelMarks @GoReverse B |syntaxgap }
+ } }
+ / @Line from { "OX@WMK" } to { "OX@IN@AX@WMK" }
+ / @Line from { "OX@EMK" } to { "OX@IN@AX@EMK" }
+ / @HVCurve from { "OX@IN@BX@EMK" } to { "OX@EMK" }
+ arrow { ar } bias {pssyntaxbias} radius {pssyntaxradius}
+ / @HVCurve from { "OX@IN@BX@WMK" } to { "OX@WMK" }
+ arrow { al } bias {pssyntaxbias} radius {pssyntaxradius}
+ }
+ }
+
+ def @UpOrDownLoop
+ named au { no }
+ named ad { no }
+ {
+ @UDLine {
+ @HContract @VContract { OX:: @LabelMarks {
+ { /syntaxgap AX:: @LabelMarks A /syntaxgap }
+ ||syntaxgap
+ { /0.5rt BX:: @LabelMarks @GoReverse B /syntaxgap }
+ } }
+ / @Line from { "OX@NMK" } to { "OX@IN@AX@NMK" }
+ / @Line from { "OX@SMK" } to { "OX@IN@AX@SMK" }
+ / @VHCurve from { "OX@IN@BX@NMK" } to { "OX@NMK" }
+ arrow { au } bias {pssyntaxbias} radius {pssyntaxradius}
+ / @VHCurve from { "OX@IN@BX@SMK" } to { "OX@SMK" }
+ arrow { ad } bias {pssyntaxbias} radius {pssyntaxradius}
+ }
+ }
+
+ @CurrDirection @Case {
+ @Right @Yield @LeftOrRightLoop al { yes }
+ @Up @Yield @UpOrDownLoop ad { yes }
+ @Left @Yield @LeftOrRightLoop ar { yes }
+ @Down @Yield @UpOrDownLoop au { yes }
+ }
+ }
+
+ def @Repeat right x
+ {
+ @Loop
+ A { x }
+ B { @Skip }
+ }
+
+
+ #######################################################################
+ # #
+ # @LoopOpposite and @RepeatOpposite #
+ # #
+ #######################################################################
+
+ def @LoopOpposite
+ named A {}
+ named B {}
+ {
+ def @LeftOrRightLoopOpposite
+ named al { no }
+ named ar { no }
+ {
+ @LRLine {
+ @HContract @VContract { OX:: @LabelMarks {
+ { |0.5rt BX:: @LabelMarks @GoReverse B |syntaxgap }
+ ^//syntaxgap
+ { |syntaxgap AX:: @LabelMarks A |syntaxgap }
+ } }
+ / @Line from { "OX@WMK" } to { "OX@IN@AX@WMK" }
+ / @Line from { "OX@EMK" } to { "OX@IN@AX@EMK" }
+ / @HVCurve from { "OX@IN@BX@EMK" } to { "OX@EMK" }
+ arrow { ar } bias {pssyntaxbias} radius {pssyntaxradius}
+ / @HVCurve from { "OX@IN@BX@WMK" } to { "OX@WMK" }
+ arrow { al } bias {pssyntaxbias} radius {pssyntaxradius}
+ }
+ }
+
+ def @UpOrDownLoopOpposite
+ named au { no }
+ named ad { no }
+ {
+ @UDLine {
+ @HContract @VContract { OX:: @LabelMarks {
+ { /0.5rt BX:: @LabelMarks @GoReverse B /syntaxgap }
+ ^||syntaxgap
+ { /syntaxgap AX:: @LabelMarks A /syntaxgap }
+ } }
+ / @Line from { "OX@NMK" } to { "OX@IN@AX@NMK" }
+ / @Line from { "OX@SMK" } to { "OX@IN@AX@SMK" }
+ / @VHCurve from { "OX@IN@BX@NMK" } to { "OX@NMK" }
+ arrow { au } bias {pssyntaxbias} radius {pssyntaxradius}
+ / @VHCurve from { "OX@IN@BX@SMK" } to { "OX@SMK" }
+ arrow { ad } bias {pssyntaxbias} radius {pssyntaxradius}
+ }
+ }
+
+ @CurrDirection @Case {
+ @Right @Yield @LeftOrRightLoopOpposite al { yes }
+ @Up @Yield @UpOrDownLoopOpposite ad { yes }
+ @Left @Yield @LeftOrRightLoopOpposite ar { yes }
+ @Down @Yield @UpOrDownLoopOpposite au { yes }
+ }
+ }
+
+ def @RepeatOpposite right x
+ {
+ @LoopOpposite
+ A { x }
+ B { @Skip }
+ }
+
+
+ #######################################################################
+ # #
+ # Value of whole diagram #
+ # #
+ #######################################################################
+
+ def @DiagValue right x
+ {
+ @BackEnd @Case {
+ PostScript @Yield {
+ {
+ save @Case {
+ { yes Yes } @Yield "grestore save gsave"
+ else @Yield {}
+ }
+ maxlabels "ldiagbegin"
+ //
+ "ldiagend"
+ save @Case {
+ { yes Yes } @Yield "restore"
+ else @Yield {}
+ }
+ } @Graphic x }
+
+ PDF @Yield {}
+ }
+ }
+
+ title @Case {
+
+ "--titledft--" @Yield @DiagValue @Body
+
+ else @Yield { title titleformat @DiagValue @Body }
}
@End @Diag
+
+
+ macro @SyntaxDiag {
+ @Diag
+ avalign { mark }
+ avstrut { yes }
+ amargin { 0.2f }
+ aoutline { box }
+ afont { Italic }
+
+ bvalign { mark }
+ bvstrut { yes }
+ bmargin { 0.2f }
+ boutline { curvebox }
+ bfont { Bold }
+
+ cvalign { mark }
+ cvstrut { yes }
+ cmargin { 0.2f }
+ coutline { circle }
+ chsize { 1f }
+
+ arrowlength { 0.4f }
+ }
}
diff --git a/include/doc b/include/doc
index 7dda601..cf483ef 100644
--- a/include/doc
+++ b/include/doc
@@ -103,9 +103,12 @@
# @TableNumbers { Arabic } # method of numbering tables
# @FigureCaptionPos { Below } # Above or Below
# @TableCaptionPos { Below } # Above or Below
- # @CaptionFont { } # figure, table caption font
- # @CaptionBreak { } # figure, table caption break
- # @CaptionFormat { @B { number @DotSep @OneCol } } # figure, table caption format
+ # @FigureCaptionFont { -2p } # figure caption font
+ # @FigureCaptionBreak { adjust hyphen 1.2fx } # figure caption break
+ # @FigureCaptionFormat{ {@B { word @NumSep number. &2s }} @Insert caption }
+ # @TableCaptionFont { -2p } # table caption font
+ # @TableCaptionBreak { adjust hyphen 1.2fx } # table caption break
+ # @TableCaptionFormat { {@B { word @NumSep number. &2s }} @Insert caption }
# @MakeFigureContents { No } # list of figures at start
# @MakeTableContents { No } # list of tables at start
# @MakeContents { No } # make contents? Yes or No
diff --git a/include/dsf b/include/dsf
index 082c59d..fda93f9 100644
--- a/include/dsf
+++ b/include/dsf
@@ -96,14 +96,14 @@ def @DocumentSetup
named @TableNumbers { Arabic } # method of numbering tables
named @FigureCaptionPos { Below } # Above or Below
named @TableCaptionPos { Below } # Above or Below
- named @FigureCaptionFont { } # figure caption font
- named @FigureCaptionBreak { } # figure caption break
+ named @FigureCaptionFont { -2p } # figure caption font
+ named @FigureCaptionBreak { adjust hyphen 1.2fx } # figure caption break
named @FigureCaptionFormat named word {} named number {} named caption {}
- { @B { word @NumSep number. &2s } @Insert caption }
- named @TableCaptionFont { } # figure caption font
- named @TableCaptionBreak { } # figure caption break
+ { {@B { word @NumSep number. &2s }} @Insert caption }
+ named @TableCaptionFont { -2p } # figure caption font
+ named @TableCaptionBreak { adjust hyphen 1.2fx } # figure caption break
named @TableCaptionFormat named word {} named number {} named caption {}
- { @B { word @NumSep number. &2s } @Insert caption }
+ { {@B { word @NumSep number. &2s }} @Insert caption }
named @MakeFigureContents { No } # list of figures at start
named @MakeTableContents { No } # list of tables at start
named @MakeContents { No } # make contents? Yes or No
@@ -3425,7 +3425,7 @@ def @DocumentSetup
def @NoCite body cite
{
macro "$" { @NoRef }
- def "," precedence 90 left x { x }
+ def "," precedence 90 left x { x"," }
def ";" precedence 90 left x { x";" }
@MakeReferences @Case {
diff --git a/include/eiffel b/include/eiffel
new file mode 100644
index 0000000..a55d5f7
--- /dev/null
+++ b/include/eiffel
@@ -0,0 +1,71 @@
+###############################################################################
+# #
+# Lout setup file for Eiffel program printing #
+# #
+# Jeffrey H. Kingston #
+# 23 February 2000 #
+# #
+###############################################################################
+
+
+###############################################################################
+# #
+# The @SysInclude { eiffelf } line #
+# #
+# This line causes Lout to read the definitions for Eiffel, and should #
+# not be touched. #
+# #
+###############################################################################
+
+@SysInclude { eiffelf }
+
+
+###############################################################################
+# #
+# The @EiffelSetup @Use clause #
+# #
+# To change the default value of any option, delete the # at the start of #
+# its line and change the value between braces. #
+# #
+###############################################################################
+
+@Use { @EiffelSetup
+ # style { varying @OrIfPlain fixed } # fixed, varying, or symbol
+ # pipe { } # pipe source through this
+
+ # fixedfont { Courier } # font family if fixed
+ # fixedstrings { Base } # string face if fixed
+ # fixedidentifiers { Base } # identifier face if fixed
+ # fixedcomments { Base } # comment face if fixed
+ # fixedkeywords { Base } # keyword face if fixed
+ # fixednumbers { Base } # number face if fixed
+ # fixedoperators { Base } # operator face if fixed
+ # fixedsize { -1.0p } # font size if fixed
+ # fixedline { 1.0vx } # line-space if fixed
+ # fixedtabin { 8 } # tab interval if fixed
+ # fixedtabout { 8s } # tab width if fixed
+
+ # varyingfont { } # font family if varying
+ # varyingstrings { Slope } # string face if varying
+ # varyingidentifiers { Slope } # identifier face if varying
+ # varyingcomments { Base } # comment face if varying
+ # varyingkeywords { Bold } # keyword face if varying
+ # varyingnumbers { Base } # number face if varying
+ # varyingoperators { Base } # operator face if varying
+ # varyingsize { 1.0f } # font size if varying
+ # varyingline { 1.0vx } # line-space if varying
+ # varyingtabin { 8 } # tab interval if varying
+ # varyingtabout { 3f } # tab width if varying
+
+ # symbolfont { } # font family if symbol
+ # symbolstrings { Slope } # string face if symbol
+ # symbolidentifiers { Slope } # identifier face if symbol
+ # symbolcomments { Base } # comment face if symbol
+ # symbolkeywords { Bold } # keyword face if symbol
+ # symbolnumbers { Base } # number face if symbol
+ # symboloperators { Base } # operator face if symbol
+ # symbolsize { 1.0f } # font size if symbol
+ # symbolline { 1.0vx } # line-space if symbol
+ # symboltabin { 8 } # tab interval if symbol
+ # symboltabout { 3f } # tab width if symbol
+}
diff --git a/include/eiffelf b/include/eiffelf
new file mode 100644
index 0000000..5ba94e1
--- /dev/null
+++ b/include/eiffelf
@@ -0,0 +1,274 @@
+
+###############################################################################
+# #
+# Lout @EiffelSetup package for formatting Eiffel programs #
+# #
+# Version 2.0 by Jeffrey H. Kingston, February 2000. #
+# #
+# This package uses a filtered body parameter to convert Eiffel source #
+# code into Lout source. The filter program is prg2lout, which is #
+# distributed with Lout and should be compiled and installed wherever #
+# Lout itself is. #
+# #
+###############################################################################
+
+export @Eiffel
+def @EiffelSetup
+ named style
+ named @OrIfPlain left x right y
+ { @BackEnd @Case { PlainText @Yield y else @Yield x } }
+ { varying @OrIfPlain fixed } # print style
+ named pipe { } # pipe through this first
+
+ named fixedfont { Courier } # font family if fixed
+ named fixedstrings { Base } # string face if fixed
+ named fixedidentifiers { Base } # identifier face if fixed
+ named fixedcomments { Base } # comment face if fixed
+ named fixedkeywords { Base } # keyword face if fixed
+ named fixednumbers { Base } # number face if fixed
+ named fixedoperators { Base } # operator face if fixed
+ named fixedsize { -1.0p } # font size if fixed
+ named fixedline { 1.0vx } # line-space if fixed
+ named fixedtabin { 8 } # tab interval if fixed
+ named fixedtabout { 8s } # tab width if fixed
+
+ named varyingfont { } # font family if varying
+ named varyingstrings { Slope } # string face if varying
+ named varyingidentifiers { Slope } # identifier face if varying
+ named varyingcomments { Base } # comment face if varying
+ named varyingkeywords { Bold } # keyword face if varying
+ named varyingnumbers { Base } # number face if varying
+ named varyingoperators { Base } # operator face if varying
+ named varyingsize { 1.0f } # font size if varying
+ named varyingline { 1.0vx } # line-space if varying
+ named varyingtabin { 8 } # tab interval if varying
+ named varyingtabout { 3f } # tab width if varying
+
+ named symbolfont { } # font family if symbol
+ named symbolstrings { Slope } # string face if symbol
+ named symbolidentifiers { Slope } # identifier face if symbol
+ named symbolcomments { Base } # comment face if symbol
+ named symbolkeywords { Bold } # keyword face if symbol
+ named symbolnumbers { Base } # number face if symbol
+ named symboloperators { Base } # operator face if symbol
+ named symbolsize { 1.0f } # font size if symbol
+ named symbolline { 1.0vx } # line-space if symbol
+ named symboltabin { 8 } # tab interval if symbol
+ named symboltabout { 3f } # tab width if symbol
+
+@Begin
+
+ export
+
+ "$>" @S @D @C @K @N @O @A @ST @ED @M
+
+ def @Eiffel
+ named style { style } # style
+ named pipe { pipe } # pipe through this first
+ named font { dft } # font family
+ named strings { dft } # string font
+ named identifiers { dft } # ident. font
+ named comments { dft } # comment font
+ named keywords { dft } # keyword font
+ named numbers { dft } # number font
+ named operators { dft } # operator font
+ named size { dft } # font size
+ named line { dft } # line-space
+ named tabin { dft } # tab interval
+ named tabout { dft } # tab width
+ body @Body # filtered, see below
+ @Begin
+
+ def @Test # returns x unless x is dft
+ left x
+ named iffixed {}
+ named ifvarying {}
+ named ifsymbol {}
+ {
+ x @Case {
+ dft @Yield {
+ style @Case {
+ fixed @Yield { iffixed }
+ varying @Yield { ifvarying }
+ symbol @Yield { ifsymbol }
+ }
+ }
+ else @Yield x
+ }
+ }
+
+ def @InitTab
+ {
+ tabin @Test
+ iffixed { fixedtabin }
+ ifvarying { varyingtabin }
+ ifsymbol { symboltabin }
+ }
+
+ def @InitTabWidth
+ {
+ tabout @Test
+ iffixed { fixedtabout }
+ ifvarying { varyingtabout }
+ ifsymbol { symboltabout }
+ }
+
+ def @Filter
+ {
+ pipe @Case {
+ "" @Yield {
+ "prg2lout -r -lEiffel" -i{@FilterIn} -o{@FilterOut} -e{@FilterErr}
+ -t{@InitTab} -T{@InitTabWidth}
+ }
+ else @Yield {
+ "cat" @FilterIn "|" pipe "|"
+ "prg2lout -r -lEiffel" -o{@FilterOut}
+ -e{@FilterErr} -t{@InitTab} -T{@InitTabWidth}
+ }
+ }
+ }
+
+ def @InitFontFamily
+ {
+ font @Test
+ iffixed { fixedfont }
+ ifvarying { varyingfont }
+ ifsymbol { symbolfont }
+ }
+
+ def @InitSize
+ {
+ size @Test
+ iffixed { fixedsize }
+ ifvarying { varyingsize }
+ ifsymbol { symbolsize }
+ }
+
+ def @InitLine
+ {
+ line @Test
+ iffixed { fixedline }
+ ifvarying { varyingline }
+ ifsymbol { symbolline }
+ }
+
+ def @S # for formatting strings
+ right x
+ {
+ # "\"" &
+ strings @Test
+ iffixed { fixedstrings }
+ ifvarying { varyingstrings }
+ ifsymbol { symbolstrings }
+ @Font x
+ # & "\""
+ }
+
+# def "`"
+# {
+# style @Case {
+# symbol @Yield { "`" }
+# else @Yield { "'" }
+# }
+# }
+
+ def @D # for formatting identifiers
+ right x
+ {
+ identifiers @Test
+ iffixed { fixedidentifiers }
+ ifvarying { varyingidentifiers }
+ ifsymbol { symbolidentifiers }
+ @Font x
+ }
+
+ def @C # for formatting comments
+ right x
+ {
+ comments @Test
+ iffixed { fixedcomments }
+ ifvarying { varyingcomments }
+ ifsymbol { symbolcomments }
+ @Font x
+ }
+
+ def @K # for formatting keywords
+ right x
+ {
+ keywords @Test
+ iffixed { fixedkeywords }
+ ifvarying { varyingkeywords }
+ ifsymbol { symbolkeywords }
+ @Font x
+ }
+
+ def @N # for formatting numbers
+ right x
+ {
+ numbers @Test
+ iffixed { fixednumbers }
+ ifvarying { varyingnumbers }
+ ifsymbol { symbolnumbers }
+ @Font x
+ }
+
+ def @O # for formatting operators
+ right x
+ {
+ operators @Test
+ iffixed { fixedoperators }
+ ifvarying { varyingoperators }
+ ifsymbol { symboloperators }
+ @Font x
+ }
+
+ def @A # get characters from the Adobe Symbol font
+ left sym
+ right x
+ {
+ style @Case {
+ symbol @Yield { { Symbol Base } @Font @Char sym }
+ else @Yield { x }
+ }
+ }
+
+ def @ST # for formatting asterisks
+ right x
+ {
+ operators @Test
+ iffixed { fixedoperators }
+ ifvarying { varyingoperators }
+ ifsymbol { symboloperators }
+ @Font "0.5w" @VShift x
+ }
+
+ def @ED # for formatting larger dots
+ right x
+ {
+ operators @Test
+ iffixed { fixedoperators }
+ ifvarying { varyingoperators }
+ ifsymbol { symboloperators }
+ @Font @BackEnd @Case {
+ PlainText @Yield x
+ else @Yield { "1.2f" @Font "+0.05f" @VShift @O x &"0.05f" }
+ }
+ }
+
+ macro "$>" { {} & }
+
+ def @M right x
+ {
+ style @Case {
+ fixed @Yield "-"
+ varying @Yield { { Symbol Base } @Font @Char minus }
+ symbol @Yield { { Symbol Base } @Font @Char minus }
+ }
+ }
+
+ { @InitFontFamily Base @InitSize } @Font
+ { @InitLine lines } @Break @Body
+
+ @End @Eiffel
+
+@End @EiffelSetup
diff --git a/include/eqf b/include/eqf
index 4437edf..e03bb3e 100644
--- a/include/eqf
+++ b/include/eqf
@@ -22,7 +22,7 @@
# #
###############################################################################
-export "`" "``" "```" bin rel punct non vctr big
+export "`" "``" "```" bin rel punct non vctr big small
space exclam universal numbersign existential percent
ampersand suchthat parenleft parenright asteriskmath
@@ -56,7 +56,8 @@ export "`" "``" "```" bin rel punct non vctr big
bracerightbt
hbar Re Im partial infty prime nabla surd top bot dbar
- triangle backslash forall exists neg circle square
+ triangle backslash forall exists neg
+ circle filledcircle square
"0" "1" "2" "3" "4" "5" "6" "7" "8" "9"
@@ -64,14 +65,14 @@ export "`" "``" "```" bin rel punct non vctr big
boplus buplus
"+" "-" "+-" "-+" setminus cdot times "*" circ div cap cup uplus
- sqcap sqcup triangleleft triangleright wr bigcirc bigtriangleup
- bigtriangledown vee wedge oplus ominus otimes oslash odot dagger
- daggerdbl amalg
+ sqcap sqcup triangleleft triangleright
+ wr bigcirc bigtriangleup bigtriangledown vee wedge oplus ominus
+ otimes oslash odot dagger daggerdbl amalg
"<" ">" "=" "<=" prec preceq "<<" subset subseteq sqsubseteq
in vdash smile frown ">=" succ succeq ">>" supset supseteq
sqsupseteq ni dashv mid parallel "==" "~" "-~" asymp "~~"
- "=~" bowtie propto models doteq perp notsub notin "!=" not
+ "=~" bowtie propto models doteq trieq perp notsub notin "!=" not
"<->" "<--" "-->" up down "<=>" "<==" "==>" dblup dbldown
":" "::" ":="
@@ -98,7 +99,7 @@ export "`" "``" "```" bin rel punct non vctr big
nearrow searrow swarrow nwarrow
sup sub tsub supp on ton frac half third over from to widefrom wideto
- dot dotdot hat tilde vec dyad overbar underbar sqrt root
+ dot dotdot hat tilde vec dyad overbar underbar sqrt root zroot
nextcol above labove cabove rabove mabove
matrix pmatrix bmatrix brmatrix fmatrix cmatrix amatrix
@@ -164,6 +165,7 @@ def @Eq
def punct right x { x ` }
def non right x { 0c @YUnit x }
def big right x { 1.3f @Font @SpaceGap @Space x }
+ def small right x { 0.6f @Font @SpaceGap @Space x }
def @Base right x { Base @Font x }
def @Sym right x { {Symbol Base} @Font x }
@@ -460,93 +462,129 @@ def @Eq
def exists { existential }
def neg { logicalnot }
- def circle { @HContract @VContract
- @BackEnd @Case {
- PostScript @Yield {
- { "xsize ysize 2 div moveto"
- "xsize 2 div ysize 2 div xsize 2 div 0 360 arc"
- "0.04 ft setlinewidth stroke"
- }
- @Graphic { 0.7f @Wide 0.3f @High ^/ 0.3f @High }
- }
- PDF @Yield {
-#
-# VT: draws a counterclockwise 360 degree arc from 0 to +360 degree positions
-# (straight right to straight right) with centre = (xsize/2, ysize/2)
-# and radius = xsize/2
-#
-# implemented as two counterclockwise 180 degree arcs:
-#
- {
- "__mul(0.04, __loutf) w"
-#
-# start at (xsize, ysize/2)
-# the control points are:
-# pt1 = (xsize, ysize/2 + (4/3 * xsize/2)) and pt2 = (0, ysize/2 + (4/3 * xsize/2))
-# end at (0, ysize/2)
-#
- "__xsize __div(__ysize, 2) m"
- "__xsize __add(__div(__ysize, 2), __div(__mul(2, __xsize), 3))" # pt1
- "0 __add(__div(__ysize, 2), __div(__mul(2, __xsize), 3))" # pt2
- "0 __div(__ysize, 2) c" # pt3
-#
-# start at (0, ysize/2)
-# the control points are:
-# pt1 = (0, ysize/2 - (4/3 * xsize/2)) and pt2 = (xsize, ysize/2 - (4/3 * xsize/2))
-# end at (xsize, ysize/2)
-#
- "0 __sub(__div(__ysize, 2), __div(__mul(2, __xsize), 3))" # pt1
- "__xsize __sub(__div(__ysize, 2), __div(__mul(2, __xsize), 3))" # pt2
- "__xsize __div(__ysize, 2) c S" # pt3
- }
- @Graphic { 0.7f @Wide 0.3f @High ^/ 0.3f @High }
- }
- }
- }
+ def circle
+ { @HContract @VContract @BackEnd @Case {
+ PostScript @Yield {
+ {
+ "xsize ysize 2 div moveto"
+ "xsize 2 div ysize 2 div xsize 2 div 0 360 arc"
+ "0.04 ft setlinewidth stroke"
+ } @Graphic { 0.7f @Wide 0.3f @High ^/ 0.3f @High }
+ }
+ PDF @Yield {
+ #
+ # VT: draws a counterclockwise 360 degree arc from 0 to +360
+ # degree positions (straight right to straight right) with
+ # centre = (xsize/2, ysize/2) and radius = xsize/2,
+ # implemented as two counterclockwise 180 degree arcs.
+ # start at (xsize, ysize/2); the control points are:
+ #
+ # pt1 = (xsize, ysize/2 + (4/3 * xsize/2))
+ # pt2 = (0, ysize/2 + (4/3 * xsize/2))
+ #
+ # end at (0, ysize/2). Then start at (0, ysize/2); control points
+ #
+ # pt1 = (0, ysize/2 - (4/3 * xsize/2))
+ # pt2 = (xsize, ysize/2 - (4/3 * xsize/2))
+ #
+ # and end at (xsize, ysize/2).
+
+ {
+ "__mul(0.04, __loutf) w"
+ "__xsize __div(__ysize, 2) m"
+ "__xsize __add(__div(__ysize, 2), __div(__mul(2, __xsize), 3))"
+ "0 __add(__div(__ysize, 2), __div(__mul(2, __xsize), 3))"
+ "0 __div(__ysize, 2) c"
+ "0 __sub(__div(__ysize, 2), __div(__mul(2, __xsize), 3))"
+ "__xsize __sub(__div(__ysize, 2), __div(__mul(2, __xsize), 3))"
+ "__xsize __div(__ysize, 2) c S"
+ } @Graphic { 0.7f @Wide 0.3f @High ^/ 0.3f @High }
+ }
+ }
+ }
- def square { @HContract @VContract
- @BackEnd @Case {
- PostScript @Yield {
- { "0 0 moveto xsize 0 lineto xsize ysize lineto"
- "0 ysize lineto closepath"
- "0.04 ft setlinewidth stroke"
- }
- @Graphic { 0.6f @Wide 0.3f @High ^/ 0.3f @High }
- }
- PDF @Yield {
- { "__mul(__loutf, 0.04) w"
- "0 0 m __xsize 0 l __xsize __ysize l"
- "0 __ysize l s"
- }
- @Graphic { 0.6f @Wide 0.3f @High ^/ 0.3f @High }
- }
- }
- }
+ def filledcircle
+ { @HContract @VContract @BackEnd @Case {
+ PostScript @Yield {
+ {
+ "xsize ysize 2 div moveto"
+ "xsize 2 div ysize 2 div xsize 2 div 0 360 arc"
+ "0.04 ft setlinewidth fill"
+ } @Graphic { 0.7f @Wide 0.3f @High ^/ 0.3f @High }
+ }
+ PDF @Yield {
+ #
+ # JK: I don't know how to fill in PDF, so this doesn't!
+ #
+ # VT: draws a counterclockwise 360 degree arc from 0 to +360
+ # degree positions (straight right to straight right) with
+ # centre = (xsize/2, ysize/2) and radius = xsize/2,
+ # implemented as two counterclockwise 180 degree arcs.
+ # start at (xsize, ysize/2); the control points are:
+ #
+ # pt1 = (xsize, ysize/2 + (4/3 * xsize/2))
+ # pt2 = (0, ysize/2 + (4/3 * xsize/2))
+ #
+ # end at (0, ysize/2). Then start at (0, ysize/2); control points
+ #
+ # pt1 = (0, ysize/2 - (4/3 * xsize/2))
+ # pt2 = (xsize, ysize/2 - (4/3 * xsize/2))
+ #
+ # and end at (xsize, ysize/2).
+
+ {
+ "__mul(0.04, __loutf) w"
+ "__xsize __div(__ysize, 2) m"
+ "__xsize __add(__div(__ysize, 2), __div(__mul(2, __xsize), 3))"
+ "0 __add(__div(__ysize, 2), __div(__mul(2, __xsize), 3))"
+ "0 __div(__ysize, 2) c"
+ "0 __sub(__div(__ysize, 2), __div(__mul(2, __xsize), 3))"
+ "__xsize __sub(__div(__ysize, 2), __div(__mul(2, __xsize), 3))"
+ "__xsize __div(__ysize, 2) c S"
+ } @Graphic { 0.7f @Wide 0.3f @High ^/ 0.3f @High }
+ }
+ }
+ }
- def triangle { @HContract @VContract
- @BackEnd @Case {
- PostScript @Yield {
- { "0 0 moveto xsize 0 lineto"
- "xsize 2 div ysize lineto closepath"
- "0.04 ft setlinewidth stroke"
- }
- @Graphic
- { 0.3f @Wide 0.3f @High ^| ^/
- 0.3f @Wide 0.3f @High
- }
- }
- PDF @Yield {
- { "__mul(__loutf, 0.04) w"
- "0 0 m __xsize 0 l"
- "__div(__xsize, 2) __ysize l s"
- }
- @Graphic
- { 0.3f @Wide 0.3f @High ^| ^/
- 0.3f @Wide 0.3f @High
- }
- }
- }
- }
+ def square
+ { @HContract @VContract @BackEnd @Case {
+ PostScript @Yield {
+ {
+ "0 0 moveto xsize 0 lineto xsize ysize lineto"
+ "0 ysize lineto closepath"
+ "0.04 ft setlinewidth stroke"
+ } @Graphic { 0.6f @Wide 0.3f @High ^/ 0.3f @High }
+ }
+ PDF @Yield {
+ {
+ "__mul(__loutf, 0.04) w"
+ "0 0 m __xsize 0 l __xsize __ysize l"
+ "0 __ysize l s"
+ } @Graphic { 0.6f @Wide 0.3f @High ^/ 0.3f @High }
+ }
+ }
+ }
+
+ def triangle
+ { @HContract @VContract @BackEnd @Case {
+ PostScript @Yield {
+ {
+ "0 0 moveto xsize 0 lineto"
+ "xsize 2 div ysize lineto closepath"
+ "0.04 ft setlinewidth stroke"
+ } @Graphic { 0.3f @Wide 0.3f @High ^| ^/ 0.3f @Wide 0.3f @High }
+ }
+ PDF @Yield {
+ {
+ "__mul(__loutf, 0.04) w"
+ "0 0 m __xsize 0 l"
+ "__div(__xsize, 2) __ysize l s"
+ } @Graphic { 0.3f @Wide 0.3f @High ^| ^/ 0.3f @Wide 0.3f @High }
+ }
+ }
+ }
+
+ def triangledown { 180d @Rotate triangle }
###################################################################
# #
@@ -774,6 +812,7 @@ def @Eq
def bowtie { rel{non triangleright non triangleleft}}
def propto { rel proportional }
def models { rel{@Base vctr "|" &0.05fo vctr equal}}
+ def trieq { rel @OneRow @HContract {&0.5rt small triangle^/0.15f equal}}
def doteq { rel @OneRow @HContract {&0.5rt dotmath^/0.15f equal}}
def perp { rel perpendicular }
@@ -1446,6 +1485,16 @@ def @Eq
"" sup x &0io sqrt y
}
+ def zroot
+ precedence 56
+ left x
+ right y
+ {
+ def zsup right x { "+0.3f" @VShift 0.5f @Font @Space x }
+
+ "-0.4f" @HShift { 1w @HShift { zsup x } } &0co sqrt y
+ }
+
def above
precedence 52
left x
diff --git a/include/langdefs b/include/langdefs
index ec3ac3a..d23f4fd 100644
--- a/include/langdefs
+++ b/include/langdefs
@@ -10,6 +10,7 @@ langdef Hungarian Magyar { - . : ! ? .) ?) !) .' !' ?' }
langdef Italian Italiano { italian . : ! ? .) ?) !) .' !' ?' }
langdef Norwegian Norsk { norweg . : ! ? .) ?) !) .' !' ?' }
langdef Polish Polski { polish . : ! ? .) ?) !) .' !' ?' }
+langdef Portuguese "Português" { portugal . : ! ? .) ?) !) .' !' ?' }
langdef Russian "\362\325\323\323\313\311\312" { russian . : ! ? .) ?) !) .' !' ?' }
langdef Slovenian Slovenia Slovenija { slovenia . : ! ? .) ?) !) .' !' ?' }
langdef Spanish "Espa\361ol" { spanish . : ! ? .) ?) !) .' !' ?' }
diff --git a/include/picture b/include/picture
index 55d2f3e..42c5c3f 100644
--- a/include/picture
+++ b/include/picture
@@ -102,9 +102,12 @@
# @TableNumbers { Arabic } # method of numbering tables
# @FigureCaptionPos { Below } # Above or Below
# @TableCaptionPos { Below } # Above or Below
- # @CaptionFont { } # figure, table caption font
- # @CaptionBreak { } # figure, table caption break
- # @CaptionFormat { @B { number @DotSep @OneCol } } # figure, table caption format
+ # @FigureCaptionFont { -2p } # figure caption font
+ # @FigureCaptionBreak { adjust hyphen 1.2fx } # figure caption break
+ # @FigureCaptionFormat{ {@B { word @NumSep number. &2s }} @Insert caption }
+ # @TableCaptionFont { -2p } # table caption font
+ # @TableCaptionBreak { adjust hyphen 1.2fx } # table caption break
+ # @TableCaptionFormat { {@B { word @NumSep number. &2s }} @Insert caption }
# @MakeFigureContents { No } # list of figures at start
# @MakeTableContents { No } # list of tables at start
# @MakeContents { No } # make contents? Yes or No
diff --git a/include/progf b/include/progf
new file mode 100644
index 0000000..5ca3f81
--- /dev/null
+++ b/include/progf
@@ -0,0 +1,259 @@
+
+###############################################################################
+# #
+# Lout @ProgSetup package for formatting computer programs (Version 1.4) #
+# #
+# Version 1.0 by Jeffrey H. Kingston, February 2000. #
+# Adapted from the original @CPrint package. #
+# #
+# This package uses a filtered body parameter to convert program source #
+# code into Lout source. The filter program is prog2lout, which is #
+# distributed with Lout and should be compiled and installed wherever #
+# Lout itself is. #
+# #
+# This package is intended for use by prog2lout's stand-alone mode. #
+# If you are adding a new language, a better place to start would be #
+# files eiffelf and eiffel rather than progf. #
+# #
+###############################################################################
+
+export @Prog
+def @ProgSetup
+ named language { "missing_language" } # programming language
+ named style
+ named @OrIfPlain left x right y
+ { @BackEnd @Case { PlainText @Yield y else @Yield x } }
+ { varying @OrIfPlain fixed } # print style
+ named pipe { } # pipe through this first
+
+ named fixedfont { Courier } # font family if fixed
+ named fixedstrings { Base } # string face if fixed
+ named fixedidentifiers { Base } # identifier face if fixed
+ named fixedcomments { Base } # comment face if fixed
+ named fixedkeywords { Base } # keyword face if fixed
+ named fixednumbers { Base } # number face if fixed
+ named fixedoperators { Base } # operator face if fixed
+ named fixedsize { -1.0p } # font size if fixed
+ named fixedline { 1.0vx } # line-space if fixed
+ named fixedtabin { 8 } # tab interval if fixed
+ named fixedtabout { 8s } # tab width if fixed
+
+ named varyingfont { } # font family if varying
+ named varyingstrings { Slope } # string face if varying
+ named varyingidentifiers { Slope } # identifier face if varying
+ named varyingcomments { Base } # comment face if varying
+ named varyingkeywords { Bold } # keyword face if varying
+ named varyingnumbers { Base } # number face if varying
+ named varyingoperators { Base } # operator face if varying
+ named varyingsize { 1.0f } # font size if varying
+ named varyingline { 1.0vx } # line-space if varying
+ named varyingtabin { 8 } # tab interval if varying
+ named varyingtabout { 3f } # tab width if varying
+
+ named symbolfont { } # font family if symbol
+ named symbolstrings { Slope } # string face if symbol
+ named symbolidentifiers { Slope } # identifier face if symbol
+ named symbolcomments { Base } # comment face if symbol
+ named symbolkeywords { Bold } # keyword face if symbol
+ named symbolnumbers { Base } # number face if symbol
+ named symboloperators { Base } # operator face if symbol
+ named symbolsize { 1.0f } # font size if symbol
+ named symbolline { 1.0vx } # line-space if symbol
+ named symboltabin { 8 } # tab interval if symbol
+ named symboltabout { 3f } # tab width if symbol
+
+@Begin
+
+ export
+
+ "$>" @S @D @C @K @N @O @A @M
+
+ def @Prog
+ named language { language } # language
+ named style { style } # style
+ named pipe { pipe } # pipe through this first
+ named font { dft } # font family
+ named strings { dft } # string font
+ named identifiers { dft } # ident. font
+ named comments { dft } # comment font
+ named keywords { dft } # keyword font
+ named numbers { dft } # number font
+ named operators { dft } # operator font
+ named size { dft } # font size
+ named line { dft } # line-space
+ named tabin { dft } # tab interval
+ named tabout { dft } # tab width
+ body @Body # filtered, see below
+ @Begin
+
+ def @Test # returns x unless x is dft
+ left x
+ named iffixed {}
+ named ifvarying {}
+ named ifsymbol {}
+ {
+ x @Case {
+ dft @Yield {
+ style @Case {
+ fixed @Yield { iffixed }
+ varying @Yield { ifvarying }
+ symbol @Yield { ifsymbol }
+ }
+ }
+ else @Yield x
+ }
+ }
+
+ def @InitTab
+ {
+ tabin @Test
+ iffixed { fixedtabin }
+ ifvarying { varyingtabin }
+ ifsymbol { symboltabin }
+ }
+
+ def @InitTabWidth
+ {
+ tabout @Test
+ iffixed { fixedtabout }
+ ifvarying { varyingtabout }
+ ifsymbol { symboltabout }
+ }
+
+ def @Filter
+ {
+ pipe @Case {
+ "" @Yield {
+ "prog2lout -r -l" language -i{@FilterIn} -o{@FilterOut} -e{@FilterErr}
+ -t{@InitTab} -T{@InitTabWidth}
+ }
+ else @Yield {
+ "cat" @FilterIn "|" pipe "|"
+ "prog2lout -r -l" language -o{@FilterOut}
+ -e{@FilterErr} -t{@InitTab} -T{@InitTabWidth}
+ }
+ }
+ }
+
+ def @InitFontFamily
+ {
+ font @Test
+ iffixed { fixedfont }
+ ifvarying { varyingfont }
+ ifsymbol { symbolfont }
+ }
+
+ def @InitSize
+ {
+ size @Test
+ iffixed { fixedsize }
+ ifvarying { varyingsize }
+ ifsymbol { symbolsize }
+ }
+
+ def @InitLine
+ {
+ line @Test
+ iffixed { fixedline }
+ ifvarying { varyingline }
+ ifsymbol { symbolline }
+ }
+
+ def @S # for formatting strings
+ right x
+ {
+ # "\"" &
+ strings @Test
+ iffixed { fixedstrings }
+ ifvarying { varyingstrings }
+ ifsymbol { symbolstrings }
+ @Font x
+ # & "\""
+ }
+
+# def "`"
+# {
+# style @Case {
+# symbol @Yield { "`" }
+# else @Yield { "'" }
+# }
+# }
+
+ def @D # for formatting identifiers
+ right x
+ {
+ identifiers @Test
+ iffixed { fixedidentifiers }
+ ifvarying { varyingidentifiers }
+ ifsymbol { symbolidentifiers }
+ @Font x
+ }
+
+ def @C # for formatting comments
+ right x
+ {
+ comments @Test
+ iffixed { fixedcomments }
+ ifvarying { varyingcomments }
+ ifsymbol { symbolcomments }
+ @Font x
+ }
+
+ def @K # for formatting keywords
+ right x
+ {
+ keywords @Test
+ iffixed { fixedkeywords }
+ ifvarying { varyingkeywords }
+ ifsymbol { symbolkeywords }
+ @Font x
+ }
+
+ def @N # for formatting numbers
+ right x
+ {
+ numbers @Test
+ iffixed { fixednumbers }
+ ifvarying { varyingnumbers }
+ ifsymbol { symbolnumbers }
+ @Font x
+ }
+
+ def @O # for formatting operators
+ named symb {}
+ right x
+ {
+ operators @Test
+ iffixed { fixedoperators }
+ ifvarying { varyingoperators }
+ ifsymbol { symboloperators }
+ @Font x
+ }
+
+ def @A # get characters from the Adobe Symbol font
+ left sym
+ right x
+ {
+ style @Case {
+ symbol @Yield { { Symbol Base } @Font @Char sym }
+ else @Yield { x }
+ }
+ }
+
+ macro "$>" { {} & }
+
+ def @M right x
+ {
+ style @Case {
+ fixed @Yield "-"
+ varying @Yield { { Symbol Base } @Font @Char minus }
+ symbol @Yield { { Symbol Base } @Font @Char minus }
+ }
+ }
+
+ { @InitFontFamily Base @InitSize } @Font
+ { @InitLine lines } @Break @Body
+
+ @End @Prog
+
+@End @ProgSetup
diff --git a/include/report b/include/report
index 01fdcc6..4905980 100644
--- a/include/report
+++ b/include/report
@@ -107,9 +107,12 @@
# @TableNumbers { Arabic } # method of numbering tables
# @FigureCaptionPos { Below } # Above or Below
# @TableCaptionPos { Below } # Above or Below
- # @CaptionFont { } # figure, table caption font
- # @CaptionBreak { } # figure, table caption break
- # @CaptionFormat { @B { number @DotSep @OneCol } } # figure, table caption format
+ # @FigureCaptionFont { -2p } # figure caption font
+ # @FigureCaptionBreak { adjust hyphen 1.2fx } # figure caption break
+ # @FigureCaptionFormat{ {@B { word @NumSep number. &2s }} @Insert caption }
+ # @TableCaptionFont { -2p } # table caption font
+ # @TableCaptionBreak { adjust hyphen 1.2fx } # table caption break
+ # @TableCaptionFormat { {@B { word @NumSep number. &2s }} @Insert caption }
# @MakeFigureContents { No } # list of figures at start
# @MakeTableContents { No } # list of tables at start
# @MakeContents { No } # make contents? Yes or No
@@ -248,9 +251,10 @@
@Use { @ReportSetup
# @CoverSheet { Yes } # make cover sheet
- # @DisplayAbstract { No } # abstract full width display
# @ContentsSeparate { No } # contents on separate pages
# @DateLine { No } # Yes, No, or a date
+ # @AbstractDisplay { No } # abstract full width display
+ # @AbstractTitle { dft } # abstract title (dft is @AbstractWord)
# @ReferencesBeforeAppendices { No } # references before appendices
# @AbstractWord { abstract } # word for "Abstract"
# @ContentsWord { contents } # word for "Contents"
diff --git a/include/reportf b/include/reportf
index f1a62a9..06d45af 100644
--- a/include/reportf
+++ b/include/reportf
@@ -16,7 +16,7 @@ def @ReportSetup
named @CoverSheet { Yes }
named @ContentsSeparate { No }
named @DateLine { No }
- named @AbstractDisplay { Yes }
+ named @AbstractDisplay { No }
named @AbstractTitle { dft }
named @ReferencesBeforeAppendices { No }
@@ -491,8 +491,8 @@ def @ReportSetup
{
Start @Runner
- //@SectionGap @ContentsPart
- //@SectionGap @SectionList @FirstSectionNumber
+ //@ContentsGap @ContentsPart
+ //@ContentsGap @SectionList @FirstSectionNumber
//@SectionGap @ReferencesBeforeAppendices @Do {
@MakeReferences @Do @ReferencesPart
}
diff --git a/include/slides b/include/slides
index 7833f60..f740c84 100644
--- a/include/slides
+++ b/include/slides
@@ -105,9 +105,12 @@
# @TableNumbers { Arabic } # method of numbering tables
# @FigureCaptionPos { Below } # Above or Below
# @TableCaptionPos { Below } # Above or Below
- # @CaptionFont { } # figure, table caption font
- # @CaptionBreak { } # figure, table caption break
- # @CaptionFormat { @B { number @DotSep @OneCol } } # figure, table caption format
+ # @FigureCaptionFont { -2p } # figure caption font
+ # @FigureCaptionBreak { adjust hyphen 1.2fx } # figure caption break
+ # @FigureCaptionFormat{ {@B { word @NumSep number. &2s }} @Insert caption }
+ # @TableCaptionFont { -2p } # table caption font
+ # @TableCaptionBreak { adjust hyphen 1.2fx } # table caption break
+ # @TableCaptionFormat { {@B { word @NumSep number. &2s }} @Insert caption }
# @MakeFigureContents { No } # list of figures at start
# @MakeTableContents { No } # list of tables at start
# @MakeContents { No } # make contents? Yes or No
diff --git a/include/tblf b/include/tblf
index c8f0019..9a2da6e 100644
--- a/include/tblf
+++ b/include/tblf
@@ -1383,19 +1383,23 @@ def @TblSetup
ctr @Yield @OneCol { |"0.5rt" x }
right @Yield @OneCol { |"1.0rt" x }
mctr @Yield @OneCol { |"0.5bx" x }
- "" @Yield @OneCol x
+ align @Yield @OneCol x
else @Yield @OneCol { |i x }
}
}
def @VIndent right x
{
+ # note: the default value "" gives top alignment,
+ # but that is not a problem because we are by
+ # default putting in a vertical strut
+
iv @Case {
top @Yield @OneRow { / x }
ctr @Yield @OneRow { /"0.5rt" x }
foot @Yield @OneRow { /"1.0rt" x }
mctr @Yield @OneRow { /"0.5bx" x }
- "" @Yield @OneRow x
+ align @Yield @OneRow x
else @Yield @OneRow { /iv x }
}
}
diff --git a/makefile b/makefile
index 4452fbc..ded9538 100644
--- a/makefile
+++ b/makefile
@@ -1,14 +1,14 @@
###############################################################################
# #
-# Make file for installing Basser Lout Version 3.17 #
+# Make file for installing Basser Lout Version 3.18 #
# #
# Jeffrey H. Kingston #
-# 17 September 1999 #
+# 14 February 2000 #
# #
+# make prg2lout Compile a small auxiliary program called prg2lout #
# make lout Compile the Lout source #
-# make c2lout Compile a small auxiliary program called c2lout #
-# make install Install the Lout and c2lout binaries and libraries #
-# make installman Install the Lout and c2lout manual entries #
+# make install Install the Lout and prg2lout binaries and libraries #
+# make installman Install the Lout and prg2lout manual entries #
# make installdoc Install the Lout documentation #
# make installfr Install French error messages (optional) #
# make installde Install German error messages (optional) #
@@ -60,7 +60,7 @@
# can always specify safe or unsafe execution by means of the -S and #
# -U options to lout when processing a document; SAFEDFT means that #
# -S rather than -U is the default behaviour. Unsafe execution is #
-# required when formatting C programs and verbatim text, so if in #
+# required when formatting programs and verbatim text, so if in #
# doubt, do not change the value of SAFEDFT. #
# #
# (5) Set the following four macros defined below to appropriate values: #
@@ -75,7 +75,7 @@
# (written in Lout) go. This directory will be created (but #
# its parent must exist already). #
# #
-# MANDIR Directory where the lout and c2lout online manual entries #
+# MANDIR Directory where the lout and prg2lout online manual entries #
# (in nroff -man) go. This directory is assumed to exist. #
# #
# (6) Set the following two macros defined below to appropriate values. #
@@ -145,8 +145,8 @@
# based on the ISO codes of the characters. This defaul setting may #
# be changed during individual runs of Lout by the -l and -L flags. #
# #
-# (9) Execute "make c2lout". This will compile the c2lout program, leaving #
-# its binary in this directory. No changes to other directories. #
+# (9) Execute "make prg2lout". This will compile the prg2lout program, #
+# leaving its binary in this directory. Other directories unchanged. #
# #
# (10) If you want to be able to produce compressed PDF files, as opposed to #
# uncompressed ones, you need to: #
@@ -183,7 +183,7 @@
# #
# (13) Execute "make install". This will do the following things: #
# #
-# (a) It will copy the lout and c2lout binaries into $(BINDIR); #
+# (a) It will copy the lout and prg2lout binaries into $(BINDIR); #
# #
# (b) It will create $(LIBDIR) and copy all the library files into it; #
# #
@@ -208,8 +208,8 @@
# It is good to build the various files during installation because #
# later runs will not have write permission in the library directories. #
# #
-# (14) Execute "make installman". This installs the manual entries for #
-# lout and c2lout into directory $(MANDIR), which is assumed to exist. #
+# (14) Execute "make installman". This installs the manual entries for lout #
+# and prg2lout into directory $(MANDIR), which is assumed to exist. #
# These entries are troff files; plain text versions are also available #
# in directory ./man if you need them (install them yourself). #
# #
@@ -252,8 +252,6 @@ DBFIX = 0
USESTAT = 1
SAFEDFT = 0
-COLLATE = 1
-
BINDIR = /usr/staff/jeff/bin
LIBDIR = /usr/staff/jeff/lout.lib
DOCDIR = /usr/staff/jeff/lout.doc
@@ -273,6 +271,8 @@ USELOC = 1
LOC_FR = fr
LOC_DE = de
+COLLATE = 1
+
PDF_COMPRESSION = 0
ZLIB =
ZLIBPATH =
@@ -281,6 +281,7 @@ CC = gcc
RCOPY = cp -r
+# COPTS = -ansi -pedantic -Wall -O3
COPTS = -ansi -pedantic -Wall
CFLAGS = -DOS_UNIX=$(OSUNIX) \
@@ -320,17 +321,17 @@ $(OBJS): externs.h
externs.h:
-c2lout: c2lout.c
- $(CC) $(COPTS) -o c2lout c2lout.c
- chmod a+x c2lout
+prg2lout: prg2lout.c
+ $(CC) $(COPTS) -o prg2lout prg2lout.c
+ chmod a+x prg2lout
-install: lout c2lout
+install: lout prg2lout
@echo ""
- @echo "(a) Installing lout and c2lout binaries into BINDIR $(BINDIR)"
+ @echo "(a) Installing lout and prg2lout binaries into BINDIR $(BINDIR)"
cp lout $(BINDIR)/lout
chmod 755 $(BINDIR)/lout
- cp c2lout $(BINDIR)/c2lout
- chmod 755 $(BINDIR)/c2lout
+ cp prg2lout $(BINDIR)/prg2lout
+ chmod 755 $(BINDIR)/prg2lout
@echo ""
@echo "(b) Installing library files into LIBDIR $(LIBDIR)"
mkdir $(LIBDIR)
@@ -378,8 +379,8 @@ installman:
-e "s@<DOCDIR>@$(DOCDIR)@" -e "s@<MANDIR>@$(MANDIR)@" \
man/lout.1 > $(MANDIR)/lout.1
chmod 644 $(MANDIR)/lout.1
- cp man/c2lout.1 $(MANDIR)/c2lout.1
- chmod 644 $(MANDIR)/c2lout.1
+ cp man/prg2lout.1 $(MANDIR)/prg2lout.1
+ chmod 644 $(MANDIR)/prg2lout.1
installdoc:
@echo ""
@@ -414,12 +415,12 @@ installde:
chmod 644 $(LIBDIR)/$(LIBLOCA)/$(LOC_DE)/LC_MESSAGES/*
uninstall:
- -rm -f $(BINDIR)/lout $(BINDIR)/c2lout
+ -rm -f $(BINDIR)/lout $(BINDIR)/prg2lout
-rm -fr $(LIBDIR)
-rm -fr $(DOCDIR)
- -rm -f $(MANDIR)/lout.1 $(MANDIR)/c2lout.1
+ -rm -f $(MANDIR)/lout.1 $(MANDIR)/prg2lout.1
clean:
- -rm -f lout c2lout *.o
+ -rm -f lout prg2lout *.o
restart: clean uninstall
diff --git a/man/prg2lout.1 b/man/prg2lout.1
new file mode 100644
index 0000000..7014e46
--- /dev/null
+++ b/man/prg2lout.1
@@ -0,0 +1,135 @@
+.TH PRG2LOUT 1
+.SH NAME
+prg2lout - convert computer program text into Lout
+.SH SYNOPSIS
+\fBprg2lout\fR -l \fIlanguage\fR [ \fIoptions\fR ] \fIfiles\fR...
+.SH DESCRIPTION
+Reformat computer program text for input to the Lout document formatting
+system, taking care of comments, character strings, tab characters, etc.
+.LP
+.B prg2lout
+reads the named program source files and produces output
+suitable for input to
+.BR "lout -s" .
+Thus,
+.LP
+.RS
+.B "prg2lout -l C foo.c | lout -s | lpr"
+.RE
+.LP
+will print the C program
+.B foo.c
+on a PostScript printer. Each file will start on a new page, preceded
+by its name in bold.
+.SH OPTIONS
+.TP
+.B \-llanguage
+(Compulsory.) Files are written in this programmming language. Run
+\fIprg2lout -u\fR to see the list of languages available.
+.TP
+.B \-pfixed
+Use a fixed width font (the default for C).
+.TP
+.B \-pvarying
+Use a varying-width italic font with non-italic bold keywords (the
+default for Eiffel).
+.TP
+.B \-psymbol
+Use a varying-width italic font with mathematical symbols and
+non-italic bold keywords.
+.TP
+.B \-n
+Do not print the file name before each source file.
+.TP
+.BI \-f " font"
+Select a font family.
+The default is
+.B \-fCourier
+for
+.BR \-pfixed ,
+and
+.B \-fTimes
+for
+.B \-pvarying
+and
+.BR \-psymbol .
+.TP
+.BI \-s " size"
+Select a Lout font size. The default is
+.B -s9p
+(meaning 9 points) for
+.BR \-pfixed ,
+and
+.B \-s10p
+for
+.B \-pvarying
+and
+.BR \-psymbol .
+These work well with 80-character-wide programs.
+.TP
+.BI \-v " vsize"
+Select a Lout vertical inter-line gap. The default is
+.B -v1.1fx
+meaning 1.1 times the font size measured from baseline to baseline.
+.TP
+.BI \-t " num"
+Set the tab interval to
+.I num
+characters (default is
+.BR \-t8 ).
+.TP
+.BI \-T " width"
+Without this option,
+.B prg2lout
+simulates tabs with spaces. With this option,
+.B prg2lout
+simulates tabs with Lout tabulation operators;
+.I width
+is the width of one tab interval in the final print, measured in Lout
+units. This guarantees alignment of characters following tabs even
+with varying-width fonts, provided
+.I width
+is sufficiently large. For example,
+.B -T0.5i
+produces half-inch tab intervals.
+.TP
+.B \-u
+Print usage information on stderr, including available languages, and exit.
+.TP
+.B \-V
+Print version information on stderr and exit.
+.SS Raw Mode
+There is a \(lq\&raw mode\(rq usage of
+.B prg2lout
+invoked by a
+.B -r
+flag (must be the first argument). This converts one program file into
+Lout-readable source without any heading or trailing information.
+Synopsis:
+.LP
+.RS
+.B prg2lout
+.B \-r
+.BI \-i \ infile
+.BI \-o \ out
+.BI \-e \ err
+.BI \-t \ num
+.BI \-T \ width
+.RE
+.LP
+Users should never need this mode; it is invoked automatically
+from within Lout by symbols supplied with the standard configuration
+(see reference).
+.SH SEE ALSO
+.BR lout (1),
+.BR lpr (1),
+.BR ghostview (1).
+.SH REFERENCES
+.LP
+Jeffrey H. Kingston,
+.I
+\(lq\&A User's Guide to the Lout Document Formatting System\(rq\c
+\&, Chapter 11.
+.SH AUTHOR
+.LP
+Jeffrey H. Kingston
diff --git a/man/prg2lout.txt b/man/prg2lout.txt
new file mode 100644
index 0000000..991315d
--- /dev/null
+++ b/man/prg2lout.txt
@@ -0,0 +1,96 @@
+
+
+NAME
+ prg2lout - convert computer program text into Lout
+
+SYNOPSIS
+ prg2lout -l language [ options ] files...
+
+DESCRIPTION
+ Reformat computer program text for input to the Lout docu-
+ ment formatting system, taking care of comments, character
+ strings, tab characters, etc.
+
+ prg2lout reads the named program source files and produces
+ output suitable for input to lout -s. Thus,
+
+ prg2lout -l C foo.c | lout -s | lpr
+
+ will print the C program foo.c on a PostScript printer.
+ Each file will start on a new page, preceded by its name in
+ bold.
+
+OPTIONS
+ -llanguage
+ (Compulsory.) Files are written in this programmming
+ language. Run prg2lout -u to see the list of languages
+ available.
+
+ -pfixed
+ Use a fixed width font (the default for C).
+
+ -pvarying
+ Use a varying-width italic font with non-italic bold
+ keywords (the default for Eiffel).
+
+ -psymbol
+ Use a varying-width italic font with mathematical sym-
+ bols and non-italic bold keywords.
+
+ -n Do not print the file name before each source file.
+
+ -f font
+ Select a font family. The default is -fCourier for
+ -pfixed, and -fTimes for -pvarying and -psymbol.
+
+ -s size
+ Select a Lout font size. The default is -s9p (meaning
+ 9 points) for -pfixed, and -s10p for -pvarying and
+ -psymbol. These work well with 80-character-wide pro-
+ grams.
+
+ -v vsize
+ Select a Lout vertical inter-line gap. The default is
+ -v1.1fx meaning 1.1 times the font size measured from
+ baseline to baseline.
+
+ -t num
+ Set the tab interval to num characters (default is
+ -t8).
+
+ -T width
+ Without this option, prg2lout simulates tabs with
+ spaces. With this option, prg2lout simulates tabs with
+ Lout tabulation operators; width is the width of one
+ tab interval in the final print, measured in Lout
+ units. This guarantees alignment of characters follow-
+ ing tabs even with varying-width fonts, provided width
+ is sufficiently large. For example, -T0.5i produces
+ half-inch tab intervals.
+
+ -u Print usage information on stderr, including available
+ languages, and exit.
+
+ -V Print version information on stderr and exit.
+
+ Raw Mode
+ There is a raw mode usage of prg2lout invoked by a -r flag
+ (must be the first argument). This converts one program
+ file into Lout-readable source without any heading or trail-
+ ing information. Synopsis:
+
+ prg2lout -r -i infile -o out -e err -t num -T width
+
+ Users should never need this mode; it is invoked automati-
+ cally from within Lout by symbols supplied with the standard
+ configuration (see reference).
+
+SEE ALSO
+ lout(1), lpr(1), ghostview(1).
+
+REFERENCES
+ Jeffrey H. Kingston, A User's Guide to the Lout Document
+ Formatting System, Chapter 11.
+
+AUTHOR
+ Jeffrey H. Kingston
diff --git a/maps/LtLatin2.LCM b/maps/LtLatin2.LCM
index 458769f..3df229f 100644
--- a/maps/LtLatin2.LCM
+++ b/maps/LtLatin2.LCM
@@ -218,7 +218,7 @@
172 254 Zacute LC zacute; UA Z; AC acute;
173 255 hyphen
174 256 Zcaron LC zcaron; UA Z; AC caron;
-175 257 Zdotabove LC zdotabove; UA Z; AC dotaccent;
+175 257 Zdotaccent LC zdotaccent; UA Z; AC dotaccent;
176 260 degree
177 261 aogonek UC Aogonek; UA a; AC ogonek;
178 262 ogonek
@@ -234,7 +234,7 @@
188 274 zacute UC Zacute; UA z; AC acute;
189 275 hungarumlaut
190 276 zcaron UC Zcaron; UA z; AC caron;
-191 277 zdotabove UC Zdotabove; UA z; AC dotaccent;
+191 277 zdotaccent UC Zdotaccent; UA z; AC dotaccent;
192 300 Racute LC racute; UA R; AC acute;
193 301 Aacute LC aacute; UA A; AC acute;
194 302 Acircumflex LC acircumflex; UA A; AC circumflex;
diff --git a/prg2lout.c b/prg2lout.c
new file mode 100644
index 0000000..4df2187
--- /dev/null
+++ b/prg2lout.c
@@ -0,0 +1,1832 @@
+/*****************************************************************************/
+/* */
+/* PROG2LOUT: A PROGRAM TO CONVERT PROGRAM SOURCES INTO LOUT (VERSION 1.0) */
+/* COPYRIGHT (C) 2000 Jeffrey H. Kingston */
+/* */
+/* Jeffrey H. Kingston (jeff@cs.su.oz.au) */
+/* Basser Department of Computer Science */
+/* The University of Sydney 2006 */
+/* AUSTRALIA */
+/* */
+/* This program is free software; you can redistribute it and/or modify */
+/* it under the terms of the GNU General Public License as published by */
+/* the Free Software Foundation; either version 2, or (at your option) */
+/* any later version. */
+/* */
+/* This program is distributed in the hope that it will be useful, */
+/* but WITHOUT ANY WARRANTY; without even the implied warranty of */
+/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */
+/* GNU General Public License for more details. */
+/* */
+/* You should have received a copy of the GNU General Public License */
+/* along with this program; if not, write to the Free Software */
+/* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
+/* */
+/*****************************************************************************/
+#include <stdio.h>
+#include <stdlib.h>
+
+/*****************************************************************************/
+/* */
+/* How to add another language to prg2lout's list */
+/* */
+/* Step 1. Have a browse through the token declarations below, and work */
+/* out which of them you need for your language. If you need a token that */
+/* isn't there already, you'll have to define it; there are many examples */
+/* there to help you. */
+/* */
+/* Step 2. Browse through the language declarations, and declare your */
+/* language following those examples: first you give a set of one or more */
+/* alternative names for your language, then the default printing style for */
+/* it (either "fixed", "varying", or "symbol"), then you list the tokens */
+/* of the language, then you list the keywords. */
+/* */
+/* Step 3. Add your language variable to the list in the initializer of */
+/* variable languages, as you can see the others have been done. */
+/* */
+/* Step 4. If any lists of initializers now contain more than */
+/* MAX_ARRAY_LENGTH-1 elements, increase MAX_ARRAY_LENGTH until they don't. */
+/* */
+/* Step 5. Recompile and reinstall prg2lout, test "prg2lout -u" then */
+/* "prg2lout -l <mylanguage> <myfile> | lout -s > out.ps". */
+/* */
+/* Step 6. Send your tested and verified changes to jeff@cs.usyd.edu.au */
+/* for incorporation in the next Lout release. If you do this, please */
+/* try hard to ensure that your changes conform to the formal definition */
+/* of your language. */
+/* */
+/*****************************************************************************/
+
+
+/*****************************************************************************/
+/* */
+/* Character sets */
+/* */
+/* Here are prg2lout's definitions of various commonly needed sets of */
+/* characters. May need enhancement for Latin1 etc. */
+/* */
+/*****************************************************************************/
+
+char AllPrintable[] =
+ " !\"#$%&'()*+,-./0123456789:;<=>?@[\\]^_`\\{|}~\
+ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" ;
+
+char AllPrintablePlusNL[] =
+ " !\"#$%&'()*+,-./0123456789:;<=>?@[\\]^_`\\{|}~\
+ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\n" ;
+
+char AllPrintableTabNL[] =
+ " !\"#$%&'()*+,-./0123456789:;<=>?@[\\]^_`\\{|}~\
+ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\n\t" ;
+
+char NotDoubleQuote[] =
+ " !#$%&'()*+,-./0123456789:;<=>?@[\\]^_`\\{|}~\
+ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" ;
+
+char NotQuote[] =
+ " !#$%&\"()*+,-./0123456789:;<=>?@[\\]^_`\\{|}~\
+ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" ;
+
+char Letters[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" ;
+
+char Letter_Digit[] =
+ "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789" ;
+
+#define SepLetters \
+"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", \
+"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"
+
+#define SepDigits "0", "1", "2", "3", "4", "5", "6", "7", "8", "9"
+
+
+/*****************************************************************************/
+/* */
+/* TOKEN - put your token declarations in this section */
+/* */
+/*****************************************************************************/
+#define MAX_CHAR 256
+#define MAX_STRING_LENGTH 101
+#define MAX_ARRAY_LENGTH 101
+
+
+typedef struct token_rec {
+ char *name; /* the name of this token, e.g. "string" */
+ char *command; /* the Lout command for it, e.g. "@D" */
+ char *alternate_command; /* the alternate command for it, e.g. "@K" */
+ char *starts[MAX_ARRAY_LENGTH]; /* strings that start this token */
+ char *legal; /* legal characters in this token */
+ char *escape; /* the escape character e.g. "\\", or "" */
+ char *escape_legal; /* legal characters after escape character */
+ char *inner_escape; /* inner escape, e.g. "`", or else "" */
+ char *end_inner_escape; /* end inner escape, e.g. "'" */
+ char *end_delimiter; /* the end delimiter, else "" */
+
+ /* The following options are initialized by the program, so don't you */
+ char chtype[MAX_CHAR]; /* character types within token */
+ char escape_chtype[MAX_CHAR]; /* character types after escape */
+} TOKEN;
+
+
+TOKEN CStringToken = {
+ "string", /* used by error messages involving this token */
+ "@S", /* Lout command for formatting strings */
+ "", /* No alternate command */
+ { "\"" }, /* strings begin with a " character */
+ NotDoubleQuote, /* inside, any printable except " is OK */
+ "\\", /* within strings, \\ is the escape character */
+ AllPrintablePlusNL, /* after escape char, any printable char or nl OK */
+ "", /* strings do not permit "inner escapes" */
+ "", /* and so there is no end innner escape either */
+ "\"" /* strings end with a " character */
+};
+
+TOKEN CCharacterToken = {
+ "character", /* used by error messages involving this token */
+ "@C", /* Lout command for formatting characters */
+ "", /* No alternate command */
+ { "'" }, /* characters begin with a ' character */
+ NotQuote, /* inside, any printable except ' is OK */
+ "\\", /* within characters, \\ is the escape character */
+ AllPrintable, /* after escape char, any printable char is OK */
+ "", /* characters do not permit "inner escapes" */
+ "", /* and so there is no end innner escape either */
+ "'" /* characters end with a ' character */
+};
+
+TOKEN EiffelStringToken = {
+ "string", /* used by error messages involving this token */
+ "@S", /* Lout command for formatting strings */
+ "", /* No alternate command */
+ { "\"" }, /* strings begin with a " character */
+ NotDoubleQuote, /* inside, any printable except " is OK */
+ "%", /* within strings, % is the escape character */
+ AllPrintable, /* after escape char, any printable char is OK */
+ "", /* strings do not permit "inner escapes" */
+ "", /* and so there is no end innner escape either */
+ "\"" /* strings end with a " character */
+};
+
+TOKEN EiffelCharacterToken = {
+ "character", /* used by error messages involving this token */
+ "@C", /* Lout command for formatting characters */
+ "", /* No alternate command */
+ { "'" }, /* characters begin with a ' character */
+ NotQuote, /* inside, any printable except ' is OK */
+ "%", /* within characters, % is the escape character */
+ AllPrintable, /* after escape char, any printable char is OK */
+ "", /* characters do not permit "inner escapes" */
+ "", /* and so there is no end innner escape either */
+ "'" /* characters end with a ' character */
+};
+
+TOKEN IdentifierToken = {
+ "identifier", /* used by error messages involving this token */
+ "@D", /* Lout command for formatting identifiers */
+ "@K", /* Alternate command (for keywords) */
+ { SepLetters, "_" }, /* identifiers begin with any letter or _ */
+ Letter_Digit, /* inside, letters, underscores, digits are OK */
+ "", /* no escape character within identifiers */
+ "", /* so nothing legal after escape char either */
+ "", /* identifiers do not permit "inner escapes" */
+ "", /* and so there is no end innner escape either */
+ "" /* identifiers do not end with a delimiter */
+};
+
+TOKEN NumberToken = {
+ "number", /* used by error messages involving this token */
+ "@N", /* Lout command for formatting numbers */
+ "", /* No alternate command */
+ { SepDigits }, /* numbers must begin with a digit */
+ "0123456789.eE", /* inside, digits, decimal point, exponent */
+ "", /* no escape character within numbers */
+ "", /* so nothing legal after escape char either */
+ "", /* numbers do not permit "inner escapes" */
+ "", /* and so there is no end innner escape either */
+ "" /* numbers do not end with a delimiter */
+};
+
+TOKEN CCommentToken = {
+ "comment", /* used by error messages involving this token */
+ "@C", /* Lout command for formatting comments */
+ "", /* No alternate command */
+ { "/*" }, /* comments begin with this character pair */
+ AllPrintableTabNL, /* inside, any printable char, tab, or nl is OK */
+ "", /* no escape character within comments */
+ "", /* so nothing legal after escape char either */
+ "", /* C comments do not permit "inner escapes" */
+ "", /* and so there is no end innner escape either */
+ "*/" /* comments end with this character pair */
+};
+
+TOKEN CCommentEscapeToken = {
+ "Lout escape", /* used by error messages involving this token */
+ NULL, /* no Lout command since passed through unformatted */
+ "", /* No alternate command */
+ { "/*@" }, /* comments begin with this character pair */
+ AllPrintableTabNL, /* inside, any printable char, tab, or nl is OK */
+ "", /* no escape character within comments */
+ "", /* so nothing legal after escape char either */
+ "", /* no "inner escape" in escape comments */
+ "", /* so no end of "inner escape" either */
+ "*/" /* comments end with this character pair */
+};
+
+TOKEN CPPCommentToken = {
+ "comment", /* used by error messages involving this token */
+ "@C", /* Lout command for formatting comments */
+ "", /* No alternate command */
+ { "//" }, /* comments begin with this character pair */
+ AllPrintable, /* inside, any printable char is OK (not NL) */
+ "", /* no escape character within comments */
+ "", /* so nothing legal after escape char either */
+ "", /* C comments do not permit "inner escapes" */
+ "", /* and so there is no end innner escape either */
+ "" /* no end delimiter (end of line will end it) */
+};
+
+TOKEN CPPCommentEscapeToken = {
+ "Lout escape", /* used by error messages involving this token */
+ NULL, /* no Lout command since passed through unformatted */
+ "", /* No alternate command */
+ { "//@" }, /* comments begin with this character pair */
+ AllPrintable, /* inside, any printable char is OK */
+ "", /* no escape character within comments */
+ "", /* so nothing legal after escape char either */
+ "", /* no "inner escape" in escape comments */
+ "", /* so no end of "inner escape" either */
+ "" /* no end delimiter (end of line will end it) */
+};
+
+TOKEN EiffelCommentToken = {
+ "comment", /* used by error messages involving this token */
+ "@C", /* Lout command for formatting comments */
+ "", /* No alternate command */
+ { "--" }, /* comments begin with this character pair */
+ AllPrintable, /* inside, any printable char is OK */
+ "", /* no escape character within comments */
+ "", /* so nothing legal after escape char either */
+ "`", /* start of "inner escape" in Eiffel comment */
+ "'", /* end of "inner escape" in Eiffel comment */
+ "" /* no ending delimiter; end of line will end it */
+};
+
+TOKEN EiffelCommentEscapeToken = {
+ "Lout escape", /* used by error messages involving this token */
+ NULL, /* no Lout command since passed through unformatted */
+ "", /* No alternate command */
+ { "--@" }, /* comments begin with this character pair */
+ AllPrintable, /* inside, any printable char is OK */
+ "", /* no escape character within comments */
+ "", /* so nothing legal after escape char either */
+ "", /* no "inner escape" in escape comments */
+ "", /* so no end of "inner escape" either */
+ "" /* no ending delimiter; end of line will end it */
+};
+
+TOKEN BlueCommentToken = {
+ "comment", /* used by error messages involving this token */
+ "@C", /* Lout command for formatting comments */
+ "", /* No alternate command */
+ { "==", "--" }, /* comments begin with this character pair */
+ AllPrintable, /* inside, any printable char is OK */
+ "", /* no escape character within comments */
+ "", /* so nothing legal after escape char either */
+ "`", /* start of "inner escape" in Blue comment */
+ "'", /* end of "inner escape" in Blue comment */
+ "" /* no ending delimiter; end of line will end it */
+};
+
+TOKEN BlueCommentEscapeToken = {
+ "Lout escape", /* used by error messages involving this token */
+ NULL, /* no Lout command since passed through unformatted */
+ "", /* No alternate command */
+ { "==@", "--@" }, /* comments begin with this character pair */
+ AllPrintable, /* inside, any printable char is OK */
+ "", /* no escape character within comments */
+ "", /* so nothing legal after escape char either */
+ "", /* no "inner escape" in escape comments */
+ "", /* so no end of "inner escape" either */
+ "" /* no ending delimiter; end of line will end it */
+};
+
+
+#define FixedToken(str, command) /* define fixed-string token */ \
+{ \
+ str, /* name used for debugging only */ \
+ command, /* Lout command for formatting this */ \
+ "", /* No alternate command */ \
+ { str }, /* token begins (and ends!) with this */ \
+ "", /* nothing inside, since no inside */ \
+ "", /* no escape character */ \
+ "", /* so nothing after escape character */ \
+ "", /* no inner escape either */ \
+ "", /* so no end inner escape */ \
+ "" /* no ending delimiter */ \
+}
+
+TOKEN HashToken = FixedToken("#", "@O");
+TOKEN ExclamationToken = FixedToken("!", "@O");
+TOKEN PercentToken = FixedToken("%", "@O");
+TOKEN HatToken = FixedToken("^", "@O");
+TOKEN AmpersandToken = FixedToken("&", "@O");
+TOKEN StarToken = FixedToken("*", "@ST");
+TOKEN SlashToken = FixedToken("/", "@O");
+TOKEN ArrowToken = FixedToken("->", "arrowright @A @O");
+TOKEN BackSlashToken = FixedToken("\\", "@O");
+TOKEN LeftParenToken = FixedToken("(", "@O");
+TOKEN RightParenToken = FixedToken(")", "@O");
+TOKEN MinusToken = FixedToken("-", "@M");
+TOKEN PlusToken = FixedToken("+", "plus @A @O");
+TOKEN EqualToken = FixedToken("=", "equal @A @O");
+TOKEN LeftBraceToken = FixedToken("{", "@O");
+TOKEN RightBraceToken = FixedToken("}", "@O");
+TOKEN BarToken = FixedToken("|", "@O");
+TOKEN CircumToken = FixedToken("~", "@O");
+TOKEN LeftBracketToken = FixedToken("[", "@O");
+TOKEN RightBracketToken = FixedToken("]", "@O");
+TOKEN SemicolonToken = FixedToken(";", "@O");
+TOKEN ColonToken = FixedToken(":", "@O");
+TOKEN LessToken = FixedToken("<", "less @A @O");
+TOKEN GreaterToken = FixedToken(">", "greater @A @O");
+TOKEN QuestionToken = FixedToken("?", "@O");
+TOKEN CommaToken = FixedToken(",", "@O");
+TOKEN DotToken = FixedToken(".", "@O");
+TOKEN EiffelDotToken = FixedToken(".", "@ED");
+TOKEN LessEqualToken = FixedToken("<=", "lessequal @A @O");
+TOKEN GreaterEqualToken = FixedToken(">=", "greaterequal @A @O");
+TOKEN CNotEqualToken = FixedToken("!=", "notequal @A @O");
+TOKEN EiffelNotEqualToken = FixedToken("/=", "notequal @A @O");
+TOKEN BlueNotEqualToken = FixedToken("<>", "notequal @A @O");
+TOKEN AssignToken = FixedToken(":=", "@O");
+TOKEN QuestionAssignToken = FixedToken("?=", "@O");
+TOKEN DollarToken = FixedToken("$", "@O");
+TOKEN ImpliesToken = FixedToken("=>", "implies @A @O");
+
+
+/*****************************************************************************/
+/* */
+/* LANGUAGE - put your language declarations in this section. */
+/* */
+/*****************************************************************************/
+
+typedef struct lang_rec {
+ char *names[MAX_ARRAY_LENGTH];
+ char *default_style;
+ TOKEN *tokens[MAX_ARRAY_LENGTH];
+ char *keywords[MAX_ARRAY_LENGTH];
+} LANGUAGE;
+
+LANGUAGE CLanguage = {
+ { "C", "c", "C++", "c++" },
+ "fixed",
+ {
+ &CStringToken, &CCharacterToken, &IdentifierToken, &NumberToken,
+ &CCommentToken, &CCommentEscapeToken,
+ &CPPCommentToken, &CPPCommentEscapeToken,
+ &HashToken, &ExclamationToken, &PercentToken, &HatToken,
+ &AmpersandToken, &StarToken, &LeftParenToken, &RightParenToken,
+ &MinusToken, &PlusToken, &EqualToken, &LeftBraceToken, &RightBraceToken,
+ &BarToken, &CircumToken, &LeftBracketToken, &RightBracketToken,
+ &SemicolonToken, &ColonToken, &LessToken, &GreaterToken,
+ &QuestionToken, &CommaToken, &DotToken, &SlashToken, &BackSlashToken,
+ &ArrowToken, &LessEqualToken, &GreaterEqualToken, &CNotEqualToken
+ },
+
+ { "asm", "auto", "break", "case", "catch", "char", "class", "const",
+ "continue", "default", "delete", "do", "double", "else", "enum",
+ "extern", "float", "for", "friend", "goto", "if", "inline", "int",
+ "long", "new", "operator", "private", "protected", "public", "register",
+ "return", "short", "signed", "sizeof", "static", "struct", "switch",
+ "template", "this", "throw", "try", "typedef", "union", "unsigned",
+ "virtual", "void", "volatile", "while",
+ }
+};
+
+
+LANGUAGE EiffelLanguage = {
+ { "Eiffel", "eiffel" },
+ "varying",
+ {
+ &EiffelStringToken, &EiffelCharacterToken, &IdentifierToken, &NumberToken,
+ &EiffelCommentToken, &EiffelCommentEscapeToken,
+ &SemicolonToken, &CommaToken, &ColonToken, &EiffelDotToken,
+ &ExclamationToken, &EqualToken, &EiffelNotEqualToken, &LeftParenToken,
+ &RightParenToken, &LeftBracketToken, &RightBracketToken, &LeftBraceToken,
+ &RightBraceToken, &AssignToken, &QuestionAssignToken, &PlusToken,
+ &MinusToken, &DollarToken, &HatToken, &SlashToken, &BackSlashToken,
+ &LessToken, &GreaterToken, &LessEqualToken, &GreaterEqualToken
+ },
+
+ { "alias", "all", "and", "as", "check", "class", "creation", "debug",
+ "deferred", "do", "else", "elseif", "end", "ensure", "expanded",
+ "export", "external", "false", "feature", "from", "frozen", "if",
+ "implies", "indexing", "infix", "inherit", "inspect", "invariant",
+ "is", "like", "local", "loop", "obsolete", "old", "once", "or",
+ "prefix", "redefine", "rename", "require", "rescue", "retry", "select",
+ "separate", "strip", "then", "true", "undefine", "unique", "until",
+ "variant", "when", "xor", "not", "interface"
+ }
+};
+
+
+LANGUAGE BlueLanguage = {
+ { "Blue", "blue" },
+ "varying",
+ {
+ &CStringToken, &IdentifierToken, &NumberToken,
+ &BlueCommentToken, &BlueCommentEscapeToken,
+ &CommaToken, &LessToken, &GreaterToken, &ColonToken, &AssignToken,
+ &LeftParenToken, &RightParenToken, &LeftBracketToken, &RightBracketToken,
+ &QuestionAssignToken, &ExclamationToken, &EiffelDotToken, &ImpliesToken,
+ &EqualToken, &BlueNotEqualToken, &LeftBraceToken, &RightBraceToken,
+ &PlusToken, &MinusToken, &StarToken, &SlashToken, &HatToken,
+ &LessEqualToken, &GreaterEqualToken
+
+ },
+
+ { "and", "assert", "builtin", "case", "class", "const", "create",
+ "creation", "deferred", "div", "do", "else", "elseif", "end",
+ "Enumeration", "enumeration", "exit", "if", "in", "interface",
+ "internal", "invariant", "is", "loop", "manifest", "mod", "not",
+ "of", "old", "on", "or", "post", "pre", "redefined", "return",
+ "routines", "super", "then", "uses", "var"
+ }
+};
+
+
+LANGUAGE *languages[] = {
+ & CLanguage,
+ & EiffelLanguage,
+ & BlueLanguage,
+};
+
+/*****************************************************************************/
+/* */
+/* If you are adding a new language, you don't need to change anything */
+/* below this point. Just repeating: don't change anything below here. */
+/* */
+/*****************************************************************************/
+
+
+/*****************************************************************************/
+/* */
+/* Global constants and variables */
+/* */
+/*****************************************************************************/
+#define DEBUG_SETUP 0
+#define DEBUG_PROCESS 0
+#define DEBUG_TRIE 0
+#define DEBUG_NEXTCHAR 0
+#define DEBUG_PREFIXEQ 0
+#define DEBUG_EMIT 0
+#define DEBUG_MAIN 0
+
+#define PROG2LOUT_VERSION "prg2lout Version 1.0 (February 2000)"
+#define BOOLEAN unsigned
+#define FALSE 0
+#define TRUE 1
+#define MAX_LINE 1024
+
+/* print styles */
+#define NO_STYLE 0
+#define FIXED_STYLE 1
+#define VARYING_STYLE 2
+#define SYMBOL_STYLE 3
+
+static char file_name[MAX_LINE]; /* current input file name */
+static char curr_line[MAX_LINE]; /* current input line */
+static int line_num; /* current input line number */
+static int line_pos; /* current input column number */
+static BOOLEAN raw_seen; /* TRUE if -r (raw mode) */
+
+static BOOLEAN headers_option; /* TRUE if no -n option (headers) */
+static int style_option; /* value of -p option, or NO_STYLE */
+static char *font_option; /* value of -f option, else null */
+static char *size_option; /* value of -s option, else null */
+static char *line_option; /* value of -v option, else null */
+static char *tabin_option; /* value of -t option, else null */
+static char *tabout_option; /* value of -T option, else null */
+static char *language_option; /* value of -l option, else null */
+
+static BOOLEAN tab_by_spacing; /* TRUE if using space chars to tab */
+static int tab_in; /* tab interval, value of -t option */
+static float tab_out; /* tab interval width (-T option) */
+static char tab_unit; /* unit of measurement for tab */
+
+char *ErrorHeader()
+{ static char buff[MAX_LINE];
+ if( line_num == 0 )
+ sprintf(buff, "prg2lout");
+ else if( raw_seen )
+ sprintf(buff, "prg2lout %d,%d", line_num, line_pos);
+ else
+ sprintf(buff, "prg2lout %s %d,%d", file_name, line_num, line_pos);
+ return buff;
+}
+
+#define GetArg(arg, message, null_ok) \
+{ if( strcmp(argv[arg_pos]+2, "") != 0 ) \
+ arg = argv[arg_pos]+2; \
+ else if( !null_ok && arg_pos < argc-1 && *argv[arg_pos+1] != '-' ) \
+ arg = argv[++arg_pos]; \
+ else if( null_ok ) \
+ arg = (char *) NULL; \
+ else \
+ { fprintf(err_fp, "%s: %s\n", ErrorHeader(), message); \
+ exit(1); \
+ } \
+} /* end GetArg */
+
+
+/*****************************************************************************/
+/* */
+/* char *EchoToken(TOKEN *t) */
+/* */
+/* Print a brief resume of token t */
+/* */
+/*****************************************************************************/
+
+char *EchoToken(TOKEN *t)
+{ static char buff[MAX_LINE];
+ if( t == (TOKEN *) NULL )
+ sprintf(buff, "(NULL)");
+ else
+ sprintf(buff, "%s", t->name);
+ return buff;
+}
+
+
+
+/*****************************************************************************/
+/* */
+/* TRIE */
+/* */
+/* We use a trie to match the input against the opening pattern of each */
+/* token, since some tokens (e.g. <=, // etc.) have multi-character */
+/* opening patterns. */
+/* */
+/*****************************************************************************/
+
+typedef struct trie_node {
+ struct trie_node *sub[MAX_CHAR];
+ TOKEN *value[MAX_CHAR];
+} *TRIE;
+
+/*****************************************************************************/
+/* */
+/* BOOLEAN TrieInsert(&T, str, val) */
+/* */
+/* Insert str into trie T. May need a new root so pass T by reference. */
+/* Return FALSE if the insertion failed, either because the string was */
+/* empty, or because it was the same as a previously inserted string. */
+/* */
+/*****************************************************************************/
+
+BOOLEAN TrieInsert(TRIE *T, char *str, TOKEN *val)
+{ BOOLEAN res;
+ if( DEBUG_TRIE )
+ fprintf(stderr, "[ TrieInsert(T, %s, %s)\n", str, EchoToken(val));
+ if( *str == '\0' )
+ res = FALSE;
+ else
+ {
+ if( *T == (TRIE) NULL )
+ *T = (TRIE) calloc(1, sizeof(struct trie_node)); /* will set all to 0 */
+ if( *(str + 1) != '\0' )
+ res = TrieInsert(&((*T)->sub[(int) *str]), str + 1, val);
+ else if( (*T)->value[(int) *str] != (TOKEN *) NULL )
+ res = FALSE;
+ else
+ {
+ (*T)->value[(int) *str] = val;
+ res = TRUE;
+ }
+ }
+ if( DEBUG_TRIE )
+ fprintf(stderr, "] TrieInsert(T, %s, %s) returning %s\n", str,
+ EchoToken(val), res ? "TRUE" : "FALSE");
+ return res;
+}
+
+/*****************************************************************************/
+/* */
+/* TOKEN *TrieRetrieve(T, str, &len) */
+/* */
+/* Find the longest prefix of string str in T. If this is empty, return */
+/* NULL. If non-empty, return the corresponding value as the result, and */
+/* the length of the prefix in *len. */
+/* */
+/*****************************************************************************/
+
+TOKEN *TrieRetrieve(TRIE T, char *str, int *len)
+{ TOKEN *res; int i;
+ if( DEBUG_TRIE )
+ fprintf(stderr, "[ TrieRetrieve(T, %s, len)\n", str);
+ res = (TOKEN *) NULL;
+ *len = 0;
+ for( i = 0; T != (TRIE) NULL; T = T->sub[(int) str[i]], i++ )
+ {
+ if( DEBUG_TRIE )
+ fprintf(stderr, " i = %d, res = %s\n", i, EchoToken(res));
+ if( T->value[(int) str[i]] != (TOKEN *) NULL )
+ {
+ res = T->value[(int) str[i]];
+ *len = i+1;
+ }
+ }
+ if( DEBUG_TRIE )
+ fprintf(stderr, "] TrieRetrieve returning (*len = %d) %s\n",
+ *len, EchoToken(res));
+ return res;
+}
+
+
+/*****************************************************************************/
+/* */
+/* HASH_TABLE */
+/* */
+/* We use a hash table to hold the keywords. There is no associated */
+/* value, we just want to know whether they are there or not. */
+/* */
+/* NB MAX_SYM must be somewhat larger than the number of keywords. */
+/* */
+/*****************************************************************************/
+#define MAX_SYM 309
+
+static char *HashTable[MAX_SYM]; /* will initialze to NULL */
+static int HashTableCount = 0; /* number of entries */
+
+static int hash(char *key)
+{ int i, res;
+ res = 0;
+ for( i = 0; key[i] != '\0'; i++ )
+ { res += key[i];
+ }
+ return res % MAX_SYM;
+} /* end hash */
+
+void HashTableInsert(char *str, FILE *err_fp)
+{ int i;
+ if( DEBUG_SETUP )
+ fprintf(stderr, "[ HashTableInsert(%s)\n", str);
+ if( HashTableCount >= MAX_SYM - 20 )
+ {
+ fprintf(err_fp, "%s internal error: full hash table (increase MAX_SYM)\n",
+ ErrorHeader());
+ abort();
+ }
+ for( i = hash(str); HashTable[i] != (char *) NULL; i = (i+1) % MAX_SYM );
+ HashTable[i] = str;
+ HashTableCount++;
+ if( DEBUG_SETUP )
+ fprintf(stderr, "] HashTableInsert(%s)\n", str);
+}
+
+BOOLEAN HashTableRetrieve(char *str)
+{ int i;
+ for( i = hash(str); HashTable[i] != (char *) NULL; i = (i+1) % MAX_SYM )
+ if( strcmp(HashTable[i], str) == 0 )
+ return TRUE;
+ return FALSE;
+}
+
+
+/*****************************************************************************/
+/* */
+/* BACK END */
+/* */
+/* This is the code that actually prints the output file. It accumulates */
+/* each token and only prints it at the end of the token, so that it can */
+/* check whether an alternative command ought to be printed (keywords). */
+/* */
+/*****************************************************************************/
+
+static char save_token[MAX_LINE]; /* the token text */
+static int save_len; /* index of \0 in save_token */
+static BOOLEAN save_on = FALSE; /* TRUE when saving */
+
+/*****************************************************************************/
+/* */
+/* EmitRaw(ch, out_fp, FILE *err_fp) */
+/* */
+/* Emit this character immediately. This is only legal when not saving. */
+/* All characters printed on the output file should pass through here, */
+/* since EmitRaw keeps track of where we are on the output line, in order */
+/* to handle tab characters correctly. */
+/* */
+/* NB out_linepos is the column where the *next* character will go, and */
+/* it counts the first column on the line as column zero. It understands */
+/* that a tab character always produces at least one space, and that the */
+/* character after a tab goes in a column whose number mod tab_in is zero. */
+/* */
+/*****************************************************************************/
+
+void EmitRaw(char ch, FILE *out_fp, FILE *err_fp)
+{
+ static int out_linepos = 0; /* output line position */
+ static BOOLEAN out_linestart = TRUE; /* TRUE if out line start */
+
+ if( DEBUG_EMIT )
+ fprintf(stderr, "EmitRaw(%c); out_linepos %d, out_linestart %s\n",
+ ch, out_linepos, out_linestart ? "TRUE" : "FALSE");
+ if( save_on )
+ {
+ fprintf(err_fp, "%s internal error (EmitRaw save_on)\n", ErrorHeader());
+ abort();
+ }
+ if( ch == '\t' )
+ {
+ if( tab_by_spacing )
+ { putc(' ', out_fp);
+ out_linepos++;
+ while( out_linepos % tab_in != 0 )
+ { putc(' ', out_fp);
+ out_linepos++;
+ }
+ }
+ else
+ {
+ out_linepos++;
+ while( out_linepos % tab_in != 0 )
+ { out_linepos++;
+ }
+ if( out_linestart )
+ { fprintf(out_fp, "$>%.1f%c {}", tab_out, tab_unit);
+ /* NB {} is required in case nothing follows on this line */
+ }
+ else
+ { fprintf(out_fp, "$>%.1f%ct {}", (out_linepos/tab_in)*tab_out, tab_unit);
+ }
+ }
+ }
+ else if( ch == '\n' )
+ {
+ fputc(ch, out_fp);
+ out_linepos = 0;
+ out_linestart = TRUE;
+ }
+ else
+ {
+ fputc(ch, out_fp);
+ out_linepos++;
+ if( ch != ' ' )
+ out_linestart = FALSE;
+ }
+ if( DEBUG_EMIT )
+ fprintf(stderr, "EmitRaw(%c) returning; out_linepos %d, out_linestart %s\n",
+ ch, out_linepos, out_linestart ? "TRUE" : "FALSE");
+} /* end EmitRaw */
+
+
+/*****************************************************************************/
+/* */
+/* StartEmit(FILE *err_fp) */
+/* */
+/* Start the emission of a token. */
+/* */
+/*****************************************************************************/
+
+void StartEmit(FILE *err_fp)
+{
+ if( save_on )
+ {
+ fprintf(err_fp, "%s internal error (StartEmit)\n", ErrorHeader());
+ abort();
+ }
+ save_on = TRUE;
+ save_len = 0;
+}
+
+
+/*****************************************************************************/
+/* */
+/* EndEmit(LANGUAGE *lang, TOKEN *current_token, FILE *out_fp, *err_fp) */
+/* */
+/* End emitting a token of this type on file out_fp. */
+/* */
+/*****************************************************************************/
+
+void EndEmit(LANGUAGE *lang, TOKEN *current_token, FILE *out_fp, FILE *err_fp)
+{ BOOLEAN altern; int i;
+ if( !save_on )
+ {
+ fprintf(err_fp, "%s internal error (EndEmit)\n", ErrorHeader());
+ abort();
+ }
+ save_on = FALSE;
+
+ if( save_len == 0 )
+ {
+ /* nothing in token, must be resumed after a newline or tab */
+ /* so emit nothing in this case */
+ }
+ else if( current_token->command == (char *) NULL )
+ {
+ /* no command, which means to emit this token without its delimiters */
+ for( i = 0; i < save_len; i++ )
+ EmitRaw(save_token[i], out_fp, err_fp);
+ }
+ else
+ {
+ /* if there is an alternate command in this language, check whether the */
+ /* completed token is a keyword, and if so apply the alternate command. */
+ altern = (lang != (LANGUAGE *) NULL
+ && current_token->alternate_command[0] != '\0'
+ && HashTableRetrieve(save_token));
+
+ putc('{', out_fp);
+ fputs(altern ? current_token->alternate_command : current_token->command,
+ out_fp);
+ putc('"', out_fp);
+ for( i = 0; i < save_len; i++ )
+ {
+ if( save_token[i] == '"' || save_token[i] == '\\' )
+ putc('\\', out_fp);
+ EmitRaw(save_token[i], out_fp, err_fp);
+ }
+ putc('"', out_fp);
+ putc('}', out_fp);
+ }
+} /* end EndEmit */
+
+
+/*****************************************************************************/
+/* */
+/* Emit(char ch, TOKEN *current_token, FILE *out_fp, FILE *err_fp) */
+/* */
+/* Emit one character. */
+/* */
+/*****************************************************************************/
+
+void Emit(char ch, TOKEN *current_token, FILE *out_fp, FILE *err_fp)
+{
+ if( !save_on )
+ {
+ fprintf(err_fp, "%s internal error (EmitChar)\n", ErrorHeader());
+ abort();
+ }
+ if( ch == '\n' || ch == '\t' )
+ {
+ EndEmit((LANGUAGE *) NULL, current_token, out_fp, err_fp);
+ EmitRaw(ch, out_fp, err_fp);
+ StartEmit(err_fp);
+ }
+ else
+ {
+ save_token[save_len++] = ch;
+ save_token[save_len] = '\0';
+ }
+} /* end Emit */
+
+
+/*****************************************************************************/
+/* */
+/* SetupTokens(LANGUAGE *lang) */
+/* */
+/* Set up the runtime token structures. This involves initializing the */
+/* chtype and escape_chtype fields for each token type in the chosen */
+/* language, and loading the trie with all the opening delimiters of all */
+/* the tokens. */
+/* */
+/*****************************************************************************/
+#define LEGAL 1
+#define ESCAPE 2
+#define INNER_ESCAPE 3
+
+TRIE Trie = (TRIE) NULL;
+
+void SetupTokens(LANGUAGE *lang, FILE *err_fp)
+{ TOKEN *t; int i, j;
+ if( DEBUG_SETUP )
+ fprintf(stderr, "SetupTokens(%s)\n", lang->names[0]);
+
+ /* set up each token in the language */
+ for( i = 0; lang->tokens[i] != (TOKEN *) NULL; i++ )
+ {
+ t = lang->tokens[i];
+ if( DEBUG_SETUP )
+ fprintf(stderr, "SetupTokens token starting %s\n", t->starts[0]);
+
+ /* set up the chtype table for this token */
+ for( j = 0; t->legal[j] != '\0'; j++ )
+ t->chtype[(int) t->legal[j]] = LEGAL;
+ if( t->escape[0] != '\0' )
+ t->chtype[(int) t->escape[0]] = ESCAPE;
+ if( t->inner_escape[0] != '\0' )
+ t->chtype[(int) t->inner_escape[0]] = INNER_ESCAPE;
+
+ /* set up the escape_chtype table for this token */
+ for( j = 0; t->escape_legal[j] != '\0'; j++ )
+ t->escape_chtype[(int) t->escape_legal[j]] = LEGAL;
+
+ /* load the opening delimiters of this token into the trie */
+ for( j = 0; t->starts[j] != (char *) NULL; j++ )
+ {
+ if( !TrieInsert(&Trie, t->starts[j], t) )
+ {
+ if( *(t->starts[j]) == '\0' )
+ fprintf(err_fp, "%s: empty starting delimiter\n", ErrorHeader());
+ else
+ fprintf(err_fp, "%s: starting delimiter %s appears twice\n",
+ ErrorHeader(), t->starts[j]);
+ }
+ }
+
+ if( DEBUG_SETUP )
+ fprintf(stderr, "SetupTokens token ending %s\n", t->starts[0]);
+ }
+
+ /* load the keyword hash table */
+ for( j = 0; lang->keywords[j] != (char *) NULL; j++ )
+ HashTableInsert(lang->keywords[j], err_fp);
+
+ if( DEBUG_SETUP )
+ fprintf(stderr, "SetupTokens(%s) returning.\n", lang->names[0]);
+} /* end SetupTokens */
+
+
+/*****************************************************************************/
+/* */
+/* BOOLEAN PrefixEq(char *str, char *prefix) */
+/* */
+/* Returns TRUE if str (unterminated) begins with prefix (terminated). */
+/* */
+/*****************************************************************************/
+
+BOOLEAN PrefixEq(char *str, char *prefix)
+{ char *p, *q;
+ for( p = str, q = prefix; *q != '\0' && *p == *q; p++, q++ );
+ if( DEBUG_PREFIXEQ )
+ fprintf(stderr, "PrefixEq(%s, %s) returning %s\n",
+ str, prefix, *q == '\0' ? "TRUE" : "FALSE");
+ return (*q == '\0');
+} /* end PrefixEq */
+
+
+/*****************************************************************************/
+/* */
+/* NextChar(FILE *in_fp) */
+/* */
+/* Move to next character in the input file. This may involve changing */
+/* global variables curr_line, line_num, and line_pos; the new character */
+/* may be found in curr_line[line_pos]. */
+/* */
+/* NextChar does not skip any characters at all. When end of file is */
+/* reached, curr_line[line_pos] contains '\0'. */
+/* */
+/*****************************************************************************/
+
+void NextChar(FILE *in_fp)
+{
+ if( curr_line[line_pos] == '\n' )
+ {
+ /* need a new line */
+ line_num++;
+ line_pos = 1;
+ if( fgets(&curr_line[1], MAX_LINE+2, in_fp) == (char *) NULL )
+ curr_line[1] = '\0';
+ }
+ else line_pos++; /* will yield '\0' as desired if EOF before end of line */
+ if( DEBUG_NEXTCHAR )
+ fprintf(stderr, "after NextChar, line_num %d, line_pos %d, curr_line %s",
+ line_num, line_pos, &curr_line[1]);
+} /* end NextChar */
+
+
+/*****************************************************************************/
+/* */
+/* BOOLEAN Printable(char ch) */
+/* */
+/* TRUE if ch is a printable character. Used only by error messages so */
+/* can be slow. */
+/* */
+/*****************************************************************************/
+
+BOOLEAN Printable(char ch)
+{ char *p;
+ for( p = AllPrintable; *p != '\0' && *p != ch; p++ );
+ return (*p == ch);
+} /* end Printable */
+
+
+/*****************************************************************************/
+/* */
+/* Process(LANGUAGE*lang, FILE*in_fp, *out_fp, *err_fp, TOKEN *outer_token) */
+/* */
+/* Process a sequence of input tokens. If we are currently recursing */
+/* inside some other token, outer_token is non-null and is that token, */
+/* and we stop when we reach the ending delimiter of the inner escape */
+/* of that token. Otherwise, we stop at end of file. */
+/* */
+/*****************************************************************************/
+#define START 1
+#define IN_TOKEN 2
+#define IN_TOKEN_AFTER_ESCAPE 3
+#define IN_TOKEN_AFTER_INNER_ESCAPE 4
+#define STOP 5
+
+void Process(LANGUAGE *lang, FILE *in_fp, FILE *out_fp, FILE *err_fp,
+TOKEN *outer_token)
+{ TOKEN *current_token; int len, i, state;
+ if( DEBUG_PROCESS )
+ fprintf(stderr, "[ Process(%s, -, -, -, -)\n", lang->names[0]);
+
+ state = START;
+ while( curr_line[line_pos] != '\0' && state != STOP )
+ {
+ if( DEBUG_PROCESS )
+ fprintf(stderr, " state %d, ch %c\n", state, curr_line[line_pos]);
+ switch( state )
+ {
+ case START: /* between tokens */
+
+ /* check whether outer_token's delimiter is current */
+ if( outer_token != (TOKEN *) NULL &&
+ outer_token->end_inner_escape[0] != '\0' &&
+ PrefixEq(&curr_line[line_pos], outer_token->end_inner_escape) )
+ {
+ len = strlen(outer_token->end_inner_escape);
+ for( i = 0; i < len; i++ )
+ NextChar(in_fp);
+ state = STOP;
+ }
+ else switch( curr_line[line_pos] )
+ {
+
+ case ' ':
+
+ EmitRaw(' ', out_fp, err_fp);
+ NextChar(in_fp);
+ break;
+
+
+ case '\t':
+
+ if( outer_token != (TOKEN *) NULL )
+ {
+ fprintf(err_fp, "%s: replacing tab character in escape by space\n",
+ ErrorHeader());
+ EmitRaw(' ', out_fp, err_fp);
+ NextChar(in_fp);
+ }
+ else
+ {
+ EmitRaw('\t', out_fp, err_fp);
+ NextChar(in_fp);
+ }
+ break;
+
+
+ case '\n':
+
+ if( outer_token != (TOKEN *) NULL )
+ {
+ fprintf(err_fp, "%s: inserting %s to fix unterminated escape\n",
+ ErrorHeader(), outer_token->end_inner_escape);
+ state = STOP;
+ }
+ else
+ {
+ EmitRaw('\n', out_fp, err_fp);
+ NextChar(in_fp);
+ }
+ break;
+
+
+ case '\f':
+
+ if( outer_token != (TOKEN *) NULL )
+ {
+ fprintf(err_fp, "%s: replacing formfeed character in escape by space\n",
+ ErrorHeader());
+ EmitRaw(' ', out_fp, err_fp);
+ NextChar(in_fp);
+ }
+ else
+ {
+ fprintf(out_fp, "\n@NP");
+ EmitRaw('\n', out_fp, err_fp);
+ NextChar(in_fp);
+ }
+ break;
+
+
+ default:
+
+ /* look up the trie to see which token we are starting */
+ current_token = TrieRetrieve(Trie, &curr_line[line_pos], &len);
+ if( current_token == (TOKEN *) NULL )
+ {
+ /* error; no token starts here, so print error message and skip */
+ if( Printable(curr_line[line_pos]) )
+ fprintf(err_fp, "%s: skipping unexpected %c character\n",
+ ErrorHeader(), curr_line[line_pos]);
+ else
+ fprintf(err_fp,
+ "%s: skipping unexpected unprintable character (octal %o)\n",
+ ErrorHeader(), (int) curr_line[line_pos]);
+ NextChar(in_fp);
+ }
+ else
+ {
+ /* have a token, so start emitting it */
+ if( DEBUG_PROCESS )
+ {
+ fprintf(stderr, "current_token (len = %d): %s\n",
+ len, EchoToken(current_token));
+ }
+ StartEmit(err_fp);
+ for( i = 0; i < len; i++ )
+ {
+ /* ***
+ if( DEBUG_PROCESS )
+ fprintf(stderr, " emitting delim (i %d, len %d)\n", i, len);
+ *** */
+ if( current_token->command != (char *) NULL )
+ Emit(curr_line[line_pos], current_token, out_fp, err_fp);
+ NextChar(in_fp);
+ }
+ state = IN_TOKEN;
+ }
+ }
+ break;
+
+
+ case IN_TOKEN: /* within a token; current_token says which kind */
+
+ /* check for ending delimiter if there is one */
+ if( current_token->end_delimiter[0] != '\0' &&
+ PrefixEq(&curr_line[line_pos], current_token->end_delimiter) )
+ {
+ if( DEBUG_PROCESS )
+ fprintf(stderr, " PrefixEq(-, %s) so finishing token\n",
+ current_token->end_delimiter);
+ len = strlen(current_token->end_delimiter);
+ for( i = 0; i < len; i++ )
+ { if( current_token->command != (char *) NULL )
+ Emit(curr_line[line_pos], current_token, out_fp, err_fp);
+ NextChar(in_fp);
+ }
+ EndEmit(lang, current_token, out_fp, err_fp);
+ state = START;
+ }
+ else switch( current_token->chtype[(int) curr_line[line_pos]] )
+ {
+
+ case LEGAL:
+
+ Emit(curr_line[line_pos], current_token, out_fp, err_fp);
+ NextChar(in_fp);
+ break;
+
+
+ case ESCAPE:
+
+ NextChar(in_fp);
+ state = IN_TOKEN_AFTER_ESCAPE;
+ break;
+
+
+ case INNER_ESCAPE:
+
+ EndEmit(lang, current_token, out_fp, err_fp);
+ NextChar(in_fp);
+ Process(lang, in_fp, out_fp, err_fp, current_token);
+ state = IN_TOKEN_AFTER_INNER_ESCAPE;
+ break;
+
+
+ default:
+
+ if( current_token->end_delimiter[0] != '\0' )
+ {
+ /* error: token ends at delimiter, not at unexpected character */
+ if( Printable(curr_line[line_pos]) )
+ fprintf(err_fp, "%s: skipping unexpected %c character in %s\n",
+ ErrorHeader(), curr_line[line_pos], current_token->name);
+ else
+ fprintf(err_fp,
+ "%s: skipping unexpected unprintable character (octal %o) in %s\n",
+ ErrorHeader(), (int) curr_line[line_pos], current_token->name);
+ NextChar(in_fp);
+ }
+ else
+ {
+ /* normal termination after last legal character */
+ EndEmit(lang, current_token, out_fp, err_fp);
+ state = START;
+ }
+ break;
+
+
+ }
+ break;
+
+
+ case IN_TOKEN_AFTER_ESCAPE:
+
+ if( current_token->escape_chtype[(int) curr_line[line_pos]] == LEGAL )
+ {
+ Emit(current_token->escape[0], current_token, out_fp, err_fp);
+ Emit(curr_line[line_pos], current_token, out_fp, err_fp);
+ }
+ else
+ {
+ if( Printable(curr_line[line_pos]) )
+ fprintf(err_fp, "%s: skipping %c%c in %s, since %c not legal here\n",
+ ErrorHeader(), current_token->escape[0], curr_line[line_pos],
+ current_token->name, curr_line[line_pos]);
+ else
+ fprintf(err_fp,
+ "%s: skipping %c and unprintable unexpected character (octal %o)\n",
+ ErrorHeader(), current_token->escape[0], (int) curr_line[line_pos]);
+ }
+ NextChar(in_fp);
+ state = IN_TOKEN;
+ break;
+
+
+ case IN_TOKEN_AFTER_INNER_ESCAPE:
+
+ /* ending delimiter of inner escape has been read over */
+ StartEmit(err_fp);
+ state = IN_TOKEN;
+ break;
+
+
+ default:
+
+ fprintf(err_fp, "%s internal error (state = %d)\n",
+ ErrorHeader(), state);
+ abort();
+ break;
+ }
+ }
+
+ /* at end, need to tidy up any residual messiness */
+ switch( state )
+ {
+
+ case START:
+ case STOP:
+
+ /* we stopped outside any token, or after an escape */
+ break;
+
+
+ case IN_TOKEN:
+
+ /* we stopped in a token (only a problem if it ends with a delimiter) */
+ if( current_token->end_delimiter[0] != '\0' )
+ {
+ if( outer_token == (TOKEN *) NULL )
+ fprintf(err_fp, "%s: program text ended within %s\n",
+ ErrorHeader(), current_token->name);
+ else
+ fprintf(err_fp, "%s: %s escape ended within %s\n",
+ ErrorHeader(), outer_token->name, current_token->name);
+ EndEmit(lang, current_token, out_fp, err_fp);
+ }
+ break;
+
+
+ case IN_TOKEN_AFTER_ESCAPE:
+
+ /* we stopped after the escape character */
+ fprintf(err_fp, "%s: skipping %c at end of program text\n",
+ ErrorHeader(), current_token->escape[0]);
+ EndEmit(lang, current_token, out_fp, err_fp);
+ break;
+
+
+ case IN_TOKEN_AFTER_INNER_ESCAPE:
+
+ /* we stopped after an inner escape (NB no EndEmit in this case) */
+ if( current_token->end_delimiter[0] != '\0' )
+ {
+ if( outer_token == (TOKEN *) NULL )
+ fprintf(err_fp, "%s: program text ended within %s after escape\n",
+ ErrorHeader(), current_token->name);
+ else
+ fprintf(err_fp, "%s: %s escape ended within %s after escape\n",
+ ErrorHeader(), outer_token->name, current_token->name);
+ }
+ break;
+
+
+ default:
+
+ fprintf(err_fp, "%s: internal error (state %d)\n",
+ ErrorHeader(), state);
+ abort();
+ break;
+
+ }
+} /* end Process */
+
+
+/*****************************************************************************/
+/* */
+/* PrintUsage(fp) */
+/* */
+/* Print usage message on file fp. */
+/* */
+/*****************************************************************************/
+
+void PrintUsage(FILE *fp)
+{ int i;
+ fprintf(fp, "\n");
+ fprintf(fp, "usage: prg2lout <options> <files>\n\n");
+ fprintf(fp, " where <options> can be\n");
+ fprintf(fp, "\n");
+ fprintf(fp, " -r raw mode (used within Lout only)\n");
+ fprintf(fp, " -i<file> take input from <file>\n");
+ fprintf(fp, " -o<file> send output to <file>\n");
+ fprintf(fp, " -e<file> send error messages to <file>\n");
+ fprintf(fp, " -l<language> input is in this programming language\n");
+ fprintf(fp, " -p<style> print style: fixed, varying, symbol\n");
+ fprintf(fp, " -f<family> font family (e.g. Times)\n");
+ fprintf(fp, " -s<size> font size (e.g. 10p or 12p)\n");
+ fprintf(fp, " -v<space> line spacing (e.g. 1.1fx)\n");
+ fprintf(fp, " -t<num> tab interval (e.g. 8 is default)\n");
+ fprintf(fp, " -T<dist> output tab interval (e.g. 0.5i)\n");
+ fprintf(fp, " -n no file names as page headers\n");
+ fprintf(fp, " -V print version information and exit\n");
+ fprintf(fp, " -u print this usage message and exit\n");
+ fprintf(fp, "\n");
+ fprintf(fp, " and <language> (which is compulsory) can be any one of:\n");
+ for( i = 0; languages[i] != (LANGUAGE *) NULL; i++ )
+ fprintf(fp, " %s\n", languages[i]->names[0]);
+ fprintf(fp, "\n");
+} /* end PrintUsage */
+
+
+/*****************************************************************************/
+/* */
+/* main(argc, argv) */
+/* */
+/* Read command line and either process each file in turn, or, in the */
+/* raw case, do the actual conversion of one file. */
+/* */
+/*****************************************************************************/
+
+int main(int argc, char *argv[])
+{ FILE *in_fp, *out_fp, *err_fp;
+ BOOLEAN stdin_seen; int i, j, arg_pos;
+ char *infilename, *outfilename, *errfilename, *str;
+ LANGUAGE *language = (LANGUAGE *) NULL;
+ char *file_names[1024]; int file_count = 0;
+
+ /* echo command line */
+ if( DEBUG_MAIN )
+ {
+ for( i = 0; i < argc; i++ )
+ fprintf(stderr, i == 0 ? "%s" : " %s", argv[i]);
+ fprintf(stderr, "\n\n");
+ }
+
+ /* read command line */
+ in_fp = out_fp = (FILE *) NULL;
+ err_fp = stderr;
+ line_num = 0;
+ stdin_seen = raw_seen = FALSE;
+ tab_by_spacing = TRUE;
+ style_option = NO_STYLE;
+ tab_in = 8;
+ tab_out = 3;
+ tab_unit = 'f';
+ headers_option = TRUE;
+ font_option = size_option = line_option = tabin_option =
+ tabout_option = language_option = (char *) NULL;
+ if( argc == 1 )
+ { PrintUsage(err_fp);
+ exit(1);
+ }
+ for( arg_pos = 1; arg_pos < argc; arg_pos++ )
+ {
+ if( DEBUG_SETUP )
+ fprintf(stderr, "examining argument %d = \"%s\"\n",
+ arg_pos, argv[arg_pos]);
+ if( *argv[arg_pos] == '-' ) switch( *(argv[arg_pos]+1) )
+ {
+ case 'r':
+
+ if( arg_pos > 1 )
+ { fprintf(err_fp, "%s: -r must be first if it occurs at all\n",
+ ErrorHeader());
+ exit(1);
+ }
+ raw_seen = TRUE;
+ break;
+
+
+ case 'i':
+
+ /* read name of input file */
+ if( !raw_seen )
+ { fprintf(err_fp, "%s: -i illegal with -r\n", ErrorHeader());
+ exit(1);
+ }
+ if( in_fp != NULL )
+ { fprintf(err_fp, "%s: -i seen twice\n", ErrorHeader());
+ exit(1);
+ }
+ GetArg(infilename, "usage: -i<filename>", FALSE);
+
+ /* open the file */
+ in_fp = fopen(infilename, "r");
+ if( in_fp == NULL )
+ { fprintf(err_fp, "%s: cannot open input file %s\n",
+ ErrorHeader(), infilename);
+ exit(1);
+ }
+
+ /* initialize file position */
+ strcpy(file_name, infilename);
+ line_num = 1;
+ line_pos = 0;
+ break;
+
+
+ case 'o':
+
+ /* read name of output file */
+ if( out_fp != NULL )
+ { fprintf(err_fp, "%s: -o seen twice\n", ErrorHeader());
+ exit(1);
+ }
+ GetArg(outfilename, "usage: -o<filename>", FALSE);
+ out_fp = fopen(outfilename, "w");
+ if( out_fp == NULL )
+ { fprintf(err_fp, "%s: cannot open output file %s\n",
+ ErrorHeader(), outfilename);
+ exit(1);
+ }
+ break;
+
+
+ case 'e':
+
+ /* read name of error file */
+ GetArg(errfilename, "usage: -e<filename>", FALSE);
+ err_fp = fopen(errfilename, "w");
+ if( err_fp == NULL )
+ { fprintf(stderr, "%s: cannot open error file %s",
+ ErrorHeader(), errfilename);
+ exit(1);
+ }
+ break;
+
+
+ case 'p':
+
+ /* read print style */
+ if( raw_seen )
+ { fprintf(err_fp, "%s: -p illegal with -r option\n", ErrorHeader());
+ exit(1);
+ }
+ GetArg(str, "usage: -p<printstyle>", FALSE);
+ /* *** -l can set style, so don't do this now
+ if( style_option != NO_STYLE )
+ { fprintf(err_fp, "%s: -p option appears twice!\n", ErrorHeader());
+ exit(1);
+ }
+ else
+ *** */
+ if( strcmp(str, "fixed") == 0 )
+ { style_option = FIXED_STYLE;
+ }
+ else if( strcmp(str, "varying") == 0 )
+ { style_option = VARYING_STYLE;
+ tab_by_spacing = FALSE;
+ }
+ else if( strcmp(str, "symbol") == 0 )
+ { style_option = SYMBOL_STYLE;
+ tab_by_spacing = FALSE;
+ }
+ else
+ { fprintf(err_fp, "%s: unknown -p option %s\n", ErrorHeader(), str);
+ exit(1);
+ }
+ break;
+
+
+ case 'f':
+
+ /* read font family */
+ if( raw_seen )
+ { fprintf(err_fp, "%s: -f illegal with -r option\n", ErrorHeader());
+ exit(1);
+ }
+ GetArg(font_option, "usage: -f<font_family>", FALSE);
+ break;
+
+
+ case 's':
+
+ /* read font size */
+ if( raw_seen )
+ { fprintf(err_fp, "%s: -s illegal with -r option\n", ErrorHeader());
+ exit(1);
+ }
+ GetArg(size_option, "usage: -s<size>", FALSE);
+ break;
+
+
+ case 'v':
+
+ /* read line spacing */
+ if( raw_seen )
+ { fprintf(err_fp, "%s: -v illegal with -r option\n", ErrorHeader());
+ exit(1);
+ }
+ GetArg(line_option, "usage: -v<line_spacing>", FALSE);
+ break;
+
+
+ case 't':
+
+ /* read tab interval */
+ GetArg(tabin_option, "usage: -t<number>", TRUE);
+ if( tabin_option != NULL && sscanf(tabin_option,"%d",&tab_in) != 1 )
+ { fprintf(err_fp, "%s usage: -t<number>\n", ErrorHeader());
+ exit(1);
+ }
+ if( tab_in <= 0 )
+ { fprintf(err_fp, "%s -t: tab interval must be greater than 0\n",
+ ErrorHeader());
+ exit(1);
+ }
+ break;
+
+
+ case 'T':
+
+ /* read tab_out and tab_unit */
+ GetArg(tabout_option, "usage: -T<number><unit>", TRUE);
+ if( tabout_option != NULL )
+ { if( sscanf(tabout_option, "%f%c",&tab_out,&tab_unit) != 2 )
+ { fprintf(err_fp, "%s usage: -T<number><unit>\n", ErrorHeader());
+ exit(1);
+ }
+ if( tab_out <= 0 || tab_out >= 50 )
+ { fprintf(err_fp, "%s -T: unreasonably large or small tab interval\n",
+ ErrorHeader());
+ exit(1);
+ }
+ if( tab_unit != 'c' && tab_unit != 'i' && tab_unit != 'p' &&
+ tab_unit != 'm' && tab_unit != 'f' && tab_unit != 's' &&
+ tab_unit != 'v' )
+ { fprintf(err_fp, "%s -T: tab unit must be one of cipmfsv\n",
+ ErrorHeader());
+ exit(1);
+ }
+ tab_by_spacing = FALSE;
+ }
+ break;
+
+
+ case 'n':
+
+ if( raw_seen )
+ { fprintf(err_fp, "%s: -n illegal with -r option\n", ErrorHeader());
+ exit(1);
+ }
+ headers_option = FALSE;
+ break;
+
+
+ case 'V':
+
+ if( raw_seen )
+ { fprintf(err_fp, "%s: -V illegal with -r option\n", ErrorHeader());
+ exit(1);
+ }
+ fprintf(err_fp, "%s\n", PROG2LOUT_VERSION);
+ exit(0);
+ break;
+
+
+ case 'u':
+
+ if( raw_seen )
+ { fprintf(err_fp, "%s: -u illegal with -r option\n", ErrorHeader());
+ exit(1);
+ }
+ PrintUsage(err_fp);
+ exit(0);
+ break;
+
+
+ case 'l':
+
+ if( language_option != (char *) NULL )
+ { fprintf(err_fp, "%s: -l seen twice\n", ErrorHeader());
+ exit(1);
+ }
+ GetArg(language_option, "usage: -l<language>", FALSE);
+ for( i = 0; languages[i] != (LANGUAGE *) NULL; i++ )
+ {
+ for( j = 0; languages[i]->names[j] != (char *) NULL; j++ )
+ {
+ if( strcmp(languages[i]->names[j], language_option) == 0 )
+ break;
+ }
+ if( languages[i]->names[j] != (char *) NULL )
+ break;
+ }
+ if( languages[i] != (LANGUAGE *) NULL )
+ {
+ language = languages[i];
+ }
+ else
+ {
+ fprintf(err_fp, "%s: unknown language %s\n", ErrorHeader(),
+ language_option);
+ exit(1);
+ }
+
+ /* set style unless already done by a -p flag */
+ if( style_option == NO_STYLE )
+ {
+ if( strcmp(language->default_style, "fixed") == 0 )
+ { style_option = FIXED_STYLE;
+ }
+ else if( strcmp(language->default_style, "varying") == 0 )
+ { style_option = VARYING_STYLE;
+ tab_by_spacing = FALSE;
+ }
+ else if( strcmp(language->default_style, "symbol") == 0 )
+ { style_option = SYMBOL_STYLE;
+ tab_by_spacing = FALSE;
+ }
+ else
+ { fprintf(err_fp,
+ "%s internal error: bad default print style for language %s\n",
+ ErrorHeader(), language_option);
+ abort();
+ }
+ }
+ break;
+
+
+ default:
+
+ fprintf(err_fp, "%s: unknown command line flag %s\n", ErrorHeader(),
+ argv[i]);
+ exit(1);
+ break;
+
+ }
+ else
+ {
+ if( raw_seen )
+ { fprintf(err_fp, "%s: file parameter illegal with -r flag\n",
+ ErrorHeader());
+ exit(1);
+ }
+ if( DEBUG_SETUP )
+ fprintf(stderr, "file_names[%d++] = argv[%d] = %s\n",
+ file_count, arg_pos, argv[arg_pos]);
+ file_names[file_count++] = argv[arg_pos];
+ }
+ } /* for */
+
+ /* make sure we have a language */
+ if( language == (LANGUAGE *) NULL )
+ {
+ fprintf(err_fp, "%s: missing -l option\n", ErrorHeader());
+ exit(0);
+ }
+
+ /* do the actual work */
+ if( raw_seen )
+ {
+ /* check that input and output files are open */
+ if( in_fp == NULL )
+ in_fp = stdin;
+ if( out_fp == NULL )
+ { fprintf(err_fp, "%s -r: missing -o option\n", ErrorHeader());
+ exit(1);
+ }
+
+ /* process the file */
+ SetupTokens(language, err_fp);
+ line_pos = 1;
+ curr_line[line_pos] = '\n'; /* forces line read */
+ line_num = 0;
+ NextChar(in_fp);
+ Process(language, in_fp, out_fp, err_fp, (TOKEN *) NULL);
+ }
+ else if( file_count > 0 )
+ {
+ int ch;
+ char *style_str, *font_str, *size_str, *line_str, *face_str;
+ char *tabin_str, *tabout_str;
+
+ /* sort out the options' values */
+ switch( style_option )
+ {
+
+ case FIXED_STYLE:
+
+ style_str = "fixed";
+ face_str = "Base";
+ font_str = font_option != NULL ? font_option : "Courier";
+ size_str = size_option != NULL ? size_option : "9p";
+ line_str = line_option != NULL ? line_option : "1.1fx";
+ tabin_str = tabin_option != NULL ? tabin_option : "8";
+ tabout_str = tabout_option != NULL ? tabout_option : "8s";
+ break;
+
+
+ case NO_STYLE:
+ case VARYING_STYLE:
+
+ style_str = "varying";
+ face_str = "Slope";
+ font_str = font_option != NULL ? font_option : "Times";
+ size_str = size_option != NULL ? size_option : "10p";
+ line_str = line_option != NULL ? line_option : "1.1fx";
+ tabin_str = tabin_option != NULL ? tabin_option : "8";
+ tabout_str = tabout_option != NULL ? tabout_option : "3f";
+ break;
+
+
+ case SYMBOL_STYLE:
+
+ style_str = "symbol";
+ face_str = "Slope";
+ font_str = font_option != NULL ? font_option : "Times";
+ size_str = size_option != NULL ? size_option : "10p";
+ line_str = line_option != NULL ? line_option : "1.1fx";
+ tabin_str = tabin_option != NULL ? tabin_option : "8";
+ tabout_str = tabout_option != NULL ? tabout_option : "3f";
+ break;
+
+
+ default:
+
+ fprintf(err_fp, "%s internal error in -p option\n", ErrorHeader());
+ abort();
+ break;
+ }
+
+ /* make sure we have an output file */
+ if( out_fp == (FILE *) NULL )
+ out_fp = stdout;
+
+ /* print the initial @Use clauses etc.*/
+ fprintf(out_fp, "%s%s\n", "@Sy", "sInclude { progf }");
+ fprintf(out_fp, "%s%s\n", "@Sy", "sInclude { doc }");
+ fprintf(out_fp, "@Use { @ProgSetup\n");
+ fprintf(out_fp, " language { %s }\n", language_option);
+ fprintf(out_fp, " style { %s }\n", style_str);
+ fprintf(out_fp, " %sfont { %s }\n", style_str, font_str);
+ fprintf(out_fp, " %ssize { %s }\n", style_str, size_str);
+ fprintf(out_fp, " %sline { %s }\n", style_str, line_str);
+ fprintf(out_fp, " %stabin { %s }\n", style_str, tabin_str);
+ fprintf(out_fp, " %stabout { %s }\n", style_str, tabout_str);
+ fprintf(out_fp, "}\n");
+ fprintf(out_fp, "@Document\n");
+ fprintf(out_fp, " @InitialFont { \"%s\" \"%s\" \"%s\" }\n",
+ font_str, face_str, size_str);
+ fprintf(out_fp, " @InitialBreak { lines \"%s\" nohyphen }\n", line_str);
+ fprintf(out_fp, "//\n");
+ fprintf(out_fp, "%s%s\n", "@Text @Be", "gin");
+
+ /* print each file, possibly with a header */
+ for( i = 0; i < file_count; i++ )
+ {
+ /* open file and initialize file position */
+ in_fp = fopen(file_names[i], "r");
+ if( in_fp == NULL )
+ { fprintf(err_fp, "%s: skipping input file %s (cannot open)\n",
+ ErrorHeader(), file_names[i]);
+ continue;
+ }
+ strcpy(file_name, file_names[i]);
+
+ /* print @NP if not first, and header if required */
+ if( i > 0 )
+ fprintf(out_fp, "\n\n@NP\n\n");
+ if( headers_option )
+ fprintf(out_fp, "{ Times Bold \"+3p\" } @Font \"%s\"\n@DP\n",
+ file_names[i]);
+
+ /* print file name and contents (don't format, let Lout call back) */
+ /* this string has been disguised so as not to fool progwlout! */
+ fprintf(out_fp, "%s%s%s\n", "@P", "rog @Be", "gin");
+ while( (ch = getc(in_fp)) != EOF )
+ putc(ch, out_fp);
+ fprintf(out_fp, "%s%s%s\n", "@E", "nd @P", "rog");
+ }
+
+ /* finish off whole input */
+ fprintf(out_fp, "%s%s%s\n", "@E", "nd @T", "ext");
+
+ }
+ exit(0);
+} /* end main */
diff --git a/software/lout.eiffel b/software/lout.eiffel
index 4e876fc..5247607 100644
--- a/software/lout.eiffel
+++ b/software/lout.eiffel
@@ -1,34 +1,8 @@
LOUT.EIFFEL - EIFFEL PROGRAM PRINTING IN LOUT DOCUMENTS (VERSION 1.1)
-This software allows you to print programs and program fragments
-from the Eiffel programming language with Lout. The typeset output
-conforms with the style guidelines in the standard reference (Eiffel:
-The Language, by Bertrand Meyer).
+The package known as lout.eiffel has now been folded into the main
+distribution. If you have Version 3.18 of Lout you can already
+format Eiffel.
-When installed, the only change you have to make is to replace the
-@SysInclude { doc } at the top of the document by @SysInclude { edoc },
-then enclose your Eiffel parts in @Eiffel { ... }.
-
-Lout.eiffel is distributed as follows:
-
- ftp://ftp.cs.su.oz.au/jeff/lout.eiffel.1.1.tar.gz
-
-In other words, in a gzipped tar file called "lout.eiffel.1.1.tar.gz"
-in the "jeff" subdirectory of the home directory of "ftp ftp.cs.su.oz.au"
-with login name "ftp" or "anonymous" using any non-empty password.
-The distribution contains
-
- * Source code for the eif2lout program
-
- * A manual entry for the eif2lout program
-
- * Six Lout library files (edoc, etc.)
-
- * A makefile and installation instructions (very easy)
-
-User documentation is contained in the Lout User's Guide distributed
-with Lout itself.
-
-Lout.eiffel was designed and implemented by Jeffrey H. Kingston
-(jeff@cs.su.oz.au) of the Basser Department of Computer Science at the
-University of Sydney.
+Jeff Kingston
+26 February 2000
diff --git a/whatsnew b/whatsnew
index bc2c774..82e2d1e 100644
--- a/whatsnew
+++ b/whatsnew
@@ -217,10 +217,24 @@ Changes and new features introduced in Version 3.17 [13 September 1999]
@Euro symbol added for getting a European Currency symbol
Document OBJECT struct declaration in externs.h (for gurus only)
+Changes and new features introduced in Version 3.18 [26 February 2000]
+
+ Bug fixes (more than usual, somehow)
+ New @CurrYUnit and @CurrZUnit symbols (expert users)
+ @Diag enhancement: node types, similar to row types in @Tbl
+ @Diag enhancement: new features for drawing syntax diagrams
+ Portuguese (thanks to Jose Roberto B. de A. Monteiro)
+ Slight change to @Tbl spec (affects aligned columns)
+ Replaced c2lout with prg2lout (computer program formatting)
+ @Outline symbol for printing words in outline rather than filled
+ A few extra @Eq symbols: filledcircle, small, trieq
+
Things that ought to be done but haven't been done yet
- pdfmark in PostScript output
+ PDF-like features in PostScript output
+ Various improvements/bug fixes for PDF output
Review Uwe's proposal for moving word row marks to the baseline
+ Running headers for tables [much more feasible than previously thought]
Jeff Kingston
-17 September 1999
+23 February 2000
diff --git a/z01.c b/z01.c
index 6338ae5..0d64479 100644
--- a/z01.c
+++ b/z01.c
@@ -1,7 +1,7 @@
/*@z01.c:Supervise:StartSym, AllowCrossDb, Encapsulated, etc.@****************/
/* */
-/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.17) */
-/* COPYRIGHT (C) 1991, 1999 Jeffrey H. Kingston */
+/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.18) */
+/* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */
/* */
/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */
/* Basser Department of Computer Science */
@@ -745,10 +745,13 @@ int main(int argc, char *argv[])
load(KW_UNDERLINE, UNDERLINE, FALSE, TRUE, FALSE, DEFAULT_PREC);
load(KW_COLOUR, COLOUR, TRUE, TRUE, FALSE, DEFAULT_PREC);
load(KW_COLOR, COLOUR, TRUE, TRUE, FALSE, DEFAULT_PREC);
+ load(KW_OUTLINE, OUTLINE, FALSE, TRUE, FALSE, DEFAULT_PREC);
load(KW_LANGUAGE, LANGUAGE, TRUE, TRUE, FALSE, DEFAULT_PREC);
load(KW_CURR_LANG, CURR_LANG, FALSE, FALSE, FALSE, DEFAULT_PREC);
load(KW_CURR_FAMILY, CURR_FAMILY, FALSE, FALSE, FALSE, DEFAULT_PREC);
load(KW_CURR_FACE, CURR_FACE, FALSE, FALSE, FALSE, DEFAULT_PREC);
+ load(KW_CURR_YUNIT, CURR_YUNIT, FALSE, FALSE, FALSE, DEFAULT_PREC);
+ load(KW_CURR_ZUNIT, CURR_ZUNIT, FALSE, FALSE, FALSE, DEFAULT_PREC);
load(KW_COMMON, COMMON, TRUE, TRUE, FALSE, DEFAULT_PREC);
load(KW_RUMP, RUMP, TRUE, TRUE, FALSE, DEFAULT_PREC);
load(KW_MELD, MELD, TRUE, TRUE, FALSE, DEFAULT_PREC);
diff --git a/z02.c b/z02.c
index ee4d644..2ccb67d 100644
--- a/z02.c
+++ b/z02.c
@@ -1,7 +1,7 @@
/*@z02.c:Lexical Analyser:Declarations@***************************************/
/* */
-/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.17) */
-/* COPYRIGHT (C) 1991, 1999 Jeffrey H. Kingston */
+/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.18) */
+/* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */
/* */
/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */
/* Basser Department of Computer Science */
@@ -841,6 +841,7 @@ FILE *fp; BOOLEAN end_stop; FILE_POS *err_pos; BOOLEAN lessskip;
case CSPACE:
case TAB:
+ case FORMFEED:
if( !skipping ) hold(*(p-1));
break;
@@ -861,7 +862,7 @@ FILE *fp; BOOLEAN end_stop; FILE_POS *err_pos; BOOLEAN lessskip;
if( fp == NULL )
Error(2, 22, "end of file reached while reading %s",
- FATAL, err_pos, lessskip ? KW_VERBATIM : KW_RAWVERBATIM);
+ FATAL, err_pos, lessskip ? KW_RAWVERBATIM : KW_VERBATIM);
else
Error(2, 17, "end of file reached while reading filter parameter",
FATAL, err_pos);
@@ -945,6 +946,7 @@ FILE *fp; BOOLEAN end_stop; FILE_POS *err_pos; BOOLEAN lessskip;
default:
+ Error(2, 22, "unreadable character (octal %o)",INTERN,&file_pos,*(p-1));
assert(FALSE, "LexScanVerbatim: bad chtbl[]");
break;
diff --git a/z03.c b/z03.c
index 80b2af3..a834a8b 100644
--- a/z03.c
+++ b/z03.c
@@ -1,7 +1,7 @@
/*@z03.c:File Service:Declarations, no_fpos@******************************** */
/* */
-/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.17) */
-/* COPYRIGHT (C) 1991, 1999 Jeffrey H. Kingston */
+/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.18) */
+/* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */
/* */
/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */
/* Basser Department of Computer Science */
diff --git a/z04.c b/z04.c
index fae1267..e6ccb88 100644
--- a/z04.c
+++ b/z04.c
@@ -1,7 +1,7 @@
/*@z04.c:Token Service:NewToken(), CopyTokenList()@***************************/
/* */
-/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.17) */
-/* COPYRIGHT (C) 1991, 1999 Jeffrey H. Kingston */
+/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.18) */
+/* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */
/* */
/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */
/* Basser Department of Computer Science */
@@ -191,10 +191,13 @@ FULL_CHAR *EchoToken(OBJECT x)
case BREAK:
case UNDERLINE:
case COLOUR:
+ case OUTLINE:
case LANGUAGE:
case CURR_LANG:
case CURR_FAMILY:
case CURR_FACE:
+ case CURR_YUNIT:
+ case CURR_ZUNIT:
case COMMON:
case RUMP:
case MELD:
diff --git a/z05.c b/z05.c
index 0e346b2..2858006 100644
--- a/z05.c
+++ b/z05.c
@@ -1,7 +1,7 @@
/*@z05.c:Read Definitions:ReadFontDef()@**************************************/
/* */
-/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.17) */
-/* COPYRIGHT (C) 1991, 1999 Jeffrey H. Kingston */
+/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.18) */
+/* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */
/* */
/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */
/* Basser Department of Computer Science */
@@ -283,10 +283,13 @@ static void ReadTokenList(OBJECT token, OBJECT res)
case BREAK:
case UNDERLINE:
case COLOUR:
+ case OUTLINE:
case LANGUAGE:
case CURR_LANG:
case CURR_FAMILY:
case CURR_FACE:
+ case CURR_YUNIT:
+ case CURR_ZUNIT:
case COMMON:
case RUMP:
case MELD:
diff --git a/z06.c b/z06.c
index b725399..a8da7af 100644
--- a/z06.c
+++ b/z06.c
@@ -1,7 +1,7 @@
/*@z06.c:Parser:PushObj(), PushToken(), etc.@*********************************/
/* */
-/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.17) */
-/* COPYRIGHT (C) 1991, 1999 Jeffrey H. Kingston */
+/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.18) */
+/* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */
/* */
/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */
/* Basser Department of Computer Science */
@@ -434,10 +434,13 @@ static BOOLEAN Reduce(void)
case BREAK:
case UNDERLINE:
case COLOUR:
+ case OUTLINE:
case LANGUAGE:
case CURR_LANG:
case CURR_FAMILY:
case CURR_FACE:
+ case CURR_YUNIT:
+ case CURR_ZUNIT:
case COMMON:
case RUMP:
case MELD:
@@ -476,9 +479,9 @@ static BOOLEAN Reduce(void)
if( has_lpar(actual(op)) )
{ s1 = PopObj();
Link(Down(op), s1);
- }
- if( type(s1) == BACKEND )
- { op = OptimizeCase(op);
+ if( type(s1) == BACKEND )
+ { op = OptimizeCase(op);
+ }
}
PushObj(op);
break;
@@ -1011,10 +1014,13 @@ BOOLEAN defs_allowed, BOOLEAN transfer_allowed)
case BREAK:
case UNDERLINE:
case COLOUR:
+ case OUTLINE:
case LANGUAGE:
case CURR_LANG:
case CURR_FAMILY:
case CURR_FACE:
+ case CURR_YUNIT:
+ case CURR_ZUNIT:
case COMMON:
case RUMP:
case MELD:
diff --git a/z07.c b/z07.c
index c6e89a7..6043127 100644
--- a/z07.c
+++ b/z07.c
@@ -1,7 +1,7 @@
/*@z07.c:Object Service:SplitIsDefinite(), DisposeObject()@*******************/
/* */
-/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.17) */
-/* COPYRIGHT (C) 1991, 1999 Jeffrey H. Kingston */
+/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.18) */
+/* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */
/* */
/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */
/* Basser Department of Computer Science */
@@ -218,10 +218,13 @@ OBJECT CopyObject(OBJECT x, FILE_POS *pos)
case BREAK:
case UNDERLINE:
case COLOUR:
+ case OUTLINE:
case LANGUAGE:
case CURR_LANG:
case CURR_FAMILY:
case CURR_FACE:
+ case CURR_YUNIT:
+ case CURR_ZUNIT:
case COMMON:
case RUMP:
case MELD:
@@ -296,6 +299,7 @@ OBJECT CopyObject(OBJECT x, FILE_POS *pos)
default:
assert1(FALSE, "CopyObject:", Image(type(x)));
+ res = nilobj;
break;
} /* end switch */
diff --git a/z08.c b/z08.c
index 89afcbe..ddc431e 100644
--- a/z08.c
+++ b/z08.c
@@ -1,7 +1,7 @@
/*@z08.c:Object Manifest:ReplaceWithSplit()@**********************************/
/* */
-/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.17) */
-/* COPYRIGHT (C) 1991, 1999 Jeffrey H. Kingston */
+/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.18) */
+/* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */
/* */
/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */
/* Basser Department of Computer Science */
@@ -626,6 +626,7 @@ OBJECT *enclose, BOOLEAN fcr)
x = *enclose;
*enclose = nilobj;
debug1(DHY, DD, " Manifest/enclose: %s", EchoObject(x));
+ debug1(DOM, DD, " Manifest/enclose: %s", EchoObject(x));
x = Manifest(x, env, style, bthr, fthr, target, crs, ok, FALSE, enclose, fcr);
debug0(DOM, DD, " ] returning from manifesting closure (enclose)");
return x;
@@ -870,7 +871,7 @@ OBJECT *enclose, BOOLEAN fcr)
/* UNDER_UNDEF. */
/* */
/*****************************************************************************/
-#define MAX_DEPTH 500
+#define MAX_DEPTH 1000
OBJECT Manifest(OBJECT x, OBJECT env, STYLE *style, OBJECT bthr[2],
OBJECT fthr[2], OBJECT *target, OBJECT *crs, BOOLEAN ok, BOOLEAN need_expand,
@@ -1001,6 +1002,7 @@ OBJECT *enclose, BOOLEAN fcr)
if( !ok || *crs == nilobj )
{ word_font(x) = font(*style);
word_colour(x) = colour(*style);
+ word_outline(x) = outline(*style);
word_language(x) = language(*style);
word_hyph(x) = hyph_style(*style) == HYPH_ON;
debug3(DOM, DDD, " manfifest/WORD underline() := %s for %s %s",
@@ -1032,6 +1034,7 @@ OBJECT *enclose, BOOLEAN fcr)
if( is_word(type(y)) )
{ word_font(y) = font(*style);
word_colour(y) = colour(*style);
+ word_outline(y) = outline(*style);
word_language(y) = language(*style);
word_hyph(y) = hyph_style(*style) == HYPH_ON;
if( small_caps(*style) && ok ) y = MapSmallCaps(y, style);
@@ -1068,6 +1071,7 @@ OBJECT *enclose, BOOLEAN fcr)
if( is_word(type(y)) )
{ word_font(y) = font(*style);
word_colour(y) = colour(*style);
+ word_outline(y) = outline(*style);
word_language(y) = language(*style);
word_hyph(y) = hyph_style(*style) == HYPH_ON;
if( small_caps(*style) && ok ) y = MapSmallCaps(y, style);
@@ -1198,6 +1202,7 @@ OBJECT *enclose, BOOLEAN fcr)
prev != nilobj && is_word(type(prev)) && !mark(gap(g)) &&
word_font(prev) == word_font(y) &&
word_colour(prev) == word_colour(y) &&
+ word_outline(prev) == word_outline(y) &&
word_language(prev) == word_language(y) )
/* no need to compare underline() since both are false */
{ unsigned typ;
@@ -1211,6 +1216,7 @@ OBJECT *enclose, BOOLEAN fcr)
y = MakeWordTwo(typ, string(prev), string(y), &fpos(prev));
word_font(y) = word_font(prev);
word_colour(y) = word_colour(prev);
+ word_outline(y) = word_outline(prev);
word_language(y) = word_language(prev);
word_hyph(y) = word_hyph(prev);
underline(y) = UNDER_OFF;
@@ -1275,6 +1281,7 @@ OBJECT *enclose, BOOLEAN fcr)
{ z = MakeWord(WORD, STR_EMPTY, &fpos(g));
word_font(z) = font(*style);
word_colour(z) = colour(*style);
+ word_outline(z) = outline(*style);
word_language(z) = language(*style);
word_hyph(z) = hyph_style(*style) == HYPH_ON;
underline(z) = UNDER_OFF;
@@ -1583,6 +1590,22 @@ OBJECT *enclose, BOOLEAN fcr)
break;
+ case CURR_YUNIT:
+ case CURR_ZUNIT:
+
+ { FULL_CHAR buff[20];
+ if( type(x) == CURR_YUNIT )
+ sprintf( (char *) buff, "%dp", yunit(*style) / PT);
+ else
+ sprintf( (char *) buff, "%dp", zunit(*style) / PT);
+ res = MakeWord(WORD, buff, &fpos(x));
+ }
+ ReplaceNode(res, x);
+ DisposeObject(x);
+ x = Manifest(res, env, style, bthr, fthr, target, crs, ok, FALSE, enclose, fcr);
+ break;
+
+
case FONT:
case SPACE:
case YUNIT:
@@ -1628,12 +1651,14 @@ OBJECT *enclose, BOOLEAN fcr)
break;
+ case OUTLINE:
case PADJUST:
case HADJUST:
case VADJUST:
StyleCopy(new_style, *style);
- if( type(x) == VADJUST ) vadjust(new_style) = TRUE;
+ if( type(x) == OUTLINE ) outline(new_style) = TRUE;
+ else if( type(x) == VADJUST ) vadjust(new_style) = TRUE;
else if( type(x) == HADJUST ) hadjust(new_style) = TRUE;
else padjust(new_style) = TRUE;
Child(y, Down(x));
@@ -1652,8 +1677,9 @@ OBJECT *enclose, BOOLEAN fcr)
padjust(*style) = FALSE;
StyleCopy(save_style(x), *style);
Child(y, Down(x));
- y = Manifest(y, env, style, bthr, fthr, target, crs, ok, FALSE, enclose, fcr);
+ y = Manifest(y, env, style, nbt, nft, target, crs, ok, FALSE, enclose, fcr);
SetUnderline(x);
+ ReplaceWithSplit(x, bthr, fthr);
break;
diff --git a/z09.c b/z09.c
index 6801dd8..34584f1 100644
--- a/z09.c
+++ b/z09.c
@@ -1,7 +1,7 @@
/*@z09.c:Closure Expansion:SearchEnv()@***************************************/
/* */
-/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.17) */
-/* COPYRIGHT (C) 1991, 1999 Jeffrey H. Kingston */
+/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.18) */
+/* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */
/* */
/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */
/* Basser Department of Computer Science */
@@ -180,12 +180,12 @@ OBJECT *crs, OBJECT *res_env)
if( type(par) == PAR && actual(par) == actual(x) )
{ assert( Down(par) != par, "ExpandCLosure: Down(par)!");
Child(res, Down(par));
- if( dirty(enclosing(actual(par))) )
- { debug2(DSU, DD, "c %s %s", SymName(actual(par)), EchoObject(res));
+ if( dirty(enclosing(actual(par))) || is_enclose(actual(par)) )
+ { debug2(DCE, DD, "copy %s %s", SymName(actual(par)), EchoObject(res));
res = CopyObject(res, no_fpos);
}
else
- { debug2(DCE, DDD, "l %s %s",
+ { debug2(DCE, DD, "link %s %s",
FullSymName(actual(par), AsciiToFull(".")), EchoObject(res));
DeleteLink(Down(par));
y = MakeWord(WORD, STR_NOCROSS, &fpos(res));
diff --git a/z10.c b/z10.c
index a6d052b..4865a63 100644
--- a/z10.c
+++ b/z10.c
@@ -1,7 +1,7 @@
/*@z10.c:Cross References:CrossInit(), CrossMake()@***************************/
/* */
-/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.17) */
-/* COPYRIGHT (C) 1991, 1999 Jeffrey H. Kingston */
+/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.18) */
+/* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */
/* */
/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */
/* Basser Department of Computer Science */
diff --git a/z11.c b/z11.c
index 21591d9..135f5b0 100644
--- a/z11.c
+++ b/z11.c
@@ -1,7 +1,7 @@
/*@z11.c:Style Service:EchoStyle()@*******************************************/
/* */
-/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.17) */
-/* COPYRIGHT (C) 1991, 1999 Jeffrey H. Kingston */
+/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.18) */
+/* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */
/* */
/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */
/* Basser Department of Computer Science */
diff --git a/z12.c b/z12.c
index 2f2c551..7f36359 100644
--- a/z12.c
+++ b/z12.c
@@ -1,7 +1,7 @@
/*@z12.c:Size Finder:MinSize()@***********************************************/
/* */
-/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.17) */
-/* COPYRIGHT (C) 1991, 1999 Jeffrey H. Kingston */
+/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.18) */
+/* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */
/* */
/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */
/* Basser Department of Computer Science */
@@ -322,7 +322,7 @@ void SpannerAvailableSpace(OBJECT y, int dim, FULL_LENGTH *resb,
OBJECT MinSize(OBJECT x, int dim, OBJECT *extras)
{ OBJECT y, z, link, prev, t, g, full_name;
- FULL_LENGTH b, f, dble_fwd, llx, lly, urx, ury; int status;
+ FULL_LENGTH b, f, dble_fwd, llx, lly, urx, ury; int status, read_status;
float fllx, flly, furx, fury;
BOOLEAN dble_found, found, will_expand, first_line, cp;
FILE *fp; FULL_CHAR buff[MAX_BUFF];
@@ -842,6 +842,7 @@ OBJECT MinSize(OBJECT x, int dim, OBJECT *extras)
mode(gap(g)) == EDGE_MODE && !mark(gap(g)) &&
word_font(prev) == word_font(y) &&
word_colour(prev) == word_colour(y) &&
+ word_outline(prev) == word_outline(y) &&
word_language(prev) == word_language(y) &&
underline(prev) == underline(y) &&
NextDown(NextDown(Up(prev))) == link
@@ -858,6 +859,7 @@ OBJECT MinSize(OBJECT x, int dim, OBJECT *extras)
y = MakeWordTwo(typ, string(prev), string(y), &fpos(prev));
word_font(y) = word_font(prev);
word_colour(y) = word_colour(prev);
+ word_outline(y) = word_outline(prev);
word_language(y) = word_language(prev);
word_hyph(y) = word_hyph(prev);
underline(y) = underline(prev);
@@ -1123,8 +1125,17 @@ OBJECT MinSize(OBJECT x, int dim, OBJECT *extras)
fp = OpenIncGraphicFile(string(y), type(x), &full_name, &fpos(y), &cp);
if( fp == NULL ) status = IG_NOFILE;
first_line = TRUE;
+ /* ***
while( status == IG_LOOKING && StringFGets(buff, MAX_BUFF, fp) != NULL )
+ *** */
+ while( status == IG_LOOKING )
{
+ read_status = fscanf(fp, "%[^\n\r]%*c", (char *) buff);
+ if( read_status == 0 || read_status == EOF )
+ {
+ /* end of input and no luck */
+ break;
+ }
if( first_line && !StringBeginsWith(buff, AsciiToFull("%!")) )
status = IG_BADFILE;
else
diff --git a/z13.c b/z13.c
index 62b71d7..59e6c18 100644
--- a/z13.c
+++ b/z13.c
@@ -1,7 +1,7 @@
/*@z13.c:Object Breaking:BreakJoinedGroup()@**********************************/
/* */
-/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.17) */
-/* COPYRIGHT (C) 1991, 1999 Jeffrey H. Kingston */
+/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.18) */
+/* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */
/* */
/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */
/* Basser Department of Computer Science */
@@ -437,8 +437,9 @@ static OBJECT BreakTable(OBJECT x, CONSTRAINT *c)
OBJECT BreakObject(OBJECT x, CONSTRAINT *c)
{ OBJECT link, y; CONSTRAINT yc; FULL_LENGTH f; BOOLEAN junk;
- debug3(DOB, DD, "[ BreakObject(x (%s,%s), %s), x =",
- EchoLength(back(x, COLM)), EchoLength(fwd(x, COLM)), EchoConstraint(c));
+ debug4(DOB, DD, "[ BreakObject(%s (%s,%s), %s), x =",
+ Image(type(x)), EchoLength(back(x, COLM)), EchoLength(fwd(x, COLM)),
+ EchoConstraint(c));
ifdebug(DOB, DD, DebugObject(x));
/* if constraint is negative (should really be never), replace with empty */
@@ -528,6 +529,7 @@ OBJECT BreakObject(OBJECT x, CONSTRAINT *c)
small_caps(save_style(y)) = FALSE;
font(save_style(y)) = word_font(x);
colour(save_style(y)) = word_colour(x);
+ outline(save_style(y)) = word_outline(x);
language(save_style(y)) = word_language(x);
debug3(DOF, DD, " in BreakObject y %s %s %s",
EchoStyle(&save_style(y)), Image(type(y)), EchoObject(y));
diff --git a/z14.c b/z14.c
index 2fde585..c148755 100644
--- a/z14.c
+++ b/z14.c
@@ -1,7 +1,7 @@
/*@z14.c:Fill Service:Declarations@*******************************************/
/* */
-/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.17) */
-/* COPYRIGHT (C) 1991, 1999 Jeffrey H. Kingston */
+/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.18) */
+/* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */
/* */
/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */
/* Basser Department of Computer Science */
@@ -220,6 +220,7 @@ typedef struct {
{ hyph_word = MakeWord(WORD, STR_HYPHEN, &fpos(x)); \
word_font(hyph_word) = 0; \
word_colour(hyph_word) = colour(save_style(x)); \
+ word_outline(hyph_word) = outline(save_style(x)); \
word_language(hyph_word) = language(save_style(x)); \
word_hyph(hyph_word) = hyph_style(save_style(x))==HYPH_ON; \
} \
@@ -549,6 +550,7 @@ OBJECT FillObject(OBJECT x, CONSTRAINT *c, OBJECT multi, BOOLEAN can_hyphenate,
res = MakeWord(WORD, STR_EMPTY, &fpos(x));
word_font(res) = font(save_style(x));
word_colour(res) = colour(save_style(x));
+ word_outline(res) = outline(save_style(x));
word_language(res) = language(save_style(x));
word_hyph(res) = hyph_style(save_style(x)) == HYPH_ON;
back(res, COLM) = fwd(res, COLM) = 0;
@@ -568,6 +570,7 @@ OBJECT FillObject(OBJECT x, CONSTRAINT *c, OBJECT multi, BOOLEAN can_hyphenate,
back(tmp, COLM) = fwd(tmp, COLM) = back(tmp, ROWM) = fwd(tmp, ROWM) = 0;
word_font(tmp) = 0;
word_colour(tmp) = 0;
+ word_outline(tmp) = 0;
word_language(tmp) = 0;
word_hyph(tmp) = 0;
underline(tmp) = UNDER_OFF;
@@ -686,7 +689,17 @@ OBJECT FillObject(OBJECT x, CONSTRAINT *c, OBJECT multi, BOOLEAN can_hyphenate,
}
);
- if( I.llink == x )
+ if( can_hyphenate && IntervalBadness(BestI) > HYPH_BAD )
+ {
+ /* the result is bad enough to justify the cost of a second attempt, */
+ /* with hyphenation turned on this time */
+ x = Hyphenate(x);
+ can_hyphenate = FALSE;
+ hyph_allowed = TRUE;
+ *hyph_used = TRUE;
+ goto RESTART;
+ }
+ else if( I.llink == x )
{ /* The result has only one line. Since the line did not fit initially, */
/* this must mean either that a large word was discarded or else that */
/* the line was only slightly tight */
@@ -701,13 +714,6 @@ OBJECT FillObject(OBJECT x, CONSTRAINT *c, OBJECT multi, BOOLEAN can_hyphenate,
Link(res, x);
}
}
- else if( can_hyphenate && IntervalBadness(BestI) > HYPH_BAD )
- { x = Hyphenate(x);
- can_hyphenate = FALSE;
- hyph_allowed = TRUE;
- *hyph_used = TRUE;
- goto RESTART;
- }
else
{ OBJECT lgap, llink;
New(res, VCAT);
@@ -738,6 +744,7 @@ OBJECT FillObject(OBJECT x, CONSTRAINT *c, OBJECT multi, BOOLEAN can_hyphenate,
back(t1, COLM) = fwd(t1, COLM) = back(t1, ROWM) = fwd(t1, ROWM) = 0;
word_font(t1) = 0;
word_colour(t1) = 0;
+ word_outline(t1) = 0;
word_language(t1) = 0;
word_hyph(t1) = 0;
underline(t1) = UNDER_OFF;
@@ -778,6 +785,7 @@ OBJECT FillObject(OBJECT x, CONSTRAINT *c, OBJECT multi, BOOLEAN can_hyphenate,
z = MakeWord(WORD, STR_HYPHEN, &fpos(y));
word_font(z) = font(save_style(x));
word_colour(z) = colour(save_style(x));
+ word_outline(z) = outline(save_style(x));
word_language(z) = language(save_style(x));
word_hyph(z) = hyph_style(save_style(x)) == HYPH_ON;
underline(z) = under;
@@ -872,6 +880,7 @@ OBJECT FillObject(OBJECT x, CONSTRAINT *c, OBJECT multi, BOOLEAN can_hyphenate,
if( is_word(type(prev)) && is_word(type(next)) &&
word_font(prev) == word_font(next) &&
word_colour(prev) == word_colour(next) &&
+ word_outline(prev) == word_outline(next) &&
word_language(prev) == word_language(next) &&
underline(prev) == underline(next) )
{
@@ -881,6 +890,7 @@ OBJECT FillObject(OBJECT x, CONSTRAINT *c, OBJECT multi, BOOLEAN can_hyphenate,
tmp = MakeWordTwo(typ, string(prev), string(next), &fpos(prev));
word_font(tmp) = word_font(prev);
word_colour(tmp) = word_colour(prev);
+ word_outline(tmp) = word_outline(prev);
word_language(tmp) = word_language(prev);
word_hyph(tmp) = word_hyph(prev);
FontWordSize(tmp);
diff --git a/z15.c b/z15.c
index cf25102..a2bdedf 100644
--- a/z15.c
+++ b/z15.c
@@ -1,7 +1,7 @@
/*@z15.c:Size Constraints:MinConstraint(), EnlargeToConstraint()@*************/
/* */
-/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.17) */
-/* COPYRIGHT (C) 1991, 1999 Jeffrey H. Kingston */
+/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.18) */
+/* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */
/* */
/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */
/* Basser Department of Computer Science */
diff --git a/z16.c b/z16.c
index d9984b0..55c705d 100644
--- a/z16.c
+++ b/z16.c
@@ -1,7 +1,7 @@
/*@z16.c:Size Adjustment:SetNeighbours(), CatAdjustSize()@********************/
/* */
-/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.17) */
-/* COPYRIGHT (C) 1991, 1999 Jeffrey H. Kingston */
+/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.18) */
+/* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */
/* */
/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */
/* Basser Department of Computer Science */
diff --git a/z17.c b/z17.c
index f57c92b..0338f29 100644
--- a/z17.c
+++ b/z17.c
@@ -1,7 +1,7 @@
/*@z17.c:Gap Widths:GetGap()@*************************************************/
/* */
-/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.17) */
-/* COPYRIGHT (C) 1991, 1999 Jeffrey H. Kingston */
+/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.18) */
+/* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */
/* */
/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */
/* Basser Department of Computer Science */
@@ -68,7 +68,7 @@ void GetGap(OBJECT x, STYLE *style, GAP *res_gap, unsigned *res_inc)
/* make sure we have a WORD or QWORD argument */
if( !is_word(type(x)) )
{ Error(17, 1, "gap is not a simple word", WARN, &fpos(x));
- debug1(DGW, DD, "GetGap failing (type(x) = %s)", Image(type(x)));
+ debug1(DGW, DD, "GetGap failing (x = %s)", EchoObject(x));
return;
}
str = string(x);
@@ -369,11 +369,11 @@ FULL_LENGTH ActualGap(FULL_LENGTH prevf, FULL_LENGTH b, FULL_LENGTH f,
#if DEBUG_ON
FULL_CHAR *EchoGap(GAP *xgap)
-{ char *letter = "?ehxokt"; char c; FULL_CHAR *res;
+{ char *letter = "?ehxoktH"; char c; FULL_CHAR *res;
char *u;
static int i = 0;
static char buff[3][20];
- assert( mode(*xgap) <= 6, "EchoGap: mode(*xgap)" );
+ c = mode(*xgap) <= 7 ? letter[mode(*xgap)] : '?';
c = letter[mode(*xgap)];
u = nobreak(*xgap) ? "u" : "";
switch( units(*xgap) )
diff --git a/z18.c b/z18.c
index 05e32cd..036cfae 100644
--- a/z18.c
+++ b/z18.c
@@ -1,7 +1,7 @@
/*@z18.c:Galley Transfer:Declarations@****************************************/
/* */
-/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.17) */
-/* COPYRIGHT (C) 1991, 1999 Jeffrey H. Kingston */
+/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.18) */
+/* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */
/* */
/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */
/* Basser Department of Computer Science */
@@ -80,6 +80,7 @@ void TransferInit(OBJECT InitEnv)
small_caps(InitialStyle) = SMALL_CAPS_OFF;
font(InitialStyle) = 0; /* i.e. undefined */
colour(InitialStyle) = 0; /* i.e. undefined */
+ outline(InitialStyle) = FALSE; /* i.e. not outlined */
language(InitialStyle) = 0; /* i.e. undefined */
yunit(InitialStyle) = 0; /* i.e. zero */
zunit(InitialStyle) = 0; /* i.e. zero */
diff --git a/z19.c b/z19.c
index 37b35de..23d3a08 100644
--- a/z19.c
+++ b/z19.c
@@ -1,7 +1,7 @@
/*@z19.c:Galley Attaching:DetachGalley()@*************************************/
/* */
-/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.17) */
-/* COPYRIGHT (C) 1991, 1999 Jeffrey H. Kingston */
+/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.18) */
+/* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */
/* */
/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */
/* Basser Department of Computer Science */
diff --git a/z20.c b/z20.c
index 405599a..f563a33 100644
--- a/z20.c
+++ b/z20.c
@@ -1,7 +1,7 @@
/*@z20.c:Galley Flushing:DebugInnersNames()@**********************************/
/* */
-/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.17) */
-/* COPYRIGHT (C) 1991, 1999 Jeffrey H. Kingston */
+/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.18) */
+/* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */
/* */
/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */
/* Basser Department of Computer Science */
diff --git a/z21.c b/z21.c
index f0b38b8..cb565af 100644
--- a/z21.c
+++ b/z21.c
@@ -1,7 +1,7 @@
/*@z21.c:Galley Maker:SizeGalley()@*******************************************/
/* */
-/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.17) */
-/* COPYRIGHT (C) 1991, 1999 Jeffrey H. Kingston */
+/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.18) */
+/* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */
/* */
/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */
/* Basser Department of Computer Science */
@@ -289,6 +289,7 @@ OBJECT *dest_index, OBJECT *recs, OBJECT *inners, OBJECT enclose)
back(tmp, COLM) = fwd(tmp, COLM) = 0;
back(tmp, ROWM) = fwd(tmp, ROWM) = 0;
word_font(tmp) = word_colour(tmp) = word_language(tmp) = 0;
+ word_outline(tmp) = FALSE;
word_hyph(tmp) = FALSE;
ReplaceNode(tmp, t);
DisposeObject(t);
diff --git a/z22.c b/z22.c
index cbb6801..09090fe 100644
--- a/z22.c
+++ b/z22.c
@@ -1,7 +1,7 @@
/*@z22.c:Galley Service:Interpose()@******************************************/
/* */
-/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.17) */
-/* COPYRIGHT (C) 1991, 1999 Jeffrey H. Kingston */
+/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.18) */
+/* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */
/* */
/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */
/* Basser Department of Computer Science */
@@ -461,6 +461,7 @@ void Promote(OBJECT hd, OBJECT stop_link, OBJECT dest_index, BOOLEAN join_after)
fwd(last, COLM) = fwd(y, gall_dir(hd));
word_font(last) = word_font(y);
word_colour(last) = word_colour(y);
+ word_outline(last) = word_outline(y);
word_language(last) = word_language(y);
word_hyph(last) = word_hyph(y);
Link(opt_components(hd), last);
diff --git a/z23.c b/z23.c
index 9b2a4d2..2cf04bc 100644
--- a/z23.c
+++ b/z23.c
@@ -1,7 +1,7 @@
/*@z23.c:Galley Printer:ScaleFactor()@****************************************/
/* */
-/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.17) */
-/* COPYRIGHT (C) 1991, 1999 Jeffrey H. Kingston */
+/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.18) */
+/* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */
/* */
/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */
/* Basser Department of Computer Science */
@@ -668,6 +668,10 @@ void FixAndPrintObject(OBJECT x, FULL_LENGTH xmk, FULL_LENGTH xb,
if( (type(x) == VCAT) == (dim == ROWM) )
{
+ debug6(DGP, DD, "[ FAPO-CAT %s (%s,%s): xmk %s, xb %s, xf %s",
+ Image(type(x)), EchoLength(back(x, dim)), EchoLength(fwd(x, dim)),
+ EchoLength(xmk), EchoLength(xb), EchoLength(xf));
+
FirstDefinite(x, link, prev, jn);
if( link != x )
{
@@ -699,10 +703,6 @@ void FixAndPrintObject(OBJECT x, FULL_LENGTH xmk, FULL_LENGTH xb,
inc = FindAdjustIncrement(x, frame_size, dim);
else inc = 0;
- debug6(DGP, DD, "[ FAPO-CAT %s (%s,%s): xmk %s, xb %s, xf %s",
- Image(type(x)), EchoLength(back(x, dim)), EchoLength(fwd(x, dim)),
- EchoLength(xmk), EchoLength(xb), EchoLength(xf));
-
mk = back_edge + back(prev, dim);
debug4(DGP, DD, " FAPO-CAT back_edge %s, mk %s, framesize %s, inc %s",
EchoLength(back_edge), EchoLength(mk), EchoLength(frame_size),
diff --git a/z24.c b/z24.c
index a5aa145..cdfd62f 100644
--- a/z24.c
+++ b/z24.c
@@ -1,7 +1,7 @@
/*@z24.c:Print Service:PrintInit()@*******************************************/
/* */
-/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.17) */
-/* COPYRIGHT (C) 1991, 1999 Jeffrey H. Kingston */
+/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.18) */
+/* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */
/* */
/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */
/* Basser Department of Computer Science */
@@ -174,6 +174,61 @@ If you are trying to compile this you have the wrong CHAR_OUT value!
#endif
};
+/*****************************************************************************/
+/* */
+/* char *MediaName(int h, int v) */
+/* */
+/* Return the PostScript MediaName attribute appropriate to a page of */
+/* width h and height v. */
+/* */
+/* Communicated by Valeriy E. Ushakov, who wrote: */
+/* */
+/* "Attached is a patch to recognize known paper sizes and emit them as */
+/* media name in DocumentMedia comment. GhostView and other PostScript */
+/* viewers recognize these names and display them to the user. Thus user */
+/* knows what paper size document uses without having to know the magic */
+/* numbers." */
+/* */
+/*****************************************************************************/
+
+static const char *MediaName(int h, int v)
+{
+ struct paper {
+ const char *name;
+ FULL_LENGTH width, height;
+ };
+
+ /* names for known paper sizes */
+ static const struct paper paper_map[] = {
+ { "Letter", 612*PT, 792*PT },
+ { "Tabloid", 792*PT, 1224*PT },
+ { "Ledger", 1224*PT, 792*PT },
+ { "Legal", 612*PT, 1008*PT },
+ { "Statement", 396*PT, 612*PT },
+ { "Executive", 540*PT, 720*PT },
+ { "A3", 842*PT, 1190*PT },
+ { "A4", 595*PT, 842*PT },
+ { "A5", 420*PT, 595*PT },
+ { "B4", 729*PT, 1032*PT },
+ { "B5", 516*PT, 729*PT },
+ { "Folio", 612*PT, 936*PT },
+ { "Quarto", 610*PT, 780*PT },
+ { "10x14", 720*PT, 1008*PT },
+ { NULL, 0, 0 }
+ };
+
+ /* default media name */
+ static const char *user_defined = "Plain";
+
+ const struct paper *p;
+ for (p = paper_map; p->name; ++p) {
+ if ((h == p->width) && (v == p->height)) {
+ return p->name;
+ }
+ }
+ return user_defined;
+}
+
/*****************************************************************************/
/* */
@@ -267,8 +322,10 @@ void PrintBeforeFirst(FULL_LENGTH h, FULL_LENGTH v, FULL_CHAR *label)
fprintf(out_fp, "%%%%CreationDate: %s", TimeString());
fprintf(out_fp, "%%%%DocumentData: Binary\n");
fprintf(out_fp, "%%%%DocumentNeededResources: (atend)\n");
- fprintf(out_fp, "%%%%DocumentMedia: Plain %d %d 0 white ()\n", h/PT, v/PT);
fprintf(out_fp, "%%%%DocumentSuppliedResources: (atend)\n");
+ fprintf(out_fp, "%%%%DocumentMedia: %s %d %d 0 white ()\n",
+ MediaName(h, v), h/PT, v/PT);
+ fprintf(out_fp, "%%%%PageOrder: Ascend\n");
fprintf(out_fp, "%%%%Pages: (atend)\n");
fprintf(out_fp, "%%%%BoundingBox: 0 0 %d %d\n", h/PT, v/PT);
fprintf(out_fp, "%%%%EndComments\n\n");
@@ -277,8 +334,11 @@ void PrintBeforeFirst(FULL_LENGTH h, FULL_LENGTH v, FULL_CHAR *label)
fprintf(out_fp, "%%%%BeginProlog\n");
fprintf(out_fp, "%%%%BeginResource: procset %s\n", StartUpResource);
fprintf(out_fp, "/m { 3 1 roll moveto show } bind def\n");
+ fprintf(out_fp, "/mo { 3 1 roll moveto true charpath stroke } bind def\n");
fprintf(out_fp, "/s { exch currentpoint exch pop moveto show } bind def\n");
+ fprintf(out_fp, "/so { exch currentpoint exch pop moveto true charpath stroke } bind def\n");
fprintf(out_fp, "/k { exch neg 0 rmoveto show } bind def\n");
+ fprintf(out_fp, "/ko { exch neg 0 rmoveto true charpath stroke } bind def\n");
fprintf(out_fp, "/ul { gsave setlinewidth dup 3 1 roll\n");
fprintf(out_fp, " moveto lineto stroke grestore } bind def\n");
fprintf(out_fp, "/in { %d mul } def\n", IN);
@@ -554,10 +614,11 @@ void PrintBetween(FULL_LENGTH h, FULL_LENGTH v, FULL_CHAR *label)
void PrintWord(OBJECT x, int hpos, int vpos)
{ FULL_CHAR *p, *q, *a, *b, *lig, *unacc;
- int i, h, v, ksize; char command; MAPPING m;
+ int i, h, v, ksize; char *command; MAPPING m;
- debug5(DGP, DD, "PrintWord( %s, %d, %d ) font %d colour %d", string(x),
- hpos, vpos, word_font(x), word_colour(x));
+ debug6(DGP, DD, "PrintWord( %s, %d, %d ) font %d colour %d%s", string(x),
+ hpos, vpos, word_font(x), word_colour(x),
+ word_outline(x) ? " outline" : "");
TotalWordCount++;
switch( BackEnd )
@@ -618,14 +679,14 @@ void PrintWord(OBJECT x, int hpos, int vpos)
vpos = vpos - currentxheight2;
if( cpexists && currenty == vpos )
{ printnum(hpos, out_fp);
- command = 's';
+ command = word_outline(x) ? "so" : "s";
}
else
{ currenty = vpos;
printnum(hpos, out_fp);
fputs(" ", out_fp);
printnum(currenty, out_fp);
- command = 'm';
+ command = word_outline(x) ? "mo" : "m";
cpexists = TRUE;
}
@@ -668,17 +729,21 @@ void PrintWord(OBJECT x, int hpos, int vpos)
for( p++; *p; p++ )
{ KernLength(word_font(x), unacc, *(p-1), *p, ksize);
if( ksize != 0 )
- { fprintf(out_fp, ")%c %d(", command, -ksize);
+ { fprintf(out_fp, ")%s %d(", command, -ksize);
++wordcount;
- command = 'k';
+ command = word_outline(x) ? "ko" : "k";
}
fputs(EightBitToPrintForm[*p], out_fp);
}
if( ++wordcount >= 5 )
- { fprintf(out_fp, ")%c\n", command);
+ { fprintf(out_fp, ")%s\n", command);
wordcount = 0;
}
- else fprintf(out_fp, ")%c ", command);
+ else fprintf(out_fp, ")%s ", command);
+
+ /* ordinary printing moves current point; outlining destroys it */
+ if( word_outline(x) )
+ cpexists = FALSE;
break;
@@ -716,7 +781,7 @@ void PrintWord(OBJECT x, int hpos, int vpos)
vpos = vpos - currentxheight2;
if( cpexists && (currenty == vpos) && PDFHasValidTextMatrix() )
{ /* printnum(hpos, out_fp); */
- command = 's';
+ command = "s";
/*
Note: I calculate the width of the space char here in case the font has
changed. This prevents subtle spacing errors from occurring.
@@ -725,7 +790,7 @@ void PrintWord(OBJECT x, int hpos, int vpos)
fnt = finfo[currentfont].size_table;
if ( (next_hpos + fnt[' '].right /* width of space char */ ) == hpos )
- command = ' ';
+ command = " ";
#endif
}
else
@@ -733,7 +798,7 @@ void PrintWord(OBJECT x, int hpos, int vpos)
/* printnum(hpos, out_fp);
fputs(" ", out_fp);
printnum(currenty, out_fp); */
- command = 'm';
+ command = "m";
cpexists = TRUE;
}
@@ -769,7 +834,7 @@ void PrintWord(OBJECT x, int hpos, int vpos)
/* show string(x) */
/* FontWordSize(x); - this should not be necessary */
- switch (command)
+ switch (command[0])
{
case 'm':
@@ -811,7 +876,7 @@ void PrintWord(OBJECT x, int hpos, int vpos)
/* acc = MapTable[m]->map[MAP_ACCENT]; */
for( p++; *p; p++ )
{
- KernLength(word_font(x), unacc, *(p-1), *p, ksize);
+ /* KernLength(word_font(x), unacc, *(p-1), *p, ksize); */
KernLength(font_num(finfo[word_font(x)].original_font),
unacc, *(p-1), *p, ksize);
if ( ksize != 0 )
diff --git a/z25.c b/z25.c
index 926219a..cc172a7 100644
--- a/z25.c
+++ b/z25.c
@@ -1,7 +1,7 @@
/*@z25.c:Object Echo:aprint(), cprint(), printnum()@**************************/
/* */
-/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.17) */
-/* COPYRIGHT (C) 1991, 1999 Jeffrey H. Kingston */
+/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.18) */
+/* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */
/* */
/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */
/* Basser Department of Computer Science */
@@ -713,6 +713,7 @@ static void echo(OBJECT x, unsigned outer_prec, int count)
case BREAK:
case UNDERLINE:
case COLOUR:
+ case OUTLINE:
case LANGUAGE:
case OPEN:
case TAGGED:
@@ -767,6 +768,8 @@ static void echo(OBJECT x, unsigned outer_prec, int count)
case CURR_LANG:
case CURR_FAMILY:
case CURR_FACE:
+ case CURR_YUNIT:
+ case CURR_ZUNIT:
case BACKEND:
case PAGE_LABEL:
case HSPAN:
diff --git a/z26.c b/z26.c
index 2fafe70..72f42e7 100644
--- a/z26.c
+++ b/z26.c
@@ -1,7 +1,7 @@
/*@z26.c:Echo Service:BeginString()@******************************************/
/* */
-/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.17) */
-/* COPYRIGHT (C) 1991, 1999 Jeffrey H. Kingston */
+/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.18) */
+/* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */
/* */
/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */
/* Basser Department of Computer Science */
@@ -224,10 +224,13 @@ FULL_CHAR *Image(unsigned int c)
case BREAK: return KW_BREAK;
case UNDERLINE: return KW_UNDERLINE;
case COLOUR: return KW_COLOUR;
+ case OUTLINE: return KW_OUTLINE;
case LANGUAGE: return KW_LANGUAGE;
case CURR_LANG: return KW_CURR_LANG;
case CURR_FAMILY: return KW_CURR_FAMILY;
case CURR_FACE: return KW_CURR_FACE;
+ case CURR_YUNIT: return KW_CURR_YUNIT;
+ case CURR_ZUNIT: return KW_CURR_ZUNIT;
case COMMON: return KW_COMMON;
case RUMP: return KW_RUMP;
case MELD: return KW_MELD;
diff --git a/z27.c b/z27.c
index dc40a3a..fe84413 100644
--- a/z27.c
+++ b/z27.c
@@ -1,7 +1,7 @@
/*@z27.c:Debug Service:Debug flags@*******************************************/
/* */
-/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.17) */
-/* COPYRIGHT (C) 1991, 1999 Jeffrey H. Kingston */
+/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.18) */
+/* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */
/* */
/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */
/* Basser Department of Computer Science */
diff --git a/z28.c b/z28.c
index 8aea5ac..c9b1990 100644
--- a/z28.c
+++ b/z28.c
@@ -1,7 +1,7 @@
/*@z28.c:Error Service:ErrorInit(), ErrorSeen()@******************************/
/* */
-/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.17) */
-/* COPYRIGHT (C) 1991, 1999 Jeffrey H. Kingston */
+/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.18) */
+/* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */
/* */
/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */
/* Basser Department of Computer Science */
diff --git a/z29.c b/z29.c
index 8c3e58e..feacb92 100644
--- a/z29.c
+++ b/z29.c
@@ -1,7 +1,7 @@
/*@z29.c:Symbol Table:Declarations, hash()@***********************************/
/* */
-/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.17) */
-/* COPYRIGHT (C) 1991, 1999 Jeffrey H. Kingston */
+/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.18) */
+/* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */
/* */
/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */
/* Basser Department of Computer Science */
@@ -304,7 +304,7 @@ unsigned xpredefined, OBJECT xenclosing, OBJECT xbody)
uses_count(s) = 0;
dirty(s) = FALSE;
if( enclosing(s) != nilobj && type(enclosing(s)) == NPAR )
- dirty(enclosing(s)) = TRUE;
+ dirty(s) = dirty(enclosing(s)) = TRUE;
has_par(s) = FALSE;
has_lpar(s) = FALSE;
diff --git a/z30.c b/z30.c
index 65b7992..752b8df 100644
--- a/z30.c
+++ b/z30.c
@@ -1,7 +1,7 @@
/*@z30.c:Symbol uses:InsertUses()@********************************************/
/* */
-/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.17) */
-/* COPYRIGHT (C) 1991, 1999 Jeffrey H. Kingston */
+/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.18) */
+/* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */
/* */
/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */
/* Basser Department of Computer Science */
diff --git a/z31.c b/z31.c
index 47bf5c9..c63cdba 100644
--- a/z31.c
+++ b/z31.c
@@ -1,7 +1,7 @@
/*@z31.c:Memory Allocator:DebugMemory()@**************************************/
/* */
-/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.17) */
-/* COPYRIGHT (C) 1991, 1999 Jeffrey H. Kingston */
+/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.18) */
+/* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */
/* */
/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */
/* Basser Department of Computer Science */
@@ -228,10 +228,13 @@ void MemInit(void)
zz_lengths[ BREAK ] =
zz_lengths[ UNDERLINE ] =
zz_lengths[ COLOUR ] =
+ zz_lengths[ OUTLINE ] =
zz_lengths[ LANGUAGE ] =
zz_lengths[ CURR_LANG ] =
zz_lengths[ CURR_FAMILY ] =
zz_lengths[ CURR_FACE ] =
+ zz_lengths[ CURR_YUNIT ] =
+ zz_lengths[ CURR_ZUNIT ] =
zz_lengths[ COMMON ] =
zz_lengths[ RUMP ] =
zz_lengths[ MELD ] =
diff --git a/z32.c b/z32.c
index daba6b5..1407049 100644
--- a/z32.c
+++ b/z32.c
@@ -1,7 +1,7 @@
/*@z32.c:Counter Service:Next()@**********************************************/
/* */
-/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.17) */
-/* COPYRIGHT (C) 1991, 1999 Jeffrey H. Kingston */
+/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.18) */
+/* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */
/* */
/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */
/* Basser Department of Computer Science */
@@ -61,6 +61,7 @@ OBJECT Next(OBJECT x, int inc, BOOLEAN *done)
y = MakeWord(type(x), buff, &fpos(x));
word_font(y) = word_font(x);
word_colour(y) = word_colour(x);
+ word_outline(y) = word_outline(x);
word_language(y) = word_language(x);
word_hyph(y) = word_hyph(x);
underline(y) = underline(x);
diff --git a/z33.c b/z33.c
index 0369277..c66717d 100644
--- a/z33.c
+++ b/z33.c
@@ -1,7 +1,7 @@
/*@z33.c:Database Service:OldCrossDb(), NewCrossDb(), SymToNum()@*************/
/* */
-/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.17) */
-/* COPYRIGHT (C) 1991, 1999 Jeffrey H. Kingston */
+/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.18) */
+/* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */
/* */
/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */
/* Basser Department of Computer Science */
diff --git a/z34.c b/z34.c
index 1e21324..9e8cadc 100644
--- a/z34.c
+++ b/z34.c
@@ -1,7 +1,7 @@
/*@z34.c:Rotation Service:Declarations@***************************************/
/* */
-/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.17) */
-/* COPYRIGHT (C) 1991, 1999 Jeffrey H. Kingston */
+/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.18) */
+/* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */
/* */
/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */
/* Basser Department of Computer Science */
diff --git a/z35.c b/z35.c
index 4d0e002..cabfd0a 100644
--- a/z35.c
+++ b/z35.c
@@ -1,7 +1,7 @@
/*@z35.c:Time Keeper: MomentSym(), TimeString()@******************************/
/* */
-/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.17) */
-/* COPYRIGHT (C) 1991, 1999 Jeffrey H. Kingston */
+/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.18) */
+/* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */
/* */
/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */
/* Basser Department of Computer Science */
diff --git a/z36.c b/z36.c
index 28352c9..f4c4866 100644
--- a/z36.c
+++ b/z36.c
@@ -1,7 +1,7 @@
/*@z36.c:Hyphenation: Declarations@*******************************************/
/* */
-/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.17) */
-/* COPYRIGHT (C) 1991, 1999 Jeffrey H. Kingston */
+/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.18) */
+/* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */
/* */
/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */
/* Basser Department of Computer Science */
@@ -1080,6 +1080,7 @@ OBJECT Hyphenate(OBJECT x)
z = MakeWord(WORD, &key[stop+1], &fpos(y));
word_font(z) = word_font(y);
word_colour(z) = word_colour(y);
+ word_outline(z) = word_outline(y);
word_language(z) = word_language(y);
word_hyph(z) = word_hyph(y);
underline(z) = underline(y);
@@ -1194,6 +1195,7 @@ OBJECT Hyphenate(OBJECT x)
{ z = MakeWord(WORD, &key[start+i-1], &fpos(y));
word_font(z) = word_font(y);
word_colour(z) = word_colour(y);
+ word_outline(z) = word_outline(y);
word_language(z) = word_language(y);
word_hyph(z) = word_hyph(y);
underline(z) = underline(y);
diff --git a/z37.c b/z37.c
index f3b89e8..8b94f87 100644
--- a/z37.c
+++ b/z37.c
@@ -1,7 +1,7 @@
/*@z37.c:Font Service:Declarations@*******************************************/
/* */
-/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.17) */
-/* COPYRIGHT (C) 1991, 1999 Jeffrey H. Kingston */
+/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.18) */
+/* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */
/* */
/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */
/* Basser Department of Computer Science */
diff --git a/z38.c b/z38.c
index 4a7290f..d183a9c 100644
--- a/z38.c
+++ b/z38.c
@@ -1,7 +1,7 @@
/*@z38.c:Character Mappings:Declarations@*************************************/
/* */
-/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.17) */
-/* COPYRIGHT (C) 1991, 1999 Jeffrey H. Kingston */
+/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.18) */
+/* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */
/* */
/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */
/* Basser Department of Computer Science */
@@ -301,7 +301,7 @@ void MapPrintEncodings(FILE *fp)
{
case POSTSCRIPT:
- fprintf(fp, "%%%%BeginResource encoding %s\n", string(map->name));
+ fprintf(fp, "%%%%BeginResource: encoding %s\n", string(map->name));
fprintf(fp, "/%s [\n", string(map->name));
for( i = 0; i < MAX_CHARS; i++ )
fprintf(fp, "/%s%c", string(map->vector[i]), (i+1) % 8 != 0 ? ' ' : '\n');
@@ -353,6 +353,7 @@ static OBJECT DoWord(FULL_CHAR *buff, FULL_CHAR *q, OBJECT x, FONT_NUM fnum)
res = MakeWord(type(x), buff, &fpos(x));
word_font(res) = fnum;
word_colour(res) = word_colour(x);
+ word_outline(res) = word_outline(x);
word_language(res) = word_language(x);
word_hyph(res) = word_hyph(x);
underline(res) = UNDER_OFF;
diff --git a/z39.c b/z39.c
index 8f337aa..ce4a511 100644
--- a/z39.c
+++ b/z39.c
@@ -1,7 +1,7 @@
/*@z39.c:String Handler:AsciiToFull(), StringEqual(), etc.@*******************/
/* */
-/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.17) */
-/* COPYRIGHT (C) 1991, 1999 Jeffrey H. Kingston */
+/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.18) */
+/* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */
/* */
/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */
/* Basser Department of Computer Science */
diff --git a/z40.c b/z40.c
index 4998849..362f017 100644
--- a/z40.c
+++ b/z40.c
@@ -1,7 +1,7 @@
/*@z40.c:Filter Handler:FilterInit()@*****************************************/
/* */
-/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.17) */
-/* COPYRIGHT (C) 1991, 1999 Jeffrey H. Kingston */
+/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.18) */
+/* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */
/* */
/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */
/* Basser Department of Computer Science */
diff --git a/z41.c b/z41.c
index a276a02..389168b 100644
--- a/z41.c
+++ b/z41.c
@@ -1,7 +1,7 @@
/*@z41.c:Object Input-Output:AppendToFile, ReadFromFile@**********************/
/* */
-/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.17) */
-/* COPYRIGHT (C) 1991, 1999 Jeffrey H. Kingston */
+/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.18) */
+/* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */
/* */
/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */
/* Basser Department of Computer Science */
@@ -526,10 +526,13 @@ static void WriteObject(OBJECT x, int outer_prec, int *linecount, FILE_NUM fnum)
case BREAK: name = KW_BREAK; goto SETC;
case UNDERLINE: name = KW_UNDERLINE; goto SETC;
case COLOUR: name = KW_COLOUR; goto SETC;
+ case OUTLINE: name = KW_OUTLINE; goto SETC;
case LANGUAGE: name = KW_LANGUAGE; goto SETC;
case CURR_LANG: name = KW_CURR_LANG; goto SETC;
case CURR_FAMILY: name = KW_CURR_FAMILY; goto SETC;
case CURR_FACE: name = KW_CURR_FACE; goto SETC;
+ case CURR_YUNIT: name = KW_CURR_YUNIT; goto SETC;
+ case CURR_ZUNIT: name = KW_CURR_ZUNIT; goto SETC;
case COMMON: name = KW_COMMON; goto SETC;
case RUMP: name = KW_RUMP; goto SETC;
case MELD: name = KW_MELD; goto SETC;
diff --git a/z42.c b/z42.c
index 66a3c80..6a31b99 100644
--- a/z42.c
+++ b/z42.c
@@ -1,7 +1,7 @@
/*@z42.c:Colour Service:ColourChange, ColourCommand@**************************/
/* */
-/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.17) */
-/* COPYRIGHT (C) 1991, 1999 Jeffrey H. Kingston */
+/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.18) */
+/* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */
/* */
/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */
/* Basser Department of Computer Science */
diff --git a/z43.c b/z43.c
index 67013ef..009594d 100644
--- a/z43.c
+++ b/z43.c
@@ -1,7 +1,7 @@
/*@z43.c:Language Service:LanguageChange, LanguageString@*********************/
/* */
-/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.17) */
-/* COPYRIGHT (C) 1991, 1999 Jeffrey H. Kingston */
+/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.18) */
+/* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */
/* */
/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */
/* Basser Department of Computer Science */
diff --git a/z44.c b/z44.c
index e1f056d..f0ec457 100644
--- a/z44.c
+++ b/z44.c
@@ -1,7 +1,7 @@
/*@z44.c:Vertical Hyphenation:VerticalHyphenate()@****************************/
/* */
-/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.17) */
-/* COPYRIGHT (C) 1991, 1999 Jeffrey H. Kingston */
+/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.18) */
+/* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */
/* */
/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */
/* Basser Department of Computer Science */
@@ -506,7 +506,7 @@ OBJECT ConvertGalleyList(OBJECT x)
OBJECT BuildEnclose(OBJECT hd)
{ OBJECT sym, parsym, x, y, link, par, val, env, res;
- debug1(DHY, D, "BuildEnclose(%s)", SymName(actual(hd)));
+ debug1(DOM, D, "BuildEnclose(%s)", SymName(actual(hd)));
/* find @Enclose symbol and check that it has just one parameter */
for( link = Down(actual(hd)); link != actual(hd); link = NextDown(link) )
@@ -567,6 +567,6 @@ OBJECT BuildEnclose(OBJECT hd)
Link(res, x);
Link(res, env);
- debug1(DHY, D, "BuildEnclose returning %s", EchoObject(res));
+ debug1(DOM, D, "BuildEnclose returning %s", EchoObject(res));
return res;
} /* end BuildEnclose */
diff --git a/z45.c b/z45.c
index 693356c..72cf90c 100644
--- a/z45.c
+++ b/z45.c
@@ -1,7 +1,7 @@
/*@z45.c:External Sort:SortFile()@********************************************/
/* */
-/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.17) */
-/* COPYRIGHT (C) 1991, 1999 Jeffrey H. Kingston */
+/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.18) */
+/* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */
/* */
/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */
/* Basser Department of Computer Science */
diff --git a/z46.c b/z46.c
index 7a920f4..6056203 100644
--- a/z46.c
+++ b/z46.c
@@ -1,7 +1,7 @@
/*@z46.c:Optimal Galleys:FindOptimize()@**************************************/
/* */
-/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.17) */
-/* COPYRIGHT (C) 1991, 1999 Jeffrey H. Kingston */
+/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.18) */
+/* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */
/* */
/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */
/* Basser Department of Computer Science */
@@ -243,6 +243,7 @@ void GazumpOptimize(OBJECT hd, OBJECT dest)
back(tmp, COLM) = fwd(tmp, COLM) = 0;
back(tmp, ROWM) = fwd(tmp, ROWM) = 0;
word_font(tmp) = word_colour(tmp) = 0;
+ word_outline(tmp) = FALSE;
word_language(tmp) = word_hyph(tmp) = 0;
Link(opt_components(hd), tmp);
diff --git a/z47.c b/z47.c
index 2fac7b8..78f931f 100644
--- a/z47.c
+++ b/z47.c
@@ -1,7 +1,7 @@
/*@z47.c:Environment Table:EnvReadRetrieve()@*********************************/
/* */
-/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.17) */
-/* COPYRIGHT (C) 1991, 1999 Jeffrey H. Kingston */
+/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.18) */
+/* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */
/* */
/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */
/* Basser Department of Computer Science */
diff --git a/z48.c b/z48.c
index 6c66e43..46d5882 100644
--- a/z48.c
+++ b/z48.c
@@ -1,7 +1,7 @@
/*@z48.c:PDF back end@********************************************************/
/* */
-/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.17) */
-/* COPYRIGHT (C) 1991, 1999 Jeffrey H. Kingston */
+/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.18) */
+/* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */
/* */
/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */
/* Basser Department of Computer Science */
@@ -1135,7 +1135,8 @@ static void PDFPage_FlushRawBuffer(FILE* in_fp)
/* always compress to the point where the raw buffer is empty */
do {
err = deflate(&g_comp_stream, Z_NO_FLUSH);
- if (err != Z_OK)
+ /* bug fix from newman-andy@yale.edu Feb 23 2000 if (err != Z_OK) */
+ if ( err != Z_OK && g_comp_stream.avail_in != 0 )
Error(48, 11, "PDFPage_FlushRawBuffer: zlib error occurred",FATAL,no_fpos);
/* IF compressed output buffer is full THEN flush it to disk and reset it */