diff options
-rw-r--r-- | README | 2 | ||||
-rw-r--r-- | blurb | 10 | ||||
-rw-r--r-- | doc/design/README | 2 | ||||
-rw-r--r-- | doc/design/outfile.ps | 2429 | ||||
-rw-r--r-- | doc/expert/README | 2 | ||||
-rw-r--r-- | doc/expert/all | 4 | ||||
-rw-r--r-- | doc/expert/exa | 3 | ||||
-rw-r--r-- | doc/expert/outfile.ps | 2389 | ||||
-rw-r--r-- | doc/expert/preface | 2 | ||||
-rw-r--r-- | doc/slides/README | 2 | ||||
-rw-r--r-- | doc/slides/outfile.ps | 211 | ||||
-rw-r--r-- | doc/user/README | 2 | ||||
-rw-r--r-- | doc/user/all | 4 | ||||
-rw-r--r-- | doc/user/preface | 2 | ||||
-rw-r--r-- | doc/user/typ_book | 28 | ||||
-rw-r--r-- | doc/user/typ_repo | 17 | ||||
-rw-r--r-- | externs.h | 113 | ||||
-rw-r--r-- | include/book | 2 | ||||
-rw-r--r-- | include/bookf | 26 | ||||
-rw-r--r-- | include/latin2.fd | 143 | ||||
-rw-r--r-- | include/old.fd | 156 | ||||
-rw-r--r-- | include/report | 12 | ||||
-rw-r--r-- | include/reportf | 39 | ||||
-rw-r--r-- | makefile | 72 | ||||
-rw-r--r-- | maps/LtLatin2.LCM | 6 | ||||
-rw-r--r-- | notes.dsc | 28 | ||||
-rw-r--r-- | whatsnew | 12 | ||||
-rw-r--r-- | z01.c | 103 | ||||
-rw-r--r-- | z02.c | 10 | ||||
-rw-r--r-- | z03.c | 2 | ||||
-rw-r--r-- | z04.c | 2 | ||||
-rw-r--r-- | z05.c | 2 | ||||
-rw-r--r-- | z06.c | 8 | ||||
-rw-r--r-- | z07.c | 2 | ||||
-rw-r--r-- | z08.c | 4 | ||||
-rw-r--r-- | z09.c | 2 | ||||
-rw-r--r-- | z10.c | 2 | ||||
-rw-r--r-- | z11.c | 2 | ||||
-rw-r--r-- | z12.c | 2 | ||||
-rw-r--r-- | z13.c | 8 | ||||
-rw-r--r-- | z14.c | 4 | ||||
-rw-r--r-- | z15.c | 2 | ||||
-rw-r--r-- | z16.c | 2 | ||||
-rw-r--r-- | z17.c | 8 | ||||
-rw-r--r-- | z18.c | 2 | ||||
-rw-r--r-- | z19.c | 2 | ||||
-rw-r--r-- | z20.c | 2 | ||||
-rw-r--r-- | z21.c | 2 | ||||
-rw-r--r-- | z22.c | 9 | ||||
-rw-r--r-- | z23.c | 406 | ||||
-rw-r--r-- | z24.c | 1569 | ||||
-rw-r--r-- | z25.c | 2 | ||||
-rw-r--r-- | z26.c | 25 | ||||
-rw-r--r-- | z27.c | 7 | ||||
-rw-r--r-- | z28.c | 2 | ||||
-rw-r--r-- | z29.c | 2 | ||||
-rw-r--r-- | z30.c | 2 | ||||
-rw-r--r-- | z31.c | 2 | ||||
-rw-r--r-- | z32.c | 2 | ||||
-rw-r--r-- | z33.c | 2 | ||||
-rw-r--r-- | z34.c | 2 | ||||
-rw-r--r-- | z35.c | 2 | ||||
-rw-r--r-- | z36.c | 2 | ||||
-rw-r--r-- | z37.c | 160 | ||||
-rw-r--r-- | z38.c | 69 | ||||
-rw-r--r-- | z39.c | 2 | ||||
-rw-r--r-- | z40.c | 2 | ||||
-rw-r--r-- | z41.c | 2 | ||||
-rw-r--r-- | z42.c | 4 | ||||
-rw-r--r-- | z43.c | 2 | ||||
-rw-r--r-- | z44.c | 2 | ||||
-rw-r--r-- | z45.c | 2 | ||||
-rw-r--r-- | z46.c | 2 | ||||
-rw-r--r-- | z47.c | 2 | ||||
-rw-r--r-- | z48.c | 2 | ||||
-rw-r--r-- | z49.c | 1148 | ||||
-rw-r--r-- | z50.c | 804 | ||||
-rw-r--r-- | z51.c | 586 |
78 files changed, 6226 insertions, 4490 deletions
@@ -1,4 +1,4 @@ -THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.21) +THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.22) BASSER LOUT VERSION 3 COPYRIGHT (C) 1994, 2000 Jeffrey H. Kingston Jeffrey H. Kingston @@ -1,7 +1,7 @@ - THE LOUT DOCUMENT FORMATTING SYSTEM, VERSION 3.21 + THE LOUT DOCUMENT FORMATTING SYSTEM, VERSION 3.22 -Version 3.21 of the Lout document formatting system is now available +Version 3.22 of the Lout document formatting system is now available (free of charge). The system reads a high-level description of a document similar in style to LaTeX and produces a PostScript, PDF or plain text output file. @@ -21,9 +21,9 @@ project that went back to the beginning. Lout is written in highly portable ANSI C. It is distributed under the GNU public license as follows: - ftp://ftp.cs.usyd.edu.au/jeff/lout/lout-3.21.tar.gz + ftp://ftp.cs.usyd.edu.au/jeff/lout/lout-3.22.tar.gz -In other words, in a gzipped tar file called "lout-3.21.tar.gz" in the +In other words, in a gzipped tar file called "lout-3.22.tar.gz" in the "jeff/lout" subdirectory of the home directory of "ftp ftp.cs.usyd.edu.au" with login name "ftp" or "anonymous" using any non-empty password. The distribution contains @@ -44,7 +44,7 @@ distribution contains For those who want to browse first, a PostScript version of the User's Guide may be found in the same ftp directory: - ftp://ftp.cs.usyd.edu.au/jeff/lout/lout-3.21.user.ps.gz + ftp://ftp.cs.usyd.edu.au/jeff/lout/lout-3.22.user.ps.gz Lout was designed and implemented by Jeffrey H. Kingston (jeff@cs.usyd.edu.au) of the Basser Department of Computer Science at the University of Sydney. diff --git a/doc/design/README b/doc/design/README index 7f68f91..996bd33 100644 --- a/doc/design/README +++ b/doc/design/README @@ -22,4 +22,4 @@ messages (although changing the paper size might produce one or two benign ones). Jeffrey H. Kingston -10 May 2000 +3 June 2000 diff --git a/doc/design/outfile.ps b/doc/design/outfile.ps index 6566ade..9d26159 100644 --- a/doc/design/outfile.ps +++ b/doc/design/outfile.ps @@ -1,6 +1,6 @@ %!PS-Adobe-3.0 -%%Creator: Basser Lout Version 3.21 (May 2000) -%%CreationDate: Thu May 11 10:53:39 2000 +%%Creator: Basser Lout Version 3.22 (June 2000) +%%CreationDate: Sat Jun 3 12:54:58 2000 %%DocumentData: Binary %%DocumentNeededResources: (atend) %%DocumentSuppliedResources: (atend) @@ -1352,7 +1352,6 @@ end %%EndProlog %%BeginSetup -%%IncludeResource: font Times-Roman %%BeginResource: encoding vec2 /vec2 [ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef @@ -1390,14 +1389,6 @@ end ] def %%EndResource -/Times-Romanfnt1 vec2 /Times-Roman LoutRecode -/fnt1 { /Times-Romanfnt1 LoutFont } def -%%IncludeResource: font Times-Bold -/Times-Boldfnt2 vec2 /Times-Bold LoutRecode -/fnt2 { /Times-Boldfnt2 LoutFont } def -%%IncludeResource: font Times-Italic -/Times-Italicfnt3 vec2 /Times-Italic LoutRecode -/fnt3 { /Times-Italicfnt3 LoutFont } def %%EndSetup %%Page: i 1 @@ -1406,6 +1397,15 @@ end %%+ font Times-Bold %%+ font Times-Italic /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def +%%IncludeResource: font Times-Bold +/Times-Boldfnt2 vec2 /Times-Bold LoutRecode +/fnt2 { /Times-Boldfnt2 LoutFont } def +%%IncludeResource: font Times-Italic +/Times-Italicfnt3 vec2 /Times-Italic LoutRecode +/fnt3 { /Times-Italicfnt3 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup @@ -1463,6 +1463,15 @@ showpage %%+ font Times-Bold %%+ font Times-Italic /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def +%%IncludeResource: font Times-Bold +/Times-Boldfnt2 vec2 /Times-Bold LoutRecode +/fnt2 { /Times-Boldfnt2 LoutFont } def +%%IncludeResource: font Times-Italic +/Times-Italicfnt3 vec2 /Times-Italic LoutRecode +/fnt3 { /Times-Italicfnt3 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -1595,11 +1604,20 @@ showpage %%+ font Times-Italic %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def +%%IncludeResource: font Times-Bold +/Times-Boldfnt2 vec2 /Times-Bold LoutRecode +/fnt2 { /Times-Boldfnt2 LoutFont } def %%IncludeResource: font Symbol -/fnt4 { /Symbol LoutFont } def +/fnt5 { /Symbol LoutFont } def +%%IncludeResource: font Times-Italic +/Times-Italicfnt4 vec2 /Times-Italic LoutRecode +/fnt4 { /Times-Italicfnt4 LoutFont } def %%IncludeResource: font Helvetica -/Helveticafnt5 vec2 /Helvetica LoutRecode -/fnt5 { /Helveticafnt5 LoutFont } def +/Helveticafnt6 vec2 /Helvetica LoutRecode +/fnt6 { /Helveticafnt6 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -1646,20 +1664,20 @@ grestore 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 fnt4 -586 8390(2)m 240 fnt3 480 8330(x)m 240 fnt4 738 8322(+)m +915(mathematical)s 2256(formula)s 3072(such)s 3568(as)s 168 fnt5 +586 8390(2)m 240 fnt4 480 8330(x)m 240 fnt5 738 8322(+)m 939(1)s gsave 480 8274 translate -240 fnt3 553 0 0 0 240 288 12 LoutGraphic +240 fnt4 553 0 0 0 240 288 12 LoutGraphic gsave 0 0 moveto xsize 0 lineto 0.05 ft setlinewidth stroke grestore grestore 700 8046(4)m 240 fnt1 0 7535(is)m 210(produced)s -1159(by)s 1453(typing)s 220 fnt5 480 7037({ x sup 2 + 1 } o)m 3(v)k 5(er 4)k +1159(by)s 1453(typing)s 220 fnt6 480 7037({ x sup 2 + 1 } o)m 3(v)k 5(er 4)k 240 fnt1 0 6541(in)m 261(the)s 627(input)s 1197(\207le;)s -220 fnt5 1632 6538(sup)m 240 fnt1 2056 6541(and)m 220 fnt5 +220 fnt6 1632 6538(sup)m 240 fnt1 2056 6541(and)m 220 fnt6 2478 6538(o)m 3(v)k 5(er)k 240 fnt1 2975 6541(are)m 3340(binary)s 4023(operators,)s 5037(and)s 5459(braces)s 6138(are)s 6503(used)s 7018(for)s 7374(grouping.)s 8421(This)s 8916(is)s @@ -1670,7 +1688,7 @@ grestore 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 fnt3 5009 5593(e)m 4(xpr)k 8(ession)k +4485(it)s 4669(the)s 240 fnt4 5009 5593(e)m 4(xpr)k 8(ession)k 240 fnt1 6014 5591(\),)m 6192(b)s 4(uilt)k 6679(up)s 6964(recursi)s 6(v)k 3(ely)k 8062(in)s 8297(conte)s 3(xt-)k 0 5303(free)m 457(style:)s 1106(where)s 1778(one)s 2212(e)s 3(xpression)k @@ -1685,7 +1703,7 @@ grestore 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 fnt3 +3997(a)s 4163(rectangle)s 5094(with)s 5577(a)s 240 fnt4 5743 4067(horizontal)m 6787(axis)s 240 fnt1 7167 4065(,)m 7274(used)s 7771(for)s 8110(alignment)s 0 3777(with)m 482(adjacent)s 1338(e)s 3(xpressions:)k 553 519 0 288 240 288 60 480 2918 LoutGr2 @@ -1705,10 +1723,10 @@ grestore ] lfigdopath pop pop grestore -168 fnt4 106 404(2)m 240 fnt3 0 344(x)m 240 fnt4 +168 fnt5 106 404(2)m 240 fnt4 0 344(x)m 240 fnt5 258 336(+)m 459(1)s gsave 0 288 translate -240 fnt3 553 0 0 0 240 288 12 LoutGraphic +240 fnt4 553 0 0 0 240 288 12 LoutGraphic gsave 0 0 moveto xsize 0 lineto 0.05 ft setlinewidth stroke grestore @@ -1766,11 +1784,20 @@ showpage %%+ font Symbol %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def +%%IncludeResource: font Times-Italic +/Times-Italicfnt4 vec2 /Times-Italic LoutRecode +/fnt4 { /Times-Italicfnt4 LoutFont } def +%%IncludeResource: font Times-Bold +/Times-Boldfnt2 vec2 /Times-Bold LoutRecode +/fnt2 { /Times-Boldfnt2 LoutFont } def %%IncludeResource: font Symbol -/fnt4 { /Symbol LoutFont } def +/fnt5 { /Symbol LoutFont } def %%IncludeResource: font Helvetica -/Helveticafnt5 vec2 /Helvetica LoutRecode -/fnt5 { /Helveticafnt5 LoutFont } def +/Helveticafnt6 vec2 /Helvetica LoutRecode +/fnt6 { /Helveticafnt6 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -1815,9 +1842,9 @@ grestore end end restore grestore 0 12007(The)m 442(horizontal)s 1481(axis,)s 1987(called)s 2630(a)s -240 fnt3 2810 12009(r)m 10(ow)k 3244(mark)s 240 fnt1 +240 fnt4 2810 12009(r)m 10(ow)k 3244(mark)s 240 fnt1 3814 12007(in)m 4072(Lout,)s 4645(has)s 5030(a)s 5210(v)s 3(ertical)k -5992(analogue)s 6926(called)s 7569(a)s 240 fnt3 7749 12009(column)m +5992(analogue)s 6926(called)s 7569(a)s 240 fnt4 7749 12009(column)m 8523(mark)s 240 fnt1 9019 12007(,)m 0 11719(creating)m 822(a)s 988(v)s 6(aluable)k 1848(symmetry)s 2857(between)s 3711(horizontal)s 4735(and)s 5139(v)s 3(ertical.)k 6014(Multiple)s 6893(column)s @@ -1959,21 +1986,21 @@ grestore 8225(is)s 8425(a)s 8580(func)s 8998(-)s 0 4504(tional)m 599(language)s 1519(based)s 2122(on)s 2419(operators,)s 3415(as)s 3665(in)s 3908(Eqn.)s 4458(The)s 4886(grammar)s 5808(of)s -6079(Lout)s 6591(objects)s 7319(is)s 7529(accordingly)s 240 fnt4 +6079(Lout)s 6591(objects)s 7319(is)s 7529(accordingly)s 240 fnt5 1332 3945(\256)m 1332 3612(\256)m 1332 3279(\256)m 1332 2995(\256)m 1332 2662(\256)m -1332 2368(\256)m 1332 2035(\256)m 1332 1751(\256)m 240 fnt3 480 3953(object)m +1332 2368(\256)m 1332 2035(\256)m 1332 1751(\256)m 240 fnt4 480 3953(object)m 1826(object)s 2498(in\207xop)s 3227(object)s 1826 3620(pr)m 8(e\207xop)k 2680(object)s 1826 3287(object)m 2498(post\207xop)s 1826 3003(nopar)m 2(sop)k -1826 2670(liter)m 3(alwor)k 8(d)k 220 fnt5 1826 2371({)m -240 fnt3 1974 2376(object)m 220 fnt5 2646 2371(})m 240 fnt3 -1826 2043(object)m 2498(object)s 240 fnt1 0 1248(where)m 240 fnt3 -640 1250(in\207xop)m 240 fnt1 1285 1248(,)m 240 fnt3 1391 1250(pr)m 8(e\207xop)k -240 fnt1 2161 1248(,)m 240 fnt3 2267 1250(post\207xop)m 240 fnt1 -3125 1248(,)m 3232(and)s 240 fnt3 3635 1250(nopar)m 2(sop)k +1826 2670(liter)m 3(alwor)k 8(d)k 220 fnt6 1826 2371({)m +240 fnt4 1974 2376(object)m 220 fnt6 2646 2371(})m 240 fnt4 +1826 2043(object)m 2498(object)s 240 fnt1 0 1248(where)m 240 fnt4 +640 1250(in\207xop)m 240 fnt1 1285 1248(,)m 240 fnt4 1391 1250(pr)m 8(e\207xop)k +240 fnt1 2161 1248(,)m 240 fnt4 2267 1250(post\207xop)m 240 fnt1 +3125 1248(,)m 3232(and)s 240 fnt4 3635 1250(nopar)m 2(sop)k 240 fnt1 4591 1248(are)m 4938(identi\207ers)s 5943(naming)s 6713(operators)s 7653(which)s 8294(tak)s 2(e)k 8745(0,)s 8971(1)s 0 960(or)m 255(2)s 424(parameters,)s 1573(as)s 1819(sho)s 6(wn,)k -2541(and)s 240 fnt3 2940 962(liter)m 3(alwor)k 8(d)k +2541(and)s 240 fnt4 2940 962(liter)m 3(alwor)k 8(d)k 240 fnt1 4067 960(is)m 4272(a)s 4433(sequence)s 5362(of)s 5628(non-space)s 6649(characters,)s 7719(or)s 7973(an)s 8251(arbitrary)s 0 672(sequence)m 969(of)s 1276(characters)s 2330(enclosed)s 3262(in)s @@ -2001,9 +2028,18 @@ showpage %%+ font Times-Italic %%+ font Times-Bold /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Helvetica -/Helveticafnt5 vec2 /Helvetica LoutRecode -/fnt5 { /Helveticafnt5 LoutFont } def +/Helveticafnt6 vec2 /Helvetica LoutRecode +/fnt6 { /Helveticafnt6 LoutFont } def +%%IncludeResource: font Times-Italic +/Times-Italicfnt4 vec2 /Times-Italic LoutRecode +/fnt4 { /Times-Italicfnt4 LoutFont } def +%%IncludeResource: font Times-Bold +/Times-Boldfnt2 vec2 /Times-Bold LoutRecode +/fnt2 { /Times-Boldfnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -2021,17 +2057,17 @@ grestore 480 13256(The)m 941(last)s 1366(production)s 2494(allo)s 6(ws)k 3197(a)s 3397(meaning)s 4307(for)s 4679(e)s 3(xpressions)k 5877(such)s 6407(as)s -220 fnt5 6691 13253({})m 240 fnt1 6828 13256(,)m 6968(in)s +220 fnt6 6691 13253({})m 240 fnt1 6828 13256(,)m 6968(in)s 7245(which)s 7921(an)s 8238(object)s 8916(is)s 0 12968(missing.)m 907(The)s 1333(v)s 6(alue)k 1899(of)s 2168(this)s -240 fnt3 2562 12970(empty)m 3187(object)s 240 fnt1 3833 12968(is)m +240 fnt4 2562 12970(empty)m 3187(object)s 240 fnt1 3833 12968(is)m 4041(a)s 4205(rectangle)s 5135(of)s 5404(size)s 5829(0)s 6002(by)s 6294(0,)s 6519(with)s 6999(one)s 7399(column)s 8172(mark)s 8722(and)s 0 12680(one)m 402(ro)s 6(w)k 822(mark,)s 1420(that)s 1838(prints)s 2433(as)s 2683(nothing.)s 480 12306(The)m 938(second-last)s 2103(production)s 3227(generates)s 4210(sequences)s 5261(of)s 5562(arbitrary)s 6467(objects)s 7225(separated)s 8215(by)s -8539(white)s 0 12018(space,)m 671(called)s 240 fnt3 1333 12020(par)m 3(a)k 2(gr)k 3(aphs)k +8539(white)s 0 12018(space,)m 671(called)s 240 fnt4 1333 12020(par)m 3(a)k 2(gr)k 3(aphs)k 240 fnt1 2439 12018(.)m 2636(Ignoring)s 3547(paragraph)s 4593(breaking)s 5517(for)s 5888(no)s 6(w)k 15(,)k 6421(the)s 6802(natural)s 7554(meaning)s 8464(is)s 8708(that)s 0 11730(the)m @@ -2083,18 +2119,18 @@ grestore 5047(possible)s 5887(for)s 6225(identi\207ers)s 7231(without)s 8022(`@'.)s 480 7440(Equation)m 1418(formatting)s 2496(also)s 2951(demands)s 3871(symbols)s 4737(made)s 5328(from)s 5869(punctuation)s 7074(characters,)s 8165(such)s -8678(as)s 220 fnt5 8946 7437(+)m 240 fnt1 0 7152(and)m -220 fnt5 404 7149(<=)m 240 fnt1 652 7152(.)m 816(It)s +8678(as)s 220 fnt6 8946 7437(+)m 240 fnt1 0 7152(and)m +220 fnt6 404 7149(<=)m 240 fnt1 652 7152(.)m 816(It)s 1021(is)s 1231(traditional)s 2267(to)s 2506(allo)s 6(w)k 3085(such)s 3581(symbols)s 4430(to)s 4669(be)s 4951(juxtaposed,)s 6095(which)s 6737(means)s 7399(that)s 7817(the)s 8165(input)s -220 fnt5 480 6702(<=++)m 240 fnt1 0 6251(for)m 354(e)s 3(xample)k +220 fnt6 480 6702(<=++)m 240 fnt1 0 6251(for)m 354(e)s 3(xample)k 1234(must)s 1776(be)s 2075(interpreted)s 3184(within)s 3869(the)s 4234(le)s 3(xical)k 4939(analyser)s 5812(by)s 6123(searching)s 7109(the)s 7474(symbol)s 8251(table)s 8788(for)s 0 5963(its)m 306(pre\207x)s 3(es)k 1142(in)s 1416(the)s 1795(order)s -220 fnt5 2390 5960(<=++)m 240 fnt1 2894 5963(,)m 220 fnt5 -3032 5960(<=+)m 240 fnt1 3408 5963(,)m 220 fnt5 3546 5960(<=)m +220 fnt6 2390 5960(<=++)m 240 fnt1 2894 5963(,)m 220 fnt6 +3032 5960(<=+)m 240 fnt1 3408 5963(,)m 220 fnt6 3546 5960(<=)m 240 fnt1 3794 5963(.)m 3988(Although)s 4981(this)s 5408(tak)s 2(es)k 5979(quadratic)s 6952(time,)s 7514(in)s 7788(practice)s 8630(such)s 0 5675(sequences)m 1021(are)s 1368(too)s 1727(short)s 2265(to)s @@ -2144,7 +2180,7 @@ grestore 4971(kinds)s 5541(of)s 5812(objects.)s 480 547(The)m 906(simplest)s 1759(objects)s 2485(are)s 2829(empty)s 3479(objects)s 4204(and)s 4605(literal)s 5213(w)s 2(ords)k 5844(lik)s 2(e)k -220 fnt5 6254 544(metempsychosis)m 240 fnt1 7882 547(,)m 7986(which)s +220 fnt6 6254 544(metempsychosis)m 240 fnt1 7882 547(,)m 7986(which)s 8625(ha)s 4(v)k 3(e)k grestore 0 0 0 0 240 288 60 1417 -15423 LoutGr2 @@ -2167,9 +2203,18 @@ showpage %%+ font Helvetica %%+ font Times-Bold /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def +%%IncludeResource: font Times-Italic +/Times-Italicfnt4 vec2 /Times-Italic LoutRecode +/fnt4 { /Times-Italicfnt4 LoutFont } def %%IncludeResource: font Helvetica -/Helveticafnt5 vec2 /Helvetica LoutRecode -/fnt5 { /Helveticafnt5 LoutFont } def +/Helveticafnt6 vec2 /Helvetica LoutRecode +/fnt6 { /Helveticafnt6 LoutFont } def +%%IncludeResource: font Times-Bold +/Times-Boldfnt2 vec2 /Times-Bold LoutRecode +/fnt2 { /Times-Boldfnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -2184,70 +2229,70 @@ gsave 5769 -1582(-)m 5897(5)s 6063(-)s 9066 13413 0 13413 240 288 60 1417 -15423 LoutGr2 1 LoutMargSet grestore -240 fnt3 266 13217(object)m -220 fnt5 974 13212(/)m 240 fnt3 1038 13217(gap)m 1511(object)s +240 fnt4 266 13217(object)m +220 fnt6 974 13212(/)m 240 fnt4 1038 13217(gap)m 1511(object)s 240 fnt1 3816 13215(V)m 26(ertical)k 4613(concatenation)s 5998(with)s -6480(mark)s 7032(alignment)s 240 fnt3 266 12929(object)m 220 fnt5 -974 12924(//)m 240 fnt3 1099 12929(gap)m 1572(object)s 240 fnt1 +6480(mark)s 7032(alignment)s 240 fnt4 266 12929(object)m 220 fnt6 +974 12924(//)m 240 fnt4 1099 12929(gap)m 1572(object)s 240 fnt1 3816 12927(V)m 26(ertical)k 4613(concatenation)s 5998(with)s 6480(left)s -6857(justi\207cation)s 240 fnt3 266 12641(object)m 220 fnt5 974 12636(|)m -240 fnt3 1011 12641(gap)m 1484(object)s 240 fnt1 3816 12639(Horizontal)m -4893(concatenation)s 6278(with)s 6760(mark)s 7312(alignment)s 240 fnt3 -266 12353(object)m 220 fnt5 974 12348(||)m 240 fnt3 1068 12353(gap)m +6857(justi\207cation)s 240 fnt4 266 12641(object)m 220 fnt6 974 12636(|)m +240 fnt4 1011 12641(gap)m 1484(object)s 240 fnt1 3816 12639(Horizontal)m +4893(concatenation)s 6278(with)s 6760(mark)s 7312(alignment)s 240 fnt4 +266 12353(object)m 220 fnt6 974 12348(||)m 240 fnt4 1068 12353(gap)m 1541(object)s 240 fnt1 3816 12351(Horizontal)m 4893(concatenation)s 6278(with)s -6760(top-justi\207cation)s 240 fnt3 266 12065(object)m 220 fnt5 974 12060(&)m -240 fnt3 1116 12065(gap)m 1589(object)s 240 fnt1 3816 12063(Horizontal)m -4893(concatenation)s 6278(within)s 6946(paragraphs)s 220 fnt5 266 11772(@OneCol)m -240 fnt3 1338 11777(object)m 240 fnt1 3816 11775(Hide)m 4337(all)s +6760(top-justi\207cation)s 240 fnt4 266 12065(object)m 220 fnt6 974 12060(&)m +240 fnt4 1116 12065(gap)m 1589(object)s 240 fnt1 3816 12063(Horizontal)m +4893(concatenation)s 6278(within)s 6946(paragraphs)s 220 fnt6 266 11772(@OneCol)m +240 fnt4 1338 11777(object)m 240 fnt1 3816 11775(Hide)m 4337(all)s 4630(b)s 4(ut)k 4992(one)s 5394(column)s 6169(mark)s -6721(of)s 240 fnt3 6992 11777(object)m 220 fnt5 266 11484(@OneRo)m 3(w)k -240 fnt3 1457 11489(object)m 240 fnt1 3816 11487(Hide)m 4337(all)s +6721(of)s 240 fnt4 6992 11777(object)m 220 fnt6 266 11484(@OneRo)m 3(w)k +240 fnt4 1457 11489(object)m 240 fnt1 3816 11487(Hide)m 4337(all)s 4630(b)s 4(ut)k 4992(one)s 5394(ro)s 6(w)k -5814(mark)s 6366(of)s 240 fnt3 6637 11489(object)m 266 11201(font)m -220 fnt5 762 11196(@F)m 6(ont)k 240 fnt3 1534 11201(object)m -240 fnt1 3816 11199(Render)m 240 fnt3 4567 11201(object)m 240 fnt1 -5215 11199(in)m 5458(nominated)s 6526(font)s 240 fnt3 266 10913(br)m 8(eakstyle)k -220 fnt5 1353 10908(@Break)m 240 fnt3 2269 10913(object)m 240 fnt1 -3816 10911(Break)m 4448(paragraphs)s 5548(of)s 240 fnt3 5819 10913(object)m -240 fnt1 6467 10911(in)m 6710(nominated)s 7778(style)s 240 fnt3 -266 10625(spacestyle)m 220 fnt5 1361 10620(@Space)m 240 fnt3 2318 10625(object)m +5814(mark)s 6366(of)s 240 fnt4 6637 11489(object)m 266 11201(font)m +220 fnt6 762 11196(@F)m 6(ont)k 240 fnt4 1534 11201(object)m +240 fnt1 3816 11199(Render)m 240 fnt4 4567 11201(object)m 240 fnt1 +5215 11199(in)m 5458(nominated)s 6526(font)s 240 fnt4 266 10913(br)m 8(eakstyle)k +220 fnt6 1353 10908(@Break)m 240 fnt4 2269 10913(object)m 240 fnt1 +3816 10911(Break)m 4448(paragraphs)s 5548(of)s 240 fnt4 5819 10913(object)m +240 fnt1 6467 10911(in)m 6710(nominated)s 7778(style)s 240 fnt4 +266 10625(spacestyle)m 220 fnt6 1361 10620(@Space)m 240 fnt4 2318 10625(object)m 240 fnt1 3816 10623(Render)m 4567(spaces)s 5242(between)s 6096(w)s 2(ords)k -6730(in)s 6973(nominated)s 8041(style)s 240 fnt3 266 10337(length)m -220 fnt5 979 10332(@Wide)m 240 fnt3 1813 10337(object)m 240 fnt1 -3816 10335(Render)m 240 fnt3 4567 10337(object)m 240 fnt1 5215 10335(to)m -5454(width)s 240 fnt3 6056 10337(length)m 266 10049(length)m 220 fnt5 -979 10044(@High)m 240 fnt3 1758 10049(object)m 240 fnt1 3816 10047(Render)m -240 fnt3 4567 10049(object)m 240 fnt1 5215 10047(to)m 5454(height)s -240 fnt3 6112 10049(length)m 220 fnt5 266 9756(@HExpand)m 240 fnt3 +6730(in)s 6973(nominated)s 8041(style)s 240 fnt4 266 10337(length)m +220 fnt6 979 10332(@Wide)m 240 fnt4 1813 10337(object)m 240 fnt1 +3816 10335(Render)m 240 fnt4 4567 10337(object)m 240 fnt1 5215 10335(to)m +5454(width)s 240 fnt4 6056 10337(length)m 266 10049(length)m 220 fnt6 +979 10044(@High)m 240 fnt4 1758 10049(object)m 240 fnt1 3816 10047(Render)m +240 fnt4 4567 10049(object)m 240 fnt1 5215 10047(to)m 5454(height)s +240 fnt4 6112 10049(length)m 220 fnt6 266 9756(@HExpand)m 240 fnt4 1499 9761(object)m 240 fnt1 3816 9759(Expand)m 4606(horizontal)s 5630(g)s 1(aps)k 6119(to)s 6358(\207ll)s 6678(a)s 4(v)k 6(ailable)k -7586(space)s 220 fnt5 266 9468(@VExpand)m 240 fnt3 1487 9473(object)m +7586(space)s 220 fnt6 266 9468(@VExpand)m 240 fnt4 1487 9473(object)m 240 fnt1 3816 9471(Expand)m 4606(v)s 3(ertical)k 5373(g)s 1(aps)k 5862(to)s 6101(\207ll)s 6421(a)s 4(v)k 6(ailable)k -7329(space)s 220 fnt5 266 9180(@HScale)m 240 fnt3 1307 9185(object)m +7329(space)s 220 fnt6 266 9180(@HScale)m 240 fnt4 1307 9185(object)m 240 fnt1 3816 9183(Horizontal)m 4893(geometrical)s 6075(scaling)s 6805(to)s 7044(\207ll)s 7364(a)s 4(v)k 6(ailable)k 8272(space)s -220 fnt5 266 8892(@VScale)m 240 fnt3 1295 8897(object)m 240 fnt1 +220 fnt6 266 8892(@VScale)m 240 fnt4 1295 8897(object)m 240 fnt1 3816 8895(V)m 26(ertical)k 4613(geometrical)s 5795(scaling)s 6525(to)s 6764(\207ll)s 7084(a)s 4(v)k 6(ailable)k 7992(space)s -240 fnt3 266 8609(angle)m 220 fnt5 911 8604(@Rotate)m 240 fnt3 -1892 8609(object)m 240 fnt1 3816 8607(Rotate)m 240 fnt3 4496 8609(object)m -240 fnt1 5144 8607(by)m 240 fnt3 5438 8609(angle)m 266 8321(P)m 19(ostScript)k -220 fnt5 1367 8316(@Gr)m 2(aphic)k 240 fnt3 2471 8321(object)m +240 fnt4 266 8609(angle)m 220 fnt6 911 8604(@Rotate)m 240 fnt4 +1892 8609(object)m 240 fnt1 3816 8607(Rotate)m 240 fnt4 4496 8609(object)m +240 fnt1 5144 8607(by)m 240 fnt4 5438 8609(angle)m 266 8321(P)m 19(ostScript)k +220 fnt6 1367 8316(@Gr)m 2(aphic)k 240 fnt4 2471 8321(object)m 240 fnt1 3816 8319(Escape)m 4549(to)s 4788(graphics)s 5649(language)s -220 fnt5 266 8028(@Ne)m 6(xt)k 240 fnt3 1050 8033(object)m +220 fnt6 266 8028(@Ne)m 6(xt)k 240 fnt4 1050 8033(object)m 240 fnt1 3816 8031(Add)m 4287(1)s 4442(to)s 4681(an)s -4964(object)s 5608(denoting)s 6499(a)s 6665(number)s 240 fnt3 -266 7745(object)m 220 fnt5 974 7740(@Case)m 240 fnt3 1821 7745(alternatives)m +4964(object)s 5608(denoting)s 6499(a)s 6665(number)s 240 fnt4 +266 7745(object)m 220 fnt6 974 7740(@Case)m 240 fnt4 1821 7745(alternatives)m 240 fnt1 3816 7743(Select)m 4459(from)s 4983(a)s 5149(set)s 5474(of)s 5745(alternati)s 6(v)k 3(e)k 6799(objects)s -240 fnt3 266 7457(identi\207er)m 220 fnt5 1254 7452(&&)m 240 fnt3 -1662 7457(object)m 240 fnt1 3816 7455(Cross)m 4412(reference)s 240 fnt3 -266 7169(cr)m 10(oss-r)k 8(efer)k 8(ence)k 220 fnt5 -1839 7164(@Open)m 240 fnt3 2705 7169(object)m 240 fnt1 3816 7167(Retrie)m 6(v)k 3(e)k +240 fnt4 266 7457(identi\207er)m 220 fnt6 1254 7452(&&)m 240 fnt4 +1662 7457(object)m 240 fnt1 3816 7455(Cross)m 4412(reference)s 240 fnt4 +266 7169(cr)m 10(oss-r)k 8(efer)k 8(ence)k 220 fnt6 +1839 7164(@Open)m 240 fnt4 2705 7169(object)m 240 fnt1 3816 7167(Retrie)m 6(v)k 3(e)k 4672(v)s 6(alue)k 5240(from)s 5764(cross)s 6306(reference)s -240 fnt3 266 6881(cr)m 10(oss-r)k 8(efer)k 8(ence)k -220 fnt5 1839 6876(@T)m 26(agged)k 240 fnt3 2888 6881(object)m +240 fnt4 266 6881(cr)m 10(oss-r)k 8(efer)k 8(ence)k +220 fnt6 1839 6876(@T)m 26(agged)k 240 fnt4 2888 6881(object)m 240 fnt1 3816 6879(Attach)m 4510(cross)s 5052(referencing)s 6192(tag)s 6537(to)s 6776(object)s 200 fnt2 1346 6226(Figur)m 3(e)k 1954(1.)s 200 fnt1 2196 6227(The)m 2552(23)s 2789(primiti)s 5(v)k 3(e)k @@ -2280,9 +2325,9 @@ grestore 0 4639(T)m 19(o)k 337(place)s 934(tw)s 2(o)k 1381(arbitrary)s 2294(objects)s 3059(side)s 3537(by)s 3868(side,)s 4398(we)s 4770(use)s 5182(the)s -5567(in\207x)s 6099(operator)s 220 fnt5 6992 4636(|)m 240 fnt1 +5567(in\207x)s 6099(operator)s 220 fnt6 6992 4636(|)m 240 fnt1 7029 4639(,)m 7173(denoting)s 8102(horizontal)s 0 4351(concatenation.)m 1492(F)s 3(or)k -1881(e)s 3(xample,)k 220 fnt5 480 3850(USA |0.2i A)m 6(ustr)k 2(alia)k +1881(e)s 3(xample,)k 220 fnt6 480 3850(USA |0.2i A)m 6(ustr)k 2(alia)k 240 fnt1 0 3395(produces)m 915(the)s 1263(object)s 476 166 0 57 240 288 60 480 2889 LoutGr2 grestore save gsave 200 dict begin lfigdict begin grestore @@ -2336,7 +2381,7 @@ grestore 6205(of)s 6491(the)s 6855(objects)s 7598(relati)s 6(v)k 3(e)k 8376(to)s 8631(each)s 0 2150(other;)m 611(their)s 1116(horizontal)s 2148(separation)s 3196(is)s 3414(determined)s 4555(by)s 4857(the)s -240 fnt3 5214 2152(gap)m 240 fnt1 5635 2150(attached)m 6497(to)s +240 fnt4 5214 2152(gap)m 240 fnt1 5635 2150(attached)m 6497(to)s 6744(the)s 7101(operator)s 9(,)k 8003(in)s 8254(this)s 8659(case)s 0 1862(0.2)m 361(inches.)s 1143(W)s 19(e)k 1519(think)s 2080(of)s 2358(the)s 2713(g)s 1(ap)k @@ -2344,12 +2389,12 @@ grestore 5349(although)s 6251(strictly)s 6974(it)s 7174(is)s 7391(a)s 7564(third)s 8081(parameter)s 13(.)k 0 1574(It)m 205(may)s 671(be)s 953(omitted,)s 1790(def)s 2(aulting)k 2810(to)s -220 fnt5 3049 1571(0i)m 240 fnt1 3205 1574(.)m 240 fnt3 +220 fnt6 3049 1571(0i)m 240 fnt1 3205 1574(.)m 240 fnt4 480 1202(V)m 26(ertical)k 1294(concatenation)s 240 fnt1 2644 1200(,)m 2762(denoted)s 3590(by)s 3895(the)s 4254(in\207x)s 4760(operator)s -220 fnt5 5627 1197(/)m 240 fnt1 5691 1200(,)m 5809(is)s +220 fnt6 5627 1197(/)m 240 fnt1 5691 1200(,)m 5809(is)s 6031(the)s 6390(same)s 6948(apart)s 7497(from)s 8032(the)s -8392(change)s 0 912(of)m 271(direction:)s 220 fnt5 480 461(A)m 6(ustr)k 2(alia /0.1i USA)k +8392(change)s 0 912(of)m 271(direction:)s 220 fnt6 480 461(A)m 6(ustr)k 2(alia /0.1i USA)k grestore 0 0 0 0 240 288 60 1417 -15423 LoutGr2 @@ -2371,9 +2416,15 @@ showpage %%+ font Helvetica %%+ font Times-Italic /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Helvetica -/Helveticafnt5 vec2 /Helvetica LoutRecode -/fnt5 { /Helveticafnt5 LoutFont } def +/Helveticafnt6 vec2 /Helvetica LoutRecode +/fnt6 { /Helveticafnt6 LoutFont } def +%%IncludeResource: font Times-Italic +/Times-Italicfnt4 vec2 /Times-Italic LoutRecode +/fnt4 { /Times-Italicfnt4 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -2440,11 +2491,11 @@ grestore 3233(0.1)s 3568(inch)s 4037(g)s 1(ap.)k 480 11612(Consider)m 1404(no)s 6(w)k 1865(what)s 2390(happens)s 3226(when)s 3802(horizontal)s 4826(and)s 5230(v)s 3(ertical)k 5997(are)s -6344(combined:)s 220 fnt5 1000 11111({)m 1186(USA)s 2442(|0.2i)s +6344(combined:)s 220 fnt6 1000 11111({)m 1186(USA)s 2442(|0.2i)s 2958(A)s 6(ustr)k 2(alia)k 3919(})s 480 10823(/0.1i)m 1000({)s 1186(W)s 8(ashington)k 2442(|)s 2958(Canberr)s 2(a)k 3987(})s 240 fnt1 0 10324(The)m 445(tw)s 2(o)k -872(parameters)s 1987(of)s 220 fnt5 2275 10321(/)m 240 fnt1 +872(parameters)s 1987(of)s 220 fnt6 2275 10321(/)m 240 fnt1 2416 10324(no)m 6(w)k 2895(ha)s 4(v)k 3(e)k 3413(tw)s 2(o)k 3840(column)s 4632(marks)s 5284(each,)s 5846(and)s 6268(the)s 3(y)k 6748(will)s 7191(be)s @@ -2548,11 +2599,11 @@ grestore grestore end end restore grestore -0 8720(The)m 220 fnt5 +0 8720(The)m 220 fnt6 425 8717(0.2i)m 240 fnt1 821 8720(g)m 1(ap)k 1216(separates)s 2139(columns,)s 3054(not)s 3416(indi)s 6(vidual)k 4432(items)s 4997(in)s 5237(columns,)s 6152(so)s 6414(a)s 6577(g)s 1(ap)k -6972(attached)s 7823(to)s 8059(the)s 8403(second)s 220 fnt5 +6972(attached)s 7823(to)s 8059(the)s 8403(second)s 220 fnt6 0 8429(|)m 240 fnt1 96 8432(w)m 2(ould)k 749(serv)s 3(e)k 1304(no)s 1595(purpose;)s 2464(an)s 3(y)k 2859(such)s 3353(g)s 1(ap)k 3749(is)s 3957(ignored.)s 4851(If)s @@ -2565,9 +2616,9 @@ grestore 959(all)s 1263(a)s 4(v)k 6(ailable)k 2182(for)s 2531(mer)s 4(ging)k 3389(with)s 3882(neighbouring)s 5223(marks)s 5869(by)s 6174(other)s 6736(concatenation)s 8133(operators.)s 0 7568(The)m -428(precedence)s 1559(of)s 220 fnt5 1830 7565(|)m 240 fnt1 +428(precedence)s 1559(of)s 220 fnt6 1830 7565(|)m 240 fnt1 1927 7568(is)m 2137(higher)s 2808(than)s 3277(the)s 3625(precedence)s -4756(of)s 220 fnt5 5027 7565(/)m 240 fnt1 5091 7568(,)m +4756(of)s 220 fnt6 5027 7565(/)m 240 fnt1 5091 7568(,)m 5198(so)s 5464(the)s 5812(braces)s 6473(could)s 7063(be)s 7345(omitted.)s 480 7194(When)m 1131(lines)s 1656(of)s 1950(te)s 3(xt)k 2387(are)s 2757(concatenated,)s 4135(it)s 4349(is)s 4582(con)s 9(v)k 3(entional)k @@ -2580,19 +2631,19 @@ grestore 2417(for)s 2743(measurement)s 4065(e)s 6(v)k 4(olv)k 3(ed)k 4855(o)s 3(v)k 3(er)k 5322(the)s 5658(years)s 6200(into)s 6613(a)s 6767(system)s 7478(of)s 7737(six)s -240 fnt3 8059 6620(gap)m 8459(modes)s 240 fnt1 0 6330(\(Figure)m +240 fnt4 8059 6620(gap)m 8459(modes)s 240 fnt1 0 6330(\(Figure)m 769(2\),)s 1085(e)s 3(xpressed)k 2094(by)s 2398(appending)s 3460(a)s 3636(letter)s 4195(to)s 4445(the)s 4803(length.)s -5576(F)s 3(or)k 5975(e)s 3(xample,)k 220 fnt5 +5576(F)s 3(or)k 5975(e)s 3(xample,)k 220 fnt6 6899 6327(|0.2i)m 240 fnt1 7366 6330(is)m 7586(an)s 7880(abbre)s 6(viation)k -0 6042(for)m 220 fnt5 377 6039(|0.2ie)m 240 fnt1 901 6042(,)m +0 6042(for)m 220 fnt6 377 6039(|0.2ie)m 240 fnt1 901 6042(,)m 1047(meaning)s 1963(0.2)s 2356(inches)s 3057(measured)s 4070(from)s -4633(edge)s 5180(to)s 5458(edge;)s 220 fnt5 6061 6039(|0.3ix)m +4633(edge)s 5180(to)s 5458(edge;)s 220 fnt6 6061 6039(|0.3ix)m 240 fnt1 6678 6042(produces)m 7632(a)s 7837(0.3)s 8220(inch)s 8728(g)s 1(ap)k 0 5754(measured)m 972(from)s 1493(mark)s 2043(to)s 2279(mark)s 2829(and)s 3230(widened)s 4097(if)s 4311(necessary)s 5292(to)s 5528(pre)s 6(v)k 3(ent)k -6294(o)s 3(v)k 3(erstriking;)k 7552(and)s 220 fnt5 +6294(o)s 3(v)k 3(erstriking;)k 7552(and)s 220 fnt6 7954 5751(|2.5it)m 240 fnt1 8478 5754(places)m 0 5466(its)m 273(right)s 781(parameter)s 1792(2.5)s 2135(inches)s 2794(from)s 3314(the)s 3659(current)s 4392(left)s 4766(mar)s 4(gin,)k 5543(irrespecti)s 6(v)k 3(e)k @@ -2602,14 +2653,14 @@ grestore 4098(units)s 4606(of)s 4870(measurement)s 6197(\(inches,)s 6987(centimetres,)s 8186(multiples)s 0 4890(of)m 288(the)s 654(current)s 1407(font)s 1870(size,)s 2365(etc.\),)s 2907(the)s 3272(most)s 3815(interesting)s -4894(being)s 5496(the)s 220 fnt5 5862 4887(r)m 240 fnt1 -6012 4890(unit:)m 6568(one)s 220 fnt5 6987 4887(r)m 240 fnt1 +4894(being)s 5496(the)s 220 fnt6 5862 4887(r)m 240 fnt1 +6012 4890(unit:)m 6568(one)s 220 fnt6 6987 4887(r)m 240 fnt1 7138 4890(is)m 7365(the)s 7731(column)s 8524(width)s 0 4602(minus)m 635(the)s 982(width)s 1583(of)s 1852(the)s 2199(follo)s 6(wing)k -3175(object,)s 3864(so)s 4129(that)s 220 fnt5 4546 4599(|1r)m -8(t)k +3175(object,)s 3864(so)s 4129(that)s 220 fnt6 4546 4599(|1r)m -8(t)k 240 fnt1 4921 4602(produces)m 5835(suf\207cient)s 6783(space)s 7368(to)s 7606(right)s 8116(justify)s 8778(the)s 0 4314(follo)m 6(wing)k -987(object,)s 1688(and)s 220 fnt5 2103 4311(|0.5r)m -8(t)k +987(object,)s 1688(and)s 220 fnt6 2103 4311(|0.5r)m -8(t)k 240 fnt1 2673 4314(to)m 2923(center)s 3576(it.)s 3883(These)s 4520(features)s 5337(implement)s 6429(spacings)s 7315(needed)s 8061(in)s 8315(practice)s 0 4026(rather)m 608(than)s 1069(suggested)s 2063(by)s @@ -2622,7 +2673,7 @@ grestore 7567(only)s 8051(the)s 8403(second)s 0 3076(should)m 697(be)s 979(visible)s 1672(outside)s 2419(the)s 2767(object:)s gsave 480 2245 translate -240 fnt3 156 491 0 288 240 288 12 LoutGraphic +240 fnt4 156 491 0 288 240 288 12 LoutGraphic gsave grestore save gsave 200 dict begin lfigdict begin grestore @@ -2653,7 +2704,7 @@ grestore end end restore grestore 0 1794(This)m 493(is)s 721(a)s 905(common)s -1817(problem,)s 2739(and)s 3161(accordingly)s 4361(a)s 220 fnt5 +1817(problem,)s 2739(and)s 3161(accordingly)s 4361(a)s 220 fnt6 4545 1791(@OneRo)m 3(w)k 240 fnt1 5694 1794(operator)m 6567(w)s 2(as)k 7006(introduced)s 8105(for)s 8461(hiding)s 0 1506(all)m 291(b)s 4(ut)k 650(one)s 1050(of)s 1318(the)s 1663(ro)s 6(w)k @@ -2662,8 +2713,8 @@ grestore 6686(is)s 6893(the)s 7238(survi)s 6(v)k 4(or)k 9(,)k 8121(b)s 4(ut)k 8480(a)s 8643(later)s 0 1218(mark)m 552(can)s 941(be)s 1223(chosen)s 1945(by)s 2239(pre\207xing)s -220 fnt5 3156 1215(^)m 240 fnt1 3322 1218(to)m 3561(the)s -3909(preceding)s 4905(concatenation)s 6290(operator:)s 220 fnt5 480 717(@OneRo)m 3(w { X ^/2p @HLine /2p )k 19(Y })k +220 fnt6 3156 1215(^)m 240 fnt1 3322 1218(to)m 3561(the)s +3909(preceding)s 4905(concatenation)s 6290(operator:)s 220 fnt6 480 717(@OneRo)m 3(w { X ^/2p @HLine /2p )k 19(Y })k grestore 0 0 0 0 240 288 60 1417 -15423 LoutGr2 @@ -2687,11 +2738,20 @@ showpage %%+ font Symbol %%+ font Times-Bold /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Helvetica -/Helveticafnt5 vec2 /Helvetica LoutRecode -/fnt5 { /Helveticafnt5 LoutFont } def +/Helveticafnt6 vec2 /Helvetica LoutRecode +/fnt6 { /Helveticafnt6 LoutFont } def +%%IncludeResource: font Times-Italic +/Times-Italicfnt4 vec2 /Times-Italic LoutRecode +/fnt4 { /Times-Italicfnt4 LoutFont } def %%IncludeResource: font Symbol -/fnt4 { /Symbol LoutFont } def +/fnt5 { /Symbol LoutFont } def +%%IncludeResource: font Times-Bold +/Times-Boldfnt2 vec2 /Times-Bold LoutRecode +/fnt2 { /Times-Boldfnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -2709,16 +2769,16 @@ grestore 6693 8221 0 8221 240 288 60 1186 5201 LoutGr2 grestore save gsave 200 dict begin lfigdict begin grestore -0 7447(Edge-to-edge)m 220 fnt5 -1786 7444(|)m 240 fnt3 1843 7449(length)m 220 fnt5 2456 7444(e)m -240 fnt1 0 6238(Hyphenation)m 220 fnt5 1786 6235(|)m 240 fnt3 -1843 6240(length)m 220 fnt5 2456 6235(h)m 240 fnt1 0 5029(Ov)m 3(erstrik)k 2(e)k -220 fnt5 1786 5026(|)m 240 fnt3 1843 5031(length)m 220 fnt5 -2456 5026(o)m 240 fnt1 0 3820(Mark-to-mark)m 220 fnt5 1786 3817(|)m -240 fnt3 1843 3822(length)m 220 fnt5 2456 3817(x)m 240 fnt1 -0 2611(K)m 6(erning)k 220 fnt5 1786 2608(|)m 240 fnt3 -1843 2613(length)m 220 fnt5 2456 2608(k)m 240 fnt1 0 1402(T)m 19(ab)k 4(ulation)k -220 fnt5 1786 1399(|)m 240 fnt3 1843 1404(length)m 220 fnt5 +0 7447(Edge-to-edge)m 220 fnt6 +1786 7444(|)m 240 fnt4 1843 7449(length)m 220 fnt6 2456 7444(e)m +240 fnt1 0 6238(Hyphenation)m 220 fnt6 1786 6235(|)m 240 fnt4 +1843 6240(length)m 220 fnt6 2456 6235(h)m 240 fnt1 0 5029(Ov)m 3(erstrik)k 2(e)k +220 fnt6 1786 5026(|)m 240 fnt4 1843 5031(length)m 220 fnt6 +2456 5026(o)m 240 fnt1 0 3820(Mark-to-mark)m 220 fnt6 1786 3817(|)m +240 fnt4 1843 3822(length)m 220 fnt6 2456 3817(x)m 240 fnt1 +0 2611(K)m 6(erning)k 220 fnt6 1786 2608(|)m 240 fnt4 +1843 2613(length)m 220 fnt6 2456 2608(k)m 240 fnt1 0 1402(T)m 19(ab)k 4(ulation)k +220 fnt6 1786 1399(|)m 240 fnt4 1843 1404(length)m 220 fnt6 2456 1399(t)m gsave 3291 0 translate 240 fnt1 3402 8221 0 8221 240 288 60 LoutGraphic @@ -2837,7 +2897,7 @@ grestore grestore grestore -180 fnt3 1534 7192(length)m gsave +180 fnt4 1534 7192(length)m gsave 567 6304 translate 180 fnt1 680 340 0 340 180 288 45 LoutGraphic gsave @@ -3165,9 +3225,9 @@ grestore grestore grestore -180 fnt1 941 3536(max)m 180 fnt4 1256 3531(\()m 180 fnt3 -1319 3537(length)m 180 fnt4 1774 3531(,)m 180 fnt3 1854 3537(a)m -180 fnt4 1994 3531(+)m 180 fnt3 2145 3537(b)m 180 fnt4 +180 fnt1 941 3536(max)m 180 fnt5 1256 3531(\()m 180 fnt4 +1319 3537(length)m 180 fnt5 1774 3531(,)m 180 fnt4 1854 3537(a)m +180 fnt5 1994 3531(+)m 180 fnt4 2145 3537(b)m 180 fnt5 2240 3531(\))m gsave 1247 4363 translate 180.0000 rotate @@ -3241,7 +3301,7 @@ grestore grestore grestore -180 fnt3 920 4431(a)m gsave +180 fnt4 920 4431(a)m gsave 2551 4363 translate 180.0000 rotate gsave @@ -3424,9 +3484,9 @@ grestore grestore 180 fnt1 -999 2240(max)m 180 fnt4 1314 2235(\()m 180 fnt3 1377 2241(length)m -180 fnt4 1832 2235(,)m 180 fnt3 1912 2241(a)m 180 fnt4 -2007 2235(,)m 180 fnt3 2087 2241(b)m 180 fnt4 2182 2235(\))m +999 2240(max)m 180 fnt5 1314 2235(\()m 180 fnt4 1377 2241(length)m +180 fnt5 1832 2235(,)m 180 fnt4 1912 2241(a)m 180 fnt5 +2007 2235(,)m 180 fnt4 2087 2241(b)m 180 fnt5 2182 2235(\))m gsave 1247 3067 translate 180.0000 rotate @@ -3500,7 +3560,7 @@ grestore grestore grestore -180 fnt3 920 3135(a)m gsave +180 fnt4 920 3135(a)m gsave 2551 3067 translate 180.0000 rotate gsave @@ -3762,24 +3822,24 @@ end end restore grestore 200 fnt2 180 4638(Figur)m 3(e)k 788(2.)s 200 fnt1 1030 4639(The)m 1386(six)s 1664(g)s 1(ap)k -1995(modes)s 2557(\()s 200 fnt3 2618 4640(length)m 200 fnt1 +1995(modes)s 2557(\()s 200 fnt4 2618 4640(length)m 200 fnt1 3162 4639(is)m 3336(an)s 3(y)k 3666(length\).)s 4367(Hyphenation)s 5444(mode)s 5933(has)s 6240(an)s 6475(e)s 3(xtra)k 6919(property)s 7639(not)s 7944(sho)s 5(wn)k 8507(here.)s 240 fnt1 0 4008(has)m 396(the)s 770(desired)s 1545(result,)s -2208(where)s 220 fnt5 2874 4005(2p)m 240 fnt1 3197 4008(is)m -3433(tw)s 2(o)k 3870(points)s 4532(and)s 220 fnt5 +2208(where)s 220 fnt6 2874 4005(2p)m 240 fnt1 3197 4008(is)m +3433(tw)s 2(o)k 3870(points)s 4532(and)s 220 fnt6 4962 4005(@HLine)m 240 fnt1 5836 4008(is)m 6072(an)s 6381(easy)s 6887(combination)s 8166(of)s 8464(Lout')s 13(s)k 0 3720(graphics)m 861(operators.)s 1914(A)s 2144(similar)s 2866(operator)s 9(,)k -220 fnt5 3760 3717(@OneCol)m 240 fnt1 4712 3720(,)m 4819(hides)s +220 fnt6 3760 3717(@OneCol)m 240 fnt1 4712 3720(,)m 4819(hides)s 5375(column)s 6150(marks.)s 480 3346(A)m 728(v)s 6(ariant)k -1463(of)s 220 fnt5 1753 3343(/)m 240 fnt1 1895 3346(called)m -220 fnt5 2542 3343(//)m 240 fnt1 2745 3346(is)m 2974(pro)s 3(vided)k +1463(of)s 220 fnt6 1753 3343(/)m 240 fnt1 1895 3346(called)m +220 fnt6 2542 3343(//)m 240 fnt1 2745 3346(is)m 2974(pro)s 3(vided)k 3898(which)s 4558(performs)s 5490(v)s 3(ertical)k 6275(concatenation)s 7679(b)s 4(ut)k 8059(ignores)s 8833(all)s 0 3058(column)m 775(marks)s 1410(and)s 1814(simply)s 2519(left-justi\207es)s 3709(its)s -3985(tw)s 2(o)k 4395(parameters:)s 220 fnt5 480 2557(Heading //0.1i)m +3985(tw)s 2(o)k 4395(parameters:)s 220 fnt6 480 2557(Heading //0.1i)m 480 2269(A |0.2i B /0.1i)m 480 1981(C | D)m 240 fnt1 0 1526(has)m 370(result)s 480 1073(Heading)m 480 716(A)m 938(B)s 480 410(C)m 938(D)s @@ -3805,11 +3865,20 @@ showpage %%+ font Times-Italic %%+ font Symbol /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Helvetica -/Helveticafnt5 vec2 /Helvetica LoutRecode -/fnt5 { /Helveticafnt5 LoutFont } def +/Helveticafnt6 vec2 /Helvetica LoutRecode +/fnt6 { /Helveticafnt6 LoutFont } def +%%IncludeResource: font Times-Bold +/Times-Boldfnt2 vec2 /Times-Bold LoutRecode +/fnt2 { /Times-Boldfnt2 LoutFont } def +%%IncludeResource: font Times-Italic +/Times-Italicfnt4 vec2 /Times-Italic LoutRecode +/fnt4 { /Times-Italicfnt4 LoutFont } def %%IncludeResource: font Symbol -/fnt4 { /Symbol LoutFont } def +/fnt5 { /Symbol LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -3828,7 +3897,7 @@ grestore 883(that)s 1325(spanning)s 2267(columns)s 3153(in)s 3420(tables)s 4052(moti)s 6(v)k 6(ate)k 4956(the)s 5328(inclusion)s 6286(of)s 6581(this)s 7001(operator)s 13(.)k 7972(There)s -8609(is)s 8843(an)s 0 12965(analogous)m 220 fnt5 1029 12962(||)m +8609(is)s 8843(an)s 0 12965(analogous)m 220 fnt6 1029 12962(||)m 240 fnt1 1191 12965(operator)m 13(.)k 2145(The)s 2581(author)s 3259(w)s 2(ould)k 3922(ha)s 4(v)k 3(e)k 4430(preferred)s 5370(to)s 5616(lea)s 4(v)k 3(e)k @@ -3836,57 +3905,57 @@ grestore 0 12677(complicate)m 1104(the)s 1452(implementation,)s 3059(and)s 3463(it)s 3655(is)s 3865(interesting)s 4926(to)s 5165(e)s 3(xamine)k 6028(the)s 6376(prospects)s 7330(of)s 7601(doing)s 8200(so.)s -480 12303(The)m 220 fnt5 953 12300(//)m 240 fnt1 1184 12303(operator)m +480 12303(The)m 220 fnt6 953 12300(//)m 240 fnt1 1184 12303(operator)m 2086(is)s 2342(formally)s 3263(redundant,)s 4373(because)s 5232(in)s -5521(general)s 6324(the)s 6718(e)s 3(xpression)k 220 fnt5 +5521(general)s 6324(the)s 6718(e)s 3(xpression)k 220 fnt6 7841 12300(x // y)m 240 fnt1 8409 12303(can)m 8844(be)s 0 12015(replaced)m -867(by)s 220 fnt5 480 11514(@OneCol { | x } /)m 480 11226(@OneCol { | y })m 240 fnt1 -0 10728(for)m 338(an)s 3(y)k 734(objects)s 220 fnt5 -1462 10725(x)m 240 fnt1 1629 10728(and)m 220 fnt5 2032 10725(y)m +867(by)s 220 fnt6 480 11514(@OneCol { | x } /)m 480 11226(@OneCol { | y })m 240 fnt1 +0 10728(for)m 338(an)s 3(y)k 734(objects)s 220 fnt6 +1462 10725(x)m 240 fnt1 1629 10728(and)m 220 fnt6 2032 10725(y)m 240 fnt1 2140 10728(.)m 2304(By)s 2637(concatenating)s 4017(an)s 4300(empty)s 4951(object)s 5594(at)s 5826(the)s 6173(left)s -6549(of)s 220 fnt5 6820 10725(x)m 240 fnt1 6987 10728(and)m +6549(of)s 220 fnt6 6820 10725(x)m 240 fnt1 6987 10728(and)m 7390(hiding)s 8055(all)s 8347(b)s 4(ut)k 8708(that)s 0 10440(empty)m 641(object')s 13(s)k 1423(column)s 2186(mark,)s 2772(we)s 3095(ef)s 6(fecti)k 6(v)k 3(ely)k -4143(shift)s 220 fnt5 4615 10437(x)m 240 fnt1 4723 10440(')m 13(s)k +4143(shift)s 220 fnt6 4615 10437(x)m 240 fnt1 4723 10440(')m 13(s)k 4921(column)s 5684(mark)s 6224(to)s 6452(its)s 6716(left)s 7081(edge.)s 7685(The)s 8101(same)s 8636(goes)s 0 10152(for)m -220 fnt5 349 10149(y)m 240 fnt1 457 10152(,)m 575(so)s -852(the)s 220 fnt5 1211 10149(/)m 240 fnt1 1347 10152(operator)m +220 fnt6 349 10149(y)m 240 fnt1 457 10152(,)m 575(so)s +852(the)s 220 fnt6 1211 10149(/)m 240 fnt1 1347 10152(operator)m 2214(has)s 2595(just)s 3011(one)s 3424(column)s 4211(mark)s 4774(to)s 5024(mer)s 4(ge,)k 5735(at)s 5978(the)s 6338(e)s 3(xtreme)k 7171(left,)s 7606(and)s 8021(its)s 8308(ef)s 6(fect)k 8916(is)s 0 9864(indistinguishable)m 1690(from)s -220 fnt5 2214 9861(//)m 240 fnt1 2339 9864(.)m 480 9490(Unfortunately)m 15(,)k -1915(if)s 220 fnt5 2134 9487(y)m 240 fnt1 2304 9490(consists)m +220 fnt6 2214 9861(//)m 240 fnt1 2339 9864(.)m 480 9490(Unfortunately)m 15(,)k +1915(if)s 220 fnt6 2134 9487(y)m 240 fnt1 2304 9490(consists)m 3114(of)s 3387(tw)s 2(o)k 3799(ro)s 6(ws)k -4311(separated)s 5274(by)s 220 fnt5 5570 9487(/)m 240 fnt1 +4311(separated)s 5274(by)s 220 fnt6 5570 9487(/)m 240 fnt1 5634 9490(,)m 5743(as)s 5995(in)s 6240(the)s 6590(e)s 3(xample)k 7455(abo)s 3(v)k 3(e,)k 8130(both)s 8616(ro)s 6(ws)k 0 9202(must)m 533(be)s 823(placed)s 1513(inside)s 2148(the)s -220 fnt5 2504 9199(@OneCol)m 240 fnt1 3456 9202(,)m 3571(and)s +220 fnt6 2504 9199(@OneCol)m 240 fnt1 3456 9202(,)m 3571(and)s 3983(the)s 4340(table)s 4868(cannot)s 5574(be)s 5864(entered)s 6633(in)s 6884(the)s 7240(simple)s 7942(ro)s 6(w-by-ro)k 6(w)k 0 8914(manner)m 777(that)s 1194(non-e)s 3(xpert)k 2287(users)s 2828(naturally)s 3731(e)s 3(xpect.)k 4515(Another)s 5359(adv)s 6(antage)k -6378(of)s 220 fnt5 6649 8911(//)m 240 fnt1 6833 8914(is)m +6378(of)s 220 fnt6 6649 8911(//)m 240 fnt1 6833 8914(is)m 7043(that)s 7460(its)s 7736(left)s 8112(parameter)s 0 8626(can)m 382(be)s 657(printed)s 1385(before)s 2044(its)s 2313(right)s 2817(parameter)s 3824(is)s 4027(kno)s 6(wn;)k 4779(this)s 5168(is)s 5371(important)s 6353(when)s 6922(the)s 7263(left)s 7633(parameter)s 8640(is)s 8843(an)s 0 8338(entire)m 599(page.)s 480 7964(The)m 960(\207fth)s 1468(and)s 1924(\207nal)s 2457(concatenation)s -3895(operator)s 9(,)k 220 fnt5 4841 7961(&)m 240 fnt1 +3895(operator)s 9(,)k 220 fnt6 4841 7961(&)m 240 fnt1 4983 7964(,)m 5143(is)s 5405(an)s 5741(e)s 3(xplicit)k 6567(v)s 3(ersion)k 7377(of)s 7701(the)s 8102(horizontal)s 0 7676(concatenation)m 1402(operator)s 2275(interpolated)s 3492(when)s 4085(objects)s 4830(are)s 5195(separated)s 6172(by)s 6483(white)s 7088(space.)s 7800(It)s 8022(is)s 8250(formally)s 0 7388(identical)m 907(to)s -220 fnt5 1177 7385(|)m 240 fnt1 1305 7388(e)m 3(xcept)k +220 fnt6 1177 7385(|)m 240 fnt1 1305 7388(e)m 3(xcept)k 2017(for)s 2386(taking)s 3068(higher)s 3770(precedence)s 4932(and)s 5367(being)s 5983(subject)s 6751(to)s 7021(replacement)s 8279(by)s -220 fnt5 8604 7385(//1vx)m 240 fnt1 0 7100(during)m 678(paragraph)s +220 fnt6 8604 7385(//1vx)m 240 fnt1 0 7100(during)m 678(paragraph)s 1691(breaking)s 2581(\(Section)s 3434(2.5\).)s 240 fnt2 0 6451(2.4.)m 471(Implementation)s 2159(of)s 2431(objects)s 3201(and)s 3642(concatenation)s 240 fnt1 480 5974(In)m 738(this)s 1136(section)s 1872(we)s @@ -3895,11 +3964,11 @@ grestore 552(alignment.)s 1672(The)s 2100(\207rst)s 2531(step)s 2969(is)s 3179(to)s 3418(use)s 3793(an)s 4076(operator)s 4932(precedence)s 6063(parser)s 6706(to)s 6945(con)s 9(v)k 3(ert)k -7710(input)s 8262(such)s 8758(as)s 220 fnt5 480 5185(a |0.5i b /0.2i c | d)m +7710(input)s 8262(such)s 8758(as)s 220 fnt6 480 5185(a |0.5i b /0.2i c | d)m 240 fnt1 0 4730(into)m 425(parse)s 985(trees)s 1486(such)s 1982(as)s gsave 480 3036 translate -240 fnt3 3396 1354 0 1298 240 288 12 LoutGraphic +240 fnt4 3396 1354 0 1298 240 288 12 LoutGraphic gsave grestore save gsave 200 dict begin lfigdict begin grestore @@ -3912,7 +3981,7 @@ grestore 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore -192 fnt4 136 106(\244)m +192 fnt5 136 106(\244)m grestore (T) lfigpromotelabels grestore @@ -3928,7 +3997,7 @@ grestore 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore -192 fnt4 156 121(|)m +192 fnt5 156 121(|)m grestore (T) lfigpromotelabels @@ -3945,7 +4014,7 @@ grestore 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore -192 fnt3 123 128(a)m +192 fnt4 123 128(a)m grestore (T) lfigpromotelabels grestore @@ -3972,8 +4041,8 @@ grestore 0.15 cm /lfigsolid [ lfigellipse ] lfigdopath pop pop grestore -192 fnt4 56 105(0)m 192 fnt3 -195 111(.)m 192 fnt4 270 105(5)m 192 fnt3 404 111(i)m +192 fnt5 56 105(0)m 192 fnt4 +195 111(.)m 192 fnt5 270 105(5)m 192 fnt4 404 111(i)m grestore (T) lfigpromotelabels @@ -4001,7 +4070,7 @@ grestore 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore -192 fnt3 123 105(b)m +192 fnt4 123 105(b)m grestore (T) lfigpromotelabels grestore @@ -4039,8 +4108,8 @@ grestore 0.15 cm /lfigsolid [ lfigellipse ] lfigdopath pop pop grestore -192 fnt4 56 105(0)m 192 fnt3 -195 111(.)m 192 fnt4 270 105(2)m 192 fnt3 410 111(i)m +192 fnt5 56 105(0)m 192 fnt4 +195 111(.)m 192 fnt5 270 105(2)m 192 fnt4 410 111(i)m grestore (T) lfigpromotelabels @@ -4068,7 +4137,7 @@ grestore 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore -192 fnt4 156 121(|)m +192 fnt5 156 121(|)m grestore (T) lfigpromotelabels grestore @@ -4084,7 +4153,7 @@ grestore 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore -192 fnt3 128 128(c)m +192 fnt4 128 128(c)m grestore (T) lfigpromotelabels grestore @@ -4138,7 +4207,7 @@ grestore 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore -192 fnt3 +192 fnt4 118 105(d)m grestore (T) lfigpromotelabels @@ -4172,7 +4241,7 @@ grestore 6419(of)s 6745(concatenation)s 8186(operators)s 0 2297(are)m 347(consolidated:)s gsave 480 648 translate -240 fnt3 2492 1359 0 1298 240 288 12 LoutGraphic +240 fnt4 2492 1359 0 1298 240 288 12 LoutGraphic gsave grestore save gsave 200 dict begin lfigdict begin grestore @@ -4185,7 +4254,7 @@ grestore 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore -192 fnt4 156 121(|)m +192 fnt5 156 121(|)m grestore (T) lfigpromotelabels grestore @@ -4201,7 +4270,7 @@ grestore 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore -192 fnt3 123 128(a)m +192 fnt4 123 128(a)m grestore (T) lfigpromotelabels grestore @@ -4228,9 +4297,9 @@ grestore 0.15 cm /lfigsolid [ lfigellipse ] lfigdopath pop pop grestore -192 fnt4 -56 105(0)m 192 fnt3 195 111(.)m 192 fnt4 270 105(2)m -192 fnt3 410 111(i)m +192 fnt5 +56 105(0)m 192 fnt4 195 111(.)m 192 fnt5 270 105(2)m +192 fnt4 410 111(i)m grestore (T) lfigpromotelabels grestore @@ -4257,7 +4326,7 @@ grestore 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore -192 fnt4 156 121(|)m +192 fnt5 156 121(|)m grestore (T) lfigpromotelabels grestore @@ -4273,7 +4342,7 @@ grestore 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore -192 fnt3 +192 fnt4 128 128(c)m grestore (T) lfigpromotelabels @@ -4301,8 +4370,8 @@ grestore 0.15 cm /lfigsolid [ lfigellipse ] lfigdopath pop pop grestore -192 fnt4 56 105(0)m 192 fnt3 195 111(.)m -192 fnt4 270 105(3)m 192 fnt3 402 111(i)m +192 fnt5 56 105(0)m 192 fnt4 195 111(.)m +192 fnt5 270 105(3)m 192 fnt4 402 111(i)m grestore (T) lfigpromotelabels grestore @@ -4329,7 +4398,7 @@ grestore 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore -192 fnt3 +192 fnt4 118 105(d)m grestore (T) lfigpromotelabels @@ -4358,9 +4427,9 @@ grestore grestore end end restore grestore -240 fnt4 3284 1886(\336)m gsave +240 fnt5 3284 1886(\336)m gsave 3825 648 translate -240 fnt3 2492 1359 0 1298 240 288 12 LoutGraphic +240 fnt4 2492 1359 0 1298 240 288 12 LoutGraphic gsave grestore save gsave 200 dict begin lfigdict begin grestore @@ -4373,7 +4442,7 @@ grestore 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore -192 fnt4 156 121(|)m +192 fnt5 156 121(|)m grestore (T) lfigpromotelabels @@ -4390,7 +4459,7 @@ grestore 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore -192 fnt3 123 128(a)m +192 fnt4 123 128(a)m grestore (T) lfigpromotelabels grestore @@ -4417,8 +4486,8 @@ grestore 0.15 cm /lfigsolid [ lfigellipse ] lfigdopath pop pop grestore -192 fnt4 56 105(0)m 192 fnt3 -195 111(.)m 192 fnt4 270 105(2)m 192 fnt3 410 111(i)m +192 fnt5 56 105(0)m 192 fnt4 +195 111(.)m 192 fnt5 270 105(2)m 192 fnt4 410 111(i)m grestore (T) lfigpromotelabels @@ -4446,7 +4515,7 @@ grestore 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore -192 fnt3 128 128(c)m +192 fnt4 128 128(c)m grestore (T) lfigpromotelabels grestore @@ -4473,8 +4542,8 @@ grestore 0.15 cm /lfigsolid [ lfigellipse ] lfigdopath pop pop grestore -192 fnt4 56 105(0)m 192 fnt3 -195 111(.)m 192 fnt4 270 105(3)m 192 fnt3 402 111(i)m +192 fnt5 56 105(0)m 192 fnt4 +195 111(.)m 192 fnt5 270 105(3)m 192 fnt4 402 111(i)m grestore (T) lfigpromotelabels @@ -4502,7 +4571,7 @@ grestore 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore -192 fnt3 118 105(d)m +192 fnt4 118 105(d)m grestore (T) lfigpromotelabels grestore @@ -4541,11 +4610,17 @@ showpage %%+ font Symbol %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def +%%IncludeResource: font Times-Italic +/Times-Italicfnt4 vec2 /Times-Italic LoutRecode +/fnt4 { /Times-Italicfnt4 LoutFont } def %%IncludeResource: font Symbol -/fnt4 { /Symbol LoutFont } def +/fnt5 { /Symbol LoutFont } def %%IncludeResource: font Helvetica -/Helveticafnt5 vec2 /Helvetica LoutRecode -/fnt5 { /Helveticafnt5 LoutFont } def +/Helveticafnt6 vec2 /Helvetica LoutRecode +/fnt6 { /Helveticafnt6 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -4582,86 +4657,86 @@ grestore 7674(tables.)s 8392(F)s 3(or)k 8778(the)s 0 11351(higher)m 678(le)s 6(v)k 3(els)k 1285(we)s 1628(apply)s 2222(recursi)s 6(v)k 3(e)k 3152(rules.)s 3788(Suppose)s -4664(that)s 240 fnt3 5090 11353(hgap)m 240 fnt4 5583 11345(\()m -240 fnt3 5675 11353(x)m 240 fnt4 5801 11345(,)m 240 fnt3 -5932 11353(g)m 240 fnt4 6066 11345(,)m 240 fnt3 6197 11353(y)m -240 fnt4 6319 11345(\))m 240 fnt1 6453 11351(returns)m 7175(the)s +4664(that)s 240 fnt4 5090 11353(hgap)m 240 fnt5 5583 11345(\()m +240 fnt4 5675 11353(x)m 240 fnt5 5801 11345(,)m 240 fnt4 +5932 11353(g)m 240 fnt5 6066 11345(,)m 240 fnt4 6197 11353(y)m +240 fnt5 6319 11345(\))m 240 fnt1 6453 11351(returns)m 7175(the)s 7531(desired)s 8287(distance)s 0 11063(between)m 846(the)s 1186(column)s -1952(marks)s 2579(of)s 2841(objects)s 240 fnt3 3561 11065(x)m -240 fnt1 3719 11063(and)m 240 fnt3 4114 11065(y)m 240 fnt1 +1952(marks)s 2579(of)s 2841(objects)s 240 fnt4 3561 11065(x)m +240 fnt1 3719 11063(and)m 240 fnt4 4114 11065(y)m 240 fnt1 4268 11063(when)m 4835(the)s 3(y)k 5290(are)s 5629(separated)s -6580(by)s 6866(g)s 1(ap)k 240 fnt3 7255 11065(g)m -240 fnt1 7369 11063(:)m 240 fnt3 7527 11065(right)m 240 fnt4 -8000 11057(\()m 240 fnt3 8075 11065(x)m 240 fnt4 8185 11057(\))m -8298(+)s 240 fnt3 8473 11065(length)m 240 fnt4 0 10769(\()m -240 fnt3 89 10777(g)m 240 fnt4 221 10769(\))m 376(+)s -240 fnt3 594 10777(left)m 240 fnt4 920 10769(\()m 240 fnt3 -1009 10777(y)m 240 fnt4 1129 10769(\))m 240 fnt1 1261 10775(when)m +6580(by)s 6866(g)s 1(ap)k 240 fnt4 7255 11065(g)m +240 fnt1 7369 11063(:)m 240 fnt4 7527 11065(right)m 240 fnt5 +8000 11057(\()m 240 fnt4 8075 11065(x)m 240 fnt5 8185 11057(\))m +8298(+)s 240 fnt4 8473 11065(length)m 240 fnt5 0 10769(\()m +240 fnt4 89 10777(g)m 240 fnt5 221 10769(\))m 376(+)s +240 fnt4 594 10777(left)m 240 fnt5 920 10769(\()m 240 fnt4 +1009 10777(y)m 240 fnt5 1129 10769(\))m 240 fnt1 1261 10775(when)m 1842(the)s 2196(g)s 1(ap)k 2600(mode)s 3193(is)s 3409(edge-to-edge,)s 4770(the)s 5124(lar)s 4(ger)k 5741(of)s -240 fnt3 6018 10777(length)m 240 fnt4 6629 10769(\()m 240 fnt3 -6718 10777(g)m 240 fnt4 6850 10769(\))m 240 fnt1 6982 10775(and)m -240 fnt3 7391 10777(right)m 240 fnt4 7878 10769(\()m 240 fnt3 -7968 10777(x)m 240 fnt4 8091 10769(\))m 8246(+)s 240 fnt3 -8464 10777(left)m 240 fnt4 8790 10769(\()m 240 fnt3 8880 10777(y)m -240 fnt4 9000 10769(\))m 240 fnt1 0 10487(when)m 576(the)s +240 fnt4 6018 10777(length)m 240 fnt5 6629 10769(\()m 240 fnt4 +6718 10777(g)m 240 fnt5 6850 10769(\))m 240 fnt1 6982 10775(and)m +240 fnt4 7391 10777(right)m 240 fnt5 7878 10769(\()m 240 fnt4 +7968 10777(x)m 240 fnt5 8091 10769(\))m 8246(+)s 240 fnt4 +8464 10777(left)m 240 fnt5 8790 10769(\()m 240 fnt4 8880 10777(y)m +240 fnt5 9000 10769(\))m 240 fnt1 0 10487(when)m 576(the)s 924(mode)s 1512(is)s 1722(mark-to-mark,)s 3155(and)s 3559(so)s 3825(on.)s 4229(Gi)s 6(v)k 3(en)k 4862(an)s -5145(object)s 240 fnt3 480 9992(X)m 240 fnt4 720 9984(=)m -240 fnt3 933 9992(x)m 168 fnt4 1039 9899(1)m 240 fnt4 -1249 9984(|)m 240 fnt3 1294 9992(g)m 168 fnt4 1405 9899(1)m -240 fnt4 1615 9984(\274)m 200 fnt3 1973 10000(^)m 240 fnt4 -2069 9984(|)m 240 fnt3 2114 9992(g)m 168 fnt3 2225 9905(i)m -168 fnt4 2291 9899(-)m 2403(1)s 240 fnt3 2613 9992(x)m -168 fnt3 2719 9905(i)m 240 fnt4 2907 9984(\274)m 3265(|)s -240 fnt3 3310 9992(g)m 168 fnt3 3421 9905(n)m 168 fnt4 -3523 9899(-)m 3635(1)s 240 fnt3 3845 9992(x)m 168 fnt3 +5145(object)s 240 fnt4 480 9992(X)m 240 fnt5 720 9984(=)m +240 fnt4 933 9992(x)m 168 fnt5 1039 9899(1)m 240 fnt5 +1249 9984(|)m 240 fnt4 1294 9992(g)m 168 fnt5 1405 9899(1)m +240 fnt5 1615 9984(\274)m 200 fnt4 1973 10000(^)m 240 fnt5 +2069 9984(|)m 240 fnt4 2114 9992(g)m 168 fnt4 2225 9905(i)m +168 fnt5 2291 9899(-)m 2403(1)s 240 fnt4 2613 9992(x)m +168 fnt4 2719 9905(i)m 240 fnt5 2907 9984(\274)m 3265(|)s +240 fnt4 3310 9992(g)m 168 fnt4 3421 9905(n)m 168 fnt5 +3523 9899(-)m 3635(1)s 240 fnt4 3845 9992(x)m 168 fnt4 3951 9905(n)m 240 fnt1 0 9448(we)m 335(may)s 801(calculate)s 1705(its)s 1981(size)s 2408(as)s 2658(follo)s 6(ws:)k -240 fnt3 740 8945(left)m 240 fnt4 1060 8937(\()m 240 fnt3 -1144 8945(X)m 240 fnt4 1312 8937(\))m 1474(=)s 240 fnt3 -1687 8945(left)m 240 fnt4 2007 8937(\()m 240 fnt3 2091 8945(x)m -168 fnt4 2197 8852(1)m 240 fnt4 2275 8937(\))m 2413(+)s -240 fnt3 2614 8945(hgap)m 240 fnt4 3099 8937(\()m 240 fnt3 -3183 8945(x)m 168 fnt4 3289 8852(1)m 240 fnt4 3367 8937(,)m -240 fnt3 3474 8945(g)m 168 fnt4 3585 8852(1)m 240 fnt4 -3663 8937(,)m 240 fnt3 3770 8945(x)m 168 fnt4 3876 8852(2)m -240 fnt4 3968 8937(\))m 4106(+)s 4307(\274)s 4593(+)s -240 fnt3 4794 8945(hgap)m 240 fnt4 5279 8937(\()m 240 fnt3 -5363 8945(x)m 168 fnt3 5469 8858(i)m 168 fnt4 5535 8852(-)m -5647(1)s 240 fnt4 5725 8937(,)m 240 fnt3 5832 8945(g)m -168 fnt3 5943 8858(i)m 168 fnt4 6009 8852(-)m 6121(1)s -240 fnt4 6199 8937(,)m 240 fnt3 6306 8945(x)m 168 fnt3 -6412 8858(i)m 240 fnt4 6468 8937(\))m 240 fnt3 579 8542(right)m -240 fnt4 1060 8534(\()m 240 fnt3 1144 8542(X)m 240 fnt4 -1312 8534(\))m 1474(=)s 240 fnt3 1687 8542(hgap)m 240 fnt4 -2172 8534(\()m 240 fnt3 2256 8542(x)m 168 fnt3 2362 8455(i)m -240 fnt4 2418 8534(,)m 240 fnt3 2525 8542(g)m 168 fnt3 -2636 8455(i)m 240 fnt4 2692 8534(,)m 240 fnt3 2799 8542(x)m -168 fnt3 2905 8455(i)m 168 fnt4 2971 8449(+)m 3084(1)s -240 fnt4 3162 8534(\))m 3300(+)s 3501(\274)s 3787(+)s -240 fnt3 3988 8542(hgap)m 240 fnt4 4473 8534(\()m 240 fnt3 -4557 8542(x)m 168 fnt3 4663 8455(n)m 168 fnt4 4765 8449(-)m -4877(1)s 240 fnt4 4955 8534(,)m 240 fnt3 5062 8542(g)m -168 fnt3 5173 8455(n)m 168 fnt4 5275 8449(-)m 5387(1)s -240 fnt4 5465 8534(,)m 240 fnt3 5572 8542(x)m 168 fnt3 -5678 8455(n)m 240 fnt4 5770 8534(\))m 5908(+)s 240 fnt3 -6109 8542(right)m 240 fnt4 6590 8534(\()m 240 fnt3 6674 8542(x)m -168 fnt3 6780 8455(n)m 240 fnt4 6872 8534(\))m 240 fnt3 -485 8139(abo)m 2(ve)k 240 fnt4 1060 8131(\()m 240 fnt3 -1144 8139(X)m 240 fnt4 1312 8131(\))m 1474(=)s 240 fnt3 -1687 8139(abo)m 2(ve)k 240 fnt4 2262 8131(\()m 240 fnt3 -2346 8139(x)m 168 fnt4 2452 8044(1)m 240 fnt4 2530 8131(\))m -2680(\255)s 2901(\274)s 3199(\255)s 240 fnt3 3420 8139(abo)m 2(ve)k -240 fnt4 3995 8131(\()m 240 fnt3 4079 8139(x)m 168 fnt3 -4185 8050(n)m 240 fnt4 4277 8131(\))m 240 fnt3 480 7736(below)m -240 fnt4 1060 7728(\()m 240 fnt3 1144 7736(X)m 240 fnt4 -1312 7728(\))m 1474(=)s 240 fnt3 1687 7736(below)m 240 fnt4 -2267 7728(\()m 240 fnt3 2351 7736(x)m 168 fnt4 2457 7641(1)m -240 fnt4 2535 7728(\))m 2685(\255)s 2906(\274)s 3204(\255)s -240 fnt3 3425 7736(below)m 240 fnt4 4005 7728(\()m 240 fnt3 -4089 7736(x)m 168 fnt3 4195 7647(n)m 240 fnt4 4287 7728(\))m -240 fnt1 0 7141(where)m 240 fnt4 693 7135(\255)m 240 fnt1 +240 fnt4 740 8945(left)m 240 fnt5 1060 8937(\()m 240 fnt4 +1144 8945(X)m 240 fnt5 1312 8937(\))m 1474(=)s 240 fnt4 +1687 8945(left)m 240 fnt5 2007 8937(\()m 240 fnt4 2091 8945(x)m +168 fnt5 2197 8852(1)m 240 fnt5 2275 8937(\))m 2413(+)s +240 fnt4 2614 8945(hgap)m 240 fnt5 3099 8937(\()m 240 fnt4 +3183 8945(x)m 168 fnt5 3289 8852(1)m 240 fnt5 3367 8937(,)m +240 fnt4 3474 8945(g)m 168 fnt5 3585 8852(1)m 240 fnt5 +3663 8937(,)m 240 fnt4 3770 8945(x)m 168 fnt5 3876 8852(2)m +240 fnt5 3968 8937(\))m 4106(+)s 4307(\274)s 4593(+)s +240 fnt4 4794 8945(hgap)m 240 fnt5 5279 8937(\()m 240 fnt4 +5363 8945(x)m 168 fnt4 5469 8858(i)m 168 fnt5 5535 8852(-)m +5647(1)s 240 fnt5 5725 8937(,)m 240 fnt4 5832 8945(g)m +168 fnt4 5943 8858(i)m 168 fnt5 6009 8852(-)m 6121(1)s +240 fnt5 6199 8937(,)m 240 fnt4 6306 8945(x)m 168 fnt4 +6412 8858(i)m 240 fnt5 6468 8937(\))m 240 fnt4 579 8542(right)m +240 fnt5 1060 8534(\()m 240 fnt4 1144 8542(X)m 240 fnt5 +1312 8534(\))m 1474(=)s 240 fnt4 1687 8542(hgap)m 240 fnt5 +2172 8534(\()m 240 fnt4 2256 8542(x)m 168 fnt4 2362 8455(i)m +240 fnt5 2418 8534(,)m 240 fnt4 2525 8542(g)m 168 fnt4 +2636 8455(i)m 240 fnt5 2692 8534(,)m 240 fnt4 2799 8542(x)m +168 fnt4 2905 8455(i)m 168 fnt5 2971 8449(+)m 3084(1)s +240 fnt5 3162 8534(\))m 3300(+)s 3501(\274)s 3787(+)s +240 fnt4 3988 8542(hgap)m 240 fnt5 4473 8534(\()m 240 fnt4 +4557 8542(x)m 168 fnt4 4663 8455(n)m 168 fnt5 4765 8449(-)m +4877(1)s 240 fnt5 4955 8534(,)m 240 fnt4 5062 8542(g)m +168 fnt4 5173 8455(n)m 168 fnt5 5275 8449(-)m 5387(1)s +240 fnt5 5465 8534(,)m 240 fnt4 5572 8542(x)m 168 fnt4 +5678 8455(n)m 240 fnt5 5770 8534(\))m 5908(+)s 240 fnt4 +6109 8542(right)m 240 fnt5 6590 8534(\()m 240 fnt4 6674 8542(x)m +168 fnt4 6780 8455(n)m 240 fnt5 6872 8534(\))m 240 fnt4 +485 8139(abo)m 2(ve)k 240 fnt5 1060 8131(\()m 240 fnt4 +1144 8139(X)m 240 fnt5 1312 8131(\))m 1474(=)s 240 fnt4 +1687 8139(abo)m 2(ve)k 240 fnt5 2262 8131(\()m 240 fnt4 +2346 8139(x)m 168 fnt5 2452 8044(1)m 240 fnt5 2530 8131(\))m +2680(\255)s 2901(\274)s 3199(\255)s 240 fnt4 3420 8139(abo)m 2(ve)k +240 fnt5 3995 8131(\()m 240 fnt4 4079 8139(x)m 168 fnt4 +4185 8050(n)m 240 fnt5 4277 8131(\))m 240 fnt4 480 7736(below)m +240 fnt5 1060 7728(\()m 240 fnt4 1144 7736(X)m 240 fnt5 +1312 7728(\))m 1474(=)s 240 fnt4 1687 7736(below)m 240 fnt5 +2267 7728(\()m 240 fnt4 2351 7736(x)m 168 fnt5 2457 7641(1)m +240 fnt5 2535 7728(\))m 2685(\255)s 2906(\274)s 3204(\255)s +240 fnt4 3425 7736(below)m 240 fnt5 4005 7728(\()m 240 fnt4 +4089 7736(x)m 168 fnt4 4195 7647(n)m 240 fnt5 4287 7728(\))m +240 fnt1 0 7141(where)m 240 fnt5 693 7135(\255)m 240 fnt1 943 7141(returns)m 1678(the)s 2046(lar)s 4(ger)k 2679(of)s 2971(its)s 3267(tw)s 2(o)k 3698(parameters.)s 4930(Similar)s 5712(formulas)s 6633(are)s 7001(easily)s 7632(deri)s 6(v)k 3(ed)k @@ -4669,7 +4744,7 @@ grestore 866(purposes)s 1765(of)s 2033(e)s 3(xposition)k 3081(we)s 3412(will)s 3835(no)s 6(w)k 4293(mak)s 2(e)k 4862(the)s 5207(simplifying)s 6358(assumptions)s 7589(that)s 8004(all)s -8294(g)s 1(aps)k 8779(are)s 220 fnt5 0 6188(0i)m +8294(g)s 1(aps)k 8779(are)s 220 fnt6 0 6188(0i)m 240 fnt1 156 6191(,)m 248(all)s 525(column)s 1285(marks)s 1904(lie)s 2183(at)s 2399(the)s 2732(left)s 3093(edge,)s 3637(and)s 4025(all)s 4303(ro)s 6(w)k 4707(marks)s @@ -4678,47 +4753,47 @@ grestore 0 5903(object)m 644(can)s 1033(be)s 1315(e)s 3(xpressed)k 2313(by)s 2607(just)s 3012(tw)s 2(o)k 3422(numbers,)s 4353(width)s 4955(and)s 5359(height,)s 6064(and)s 6468(the)s -6816(four)s 7274(formulas)s 8174(reduce)s 8867(to)s 240 fnt3 -555 5400(width)m 240 fnt4 1094 5392(\()m 240 fnt3 1178 5400(x)m -168 fnt4 1284 5307(1)m 240 fnt4 1434 5392(|)m 1551(\274)s -1849(|)s 240 fnt3 1966 5400(x)m 168 fnt3 2072 5313(n)m -240 fnt4 2164 5392(\))m 2326(=)s 240 fnt3 2539 5400(width)m -240 fnt4 3078 5392(\()m 240 fnt3 3162 5400(x)m 168 fnt4 -3268 5307(1)m 240 fnt4 3346 5392(\))m 3484(+)s 3685(\274)s -3971(+)s 240 fnt3 4172 5400(width)m 240 fnt4 4711 5392(\()m -240 fnt3 4795 5400(x)m 168 fnt3 4901 5313(n)m 240 fnt4 -4993 5392(\))m 240 fnt3 480 4997(height)m 240 fnt4 1094 4989(\()m -240 fnt3 1178 4997(x)m 168 fnt4 1284 4904(1)m 240 fnt4 -1434 4989(|)m 1551(\274)s 1849(|)s 240 fnt3 1966 4997(x)m -168 fnt3 2072 4910(n)m 240 fnt4 2164 4989(\))m 2326(=)s -240 fnt3 2539 4997(height)m 240 fnt4 3153 4989(\()m 240 fnt3 -3237 4997(x)m 168 fnt4 3343 4904(1)m 240 fnt4 3421 4989(\))m -3571(\255)s 3792(\274)s 4090(\255)s 240 fnt3 4311 4997(height)m -240 fnt4 4925 4989(\()m 240 fnt3 5009 4997(x)m 168 fnt3 -5115 4910(n)m 240 fnt4 5207 4989(\))m 240 fnt1 0 4453(The)m +6816(four)s 7274(formulas)s 8174(reduce)s 8867(to)s 240 fnt4 +555 5400(width)m 240 fnt5 1094 5392(\()m 240 fnt4 1178 5400(x)m +168 fnt5 1284 5307(1)m 240 fnt5 1434 5392(|)m 1551(\274)s +1849(|)s 240 fnt4 1966 5400(x)m 168 fnt4 2072 5313(n)m +240 fnt5 2164 5392(\))m 2326(=)s 240 fnt4 2539 5400(width)m +240 fnt5 3078 5392(\()m 240 fnt4 3162 5400(x)m 168 fnt5 +3268 5307(1)m 240 fnt5 3346 5392(\))m 3484(+)s 3685(\274)s +3971(+)s 240 fnt4 4172 5400(width)m 240 fnt5 4711 5392(\()m +240 fnt4 4795 5400(x)m 168 fnt4 4901 5313(n)m 240 fnt5 +4993 5392(\))m 240 fnt4 480 4997(height)m 240 fnt5 1094 4989(\()m +240 fnt4 1178 4997(x)m 168 fnt5 1284 4904(1)m 240 fnt5 +1434 4989(|)m 1551(\274)s 1849(|)s 240 fnt4 1966 4997(x)m +168 fnt4 2072 4910(n)m 240 fnt5 2164 4989(\))m 2326(=)s +240 fnt4 2539 4997(height)m 240 fnt5 3153 4989(\()m 240 fnt4 +3237 4997(x)m 168 fnt5 3343 4904(1)m 240 fnt5 3421 4989(\))m +3571(\255)s 3792(\274)s 4090(\255)s 240 fnt4 4311 4997(height)m +240 fnt5 4925 4989(\()m 240 fnt4 5009 4997(x)m 168 fnt4 +5115 4910(n)m 240 fnt5 5207 4989(\))m 240 fnt1 0 4453(The)m 428(corresponding)s 1850(formulas)s 2750(for)s 3088(v)s 3(ertical)k -3855(concatenation)s 5240(are)s 240 fnt3 555 3903(width)m 240 fnt4 -1094 3895(\()m 240 fnt3 1178 3903(x)m 168 fnt4 1284 3810(1)m -240 fnt3 1434 3903(/)m 240 fnt4 1609 3895(\274)m 240 fnt3 -1907 3903(/)m 2082(x)s 168 fnt3 2188 3816(n)m 240 fnt4 -2280 3895(\))m 2442(=)s 240 fnt3 2655 3903(width)m 240 fnt4 -3194 3895(\()m 240 fnt3 3278 3903(x)m 168 fnt4 3384 3810(1)m -240 fnt4 3462 3895(\))m 3612(\255)s 3833(\274)s 4131(\255)s -240 fnt3 4352 3903(width)m 240 fnt4 4891 3895(\()m 240 fnt3 -4975 3903(x)m 168 fnt3 5081 3816(n)m 240 fnt4 5173 3895(\))m -240 fnt3 480 3500(height)m 240 fnt4 1094 3492(\()m 240 fnt3 -1178 3500(x)m 168 fnt4 1284 3407(1)m 240 fnt3 1434 3500(/)m -240 fnt4 1609 3492(\274)m 240 fnt3 1907 3500(/)m 2082(x)s -168 fnt3 2188 3413(n)m 240 fnt4 2280 3492(\))m 2442(=)s -240 fnt3 2655 3500(height)m 240 fnt4 3269 3492(\()m 240 fnt3 -3353 3500(x)m 168 fnt4 3459 3407(1)m 240 fnt4 3537 3492(\))m -3675(+)s 3876(\274)s 4162(+)s 240 fnt3 4363 3500(height)m -240 fnt4 4977 3492(\()m 240 fnt3 5061 3500(x)m 168 fnt3 -5167 3413(n)m 240 fnt4 5259 3492(\))m 240 fnt1 0 2956(According)m +3855(concatenation)s 5240(are)s 240 fnt4 555 3903(width)m 240 fnt5 +1094 3895(\()m 240 fnt4 1178 3903(x)m 168 fnt5 1284 3810(1)m +240 fnt4 1434 3903(/)m 240 fnt5 1609 3895(\274)m 240 fnt4 +1907 3903(/)m 2082(x)s 168 fnt4 2188 3816(n)m 240 fnt5 +2280 3895(\))m 2442(=)s 240 fnt4 2655 3903(width)m 240 fnt5 +3194 3895(\()m 240 fnt4 3278 3903(x)m 168 fnt5 3384 3810(1)m +240 fnt5 3462 3895(\))m 3612(\255)s 3833(\274)s 4131(\255)s +240 fnt4 4352 3903(width)m 240 fnt5 4891 3895(\()m 240 fnt4 +4975 3903(x)m 168 fnt4 5081 3816(n)m 240 fnt5 5173 3895(\))m +240 fnt4 480 3500(height)m 240 fnt5 1094 3492(\()m 240 fnt4 +1178 3500(x)m 168 fnt5 1284 3407(1)m 240 fnt4 1434 3500(/)m +240 fnt5 1609 3492(\274)m 240 fnt4 1907 3500(/)m 2082(x)s +168 fnt4 2188 3413(n)m 240 fnt5 2280 3492(\))m 2442(=)s +240 fnt4 2655 3500(height)m 240 fnt5 3269 3492(\()m 240 fnt4 +3353 3500(x)m 168 fnt5 3459 3407(1)m 240 fnt5 3537 3492(\))m +3675(+)s 3876(\274)s 4162(+)s 240 fnt4 4363 3500(height)m +240 fnt5 4977 3492(\()m 240 fnt4 5061 3500(x)m 168 fnt4 +5167 3413(n)m 240 fnt5 5259 3492(\))m 240 fnt1 0 2956(According)m 1063(to)s 1302(these)s 1849(formulas,)s 2805(the)s 3153(height)s 3811(of)s gsave 480 1262 translate -240 fnt3 3044 1354 56 1298 240 288 12 LoutGraphic +240 fnt4 3044 1354 56 1298 240 288 12 LoutGraphic gsave grestore save gsave 200 dict begin lfigdict begin grestore @@ -4737,7 +4812,7 @@ grestore 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore -192 fnt3 123 128(a)m +192 fnt4 123 128(a)m grestore (T) lfigpromotelabels grestore @@ -4752,7 +4827,7 @@ grestore 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore -192 fnt4 156 121(|)m +192 fnt5 156 121(|)m grestore (T) lfigpromotelabels @@ -4778,7 +4853,7 @@ grestore 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore -192 fnt3 123 105(b)m +192 fnt4 123 105(b)m grestore (T) lfigpromotelabels grestore @@ -4804,7 +4879,7 @@ grestore 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore -192 fnt4 136 106(\244)m +192 fnt5 136 106(\244)m grestore (T) lfigpromotelabels grestore @@ -4832,7 +4907,7 @@ grestore 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore -192 fnt3 +192 fnt4 128 128(c)m grestore (T) lfigpromotelabels @@ -4848,7 +4923,7 @@ grestore 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore -192 fnt4 156 121(|)m +192 fnt5 156 121(|)m grestore (T) lfigpromotelabels grestore @@ -4873,7 +4948,7 @@ grestore 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore -192 fnt3 118 105(d)m +192 fnt4 118 105(d)m grestore (T) lfigpromotelabels @@ -4923,8 +4998,14 @@ showpage %%+ font Symbol %%+ font Times-Italic /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Symbol -/fnt4 { /Symbol LoutFont } def +/fnt5 { /Symbol LoutFont } def +%%IncludeResource: font Times-Italic +/Times-Italicfnt4 vec2 /Times-Italic LoutRecode +/fnt4 { /Times-Italicfnt4 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -4939,25 +5020,25 @@ gsave 5704 -1579(-)m 5832(10)s 6127(-)s 9066 13416 0 13307 240 288 60 1417 -15423 LoutGr2 0 LoutMargSet grestore -0 13253(is)m 240 fnt4 -480 12745([)m 240 fnt3 563 12753(height)m 240 fnt4 1177 12745(\()m -240 fnt3 1261 12753(a)m 240 fnt4 1388 12745(\))m 1538(\255)s -240 fnt3 1759 12753(height)m 240 fnt4 2373 12745(\()m 240 fnt3 -2457 12753(b)m 240 fnt4 2583 12745(\))m 2661(])s 2792(+)s -2993([)s 240 fnt3 3076 12753(height)m 240 fnt4 3690 12745(\()m -240 fnt3 3774 12753(c)m 240 fnt4 3888 12745(\))m 4038(\255)s -240 fnt3 4259 12753(height)m 240 fnt4 4873 12745(\()m 240 fnt3 -4957 12753(d)m 240 fnt4 5095 12745(\))m 5173(])s 240 fnt1 +0 13253(is)m 240 fnt5 +480 12745([)m 240 fnt4 563 12753(height)m 240 fnt5 1177 12745(\()m +240 fnt4 1261 12753(a)m 240 fnt5 1388 12745(\))m 1538(\255)s +240 fnt4 1759 12753(height)m 240 fnt5 2373 12745(\()m 240 fnt4 +2457 12753(b)m 240 fnt5 2583 12745(\))m 2661(])s 2792(+)s +2993([)s 240 fnt4 3076 12753(height)m 240 fnt5 3690 12745(\()m +240 fnt4 3774 12753(c)m 240 fnt5 3888 12745(\))m 4038(\255)s +240 fnt4 4259 12753(height)m 240 fnt5 4873 12745(\()m 240 fnt4 +4957 12753(d)m 240 fnt5 5095 12745(\))m 5173(])s 240 fnt1 0 12249(which)m 642(is)s 852(correct,)s 1621(b)s 4(ut)k 1983(for)s 2321(width)s 2923(the)s 3(y)k 3386(yield)s -240 fnt4 480 11691([)m 240 fnt3 563 11699(width)m 240 fnt4 -1102 11691(\()m 240 fnt3 1186 11699(a)m 240 fnt4 1313 11691(\))m -1451(+)s 240 fnt3 1652 11699(width)m 240 fnt4 2191 11691(\()m -240 fnt3 2275 11699(b)m 240 fnt4 2401 11691(\))m 2479(])s -2622(\255)s 2843([)s 240 fnt3 2926 11699(width)m 240 fnt4 -3465 11691(\()m 240 fnt3 3549 11699(c)m 240 fnt4 3663 11691(\))m -3801(+)s 240 fnt3 4002 11699(width)m 240 fnt4 4541 11691(\()m -240 fnt3 4625 11699(d)m 240 fnt4 4763 11691(\))m 4841(])s +240 fnt5 480 11691([)m 240 fnt4 563 11699(width)m 240 fnt5 +1102 11691(\()m 240 fnt4 1186 11699(a)m 240 fnt5 1313 11691(\))m +1451(+)s 240 fnt4 1652 11699(width)m 240 fnt5 2191 11691(\()m +240 fnt4 2275 11699(b)m 240 fnt5 2401 11691(\))m 2479(])s +2622(\255)s 2843([)s 240 fnt4 2926 11699(width)m 240 fnt5 +3465 11691(\()m 240 fnt4 3549 11699(c)m 240 fnt5 3663 11691(\))m +3801(+)s 240 fnt4 4002 11699(width)m 240 fnt5 4541 11691(\()m +240 fnt4 4625 11699(d)m 240 fnt5 4763 11691(\))m 4841(])s 240 fnt1 0 11195(which)m 645(is)s 859(not,)s 1276(since)s 1827(it)s 2023(does)s 2517(not)s 2887(tak)s 2(e)k 3343(the)s 3694(mer)s 4(ging)k 4544(of)s 4819(column)s @@ -4965,11 +5046,11 @@ grestore 0 10907(between)m 874(horizontal)s 1918(and)s 2342(v)s 3(ertical)k 3130(has)s 3520(come)s 4114(about)s 4726(because)s 5560(the)s 5928(ro)s 6(w)k 6368(entries,)s 7131(such)s 7648(as)s -240 fnt3 7918 10909(a)m 240 fnt1 8113 10907(and)m 240 fnt3 +240 fnt4 7918 10909(a)m 240 fnt1 8113 10907(and)m 240 fnt4 8537 10909(b)m 240 fnt1 8651 10907(,)m 8779(are)s 0 10619(adjacent)m 849(in)s 1085(the)s 1426(tree,)s 1883(b)s 4(ut)k 2238(the)s 2579(column)s 3346(entries,)s 4082(such)s 4571(as)s -240 fnt3 4814 10621(a)m 240 fnt1 4982 10619(and)m 240 fnt3 +240 fnt4 4814 10621(a)m 240 fnt1 4982 10619(and)m 240 fnt4 5379 10621(c)m 240 fnt1 5481 10619(,)m 5581(are)s 5920(not.)s 6383(It)s 6581(w)s 2(ould)k 7229(be)s 7504(possible)s 8337(to)s 8568(solv)s 3(e)k 0 10331(this)m 395(cross-linking)s @@ -4981,48 +5062,48 @@ grestore 5078(has)s 5449(preferred)s 6381(the)s 6730(follo)s 6(wing)k 7707(method)s 8484(which)s 0 9755(mak)m 2(es)k 660(structural)s 1616(changes)s 2438(to)s 2677(the)s 3025(tree)s 3438(instead.)s -480 9381(If)m 240 fnt3 715 9383(a)m 240 fnt1 896 9381(and)m -240 fnt3 1305 9383(c)m 240 fnt1 1473 9381(share)m 2038(a)s +480 9381(If)m 240 fnt4 715 9383(a)m 240 fnt1 896 9381(and)m +240 fnt4 1305 9383(c)m 240 fnt1 1473 9381(share)m 2038(a)s 2210(column)s 2990(mark,)s 3594(the)s 3(y)k 4063(each)s 4563(might)s 5187(as)s 5442(well)s 5914(ha)s 4(v)k 3(e)k -6420(width)s 240 fnt3 7028 9383(width)m 240 fnt4 7572 9375(\()m -240 fnt3 7662 9383(a)m 240 fnt4 7795 9375(\))m 7961(\255)s -240 fnt3 8199 9383(width)m 240 fnt4 8743 9375(\()m 240 fnt3 -8833 9383(c)m 240 fnt4 8953 9375(\))m 240 fnt1 9019 9381(,)m +6420(width)s 240 fnt4 7028 9383(width)m 240 fnt5 7572 9375(\()m +240 fnt4 7662 9383(a)m 240 fnt5 7795 9375(\))m 7961(\255)s +240 fnt4 8199 9383(width)m 240 fnt5 8743 9375(\()m 240 fnt4 +8833 9383(c)m 240 fnt5 8953 9375(\))m 240 fnt1 9019 9381(,)m 0 9093(since)m 547(all)s 840(width)s 1442(calculations)s 2635(apply)s 3221(to)s 3460(entire)s 4060(columns.)s 5035(Accordingly)s 15(,)k 6323(we)s 6659(introduce)s 7618(a)s 7784(ne)s 6(w)k -8232(operator)s 9(,)k 240 fnt3 0 8807(COL)m 240 fnt1 -466 8805(,)m 573(de\207ned)s 1336(by)s 240 fnt3 480 8255(width)m -240 fnt4 1019 8247(\()m 240 fnt3 1103 8255(x)m 168 fnt4 -1209 8162(1)m 240 fnt3 1347 8255(COL)m 240 fnt4 1885 8247(\274)m -240 fnt3 2171 8255(COL)m 2709(x)s 168 fnt3 2815 8168(n)m -240 fnt4 2907 8247(\))m 3057(=)s 240 fnt3 3270 8255(width)m -240 fnt4 3809 8247(\()m 240 fnt3 3893 8255(x)m 168 fnt4 -3999 8162(1)m 240 fnt4 4077 8247(\))m 4227(\255)s 4448(\274)s -4746(\255)s 240 fnt3 4967 8255(width)m 240 fnt4 5506 8247(\()m -240 fnt3 5590 8255(x)m 168 fnt3 5696 8168(n)m 240 fnt4 +8232(operator)s 9(,)k 240 fnt4 0 8807(COL)m 240 fnt1 +466 8805(,)m 573(de\207ned)s 1336(by)s 240 fnt4 480 8255(width)m +240 fnt5 1019 8247(\()m 240 fnt4 1103 8255(x)m 168 fnt5 +1209 8162(1)m 240 fnt4 1347 8255(COL)m 240 fnt5 1885 8247(\274)m +240 fnt4 2171 8255(COL)m 2709(x)s 168 fnt4 2815 8168(n)m +240 fnt5 2907 8247(\))m 3057(=)s 240 fnt4 3270 8255(width)m +240 fnt5 3809 8247(\()m 240 fnt4 3893 8255(x)m 168 fnt5 +3999 8162(1)m 240 fnt5 4077 8247(\))m 4227(\255)s 4448(\274)s +4746(\255)s 240 fnt4 4967 8255(width)m 240 fnt5 5506 8247(\()m +240 fnt4 5590 8255(x)m 168 fnt4 5696 8168(n)m 240 fnt5 5788 8247(\))m 240 fnt1 0 7711(and)m 440(replace)s 1221(both)s -240 fnt3 1741 7713(a)m 240 fnt1 1952 7711(and)m 240 fnt3 -2393 7713(c)m 240 fnt1 2591 7711(by)m 240 fnt3 2922 7713(a)m +240 fnt4 1741 7713(a)m 240 fnt1 1952 7711(and)m 240 fnt4 +2393 7713(c)m 240 fnt1 2591 7711(by)m 240 fnt4 2922 7713(a)m 3218(COL)s 3865(c)s 240 fnt1 3967 7711(.)m 4168(T)s 19(o)k -4504(pre)s 6(v)k 3(ent)k 240 fnt3 5309 7713(COL)m +4504(pre)s 6(v)k 3(ent)k 240 fnt4 5309 7713(COL)m 240 fnt1 5871 7711(operators)m 6848(from)s 7408(disturbing)s 8468(height)s 0 7423(calculations,)m 1248(we)s 1583(de\207ne)s 2224(a)s 2390(binary)s -3055(operator)s 3911(called)s 240 fnt3 4539 7425(SPLIT)m 240 fnt1 -5228 7423(by)m 240 fnt3 555 6920(width)m 240 fnt4 1094 6912(\()m -240 fnt3 1178 6920(x)m 1356(SPLIT)s 2057(y)s 240 fnt4 -2171 6912(\))m 2333(=)s 240 fnt3 2546 6920(width)m 240 fnt4 -3085 6912(\()m 240 fnt3 3169 6920(x)m 240 fnt4 3287 6912(\))m -240 fnt3 480 6517(height)m 240 fnt4 1094 6509(\()m 240 fnt3 -1178 6517(x)m 1356(SPLIT)s 2057(y)s 240 fnt4 2171 6509(\))m -2333(=)s 240 fnt3 2546 6517(height)m 240 fnt4 3160 6509(\()m -240 fnt3 3244 6517(y)m 240 fnt4 3358 6509(\))m 240 fnt1 +3055(operator)s 3911(called)s 240 fnt4 4539 7425(SPLIT)m 240 fnt1 +5228 7423(by)m 240 fnt4 555 6920(width)m 240 fnt5 1094 6912(\()m +240 fnt4 1178 6920(x)m 1356(SPLIT)s 2057(y)s 240 fnt5 +2171 6912(\))m 2333(=)s 240 fnt4 2546 6920(width)m 240 fnt5 +3085 6912(\()m 240 fnt4 3169 6920(x)m 240 fnt5 3287 6912(\))m +240 fnt4 480 6517(height)m 240 fnt5 1094 6509(\()m 240 fnt4 +1178 6517(x)m 1356(SPLIT)s 2057(y)s 240 fnt5 2171 6509(\))m +2333(=)s 240 fnt4 2546 6517(height)m 240 fnt5 3160 6509(\()m +240 fnt4 3244 6517(y)m 240 fnt5 3358 6509(\))m 240 fnt1 0 6013(which)m 642(switches)s 1516(height)s 2174(and)s 2578(width)s 3180(calculations)s 4372(onto)s 4851(dif)s 6(ferent)k 5726(subtrees.)s 6673(Then)s 7222(the)s 7570(transformation)s gsave 480 4314 translate -240 fnt3 338 1359 56 1298 240 288 12 LoutGraphic +240 fnt4 338 1359 56 1298 240 288 12 LoutGraphic gsave grestore save gsave 200 dict begin lfigdict begin grestore @@ -5035,16 +5116,16 @@ grestore 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore -192 fnt3 123 128(a)m +192 fnt4 123 128(a)m grestore (T) lfigpromotelabels grestore end end restore grestore -240 fnt4 1130 5552(\336)m gsave +240 fnt5 1130 5552(\336)m gsave 1671 4314 translate -240 fnt3 2564 1359 56 1298 240 288 12 LoutGraphic +240 fnt4 2564 1359 56 1298 240 288 12 LoutGraphic gsave grestore save gsave 200 dict begin lfigdict begin grestore @@ -5063,7 +5144,7 @@ grestore 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore -192 fnt3 123 128(a)m +192 fnt4 123 128(a)m grestore (T) lfigpromotelabels grestore @@ -5078,7 +5159,7 @@ grestore 0.15 cm /lfigsolid [ lfigellipse ] lfigdopath pop pop grestore -192 fnt3 +192 fnt4 56 107(COL)m grestore (T) lfigpromotelabels @@ -5104,7 +5185,7 @@ grestore 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore -192 fnt3 128 128(c)m +192 fnt4 128 128(c)m grestore (T) lfigpromotelabels grestore @@ -5130,7 +5211,7 @@ grestore 0.15 cm /lfigsolid [ lfigellipse ] lfigdopath pop pop grestore -192 fnt3 56 107(SPLIT)m +192 fnt4 56 107(SPLIT)m grestore (T) lfigpromotelabels @@ -5156,7 +5237,7 @@ grestore 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore -192 fnt3 123 128(a)m +192 fnt4 123 128(a)m grestore (T) lfigpromotelabels grestore @@ -5173,24 +5254,24 @@ grestore grestore end end restore grestore -240 fnt1 0 3814(widens)m 240 fnt3 -740 3816(a)m 240 fnt1 926 3814(to)m 240 fnt3 1176 3816(width)m -240 fnt4 1726 3808(\()m 240 fnt3 1821 3816(a)m 240 fnt4 -1959 3808(\))m 2142(\255)s 240 fnt3 2396 3816(width)m 240 fnt4 -2946 3808(\()m 240 fnt3 3041 3816(c)m 240 fnt4 3166 3808(\))m +240 fnt1 0 3814(widens)m 240 fnt4 +740 3816(a)m 240 fnt1 926 3814(to)m 240 fnt4 1176 3816(width)m +240 fnt5 1726 3808(\()m 240 fnt4 1821 3816(a)m 240 fnt5 +1959 3808(\))m 2142(\255)s 240 fnt4 2396 3816(width)m 240 fnt5 +2946 3808(\()m 240 fnt4 3041 3816(c)m 240 fnt5 3166 3808(\))m 240 fnt1 3303 3814(without)m 4105(af)s 6(fecting)k 5011(its)s 5298(height;)s 6019(it)s 6222(is)s 6443(applied)s 7216(to)s 7466(e)s 6(v)k 3(ery)k 8053(object)s 8708(that)s 0 3526(shares)m 638(its)s 904(column)s 1669(mark)s 2211(with)s 2683(at)s 2905(least)s 3392(one)s 3784(other)s 4325(object.)s 5063(A)s 5283(similar)s 5995(transformation)s 7448(in)s 9(v)k 4(olving)k -8396(a)s 240 fnt3 8552 3528(R)m 9(O)k 12(W)k +8396(a)s 240 fnt4 8552 3528(R)m 9(O)k 12(W)k 240 fnt1 0 3238(operator)m 856(deals)s 1398(with)s 1880(shared)s 2562(ro)s 6(w)k 2982(marks.)s 3730(The)s 4158(ef)s 6(fect)k 4754(on)s 5051(our)s 5430(little)s 5922(table)s 6442(is)s 6652(to)s 6891(replace)s gsave 480 1544 translate -240 fnt3 3044 1354 56 1298 240 288 12 LoutGraphic +240 fnt4 3044 1354 56 1298 240 288 12 LoutGraphic gsave grestore save gsave 200 dict begin lfigdict begin grestore @@ -5209,7 +5290,7 @@ grestore 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore -192 fnt3 123 128(a)m +192 fnt4 123 128(a)m grestore (T) lfigpromotelabels grestore @@ -5224,7 +5305,7 @@ grestore 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore -192 fnt4 +192 fnt5 156 121(|)m grestore (T) lfigpromotelabels @@ -5250,7 +5331,7 @@ grestore 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore -192 fnt3 123 105(b)m +192 fnt4 123 105(b)m grestore (T) lfigpromotelabels grestore @@ -5276,7 +5357,7 @@ grestore 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore -192 fnt4 136 106(\244)m +192 fnt5 136 106(\244)m grestore (T) lfigpromotelabels @@ -5305,7 +5386,7 @@ grestore 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore -192 fnt3 128 128(c)m +192 fnt4 128 128(c)m grestore (T) lfigpromotelabels grestore @@ -5320,7 +5401,7 @@ grestore 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore -192 fnt4 156 121(|)m +192 fnt5 156 121(|)m grestore (T) lfigpromotelabels grestore @@ -5345,7 +5426,7 @@ grestore 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore -192 fnt3 +192 fnt4 118 105(d)m grestore (T) lfigpromotelabels @@ -5396,11 +5477,17 @@ showpage %%+ font Symbol %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def +%%IncludeResource: font Times-Italic +/Times-Italicfnt4 vec2 /Times-Italic LoutRecode +/fnt4 { /Times-Italicfnt4 LoutFont } def %%IncludeResource: font Symbol -/fnt4 { /Symbol LoutFont } def +/fnt5 { /Symbol LoutFont } def %%IncludeResource: font Helvetica -/Helveticafnt5 vec2 /Helvetica LoutRecode -/fnt5 { /Helveticafnt5 LoutFont } def +/Helveticafnt6 vec2 /Helvetica LoutRecode +/fnt6 { /Helveticafnt6 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -5417,7 +5504,7 @@ gsave grestore gsave 480 11049 translate -240 fnt3 6248 2370 0 2314 240 288 12 LoutGraphic +240 fnt4 6248 2370 0 2314 240 288 12 LoutGraphic gsave grestore save gsave 70 dict begin lfigdict begin grestore @@ -5430,7 +5517,7 @@ grestore 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore -192 fnt4 136 106(\244)m +192 fnt5 136 106(\244)m grestore (T) lfigpromotelabels @@ -5447,7 +5534,7 @@ grestore 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore -192 fnt4 156 121(|)m +192 fnt5 156 121(|)m grestore (T) lfigpromotelabels grestore @@ -5463,7 +5550,7 @@ grestore 0.15 cm /lfigsolid [ lfigellipse ] lfigdopath pop pop grestore -192 fnt3 56 107(SPLIT)m +192 fnt4 56 107(SPLIT)m grestore (T) lfigpromotelabels grestore @@ -5479,7 +5566,7 @@ grestore 0.15 cm /lfigsolid [ lfigellipse ] lfigdopath pop pop grestore -192 fnt3 +192 fnt4 56 107(COL)m grestore (T) lfigpromotelabels @@ -5496,7 +5583,7 @@ grestore 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore -192 fnt3 123 128(a)m +192 fnt4 123 128(a)m grestore (T) lfigpromotelabels grestore @@ -5523,7 +5610,7 @@ grestore 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore -192 fnt3 128 128(c)m +192 fnt4 128 128(c)m grestore (T) lfigpromotelabels @@ -5562,7 +5649,7 @@ grestore 0.15 cm /lfigsolid [ lfigellipse ] lfigdopath pop pop grestore -192 fnt3 56 107(R)m 7(O)k 9(W)k +192 fnt4 56 107(R)m 7(O)k 9(W)k grestore (T) lfigpromotelabels grestore @@ -5578,7 +5665,7 @@ grestore 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore -192 fnt3 +192 fnt4 123 128(a)m grestore (T) lfigpromotelabels @@ -5606,7 +5693,7 @@ grestore 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore -192 fnt3 123 105(b)m +192 fnt4 123 105(b)m grestore (T) lfigpromotelabels grestore @@ -5655,7 +5742,7 @@ grestore 0.15 cm /lfigsolid [ lfigellipse ] lfigdopath pop pop grestore -192 fnt3 56 107(SPLIT)m +192 fnt4 56 107(SPLIT)m grestore (T) lfigpromotelabels @@ -5672,7 +5759,7 @@ grestore 0.15 cm /lfigsolid [ lfigellipse ] lfigdopath pop pop grestore -192 fnt3 56 107(COL)m +192 fnt4 56 107(COL)m grestore (T) lfigpromotelabels grestore @@ -5688,7 +5775,7 @@ grestore 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore -192 fnt3 123 105(b)m +192 fnt4 123 105(b)m grestore (T) lfigpromotelabels grestore @@ -5715,7 +5802,7 @@ grestore 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore -192 fnt3 +192 fnt4 118 105(d)m grestore (T) lfigpromotelabels @@ -5754,7 +5841,7 @@ grestore 0.15 cm /lfigsolid [ lfigellipse ] lfigdopath pop pop grestore -192 fnt3 56 107(R)m 7(O)k 9(W)k +192 fnt4 56 107(R)m 7(O)k 9(W)k grestore (T) lfigpromotelabels @@ -5771,7 +5858,7 @@ grestore 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore -192 fnt3 123 128(a)m +192 fnt4 123 128(a)m grestore (T) lfigpromotelabels grestore @@ -5798,7 +5885,7 @@ grestore 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore -192 fnt3 123 105(b)m +192 fnt4 123 105(b)m grestore (T) lfigpromotelabels grestore @@ -5858,7 +5945,7 @@ grestore 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore -192 fnt4 +192 fnt5 156 121(|)m grestore (T) lfigpromotelabels @@ -5875,7 +5962,7 @@ grestore 0.15 cm /lfigsolid [ lfigellipse ] lfigdopath pop pop grestore -192 fnt3 56 107(SPLIT)m +192 fnt4 56 107(SPLIT)m grestore (T) lfigpromotelabels grestore @@ -5891,7 +5978,7 @@ grestore 0.15 cm /lfigsolid [ lfigellipse ] lfigdopath pop pop grestore -192 fnt3 56 107(COL)m +192 fnt4 56 107(COL)m grestore (T) lfigpromotelabels @@ -5908,7 +5995,7 @@ grestore 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore -192 fnt3 123 128(a)m +192 fnt4 123 128(a)m grestore (T) lfigpromotelabels grestore @@ -5935,7 +6022,7 @@ grestore 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore -192 fnt3 128 128(c)m +192 fnt4 128 128(c)m grestore (T) lfigpromotelabels grestore @@ -5973,7 +6060,7 @@ grestore 0.15 cm /lfigsolid [ lfigellipse ] lfigdopath pop pop grestore -192 fnt3 +192 fnt4 56 107(R)m 7(O)k 9(W)k grestore (T) lfigpromotelabels @@ -5990,7 +6077,7 @@ grestore 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore -192 fnt3 128 128(c)m +192 fnt4 128 128(c)m grestore (T) lfigpromotelabels @@ -6018,7 +6105,7 @@ grestore 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore -192 fnt3 118 105(d)m +192 fnt4 118 105(d)m grestore (T) lfigpromotelabels grestore @@ -6067,7 +6154,7 @@ grestore 0.15 cm /lfigsolid [ lfigellipse ] lfigdopath pop pop grestore -192 fnt3 56 107(SPLIT)m +192 fnt4 56 107(SPLIT)m grestore (T) lfigpromotelabels grestore @@ -6083,7 +6170,7 @@ grestore 0.15 cm /lfigsolid [ lfigellipse ] lfigdopath pop pop grestore -192 fnt3 +192 fnt4 56 107(COL)m grestore (T) lfigpromotelabels @@ -6100,7 +6187,7 @@ grestore 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore -192 fnt3 123 105(b)m +192 fnt4 123 105(b)m grestore (T) lfigpromotelabels grestore @@ -6127,7 +6214,7 @@ grestore 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore -192 fnt3 118 105(d)m +192 fnt4 118 105(d)m grestore (T) lfigpromotelabels @@ -6166,7 +6253,7 @@ grestore 0.15 cm /lfigsolid [ lfigellipse ] lfigdopath pop pop grestore -192 fnt3 56 107(R)m 7(O)k 9(W)k +192 fnt4 56 107(R)m 7(O)k 9(W)k grestore (T) lfigpromotelabels grestore @@ -6182,7 +6269,7 @@ grestore 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore -192 fnt3 +192 fnt4 128 128(c)m grestore (T) lfigpromotelabels @@ -6210,7 +6297,7 @@ grestore 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore -192 fnt3 118 105(d)m +192 fnt4 118 105(d)m grestore (T) lfigpromotelabels grestore @@ -6267,8 +6354,8 @@ grestore 8469(graph;)s 0 10310(each)m 486(af)s 6(fected)k 1296(leaf)s 1716(has)s 2076(tw)s 2(o)k 2477(parents,)s 3264(one)s 3657(for)s 3985(width)s 4578(and)s 4972(one)s 5365(for)s -5693(height;)s 6394(and)s 6788(each)s 240 fnt3 7274 10312(COL)m -240 fnt1 7790 10310(or)m 240 fnt3 8040 10312(R)m 9(O)k 12(W)k +5693(height;)s 6394(and)s 6788(each)s 240 fnt4 7274 10312(COL)m +240 fnt1 7790 10310(or)m 240 fnt4 8040 10312(R)m 9(O)k 12(W)k 240 fnt1 8604 10310(node)m 0 10022(has)m 360(one)s 752(parent)s 1398(and)s 1792(one)s 2184(child)s 2709(for)s 3037(each)s 3521(object)s 4155(lying)s 4690(on)s 4976(the)s 5314(corresponding)s @@ -6277,11 +6364,11 @@ grestore 3116(occurs)s 3791(only)s 4271(rarely)s 4881(in)s 5124(practice.)s 480 9360(This)m 956(method)s 1732(can)s 2121(cope)s 2629(with)s 3111(an)s 3(y)k 3508(le)s 3(g)k 1(al)k -4023(input,)s 4622(including)s 220 fnt5 480 8859({ a // c | d } | { b / e })m 480 8571(/ { f / i } | { g | h // j })m +4023(input,)s 4622(including)s 220 fnt6 480 8859({ a // c | d } | { b / e })m 480 8571(/ { f / i } | { g | h // j })m 240 fnt1 0 8072(which)m 642(produces)s 1557(o)s 3(v)k 3(erlapping)k 2747(spanning)s 3665(columns:)s gsave 480 5924 translate -240 fnt3 1699 1808 0 1695 240 288 60 LoutGraphic +240 fnt4 1699 1808 0 1695 240 288 60 LoutGraphic gsave grestore save gsave 200 dict begin lfigdict begin grestore @@ -6291,7 +6378,7 @@ grestore 0.15 cm /lfigsolid [ lfigbox ] lfigdopath pop pop grestore -230 fnt3 511 178(a)m +230 fnt4 511 178(a)m grestore 566 452 113 339 240 288 60 1133 1356 LoutGr2 @@ -6299,7 +6386,7 @@ grestore 0.15 cm /lfigsolid [ lfigbox ] lfigdopath pop pop grestore -230 fnt3 +230 fnt4 228 150(b)m grestore 566 452 113 339 240 288 60 0 904 LoutGr2 @@ -6308,7 +6395,7 @@ grestore 0.15 cm /lfigsolid [ lfigbox ] lfigdopath pop pop grestore -230 fnt3 234 178(c)m +230 fnt4 234 178(c)m grestore 566 452 113 339 240 288 60 566 904 LoutGr2 @@ -6316,7 +6403,7 @@ grestore 0.15 cm /lfigsolid [ lfigbox ] lfigdopath pop pop grestore -230 fnt3 222 150(d)m +230 fnt4 222 150(d)m grestore 566 452 113 339 240 288 60 1132 904 LoutGr2 @@ -6325,7 +6412,7 @@ grestore 0.15 cm /lfigsolid [ lfigbox ] lfigdopath pop pop grestore -230 fnt3 235 178(e)m +230 fnt4 235 178(e)m grestore 566 452 113 339 240 288 60 0 452 LoutGr2 @@ -6333,7 +6420,7 @@ grestore 0.15 cm /lfigsolid [ lfigbox ] lfigdopath pop pop grestore -230 fnt3 235 173(f)m +230 fnt4 235 173(f)m grestore 566 452 113 339 240 288 60 566 452 LoutGr2 @@ -6341,7 +6428,7 @@ grestore 0.15 cm /lfigsolid [ lfigbox ] lfigdopath pop pop grestore -230 fnt3 +230 fnt4 228 200(g)m grestore 566 452 113 339 240 288 60 1132 452 LoutGr2 @@ -6350,7 +6437,7 @@ grestore 0.15 cm /lfigsolid [ lfigbox ] lfigdopath pop pop grestore -230 fnt3 228 149(h)m +230 fnt4 228 149(h)m grestore 566 452 113 339 240 288 60 0 0 LoutGr2 @@ -6358,7 +6445,7 @@ grestore 0.15 cm /lfigsolid [ lfigbox ] lfigdopath pop pop grestore -230 fnt3 253 153(i)m +230 fnt4 253 153(i)m grestore 1133 452 113 339 240 288 60 566 0 LoutGr2 @@ -6367,7 +6454,7 @@ grestore 0.15 cm /lfigsolid [ lfigbox ] lfigdopath pop pop grestore -230 fnt3 535 176(j)m +230 fnt4 535 176(j)m grestore end end restore grestore @@ -6375,35 +6462,35 @@ grestore 1035(ha)s 4(v)k 3(e)k 1536(been)s 2045(added)s 2675(to)s 2914(clarify)s 3590(the)s 3938(structure.)s 4937(The)s 5365(width)s 5967(of)s 6238(this)s 6634(object)s 7278(is)s -7488(formally)s 240 fnt4 480 4915(\()m 564(\()s 240 fnt3 -648 4923(width)m 240 fnt4 1187 4915(\()m 240 fnt3 1271 4923(a)m -240 fnt4 1398 4915(\))m 1548(\255)s 1769(\()s 240 fnt3 -1853 4923(x)m 240 fnt4 2031 4915(+)m 240 fnt3 2232 4923(y)m -240 fnt4 2346 4915(\))m 2424(\))s 2562(+)s 240 fnt3 -2763 4923(z)m 240 fnt4 2866 4915(\))m 3016(\255)s 3237(\()s -240 fnt3 3321 4923(x)m 240 fnt4 3499 4915(+)m 3700(\()s -3784(\()s 240 fnt3 3868 4923(y)m 240 fnt4 4042 4915(+)m -240 fnt3 4243 4923(z)m 240 fnt4 4346 4915(\))m 4496(\255)s -240 fnt3 4717 4923(width)m 240 fnt4 5256 4915(\()m 240 fnt3 -5340 4923(j)m 240 fnt4 5418 4915(\))m 5496(\))s 5574(\))s -240 fnt1 0 4419(where)m 240 fnt3 480 3918(x)m 240 fnt4 -670 3910(=)m 240 fnt3 883 3918(width)m 240 fnt4 1422 3910(\()m -240 fnt3 1506 3918(c)m 240 fnt4 1620 3910(\))m 1770(\255)s -240 fnt3 1991 3918(width)m 240 fnt4 2530 3910(\()m 240 fnt3 -2662 3918(f)m 240 fnt4 2823 3910(\))m 2973(\255)s 240 fnt3 -3194 3918(width)m 240 fnt4 3733 3910(\()m 240 fnt3 3817 3918(i)m -240 fnt4 3892 3910(\))m 240 fnt3 480 3367(y)m 240 fnt4 -666 3359(=)m 240 fnt3 879 3367(width)m 240 fnt4 1418 3359(\()m -240 fnt3 1502 3367(d)m 240 fnt4 1688 3359(\))m 1838(\255)s -240 fnt3 2059 3367(width)m 240 fnt4 2598 3359(\()m 240 fnt3 -2682 3367(g)m 240 fnt4 2808 3359(\))m 240 fnt3 480 2816(z)m -240 fnt4 655 2808(=)m 240 fnt3 868 2816(width)m 240 fnt4 -1407 2808(\()m 240 fnt3 1491 2816(b)m 240 fnt4 1617 2808(\))m -1767(\255)s 240 fnt3 1988 2816(width)m 240 fnt4 2527 2808(\()m -240 fnt3 2611 2816(e)m 240 fnt4 2722 2808(\))m 2872(\255)s -240 fnt3 3093 2816(width)m 240 fnt4 3632 2808(\()m 240 fnt3 -3716 2816(h)m 240 fnt4 3843 2808(\))m 240 fnt1 0 2312(It)m -224(seems)s 878(clear)s 1420(that)s 240 fnt3 1857 2314(y)m +7488(formally)s 240 fnt5 480 4915(\()m 564(\()s 240 fnt4 +648 4923(width)m 240 fnt5 1187 4915(\()m 240 fnt4 1271 4923(a)m +240 fnt5 1398 4915(\))m 1548(\255)s 1769(\()s 240 fnt4 +1853 4923(x)m 240 fnt5 2031 4915(+)m 240 fnt4 2232 4923(y)m +240 fnt5 2346 4915(\))m 2424(\))s 2562(+)s 240 fnt4 +2763 4923(z)m 240 fnt5 2866 4915(\))m 3016(\255)s 3237(\()s +240 fnt4 3321 4923(x)m 240 fnt5 3499 4915(+)m 3700(\()s +3784(\()s 240 fnt4 3868 4923(y)m 240 fnt5 4042 4915(+)m +240 fnt4 4243 4923(z)m 240 fnt5 4346 4915(\))m 4496(\255)s +240 fnt4 4717 4923(width)m 240 fnt5 5256 4915(\()m 240 fnt4 +5340 4923(j)m 240 fnt5 5418 4915(\))m 5496(\))s 5574(\))s +240 fnt1 0 4419(where)m 240 fnt4 480 3918(x)m 240 fnt5 +670 3910(=)m 240 fnt4 883 3918(width)m 240 fnt5 1422 3910(\()m +240 fnt4 1506 3918(c)m 240 fnt5 1620 3910(\))m 1770(\255)s +240 fnt4 1991 3918(width)m 240 fnt5 2530 3910(\()m 240 fnt4 +2662 3918(f)m 240 fnt5 2823 3910(\))m 2973(\255)s 240 fnt4 +3194 3918(width)m 240 fnt5 3733 3910(\()m 240 fnt4 3817 3918(i)m +240 fnt5 3892 3910(\))m 240 fnt4 480 3367(y)m 240 fnt5 +666 3359(=)m 240 fnt4 879 3367(width)m 240 fnt5 1418 3359(\()m +240 fnt4 1502 3367(d)m 240 fnt5 1688 3359(\))m 1838(\255)s +240 fnt4 2059 3367(width)m 240 fnt5 2598 3359(\()m 240 fnt4 +2682 3367(g)m 240 fnt5 2808 3359(\))m 240 fnt4 480 2816(z)m +240 fnt5 655 2808(=)m 240 fnt4 868 2816(width)m 240 fnt5 +1407 2808(\()m 240 fnt4 1491 2816(b)m 240 fnt5 1617 2808(\))m +1767(\255)s 240 fnt4 1988 2816(width)m 240 fnt5 2527 2808(\()m +240 fnt4 2611 2816(e)m 240 fnt5 2722 2808(\))m 2872(\255)s +240 fnt4 3093 2816(width)m 240 fnt5 3632 2808(\()m 240 fnt4 +3716 2816(h)m 240 fnt5 3843 2808(\))m 240 fnt1 0 2312(It)m +224(seems)s 878(clear)s 1420(that)s 240 fnt4 1857 2314(y)m 240 fnt1 2038 2312(at)m 2289(least)s 2805(must)s 3349(appear)s 4065(twice)s 4657(in)s 4919(an)s 3(y)k 5335(e)s 3(xpression)k 6431(for)s 6788(the)s 7155(width)s 7776(of)s 8066(this)s @@ -6415,8 +6502,8 @@ grestore 6556(interpreter)s 7626(actually)s 8453(rejects)s 0 1448(such)m 521(structures,)s 1581(o)s 6(wing)k 2252(to)s 2517(the)s 2890(author')s 13(s)k 3736(doubts)s 4451(about)s 5069(the)s 5442(implementability)s 7153(of)s -240 fnt3 7449 1450(Constr)m 3(ained)k 240 fnt1 8722 1448(and)m -240 fnt3 0 1162(AdjustSize)m 240 fnt1 1049 1160(\(Section)m 1902(5.3\))s +240 fnt4 7449 1450(Constr)m 3(ained)k 240 fnt1 8722 1448(and)m +240 fnt4 0 1162(AdjustSize)m 240 fnt1 1049 1160(\(Section)m 1902(5.3\))s 2330(on)s 2627(them;)s 3217(b)s 4(ut)k 3579(with)s 4061(hindsight)s 5012(this)s 5408(caution)s 6169(w)s 2(as)k 6590(unnecessary)s 15(.)k 480 786(The)m 915(directed)s 1749(ac)s 3(yclic)k @@ -6448,9 +6535,18 @@ showpage %%+ font Times-Bold %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def +%%IncludeResource: font Times-Italic +/Times-Italicfnt4 vec2 /Times-Italic LoutRecode +/fnt4 { /Times-Italicfnt4 LoutFont } def +%%IncludeResource: font Times-Bold +/Times-Boldfnt2 vec2 /Times-Bold LoutRecode +/fnt2 { /Times-Boldfnt2 LoutFont } def %%IncludeResource: font Helvetica -/Helveticafnt5 vec2 /Helvetica LoutRecode -/fnt5 { /Helveticafnt5 LoutFont } def +/Helveticafnt6 vec2 /Helvetica LoutRecode +/fnt6 { /Helveticafnt6 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -6478,7 +6574,7 @@ grestore 7282(memory)s 8140(consump)s 8998(-)s 0 12392(tion.)m 536(F)s 3(or)k 925(e)s 3(xample,)k gsave 480 10526 translate -240 fnt3 3282 1526 0 1470 240 288 12 LoutGraphic +240 fnt4 3282 1526 0 1470 240 288 12 LoutGraphic gsave grestore save gsave 200 dict begin lfigdict begin grestore @@ -6491,7 +6587,7 @@ grestore 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore -192 fnt3 123 128(a)m +192 fnt4 123 128(a)m grestore (A) lfigpromotelabels grestore @@ -6504,7 +6600,7 @@ grestore 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore -192 fnt3 +192 fnt4 123 105(b)m grestore (B) lfigpromotelabels @@ -6518,7 +6614,7 @@ grestore 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore -192 fnt3 128 128(c)m +192 fnt4 128 128(c)m grestore (C) lfigpromotelabels grestore @@ -6531,7 +6627,7 @@ grestore 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore -192 fnt3 118 105(d)m +192 fnt4 118 105(d)m grestore (D) lfigpromotelabels @@ -6573,7 +6669,7 @@ end end restore grestore 0 10075(is)m 210(represented)s 1369(by)s gsave 1135 5559 translate -240 fnt3 6796 4176 0 4120 240 288 12 LoutGraphic +240 fnt4 6796 4176 0 4120 240 288 12 LoutGraphic gsave grestore save gsave 300 dict begin lfigdict begin grestore @@ -6604,7 +6700,7 @@ pop pop grestore gsave 206 150 translate -192 fnt3 39 39 0 39 192 288 48 LoutGraphic +192 fnt4 39 39 0 39 192 288 48 LoutGraphic gsave /lfigblack [ lfigcircle ] gsave lfigpaintpath grestore 0.5 pt setlinewidth lfiground setlinecap @@ -6626,7 +6722,7 @@ grestore 0.15 cm /lfigsolid [ lfigbox ] lfigdopath pop pop grestore -192 fnt3 180 128(a)m +192 fnt4 180 128(a)m grestore (BASE) lfigpromotelabels @@ -6660,7 +6756,7 @@ pop pop grestore gsave 206 150 translate -192 fnt3 39 39 0 39 192 288 48 LoutGraphic +192 fnt4 39 39 0 39 192 288 48 LoutGraphic gsave /lfigblack [ lfigcircle ] gsave lfigpaintpath grestore 0.5 pt setlinewidth lfiground setlinecap @@ -6682,7 +6778,7 @@ grestore 0.15 cm /lfigsolid [ lfigbox ] lfigdopath pop pop grestore -192 fnt3 180 105(b)m +192 fnt4 180 105(b)m grestore (BASE) lfigpromotelabels grestore @@ -6702,7 +6798,7 @@ pop pop grestore gsave 206 150 translate -192 fnt3 39 39 0 39 192 288 48 LoutGraphic +192 fnt4 39 39 0 39 192 288 48 LoutGraphic gsave /lfigblack [ lfigcircle ] gsave lfigpaintpath grestore 0.5 pt setlinewidth lfiground setlinecap @@ -6726,7 +6822,7 @@ pop pop grestore gsave 206 150 translate -192 fnt3 39 39 0 39 192 288 48 LoutGraphic +192 fnt4 39 39 0 39 192 288 48 LoutGraphic gsave /lfigblack [ lfigcircle ] gsave lfigpaintpath grestore 0.5 pt setlinewidth lfiground setlinecap @@ -6748,7 +6844,7 @@ grestore 0.15 cm /lfigsolid [ lfigbox ] lfigdopath pop pop grestore -192 fnt3 104 107(LK)m +192 fnt4 104 107(LK)m grestore (BASE) lfigpromotelabels grestore @@ -6768,7 +6864,7 @@ pop pop grestore gsave 206 150 translate -192 fnt3 39 39 0 39 192 288 48 LoutGraphic +192 fnt4 39 39 0 39 192 288 48 LoutGraphic gsave /lfigblack [ lfigcircle ] gsave lfigpaintpath grestore 0.5 pt setlinewidth lfiground setlinecap @@ -6792,7 +6888,7 @@ pop pop grestore gsave 206 150 translate -192 fnt3 39 39 0 39 192 288 48 LoutGraphic +192 fnt4 39 39 0 39 192 288 48 LoutGraphic gsave /lfigblack [ lfigcircle ] gsave lfigpaintpath grestore 0.5 pt setlinewidth lfiground setlinecap @@ -6814,7 +6910,7 @@ grestore 0.15 cm /lfigsolid [ lfigbox ] lfigdopath pop pop grestore -192 fnt3 +192 fnt4 104 107(LK)m grestore (BASE) lfigpromotelabels @@ -6835,7 +6931,7 @@ pop pop grestore gsave 206 150 translate -192 fnt3 39 39 0 39 192 288 48 LoutGraphic +192 fnt4 39 39 0 39 192 288 48 LoutGraphic gsave /lfigblack [ lfigcircle ] gsave lfigpaintpath grestore 0.5 pt setlinewidth lfiground setlinecap @@ -6859,7 +6955,7 @@ pop pop grestore gsave 206 150 translate -192 fnt3 39 39 0 39 192 288 48 LoutGraphic +192 fnt4 39 39 0 39 192 288 48 LoutGraphic gsave /lfigblack [ lfigcircle ] gsave lfigpaintpath grestore 0.5 pt setlinewidth lfiground setlinecap @@ -6881,7 +6977,7 @@ grestore 0.15 cm /lfigsolid [ lfigbox ] lfigdopath pop pop grestore -192 fnt3 104 107(LK)m +192 fnt4 104 107(LK)m grestore (BASE) lfigpromotelabels grestore @@ -6901,7 +6997,7 @@ pop pop grestore gsave 206 150 translate -192 fnt3 39 39 0 39 192 288 48 LoutGraphic +192 fnt4 39 39 0 39 192 288 48 LoutGraphic gsave /lfigblack [ lfigcircle ] gsave lfigpaintpath grestore 0.5 pt setlinewidth lfiground setlinecap @@ -6936,7 +7032,7 @@ grestore 0.15 cm /lfigsolid [ lfigbox ] lfigdopath pop pop grestore -192 fnt3 185 128(c)m +192 fnt4 185 128(c)m grestore (BASE) lfigpromotelabels @@ -6957,7 +7053,7 @@ pop pop grestore gsave 206 150 translate -192 fnt3 39 39 0 39 192 288 48 LoutGraphic +192 fnt4 39 39 0 39 192 288 48 LoutGraphic gsave /lfigblack [ lfigcircle ] gsave lfigpaintpath grestore 0.5 pt setlinewidth lfiground setlinecap @@ -6992,7 +7088,7 @@ grestore 0.15 cm /lfigsolid [ lfigbox ] lfigdopath pop pop grestore -192 fnt3 175 105(d)m +192 fnt4 175 105(d)m grestore (BASE) lfigpromotelabels grestore @@ -7080,7 +7176,7 @@ grestore grestore end end restore grestore -0 5108(where)m 240 fnt3 645 5110(LK)m +0 5108(where)m 240 fnt4 645 5110(LK)m 240 fnt1 1017 5108(tags)m 1458(a)s 1630(record)s 2304(representing)s 3543(a)s 3715(link.)s 4257(The)s 4690(\207rst)s 5127(list)s 5484(in)s 5732(an)s 3(y)k 6135(node)s 6663(contains)s @@ -7120,7 +7216,7 @@ grestore 3920(object)s 4588(in)s 4856(an)s 3(y)k 5278(conte)s 3(xt,)k 6111(the)s 6484(conte)s 3(xt)k 7270(must)s 7820(in\210uence)s 8778(the)s 0 1017(appearance)m 1131(of)s 1402(the)s 1750(object,)s -2441(since)s 2988(otherwise)s 220 fnt5 480 518(A shor)m -8(t par)k 2(ag)k 2(r)k 2(aph of te)k 6(xt.)k +2441(since)s 2988(otherwise)s 220 fnt6 480 518(A shor)m -8(t par)k 2(ag)k 2(r)k 2(aph of te)k 6(xt.)k grestore 0 0 0 0 240 288 60 1417 -15423 LoutGr2 @@ -7142,9 +7238,15 @@ showpage %%+ font Helvetica %%+ font Times-Italic /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Helvetica -/Helveticafnt5 vec2 /Helvetica LoutRecode -/fnt5 { /Helveticafnt5 LoutFont } def +/Helveticafnt6 vec2 /Helvetica LoutRecode +/fnt6 { /Helveticafnt6 LoutFont } def +%%IncludeResource: font Times-Italic +/Times-Italicfnt4 vec2 /Times-Italic LoutRecode +/fnt4 { /Times-Italicfnt4 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -7190,12 +7292,12 @@ grestore 8085(to)s 8366(include)s 0 10575(colour)m 671(and)s 1075(te)s 3(xture)k 1791(information.)s 480 10201(The)m 908(w)s 2(ay)k 1359(to)s 1598(deal)s 2051(with)s 2533(fonts)s 3062(at)s 3294(least)s -3791(is)s 4001(v)s 3(ery)k 4477(clear:)s 220 fnt5 +3791(is)s 4001(v)s 3(ery)k 4477(clear:)s 220 fnt6 480 9700({ )m 11(Times Slope 12p } @F)k 6(ont { Hello)k 8(, w)k 2(or)k -3(ld })k 240 fnt1 0 9204(should)m 697(ha)s 4(v)k 3(e)k -1198(result)s 240 fnt3 480 8750(Hello,)m 1104(world)s 240 fnt1 -0 8268(Lout)m 528(also)s 983(pro)s 3(vides)k 220 fnt5 -1872 8265(@Break)m 240 fnt1 2745 8268(and)m 220 fnt5 3166 8265(@Space)m +1198(result)s 240 fnt4 480 8750(Hello,)m 1104(world)s 240 fnt1 +0 8268(Lout)m 528(also)s 983(pro)s 3(vides)k 220 fnt6 +1872 8265(@Break)m 240 fnt1 2745 8268(and)m 220 fnt6 3166 8265(@Space)m 240 fnt1 4080 8268(symbols)m 4946(for)s 5301(controlling)s 6420(the)s 6785(paragraph)s 7815(breaking)s 8722(and)s 0 7980(space)m 610(styles)s 1229(mentioned)s 2320(abo)s 3(v)k 3(e.)k 3074(These)s @@ -7217,7 +7319,7 @@ grestore 2514(design)s 3242(can)s 3677(be)s 4006(used)s 4549(for)s 4933(a)s 4(v)k 6(ailable)k 5888(width)s 6536(and)s 6986(height,)s 7738(only)s 8264(here)s 8778(the)s 0 6166(implementation)m -1557(is)s 1767(much)s 2356(more)s 2903(demanding:)s 220 fnt5 +1557(is)s 1767(much)s 2356(more)s 2903(demanding:)s 220 fnt6 480 5665(2i @Wide {)m 480 5377(\(1\) |0.1i An e)m 6(xample)k 480 5089(containing a small)m 480 4801(par)m 2(ag)k 2(r)k 2(aph of \207lled te)k 6(xt.)k 480 4513(})m 240 fnt1 0 4019(is)m 210(guaranteed)s 1317(to)s 1556(be)s 1838(tw)s 2(o)k 2248(inches)s 2910(wide:)s @@ -7225,7 +7327,7 @@ grestore 3254(a)s 891 3228(small)m 1504(paragraph)s 2558(of)s 2871(\207lled)s 891 2940(te)m 3(xt.)k 0 2487(One)m 448(must)s 966(calculate)s 1863(that)s 2273(1.9)s 2617(inches)s 3272(minus)s 3900(the)s -4241(width)s 4836(of)s 220 fnt5 5100 2484(\(1\))m 240 fnt1 +4241(width)s 4836(of)s 220 fnt6 5100 2484(\(1\))m 240 fnt1 5406 2487(is)m 5609(a)s 4(v)k 6(ailable)k 6510(to)s 6741(the)s 7082(paragraph,)s 8138(and)s 8534(break)s 0 2199(it)m 186(accordingly;)s 1421(Basser)s 2111(Lout)s 2617(does)s 3100(this)s @@ -7236,8 +7338,8 @@ grestore 4254(which)s 4887(assume)s 5638(that)s 6047(a)s 4(v)k 6(ailable)k 6946(space)s 7524(is)s 7725(in\207nite.)s 8557(If)s 8778(the)s 0 1623(upw)m 2(ard)k 763(mo)s 3(v)k 3(ement)k -1815(reaches)s 2570(a)s 240 fnt3 2724 1625(WIDE)m 240 fnt1 -3375 1623(node,)m 3936(corresponding)s 5346(to)s 5573(a)s 220 fnt5 +1815(reaches)s 2570(a)s 240 fnt4 2724 1625(WIDE)m 240 fnt1 +3375 1623(node,)m 3936(corresponding)s 5346(to)s 5573(a)s 220 fnt6 5728 1620(@Wide)m 240 fnt1 6490 1623(operator)m 9(,)k 7372(and)s 7764(the)s 8100(calculated)s 0 1335(width)m 627(e)s 3(xceeds)k 1457(that)s 1900(allo)s 6(wed,)k 2784(a)s 2975(second,)s @@ -7246,7 +7348,7 @@ grestore 0 1047(reduce)m 681(the)s 1017(width)s 1606(by)s 1888(\207nding)s 2607(and)s 2999(breaking)s 3877(paragraphs.)s 5077(This)s 5541(second)s 6251(stage)s 6786(is)s 6984(quite)s 7505(routine)s 8226(e)s 3(xcept)k -8894(at)s 220 fnt5 0 756(|)m 240 fnt1 84 759(nodes,)m +8894(at)s 220 fnt6 0 756(|)m 240 fnt1 84 759(nodes,)m 736(whose)s 1390(children)s 2216(are)s 2549(the)s 2883(columns)s 3731(of)s 3988(a)s 4141(table.)s 4755(It)s 4946(is)s 5142(necessary)s 6111(to)s 6336(apportion)s 7296(the)s 7630(a)s 4(v)k 6(ailable)k @@ -7275,11 +7377,17 @@ showpage %%+ font Times-Bold %%+ font Symbol /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Helvetica -/Helveticafnt5 vec2 /Helvetica LoutRecode -/fnt5 { /Helveticafnt5 LoutFont } def +/Helveticafnt6 vec2 /Helvetica LoutRecode +/fnt6 { /Helveticafnt6 LoutFont } def +%%IncludeResource: font Times-Bold +/Times-Boldfnt2 vec2 /Times-Bold LoutRecode +/fnt2 { /Times-Boldfnt2 LoutFont } def %%IncludeResource: font Symbol -/fnt4 { /Symbol LoutFont } def +/fnt5 { /Symbol LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -7306,15 +7414,15 @@ grestore 3842(the)s 4197(object)s 4849(contains)s 5704(constructs)s 6731(that)s 7156(depend)s 7913(on)s 8218(a)s 4(v)k 6(ailable)k 0 12306(space)m 587(\(e.g.)s 1056(right)s 1567(justi\207cation\).)s 2938(F)s 3(or)k -3327(e)s 3(xample,)k 4241(in)s 220 fnt5 480 11805(2i @Wide { Heading // a |1r)m -8(t b })k +3327(e)s 3(xample,)k 4241(in)s 220 fnt6 480 11805(2i @Wide { Heading // a |1r)m -8(t b })k 240 fnt1 0 11306(it)m 211(seems)s 865(natural)s 1603(to)s 1861(assign)s 2536(a)s 2721(width)s 3342(of)s 3633(tw)s 2(o)k -4062(inches)s 4744(to)s 5002(the)s 5369(subobject)s 220 fnt5 +4062(inches)s 4744(to)s 5002(the)s 5369(subobject)s 220 fnt6 6366 11303(a |1r)m -8(t b)k 240 fnt1 7124 11306(because)m 7957(of)s 8247(the)s 8615(right)s 0 11018(justi\207cation,)m 1270(b)s 4(ut)k 1667(it)s 1895(w)s 2(ould)k 2585(be)s 2903(equally)s 3696(plausible)s 4650(if)s 4903(the)s 5286(width)s 5924(of)s -220 fnt5 6230 11015(Heading)m 240 fnt1 7129 11018(w)m 2(as)k +220 fnt6 6230 11015(Heading)m 240 fnt1 7129 11018(w)m 2(as)k 7586(assigned)s 8503(to)s 8778(the)s 0 10730(subobject)m 989(instead.)s 1843(The)s 2284(author)s 2968(is)s 3191(conscious)s 4199(of)s 4483(ha)s 4(ving)k 5197(f)s 2(ailed)k 5809(to)s @@ -7339,7 +7447,7 @@ grestore 2463(grasped)s 3285(by)s 3598(the)s 3966(author)s 4656(in)s 4919(1985,)s 5525(and)s 5949(he)s 6250(included)s 7152(a)s 7337(b)s 4(uilt-in)k 8113(paragraph)s 0 8628(break)m 2(er)k 9(,)k -818(with)s 1306(the)s 220 fnt5 1660 8625(@Break)m 240 fnt1 +818(with)s 1306(the)s 220 fnt6 1660 8625(@Break)m 240 fnt1 2522 8628(operator)m 3384(selecting)s 4292(from)s 4822(a)s 4995(\207x)s 3(ed)k 5535(set)s 5866(of)s 6143(styles.)s 6857(A)s 7093(much)s 7688(better)s 8298(solution)s 0 8340(based)m 603(on)s 900(g)s 1(alle)k 3(ys)k @@ -7368,13 +7476,13 @@ grestore 3328(parameters)s 4434(and)s 4845(returning)s 5781(objects)s 6517(as)s 6774(results.)s 7569(F)s 3(or)k 7965(e)s 3(xample,)k 8887(to)s 0 4550(de\207ne)m 641(a)s 807(superscript)s 1915(operator)s -2771(so)s 3037(that)s 220 fnt5 480 4056(2 sup n)m 240 fnt1 -0 3531(appears)m 781(as)s 168 fnt1 1145 3647(n)m 240 fnt4 +2771(so)s 3037(that)s 220 fnt6 480 4056(2 sup n)m 240 fnt1 +0 3531(appears)m 781(as)s 168 fnt1 1145 3647(n)m 240 fnt5 1031 3525(2)m 240 fnt1 1227 3531(,)m 1334(the)s 1682(follo)s 6(wing)k 2659(operator)s 3515(de\207nition)s 4489(may)s 4955(be)s 5237(used:)s -220 fnt5 480 3032(def sup)m 480 2744( precedence 50)m 480 2456( associativity r)m -3(ight)k +220 fnt6 480 3032(def sup)m 480 2744( precedence 50)m 480 2456( associativity r)m -3(ight)k 480 2168( left x)m 480 1880( r)m -3(ight y)k 480 1592({)m 480 1304( @OneRo)m 3(w { | {-2p @F)k 6(ont y} ^/0.5fk x })k -480 1016(})m 240 fnt1 0 520(The)m 220 fnt5 481 517(sup)m +480 1016(})m 240 fnt1 0 520(The)m 220 fnt6 481 517(sup)m 240 fnt1 940 520(operator)m 1850(has)s 2273(precedence)s 3458(50,)s 3858(is)s 4122(right)s 4686(associati)s 6(v)k 3(e,)k 5886(tak)s 2(es)k 6479(tw)s 2(o)k 6943(objects)s @@ -7403,9 +7511,18 @@ showpage %%+ font Helvetica %%+ font Times-Bold /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def +%%IncludeResource: font Times-Italic +/Times-Italicfnt4 vec2 /Times-Italic LoutRecode +/fnt4 { /Times-Italicfnt4 LoutFont } def %%IncludeResource: font Helvetica -/Helveticafnt5 vec2 /Helvetica LoutRecode -/fnt5 { /Helveticafnt5 LoutFont } def +/Helveticafnt6 vec2 /Helvetica LoutRecode +/fnt6 { /Helveticafnt6 LoutFont } def +%%IncludeResource: font Times-Bold +/Times-Boldfnt2 vec2 /Times-Bold LoutRecode +/fnt2 { /Times-Boldfnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -7423,7 +7540,7 @@ grestore 0 13250(the)m 348(structure)s gsave 608 12769 translate -280 fnt3 128 191 0 123 280 288 70 LoutGraphic +280 fnt4 128 191 0 123 280 288 70 LoutGraphic gsave grestore save gsave 200 dict begin lfigdict begin grestore @@ -7441,7 +7558,7 @@ grestore xmark -0.3 cm xmark ysize 0 0.3 cm lfigpadd ] lfigdopath pop pop grestore -260 fnt5 0 56(y)m +260 fnt6 0 56(y)m grestore grestore @@ -7449,7 +7566,7 @@ end end restore grestore gsave 480 12634 translate -280 fnt3 128 135 0 67 280 288 70 LoutGraphic +280 fnt4 128 135 0 67 280 288 70 LoutGraphic gsave grestore save gsave 200 dict begin lfigdict begin grestore @@ -7467,7 +7584,7 @@ grestore xmark -0.3 cm xmark ysize 0 0.3 cm lfigpadd ] lfigdopath pop pop grestore -260 fnt5 0 0(x)m +260 fnt6 0 0(x)m grestore grestore @@ -7475,25 +7592,25 @@ end end restore grestore 0 12183(b)m 4(ut)k 381(with)s 882(the)s 1249(\207rst)s 1699(ro)s 6(w)k -2138(mark)s 2709(hidden)s 3437(by)s 3751(the)s 220 fnt5 +2138(mark)s 2709(hidden)s 3437(by)s 3751(the)s 220 fnt6 4118 12180(@OneRo)m 3(w)k 240 fnt1 5268 12183(operator)m 9(,)k -6181(and)s 220 fnt5 6604 12180(y)m 240 fnt1 6791 12183(tw)m 2(o)k +6181(and)s 220 fnt6 6604 12180(y)m 240 fnt1 6791 12183(tw)m 2(o)k 7220(points)s 7875(smaller)s 8657(than)s 0 11895(it)m 220(w)s 2(ould)k 904(otherwise)s 1917(ha)s 4(v)k 3(e)k 2447(been.)s -3091(The)s 3548(length)s 220 fnt5 4231 11892(0.5f)m 240 fnt1 +3091(The)s 3548(length)s 220 fnt6 4231 11892(0.5f)m 240 fnt1 4683 11895(speci\207es)m 5585(half)s 6057(the)s 6433(current)s 7198(font)s 7671(size;)s 8243(Figure)s 8952(2)s 0 11607(describes)m 936(the)s -220 fnt5 1280 11604(k)m 240 fnt1 1446 11607(g)m 1(ap)k +220 fnt6 1280 11604(k)m 240 fnt1 1446 11607(g)m 1(ap)k 1840(mode.)s 2532(In)s 2784(the)s 3128(Eq)s 3448(equation)s 4325(formatting)s 5382(package)s 6218([10])s 6651(the)s 6995(equation)s 7872(as)s 8118(a)s 8280(whole)s 8916(is)s 0 11319(set)m -331(in)s 580(italic)s 1116(font,)s 1614(and)s 220 fnt5 +331(in)s 580(italic)s 1116(font,)s 1614(and)s 220 fnt6 2024 11316(2)m 240 fnt1 2203 11319(is)m 2419(an)s 2709(identi\207er)s 3637(whose)s 4311(body)s 4852(contains)s 5706(a)s 5879(font)s 6330(change)s 7070(back)s 7590(to)s 7835(Roman.)s 8698(The)s -0 11031(digits)m 220 fnt5 586 11028(0)m 240 fnt1 765 11031(to)m -220 fnt5 1009 11028(9)m 240 fnt1 1186 11031(are)m 1538(classed)s -2291(as)s 2546(punctuation)s 3737(characters,)s 4816(permitting)s 220 fnt5 +0 11031(digits)m 220 fnt6 586 11028(0)m 240 fnt1 765 11031(to)m +220 fnt6 1009 11028(9)m 240 fnt1 1186 11031(are)m 1538(classed)s +2291(as)s 2546(punctuation)s 3737(characters,)s 4816(permitting)s 220 fnt6 5869 11028(234)m 240 fnt1 6293 11031(for)m 6635(e)s 3(xample)k 7503(to)s 7747(be)s 8034(interpreted)s 0 10743(as)m 250(a)s 416(sequence)s 1349(of)s 1620(three)s 2153(identi\207ers.)s 480 10369(These)m @@ -7507,27 +7624,27 @@ grestore 2828(at)s 3069(most)s 3603(tw)s 2(o)k 4022(parameters,)s 5185(left)s 5571(and)s 5984(right,)s 6551(and)s 6964(the)s 7321(parameters)s 8428(cannot)s 0 9131(be)m 282(gi)s 6(v)k 3(en)k -862(def)s 2(ault)k 1583(v)s 6(alues.)k 240 fnt3 +862(def)s 2(ault)k 1583(v)s 6(alues.)k 240 fnt4 2352 9133(Named)m 240 fnt1 3097 9131(parameters)m 4195(solv)s 3(e)k -4753(both)s 5236(problems:)s 220 fnt5 480 8630(def @Pref)m 6(ace)k +4753(both)s 5236(problems:)s 220 fnt6 480 8630(def @Pref)m 6(ace)k 480 8342( named @T)m 26(ag {})k 480 8054( named @Title { Pref)m 6(ace })k 480 7766( r)m -3(ight @Body)k 480 7478({)m 480 7190( Bold @F)m 6(ont @Title)k 480 6902( //0.3v @Body)m 480 6614(})m 240 fnt1 0 6120(The)m 452(def)s 2(ault)k 1197(v)s 6(alue)k 1789(appears)s 2594(just)s 3023(after)s 3543(the)s 3915(parameter')s 13(s)k 5103(declaration,)s 6295(between)s 7173(braces.)s 7972(In)s 9(v)k 4(ocations)k 0 5832(ha)m 4(v)k 3(e)k 501(a)s 667(natural)s -1385(syntax:)s 220 fnt5 480 5331(@Pref)m 6(ace)k 480 5043( @Title { About this book })m +1385(syntax:)s 220 fnt6 480 5331(@Pref)m 6(ace)k 480 5043( @Title { About this book })m 480 4755({)m 480 4467( F)m 6(e)k 4(w obser)k -6(v)k 5(ers w)k 2(ould ha)k 4(v)k 5(e supposed in 1984, that ...)k 480 4179(})m 240 fnt1 0 3685(with)m 481(the)s 827(actual)s 1450(named)s 2145(parameters)s 3241(follo)s 6(wing)k 4216(directly)s 4998(after)s 5492(the)s 5838(operator)s 9(,)k 6731(before)s 7395(an)s 3(y)k 7790(right)s 8299(parame)s 8998(-)s 0 3397(ter)m 13(.)k 400(In)s 653(this)s 1046(e)s 3(xample,)k -220 fnt5 1958 3394(@T)m 26(ag)k 240 fnt1 2578 3397(will)m +220 fnt6 1958 3394(@T)m 26(ag)k 240 fnt1 2578 3397(will)m 3001(recei)s 6(v)k 3(e)k 3735(its)s 4008(def)s 2(ault)k 4726(v)s 6(alue,)k 5342(and)s 5744(a)s 5907(less)s 6313(e)s 3(xpert)k 6965(user)s 7420(could)s 8007(safely)s -8628(omit)s 0 3109(the)m 220 fnt5 348 3106(@Title)m 240 fnt1 +8628(omit)s 0 3109(the)m 220 fnt6 348 3106(@Title)m 240 fnt1 1036 3109(parameter)m 2050(as)s 2300(well.)s 480 2735(Lout)m 1007(permits)s 1790(named)s 2502(parameters)s 3616(to)s 3870(ha)s 4(v)k 3(e)k 4387(parameters,)s 5557(a)s 5739(feature)s 6472(with)s 6970(applications)s @@ -7567,9 +7684,12 @@ showpage %%PageResources: font Times-Roman %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Helvetica -/Helveticafnt5 vec2 /Helvetica LoutRecode -/fnt5 { /Helveticafnt5 LoutFont } def +/Helveticafnt6 vec2 /Helvetica LoutRecode +/fnt6 { /Helveticafnt6 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -7587,7 +7707,7 @@ grestore 0 13251(than)m 469(its)s 745(designer)s 1615(intended.)s 2603(The)s 3031(author)s 3702(wrote)s 4302(the)s 4650(follo)s 6(wing)k 5627(purely)s 6292(as)s -6542(a)s 6708(testing)s 7398(scaf)s 6(fold:)k 220 fnt5 +6542(a)s 6708(testing)s 7398(scaf)s 6(fold:)k 220 fnt6 480 12750(def @P)m 8(age r)k -3(ight x)k 480 12462({)m 480 12174( 8i @Wide 11i @High)m 480 11886( {)m 480 11598( //1i ||1i x ||1i)m 480 11310( //1i)m 480 11022( })m 480 10734(})m 240 fnt1 0 10240(Only)m 518(afterw)s 2(ards)k 1558(did)s @@ -7610,9 +7730,9 @@ grestore 4365(..)s 4649(..)s 4933(..)s 5217(..)s 5501(..)s 5785(..)s 6009(53)s 0 7994(This)m 476(seemed)s 1251(to)s 1490(require)s 2222(recursion,)s 3218(speci\207cally)s 4360(the)s 4708(de\207nition)s -220 fnt5 480 7493(def @Leaders { ..)m 13( @Leaders })k 240 fnt1 0 6999(Note)m -535(that)s 968(both)s 220 fnt5 1465 6996(..)m 240 fnt1 -1643 6999(and)m 220 fnt5 2061 6996(@Leaders)m 240 fnt1 3145 6999(are)m +220 fnt6 480 7493(def @Leaders { ..)m 13( @Leaders })k 240 fnt1 0 6999(Note)m +535(that)s 968(both)s 220 fnt6 1465 6996(..)m 240 fnt1 +1643 6999(and)m 220 fnt6 2061 6996(@Leaders)m 240 fnt1 3145 6999(are)m 3506(objects,)s 4305(so)s 4585(the)s 4948(tw)s 2(o)k 5372(spaces)s 6062(separating)s 7111(them)s 7664(are)s 8026(signi\207cant.)s 0 6711(No)m 361(base)s 858(case)s 1341(is)s 1567(gi)s 6(v)k 3(en,)k @@ -7622,9 +7742,9 @@ grestore 757(it;)s 993(b)s 4(ut)k 1346(we)s 1673(can)s 2053(adopt)s 2637(the)s 2977(implicit)s 3770(base)s 4243(`if)s 4530(space)s 5109(is)s 5311(not)s 5668(suf\207cient,)s 6656(delete)s -220 fnt5 7273 6420(@Leaders)m 240 fnt1 8334 6423(and)m 8729(an)s 3(y)k +220 fnt6 7273 6420(@Leaders)m 240 fnt1 8334 6423(and)m 8729(an)s 3(y)k 0 6135(preceding)m 996(space'.)s 1770(Then)s 2319(the)s 2667(e)s 3(xpression)k -220 fnt5 480 5634(4i @Wide { Chapter 7 @Leaders 53 })m 240 fnt1 0 5138(will)m 417(produce)s +220 fnt6 480 5634(4i @Wide { Chapter 7 @Leaders 53 })m 240 fnt1 0 5138(will)m 417(produce)s 1234(the)s 1572(object)s 2206(sho)s 6(wn)k 2873(abo)s 3(v)k 3(e.)k 3593(It)s 3788(is)s 3988(hard)s 4461(to)s 4691(see)s 5042(ho)s 6(w)k 5493(this)s 5879(base)s 6350(could)s @@ -7632,7 +7752,7 @@ grestore 8998(-)s 0 4850(out)m 348(violating)s 1232(the)s 1561(general)s 2301(principle)s 3187(of)s 3439(k)s 2(eeping)k 4230(all)s 4504(size)s 4912(information)s 6079(internal.)s 6953(In)s 7190(the)s -7519(implementation,)s 220 fnt5 0 4559(@Leaders)m 240 fnt1 1071 4562(remains)m +7519(implementation,)s 220 fnt6 0 4559(@Leaders)m 240 fnt1 1071 4562(remains)m 1881(une)s 3(xpanded)k 3097(while)s 3686(sizes)s 4204(are)s 4554(being)s 5142(calculated;)s 6224(then)s 6696(it)s 6891(is)s 7103(treated)s 7813(similarly)s 8718(to)s 8960(a)s 0 4274(recepti)m 6(v)k 3(e)k @@ -7643,10 +7763,10 @@ grestore 3044(clear)s 3575(ho)s 6(w)k 4044(to)s 4291(de\207ne)s 4940(a)s 5115(document)s 6127(which)s 6777(is)s 6995(a)s 7169(numbered)s 8193(sequence)s 0 3612(of)m 271(pages.)s 980(Let)s -220 fnt5 1358 3609(@Ne)m 6(xt)k 240 fnt1 2082 3612(be)m +220 fnt6 1358 3609(@Ne)m 6(xt)k 240 fnt1 2082 3612(be)m 2364(a)s 2530(pre\207x)s 3143(operator)s 3999(which)s 4641(returns)s 5355(its)s 5631(parameter)s 6645(plus)s 7095(one.)s 7605(Then)s -220 fnt5 480 3111(def @P)m 8(ageList)k 480 2823( r)m -3(ight @P)k 8(ageNum)k +220 fnt6 480 3111(def @P)m 8(ageList)k 480 2823( r)m -3(ight @P)k 8(ageNum)k 480 2535({)m 480 2247( @P)m 8(age {)k 480 1959( |0.5r)m -8(t - @P)k 8(ageNum -)k 480 1671( //1v @T)m 26(e)k 6(xtPlace)k 480 1383( //1r)m -8(t @F)k 6(ootSect)k 480 1095( })m 480 807( //)m 480 519( @P)m 8(ageList @Ne)k 6(xt @P)k 8(ageNum)k @@ -7670,9 +7790,12 @@ showpage %%PageResources: font Times-Roman %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Helvetica -/Helveticafnt5 vec2 /Helvetica LoutRecode -/fnt5 { /Helveticafnt5 LoutFont } def +/Helveticafnt6 vec2 /Helvetica LoutRecode +/fnt6 { /Helveticafnt6 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -7688,7 +7811,7 @@ gsave 1 LoutMargSet grestore 0 13255(when)m 576(in)s 9(v)k 4(ok)k 2(ed)k -1391(in)s 1634(the)s 1982(e)s 3(xpression)k 220 fnt5 +1391(in)s 1634(the)s 1982(e)s 3(xpression)k 220 fnt6 3059 13252(@P)m 8(ageList 1)k 240 fnt1 4267 13255(,)m 4374(has)s 4744(for)s 5082(its)s 5358(result)s 5948(the)s 6296(potentially)s 7372(in\207nite)s 8105(object)s 1927 2494 0 2494 240 288 60 480 10421 LoutGr2 @@ -7696,7 +7819,7 @@ grestore 0 ysize lineto closepath stroke grestore 160 fnt1 845 2216(-)m 931(1)s -1035(-)s 140 fnt5 170 2000(@T)m 16(e)k 4(xtPlace)k +1035(-)s 140 fnt6 170 2000(@T)m 16(e)k 4(xtPlace)k 170 173(@F)m 4(ootSect)k grestore 1927 2494 0 2494 240 288 60 480 7927 LoutGr2 @@ -7704,27 +7827,27 @@ grestore 0 ysize lineto closepath stroke grestore 160 fnt1 839 2216(-)m 925(2)s -1041(-)s 140 fnt5 170 2000(@T)m 16(e)k 4(xtPlace)k +1041(-)s 140 fnt6 170 2000(@T)m 16(e)k 4(xtPlace)k 170 173(@F)m 4(ootSect)k grestore -140 fnt5 480 7712(@P)m 5(ageList 3)k +140 fnt6 480 7712(@P)m 5(ageList 3)k 240 fnt1 0 7230(Similarly)m 15(,)k 980(we)s 1315(may)s -1781(de\207ne)s 220 fnt5 2422 7227(@F)m 6(ootSect)k 240 fnt1 -3573 7230(lik)m 2(e)k 3985(this:)s 220 fnt5 480 6729(def @F)m 6(ootSect)k +1781(de\207ne)s 220 fnt6 2422 7227(@F)m 6(ootSect)k 240 fnt1 +3573 7230(lik)m 2(e)k 3985(this:)s 220 fnt6 480 6729(def @F)m 6(ootSect)k 480 6441({)m 480 6153( def @F)m 6(ootList)k 480 5865( r)m -3(ight @Num)k 480 5577( {)m 480 5289( @F)m 6(ootPlace)k 480 5001( //1v)m 480 4713( @F)m 6(ootList @Ne)k 6(xt @Num)k 480 4425( })m 480 3849( 1i @Wide @HLine)m 480 3561( //1v)m 480 3273( @F)m 6(ootList 1)k 480 2985(})m 240 fnt1 0 2491(so)m 266(that)s 684(an)s -967(in)s 9(v)k 4(ocation)k 2021(of)s 220 fnt5 +967(in)s 9(v)k 4(ocation)k 2021(of)s 220 fnt6 2292 2488(@F)m 6(ootSect)k 240 fnt1 3443 2491(produces)m gsave 480 2151 translate -220 fnt5 1440 0 0 0 220 288 61 LoutGraphic +220 fnt6 1440 0 0 0 220 288 61 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore -220 fnt5 +220 fnt6 480 1806(@F)m 6(ootPlace)k 480 1518(@F)m 6(ootPlace)k 480 1230(@F)m 6(ootPlace)k 480 942(...)m grestore @@ -7748,9 +7871,18 @@ showpage %%+ font Times-Bold %%+ font Times-Italic /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Helvetica -/Helveticafnt5 vec2 /Helvetica LoutRecode -/fnt5 { /Helveticafnt5 LoutFont } def +/Helveticafnt6 vec2 /Helvetica LoutRecode +/fnt6 { /Helveticafnt6 LoutFont } def +%%IncludeResource: font Times-Bold +/Times-Boldfnt2 vec2 /Times-Bold LoutRecode +/fnt2 { /Times-Boldfnt2 LoutFont } def +%%IncludeResource: font Times-Italic +/Times-Italicfnt4 vec2 /Times-Italic LoutRecode +/fnt4 { /Times-Italicfnt4 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -7771,9 +7903,9 @@ grestore 6109(and)s 6562(w)s 2(ould)k 7266(be)s 7597(attempted)s 8646(only)s 0 12965(on)m 297(demand.)s 480 12591(Clearly)m 15(,)k 1276(deciding)s 2154(which)s 2797(e)s 3(xpansions)k 3910(to)s -4150(tak)s 2(e)k 4603(and)s 5008(replacing)s 220 fnt5 +4150(tak)s 2(e)k 4603(and)s 5008(replacing)s 220 fnt6 5951 12588(@T)m 26(e)k 6(xtPlace)k 240 fnt1 7170 12591(and)m -220 fnt5 7575 12588(@F)m 6(ootPlace)k 240 fnt1 8832 12591(by)m +220 fnt6 7575 12588(@F)m 6(ootPlace)k 240 fnt1 8832 12591(by)m 0 12303(the)m 338(appropriate)s 1471(actual)s 2085(te)s 3(xt)k 2489(will)s 2904(not)s 3259(be)s 3530(easy;)s 4056(this)s 4441(is)s 4640(the)s 4977(subject)s 5703(of)s 5963(Section)s @@ -7797,38 +7929,38 @@ grestore 8647(of)s 8960(a)s 0 9698(document.)m 1108(F)s 3(or)k 1497(e)s 3(xample,)k 2411(we)s 2746(naturally)s 3649(e)s 3(xpect)k 4330(equation)s 5211(formatting)s 6272(to)s 6511(be)s 6793(accomplished)s -8166(lik)s 2(e)k 8578(this:)s 220 fnt5 480 9201(surrounding te)m 6(xt)k +8166(lik)s 2(e)k 8578(this:)s 220 fnt6 480 9201(surrounding te)m 6(xt)k 480 8913(@Eq { {x sup 2 + 1} o)m 3(v)k 5(er 4 })k 480 8625(surrounding te)m 6(xt)k -240 fnt1 0 8126(with)m 482(the)s 830(symbols)s 220 fnt5 -1679 8123(sup)m 240 fnt1 2025 8126(,)m 220 fnt5 2132 8123(o)m 3(v)k 5(er)k +240 fnt1 0 8126(with)m 482(the)s 830(symbols)s 220 fnt6 +1679 8123(sup)m 240 fnt1 2025 8126(,)m 220 fnt6 2132 8123(o)m 3(v)k 5(er)k 240 fnt1 2551 8126(,)m 2658(etc.,)s 3103(visible)s 3796(only)s 4276(within)s 4944(the)s 5292(equation,)s 6223(not)s 6589(in)s 6832(the)s 7180(surrounding)s 8390(te)s 3(xt.)k 480 7752(It)m 695(seems)s 1341(natural)s 2069(to)s 2319(de\207ne)s 2970(these)s -3528(symbols)s 4387(within)s 220 fnt5 5066 7749(@Eq)m 240 fnt1 +3528(symbols)s 4387(within)s 220 fnt6 5066 7749(@Eq)m 240 fnt1 5544 7752(,)m 5661(since)s 6219(the)s 3(y)k 6692(are)s 7050(local)s 7579(to)s 7829(equations.)s 8921(It)s 0 7464(only)m 494(remains)s 1316(then)s 1799(to)s 2053(decree)s 2746(that)s -3179(symbols)s 4043(local)s 4576(to)s 220 fnt5 4830 7461(@Eq)m +3179(symbols)s 4043(local)s 4576(to)s 220 fnt6 4830 7461(@Eq)m 240 fnt1 5382 7464(are)m 5744(to)s 5998(be)s 6294(visible)s 7002(within)s 7684(its)s 7975(actual)s 8615(right)s 0 7176(parameter)m 9(,)k 1052(and)s 1456(this)s 1852(is)s 2062(done)s 2584(by)s 2878(replacing)s 3820(the)s 4168(right)s 4679(formal)s 5370(parameter)s -6384(with)s 6866(a)s 240 fnt3 7032 7178(body)m 240 fnt1 -7554 7176(parameter:)m 220 fnt5 480 6690(e)m 6(xpor)k -8(t sup o)k 3(v)k 5(er)k +6384(with)s 6866(a)s 240 fnt4 7032 7178(body)m 240 fnt1 +7554 7176(parameter:)m 220 fnt6 480 6690(e)m 6(xpor)k -8(t sup o)k 3(v)k 5(er)k 480 6402(def @Eq)m 480 6114( body @Body)m 480 5826({)m 480 5538( def sup ...)m 480 5250( def o)m 3(v)k 5(er ...)k 480 4674( Slope @F)m 6(ont @Body)k 480 4386(})m 240 fnt1 0 3892(The)m -220 fnt5 426 3889(e)m 6(xpor)k -8(t)k 240 fnt1 +220 fnt6 426 3889(e)m 6(xpor)k -8(t)k 240 fnt1 1092 3892(clause)m 1743(lists)s 2176(the)s 2522(identi\207ers)s 3526(which)s 4166(are)s 4511(permitted)s 5482(to)s 5719(be)s 5999(visible)s 6690(outside)s 7435(their)s 7930(usual)s 8488(range,)s 0 3604(the)m -359(body)s 905(of)s 220 fnt5 1188 3601(@Eq)m 240 fnt1 -1666 3604(;)m 1790(and)s 2206(the)s 220 fnt5 2566 3601(body)m +359(body)s 905(of)s 220 fnt6 1188 3601(@Eq)m 240 fnt1 +1666 3604(;)m 1790(and)s 2206(the)s 220 fnt6 2566 3601(body)m 240 fnt1 3112 3604(declaration)m 4241(imports)s 5034(them)s 5584(into)s 6021(\(mak)s 2(es)k 6772(them)s 7322(visible)s 8027(within\))s 8778(the)s 0 3316(actual)m 614(right)s 1114(parameter)s 2117(of)s 2376(each)s 2860(in)s 9(v)k 4(ocation)k 3903(of)s -220 fnt5 4162 3313(@Eq)m 240 fnt1 4640 3316(.)m 4793(This)s +220 fnt6 4162 3313(@Eq)m 240 fnt1 4640 3316(.)m 4793(This)s 5258(arrangement)s 6500(has)s 6859(pro)s 3(v)k 3(en)k 7564(v)s 3(ery)k 8028(con)s 9(v)k 3(enient)k 0 3028(for)m 338(de\207ning)s 1176(a)s 1342(v)s 6(ariety)k @@ -7864,9 +7996,12 @@ showpage %%PageResources: font Times-Roman %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Helvetica -/Helveticafnt5 vec2 /Helvetica LoutRecode -/fnt5 { /Helveticafnt5 LoutFont } def +/Helveticafnt6 vec2 /Helvetica LoutRecode +/fnt6 { /Helveticafnt6 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -7881,33 +8016,33 @@ gsave 5706 -1579(-)m 5834(19)s 6125(-)s 9066 13414 0 13310 240 288 60 1417 -15423 LoutGr2 1 LoutMargSet grestore -220 fnt5 480 13253(e)m 6(xpor)k -8(t @Heading @PP ...)k +220 fnt6 480 13253(e)m 6(xpor)k -8(t @Heading @PP ...)k 480 12965(def @BookLa)m 6(y)k 4(out)k 480 12677( named @InitialF)m 6(ont { )k 11(Times Base 12p })k 480 12389( named @InitialBreak { adjust 14p })m 480 12101( named @ColumnWidth { 6i })m 480 11813( ...)m 480 11525({)m 480 11237( def @Heading ...)m 480 10949( def @PP ...)m 480 10661(})m 240 fnt1 0 10167(No)m 6(w)k -220 fnt5 579 10164(@Heading)m 240 fnt1 1732 10167(and)m 220 fnt5 +220 fnt6 579 10164(@Heading)m 240 fnt1 1732 10167(and)m 220 fnt6 2202 10164(@PP)m 240 fnt1 2833 10167(may)m 3365(in)s 9(v)k 4(ok)k 2(e)k -220 fnt5 4124 10164(@InitialF)m 6(ont)k 240 fnt1 5411 10167(and)m +220 fnt6 4124 10164(@InitialF)m 6(ont)k 240 fnt1 5411 10167(and)m 5881(the)s 6295(other)s 6911(parameters.)s 8188(T)s 19(o)k -8554(mak)s 2(e)k 220 fnt5 0 9876(@Heading)m 240 fnt1 -1100 9879(and)m 220 fnt5 1517 9876(@PP)m 240 fnt1 2096 9879(visible)m +8554(mak)s 2(e)k 220 fnt6 0 9876(@Heading)m 240 fnt1 +1100 9879(and)m 220 fnt6 1517 9876(@PP)m 240 fnt1 2096 9879(visible)m 2802(throughout)s 3926(the)s 4287(document,)s 5352(we)s 5700(need)s 6223(only)s 6716(add)s 7133(a)s 7312(body)s 7859(parameter)s -8887(to)s 220 fnt5 0 9588(@BookLa)m 6(y)k 4(out)k +8887(to)s 220 fnt6 0 9588(@BookLa)m 6(y)k 4(out)k 240 fnt1 1428 9591(and)m 1832(present)s 2582(the)s 2930(entire)s -3529(document)s 4533(as)s 220 fnt5 480 9090(@BookLa)m 6(y)k 4(out)k +3529(document)s 4533(as)s 220 fnt6 480 9090(@BookLa)m 6(y)k 4(out)k 480 8802( @InitialF)m 6(ont { Helv)k 5(etica Base 10p })k 480 8514( @InitialBreak { adjust 12p })m 480 8226({)m 480 7938( )m 11(The document.)k 480 7650(})m 240 fnt1 0 7156(b)m 4(ut)k 383(for)s 742(practical)s 1639(reasons)s 2429(gi)s 6(v)k 3(en)k 3030(belo)s 6(w)k 3684(we)s 4040(prefer)s 4691(not)s 5078(to)s 5338(enclose)s 6132(the)s 6502(entire)s 7122(document)s 8147(in)s 8412(braces.)s 0 6868(Instead,)m 797(we)s 1132(write)s -220 fnt5 480 6386(@Use { @BookLa)m 6(y)k 4(out)k 480 6098( @InitialF)m 6(ont { Helv)k 5(etica Base 10p })k +220 fnt6 480 6386(@Use { @BookLa)m 6(y)k 4(out)k 480 6098( @InitialF)m 6(ont { Helv)k 5(etica Base 10p })k 480 5810( @InitialBreak { adjust 12p })m 480 5522(})m 480 5234(The document.)m 240 fnt1 0 4780(which)m 643(has)s 1015(the)s 1365(same)s 1914(ef)s 6(fect:)k -220 fnt5 2617 4777(@Use)m 240 fnt1 3284 4780(mak)m 2(es)k +220 fnt6 2617 4777(@Use)m 240 fnt1 3284 4780(mak)m 2(es)k 3946(the)s 4296(e)s 3(xported)k 5190(symbols)s 6040(of)s -220 fnt5 6313 4777(@BookLa)m 6(y)k 4(out)k 240 fnt1 +220 fnt6 6313 4777(@BookLa)m 6(y)k 4(out)k 240 fnt1 7743 4780(visible)m 8438(for)s 8778(the)s 0 4492(remainder)m 1028(of)s 1299(the)s 1647(document,)s 2698(and)s 3102(is)s 3312(permitted)s 4285(only)s 4765(at)s 4997(the)s 5345(be)s 3(ginning.)k @@ -7915,24 +8050,24 @@ grestore 3319(visibility)s 15(,)k 4278(and)s 4699(which)s 5359(will)s 5802(pro)s 3(v)k 3(e)k 6414(useful)s 7071(for)s 7426(cross)s 7986(referencing)s 0 3830(\(Section)m 851(6.1\),)s 1335(is)s -1543(the)s 220 fnt5 1889 3827(@Open)m 240 fnt1 2693 3830(symbol.)m +1543(the)s 220 fnt6 1889 3827(@Open)m 240 fnt1 2693 3830(symbol.)m 3560(It)s 3763(mak)s 2(es)k 4421(the)s 4767(e)s 3(xported)k 5657(symbols)s 6504(of)s 6773(its)s 7047(left)s 7422(parameter)s 8433(visible)s 0 3542(within)m 668(its)s 944(right)s 1455(parameter)s 9(,)k 2507(and)s 2911(is)s 3121(therefore)s 4038(similar)s 4760(to)s -4999(the)s 5347(P)s 3(ascal)k 220 fnt5 6009 3539(with)m +4999(the)s 5347(P)s 3(ascal)k 220 fnt6 6009 3539(with)m 240 fnt1 6444 3542(statement.)m 480 3168(It)m 698(could)s 1301(be)s 1596(ar)s 4(gued)k 2314(that)s 2745(Lout)s 3270(is)s 3493(o)s 3(v)k 3(er)k 4(-supplied)k 4869(with)s 5364(these)s 5924(visibility)s 6840(modifying)s 7903(features:)s 8778(the)s -0 2880(body)m 544(parameter)s 9(,)k 220 fnt5 1606 2877(@Use)m -240 fnt1 2282 2880(and)m 220 fnt5 2696 2877(@Open)m 240 fnt1 +0 2880(body)m 544(parameter)s 9(,)k 220 fnt6 1606 2877(@Use)m +240 fnt1 2282 2880(and)m 220 fnt6 2696 2877(@Open)m 240 fnt1 3513 2880(do)m 3816(not)s 4193(seem)s 4754(suf\207ciently)s 5894(dif)s 6(ferent)k 6779(from)s 7314(each)s 7819(another)s 13(.)k 8698(The)s -220 fnt5 0 2589(@Open)m 240 fnt1 806 2592(symbol)m 1566(is)s +220 fnt6 0 2589(@Open)m 240 fnt1 806 2592(symbol)m 1566(is)s 1776(the)s 2124(most)s 2649(general,)s 3459(being)s 4044(capable)s 4830(of)s 5101(replacing)s 6043(the)s 6391(other)s 6942(tw)s 2(o.)k -7463(F)s 3(or)k 7852(e)s 3(xample,)k 220 fnt5 +7463(F)s 3(or)k 7852(e)s 3(xample,)k 220 fnt6 480 2091(@Use { x })m 480 1803(@Use { y })m 480 1515(Body of document)m 240 fnt1 0 1017(can)m 389(be)s 671(replaced)s 1538(by)s grestore @@ -7956,9 +8091,18 @@ showpage %%+ font Times-Bold %%+ font Times-Italic /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Helvetica -/Helveticafnt5 vec2 /Helvetica LoutRecode -/fnt5 { /Helveticafnt5 LoutFont } def +/Helveticafnt6 vec2 /Helvetica LoutRecode +/fnt6 { /Helveticafnt6 LoutFont } def +%%IncludeResource: font Times-Bold +/Times-Boldfnt2 vec2 /Times-Bold LoutRecode +/fnt2 { /Times-Boldfnt2 LoutFont } def +%%IncludeResource: font Times-Italic +/Times-Italicfnt4 vec2 /Times-Italic LoutRecode +/fnt4 { /Times-Italicfnt4 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -7973,20 +8117,20 @@ gsave 5704 -1579(-)m 5832(20)s 6127(-)s 9066 13416 0 13312 240 288 60 1417 -15423 LoutGr2 0 LoutMargSet grestore -220 fnt5 480 13255(x @Open {)m +220 fnt6 480 13255(x @Open {)m 480 12967(y @Open {)m 480 12679(Body of document)m 480 12391(}})m 240 fnt1 0 11897(and,)m -453(taking)s 1104(the)s 220 fnt5 1452 11894(@Eq)m 240 fnt1 +453(taking)s 1104(the)s 220 fnt6 1452 11894(@Eq)m 240 fnt1 1990 11897(symbol)m 2750(abo)s 3(v)k 3(e)k 3372(as)s 3622(e)s 3(xample,)k 4536(we)s 4871(could)s 5461(eliminate)s 6405(its)s 6681(body)s 7215(parameter)s 9(,)k 8267(add)s -220 fnt5 480 11396(def @Body r)m -3(ight x { Slope @F)k 6(ont x })k 240 fnt1 +220 fnt6 480 11396(def @Body r)m -3(ight x { Slope @F)k 6(ont x })k 240 fnt1 0 10897(to)m 239(the)s 587(e)s 3(xported)k 1479(de\207nitions)s -2540(of)s 220 fnt5 2811 10894(@Eq)m 240 fnt1 3289 10897(,)m -3396(and)s 3800(replace)s 220 fnt5 480 10396(@Eq { object })m 240 fnt1 -0 9899(by)m 220 fnt5 480 9398(@Eq @Open { @Body { object } })m 240 fnt1 0 8898(If)m -220 fnt5 232 8895(@Eq)m 240 fnt1 772 8898(is)m 985(a)s +2540(of)s 220 fnt6 2811 10894(@Eq)m 240 fnt1 3289 10897(,)m +3396(and)s 3800(replace)s 220 fnt6 480 10396(@Eq { object })m 240 fnt1 +0 9899(by)m 220 fnt6 480 9398(@Eq @Open { @Body { object } })m 240 fnt1 0 8898(If)m +220 fnt6 232 8895(@Eq)m 240 fnt1 772 8898(is)m 985(a)s 1153(g)s 1(alle)k 3(y)k 1790(\(Section)s 2645(5.1\),)s -220 fnt5 3133 8895(@Body)m 240 fnt1 3917 8898(must)m 4444(tak)s 2(e)k +220 fnt6 3133 8895(@Body)m 240 fnt1 3917 8898(must)m 4444(tak)s 2(e)k 4899(o)s 3(v)k 3(er)k 5380(that)s 5800(function.)s 6764(But)s 7172(one)s 7577(w)s 2(ould)k 8234(not)s 8603(w)s 2(ant)k 0 8610(to)m 253(write)s 813(these)s @@ -8000,34 +8144,34 @@ grestore 5110(when)s 5676(e)s 3(xpert)k 6319(users)s 6851(wish)s 7350(to)s 7579(de\207ne)s 8210(an)s 8482(object)s 0 7660(or)m 259(operator)s 1115(for)s 1453(repeated)s 2320(use)s 2695(within,)s -3413(say)s 15(,)k 3824(equations:)s 220 fnt5 480 7161(def isum { sum from i=1 to n })m +3413(say)s 15(,)k 3824(equations:)s 220 fnt6 480 7161(def isum { sum from i=1 to n })m 240 fnt1 0 6667(As)m 338(it)s 551(stands)s 1221(this)s 1638(can)s 2048(only)s 2549(be)s 2852(placed)s 3555(within)s -4244(the)s 220 fnt5 4613 6664(@Eq)m 240 fnt1 5172 6667(package)m -6033(itself,)s 6637(where)s 220 fnt5 7298 6664(sum)m 240 fnt1 +4244(the)s 220 fnt6 4613 6664(@Eq)m 240 fnt1 5172 6667(package)m +6033(itself,)s 6637(where)s 220 fnt6 7298 6664(sum)m 240 fnt1 7780 6667(and)m 8205(the)s 8575(other)s 0 6379(symbols)m 841(are)s 1179(visible,)s 1915(b)s 4(ut)k 2268(it)s 2451(is)s 2653(not)s 3010(desirable)s 3919(to)s 4150(modify)s 4886(the)s 5225(source)s 5897(code)s 6396(of)s 6658(a)s 6816(standard)s 7675(package.)s 8614(Lout)s 0 6091(pro)m 3(vides)k 872(an)s -220 fnt5 1155 6088(impor)m -8(t)k 240 fnt1 1828 6091(clause)m +220 fnt6 1155 6088(impor)m -8(t)k 240 fnt1 1828 6091(clause)m 2481(to)s 2720(solv)s 3(e)k 3278(this)s 3674(problem:)s -220 fnt5 480 5590(impor)m -8(t @Eq)k 480 5302(def isum { sum from i=1 to n })m 240 fnt1 -0 4808(may)m 469(appear)s 1169(after)s 220 fnt5 1669 4805(@Eq)m +220 fnt6 480 5590(impor)m -8(t @Eq)k 480 5302(def isum { sum from i=1 to n })m 240 fnt1 +0 4808(may)m 469(appear)s 1169(after)s 220 fnt6 1669 4805(@Eq)m 240 fnt1 2210 4808(is)m 2423(de\207ned,)s 3239(and)s 3646(it)s 3842(will)s 4271(mak)s 2(e)k 4846(the)s 5198(e)s 3(xported)k -6093(symbols)s 6945(of)s 220 fnt5 7220 4805(@Eq)m 240 fnt1 +6093(symbols)s 6945(of)s 220 fnt6 7220 4805(@Eq)m 240 fnt1 7761 4808(visible)m 8458(within)s 0 4520(the)m 335(body)s 855(of)s -220 fnt5 1112 4517(isum)m 240 fnt1 1561 4520(.)m 1711(This)s +220 fnt6 1112 4517(isum)m 240 fnt1 1561 4520(.)m 1711(This)s 2174(feature)s 2878(complicates)s 4056(the)s 4390(treatment)s 5337(of)s 5595(en)s 9(vironments)k 6925(\(Section)s 7764(3.4\),)s 8236(and)s 8626(e)s 6(v)k 3(en)k 0 4232(introduces)m 1050(an)s -1336(insecurity)s 15(,)k 2373(when)s 220 fnt5 2952 4229(isum)m +1336(insecurity)s 15(,)k 2373(when)s 220 fnt6 2952 4229(isum)m 240 fnt1 3464 4232(is)m 3677(in)s 9(v)k 4(ok)k 2(ed)k 4495(outside)s 5245(an)s 5531(equation.)s 6522(A)s 6755(simpler)s 7534(approach)s 8471(w)s 2(ould)k 0 3944(be)m 290(to)s 538(allo)s 6(w)k 1126(only)s 1615(one)s 2026(symbol)s -2795(in)s 3047(an)s 220 fnt5 3339 3941(impor)m -8(t)k +2795(in)s 3047(an)s 220 fnt6 3339 3941(impor)m -8(t)k 240 fnt1 4020 3944(clause,)m 4733(and)s 5146(treat)s 5638(the)s 5995(follo)s 6(wing)k 6981(de\207nition)s 7964(e)s 3(xactly)k 8714(lik)s 2(e)k 0 3656(a)m 174(local)s 702(de\207nition)s @@ -8048,13 +8192,13 @@ grestore 3917(for)s 4263(macros)s 5011(which)s 5660(are)s 6014(lists)s 6456(of)s 6734(tok)s 2(ens,)k 7471(and)s 7882(manages)s 8778(the)s 0 1378(usual)m 564(stack)s 1121(of)s 1397(static)s -1958(scopes,)s 2708(accepting)s 240 fnt3 3682 1380(PushScope)m 240 fnt1 -4791 1378(and)m 240 fnt3 5200 1380(P)m 19(opScope)k 240 fnt1 +1958(scopes,)s 2708(accepting)s 240 fnt4 3682 1380(PushScope)m 240 fnt1 +4791 1378(and)m 240 fnt4 5200 1380(P)m 19(opScope)k 240 fnt1 6197 1378(operations)m 7249(as)s 7504(the)s 7857(parser)s 8505(enters)s 0 1090(and)m 447(lea)s 4(v)k 3(es)k 1131(scope)s 1775(re)s 3(gions,)k 2626(including)s 3627(actual)s 4295(body)s 4872(parameters)s 6013(and)s 6461(the)s 6852(right)s 7406(parameter)s -8463(of)s 8778(the)s 220 fnt5 0 799(@Open)m 240 fnt1 +8463(of)s 8778(the)s 220 fnt6 0 799(@Open)m 240 fnt1 806 802(operator)m 13(.)k 480 428(As)m 818(the)s 1187(parse)s 1769(proceeds,)s 2747(a)s 2934(complete)s 3888(call)s 4308(graph)s 4932(is)s 5163(constructed,)s 6393(recording,)s 7438(for)s 7797(each)s @@ -8083,9 +8227,18 @@ showpage %%+ font Helvetica %%+ font Times-Bold /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def +%%IncludeResource: font Times-Italic +/Times-Italicfnt4 vec2 /Times-Italic LoutRecode +/fnt4 { /Times-Italicfnt4 LoutFont } def %%IncludeResource: font Helvetica -/Helveticafnt5 vec2 /Helvetica LoutRecode -/fnt5 { /Helveticafnt5 LoutFont } def +/Helveticafnt6 vec2 /Helvetica LoutRecode +/fnt6 { /Helveticafnt6 LoutFont } def +%%IncludeResource: font Times-Bold +/Times-Boldfnt2 vec2 /Times-Bold LoutRecode +/fnt2 { /Times-Boldfnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -8127,7 +8280,7 @@ grestore 3325(parameter)s 4339(v)s 6(alues.)k 480 10780(T)m 19(o)k 780(e)s 6(v)k 6(aluate)k 1620(an)s 1903(unsized)s 2692(object)s 3336(\(pure)s 3896(parse)s 4456(tree\),)s 4999(its)s -240 fnt3 5275 10782(en)m 9(vir)k 10(onment)k 240 fnt1 +240 fnt4 5275 10782(en)m 9(vir)k 10(onment)k 240 fnt1 6456 10780(,)m 6563(the)s 6911(equi)s 6(v)k 6(alent)k 7955(of)s 8226(the)s 8574(stack)s 0 10492(frames)m 728(in)s 999(Algol-lik)s 2(e)k 2064(languages,)s 3156(must)s 3710(be)s @@ -8156,11 +8309,11 @@ grestore 7212(not)s 7566(copied;)s 8303(cop)s 2(ying)k 0 8390(could)m 581(lead)s 1028(to)s 1258(quadratic)s 2191(time)s 2662(comple)s 3(xity)k 15(.)k 3875(Actual)s 4558(parameters)s 5647(of)s 5909(the)s 6248(form)s -220 fnt5 6763 8387(@Ne)m 6(xt)k 240 fnt3 7478 8392(object)m +220 fnt6 6763 8387(@Ne)m 6(xt)k 240 fnt4 7478 8392(object)m 240 fnt1 8117 8390(recei)m 6(v)k 3(e)k 8843(an)s 0 8102(applicati)m 6(v)k 3(e)k 1105(pre-)s 1478(e)s 6(v)k 6(aluation)k 2529(which)s 3181(pre)s 6(v)k 3(ents)k 4044(long)s -4533(chains)s 5205(of)s 220 fnt5 5486 8099(@Ne)m 6(xt)k +4533(chains)s 5205(of)s 220 fnt6 5486 8099(@Ne)m 6(xt)k 240 fnt1 6221 8102(symbols)m 7080(from)s 7614(forming)s 8448(during)s 0 7814(the)m 359(generation)s 1437(of)s 1719(lar)s 4(ge)k 2260(page)s 2779(numbers.)s 3779(Some)s 4391(en)s 9(vironments)k @@ -8211,7 +8364,7 @@ grestore 5418(of)s 5697(the)s 6054(structure)s 6953(from)s 7485(the)s 7841(root)s 8294(do)s 6(wn)k 8887(to)s 0 2628(the)m 348(lea)s 4(v)k 3(es)k 989(and)s 1393(back.)s -240 fnt3 0 2174(1.)m 330(Evaluation)s 1490(of)s 1827(unsized)s +240 fnt4 0 2174(1.)m 330(Evaluation)s 1490(of)s 1827(unsized)s 2667(objects.)s 240 fnt1 3554 2172(On)m 3960(the)s 4364(w)s 2(ay)k 4871(do)s 6(wn,)k 5561(calculate)s 6521(en)s 9(vironments)k 7921(and)s 8381(replace)s 0 1884(non-recursi)m 6(v)k 3(e,)k @@ -8221,19 +8374,19 @@ grestore 0 1596(and)m 409(paragraph)s 1427(breaking)s 2322(and)s 2731(spacing)s 3521(styles)s 4121(to)s 4365(the)s 4718(paragraph)s 5736(nodes.)s 6465(On)s 6820(the)s 7173(w)s 2(ay)k 7629(back)s -8147(up,)s 8500(delete)s 240 fnt3 0 1310(FONT)m 240 fnt1 -630 1308(,)m 240 fnt3 737 1310(BREAK)m 240 fnt1 1494 1308(,)m -1601(and)s 240 fnt3 2005 1310(SP)m 21(A)k 7(CE)k -240 fnt1 2760 1308(nodes,)m 3426(and)s 3830(insert)s 240 fnt3 -4420 1310(SPLIT)m 240 fnt1 5049 1308(,)m 240 fnt3 5156 1310(COL)m -240 fnt1 5622 1308(,)m 5729(and)s 240 fnt3 6133 1310(R)m 9(O)k 12(W)k -240 fnt1 6707 1308(nodes)m 7317(\(Section)s 8170(2.3\).)s 240 fnt3 +8147(up,)s 8500(delete)s 240 fnt4 0 1310(FONT)m 240 fnt1 +630 1308(,)m 240 fnt4 737 1310(BREAK)m 240 fnt1 1494 1308(,)m +1601(and)s 240 fnt4 2005 1310(SP)m 21(A)k 7(CE)k +240 fnt1 2760 1308(nodes,)m 3426(and)s 3830(insert)s 240 fnt4 +4420 1310(SPLIT)m 240 fnt1 5049 1308(,)m 240 fnt4 5156 1310(COL)m +240 fnt1 5622 1308(,)m 5729(and)s 240 fnt4 6133 1310(R)m 9(O)k 12(W)k +240 fnt1 6707 1308(nodes)m 7317(\(Section)s 8170(2.3\).)s 240 fnt4 0 815(2.)m 293(W)s 13(idth)k 925(calculations)s 2169(and)s 2614(br)s 8(eaking)k 3(.)k 240 fnt1 3628 813(Calculate)m 4605(the)s 4973(width)s 5594(of)s 5885(e)s 6(v)k 3(ery)k 6480(subobject)s 7477(from)s 8020(the)s 8388(bottom)s 0 525(up.)m 404(As)s 720(described)s 1693(in)s 1936(Section)s 2709(2.3,)s -240 fnt3 3115 527(WIDE)m 240 fnt1 3777 525(nodes)m 4386(may)s +240 fnt4 3115 527(WIDE)m 240 fnt1 3777 525(nodes)m 4386(may)s 4851(trigger)s 5547(object)s 6190(breaking)s 7079(sub-tra)s 4(v)k 3(ersals)k 8448(during)s 0 237(this)m 396(pass.)s grestore @@ -8257,9 +8410,18 @@ showpage %%+ font Times-Bold %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def +%%IncludeResource: font Times-Italic +/Times-Italicfnt4 vec2 /Times-Italic LoutRecode +/fnt4 { /Times-Italicfnt4 LoutFont } def +%%IncludeResource: font Times-Bold +/Times-Boldfnt2 vec2 /Times-Bold LoutRecode +/fnt2 { /Times-Boldfnt2 LoutFont } def %%IncludeResource: font Helvetica -/Helveticafnt5 vec2 /Helvetica LoutRecode -/fnt5 { /Helveticafnt5 LoutFont } def +/Helveticafnt6 vec2 /Helvetica LoutRecode +/fnt6 { /Helveticafnt6 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -8274,16 +8436,16 @@ gsave 5705 -1579(-)m 5833(22)s 6127(-)s 9066 13419 0 13308 240 288 60 1417 -15423 LoutGr2 0 LoutMargSet grestore -240 fnt3 0 13256(3.)m +240 fnt4 0 13256(3.)m 274(Height)s 989(calculations.)s 240 fnt1 2312 13254(Calculate)m 3270(the)s 3618(height)s 4276(of)s 4547(e)s 6(v)k 3(ery)k 5123(subobject,)s 6147(from)s 6671(the)s 7019(bottom)s 7757(up.)s -240 fnt3 0 12751(4.)m 283(Horizontal)s 1389(coor)s 8(dinates.)k +240 fnt4 0 12751(4.)m 283(Horizontal)s 1389(coor)s 8(dinates.)k 240 fnt1 2674 12749(Calculate)m 3641(the)s 3998(horizontal)s 5032(coordinate)s 6106(of)s 6386(each)s 6890(subobject)s 7876(from)s 8409(the)s 8767(top)s 0 12461(do)m 6(wn,)k 634(and)s 1038(store)s 1558(each)s 2053(leaf)s -13(')k 13(s)k 2633(coordinate)s -3698(in)s 3941(the)s 4289(leaf.)s 240 fnt3 0 11977(5.)m +3698(in)s 3941(the)s 4289(leaf.)s 240 fnt4 0 11977(5.)m 295(V)s 26(ertical)k 1119(coor)s 8(dinates)k 2317(and)s 2765(P)s 19(ostScript)k 3827(g)s 2(ener)k 3(ation.)k 240 fnt1 5034 11975(Calculate)m 6013(the)s 6383(v)s 3(ertical)k @@ -8332,7 +8494,7 @@ grestore 3100(a)s 3279(representati)s 6(v)k 3(e)k 4677(e)s 3(xample.)k 5661(At)s 5973(some)s 6546(point)s 7111(in)s 7366(the)s 7727(document,)s 8791(we)s 0 5295(wish)m 509(to)s 748(write)s -220 fnt5 480 4847(preceding te)m 6(xt)k 480 4559(@F)m 6(ootNote { f)k 6(ootnote te)k 6(xt })k +220 fnt6 480 4847(preceding te)m 6(xt)k 480 4559(@F)m 6(ootNote { f)k 6(ootnote te)k 6(xt })k 480 4271(f)m 6(ollo)k 3(wing te)k 6(xt)k 240 fnt1 0 3772(and)m 406(we)s 744(e)s 3(xpect)k 1428(the)s 1779(formatter)s 2729(to)s 2971(remo)s 3(v)k 3(e)k @@ -8393,6 +8555,15 @@ showpage %%+ font Times-Italic %%+ font Times-Bold /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def +%%IncludeResource: font Times-Italic +/Times-Italicfnt4 vec2 /Times-Italic LoutRecode +/fnt4 { /Times-Italicfnt4 LoutFont } def +%%IncludeResource: font Times-Bold +/Times-Boldfnt2 vec2 /Times-Bold LoutRecode +/fnt2 { /Times-Boldfnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -8420,8 +8591,8 @@ grestore 7172(600)s 1659 11202(8.)m 2163(Cross)s 2759(references)s 3790(and)s 4194(databases)s 6992(1,000)s 1659 10914(9.)m 2163(W)s 9(idth)k 2809(and)s 3213(height)s 3871(calculations,)s 5119(and)s 5523(breaking)s -7172(700)s 1539 10626(10.)m 240 fnt3 2163 10628(Constr)m 3(ained)k -240 fnt1 3410 10626(and)m 240 fnt3 3814 10628(AdjustSize)m 240 fnt1 +7172(700)s 1539 10626(10.)m 240 fnt4 2163 10628(Constr)m 3(ained)k +240 fnt1 3410 10626(and)m 240 fnt4 3814 10628(AdjustSize)m 240 fnt1 7172 10626(700)m 1539 10338(11.)m 2163(T)s 8(ransfer)k 3023(of)s 3294(sized)s 3843(objects)s 4571(into)s 4996(g)s 1(alle)k 3(y)k 5630(tree)s 7172(450)s 1539 10050(12.)m 2163(Galle)s 3(y)k @@ -8476,7 +8647,7 @@ grestore 6285(only)s 6787(leads)s 7351(to)s 7612(static)s 8190(trees)s 8714(lik)s 2(e)k 0 4825(this)m 396(one:)s gsave 480 2539 translate -240 fnt3 3666 1996 170 1715 240 288 60 LoutGraphic +240 fnt4 3666 1996 170 1715 240 288 60 LoutGraphic gsave grestore save gsave 200 dict begin lfigdict begin grestore @@ -8587,7 +8758,7 @@ grestore 5415(completely)s 6531(dif)s 6(ferent,)k 7453(dynamic)s 8330(tree:)s gsave 480 186 translate -240 fnt3 4663 1274 0 995 240 288 60 LoutGraphic +240 fnt4 4663 1274 0 995 240 288 60 LoutGraphic gsave grestore save gsave 200 dict begin lfigdict begin grestore @@ -8738,9 +8909,18 @@ showpage %%+ font Helvetica %%+ font Times-Bold /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def +%%IncludeResource: font Times-Italic +/Times-Italicfnt4 vec2 /Times-Italic LoutRecode +/fnt4 { /Times-Italicfnt4 LoutFont } def %%IncludeResource: font Helvetica -/Helveticafnt5 vec2 /Helvetica LoutRecode -/fnt5 { /Helveticafnt5 LoutFont } def +/Helveticafnt6 vec2 /Helvetica LoutRecode +/fnt6 { /Helveticafnt6 LoutFont } def +%%IncludeResource: font Times-Bold +/Times-Boldfnt2 vec2 /Times-Bold LoutRecode +/fnt2 { /Times-Boldfnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -8777,7 +8957,7 @@ grestore 854(are)s 1206(thus)s 1662(led)s 2017(to)s 2261(propose)s 3081(a)s 3252(second)s 3980(abstraction)s 5091(for)s 5434(document)s 6443(formatting,)s 7564(which)s 8211(we)s 8552(name)s 0 11154(the)m -240 fnt3 371 11156(galle)m 7(y)k 240 fnt1 1028 11154(in)m +240 fnt4 371 11156(galle)m 7(y)k 240 fnt1 1028 11154(in)m 1294(recognition)s 2464(of)s 2759(its)s 3058(similarity)s 4050(to)s 4312(the)s 4684(g)s 1(alle)k 3(ys)k 5432(used)s 5952(in)s 6219(manual)s 7001(typesetting.)s 8238(A)s 8492(g)s 1(alle)k 3(y)k @@ -8793,40 +8973,40 @@ grestore 5671(entire)s 6270(object.)s 480 9916(In)m 736(Lout,)s 1295(a)s 1461(footnote)s 2314(g)s 1(alle)k 3(y)k 2948(and)s 3352(its)s 3628(place)s 4188(of)s 4459(appearance)s 5590(are)s -5937(de\207ned)s 6700(as)s 6950(follo)s 6(ws:)k 220 fnt5 +5937(de\207ned)s 6700(as)s 6950(follo)s 6(ws:)k 220 fnt6 480 9415(def @F)m 6(ootPlace { @Galle)k 4(y })k 480 8839(def @F)m 6(ootNote into { @F)k 6(ootPlace&&f)k 6(ollo)k 3(wing })k 480 8551( r)m -3(ight x)k 480 8263({ x })m 240 fnt1 0 7769(The)m -220 fnt5 445 7766(@F)m 6(ootPlace)k 240 fnt1 1719 7769(symbol)m -2496(contains)s 3362(the)s 3727(special)s 4463(symbol)s 220 fnt5 +220 fnt6 445 7766(@F)m 6(ootPlace)k 240 fnt1 1719 7769(symbol)m +2496(contains)s 3362(the)s 3727(special)s 4463(symbol)s 220 fnt6 5240 7766(@Galle)m 4(y)k 240 fnt1 6078 7769(,)m 6203(indicating)s 7229(that)s 7665(it)s 7874(is)s 8102(a)s 8285(point)s 8855(of)s 0 7481(appearance)m 1143(for)s 1493(a)s 1672(g)s 1(alle)k 3(y)k 15(.)k 2413(By)s 2759(placing)s 3529(in)s 9(v)k 4(ocations)k -4682(of)s 220 fnt5 4965 7478(@F)m 6(ootPlace)k 240 fnt1 +4682(of)s 220 fnt6 4965 7478(@F)m 6(ootPlace)k 240 fnt1 6234 7481(at)m 6478(the)s 6838(bottoms)s 7673(of)s 7956(pages,)s 8620(as)s 8883(in)s 0 7193(Section)m 801(3.2,)s 1235(we)s 1597(de\207ne)s 2265(the)s 2640(desired)s 3415(points)s 4078(of)s 4376(appearance)s 5534(for)s 5899(footnotes.)s 6980(Symbols)s 7896(whose)s -8592(body)s 0 6905(contains)m 220 fnt5 863 6902(@Galle)m 4(y)k +8592(body)s 0 6905(contains)m 220 fnt6 863 6902(@Galle)m 4(y)k 240 fnt1 1776 6905(either)m 2394(directly)s 3192(or)s 3466(indirectly)s 4450(are)s 4812(called)s 5455(recepti)s 6(v)k 3(e)k 6392(symbols,)s 7312(meaning)s 8204(recepti)s 6(v)k 3(e)k 0 6617(to)m 239(g)s 1(alle)k 3(ys,)k 1019(and)s 1423(the)s 3(y)k 1886(are)s 2233(e)s 3(xpanded)k 3207(only)s 3687(on)s 3984(demand.)s 4906(The)s 5334(ef)s 6(fect)k -5930(of)s 6202(the)s 220 fnt5 6550 6614(into)m 240 fnt1 +5930(of)s 6202(the)s 220 fnt6 6550 6614(into)m 240 fnt1 6956 6617(clause)m 7609(is)s 7819(to)s 8058(mak)s 2(e)k 8631(each)s 0 6329(in)m 9(v)k 4(ocation)k 1057(of)s -220 fnt5 1332 6326(@F)m 6(ootNote)k 240 fnt1 2506 6329(a)m +220 fnt6 1332 6326(@F)m 6(ootNote)k 240 fnt1 2506 6329(a)m 2676(g)s 1(alle)k 3(y)k 3313(whose)s 3985(object)s 4632(is)s 4846(the)s 5198(result)s 5791(of)s 6066(the)s 6417(in)s 9(v)k 4(ocation)k 7475(in)s 7721(the)s 8073(usual)s 8637(w)s 2(ay)k 15(,)k 0 6041(and)m 406(whose)s 1076(sequence)s 2011(of)s 2285(points)s 2923(of)s 3196(appearance)s 4329(is)s 4542(speci\207ed)s 5452(by)s 5748(the)s -220 fnt5 6098 6038(into)m 240 fnt1 6507 6041(clause;)m 7218(in)s +220 fnt6 6098 6038(into)m 240 fnt1 6507 6041(clause;)m 7218(in)s 7463(this)s 7861(e)s 3(xample,)k 8778(the)s 0 5753(sequence)m -933(of)s 1204(all)s 220 fnt5 1497 5750(@F)m 6(ootPlace)k +933(of)s 1204(all)s 220 fnt6 1497 5750(@F)m 6(ootPlace)k 240 fnt1 2753 5753(symbols)m 3602(follo)s 6(wing)k 4579(the)s 4927(in)s 9(v)k 4(ocation)k 5981(point.)s 480 5379(Lout)m 995(permits)s 1766(g)s 1(alle)k 3(ys)k 2494(to)s @@ -8838,7 +9018,7 @@ grestore 3907(body)s 4454(te)s 3(xt)k 4882(g)s 1(alle)k 3(y)k 15(,)k 5568(for)s 5919(e)s 3(xample,)k 6846(creating)s 7681(arbitrary)s 8570(static)s 0 4803(trees.)m 649(Recepti)s 6(v)k 3(e)k -1688(symbols)s 2573(lik)s 2(e)k 220 fnt5 3021 4800(@F)m 6(ootPlace)k +1688(symbols)s 2573(lik)s 2(e)k 220 fnt6 3021 4800(@F)m 6(ootPlace)k 240 fnt1 4313 4803(may)m 4815(appear)s 5548(within)s 6252(an)s 3(y)k 6685(g)s 1(alle)k 3(y)k 15(,)k 7393(creating)s 8251(arbitrary)s 0 4515(dynamic)m 912(trees)s 1449(as)s 1734(well.)s @@ -8850,12 +9030,12 @@ grestore 7604(a)s 7797(g)s 1(alle)k 3(y)k 8458(whose)s 0 3939(point)m 563(of)s 845(appearance)s 1987(is)s 2208(the)s 2567(output)s 3250(\207le.)s 3730(Points)s 4390(of)s 4672(appearance)s -5814(may)s 6291(be)s 220 fnt5 6584 3936(preceding)m 240 fnt1 -7606 3939(or)m 220 fnt5 7876 3936(f)m 6(ollo)k 3(wing)k +5814(may)s 6291(be)s 220 fnt6 6584 3936(preceding)m 240 fnt1 +7606 3939(or)m 220 fnt6 7876 3936(f)m 6(ollo)k 3(wing)k 240 fnt1 8778 3939(the)m 0 3651(in)m 9(v)k 4(ocation)k 1054(point;)s 1658(entries)s 2345(in)s 2588(tables)s 3196(of)s 3467(contents)s 4315(are)s 4662(the)s 5010(main)s 5545(users)s -6087(of)s 220 fnt5 6358 3648(preceding)m 240 fnt1 7309 3651(.)m +6087(of)s 220 fnt6 6358 3648(preceding)m 240 fnt1 7309 3651(.)m 480 3277(The)m 913(g)s 1(alle)k 3(y)k 1552(abstraction)s 2662(is)s 2877(adequate)s 3788(for)s 4131(all)s 4429(of)s 4706(the)s 5059(applications)s 6270(listed)s 6850(at)s 7087(the)s @@ -8867,7 +9047,7 @@ grestore 715(has)s 1075(been)s 1574(added)s 2194(to)s 2423(Lout)s 2925(as)s 3165(a)s 3321(b)s 4(uilt-in)k 4068(feature,)s 4827(in)s 9(v)k 4(ok)k 2(ed)k 5632(by)s -5916(adding)s 6611(a)s 6767(special)s 220 fnt5 7475 2698(@K)m 8(e)k 4(y)k +5916(adding)s 6611(a)s 6767(special)s 220 fnt6 7475 2698(@K)m 8(e)k 4(y)k 240 fnt1 8112 2701(parameter)m 0 2413(to)m 227(the)s 563(g)s 1(alle)k 3(ys,)k 1330(and)s 1722(using)s 2281(its)s 2545(v)s 6(alue)k 3100(as)s 3338(the)s 3673(sort)s 4079(k)s 2(e)k 3(y)k 15(.)k @@ -8885,7 +9065,7 @@ grestore 1359(then)s 1843(carried)s 2579(along)s 3179(with)s 3676(it,)s 3931(ultimately)s 4968(to)s 5222(the)s 5586(root)s 6046(g)s 1(alle)k 3(y)k 6695(and)s 7115(the)s 7478(output)s 8165(\207le.)s 8650(This)s -0 423(process)m 800(is)s 1042(called)s 240 fnt3 1703 425(galle)m 7(y)k +0 423(process)m 800(is)s 1042(called)s 240 fnt4 1703 425(galle)m 7(y)k 2368(\210ushing)s 240 fnt1 3121 423(:)m 3259(the)s 3640(g)s 1(alle)k 3(ys)k 4396(are)s 4775(ri)s 6(v)k 3(ers)k 5393(running)s 6223(together)s 7098(to)s 7370(the)s 7750(sea,)s 8194(and)s @@ -8911,9 +9091,15 @@ showpage %%+ font Helvetica %%+ font Times-Italic /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Helvetica -/Helveticafnt5 vec2 /Helvetica LoutRecode -/fnt5 { /Helveticafnt5 LoutFont } def +/Helveticafnt6 vec2 /Helvetica LoutRecode +/fnt6 { /Helveticafnt6 LoutFont } def +%%IncludeResource: font Times-Italic +/Times-Italicfnt4 vec2 /Times-Italic LoutRecode +/fnt4 { /Times-Italicfnt4 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -8931,11 +9117,11 @@ grestore 480 13250(Here)m 1057(is)s 1324(a)s 1547(snapshot)s 2502(of)s 2830(a)s 3053(small)s 3682(dynamic)s 4616(tree,)s 5137(based)s 5797(on)s 6151(the)s -220 fnt5 6556 13247(@P)m 8(ageList)k 240 fnt1 7737 13250(de\207nitions)m +220 fnt6 6556 13247(@P)m 8(ageList)k 240 fnt1 7737 13250(de\207nitions)m 8855(of)s 0 12962(Section)m 774(3.2:)s 6982 3257 0 3257 240 288 60 480 9414 LoutGr2 grestore save gsave 200 dict begin lfigdict begin grestore -200 fnt3 0 3121(output)m +200 fnt4 0 3121(output)m 563(\207le)s gsave 860 0 translate 240 fnt1 0 3257 0 3165 240 288 60 LoutGraphic @@ -8977,7 +9163,7 @@ gsave 0 ysize lineto closepath stroke grestore 160 fnt1 845 2216(-)m 931(1)s 1035(-)s 410 2000(A)m -563(small)s 140 fnt5 170 1784(@Galle)m 2(y)k 160 fnt1 +563(small)s 140 fnt6 170 1784(@Galle)m 2(y)k 160 fnt1 743(*)s 904 1617 5 1545 160 180 40 853 275 LoutGr2 currentdict end 200 dict begin begin grestore @@ -8991,7 +9177,7 @@ grestore grestore (C) lfigpromotelabels grestore -140 fnt5 170 173(@F)m 4(ootSect)k +140 fnt6 170 173(@F)m 4(ootSect)k grestore gsave 1994 0 translate @@ -9002,7 +9188,7 @@ gsave 0.15 cm /lfigsolid [ lfigbox ] lfigdopath pop pop grestore -140 fnt5 +140 fnt6 170 201(@P)m 5(ageList 2)k grestore 5055 2611(body)m 5490(te)s 4(xt)k @@ -9043,7 +9229,7 @@ gsave 0.15 cm /lfigsolid [ lfigbox ] lfigdopath pop pop grestore -160 fnt5 170 203(@Input)m +160 fnt6 170 203(@Input)m grestore gsave 0 0 translate @@ -9079,14 +9265,14 @@ grestore 2039(the)s 2431(body)s 3009(te)s 3(xt)k 3468(g)s 1(alle)k 3(y)k 4146(are)s 4537(lines,)s 5139(e)s 3(xcept)k 5864(for)s 6246(the)s 6638(special)s 7400(recepti)s 6(v)k 3(e)k -8366(symbol)s 220 fnt5 0 8672(@Input)m 240 fnt1 759 8675(which)m +8366(symbol)s 220 fnt6 0 8672(@Input)m 240 fnt1 759 8675(which)m 1393(is)s 1595(a)s 1753(placeholder)s 2920(for)s 3249(as)s 3491(yet)s 3835(unread)s 4536(input)s 5080(\(Section)s 5924(5.4\).)s 6459(The)s 6879(components)s 8079(of)s 8342(the)s 8681(root)s 0 8387(g)m 1(alle)k 3(y)k 646(are)s 1006(pages,)s 1671(e)s 3(xcept)k 2364(for)s 2715(the)s 3076(concluding)s 4205(une)s 3(xpanded)k 5431(in)s 9(v)k 4(ocation)k -6498(of)s 220 fnt5 6781 8384(@P)m 8(ageList)k 240 fnt1 +6498(of)s 220 fnt6 6781 8384(@P)m 8(ageList)k 240 fnt1 7845 8387(,)m 7965(which)s 8620(is)s 8843(an)s 0 8099(ine)m 3(xhaustible)k 1328(source)s 2008(of)s 2279(more)s 2826(pages,)s 3478(e)s 3(xpanded)k 4451(on)s 4748(demand.)s 480 7725(The)m 923(concrete)s 1804(data)s @@ -9109,7 +9295,7 @@ grestore 0.15 cm /lfigsolid [ lfigellipse ] lfigdopath pop pop grestore -200 fnt3 226 226(HEAD)m +200 fnt4 226 226(HEAD)m grestore (A) lfigpromotelabels @@ -9123,7 +9309,7 @@ grestore 0.15 cm /lfigsolid [ lfigellipse ] lfigdopath pop pop grestore -200 fnt3 226 229(RECEIVING)m 1306(*)s +200 fnt4 226 229(RECEIVING)m 1306(*)s grestore (B) lfigpromotelabels grestore @@ -9147,7 +9333,7 @@ grestore 0.15 cm /lfigsolid [ lfigellipse ] lfigdopath pop pop grestore -200 fnt3 226 229(RECEPTIVE)m +200 fnt4 226 229(RECEPTIVE)m grestore (C) lfigpromotelabels @@ -9201,7 +9387,7 @@ grestore 0.15 cm /lfignoline [ lfigbox ] lfigdopath pop pop grestore -140 fnt5 0 30(@Galle)m 2(y )k +140 fnt6 0 30(@Galle)m 2(y )k grestore (E) lfigpromotelabels grestore @@ -9214,7 +9400,7 @@ grestore 0.15 cm /lfignoline [ lfigbox ] lfigdopath pop pop grestore -140 fnt5 +140 fnt6 0 3(@F)m 4(ootSect )k grestore (F) lfigpromotelabels @@ -9250,7 +9436,7 @@ grestore 0.15 cm /lfigsolid [ lfigellipse ] lfigdopath pop pop grestore -200 fnt3 226 229(GAP)m +200 fnt4 226 229(GAP)m grestore (C) lfigpromotelabels grestore @@ -9274,7 +9460,7 @@ grestore 0.15 cm /lfigsolid [ lfigellipse ] lfigdopath pop pop grestore -200 fnt3 +200 fnt4 226 229(RECEPTIVE)m grestore (C) lfigpromotelabels @@ -9299,7 +9485,7 @@ grestore 0.15 cm /lfigsolid [ lfigbox ] lfigdopath pop pop grestore -140 fnt5 170 201(@P)m 5(ageList 2)k +140 fnt6 170 201(@P)m 5(ageList 2)k grestore (D) lfigpromotelabels grestore @@ -9333,7 +9519,7 @@ grestore 0.15 cm /lfigsolid [ lfigellipse ] lfigdopath pop pop grestore -200 fnt3 +200 fnt4 226 226(HEAD)m grestore (A) lfigpromotelabels @@ -9382,7 +9568,7 @@ grestore 0.15 cm /lfigsolid [ lfigellipse ] lfigdopath pop pop grestore -200 fnt3 226 229(GAP)m +200 fnt4 226 229(GAP)m grestore (B) lfigpromotelabels @@ -9431,7 +9617,7 @@ grestore 0.15 cm /lfigsolid [ lfigellipse ] lfigdopath pop pop grestore -200 fnt3 +200 fnt4 226 229(GAP)m grestore (B) lfigpromotelabels @@ -9456,7 +9642,7 @@ grestore 0.15 cm /lfigsolid [ lfigellipse ] lfigdopath pop pop grestore -200 fnt3 226 229(RECEPTIVE)m +200 fnt4 226 229(RECEPTIVE)m grestore (B) lfigpromotelabels grestore @@ -9480,7 +9666,7 @@ grestore 0.15 cm /lfigsolid [ lfigbox ] lfigdopath pop pop grestore -140 fnt5 170 199(@Input)m +140 fnt6 170 199(@Input)m grestore (C) lfigpromotelabels @@ -9529,9 +9715,15 @@ showpage %%+ font Times-Italic %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def +%%IncludeResource: font Times-Italic +/Times-Italicfnt4 vec2 /Times-Italic LoutRecode +/fnt4 { /Times-Italicfnt4 LoutFont } def %%IncludeResource: font Helvetica -/Helveticafnt5 vec2 /Helvetica LoutRecode -/fnt5 { /Helveticafnt5 LoutFont } def +/Helveticafnt6 vec2 /Helvetica LoutRecode +/fnt6 { /Helveticafnt6 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -9547,31 +9739,31 @@ gsave 0 LoutMargSet grestore 0 13251(Each)m 521(g)s 1(alle)k 3(y)k -1140(has)s 1495(a)s 240 fnt3 1647 13253(HEAD)m 240 fnt1 +1140(has)s 1495(a)s 240 fnt4 1647 13253(HEAD)m 240 fnt1 2325 13251(node)m 2832(whose)s 3485(children)s 4311(are)s 4643(its)s -4904(component)s 6013(objects,)s 6783(separated)s 7728(by)s 240 fnt3 +4904(component)s 6013(objects,)s 6783(separated)s 7728(by)s 240 fnt4 8007 13253(GAP)m 240 fnt1 8516 13251(nodes)m 0 12963(recording)m 969(the)s 1317(inter)s 4(-component)k 2953(g)s 1(aps.)k 480 12589(Each)m 1026(component)s 2161(is)s 2383(preceded)s 3315(by)s 3621(zero)s -4096(or)s 4367(more)s 240 fnt3 4925 12591(galle)m 7(y)k +4096(or)s 4367(more)s 240 fnt4 4925 12591(galle)m 7(y)k 5569(inde)s 4(x)k 6155(nodes)s 240 fnt1 6780 12589(of)m 7063(v)s 6(arious)k 7823(types.)s 8504(Ev)s 3(ery)k 0 12301(recepti)m 6(v)k 3(e)k 922(symbol)s 1681(has)s -2051(a)s 240 fnt3 2216 12303(RECEPTIVE)m 240 fnt1 3529 12301(inde)m 3(x)k +2051(a)s 240 fnt4 2216 12303(RECEPTIVE)m 240 fnt1 3529 12301(inde)m 3(x)k 4112(pointing)s 4963(to)s 5201(it,)s 5440(so)s 5705(that)s 6123(it)s 6314(can)s 6703(be)s 6984(found)s 7601(without)s 8391(search)s 8998(-)s 0 12013(ing)m 355(through)s 1152(its)s 1423(component.)s 2646(If)s 2871(the)s 3215(symbol)s 3970(is)s 4175(currently)s 5086(the)s 5429(tar)s 4(get)k 6023(of)s 6290(a)s 6451(g)s 1(alle)k 3(y)k 15(,)k -7118(it)s 7305(has)s 7670(a)s 240 fnt3 7831 12015(RECEIVING)m +7118(it)s 7305(has)s 7670(a)s 240 fnt4 7831 12015(RECEIVING)m 240 fnt1 0 11725(inde)m 3(x)k 595(instead)s 1342(which)s 1995(is)s 2217(also)s 2667(link)s 2(ed)k 3332(to)s 3583(the)s 3942(incoming)s 4911(g)s 1(alle)k 3(y)k 15(.)k 5652(Galle)s 3(ys)k 6441(that)s 6871(are)s 7229(currently)s 8157(without)s 8960(a)s 0 11437(tar)m 4(get)k 586(are)s 920(link)s 2(ed)k 1560(to)s 1786(the)s 2120(dynamic)s -2984(tree)s 3383(by)s 240 fnt3 3664 11439(UN)m 6(A)k 8(TT)k 12(A)k 7(CHED)k +2984(tree)s 3383(by)s 240 fnt4 3664 11439(UN)m 6(A)k 8(TT)k 12(A)k 7(CHED)k 240 fnt1 5215 11437(g)m 1(alle)k 3(y)k 5836(inde)s 3(x)k 3(es,)k 6654(either)s 7244(just)s 7635(after)s 8118(their)s 8601(most)s 0 11149(recent)m 643(tar)s 4(get)k 1242(if)s 1459(there)s @@ -9605,7 +9797,7 @@ grestore 3389(g)s 1(alle)k 3(y)k 4030(process)s 4805(is)s 5022(either)s 5633(running)s 6438(or)s 6704(else)s 7139(is)s 7356(suspended)s 8419(on)s 8724(one)s 0 8385(of)m 269(its)s -543(o)s 6(wn)k 1005(semaphores.)s 2296(The)s 240 fnt3 +543(o)s 6(wn)k 1005(semaphores.)s 2296(The)s 240 fnt4 2722 8387(HEAD)m 240 fnt1 3413 8385(node)m 3933(contains)s 4779(a)s 4943(semaphore)s 6033(which)s 6673(is)s 6881(set)s 7204(when)s 7778(the)s 8124(g)s 1(alle)k 3(y)k 8756(has)s @@ -9619,84 +9811,84 @@ grestore 1994(the)s 2331(snapshot)s 3218(at)s 3439(the)s 3776(be)s 3(ginning)k 4773(of)s 5033(this)s 5418(section,)s 6191(the)s 6528(root)s 6962(g)s 1(alle)k 3(y)k 7585(is)s 7784(suspended)s -8829(on)s 0 7147(the)m 220 fnt5 351 7144(@Galle)m 4(y)k +8829(on)s 0 7147(the)m 220 fnt6 351 7144(@Galle)m 4(y)k 240 fnt1 1253 7147(symbol,)m 2069(b)s 4(ut)k 2435(the)s 2787(te)s 3(xt)k 3205(g)s 1(alle)k 3(y)k 3843(is)s 4057(running.)s 4970(It)s 5179(will)s 5608(suspend)s -6442(on)s 6743(the)s 220 fnt5 7095 7144(@Input)m 240 fnt1 +6442(on)s 6743(the)s 220 fnt6 7095 7144(@Input)m 240 fnt1 7866 7147(symbol)m 8630(after)s 0 6859(the)m 348(\207rst)s 779(tw)s 2(o)k 1189(components)s 2397(are)s 2744(promoted.)s 480 6485(Ev)m 3(ery)k -1145(g)s 1(alle)k 3(y)k 240 fnt3 1822 6487(G)m +1145(g)s 1(alle)k 3(y)k 240 fnt4 1822 6487(G)m 240 fnt1 1995 6485(,)m 2145(be)s 2470(it)s 2705(a)s 2914(list)s 3308(of)s 3623(pages,)s 4318(body)s 4895(te)s 3(xt,)k 5400(a)s 5609(footnote,)s 6556(or)s 6858(whate)s 6(v)k 3(er)k 9(,)k 7866(e)s 3(x)k 3(ecutes)k 8778(the)s 0 6197(follo)m 6(wing)k 977(algorithm)s 1966(in)s 2209(parallel)s 2979(with)s 3461(e)s 6(v)k 3(ery)k 4037(other)s 4588(g)s 1(alle)k 3(y:)k 0 5694(1.)m -303(Initially)s 240 fnt3 1132 5696(G)m 240 fnt1 1384 5694(is)m +303(Initially)s 240 fnt4 1132 5696(G)m 240 fnt1 1384 5694(is)m 1614(unattached.)s 2834(Search)s 3560(forw)s 2(ards)k 4478(or)s -4756(backw)s 2(ards)k 5848(from)s 6392(its)s 240 fnt3 +4756(backw)s 2(ards)k 5848(from)s 6392(its)s 240 fnt4 6687 5696(UN)m 6(A)k 8(TT)k 12(A)k 7(CHED)k 240 fnt1 8272 5694(inde)m 3(x)k 8876(as)s 0 5406(required,)m 903(to)s 1142(\207nd)s 1573(a)s 1739(recepti)s 6(v)k 3(e)k -2661(symbol)s 240 fnt3 3421 5408(S)m 240 fnt1 3602 5406(which)m +2661(symbol)s 240 fnt4 3421 5408(S)m 240 fnt1 3602 5406(which)m 4244(can)s 4633(e)s 3(xpand)k 5380(to)s 5619(re)s 6(v)k 3(eal)k -6248(a)s 6414(tar)s 4(get)k 7013(for)s 240 fnt3 +6248(a)s 6414(tar)s 4(get)k 7013(for)s 240 fnt4 7351 5408(G)m 240 fnt1 7524 5406(.)m 0 4903(2.)m 284(If)s -514(no)s 240 fnt3 807 4905(S)m 240 fnt1 988 4903(can)m +514(no)s 240 fnt4 807 4905(S)m 240 fnt1 988 4903(can)m 1377(be)s 1659(found,)s 2325(suspend)s 3155(on)s 3452(the)s 3800(attachment)s 4908(semaphore.)s 6108(Resume)s 6935(later)s 7418(from)s -7942(step)s 8380(1.)s 0 4400(3.)m 281(Expand)s 240 fnt3 +7942(step)s 8380(1.)s 0 4400(3.)m 281(Expand)s 240 fnt4 1068 4402(S)m 240 fnt1 1246 4400(to)m 1482(re)s 6(v)k 3(eal)k -2107(the)s 2452(tar)s 4(get)k 3048(of)s 240 fnt3 +2107(the)s 2452(tar)s 4(get)k 3048(of)s 240 fnt4 3316 4402(G)m 240 fnt1 3489 4400(.)m 3649(Preserv)s 3(e)k -240 fnt3 4521 4402(S)m 240 fnt1 4642 4400(')m 13(s)k +240 fnt4 4521 4402(S)m 240 fnt1 4642 4400(')m 13(s)k 4849(semaphore)s 5938(by)s 6229(mo)s 3(ving)k 7007(it)s 7196(to)s 7432(the)s 7777(\207rst)s 8204(recepti)s 6(v)k 3(e)k 0 4112(symbol)m 760(within)s 1428(the)s 1776(e)s 3(xpansion)k -2801(of)s 240 fnt3 3072 4114(S)m 240 fnt1 3193 4112(.)m +2801(of)s 240 fnt4 3072 4114(S)m 240 fnt1 3193 4112(.)m 0 3609(4.)m 295(Calculate)s 1264(the)s 1624(a)s 4(v)k 6(ailable)k 2543(width)s 3156(and)s 3572(height)s 4241(at)s 4484(the)s -4844(tar)s 4(get,)k 5501(and)s 5917(if)s 240 fnt3 +4844(tar)s 4(get,)k 5501(and)s 5917(if)s 240 fnt4 6145 3611(G)m 240 fnt1 6389 3609(is)m 6611(still)s 7034(a)s 7211(pure)s 7704(parse)s 8275(tree,)s 8751(use)s 0 3321(the)m -377(en)s 9(vironment)k 1667(attached)s 2550(to)s 240 fnt3 +377(en)s 9(vironment)k 1667(attached)s 2550(to)s 240 fnt4 2819 3323(G)m 240 fnt1 3081 3321(and)m 3515(the)s 3892(style)s 4429(information)s 5643(from)s 6197(the)s 6574(tar)s 4(get)k -7203(to)s 7471(e)s 6(v)k 6(aluate)k 240 fnt3 +7203(to)s 7471(e)s 6(v)k 6(aluate)k 240 fnt4 8341 3323(G)m 240 fnt1 8603 3321(as)m 8883(in)s 0 3033(Section)m 774(4.)s 0 2577(5.)m 284(Examine)s 1190(the)s 1538(components)s -2746(of)s 240 fnt3 3017 2579(G)m 240 fnt1 3250 2577(one)m +2746(of)s 240 fnt4 3017 2579(G)m 240 fnt1 3250 2577(one)m 3652(by)s 3946(one.)s 4456(F)s 3(or)k 4845(each)s 5340(component)s 6464(there)s 6997(are)s 7344(three)s 7877(possibilities:)s -240 fnt3 480 2205(A)m 7(CCEPT)k 17(.)k 240 fnt1 +240 fnt4 480 2205(A)m 7(CCEPT)k 17(.)k 240 fnt1 1513 2203(If)m 1756(the)s 2116(component)s 3253(\207ts)s 3609(into)s 4046(the)s 4407(a)s 4(v)k 6(ailable)k 5328(space,)s 5978(and)s 6395(has)s 6778(no)s 7083(other)s 7647(problems,)s 8657(then)s 0 1915(promote)m 875(it)s 1090(into)s 1538(the)s 1909(tar)s 4(get.)k 2635(If)s 2888(this)s 3306(is)s 3539(the)s 3910(\207rst)s 4364(component)s 5511(promoted)s 6509(into)s -6956(this)s 7375(tar)s 4(get,)k 8044(and)s 240 fnt3 +6956(this)s 7375(tar)s 4(get,)k 8044(and)s 240 fnt4 8471 1917(G)m 240 fnt1 8727 1915(is)m 8960(a)s 0 1627(forcing)m 768(g)s 1(alle)k 3(y)k 1428(\(Section)s 2307(5.4\),)s 2819(delete)s 3470(e)s 6(v)k 3(ery)k 4072(recepti)s 6(v)k 3(e)k 5020(symbol)s 5806(preceding)s 6827(the)s 7201(tar)s 4(get)k 7826(in)s 8095(the)s 8469(parent)s 0 1339(g)m 1(alle)k 3(y)k 15(.)k -729(If)s 240 fnt3 959 1341(G)m 240 fnt1 1192 1339(is)m +729(If)s 240 fnt4 959 1341(G)m 240 fnt1 1192 1339(is)m 1402(the)s 1750(root)s 2195(g)s 1(alle)k 3(y)k 15(,)k 2867(render)s 3537(the)s 3885(component)s 5009(on)s 5306(the)s 5654(output)s 6326(\207le)s 6687(and)s 7091(dispose)s 7865(it;)s -240 fnt3 480 967(REJECT)m 17(.)k 240 fnt1 1490 965(If)m +240 fnt4 480 967(REJECT)m 17(.)k 240 fnt1 1490 965(If)m 1756(the)s 2140(component)s 3300(is)s 3546(too)s 3941(lar)s 4(ge)k 4506(for)s 4880(the)s 5264(a)s 4(v)k 6(ailable)k -6208(space,)s 6882(or)s 7177(a)s 240 fnt3 7379 967(FOLLO)m 12(WS)k +6208(space,)s 6882(or)s 7177(a)s 240 fnt4 7379 967(FOLLO)m 12(WS)k 240 fnt1 8542 965(inde)m 3(x)k 0 677(\(described)m 1043(belo)s 6(w\))k 1740(forbids)s 2458(its)s 2723(promotion)s 3767(into)s 4182(this)s -4568(tar)s 4(get,)k 5203(then)s 5662(detach)s 240 fnt3 +4568(tar)s 4(get,)k 5203(then)s 5662(detach)s 240 fnt4 6333 679(G)m 240 fnt1 6556 677(from)m 7069(the)s 7407(tar)s 4(get.)k 8100(If)s 8320(this)s 8705(w)s 2(as)k 0 389(the)m 338(\207rst)s 758(component)s 1872(at)s 2093(this)s 2479(tar)s 4(get,)k -240 fnt3 3114 391(S)m 240 fnt1 3284 389(has)m 3644(been)s +240 fnt4 3114 391(S)m 240 fnt1 3284 389(has)m 3644(been)s 4142(a)s 4298(complete)s 5219(f)s 2(ailure,)k 5936(so)s 6191(undo)s 6713(step)s 7141(3)s 7294(\(Basser)s 8060(Lout)s 8561(is)s 8760(not)s @@ -9720,9 +9912,15 @@ showpage %%+ font Times-Italic %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def +%%IncludeResource: font Times-Italic +/Times-Italicfnt4 vec2 /Times-Italic LoutRecode +/fnt4 { /Times-Italicfnt4 LoutFont } def %%IncludeResource: font Helvetica -/Helveticafnt5 vec2 /Helvetica LoutRecode -/fnt5 { /Helveticafnt5 LoutFont } def +/Helveticafnt6 vec2 /Helvetica LoutRecode +/fnt6 { /Helveticafnt6 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -9741,7 +9939,7 @@ grestore 693(undo)s 1226(step)s 1664(4\);)s 1975(otherwise)s 2960(delete)s 3586(the)s 3934(tar)s 4(get.)k 4637(Return)s 5345(to)s 5584(step)s 6022(1)s 6177(and)s 6581(continue)s 7461(immediately;)s -240 fnt3 480 12883(SUSPEND.)m 240 fnt1 1685 12881(If)m 1928(the)s +240 fnt4 480 12883(SUSPEND.)m 240 fnt1 1685 12881(If)m 1928(the)s 2289(component)s 3426(contains)s 4287(a)s 4466(recepti)s 6(v)k 3(e)k 5402(symbol,)s 6227(it)s 6432(cannot)s 7143(be)s 7438(promoted)s 8426(yet.)s 8896(If)s 0 12593(this)m 392(symbol)s 1148(is)s @@ -9763,11 +9961,11 @@ grestore 3833(permitting)s 4911(it)s 5134(to)s 5404(resume)s 6180(\210ushing.)s 7147(When)s 7807(this)s 8234(happens,)s 0 10434(Basser)m 701(Lout)s 1218(resumes)s 2057(the)s 2410(parent)s 3071(immediately)s 4324(after)s -240 fnt3 4825 10436(G)m 240 fnt1 5063 10434(suspends)m 5983(or)s +240 fnt4 4825 10436(G)m 240 fnt1 5063 10434(suspends)m 5983(or)s 6247(terminates.)s 7410(Also,)s 7974(whene)s 6(v)k 3(er)k 8960(a)s 0 10146(component)m 1140(is)s 1366(promoted,)s 2406(an)s 3(y)k 2819(child)s 3371(g)s 1(alle)k 3(ys)k 4111(connected)s -5156(to)s 5411(it)s 5619(by)s 240 fnt3 5929 10148(UN)m 6(A)k 8(TT)k 12(A)k 7(CHED)k +5156(to)s 5411(it)s 5619(by)s 240 fnt4 5929 10148(UN)m 6(A)k 8(TT)k 12(A)k 7(CHED)k 240 fnt1 7510 10146(inde)m 3(x)k 3(es)k 8302(must)s 8844(be)s 0 9858(resumed,)m 918(since)s 1466(these)s 2014(g)s 1(alle)k 3(ys)k 2739(may)s 3206(be)s 3490(able)s 3945(to)s 4185(\207nd)s @@ -9779,36 +9977,36 @@ grestore 5542(is)s 5740(promoted)s 6703(onto)s 7171(a)s 7325(page.)s 7929(Basser)s 8614(Lout)s 0 9282(gi)m 6(v)k 3(es)k 547(priority)s 1317(to)s 1556(such)s 2052(children,)s 2942(suspending)s -240 fnt3 4073 9284(G)m 240 fnt1 4306 9282(while)m 4893(each)s +240 fnt4 4073 9284(G)m 240 fnt1 4306 9282(while)m 4893(each)s 5388(is)s 5598(gi)s 6(v)k 3(en)k 6178(a)s 6344(chance)s 7064(to)s 7303(\210ush.)s 480 8908(Basser)m 1211(Lout)s 1758(searches)s 2653(for)s 3025(the)s 3408(\207rst)s 3874(tar)s 4(get)k -4507(of)s 240 fnt3 4813 8910(G)m 240 fnt1 5081 8908(only)m +4507(of)s 240 fnt4 4813 8910(G)m 240 fnt1 5081 8908(only)m 5595(in)s 5873(re)s 3(gions)k 6660(of)s 6965(the)s 7348(dynamic)s 8260(tree)s 8708(that)s 0 8620(will)m 437(clearly)s -1152(precede)s 1963(or)s 2233(follo)s 6(w)k 240 fnt3 +1152(precede)s 1963(or)s 2233(follo)s 6(w)k 240 fnt4 2917 8622(G)m 240 fnt1 3090 8620(')m 13(s)k 3312(in)s 9(v)k 4(ocation)k 4378(point)s 4941(in)s 5196(the)s 5556(\207nal)s 6047(printed)s 6794(document,)s 7857(whiche)s 6(v)k 3(er)k 8916(is)s -0 8332(speci\207ed)m 904(in)s 1142(the)s 220 fnt5 1486 8329(into)m +0 8332(speci\207ed)m 904(in)s 1142(the)s 220 fnt6 1486 8329(into)m 240 fnt1 1887 8332(clause;)m 2591(subsequent)s 3711(tar)s 4(gets)k 4389(are)s 4731(sought)s 5426(later)s 5904(in)s 6142(the)s 6486(same)s 7028(g)s 1(alle)k 3(y)k 7657(as)s 7903(the)s 8246(\207rst.)s 8776(An)s 0 8044(e)m 3(xception)k 982(to)s 1219(this)s 1613(rule,)s 2089(whose)s 2755(necessity)s 3683(will)s 4107(be)s 4387(made)s 4959(clear)s 5480(later)s 9(,)k -5999(is)s 6207(that)s 6623(a)s 6787(\207rst)s 220 fnt5 +5999(is)s 6207(that)s 6623(a)s 6787(\207rst)s 220 fnt6 7216 8041(f)m 6(ollo)k 3(wing)k 240 fnt1 8104 8044(tar)m 4(get)k 8700(will)s 0 7756(be)m 282(sought)s 981(within)s 1649(a)s 1815(dynamic)s 2692(sibling)s 3396(g)s 1(alle)k 3(y)k -4030(preceding)s 240 fnt3 5026 7758(G)m 240 fnt1 5199 7756(')m 13(s)k +4030(preceding)s 240 fnt4 5026 7758(G)m 240 fnt1 5199 7756(')m 13(s)k 5409(in)s 9(v)k 4(ocation)k 6463(point:)s gsave 480 2770 translate 200 fnt1 5379 4646 0 4646 200 288 50 LoutGraphic gsave grestore save gsave 200 dict begin lfigdict begin grestore -200 fnt3 +200 fnt4 0 4510(dynamic)m 722(par)s 7(ent)k gsave 0 1353 translate 200 fnt1 2039 3003 226 2777 200 288 50 LoutGraphic @@ -9827,7 +10025,7 @@ grestore 0.15 cm /lfignoline [ lfigbox ] lfigdopath pop pop grestore -180 fnt5 0 40(@XT)m 21(arget)k +180 fnt6 0 40(@XT)m 21(arget)k grestore (A) lfigpromotelabels @@ -9841,12 +10039,12 @@ grestore 0.15 cm /lfignoline [ lfigbox ] lfigdopath pop pop grestore -200 fnt3 0 3(UN)m 5(A)k 7(TT)k 10(A)k 6(CHED)k +200 fnt4 0 3(UN)m 5(A)k 7(TT)k 10(A)k 6(CHED)k grestore (C) lfigpromotelabels grestore -180 fnt5 226 752(@XT)m 21(arget)k +180 fnt6 226 752(@XT)m 21(arget)k grestore gsave 2889 4135 translate @@ -9860,7 +10058,7 @@ grestore 0.15 cm /lfignoline [ lfigbox ] lfigdopath pop pop grestore -180 fnt5 0 40(X into { @XT)m 21(arget&&f)k 5(ollo)k 2(wing })k +180 fnt6 0 40(X into { @XT)m 21(arget&&f)k 5(ollo)k 2(wing })k grestore (B) lfigpromotelabels @@ -9874,7 +10072,7 @@ gsave 0.15 cm /lfigsolid [ lfigbox ] lfigdopath pop pop grestore -180 fnt5 226 492(@GT)m 21(arget)k +180 fnt6 226 492(@GT)m 21(arget)k grestore gsave 2889 1982 translate @@ -9888,7 +10086,7 @@ grestore 0.15 cm /lfignoline [ lfigbox ] lfigdopath pop pop grestore -180 fnt5 0 40(G into { @GT)m 21(arget&&f)k 5(ollo)k 2(wing })k +180 fnt6 0 40(G into { @GT)m 21(arget&&f)k 5(ollo)k 2(wing })k grestore (D) lfigpromotelabels @@ -9934,35 +10132,35 @@ grestore grestore end end restore grestore -0 2319(Here)m 240 fnt3 524 2321(G)m 240 fnt1 762 2319(will)m -1193(\207nd)s 1629(the)s 220 fnt5 1982 2316(@GT)m 26(arget)k -240 fnt1 3045 2319(tar)m 4(get)k 3649(within)s 240 fnt3 +0 2319(Here)m 240 fnt4 524 2321(G)m 240 fnt1 762 2319(will)m +1193(\207nd)s 1629(the)s 220 fnt6 1982 2316(@GT)m 26(arget)k +240 fnt1 3045 2319(tar)m 4(get)k 3649(within)s 240 fnt4 4322 2321(X)m 240 fnt1 4478 2319(.)m 4647(This)s 5128(is)s 5343(dangerous,)s 6439(since)s 6991(if)s 7213(the)s 7566(\207rst)s -8002(component)s 0 2031(of)m 240 fnt3 303 2033(G)m 240 fnt1 -568 2031(is)m 811(then)s 1312(promoted)s 2320(via)s 240 fnt3 +8002(component)s 0 2031(of)m 240 fnt4 303 2033(G)m 240 fnt1 +568 2031(is)m 811(then)s 1312(promoted)s 2320(via)s 240 fnt4 2704 2033(X)m 240 fnt1 2952 2031(into)m 3410(the)s 3790(\207rst)s -220 fnt5 4254 2028(@XT)m 26(arget)k 240 fnt1 5319 2031(rather)m -5967(than)s 6469(into)s 6926(the)s 7307(second,)s 240 fnt3 +220 fnt6 4254 2028(@XT)m 26(arget)k 240 fnt1 5319 2031(rather)m +5967(than)s 6469(into)s 6926(the)s 7307(second,)s 240 fnt4 8111 2033(G)m 240 fnt1 8284 2031(')m 13(s)k 8527(tar)s 4(get)k 0 1743(will)m 438(not)s 817(appear)s 1526(later)s 2022(in)s 2277(the)s 2638(\207nal)s 3130(printed)s 3878(document)s 4894(than)s 5376(its)s 5664(in)s 9(v)k 4(ocation)k 6731(point,)s -7342(as)s 7605(required)s 8471(by)s 8778(the)s 220 fnt5 +7342(as)s 7605(required)s 8471(by)s 8778(the)s 220 fnt6 0 1452(into)m 240 fnt1 406 1455(clause.)m 480 1081(Accordingly)m 15(,)k 1753(when)s 2313(such)s 2794(a)s 2944(tar)s 4(get)k 3528(is)s 3722(chosen,)s 4478(tw)s 2(o)k 4873(special)s 5575(g)s 1(alle)k 3(y)k 6194(inde)s 3(x)k 3(es)k 6954(are)s 7286(inserted)s 8084(and)s 8472(link)s 2(ed)k -0 793(together:)m 898(a)s 240 fnt3 1074 795(PRECEDES)m 240 fnt1 -2327 793(inde)m 3(x)k 2921(at)s 240 fnt3 3163 795(G)m +0 793(together:)m 898(a)s 240 fnt4 1074 795(PRECEDES)m 240 fnt1 +2327 793(inde)m 3(x)k 2921(at)s 240 fnt4 3163 795(G)m 240 fnt1 3336 793(')m 13(s)k 3555(in)s 9(v)k 4(ocation)k -4619(point,)s 5227(and)s 5641(a)s 240 fnt3 5817 795(FOLLO)m 12(WS)k +4619(point,)s 5227(and)s 5641(a)s 240 fnt4 5817 795(FOLLO)m 12(WS)k 240 fnt1 6952 793(inde)m 3(x)k 7546(at)s 7787(the)s 8145(\207rst)s 8586(com)s 8998(-)s 0 505(ponent)m 720(of)s -240 fnt3 1000 507(G)m 240 fnt1 1173 505(.)m 1346(The)s +240 fnt4 1000 507(G)m 240 fnt1 1173 505(.)m 1346(The)s 1783(algorithm)s 2781(checks)s 3492(before)s 4167(promoting)s 5226(an)s 3(y)k -240 fnt3 5632 507(FOLLO)m 12(WS)k 240 fnt1 6767 505(inde)m 3(x)k +240 fnt4 5632 507(FOLLO)m 12(WS)k 240 fnt1 6767 505(inde)m 3(x)k 7360(that)s 7787(its)s 8072(promotion)s grestore 0 0 0 0 240 288 60 1417 -15423 LoutGr2 @@ -9985,11 +10183,17 @@ showpage %%+ font Helvetica %%+ font Symbol /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def +%%IncludeResource: font Times-Italic +/Times-Italicfnt4 vec2 /Times-Italic LoutRecode +/fnt4 { /Times-Italicfnt4 LoutFont } def %%IncludeResource: font Helvetica -/Helveticafnt5 vec2 /Helvetica LoutRecode -/fnt5 { /Helveticafnt5 LoutFont } def +/Helveticafnt6 vec2 /Helvetica LoutRecode +/fnt6 { /Helveticafnt6 LoutFont } def %%IncludeResource: font Symbol -/fnt4 { /Symbol LoutFont } def +/fnt5 { /Symbol LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -10006,55 +10210,55 @@ gsave grestore 0 13253(w)m 2(ould)k 661(not)s 1033(place)s 1600(it)s 1798(earlier)s 2472(than)s -2948(the)s 3302(corresponding)s 240 fnt3 4730 13255(PRECEDES)m 240 fnt1 +2948(the)s 3302(corresponding)s 240 fnt4 4730 13255(PRECEDES)m 240 fnt1 5981 13253(inde)m 3(x)k 6571(in)s 6820(the)s 7175(same)s 7728(g)s 1(alle)k 3(y)k 15(,)k 8406(and)s 8817(re)s 8998(-)s 0 12965(jects)m 486(the)s 831(component)s 1952(if)s 2166(it)s 2355(w)s 2(ould.)k 3113(Since)s -240 fnt3 3697 12967(PRECEDES)m 240 fnt1 4939 12965(and)m 240 fnt3 +240 fnt4 3697 12967(PRECEDES)m 240 fnt1 4939 12965(and)m 240 fnt4 5340 12967(FOLLO)m 12(WS)k 240 fnt1 6463 12965(inde)m 3(x)k 3(es)k 7236(are)s 7580(rarely)s 8187(used,)s 8730(this)s 0 12677(check)m 619(can)s 1008(be)s 1290(implemented)s 2596(by)s 2890(linear)s 3493(search.)s 480 12303(When)m 1114(tw)s 2(o)k 1529(components)s -2742(are)s 3094(separated)s 4060(by)s 220 fnt5 4359 12300(/)m +2742(are)s 3094(separated)s 4060(by)s 220 fnt6 4359 12300(/)m 240 fnt1 4423 12303(,)m 4535(as)s 4790(opposed)s 5652(to)s -5897(the)s 6250(more)s 6802(usual)s 220 fnt5 7367 12300(//)m +5897(the)s 6250(more)s 6802(usual)s 220 fnt6 7367 12300(//)m 240 fnt1 7492 12303(,)m 7604(each)s 8105(in\210uences)s 0 12015(the)m 358(horizontal)s 1393(position)s 2232(of)s 2514(the)s 2872(other)s 13(.)k -3525(Because)s 4389(of)s 4671(this,)s 5133(the)s 240 fnt3 +3525(Because)s 4389(of)s 4671(this,)s 5133(the)s 240 fnt4 5492 12017(SUSPEND)m 240 fnt1 6596 12015(action)m 7248(is)s 7468(in)s 7722(f)s 2(act)k 8148(tak)s 2(en)k 8732(if)s 8960(a)s 0 11727(recepti)m 6(v)k 3(e)k 930(symbol)s 1698(occurs)s 2382(in)s 2633(an)s 3(y)k 3039(component)s 4171(separated)s 5140(from)s 5672(the)s 6028(\207rst)s 6468(by)s -220 fnt5 6770 11724(/)m 240 fnt1 6903 11727(operators)m 7851(only)s 15(.)k +220 fnt6 6770 11724(/)m 240 fnt1 6903 11727(operators)m 7851(only)s 15(.)k 8435(Ag)s 1(ain,)k 0 11439(linear)m 603(search)s 1270(forw)s 2(ards)k -2168(to)s 2407(the)s 2755(\207rst)s 220 fnt5 3186 11436(//)m +2168(to)s 2407(the)s 2755(\207rst)s 220 fnt6 3186 11436(//)m 240 fnt1 3371 11439(suf\207ces)m 4152(for)s 4490(this)s 4886(check.)s 480 11065(A)m 740(good)s 1308(illustration)s 2430(of)s 2731(these)s 3308(unusual)s 4139(cases)s 4724(is)s 4964(af)s 6(forded)k -5856(by)s 6180(the)s 220 fnt5 6558 11062(@Align)m 240 fnt1 +5856(by)s 6180(the)s 220 fnt6 6558 11062(@Align)m 240 fnt1 7344 11065(symbols)m 8223(from)s 8778(the)s 0 10777(standard)m 867(DocumentLayout)s 2600(package.)s 3546(These)s 4171(are)s 4516(used)s 5012(to)s 5249(produce)s 6074(displayed)s 7047(equations,)s 8069(aligned)s 8829(on)s 0 10489(their)m 497(equals)s 1159(signs)s 1702(despite)s 2435(being)s 3020(separated)s 3980(by)s 4274(arbitrary)s 5149(body)s 5683(te)s 3(xt.)k -480 10115(The)m 220 fnt5 921 10112(@Align)m 240 fnt1 1689 10115(symbols)m +480 10115(The)m 220 fnt6 921 10112(@Align)m 240 fnt1 1689 10115(symbols)m 2551(are)s 2911(packaged)s 3886(neatly)s 4537(for)s 4889(the)s 5250(con)s 9(v)k 3(enience)k 6503(of)s 6787(the)s 7148(non-e)s 3(xpert)k 8254(user)s 9(,)k 8764(b)s 4(ut)k 0 9827(we)m 335(will)s 761(sho)s 6(w)k 1315(just)s 1720(the)s 2067(essence)s 2853(of)s 3124(the)s 3472(implementation)s -5029(here.)s 5603(First,)s 6147(an)s 220 fnt5 6430 9824(@AlignList)m +5029(here.)s 5603(First,)s 6147(an)s 220 fnt6 6430 9824(@AlignList)m 240 fnt1 7536 9827(g)m 1(alle)k 3(y)k 8170(is)s 8379(created)s 0 9539(which)m 642(contains)s 1490(an)s 1773(in\207nite)s -2506(supply)s 3199(of)s 220 fnt5 3470 9536(@AlignPlace)m 240 fnt1 +2506(supply)s 3199(of)s 220 fnt6 3470 9536(@AlignPlace)m 240 fnt1 4779 9539(recepti)m 6(v)k 3(e)k 5701(symbols)s 6550(separated)s -7510(by)s 220 fnt5 7804 9536(/)m 240 fnt1 7928 9539(operators:)m +7510(by)s 220 fnt6 7804 9536(/)m 240 fnt1 7928 9539(operators:)m 4777 3207 0 3207 240 288 60 480 5992 LoutGr2 grestore save gsave 200 dict begin lfigdict begin grestore -240 fnt3 0 3044(body)m 522(te)s 4(xt)k 926(galle)s 7(y)k +240 fnt4 0 3044(body)m 522(te)s 4(xt)k 926(galle)s 7(y)k gsave 0 161 translate 240 fnt1 2039 2720 226 2494 240 288 60 LoutGraphic @@ -10073,7 +10277,7 @@ grestore 0.15 cm /lfignoline [ lfigbox ] lfigdopath pop pop grestore -220 fnt5 0 47(@Galle)m 4(y)k +220 fnt6 0 47(@Galle)m 4(y)k grestore (A) lfigpromotelabels grestore @@ -10091,7 +10295,7 @@ grestore 0.15 cm /lfignoline [ lfigbox ] lfigdopath pop pop grestore -220 fnt5 0 48(@AlignList)m +220 fnt6 0 48(@AlignList)m grestore (B) lfigpromotelabels @@ -10105,7 +10309,7 @@ gsave 0.15 cm /lfigsolid [ lfigbox ] lfigdopath pop pop grestore -220 fnt5 226 1138(@AlignPlace)m 226 850(@AlignPlace)m 226 562(...)m 226 274(@EndAlignList)m +220 fnt6 226 1138(@AlignPlace)m 226 850(@AlignPlace)m 226 562(...)m 226 274(@EndAlignList)m grestore gsave @@ -10141,10 +10345,10 @@ grestore xmark -0.3 cm xmark ysize 0 0.3 cm lfigpadd ] lfigdopath pop pop grestore -240 fnt3 -0 53(f)m 240 fnt4 113 45(\()m 240 fnt3 197 53(x)m -240 fnt4 315 45(\))m 477(=)s 240 fnt3 690 53(g)m -240 fnt4 816 45(\()m 240 fnt3 900 53(x)m 240 fnt4 +240 fnt4 +0 53(f)m 240 fnt5 113 45(\()m 240 fnt4 197 53(x)m +240 fnt5 315 45(\))m 477(=)s 240 fnt4 690 53(g)m +240 fnt5 816 45(\()m 240 fnt4 900 53(x)m 240 fnt5 1018 45(\))m 1156(+)s 1357(2)s grestore @@ -10152,14 +10356,14 @@ grestore end end restore grestore 0 4536(are)m 358(created)s -1117(and)s 1532(sent)s 1989(to)s 220 fnt5 2239 4533(@AlignPlace&&f)m 6(ollo)k 3(wing)k +1117(and)s 1532(sent)s 1989(to)s 220 fnt6 2239 4533(@AlignPlace&&f)m 6(ollo)k 3(wing)k 240 fnt1 4690 4536(tar)m 4(gets.)k 5498(The)s 3(y)k -6052(collect)s 6760(in)s 7014(the)s 220 fnt5 7374 4533(@AlignList)m +6052(collect)s 6760(in)s 7014(the)s 220 fnt6 7374 4533(@AlignList)m 240 fnt1 8492 4536(g)m 1(alle)k 3(y)k 0 4248(and)m 404(are)s 751(aligned)s 1513(there:)s 5836 3212 0 3212 240 288 60 480 696 LoutGr2 grestore save gsave 200 dict begin lfigdict begin grestore -240 fnt3 0 3049(body)m +240 fnt4 0 3049(body)m 522(te)s 4(xt)k 926(galle)s 7(y)k gsave 0 166 translate 240 fnt1 2039 2720 226 2494 240 288 60 LoutGraphic @@ -10178,7 +10382,7 @@ grestore 0.15 cm /lfignoline [ lfigbox ] lfigdopath pop pop grestore -220 fnt5 +220 fnt6 0 47(@Galle)m 4(y)k grestore (A) lfigpromotelabels @@ -10197,7 +10401,7 @@ grestore 0.15 cm /lfignoline [ lfigbox ] lfigdopath pop pop grestore -220 fnt5 0 48(@AlignList)m +220 fnt6 0 48(@AlignList)m grestore (B) lfigpromotelabels grestore @@ -10217,15 +10421,15 @@ grestore xmark 0 lfigprevious /TO lfigpointdef ] lfigdopath pop pop grestore -240 fnt3 -666 917(f)m 240 fnt4 779 909(\()m 240 fnt3 863 917(x)m -240 fnt4 981 909(\))m 1143(=)s 240 fnt3 1356 917(g)m -240 fnt4 1482 909(\()m 240 fnt3 1566 917(x)m 240 fnt4 -1684 909(\))m 1822(+)s 2023(2)s 240 fnt3 0 629(f)m -240 fnt4 113 621(\()m 240 fnt3 197 629(x)m 240 fnt4 -315 621(\))m 453(-)s 240 fnt3 653 629(g)m 240 fnt4 -779 621(\()m 240 fnt3 863 629(x)m 240 fnt4 981 621(\))m -1143(=)s 1356(2)s 220 fnt5 1059 336(...)m 1059 48(@EndAlignList)m +240 fnt4 +666 917(f)m 240 fnt5 779 909(\()m 240 fnt4 863 917(x)m +240 fnt5 981 909(\))m 1143(=)s 240 fnt4 1356 917(g)m +240 fnt5 1482 909(\()m 240 fnt4 1566 917(x)m 240 fnt5 +1684 909(\))m 1822(+)s 2023(2)s 240 fnt4 0 629(f)m +240 fnt5 113 621(\()m 240 fnt4 197 629(x)m 240 fnt5 +315 621(\))m 453(-)s 240 fnt4 653 629(g)m 240 fnt5 +779 621(\()m 240 fnt4 863 629(x)m 240 fnt5 981 621(\))m +1143(=)s 1356(2)s 220 fnt6 1059 336(...)m 1059 48(@EndAlignList)m grestore @@ -10269,11 +10473,20 @@ showpage %%+ font Times-Bold %%+ font Symbol /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Helvetica -/Helveticafnt5 vec2 /Helvetica LoutRecode -/fnt5 { /Helveticafnt5 LoutFont } def +/Helveticafnt6 vec2 /Helvetica LoutRecode +/fnt6 { /Helveticafnt6 LoutFont } def +%%IncludeResource: font Times-Italic +/Times-Italicfnt4 vec2 /Times-Italic LoutRecode +/fnt4 { /Times-Italicfnt4 LoutFont } def +%%IncludeResource: font Times-Bold +/Times-Boldfnt2 vec2 /Times-Bold LoutRecode +/fnt2 { /Times-Boldfnt2 LoutFont } def %%IncludeResource: font Symbol -/fnt4 { /Symbol LoutFont } def +/fnt5 { /Symbol LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -10288,20 +10501,20 @@ gsave 5706 -1579(-)m 5834(29)s 6125(-)s 9066 13414 0 13305 240 288 60 1417 -15423 LoutGr2 1 LoutMargSet grestore -0 13251(The)m 220 fnt5 +0 13251(The)m 220 fnt6 450 13248(@AlignList)m 240 fnt1 1579 13251(g)m 1(alle)k 3(y)k 2236(does)s 2749(not)s 3138(\210ush,)s 3734(because)s 4570(its)s 4868(\207rst)s 5322(component)s 6469(is)s 6702(connected)s 7753(to)s 8015(a)s 8204(recepti)s 6(v)k 3(e)k 0 12963(symbol)m -760(by)s 220 fnt5 1054 12960(/)m 240 fnt1 1178 12963(operators.)m +760(by)s 220 fnt6 1054 12960(/)m 240 fnt1 1178 12963(operators.)m 480 12589(After)m 1048(the)s 1402(last)s 1799(equation,)s 2736(an)s 3025(empty)s 3683(forcing)s 4432(g)s 1(alle)k 3(y)k -5072(is)s 5288(sent)s 5739(to)s 220 fnt5 5984 12586(@EndAlignList)m +5072(is)s 5288(sent)s 5739(to)s 220 fnt6 5984 12586(@EndAlignList)m 240 fnt1 7420 12589(,)m 7533(deleting)s 8362(the)s 8716(tw)s 2(o)k 0 12301(remaining)m 1028(recepti)s 6(v)k 3(e)k 1957(symbols)s -2813(from)s 3344(the)s 220 fnt5 3699 12298(@AlignList)m 240 fnt1 +2813(from)s 3344(the)s 220 fnt6 3699 12298(@AlignList)m 240 fnt1 4812 12301(g)m 1(alle)k 3(y)k 5452(and)s 5863(permitting)s -6918(it)s 7117(to)s 7363(\210ush.)s 240 fnt3 8000 12303(FOLLO)m 12(WS)k +6918(it)s 7117(to)s 7363(\210ush.)s 240 fnt4 8000 12303(FOLLO)m 12(WS)k 240 fnt1 0 12013(inde)m 3(x)k 3(es)k 797(ensure)s 1499(that)s 1939(each)s 2456(equation)s 3359(\207nds)s 3898(a)s 4086(tar)s 4(get)k 4707(placed)s 5410(in)s 5675(the)s @@ -10330,7 +10543,7 @@ grestore 3374(specify)s 4130(ho)s 6(w)k 4602(breaking)s 5503(decisions)s 6455(are)s 6814(made,)s 7450(be)s 3(yond)k 8222(the)s 8582(basic)s 0 9623(constraints)m 1089(imposed)s 1961(by)s 2258(a)s 4(v)k 6(ailable)k -3169(space)s 3759(and)s 220 fnt5 4166 9620(into)m 240 fnt1 +3169(space)s 3759(and)s 220 fnt6 4166 9620(into)m 240 fnt1 4575 9623(clauses,)m 5375(in)s 5621(principle)s 6529(such)s 7028(high)s 7514(quality)s 8236(breaking)s 0 9335(could)m 592(be)s 877(added)s 1510(to)s 1752(the)s 2102(implementation)s 3662(with)s 4147(no)s @@ -10361,42 +10574,42 @@ grestore 0 6482(e)m 3(xtracted)k 930(from)s 1454(the)s 1802(tree)s 2215(structure)s 3106(when)s 3682(required.)s 480 6108(F)m 3(or)k 869(e)s 3(xample,)k 1783(consider)s 2653(the)s 3001(object)s -220 fnt5 480 5607(5i @Wide { a / b })m 240 fnt1 0 5113(and)m 406(suppose)s -1236(that)s 1656(the)s 2006(width)s 2610(of)s 220 fnt5 -2883 5110(a)m 240 fnt1 3062 5113(is)m 240 fnt4 3274 5107(1)m -240 fnt3 3382 5115(i)m 240 fnt4 3459 5107(,)m 3572(2)s -240 fnt3 3700 5115(i)m 240 fnt1 3825 5113(\()m 240 fnt4 -3898 5107(1)m 240 fnt3 4006 5115(i)m 240 fnt1 4131 5113(to)m +220 fnt6 480 5607(5i @Wide { a / b })m 240 fnt1 0 5113(and)m 406(suppose)s +1236(that)s 1656(the)s 2006(width)s 2610(of)s 220 fnt6 +2883 5110(a)m 240 fnt1 3062 5113(is)m 240 fnt5 3274 5107(1)m +240 fnt4 3382 5115(i)m 240 fnt5 3459 5107(,)m 3572(2)s +240 fnt4 3700 5115(i)m 240 fnt1 3825 5113(\()m 240 fnt5 +3898 5107(1)m 240 fnt4 4006 5115(i)m 240 fnt1 4131 5113(to)m 4372(the)s 4722(left)s 5101(of)s 5374(the)s 5724(mark,)s -240 fnt4 6324 5107(2)m 240 fnt3 6452 5115(i)m 240 fnt1 +240 fnt5 6324 5107(2)m 240 fnt4 6452 5115(i)m 240 fnt1 6577 5113(to)m 6818(the)s 7168(right\).)s 7864(What)s 8444(then)s 8916(is)s 0 4825(the)m 348(a)s 4(v)k 6(ailable)k -1256(width)s 1858(at)s 220 fnt5 2090 4822(b)m 240 fnt1 +1256(width)s 1858(at)s 220 fnt6 2090 4822(b)m 240 fnt1 2204 4825(?)m 2423(If)s 2653(we)s 2988(let)s 3286(the)s -3634(width)s 4236(of)s 220 fnt5 4507 4822(b)m 240 fnt1 -4681 4825(be)m 240 fnt3 4963 4827(l)m 240 fnt4 5041 4819(,)m -240 fnt3 5148 4827(r)m 240 fnt1 5246 4825(,)m 5353(we)s -5688(must)s 6213(ha)s 4(v)k 3(e)k 240 fnt4 -480 4277(\()m 564(1)s 240 fnt3 670 4285(i)m 240 fnt4 -817 4277(\255)m 240 fnt3 1038 4285(l)m 240 fnt4 1116 4277(\))m -1254(+)s 1455(\()s 1539(2)s 240 fnt3 1665 4285(i)m -240 fnt4 1812 4277(\255)m 240 fnt3 2033 4285(r)m 240 fnt4 -2143 4277(\))m 2293(\243)s 2503(5)s 240 fnt3 2622 4285(i)m -240 fnt1 0 3732(with)m 482(the)s 240 fnt4 842 3726(\255)m +3634(width)s 4236(of)s 220 fnt6 4507 4822(b)m 240 fnt1 +4681 4825(be)m 240 fnt4 4963 4827(l)m 240 fnt5 5041 4819(,)m +240 fnt4 5148 4827(r)m 240 fnt1 5246 4825(,)m 5353(we)s +5688(must)s 6213(ha)s 4(v)k 3(e)k 240 fnt5 +480 4277(\()m 564(1)s 240 fnt4 670 4285(i)m 240 fnt5 +817 4277(\255)m 240 fnt4 1038 4285(l)m 240 fnt5 1116 4277(\))m +1254(+)s 1455(\()s 1539(2)s 240 fnt4 1665 4285(i)m +240 fnt5 1812 4277(\255)m 240 fnt4 2033 4285(r)m 240 fnt5 +2143 4277(\))m 2293(\243)s 2503(5)s 240 fnt4 2622 4285(i)m +240 fnt1 0 3732(with)m 482(the)s 240 fnt5 842 3726(\255)m 240 fnt1 1051 3732(\(i.e.)m 1466(max\))s 2006(operations)s 3053(arising)s 3756(from)s 4280(mark)s 4832(alignment.)s 5952(Eliminating)s 7133(them)s -7671(gi)s 6(v)k 3(es)k 240 fnt4 480 3180(1)m -240 fnt3 586 3188(i)m 240 fnt4 721 3180(+)m 922(2)s -240 fnt3 1048 3188(i)m 240 fnt4 1207 3180(\243)m 1417(5)s -240 fnt3 1536 3188(i)m 583 2893(l)m 240 fnt4 721 2885(+)m -922(2)s 240 fnt3 1048 2893(i)m 240 fnt4 1207 2885(\243)m -1417(5)s 240 fnt3 1536 2893(i)m 240 fnt4 571 2597(1)m -240 fnt3 677 2605(i)m 240 fnt4 812 2597(+)m 240 fnt3 -1013 2605(r)m 240 fnt4 1207 2597(\243)m 1417(5)s 240 fnt3 -1536 2605(i)m 674 2310(l)m 240 fnt4 812 2302(+)m 240 fnt3 -1013 2310(r)m 240 fnt4 1207 2302(\243)m 1417(5)s 240 fnt3 +7671(gi)s 6(v)k 3(es)k 240 fnt5 480 3180(1)m +240 fnt4 586 3188(i)m 240 fnt5 721 3180(+)m 922(2)s +240 fnt4 1048 3188(i)m 240 fnt5 1207 3180(\243)m 1417(5)s +240 fnt4 1536 3188(i)m 583 2893(l)m 240 fnt5 721 2885(+)m +922(2)s 240 fnt4 1048 2893(i)m 240 fnt5 1207 2885(\243)m +1417(5)s 240 fnt4 1536 2893(i)m 240 fnt5 571 2597(1)m +240 fnt4 677 2605(i)m 240 fnt5 812 2597(+)m 240 fnt4 +1013 2605(r)m 240 fnt5 1207 2597(\243)m 1417(5)s 240 fnt4 +1536 2605(i)m 674 2310(l)m 240 fnt5 812 2302(+)m 240 fnt4 +1013 2310(r)m 240 fnt5 1207 2302(\243)m 1417(5)s 240 fnt4 1536 2310(i)m 240 fnt1 0 1799(and)m 428(since)s 1000(we)s -1359(assume)s 2144(that)s 220 fnt5 2587 1796(a)m 240 fnt1 +1359(assume)s 2144(that)s 220 fnt6 2587 1796(a)m 240 fnt1 2788 1799(\207ts)m 3156(into)s 3606(the)s 3978(a)s 4(v)k 6(ailable)k 4911(space,)s 5573(the)s 5946(\207rst)s 6402(inequality)s 7436(may)s 7927(be)s 8234(dropped,)s 0 1511(lea)m 4(ving)k @@ -10421,11 +10634,17 @@ showpage %%+ font Symbol %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def +%%IncludeResource: font Times-Italic +/Times-Italicfnt4 vec2 /Times-Italic LoutRecode +/fnt4 { /Times-Italicfnt4 LoutFont } def %%IncludeResource: font Symbol -/fnt4 { /Symbol LoutFont } def +/fnt5 { /Symbol LoutFont } def %%IncludeResource: font Helvetica -/Helveticafnt5 vec2 /Helvetica LoutRecode -/fnt5 { /Helveticafnt5 LoutFont } def +/Helveticafnt6 vec2 /Helvetica LoutRecode +/fnt6 { /Helveticafnt6 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -10440,77 +10659,77 @@ gsave 5704 -1579(-)m 5832(30)s 6127(-)s 9066 13416 0 12991 240 288 60 1417 -15423 LoutGr2 0 LoutMargSet grestore -240 fnt3 851 13205(l)m -240 fnt4 1013 13197(\243)m 1223(3)s 240 fnt3 1340 13205(i)m -480 12910(l)m 240 fnt4 618 12902(+)m 240 fnt3 819 12910(r)m -240 fnt4 1013 12902(\243)m 1223(5)s 240 fnt3 1342 12910(i)m -819 12622(r)m 240 fnt4 1013 12614(\243)m 1223(4)s 240 fnt3 -1348 12622(i)m 240 fnt1 0 12113(Object)m 220 fnt5 697 12110(b)m +240 fnt4 851 13205(l)m +240 fnt5 1013 13197(\243)m 1223(3)s 240 fnt4 1340 13205(i)m +480 12910(l)m 240 fnt5 618 12902(+)m 240 fnt4 819 12910(r)m +240 fnt5 1013 12902(\243)m 1223(5)s 240 fnt4 1342 12910(i)m +819 12622(r)m 240 fnt5 1013 12614(\243)m 1223(4)s 240 fnt4 +1348 12622(i)m 240 fnt1 0 12113(Object)m 220 fnt6 697 12110(b)m 240 fnt1 871 12113(may)m 1337(ha)s 4(v)k 3(e)k -1838(width)s 240 fnt3 2440 12115(l)m 240 fnt4 2518 12107(,)m -240 fnt3 2625 12115(r)m 240 fnt1 2783 12113(for)m 3121(an)s 3(y)k -240 fnt3 3518 12115(l)m 240 fnt1 3644 12113(and)m 240 fnt3 +1838(width)s 240 fnt4 2440 12115(l)m 240 fnt5 2518 12107(,)m +240 fnt4 2625 12115(r)m 240 fnt1 2783 12113(for)m 3121(an)s 3(y)k +240 fnt4 3518 12115(l)m 240 fnt1 3644 12113(and)m 240 fnt4 4048 12115(r)m 240 fnt1 4206 12113(satisfying)m 5188(these)s 5735(inequalities,)s 6943(and)s 7347(no)s 7640(others.)s 480 11739(Here)m 1000(is)s -1210(another)s 1987(e)s 3(xample:)k 220 fnt5 480 11238(5i @High { a /2ix b })m -240 fnt1 0 10737(Assuming)m 1024(that)s 220 fnt5 1442 10734(a)m -240 fnt1 1619 10737(has)m 1989(height)s 240 fnt4 2647 10731(1)m -240 fnt3 2753 10739(i)m 240 fnt4 2828 10731(,)m 2935(1)s -240 fnt3 3041 10739(i)m 240 fnt1 3104 10737(,)m 3211(the)s -3559(height)s 240 fnt3 4217 10739(l)m 240 fnt4 4295 10731(,)m -240 fnt3 4402 10739(r)m 240 fnt1 4560 10737(of)m 220 fnt5 -4831 10734(b)m 240 fnt1 5005 10737(must)m 5530(satisfy)s 240 fnt4 -480 10179(1)m 240 fnt3 586 10187(i)m 240 fnt4 721 10179(+)m -922(\()s 1006(\()s 1090(1)s 240 fnt3 1196 10187(i)m -240 fnt4 1331 10179(+)m 240 fnt3 1532 10187(l)m 240 fnt4 -1610 10179(\))m 1760(\255)s 1981(2)s 240 fnt3 2107 10187(i)m -240 fnt4 2182 10179(\))m 2320(+)s 240 fnt3 2521 10187(r)m -240 fnt4 2703 10179(\243)m 2913(5)s 240 fnt3 3032 10187(i)m -240 fnt1 0 9634(This)m 478(time)s 960(the)s 240 fnt4 +1210(another)s 1987(e)s 3(xample:)k 220 fnt6 480 11238(5i @High { a /2ix b })m +240 fnt1 0 10737(Assuming)m 1024(that)s 220 fnt6 1442 10734(a)m +240 fnt1 1619 10737(has)m 1989(height)s 240 fnt5 2647 10731(1)m +240 fnt4 2753 10739(i)m 240 fnt5 2828 10731(,)m 2935(1)s +240 fnt4 3041 10739(i)m 240 fnt1 3104 10737(,)m 3211(the)s +3559(height)s 240 fnt4 4217 10739(l)m 240 fnt5 4295 10731(,)m +240 fnt4 4402 10739(r)m 240 fnt1 4560 10737(of)m 220 fnt6 +4831 10734(b)m 240 fnt1 5005 10737(must)m 5530(satisfy)s 240 fnt5 +480 10179(1)m 240 fnt4 586 10187(i)m 240 fnt5 721 10179(+)m +922(\()s 1006(\()s 1090(1)s 240 fnt4 1196 10187(i)m +240 fnt5 1331 10179(+)m 240 fnt4 1532 10187(l)m 240 fnt5 +1610 10179(\))m 1760(\255)s 1981(2)s 240 fnt4 2107 10187(i)m +240 fnt5 2182 10179(\))m 2320(+)s 240 fnt4 2521 10187(r)m +240 fnt5 2703 10179(\243)m 2913(5)s 240 fnt4 3032 10187(i)m +240 fnt1 0 9634(This)m 478(time)s 960(the)s 240 fnt5 1325 9628(\255)m 240 fnt1 1539 9634(operation)m 2501(arises)s 3098(from)s 3624(the)s 3975(mark-to-mark)s 5364(g)s 1(ap)k 5765(mode,)s -6406(which)s 7050(will)s 7479(widen)s 8123(the)s 240 fnt4 -8474 9628(2)m 240 fnt3 8602 9636(i)m 240 fnt1 8728 9634(g)m 1(ap)k +6406(which)s 7050(will)s 7479(widen)s 8123(the)s 240 fnt5 +8474 9628(2)m 240 fnt4 8602 9636(i)m 240 fnt1 8728 9634(g)m 1(ap)k 0 9346(if)m 217(necessary)s 1200(to)s 1439(pre)s 6(v)k 3(ent)k -220 fnt5 2207 9343(a)m 240 fnt1 2384 9346(and)m 220 fnt5 +220 fnt6 2207 9343(a)m 240 fnt1 2384 9346(and)m 220 fnt6 2788 9343(b)m 240 fnt1 2962 9346(from)m 3486(o)s 3(v)k 3(erlapping.)k 4787(This)s 5263(inequality)s 6273(can)s 6662(be)s 6944(re)s 6(written)k -7856(as)s 240 fnt3 851 8795(l)m 240 fnt4 1013 8787(\243)m -288 fnt4 1223 8775(\245)m 240 fnt3 480 8504(l)m 240 fnt4 -618 8496(+)m 240 fnt3 819 8504(r)m 240 fnt4 1013 8496(\243)m -1223(3)s 240 fnt3 1340 8504(i)m 819 8216(r)m 240 fnt4 -1013 8208(\243)m 1223(2)s 240 fnt3 1349 8216(i)m 240 fnt1 +7856(as)s 240 fnt4 851 8795(l)m 240 fnt5 1013 8787(\243)m +288 fnt5 1223 8775(\245)m 240 fnt4 480 8504(l)m 240 fnt5 +618 8496(+)m 240 fnt4 819 8504(r)m 240 fnt5 1013 8496(\243)m +1223(3)s 240 fnt4 1340 8504(i)m 819 8216(r)m 240 fnt5 +1013 8208(\243)m 1223(2)s 240 fnt4 1349 8216(i)m 240 fnt1 0 7709(In)m 263(general,)s 1080(Lout)s 1599(is)s 1816(designed)s 2732(so)s 3005(that)s 3430(the)s 3785(a)s 4(v)k 6(ailable)k 4700(width)s 5309(or)s 5575(height)s 6240(at)s 6479(an)s 3(y)k 6883(point)s 7442(can)s 7838(be)s 8128(e)s 3(xpressed)k 0 7421(by)m 294(three)s 827(inequalities)s 1979(of)s 2250(the)s -2598(form)s 240 fnt3 851 6870(l)m 240 fnt4 1013 6862(\243)m -240 fnt3 1223 6870(x)m 480 6579(l)m 240 fnt4 618 6571(+)m -240 fnt3 819 6579(r)m 240 fnt4 1013 6571(\243)m 240 fnt3 -1223 6579(y)m 819 6264(r)m 240 fnt4 1013 6256(\243)m 240 fnt3 -1223 6264(z)m 240 fnt1 0 5743(where)m 240 fnt3 641 5745(x)m -240 fnt1 747 5743(,)m 240 fnt3 855 5745(y)m 240 fnt1 -1018 5743(and)m 240 fnt3 1423 5745(z)m 240 fnt1 1575 5743(may)m -2042(be)s 288 fnt4 2325 5725(\245)m 240 fnt1 2523 5743(.)m +2598(form)s 240 fnt4 851 6870(l)m 240 fnt5 1013 6862(\243)m +240 fnt4 1223 6870(x)m 480 6579(l)m 240 fnt5 618 6571(+)m +240 fnt4 819 6579(r)m 240 fnt5 1013 6571(\243)m 240 fnt4 +1223 6579(y)m 819 6264(r)m 240 fnt5 1013 6256(\243)m 240 fnt4 +1223 6264(z)m 240 fnt1 0 5743(where)m 240 fnt4 641 5745(x)m +240 fnt1 747 5743(,)m 240 fnt4 855 5745(y)m 240 fnt1 +1018 5743(and)m 240 fnt4 1423 5745(z)m 240 fnt1 1575 5743(may)m +2042(be)s 288 fnt5 2325 5725(\245)m 240 fnt1 2523 5743(.)m 2688(W)s 19(e)k 3058(abbre)s 6(viate)k 4104(these)s -4652(three)s 5186(inequalities)s 6339(to)s 240 fnt3 6579 5745(l)m -240 fnt4 6658 5737(,)m 240 fnt3 6768 5745(r)m 240 fnt4 -6953 5737(\243)m 240 fnt3 7166 5745(x)m 240 fnt4 7285 5737(,)m -240 fnt3 7395 5745(y)m 240 fnt4 7510 5737(,)m 240 fnt3 +4652(three)s 5186(inequalities)s 6339(to)s 240 fnt4 6579 5745(l)m +240 fnt5 6658 5737(,)m 240 fnt4 6768 5745(r)m 240 fnt5 +6953 5737(\243)m 240 fnt4 7166 5745(x)m 240 fnt5 7285 5737(,)m +240 fnt4 7395 5745(y)m 240 fnt5 7510 5737(,)m 240 fnt4 7620 5745(z)m 240 fnt1 7711 5743(,)m 7819(and)s 8224(we)s -8560(call)s 240 fnt3 8960 5745(x)m 240 fnt4 0 5449(,)m -240 fnt3 107 5457(y)m 240 fnt4 221 5449(,)m 240 fnt3 -328 5457(z)m 240 fnt1 479 5455(a)m 240 fnt3 645 5457(size)m +8560(call)s 240 fnt4 8960 5745(x)m 240 fnt5 0 5449(,)m +240 fnt4 107 5457(y)m 240 fnt5 221 5449(,)m 240 fnt4 +328 5457(z)m 240 fnt1 479 5455(a)m 240 fnt4 645 5457(size)m 1056(constr)s 3(aint)k 240 fnt1 2027 5455(.)m 480 5081(The)m 920(tw)s 2(o)k 1343(e)s 3(xamples)k 2307(abo)s 3(v)k 3(e)k 2942(sho)s 6(wed)k 3739(ho)s 6(w)k 4213(to)s 4465(propag)s 1(ate)k 5475(the)s 5836(size)s 6276(constraint)s -288 fnt4 7291 5063(\245)m 240 fnt4 7514 5075(,)m 7659(5)s -240 fnt3 7791 5083(i)m 240 fnt4 7879 5075(,)m 288 fnt4 -8025 5063(\245)m 240 fnt1 8296 5081(for)m 220 fnt5 8647 5078(a / b)m +288 fnt5 7291 5063(\245)m 240 fnt5 7514 5075(,)m 7659(5)s +240 fnt4 7791 5083(i)m 240 fnt5 7879 5075(,)m 288 fnt5 +8025 5063(\245)m 240 fnt1 8296 5081(for)m 220 fnt6 8647 5078(a / b)m 240 fnt1 0 4793(do)m 6(wn)k 586(one)s 991(le)s 6(v)k 3(el)k -1504(to)s 1746(the)s 2097(child)s 220 fnt5 2636 4790(b)m +1504(to)s 1746(the)s 2097(child)s 220 fnt6 2636 4790(b)m 240 fnt1 2750 4793(.)m 2917(Basser)s 3617(Lout)s 4132(contains)s 4982(a)s 5151(complete)s 6086(set)s 6414(of)s 6688(general)s 7449(rules)s 7967(for)s 8308(all)s 8604(node)s 0 4505(types,)m @@ -10519,48 +10738,48 @@ grestore 5203(just)s 5624(one)s 6042(e)s 3(xample)k 6921(of)s 7208(ho)s 6(w)k 7685(these)s 8248(rules)s 8779(are)s 0 4217(deri)m 6(v)k 3(ed,)k 815(using)s 1387(the)s -1735(object)s 240 fnt3 480 3721(x)m 168 fnt4 586 3628(1)m -220 fnt5 772 3716(/)m 240 fnt3 956 3721(x)m 168 fnt4 -1062 3628(2)m 220 fnt5 1262 3716(/)m 240 fnt3 1446 3721(.)m -1552(.)s 1658(.)s 220 fnt5 1812 3716(/)m 240 fnt3 -1996 3721(x)m 168 fnt3 2102 3634(n)m 240 fnt1 0 3175(where)m -240 fnt3 640 3177(x)m 168 fnt3 746 3090(j)m 240 fnt1 -852 3175(has)m 1222(width)s 240 fnt3 1824 3177(l)m 168 fnt3 -1890 3090(j)m 240 fnt4 1948 3169(,)m 240 fnt3 2055 3177(r)m -168 fnt3 2127 3090(j)m 240 fnt1 2233 3175(for)m 2571(all)s -240 fnt3 2864 3177(j)m 240 fnt1 2930 3175(.)m 480 2801(Suppose)m +1735(object)s 240 fnt4 480 3721(x)m 168 fnt5 586 3628(1)m +220 fnt6 772 3716(/)m 240 fnt4 956 3721(x)m 168 fnt5 +1062 3628(2)m 220 fnt6 1262 3716(/)m 240 fnt4 1446 3721(.)m +1552(.)s 1658(.)s 220 fnt6 1812 3716(/)m 240 fnt4 +1996 3721(x)m 168 fnt4 2102 3634(n)m 240 fnt1 0 3175(where)m +240 fnt4 640 3177(x)m 168 fnt4 746 3090(j)m 240 fnt1 +852 3175(has)m 1222(width)s 240 fnt4 1824 3177(l)m 168 fnt4 +1890 3090(j)m 240 fnt5 1948 3169(,)m 240 fnt4 2055 3177(r)m +168 fnt4 2127 3090(j)m 240 fnt1 2233 3175(for)m 2571(all)s +240 fnt4 2864 3177(j)m 240 fnt1 2930 3175(.)m 480 2801(Suppose)m 1345(the)s 1689(whole)s 2326(object)s 2966(has)s 3333(width)s -3931(constraint)s 240 fnt3 4929 2803(X)m 240 fnt4 5097 2795(,)m -240 fnt3 5204 2803(Y)m 240 fnt4 5367 2795(,)m 240 fnt3 +3931(constraint)s 240 fnt4 4929 2803(X)m 240 fnt5 5097 2795(,)m +240 fnt4 5204 2803(Y)m 240 fnt5 5367 2795(,)m 240 fnt4 5474 2803(Z)m 240 fnt1 5619 2801(,)m 5722(and)s 6123(we)s 6454(require)s 7182(the)s 7526(width)s 8124(constraint)s 0 2513(of)m -240 fnt3 271 2515(x)m 168 fnt3 377 2428(i)m 240 fnt1 -421 2513(.)m 586(Let)s 240 fnt3 965 2515(L)m 240 fnt4 -1185 2507(=)m 240 fnt1 1401 2513(max)m 168 fnt3 1808 2428(j)m -240 fnt3 1917 2515(l)m 168 fnt3 1983 2428(j)m 240 fnt1 -2090 2513(and)m 240 fnt3 2495 2515(R)m 240 fnt4 2723 2507(=)m -240 fnt1 2939 2513(max)m 168 fnt3 3346 2428(j)m 240 fnt3 -3455 2515(r)m 168 fnt3 3527 2428(j)m 240 fnt1 3573 2513(,)m -3681(so)s 3948(that)s 240 fnt3 4367 2515(L)m 240 fnt4 -4512 2507(,)m 240 fnt3 4619 2515(R)m 240 fnt1 4821 2513(is)m +240 fnt4 271 2515(x)m 168 fnt4 377 2428(i)m 240 fnt1 +421 2513(.)m 586(Let)s 240 fnt4 965 2515(L)m 240 fnt5 +1185 2507(=)m 240 fnt1 1401 2513(max)m 168 fnt4 1808 2428(j)m +240 fnt4 1917 2515(l)m 168 fnt4 1983 2428(j)m 240 fnt1 +2090 2513(and)m 240 fnt4 2495 2515(R)m 240 fnt5 2723 2507(=)m +240 fnt1 2939 2513(max)m 168 fnt4 3346 2428(j)m 240 fnt4 +3455 2515(r)m 168 fnt4 3527 2428(j)m 240 fnt1 3573 2513(,)m +3681(so)s 3948(that)s 240 fnt4 4367 2515(L)m 240 fnt5 +4512 2507(,)m 240 fnt4 4619 2515(R)m 240 fnt1 4821 2513(is)m 5032(the)s 5381(width)s 5984(of)s 6256(the)s 6605(whole)s -7247(object.)s 7996(W)s 19(e)k 8366(assume)s 240 fnt3 -0 2202(L)m 240 fnt4 145 2194(,)m 240 fnt3 252 2202(R)m -240 fnt4 477 2194(\243)m 240 fnt3 687 2202(X)m 240 fnt4 -855 2194(,)m 240 fnt3 962 2202(Y)m 240 fnt4 1125 2194(,)m -240 fnt3 1232 2202(Z)m 240 fnt1 1377 2200(.)m 1541(Then)s -240 fnt3 2090 2202(x)m 168 fnt3 2196 2115(i)m 240 fnt1 +7247(object.)s 7996(W)s 19(e)k 8366(assume)s 240 fnt4 +0 2202(L)m 240 fnt5 145 2194(,)m 240 fnt4 252 2202(R)m +240 fnt5 477 2194(\243)m 240 fnt4 687 2202(X)m 240 fnt5 +855 2194(,)m 240 fnt4 962 2202(Y)m 240 fnt5 1125 2194(,)m +240 fnt4 1232 2202(Z)m 240 fnt1 1377 2200(.)m 1541(Then)s +240 fnt4 2090 2202(x)m 168 fnt4 2196 2115(i)m 240 fnt1 2300 2200(can)m 2689(be)s 2971(enlar)s 4(ged)k 3848(to)s -4087(an)s 3(y)k 4484(size)s 240 fnt3 4911 2202(l)m -168 fnt3 4977 2115(i)m 240 fnt4 5081 2194(,)m 240 fnt3 -5188 2202(r)m 168 fnt3 5260 2115(i)m 240 fnt1 5364 2200(satisfying)m -240 fnt4 480 1607(\()m 240 fnt3 564 1615(l)m 168 fnt3 -630 1528(i)m 240 fnt4 758 1607(\255)m 240 fnt3 979 1615(L)m -240 fnt4 1124 1607(\))m 1202(,)s 1309(\()s 240 fnt3 -1393 1615(r)m 168 fnt3 1465 1528(i)m 240 fnt4 1593 1607(\255)m -240 fnt3 1814 1615(R)m 240 fnt4 1967 1607(\))m 2117(\243)s -240 fnt3 2327 1615(X)m 240 fnt4 2495 1607(,)m 240 fnt3 -2602 1615(Y)m 240 fnt4 2765 1607(,)m 240 fnt3 2872 1615(Z)m +4087(an)s 3(y)k 4484(size)s 240 fnt4 4911 2202(l)m +168 fnt4 4977 2115(i)m 240 fnt5 5081 2194(,)m 240 fnt4 +5188 2202(r)m 168 fnt4 5260 2115(i)m 240 fnt1 5364 2200(satisfying)m +240 fnt5 480 1607(\()m 240 fnt4 564 1615(l)m 168 fnt4 +630 1528(i)m 240 fnt5 758 1607(\255)m 240 fnt4 979 1615(L)m +240 fnt5 1124 1607(\))m 1202(,)s 1309(\()s 240 fnt4 +1393 1615(r)m 168 fnt4 1465 1528(i)m 240 fnt5 1593 1607(\255)m +240 fnt4 1814 1615(R)m 240 fnt5 1967 1607(\))m 2117(\243)s +240 fnt4 2327 1615(X)m 240 fnt5 2495 1607(,)m 240 fnt4 +2602 1615(Y)m 240 fnt5 2765 1607(,)m 240 fnt4 2872 1615(Z)m grestore 0 0 0 0 240 288 60 1417 -15423 LoutGr2 @@ -10584,11 +10803,20 @@ showpage %%+ font Times-Bold %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def +%%IncludeResource: font Times-Italic +/Times-Italicfnt4 vec2 /Times-Italic LoutRecode +/fnt4 { /Times-Italicfnt4 LoutFont } def %%IncludeResource: font Symbol -/fnt4 { /Symbol LoutFont } def +/fnt5 { /Symbol LoutFont } def +%%IncludeResource: font Times-Bold +/Times-Boldfnt2 vec2 /Times-Bold LoutRecode +/fnt2 { /Times-Boldfnt2 LoutFont } def %%IncludeResource: font Helvetica -/Helveticafnt5 vec2 /Helvetica LoutRecode -/fnt5 { /Helveticafnt5 LoutFont } def +/Helveticafnt6 vec2 /Helvetica LoutRecode +/fnt6 { /Helveticafnt6 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -10604,53 +10832,53 @@ gsave 1 LoutMargSet grestore 0 13253(which)m 642(e)s 3(xpands)k -1475(to)s 1714(eight)s 2252(inequalities:)s 240 fnt3 917 12702(l)m -168 fnt3 983 12615(i)m 240 fnt4 1123 12694(\243)m 240 fnt3 -1333 12702(X)m 894 12338(L)m 240 fnt4 1123 12330(\243)m 240 fnt3 -1333 12338(X)m 528 12047(l)m 168 fnt3 594 11960(i)m 240 fnt4 -710 12039(+)m 240 fnt3 911 12047(r)m 168 fnt3 983 11960(i)m -240 fnt4 1123 12039(\243)m 240 fnt3 1333 12047(Y)m 503 11675(l)m -168 fnt3 569 11588(i)m 240 fnt4 685 11667(+)m 240 fnt3 -886 11675(R)m 240 fnt4 1123 11667(\243)m 240 fnt3 1333 11675(Y)m -505 11311(L)m 240 fnt4 710 11303(+)m 240 fnt3 911 11311(r)m -168 fnt3 983 11224(i)m 240 fnt4 1123 11303(\243)m 240 fnt3 -1333 11311(Y)m 480 10947(L)m 240 fnt4 685 10939(+)m 240 fnt3 -886 10947(R)m 240 fnt4 1123 10939(\243)m 240 fnt3 1333 10947(Y)m -911 10664(r)m 168 fnt3 983 10577(i)m 240 fnt4 1123 10656(\243)m -240 fnt3 1333 10664(Z)m 886 10300(R)m 240 fnt4 1123 10292(\243)m -240 fnt3 1333 10300(Z)m 240 fnt1 0 9793(Three)m 613(are)s +1475(to)s 1714(eight)s 2252(inequalities:)s 240 fnt4 917 12702(l)m +168 fnt4 983 12615(i)m 240 fnt5 1123 12694(\243)m 240 fnt4 +1333 12702(X)m 894 12338(L)m 240 fnt5 1123 12330(\243)m 240 fnt4 +1333 12338(X)m 528 12047(l)m 168 fnt4 594 11960(i)m 240 fnt5 +710 12039(+)m 240 fnt4 911 12047(r)m 168 fnt4 983 11960(i)m +240 fnt5 1123 12039(\243)m 240 fnt4 1333 12047(Y)m 503 11675(l)m +168 fnt4 569 11588(i)m 240 fnt5 685 11667(+)m 240 fnt4 +886 11675(R)m 240 fnt5 1123 11667(\243)m 240 fnt4 1333 11675(Y)m +505 11311(L)m 240 fnt5 710 11303(+)m 240 fnt4 911 11311(r)m +168 fnt4 983 11224(i)m 240 fnt5 1123 11303(\243)m 240 fnt4 +1333 11311(Y)m 480 10947(L)m 240 fnt5 685 10939(+)m 240 fnt4 +886 10947(R)m 240 fnt5 1123 10939(\243)m 240 fnt4 1333 10947(Y)m +911 10664(r)m 168 fnt4 983 10577(i)m 240 fnt5 1123 10656(\243)m +240 fnt4 1333 10664(Z)m 886 10300(R)m 240 fnt5 1123 10292(\243)m +240 fnt4 1333 10300(Z)m 240 fnt1 0 9793(Three)m 613(are)s 960(already)s 1717(kno)s 6(wn,)k 2471(and)s 2875(slightly)s 3646(rearranging)s 4800(the)s 5148(others)s 5783(gi)s 6(v)k 3(es)k -240 fnt3 869 9242(l)m 168 fnt3 935 9155(i)m 240 fnt4 -1075 9234(\243)m 240 fnt3 1285 9242(X)m 869 8870(l)m 168 fnt3 -935 8783(i)m 240 fnt4 1075 8862(\243)m 240 fnt3 1285 8870(Y)m -240 fnt4 1508 8862(-)m 240 fnt3 1708 8870(R)m 480 8498(l)m -168 fnt3 546 8411(i)m 240 fnt4 662 8490(+)m 240 fnt3 -863 8498(r)m 168 fnt3 935 8411(i)m 240 fnt4 1075 8490(\243)m -240 fnt3 1285 8498(Y)m 863 8134(r)m 168 fnt3 935 8047(i)m -240 fnt4 1075 8126(\243)m 240 fnt3 1285 8134(Z)m 863 7770(r)m -168 fnt3 935 7683(i)m 240 fnt4 1075 7762(\243)m 240 fnt3 -1285 7770(Y)m 240 fnt4 1508 7762(-)m 240 fnt3 1708 7770(L)m +240 fnt4 869 9242(l)m 168 fnt4 935 9155(i)m 240 fnt5 +1075 9234(\243)m 240 fnt4 1285 9242(X)m 869 8870(l)m 168 fnt4 +935 8783(i)m 240 fnt5 1075 8862(\243)m 240 fnt4 1285 8870(Y)m +240 fnt5 1508 8862(-)m 240 fnt4 1708 8870(R)m 480 8498(l)m +168 fnt4 546 8411(i)m 240 fnt5 662 8490(+)m 240 fnt4 +863 8498(r)m 168 fnt4 935 8411(i)m 240 fnt5 1075 8490(\243)m +240 fnt4 1285 8498(Y)m 863 8134(r)m 168 fnt4 935 8047(i)m +240 fnt5 1075 8126(\243)m 240 fnt4 1285 8134(Z)m 863 7770(r)m +168 fnt4 935 7683(i)m 240 fnt5 1075 7762(\243)m 240 fnt4 +1285 7770(Y)m 240 fnt5 1508 7762(-)m 240 fnt4 1708 7770(L)m 240 fnt1 0 7182(Therefore)m 997(the)s 1345(width)s 1947(constraint)s -2949(of)s 240 fnt3 3220 7184(x)m 168 fnt3 3326 7097(i)m -240 fnt1 3430 7182(is)m 480 6644(min)m 240 fnt4 861 6638(\()m -240 fnt3 945 6646(X)m 240 fnt4 1113 6638(,)m 240 fnt3 -1220 6646(Y)m 240 fnt4 1443 6638(-)m 240 fnt3 1643 6646(R)m -240 fnt4 1796 6638(\))m 1874(,)s 240 fnt3 1981 6646(Y)m -240 fnt4 2144 6638(,)m 240 fnt1 2251 6644(min)m 240 fnt4 -2632 6638(\()m 240 fnt3 2716 6646(Z)m 240 fnt4 2873 6638(,)m -240 fnt3 2980 6646(Y)m 240 fnt4 3203 6638(-)m 240 fnt3 -3403 6646(L)m 240 fnt4 3548 6638(\))m 240 fnt1 0 6142(The)m +2949(of)s 240 fnt4 3220 7184(x)m 168 fnt4 3326 7097(i)m +240 fnt1 3430 7182(is)m 480 6644(min)m 240 fnt5 861 6638(\()m +240 fnt4 945 6646(X)m 240 fnt5 1113 6638(,)m 240 fnt4 +1220 6646(Y)m 240 fnt5 1443 6638(-)m 240 fnt4 1643 6646(R)m +240 fnt5 1796 6638(\))m 1874(,)s 240 fnt4 1981 6646(Y)m +240 fnt5 2144 6638(,)m 240 fnt1 2251 6644(min)m 240 fnt5 +2632 6638(\()m 240 fnt4 2716 6646(Z)m 240 fnt5 2873 6638(,)m +240 fnt4 2980 6646(Y)m 240 fnt5 3203 6638(-)m 240 fnt4 +3403 6646(L)m 240 fnt5 3548 6638(\))m 240 fnt1 0 6142(The)m 445(size)s 890(constraint)s 1909(of)s 2198(an)s 3(y)k 2613(node)s 3152(can)s 3559(be)s 3858(found)s 4493(by)s 4805(climbing)s 5725(the)s 6091(tree)s 6521(to)s 6778(a)s -240 fnt3 6962 6144(WIDE)m 240 fnt1 7641 6142(or)m 240 fnt3 +240 fnt4 6962 6144(WIDE)m 240 fnt1 7641 6142(or)m 240 fnt4 7918 6144(HIGH)m 240 fnt1 8604 6142(node)m 0 5854(where)m 636(the)s 980(constraint)s 1978(is)s 2184(tri)s 6(vial,)k 2850(then)s 3315(propag)s 1(ating)k 4506(it)s 4694(back)s 5203(do)s 6(wn)k 5783(to)s 6018(the)s 6362(node,)s 6931(and)s 7331(this)s 7723(is)s 7929(the)s 8272(function)s 0 5566(of)m 271(procedure)s -240 fnt3 1283 5568(Constr)m 3(ained)k 240 fnt1 2530 5566(in)m +240 fnt4 1283 5568(Constr)m 3(ained)k 240 fnt1 2530 5566(in)m 2773(Basser)s 3470(Lout.)s 480 5192(After)m 1043(some)s 1604(components)s 2813(ha)s 4(v)k 3(e)k 3314(been)s 3824(promoted)s 4799(into)s 5225(a)s 5391(tar)s 4(get,)k 6038(the)s @@ -10663,7 +10891,7 @@ grestore 3481(time,)s 4016(which)s 4662(cease)s 5239(as)s 5492(soon)s 6006(as)s 6260(some)s 6825(ancestor')s 13(s)k 7835(size)s 8266(does)s 8760(not)s 0 4328(change.)m 830(These)s 1445(rules)s -1948(are)s 2283(embodied)s 3273(in)s 3504(procedure)s 240 fnt3 +1948(are)s 2283(embodied)s 3273(in)s 3504(procedure)s 240 fnt4 4504 4330(AdjustSize)m 240 fnt1 5541 4328(of)m 5800(Basser)s 6485(Lout.)s 7089(The)s 7505(adjustment)s 8601(must)s 0 4040(be)m 282(done)s 804(before)s 1470(relinquishing)s 2785(control)s 3517(to)s 3756(an)s 3(y)k @@ -10694,14 +10922,14 @@ grestore 4071(the)s 4417(typical)s 5121(e)s 3(xample)k 5982(of)s 6252(a)s 6416(root)s 6860(g)s 1(alle)k 3(y)k 7492(which)s 8133(is)s 8341(a)s 8506(list)s 8855(of)s -0 812(pages,)m 652(a)s 220 fnt5 818 809(@BodyT)m 26(e)k 6(xt)k +0 812(pages,)m 652(a)s 220 fnt6 818 809(@BodyT)m 26(e)k 6(xt)k 240 fnt1 1991 812(g)m 1(alle)k 3(y)k 2625(tar)s 4(geted)k -3448(into)s 3872(the)s 4220(pages,)s 220 fnt5 4872 809(@Chapter)m +3448(into)s 3872(the)s 4220(pages,)s 220 fnt6 4872 809(@Chapter)m 240 fnt1 5934 812(g)m 1(alle)k 3(ys)k 6658(tar)s 4(geted)k -7481(into)s 220 fnt5 7905 809(@BodyT)m 26(e)k 6(xt)k -240 fnt1 9019 812(,)m 0 524(and)m 220 fnt5 404 521(@Section)m +7481(into)s 220 fnt6 7905 809(@BodyT)m 26(e)k 6(xt)k +240 fnt1 9019 812(,)m 0 524(and)m 220 fnt6 404 521(@Section)m 240 fnt1 1404 524(g)m 1(alle)k 3(ys)k 2128(tar)s 4(geted)k -2951(into)s 3376(the)s 220 fnt5 3724 521(@Chapter)m 240 fnt1 +2951(into)s 3376(the)s 220 fnt6 3724 521(@Chapter)m 240 fnt1 4787 524(g)m 1(alle)k 3(ys:)k grestore 0 0 0 0 240 288 60 1417 -15423 LoutGr2 @@ -10723,9 +10951,15 @@ showpage %%+ font Helvetica %%+ font Times-Italic /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Helvetica -/Helveticafnt5 vec2 /Helvetica LoutRecode -/fnt5 { /Helveticafnt5 LoutFont } def +/Helveticafnt6 vec2 /Helvetica LoutRecode +/fnt6 { /Helveticafnt6 LoutFont } def +%%IncludeResource: font Times-Italic +/Times-Italicfnt4 vec2 /Times-Italic LoutRecode +/fnt4 { /Times-Italicfnt4 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -10740,7 +10974,7 @@ gsave 5705 -1579(-)m 5833(32)s 6127(-)s 9066 13416 0 13312 240 288 60 1417 -15423 LoutGr2 0 LoutMargSet grestore -220 fnt5 480 13255(@P)m 8(ageList)k +220 fnt6 480 13255(@P)m 8(ageList)k 480 12967(//)m 480 12679(@BodyT)m 26(e)k 6(xt)k 480 12391(//)m 480 12103(@Chapter {)m 480 11815( @Section { ...)m 13( })k 480 11527( @Section { ...)m 13( })k 480 11239( ...)m 480 10951( @Section { ...)m 13( })k 480 10663(})m 480 10375(@Chapter {)m @@ -10748,7 +10982,7 @@ grestore 1220(is)s 1436(able)s 1896(to)s 2141(read)s 2616(and)s 3026(process)s 3800(such)s 4302(g)s 1(alle)k 3(ys)k 5032(one)s 5440(paragraph)s 6459(at)s 6697(a)s 6869(time)s -7355(\(strictly)s 15(,)k 8194(from)s 8724(one)s 220 fnt5 +7355(\(strictly)s 15(,)k 8194(from)s 8724(one)s 220 fnt6 0 9014(//)m 240 fnt1 185 9017(at)m 417(the)s 765(outer)s 1316(le)s 6(v)k 3(el)k 1826(of)s 2097(a)s 2263(g)s 1(alle)k 3(y)k 2897(to)s 3136(the)s @@ -10756,11 +10990,11 @@ grestore 5125(describe.)s 480 8643(When)m 1147(the)s 1534(parser)s 2215(encounters)s 3341(the)s 3727(be)s 3(ginning)k 4774(of)s 5083(a)s 5288(g)s 1(alle)k 3(y)k 15(,)k 5998(lik)s 2(e)k -220 fnt5 6449 8640(@Chapter)m 240 fnt1 7550 8643(or)m 220 fnt5 +220 fnt6 6449 8640(@Chapter)m 240 fnt1 7550 8643(or)m 220 fnt6 7848 8640(@Section)m 240 fnt1 8788 8643(,)m 8934(it)s 0 8355(initiates)m 831(a)s 1023(ne)s 6(w)k 1495(g)s 1(alle)k 3(y)k 2155(process.)s 3061(The)s 3515(special)s 4258(recepti)s 6(v)k 3(e)k -5206(symbol)s 220 fnt5 5991 8352(@Input)m 240 fnt1 6784 8355(is)m +5206(symbol)s 220 fnt6 5991 8352(@Input)m 240 fnt1 6784 8355(is)m 7019(substituted)s 8139(for)s 8502(the)s 8876(as)s 0 8067(yet)m 357(unread)s 1071(right)s 1588(parameter)s 2607(of)s 2884(the)s 3237(g)s 1(alle)k 3(y)k 15(.)k 3972(As)s @@ -10768,7 +11002,7 @@ grestore 6960(parameter)s 7979(is)s 8195(read,)s 8718(it)s 8916(is)s 0 7779(deleted)m 763(from)s 1302(the)s 1665(parse)s 2240(tree)s 2668(and)s 3087(injected)s 3916(into)s 4356(the)s 4719(g)s 1(alle)k 3(y')k 13(s)k -220 fnt5 5524 7776(@Input)m 240 fnt1 6231 7779(.)m 6410(The)s +220 fnt6 5524 7776(@Input)m 240 fnt1 6231 7779(.)m 6410(The)s 6853(g)s 1(alle)k 3(y)k 7502(is)s 7727(then)s 8212(resumed.)s 0 7491(The)m 429(parser)s 1074(thus)s 1526(acts)s 1950(as)s 2202(an)s 2487(e)s 3(xtra)k 3022(concurrent)s @@ -10778,7 +11012,7 @@ grestore 1151(is)s 1382(nothing)s 2188(else)s 2636(to)s 2897(do.)s 3322(Since)s 3930(g)s 1(alle)k 3(ys)k 4675(may)s 5162(be)s 5465(nested,)s 6205(a)s 6392(stack)s 6965(of)s -220 fnt5 7257 7200(@Input)m 240 fnt1 8045 7203(symbols)m 8916(is)s +220 fnt6 7257 7200(@Input)m 240 fnt1 8045 7203(symbols)m 8916(is)s 0 6915(needed,)m 781(each)s 1271(with)s 1749(its)s 2020(o)s 6(wn)k 2480(en)s 9(vironment)k 3735(and)s 4135(style.)s 4745(If)s 4971(a)s 5132(g)s 1(alle)k 3(y)k 5762(is)s @@ -10787,7 +11021,7 @@ grestore 3006(footnote,)s 3914(for)s 4257(e)s 3(xample\),)k 5254(it)s 5450(is)s 5664(read)s 6137(in)s 6385(its)s 6665(entirety)s 7452(and)s 7860(hung)s 8397(in)s 8645(pure)s 0 6339(parse)m -551(tree)s 954(form)s 1468(from)s 1983(an)s 240 fnt3 +551(tree)s 954(form)s 1468(from)s 1983(an)s 240 fnt4 2256 6341(UN)m 6(A)k 8(TT)k 12(A)k 7(CHED)k 240 fnt1 3811 6339(inde)m 3(x)k 4386(in)s 4619(the)s 4957(usual)s 5508(w)s 2(ay)k 15(,)k 5987(with)s @@ -10799,24 +11033,24 @@ grestore 4138(of)s 4407(components)s 5614(from)s 6137(input,)s 6735(we)s 7069(must)s 7593(also)s 8030(ensure)s 8708(that)s 0 5389(recepti)m 6(v)k 3(e)k 928(symbols)s 1783(do)s 2083(not)s 2455(unduly)s 3182(block)s -3781(their)s 4285(promotion.)s 5452(The)s 220 fnt5 5886 5386(@F)m 6(ootSect)k +3781(their)s 4285(promotion.)s 5452(The)s 220 fnt6 5886 5386(@F)m 6(ootSect)k 240 fnt1 7044 5389(symbol)m 7810(at)s 8049(the)s 8403(foot)s 8855(of)s 0 5101(each)m 495(page)s 1003(is)s 1213(a)s 1379(typical)s 2084(e)s 3(xample:)k 3057(until)s 3550(it)s 3742(is)s 3952(deleted)s 4700(the)s 5048(page)s 5556(cannot)s 6254(be)s 6536(printed.)s 480 4727(Recepti)m 6(v)k 3(e)k 1501(symbols)s 2368(are)s 2733(e)s 3(xpanded)k 3724(only)s -4222(on)s 4537(demand,)s 5421(so)s 220 fnt5 5705 4724(@F)m 6(ootSect)k +4222(on)s 4537(demand,)s 5421(so)s 220 fnt6 5705 4724(@F)m 6(ootSect)k 240 fnt1 6874 4727(can)m 7281(be)s 7581(deleted)s 8347(as)s 8616(soon)s 0 4439(as)m 250(we)s 585(can)s 974(pro)s 3(v)k 3(e)k 1570(that)s 1988(it)s 2180(is)s 2390(not)s 2757(w)s 2(anted.)k 3610(The)s 4038(symbol)s 4799(table)s 5319(can)s 5708(tell)s -6067(us)s 6332(that)s 6750(only)s 220 fnt5 7230 4436(@F)m 6(ootNote)k +6067(us)s 6332(that)s 6750(only)s 220 fnt6 7230 4436(@F)m 6(ootNote)k 240 fnt1 8402 4439(g)m 1(alle)k 3(ys)k 0 4151(\(with)m -220 fnt5 555 4148(@F)m 6(ootPlace&&f)k 6(ollo)k 3(wing)k +220 fnt6 555 4148(@F)m 6(ootPlace&&f)k 6(ollo)k 3(wing)k 240 fnt1 2935 4151(tar)m 4(gets\))k 3688(w)s 2(ant)k 4205(it,)s 4438(so)s 4697(it)s 4883(might)s 5494(be)s -5770(possible)s 6604(to)s 6836(deduce)s 7564(that)s 220 fnt5 +5770(possible)s 6604(to)s 6836(deduce)s 7564(that)s 220 fnt6 7975 4148(@F)m 6(ootSect)k 240 fnt1 0 3863(may)m 466(be)s 748(deleted)s 1496(as)s 1746(soon)s 2256(as)s 2506(body)s 3040(te)s 3(xt)k 3455(enters)s 4076(the)s 4424(follo)s 6(wing)k @@ -10826,13 +11060,13 @@ grestore 5925(requires)s 6741(the)s 7085(user)s 7538(to)s 7773(identify)s 8565(those)s 0 3201(g)m 1(alle)k 3(ys)k 715(which)s 1348(will)s 1764(carry)s 2299(the)s 2637(b)s 4(ulk)k -3111(of)s 3372(the)s 3711(document)s 4705(\()s 220 fnt5 -4778 3198(@Chapter)m 240 fnt1 5781 3201(,)m 220 fnt5 5879 3198(@Section)m -240 fnt1 6819 3201(,)m 220 fnt5 6916 3198(@BodyT)m 26(e)k 6(xt)k -240 fnt1 8030 3201(\))m 8149(as)s 240 fnt3 8389 3203(for)m 8(cing)k +3111(of)s 3372(the)s 3711(document)s 4705(\()s 220 fnt6 +4778 3198(@Chapter)m 240 fnt1 5781 3201(,)m 220 fnt6 5879 3198(@Section)m +240 fnt1 6819 3201(,)m 220 fnt6 6916 3198(@BodyT)m 26(e)k 6(xt)k +240 fnt1 8030 3201(\))m 8149(as)s 240 fnt4 8389 3203(for)m 8(cing)k 0 2915(galle)m 7(ys)k 240 fnt1 665 2913(,)m 792(by)s -1107(writing)s 220 fnt5 1871 2910(f)m 6(orce into)k 240 fnt1 -2841 2913(instead)m 3596(of)s 220 fnt5 3888 2910(into)m 240 fnt1 +1107(writing)s 220 fnt6 1871 2910(f)m 6(orce into)k 240 fnt1 +2841 2913(instead)m 3596(of)s 220 fnt6 3888 2910(into)m 240 fnt1 4315 2913(in)m 4579(their)s 5097(de\207nitions.)s 6291(As)s 6629(described)s 7624(in)s 7888(the)s 8257(pre)s 6(vious)k 0 2625(section,)m 790(when)s 1373(a)s 1546(forcing)s 2296(g)s 1(alle)k 3(y)k @@ -10844,7 +11078,7 @@ grestore 4614(to)s 4855(\210ushing.)s 5793(F)s 3(or)k 6184(e)s 3(xample,)k 7100(when)s 7678(a)s 7846(forcing)s 8592(body)s 0 2049(te)m 3(xt)k 421(g)s 1(alle)k 3(y)k 1062(enters)s 1690(a)s -1863(ne)s 6(w)k 2317(page,)s 2882(the)s 220 fnt5 +1863(ne)s 6(w)k 2317(page,)s 2882(the)s 220 fnt6 3237 2046(@F)m 6(ootSect)k 240 fnt1 4395 2049(symbol)m 5162(on)s 5466(the)s 5820(preceding)s 6823(page)s 7338(will)s 7771(be)s 8060(deleted.)s 8921(It)s 0 1761(seems)m 629(lik)s 2(ely)k @@ -10858,13 +11092,13 @@ grestore 2607(are)s 2953(a)s 3118(long)s 3597(w)s 2(ay)k 4047(from)s 4570(their)s 5066(in)s 9(v)k 4(ocation)k 6119(points)s 6755(can)s 7143(be)s 7424(a)s 7589(problem.)s -8549(If)s 8778(the)s 0 811(direction)m 917(is)s 220 fnt5 +8549(If)s 8778(the)s 0 811(direction)m 917(is)s 220 fnt6 1139 808(f)m 6(ollo)k 3(wing)k 240 fnt1 1969 811(,)m 2087(such)s 2595(g)s 1(alle)k 3(ys)k 3330(are)s 3689(held)s 4170(in)s 4425(internal)s 5221(memory)s 6083(for)s 6433(a)s 6610(long)s 7101(time,)s 7643(unless)s 8304(the)s 3(y)k 8779(are)s 0 523(to)m 248(be)s 539(sorted.)s 1296(If)s -1535(the)s 1892(direction)s 2807(is)s 220 fnt5 3026 520(preceding)m +1535(the)s 1892(direction)s 2807(is)s 220 fnt6 3026 520(preceding)m 240 fnt1 3977 523(,)m 4093(then)s 4571(either)s 5183(the)s 5540(entire)s 6148(interv)s 3(ening)k 7296(document)s 8309(must)s 8844(be)s @@ -10889,9 +11123,18 @@ showpage %%+ font Times-Italic %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def +%%IncludeResource: font Times-Bold +/Times-Boldfnt2 vec2 /Times-Bold LoutRecode +/fnt2 { /Times-Boldfnt2 LoutFont } def +%%IncludeResource: font Times-Italic +/Times-Italicfnt4 vec2 /Times-Italic LoutRecode +/fnt4 { /Times-Italicfnt4 LoutFont } def %%IncludeResource: font Helvetica -/Helveticafnt5 vec2 /Helvetica LoutRecode -/fnt5 { /Helveticafnt5 LoutFont } def +/Helveticafnt6 vec2 /Helvetica LoutRecode +/fnt6 { /Helveticafnt6 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -10947,7 +11190,7 @@ grestore 5946(dif)s 6(fer)k 6552(only)s 7055(in)s 7321(direction:)s 8359(v)s 3(ertical)k 0 9449(for)m 343(body)s 883(te)s 3(xt,)k 1351(horizontal)s 2381(for)s 2724(paragraphs.)s 3943(In)s 4205(this)s -4607(section)s 5347(we)s 5687(de\207ne)s 240 fnt3 6334 9451(horizontal)m +4607(section)s 5347(we)s 5687(de\207ne)s 240 fnt4 6334 9451(horizontal)m 7384(galle)s 7(ys)k 240 fnt1 8049 9449(,)m 8162(and)s 8572(sho)s 6(w)k 0 9161(ho)m 6(w)k 493(the)s 3(y)k 989(pro)s 3(vide)k 1806(an)s 2122(unlimited)s 3129(number)s @@ -10961,16 +11204,16 @@ grestore 4085(are)s 4450(separated)s 5428(by)s 5740(horizontal)s 6782(concatenation)s 8186(operators)s 0 7923(instead)m 725(of)s 986(v)s 3(ertical)k 1742(ones,)s 2278(perhaps)s 3062(indicated)s 3986(by)s 4269(a)s -220 fnt5 4425 7920(hor)m -3(iz)k 3(ontally)k 5582(into)s +220 fnt6 4425 7920(hor)m -3(iz)k 3(ontally)k 5582(into)s 240 fnt1 5977 7923(clause.)m 6728(Then)s 7266(all)s 7549(object)s 8182(breaking,)s 0 7635(including)m 957(paragraph)s 1970(breaking,)s 2914(could)s 3504(be)s 3786(replaced)s 4653(by)s 4947(g)s 1(alle)k 3(y)k 5581(component)s 6705(promotion)s 7759(lik)s 2(e)k 8171(this:)s -220 fnt5 480 7134(def @P)m 8(ar)k 2(ag)k 2(r)k 2(aph r)k -3(ight x)k +220 fnt6 480 7134(def @P)m 8(ar)k 2(ag)k 2(r)k 2(aph r)k -3(ight x)k 480 6846({)m 480 6558( def @LinePlace { @Galle)m 4(y })k 480 5982( def @LineList)m 480 5694( {)m 480 5406( @HExpand @LinePlace)m 480 5118( //1vx @LineList)m 480 4830( })m 480 4254( def @P)m 8(ar hor)k -3(iz)k 3(ontally into { @LinePlace&&preceding })k 480 3966( r)m -3(ight x)k 480 3678( { x })m 480 3102( @LineList // @P)m 8(ar { 0.2i @Wide {} &0i x &1r)k -8(t })k -480 2814(})m 240 fnt1 0 2320(The)m 220 fnt5 431 2317(@HExpand)m +480 2814(})m 240 fnt1 0 2320(The)m 220 fnt6 431 2317(@HExpand)m 240 fnt1 1607 2320(operator)m 9(,)k 2504(which)s 3149(is)s 3362(a)s 3531(primiti)s 6(v)k 3(e)k 4456(of)s 4730(Basser)s 5430(Lout,)s 5992(horizontally)s 7204(e)s 3(xpands)k @@ -10980,10 +11223,10 @@ grestore 5028(space,)s 5681(thus)s 6145(implementing)s 7541(line)s 7970(adjustment,)s 0 1744(e)m 3(xcept)k 689(when)s 1274(the)s 1631(parameter)s 2654(contains)s 3511(tab)s 4(ulation)k 4529(g)s 1(aps)k -5027(lik)s 2(e)k 220 fnt5 5447 1741(&1r)m -8(t)k +5027(lik)s 2(e)k 220 fnt6 5447 1741(&1r)m -8(t)k 240 fnt1 5853 1744(,)m 5969(which)s 6620(cause)s 7216(the)s 7573(parameter)s 8596(to)s 8844(be)s 0 1456(already)m 757(e)s 3(xpanded.)k -1836(The)s 2264(result)s 2854(of)s 220 fnt5 480 955(@P)m 8(ar)k 2(ag)k 2(r)k 2(aph { A shor)k -8(t par)k 2(ag)k 2(r)k 2(aph of te)k 6(xt.)k 13( })k +1836(The)s 2264(result)s 2854(of)s 220 fnt6 480 955(@P)m 8(ar)k 2(ag)k 2(r)k 2(aph { A shor)k -8(t par)k 2(ag)k 2(r)k 2(aph of te)k 6(xt.)k 13( })k 240 fnt1 0 456(w)m 2(ould)k 655(then)s 1124(be)s 1406(something)s 2456(lik)s 2(e)k grestore @@ -11006,9 +11249,15 @@ showpage %%+ font Helvetica %%+ font Times-Italic /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Helvetica -/Helveticafnt5 vec2 /Helvetica LoutRecode -/fnt5 { /Helveticafnt5 LoutFont } def +/Helveticafnt6 vec2 /Helvetica LoutRecode +/fnt6 { /Helveticafnt6 LoutFont } def +%%IncludeResource: font Times-Italic +/Times-Italicfnt4 vec2 /Times-Italic LoutRecode +/fnt4 { /Times-Italicfnt4 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -11034,7 +11283,7 @@ grestore 2081(indented)s 2992(paragraphs)s 4122(are)s 4499(produced)s 5477(by)s 5801(preceding)s 6827(them)s 7394(with)s 7906(a)s 8102(horizontal)s 0 11562(concatenation)m 1380(operator)s 9(,)k 2269(for)s 2602(e)s 3(xample)k -220 fnt5 3459 11559(|0.5i)m 240 fnt1 3855 11562(.)m 4014(This)s +220 fnt6 3459 11559(|0.5i)m 240 fnt1 3855 11562(.)m 4014(This)s 4485(has)s 4849(the)s 5192(unfortunate)s 6345(ef)s 6(fect)k 6935(of)s 7201(making)s 7967(an)s 8244(indented)s 0 11274(paragraph)m 1007(into)s 1426(a)s 1586(single)s 2207(component)s 3325(of)s @@ -11043,8 +11292,8 @@ grestore 7544(be)s 7820(k)s 2(ept)k 8283(together)s 0 10986(on)m 297(one)s 699(page.)s 1315(Horizontal)s 2392(g)s 1(alle)k 3(ys)k 3116(solv)s 3(e)k 3674(this)s 4070(problem)s 4927(with)s -5409(a)s 5575(simple)s 6268(change)s 7002(to)s 220 fnt5 -7241 10983(@LineList)m 240 fnt1 8215 10986(:)m 220 fnt5 480 10485(def @LineList)m +5409(a)s 5575(simple)s 6268(change)s 7002(to)s 220 fnt6 +7241 10983(@LineList)m 240 fnt1 8215 10986(:)m 220 fnt6 480 10485(def @LineList)m 480 10197({)m 480 9909( |0.5i @HExpand @LinePlace)m 480 9621( //1vx @LineList)m 480 9333(})m 240 fnt1 0 8839(sho)m 6(wing)k 860(the)s 1210(\210e)s 3(xibility)k 2192(that)s 2611(comes)s 3275(from)s 3801(bringing)s 4666(the)s @@ -11071,9 +11320,9 @@ grestore 240 fnt1 559 6743(See)m 987(Jones)s 1597(and)s 2028(Saunders)s 2983(\(1982\).)s 200 fnt1 3932 6838(2)m 240 fnt1 4027 6743(Or)m 4366(so)s 4659(Jacobsen)s 480 6443(\(1973\))m 1167(asserts.)s 200 fnt1 -2087 6538(3)m 240 fnt3 2174 6445(ibid)m 240 fnt1 2552 6443(,)m +2087 6538(3)m 240 fnt4 2174 6445(ibid)m 240 fnt1 2552 6443(,)m 2659(p.)s 2883(327.)s 0 5940(based)m 603(on)s 900(an)s -1183(in\207nite)s 1916(horizontal)s 2940(sequence)s 3873(of)s 220 fnt5 +1183(in\207nite)s 1916(horizontal)s 2940(sequence)s 3873(of)s 220 fnt6 4144 5937(@F)m 6(ootPlace)k 240 fnt1 5400 5940(symbols)m 6249(inside)s 6876(a)s 7042(horizontal)s 8066(g)s 1(alle)k 3(y)k 15(.)k 480 5566(When)m 1133(body)s 1692(te)s 3(xt)k 2132(is)s @@ -11102,7 +11351,7 @@ grestore 4343(horizontal)s 5407(g)s 1(alle)k 3(ys.)k 6284(First,)s 6867(the)s 7255(syntactic)s 8197(o)s 3(v)k 3(erhead)k 0 2802(of)m 319(enclosing)s 1337(each)s 1880(paragraph)s 2941(in)s -220 fnt5 3233 2799(@P)m 8(ar)k 2(ag)k 2(r)k 2(aph { ...)k 13( })k +220 fnt6 3233 2799(@P)m 8(ar)k 2(ag)k 2(r)k 2(aph { ...)k 13( })k 240 fnt1 5064 2802(or)m 5371(whate)s 6(v)k 3(er)k 6346(is)s 6604(unacceptable.)s 8065(Permitting)s 0 2514(user)m 4(-de\207ned)k 1234(operators)s 2172(to)s 2409(ha)s 4(v)k 3(e)k @@ -11125,8 +11374,8 @@ grestore 6372(v)s 3(ertical)k 7143(g)s 1(alle)k 3(ys)k 7871(occurs)s 8550(when)s 0 1074(tw)m 2(o)k 416(recepti)s 6(v)k 3(e)k 1345(symbols)s 2201(compete)s 3074(for)s 3419(v)s 3(ertical)k -4193(space)s 4786(\(e.g.)s 220 fnt5 5262 1071(@T)m 26(e)k 6(xtPlace)k -240 fnt1 6487 1074(and)m 220 fnt5 6898 1071(@F)m 6(ootSect)k +4193(space)s 4786(\(e.g.)s 220 fnt6 5262 1071(@T)m 26(e)k 6(xtPlace)k +240 fnt1 6487 1074(and)m 220 fnt6 6898 1071(@F)m 6(ootSect)k 240 fnt1 7989 1074(\),)m 8182(and)s 8593(there)s 0 786(it)m 187(is)s 392(con)s 9(v)k 3(entional)k 1666(to)s 1900(grant)s 2446(as)s 2691(much)s 3274(as)s 3519(required)s @@ -11156,9 +11405,18 @@ showpage %%+ font Helvetica %%+ font Times-Italic /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def +%%IncludeResource: font Times-Bold +/Times-Boldfnt2 vec2 /Times-Bold LoutRecode +/fnt2 { /Times-Boldfnt2 LoutFont } def %%IncludeResource: font Helvetica -/Helveticafnt5 vec2 /Helvetica LoutRecode -/fnt5 { /Helveticafnt5 LoutFont } def +/Helveticafnt6 vec2 /Helvetica LoutRecode +/fnt6 { /Helveticafnt6 LoutFont } def +%%IncludeResource: font Times-Italic +/Times-Italicfnt4 vec2 /Times-Italic LoutRecode +/fnt4 { /Times-Italicfnt4 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -11210,17 +11468,17 @@ grestore 7069(with)s 7551(the)s 7899(database)s 8779(ap)s 8998(-)s 0 8482(plication,)m 943(since)s 1490(it)s 1682(is)s 1892(the)s 2240(simplest.)s 3200(Database)s 4132(relations)s 5005(are)s 5352(naturally)s -6255(mapped)s 7071(into)s 7496(Lout)s 8008(de\207nitions:)s 220 fnt5 +6255(mapped)s 7071(into)s 7496(Lout)s 8008(de\207nitions:)s 220 fnt6 480 7981(def @Ref)m 6(erence)k 480 7693( named @T)m 26(ag {})k 480 7405( named @A)m 6(uthor {})k 480 7117( named @Title {})m 480 6829( named @Jour)m -5(nal {})k 480 6541({})m 240 fnt1 0 6047(The)m 434(set)s 766(of)s 1043(all)s 1343(in)s 9(v)k 4(ocations)k -2490(of)s 220 fnt5 2768 6044(@Ref)m 6(erence)k 240 fnt1 +2490(of)s 220 fnt6 2768 6044(@Ref)m 6(erence)k 240 fnt1 4055 6047(is)m 4272(a)s 4444(relation)s 5237(whose)s 5911(attrib)s 4(utes)k 6853(are)s 7206(the)s 7561(parameters,)s 8722(and)s 0 5759(whose)m 659(tuples)s 1271(are)s 1608(the)s 1946(in)s 9(v)k 4(ocations.)k 3191(T)s 19(o)k 3481(complete)s 4403(the)s 4741(correspondence,)s 6339(we)s 6665(need)s 7165(only)s 7635(declare)s 8370(that)s -8778(the)s 220 fnt5 0 5468(@T)m 26(ag)k 240 fnt1 +8778(the)s 220 fnt6 0 5468(@T)m 26(ag)k 240 fnt1 623 5471(parameter)m 1637(is)s 1847(special,)s 2617(serving)s 3374(as)s 3624(the)s 3972(k)s 2(e)k 3(y)k 4367(attrib)s 4(ute.)k 480 5097(F)m 3(ollo)k 6(wing)k 1508(the)s 1856(database)s @@ -11228,14 +11486,14 @@ grestore 4755(a)s 4921(notation)s 5762(for)s 6100(retrie)s 6(ving)k 7075(the)s 7423(in)s 9(v)k 4(ocation)k 8477(with)s 8960(a)s 0 4809(gi)m 6(v)k 3(en)k 580(tag:)s -220 fnt5 480 4308(@Ref)m 6(erence&&kingston91)k 240 fnt1 0 3809(This)m -240 fnt3 534 3811(cr)m 10(oss)k 1143(r)s 8(efer)k 8(ence)k +220 fnt6 480 4308(@Ref)m 6(erence&&kingston91)k 240 fnt1 0 3809(This)m +240 fnt4 534 3811(cr)m 10(oss)k 1143(r)s 8(efer)k 8(ence)k 240 fnt1 2141 3809(is)m 2410(lik)s 2(e)k 2881(an)s 3223(arro)s 6(w)k 3887(pointing)s 4796(to)s 5094(the)s 5501(in)s 9(v)k 4(ocation.)k 6721(T)s 19(o)k 7080(access)s 7800(its)s 8135(attrib)s 4(utes,)k 0 3521(we)m -335(write)s 220 fnt5 480 3069(@Ref)m 6(erence&&kingston91 @Open { @A)k 6(uthor)k 11(, @Title })k -240 fnt1 0 2570(The)m 220 fnt5 484 2567(@Open)m 240 fnt1 +335(write)s 220 fnt6 480 3069(@Ref)m 6(erence&&kingston91 @Open { @A)k 6(uthor)k 11(, @Title })k +240 fnt1 0 2570(The)m 220 fnt6 484 2567(@Open)m 240 fnt1 1347 2570(operator)m 2260(e)s 6(v)k 6(aluates)k 3245(its)s 3578(right)s 4146(parameter)s 5217(in)s 5517(an)s 5857(en)s 9(vironment)k 7174(which)s 7873(includes)s 8778(the)s 0 2282(e)m 3(xported)k @@ -11247,13 +11505,13 @@ grestore 465(used,)s 1043(rather)s 1691(than)s 2192(by)s 2517(its)s 2825(tag.)s 3313(Such)s 3881(proximity)s 4910(is)s 5151(naturally)s 6086(e)s 3(xpressed)k 7116(by)s 7442(tw)s 2(o)k -7884(special)s 8634(tags,)s 220 fnt5 0 1329(preceding)m 240 fnt1 -1049 1332(and)m 220 fnt5 1491 1329(f)m 6(ollo)k 3(wing)k +7884(special)s 8634(tags,)s 220 fnt6 0 1329(preceding)m 240 fnt1 +1049 1332(and)m 220 fnt6 1491 1329(f)m 6(ollo)k 3(wing)k 240 fnt1 2321 1332(;)m 2471(for)s 2848(e)s 3(xample,)k -220 fnt5 3800 1329(@Sym&&f)m 6(ollo)k 3(wing)k 240 fnt1 +220 fnt6 3800 1329(@Sym&&f)m 6(ollo)k 3(wing)k 240 fnt1 5682 1332(will)m 6146(point)s 6737(to)s 7014(the)s 7400(closest)s 8149(follo)s 6(wing)k 0 1044(in)m 9(v)k 4(ocation)k -1083(of)s 220 fnt5 1383 1041(@Sym)m 240 fnt1 2121 1044(in)m +1083(of)s 220 fnt6 1383 1041(@Sym)m 240 fnt1 2121 1044(in)m 2393(the)s 2771(\207nal)s 3280(printed)s 4045(document.)s 5182(This)s 5688(is)s 5927(much)s 6546(simpler)s 7351(conceptually)s 8657(than)s 0 756(reference)m 937(to)s 1169(the)s 1511(internal)s 2288(state)s @@ -11284,9 +11542,15 @@ showpage %%+ font Helvetica %%+ font Times-Bold /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Helvetica -/Helveticafnt5 vec2 /Helvetica LoutRecode -/fnt5 { /Helveticafnt5 LoutFont } def +/Helveticafnt6 vec2 /Helvetica LoutRecode +/fnt6 { /Helveticafnt6 LoutFont } def +%%IncludeResource: font Times-Bold +/Times-Boldfnt2 vec2 /Times-Bold LoutRecode +/fnt2 { /Times-Boldfnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -11306,70 +11570,70 @@ grestore 4226(by)s 4535(the)s 4897(problem)s 5769(of)s 6054(\207nding)s 6801(the)s 7164(number)s 7969(of)s 8255(the)s 8618(page)s 0 12963(on)m 303(which)s 952(the)s 1306(chapter)s 2076(whose)s -2750(tag)s 3102(is)s 220 fnt5 3318 12960(intro)m 240 fnt1 +2750(tag)s 3102(is)s 220 fnt6 3318 12960(intro)m 240 fnt1 3804 12963(be)m 3(gins.)k 4596(T)s 19(w)k 2(o)k 5074(cross)s 5622(referencing)s 6769(steps)s 7304(are)s 7658(needed,)s -8449(\207rst)s 8887(to)s 220 fnt5 0 12672(@Chapter&&intro)m 240 fnt1 +8449(\207rst)s 8887(to)s 220 fnt6 0 12672(@Chapter&&intro)m 240 fnt1 1714 12675(,)m 1821(then)s 2290(from)s 2814(there)s 3347(to)s -220 fnt5 3586 12672(@P)m 8(age&&preceding)k 240 fnt1 5556 12675(,)m +220 fnt6 3586 12672(@P)m 8(age&&preceding)k 240 fnt1 5556 12675(,)m 5663(where)s 6303(the)s 6651(page)s 7159(number)s 7950(is)s 8160(kno)s 6(wn.)k 480 12301(Gi)m 6(v)k 3(en)k 1113(our)s 1492(success)s 2260(so)s 2526(f)s 2(ar)k 9(,)k 2886(this)s 3282(last)s 3673(problem)s 4530(pro)s 3(v)k 3(es)k 5213(to)s 5452(be)s 5734(surprisingly)s 6930(dif\207cult.)s 7850(W)s 19(e)k -8219(\207rst)s 8650(try)s 220 fnt5 480 11800(@Chapter&&intro @Open {)m 480 11512( @P)m 8(age&&preceding @Open { @P)k 8(ageNum })k +8219(\207rst)s 8650(try)s 220 fnt6 480 11800(@Chapter&&intro @Open {)m 480 11512( @P)m 8(age&&preceding @Open { @P)k 8(ageNum })k 480 11224(})m 240 fnt1 0 10730(b)m 4(ut)k 363(this)s -761(f)s 2(ails)k 1222(because)s 220 fnt5 2037 10727(@P)m 8(age&&preceding)k +761(f)s 2(ails)k 1222(because)s 220 fnt6 2037 10727(@P)m 8(age&&preceding)k 240 fnt1 4069 10730(is)m 4281(e)s 6(v)k 6(aluated)k 5245(in)s 5490(the)s 5840(present)s 6592(conte)s 3(xt,)k 7402(not)s 7770(in)s 8015(the)s 8365(conte)s 3(xt)k -0 10442(of)m 220 fnt5 271 10439(@Chapter&&intro)m 240 fnt1 2045 10442(as)m +0 10442(of)m 220 fnt6 271 10439(@Chapter&&intro)m 240 fnt1 2045 10442(as)m 2295(required.)s 3255(So)s 3561(our)s 3940(ne)s 3(xt)k -4409(attempt)s 5185(is)s 220 fnt5 480 9941(def @Chapter)m 480 9653( named @P)m 8(ageNum { @P)k 8(age&&preceding @Open { @P)k 8(ageNum } })k -480 9365( ...)m 240 fnt1 0 8914(with)m 482(the)s 220 fnt5 +4409(attempt)s 5185(is)s 220 fnt6 480 9941(def @Chapter)m 480 9653( named @P)m 8(ageNum { @P)k 8(age&&preceding @Open { @P)k 8(ageNum } })k +480 9365( ...)m 240 fnt1 0 8914(with)m 482(the)s 220 fnt6 830 8911(@P)m 8(age&&preceding)k 240 fnt1 2860 8914(cross)m 3402(reference)s 4345(attached)s 5199(to)s 5438(the)s 5786(chapter;)s 6601(we)s -6936(write)s 220 fnt5 480 8413(@Chapter&&intro @Open { @P)m 8(ageNum })k 240 fnt1 +6936(write)s 220 fnt6 480 8413(@Chapter&&intro @Open { @P)m 8(ageNum })k 240 fnt1 0 7914(This)m 604(also)s 1170(f)s 2(ails,)k 1813(because)s 2754(parameters)s 3980(are)s 4456(e)s 6(v)k 6(aluated)k 5546(after)s 6170(substitution,)s 7521(so)s 7915(once)s 8552(ag)s 1(ain)k -220 fnt5 0 7623(@P)m 8(age&&preceding)k 240 fnt1 2015 7626(is)m +220 fnt6 0 7623(@P)m 8(age&&preceding)k 240 fnt1 2015 7626(is)m 2209(e)s 6(v)k 6(aluated)k 3156(in)s 3383(the)s 3716(wrong)s 4365(conte)s 3(xt.)k 5215(W)s 19(e)k 5568(could)s 6143(of)s 6398(course)s 7063(de\207ne)s 7688(a)s 7839(ne)s 6(w)k 8270(operator)s 0 7338(speci\207cally)m 1142(for)s -1480(this)s 1876(case:)s 220 fnt5 480 6837(@P)m 8(age&&{ @Preceding @Chapter&&intro })k +1480(this)s 1876(case:)s 220 fnt6 480 6837(@P)m 8(age&&{ @Preceding @Chapter&&intro })k 240 fnt1 0 6338(or)m 267(some)s 836(such.)s 1448(This)s 1932(is)s 2151(free)s 2585(of)s 2864(the)s 3221(anno)s 2(ying)k 4172(conte)s 3(xt-sensiti)k 6(vity)k 15(,)k 6029(b)s 4(ut)k 6399(it)s 6599(seems)s 7243(quite)s 7785(comple)s 3(x,)k 8722(and)s 0 6050(the)m 348(e)s 3(xpected)k 1253(cross)s -1795(reference)s 220 fnt5 2738 6047(@P)m 8(age&&preceding)k 240 fnt1 +1795(reference)s 220 fnt6 2738 6047(@P)m 8(age&&preceding)k 240 fnt1 4768 6050(does)m 5258(not)s 5624(appear)s 13(.)k 480 5676(The)m 939(author)s 1642(w)s 2(as)k 2095(lost)s 2532(in)s 2806(these)s 3385(obscurities)s 4503(for)s 4873(some)s 5465(time,)s 6028(and)s 6464(ultimately)s 7518(rescued)s 8338(himself)s 0 5388(by)m 306(looking)s 1103(ahead)s 1731(to)s 1982(the)s 2342(implementation)s -3912(of)s 4195(the)s 220 fnt5 4555 5385(preceding)m 240 fnt1 -5578 5388(and)m 220 fnt5 5994 5385(f)m 6(ollo)k 3(wing)k +3912(of)s 4195(the)s 220 fnt6 4555 5385(preceding)m 240 fnt1 +5578 5388(and)m 220 fnt6 5994 5385(f)m 6(ollo)k 3(wing)k 240 fnt1 6897 5388(tags,)m 7401(to)s 7652(see)s 8025(if)s 8254(a)s 8433(simple)s 0 5100(e)m 3(xtension)k 971(of)s 1242(it)s 1434(w)s 2(ould)k 2089(solv)s 3(e)k 2647(the)s 2995(problem.)s 3956(This)s 4432(led)s 4782(to)s -5021(the)s 220 fnt5 5369 5097(@T)m 26(agged)k 240 fnt1 -6358 5100(operator:)m 220 fnt5 480 4599(@P)m 8(age&&preceding @T)k 26(agged intro)k +5021(the)s 220 fnt6 5369 5097(@T)m 26(agged)k 240 fnt1 +6358 5100(operator:)m 220 fnt6 480 4599(@P)m 8(age&&preceding @T)k 26(agged intro)k 240 fnt1 0 4100(placed)m 686(at)s 922(the)s 1274(be)s 3(ginning)k 2286(of)s 2562(the)s 2914(body)s 3452(of)s 3727(the)s -4079(chapter)s 4847(will)s 5277(attach)s 220 fnt5 5908 4097(intro)m +4079(chapter)s 4847(will)s 5277(attach)s 220 fnt6 5908 4097(intro)m 240 fnt1 6391 4100(as)m 6645(an)s 6933(e)s 3(xtra)k 7471(tag)s 7820(to)s 8063(the)s 8416(closest)s 0 3812(preceding)m -996(in)s 9(v)k 4(ocation)k 2050(of)s 220 fnt5 +996(in)s 9(v)k 4(ocation)k 2050(of)s 220 fnt6 2321 3809(@P)m 8(age)k 240 fnt1 3040 3812(,)m 3147(so)s -3413(that)s 220 fnt5 480 3311(@P)m 8(age&&intro @Open { @P)k 8(ageNum })k +3413(that)s 220 fnt6 480 3311(@P)m 8(age&&intro @Open { @P)k 8(ageNum })k 240 fnt1 0 2812(yields)m 635(the)s 996(desired)s 1758(page)s 2279(number)s 13(.)k 3174(There)s 3801(is)s 4024(something)s 5087(lo)s 6(w-le)k 6(v)k 3(el)k 6043(and)s -6460(ad)s 6757(hoc)s 7170(about)s 7775(the)s 220 fnt5 +6460(ad)s 6757(hoc)s 7170(about)s 7775(the)s 220 fnt6 8137 2809(@T)m 26(agged)k 240 fnt1 0 2524(operator)m 9(,)k 894(b)s 4(ut)k 1256(the)s 1604(tw)s 2(o)k 2014(cross)s 2556(references)s 3587(do)s 3880(appear)s 4577(naturally)s 15(,)k @@ -11416,9 +11680,15 @@ showpage %%+ font Times-Italic %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def +%%IncludeResource: font Times-Italic +/Times-Italicfnt4 vec2 /Times-Italic LoutRecode +/fnt4 { /Times-Italicfnt4 LoutFont } def %%IncludeResource: font Helvetica -/Helveticafnt5 vec2 /Helvetica LoutRecode -/fnt5 { /Helveticafnt5 LoutFont } def +/Helveticafnt6 vec2 /Helvetica LoutRecode +/fnt6 { /Helveticafnt6 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -11463,15 +11733,15 @@ grestore 4745(in)s 4988(k)s 2(e)k 3(y)k 5383(order)s 13(.)k 480 10777(The)m 905(implementation,)s 2509(which)s 3148(is)s 3354(quite)s 3885(unsophisticated,)s 5477(emplo)s 2(ys)k 6334(one)s 6732(or)s -6988(more)s 7532(ASCII)s 240 fnt3 8208 10779(database)m 0 10491(\207les)m +6988(more)s 7532(ASCII)s 240 fnt4 8208 10779(database)m 0 10491(\207les)m 240 fnt1 380 10489(,)m 485(containing)s 1545(the)s 1891(v)s 6(alues,)k -2600(and)s 3001(one)s 3401(ASCII)s 240 fnt3 4078 10491(inde)m 4(x)k +2600(and)s 3001(one)s 3401(ASCII)s 240 fnt4 4078 10491(inde)m 4(x)k 4650(\207le)s 240 fnt1 4992 10489(per)m 5354(database,)s 6282(containing)s 7342(the)s 7688(k)s 2(e)k 3(ys.)k 8283(T)s 19(o)k 8580(write)s 0 10201(an)m 283(entry)s 15(,)k 866(the)s 1214(v)s 6(alue)k 1782(is)s 1992(\207rst)s 2423(appended)s 3399(to)s 3638(a)s 3804(database)s 4683(\207le,)s 5095(then)s -5564(a)s 5730(line)s 6144(lik)s 2(e)k 220 fnt5 +5564(a)s 5730(line)s 6144(lik)s 2(e)k 220 fnt6 480 9700(@Chapter&&intro ch1.ld 57)m 240 fnt1 0 9204(is)m 204(appended)s 1174(to)s 1406(the)s 1748(inde)s 3(x)k 2326(\207le,)s 2731(gi)s 6(ving)k 3384(the)s 3725(\207le)s 4080(and)s 4478(of)s 6(fset)k @@ -11496,8 +11766,8 @@ grestore 1935(it)s 2130(cannot)s 2831(\207nd)s 3265(one,)s 3721(and)s 4128(retrie)s 6(v)k 6(als)k 5057(by)s 5354(k)s 2(e)k 3(y)k 5752(proceed)s 6570(as)s 6823(usual.)s 7495(Cross)s 8095(references)s -0 7390(with)m 476(tags)s 906(other)s 1451(than)s 220 fnt5 -1913 7387(preceding)m 240 fnt1 2918 7390(and)m 220 fnt5 3316 7387(f)m 6(ollo)k 3(wing)k +0 7390(with)m 476(tags)s 906(other)s 1451(than)s 220 fnt6 +1913 7387(preceding)m 240 fnt1 2918 7390(and)m 220 fnt6 3316 7387(f)m 6(ollo)k 3(wing)k 240 fnt1 4200 7390(are)m 4540(treated)s 5241(as)s 5485(described)s 6453(abo)s 3(v)k 3(e,)k 7119(by)s 7407(writing)s 8144(all)s 8430(tagged)s 0 7102(in)m 9(v)k 4(ocations)k @@ -11541,20 +11811,20 @@ grestore 3914(for)s 4254(piecemeal)s 5278(formatting,)s 6395(b)s 4(ut)k 6758(e)s 6(v)k 3(entually)k 7801(the)s 8150(\207les)s 8601(must)s 0 4136(all)m 293(be)s 575(formatted)s 1561(together)s 13(.)k -480 3762(When)m 1120(a)s 220 fnt5 1297 3759(preceding)m 240 fnt1 -2319 3762(or)m 220 fnt5 2590 3759(f)m 6(ollo)k 3(wing)k +480 3762(When)m 1120(a)s 220 fnt6 1297 3759(preceding)m 240 fnt1 +2319 3762(or)m 220 fnt6 2590 3759(f)m 6(ollo)k 3(wing)k 240 fnt1 3491 3762(cross)m 4044(reference)s 4998(is)s 5220(found,)s 5897(it)s 6100(is)s 6321(attached)s 7187(to)s 7437(a)s 7614(g)s 1(alle)k 3(y)k 8259(inde)s 3(x)k -8855(of)s 0 3474(type)m 240 fnt3 474 3476(CR)m 9(OSS_PREC)k -240 fnt1 1973 3474(or)m 240 fnt3 2238 3476(CR)m 9(OSS_FOLL)k +8855(of)s 0 3474(type)m 240 fnt4 474 3476(CR)m 9(OSS_PREC)k +240 fnt1 1973 3474(or)m 240 fnt4 2238 3476(CR)m 9(OSS_FOLL)k 240 fnt1 3653 3474(,)m 3766(together)s 4615(with)s 5103(an)s 5392(automatically)s 6752(generated)s 7745(tag)s 8097(composed)s 0 3186(of)m 258(the)s 593(current)s 1316(\207le)s 1663(name)s 2224(and)s 2615(a)s 2767(sequence)s 3687(number)s 13(.)k 4556(When)s 5172(a)s 5324(tagged)s 6007(in)s 9(v)k 4(ocation)k 7048(is)s 7244(found,)s 7897(it)s 8076(is)s 8272(attached)s -0 2898(to)m 237(a)s 240 fnt3 401 2900(CR)m 9(OSS_T)k 12(ARG)k +0 2898(to)m 237(a)s 240 fnt4 401 2900(CR)m 9(OSS_T)k 12(ARG)k 240 fnt1 1875 2898(inde)m 3(x.)k 2565(These)s 3190(g)s 1(alle)k 3(y)k 3822(inde)s 3(x)k 3(es)k 4595(are)s 4940(carried)s 5658(along)s 6241(through)s 7040(the)s 7386(dynamic)s 8261(tree,)s @@ -11573,8 +11843,8 @@ grestore 8832(by)s 0 1746(the)m 344(generated)s 1327(tags)s 1758(of)s 2025(the)s 2369(associated)s 3404(cross)s 3942(references.)s 5082(On)s 5427(the)s 5771(ne)s 3(xt)k 6236(run,)s 6657(when)s -7229(the)s 7573(same)s 220 fnt5 8115 1743(preceding)m 240 fnt1 -0 1458(and)m 220 fnt5 408 1455(f)m 6(ollo)k 3(wing)k +7229(the)s 7573(same)s 220 fnt6 8115 1743(preceding)m 240 fnt1 +0 1458(and)m 220 fnt6 408 1455(f)m 6(ollo)k 3(wing)k 240 fnt1 1302 1458(cross)m 1848(references)s 2883(are)s 3234(found,)s 3904(chances)s 4716(are)s 5067(good)s 5609(that)s 6031(the)s 6383(same)s 6934(tags)s 7374(will)s 7804(be)s 8090(generated,)s @@ -11582,16 +11852,16 @@ grestore 2552(can)s 2941(be)s 3223(retrie)s 6(v)k 3(ed)k 4120(from)s 4644(the)s 4992(database)s 5871(immediately)s 15(.)k 480 796(This)m 982(approach)s 1942(w)s 2(as)k 2389(the)s -2763(genesis)s 3544(of)s 3842(the)s 220 fnt5 4216 793(@T)m 26(agged)k +2763(genesis)s 3544(of)s 3842(the)s 220 fnt6 4216 793(@T)m 26(agged)k 240 fnt1 5231 796(operator)m 9(,)k 6151(whose)s 6845(implementation)s 8428(is)s 8665(no)s 6(w)k 0 508(immediate:)m 1106(for)s -1436(each)s 220 fnt5 1923 505(@T)m 26(agged)k 240 fnt1 -2903 508(operator)m 3751(we)s 4078(produce)s 4897(one)s 240 fnt3 -5290 510(CR)m 9(OSS_PREC)k 240 fnt1 6775 508(or)m 240 fnt3 +1436(each)s 220 fnt6 1923 505(@T)m 26(agged)k 240 fnt1 +2903 508(operator)m 3751(we)s 4078(produce)s 4897(one)s 240 fnt4 +5290 510(CR)m 9(OSS_PREC)k 240 fnt1 6775 508(or)m 240 fnt4 7026 510(CR)m 9(OSS_FOLL)k 240 fnt1 8492 508(g)m 1(alle)k 3(y)k 0 220(inde)m 3(x,)k 645(replacing)s 1596(the)s 1953(generated)s 2949(tag)s 3304(with)s 3795(the)s 4152(right)s 4672(parameter)s -5696(of)s 5976(the)s 220 fnt5 6333 217(@T)m 26(agged)k +5696(of)s 5976(the)s 220 fnt6 6333 217(@T)m 26(agged)k 240 fnt1 7331 220(operator)m 13(.)k 8288(Nothing)s grestore 0 0 0 0 240 288 60 1417 -15423 LoutGr2 @@ -11613,6 +11883,15 @@ showpage %%+ font Times-Bold %%+ font Times-Italic /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def +%%IncludeResource: font Times-Bold +/Times-Boldfnt2 vec2 /Times-Bold LoutRecode +/fnt2 { /Times-Boldfnt2 LoutFont } def +%%IncludeResource: font Times-Italic +/Times-Italicfnt4 vec2 /Times-Italic LoutRecode +/fnt4 { /Times-Italicfnt4 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -11705,7 +11984,7 @@ grestore 6456(them)s 6978(back.)s 7579(Basser)s 8260(Lout)s 8756(has)s 0 5434(been)m 511(adv)s 3(ertised)k 1550(on)s 1849(the)s 2199(Internet)s 3003(ne)s 6(ws)k 3542(as)s 3794(a)s 4(v)k 6(ailable)k -4704(via)s 5058(anon)s 3(ymous)k 240 fnt3 6213 5436(ftp)m +4704(via)s 5058(anon)s 3(ymous)k 240 fnt4 6213 5436(ftp)m 240 fnt1 6458 5434(,)m 6567(so)s 6835(the)s 7185(e)s 3(xtent)k 7828(of)s 8101(its)s 8379(outside)s 0 5146(user)m 469(community)s 1624(is)s 1845(hard)s 2339(to)s 2589(g)s 1(auge.)k @@ -11776,6 +12055,15 @@ showpage %%+ font Times-Bold %%+ font Times-Italic /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def +%%IncludeResource: font Times-Bold +/Times-Boldfnt2 vec2 /Times-Bold LoutRecode +/fnt2 { /Times-Boldfnt2 LoutFont } def +%%IncludeResource: font Times-Italic +/Times-Italicfnt4 vec2 /Times-Italic LoutRecode +/fnt4 { /Times-Italicfnt4 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -11808,25 +12096,25 @@ grestore 5445(F)s 3(ormatter)k 6383(,)s 6516(1991)s 6971(.)s 7161(Computer)s 8204(program;)s 480 10637(V)m 26(ersion)k 1287(2)s 1480(publicly)s 2337(a)s 4(v)k 6(ailable)k 3264(in)s -3526(the)s 240 fnt3 3893 10639(pub)m 240 fnt1 4326 10637(subdirectory)m +3526(the)s 240 fnt4 3893 10639(pub)m 240 fnt1 4326 10637(subdirectory)m 5595(of)s 5885(the)s 6252(home)s 6859(directory)s 7794(of)s -240 fnt3 8084 10639(ftp)m 240 fnt1 8408 10637(to)m 8667(host)s -240 fnt3 480 10351(ftp.cs.su.oz.au)m 240 fnt1 1924 10349(with)m 2439(login)s -3021(name)s 240 fnt3 3628 10351(anonymous)m 240 fnt1 4808 10349(and)m +240 fnt4 8084 10639(ftp)m 240 fnt1 8408 10637(to)m 8667(host)s +240 fnt4 480 10351(ftp.cs.su.oz.au)m 240 fnt1 1924 10349(with)m 2439(login)s +3021(name)s 240 fnt4 3628 10351(anonymous)m 240 fnt1 4808 10349(and)m 5246(no)s 5572(passw)s 2(ord.)k 6671(Distrib)s 4(ution)k 7912(via)s 8297(email)s 8916(is)s 480 10061(a)m 4(v)k 6(ailable)k -1388(for)s 1726(non-)s 240 fnt3 2154 10063(ftp)m 240 fnt1 +1388(for)s 1726(non-)s 240 fnt4 2154 10063(ftp)m 240 fnt1 2459 10061(sites.)m 3047(All)s 3407(enquiries)s 4334(to)s 4573(jef)s 6(f@cs.su.oz.au.)k 0 9558(4.)m 480(Furuta,)s 1211(Richard,)s 2075(Sco\207eld,)s 2965(Jef)s 6(fre)k 3(y)k 15(,)k 3710(and)s 4113(Sha)s 3(w)k 15(,)k 4734(Alan.)s 5363(Document)s 6419(formatting)s 7480(systems:)s 8402(surv)s 3(e)k 3(y)k 15(,)k -480 9270(concepts,)m 1424(and)s 1828(issues)s 2390(.)s 240 fnt3 +480 9270(concepts,)m 1424(and)s 1828(issues)s 2390(.)s 240 fnt4 2554 9272(Computing)m 3673(Surve)s 7(ys)k 240 fnt2 4465 9269(14)m 240 fnt1 4699 9270(,)m 4806(417\211472)s 5700(\(1982\))s 6327(.)s 0 8765(5.)m 480(K)s 6(ernighan,)k 1645(Brian)s 2287(W)s 22(.)k 2649(and)s 3107(Cherry)s 15(,)k 3917(Lorinda)s 4789(L..)s 5213(A)s 5497(system)s 6275(for)s 6667(typesetting)s 7824(mathematics)s -9022(.)s 240 fnt3 480 8479(Communications)m 2158(of)s 2439(the)s +9022(.)s 240 fnt4 480 8479(Communications)m 2158(of)s 2439(the)s 2784(A)s 7(CM)k 240 fnt2 3351 8476(18)m 240 fnt1 3585 8477(,)m 3692(182\211193)s 4576(\(1975\))s 5203(.)s 0 7977(6.)m 480(Kingston,)s 1488(Jef)s 6(fre)k 3(y)k 2218(H..)s @@ -11839,12 +12127,12 @@ grestore 7939(.)s 0 7184(7.)m 480(Reid,)s 1042(Brian)s 1633(K..)s 2033(A)s 2266(High-)s 2813(Le)s 6(v)k 3(el)k 3406(Approach)s 4410(to)s 4652(Computer)s 5672(Document)s 6732(Production)s -7779(.)s 7946(In)s 240 fnt3 8205 7186(Pr)m 10(oceed)k -240 fnt1 8998 7184(-)m 240 fnt3 480 6898(ings)m 935(of)s +7779(.)s 7946(In)s 240 fnt4 8205 7186(Pr)m 10(oceed)k +240 fnt1 8998 7184(-)m 240 fnt4 480 6898(ings)m 935(of)s 1217(the)s 1564(7th)s 1926(Symposium)s 3074(on)s 3370(the)s 3716(Principles)s 4755(of)s 5037(Pr)s 10(o)k 2(gr)k 3(amming)k 6421(Langua)s 2(g)k 2(es)k 7526(\(POPL\),)s 8376(Las)s -8779(V)s 26(e)k 240 fnt1 8998 6896(-)m 240 fnt3 +8779(V)s 26(e)k 240 fnt1 8998 6896(-)m 240 fnt4 480 6610(gas)m 868(NV)s 240 fnt1 1192 6608(,)m 1299(pages)s 1895(24\21131)s 2470(,)s 2577(1980)s 3052(.)s 0 6103(8.)m 480(Joseph)s 1207(F)s 19(.)k 1443(Ossanna.)s 2436(Nrof)s 6(f/T)k 8(rof)k 6(f)k @@ -11852,7 +12140,7 @@ grestore 5777(Rep.)s 6285(54)s 6597(\(1976\))s 7224(,)s 7349(Bell)s 7821(Laboratories)s 9019(,)s 480 5815(Murray)m 1251(Hill,)s 1729(NJ)s 2051(07974)s 2645(.)s 0 5310(9.)m 480(Knuth,)s 1186(Donald)s -1949(E..)s 240 fnt3 2319 5312(The)m 2731(T)s 2882 5264(E)m +1949(E..)s 240 fnt4 2319 5312(The)m 2731(T)s 2882 5264(E)m 3033 5312(XBook)m 240 fnt1 3675 5310(.)m 3839(Addison-W)s 19(esle)k 3(y)k 5419(,)s 5526(1984)s 6000(.)s 0 4807(10.)m 480(Kingston,)s 1485(Jef)s 6(fre)k 3(y)k 2212(H..)s 2629(Eq)s @@ -11879,7 +12167,7 @@ grestore 5985(of)s 6256(Sydne)s 3(y)k 15(,)k 7064(Australia)s 7939(.)s 0 2146(13.)m 480(Brooks,)s 1279(K)s 6(enneth)k 2141(P)s 26(..)k 2472(Lilac:)s 3068(a)s 3234(tw)s 2(o-vie)k 6(w)k -4183(document)s 5187(editor)s 5744(.)s 240 fnt3 5908 2148(IEEE)m +4183(document)s 5187(editor)s 5744(.)s 240 fnt4 5908 2148(IEEE)m 6490(Computer)s 240 fnt1 7453 2146(,)m 7560(7\21119)s 8091(\(1991\))s 8718(.)s grestore @@ -11900,6 +12188,7 @@ showpage %%DocumentNeededResources: font Times-Roman %%+ font Times-Bold %%+ font Times-Italic +%%+ font Times-Italic %%+ font Symbol %%+ font Helvetica %%DocumentSuppliedResources: procset LoutStartUp diff --git a/doc/expert/README b/doc/expert/README index d34da52..43c611c 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 -11 May 2000 +3 June 2000 diff --git a/doc/expert/all b/doc/expert/all index 56befe0..7daf713 100644 --- a/doc/expert/all +++ b/doc/expert/all @@ -10,8 +10,8 @@ Lout Document Formatting System } @Author { Jeffrey H. Kingston } - @Edition { Version 3.21 -May, 2000 } + @Edition { Version 3.22 +June, 2000 } @Publisher { @I { @CopyRight Copyright 1991, 2000, Jeffrey H. Kingston, Basser Department of Computer Science, The University of Sydney 2006, Australia.} } diff --git a/doc/expert/exa b/doc/expert/exa index ade9d20..c4c385c 100644 --- a/doc/expert/exa +++ b/doc/expert/exa @@ -8,6 +8,9 @@ packages available with Basser Lout. The reader who masters these examples will be well prepared to read the packages themselves. The examples have not been simplified in any way, since an important part of their purpose is to show Lout in actual practice. +@PP +Although all these examples have been taken from real code, they do +not necessarily represent the current state of the Lout packages. @BeginSections @Include { exa_equa } @Include { exa_para } diff --git a/doc/expert/outfile.ps b/doc/expert/outfile.ps index 5039d1f..696568a 100644 --- a/doc/expert/outfile.ps +++ b/doc/expert/outfile.ps @@ -1,6 +1,6 @@ %!PS-Adobe-3.0 -%%Creator: Basser Lout Version 3.21 (May 2000) -%%CreationDate: Thu May 11 11:21:31 2000 +%%Creator: Basser Lout Version 3.22 (June 2000) +%%CreationDate: Sat Jun 3 13:06:09 2000 %%DocumentData: Binary %%DocumentNeededResources: (atend) %%DocumentSuppliedResources: (atend) @@ -1352,7 +1352,6 @@ end %%EndProlog %%BeginSetup -%%IncludeResource: font Times-Roman %%BeginResource: encoding vec2 /vec2 [ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef @@ -1390,6 +1389,16 @@ end ] def %%EndResource +%%EndSetup + +%%Page: i 1 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Helvetica +%%+ font Symbol +%%+ font Helvetica-Oblique +/pgsave save def +%%IncludeResource: font Times-Roman /Times-Romanfnt1 vec2 /Times-Roman LoutRecode /fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Helvetica @@ -1400,15 +1409,6 @@ end %%IncludeResource: font Helvetica-Oblique /Helvetica-Obliquefnt3 vec2 /Helvetica-Oblique LoutRecode /fnt3 { /Helvetica-Obliquefnt3 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 @@ -1427,8 +1427,8 @@ grestore 600 fnt2 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 fnt2 -3544 6059(Jeffre)m 4(y)k 4321(H.)s 4606(Kingston)s 3902 4395(V)m 19(ersion)k -4745(3.21)s 4004 4107(Ma)m 7(y)k 24(,)k 4537(2000)s +3544 6059(Jeffre)m 4(y)k 4321(H.)s 4606(Kingston)s 3884 4395(V)m 19(ersion)k +4727(3.22)s 3958 4107(J)m 4(une)k 3(,)k 4582(2000)s 240 fnt4 0 342(\343)m 240 fnt3 315 340(Cop)m 7(yr)k -3(ight)k 1493(1991,)s 2214(2000,)s 2935(Jeffre)s 4(y)k 3811(H.)s 4173(Kingston,)s 5293(Basser)s 6203(Depar)s -9(tment)k 7619(of)s @@ -1454,6 +1454,9 @@ showpage %%PageResources: font Times-Roman %%+ font Times-Bold /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt5 vec2 /Times-Bold LoutRecode /fnt5 { /Times-Boldfnt5 LoutFont } def @@ -1500,9 +1503,9 @@ grestore 3296(3)s 3450(of)s 3711(Basser)s 4397(Lout,)s 4946(publicly)s 5774(released)s 6604(in)s 6836(September)s 7908(1994)s 8432([3)s 8615(])s 8722(and)s 0 9043(de)m 6(v)k 3(eloped)k -1043(continuously)s 2344(since)s 2902(then.)s 3488(This)s 3975(manual)s -4744(w)s 2(as)k 5175(rendered)s 6080(into)s 6515(PostScript)s -7568(by)s 7872(V)s 26(ersion)k 8671(3.21)s 0 8755(of)m +1041(continuously)s 2341(since)s 2897(then.)s 3482(This)s 3967(manual)s +4735(w)s 2(as)k 5164(rendered)s 6067(into)s 6501(PostScript)s +7552(by)s 7855(V)s 26(ersion)k 8652(3.22)s 0 8755(of)m 271(the)s 619(Basser)s 1316(Lout)s 1828(interpreter)s 9(,)k 2919(using)s 3491(the)s 3839(symbols)s 4688(described)s 5662(in)s 5905(the)s 6253(User')s 13(s)k 6914(Guide)s 7555([4)s @@ -1535,6 +1538,9 @@ showpage %%PageResources: font Times-Roman %%+ font Times-Bold /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt5 vec2 /Times-Bold LoutRecode /fnt5 { /Times-Boldfnt5 LoutFont } def @@ -1700,6 +1706,9 @@ showpage %%PageResources: font Times-Roman %%+ font Times-Bold /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt5 vec2 /Times-Bold LoutRecode /fnt5 { /Times-Boldfnt5 LoutFont } def @@ -1871,6 +1880,9 @@ showpage %%PageResources: font Times-Roman %%+ font Times-Bold /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt5 vec2 /Times-Bold LoutRecode /fnt5 { /Times-Boldfnt5 LoutFont } def @@ -1917,6 +1929,9 @@ showpage %%BeginPageSetup %%PageResources: font Times-Roman /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -1952,6 +1967,9 @@ showpage %%+ font Times-Bold %%+ font Times-Italic /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt5 vec2 /Times-Bold LoutRecode /fnt5 { /Times-Boldfnt5 LoutFont } def @@ -2075,12 +2093,18 @@ showpage %%+ font Times-Italic %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt5 vec2 /Times-Bold LoutRecode /fnt5 { /Times-Boldfnt5 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt6 vec2 /Times-Italic LoutRecode /fnt6 { /Times-Italicfnt6 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -2437,12 +2461,18 @@ showpage %%+ font Times-Bold %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt6 vec2 /Times-Italic LoutRecode /fnt6 { /Times-Italicfnt6 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt5 vec2 /Times-Bold LoutRecode /fnt5 { /Times-Boldfnt5 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -2562,12 +2592,18 @@ showpage %%+ font Times-Italic %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt5 vec2 /Times-Bold LoutRecode /fnt5 { /Times-Boldfnt5 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt6 vec2 /Times-Italic LoutRecode /fnt6 { /Times-Italicfnt6 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -2699,12 +2735,18 @@ showpage %%+ font Times-Bold %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt6 vec2 /Times-Italic LoutRecode /fnt6 { /Times-Italicfnt6 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt5 vec2 /Times-Bold LoutRecode /fnt5 { /Times-Boldfnt5 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -2833,12 +2875,20 @@ showpage %%+ font Helvetica %%+ font Symbol /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt5 vec2 /Times-Bold LoutRecode /fnt5 { /Times-Boldfnt5 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt6 vec2 /Times-Italic LoutRecode /fnt6 { /Times-Italicfnt6 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def +%%IncludeResource: font Symbol +/fnt4 { /Symbol LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -2994,12 +3044,20 @@ showpage %%+ font Helvetica %%+ font Symbol /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt6 vec2 /Times-Italic LoutRecode /fnt6 { /Times-Italicfnt6 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt5 vec2 /Times-Bold LoutRecode /fnt5 { /Times-Boldfnt5 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def +%%IncludeResource: font Symbol +/fnt4 { /Symbol LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -3151,12 +3209,18 @@ showpage %%+ font Times-Italic %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt5 vec2 /Times-Bold LoutRecode /fnt5 { /Times-Boldfnt5 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt6 vec2 /Times-Italic LoutRecode /fnt6 { /Times-Italicfnt6 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -3320,12 +3384,18 @@ showpage %%+ font Times-Bold %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt6 vec2 /Times-Italic LoutRecode /fnt6 { /Times-Italicfnt6 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt5 vec2 /Times-Bold LoutRecode /fnt5 { /Times-Boldfnt5 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -3471,12 +3541,18 @@ showpage %%+ font Times-Italic %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt5 vec2 /Times-Bold LoutRecode /fnt5 { /Times-Boldfnt5 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt6 vec2 /Times-Italic LoutRecode /fnt6 { /Times-Italicfnt6 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -3722,12 +3798,18 @@ showpage %%+ font Times-Bold %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt6 vec2 /Times-Italic LoutRecode /fnt6 { /Times-Italicfnt6 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt5 vec2 /Times-Bold LoutRecode /fnt5 { /Times-Boldfnt5 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -4002,12 +4084,18 @@ showpage %%+ font Times-Italic %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt5 vec2 /Times-Bold LoutRecode /fnt5 { /Times-Boldfnt5 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt6 vec2 /Times-Italic LoutRecode /fnt6 { /Times-Italicfnt6 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -4328,12 +4416,18 @@ showpage %%+ font Times-Italic %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt5 vec2 /Times-Bold LoutRecode /fnt5 { /Times-Boldfnt5 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt6 vec2 /Times-Italic LoutRecode /fnt6 { /Times-Italicfnt6 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -4452,12 +4546,18 @@ showpage %%+ font Times-Italic %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt5 vec2 /Times-Bold LoutRecode /fnt5 { /Times-Boldfnt5 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt6 vec2 /Times-Italic LoutRecode /fnt6 { /Times-Italicfnt6 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -4561,12 +4661,18 @@ showpage %%+ font Times-Bold %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt6 vec2 /Times-Italic LoutRecode /fnt6 { /Times-Italicfnt6 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt5 vec2 /Times-Bold LoutRecode /fnt5 { /Times-Boldfnt5 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -4693,12 +4799,18 @@ showpage %%+ font Times-Italic %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt5 vec2 /Times-Bold LoutRecode /fnt5 { /Times-Boldfnt5 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt6 vec2 /Times-Italic LoutRecode /fnt6 { /Times-Italicfnt6 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -4814,12 +4926,18 @@ showpage %%+ font Times-Bold %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt6 vec2 /Times-Italic LoutRecode /fnt6 { /Times-Italicfnt6 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt5 vec2 /Times-Bold LoutRecode /fnt5 { /Times-Boldfnt5 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -4989,12 +5107,20 @@ showpage %%+ font Helvetica %%+ font Symbol /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt5 vec2 /Times-Bold LoutRecode /fnt5 { /Times-Boldfnt5 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt6 vec2 /Times-Italic LoutRecode /fnt6 { /Times-Italicfnt6 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def +%%IncludeResource: font Symbol +/fnt4 { /Symbol LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -5122,12 +5248,18 @@ showpage %%+ font Times-Bold %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt6 vec2 /Times-Italic LoutRecode /fnt6 { /Times-Italicfnt6 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt5 vec2 /Times-Bold LoutRecode /fnt5 { /Times-Boldfnt5 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -5266,12 +5398,18 @@ showpage %%+ font Times-Italic %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt5 vec2 /Times-Bold LoutRecode /fnt5 { /Times-Boldfnt5 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt6 vec2 /Times-Italic LoutRecode /fnt6 { /Times-Italicfnt6 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -5402,12 +5540,18 @@ showpage %%+ font Times-Bold %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt6 vec2 /Times-Italic LoutRecode /fnt6 { /Times-Italicfnt6 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt5 vec2 /Times-Bold LoutRecode /fnt5 { /Times-Boldfnt5 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -5522,12 +5666,18 @@ showpage %%+ font Times-Italic %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt5 vec2 /Times-Bold LoutRecode /fnt5 { /Times-Boldfnt5 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt6 vec2 /Times-Italic LoutRecode /fnt6 { /Times-Italicfnt6 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -5673,12 +5823,18 @@ showpage %%+ font Times-Bold %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt6 vec2 /Times-Italic LoutRecode /fnt6 { /Times-Italicfnt6 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt5 vec2 /Times-Bold LoutRecode /fnt5 { /Times-Boldfnt5 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -5805,12 +5961,18 @@ showpage %%+ font Times-Italic %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt5 vec2 /Times-Bold LoutRecode /fnt5 { /Times-Boldfnt5 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt6 vec2 /Times-Italic LoutRecode /fnt6 { /Times-Italicfnt6 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -5965,12 +6127,18 @@ showpage %%+ font Times-Bold %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt6 vec2 /Times-Italic LoutRecode /fnt6 { /Times-Italicfnt6 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt5 vec2 /Times-Bold LoutRecode /fnt5 { /Times-Boldfnt5 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -6133,12 +6301,18 @@ showpage %%+ font Times-Italic %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt5 vec2 /Times-Bold LoutRecode /fnt5 { /Times-Boldfnt5 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt6 vec2 /Times-Italic LoutRecode /fnt6 { /Times-Italicfnt6 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -6249,12 +6423,20 @@ showpage %%+ font Helvetica %%+ font Symbol /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt6 vec2 /Times-Italic LoutRecode /fnt6 { /Times-Italicfnt6 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt5 vec2 /Times-Bold LoutRecode /fnt5 { /Times-Boldfnt5 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def +%%IncludeResource: font Symbol +/fnt4 { /Symbol LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -6402,12 +6584,18 @@ showpage %%+ font Times-Italic %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt5 vec2 /Times-Bold LoutRecode /fnt5 { /Times-Boldfnt5 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt6 vec2 /Times-Italic LoutRecode /fnt6 { /Times-Italicfnt6 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -6590,12 +6778,18 @@ showpage %%+ font Times-Bold %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt6 vec2 /Times-Italic LoutRecode /fnt6 { /Times-Italicfnt6 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt5 vec2 /Times-Bold LoutRecode /fnt5 { /Times-Boldfnt5 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -6765,12 +6959,18 @@ showpage %%+ font Times-Italic %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt5 vec2 /Times-Bold LoutRecode /fnt5 { /Times-Boldfnt5 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt6 vec2 /Times-Italic LoutRecode /fnt6 { /Times-Italicfnt6 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -6911,12 +7111,18 @@ showpage %%+ font Times-Bold %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt6 vec2 /Times-Italic LoutRecode /fnt6 { /Times-Italicfnt6 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt5 vec2 /Times-Bold LoutRecode /fnt5 { /Times-Boldfnt5 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -7050,12 +7256,18 @@ showpage %%+ font Times-Italic %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt5 vec2 /Times-Bold LoutRecode /fnt5 { /Times-Boldfnt5 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt6 vec2 /Times-Italic LoutRecode /fnt6 { /Times-Italicfnt6 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -7170,12 +7382,20 @@ showpage %%+ font Helvetica %%+ font Symbol /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt6 vec2 /Times-Italic LoutRecode /fnt6 { /Times-Italicfnt6 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt5 vec2 /Times-Bold LoutRecode /fnt5 { /Times-Boldfnt5 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def +%%IncludeResource: font Symbol +/fnt4 { /Symbol LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -7326,12 +7546,18 @@ showpage %%+ font Times-Italic %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt5 vec2 /Times-Bold LoutRecode /fnt5 { /Times-Boldfnt5 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt6 vec2 /Times-Italic LoutRecode /fnt6 { /Times-Italicfnt6 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -7492,12 +7718,18 @@ showpage %%+ font Times-Bold %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt6 vec2 /Times-Italic LoutRecode /fnt6 { /Times-Italicfnt6 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt5 vec2 /Times-Bold LoutRecode /fnt5 { /Times-Boldfnt5 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -7619,9 +7851,15 @@ showpage %%+ font Times-Bold %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt5 vec2 /Times-Bold LoutRecode /fnt5 { /Times-Boldfnt5 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -7713,12 +7951,18 @@ showpage %%+ font Times-Bold %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt6 vec2 /Times-Italic LoutRecode /fnt6 { /Times-Italicfnt6 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt5 vec2 /Times-Bold LoutRecode /fnt5 { /Times-Boldfnt5 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -7902,12 +8146,18 @@ showpage %%+ font Times-Italic %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt5 vec2 /Times-Bold LoutRecode /fnt5 { /Times-Boldfnt5 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt6 vec2 /Times-Italic LoutRecode /fnt6 { /Times-Italicfnt6 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -8545,12 +8795,18 @@ showpage %%+ font Times-Bold %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt6 vec2 /Times-Italic LoutRecode /fnt6 { /Times-Italicfnt6 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt5 vec2 /Times-Bold LoutRecode /fnt5 { /Times-Boldfnt5 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -9655,12 +9911,18 @@ showpage %%+ font Helvetica %%+ font Times-BoldItalic /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt5 vec2 /Times-Bold LoutRecode /fnt5 { /Times-Boldfnt5 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt6 vec2 /Times-Italic LoutRecode /fnt6 { /Times-Italicfnt6 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def %%IncludeResource: font Times-BoldItalic /Times-BoldItalicfnt7 vec2 /Times-BoldItalic LoutRecode /fnt7 { /Times-BoldItalicfnt7 LoutFont } def @@ -9817,12 +10079,18 @@ showpage %%+ font Times-Bold %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt6 vec2 /Times-Italic LoutRecode /fnt6 { /Times-Italicfnt6 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt5 vec2 /Times-Bold LoutRecode /fnt5 { /Times-Boldfnt5 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -9981,12 +10249,18 @@ showpage %%+ font Times-Italic %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt5 vec2 /Times-Bold LoutRecode /fnt5 { /Times-Boldfnt5 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt6 vec2 /Times-Italic LoutRecode /fnt6 { /Times-Italicfnt6 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -10136,12 +10410,18 @@ showpage %%+ font Times-Bold %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt6 vec2 /Times-Italic LoutRecode /fnt6 { /Times-Italicfnt6 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt5 vec2 /Times-Bold LoutRecode /fnt5 { /Times-Boldfnt5 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -10283,12 +10563,18 @@ showpage %%+ font Times-Italic %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt5 vec2 /Times-Bold LoutRecode /fnt5 { /Times-Boldfnt5 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt6 vec2 /Times-Italic LoutRecode /fnt6 { /Times-Italicfnt6 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -10446,12 +10732,18 @@ showpage %%+ font Times-Bold %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt6 vec2 /Times-Italic LoutRecode /fnt6 { /Times-Italicfnt6 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt5 vec2 /Times-Bold LoutRecode /fnt5 { /Times-Boldfnt5 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -10603,12 +10895,18 @@ showpage %%+ font Times-Italic %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt5 vec2 /Times-Bold LoutRecode /fnt5 { /Times-Boldfnt5 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt6 vec2 /Times-Italic LoutRecode /fnt6 { /Times-Italicfnt6 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -10732,12 +11030,18 @@ showpage %%+ font Times-Bold %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt6 vec2 /Times-Italic LoutRecode /fnt6 { /Times-Italicfnt6 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt5 vec2 /Times-Bold LoutRecode /fnt5 { /Times-Boldfnt5 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -10864,12 +11168,18 @@ showpage %%+ font Times-Italic %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt5 vec2 /Times-Bold LoutRecode /fnt5 { /Times-Boldfnt5 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt6 vec2 /Times-Italic LoutRecode /fnt6 { /Times-Italicfnt6 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -11046,12 +11356,18 @@ showpage %%+ font Times-Bold %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt6 vec2 /Times-Italic LoutRecode /fnt6 { /Times-Italicfnt6 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt5 vec2 /Times-Bold LoutRecode /fnt5 { /Times-Boldfnt5 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -11201,12 +11517,18 @@ showpage %%+ font Times-Italic %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt5 vec2 /Times-Bold LoutRecode /fnt5 { /Times-Boldfnt5 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt6 vec2 /Times-Italic LoutRecode /fnt6 { /Times-Italicfnt6 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -11335,12 +11657,18 @@ showpage %%+ font Times-Bold %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt6 vec2 /Times-Italic LoutRecode /fnt6 { /Times-Italicfnt6 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt5 vec2 /Times-Bold LoutRecode /fnt5 { /Times-Boldfnt5 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -11527,12 +11855,18 @@ showpage %%+ font Times-Italic %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt5 vec2 /Times-Bold LoutRecode /fnt5 { /Times-Boldfnt5 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt6 vec2 /Times-Italic LoutRecode /fnt6 { /Times-Italicfnt6 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -11681,12 +12015,20 @@ showpage %%+ font Helvetica %%+ font Symbol /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt6 vec2 /Times-Italic LoutRecode /fnt6 { /Times-Italicfnt6 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt5 vec2 /Times-Bold LoutRecode /fnt5 { /Times-Boldfnt5 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def +%%IncludeResource: font Symbol +/fnt4 { /Symbol LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -11876,12 +12218,18 @@ showpage %%+ font Times-Italic %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt5 vec2 /Times-Bold LoutRecode /fnt5 { /Times-Boldfnt5 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt6 vec2 /Times-Italic LoutRecode /fnt6 { /Times-Italicfnt6 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -12009,12 +12357,18 @@ showpage %%+ font Times-Bold %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt6 vec2 /Times-Italic LoutRecode /fnt6 { /Times-Italicfnt6 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt5 vec2 /Times-Bold LoutRecode /fnt5 { /Times-Boldfnt5 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -12131,12 +12485,18 @@ showpage %%+ font Times-Italic %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt5 vec2 /Times-Bold LoutRecode /fnt5 { /Times-Boldfnt5 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt6 vec2 /Times-Italic LoutRecode /fnt6 { /Times-Italicfnt6 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -12249,12 +12609,18 @@ showpage %%+ font Times-Bold %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt6 vec2 /Times-Italic LoutRecode /fnt6 { /Times-Italicfnt6 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt5 vec2 /Times-Bold LoutRecode /fnt5 { /Times-Boldfnt5 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -12385,12 +12751,18 @@ showpage %%+ font Times-Italic %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt5 vec2 /Times-Bold LoutRecode /fnt5 { /Times-Boldfnt5 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt6 vec2 /Times-Italic LoutRecode /fnt6 { /Times-Italicfnt6 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -12458,8 +12830,8 @@ grestore 5908(F)s 3(or)k 6297(e)s 3(xample,)k 220 fnt2 480 3842(@Moment&&no)m 3(w @Open { @Da)k 6(y {@Months&&@Month}, @Centur)k -6(y{@Y)k 30(ear} })k 240 fnt1 0 3344(produces)m 915(something)s 1965(lik)s 2(e)k -2377(11)s 2652(May)s 15(,)k 3183(2000)s 3718(gi)s 6(v)k 3(en)k -4298(a)s 4464(suitable)s 5263(database)s 6142(of)s 6413(months.)s +2377(3)s 2541(June,)s 3087(2000)s 3622(gi)s 6(v)k 3(en)k +4202(a)s 4368(suitable)s 5167(database)s 6046(of)s 6317(months.)s 240 fnt5 0 2551(3.30.)m 591(@Null)s 240 fnt1 480 2119(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 @@ -12503,12 +12875,20 @@ showpage %%+ font Helvetica %%+ font Symbol /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt6 vec2 /Times-Italic LoutRecode /fnt6 { /Times-Italicfnt6 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt5 vec2 /Times-Bold LoutRecode /fnt5 { /Times-Boldfnt5 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def +%%IncludeResource: font Symbol +/fnt4 { /Symbol LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -12673,12 +13053,20 @@ showpage %%+ font Symbol %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt5 vec2 /Times-Bold LoutRecode /fnt5 { /Times-Boldfnt5 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt6 vec2 /Times-Italic LoutRecode /fnt6 { /Times-Italicfnt6 LoutFont } def +%%IncludeResource: font Symbol +/fnt4 { /Symbol LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -12827,12 +13215,18 @@ showpage %%+ font Times-Bold %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt6 vec2 /Times-Italic LoutRecode /fnt6 { /Times-Italicfnt6 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt5 vec2 /Times-Bold LoutRecode /fnt5 { /Times-Boldfnt5 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -12972,12 +13366,18 @@ showpage %%+ font Times-Italic %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt5 vec2 /Times-Bold LoutRecode /fnt5 { /Times-Boldfnt5 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt6 vec2 /Times-Italic LoutRecode /fnt6 { /Times-Italicfnt6 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -13153,12 +13553,18 @@ showpage %%+ font Times-Bold %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt6 vec2 /Times-Italic LoutRecode /fnt6 { /Times-Italicfnt6 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt5 vec2 /Times-Bold LoutRecode /fnt5 { /Times-Boldfnt5 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -13286,12 +13692,18 @@ showpage %%+ font Times-Italic %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt5 vec2 /Times-Bold LoutRecode /fnt5 { /Times-Boldfnt5 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt6 vec2 /Times-Italic LoutRecode /fnt6 { /Times-Italicfnt6 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -13399,12 +13811,18 @@ showpage %%+ font Times-Bold %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt6 vec2 /Times-Italic LoutRecode /fnt6 { /Times-Italicfnt6 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt5 vec2 /Times-Bold LoutRecode /fnt5 { /Times-Boldfnt5 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -13575,12 +13993,18 @@ showpage %%+ font Times-Italic %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt5 vec2 /Times-Bold LoutRecode /fnt5 { /Times-Boldfnt5 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt6 vec2 /Times-Italic LoutRecode /fnt6 { /Times-Italicfnt6 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -13696,12 +14120,20 @@ showpage %%+ font Helvetica %%+ font Symbol /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt6 vec2 /Times-Italic LoutRecode /fnt6 { /Times-Italicfnt6 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt5 vec2 /Times-Bold LoutRecode /fnt5 { /Times-Boldfnt5 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def +%%IncludeResource: font Symbol +/fnt4 { /Symbol LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -13827,12 +14259,18 @@ showpage %%+ font Times-Italic %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt5 vec2 /Times-Bold LoutRecode /fnt5 { /Times-Boldfnt5 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt6 vec2 /Times-Italic LoutRecode /fnt6 { /Times-Italicfnt6 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -13982,12 +14420,18 @@ showpage %%+ font Times-Bold %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt6 vec2 /Times-Italic LoutRecode /fnt6 { /Times-Italicfnt6 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt5 vec2 /Times-Bold LoutRecode /fnt5 { /Times-Boldfnt5 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -14145,12 +14589,18 @@ showpage %%+ font Times-Italic %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt5 vec2 /Times-Bold LoutRecode /fnt5 { /Times-Boldfnt5 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt6 vec2 /Times-Italic LoutRecode /fnt6 { /Times-Italicfnt6 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -14275,12 +14725,18 @@ showpage %%+ font Times-Bold %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt6 vec2 /Times-Italic LoutRecode /fnt6 { /Times-Italicfnt6 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt5 vec2 /Times-Bold LoutRecode /fnt5 { /Times-Boldfnt5 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -14357,9 +14813,17 @@ showpage %%+ font Symbol %%+ font Times-Italic /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt5 vec2 /Times-Bold LoutRecode /fnt5 { /Times-Boldfnt5 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def +%%IncludeResource: font Symbol +/fnt4 { /Symbol LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt6 vec2 /Times-Italic LoutRecode /fnt6 { /Times-Italicfnt6 LoutFont } def @@ -14390,61 +14854,65 @@ grestore 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 10584(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 fnt5 0 9791(4.1.)m -471(An)s 833(equation)s 1779(f)s 6(ormatting)k 2930(package)s -240 fnt1 480 9314(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 9026(package.)m 976(Equation)s 1925(formatting)s 3014(mak)s 2(es)k +2329(in)s 2572(actual)s 3197(practice.)s 480 10210(Although)m 1486(all)s +1823(these)s 2415(e)s 3(xamples)k 3410(ha)s 4(v)k 3(e)k +3956(been)s 4509(tak)s 2(en)k 5127(from)s 5695(real)s +6152(code,)s 6755(the)s 3(y)k 7263(do)s 7600(not)s +8011(necessarily)s 0 9922(represent)m 935(the)s 1283(current)s 2019(state)s +2512(of)s 2783(the)s 3131(Lout)s 3643(packages.)s 240 fnt5 +0 9129(4.1.)m 471(An)s 833(equation)s 1779(f)s 6(ormatting)k +2930(package)s 240 fnt1 480 8652(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 8364(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 8738(ha)m 4(v)k 3(e)k +6043(partly)s 6682(because)s 7523(its)s 7828(requirements)s 0 8076(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 8450(are)m 347(required.)s 480 8076(T)m 19(o)k 777(the)s +0 7788(are)m 347(required.)s 480 7414(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 7788(tion)m 430(of)s 702(high-)s +8435(collec)s 8998(-)s 0 7126(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 7500(and)m +6948(the)s 7297(basics)s 7933(of)s 8206(language)s 0 6838(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 7212(being)m 585(readily)s 1302(a)s 4(v)k 6(ailable,)k +0 6550(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 6838(As)m 808(described)s 1793(in)s 2048(the)s +5677(replaced.)s 480 6176(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 6550(introduced)m 1081(by)s 1375(the)s 1723(eqn)s +8724(one)s 0 5888(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 fnt2 480 6049(@Eq { { x sup 2 + y sup 2 } o)m 3(v)k 5(er 2 })k -240 fnt1 0 5551(The)m 428(result)s 1018(is)s 168 fnt4 -586 5146(2)m 240 fnt6 480 5086(x)m 240 fnt4 738 5078(+)m -168 fnt4 1041 5146(2)m 240 fnt6 939 5086(y)m 641 0 0 0 240 288 12 480 4988 LoutGr2 +4782(Cherry)s 5500([2)s 5693(]:)s 220 fnt2 480 5387(@Eq { { x sup 2 + y sup 2 } o)m 3(v)k 5(er 2 })k +240 fnt1 0 4889(The)m 428(result)s 1018(is)s 168 fnt4 +586 4484(2)m 240 fnt6 480 4424(x)m 240 fnt4 738 4416(+)m +168 fnt4 1041 4484(2)m 240 fnt6 939 4424(y)m 641 0 0 0 240 288 12 480 4326 LoutGr2 0 0 moveto xsize 0 lineto 0.05 ft setlinewidth stroke grestore grestore 240 fnt4 -743 4760(2)m 240 fnt1 0 4249(In)m 256(outline,)s 1027(the)s -1375(de\207nition)s 2349(of)s 2620(the)s 220 fnt2 2968 4246(@Eq)m -240 fnt1 3506 4249(symbol)m 4266(is)s 220 fnt2 480 3752(e)m 6(xpor)k -8(t sup o)k 3(v)k 5(er "+" "2" "<=")k -480 3464(def @Eq)m 480 3176( body @Body)m 480 2888({)m 480 2600( def sup precedence 60 left x r)m -3(ight y { ...)k 13( })k -480 2312( def o)m 3(v)k 5(er precedence 54 left x r)k -3(ight y { ...)k 13( })k -480 2024( def "2" { Base @F)m 6(ont "2" })k 480 1736( def "+" { {Symbol Base} @F)m 6(ont "+" })k 480 1448( def "<=" { {Symbol Base} @F)m 6(ont "\\243" })k -480 1160( ...)m 480 584( Slope @F)m 6(ont 1.2f @Break 0c @Space @Body)k 480 296(})m +743 4098(2)m 240 fnt1 0 3587(In)m 256(outline,)s 1027(the)s +1375(de\207nition)s 2349(of)s 2620(the)s 220 fnt2 2968 3584(@Eq)m +240 fnt1 3506 3587(symbol)m 4266(is)s 220 fnt2 480 3090(e)m 6(xpor)k -8(t sup o)k 3(v)k 5(er "+" "2" "<=")k +480 2802(def @Eq)m 480 2514( body @Body)m 480 2226({)m 480 1938( def sup precedence 60 left x r)m -3(ight y { ...)k 13( })k +480 1650( def o)m 3(v)k 5(er precedence 54 left x r)k -3(ight y { ...)k 13( })k +480 1362( def "2" { Base @F)m 6(ont "2" })k 480 1074( def "+" { {Symbol Base} @F)m 6(ont "+" })k 480 786( def "<=" { {Symbol Base} @F)m 6(ont "\\243" })k +480 498( ...)m grestore 0 0 0 0 240 288 60 1417 -14867 LoutGr2 0 LoutMargSet grestore grestore -192 fnt5 -5856 -15423(72)m +192 fnt5 5856 -15423(72)m grestore grestore @@ -14459,12 +14927,18 @@ showpage %%+ font Times-Bold %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt6 vec2 /Times-Italic LoutRecode /fnt6 { /Times-Italicfnt6 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt5 vec2 /Times-Bold LoutRecode /fnt5 { /Times-Boldfnt5 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -14480,79 +14954,79 @@ gsave 4147(pac)s 4(ka)k 2(g)k 2(e)k 240 fnt5 10250 -1583(73)m gsave 1417 -15423 translate -240 fnt1 9066 13368 0 13368 240 288 60 LoutGraphic +240 fnt1 9066 13368 0 13264 240 288 60 LoutGraphic gsave 1 LoutMargSet grestore -0 13205(A)m 259(body)s 822(parameter)s 1865(is)s +220 fnt2 480 13207( Slope @F)m 6(ont 1.2f @Break 0c @Space @Body)k 480 12919(})m +240 fnt1 0 12425(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 +8514(\(there)s 0 12137(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 fnt2 784 12626("2")m 240 fnt1 1127 12629(and)m -220 fnt2 1550 12626("+")m 240 fnt1 1899 12629(are)m 2265(de\207ned)s +6704(Italic\))s 7341(font,)s 7853(and)s 8277(symbols)s 0 11849(such)m +515(as)s 220 fnt2 784 11846("2")m 240 fnt1 1127 11849(and)m +220 fnt2 1550 11846("+")m 240 fnt1 1899 11849(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 fnt2 1925 12338(a sup b o)m 3(v)k 5(er c)k -240 fnt1 3291 12341(.)m 3459(Eq)s 3788(tak)s 2(es)k +0 11561(ambiguities)m 1170(such)s 1670(as)s 220 fnt2 1925 11558(a sup b o)m 3(v)k 5(er c)k +240 fnt1 3291 11561(.)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 +8539(white)s 0 11273(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 fnt2 6335 12050(0c @Space)m -240 fnt1 7465 12053(.)m 7616(W)s 19(e)k 7972(will)s -8384(discuss)s 0 11765(the)m 220 fnt2 348 11762(1.2f @Break)m 240 fnt1 -1631 11765(later)m 13(.)k 480 11391(Thus)m 1015(ha)s 4(v)k 3(e)k +5026(is)s 5223(enclosed)s 6105(in)s 220 fnt2 6335 11270(0c @Space)m +240 fnt1 7465 11273(.)m 7616(W)s 19(e)k 7972(will)s +8384(discuss)s 0 10985(the)m 220 fnt2 348 10982(1.2f @Break)m 240 fnt1 +1631 10985(later)m 13(.)k 480 10611(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 +6954(formatting)s 8020(problem;)s 8934(it)s 0 10323(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 fnt6 2690 10731(axis)m -240 fnt1 3070 10729(:)m 3250(an)s 3546(imaginary)s 4583(horizontal)s +6615(get)s 6967(the)s 7315(layout)s 7973(right.)s 480 9949(Ev)m 3(ery)k +1115(equation)s 2010(has)s 2393(an)s 240 fnt6 2690 9951(axis)m +240 fnt1 3070 9949(:)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 +8163(v)s 6(ariables,)k 0 9661(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 +8708(that)s 0 9373(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 +6428(e)s 3(xample,)k 7356(the)s 7719(superscripting)s 0 9085(symbol)m 760(is)s 970(de\207ned)s 1733(as)s 1983(follo)s 6(ws:)k -220 fnt2 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 fnt1 -0 5704(The)m 220 fnt2 430 5701(@VContr)m 2(act)k 240 fnt1 -1684 5704(and)m 220 fnt2 2091 5701(^/)m 240 fnt1 2320 5704(symbols)m +220 fnt2 480 8586(def sup)m 480 8298( precedence 60)m 480 8010( associativity left)m 480 7722( left x)m +480 7434( named gap { @SupGap })m 480 7146( r)m -3(ight y)k 480 6858({)m 480 6570( @HContr)m 2(act @VContr)k 2(act {)k +480 6282( | @Smaller y)m 480 5994( ^/gap x)m 480 5706( })m 480 5418(})m 240 fnt1 +0 4924(The)m 220 fnt2 430 4921(@VContr)m 2(act)k 240 fnt1 +1684 4924(and)m 220 fnt2 2091 4921(^/)m 240 fnt1 2320 4924(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 fnt2 1363 5413(gap)m 240 fnt1 1795 5416(parameter)m +7687(axis)s 8125(of)s 8398(the)s 8749(left)s 0 4636(parameter)m 13(.)k +1119(A)s 220 fnt2 1363 4633(gap)m 240 fnt1 1795 4636(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 fnt2 1265 5125(@SupGap)m 240 fnt1 -2393 5128(de\207ned)m 3144(else)s 6(where)k 4137(as)s 220 fnt2 -4375 5125(0.40fk)m 240 fnt1 4973 5128(.)m 5124(It)s 5317(is)s +7113(the)s 7475(superscript,)s 8644(with)s 0 4348(def)m 2(ault)k +709(v)s 6(alue)k 220 fnt2 1265 4345(@SupGap)m 240 fnt1 +2393 4348(de\207ned)m 3144(else)s 6(where)k 4137(as)s 220 fnt2 +4375 4345(0.40fk)m 240 fnt1 4973 4348(.)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 +7859(be)s 8128(e)s 3(xpressed)k 0 4060(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 +7154(changes.)s 8077(Collecting)s 0 3772(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 fnt2 3432 4549(@SupGap)m 240 fnt1 4515 4552(ensures)m 5287(consistenc)s 3(y)k +220 fnt2 3432 3769(@SupGap)m 240 fnt1 4515 3772(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 fnt2 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 - +0 3484(v)m 6(alues.)k 769(Here)s 1289(is)s 1499(another)s +2276(characteristic)s 3600(de\207nition:)s 220 fnt2 480 3034(def o)m 3(v)k 5(er)k +480 2746( precedence 54)m 480 2458( associativity left)m 480 2170( left x)m 480 1882( named gap { 0.2f })m 480 1594( r)m -3(ight y)k +480 1306({)m 480 1018( @HContr)m 2(act @VContr)k 2(act {)k 480 730( |0.5r)m -8(t @OneCol x)k +480 442( ^//gap @HLine)m 480 154( //gap |0.5r)m -8(t @OneCol y)k grestore gsave 1417 -15423 translate @@ -14578,12 +15052,20 @@ showpage %%+ font Helvetica %%+ font Symbol /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt5 vec2 /Times-Bold LoutRecode /fnt5 { /Times-Boldfnt5 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt6 vec2 /Times-Italic LoutRecode /fnt6 { /Times-Italicfnt6 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def +%%IncludeResource: font Symbol +/fnt4 { /Symbol LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -14598,108 +15080,100 @@ gsave 240 fnt5 1417 -1583(74)m 240 fnt6 8434 -1580(Chapter)m 9284(4.)s 9558(Examples)s gsave 1417 -15423 translate -240 fnt1 9066 13368 0 13259 240 288 60 LoutGraphic +240 fnt1 9066 13368 0 13267 240 288 60 LoutGraphic gsave 0 LoutMargSet grestore -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 +220 fnt2 480 13210( })m 480 12922(})m 240 fnt1 +0 12428(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 fnt2 7881 13202(@OneCol)m 240 fnt1 -8887 13205(to)m 0 12917(mak)m 2(e)k 570(sure)s 1021(that)s +7181(we)s 7511(use)s 220 fnt2 7881 12425(@OneCol)m 240 fnt1 +8887 12428(to)m 0 12140(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 fnt2 7097 12914(@HContr)m 2(act)k 240 fnt1 -8358 12917(ensures)m 0 12629(that)m 428(the)s 787(fraction)s 1597(will)s +6696(and)s 220 fnt2 7097 12137(@HContr)m 2(act)k 240 fnt1 +8358 12140(ensures)m 0 11852(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 fnt2 2843 12338(@HLine)m -240 fnt1 3690 12341(is)m 3900(a)s 4066(horizontal)s 5090(line)s +8231(a)s 8408(natural)s 0 11564(tendenc)m 3(y)k 915(to)s +1154(do)s 1447(\(Section)s 2300(2.6\).)s 220 fnt2 2843 11561(@HLine)m +240 fnt1 3690 11564(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 fnt2 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 fnt1 0 10194(Here)m 520(we)s 855(are)s +7344(column:)s 220 fnt2 480 11063(def @HLine)m 480 10775( named line { "0.05 ft setline)m 4(width" })k +480 10487({ )m 480 10199( { "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 9911(})m 240 fnt1 0 9417(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 +3625(tendenc)s 3(y)k 4540(just)s 4945(mentioned.)s 480 9043(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 +8078(\207ne)s 8490(points)s 0 8755(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 fnt4 -2768 9152(\243)m 240 fnt1 2963 9158(and)m 240 fnt4 3376 9152(\271)m -240 fnt1 3505 9158(,)m 3621(should)s 4327(ha)s 4(v)k 3(e)k +480 8381(Some)m 1090(symbols,)s 2004(such)s 2509(as)s 240 fnt4 +2768 8375(\243)m 240 fnt1 2963 8381(and)m 240 fnt4 3376 8375(\271)m +240 fnt1 3505 8381(,)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 fnt4 -8937 9152(+)m 240 fnt1 0 8870(and)m 240 fnt4 397 8864(-)m -240 fnt1 525 8870(,)m 625(ha)s 4(v)k 3(e)k +8937 8375(+)m 240 fnt1 0 8093(and)m 240 fnt4 397 8087(-)m +240 fnt1 525 8093(,)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 +7854(be)s 8129(easy)s 8601(to)s 8833(do)s 0 7805(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 fnt6 578 8135(n)m 168 fnt4 680 8129(+)m -793(1)s 240 fnt6 480 8037(r)m 240 fnt4 931 8029(-)m -1131(1)s 240 fnt1 0 7578(In)m 271(ef)s 6(fect,)k +5620(subscripts:)s 168 fnt6 578 7358(n)m 168 fnt4 680 7352(+)m +793(1)s 240 fnt6 480 7260(r)m 240 fnt4 931 7252(-)m +1131(1)s 240 fnt1 0 6801(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 +0 6513(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 fnt2 7064 7287(@F)m 6(ont)k -240 fnt1 7716 7290(,)m 220 fnt2 7821 7287(@Break)m 240 fnt1 -8617 7290(,)m 8722(and)s 220 fnt2 0 6999(@Space)m 240 fnt1 -891 7002(symbols)m 1734(can)s 2116(change)s 2844(in)s 3080(this)s +6426(by)s 6718(the)s 220 fnt2 7064 6510(@F)m 6(ont)k +240 fnt1 7716 6513(,)m 220 fnt2 7821 6510(@Break)m 240 fnt1 +8617 6513(,)m 8722(and)s 220 fnt2 0 6222(@Space)m 240 fnt1 +891 6225(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 fnt2 6406 6999(y)m -240 fnt1 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 fnt2 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 fnt1 0 4562(In)m 261(the)s 615(equation)s 1502(as)s +5291(Eq)s 5608(uses)s 6065(the)s 220 fnt2 6406 6222(y)m +240 fnt1 6568 6225(unit,)m 7040(which)s 7676(is)s 7879(part)s +8304(of)s 8568(style,)s 0 5937(for)m 338(these)s 885(spaces:)s +220 fnt2 480 5436(def @MedGap { 0.20y })m 480 4860(def "+" { &@MedGap plus &@MedGap })m 480 4284(def @HSqueez)m 3(e r)k -3(ight x { 0.2f @YUnit x })k +240 fnt1 0 3785(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 fnt2 -5192 4559(1f)m 240 fnt1 5372 4562(,)m 5484(and)s 5894(so)s -220 fnt2 6166 4559(@MedGap)m 240 fnt1 7289 4562(ordinarily)m 8291(supplies)s -0 4274(20%)m 495(of)s 777(this)s 1184(amount.)s 2077(But)s +5192 3782(1f)m 240 fnt1 5372 3785(,)m 5484(and)s 5894(so)s +220 fnt2 6166 3782(@MedGap)m 240 fnt1 7289 3785(ordinarily)m 8291(supplies)s +0 3497(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 fnt2 7007 4271(@HSqueez)m 3(e)k -240 fnt1 8314 4274(symbol,)m 0 3986(which,)m 744(by)s 1091(changing)s +6394(in)s 6648(the)s 220 fnt2 7007 3494(@HSqueez)m 3(e)k +240 fnt1 8314 3497(symbol,)m 0 3209(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 fnt2 4977 3983(@MedGap)m 240 fnt1 -6147 3986(within)m 6868(them)s 7459(is)s 7722(much)s 8364(smaller)s -0 3698(than)m 469(usual.)s 240 fnt5 0 2955(4.2.)m 471(P)s 2(aragraphs,)k -1780(displays,)s 2718(and)s 3159(lists)s 240 fnt1 480 2478(The)m +4527(an)s 3(y)k 220 fnt2 4977 3206(@MedGap)m 240 fnt1 +6147 3209(within)m 6868(them)s 7459(is)s 7722(much)s 8364(smaller)s +0 2921(than)m 469(usual.)s 240 fnt5 0 2178(4.2.)m 471(P)s 2(aragraphs,)k +1780(displays,)s 2718(and)s 3159(lists)s 240 fnt1 480 1701(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 +6578(2)s 6759(of)s 7036(the)s 7391(DocumentLayout)s 0 1413(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 +7991(perspecti)s 6(v)k 3(e)k 0 1125(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 +8707(fea)s 8998(-)s 0 837(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 +8728(dis)s 8998(-)s 0 549(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 +0 261(chapters,)m 903(sections,)s 1780(and)s 2184(sorted)s 2826(inde)s 3(x)k 3(es.)k + grestore gsave 1417 -15423 translate @@ -14724,12 +15198,18 @@ showpage %%+ font Times-Bold %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt6 vec2 /Times-Italic LoutRecode /fnt6 { /Times-Italicfnt6 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt5 vec2 /Times-Bold LoutRecode /fnt5 { /Times-Boldfnt5 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -14749,81 +15229,82 @@ gsave gsave 1 LoutMargSet grestore -0 13205(cm)m 352(indent)s 1010(on)s 1307(the)s 1655(follo)s 6(wing)k +480 13205(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 12917(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 12629(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 0 12341(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 fnt2 480 12704(macro @PP { //0.3c &1c })m -240 fnt1 0 12210(Ne)m 6(v)k 3(ertheless)k 1276(it)s +4711(the)s 5059(right)s 5570(track:)s 220 fnt2 480 11840(macro @PP { //0.3c &1c })m +240 fnt1 0 11346(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 fnt2 926 11833(&)m 240 fnt1 -1147 11836(symbol)m 1926(is)s 2154(subject)s 2910(to)s 3168(widening)s +3177(problems.)s 480 10972(The)m 220 fnt2 926 10969(&)m 240 fnt1 +1147 10972(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 fnt2 -0 11545(1c @Wide {})m 240 fnt1 1213 11548(.)m 1387(But)s 1804(then)s +0 10681(1c @Wide {})m 240 fnt1 1213 10684(.)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 fnt2 8764 11545(&0i)m 240 fnt1 0 11260(must)m 528(be)s +220 fnt2 8764 10681(&0i)m 240 fnt1 0 10396(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 +8192(to)s 8435(widen:)s 0 10108(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 fnt2 3712 10969(v)m 240 fnt1 3894 10972(unit,)m +3352(the)s 220 fnt2 3712 10105(v)m 240 fnt1 3894 10108(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 +8778(the)s 0 9820(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 fnt2 2535 10307(0.3c)m 240 fnt1 2993 10310(should)m 3678(not)s +5953(font)s 6398(size.)s 480 9446(`Magic)m 1211(numbers')s 2135(lik)s 2(e)k +220 fnt2 2535 9443(0.3c)m 240 fnt1 2993 9446(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 +8270(changed)s 0 9158(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 +7592(better)s 8195(placed)s 8876(as)s 0 8870(symbols,)m 905(possibly)s 1757(parameters)s 2855(of)s 3126(the)s 3474(enclosing)s 4444(package:)s -220 fnt2 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 fnt1 0 6143(and)m 404(we)s 739(ha)s 4(v)k 3(e)k +220 fnt2 480 8369(def @DocumentLa)m 6(y)k 4(out)k 480 8081( named @P)m 8(ar)k 2(aGap { 1.3vx })k +480 7793( named @P)m 8(ar)k 2(aIndent { 2f })k 480 7505( ...)m 480 7217(@Begin)m +480 6641( macro @PP { //@P)m 8(ar)k 2(aGap @P)k 8(ar)k 2(aIndent @Wide &0i })k +480 6353( macro @LP { //@P)m 8(ar)k 2(aGap })k 480 6065( ...)m 480 5777(@End @DocumentLa)m 6(y)k 4(out)k +240 fnt1 0 5279(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 fnt2 3790 6140(@PP)m 240 fnt1 -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 +2545(de\207nition)s 3519(of)s 220 fnt2 3790 5276(@PP)m 240 fnt1 +4356 5279(as)m 4606(it)s 4798(appears)s 5579(in)s 5822(the)s +6170(DocumentLayout)s 7905(package.)s 480 4905(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 fnt6 -480 5266(pr)m 8(eceding)k 1483(te)s 4(xt)k 220 fnt2 -480 4973(//@DispGap |@DispIndent)m 240 fnt6 3183 4978(display)m 220 fnt2 480 4685(//@DispGap)m -240 fnt6 480 4402(following)m 1438(te)s 4(xt)k 240 fnt1 -0 3901(Edge-to-edge)m 1345(is)s 1557(the)s 1906(appropriate)s 3052(spacing)s +480 4402(pr)m 8(eceding)k 1483(te)s 4(xt)k 220 fnt2 +480 4109(//@DispGap |@DispIndent)m 240 fnt6 3183 4114(display)m 220 fnt2 480 3821(//@DispGap)m +240 fnt6 480 3538(following)m 1438(te)s 4(xt)k 240 fnt1 +0 3037(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 +6891(since)s 7439(the)s 7789(display)s 8536(could)s 0 2749(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 fnt2 6850 3610(1v)m -240 fnt1 7132 3613(is)m 7333(a)s 7490(reasonable)s 8558(v)s 6(alue)k -0 3325(for)m 220 fnt2 338 3322(@DispGap)m 240 fnt1 1406 3325(.)m -480 2951(The)m 957(ordinary)s 1871(user)s 2379(cannot)s 3126(be)s +5178(a)s 5335(baseline.)s 6273(Thus,)s 220 fnt2 6850 2746(1v)m +240 fnt1 7132 2749(is)m 7333(a)s 7490(reasonable)s 8558(v)s 6(alue)k +0 2461(for)m 220 fnt2 338 2458(@DispGap)m 240 fnt1 1406 2461(.)m +480 2087(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 fnt6 480 2160(pr)m 8(eceding)k 1483(te)s 4(xt)k -220 fnt2 480 1867(@IndentedDispla)m 6(y {)k 240 fnt6 2514 1872(display)m -220 fnt2 3321 1867(})m 240 fnt6 480 1584(following)m 1438(te)s 4(xt)k -240 fnt1 0 1083(This)m 491(presents)s 1340(a)s 1521(problem:)s -2499(if)s 220 fnt2 2731 1080(@IndentedDispla)m 6(y)k 240 fnt1 -4593 1083(is)m 4819(made)s 5408(a)s 5589(de\207nition)s 6578(with)s +8363(a)s 8579(more)s 0 1799(appropriate)m 1144(syntax)s 1824(is)s +240 fnt6 480 1296(pr)m 8(eceding)k 1483(te)s 4(xt)k +220 fnt2 480 1003(@IndentedDispla)m 6(y {)k 240 fnt6 2514 1008(display)m +220 fnt2 3321 1003(})m 240 fnt6 480 720(following)m 1438(te)s 4(xt)k +240 fnt1 0 219(This)m 491(presents)s 1340(a)s 1521(problem:)s +2499(if)s 220 fnt2 2731 216(@IndentedDispla)m 6(y)k 240 fnt1 +4593 219(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 fnt2 4261 504(//@DispGap)m 240 fnt1 -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 gsave 1417 -15423 translate @@ -14848,12 +15329,18 @@ showpage %%+ font Times-Italic %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt5 vec2 /Times-Bold LoutRecode /fnt5 { /Times-Boldfnt5 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt6 vec2 /Times-Italic LoutRecode /fnt6 { /Times-Italicfnt6 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -14868,75 +15355,70 @@ gsave 240 fnt5 1417 -1583(76)m 240 fnt6 8434 -1580(Chapter)m 9284(4.)s 9558(Examples)s gsave 1417 -15423 translate -240 fnt1 9066 13368 0 13264 240 288 60 LoutGraphic +240 fnt1 9066 13368 0 13259 240 288 60 LoutGraphic gsave 0 LoutMargSet grestore -220 fnt2 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 fnt1 1257 9545(and)m -220 fnt2 1657 9542(@Disp)m 240 fnt1 2366 9545(are)m 2709(not)s +0 13205(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 12917(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 fnt2 +4261 12914(//@DispGap)m 240 fnt1 5505 12917(cannot)m 6197(be)s 6473(included)s +7349(in)s 7586(it.)s 7876(The)s 8298(solution)s 0 12629(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 220 fnt2 480 12128( def @DispPlace { @Galle)m 4(y })k +480 11840( def @Disp into { @DispPlace&&preceding })m 480 11552( r)m -3(ight x)k 480 11264( {)m 480 10976( @OneRo)m 3(w x)k +480 10688( })m 480 10112( macro @IndentedDispla)m 6(y)k 480 9824( {)m 480 9536( //@DispGap |@DispIndent @DispPlace |)m +480 9248( //@DispGap // @Disp)m 480 8960( })m 0 8463(@DispPlace)m 240 fnt1 1257 8466(and)m +220 fnt2 1657 8463(@Disp)m 240 fnt1 2366 8466(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 +6997(clash)s 7541(with)s 8019(some)s 8575(other)s 0 8178(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 fnt6 480 8754(pr)m 8(eceding)k -1483(te)s 4(xt)k 220 fnt2 480 8461(//@DispGap |@DispIndent @DispPlace |)m 480 8173(//@DispGap // @Disp {)m -240 fnt6 2890 8178(display)m 220 fnt2 3637 8173(})m 240 fnt6 -480 7890(following)m 1438(te)s 4(xt)k 240 fnt1 0 7389(and)m -397(the)s 220 fnt2 737 7386(@Disp)m 240 fnt1 1442 7389(g)m 1(alle)k 3(y)k +3449(e)s 3(xpands)k 4282(to)s 240 fnt6 480 7675(pr)m 8(eceding)k +1483(te)s 4(xt)k 220 fnt2 480 7382(//@DispGap |@DispIndent @DispPlace |)m 480 7094(//@DispGap // @Disp {)m +240 fnt6 2890 7099(display)m 220 fnt2 3637 7094(})m 240 fnt6 +480 6811(following)m 1438(te)s 4(xt)k 240 fnt1 0 6310(and)m +397(the)s 220 fnt2 737 6307(@Disp)m 240 fnt1 1442 6310(g)m 1(alle)k 3(y)k 2068(appears)s 2842(at)s 3066(the)s 3406(preceding)s 220 fnt2 -4394 7386(@DispPlace)m 240 fnt1 5595 7389(,)m 5694(being)s 6272(itself)s -6812(replaced)s 7671(by)s 220 fnt2 7957 7386(@Null)m 240 fnt1 -8542 7389(.)m 8698(The)s 220 fnt2 0 7098(//)m 240 fnt1 -184 7101(symbol)m 942(protects)s 1748(the)s 2094(preceding)s 220 fnt2 -3088 7098(//@DispGap)m 240 fnt1 4337 7101(from)m 4859(being)s 5443(deleted)s -6189(by)s 6481(this)s 220 fnt2 6876 7098(@Null)m 240 fnt1 -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 +4394 6307(@DispPlace)m 240 fnt1 5595 6310(,)m 5694(being)s 6272(itself)s +6812(replaced)s 7671(by)s 220 fnt2 7957 6307(@Null)m 240 fnt1 +8542 6310(.)m 8698(The)s 220 fnt2 0 6019(//)m 240 fnt1 +184 6022(symbol)m 942(protects)s 1748(the)s 2094(preceding)s 220 fnt2 +3088 6019(//@DispGap)m 240 fnt1 4337 6022(from)m 4859(being)s 5443(deleted)s +6189(by)s 6481(this)s 220 fnt2 6876 6019(@Null)m 240 fnt1 +7519 6022(when)m 8094(there)s 8625(is)s 8833(no)s 0 5734(follo)m 6(wing)k +977(te)s 3(xt.)k 480 5360(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 +7532(of)s 7831(items,)s 8483(so,)s 8832(by)s 0 5072(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 fnt2 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 fnt1 0 4004(Notice)m 689(ho)s 6(w)k -1146(the)s 220 fnt2 1490 4001(@Ne)m 6(xt)k 240 fnt1 -2210 4004(symbol)m 2965(w)s 2(orks)k 3595(in)s 3834(conjunction)s +220 fnt2 480 4571(def @List r)m -3(ight n)k 2(um)k 480 4283({)m +480 3995( @DispIndent @Wide n)m 2(um.)k 13( | @ItemPlace)k 480 3707( //@DispGap @List @Ne)m 6(xt n)k 2(um)k +480 3419(})m 240 fnt1 0 2925(Notice)m 689(ho)s 6(w)k +1146(the)s 220 fnt2 1490 2922(@Ne)m 6(xt)k 240 fnt1 +2210 2925(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 fnt2 3349 3713(@List 1)m -240 fnt1 4113 3716(will)m 4539(be)s 220 fnt2 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 fnt1 0 1900(W)m 19(e)k 362(can)s 744(follo)s 6(w)k +7838(an)s 8116(ascending)s 0 2637(sequence)m 933(of)s 1204(numbers;)s +2140(the)s 2488(result)s 3078(of)s 220 fnt2 3349 2634(@List 1)m +240 fnt1 4113 2637(will)m 4539(be)s 220 fnt2 480 2136(1.)m 13( @ItemPlace)k +480 1848(2.)m 13( @ItemPlace)k 480 1560(3.)m 13( @ItemPlace)k 480 1272(...)m +240 fnt1 0 821(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 fnt2 5569 1897(@ItemPlace&&preceding)m 240 fnt1 8010 1900(,)m -8110(and)s 220 fnt2 8506 1897(@List)m 240 fnt1 0 1612(will)m +5338(to)s 220 fnt2 5569 818(@ItemPlace&&preceding)m 240 fnt1 8010 821(,)m +8110(and)s 220 fnt2 8506 818(@List)m 240 fnt1 0 533(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 +2580(accommodate)s 3964(them.)s 480 159(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 fnt2 -753 947(@List)m 240 fnt1 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 fnt2 -6070 371(@List)m 240 fnt1 6691 374(by)m 220 fnt2 6986 371(@Null)m -240 fnt1 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 +8540(une)s 3(x)k 8998(-)s grestore gsave 1417 -15423 translate @@ -14961,12 +15443,18 @@ showpage %%+ font Times-Bold %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt6 vec2 /Times-Italic LoutRecode /fnt6 { /Times-Italicfnt6 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt5 vec2 /Times-Bold LoutRecode /fnt5 { /Times-Boldfnt5 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -14982,60 +15470,65 @@ gsave 3082(displays,)s 3959(and)s 4385(lists)s 240 fnt5 10248 -1583(77)m gsave 1417 -15423 translate -240 fnt1 9066 13368 0 13264 240 288 60 LoutGraphic +240 fnt1 9066 13368 0 13259 240 288 60 LoutGraphic gsave 1 LoutMargSet grestore -220 fnt2 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 fnt1 0 6545(No)m 6(w)k 514(gi)s 6(v)k 3(en)k -1094(the)s 1442(input)s 220 fnt2 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 fnt1 1908 4149(will)m 2334(e)s 3(xpand)k +0 13205(panded)m 220 fnt2 753 13202(@List)m 240 fnt1 1313 13205(,)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 12917(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 12629(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 fnt2 6070 12626(@List)m +240 fnt1 6691 12629(by)m 220 fnt2 6986 12626(@Null)m 240 fnt1 +7571 12629(.)m 7735(This)s 8212(brings)s 8862(us)s 0 12341(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 220 fnt2 480 11840(def @ItemPlace { @Galle)m 4(y })k +480 11552(def @ListItem into { @ItemPlace&&preceding })m 480 11264( r)m -3(ight x)k 480 10976({ x })m 480 10484(def @EndListPlace { @Galle)m 4(y })k +480 10196(def @EndList f)m 6(orce into { @EndListPlace&&preceding })k 480 9908({})m 480 9416(def @Ra)m 4(wIndentedList)k +480 9128( named style r)m -3(ight tag {})k 480 8840( named indent { @DispIndent })m 480 8552( named gap { @DispGap })m 480 8264( named star)m -8(t { 1 })k +480 7976({)m 480 7688( def @IList r)m -3(ight n)k 2(um)k 480 7400( {)m +480 7112( indent @Wide {style n)m 2(um} | @ItemPlace)k 480 6824( //gap @IList @Ne)m 6(xt n)k 2(um)k +480 6536( })m 480 5960( @IList star)m -8(t // @EndListPlace)k 480 5672(})m 240 fnt1 +0 5178(No)m 6(w)k 514(gi)s 6(v)k 3(en)k +1094(the)s 1442(input)s 220 fnt2 480 4677(@Ra)m 4(wIndentedList)k +480 4389(@ListItem { \207rst item })m 480 4101(@ListItem { second item })m 480 3813(...)m 480 3525(@ListItem { last item })m 480 3237(@EndList)m +0 2779(@Ra)m 4(wIndentedList)k 240 fnt1 1908 2782(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 fnt2 7447 4146(@EndList)m -240 fnt1 8397 4149(.)m 480 3775(The)m 220 fnt2 913 3772(indent)m -240 fnt1 1506 3775(,)m 220 fnt2 1619 3772(gap)m 240 fnt1 -1977 3775(,)m 2089(and)s 220 fnt2 2499 3772(star)m -8(t)k -240 fnt1 2996 3775(parameters)m 4099(are)s 4452(straightforw)s 2(ard)k +6809(of)s 6(f)k 7153(by)s 220 fnt2 7447 2779(@EndList)m +240 fnt1 8397 2782(.)m 480 2408(The)m 220 fnt2 913 2405(indent)m +240 fnt1 1506 2408(,)m 220 fnt2 1619 2405(gap)m 240 fnt1 +1977 2408(,)m 2089(and)s 220 fnt2 2499 2405(star)m -8(t)k +240 fnt1 2996 2408(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 fnt2 8987 3772(1)m 240 fnt1 -0 3487(has)m 378(been)s 895(lifted)s 1464(from)s 1996(the)s +8039(of)s 8316(typing)s 220 fnt2 8987 2405(1)m 240 fnt1 +0 2120(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 fnt2 4543 3484(style)m 240 fnt1 5054 3487(parameter)m 6076(has)s +220 fnt2 4543 2117(style)m 240 fnt1 5054 2120(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 +8686(\(see)s 0 1832(page)m 508(16\).)s 991(It)s 1196(is)s 1406(used)s 1903(lik)s 2(e)k 2315(this:)s 220 fnt2 -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 fnt1 0 1911(In)m 220 fnt2 276 1908(@Ra)m 4(wNumberedList)k -240 fnt1 2294 1911(,)m 220 fnt2 2422 1908(style)m 240 fnt1 -2946 1911(is)m 3176(gi)s 6(v)k 3(en)k 3777(the)s -4146(v)s 6(alue)k 220 fnt2 4734 1908(tag.)m 240 fnt1 -5081 1911(,)m 5209(where)s 220 fnt2 5870 1908(tag)m 240 fnt1 -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 fnt2 1187 1620({style n)m 2(um})k 240 fnt1 -2321 1623(within)m 220 fnt2 2989 1620(@IList)m 240 fnt1 3670 1623(is)m -220 fnt2 3880 1620(n)m 2(um.)k 240 fnt1 4347 1623(;)m -4459(while)s 5046(in)s 220 fnt2 5289 1620(@Ra)m 4(wP)k 8(arenNumberedList)k -240 fnt1 7884 1623(,)m 220 fnt2 7992 1620({style n)m 2(um})k -240 fnt1 0 1335(is)m 220 fnt2 219 1332(\(n)m 2(um\))k -240 fnt1 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 fnt2 725 1044(@Ra)m 4(wIndentedList)k -240 fnt1 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 +480 1331(def @Ra)m 4(wNumberedList { @Ra)k 4(wIndentedList style { tag.)k 13( } })k 480 1043(def @Ra)m 4(wP)k 8(arenNumberedList { @Ra)k 4(wIndentedList style { \(tag\) } })k +240 fnt1 0 544(In)m 220 fnt2 276 541(@Ra)m 4(wNumberedList)k +240 fnt1 2294 544(,)m 220 fnt2 2422 541(style)m 240 fnt1 +2946 544(is)m 3176(gi)s 6(v)k 3(en)k 3777(the)s +4146(v)s 6(alue)k 220 fnt2 4734 541(tag.)m 240 fnt1 +5081 544(,)m 5209(where)s 220 fnt2 5870 541(tag)m 240 fnt1 +6243 544(is)m 6474(its)s 6771(o)s 6(wn)k 7255(right)s +7787(parameter)s 9(,)k 8860(so)s 0 256(the)m 348(v)s 6(alue)k +916(of)s 220 fnt2 1187 253({style n)m 2(um})k 240 fnt1 +2321 256(within)m 220 fnt2 2989 253(@IList)m 240 fnt1 3670 256(is)m +220 fnt2 3880 253(n)m 2(um.)k 240 fnt1 4347 256(;)m +4459(while)s 5046(in)s 220 fnt2 5289 253(@Ra)m 4(wP)k 8(arenNumberedList)k +240 fnt1 7884 256(,)m 220 fnt2 7992 253({style n)m 2(um})k + grestore gsave 1417 -15423 translate @@ -15060,12 +15553,18 @@ showpage %%+ font Times-Italic %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt5 vec2 /Times-Bold LoutRecode /fnt5 { /Times-Boldfnt5 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt6 vec2 /Times-Italic LoutRecode /fnt6 { /Times-Italicfnt6 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -15080,73 +15579,81 @@ gsave 240 fnt5 1417 -1583(78)m 240 fnt6 8434 -1580(Chapter)m 9284(4.)s 9558(Examples)s gsave 1417 -15423 translate -240 fnt1 9066 13368 0 13264 240 288 60 LoutGraphic +240 fnt1 9066 13368 0 13259 240 288 60 LoutGraphic gsave 0 LoutMargSet grestore -220 fnt2 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 fnt1 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 fnt2 6600 12046(@Ne)m 6(xt)k -240 fnt1 7322 12049(will)m 7747(not)s 8111(increment)s 0 11761(Roman)m +0 13205(is)m 220 fnt2 219 13202(\(n)m 2(um\))k +240 fnt1 776 13205(.)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 12917(re)m 6(write)k 220 fnt2 725 12914(@Ra)m 4(wIndentedList)k +240 fnt1 2633 12917(o)m 3(v)k 3(er)k 3112(and)s +3516(o)s 3(v)k 3(er)k 13(.)k 480 12543(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 12255(for)m 338(displays)s +1173(are)s 1520(needed:)s 220 fnt2 480 11754(macro @NumberedList { //@DispGap @Ra)m 4(wNumberedList //@DispGap })k +480 11466(macro @P)m 8(arenNumberedList { //@DispGap @Ra)k 4(wP)k 8(arenNumberedList //@DispGap })k 240 fnt1 +0 10970(and)m 404(so)s 670(on.)s 480 10596(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 fnt2 6600 10593(@Ne)m 6(xt)k +240 fnt1 7322 10596(will)m 7747(not)s 8111(increment)s 0 10308(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 fnt2 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 fnt1 -1602 9322(is)m 1835(preferred)s 2790(o)s 3(v)k 3(er)k -220 fnt2 3292 9319(@Database)m 240 fnt1 4529 9322(here)m 5019(because)s +220 fnt2 480 9807(def @Roman)m 480 9519( left @T)m 26(ag)k 480 9231( r)m -3(ight @V)k 15(al)k +480 8943({ @V)m 15(al })k 480 8367(@SysDatabase @Roman { standard })m 0 7866(@SysDatabase)m 240 fnt1 +1602 7869(is)m 1835(preferred)s 2790(o)s 3(v)k 3(er)k +220 fnt2 3292 7866(@Database)m 240 fnt1 4529 7869(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 +8694(in)s 8960(a)s 0 7581(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 fnt2 7029 9031(standard.ld)m 240 fnt1 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 fnt2 2819 8743(@Roman)m 240 fnt1 3735 8746(,)m +6389(called)s 220 fnt2 7029 7578(standard.ld)m 240 fnt1 8174 7581(in)m +8429(Basser)s 0 7293(Lout,)m 559(contains)s 1407(in)s 9(v)k 4(ocations)k +2548(of)s 220 fnt2 2819 7290(@Roman)m 240 fnt1 3735 7293(,)m 3842(each)s 4337(enclosed)s 5232(in)s 5475(braces:)s 220 fnt2 -480 8264({ 1 @Roman i })m 480 7976({ 2 @Roman ii })m 480 7688(...)m 480 7400({ 100 @Roman c })m 240 fnt1 -0 6906(Then)m 220 fnt2 549 6903(@Roman&&12)m 240 fnt1 2065 6906(for)m +480 6811({ 1 @Roman i })m 480 6523({ 2 @Roman ii })m 480 6235(...)m 480 5947({ 100 @Roman c })m 240 fnt1 +0 5453(Then)m 220 fnt2 549 5450(@Roman&&12)m 240 fnt1 2065 5453(for)m 2403(e)s 3(xample)k 3266(has)s 3636(v)s 6(alue)k -4204(xii,)s 4563(and)s 220 fnt2 480 6405(def @Ra)m 4(wRomanList { @Ra)k 4(wIndentedList style { {@Roman&&tag}.)k 13( } })k -240 fnt1 0 5906(produces)m 922(a)s 1096(list)s 1454(numbered)s +4204(xii,)s 4563(and)s 220 fnt2 480 4952(def @Ra)m 4(wRomanList { @Ra)k 4(wIndentedList style { {@Roman&&tag}.)k 13( } })k +240 fnt1 0 4453(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 +8631(each)s 0 4165(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 +8844(be)s 0 3877(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 fnt5 0 4538(4.3.)m 471(P)s 2(age)k 1017(lay)s 6(out)k -240 fnt1 480 4061(The)m 921(page)s 1443(layout)s 2115(de\207nitions)s +240 fnt5 0 3085(4.3.)m 471(P)s 2(age)k 1017(lay)s 6(out)k +240 fnt1 480 2608(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 +7791(basic.)s 8460(In)s 8730(this)s 0 2320(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 +7833(out)s 8191(the)s 8530(pages)s 0 2032(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 +8474(pages,)s 0 1744(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 +4897(these)s 5444(de\207nitions.)s 480 1370(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 +8686(`see)s 0 1082(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 fnt2 756 2244(@P)m 8(ageMar)k -3(k intro)k -240 fnt1 2454 2247(,)m 2560(for)s 2897(e)s 3(xample,)k +8322(page)s 8832(by)s 0 794(placing)m 220 fnt2 756 791(@P)m 8(ageMar)k -3(k intro)k +240 fnt1 2454 794(,)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 fnt2 0 1956(@P)m 8(ageOf intro)k -240 fnt1 1499 1959(else)m 6(where:)k 220 fnt2 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 - +8369(page)s 8876(as)s 220 fnt2 0 503(@P)m 8(ageOf intro)k +240 fnt1 1499 506(else)m 6(where:)k grestore gsave 1417 -15423 translate @@ -15171,12 +15678,18 @@ showpage %%+ font Times-Bold %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt6 vec2 /Times-Italic LoutRecode /fnt6 { /Times-Italicfnt6 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt5 vec2 /Times-Bold LoutRecode /fnt5 { /Times-Boldfnt5 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -15191,73 +15704,75 @@ gsave 240 fnt6 1417 -1580(4.3.)m 1871(P)s 19(a)k 2(g)k 2(e)k 2393(layout)s 240 fnt5 10249 -1583(79)m gsave 1417 -15423 translate -240 fnt1 9066 13368 0 13267 240 288 60 LoutGraphic +240 fnt1 9066 13368 0 13264 240 288 60 LoutGraphic gsave 1 LoutMargSet grestore -220 fnt2 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 fnt1 0 11360(W)m 19(e)k 385(will)s +220 fnt2 480 13207(e)m 6(xpor)k -8(t @T)k 26(ag)k +480 12919(def @P)m 8(ageMar)k -3(k)k 4(er r)k -3(ight @T)k 26(ag { @Null })k +480 12422(def @P)m 8(ageMar)k -3(k r)k -3(ight x)k 480 12134({)m +480 11846( @P)m 8(ageMar)k -3(k)k 4(er&&preceding @T)k 26(agged x)k +480 11558(})m 480 11066(def @P)m 8(ageOf r)k -3(ight x)k 480 10778({)m +480 10490( @P)m 8(ageMar)k -3(k)k 4(er&&x @Open { @T)k 26(ag })k +480 10202(})m 240 fnt1 0 9708(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 fnt2 -3949 11357(@P)m 8(ageMar)k -3(k)k 4(er)k 240 fnt1 -5435 11360(appears)m 6233(before)s 6916(each)s 7428(page,)s 8004(with)s -220 fnt2 8503 11357(@T)m 26(ag)k 240 fnt1 0 11072(parameter)m +3949 9705(@P)m 8(ageMar)k -3(k)k 4(er)k 240 fnt1 +5435 9708(appears)m 6233(before)s 6916(each)s 7428(page,)s 8004(with)s +220 fnt2 8503 9705(@T)m 26(ag)k 240 fnt1 0 9420(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 fnt2 4850 11069(@P)m 8(ageMar)k -3(k intro)k -240 fnt1 6548 11072(,)m 6655(which)s 7297(e)s 3(xpands)k -8130(to)s 220 fnt2 480 10571(@P)m 8(ageMar)k -3(k)k 4(er&&preceding @T)k 26(agged intro)k -240 fnt1 0 10072(happens)m 855(to)s 1113(f)s 2(all)k +3564(Suppose)s 4432(that)s 220 fnt2 4850 9417(@P)m 8(ageMar)k -3(k intro)k +240 fnt1 6548 9420(,)m 6655(which)s 7297(e)s 3(xpands)k +8130(to)s 220 fnt2 480 8919(@P)m 8(ageMar)k -3(k)k 4(er&&preceding @T)k 26(agged intro)k +240 fnt1 0 8420(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 fnt2 -7819 10069(@Null)m 240 fnt1 8484 10072(which)m 0 9784(mak)m 2(es)k +7819 8417(@Null)m 240 fnt1 8484 8420(which)m 0 8132(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 fnt2 3859 9781(@T)m 26(agged)k -240 fnt1 4874 9784(is)m 5111(to)s 5377(attach)s 220 fnt2 -6030 9781(intro)m 240 fnt1 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 fnt2 1401 9493(@P)m 8(ageMar)k -3(k)k 4(er)k -240 fnt1 2908 9496(preceding)m 3943(that)s 4399(\207nal)s 4917(point,)s +2939(ef)s 6(fect)k 3561(of)s 220 fnt2 3859 8129(@T)m 26(agged)k +240 fnt1 4874 8132(is)m 5111(to)s 5377(attach)s 220 fnt2 +6030 8129(intro)m 240 fnt1 6536 8132(as)m 6812(an)s 7122(e)s 3(xtra)k +7683(tag)s 8054(to)s 8320(the)s 8695(\207rst)s 0 7844(in)m 9(v)k 4(ocation)k +1092(of)s 220 fnt2 1401 7841(@P)m 8(ageMar)k -3(k)k 4(er)k +240 fnt1 2908 7844(preceding)m 3943(that)s 4399(\207nal)s 4917(point,)s 5554(and)s 5997(this)s 6431(must)s 6994(be)s 220 fnt2 -7315 9493(@P)m 8(ageMar)k -3(k)k 4(er 27)k 240 fnt1 -9022 9496(.)m 0 9208(Therefore)m 997(the)s 1345(e)s 3(xpression)k -220 fnt2 480 8707(@P)m 8(ageMar)k -3(k)k 4(er&&intro @Open { @T)k 26(ag })k -240 fnt1 0 8208(will)m 422(open)s 941(the)s 1285(in)s 9(v)k 4(ocation)k -220 fnt2 2334 8205(@P)m 8(ageMar)k -3(k)k 4(er 27)k -240 fnt1 4097 8208(and)m 4497(yield)s 5028(the)s 5372(v)s 6(alue)k -5936(of)s 6203(its)s 220 fnt2 6474 8205(@T)m 26(ag)k -240 fnt1 7093 8208(parameter)m 9(,)k 8141(27.)s 8540(Thus,)s -220 fnt2 0 7917(@P)m 8(ageOf intro)k 240 fnt1 1499 7920(appearing)m +7315 7841(@P)m 8(ageMar)k -3(k)k 4(er 27)k 240 fnt1 +9022 7844(.)m 0 7556(Therefore)m 997(the)s 1345(e)s 3(xpression)k +220 fnt2 480 7055(@P)m 8(ageMar)k -3(k)k 4(er&&intro @Open { @T)k 26(ag })k +240 fnt1 0 6556(will)m 422(open)s 941(the)s 1285(in)s 9(v)k 4(ocation)k +220 fnt2 2334 6553(@P)m 8(ageMar)k -3(k)k 4(er 27)k +240 fnt1 4097 6556(and)m 4497(yield)s 5028(the)s 5372(v)s 6(alue)k +5936(of)s 6203(its)s 220 fnt2 6474 6553(@T)m 26(ag)k +240 fnt1 7093 6556(parameter)m 9(,)k 8141(27.)s 8540(Thus,)s +220 fnt2 0 6265(@P)m 8(ageOf intro)k 240 fnt1 1499 6268(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 +5073(yields)s 5695(27.)s 480 5894(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 fnt2 6873 7543(@FullPlace)m -240 fnt1 8055 7546(will)m 8488(be)s 8778(the)s 0 7258(tar)m 4(get)k +5617(of)s 5895(the)s 6250(page.)s 220 fnt2 6873 5891(@FullPlace)m +240 fnt1 8055 5894(will)m 8488(be)s 8778(the)s 0 5606(tar)m 4(get)k 599(of)s 870(full-width)s 1882(body)s 2416(te)s 3(xt:)k -220 fnt2 480 6757(def @FullPlace { @Galle)m 4(y })k 0 6256(@ColPlace)m 240 fnt1 -1151 6259(will)m 1577(be)s 1859(the)s 2207(tar)s 4(get)k +220 fnt2 480 5105(def @FullPlace { @Galle)m 4(y })k 0 4604(@ColPlace)m 240 fnt1 +1151 4607(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 fnt2 480 5758(def @ColPlace { @Galle)m 4(y })k -0 5257(@T)m 26(opList)k 240 fnt1 972 5260(will)m 1398(be)s +4694(one)s 5096(column:)s 220 fnt2 480 4106(def @ColPlace { @Galle)m 4(y })k +0 3605(@T)m 26(opList)k 240 fnt1 972 3608(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 fnt2 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 fnt1 0 2825(W)m 19(e)k 392(ha)s 4(v)k 3(e)k +3600(and)s 4004(tables:)s 220 fnt2 480 3107(e)m 6(xpor)k -8(t @T)k 26(ag)k +480 2819(def @T)m 26(opList r)k -3(ight @T)k 26(ag)k 480 2531({)m +480 2243( @Galle)m 4(y)k 480 1955( //@T)m 26(opGap @T)k 26(opList @Ne)k 6(xt @T)k 26(ag)k +480 1667(})m 240 fnt1 0 1173(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 fnt2 5555 2822(@T)m 26(opPlace)k 240 fnt1 6753 2825(symbol.)m -220 fnt2 7645 2822(@F)m 6(ootList)k 240 fnt1 8722 2825(and)m -220 fnt2 0 2534(@F)m 6(ootSect)k 240 fnt1 1142 2537(de\207ne)m +220 fnt2 5555 1170(@T)m 26(opPlace)k 240 fnt1 6753 1173(symbol.)m +220 fnt2 7645 1170(@F)m 6(ootList)k 240 fnt1 8722 1173(and)m +220 fnt2 0 882(@F)m 6(ootSect)k 240 fnt1 1142 885(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 +6390(page)s 6889(for)s 7218(footnotes,)s 8205(preceded)s 0 597(by)m 294(a)s 460(short)s 998(horizontal)s 2022(line:)s 220 fnt2 -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 +480 96(e)m 6(xpor)k -8(t @T)k 26(ag)k grestore gsave 1417 -15423 translate @@ -15282,12 +15797,18 @@ showpage %%+ font Times-Italic %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt5 vec2 /Times-Bold LoutRecode /fnt5 { /Times-Boldfnt5 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt6 vec2 /Times-Italic LoutRecode /fnt6 { /Times-Italicfnt6 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -15306,47 +15827,46 @@ gsave gsave 0 LoutMargSet grestore -220 fnt2 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 fnt1 0 11561(Similarly)m 15(,)k 220 fnt2 -988 11558(@ColF)m 6(ootList)k 240 fnt1 2378 11561(and)m 220 fnt2 -2791 11558(@ColF)m 6(ootSect)k 240 fnt1 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 fnt2 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 fnt1 0 7160(The)m 428(ne)s 3(xt)k 897(de\207nition)s +220 fnt2 480 13207(def @F)m 6(ootList r)k -3(ight @T)k 26(ag)k +480 12919({)m 480 12631( @Galle)m 4(y)k 480 12343( //@F)m 6(ootGap @F)k 6(ootList @Ne)k 6(xt @T)k 26(ag)k +480 12055(})m 480 11563(def @F)m 6(ootSect)k 480 11275({)m 480 10987( @F)m 6(ootLen @Wide @HLine)k +480 10699( //@F)m 6(ootGap @F)k 6(ootList 1 ||@F)k 6(ootLen)k 480 10411(})m +240 fnt1 0 9917(Similarly)m 15(,)k 220 fnt2 988 9914(@ColF)m 6(ootList)k +240 fnt1 2378 9917(and)m 220 fnt2 2791 9914(@ColF)m 6(ootSect)k +240 fnt1 4279 9917(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 9629(one)m 402(column:)s 220 fnt2 480 9178(e)m 6(xpor)k -8(t @T)k 26(ag)k +480 8890(def @ColF)m 6(ootList r)k -3(ight @T)k 26(ag)k 480 8602({)m +480 8314( @Galle)m 4(y)k 480 8026( //@F)m 6(ootGap @ColF)k 6(ootList @Ne)k 6(xt @T)k 26(ag)k +480 7738(})m 480 7162(def @ColF)m 6(ootSect)k 480 6874({)m 480 6586( @ColF)m 6(ootLen @Wide @HLine)k +480 6298( //@F)m 6(ootGap @ColF)k 6(ootList 1 ||@ColF)k 6(ootLen)k 480 6010(})m +240 fnt1 0 5516(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 fnt2 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 fnt1 -0 3285(Each)m 537(column)s 1315(consists)s 2125(of)s 2399(a)s -220 fnt2 2568 3282(@ColPlace)m 240 fnt1 3721 3285(at)m 3956(the)s -4307(top)s 4668(and)s 5075(a)s 220 fnt2 5243 3282(@F)m 6(ootSect)k -240 fnt1 6397 3285(at)m 6632(the)s 6982(foot.)s 7534(The)s -220 fnt2 7965 3282(@VExpand)m 240 fnt1 0 2997(symbol)m 772(ensures)s +220 fnt2 480 5015(def @ColList r)m -3(ight col)k 480 4727({)m 480 4439( def @Column)m +480 4151( { @VExpand { @ColPlace //1r)m -8(t @OneRo)k 3(w { //@MidGap @ColF)k 6(ootSect } } })k 480 3575( col @Case {)m +480 3287( Single @Y)m 4(ield @Column)k 480 2999( Doub)m 4(le @Y)k 4(ield { @Doub)k 4(leColWidth @Wide @Column ||@ColGap @ColList col })k +480 2711( Multi @Y)m 4(ield { @MultiColWidth @Wide @Column ||@ColGap @ColList col })k 480 2423( })m 480 2135(})m 240 fnt1 +0 1641(Each)m 537(column)s 1315(consists)s 2125(of)s 2399(a)s +220 fnt2 2568 1638(@ColPlace)m 240 fnt1 3721 1641(at)m 3956(the)s +4307(top)s 4668(and)s 5075(a)s 220 fnt2 5243 1638(@F)m 6(ootSect)k +240 fnt1 6397 1641(at)m 6632(the)s 6982(foot.)s 7534(The)s +220 fnt2 7965 1638(@VExpand)m 240 fnt1 0 1353(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 fnt2 -2315 2706(//1r)m -8(t)k 240 fnt1 2769 2709(has)m 3152(as)s +8429(so)s 8708(that)s 0 1065(the)m 360(bottom-justi\207cation)s 220 fnt2 +2315 1062(//1r)m -8(t)k 240 fnt1 2769 1065(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 fnt2 -7773 2706(col)m 240 fnt1 8112 2709(parameter)m 0 2421(determines)m 1099(whether)s +7773 1062(col)m 240 fnt1 8112 1065(parameter)m 0 777(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 fnt2 908 2044(@P)m 8(age)k -240 fnt1 1687 2047(symbol)m 2447(places)s 3095(its)s 3371(parameter)s +7592(columns.)s 480 403(The)m 220 fnt2 908 400(@P)m 8(age)k +240 fnt1 1687 403(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 fnt2 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 gsave 1417 -15423 translate @@ -15371,12 +15891,18 @@ showpage %%+ font Times-Bold %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt6 vec2 /Times-Italic LoutRecode /fnt6 { /Times-Italicfnt6 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt5 vec2 /Times-Bold LoutRecode /fnt5 { /Times-Boldfnt5 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -15395,68 +15921,65 @@ gsave gsave 1 LoutMargSet grestore -220 fnt2 480 13207( ||@P)m 8(ageMargin //@P)k 8(ageMargin)k -480 12919( })m 480 12631(})m 0 12134(@HExpand)m 240 fnt1 1169 12137(and)m -220 fnt2 1568 12134(@VExpand)m 240 fnt1 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 fnt2 6036 11846(@High)m 240 fnt1 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 fnt2 -1838 11184(@OneP)m 8(age)k 240 fnt1 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 fnt2 -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 fnt1 0 6736(The)m 431(page)s +220 fnt2 480 13207(def @P)m 8(age r)k -3(ight x)k +480 12919({)m 480 12631( @P)m 8(ageWidth @Wide @P)k 8(ageHeight @High {)k 480 12343( //@P)m 8(ageMargin ||@P)k 8(ageMargin)k +480 12055( @HExpand @VExpand x)m 480 11767( ||@P)m 8(ageMargin //@P)k 8(ageMargin)k 480 11479( })m +480 11191(})m 0 10694(@HExpand)m 240 fnt1 1169 10697(and)m 220 fnt2 +1568 10694(@VExpand)m 240 fnt1 2725 10697(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 10409(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 fnt2 6036 10406(@High)m 240 fnt1 6763 10409(symbol)m 7531(gi)s 6(v)k 3(es)k +8087(the)s 8443(page)s 8960(a)s 0 10121(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 9747(Ne)m 3(xt)k 1002(we)s 1337(ha)s 4(v)k 3(e)k +220 fnt2 1838 9744(@OneP)m 8(age)k 240 fnt1 2972 9747(,)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 fnt2 480 9246(def @OneP)m 8(age)k 480 8958( named @Columns {})m 480 8670( named @P)m 8(ageT)k 26(op {})k +480 8382( named @P)m 8(ageF)k 6(oot {})k 480 8094({)m 480 7806( @P)m 8(age {)k +480 7518( @P)m 8(ageT)k 26(op)k 480 7230( //@MidGap @T)m 26(opList)k +480 6942( //@MidGap @FullPlace)m 480 6654( //@MidGap @ColList @Columns)m 480 6366( // //1r)m -8(t @OneRo)k 3(w { //@MidGap @F)k 6(ootSect //@MidGap @P)k 8(ageF)k 6(oot })k +480 6078( })m 480 5790(})m 240 fnt1 0 5296(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 fnt2 565 6445(@OneP)m 8(age)k -240 fnt1 1747 6448(is)m 1946(in)s 9(v)k 4(ok)k 2(ed.)k +8643(later)s 0 5008(when)m 220 fnt2 565 5005(@OneP)m 8(age)k +240 fnt1 1747 5008(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 fnt2 1595 6157(//)m 240 fnt1 1777 6160(symbol)m 2533(protects)s -3337(the)s 3681(follo)s 6(wing)k 220 fnt2 4655 6157(//1r)m -8(t)k -240 fnt1 5093 6160(from)m 5614(deletion)s 6437(in)s 6677(the)s +7998(of)s 8257(pre)s 6(vious)k 0 4720(de\207nitions.)m 1171(The)s +220 fnt2 1595 4717(//)m 240 fnt1 1777 4720(symbol)m 2533(protects)s +3337(the)s 3681(follo)s 6(wing)k 220 fnt2 4655 4717(//1r)m -8(t)k +240 fnt1 5093 4720(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 fnt2 3662 5869(@Null)m -240 fnt1 4247 5872(.)m 4405(The)s 4826(follo)s 6(wing)k +8419(that)s 8833(all)s 0 4432(the)m 342(preceding)s 1331(symbols)s +2174(are)s 2514(replaced)s 3375(by)s 220 fnt2 3662 4429(@Null)m +240 fnt1 4247 4432(.)m 4405(The)s 4826(follo)s 6(wing)k 5797(object)s 6434(is)s 6638(enclosed)s 7526(in)s 220 fnt2 -7763 5869(@OneRo)m 3(w)k 240 fnt1 8887 5872(to)m 0 5584(ensure)m +7763 4429(@OneRo)m 3(w)k 240 fnt1 8887 4432(to)m 0 4144(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 +5176(component.)s 480 3770(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 +8665(ho)s 6(w)k 0 3482(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 fnt2 1248 4631(@Runner)m 240 fnt1 2250 4634(symbol:)m -220 fnt2 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 fnt1 0 1623(The)m +7085(produced.)s 8146(These)s 8779(are)s 0 3194(based)m 603(on)s +900(the)s 220 fnt2 1248 3191(@Runner)m 240 fnt1 2250 3194(symbol:)m +220 fnt2 480 2693(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 2405(def @Runner)m 480 2117( named @T)m 26(opOdd r)k -3(ight @P)k 8(ageNum { @Null })k +480 1829( named @T)m 26(opEv)k 5(en r)k -3(ight @P)k 8(ageNum { @Null })k +480 1541( named @F)m 6(ootOdd r)k -3(ight @P)k 8(ageNum { @Null })k 480 1253( named @F)m 6(ootEv)k 5(en r)k -3(ight @P)k 8(ageNum { @Null })k +480 965( named @T)m 26(ag {})k 480 677({ @Null })m 240 fnt1 0 183(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 fnt2 -2719 1332(@Runner)m 240 fnt1 3661 1335(,)m 3768(for)s 4106(e)s 3(xample)k -220 fnt2 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 +8530(pages)s grestore gsave 1417 -15423 translate @@ -15481,12 +16004,18 @@ showpage %%+ font Times-Italic %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt5 vec2 /Times-Bold LoutRecode /fnt5 { /Times-Boldfnt5 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt6 vec2 /Times-Italic LoutRecode /fnt6 { /Times-Italicfnt6 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -15501,71 +16030,74 @@ gsave 240 fnt5 1417 -1583(82)m 240 fnt6 8434 -1580(Chapter)m 9284(4.)s 9558(Examples)s gsave 1417 -15423 translate -240 fnt1 9066 13368 0 13368 240 288 60 LoutGraphic +240 fnt1 9066 13368 0 13259 240 288 60 LoutGraphic gsave 0 LoutMargSet grestore -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 fnt2 296 12914(@Runner&&f)m 6(ollo)k 3(wing)k -240 fnt1 2423 12917(cross)m 2967(references)s 4001(on)s 4301(the)s +0 13205(respecti)m 6(v)k 3(ely)k 15(.)k +1294(In)s 9(v)k 4(ocations)k 2448(of)s 220 fnt2 +2719 13202(@Runner)m 240 fnt1 3661 13205(,)m 3768(for)s 4106(e)s 3(xample)k +220 fnt2 480 12704(@Runner)m 480 12416( @T)m 26(opEv)k 5(en { @B @P)k 8(ageNum |1r)k -8(t @I { Chapter 4 } })k +480 12128( @T)m 26(opOdd { @I { Examples } |1r)k -8(t @B @P)k 8(ageNum })k 240 fnt1 +0 11629(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 11341(by)m 220 fnt2 296 11338(@Runner&&f)m 6(ollo)k 3(wing)k +240 fnt1 2423 11341(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 fnt2 6873 12914(@P)m 8(ageNum)k 240 fnt1 8112 12917(parameter)m -0 12629(of)m 265(each)s 753(parameter)s 1761(allo)s 6(ws)k +220 fnt2 6873 11338(@P)m 8(ageNum)k 240 fnt1 8112 11341(parameter)m +0 11053(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 +7531(lea)s 4(ving)k 8277(the)s 8618(page)s 0 10765(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 fnt2 2393 11964(@OddP)m 8(ageList)k 240 fnt1 -3872 11967(,)m 3973(whose)s 4635(result)s 5219(is)s 5423(a)s +480 10391(W)m 19(e)k 843(may)s 1303(no)s 6(w)k +1758(de\207ne)s 220 fnt2 2393 10388(@OddP)m 8(ageList)k 240 fnt1 +3872 10391(,)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 fnt2 -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 fnt1 -0 6076(Ignoring)m 220 fnt2 887 6073(@Ev)m 5(enP)k 8(ageList)k -240 fnt1 2516 6076(for)m 2865(the)s 3223(moment,)s 4125(notice)s +8367(with)s 8843(an)s 0 10103(odd-numbered)m 1454(page:)s 220 fnt2 +480 9602(def @OddP)m 8(ageList)k 480 9314( named @Columns {})m 480 9026( r)m -3(ight @P)k 8(ageNum)k +480 8738({)m 480 8450( def @Ev)m 5(enP)k 8(ageList ...)k 480 7874( @P)m 8(ageMar)k -3(k)k 4(er @P)k 8(ageNum)k +480 7586( // @Runner&&f)m 6(ollo)k 3(wing @Open {)k 480 7298( @OneP)m 8(age)k +480 7010( @Columns { @Columns })m 480 6722( @P)m 8(ageT)k 26(op { @T)k 26(opOdd @P)k 8(ageNum })k +480 6434( @P)m 8(ageF)k 6(oot { @F)k 6(ootOdd @P)k 8(ageNum })k +480 6146( })m 480 5858( // @Ev)m 5(enP)k 8(ageList)k 480 5570( @Columns { @Columns })m +480 5282( @Ne)m 6(xt @P)k 8(ageNum)k 480 4994(})m 240 fnt1 +0 4500(Ignoring)m 220 fnt2 887 4497(@Ev)m 5(enP)k 8(ageList)k +240 fnt1 2516 4500(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 fnt2 7350 6073(@OneP)m 8(age)k 240 fnt1 -8554 6076(is)m 8775(en)s 8998(-)s 0 5788(closed)m 679(in)s -220 fnt2 932 5785(@Runner&&f)m 6(ollo)k 3(wing @Open)k 240 fnt1 -3815 5788(.)m 3989(Since)s 220 fnt2 4586 5785(@Runner&&f)m 6(ollo)k 3(wing)k -240 fnt1 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 fnt2 684 5497(@Runner)m 240 fnt1 1678 5500(appearing)m +7068(of)s 220 fnt2 7350 4497(@OneP)m 8(age)k 240 fnt1 +8554 4500(is)m 8775(en)s 8998(-)s 0 4212(closed)m 679(in)s +220 fnt2 932 4209(@Runner&&f)m 6(ollo)k 3(wing @Open)k 240 fnt1 +3815 4212(.)m 3989(Since)s 220 fnt2 4586 4209(@Runner&&f)m 6(ollo)k 3(wing)k +240 fnt1 6721 4212(refers)m 7324(to)s 7573(the)s 7931(\207rst)s +8373(in)s 9(v)k 4(oca)k 8998(-)s 0 3924(tion)m +421(of)s 220 fnt2 684 3921(@Runner)m 240 fnt1 1678 3924(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 fnt2 -7692 5497(@T)m 26(opOdd)k 240 fnt1 8722 5500(and)m 220 fnt2 -0 5209(@F)m 6(ootOdd)k 240 fnt1 1127 5212(will)m 1562(tak)s 2(e)k +7692 3921(@T)m 26(opOdd)k 240 fnt1 8722 3924(and)m 220 fnt2 +0 3633(@F)m 6(ootOdd)k 240 fnt1 1127 3636(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 fnt2 5777 5209(@Runner)m 240 fnt1 6788 5212(follo)m 6(wing)k -7773(the)s 8130(top)s 8498(of)s 8778(the)s 0 4924(page,)m +220 fnt2 5777 3633(@Runner)m 240 fnt1 6788 3636(follo)m 6(wing)k +7773(the)s 8130(top)s 8498(of)s 8778(the)s 0 3348(page,)m 554(e)s 6(v)k 3(en)k 1049(though)s 220 fnt2 -1767 4921(@F)m 6(ootOdd)k 240 fnt1 2880 4924(appears)m 3656(at)s +1767 3345(@F)m 6(ootOdd)k 240 fnt1 2880 3348(appears)m 3656(at)s 3883(the)s 4225(foot)s 4665(of)s 4931(the)s 5274(page.)s -5884(Their)s 220 fnt2 6456 4921(@P)m 8(ageNum)k 240 fnt1 -7687 4924(parameters)m 8779(are)s 0 4636(replaced)m 867(by)s 220 fnt2 -1161 4633(@P)m 8(ageNum)k 240 fnt1 2337 4636(,)m 2444(the)s +5884(Their)s 220 fnt2 6456 3345(@P)m 8(ageNum)k 240 fnt1 +7687 3348(parameters)m 8779(are)s 0 3060(replaced)m 867(by)s 220 fnt2 +1161 3057(@P)m 8(ageNum)k 240 fnt1 2337 3060(,)m 2444(the)s 2792(actual)s 3417(page)s 3925(number)s 4716(parameter)s 5730(of)s -220 fnt2 6001 4633(@OddP)m 8(ageList)k 240 fnt1 7480 4636(.)m -480 4262(After)m 1043(producing)s 2067(the)s 2415(odd-numbered)s 3869(page,)s -220 fnt2 4428 4259(@OddP)m 8(ageList)k 240 fnt1 5967 4262(in)m 9(v)k 4(ok)k 2(es)k -220 fnt2 6748 4259(@Ev)m 5(enP)k 8(ageList)k 240 fnt1 -8307 4262(:)m 220 fnt2 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 +220 fnt2 6001 3057(@OddP)m 8(ageList)k 240 fnt1 7480 3060(.)m +480 2686(After)m 1043(producing)s 2067(the)s 2415(odd-numbered)s 3869(page,)s +220 fnt2 4428 2683(@OddP)m 8(ageList)k 240 fnt1 5967 2686(in)m 9(v)k 4(ok)k 2(es)k +220 fnt2 6748 2683(@Ev)m 5(enP)k 8(ageList)k 240 fnt1 +8307 2686(:)m 220 fnt2 480 2185(def @Ev)m 5(enP)k 8(ageList)k +480 1897( named @Columns {})m 480 1609( r)m -3(ight @P)k 8(ageNum)k 480 1321({)m +480 1033( @P)m 8(ageMar)k -3(k)k 4(er @P)k 8(ageNum)k +480 745( // @Runner&&f)m 6(ollo)k 3(wing @Open {)k 480 457( @OneP)m 8(age)k +480 169( @Columns { @Columns })m grestore gsave 1417 -15423 translate @@ -15590,12 +16122,18 @@ showpage %%+ font Times-Bold %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt6 vec2 /Times-Italic LoutRecode /fnt6 { /Times-Italicfnt6 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt5 vec2 /Times-Bold LoutRecode /fnt5 { /Times-Boldfnt5 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -15614,67 +16152,61 @@ gsave gsave 1 LoutMargSet grestore -220 fnt2 480 13207( @Ne)m 6(xt @P)k 8(ageNum)k -480 12919(})m 240 fnt1 0 12425(This)m 465(produces)s 1369(an)s +220 fnt2 480 13207( @P)m 8(ageT)k 26(op { @T)k 26(opEv)k 5(en @P)k 8(ageNum })k +480 12919( @P)m 8(ageF)k 6(oot { @F)k 6(ootEv)k 5(en @P)k 8(ageNum })k +480 12631( })m 480 12343( // @OddP)m 8(ageList)k 480 12055( @Columns { @Columns })m 480 11767( @Ne)m 6(xt @P)k 8(ageNum)k +480 11479(})m 240 fnt1 0 10985(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 fnt2 6291 12422(@OddP)m 8(ageList)k 240 fnt1 7819 12425(\211)m -7988(a)s 8142(delightful)s 0 12137(e)m 3(xample)k 877(of)s +220 fnt2 6291 10982(@OddP)m 8(ageList)k 240 fnt1 7819 10985(\211)m +7988(a)s 8142(delightful)s 0 10697(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 +0 10409(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 +5575(easily)s 6186(be)s 6468(made.)s 480 10035(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 fnt2 -5164 11472(@P)m 8(ageMar)k -3(k)k 4(er)k 240 fnt1 -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 fnt2 3726 11184(@P)m 8(ageMar)k -3(k)k 4(er)k -240 fnt1 5204 11187(is)m 5422(a)s 5597(component)s 6729(of)s +5164 10032(@P)m 8(ageMar)k -3(k)k 4(er)k 240 fnt1 +6630 10035(w)m 2(ould)k 7281(precede)s 8076(each)s 8567(page,)s +0 9747(and)m 412(this)s 817(has)s 1195(been)s 1713(done.)s +2351(Although)s 3322(this)s 220 fnt2 3726 9744(@P)m 8(ageMar)k -3(k)k 4(er)k +240 fnt1 5204 9747(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 +8499(it)s 8700(will)s 0 9459(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 fnt5 0 10106(4.4.)m 471(Chapters)s -1468(and)s 1909(sections)s 240 fnt1 480 9629(The)m 905(de\207nitions)s +6976(height)s 7634(zero.)s 240 fnt5 0 8666(4.4.)m 471(Chapters)s +1468(and)s 1909(sections)s 240 fnt1 480 8189(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 +8634(2)s 8804(\(in)s 0 7901(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 +7334(this)s 7736(section.)s 8583(The)s 3(y)k 0 7613(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 fnt2 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 fnt1 0 6616(W)m 9(ithin)k +2790(lik)s 2(e)k 3202(this:)s 220 fnt2 480 7112(@Chapter)m +480 6824( @Title { ...)m 13( })k 480 6536( @T)m 26(ag { ...)k 13( })k +480 6248(@Begin)m 480 5960( ...)m 480 5672(@End @Chapter)m 240 fnt1 0 5176(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 fnt2 480 6115(@BeginSections)m 480 5827(@Section { ...)m 13( })k -480 5539(...)m 480 5251(@Section { ...)m 13( })k 480 4963(@EndSections)m 240 fnt1 -0 4508(These)m 627(are)s 974(numbered)s 1989(automatically)s 15(,)k +5938(writing)s 220 fnt2 480 4675(@BeginSections)m 480 4387(@Section { ...)m 13( })k +480 4099(...)m 480 3811(@Section { ...)m 13( })k 480 3523(@EndSections)m 240 fnt1 +0 3068(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 +7159(of)s 7430(contents.)s 480 2694(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 fnt2 2179 3843(@NumberOf tag)m -240 fnt1 3838 3846(at)m 4081(an)s 3(y)k 4488(point)s +7666(or)s 7918(section)s 8644(with)s 0 2406(a)m 176(gi)s 6(v)k 3(en)k +766(tag)s 1121(by)s 1426(writing)s 220 fnt2 2179 2403(@NumberOf tag)m +240 fnt1 3838 2406(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 fnt2 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 fnt1 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 fnt2 5233 1403(@NumberMar)m -3(k)k 4(er)k -240 fnt1 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 fnt2 480 243(e)m 6(xpor)k -8(t @T)k 26(ag)k +7995(is)s 8215(based)s 8829(on)s 0 2118(the)m 348(follo)s 6(wing)k +1325(de\207nitions:)s 220 fnt2 480 1617(e)m 6(xpor)k -8(t @T)k 26(ag)k +480 1329(def @NumberMar)m -3(k)k 4(er r)k -3(ight @T)k 26(ag { @Null })k +480 753(def @NumberOf r)m -3(ight x)k 480 465({ @NumberMar)m -3(k)k 4(er&&x @Open { @T)k 26(ag } })k grestore gsave @@ -15700,12 +16232,18 @@ showpage %%+ font Times-Italic %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt5 vec2 /Times-Bold LoutRecode /fnt5 { /Times-Boldfnt5 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt6 vec2 /Times-Italic LoutRecode /fnt6 { /Times-Italicfnt6 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -15720,31 +16258,36 @@ gsave 240 fnt5 1417 -1583(84)m 240 fnt6 8434 -1580(Chapter)m 9284(4.)s 9558(Examples)s gsave 1417 -15423 translate -240 fnt1 9066 13368 0 13264 240 288 60 LoutGraphic +240 fnt1 9066 13368 0 13259 240 288 60 LoutGraphic gsave 0 LoutMargSet grestore -220 fnt2 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 fnt1 1505 11561(will)m 1967(usually)s -2747(be)s 220 fnt2 3065 11558(1.1b)m 240 fnt1 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 fnt2 0 11270(@Chapter)m 240 fnt1 1063 11273(g)m 1(alle)k 3(y)k +0 13205(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 fnt2 5233 13202(@NumberMar)m -3(k)k 4(er)k +240 fnt1 6918 13205(;)m 7017(a)s 7170(full)s 7543(e)s 3(xplanation)k +8700(will)s 0 12917(be)m 282(gi)s 6(v)k 3(en)k +862(later)s 13(.)k 480 12543(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 fnt2 480 12042(e)m 6(xpor)k -8(t @T)k 26(ag)k +480 11754(def @ChapterList r)m -3(ight @T)k 26(ag)k 480 11466({)m 480 11178( @Galle)m 4(y)k +480 10890( //@ChapterGap @ChapterList @Ne)m 6(xt @T)k 26(ag)k 480 10602(})m 0 10105(@ChapterGap)m +240 fnt1 1505 10108(will)m 1967(usually)s 2747(be)s 220 fnt2 +3065 10105(1.1b)m 240 fnt1 3484 10108(,)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 fnt2 0 9817(@Chapter)m 240 fnt1 1063 9820(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 fnt2 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 - +220 fnt2 480 9319(e)m 6(xpor)k -8(t @F)k 6(ootNote @BeginSections @EndSections @Section)k +480 9031(def @Chapter f)m 6(orce into { @ChapterList&&preceding })k 480 8743( named @T)m 26(ag {})k 480 8455( named @Title {})m +480 8167( named @RunningTitle { dft })m 480 7879( body @Body)m 480 7591({)m 480 7303( def @F)m 6(ootNote r)k -3(ight x { @ColF)k 6(ootNote x })k +480 6727( def @BeginSections ...)m 480 6439( def @EndSections ...)m 480 6151( def @Section ...)m 480 5698( def @ChapterTitle)m 480 5410( {)m +480 5122( @ChapterNumbers @Case {)m 480 4834( {Y)m 30(es y)k 4(es} @Y)k 4(ield { Chapter {@NumberOf @T)k 26(ag}.)k 13( |2s @Title })k +480 4546( else @Y)m 4(ield @Title)k 480 4258( })m 480 3970( })m 480 3394( def @ChapterNum)m +480 3106( {)m 480 2818( @ChapterNumbers @Case {)m 480 2530( {Y)m 30(es y)k 4(es} @Y)k 4(ield { Chapter {@NumberOf @T)k 26(ag} })k +480 2242( else @Y)m 4(ield @Null)k 480 1954( })m 480 1666( })m 480 1174( r)m 2(agged @Break @BookTitleF)k 6(or)k -5(mat @ChapterTitle)k +480 886( // @NumberMar)m -3(k)k 4(er {)k 480 598( @ChapterList&&@T)m 26(ag @Open { @T)k 26(ag })k +480 310( })m grestore gsave 1417 -15423 translate @@ -15769,12 +16312,18 @@ showpage %%+ font Times-Bold %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt6 vec2 /Times-Italic LoutRecode /fnt6 { /Times-Italicfnt6 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt5 vec2 /Times-Bold LoutRecode /fnt5 { /Times-Boldfnt5 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -15793,98 +16342,100 @@ gsave gsave 1 LoutMargSet grestore -220 fnt2 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 fnt1 0 10697(W)m 19(e)k 371(will)s 800(see)s +220 fnt2 480 13207( // @ChapterList&&preceding @T)m 26(agged @T)k 26(ag)k +480 12919( // @NumberMar)m -3(k)k 4(er&&preceding @T)k 26(agged @T)k 26(ag)k +480 12631( // @P)m 8(ageMar)k -3(k)k 4(er&&preceding @T)k 26(agged @T)k 26(ag)k +480 12343( // { @ChapterTitle } @MajorContentsEntr)m -6(y {@P)k 8(ageOf @T)k 26(ag})k 480 12055( // @Runner)m +480 11767( @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 11479( @F)m 6(ootOdd { |0.5r)k -8(t 0.8f @F)k 6(ont @B @P)k 8(ageNum })k +480 11191( // @Body)m 480 10903( //@SectionGap @ChapRefSection)m 480 10615( // @Runner)m 480 10327( @T)m 26(opEv)k 5(en { @B @P)k 8(ageNum |1r)k -8(t @I @ChapterNum })k +480 10039( @T)m 26(opOdd { @I {@RunningTitle @OrElse @Title} |1r)k -8(t @B @P)k 8(ageNum })k 480 9751(})m +240 fnt1 0 9257(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 fnt2 -2144 10406(@Chapter)m 240 fnt1 3147 10409(,)m 3254(by)s 3548(nesting)s +0 8969(the)m 348(right)s 859(parameter)s 1873(of)s 220 fnt2 +2144 8966(@Chapter)m 240 fnt1 3147 8969(,)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 fnt2 2202 10032(@F)m 6(ootNote)k 240 fnt1 3422 10035(within)m -220 fnt2 4139 10032(@Chapter)m 240 fnt1 5250 10035(has)m 5669(been)s -6227(set)s 6601(to)s 220 fnt2 6889 10032(@ColF)m 6(ootNote)k -240 fnt1 8328 10035(,)m 8484(which)s 0 9747(produces)m 907(a)s +6506(parameter)s 13(.)k 480 8595(The)m 956(meaning)s 1882(of)s +220 fnt2 2202 8592(@F)m 6(ootNote)k 240 fnt1 3422 8595(within)m +220 fnt2 4139 8592(@Chapter)m 240 fnt1 5250 8595(has)m 5669(been)s +6227(set)s 6601(to)s 220 fnt2 6889 8592(@ColF)m 6(ootNote)k +240 fnt1 8328 8595(,)m 8484(which)s 0 8307(produces)m 907(a)s 1064(footnote)s 1908(tar)s 4(geted)k 2722(to)s 220 fnt2 -2953 9744(@ColF)m 6(ootList)k 240 fnt1 4325 9747(\(see)m 4756(Section)s +2953 8304(@ColF)m 6(ootList)k 240 fnt1 4325 8307(\(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 +7526(footnotes)s 8458(within)s 0 8019(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 fnt2 3721 9168(@ChapterTitle)m 240 fnt1 5188 9171(and)m -220 fnt2 5591 9168(@ChapterNum)m 240 fnt1 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 +7701(single-column)s 0 7731(books)m 623(this)s 1018(distinction)s 2083(is)s +2292(insigni\207cant.\))s 220 fnt2 3721 7728(@ChapterTitle)m 240 fnt1 5188 7731(and)m +220 fnt2 5591 7728(@ChapterNum)m 240 fnt1 7102 7731(are)m 7448(tri)s 6(vial)k +8065(de\207nitions)s 0 7443(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 fnt2 2336 8506(@Chapter)m 240 fnt1 3397 8509(has)m 3766(its)s -4040(o)s 6(wn)k 4503(unique)s 220 fnt2 5209 8506(@T)m 26(ag)k -240 fnt1 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 +480 7069(Each)m 1014(in)s 9(v)k 4(ocation)k 2066(of)s +220 fnt2 2336 7066(@Chapter)m 240 fnt1 3397 7069(has)m 3766(its)s +4040(o)s 6(wn)k 4503(unique)s 220 fnt2 5209 7066(@T)m 26(ag)k +240 fnt1 5772 7069(,)m 5878(either)s 6479(supplied)s 7347(by)s +7639(the)s 7986(user)s 8442(or)s 8699(else)s 0 6781(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 fnt2 3731 7930(euclid)m -240 fnt1 4291 7933(.)m 220 fnt2 480 7556(@ChapterList&&preceding @T)m 26(agged euclid)k -240 fnt1 4758 7559(attaches)m 220 fnt2 5574 7556(euclid)m 240 fnt1 -6190 7559(as)m 6436(an)s 6715(e)s 3(xtra)k 7245(tag)s +8960(a)s 0 6493(h)m 1(ypothetical)k 1236(third)s 1745(chapter)s +2508(whose)s 3176(tag)s 3521(is)s 220 fnt2 3731 6490(euclid)m +240 fnt1 4291 6493(.)m 220 fnt2 480 6116(@ChapterList&&preceding @T)m 26(agged euclid)k +240 fnt1 4758 6119(attaches)m 220 fnt2 5574 6116(euclid)m 240 fnt1 +6190 6119(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 fnt2 937 7268(@ChapterList)m -240 fnt1 2350 7271(preceding)m 3359(itself)s 3920(in)s 4176(the)s +8998(-)s 0 5831(cation)m 653(of)s 220 fnt2 937 5828(@ChapterList)m +240 fnt1 2350 5831(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 fnt2 7726 7268(@ChapterList)m 240 fnt1 0 6983(must)m 525(be)s +220 fnt2 7726 5828(@ChapterList)m 240 fnt1 0 5543(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 fnt2 -480 6482(@ChapterList&&euclid @Open { @T)m 26(ag })k 240 fnt1 0 5983(is)m 200(3,)s +480 5042(@ChapterList&&euclid @Open { @T)m 26(ag })k 240 fnt1 0 4543(is)m 200(3,)s 416(the)s 754(number)s 1534(of)s 1795(the)s 2132(chapter)s -2885(\()s 220 fnt2 2958 5980(@T)m 26(ag)k 240 fnt1 -3570 5983(refers)m 4153(to)s 4381(the)s 4719(parameter)s 5722(of)s -220 fnt2 5983 5980(@ChapterList)m 240 fnt1 7323 5983(,)m 7419(not)s -7775(the)s 8112(parameter)s 0 5695(of)m 220 fnt2 272 5692(@Chapter)m -240 fnt1 1275 5695(\).)m 1520(Consequently)s 2892(the)s 3242(in)s 9(v)k 4(ocation)k -4297(of)s 220 fnt2 4570 5692(@NumberMar)m -3(k)k 4(er)k -240 fnt1 6317 5695(within)m 6986(the)s 7336(chapter)s 8100(is)s -8312(equal)s 8887(to)s 220 fnt2 0 5404(@NumberMar)m -3(k)k 4(er 3)k -240 fnt1 1861 5407(.)m 220 fnt2 480 5030(@NumberMar)m -3(k)k 4(er&&preceding @T)k 26(agged euclid)k -240 fnt1 5137 5033(attaches)m 220 fnt2 5992 5030(euclid)m 240 fnt1 -6646 5033(to)m 220 fnt2 6920 5030(@NumberMar)m -3(k)k 4(er 3)k -240 fnt1 8876 5033(as)m 0 4745(an)m 283(e)s 3(xtra)k -817(tag,)s 1216(and)s 1620(so)s 220 fnt2 1886 4742(@NumberOf euclid)m -240 fnt1 3742 4745(,)m 3849(which)s 4491(e)s 3(xpands)k -5324(to)s 220 fnt2 480 4244(@NumberMar)m -3(k)k 4(er&&euclid @Open { @T)k 26(ag })k -240 fnt1 0 3745(must)m 538(be)s 833(equal)s 1419(to)s +2885(\()s 220 fnt2 2958 4540(@T)m 26(ag)k 240 fnt1 +3570 4543(refers)m 4153(to)s 4381(the)s 4719(parameter)s 5722(of)s +220 fnt2 5983 4540(@ChapterList)m 240 fnt1 7323 4543(,)m 7419(not)s +7775(the)s 8112(parameter)s 0 4255(of)m 220 fnt2 272 4252(@Chapter)m +240 fnt1 1275 4255(\).)m 1520(Consequently)s 2892(the)s 3242(in)s 9(v)k 4(ocation)k +4297(of)s 220 fnt2 4570 4252(@NumberMar)m -3(k)k 4(er)k +240 fnt1 6317 4255(within)m 6986(the)s 7336(chapter)s 8100(is)s +8312(equal)s 8887(to)s 220 fnt2 0 3964(@NumberMar)m -3(k)k 4(er 3)k +240 fnt1 1861 3967(.)m 220 fnt2 480 3590(@NumberMar)m -3(k)k 4(er&&preceding @T)k 26(agged euclid)k +240 fnt1 5137 3593(attaches)m 220 fnt2 5992 3590(euclid)m 240 fnt1 +6646 3593(to)m 220 fnt2 6920 3590(@NumberMar)m -3(k)k 4(er 3)k +240 fnt1 8876 3593(as)m 0 3305(an)m 283(e)s 3(xtra)k +817(tag,)s 1216(and)s 1620(so)s 220 fnt2 1886 3302(@NumberOf euclid)m +240 fnt1 3742 3305(,)m 3849(which)s 4491(e)s 3(xpands)k +5324(to)s 220 fnt2 480 2804(@NumberMar)m -3(k)k 4(er&&euclid @Open { @T)k 26(ag })k +240 fnt1 0 2305(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 fnt2 0 3454(@NumberMar)m -3(k)k 4(er)k 240 fnt1 -1758 3457(within)m 220 fnt2 2440 3454(@ChapterList)m 240 fnt1 3854 3457(rather)m -4484(than)s 4966(within)s 220 fnt2 5648 3454(@Chapter)m 240 fnt1 -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 +220 fnt2 0 2014(@NumberMar)m -3(k)k 4(er)k 240 fnt1 +1758 2017(within)m 220 fnt2 2440 2014(@ChapterList)m 240 fnt1 3854 2017(rather)m +4484(than)s 4966(within)s 220 fnt2 5648 2014(@Chapter)m 240 fnt1 +6651 2017(,)m 6772(b)s 4(ut)k 7148(it)s 7353(turns)s +7896(out)s 8276(that)s 8708(that)s 0 1729(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 +4192(and)s 4596(subsections.)s 480 1355(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 fnt2 -4927 2792(preceding)m 240 fnt1 5969 2795(and)m 220 fnt2 6404 2792(f)m 6(ollo)k 3(wing)k -240 fnt1 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 fnt2 -1325 2504(@NumberMar)m -3(k)k 4(er)k 240 fnt1 3070 2507(within)m -220 fnt2 3738 2504(@Chapter)m 240 fnt1 4801 2507(is)m 5011(replaced)s +4927 1352(preceding)m 240 fnt1 5969 1355(and)m 220 fnt2 6404 1352(f)m 6(ollo)k 3(wing)k +240 fnt1 7234 1355(.)m 7429(Suppose)s 8328(that)s 8778(the)s +0 1067(in)m 9(v)k 4(ocation)k 1054(of)s 220 fnt2 +1325 1064(@NumberMar)m -3(k)k 4(er)k 240 fnt1 3070 1067(within)m +220 fnt2 3738 1064(@Chapter)m 240 fnt1 4801 1067(is)m 5011(replaced)s 5878(by)s 6172(the)s 6520(seemingly)s 7557(equi)s 6(v)k 6(alent)k -220 fnt2 480 2006(@NumberMar)m -3(k)k 4(er { @ChapterList&&preceding @Open { @T)k 26(ag } })k -240 fnt1 0 1507(No)m 6(w)k 514(suppose)s 1342(that)s -220 fnt2 1760 1504(@NumberOf euclid)m 240 fnt1 3676 1507(appears)m 4457(some)s 6(where)k +220 fnt2 480 566(@NumberMar)m -3(k)k 4(er { @ChapterList&&preceding @Open { @T)k 26(ag } })k +240 fnt1 0 67(No)m 6(w)k 514(suppose)s 1342(that)s +220 fnt2 1760 64(@NumberOf euclid)m 240 fnt1 3676 67(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 fnt2 480 1006(@NumberMar)m -3(k)k 4(er&&euclid @Open { @T)k 26(ag })k -240 fnt1 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 +7996(e)s 3(xpand)k 8743(to)s grestore gsave 1417 -15423 translate @@ -15909,12 +16460,18 @@ showpage %%+ font Times-Italic %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt5 vec2 /Times-Bold LoutRecode /fnt5 { /Times-Boldfnt5 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt6 vec2 /Times-Italic LoutRecode /fnt6 { /Times-Italicfnt6 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -15933,96 +16490,97 @@ gsave gsave 0 LoutMargSet grestore -220 fnt2 480 13207(@ChapterList&&preceding @Open { @T)m 26(ag })k 240 fnt1 -0 12708(whose)m 663(v)s 6(alue,)k 1276(e)s 6(v)k 6(aluated)k +220 fnt2 480 13207(@NumberMar)m -3(k)k 4(er&&euclid @Open { @T)k 26(ag })k +240 fnt1 0 12708(which)m 642(w)s 2(ould)k 1297(no)s 6(w)k +1758(be)s 2040(equal)s 2613(to)s 220 fnt2 480 12207(@ChapterList&&preceding @Open { @T)m 26(ag })k +240 fnt1 0 11708(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 fnt2 6315 12705(preceding)m 240 fnt1 -7321 12708(or)m 220 fnt2 7574 12705(f)m 6(ollo)k 3(wing)k -240 fnt1 8458 12708(within)m 0 12420(the)m 348(parameter)s 1362(of)s +5628(Use)s 6050(of)s 220 fnt2 6315 11705(preceding)m 240 fnt1 +7321 11708(or)m 220 fnt2 7574 11705(f)m 6(ollo)k 3(wing)k +240 fnt1 8458 11708(within)m 0 11420(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 +6090(to)s 6329(be)s 6611(erroneous.)s 480 11046(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 fnt2 4742 12043(@Chapter)m 240 fnt1 5822 12046(is)m +4454(of)s 220 fnt2 4742 11043(@Chapter)m 240 fnt1 5822 11046(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 +8916(is)s 0 10758(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 fnt2 6800 11755(@ContentsEntr)m -6(y)k 240 fnt1 -8492 11758(g)m 1(alle)k 3(y)k 0 11470(sent)m 484(to)s +6619(a)s 220 fnt2 6800 10755(@ContentsEntr)m -6(y)k 240 fnt1 +8492 10758(g)m 1(alle)k 3(y)k 0 10470(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 fnt2 0 11179(@Body)m 240 fnt1 781 11182(where)m +8833(in,)s 220 fnt2 0 10179(@Body)m 240 fnt1 781 10182(where)m 1421(the)s 1769(body)s 2303(of)s 2574(the)s 2922(chapter)s -3685(goes,)s 4230(and)s 220 fnt2 4634 11179(@ChapRefSection)m 240 fnt1 -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 +3685(goes,)s 4230(and)s 220 fnt2 4634 10179(@ChapRefSection)m 240 fnt1 +6499 10182(to)m 6738(hold)s 7222(a)s 7388(concluding)s 8505(list)s +8855(of)s 0 9894(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 fnt2 4911 10891(@Runner)m 240 fnt1 5913 10894(to)m -6152(e)s 3(xplain.)k 480 10520(The)m 977(\207rst)s 220 fnt2 -1478 10517(@Runner)m 240 fnt1 2550 10520(is)m 2830(just)s 3305(belo)s 6(w)k +4640(of)s 220 fnt2 4911 9891(@Runner)m 240 fnt1 5913 9894(to)m +6152(e)s 3(xplain.)k 480 9520(The)m 977(\207rst)s 220 fnt2 +1478 9517(@Runner)m 240 fnt1 2550 9520(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 fnt2 8387 10517(@Run)m 240 fnt1 8998 10520(-)m 220 fnt2 -0 10229(ner&&f)m 6(ollo)k 3(wing)k 240 fnt1 1494 10232(cross)m +220 fnt2 8387 9517(@Run)m 240 fnt1 8998 9520(-)m 220 fnt2 +0 9229(ner&&f)m 6(ollo)k 3(wing)k 240 fnt1 1494 9232(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 +0 8944(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 fnt2 1724 9567(@Runner)m 240 fnt1 2772 9570(appears)m +5644(gi)s 6(v)k 3(en)k 6224(footers.)s 480 8570(The)m +954(second)s 220 fnt2 1724 8567(@Runner)m 240 fnt1 2772 8570(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 +7466(on)s 7809(its)s 8132(last)s 8570(page.)s 0 8282(Since)m 595(no)s 896(in)s 9(v)k 4(ocations)k 2046(of)s -220 fnt2 2325 9279(@Runner)m 240 fnt1 3335 9282(lie)m 3638(between)s +220 fnt2 2325 8279(@Runner)m 240 fnt1 3335 8282(lie)m 3638(between)s 4500(it)s 4700(and)s 5113(the)s 5469(\207rst)s 220 fnt2 -5908 9279(@Runner)m 240 fnt1 6850 9282(,)m 6966(it)s 7166(will)s +5908 8279(@Runner)m 240 fnt1 6850 8282(,)m 6966(it)s 7166(will)s 7600(be)s 7891(the)s 8247(tar)s 4(get)k 8855(of)s -220 fnt2 0 8991(@Runner&&f)m 6(ollo)k 3(wing)k 240 fnt1 -2134 8994(on)m 2442(e)s 6(v)k 3(ery)k 3029(page)s +220 fnt2 0 7991(@Runner&&f)m 6(ollo)k 3(wing)k 240 fnt1 +2134 7994(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 +8165(inclusi)s 6(v)k 3(e,)k 0 7706(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 +3335(headers)s 4116(and)s 4520(footers.)s 480 7332(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 +7458(such)s 7954(as)s 8203(when)s 8778(the)s 0 7044(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 +8540(to)s 8778(the)s 0 6756(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 fnt2 1975 7091(@RunningTitle @OrElse @Title)m 240 fnt1 -5125 7094(appearing)m 6116(in)s 6354(the)s 6697(second)s 220 fnt2 -7415 7091(@Runner)m 240 fnt1 8412 7094(returns)m 0 6806(the)m 354(v)s 6(alue)k -928(of)s 1205(the)s 220 fnt2 1560 6803(@RunningTitle)m 240 fnt1 -3070 6806(parameter)m 4090(of)s 220 fnt2 4368 6803(@Chapter)m 240 fnt1 -5437 6806(if)m 5660(this)s 6063(is)s 6279(not)s 6651(equal)s +8552(made)s 0 6468(with)m 482(great)s 1019(con\207dence.)s 480 6094(The)m +903(e)s 3(xpression)k 220 fnt2 1975 6091(@RunningTitle @OrElse @Title)m 240 fnt1 +5125 6094(appearing)m 6116(in)s 6354(the)s 6697(second)s 220 fnt2 +7415 6091(@Runner)m 240 fnt1 8412 6094(returns)m 0 5806(the)m 354(v)s 6(alue)k +928(of)s 1205(the)s 220 fnt2 1560 5803(@RunningTitle)m 240 fnt1 +3070 5806(parameter)m 4090(of)s 220 fnt2 4368 5803(@Chapter)m 240 fnt1 +5437 5806(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 fnt2 0 6515(dft)m 240 fnt1 240 6518(,)m 347(or)s -220 fnt2 606 6515(@Title)m 240 fnt1 1294 6518(otherwise:)m 220 fnt2 -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 fnt1 0 3238(This)m 476(produces)s +220 fnt2 0 5515(dft)m 240 fnt1 240 5518(,)m 347(or)s +220 fnt2 606 5515(@Title)m 240 fnt1 1294 5518(otherwise:)m 220 fnt2 +480 5036(def @OrElse)m 480 4748( left x)m 480 4460( r)m -3(ight y)k 480 4172({)m +480 3884( x @Case {)m 480 3596( dft @Y)m 4(ield y)k 480 3308( else @Y)m 4(ield x)k +480 3020( })m 480 2732(})m 240 fnt1 0 2238(This)m 476(produces)s 1391(the)s 1739(ef)s 6(fect)k 2335(of)s 220 fnt2 -480 2737(named @RunningTitle { @Title })m 240 fnt1 0 2238(which)m 676(unfortunately)s 2052(is)s +480 1737(named @RunningTitle { @Title })m 240 fnt1 0 1238(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 fnt2 5983 2235(@Title)m 240 fnt1 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 fnt2 1560 1947(@RunningTitle)m -240 fnt1 3004 1950(.)m 480 1576(Finally)m 15(,)k 1249(the)s +5136(because)s 220 fnt2 5983 1235(@Title)m 240 fnt1 6705 1238(is)m +6949(not)s 7349(visible)s 8076(within)s 8778(the)s 0 950(def)m 2(ault)k +721(v)s 6(alue)k 1289(of)s 220 fnt2 1560 947(@RunningTitle)m +240 fnt1 3004 950(.)m 480 576(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 fnt2 -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 - +480 75(def @EndSectionsPlace { @Galle)m 4(y })k grestore gsave 1417 -15423 translate @@ -16047,12 +16605,18 @@ showpage %%+ font Times-Bold %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt6 vec2 /Times-Italic LoutRecode /fnt6 { /Times-Italicfnt6 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt5 vec2 /Times-Bold LoutRecode /fnt5 { /Times-Boldfnt5 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -16071,67 +16635,66 @@ gsave gsave 1 LoutMargSet grestore -220 fnt2 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 fnt1 0 5513(The)m 220 fnt2 409 5510(@BeginSections)m -240 fnt1 2066 5513(macro)m 2696(in)s 9(v)k 4(ok)k 2(es)k -220 fnt2 3457 5510(@SectionList)m 240 fnt1 4748 5513(,)m 4835(preceded)s +220 fnt2 480 13207(def @EndSections f)m 6(orce into { @EndSectionsPlace&&preceding } {})k +480 12919(macro @BeginSections { //@SectionGap @SectionList 1 // @EndSectionsPlace // })m 480 12422(def @Section f)m 6(orce into { @SectionList&&preceding })k 480 12134( named @T)m 26(ag {})k +480 11846( named @Title {})m 480 11558( named @RunningTitle { dft })m 480 11270( body @Body)m 480 10982({)m 480 10694( def @SectionTitle)m +480 10406( {)m 480 10118( @SectionNumbers @Case {)m 480 9830( {Y)m 30(es y)k 4(es} @Y)k 4(ield { {@NumberOf @T)k 26(ag}.)k 13( |2s @Title })k +480 9542( else @Y)m 4(ield @Title)k 480 9254( })m 480 8966( })m 480 8390( @Heading @Protect @SectionTitle)m +480 8102( // @NumberMar)m -3(k)k 4(er {)k 480 7814( {@ChapterList&&@T)m 26(ag @Open { @T)k 26(ag }}.{)k +480 7526( @SectionList&&@T)m 26(ag @Open { @T)k 26(ag }})k 480 7238( })m 480 6950( // @ChapterList&&preceding @T)m 26(agged @T)k 26(ag)k +480 6662( // @SectionList&&preceding @T)m 26(agged @T)k 26(ag)k 480 6374( // @NumberMar)m -3(k)k 4(er&&preceding @T)k 26(agged @T)k 26(ag)k +480 6086( // @P)m 8(ageMar)k -3(k)k 4(er&&preceding @T)k 26(agged @T)k 26(ag)k +480 5798( // { &3f @SectionTitle } @ContentsEntr)m -6(y {@P)k 8(ageOf @T)k 26(ag})k 480 5510( //0io @Body)m +480 5222(})m 240 fnt1 0 4728(The)m 220 fnt2 409 4725(@BeginSections)m +240 fnt1 2066 4728(macro)m 2696(in)s 9(v)k 4(ok)k 2(es)k +220 fnt2 3457 4725(@SectionList)m 240 fnt1 4748 4728(,)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 fnt2 556 5222(@EndSectsPlace)m 240 fnt1 2307 5225(for)m 2635(closing)s +7840(and)s 8224(follo)s 6(wed)k 0 4440(by)m 284(an)s +220 fnt2 556 4437(@EndSectsPlace)m 240 fnt1 2307 4440(for)m 2635(closing)s 3368(the)s 3705(list)s 4045(of)s 4306(sections)s 5116(when)s -5681(the)s 220 fnt2 6019 5222(@EndSections)m 240 fnt1 7515 5225(symbol)m -8264(is)s 8463(found.)s 220 fnt2 0 4934(@Section)m 240 fnt1 -997 4937(itself)m 1542(is)s 1749(just)s 2151(a)s 2314(cop)s 2(y)k -2829(of)s 220 fnt2 3097 4934(@Chapter)m 240 fnt1 4156 4937(with)m +5681(the)s 220 fnt2 6019 4437(@EndSections)m 240 fnt1 7515 4440(symbol)m +8264(is)s 8463(found.)s 220 fnt2 0 4149(@Section)m 240 fnt1 +997 4152(itself)m 1542(is)s 1749(just)s 2151(a)s 2314(cop)s 2(y)k +2829(of)s 220 fnt2 3097 4149(@Chapter)m 240 fnt1 4156 4152(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 fnt2 0 4646(@NumberMar)m -3(k)k 4(er)k -240 fnt1 1752 4649(is)m 1970(a)s 2143(simple)s 2844(generalization)s +7420(The)s 7845(parameter)s 8855(of)s 220 fnt2 0 3861(@NumberMar)m -3(k)k 4(er)k +240 fnt1 1752 3864(is)m 1970(a)s 2143(simple)s 2844(generalization)s 4262(of)s 4540(the)s 4896(one)s 5305(within)s 220 fnt2 -5981 4646(@Chapter)m 240 fnt1 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 +5981 3861(@Chapter)m 240 fnt1 6984 3864(.)m 7156(Notice)s 7856(that)s +8282(we)s 8625(ha)s 4(v)k 3(e)k 0 3576(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 fnt2 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 fnt1 0 3073(is)m +7508(although)s 220 fnt2 480 3075({@ChapterList&&@T)m 26(ag @Open { @T)k 26(ag }}.)k 13( &)k +480 2787({@SectionList&&@T)m 26(ag @Open { @T)k 26(ag }})k 240 fnt1 0 2288(is)m 210(formally)s 1086(equi)s 6(v)k 6(alent,)k 220 fnt2 -2177 3070(&)m 240 fnt1 2379 3073(w)m 2(as)k 2800(not)s -3166(permitted)s 4139(within)s 4807(a)s 220 fnt2 4973 3070(@T)m 26(ag)k -240 fnt1 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 +2177 2285(&)m 240 fnt1 2379 2288(w)m 2(as)k 2800(not)s +3166(permitted)s 4139(within)s 4807(a)s 220 fnt2 4973 2285(@T)m 26(ag)k +240 fnt1 5596 2288(parameter)m 6610(until)s 7103(recently)s 15(.)k +480 1914(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 +8001(same)s 8571(style.)s 0 1626(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 fnt2 -542 2120(@BeginSections)m 240 fnt1 2159 2123(,)m 220 fnt2 2248 2120(@Section)m -240 fnt1 3188 2123(,)m 3276(and)s 220 fnt2 3662 2120(@EndSections)m -240 fnt1 5151 2123(within)m 5800(a)s 240 fnt6 5948 2125(section)m -240 fnt1 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 +7580(should)s 8298(the)s 8668(user)s 0 1338(place)m 220 fnt2 +542 1335(@BeginSections)m 240 fnt1 2159 1338(,)m 220 fnt2 2248 1335(@Section)m +240 fnt1 3188 1338(,)m 3276(and)s 220 fnt2 3662 1335(@EndSections)m +240 fnt1 5151 1338(within)m 5800(a)s 240 fnt6 5948 1340(section)m +240 fnt1 6619 1338(,)m 6708(and)s 7093(whether)s 7905(such)s +8382(nesting)s 0 1050(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 +8627(no)s 6(w)k 15(,)k 0 762(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 +8484(which)s 0 474(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 +7991(These)s 8606(were)s 0 186(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 gsave 1417 -15423 translate @@ -16156,12 +16719,18 @@ showpage %%+ font Times-Italic %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt5 vec2 /Times-Bold LoutRecode /fnt5 { /Times-Boldfnt5 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt6 vec2 /Times-Italic LoutRecode /fnt6 { /Times-Italicfnt6 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -16176,44 +16745,38 @@ gsave 240 fnt5 1417 -1583(88)m 240 fnt6 8434 -1580(Chapter)m 9284(4.)s 9558(Examples)s gsave 1417 -15423 translate -240 fnt1 9066 13368 0 13368 240 288 60 LoutGraphic +240 fnt1 9066 13368 0 13259 240 288 60 LoutGraphic gsave 0 LoutMargSet grestore -240 fnt5 0 13203(4.5.)m 471(Bibliographies)s 240 fnt1 -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 fnt2 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 fnt1 0 6597(F)m 3(or)k +0 13205(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 +240 fnt5 0 12412(4.5.)m 471(Bibliographies)s 240 fnt1 533 11935(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 11647(on)m 297(the)s 645(de\207nition)s +220 fnt2 480 11196(e)m 6(xpor)k -8(t @T)k 26(ype @A)k 6(uthor @Title @Institution @Number @Pub)k 4(lisher)k +480 10908( @Y)m 30(ear @Proceedings @Jour)k -5(nal @V)k 17(olume @P)k 8(ages @Comment)k +480 10332(def @Ref)m 6(erence)k 480 10044( named @T)m 26(ag)k 3270({ )s 11(T)k 26(A)k 6(G? })k +480 9756( named @T)m 26(ype)k 3270({ )s 11(TYPE? })k 480 9468( named @A)m 6(uthor)k +3270({ A)s 11(UTHOR? })k 480 9180( named @Title)m 3270({ )s 11(TITLE? })k +480 8892( named @Institution)m 3270({ INSTITUTION? })s 480 8604( named @Number)m 3270({ NUMBER? })s 480 8316( named @Pub)m 4(lisher)k +3270({ PUBLISHER? })s 480 8028( named @Y)m 30(ear)k 3270({ )s 19(YEAR? })k +480 7740( named @Proceedings)m 3270({ PR)s 4(OCEEDINGS? })k 480 7452( named @Jour)m -5(nal)k +3270({ JOURNAL? })s 480 7164( named @V)m 17(olume)k 3270({ )s 11(V)k 8(OLUME? })k +480 6876( named @P)m 8(ages)k 3270({ P)s 26(A)k 6(GES? })k +480 6588( named @Comment)m 3270({ @Null })s 480 6300({ @Null })m 240 fnt1 0 5806(F)m 3(or)k 389(e)s 3(xample,)k 1303(the)s 1651(database)s 2530(might)s -3148(contain)s 220 fnt2 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 fnt1 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 +3148(contain)s 220 fnt2 480 5305({ @Ref)m 6(erence)k 480 5017( @T)m 26(ag { str)k -3(unk1979style })k +480 4729( @T)m 26(ype { Book })k 480 4441( @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 4153( @Title { )m 11(The Elements of Style })k 480 3865( @Pub)m 4(lisher { MacMillan, third edition })k 480 3577( @Y)m 30(ear { 1979 })k +480 3289(})m 480 2797({ @Ref)m 6(erence)k 480 2509( @T)m 26(ag { kingston92 })k +480 2221( @T)m 26(ype { )k 11(T)k 26(echRepor)k -8(t })k +480 1933( @A)m 6(uthor { Kingston, Jeffre)k 4(y H.)k 13( })k 480 1645( @Title { Document F)m 6(or)k -5(matting with Lout \(Second Edition\) })k +480 1357( @Number { 449 })m 480 1069( @Institution { Basser Depar)m -8(tment of Computer)k 480 781(Science F09, Univ)m 5(ersity of Sydne)k 4(y 2006, A)k 6(ustr)k 2(alia })k +480 493( @Y)m 30(ear { 1992 })k 480 205(})m grestore gsave 1417 -15423 translate @@ -16238,12 +16801,18 @@ showpage %%+ font Times-Bold %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt6 vec2 /Times-Italic LoutRecode /fnt6 { /Times-Italicfnt6 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt5 vec2 /Times-Bold LoutRecode /fnt5 { /Times-Boldfnt5 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -16262,67 +16831,67 @@ gsave gsave 1 LoutMargSet grestore -0 13205(using)m 572(the)s 220 fnt2 -920 13202(@Open)m 240 fnt1 1726 13205(symbol)m 2486(to)s 2725(get)s -3077(at)s 3309(its)s 3585(attrib)s 4(utes:)k 220 fnt2 -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 fnt1 0 11920(The)m 428(right)s 939(parameter)s 1953(of)s -220 fnt2 2224 11917(@Open)m 240 fnt1 3030 11920(may)m 3496(use)s +0 13205(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 12917(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 0 12629(using)m 572(the)s +220 fnt2 920 12626(@Open)m 240 fnt1 1726 12629(symbol)m 2486(to)s +2725(get)s 3077(at)s 3309(its)s 3585(attrib)s 4(utes:)k +220 fnt2 480 12128(@Ref)m 6(erence&&str)k -3(unk1979style @Open)k 480 11840({ @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 fnt1 0 11344(The)m 428(right)s 939(parameter)s 1953(of)s +220 fnt2 2224 11341(@Open)m 240 fnt1 3030 11344(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 +8270(result)s 8860(is)s 480 10839(W)m 9(illiam)k 1313(Strunk)s 2012(and)s 2416(E.)s 2666(B.)s 2930(White,)s 240 fnt6 -3681 11417(The)m 4093(Elements)s 5024(of)s 5305(Style)s 240 fnt1 -5762 11415(.)m 5926(Macmillan,)s 7068(1979.)s 0 10916(Incidentally)m 15(,)k +3681 10841(The)m 4093(Elements)s 5024(of)s 5305(Style)s 240 fnt1 +5762 10839(.)m 5926(Macmillan,)s 7068(1979.)s 0 10340(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 fnt2 7060 10913(@Database)m -240 fnt1 8277 10916(symbols)m 0 10628(can)m 380(nominate)s 1317(the)s +6335(se)s 6(v)k 3(eral)k 220 fnt2 7060 10337(@Database)m +240 fnt1 8277 10340(symbols)m 0 10052(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 +7011(in)s 7245(the)s 7584(document)s 8578(itself)s 0 9764(as)m +250(well)s 716(if)s 933(we)s 1268(wish.)s 480 9390(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 +7889(of)s 8183(reference)s 0 9102(\(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 fnt2 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 fnt1 0 7531(Notice)m 682(that)s 1089(the)s -1426(named)s 2111(parameter)s 220 fnt2 3114 7528(@Style)m 240 fnt1 -3865 7531(has)m 4224(a)s 4379(right)s 4879(parameter)s 220 fnt2 -5882 7528(reftag)m 240 fnt1 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 +4675(de\207nition:)s 220 fnt2 480 8601(e)m 6(xpor)k -8(t @Style)k +480 8313(def @RefStyle)m 480 8025( left @T)m 26(ag)k 480 7737( named @Style r)m -3(ight reftag {})k +480 7449({})m 240 fnt1 0 6955(Notice)m 682(that)s 1089(the)s +1426(named)s 2111(parameter)s 220 fnt2 3114 6952(@Style)m 240 fnt1 +3865 6955(has)m 4224(a)s 4379(right)s 4879(parameter)s 220 fnt2 +5882 6952(reftag)m 240 fnt1 6431 6955(.)m 6584(The)s 7001(style)s +7497(database)s 8365(has)s 8724(one)s 0 6667(entry)m 545(for)s 883(each)s 1378(type)s 1846(of)s 2117(reference:)s 220 fnt2 -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 fnt1 -0 3080(and)m 404(so)s 670(on.)s 1074(The)s 1502(follo)s 6(wing)k +480 6166({ Book @RefStyle @Style)m 480 5878( { @Ref)m 6(erence&&reftag @Open)k 480 5590( { @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 5302( })m 480 5014(})m 480 4438({ )m 11(T)k 26(echRepor)k -8(t @RefStyle @Style)k +480 4150( { @Ref)m 6(erence&&reftag @Open)k 480 3862( { @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 3574(@Institution.)m 13( @Comment })k 480 3286( })m 480 2998(})m 240 fnt1 +0 2504(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 fnt2 5588 3077(str)m -3(unk1979style)k 240 fnt1 -7180 3080(in)m 7423(the)s 7771(Book)s 8352(style:)s 220 fnt2 -480 2579(@RefStyle&&Book @Open { @Style str)m -3(unk1979style })k 240 fnt1 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 fnt6 3678 1628(The)m -4090(Elements)s 5021(of)s 5302(Style)s 240 fnt1 5759 1626(.)m +5378(is)s 220 fnt2 5588 2501(str)m -3(unk1979style)k 240 fnt1 +7180 2504(in)m 7423(the)s 7771(Book)s 8352(style:)s 220 fnt2 +480 2003(@RefStyle&&Book @Open { @Style str)m -3(unk1979style })k 240 fnt1 0 1505(It)m 205(has)s +575(result)s 480 1050(W)m 9(illiam)k 1313(Strunk)s 2012(and)s +2416(E.)s 2666(B.)s 2930(White.)s 240 fnt6 3678 1052(The)m +4090(Elements)s 5021(of)s 5302(Style)s 240 fnt1 5759 1050(.)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 fnt2 1512 1124(@Style)m 240 fnt1 2277 1127(parameter)m -3295(of)s 220 fnt2 3569 1124(@RefStyle)m 240 fnt1 4675 1127(is)m +8516(1979)s 8987(.)s 0 551(Notice)m 696(ho)s 6(w)k +1160(the)s 220 fnt2 1512 548(@Style)m 240 fnt1 2277 551(parameter)m +3295(of)s 220 fnt2 3569 548(@RefStyle)m 240 fnt1 4675 551(is)m 4889(gi)s 6(v)k 3(en)k 5472(the)s 5824(parameter)s -220 fnt2 6841 1124(str)m -3(unk1979style)k 240 fnt1 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 fnt2 2374 462(@T)m 26(ype)k -240 fnt1 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 - +220 fnt2 6841 548(str)m -3(unk1979style)k 240 fnt1 8373 551(,)m +8484(which)s 0 263(it)m 192(uses)s 655(to)s 894(open)s +1417(the)s 1765(appropriate)s 2909(reference.)s grestore gsave 1417 -15423 translate @@ -16347,12 +16916,18 @@ showpage %%+ font Times-Italic %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt5 vec2 /Times-Bold LoutRecode /fnt5 { /Times-Boldfnt5 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt6 vec2 /Times-Italic LoutRecode /fnt6 { /Times-Italicfnt6 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -16367,51 +16942,56 @@ gsave 240 fnt5 1417 -1583(90)m 240 fnt6 8434 -1580(Chapter)m 9284(4.)s 9558(Examples)s gsave 1417 -15423 translate -240 fnt1 9066 13368 0 13264 240 288 60 LoutGraphic +240 fnt1 9066 13368 0 13259 240 288 60 LoutGraphic gsave 0 LoutMargSet grestore -220 fnt2 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 fnt1 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 fnt2 -2382 11558(@RefPr)m -3(int str)k -3(unk1979style)k 240 fnt1 4992 11561(,)m -5099(Lout)s 5611(\207rst)s 6042(e)s 6(v)k 6(aluates)k -220 fnt2 480 11060(@Ref)m 6(erence&&str)k -3(unk1979style @Open { @T)k 26(ype })k -240 fnt1 0 10562(whose)m 668(result)s 1258(is)s 220 fnt2 -1468 10559(Book)m 240 fnt1 1968 10562(,)m 2075(and)s 2479(then)s -2948(e)s 6(v)k 6(aluates)k 220 fnt2 480 10080(@RefStyle&&Book @Open { @Style str)m -3(unk1979style })k -240 fnt1 0 9582(as)m 266(before.)s 1056(Complicated)s 2353(as)s +480 13205(W)m 19(e)k 858(can)s 1256(consult)s +2017(the)s 220 fnt2 2374 13202(@T)m 26(ype)k 240 fnt1 +3121 13205(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 12917(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 220 fnt2 +480 12416(def @RefPr)m -3(int)k 480 12128( r)m -3(ight reftag)k 480 11840({ @RefStyle&&{ @Ref)m 6(erence&&reftag @Open { @T)k 26(ype } })k +480 11552( @Open { @Style reftag })m 480 11264(})m 240 fnt1 0 10770(F)m 3(or)k +389(e)s 3(xample,)k 1303(to)s 1542(e)s 6(v)k 6(aluate)k +220 fnt2 2382 10767(@RefPr)m -3(int str)k -3(unk1979style)k 240 fnt1 +4992 10770(,)m 5099(Lout)s 5611(\207rst)s 6042(e)s 6(v)k 6(aluates)k +220 fnt2 480 10269(@Ref)m 6(erence&&str)k -3(unk1979style @Open { @T)k 26(ype })k +240 fnt1 0 9771(whose)m 668(result)s 1258(is)s 220 fnt2 +1468 9768(Book)m 240 fnt1 1968 9771(,)m 2075(and)s 2479(then)s +2948(e)s 6(v)k 6(aluates)k 220 fnt2 480 9289(@RefStyle&&Book @Open { @Style str)m -3(unk1979style })k +240 fnt1 0 8791(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 +0 8503(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 +7004(printing)s 7804(styles)s 8389(may)s 8844(be)s 0 8215(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 +4636(see)s 4997(them.)s 480 7841(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 +6498(of)s 6762(references,)s 7842(and)s 8239(referring)s 0 7553(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 +7285(a)s 7463(numbered)s 8491(list)s 8855(of)s 0 7265(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 fnt2 -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 - +480 6764(def @Ref)m 6(erenceSection)k 480 6476( named @T)m 26(ag {})k 480 6188( named @Title { Ref)m 6(erences })k +480 5900( named @RunningTitle { dft })m 480 5612( named style r)m -3(ight tag { tag.)k 13( })k 480 5324( named headstyle r)m -3(ight @Title { @Heading @Title })k +480 5036( named indent { @DispIndent })m 480 4748( named gap { @DispGap })m 480 4460( named star)m -8(t { 1 })k 480 4172({)m +480 3884( def @RefList r)m -3(ight n)k 2(um)k 480 3596( {)m 480 3308( @NumberMar)m -3(k)k 4(er n)k 2(um & indent @Wide {style n)k 2(um} | @RefPlace)k +480 3020( //gap @RefList @Ne)m 6(xt n)k 2(um)k 480 2732( })m 480 2156( @Protect headstyle @Title)m +480 1868( // @P)m 8(ageMar)k -3(k)k 4(er&&preceding @T)k 26(agged @T)k 26(ag)k +480 1580( // @Title @MajorContentsEntr)m -6(y {@P)k 8(ageOf @T)k 26(ag})k 480 1292( // @Runner)m +480 1004( @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 716( @F)m 6(ootOdd { |0.5r)k -8(t 0.8f @F)k 6(ont @B @P)k 8(ageNum })k +480 428( //@DispGap @RefList star)m -8(t)k 480 140( // @Runner)m grestore gsave 1417 -15423 translate @@ -16436,12 +17016,18 @@ showpage %%+ font Times-Bold %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt6 vec2 /Times-Italic LoutRecode /fnt6 { /Times-Italicfnt6 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt5 vec2 /Times-Bold LoutRecode /fnt5 { /Times-Boldfnt5 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -16456,85 +17042,80 @@ gsave 240 fnt6 1417 -1580(4.5.)m 1871(Biblio)s 2(gr)k 3(aphies)k 240 fnt5 10256 -1583(91)m gsave 1417 -15423 translate -240 fnt1 9066 13368 0 13368 240 288 60 LoutGraphic +240 fnt1 9066 13368 0 13264 240 288 60 LoutGraphic gsave 1 LoutMargSet grestore -0 13205(W)m 19(e)k 378(place)s -948(the)s 1305(e)s 3(xpression)k 220 fnt2 2392 13202(@Ref)m 6(erenceSection)k -240 fnt1 4408 13205(at)m 4649(the)s 5007(point)s 5569(where)s +220 fnt2 480 13207( @T)m 26(opEv)k 5(en { @B @P)k 8(ageNum })k +480 12919( @T)m 26(opOdd { @I {@RunningTitle @OrElse @Title} |1r)k -8(t @B @P)k 8(ageNum })k 480 12631(})m +240 fnt1 0 12137(W)m 19(e)k 378(place)s 948(the)s +1305(e)s 3(xpression)k 220 fnt2 2392 12134(@Ref)m 6(erenceSection)k +240 fnt1 4408 12137(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 +7814(of)s 8095(references)s 0 11849(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 fnt2 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 fnt1 0 11101(where)m -220 fnt2 648 11098(@RefPlace)m 240 fnt1 1820 11101(is)m 220 fnt2 -2038 11098(@Galle)m 4(y)k 240 fnt1 2945 11101(as)m 3203(usual.)s +220 fnt2 480 11348(1.)m 13( @RefPlace)k 480 11060(2.)m 13( @RefPlace)k +480 10772(3.)m 13( @RefPlace)k 480 10484(...)m 240 fnt1 0 10033(where)m +220 fnt2 648 10030(@RefPlace)m 240 fnt1 1820 10033(is)m 220 fnt2 +2038 10030(@Galle)m 4(y)k 240 fnt1 2945 10033(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 +0 9745(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 fnt2 7777 10810(@Ref)m 6(erence)k 240 fnt1 -8998 10813(-)m 220 fnt2 0 10522(Section)m 240 fnt1 777 10525(at)m -1009(each)s 1504(point.)s 480 10151(Our)m 912(task)s 1358(is)s +7021(placing)s 220 fnt2 7777 9742(@Ref)m 6(erence)k 240 fnt1 +8998 9745(-)m 220 fnt2 0 9454(Section)m 240 fnt1 777 9457(at)m +1009(each)s 1504(point.)s 480 9083(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 fnt2 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 fnt1 0 5988(Gi)m 6(v)k 3(en)k +4241(de\207nition:)s 220 fnt2 480 8582(def @Ref r)m -3(ight x)k 480 8294({)m +480 8006( def sendref into { @RefPlace&&f)m 6(ollo)k 3(wing })k 480 7718( r)m -3(ight @K)k 8(e)k 4(y)k +480 7430( {)m 480 7142( @NumberMar)m -3(k)k 4(er&&preceding @T)k 26(agged x &)k +480 6854( @P)m 8(ageMar)k -3(k)k 4(er&&preceding @T)k 26(agged x &)k +480 6566( @RefPr)m -3(int x)k 480 6278( })m 480 5702( @NumberMar)m -3(k)k 4(er&&x @Open { @T)k 26(ag } sendref x)k +480 5414(})m 240 fnt1 0 4920(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 fnt2 3455 5985(@Ref str)m -3(unk1979style)k 240 fnt1 5672 5988(has)m -6042(result)s 220 fnt2 480 5489(@NumberMar)m -3(k)k 4(er&&str)k -3(unk1979style @Open { @T)k 26(ag })k -240 fnt1 0 4990(plus)m 450(the)s 798(g)s 1(alle)k 3(y)k -220 fnt2 1432 4987(sendref str)m -3(unk1979style)k 240 fnt1 3757 4990(.)m +220 fnt2 3455 4917(@Ref str)m -3(unk1979style)k 240 fnt1 5672 4920(has)m +6042(result)s 220 fnt2 480 4421(@NumberMar)m -3(k)k 4(er&&str)k -3(unk1979style @Open { @T)k 26(ag })k +240 fnt1 0 3922(plus)m 450(the)s 798(g)s 1(alle)k 3(y)k +220 fnt2 1432 3919(sendref str)m -3(unk1979style)k 240 fnt1 3757 3922(.)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 fnt2 2094 4613(into)m -240 fnt1 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 fnt2 5609 4613(@RefPlace)m -240 fnt1 6785 4616(in)m 7040(the)s 7400(nearest)s 8149(follo)s 6(wing)k -220 fnt2 0 4325(@Ref)m 6(erenceSection)k 240 fnt1 1946 4328(.)m +480 3548(According)m 1555(to)s 1806(its)s 220 fnt2 2094 3545(into)m +240 fnt1 2512 3548(clause,)m 3229(the)s 3589(g)s 1(alle)k 3(y)k +4235(will)s 4673(replace)s 5430(a)s 220 fnt2 5609 3545(@RefPlace)m +240 fnt1 6785 3548(in)m 7040(the)s 7400(nearest)s 8149(follo)s 6(wing)k +220 fnt2 0 3257(@Ref)m 6(erenceSection)k 240 fnt1 1946 3260(.)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 +7371(reference')s 13(s)k 8472(tag,)s 8876(as)s 0 2972(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 fnt2 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 fnt1 0 2465(The)m -428(result)s 1017(of)s 1287(the)s 220 fnt2 1634 2462(@T)m 26(agged)k -240 fnt1 2622 2465(symbol)m 3381(is)s 3590(al)s 2(w)k 2(ays)k -220 fnt2 4300 2462(@Null)m 240 fnt1 4885 2465(,)m 4991(so)s -5256(this)s 5651(prints)s 6245(the)s 220 fnt2 6592 2462(str)m -3(unk1979style)k -240 fnt1 8183 2465(reference)m 0 2177(in)m 243(the)s 591(appropriate)s -1735(style)s 2242(at)s 2474(the)s 220 fnt2 2822 2174(@RefPlace)m -240 fnt1 3926 2177(,)m 4033(as)s 4283(desired.)s 480 1803(No)m 6(w)k -220 fnt2 1043 1800(@NumberMar)m -3(k)k 4(er&&preceding)k 240 fnt1 -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 fnt2 7995 1800(@Number)m 240 fnt1 8998 1803(-)m -220 fnt2 0 1512(Mar)m -3(k)k 4(er)k 240 fnt1 -775 1515(in)m 1051(the)s 1432(\207nal)s 1946(document.)s 3087(This)s +5904(is)s 220 fnt2 480 2471(@NumberMar)m -3(k)k 4(er&&preceding @T)k 26(agged str)k -3(unk1979style &)k +480 2183(@P)m 8(ageMar)k -3(k)k 4(er&&preceding @T)k 26(agged str)k -3(unk1979style &)k +480 1895(@RefPr)m -3(int str)k -3(unk1979style)k 240 fnt1 0 1397(The)m +428(result)s 1017(of)s 1287(the)s 220 fnt2 1634 1394(@T)m 26(agged)k +240 fnt1 2622 1397(symbol)m 3381(is)s 3590(al)s 2(w)k 2(ays)k +220 fnt2 4300 1394(@Null)m 240 fnt1 4885 1397(,)m 4991(so)s +5256(this)s 5651(prints)s 6245(the)s 220 fnt2 6592 1394(str)m -3(unk1979style)k +240 fnt1 8183 1397(reference)m 0 1109(in)m 243(the)s 591(appropriate)s +1735(style)s 2242(at)s 2474(the)s 220 fnt2 2822 1106(@RefPlace)m +240 fnt1 3926 1109(,)m 4033(as)s 4283(desired.)s 480 735(No)m 6(w)k +220 fnt2 1043 732(@NumberMar)m -3(k)k 4(er&&preceding)k 240 fnt1 +4081 735(is)m 4341(the)s 4739(nearest)s 5524(preceding)s 6570(in)s 9(v)k 4(ocation)k +7674(of)s 220 fnt2 7995 732(@Number)m 240 fnt1 8998 735(-)m +220 fnt2 0 444(Mar)m -3(k)k 4(er)k 240 fnt1 +775 447(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 fnt2 6243 1512(@NumberMar)m -3(k)k 4(er)k -240 fnt1 8021 1515(just)m 8460(before)s 0 1227(the)m 220 fnt2 -378 1224(@RefPlace)m 240 fnt1 1572 1227(that)m 2020(recei)s 6(v)k 3(ed)k +5939(of)s 220 fnt2 6243 444(@NumberMar)m -3(k)k 4(er)k +240 fnt1 8021 447(just)m 8460(before)s 0 159(the)m 220 fnt2 +378 156(@RefPlace)m 240 fnt1 1572 159(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 fnt2 6530 1224(@NumberMar)m -3(k)k 4(er)k -240 fnt1 8305 1227(is)m 8546(gi)s 6(v)k 3(en)k -220 fnt2 0 936(str)m -3(unk1979style)k 240 fnt1 1585 939(as)m -1827(an)s 2102(additional)s 3105(tag)s 3442(by)s 3728(the)s -220 fnt2 4068 936(@T)m 26(agged)k 240 fnt1 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 fnt2 -480 150(@NumberMar)m -3(k)k 4(er&&str)k -3(unk1979style @Open { @T)k 26(ag })k +6229(of)s 220 fnt2 6530 156(@NumberMar)m -3(k)k 4(er)k +240 fnt1 8305 159(is)m 8546(gi)s 6(v)k 3(en)k grestore gsave @@ -16560,12 +17141,18 @@ showpage %%+ font Times-Italic %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt5 vec2 /Times-Bold LoutRecode /fnt5 { /Times-Boldfnt5 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt6 vec2 /Times-Italic LoutRecode /fnt6 { /Times-Italicfnt6 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -16580,31 +17167,38 @@ gsave 240 fnt5 1417 -1583(92)m 240 fnt6 8434 -1580(Chapter)m 9284(4.)s 9558(Examples)s gsave 1417 -15423 translate -240 fnt1 9066 13368 0 13368 240 288 60 LoutGraphic +240 fnt1 9066 13368 0 13259 240 288 60 LoutGraphic gsave 0 LoutMargSet grestore -0 13205(has)m 370(for)s 708(its)s 984(result)s +220 fnt2 0 13202(str)m -3(unk1979style)k 240 fnt1 +1585 13205(as)m 1827(an)s 2102(additional)s 3105(tag)s 3442(by)s +3728(the)s 220 fnt2 4068 13202(@T)m 26(agged)k 240 fnt1 +5050 13205(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 12917(the)m 348(reference)s +1291(place,)s 1902(which)s 2544(means)s 3206(that)s 220 fnt2 +480 12416(@NumberMar)m -3(k)k 4(er&&str)k -3(unk1979style @Open { @T)k 26(ag })k +240 fnt1 0 11917(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 fnt2 6459 13202(str)m -3(unk1979style)k 240 fnt1 -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 fnt2 2563 12914(@Ref str)m -3(unk1979style)k 240 fnt1 -4720 12917(.)m 480 12543(It)m 674(might)s 1281(seem)s 1821(that)s +6111(the)s 220 fnt2 6459 11914(str)m -3(unk1979style)k 240 fnt1 +8051 11917(g)m 1(alle)k 3(y)k 15(,)k 8722(and)s +0 11629(this)m 396(is)s 606(the)s 954(desired)s 1702(result)s +2292(of)s 220 fnt2 2563 11626(@Ref str)m -3(unk1979style)k 240 fnt1 +4720 11629(.)m 480 11255(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 fnt2 3820 12540(str)m -3(unk1979style)k 240 fnt1 5401 12543(reference)m +220 fnt2 3820 11252(str)m -3(unk1979style)k 240 fnt1 5401 11255(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 +8411(be)s 8681(sent)s 0 10967(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 +8001(g)s 1(alle)k 3(y)k 8644(with)s 0 10679(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 +8708(that)s 0 10391(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 @@ -16630,6 +17224,9 @@ showpage %%+ font Times-Bold %%+ font Times-Italic /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt5 vec2 /Times-Bold LoutRecode /fnt5 { /Times-Boldfnt5 LoutFont } def @@ -16727,9 +17324,15 @@ showpage %%+ font Helvetica %%+ font Times-Italic /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt5 vec2 /Times-Bold LoutRecode /fnt5 { /Times-Boldfnt5 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt6 vec2 /Times-Italic LoutRecode /fnt6 { /Times-Italicfnt6 LoutFont } def @@ -16798,7 +17401,7 @@ grestore 5056 9791(chapters)m 5903(and)s 6307(sections)s 7075(,)s 7182(83)s 5056 9503(displays)m 5838(,)s 5945(75)s 5056 9215(lists)m 5438(,)s 5545(76)s 5056 8927(page)m 5564(layout)s 6169(,)s 6276(78)s -5056 8639(paragraphs)m 6103(,)s 6210(74)s 220 fnt2 4816 8060(e)m +5056 8639(paragraphs)m 6103(,)s 6210(75)s 220 fnt2 4816 8060(e)m 240 fnt1 4990 8063(g)m 1(ap)k 5388(mode)s 5923(,)s 6030(37)s 4816 7775(Edge-to-edge)m 6160(g)s 1(ap)k 6558(mode)s 7093(,)s 7200(37)s 220 fnt2 4816 7484(@Enclose)m 240 fnt1 @@ -16851,12 +17454,18 @@ showpage %%+ font Times-Bold %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt6 vec2 /Times-Italic LoutRecode /fnt6 { /Times-Italicfnt6 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt5 vec2 /Times-Bold LoutRecode /fnt5 { /Times-Boldfnt5 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -16905,7 +17514,7 @@ grestore 240 fnt1 1751 6336(symbol)m 2458(,)s 2565(67)s 220 fnt2 0 6045(@IndentedDispla)m 6(y)k 240 fnt1 1847 6048(e)m 3(xample)k 2657(,)s 2764(75)s 220 fnt2 0 5757(@IndentedList)m 240 fnt1 -1474 5760(e)m 3(xample)k 2284(,)s 2391(76)s 0 5472(Inde)m 3(x)k +1474 5760(e)m 3(xample)k 2284(,)s 2391(77)s 0 5472(Inde)m 3(x)k 597(\207le)s 958(\(for)s 1375(databases\))s 2366(,)s 2473(63)s 220 fnt2 0 5181(@Inser)m -8(t)k 240 fnt1 836 5184(symbol)m 1543(,)s 1650(55)s 220 fnt2 0 4893(into)m 240 fnt1 @@ -16998,12 +17607,18 @@ showpage %%+ font Times-Italic %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt5 vec2 /Times-Bold LoutRecode /fnt5 { /Times-Boldfnt5 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt6 vec2 /Times-Italic LoutRecode /fnt6 { /Times-Italicfnt6 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -17147,12 +17762,18 @@ showpage %%+ font Times-Bold %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt6 vec2 /Times-Italic LoutRecode /fnt6 { /Times-Italicfnt6 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt5 vec2 /Times-Bold LoutRecode /fnt5 { /Times-Boldfnt5 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave diff --git a/doc/expert/preface b/doc/expert/preface index 8dba03c..92af538 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 } and developed continuously since then. This manual was rendered into PostScript postscript @Index { PostScript } -by Version 3.21 of the Basser Lout interpreter, using the symbols +by Version 3.22 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 f355b84..96dcce8 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 -10 May 2000 +3 june 2000 diff --git a/doc/slides/outfile.ps b/doc/slides/outfile.ps index b5653aa..9057c5d 100644 --- a/doc/slides/outfile.ps +++ b/doc/slides/outfile.ps @@ -1,6 +1,6 @@ %!PS-Adobe-3.0 -%%Creator: Basser Lout Version 3.21 (May 2000) -%%CreationDate: Thu May 11 10:55:10 2000 +%%Creator: Basser Lout Version 3.22 (June 2000) +%%CreationDate: Sat Jun 3 12:51:33 2000 %%DocumentData: Binary %%DocumentNeededResources: (atend) %%DocumentSuppliedResources: (atend) @@ -2122,7 +2122,6 @@ end %%EndProlog %%BeginSetup -%%IncludeResource: font Times-Roman %%BeginResource: encoding vec2 /vec2 [ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef @@ -2160,14 +2159,6 @@ end ] def %%EndResource -/Times-Romanfnt1 vec2 /Times-Roman LoutRecode -/fnt1 { /Times-Romanfnt1 LoutFont } def -%%IncludeResource: font Helvetica -/Helveticafnt2 vec2 /Helvetica LoutRecode -/fnt2 { /Helveticafnt2 LoutFont } def -%%IncludeResource: font Helvetica-Oblique -/Helvetica-Obliquefnt3 vec2 /Helvetica-Oblique LoutRecode -/fnt3 { /Helvetica-Obliquefnt3 LoutFont } def %%EndSetup %%Page: 1 1 @@ -2176,6 +2167,15 @@ end %%+ font Helvetica %%+ font Helvetica-Oblique /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def +%%IncludeResource: font Helvetica-Oblique +/Helvetica-Obliquefnt3 vec2 /Helvetica-Oblique LoutRecode +/fnt3 { /Helvetica-Obliquefnt3 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup @@ -2229,9 +2229,15 @@ showpage %%+ font Times-Bold %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt4 vec2 /Times-Bold LoutRecode /fnt4 { /Times-Boldfnt4 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -2276,6 +2282,9 @@ showpage %%BeginPageSetup %%PageResources: font Times-Roman /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -2323,9 +2332,15 @@ showpage %%+ font Times-Bold %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt4 vec2 /Times-Bold LoutRecode /fnt4 { /Times-Boldfnt4 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -2372,6 +2387,9 @@ showpage %%+ font Times-Bold %%+ font Times-Italic /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt4 vec2 /Times-Bold LoutRecode /fnt4 { /Times-Boldfnt4 LoutFont } def @@ -2430,9 +2448,15 @@ showpage %%+ font Times-Bold %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt4 vec2 /Times-Bold LoutRecode /fnt4 { /Times-Boldfnt4 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -2478,6 +2502,9 @@ showpage %%PageResources: font Times-Roman %%+ font Times-Italic /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt5 vec2 /Times-Italic LoutRecode /fnt5 { /Times-Italicfnt5 LoutFont } def @@ -2537,9 +2564,15 @@ showpage %%+ font Times-Bold %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt4 vec2 /Times-Bold LoutRecode /fnt4 { /Times-Boldfnt4 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -2586,6 +2619,9 @@ showpage %%PageResources: font Times-Roman %%+ font Times-Italic /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt5 vec2 /Times-Italic LoutRecode /fnt5 { /Times-Italicfnt5 LoutFont } def @@ -2645,9 +2681,15 @@ showpage %%+ font Times-Bold %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt4 vec2 /Times-Bold LoutRecode /fnt4 { /Times-Boldfnt4 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -2693,6 +2735,9 @@ showpage %%PageResources: font Times-Roman %%+ font Times-Bold /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt4 vec2 /Times-Bold LoutRecode /fnt4 { /Times-Boldfnt4 LoutFont } def @@ -2749,9 +2794,15 @@ showpage %%+ font Times-Bold %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt4 vec2 /Times-Bold LoutRecode /fnt4 { /Times-Boldfnt4 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -2799,9 +2850,15 @@ showpage %%+ font Times-Bold %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt4 vec2 /Times-Bold LoutRecode /fnt4 { /Times-Boldfnt4 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -2846,6 +2903,9 @@ showpage %%PageResources: font Times-Roman %%+ font Times-Bold /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt4 vec2 /Times-Bold LoutRecode /fnt4 { /Times-Boldfnt4 LoutFont } def @@ -2899,9 +2959,15 @@ showpage %%+ font Times-Bold %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt4 vec2 /Times-Bold LoutRecode /fnt4 { /Times-Boldfnt4 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -2943,6 +3009,9 @@ showpage %%BeginPageSetup %%PageResources: font Times-Roman /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -2991,9 +3060,15 @@ showpage %%+ font Times-Bold %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt4 vec2 /Times-Bold LoutRecode /fnt4 { /Times-Boldfnt4 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -3038,6 +3113,9 @@ showpage %%+ font Times-Bold %%+ font Times-Italic /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt4 vec2 /Times-Bold LoutRecode /fnt4 { /Times-Boldfnt4 LoutFont } def @@ -3100,9 +3178,15 @@ showpage %%+ font Times-Bold %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt4 vec2 /Times-Bold LoutRecode /fnt4 { /Times-Boldfnt4 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -3149,6 +3233,9 @@ showpage %%PageResources: font Times-Roman %%+ font Times-Bold /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt4 vec2 /Times-Bold LoutRecode /fnt4 { /Times-Boldfnt4 LoutFont } def @@ -3203,9 +3290,15 @@ showpage %%+ font Times-Bold %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt4 vec2 /Times-Bold LoutRecode /fnt4 { /Times-Boldfnt4 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -3252,6 +3345,9 @@ showpage %%+ font Times-Bold %%+ font Times-Italic /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt4 vec2 /Times-Bold LoutRecode /fnt4 { /Times-Boldfnt4 LoutFont } def @@ -3310,9 +3406,15 @@ showpage %%+ font Times-Bold %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt4 vec2 /Times-Bold LoutRecode /fnt4 { /Times-Boldfnt4 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -3358,6 +3460,9 @@ showpage %%+ font Times-Italic %%+ font Symbol /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt5 vec2 /Times-Italic LoutRecode /fnt5 { /Times-Italicfnt5 LoutFont } def @@ -3425,9 +3530,15 @@ showpage %%+ font Times-Bold %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt4 vec2 /Times-Bold LoutRecode /fnt4 { /Times-Boldfnt4 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -3472,6 +3583,9 @@ showpage %%+ font Symbol %%+ font Times-Italic /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Symbol /fnt6 { /Symbol LoutFont } def %%IncludeResource: font Times-Italic @@ -3550,9 +3664,15 @@ showpage %%+ font Times-Bold %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt4 vec2 /Times-Bold LoutRecode /fnt4 { /Times-Boldfnt4 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -3600,6 +3720,9 @@ showpage %%PageResources: font Times-Roman %%+ font Times-Italic /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt5 vec2 /Times-Italic LoutRecode /fnt5 { /Times-Italicfnt5 LoutFont } def @@ -3656,9 +3779,15 @@ showpage %%+ font Times-Bold %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt4 vec2 /Times-Bold LoutRecode /fnt4 { /Times-Boldfnt4 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -3709,6 +3838,9 @@ showpage %%+ font Times-Italic %%+ font Symbol /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt4 vec2 /Times-Bold LoutRecode /fnt4 { /Times-Boldfnt4 LoutFont } def @@ -4119,9 +4251,15 @@ showpage %%+ font Times-Bold %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt4 vec2 /Times-Bold LoutRecode /fnt4 { /Times-Boldfnt4 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -4171,6 +4309,9 @@ showpage %%+ font Times-Italic %%+ font Symbol /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt4 vec2 /Times-Bold LoutRecode /fnt4 { /Times-Boldfnt4 LoutFont } def @@ -4254,9 +4395,15 @@ showpage %%+ font Times-Bold %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt4 vec2 /Times-Bold LoutRecode /fnt4 { /Times-Boldfnt4 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -4299,6 +4446,12 @@ showpage %%PageResources: font Times-Roman %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -4364,9 +4517,15 @@ showpage %%+ font Times-Bold %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt4 vec2 /Times-Bold LoutRecode /fnt4 { /Times-Boldfnt4 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -4410,6 +4569,9 @@ showpage %%BeginPageSetup %%PageResources: font Times-Roman /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -4478,9 +4640,15 @@ showpage %%+ font Times-Bold %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt4 vec2 /Times-Bold LoutRecode /fnt4 { /Times-Boldfnt4 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -4523,6 +4691,9 @@ showpage %%BeginPageSetup %%PageResources: font Times-Roman /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -4610,9 +4781,15 @@ showpage %%+ font Times-Bold %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Bold /Times-Boldfnt4 vec2 /Times-Bold LoutRecode /fnt4 { /Times-Boldfnt4 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -4655,6 +4832,9 @@ showpage %%BeginPageSetup %%PageResources: font Times-Roman /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -4725,6 +4905,12 @@ showpage %%PageResources: font Times-Roman %%+ font Helvetica /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def +%%IncludeResource: font Helvetica +/Helveticafnt2 vec2 /Helvetica LoutRecode +/fnt2 { /Helveticafnt2 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave @@ -4771,6 +4957,9 @@ showpage %%PageResources: font Times-Roman %%+ font Times-Italic /pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def %%IncludeResource: font Times-Italic /Times-Italicfnt5 vec2 /Times-Italic LoutRecode /fnt5 { /Times-Italicfnt5 LoutFont } def diff --git a/doc/user/README b/doc/user/README index 22b735c..e03e324 100644 --- a/doc/user/README +++ b/doc/user/README @@ -34,4 +34,4 @@ A copy of the final PostScript output file (A4 paper size) is stored at "ftp://ftp.cs.su.oz.au/jeff/lout/lout-3.19.user.ps.gz". Jeffrey H. Kingston -11 May 2000 +3 June 2000 diff --git a/doc/user/all b/doc/user/all index cf518db..46c35f5 100644 --- a/doc/user/all +++ b/doc/user/all @@ -21,8 +21,8 @@ Lout Document Formatting System } @Author { Jeffrey H. Kingston } - @Edition { Version 3.21 -May, 2000 } + @Edition { Version 3.22 +June, 2000 } @Publisher { Copyright @CopyRight 1991, 2000 Jeffrey H. Kingston, Basser Department of Computer Science, diff --git a/doc/user/preface b/doc/user/preface index b136bb0..9569cab 100644 --- a/doc/user/preface +++ b/doc/user/preface @@ -18,7 +18,7 @@ gnu. @Index { GNU Public License } primary source is directory @ID @Code "ftp://ftp.cs.usyd.edu.au/jeff/lout" in which may be found a gzipped tar file containing the main distribution -(currently {@Code "lout-3.21.tar.gz"}), and various other things including +(currently {@Code "lout-3.22.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/typ_book b/doc/user/typ_book index 34abde2..59d81e5 100644 --- a/doc/user/typ_book +++ b/doc/user/typ_book @@ -326,13 +326,29 @@ representative sample of these options, showing their default values: "}" } Section {@NumberOf setup} explains how to make your own setup file and -change its options. @Code "@TitlePageFont" is the font used on the title +change its options; here we just explain what the options do. +@PP +@Code "@TitlePageFont" is the font used on the title title.page.font. @Index @Code "@TitlePageFont" -page of the book, not including a size. @Code "@ChapterStartPages" -determines what kinds of pages chapters and other major components of the -book may begin on, and may be {@Code Any}, {@Code Odd}, or {@Code Even}, -meaning any page, odd-numbered pages only, or even-numbered pages -only. @Code "@SeparateIntroNumbering" +page of the book, not including a size. +@PP +@Code "@ChapterStartPages" determines what kinds of pages chapters and +chapter.start.pages @Index @Code "@ChapterStartPages" +other major components of the book may begin on, and may be {@Code Any}, +{@Code Odd}, or {@Code Even}, meaning any page, odd-numbered pages only, +or even-numbered pages only. It may also be {@Code SamePage}, which +means that chapters and appendices will continue directly after the +previous chapter or appendix, on the same page (other major components +such as the table of contents and index will start on a fresh page +as usual). If you switch to {@Code SamePage}, you will probably need +to adjust {@Code "@ChapterHeadingFont"} and {@Code "@AboveChapterGap"}, +described below, since their default values are intended for use with +chapters and appendices that start on a fresh page; and you will also +need to begin the body of your chapter with a paragraph symbol such as +@Code "@LP" or {@Code "@PP"}, since otherwise there will be no +vertical space between the chapter heading and body. +@PP +@Code "@SeparateIntroNumbering" separate.intro.numbering @Index @Code "@SeparateIntroNumbering" determines whether the introductory part of the book is to have a separate numbering sequence or not. @Code "@ReferencesBeforeAppendices" diff --git a/doc/user/typ_repo b/doc/user/typ_repo index 5cd70ba..a536b12 100644 --- a/doc/user/typ_repo +++ b/doc/user/typ_repo @@ -178,17 +178,14 @@ Finally we have three options that control the abstract. @Code "@AbstractDisplay" may be @Code { Yes } or {@Code No}; it determines whether the abstract is displayed (occupying the full page width except for an indent at each side like a quoted -display) or inline (occupying the column width). -@Code "@AbstractTitle" is the title of the abstract; its default -value is @Code Abstract or its equivalent in the current language. +display) or inline (occupying the column width). There is a more +general option, {@Code "@AbstractFormat"}, in the setup file that +offers more formatting choices. @Code "@AbstractTitle" is the title +of the abstract; its default value is @Code Abstract or its equivalent +in the current language. Finally, @Code "@Abstract" contains the abstract. @Index @Code "@Abstract" -Finally, @Code "@Abstract" contains the abstract itself; it may be -empty or absent, in which case there will be no abstract. -@PP -The abstract may contain footnotes in the usual way. Regrettably, each -footnote in the abstract will generate one spurious `unresolved cross -reference' error message that does not go away. This slight problem -might be fixed in the future. +abstract itself; it may be empty or absent, in which case there will +be no abstract. The abstract may contain footnotes in the usual way. @PP After the compulsory {@Code "//"} comes the report body in the form of a sequence of sections: @@ -1,6 +1,6 @@ /*@externs.h:External Declarations:Directories and file conventions@**********/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.21) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.22) */ /* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */ /* */ /* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */ @@ -95,7 +95,7 @@ extern nl_catd MsgCat; /* */ /*****************************************************************************/ -#define LOUT_VERSION AsciiToFull("Basser Lout Version 3.21 (May 2000)") +#define LOUT_VERSION AsciiToFull("Basser Lout Version 3.22 (June 2000)") #define CROSS_DB AsciiToFull("lout") #define SOURCE_SUFFIX AsciiToFull(".lt") #define INDEX_SUFFIX AsciiToFull(".li") @@ -378,7 +378,6 @@ typedef unsigned char FULL_CHAR; typedef void *POINTER; - /*@::Character literals@******************************************************/ /* */ /* Character Literals */ @@ -867,7 +866,6 @@ typedef union FULL_LENGTH ofont_spacewidth; MAPPING ofont_mapping : 7; BOOLEAN ofont_recoded : 1; - BOOLEAN ofont_firstpage : 1; } os32; struct @@ -1102,7 +1100,6 @@ typedef union /* font_spacewidth Preferred width of space between words in this font */ /* font_mapping The mapping to apply with this font */ /* font_recoded TRUE if font needs recoding in PostScript output */ -/* font_firstpage TRUE if this font is used on the very first page */ /* */ /* WORD, QWORD when used in hash table to check whether crs defined twice */ /* */ @@ -1795,7 +1792,6 @@ typedef union rec #define font_spacewidth(x) (x)->os1.ou3.os32.ofont_spacewidth #define font_mapping(x) (x)->os1.ou3.os32.ofont_mapping #define font_recoded(x) (x)->os1.ou3.os32.ofont_recoded -#define font_firstpage(x) (x)->os1.ou3.os32.ofont_firstpage /*@::FONT_INFO@***************************************************************/ @@ -1826,7 +1822,7 @@ typedef struct font_rec { COMPOSITE *cmp_table; /* composites to build */ int cmp_top; /* length of cmp_table */ OBJECT font_table; /* record of sized fonts */ - OBJECT original_font; /* font rec before resizing */ + OBJECT original_face; /* face object of this font */ SHORT_LENGTH underline_pos; /* position of underline */ SHORT_LENGTH underline_thick; /* thickness of underline */ unsigned short *kern_table; /* first kerning chars */ @@ -1862,6 +1858,48 @@ typedef struct mapvec { } *MAP_VEC; +/*@::BACK_END@****************************************************************/ +/* */ +/* typedef BACK_END - an OO-like record describing one back end */ +/* */ +/*****************************************************************************/ + +typedef struct back_end_rec { + int code; /* the code number of the back end */ + FULL_CHAR *name; /* string name of the back end */ + BOOLEAN scale_avail; /* TRUE if @Scale is available */ + BOOLEAN rotate_avail; /* TRUE if @Rotate is available */ + BOOLEAN graphic_avail; /* TRUE if @Graphic is available */ + BOOLEAN incgraphic_avail; /* TRUE if @IncludeGraphic is avail. */ + BOOLEAN plaingraphic_avail; /* TRUE if @PlainGraphic is avail. */ + BOOLEAN fractional_spacing_avail; /* TRUE if fractional spacing avail. */ + BOOLEAN uses_font_metrics; /* TRUE if actual font metrics used */ + BOOLEAN colour_avail; /* TRUE if colour is available */ + void (*PrintInitialize)(FILE *fp); + void (*PrintLength)(FULL_CHAR *buff, int length, int length_dim); + void (*PrintPageSetupForFont)(OBJECT face, int font_curr_page, + FULL_CHAR *font_name, FULL_CHAR *first_size_str); + void (*PrintPageResourceForFont)(FULL_CHAR *font_name, BOOLEAN first); + void (*PrintMapping)(MAPPING m); + void (*PrintBeforeFirstPage)(FULL_LENGTH h, FULL_LENGTH v, FULL_CHAR *label); + void (*PrintBetweenPages)(FULL_LENGTH h, FULL_LENGTH v, FULL_CHAR *label); + void (*PrintAfterLastPage)(void); + void (*PrintWord)(OBJECT x, int hpos, int vpos); + void (*PrintPlainGraphic)(OBJECT x, FULL_LENGTH xmk,FULL_LENGTH ymk,OBJECT z); + void (*PrintUnderline)(FONT_NUM fnum, FULL_LENGTH xstart, FULL_LENGTH xstop, + FULL_LENGTH ymk); + void (*CoordTranslate)(FULL_LENGTH xdist, FULL_LENGTH ydist); + void (*CoordRotate)(FULL_LENGTH amount); + void (*CoordScale)(float hfactor, float vfactor); + void (*SaveGraphicState)(OBJECT x); + void (*RestoreGraphicState)(void); + void (*PrintGraphicObject)(OBJECT x); + void (*DefineGraphicNames)(OBJECT x); + void (*SaveTranslateDefineSave)(OBJECT x,FULL_LENGTH xdist,FULL_LENGTH ydist); + void (*PrintGraphicInclude)(OBJECT x,FULL_LENGTH colmark,FULL_LENGTH rowmark); +} *BACK_END; + + /*@::object types@************************************************************/ /* */ /* OBJECT, TOKEN AND OTHER TYPES inhabiting type(x) and predefined(x) */ @@ -2176,8 +2214,8 @@ typedef struct mapvec { /* back ends */ #define POSTSCRIPT 0 /* PostScript back end */ -#define PLAINTEXT 1 /* plain text back end */ -#define PDF 2 +#define PDF 1 /* PDF back end */ +#define PLAINTEXT 2 /* plain text back end */ /* error types */ #define INTERN 0 /* internal error (i.e. bug) */ @@ -2843,20 +2881,15 @@ extern OBJECT FilterErrSym; extern OBJECT VerbatimSym; extern OBJECT RawVerbatimSym; extern OBJECT OptGallSym; +extern BACK_END BackEnd; extern OBJECT CommandOptions; extern BOOLEAN AllowCrossDb; extern BOOLEAN UseCollate; extern BOOLEAN InMemoryDbIndexes; -extern BOOLEAN Encapsulated; extern BOOLEAN Kern; extern BOOLEAN SafeExecution; extern BOOLEAN AltErrorFormat; -extern int BackEnd; extern int TotalWordCount; -extern FULL_CHAR *BackEndWord; -extern FULL_LENGTH PlainCharWidth; -extern FULL_LENGTH PlainCharHeight; -extern BOOLEAN PlainFormFeed; extern BOOLEAN InitializeAll; #if LOCALE_ON extern nl_catd MsgCat; @@ -3049,26 +3082,7 @@ extern void FixAndPrintObject(OBJECT x, FULL_LENGTH xmk, FULL_LENGTH xb, FULL_LENGTH xf, int dim, BOOLEAN suppress, FULL_LENGTH pg,int count); /***** z24.c Print Service **************************************/ -extern void PrintInit(FILE *file_ptr); -extern void PrintBeforeFirst(FULL_LENGTH h, FULL_LENGTH v, FULL_CHAR *label); -extern void PrintBetween(FULL_LENGTH h, FULL_LENGTH v, FULL_CHAR *label); -extern void PrintWord(OBJECT x, int hpos, int vpos); -extern void PrintPlainGraphicObject(OBJECT x, FULL_LENGTH xmk, - FULL_LENGTH ymk, OBJECT z); -extern void PrintUnderline(FONT_NUM fnum, FULL_LENGTH xstart, - FULL_LENGTH xstop, FULL_LENGTH ymk); -extern void PrintAfterLast(void); -extern void CoordTranslate(FULL_LENGTH xdist, FULL_LENGTH ydist); -extern void CoordRotate(FULL_LENGTH amount); -extern void CoordScale(float hfactor, float vfactor); -extern void SaveGraphicState(OBJECT x); -extern void RestoreGraphicState(void); -extern void PrintGraphicObject(OBJECT x); -extern void DefineGraphicNames(OBJECT x); -extern void SaveTranslateDefineSave(OBJECT x, - FULL_LENGTH xdist, FULL_LENGTH ydist); -extern void PrintGraphicInclude(OBJECT x, FULL_LENGTH colmark, - FULL_LENGTH rowmark); +extern char *EightBitToPrintForm[]; /***** z25.c Object Echo **************************************/ extern FULL_CHAR *EchoObject(OBJECT x); @@ -3217,9 +3231,9 @@ extern MAP_VEC MapTable[]; extern MAPPING MapLoad(OBJECT filename, BOOLEAN recoded); extern FULL_CHAR MapCharEncoding(FULL_CHAR *str, MAPPING m); extern FULL_CHAR *MapEncodingName(MAPPING m); -extern void MapPrintEncodings(FILE *fp); -extern void MapEnsurePrinted(MAPPING m, int curr_page, FILE *fp); -extern void MapPrintResources(FILE *fp); +extern void MapPrintEncodings(); +extern void MapEnsurePrinted(MAPPING m, int curr_page); +extern void MapPrintPSResources(FILE *fp); extern OBJECT MapSmallCaps(OBJECT x, STYLE *style); extern BOOLEAN MapIsLowerCase(FULL_CHAR ch, MAPPING m); @@ -3300,7 +3314,7 @@ extern BOOLEAN EnvReadRetrieve(FILE_NUM fnum, int offset, OBJECT *env); extern void EnvReadInsert(FILE_NUM fnum, int offset, OBJECT env); extern void EnvDebug(void); -/***** z48.c PDF back end **************************************/ +/***** z48.c PDF back end (old) **************************************/ extern void PDFFile_Init(FILE* in_fp, int in_h_bound, int in_v_bound, int in_IN, int in_CM, int in_PT, int in_EM); extern void PDFFile_BeginFontEncoding(FILE* in_fp, @@ -3338,6 +3352,18 @@ extern void PDFText_Kern(FILE* in_fp, int in_kern); extern void PDFText_Close(FILE* in_fp); extern BOOLEAN PDFHasValidTextMatrix(void); +/***** z49.c PostScript back end **************************************/ +extern BOOLEAN Encapsulated; /* TRUE if EPS file is wanted */ +extern BACK_END PS_BackEnd; /* PostScript back end record */ + +/***** z50.c PDF back end (new) **************************************/ +extern BACK_END PDF_BackEnd; /* PDF back end record */ + +/***** z51.c Plain text back end **************************************/ +extern BACK_END Plain_BackEnd; /* Plain Text back end record */ +extern FULL_LENGTH PlainCharWidth; /* character width */ +extern FULL_LENGTH PlainCharHeight; /* character height */ +extern BOOLEAN PlainFormFeed; /* true if using \f */ /*@::assert(), debug(), debug flags@******************************************/ /* */ @@ -3457,9 +3483,12 @@ extern struct dbs dbg[]; #define DEX 45 /* z45.c -dex External Sort */ #define DOG 46 /* z46.c -dex Optimal Galleys */ #define DET 47 /* z47.c -det Environment Table */ -#define DPD 48 /* z48.c -dpd PDF Back End */ -#define DPP 49 /* -dpp Profiling */ -#define ANY 50 /* -d any */ +#define DPD 48 /* z48.c -dpd PDF Back End (old) */ +#define DPO 49 /* z49.c -dpo PostScript Back End */ +#define DPF 50 /* z50.c -dpf PDF Back End */ +#define DPT 51 /* z51.c -dpt Plain Text Back End */ +#define DPP 52 /* -dpp Profiling */ +#define ANY 53 /* -d any */ #else #define ifdebug(cat, urg, x) diff --git a/include/book b/include/book index 0ced4dd..a41d539 100644 --- a/include/book +++ b/include/book @@ -263,7 +263,7 @@ # @TitlePageFont { Helvetica Base} # title page font (not size) # @SeparateIntroNumbering { Yes } # separate intro page numbers # @PrefaceAfterContents { No } # Yes or No - # @ChapterStartPages { Any } # Any, Odd, or Even + # @ChapterStartPages { Any } # Any, Odd, Even, SamePage # @ReferencesBeforeAppendices { No } # references before appendices # @PrefaceWord { preface } # word for "Preface" # @ContentsWord { contents } # word for "Contents" diff --git a/include/bookf b/include/bookf index fe5ab72..4b10ce3 100644 --- a/include/bookf +++ b/include/bookf @@ -226,7 +226,8 @@ def @BookSetup ####################################################################### # # - # @Full - this sends text to a full-width place. # + # @Full - this sends text to a full-width place on a new page, even # + # if @ChapterStartPages is SamePage. # # # ####################################################################### @@ -237,7 +238,7 @@ def @BookSetup def @Even force into { @EvenFullPlace&&following } right x { x } @ChapterStartPages @Case { - Any @Yield @Any x + { Any SamePage } @Yield @Any x Odd @Yield @Odd x Even @Yield @Even x } @@ -246,20 +247,23 @@ def @BookSetup ####################################################################### # # - # @NoForceFull - this sends text to a full-width place. # + # @ChapterFull - this sends text to a full-width place on a new # + # page, unless @ChapterStartPages is SamePage, in which case it # + # doesn't send the text anywhere. # # # ####################################################################### - def @NoForceFull right x + def @ChapterFull right x { - def @Any into { @FullPlace&&following } right x { x } - def @Odd into { @OddFullPlace&&following } right x { x } - def @Even into { @EvenFullPlace&&following } right x { x } + def @Any force into { @FullPlace&&following } right x { x } + def @Odd force into { @OddFullPlace&&following } right x { x } + def @Even force into { @EvenFullPlace&&following } right x { x } @ChapterStartPages @Case { Any @Yield @Any x Odd @Yield @Odd x Even @Yield @Even x + SamePage @Yield x } } @@ -277,7 +281,7 @@ def @BookSetup def @Even force into { @IntroEvenFullPlace&&following } right x { x } @ChapterStartPages @Case { - Any @Yield @Any x + { Any SamePage } @Yield @Any x Odd @Yield @Odd x Even @Yield @Even x } @@ -436,7 +440,7 @@ def @BookSetup incontents { @ReferencesInContents } pnprefix { @ReferencesPrefix } inrunners { Yes } - sendheader { @Full @Body } + sendheader { @ChapterFull @Body } innergap { @SectionGap } @ReferencesSection @@ -1053,7 +1057,7 @@ def @BookSetup indisplays { @ChapterNumInDisplays } infigures { @ChapterNumInFigures } intables { @ChapterNumInTables } - sendheader { @Full @Body } + sendheader { @ChapterFull @Body } innergap { @SectionGap } inrunners { Yes } @Body @@ -1252,7 +1256,7 @@ def @BookSetup indisplays { @AppendixNumInDisplays } infigures { @AppendixNumInFigures } intables { @AppendixNumInTables } - sendheader { @Full @Body } + sendheader { @ChapterFull @Body } innergap { @SubAppendixGap } inrunners { Yes } @Body diff --git a/include/latin2.fd b/include/latin2.fd deleted file mode 100644 index 5bc648b..0000000 --- a/include/latin2.fd +++ /dev/null @@ -1,143 +0,0 @@ -################################################################################################################## -# # -# Latin2 Font definitions. Use a very wide window to see them clearly. # -# # -# Lout font Lout font PostScript PostScript font metrics Lout character Recode/ # -# family name face name font name (formerly .AFM) file name mapping file NoRecode # -# # -################################################################################################################## - - -fontdef AvantGardeCE Base { AvantGarde-Medium AG-Md LtLatin2.LCM Recode } -fontdef AvantGardeCE Slope { AvantGarde-MediumObl AG-MdO LtLatin2.LCM Recode } -fontdef AvantGardeCE Bold { AvantGarde-Bold AG-Bd LtLatin2.LCM Recode } -fontdef AvantGardeCE BoldSlope { AvantGarde-BoldObl AG-BdO LtLatin2.LCM Recode } - -fontdef AvantGardeCE Bold { AvantGarde-Bold AG-Bd LtLatin2.LCM Recode } -fontdef AvantGardeCE BoldObl { AvantGarde-BoldObl AG-BdO LtLatin2.LCM Recode } -fontdef AvantGardeCE Book { AvantGarde-Book AG-Bk LtLatin2.LCM Recode } -fontdef AvantGardeCE BookOblique { AvantGarde-BookOblique AG-BkO LtLatin2.LCM Recode } -fontdef AvantGardeCE CondBold { AvantGarde-CondBold AG-CnBd LtLatin2.LCM Recode } -fontdef AvantGardeCE CondBook { AvantGarde-CondBook AG-CnBk LtLatin2.LCM Recode } -fontdef AvantGardeCE CondDemi { AvantGarde-CondDemi AG-CnDm LtLatin2.LCM Recode } -fontdef AvantGardeCE CondMedium { AvantGarde-CondMedium AG-CnMd LtLatin2.LCM Recode } -fontdef AvantGardeCE Demi { AvantGarde-Demi AG-Dm LtLatin2.LCM Recode } -fontdef AvantGardeCE DemiOblique { AvantGarde-DemiOblique AG-DmO LtLatin2.LCM Recode } -fontdef AvantGardeCE ExtraLight { AvantGarde-ExtraLight AG-ExLt LtLatin2.LCM Recode } -fontdef AvantGardeCE ExtraLightObl { AvantGarde-ExtraLightObl AG-ExLtO LtLatin2.LCM Recode } -fontdef AvantGardeCE Medium { AvantGarde-Medium AG-Md LtLatin2.LCM Recode } -fontdef AvantGardeCE MediumObl { AvantGarde-MediumObl AG-MdO LtLatin2.LCM Recode } - - -fontdef BookmanCE Base { Bookman-Medium Bk-Md LtLatin2.LCM Recode } -fontdef BookmanCE Slope { Bookman-MediumItalic Bk-MdIt LtLatin2.LCM Recode } -fontdef BookmanCE Bold { Bookman-Bold Bk-Bd LtLatin2.LCM Recode } -fontdef BookmanCE BoldSlope { Bookman-BoldItalic Bk-BdIt LtLatin2.LCM Recode } - -fontdef BookmanCE Bold { Bookman-Bold Bk-Bd LtLatin2.LCM Recode } -fontdef BookmanCE BoldItalic { Bookman-BoldItalic Bk-BdIt LtLatin2.LCM Recode } -fontdef BookmanCE Demi { Bookman-Demi Bk-Dm LtLatin2.LCM Recode } -fontdef BookmanCE DemiItalic { Bookman-DemiItalic Bk-DmIt LtLatin2.LCM Recode } -fontdef BookmanCE Light { Bookman-Light Bk-Lt LtLatin2.LCM Recode } -fontdef BookmanCE LightItalic { Bookman-LightItalic Bk-LtIt LtLatin2.LCM Recode } -fontdef BookmanCE Medium { Bookman-Medium Bk-Md LtLatin2.LCM Recode } -fontdef BookmanCE MediumItalic { Bookman-MediumItalic Bk-MdIt LtLatin2.LCM Recode } - - -fontdef CourierCE Base { Courier Cr LtLatin2.LCM Recode } -fontdef CourierCE Slope { Courier-Oblique Cr-O LtLatin2.LCM Recode } -fontdef CourierCE Bold { Courier-Bold Cr-Bd LtLatin2.LCM Recode } -fontdef CourierCE BoldSlope { Courier-BoldOblique Cr-BdO LtLatin2.LCM Recode } - -fontdef CourierCE Base { Courier Cr LtLatin2.LCM Recode } -fontdef CourierCE Bold { Courier-Bold Cr-Bd LtLatin2.LCM Recode } -fontdef CourierCE BoldOblique { Courier-BoldOblique Cr-BdO LtLatin2.LCM Recode } -fontdef CourierCE Oblique { Courier-Oblique Cr-O LtLatin2.LCM Recode } - - -fontdef HelveticaCE Base { Helvetica He LtLatin2.LCM Recode } -fontdef HelveticaCE Slope { Helvetica-Oblique He-O LtLatin2.LCM Recode } -fontdef HelveticaCE Bold { Helvetica-Bold He-Bd LtLatin2.LCM Recode } -fontdef HelveticaCE BoldSlope { Helvetica-BoldOblique He-BdO LtLatin2.LCM Recode } - -fontdef HelveticaCE Base { Helvetica He LtLatin2.LCM Recode } -fontdef HelveticaCE Black { Helvetica-Black He-Bl LtLatin2.LCM Recode } -fontdef HelveticaCE BlackOblique { Helvetica-BlackOblique He-BlO LtLatin2.LCM Recode } -fontdef HelveticaCE Bold { Helvetica-Bold He-Bd LtLatin2.LCM Recode } -fontdef HelveticaCE BoldOblique { Helvetica-BoldOblique He-BdO LtLatin2.LCM Recode } -fontdef HelveticaCE Compressed { Helvetica-Compressed He-Cm LtLatin2.LCM Recode } -fontdef HelveticaCE Cond { Helvetica-Condensed He-Cn LtLatin2.LCM Recode } -fontdef HelveticaCE CondBlack { Helvetica-Condensed-Black He-CnBl LtLatin2.LCM Recode } -fontdef HelveticaCE CondBlackObl { Helvetica-Condensed-BlackObl He-CnBlO LtLatin2.LCM Recode } -fontdef HelveticaCE CondBold { Helvetica-Condensed-Bold He-CnBd LtLatin2.LCM Recode } -fontdef HelveticaCE CondBoldObl { Helvetica-Condensed-BoldObl He-CnBdO LtLatin2.LCM Recode } -fontdef HelveticaCE CondLight { Helvetica-Condensed-Light He-CnLi LtLatin2.LCM Recode } -fontdef HelveticaCE CondLightObl { Helvetica-Condensed-LightObl He-CnLiO LtLatin2.LCM Recode } -fontdef HelveticaCE CondOblique { Helvetica-Condensed-Oblique He-CnO LtLatin2.LCM Recode } -fontdef HelveticaCE ExtraCompressed { Helvetica-ExtraCompressed He-ExtC LtLatin2.LCM Recode } -fontdef HelveticaCE Light { Helvetica-Light He-Lt LtLatin2.LCM Recode } -fontdef HelveticaCE LightOblique { Helvetica-LightOblique He-LtO LtLatin2.LCM Recode } -fontdef HelveticaCE Narrow { Helvetica-Narrow He-Nr LtLatin2.LCM Recode } -fontdef HelveticaCE NarrowBold { Helvetica-Narrow-Bold He-NrBd LtLatin2.LCM Recode } -fontdef HelveticaCE NarrowBoldObl { Helvetica-Narrow-BoldOblique He-NrBdO LtLatin2.LCM Recode } -fontdef HelveticaCE NarrowObl { Helvetica-Narrow-Oblique He-NrO LtLatin2.LCM Recode } -fontdef HelveticaCE Oblique { Helvetica-Oblique He-O LtLatin2.LCM Recode } -fontdef HelveticaCE UltraCompressed { Helvetica-UltraCompressed He-UlCm LtLatin2.LCM Recode } - - -fontdef SchoolbookCE Base { NewCenturySchlbk-Roman NCS-Rm LtLatin2.LCM Recode } -fontdef SchoolbookCE Slope { NewCenturySchlbk-Italic NCS-It LtLatin2.LCM Recode } -fontdef SchoolbookCE Bold { NewCenturySchlbk-Bold NCS-Bd LtLatin2.LCM Recode } -fontdef SchoolbookCE BoldSlope { NewCenturySchlbk-BoldItalic NCS-BdIt LtLatin2.LCM Recode } - -fontdef SchoolbookCE Bold { NewCenturySchlbk-Bold NCS-Bd LtLatin2.LCM Recode } -fontdef SchoolbookCE BoldItalic { NewCenturySchlbk-BoldItalic NCS-BdIt LtLatin2.LCM Recode } -fontdef SchoolbookCE Italic { NewCenturySchlbk-Italic NCS-It LtLatin2.LCM Recode } -fontdef SchoolbookCE Roman { NewCenturySchlbk-Roman NCS-Rm LtLatin2.LCM Recode } - - -fontdef PalatinoCE Base { Palatino-Roman Pa-Rm LtLatin2.LCM Recode } -fontdef PalatinoCE Slope { Palatino-Italic Pa-It LtLatin2.LCM Recode } -fontdef PalatinoCE Bold { Palatino-Bold Pa-Bd LtLatin2.LCM Recode } -fontdef PalatinoCE BoldSlope { Palatino-BoldItalic Pa-BdIt LtLatin2.LCM Recode } - -fontdef PalatinoCE Bold { Palatino-Bold Pa-Bd LtLatin2.LCM Recode } -fontdef PalatinoCE BoldItalic { Palatino-BoldItalic Pa-BdIt LtLatin2.LCM Recode } -fontdef PalatinoCE BoldItalicOsF { Palatino-BoldItalicOsF Pa-BdItF LtLatin2.LCM Recode } -fontdef PalatinoCE BoldOsF { Palatino-BoldOsF Pa-BdF LtLatin2.LCM Recode } -fontdef PalatinoCE Italic { Palatino-Italic Pa-It LtLatin2.LCM Recode } -fontdef PalatinoCE ItalicOsF { Palatino-ItalicOsF Pa-ItF LtLatin2.LCM Recode } -fontdef PalatinoCE Roman { Palatino-Roman Pa-Rm LtLatin2.LCM Recode } -fontdef PalatinoCE SC { Palatino-SC Pa-SC LtLatin2.LCM Recode } - - -fontdef TimesCE Base { Times-Roman Ti-Rm LtLatin2.LCM Recode } -fontdef TimesCE Slope { Times-Italic Ti-It LtLatin2.LCM Recode } -fontdef TimesCE Bold { Times-Bold Ti-Bd LtLatin2.LCM Recode } -fontdef TimesCE BoldSlope { Times-BoldItalic Ti-BdIt LtLatin2.LCM Recode } - -fontdef TimesCE Bold { Times-Bold Ti-Bd LtLatin2.LCM Recode } -fontdef TimesCE BoldItalic { Times-BoldItalic Ti-BdIt LtLatin2.LCM Recode } -fontdef TimesCE BoldItalicOsF { Times-BoldItalicOsF Ti-BdItF LtLatin2.LCM Recode } -fontdef TimesCE BoldSC { Times-BoldSC Ti-BdSC LtLatin2.LCM Recode } -fontdef TimesCE ExtraBold { Times-ExtraBold Ti-ExBd LtLatin2.LCM Recode } -fontdef TimesCE Italic { Times-Italic Ti-It LtLatin2.LCM Recode } -fontdef TimesCE ItalicOsF { Times-ItalicOsF Ti-ItF LtLatin2.LCM Recode } -fontdef TimesCE Roman { Times-Roman Ti-Rm LtLatin2.LCM Recode } -fontdef TimesCE RomanSC { Times-RomanSC Ti-RmSC LtLatin2.LCM Recode } -fontdef TimesCE Semibold { Times-Semibold Ti-Sm LtLatin2.LCM Recode } -fontdef TimesCE SemiboldItalic { Times-SemiboldItalic Ti-SmIt LtLatin2.LCM Recode } - - -fontdef ChanceryCE Base { ZapfChancery-Roman ZC-Rm LtLatin2.LCM Recode } -fontdef ChanceryCE Slope { ZapfChancery-Italic ZC-It LtLatin2.LCM Recode } -fontdef ChanceryCE Bold { ZapfChancery-Bold ZC-Bd LtLatin2.LCM Recode } -fontdef ChanceryCE BoldSlope { ZapfChancery-MediumItalic ZC-MdIt LtLatin2.LCM Recode } - -fontdef ChanceryCE Roman { ZapfChancery-Roman ZC-Rm LtLatin2.LCM Recode } -fontdef ChanceryCE Bold { ZapfChancery-Bold ZC-Bd LtLatin2.LCM Recode } -fontdef ChanceryCE Italic { ZapfChancery-Italic ZC-It LtLatin2.LCM Recode } -fontdef ChanceryCE Light { ZapfChancery-Light ZC-Lt LtLatin2.LCM Recode } -fontdef ChanceryCE Demi { ZapfChancery-Demi ZC-Dm LtLatin2.LCM Recode } -fontdef ChanceryCE LightItalic { ZapfChancery-LightItalic ZC-LtIt LtLatin2.LCM Recode } -fontdef ChanceryCE MediumItalic { ZapfChancery-MediumItalic ZC-MdIt LtLatin2.LCM Recode } diff --git a/include/old.fd b/include/old.fd deleted file mode 100644 index 0001b97..0000000 --- a/include/old.fd +++ /dev/null @@ -1,156 +0,0 @@ -################################################################################################################## -# # -# Font definitions. Use a very wide window to see them clearly. # -# # -# Lout font Lout font PostScript PostScript font metrics Lout character Recode/ # -# family name face name font name (formerly .AFM) file name mapping file NoRecode # -# # -################################################################################################################## - - -fontdef AvantGarde Base { AvantGarde-Medium AG-Md LtLatin1.LCM Recode } -fontdef AvantGarde Slope { AvantGarde-MediumObl AG-MdO LtLatin1.LCM Recode } -fontdef AvantGarde Bold { AvantGarde-Bold AG-Bd LtLatin1.LCM Recode } -fontdef AvantGarde BoldSlope { AvantGarde-BoldObl AG-BdO LtLatin1.LCM Recode } - -fontdef AvantGarde Bold { AvantGarde-Bold AG-Bd LtLatin1.LCM Recode } -fontdef AvantGarde BoldObl { AvantGarde-BoldObl AG-BdO LtLatin1.LCM Recode } -fontdef AvantGarde Book { AvantGarde-Book AG-Bk LtLatin1.LCM Recode } -fontdef AvantGarde BookOblique { AvantGarde-BookOblique AG-BkO LtLatin1.LCM Recode } -fontdef AvantGarde CondBold { AvantGarde-CondBold AG-CnBd LtLatin1.LCM Recode } -fontdef AvantGarde CondBook { AvantGarde-CondBook AG-CnBk LtLatin1.LCM Recode } -fontdef AvantGarde CondDemi { AvantGarde-CondDemi AG-CnDm LtLatin1.LCM Recode } -fontdef AvantGarde CondMedium { AvantGarde-CondMedium AG-CnMd LtLatin1.LCM Recode } -fontdef AvantGarde Demi { AvantGarde-Demi AG-Dm LtLatin1.LCM Recode } -fontdef AvantGarde DemiOblique { AvantGarde-DemiOblique AG-DmO LtLatin1.LCM Recode } -fontdef AvantGarde ExtraLight { AvantGarde-ExtraLight AG-ExLt LtLatin1.LCM Recode } -fontdef AvantGarde ExtraLightObl { AvantGarde-ExtraLightObl AG-ExLtO LtLatin1.LCM Recode } -fontdef AvantGarde Medium { AvantGarde-Medium AG-Md LtLatin1.LCM Recode } -fontdef AvantGarde MediumObl { AvantGarde-MediumObl AG-MdO LtLatin1.LCM Recode } - - -fontdef Bookman Base { Bookman-Medium Bk-Md LtLatin1.LCM Recode } -fontdef Bookman Slope { Bookman-MediumItalic Bk-MdIt LtLatin1.LCM Recode } -fontdef Bookman Bold { Bookman-Bold Bk-Bd LtLatin1.LCM Recode } -fontdef Bookman BoldSlope { Bookman-BoldItalic Bk-BdIt LtLatin1.LCM Recode } - -fontdef Bookman Bold { Bookman-Bold Bk-Bd LtLatin1.LCM Recode } -fontdef Bookman BoldItalic { Bookman-BoldItalic Bk-BdIt LtLatin1.LCM Recode } -fontdef Bookman Demi { Bookman-Demi Bk-Dm LtLatin1.LCM Recode } -fontdef Bookman DemiItalic { Bookman-DemiItalic Bk-DmIt LtLatin1.LCM Recode } -fontdef Bookman Light { Bookman-Light Bk-Lt LtLatin1.LCM Recode } -fontdef Bookman LightItalic { Bookman-LightItalic Bk-LtIt LtLatin1.LCM Recode } -fontdef Bookman Medium { Bookman-Medium Bk-Md LtLatin1.LCM Recode } -fontdef Bookman MediumItalic { Bookman-MediumItalic Bk-MdIt LtLatin1.LCM Recode } - - -fontdef Courier Base { Courier Cr LtLatin1.LCM Recode } -fontdef Courier Slope { Courier-Oblique Cr-O LtLatin1.LCM Recode } -fontdef Courier Bold { Courier-Bold Cr-Bd LtLatin1.LCM Recode } -fontdef Courier BoldSlope { Courier-BoldOblique Cr-BdO LtLatin1.LCM Recode } - -fontdef Courier Base { Courier Cr LtLatin1.LCM Recode } -fontdef Courier Bold { Courier-Bold Cr-Bd LtLatin1.LCM Recode } -fontdef Courier BoldOblique { Courier-BoldOblique Cr-BdO LtLatin1.LCM Recode } -fontdef Courier Oblique { Courier-Oblique Cr-O LtLatin1.LCM Recode } - - -fontdef Helvetica Base { Helvetica He LtLatin1.LCM Recode } -fontdef Helvetica Slope { Helvetica-Oblique He-O LtLatin1.LCM Recode } -fontdef Helvetica Bold { Helvetica-Bold He-Bd LtLatin1.LCM Recode } -fontdef Helvetica BoldSlope { Helvetica-BoldOblique He-BdO LtLatin1.LCM Recode } - -fontdef Helvetica Base { Helvetica He LtLatin1.LCM Recode } -fontdef Helvetica Black { Helvetica-Black He-Bl LtLatin1.LCM Recode } -fontdef Helvetica BlackOblique { Helvetica-BlackOblique He-BlO LtLatin1.LCM Recode } -fontdef Helvetica Bold { Helvetica-Bold He-Bd LtLatin1.LCM Recode } -fontdef Helvetica BoldOblique { Helvetica-BoldOblique He-BdO LtLatin1.LCM Recode } -fontdef Helvetica Compressed { Helvetica-Compressed He-Cm LtLatin1.LCM Recode } -fontdef Helvetica Cond { Helvetica-Condensed He-Cn LtLatin1.LCM Recode } -fontdef Helvetica CondBlack { Helvetica-Condensed-Black He-CnBl LtLatin1.LCM Recode } -fontdef Helvetica CondBlackObl { Helvetica-Condensed-BlackObl He-CnBlO LtLatin1.LCM Recode } -fontdef Helvetica CondBold { Helvetica-Condensed-Bold He-CnBd LtLatin1.LCM Recode } -fontdef Helvetica CondBoldObl { Helvetica-Condensed-BoldObl He-CnBdO LtLatin1.LCM Recode } -fontdef Helvetica CondLight { Helvetica-Condensed-Light He-CnLi LtLatin1.LCM Recode } -fontdef Helvetica CondLightObl { Helvetica-Condensed-LightObl He-CnLiO LtLatin1.LCM Recode } -fontdef Helvetica CondOblique { Helvetica-Condensed-Oblique He-CnO LtLatin1.LCM Recode } -fontdef Helvetica ExtraCompressed { Helvetica-ExtraCompressed He-ExtC LtLatin1.LCM Recode } -fontdef Helvetica Light { Helvetica-Light He-Lt LtLatin1.LCM Recode } -fontdef Helvetica LightOblique { Helvetica-LightOblique He-LtO LtLatin1.LCM Recode } -fontdef Helvetica Narrow { Helvetica-Narrow He-Nr LtLatin1.LCM Recode } -fontdef Helvetica NarrowBold { Helvetica-Narrow-Bold He-NrBd LtLatin1.LCM Recode } -fontdef Helvetica NarrowBoldObl { Helvetica-Narrow-BoldOblique He-NrBdO LtLatin1.LCM Recode } -fontdef Helvetica NarrowObl { Helvetica-Narrow-Oblique He-NrO LtLatin1.LCM Recode } -fontdef Helvetica Oblique { Helvetica-Oblique He-O LtLatin1.LCM Recode } -fontdef Helvetica UltraCompressed { Helvetica-UltraCompressed He-UlCm LtLatin1.LCM Recode } - - -fontdef Schoolbook Base { NewCenturySchlbk-Roman NCS-Rm LtLatin1.LCM Recode } -fontdef Schoolbook Slope { NewCenturySchlbk-Italic NCS-It LtLatin1.LCM Recode } -fontdef Schoolbook Bold { NewCenturySchlbk-Bold NCS-Bd LtLatin1.LCM Recode } -fontdef Schoolbook BoldSlope { NewCenturySchlbk-BoldItalic NCS-BdIt LtLatin1.LCM Recode } - -fontdef Schoolbook Bold { NewCenturySchlbk-Bold NCS-Bd LtLatin1.LCM Recode } -fontdef Schoolbook BoldItalic { NewCenturySchlbk-BoldItalic NCS-BdIt LtLatin1.LCM Recode } -fontdef Schoolbook Italic { NewCenturySchlbk-Italic NCS-It LtLatin1.LCM Recode } -fontdef Schoolbook Roman { NewCenturySchlbk-Roman NCS-Rm LtLatin1.LCM Recode } - - -fontdef Palatino Base { Palatino-Roman Pa-Rm LtLatin1.LCM Recode } -fontdef Palatino Slope { Palatino-Italic Pa-It LtLatin1.LCM Recode } -fontdef Palatino Bold { Palatino-Bold Pa-Bd LtLatin1.LCM Recode } -fontdef Palatino BoldSlope { Palatino-BoldItalic Pa-BdIt LtLatin1.LCM Recode } - -fontdef Palatino Bold { Palatino-Bold Pa-Bd LtLatin1.LCM Recode } -fontdef Palatino BoldItalic { Palatino-BoldItalic Pa-BdIt LtLatin1.LCM Recode } -fontdef Palatino BoldItalicOsF { Palatino-BoldItalicOsF Pa-BdItF LtLatin1.LCM Recode } -fontdef Palatino BoldOsF { Palatino-BoldOsF Pa-BdF LtLatin1.LCM Recode } -fontdef Palatino Italic { Palatino-Italic Pa-It LtLatin1.LCM Recode } -fontdef Palatino ItalicOsF { Palatino-ItalicOsF Pa-ItF LtLatin1.LCM Recode } -fontdef Palatino Roman { Palatino-Roman Pa-Rm LtLatin1.LCM Recode } -fontdef Palatino SC { Palatino-SC Pa-SC LtLatin1.LCM Recode } - - -fontdef Symbol Base { Symbol Symbol Symb.LCM NoRecode } -fontdef Symbol Slope { Symbol Symbol Symb.LCM NoRecode } -fontdef Symbol Bold { Symbol Symbol Symb.LCM NoRecode } -fontdef Symbol BoldSlope { Symbol Symbol Symb.LCM NoRecode } - - -fontdef Times Base { Times-Roman Ti-Rm LtLatin1.LCM Recode } -fontdef Times Slope { Times-Italic Ti-It LtLatin1.LCM Recode } -fontdef Times Bold { Times-Bold Ti-Bd LtLatin1.LCM Recode } -fontdef Times BoldSlope { Times-BoldItalic Ti-BdIt LtLatin1.LCM Recode } - -fontdef Times Bold { Times-Bold Ti-Bd LtLatin1.LCM Recode } -fontdef Times BoldItalic { Times-BoldItalic Ti-BdIt LtLatin1.LCM Recode } -fontdef Times BoldItalicOsF { Times-BoldItalicOsF Ti-BdItF LtLatin1.LCM Recode } -fontdef Times BoldSC { Times-BoldSC Ti-BdSC LtLatin1.LCM Recode } -fontdef Times ExtraBold { Times-ExtraBold Ti-ExBd LtLatin1.LCM Recode } -fontdef Times Italic { Times-Italic Ti-It LtLatin1.LCM Recode } -fontdef Times ItalicOsF { Times-ItalicOsF Ti-ItF LtLatin1.LCM Recode } -fontdef Times Roman { Times-Roman Ti-Rm LtLatin1.LCM Recode } -fontdef Times RomanSC { Times-RomanSC Ti-RmSC LtLatin1.LCM Recode } -fontdef Times Semibold { Times-Semibold Ti-Sm LtLatin1.LCM Recode } -fontdef Times SemiboldItalic { Times-SemiboldItalic Ti-SmIt LtLatin1.LCM Recode } - - -fontdef Chancery Base { ZapfChancery-Roman ZC-Rm LtLatin1.LCM Recode } -fontdef Chancery Slope { ZapfChancery-Italic ZC-It LtLatin1.LCM Recode } -fontdef Chancery Bold { ZapfChancery-Bold ZC-Bd LtLatin1.LCM Recode } -fontdef Chancery BoldSlope { ZapfChancery-MediumItalic ZC-MdIt LtLatin1.LCM Recode } - -fontdef Chancery Roman { ZapfChancery-Roman ZC-Rm LtLatin1.LCM Recode } -fontdef Chancery Bold { ZapfChancery-Bold ZC-Bd LtLatin1.LCM Recode } -fontdef Chancery Italic { ZapfChancery-Italic ZC-It LtLatin1.LCM Recode } -fontdef Chancery Light { ZapfChancery-Light ZC-Lt LtLatin1.LCM Recode } -fontdef Chancery Demi { ZapfChancery-Demi ZC-Dm LtLatin1.LCM Recode } -fontdef Chancery LightItalic { ZapfChancery-LightItalic ZC-LtIt LtLatin1.LCM Recode } -fontdef Chancery MediumItalic { ZapfChancery-MediumItalic ZC-MdIt LtLatin1.LCM Recode } - - -fontdef Dingbats Base { ZapfDingbats ZD Ding.LCM NoRecode } -fontdef Dingbats Slope { ZapfDingbats ZD Ding.LCM NoRecode } -fontdef Dingbats Bold { ZapfDingbats ZD Ding.LCM NoRecode } -fontdef Dingbats BoldSlope { ZapfDingbats ZD Ding.LCM NoRecode } - diff --git a/include/report b/include/report index 50f73c5..cebd65a 100644 --- a/include/report +++ b/include/report @@ -266,7 +266,19 @@ # @CoverSheet { Yes } # make cover sheet # @ContentsSeparate { No } # contents on separate pages # @DateLine { No } # Yes, No, or a date + # @AboveTitleGap { 1i } # space above title + # @TitleFont { Bold } # title font + # @TitleBreak { clines 1.4vx } # title break + # @AuthorFont { Italic } # author font + # @AuthorBreak { clines } # author break + # @InstitutionFont { } # institution font + # @InstitutionBreak { clines } # institution break + # @DateLineFont { } # dateline font + # @DateLineBreak { } # dateline break # @AbstractDisplay { No } # abstract full width display + # @AbstractFont { } # font of abstract + # @AbstractBreak { } # break style of abstract + # @AbstractFormat { @Centre @Title @DP @Body } # abstract format # @AbstractTitle { dft } # abstract title (dft is @AbstractWord) # @ReferencesBeforeAppendices { No } # references before appendices # @AbstractWord { abstract } # word for "Abstract" diff --git a/include/reportf b/include/reportf index 379b997..ce37b01 100644 --- a/include/reportf +++ b/include/reportf @@ -16,7 +16,21 @@ def @ReportSetup named @CoverSheet { Yes } named @ContentsSeparate { No } named @DateLine { No } + named @AboveTitleGap { 1i } + named @TitleFont { Bold } + named @TitleBreak { clines 1.4vx } + named @AuthorFont { Italic } + named @AuthorBreak { clines } + named @InstitutionFont { } + named @InstitutionBreak { clines } + named @DateLineFont { } + named @DateLineBreak { } named @AbstractDisplay { No } + named @AbstractFont { } + named @AbstractBreak { } + named @AbstractFormat + left @Title + right @Body { @Centre @Title @DP @Body } named @AbstractTitle { dft } named @ReferencesBeforeAppendices { No } @@ -268,7 +282,7 @@ def @ReportSetup def @DateValue right indent { @DateLine @Case { - No @Yield {} + No @Yield @Null Yes @Yield @Date else @Yield @DateLine } @@ -276,10 +290,11 @@ def @ReportSetup def @TitleMaterial { - //1i @B {clines 1.4vx} @Break @Cntr @Title - //1.00v @I clines @Break { |0.5rt @Author | } - //1.00v clines @Break @Cntr @Institution - //1.00v clines @Break @Cntr @DateValue + //@AboveTitleGap + @TitleFont @Font @TitleBreak @Break @Cntr @Title + //1.00v @AuthorFont @Font @AuthorBreak @Break @Cntr @Author + //1.00v @InstitutionFont @Font @InstitutionBreak @Break @Cntr @Institution + //1.00v @DateLineFont @Font @DateLineBreak @Break @Cntr @DateValue } def @AbstractPart @@ -296,14 +311,16 @@ def @ReportSetup "" @Yield @Null - else @Yield @AbstractDisplay @Case { + else @Yield + { + @AbstractFont @Font @AbstractBreak @Break + @AbstractDisplay @Case { - No @Yield { @Title @DP @Abstract } + No @Yield { @Title @AbstractFormat @Abstract } - Yes @Yield { |0.5rt @Title | - @DP - |@DisplayIndent @Abstract |@DisplayIndent - } + Yes @Yield { |@DisplayIndent + @Title @AbstractFormat @Abstract |@DisplayIndent } + } } } } @@ -1,9 +1,9 @@ ############################################################################### # # -# Make file for installing Basser Lout Version 3.21 # +# Make file for installing Basser Lout Version 3.22 # # # # Jeffrey H. Kingston # -# 10 May 2000 # +# 3 June 2000 # # # # make prg2lout Compile a small auxiliary program called prg2lout # # make lout Compile the Lout source # @@ -28,11 +28,26 @@ # Lout binary is to run. At present OSUNIX and OSDOS work but OSMAC # # doesn't work. # # # -# OSUNIX Unix in all its flavours, including Linux. # -# OSDOS MS-DOS etc. ("rb" and "wb" file access modes where needed) # -# OSMAC Macintosh # +# OSUNIX Unix in all its flavours, including Linux. # +# OSDOS MS-DOS etc. ("rb" and "wb" file access modes where needed) # +# OSMAC Macintosh # # # -# (2) This may be the trickiest step of all. On some systems, for example # +# (2) If you want to install Lout with debugging on for some reason, for # +# example if a guru has asked you to do this in the course of tracking # +# down some problem with Lout, then set these two macros as follows: # +# # +# DEBUGGING = 1 # +# TRACING = -g # +# # +# Lout will run a bit slower and its binary will be a bit larger if # +# you do this. The normal, non-debugging values are # +# # +# DEBUGGING = 0 # +# TRACING = # +# # +# These should appear like this below. # +# # +# (3) This may be the trickiest step of all. On some systems, for example # # NT under Visual C++, Lout's use of the system ftell() call causes # # a problem. This problem typically manifests itself on the *second* # # pass over a large document such as the Lout User's Guide: a message # @@ -49,13 +64,13 @@ # Cygnus gnuwin32 gcc djgpp # # Mingw32 # # # -# (3) Set the USESTAT macro defined below to 1 if the system you are # +# (4) Set the USESTAT macro defined below to 1 if the system you are # # compiling onto has the stat() file status system call. If you are # # unsure, or know it doesn't, set USESTAT to 0. The stat() call, # # if used, will allow Lout to determine the time of last change # # of database index files and rebuild them automatically if required. # # # -# (4) Set the SAFEDFT macro defined below to 1 if you want safe execution # +# (5) Set the SAFEDFT macro defined below to 1 if you want safe execution # # (i.e. disabling calls to system()) to be the default behaviour. You # # can always specify safe or unsafe execution by means of the -S and # # -U options to lout when processing a document; SAFEDFT means that # @@ -63,7 +78,7 @@ # required when formatting computer programs, so if in doubt, do not # # change the value of SAFEDFT. # # # -# (5) Set the following four macros defined below to appropriate values: # +# (6) Set the following four macros defined below to appropriate values: # # # # BINDIR Directory where Lout's binary goes. This directory is # # assumed to exist. # @@ -78,7 +93,7 @@ # 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. # +# (7) Set the following two macros defined below to appropriate values. # # I strongly recommend CHARIN=1 and CHAROUT=0 for all sites (English # # and non-English language). This way we get a truly international # # standard in which everyone has access to accented characters, yet # @@ -113,7 +128,7 @@ # as \ddd escape sequences and which are printed as one-byte # # literal characters. # # # -# (7) Set macro USELOC to one of the following values, NOT TO A LOCALE. # +# (8) Set macro USELOC to one of the following values, NOT TO A LOCALE. # # # # 0 Lout's error messages will always appear in English, and no # # source code related to locales will be executed (although # @@ -139,16 +154,16 @@ # # # For error messages in other languages, consult ./locale/README. # # # -# (8) Set macro COLLATE to either 0 or 1. If you set it to 1, Lout will # +# (9) Set macro COLLATE to either 0 or 1. If you set it to 1, Lout will # # use the strcoll() routine by default when sorting alphabetically # # (e.g. when sorting indexes), otherwise Lout will sort by default # -# based on the ISO codes of the characters. This defaul setting may # +# based on the ISO codes of the characters. This default setting may # # be changed during individual runs of Lout by the -l and -L flags. # # # -# (9) Execute "make prg2lout". This will compile the prg2lout program, # +# (10) 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 # +# (11) If you want to be able to produce compressed PDF files, as opposed to # # uncompressed ones, you need to: # # # # (a) obtain the zlib compression library from # @@ -172,16 +187,16 @@ # If you don't want zlib support or cannot obtain it or cannot use it, # # leave the PDF_COMPRESSION, ZLIB, and ZLIBPATH variables as they are. # # # -# (11) Execute "make lout". This will compile the Lout source, leaving the # +# (12) Execute "make lout". This will compile the Lout source, leaving the # # binary in this directory. No changes are made in other directories. # # # -# (12) This makefile assumes that Lout is not installed on your system # +# (13) This makefile assumes that Lout is not installed on your system # # already. If you do have an earlier version of Lout installed, # # the simplest way to get rid of it is to type "make uninstall" now. # # Of course, this is assuming that the old version was installed in the # # same directories as where you are about to install the new version. # # # -# (13) Execute "make install". This will do the following things: # +# (14) Execute "make install". This will do the following things: # # # # (a) It will copy the lout and prg2lout binaries into $(BINDIR); # # # @@ -204,22 +219,22 @@ # 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 # +# (15) 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). # # # -# (15) Execute "make installdoc". This creates directory $(DOCDIR) and # +# (16) Execute "make installdoc". This creates directory $(DOCDIR) and # # copies the Lout documentation into it. # # # -# (16) If you want French error messages, execute "make installfr" now. # +# (17) If you want French error messages, execute "make installfr" now. # # If you want German error messages, execute "make installde" now. # # These commands compile the error messages files into packed forms # # using the gencat command, and store them in $(LIBDIR)/locale. # # # -# (17) Execute "make clean". This cleans up this directory. # +# (18) Execute "make clean". This cleans up this directory. # # # -# (18) If the usual size of a piece of paper at your site is not A4, you # +# (19) If the usual size of a piece of paper at your site is not A4, you # # might like to now change the default value of the @PageType option # # on line 59 of file $(LIBDIR)/include/dsf: # # # @@ -232,7 +247,7 @@ # rest. You can find the list of known page types, alternative to A4, # # in the User's Guide, and also at line 640 in $(LIBDIR)/include/dsf. # # # -# (19) If the usual language at your site is not English, you might like to # +# (20) If the usual language at your site is not English, you might like to # # now change the default value of the @InitialLanguage option on line # # 255 of file $(LIBDIR)/include/bsf. This will mean that by default # # the date and words like Chapter and July will appear in a different # @@ -255,6 +270,9 @@ DBFIX = 0 USESTAT = 1 SAFEDFT = 0 +DEBUGGING = 1 +TRACING = -g + BINDIR = /export/home/6monthspace/jeff/bin LIBDIR = /export/home/6monthspace/jeff/lout.lib DOCDIR = /export/home/6monthspace/jeff/lout.doc @@ -305,7 +323,8 @@ CFLAGS = -DOS_UNIX=$(OSUNIX) \ -DCHAR_OUT=$(CHAROUT) \ -DLOCALE_ON=$(USELOC) \ -DASSERT_ON=1 $(COPTS) \ - -DDEBUG_ON=1 -g \ + -DDEBUG_ON=$(DEBUGGING) \ + $(TRACING) \ -DPDF_COMPRESSION=$(PDF_COMPRESSION) \ $(ZLIBPATH) @@ -314,7 +333,8 @@ OBJS = z01.o z02.o z03.o z04.o z05.o z06.o z07.o z08.o \ z17.o z18.o z19.o z20.o z21.o z22.o z23.o z24.o \ z25.o z26.o z27.o z28.o z29.o z30.o z31.o z32.o \ z33.o z34.o z35.o z36.o z37.o z38.o z39.o z40.o \ - z41.o z42.o z43.o z44.o z45.o z46.o z47.o z48.o + z41.o z42.o z43.o z44.o z45.o z46.o z47.o z48.o \ + z49.o z50.o z51.o lout: $(OBJS) $(CC) -o lout $(OBJS) $(ZLIB) -lm diff --git a/maps/LtLatin2.LCM b/maps/LtLatin2.LCM index 3df229f..fa92ccd 100644 --- a/maps/LtLatin2.LCM +++ b/maps/LtLatin2.LCM @@ -171,9 +171,9 @@ 125 175 braceright 126 176 asciitilde 127 177 -none- -128 200 -none- -129 201 -none- -130 202 -none- +128 200 quotesinglebase +129 201 quotedblbase +130 202 ellipsis 131 203 -none- 132 204 -none- 133 205 quotedblleft @@ -1,6 +1,7 @@ Basser Lout Version 3 and the PostScript Document Structuring Conventions Jeffrey H. Kingston 24 March 1994 +Modified to explain changes in font inclusion, 3 June 2000 The following notes detail all areas known to the author where Lout does not fully conform to Version 3.0 of the PostScript Document Structuring @@ -43,17 +44,22 @@ relating to commonly available fonts should be placed in the document setup section. However no definition of which fonts fall into this category is offered, so this requirement is not observed by Lout. Instead, Lout generates one "%%IncludeResource: font" in the page setup -section for each font used on the corresponding page, except for fonts -used on the first page which are done once only in the document setup -section. This implies that fonts used on many pages but not the first -will generate many "%%IncludeResource: font" comments, one for each page -on which the font is used, which in turn implies that these fonts might -be downloaded many times (Lout itself never downloads any font, but a -document manager might react to an "%%IncludeResource: font" comment by -doing so). However, most fonts used by most people are already in the -printer, and in these cases "it is highly likely that the font server -or document manager would ignore the inclusion request, because the -font would already be available on the printer" (p678). +section for each font used on the corresponding page. (It used to be +the case that fonts used on the first page were an exception to this +rule; they were done once only in the document setup section. This +exception has been removed from Lout Version 3.22 and above.) Thus, +fonts used on many pages will generate many "%%IncludeResource: font" +comments, one for each page on which the font is used, which in turn +implies that these fonts might be downloaded many times (Lout itself +never downloads any font, but a document manager might react to an +"%%IncludeResource: font" comment by doing so). However, most fonts +used by most people are already in the printer, and in these cases +"it is highly likely that the font server or document manager would +ignore the inclusion request, because the font would already be +available on the printer" (p678). The rationale for putting all +"%%IncludeResource: font" comments into page setups is that it gives +document managers exact information about what fonts are used on +each page, which, hopefully, they can put to good use. PageResources. This comment is supposed to list all resources needed or supplied on the current page except for procsets (p685). At present @@ -263,6 +263,16 @@ Changes and new features introduced in Version 3.21 [10 May 2000] there is now a fontdefs database, so you need to replace this line with "@SysDatabase @FontDef { fontdefs }". +Changes and new features introduced in Version 3.22 [3 June 2000] + + Bug fixes + More setup file options for controlling the appearance of reports + Makefile now explicitly explains how to compile with debugging on/off + Added quotesinglebase, quotedblbase, ellipsis to LtLatin2.LCM file + Object-oriented back end (of interest to implementors only) + Chapters without page breaks option (see @ChapterStartPages, User's Guide) + Font includes all in page setups now (of interest to implementors only) + Things that ought to be done but haven't been done yet @@ -271,4 +281,4 @@ Things that ought to be done but haven't been done yet Review Uwe's proposal for moving word row marks to the baseline Jeff Kingston -10 May 2000 +3 June 2000 @@ -1,6 +1,6 @@ -/*@z01.c:Supervise:StartSym, AllowCrossDb, Encapsulated, etc.@****************/ +/*@z01.c:Supervise:StartSym, AllowCrossDb, etc.@******************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.21) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.22) */ /* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */ /* */ /* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */ @@ -25,7 +25,7 @@ /* FILE: z01.c */ /* MODULE: Supervise */ /* EXTERNS: main(), StartSym, GalleySym, ForceGalleySym, InputSym, */ -/* PrintSym, AllowCrossDb, Encapsulated */ +/* PrintSym, AllowCrossDb */ /* */ /*****************************************************************************/ #include "externs.h" @@ -69,51 +69,28 @@ OBJECT StartSym, GalleySym, ForceGalleySym, InputSym, PrintSym, OptGallSym, /*****************************************************************************/ /* */ +/* BackEnd The back end (PostScript, PDF, etc.) to use */ /* CommandOptions Command-line options (ACAT of objects) */ -/* */ -/*****************************************************************************/ - -OBJECT CommandOptions; - - -/*****************************************************************************/ -/* */ /* UseCollate Use local collation sequence rather than ASCII */ /* AllowCrossDb Allow references to OldCrossDb and NewCrossDb */ /* InMemoryDbIndexes True if cr database index file is to be in-memory */ -/* Encapsulated Produce a one-page encapsulated PostScript file */ /* Kern Do kerning */ /* SafeExecution Execute safely, i.e. prohibit system() calls */ /* AltErrorFormat Use alternative error message format */ +/* InitializeAll TRUE if this is an initializing run. */ +/* MsgCat category for locale-specific messages */ +/* TotalWordCount total number of words printed */ /* */ /*****************************************************************************/ +BACK_END BackEnd; +OBJECT CommandOptions; BOOLEAN UseCollate; BOOLEAN AllowCrossDb; BOOLEAN InMemoryDbIndexes; -BOOLEAN Encapsulated; BOOLEAN Kern; BOOLEAN SafeExecution; BOOLEAN AltErrorFormat; - - -/*****************************************************************************/ -/* */ -/* BackEnd POSTSCRIPT, PLAINTEXT or PDF */ -/* BackEndWord "PostScript" or "PlainText" */ -/* PlainCharWidth if PLAINTEXT, the width of each character */ -/* PlainCharHeight if PLAINTEXT, the height of each character */ -/* PlainFormFeed if PLAINTEXT, TRUE if separate components with \f. */ -/* InitializeAll TRUE if this is an initializing run. */ -/* MsgCat category for locale-specific messages */ -/* TotalWordCount total number of words printed */ -/* */ -/*****************************************************************************/ - -int BackEnd; -FULL_CHAR *BackEndWord; -FULL_LENGTH PlainCharWidth, PlainCharHeight; -BOOLEAN PlainFormFeed; BOOLEAN InitializeAll; #if LOCALE_ON nl_catd MsgCat; @@ -255,8 +232,7 @@ int main(int argc, char *argv[]) /* initialise various modules, add current directory to search paths */ TotalWordCount = 0; seen_wordcount = FALSE; - BackEnd = POSTSCRIPT; - BackEndWord = STR_POSTSCRIPT; + BackEnd = PS_BackEnd; PlainCharWidth = PLAIN_WIDTH; PlainCharHeight = PLAIN_HEIGHT; PlainFormFeed = FALSE; @@ -479,8 +455,7 @@ int main(int argc, char *argv[]) case CH_FLAG_PDF: - BackEnd = PDF; - BackEndWord = STR_PDF; + BackEnd = PDF_BackEnd; break; @@ -488,8 +463,7 @@ int main(int argc, char *argv[]) if( StringEqual(AsciiToFull(argv[i]+1), STR_PDF) ) { - BackEnd = PDF; - BackEndWord = STR_PDF; + BackEnd = PDF_BackEnd; break; } PlainFormFeed = TRUE; @@ -498,8 +472,7 @@ int main(int argc, char *argv[]) case CH_FLAG_PLAIN: - BackEnd = PLAINTEXT; - BackEndWord = STR_PLAINTEXT; + BackEnd = Plain_BackEnd; if( *(argv[i]+2) != '\0' ) { float len1, len2; FULL_CHAR units1, units2; if( sscanf(argv[i]+2, "%f%c%f%c",&len1,&units1,&len2,&units2) != 4 ) @@ -670,28 +643,32 @@ int main(int argc, char *argv[]) #if OS_DOS /* For DOS/Win32 we need to set binary mode on stdout to prevent PDF compressed streams and xrefs from being corrupted - Uwe 12/98 */ - if( BackEnd != PLAINTEXT && _setmode(_fileno(stdout), _O_BINARY) == -1 ) + if( BackEnd->code != PLAINTEXT && + _setmode(_fileno(stdout), _O_BINARY) == -1 ) Error(1, 31, "cannot set binary mode on stdout", FATAL, no_fpos); #endif out_fp = stdout; } else - { out_fp = StringFOpen(outfile, BackEnd==PLAINTEXT ? WRITE_TEXT:WRITE_BINARY); + { out_fp = StringFOpen(outfile, + BackEnd->code == PLAINTEXT ? WRITE_TEXT : WRITE_BINARY); if( out_fp == null ) Error(1, 27, "cannot open output file %s", FATAL, no_fpos, outfile); } + + /* initialize miscellaneous modules */ ColourInit(); LanguageInit(); - PrintInit(out_fp); + BackEnd->PrintInitialize(out_fp); /* append default directories to file search paths */ - AddToPath(FONT_PATH, MakeWordThree(lib, STR_DIR, AsciiToFull(FONT_DIR))); - AddToPath(HYPH_PATH, MakeWordThree(lib, STR_DIR, AsciiToFull(HYPH_DIR))); - AddToPath(MAPPING_PATH, MakeWordThree(lib, STR_DIR, AsciiToFull(MAPS_DIR))); - AddToPath(SYSDATABASE_PATH,MakeWordThree(lib, STR_DIR, AsciiToFull(DATA_DIR))); - AddToPath(DATABASE_PATH, MakeWordThree(lib, STR_DIR, AsciiToFull(DATA_DIR))); - AddToPath(SYSINCLUDE_PATH, MakeWordThree(lib, STR_DIR, AsciiToFull(INCL_DIR))); - AddToPath(INCLUDE_PATH, MakeWordThree(lib, STR_DIR, AsciiToFull(INCL_DIR))); + AddToPath(FONT_PATH, MakeWordThree(lib, STR_DIR, AsciiToFull(FONT_DIR))); + AddToPath(HYPH_PATH, MakeWordThree(lib, STR_DIR, AsciiToFull(HYPH_DIR))); + AddToPath(MAPPING_PATH, MakeWordThree(lib, STR_DIR, AsciiToFull(MAPS_DIR))); + AddToPath(SYSDATABASE_PATH,MakeWordThree(lib,STR_DIR, AsciiToFull(DATA_DIR))); + AddToPath(DATABASE_PATH, MakeWordThree(lib, STR_DIR, AsciiToFull(DATA_DIR))); + AddToPath(SYSINCLUDE_PATH,MakeWordThree(lib, STR_DIR, AsciiToFull(INCL_DIR))); + AddToPath(INCLUDE_PATH, MakeWordThree(lib, STR_DIR, AsciiToFull(INCL_DIR))); /* use stdin if no source files were mentioned */ if( source_file_count == 0 ) @@ -700,18 +677,18 @@ int main(int argc, char *argv[]) } /* load predefined symbols into symbol table */ - StartSym = nilobj; /* Not a mistake */ - StartSym = load(KW_START, 0, FALSE, FALSE, TRUE, NO_PREC ); - GalleySym = load(KW_GALLEY, 0, FALSE, FALSE, TRUE, NO_PREC ); - ForceGalleySym = load(KW_FORCE_GALLEY, 0, FALSE, FALSE, TRUE, NO_PREC ); - InputSym = load(KW_INPUT, 0, FALSE, FALSE, TRUE, NO_PREC ); - PrintSym = load(KW_PRINT, 0, FALSE, FALSE, TRUE, NO_PREC ); - FilterInSym = load(KW_FILTERIN, 0, FALSE, FALSE, FALSE, NO_PREC ); - FilterOutSym = load(KW_FILTEROUT, 0, FALSE, FALSE, FALSE, NO_PREC ); - FilterErrSym = load(KW_FILTERERR, 0, FALSE, FALSE, FALSE, NO_PREC ); - OptGallSym = load(KW_OPTGALL, 0, FALSE, TRUE, FALSE, DEFAULT_PREC); - VerbatimSym = load(KW_VERBATIM,VERBATIM,FALSE, TRUE, FALSE, DEFAULT_PREC); - RawVerbatimSym = load(KW_RAWVERBATIM,RAW_VERBATIM,FALSE, TRUE, FALSE, DEFAULT_PREC); + StartSym = nilobj; /* Not a mistake */ + StartSym = load(KW_START, 0, FALSE, FALSE, TRUE, NO_PREC ); + GalleySym = load(KW_GALLEY, 0, FALSE, FALSE, TRUE, NO_PREC ); + ForceGalleySym= load(KW_FORCE_GALLEY, 0, FALSE, FALSE, TRUE, NO_PREC ); + InputSym = load(KW_INPUT, 0, FALSE, FALSE, TRUE, NO_PREC ); + PrintSym = load(KW_PRINT, 0, FALSE, FALSE, TRUE, NO_PREC ); + FilterInSym = load(KW_FILTERIN, 0, FALSE, FALSE, FALSE, NO_PREC ); + FilterOutSym = load(KW_FILTEROUT, 0, FALSE, FALSE, FALSE, NO_PREC ); + FilterErrSym = load(KW_FILTERERR, 0, FALSE, FALSE, FALSE, NO_PREC ); + OptGallSym = load(KW_OPTGALL, 0, FALSE, TRUE, FALSE, DEFAULT_PREC); + VerbatimSym = load(KW_VERBATIM,VERBATIM,FALSE, TRUE, FALSE, DEFAULT_PREC); + RawVerbatimSym= load(KW_RAWVERBATIM,RAW_VERBATIM,FALSE,TRUE,FALSE,DEFAULT_PREC); load(KW_BEGIN, BEGIN, FALSE, FALSE, FALSE, BEGIN_PREC ); @@ -847,7 +824,7 @@ int main(int argc, char *argv[]) TransferClose(); /* close various modules */ - PrintAfterLast(); + BackEnd->PrintAfterLastPage(); CrossClose(); CloseFiles(); @@ -1,6 +1,6 @@ /*@z02.c:Lexical Analyser:Declarations@***************************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.21) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.22) */ /* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */ /* */ /* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */ @@ -389,6 +389,14 @@ static void srcnext(void) /* at end of file since blksize = 0; so add missing newline char */ blksize++; last_char = *(buf+blksize-1) = CH_NEWLINE; + + /* this adjustment breaks LexNextTokenPos, so fatal error if database */ + if( ftype == DATABASE_FILE ) + { + line_num(file_pos) = col_num(file_pos) = 0; + Error(2, 25, "a database file must end with a newline; this one doesn't", + FATAL, &file_pos); + } } debugcond4(DLA, DD, stack_free <= 1, "srcnext: %d = fread(0x%x, %d, %d, fp)", @@ -1,6 +1,6 @@ /*@z03.c:File Service:Declarations, no_fpos@******************************** */ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.21) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.22) */ /* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */ /* */ /* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */ @@ -1,6 +1,6 @@ /*@z04.c:Token Service:NewToken(), CopyTokenList()@***************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.21) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.22) */ /* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */ /* */ /* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */ @@ -1,6 +1,6 @@ /*@z05.c:Read Definitions:ReadLangDef()@**************************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.21) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.22) */ /* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */ /* */ /* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */ @@ -1,6 +1,6 @@ /*@z06.c:Parser:PushObj(), PushToken(), etc.@*********************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.21) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.22) */ /* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */ /* */ /* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */ @@ -64,7 +64,8 @@ static void check_yield(OBJECT y, OBJECT *res_yield, BOOLEAN *all_literals) Child(s1, Down(y)); debug1(DOP, DD, " checkyield(%s)", EchoObject(y)); if( is_word(type(s1)) ) - { if( StringEqual(string(s1),BackEndWord) || StringEqual(string(s1),STR_ELSE) ) + { if( StringEqual(string(s1), BackEnd->name) || + StringEqual(string(s1),STR_ELSE) ) if( *res_yield == nilobj ) *res_yield = y; } else if( type(s1) == ACAT ) @@ -72,7 +73,8 @@ static void check_yield(OBJECT y, OBJECT *res_yield, BOOLEAN *all_literals) { Child(z, link); if( type(z) == GAP_OBJ ) continue; if( is_word(type(z)) ) - { if( StringEqual(string(z),BackEndWord)||StringEqual(string(s1),STR_ELSE)) + { if( StringEqual(string(z), BackEnd->name) || + StringEqual(string(s1), STR_ELSE)) if( *res_yield == nilobj ) *res_yield = y; } else @@ -1,6 +1,6 @@ /*@z07.c:Object Service:SplitIsDefinite(), DisposeObject()@*******************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.21) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.22) */ /* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */ /* */ /* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */ @@ -1,6 +1,6 @@ /*@z08.c:Object Manifest:ReplaceWithSplit()@**********************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.21) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.22) */ /* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */ /* */ /* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */ @@ -1542,7 +1542,7 @@ OBJECT *enclose, BOOLEAN fcr) case BACKEND: - res = MakeWord(WORD, BackEndWord, &fpos(x)); + res = MakeWord(WORD, BackEnd->name, &fpos(x)); ReplaceNode(res, x); DisposeObject(x); x = Manifest(res, env, style, bthr, fthr, target, crs, ok, FALSE, enclose, fcr); @@ -1,6 +1,6 @@ /*@z09.c:Closure Expansion:SearchEnv()@***************************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.21) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.22) */ /* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */ /* */ /* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */ @@ -1,6 +1,6 @@ /*@z10.c:Cross References:CrossInit(), CrossMake()@***************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.21) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.22) */ /* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */ /* */ /* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */ @@ -1,6 +1,6 @@ /*@z11.c:Style Service:EchoStyle()@*******************************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.21) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.22) */ /* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */ /* */ /* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */ @@ -1,6 +1,6 @@ /*@z12.c:Size Finder:MinSize()@***********************************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.21) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.22) */ /* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */ /* */ /* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */ @@ -1,6 +1,6 @@ /*@z13.c:Object Breaking:BreakJoinedGroup()@**********************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.21) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.22) */ /* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */ /* */ /* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */ @@ -482,7 +482,7 @@ OBJECT BreakObject(OBJECT x, CONSTRAINT *c) case ROTATE: - if( BackEnd != PLAINTEXT && InsertScale(x, c) ) + if( BackEnd->scale_avail && InsertScale(x, c) ) { Parent(x, Up(x)); Error(13, 3, "%s object scaled horizontally by factor %.2f (too wide)", @@ -557,7 +557,7 @@ OBJECT BreakObject(OBJECT x, CONSTRAINT *c) EchoStyle(&save_style(x)), Image(type(x)), EchoObject(x)); x = BreakObject(x, c); } - else if( BackEnd != PLAINTEXT && InsertScale(x, c) ) + else if( BackEnd->scale_avail && InsertScale(x, c) ) { OBJECT tmp; tmp = x; Parent(x, Up(x)); @@ -589,7 +589,7 @@ OBJECT BreakObject(OBJECT x, CONSTRAINT *c) case INCGRAPHIC: case SINCGRAPHIC: - if( BackEnd != PLAINTEXT && InsertScale(x, c) ) + if( BackEnd->scale_avail && InsertScale(x, c) ) { Parent(x, Up(x)); Error(13, 7, "%s scaled horizontally by factor %.2f (too wide)", @@ -1,6 +1,6 @@ /*@z14.c:Fill Service:Declarations@*******************************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.21) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.22) */ /* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */ /* */ /* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */ @@ -135,7 +135,7 @@ typedef struct { badness = (SQRT_LOOSE_BAD*(col_width - I.nat_width)) / col_width; \ I.badness += badness * badness; \ } \ - else if( BackEnd != PLAINTEXT && allow_shrink && \ + else if( BackEnd->fractional_spacing_avail && allow_shrink && \ MAX_SHRINK*(I.nat_width-col_width) <= I.space_width ) \ { I.class = TIGHT; \ badness = (SQRT_TIGHT_BAD*(col_width - I.nat_width)) / col_width; \ @@ -1,6 +1,6 @@ /*@z15.c:Size Constraints:MinConstraint(), EnlargeToConstraint()@*************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.21) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.22) */ /* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */ /* */ /* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */ @@ -1,6 +1,6 @@ /*@z16.c:Size Adjustment:SetNeighbours(), CatAdjustSize()@********************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.21) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.22) */ /* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */ /* */ /* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */ @@ -1,6 +1,6 @@ /*@z17.c:Gap Widths:GetGap()@*************************************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.21) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.22) */ /* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */ /* */ /* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */ @@ -205,7 +205,7 @@ FULL_LENGTH MinGap(FULL_LENGTH a, FULL_LENGTH b, FULL_LENGTH c, GAP *xgap) case EDGE_MODE: res = find_min(MAX_FULL_LENGTH, a + w + b); break; - case MARK_MODE: if( BackEnd != PLAINTEXT ) + case MARK_MODE: if( BackEnd->fractional_spacing_avail ) res = find_max(w, a + b + (FULL_LENGTH) (0.1 * w) ); else res = find_max(w, a + b); @@ -257,7 +257,7 @@ FULL_LENGTH ExtraGap(FULL_LENGTH a, FULL_LENGTH b, GAP *xgap, int dir) case EDGE_MODE: res = 0; break; - case MARK_MODE: if( BackEnd != PLAINTEXT ) + case MARK_MODE: if( BackEnd->fractional_spacing_avail ) res = find_max(0, (FULL_LENGTH) (0.9 * w) - a - b); else res = find_max(0, w - a - b); @@ -331,7 +331,7 @@ FULL_LENGTH ActualGap(FULL_LENGTH prevf, FULL_LENGTH b, FULL_LENGTH f, case EDGE_MODE: w2 = prevf + w + b; break; - case MARK_MODE: if( BackEnd != PLAINTEXT ) + case MARK_MODE: if( BackEnd->fractional_spacing_avail ) w2 = find_max(w, prevf + b + (FULL_LENGTH) (0.1 * w) ); else w2 = find_max(w, prevf + b); @@ -1,6 +1,6 @@ /*@z18.c:Galley Transfer:Declarations@****************************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.21) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.22) */ /* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */ /* */ /* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */ @@ -1,6 +1,6 @@ /*@z19.c:Galley Attaching:DetachGalley()@*************************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.21) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.22) */ /* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */ /* */ /* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */ @@ -1,6 +1,6 @@ /*@z20.c:Galley Flushing:DebugInnersNames()@**********************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.21) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.22) */ /* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */ /* */ /* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */ @@ -1,6 +1,6 @@ /*@z21.c:Galley Maker:SizeGalley()@*******************************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.21) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.22) */ /* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */ /* */ /* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */ @@ -1,6 +1,6 @@ /*@z22.c:Galley Service:Interpose()@******************************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.21) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.22) */ /* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */ /* */ /* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */ @@ -795,10 +795,13 @@ void Promote(OBJECT hd, OBJECT stop_link, OBJECT dest_index, BOOLEAN join_after) label_string); debug1(DCR, D, "label_string = %s", label_string); if( first ) - { PrintBeforeFirst(size(hd, COLM), size(y, ROWM), label_string); + { BackEnd->PrintBeforeFirstPage(size(hd, COLM), size(y, ROWM), + label_string); first = FALSE; } - else PrintBetween(size(hd, COLM), size(y, ROWM), label_string); + else + BackEnd->PrintBetweenPages(size(hd, COLM), size(y, ROWM), + label_string); if( page_label != nilobj ) { DisposeObject(page_label); page_label = nilobj; @@ -1,6 +1,6 @@ /*@z23.c:Galley Printer:ScaleFactor()@****************************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.21) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.22) */ /* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */ /* */ /* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */ @@ -223,7 +223,7 @@ void FixAndPrintObject(OBJECT x, FULL_LENGTH xmk, FULL_LENGTH xb, /* if first occurrence of this font on this page, notify font */ if( string(x)[0] != '\0' ) - { face = finfo[word_font(x)].original_font; + { face = finfo[word_font(x)].original_face; if( font_page(face) < font_curr_page ) { debug3(DFT, DD, "FAPO: x = %s, word_font = %d, face = %s", string(x), word_font(x), EchoObject(face)); @@ -241,11 +241,11 @@ void FixAndPrintObject(OBJECT x, FULL_LENGTH xmk, FULL_LENGTH xb, assert( underline(x) == UNDER_OFF || underline(x) == UNDER_ON, "FixAndPrintObject: underline(x)!" ); if( string(x)[0] != '\0' ) - { PrintWord(x, word_save_mark(x), pg - xmk); + { BackEnd->PrintWord(x, word_save_mark(x), pg - xmk); if( underline(x) == UNDER_ON ) { FontWordSize(x); /* to restore fwd(x, COLM) */ - PrintUnderline(word_font(x), word_save_mark(x), + BackEnd->PrintUnderline(word_font(x), word_save_mark(x), word_save_mark(x) + fwd(x, COLM), pg - xmk); } } @@ -334,30 +334,22 @@ void FixAndPrintObject(OBJECT x, FULL_LENGTH xmk, FULL_LENGTH xb, debug0(DRS, DD, "FixAndPrintObject at VSCALE"); CountChild(y, Down(x), count); - switch( BackEnd ) + if( BackEnd->scale_avail ) { - case PLAINTEXT: - - break; - - - case POSTSCRIPT: - case PDF: - - if( dim == COLM ) - FixAndPrintObject(y, xmk, xb, xf, dim, NO_SUPPRESS, pg, count); - else if( (scale_factor = ScaleFactor(xb+xf, size(y, ROWM))) > 0 ) - { SaveGraphicState(y); - CoordTranslate(0, pg-(xmk-xb+(FULL_LENGTH) (back(y,ROWM)*scale_factor))); - CoordScale(1.0, scale_factor); - FixAndPrintObject(y, 0, back(y,ROWM), fwd(y,ROWM), dim, - NO_SUPPRESS, 0, count); - RestoreGraphicState(); - } - else if( !is_word(type(y)) || string(y)[0] != '\0' ) - Error(23, 1, "object deleted (it cannot be scaled vertically)", - WARN, &fpos(x)); - break; + if( dim == COLM ) + FixAndPrintObject(y, xmk, xb, xf, dim, NO_SUPPRESS, pg, count); + else if( (scale_factor = ScaleFactor(xb+xf, size(y, ROWM))) > 0 ) + { BackEnd->SaveGraphicState(y); + BackEnd->CoordTranslate(0, + pg - (xmk - xb + (FULL_LENGTH) (back(y, ROWM) * scale_factor))); + BackEnd->CoordScale(1.0, scale_factor); + FixAndPrintObject(y, 0, back(y,ROWM), fwd(y,ROWM), dim, + NO_SUPPRESS, 0, count); + BackEnd->RestoreGraphicState(); + } + else if( !is_word(type(y)) || string(y)[0] != '\0' ) + Error(23, 1, "object deleted (it cannot be scaled vertically)", + WARN, &fpos(x)); } back(x, dim) = xb; fwd(x, dim) = xf; break; @@ -367,37 +359,27 @@ void FixAndPrintObject(OBJECT x, FULL_LENGTH xmk, FULL_LENGTH xb, debug0(DRS, DD, "FixAndPrintObject at HSCALE"); CountChild(y, Down(x), count); - switch( BackEnd ) - { - case PLAINTEXT: - - break; - - - case POSTSCRIPT: - case PDF: - - if( dim == COLM ) - { save_mark(x) = xmk; - bc(constraint(x)) = xb; - fc(constraint(x)) = xf; - if( (scale_factor = ScaleFactor(xb+xf, size(y, COLM))) > 0 ) - FixAndPrintObject(y, 0, back(y, COLM), fwd(y, COLM), dim, - NO_SUPPRESS, pg, count); - else if( !is_word(type(y)) || string(y)[0] != '\0' ) - Error(23, 2, "object deleted (it cannot be scaled horizontally)", - WARN, &fpos(y)); - } - else if( (scale_factor = - ScaleFactor(bc(constraint(x))+fc(constraint(x)),size(y,COLM))) > 0 ) - { SaveGraphicState(y); - CoordTranslate(save_mark(x) - bc(constraint(x)) + if( BackEnd->scale_avail ) + { if( dim == COLM ) + { save_mark(x) = xmk; + bc(constraint(x)) = xb; + fc(constraint(x)) = xf; + if( (scale_factor = ScaleFactor(xb+xf, size(y, COLM))) > 0 ) + FixAndPrintObject(y, 0, back(y, COLM), fwd(y, COLM), dim, + NO_SUPPRESS, pg, count); + else if( !is_word(type(y)) || string(y)[0] != '\0' ) + Error(23, 2, "object deleted (it cannot be scaled horizontally)", + WARN, &fpos(y)); + } + else if( (scale_factor = + ScaleFactor(bc(constraint(x))+fc(constraint(x)),size(y,COLM))) > 0 ) + { BackEnd->SaveGraphicState(y); + BackEnd->CoordTranslate(save_mark(x) - bc(constraint(x)) + (FULL_LENGTH) (back(y, COLM)*scale_factor), 0); - CoordScale(scale_factor, 1.0); - FixAndPrintObject(y, xmk, xb, xf, dim, NO_SUPPRESS, pg, count); - RestoreGraphicState(); - } - break; + BackEnd->CoordScale(scale_factor, 1.0); + FixAndPrintObject(y, xmk, xb, xf, dim, NO_SUPPRESS, pg, count); + BackEnd->RestoreGraphicState(); + } } back(x, dim) = xb; fwd(x, dim) = xf; break; @@ -406,41 +388,30 @@ void FixAndPrintObject(OBJECT x, FULL_LENGTH xmk, FULL_LENGTH xb, case SCALE: CountChild(y, Down(x), count); - switch( BackEnd ) + if( BackEnd->scale_avail ) { - case PLAINTEXT: - - /* printable only if scale factor is one */ - if( bc(constraint(x)) == SF && fc(constraint(x)) == SF ) - { - FixAndPrintObject(y, xmk, xb, xf, dim, suppress, pg, count); - } - break; - - - case POSTSCRIPT: - case PDF: - - if( dim == COLM ) - { assert( bc(constraint(x)) > 0, "FAPO: horizontal scale factor!" ); - save_mark(x) = xmk; - yb = xb * SF / bc(constraint(x)); - yf = xf * SF / bc(constraint(x)); - FixAndPrintObject(y, 0, yb, yf, dim, NO_SUPPRESS, pg, count); - } - else - { assert( fc(constraint(x)) > 0, "FAPO: vertical scale factor!" ); - yb = xb * SF / fc(constraint(x)); - yf = xf * SF / fc(constraint(x)); - SaveGraphicState(y); - CoordTranslate(save_mark(x), pg - xmk); - CoordScale( (float) bc(constraint(x))/SF, - (float) fc(constraint(x))/SF); - FixAndPrintObject(y, 0, yb, yf, dim, NO_SUPPRESS, - 0, count); - RestoreGraphicState(); - } - break; + if( dim == COLM ) + { assert( bc(constraint(x)) > 0, "FAPO: horizontal scale factor!" ); + save_mark(x) = xmk; + yb = xb * SF / bc(constraint(x)); + yf = xf * SF / bc(constraint(x)); + FixAndPrintObject(y, 0, yb, yf, dim, NO_SUPPRESS, pg, count); + } + else + { assert( fc(constraint(x)) > 0, "FAPO: vertical scale factor!" ); + yb = xb * SF / fc(constraint(x)); + yf = xf * SF / fc(constraint(x)); + BackEnd->SaveGraphicState(y); + BackEnd->CoordTranslate(save_mark(x), pg - xmk); + BackEnd->CoordScale( (float)bc(constraint(x))/SF, + (float)fc(constraint(x))/SF); + FixAndPrintObject(y, 0, yb, yf, dim, NO_SUPPRESS, 0, count); + BackEnd->RestoreGraphicState(); + } + } + else if( bc(constraint(x)) == SF && fc(constraint(x)) == SF ) + { + FixAndPrintObject(y, xmk, xb, xf, dim, suppress, pg, count); } back(x, dim) = xb; fwd(x, dim) = xf; break; @@ -474,42 +445,30 @@ void FixAndPrintObject(OBJECT x, FULL_LENGTH xmk, FULL_LENGTH xb, case ROTATE: CountChild(y, Down(x), count); - switch( BackEnd ) + if( BackEnd->rotate_avail ) { - case PLAINTEXT: - - /* printable only if angle is zero */ - if( sparec(constraint(x)) == 0 ) - { - FixAndPrintObject(y, xmk, xb, xf, dim, suppress, pg, count); - } - break; - - - case POSTSCRIPT: - case PDF: - - if( dim == COLM ) - { CONSTRAINT colc, rowc, yc; - save_mark(x) = xmk; - SetConstraint(colc, back(x,COLM), MAX_FULL_LENGTH, fwd(x,COLM)); - SetConstraint(rowc, back(x,ROWM), MAX_FULL_LENGTH, fwd(x,ROWM)); - RotateConstraint(&yc, y, sparec(constraint(x)), &colc, &rowc,COLM); - FixAndPrintObject(y, 0, bc(yc), fc(yc), COLM,NO_SUPPRESS,pg,count); - } - else - { CONSTRAINT colc, rowc, yc; - SaveGraphicState(y); - CoordTranslate(save_mark(x), pg - xmk); - CoordRotate(sparec(constraint(x))); - SetConstraint(colc, back(x,COLM), MAX_FULL_LENGTH, fwd(x,COLM)); - SetConstraint(rowc, back(x,ROWM), MAX_FULL_LENGTH, fwd(x,ROWM)); - RotateConstraint(&yc, y, sparec(constraint(x)), &colc, &rowc, ROWM); - FixAndPrintObject(y, 0, bc(yc), fc(yc), ROWM, NO_SUPPRESS,0,count); - RestoreGraphicState(); - } - break; + if( dim == COLM ) + { CONSTRAINT colc, rowc, yc; + save_mark(x) = xmk; + SetConstraint(colc, back(x,COLM), MAX_FULL_LENGTH, fwd(x,COLM)); + SetConstraint(rowc, back(x,ROWM), MAX_FULL_LENGTH, fwd(x,ROWM)); + RotateConstraint(&yc, y, sparec(constraint(x)), &colc, &rowc,COLM); + FixAndPrintObject(y, 0, bc(yc), fc(yc), COLM,NO_SUPPRESS,pg,count); + } + else + { CONSTRAINT colc, rowc, yc; + BackEnd->SaveGraphicState(y); + BackEnd->CoordTranslate(save_mark(x), pg - xmk); + BackEnd->CoordRotate(sparec(constraint(x))); + SetConstraint(colc, back(x,COLM), MAX_FULL_LENGTH, fwd(x,COLM)); + SetConstraint(rowc, back(x,ROWM), MAX_FULL_LENGTH, fwd(x,ROWM)); + RotateConstraint(&yc, y, sparec(constraint(x)), &colc, &rowc, ROWM); + FixAndPrintObject(y, 0, bc(yc), fc(yc), ROWM, NO_SUPPRESS,0,count); + BackEnd->RestoreGraphicState(); + } } + else if( sparec(constraint(x)) == 0 ) + FixAndPrintObject(y, xmk, xb, xf, dim, suppress, pg, count); back(x, dim) = xb; fwd(x, dim) = xf; break; @@ -517,47 +476,37 @@ void FixAndPrintObject(OBJECT x, FULL_LENGTH xmk, FULL_LENGTH xb, case PLAIN_GRAPHIC: CountChild(y, LastDown(x), count); - switch( BackEnd ) + if( BackEnd->plaingraphic_avail ) { - - case POSTSCRIPT: - case PDF: - + if( dim == COLM ) + { + back(x, dim) = xb; + fwd(x, dim) = xf; + save_mark(x) = xmk - back(x, dim); + debug2(DGP, DD, "PLAIN_GRAPHIC COLM storing size %s, %s", + EchoLength(back(x, dim)), EchoLength(fwd(x, dim))); FixAndPrintObject(y, xmk, xb, xf, dim, suppress, pg, count); - break; - - - case PLAINTEXT: - - if( dim == COLM ) - { - back(x, dim) = xb; - fwd(x, dim) = xf; - save_mark(x) = xmk - back(x, dim); - debug2(DGP, DD, "PLAIN_GRAPHIC COLM storing size %s, %s", - EchoLength(back(x, dim)), EchoLength(fwd(x, dim))); - FixAndPrintObject(y, xmk, xb, xf, dim, suppress, pg, count); + } + else + { OBJECT tmp, pre, post; + Child(tmp, Down(x)); + if( type(tmp) == VCAT ) + { Child(pre, Down(tmp)); + Child(post, LastDown(tmp)); } - else - { OBJECT tmp, pre, post; - Child(tmp, Down(x)); - if( type(tmp) == VCAT ) - { Child(pre, Down(tmp)); - Child(post, LastDown(tmp)); - } - else pre = tmp, post = nilobj; - back(x, dim) = xb; - fwd(x, dim) = xf; - PrintPlainGraphicObject(pre, save_mark(x), + else pre = tmp, post = nilobj; + back(x, dim) = xb; + fwd(x, dim) = xf; + BackEnd->PrintPlainGraphic(pre, save_mark(x), + pg - (xmk - back(x, dim)), x); + FixAndPrintObject(y, xmk, xb, xf, dim, suppress, pg, count); + if( post != nilobj ) + BackEnd->PrintPlainGraphic(post, save_mark(x), pg - (xmk - back(x, dim)), x); - FixAndPrintObject(y, xmk, xb, xf, dim, suppress, pg, count); - if( post != nilobj ) - PrintPlainGraphicObject(post, save_mark(x), - pg - (xmk - back(x, dim)), x); - } - break; - - } /* end switch */ + } + } + else + FixAndPrintObject(y, xmk, xb, xf, dim, suppress, pg, count); back(x, dim) = xb; fwd(x, dim) = xf; break; @@ -565,63 +514,45 @@ void FixAndPrintObject(OBJECT x, FULL_LENGTH xmk, FULL_LENGTH xb, case GRAPHIC: CountChild(y, LastDown(x), count); - switch( BackEnd ) + if( BackEnd->graphic_avail ) { - case PLAINTEXT: - - FixAndPrintObject(y, xmk, xb, xf, dim, suppress, pg, count); - break; - - - case POSTSCRIPT: - case PDF: - - if( dim == COLM ) - { - /* if first occurrence of this font on this page, notify font */ - if( font(save_style(x)) > 0 ) - { face = finfo[font(save_style(x))].original_font; - if( font_page(face) < font_curr_page ) FontPageUsed(face); - } + if( dim == COLM ) + { + /* if first occurrence of this font on this page, notify font */ + if( font(save_style(x)) > 0 ) + { face = finfo[font(save_style(x))].original_face; + if( font_page(face) < font_curr_page ) FontPageUsed(face); + } - back(x, dim) = xb; - fwd(x, dim) = xf; - debug2(DGP, DD, "GRAPHIC COLM storing size %s, %s", - EchoLength(back(x, dim)), EchoLength(fwd(x, dim))); - save_mark(x) = xmk - back(x, COLM); - FixAndPrintObject(y, xb, xb, xf, dim, NO_SUPPRESS, pg, count); - } - else - { OBJECT tmp, pre, post; - Child(tmp, Down(x)); - if( type(tmp) == VCAT ) - { Child(pre, Down(tmp)); - Child(post, LastDown(tmp)); - } - else pre = tmp, post = nilobj; - back(x, dim) = xb; - fwd(x, dim) = xf; - - SaveTranslateDefineSave(x, save_mark(x), pg - (xmk + fwd(x, ROWM))); - /* *** - SaveGraphicState(x); - CoordTranslate(save_mark(x), pg - (xmk + fwd(x, ROWM))); - debug4(DGP, DD, "GRAPHIC ROWM calling %s,%s %s,%s", - EchoLength(back(x, COLM)), EchoLength(fwd(x, COLM)), - EchoLength(back(x, ROWM)), EchoLength(fwd(x, ROWM))); - DefineGraphicNames(x); - SaveGraphicState(x); - *** */ - - PrintGraphicObject(pre); - RestoreGraphicState(); - FixAndPrintObject(y, xb, xb, xf, dim, NO_SUPPRESS, xb + xf, count); - if( post != nilobj ) PrintGraphicObject(post); - RestoreGraphicState(); + back(x, dim) = xb; + fwd(x, dim) = xf; + debug2(DGP, DD, "GRAPHIC COLM storing size %s, %s", + EchoLength(back(x, dim)), EchoLength(fwd(x, dim))); + save_mark(x) = xmk - back(x, COLM); + FixAndPrintObject(y, xb, xb, xf, dim, NO_SUPPRESS, pg, count); + } + else + { OBJECT tmp, pre, post; + Child(tmp, Down(x)); + if( type(tmp) == VCAT ) + { Child(pre, Down(tmp)); + Child(post, LastDown(tmp)); } - break; - - } /* end switch */ + else pre = tmp, post = nilobj; + back(x, dim) = xb; + fwd(x, dim) = xf; + + BackEnd->SaveTranslateDefineSave(x, save_mark(x), + pg - (xmk + fwd(x, ROWM))); + BackEnd->PrintGraphicObject(pre); + BackEnd->RestoreGraphicState(); + FixAndPrintObject(y, xb, xb, xf, dim, NO_SUPPRESS, xb + xf, count); + if( post != nilobj ) BackEnd->PrintGraphicObject(post); + BackEnd->RestoreGraphicState(); + } + } + else + FixAndPrintObject(y, xmk, xb, xf, dim, suppress, pg, count); back(x, dim) = xb; fwd(x, dim) = xf; break; @@ -630,33 +561,23 @@ void FixAndPrintObject(OBJECT x, FULL_LENGTH xmk, FULL_LENGTH xb, case SINCGRAPHIC: CountChild(y, Down(x), count); - switch( BackEnd ) + if( BackEnd->incgraphic_avail ) { - case PLAINTEXT: - - break; - - - case POSTSCRIPT: - case PDF: - - if( dim == COLM ) - { save_mark(x) = xmk; - if( incgraphic_ok(x) ) - { debug2(DGP, DD, " %s (style %s)", - EchoObject(x), EchoStyle(&save_style(x))); - face = finfo[font(save_style(x))].original_font; - if( font_page(face) < font_curr_page ) - { debug3(DFT, DD, "FAPO-IG: x = %s, font = %d, face = %s", - string(x), font(save_style(x)), EchoObject(face)); - FontPageUsed(face); - } + if( dim == COLM ) + { save_mark(x) = xmk; + if( incgraphic_ok(x) ) + { debug2(DGP, DD, " %s (style %s)", + EchoObject(x), EchoStyle(&save_style(x))); + face = finfo[font(save_style(x))].original_face; + if( font_page(face) < font_curr_page ) + { debug3(DFT, DD, "FAPO-IG: x = %s, font = %d, face = %s", + string(x), font(save_style(x)), EchoObject(face)); + FontPageUsed(face); } } - else if( incgraphic_ok(x) ) - PrintGraphicInclude(x, save_mark(x), pg - xmk); - break; - + } + else if( incgraphic_ok(x) ) + BackEnd->PrintGraphicInclude(x, save_mark(x), pg - xmk); } back(x, dim) = xb; fwd(x, dim) = xf; break; @@ -946,7 +867,7 @@ void FixAndPrintObject(OBJECT x, FULL_LENGTH xmk, FULL_LENGTH xb, fwd(x, dim) = actual_size; debug2(DGP, DD, " oversize, actual_size = %s, frame_size = %s", EchoLength(actual_size), EchoLength(frame_size)); - if( BackEnd != PLAINTEXT && InsertScale(x, &c) ) + if( BackEnd->scale_avail && InsertScale(x, &c) ) { /* the problem has just been fixed, by inserting a @Scale above x */ OBJECT prnt; @@ -1191,7 +1112,8 @@ void FixAndPrintObject(OBJECT x, FULL_LENGTH xmk, FULL_LENGTH xb, if( !is_definite(type(y)) ) { if( type(y) == UNDER_REC ) /* generate an underline now */ - PrintUnderline(back(y, ROWM), back(y, COLM), fwd(y, COLM), pg - xmk); + BackEnd->PrintUnderline(back(y, ROWM), back(y, COLM), + fwd(y, COLM), pg - xmk); continue; } FixAndPrintObject(y, xmk, xb, xf, dim, NO_SUPPRESS, pg, count); @@ -1,6 +1,6 @@ /*@z24.c:Print Service:PrintInit()@*******************************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.21) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.22) */ /* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */ /* */ /* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */ @@ -26,71 +26,19 @@ /* */ /* FILE: z24.c */ /* MODULE: Print Service */ -/* EXTERNS: PrintInit(), PrintBeforeFirst(), PrintBetween(), */ -/* PrintWord(), PrintAfterLast(), CoordTranslate(), */ -/* CoordRotate(), CoordScale(), SaveGraphicState(), */ -/* RestoreGraphicState(), PrintGraphicObject(), */ -/* DefineGraphicNames(), PrintGraphicInclude() */ +/* EXTERNS: EightBitToPrintForm */ /* */ -/* This module implements the PostScript back end. */ +/* This module used to be a combined implementation of all the back */ +/* ends. Now these have been split off into separate files, there is */ +/* very little left in this module. */ /* */ /*****************************************************************************/ -#include <math.h> /* for fabs() */ - #include "externs.h" -#define StartUpResource "LoutStartUp" -#define DEFAULT_XHEIGHT 500 -#define NO_FONT 0 /* actually stolen from z37.c */ -#define NO_COLOUR 0 -#define MAX_GS 50 /* maximum depth of graphics states */ - -#define printnum(x, fp) \ -{ char buff[20]; register int i, y; \ - if( x >= 0 ) y = x; \ - else { y = -x; putc(CH_MINUS, fp); } \ - i = 0; \ - do { buff[i++] = numtodigitchar(y % 10); \ - } while( (y = (y / 10)) > 0 ); \ - do { --i; putc(buff[i], fp); \ - } while( i ); \ -} - -static FILE *out_fp; /* output file */ - -/* these variables used by PLAINTEXT back end only */ -static int hsize; /* horizontal size of page in chars */ -static int vsize; /* vertical size of page in chars */ -static FULL_CHAR *page; /* the page (two-dim array of chars) */ - -/* these types and variables used by POSTSCRIPT back end only */ -typedef struct -{ - FONT_NUM gs_font; /* font number of this state */ - COLOUR_NUM gs_colour; /* colour number of this state */ - BOOLEAN gs_cpexists; /* TRUE if a current point exists */ - FULL_LENGTH gs_currenty; /* if cpexists, its y coordinate */ - short gs_xheight2; /* of font exists, half xheight */ -} GRAPHICS_STATE; - -static GRAPHICS_STATE gs_stack[MAX_GS];/* graphics state stack */ -static int gs_stack_top; /* top of graphics state stack */ - -static FONT_NUM currentfont; /* font of most recent atom */ -static COLOUR_NUM currentcolour; /* colour of most recent atom */ -static short currentxheight2;/* half xheight in current font */ -static BOOLEAN cpexists; /* true if a current point exists */ -static FULL_LENGTH currenty; /* if cpexists, its y coordinate */ - -static int wordcount; /* atoms printed since last newline */ -static int pagecount; /* total number of pages printed */ -static BOOLEAN prologue_done; /* TRUE after prologue is printed */ -static OBJECT needs; /* Resource needs of included EPSFs */ -static OBJECT supplied; /* Resources supplied by this file */ /*@::EightBitToPrintForm()@***************************************************/ /* */ -/* static char *EightBitToPrintForm[] */ +/* char *EightBitToPrintForm[] */ /* */ /* Given 8-bit character i, returns a string of characters that will be */ /* interpreted by PostScript as character i when read within a string. */ @@ -100,7 +48,7 @@ static OBJECT supplied; /* Resources supplied by this file */ /* */ /*****************************************************************************/ -static char *EightBitToPrintForm[] = { +char *EightBitToPrintForm[] = { #if CHAR_OUT==0 "", "\\001", "\\002", "\\003", "\\004", "\\005", "\\006", "\\007", "\\010", "\\011", "\\012", "\\013", "\\014", "\\015", "\\016", "\\017", @@ -173,1506 +121,3 @@ If you are trying to compile this you have the wrong CHAR_OUT value! #endif #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; -} - - -/*****************************************************************************/ -/* */ -/* PrintInit(file_ptr) */ -/* */ -/* Initialise this module. Output is to go to FILE file_ptr. */ -/* */ -/*****************************************************************************/ - -void PrintInit(FILE *file_ptr) -{ debug0(DGP, DD, "PrintInit()"); - out_fp = file_ptr; prologue_done = FALSE; - gs_stack_top = -1; - currentfont = NO_FONT; - currentcolour = NO_COLOUR; - cpexists = FALSE; - wordcount = pagecount = 0; - New(needs, ACAT); - New(supplied, ACAT); - debug0(DGP, DD, "PrintInit returning."); -} - - -/*@::PrintBeforeFirst@********************************************************/ -/* */ -/* PrintBeforeFirst(h, v, label) */ -/* */ -/* This procedure is called just before starting to print the first */ -/* component of the output. Its size is h, v, and label is the page */ -/* label to attach to the %%Page comment. */ -/* */ -/* If BackEnd is PLAINTEXT, this procedure obtains a two-dimensional array */ -/* of characters large enough to hold the first component, and clears it. */ -/* */ -/* If BackEnd is POSTSCRIPT, this procedure generates the PostScript */ -/* prologue, augmented with any @PrependGraphic or @SysPrependGraphic */ -/* files specified by the user. The following PostScript operators are */ -/* defined: */ -/* */ -/* scale_factor fnt scale and set font */ -/* x_coordinate x move to x_coordinate, current y coordinate */ -/* string s show string */ -/* number in result is number inches */ -/* number cm result is number centimetres */ -/* number pt result is number points */ -/* number sp result is number spaces */ -/* number vs result is number vspaces */ -/* number ft result is number font-sizes */ -/* */ -/* as well as LoutGraphic, for use with the @Graphic operator: */ -/* */ -/* xsize ysize xmark ymark fr vs sp LoutGraphic - */ -/* */ -/* Define xmark, ymark, xsize, ysize to be the positions of */ -/* these features of x, and define symbols ft, vs and sp */ -/* to be the current font size, line separation, and space width. */ -/* */ -/*****************************************************************************/ - -void PrintBeforeFirst(FULL_LENGTH h, FULL_LENGTH v, FULL_CHAR *label) -{ FILE_NUM fnum; int i, j; FULL_CHAR *p; - debug2(DGP, DD, "PrintBeforeFirst(%d, %d)", h, v); - - switch( BackEnd ) - { - case PLAINTEXT: - - /* get a new page[] and clear it */ - hsize = ceiling(h, PlainCharWidth); - vsize = ceiling(v, PlainCharHeight); - debug2(DGP, DD, " PlainCharWidth: %d; PlainCharHeight: %d", - PlainCharWidth, PlainCharHeight); - ifdebug(DMA, D, DebugRegisterUsage(MEM_PAGES, 1, - hsize * vsize * sizeof(FULL_CHAR))); - debug2(DGP, DD, " PrintBeforeFirst allocating %d by %d", hsize, vsize); - page = (FULL_CHAR *) malloc(hsize * vsize * sizeof(FULL_CHAR)); - for( i = 0; i < vsize; i++ ) - for( j = 0; j < hsize; j++ ) - page[i*hsize + j] = ' '; - break; - - - case POSTSCRIPT: - - /* print header comments for PostScript DSC 3.0 output */ - if( Encapsulated ) - fprintf(out_fp, "%%!PS-Adobe-3.0 EPSF-3.0\n"); - else - fprintf(out_fp, "%%!PS-Adobe-3.0\n"); - fprintf(out_fp, "%%%%Creator: %s\n", LOUT_VERSION); - fprintf(out_fp, "%%%%CreationDate: %s", TimeString()); - fprintf(out_fp, "%%%%DocumentData: Binary\n"); - fprintf(out_fp, "%%%%DocumentNeededResources: (atend)\n"); - 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"); - - /* print procedure definitions part of header */ - fprintf(out_fp, "%%%%BeginProlog\n"); - fprintf(out_fp, "%%%%BeginResource: procset %s\n", StartUpResource); - fprintf(out_fp, "/save_cp { currentpoint /cp_y exch def /cp_x exch def } def\n"); - fprintf(out_fp, "/restore_cp { cp_x cp_y moveto } def\n"); - fprintf(out_fp, "/outline { gsave 1 1 1 setrgbcolor dup show save_cp\n"); - fprintf(out_fp, " grestore true charpath stroke restore_cp } bind def\n"); - fprintf(out_fp, "/m { 3 1 roll moveto show } bind def\n"); - fprintf(out_fp, "/mo { 3 1 roll moveto outline } 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 outline } bind def\n"); - fprintf(out_fp, "/k { exch neg 0 rmoveto show } bind def\n"); - fprintf(out_fp, "/ko { exch neg 0 rmoveto outline } bind def\n"); - fprintf(out_fp, "/r { exch 0 rmoveto show } bind def\n"); - fprintf(out_fp, "/ro { exch 0 rmoveto outline } bind def\n"); - fprintf(out_fp, "/c { gsave 3 1 roll rmoveto show grestore } bind def\n"); - fprintf(out_fp, "/co { gsave 3 1 roll rmoveto outline grestore } 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); - fprintf(out_fp, "/cm { %d mul } def\n", CM); - fprintf(out_fp, "/pt { %d mul } def\n", PT); - fprintf(out_fp, "/em { %d mul } def\n", EM); - fprintf(out_fp, "/sp { louts mul } def\n"); - fprintf(out_fp, "/vs { loutv mul } def\n"); - fprintf(out_fp, "/ft { loutf mul } def\n"); - fprintf(out_fp, "/dg { } def\n\n"); - - fputs("/LoutGraphic {\n", out_fp); - fputs(" /louts exch def\n", out_fp); - fputs(" /loutv exch def\n", out_fp); - fputs(" /loutf exch def\n", out_fp); - fputs(" /ymark exch def\n", out_fp); - fputs(" /xmark exch def\n", out_fp); - fputs(" /ysize exch def\n", out_fp); - fputs(" /xsize exch def\n} def\n\n", out_fp); - - fputs("/LoutGr2 { gsave translate LoutGraphic gsave } def\n\n", out_fp); - - /* print definition used by Lout output to recode fonts */ - /* adapted from PostScript Language Reference Manual (2nd Ed), p. 275 */ - /* usage: /<fullname> <encodingvector> /<originalname> LoutRecode - */ - - fputs("/LoutFont\n", out_fp); - fputs("{ findfont exch scalefont setfont\n", out_fp); - fputs("} bind def\n\n", out_fp); - - fputs("/LoutRecode {\n", out_fp); - fputs(" { findfont dup length dict begin\n", out_fp); - fputs(" {1 index /FID ne {def} {pop pop} ifelse} forall\n", out_fp); - fputs(" /Encoding exch def\n", out_fp); - fputs(" currentdict end definefont pop\n", out_fp); - fputs(" }\n", out_fp); - fputs(" stopped pop\n", out_fp); - fputs("} bind def\n\n", out_fp); - - /* print definitions used by Lout output when including EPSF files */ - /* copied from PostScript Language Reference Manual (2nd Ed.), p. 726 */ - - fputs("/BeginEPSF {\n", out_fp); - fputs(" /LoutEPSFState save def\n", out_fp); - fputs(" /dict_count countdictstack def\n", out_fp); - fputs(" /op_count count 1 sub def\n", out_fp); - fputs(" userdict begin\n", out_fp); - fputs(" /showpage { } def\n", out_fp); - fputs(" 0 setgray 0 setlinecap\n", out_fp); - fputs(" 1 setlinewidth 0 setlinejoin\n", out_fp); - fputs(" 10 setmiterlimit [] 0 setdash newpath\n", out_fp); - fputs(" /languagelevel where\n", out_fp); - fputs(" { pop languagelevel\n", out_fp); - fputs(" 1 ne\n", out_fp); - fputs(" { false setstrokeadjust false setoverprint\n", out_fp); - fputs(" } if\n", out_fp); - fputs(" } if\n", out_fp); - fputs("} bind def\n\n", out_fp); - - fputs("/EndEPSF {\n", out_fp); - fputs(" count op_count sub { pop } repeat\n", out_fp); - fputs(" countdictstack dict_count sub { end } repeat\n", out_fp); - fputs(" LoutEPSFState restore\n", out_fp); - fputs("} bind def\n", out_fp); - - fputs("%%EndResource\n\n", out_fp); - - /* print encoding vectors as resources */ - /* MapPrintEncodings(out_fp); obsolete now */ - - /* print prepend files (assumed to be organized as DSC 3.0 Resources) */ - for( fnum=FirstFile(PREPEND_FILE); fnum!=NO_FILE; fnum=NextFile(fnum) ) - { FULL_CHAR buff[MAX_BUFF]; FILE *fp; - if( (fp = OpenFile(fnum, FALSE, FALSE)) == null ) - Error(24, 1, "cannot open %s file %s", - WARN, PosOfFile(fnum), KW_PREPEND, FileName(fnum)); - else if( StringFGets(buff, MAX_BUFF, fp) == NULL ) - Error(24, 2, "%s file %s is empty", - WARN, PosOfFile(fnum), KW_PREPEND, FileName(fnum)); - else - { - if( StringBeginsWith(buff, AsciiToFull("%%BeginResource:")) ) - { OBJECT tmp; - tmp = MakeWord(WORD, &buff[strlen("%%BeginResource:")], no_fpos); - Link(supplied, tmp); - } - else - Error(24, 3, "%s file %s lacks PostScript BeginResource comment", - WARN, PosOfFile(fnum), KW_PREPEND, FileName(fnum)); - StringFPuts(buff, out_fp); - fprintf(out_fp, "%% %s file %s\n", KW_PREPEND, FileName(fnum)); - while( StringFGets(buff, MAX_BUFF, fp) != NULL ) - StringFPuts(buff, out_fp); - fprintf(out_fp, "\n"); - fclose(fp); - } - } - - fputs("%%EndProlog\n\n", out_fp); - fputs("%%BeginSetup\n", out_fp); - FontPrintPageSetup(out_fp); - fputs("%%EndSetup\n\n", out_fp); - fprintf(out_fp, "%%%%Page: "); - for( p = label; *p != '\0'; p++ ) - fputs(EightBitToPrintForm[*p], out_fp); - fprintf(out_fp, " %d\n", ++pagecount); - fprintf(out_fp, "%%%%BeginPageSetup\n"); - FontPrintPageResources(out_fp); - FontAdvanceCurrentPage(); - fprintf(out_fp, "/pgsave save def\n"); - fprintf(out_fp, "%.4f dup scale %d setlinewidth\n", 1.0 / PT, PT/2); - fprintf(out_fp, "%%%%EndPageSetup\n\n"); - break; - - case PDF: - - PDFFile_Init(out_fp, h/PT, v/PT, IN, CM, PT, EM); - - /* print encoding vectors as resources */ - /* MapPrintEncodings(out_fp); obsolete now */ - - FontPrintPageSetup(out_fp); - - PDFPage_Init(out_fp, 1.0 / PT, PT/2); - - FontPrintPageResources(out_fp); /* write out font objects */ - FontAdvanceCurrentPage(); - break; - - } /* end switch */ - prologue_done = TRUE; -} /* end PrintBeforeFirst */ - - -/*@::PrintBetween()@**********************************************************/ -/* */ -/* PrintBetween(h, v, label) */ -/* */ -/* Start a new output component, of size h by v; label is the page label */ -/* to attach to the %%Page comment. */ -/* */ -/*****************************************************************************/ - -void PrintBetween(FULL_LENGTH h, FULL_LENGTH v, FULL_CHAR *label) -{ int new_hsize, new_vsize, i, j, jmax; FULL_CHAR *p; - debug2(DGP, DD, "PrintBetween(%d, %d)", h, v); - - switch( BackEnd ) - { - case PLAINTEXT: - - /* print the page that has just ended */ - ifdebug(DGP, D, - putc('+', out_fp); - for( j = 0; j < hsize; j++ ) putc('-', out_fp); - putc('+', out_fp); - putc('\n', out_fp); - ); - for( i = vsize - 1; i >= 0; i-- ) - { ifdebug(DGP, D, putc('|', out_fp)); - for( jmax = hsize-1; jmax >= 0 && page[i*hsize+jmax] == ' '; jmax--); - ifdebug(DGP, D, jmax = hsize - 1); - for( j = 0; j <= jmax; j++ ) - putc(page[i*hsize + j], out_fp); - ifdebug(DGP, D, putc('|', out_fp)); - putc('\n', out_fp); - } - ifdebug(DGP, D, - putc('+', out_fp); - for( j = 0; j < hsize; j++ ) putc('-', out_fp); - putc('+', out_fp); - putc('\n', out_fp); - ); - - /* separate the page from the next one with a form-feed if required */ - if( PlainFormFeed ) putc('\f', out_fp); - - /* if page size has changed, get a new page[] array */ - new_hsize = ceiling(h, PlainCharWidth); - new_vsize = ceiling(v, PlainCharHeight); - if( new_hsize != hsize || new_vsize != vsize ) - { - ifdebug(DMA, D, DebugRegisterUsage(MEM_PAGES, -1, - -hsize * vsize * sizeof(FULL_CHAR))); - free(page); - hsize = new_hsize; - vsize = new_vsize; - debug2(DGP, DD, " PrintBetween allocating %d by %d", hsize, vsize); - ifdebug(DMA, D, DebugRegisterUsage(MEM_PAGES, 1, - hsize * vsize * sizeof(FULL_CHAR))); - page = (FULL_CHAR *) malloc(hsize * vsize * sizeof(FULL_CHAR)); - } - - /* clear page[] for the new page just beginning */ - for( i = 0; i < vsize; i++ ) - for( j = 0; j < hsize; j++ ) - page[i*hsize + j] = ' '; - break; - - - case POSTSCRIPT: - - fprintf(out_fp, "\npgsave restore\nshowpage\n"); - gs_stack_top = 0; - cpexists = FALSE; - currentfont = NO_FONT; - currentcolour = NO_COLOUR; - if( Encapsulated ) - { PrintAfterLast(); - Error(24, 4, "truncating -EPS document at end of first page", - FATAL, no_fpos); - } - fprintf(out_fp, "\n%%%%Page: "); - for( p = label; *p != '\0'; p++ ) - fputs(EightBitToPrintForm[*p], out_fp); - fprintf(out_fp, " %d\n", ++pagecount); - fprintf(out_fp, "%%%%BeginPageSetup\n"); - FontPrintPageResources(out_fp); - fprintf(out_fp, "/pgsave save def\n"); - FontPrintPageSetup(out_fp); - FontAdvanceCurrentPage(); - fprintf(out_fp, "%.4f dup scale %d setlinewidth\n", 1.0 / PT, PT/2); - fprintf(out_fp, "%%%%EndPageSetup\n"); - wordcount = 0; - break; - - case PDF: - - /* write out page objects */ - PDFPage_Cleanup(out_fp); - PDFPage_Init(out_fp, 1.0 / PT, PT/2); - - /* write out font objects */ - FontPrintPageResources(out_fp); - FontPrintPageSetup(out_fp); - FontAdvanceCurrentPage(); - break; - - } /* end switch */ -} /* end PrintBetween */ - - -/*****************************************************************************/ -/* */ -/* KernLength(fnum, ch1, ch2, res) */ -/* */ -/* Set res to the kern length between ch1 and ch2 in font fnum, or 0 if */ -/* none. */ -/* */ -/*****************************************************************************/ - -#define KernLength(fnum, mp, ch1, ch2, res) \ -{ int ua_ch1 = mp[ch1]; \ - int ua_ch2 = mp[ch2]; \ - int i = finfo[fnum].kern_table[ua_ch1], j; \ - if( i == 0 ) res = 0; \ - else \ - { FULL_CHAR *kc = finfo[fnum].kern_chars; \ - for( j = i; kc[j] > ua_ch2; j++ ); \ - res = (kc[j] == ua_ch2) ? \ - finfo[fnum].kern_sizes[finfo[fnum].kern_value[j]] : 0; \ - } \ -} /* end KernLength */ - - -/*****************************************************************************/ -/* */ -/* static void PrintComposite(COMPOSITE *cp, BOOLEAN outline, FILE *fp) */ -/* */ -/* Print composite character cp, assuming that the current point is */ -/* set to the correct origin. If outline is true, we want to print the */ -/* composite character in outline. */ -/* */ -/*****************************************************************************/ - -static void PrintComposite(COMPOSITE *cp, BOOLEAN outline, FILE *fp) -{ debug1(DGP, D, "PrintComposite(cp, %s, fp)", bool(outline)); - while( cp->char_code != '\0' ) - { - debug4(DGP, D, " cp = %d printing code %d (%d, %d)", (int) cp, - cp->char_code, cp->x_offset, cp->y_offset); - fprintf(fp, "%d %d (%c)%s ", cp->x_offset, cp->y_offset, - cp->char_code, outline ? "co" : "c"); - cp++; - } -} /* end PrintComposite */ - - -/*@::PrintWord()@*************************************************************/ -/* */ -/* PrintWord(x, hpos, vpos) */ -/* */ -/* Print non-empty word x; its marks cross at the point (hpos, vpos). */ -/* */ -/*****************************************************************************/ - -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; - unsigned short *composite; COMPOSITE *cmp; - - 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 ) - { - case PLAINTEXT: - - h = ((float) hpos / PlainCharWidth) + 0.5; - v = ((float) vpos / PlainCharHeight); - debug3(DGP, DD, "PrintWord(%s at h = %d, v = %d)", string(x), h, v); - if( h >= 0 && h + StringLength(string(x)) < hsize && v >= 0 && v < vsize ) - { - assert( h >= 0, "PrintWord: h < 0!" ); - assert( h < hsize, "PrintWord: h >= hsize!" ); - assert( v >= 0, "PrintWord: v < 0!" ); - assert( v < vsize, "PrintWord: v >= vsize!" ); - p = &page[v*hsize + h]; - for( i = 0; string(x)[i] != '\0'; i++ ) - *p++ = string(x)[i]; - } - else - { - Error(24, 11, "word %s deleted (internal error, off page at %d,%d)", - WARN, &fpos(x), string(x), h, v); - } - break; - - - case POSTSCRIPT: - - /* if font is different to previous word then print change */ - if( word_font(x) != currentfont ) - { currentfont = word_font(x); - currentxheight2 = FontHalfXHeight(currentfont); - fprintf(out_fp, "%hd %s", FontSize(currentfont, x), - FontName(currentfont)); - if( ++wordcount >= 5 ) - { putc('\n', out_fp); - wordcount = 0; - } - else putc(' ', out_fp); - } - - /* if colour is different to previous word then print change */ - if( word_colour(x) != currentcolour ) - { currentcolour = word_colour(x); - if( currentcolour > 0 ) - { fprintf(out_fp, "%s", ColourCommand(currentcolour)); - if( ++wordcount >= 5 ) - { putc('\n', out_fp); - wordcount = 0; - } - else putc(' ', out_fp); - } - } - - /* convert ligature sequences into ligature characters */ - lig = finfo[word_font(x)].lig_table; - p = q = string(x); - do - { - /* check for missing glyph (lig[] == 1) or ligatures (lig[] > 1) */ - if( lig[*q++ = *p++] ) - { - if( lig[*(q-1)] == 1 ) continue; - else - { a = &lig[ lig[*(p-1)] + MAX_CHARS ]; - while( *a++ == *(p-1) ) - { b = p; - while( *a == *b && *(a+1) != '\0' && *b != '\0' ) a++, b++; - if( *(a+1) == '\0' ) - { *(q-1) = *a; - p = b; - break; - } - else - { while( *++a ); - a++; - } - } - } - } - } while( *p ); - *q = '\0'; - - /* move to coordinate of x */ - cmp = finfo[word_font(x)].cmp_table; - composite = finfo[word_font(x)].composite; - debug1(DGP, DDD, " currentxheight2 = %d", currentxheight2); - vpos = vpos - currentxheight2; - if( cpexists && currenty == vpos ) - { printnum(hpos, out_fp); - command = word_outline(x) ? "so" : "s"; - } - else - { currenty = vpos; - printnum(hpos, out_fp); - putc(' ', out_fp); - printnum(currenty, out_fp); - command = word_outline(x) ? "mo" : "m"; - cpexists = TRUE; - } - - /* show string(x) */ - putc('(', out_fp); - p = string(x); - if( composite[*p] ) - { - fprintf(out_fp, ")%s ", command); - debug3(DGP, D, - " calling PrintComposite(&cmp[composite[%d] = %d]); cmp_top = %d", - (int) *p, composite[*p], finfo[word_font(x)].cmp_top); - PrintComposite(&cmp[composite[*p]], word_outline(x), out_fp); - printnum(finfo[word_font(x)].size_table[*p].right, out_fp); - putc('(', out_fp); - command = word_outline(x) ? "ro" : "r"; - } - else fputs(EightBitToPrintForm[*p], out_fp); - m = font_mapping(finfo[word_font(x)].font_table); - unacc = MapTable[m]->map[MAP_UNACCENTED]; - /* acc = MapTable[m]->map[MAP_ACCENT]; */ - for( p++; *p; p++ ) - { KernLength(word_font(x), unacc, *(p-1), *p, ksize); - if( ksize != 0 ) - { fprintf(out_fp, ")%s %d(", command, -ksize); - ++wordcount; - command = word_outline(x) ? "ko" : "k"; - } - if( composite[*p] ) - { fprintf(out_fp, ")%s ", command); - debug3(DGP, D, - " calling PrintComposite(&cmp[composite[%d] = %d]); cmp_top = %d", - (int) *p, composite[*p], finfo[word_font(x)].cmp_top); - PrintComposite(&cmp[composite[*p]], word_outline(x), out_fp); - printnum(finfo[word_font(x)].size_table[*p].right, out_fp); - putc('(', out_fp); - command = word_outline(x) ? "ro" : "r"; - } - else fputs(EightBitToPrintForm[*p], out_fp); - } - if( ++wordcount >= 5 ) - { fprintf(out_fp, ")%s\n", command); - wordcount = 0; - } - else fprintf(out_fp, ")%s ", command); - - - /* move to coordinate of x */ - /* *** old version - debug1(DGP, DDD, " currentxheight2 = %d", currentxheight2); - vpos = vpos - currentxheight2; - if( cpexists && currenty == vpos ) - { printnum(hpos, out_fp); - command = word_outline(x) ? "so" : "s"; - } - else - { currenty = vpos; - printnum(hpos, out_fp); - fputs(" ", out_fp); - printnum(currenty, out_fp); - command = word_outline(x) ? "mo" : "m"; - cpexists = TRUE; - } - *** */ - - /* show string(x) */ - /* *** old version - fputs("(", out_fp); - p = string(x); - fputs(EightBitToPrintForm[*p], out_fp); - m = font_mapping(finfo[word_font(x)].font_table); - unacc = MapTable[m]->map[MAP_UNACCENTED]; - for( p++; *p; p++ ) - { KernLength(word_font(x), unacc, *(p-1), *p, ksize); - if( ksize != 0 ) - { fprintf(out_fp, ")%s %d(", command, -ksize); - ++wordcount; - command = word_outline(x) ? "ko" : "k"; - } - fputs(EightBitToPrintForm[*p], out_fp); - } - if( ++wordcount >= 5 ) - { fprintf(out_fp, ")%s\n", command); - wordcount = 0; - } - else fprintf(out_fp, ")%s ", command); - *** */ - - /* ordinary printing moves current point; outlining destroys it */ - /* *** changed the outline commands now so that they move the current - point the same way ordinary printing does - if( word_outline(x) ) - cpexists = FALSE; - *** */ - break; - - - - case PDF: - { - - static int last_hpos; /* does not need to be initialised */ - static int next_hpos = -1; -#if 0 - struct metrics *fnt; -#endif - /* if font is different to previous word then print change */ - if( word_font(x) != currentfont ) - { currentfont = word_font(x); - currentxheight2 = FontHalfXHeight(currentfont); - PDFFont_Set(out_fp, FontSize(currentfont, x), FontName(currentfont)); - } - - /* if colour is different to previous word then print change */ - if( word_colour(x) != currentcolour ) - { - currentcolour = word_colour(x); - if( currentcolour > 0 ) - { - char str[256]; - - sprintf(str, "%s ", ColourCommand(currentcolour)); - PDFPage_Write(out_fp, str); - } - } - - /* move to coordinate of x */ - debug1(DGP, DDD, " currentxheight2 = %d", currentxheight2); - vpos = vpos - currentxheight2; - if( cpexists && (currenty == vpos) && PDFHasValidTextMatrix() ) - { /* printnum(hpos, out_fp); */ - 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. - */ -#if 0 - fnt = finfo[currentfont].size_table; - - if ( (next_hpos + fnt[' '].right /* width of space char */ ) == hpos ) - command = " "; -#endif - } - else - { currenty = vpos; - /* printnum(hpos, out_fp); - fputs(" ", out_fp); - printnum(currenty, out_fp); */ - command = "m"; - cpexists = TRUE; - } - - /* convert ligature sequences into ligature characters */ - lig = finfo[word_font(x)].lig_table; - p = q = string(x); - do - { - /* check for missing glyph (lig[] == 1) or ligatures (lig[] > 1) */ - if( lig[*q++ = *p++] ) - { - if( lig[*(q-1)] == 1 ) continue; - else - { a = &lig[ lig[*(p-1)] + MAX_CHARS ]; - while( *a++ == *(p-1) ) - { b = p; - while( *a == *b && *(a+1) != '\0' && *b != '\0' ) a++, b++; - if( *(a+1) == '\0' ) - { *(q-1) = *a; - p = b; - break; - } - else - { while( *++a ); - a++; - } - } - } - } - } while( *p ); - *q = '\0'; - - /* show string(x) */ - /* FontWordSize(x); - this should not be necessary */ - - switch (command[0]) - { - case 'm': - - PDFText_OpenXY(out_fp, hpos, vpos); - last_hpos = hpos; - next_hpos = hpos + fwd(x, COLM); /* fwd(x, COLM) = width of wd */ - break; - - case 's': -#if 0 - PDFText_Open(out_fp); - PDFText_Kern(out_fp, hpos - next_hpos); -#else - PDFText_OpenX(out_fp, hpos - last_hpos); -#endif - last_hpos = hpos; - next_hpos = hpos + fwd(x, COLM); /* fwd(x, COLM) = width of wd */ - break; -#if 0 - case ' ': - - PDFText_Open(out_fp); -#if 1 - /* try kerning to get correct position */ - PDFText_Kern(out_fp, fnt[' '].right); -#else - PDFPage_Write(out_fp, EightBitToPrintForm[' ']); -#endif - next_hpos += fwd(x, COLM) + fnt[' '].right; /* width of space ch */ - break; -#endif - } - - p = string(x); - PDFPage_Write(out_fp, EightBitToPrintForm[*p]); - - m = font_mapping(finfo[word_font(x)].font_table); - unacc = MapTable[m]->map[MAP_UNACCENTED]; - /* acc = MapTable[m]->map[MAP_ACCENT]; */ - for( p++; *p; p++ ) - { - /* 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 ) - { - PDFText_Kern(out_fp, ksize); - } - PDFPage_Write(out_fp, EightBitToPrintForm[*p]); - } - PDFText_Close(out_fp); - break; - } - - - } /* end switch */ - debug0(DGP, DDD, "PrintWord returning"); -} /* end PrintWord */ - - -/*****************************************************************************/ -/* */ -/* PrintPlainGraphicObject(x, xmk, ymk, z) */ -/* */ -/* Print plain graphic object x at xmk, ymk with the size of z. */ -/* */ -/*****************************************************************************/ - -void PrintPlainGraphicObject(OBJECT x, FULL_LENGTH xmk,FULL_LENGTH ymk,OBJECT z) -{ int i, len, starth, startv, stoph, stopv, h, v; - debug2(DGP, D, "PrintPlainGraphicObject(x, xmk %s, ymk %s)", - EchoLength(xmk), EchoLength(ymk)); - - assert( BackEnd == PLAINTEXT, "PrintPlainGraphicObject: back end!" ); - if( type(x) != WORD && type(x) != QWORD ) - { - Error(24, 12, "left parameter of %s must be a simple word", - WARN, &fpos(x), KW_PLAINGRAPHIC); - return; - } - len = StringLength(string(x)); - if( StringLength(string(x)) == 0 ) - { - Error(24, 13, "left parameter of %s must be a non-empty word", - WARN, &fpos(x), KW_PLAINGRAPHIC); - return; - } - starth = (((float) xmk ) / PlainCharWidth) + 0.5; - startv = (((float) ymk ) / PlainCharHeight); - stoph = (((float) xmk + size(z, COLM)) / PlainCharWidth) + 0.5; - stopv = (((float) ymk - size(z, ROWM)) / PlainCharHeight); /* NB - not + */ - SetLengthDim(COLM); - debug5(DGP, D, " xmk %s bk %s fwd %s -> %d,%d", - EchoLength(xmk), EchoLength(back(z, COLM)), EchoLength(fwd(z, COLM)), - starth, stoph); - SetLengthDim(ROWM); - debug5(DGP, D, " ymk %s bk %s fwd %s -> %d,%d", - EchoLength(ymk), EchoLength(back(z, ROWM)), EchoLength(fwd(z, ROWM)), - startv, stopv); - if( starth >= 0 && stoph < hsize && startv >= 0 && stopv < vsize ) - { i = 0; - for( v = startv-1; v >= stopv; v-- ) - { - for( h = starth; h < stoph; h++ ) - { - if( i == len ) i = 0; - page[v*hsize + h] = string(x)[i++]; - } - } - } - else - { - Error(24, 14, "fill %s deleted (internal error, off page at %d,%d)", - WARN, &fpos(x), string(x), h, v); - } -} /* end PrintPlainGraphicObject */ - - -/*****************************************************************************/ -/* */ -/* PrintUnderline(fnum, xstart, xstop, ymk) */ -/* */ -/* Draw an underline suitable for font fnum, from xstart to xstop at the */ -/* appropriate distance below mark ymk. */ -/* */ -/*****************************************************************************/ - -void PrintUnderline(FONT_NUM fnum, FULL_LENGTH xstart, FULL_LENGTH xstop, - FULL_LENGTH ymk) -{ - - debug4(DGP, DD, "PrintUnderline(fnum %d, xstart %s, xstop %s, ymk %s )", - fnum, EchoLength(xstart), EchoLength(xstop), EchoLength(ymk)); - - switch( BackEnd ) - { - case PLAINTEXT: - - /* do nothing */ - break; - - - case POSTSCRIPT: - - fprintf(out_fp, "%d %d %d %d ul\n", xstart, xstop, - ymk - finfo[fnum].underline_pos, finfo[fnum].underline_thick); - break; - - case PDF: - PDFPage_PrintUnderline(out_fp, xstart, xstop, - ymk - finfo[fnum].underline_pos, finfo[fnum].underline_thick); - break; - } - debug0(DGP, DD, "PrintUnderline returning."); -} /* end PrintUnderline */ - - -/*@::PrintAfterLast(), CoordTranslate()@**************************************/ -/* */ -/* PrintAfterLast() */ -/* */ -/* Clean up this module and close output stream. */ -/* */ -/*****************************************************************************/ - -void PrintAfterLast(void) -{ OBJECT x, link; BOOLEAN first_need; int i, j, jmax; - if( prologue_done ) - { - switch( BackEnd ) - { - case PLAINTEXT: - - /* print the page that has just ended (exists since prologue_done) */ - ifdebug(DGP, D, - putc('+', out_fp); - for( j = 0; j < hsize; j++ ) putc('-', out_fp); - putc('+', out_fp); - putc('\n', out_fp); - ); - for( i = vsize - 1; i >= 0; i-- ) - { ifdebug(DGP, D, putc('|', out_fp)); - for( jmax = hsize-1; jmax >= 0 && page[i*hsize+jmax] == ' '; jmax--); - ifdebug(DGP, D, jmax = hsize - 1); - for( j = 0; j <= jmax; j++ ) - putc(page[i*hsize + j], out_fp); - ifdebug(DGP, D, putc('|', out_fp)); - putc('\n', out_fp); - } - ifdebug(DGP, D, - putc('+', out_fp); - for( j = 0; j < hsize; j++ ) putc('-', out_fp); - putc('+', out_fp); - putc('\n', out_fp); - ); - break; - - - case POSTSCRIPT: - - fprintf(out_fp, "\npgsave restore\nshowpage\n"); - fprintf(out_fp, "\n%%%%Trailer\n"); - - /* print resource requirements (DSC 3.0 version) - fonts */ - first_need = FontNeeded(out_fp); - - /* print resource requirements (DSC 3.0 version) - included EPSFs */ - for( link = Down(needs); link != needs; link = NextDown(link) ) - { Child(x, link); - assert(is_word(type(x)), "PrintAfterLast: needs!" ); - fprintf(out_fp, "%s %s", - first_need ? "%%DocumentNeededResources:" : "%%+", string(x)); - first_need = FALSE; - } - - /* print resources supplied */ - fprintf(out_fp, - "%%%%DocumentSuppliedResources: procset %s\n", StartUpResource); - for( link = Down(supplied); link != supplied; link = NextDown(link) ) - { Child(x, link); - fprintf(out_fp, "%%%%+ %s", string(x)); - } - MapPrintResources(out_fp); - - fprintf(out_fp, "%%%%Pages: %d\n", pagecount); - fprintf(out_fp, "%%%%EOF\n"); - break; - - case PDF: - - PDFPage_Cleanup(out_fp); /* write out page objects */ - /* MapPrintResources(out_fp); not needed */ - PDFFile_Cleanup(out_fp); - break; - - } /* end switch */ - } /* end if prologue_done */ -} /* end PrintAfterLast */ - - -/*****************************************************************************/ -/* */ -/* CoordTranslate(xdist, ydist) */ -/* */ -/* Translate coordinate system by the given x and y distances. */ -/* */ -/*****************************************************************************/ - -void CoordTranslate(FULL_LENGTH xdist, FULL_LENGTH ydist) -{ debug2(DRS,D,"CoordTranslate(%s, %s)", - EchoLength(xdist), EchoLength(ydist)); - assert( BackEnd != PLAINTEXT, "CoordTranslate: BackEnd!" ); - if (BackEnd == POSTSCRIPT) - fprintf(out_fp, "%d %d translate\n", xdist, ydist); - else if (BackEnd == PDF) - { - if ((xdist != 0) || (ydist != 0)) - { -#if 1 - PDFPage_Translate(out_fp, xdist, ydist); -#else - char temp_str[64]; - sprintf(temp_str, "1 0 0 1 %d %d cm\n", xdist, ydist); - PDFPage_Write(out_fp, temp_str); -#endif - } - } - cpexists = FALSE; - /*** - currentfont = NO_FONT; - currentcolour = NO_COLOUR; - ***/ - debug0(DRS, D, "CoordTranslate returning."); -} /* end CoordTranslate */ - - -/*@::CoordRotate(), CoordScale(), SaveGraphicsState(), etc.@******************/ -/* */ -/* CoordRotate(amount) */ -/* */ -/* Rotate coordinate system by given amount (in internal DG units) */ -/* */ -/*****************************************************************************/ - -void CoordRotate(FULL_LENGTH amount) -{ debug1(DRS, D, "CoordRotate(%.1f degrees)", (float) amount / DG); - assert( BackEnd != PLAINTEXT, "CoordRotate: BackEnd!" ); - if (BackEnd == POSTSCRIPT) - fprintf(out_fp, "%.4f rotate\n", (float) amount / DG); - else if (BackEnd == PDF) - { - int theAmount = ((amount / DG) % 360); - if ( theAmount != 0 ) - { - #define PI 3.1415926535897931160 - - PDFPage_Rotate(out_fp, (double) theAmount * (double) PI / (double) 180.0); - } - } - cpexists = FALSE; - /*** - currentfont = NO_FONT; - currentcolour = NO_COLOUR; - ***/ - debug0(DRS, D, "CoordRotate returning."); -} /* end CoordRotate */ - - -/*****************************************************************************/ -/* */ -/* CoordScale(ratio, dim) */ -/* */ -/* Scale coordinate system by ratio in the given dimension. */ -/* */ -/*****************************************************************************/ - -void CoordScale(float hfactor, float vfactor) -{ -#if DEBUG_ON - char buff[20]; -#endif - assert( BackEnd != PLAINTEXT, "CoordScale: BackEnd!" ); - ifdebug(DRS, D, sprintf(buff, "%.3f, %.3f", hfactor, vfactor)); - debug1(DRS, D, "CoordScale(%s)", buff); - if (BackEnd == POSTSCRIPT) - fprintf(out_fp, "%.4f %.4f scale\n", hfactor, vfactor); - else if (BackEnd == PDF) - { - if ( (fabs(hfactor - 1.0) > 0.01) || (fabs(vfactor - 1.0) > 0.01) ) - { -#if 1 - PDFPage_Scale(out_fp, hfactor, vfactor); -#else - char temp_str[64]; - sprintf(temp_str, "%.2f 0 0 %.2f 0 0 cm\n", hfactor, vfactor); - PDFPage_Write(out_fp, temp_str); -#endif - } - } - cpexists = FALSE; - /*** - currentfont = NO_FONT; - currentcolour = NO_COLOUR; - ***/ - debug0(DRS, D, "CoordScale returning."); -} /* end CoordScale */ - - -/*****************************************************************************/ -/* */ -/* SaveGraphicState(x) */ -/* */ -/* Save current coord system on stack for later restoration. */ -/* Object x is just for error reporting, not really used at all. */ -/* */ -/*****************************************************************************/ - -void SaveGraphicState(OBJECT x) -{ debug0(DRS, D, "SaveGraphicState()"); - assert( BackEnd != PLAINTEXT, "SaveGraphicState: BackEnd!" ); - if (BackEnd == POSTSCRIPT) - fprintf(out_fp, "gsave\n"); - else if (BackEnd == PDF) - PDFPage_Push(out_fp); - gs_stack_top++; - if( gs_stack_top >= MAX_GS ) - Error(24, 5, "rotations, graphics etc. too deeply nested (max is %d)", - FATAL, &fpos(x), MAX_GS); - gs_stack[gs_stack_top].gs_font = currentfont; - gs_stack[gs_stack_top].gs_colour = currentcolour; - gs_stack[gs_stack_top].gs_cpexists = cpexists; - gs_stack[gs_stack_top].gs_currenty = currenty; - gs_stack[gs_stack_top].gs_xheight2 = currentxheight2; - debug0(DRS, D, "SaveGraphicState returning."); -} /* end SaveGraphicState */ - - -/*****************************************************************************/ -/* */ -/* RestoreGraphicState() */ -/* */ -/* Restore previously saved coordinate system. NB we normally assume that */ -/* no white space is needed before any item of output, but since this */ -/* procedure is sometimes called immediately after PrintGraphicObject(), */ -/* which does not append a concluding space, we prepend one here. */ -/* */ -/*****************************************************************************/ - -void RestoreGraphicState(void) -{ debug0(DRS, D, "RestoreGraphicState()"); - assert( BackEnd != PLAINTEXT, "RestoreGraphicState: BackEnd!" ); - if( BackEnd == POSTSCRIPT ) - fprintf(out_fp, "\ngrestore\n"); - else if( BackEnd == PDF ) - PDFPage_Pop(out_fp); - currentfont = gs_stack[gs_stack_top].gs_font; - currentcolour = gs_stack[gs_stack_top].gs_colour; - cpexists = gs_stack[gs_stack_top].gs_cpexists; - currenty = gs_stack[gs_stack_top].gs_currenty; - currentxheight2 = gs_stack[gs_stack_top].gs_xheight2; - gs_stack_top--; - /* *** - cpexists = FALSE; - currentfont = NO_FONT; - currentcolour = NO_COLOUR; - *** */ - debug0(DRS, D, "RestoreGraphicState returning."); -} /* end RestoreGraphicState */ - - -/*@::PrintGraphicObject(), DefineGraphicNames()@******************************/ -/* */ -/* PrintGraphicObject(x) */ -/* */ -/* Print object x on out_fp */ -/* */ -/*****************************************************************************/ - -void PrintGraphicObject(OBJECT x) -{ OBJECT y, link; - assert( BackEnd != PLAINTEXT, "PrintGraphicObject: BackEnd!" ); - debug3(DPS, D, "PrintGraphicObject(%s %s %s)", - EchoFilePos(&fpos(x)), Image(type(x)), EchoObject(x)); - switch( type(x) ) - { - case WORD: - case QWORD: -#if 1 - if (BackEnd == POSTSCRIPT) - StringFPuts(string(x), out_fp); - else if (BackEnd == PDF) - { - PDFPage_WriteGraphic(out_fp, string(x)); - } -#else - StringFPuts(string(x), out_fp); -#endif - break; - - - case ACAT: - - for( link = Down(x); link != x; link = NextDown(link) ) - { Child(y, link); - if( type(y) == GAP_OBJ ) - { - if( BackEnd == POSTSCRIPT ) - { - if( vspace(y) > 0 ) fputs("\n", out_fp); - else if( hspace(y) > 0 ) fputs(" ", out_fp); - } - else if( BackEnd == PDF ) - { - if( vspace(y) > 0 ) PDFPage_Write(out_fp, "\n"); - else if( hspace(y) > 0 ) PDFPage_Write(out_fp, " "); - } - } - else if( is_word(type(y)) || type(y) == ACAT ) - PrintGraphicObject(y); - else if( type(y) != WIDE && !is_index(type(y)) ) - /* @Wide, indexes are sometimes inserted by Manifest */ - { Error(24, 6, "error in left parameter of %s", - WARN, &fpos(x), KW_GRAPHIC); - debug1(DGP, D, " type(y) = %s, y =", Image(type(y))); - ifdebug(DGP, D, DebugObject(y)); - } - } - break; - - - default: - - Error(24, 7, "error in left parameter of %s", WARN, &fpos(x), KW_GRAPHIC); - debug1(DGP, D, " type(x) = %s, x =", Image(type(x))); - ifdebug(DGP, D, DebugObject(x)); - break; - - } - debug0(DPS, D, "PrintGraphicObject returning"); -} /* end PrintGraphicObject */ - - -/*****************************************************************************/ -/* */ -/* DefineGraphicNames(x) */ -/* */ -/* Generate PostScript for xsize, ysize etc. names of graphic object. */ -/* */ -/*****************************************************************************/ - -void DefineGraphicNames(OBJECT x) -{ assert( type(x) == GRAPHIC, "PrintGraphic: type(x) != GRAPHIC!" ); - assert( BackEnd != PLAINTEXT, "DefineGraphicNames: BackEnd!" ); - debug1(DRS, D, "DefineGraphicNames( %s )", EchoObject(x)); - debug1(DRS, DD, " style = %s", EchoStyle(&save_style(x))); - - /* if font is different to previous word then print change */ - if( font(save_style(x)) != currentfont ) - { currentfont = font(save_style(x)); - if( currentfont > 0 ) - { currentxheight2 = FontHalfXHeight(currentfont); -#if 1 /* VT 98/01/04: modified for PDF */ - if (BackEnd == POSTSCRIPT) - fprintf(out_fp, "%hd %s ", FontSize(currentfont, x), FontName(currentfont)); - else if (BackEnd == PDF) - PDFFont_Set(out_fp, FontSize(currentfont, x), FontName(currentfont)); -#else - fprintf(out_fp, "%hd %s ", FontSize(currentfont, x), - FontName(currentfont)); -#endif - } - } - - /* if colour is different to previous word then print change */ - if( colour(save_style(x)) != currentcolour ) - { currentcolour = colour(save_style(x)); - if( currentcolour > 0 ) - { -#if 1 - if( BackEnd == POSTSCRIPT ) - fprintf(out_fp, "%s ", ColourCommand(currentcolour)); - else if (BackEnd == PDF) - { - char str[256]; - sprintf(str, "%s ", ColourCommand(currentcolour)); - PDFPage_Write(out_fp, str); - } -#else - fprintf(out_fp, "%s ", ColourCommand(currentcolour)); -#endif - } - } - - if (BackEnd == POSTSCRIPT) - fprintf(out_fp, "%d %d %d %d %d %d %d LoutGraphic\n", - size(x, COLM), size(x, ROWM), back(x, COLM), fwd(x, ROWM), - currentfont <= 0 ? 12*PT : FontSize(currentfont, x), - width(line_gap(save_style(x))), width(space_gap(save_style(x)))); - else if( BackEnd == PDF ) - { - PDFPage_SetVars(size(x, COLM), size(x, ROWM), back(x, COLM), fwd(x, ROWM), - currentfont <= 0 ? 12*PT : FontSize(currentfont, x), - width(line_gap(save_style(x))), width(space_gap(save_style(x)))); - } - - debug0(DRS, D, "DefineGraphicNames returning."); -} /* end DefineGraphicNames */ - - -/*****************************************************************************/ -/* */ -/* SaveTranslateDefineSave(x, xdist, ydist) */ -/* */ -/* Equivalent to the sequence of calls */ -/* */ -/* SaveGraphicState(x) */ -/* CoordTranslate(xdist, ydist) */ -/* DefineGraphicNames(x) */ -/* SaveGraphicState(x) */ -/* */ -/* but generates less PostScript. */ -/* */ -/*****************************************************************************/ - -void SaveTranslateDefineSave(OBJECT x, FULL_LENGTH xdist, FULL_LENGTH ydist) -{ - if( BackEnd == PDF ) - { - /* do it bit by bit */ - SaveGraphicState(x); - CoordTranslate(xdist, ydist); - DefineGraphicNames(x); - SaveGraphicState(x); - return; - } - - assert( BackEnd == POSTSCRIPT, "SaveTranslateDefineSave: BackEnd!" ); - if( gs_stack_top >= MAX_GS - 1 || font(save_style(x)) != currentfont || - colour(save_style(x))!=currentcolour ) - { - /* do it bit by bit, will be rare anyway */ - SaveGraphicState(x); - CoordTranslate(xdist, ydist); - DefineGraphicNames(x); - SaveGraphicState(x); - } - else - { - /* no font or colour changes, no stack overflow, so can optimize */ - - /* from Save */ - gs_stack_top++; - gs_stack[gs_stack_top].gs_font = currentfont; - gs_stack[gs_stack_top].gs_colour = currentcolour; - gs_stack[gs_stack_top].gs_cpexists = cpexists; - gs_stack[gs_stack_top].gs_currenty = currenty; - gs_stack[gs_stack_top].gs_xheight2 = currentxheight2; - - /* from CoordTranslate */ - cpexists = FALSE; - - /* from Save */ - gs_stack_top++; - gs_stack[gs_stack_top].gs_font = currentfont; - gs_stack[gs_stack_top].gs_colour = currentcolour; - gs_stack[gs_stack_top].gs_cpexists = cpexists; - gs_stack[gs_stack_top].gs_currenty = currenty; - gs_stack[gs_stack_top].gs_xheight2 = currentxheight2; - - /* accumulated output from all four calls, repackaged */ - fprintf(out_fp, "%d %d %d %d %d %d %d %d %d LoutGr2\n", - size(x, COLM), size(x, ROWM), back(x, COLM), fwd(x, ROWM), - currentfont <= 0 ? 12*PT : FontSize(currentfont, x), - width(line_gap(save_style(x))), width(space_gap(save_style(x))), - xdist, ydist); - - } -} /* end SaveTranslateDefineSave */ - - -/*@::PrintGraphicInclude()@***************************************************/ -/* */ -/* PrintGraphicInclude(x, colmark, rowmark) */ -/* */ -/* Print graphic include file, with appropriate surrounds. This code */ -/* closely follows the PostScript Language Reference Manual, 2n ed., */ -/* pages 733-5, except we do not clip the included EPSF. */ -/* */ -/* Note to porters: Version 3.0 of the EPSF standard is not compatible */ -/* with previous versions. Thus, this output may crash your system. */ -/* If you can find out which comment line(s) are causing the trouble, */ -/* you can add to procedure strip_out to strip them out during the */ -/* file inclusion step. e.g. on my system %%EOF causes problems, so I */ -/* strip it out. */ -/* */ -/* May 1994: I've just discovered that %%Trailer causes problems for */ -/* the mpage Unix utility, so now I'm stripping it out as well. */ -/* */ -/*****************************************************************************/ -#define SKIPPING 0 -#define READING_DNR 1 -#define FINISHED 2 - -static BOOLEAN strip_out(FULL_CHAR *buff) -{ if( StringBeginsWith(buff, AsciiToFull("%%EOF")) ) return TRUE; - if( StringBeginsWith(buff, AsciiToFull("%%Trailer")) ) return TRUE; - return FALSE; -} /* end strip_out */ - -void PrintGraphicInclude(OBJECT x, FULL_LENGTH colmark, FULL_LENGTH rowmark) -{ OBJECT y, full_name; FULL_CHAR buff[MAX_BUFF]; - FILE *fp; int state; BOOLEAN compressed; - debug0(DRS, D, "PrintGraphicInclude(x)"); - - if (BackEnd == PDF) - { - Error(24, 8, "PrintGraphicInclude: cannot include EPSF in a PDF file. File ignored.", - WARN, &fpos(x)); - return; - } - - assert( BackEnd == POSTSCRIPT, "PrintGraphicInclude: BackEnd!" ); - assert(type(x)==INCGRAPHIC || type(x)==SINCGRAPHIC, "PrintGraphicInclude!"); - assert(incgraphic_ok(x), "PrintGraphicInclude: !incgraphic_ok(x)!"); - - /* open the include file and get its full path name */ - Child(y, Down(x)); - fp = OpenIncGraphicFile(string(y), type(x), &full_name,&fpos(y),&compressed); - assert( fp != NULL, "PrintGraphicInclude: fp!" ); - - /* if font is different to previous word then print change */ - if( font(save_style(x)) != currentfont ) - { currentfont = font(save_style(x)); - currentxheight2 = FontHalfXHeight(currentfont); - fprintf(out_fp, "%hd %s\n", FontSize(currentfont,x), FontName(currentfont)); - } - - /* if colour is different to previous word then print change */ - if( colour(save_style(x)) != currentcolour ) - { currentcolour = colour(save_style(x)); - if( currentcolour > 0 ) - { - fprintf(out_fp, "%s\n", ColourCommand(currentcolour)); - } - } - - /* generate appropriate header code */ - fprintf(out_fp, "BeginEPSF\n"); - CoordTranslate(colmark - back(x, COLM), rowmark - fwd(x, ROWM)); - CoordScale( (float) PT, (float) PT ); - CoordTranslate(-back(y, COLM), -back(y, ROWM)); - fprintf(out_fp, "%%%%BeginDocument: %s\n", string(full_name)); - - /* copy through the include file, except divert resources lines to needs */ - /* and strip out some comment lines that cause problems */ - state = (StringFGets(buff, MAX_BUFF, fp) == NULL) ? FINISHED : SKIPPING; - while( state != FINISHED ) switch(state) - { - case SKIPPING: - - if( StringBeginsWith(buff, AsciiToFull("%%DocumentNeededResources:")) && - !StringContains(buff, AsciiToFull("(atend)")) ) - { y = MakeWord(WORD, &buff[StringLength("%%DocumentNeededResources:")], - no_fpos); - Link(needs, y); - state = (StringFGets(buff,MAX_BUFF,fp)==NULL) ? FINISHED : READING_DNR; - } - else - { if( StringBeginsWith(buff, AsciiToFull("%%LanguageLevel:")) ) - Error(24, 9, "ignoring LanguageLevel comment in %s file %s", - WARN, &fpos(x), KW_INCGRAPHIC, string(full_name)); - if( StringBeginsWith(buff, AsciiToFull("%%Extensions:")) ) - Error(24, 10, "ignoring Extensions comment in %s file %s", - WARN, &fpos(x), KW_INCGRAPHIC, string(full_name)); - if( !strip_out(buff) ) StringFPuts(buff, out_fp); - state = (StringFGets(buff, MAX_BUFF, fp) == NULL) ? FINISHED : SKIPPING; - } - break; - - case READING_DNR: - - if( StringBeginsWith(buff, AsciiToFull("%%+")) ) - { x = MakeWord(WORD, &buff[StringLength(AsciiToFull("%%+"))], no_fpos); - Link(needs, x); - state = (StringFGets(buff,MAX_BUFF,fp)==NULL) ? FINISHED : READING_DNR; - } - else - { if( !strip_out(buff) ) StringFPuts(buff, out_fp); - state = (StringFGets(buff, MAX_BUFF, fp) == NULL) ? FINISHED : SKIPPING; - } - break; - } - - /* wrapup */ - DisposeObject(full_name); - fclose(fp); - if( compressed ) StringRemove(AsciiToFull(LOUT_EPS)); - fprintf(out_fp, "\n%%%%EndDocument\nEndEPSF\n"); - wordcount = 0; - debug0(DRS, D, "PrintGraphicInclude returning."); -} /* end PrintGraphicInclude */ @@ -1,6 +1,6 @@ /*@z25.c:Object Echo:aprint(), cprint(), printnum()@**************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.21) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.22) */ /* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */ /* */ /* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */ @@ -1,6 +1,6 @@ /*@z26.c:Echo Service:BeginString()@******************************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.21) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.22) */ /* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */ /* */ /* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */ @@ -127,27 +127,8 @@ FULL_CHAR *EchoLength(int len) i = (i + 1) % 8; if( len == MAX_FULL_LENGTH ) sprintf( (char *) buff[i], "%s", "INF"); - else switch( BackEnd ) - { - case POSTSCRIPT: - case PDF: - - sprintf( (char *) buff[i], "%.3fc", (float) len/CM); - break; - - case PLAINTEXT: - - if( length_dim == COLM ) - { - sprintf( (char *) buff[i], "%.2fs", (float) len/PlainCharWidth); - } - else - { - sprintf( (char *) buff[i], "%.2ff", (float) len/PlainCharHeight); - } - break; - - } + else + BackEnd->PrintLength(buff[i], len, ROWM); return buff[i]; } /* end EchoLength */ @@ -1,6 +1,6 @@ /*@z27.c:Debug Service:Debug flags@*******************************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.21) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.22) */ /* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */ /* */ /* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */ @@ -80,7 +80,10 @@ struct dbs dbg[] = { {"ex", {0, 0, 0}}, /* External Sort */ {"og", {0, 0, 0}}, /* Optimal Galleys */ {"et", {0, 0, 0}}, /* Environment Table */ - {"pd", {0, 0, 0}}, /* PDF Back End */ + {"pd", {0, 0, 0}}, /* PDF Back End (old) */ + {"po", {0, 0, 0}}, /* PostScript Back End */ + {"pf", {0, 0, 0}}, /* PDF Back End */ + {"pt", {0, 0, 0}}, /* Plain Text Back End */ {"pp", {0, 0, 0}}, /* Profiling */ {"", {0, 0, 0}}, /* any */ }; @@ -1,6 +1,6 @@ /*@z28.c:Error Service:ErrorInit(), ErrorSeen()@******************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.21) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.22) */ /* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */ /* */ /* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */ @@ -1,6 +1,6 @@ /*@z29.c:Symbol Table:Declarations, hash()@***********************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.21) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.22) */ /* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */ /* */ /* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */ @@ -1,6 +1,6 @@ /*@z30.c:Symbol uses:InsertUses()@********************************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.21) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.22) */ /* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */ /* */ /* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */ @@ -1,6 +1,6 @@ /*@z31.c:Memory Allocator:DebugMemory()@**************************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.21) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.22) */ /* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */ /* */ /* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */ @@ -1,6 +1,6 @@ /*@z32.c:Counter Service:Next()@**********************************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.21) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.22) */ /* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */ /* */ /* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */ @@ -1,6 +1,6 @@ /*@z33.c:Database Service:OldCrossDb(), NewCrossDb(), SymToNum()@*************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.21) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.22) */ /* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */ /* */ /* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */ @@ -1,6 +1,6 @@ /*@z34.c:Rotation Service:Declarations@***************************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.21) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.22) */ /* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */ /* */ /* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */ @@ -1,6 +1,6 @@ /*@z35.c:Time Keeper: MomentSym(), TimeString()@******************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.21) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.22) */ /* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */ /* */ /* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */ @@ -1,6 +1,6 @@ /*@z36.c:Hyphenation: Declarations@*******************************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.21) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.22) */ /* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */ /* */ /* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */ @@ -1,6 +1,6 @@ /*@z37.c:Font Service:Declarations@*******************************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.21) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.22) */ /* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */ /* */ /* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */ @@ -40,7 +40,7 @@ /*****************************************************************************/ /* */ -/* These definitions have been movet to "externs.h" since z24.c needs them: */ +/* These definitions have been moved to "externs.h" since z24.c needs them: */ /* */ /* struct metrics { */ /* SHORT_LENGTH up; */ @@ -63,7 +63,7 @@ /* COMPOSITE *cmp_table; composites to build */ /* int cmp_top; length of cmp_table */ /* OBJECT font_table; record of sized fonts */ -/* OBJECT original_font; font rec before resizing */ +/* OBJECT original_face; face object of font */ /* SHORT_LENGTH underline_pos; position of underline */ /* SHORT_LENGTH underline_thick; thickness of underline */ /* unsigned short *kern_table; first kerning chars */ @@ -78,23 +78,23 @@ /* */ /* Private data structures of this module */ /* */ -/* +++++++++++++++++++++++++++++++++ */ -/* + + */ -/* root -> + ACAT + */ -/* + + */ -/* + + */ -/* +++++++++++++++++++++++++++++++++ */ +/* +++++++++++++++++++++++++++ */ +/* + + */ +/* root -> + ACAT + */ +/* + + */ +/* + + */ +/* +++++++++++++++++++++++++++ */ /* | font families... */ /* | */ /* +-----+-----------------------------------------------+ ... */ /* | | */ /* | | */ -/* +++++++++++++++++++++++++++++++++ */ -/* + + */ -/* family -> + WORD + */ -/* + string (family name) + */ -/* + + */ -/* +++++++++++++++++++++++++++++++++ */ +/* +++++++++++++++++++++++++++ */ +/* + + */ +/* family -> + WORD + */ +/* + string (family name) + */ +/* + + */ +/* +++++++++++++++++++++++++++ */ /* | faces of this family... */ /* | */ /* +-----+-----------------------------------------------+ ... */ @@ -107,7 +107,6 @@ /* + font_recoded + */ /* + font_mapping + */ /* + font_page + */ -/* + font_firstpage + */ /* + + */ /* +++++++++++++++++++++++++++++++++ */ /* | size records... */ @@ -317,7 +316,7 @@ static void ReadCharMetrics(OBJECT face, BOOLEAN fixed_pitch, int xheight2, bfound = TRUE; } else if( StringEqual(command, "L") && - BackEnd != PLAINTEXT && ch != '\0' ) + BackEnd->uses_font_metrics && ch != '\0' ) { if( lig[ch] == 1 ) lig[ch] = (*ligtop) - MAX_CHARS; lig[(*ligtop)++] = ch; i++; /* skip L */ @@ -357,23 +356,21 @@ static void ReadCharMetrics(OBJECT face, BOOLEAN fixed_pitch, int xheight2, if( lig[ch] == 1 ) lig[ch] = 0; /* set to known if unknown */ else if( lig[ch] > 1 ) /* add '\0' to end of ligs */ lig[(*ligtop)++] = '\0'; - switch( BackEnd ) + if( BackEnd->uses_font_metrics ) + { + fnt[ch].left = llx; + fnt[ch].down = lly - xheight2; + fnt[ch].right = wx; + fnt[ch].up = ury - xheight2; + fnt[ch].last_adjust = (urx==0 || wx==0 || fixed_pitch) ? 0 : urx - wx; + } + else { - case POSTSCRIPT: - case PDF: fnt[ch].left = llx; - fnt[ch].down = lly - xheight2; - fnt[ch].right = wx; - fnt[ch].up = ury - xheight2; - fnt[ch].last_adjust = - (urx == 0 || wx == 0 || fixed_pitch) ? 0 : urx - wx; - break; - - case PLAINTEXT: fnt[ch].left = 0; - fnt[ch].down = - PlainCharHeight / 2; - fnt[ch].right = PlainCharWidth; - fnt[ch].up = PlainCharHeight / 2; - fnt[ch].last_adjust = 0; - break; + fnt[ch].left = 0; + fnt[ch].down = - PlainCharHeight / 2; + fnt[ch].right = PlainCharWidth; + fnt[ch].up = PlainCharHeight / 2; + fnt[ch].last_adjust = 0; } debug6(DFT, DDD, " fnt[%c] = (%d,%d,%d,%d,%d)",ch, fnt[ch].left, fnt[ch].down, fnt[ch].right, fnt[ch].up, fnt[ch].last_adjust); @@ -393,7 +390,7 @@ static void ReadCharMetrics(OBJECT face, BOOLEAN fixed_pitch, int xheight2, /*****************************************************************************/ static void ReadCompositeMetrics(OBJECT face, OBJECT Extrafilename, - FILE_NUM extra_fnum, int *lnum, unsigned short int composite[], + FILE_NUM extra_fnum, int *lnum, unsigned short composite[], COMPOSITE cmp[], int *cmptop, FILE *fp) { char *status; FULL_CHAR buff[MAX_BUFF], composite_name[100], name[100]; @@ -661,7 +658,6 @@ static OBJECT FontRead(FULL_CHAR *family_name, FULL_CHAR *face_name, OBJECT err) /* say that this font is currently unused on any page */ font_page(face) = 0; - font_firstpage(face) = FALSE; /* get a new number for this (default) font size */ if( ++font_count >= finfo_size ) @@ -684,9 +680,10 @@ static OBJECT FontRead(FULL_CHAR *family_name, FULL_CHAR *face_name, OBJECT err) no_fpos); Link(face, first_size); font_num(first_size) = font_count; - font_size(first_size) = (BackEnd != PLAINTEXT) ? SZ_DFT : PlainCharHeight; + font_size(first_size) = BackEnd->uses_font_metrics ? SZ_DFT : PlainCharHeight; font_recoded(first_size) = font_recoded(face); font_mapping(first_size) = font_mapping(face); + font_num(face) = font_num(first_size); /* Uwe's suggestion, helps PDF */ /* leaves font_xheight2 and font_spacewidth still to do */ @@ -851,7 +848,7 @@ static OBJECT FontRead(FULL_CHAR *family_name, FULL_CHAR *face_name, OBJECT err) ReadCharMetrics(face, fixed_pitch, xheight2, lig, &ligtop, fnum, fnt, &lnum, fp); } - else if( BackEnd != PLAINTEXT && Kern && + else if( BackEnd->uses_font_metrics && Kern && StringEqual(command, AsciiToFull("StartKernPairs")) ) { FULL_CHAR ch1, ch2, last_ch1; FULL_CHAR name1[30], name2[30]; @@ -962,7 +959,7 @@ static OBJECT FontRead(FULL_CHAR *family_name, FULL_CHAR *face_name, OBJECT err) /* complete the initialization of first_size */ font_xheight2(first_size) = - (BackEnd != PLAINTEXT) ? xheight2 : PlainCharHeight / 4; + BackEnd->uses_font_metrics ? xheight2 : PlainCharHeight / 4; ch = MapCharEncoding(STR_PS_SPACENAME, font_mapping(first_size)); font_spacewidth(first_size) = ch == '\0' ? 0 : fnt[ch].right; @@ -1016,7 +1013,7 @@ static OBJECT FontRead(FULL_CHAR *family_name, FULL_CHAR *face_name, OBJECT err) /***************************************************************************/ finfo[font_count].font_table = first_size; - finfo[font_count].original_font = face; + finfo[font_count].original_face = face; finfo[font_count].underline_pos = xheight2 - under_pos; finfo[font_count].underline_thick = under_thick; finfo[font_count].size_table = fnt; @@ -1308,7 +1305,7 @@ void FontChange(STYLE *style, OBJECT x) } /* search fonts of face for desired size; return if already present */ - if( BackEnd == PLAINTEXT ) flen = PlainCharHeight; + if( !(BackEnd->uses_font_metrics) ) flen = PlainCharHeight; for( link=NextDown(NextDown(Down(face))); link!=face; link = NextDown(link) ) { Child(fsize, link); if( font_size(fsize) == flen ) @@ -1349,13 +1346,13 @@ void FontChange(STYLE *style, OBJECT x) new = MakeWord(WORD, string(old), no_fpos); Link(face, new); font_num(new) = font_count; - font_size(new) = BackEnd != PLAINTEXT ? flen : font_size(old); + font_size(new) = BackEnd->uses_font_metrics ? flen : font_size(old); font_xheight2(new) = font_xheight2(old) * font_size(new) / font_size(old); font_recoded(new) = font_recoded(old); font_mapping(new) = font_mapping(old); font_spacewidth(new) = font_spacewidth(old) * font_size(new)/font_size(old); finfo[font_count].font_table = new; - finfo[font_count].original_font = face; + finfo[font_count].original_face = face; finfo[font_count].underline_pos = (finfo[font_num(old)].underline_pos * font_size(new)) / font_size(old); finfo[font_count].underline_thick = @@ -1388,7 +1385,7 @@ void FontChange(STYLE *style, OBJECT x) if( newcmp == (COMPOSITE *) NULL ) Error(37, 54, "run out of memory when changing font or font size", FATAL, &fpos(x)); - for( i = 0; i < cmptop; i++ ) + for( i = 1; i < cmptop; i++ ) /* NB position 0 is unused */ { newcmp[i].char_code = oldcmp[i].char_code; if( newcmp[i].char_code != (FULL_CHAR) '\0' ) { newcmp[i].x_offset = (oldcmp[i].x_offset*font_size(new)) / font_size(old); @@ -1475,7 +1472,7 @@ void FontWordSize(OBJECT x) if( *p ) { if( word_font(x) < 1 || word_font(x) > font_count ) Error(37, 56, "no current font at word %s", FATAL, &fpos(x), string(x)); - if( word_colour(x) == 0 && BackEnd != PLAINTEXT ) + if( word_colour(x) == 0 && BackEnd->colour_avail ) Error(37, 57, "no current colour at word %s", FATAL, &fpos(x), string(x)); if( word_language(x) == 0 ) Error(37, 58, "no current language at word %s", FATAL,&fpos(x),string(x)); @@ -1579,11 +1576,11 @@ void FontWordSize(OBJECT x) /*****************************************************************************/ FULL_LENGTH FontSize(FONT_NUM fnum, OBJECT x) -{ debug1(DFT, DD, "FontSize( %d )", fnum); +{ debug1(DFT, D, "FontSize( %d )", fnum); assert( fnum <= font_count, "FontSize!" ); if( fnum <= 0 ) Error(37, 61, "no current font at this point", FATAL, &fpos(x)); - debug1(DFT, DD, "FontSize returning %d", font_size(finfo[fnum].font_table)); + debug1(DFT, D, "FontSize returning %d", font_size(finfo[fnum].font_table)); return font_size(finfo[fnum].font_table); } /* end FontSize */ @@ -1755,42 +1752,13 @@ void FontPrintPageSetup(FILE *fp) assert( is_word(type(face)), "FontPrintPageSetup: face!" ); assert( Down(face) != face, "FontDebug: Down(face)!"); - /* record that face is used on the first page, if this is the first page */ - if( font_curr_page == 1 ) font_firstpage(face) = TRUE; - - /* print font encoding command unless already done */ - if( !font_firstpage(face) || font_curr_page == 1 ) - { Child(first_size, NextDown(NextDown(Down(face)))); - assert( is_word(type(first_size)), "FontPrintPageSetup: first_size!" ); - Child(ps_name, Down(face)); - assert( is_word(type(ps_name)), "FontPrintPageSetup: ps_name!" ); - fprintf(fp, "%%%%IncludeResource: font %s\n", string(ps_name)); - - switch( BackEnd ) - { - case POSTSCRIPT: - - if( font_recoded(face) ) - { - MapEnsurePrinted(font_mapping(face), font_curr_page, fp); - fprintf(fp, "/%s%s %s /%s LoutRecode\n", - string(ps_name), string(first_size), - MapEncodingName(font_mapping(face)), string(ps_name)); - fprintf(fp, "/%s { /%s%s LoutFont } def\n", string(first_size), - string(ps_name), string(first_size)); - } - else fprintf(fp, "/%s { /%s LoutFont } def\n", string(first_size), - string(ps_name)); - break; - - - case PDF: - - PDFFont_AddFont(fp, string(first_size), string(ps_name), - MapEncodingName(font_mapping(face))); - break; - } - } + /* print font encoding command */ + Child(first_size, NextDown(NextDown(Down(face)))); + assert( is_word(type(first_size)), "FontPrintPageSetup: first_size!" ); + Child(ps_name, Down(face)); + assert( is_word(type(ps_name)), "FontPrintPageSetup: ps_name!" ); + BackEnd->PrintPageSetupForFont(face, font_curr_page, + string(ps_name), string(first_size)); } debug0(DFT, DD, "FontPrintPageSetup returning."); } /* end FontPrintPageSetup */ @@ -1805,7 +1773,7 @@ void FontPrintPageSetup(FILE *fp) /*****************************************************************************/ void FontPrintPageResources(FILE *fp) -{ OBJECT face, ps_name, link; +{ OBJECT face, ps_name, link, pface, pname, plink; BOOLEAN first; assert(font_root!=nilobj && type(font_root)==ACAT, "FontDebug: font_root!"); assert(font_used!=nilobj && type(font_used)==ACAT, "FontDebug: font_used!"); @@ -1819,21 +1787,23 @@ void FontPrintPageResources(FILE *fp) Child(ps_name, Down(face)); assert( is_word(type(ps_name)), "FontPrintPageResources: ps_name!" ); - switch( BackEnd ) + /* make sure this ps_name has not been printed before (ugly, I know). */ + /* Repeats arise when the font appears twice in the database under */ + /* different family-face names, perhaps because of sysnonyms like */ + /* Italic and Slope, or perhaps because of different encoding vectors */ + for( plink = Down(font_used); plink != link; plink = NextDown(plink) ) { - case POSTSCRIPT: - - fprintf(fp, "%s font %s\n", - first ? "%%PageResources:" : "%%+", string(ps_name)); - first = FALSE; - break; - - - case PDF: - - /* PDFWriteFontResource(fp, string(ps_name)); */ + Child(pface, plink); + Child(pname, Down(pface)); + if( StringEqual(string(pname), string(ps_name)) ) break; } + if( plink == link ) + { + /* not seen before, so print it */ + BackEnd->PrintPageResourceForFont(string(ps_name), first); + first = FALSE; + } } debug0(DFT, DD, "FontPrintPageResources returning."); } /* end FontPrintPageResources */ @@ -1,6 +1,6 @@ /*@z38.c:Character Mappings:Declarations@*************************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.21) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.22) */ /* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */ /* */ /* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */ @@ -292,41 +292,7 @@ FULL_CHAR *MapEncodingName(MAPPING m) /*****************************************************************************/ /* */ -/* static PrintMapping(MAPPING m, FILE *fp) */ -/* */ -/* Print mapping m onto fp. */ -/* */ -/*****************************************************************************/ - -static void PrintMapping(MAPPING m, FILE *fp) -{ MAP_VEC map = MapTable[m]; int i; - switch( BackEnd ) - { - case POSTSCRIPT: - - 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'); - fprintf(fp, "] def\n"); - fprintf(fp, "%%%%EndResource\n\n"); - break; - - - case PDF: - - PDFFile_BeginFontEncoding(fp, (char*) string(map->name)); - for( i = 0; i < MAX_CHARS; i++ ) - fprintf(fp, "/%s%c", string(map->vector[i]), (i+1)%8 != 0 ? ' ' : '\n'); - PDFFile_EndFontEncoding(fp); - break; - } -} - - -/*****************************************************************************/ -/* */ -/* void MapEnsurePrinted(MAPPING m, int curr_page, FILE *fp) */ +/* void MapEnsurePrinted(MAPPING m, int curr_page) */ /* */ /* Ensure that MAPPING m is printed on page curr_page, if required. */ /* It's required if it has neither been printed on the current page */ @@ -334,46 +300,53 @@ static void PrintMapping(MAPPING m, FILE *fp) /* */ /*****************************************************************************/ -void MapEnsurePrinted(MAPPING m, int curr_page, FILE *fp) +void MapEnsurePrinted(MAPPING m, int curr_page) { MAP_VEC map = MapTable[m]; assert( map->seen_recoded, "MapEnsurePrinted: not seen_recoded!" ); if( map->last_page_printed < curr_page && map->last_page_printed != 1 ) { map->last_page_printed = curr_page; - PrintMapping(m, fp); + BackEnd->PrintMapping(m); } } /*****************************************************************************/ /* */ -/* MapPrintEncodings(fp) [OBSOLETE] */ +/* MapPrintEncodings() */ /* */ -/* Print all encoding vectors in PostScript form on file fp. */ +/* Print all encoding vectors in existence so far; this counts as printing */ +/* them on "page 1", but in fact they will appear in the document setup */ +/* section. */ /* */ /*****************************************************************************/ -void MapPrintEncodings(FILE *fp) -{ MAPPING m; +void MapPrintEncodings() +{ MAPPING m; MAP_VEC map; for( m = 1; m < maptop; m++ ) - if( MapTable[m]->seen_recoded ) PrintMapping(m, fp); + { if( MapTable[m]->seen_recoded ) + { BackEnd->PrintMapping(m); + map = MapTable[m]; + map->last_page_printed = 1; + } + } } /* end MapPrintEncodings */ /*****************************************************************************/ /* */ -/* MapPrintResources(fp) */ +/* MapPrintPSResources(fp) */ /* */ -/* Print resource entries for all encoding vectors on file fp. */ +/* Print PostScript resource entries for all encoding vectors on file fp. */ /* */ /*****************************************************************************/ -void MapPrintResources(FILE *fp) +void MapPrintPSResources(FILE *fp) { MAPPING m; MAP_VEC map; for( m = 1; m < maptop; m++ ) if( MapTable[m]->seen_recoded ) { map = MapTable[m]; fprintf(fp, "%%%%+ encoding %s\n", string(map->name)); } -} /* end MapPrintResources */ +} /* end MapPrintPSResources */ /*@@**************************************************************************/ @@ -469,7 +442,7 @@ OBJECT MapSmallCaps(OBJECT x, STYLE *style) uc = MapTable[m]->map[MAP_UPPERCASE]; /* if plain text, apply the mapping and exit */ - if( BackEnd == PLAINTEXT ) + if( !(BackEnd->scale_avail) ) { for( i = 0; string(x)[i] != '\0'; i++ ) if( uc[string(x)[i]] != '\0' ) @@ -1,6 +1,6 @@ /*@z39.c:String Handler:AsciiToFull(), StringEqual(), etc.@*******************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.21) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.22) */ /* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */ /* */ /* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */ @@ -1,6 +1,6 @@ /*@z40.c:Filter Handler:FilterInit()@*****************************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.21) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.22) */ /* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */ /* */ /* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */ @@ -1,6 +1,6 @@ /*@z41.c:Object Input-Output:AppendToFile, ReadFromFile@**********************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.21) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.22) */ /* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */ /* */ /* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */ @@ -1,6 +1,6 @@ /*@z42.c:Colour Service:ColourChange, ColourCommand@**************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.21) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.22) */ /* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */ /* */ /* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */ @@ -195,7 +195,7 @@ void ColourChange(STYLE *style, OBJECT x) /* if argument is empty, fail and exit */ if( StringEqual(string(x), STR_EMPTY) ) - { if( BackEnd != PLAINTEXT ) + { if( BackEnd->colour_avail ) Error(42, 4, "%s ignored (empty left parameter)", WARN, &fpos(x), KW_COLOUR); debug0(DCO, D, "ColourChange returning (colour unchanged)"); @@ -1,6 +1,6 @@ /*@z43.c:Language Service:LanguageChange, LanguageString@*********************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.21) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.22) */ /* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */ /* */ /* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */ @@ -1,6 +1,6 @@ /*@z44.c:Vertical Hyphenation:VerticalHyphenate()@****************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.21) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.22) */ /* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */ /* */ /* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */ @@ -1,6 +1,6 @@ /*@z45.c:External Sort:SortFile()@********************************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.21) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.22) */ /* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */ /* */ /* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */ @@ -1,6 +1,6 @@ /*@z46.c:Optimal Galleys:FindOptimize()@**************************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.21) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.22) */ /* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */ /* */ /* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */ @@ -1,6 +1,6 @@ /*@z47.c:Environment Table:EnvReadRetrieve()@*********************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.21) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.22) */ /* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */ /* */ /* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */ @@ -1,6 +1,6 @@ /*@z48.c:PDF back end@********************************************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.21) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.22) */ /* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */ /* */ /* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */ @@ -0,0 +1,1148 @@ +/*@z49.c:PostScript Back End:PS_BackEnd@**************************************/ +/* */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.22) */ +/* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */ +/* */ +/* Jeffrey H. Kingston (jeff@cs.usyd.edu.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., 59 Temple Place, Suite 330, Boston MA 02111-1307 USA */ +/* */ +/* FILE: z49.c */ +/* MODULE: PostScript Back End */ +/* EXTERNS: PS_BackEnd */ +/* */ +/*****************************************************************************/ +#include "externs.h" + + +/*****************************************************************************/ +/* */ +/* State variables for this module */ +/* */ +/*****************************************************************************/ +#define StartUpResource "LoutStartUp" +#define NO_FONT 0 /* actually stolen from z37.c */ +#define NO_COLOUR 0 +#define MAX_GS 50 /* maximum depth of graphics states */ + +BOOLEAN Encapsulated; /* TRUE if EPS file is wanted */ + +typedef struct +{ + FONT_NUM gs_font; /* font number of this state */ + COLOUR_NUM gs_colour; /* colour number of this state */ + BOOLEAN gs_cpexists; /* TRUE if a current point exists */ + FULL_LENGTH gs_currenty; /* if cpexists, its y coordinate */ + short gs_xheight2; /* of font exists, half xheight */ +} GRAPHICS_STATE; + +static GRAPHICS_STATE gs_stack[MAX_GS];/* graphics state stack */ +static int gs_stack_top; /* top of graphics state stack */ + +static FONT_NUM currentfont; /* font of most recent atom */ +static COLOUR_NUM currentcolour; /* colour of most recent atom */ +static short currentxheight2;/* half xheight in current font */ +static BOOLEAN cpexists; /* true if a current point exists */ +static FULL_LENGTH currenty; /* if cpexists, its y coordinate */ + +static int wordcount; /* atoms printed since last newline */ +static int pagecount; /* total number of pages printed */ +static BOOLEAN prologue_done; /* TRUE after prologue is printed */ +static OBJECT needs; /* Resource needs of included EPSFs */ +static OBJECT supplied; /* Resources supplied by this file */ +static FILE *out_fp; /* file to print PostScript on */ + + +/*****************************************************************************/ +/* */ +/* Print a number x on file fp. */ +/* */ +/*****************************************************************************/ + +#define printnum(x, fp) \ +{ char buff[20]; register int i, y; \ + if( x >= 0 ) y = x; \ + else { y = -x; putc(CH_MINUS, fp); } \ + i = 0; \ + do { buff[i++] = numtodigitchar(y % 10); \ + } while( (y = (y / 10)) > 0 ); \ + do { --i; putc(buff[i], fp); \ + } while( i ); \ +} + +/*****************************************************************************/ +/* */ +/* PS_PrintInitialize(FILE *fp) */ +/* */ +/* Initialize this module; fp is the output file. */ +/* */ +/*****************************************************************************/ + +static void PS_PrintInitialize(FILE *fp) +{ + debug0(DPO, DD, "PS_PrintInitialize(fp)"); + out_fp = fp; + prologue_done = FALSE; + gs_stack_top = -1; + currentfont = NO_FONT; + currentcolour = NO_COLOUR; + cpexists = FALSE; + wordcount = pagecount = 0; + New(needs, ACAT); + New(supplied, ACAT); + debug0(DPO, DD, "PS_PrintInitialize returning."); +} /* end PS_PrintInitialize */ + + +/*****************************************************************************/ +/* */ +/* void PS_PrintLength(FULL_CHAR *buff, int length, int length_dim) */ +/* */ +/* Print a length (debugging only) */ +/* */ +/*****************************************************************************/ + +static void PS_PrintLength(FULL_CHAR *buff, int length, int length_dim) +{ + sprintf( (char *) buff, "%.3fc", (float) length/CM); +} + + +/*****************************************************************************/ +/* */ +/* void PS_PrintPageSetupForFont(OBJECT face, int font_curr_page, */ +/* FULL_CHAR *font_name, FULL_CHAR *short_name) */ +/* */ +/* Print the page setup commands required to use a font on some page: */ +/* */ +/* face The font face record, defining which font we need */ +/* font_curr_page The current page number */ +/* font_name The name of the font */ +/* short_name Internal short name for the font */ +/* */ +/*****************************************************************************/ + +static void PS_PrintPageSetupForFont(OBJECT face, int font_curr_page, + FULL_CHAR *font_name, FULL_CHAR *short_name) +{ + fprintf(out_fp, "%%%%IncludeResource: font %s\n", font_name); + if( font_recoded(face) ) + { + MapEnsurePrinted(font_mapping(face), font_curr_page); + fprintf(out_fp, "/%s%s %s /%s LoutRecode\n", + font_name, short_name, + MapEncodingName(font_mapping(face)), font_name); + fprintf(out_fp, "/%s { /%s%s LoutFont } def\n", short_name, + font_name, short_name); + } + else fprintf(out_fp, "/%s { /%s LoutFont } def\n", short_name, font_name); +} /* end PrintPageSetupForFont */ + + +/*****************************************************************************/ +/* */ +/* void PS_PrintPageResourceForFont(FULL_CHAR *font_name, BOOLEAN first) */ +/* */ +/* Print page resource info on file fp for font font_name; first is true */ +/* if this is the first resource on this page. */ +/* */ +/*****************************************************************************/ + +static void PS_PrintPageResourceForFont(FULL_CHAR *font_name, BOOLEAN first) +{ + fprintf(out_fp, "%s font %s\n", first ? "%%PageResources:" : "%%+",font_name); +} /* end PS_PrintPageResourceForFont */ + + +/*****************************************************************************/ +/* */ +/* static void PS_PrintMapping(MAPPING m) */ +/* */ +/* Print mapping m onto out_fp. */ +/* */ +/*****************************************************************************/ + +static void PS_PrintMapping(MAPPING m) +{ MAP_VEC map = MapTable[m]; int i; + fprintf(out_fp, "%%%%BeginResource: encoding %s\n", string(map->name)); + fprintf(out_fp, "/%s [\n", string(map->name)); + for( i = 0; i < MAX_CHARS; i++ ) + fprintf(out_fp, "/%s%c", string(map->vector[i]), (i+1)%8 != 0 ? ' ' : '\n'); + fprintf(out_fp, "] def\n"); + fprintf(out_fp, "%%%%EndResource\n\n"); +} /* end PrintMapping */ + + +/*****************************************************************************/ +/* */ +/* 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; +} + + +/*****************************************************************************/ +/* */ +/* static void PrintBeforeFirstPage(FULL_LENGTH h, FULL_LENGTH v, */ +/* FULL_CHAR *label) */ +/* */ +/* Print whatever is needed before the start of the first page: the */ +/* PostScript prologue, augmented with any @PrependGraphic or */ +/* @SysPrependGraphic files specified by the user. The following */ +/* PostScript operators are defined: */ +/* */ +/* scale_factor fnt scale and set font */ +/* x_coordinate x move to x_coordinate, current y coordinate */ +/* string s show string */ +/* number in result is number inches */ +/* number cm result is number centimetres */ +/* number pt result is number points */ +/* number sp result is number spaces */ +/* number vs result is number vspaces */ +/* number ft result is number font-sizes */ +/* */ +/* as well as LoutGraphic, for use with the @Graphic operator: */ +/* */ +/* xsize ysize xmark ymark fr vs sp LoutGraphic - */ +/* */ +/* Define xmark, ymark, xsize, ysize to be the positions of */ +/* these features of x, and define symbols ft, vs and sp */ +/* to be the current font size, line separation, and space width. */ +/* */ +/*****************************************************************************/ + +#define p0(str) fputs(str, out_fp) +#define p1(str, arg1) fprintf(out_fp, str, arg1) +#define p2(str, arg1, arg2) fprintf(out_fp, str, arg1, arg2) +#define p3(str, arg1, arg2, arg3) fprintf(out_fp, str, arg1, arg2, arg3) + +static void PS_PrintBeforeFirstPage(FULL_LENGTH h, FULL_LENGTH v, + FULL_CHAR *label) +{ FILE_NUM fnum; FULL_CHAR *p; + debug2(DPO, DD, "PrintBeforeFirst(%d, %d)", h, v); + + /* print header comments for PostScript DSC 3.0 output */ + if( Encapsulated ) + p0("%!PS-Adobe-3.0 EPSF-3.0\n"); + else + p0("%!PS-Adobe-3.0\n"); + p1("%%%%Creator: %s\n", LOUT_VERSION); + p1("%%%%CreationDate: %s", TimeString()); + p0("%%DocumentData: Binary\n"); + p0("%%DocumentNeededResources: (atend)\n"); + p0("%%DocumentSuppliedResources: (atend)\n"); + p3("%%%%DocumentMedia: %s %d %d 0 white ()\n", MediaName(h, v), h/PT, v/PT); + p0("%%PageOrder: Ascend\n"); + p0("%%Pages: (atend)\n"); + p2("%%%%BoundingBox: 0 0 %d %d\n", h/PT, v/PT); + p0("%%EndComments\n\n"); + + /* print procedure definitions part of header */ + p0("%%BeginProlog\n"); + p1("%%%%BeginResource: procset %s\n", StartUpResource); + p0("/save_cp { currentpoint /cp_y exch def /cp_x exch def } def\n"); + p0("/restore_cp { cp_x cp_y moveto } def\n"); + p0("/outline { gsave 1 1 1 setrgbcolor dup show save_cp\n"); + p0(" grestore true charpath stroke restore_cp } bind def\n"); + p0("/m { 3 1 roll moveto show } bind def\n"); + p0("/mo { 3 1 roll moveto outline } bind def\n"); + p0("/s { exch currentpoint exch pop moveto show } bind def\n"); + p0("/so { exch currentpoint exch pop moveto outline } bind def\n"); + p0("/k { exch neg 0 rmoveto show } bind def\n"); + p0("/ko { exch neg 0 rmoveto outline } bind def\n"); + p0("/r { exch 0 rmoveto show } bind def\n"); + p0("/ro { exch 0 rmoveto outline } bind def\n"); + p0("/c { gsave 3 1 roll rmoveto show grestore } bind def\n"); + p0("/co { gsave 3 1 roll rmoveto outline grestore } bind def\n"); + p0("/ul { gsave setlinewidth dup 3 1 roll\n"); + p0(" moveto lineto stroke grestore } bind def\n"); + p1("/in { %d mul } def\n", IN); + p1("/cm { %d mul } def\n", CM); + p1("/pt { %d mul } def\n", PT); + p1("/em { %d mul } def\n", EM); + p0("/sp { louts mul } def\n"); + p0("/vs { loutv mul } def\n"); + p0("/ft { loutf mul } def\n"); + p0("/dg { } def\n\n"); + + p0("/LoutGraphic {\n"); + p0(" /louts exch def\n"); + p0(" /loutv exch def\n"); + p0(" /loutf exch def\n"); + p0(" /ymark exch def\n"); + p0(" /xmark exch def\n"); + p0(" /ysize exch def\n"); + p0(" /xsize exch def\n} def\n\n"); + + p0("/LoutGr2 { gsave translate LoutGraphic gsave } def\n\n"); + + /* print definition used by Lout output to recode fonts */ + /* adapted from PostScript Language Reference Manual (2nd Ed), p. 275 */ + /* usage: /<fullname> <encodingvector> /<originalname> LoutRecode - */ + + p0("/LoutFont\n"); + p0("{ findfont exch scalefont setfont\n"); + p0("} bind def\n\n"); + + p0("/LoutRecode {\n"); + p0(" { findfont dup length dict begin\n"); + p0(" {1 index /FID ne {def} {pop pop} ifelse} forall\n"); + p0(" /Encoding exch def\n"); + p0(" currentdict end definefont pop\n"); + p0(" }\n"); + p0(" stopped pop\n"); + p0("} bind def\n\n"); + + /* print definitions used by Lout output when including EPSF files */ + /* copied from PostScript Language Reference Manual (2nd Ed.), p. 726 */ + + p0("/BeginEPSF {\n"); + p0(" /LoutEPSFState save def\n"); + p0(" /dict_count countdictstack def\n"); + p0(" /op_count count 1 sub def\n"); + p0(" userdict begin\n"); + p0(" /showpage { } def\n"); + p0(" 0 setgray 0 setlinecap\n"); + p0(" 1 setlinewidth 0 setlinejoin\n"); + p0(" 10 setmiterlimit [] 0 setdash newpath\n"); + p0(" /languagelevel where\n"); + p0(" { pop languagelevel\n"); + p0(" 1 ne\n"); + p0(" { false setstrokeadjust false setoverprint\n"); + p0(" } if\n"); + p0(" } if\n"); + p0("} bind def\n\n"); + + p0("/EndEPSF {\n"); + p0(" count op_count sub { pop } repeat\n"); + p0(" countdictstack dict_count sub { end } repeat\n"); + p0(" LoutEPSFState restore\n"); + p0("} bind def\n"); + + p0("%%EndResource\n\n"); + + /* print prepend files (assumed to be organized as DSC 3.0 Resources) */ + for( fnum = FirstFile(PREPEND_FILE); fnum != NO_FILE; fnum=NextFile(fnum) ) + { FULL_CHAR buff[MAX_BUFF]; FILE *fp; + if( (fp = OpenFile(fnum, FALSE, FALSE)) == null ) + Error(49, 1, "cannot open %s file %s", WARN, PosOfFile(fnum), + KW_PREPEND, FileName(fnum)); + else if( StringFGets(buff, MAX_BUFF, fp) == NULL ) + Error(49, 2, "%s file %s is empty", WARN, PosOfFile(fnum), + KW_PREPEND, FileName(fnum)); + else + { + if( StringBeginsWith(buff, AsciiToFull("%%BeginResource:")) ) + { OBJECT tmp; + tmp = MakeWord(WORD, &buff[strlen("%%BeginResource:")], no_fpos); + Link(supplied, tmp); + } + else + Error(49, 3, "%s file %s lacks PostScript BeginResource comment", + WARN, PosOfFile(fnum), KW_PREPEND, FileName(fnum)); + StringFPuts(buff, out_fp); + p2("%% %s file %s\n", KW_PREPEND, FileName(fnum)); + while( StringFGets(buff, MAX_BUFF, fp) != NULL ) + StringFPuts(buff, out_fp); + p0("\n"); + fclose(fp); + } + } + + fputs("%%EndProlog\n\n", out_fp); + fputs("%%BeginSetup\n", out_fp); + MapPrintEncodings(); + /* FontPrintPageSetup(out_fp); */ + fputs("%%EndSetup\n\n", out_fp); + fprintf(out_fp, "%%%%Page: "); + for( p = label; *p != '\0'; p++ ) + fputs(EightBitToPrintForm[*p], out_fp); + fprintf(out_fp, " %d\n", ++pagecount); + fprintf(out_fp, "%%%%BeginPageSetup\n"); + FontPrintPageResources(out_fp); + fprintf(out_fp, "/pgsave save def\n"); + FontPrintPageSetup(out_fp); + FontAdvanceCurrentPage(); + fprintf(out_fp, "%.4f dup scale %d setlinewidth\n", 1.0 / PT, PT/2); + fprintf(out_fp, "%%%%EndPageSetup\n\n"); + prologue_done = TRUE; +} /* end PS_PrintBeforeFirstPage */ + + +/*****************************************************************************/ +/* */ +/* PS_PrintAfterLastPage() */ +/* */ +/* Clean up this module and close output stream. */ +/* */ +/*****************************************************************************/ + +static void PS_PrintAfterLastPage(void) +{ OBJECT x, link; BOOLEAN first_need; + if( prologue_done ) + { + fprintf(out_fp, "\npgsave restore\nshowpage\n"); + fprintf(out_fp, "\n%%%%Trailer\n"); + + /* print resource requirements (DSC 3.0 version) - fonts */ + first_need = FontNeeded(out_fp); + + /* print resource requirements (DSC 3.0 version) - included EPSFs */ + for( link = Down(needs); link != needs; link = NextDown(link) ) + { Child(x, link); + assert(is_word(type(x)), "PrintAfterLast: needs!" ); + fprintf(out_fp, "%s %s", + first_need ? "%%DocumentNeededResources:" : "%%+", string(x)); + first_need = FALSE; + } + + /* print resources supplied */ + fprintf(out_fp, "%%%%DocumentSuppliedResources: procset %s\n", + StartUpResource); + for( link = Down(supplied); link != supplied; link = NextDown(link) ) + { Child(x, link); + fprintf(out_fp, "%%%%+ %s", string(x)); + } + MapPrintPSResources(out_fp); + + fprintf(out_fp, "%%%%Pages: %d\n", pagecount); + fprintf(out_fp, "%%%%EOF\n"); + } +} /* end PS_PrintAfterLastPage */ + + +/*****************************************************************************/ +/* */ +/* PS_PrintBetweenPages(h, v, label) */ +/* */ +/* Start a new output component, of size h by v; label is the page label */ +/* to attach to the %%Page comment. */ +/* */ +/*****************************************************************************/ + +static void PS_PrintBetweenPages(FULL_LENGTH h, FULL_LENGTH v, FULL_CHAR *label) +{ FULL_CHAR *p; + debug2(DPO, DD, "PrintBetweenPages(%d, %d)", h, v); + + fprintf(out_fp, "\npgsave restore\nshowpage\n"); + gs_stack_top = 0; + cpexists = FALSE; + currentfont = NO_FONT; + currentcolour = NO_COLOUR; + if( Encapsulated ) + { PS_PrintAfterLastPage(); + Error(49, 4, "truncating -EPS document at end of first page", + FATAL, no_fpos); + } + fprintf(out_fp, "\n%%%%Page: "); + for( p = label; *p != '\0'; p++ ) + fputs(EightBitToPrintForm[*p], out_fp); + fprintf(out_fp, " %d\n", ++pagecount); + fprintf(out_fp, "%%%%BeginPageSetup\n"); + FontPrintPageResources(out_fp); + fprintf(out_fp, "/pgsave save def\n"); + FontPrintPageSetup(out_fp); + FontAdvanceCurrentPage(); + fprintf(out_fp, "%.4f dup scale %d setlinewidth\n", 1.0 / PT, PT/2); + fprintf(out_fp, "%%%%EndPageSetup\n"); + wordcount = 0; +} /* end PS_PrintBetweenPages */ + + +/*****************************************************************************/ +/* */ +/* KernLength(fnum, ch1, ch2, res) */ +/* */ +/* Set res to the kern length between ch1 and ch2 in font fnum, or 0 if */ +/* none. */ +/* */ +/*****************************************************************************/ + +#define KernLength(fnum, mp, ch1, ch2, res) \ +{ int ua_ch1 = mp[ch1]; \ + int ua_ch2 = mp[ch2]; \ + int i, j; \ + i = finfo[fnum].kern_table[ua_ch1], j; \ + if( i == 0 ) res = 0; \ + else \ + { FULL_CHAR *kc = finfo[fnum].kern_chars; \ + for( j = i; kc[j] > ua_ch2; j++ ); \ + res = (kc[j] == ua_ch2) ? \ + finfo[fnum].kern_sizes[finfo[fnum].kern_value[j]] : 0; \ + } \ +} /* end KernLength */ + + +/*****************************************************************************/ +/* */ +/* static void PrintComposite(COMPOSITE *cp, BOOLEAN outline, FILE *fp) */ +/* */ +/* Print composite character cp, assuming that the current point is */ +/* set to the correct origin. If outline is true, we want to print the */ +/* composite character in outline. */ +/* */ +/*****************************************************************************/ + +static void PrintComposite(COMPOSITE *cp, BOOLEAN outline, FILE *fp) +{ debug1(DPO, D, "PrintComposite(cp, %s, fp)", bool(outline)); + while( cp->char_code != '\0' ) + { + debug4(DPO, D, " cp = %d printing code %d (%d, %d)", (int) cp, + cp->char_code, cp->x_offset, cp->y_offset); + fprintf(fp, "%d %d (%c)%s ", cp->x_offset, cp->y_offset, + cp->char_code, outline ? "co" : "c"); + cp++; + } +} /* end PrintComposite */ + + +/*****************************************************************************/ +/* */ +/* PS_PrintWord(x, hpos, vpos) */ +/* */ +/* Print non-empty word x; its marks cross at the point (hpos, vpos). */ +/* */ +/*****************************************************************************/ + +static void PS_PrintWord(OBJECT x, int hpos, int vpos) +{ FULL_CHAR *p, *q, *a, *b, *lig, *unacc; + int ksize; char *command; MAPPING m; + unsigned short *composite; COMPOSITE *cmp; + + debug6(DPO, 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++; + + /* if font is different to previous word then print change */ + if( word_font(x) != currentfont ) + { currentfont = word_font(x); + currentxheight2 = FontHalfXHeight(currentfont); + fprintf(out_fp, "%hd %s", FontSize(currentfont, x), FontName(currentfont)); + if( ++wordcount >= 5 ) + { putc('\n', out_fp); + wordcount = 0; + } + else putc(' ', out_fp); + } + + /* if colour is different to previous word then print change */ + if( word_colour(x) != currentcolour ) + { currentcolour = word_colour(x); + if( currentcolour > 0 ) + { fprintf(out_fp, "%s", ColourCommand(currentcolour)); + if( ++wordcount >= 5 ) + { putc('\n', out_fp); + wordcount = 0; + } + else putc(' ', out_fp); + } + } + + /* convert ligature sequences into ligature characters */ + lig = finfo[word_font(x)].lig_table; + p = q = string(x); + do + { + /* check for missing glyph (lig[] == 1) or ligatures (lig[] > 1) */ + if( lig[*q++ = *p++] ) + { + if( lig[*(q-1)] == 1 ) continue; + else + { a = &lig[ lig[*(p-1)] + MAX_CHARS ]; + while( *a++ == *(p-1) ) + { b = p; + while( *a == *b && *(a+1) != '\0' && *b != '\0' ) a++, b++; + if( *(a+1) == '\0' ) + { *(q-1) = *a; + p = b; + break; + } + else + { while( *++a ); + a++; + } + } + } + } + } while( *p ); + *q = '\0'; + + /* move to coordinate of x */ + cmp = finfo[word_font(x)].cmp_table; + composite = finfo[word_font(x)].composite; + debug1(DPO, DDD, " currentxheight2 = %d", currentxheight2); + vpos = vpos - currentxheight2; + if( cpexists && currenty == vpos ) + { printnum(hpos, out_fp); + command = word_outline(x) ? "so" : "s"; + } + else + { currenty = vpos; + printnum(hpos, out_fp); + putc(' ', out_fp); + printnum(currenty, out_fp); + command = word_outline(x) ? "mo" : "m"; + cpexists = TRUE; + } + + /* show string(x) */ + putc('(', out_fp); + p = string(x); + if( composite[*p] ) + { + fprintf(out_fp, ")%s ", command); + debug3(DPO, D, + " calling PrintComposite(&cmp[composite[%d] = %d]); cmp_top = %d", + (int) *p, composite[*p], finfo[word_font(x)].cmp_top); + PrintComposite(&cmp[composite[*p]], word_outline(x), out_fp); + printnum(finfo[word_font(x)].size_table[*p].right, out_fp); + putc('(', out_fp); + command = word_outline(x) ? "ro" : "r"; + } + else fputs(EightBitToPrintForm[*p], out_fp); + m = font_mapping(finfo[word_font(x)].font_table); + unacc = MapTable[m]->map[MAP_UNACCENTED]; + /* acc = MapTable[m]->map[MAP_ACCENT]; */ + for( p++; *p; p++ ) + { KernLength(word_font(x), unacc, *(p-1), *p, ksize); + if( ksize != 0 ) + { fprintf(out_fp, ")%s %d(", command, -ksize); + ++wordcount; + command = word_outline(x) ? "ko" : "k"; + } + if( composite[*p] ) + { fprintf(out_fp, ")%s ", command); + debug3(DPO, D, + " calling PrintComposite(&cmp[composite[%d] = %d]); cmp_top = %d", + (int) *p, composite[*p], finfo[word_font(x)].cmp_top); + PrintComposite(&cmp[composite[*p]], word_outline(x), out_fp); + printnum(finfo[word_font(x)].size_table[*p].right, out_fp); + putc('(', out_fp); + command = word_outline(x) ? "ro" : "r"; + } + else fputs(EightBitToPrintForm[*p], out_fp); + } + if( ++wordcount >= 5 ) + { fprintf(out_fp, ")%s\n", command); + wordcount = 0; + } + else fprintf(out_fp, ")%s ", command); + debug0(DPO, DDD, "PrintWord returning"); +} /* end PS_PrintWord */ + + +/*****************************************************************************/ +/* */ +/* PS_PrintPlainGraphic(OBJECT x, FULL_LENGTH xmk, ymk, OBJECT z) */ +/* */ +/* Print a plain graphic object */ +/* */ +/*****************************************************************************/ + +static void PS_PrintPlainGraphic(OBJECT x, FULL_LENGTH xmk, + FULL_LENGTH ymk, OBJECT z) +{ + assert(FALSE, "PS_PrintPlainGraphic: this routine should never be called!"); +} /* end PS_PrintPlainGraphic */ + + +/*****************************************************************************/ +/* */ +/* PS_PrintUnderline(fnum, xstart, xstop, ymk) */ +/* */ +/* Draw an underline suitable for font fnum, from xstart to xstop at the */ +/* appropriate distance below mark ymk. */ +/* */ +/*****************************************************************************/ + +static void PS_PrintUnderline(FONT_NUM fnum, FULL_LENGTH xstart, + FULL_LENGTH xstop, FULL_LENGTH ymk) +{ + debug4(DPO, DD, "PrintUnderline(fnum %d, xstart %s, xstop %s, ymk %s )", + fnum, EchoLength(xstart), EchoLength(xstop), EchoLength(ymk)); + fprintf(out_fp, "%d %d %d %d ul\n", xstart, xstop, + ymk - finfo[fnum].underline_pos, finfo[fnum].underline_thick); + debug0(DPO, DD, "PrintUnderline returning."); +} /* end PS_PrintUnderline */ + + +/*****************************************************************************/ +/* */ +/* PS_CoordTranslate(xdist, ydist) */ +/* */ +/* Translate coordinate system by the given x and y distances. */ +/* */ +/*****************************************************************************/ + +static void PS_CoordTranslate(FULL_LENGTH xdist, FULL_LENGTH ydist) +{ debug2(DPO, D, "PS_CoordTranslate(%s, %s)", + EchoLength(xdist), EchoLength(ydist)); + fprintf(out_fp, "%d %d translate\n", xdist, ydist); + cpexists = FALSE; + debug0(DPO, D, "PS_CoordTranslate returning."); +} /* end PS_CoordTranslate */ + + +/*****************************************************************************/ +/* */ +/* PS_CoordRotate(amount) */ +/* */ +/* Rotate coordinate system by given amount (in internal DG units) */ +/* */ +/*****************************************************************************/ + +static void PS_CoordRotate(FULL_LENGTH amount) +{ debug1(DPO, D, "PS_CoordRotate(%.1f degrees)", (float) amount / DG); + fprintf(out_fp, "%.4f rotate\n", (float) amount / DG); + cpexists = FALSE; + debug0(DPO, D, "CoordRotate returning."); +} /* end PS_CoordRotate */ + + +/*****************************************************************************/ +/* */ +/* PS_CoordScale(ratio, dim) */ +/* */ +/* Scale coordinate system by ratio in the given dimension. */ +/* */ +/*****************************************************************************/ + +static void PS_CoordScale(float hfactor, float vfactor) +{ +#if DEBUG_ON + char buff[20]; +#endif + ifdebug(DPO, D, sprintf(buff, "%.3f, %.3f", hfactor, vfactor)); + debug1(DPO, D, "CoordScale(%s)", buff); + fprintf(out_fp, "%.4f %.4f scale\n", hfactor, vfactor); + cpexists = FALSE; + debug0(DPO, D, "CoordScale returning."); +} /* end PS_CoordScale */ + + +/*****************************************************************************/ +/* */ +/* PS_SaveGraphicState(x) */ +/* */ +/* Save current coord system on stack for later restoration. */ +/* Object x is just for error reporting, not really used at all. */ +/* */ +/*****************************************************************************/ + +static void PS_SaveGraphicState(OBJECT x) +{ debug0(DPO, D, "SaveGraphicState()"); + fprintf(out_fp, "gsave\n"); + gs_stack_top++; + if( gs_stack_top >= MAX_GS ) + Error(49, 5, "rotations, graphics etc. too deeply nested (max is %d)", + FATAL, &fpos(x), MAX_GS); + gs_stack[gs_stack_top].gs_font = currentfont; + gs_stack[gs_stack_top].gs_colour = currentcolour; + gs_stack[gs_stack_top].gs_cpexists = cpexists; + gs_stack[gs_stack_top].gs_currenty = currenty; + gs_stack[gs_stack_top].gs_xheight2 = currentxheight2; + debug0(DPO, D, "PS_SaveGraphicState returning."); +} /* end PS_SaveGraphicState */ + + +/*****************************************************************************/ +/* */ +/* PS_RestoreGraphicState() */ +/* */ +/* Restore previously saved coordinate system. NB we normally assume that */ +/* no white space is needed before any item of output, but since this */ +/* procedure is sometimes called immediately after PrintGraphicObject(), */ +/* which does not append a concluding space, we prepend one here. */ +/* */ +/*****************************************************************************/ + +void PS_RestoreGraphicState(void) +{ debug0(DPO, D, "PS_RestoreGraphicState()"); + fprintf(out_fp, "\ngrestore\n"); + currentfont = gs_stack[gs_stack_top].gs_font; + currentcolour = gs_stack[gs_stack_top].gs_colour; + cpexists = gs_stack[gs_stack_top].gs_cpexists; + currenty = gs_stack[gs_stack_top].gs_currenty; + currentxheight2 = gs_stack[gs_stack_top].gs_xheight2; + gs_stack_top--; + debug0(DPO, D, "PS_RestoreGraphicState returning."); +} /* end PS_RestoreGraphicState */ + + +/*****************************************************************************/ +/* */ +/* PS_PrintGraphicObject(x) */ +/* */ +/* Print object x on out_fp */ +/* */ +/*****************************************************************************/ + +void PS_PrintGraphicObject(OBJECT x) +{ OBJECT y, link; + debug3(DPO, D, "PS_PrintGraphicObject(%s %s %s)", + EchoFilePos(&fpos(x)), Image(type(x)), EchoObject(x)); + switch( type(x) ) + { + case WORD: + case QWORD: + + StringFPuts(string(x), out_fp); + break; + + + case ACAT: + + for( link = Down(x); link != x; link = NextDown(link) ) + { Child(y, link); + if( type(y) == GAP_OBJ ) + { + if( vspace(y) > 0 ) fputs("\n", out_fp); + else if( hspace(y) > 0 ) fputs(" ", out_fp); + } + else if( is_word(type(y)) || type(y) == ACAT ) + PS_PrintGraphicObject(y); + else if( type(y) == WIDE || is_index(type(y)) ) + { + /* ignore: @Wide, indexes are sometimes inserted by Manifest */ + } + else + { Error(49, 6, "error in left parameter of %s", + WARN, &fpos(x), KW_GRAPHIC); + debug1(DPO, D, " type(y) = %s, y =", Image(type(y))); + ifdebug(DPO, D, DebugObject(y)); + } + } + break; + + + default: + + Error(49, 7, "error in left parameter of %s", WARN, &fpos(x), KW_GRAPHIC); + debug1(DPO, D, " type(x) = %s, x =", Image(type(x))); + ifdebug(DPO, D, DebugObject(x)); + break; + + } + debug0(DPO, D, "PS_PrintGraphicObject returning"); +} /* end PS_PrintGraphicObject */ + + +/*****************************************************************************/ +/* */ +/* PS_DefineGraphicNames(x) */ +/* */ +/* Generate PostScript for xsize, ysize etc. names of graphic object. */ +/* */ +/*****************************************************************************/ + +void PS_DefineGraphicNames(OBJECT x) +{ assert( type(x) == GRAPHIC, "PrintGraphic: type(x) != GRAPHIC!" ); + debug1(DPO, D, "DefineGraphicNames( %s )", EchoObject(x)); + debug1(DPO, DD, " style = %s", EchoStyle(&save_style(x))); + + /* if font is different to previous word then print change */ + if( font(save_style(x)) != currentfont ) + { currentfont = font(save_style(x)); + if( currentfont > 0 ) + { currentxheight2 = FontHalfXHeight(currentfont); + fprintf(out_fp, "%hd %s ", FontSize(currentfont, x), + FontName(currentfont)); + } + } + + /* if colour is different to previous word then print change */ + if( colour(save_style(x)) != currentcolour ) + { currentcolour = colour(save_style(x)); + if( currentcolour > 0 ) + fprintf(out_fp, "%s ", ColourCommand(currentcolour)); + } + + /* now print the actual command that defines the names */ + fprintf(out_fp, "%d %d %d %d %d %d %d LoutGraphic\n", + size(x, COLM), size(x, ROWM), back(x, COLM), fwd(x, ROWM), + currentfont <= 0 ? 12*PT : FontSize(currentfont, x), + width(line_gap(save_style(x))), width(space_gap(save_style(x)))); + debug0(DPO, D, "PS_DefineGraphicNames returning."); +} /* end PS_DefineGraphicNames */ + + +/*****************************************************************************/ +/* */ +/* PS_SaveTranslateDefineSave(x, xdist, ydist) */ +/* */ +/* Equivalent to the sequence of calls */ +/* */ +/* SaveGraphicState(x) */ +/* CoordTranslate(xdist, ydist) */ +/* DefineGraphicNames(x) */ +/* SaveGraphicState(x) */ +/* */ +/* but generates less PostScript. */ +/* */ +/*****************************************************************************/ + +void PS_SaveTranslateDefineSave(OBJECT x, FULL_LENGTH xdist, FULL_LENGTH ydist) +{ + if( gs_stack_top >= MAX_GS - 1 || font(save_style(x)) != currentfont || + colour(save_style(x))!=currentcolour ) + { + /* do it bit by bit, will be rare anyway */ + PS_SaveGraphicState(x); + PS_CoordTranslate(xdist, ydist); + PS_DefineGraphicNames(x); + PS_SaveGraphicState(x); + } + else + { + /* no font or colour changes, no stack overflow, so can optimize */ + + /* from Save */ + gs_stack_top++; + gs_stack[gs_stack_top].gs_font = currentfont; + gs_stack[gs_stack_top].gs_colour = currentcolour; + gs_stack[gs_stack_top].gs_cpexists = cpexists; + gs_stack[gs_stack_top].gs_currenty = currenty; + gs_stack[gs_stack_top].gs_xheight2 = currentxheight2; + + /* from CoordTranslate */ + cpexists = FALSE; + + /* from Save */ + gs_stack_top++; + gs_stack[gs_stack_top].gs_font = currentfont; + gs_stack[gs_stack_top].gs_colour = currentcolour; + gs_stack[gs_stack_top].gs_cpexists = cpexists; + gs_stack[gs_stack_top].gs_currenty = currenty; + gs_stack[gs_stack_top].gs_xheight2 = currentxheight2; + + /* accumulated output from all four calls, repackaged */ + fprintf(out_fp, "%d %d %d %d %d %d %d %d %d LoutGr2\n", + size(x, COLM), size(x, ROWM), back(x, COLM), fwd(x, ROWM), + currentfont <= 0 ? 12*PT : FontSize(currentfont, x), + width(line_gap(save_style(x))), width(space_gap(save_style(x))), + xdist, ydist); + + } +} /* end PS_SaveTranslateDefineSave */ + + +/*****************************************************************************/ +/* */ +/* PS_PrintGraphicInclude(x, colmark, rowmark) */ +/* */ +/* Print graphic include file, with appropriate surrounds. This code */ +/* closely follows the PostScript Language Reference Manual, 2n ed., */ +/* pages 733-5, except we do not clip the included EPSF. */ +/* */ +/* Note to porters: Version 3.0 of the EPSF standard is not compatible */ +/* with previous versions. Thus, this output may crash your system. */ +/* If you can find out which comment line(s) are causing the trouble, */ +/* you can add to procedure strip_out to strip them out during the */ +/* file inclusion step. e.g. on my system %%EOF causes problems, so I */ +/* strip it out. */ +/* */ +/* May 1994: I've just discovered that %%Trailer causes problems for */ +/* the mpage Unix utility, so now I'm stripping it out as well. */ +/* */ +/*****************************************************************************/ +#define SKIPPING 0 +#define READING_DNR 1 +#define FINISHED 2 + +static BOOLEAN strip_out(FULL_CHAR *buff) +{ if( StringBeginsWith(buff, AsciiToFull("%%EOF")) ) return TRUE; + if( StringBeginsWith(buff, AsciiToFull("%%Trailer")) ) return TRUE; + return FALSE; +} /* end strip_out */ + +void PS_PrintGraphicInclude(OBJECT x, FULL_LENGTH colmark, FULL_LENGTH rowmark) +{ OBJECT y, full_name; FULL_CHAR buff[MAX_BUFF]; + FILE *fp; int state; BOOLEAN compressed; + debug0(DPO, D, "PS_PrintGraphicInclude(x)"); + + assert(type(x)==INCGRAPHIC || type(x)==SINCGRAPHIC, "PrintGraphicInclude!"); + assert(incgraphic_ok(x), "PrintGraphicInclude: !incgraphic_ok(x)!"); + + /* open the include file and get its full path name */ + Child(y, Down(x)); + fp = OpenIncGraphicFile(string(y), type(x), &full_name,&fpos(y),&compressed); + assert( fp != NULL, "PrintGraphicInclude: fp!" ); + + /* if font is different to previous word then print change */ + if( font(save_style(x)) != currentfont ) + { currentfont = font(save_style(x)); + currentxheight2 = FontHalfXHeight(currentfont); + fprintf(out_fp, "%hd %s\n", FontSize(currentfont,x), FontName(currentfont)); + } + + /* if colour is different to previous word then print change */ + if( colour(save_style(x)) != currentcolour ) + { currentcolour = colour(save_style(x)); + if( currentcolour > 0 ) + { + fprintf(out_fp, "%s\n", ColourCommand(currentcolour)); + } + } + + /* generate appropriate header code */ + fprintf(out_fp, "BeginEPSF\n"); + PS_CoordTranslate(colmark - back(x, COLM), rowmark - fwd(x, ROWM)); + PS_CoordScale( (float) PT, (float) PT ); + PS_CoordTranslate(-back(y, COLM), -back(y, ROWM)); + fprintf(out_fp, "%%%%BeginDocument: %s\n", string(full_name)); + + /* copy through the include file, except divert resources lines to needs */ + /* and strip out some comment lines that cause problems */ + state = (StringFGets(buff, MAX_BUFF, fp) == NULL) ? FINISHED : SKIPPING; + while( state != FINISHED ) switch(state) + { + case SKIPPING: + + if( StringBeginsWith(buff, AsciiToFull("%%DocumentNeededResources:")) && + !StringContains(buff, AsciiToFull("(atend)")) ) + { y = MakeWord(WORD, &buff[StringLength("%%DocumentNeededResources:")], + no_fpos); + Link(needs, y); + state = (StringFGets(buff,MAX_BUFF,fp)==NULL) ? FINISHED : READING_DNR; + } + else + { if( StringBeginsWith(buff, AsciiToFull("%%LanguageLevel:")) ) + Error(49, 8, "ignoring LanguageLevel comment in %s file %s", + WARN, &fpos(x), KW_INCGRAPHIC, string(full_name)); + if( StringBeginsWith(buff, AsciiToFull("%%Extensions:")) ) + Error(49, 9, "ignoring Extensions comment in %s file %s", + WARN, &fpos(x), KW_INCGRAPHIC, string(full_name)); + if( !strip_out(buff) ) StringFPuts(buff, out_fp); + state = (StringFGets(buff, MAX_BUFF, fp) == NULL) ? FINISHED : SKIPPING; + } + break; + + case READING_DNR: + + if( StringBeginsWith(buff, AsciiToFull("%%+")) ) + { x = MakeWord(WORD, &buff[StringLength(AsciiToFull("%%+"))], no_fpos); + Link(needs, x); + state = (StringFGets(buff,MAX_BUFF,fp)==NULL) ? FINISHED : READING_DNR; + } + else + { if( !strip_out(buff) ) StringFPuts(buff, out_fp); + state = (StringFGets(buff, MAX_BUFF, fp) == NULL) ? FINISHED : SKIPPING; + } + break; + } + + /* wrapup */ + DisposeObject(full_name); + fclose(fp); + if( compressed ) StringRemove(AsciiToFull(LOUT_EPS)); + fprintf(out_fp, "\n%%%%EndDocument\nEndEPSF\n"); + wordcount = 0; + debug0(DPO, D, "PS_PrintGraphicInclude returning."); +} /* end PS_PrintGraphicInclude */ + + +/*****************************************************************************/ +/* */ +/* PS_BackEnd */ +/* */ +/* The record into which all of these functions are packaged. */ +/* */ +/*****************************************************************************/ + +static struct back_end_rec ps_back = { + POSTSCRIPT, /* the code number of the back end */ + STR_POSTSCRIPT, /* string name of the back end */ + TRUE, /* TRUE if @Scale is available */ + TRUE, /* TRUE if @Rotate is available */ + TRUE, /* TRUE if @Graphic is available */ + TRUE, /* TRUE if @IncludeGraphic is avail. */ + FALSE, /* TRUE if @PlainGraphic is avail. */ + TRUE, /* TRUE if fractional spacing avail. */ + TRUE, /* TRUE if actual font metrics used */ + TRUE, /* TRUE if colour is available */ + PS_PrintInitialize, + PS_PrintLength, + PS_PrintPageSetupForFont, + PS_PrintPageResourceForFont, + PS_PrintMapping, + PS_PrintBeforeFirstPage, + PS_PrintBetweenPages, + PS_PrintAfterLastPage, + PS_PrintWord, + PS_PrintPlainGraphic, + PS_PrintUnderline, + PS_CoordTranslate, + PS_CoordRotate, + PS_CoordScale, + PS_SaveGraphicState, + PS_RestoreGraphicState, + PS_PrintGraphicObject, + PS_DefineGraphicNames, + PS_SaveTranslateDefineSave, + PS_PrintGraphicInclude, +}; + +BACK_END PS_BackEnd = &ps_back; @@ -0,0 +1,804 @@ +/*@z50.c:PDF Back End:PDF_BackEnd@********************************************/ +/* */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.22) */ +/* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */ +/* */ +/* Jeffrey H. Kingston (jeff@cs.usyd.edu.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., 59 Temple Place, Suite 330, Boston MA 02111-1307 USA */ +/* */ +/* FILE: z49.c */ +/* MODULE: PDF Back End */ +/* EXTERNS: PDF_BackEnd */ +/* */ +/*****************************************************************************/ +#include <math.h> /* for fabs() */ +#include "externs.h" + + +/*****************************************************************************/ +/* */ +/* State variables for this module */ +/* */ +/*****************************************************************************/ +#define NO_FONT 0 /* actually stolen from z37.c */ +#define NO_COLOUR 0 +#define MAX_GS 50 /* maximum depth of graphics states */ + +static FILE *out_fp; /* file to print PDF on */ + +typedef struct +{ + FONT_NUM gs_font; /* font number of this state */ + COLOUR_NUM gs_colour; /* colour number of this state */ + BOOLEAN gs_cpexists; /* TRUE if a current point exists */ + FULL_LENGTH gs_currenty; /* if cpexists, its y coordinate */ + short gs_xheight2; /* of font exists, half xheight */ +} GRAPHICS_STATE; + +static GRAPHICS_STATE gs_stack[MAX_GS];/* graphics state stack */ +static int gs_stack_top; /* top of graphics state stack */ + +static FONT_NUM currentfont; /* font of most recent atom */ +static COLOUR_NUM currentcolour; /* colour of most recent atom */ +static short currentxheight2;/* half xheight in current font */ +static BOOLEAN cpexists; /* true if a current point exists */ +static FULL_LENGTH currenty; /* if cpexists, its y coordinate */ + +static int wordcount; /* atoms printed since last newline */ +static int pagecount; /* total number of pages printed */ +static BOOLEAN prologue_done; /* TRUE after prologue is printed */ +static OBJECT needs; /* Resource needs of included EPSFs */ +static OBJECT supplied; /* Resources supplied by this file */ + + +/*****************************************************************************/ +/* */ +/* Print a number x on file fp. */ +/* */ +/*****************************************************************************/ + +#define printnum(x, fp) \ +{ char buff[20]; register int i, y; \ + if( x >= 0 ) y = x; \ + else { y = -x; putc(CH_MINUS, fp); } \ + i = 0; \ + do { buff[i++] = numtodigitchar(y % 10); \ + } while( (y = (y / 10)) > 0 ); \ + do { --i; putc(buff[i], fp); \ + } while( i ); \ +} + + +/*****************************************************************************/ +/* */ +/* PDF_PrintInitialize(FILE *fp) */ +/* */ +/* Initialize this module; fp is the output file. */ +/* */ +/*****************************************************************************/ + +static void PDF_PrintInitialize(FILE *fp) +{ + debug0(DPF, DD, "PDF_PrintInitialize(fp)"); + out_fp = fp; + prologue_done = FALSE; + gs_stack_top = -1; + currentfont = NO_FONT; + currentcolour = NO_COLOUR; + cpexists = FALSE; + wordcount = pagecount = 0; + New(needs, ACAT); + New(supplied, ACAT); + debug0(DPF, DD, "PDF_PrintInitialize returning."); +} /* end PDF_PrintInitialize */ + + +/*****************************************************************************/ +/* */ +/* void PDF_PrintLength(FULL_CHAR *buff, int length, int length_dim) */ +/* */ +/* Print a length (debugging only) */ +/* */ +/*****************************************************************************/ + +static void PDF_PrintLength(FULL_CHAR *buff, int length, int length_dim) +{ + sprintf( (char *) buff, "%.3fc", (float) length/CM); +} + + +/*****************************************************************************/ +/* */ +/* void PDF_PrintPageSetupForFont(OBJECT face, int font_curr_page, */ +/* FULL_CHAR *font_name, FULL_CHAR *first_size_str) */ +/* */ +/* Print the page setup commands required to use a font on some page: */ +/* */ +/* face The font face record, defining which font we need */ +/* font_curr_page The current page number */ +/* fp The file to print the command(s) on */ +/* font_name The name of the font */ +/* first_size_str No idea, have to check */ +/* */ +/*****************************************************************************/ + +static void PDF_PrintPageSetupForFont(OBJECT face, int font_curr_page, + FULL_CHAR *font_name, FULL_CHAR *first_size_str) +{ + fprintf(out_fp, "%%%%IncludeResource: font %s\n", font_name); + PDFFont_AddFont(out_fp, first_size_str, font_name, + MapEncodingName(font_mapping(face))); +} /* end PDF_PrintPageSetupForFont */ + + +/*****************************************************************************/ +/* */ +/* PDF_PrintPageResourceForFont(FULL_CHAR *font_name, BOOLEAN first) */ +/* */ +/* Print page resource info on file fp for font font_name; first is true */ +/* if this is the first resource on this page. */ +/* */ +/*****************************************************************************/ + +static void PDF_PrintPageResourceForFont(FULL_CHAR *font_name, BOOLEAN first) +{ + /* JK: this was always commented out */ + /* PDFWriteFontResource(out_fp, font_name); */ +} /* end PDF_PrintPageResourceForFont */ + + +/*****************************************************************************/ +/* */ +/* static void PDF_PrintMapping(MAPPING m) */ +/* */ +/* Print mapping m. */ +/* */ +/*****************************************************************************/ + +static void PDF_PrintMapping(MAPPING m) +{ MAP_VEC map = MapTable[m]; int i; + PDFFile_BeginFontEncoding(out_fp, (char*) string(map->name)); + for( i = 0; i < MAX_CHARS; i++ ) + fprintf(out_fp, "/%s%c", string(map->vector[i]), (i+1)%8 != 0 ? ' ' : '\n'); + PDFFile_EndFontEncoding(out_fp); +} /* end PDF_PrintMapping */ + + +/*****************************************************************************/ +/* */ +/* PDF_PrintBeforeFirstPage(h, v, label) */ +/* */ +/* This procedure is called just before starting to print the first */ +/* component of the output. Its size is h, v, and label is the page */ +/* label to attach to the %%Page comment. */ +/* */ +/*****************************************************************************/ + +static void PDF_PrintBeforeFirstPage(FULL_LENGTH h, FULL_LENGTH v, + FULL_CHAR *label) +{ + debug2(DPF, DD, "PrintBeforeFirst(%d, %d)", h, v); + PDFFile_Init(out_fp, h/PT, v/PT, IN, CM, PT, EM); + FontPrintPageSetup(out_fp); + PDFPage_Init(out_fp, 1.0 / PT, PT/2); + FontPrintPageResources(out_fp); /* write out font objects */ + FontAdvanceCurrentPage(); + prologue_done = TRUE; +} /* end PDF_PrintBeforeFirstPage */ + + +/*****************************************************************************/ +/* */ +/* PDF_PrintBetweenPages(h, v, label) */ +/* */ +/* Start a new output component, of size h by v; label is the page label */ +/* to attach to the %%Page comment. */ +/* */ +/*****************************************************************************/ + +static void PDF_PrintBetweenPages(FULL_LENGTH h, FULL_LENGTH v, + FULL_CHAR *label) +{ + debug2(DPF, DD, "PrintBetween(%d, %d)", h, v); + + /* write out page objects */ + PDFPage_Cleanup(out_fp); + PDFPage_Init(out_fp, 1.0 / PT, PT/2); + + /* write out font objects */ + FontPrintPageResources(out_fp); + FontPrintPageSetup(out_fp); + FontAdvanceCurrentPage(); +} /* end PDF_PrintBetweenPages */ + + +/*****************************************************************************/ +/* */ +/* KernLength(fnum, ch1, ch2, res) */ +/* */ +/* Set res to the kern length between ch1 and ch2 in font fnum, or 0 if */ +/* none. */ +/* */ +/*****************************************************************************/ + +#define KernLength(fnum, mp, ch1, ch2, res) \ +{ int ua_ch1 = mp[ch1]; \ + int ua_ch2 = mp[ch2]; \ + int i, j; \ + i = finfo[fnum].kern_table[ua_ch1], j; \ + if( i == 0 ) res = 0; \ + else \ + { FULL_CHAR *kc = finfo[fnum].kern_chars; \ + for( j = i; kc[j] > ua_ch2; j++ ); \ + res = (kc[j] == ua_ch2) ? \ + finfo[fnum].kern_sizes[finfo[fnum].kern_value[j]] : 0; \ + } \ +} /* end KernLength */ + + +/*****************************************************************************/ +/* */ +/* static void PrintComposite(COMPOSITE *cp, BOOLEAN outline, FILE *fp) */ +/* */ +/* This routine is unused in this module because it is the PostScript */ +/* version and no PDF version has been written so far. JeffK 2/5/00. */ +/* */ +/* Print composite character cp, assuming that the current point is */ +/* set to the correct origin. If outline is true, we want to print the */ +/* composite character in outline. */ +/* */ +/*****************************************************************************/ + +static void PrintComposite(COMPOSITE *cp, BOOLEAN outline, FILE *fp) +{ debug1(DPF, D, "PrintComposite(cp, %s, fp)", bool(outline)); + while( cp->char_code != '\0' ) + { + debug4(DPF, D, " cp = %d printing code %d (%d, %d)", (int) cp, + cp->char_code, cp->x_offset, cp->y_offset); + fprintf(fp, "%d %d (%c)%s ", cp->x_offset, cp->y_offset, + cp->char_code, outline ? "co" : "c"); + cp++; + } +} /* end PrintComposite */ + + +/*****************************************************************************/ +/* */ +/* PDF_PrintWord(x, hpos, vpos) */ +/* */ +/* Print non-empty word x; its marks cross at the point (hpos, vpos). */ +/* */ +/*****************************************************************************/ + +static void PDF_PrintWord(OBJECT x, int hpos, int vpos) +{ FULL_CHAR *p, *q, *a, *b, *lig, *unacc; + int ksize; char *command; MAPPING m; + unsigned short *composite; COMPOSITE *cmp; /* currently unused - JeffK */ + static int last_hpos; /* does not need to be initialised */ + static int next_hpos = -1; +#if 0 + struct metrics *fnt; +#endif + + debug6(DPF, 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++; + + /* if font is different to previous word then print change */ + if( word_font(x) != currentfont ) + { currentfont = word_font(x); + currentxheight2 = FontHalfXHeight(currentfont); + PDFFont_Set(out_fp, FontSize(currentfont, x), FontName(currentfont)); + } + + /* if colour is different to previous word then print change */ + if( word_colour(x) != currentcolour ) + { + currentcolour = word_colour(x); + if( currentcolour > 0 ) + { char str[256]; + sprintf(str, "%s ", ColourCommand(currentcolour)); + PDFPage_Write(out_fp, str); + } + } + + /* move to coordinate of x */ + debug1(DPF, DDD, " currentxheight2 = %d", currentxheight2); + vpos = vpos - currentxheight2; + if( cpexists && (currenty == vpos) && PDFHasValidTextMatrix() ) + { /* printnum(hpos, out_fp); */ + command = "s"; + + /* Note: I calculate the width of the space char here in case the + font has changed. This prevents subtle spacing errors. */ +#if 0 + fnt = finfo[currentfont].size_table; + if( (next_hpos + fnt[' '].right /* width of space char */ ) == hpos ) + command = " "; +#endif + } + else + { currenty = vpos; + /* printnum(hpos, out_fp); + fputs(" ", out_fp); + printnum(currenty, out_fp); */ + command = "m"; + cpexists = TRUE; + } + + /* convert ligature sequences into ligature characters */ + lig = finfo[word_font(x)].lig_table; + p = q = string(x); + do + { + /* check for missing glyph (lig[] == 1) or ligatures (lig[] > 1) */ + if( lig[*q++ = *p++] ) + { + if( lig[*(q-1)] == 1 ) continue; + else + { a = &lig[ lig[*(p-1)] + MAX_CHARS ]; + while( *a++ == *(p-1) ) + { b = p; + while( *a == *b && *(a+1) != '\0' && *b != '\0' ) a++, b++; + if( *(a+1) == '\0' ) + { *(q-1) = *a; + p = b; + break; + } + else + { while( *++a ); + a++; + } + } + } + } + } while( *p ); + *q = '\0'; + + switch (command[0]) + { + case 'm': + + PDFText_OpenXY(out_fp, hpos, vpos); + last_hpos = hpos; + next_hpos = hpos + fwd(x, COLM); /* fwd(x, COLM) = width of wd */ + break; + + + case 's': +#if 0 + PDFText_Open(out_fp); + PDFText_Kern(out_fp, hpos - next_hpos); +#else + PDFText_OpenX(out_fp, hpos - last_hpos); +#endif + last_hpos = hpos; + next_hpos = hpos + fwd(x, COLM); /* fwd(x, COLM) = width of wd */ + break; +#if 0 + + + case ' ': + + PDFText_Open(out_fp); +#if 1 + /* try kerning to get correct position */ + PDFText_Kern(out_fp, fnt[' '].right); +#else + PDFPage_Write(out_fp, EightBitToPrintForm[' ']); +#endif + next_hpos += fwd(x, COLM) + fnt[' '].right; /* width of space ch */ + break; +#endif + + } + + p = string(x); + PDFPage_Write(out_fp, EightBitToPrintForm[*p]); + + m = font_mapping(finfo[word_font(x)].font_table); + unacc = MapTable[m]->map[MAP_UNACCENTED]; + /* acc = MapTable[m]->map[MAP_ACCENT]; */ + for( p++; *p; p++ ) + { + /* *** this seems right but is actually wrong for PDF, + which according to Uwe uses original units for kerning + KernLength(word_font(x), unacc, *(p-1), *p, ksize); + *** */ + KernLength(font_num(finfo[word_font(x)].original_face), + unacc, *(p-1), *p, ksize); + if ( ksize != 0 ) + { + PDFText_Kern(out_fp, ksize); + } + PDFPage_Write(out_fp, EightBitToPrintForm[*p]); + } + PDFText_Close(out_fp); + + debug0(DPF, DDD, "PDF_PrintWord returning"); +} /* end PDF_PrintWord */ + + +/*****************************************************************************/ +/* */ +/* PDF_PrintPlainGraphic(OBJECT x, FULL_LENGTH xmk, ymk, OBJECT z) */ +/* */ +/* Print a plain graphic object */ +/* */ +/*****************************************************************************/ + +static void PDF_PrintPlainGraphic(OBJECT x, FULL_LENGTH xmk, + FULL_LENGTH ymk, OBJECT z) +{ + assert(FALSE, "PDF_PrintPlainGraphic: this routine should never be called!"); +} /* end PDF_PrintPlainGraphic */ + + +/*****************************************************************************/ +/* */ +/* PDF_PrintUnderline(fnum, xstart, xstop, ymk) */ +/* */ +/* Draw an underline suitable for font fnum, from xstart to xstop at the */ +/* appropriate distance below mark ymk. */ +/* */ +/*****************************************************************************/ + +static void PDF_PrintUnderline(FONT_NUM fnum, FULL_LENGTH xstart, + FULL_LENGTH xstop, FULL_LENGTH ymk) +{ + debug4(DPF, DD, "PDF_PrintUnderline(fnum %d, xstart %s, xstop %s, ymk %s )", + fnum, EchoLength(xstart), EchoLength(xstop), EchoLength(ymk)); + PDFPage_PrintUnderline(out_fp, xstart, xstop, + ymk - finfo[fnum].underline_pos, finfo[fnum].underline_thick); + debug0(DPF, DD, "PrintUnderline returning."); +} /* end PDF_PrintUnderline */ + + +/*****************************************************************************/ +/* */ +/* PDF_PrintAfterLastPage() */ +/* */ +/* Clean up this module and close output stream. */ +/* */ +/*****************************************************************************/ + +void PDF_PrintAfterLastPage(void) +{ + if( prologue_done ) + { + PDFPage_Cleanup(out_fp); /* write out page objects */ + /* MapPrintResources(out_fp); not needed */ + PDFFile_Cleanup(out_fp); + } +} /* end PDF_PrintAfterLastPage */ + + +/*****************************************************************************/ +/* */ +/* PDF_CoordTranslate(xdist, ydist) */ +/* */ +/* Translate coordinate system by the given x and y distances. */ +/* */ +/*****************************************************************************/ + +static void PDF_CoordTranslate(FULL_LENGTH xdist, FULL_LENGTH ydist) +{ debug2(DPF, D, "CoordTranslate(%s, %s)", + EchoLength(xdist), EchoLength(ydist)); + if ((xdist != 0) || (ydist != 0)) + { +#if 1 + PDFPage_Translate(out_fp, xdist, ydist); +#else + char temp_str[64]; + sprintf(temp_str, "1 0 0 1 %d %d cm\n", xdist, ydist); + PDFPage_Write(out_fp, temp_str); +#endif + } + cpexists = FALSE; + debug0(DPF, D, "PDF_CoordTranslate returning."); +} /* end PDF_CoordTranslate */ + + +/*****************************************************************************/ +/* */ +/* PDF_CoordRotate(amount) */ +/* */ +/* Rotate coordinate system by given amount (in internal DG units) */ +/* */ +/*****************************************************************************/ +#define PI 3.1415926535897931160 + +static void PDF_CoordRotate(FULL_LENGTH amount) +{ int theAmount; + debug1(DPF, D, "PDF_CoordRotate(%.1f degrees)", (float) amount / DG); + theAmount = ((amount / DG) % 360); + if( theAmount != 0 ) + PDFPage_Rotate(out_fp, (double) theAmount * (double) PI / (double) 180.0); + cpexists = FALSE; + debug0(DPF, D, "CoordRotate returning."); +} /* end PDF_CoordRotate */ + + +/*****************************************************************************/ +/* */ +/* PDF_CoordScale(ratio, dim) */ +/* */ +/* Scale coordinate system by ratio in the given dimension. */ +/* */ +/*****************************************************************************/ + +static void PDF_CoordScale(float hfactor, float vfactor) +{ +#if DEBUG_ON + char buff[20]; +#endif + ifdebug(DPF, D, sprintf(buff, "%.3f, %.3f", hfactor, vfactor)); + debug1(DPF, D, "CoordScale(%s)", buff); + if ( (fabs(hfactor - 1.0) > 0.01) || (fabs(vfactor - 1.0) > 0.01) ) + { +#if 1 + PDFPage_Scale(out_fp, hfactor, vfactor); +#else + char temp_str[64]; + sprintf(temp_str, "%.2f 0 0 %.2f 0 0 cm\n", hfactor, vfactor); + PDFPage_Write(out_fp, temp_str); +#endif + } + cpexists = FALSE; + debug0(DPF, D, "CoordScale returning."); +} /* end PDF_CoordScale */ + + +/*****************************************************************************/ +/* */ +/* PDF_SaveGraphicState(x) */ +/* */ +/* Save current coord system on stack for later restoration. */ +/* Object x is just for error reporting, not really used at all. */ +/* */ +/*****************************************************************************/ + +void PDF_SaveGraphicState(OBJECT x) +{ debug0(DPF, D, "PDF_SaveGraphicState()"); + PDFPage_Push(out_fp); + gs_stack_top++; + if( gs_stack_top >= MAX_GS ) + Error(50, 1, "rotations, graphics etc. too deeply nested (max is %d)", + FATAL, &fpos(x), MAX_GS); + gs_stack[gs_stack_top].gs_font = currentfont; + gs_stack[gs_stack_top].gs_colour = currentcolour; + gs_stack[gs_stack_top].gs_cpexists = cpexists; + gs_stack[gs_stack_top].gs_currenty = currenty; + gs_stack[gs_stack_top].gs_xheight2 = currentxheight2; + debug0(DPF, D, "PDF_SaveGraphicState returning."); +} /* end PDF_SaveGraphicState */ + + +/*****************************************************************************/ +/* */ +/* PDF_RestoreGraphicState() */ +/* */ +/* Restore previously saved coordinate system. */ +/* */ +/* The following note probably only applies to the PostScript back end */ +/* but I have not looked into this issue myself: */ +/* */ +/* NB we normally assume that */ +/* no white space is needed before any item of output, but since this */ +/* procedure is sometimes called immediately after PrintGraphicObject(), */ +/* which does not append a concluding space, we prepend one here. */ +/* */ +/*****************************************************************************/ + +void PDF_RestoreGraphicState(void) +{ debug0(DPF, D, "PDF_RestoreGraphicState()"); + PDFPage_Pop(out_fp); + currentfont = gs_stack[gs_stack_top].gs_font; + currentcolour = gs_stack[gs_stack_top].gs_colour; + cpexists = gs_stack[gs_stack_top].gs_cpexists; + currenty = gs_stack[gs_stack_top].gs_currenty; + currentxheight2 = gs_stack[gs_stack_top].gs_xheight2; + gs_stack_top--; + debug0(DPF, D, "PDF_RestoreGraphicState returning."); +} /* end PDF_RestoreGraphicState */ + + +/*****************************************************************************/ +/* */ +/* PDF_PrintGraphicObject(x) */ +/* */ +/* Print object x on out_fp */ +/* */ +/*****************************************************************************/ + +void PDF_PrintGraphicObject(OBJECT x) +{ OBJECT y, link; + debug3(DPF, D, "PDF_PrintGraphicObject(%s %s %s)", + EchoFilePos(&fpos(x)), Image(type(x)), EchoObject(x)); + switch( type(x) ) + { + case WORD: + case QWORD: + + PDFPage_WriteGraphic(out_fp, string(x)); + break; + + + case ACAT: + + for( link = Down(x); link != x; link = NextDown(link) ) + { Child(y, link); + if( type(y) == GAP_OBJ ) + { + if( vspace(y) > 0 ) PDFPage_Write(out_fp, "\n"); + else if( hspace(y) > 0 ) PDFPage_Write(out_fp, " "); + } + else if( is_word(type(y)) || type(y) == ACAT ) + PDF_PrintGraphicObject(y); + else if( type(y) == WIDE || is_index(type(y)) ) + { + /* ignore: @Wide, indexes are sometimes inserted by Manifest */ + } + else + { Error(50, 2, "error in left parameter of %s", + WARN, &fpos(x), KW_GRAPHIC); + debug1(DPF, D, " type(y) = %s, y =", Image(type(y))); + ifdebug(DPF, D, DebugObject(y)); + } + } + break; + + + default: + + Error(50, 3, "error in left parameter of %s", WARN, &fpos(x), KW_GRAPHIC); + debug1(DPF, D, " type(x) = %s, x =", Image(type(x))); + ifdebug(DPF, D, DebugObject(x)); + break; + + } + debug0(DPF, D, "PDF_PrintGraphicObject returning"); +} /* end PDF_PrintGraphicObject */ + + +/*****************************************************************************/ +/* */ +/* PDF_DefineGraphicNames(x) */ +/* */ +/* Generate PostScript for xsize, ysize etc. names of graphic object. */ +/* */ +/*****************************************************************************/ + +void PDF_DefineGraphicNames(OBJECT x) +{ assert( type(x) == GRAPHIC, "PrintGraphic: type(x) != GRAPHIC!" ); + debug1(DPF, D, "DefineGraphicNames( %s )", EchoObject(x)); + debug1(DPF, DD, " style = %s", EchoStyle(&save_style(x))); + + /* if font is different to previous word then print change */ + if( font(save_style(x)) != currentfont ) + { currentfont = font(save_style(x)); + if( currentfont > 0 ) + { currentxheight2 = FontHalfXHeight(currentfont); + PDFFont_Set(out_fp, FontSize(currentfont, x), FontName(currentfont)); + } + } + + /* if colour is different to previous word then print change */ + if( colour(save_style(x)) != currentcolour ) + { currentcolour = colour(save_style(x)); + if( currentcolour > 0 ) + { char str[256]; + sprintf(str, "%s ", ColourCommand(currentcolour)); + PDFPage_Write(out_fp, str); + } + } + + PDFPage_SetVars(size(x, COLM), size(x, ROWM), back(x, COLM), fwd(x, ROWM), + currentfont <= 0 ? 12*PT : FontSize(currentfont, x), + width(line_gap(save_style(x))), width(space_gap(save_style(x)))); + + debug0(DPF, D, "PDF_DefineGraphicNames returning."); +} /* end PDF_DefineGraphicNames */ + + +/*****************************************************************************/ +/* */ +/* PDF_SaveTranslateDefineSave(x, xdist, ydist) */ +/* */ +/* Equivalent to the sequence of calls */ +/* */ +/* SaveGraphicState(x) */ +/* CoordTranslate(xdist, ydist) */ +/* DefineGraphicNames(x) */ +/* SaveGraphicState(x) */ +/* */ +/* but offers prospects for optimization (not taken up in PDF). */ +/* */ +/*****************************************************************************/ + +void PDF_SaveTranslateDefineSave(OBJECT x, FULL_LENGTH xdist, FULL_LENGTH ydist) +{ + PDF_SaveGraphicState(x); + PDF_CoordTranslate(xdist, ydist); + PDF_DefineGraphicNames(x); + PDF_SaveGraphicState(x); +} /* end PDF_SaveTranslateDefineSave */ + + +/*****************************************************************************/ +/* */ +/* PDF_PrintGraphicInclude(x, colmark, rowmark) */ +/* */ +/* Print graphic include file, with appropriate surrounds. */ +/* */ +/*****************************************************************************/ + +void PDF_PrintGraphicInclude(OBJECT x, FULL_LENGTH colmark, FULL_LENGTH rowmark) +{ OBJECT y; + debug0(DPF, D, "PDF_PrintGraphicInclude(x)"); + Child(y, Down(x)); + Error(50, 4, "cannot include EPS file in PDF output; EPS file %s ignored", + WARN, &fpos(x), string(y)); + debug0(DPF, D, "PDF_PrintGraphicInclude returning."); +} /* end PDF_PrintGraphicInclude */ + + +/*****************************************************************************/ +/* */ +/* PDF_BackEnd */ +/* */ +/* The record into which all of these functions are packaged. */ +/* */ +/*****************************************************************************/ + +static struct back_end_rec pdf_back = { + PDF, /* the code number of the back end */ + STR_PDF, /* string name of the back end */ + TRUE, /* TRUE if @Scale is available */ + TRUE, /* TRUE if @Rotate is available */ + TRUE, /* TRUE if @Graphic is available */ + TRUE, /* TRUE if @IncludeGraphic is avail. */ + FALSE, /* TRUE if @PlainGraphic is avail. */ + TRUE, /* TRUE if fractional spacing avail. */ + TRUE, /* TRUE if actual font metrics used */ + TRUE, /* TRUE if colour is available */ + PDF_PrintInitialize, + PDF_PrintLength, + PDF_PrintPageSetupForFont, + PDF_PrintPageResourceForFont, + PDF_PrintMapping, + PDF_PrintBeforeFirstPage, + PDF_PrintBetweenPages, + PDF_PrintAfterLastPage, + PDF_PrintWord, + PDF_PrintPlainGraphic, + PDF_PrintUnderline, + PDF_CoordTranslate, + PDF_CoordRotate, + PDF_CoordScale, + PDF_SaveGraphicState, + PDF_RestoreGraphicState, + PDF_PrintGraphicObject, + PDF_DefineGraphicNames, + PDF_SaveTranslateDefineSave, + PDF_PrintGraphicInclude, +}; + +BACK_END PDF_BackEnd = &pdf_back; @@ -0,0 +1,586 @@ +/*@z51.c:Plain Text Back End:Plain_BackEnd@***********************************/ +/* */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.22) */ +/* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */ +/* */ +/* Jeffrey H. Kingston (jeff@cs.usyd.edu.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., 59 Temple Place, Suite 330, Boston MA 02111-1307 USA */ +/* */ +/* FILE: z49.c */ +/* MODULE: PostScript Back End */ +/* EXTERNS: PS_BackEnd */ +/* */ +/*****************************************************************************/ +#include "externs.h" + + +/*****************************************************************************/ +/* */ +/* PlainCharWidth the width of each character */ +/* PlainCharHeight the height of each character */ +/* PlainFormFeed TRUE if components to be separated by \f. */ +/* */ +/*****************************************************************************/ + +FULL_LENGTH PlainCharWidth, PlainCharHeight; +BOOLEAN PlainFormFeed; + +/*****************************************************************************/ +/* */ +/* State variables for this module */ +/* */ +/*****************************************************************************/ + +static FILE *out_fp; /* file to print output on */ +static int hsize; /* horizontal size of page in chars */ +static int vsize; /* vertical size of page in chars */ +static FULL_CHAR *page; /* the page (two-dim array of chars) */ +static BOOLEAN prologue_done; /* TRUE after prologue is printed */ + + +/*****************************************************************************/ +/* */ +/* void Plain_PrintInitialize(fp) */ +/* */ +/* Initialize this module; fp is the output file. */ +/* */ +/*****************************************************************************/ + +void Plain_PrintInitialize(FILE *fp) +{ + debug0(DPT, DD, "Plain_PrintInitialize(fp)"); + out_fp = fp; + prologue_done = FALSE; + debug0(DPT, DD, "Plain_PrintInitialize returning."); +} /* end Plain_PrintInitialize */ + + +/*****************************************************************************/ +/* */ +/* void Plain_PrintLength(FULL_CHAR *buff, int length, int length_dim) */ +/* */ +/* Print a length (debugging only) */ +/* */ +/*****************************************************************************/ + +static void Plain_PrintLength(FULL_CHAR *buff, int length, int length_dim) +{ + if( length_dim == COLM ) + { + sprintf( (char *) buff, "%.2fs", (float) length/PlainCharWidth); + } + else + { + sprintf( (char *) buff, "%.2ff", (float) length/PlainCharHeight); + } +} + + +/*****************************************************************************/ +/* */ +/* void Plain_PrintPageSetupForFont(OBJECT face, int font_curr_page, */ +/* FULL_CHAR *font_name, FULL_CHAR *first_size_str) */ +/* */ +/* Print the page setup commands required to use a font on some page: */ +/* */ +/* face The font face record, defining which font we need */ +/* font_curr_page The current page number */ +/* font_name The name of the font */ +/* first_size_str No idea, have to check */ +/* */ +/*****************************************************************************/ + +static void Plain_PrintPageSetupForFont(OBJECT face, int font_curr_page, + FULL_CHAR *font_name, FULL_CHAR *first_size_str) +{ + /* nothing to do here */ + +} /* end Plain_PrintPageSetupForFont */ + + +/*****************************************************************************/ +/* */ +/* void Plain_PrintPageResourceForFont(FULL_CHAR *font_name, BOOLEAN first) */ +/* BOOLEAN first) */ +/* */ +/* Print page resource info on file fp for font font_name; first is true */ +/* if this is the first resource on this page. */ +/* */ +/*****************************************************************************/ + +static void Plain_PrintPageResourceForFont(FULL_CHAR *font_name, BOOLEAN first) +{ + /* nothing to do here */ + +} /* end Plain_PrintPageResourceForFont */ + + +/*****************************************************************************/ +/* */ +/* static void Plain_PrintMapping(MAPPING m) */ +/* */ +/* Print mapping m. */ +/* */ +/*****************************************************************************/ + +static void Plain_PrintMapping(MAPPING m) +{ + /* nothing to do here */ + +} /* end Plain_PrintMapping */ + + +/*****************************************************************************/ +/* */ +/* void Plain_PrintBeforeFirstPage(h, v, label) */ +/* */ +/* This procedure is called just before starting to print the first */ +/* component of the output. Its size is h, v, and label is the page label. */ +/* */ +/*****************************************************************************/ + +static void Plain_PrintBeforeFirstPage(FULL_LENGTH h, FULL_LENGTH v, + FULL_CHAR *label) +{ int i, j; + debug2(DPT, DD, "PrintBeforeFirst(%d, %d)", h, v); + + /* get a new page[] and clear it */ + hsize = ceiling(h, PlainCharWidth); + vsize = ceiling(v, PlainCharHeight); + debug2(DPT, DD, " PlainCharWidth: %d; PlainCharHeight: %d", + PlainCharWidth, PlainCharHeight); + ifdebug(DMA, D, DebugRegisterUsage(MEM_PAGES, 1, + hsize * vsize * sizeof(FULL_CHAR))); + debug2(DPT, DD, " PrintBeforeFirst allocating %d by %d", hsize, vsize); + page = (FULL_CHAR *) malloc(hsize * vsize * sizeof(FULL_CHAR)); + for( i = 0; i < vsize; i++ ) + for( j = 0; j < hsize; j++ ) + page[i*hsize + j] = ' '; + prologue_done = TRUE; +} /* end Plain_PrintBeforeFirstPage */ + + +/*****************************************************************************/ +/* */ +/* void Plain_PrintBetweenPages(h, v, label) */ +/* */ +/* Start a new output component, of size h by v; label is the page label */ +/* to attach to the %%Page comment. */ +/* */ +/*****************************************************************************/ + +static void Plain_PrintBetweenPages(FULL_LENGTH h, FULL_LENGTH v, + FULL_CHAR *label) +{ int new_hsize, new_vsize, i, j, jmax; + debug2(DPT, DD, "PrintBetween(%d, %d)", h, v); + + /* print the page that has just ended */ + ifdebug(DPT, D, + putc('+', out_fp); + for( j = 0; j < hsize; j++ ) putc('-', out_fp); + putc('+', out_fp); + putc('\n', out_fp); + ); + for( i = vsize - 1; i >= 0; i-- ) + { ifdebug(DPT, D, putc('|', out_fp)); + for( jmax = hsize-1; jmax >= 0 && page[i*hsize+jmax] == ' '; jmax--); + ifdebug(DPT, D, jmax = hsize - 1); + for( j = 0; j <= jmax; j++ ) + putc(page[i*hsize + j], out_fp); + ifdebug(DPT, D, putc('|', out_fp)); + putc('\n', out_fp); + } + ifdebug(DPT, D, + putc('+', out_fp); + for( j = 0; j < hsize; j++ ) putc('-', out_fp); + putc('+', out_fp); + putc('\n', out_fp); + ); + + /* separate the page from the next one with a form-feed if required */ + if( PlainFormFeed ) putc('\f', out_fp); + + /* if page size has changed, get a new page[] array */ + new_hsize = ceiling(h, PlainCharWidth); + new_vsize = ceiling(v, PlainCharHeight); + if( new_hsize != hsize || new_vsize != vsize ) + { + ifdebug(DMA, D, DebugRegisterUsage(MEM_PAGES, -1, + -hsize * vsize * sizeof(FULL_CHAR))); + free(page); + hsize = new_hsize; + vsize = new_vsize; + debug2(DPT, DD, " PrintBetween allocating %d by %d", hsize, vsize); + ifdebug(DPT, D, DebugRegisterUsage(MEM_PAGES, 1, + hsize * vsize * sizeof(FULL_CHAR))); + page = (FULL_CHAR *) malloc(hsize * vsize * sizeof(FULL_CHAR)); + } + + /* clear page[] for the new page just beginning */ + for( i = 0; i < vsize; i++ ) + for( j = 0; j < hsize; j++ ) + page[i*hsize + j] = ' '; +} /* end Plain_PrintBetweenPges */ + + +/*****************************************************************************/ +/* */ +/* Plain_PrintWord(x, hpos, vpos) */ +/* */ +/* Print non-empty word x; its marks cross at the point (hpos, vpos). */ +/* */ +/*****************************************************************************/ + +static void Plain_PrintWord(OBJECT x, int hpos, int vpos) +{ FULL_CHAR *p; int i, h, v; + + debug6(DPT, DD, "Plain_PrintWord( %s, %d, %d ) font %d colour %d%s", + string(x), hpos, vpos, word_font(x), word_colour(x), + word_outline(x) ? " outline" : ""); + TotalWordCount++; + + h = ((float) hpos / PlainCharWidth) + 0.5; + v = ((float) vpos / PlainCharHeight); + debug3(DPT, DD, "PrintWord(%s at h = %d, v = %d)", string(x), h, v); + if( h >= 0 && h + StringLength(string(x)) < hsize && v >= 0 && v < vsize ) + { + assert( h >= 0, "PrintWord: h < 0!" ); + assert( h < hsize, "PrintWord: h >= hsize!" ); + assert( v >= 0, "PrintWord: v < 0!" ); + assert( v < vsize, "PrintWord: v >= vsize!" ); + p = &page[v*hsize + h]; + for( i = 0; string(x)[i] != '\0'; i++ ) + *p++ = string(x)[i]; + } + else + Error(51, 1, "word %s deleted (internal error, off page at %d,%d)", + WARN, &fpos(x), string(x), h, v); + debug0(DPT, DDD, "PrintWord returning"); +} /* end Plain_PrintWord */ + + +/*****************************************************************************/ +/* */ +/* Plain_PrintPlainGraphic(x, xmk, ymk, z) */ +/* */ +/* Print plain graphic object x at xmk, ymk with the size of z. */ +/* */ +/*****************************************************************************/ + +static void Plain_PrintPlainGraphic(OBJECT x, FULL_LENGTH xmk, + FULL_LENGTH ymk, OBJECT z) +{ int i, len, starth, startv, stoph, stopv, h, v; + debug2(DPT, D, "Plain_PrintPlainGraphic(x, xmk %s, ymk %s)", + EchoLength(xmk), EchoLength(ymk)); + + if( type(x) != WORD && type(x) != QWORD ) + { + Error(51, 2, "left parameter of %s must be a simple word", + WARN, &fpos(x), KW_PLAINGRAPHIC); + return; + } + len = StringLength(string(x)); + if( StringLength(string(x)) == 0 ) + { + Error(51, 3, "left parameter of %s must be a non-empty word", + WARN, &fpos(x), KW_PLAINGRAPHIC); + return; + } + starth = (((float) xmk ) / PlainCharWidth) + 0.5; + startv = (((float) ymk ) / PlainCharHeight); + stoph = (((float) xmk + size(z, COLM)) / PlainCharWidth) + 0.5; + stopv = (((float) ymk - size(z, ROWM)) / PlainCharHeight); /* NB - not + */ + SetLengthDim(COLM); + debug5(DPT, D, " xmk %s bk %s fwd %s -> %d,%d", + EchoLength(xmk), EchoLength(back(z, COLM)), EchoLength(fwd(z, COLM)), + starth, stoph); + SetLengthDim(ROWM); + debug5(DPT, D, " ymk %s bk %s fwd %s -> %d,%d", + EchoLength(ymk), EchoLength(back(z, ROWM)), EchoLength(fwd(z, ROWM)), + startv, stopv); + if( starth >= 0 && stoph < hsize && startv >= 0 && stopv < vsize ) + { i = 0; + for( v = startv-1; v >= stopv; v-- ) + { + for( h = starth; h < stoph; h++ ) + { + if( i == len ) i = 0; + page[v*hsize + h] = string(x)[i++]; + } + } + } + else + { + Error(51, 4, "fill %s deleted (internal error, off page at %d,%d)", + WARN, &fpos(x), string(x), h, v); + } +} /* end Plain_PrintPlainGraphic */ + + +/*****************************************************************************/ +/* */ +/* Plain_PrintUnderline(fnum, xstart, xstop, ymk) */ +/* */ +/* Draw an underline suitable for font fnum, from xstart to xstop at the */ +/* appropriate distance below mark ymk. */ +/* */ +/*****************************************************************************/ + +static void Plain_PrintUnderline(FONT_NUM fnum, FULL_LENGTH xstart, + FULL_LENGTH xstop, FULL_LENGTH ymk) +{ + + debug4(DPT, DD, "Plain_PrintUnderline(fnum %d, xstart %s, xstop %s, ymk %s )", + fnum, EchoLength(xstart), EchoLength(xstop), EchoLength(ymk)); + + /* do nothing */ + + debug0(DPT, DD, "PrintUnderline returning."); +} /* end Plain_PrintUnderline */ + + +/*****************************************************************************/ +/* */ +/* Plain_PrintAfterLastPage() */ +/* */ +/* Clean up this module and close output stream. */ +/* */ +/*****************************************************************************/ + +static void Plain_PrintAfterLastPage(void) +{ int i, j, jmax; + if( prologue_done ) + { + /* print the page that has just ended (exists since prologue_done) */ + ifdebug(DPT, D, + putc('+', out_fp); + for( j = 0; j < hsize; j++ ) putc('-', out_fp); + putc('+', out_fp); + putc('\n', out_fp); + ); + for( i = vsize - 1; i >= 0; i-- ) + { ifdebug(DPT, D, putc('|', out_fp)); + for( jmax = hsize-1; jmax >= 0 && page[i*hsize+jmax] == ' '; jmax--); + ifdebug(DPT, D, jmax = hsize - 1); + for( j = 0; j <= jmax; j++ ) + putc(page[i*hsize + j], out_fp); + ifdebug(DPT, D, putc('|', out_fp)); + putc('\n', out_fp); + } + ifdebug(DPT, D, + putc('+', out_fp); + for( j = 0; j < hsize; j++ ) putc('-', out_fp); + putc('+', out_fp); + putc('\n', out_fp); + ); + } +} /* end Plain_PrintAfterLastPage */ + + +/*****************************************************************************/ +/* */ +/* Plain_CoordTranslate(xdist, ydist) */ +/* */ +/* Translate coordinate system by the given x and y distances. */ +/* */ +/*****************************************************************************/ + +void Plain_CoordTranslate(FULL_LENGTH xdist, FULL_LENGTH ydist) +{ debug2(DPT, D, "Plain_CoordTranslate(%s, %s)", + EchoLength(xdist), EchoLength(ydist)); + assert(FALSE, "Plain_CoordTranslate: should never be called!"); + debug0(DPT, D, "Plain_CoordTranslate returning."); +} /* end Plain_CoordTranslate */ + + +/*****************************************************************************/ +/* */ +/* Plain_CoordRotate(amount) */ +/* */ +/* Rotate coordinate system by given amount (in internal DG units) */ +/* */ +/*****************************************************************************/ + +static void Plain_CoordRotate(FULL_LENGTH amount) +{ debug1(DPT, D, "Plain_CoordRotate(%.1f degrees)", (float) amount / DG); + assert(FALSE, "Plain_CoordRotate: should never be called!"); + debug0(DPT, D, "Plain_CoordRotate returning."); +} /* end Plain_CoordRotate */ + + +/*****************************************************************************/ +/* */ +/* Plain_CoordScale(ratio, dim) */ +/* */ +/* Scale coordinate system by ratio in the given dimension. */ +/* */ +/*****************************************************************************/ + +void Plain_CoordScale(float hfactor, float vfactor) +{ + assert(FALSE, "Plain_CoordScale: should never be called!"); +} /* end Plain_CoordScale */ + + +/*****************************************************************************/ +/* */ +/* Plain_SaveGraphicState(x) */ +/* */ +/* Save current coord system on stack for later restoration. */ +/* Object x is just for error reporting, not really used at all. */ +/* */ +/*****************************************************************************/ + +void Plain_SaveGraphicState(OBJECT x) +{ debug0(DPT, D, "Plain_SaveGraphicState()"); + assert(FALSE, "Plain_SaveGraphicState: should never be called!" ); + debug0(DPT, D, "Plain_SaveGraphicState returning."); +} /* end Plain_SaveGraphicState */ + + +/*****************************************************************************/ +/* */ +/* Plain_RestoreGraphicState() */ +/* */ +/* Restore previously saved coordinate system. */ +/* */ +/*****************************************************************************/ + +void Plain_RestoreGraphicState(void) +{ debug0(DPT, D, "Plain_RestoreGraphicState()"); + assert(FALSE, "Plain_RestoreGraphicState: should never be called!" ); + debug0(DPT, D, "Plain_RestoreGraphicState returning."); +} /* end Plain_RestoreGraphicState */ + + +/*****************************************************************************/ +/* */ +/* Plain_PrintGraphicObject(x) */ +/* */ +/* Print object x on out_fp */ +/* */ +/*****************************************************************************/ + +void Plain_PrintGraphicObject(OBJECT x) +{ + debug3(DPT, D, "Plain_PrintGraphicObject(%s %s %s)", + EchoFilePos(&fpos(x)), Image(type(x)), EchoObject(x)); + assert(FALSE, "Plain_PrintGraphicObject: should never be called!" ); + debug0(DPT, D, "Plain_PrintGraphicObject returning"); +} /* end Plain_PrintGraphicObject */ + + +/*****************************************************************************/ +/* */ +/* Plain_DefineGraphicNames(x) */ +/* */ +/* Generate PostScript for xsize, ysize etc. names of graphic object. */ +/* */ +/*****************************************************************************/ + +void Plain_DefineGraphicNames(OBJECT x) +{ + debug1(DPT, D, "Plain_DefineGraphicNames( %s )", EchoObject(x)); + debug1(DPT, DD, " style = %s", EchoStyle(&save_style(x))); + assert(FALSE, "Plain_DefineGraphicNames: should never be called!" ); + debug0(DPT, D, "Plain_DefineGraphicNames returning."); +} /* end Plain_DefineGraphicNames */ + + +/*****************************************************************************/ +/* */ +/* Plain_SaveTranslateDefineSave(x, xdist, ydist) */ +/* */ +/* Equivalent to the sequence of calls */ +/* */ +/* SaveGraphicState(x) */ +/* CoordTranslate(xdist, ydist) */ +/* DefineGraphicNames(x) */ +/* SaveGraphicState(x) */ +/* */ +/* but offers opportunities for optimization. */ +/* */ +/*****************************************************************************/ + +void Plain_SaveTranslateDefineSave(OBJECT x, FULL_LENGTH xdist, + FULL_LENGTH ydist) +{ + assert(FALSE, "Plain_SaveTranslateDefineSave: should never be called!" ); +} /* end Plain_SaveTranslateDefineSave */ + + +/*****************************************************************************/ +/* */ +/* Plain_PrintGraphicInclude(x, colmark, rowmark) */ +/* */ +/* Print graphic include file, with appropriate surrounds. */ +/* */ +/*****************************************************************************/ + +void Plain_PrintGraphicInclude(OBJECT x, FULL_LENGTH colmark, + FULL_LENGTH rowmark) +{ + debug0(DPT, D, "Plain_PrintGraphicInclude(x)"); + assert(FALSE, "Plain_PrintGraphicInclude: should never be called!" ); + debug0(DPT, D, "Plain_PrintGraphicInclude returning."); +} /* end Plain_PrintGraphicInclude */ + + +/*****************************************************************************/ +/* */ +/* Plain_BackEnd */ +/* */ +/* The record into which all of these functions are packaged. */ +/* */ +/*****************************************************************************/ + +static struct back_end_rec plain_back = { + PLAINTEXT, /* the code number of the back end */ + STR_PLAINTEXT, /* string name of the back end */ + FALSE, /* TRUE if @Scale is available */ + FALSE, /* TRUE if @Rotate is available */ + FALSE, /* TRUE if @Graphic is available */ + FALSE, /* TRUE if @IncludeGraphic is avail. */ + TRUE, /* TRUE if @PlainGraphic is avail. */ + FALSE, /* TRUE if fractional spacing avail. */ + FALSE, /* TRUE if actual font metrics used */ + FALSE, /* TRUE if colour is available */ + Plain_PrintInitialize, + Plain_PrintLength, + Plain_PrintPageSetupForFont, + Plain_PrintPageResourceForFont, + Plain_PrintMapping, + Plain_PrintBeforeFirstPage, + Plain_PrintBetweenPages, + Plain_PrintAfterLastPage, + Plain_PrintWord, + Plain_PrintPlainGraphic, + Plain_PrintUnderline, + Plain_CoordTranslate, + Plain_CoordRotate, + Plain_CoordScale, + Plain_SaveGraphicState, + Plain_RestoreGraphicState, + Plain_PrintGraphicObject, + Plain_DefineGraphicNames, + Plain_SaveTranslateDefineSave, + Plain_PrintGraphicInclude, +}; + +BACK_END Plain_BackEnd = &plain_back; |