diff -u --recursive --new-file -u --recursive --new-file lout-3.26/README lout-3.27/README --- lout-3.26/README Wed Oct 16 09:30:34 2002 +++ lout-3.27/README Fri Nov 22 08:51:50 2002 @@ -1,5 +1,5 @@ -THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.26) -BASSER LOUT VERSION 3 COPYRIGHT (C) 1994, 2001 Jeffrey H. Kingston +THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.27) +BASSER LOUT VERSION 3 COPYRIGHT (C) 1994, 2002 Jeffrey H. Kingston Jeffrey H. Kingston School of Information Technologies @@ -37,21 +37,21 @@ locale Locale-specific error messages man Lout and prg2lout manual entries maps Lout Character Mapping (LCM) files - setup Lout setup files (in Lout) software Information about Lout-related software from elsewhere and the following files: - READMEPDF A description of the PDF back end blurb A news blurb describing Lout blurb.short A short news blurb describing Lout - prg2lout.c prg2lout source code (all in one file) externs.h z*.c Lout source code gnu.gpl A copy of the GNU General Public License - makefile A makefile for installing Lout maillist Information about a public mailing list about Lout - notes.dsc Notes on the degree of Lout's conformance with the + makefile A makefile for installing Lout + notes_dsc Notes on the degree of Lout's conformance with the PostScript Document Structuring Conventions + prg2lout.c prg2lout source code (all in one file) + README This file + READMEPDF A description of the PDF back end whatsnew A brief informal update on recent changes See the makefile for installation instructions. diff -u --recursive --new-file -u --recursive --new-file lout-3.26/blurb lout-3.27/blurb --- lout-3.26/blurb Wed Oct 16 09:09:04 2002 +++ lout-3.27/blurb Fri Nov 22 08:46:25 2002 @@ -1,7 +1,7 @@ - THE LOUT DOCUMENT FORMATTING SYSTEM, VERSION 3.26 + THE LOUT DOCUMENT FORMATTING SYSTEM, VERSION 3.27 -Version 3.26 of the Lout document formatting system is now available +Version 3.27 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 @@ Lout is written in highly portable ANSI C. It is distributed under the GNU public license as follows: - ftp://ftp.it.usyd.edu.au/jeff/lout/lout-3.26.tar.gz + ftp://ftp.it.usyd.edu.au/jeff/lout/lout-3.27.tar.gz -In other words, in a gzipped tar file called "lout-3.26.tar.gz" in the +In other words, in a gzipped tar file called "lout-3.27.tar.gz" in the "jeff/lout" subdirectory of the home directory of "ftp ftp.it.usyd.edu.au" with login name "ftp" or "anonymous" using any non-empty password. The distribution contains @@ -44,7 +44,7 @@ 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.it.usyd.edu.au/jeff/lout/lout-3.26.user.ps.gz + ftp://ftp.it.usyd.edu.au/jeff/lout/lout-3.27.user.ps.gz Lout was designed and implemented by Jeffrey H. Kingston (jeff@it.usyd.edu.au) of the School of Information Technologies (formerly Basser Department of diff -u --recursive --new-file -u --recursive --new-file lout-3.26/data/standard.ld lout-3.27/data/standard.ld --- lout-3.26/data/standard.ld Wed Sep 18 12:22:39 2002 +++ lout-3.27/data/standard.ld Tue Nov 19 18:26:17 2002 @@ -551,6 +551,30 @@ } } +{ glossary @Word @CurrLang @Case { + Croatian @Yield { ?? } + Czech @Yield { ?? } + Danish @Yield { ?? } + Dutch @Yield { ?? } + English @Yield { Glossary } + EnglishUK @Yield { Glossary } + Finnish @Yield { ?? } + French @Yield { ?? } + German @Yield { Glossar } + Hungarian @Yield { ?? } + Italian @Yield { ?? } + Norwegian @Yield { ?? } + Polish @Yield { ?? } + Portuguese @Yield { ?? } + Russian @Yield { ?? } + Slovak @Yield { ?? } + Slovenian @Yield { ?? } + Spanish @Yield { ?? } + Swedish @Yield { ?? } + UpperSorbian @Yield { ?? } + } +} + { index @Word @CurrLang @Case { Croatian @Yield { Indeks } Czech @Yield { Rejst{@Char rcaron}{@Char iacute}k } diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/README lout-3.27/doc/README --- lout-3.26/doc/README Wed Oct 16 09:06:16 2002 +++ lout-3.27/doc/README Fri Nov 22 09:40:01 2002 @@ -15,4 +15,4 @@ user A User's Guide to the Lout Document Formatting System Jeffrey H. Kingston -16 October 2002 +222 November 2002 diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/design/README lout-3.27/doc/design/README --- lout-3.26/doc/design/README Wed Oct 16 09:03:26 2002 +++ lout-3.27/doc/design/README Fri Nov 22 08:56:20 2002 @@ -22,4 +22,4 @@ produce one or two benign ones). Jeffrey H. Kingston -16 October 2002 +22 November 2002 diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/design/outfile.ps lout-3.27/doc/design/outfile.ps --- lout-3.26/doc/design/outfile.ps Wed Oct 16 08:59:05 2002 +++ lout-3.27/doc/design/outfile.ps Fri Nov 22 09:07:36 2002 @@ -1,6 +1,6 @@ %!PS-Adobe-3.0 -%%Creator: Basser Lout Version 3.26 (October 2002) -%%CreationDate: Wed Oct 16 08:59:04 2002 +%%Creator: Basser Lout Version 3.27 (November 2002) +%%CreationDate: Fri Nov 22 09:07:35 2002 %%DocumentData: Binary %%DocumentNeededResources: (atend) %%DocumentSuppliedResources: (atend) @@ -10,7 +10,6 @@ %%Pages: (atend) %%BoundingBox: 0 0 595 842 %%EndComments - %%BeginProlog %%BeginResource: procset LoutStartUp /save_cp { currentpoint /cp_y exch def /cp_x exch def } def @@ -86,6 +85,155 @@ PreEPSF_state restore end % userdict } bind def + +% Find current texture (may be null) +% - LoutCurrentP p +/LoutCurrentP +{ + currentcolorspace + 0 get /Pattern eq + { + [ currentcolor ] + dup length 1 sub get + } + { + null + } ifelse +} def + +% Find current color and color space +% - LoutCurrentCCS c cs +/LoutCurrentCCS +{ + LoutCurrentP dup null eq + { + pop [ currentcolor ] + currentcolorspace + } + { + dup + /UnderlyingColor get + exch /UnderlyingColorSpace get + } ifelse +} def + +% Install c, cs, and (a copy of) p into graphics state +% c cs p LoutSetCCSP - +/LoutSetCCSP +{ + dup null eq + { + pop setcolorspace + aload pop setcolor + } + { + % copy pattern dictionary + 12 dict copy + + % record cs and c in p + dup /UnderlyingColorSpace 3 index + put + dup /UnderlyingColor 4 index + put + + % do setcolorspace and setcolor + dup /PaintType get 1 eq + { + [ /Pattern ] setcolorspace + setcolor + pop pop + } + { + [ /Pattern + 4 -1 roll + ] setcolorspace + exch aload length 1 add + -1 roll + setcolor + } ifelse + } ifelse +} def + +% num LoutSetGray - +/LoutSetGray +{ + [ 2 1 roll ] + [ /DeviceGray ] + LoutCurrentP + LoutSetCCSP +} def + +% r g b LoutSetRGBColor - +/LoutSetRGBColor +{ + [ 4 1 roll ] + [ /DeviceRGB ] + LoutCurrentP + LoutSetCCSP +} def + +% h s b LoutSetHSBColor - +/LoutSetHSBColor +{ + gsave sethsbcolor + currentrgbcolor grestore + LoutSetRGBColor +} def + +% c m y k LoutSetRGBColor - +/LoutSetCMYKColor +{ + [ 5 1 roll ] + [ /DeviceCMYK ] + LoutCurrentP + LoutSetCCSP +} def + +% p LoutSetTexture - +/LoutSetTexture +{ + LoutCurrentCCS + 3 -1 roll + LoutSetCCSP +} def + +% +% LoutMakeTexture p +/LoutMakeTexture +{ + 12 dict begin + /PaintProc exch def + /YStep exch def + /XStep exch def + /BBox exch def + /PaintType exch def + /PatternType 1 def + /TilingType 1 def + currentdict end + 7 1 roll + matrix translate + 5 1 roll + matrix rotate + 4 1 roll + matrix scale + exch dup matrix scale + matrix concatmatrix + matrix concatmatrix + matrix concatmatrix + /makepattern where + { + pop makepattern + } + { + pop pop null + } ifelse +} def + +/LoutTextureSolid +{ + null + LoutSetTexture +} def %%EndResource %%BeginResource: procset LoutTabPrependGraphic @@ -212,6 +360,10 @@ % PostScript @SysPrependGraphic file for @Fig Jeffrey H. Kingston % % Version 2.0 (includes CIRCUM label) January 1992 % % % +% Although Fig is now obsolete I have updated it 20 October 2002 % +% to work with textures, i.e. replacing setrgbcolor with % +% LoutSetRGBColor. % +% % % To assist in avoiding name clashes, the names of all symbols % % defined here begin with "lfig". However, this is not feasible % % with user-defined labels and some labels used by users. % @@ -358,34 +510,34 @@ } def % painting (i.e. filling): - lfigwhite - (etc.) -/lfignopaint { } def -/lfignochange { fill } def -/lfigdarkblue { 0.0 0.0 0.5 setrgbcolor fill } def -/lfigblue { 0.0 0.0 1.0 setrgbcolor fill } def -/lfiglightblue { 0.5 0.5 1.0 setrgbcolor fill } def -/lfigdarkgreen { 0.0 0.5 0.0 setrgbcolor fill } def -/lfiggreen { 0.0 1.0 0.0 setrgbcolor fill } def -/lfiglightgreen { 0.5 1.0 0.5 setrgbcolor fill } def -/lfigdarkred { 0.5 0.0 0.0 setrgbcolor fill } def -/lfigred { 1.0 0.0 0.0 setrgbcolor fill } def -/lfiglightred { 1.0 0.5 0.5 setrgbcolor fill } def -/lfigdarkcyan { 0.0 0.5 0.5 setrgbcolor fill } def -/lfigcyan { 0.0 1.0 1.0 setrgbcolor fill } def -/lfiglightcyan { 0.5 1.0 1.0 setrgbcolor fill } def -/lfigdarkmagenta { 0.5 0.0 0.5 setrgbcolor fill } def -/lfigmagenta { 1.0 0.0 1.0 setrgbcolor fill } def -/lfiglightmagenta { 1.0 0.5 1.0 setrgbcolor fill } def -/lfigdarkyellow { 0.5 0.5 0.0 setrgbcolor fill } def -/lfigyellow { 1.0 1.0 0.0 setrgbcolor fill } def -/lfiglightyellow { 1.0 1.0 0.5 setrgbcolor fill } def -/lfigdarkgray { 0.2 0.2 0.2 setrgbcolor fill } def -/lfiggray { 0.5 0.5 0.5 setrgbcolor fill } def -/lfiglightgray { 0.8 0.8 0.8 setrgbcolor fill } def -/lfigdarkgrey { 0.2 0.2 0.2 setrgbcolor fill } def -/lfiggrey { 0.5 0.5 0.5 setrgbcolor fill } def -/lfiglightgrey { 0.8 0.8 0.8 setrgbcolor fill } def -/lfigblack { 0.0 0.0 0.0 setrgbcolor fill } def -/lfigwhite { 1.0 1.0 1.0 setrgbcolor fill } def +/lfignopaint { } def +/lfignochange { fill } def +/lfigdarkblue { 0.0 0.0 0.5 LoutSetRGBColor fill } def +/lfigblue { 0.0 0.0 1.0 LoutSetRGBColor fill } def +/lfiglightblue { 0.5 0.5 1.0 LoutSetRGBColor fill } def +/lfigdarkgreen { 0.0 0.5 0.0 LoutSetRGBColor fill } def +/lfiggreen { 0.0 1.0 0.0 LoutSetRGBColor fill } def +/lfiglightgreen { 0.5 1.0 0.5 LoutSetRGBColor fill } def +/lfigdarkred { 0.5 0.0 0.0 LoutSetRGBColor fill } def +/lfigred { 1.0 0.0 0.0 LoutSetRGBColor fill } def +/lfiglightred { 1.0 0.5 0.5 LoutSetRGBColor fill } def +/lfigdarkcyan { 0.0 0.5 0.5 LoutSetRGBColor fill } def +/lfigcyan { 0.0 1.0 1.0 LoutSetRGBColor fill } def +/lfiglightcyan { 0.5 1.0 1.0 LoutSetRGBColor fill } def +/lfigdarkmagenta { 0.5 0.0 0.5 LoutSetRGBColor fill } def +/lfigmagenta { 1.0 0.0 1.0 LoutSetRGBColor fill } def +/lfiglightmagenta { 1.0 0.5 1.0 LoutSetRGBColor fill } def +/lfigdarkyellow { 0.5 0.5 0.0 LoutSetRGBColor fill } def +/lfigyellow { 1.0 1.0 0.0 LoutSetRGBColor fill } def +/lfiglightyellow { 1.0 1.0 0.5 LoutSetRGBColor fill } def +/lfigdarkgray { 0.2 0.2 0.2 LoutSetRGBColor fill } def +/lfiggray { 0.5 0.5 0.5 LoutSetRGBColor fill } def +/lfiglightgray { 0.8 0.8 0.8 LoutSetRGBColor fill } def +/lfigdarkgrey { 0.2 0.2 0.2 LoutSetRGBColor fill } def +/lfiggrey { 0.5 0.5 0.5 LoutSetRGBColor fill } def +/lfiglightgrey { 0.8 0.8 0.8 LoutSetRGBColor fill } def +/lfigblack { 0.0 0.0 0.0 LoutSetRGBColor fill } def +/lfigwhite { 1.0 1.0 1.0 LoutSetRGBColor fill } def % line caps (and joins, not currently used) /lfigbutt 0 def @@ -1414,7 +1566,7 @@ gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore @@ -1424,9 +1576,10 @@ 9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 1 LoutMargSet grestore -240 fnt2 2897 12401(The)m 3352(Design)s 4099(and)s 4540(Implementation)s -4239 11998(of)m 4511(the)s 2589 11595(Lout)m 3141(Document)s 4250(F)s 6(ormatting)k -5468(Language)s 240 fnt3 3630 11097(J)m 6(ef)k 4(fr)k 8(e)k 7(y)k +240 fnt2 2897 12401(The)m +3352(Design)s 4099(and)s 4540(Implementation)s 4239 11998(of)m 4511(the)s +2589 11595(Lout)m 3141(Document)s 4250(F)s 6(ormatting)k 5468(Language)s +240 fnt3 3630 11097(J)m 6(ef)k 4(fr)k 8(e)k 7(y)k 4310(H.)s 4577(Kingston)s 240 fnt1 2551 10596(Basser)m 3248(Department)s 4436(of)s 4707(Computer)s 5724(Science,)s 3007 10308(The)m 3435(Uni)s 6(v)k 3(ersity)k 4489(of)s 4760(Sydne)s 3(y)k 5530(2006,)s 4095 10020(Australia)m @@ -1479,7 +1632,7 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore @@ -1489,15 +1642,16 @@ 9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 1 LoutMargSet grestore -240 fnt2 2897 12401(The)m 3352(Design)s 4099(and)s 4540(Implementation)s -4239 11998(of)m 4511(the)s 2589 11595(Lout)m 3141(Document)s 4250(F)s 6(ormatting)k -5468(Language)s 240 fnt3 3630 11097(J)m 6(ef)k 4(fr)k 8(e)k 7(y)k +240 fnt2 2897 12401(The)m +3352(Design)s 4099(and)s 4540(Implementation)s 4239 11998(of)m 4511(the)s +2589 11595(Lout)m 3141(Document)s 4250(F)s 6(ormatting)k 5468(Language)s +240 fnt3 3630 11097(J)m 6(ef)k 4(fr)k 8(e)k 7(y)k 4310(H.)s 4577(Kingston)s 240 fnt1 2551 10596(Basser)m 3248(Department)s 4436(of)s 4707(Computer)s 5724(Science,)s 3007 10308(The)m 3435(Uni)s 6(v)k 3(ersity)k 4489(of)s 4760(Sydne)s 3(y)k 5530(2006,)s 4095 10020(Australia)m 3739 9568(27)m 4027(January)s 15(,)k 4863(1993)s 240 fnt2 0 8926(1.)m 291(Intr)s 4(oduction)k -[ /Dest /LOUT17_602_s1_0_1 /DEST pdfmark +[ /Dest /LOUT18_651_s1_0_1 /DEST pdfmark 240 fnt1 480 8495(Lout)m 985([1,)s 1284(2])s 1515(is)s 1718(a)s 1877(high-le)s 6(v)k 3(el)k 2885(language)s 3798(for)s 4129(document)s 5126(formatting,)s 6234(designed)s @@ -1627,19 +1781,20 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -5765 -1579(-)m 5893(2)s 6067(-)s 9066 13419 0 13310 240 288 60 1417 -15423 LoutGr2 +5765 -1579(-)m 5893(2)s +6067(-)s 9066 13419 0 13310 240 288 60 1417 -15423 LoutGr2 0 LoutMargSet grestore 0 13256(further)m 709(impro)s 3(v)k 3(ement.)k 240 fnt2 0 12463(2.)m 291(Objects)s -[ /Dest /LOUT17_602_s2_0_1 /DEST pdfmark +[ /Dest /LOUT18_651_s2_0_1 /DEST pdfmark 240 fnt1 480 11987(The)m 923(essence)s 1725(of)s 2011(an)s 3(y)k 2424(mo)s 3(v)k 3(e)k 3021(to)s 3276(a)s 3457(higher)s 4144(le)s 6(v)k 3(el)k @@ -1683,8 +1838,8 @@ grestore grestore -699 8048(4)m 240 fnt1 0 7537(is)m 210(produced)s -1159(by)s 1453(typing)s 220 fnt5 480 7039({ x sup 2 + 1 } o)m 3(v)k 5(er 4)k +699 8048(4)m 240 fnt1 0 7537(is)m +210(produced)s 1159(by)s 1453(typing)s 220 fnt5 480 7039({ x sup 2 + 1 } o)m 3(v)k 5(er 4)k 240 fnt1 0 6543(in)m 261(the)s 627(input)s 1197(\207le;)s 220 fnt5 1632 6540(sup)m 240 fnt1 2056 6543(and)m 220 fnt5 2478 6540(o)m 3(v)k 5(er)k 240 fnt1 2975 6543(are)m @@ -1747,20 +1902,21 @@ grestore end end restore grestore -0 2471(The)m 425(size)s -848(and)s 1248(rendering)s 2213(of)s 2481(the)s 2825(e)s 3(xpression)k -3898(on)s 4191(the)s 4536(printed)s 5267(page)s 5771(are)s -6114(kno)s 6(wn)k 6815(only)s 7291(to)s 7526(the)s -7870(implementa)s 8998(-)s 0 2183(tion,)m 481(ne)s 6(v)k 3(er)k -1066(e)s 3(xplicitly)k 2022(calculated)s 3051(or)s 3313(accessed)s -4209(by)s 4506(the)s 4857(user)s 13(.)k 5409(This)s -5888(prohibition)s 7010(is)s 7223(crucial)s 7930(to)s 8172(the)s -8523(main)s 8998(-)s 0 1895(tenance)m 785(of)s 1055(the)s -1402(conte)s 3(xt-)k 2171(free)s 2596(property)s 3459(in)s -3701(practice.)s 4619(In)s 4874(Lout,)s 5432(for)s 5769(e)s 3(xample,)k -6682(equations,)s 7705(\207gures,)s 8462(tables,)s 0 1607(and)m 393(arbitrary)s -1256(objects)s 1972(may)s 2427(be)s 2697(mix)s 3(ed)k -3338(together)s 4169(freely)s 15(.)k 4863(This)s 5327(w)s 2(ould)k +0 2471(The)m +425(size)s 848(and)s 1248(rendering)s 2213(of)s 2481(the)s +2825(e)s 3(xpression)k 3898(on)s 4191(the)s 4536(printed)s +5267(page)s 5771(are)s 6114(kno)s 6(wn)k 6815(only)s +7291(to)s 7526(the)s 7870(implementa)s 8998(-)s 0 2183(tion,)m +481(ne)s 6(v)k 3(er)k 1066(e)s 3(xplicitly)k +2022(calculated)s 3051(or)s 3313(accessed)s 4209(by)s 4506(the)s +4857(user)s 13(.)k 5409(This)s 5888(prohibition)s 7010(is)s +7223(crucial)s 7930(to)s 8172(the)s 8523(main)s 8998(-)s +0 1895(tenance)m 785(of)s 1055(the)s 1402(conte)s 3(xt-)k +2171(free)s 2596(property)s 3459(in)s 3701(practice.)s 4619(In)s +4874(Lout,)s 5432(for)s 5769(e)s 3(xample,)k 6682(equations,)s +7705(\207gures,)s 8462(tables,)s 0 1607(and)m 393(arbitrary)s 1256(objects)s +1972(may)s 2427(be)s 2697(mix)s 3(ed)k 3338(together)s +4169(freely)s 15(.)k 4863(This)s 5327(w)s 2(ould)k 5970(be)s 6241(impossible)s 7321(if)s 7526(size)s 7941(information)s 0 1319(w)m 2(as)k 421(hidden)s 1130(from)s 1654(the)s 2002(implementation)s 3559(in)s 3802(user)s 4260(calculations.)s 480 945(The)m @@ -1811,18 +1967,18 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -5770 -1579(-)m 5898(3)s 6062(-)s 9066 13416 0 13307 240 288 60 1417 -15423 LoutGr2 +5770 -1579(-)m 5898(3)s +6062(-)s 9066 13416 0 13307 240 288 60 1417 -15423 LoutGr2 1 LoutMargSet grestore -0 13253(a)m 166(rectangle:)s -1701 453 567 198 240 288 60 480 12460 LoutGr2 +0 13253(a)m 166(rectangle:)s 1701 453 567 198 240 288 60 480 12460 LoutGr2 grestore save gsave 200 dict begin lfigdict begin grestore 1701 453 567 198 240 288 60 0 0 LoutGr2 @@ -1850,15 +2006,15 @@ grestore end end restore grestore -0 12007(The)m 442(horizontal)s 1481(axis,)s 1987(called)s 2630(a)s -240 fnt3 2810 12009(r)m 10(ow)k 3244(mark)s 240 fnt1 -3814 12007(in)m 4072(Lout,)s 4645(has)s 5030(a)s 5210(v)s 3(ertical)k -5992(analogue)s 6926(called)s 7569(a)s 240 fnt3 7749 12009(column)m -8523(mark)s 240 fnt1 9019 12007(,)m 0 11719(creating)m 822(a)s -988(v)s 6(aluable)k 1848(symmetry)s 2857(between)s 3711(horizontal)s -4735(and)s 5139(v)s 3(ertical.)k 6014(Multiple)s 6893(column)s -7668(and)s 8072(ro)s 6(w)k 8491(marks)s 0 11431(are)m -347(permitted:)s 1984 1189 0 1189 240 288 60 480 9902 LoutGr2 +0 12007(The)m 442(horizontal)s +1481(axis,)s 1987(called)s 2630(a)s 240 fnt3 2810 12009(r)m 10(ow)k +3244(mark)s 240 fnt1 3814 12007(in)m 4072(Lout,)s 4645(has)s +5030(a)s 5210(v)s 3(ertical)k 5992(analogue)s 6926(called)s +7569(a)s 240 fnt3 7749 12009(column)m 8523(mark)s 240 fnt1 +9019 12007(,)m 0 11719(creating)m 822(a)s 988(v)s 6(aluable)k +1848(symmetry)s 2857(between)s 3711(horizontal)s 4735(and)s 5139(v)s 3(ertical.)k +6014(Multiple)s 6893(column)s 7668(and)s 8072(ro)s 6(w)k +8491(marks)s 0 11431(are)m 347(permitted:)s 1984 1189 0 1189 240 288 60 480 9902 LoutGr2 grestore save gsave 200 dict begin lfigdict begin grestore 680 453 0 453 240 288 60 0 736 LoutGr2 @@ -1951,18 +2107,18 @@ grestore end end restore grestore -0 9451(so)m 266(that)s 684(objects)s 1412(are)s -1759(able)s 2213(to)s 2452(represent)s 3387(tables.)s 480 9077(This)m -946(abstraction)s 2041(has)s 2401(some)s 2952(limitations,)s 4069(the)s -4407(most)s 4922(ob)s 3(vious)k 5719(being)s 6293(the)s -6631(restriction)s 7645(of)s 7906(size)s 8322(calcula)s 8998(-)s -0 8789(tions)m 507(to)s 736(rectangular)s 1860(bounding)s 2809(box)s 3(es.)k -3519(Non-)s 4000(rectangular)s 5124(and)s 5518(disconnected)s 6815(shapes)s -7494(arise)s 7990(naturally)s 8883(in)s 0 8501(\207gures)m 704(and)s -1111(in)s 1356(the)s 1707(characters)s 2727(of)s 3001(fonts;)s -3594(the)s 3944(e)s 3(xtension)k 4918(to)s 5159(them)s -5700(is)s 5912(conceptually)s 7191(straightforw)s 2(ard)k 8722(and)s -0 8213(might)m 615(help)s 1076(to)s 1311(e)s 3(xplain)k +0 9451(so)m 266(that)s +684(objects)s 1412(are)s 1759(able)s 2213(to)s 2452(represent)s +3387(tables.)s 480 9077(This)m 946(abstraction)s 2041(has)s 2401(some)s +2952(limitations,)s 4069(the)s 4407(most)s 4922(ob)s 3(vious)k +5719(being)s 6293(the)s 6631(restriction)s 7645(of)s 7906(size)s +8322(calcula)s 8998(-)s 0 8789(tions)m 507(to)s 736(rectangular)s +1860(bounding)s 2809(box)s 3(es.)k 3519(Non-)s 4000(rectangular)s +5124(and)s 5518(disconnected)s 6815(shapes)s 7494(arise)s 7990(naturally)s +8883(in)s 0 8501(\207gures)m 704(and)s 1111(in)s 1356(the)s +1707(characters)s 2727(of)s 3001(fonts;)s 3594(the)s 3944(e)s 3(xtension)k +4918(to)s 5159(them)s 5700(is)s 5912(conceptually)s 7191(straightforw)s 2(ard)k +8722(and)s 0 8213(might)m 615(help)s 1076(to)s 1311(e)s 3(xplain)k 2066(some)s 2623(\207ne)s 3034(points)s 3667(of)s 3934(layout)s 4588(such)s 5081(as)s 5327(k)s 2(erning.)k 6216(Ho)s 6(we)k 6(v)k 3(er)k 9(,)k 7173(there)s 7702(are)s 8045(implemen)s 8998(-)s 0 7925(tation)m @@ -2055,30 +2211,31 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -5765 -1579(-)m 5893(4)s 6067(-)s 9066 13419 0 13310 240 288 60 1417 -15423 LoutGr2 +5765 -1579(-)m 5893(4)s +6067(-)s 9066 13419 0 13310 240 288 60 1417 -15423 LoutGr2 0 LoutMargSet grestore -480 13256(The)m 941(last)s -1366(production)s 2494(allo)s 6(ws)k 3197(a)s 3397(meaning)s -4307(for)s 4679(e)s 3(xpressions)k 5877(such)s 6407(as)s -220 fnt5 6691 13253({})m 240 fnt1 6828 13256(,)m 6968(in)s -7245(which)s 7921(an)s 8238(object)s 8916(is)s 0 12968(missing.)m -907(The)s 1333(v)s 6(alue)k 1899(of)s 2168(this)s -240 fnt3 2562 12970(empty)m 3187(object)s 240 fnt1 3833 12968(is)m -4041(a)s 4205(rectangle)s 5135(of)s 5404(size)s 5829(0)s -6002(by)s 6294(0,)s 6519(with)s 6999(one)s 7399(column)s -8172(mark)s 8722(and)s 0 12680(one)m 402(ro)s 6(w)k -822(mark,)s 1420(that)s 1838(prints)s 2433(as)s 2683(nothing.)s -480 12306(The)m 938(second-last)s 2103(production)s 3227(generates)s 4210(sequences)s -5261(of)s 5562(arbitrary)s 6467(objects)s 7225(separated)s 8215(by)s -8539(white)s 0 12018(space,)m 671(called)s 240 fnt3 1333 12020(par)m 3(a)k 2(gr)k 3(aphs)k +480 13256(The)m 941(last)s 1366(production)s 2494(allo)s 6(ws)k +3197(a)s 3397(meaning)s 4307(for)s 4679(e)s 3(xpressions)k +5877(such)s 6407(as)s 220 fnt5 6691 13253({})m 240 fnt1 +6828 13256(,)m 6968(in)s 7245(which)s 7921(an)s 8238(object)s +8916(is)s 0 12968(missing.)m 907(The)s 1333(v)s 6(alue)k +1899(of)s 2168(this)s 240 fnt3 2562 12970(empty)m 3187(object)s +240 fnt1 3833 12968(is)m 4041(a)s 4205(rectangle)s 5135(of)s +5404(size)s 5829(0)s 6002(by)s 6294(0,)s 6519(with)s +6999(one)s 7399(column)s 8172(mark)s 8722(and)s 0 12680(one)m +402(ro)s 6(w)k 822(mark,)s 1420(that)s 1838(prints)s +2433(as)s 2683(nothing.)s 480 12306(The)m 938(second-last)s 2103(production)s +3227(generates)s 4210(sequences)s 5261(of)s 5562(arbitrary)s 6467(objects)s +7225(separated)s 8215(by)s 8539(white)s 0 12018(space,)m 671(called)s +240 fnt3 1333 12020(par)m 3(a)k 2(gr)k 3(aphs)k 240 fnt1 2439 12018(.)m 2636(Ignoring)s 3547(paragraph)s 4593(breaking)s 5517(for)s 5888(no)s 6(w)k 15(,)k 6421(the)s 6802(natural)s 7554(meaning)s 8464(is)s 8708(that)s 0 11730(the)m @@ -2232,52 +2389,53 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -5769 -1582(-)m 5897(5)s 6063(-)s 9066 13413 0 13413 240 288 60 1417 -15423 LoutGr2 +5769 -1582(-)m 5897(5)s +6063(-)s 9066 13413 0 13413 240 288 60 1417 -15423 LoutGr2 1 LoutMargSet grestore -240 fnt3 266 13217(object)m -220 fnt5 974 13212(/)m 240 fnt3 1038 13217(gap)m 1511(object)s -240 fnt1 3816 13215(V)m 26(ertical)k 4613(concatenation)s 5998(with)s -6480(mark)s 7032(alignment)s 240 fnt3 266 12929(object)m 220 fnt5 -974 12924(//)m 240 fnt3 1099 12929(gap)m 1572(object)s 240 fnt1 -3816 12927(V)m 26(ertical)k 4613(concatenation)s 5998(with)s 6480(left)s -6857(justi\207cation)s 240 fnt3 266 12641(object)m 220 fnt5 974 12636(|)m -240 fnt3 1011 12641(gap)m 1484(object)s 240 fnt1 3816 12639(Horizontal)m -4893(concatenation)s 6278(with)s 6760(mark)s 7312(alignment)s 240 fnt3 -266 12353(object)m 220 fnt5 974 12348(||)m 240 fnt3 1068 12353(gap)m -1541(object)s 240 fnt1 3816 12351(Horizontal)m 4893(concatenation)s 6278(with)s -6760(top-justi\207cation)s 240 fnt3 266 12065(object)m 220 fnt5 974 12060(&)m -240 fnt3 1116 12065(gap)m 1589(object)s 240 fnt1 3816 12063(Horizontal)m -4893(concatenation)s 6278(within)s 6946(paragraphs)s 220 fnt5 266 11772(@OneCol)m -240 fnt3 1338 11777(object)m 240 fnt1 3816 11775(Hide)m 4337(all)s -4630(b)s 4(ut)k 4992(one)s 5394(column)s 6169(mark)s -6721(of)s 240 fnt3 6992 11777(object)m 220 fnt5 266 11484(@OneRo)m 3(w)k -240 fnt3 1457 11489(object)m 240 fnt1 3816 11487(Hide)m 4337(all)s -4630(b)s 4(ut)k 4992(one)s 5394(ro)s 6(w)k -5814(mark)s 6366(of)s 240 fnt3 6637 11489(object)m 266 11201(font)m -220 fnt5 762 11196(@F)m 6(ont)k 240 fnt3 1534 11201(object)m -240 fnt1 3816 11199(Render)m 240 fnt3 4567 11201(object)m 240 fnt1 -5215 11199(in)m 5458(nominated)s 6526(font)s 240 fnt3 266 10913(br)m 8(eakstyle)k -220 fnt5 1353 10908(@Break)m 240 fnt3 2269 10913(object)m 240 fnt1 -3816 10911(Break)m 4448(paragraphs)s 5548(of)s 240 fnt3 5819 10913(object)m -240 fnt1 6467 10911(in)m 6710(nominated)s 7778(style)s 240 fnt3 -266 10625(spacestyle)m 220 fnt5 1361 10620(@Space)m 240 fnt3 2318 10625(object)m -240 fnt1 3816 10623(Render)m 4567(spaces)s 5242(between)s 6096(w)s 2(ords)k -6730(in)s 6973(nominated)s 8041(style)s 240 fnt3 266 10337(length)m -220 fnt5 979 10332(@Wide)m 240 fnt3 1813 10337(object)m 240 fnt1 -3816 10335(Render)m 240 fnt3 4567 10337(object)m 240 fnt1 5215 10335(to)m -5454(width)s 240 fnt3 6056 10337(length)m 266 10049(length)m 220 fnt5 -979 10044(@High)m 240 fnt3 1758 10049(object)m 240 fnt1 3816 10047(Render)m -240 fnt3 4567 10049(object)m 240 fnt1 5215 10047(to)m 5454(height)s -240 fnt3 6112 10049(length)m 220 fnt5 266 9756(@HExpand)m 240 fnt3 -1499 9761(object)m 240 fnt1 3816 9759(Expand)m 4606(horizontal)s 5630(g)s 1(aps)k +240 fnt3 266 13217(object)m 220 fnt5 974 13212(/)m +240 fnt3 1038 13217(gap)m 1511(object)s 240 fnt1 3816 13215(V)m 26(ertical)k +4613(concatenation)s 5998(with)s 6480(mark)s 7032(alignment)s 240 fnt3 +266 12929(object)m 220 fnt5 974 12924(//)m 240 fnt3 1099 12929(gap)m +1572(object)s 240 fnt1 3816 12927(V)m 26(ertical)k 4613(concatenation)s +5998(with)s 6480(left)s 6857(justi\207cation)s 240 fnt3 266 12641(object)m +220 fnt5 974 12636(|)m 240 fnt3 1011 12641(gap)m 1484(object)s +240 fnt1 3816 12639(Horizontal)m 4893(concatenation)s 6278(with)s 6760(mark)s +7312(alignment)s 240 fnt3 266 12353(object)m 220 fnt5 974 12348(||)m +240 fnt3 1068 12353(gap)m 1541(object)s 240 fnt1 3816 12351(Horizontal)m +4893(concatenation)s 6278(with)s 6760(top-justi\207cation)s 240 fnt3 266 12065(object)m +220 fnt5 974 12060(&)m 240 fnt3 1116 12065(gap)m 1589(object)s +240 fnt1 3816 12063(Horizontal)m 4893(concatenation)s 6278(within)s 6946(paragraphs)s +220 fnt5 266 11772(@OneCol)m 240 fnt3 1338 11777(object)m 240 fnt1 +3816 11775(Hide)m 4337(all)s 4630(b)s 4(ut)k 4992(one)s +5394(column)s 6169(mark)s 6721(of)s 240 fnt3 6992 11777(object)m +220 fnt5 266 11484(@OneRo)m 3(w)k 240 fnt3 1457 11489(object)m +240 fnt1 3816 11487(Hide)m 4337(all)s 4630(b)s 4(ut)k +4992(one)s 5394(ro)s 6(w)k 5814(mark)s 6366(of)s +240 fnt3 6637 11489(object)m 266 11201(font)m 220 fnt5 762 11196(@F)m 6(ont)k +240 fnt3 1534 11201(object)m 240 fnt1 3816 11199(Render)m 240 fnt3 +4567 11201(object)m 240 fnt1 5215 11199(in)m 5458(nominated)s 6526(font)s +240 fnt3 266 10913(br)m 8(eakstyle)k 220 fnt5 1353 10908(@Break)m +240 fnt3 2269 10913(object)m 240 fnt1 3816 10911(Break)m 4448(paragraphs)s +5548(of)s 240 fnt3 5819 10913(object)m 240 fnt1 6467 10911(in)m +6710(nominated)s 7778(style)s 240 fnt3 266 10625(spacestyle)m 220 fnt5 +1361 10620(@Space)m 240 fnt3 2318 10625(object)m 240 fnt1 3816 10623(Render)m +4567(spaces)s 5242(between)s 6096(w)s 2(ords)k 6730(in)s +6973(nominated)s 8041(style)s 240 fnt3 266 10337(length)m 220 fnt5 +979 10332(@Wide)m 240 fnt3 1813 10337(object)m 240 fnt1 3816 10335(Render)m +240 fnt3 4567 10337(object)m 240 fnt1 5215 10335(to)m 5454(width)s +240 fnt3 6056 10337(length)m 266 10049(length)m 220 fnt5 979 10044(@High)m +240 fnt3 1758 10049(object)m 240 fnt1 3816 10047(Render)m 240 fnt3 +4567 10049(object)m 240 fnt1 5215 10047(to)m 5454(height)s 240 fnt3 +6112 10049(length)m 220 fnt5 266 9756(@HExpand)m 240 fnt3 1499 9761(object)m +240 fnt1 3816 9759(Expand)m 4606(horizontal)s 5630(g)s 1(aps)k 6119(to)s 6358(\207ll)s 6678(a)s 4(v)k 6(ailable)k 7586(space)s 220 fnt5 266 9468(@VExpand)m 240 fnt3 1487 9473(object)m 240 fnt1 3816 9471(Expand)m 4606(v)s 3(ertical)k 5373(g)s 1(aps)k @@ -2444,18 +2602,18 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -5765 -1581(-)m 5893(6)s 6066(-)s 9066 13414 0 13305 240 288 60 1417 -15423 LoutGr2 +5765 -1581(-)m 5893(6)s +6066(-)s 9066 13414 0 13305 240 288 60 1417 -15423 LoutGr2 0 LoutMargSet grestore -0 13251(produces)m 915(the)s -1263(object)s 875 165 0 56 240 288 60 480 12746 LoutGr2 +0 13251(produces)m 915(the)s 1263(object)s 875 165 0 56 240 288 60 480 12746 LoutGr2 grestore save gsave 200 dict begin lfigdict begin grestore 875 165 0 56 240 288 60 0 0 LoutGr2 @@ -2472,7 +2630,8 @@ xmark -0.3 cm xmark ysize 0 0.3 cm lfigpadd ] lfigdopath pop pop grestore -0 2(Australia)m +0 2(Australia)m + grestore grestore @@ -2501,17 +2660,16 @@ grestore end end restore grestore -0 11986(with)m 482(column)s -1257(marks)s 1892(mer)s 4(ged)k 2663(and)s 3067(a)s -3233(0.1)s 3568(inch)s 4037(g)s 1(ap.)k 480 11612(Consider)m -1404(no)s 6(w)k 1865(what)s 2390(happens)s 3226(when)s -3802(horizontal)s 4826(and)s 5230(v)s 3(ertical)k 5997(are)s -6344(combined:)s 220 fnt5 1000 11111({)m 1186(USA)s 2442(|0.2i)s -2958(A)s 6(ustr)k 2(alia)k 3919(})s 480 10823(/0.1i)m -1000({)s 1186(W)s 8(ashington)k 2442(|)s 2958(Canberr)s 2(a)k -3987(})s 240 fnt1 0 10324(The)m 445(tw)s 2(o)k -872(parameters)s 1987(of)s 220 fnt5 2275 10321(/)m 240 fnt1 -2416 10324(no)m 6(w)k 2895(ha)s 4(v)k 3(e)k +0 11986(with)m 482(column)s 1257(marks)s 1892(mer)s 4(ged)k +2663(and)s 3067(a)s 3233(0.1)s 3568(inch)s 4037(g)s 1(ap.)k +480 11612(Consider)m 1404(no)s 6(w)k 1865(what)s 2390(happens)s +3226(when)s 3802(horizontal)s 4826(and)s 5230(v)s 3(ertical)k +5997(are)s 6344(combined:)s 220 fnt5 1000 11111({)m 1186(USA)s +2442(|0.2i)s 2958(A)s 6(ustr)k 2(alia)k 3919(})s +480 10823(/0.1i)m 1000({)s 1186(W)s 8(ashington)k 2442(|)s +2958(Canberr)s 2(a)k 3987(})s 240 fnt1 0 10324(The)m +445(tw)s 2(o)k 872(parameters)s 1987(of)s 220 fnt5 +2275 10321(/)m 240 fnt1 2416 10324(no)m 6(w)k 2895(ha)s 4(v)k 3(e)k 3413(tw)s 2(o)k 3840(column)s 4632(marks)s 5284(each,)s 5846(and)s 6268(the)s 3(y)k 6748(will)s 7191(be)s 7490(mer)s 4(ged)k 8278(with)s 8778(the)s 0 10036(corresponding)m @@ -2688,7 +2846,8 @@ 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 fnt3 +156 491 0 288 240 288 12 LoutGraphic gsave grestore save gsave 200 dict begin lfigdict begin grestore @@ -2706,8 +2865,7 @@ xmark -0.3 cm xmark ysize 0 0.3 cm lfigpadd ] lfigdopath pop pop grestore -0 336(X)m -156 0 0 0 240 288 12 0 288 LoutGr2 +0 336(X)m 156 0 0 0 240 288 12 0 288 LoutGr2 0 0 moveto xsize 0 lineto 0.05 ft setlinewidth stroke grestore @@ -2718,18 +2876,19 @@ grestore end end restore grestore -0 1794(This)m 493(is)s 721(a)s 905(common)s -1817(problem,)s 2739(and)s 3161(accordingly)s 4361(a)s 220 fnt5 -4545 1791(@OneRo)m 3(w)k 240 fnt1 5694 1794(operator)m 6567(w)s 2(as)k -7006(introduced)s 8105(for)s 8461(hiding)s 0 1506(all)m 291(b)s 4(ut)k -650(one)s 1050(of)s 1318(the)s 1663(ro)s 6(w)k -2081(marks)s 2713(of)s 2981(its)s 3255(parameter)s 13(.)k -4357(Normally)s 15(,)k 5363(the)s 5708(\207rst)s 6136(mark)s -6686(is)s 6893(the)s 7238(survi)s 6(v)k 4(or)k 9(,)k -8121(b)s 4(ut)k 8480(a)s 8643(later)s 0 1218(mark)m -552(can)s 941(be)s 1223(chosen)s 1945(by)s 2239(pre\207xing)s -220 fnt5 3156 1215(^)m 240 fnt1 3322 1218(to)m 3561(the)s -3909(preceding)s 4905(concatenation)s 6290(operator:)s 220 fnt5 480 717(@OneRo)m 3(w { X ^/2p @HLine /2p )k 19(Y })k +0 1794(This)m 493(is)s 721(a)s +905(common)s 1817(problem,)s 2739(and)s 3161(accordingly)s 4361(a)s +220 fnt5 4545 1791(@OneRo)m 3(w)k 240 fnt1 5694 1794(operator)m +6567(w)s 2(as)k 7006(introduced)s 8105(for)s 8461(hiding)s +0 1506(all)m 291(b)s 4(ut)k 650(one)s 1050(of)s +1318(the)s 1663(ro)s 6(w)k 2081(marks)s 2713(of)s +2981(its)s 3255(parameter)s 13(.)k 4357(Normally)s 15(,)k +5363(the)s 5708(\207rst)s 6136(mark)s 6686(is)s 6893(the)s +7238(survi)s 6(v)k 4(or)k 9(,)k 8121(b)s 4(ut)k +8480(a)s 8643(later)s 0 1218(mark)m 552(can)s 941(be)s +1223(chosen)s 1945(by)s 2239(pre\207xing)s 220 fnt5 3156 1215(^)m +240 fnt1 3322 1218(to)m 3561(the)s 3909(preceding)s 4905(concatenation)s +6290(operator:)s 220 fnt5 480 717(@OneRo)m 3(w { X ^/2p @HLine /2p )k 19(Y })k grestore 0 0 0 0 240 288 60 1417 -15423 LoutGr2 @@ -2771,23 +2930,24 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -5768 -1575(-)m 5896(7)s 6064(-)s 9066 13422 0 13422 240 288 60 1417 -15423 LoutGr2 +5768 -1575(-)m 5896(7)s +6064(-)s 9066 13422 0 13422 240 288 60 1417 -15423 LoutGr2 1 LoutMargSet grestore 6693 8221 0 8221 240 288 60 1186 5201 LoutGr2 grestore save gsave 200 dict begin lfigdict begin grestore -0 7447(Edge-to-edge)m 220 fnt5 -1786 7444(|)m 240 fnt3 1843 7449(length)m 220 fnt5 2456 7444(e)m -240 fnt1 0 6238(Hyphenation)m 220 fnt5 1786 6235(|)m 240 fnt3 -1843 6240(length)m 220 fnt5 2456 6235(h)m 240 fnt1 0 5029(Ov)m 3(erstrik)k 2(e)k +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 @@ -2823,7 +2983,8 @@ grestore gsave 2268 7485 translate -180 fnt1 680 340 0 340 180 288 45 LoutGraphic +180 fnt1 +680 340 0 340 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath @@ -2883,7 +3044,8 @@ 30.0000 rotate gsave 0 1 translate -180 fnt1 68 -1 0 -1 180 288 45 LoutGraphic +180 fnt1 +68 -1 0 -1 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore @@ -2914,7 +3076,8 @@ grestore 180 fnt3 1534 7192(length)m gsave 567 6304 translate -180 fnt1 680 340 0 340 180 288 45 LoutGraphic +180 fnt1 +680 340 0 340 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath @@ -2966,7 +3129,8 @@ grestore gsave 0 0 translate -180 fnt1 1020 0 0 0 180 288 45 LoutGraphic +180 fnt1 +1020 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore @@ -3021,7 +3185,8 @@ grestore grestore -1534 6011(length)m gsave +1534 6011(length)m +gsave 567 5123 translate 180 fnt1 680 340 0 340 180 288 45 LoutGraphic gsave @@ -3065,7 +3230,8 @@ 30.0000 rotate gsave 0 1 translate -180 fnt1 68 -1 0 -1 180 288 45 LoutGraphic +180 fnt1 +68 -1 0 -1 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore @@ -3122,7 +3288,8 @@ -30.0000 rotate gsave 0 0 translate -180 fnt1 68 -1 0 0 180 288 45 LoutGraphic +180 fnt1 +68 -1 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore @@ -3130,8 +3297,7 @@ grestore grestore -1392 4774(length)m -gsave +1392 4774(length)m gsave 567 3886 translate 180 fnt1 680 340 0 340 180 288 45 LoutGraphic gsave @@ -3161,7 +3327,8 @@ grestore gsave 2551 3772 translate -180 fnt1 851 567 0 567 180 288 45 LoutGraphic +180 fnt1 +851 567 0 567 180 288 45 LoutGraphic gsave 0 0 moveto 0 ysize lineto [ 3 pt ] 0 setdash stroke grestore @@ -3221,7 +3388,8 @@ grestore gsave 680 3738 translate -180 fnt1 1871 0 0 0 180 288 45 LoutGraphic +180 fnt1 +1871 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore @@ -3240,10 +3408,10 @@ grestore grestore -180 fnt1 941 3536(max)m 180 fnt4 1256 3531(\()m 180 fnt3 -1319 3537(length)m 180 fnt4 1774 3531(,)m 180 fnt3 1854 3537(a)m -180 fnt4 1994 3531(+)m 180 fnt3 2145 3537(b)m 180 fnt4 -2240 3531(\))m gsave +180 fnt1 941 3536(max)m 180 fnt4 1256 3531(\()m +180 fnt3 1319 3537(length)m 180 fnt4 1774 3531(,)m 180 fnt3 +1854 3537(a)m 180 fnt4 1994 3531(+)m 180 fnt3 2145 3537(b)m +180 fnt4 2240 3531(\))m gsave 1247 4362 translate 180.0000 rotate gsave @@ -3272,7 +3440,8 @@ -30.0000 rotate gsave 0 0 translate -180 fnt1 68 -1 0 0 180 288 45 LoutGraphic +180 fnt1 +68 -1 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore @@ -3316,7 +3485,8 @@ grestore grestore -180 fnt3 920 4431(a)m gsave +180 fnt3 920 4431(a)m +gsave 2551 4362 translate 180.0000 rotate gsave @@ -3370,7 +3540,8 @@ grestore gsave 2268 4362 translate -180 fnt1 283 0 0 0 180 288 45 LoutGraphic +180 fnt1 +283 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore @@ -3409,7 +3580,8 @@ grestore gsave 2268 2590 translate -180 fnt1 680 340 0 340 180 288 45 LoutGraphic +180 fnt1 +680 340 0 340 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath @@ -3469,7 +3641,8 @@ 30.0000 rotate gsave 0 1 translate -180 fnt1 68 -1 0 -1 180 288 45 LoutGraphic +180 fnt1 +68 -1 0 -1 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore @@ -3498,11 +3671,10 @@ grestore grestore -180 fnt1 -999 2240(max)m 180 fnt4 1314 2235(\()m 180 fnt3 1377 2241(length)m -180 fnt4 1832 2235(,)m 180 fnt3 1912 2241(a)m 180 fnt4 -2007 2235(,)m 180 fnt3 2087 2241(b)m 180 fnt4 2182 2235(\))m -gsave +180 fnt1 999 2240(max)m 180 fnt4 +1314 2235(\()m 180 fnt3 1377 2241(length)m 180 fnt4 1832 2235(,)m +180 fnt3 1912 2241(a)m 180 fnt4 2007 2235(,)m 180 fnt3 +2087 2241(b)m 180 fnt4 2182 2235(\))m gsave 1247 3066 translate 180.0000 rotate gsave @@ -3520,7 +3692,8 @@ grestore gsave 0 0 translate -180 fnt1 567 0 0 0 180 288 45 LoutGraphic +180 fnt1 +567 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore @@ -3575,7 +3748,8 @@ grestore grestore -180 fnt3 920 3135(a)m gsave +180 fnt3 +920 3135(a)m gsave 2551 3066 translate 180.0000 rotate gsave @@ -3619,7 +3793,8 @@ 30.0000 rotate gsave 0 1 translate -180 fnt1 68 -1 0 -1 180 288 45 LoutGraphic +180 fnt1 +68 -1 0 -1 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore @@ -3660,7 +3835,8 @@ grestore gsave 680 1324 translate -180 fnt1 2722 567 0 567 180 288 45 LoutGraphic +180 fnt1 +2722 567 0 567 180 288 45 LoutGraphic gsave 0 0 moveto 0 ysize lineto [ 3 pt ] 0 setdash stroke grestore @@ -3713,7 +3889,8 @@ -30.0000 rotate gsave 0 0 translate -180 fnt1 68 -1 0 0 180 288 45 LoutGraphic +180 fnt1 +68 -1 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore @@ -3765,7 +3942,8 @@ 30.0000 rotate gsave 0 1 translate -180 fnt1 68 -1 0 -1 180 288 45 LoutGraphic +180 fnt1 +68 -1 0 -1 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore @@ -3822,7 +4000,8 @@ -30.0000 rotate gsave 0 0 translate -180 fnt1 68 -1 0 0 180 288 45 LoutGraphic +180 fnt1 +68 -1 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore @@ -3830,15 +4009,14 @@ grestore grestore -1189 522(curr)m 6(ent)k -1759(bound)s +1189 522(curr)m 6(ent)k 1759(bound)s grestore end end restore grestore [ /Dest /LOUTgapmodes /DEST pdfmark -200 fnt2 180 4638(Figur)m 3(e)k 788(2.)s -200 fnt1 1030 4639(The)m 1386(six)s 1664(g)s 1(ap)k +200 fnt2 180 4638(Figur)m 3(e)k +788(2.)s 200 fnt1 1030 4639(The)m 1386(six)s 1664(g)s 1(ap)k 1995(modes)s 2557(\()s 200 fnt3 2618 4640(length)m 200 fnt1 3162 4639(is)m 3336(an)s 3(y)k 3666(length\).)s 4367(Hyphenation)s 5444(mode)s 5933(has)s 6240(an)s 6475(e)s 3(xtra)k @@ -3900,23 +4078,23 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -5768 -1579(-)m 5896(8)s 6063(-)s 9066 13416 0 13307 240 288 60 1417 -15423 LoutGr2 +5768 -1579(-)m 5896(8)s +6063(-)s 9066 13416 0 13307 240 288 60 1417 -15423 LoutGr2 0 LoutMargSet grestore -0 13253(sho)m 6(wing)k -883(that)s 1325(spanning)s 2267(columns)s 3153(in)s 3420(tables)s -4052(moti)s 6(v)k 6(ate)k 4956(the)s 5328(inclusion)s -6286(of)s 6581(this)s 7001(operator)s 13(.)k 7972(There)s -8609(is)s 8843(an)s 0 12965(analogous)m 220 fnt5 1029 12962(||)m -240 fnt1 1191 12965(operator)m 13(.)k 2145(The)s 2581(author)s -3259(w)s 2(ould)k 3922(ha)s 4(v)k 3(e)k +0 13253(sho)m 6(wing)k 883(that)s 1325(spanning)s +2267(columns)s 3153(in)s 3420(tables)s 4052(moti)s 6(v)k 6(ate)k +4956(the)s 5328(inclusion)s 6286(of)s 6581(this)s 7001(operator)s 13(.)k +7972(There)s 8609(is)s 8843(an)s 0 12965(analogous)m 220 fnt5 +1029 12962(||)m 240 fnt1 1191 12965(operator)m 13(.)k 2145(The)s +2581(author)s 3259(w)s 2(ould)k 3922(ha)s 4(v)k 3(e)k 4430(preferred)s 5370(to)s 5616(lea)s 4(v)k 3(e)k 6177(out)s 6550(these)s 7105(operators,)s 8108(since)s 8663(the)s 3(y)k 0 12677(complicate)m 1104(the)s 1452(implementation,)s 3059(and)s 3463(it)s @@ -4016,8 +4194,8 @@ 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore -192 fnt4 156 121(|)m - +192 fnt4 +156 121(|)m grestore (T) lfigpromotelabels grestore @@ -4060,9 +4238,9 @@ 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 fnt4 56 105(0)m +192 fnt3 195 111(.)m 192 fnt4 270 105(5)m 192 fnt3 +404 111(i)m grestore (T) lfigpromotelabels grestore @@ -4127,9 +4305,9 @@ 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 fnt4 56 105(0)m +192 fnt3 195 111(.)m 192 fnt4 270 105(2)m 192 fnt3 +410 111(i)m grestore (T) lfigpromotelabels grestore @@ -4172,7 +4350,8 @@ 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore -192 fnt3 128 128(c)m +192 fnt3 128 128(c)m + grestore (T) lfigpromotelabels grestore @@ -4226,8 +4405,7 @@ 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore -192 fnt3 -118 105(d)m +192 fnt3 118 105(d)m grestore (T) lfigpromotelabels grestore @@ -4255,10 +4433,10 @@ grestore end end restore grestore -0 2585(Missing)m 879(objects)s 1662(are)s 2065(replaced)s -2987(by)s 3336(empty)s 4044(objects,)s 4883(and)s 5342(sequences)s -6419(of)s 6745(concatenation)s 8186(operators)s 0 2297(are)m 347(consolidated:)s -gsave +0 2585(Missing)m 879(objects)s 1662(are)s +2065(replaced)s 2987(by)s 3336(empty)s 4044(objects,)s 4883(and)s +5342(sequences)s 6419(of)s 6745(concatenation)s 8186(operators)s 0 2297(are)m +347(consolidated:)s gsave 480 648 translate 240 fnt3 2492 1359 0 1298 240 288 12 LoutGraphic gsave @@ -4289,7 +4467,8 @@ 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore -192 fnt3 123 128(a)m +192 fnt3 +123 128(a)m grestore (T) lfigpromotelabels grestore @@ -4316,9 +4495,8 @@ 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 fnt4 56 105(0)m 192 fnt3 195 111(.)m +192 fnt4 270 105(2)m 192 fnt3 410 111(i)m grestore (T) lfigpromotelabels grestore @@ -4345,7 +4523,8 @@ 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore -192 fnt4 156 121(|)m +192 fnt4 +156 121(|)m grestore (T) lfigpromotelabels grestore @@ -4361,8 +4540,7 @@ 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore -192 fnt3 -128 128(c)m +192 fnt3 128 128(c)m grestore (T) lfigpromotelabels grestore @@ -4389,8 +4567,9 @@ 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 fnt4 56 105(0)m +192 fnt3 195 111(.)m 192 fnt4 270 105(3)m 192 fnt3 +402 111(i)m grestore (T) lfigpromotelabels grestore @@ -4417,8 +4596,7 @@ 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore -192 fnt3 -118 105(d)m +192 fnt3 118 105(d)m grestore (T) lfigpromotelabels grestore @@ -4446,7 +4624,8 @@ grestore end end restore grestore -240 fnt4 3284 1886(\336)m gsave +240 fnt4 3284 1886(\336)m +gsave 3825 648 translate 240 fnt3 2492 1359 0 1298 240 288 12 LoutGraphic gsave @@ -4461,8 +4640,7 @@ 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore -192 fnt4 156 121(|)m - +192 fnt4 156 121(|)m grestore (T) lfigpromotelabels grestore @@ -4478,7 +4656,8 @@ 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore -192 fnt3 123 128(a)m +192 fnt3 123 128(a)m + grestore (T) lfigpromotelabels grestore @@ -4505,9 +4684,8 @@ 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 fnt4 56 105(0)m 192 fnt3 195 111(.)m 192 fnt4 +270 105(2)m 192 fnt3 410 111(i)m grestore (T) lfigpromotelabels grestore @@ -4534,7 +4712,8 @@ 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore -192 fnt3 128 128(c)m +192 fnt3 128 128(c)m + grestore (T) lfigpromotelabels grestore @@ -4561,9 +4740,8 @@ 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 fnt4 56 105(0)m 192 fnt3 195 111(.)m 192 fnt4 +270 105(3)m 192 fnt3 402 111(i)m grestore (T) lfigpromotelabels grestore @@ -4590,7 +4768,8 @@ 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore -192 fnt3 118 105(d)m +192 fnt3 118 105(d)m + grestore (T) lfigpromotelabels grestore @@ -4644,20 +4823,21 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -5766 -1579(-)m 5894(9)s 6065(-)s 9066 13414 0 13305 240 288 60 1417 -15423 LoutGr2 +5766 -1579(-)m 5894(9)s +6065(-)s 9066 13414 0 13305 240 288 60 1417 -15423 LoutGr2 1 LoutMargSet grestore -0 13251(to)m 239(mak)s 2(e)k -811(manifest)s 1693(their)s 2190(associati)s 6(vity)k 3432(and)s -3836(reduce)s 4529(the)s 4877(depth)s 5466(of)s 5737(the)s -6085(tree)s 6498(for)s 6836(ef\207cienc)s 3(y)k 7829(later)s 13(.)k +0 13251(to)m 239(mak)s 2(e)k 811(manifest)s +1693(their)s 2190(associati)s 6(vity)k 3432(and)s 3836(reduce)s +4529(the)s 4877(depth)s 5466(of)s 5737(the)s 6085(tree)s +6498(for)s 6836(ef\207cienc)s 3(y)k 7829(later)s 13(.)k 480 12877(The)m 970(required)s 1887(semantic)s 2851(information)s 4099(is)s 4371(the)s 4782(size)s 5271(of)s 5605(each)s 6162(subobject,)s 7249(consisting)s 8334(of)s 8668(four)s 0 12589(inte)m 3(gers:)k @@ -4846,8 +5026,8 @@ 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore -192 fnt4 156 121(|)m - +192 fnt4 +156 121(|)m grestore (T) lfigpromotelabels grestore @@ -4898,7 +5078,8 @@ 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore -192 fnt4 136 106(\244)m +192 fnt4 136 106(\244)m + grestore (T) lfigpromotelabels grestore @@ -4926,8 +5107,7 @@ 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore -192 fnt3 -128 128(c)m +192 fnt3 128 128(c)m grestore (T) lfigpromotelabels grestore @@ -4967,8 +5147,8 @@ 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore -192 fnt3 118 105(d)m - +192 fnt3 +118 105(d)m grestore (T) lfigpromotelabels grestore @@ -5029,62 +5209,62 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -5704 -1579(-)m 5832(10)s 6127(-)s 9066 13416 0 13307 240 288 60 1417 -15423 LoutGr2 +5704 -1579(-)m 5832(10)s +6127(-)s 9066 13416 0 13307 240 288 60 1417 -15423 LoutGr2 0 LoutMargSet grestore -0 13253(is)m 240 fnt4 -480 12745([)m 240 fnt3 563 12753(height)m 240 fnt4 1177 12745(\()m -240 fnt3 1261 12753(a)m 240 fnt4 1388 12745(\))m 1538(\255)s -240 fnt3 1759 12753(height)m 240 fnt4 2373 12745(\()m 240 fnt3 -2457 12753(b)m 240 fnt4 2583 12745(\))m 2661(])s 2792(+)s -2993([)s 240 fnt3 3076 12753(height)m 240 fnt4 3690 12745(\()m -240 fnt3 3774 12753(c)m 240 fnt4 3888 12745(\))m 4038(\255)s -240 fnt3 4259 12753(height)m 240 fnt4 4873 12745(\()m 240 fnt3 -4957 12753(d)m 240 fnt4 5095 12745(\))m 5173(])s 240 fnt1 -0 12249(which)m 642(is)s 852(correct,)s 1621(b)s 4(ut)k -1983(for)s 2321(width)s 2923(the)s 3(y)k 3386(yield)s -240 fnt4 480 11691([)m 240 fnt3 563 11699(width)m 240 fnt4 -1102 11691(\()m 240 fnt3 1186 11699(a)m 240 fnt4 1313 11691(\))m -1451(+)s 240 fnt3 1652 11699(width)m 240 fnt4 2191 11691(\()m -240 fnt3 2275 11699(b)m 240 fnt4 2401 11691(\))m 2479(])s -2622(\255)s 2843([)s 240 fnt3 2926 11699(width)m 240 fnt4 -3465 11691(\()m 240 fnt3 3549 11699(c)m 240 fnt4 3663 11691(\))m -3801(+)s 240 fnt3 4002 11699(width)m 240 fnt4 4541 11691(\()m -240 fnt3 4625 11699(d)m 240 fnt4 4763 11691(\))m 4841(])s -240 fnt1 0 11195(which)m 645(is)s 859(not,)s 1276(since)s -1827(it)s 2023(does)s 2517(not)s 2887(tak)s 2(e)k -3343(the)s 3694(mer)s 4(ging)k 4544(of)s 4819(column)s -5598(marks)s 6237(into)s 6666(account.)s 7578(The)s 8010(asymmetry)s -0 10907(between)m 874(horizontal)s 1918(and)s 2342(v)s 3(ertical)k -3130(has)s 3520(come)s 4114(about)s 4726(because)s 5560(the)s -5928(ro)s 6(w)k 6368(entries,)s 7131(such)s 7648(as)s -240 fnt3 7918 10909(a)m 240 fnt1 8113 10907(and)m 240 fnt3 -8537 10909(b)m 240 fnt1 8651 10907(,)m 8779(are)s 0 10619(adjacent)m -849(in)s 1085(the)s 1426(tree,)s 1883(b)s 4(ut)k -2238(the)s 2579(column)s 3346(entries,)s 4082(such)s 4571(as)s -240 fnt3 4814 10621(a)m 240 fnt1 4982 10619(and)m 240 fnt3 -5379 10621(c)m 240 fnt1 5481 10619(,)m 5581(are)s 5920(not.)s -6383(It)s 6581(w)s 2(ould)k 7229(be)s 7504(possible)s -8337(to)s 8568(solv)s 3(e)k 0 10331(this)m 395(cross-linking)s -1694(problem)s 2550(by)s 2842(augmenting)s 4024(the)s 4370(size)s -4795(information)s 5979(stored)s 6619(in)s 6861(each)s 7354(node)s -7875(to)s 8112(record)s 8778(the)s 0 10043(number)m 791(of)s -1063(marks)s 1698(and)s 2103(the)s 2451(size)s 2879(of)s -3150(each,)s 3696(b)s 4(ut)k 4058(the)s 4407(author)s -5078(has)s 5449(preferred)s 6381(the)s 6730(follo)s 6(wing)k -7707(method)s 8484(which)s 0 9755(mak)m 2(es)k 660(structural)s -1616(changes)s 2438(to)s 2677(the)s 3025(tree)s 3438(instead.)s -480 9381(If)m 240 fnt3 715 9383(a)m 240 fnt1 896 9381(and)m -240 fnt3 1305 9383(c)m 240 fnt1 1473 9381(share)m 2038(a)s -2210(column)s 2990(mark,)s 3594(the)s 3(y)k 4063(each)s -4563(might)s 5187(as)s 5442(well)s 5914(ha)s 4(v)k 3(e)k +0 13253(is)m 240 fnt4 480 12745([)m 240 fnt3 +563 12753(height)m 240 fnt4 1177 12745(\()m 240 fnt3 1261 12753(a)m +240 fnt4 1388 12745(\))m 1538(\255)s 240 fnt3 1759 12753(height)m +240 fnt4 2373 12745(\()m 240 fnt3 2457 12753(b)m 240 fnt4 +2583 12745(\))m 2661(])s 2792(+)s 2993([)s 240 fnt3 +3076 12753(height)m 240 fnt4 3690 12745(\()m 240 fnt3 3774 12753(c)m +240 fnt4 3888 12745(\))m 4038(\255)s 240 fnt3 4259 12753(height)m +240 fnt4 4873 12745(\()m 240 fnt3 4957 12753(d)m 240 fnt4 +5095 12745(\))m 5173(])s 240 fnt1 0 12249(which)m 642(is)s +852(correct,)s 1621(b)s 4(ut)k 1983(for)s 2321(width)s +2923(the)s 3(y)k 3386(yield)s 240 fnt4 480 11691([)m +240 fnt3 563 11699(width)m 240 fnt4 1102 11691(\()m 240 fnt3 +1186 11699(a)m 240 fnt4 1313 11691(\))m 1451(+)s 240 fnt3 +1652 11699(width)m 240 fnt4 2191 11691(\()m 240 fnt3 2275 11699(b)m +240 fnt4 2401 11691(\))m 2479(])s 2622(\255)s 2843([)s +240 fnt3 2926 11699(width)m 240 fnt4 3465 11691(\()m 240 fnt3 +3549 11699(c)m 240 fnt4 3663 11691(\))m 3801(+)s 240 fnt3 +4002 11699(width)m 240 fnt4 4541 11691(\()m 240 fnt3 4625 11699(d)m +240 fnt4 4763 11691(\))m 4841(])s 240 fnt1 0 11195(which)m +645(is)s 859(not,)s 1276(since)s 1827(it)s 2023(does)s +2517(not)s 2887(tak)s 2(e)k 3343(the)s 3694(mer)s 4(ging)k +4544(of)s 4819(column)s 5598(marks)s 6237(into)s 6666(account.)s +7578(The)s 8010(asymmetry)s 0 10907(between)m 874(horizontal)s 1918(and)s +2342(v)s 3(ertical)k 3130(has)s 3520(come)s 4114(about)s +4726(because)s 5560(the)s 5928(ro)s 6(w)k 6368(entries,)s +7131(such)s 7648(as)s 240 fnt3 7918 10909(a)m 240 fnt1 +8113 10907(and)m 240 fnt3 8537 10909(b)m 240 fnt1 8651 10907(,)m +8779(are)s 0 10619(adjacent)m 849(in)s 1085(the)s 1426(tree,)s +1883(b)s 4(ut)k 2238(the)s 2579(column)s 3346(entries,)s +4082(such)s 4571(as)s 240 fnt3 4814 10621(a)m 240 fnt1 +4982 10619(and)m 240 fnt3 5379 10621(c)m 240 fnt1 5481 10619(,)m +5581(are)s 5920(not.)s 6383(It)s 6581(w)s 2(ould)k +7229(be)s 7504(possible)s 8337(to)s 8568(solv)s 3(e)k +0 10331(this)m 395(cross-linking)s 1694(problem)s 2550(by)s 2842(augmenting)s +4024(the)s 4370(size)s 4795(information)s 5979(stored)s 6619(in)s +6861(each)s 7354(node)s 7875(to)s 8112(record)s 8778(the)s +0 10043(number)m 791(of)s 1063(marks)s 1698(and)s 2103(the)s +2451(size)s 2879(of)s 3150(each,)s 3696(b)s 4(ut)k +4058(the)s 4407(author)s 5078(has)s 5449(preferred)s 6381(the)s +6730(follo)s 6(wing)k 7707(method)s 8484(which)s 0 9755(mak)m 2(es)k +660(structural)s 1616(changes)s 2438(to)s 2677(the)s 3025(tree)s +3438(instead.)s 480 9381(If)m 240 fnt3 715 9383(a)m 240 fnt1 +896 9381(and)m 240 fnt3 1305 9383(c)m 240 fnt1 1473 9381(share)m +2038(a)s 2210(column)s 2990(mark,)s 3594(the)s 3(y)k +4063(each)s 4563(might)s 5187(as)s 5442(well)s 5914(ha)s 4(v)k 3(e)k 6420(width)s 240 fnt3 7028 9383(width)m 240 fnt4 7572 9375(\()m 240 fnt3 7662 9383(a)m 240 fnt4 7795 9375(\))m 7961(\255)s 240 fnt3 8199 9383(width)m 240 fnt4 8743 9375(\()m 240 fnt3 @@ -5135,8 +5315,8 @@ 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore -192 fnt3 123 128(a)m - +192 fnt3 +123 128(a)m grestore (T) lfigpromotelabels grestore @@ -5163,7 +5343,8 @@ 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore -192 fnt3 123 128(a)m +192 fnt3 +123 128(a)m grestore (T) lfigpromotelabels grestore @@ -5178,8 +5359,7 @@ 0.15 cm /lfigsolid [ lfigellipse ] lfigdopath pop pop grestore -192 fnt3 -56 107(COL)m +192 fnt3 56 107(COL)m grestore (T) lfigpromotelabels grestore @@ -5204,7 +5384,8 @@ 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore -192 fnt3 128 128(c)m +192 fnt3 128 128(c)m + grestore (T) lfigpromotelabels grestore @@ -5230,8 +5411,7 @@ 0.15 cm /lfigsolid [ lfigellipse ] lfigdopath pop pop grestore -192 fnt3 56 107(SPLIT)m - +192 fnt3 56 107(SPLIT)m grestore (T) lfigpromotelabels grestore @@ -5273,17 +5453,17 @@ grestore end end restore grestore -240 fnt1 0 3815(widens)m 240 fnt3 -740 3817(a)m 240 fnt1 926 3815(to)m 240 fnt3 1176 3817(width)m -240 fnt4 1726 3809(\()m 240 fnt3 1821 3817(a)m 240 fnt4 -1959 3809(\))m 2142(\255)s 240 fnt3 2396 3817(width)m 240 fnt4 -2946 3809(\()m 240 fnt3 3041 3817(c)m 240 fnt4 3166 3809(\))m -240 fnt1 3303 3815(without)m 4105(af)s 6(fecting)k 5011(its)s -5298(height;)s 6019(it)s 6222(is)s 6443(applied)s 7216(to)s -7466(e)s 6(v)k 3(ery)k 8053(object)s 8708(that)s -0 3527(shares)m 638(its)s 904(column)s 1669(mark)s 2211(with)s -2683(at)s 2905(least)s 3392(one)s 3784(other)s 4325(object.)s -5063(A)s 5283(similar)s 5995(transformation)s 7448(in)s 9(v)k 4(olving)k +240 fnt1 +0 3815(widens)m 240 fnt3 740 3817(a)m 240 fnt1 926 3815(to)m +240 fnt3 1176 3817(width)m 240 fnt4 1726 3809(\()m 240 fnt3 +1821 3817(a)m 240 fnt4 1959 3809(\))m 2142(\255)s 240 fnt3 +2396 3817(width)m 240 fnt4 2946 3809(\()m 240 fnt3 3041 3817(c)m +240 fnt4 3166 3809(\))m 240 fnt1 3303 3815(without)m 4105(af)s 6(fecting)k +5011(its)s 5298(height;)s 6019(it)s 6222(is)s 6443(applied)s +7216(to)s 7466(e)s 6(v)k 3(ery)k 8053(object)s +8708(that)s 0 3527(shares)m 638(its)s 904(column)s 1669(mark)s +2211(with)s 2683(at)s 2905(least)s 3392(one)s 3784(other)s +4325(object.)s 5063(A)s 5283(similar)s 5995(transformation)s 7448(in)s 9(v)k 4(olving)k 8396(a)s 240 fnt3 8552 3529(R)m 9(O)k 12(W)k 240 fnt1 0 3239(operator)m 856(deals)s 1398(with)s 1880(shared)s 2562(ro)s 6(w)k 2982(marks.)s 3730(The)s 4158(ef)s 6(fect)k @@ -5309,7 +5489,8 @@ 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore -192 fnt3 123 128(a)m +192 fnt3 123 128(a)m + grestore (T) lfigpromotelabels grestore @@ -5324,8 +5505,7 @@ 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore -192 fnt4 -156 121(|)m +192 fnt4 156 121(|)m grestore (T) lfigpromotelabels grestore @@ -5376,8 +5556,8 @@ 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore -192 fnt4 136 106(\244)m - +192 fnt4 +136 106(\244)m grestore (T) lfigpromotelabels grestore @@ -5420,7 +5600,8 @@ 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore -192 fnt4 156 121(|)m +192 fnt4 156 121(|)m + grestore (T) lfigpromotelabels grestore @@ -5445,8 +5626,7 @@ 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore -192 fnt3 -118 105(d)m +192 fnt3 118 105(d)m grestore (T) lfigpromotelabels grestore @@ -5511,14 +5691,15 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -5714 -1579(-)m 5842(11)s 6117(-)s 9066 13419 0 13363 240 288 60 1417 -15423 LoutGr2 +5714 -1579(-)m 5842(11)s +6117(-)s 9066 13419 0 13363 240 288 60 1417 -15423 LoutGr2 1 LoutMargSet grestore gsave @@ -5536,8 +5717,7 @@ 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore -192 fnt4 136 106(\244)m - +192 fnt4 136 106(\244)m grestore (T) lfigpromotelabels grestore @@ -5553,7 +5733,8 @@ 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore -192 fnt4 156 121(|)m +192 fnt4 +156 121(|)m grestore (T) lfigpromotelabels grestore @@ -5585,8 +5766,8 @@ 0.15 cm /lfigsolid [ lfigellipse ] lfigdopath pop pop grestore -192 fnt3 -56 107(COL)m +192 fnt3 56 107(COL)m + grestore (T) lfigpromotelabels grestore @@ -5629,8 +5810,7 @@ 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore -192 fnt3 128 128(c)m - +192 fnt3 128 128(c)m grestore (T) lfigpromotelabels grestore @@ -5668,7 +5848,8 @@ 0.15 cm /lfigsolid [ lfigellipse ] lfigdopath pop pop grestore -192 fnt3 56 107(R)m 7(O)k 9(W)k +192 fnt3 +56 107(R)m 7(O)k 9(W)k grestore (T) lfigpromotelabels grestore @@ -5684,8 +5865,8 @@ 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore -192 fnt3 -123 128(a)m +192 fnt3 123 128(a)m + grestore (T) lfigpromotelabels grestore @@ -5761,8 +5942,7 @@ 0.15 cm /lfigsolid [ lfigellipse ] lfigdopath pop pop grestore -192 fnt3 56 107(SPLIT)m - +192 fnt3 56 107(SPLIT)m grestore (T) lfigpromotelabels grestore @@ -5778,7 +5958,8 @@ 0.15 cm /lfigsolid [ lfigellipse ] lfigdopath pop pop grestore -192 fnt3 56 107(COL)m +192 fnt3 +56 107(COL)m grestore (T) lfigpromotelabels grestore @@ -5821,8 +6002,8 @@ 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore -192 fnt3 -118 105(d)m +192 fnt3 118 105(d)m + grestore (T) lfigpromotelabels grestore @@ -5860,8 +6041,7 @@ 0.15 cm /lfigsolid [ lfigellipse ] lfigdopath pop pop grestore -192 fnt3 56 107(R)m 7(O)k 9(W)k - +192 fnt3 56 107(R)m 7(O)k 9(W)k grestore (T) lfigpromotelabels grestore @@ -5877,7 +6057,8 @@ 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore -192 fnt3 123 128(a)m +192 fnt3 +123 128(a)m grestore (T) lfigpromotelabels grestore @@ -5964,8 +6145,8 @@ 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore -192 fnt4 -156 121(|)m +192 fnt4 156 121(|)m + grestore (T) lfigpromotelabels grestore @@ -5997,8 +6178,7 @@ 0.15 cm /lfigsolid [ lfigellipse ] lfigdopath pop pop grestore -192 fnt3 56 107(COL)m - +192 fnt3 56 107(COL)m grestore (T) lfigpromotelabels grestore @@ -6014,7 +6194,8 @@ 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore -192 fnt3 123 128(a)m +192 fnt3 +123 128(a)m grestore (T) lfigpromotelabels grestore @@ -6079,8 +6260,8 @@ 0.15 cm /lfigsolid [ lfigellipse ] lfigdopath pop pop grestore -192 fnt3 -56 107(R)m 7(O)k 9(W)k +192 fnt3 56 107(R)m 7(O)k 9(W)k + grestore (T) lfigpromotelabels grestore @@ -6096,8 +6277,7 @@ 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore -192 fnt3 128 128(c)m - +192 fnt3 128 128(c)m grestore (T) lfigpromotelabels grestore @@ -6173,7 +6353,8 @@ 0.15 cm /lfigsolid [ lfigellipse ] lfigdopath pop pop grestore -192 fnt3 56 107(SPLIT)m +192 fnt3 +56 107(SPLIT)m grestore (T) lfigpromotelabels grestore @@ -6189,8 +6370,7 @@ 0.15 cm /lfigsolid [ lfigellipse ] lfigdopath pop pop grestore -192 fnt3 -56 107(COL)m +192 fnt3 56 107(COL)m grestore (T) lfigpromotelabels grestore @@ -6206,7 +6386,8 @@ 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore -192 fnt3 123 105(b)m +192 fnt3 123 105(b)m + grestore (T) lfigpromotelabels grestore @@ -6233,8 +6414,7 @@ 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore -192 fnt3 118 105(d)m - +192 fnt3 118 105(d)m grestore (T) lfigpromotelabels grestore @@ -6272,7 +6452,8 @@ 0.15 cm /lfigsolid [ lfigellipse ] lfigdopath pop pop grestore -192 fnt3 56 107(R)m 7(O)k 9(W)k +192 fnt3 56 107(R)m 7(O)k 9(W)k + grestore (T) lfigpromotelabels grestore @@ -6288,8 +6469,7 @@ 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore -192 fnt3 -128 128(c)m +192 fnt3 128 128(c)m grestore (T) lfigpromotelabels grestore @@ -6366,15 +6546,15 @@ grestore end end restore grestore -0 10598(In)m 244(f)s 2(act,)k -693(common)s 1576(sube)s 3(xpressions)k 3060(are)s 3395(identi\207ed)s -4343(\(tri)s 6(vially\))k 5286(and)s 5678(the)s 6013(result)s -6591(is)s 6788(a)s 6942(directed)s 7756(ac)s 3(yclic)k -8469(graph;)s 0 10310(each)m 486(af)s 6(fected)k 1296(leaf)s -1716(has)s 2076(tw)s 2(o)k 2477(parents,)s 3264(one)s -3657(for)s 3985(width)s 4578(and)s 4972(one)s 5365(for)s -5693(height;)s 6394(and)s 6788(each)s 240 fnt3 7274 10312(COL)m -240 fnt1 7790 10310(or)m 240 fnt3 8040 10312(R)m 9(O)k 12(W)k +0 10598(In)m +244(f)s 2(act,)k 693(common)s 1576(sube)s 3(xpressions)k +3060(are)s 3395(identi\207ed)s 4343(\(tri)s 6(vially\))k 5286(and)s +5678(the)s 6013(result)s 6591(is)s 6788(a)s 6942(directed)s +7756(ac)s 3(yclic)k 8469(graph;)s 0 10310(each)m 486(af)s 6(fected)k +1296(leaf)s 1716(has)s 2076(tw)s 2(o)k 2477(parents,)s +3264(one)s 3657(for)s 3985(width)s 4578(and)s 4972(one)s +5365(for)s 5693(height;)s 6394(and)s 6788(each)s 240 fnt3 +7274 10312(COL)m 240 fnt1 7790 10310(or)m 240 fnt3 8040 10312(R)m 9(O)k 12(W)k 240 fnt1 8604 10310(node)m 0 10022(has)m 360(one)s 752(parent)s 1398(and)s 1792(one)s 2184(child)s 2709(for)s 3037(each)s 3521(object)s 4155(lying)s 4690(on)s 4976(the)s 5314(corresponding)s @@ -6397,7 +6577,8 @@ 0.15 cm /lfigsolid [ lfigbox ] lfigdopath pop pop grestore -230 fnt3 511 178(a)m +230 fnt3 511 178(a)m + grestore 566 452 113 339 240 288 60 1133 1356 LoutGr2 @@ -6405,8 +6586,7 @@ 0.15 cm /lfigsolid [ lfigbox ] lfigdopath pop pop grestore -230 fnt3 -228 150(b)m +230 fnt3 228 150(b)m grestore 566 452 113 339 240 288 60 0 904 LoutGr2 @@ -6422,8 +6602,8 @@ 0.15 cm /lfigsolid [ lfigbox ] lfigdopath pop pop grestore -230 fnt3 222 150(d)m - +230 fnt3 +222 150(d)m grestore 566 452 113 339 240 288 60 1132 904 LoutGr2 @@ -6439,7 +6619,8 @@ 0.15 cm /lfigsolid [ lfigbox ] lfigdopath pop pop grestore -230 fnt3 235 173(f)m +230 fnt3 235 173(f)m + grestore 566 452 113 339 240 288 60 566 452 LoutGr2 @@ -6447,8 +6628,7 @@ 0.15 cm /lfigsolid [ lfigbox ] lfigdopath pop pop grestore -230 fnt3 -228 200(g)m +230 fnt3 228 200(g)m grestore 566 452 113 339 240 288 60 1132 452 LoutGr2 @@ -6464,8 +6644,8 @@ 0.15 cm /lfigsolid [ lfigbox ] lfigdopath pop pop grestore -230 fnt3 253 153(i)m - +230 fnt3 +253 153(i)m grestore 1133 452 113 339 240 288 60 566 0 LoutGr2 @@ -6499,13 +6679,13 @@ 2662 3918(f)m 240 fnt4 2823 3910(\))m 2973(\255)s 240 fnt3 3194 3918(width)m 240 fnt4 3733 3910(\()m 240 fnt3 3817 3918(i)m 240 fnt4 3892 3910(\))m -[ /Dest /LOUT12_1501_s2_4_1 /DEST pdfmark +[ /Dest /LOUT12_1489_s2_4_1 /DEST pdfmark 240 fnt3 480 3367(y)m 240 fnt4 666 3359(=)m 240 fnt3 879 3367(width)m 240 fnt4 1418 3359(\()m 240 fnt3 1502 3367(d)m 240 fnt4 1688 3359(\))m 1838(\255)s 240 fnt3 2059 3367(width)m 240 fnt4 2598 3359(\()m 240 fnt3 2682 3367(g)m 240 fnt4 2808 3359(\))m -[ /Dest /LOUT12_1501_s2_4_2 /DEST pdfmark +[ /Dest /LOUT12_1489_s2_4_2 /DEST pdfmark 240 fnt3 480 2816(z)m 240 fnt4 655 2808(=)m 240 fnt3 868 2816(width)m 240 fnt4 1407 2808(\()m 240 fnt3 1491 2816(b)m 240 fnt4 1617 2808(\))m @@ -6513,7 +6693,7 @@ 240 fnt3 2611 2816(e)m 240 fnt4 2722 2808(\))m 2872(\255)s 240 fnt3 3093 2816(width)m 240 fnt4 3632 2808(\()m 240 fnt3 3716 2816(h)m 240 fnt4 3843 2808(\))m -[ /Dest /LOUT12_1501_s2_4_3 /DEST pdfmark +[ /Dest /LOUT12_1489_s2_4_3 /DEST pdfmark 240 fnt1 0 2312(It)m 224(seems)s 878(clear)s 1420(that)s 240 fnt3 1857 2314(y)m 240 fnt1 2038 2312(at)m 2289(least)s 2805(must)s 3349(appear)s @@ -6576,18 +6756,19 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -5705 -1579(-)m 5833(12)s 6127(-)s 9066 13419 0 13310 240 288 60 1417 -15423 LoutGr2 +5705 -1579(-)m 5833(12)s +6127(-)s 9066 13419 0 13310 240 288 60 1417 -15423 LoutGr2 0 LoutMargSet grestore -0 13256(the)m 349(arro)s 6(ws)k -1045(are)s 1394(required.)s 2355(After)s 2920(a)s 3087(fe)s 6(w)k +0 13256(the)m 349(arro)s 6(ws)k 1045(are)s +1394(required.)s 2355(After)s 2920(a)s 3087(fe)s 6(w)k 3494(ad-)s 3788(hoc)s 4189(attempts)s 5050(to)s 5291(e)s 3(xtend)k 5985(the)s 6334(usual)s 6896(tree)s 7310(representation)s 8722(had)s 0 12968(f)m 2(ailed,)k 665(the)s 1030(author)s 1718(de)s 6(v)k 3(eloped)k @@ -6612,7 +6793,8 @@ 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore -192 fnt3 123 128(a)m +192 fnt3 123 128(a)m + grestore (A) lfigpromotelabels grestore @@ -6625,8 +6807,7 @@ 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore -192 fnt3 -123 105(b)m +192 fnt3 123 105(b)m grestore (B) lfigpromotelabels grestore @@ -6652,8 +6833,8 @@ 0.15 cm /lfigsolid [ lfigcircle ] lfigdopath pop pop grestore -192 fnt3 118 105(d)m - +192 fnt3 +118 105(d)m grestore (D) lfigpromotelabels grestore @@ -6694,7 +6875,8 @@ 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 fnt3 +6796 4176 0 4120 240 288 12 LoutGraphic gsave grestore save gsave 300 dict begin lfigdict begin grestore @@ -6747,8 +6929,7 @@ 0.15 cm /lfigsolid [ lfigbox ] lfigdopath pop pop grestore -192 fnt3 180 128(a)m - +192 fnt3 180 128(a)m grestore (BASE) lfigpromotelabels grestore @@ -6803,7 +6984,8 @@ 0.15 cm /lfigsolid [ lfigbox ] lfigdopath pop pop grestore -192 fnt3 180 105(b)m +192 fnt3 +180 105(b)m grestore (BASE) lfigpromotelabels grestore @@ -6869,7 +7051,8 @@ 0.15 cm /lfigsolid [ lfigbox ] lfigdopath pop pop grestore -192 fnt3 104 107(LK)m +192 fnt3 104 107(LK)m + grestore (BASE) lfigpromotelabels grestore @@ -6935,8 +7118,7 @@ 0.15 cm /lfigsolid [ lfigbox ] lfigdopath pop pop grestore -192 fnt3 -104 107(LK)m +192 fnt3 104 107(LK)m grestore (BASE) lfigpromotelabels grestore @@ -6956,7 +7138,8 @@ grestore gsave 206 150 translate -192 fnt3 39 39 0 39 192 288 48 LoutGraphic +192 fnt3 +39 39 0 39 192 288 48 LoutGraphic gsave /lfigblack [ lfigcircle ] gsave lfigpaintpath grestore 0.5 pt setlinewidth lfiground setlinecap @@ -7057,8 +7240,8 @@ 0.15 cm /lfigsolid [ lfigbox ] lfigdopath pop pop grestore -192 fnt3 185 128(c)m - +192 fnt3 +185 128(c)m grestore (BASE) lfigpromotelabels grestore @@ -7201,25 +7384,25 @@ grestore end end restore grestore -0 5108(where)m 240 fnt3 645 5110(LK)m -240 fnt1 1017 5108(tags)m 1458(a)s 1630(record)s 2304(representing)s -3543(a)s 3715(link.)s 4257(The)s 4690(\207rst)s 5127(list)s -5484(in)s 5732(an)s 3(y)k 6135(node)s 6663(contains)s -7516(all)s 7815(the)s 8169(incoming)s 0 4820(links,)m 577(the)s -931(second)s 1660(contains)s 2514(the)s 2867(outgoing)s 3778(ones.)s -4387(The)s 4821(node)s 5348(serv)s 3(es)k 5999(as)s -6255(the)s 6609(header)s 7311(for)s 7655(both)s 8144(lists.)s -8698(The)s 0 4532(required)m 890(operations)s 1974(reduce)s 2704(to)s -2979(simple)s 3709(appends,)s 4638(deletes,)s 5444(and)s 5885(tra)s 4(v)k 3(ersals)k -6880(of)s 7187(doubly)s 7944(link)s 2(ed)k 8635(lists,)s -0 4244(all)m 325(ha)s 4(ving)k 1058(small)s 1663(constant)s -2552(cost.)s 3133(There)s 3779(is)s 4021(a)s 4219(highly)s -4918(tuned)s 5540(memory)s 6423(allocator)s 9(,)k 7389(and)s -7825(care)s 8310(is)s 8553(tak)s 2(en)k 0 3956(to)m -269(dispose)s 1073(of)s 1374(each)s 1900(node)s 2452(when)s -3058(the)s 3436(last)s 3858(incoming)s 4845(link)s 5308(is)s -5549(deleted,)s 6376(so)s 6672(that)s 7120(there)s 7684(is)s -7924(no)s 8247(need)s 8788(for)s 0 3668(g)m 1(arbage)k +0 5108(where)m +240 fnt3 645 5110(LK)m 240 fnt1 1017 5108(tags)m 1458(a)s +1630(record)s 2304(representing)s 3543(a)s 3715(link.)s 4257(The)s +4690(\207rst)s 5127(list)s 5484(in)s 5732(an)s 3(y)k +6135(node)s 6663(contains)s 7516(all)s 7815(the)s 8169(incoming)s +0 4820(links,)m 577(the)s 931(second)s 1660(contains)s 2514(the)s +2867(outgoing)s 3778(ones.)s 4387(The)s 4821(node)s 5348(serv)s 3(es)k +5999(as)s 6255(the)s 6609(header)s 7311(for)s 7655(both)s +8144(lists.)s 8698(The)s 0 4532(required)m 890(operations)s 1974(reduce)s +2704(to)s 2979(simple)s 3709(appends,)s 4638(deletes,)s 5444(and)s +5885(tra)s 4(v)k 3(ersals)k 6880(of)s 7187(doubly)s +7944(link)s 2(ed)k 8635(lists,)s 0 4244(all)m 325(ha)s 4(ving)k +1058(small)s 1663(constant)s 2552(cost.)s 3133(There)s 3779(is)s +4021(a)s 4219(highly)s 4918(tuned)s 5540(memory)s 6423(allocator)s 9(,)k +7389(and)s 7825(care)s 8310(is)s 8553(tak)s 2(en)k +0 3956(to)m 269(dispose)s 1073(of)s 1374(each)s 1900(node)s +2452(when)s 3058(the)s 3436(last)s 3858(incoming)s 4845(link)s +5308(is)s 5549(deleted,)s 6376(so)s 6672(that)s 7120(there)s +7684(is)s 7924(no)s 8247(need)s 8788(for)s 0 3668(g)m 1(arbage)k 812(collection.)s 480 3294(In)m 739(normal)s 1475(use)s 1854(the)s 2205(number)s 3000(of)s 3275(nodes)s 3888(at)s 4124(higher)s 4799(le)s 6(v)k 3(els)k 5402(of)s 5676(the)s @@ -7278,31 +7461,32 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -5710 -1579(-)m 5838(13)s 6122(-)s 9066 13416 0 13307 240 288 60 1417 -15423 LoutGr2 +5710 -1579(-)m 5838(13)s +6122(-)s 9066 13416 0 13307 240 288 60 1417 -15423 LoutGr2 1 LoutMargSet grestore -0 13253(could)m 588(not)s -952(appear)s 1647(in)s 1887(a)s 2051(v)s 6(ariety)k -2760(of)s 3028(fonts,)s 3611(column)s 4384(widths,)s 5126(etc.)s -5566(This)s 6040(in\210uence)s 6970(cannot)s 7666(tak)s 2(e)k -8116(the)s 8461(purely)s 0 12965(static)m 569(form)s 1106(that)s -1538(block-structured)s 3175(languages)s 4196(use)s 4585(to)s 4837(associate)s -5769(v)s 6(alues)k 6438(with)s 6933(identi\207ers,)s 8009(for)s -8360(then)s 8843(an)s 0 12677(operator)m 850(could)s 1434(not)s -1794(in\210uence)s 2721(the)s 3063(appearance)s 4188(of)s 4453(its)s -4723(parameters;)s 5876(and)s 6274(a)s 6434(state)s 6921(v)s 6(ariable)k -7734(solution)s 8556(is)s 8760(not)s 0 12389(compatible)m 1118(with)s -1600(the)s 1948(o)s 3(v)k 3(erall)k 2660(functional)s -3684(design.)s 480 12015(The)m 914(information)s 2105(needed)s 2848(from)s -3378(the)s 3733(conte)s 3(xt)k 4500(seems)s 5141(quite)s -5682(limited,)s 6471(comprising)s 7607(the)s 7961(font)s 8413(f)s 2(amily)k 15(,)k +0 13253(could)m 588(not)s 952(appear)s 1647(in)s +1887(a)s 2051(v)s 6(ariety)k 2760(of)s 3028(fonts,)s +3611(column)s 4384(widths,)s 5126(etc.)s 5566(This)s 6040(in\210uence)s +6970(cannot)s 7666(tak)s 2(e)k 8116(the)s 8461(purely)s +0 12965(static)m 569(form)s 1106(that)s 1538(block-structured)s 3175(languages)s +4196(use)s 4585(to)s 4837(associate)s 5769(v)s 6(alues)k +6438(with)s 6933(identi\207ers,)s 8009(for)s 8360(then)s 8843(an)s +0 12677(operator)m 850(could)s 1434(not)s 1794(in\210uence)s 2721(the)s +3063(appearance)s 4188(of)s 4453(its)s 4723(parameters;)s 5876(and)s +6274(a)s 6434(state)s 6921(v)s 6(ariable)k 7734(solution)s +8556(is)s 8760(not)s 0 12389(compatible)m 1118(with)s 1600(the)s +1948(o)s 3(v)k 3(erall)k 2660(functional)s 3684(design.)s +480 12015(The)m 914(information)s 2105(needed)s 2848(from)s 3378(the)s +3733(conte)s 3(xt)k 4500(seems)s 5141(quite)s 5682(limited,)s +6471(comprising)s 7607(the)s 7961(font)s 8413(f)s 2(amily)k 15(,)k 0 11727(f)m 2(ace,)k 525(and)s 952(size)s 1402(to)s 1664(use,)s 2114(the)s 2485(style)s 3015(of)s 3309(paragraph)s 4345(breaking)s 5259(required,)s 6185(ho)s 6(w)k 6669(much)s @@ -7419,27 +7603,27 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -5705 -1579(-)m 5833(14)s 6127(-)s 9066 13419 0 13310 240 288 60 1417 -15423 LoutGr2 +5705 -1579(-)m 5833(14)s +6127(-)s 9066 13419 0 13310 240 288 60 1417 -15423 LoutGr2 0 LoutMargSet grestore -0 13256(and)m 404(breaks)s -1079(the)s 1427(remaining)s 2449(columns)s 3311(to)s 3550(equal)s -4123(width,)s 4775(using)s 5347(up)s 5640(all)s 5933(of)s -6204(the)s 6552(a)s 4(v)k 6(ailable)k 7460(space.)s -480 12882(The)m 897(size)s 1313(of)s 1572(an)s 1844(object)s -2476(is)s 2675(not)s 3029(clearly)s 3721(determined)s 4843(when)s -5407(the)s 5744(upw)s 2(ard-mo)k 3(ving)k 7309(size)s -7725(is)s 7923(less)s 8321(than)s 8778(the)s 0 12594(do)m 6(wnw)k 2(ard-mo)k 3(ving)k -1871(a)s 4(v)k 6(ailable)k 2786(space,)s 3431(and)s -3842(the)s 4197(object)s 4849(contains)s 5704(constructs)s 6731(that)s -7156(depend)s 7913(on)s 8218(a)s 4(v)k 6(ailable)k +0 13256(and)m 404(breaks)s 1079(the)s 1427(remaining)s +2449(columns)s 3311(to)s 3550(equal)s 4123(width,)s 4775(using)s +5347(up)s 5640(all)s 5933(of)s 6204(the)s 6552(a)s 4(v)k 6(ailable)k +7460(space.)s 480 12882(The)m 897(size)s 1313(of)s 1572(an)s +1844(object)s 2476(is)s 2675(not)s 3029(clearly)s 3721(determined)s +4843(when)s 5407(the)s 5744(upw)s 2(ard-mo)k 3(ving)k +7309(size)s 7725(is)s 7923(less)s 8321(than)s 8778(the)s +0 12594(do)m 6(wnw)k 2(ard-mo)k 3(ving)k 1871(a)s 4(v)k 6(ailable)k +2786(space,)s 3431(and)s 3842(the)s 4197(object)s 4849(contains)s +5704(constructs)s 6731(that)s 7156(depend)s 7913(on)s 8218(a)s 4(v)k 6(ailable)k 0 12306(space)m 587(\(e.g.)s 1056(right)s 1567(justi\207cation\).)s 2938(F)s 3(or)k 3327(e)s 3(xample,)k 4241(in)s 220 fnt5 480 11805(2i @Wide { Heading // a |1r)m -8(t b })k 240 fnt1 0 11306(it)m 211(seems)s 865(natural)s 1603(to)s @@ -7483,7 +7667,7 @@ 4745(re)s 3(grettably)k 15(,)k 5868(it)s 6060(is)s 6270(not)s 6636(implemented.)s 240 fnt2 0 7547(3.)m 291(De\207nitions)s -[ /Dest /LOUT17_602_s3_0_1 /DEST pdfmark +[ /Dest /LOUT18_651_s3_0_1 /DEST pdfmark 240 fnt1 480 7116(The)m 936(need)s 1474(to)s 1741(pro)s 3(vide)k 2554(a)s 2748(means)s 3438(of)s 3737(packaging)s 4803(useful)s 5470(pieces)s 6146(of)s 6445(code)s 6982(for)s 7348(easy)s @@ -7558,18 +7742,18 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -5709 -1582(-)m 5837(15)s 6123(-)s 9066 13413 0 13304 240 288 60 1417 -15423 LoutGr2 +5709 -1582(-)m 5837(15)s +6123(-)s 9066 13413 0 13304 240 288 60 1417 -15423 LoutGr2 1 LoutMargSet grestore -0 13250(the)m 348(structure)s -gsave +0 13250(the)m 348(structure)s gsave 608 12769 translate 280 fnt3 128 191 0 123 280 288 70 LoutGraphic gsave @@ -7589,7 +7773,8 @@ xmark -0.3 cm xmark ysize 0 0.3 cm lfigpadd ] lfigdopath pop pop grestore -260 fnt5 0 56(y)m +260 fnt5 +0 56(y)m grestore grestore @@ -7727,31 +7912,31 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -5705 -1581(-)m 5833(16)s 6126(-)s 9066 13414 0 13305 240 288 60 1417 -15423 LoutGr2 +5705 -1581(-)m 5833(16)s +6126(-)s 9066 13414 0 13305 240 288 60 1417 -15423 LoutGr2 0 LoutMargSet grestore -0 13251(than)m 469(its)s -745(designer)s 1615(intended.)s 2603(The)s 3031(author)s 3702(wrote)s -4302(the)s 4650(follo)s 6(wing)k 5627(purely)s 6292(as)s -6542(a)s 6708(testing)s 7398(scaf)s 6(fold:)k 220 fnt5 -480 12750(def @P)m 8(age r)k -3(ight x)k 480 12462({)m 480 12174( 8i @Wide 11i @High)m -480 11886( {)m 480 11598( //1i ||1i x ||1i)m 480 11310( //1i)m 480 11022( })m 480 10734(})m -240 fnt1 0 10240(Only)m 518(afterw)s 2(ards)k 1558(did)s -1906(he)s 2172(realize)s 2848(its)s 3108(signi\207cance:)s 4400(the)s -4732(concept)s 5521(of)s 5776(a)s 5926(page)s 6418(had)s -6807(been)s 7300(de\207ned)s 8047(outside)s 8778(the)s 0 9952(implementation,)m -1619(remo)s 3(ving)k 2598(the)s 2959(need)s 3481(for)s -3831(commands)s 4932(for)s 5282(setting)s 5984(page)s 6505(width)s -7119(and)s 7535(height,)s 8253(mar)s 4(gins,)k 0 9664(and)m -404(so)s 670(on.)s 480 9290(De\207ning)m 1393(a)s 1582(sequence)s -2538(of)s 2831(pages)s 3450(is)s 3683(harder)s 9(,)k +0 13251(than)m 469(its)s 745(designer)s 1615(intended.)s +2603(The)s 3031(author)s 3702(wrote)s 4302(the)s 4650(follo)s 6(wing)k +5627(purely)s 6292(as)s 6542(a)s 6708(testing)s 7398(scaf)s 6(fold:)k +220 fnt5 480 12750(def @P)m 8(age r)k -3(ight x)k 480 12462({)m +480 12174( 8i @Wide 11i @High)m 480 11886( {)m 480 11598( //1i ||1i x ||1i)m 480 11310( //1i)m 480 11022( })m +480 10734(})m 240 fnt1 0 10240(Only)m 518(afterw)s 2(ards)k +1558(did)s 1906(he)s 2172(realize)s 2848(its)s 3108(signi\207cance:)s +4400(the)s 4732(concept)s 5521(of)s 5776(a)s 5926(page)s +6418(had)s 6807(been)s 7300(de\207ned)s 8047(outside)s 8778(the)s +0 9952(implementation,)m 1619(remo)s 3(ving)k 2598(the)s 2959(need)s +3481(for)s 3831(commands)s 4932(for)s 5282(setting)s 5984(page)s +6505(width)s 7119(and)s 7535(height,)s 8253(mar)s 4(gins,)k +0 9664(and)m 404(so)s 670(on.)s 480 9290(De\207ning)m 1393(a)s +1582(sequence)s 2538(of)s 2831(pages)s 3450(is)s 3683(harder)s 9(,)k 4414(since)s 4983(their)s 5503(number)s 6317(is)s 6550(not)s 6938(kno)s 6(wn)k 7665(in)s 7931(adv)s 6(ance.)k 8896(A)s 0 9002(simple)m 693(v)s 3(ersion)k 1451(of)s @@ -7833,14 +8018,15 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -5708 -1579(-)m 5836(17)s 6124(-)s 9066 13418 0 13418 240 288 60 1417 -15423 LoutGr2 +5708 -1579(-)m 5836(17)s +6124(-)s 9066 13418 0 13418 240 288 60 1417 -15423 LoutGr2 1 LoutMargSet grestore 0 13255(when)m 576(in)s 9(v)k 4(ok)k 2(ed)k @@ -7874,15 +8060,15 @@ 967(in)s 9(v)k 4(ocation)k 2021(of)s 220 fnt5 2292 2488(@F)m 6(ootSect)k 240 fnt1 3443 2491(produces)m gsave 480 2151 translate -220 fnt5 1440 0 0 0 220 288 61 LoutGraphic +220 fnt5 +1440 0 0 0 220 288 61 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore grestore -220 fnt5 -480 1806(@F)m 6(ootPlace)k 480 1518(@F)m 6(ootPlace)k 480 1230(@F)m 6(ootPlace)k -480 942(...)m +220 fnt5 480 1806(@F)m 6(ootPlace)k 480 1518(@F)m 6(ootPlace)k +480 1230(@F)m 6(ootPlace)k 480 942(...)m grestore 0 0 0 0 240 288 60 1417 -15423 LoutGr2 1 LoutMargSet @@ -7920,19 +8106,20 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -5708 -1579(-)m 5836(18)s 6123(-)s 9066 13416 0 13307 240 288 60 1417 -15423 LoutGr2 +5708 -1579(-)m 5836(18)s +6123(-)s 9066 13416 0 13307 240 288 60 1417 -15423 LoutGr2 0 LoutMargSet grestore -0 13253(The)m 476(e)s 3(xpansion)k -1550(process)s 2367(is)s 2626(v)s 3(ery)k 3150(similar)s -3921(to)s 4209(a)s 4424(BNF)s 4997(deri)s 6(v)k 6(ation,)k +0 13253(The)m 476(e)s 3(xpansion)k 1550(process)s +2367(is)s 2626(v)s 3(ery)k 3150(similar)s 3921(to)s +4209(a)s 4424(BNF)s 4997(deri)s 6(v)k 6(ation,)k 6109(and)s 6562(w)s 2(ould)k 7266(be)s 7597(attempted)s 8646(only)s 0 12965(on)m 297(demand.)s 480 12591(Clearly)m 15(,)k 1276(deciding)s 2154(which)s 2797(e)s 3(xpansions)k 3910(to)s @@ -8041,14 +8228,15 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -5706 -1579(-)m 5834(19)s 6125(-)s 9066 13414 0 13310 240 288 60 1417 -15423 LoutGr2 +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 @@ -8142,67 +8330,67 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -5704 -1579(-)m 5832(20)s 6127(-)s 9066 13416 0 13312 240 288 60 1417 -15423 LoutGr2 +5704 -1579(-)m 5832(20)s +6127(-)s 9066 13416 0 13312 240 288 60 1417 -15423 LoutGr2 0 LoutMargSet grestore -220 fnt5 480 13255(x @Open {)m -480 12967(y @Open {)m 480 12679(Body of document)m 480 12391(}})m 240 fnt1 0 11897(and,)m -453(taking)s 1104(the)s 220 fnt5 1452 11894(@Eq)m 240 fnt1 -1990 11897(symbol)m 2750(abo)s 3(v)k 3(e)k 3372(as)s -3622(e)s 3(xample,)k 4536(we)s 4871(could)s 5461(eliminate)s -6405(its)s 6681(body)s 7215(parameter)s 9(,)k 8267(add)s -220 fnt5 480 11396(def @Body r)m -3(ight x { Slope @F)k 6(ont x })k 240 fnt1 -0 10897(to)m 239(the)s 587(e)s 3(xported)k 1479(de\207nitions)s -2540(of)s 220 fnt5 2811 10894(@Eq)m 240 fnt1 3289 10897(,)m -3396(and)s 3800(replace)s 220 fnt5 480 10396(@Eq { object })m 240 fnt1 -0 9899(by)m 220 fnt5 480 9398(@Eq @Open { @Body { object } })m 240 fnt1 0 8898(If)m -220 fnt5 232 8895(@Eq)m 240 fnt1 772 8898(is)m 985(a)s -1153(g)s 1(alle)k 3(y)k 1790(\(Section)s 2645(5.1\),)s -220 fnt5 3133 8895(@Body)m 240 fnt1 3917 8898(must)m 4444(tak)s 2(e)k -4899(o)s 3(v)k 3(er)k 5380(that)s 5800(function.)s -6764(But)s 7172(one)s 7577(w)s 2(ould)k 8234(not)s -8603(w)s 2(ant)k 0 8610(to)m 253(write)s 813(these)s -1374(clumsy)s 2133(e)s 3(xpressions)k 3311(in)s 3568(practice,)s -4444(and)s 4862(the)s 5224(enclosure)s 6210(of)s 6495(lar)s 4(ge)k -7038(quantities)s 8032(of)s 8317(input)s 8883(in)s 0 8322(e)m 3(xtra)k -534(braces)s 1195(could)s 1785(cause)s 2372(Basser)s 3069(Lout)s -3581(to)s 3820(run)s 4196(out)s 4562(of)s 4833(memory)s -5684(\(Section)s 6537(5.4\).)s 480 7948(A)m 700(quite)s 1224(separate)s -2052(kind)s 2526(of)s 2786(visibility)s 3679(problem)s 4526(arises)s -5110(when)s 5676(e)s 3(xpert)k 6319(users)s 6851(wish)s -7350(to)s 7579(de\207ne)s 8210(an)s 8482(object)s 0 7660(or)m -259(operator)s 1115(for)s 1453(repeated)s 2320(use)s 2695(within,)s -3413(say)s 15(,)k 3824(equations:)s 220 fnt5 480 7161(def isum { sum from i=1 to n })m -240 fnt1 0 6667(As)m 338(it)s 551(stands)s 1221(this)s -1638(can)s 2048(only)s 2549(be)s 2852(placed)s 3555(within)s -4244(the)s 220 fnt5 4613 6664(@Eq)m 240 fnt1 5172 6667(package)m -6033(itself,)s 6637(where)s 220 fnt5 7298 6664(sum)m 240 fnt1 -7780 6667(and)m 8205(the)s 8575(other)s 0 6379(symbols)m 841(are)s -1179(visible,)s 1915(b)s 4(ut)k 2268(it)s 2451(is)s -2653(not)s 3010(desirable)s 3919(to)s 4150(modify)s 4886(the)s -5225(source)s 5897(code)s 6396(of)s 6658(a)s 6816(standard)s -7675(package.)s 8614(Lout)s 0 6091(pro)m 3(vides)k 872(an)s -220 fnt5 1155 6088(impor)m -8(t)k 240 fnt1 1828 6091(clause)m -2481(to)s 2720(solv)s 3(e)k 3278(this)s 3674(problem:)s -220 fnt5 480 5590(impor)m -8(t @Eq)k 480 5302(def isum { sum from i=1 to n })m 240 fnt1 -0 4808(may)m 469(appear)s 1169(after)s 220 fnt5 1669 4805(@Eq)m -240 fnt1 2210 4808(is)m 2423(de\207ned,)s 3239(and)s 3646(it)s -3842(will)s 4271(mak)s 2(e)k 4846(the)s 5198(e)s 3(xported)k -6093(symbols)s 6945(of)s 220 fnt5 7220 4805(@Eq)m 240 fnt1 -7761 4808(visible)m 8458(within)s 0 4520(the)m 335(body)s 855(of)s -220 fnt5 1112 4517(isum)m 240 fnt1 1561 4520(.)m 1711(This)s -2174(feature)s 2878(complicates)s 4056(the)s 4390(treatment)s 5337(of)s -5595(en)s 9(vironments)k 6925(\(Section)s 7764(3.4\),)s 8236(and)s -8626(e)s 6(v)k 3(en)k 0 4232(introduces)m 1050(an)s -1336(insecurity)s 15(,)k 2373(when)s 220 fnt5 2952 4229(isum)m -240 fnt1 3464 4232(is)m 3677(in)s 9(v)k 4(ok)k 2(ed)k +220 fnt5 480 13255(x @Open {)m 480 12967(y @Open {)m 480 12679(Body of document)m +480 12391(}})m 240 fnt1 0 11897(and,)m 453(taking)s 1104(the)s +220 fnt5 1452 11894(@Eq)m 240 fnt1 1990 11897(symbol)m 2750(abo)s 3(v)k 3(e)k +3372(as)s 3622(e)s 3(xample,)k 4536(we)s 4871(could)s +5461(eliminate)s 6405(its)s 6681(body)s 7215(parameter)s 9(,)k +8267(add)s 220 fnt5 480 11396(def @Body r)m -3(ight x { Slope @F)k 6(ont x })k +240 fnt1 0 10897(to)m 239(the)s 587(e)s 3(xported)k +1479(de\207nitions)s 2540(of)s 220 fnt5 2811 10894(@Eq)m 240 fnt1 +3289 10897(,)m 3396(and)s 3800(replace)s 220 fnt5 480 10396(@Eq { object })m +240 fnt1 0 9899(by)m 220 fnt5 480 9398(@Eq @Open { @Body { object } })m 240 fnt1 +0 8898(If)m 220 fnt5 232 8895(@Eq)m 240 fnt1 772 8898(is)m +985(a)s 1153(g)s 1(alle)k 3(y)k 1790(\(Section)s +2645(5.1\),)s 220 fnt5 3133 8895(@Body)m 240 fnt1 3917 8898(must)m +4444(tak)s 2(e)k 4899(o)s 3(v)k 3(er)k +5380(that)s 5800(function.)s 6764(But)s 7172(one)s 7577(w)s 2(ould)k +8234(not)s 8603(w)s 2(ant)k 0 8610(to)m 253(write)s +813(these)s 1374(clumsy)s 2133(e)s 3(xpressions)k 3311(in)s +3568(practice,)s 4444(and)s 4862(the)s 5224(enclosure)s 6210(of)s +6495(lar)s 4(ge)k 7038(quantities)s 8032(of)s 8317(input)s +8883(in)s 0 8322(e)m 3(xtra)k 534(braces)s 1195(could)s +1785(cause)s 2372(Basser)s 3069(Lout)s 3581(to)s 3820(run)s +4196(out)s 4562(of)s 4833(memory)s 5684(\(Section)s 6537(5.4\).)s +480 7948(A)m 700(quite)s 1224(separate)s 2052(kind)s 2526(of)s +2786(visibility)s 3679(problem)s 4526(arises)s 5110(when)s 5676(e)s 3(xpert)k +6319(users)s 6851(wish)s 7350(to)s 7579(de\207ne)s 8210(an)s +8482(object)s 0 7660(or)m 259(operator)s 1115(for)s 1453(repeated)s +2320(use)s 2695(within,)s 3413(say)s 15(,)k 3824(equations:)s +220 fnt5 480 7161(def isum { sum from i=1 to n })m 240 fnt1 0 6667(As)m 338(it)s +551(stands)s 1221(this)s 1638(can)s 2048(only)s 2549(be)s +2852(placed)s 3555(within)s 4244(the)s 220 fnt5 4613 6664(@Eq)m +240 fnt1 5172 6667(package)m 6033(itself,)s 6637(where)s 220 fnt5 +7298 6664(sum)m 240 fnt1 7780 6667(and)m 8205(the)s 8575(other)s +0 6379(symbols)m 841(are)s 1179(visible,)s 1915(b)s 4(ut)k +2268(it)s 2451(is)s 2653(not)s 3010(desirable)s 3919(to)s +4150(modify)s 4886(the)s 5225(source)s 5897(code)s 6396(of)s +6658(a)s 6816(standard)s 7675(package.)s 8614(Lout)s 0 6091(pro)m 3(vides)k +872(an)s 220 fnt5 1155 6088(impor)m -8(t)k 240 fnt1 +1828 6091(clause)m 2481(to)s 2720(solv)s 3(e)k 3278(this)s +3674(problem:)s 220 fnt5 480 5590(impor)m -8(t @Eq)k 480 5302(def isum { sum from i=1 to n })m +240 fnt1 0 4808(may)m 469(appear)s 1169(after)s 220 fnt5 +1669 4805(@Eq)m 240 fnt1 2210 4808(is)m 2423(de\207ned,)s 3239(and)s +3646(it)s 3842(will)s 4271(mak)s 2(e)k 4846(the)s +5198(e)s 3(xported)k 6093(symbols)s 6945(of)s 220 fnt5 +7220 4805(@Eq)m 240 fnt1 7761 4808(visible)m 8458(within)s 0 4520(the)m +335(body)s 855(of)s 220 fnt5 1112 4517(isum)m 240 fnt1 +1561 4520(.)m 1711(This)s 2174(feature)s 2878(complicates)s 4056(the)s +4390(treatment)s 5337(of)s 5595(en)s 9(vironments)k 6925(\(Section)s +7764(3.4\),)s 8236(and)s 8626(e)s 6(v)k 3(en)k +0 4232(introduces)m 1050(an)s 1336(insecurity)s 15(,)k 2373(when)s +220 fnt5 2952 4229(isum)m 240 fnt1 3464 4232(is)m 3677(in)s 9(v)k 4(ok)k 2(ed)k 4495(outside)s 5245(an)s 5531(equation.)s 6522(A)s 6755(simpler)s 7534(approach)s 8471(w)s 2(ould)k 0 3944(be)m 290(to)s 538(allo)s 6(w)k 1126(only)s 1615(one)s 2026(symbol)s @@ -8280,26 +8468,27 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -5714 -1579(-)m 5842(21)s 6117(-)s 9066 13419 0 13310 240 288 60 1417 -15423 LoutGr2 +5714 -1579(-)m 5842(21)s +6117(-)s 9066 13419 0 13310 240 288 60 1417 -15423 LoutGr2 1 LoutMargSet grestore -0 13256(siti)m 6(v)k 3(e)k -565(closure)s 1312(of)s 1584(the)s 1933(call)s 2334(graph)s -2937(is)s 3148(computed,)s 4200(and)s 4605(used)s 5104(to)s -5344(determine)s 6356(whether)s 7187(each)s 7684(non-)s 8112(parameter)s -0 12968(symbol)m 775(is)s 1001(recursi)s 6(v)k 3(e)k -1939(or)s 2214(recepti)s 6(v)k 3(e)k 3151(\(Section)s -4020(5.1\),)s 4522(and)s 4942(whether)s 5787(each)s 6298(parameter)s -7328(is)s 7554(in)s 9(v)k 4(ok)k 2(ed)k -8385(e)s 3(xactly)k 0 12680(once)m 508(or)s 767(not.)s -480 12306(Purely)m 1188(functional)s 2243(systems)s 3082(may)s 3579(e)s 6(v)k 6(aluate)k +0 13256(siti)m 6(v)k 3(e)k 565(closure)s +1312(of)s 1584(the)s 1933(call)s 2334(graph)s 2937(is)s +3148(computed,)s 4200(and)s 4605(used)s 5104(to)s 5344(determine)s +6356(whether)s 7187(each)s 7684(non-)s 8112(parameter)s 0 12968(symbol)m +775(is)s 1001(recursi)s 6(v)k 3(e)k 1939(or)s +2214(recepti)s 6(v)k 3(e)k 3151(\(Section)s 4020(5.1\),)s +4522(and)s 4942(whether)s 5787(each)s 6298(parameter)s 7328(is)s +7554(in)s 9(v)k 4(ok)k 2(ed)k 8385(e)s 3(xactly)k +0 12680(once)m 508(or)s 767(not.)s 480 12306(Purely)m 1188(functional)s +2243(systems)s 3082(may)s 3579(e)s 6(v)k 6(aluate)k 4450(symbol)s 5240(in)s 9(v)k 4(ocations)k 6412(in)s 6686(applicati)s 6(v)k 3(e)k 7812(order)s 8407(\(where)s 0 12018(parameters)m 1092(are)s 1433(e)s 6(v)k 6(aluated)k @@ -8465,28 +8654,28 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -5705 -1579(-)m 5833(22)s 6127(-)s 9066 13419 0 13308 240 288 60 1417 -15423 LoutGr2 +5705 -1579(-)m 5833(22)s +6127(-)s 9066 13419 0 13308 240 288 60 1417 -15423 LoutGr2 0 LoutMargSet grestore -240 fnt3 0 13256(3.)m -274(Height)s 989(calculations.)s 240 fnt1 2312 13254(Calculate)m 3270(the)s -3618(height)s 4276(of)s 4547(e)s 6(v)k 3(ery)k -5123(subobject,)s 6147(from)s 6671(the)s 7019(bottom)s 7757(up.)s -240 fnt3 0 12751(4.)m 283(Horizontal)s 1389(coor)s 8(dinates.)k -240 fnt1 2674 12749(Calculate)m 3641(the)s 3998(horizontal)s 5032(coordinate)s -6106(of)s 6386(each)s 6890(subobject)s 7876(from)s 8409(the)s -8767(top)s 0 12461(do)m 6(wn,)k 634(and)s 1038(store)s -1558(each)s 2053(leaf)s -13(')k 13(s)k 2633(coordinate)s -3698(in)s 3941(the)s 4289(leaf.)s 240 fnt3 0 11977(5.)m -295(V)s 26(ertical)k 1119(coor)s 8(dinates)k 2317(and)s -2765(P)s 19(ostScript)k 3827(g)s 2(ener)k 3(ation.)k +240 fnt3 0 13256(3.)m 274(Height)s 989(calculations.)s +240 fnt1 2312 13254(Calculate)m 3270(the)s 3618(height)s 4276(of)s +4547(e)s 6(v)k 3(ery)k 5123(subobject,)s 6147(from)s +6671(the)s 7019(bottom)s 7757(up.)s 240 fnt3 0 12751(4.)m +283(Horizontal)s 1389(coor)s 8(dinates.)k 240 fnt1 2674 12749(Calculate)m +3641(the)s 3998(horizontal)s 5032(coordinate)s 6106(of)s 6386(each)s +6890(subobject)s 7876(from)s 8409(the)s 8767(top)s 0 12461(do)m 6(wn,)k +634(and)s 1038(store)s 1558(each)s 2053(leaf)s -13(')k 13(s)k +2633(coordinate)s 3698(in)s 3941(the)s 4289(leaf.)s 240 fnt3 +0 11977(5.)m 295(V)s 26(ertical)k 1119(coor)s 8(dinates)k +2317(and)s 2765(P)s 19(ostScript)k 3827(g)s 2(ener)k 3(ation.)k 240 fnt1 5034 11975(Calculate)m 6013(the)s 6383(v)s 3(ertical)k 7171(coordinate)s 8257(of)s 8550(e)s 6(v)k 3(ery)k 0 11687(subobject)m 981(from)s 1509(the)s 1861(top)s 2224(do)s 6(wn,)k @@ -8515,7 +8704,7 @@ 6696(the)s 7076(mer)s 4(ging)k 7954(of)s 8257(passes)s 8952(2)s 0 9082(and)m 404(3.)s 240 fnt2 0 8338(5.)m 291(Galleys)s -[ /Dest /LOUT17_602_s5_0_1 /DEST pdfmark +[ /Dest /LOUT18_651_s5_0_1 /DEST pdfmark 240 fnt1 480 7861(W)m 9(ith)k 1022(objects)s 1767(and)s 2188(de\207nitions)s 3266(under)s 3888(control,)s 4689(the)s 5053(author)s 5741(f)s 2(aced)k 6331(the)s 6696(problem)s @@ -8611,33 +8800,34 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -5710 -1579(-)m 5838(23)s 6122(-)s 9066 13416 0 13416 240 288 60 1417 -15423 LoutGr2 +5710 -1579(-)m 5838(23)s +6122(-)s 9066 13416 0 13416 240 288 60 1417 -15423 LoutGr2 1 LoutMargSet grestore -1659 13218(1.)m 2163(Initialization)s -7172(200)s 1659 12930(2.)m 2163(Memory)s 3041(allocation,)s 4090(ordered)s -4878(dag)s 5277(operations)s 7172(400)s 1659 12642(3.)m 2163(Le)s 3(xical)k -2931(analysis,)s 3808(macros,)s 4605(\207le)s 4966(handling)s 6992(1,350)s -1659 12354(4.)m 2163(P)s 3(arsing)k 2930(of)s 3201(objects)s -3929(and)s 4333(de\207nitions)s 6992(1,150)s 1659 12066(5.)m 2163(Symbol)s -2963(table)s 3483(and)s 3887(call)s 4286(graph)s 7172(600)s -1659 11778(6.)m 2163(Ev)s 6(aluation)k 3250(of)s 3521(pure)s -4002(parse)s 4562(trees)s 6992(1,650)s 1659 11490(7.)m 2163(Reading,)s -3068(storing,)s 3839(and)s 4243(scaling)s 4973(of)s 5244(fonts)s -7172(600)s 1659 11202(8.)m 2163(Cross)s 2759(references)s 3790(and)s -4194(databases)s 6992(1,000)s 1659 10914(9.)m 2163(W)s 9(idth)k -2809(and)s 3213(height)s 3871(calculations,)s 5119(and)s 5523(breaking)s -7172(700)s 1539 10626(10.)m 240 fnt3 2163 10628(Constr)m 3(ained)k -240 fnt1 3410 10626(and)m 240 fnt3 3814 10628(AdjustSize)m 240 fnt1 -7172 10626(700)m 1539 10338(11.)m 2163(T)s 8(ransfer)k 3023(of)s -3294(sized)s 3843(objects)s 4571(into)s 4996(g)s 1(alle)k 3(y)k +1659 13218(1.)m 2163(Initialization)s 7172(200)s 1659 12930(2.)m +2163(Memory)s 3041(allocation,)s 4090(ordered)s 4878(dag)s 5277(operations)s +7172(400)s 1659 12642(3.)m 2163(Le)s 3(xical)k 2931(analysis,)s +3808(macros,)s 4605(\207le)s 4966(handling)s 6992(1,350)s 1659 12354(4.)m +2163(P)s 3(arsing)k 2930(of)s 3201(objects)s 3929(and)s +4333(de\207nitions)s 6992(1,150)s 1659 12066(5.)m 2163(Symbol)s 2963(table)s +3483(and)s 3887(call)s 4286(graph)s 7172(600)s 1659 11778(6.)m +2163(Ev)s 6(aluation)k 3250(of)s 3521(pure)s 4002(parse)s +4562(trees)s 6992(1,650)s 1659 11490(7.)m 2163(Reading,)s 3068(storing,)s +3839(and)s 4243(scaling)s 4973(of)s 5244(fonts)s 7172(600)s +1659 11202(8.)m 2163(Cross)s 2759(references)s 3790(and)s 4194(databases)s +6992(1,000)s 1659 10914(9.)m 2163(W)s 9(idth)k 2809(and)s +3213(height)s 3871(calculations,)s 5119(and)s 5523(breaking)s 7172(700)s +1539 10626(10.)m 240 fnt3 2163 10628(Constr)m 3(ained)k 240 fnt1 +3410 10626(and)m 240 fnt3 3814 10628(AdjustSize)m 240 fnt1 7172 10626(700)m +1539 10338(11.)m 2163(T)s 8(ransfer)k 3023(of)s 3294(sized)s +3843(objects)s 4571(into)s 4996(g)s 1(alle)k 3(y)k 5630(tree)s 7172(450)s 1539 10050(12.)m 2163(Galle)s 3(y)k 2851(\210ushing)s 3676(algorithm)s 6992(1,500)s 1539 9762(13.)m 2163(Coordinate)s 3282(calculations)s 4474(and)s 4878(PostScript)s 5920(output)s 7172(700)s @@ -8692,7 +8882,8 @@ 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 fnt3 +3666 1996 170 1715 240 288 60 LoutGraphic gsave grestore save gsave 200 dict begin lfigdict begin grestore @@ -8708,8 +8899,7 @@ 0.15 cm /lfigsolid [ lfigellipse ] lfigdopath pop pop grestore -170 220(footnote)m - +170 220(footnote)m grestore (T) lfigpromotelabels grestore @@ -8970,42 +9160,43 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -5705 -1579(-)m 5833(24)s 6127(-)s 9066 13419 0 13419 240 288 60 1417 -15423 LoutGr2 +5705 -1579(-)m 5833(24)s +6127(-)s 9066 13419 0 13419 240 288 60 1417 -15423 LoutGr2 0 LoutMargSet grestore -0 13256(The)m 468(tree)s -921(can)s 1351(be)s 1673(deeper)s 9(,)k 2448(for)s -2827(e)s 3(xample)k 3730(with)s 4253(sections)s 5114(appearing)s -6150(within)s 6859(chapters)s 7746(which)s 8429(appear)s 0 12968(within)m -680(the)s 1041(body)s 1587(te)s 3(xt,)k 2062(which)s -2717(appears)s 3510(within)s 4191(the)s 4551(\207nal)s 5044(sequence)s -5990(of)s 6273(pages.)s 6995(Document)s 8065(formatting)s 0 12680(languages)m -1024(generally)s 1984(shirk)s 2540(the)s 2905(issues)s 3544(raised)s -4189(by)s 4500(this)s 4912(dual)s 5396(tree)s 5826(structure,)s -6785(by)s 7096(making)s 7884(the)s 8249(dynamic)s 0 12392(tree)m -421(b)s 4(uilt-in,)k 1235(by)s 1537(limiting)s 2354(one)s -2764(or)s 3032(both)s 3523(trees)s 4032(to)s 4279(tw)s 2(o)k -4697(le)s 6(v)k 3(els,)k 5360(and)s 5773(so)s -6047(on,)s 6402(pro)s 3(viding)k 7391(a)s 7565(classic)s -8263(e)s 3(xample)k 0 12104(of)m 295(the)s 667(impo)s 3(v)k 3(erishing)k -2120(ef)s 6(fect)k 2740(of)s 3035(f)s 2(ailing)k -3733(to)s 3997(permit)s 4704(language)s 5648(features)s 6478(to)s -6741(attain)s 7352(their)s 7873(natural)s 8616(le)s 6(v)k 3(el)k -0 11816(of)m 271(generality)s 15(.)k 480 11442(W)m 19(e)k -854(are)s 1206(thus)s 1662(led)s 2017(to)s 2261(propose)s -3081(a)s 3252(second)s 3980(abstraction)s 5091(for)s 5434(document)s -6443(formatting,)s 7564(which)s 8211(we)s 8552(name)s 0 11154(the)m -240 fnt3 371 11156(galle)m 7(y)k 240 fnt1 1028 11154(in)m -1294(recognition)s 2464(of)s 2759(its)s 3058(similarity)s 4050(to)s -4312(the)s 4684(g)s 1(alle)k 3(ys)k 5432(used)s -5952(in)s 6219(manual)s 7001(typesetting.)s 8238(A)s 8492(g)s 1(alle)k 3(y)k +0 13256(The)m 468(tree)s 921(can)s 1351(be)s +1673(deeper)s 9(,)k 2448(for)s 2827(e)s 3(xample)k +3730(with)s 4253(sections)s 5114(appearing)s 6150(within)s 6859(chapters)s +7746(which)s 8429(appear)s 0 12968(within)m 680(the)s 1041(body)s +1587(te)s 3(xt,)k 2062(which)s 2717(appears)s 3510(within)s +4191(the)s 4551(\207nal)s 5044(sequence)s 5990(of)s 6273(pages.)s +6995(Document)s 8065(formatting)s 0 12680(languages)m 1024(generally)s 1984(shirk)s +2540(the)s 2905(issues)s 3544(raised)s 4189(by)s 4500(this)s +4912(dual)s 5396(tree)s 5826(structure,)s 6785(by)s 7096(making)s +7884(the)s 8249(dynamic)s 0 12392(tree)m 421(b)s 4(uilt-in,)k +1235(by)s 1537(limiting)s 2354(one)s 2764(or)s 3032(both)s +3523(trees)s 4032(to)s 4279(tw)s 2(o)k 4697(le)s 6(v)k 3(els,)k +5360(and)s 5773(so)s 6047(on,)s 6402(pro)s 3(viding)k +7391(a)s 7565(classic)s 8263(e)s 3(xample)k 0 12104(of)m +295(the)s 667(impo)s 3(v)k 3(erishing)k 2120(ef)s 6(fect)k +2740(of)s 3035(f)s 2(ailing)k 3733(to)s 3997(permit)s +4704(language)s 5648(features)s 6478(to)s 6741(attain)s 7352(their)s +7873(natural)s 8616(le)s 6(v)k 3(el)k 0 11816(of)m +271(generality)s 15(.)k 480 11442(W)m 19(e)k 854(are)s +1206(thus)s 1662(led)s 2017(to)s 2261(propose)s 3081(a)s +3252(second)s 3980(abstraction)s 5091(for)s 5434(document)s 6443(formatting,)s +7564(which)s 8211(we)s 8552(name)s 0 11154(the)m 240 fnt3 +371 11156(galle)m 7(y)k 240 fnt1 1028 11154(in)m 1294(recognition)s +2464(of)s 2759(its)s 3058(similarity)s 4050(to)s 4312(the)s +4684(g)s 1(alle)k 3(ys)k 5432(used)s 5952(in)s +6219(manual)s 7001(typesetting.)s 8238(A)s 8492(g)s 1(alle)k 3(y)k 0 10866(consists)m 817(of)s 1098(an)s 1391(object)s 2045(\(such)s 2630(as)s 2890(a)s 3066(footnote\))s 4001(together)s 4854(with)s 5346(a)s 5522(sequence)s 6465(of)s 6746(places)s 7404(where)s @@ -9151,25 +9342,25 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -5709 -1582(-)m 5837(25)s 6123(-)s 9066 13413 0 13304 240 288 60 1417 -15423 LoutGr2 +5709 -1582(-)m 5837(25)s +6123(-)s 9066 13413 0 13304 240 288 60 1417 -15423 LoutGr2 1 LoutMargSet grestore -480 13250(Here)m 1057(is)s -1324(a)s 1547(snapshot)s 2502(of)s 2830(a)s 3053(small)s -3682(dynamic)s 4616(tree,)s 5137(based)s 5797(on)s 6151(the)s -220 fnt5 6556 13247(@P)m 8(ageList)k 240 fnt1 7737 13250(de\207nitions)m -8855(of)s 0 12962(Section)m 774(3.2:)s 6982 3257 0 3257 240 288 60 480 9414 LoutGr2 +480 13250(Here)m 1057(is)s 1324(a)s 1547(snapshot)s +2502(of)s 2830(a)s 3053(small)s 3682(dynamic)s 4616(tree,)s +5137(based)s 5797(on)s 6151(the)s 220 fnt5 6556 13247(@P)m 8(ageList)k +240 fnt1 7737 13250(de\207nitions)m 8855(of)s 0 12962(Section)m 774(3.2:)s +6982 3257 0 3257 240 288 60 480 9414 LoutGr2 grestore save gsave 200 dict begin lfigdict begin grestore -200 fnt3 0 3121(output)m -563(\207le)s gsave +200 fnt3 0 3121(output)m 563(\207le)s gsave 860 0 translate 240 fnt1 0 3257 0 3165 240 288 60 LoutGraphic gsave @@ -9185,8 +9376,8 @@ grestore (A) lfigpromotelabels grestore -1994(r)s 9(oot)k 2370(galle)s 6(y)k -gsave +1994(r)s 9(oot)k +2370(galle)s 6(y)k gsave 1994 2967 translate 240 fnt1 1927 0 0 0 240 288 60 LoutGraphic gsave @@ -9209,9 +9400,10 @@ 0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath stroke grestore -160 fnt1 845 2216(-)m 931(1)s 1035(-)s 410 2000(A)m -563(small)s 140 fnt5 170 1784(@Galle)m 2(y)k 160 fnt1 -743(*)s 904 1617 5 1545 160 180 40 853 275 LoutGr2 +160 fnt1 +845 2216(-)m 931(1)s 1035(-)s 410 2000(A)m 563(small)s +140 fnt5 170 1784(@Galle)m 2(y)k 160 fnt1 743(*)s +904 1617 5 1545 160 180 40 853 275 LoutGr2 currentdict end 200 dict begin begin grestore 10 10 5 5 160 180 40 0 1540 LoutGr2 @@ -9264,8 +9456,8 @@ 0.15 cm /lfigsolid [ lfigbox ] lfigdopath pop pop grestore -160 fnt1 170 171(of)m 351(te)s 2(xt.)k - +160 fnt1 +170 171(of)m 351(te)s 2(xt.)k grestore gsave 5055 1034 translate @@ -9276,7 +9468,8 @@ 0.15 cm /lfigsolid [ lfigbox ] lfigdopath pop pop grestore -160 fnt5 170 203(@Input)m +160 fnt5 +170 203(@Input)m grestore gsave 0 0 translate @@ -9308,17 +9501,17 @@ grestore end end restore grestore -0 8963(The)m 472(components)s 1724(of)s -2039(the)s 2431(body)s 3009(te)s 3(xt)k 3468(g)s 1(alle)k 3(y)k -4146(are)s 4537(lines,)s 5139(e)s 3(xcept)k 5864(for)s -6246(the)s 6638(special)s 7400(recepti)s 6(v)k 3(e)k -8366(symbol)s 220 fnt5 0 8672(@Input)m 240 fnt1 759 8675(which)m -1393(is)s 1595(a)s 1753(placeholder)s 2920(for)s 3249(as)s -3491(yet)s 3835(unread)s 4536(input)s 5080(\(Section)s 5924(5.4\).)s -6459(The)s 6879(components)s 8079(of)s 8342(the)s 8681(root)s -0 8387(g)m 1(alle)k 3(y)k 646(are)s 1006(pages,)s -1671(e)s 3(xcept)k 2364(for)s 2715(the)s 3076(concluding)s -4205(une)s 3(xpanded)k 5431(in)s 9(v)k 4(ocation)k +0 8963(The)m 472(components)s +1724(of)s 2039(the)s 2431(body)s 3009(te)s 3(xt)k +3468(g)s 1(alle)k 3(y)k 4146(are)s 4537(lines,)s +5139(e)s 3(xcept)k 5864(for)s 6246(the)s 6638(special)s +7400(recepti)s 6(v)k 3(e)k 8366(symbol)s 220 fnt5 +0 8672(@Input)m 240 fnt1 759 8675(which)m 1393(is)s 1595(a)s +1753(placeholder)s 2920(for)s 3249(as)s 3491(yet)s 3835(unread)s +4536(input)s 5080(\(Section)s 5924(5.4\).)s 6459(The)s 6879(components)s +8079(of)s 8342(the)s 8681(root)s 0 8387(g)m 1(alle)k 3(y)k +646(are)s 1006(pages,)s 1671(e)s 3(xcept)k 2364(for)s +2715(the)s 3076(concluding)s 4205(une)s 3(xpanded)k 5431(in)s 9(v)k 4(ocation)k 6498(of)s 220 fnt5 6781 8384(@P)m 8(ageList)k 240 fnt1 7845 8387(,)m 7965(which)s 8620(is)s 8843(an)s 0 8099(ine)m 3(xhaustible)k 1328(source)s 2008(of)s 2279(more)s 2826(pages,)s 3478(e)s 3(xpanded)k @@ -9342,8 +9535,8 @@ 0.15 cm /lfigsolid [ lfigellipse ] lfigdopath pop pop grestore -200 fnt3 226 226(HEAD)m - +200 fnt3 +226 226(HEAD)m grestore (A) lfigpromotelabels grestore @@ -9380,8 +9573,8 @@ 0.15 cm /lfigsolid [ lfigellipse ] lfigdopath pop pop grestore -200 fnt3 226 229(RECEPTIVE)m - +200 fnt3 +226 229(RECEPTIVE)m grestore (C) lfigpromotelabels grestore @@ -9424,8 +9617,8 @@ 0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath stroke grestore -160 fnt1 845 2216(-)m 931(1)s 1035(-)s 410 2000(A)m -563(small)s 1587 1611 0 1545 160 180 40 170 275 LoutGr2 +160 fnt1 845 2216(-)m 931(1)s 1035(-)s +410 2000(A)m 563(small)s 1587 1611 0 1545 160 180 40 170 275 LoutGr2 currentdict end 100 dict begin begin grestore 572 132 0 66 160 180 40 0 1479 LoutGr2 @@ -9434,7 +9627,8 @@ 0.15 cm /lfignoline [ lfigbox ] lfigdopath pop pop grestore -140 fnt5 0 30(@Galle)m 2(y )k +140 fnt5 0 30(@Galle)m 2(y )k + grestore (E) lfigpromotelabels grestore @@ -9447,8 +9641,7 @@ 0.15 cm /lfignoline [ lfigbox ] lfigdopath pop pop grestore -140 fnt5 -0 3(@F)m 4(ootSect )k +140 fnt5 0 3(@F)m 4(ootSect )k grestore (F) lfigpromotelabels grestore @@ -9483,7 +9676,8 @@ 0.15 cm /lfigsolid [ lfigellipse ] lfigdopath pop pop grestore -200 fnt3 226 229(GAP)m +200 fnt3 226 229(GAP)m + grestore (C) lfigpromotelabels grestore @@ -9507,8 +9701,7 @@ 0.15 cm /lfigsolid [ lfigellipse ] lfigdopath pop pop grestore -200 fnt3 -226 229(RECEPTIVE)m +200 fnt3 226 229(RECEPTIVE)m grestore (C) lfigpromotelabels grestore @@ -9532,7 +9725,8 @@ 0.15 cm /lfigsolid [ lfigbox ] lfigdopath pop pop grestore -140 fnt5 170 201(@P)m 5(ageList 2)k +140 fnt5 170 201(@P)m 5(ageList 2)k + grestore (D) lfigpromotelabels grestore @@ -9566,8 +9760,7 @@ 0.15 cm /lfigsolid [ lfigellipse ] lfigdopath pop pop grestore -200 fnt3 -226 226(HEAD)m +200 fnt3 226 226(HEAD)m grestore (A) lfigpromotelabels grestore @@ -9615,8 +9808,8 @@ 0.15 cm /lfigsolid [ lfigellipse ] lfigdopath pop pop grestore -200 fnt3 226 229(GAP)m - +200 fnt3 +226 229(GAP)m grestore (B) lfigpromotelabels grestore @@ -9640,7 +9833,8 @@ 0.15 cm /lfigsolid [ lfigbox ] lfigdopath pop pop grestore -160 fnt1 170 171(of)m 351(te)s 2(xt.)k +160 fnt1 170 171(of)m 351(te)s 2(xt.)k + grestore (B) lfigpromotelabels grestore @@ -9664,8 +9858,7 @@ 0.15 cm /lfigsolid [ lfigellipse ] lfigdopath pop pop grestore -200 fnt3 -226 229(GAP)m +200 fnt3 226 229(GAP)m grestore (B) lfigpromotelabels grestore @@ -9713,8 +9906,8 @@ 0.15 cm /lfigsolid [ lfigbox ] lfigdopath pop pop grestore -140 fnt5 170 199(@Input)m - +140 fnt5 +170 199(@Input)m grestore (C) lfigpromotelabels grestore @@ -9775,14 +9968,15 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -5705 -1581(-)m 5833(26)s 6126(-)s 9066 13414 0 13414 240 288 60 1417 -15423 LoutGr2 +5705 -1581(-)m 5833(26)s +6126(-)s 9066 13414 0 13414 240 288 60 1417 -15423 LoutGr2 0 LoutMargSet grestore 0 13251(Each)m 521(g)s 1(alle)k 3(y)k @@ -9972,35 +10166,36 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -5708 -1579(-)m 5836(27)s 6124(-)s 9066 13418 0 13309 240 288 60 1417 -15423 LoutGr2 +5708 -1579(-)m 5836(27)s +6124(-)s 9066 13418 0 13309 240 288 60 1417 -15423 LoutGr2 1 LoutMargSet grestore -0 13255(able)m 454(to)s -693(undo)s 1226(step)s 1664(4\);)s 1975(otherwise)s 2960(delete)s -3586(the)s 3934(tar)s 4(get.)k 4637(Return)s 5345(to)s -5584(step)s 6022(1)s 6177(and)s 6581(continue)s 7461(immediately;)s -240 fnt3 480 12883(SUSPEND.)m 240 fnt1 1685 12881(If)m 1928(the)s -2289(component)s 3426(contains)s 4287(a)s 4466(recepti)s 6(v)k 3(e)k -5402(symbol,)s 6227(it)s 6432(cannot)s 7143(be)s 7438(promoted)s -8426(yet.)s 8896(If)s 0 12593(this)m 392(symbol)s 1148(is)s -1354(the)s 1697(tar)s 4(get)k 2292(of)s 2559(a)s -2720(g)s 1(alle)k 3(y)k 3350(that)s 3764(w)s 2(as)k -4180(written)s 4909(to)s 5144(an)s 5423(auxiliary)s 6321(\207le)s -6678(on)s 6971(a)s 7132(pre)s 6(vious)k 7997(run,)s -8419(read)s 8883(in)s 0 12305(that)m 427(g)s 1(alle)k 3(y)k -1071(and)s 1484(\210ush)s 2017(it.)s 2322(Otherwise)s 3370(suspend)s -4209(on)s 4516(the)s 4873(recepti)s 6(v)k 3(e)k -5805(symbol')s 13(s)k 6729(semaphore;)s 7887(resume)s 8643(later)s -0 12017(from)m 524(step)s 962(4.)s 0 11513(6.)m 284(T)s 16(erminate)k -1305(when)s 1881(the)s 2229(g)s 1(alle)k 3(y)k -2863(is)s 3073(empty)s 15(.)k 0 11010(At)m 354(v)s 6(arious)k +0 13255(able)m 454(to)s 693(undo)s 1226(step)s +1664(4\);)s 1975(otherwise)s 2960(delete)s 3586(the)s 3934(tar)s 4(get.)k +4637(Return)s 5345(to)s 5584(step)s 6022(1)s 6177(and)s +6581(continue)s 7461(immediately;)s 240 fnt3 480 12883(SUSPEND.)m 240 fnt1 +1685 12881(If)m 1928(the)s 2289(component)s 3426(contains)s 4287(a)s +4466(recepti)s 6(v)k 3(e)k 5402(symbol,)s 6227(it)s +6432(cannot)s 7143(be)s 7438(promoted)s 8426(yet.)s 8896(If)s +0 12593(this)m 392(symbol)s 1148(is)s 1354(the)s 1697(tar)s 4(get)k +2292(of)s 2559(a)s 2720(g)s 1(alle)k 3(y)k +3350(that)s 3764(w)s 2(as)k 4180(written)s 4909(to)s +5144(an)s 5423(auxiliary)s 6321(\207le)s 6678(on)s 6971(a)s +7132(pre)s 6(vious)k 7997(run,)s 8419(read)s 8883(in)s +0 12305(that)m 427(g)s 1(alle)k 3(y)k 1071(and)s +1484(\210ush)s 2017(it.)s 2322(Otherwise)s 3370(suspend)s 4209(on)s +4516(the)s 4873(recepti)s 6(v)k 3(e)k 5805(symbol')s 13(s)k +6729(semaphore;)s 7887(resume)s 8643(later)s 0 12017(from)m 524(step)s +962(4.)s 0 11513(6.)m 284(T)s 16(erminate)k 1305(when)s +1881(the)s 2229(g)s 1(alle)k 3(y)k 2863(is)s +3073(empty)s 15(.)k 0 11010(At)m 354(v)s 6(arious)k 1158(points)s 1850(in)s 2148(this)s 2599(algorithm,)s 3691(recepti)s 6(v)k 3(e)k 4668(symbols)s 5572(\(and)s 6111(their)s 6663(semaphores\))s 7975(are)s 8378(deleted)s 0 10722(in)m 273(the)s 652(dynamic)s 1560(parent)s @@ -10049,14 +10244,15 @@ 4030(preceding)s 240 fnt3 5026 7758(G)m 240 fnt1 5199 7756(')m 13(s)k 5409(in)s 9(v)k 4(ocation)k 6463(point:)s gsave 480 2770 translate -200 fnt1 5379 4646 0 4646 200 288 50 LoutGraphic +200 fnt1 +5379 4646 0 4646 200 288 50 LoutGraphic gsave grestore save gsave 200 dict begin lfigdict begin grestore -200 fnt3 -0 4510(dynamic)m 722(par)s 7(ent)k gsave +200 fnt3 0 4510(dynamic)m 722(par)s 7(ent)k gsave 0 1353 translate -200 fnt1 2039 3003 226 2777 200 288 50 LoutGraphic +200 fnt1 +2039 3003 226 2777 200 288 50 LoutGraphic gsave 0.5 pt setlinewidth lfiground setlinecap @@ -10072,8 +10268,7 @@ 0.15 cm /lfignoline [ lfigbox ] lfigdopath pop pop grestore -180 fnt5 0 40(@XT)m 21(arget)k - +180 fnt5 0 40(@XT)m 21(arget)k grestore (A) lfigpromotelabels grestore @@ -10105,14 +10300,15 @@ 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 fnt5 +0 40(X into { @XT)m 21(arget&&f)k 5(ollo)k 2(wing })k grestore (B) lfigpromotelabels grestore gsave 2889 2720 translate -200 fnt1 2039 1302 226 1076 200 288 50 LoutGraphic +200 fnt1 +2039 1302 226 1076 200 288 50 LoutGraphic gsave 0.5 pt setlinewidth lfiground setlinecap @@ -10133,14 +10329,15 @@ 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 fnt5 +0 40(G into { @GT)m 21(arget&&f)k 5(ollo)k 2(wing })k grestore (D) lfigpromotelabels grestore gsave 2889 0 translate -200 fnt1 2039 1869 226 1643 200 288 50 LoutGraphic +200 fnt1 +2039 1869 226 1643 200 288 50 LoutGraphic gsave 0.5 pt setlinewidth lfiground setlinecap @@ -10179,22 +10376,22 @@ grestore end end restore grestore -0 2319(Here)m 240 fnt3 524 2321(G)m 240 fnt1 762 2319(will)m -1193(\207nd)s 1629(the)s 220 fnt5 1982 2316(@GT)m 26(arget)k -240 fnt1 3045 2319(tar)m 4(get)k 3649(within)s 240 fnt3 -4322 2321(X)m 240 fnt1 4478 2319(.)m 4647(This)s 5128(is)s -5343(dangerous,)s 6439(since)s 6991(if)s 7213(the)s 7566(\207rst)s -8002(component)s 0 2031(of)m 240 fnt3 303 2033(G)m 240 fnt1 -568 2031(is)m 811(then)s 1312(promoted)s 2320(via)s 240 fnt3 -2704 2033(X)m 240 fnt1 2952 2031(into)m 3410(the)s 3790(\207rst)s -220 fnt5 4254 2028(@XT)m 26(arget)k 240 fnt1 5319 2031(rather)m -5967(than)s 6469(into)s 6926(the)s 7307(second,)s 240 fnt3 -8111 2033(G)m 240 fnt1 8284 2031(')m 13(s)k 8527(tar)s 4(get)k -0 1743(will)m 438(not)s 817(appear)s 1526(later)s 2022(in)s -2277(the)s 2638(\207nal)s 3130(printed)s 3878(document)s 4894(than)s -5376(its)s 5664(in)s 9(v)k 4(ocation)k 6731(point,)s -7342(as)s 7605(required)s 8471(by)s 8778(the)s 220 fnt5 -0 1452(into)m 240 fnt1 406 1455(clause.)m 480 1081(Accordingly)m 15(,)k +0 2319(Here)m 240 fnt3 524 2321(G)m +240 fnt1 762 2319(will)m 1193(\207nd)s 1629(the)s 220 fnt5 +1982 2316(@GT)m 26(arget)k 240 fnt1 3045 2319(tar)m 4(get)k +3649(within)s 240 fnt3 4322 2321(X)m 240 fnt1 4478 2319(.)m +4647(This)s 5128(is)s 5343(dangerous,)s 6439(since)s 6991(if)s +7213(the)s 7566(\207rst)s 8002(component)s 0 2031(of)m 240 fnt3 +303 2033(G)m 240 fnt1 568 2031(is)m 811(then)s 1312(promoted)s +2320(via)s 240 fnt3 2704 2033(X)m 240 fnt1 2952 2031(into)m +3410(the)s 3790(\207rst)s 220 fnt5 4254 2028(@XT)m 26(arget)k +240 fnt1 5319 2031(rather)m 5967(than)s 6469(into)s 6926(the)s +7307(second,)s 240 fnt3 8111 2033(G)m 240 fnt1 8284 2031(')m 13(s)k +8527(tar)s 4(get)k 0 1743(will)m 438(not)s 817(appear)s +1526(later)s 2022(in)s 2277(the)s 2638(\207nal)s 3130(printed)s +3878(document)s 4894(than)s 5376(its)s 5664(in)s 9(v)k 4(ocation)k +6731(point,)s 7342(as)s 7605(required)s 8471(by)s 8778(the)s +220 fnt5 0 1452(into)m 240 fnt1 406 1455(clause.)m 480 1081(Accordingly)m 15(,)k 1753(when)s 2313(such)s 2794(a)s 2944(tar)s 4(get)k 3528(is)s 3722(chosen,)s 4478(tw)s 2(o)k 4873(special)s 5575(g)s 1(alle)k 3(y)k 6194(inde)s 3(x)k 3(es)k @@ -10245,25 +10442,25 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -5708 -1579(-)m 5836(28)s 6123(-)s 9066 13416 0 13307 240 288 60 1417 -15423 LoutGr2 +5708 -1579(-)m 5836(28)s +6123(-)s 9066 13416 0 13307 240 288 60 1417 -15423 LoutGr2 0 LoutMargSet grestore -0 13253(w)m 2(ould)k -661(not)s 1033(place)s 1600(it)s 1798(earlier)s 2472(than)s -2948(the)s 3302(corresponding)s 240 fnt3 4730 13255(PRECEDES)m 240 fnt1 -5981 13253(inde)m 3(x)k 6571(in)s 6820(the)s 7175(same)s -7728(g)s 1(alle)k 3(y)k 15(,)k 8406(and)s -8817(re)s 8998(-)s 0 12965(jects)m 486(the)s 831(component)s -1952(if)s 2166(it)s 2355(w)s 2(ould.)k 3113(Since)s -240 fnt3 3697 12967(PRECEDES)m 240 fnt1 4939 12965(and)m 240 fnt3 -5340 12967(FOLLO)m 12(WS)k 240 fnt1 6463 12965(inde)m 3(x)k 3(es)k +0 13253(w)m 2(ould)k 661(not)s 1033(place)s +1600(it)s 1798(earlier)s 2472(than)s 2948(the)s 3302(corresponding)s +240 fnt3 4730 13255(PRECEDES)m 240 fnt1 5981 13253(inde)m 3(x)k +6571(in)s 6820(the)s 7175(same)s 7728(g)s 1(alle)k 3(y)k 15(,)k +8406(and)s 8817(re)s 8998(-)s 0 12965(jects)m 486(the)s +831(component)s 1952(if)s 2166(it)s 2355(w)s 2(ould.)k +3113(Since)s 240 fnt3 3697 12967(PRECEDES)m 240 fnt1 4939 12965(and)m +240 fnt3 5340 12967(FOLLO)m 12(WS)k 240 fnt1 6463 12965(inde)m 3(x)k 3(es)k 7236(are)s 7580(rarely)s 8187(used,)s 8730(this)s 0 12677(check)m 619(can)s 1008(be)s 1290(implemented)s 2596(by)s 2890(linear)s 3493(search.)s 480 12303(When)m 1114(tw)s 2(o)k 1529(components)s @@ -10332,7 +10529,8 @@ grestore gsave 2889 1638 translate -240 fnt1 1888 209 0 105 240 288 60 LoutGraphic +240 fnt1 +1888 209 0 105 240 288 60 LoutGraphic gsave currentdict end 200 dict begin begin grestore @@ -10342,8 +10540,7 @@ 0.15 cm /lfignoline [ lfigbox ] lfigdopath pop pop grestore -220 fnt5 0 48(@AlignList)m - +220 fnt5 0 48(@AlignList)m grestore (B) lfigpromotelabels grestore @@ -10356,8 +10553,8 @@ 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 fnt5 226 1138(@AlignPlace)m +226 850(@AlignPlace)m 226 562(...)m 226 274(@EndAlignList)m grestore gsave 0 0 translate @@ -10375,7 +10572,8 @@ grestore end end restore grestore -0 5541(Then)m 549(equations)s 1517(lik)s 2(e)k 1471 214 393 105 240 288 60 480 4987 LoutGr2 +0 5541(Then)m +549(equations)s 1517(lik)s 2(e)k 1471 214 393 105 240 288 60 480 4987 LoutGr2 grestore save gsave 200 dict begin lfigdict begin grestore 1471 214 393 105 240 288 60 0 0 LoutGr2 @@ -10392,18 +10590,18 @@ xmark -0.3 cm xmark ysize 0 0.3 cm lfigpadd ] lfigdopath pop pop grestore -240 fnt3 -0 53(f)m 240 fnt4 113 45(\()m 240 fnt3 197 53(x)m -240 fnt4 315 45(\))m 477(=)s 240 fnt3 690 53(g)m -240 fnt4 816 45(\()m 240 fnt3 900 53(x)m 240 fnt4 -1018 45(\))m 1156(+)s 1357(2)s +240 fnt3 0 53(f)m +240 fnt4 113 45(\()m 240 fnt3 197 53(x)m 240 fnt4 +315 45(\))m 477(=)s 240 fnt3 690 53(g)m 240 fnt4 +816 45(\()m 240 fnt3 900 53(x)m 240 fnt4 1018 45(\))m +1156(+)s 1357(2)s grestore grestore end end restore grestore -0 4536(are)m 358(created)s -1117(and)s 1532(sent)s 1989(to)s 220 fnt5 2239 4533(@AlignPlace&&f)m 6(ollo)k 3(wing)k +0 4536(are)m 358(created)s 1117(and)s +1532(sent)s 1989(to)s 220 fnt5 2239 4533(@AlignPlace&&f)m 6(ollo)k 3(wing)k 240 fnt1 4690 4536(tar)m 4(gets.)k 5498(The)s 3(y)k 6052(collect)s 6760(in)s 7014(the)s 220 fnt5 7374 4533(@AlignList)m 240 fnt1 8492 4536(g)m 1(alle)k 3(y)k 0 4248(and)m @@ -10413,7 +10611,8 @@ 240 fnt3 0 3049(body)m 522(te)s 4(xt)k 926(galle)s 7(y)k gsave 0 166 translate -240 fnt1 2039 2720 226 2494 240 288 60 LoutGraphic +240 fnt1 +2039 2720 226 2494 240 288 60 LoutGraphic gsave 0.5 pt setlinewidth lfiground setlinecap @@ -10429,8 +10628,7 @@ 0.15 cm /lfignoline [ lfigbox ] lfigdopath pop pop grestore -220 fnt5 -0 47(@Galle)m 4(y)k +220 fnt5 0 47(@Galle)m 4(y)k grestore (A) lfigpromotelabels grestore @@ -10448,7 +10646,8 @@ 0.15 cm /lfignoline [ lfigbox ] lfigdopath pop pop grestore -220 fnt5 0 48(@AlignList)m +220 fnt5 +0 48(@AlignList)m grestore (B) lfigpromotelabels grestore @@ -10468,16 +10667,15 @@ 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 fnt3 666 917(f)m 240 fnt4 +779 909(\()m 240 fnt3 863 917(x)m 240 fnt4 981 909(\))m +1143(=)s 240 fnt3 1356 917(g)m 240 fnt4 1482 909(\()m +240 fnt3 1566 917(x)m 240 fnt4 1684 909(\))m 1822(+)s +2023(2)s 240 fnt3 0 629(f)m 240 fnt4 113 621(\()m +240 fnt3 197 629(x)m 240 fnt4 315 621(\))m 453(-)s +240 fnt3 653 629(g)m 240 fnt4 779 621(\()m 240 fnt3 +863 629(x)m 240 fnt4 981 621(\))m 1143(=)s 1356(2)s +220 fnt5 1059 336(...)m 1059 48(@EndAlignList)m grestore grestore @@ -10538,24 +10736,24 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -5706 -1579(-)m 5834(29)s 6125(-)s 9066 13414 0 13305 240 288 60 1417 -15423 LoutGr2 +5706 -1579(-)m 5834(29)s +6125(-)s 9066 13414 0 13305 240 288 60 1417 -15423 LoutGr2 1 LoutMargSet grestore -0 13251(The)m 220 fnt5 -450 13248(@AlignList)m 240 fnt1 1579 13251(g)m 1(alle)k 3(y)k -2236(does)s 2749(not)s 3138(\210ush,)s 3734(because)s 4570(its)s -4868(\207rst)s 5322(component)s 6469(is)s 6702(connected)s 7753(to)s -8015(a)s 8204(recepti)s 6(v)k 3(e)k 0 12963(symbol)m -760(by)s 220 fnt5 1054 12960(/)m 240 fnt1 1178 12963(operators.)m -480 12589(After)m 1048(the)s 1402(last)s 1799(equation,)s 2736(an)s -3025(empty)s 3683(forcing)s 4432(g)s 1(alle)k 3(y)k +0 13251(The)m 220 fnt5 450 13248(@AlignList)m 240 fnt1 +1579 13251(g)m 1(alle)k 3(y)k 2236(does)s 2749(not)s +3138(\210ush,)s 3734(because)s 4570(its)s 4868(\207rst)s 5322(component)s +6469(is)s 6702(connected)s 7753(to)s 8015(a)s 8204(recepti)s 6(v)k 3(e)k +0 12963(symbol)m 760(by)s 220 fnt5 1054 12960(/)m 240 fnt1 +1178 12963(operators.)m 480 12589(After)m 1048(the)s 1402(last)s 1799(equation,)s +2736(an)s 3025(empty)s 3683(forcing)s 4432(g)s 1(alle)k 3(y)k 5072(is)s 5288(sent)s 5739(to)s 220 fnt5 5984 12586(@EndAlignList)m 240 fnt1 7420 12589(,)m 7533(deleting)s 8362(the)s 8716(tw)s 2(o)k 0 12301(remaining)m 1028(recepti)s 6(v)k 3(e)k 1957(symbols)s @@ -10698,47 +10896,48 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -5704 -1579(-)m 5832(30)s 6127(-)s 9066 13416 0 12991 240 288 60 1417 -15423 LoutGr2 +5704 -1579(-)m 5832(30)s +6127(-)s 9066 13416 0 12991 240 288 60 1417 -15423 LoutGr2 0 LoutMargSet grestore -240 fnt3 851 13205(l)m -240 fnt4 1013 13197(\243)m 1223(3)s 240 fnt3 1340 13205(i)m -480 12910(l)m 240 fnt4 618 12902(+)m 240 fnt3 819 12910(r)m -240 fnt4 1013 12902(\243)m 1223(5)s 240 fnt3 1342 12910(i)m -819 12622(r)m 240 fnt4 1013 12614(\243)m 1223(4)s 240 fnt3 -1348 12622(i)m 240 fnt1 0 12113(Object)m 220 fnt5 697 12110(b)m -240 fnt1 871 12113(may)m 1337(ha)s 4(v)k 3(e)k -1838(width)s 240 fnt3 2440 12115(l)m 240 fnt4 2518 12107(,)m -240 fnt3 2625 12115(r)m 240 fnt1 2783 12113(for)m 3121(an)s 3(y)k -240 fnt3 3518 12115(l)m 240 fnt1 3644 12113(and)m 240 fnt3 -4048 12115(r)m 240 fnt1 4206 12113(satisfying)m 5188(these)s 5735(inequalities,)s -6943(and)s 7347(no)s 7640(others.)s 480 11739(Here)m 1000(is)s -1210(another)s 1987(e)s 3(xample:)k 220 fnt5 480 11238(5i @High { a /2ix b })m -240 fnt1 0 10737(Assuming)m 1024(that)s 220 fnt5 1442 10734(a)m -240 fnt1 1619 10737(has)m 1989(height)s 240 fnt4 2647 10731(1)m -240 fnt3 2753 10739(i)m 240 fnt4 2828 10731(,)m 2935(1)s -240 fnt3 3041 10739(i)m 240 fnt1 3104 10737(,)m 3211(the)s -3559(height)s 240 fnt3 4217 10739(l)m 240 fnt4 4295 10731(,)m -240 fnt3 4402 10739(r)m 240 fnt1 4560 10737(of)m 220 fnt5 -4831 10734(b)m 240 fnt1 5005 10737(must)m 5530(satisfy)s 240 fnt4 -480 10179(1)m 240 fnt3 586 10187(i)m 240 fnt4 721 10179(+)m -922(\()s 1006(\()s 1090(1)s 240 fnt3 1196 10187(i)m -240 fnt4 1331 10179(+)m 240 fnt3 1532 10187(l)m 240 fnt4 -1610 10179(\))m 1760(\255)s 1981(2)s 240 fnt3 2107 10187(i)m -240 fnt4 2182 10179(\))m 2320(+)s 240 fnt3 2521 10187(r)m -240 fnt4 2703 10179(\243)m 2913(5)s 240 fnt3 3032 10187(i)m -240 fnt1 0 9634(This)m 478(time)s 960(the)s 240 fnt4 -1325 9628(\255)m 240 fnt1 1539 9634(operation)m 2501(arises)s 3098(from)s -3624(the)s 3975(mark-to-mark)s 5364(g)s 1(ap)k 5765(mode,)s -6406(which)s 7050(will)s 7479(widen)s 8123(the)s 240 fnt4 -8474 9628(2)m 240 fnt3 8602 9636(i)m 240 fnt1 8728 9634(g)m 1(ap)k +240 fnt3 851 13205(l)m 240 fnt4 1013 13197(\243)m +1223(3)s 240 fnt3 1340 13205(i)m 480 12910(l)m 240 fnt4 +618 12902(+)m 240 fnt3 819 12910(r)m 240 fnt4 1013 12902(\243)m +1223(5)s 240 fnt3 1342 12910(i)m 819 12622(r)m 240 fnt4 +1013 12614(\243)m 1223(4)s 240 fnt3 1348 12622(i)m 240 fnt1 +0 12113(Object)m 220 fnt5 697 12110(b)m 240 fnt1 871 12113(may)m +1337(ha)s 4(v)k 3(e)k 1838(width)s 240 fnt3 +2440 12115(l)m 240 fnt4 2518 12107(,)m 240 fnt3 2625 12115(r)m +240 fnt1 2783 12113(for)m 3121(an)s 3(y)k 240 fnt3 +3518 12115(l)m 240 fnt1 3644 12113(and)m 240 fnt3 4048 12115(r)m +240 fnt1 4206 12113(satisfying)m 5188(these)s 5735(inequalities,)s 6943(and)s +7347(no)s 7640(others.)s 480 11739(Here)m 1000(is)s 1210(another)s +1987(e)s 3(xample:)k 220 fnt5 480 11238(5i @High { a /2ix b })m 240 fnt1 +0 10737(Assuming)m 1024(that)s 220 fnt5 1442 10734(a)m 240 fnt1 +1619 10737(has)m 1989(height)s 240 fnt4 2647 10731(1)m 240 fnt3 +2753 10739(i)m 240 fnt4 2828 10731(,)m 2935(1)s 240 fnt3 +3041 10739(i)m 240 fnt1 3104 10737(,)m 3211(the)s 3559(height)s +240 fnt3 4217 10739(l)m 240 fnt4 4295 10731(,)m 240 fnt3 +4402 10739(r)m 240 fnt1 4560 10737(of)m 220 fnt5 4831 10734(b)m +240 fnt1 5005 10737(must)m 5530(satisfy)s 240 fnt4 480 10179(1)m +240 fnt3 586 10187(i)m 240 fnt4 721 10179(+)m 922(\()s +1006(\()s 1090(1)s 240 fnt3 1196 10187(i)m 240 fnt4 +1331 10179(+)m 240 fnt3 1532 10187(l)m 240 fnt4 1610 10179(\))m +1760(\255)s 1981(2)s 240 fnt3 2107 10187(i)m 240 fnt4 +2182 10179(\))m 2320(+)s 240 fnt3 2521 10187(r)m 240 fnt4 +2703 10179(\243)m 2913(5)s 240 fnt3 3032 10187(i)m 240 fnt1 +0 9634(This)m 478(time)s 960(the)s 240 fnt4 1325 9628(\255)m +240 fnt1 1539 9634(operation)m 2501(arises)s 3098(from)s 3624(the)s +3975(mark-to-mark)s 5364(g)s 1(ap)k 5765(mode,)s 6406(which)s +7050(will)s 7479(widen)s 8123(the)s 240 fnt4 8474 9628(2)m +240 fnt3 8602 9636(i)m 240 fnt1 8728 9634(g)m 1(ap)k 0 9346(if)m 217(necessary)s 1200(to)s 1439(pre)s 6(v)k 3(ent)k 220 fnt5 2207 9343(a)m 240 fnt1 2384 9346(and)m 220 fnt5 2788 9343(b)m 240 fnt1 2962 9346(from)m 3486(o)s 3(v)k 3(erlapping.)k @@ -10870,34 +11069,35 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -5714 -1579(-)m 5842(31)s 6117(-)s 9066 13416 0 13307 240 288 60 1417 -15423 LoutGr2 +5714 -1579(-)m 5842(31)s +6117(-)s 9066 13416 0 13307 240 288 60 1417 -15423 LoutGr2 1 LoutMargSet grestore -0 13253(which)m 642(e)s 3(xpands)k -1475(to)s 1714(eight)s 2252(inequalities:)s 240 fnt3 917 12702(l)m -167 fnt3 983 12615(i)m 240 fnt4 1123 12694(\243)m 240 fnt3 -1333 12702(X)m 894 12338(L)m 240 fnt4 1123 12330(\243)m 240 fnt3 -1333 12338(X)m 528 12047(l)m 167 fnt3 594 11960(i)m 240 fnt4 -710 12039(+)m 240 fnt3 911 12047(r)m 167 fnt3 983 11960(i)m -240 fnt4 1123 12039(\243)m 240 fnt3 1333 12047(Y)m 503 11675(l)m -167 fnt3 569 11588(i)m 240 fnt4 685 11667(+)m 240 fnt3 -886 11675(R)m 240 fnt4 1123 11667(\243)m 240 fnt3 1333 11675(Y)m -505 11311(L)m 240 fnt4 710 11303(+)m 240 fnt3 911 11311(r)m -167 fnt3 983 11224(i)m 240 fnt4 1123 11303(\243)m 240 fnt3 -1333 11311(Y)m 480 10947(L)m 240 fnt4 685 10939(+)m 240 fnt3 -886 10947(R)m 240 fnt4 1123 10939(\243)m 240 fnt3 1333 10947(Y)m -911 10664(r)m 167 fnt3 983 10577(i)m 240 fnt4 1123 10656(\243)m -240 fnt3 1333 10664(Z)m 886 10300(R)m 240 fnt4 1123 10292(\243)m -240 fnt3 1333 10300(Z)m 240 fnt1 0 9793(Three)m 613(are)s -960(already)s 1717(kno)s 6(wn,)k 2471(and)s 2875(slightly)s -3646(rearranging)s 4800(the)s 5148(others)s 5783(gi)s 6(v)k 3(es)k +0 13253(which)m 642(e)s 3(xpands)k 1475(to)s +1714(eight)s 2252(inequalities:)s 240 fnt3 917 12702(l)m 167 fnt3 +983 12615(i)m 240 fnt4 1123 12694(\243)m 240 fnt3 1333 12702(X)m +894 12338(L)m 240 fnt4 1123 12330(\243)m 240 fnt3 1333 12338(X)m +528 12047(l)m 167 fnt3 594 11960(i)m 240 fnt4 710 12039(+)m +240 fnt3 911 12047(r)m 167 fnt3 983 11960(i)m 240 fnt4 +1123 12039(\243)m 240 fnt3 1333 12047(Y)m 503 11675(l)m 167 fnt3 +569 11588(i)m 240 fnt4 685 11667(+)m 240 fnt3 886 11675(R)m +240 fnt4 1123 11667(\243)m 240 fnt3 1333 11675(Y)m 505 11311(L)m +240 fnt4 710 11303(+)m 240 fnt3 911 11311(r)m 167 fnt3 +983 11224(i)m 240 fnt4 1123 11303(\243)m 240 fnt3 1333 11311(Y)m +480 10947(L)m 240 fnt4 685 10939(+)m 240 fnt3 886 10947(R)m +240 fnt4 1123 10939(\243)m 240 fnt3 1333 10947(Y)m 911 10664(r)m +167 fnt3 983 10577(i)m 240 fnt4 1123 10656(\243)m 240 fnt3 +1333 10664(Z)m 886 10300(R)m 240 fnt4 1123 10292(\243)m 240 fnt3 +1333 10300(Z)m 240 fnt1 0 9793(Three)m 613(are)s 960(already)s +1717(kno)s 6(wn,)k 2471(and)s 2875(slightly)s 3646(rearranging)s +4800(the)s 5148(others)s 5783(gi)s 6(v)k 3(es)k 240 fnt3 869 9242(l)m 167 fnt3 935 9155(i)m 240 fnt4 1075 9234(\243)m 240 fnt3 1285 9242(X)m 869 8870(l)m 167 fnt3 935 8783(i)m 240 fnt4 1075 8862(\243)m 240 fnt3 1285 8870(Y)m @@ -11015,49 +11215,49 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -5705 -1579(-)m 5833(32)s 6127(-)s 9066 13416 0 13312 240 288 60 1417 -15423 LoutGr2 +5705 -1579(-)m 5833(32)s +6127(-)s 9066 13416 0 13312 240 288 60 1417 -15423 LoutGr2 0 LoutMargSet grestore -220 fnt5 480 13255(@P)m 8(ageList)k -480 12967(//)m 480 12679(@BodyT)m 26(e)k 6(xt)k 480 12391(//)m -480 12103(@Chapter {)m 480 11815( @Section { ...)m 13( })k 480 11527( @Section { ...)m 13( })k -480 11239( ...)m 480 10951( @Section { ...)m 13( })k 480 10663(})m 480 10375(@Chapter {)m -480 10087( ...)m 480 9799(})m 240 fnt1 0 9305(Basser)m 702(Lout)s -1220(is)s 1436(able)s 1896(to)s 2141(read)s 2616(and)s -3026(process)s 3800(such)s 4302(g)s 1(alle)k 3(ys)k -5032(one)s 5440(paragraph)s 6459(at)s 6697(a)s 6869(time)s -7355(\(strictly)s 15(,)k 8194(from)s 8724(one)s 220 fnt5 -0 9014(//)m 240 fnt1 185 9017(at)m 417(the)s 765(outer)s -1316(le)s 6(v)k 3(el)k 1826(of)s 2097(a)s -2263(g)s 1(alle)k 3(y)k 2897(to)s 3136(the)s -3484(ne)s 3(xt\),)k 4079(as)s 4329(we)s 4664(no)s 6(w)k -5125(describe.)s 480 8643(When)m 1147(the)s 1534(parser)s 2215(encounters)s -3341(the)s 3727(be)s 3(ginning)k 4774(of)s 5083(a)s -5288(g)s 1(alle)k 3(y)k 15(,)k 5998(lik)s 2(e)k -220 fnt5 6449 8640(@Chapter)m 240 fnt1 7550 8643(or)m 220 fnt5 -7848 8640(@Section)m 240 fnt1 8788 8643(,)m 8934(it)s 0 8355(initiates)m -831(a)s 1023(ne)s 6(w)k 1495(g)s 1(alle)k 3(y)k -2155(process.)s 3061(The)s 3515(special)s 4258(recepti)s 6(v)k 3(e)k -5206(symbol)s 220 fnt5 5991 8352(@Input)m 240 fnt1 6784 8355(is)m -7019(substituted)s 8139(for)s 8502(the)s 8876(as)s 0 8067(yet)m -357(unread)s 1071(right)s 1588(parameter)s 2607(of)s 2884(the)s -3237(g)s 1(alle)k 3(y)k 15(.)k 3972(As)s -4294(each)s 4795(paragraph)s 5813(of)s 6090(the)s 6443(right)s -6960(parameter)s 7979(is)s 8195(read,)s 8718(it)s 8916(is)s -0 7779(deleted)m 763(from)s 1302(the)s 1665(parse)s 2240(tree)s -2668(and)s 3087(injected)s 3916(into)s 4356(the)s 4719(g)s 1(alle)k 3(y')k 13(s)k -220 fnt5 5524 7776(@Input)m 240 fnt1 6231 7779(.)m 6410(The)s -6853(g)s 1(alle)k 3(y)k 7502(is)s 7727(then)s -8212(resumed.)s 0 7491(The)m 429(parser)s 1074(thus)s 1526(acts)s -1950(as)s 2202(an)s 2487(e)s 3(xtra)k 3022(concurrent)s -4106(process;)s 4937(it)s 5131(has)s 5503(lo)s 6(w)k +220 fnt5 480 13255(@P)m 8(ageList)k 480 12967(//)m +480 12679(@BodyT)m 26(e)k 6(xt)k 480 12391(//)m 480 12103(@Chapter {)m +480 11815( @Section { ...)m 13( })k 480 11527( @Section { ...)m 13( })k 480 11239( ...)m +480 10951( @Section { ...)m 13( })k 480 10663(})m 480 10375(@Chapter {)m 480 10087( ...)m +480 9799(})m 240 fnt1 0 9305(Basser)m 702(Lout)s 1220(is)s +1436(able)s 1896(to)s 2141(read)s 2616(and)s 3026(process)s +3800(such)s 4302(g)s 1(alle)k 3(ys)k 5032(one)s +5440(paragraph)s 6459(at)s 6697(a)s 6869(time)s 7355(\(strictly)s 15(,)k +8194(from)s 8724(one)s 220 fnt5 0 9014(//)m 240 fnt1 +185 9017(at)m 417(the)s 765(outer)s 1316(le)s 6(v)k 3(el)k +1826(of)s 2097(a)s 2263(g)s 1(alle)k 3(y)k +2897(to)s 3136(the)s 3484(ne)s 3(xt\),)k 4079(as)s +4329(we)s 4664(no)s 6(w)k 5125(describe.)s 480 8643(When)m +1147(the)s 1534(parser)s 2215(encounters)s 3341(the)s 3727(be)s 3(ginning)k +4774(of)s 5083(a)s 5288(g)s 1(alle)k 3(y)k 15(,)k +5998(lik)s 2(e)k 220 fnt5 6449 8640(@Chapter)m 240 fnt1 +7550 8643(or)m 220 fnt5 7848 8640(@Section)m 240 fnt1 8788 8643(,)m +8934(it)s 0 8355(initiates)m 831(a)s 1023(ne)s 6(w)k +1495(g)s 1(alle)k 3(y)k 2155(process.)s 3061(The)s +3515(special)s 4258(recepti)s 6(v)k 3(e)k 5206(symbol)s +220 fnt5 5991 8352(@Input)m 240 fnt1 6784 8355(is)m 7019(substituted)s +8139(for)s 8502(the)s 8876(as)s 0 8067(yet)m 357(unread)s +1071(right)s 1588(parameter)s 2607(of)s 2884(the)s 3237(g)s 1(alle)k 3(y)k 15(.)k +3972(As)s 4294(each)s 4795(paragraph)s 5813(of)s 6090(the)s +6443(right)s 6960(parameter)s 7979(is)s 8195(read,)s 8718(it)s +8916(is)s 0 7779(deleted)m 763(from)s 1302(the)s 1665(parse)s +2240(tree)s 2668(and)s 3087(injected)s 3916(into)s 4356(the)s +4719(g)s 1(alle)k 3(y')k 13(s)k 220 fnt5 +5524 7776(@Input)m 240 fnt1 6231 7779(.)m 6410(The)s 6853(g)s 1(alle)k 3(y)k +7502(is)s 7727(then)s 8212(resumed.)s 0 7491(The)m 429(parser)s +1074(thus)s 1526(acts)s 1950(as)s 2202(an)s 2487(e)s 3(xtra)k +3022(concurrent)s 4106(process;)s 4937(it)s 5131(has)s 5503(lo)s 6(w)k 5912(priority)s 15(,)k 6721(so)s 6989(that)s 7409(input)s 7963(is)s 8175(read)s 8646(only)s 0 7203(when)m 597(there)s 1151(is)s 1382(nothing)s 2188(else)s 2636(to)s 2897(do.)s @@ -11190,27 +11390,28 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -5710 -1579(-)m 5838(33)s 6122(-)s 9066 13416 0 13307 240 288 60 1417 -15423 LoutGr2 +5710 -1579(-)m 5838(33)s +6122(-)s 9066 13416 0 13307 240 288 60 1417 -15423 LoutGr2 1 LoutMargSet grestore -0 13253(held)m 466(in)s -704(memory)s 1551(\(pre)s 6(v)k 3(ented)k 2617(by)s -2907(the)s 3250(tar)s 4(get)k 3844(from)s 4364(\210ushing\),)s -5317(or)s 5572(else)s 5994(some)s 6551(forcing)s 7289(g)s 1(alle)k 3(y)k -7918(prematurely)s 0 12965(deletes)m 714(the)s 1062(tar)s 4(get,)k -1708(lea)s 4(ving)k 2461(the)s 2809(g)s 1(alle)k 3(y)k -3443(bereft.)s 480 12591(The)m 929(typical)s 1655(e)s 3(xample)k -2539(of)s 2832(the)s 3201(latter)s 3771(case)s 4260(occurs)s -4956(when)s 5553(the)s 5922(g)s 1(alle)k 3(y)k -6578(is)s 6809(an)s 7113(entry)s 7680(in)s 7944(the)s -8313(table)s 8855(of)s 0 12303(contents,)m 907(launched)s 1832(backw)s 2(ards)k +0 13253(held)m 466(in)s 704(memory)s 1551(\(pre)s 6(v)k 3(ented)k +2617(by)s 2907(the)s 3250(tar)s 4(get)k 3844(from)s +4364(\210ushing\),)s 5317(or)s 5572(else)s 5994(some)s 6551(forcing)s +7289(g)s 1(alle)k 3(y)k 7918(prematurely)s 0 12965(deletes)m +714(the)s 1062(tar)s 4(get,)k 1708(lea)s 4(ving)k +2461(the)s 2809(g)s 1(alle)k 3(y)k 3443(bereft.)s +480 12591(The)m 929(typical)s 1655(e)s 3(xample)k 2539(of)s +2832(the)s 3201(latter)s 3771(case)s 4260(occurs)s 4956(when)s +5553(the)s 5922(g)s 1(alle)k 3(y)k 6578(is)s +6809(an)s 7113(entry)s 7680(in)s 7944(the)s 8313(table)s +8855(of)s 0 12303(contents,)m 907(launched)s 1832(backw)s 2(ards)k 2907(from)s 3435(the)s 3786(be)s 3(ginning)k 4797(of)s 5071(a)s 5241(chapter)s 6007(or)s 6269(section.)s 7113(Its)s 7406(tar)s 4(get)k 8008(in)s 8254(the)s 8606(table)s @@ -11315,33 +11516,34 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -5705 -1579(-)m 5833(34)s 6127(-)s 9066 13416 0 13307 240 288 60 1417 -15423 LoutGr2 +5705 -1579(-)m 5833(34)s +6127(-)s 9066 13416 0 13307 240 288 60 1417 -15423 LoutGr2 0 LoutMargSet grestore -768 13253(A)m 1073(short)s -1687(paragraph)s 480 12965(of)m 751(te)s 3(xt.)k 0 12512(depending)m -1061(on)s 1368(the)s 1726(a)s 4(v)k 6(ailable)k -2645(horizontal)s 3679(space.)s 4384(An)s 4744(unlimited)s 5729(range)s -6326(of)s 6607(paragraph)s 7630(breaking)s 8531(styles)s 0 12224(could)m -590(be)s 872(de\207ned,)s 1684(including)s 2641(ragged)s 3350(right,)s -3908(ragged)s 4617(left,)s 5041(break-and-center)s 9(,)k 6757(and)s -7161(so)s 7427(on.)s 480 11850(In)m 765(Basser)s 1492(Lout,)s -2081(indented)s 2992(paragraphs)s 4122(are)s 4499(produced)s 5477(by)s -5801(preceding)s 6827(them)s 7394(with)s 7906(a)s 8102(horizontal)s -0 11562(concatenation)m 1380(operator)s 9(,)k 2269(for)s 2602(e)s 3(xample)k -220 fnt5 3459 11559(|0.5i)m 240 fnt1 3855 11562(.)m 4014(This)s -4485(has)s 4849(the)s 5192(unfortunate)s 6345(ef)s 6(fect)k -6935(of)s 7201(making)s 7967(an)s 8244(indented)s 0 11274(paragraph)m -1007(into)s 1426(a)s 1586(single)s 2207(component)s 3325(of)s -3590(the)s 3932(enclosing)s 4895(g)s 1(alle)k 3(y)k 15(,)k -5561(so)s 5821(that)s 6233(it)s 6419(will)s 6839(al)s 2(w)k 2(ays)k +768 13253(A)m 1073(short)s 1687(paragraph)s 480 12965(of)m +751(te)s 3(xt.)k 0 12512(depending)m 1061(on)s 1368(the)s +1726(a)s 4(v)k 6(ailable)k 2645(horizontal)s 3679(space.)s +4384(An)s 4744(unlimited)s 5729(range)s 6326(of)s 6607(paragraph)s +7630(breaking)s 8531(styles)s 0 12224(could)m 590(be)s 872(de\207ned,)s +1684(including)s 2641(ragged)s 3350(right,)s 3908(ragged)s 4617(left,)s +5041(break-and-center)s 9(,)k 6757(and)s 7161(so)s 7427(on.)s +480 11850(In)m 765(Basser)s 1492(Lout,)s 2081(indented)s 2992(paragraphs)s +4122(are)s 4499(produced)s 5477(by)s 5801(preceding)s 6827(them)s +7394(with)s 7906(a)s 8102(horizontal)s 0 11562(concatenation)m 1380(operator)s 9(,)k +2269(for)s 2602(e)s 3(xample)k 220 fnt5 3459 11559(|0.5i)m +240 fnt1 3855 11562(.)m 4014(This)s 4485(has)s 4849(the)s +5192(unfortunate)s 6345(ef)s 6(fect)k 6935(of)s 7201(making)s +7967(an)s 8244(indented)s 0 11274(paragraph)m 1007(into)s 1426(a)s +1586(single)s 2207(component)s 3325(of)s 3590(the)s 3932(enclosing)s +4895(g)s 1(alle)k 3(y)k 15(,)k 5561(so)s +5821(that)s 6233(it)s 6419(will)s 6839(al)s 2(w)k 2(ays)k 7544(be)s 7820(k)s 2(ept)k 8283(together)s 0 10986(on)m 297(one)s 699(page.)s 1315(Horizontal)s 2392(g)s 1(alle)k 3(ys)k 3116(solv)s 3(e)k 3674(this)s 4070(problem)s 4927(with)s @@ -11474,49 +11676,50 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -5709 -1582(-)m 5837(35)s 6123(-)s 9066 13413 0 13413 240 288 60 1417 -15423 LoutGr2 +5709 -1582(-)m 5837(35)s +6123(-)s 9066 13413 0 13413 240 288 60 1417 -15423 LoutGr2 1 LoutMargSet grestore -240 fnt2 0 12672(6.)m -291(Cr)s 4(oss)k 926(r)s 4(efer)k 4(ences)k - -[ /Dest /LOUT17_602_s6_0_1 /DEST pdfmark -240 fnt1 480 12240(Cross)m 1064(references,)s 2138(such)s 2622(as)s -2859(`see)s 3286(page)s 3782(57')s 4121(and)s 4512(`see)s -4940(Figure)s 5607(5,)s 16(')k 5871(are)s 6205(a)s -6358(useful)s 6985(b)s 4(ut)k 7334(highly)s 7987(error)s 4(-prone)k -0 11952(feature)m 716(of)s 985(documents.)s 2184(Scribe)s 2848([7])s -3163(introduced)s 4242(a)s 4406(method)s 5180(of)s 5449(k)s 2(eeping)k -6256(them)s 6792(up)s 7083(to)s 7320(date)s 7772(automatically)s -0 11664(as)m 245(the)s 587(document)s 1585(changes:)s 2517(the)s -2859(user)s 3311(gi)s 6(v)k 3(es)k 3852(each)s -4342(referenced)s 5401(entity)s 5993(a)s 6153(tag,)s 6547(and)s -6945(operators)s 7879(are)s 8220(pro)s 3(vided)k 0 11376(that)m -418(return)s 1045(the)s 1393(page)s 1901(or)s 2160(sequence)s -3093(number)s 3884(of)s 4155(the)s 4503(entity)s 5101(with)s -5583(a)s 5749(gi)s 6(v)k 3(en)k 6329(tag.)s -480 11002(A)m 712(cross)s 1256(reference)s 2201(tak)s 2(es)k -2743(an)s 3028(object)s 3674(\(such)s 4251(as)s 4503(a)s -4671(page)s 5181(number\))s 6042(from)s 6568(one)s 6972(point)s -7526(in)s 7771(the)s 8122(document)s 0 10714(and)m 435(copies)s -1128(it)s 1351(to)s 1621(another)s 9(,)k 2467(and)s -2902(this)s 3329(generalization)s 4770(suggests)s 5663(other)s 6245(applications.)s -7595(F)s 3(or)k 8015(e)s 3(xample,)k 8960(a)s -0 10426(running)m 831(header)s 1562(is)s 1806(copied)s 2536(from)s -3094(the)s 3475(title)s 3935(of)s 4240(a)s 4440(nearby)s -5179(chapter)s 9(,)k 6013(and)s 6451(a)s 6651(reference)s -7628(is)s 7872(copied)s 8602(from)s 0 10138(a)m 207(bibliographic)s -1576(database.)s 2604(Making)s 3443(the)s 3832(unity)s 4419(of)s -4731(these)s 5319(applications)s 6566(manifest)s 7489(is)s 7740(an)s -8065(interesting)s 0 9850(language)m 920(design)s 1602(problem.)s 240 fnt2 -0 9201(6.1.)m 471(The)s 926(cr)s 4(oss)k 1494(r)s 4(efer)k 4(ence)k +240 fnt2 0 12672(6.)m 291(Cr)s 4(oss)k +926(r)s 4(efer)k 4(ences)k +[ /Dest /LOUT18_651_s6_0_1 /DEST pdfmark +240 fnt1 480 12240(Cross)m +1064(references,)s 2138(such)s 2622(as)s 2859(`see)s 3286(page)s +3782(57')s 4121(and)s 4512(`see)s 4940(Figure)s 5607(5,)s 16(')k +5871(are)s 6205(a)s 6358(useful)s 6985(b)s 4(ut)k +7334(highly)s 7987(error)s 4(-prone)k 0 11952(feature)m 716(of)s +985(documents.)s 2184(Scribe)s 2848([7])s 3163(introduced)s 4242(a)s +4406(method)s 5180(of)s 5449(k)s 2(eeping)k 6256(them)s +6792(up)s 7083(to)s 7320(date)s 7772(automatically)s 0 11664(as)m +245(the)s 587(document)s 1585(changes:)s 2517(the)s 2859(user)s +3311(gi)s 6(v)k 3(es)k 3852(each)s 4342(referenced)s +5401(entity)s 5993(a)s 6153(tag,)s 6547(and)s 6945(operators)s +7879(are)s 8220(pro)s 3(vided)k 0 11376(that)m 418(return)s +1045(the)s 1393(page)s 1901(or)s 2160(sequence)s 3093(number)s +3884(of)s 4155(the)s 4503(entity)s 5101(with)s 5583(a)s +5749(gi)s 6(v)k 3(en)k 6329(tag.)s 480 11002(A)m +712(cross)s 1256(reference)s 2201(tak)s 2(es)k 2743(an)s +3028(object)s 3674(\(such)s 4251(as)s 4503(a)s 4671(page)s +5181(number\))s 6042(from)s 6568(one)s 6972(point)s 7526(in)s +7771(the)s 8122(document)s 0 10714(and)m 435(copies)s 1128(it)s +1351(to)s 1621(another)s 9(,)k 2467(and)s 2902(this)s +3329(generalization)s 4770(suggests)s 5663(other)s 6245(applications.)s 7595(F)s 3(or)k +8015(e)s 3(xample,)k 8960(a)s 0 10426(running)m 831(header)s +1562(is)s 1806(copied)s 2536(from)s 3094(the)s 3475(title)s +3935(of)s 4240(a)s 4440(nearby)s 5179(chapter)s 9(,)k +6013(and)s 6451(a)s 6651(reference)s 7628(is)s 7872(copied)s +8602(from)s 0 10138(a)m 207(bibliographic)s 1576(database.)s 2604(Making)s +3443(the)s 3832(unity)s 4419(of)s 4731(these)s 5319(applications)s +6566(manifest)s 7489(is)s 7740(an)s 8065(interesting)s 0 9850(language)m +920(design)s 1602(problem.)s 240 fnt2 0 9201(6.1.)m 471(The)s +926(cr)s 4(oss)k 1494(r)s 4(efer)k 4(ence)k 2496(abstraction)s [ /Dest /LOUTcross /DEST pdfmark 240 fnt1 480 8770(In)m 736(de)s 6(v)k 3(eloping)k @@ -11612,29 +11815,29 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -5705 -1581(-)m 5833(36)s 6126(-)s 9066 13414 0 13305 240 288 60 1417 -15423 LoutGr2 +5705 -1581(-)m 5833(36)s +6126(-)s 9066 13414 0 13305 240 288 60 1417 -15423 LoutGr2 0 LoutMargSet grestore -0 13251(practice)m 825(e)s 3(xcept)k -1521(one,)s 1988(which)s 2645(may)s 3126(be)s 3422(typi\207ed)s -4226(by)s 4535(the)s 4897(problem)s 5769(of)s 6054(\207nding)s -6801(the)s 7164(number)s 7969(of)s 8255(the)s 8618(page)s -0 12963(on)m 303(which)s 952(the)s 1306(chapter)s 2076(whose)s -2750(tag)s 3102(is)s 220 fnt5 3318 12960(intro)m 240 fnt1 -3804 12963(be)m 3(gins.)k 4596(T)s 19(w)k 2(o)k -5074(cross)s 5622(referencing)s 6769(steps)s 7304(are)s 7658(needed,)s -8449(\207rst)s 8887(to)s 220 fnt5 0 12672(@Chapter&&intro)m 240 fnt1 -1714 12675(,)m 1821(then)s 2290(from)s 2814(there)s 3347(to)s -220 fnt5 3586 12672(@P)m 8(age&&preceding)k 240 fnt1 5556 12675(,)m -5663(where)s 6303(the)s 6651(page)s 7159(number)s 7950(is)s -8160(kno)s 6(wn.)k 480 12301(Gi)m 6(v)k 3(en)k +0 13251(practice)m 825(e)s 3(xcept)k 1521(one,)s +1988(which)s 2645(may)s 3126(be)s 3422(typi\207ed)s 4226(by)s +4535(the)s 4897(problem)s 5769(of)s 6054(\207nding)s 6801(the)s +7164(number)s 7969(of)s 8255(the)s 8618(page)s 0 12963(on)m +303(which)s 952(the)s 1306(chapter)s 2076(whose)s 2750(tag)s +3102(is)s 220 fnt5 3318 12960(intro)m 240 fnt1 3804 12963(be)m 3(gins.)k +4596(T)s 19(w)k 2(o)k 5074(cross)s 5622(referencing)s +6769(steps)s 7304(are)s 7658(needed,)s 8449(\207rst)s 8887(to)s +220 fnt5 0 12672(@Chapter&&intro)m 240 fnt1 1714 12675(,)m 1821(then)s +2290(from)s 2814(there)s 3347(to)s 220 fnt5 3586 12672(@P)m 8(age&&preceding)k +240 fnt1 5556 12675(,)m 5663(where)s 6303(the)s 6651(page)s +7159(number)s 7950(is)s 8160(kno)s 6(wn.)k 480 12301(Gi)m 6(v)k 3(en)k 1113(our)s 1492(success)s 2260(so)s 2526(f)s 2(ar)k 9(,)k 2886(this)s 3282(last)s 3673(problem)s 4530(pro)s 3(v)k 3(es)k 5213(to)s 5452(be)s 5734(surprisingly)s 6930(dif\207cult.)s 7850(W)s 19(e)k @@ -11752,33 +11955,33 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -5708 -1579(-)m 5836(37)s 6124(-)s 9066 13416 0 13307 240 288 60 1417 -15423 LoutGr2 +5708 -1579(-)m 5836(37)s +6124(-)s 9066 13416 0 13307 240 288 60 1417 -15423 LoutGr2 1 LoutMargSet grestore -0 13253(on)m 301(the)s -654(third,)s 1217(and)s 1625(so)s 1896(on.)s 2305(Cross)s -2906(references)s 3941(al)s 2(w)k 2(ays)k 4657(lag)s -5007(one)s 5413(run)s 5794(behind)s 6509(the)s 6862(rest)s -7270(of)s 7546(the)s 7899(document;)s 8960(a)s 0 12965(perfect)m -711(cop)s 2(y)k 1217(may)s 1671(be)s 1942(produced)s -2879(by)s 3161(formatting)s 4210(the)s 4547(same)s 5082(v)s 3(ersion)k -5828(twice,)s 6440(e)s 3(xcept)k 7110(in)s 7341(a)s -7495(fe)s 6(w)k 7889(pathological)s 0 12677(cases)m 555(that)s -973(f)s 2(ail)k 1343(to)s 1582(con)s 9(v)k 3(er)k 4(ge.)k -480 12303(Cross)m 1123(referencing)s 2310(in)s 2600(Lout)s 3159(is)s -3416(implemented)s 4769(on)s 5113(top)s 5519(of)s 5837(a)s -6050(simple)s 6790(database)s 7716(system.)s 8591(Each)s 0 12015(database)m -879(is)s 1089(either)s 1692(writable)s 2530(or)s 2790(readable)s -3655(b)s 4(ut)k 4017(not)s 4383(both)s 4867(at)s -5099(once,)s 5658(and)s 6062(holds)s 6633(a)s 6799(set)s -7124(of)s 7395(k)s 2(e)k 3(y-v)k 6(alue)k +0 13253(on)m 301(the)s 654(third,)s 1217(and)s +1625(so)s 1896(on.)s 2305(Cross)s 2906(references)s 3941(al)s 2(w)k 2(ays)k +4657(lag)s 5007(one)s 5413(run)s 5794(behind)s 6509(the)s +6862(rest)s 7270(of)s 7546(the)s 7899(document;)s 8960(a)s +0 12965(perfect)m 711(cop)s 2(y)k 1217(may)s 1671(be)s +1942(produced)s 2879(by)s 3161(formatting)s 4210(the)s 4547(same)s +5082(v)s 3(ersion)k 5828(twice,)s 6440(e)s 3(xcept)k +7110(in)s 7341(a)s 7495(fe)s 6(w)k 7889(pathological)s +0 12677(cases)m 555(that)s 973(f)s 2(ail)k 1343(to)s +1582(con)s 9(v)k 3(er)k 4(ge.)k 480 12303(Cross)m +1123(referencing)s 2310(in)s 2600(Lout)s 3159(is)s 3416(implemented)s +4769(on)s 5113(top)s 5519(of)s 5837(a)s 6050(simple)s +6790(database)s 7716(system.)s 8591(Each)s 0 12015(database)m 879(is)s +1089(either)s 1692(writable)s 2530(or)s 2790(readable)s 3655(b)s 4(ut)k +4017(not)s 4383(both)s 4867(at)s 5099(once,)s 5658(and)s +6062(holds)s 6633(a)s 6799(set)s 7124(of)s 7395(k)s 2(e)k 3(y-v)k 6(alue)k 8384(entries:)s 0 11727(the)m 348(k)s 2(e)k 3(ys)k 833(are)s 1180(ASCII)s 1861(strings,)s 2605(and)s 3009(the)s 3358(v)s 6(alues)k 4014(are)s 4361(Lout)s 4873(objects,)s @@ -11955,25 +12158,26 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -5708 -1579(-)m 5836(38)s 6123(-)s 9066 13416 0 13307 240 288 60 1417 -15423 LoutGr2 +5708 -1579(-)m 5836(38)s +6123(-)s 9066 13416 0 13307 240 288 60 1417 -15423 LoutGr2 0 LoutMargSet grestore -0 13253(more)m 547(is)s -757(required.)s 240 fnt2 0 12460(7.)m 291(Conclusion)s -[ /Dest /LOUT17_602_s7_0_1 /DEST pdfmark -240 fnt1 -480 12028(Since)m 1054(its)s 1316(public)s 1953(release)s 2657(in)s -2886(October)s 3702(1991,)s 4275(the)s 4609(Basser)s 5292(Lout)s -5790(interpreter)s 6829(has)s 7185(been)s 7680(ported)s 8335(without)s -0 11740(incident)m 819(to)s 1047(a)s 1202(wide)s 1712(v)s 6(ariety)k -2412(of)s 2672(Unix)s 3195(systems)s 3992(and)s 4385(hardw)s 2(are.)k +0 13253(more)m 547(is)s 757(required.)s 240 fnt2 +0 12460(7.)m 291(Conclusion)s +[ /Dest /LOUT18_651_s7_0_1 /DEST pdfmark +240 fnt1 480 12028(Since)m 1054(its)s +1316(public)s 1953(release)s 2657(in)s 2886(October)s 3702(1991,)s +4275(the)s 4609(Basser)s 5292(Lout)s 5790(interpreter)s 6829(has)s +7185(been)s 7680(ported)s 8335(without)s 0 11740(incident)m 819(to)s +1047(a)s 1202(wide)s 1712(v)s 6(ariety)k 2412(of)s +2672(Unix)s 3195(systems)s 3992(and)s 4385(hardw)s 2(are.)k 5425(It)s 5619(w)s 2(as)k 6029(tested)s 6633(e)s 3(xtensi)k 6(v)k 3(ely)k 7753(before)s 8408(release)s 0 11452(on)m 293(its)s 565(o)s 6(wn)k 1025(documentation,)s 2549(and)s 2949(the)s 3293(fe)s 6(w)k @@ -12129,25 +12333,26 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -5706 -1579(-)m 5834(39)s 6125(-)s 9066 13414 0 13414 240 288 60 1417 -15423 LoutGr2 +5706 -1579(-)m 5834(39)s +6125(-)s 9066 13414 0 13414 240 288 60 1417 -15423 LoutGr2 1 LoutMargSet grestore -240 fnt2 0 12961(Refer)m 4(ences)k -240 fnt1 0 12507(1.)m 480(Kingston,)s 1501(Jef)s 6(fre)k 3(y)k +240 fnt2 0 12961(Refer)m 4(ences)k 240 fnt1 +0 12507(1.)m 480(Kingston,)s 1501(Jef)s 6(fre)k 3(y)k 2244(H..)s 2677(Document)s 3770(F)s 3(ormatting)k 4918(with)s 5436(Lout)s 5888(.)s 6088(T)s 16(ech.)k 6690(Rep.)s 7216(408)s 7659(\(1991\))s 8286(,)s 8429(Basser)s 480 12219(Department)m 1668(of)s 1939(Computer)s 2956(Science,)s 3806(The)s 4234(Uni)s 6(v)k 3(ersity)k 5288(of)s 5559(Sydne)s 3(y)k 15(,)k 6367(Australia)s 7242(.)s -[ /Dest /LOUT12_1501_s7_0_1 /DEST pdfmark +[ /Dest /LOUT12_1489_s7_0_1 /DEST pdfmark 0 11716(2.)m 480(Kingston,)s 1492(Jef)s 6(fre)k 3(y)k 2227(H..)s 2652(A)s 2910(ne)s 6(w)k 3385(approach)s 4347(to)s 4613(document)s 5645(formatting)s 6646(.)s 6838(T)s 16(ech.)k @@ -12155,7 +12360,7 @@ 1177(Department)s 2365(of)s 2636(Computer)s 3653(Science,)s 4503(The)s 4931(Uni)s 6(v)k 3(ersity)k 5985(of)s 6256(Sydne)s 3(y)k 15(,)k 7064(Australia)s 7939(.)s -[ /Dest /LOUT12_1501_s7_0_2 /DEST pdfmark +[ /Dest /LOUT12_1489_s7_0_2 /DEST pdfmark 0 10925(3.)m 480(Kingston,)s 1491(Jef)s 6(fre)k 3(y)k 2224(H..)s 2647(The)s 3101(Basser)s 3824(Lout)s 4362(Document)s 5445(F)s 3(ormatter)k 6383(,)s 6516(1991)s 6971(.)s @@ -12171,7 +12376,7 @@ 1388(for)s 1726(non-)s 240 fnt3 2154 10063(ftp)m 240 fnt1 2459 10061(sites.)m 3047(All)s 3407(enquiries)s 4334(to)s 4573(jef)s 6(f@cs.su.oz.au.)k -[ /Dest /LOUT12_1501_s7_0_3 /DEST pdfmark +[ /Dest /LOUT12_1489_s7_0_3 /DEST pdfmark 0 9558(4.)m 480(Furuta,)s 1211(Richard,)s 2075(Sco\207eld,)s 2965(Jef)s 6(fre)k 3(y)k 15(,)k 3710(and)s 4113(Sha)s 3(w)k 15(,)k 4734(Alan.)s 5363(Document)s 6419(formatting)s 7480(systems:)s 8402(surv)s 3(e)k 3(y)k 15(,)k @@ -12179,14 +12384,14 @@ 2554 9272(Computing)m 3673(Surve)s 7(ys)k 240 fnt2 4465 9269(14)m 240 fnt1 4699 9270(,)m 4806(417\211472)s 5700(\(1982\))s 6327(.)s -[ /Dest /LOUT12_1501_s7_0_4 /DEST pdfmark +[ /Dest /LOUT12_1489_s7_0_4 /DEST pdfmark 0 8765(5.)m 480(K)s 6(ernighan,)k 1645(Brian)s 2287(W)s 22(.)k 2649(and)s 3107(Cherry)s 15(,)k 3917(Lorinda)s 4789(L..)s 5213(A)s 5497(system)s 6275(for)s 6667(typesetting)s 7824(mathematics)s 9022(.)s 240 fnt3 480 8479(Communications)m 2158(of)s 2439(the)s 2784(A)s 7(CM)k 240 fnt2 3351 8476(18)m 240 fnt1 3585 8477(,)m 3692(182\211193)s 4576(\(1975\))s 5203(.)s -[ /Dest /LOUT12_1501_s7_0_5 /DEST pdfmark +[ /Dest /LOUT12_1489_s7_0_5 /DEST pdfmark 0 7977(6.)m 480(Kingston,)s 1488(Jef)s 6(fre)k 3(y)k 2218(H..)s 2638(Fig)s 3033(\211)s 3236(a)s 3425(Lout)s 3961(package)s @@ -12196,7 +12401,7 @@ 3653(Science,)s 4503(The)s 4931(Uni)s 6(v)k 3(ersity)k 5985(of)s 6256(Sydne)s 3(y)k 15(,)k 7064(Australia)s 7939(.)s -[ /Dest /LOUT12_1501_s7_0_6 /DEST pdfmark +[ /Dest /LOUT12_1489_s7_0_6 /DEST pdfmark 0 7184(7.)m 480(Reid,)s 1042(Brian)s 1633(K..)s 2033(A)s 2266(High-)s 2813(Le)s 6(v)k 3(el)k 3406(Approach)s 4410(to)s 4652(Computer)s 5672(Document)s 6732(Production)s @@ -12207,19 +12412,19 @@ 7527(\(POPL\),)s 8377(Las)s 8780(V)s 26(e)k 8999(-)s 480 6610(gas)m 868(NV)s 240 fnt1 1192 6608(,)m 1299(pages)s 1895(24\21131)s 2470(,)s 2577(1980)s 3052(.)s -[ /Dest /LOUT12_1501_s7_0_7 /DEST pdfmark +[ /Dest /LOUT12_1489_s7_0_7 /DEST pdfmark 0 6103(8.)m 480(Joseph)s 1207(F)s 19(.)k 1443(Ossanna.)s 2436(Nrof)s 6(f/T)k 8(rof)k 6(f)k 3605(User')s 13(s)k 4284(Manual)s 5010(.)s 5193(T)s 16(ech.)k 5777(Rep.)s 6285(54)s 6597(\(1976\))s 7224(,)s 7349(Bell)s 7821(Laboratories)s 9019(,)s 480 5815(Murray)m 1251(Hill,)s 1729(NJ)s 2051(07974)s 2645(.)s -[ /Dest /LOUT12_1501_s7_0_8 /DEST pdfmark +[ /Dest /LOUT12_1489_s7_0_8 /DEST pdfmark 0 5310(9.)m 480(Knuth,)s 1186(Donald)s 1949(E..)s 240 fnt3 2319 5312(The)m 2731(T)s 2882 5264(E)m 3033 5312(XBook)m 240 fnt1 3675 5310(.)m 3839(Addison-W)s 19(esle)k 3(y)k 5419(,)s 5526(1984)s 6000(.)s -[ /Dest /LOUT12_1501_s7_0_9 /DEST pdfmark +[ /Dest /LOUT12_1489_s7_0_9 /DEST pdfmark 0 4807(10.)m 480(Kingston,)s 1485(Jef)s 6(fre)k 3(y)k 2212(H..)s 2629(Eq)s 2973(\211)s 3173(a)s 3359(Lout)s 3892(package)s 4752(for)s @@ -12230,7 +12435,7 @@ 8147(Australia)s 9022(.)s 480 4231(\(Contains)m 1461(an)s 1744(appendix)s 2677(describing)s 3726(the)s 4074(P)s 3(as)k 4454(P)s 3(ascal)k 5116(formatter)s 13(.\))k -[ /Dest /LOUT12_1501_s7_0_10 /DEST pdfmark +[ /Dest /LOUT12_1489_s7_0_10 /DEST pdfmark 0 3728(11.)m 480(Kingston,)s 1478(Jef)s 6(fre)k 3(y)k 2198(H..)s 2608(A)s 2851(be)s 3(ginners')k 3903(guide)s 4504(to)s 4756(Lout)s 5208(.)s 5385(T)s 16(ech.)k @@ -12239,7 +12444,7 @@ 2306(Science,)s 3156(The)s 3584(Uni)s 6(v)k 3(ersity)k 4638(of)s 4909(Sydne)s 3(y)k 15(,)k 5717(Australia)s 6592(.)s -[ /Dest /LOUT12_1501_s7_0_11 /DEST pdfmark +[ /Dest /LOUT12_1489_s7_0_11 /DEST pdfmark 0 2937(12.)m 480(Kingston,)s 1475(Jef)s 6(fre)k 3(y)k 2193(H..)s 2600(T)s 19(ab)k 3017(\211)s 3207(a)s 3384(Lout)s 3907(package)s 4757(for)s 5106(formatting)s 6177(tables)s @@ -12248,13 +12453,13 @@ 2636(Computer)s 3653(Science,)s 4503(The)s 4931(Uni)s 6(v)k 3(ersity)k 5985(of)s 6256(Sydne)s 3(y)k 15(,)k 7064(Australia)s 7939(.)s -[ /Dest /LOUT12_1501_s7_0_12 /DEST pdfmark +[ /Dest /LOUT12_1489_s7_0_12 /DEST pdfmark 0 2146(13.)m 480(Brooks,)s 1279(K)s 6(enneth)k 2141(P)s 26(..)k 2472(Lilac:)s 3068(a)s 3234(tw)s 2(o-vie)k 6(w)k 4183(document)s 5187(editor)s 5744(.)s 240 fnt3 5908 2148(IEEE)m 6490(Computer)s 240 fnt1 7453 2146(,)m 7560(7\21119)s 8091(\(1991\))s 8718(.)s -[ /Dest /LOUT12_1501_s7_0_13 /DEST pdfmark +[ /Dest /LOUT12_1489_s7_0_13 /DEST pdfmark grestore 0 0 0 0 240 288 60 1417 -15423 LoutGr2 diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/expert/README lout-3.27/doc/expert/README --- lout-3.26/doc/expert/README Wed Oct 16 07:57:06 2002 +++ lout-3.27/doc/expert/README Fri Nov 22 09:11:22 2002 @@ -6,7 +6,7 @@ lout all > outfile.ps -in this directory. This must be done five times to completely resolve +in this directory. This must be done four times to completely resolve all cross references, although the PostScript file outfile.ps is printable after the first run. Auxiliary files with .li and .ld suffixes will be created in this directory. A copy of the final @@ -20,4 +20,4 @@ the first possible page, and so has to appear on the next page. Jeffrey H. Kingston -16 October 2002 +22 November 2002 diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/expert/all lout-3.27/doc/expert/all --- lout-3.26/doc/expert/all Wed Oct 16 07:54:22 2002 +++ lout-3.27/doc/expert/all Fri Nov 22 08:58:00 2002 @@ -1,5 +1,6 @@ @SysInclude { eq } @SysInclude { tab } +@SysInclude { tbl } @SysInclude { fig } @SysInclude { book } @SysDatabase @Reference { loutrefs } @@ -10,13 +11,13 @@ Document Formatting System } @Author { Jeffrey H. Kingston } - @Edition { Version 3.26 + @Edition { Version 3.27 October, 2002 } @Publisher { @I { @CopyRight Copyright 1991, 2002, Jeffrey H. Kingston, Basser Department of Computer Science, The University of Sydney 2006, Australia.} } @InitialLanguage { English } - @OptimizePages { Yes } + @OptimizePages { No } // @Include { preface } @@ -24,3 +25,4 @@ @Include { det } @Include { pre } @Include { exa } +@Include { tex } diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/expert/det_lexi lout-3.27/doc/expert/det_lexi --- lout-3.26/doc/expert/det_lexi Wed Sep 18 12:22:37 2002 +++ lout-3.27/doc/expert/det_lexi Wed Oct 30 21:10:24 2002 @@ -122,9 +122,9 @@ @JL "@HLimited" @JL "@HScale" @JL "@HShift" + @JL "@HSpan" } |4.4cx { - "@HSpan" - @JL "@Include" + "@Include" @JL "@IncludeGraphic" @JL "@IncludeGraphicRepeated" @JL "@Insert" @@ -157,9 +157,9 @@ @JL "@Plus" @JL "@PrependGraphic" @JL "@RawVerbatim" + @JL "@Rotate" } |4.4cx { - "@Rotate" - @JL "@Rump" + "@Rump" @JL "@Scale" @JL "@SetColor" @JL "@SetColour" @@ -176,6 +176,7 @@ @JL "@Tag" @JL "@Tagged" @JL "@Target" + @JL "@Texture" @JL "@Underline" @JL "@Use" @JL "@URLLink" diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/expert/exa_inde lout-3.27/doc/expert/exa_inde --- lout-3.26/doc/expert/exa_inde Wed Oct 16 06:39:28 2002 +++ lout-3.27/doc/expert/exa_inde Wed Nov 20 15:44:37 2002 @@ -15,7 +15,7 @@ do not overlap with other entries with the same key. The effect of such overlaps is undefined, leaving us nothing to prove. We also assume that every entry with a given -key has the same label, including any indent (that is, the same +key has the same label, including any format (that is, the same initial part before the page number). If labels differ the result is undefined and there is nothing to prove. @PP @@ -98,8 +98,7 @@ value equal to @Code { y }, which is the correct result. @PP If @Code { x } is non-raw and @Code { y } is raw, the -@@Meld in the discriminant melds two values typified -by +@@Meld in the discriminant melds two values typified by @ID @Code "label &0.03fu {}{@OneCol ,} pn1{@OneCol ,} pn2" and @ID @Code "label &0.03fu {}" diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/expert/mydefs lout-3.27/doc/expert/mydefs --- lout-3.26/doc/expert/mydefs Wed Oct 16 06:53:16 2002 +++ lout-3.27/doc/expert/mydefs Wed Oct 30 21:09:49 2002 @@ -22,8 +22,6 @@ def @@Case { @Code "@Case" } def @@Char { @Code "@Char" } def @@ClearHeaderComponent { @Code "@ClearHeaderComponent" } - def @@Colour { @Code "@Colour" } - def @@Color { @Code "@Color" } def @@Common { @Code "@Common" } def @@CurrLang { @Code "@CurrLang" } def @@CurrFamily { @Code "@CurrFamily" } @@ -94,6 +92,7 @@ def @@SysPrependGraphic { @Code "@SysPrependGraphic" } def @@Tag { @Code "@Tag" } def @@Tagged { @Code "@Tagged" } + def @@SetTexture { @Code "@SetTexture" } def @@Underline { @Code "@Underline" } def @@URLLink { @Code "@URLLink" } def @@Use { @Code "@Use" } diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/expert/outfile.ps lout-3.27/doc/expert/outfile.ps --- lout-3.26/doc/expert/outfile.ps Wed Oct 16 07:57:48 2002 +++ lout-3.27/doc/expert/outfile.ps Fri Nov 22 09:10:41 2002 @@ -1,6 +1,6 @@ %!PS-Adobe-3.0 -%%Creator: Basser Lout Version 3.26 (October 2002) -%%CreationDate: Wed Oct 16 07:57:44 2002 +%%Creator: Basser Lout Version 3.27 (November 2002) +%%CreationDate: Fri Nov 22 09:10:37 2002 %%DocumentData: Binary %%DocumentNeededResources: (atend) %%DocumentSuppliedResources: (atend) @@ -10,7 +10,6 @@ %%Pages: (atend) %%BoundingBox: 0 0 595 842 %%EndComments - %%BeginProlog %%BeginResource: procset LoutStartUp /save_cp { currentpoint /cp_y exch def /cp_x exch def } def @@ -86,6 +85,155 @@ PreEPSF_state restore end % userdict } bind def + +% Find current texture (may be null) +% - LoutCurrentP p +/LoutCurrentP +{ + currentcolorspace + 0 get /Pattern eq + { + [ currentcolor ] + dup length 1 sub get + } + { + null + } ifelse +} def + +% Find current color and color space +% - LoutCurrentCCS c cs +/LoutCurrentCCS +{ + LoutCurrentP dup null eq + { + pop [ currentcolor ] + currentcolorspace + } + { + dup + /UnderlyingColor get + exch /UnderlyingColorSpace get + } ifelse +} def + +% Install c, cs, and (a copy of) p into graphics state +% c cs p LoutSetCCSP - +/LoutSetCCSP +{ + dup null eq + { + pop setcolorspace + aload pop setcolor + } + { + % copy pattern dictionary + 12 dict copy + + % record cs and c in p + dup /UnderlyingColorSpace 3 index + put + dup /UnderlyingColor 4 index + put + + % do setcolorspace and setcolor + dup /PaintType get 1 eq + { + [ /Pattern ] setcolorspace + setcolor + pop pop + } + { + [ /Pattern + 4 -1 roll + ] setcolorspace + exch aload length 1 add + -1 roll + setcolor + } ifelse + } ifelse +} def + +% num LoutSetGray - +/LoutSetGray +{ + [ 2 1 roll ] + [ /DeviceGray ] + LoutCurrentP + LoutSetCCSP +} def + +% r g b LoutSetRGBColor - +/LoutSetRGBColor +{ + [ 4 1 roll ] + [ /DeviceRGB ] + LoutCurrentP + LoutSetCCSP +} def + +% h s b LoutSetHSBColor - +/LoutSetHSBColor +{ + gsave sethsbcolor + currentrgbcolor grestore + LoutSetRGBColor +} def + +% c m y k LoutSetRGBColor - +/LoutSetCMYKColor +{ + [ 5 1 roll ] + [ /DeviceCMYK ] + LoutCurrentP + LoutSetCCSP +} def + +% p LoutSetTexture - +/LoutSetTexture +{ + LoutCurrentCCS + 3 -1 roll + LoutSetCCSP +} def + +% +% LoutMakeTexture p +/LoutMakeTexture +{ + 12 dict begin + /PaintProc exch def + /YStep exch def + /XStep exch def + /BBox exch def + /PaintType exch def + /PatternType 1 def + /TilingType 1 def + currentdict end + 7 1 roll + matrix translate + 5 1 roll + matrix rotate + 4 1 roll + matrix scale + exch dup matrix scale + matrix concatmatrix + matrix concatmatrix + matrix concatmatrix + /makepattern where + { + pop makepattern + } + { + pop pop null + } ifelse +} def + +/LoutTextureSolid +{ + null + LoutSetTexture +} def %%EndResource %%BeginResource: procset LoutTabPrependGraphic @@ -212,6 +360,10 @@ % PostScript @SysPrependGraphic file for @Fig Jeffrey H. Kingston % % Version 2.0 (includes CIRCUM label) January 1992 % % % +% Although Fig is now obsolete I have updated it 20 October 2002 % +% to work with textures, i.e. replacing setrgbcolor with % +% LoutSetRGBColor. % +% % % To assist in avoiding name clashes, the names of all symbols % % defined here begin with "lfig". However, this is not feasible % % with user-defined labels and some labels used by users. % @@ -358,34 +510,34 @@ } def % painting (i.e. filling): - lfigwhite - (etc.) -/lfignopaint { } def -/lfignochange { fill } def -/lfigdarkblue { 0.0 0.0 0.5 setrgbcolor fill } def -/lfigblue { 0.0 0.0 1.0 setrgbcolor fill } def -/lfiglightblue { 0.5 0.5 1.0 setrgbcolor fill } def -/lfigdarkgreen { 0.0 0.5 0.0 setrgbcolor fill } def -/lfiggreen { 0.0 1.0 0.0 setrgbcolor fill } def -/lfiglightgreen { 0.5 1.0 0.5 setrgbcolor fill } def -/lfigdarkred { 0.5 0.0 0.0 setrgbcolor fill } def -/lfigred { 1.0 0.0 0.0 setrgbcolor fill } def -/lfiglightred { 1.0 0.5 0.5 setrgbcolor fill } def -/lfigdarkcyan { 0.0 0.5 0.5 setrgbcolor fill } def -/lfigcyan { 0.0 1.0 1.0 setrgbcolor fill } def -/lfiglightcyan { 0.5 1.0 1.0 setrgbcolor fill } def -/lfigdarkmagenta { 0.5 0.0 0.5 setrgbcolor fill } def -/lfigmagenta { 1.0 0.0 1.0 setrgbcolor fill } def -/lfiglightmagenta { 1.0 0.5 1.0 setrgbcolor fill } def -/lfigdarkyellow { 0.5 0.5 0.0 setrgbcolor fill } def -/lfigyellow { 1.0 1.0 0.0 setrgbcolor fill } def -/lfiglightyellow { 1.0 1.0 0.5 setrgbcolor fill } def -/lfigdarkgray { 0.2 0.2 0.2 setrgbcolor fill } def -/lfiggray { 0.5 0.5 0.5 setrgbcolor fill } def -/lfiglightgray { 0.8 0.8 0.8 setrgbcolor fill } def -/lfigdarkgrey { 0.2 0.2 0.2 setrgbcolor fill } def -/lfiggrey { 0.5 0.5 0.5 setrgbcolor fill } def -/lfiglightgrey { 0.8 0.8 0.8 setrgbcolor fill } def -/lfigblack { 0.0 0.0 0.0 setrgbcolor fill } def -/lfigwhite { 1.0 1.0 1.0 setrgbcolor fill } def +/lfignopaint { } def +/lfignochange { fill } def +/lfigdarkblue { 0.0 0.0 0.5 LoutSetRGBColor fill } def +/lfigblue { 0.0 0.0 1.0 LoutSetRGBColor fill } def +/lfiglightblue { 0.5 0.5 1.0 LoutSetRGBColor fill } def +/lfigdarkgreen { 0.0 0.5 0.0 LoutSetRGBColor fill } def +/lfiggreen { 0.0 1.0 0.0 LoutSetRGBColor fill } def +/lfiglightgreen { 0.5 1.0 0.5 LoutSetRGBColor fill } def +/lfigdarkred { 0.5 0.0 0.0 LoutSetRGBColor fill } def +/lfigred { 1.0 0.0 0.0 LoutSetRGBColor fill } def +/lfiglightred { 1.0 0.5 0.5 LoutSetRGBColor fill } def +/lfigdarkcyan { 0.0 0.5 0.5 LoutSetRGBColor fill } def +/lfigcyan { 0.0 1.0 1.0 LoutSetRGBColor fill } def +/lfiglightcyan { 0.5 1.0 1.0 LoutSetRGBColor fill } def +/lfigdarkmagenta { 0.5 0.0 0.5 LoutSetRGBColor fill } def +/lfigmagenta { 1.0 0.0 1.0 LoutSetRGBColor fill } def +/lfiglightmagenta { 1.0 0.5 1.0 LoutSetRGBColor fill } def +/lfigdarkyellow { 0.5 0.5 0.0 LoutSetRGBColor fill } def +/lfigyellow { 1.0 1.0 0.0 LoutSetRGBColor fill } def +/lfiglightyellow { 1.0 1.0 0.5 LoutSetRGBColor fill } def +/lfigdarkgray { 0.2 0.2 0.2 LoutSetRGBColor fill } def +/lfiggray { 0.5 0.5 0.5 LoutSetRGBColor fill } def +/lfiglightgray { 0.8 0.8 0.8 LoutSetRGBColor fill } def +/lfigdarkgrey { 0.2 0.2 0.2 LoutSetRGBColor fill } def +/lfiggrey { 0.5 0.5 0.5 LoutSetRGBColor fill } def +/lfiglightgrey { 0.8 0.8 0.8 LoutSetRGBColor fill } def +/lfigblack { 0.0 0.0 0.0 LoutSetRGBColor fill } def +/lfigwhite { 1.0 1.0 1.0 LoutSetRGBColor fill } def % line caps (and joins, not currently used) /lfigbutt 0 def @@ -1417,7 +1569,7 @@ gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore @@ -1427,12 +1579,12 @@ 9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 1 LoutMargSet 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 3883 4395(V)m 19(ersion)k -4726(3.26)s 3797 4107(October)m 12(,)k 4747(2002)s 240 fnt4 -0 342(\343)m 240 fnt3 315 340(Cop)m 7(yr)k -3(ight)k +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 3882 4395(V)m 19(ersion)k 4725(3.27)s 3797 4107(October)m 12(,)k +4747(2002)s 240 fnt4 0 342(\343)m 240 fnt3 315 340(Cop)m 7(yr)k -3(ight)k 1493(1991,)s 2214(2002,)s 2935(Jeffre)s 4(y)k 3811(H.)s 4173(Kingston,)s 5293(Basser)s 6203(Depar)s -9(tment)k 7619(of)s 7990(Computer)s 0 52(Science)m 3(,)k 966(The)s 1449(Univ)s 6(ersity)k @@ -1467,7 +1619,7 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore @@ -1477,77 +1629,28 @@ 9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 0 LoutMargSet grestore -480 fnt5 0 12955(Pr)m 8(eface)k -[ /Dest /LOUTpreface /DEST pdfmark - -[ /Dest /LOUT16_4059_preface_1 /DEST pdfmark - -[ /Dest /LOUT16_4059_preface_2 /DEST pdfmark - -[ /Dest /LOUT16_4059_preface_3 /DEST pdfmark - -[ /Dest /LOUT16_4059_preface_4 /DEST pdfmark - -[ /Dest /LOUT16_4059_preface_5 /DEST pdfmark - -[ /Dest /LOUT16_4059_preface_6 /DEST pdfmark - -[ /Dest /LOUT16_4059_preface_7 /DEST pdfmark - -[ /Dest /LOUT16_4059_preface_8 /DEST pdfmark - -[ /Dest /LOUT16_4059_preface_9 /DEST pdfmark - -[ /Dest /LOUT16_4059_preface_10 /DEST pdfmark - -[ /Dest /LOUT16_4059_preface_11 /DEST pdfmark - -[ /Dest /LOUT16_4059_preface_12 /DEST pdfmark - -[ /Dest /LOUT16_4059_preface_13 /DEST pdfmark - -[ /Dest /LOUT16_4059_preface_14 /DEST pdfmark - -[ /Dest /LOUT16_4059_preface_15 /DEST pdfmark - -[ /Dest /LOUT16_4059_preface_16 /DEST pdfmark +480 fnt5 0 12955(Pr)m 8(eface)k -[ /Dest /LOUT16_4059_preface_17 /DEST pdfmark - -[ /Dest /LOUT16_4059_preface_18 /DEST pdfmark - -[ /Dest /LOUT16_4059_preface_19 /DEST pdfmark - -[ /Dest /LOUT16_4059_preface_20 /DEST pdfmark - -[ /Dest /LOUT16_4059_preface_21 /DEST pdfmark - -[ /Dest /LOUT16_4059_preface_22 /DEST pdfmark - -[ /Dest /LOUT16_4059_preface_23 /DEST pdfmark - -[ /Dest /LOUT16_4059_preface_24 /DEST pdfmark - -[ /Dest /LOUT16_4059_preface_25 /DEST pdfmark -240 fnt1 540 12095(This)m -1016(manual)s 1775(is)s 1984(addressed)s 2985(to)s 3224(those)s -3784(who)s 4250(wish)s 4759(to)s 4997(become)s 5797(e)s 3(xpert)k -6451(users)s 6992(of)s 7263(the)s 7611(Lout)s 8122(document)s -0 11807(formatting)m 1092(system.)s 1952(An)s 2334(e)s 3(xpert)k -3020(user)s 3510(is)s 3752(someone)s 4690(who)s 5188(understands)s -6414(the)s 6794(principles)s 7819(of)s 8122(document)s 0 11519(formatting)m -1083(that)s 1524(Lout)s 2059(embodies,)s 3105(and)s 3532(is)s -3765(able)s 4242(to)s 4503(apply)s 5112(them,)s 5720(for)s -6081(e)s 3(xample)k 6966(to)s 7228(design)s 7933(a)s -8122(document)s 0 11231(format)m 690(or)s 943(a)s 1103(special-purpose)s -2653(package.)s 3595(In)s 3845(contrast,)s 4701(a)s 4861(non-e)s 3(xpert)k -5948(user)s 6400(is)s 6604(someone)s 7505(who)s 7965(simply)s -8663(uses)s 0 10943(Lout)m 512(to)s 751(format)s 1447(documents.)s -480 10569(Chapter)m 1295(1)s 1448(e)s 3(xplains)k 2291(these)s -2836(principles,)s 3883(and)s 4285(it)s 4475(should)s 5170(be)s -5450(read)s 5917(carefully)s 6817(and)s 7219(in)s 7460(sequence.)s -8499(Chap)s 8998(-)s 0 10281(ters)m 412(2)s 604(and)s -1025(3)s 1207(are)s 1571(for)s 1927(reference;)s 2943(respecti)s 6(v)k 3(ely)k 15(,)k +[ /Dest /LOUTpreface /DEST pdfmark +240 fnt1 540 12095(This)m 1016(manual)s 1775(is)s 1984(addressed)s +2985(to)s 3224(those)s 3784(who)s 4250(wish)s 4759(to)s +4997(become)s 5797(e)s 3(xpert)k 6451(users)s 6992(of)s +7263(the)s 7611(Lout)s 8122(document)s 0 11807(formatting)m 1092(system.)s +1952(An)s 2334(e)s 3(xpert)k 3020(user)s 3510(is)s +3752(someone)s 4690(who)s 5188(understands)s 6414(the)s 6794(principles)s +7819(of)s 8122(document)s 0 11519(formatting)m 1083(that)s 1524(Lout)s +2059(embodies,)s 3105(and)s 3532(is)s 3765(able)s 4242(to)s +4503(apply)s 5112(them,)s 5720(for)s 6081(e)s 3(xample)k +6966(to)s 7228(design)s 7933(a)s 8122(document)s 0 11231(format)m +690(or)s 943(a)s 1103(special-purpose)s 2653(package.)s 3595(In)s +3845(contrast,)s 4701(a)s 4861(non-e)s 3(xpert)k 5948(user)s +6400(is)s 6604(someone)s 7505(who)s 7965(simply)s 8663(uses)s +0 10943(Lout)m 512(to)s 751(format)s 1447(documents.)s 480 10569(Chapter)m +1295(1)s 1448(e)s 3(xplains)k 2291(these)s 2836(principles,)s +3883(and)s 4285(it)s 4475(should)s 5170(be)s 5450(read)s +5917(carefully)s 6817(and)s 7219(in)s 7460(sequence.)s 8499(Chap)s +8998(-)s 0 10281(ters)m 412(2)s 604(and)s 1025(3)s +1207(are)s 1571(for)s 1927(reference;)s 2943(respecti)s 6(v)k 3(ely)k 15(,)k 4198(the)s 3(y)k 4678(contain)s 5457(descriptions)s 6680(of)s 6969(the)s 7334(detailed)s 8166(operation)s 0 9993(of)m 277(Lout')s 13(s)k 945(major)s 1568(components,)s 2838(and)s 3248(a)s 3420(complete)s @@ -1560,11 +1663,11 @@ [ /Rect [8510 9328 8614 9493] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTkingston1995lout_program /ANN pdfmark 8510(3)s 8614(])s 8722(and)s 0 9043(de)m 6(v)k 3(eloped)k -1041(continuously)s 2341(since)s 2897(then.)s 3482(This)s 3967(manual)s -4735(w)s 2(as)k 5165(rendered)s 6068(into)s 6502(PostScript)s +1042(continuously)s 2342(since)s 2899(then.)s 3484(This)s 3969(manual)s +4738(w)s 2(as)k 5168(rendered)s 6071(into)s 6506(PostScript)s -[ /Dest /LOUT16_4080_preface_1 /DEST pdfmark -7553(by)s 7856(V)s 26(ersion)k 8653(3.26)s 0 8755(of)m +[ /Dest /LOUT19_4213_preface_1 /DEST pdfmark +7557(by)s 7860(V)s 26(ersion)k 8658(3.27)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([)s @@ -1609,7 +1712,7 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore @@ -1619,99 +1722,100 @@ 9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2 1 LoutMargSet grestore -480 fnt5 0 12955(Contents)m -[ /Dest /LOUT17_367_all_1 /DEST pdfmark +480 fnt5 0 12955(Contents)m + +[ /Dest /LOUT20_370_all_1 /DEST pdfmark [ /Rect [0 11893 8346 12147] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTpreface /ANN pdfmark -240 fnt5 0 11982(Pr)m 4(eface)k -240 fnt1 1018 11983(..)m 1362(..)s 1706(..)s 2050(..)s -2394(..)s 2738(..)s 3082(..)s 3426(..)s 3770(..)s -4114(..)s 4458(..)s 4802(..)s 5146(..)s 5490(..)s -5834(..)s 6178(..)s 6522(..)s 6866(..)s 7210(..)s -7554(..)s 7898(..)s 8242(..)s +240 fnt5 0 11982(Pr)m 4(eface)k 240 fnt1 1018 11983(..)m +1362(..)s 1706(..)s 2050(..)s 2394(..)s 2738(..)s +3082(..)s 3426(..)s 3770(..)s 4114(..)s 4458(..)s +4802(..)s 5146(..)s 5490(..)s 5834(..)s 6178(..)s +6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s +8242(..)s [ /Rect [8940 11983 9066 12146] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTpreface /ANN pdfmark 8940(ii)s [ /Rect [0 11265 8346 11519] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTprinciples /ANN pdfmark -240 fnt5 -0 11354(Chapter)m 908(1)s 240 fnt1 1015 11355(.)m 240 fnt5 -1179 11354(Principles)m 240 fnt1 2738 11355(..)m 3082(..)s 3426(..)s -3770(..)s 4114(..)s 4458(..)s 4802(..)s 5146(..)s -5490(..)s 5834(..)s 6178(..)s 6522(..)s 6866(..)s -7210(..)s 7554(..)s 7898(..)s 8242(..)s +240 fnt5 0 11354(Chapter)m 908(1)s +240 fnt1 1015 11355(.)m 240 fnt5 1179 11354(Principles)m 240 fnt1 +2738 11355(..)m 3082(..)s 3426(..)s 3770(..)s 4114(..)s +4458(..)s 4802(..)s 5146(..)s 5490(..)s 5834(..)s +6178(..)s 6522(..)s 6866(..)s 7210(..)s 7554(..)s +7898(..)s 8242(..)s [ /Rect [8971 11355 9066 11517] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTprinciples /ANN pdfmark -8971(1)s - +8971(1)s [ /Rect [720 10920 8346 11173] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTobjects /ANN pdfmark -720 11010(1.1.)m 1184(Objects)s 2394(..)s 2738(..)s 3082(..)s -3426(..)s 3770(..)s 4114(..)s 4458(..)s 4802(..)s -5146(..)s 5490(..)s 5834(..)s 6178(..)s 6522(..)s -6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s - +720 11010(1.1.)m 1184(Objects)s +2394(..)s 2738(..)s 3082(..)s 3426(..)s 3770(..)s +4114(..)s 4458(..)s 4802(..)s 5146(..)s 5490(..)s +5834(..)s 6178(..)s 6522(..)s 6866(..)s 7210(..)s +7554(..)s 7898(..)s 8242(..)s [ /Rect [8971 11010 9066 11172] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTobjects /ANN pdfmark 8971(1)s [ /Rect [720 10575 8346 10828] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTdefinitions /ANN pdfmark -720 10665(1.2.)m 1184(De\207nitions)s 2738(..)s 3082(..)s -3426(..)s 3770(..)s 4114(..)s 4458(..)s 4802(..)s -5146(..)s 5490(..)s 5834(..)s 6178(..)s 6522(..)s -6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s - +720 10665(1.2.)m +1184(De\207nitions)s 2738(..)s 3082(..)s 3426(..)s 3770(..)s +4114(..)s 4458(..)s 4802(..)s 5146(..)s 5490(..)s +5834(..)s 6178(..)s 6522(..)s 6866(..)s 7210(..)s +7554(..)s 7898(..)s 8242(..)s [ /Rect [8962 10662 9066 10827] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTdefinitions /ANN pdfmark 8962(3)s [ /Rect [720 10230 8346 10483] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTcross /ANN pdfmark -720 10320(1.3.)m 1184(Cross)s 1780(references)s 3082(..)s +720 10320(1.3.)m +1184(Cross)s 1780(references)s 3082(..)s 3426(..)s 3770(..)s +4114(..)s 4458(..)s 4802(..)s 5146(..)s 5490(..)s +5834(..)s 6178(..)s 6522(..)s 6866(..)s 7210(..)s +7554(..)s 7898(..)s 8242(..)s +[ /Rect [8958 10319 9066 10478] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTcross /ANN pdfmark +8958(7)s +[ /Rect [720 9885 8346 10138] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTgalleys /ANN pdfmark +720 9975(1.4.)m +1184(Galle)s 3(ys)k 2394(..)s 2738(..)s 3082(..)s 3426(..)s 3770(..)s 4114(..)s 4458(..)s 4802(..)s 5146(..)s 5490(..)s 5834(..)s 6178(..)s 6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s -[ /Rect [8958 10319 9066 10478] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTcross /ANN pdfmark -8958(7)s -[ /Rect [720 9885 8346 10138] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTgalleys /ANN pdfmark -720 9975(1.4.)m 1184(Galle)s 3(ys)k 2394(..)s +[ /Rect [8955 9970 9066 10137] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTgalleys /ANN pdfmark +8955(9)s +[ /Rect [0 9257 8346 9511] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTdetails /ANN pdfmark +240 fnt5 0 9346(Chapter)m 908(2)s 240 fnt1 +1023 9347(.)m 240 fnt5 1187 9346(Details)m 240 fnt1 2394 9347(..)m 2738(..)s 3082(..)s 3426(..)s 3770(..)s 4114(..)s 4458(..)s 4802(..)s 5146(..)s 5490(..)s 5834(..)s 6178(..)s 6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s -[ /Rect [8955 9970 9066 10137] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTgalleys /ANN pdfmark -8955(9)s -[ /Rect [0 9257 8346 9511] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTdetails /ANN pdfmark -240 fnt5 0 9346(Chapter)m -908(2)s 240 fnt1 1023 9347(.)m 240 fnt5 1187 9346(Details)m -240 fnt1 2394 9347(..)m 2738(..)s 3082(..)s 3426(..)s -3770(..)s 4114(..)s 4458(..)s 4802(..)s 5146(..)s -5490(..)s 5834(..)s 6178(..)s 6522(..)s 6866(..)s -7210(..)s 7554(..)s 7898(..)s 8242(..)s [ /Rect [8842 9344 9066 9509] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTdetails /ANN pdfmark -8842(13)s - +8842(13)s [ /Rect [720 8912 8346 9165] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTlexical /ANN pdfmark -720 9002(2.1.)m 1184(Le)s 3(xical)k 1952(structure)s 2843(\(w)s 2(ords,)k -3612(spaces,)s 4343(symbols\))s 5269(and)s 5673(macros)s 6866(..)s -7210(..)s 7554(..)s 7898(..)s 8242(..)s +720 9002(2.1.)m 1184(Le)s 3(xical)k +1952(structure)s 2843(\(w)s 2(ords,)k 3612(spaces,)s 4343(symbols\))s +5269(and)s 5673(macros)s 6866(..)s 7210(..)s 7554(..)s +7898(..)s 8242(..)s [ /Rect [8842 8999 9066 9164] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTlexical /ANN pdfmark -8842(13)s - +8842(13)s [ /Rect [720 8567 8346 8822] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTnamed /ANN pdfmark -720 8657(2.2.)m 1184(Named)s 1933(parameters)s 3426(..)s 3770(..)s -4114(..)s 4458(..)s 4802(..)s 5146(..)s 5490(..)s -5834(..)s 6178(..)s 6522(..)s 6866(..)s 7210(..)s -7554(..)s 7898(..)s 8242(..)s +720 8657(2.2.)m 1184(Named)s +1933(parameters)s 3426(..)s 3770(..)s 4114(..)s 4458(..)s +4802(..)s 5146(..)s 5490(..)s 5834(..)s 6178(..)s +6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s +8242(..)s [ /Rect [8840 8654 9066 8822] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTnamed /ANN pdfmark 8840(15)s [ /Rect [720 8222 8346 8475] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTvisibility /ANN pdfmark -720 8312(2.3.)m -1184(Nested)s 1906(de\207nitions,)s 3023(body)s 3557(parameters,)s 4711(e)s 3(xtend,)k -5453(import,)s 6197(and)s 6601(e)s 3(xport)k 7554(..)s -7898(..)s 8242(..)s +720 8312(2.3.)m 1184(Nested)s 1906(de\207nitions,)s +3023(body)s 3557(parameters,)s 4711(e)s 3(xtend,)k 5453(import,)s +6197(and)s 6601(e)s 3(xport)k 7554(..)s 7898(..)s +8242(..)s [ /Rect [8838 8311 9066 8474] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTvisibility /ANN pdfmark 8838(17)s [ /Rect [720 7877 8346 8130] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTfilters /ANN pdfmark -720 7967(2.4.)m 1184(Filtered)s -1984(right)s 2495(and)s 2899(body)s 3433(parameters)s 4802(..)s -5146(..)s 5490(..)s 5834(..)s 6178(..)s 6522(..)s -6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s - +720 7967(2.4.)m 1184(Filtered)s 1984(right)s +2495(and)s 2899(body)s 3433(parameters)s 4802(..)s 5146(..)s +5490(..)s 5834(..)s 6178(..)s 6522(..)s 6866(..)s +7210(..)s 7554(..)s 7898(..)s 8242(..)s [ /Rect [8831 7964 9066 8129] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTfilters /ANN pdfmark -8831(20)s +8831(20)s + [ /Rect [720 7532 8346 7787] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTprecedence /ANN pdfmark 720 7622(2.5.)m 1184(Precedence)s 2328(and)s 2732(associati)s 6(vity)k 3974(of)s 4245(symbols)s 5490(..)s 5834(..)s 6178(..)s @@ -1815,75 +1919,76 @@ 7898(..)s 8242(..)s [ /Rect [8840 3196 9066 3364] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTyunit /ANN pdfmark 8840(45)s -[ /Rect [720 2764 8346 3018] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTcolour /ANN pdfmark +[ /Rect [720 2764 8346 3019] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTcolour /ANN pdfmark 720 2854(3.7.)m 1184(@SetColour)s 2435(and)s 2839(@SetColor)s 4458(..)s 4802(..)s 5146(..)s 5490(..)s 5834(..)s 6178(..)s 6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s -[ /Rect [8833 2851 9066 3018] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTcolour /ANN pdfmark -8833(46)s - -[ /Rect [720 2419 8346 2673] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUToutline /ANN pdfmark -720 2509(3.8.)m 1184(@Outline)s 2394(..)s 2738(..)s 3082(..)s -3426(..)s 3770(..)s 4114(..)s 4458(..)s 4802(..)s -5146(..)s 5490(..)s 5834(..)s 6178(..)s 6522(..)s -6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s +[ /Rect [8840 2851 9066 3019] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTcolour /ANN pdfmark +8840(45)s -[ /Rect [8833 2506 9066 2673] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUToutline /ANN pdfmark -8833(46)s -[ /Rect [720 2074 8346 2327] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTlanguage /ANN pdfmark -720 2164(3.9.)m 1184(@Language)s 2405(and)s 2809(@CurrLang)s -4458(..)s 4802(..)s 5146(..)s 5490(..)s 5834(..)s -6178(..)s 6522(..)s 6866(..)s 7210(..)s 7554(..)s -7898(..)s 8242(..)s -[ /Rect [8838 2163 9066 2326] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTlanguage /ANN pdfmark -8838(47)s -[ /Rect [720 1729 8346 1982] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTonerow /ANN pdfmark -720 1819(3.10.)m 1304(@OneCol)s -2325(and)s 2729(@OneRo)s 6(w)k 4114(..)s 4458(..)s -4802(..)s 5146(..)s 5490(..)s 5834(..)s 6178(..)s -6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s -8242(..)s -[ /Rect [8839 1816 9066 1981] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTonerow /ANN pdfmark -8839(48)s -[ /Rect [720 1384 8346 1637] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTwide /ANN pdfmark -720 1474(3.11.)m 1304(@W)s 9(ide)k -2090(and)s 2494(@High)s 3770(..)s 4114(..)s 4458(..)s +[ /Rect [720 2419 8346 2671] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTtexture /ANN pdfmark +720 2509(3.8.)m 1184(@SetT)s 16(e)k 3(xture)k 2738(..)s +3082(..)s 3426(..)s 3770(..)s 4114(..)s 4458(..)s 4802(..)s 5146(..)s 5490(..)s 5834(..)s 6178(..)s 6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s -[ /Rect [8839 1471 9066 1636] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTwide /ANN pdfmark +[ /Rect [8838 2508 9066 2671] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTtexture /ANN pdfmark +8838(47)s +[ /Rect [720 2074 8346 2327] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUToutline /ANN pdfmark +720 2164(3.9.)m 1184(@Outline)s 2394(..)s +2738(..)s 3082(..)s 3426(..)s 3770(..)s 4114(..)s +4458(..)s 4802(..)s 5146(..)s 5490(..)s 5834(..)s +6178(..)s 6522(..)s 6866(..)s 7210(..)s 7554(..)s +7898(..)s 8242(..)s +[ /Rect [8839 2161 9066 2326] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUToutline /ANN pdfmark 8839(48)s -[ /Rect [720 1039 8346 1292] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUThshift /ANN pdfmark -720 1129(3.12.)m 1304(@HShift)s 2222(and)s -2626(@VShift)s 3770(..)s 4114(..)s 4458(..)s 4802(..)s -5146(..)s 5490(..)s 5834(..)s 6178(..)s 6522(..)s -6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s +[ /Rect [720 1729 8346 1982] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTlanguage /ANN pdfmark +720 1819(3.10.)m 1304(@Language)s +2525(and)s 2929(@CurrLang)s 4458(..)s 4802(..)s 5146(..)s +5490(..)s 5834(..)s 6178(..)s 6522(..)s 6866(..)s +7210(..)s 7554(..)s 7898(..)s 8242(..)s +[ /Rect [8839 1816 9066 1981] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTlanguage /ANN pdfmark +8839(48)s -[ /Rect [8835 1124 9066 1291] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUThshift /ANN pdfmark +[ /Rect [720 1384 8346 1637] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTonerow /ANN pdfmark +720 1474(3.11.)m 1304(@OneCol)s 2325(and)s 2729(@OneRo)s 6(w)k +4114(..)s 4458(..)s 4802(..)s 5146(..)s 5490(..)s +5834(..)s 6178(..)s 6522(..)s 6866(..)s 7210(..)s +7554(..)s 7898(..)s 8242(..)s +[ /Rect [8835 1469 9066 1636] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTonerow /ANN pdfmark 8835(49)s -[ /Rect [720 694 8346 947] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUThexpand /ANN pdfmark -720 784(3.13.)m 1304(@HExpand)s 2488(and)s 2892(@VExpand)s +[ /Rect [720 1039 8346 1294] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTwide /ANN pdfmark +720 1129(3.12.)m +1304(@W)s 9(ide)k 2090(and)s 2494(@High)s 3770(..)s +4114(..)s 4458(..)s 4802(..)s 5146(..)s 5490(..)s +5834(..)s 6178(..)s 6522(..)s 6866(..)s 7210(..)s +7554(..)s 7898(..)s 8242(..)s +[ /Rect [8831 1126 9066 1294] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTwide /ANN pdfmark +8831(50)s +[ /Rect [720 694 8346 949] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUThshift /ANN pdfmark +720 784(3.13.)m +1304(@HShift)s 2222(and)s 2626(@VShift)s 3770(..)s 4114(..)s 4458(..)s 4802(..)s 5146(..)s 5490(..)s 5834(..)s 6178(..)s 6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s -[ /Rect [8835 779 9066 946] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUThexpand /ANN pdfmark -8835(49)s -[ /Rect [720 349 8346 604] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUThcontract /ANN pdfmark -720 439(3.14.)m 1304(@HContract)s -2581(and)s 2985(@VContract)s 4458(..)s 4802(..)s 5146(..)s +[ /Rect [8831 781 9066 949] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUThshift /ANN pdfmark +8831(50)s +[ /Rect [720 349 8346 604] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUThexpand /ANN pdfmark +720 439(3.14.)m 1304(@HExpand)s +2488(and)s 2892(@VExpand)s 4458(..)s 4802(..)s 5146(..)s 5490(..)s 5834(..)s 6178(..)s 6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s -[ /Rect [8831 436 9066 604] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUThcontract /ANN pdfmark -8831(50)s +[ /Rect [8851 436 9066 604] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUThexpand /ANN pdfmark +8851(51)s -[ /Rect [720 4 8346 259] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUThlimited /ANN pdfmark -720 94(3.15.)m 1304(@HLimited)s 2512(and)s 2916(@VLimited)s 4458(..)s +[ /Rect [720 4 8346 259] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUThcontract /ANN pdfmark +720 94(3.15.)m 1304(@HContract)s 2581(and)s 2985(@VContract)s 4458(..)s 4802(..)s 5146(..)s 5490(..)s 5834(..)s 6178(..)s 6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s -[ /Rect [8831 91 9066 259] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUThlimited /ANN pdfmark -8831(50)s +[ /Rect [8851 91 9066 259] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUThcontract /ANN pdfmark +8851(51)s grestore 0 0 0 0 240 288 60 1417 -15423 LoutGr2 1 LoutMargSet @@ -1913,7 +2018,7 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore @@ -1924,295 +2029,295 @@ 0 LoutMargSet grestore -[ /Rect [720 13127 8346 13382] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUThadjust /ANN pdfmark -720 13217(3.16.)m 1304(@HAdjust,)s 2443(@V)s 32(Adjust,)k 3550(and)s +[ /Rect [720 13127 8346 13382] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUThlimited /ANN pdfmark +720 13217(3.16.)m 1304(@HLimited)s +2512(and)s 2916(@VLimited)s 4458(..)s 4802(..)s 5146(..)s +5490(..)s 5834(..)s 6178(..)s 6522(..)s 6866(..)s +7210(..)s 7554(..)s 7898(..)s 8242(..)s +[ /Rect [8851 13214 9066 13382] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUThlimited /ANN pdfmark +8851(51)s + +[ /Rect [720 12782 8346 13037] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUThadjust /ANN pdfmark +720 12872(3.17.)m 1304(@HAdjust,)s 2443(@V)s 32(Adjust,)k 3550(and)s 3954(@P)s 22(Adjust)k 5490(..)s 5834(..)s 6178(..)s 6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s -[ /Rect [8831 13214 9066 13382] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUThadjust /ANN pdfmark -8831(50)s -[ /Rect [720 12782 8346 13037] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUThscale /ANN pdfmark -720 12872(3.17.)m 1304(@HScale)s 2271(and)s +[ /Rect [8851 12869 9066 13037] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUThadjust /ANN pdfmark +8851(51)s +[ /Rect [720 12437 8346 12692] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUThscale /ANN pdfmark +720 12527(3.18.)m 1304(@HScale)s 2271(and)s 2675(@VScale)s 4114(..)s 4458(..)s 4802(..)s 5146(..)s 5490(..)s 5834(..)s 6178(..)s 6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s -[ /Rect [8831 12869 9066 13037] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUThscale /ANN pdfmark -8831(50)s +[ /Rect [8832 12524 9066 12692] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUThscale /ANN pdfmark +8832(52)s -[ /Rect [720 12437 8346 12692] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUThcover /ANN pdfmark -720 12527(3.18.)m 1304(@HCo)s 3(v)k 3(er)k 2337(and)s +[ /Rect [720 12092 8346 12347] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUThcover /ANN pdfmark +720 12182(3.19.)m 1304(@HCo)s 3(v)k 3(er)k 2337(and)s 2741(@VCo)s 3(v)k 3(er)k 4114(..)s 4458(..)s 4802(..)s 5146(..)s 5490(..)s 5834(..)s 6178(..)s 6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s -[ /Rect [8851 12524 9066 12692] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUThcover /ANN pdfmark -8851(51)s -[ /Rect [720 12092 8346 12347] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUThspan /ANN pdfmark -720 12182(3.19.)m 1304(@StartHSpan,@StartVSpan,)s 4117(@StartHVSpan,)s +[ /Rect [8832 12179 9066 12347] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUThcover /ANN pdfmark +8832(52)s +[ /Rect [720 11747 8346 12002] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUThspan /ANN pdfmark +720 11837(3.20.)m 1304(@StartHSpan,@StartVSpan,)s 4117(@StartHVSpan,)s 5720(@HSpan,)s 6700(and)s 7104(@VSpan)s 8242(..)s -[ /Rect [8832 12179 9066 12347] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUThspan /ANN pdfmark -8832(52)s +[ /Rect [8842 11834 9066 12002] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUThspan /ANN pdfmark +8842(53)s -[ /Rect [720 11747 8346 12002] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTscale /ANN pdfmark -720 11837(3.20.)m 1304(@Scale)s 2394(..)s 2738(..)s 3082(..)s +[ /Rect [720 11402 8346 11657] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTscale /ANN pdfmark +720 11492(3.21.)m 1304(@Scale)s 2394(..)s 2738(..)s 3082(..)s 3426(..)s 3770(..)s 4114(..)s 4458(..)s 4802(..)s 5146(..)s 5490(..)s 5834(..)s 6178(..)s 6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s -[ /Rect [8842 11834 9066 12002] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTscale /ANN pdfmark -8842(53)s -[ /Rect [720 11402 8346 11657] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTrotate /ANN pdfmark -720 11492(3.21.)m 1304(@Rotate)s 2394(..)s 2738(..)s +[ /Rect [8832 11489 9066 11657] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTscale /ANN pdfmark +8832(54)s +[ /Rect [720 11057 8346 11312] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTrotate /ANN pdfmark +720 11147(3.22.)m 1304(@Rotate)s 2394(..)s 2738(..)s 3082(..)s 3426(..)s 3770(..)s 4114(..)s 4458(..)s 4802(..)s 5146(..)s 5490(..)s 5834(..)s 6178(..)s 6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s -[ /Rect [8842 11489 9066 11657] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTrotate /ANN pdfmark -8842(53)s -[ /Rect [720 11057 8346 11312] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTbackground /ANN pdfmark -720 11147(3.22.)m 1304(@Background)s 3082(..)s +[ /Rect [8840 11144 9066 11312] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTrotate /ANN pdfmark +8840(55)s +[ /Rect [720 10712 8346 10967] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTbackground /ANN pdfmark +720 10802(3.23.)m 1304(@Background)s 3082(..)s 3426(..)s 3770(..)s 4114(..)s 4458(..)s 4802(..)s 5146(..)s 5490(..)s 5834(..)s 6178(..)s 6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s -[ /Rect [8832 11144 9066 11312] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTbackground /ANN pdfmark -8832(54)s -[ /Rect [720 10712 8346 10967] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTkernshrink /ANN pdfmark -720 10802(3.23.)m 1304(@K)s 6(ernShrink)k 3082(..)s +[ /Rect [8840 10799 9066 10967] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTbackground /ANN pdfmark +8840(55)s +[ /Rect [720 10367 8346 10622] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTkernshrink /ANN pdfmark +720 10457(3.24.)m 1304(@K)s 6(ernShrink)k 3082(..)s 3426(..)s 3770(..)s 4114(..)s 4458(..)s 4802(..)s 5146(..)s 5490(..)s 5834(..)s 6178(..)s 6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s -[ /Rect [8832 10799 9066 10967] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTkernshrink /ANN pdfmark -8832(54)s -[ /Rect [720 10367 8346 10622] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTrump /ANN pdfmark -720 10457(3.24.)m 1304(@Common,)s 2524(@Rump,)s 3438(and)s +[ /Rect [8833 10454 9066 10622] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTkernshrink /ANN pdfmark +8833(56)s +[ /Rect [720 10022 8346 10277] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTrump /ANN pdfmark +720 10112(3.25.)m 1304(@Common,)s 2524(@Rump,)s 3438(and)s 3842(@Meld)s 5146(..)s 5490(..)s 5834(..)s 6178(..)s 6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s -[ /Rect [8840 10454 9066 10622] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTrump /ANN pdfmark -8840(55)s -[ /Rect [720 10022 8346 10277] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTinsert /ANN pdfmark -720 10112(3.25.)m 1304(@Insert)s 2394(..)s +[ /Rect [8833 10109 9066 10277] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTrump /ANN pdfmark +8833(56)s +[ /Rect [720 9677 8346 9932] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTinsert /ANN pdfmark +720 9767(3.26.)m 1304(@Insert)s 2394(..)s 2738(..)s 3082(..)s 3426(..)s 3770(..)s 4114(..)s 4458(..)s 4802(..)s 5146(..)s 5490(..)s 5834(..)s 6178(..)s 6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s -[ /Rect [8833 10109 9066 10277] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTinsert /ANN pdfmark -8833(56)s -[ /Rect [720 9677 8346 9932] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUToneof /ANN pdfmark -720 9767(3.26.)m 1304(@OneOf)s +[ /Rect [8839 9764 9066 9932] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTinsert /ANN pdfmark +8839(58)s +[ /Rect [720 9332 8346 9587] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUToneof /ANN pdfmark +720 9422(3.27.)m 1304(@OneOf)s 2738(..)s 3082(..)s 3426(..)s 3770(..)s 4114(..)s 4458(..)s 4802(..)s 5146(..)s 5490(..)s 5834(..)s 6178(..)s 6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s -[ /Rect [8838 9764 9066 9932] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUToneof /ANN pdfmark -8838(57)s -[ /Rect [720 9332 8346 9587] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTnext /ANN pdfmark -720 9422(3.27.)m 1304(@Ne)s 3(xt)k +[ /Rect [8839 9419 9066 9587] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUToneof /ANN pdfmark +8839(58)s +[ /Rect [720 8987 8346 9242] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTnext /ANN pdfmark +720 9077(3.28.)m 1304(@Ne)s 3(xt)k 2394(..)s 2738(..)s 3082(..)s 3426(..)s 3770(..)s 4114(..)s 4458(..)s 4802(..)s 5146(..)s 5490(..)s 5834(..)s 6178(..)s 6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s -[ /Rect [8839 9419 9066 9587] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTnext /ANN pdfmark -8839(58)s -[ /Rect [720 8987 8346 9242] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTcase /ANN pdfmark -720 9077(3.28.)m +[ /Rect [8835 9072 9066 9242] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTnext /ANN pdfmark +8835(59)s +[ /Rect [720 8642 8346 8897] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTcase /ANN pdfmark +720 8732(3.29.)m 1304(@Case)s 2394(..)s 2738(..)s 3082(..)s 3426(..)s 3770(..)s 4114(..)s 4458(..)s 4802(..)s 5146(..)s 5490(..)s 5834(..)s 6178(..)s 6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s -[ /Rect [8839 9074 9066 9242] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTcase /ANN pdfmark -8839(58)s +[ /Rect [8835 8727 9066 8897] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTcase /ANN pdfmark +8835(59)s -[ /Rect [720 8642 8346 8897] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTmoment /ANN pdfmark -720 8732(3.29.)m 1304(@Moment)s 2738(..)s 3082(..)s 3426(..)s +[ /Rect [720 8297 8346 8551] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTmoment /ANN pdfmark +720 8387(3.30.)m 1304(@Moment)s 2738(..)s 3082(..)s 3426(..)s 3770(..)s 4114(..)s 4458(..)s 4802(..)s 5146(..)s 5490(..)s 5834(..)s 6178(..)s 6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s -[ /Rect [8835 8727 9066 8897] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTmoment /ANN pdfmark -8835(59)s +[ /Rect [8831 8384 9066 8551] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTmoment /ANN pdfmark +8831(60)s -[ /Rect [720 8297 8346 8551] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTnull /ANN pdfmark -720 8387(3.30.)m 1304(@Null)s 2394(..)s 2738(..)s 3082(..)s +[ /Rect [720 7952 8346 8206] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTnull /ANN pdfmark +720 8042(3.31.)m 1304(@Null)s 2394(..)s 2738(..)s 3082(..)s 3426(..)s 3770(..)s 4114(..)s 4458(..)s 4802(..)s 5146(..)s 5490(..)s 5834(..)s 6178(..)s 6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s -[ /Rect [8831 8384 9066 8551] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTnull /ANN pdfmark -8831(60)s -[ /Rect [720 7952 8346 8206] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTgalley /ANN pdfmark -720 8042(3.31.)m 1304(@Galle)s 3(y)k 2213(and)s +[ /Rect [8851 8039 9066 8206] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTnull /ANN pdfmark +8851(61)s +[ /Rect [720 7607 8346 7861] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTgalley /ANN pdfmark +720 7697(3.32.)m 1304(@Galle)s 3(y)k 2213(and)s 2617(@F)s 3(orceGalle)k 3(y)k 4458(..)s 4802(..)s 5146(..)s 5490(..)s 5834(..)s 6178(..)s 6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s -[ /Rect [8831 8039 9066 8206] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTgalley /ANN pdfmark -8831(60)s -[ /Rect [720 7319 8346 7860] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTheader_comp /ANN pdfmark -720 7697(3.32.)m 1304(@Be)s 3(ginHeaderComponent,)k 4041(@EndHeaderComponent,)s -6596(@SetHeaderCom)s 8278(-)s 1304 7409(ponent,)m 2063(and)s 2467(@ClearHeaderComponent)s +[ /Rect [8851 7694 9066 7861] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTgalley /ANN pdfmark +8851(61)s +[ /Rect [720 6974 8346 7515] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTheader_comp /ANN pdfmark +720 7352(3.33.)m 1304(@Be)s 3(ginHeaderComponent,)k 4041(@EndHeaderComponent,)s +6596(@SetHeaderCom)s 8278(-)s 1304 7064(ponent,)m 2063(and)s 2467(@ClearHeaderComponent)s 5490(..)s 5834(..)s 6178(..)s 6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s -[ /Rect [8831 7406 9066 7573] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTheader_comp /ANN pdfmark -8831(60)s +[ /Rect [8832 7061 9066 7228] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTheader_comp /ANN pdfmark +8832(62)s -[ /Rect [720 6974 8346 7228] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTnotrevealed /ANN pdfmark -720 7064(3.33.)m 1304(@NotRe)s 6(v)k 3(ealed)k 3082(..)s +[ /Rect [720 6629 8346 6883] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTnotrevealed /ANN pdfmark +720 6719(3.34.)m 1304(@NotRe)s 6(v)k 3(ealed)k 3082(..)s 3426(..)s 3770(..)s 4114(..)s 4458(..)s 4802(..)s 5146(..)s 5490(..)s 5834(..)s 6178(..)s 6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s -[ /Rect [8832 7061 9066 7228] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTnotrevealed /ANN pdfmark -8832(62)s -[ /Rect [720 6629 8346 6883] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTcrossref /ANN pdfmark -720 6719(3.34.)m 1304(The)s 1732(cross)s 2274(reference)s +[ /Rect [8842 6716 9066 6883] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTnotrevealed /ANN pdfmark +8842(63)s +[ /Rect [720 6284 8346 6539] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTcrossref /ANN pdfmark +720 6374(3.35.)m 1304(The)s 1732(cross)s 2274(reference)s 3217(symbols)s 4066(&&)s 4492(and)s 4896(&&&)s 5834(..)s 6178(..)s 6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s -[ /Rect [8842 6716 9066 6883] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTcrossref /ANN pdfmark -8842(63)s -[ /Rect [720 6284 8346 6539] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTtagged /ANN pdfmark -720 6374(3.35.)m 1304(@T)s 19(agged)k +[ /Rect [8832 6371 9066 6538] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTcrossref /ANN pdfmark +8832(64)s +[ /Rect [720 5939 8346 6194] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTtagged /ANN pdfmark +720 6029(3.36.)m 1304(@T)s 19(agged)k 2738(..)s 3082(..)s 3426(..)s 3770(..)s 4114(..)s 4458(..)s 4802(..)s 5146(..)s 5490(..)s 5834(..)s 6178(..)s 6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s -[ /Rect [8842 6371 9066 6538] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTtagged /ANN pdfmark -8842(63)s -[ /Rect [720 5939 8346 6193] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTopen /ANN pdfmark -720 6029(3.36.)m 1304(@Open and @Use)s +[ /Rect [8840 6026 9066 6194] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTtagged /ANN pdfmark +8840(65)s +[ /Rect [720 5594 8346 5849] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTopen /ANN pdfmark +720 5684(3.37.)m 1304(@Open and @Use)s 3426(..)s 3770(..)s 4114(..)s 4458(..)s 4802(..)s 5146(..)s 5490(..)s 5834(..)s 6178(..)s 6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s -[ /Rect [8832 6026 9066 6193] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTopen /ANN pdfmark -8832(64)s -[ /Rect [720 5594 8346 5848] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTlink_source /ANN pdfmark -720 5684(3.37.)m 1304(@LinkSource,)s 2748(@LinkDest,)s 3966(and)s +[ /Rect [8840 5681 9066 5849] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTopen /ANN pdfmark +8840(65)s +[ /Rect [720 5249 8346 5503] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTlink_source /ANN pdfmark +720 5339(3.38.)m 1304(@LinkSource,)s 2748(@LinkDest,)s 3966(and)s 4370(@URLLink)s 5834(..)s 6178(..)s 6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s -[ /Rect [8832 5681 9066 5848] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTlink_source /ANN pdfmark -8832(64)s +[ /Rect [8833 5336 9066 5503] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTlink_source /ANN pdfmark +8833(66)s -[ /Rect [720 5249 8346 5504] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTdatabase /ANN pdfmark -720 5339(3.38.)m 1304(@Database and @SysDatabase)s 4802(..)s 5146(..)s 5490(..)s +[ /Rect [720 4904 8346 5158] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTdatabase /ANN pdfmark +720 4994(3.39.)m 1304(@Database and @SysDatabase)s 4802(..)s 5146(..)s 5490(..)s 5834(..)s 6178(..)s 6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s -[ /Rect [8840 5336 9066 5504] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTdatabase /ANN pdfmark -8840(65)s -[ /Rect [720 4904 8346 5158] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTgraphic /ANN pdfmark -720 4994(3.39.)m +[ /Rect [8838 4991 9066 5158] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTdatabase /ANN pdfmark +8838(67)s +[ /Rect [720 4559 8346 4813] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTgraphic /ANN pdfmark +720 4649(3.40.)m 1304(@Graphic)s 2738(..)s 3082(..)s 3426(..)s 3770(..)s 4114(..)s 4458(..)s 4802(..)s 5146(..)s 5490(..)s 5834(..)s 6178(..)s 6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s -[ /Rect [8833 4991 9066 5158] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTgraphic /ANN pdfmark -8833(66)s -[ /Rect [720 4559 8346 4812] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTplaingraphic /ANN pdfmark -720 4649(3.40.)m +[ /Rect [8839 4646 9066 4813] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTgraphic /ANN pdfmark +8839(68)s +[ /Rect [720 4214 8346 4467] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTplaingraphic /ANN pdfmark +720 4304(3.41.)m 1304(@PlainGraphic)s 3082(..)s 3426(..)s 3770(..)s 4114(..)s 4458(..)s 4802(..)s 5146(..)s 5490(..)s 5834(..)s 6178(..)s 6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s -[ /Rect [8831 4646 9066 4811] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTplaingraphic /ANN pdfmark -8831(70)s -[ /Rect [720 4214 8346 4467] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTincludegraphic /ANN pdfmark -720 4304(3.41.)m 1304(@IncludeGraphic)s +[ /Rect [8832 4303 9066 4466] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTplaingraphic /ANN pdfmark +8832(72)s +[ /Rect [720 3869 8346 4122] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTincludegraphic /ANN pdfmark +720 3959(3.42.)m 1304(@IncludeGraphic)s 3065(and)s 3469(@SysIncludeGraphic)s 5834(..)s 6178(..)s 6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s -[ /Rect [8831 4301 9066 4466] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTincludegraphic /ANN pdfmark -8831(70)s -[ /Rect [720 3869 8346 4122] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTincludegraphicrepeated /ANN pdfmark -720 3959(3.42.)m 1304(@IncludeGraphicRepeated)s 3960(and)s 4364(@SysIncludeGraphicRepeated)s +[ /Rect [8832 3958 9066 4121] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTincludegraphic /ANN pdfmark +8832(72)s +[ /Rect [720 3524 8346 3777] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTincludegraphicrepeated /ANN pdfmark +720 3614(3.43.)m 1304(@IncludeGraphicRepeated)s 3960(and)s 4364(@SysIncludeGraphicRepeated)s 7554(..)s 7898(..)s 8242(..)s -[ /Rect [8831 3956 9066 4121] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTincludegraphicrepeated /ANN pdfmark -8831(70)s -[ /Rect [720 3524 8346 3777] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTprependgraphic /ANN pdfmark -720 3614(3.43.)m +[ /Rect [8832 3613 9066 3776] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTincludegraphicrepeated /ANN pdfmark +8832(72)s +[ /Rect [720 3179 8346 3432] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTprependgraphic /ANN pdfmark +720 3269(3.44.)m 1304(@PrependGraphic and @SysPrependGraphic)s 6178(..)s 6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s -[ /Rect [8851 3613 9066 3776] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTprependgraphic /ANN pdfmark -8851(71)s -[ /Rect [720 3179 8346 3432] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTinclude /ANN pdfmark -720 3269(3.44.)m +[ /Rect [8842 3266 9066 3431] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTprependgraphic /ANN pdfmark +8842(73)s +[ /Rect [720 2834 8346 3089] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTinclude /ANN pdfmark +720 2924(3.45.)m 1304(@Include and @SysInclude)s 4458(..)s 4802(..)s 5146(..)s 5490(..)s 5834(..)s 6178(..)s 6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s -[ /Rect [8851 3268 9066 3431] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTinclude /ANN pdfmark -8851(71)s -[ /Rect [720 2834 8346 3089] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTbackend /ANN pdfmark -720 2924(3.45.)m +[ /Rect [8842 2921 9066 3086] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTinclude /ANN pdfmark +8842(73)s +[ /Rect [720 2489 8346 2743] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTbackend /ANN pdfmark +720 2579(3.46.)m 1304(@BackEnd)s 2461(and)s 2865(the)s 3213(PlainT)s 16(e)k 3(xt)k 4183(and)s 4587(PDF)s 5084(back)s 5597(ends)s 6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s -[ /Rect [8832 2923 9066 3086] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTbackend /ANN pdfmark -8832(72)s -[ /Rect [720 2489 8346 2743] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTverbatim /ANN pdfmark -720 2579(3.46.)m 1304(@V)s 26(erbatim and @Ra)k 3(wV)k 26(erbatim)k +[ /Rect [8832 2578 9066 2741] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTbackend /ANN pdfmark +8832(74)s +[ /Rect [720 2144 8346 2399] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTverbatim /ANN pdfmark +720 2234(3.47.)m 1304(@V)s 26(erbatim and @Ra)k 3(wV)k 26(erbatim)k 4802(..)s 5146(..)s 5490(..)s 5834(..)s 6178(..)s 6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s -[ /Rect [8842 2576 9066 2741] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTverbatim /ANN pdfmark -8842(73)s -[ /Rect [720 2144 8346 2397] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTunderline /ANN pdfmark -720 2234(3.47.)m 1304(@Underline)s 2738(..)s +[ /Rect [8840 2231 9066 2399] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTverbatim /ANN pdfmark +8840(75)s +[ /Rect [720 1799 8346 2053] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTunderline /ANN pdfmark +720 1889(3.48.)m 1304(@Underline)s 2738(..)s 3082(..)s 3426(..)s 3770(..)s 4114(..)s 4458(..)s 4802(..)s 5146(..)s 5490(..)s 5834(..)s 6178(..)s 6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s -[ /Rect [8842 2231 9066 2396] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTunderline /ANN pdfmark -8842(73)s -[ /Rect [720 1799 8346 2052] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTpagelabel /ANN pdfmark -720 1889(3.48.)m 1304(@P)s 3(ageLabel)k +[ /Rect [8833 1886 9066 2053] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTunderline /ANN pdfmark +8833(76)s +[ /Rect [720 1454 8346 1708] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTpagelabel /ANN pdfmark +720 1544(3.49.)m 1304(@P)s 3(ageLabel)k 3082(..)s 3426(..)s 3770(..)s 4114(..)s 4458(..)s 4802(..)s 5146(..)s 5490(..)s 5834(..)s 6178(..)s 6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s -[ /Rect [8832 1888 9066 2051] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTpagelabel /ANN pdfmark -8832(74)s -[ /Rect [0 1170 8346 1425] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTexamples /ANN pdfmark -240 fnt5 0 1259(Chapter)m 908(4)s -240 fnt1 1022 1260(.)m 240 fnt5 1186 1259(Examples)m 240 fnt1 -2738 1260(..)m 3082(..)s 3426(..)s 3770(..)s 4114(..)s +[ /Rect [8833 1541 9066 1708] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTpagelabel /ANN pdfmark +8833(76)s +[ /Rect [0 826 8346 1080] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTexamples /ANN pdfmark +240 fnt5 0 915(Chapter)m 908(4)s +240 fnt1 1022 916(.)m 240 fnt5 1186 915(Examples)m 240 fnt1 +2738 916(..)m 3082(..)s 3426(..)s 3770(..)s 4114(..)s 4458(..)s 4802(..)s 5146(..)s 5490(..)s 5834(..)s 6178(..)s 6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s -[ /Rect [8840 1257 9066 1425] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTexamples /ANN pdfmark -8840(75)s -[ /Rect [720 825 8346 1080] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTeq /ANN pdfmark -720 915(4.1.)m 1184(An)s +[ /Rect [8838 915 9066 1074] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTexamples /ANN pdfmark +8838(77)s +[ /Rect [720 481 8346 734] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTeq /ANN pdfmark +720 571(4.1.)m 1184(An)s 1534(equation)s 2415(formatting)s 3476(package)s 4802(..)s 5146(..)s 5490(..)s 5834(..)s 6178(..)s 6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s -[ /Rect [8840 912 9066 1080] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTeq /ANN pdfmark -8840(75)s +[ /Rect [8838 570 9066 729] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTeq /ANN pdfmark +8838(77)s -[ /Rect [720 480 8346 733] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTparas /ANN pdfmark -720 570(4.2.)m 1184(P)s 3(aragraphs,)k 2350(displays,)s 3241(and)s +[ /Rect [720 136 8346 389] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTparas /ANN pdfmark +720 226(4.2.)m 1184(P)s 3(aragraphs,)k 2350(displays,)s 3241(and)s 3645(lists)s 4458(..)s 4802(..)s 5146(..)s 5490(..)s 5834(..)s 6178(..)s 6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s -[ /Rect [8838 569 9066 728] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTparas /ANN pdfmark -8838(77)s -[ /Rect [720 135 8346 388] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTpagelayout /ANN pdfmark -720 225(4.3.)m -1184(P)s 3(age)k 1702(layout)s 2738(..)s 3082(..)s -3426(..)s 3770(..)s 4114(..)s 4458(..)s 4802(..)s -5146(..)s 5490(..)s 5834(..)s 6178(..)s 6522(..)s -6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s - -[ /Rect [8851 222 9066 387] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTpagelayout /ANN pdfmark -8851(81)s +[ /Rect [8835 221 9066 388] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTparas /ANN pdfmark +8835(79)s grestore 0 0 0 0 240 288 60 1417 -14832 LoutGr2 0 LoutMargSet grestore grestore -1417 -15420(i)m 6(v)k +1417 -15420(i)m 6(v)k + grestore grestore @@ -2235,58 +2340,76 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -9066 13470 0 13470 240 288 60 1417 -14887 LoutGr2 +9066 13470 0 13361 240 288 60 1417 -14887 LoutGr2 1 LoutMargSet grestore -[ /Rect [720 13182 8346 13436] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTchapters /ANN pdfmark -720 13272(4.4.)m 1184(Chapters)s 2085(and)s 2489(sections)s 3770(..)s +[ /Rect [720 13217 8346 13470] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTpagelayout /ANN pdfmark +720 13307(4.3.)m 1184(P)s 3(age)k +1702(layout)s 2738(..)s 3082(..)s 3426(..)s 3770(..)s 4114(..)s 4458(..)s 4802(..)s 5146(..)s 5490(..)s 5834(..)s 6178(..)s 6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s -[ /Rect [8833 13269 9066 13436] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTchapters /ANN pdfmark -8833(86)s -[ /Rect [720 12837 8346 13092] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTbiblio /ANN pdfmark -720 12927(4.5.)m -1184(Bibliographies)s 3082(..)s 3426(..)s 3770(..)s 4114(..)s +[ /Rect [8842 13304 9066 13469] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTpagelayout /ANN pdfmark +8842(83)s +[ /Rect [720 12872 8346 13125] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTchapters /ANN pdfmark +720 12962(4.4.)m +1184(Chapters)s 2085(and)s 2489(sections)s 3770(..)s 4114(..)s 4458(..)s 4802(..)s 5146(..)s 5490(..)s 5834(..)s 6178(..)s 6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s -[ /Rect [8851 12922 9066 13089] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTbiblio /ANN pdfmark -8851(91)s -[ /Rect [720 12492 8346 12747] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTexa_inde /ANN pdfmark -720 12582(4.6.)m 1184(Mer)s 4(ged)k +[ /Rect [8839 12959 9066 13124] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTchapters /ANN pdfmark +8839(88)s +[ /Rect [720 12527 8346 12782] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTbiblio /ANN pdfmark +720 12617(4.5.)m 1184(Bibliographies)s +3082(..)s 3426(..)s 3770(..)s 4114(..)s 4458(..)s +4802(..)s 5146(..)s 5490(..)s 5834(..)s 6178(..)s +6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s +8242(..)s +[ /Rect [8842 12612 9066 12779] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTbiblio /ANN pdfmark +8842(93)s +[ /Rect [720 12182 8346 12436] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTexa_inde /ANN pdfmark +720 12272(4.6.)m 1184(Mer)s 4(ged)k 1982(inde)s 3(x)k 2566(entries)s 3770(..)s 4114(..)s 4458(..)s 4802(..)s 5146(..)s 5490(..)s 5834(..)s 6178(..)s 6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s -[ /Rect [8840 12577 9066 12747] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTexa_inde /ANN pdfmark -8840(95)s -[ /Rect [0 11864 8346 12118] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT17_431_all_1 /ANN pdfmark -240 fnt5 0 11953(Refer)m 4(ences)k -240 fnt1 1362 11954(..)m 1706(..)s 2050(..)s 2394(..)s +[ /Rect [8838 12267 9066 12434] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTexa_inde /ANN pdfmark +8838(97)s +[ /Rect [0 11554 8346 11808] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTtex /ANN pdfmark +240 fnt5 0 11643(A)m 6(ppendix)k +1048(A)s 240 fnt1 1214 11644(.)m 240 fnt5 1378 11643(Implementation)m +3066(of)s 3338(T)s 22(extur)k 4(es)k 240 fnt1 +4458 11644(..)m 4802(..)s 5146(..)s 5490(..)s 5834(..)s +6178(..)s 6522(..)s 6866(..)s 7210(..)s 7554(..)s +7898(..)s 8242(..)s +[ /Rect [8731 11641 9066 11806] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTtex /ANN pdfmark +8731(101)s +[ /Rect [0 10926 8346 11180] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT20_434_all_1 /ANN pdfmark +240 fnt5 0 11015(Refer)m 4(ences)k +240 fnt1 1362 11016(..)m 1706(..)s 2050(..)s 2394(..)s 2738(..)s 3082(..)s 3426(..)s 3770(..)s 4114(..)s 4458(..)s 4802(..)s 5146(..)s 5490(..)s 5834(..)s 6178(..)s 6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s -[ /Rect [8835 11949 9066 12116] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT17_431_all_1 /ANN pdfmark -8835(99)s -[ /Rect [0 11238 8346 11490] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT17_453_all_1 /ANN pdfmark -240 fnt5 0 11327(Index)m -240 fnt1 1018 11328(..)m 1362(..)s 1706(..)s 2050(..)s +[ /Rect [8713 11013 9066 11180] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT20_434_all_1 /ANN pdfmark +8713(106)s +[ /Rect [0 10300 8346 10552] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT20_489_all_1 /ANN pdfmark +240 fnt5 0 10389(Index)m +240 fnt1 1018 10390(..)m 1362(..)s 1706(..)s 2050(..)s 2394(..)s 2738(..)s 3082(..)s 3426(..)s 3770(..)s 4114(..)s 4458(..)s 4802(..)s 5146(..)s 5490(..)s 5834(..)s 6178(..)s 6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s -[ /Rect [8711 11325 9066 11490] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT17_453_all_1 /ANN pdfmark -8711(100)s +[ /Rect [8718 10387 9066 10552] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT20_489_all_1 /ANN pdfmark +8718(107)s grestore 0 0 0 0 240 288 60 1417 -14887 LoutGr2 1 LoutMargSet @@ -2313,7 +2436,7 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore @@ -2357,7 +2480,7 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore @@ -2372,73 +2495,74 @@ 9066 13450 0 13450 240 288 60 1417 -14867 LoutGr2 1 LoutMargSet grestore -480 fnt5 0 12399(Chapter)m 1819(1.)s 2400(Principles)s +480 fnt5 0 12399(Chapter)m +1819(1.)s 2400(Principles)s [ /Dest /LOUTprinciples /DEST pdfmark -240 fnt1 -0 11448(The)m 414(Lout)s 911(document)s 1900(formatting)s 2946(language)s -3852(is)s 4047(based)s 4635(on)s 4917(just)s 5307(four)s -5751(k)s 2(e)k 3(y)k 6131(ideas:)s 6713(objects,)s -7482(de\207nitions,)s 8584(cross)s 0 11160(references,)m 1087(and)s 1491(g)s 1(alle)k 3(ys.)k -2328(This)s 2804(chapter)s 3567(concentrates)s 4812(on)s 5109(them,)s -5694(postponing)s 6812(the)s 7160(ine)s 6(vitable)k 8152(details.)s -240 fnt5 0 10367(1.1.)m 471(Objects)s +240 fnt1 0 11448(The)m 414(Lout)s +911(document)s 1900(formatting)s 2946(language)s 3852(is)s 4047(based)s +4635(on)s 4917(just)s 5307(four)s 5751(k)s 2(e)k 3(y)k +6131(ideas:)s 6713(objects,)s 7482(de\207nitions,)s 8584(cross)s 0 11160(references,)m +1087(and)s 1491(g)s 1(alle)k 3(ys.)k 2328(This)s +2804(chapter)s 3567(concentrates)s 4812(on)s 5109(them,)s 5694(postponing)s +6812(the)s 7160(ine)s 6(vitable)k 8152(details.)s 240 fnt5 +0 10367(1.1.)m 471(Objects)s [ /Dest /LOUTobjects /DEST pdfmark -240 fnt1 480 9891(Since)m -1075(our)s 1462(aim)s 1888(is)s 2106(to)s 2354(produce)s -3189(neatly)s 3835(formatted)s 4829(documents,)s 5981(we)s 6325(should)s -7030(be)s 3(gin)k 7624(by)s 7926(looking)s 8719(at)s -8960(a)s 0 9603(typical)m 705(e)s 3(xample)k 1568(of)s -1839(such)s 2335(a)s 2501(document:)s 1927 2494 0 2494 240 288 60 480 6769 LoutGr2 +240 fnt1 480 9891(Since)m 1075(our)s +1462(aim)s 1888(is)s 2106(to)s 2354(produce)s 3189(neatly)s +3835(formatted)s 4829(documents,)s 5981(we)s 6325(should)s 7030(be)s 3(gin)k +7624(by)s 7926(looking)s 8719(at)s 8960(a)s 0 9603(typical)m +705(e)s 3(xample)k 1568(of)s 1839(such)s 2335(a)s +2501(document:)s 1927 2494 0 2494 240 288 60 480 6769 LoutGr2 0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath stroke grestore -160 fnt5 560 1987(PURCELL)m -128 fnt1 1316 2059(1)m 160 fnt1 170 1695(In)m 395(the)s -681(w)s 1(orld)k 1145(of)s 1381(music)s 170 1515(England)m -882(is)s 1163(supposed)s 170 1335(to)m 376(be)s 611(a)s -768(mere)s 1171(pro)s 2(vince.)k 170 1155(If)m 465(she)s -856(produces)s 1608(an)s 170 975(indif)m 4(ferent)k 1136(composer)s -567 0 0 0 160 180 40 170 763 LoutGr2 +160 fnt5 560 1987(PURCELL)m 128 fnt1 1316 2059(1)m +160 fnt1 170 1695(In)m 395(the)s 681(w)s 1(orld)k +1145(of)s 1381(music)s 170 1515(England)m 882(is)s 1163(supposed)s +170 1335(to)m 376(be)s 611(a)s 768(mere)s 1171(pro)s 2(vince.)k +170 1155(If)m 465(she)s 856(produces)s 1608(an)s 170 975(indif)m 4(ferent)k +1136(composer)s 567 0 0 0 160 180 40 170 763 LoutGr2 0 0 moveto xsize 0 lineto stroke grestore grestore -128 fnt1 170 624(1)m 160 fnt1 221 552(Blom,)m 703(Eric.)s -160 fnt6 1133 553(Some)m 170 373(Gr)m 5(eat)k 734(Composer)s 1(s.)k -160 fnt1 170 192(Oxford,)m 703(1944.)s +128 fnt1 170 624(1)m 160 fnt1 221 552(Blom,)m +703(Eric.)s 160 fnt6 1133 553(Some)m 170 373(Gr)m 5(eat)k +734(Composer)s 1(s.)k 160 fnt1 170 192(Oxford,)m 703(1944.)s + grestore 1927 2494 0 2494 240 288 60 480 4275 LoutGr2 0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath stroke grestore -160 fnt1 170 2161(or)m -453(performer)s 6(,)k 1267(that)s 1657(is)s 170 1981(re)m 2(garded)k -862(else)s 4(where)k 1630(as)s 170 1801(perfectly)m 905(normal)s -1527(and)s 170 1621(natural;)m 762(b)s 3(ut)k 1078(if)s -1298(foreign)s 170 1441(students)m 905(of)s 1264(musical)s 170 1261(history)m -976(ha)s 3(v)k 2(e)k 1637(to)s 170 1081(ackno)m 4(wledge)k -1130(a)s 1326(British)s 170 901(musical)m 795(genius,)s 1376(he)s -1657(is)s 170 721(considered)m 901(a)s 1012(freak.)s 490 488(Such)m -957(a)s 1178(freak)s 1657(is)s 170 308(Henry)m 607(Purcell.)s -1170(Y)s 16(et)k 1426(if)s 1574(we)s +160 fnt1 170 2161(or)m 453(performer)s 6(,)k 1267(that)s +1657(is)s 170 1981(re)m 2(garded)k 862(else)s 4(where)k +1630(as)s 170 1801(perfectly)m 905(normal)s 1527(and)s 170 1621(natural;)m +762(b)s 3(ut)k 1078(if)s 1298(foreign)s 170 1441(students)m +905(of)s 1264(musical)s 170 1261(history)m 976(ha)s 3(v)k 2(e)k +1637(to)s 170 1081(ackno)m 4(wledge)k 1130(a)s 1326(British)s +170 901(musical)m 795(genius,)s 1376(he)s 1657(is)s 170 721(considered)m +901(a)s 1012(freak.)s 490 488(Such)m 957(a)s 1178(freak)s +1657(is)s 170 308(Henry)m 607(Purcell.)s 1170(Y)s 16(et)k +1426(if)s 1574(we)s grestore 1927 2494 0 2494 240 288 60 480 1781 LoutGr2 0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath stroke grestore -160 fnt1 -170 2161(mak)m 1(e)k 565(a)s 690(choice)s 1157(of)s -1352(\207fteen)s 170 1981(of)m 407(the)s 695(w)s 1(orld')k 8(s)k -1264(musical)s 170 1801(classics,)m 740(as)s 918(here,)s 1276(we)s -1510(\207nd)s 170 1621(that)m 464(we)s 703(cannot)s 1185(omit)s -1533(this)s 170 1441(English)m 695(master)s 8(.)k -grestore -0 1330(It)m -229(is)s 463(a)s 653(lar)s 4(ge)k 1206(rectangle)s -2161(made)s 2759(from)s 3307(three)s 3864(smaller)s 4651(rectangles)s -5694(\211)s 5898(its)s 6198(pages.)s 6931(Each)s 7490(page)s -8022(is)s 8256(made)s 8855(of)s 0 1042(lines;)m 578(each)s -1088(line)s 1517(is)s 1743(made)s 2332(of)s 2618(w)s 2(ords,)k +160 fnt1 170 2161(mak)m 1(e)k +565(a)s 690(choice)s 1157(of)s 1352(\207fteen)s 170 1981(of)m +407(the)s 695(w)s 1(orld')k 8(s)k 1264(musical)s +170 1801(classics,)m 740(as)s 918(here,)s 1276(we)s 1510(\207nd)s +170 1621(that)m 464(we)s 703(cannot)s 1185(omit)s 1533(this)s +170 1441(English)m 695(master)s 8(.)k +grestore +0 1330(It)m 229(is)s +463(a)s 653(lar)s 4(ge)k 1206(rectangle)s 2161(made)s +2759(from)s 3307(three)s 3864(smaller)s 4651(rectangles)s 5694(\211)s +5898(its)s 6198(pages.)s 6931(Each)s 7490(page)s 8022(is)s +8256(made)s 8855(of)s 0 1042(lines;)m 578(each)s 1088(line)s +1517(is)s 1743(made)s 2332(of)s 2618(w)s 2(ords,)k 3324(although)s 4234(it)s 4441(mak)s 2(es)k 5117(sense)s 5706(for)s 6059(an)s 3(y)k 6472(rectangle)s 7418(\(e)s 6(v)k 3(en)k 8012(a)s 8194(complete)s 0 754(document\))m 1072(to)s 1311(be)s @@ -2448,15 +2572,13 @@ 3251(little)s 3747(more)s 4298(complicated)s 5528(than)s 6001(rectangles:)s 240 fnt6 7079 382(objects.)m 240 fnt1 7914 380(An)m 8268(object)s -[ /Dest /LOUT16_4080_pri_obje_1 /DEST pdfmark +[ /Dest /LOUT19_4213_pri_obje_1 /DEST pdfmark 8916(is)s 0 92(a)m 176(rectangle)s 1118(with)s 1611(at)s 1854(least)s 2362(one)s 240 fnt6 2775 94(column)m 3545(mark)s -[ /Dest /LOUT16_4080_pri_obje_2 /DEST pdfmark - -[ /Dest /LOUT16_4080_pri_obje_3 /DEST pdfmark +[ /Dest /LOUT19_4213_pri_obje_2 /DEST pdfmark -[ /Dest /LOUT16_4059_pri_obje_1 /DEST pdfmark +[ /Dest /LOUT19_4213_pri_obje_3 /DEST pdfmark 240 fnt1 4112 92(protruding)m 5186(abo)s 3(v)k 3(e)k 5819(and)s 6234(belo)s 6(w)k 6878(it,)s 7128(and)s 7543(at)s 7786(least)s 8294(one)s 240 fnt6 8707 94(r)m 10(ow)k @@ -2498,25 +2620,26 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -240 fnt5 1417 -1583(2)m 240 fnt6 8382 -1580(Chapter)m 9232(1.)s -9506(Principles)s gsave +240 fnt5 1417 -1583(2)m +240 fnt6 8382 -1580(Chapter)m 9232(1.)s 9506(Principles)s gsave 1417 -15423 translate -240 fnt1 9066 13368 0 13257 240 288 60 LoutGraphic +240 fnt1 +9066 13368 0 13257 240 288 60 LoutGraphic gsave 0 LoutMargSet grestore 240 fnt6 0 13205(mark)m -[ /Dest /LOUT16_4080_pri_obje_4 /DEST pdfmark -240 fnt1 557 13203(protruding)m -1621(to)s 1861(the)s 2211(left)s 2589(and)s 2994(right.)s -3611(The)s 4040(simplest)s 4897(objects)s 5627(contain)s 6389(w)s 2(ords)k +[ /Dest /LOUT19_4213_pri_obje_4 /DEST pdfmark +240 fnt1 557 13203(protruding)m 1621(to)s +1861(the)s 2211(left)s 2589(and)s 2994(right.)s 3611(The)s +4040(simplest)s 4897(objects)s 5627(contain)s 6389(w)s 2(ords)k 7024(lik)s 2(e)k 7438(metempsychosis,)s 0 12915(and)m 404(ha)s 4(v)k 3(e)k 905(one)s 1307(mark)s 1859(of)s 2130(each)s 2625(type:)s 1572 215 0 106 240 288 60 480 12360 LoutGr2 @@ -2798,11 +2921,11 @@ end end restore grestore -[ /Dest /LOUT16_4080_pri_obje_5 /DEST pdfmark -94 2287(There)m 742(are)s -1124(se)s 6(v)k 3(eral)k 1881(things)s 2552(to)s -2826(note)s 3329(carefully)s 4266(here.)s 4876(White)s 5551(space)s -6173(\(including)s 7244(tabs)s 7715(and)s 8154(ne)s 6(wlines\))k +[ /Dest /LOUT19_4213_pri_obje_5 /DEST pdfmark +0 2287(There)m 655(are)s +1044(se)s 6(v)k 3(eral)k 1808(things)s 2486(to)s +2768(note)s 3278(carefully)s 4222(here.)s 4839(White)s 5522(space)s +6151(\(including)s 7229(tabs)s 7707(and)s 8154(ne)s 6(wlines\))k 0 1999(adjacent)m 848(to)s 1078(a)s 1236(concatenation)s 2612(symbol)s 3364(is)s 3565(ignored,)s 4395(so)s 4652(it)s 4836(may)s 5293(be)s 5567(used)s 6055(to)s 6286(lay)s 6623(out)s @@ -2870,38 +2993,39 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -240 fnt6 1417 -1580(1.1.)m 1871(Objects)s 240 fnt5 10370 -1583(3)m -gsave +240 fnt6 1417 -1580(1.1.)m +1871(Objects)s 240 fnt5 10370 -1583(3)m gsave 1417 -15423 translate 240 fnt1 9066 13368 0 13259 240 288 60 LoutGraphic gsave 1 LoutMargSet grestore -480 13205(By)m 840(enclosing)s 1836(an)s 2145(object)s 2815(in)s -3085(braces,)s 3828(it)s 4046(is)s 4282(possible)s 5148(to)s -5414(o)s 3(v)k 3(erride)k 6286(the)s -[ /Dest /LOUT16_4080_pri_obje_6 /DEST pdfmark -6660(set)s -7011(precedences.)s 8369(Here)s 8916(is)s 0 12917(another)m 777(e)s 3(xpression)k -1854(for)s 2192(the)s 2540(table)s 3060(abo)s 3(v)k 3(e,)k -3733(in)s 3976(which)s 4618(the)s 4966(columns)s 5828(are)s -6175(formed)s 6923(\207rst:)s 220 fnt2 996 12416({ USA)m 2089(/0.1i)s -2609(W)s 8(ashington })k 480 12128(|0.2i)m 996({ A)s 6(ustr)k 2(alia)k -2089(/)s 2609(Canberr)s 2(a })k 240 fnt1 0 11634(Braces)m -701(ha)s 4(v)k 3(e)k 1202(no)s 1495(ef)s 6(fect)k -2091(other)s 2642(than)s 3111(to)s 3350(alter)s 3833(the)s -4181(grouping.)s 240 fnt6 480 11262(P)m 19(ar)k 3(a)k 2(gr)k 3(aph)k +480 13205(By)m +840(enclosing)s 1836(an)s 2145(object)s 2815(in)s 3085(braces,)s +3828(it)s 4046(is)s 4282(possible)s 5148(to)s 5414(o)s 3(v)k 3(erride)k +6286(the)s +[ /Dest /LOUT19_4213_pri_obje_6 /DEST pdfmark +6660(set)s 7011(precedences.)s 8369(Here)s 8916(is)s +0 12917(another)m 777(e)s 3(xpression)k 1854(for)s 2192(the)s +2540(table)s 3060(abo)s 3(v)k 3(e,)k 3733(in)s +3976(which)s 4618(the)s 4966(columns)s 5828(are)s 6175(formed)s +6923(\207rst:)s 220 fnt2 996 12416({ USA)m 2089(/0.1i)s 2609(W)s 8(ashington })k +480 12128(|0.2i)m 996({ A)s 6(ustr)k 2(alia)k 2089(/)s +2609(Canberr)s 2(a })k 240 fnt1 0 11634(Braces)m 701(ha)s 4(v)k 3(e)k +1202(no)s 1495(ef)s 6(fect)k 2091(other)s 2642(than)s +3111(to)s 3350(alter)s 3833(the)s 4181(grouping.)s 240 fnt6 +480 11262(P)m 19(ar)k 3(a)k 2(gr)k 3(aph)k 1569(br)s 8(eaking)k 240 fnt1 2476 11260(occurs)m 3160(when)s 3746(an)s 4038(object)s 4692(is)s 4911(too)s 5280(wide)s 5810(to)s 6059(\207t)s -[ /Dest /LOUT16_4080_pri_obje_7 /DEST pdfmark +[ /Dest /LOUT19_4213_pri_obje_7 /DEST pdfmark 6327(into)s 6762(the)s 7119(space)s 7716(a)s 4(v)k 6(ailable)k 8633(to)s 8882(it;)s 0 10972(by)m 286(breaking)s 1168(its)s 1436(paragraphs)s 2527(into)s @@ -3009,25 +3133,26 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -240 fnt5 1417 -1583(4)m 240 fnt6 8382 -1580(Chapter)m 9232(1.)s -9506(Principles)s gsave +240 fnt5 1417 -1583(4)m +240 fnt6 8382 -1580(Chapter)m 9232(1.)s 9506(Principles)s gsave 1417 -15423 translate -240 fnt1 9066 13368 0 13258 240 288 60 LoutGraphic +240 fnt1 +9066 13368 0 13258 240 288 60 LoutGraphic gsave 0 LoutMargSet grestore -0 13204(pages,)m 637(nor)s 1001(that)s 1403(there)s -1921(are)s 2252(such)s 2733(things)s 3353(as)s 3588(mar)s 4(gins)k +0 13204(pages,)m 637(nor)s 1001(that)s 1403(there)s 1921(are)s +2252(such)s 2733(things)s 3353(as)s 3588(mar)s 4(gins)k 4389(and)s 4778(footnotes,)s 5759(for)s 6082(e)s 3(xample.)k 240 fnt6 7037 13206(De\207nitions)m -[ /Dest /LOUT16_4080_pri_defi_1 /DEST pdfmark +[ /Dest /LOUT19_4213_pri_defi_1 /DEST pdfmark 240 fnt1 8127 13204(bridge)m 8778(the)s 0 12916(g)m 1(ap)k 397(between)s 1249(Lout')s 13(s)k 1910(general)s 2666(features)s 3470(and)s 3873(the)s 4219(special)s @@ -3063,7 +3188,7 @@ 250(the)s 598(author)s 1269(did)s 1633(earlier)s 2301(in)s 2544(this)s 2940(paragraph.)s 480 8026(A)m 240 fnt6 706 8028(symbol)m -[ /Dest /LOUT16_4080_pri_defi_2 /DEST pdfmark +[ /Dest /LOUT19_4213_pri_defi_2 /DEST pdfmark 240 fnt1 1440 8026(is)m 1646(a)s 1808(name,)s 2429(lik)s 2(e)k 220 fnt2 2837 8023(@T)m 26(eX)k 240 fnt1 3432 8026(,)m 3535(which)s 4172(stands)s 4817(for)s 5151(something)s 6197(other)s @@ -3077,12 +3202,12 @@ 2629(says)s 3090(what)s 3613(the)s 3959(symbol)s 4717(stands)s 5364(for)s 13(.)k 5791(The)s 240 fnt6 6217 7452(body)m 240 fnt1 6737 7450(of)m 7006(a)s 7170(de\207nition)s -[ /Dest /LOUT16_4080_pri_defi_3 /DEST pdfmark +[ /Dest /LOUT19_4213_pri_defi_3 /DEST pdfmark 8142(is)s 8350(the)s 8695(part)s 0 7162(follo)m 6(wing)k 977(the)s 1325(name,)s 1950(between)s 2804(the)s 3152(braces.)s 3926(T)s 19(o)k 240 fnt6 4226 7164(in)m 9(vok)k 2(e)k -[ /Dest /LOUT16_4080_pri_defi_4 /DEST pdfmark +[ /Dest /LOUT19_4213_pri_defi_4 /DEST pdfmark 240 fnt1 4892 7162(a)m 5058(symbol)s 5818(is)s 6028(to)s 6267(mak)s 2(e)k 6839(use)s 7214(of)s 7485(it.)s 480 6788(Another)m 1324(e)s 3(xpression)k @@ -3107,7 +3232,7 @@ 1963(that)s 220 fnt2 2398 2202(@Super)m 240 fnt1 3283 2205(has)m 3669(tw)s 2(o)k 240 fnt6 4096 2207(par)m 3(ameter)k 2(s)k 240 fnt1 5176 2205(,)m -[ /Dest /LOUT16_4080_pri_defi_5 /DEST pdfmark +[ /Dest /LOUT19_4213_pri_defi_5 /DEST pdfmark 220 fnt2 5300 2202(x)m 240 fnt1 5485 2205(and)m 220 fnt2 5906 2202(y)m 240 fnt1 6014 2205(.)m 6194(When)s 220 fnt2 6840 2202(@Super)m 240 fnt1 7725 2205(is)m @@ -3127,7 +3252,8 @@ grestore gsave 1417 -15423 translate -240 fnt1 0 0 0 0 240 288 60 LoutGraphic +240 fnt1 +0 0 0 0 240 288 60 LoutGraphic gsave 0 LoutMargSet grestore @@ -3164,27 +3290,28 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -240 fnt6 1417 -1579(1.2.)m 1871(De\207nitions)s 240 fnt5 10370 -1582(5)m -gsave +240 fnt6 1417 -1579(1.2.)m +1871(De\207nitions)s 240 fnt5 10370 -1582(5)m gsave 1417 -15423 translate 240 fnt1 9066 13369 0 13369 240 288 60 LoutGraphic gsave 1 LoutMargSet grestore -0 13151(and)m 404(so)s 670(comes)s 1332(out)s 1698(as)s -200 fnt6 2062 13281(n)m 240 fnt1 1948 13151(2)m 2157(.)s -480 12777(Lout)m 994(permits)s 1764(de\207nitions)s 2828(to)s 3070(in)s 9(v)k 4(ok)k 2(e)k +0 13151(and)m +404(so)s 670(comes)s 1332(out)s 1698(as)s 200 fnt6 +2062 13281(n)m 240 fnt1 1948 13151(2)m 2157(.)s 480 12777(Lout)m +994(permits)s 1764(de\207nitions)s 2828(to)s 3070(in)s 9(v)k 4(ok)k 2(e)k 3765(themselv)s 3(es,)k 4934(a)s 5103(peculiarly)s 6115(circular)s 6905(thing)s 7453(to)s 7695(do)s 7991(which)s 8636(goes)s 0 12489(by)m 294(the)s 642(name)s 1216(of)s -[ /Dest /LOUT16_4080_pri_defi_6 /DEST pdfmark +[ /Dest /LOUT19_4213_pri_defi_6 /DEST pdfmark 240 fnt6 1487 12491(r)m 8(ecur)k 2(sion.)k 240 fnt1 2548 12489(Here)m 3068(is)s 3278(an)s 3561(e)s 3(xample)k 4424(of)s @@ -3260,9 +3387,7 @@ 6918(may)s 7379(be)s 7656(used)s 8148(to)s 8382(specify)s 0 2309(the)m 240 fnt6 348 2311(pa)m 2(g)k 2(e)k 863(layout)s -[ /Dest /LOUT16_4059_pri_defi_1 /DEST pdfmark - -[ /Dest /LOUT16_4080_pri_defi_7 /DEST pdfmark +[ /Dest /LOUT19_4213_pri_defi_7 /DEST pdfmark 240 fnt1 1525 2309(of)m 1796(a)s 1962(document.)s 3070(T)s 19(o)k 3370(be)s 3(gin)k 3956(with,)s 4488(we)s 4823(can)s 5212(de\207ne)s 5853(a)s 6019(page)s @@ -3312,17 +3437,18 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -240 fnt5 1417 -1583(6)m 240 fnt6 8382 -1580(Chapter)m 9232(1.)s -9506(Principles)s gsave +240 fnt5 1417 -1583(6)m +240 fnt6 8382 -1580(Chapter)m 9232(1.)s 9506(Principles)s gsave 1417 -15423 translate -240 fnt1 9066 13368 0 13368 240 288 60 LoutGraphic +240 fnt1 +9066 13368 0 13368 240 288 60 LoutGraphic gsave 0 LoutMargSet grestore @@ -3373,19 +3499,19 @@ 0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath stroke grestore -160 fnt2 170 2207(@T)m 19(e)k 4(xtPlace)k 170 173(@F)m 4(ootSect)k - +160 fnt2 170 2207(@T)m 19(e)k 4(xtPlace)k +170 173(@F)m 4(ootSect)k grestore -160 fnt2 1220 4047(@P)m 6(ageList)k 220 fnt4 3267 5996(\336)m -gsave +160 fnt2 1220 4047(@P)m 6(ageList)k +220 fnt4 3267 5996(\336)m gsave 3597 4277 translate 220 fnt2 1927 2494 0 2494 220 288 61 LoutGraphic gsave 0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath stroke grestore -160 fnt2 170 2207(@T)m 19(e)k 4(xtPlace)k 170 173(@F)m 4(ootSect)k - +160 fnt2 170 2207(@T)m 19(e)k 4(xtPlace)k +170 173(@F)m 4(ootSect)k grestore gsave 3597 1783 translate @@ -3394,19 +3520,19 @@ 0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath stroke grestore -160 fnt2 170 2207(@T)m 19(e)k 4(xtPlace)k 170 173(@F)m 4(ootSect)k - +160 fnt2 170 2207(@T)m 19(e)k 4(xtPlace)k +170 173(@F)m 4(ootSect)k grestore -160 fnt2 3597 1553(@P)m 6(ageList)k 220 fnt4 5644 5996(\336)m -gsave +160 fnt2 3597 1553(@P)m 6(ageList)k +220 fnt4 5644 5996(\336)m gsave 5974 4277 translate 220 fnt2 1927 2494 0 2494 220 288 61 LoutGraphic gsave 0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath stroke grestore -160 fnt2 170 2207(@T)m 19(e)k 4(xtPlace)k 170 173(@F)m 4(ootSect)k - +160 fnt2 170 2207(@T)m 19(e)k 4(xtPlace)k +170 173(@F)m 4(ootSect)k grestore gsave 5974 1783 translate @@ -3415,14 +3541,14 @@ 0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath stroke grestore -160 fnt2 170 2207(@T)m 19(e)k 4(xtPlace)k 170 173(@F)m 4(ootSect)k - +160 fnt2 170 2207(@T)m 19(e)k 4(xtPlace)k +170 173(@F)m 4(ootSect)k grestore grestore -0 1067(setting)m 220 fnt2 750 1064(@P)m 8(ageList)k 240 fnt1 -1874 1067(to)m 200 fnt2 2113 1069(@Null)m 240 fnt1 2706 1067(on)m -3003(the)s 3351(last)s 3742(step.)s 4291(An)s 3(y)k +0 1067(setting)m 220 fnt2 750 1064(@P)m 8(ageList)k +240 fnt1 1874 1067(to)m 200 fnt2 2113 1069(@Null)m 240 fnt1 +2706 1067(on)m 3003(the)s 3351(last)s 3742(step.)s 4291(An)s 3(y)k 4755(number)s 5546(of)s 5817(pages)s 6413(can)s 6802(be)s 7084(generated.)s 480 693(A)m 703(de\207nition)s 1669(for)s 220 fnt2 1999 690(@T)m 26(e)k 6(xtPlace)k 240 fnt1 3209 693(is)m @@ -3481,21 +3607,22 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -240 fnt6 1417 -1579(1.2.)m 1871(De\207nitions)s 240 fnt5 10368 -1582(7)m -gsave +240 fnt6 1417 -1579(1.2.)m +1871(De\207nitions)s 240 fnt5 10368 -1582(7)m gsave 1417 -15423 translate 240 fnt1 9066 13369 0 13265 240 288 60 LoutGraphic gsave 1 LoutMargSet grestore -220 fnt2 480 13208(def @F)m 6(ootList )k 480 12920({ )m 480 12632( @F)m 6(ootPlace //0.3v @F)k 6(ootList)k +220 fnt2 +480 13208(def @F)m 6(ootList )k 480 12920({ )m 480 12632( @F)m 6(ootPlace //0.3v @F)k 6(ootList)k 480 12344(} )m 480 12056( )m 480 11768(def @F)m 6(ootSect)k 480 11480({ )m 480 11192( //0.3v 1i @Wide @HLine)m 480 10904( //0.3v @F)m 6(ootList )k 480 10616(} )m 240 fnt1 0 10122(assuming)m 950(that)s 220 fnt2 1360 10119(@HLine)m 240 fnt1 @@ -3504,13 +3631,13 @@ 7764(this)s 8152(de\207nition)s 0 9834(we)m 335(can)s 724(generate)s 1589(pages)s 2185(lik)s 2(e)k 2597(this:)s gsave 480 7000 translate -220 fnt2 1927 2494 0 2494 220 288 61 LoutGraphic +220 fnt2 +1927 2494 0 2494 220 288 61 LoutGraphic gsave 0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath stroke grestore -160 fnt2 -170 2207(@T)m 19(e)k 4(xtPlace)k 170 173(@F)m 4(ootSect)k +160 fnt2 170 2207(@T)m 19(e)k 4(xtPlace)k 170 173(@F)m 4(ootSect)k grestore 220 fnt4 2647 8719(\336)m gsave @@ -3535,19 +3662,20 @@ 0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath stroke grestore -160 fnt2 170 2207(@T)m 19(e)k 4(xtPlace)k -567 0 0 0 160 180 44 170 522 LoutGr2 +160 fnt2 +170 2207(@T)m 19(e)k 4(xtPlace)k 567 0 0 0 160 180 44 170 522 LoutGr2 0 0 moveto xsize 0 lineto stroke grestore grestore -170 349(@F)m 4(ootPlace)k 170 173(@F)m 4(ootList)k +170 349(@F)m 4(ootPlace)k +170 173(@F)m 4(ootList)k grestore -240 fnt1 -0 6549(and)m 404(so)s 670(on)s 967(for)s 1305(arbitrarily)s -2312(man)s 3(y)k 2895(footnotes.)s 480 6175(W)m 19(e)k -852(will)s 1281(see)s 1646(in)s 1892(the)s 2244(ne)s 3(xt)k -2716(section)s 3454(ho)s 6(w)k 3918(in)s 9(v)k 4(ocations)k +240 fnt1 0 6549(and)m 404(so)s +670(on)s 967(for)s 1305(arbitrarily)s 2312(man)s 3(y)k +2895(footnotes.)s 480 6175(W)m 19(e)k 852(will)s 1281(see)s +1646(in)s 1892(the)s 2244(ne)s 3(xt)k 2716(section)s +3454(ho)s 6(w)k 3918(in)s 9(v)k 4(ocations)k 5063(of)s 220 fnt2 5337 6172(@P)m 8(ageList,)k 6511(@F)s 6(ootSect)k 240 fnt1 7665 6175(and)m 220 fnt2 8073 6172(@F)m 6(ootList)k 240 fnt1 0 5887(are)m 356(replaced)s 1232(by)s 1535(their)s @@ -3580,7 +3708,7 @@ [ /Dest /LOUTcross /DEST pdfmark 240 fnt1 480 1898(A)m 705(cross)s 1241(reference)s -[ /Dest /LOUT16_4080_pri_cros_1 /DEST pdfmark +[ /Dest /LOUT19_4213_pri_cros_1 /DEST pdfmark 2178(in)s 2415(common)s 3304(terminology)s 4521(is)s 4725(something)s 5769(lik)s 2(e)k 6176(`see)s 6610(T)s 19(able)k 7185(6')s 7411(or)s 7664(`see)s @@ -3597,14 +3725,14 @@ 2002(page)s 2510(63,)s 2857(and)s 3261(all)s 3554(the)s 3902(cross)s 4444(references)s 5475(must)s 6000(be)s 6282(changed.)s 480 660(The)m 918(Scribe)s -[ /Dest /LOUT16_4080_pri_cros_2 /DEST pdfmark +[ /Dest /LOUT19_4213_pri_cros_2 /DEST pdfmark 1594(document)s 2608(formatter)s 9(,)k 3603(de)s 6(v)k 3(eloped)k 4647(by)s 4951(Brian)s 5549(K.)s 5836(Reid)s 6357([)s [ /Rect [6428 657 6541 824] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTreid1980scribe /ANN pdfmark 6428(6)s 6541(],)s -[ /Dest /LOUT16_4080_pri_cros_3 /DEST pdfmark +[ /Dest /LOUT19_4213_pri_cros_3 /DEST pdfmark 6737(introduced)s 7828(a)s 8004(scheme)s 8788(for)s 0 372(k)m 2(eeping)k 804(track)s 1337(of)s 1603(cross)s 2140(references.)s 3279(It)s 3479(allo)s 6(ws)k 4143(you)s 4553(to)s 4787(gi)s 6(v)k 3(e)k @@ -3654,17 +3782,18 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -240 fnt5 1417 -1583(8)m 240 fnt6 8382 -1580(Chapter)m 9232(1.)s -9506(Principles)s gsave +240 fnt5 1417 -1583(8)m +240 fnt6 8382 -1580(Chapter)m 9232(1.)s 9506(Principles)s gsave 1417 -15423 translate -240 fnt1 9066 13368 0 13259 240 288 60 LoutGraphic +240 fnt1 +9066 13368 0 13259 240 288 60 LoutGraphic gsave 0 LoutMargSet grestore @@ -3717,18 +3846,18 @@ 3169(reference)s 4109(and)s 4511(ending)s 5213(at)s 5443(the)s 5788(top)s 6145(of)s 6413(the)s 6759(tar)s 4(get)k -[ /Dest /LOUT16_4080_pri_cros_4 /DEST pdfmark +[ /Dest /LOUT19_4213_pri_cros_4 /DEST pdfmark 7355(in)s 9(v)k 4(ocation.)k 8513(Three)s 0 5859(special)m 715(v)s 6(alues)k 1367(may)s 1830(be)s 2108(gi)s 6(v)k 3(en)k 2685(to)s 2920(the)s 3264(right)s 3772(parameter)s 4782(of)s 220 fnt2 5050 5856(&&)m 240 fnt1 5338 5859(:)m 220 fnt2 5500 5856(preceding)m 240 fnt1 6451 5859(,)m 220 fnt2 6555 5856(f)m 6(ollo)k 3(wing)k 240 fnt1 7385 5859(,)m 7488(and)s -[ /Dest /LOUT16_4080_pri_cros_5 /DEST pdfmark +[ /Dest /LOUT19_4213_pri_cros_5 /DEST pdfmark -[ /Dest /LOUT16_4080_pri_cros_6 /DEST pdfmark +[ /Dest /LOUT19_4213_pri_cros_6 /DEST pdfmark -[ /Dest /LOUT16_4080_pri_cros_7 /DEST pdfmark +[ /Dest /LOUT19_4213_pri_cros_7 /DEST pdfmark 220 fnt2 7888 5856(f)m 6(oll_or_prec)k 240 fnt1 9022 5859(.)m 0 5571(The)m 467(cross)s 1049(reference)s 220 fnt2 2032 5568(@T)m 26(ab)k 4(le&&preceding)k 240 fnt1 @@ -3837,47 +3966,48 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -240 fnt6 1417 -1578(1.3.)m 1871(Cr)s 10(oss)k 2475(r)s 8(efer)k 8(ences)k +240 fnt6 1417 -1578(1.3.)m +1871(Cr)s 10(oss)k 2475(r)s 8(efer)k 8(ences)k 240 fnt5 10369 -1581(9)m gsave 1417 -15423 translate 240 fnt1 9066 13370 0 13261 240 288 60 LoutGraphic gsave 1 LoutMargSet grestore -0 13207(by)m 297(cross)s 843(references)s -1878(to)s 2121(the)s 2472(symbol.)s 3345(Hence,)s 4067(to)s -4310(sa)s 4(v)k 3(e)k 4787(space)s 5378(in)s -5625(the)s 5977(database,)s 6910(Lout)s 7426(replaces)s 8263(the)s -8615(right)s 0 12919(parameter)m 1011(of)s 1279(each)s 1771(symbol)s -2527(it)s 2716(writes)s 3347(into)s 3768(it)s 3957(by)s -4248(the)s 4592(w)s 2(ord)k 5137(???)s 5505(whene)s 6(v)k 3(er)k -6482(the)s 6827(right)s 7335(parameter)s 8345(appears)s 0 12631(to)m -249(be)s 542(lar)s 4(ge.)k 1190(The)s 1629(table)s -2160(abo)s 3(v)k 3(e)k 2792(w)s 2(ould)k -3458(appear)s 4166(as)s 4427(???)s 4809(because)s 5632(of)s -5914(this)s 6321(optimization,)s 7647(and)s 8062(in)s 8316(general,)s -0 12343(the)m 367(user)s 845(must)s 1390(ensure)s 2089(that)s -2527(an)s 3(y)k 2944(content)s 3728(required)s 4601(by)s -4915(cross)s 5477(references)s 6527(is)s 6757(contained)s 7765(in)s -8028(parameters)s 0 12055(other)m 545(than)s 1007(the)s 1348(right)s -1852(or)s 2104(body)s 2631(parameter)s 13(.)k 3729(This)s -4199(optimization)s 5457(does)s 5940(not)s 6299(apply)s 6878(when)s -7447(the)s 7788(symbol)s 8541(being)s 0 11767(written)m 733(into)s -1158(the)s 1506(cross-reference)s 3019(database)s 3898(is)s 4108(a)s -4274(g)s 1(alle)k 3(y)k 15(.)k 240 fnt5 -0 10974(1.4.)m 471(Galleys)s +0 13207(by)m 297(cross)s +843(references)s 1878(to)s 2121(the)s 2472(symbol.)s 3345(Hence,)s +4067(to)s 4310(sa)s 4(v)k 3(e)k 4787(space)s +5378(in)s 5625(the)s 5977(database,)s 6910(Lout)s 7426(replaces)s +8263(the)s 8615(right)s 0 12919(parameter)m 1011(of)s 1279(each)s +1771(symbol)s 2527(it)s 2716(writes)s 3347(into)s 3768(it)s +3957(by)s 4248(the)s 4592(w)s 2(ord)k 5137(???)s +5505(whene)s 6(v)k 3(er)k 6482(the)s 6827(right)s +7335(parameter)s 8345(appears)s 0 12631(to)m 249(be)s 542(lar)s 4(ge.)k +1190(The)s 1629(table)s 2160(abo)s 3(v)k 3(e)k +2792(w)s 2(ould)k 3458(appear)s 4166(as)s 4427(???)s +4809(because)s 5632(of)s 5914(this)s 6321(optimization,)s 7647(and)s +8062(in)s 8316(general,)s 0 12343(the)m 367(user)s 845(must)s +1390(ensure)s 2089(that)s 2527(an)s 3(y)k 2944(content)s +3728(required)s 4601(by)s 4915(cross)s 5477(references)s 6527(is)s +6757(contained)s 7765(in)s 8028(parameters)s 0 12055(other)m 545(than)s +1007(the)s 1348(right)s 1852(or)s 2104(body)s 2631(parameter)s 13(.)k +3729(This)s 4199(optimization)s 5457(does)s 5940(not)s 6299(apply)s +6878(when)s 7447(the)s 7788(symbol)s 8541(being)s 0 11767(written)m +733(into)s 1158(the)s 1506(cross-reference)s 3019(database)s 3898(is)s +4108(a)s 4274(g)s 1(alle)k 3(y)k 15(.)k +240 fnt5 0 10974(1.4.)m 471(Galleys)s [ /Dest /LOUTgalleys /DEST pdfmark -240 fnt1 480 10497(It)m 695(is)s -915(time)s 1406(to)s 1655(pause)s 2267(and)s 2681(ask)s -3072(ourselv)s 3(es)k 4033(ho)s 6(w)k 4505(close)s -5062(we)s 5408(are)s 5765(to)s 6015(achie)s 6(ving)k +240 fnt1 480 10497(It)m +695(is)s 915(time)s 1406(to)s 1655(pause)s 2267(and)s +2681(ask)s 3072(ourselv)s 3(es)k 4033(ho)s 6(w)k +4505(close)s 5062(we)s 5408(are)s 5765(to)s 6015(achie)s 6(ving)k 7002(our)s 7392(aim)s 7820(of)s 8102(producing)s 0 10209(neatly)m 638(formatted)s 1624(documents.)s 2825(W)s 19(e)k 3194(can)s 3583(certainly)s 4472(produce)s 5299(the)s 5647(pieces)s 6295(of)s @@ -3910,8 +4040,8 @@ 0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath stroke grestore -160 fnt2 170 2207(@T)m 19(e)k 4(xtPlace)k 170 173(@F)m 4(ootSect)k - +160 fnt2 170 2207(@T)m 19(e)k 4(xtPlace)k +170 173(@F)m 4(ootSect)k grestore gsave 4788 4881 translate @@ -3920,8 +4050,8 @@ 0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath stroke grestore -160 fnt2 170 2207(@T)m 19(e)k 4(xtPlace)k 170 173(@F)m 4(ootSect)k - +160 fnt2 170 2207(@T)m 19(e)k 4(xtPlace)k +170 173(@F)m 4(ootSect)k grestore gsave 4788 2387 translate @@ -3930,32 +4060,32 @@ 0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath stroke grestore -160 fnt2 170 2207(@T)m 19(e)k 4(xtPlace)k 170 173(@F)m 4(ootSect)k - +160 fnt2 170 2207(@T)m 19(e)k 4(xtPlace)k +170 173(@F)m 4(ootSect)k grestore -160 fnt2 4788 2157(@P)m 6(ageList)k 240 fnt1 0 1671(b)m 4(ut)k -362(when)s 938(we)s 1273(try)s 1592(to)s 1831(mer)s 4(ge)k -2480(them)s 3018(together)s 9(,)k 3899(we)s 4234(encounter)s -5237(tw)s 2(o)k 5647(obstacles.)s 480 1297(First,)m 1029(when)s -1610(an)s 1899(object)s 2548(is)s 2763(entered)s 3530(at)s -3767(a)s 3938(certain)s 4650(place)s 5215(in)s 5463(the)s -5817(document,)s 6873(it)s 7070(appears)s 7857(at)s 8094(that)s -8518(place.)s 0 1009(But)m 393(a)s 546(footnote)s 1385(is)s -1582(naturally)s 2472(entered)s 3219(immediately)s 4454(after)s 4936(the)s -5271(point)s 5810(it)s 5988(refers)s 6568(to)s 6794(\(`)s -200 fnt1 6934 1018(PURCELL)m 240 fnt1 7819 1009(')m 7917(in)s -8147(this)s 8529(case\),)s 0 721(yet)m 352(it)s 544(appears)s -1325(some)s 6(where)k 2464(else:)s 2941(at)s 3173(the)s -3521(bottom)s 4259(of)s 4530(a)s 4696(page.)s 480 347(Second,)m -1285(all)s 1570(our)s 1942(features)s 2740(b)s 4(uild)k -3278(up)s 3564(lar)s 4(ger)k 4168(objects)s 4889(out)s -5247(of)s 5510(smaller)s 6265(ones,)s 6803(b)s 4(ut)k -7158(the)s 200 fnt1 7498 356(PURCELL)m 240 fnt1 8435 347(object,)m -0 59(for)m 333(e)s 3(xample,)k 1242(must)s 1762(be)s -2039(brok)s 2(en)k 2753(do)s 6(wn)k 3332(into)s -3752(page-sized)s 4827(pieces.)s 5583(This)s 6053(occurs)s 6723(when)s -7294(the)s 7637(a)s 4(v)k 6(ailable)k 8539(space)s - +160 fnt2 4788 2157(@P)m 6(ageList)k +240 fnt1 0 1671(b)m 4(ut)k 362(when)s 938(we)s +1273(try)s 1592(to)s 1831(mer)s 4(ge)k 2480(them)s +3018(together)s 9(,)k 3899(we)s 4234(encounter)s 5237(tw)s 2(o)k +5647(obstacles.)s 480 1297(First,)m 1029(when)s 1610(an)s 1899(object)s +2548(is)s 2763(entered)s 3530(at)s 3767(a)s 3938(certain)s +4650(place)s 5215(in)s 5463(the)s 5817(document,)s 6873(it)s +7070(appears)s 7857(at)s 8094(that)s 8518(place.)s 0 1009(But)m +393(a)s 546(footnote)s 1385(is)s 1582(naturally)s 2472(entered)s +3219(immediately)s 4454(after)s 4936(the)s 5271(point)s 5810(it)s +5988(refers)s 6568(to)s 6794(\(`)s 200 fnt1 6934 1018(PURCELL)m +240 fnt1 7819 1009(')m 7917(in)s 8147(this)s 8529(case\),)s +0 721(yet)m 352(it)s 544(appears)s 1325(some)s 6(where)k +2464(else:)s 2941(at)s 3173(the)s 3521(bottom)s 4259(of)s +4530(a)s 4696(page.)s 480 347(Second,)m 1285(all)s 1570(our)s +1942(features)s 2740(b)s 4(uild)k 3278(up)s 3564(lar)s 4(ger)k +4168(objects)s 4889(out)s 5247(of)s 5510(smaller)s 6265(ones,)s +6803(b)s 4(ut)k 7158(the)s 200 fnt1 7498 356(PURCELL)m +240 fnt1 8435 347(object,)m 0 59(for)m 333(e)s 3(xample,)k +1242(must)s 1762(be)s 2039(brok)s 2(en)k 2753(do)s 6(wn)k +3332(into)s 3752(page-sized)s 4827(pieces.)s 5583(This)s 6053(occurs)s +6723(when)s 7294(the)s 7637(a)s 4(v)k 6(ailable)k +8539(space)s grestore gsave 1417 -15423 translate @@ -3996,30 +4126,31 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -240 fnt5 1417 -1583(10)m 240 fnt6 8382 -1580(Chapter)m 9232(1.)s -9506(Principles)s gsave +240 fnt5 1417 -1583(10)m +240 fnt6 8382 -1580(Chapter)m 9232(1.)s 9506(Principles)s gsave 1417 -15423 translate -240 fnt1 9066 13368 0 13259 240 288 60 LoutGraphic +240 fnt1 +9066 13368 0 13259 240 288 60 LoutGraphic gsave 0 LoutMargSet grestore -0 13205(at)m 230(the)s 575(`some)s 6(where)k -1790(else')s 2270(is)s 2477(insuf\207cient)s 3610(to)s 3846(hold)s -4327(the)s 4672(entire)s 5268(object,)s 5957(so)s 6220(this)s -6613(second)s 7333(obstacle)s 8169(arises)s 8760(out)s 0 12917(of)m -271(the)s 619(\207rst.)s 480 12543(Lout')m 13(s)k 1135(last)s -1518(major)s 2127(feature,)s 2888(which)s 3523(we)s 3850(introduce)s -4801(to)s 5032(o)s 3(v)k 3(ercome)k 6017(these)s -6557(obstacles,)s 7532(is)s 7734(the)s 240 fnt6 8074 12545(galle)m 7(y)k +0 13205(at)m 230(the)s 575(`some)s 6(where)k 1790(else')s +2270(is)s 2477(insuf\207cient)s 3610(to)s 3846(hold)s 4327(the)s +4672(entire)s 5268(object,)s 5957(so)s 6220(this)s 6613(second)s +7333(obstacle)s 8169(arises)s 8760(out)s 0 12917(of)m 271(the)s +619(\207rst.)s 480 12543(Lout')m 13(s)k 1135(last)s 1518(major)s +2127(feature,)s 2888(which)s 3523(we)s 3850(introduce)s 4801(to)s +5032(o)s 3(v)k 3(ercome)k 6017(these)s 6557(obstacles,)s +7532(is)s 7734(the)s 240 fnt6 8074 12545(galle)m 7(y)k -[ /Dest /LOUT16_4080_pri_gall_1 /DEST pdfmark +[ /Dest /LOUT19_4213_pri_gall_1 /DEST pdfmark 240 fnt1 8699 12543(\(the)m 0 12255(name)m 564(is)s 764(borro)s 6(wed)k 1723(from)s 2237(the)s 2575(g)s 1(alle)k 3(ys)k 3288(used)s 3775(in)s 4008(manual)s 4757(typesetting\).)s 6039(A)s @@ -4077,7 +4208,8 @@ -30.0000 rotate gsave 0 0 translate -240 fnt1 68 -1 0 0 240 288 60 LoutGraphic +240 fnt1 +68 -1 0 0 240 288 60 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore @@ -4157,7 +4289,8 @@ grestore grestore -200 fnt6 6748 11497(to)m 6947(printer)s gsave +200 fnt6 6748 11497(to)m +6947(printer)s gsave 4335 9295 translate 30.0000 rotate gsave @@ -4191,30 +4324,31 @@ grestore grestore -128 fnt1 5418 9331(1)m -160 fnt1 5469 9259(Blom,)m 5891(Eric.)s 160 fnt6 6260 9260(Some)m -6636(Gr)s 5(eat)k 5418 9080(Composer)m 1(s.)k 160 fnt1 -6512 9079(Oxford,)m 5418 8899(1944.)m 240 fnt1 0 3343(A)m 229(g)s 1(alle)k 3(y)k -861(replaces)s 1693(the)s 2039(in)s 9(v)k 4(ocation)k -3091(pointed)s 3866(to)s 4103(by)s 4395(its)s 4670(cross)s -5210(reference.)s 6260(If)s 6488(space)s 7073(is)s 7282(not)s -7646(suf\207cient)s 8593(there)s 0 3055(to)m 232(hold)s 708(it)s -892(all,)s 1230(the)s 1570(remainder)s 2590(of)s 2854(the)s -3194(g)s 1(alle)k 3(y)k 3820(is)s 4023(split)s -4486(of)s 6(f)k 4822(\(the)s 5242(v)s 3(ertical)k -6001(concatenation)s 7378(symbol)s 8130(preceding)s 0 2767(it)m 199(being)s -791(discarded\))s 1842(and)s 2253(it)s 2452(replaces)s 3293(later)s -3783(in)s 9(v)k 4(ocations)k 4931(of)s 5209(the)s -5564(same)s 6119(symbol.)s 6935(This)s 7418(is)s 7635(e)s 3(xactly)k -8383(what)s 8916(is)s 0 2479(required)m 854(to)s 1093(get)s -1445(te)s 3(xt)k 1860(and)s 2264(footnotes)s 3205(onto)s -3684(pages.)s 480 2105(T)m 19(o)k 780(create)s 1405(a)s -1571(g)s 1(alle)k 3(y)k 15(,)k 2243(\207rst)s -2674(de\207ne)s 3315(a)s 3481(symbol)s 4241(with)s 4723(a)s -4889(special)s 220 fnt2 5607 2102(into)m -[ /Dest /LOUT16_4080_pri_gall_2 /DEST pdfmark -240 fnt1 6013 2105(clause,)m -6717(lik)s 2(e)k 7129(this:)s 220 fnt2 480 1604(def @F)m 6(ootNote into { @F)k 6(ootPlace&&f)k 6(ollo)k 3(wing })k +128 fnt1 +5418 9331(1)m 160 fnt1 5469 9259(Blom,)m 5891(Eric.)s 160 fnt6 +6260 9260(Some)m 6636(Gr)s 5(eat)k 5418 9080(Composer)m 1(s.)k +160 fnt1 6512 9079(Oxford,)m 5418 8899(1944.)m 240 fnt1 0 3343(A)m +229(g)s 1(alle)k 3(y)k 861(replaces)s 1693(the)s +2039(in)s 9(v)k 4(ocation)k 3091(pointed)s 3866(to)s +4103(by)s 4395(its)s 4670(cross)s 5210(reference.)s 6260(If)s +6488(space)s 7073(is)s 7282(not)s 7646(suf\207cient)s 8593(there)s +0 3055(to)m 232(hold)s 708(it)s 892(all,)s 1230(the)s +1570(remainder)s 2590(of)s 2854(the)s 3194(g)s 1(alle)k 3(y)k +3820(is)s 4023(split)s 4486(of)s 6(f)k 4822(\(the)s +5242(v)s 3(ertical)k 6001(concatenation)s 7378(symbol)s 8130(preceding)s +0 2767(it)m 199(being)s 791(discarded\))s 1842(and)s 2253(it)s +2452(replaces)s 3293(later)s 3783(in)s 9(v)k 4(ocations)k +4931(of)s 5209(the)s 5564(same)s 6119(symbol.)s 6935(This)s +7418(is)s 7635(e)s 3(xactly)k 8383(what)s 8916(is)s +0 2479(required)m 854(to)s 1093(get)s 1445(te)s 3(xt)k +1860(and)s 2264(footnotes)s 3205(onto)s 3684(pages.)s 480 2105(T)m 19(o)k +780(create)s 1405(a)s 1571(g)s 1(alle)k 3(y)k 15(,)k +2243(\207rst)s 2674(de\207ne)s 3315(a)s 3481(symbol)s 4241(with)s +4723(a)s 4889(special)s 220 fnt2 5607 2102(into)m +[ /Dest /LOUT19_4213_pri_gall_2 /DEST pdfmark +240 fnt1 +6013 2105(clause,)m 6717(lik)s 2(e)k 7129(this:)s 220 fnt2 +480 1604(def @F)m 6(ootNote into { @F)k 6(ootPlace&&f)k 6(ollo)k 3(wing })k 480 1316( r)m -3(ight x)k 480 1028({)m 480 740( 8p @F)m 6(ont x)k 480 452(})m grestore @@ -4257,23 +4391,24 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -240 fnt6 1417 -1580(1.4.)m 1871(Galle)s 7(ys)k 240 fnt5 -10256 -1583(11)m gsave +240 fnt6 1417 -1580(1.4.)m +1871(Galle)s 7(ys)k 240 fnt5 10256 -1583(11)m gsave 1417 -15423 translate -240 fnt1 9066 13368 0 13259 240 288 60 LoutGraphic +240 fnt1 +9066 13368 0 13259 240 288 60 LoutGraphic gsave 1 LoutMargSet grestore -0 13205(An)m 343(in)s 9(v)k 4(ocation)k -1390(of)s 1654(such)s 2142(a)s 2301(symbol)s 3054(will)s -3473(then)s 3934(be)s 4209(a)s 4368(g)s 1(alle)k 3(y)k +0 13205(An)m 343(in)s 9(v)k 4(ocation)k 1390(of)s +1654(such)s 2142(a)s 2301(symbol)s 3054(will)s 3473(then)s +3934(be)s 4209(a)s 4368(g)s 1(alle)k 3(y)k 4994(whose)s 5655(object)s 6292(is)s 6495(the)s 6835(result)s 7418(of)s 7682(the)s 8022(in)s 9(v)k 4(ocation,)k 0 12917(and)m 399(whose)s 1062(cross)s 1598(reference)s 2536(is)s @@ -4289,7 +4424,7 @@ 3196 12255(which)m 3827(is)s 4027(the)s 240 fnt6 4364 12257(tar)m 8(g)k 2(et)k 240 fnt1 4979 12255(of)m 5239(a)s 5395(g)s 1(alle)k 3(y)k 15(,)k -[ /Dest /LOUT16_4080_pri_gall_3 /DEST pdfmark +[ /Dest /LOUT19_4213_pri_gall_3 /DEST pdfmark 6056(must)s 6571(contain)s 7321(the)s 7659(special)s 8366(symbol)s 220 fnt2 0 11964(@Galle)m 4(y)k 240 fnt1 898 11967(e)m 3(xactly)k 1639(once)s 2147(in)s 2390(its)s 2666(body;)s 3258(often)s @@ -4308,7 +4443,7 @@ 1726(it)s 1916(in)s 9(v)k 4(ok)k 2(es,)k 2752(is)s 2961(called)s 3587(a)s 240 fnt6 3752 10020(r)m 8(eceptive)k -[ /Dest /LOUT16_4080_pri_gall_4 /DEST pdfmark +[ /Dest /LOUT19_4213_pri_gall_4 /DEST pdfmark 240 fnt1 4670 10018(symbol,)m 5481(meaning)s 6357(recepti)s 6(v)k 3(e)k 7277(to)s 7515(g)s 1(alle)k 3(ys.)k 220 fnt2 8350 10015(@F)m 6(oot)k 9002(-)s 0 9727(Place)m 240 fnt1 @@ -4333,7 +4468,7 @@ 5233(e)s 3(xample)k 6089(document.)s 7190(Initially)s 7992(there)s 8518(is)s 8721(just)s 0 8204(the)m 348(one)s 240 fnt6 750 8206(r)m 10(oot)k -[ /Dest /LOUT16_4080_pri_gall_5 /DEST pdfmark +[ /Dest /LOUT19_4213_pri_gall_5 /DEST pdfmark 240 fnt1 1203 8204(g)m 1(alle)k 3(y)k 15(,)k 1875(containing)s 2938(an)s 3221(une)s 3(xpanded)k 4434(in)s 9(v)k 4(ocation)k 5488(of)s 220 fnt2 5759 8201(@P)m 8(ageList:)k 180 fnt2 @@ -4366,7 +4501,8 @@ -30.0000 rotate gsave 0 0 translate -240 fnt1 68 -1 0 0 240 288 60 LoutGraphic +240 fnt1 +68 -1 0 0 240 288 60 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore @@ -4376,13 +4512,12 @@ grestore grestore -200 fnt6 5806 7734(to)m 6005(printer)s -240 fnt1 0 7241(Then)m 602(the)s 200 fnt1 1004 7250(PURCELL)m -240 fnt1 2002 7241(g)m 1(alle)k 3(y)k 2690(appears,)s -3580(tar)s 4(geted)k 4457(to)s 4750(a)s 220 fnt2 -4969 7238(@T)m 26(e)k 6(xtPlace)k 3(.)k 240 fnt1 -6348 7241(Lout)m 6913(kno)s 6(ws)k 7638(that)s 8109(there)s -8696(is)s 8960(a)s 220 fnt2 0 6950(@T)m 26(e)k 6(xtPlace)k +200 fnt6 5806 7734(to)m 6005(printer)s 240 fnt1 0 7241(Then)m +602(the)s 200 fnt1 1004 7250(PURCELL)m 240 fnt1 2002 7241(g)m 1(alle)k 3(y)k +2690(appears,)s 3580(tar)s 4(geted)k 4457(to)s 4750(a)s +220 fnt2 4969 7238(@T)m 26(e)k 6(xtPlace)k 3(.)k +240 fnt1 6348 7241(Lout)m 6913(kno)s 6(ws)k 7638(that)s +8109(there)s 8696(is)s 8960(a)s 220 fnt2 0 6950(@T)m 26(e)k 6(xtPlace)k 240 fnt1 1218 6953(hidden)m 1927(inside)s 220 fnt2 2554 6950(@P)m 8(ageList,)k 240 fnt1 3724 6953(so)m 3990(it)s 4182(e)s 3(xpands)k 220 fnt2 5015 6950(@P)m 8(ageList:)k 160 fnt5 870 6220(PURCELL)m @@ -4412,7 +4547,8 @@ 30.0000 rotate gsave 0 1 translate -240 fnt1 68 -1 0 -1 240 288 60 LoutGraphic +240 fnt1 +68 -1 0 -1 240 288 60 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore @@ -4450,11 +4586,11 @@ 0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath stroke grestore -160 fnt2 -170 2207(@T)m 19(e)k 4(xtPlace)k 170 173(@F)m 4(ootSect)k - +160 fnt2 170 2207(@T)m 19(e)k 4(xtPlace)k +170 173(@F)m 4(ootSect)k grestore -160 fnt2 3315 3803(@P)m 6(ageList)k gsave +160 fnt2 3315 3803(@P)m 6(ageList)k +gsave 6802 6527 translate 180.0000 rotate gsave @@ -4549,17 +4685,18 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -240 fnt5 1417 -1583(12)m 240 fnt6 8382 -1580(Chapter)m 9232(1.)s -9506(Principles)s gsave +240 fnt5 1417 -1583(12)m +240 fnt6 8382 -1580(Chapter)m 9232(1.)s 9506(Principles)s gsave 1417 -15423 translate -240 fnt1 9066 13368 0 13368 240 288 60 LoutGraphic +240 fnt1 +9066 13368 0 13368 240 288 60 LoutGraphic gsave 0 LoutMargSet grestore @@ -4610,7 +4747,8 @@ -30.0000 rotate gsave 0 0 translate -240 fnt1 68 -1 0 0 240 288 60 LoutGraphic +240 fnt1 +68 -1 0 0 240 288 60 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore @@ -4627,11 +4765,11 @@ 0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath stroke grestore -160 fnt5 560 1987(PURCELL)m 128 fnt1 -1316 2059(1)m 140 fnt2 170 1807(@T)m 16(e)k 4(xtPlace)k -gsave +160 fnt5 560 1987(PURCELL)m 128 fnt1 1316 2059(1)m +140 fnt2 170 1807(@T)m 16(e)k 4(xtPlace)k gsave 170 924 translate -160 fnt1 567 0 0 0 160 180 40 LoutGraphic +160 fnt1 +567 0 0 0 160 180 40 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore @@ -4660,7 +4798,8 @@ grestore gsave 0 0 translate -240 fnt1 1440 0 0 0 240 288 60 LoutGraphic +240 fnt1 +1440 0 0 0 240 288 60 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore @@ -4681,12 +4820,11 @@ grestore grestore -200 fnt6 6862 13238(to)m -7061(printer)s 240 fnt1 0 8441(No)m 6(w)k 512(the)s -858(promotion)s 1910(of)s 2179(the)s 200 fnt1 2525 8450(PURCELL)m -240 fnt1 3468 8441(g)m 1(alle)k 3(y)k 4100(resumes.)s -5045(When)s 5672(the)s 6018(\207rst)s 6447(page)s 6953(is)s -7161(\207lled,)s 7757(Lout)s 8266(searches)s 0 8153(forw)m 2(ards)k +200 fnt6 6862 13238(to)m 7061(printer)s 240 fnt1 +0 8441(No)m 6(w)k 512(the)s 858(promotion)s 1910(of)s +2179(the)s 200 fnt1 2525 8450(PURCELL)m 240 fnt1 3468 8441(g)m 1(alle)k 3(y)k +4100(resumes.)s 5045(When)s 5672(the)s 6018(\207rst)s 6447(page)s +6953(is)s 7161(\207lled,)s 7757(Lout)s 8266(searches)s 0 8153(forw)m 2(ards)k 898(for)s 1236(another)s 220 fnt2 2013 8150(@T)m 26(e)k 6(xtPlace)k 240 fnt1 3231 8153(to)m 3470(recei)s 6(v)k 3(e)k 4206(the)s 4554(remainder)s 9(,)k 5620(once)s 6128(ag)s 1(ain)k @@ -4712,7 +4850,8 @@ 30.0000 rotate gsave 0 1 translate -240 fnt1 68 -1 0 -1 240 288 60 LoutGraphic +240 fnt1 +68 -1 0 -1 240 288 60 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore @@ -4750,19 +4889,19 @@ 0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath stroke grestore -160 fnt5 -560 1987(PURCELL)m 128 fnt1 1316 2059(1)m 160 fnt1 170 1695(In)m -341(the)s 573(w)s 1(orld)k 983(of)s 1164(music)s -170 1515(England)m 741(is)s 881(supposed)s 1515(to)s 170 1335(be)m -358(a)s 469(mere)s 825(pro)s 2(vince.)k 1491(If)s -170 1155(she)m 708(produces)s 1608(an)s 170 975(indif)m 4(ferent)k -879(composer)s 1540(or)s 567 0 0 0 160 180 40 170 763 LoutGr2 +160 fnt5 560 1987(PURCELL)m +128 fnt1 1316 2059(1)m 160 fnt1 170 1695(In)m 341(the)s +573(w)s 1(orld)k 983(of)s 1164(music)s 170 1515(England)m +741(is)s 881(supposed)s 1515(to)s 170 1335(be)m 358(a)s +469(mere)s 825(pro)s 2(vince.)k 1491(If)s 170 1155(she)m +708(produces)s 1608(an)s 170 975(indif)m 4(ferent)k 879(composer)s +1540(or)s 567 0 0 0 160 180 40 170 763 LoutGr2 0 0 moveto xsize 0 lineto stroke grestore grestore -128 fnt1 170 624(1)m 160 fnt1 -221 552(Blom,)m 703(Eric.)s 160 fnt6 1133 553(Some)m 170 373(Gr)m 5(eat)k +128 fnt1 170 624(1)m 160 fnt1 221 552(Blom,)m +703(Eric.)s 160 fnt6 1133 553(Some)m 170 373(Gr)m 5(eat)k 734(Composer)s 1(s.)k 160 fnt1 170 192(Oxford,)m 703(1944.)s grestore @@ -4773,10 +4912,11 @@ 0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath stroke grestore -140 fnt2 170 2222(@T)m 16(e)k 4(xtPlace)k 170 173(@F)m 4(ootSect)k - +140 fnt2 170 2222(@T)m 16(e)k 4(xtPlace)k +170 173(@F)m 4(ootSect)k grestore -140 fnt2 3315 2524(@P)m 5(ageList)k gsave +140 fnt2 3315 2524(@P)m 5(ageList)k +gsave 6802 7727 translate 180.0000 rotate gsave @@ -4881,7 +5021,7 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore @@ -4891,49 +5031,49 @@ 9066 13448 0 13448 240 288 60 1417 -14865 LoutGr2 1 LoutMargSet grestore -480 fnt5 0 12397(Chapter)m 1819(2.)s 2400(Details)s +480 fnt5 0 12397(Chapter)m +1819(2.)s 2400(Details)s [ /Dest /LOUTdetails /DEST pdfmark -240 fnt5 -0 11132(2.1.)m 471(Lexical)s 1270(structur)s 4(e)k 2263(\(w)s 2(ords,)k -3079(spaces,)s 3844(symbols\))s 4796(and)s 5237(macr)s 4(os)k - +240 fnt5 0 11132(2.1.)m 471(Lexical)s +1270(structur)s 4(e)k 2263(\(w)s 2(ords,)k 3079(spaces,)s +3844(symbols\))s 4796(and)s 5237(macr)s 4(os)k [ /Dest /LOUTlexical /DEST pdfmark -240 fnt1 480 10655(The)m 902(input)s 1447(to)s 1679(Lout)s -2184(consists)s 2985(of)s 3249(a)s 3408(sequence)s 4334(of)s -240 fnt6 4598 10657(te)m 4(xtual)k 5297(units)s 240 fnt1 -5757 10655(,)m -[ /Dest /LOUT16_4080_det_lexi_1 /DEST pdfmark -5857(which)s 6492(may)s 6951(be)s 7226(either)s -240 fnt6 7822 10657(white)m 8386(spaces)s 240 fnt1 9019 10655(,)m -240 fnt6 0 10369(identi\207er)m 2(s,)k 1047(delimiter)s 2(s,)k -240 fnt1 2093 10367(or)m 240 fnt6 2352 10369(liter)m 3(al)k -2992(wor)s 8(ds)k 240 fnt1 3565 10367(.)m 3729(Each)s -4264(is)s 4474(a)s 4640(sequence)s 5573(of)s 240 fnt6 -5844 10369(c)m 3(har)k 3(acter)k 2(s)k 240 fnt1 -6914 10367(chosen)m 7636(from:)s -[ /Dest /LOUT16_4080_det_lexi_2 /DEST pdfmark - -[ /Dest /LOUT16_4080_det_lexi_3 /DEST pdfmark - -[ /Dest /LOUT16_4080_det_lexi_4 /DEST pdfmark - -[ /Dest /LOUT16_4080_det_lexi_5 /DEST pdfmark - -[ /Dest /LOUT16_4080_det_lexi_6 /DEST pdfmark - -[ /Dest /LOUT16_4080_det_lexi_7 /DEST pdfmark -480 9829(letter)m 220 fnt2 1934 9826(@ab-zAB-Z_)m -240 fnt1 480 9541(white)m 1067(space)s 240 fnt6 1934 9543(space)m -2592(formfeed)s 3568(tab)s 3988(ne)s 3(wline)k 240 fnt1 -480 9253(quote)m 220 fnt2 1934 9250(")m 240 fnt1 480 8965(escape)m -220 fnt2 1934 8962(\\)m 240 fnt1 480 8677(comment)m 220 fnt2 -1934 8674(#)m 240 fnt1 480 8389(other)m 220 fnt2 1934 8386(!$%&'\(\)*+,-./0123456789:;<=>?[]^`{|}~)m -240 fnt1 0 7848(Notice)m 732(that)s 220 fnt2 1189 7845(@)m -240 fnt1 1480 7848(and)m 220 fnt2 1923 7845(_)m 240 fnt1 -2144 7848(are)m 2531(classed)s 3318(as)s 3608(letters.)s 4393(Basser)s -5129(Lout)s 5681(accepts)s 6474(the)s 6861(accented)s 7795(letters)s -8467(of)s 8778(the)s 0 7560(ISO-LA)m 26(TIN-1)k 1421(character)s -2388(set)s 2746(\(depending)s 3909(on)s 4238(ho)s 6(w)k +240 fnt1 +480 10655(The)m 902(input)s 1447(to)s 1679(Lout)s 2184(consists)s +2985(of)s 3249(a)s 3408(sequence)s 4334(of)s 240 fnt6 +4598 10657(te)m 4(xtual)k 5297(units)s 240 fnt1 5757 10655(,)m + +[ /Dest /LOUT19_4213_det_lexi_1 /DEST pdfmark +5857(which)s 6492(may)s 6951(be)s 7226(either)s 240 fnt6 +7822 10657(white)m 8386(spaces)s 240 fnt1 9019 10655(,)m 240 fnt6 +0 10369(identi\207er)m 2(s,)k 1047(delimiter)s 2(s,)k 240 fnt1 +2093 10367(or)m 240 fnt6 2352 10369(liter)m 3(al)k 2992(wor)s 8(ds)k +240 fnt1 3565 10367(.)m 3729(Each)s 4264(is)s 4474(a)s +4640(sequence)s 5573(of)s 240 fnt6 5844 10369(c)m 3(har)k 3(acter)k 2(s)k +240 fnt1 6914 10367(chosen)m 7636(from:)s +[ /Dest /LOUT19_4213_det_lexi_2 /DEST pdfmark + +[ /Dest /LOUT19_4213_det_lexi_3 /DEST pdfmark + +[ /Dest /LOUT19_4213_det_lexi_4 /DEST pdfmark + +[ /Dest /LOUT19_4213_det_lexi_5 /DEST pdfmark + +[ /Dest /LOUT19_4213_det_lexi_6 /DEST pdfmark + +[ /Dest /LOUT19_4213_det_lexi_7 /DEST pdfmark +480 9829(letter)m 220 fnt2 +1934 9826(@ab-zAB-Z_)m 240 fnt1 480 9541(white)m 1067(space)s 240 fnt6 +1934 9543(space)m 2592(formfeed)s 3568(tab)s 3988(ne)s 3(wline)k +240 fnt1 480 9253(quote)m 220 fnt2 1934 9250(")m 240 fnt1 +480 8965(escape)m 220 fnt2 1934 8962(\\)m 240 fnt1 480 8677(comment)m +220 fnt2 1934 8674(#)m 240 fnt1 480 8389(other)m 220 fnt2 +1934 8386(!$%&'\(\)*+,-./0123456789:;<=>?[]^`{|}~)m 240 fnt1 0 7848(Notice)m 732(that)s 220 fnt2 +1189 7845(@)m 240 fnt1 1480 7848(and)m 220 fnt2 1923 7845(_)m +240 fnt1 2144 7848(are)m 2531(classed)s 3318(as)s 3608(letters.)s +4393(Basser)s 5129(Lout)s 5681(accepts)s 6474(the)s 6861(accented)s +7795(letters)s 8467(of)s 8778(the)s 0 7560(ISO-LA)m 26(TIN-1)k +1421(character)s 2388(set)s 2746(\(depending)s 3909(on)s 4238(ho)s 6(w)k 4732(it)s 4957(is)s 5200(installed\),)s 6228(and)s 6664(these)s 7244(are)s 7624(also)s 8095(classed)s 8876(as)s 0 7272(letters.)m 756(The)s 1195(ten)s 1555(digits)s 2148(are)s 2505(classed)s @@ -4945,11 +5085,11 @@ 698 6612(white)m 1256(space)s 240 fnt1 1841 6610(is)m 2038(a)s 2191(sequence)s 3111(of)s 3369(one)s 3758(or)s 4005(more)s 4539(white)s 5113(space)s 5687(characters.)s -[ /Dest /LOUT16_4080_det_lexi_8 /DEST pdfmark +[ /Dest /LOUT19_4213_det_lexi_8 /DEST pdfmark -[ /Dest /LOUT16_4080_det_lexi_9 /DEST pdfmark +[ /Dest /LOUT19_4213_det_lexi_9 /DEST pdfmark -[ /Dest /LOUT16_4080_det_lexi_10 /DEST pdfmark +[ /Dest /LOUT19_4213_det_lexi_10 /DEST pdfmark 6805(Lout)s 7304(treats)s 7858(the)s 8193(formfeed)s 0 6322(character)m 931(e)s 3(xactly)k 1668(lik)s 2(e)k 2076(the)s 2420(space)s 3003(character;)s @@ -4959,7 +5099,7 @@ 240 fnt1 1635 5660(is)m 1844(a)s 2009(sequence)s 2941(of)s 3211(one)s 3612(or)s 3870(more)s 4415(`other')s 5096(characters)s 6113(which)s -[ /Dest /LOUT16_4080_det_lexi_11 /DEST pdfmark +[ /Dest /LOUT19_4213_det_lexi_11 /DEST pdfmark 6754(is)s 6963(the)s 7310(name)s 7883(of)s 8153(a)s 8317(symbol.)s 0 5372(F)m 3(or)k 417(e)s 3(xample,)k 220 fnt2 1360 5369({)m 240 fnt1 1512 5372(and)m 220 fnt2 @@ -4987,7 +5127,7 @@ 3192(of)s 3488(one)s 3915(or)s 4199(more)s 4772(letters)s 5430(which)s 6097(is)s 6332(the)s 6705(name)s 7304(of)s 7600(a)s -[ /Dest /LOUT16_4080_det_lexi_12 /DEST pdfmark +[ /Dest /LOUT19_4213_det_lexi_12 /DEST pdfmark 7791(symbol.)s 8685(It)s 8916(is)s 0 1033(con)m 9(v)k 3(entional)k 1308(b)s 4(ut)k 1700(not)s 2096(essential)s 3003(to)s 3272(be)s 3(gin)k 3888(identi\207ers)s 4924(with)s 220 fnt2 @@ -5043,99 +5183,101 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -240 fnt5 1417 -1583(14)m 240 fnt6 8674 -1580(Chapter)m 9524(2.)s -9798(Details)s gsave +240 fnt5 1417 -1583(14)m +240 fnt6 8674 -1580(Chapter)m 9524(2.)s 9798(Details)s gsave 1417 -15423 translate -240 fnt1 9066 13368 0 13259 240 288 60 LoutGraphic +240 fnt1 +9066 13368 0 13259 240 288 60 LoutGraphic gsave 0 LoutMargSet grestore -0 13205(to)m 239(do)s 532(so.)s 909(The)s -1337(complete)s 2269(list)s 2620(of)s 2891(prede\207ned)s 3959(identi\207ers)s -4965(is)s 220 fnt2 480 12704(@Bac)m 4(kEnd)k 480 12416(@Bac)m 4(kg)k 2(round)k +0 13205(to)m 239(do)s 532(so.)s 909(The)s 1337(complete)s +2269(list)s 2620(of)s 2891(prede\207ned)s 3959(identi\207ers)s 4965(is)s +220 fnt2 480 12704(@Bac)m 4(kEnd)k 480 12416(@Bac)m 4(kg)k 2(round)k 480 12128(@Begin)m 480 11840(@BeginHeaderComponent)m 480 11552(@Break)m 480 11264(@Case)m 480 10976(@ClearHeaderComponent)m 480 10688(@Common)m 480 10400(@Char)m 480 10112(@CurrF)m 11(ace)k 480 9824(@CurrF)m 11(amily)k -480 9536(@CurrLang)m 480 9248(@CurrYUnit)m 480 8960(@CurrZUnit)m 480 8526(@Database)m 480 8238(@End)m +480 9536(@CurrLang)m 480 9248(@CurrYUnit)m 480 8814(@CurrZUnit)m 480 8526(@Database)m 480 8238(@End)m 480 7950(@EndHeaderComponent)m 480 7662(@Enclose)m 480 7374(@Filter)m 480 7086(@FilterErr)m 480 6798(@FilterIn)m 480 6510(@FilterOut)m 480 6222(@F)m 6(ont)k 480 5934(@F)m 6(orceGalle)k 4(y)k 480 5646(@Galle)m 4(y)k 480 5358(@Gr)m 2(aphic)k 480 5070(@HAdjust)m 480 4782(@HContr)m 2(act)k 480 4494(@HCo)m 3(v)k 5(er)k 480 4206(@HExpand)m 480 3918(@High)m 480 3630(@HLimited)m 480 3342(@HScale)m 480 3054(@HShift)m -3361 12704(@HSpan)m 3361 12416(@Include)m 3361 12128(@IncludeGr)m 2(aphic)k 3361 11840(@IncludeGr)m 2(aphicRepeated)k -3361 11552(@Inser)m -8(t)k 3361 11264(@K)m 8(er)k -5(nShr)k -3(ink)k -3361 10976(@K)m 8(e)k 4(y)k 3361 10688(@Language)m 3361 10400(@LClos)m -3361 10112(@LEn)m 4(v)k 3361 9824(@LInput)m 3361 9536(@L)m 24(Vis)k -3361 9248(@LUse)m 3361 8960(@LinkSource)m 3361 8526(@LinkDest)m 3361 8238(@Meld)m 3361 7950(@Merge)m -3361 7662(@Min)m 2(us)k 3361 7374(@Moment)m 3361 7086(@Ne)m 6(xt)k -3361 6798(@NotRe)m 6(v)k 5(ealed)k 3361 6510(@Null)m 3361 6222(@OneCol)m -3361 5934(@OneOf)m 3361 5646(@OneRo)m 3(w)k 3361 5358(@Open)m 3361 5070(@Optimiz)m 3(e)k -3361 4782(@Outline)m 3361 4494(@P)m 26(Adjust)k 3361 4206(@P)m 8(ageLabel)k -3361 3918(@PlainGr)m 2(aphic)k 3361 3630(@Plus)m 3361 3342(@PrependGr)m 2(aphic)k -3361 3054(@Ra)m 4(wV)k 17(erbatim)k 6245 12704(@Rotate)m 6245 12416(@Rump)m -6245 12128(@Scale)m 6245 11840(@SetColor)m 6245 11552(@SetColour)m 6245 11264(@SetHeaderComponent)m 6245 10976(@Space)m -6245 10688(@Star)m -8(tHSpan)k 6245 10400(@Star)m -8(tHVSpan)k 6245 10112(@Star)m -8(tVSpan)k -6245 9824(@SysDatabase)m 6245 9536(@SysInclude)m 6245 9248(@SysIncludeGr)m 2(aphic)k gsave -6245 9017 translate +480 2766(@HSpan)m 3361 12704(@Include)m 3361 12416(@IncludeGr)m 2(aphic)k 3361 12128(@IncludeGr)m 2(aphicRepeated)k +3361 11840(@Inser)m -8(t)k 3361 11552(@K)m 8(er)k -5(nShr)k -3(ink)k +3361 11264(@K)m 8(e)k 4(y)k 3361 10976(@Language)m 3361 10688(@LClos)m +3361 10400(@LEn)m 4(v)k 3361 10112(@LInput)m 3361 9824(@L)m 24(Vis)k +3361 9536(@LUse)m 3361 9248(@LinkSource)m 3361 8814(@LinkDest)m 3361 8526(@Meld)m 3361 8238(@Merge)m +3361 7950(@Min)m 2(us)k 3361 7662(@Moment)m 3361 7374(@Ne)m 6(xt)k +3361 7086(@NotRe)m 6(v)k 5(ealed)k 3361 6798(@Null)m 3361 6510(@OneCol)m +3361 6222(@OneOf)m 3361 5934(@OneRo)m 3(w)k 3361 5646(@Open)m 3361 5358(@Optimiz)m 3(e)k +3361 5070(@Outline)m 3361 4782(@P)m 26(Adjust)k 3361 4494(@P)m 8(ageLabel)k +3361 4206(@PlainGr)m 2(aphic)k 3361 3918(@Plus)m 3361 3630(@PrependGr)m 2(aphic)k +3361 3342(@Ra)m 4(wV)k 17(erbatim)k 3361 3054(@Rotate)m 6245 12704(@Rump)m +6245 12416(@Scale)m 6245 12128(@SetColor)m 6245 11840(@SetColour)m 6245 11552(@SetHeaderComponent)m 6245 11264(@Space)m +6245 10976(@Star)m -8(tHSpan)k 6245 10688(@Star)m -8(tHVSpan)k 6245 10400(@Star)m -8(tVSpan)k +6245 10112(@SysDatabase)m 6245 9824(@SysInclude)m 6245 9536(@SysIncludeGr)m 2(aphic)k gsave +6245 9305 translate 0.9922 1.0000 scale 0 -57(@SysIncludeGr)m 2(aphicRepeat)k 2765(-)s grestore -6245 8718(ed)m 6245 8526(@SysPrependGr)m 2(aphic)k 6245 8238(@T)m 26(ag)k -6245 7950(@T)m 26(agged)k 6245 7662(@T)m 26(arget)k 6245 7374(@Under)m -3(line)k -6245 7086(@Use)m 6245 6798(@URLLink)m 6245 6510(@V)m 17(Adjust)k 6245 6222(@VContr)m 2(act)k -6245 5934(@VCo)m 3(v)k 5(er)k 6245 5646(@V)m 17(erbatim)k -6245 5358(@VExpand)m 6245 5070(@VLimited)m 6245 4782(@VScale)m 6245 4494(@VShift)m 6245 4206(@VSpan)m -6245 3918(@Wide)m 6245 3630(@Y)m 4(ield)k 6245 3342(@YUnit)m 6245 3054(@ZUnit)m -240 fnt1 0 2599(plus)m 498(the)s 894(names)s 1605(of)s -1924(the)s 2321(parameters)s 3467(of)s 220 fnt2 3786 2596(@Moment)m -240 fnt1 4798 2599(.)m 5011(The)s 5487(symbols)s 220 fnt2 -6385 2596(@LClos)m 240 fnt1 7161 2599(,)m 220 fnt2 7316 2596(@LEn)m 4(v)k -240 fnt1 8034 2599(,)m -[ /Dest /LOUT16_4080_det_lexi_13 /DEST pdfmark - -[ /Dest /LOUT16_4080_det_lexi_14 /DEST pdfmark - -[ /Dest /LOUT16_4080_det_lexi_15 /DEST pdfmark - -[ /Dest /LOUT16_4080_det_lexi_16 /DEST pdfmark - -[ /Dest /LOUT16_4080_det_lexi_17 /DEST pdfmark -220 fnt2 8190 2596(@LInput)m 240 fnt1 -9019 2599(,)m 220 fnt2 0 2308(@L)m 24(Vis)k 240 fnt1 -722 2311(and)m 220 fnt2 1170 2308(@LUse)m 240 fnt1 2001 2311(appear)m -2742(in)s 3029(cross)s 3615(reference)s 4602(databases)s 5613(generated)s -6644(by)s 6982(Lout)s 7538(and)s 7986(are)s 8377(not)s -8788(for)s 0 2023(use)m 375(else)s 6(where.)k 480 1649(A)m -728(sequence)s 1679(of)s 1968(characters)s 3004(which)s 3664(is)s -3892(neither)s 4633(a)s 4817(white)s 5422(space,)s 6078(an)s -6379(identi\207er)s 9(,)k 7357(nor)s 7754(a)s 7938(delimiter)s 9(,)k -8916(is)s 0 1361(by)m 304(def)s 2(ault)k 1036(a)s -240 fnt6 1213 1363(liter)m 3(al)k 1864(wor)s 8(d)k -240 fnt1 2355 1361(,)m 2473(which)s 3126(means)s 3799(that)s -4227(it)s 4430(will)s -[ /Dest /LOUT16_4080_det_lexi_18 /DEST pdfmark - -[ /Dest /LOUT16_4080_det_lexi_19 /DEST pdfmark - -[ /Dest /LOUT16_4080_det_lexi_20 /DEST pdfmark -4867(pass)s 5341(through)s 6154(Lout)s -6677(unchanged.)s 7890(An)s 8251(arbitrary)s 0 1073(sequence)m 926(of)s -1190(characters)s 2201(enclosed)s 3089(in)s 3325(double)s 4026(quotes,)s -4751(for)s 5082(e)s 3(xample)k 220 fnt2 5938 1070("{ }",)m -240 fnt1 6457 1073(is)m 6660(also)s 7091(a)s 7250(literal)s -7853(w)s 2(ord.)k 8499(Space)s 0 785(characters)m 1005(may)s -1458(be)s 1726(included,)s 2644(b)s 4(ut)k 2992(not)s -3345(tabs)s 3767(or)s 4013(ne)s 6(wlines.)k 5008(There)s -5607(are)s 5941(special)s 6645(character)s 7566(sequences,)s 8629(used)s -0 497(only)m 480(between)s 1334(quotes,)s 2066(for)s 2404(obtaining)s -3361(otherwise)s 4346(inaccessible)s 5556(characters:)s +6245 9006(ed)m 6245 8814(@SysPrependGr)m 2(aphic)k 6245 8526(@T)m 26(ag)k +6245 8238(@T)m 26(agged)k 6245 7950(@T)m 26(arget)k 6245 7662(@T)m 26(e)k 6(xture)k +6245 7374(@Under)m -3(line)k 6245 7086(@Use)m 6245 6798(@URLLink)m 6245 6510(@V)m 17(Adjust)k +6245 6222(@VContr)m 2(act)k 6245 5934(@VCo)m 3(v)k 5(er)k +6245 5646(@V)m 17(erbatim)k 6245 5358(@VExpand)m 6245 5070(@VLimited)m 6245 4782(@VScale)m +6245 4494(@VShift)m 6245 4206(@VSpan)m 6245 3918(@Wide)m 6245 3630(@Y)m 4(ield)k +6245 3342(@YUnit)m 6245 3054(@ZUnit)m 240 fnt1 0 2270(plus)m 498(the)s +894(names)s 1605(of)s 1924(the)s 2321(parameters)s 3467(of)s +220 fnt2 3786 2267(@Moment)m 240 fnt1 4798 2270(.)m 5011(The)s +5487(symbols)s 220 fnt2 6385 2267(@LClos)m 240 fnt1 7161 2270(,)m +220 fnt2 7316 2267(@LEn)m 4(v)k 240 fnt1 8034 2270(,)m + +[ /Dest /LOUT19_4213_det_lexi_13 /DEST pdfmark + +[ /Dest /LOUT19_4213_det_lexi_14 /DEST pdfmark + +[ /Dest /LOUT19_4213_det_lexi_15 /DEST pdfmark + +[ /Dest /LOUT19_4213_det_lexi_16 /DEST pdfmark + +[ /Dest /LOUT19_4213_det_lexi_17 /DEST pdfmark +220 fnt2 8190 2267(@LInput)m 240 fnt1 9019 2270(,)m 220 fnt2 +0 1979(@L)m 24(Vis)k 240 fnt1 722 1982(and)m 220 fnt2 +1170 1979(@LUse)m 240 fnt1 2001 1982(appear)m 2742(in)s 3029(cross)s +3615(reference)s 4602(databases)s 5613(generated)s 6644(by)s 6982(Lout)s +7538(and)s 7986(are)s 8377(not)s 8788(for)s 0 1694(use)m +375(else)s 6(where.)k 480 1320(A)m 728(sequence)s 1679(of)s +1968(characters)s 3004(which)s 3664(is)s 3892(neither)s 4633(a)s +4817(white)s 5422(space,)s 6078(an)s 6379(identi\207er)s 9(,)k +7357(nor)s 7754(a)s 7938(delimiter)s 9(,)k 8916(is)s +0 1032(by)m 304(def)s 2(ault)k 1036(a)s 240 fnt6 +1213 1034(liter)m 3(al)k 1864(wor)s 8(d)k 240 fnt1 +2355 1032(,)m 2473(which)s 3126(means)s 3799(that)s 4227(it)s +4430(will)s +[ /Dest /LOUT19_4213_det_lexi_18 /DEST pdfmark + +[ /Dest /LOUT19_4213_det_lexi_19 /DEST pdfmark + +[ /Dest /LOUT19_4213_det_lexi_20 /DEST pdfmark +4867(pass)s 5341(through)s 6154(Lout)s 6677(unchanged.)s +7890(An)s 8251(arbitrary)s 0 744(sequence)m 926(of)s 1190(characters)s +2201(enclosed)s 3089(in)s 3325(double)s 4026(quotes,)s 4751(for)s +5082(e)s 3(xample)k 220 fnt2 5938 741("{ }",)m 240 fnt1 +6457 744(is)m 6660(also)s 7091(a)s 7250(literal)s 7853(w)s 2(ord.)k +8499(Space)s 0 456(characters)m 1005(may)s 1458(be)s 1726(included,)s +2644(b)s 4(ut)k 2992(not)s 3345(tabs)s 3767(or)s +4013(ne)s 6(wlines.)k 5008(There)s 5607(are)s 5941(special)s +6645(character)s 7566(sequences,)s 8629(used)s 0 168(only)m 480(between)s +1334(quotes,)s 2066(for)s 2404(obtaining)s 3361(otherwise)s 4346(inaccessible)s +5556(characters:)s grestore gsave 1417 -15423 translate @@ -5176,32 +5318,33 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -240 fnt6 1417 -1580(2.1.)m 1871(Le)s 4(xical)k 2630(structur)s 8(e)k -3538(\(wor)s 8(ds,)k 4288(spaces,)s 5019(symbols\))s 5919(and)s -6345(macr)s 10(os)k 240 fnt5 10250 -1583(15)m gsave +240 fnt6 1417 -1580(2.1.)m +1871(Le)s 4(xical)k 2630(structur)s 8(e)k 3538(\(wor)s 8(ds,)k +4288(spaces,)s 5019(symbols\))s 5919(and)s 6345(macr)s 10(os)k +240 fnt5 10250 -1583(15)m gsave 1417 -15423 translate 240 fnt1 9066 13368 0 13368 240 288 60 LoutGraphic gsave 1 LoutMargSet grestore -220 fnt2 -480 13167(\\")m 240 fnt1 1235 13170(produces)m 220 fnt2 2150 13167(")m -480 12879(\\\\)m 240 fnt1 1235 12882(\\)m 220 fnt2 480 12591(\\ddd)m -240 fnt1 1235 12594(the)m 1583(character)s 2517(whose)s 3185(ASCII)s -3865(code)s 4373(is)s 1235 12306(the)m 1583(up)s 1876(to)s -2115(three)s 2648(digit)s 3146(octal)s 3665(number)s 220 fnt2 -4456 12303(ddd)m 240 fnt1 0 11765(So,)m 360(for)s 698(e)s 3(xample,)k +220 fnt2 480 13167(\\")m +240 fnt1 1235 13170(produces)m 220 fnt2 2150 13167(")m 480 12879(\\\\)m +240 fnt1 1235 12882(\\)m 220 fnt2 480 12591(\\ddd)m 240 fnt1 +1235 12594(the)m 1583(character)s 2517(whose)s 3185(ASCII)s 3865(code)s +4373(is)s 1235 12306(the)m 1583(up)s 1876(to)s 2115(three)s +2648(digit)s 3146(octal)s 3665(number)s 220 fnt2 4456 12303(ddd)m +240 fnt1 0 11765(So,)m 360(for)s 698(e)s 3(xample,)k 220 fnt2 1612 11762("\\"@PP\\"")m 240 fnt1 2606 11765(produces)m 220 fnt2 3521 11762("@PP")m 240 fnt1 4177 11765(.)m 480 11391(When)m 1106(the)s 1451(comment)s 2398(character)s -[ /Dest /LOUT16_4080_det_lexi_21 /DEST pdfmark +[ /Dest /LOUT19_4213_det_lexi_21 /DEST pdfmark 220 fnt2 3328 11388(#)m 240 fnt1 3502 11391(is)m 3709(encountered,)s 4982(e)s 6(v)k 3(erything)k 6045(from)s 6566(that)s 6981(point)s 7530(to)s 7765(the)s @@ -5212,7 +5355,7 @@ 240 fnt1 0 9819(for)m 338(temporarily)s 1506(deleting)s 2329(parts)s 2844(of)s 3115(the)s 3463(document,)s 4514(and)s 4918(so)s 5184(on.)s 240 fnt6 480 9447(Macr)m 10(os)k -[ /Dest /LOUT16_4080_det_lexi_22 /DEST pdfmark +[ /Dest /LOUT19_4213_det_lexi_22 /DEST pdfmark 240 fnt1 1268 9445(pro)m 3(vide)k 2064(a)s 2242(means)s 2916(of)s 3199(de\207ning)s 4049(symbols)s 4910(which)s 5564(stand)s 6139(for)s @@ -5270,9 +5413,9 @@ 6496(ha)s 4(v)k 3(e)k 6989(an)s 3(y)k 7377(number)s 8159(of)s 240 fnt6 8421 3555(named)m 0 3267(par)m 3(ameter)k 2(s)k 240 fnt1 1080 3265(:)m -[ /Dest /LOUT16_4080_det_name_1 /DEST pdfmark +[ /Dest /LOUT19_4213_det_name_1 /DEST pdfmark -[ /Dest /LOUT16_4080_det_name_2 /DEST pdfmark +[ /Dest /LOUT19_4213_det_name_2 /DEST pdfmark 220 fnt2 480 2768(def @Chapter)m 480 2480( named @T)m 26(ag {})k 480 2192( named @Title {})m 480 1904( r)m -3(ight x)k 480 1616({)m 480 1328( ...)m 480 1040(})m 240 fnt1 0 546(Their)m 577(de\207nitions)s 1639(appear)s @@ -5281,7 +5424,7 @@ 7517(each)s 8013(is)s 8224(follo)s 6(wed)k 0 258(by)m 293(a)s 240 fnt6 457 260(default)m 1183(value)s 240 fnt1 1753 258(between)m -[ /Dest /LOUT16_4080_det_name_3 /DEST pdfmark +[ /Dest /LOUT19_4213_det_name_3 /DEST pdfmark 2605(braces.)s 3377(When)s 220 fnt2 4004 255(@Chapter)m 240 fnt1 5066 258(is)m 5274(in)s 9(v)k 4(ok)k 2(ed,)k 6136(its)s 6411(named)s 7105(parameters)s 8201(are)s 8546(gi)s 6(v)k 3(en)k @@ -5326,32 +5469,32 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -240 fnt5 1417 -1583(16)m 240 fnt6 8674 -1580(Chapter)m 9524(2.)s -9798(Details)s gsave +240 fnt5 1417 -1583(16)m +240 fnt6 8674 -1580(Chapter)m 9524(2.)s 9798(Details)s gsave 1417 -15423 translate -240 fnt1 9066 13368 0 13259 240 288 60 LoutGraphic +240 fnt1 +9066 13368 0 13259 240 288 60 LoutGraphic gsave 0 LoutMargSet grestore -0 13205(v)m 6(alues)k 656(in)s 899(the)s -1247(follo)s 6(wing)k 2224(w)s 2(ay:)k 220 fnt2 -480 12704(@Chapter)m 480 12416( @T)m 26(ag { intro })k 480 12128( @Title { Introduction })m 480 11840({)m -480 11552( ...)m 480 11264(})m 240 fnt1 0 10770(That)m 485(is,)s -737(a)s 889(list)s 1226(of)s 1483(named)s 2166(parameters)s -3250(appears)s 4017(immediately)s 5251(follo)s 6(wing)k 6214(the)s -6549(symbol,)s 7347(each)s 7828(with)s 8296(its)s 8558(v)s 6(alue)k -0 10482(enclosed)m 900(in)s 1149(braces.)s 1929(An)s 3(y)k -2399(right)s 2916(parameter)s 3936(follo)s 6(ws)k 4704(after)s -5206(them.)s 5854(The)s 3(y)k 6403(do)s 6702(not)s -7074(ha)s 4(v)k 3(e)k 7581(to)s 7826(appear)s -8529(in)s 8778(the)s 0 10194(order)m 558(the)s 3(y)k +0 13205(v)m 6(alues)k 656(in)s 899(the)s 1247(follo)s 6(wing)k +2224(w)s 2(ay:)k 220 fnt2 480 12704(@Chapter)m 480 12416( @T)m 26(ag { intro })k +480 12128( @Title { Introduction })m 480 11840({)m 480 11552( ...)m 480 11264(})m 240 fnt1 +0 10770(That)m 485(is,)s 737(a)s 889(list)s 1226(of)s +1483(named)s 2166(parameters)s 3250(appears)s 4017(immediately)s 5251(follo)s 6(wing)k +6214(the)s 6549(symbol,)s 7347(each)s 7828(with)s 8296(its)s +8558(v)s 6(alue)k 0 10482(enclosed)m 900(in)s 1149(braces.)s +1929(An)s 3(y)k 2399(right)s 2916(parameter)s 3936(follo)s 6(ws)k +4704(after)s 5206(them.)s 5854(The)s 3(y)k 6403(do)s +6702(not)s 7074(ha)s 4(v)k 3(e)k 7581(to)s +7826(appear)s 8529(in)s 8778(the)s 0 10194(order)m 558(the)s 3(y)k 1015(were)s 1529(de\207ned,)s 2334(and)s 2732(the)s 3(y)k 3189(can)s 3571(e)s 6(v)k 3(en)k 4065(be)s 4341(omitted)s 5122(altogether)s 9(,)k 6169(in)s 6406(which)s @@ -5368,7 +5511,7 @@ 8405(def)s 2(ault)k 0 8956(v)m 6(alue)k 568(as)s 818(just)s 1223(described.)s 480 8582(A)m 719(named)s 220 fnt2 1424 8579(@T)m 26(ag)k 240 fnt1 2057 8582(parameter)m -[ /Dest /LOUT16_4080_det_name_4 /DEST pdfmark +[ /Dest /LOUT19_4213_det_name_4 /DEST pdfmark 3080(does)s 3580(not)s 3955(tak)s 2(e)k 4417(its)s 4702(def)s 2(ault)k 5433(v)s 6(alue)k 6010(from)s 6544(the)s 6901(de\207nition;)s @@ -5420,7 +5563,8 @@ grestore gsave 1417 -15423 translate -240 fnt1 0 0 0 0 240 288 60 LoutGraphic +240 fnt1 +0 0 0 0 240 288 60 LoutGraphic gsave 0 LoutMargSet grestore @@ -5457,15 +5601,16 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -240 fnt6 1417 -1580(2.2.)m 1871(Named)s 2616(par)s 3(ameter)k 2(s)k -240 fnt5 10248 -1583(17)m gsave +240 fnt6 1417 -1580(2.2.)m +1871(Named)s 2616(par)s 3(ameter)k 2(s)k 240 fnt5 +10248 -1583(17)m gsave 1417 -15423 translate 240 fnt1 9066 13368 0 13368 240 288 60 LoutGraphic gsave @@ -5485,7 +5630,7 @@ [ /Dest /LOUTvisibility /DEST pdfmark 240 fnt1 480 11359(A)m 710(de\207nition)s 1684(may)s 2150(contain)s -[ /Dest /LOUT16_4080_det_visi_1 /DEST pdfmark +[ /Dest /LOUT19_4213_det_visi_1 /DEST pdfmark 2911(other)s 3462(de\207nitions)s 4523(at)s 4755(the)s 5103(be)s 3(ginning)k 6111(of)s 6382(its)s 6658(body:)s 220 fnt2 480 10858(def @NineSquare)m 480 10570( r)m -3(ight x)k 480 10282({)m 480 9994( def @Three { x |0.2i x |0.2i x })m 480 9418( @Three /0.2i @Three /0.2i @Three)m @@ -5594,9 +5739,9 @@ 7877(and)s 8270(simplest)s 0 2288(of)m 267(these)s 810(features)s 1611(is)s 1817(the)s 240 fnt6 2161 2290(body)m 2678(par)s 3(ameter)k 240 fnt1 3677 2288(,)m -[ /Dest /LOUT16_4080_det_visi_2 /DEST pdfmark +[ /Dest /LOUT19_4213_det_visi_2 /DEST pdfmark -[ /Dest /LOUT16_4080_det_visi_3 /DEST pdfmark +[ /Dest /LOUT19_4213_det_visi_3 /DEST pdfmark 3780(an)s 4059(alternati)s 6(v)k 3(e)k 5108(form)s 5628(of)s 5895(right)s 6401(parameter)s 13(.)k 7502(The)s 7926(Eq)s 8245(equation)s 0 2000(formatting)m 1053(package)s @@ -5651,17 +5796,18 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -240 fnt5 1417 -1583(18)m 240 fnt6 8674 -1580(Chapter)m 9524(2.)s -9798(Details)s gsave +240 fnt5 1417 -1583(18)m +240 fnt6 8674 -1580(Chapter)m 9524(2.)s 9798(Details)s gsave 1417 -15423 translate -240 fnt1 9066 13368 0 13268 240 288 60 LoutGraphic +240 fnt1 +9066 13368 0 13268 240 288 60 LoutGraphic gsave 0 LoutMargSet grestore @@ -5675,7 +5821,7 @@ 220 fnt2 274 9258(@Eq)m 240 fnt1 815 9261(in)m 1061(an)s 220 fnt2 1347 9258(e)m 6(xpor)k -8(t)k 240 fnt1 2018 9261(clause,)m -[ /Dest /LOUT16_4080_det_visi_4 /DEST pdfmark +[ /Dest /LOUT19_4213_det_visi_4 /DEST pdfmark 2725(preceding)s 3724(the)s 4075(de\207nition)s 5052(as)s 5305(sho)s 6(wn.)k 6092(Only)s 6628(e)s 3(xported)k 7523(symbols)s 8375(may)s 8844(be)s 0 8973(in)m 9(v)k 4(ok)k 2(ed)k @@ -5726,12 +5872,12 @@ 8778(the)s 220 fnt2 0 3857(@Open)m 240 fnt1 806 3860(symbol,)m 1618(and)s 2022(follo)s 6(wing)k 2999(its)s 3275(alternati)s 6(v)k 3(e)k 4329(form,)s 220 fnt2 4900 3857(@Use)m 240 fnt1 5565 3860(\(Section)m -6418(3.36\).)s 480 3486(Exported)m 1480(nested)s 2214(symbols)s 3128(and)s +6418(3.37\).)s 480 3486(Exported)m 1480(nested)s 2214(symbols)s 3128(and)s 3598(parameters)s 4761(may)s 5292(be)s 5639(made)s 6279(visible)s 7037(within)s 7770(a)s 8002(subsequent)s 0 3198(de\207nition)m 974(or)s 1233(macro)s 1883(by)s 2177(preceding)s 3173(it)s 3365(with)s 3847(an)s 220 fnt2 4130 3195(impor)m -8(t)k -[ /Dest /LOUT16_4080_det_visi_5 /DEST pdfmark +[ /Dest /LOUT19_4213_det_visi_5 /DEST pdfmark 240 fnt1 4803 3198(clause,)m 5507(lik)s 2(e)k 5919(this:)s 220 fnt2 480 2697(impor)m -8(t @Eq)k 480 2409(def p)m 6(ythag { sqr)k -8(t { x sup 2 + y sup 2 } })k @@ -5757,7 +5903,8 @@ grestore gsave 1417 -15423 translate -240 fnt1 0 0 0 0 240 288 60 LoutGraphic +240 fnt1 +0 0 0 0 240 288 60 LoutGraphic gsave 0 LoutMargSet grestore @@ -5794,31 +5941,32 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -240 fnt6 1417 -1580(2.3.)m 1871(Nested)s 2588(de\207nitions,)s 3678(body)s -4200(par)s 3(ameter)k 2(s,)k 5378(e)s 4(xtend,)k -6091(import,)s 6822(and)s 7248(e)s 4(xport)k 240 fnt5 -10249 -1583(19)m gsave +240 fnt6 1417 -1580(2.3.)m +1871(Nested)s 2588(de\207nitions,)s 3678(body)s 4200(par)s 3(ameter)k 2(s,)k +5378(e)s 4(xtend,)k 6091(import,)s 6822(and)s 7248(e)s 4(xport)k +240 fnt5 10249 -1583(19)m gsave 1417 -15423 translate 240 fnt1 9066 13368 0 13264 240 288 60 LoutGraphic gsave 1 LoutMargSet grestore -220 fnt2 480 13207(e)m 6(xtend @Eq)k 480 12919(def p)m 6(ythag { sqr)k -8(t { x sup 2 + y sup 2 } })k -240 fnt1 0 12420(The)m 418(ef)s 6(fect)k 1003(of)s -1264(this)s 1649(is)s 1849(just)s 2243(as)s 2483(though)s -3195(the)s 3533(de\207nition)s 4496(of)s 220 fnt2 4757 12417(p)m 6(ythag)k -240 fnt1 5447 12420(had)m 5841(occurred)s 6724(directly)s 7497(after)s -7982(the)s 8319(e)s 3(xisting)k 0 12132(de\207nitions)m 1058(within)s -220 fnt2 1722 12129(@Eq)m 240 fnt1 2200 12132(,)m 2303(with)s -220 fnt2 2782 12129(p)m 6(ythag)k 240 fnt1 3479 12132(added)m -4105(to)s 220 fnt2 4340 12129(@Eq)m 240 fnt1 4818 12132(')m 13(s)k +220 fnt2 480 13207(e)m 6(xtend @Eq)k +480 12919(def p)m 6(ythag { sqr)k -8(t { x sup 2 + y sup 2 } })k 240 fnt1 0 12420(The)m +418(ef)s 6(fect)k 1003(of)s 1264(this)s 1649(is)s +1849(just)s 2243(as)s 2483(though)s 3195(the)s 3533(de\207nition)s +4496(of)s 220 fnt2 4757 12417(p)m 6(ythag)k 240 fnt1 +5447 12420(had)m 5841(occurred)s 6724(directly)s 7497(after)s 7982(the)s +8319(e)s 3(xisting)k 0 12132(de\207nitions)m 1058(within)s 220 fnt2 +1722 12129(@Eq)m 240 fnt1 2200 12132(,)m 2303(with)s 220 fnt2 +2782 12129(p)m 6(ythag)k 240 fnt1 3479 12132(added)m 4105(to)s +220 fnt2 4340 12129(@Eq)m 240 fnt1 4818 12132(')m 13(s)k 5025(e)s 3(xport)k 5689(list.)s 6140(This)s 6612(is)s 6819(useful)s 7454(for)s 7788(e)s 3(xtending)k 8778(the)s 0 11844(capabilities)m 1128(of)s 1389(a)s 1545(package)s 2375(of)s @@ -5902,7 +6050,16 @@ 2639(implementation)s 4189(problems:)s 5237(at)s 5462(the)s 5803(time)s 6275(the)s 6616(def)s 2(ault)k 7329(v)s 6(alue)k 7890(of)s 220 fnt2 8153 723(@F)m 6(or)k -5(mat)k - +240 fnt1 0 438(is)m 210(read,)s 728(the)s 1076(e)s 3(xported)k +1968(symbols)s 2817(ha)s 4(v)k 3(e)k 3318(not)s +3684(been)s 4193(read)s 4662(and)s 5066(are)s 5413(consequently)s +6730(not)s 7096(kno)s 6(wn.)k 480 64(Since)m 220 fnt2 +1064 61(@Cell)m 240 fnt1 1706 64(is)m 1913(nested)s 2579(within)s +220 fnt2 3244 61(@Tb)m 4(l)k 240 fnt1 3753 64(,)m +3857(the)s 4202(v)s 6(alue)k 4766(of)s 5034(an)s +5314(in)s 9(v)k 4(ocation)k 6365(of)s 220 fnt2 +6633 61(@Cell)m 240 fnt1 7275 64(may)m 7738(depend)s 8485(on)s +8778(the)s grestore gsave 1417 -15423 translate @@ -5943,110 +6100,108 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -240 fnt5 1417 -1583(20)m 240 fnt6 8674 -1580(Chapter)m 9524(2.)s -9798(Details)s gsave +240 fnt5 1417 -1583(20)m +240 fnt6 8674 -1580(Chapter)m 9524(2.)s 9798(Details)s gsave 1417 -15423 translate -240 fnt1 9066 13368 0 13259 240 288 60 LoutGraphic +240 fnt1 +9066 13368 0 13259 240 288 60 LoutGraphic gsave 0 LoutMargSet grestore -0 13205(is)m 210(read,)s 728(the)s 1076(e)s 3(xported)k -1968(symbols)s 2817(ha)s 4(v)k 3(e)k 3318(not)s -3684(been)s 4193(read)s 4662(and)s 5066(are)s 5413(consequently)s -6730(not)s 7096(kno)s 6(wn.)k 480 12831(Since)m 220 fnt2 -1064 12828(@Cell)m 240 fnt1 1706 12831(is)m 1913(nested)s 2579(within)s -220 fnt2 3244 12828(@Tb)m 4(l)k 240 fnt1 3753 12831(,)m -3857(the)s 4202(v)s 6(alue)k 4766(of)s 5034(an)s -5314(in)s 9(v)k 4(ocation)k 6365(of)s 220 fnt2 -6633 12828(@Cell)m 240 fnt1 7275 12831(may)m 7738(depend)s 8485(on)s -8778(the)s 0 12543(v)m 6(alue)k 582(of)s 868(parameters)s -1980(of)s 220 fnt2 2266 12540(@Tb)m 4(l)k 240 fnt1 -2775 12543(.)m 2953(If)s 220 fnt2 3198 12540(@Cell)m 240 fnt1 -3857 12543(is)m 4082(used)s 4593(within)s 5276(an)s 5573(actual)s -220 fnt2 6213 12540(@F)m 6(or)k -5(mat)k 240 fnt1 -7200 12543(parameter)m 9(,)k 8267(its)s 8558(v)s 6(alue)k -0 12255(depends)m 833(on)s 1126(the)s 1471(v)s 6(alue)k -2035(of)s 2303(parameters)s 3397(of)s 3665(the)s 4009(in)s 9(v)k 4(ocation)k -5060(of)s 220 fnt2 5327 12252(@Tb)m 4(l)k 240 fnt1 -5893 12255(of)m 6160(which)s 6799(the)s 220 fnt2 7143 12252(@F)m 6(or)k -5(mat)k -240 fnt1 8112 12255(parameter)m 0 11967(is)m 210(a)s 376(part.)s -480 11593(A)m 710(de\207nition,)s 1734(macro,)s 2438(or)s 2697(named)s +0 13205(v)m 6(alue)k 582(of)s 868(parameters)s 1980(of)s +220 fnt2 2266 13202(@Tb)m 4(l)k 240 fnt1 2775 13205(.)m +2953(If)s 220 fnt2 3198 13202(@Cell)m 240 fnt1 3857 13205(is)m +4082(used)s 4593(within)s 5276(an)s 5573(actual)s 220 fnt2 +6213 13202(@F)m 6(or)k -5(mat)k 240 fnt1 7200 13205(parameter)m 9(,)k +8267(its)s 8558(v)s 6(alue)k 0 12917(depends)m 833(on)s +1126(the)s 1471(v)s 6(alue)k 2035(of)s 2303(parameters)s +3397(of)s 3665(the)s 4009(in)s 9(v)k 4(ocation)k +5060(of)s 220 fnt2 5327 12914(@Tb)m 4(l)k 240 fnt1 +5893 12917(of)m 6160(which)s 6799(the)s 220 fnt2 7143 12914(@F)m 6(or)k -5(mat)k +240 fnt1 8112 12917(parameter)m 0 12629(is)m 210(a)s 376(part.)s +480 12255(A)m 710(de\207nition,)s 1734(macro,)s 2438(or)s 2697(named)s 3393(parameter)s 4407(may)s 4873(ha)s 4(v)k 3(e)k 5374(se)s 6(v)k 3(eral)k 6096(alternati)s 6(v)k 3(e)k 7150(names,)s 7868(lik)s 2(e)k 8280(this:)s 220 fnt2 -480 11092(macro @CD @CentredDispla)m 6(y @CenteredDispla)k 6(y { ...)k 13( })k 240 fnt1 -0 10594(This)m 489(is)s 713(useful)s 1366(for)s 1718(abbre)s 6(viated)k +480 11754(macro @CD @CentredDispla)m 6(y @CenteredDispla)k 6(y { ...)k 13( })k 240 fnt1 +0 11256(This)m 489(is)s 713(useful)s 1366(for)s 1718(abbre)s 6(viated)k 2898(and)s 3316(alternati)s 6(v)k 3(e)k 4384(spellings,)s 5355(as)s 5618(sho)s 6(wn.)k 6416(The)s 6858(names)s -7534(appear)s 8245(together)s 9(,)k 0 10306(and)m 404(the)s 3(y)k +7534(appear)s 8245(together)s 9(,)k 0 10968(and)m 404(the)s 3(y)k 867(may)s 1333(subsequently)s 2637(be)s 2919(used)s 3416(interchangeably)s 15(.)k -480 9932(If)m 698(one)s 1088(name)s 1649(of)s 1908(a)s +480 10594(If)m 698(one)s 1088(name)s 1649(of)s 1908(a)s 2062(symbol)s 2809(appears)s 3578(in)s 3809(an)s 4079(e)s 3(xport)k 4735(or)s 4982(import)s 5666(list,)s 6052(its)s 6316(other)s -6854(names)s 7504(are)s 7838(automaticaly)s 0 9644(included)m 882(as)s +6854(names)s 7504(are)s 7838(automaticaly)s 0 10306(included)m 882(as)s 1132(well,)s 1650(and)s 2054(should)s 2751(not)s 3117(also)s 3555(appear)s 4252(in)s 4495(the)s 4843(list.)s 240 fnt5 -0 8851(2.4.)m 471(Filter)s 4(ed)k 1330(right)s 1894(and)s +0 9513(2.4.)m 471(Filter)s 4(ed)k 1330(right)s 1894(and)s 2335(body)s 2897(parameters)s [ /Dest /LOUTfilters /DEST pdfmark -240 fnt1 480 8374(A)m 719(right)s +240 fnt1 480 9036(A)m 719(right)s 1239(or)s 1507(body)s 2050(parameter)s 3073(may)s 3548(be)s 3839(\207ltered)s 4582(by)s 4885(some)s 5455(other)s 6015(computer)s -6987(program)s 7866(before)s 8541(being)s 0 8086(included)m 882(by)s +6987(program)s 7866(before)s 8541(being)s 0 8748(included)m 882(by)s 1176(Lout.)s 1792(As)s 2109(an)s 2392(e)s 3(xample)k 3255(of)s 3526(such)s 4022(a)s 4188(program)s 5058(we)s 5393(will)s 5819(use)s 6194(the)s 6542(Unix)s 220 fnt2 -7076 8083(sor)m -8(t)k 240 fnt1 7506 8086(command:)m 220 fnt2 -480 7587(sor)m -8(t -o out\207le in\207le)k 240 fnt1 0 7133(This)m 499(causes)s -1198(\207le)s 220 fnt2 1582 7130(out\207le)m 240 fnt1 2243 7133(to)m +7076 8745(sor)m -8(t)k 240 fnt1 7506 8748(command:)m 220 fnt2 +480 8249(sor)m -8(t -o out\207le in\207le)k 240 fnt1 0 7795(This)m 499(causes)s +1198(\207le)s 220 fnt2 1582 7792(out\207le)m 240 fnt1 2243 7795(to)m 2505(contain)s 3290(a)s 3480(sorted)s 4145(cop)s 2(y)k -4687(of)s 4981(\207le)s 220 fnt2 5366 7130(in\207le)m 240 fnt1 -5808 7133(.)m 5996(W)s 19(e)k 6388(incorporate)s 7556(this)s -7975(into)s 8424(a)s 8614(Lout)s 0 6845(de\207nition)m 974(as)s -1224(follo)s 6(ws:)k 220 fnt2 480 6393(def @Sor)m -8(t)k -480 6105( named @Options {})m 480 5817( r)m -3(ight x)k 480 5529({)m 480 5241( def @Filter { sor)m -8(t @Options -o @FilterOut @FilterIn })k -480 4665( lines @Break x)m 480 4377(})m 240 fnt1 0 3883(The)m 440(presence)s -1345(within)s 220 fnt2 2026 3880(@Sor)m -8(t)k 240 fnt1 -2728 3883(of)m 3012(a)s 3191(de\207nition)s 4178(of)s 4462(a)s -4641(symbol)s 5414(called)s 220 fnt2 6055 3880(@Filter)m 240 fnt1 -6837 3883(tells)m 7298(Lout)s 7823(that)s 8254(the)s 8615(right)s -0 3595(parameter)m 1057(of)s 220 fnt2 1372 3592(@Sor)m -8(t)k -240 fnt1 2104 3595(is)m 2358(to)s 2640(be)s 2966(\207ltered)s -3743(before)s 4453(inclusion.)s 5537(When)s 220 fnt2 6210 3592(@Sor)m -8(t)k -240 fnt1 6942 3595(is)m 7196(in)s 9(v)k 4(ok)k 2(ed,)k -220 fnt2 8103 3592(@Filter)m 240 fnt1 8916 3595(is)m 0 3307(e)m 6(v)k 6(aluated)k +4687(of)s 4981(\207le)s 220 fnt2 5366 7792(in\207le)m 240 fnt1 +5808 7795(.)m 5996(W)s 19(e)k 6388(incorporate)s 7556(this)s +7975(into)s 8424(a)s 8614(Lout)s 0 7507(de\207nition)m 974(as)s +1224(follo)s 6(ws:)k 220 fnt2 480 7055(def @Sor)m -8(t)k +480 6767( named @Options {})m 480 6479( r)m -3(ight x)k 480 6191({)m 480 5903( def @Filter { sor)m -8(t @Options -o @FilterOut @FilterIn })k +480 5327( lines @Break x)m 480 5039(})m 240 fnt1 0 4545(The)m 440(presence)s +1345(within)s 220 fnt2 2026 4542(@Sor)m -8(t)k 240 fnt1 +2728 4545(of)m 3012(a)s 3191(de\207nition)s 4178(of)s 4462(a)s +4641(symbol)s 5414(called)s 220 fnt2 6055 4542(@Filter)m 240 fnt1 +6837 4545(tells)m 7298(Lout)s 7823(that)s 8254(the)s 8615(right)s +0 4257(parameter)m 1057(of)s 220 fnt2 1372 4254(@Sor)m -8(t)k +240 fnt1 2104 4257(is)m 2358(to)s 2640(be)s 2966(\207ltered)s +3743(before)s 4453(inclusion.)s 5537(When)s 220 fnt2 6210 4254(@Sor)m -8(t)k +240 fnt1 6942 4257(is)m 7196(in)s 9(v)k 4(ok)k 2(ed,)k +220 fnt2 8103 4254(@Filter)m 240 fnt1 8916 4257(is)m 0 3969(e)m 6(v)k 6(aluated)k 978(and)s 1399(its)s 1692(v)s 6(alue)k 2277(e)s 3(x)k 3(ecuted)k 3196(as)s 3463(a)s 3646(system)s 4387(command.)s 5512(In)s 5785(addition)s 6643(to)s 6899(the)s 7264(symbols)s 8130(ordinarily)s -0 3019(a)m 4(v)k 6(ailable)k 908(within)s 1576(the)s -1924(body)s 2458(of)s 220 fnt2 2729 3016(@Filter)m 240 fnt1 -3438 3019(,)m 3545(there)s 4078(are)s 4425(three)s 4958(others:)s -220 fnt2 0 2513(@FilterIn)m 240 fnt1 1920 2516(the)m 2273(name)s +0 3681(a)m 4(v)k 6(ailable)k 908(within)s 1576(the)s +1924(body)s 2458(of)s 220 fnt2 2729 3678(@Filter)m 240 fnt1 +3438 3681(,)m 3545(there)s 4078(are)s 4425(three)s 4958(others:)s +220 fnt2 0 3175(@FilterIn)m 240 fnt1 1920 3178(the)m 2273(name)s 2852(of)s 3128(a)s 3299(\207le)s 3665(which)s 4312(will,)s 4795(at)s 5032(the)s 5385(time)s 5870(the)s 6223(system)s 6952(command)s 7959(is)s 8175(e)s 3(x)k 3(ecuted,)k -1920 2228(contain)m 2726(the)s 3119(actual)s 3789(right)s 4345(or)s +1920 2890(contain)m 2726(the)s 3119(actual)s 3789(right)s 4345(or)s 4649(body)s 5228(parameter)s 6287(of)s 6603(the)s 6996(symbol,)s -7853(e)s 3(xactly)k 8639(as)s 8934(it)s 1920 1940(appears)m +7853(e)s 3(xactly)k 8639(as)s 8934(it)s 1920 2602(appears)m 2701(in)s 2944(the)s 3292(input)s 3844(\207le;)s 220 fnt2 -0 1434(@FilterOut)m 240 fnt1 1920 1437(the)m 2305(name)s 2916(of)s +0 2096(@FilterOut)m 240 fnt1 1920 2099(the)m 2305(name)s 2916(of)s 3224(a)s 3427(\207le)s 3826(of)s 4134(Lout)s 4683(te)s 3(xt)k 5135(whose)s 5840(contents)s 6726(Lout)s 7275(will)s 7738(read)s -8244(after)s 8778(the)s 1920 1149(system)m 2657(command)s 3673(has)s +8244(after)s 8778(the)s 1920 1811(system)m 2657(command)s 3673(has)s 4057(\207nished,)s 4936(as)s 5200(a)s 5380(replacement)s 6620(for)s 6972(what)s 7511(w)s 2(as)k 7946(put)s 8326(into)s -8765(\207le)s 220 fnt2 1920 858(@FilterIn)m 240 fnt1 2798 861(;)m -220 fnt2 0 374(@FilterErr)m 240 fnt1 1920 377(the)m 2273(name)s +8765(\207le)s 220 fnt2 1920 1520(@FilterIn)m 240 fnt1 2798 1523(;)m +220 fnt2 0 1036(@FilterErr)m 240 fnt1 1920 1039(the)m 2273(name)s 2852(of)s 3129(a)s 3300(\207le)s 3667(that)s 4090(Lout)s 4608(will)s 5039(attempt)s 5820(to)s 6065(read)s 6539(after)s -7041(the)s 7394(system)s 8124(command)s +7041(the)s 7394(system)s 8124(command)s 1920 751(has)m 2281(\207nished,)s +3137(containing)s 4191(error)s 4705(messages)s 5649(produced)s 6589(by)s +6874(the)s 7213(command)s 8206(that)s 8614(Lout)s 1920 463(will)m +2346(pass)s 2809(on)s 3106(to)s 3345(the)s 3693(user)s +4151(as)s 4401(non-f)s 2(atal)k 5316(errors.)s 6036(Use)s +6464(of)s 6735(this)s 7131(\207le)s 7492(is)s 7702(optional.)s + grestore gsave 1417 -15423 translate @@ -6087,92 +6242,109 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -240 fnt6 1417 -1580(2.4.)m 1871(F)s 10(ilter)k 8(ed)k -2688(right)s 3217(and)s 3643(body)s 4165(par)s 3(ameter)k 2(s)k -240 fnt5 10256 -1583(21)m gsave +240 fnt6 1417 -1580(2.4.)m +1871(F)s 10(ilter)k 8(ed)k 2688(right)s 3217(and)s +3643(body)s 4165(par)s 3(ameter)k 2(s)k 240 fnt5 +10256 -1583(21)m gsave 1417 -15423 translate 240 fnt1 9066 13368 0 13259 240 288 60 LoutGraphic gsave 1 LoutMargSet grestore -1920 13205(has)m 2281(\207nished,)s 3137(containing)s -4191(error)s 4705(messages)s 5649(produced)s 6589(by)s 6874(the)s -7213(command)s 8206(that)s 8614(Lout)s 1920 12917(will)m 2346(pass)s -2809(on)s 3106(to)s 3345(the)s 3693(user)s 4151(as)s -4401(non-f)s 2(atal)k 5316(errors.)s 6036(Use)s 6464(of)s -6735(this)s 7131(\207le)s 7492(is)s 7702(optional.)s 0 12414(It)m -205(is)s 415(a)s 581(f)s 2(atal)k 1057(error)s -1580(for)s 1918(the)s 2266(system)s 2990(command)s 3992(to)s -4231(return)s 4858(a)s 5024(non-zero)s 5927(status.)s 480 12040(No)m 6(w)k -1001(the)s 220 fnt2 1356 12037(sor)m -8(t)k 240 fnt1 -1793 12040(command)m 2802(has)s 3179(options)s 220 fnt2 3942 12037(-u)m -240 fnt1 4190 12040(for)m 4535(deleting)s 5365(duplicate)s 6304(lines,)s -6869(and)s 220 fnt2 7280 12037(-r)m 240 fnt1 7493 12040(for)m -7838(re)s 6(v)k 3(ersing)k 8778(the)s 0 11752(sorting)m -717(order)s 13(.)k 1372(So)s 1678(the)s 2026(result)s -2616(of)s 220 fnt2 480 11251(@Sor)m -8(t)k 480 10963( @Options { -r -u })m -480 10675({)m 480 10387(A)m 6(usten, J)k 4(ane)k 480 10099(Dic)m 4(k)k 4(ens)k 3(, Char)k -3(les)k -480 9811(Eliot, George)m 480 9523(Hardy)m 22(, )k 11(Thomas)k 480 9235(Bront{@Char edieresis}, Char)m -3(lotte)k -480 8947(})m 240 fnt1 0 8453(is)m 480 8000(Hardy)m 15(,)k -1170(Thomas)s 480 7712(Eliot,)m 1051(Geor)s 4(ge)k 480 7424(Dick)m 2(ens,)k -1369(Charles)s 480 7136(Bront\353,)m 1238(Charlotte)s 480 6848(Austen,)m 1265(Jane)s -0 6364(Unlik)m 2(e)k 705(all)s 998(the)s 1347(other)s +0 13205(It)m 205(is)s 415(a)s +581(f)s 2(atal)k 1057(error)s 1580(for)s 1918(the)s +2266(system)s 2990(command)s 3992(to)s 4231(return)s 4858(a)s +5024(non-zero)s 5927(status.)s 480 12831(No)m 6(w)k 1001(the)s +220 fnt2 1356 12828(sor)m -8(t)k 240 fnt1 1793 12831(command)m +2802(has)s 3179(options)s 220 fnt2 3942 12828(-u)m 240 fnt1 +4190 12831(for)m 4535(deleting)s 5365(duplicate)s 6304(lines,)s 6869(and)s +220 fnt2 7280 12828(-r)m 240 fnt1 7493 12831(for)m 7838(re)s 6(v)k 3(ersing)k +8778(the)s 0 12543(sorting)m 717(order)s 13(.)k 1372(So)s +1678(the)s 2026(result)s 2616(of)s 220 fnt2 480 12042(@Sor)m -8(t)k +480 11754( @Options { -r -u })m 480 11466({)m 480 11178(A)m 6(usten, J)k 4(ane)k +480 10890(Dic)m 4(k)k 4(ens)k 3(, Char)k -3(les)k +480 10602(Eliot, George)m 480 10314(Hardy)m 22(, )k 11(Thomas)k 480 10026(Bront{@Char edieresis}, Char)m -3(lotte)k +480 9738(})m 240 fnt1 0 9244(is)m 480 8791(Hardy)m 15(,)k +1170(Thomas)s 480 8503(Eliot,)m 1051(Geor)s 4(ge)k 480 8215(Dick)m 2(ens,)k +1369(Charles)s 480 7927(Bront\353,)m 1238(Charlotte)s 480 7639(Austen,)m 1265(Jane)s +0 7155(Unlik)m 2(e)k 705(all)s 998(the)s 1347(other)s 1898(e)s 3(xamples)k 2849(in)s 3093(this)s 3489(manual,)s 4300(this)s 4697(output)s 5369(is)s 5579(simulated.)s 6673(This)s 7149(w)s 2(as)k 7570(done)s 8093(so)s 8359(that)s -8778(the)s 0 6076(ability)m 661(to)s 896(format)s 1588(this)s +8778(the)s 0 6867(ability)m 661(to)s 896(format)s 1588(this)s 1980(manual)s 2735(is)s 2942(not)s 3304(dependent)s 4344(on)s 4637(the)s 4981(e)s 3(xistence)k 5919(of)s 6187(the)s -6531(Unix)s 220 fnt2 7061 6073(sor)m -8(t)k 240 fnt1 -7487 6076(command,)m 8534(and)s 8934(it)s 0 5788(highlights)m 1008(the)s +6531(Unix)s 220 fnt2 7061 6864(sor)m -8(t)k 240 fnt1 +7487 6867(command,)m 8534(and)s 8934(it)s 0 6579(highlights)m 1008(the)s 1356(f)s 2(act)k 1771(that)s 2189(\207ltered)s 2923(actual)s 3548(parameters)s 4646(are)s 4993(by)s 5287(their)s 5784(nature)s -6437(of)s 6708(uncertain)s 7654(portability)s 15(.)k 480 5414(There)m +6437(of)s 6708(uncertain)s 7654(portability)s 15(.)k 480 6205(There)m 1114(is)s 1345(no)s 1660(need)s 2191(for)s 2550(an)s 2855(actual)s 3501(\207ltered)s 4257(parameter)s 5292(to)s 5552(obe)s 3(y)k 6091(the)s 6460(le)s 3(xical)k 7169(rules)s 7706(of)s -7998(Lout,)s 8579(since)s 0 5126(it)m 207(is)s 432(passed)s +7998(Lout,)s 8579(since)s 0 5917(it)m 207(is)s 432(passed)s 1143(directly)s 1941(to)s 2195(the)s 2558(other)s 3124(program.)s 4113(Ho)s 6(we)k 6(v)k 3(er)k 9(,)k 5088(Lout)s 5615(must)s 6155(be)s 6452(able)s 6921(to)s 7175(w)s 2(ork)k 7741(out)s 8122(where)s 8778(the)s -0 4838(parameter)m 1034(ends,)s 1601(which)s 2263(gi)s 6(v)k 3(es)k +0 5629(parameter)m 1034(ends,)s 1601(which)s 2263(gi)s 6(v)k 3(es)k 2831(rise)s 3251(to)s 3511(the)s 3879(follo)s 6(wing)k 4877(rules.)s 5525(As)s 5863(with)s 6365(a)s 6552(body)s 7106(parameter)s 9(,)k 8179(a)s 8366(symbol)s 220 fnt2 -0 4547(@Sym)m 240 fnt1 730 4550(with)m 1235(a)s 1423(\207ltered)s +0 5338(@Sym)m 240 fnt1 730 5341(with)m 1235(a)s 1423(\207ltered)s 2180(parameter)s 3217(must)s 3764(be)s 4069(in)s 9(v)k 4(ok)k 2(ed)k 4906(in)s 5172(either)s 5798(the)s 6168(form)s 220 fnt2 -6715 4547(@Sym { ...)m 13( })k 240 fnt1 7949 4550(or)m 8231(the)s -8602(form)s 220 fnt2 0 4259(@Sym @Begin ...)m 13( @End @Sym)k 240 fnt1 -3120 4262(,)m 3251(plus)s 3725(options)s 4505(as)s 4779(usual.)s +6715 5338(@Sym { ...)m 13( })k 240 fnt1 7949 5341(or)m 8231(the)s +8602(form)s 220 fnt2 0 5050(@Sym @Begin ...)m 13( @End @Sym)k 240 fnt1 +3120 5053(,)m 3251(plus)s 3725(options)s 4505(as)s 4779(usual.)s 5472(In)s 5753(the)s 6125(former)s 6858(case,)s 7400(braces)s -8085(within)s 8778(the)s 0 3974(actual)m 625(parameter)s 1639(must)s +8085(within)s 8778(the)s 0 4765(actual)m 625(parameter)s 1639(must)s 2164(match;)s 2860(in)s 3103(the)s 3451(latter)s 4000(case,)s 4518(the)s 4866(actual)s 5491(parameter)s 6505(may)s 6971(not)s -7337(contain)s 220 fnt2 8098 3971(@End)m 240 fnt1 8699 3974(.)m -480 3600(If)m 725(an)s 1024(actual)s 1664(\207ltered)s 2414(parameter)s -3444(contains)s 220 fnt2 4307 3597(@Include)m 240 fnt1 5229 3600(,)m +7337(contain)s 220 fnt2 8098 4762(@End)m 240 fnt1 8699 4765(.)m +480 4391(If)m 725(an)s 1024(actual)s 1664(\207ltered)s 2414(parameter)s +3444(contains)s 220 fnt2 4307 4388(@Include)m 240 fnt1 5229 4391(,)m 5352(this)s 5764(is)s 5989(tak)s 2(en)k 6578(to)s 6833(be)s 3(gin)k 7434(a)s 7616(Lout)s 220 fnt2 -8144 3597(@Include)m 240 fnt1 0 3312(directi)m 6(v)k 3(e)k +8144 4388(@Include)m 240 fnt1 0 4103(directi)m 6(v)k 3(e)k 882(in)s 1125(the)s 1473(usual)s 2033(form)s 2557(\(Section)s -3410(3.44\):)s 220 fnt2 480 2821(@Sor)m -8(t {)k 480 2533(A)m 6(usten, J)k 4(ane)k -480 2245(@Include { authors })m 480 1957(Hardy)m 22(, )k 11(Thomas)k 480 1669(})m -240 fnt1 0 1175(The)m 421(included)s 1296(\207le)s 1649(becomes)s -2530(part)s 2954(of)s 220 fnt2 3217 1172(@FilterIn)m 240 fnt1 -4095 1175(,)m 4195(b)s 4(ut)k 4549(an)s 3(y)k -4939(braces,)s 220 fnt2 5649 1172(@Include)m 240 fnt1 6571 1175(,)m -6670(or)s 220 fnt2 6922 1172(@End)m 240 fnt1 7576 1175(within)m -8236(it)s 8421(are)s 8760(not)s 0 887(noticed)m 762(by)s -1056(Lout.)s +3410(3.45\):)s 220 fnt2 480 3612(@Sor)m -8(t {)k 480 3324(A)m 6(usten, J)k 4(ane)k +480 3036(@Include { authors })m 480 2748(Hardy)m 22(, )k 11(Thomas)k 480 2460(})m +240 fnt1 0 1966(The)m 421(included)s 1296(\207le)s 1649(becomes)s +2530(part)s 2954(of)s 220 fnt2 3217 1963(@FilterIn)m 240 fnt1 +4095 1966(,)m 4195(b)s 4(ut)k 4549(an)s 3(y)k +4939(braces,)s 220 fnt2 5649 1963(@Include)m 240 fnt1 6571 1966(,)m +6670(or)s 220 fnt2 6922 1963(@End)m 240 fnt1 7576 1966(within)m +8236(it)s 8421(are)s 8760(not)s 0 1678(noticed)m 762(by)s +1056(Lout.)s 480 1304(The)m 928(\207rst)s 1380(character)s 2335(of)s +2627(\207le)s 220 fnt2 3009 1301(@FilterIn)m 240 fnt1 3968 1304(will)m +4415(be)s 4718(the)s 5087(\207rst)s 5539(non-white)s 6586(space)s +7194(character)s 8149(follo)s 6(wing)k 0 1016(the)m 353(opening)s +220 fnt2 1184 1013({)m 240 fnt1 1314 1016(or)m 220 fnt2 +1579 1013(@Begin)m 240 fnt1 2348 1016(,)m 2461(or)s 2726(the)s +3080(\207rst)s 3517(character)s 4457(of)s 4734(an)s 5023(included)s +5911(\207le)s 6278(if)s 220 fnt2 6501 1013(@Include)m 240 fnt1 +7489 1016(comes)m 8157(\207rst.)s 8698(The)s 0 728(second-last)m 1146(character)s +2091(of)s 2374(\207le)s 220 fnt2 2746 725(@FilterIn)m 240 fnt1 +3696 728(will)m 4133(be)s 4427(the)s 4786(last)s 5189(non-white)s +6226(space)s 6825(character)s 7770(preceding)s 8778(the)s 0 440(closing)m +220 fnt2 745 437(})m 240 fnt1 871 440(or)m 220 fnt2 +1132 437(@End @Sym)m 240 fnt1 2454 440(,)m 2563(or)s 2824(the)s +3174(last)s 3567(character)s 4503(of)s 4775(an)s 5060(included)s +5944(\207le)s 6307(if)s 220 fnt2 6526 437(@Include)m 240 fnt1 +7510 440(comes)m 8174(last.)s 8671(One)s 0 152(ne)m 6(wline)k +833(character)s 1794(is)s 2030(al)s 2(w)k 2(ays)k +2768(appended)s 3770(and)s 4201(is)s 4437(the)s 4812(last)s +5229(character)s 6190(of)s 6487(\207le)s 220 fnt2 6875 149(@FilterIn)m +240 fnt1 7753 152(.)m 7943(This)s 8446(ef)s 6(fects)k + grestore gsave 1417 -15423 translate @@ -6213,127 +6385,107 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -240 fnt5 1417 -1583(22)m 240 fnt6 8674 -1580(Chapter)m 9524(2.)s -9798(Details)s gsave +240 fnt5 1417 -1583(22)m +240 fnt6 8674 -1580(Chapter)m 9524(2.)s 9798(Details)s gsave 1417 -15423 translate -240 fnt1 9066 13368 0 13259 240 288 60 LoutGraphic +240 fnt1 +9066 13368 0 13259 240 288 60 LoutGraphic gsave 0 LoutMargSet grestore -480 13205(The)m 928(\207rst)s 1380(character)s 2335(of)s -2627(\207le)s 220 fnt2 3009 13202(@FilterIn)m 240 fnt1 3968 13205(will)m -4415(be)s 4718(the)s 5087(\207rst)s 5539(non-white)s 6586(space)s -7194(character)s 8149(follo)s 6(wing)k 0 12917(the)m 353(opening)s -220 fnt2 1184 12914({)m 240 fnt1 1314 12917(or)m 220 fnt2 -1579 12914(@Begin)m 240 fnt1 2348 12917(,)m 2461(or)s 2726(the)s -3080(\207rst)s 3517(character)s 4457(of)s 4734(an)s 5023(included)s -5911(\207le)s 6278(if)s 220 fnt2 6501 12914(@Include)m 240 fnt1 -7489 12917(comes)m 8157(\207rst.)s 8698(The)s 0 12629(second-last)m 1146(character)s -2091(of)s 2374(\207le)s 220 fnt2 2746 12626(@FilterIn)m 240 fnt1 -3696 12629(will)m 4133(be)s 4427(the)s 4786(last)s 5189(non-white)s -6226(space)s 6825(character)s 7770(preceding)s 8778(the)s 0 12341(closing)m -220 fnt2 745 12338(})m 240 fnt1 871 12341(or)m 220 fnt2 -1132 12338(@End @Sym)m 240 fnt1 2454 12341(,)m 2563(or)s 2824(the)s -3174(last)s 3567(character)s 4503(of)s 4775(an)s 5060(included)s -5944(\207le)s 6307(if)s 220 fnt2 6526 12338(@Include)m 240 fnt1 -7510 12341(comes)m 8174(last.)s 8671(One)s 0 12053(ne)m 6(wline)k -833(character)s 1794(is)s 2030(al)s 2(w)k 2(ays)k -2768(appended)s 3770(and)s 4201(is)s 4437(the)s 4812(last)s -5229(character)s 6190(of)s 6487(\207le)s 220 fnt2 6875 12050(@FilterIn)m -240 fnt1 7753 12053(.)m 7943(This)s 8446(ef)s 6(fects)k -0 11765(a)m 206(compromise)s 1484(between)s 2378(the)s 2766(Lout)s +0 13205(a)m 206(compromise)s 1484(between)s 2378(the)s 2766(Lout)s 3319(con)s 9(v)k 3(ention,)k 4518(that)s 4976(spaces)s -5691(follo)s 6(wing)k 220 fnt2 6708 11762({)m 240 fnt1 -6873 11765(or)m 7172(preceding)s 220 fnt2 8208 11762(})m 240 fnt1 -8372 11765(are)m 8760(not)s 0 11477(signi\207cant,)m 1103(with)s 1585(the)s +5691(follo)s 6(wing)k 220 fnt2 6708 13202({)m 240 fnt1 +6873 13205(or)m 7172(preceding)s 220 fnt2 8208 13202(})m 240 fnt1 +8372 13205(are)m 8760(not)s 0 12917(signi\207cant,)m 1103(with)s 1585(the)s 1933(Unix)s 2467(con)s 9(v)k 3(ention)k 3576(that)s 3994(all)s 4287(te)s 3(xt)k 4702(\207les)s 5151(end)s 5555(with)s 6037(a)s 6203(ne)s 6(wline)k 7010(character)s 13(.)k -240 fnt5 0 10684(2.5.)m 471(Pr)s 4(ecedence)k 1677(and)s +240 fnt5 0 12124(2.5.)m 471(Pr)s 4(ecedence)k 1677(and)s 2118(associati)s 2(vity)k 3420(of)s 3692(symbols)s [ /Dest /LOUTprecedence /DEST pdfmark 240 fnt1 -480 10207(Ev)m 3(ery)k 1131(symbol)s 1920(in)s 2192(Lout)s -2733(has)s 3132(a)s 240 fnt6 3327 10209(pr)m 8(ecedence)k -240 fnt1 4401 10207(,)m -[ /Dest /LOUT16_4080_det_prec_1 /DEST pdfmark +480 11647(Ev)m 3(ery)k 1131(symbol)s 1920(in)s 2192(Lout)s +2733(has)s 3132(a)s 240 fnt6 3327 11649(pr)m 8(ecedence)k +240 fnt1 4401 11647(,)m +[ /Dest /LOUT19_4213_det_prec_1 /DEST pdfmark 4538(which)s 5209(is)s 5448(a)s 5643(positi)s 6(v)k 3(e)k 6476(whole)s 7146(number)s 13(.)k -8057(When)s 8716(tw)s 2(o)k 0 9919(symbols)m 849(compete)s +8057(When)s 8716(tw)s 2(o)k 0 11359(symbols)m 849(compete)s 1715(for)s 2053(an)s 2336(object,)s 3027(the)s 3375(one)s 3777(with)s 4259(the)s 4607(higher)s 5278(precedence)s 6409(wins)s 6912(it.)s 7208(F)s 3(or)k 7597(e)s 3(xample,)k -220 fnt2 480 9418(a | b / c)m 240 fnt1 0 8963(is)m 210(equi)s 6(v)k 6(alent)k -1253(to)s 220 fnt2 1491 8960({)m 1616(a)s 1794(|)s +220 fnt2 480 10858(a | b / c)m 240 fnt1 0 10403(is)m 210(equi)s 6(v)k 6(alent)k +1253(to)s 220 fnt2 1491 10400({)m 1616(a)s 1794(|)s 1892(b)s 2067(})s 2192(/)s 2317(c)s 240 fnt1 -2482 8963(rather)m 3097(than)s 220 fnt2 3565 8960(a)m 3743(|)s +2482 10403(rather)m 3097(than)s 220 fnt2 3565 10400(a)m 3743(|)s 3841({)s 3966(b)s 4141(/)s 4266(c)s 4432(})s -240 fnt1 4496 8963(,)m 4603(because)s 220 fnt2 5415 8960(|)m -240 fnt1 5511 8963(has)m 5881(higher)s 6551(precedence)s 7681(than)s -220 fnt2 8150 8960(/)m 240 fnt1 8273 8963(and)m 8676(thus)s -0 8675(wins)m 503(the)s 220 fnt2 851 8672(b)m 240 fnt1 -965 8675(.)m 480 8301(When)m 1149(the)s 1538(tw)s 2(o)k +240 fnt1 4496 10403(,)m 4603(because)s 220 fnt2 5415 10400(|)m +240 fnt1 5511 10403(has)m 5881(higher)s 6551(precedence)s 7681(than)s +220 fnt2 8150 10400(/)m 240 fnt1 8273 10403(and)m 8676(thus)s +0 10115(wins)m 503(the)s 220 fnt2 851 10112(b)m 240 fnt1 +965 10115(.)m 480 9741(When)m 1149(the)s 1538(tw)s 2(o)k 1988(competing)s 3092(symbols)s 3981(ha)s 4(v)k 3(e)k 4523(equal)s 5137(precedence,)s 6359(Lout)s 6912(applies)s 7680(a)s -7887(second)s 8651(rule.)s 0 8013(Each)m 545(symbol)s 1316(is)s -1537(either)s 240 fnt6 2151 8015(left-associative)m 240 fnt1 3659 8013(or)m +7887(second)s 8651(rule.)s 0 9453(Each)m 545(symbol)s 1316(is)s +1537(either)s 240 fnt6 2151 9455(left-associative)m 240 fnt1 3659 9453(or)m -[ /Dest /LOUT16_4080_det_prec_2 /DEST pdfmark -240 fnt6 3929 8015(right-associative)m 240 fnt1 5528 8013(.)m 5703(The)s -6142(v)s 6(alue)k 6720(of)s 220 fnt2 7002 8010(a)m +[ /Dest /LOUT19_4213_det_prec_2 /DEST pdfmark +240 fnt6 3929 9455(right-associative)m 240 fnt1 5528 9453(.)m 5703(The)s +6142(v)s 6(alue)k 6720(of)s 220 fnt2 7002 9450(a)m 7180(op1)s 7564(b)s 7739(op2)s 8156(c)s 240 fnt1 -8332 8013(is)m 8553(tak)s 2(en)k 0 7725(to)m 252(be)s -220 fnt2 547 7722({)m 672(a)s 850(op1)s 1234(b)s -1409(})s 1534(op2)s 1951(c)s 240 fnt1 2129 7725(if)m +8332 9453(is)m 8553(tak)s 2(en)k 0 9165(to)m 252(be)s +220 fnt2 547 9162({)m 672(a)s 850(op1)s 1234(b)s +1409(})s 1534(op2)s 1951(c)s 240 fnt1 2129 9165(if)m 2359(the)s 2720(symbols)s 3582(are)s 3942(both)s 4438(left-associati)s 6(v)k 3(e,)k -5993(and)s 220 fnt2 6410 7722(a op1 { b op2 c })m 240 fnt1 8072 7725(if)m -8302(the)s 3(y)k 8779(are)s 0 7437(right-associati)m 6(v)k 3(e.)k +5993(and)s 220 fnt2 6410 9162(a op1 { b op2 c })m 240 fnt1 8072 9165(if)m +8302(the)s 3(y)k 8779(are)s 0 8877(right-associati)m 6(v)k 3(e.)k 1733(In)s 1989(cases)s 2544(not)s 2910(co)s 3(v)k 3(ered)k 3719(by)s 4013(these)s 4560(tw)s 2(o)k 4970(rules,)s -5541(use)s 5916(braces.)s 480 7063(It)m 672(sometimes)s 1732(happens)s +5541(use)s 5916(braces.)s 480 8503(It)m 672(sometimes)s 1732(happens)s 2554(that)s 2959(the)s 3294(result)s 3870(is)s 4067(the)s 4402(same)s 4935(re)s 3(g)k 1(ardless)k 5937(of)s 6195(ho)s 6(w)k 6642(the)s 6977(e)s 3(xpression)k -8041(is)s 8237(grouped.)s 0 6775(F)m 3(or)k 382(e)s 3(xample,)k -220 fnt2 1289 6772({)m 1414(a)s 1592(|)s 1690(b)s -1865(})s 1990(|)s 2088(c)s 240 fnt1 2246 6775(and)m -220 fnt2 2643 6772(a)m 2821(|)s 2919({)s 3044(b)s -3219(|)s 3317(c)s 3483(})s 240 fnt1 3599 6775(are)m +8041(is)s 8237(grouped.)s 0 8215(F)m 3(or)k 382(e)s 3(xample,)k +220 fnt2 1289 8212({)m 1414(a)s 1592(|)s 1690(b)s +1865(})s 1990(|)s 2088(c)s 240 fnt1 2246 8215(and)m +220 fnt2 2643 8212(a)m 2821(|)s 2919({)s 3044(b)s +3219(|)s 3317(c)s 3483(})s 240 fnt1 3599 8215(are)m 3939(al)s 2(w)k 2(ays)k 4643(the)s 4984(same,)s 5575(for)s 5905(an)s 3(y)k 6295(combination)s 7541(of)s -7805(objects,)s 8581(g)s 1(aps,)k 0 6487(and)m 416(v)s 6(ariants)k -1230(of)s 220 fnt2 1513 6484(|)m 240 fnt1 1550 6487(.)m +7805(objects,)s 8581(g)s 1(aps,)k 0 7927(and)m 416(v)s 6(ariants)k +1230(of)s 220 fnt2 1513 7924(|)m 240 fnt1 1550 7927(.)m 1727(In)s 1995(such)s 2504(cases)s 3071(the)s 3432(symbols)s 4293(are)s 4653(said)s 5108(to)s 5360(be)s 240 fnt6 -5654 6489(associative)m 240 fnt1 6709 6487(,)m 6829(and)s 7245(we)s -7593(can)s 7995(con\207dently)s 0 6199(omit)m 498(the)s 846(braces.)s -480 5825(User)m 4(-de\207ned)k 1769(symbols)s 2618(may)s 3084(be)s +5654 7929(associative)m 240 fnt1 6709 7927(,)m 6829(and)s 7245(we)s +7593(can)s 7995(con\207dently)s 0 7639(omit)m 498(the)s 846(braces.)s +480 7265(User)m 4(-de\207ned)k 1769(symbols)s 2618(may)s 3084(be)s 3366(gi)s 6(v)k 3(en)k 3946(a)s 4112(precedence)s -5243(and)s 5647(associati)s 6(vity:)k 220 fnt2 480 5324(def @Super)m -480 5036( precedence 50)m 480 4748( associativity r)m -3(ight)k 480 4460( left x)m 480 4172( r)m -3(ight y)k -480 3884({)m 480 3596( @OneRo)m 3(w { | -2p @F)k 6(ont y ^/0.5fk x })k 480 3308(})m -240 fnt1 0 2814(The)m 3(y)k 541(come)s 1113(just)s -1516(after)s 2010(an)s 3(y)k 220 fnt2 2405 2811(into)m -240 fnt1 2809 2814(clause)m 3460(and)s 3862(before)s 4526(an)s 3(y)k +5243(and)s 5647(associati)s 6(vity:)k 220 fnt2 480 6764(def @Super)m +480 6476( precedence 50)m 480 6188( associativity r)m -3(ight)k 480 5900( left x)m 480 5612( r)m -3(ight y)k +480 5324({)m 480 5036( @OneRo)m 3(w { | -2p @F)k 6(ont y ^/0.5fk x })k 480 4748(})m +240 fnt1 0 4254(The)m 3(y)k 541(come)s 1113(just)s +1516(after)s 2010(an)s 3(y)k 220 fnt2 2405 4251(into)m +240 fnt1 2809 4254(clause)m 3460(and)s 3862(before)s 4526(an)s 3(y)k 4921(parameter)s 5933(de\207nitions.)s 7105(The)s 7531(precedence)s 8660(may)s -0 2526(be)m 280(an)s 3(y)k 674(whole)s 1313(number)s +0 3966(be)m 280(an)s 3(y)k 674(whole)s 1313(number)s 2101(between)s 2952(10)s 3245(and)s 3646(100,)s 4110(and)s 4512(if)s 4726(omitted)s 5511(is)s 5719(assigned)s 6598(the)s 6943(v)s 6(alue)k 7509(100.)s 8030(The)s 8455(higher)s -0 2238(the)m 373(number)s 9(,)k 1227(the)s 1600(higher)s +0 3678(the)m 373(number)s 9(,)k 1227(the)s 1600(higher)s 2296(the)s 2669(precedence.)s 3933(The)s 4386(associati)s 6(vity)k -5654(may)s 6145(be)s 220 fnt2 6452 2235(left)m 240 fnt1 -6825 2238(or)m 220 fnt2 7109 2235(r)m -3(ight)k 240 fnt1 -7534 2238(,)m 7666(and)s 8095(if)s 8338(omitted)s 0 1950(def)m 2(aults)k -805(to)s 220 fnt2 1044 1947(r)m -3(ight)k 240 fnt1 -1469 1950(.)m 1633(Lout')s 13(s)k 2295(symbols)s 3144(ha)s 4(v)k 3(e)k +5654(may)s 6145(be)s 220 fnt2 6452 3675(left)m 240 fnt1 +6825 3678(or)m 220 fnt2 7109 3675(r)m -3(ight)k 240 fnt1 +7534 3678(,)m 7666(and)s 8095(if)s 8338(omitted)s 0 3390(def)m 2(aults)k +805(to)s 220 fnt2 1044 3387(r)m -3(ight)k 240 fnt1 +1469 3390(.)m 1633(Lout')s 13(s)k 2295(symbols)s 3144(ha)s 4(v)k 3(e)k 3645(the)s 3993(follo)s 6(wing)k 4970(precedences)s 6189(and)s 6593(associati)s 6(vities:)k grestore @@ -6376,24 +6528,24 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -240 fnt6 1417 -1580(2.5.)m 1871(Pr)s 8(ecedence)k 3031(and)s -3457(associativity)s 4707(of)s 4988(symbols)s 240 fnt5 10250 -1583(23)m -gsave +240 fnt6 1417 -1580(2.5.)m +1871(Pr)s 8(ecedence)k 3031(and)s 3457(associativity)s 4707(of)s +4988(symbols)s 240 fnt5 10250 -1583(23)m gsave 1417 -15423 translate 240 fnt1 9066 13368 0 13368 240 288 60 LoutGraphic gsave 1 LoutMargSet grestore -480 13170(Precedence)m 1904(Associati)s 6(vity)k 3493(Symbols)s 969 12594(5)m -2011(associati)s 6(v)k 3(e)k 220 fnt2 3493 12591(/ ^/ // ^//)m -240 fnt1 965 12306(6)m 2011(associati)s 6(v)k 3(e)k +480 13170(Precedence)m +1904(Associati)s 6(vity)k 3493(Symbols)s 969 12594(5)m 2011(associati)s 6(v)k 3(e)k +220 fnt2 3493 12591(/ ^/ // ^//)m 240 fnt1 965 12306(6)m 2011(associati)s 6(v)k 3(e)k 220 fnt2 3493 12303(| ^| || ^||)m 240 fnt1 968 12018(7)m 2011(associati)s 6(v)k 3(e)k 220 fnt2 3493 12015(& ^&)m 240 fnt1 968 11730(7)m 2011(associati)s 6(v)k 3(e)k 220 fnt2 3493 11727(&)m 240 fnt1 3695 11730(in)m 3938(the)s @@ -6436,14 +6588,14 @@ 0 7039(attrib)m 4(utes)k 935(determine)s 1946(the)s 2294(object')s 13(s)k 3088(\207nal)s 3568(appearance)s 4699(in)s 4942(the)s 5290(output.)s -[ /Dest /LOUT16_4080_det_size_1 /DEST pdfmark +[ /Dest /LOUT19_4213_det_size_1 /DEST pdfmark 480 6665(The)m 908(style)s 1415(of)s 1686(an)s 1969(object)s 2613(comprises)s 3633(the)s 3981(follo)s 6(wing:)k 0 6162(\213)m 480(Which)s 1175(font)s 1620(f)s 2(amily)k 15(,)k 2333(f)s 2(ace)k 2784(and)s 3188(size)s 3615(to)s 3854(use)s 4229(\(also)s 4746(de\207ning)s 5584(the)s 220 fnt2 5932 6159(f)m 240 fnt1 6050 6162(unit\);)m -[ /Dest /LOUT12_1501_det_size_1 /DEST pdfmark +[ /Dest /LOUT16_1489_det_size_1 /DEST pdfmark 0 5659(\213)m 480(Whether)s 1391(small)s 1991(capitals)s 2799(are)s 3175(in)s 3446(ef)s 6(fect)k 4070(or)s 4358(not,)s 4799(and)s 5231(also)s 5698(what)s @@ -6451,13 +6603,13 @@ 8740(full)s 480 5371(capitals)m 1260(the)s 1608(small)s 2180(capitals)s 2960(are)s 3307(to)s 3546(ha)s 4(v)k 3(e;)k -[ /Dest /LOUT12_1501_det_size_2 /DEST pdfmark +[ /Dest /LOUT16_1489_det_size_2 /DEST pdfmark 0 4868(\213)m 480(What)s 1058(g)s 1(ap)k 1456(to)s 1695(replace)s 2440(a)s 2606(single)s 3233(space)s 3820(between)s 4674(tw)s 2(o)k 5084(objects)s 5812(by)s 6106(\(also)s 6623(de\207ning)s 7461(the)s 220 fnt2 7809 4865(s)m 240 fnt1 7972 4868(unit\);)m -[ /Dest /LOUT12_1501_det_size_3 /DEST pdfmark +[ /Dest /LOUT16_1489_det_size_3 /DEST pdfmark 0 4365(\213)m 480(The)s 900(interpretation)s 2235(to)s 2465(place)s 3017(on)s 3306(white)s 3884(space)s 4463(separating)s 5490(tw)s 2(o)k 5891(objects)s 6611(\()s 220 fnt2 @@ -6467,42 +6619,42 @@ 855 4077(,)m 962(or)s 220 fnt2 1221 4074(te)m 6(x)k 240 fnt1 1566 4077(as)m 1816(in)s 2059(Section)s 2833(3.5\);)s -[ /Dest /LOUT12_1501_det_size_4 /DEST pdfmark +[ /Dest /LOUT16_1489_det_size_4 /DEST pdfmark 0 3583(\213)m 480(The)s 908(current)s 1644(v)s 6(alue)k 2212(of)s 2483(the)s 220 fnt2 2831 3580(y)m 240 fnt1 2999 3583(and)m 220 fnt2 3403 3580(z)m 240 fnt1 3567 3583(units)m 4083(of)s 4354(measurement)s 5688(\(Section)s 6541(3.6\);)s -[ /Dest /LOUT12_1501_det_size_5 /DEST pdfmark +[ /Dest /LOUT16_1489_det_size_5 /DEST pdfmark 0 3082(\213)m 480(The)s 908(kind)s 1392(of)s 1663(paragraph)s 2676(breaking)s 3566(to)s 3805(emplo)s 2(y)k 4575(\()s 220 fnt2 4648 3079(adjust)m 240 fnt1 5229 3082(,)m 220 fnt2 5336 3079(r)m 2(agged)k 240 fnt1 6005 3082(,)m 6112(etc.\))s -[ /Dest /LOUT12_1501_det_size_6 /DEST pdfmark +[ /Dest /LOUT16_1489_det_size_6 /DEST pdfmark 0 2579(\213)m 480(What)s 1058(g)s 1(ap)k 1456(to)s 1695(insert)s 2285(between)s 3139(the)s 3487(lines)s 3989(of)s 4260(paragraphs)s 5360(\(also)s 5877(de\207ning)s 6715(the)s 220 fnt2 7063 2576(v)m 240 fnt1 7232 2579(unit\);)m -[ /Dest /LOUT12_1501_det_size_7 /DEST pdfmark +[ /Dest /LOUT16_1489_det_size_7 /DEST pdfmark 0 2076(\213)m 480(The)s 908(size)s 1335(of)s 1606(the)s 1954(outdent)s 2732(to)s 2971(use)s 3346(in)s 3589(the)s 220 fnt2 3937 2073(outdent)m 240 fnt1 4725 2076(paragraph)m 5738(breaking)s 6628(style;)s -[ /Dest /LOUT12_1501_det_size_8 /DEST pdfmark +[ /Dest /LOUT16_1489_det_size_8 /DEST pdfmark 0 1573(\213)m 480(Whether)s 1462(the)s 220 fnt2 1909 1570(unbreakab)m 4(le\207rst)k 240 fnt1 3621 1573(and)m 220 fnt2 4124 1570(unbreakab)m 4(lelast)k 240 fnt1 5823 1573(paragraph)m 6935(breaking)s 7924(options)s 8779(are)s 480 1285(in)m 723(ef)s 6(fect;)k -[ /Dest /LOUT12_1501_det_size_9 /DEST pdfmark +[ /Dest /LOUT16_1489_det_size_9 /DEST pdfmark 0 801(\213)m 480(Whether)s 1366(the)s 1717(ro)s 6(w)k 2141(marks)s 2779(of)s 3053(w)s 2(ords)k 3691(are)s 4041(to)s 4284(pass)s 4750(along)s 5338(the)s 5690(baseline)s 6532(or)s 6795(half)s 7241(the)s 7592(height)s 8254(of)s 8528(an)s 8815(`x')s 480 513(abo)m 3(v)k 3(e)k 1102(the)s 1450(baseline;)s -[ /Dest /LOUT12_1501_det_size_10 /DEST pdfmark +[ /Dest /LOUT16_1489_det_size_10 /DEST pdfmark grestore gsave @@ -6544,77 +6696,77 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -240 fnt5 1417 -1583(24)m 240 fnt6 8674 -1580(Chapter)m 9524(2.)s -9798(Details)s gsave +240 fnt5 1417 -1583(24)m +240 fnt6 8674 -1580(Chapter)m 9524(2.)s 9798(Details)s gsave 1417 -15423 translate -240 fnt1 9066 13368 0 13259 240 288 60 LoutGraphic +240 fnt1 +9066 13368 0 13259 240 288 60 LoutGraphic gsave 0 LoutMargSet grestore -0 13205(\213)m 480(Whether)s 1363(to)s 1602(permit)s -2285(h)s 1(yphenation)k 3525(or)s 3784(not;)s -[ /Dest /LOUT12_1501_det_size_11 /DEST pdfmark -0 12702(\213)m -480(What)s 1058(colour)s 1729(the)s 2077(object)s 2721(is)s -2931(to)s 3170(appear)s 3867(in;)s -[ /Dest /LOUT12_1501_det_size_12 /DEST pdfmark -0 12199(\213)m 480(Whether)s -220 fnt2 1363 12196(@Outline)m 240 fnt1 2332 12199(is)m 2542(in)s -2785(ef)s 6(fect;)k -[ /Dest /LOUT12_1501_det_size_13 /DEST pdfmark -0 11715(\213)m 480(The)s 908(language)s -1828(of)s 2099(the)s 2447(object;)s -[ /Dest /LOUT12_1501_det_size_14 /DEST pdfmark -0 11212(\213)m 480(Whether)s -220 fnt2 1363 11209(@V)m 17(Adjust)k 240 fnt1 2320 11212(,)m -220 fnt2 2427 11209(@HAdjust)m 240 fnt1 3473 11212(and)m 220 fnt2 -3877 11209(@P)m 26(Adjust)k 240 fnt1 4885 11212(are)m 5232(in)s -5475(ef)s 6(fect.)k -[ /Dest /LOUT12_1501_det_size_15 /DEST pdfmark -0 10712(The)m 423(style)s 925(of)s -1191(an)s 1468(object)s 2107(depends)s 2938(on)s 3229(where)s -3864(it)s 4051(appears)s 4827(in)s 5064(the)s 5407(\207nal)s -5882(document.)s 6984(F)s 3(or)k 7368(e)s 3(xample,)k -8277(the)s 8619(style)s 0 10424(of)m 286(a)s 467(parameter)s -1497(depends)s 2348(on)s 2661(where)s 3316(it)s 3524(is)s -3749(used;)s 4316(the)s 4679(style)s 5201(of)s 5488(a)s -5669(g)s 1(alle)k 3(y)k 6319(is)s 6544(the)s -6908(style)s 7430(of)s 7717(the)s 8080(\207rst)s 8527(tar)s 4(get)k -0 10136(that)m 415(it)s 603(attempts)s 1459(to)s 1695(attach)s -2318(itself)s 2862(to.)s 3208(Of)s 3529(course,)s 4256(the)s -4600(style)s 5103(of)s 5371(an)s 3(y)k 5764(object)s -6404(can)s 6789(be)s 7068(changed)s 7920(by)s 8210(using)s -8778(the)s 220 fnt2 0 9845(@F)m 6(ont)k 240 fnt1 -652 9848(,)m 220 fnt2 759 9845(@Break)m 240 fnt1 1555 9848(,)m -220 fnt2 1662 9845(@Space)m 240 fnt1 2499 9848(,)m 220 fnt2 -2606 9845(@SetColour)m 240 fnt1 3863 9848(or)m 220 fnt2 4122 9845(@SetColor)m -240 fnt1 5197 9848(,)m 220 fnt2 5304 9845(@Outline)m 240 fnt1 -6213 9848(,)m 6320(and)s 220 fnt2 6724 9845(@Language)m 240 fnt1 -7975 9848(symbols.)m 480 9474(There)m 1089(are)s 1432(no)s 1720(standard)s -2584(def)s 2(ault)k 3300(v)s 6(alues)k 3952(for)s -4286(style,)s 4839(e)s 3(xcept)k 5516(that)s 5929(ro)s 6(w)k -6345(marks)s 6976(of)s 7242(w)s 2(ords)k 7872(initially)s -8663(pass)s 0 9186(half)m 447(the)s 800(height)s 1463(of)s -1738(an)s 2026(`x')s 2342(abo)s 3(v)k 3(e)k -2969(the)s 3321(baseline,)s 4216(small)s 4793(capitals)s 5577(are)s -5929(initially)s 6730(of)s 6(f)k 7079(and)s 7487(will)s -7918(be)s 8205(0.7)s 8558(times)s 0 8898(the)m 346(size)s -770(of)s 1039(full)s 1422(capitals,)s 2255(outlining)s 3170(is)s -3377(initially)s 4170(of)s 6(f,)k 4547(the)s 4892(interpretation)s -6233(of)s 6501(white)s 7085(space)s 7670(is)s 7877(initially)s -220 fnt2 8670 8895(lout)m 240 fnt1 9019 8898(,)m 0 8610(and)m -391(the)s 725(v)s 6(alues)k 1367(of)s 1624(the)s -220 fnt2 1958 8607(y)m 240 fnt1 2112 8610(and)m 220 fnt2 -2502 8607(z)m 240 fnt1 2652 8610(units)m 3154(are)s 3487(zero.)s -4049(Therefore)s 5032(one)s 5420(must)s 5931(ensure)s 6597(that)s -7001(the)s 7335(root)s 7766(g)s 1(alle)k 3(y)k +0 13205(\213)m 480(Whether)s 1363(to)s 1602(permit)s 2285(h)s 1(yphenation)k +3525(or)s 3784(not;)s +[ /Dest /LOUT16_1489_det_size_11 /DEST pdfmark +0 12702(\213)m 480(What)s 1058(colour)s +1729(the)s 2077(object)s 2721(is)s 2931(to)s 3170(appear)s +3867(in;)s +[ /Dest /LOUT16_1489_det_size_12 /DEST pdfmark +0 12199(\213)m 480(Whether)s 220 fnt2 1363 12196(@Outline)m +240 fnt1 2332 12199(is)m 2542(in)s 2785(ef)s 6(fect;)k + +[ /Dest /LOUT16_1489_det_size_13 /DEST pdfmark +0 11715(\213)m 480(The)s 908(language)s 1828(of)s 2099(the)s +2447(object;)s +[ /Dest /LOUT16_1489_det_size_14 /DEST pdfmark +0 11212(\213)m 480(Whether)s 220 fnt2 1363 11209(@V)m 17(Adjust)k +240 fnt1 2320 11212(,)m 220 fnt2 2427 11209(@HAdjust)m 240 fnt1 +3473 11212(and)m 220 fnt2 3877 11209(@P)m 26(Adjust)k 240 fnt1 +4885 11212(are)m 5232(in)s 5475(ef)s 6(fect.)k +[ /Dest /LOUT16_1489_det_size_15 /DEST pdfmark +0 10712(The)m +423(style)s 925(of)s 1191(an)s 1468(object)s 2107(depends)s +2938(on)s 3229(where)s 3864(it)s 4051(appears)s 4827(in)s +5064(the)s 5407(\207nal)s 5882(document.)s 6984(F)s 3(or)k +7368(e)s 3(xample,)k 8277(the)s 8619(style)s 0 10424(of)m +286(a)s 467(parameter)s 1497(depends)s 2348(on)s 2661(where)s +3316(it)s 3524(is)s 3749(used;)s 4316(the)s 4679(style)s +5201(of)s 5488(a)s 5669(g)s 1(alle)k 3(y)k +6319(is)s 6544(the)s 6908(style)s 7430(of)s 7717(the)s +8080(\207rst)s 8527(tar)s 4(get)k 0 10136(that)m 415(it)s +603(attempts)s 1459(to)s 1695(attach)s 2318(itself)s 2862(to.)s +3208(Of)s 3529(course,)s 4256(the)s 4600(style)s 5103(of)s +5371(an)s 3(y)k 5764(object)s 6404(can)s 6789(be)s +7068(changed)s 7920(by)s 8210(using)s 8778(the)s 220 fnt2 +0 9845(@F)m 6(ont)k 240 fnt1 652 9848(,)m 220 fnt2 +759 9845(@Break)m 240 fnt1 1555 9848(,)m 220 fnt2 1662 9845(@Space)m +240 fnt1 2499 9848(,)m 220 fnt2 2606 9845(@SetColour)m 240 fnt1 +3863 9848(or)m 220 fnt2 4122 9845(@SetColor)m 240 fnt1 5197 9848(,)m +220 fnt2 5304 9845(@Outline)m 240 fnt1 6213 9848(,)m 6320(and)s +220 fnt2 6724 9845(@Language)m 240 fnt1 7975 9848(symbols.)m 480 9474(There)m +1089(are)s 1432(no)s 1720(standard)s 2584(def)s 2(ault)k +3300(v)s 6(alues)k 3952(for)s 4286(style,)s 4839(e)s 3(xcept)k +5516(that)s 5929(ro)s 6(w)k 6345(marks)s 6976(of)s +7242(w)s 2(ords)k 7872(initially)s 8663(pass)s 0 9186(half)m +447(the)s 800(height)s 1463(of)s 1738(an)s 2026(`x')s +2342(abo)s 3(v)k 3(e)k 2969(the)s 3321(baseline,)s +4216(small)s 4793(capitals)s 5577(are)s 5929(initially)s 6730(of)s 6(f)k +7079(and)s 7487(will)s 7918(be)s 8205(0.7)s 8558(times)s +0 8898(the)m 346(size)s 770(of)s 1039(full)s 1422(capitals,)s +2255(outlining)s 3170(is)s 3377(initially)s 4170(of)s 6(f,)k +4547(the)s 4892(interpretation)s 6233(of)s 6501(white)s 7085(space)s +7670(is)s 7877(initially)s 220 fnt2 8670 8895(lout)m 240 fnt1 +9019 8898(,)m 0 8610(and)m 391(the)s 725(v)s 6(alues)k +1367(of)s 1624(the)s 220 fnt2 1958 8607(y)m 240 fnt1 +2112 8610(and)m 220 fnt2 2502 8607(z)m 240 fnt1 2652 8610(units)m +3154(are)s 3487(zero.)s 4049(Therefore)s 5032(one)s 5420(must)s +5931(ensure)s 6597(that)s 7001(the)s 7335(root)s 7766(g)s 1(alle)k 3(y)k 8386(or)s 8631(each)s 0 8322(of)m 271(its)s 548(components)s 1757(is)s 1967(enclosed)s 2863(in)s 220 fnt2 3107 8319(@F)m 6(ont)k 240 fnt1 3759 8322(,)m 220 fnt2 3866 8319(@Break)m 240 fnt1 @@ -6629,11 +6781,11 @@ 220 fnt2 4743 7743(s)m 240 fnt1 4906 7746(unit)m 5338(is)s 5548(also)s 5986(set)s 6311(by)s 220 fnt2 6605 7743(@F)m 6(ont)k 240 fnt1 7317 7746(\(Section)m 8170(3.5\).)s -[ /Dest /LOUT16_4080_det_size_2 /DEST pdfmark +[ /Dest /LOUT19_4213_det_size_2 /DEST pdfmark -[ /Dest /LOUT16_4080_det_size_3 /DEST pdfmark +[ /Dest /LOUT19_4213_det_size_3 /DEST pdfmark -[ /Dest /LOUT16_4080_det_size_4 /DEST pdfmark +[ /Dest /LOUT19_4213_det_size_4 /DEST pdfmark 536 7372(The)m 959(remainder)s 1983(of)s 2249(this)s 2641(section)s 3370(e)s 3(xplains)k 4210(ho)s 6(w)k 4667(the)s 5010(size)s 5433(of)s @@ -6661,7 +6813,7 @@ 480 4481( @Gr)m 2(aphic x)k 480 4193(})m 240 fnt1 0 3699(which)m 657(dra)s 3(ws)k 1291(a)s 1472(box)s 1903(around)s 2641(the)s 3004(boundary)s 3978(of)s 4265(its)s 4556(right)s -5082(parameter)s 6111(\(Section)s 6980(3.39\))s 7543(with)s 8040(no)s +5082(parameter)s 6111(\(Section)s 6980(3.40\))s 7543(with)s 8040(no)s 8349(mar)s 4(gin.)k 0 3411(The)m 428(result)s 1018(of)s 220 fnt2 480 2960(5c @Wide @TightBo)m 6(x metempsychosis)k 240 fnt1 0 2461(is)m 2835 215 0 106 240 288 60 480 1956 LoutGr2 @@ -6690,7 +6842,8 @@ grestore gsave 1417 -15423 translate -240 fnt1 0 0 0 0 240 288 60 LoutGraphic +240 fnt1 +0 0 0 0 240 288 60 LoutGraphic gsave 0 LoutMargSet grestore @@ -6727,26 +6880,27 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -240 fnt6 1417 -1580(2.6.)m 1871(The)s 2283(style)s 2773(and)s -3199(size)s 3610(of)s 3891(objects)s 240 fnt5 10250 -1583(25)m -gsave +240 fnt6 1417 -1580(2.6.)m +1871(The)s 2283(style)s 2773(and)s 3199(size)s 3610(of)s +3891(objects)s 240 fnt5 10250 -1583(25)m gsave 1417 -15423 translate 240 fnt1 9066 13368 0 13259 240 288 60 LoutGraphic gsave 1 LoutMargSet grestore -0 13205(which)m 644(causes)s 1322(the)s 1672(width)s 2277(of)s -2551(its)s 2829(right)s 3343(parameter)s 4360(to)s 4601(be)s -4886(reduced)s 5703(to)s 5945(a)s 6114(reasonable)s 7194(minimum)s -8187(\(a)s 8435(formal)s 0 12917(de\207nition)m 974(will)s 1400(not)s -1766(be)s 2048(attempted\):)s 220 fnt2 480 12416(5c @Wide @HContr)m 2(act @TightBo)k 6(x metempsychosis)k +0 13205(which)m +644(causes)s 1322(the)s 1672(width)s 2277(of)s 2551(its)s +2829(right)s 3343(parameter)s 4360(to)s 4601(be)s 4886(reduced)s +5703(to)s 5945(a)s 6114(reasonable)s 7194(minimum)s 8187(\(a)s +8435(formal)s 0 12917(de\207nition)m 974(will)s 1400(not)s 1766(be)s +2048(attempted\):)s 220 fnt2 480 12416(5c @Wide @HContr)m 2(act @TightBo)k 6(x metempsychosis)k 240 fnt1 0 11917(produces)m 1572 215 0 106 240 288 60 480 11362 LoutGr2 0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath stroke grestore @@ -6822,15 +6976,15 @@ 1813(the)s 2181(lefto)s 3(v)k 3(er)k 2997(width)s 3619(are)s 3986(pro)s 3(vided)k 4912(by)s 5226(the)s 220 fnt2 5594 3994(@HExpand)m 240 fnt1 6787 3997(and)m 220 fnt2 -7211 3994(@HAdjust)m 240 fnt1 8277 3997(symbols)m 0 3709(\(Sections)m 940(3.13)s -1404(and)s 1808(3.16\).)s 480 3335(The)m 914(third)s 1430(and)s +7211 3994(@HAdjust)m 240 fnt1 8277 3997(symbols)m 0 3709(\(Sections)m 940(3.14)s +1414(and)s 1818(3.17\).)s 480 3335(The)m 914(third)s 1430(and)s 1841(\207nal)s 2328(e)s 3(xception)k 3319(to)s 3565(the)s 3920(`as)s 4255(wide)s 4783(as)s 5040(possible')s 5943(rule)s 6377(concerns)s 7285(the)s 7640(components)s 8855(of)s 0 3047(the)m 348(root)s 793(g)s 1(alle)k 3(y)k 15(.)k 1522(Each)s 2057(is)s 2267(considered)s 3361(to)s 3600(be)s 3882(enclosed)s -[ /Dest /LOUT16_4080_det_size_5 /DEST pdfmark +[ /Dest /LOUT19_4213_det_size_5 /DEST pdfmark 4777(in)s 220 fnt2 5020 3044(@HContr)m 2(act)k 240 fnt1 6284 3047(and)m 220 fnt2 6688 3044(@VContr)m 2(act)k 240 fnt1 7940 3047(symbols.)m 480 2673(Up)m 836(to)s 1086(this)s @@ -6895,25 +7049,26 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -240 fnt5 1417 -1583(26)m 240 fnt6 8674 -1580(Chapter)m 9524(2.)s -9798(Details)s gsave +240 fnt5 1417 -1583(26)m +240 fnt6 8674 -1580(Chapter)m 9524(2.)s 9798(Details)s gsave 1417 -15423 translate -240 fnt1 9066 13368 0 13259 240 288 60 LoutGraphic +240 fnt1 +9066 13368 0 13259 240 288 60 LoutGraphic gsave 0 LoutMargSet grestore -0 13205(Lefto)m 3(v)k 3(er)k 868(width)s -1461(usually)s 2197(goes)s 2678(to)s 2908(the)s 3247(right,)s -3796(as)s 4037(we)s 4364(ha)s 4(v)k 3(e)k -4856(seen,)s 5379(b)s 4(ut)k 5732(here)s 6190(some)s -6742(width)s 7335(w)s 2(as)k 7747(a)s 4(v)k 6(ailable)k +0 13205(Lefto)m 3(v)k 3(er)k 868(width)s 1461(usually)s +2197(goes)s 2678(to)s 2908(the)s 3247(right,)s 3796(as)s +4037(we)s 4364(ha)s 4(v)k 3(e)k 4856(seen,)s +5379(b)s 4(ut)k 5732(here)s 6190(some)s 6742(width)s +7335(w)s 2(as)k 7747(a)s 4(v)k 6(ailable)k 8646(only)s 0 12917(to)m 239(the)s 587(left)s 964(of)s 220 fnt2 1235 12914(2.8286)m 240 fnt1 1958 12917(o)m 6(wing)k 2604(to)s 2843(the)s 3191(column)s 3966(mark)s 4518(alignment.)s @@ -6924,9 +7079,9 @@ 2197(g)s 1(alle)k 3(ys)k 2923(and)s 3328(their)s 3827(tar)s 4(gets,)k 4568(as)s 4820(described)s 5796(in)s 6040(Section)s -[ /Dest /LOUT16_4080_det_gall_1 /DEST pdfmark +[ /Dest /LOUT19_4213_det_gall_1 /DEST pdfmark -[ /Dest /LOUT16_4080_det_gall_2 /DEST pdfmark +[ /Dest /LOUT19_4213_det_gall_2 /DEST pdfmark 6816(1.4,)s 7225(can)s 7616(be)s 7900(summarized)s 0 11359(in)m 243(three)s 776(la)s 3(ws:)k 240 fnt6 0 10907(F)m 10(ir)k 2(st)k 540(Law)s 240 fnt1 @@ -6969,7 +7124,7 @@ 3161(lying)s 3705(between)s 4558(tw)s 2(o)k 4966(neighbouring)s 6295(potential)s 7185(split)s 7655(points)s 8290(is)s 8498(called)s 0 6714(a)m 240 fnt6 166 6716(component)m -[ /Dest /LOUT16_4080_det_gall_3 /DEST pdfmark +[ /Dest /LOUT19_4213_det_gall_3 /DEST pdfmark 240 fnt1 1281 6714(of)m 1552(the)s 1900(g)s 1(alle)k 3(y)k 15(.)k 2629(By)s 2963(de\207nition,)s 3987(a)s 4153(component)s 5277(cannot)s @@ -7004,7 +7159,8 @@ grestore gsave 1417 -15423 translate -240 fnt1 0 0 0 0 240 288 60 LoutGraphic +240 fnt1 +0 0 0 0 240 288 60 LoutGraphic gsave 0 LoutMargSet grestore @@ -7044,42 +7200,42 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -240 fnt6 1417 -1580(2.7.)m 1871(Galle)s 7(ys)k 2649(and)s -3075(tar)s 8(g)k 2(ets)k 240 fnt5 10248 -1583(27)m -gsave +240 fnt6 1417 -1580(2.7.)m +1871(Galle)s 7(ys)k 2649(and)s 3075(tar)s 8(g)k 2(ets)k +240 fnt5 10248 -1583(27)m gsave 1417 -15423 translate 240 fnt1 9066 13368 0 13268 240 288 60 LoutGraphic gsave 1 LoutMargSet grestore -220 fnt2 480 13211(Introduction)m 480 12923(//0.7f)m 480 12635({})m 480 12347(//)m -480 12059(This is a subject that really needs)m 480 11771(//1vx)m 480 11483(no introduction.)m 240 fnt1 0 11029(with)m -482(four)s 939(components.)s 2260(If)s 220 fnt2 2489 11026(@Body)m -240 fnt1 3269 11029(had)m 3673(been)s 4181(preceded)s 5102(by)s -220 fnt2 5395 11026(|1.0c)m 240 fnt1 5921 11029(in)m 6164(the)s -6511(de\207nition,)s 7535(the)s 7882(result)s 8471(w)s 2(ould)k -0 10741(ha)m 4(v)k 3(e)k 501(been)s 220 fnt2 -480 10293(Introduction)m 480 10005(//0.7f)m 480 9717({})m 480 9429(//)m 480 9141(|1.0c { )m 11(This is a subject that really needs //1vx no introduction.)k 13( })k -240 fnt1 0 8643(with)m 220 fnt2 524 8640(//1vx)m 240 fnt1 -1089 8643(b)m 4(uried)k 1796(within)s 2507(one)s 2951(component)s -4118(and)s 4564(hence)s 5221(not)s 5629(a)s 5838(potential)s -6771(split)s 7285(point.)s 7983(If)s 220 fnt2 8256 8640(0.7f)m -240 fnt1 8722 8643(had)m 0 8355(been)m 220 fnt2 525 8352(0.7fu)m -240 fnt1 999 8355(,)m 1123(the)s 1488(g)s 1(ap)k -1903(w)s 2(ould)k 2575(ha)s 4(v)k 3(e)k -3092(been)s 3618(unbreakable)s 4860(and)s 220 fnt2 5281 8352(//0.7fu)m -240 fnt1 5954 8355(w)m 2(ould)k 6625(not)s 7008(ha)s 4(v)k 3(e)k -7526(been)s 8052(a)s 8235(potential)s 0 8067(split)m 471(point.)s -480 7693(V)m 26(ersion)k 1310(3.03)s 1816(has)s 2228(liberalized)s -3335(this)s 3773(some)s 6(what)k 4840(in)s 5125(the)s -5515(follo)s 6(wing)k 6534(w)s 2(ay)k 15(.)k +220 fnt2 480 13211(Introduction)m +480 12923(//0.7f)m 480 12635({})m 480 12347(//)m 480 12059(This is a subject that really needs)m 480 11771(//1vx)m +480 11483(no introduction.)m 240 fnt1 0 11029(with)m 482(four)s 939(components.)s +2260(If)s 220 fnt2 2489 11026(@Body)m 240 fnt1 3269 11029(had)m +3673(been)s 4181(preceded)s 5102(by)s 220 fnt2 5395 11026(|1.0c)m +240 fnt1 5921 11029(in)m 6164(the)s 6511(de\207nition,)s 7535(the)s +7882(result)s 8471(w)s 2(ould)k 0 10741(ha)m 4(v)k 3(e)k +501(been)s 220 fnt2 480 10293(Introduction)m 480 10005(//0.7f)m 480 9717({})m +480 9429(//)m 480 9141(|1.0c { )m 11(This is a subject that really needs //1vx no introduction.)k 13( })k 240 fnt1 +0 8643(with)m 220 fnt2 524 8640(//1vx)m 240 fnt1 1089 8643(b)m 4(uried)k +1796(within)s 2507(one)s 2951(component)s 4118(and)s 4564(hence)s +5221(not)s 5629(a)s 5838(potential)s 6771(split)s 7285(point.)s +7983(If)s 220 fnt2 8256 8640(0.7f)m 240 fnt1 8722 8643(had)m +0 8355(been)m 220 fnt2 525 8352(0.7fu)m 240 fnt1 999 8355(,)m +1123(the)s 1488(g)s 1(ap)k 1903(w)s 2(ould)k +2575(ha)s 4(v)k 3(e)k 3092(been)s 3618(unbreakable)s +4860(and)s 220 fnt2 5281 8352(//0.7fu)m 240 fnt1 5954 8355(w)m 2(ould)k +6625(not)s 7008(ha)s 4(v)k 3(e)k 7526(been)s +8052(a)s 8235(potential)s 0 8067(split)m 471(point.)s 480 7693(V)m 26(ersion)k +1310(3.03)s 1816(has)s 2228(liberalized)s 3335(this)s 3773(some)s 6(what)k +4840(in)s 5125(the)s 5515(follo)s 6(wing)k 6534(w)s 2(ay)k 15(.)k 7122(When)s 7793(a)s 8002(component)s 0 7405(consists)m 808(of)s 1080(a)s 1247(horizontal)s 2271(sequence)s 3205(of)s 3477(tw)s 2(o)k 3888(or)s 4147(more)s 4695(objects)s 240 fnt6 5424 7407(A)m @@ -7155,7 +7311,7 @@ 2480(a)s 2675(mark)s 2(ed)k 3477(ef)s 6(fect)k 4103(on)s 4429(the)s 4806(v)s 3(ertical)k 5603(concatenation)s -[ /Dest /LOUT16_4080_det_gall_4 /DEST pdfmark +[ /Dest /LOUT19_4213_det_gall_4 /DEST pdfmark 7017(symbol)s 220 fnt2 7806 49(//1.1b)m 240 fnt1 8347 52(,)m 8484(which)s grestore @@ -7198,35 +7354,35 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -240 fnt5 1417 -1583(28)m 240 fnt6 8674 -1580(Chapter)m 9524(2.)s -9798(Details)s gsave +240 fnt5 1417 -1583(28)m +240 fnt6 8674 -1580(Chapter)m 9524(2.)s 9798(Details)s gsave 1417 -15423 translate -240 fnt1 9066 13368 0 13259 240 288 60 LoutGraphic +240 fnt1 +9066 13368 0 13259 240 288 60 LoutGraphic gsave 0 LoutMargSet grestore -0 13205(calls)m 509(for)s 868(more)s 1436(space)s -2045(than)s 2535(is)s 2766(a)s 4(v)k 6(ailable)k -3695(\(Section)s 4570(3.2\).)s 5134(There)s 5768(is)s 5999(no)s -6314(room)s 6900(for)s 7259(this)s 7676(symbol)s 8458(within)s -0 12917(an)m 3(y)k 402(component,)s 1579(so)s 1851(it)s -2049(will)s 2481(force)s 3033(a)s 3205(split)s 3682(and)s -4092(be)s 4379(discarded)s 5359(in)s 5608(that)s 6032(case.)s -6613(But)s 7025(it)s 7223(can)s 7618(be)s 7906(promoted)s -8887(to)s 0 12629(between)m 854(tw)s 2(o)k 1264(components.)s -480 12255(Components)m 1749(may)s 2223(be)s 2513(separated)s 3481(by)s -220 fnt2 3783 12252(/)m 240 fnt1 3914 12255(as)m 4172(well)s -4646(as)s 4904(by)s 220 fnt2 5206 12252(//)m 240 fnt1 -5331 12255(,)m 5445(gi)s 6(ving)k 6112(rise)s 6520(to)s -6767(column)s 7550(mark)s 8110(alignment)s 0 11967(between)m 854(adjacent)s -1710(components:)s 1701 1360 567 1360 240 288 60 480 10267 LoutGr2 +0 13205(calls)m 509(for)s 868(more)s 1436(space)s 2045(than)s +2535(is)s 2766(a)s 4(v)k 6(ailable)k 3695(\(Section)s +4570(3.2\).)s 5134(There)s 5768(is)s 5999(no)s 6314(room)s +6900(for)s 7259(this)s 7676(symbol)s 8458(within)s 0 12917(an)m 3(y)k +402(component,)s 1579(so)s 1851(it)s 2049(will)s 2481(force)s +3033(a)s 3205(split)s 3682(and)s 4092(be)s 4379(discarded)s +5359(in)s 5608(that)s 6032(case.)s 6613(But)s 7025(it)s +7223(can)s 7618(be)s 7906(promoted)s 8887(to)s 0 12629(between)m +854(tw)s 2(o)k 1264(components.)s 480 12255(Components)m 1749(may)s +2223(be)s 2513(separated)s 3481(by)s 220 fnt2 3783 12252(/)m +240 fnt1 3914 12255(as)m 4172(well)s 4646(as)s 4904(by)s +220 fnt2 5206 12252(//)m 240 fnt1 5331 12255(,)m 5445(gi)s 6(ving)k +6112(rise)s 6520(to)s 6767(column)s 7550(mark)s 8110(alignment)s +0 11967(between)m 854(adjacent)s 1710(components:)s 1701 1360 567 1360 240 288 60 480 10267 LoutGr2 grestore save gsave 200 dict begin lfigdict begin grestore 1701 1360 567 1360 240 288 60 0 0 LoutGr2 @@ -7255,22 +7411,22 @@ grestore end end restore grestore -0 9816(When)m 688(aligned)s 1509(components)s 2777(are)s -3183(promoted)s 4218(into)s 4702(dif)s 6(ferent)k 5637(tar)s 4(gets,)k -6435(the)s 6843(meaning)s 7779(of)s 8110(alignment)s 0 9528(becomes)m -882(v)s 3(ery)k 1351(doubtful.)s 2319(F)s 3(or)k -2702(e)s 3(xample,)k 3609(what)s 4127(if)s 4338(the)s -4679(tar)s 4(gets)k -[ /Dest /LOUT16_4080_det_gall_5 /DEST pdfmark -5355(are)s 5696(in)s 5932(dif)s 6(ferent)k -6800(columns)s 7656(of)s 7920(one)s 8315(page,)s 8867(or)s -0 9240(what)m 525(if)s 742(one)s 1144(lies)s 1526(within)s -220 fnt2 2194 9237(90d @Rotate)m 240 fnt1 3482 9240(?)m 480 8866(The)m -908(truth)s 1416(is)s 1626(that)s 220 fnt2 2044 8863(/)m -240 fnt1 2168 8866(causes)m 2843(all)s 3136(the)s 3484(objects)s -4212(that)s 4630(share)s 5190(a)s 5356(mark)s 5908(to)s -6147(ha)s 4(v)k 3(e)k 6648(equal)s 7221(width:)s -1701 1360 567 1360 240 288 60 480 7166 LoutGr2 +0 9816(When)m 688(aligned)s +1509(components)s 2777(are)s 3183(promoted)s 4218(into)s 4702(dif)s 6(ferent)k +5637(tar)s 4(gets,)k 6435(the)s 6843(meaning)s 7779(of)s +8110(alignment)s 0 9528(becomes)m 882(v)s 3(ery)k 1351(doubtful.)s +2319(F)s 3(or)k 2702(e)s 3(xample,)k 3609(what)s +4127(if)s 4338(the)s 4679(tar)s 4(gets)k +[ /Dest /LOUT19_4213_det_gall_5 /DEST pdfmark +5355(are)s +5696(in)s 5932(dif)s 6(ferent)k 6800(columns)s 7656(of)s +7920(one)s 8315(page,)s 8867(or)s 0 9240(what)m 525(if)s +742(one)s 1144(lies)s 1526(within)s 220 fnt2 2194 9237(90d @Rotate)m +240 fnt1 3482 9240(?)m 480 8866(The)m 908(truth)s 1416(is)s +1626(that)s 220 fnt2 2044 8863(/)m 240 fnt1 2168 8866(causes)m +2843(all)s 3136(the)s 3484(objects)s 4212(that)s 4630(share)s +5190(a)s 5356(mark)s 5908(to)s 6147(ha)s 4(v)k 3(e)k +6648(equal)s 7221(width:)s 1701 1360 567 1360 240 288 60 480 7166 LoutGr2 grestore save gsave 200 dict begin lfigdict begin grestore 1701 1360 567 1360 240 288 60 0 0 LoutGr2 @@ -7314,46 +7470,47 @@ grestore end end restore grestore -0 6714(This)m 495(is)s 724(a)s 909(consequence)s 2207(of)s -2497(the)s 2864(`as)s 3212(wide)s 3753(as)s 4022(possible')s -4937(rule)s 5383(\(Section)s 6255(2.6\).)s 6817(Mark)s 7415(alignment)s -8451(occurs)s 240 fnt6 0 6428(incidentally)m 240 fnt1 1124 6426(,)m -1231(whene)s 6(v)k 3(er)k 2212(the)s 2560(fragments)s -3566(are)s 3913(placed)s 4595(into)s 5020(similar)s 5742(conte)s 3(xts.)k -480 6052(In)m 723(this)s 1106(connection)s 2200(we)s 2521(must)s -3033(also)s 3458(consider)s 4315(the)s 4649(special)s 5354(case)s -5808(of)s 6066(a)s 220 fnt2 6218 6049(@Galle)m 4(y)k -240 fnt1 7103 6052(symbol)m 7850(which)s 8478(shares)s 0 5764(its)m -276(column)s 1051(mark)s 1603(with)s 2085(some)s 2646(other)s -3197(object:)s 220 fnt2 480 5263(@Galle)m 4(y)k 480 4975(/0.2c)m -480 4687(@SomethingList)m 240 fnt1 0 4188(\(The)m 220 fnt2 501 4185(@Galle)m 4(y)k -240 fnt1 1392 4188(may)m 1851(or)s 2104(may)s 2563(not)s -2922(occup)s 2(y)k 3660(an)s 3936(entire)s 4528(component;)s -5698(that)s 6109(doesn')s 4(t)k 6862(matter)s 7525(here.\))s -8177(If)s 8400(incom)s 8998(-)s 0 3900(ing)m 355(components)s -1559(are)s 1901(separated)s 2857(by)s 220 fnt2 3147 3897(//)m -240 fnt1 3327 3900(rather)m 3939(than)s 4404(by)s 220 fnt2 -4693 3897(/)m 240 fnt1 4757 3900(,)m 4860(the)s 5204(meaning)s -6076(is)s 6282(so)s 6544(doubtful)s 7405(that)s 7819(this)s -8211(is)s 8416(forbid)s 8998(-)s 0 3612(den.)m 496(In)s -738(f)s 2(act,)k 1186(a)s 1337(g)s 1(alle)k 3(y)k -1957(whose)s 2611(components)s 3804(replace)s 4535(such)s 5017(a)s -220 fnt2 5168 3609(@Galle)m 4(y)k 240 fnt1 6052 3612(must)m -6563(ha)s 4(v)k 3(e)k 7049(a)s 7201(single)s -7814(column)s 8574(mark)s 0 3324(running)m 783(its)s 1043(full)s -1413(length;)s 2108(that)s 2510(is,)s 2760(its)s 3021(components)s -4213(must)s 4722(all)s 4999(share)s 5544(a)s 5694(single)s -6305(column)s 7065(mark.)s 7704(This)s 8164(mark)s 8700(will)s -0 3036(be)m 281(mer)s 4(ged)k 1050(with)s 1530(the)s -1876(column)s 2649(mark)s 3199(passing)s 3969(through)s 4769(each)s -220 fnt2 5262 3033(@Galle)m 4(y)k 240 fnt1 6158 3036(that)m -6574(these)s 7119(components)s 8325(replace;)s 0 2748(all)m 293(the)s -641(objects)s 1369(on)s 1666(the)s 2014(resulting)s 2903(mer)s 4(ged)k -3674(mark)s 4226(will)s 4652(ha)s 4(v)k 3(e)k -5153(equal)s 5726(width.)s 480 2374(The)m 906(root)s 1348(g)s 1(alle)k 3(y)k 15(,)k +0 6714(This)m 495(is)s 724(a)s +909(consequence)s 2207(of)s 2497(the)s 2864(`as)s 3212(wide)s +3753(as)s 4022(possible')s 4937(rule)s 5383(\(Section)s 6255(2.6\).)s +6817(Mark)s 7415(alignment)s 8451(occurs)s 240 fnt6 0 6428(incidentally)m +240 fnt1 1124 6426(,)m 1231(whene)s 6(v)k 3(er)k +2212(the)s 2560(fragments)s 3566(are)s 3913(placed)s 4595(into)s +5020(similar)s 5742(conte)s 3(xts.)k 480 6052(In)m 723(this)s +1106(connection)s 2200(we)s 2521(must)s 3033(also)s 3458(consider)s +4315(the)s 4649(special)s 5354(case)s 5808(of)s 6066(a)s +220 fnt2 6218 6049(@Galle)m 4(y)k 240 fnt1 7103 6052(symbol)m +7850(which)s 8478(shares)s 0 5764(its)m 276(column)s 1051(mark)s +1603(with)s 2085(some)s 2646(other)s 3197(object:)s 220 fnt2 +480 5263(@Galle)m 4(y)k 480 4975(/0.2c)m 480 4687(@SomethingList)m 240 fnt1 +0 4188(\(The)m 220 fnt2 501 4185(@Galle)m 4(y)k 240 fnt1 +1392 4188(may)m 1851(or)s 2104(may)s 2563(not)s 2922(occup)s 2(y)k +3660(an)s 3936(entire)s 4528(component;)s 5698(that)s 6109(doesn')s 4(t)k +6862(matter)s 7525(here.\))s 8177(If)s 8400(incom)s 8998(-)s +0 3900(ing)m 355(components)s 1559(are)s 1901(separated)s 2857(by)s +220 fnt2 3147 3897(//)m 240 fnt1 3327 3900(rather)m 3939(than)s +4404(by)s 220 fnt2 4693 3897(/)m 240 fnt1 4757 3900(,)m +4860(the)s 5204(meaning)s 6076(is)s 6282(so)s 6544(doubtful)s +7405(that)s 7819(this)s 8211(is)s 8416(forbid)s 8998(-)s +0 3612(den.)m 496(In)s 738(f)s 2(act,)k 1186(a)s +1337(g)s 1(alle)k 3(y)k 1957(whose)s 2611(components)s +3804(replace)s 4535(such)s 5017(a)s 220 fnt2 5168 3609(@Galle)m 4(y)k +240 fnt1 6052 3612(must)m 6563(ha)s 4(v)k 3(e)k +7049(a)s 7201(single)s 7814(column)s 8574(mark)s 0 3324(running)m +783(its)s 1043(full)s 1413(length;)s 2108(that)s 2510(is,)s +2760(its)s 3021(components)s 4213(must)s 4722(all)s 4999(share)s +5544(a)s 5694(single)s 6305(column)s 7065(mark.)s 7704(This)s +8164(mark)s 8700(will)s 0 3036(be)m 281(mer)s 4(ged)k +1050(with)s 1530(the)s 1876(column)s 2649(mark)s 3199(passing)s +3969(through)s 4769(each)s 220 fnt2 5262 3033(@Galle)m 4(y)k +240 fnt1 6158 3036(that)m 6574(these)s 7119(components)s 8325(replace;)s +0 2748(all)m 293(the)s 641(objects)s 1369(on)s 1666(the)s +2014(resulting)s 2903(mer)s 4(ged)k 3674(mark)s 4226(will)s +4652(ha)s 4(v)k 3(e)k 5153(equal)s 5726(width.)s +480 2374(The)m 906(root)s 1348(g)s 1(alle)k 3(y)k 15(,)k 2018(where)s 2655(e)s 6(v)k 3(erything)k 3720(collects)s 4497(immediately)s 5742(prior)s 6264(to)s 6500(output,)s -[ /Dest /LOUT16_4080_det_gall_6 /DEST pdfmark +[ /Dest /LOUT19_4213_det_gall_6 /DEST pdfmark 7217(is)s 7424(created)s 8168(automati)s 8998(-)s 0 2086(cally)m 15(,)k 556(not)s 921(by)s 1214(a)s 1379(de\207nition.)s 2459(Its)s @@ -7404,24 +7561,25 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -240 fnt6 1417 -1580(2.7.)m 1871(Galle)s 7(ys)k 2649(and)s -3075(tar)s 8(g)k 2(ets)k 240 fnt5 10249 -1583(29)m -gsave +240 fnt6 1417 -1580(2.7.)m +1871(Galle)s 7(ys)k 2649(and)s 3075(tar)s 8(g)k 2(ets)k +240 fnt5 10249 -1583(29)m gsave 1417 -15423 translate 240 fnt1 9066 13368 0 13368 240 288 60 LoutGraphic gsave 1 LoutMargSet grestore -0 13205(where)m 220 fnt2 639 13202(@P)m 8(ageList)k 240 fnt1 -1761 13205(e)m 3(xpands)k 2592(to)s 2830(a)s 2994(sequence)s -3925(of)s 4195(pages)s 4789(containing)s 220 fnt2 5850 13202(@T)m 26(e)k 6(xtPlace)k +0 13205(where)m 220 fnt2 +639 13202(@P)m 8(ageList)k 240 fnt1 1761 13205(e)m 3(xpands)k +2592(to)s 2830(a)s 2994(sequence)s 3925(of)s 4195(pages)s +4789(containing)s 220 fnt2 5850 13202(@T)m 26(e)k 6(xtPlace)k 240 fnt1 7067 13205(symbols)m 7914(\(see)s 8352(Section)s 0 12917(1.2\),)m 486(and)s 220 fnt2 890 12914(@T)m 26(e)k 6(xt)k 240 fnt1 1564 12917(is)m 1774(a)s 1940(g)s 1(alle)k 3(y:)k @@ -7447,7 +7605,7 @@ 2112(g)s 1(alle)k 3(y)k 2751(on)s 3054(the)s 3407(output)s 4085(\207le)s 4451(is)s 4666(some)s 6(what)k 5696(problematical,)s -[ /Dest /LOUT16_4080_det_gall_7 /DEST pdfmark +[ /Dest /LOUT19_4213_det_gall_7 /DEST pdfmark 7121(because)s 7940(Lout)s 8457(has)s 8833(no)s 0 8956(w)m 2(ay)k 461(of)s 742(kno)s 6(wing)k 1638(ho)s 6(w)k 2109(lar)s 4(ge)k 2648(the)s @@ -7465,9 +7623,9 @@ 1744(will)s 2198(promote)s 3079(a)s 3273(component)s 4425(only)s 4933(after)s 5457(an)s 3(y)k 5882(recepti)s 6(v)k 3(e)k 6832(symbols)s -[ /Dest /LOUT16_4080_det_gall_8 /DEST pdfmark +[ /Dest /LOUT19_4213_det_gall_8 /DEST pdfmark -[ /Dest /LOUT16_4080_det_gall_9 /DEST pdfmark +[ /Dest /LOUT19_4213_det_gall_9 /DEST pdfmark 7709(within)s 8405(it)s 8625(ha)s 4(v)k 3(e)k 0 7430(been)m 509(replaced,)s 1426(either)s 2029(by)s 2324(g)s 1(alle)k 3(ys)k 3048(or)s 3308(by)s 220 fnt2 3602 7427(@Null)m 240 fnt1 @@ -7501,7 +7659,7 @@ 5819(the)s 6156(g)s 1(alle)k 3(y)k 6778(concept,)s 7618(called)s 8235(a)s 240 fnt6 8389 5244(for)m 8(cing)k 0 4956(galle)m 7(y)k 240 fnt1 573 4954(,)m -[ /Dest /LOUT16_4080_det_gall_10 /DEST pdfmark +[ /Dest /LOUT19_4213_det_gall_10 /DEST pdfmark [ /Dest /LOUTforcing /DEST pdfmark 680(is)s @@ -7562,7 +7720,8 @@ grestore gsave 1417 -15423 translate -240 fnt1 0 0 0 0 240 288 60 LoutGraphic +240 fnt1 +0 0 0 0 240 288 60 LoutGraphic gsave 1 LoutMargSet grestore @@ -7599,46 +7758,47 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -240 fnt5 1417 -1583(30)m 240 fnt6 8674 -1580(Chapter)m 9524(2.)s -9798(Details)s gsave +240 fnt5 1417 -1583(30)m +240 fnt6 8674 -1580(Chapter)m 9524(2.)s 9798(Details)s gsave 1417 -15423 translate -240 fnt1 9066 13368 0 13259 240 288 60 LoutGraphic +240 fnt1 +9066 13368 0 13259 240 288 60 LoutGraphic gsave 0 LoutMargSet grestore -0 13205(g)m 1(alle)k 3(y)k 633(replaces)s -1464(its)s 220 fnt2 1738 13202(@Galle)m 4(y)k 240 fnt1 -2576 13205(.)m 2738(What)s 3315(really)s 3910(happens)s 4744(is)s -4952(that)s 5368(from)s 5891(this)s 6285(moment)s 7127(on)s -7422(Lout)s 7932(understands)s 0 12917(that)m 414(it)s 602(has)s -968(the)s 1311(right)s 1818(to)s 2053(mak)s 2(e)k -2621(these)s 3163(replacements,)s 4526(and)s 4926(it)s 5114(will)s -5535(do)s 5824(each)s 6315(one)s 6713(at)s 6940(the)s -7284(\207rst)s 7711(moment)s 8550(when)s 0 12629(not)m 369(doing)s -972(it)s 1168(w)s 2(ould)k 1827(hold)s 2315(things)s -2955(up.)s 3363(So)s 3673(there)s 4210(is)s 4423(a)s -4593(short)s 5135(period)s 5808(of)s 6083(grace)s 6660(when)s -7240(g)s 1(alle)k 3(ys,)k 8024(such)s 8524(as)s -8778(the)s 0 12341(entries)m 687(in)s 930(tables)s 1538(of)s -1809(contents)s 2657(just)s 3062(alluded)s 3824(to,)s 4117(can)s -4506(sneak)s 5112(into)s 5537(these)s 6084(recepti)s 6(v)k 3(e)k -7006(symbols.)s 480 11967(The)m 220 fnt2 902 11964(into)m 240 fnt1 -1302 11967(and)m 220 fnt2 1699 11964(f)m 6(orce into)k 240 fnt1 -2642 11967(forms)m 3243(are)s 3584(actually)s 4387(just)s 4786(abbre)s 6(viations)k -6112(for)s 6444(the)s 6785(true)s 7206(w)s 2(ay)k -7650(that)s 8062(g)s 1(alle)k 3(ys)k 8779(are)s -0 11679(de\207ned,)m 806(which)s 1442(is)s 1646(by)s 1934(gi)s 6(ving)k +0 13205(g)m 1(alle)k 3(y)k 633(replaces)s 1464(its)s +220 fnt2 1738 13202(@Galle)m 4(y)k 240 fnt1 2576 13205(.)m +2738(What)s 3315(really)s 3910(happens)s 4744(is)s 4952(that)s +5368(from)s 5891(this)s 6285(moment)s 7127(on)s 7422(Lout)s +7932(understands)s 0 12917(that)m 414(it)s 602(has)s 968(the)s +1311(right)s 1818(to)s 2053(mak)s 2(e)k 2621(these)s +3163(replacements,)s 4526(and)s 4926(it)s 5114(will)s 5535(do)s +5824(each)s 6315(one)s 6713(at)s 6940(the)s 7284(\207rst)s +7711(moment)s 8550(when)s 0 12629(not)m 369(doing)s 972(it)s +1168(w)s 2(ould)k 1827(hold)s 2315(things)s 2955(up.)s +3363(So)s 3673(there)s 4210(is)s 4423(a)s 4593(short)s +5135(period)s 5808(of)s 6083(grace)s 6660(when)s 7240(g)s 1(alle)k 3(ys,)k +8024(such)s 8524(as)s 8778(the)s 0 12341(entries)m 687(in)s +930(tables)s 1538(of)s 1809(contents)s 2657(just)s 3062(alluded)s +3824(to,)s 4117(can)s 4506(sneak)s 5112(into)s 5537(these)s +6084(recepti)s 6(v)k 3(e)k 7006(symbols.)s 480 11967(The)m +220 fnt2 902 11964(into)m 240 fnt1 1302 11967(and)m 220 fnt2 +1699 11964(f)m 6(orce into)k 240 fnt1 2642 11967(forms)m 3243(are)s +3584(actually)s 4387(just)s 4786(abbre)s 6(viations)k 6112(for)s +6444(the)s 6785(true)s 7206(w)s 2(ay)k 7650(that)s +8062(g)s 1(alle)k 3(ys)k 8779(are)s 0 11679(de\207ned,)m +806(which)s 1442(is)s 1646(by)s 1934(gi)s 6(ving)k 2586(the)s 2928(symbol)s 3682(that)s 4094(is)s 4297(to)s 4530(be)s 4806(a)s 4966(g)s 1(alle)k 3(y)k 5594(a)s 5753(parameter)s 6761(or)s 7014(nested)s -[ /Dest /LOUT16_4080_det_gall_11 /DEST pdfmark +[ /Dest /LOUT19_4213_det_gall_11 /DEST pdfmark 7677(de\207nition)s 8644(with)s 0 11391(the)m 348(special)s 1066(name)s 220 fnt2 1640 11388(@T)m 26(arget)k 240 fnt1 2467 11391(:)m 220 fnt2 @@ -7757,26 +7917,27 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -240 fnt6 1417 -1580(2.7.)m 1871(Galle)s 7(ys)k 2649(and)s -3075(tar)s 8(g)k 2(ets)k 240 fnt5 10256 -1583(31)m -gsave +240 fnt6 1417 -1580(2.7.)m +1871(Galle)s 7(ys)k 2649(and)s 3075(tar)s 8(g)k 2(ets)k +240 fnt5 10256 -1583(31)m gsave 1417 -15423 translate 240 fnt1 9066 13368 0 13259 240 288 60 LoutGraphic gsave 1 LoutMargSet grestore -480 13205(W)m 9(ithin)k 1197(a)s 1368(g)s 1(alle)k 3(y)k 15(,)k +480 13205(W)m 9(ithin)k +1197(a)s 1368(g)s 1(alle)k 3(y)k 15(,)k 2045(a)s 2216(symbol)s 2981(whose)s 3654(name)s 4233(is)s 220 fnt2 4448 13202(@Enclose)m 240 fnt1 5508 13205(has)m 5883(a)s 6054(special)s -[ /Dest /LOUT16_4080_det_gall_12 /DEST pdfmark +[ /Dest /LOUT19_4213_det_gall_12 /DEST pdfmark 6777(meaning:)s 7772(when)s 8353(compo)s 8998(-)s 0 12917(nents)m 556(of)s 827(the)s 1175(g)s 1(alle)k 3(y)k 1810(replace)s 2555(a)s 220 fnt2 2721 12914(@Galle)m 4(y)k @@ -7904,17 +8065,18 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -240 fnt5 1417 -1583(32)m 240 fnt6 8674 -1580(Chapter)m 9524(2.)s -9798(Details)s gsave +240 fnt5 1417 -1583(32)m +240 fnt6 8674 -1580(Chapter)m 9524(2.)s 9798(Details)s gsave 1417 -15423 translate -240 fnt1 9066 13368 0 13264 240 288 60 LoutGraphic +240 fnt1 +9066 13368 0 13264 240 288 60 LoutGraphic gsave 0 LoutMargSet grestore @@ -7937,13 +8099,13 @@ 674(order)s 13(.)k 1324(T)s 19(o)k 1618(mak)s 2(e)k 2185(g)s 1(alle)k 3(ys)k 2903(appear)s 3595(in)s 3832(sorted)s 4469(order)s 9(,)k 5065(as)s -[ /Dest /LOUT16_4080_det_sort_1 /DEST pdfmark +[ /Dest /LOUT19_4213_det_sort_1 /DEST pdfmark 5310(is)s 5514(needed)s 6245(in)s 6482(bibliographies)s 7896(and)s 8294(inde)s 3(x)k 3(es,)k 0 9711(a)m 178(parameter)s 1205(or)s 1477(nested)s 2158(de\207nition)s 3145(with)s 3640(the)s 4000(special)s 4731(name)s 220 fnt2 5318 9708(@K)m 8(e)k 4(y)k -[ /Dest /LOUT16_4080_det_sort_2 /DEST pdfmark +[ /Dest /LOUT19_4213_det_sort_2 /DEST pdfmark 240 fnt1 5977 9711(is)m 6200(added)s 6843(to)s 7094(the)s 7455(g)s 1(alle)k 3(y)k 8102(de\207nition,)s 0 9423(lik)m 2(e)k 412(this:)s 220 fnt2 @@ -8039,147 +8201,148 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -240 fnt6 1417 -1580(2.8.)m 1871(Sorted)s 2562(galle)s 7(ys)k -240 fnt5 10250 -1583(33)m gsave +240 fnt6 1417 -1580(2.8.)m +1871(Sorted)s 2562(galle)s 7(ys)k 240 fnt5 10250 -1583(33)m +gsave 1417 -15423 translate 240 fnt1 9066 13368 0 13264 240 288 60 LoutGraphic gsave 1 LoutMargSet grestore -220 fnt2 480 13207(def @Merge left x r)m -3(ight y)k -480 12919({)m 480 12631( { x @Rump { x @Meld y } } @Case)m 480 12343( {)m 480 12055( "" @Y)m 4(ield x)k -480 11767( else @Y)m 4(ield { { x{@OneCol ,} } @Meld y })k 480 11479( })m 480 10903(})m 240 fnt1 -0 10409(The)m 220 fnt2 428 10406(@Rump)m 240 fnt1 1288 10409(and)m -220 fnt2 1693 10406(@Meld)m 240 fnt1 2439 10409(symbols)m 3288(are)s -3636(the)s 3984(subject)s 4721(of)s 4993(Section)s 5767(3.24;)s -6299(and)s 6704(a)s 6870(detailed)s 7684(e)s 3(xplanation)k -8855(of)s 0 10121(ho)m 6(w)k 458(this)s 850(de\207nition)s -1820(w)s 2(orks)k 2450(is)s 2656(the)s 3000(subject)s -3733(of)s 4000(Section)s 4771(4.6.)s 5231(Our)s 5659(only)s -6135(problem)s 6988(is)s 7194(that)s 7608(this)s 8000(symbol)s -8756(has)s 0 9833(to)m 239(be)s 521(applied)s 1283(to)s -1522(tw)s 2(o)k 1932(g)s 1(alle)k 3(ys)k +220 fnt2 480 13207(def @Merge left x r)m -3(ight y)k 480 12919({)m +480 12631( { x @Rump { x @Meld y } } @Case)m 480 12343( {)m 480 12055( "" @Y)m 4(ield x)k 480 11767( else @Y)m 4(ield { { x{@OneCol ,} } @Meld y })k +480 11479( })m 480 10903(})m 240 fnt1 0 10407(The)m 220 fnt2 +428 10404(@Rump)m 240 fnt1 1288 10407(and)m 220 fnt2 1693 10404(@Meld)m +240 fnt1 2439 10407(symbols)m 3288(are)s 3636(the)s 3984(subject)s +4721(of)s 4993(Section)s 5767(3.25;)s 6299(and)s 6704(a)s +6870(detailed)s 7684(e)s 3(xplanation)k 8855(of)s 0 10119(ho)m 6(w)k +458(this)s 850(de\207nition)s 1820(w)s 2(orks)k 2450(is)s +2656(the)s 3000(subject)s 3733(of)s 4000(Section)s 4771(4.6.)s +5231(Our)s 5659(only)s 6135(problem)s 6988(is)s 7194(that)s +7608(this)s 8000(symbol)s 8756(has)s 0 9831(to)m 239(be)s +521(applied)s 1283(to)s 1522(tw)s 2(o)k 1932(g)s 1(alle)k 3(ys)k 2656(from)s 3180(widely)s 3885(separated)s 4845(parts)s 5360(of)s -5631(the)s 5979(document.)s 480 9459(Lout)m 993(mak)s 2(es)k +5631(the)s 5979(document.)s 480 9457(Lout)m 993(mak)s 2(es)k 1654(this)s 2052(possible)s 2893(by)s 3189(the)s 3538(follo)s 6(wing)k 4517(special)s 5236(rule:)s 5775(if)s 5993(a)s 6161(sorted)s 6804(g)s 1(alle)k 3(y)k 7440(contains)s 8289(a)s -8457(nested)s 0 9171(de\207nition)m 965(of)s 1227(a)s 1383(symbol)s -2134(whose)s 2793(name)s 3357(is)s 220 fnt2 3558 9168(@Merge)m -240 fnt1 4446 9171(\()m 220 fnt2 4519 9168(@Merge)m 240 fnt1 -5406 9171(must)m 5922(ha)s 4(v)k 3(e)k 6414(just)s +8457(nested)s 0 9169(de\207nition)m 965(of)s 1227(a)s 1383(symbol)s +2134(whose)s 2793(name)s 3357(is)s 220 fnt2 3558 9166(@Merge)m +240 fnt1 4446 9169(\()m 220 fnt2 4519 9166(@Merge)m 240 fnt1 +5406 9169(must)m 5922(ha)s 4(v)k 3(e)k 6414(just)s 6809(tw)s 2(o)k 7210(parameters,)s 8355(left)s 8722(and)s -0 8883(right\),)m -[ /Dest /LOUT16_4080_det_sort_3 /DEST pdfmark +0 8881(right\),)m +[ /Dest /LOUT19_4213_det_sort_3 /DEST pdfmark 643(and)s 1054(if)s 1277(that)s 1702(sorted)s 2350(g)s 1(alle)k 3(y)k 2991(is)s 3207(preceded)s 4135(in)s 4384(the)s 4739(list)s 5096(of)s 5374(sorted)s 6022(g)s 1(alle)k 3(ys)k 6753(destined)s 7614(for)s -7959(some)s 8527(tar)s 4(get)k 0 8595(by)m 300(another)s +7959(some)s 8527(tar)s 4(get)k 0 8593(by)m 300(another)s 1084(sorted)s 1733(g)s 1(alle)k 3(y)k 2374(with)s 2863(the)s 3217(same)s 3771(k)s 2(e)k 3(y)k 15(,)k 4211(then)s 4687(rather)s 5310(than)s 5785(being)s 6377(discarded,)s 7407(the)s 7762(second)s 8492(g)s 1(alle)k 3(y)k -0 8307(is)m 210(mer)s 4(ged)k 981(into)s 1406(the)s -1754(\207rst)s 2185(using)s 2757(the)s 220 fnt2 3105 8304(@Merge)m -240 fnt1 4002 8307(symbol.)m 480 7933(The)m 909(natural)s 1629(thing)s +0 8305(is)m 210(mer)s 4(ged)k 981(into)s 1406(the)s +1754(\207rst)s 2185(using)s 2757(the)s 220 fnt2 3105 8302(@Merge)m +240 fnt1 4002 8305(symbol.)m 480 7931(The)m 909(natural)s 1629(thing)s 2175(to)s 2416(do)s 2711(when)s 3288(more)s 3837(than)s 4307(tw)s 2(o)k 4719(g)s 1(alle)k 3(ys)k 5445(ha)s 4(v)k 3(e)k 5947(the)s 6297(same)s 6845(k)s 2(e)k 3(y)k 7242(is)s 7454(to)s -7694(mer)s 4(ge)k 8345(the)s 8695(\207rst)s 0 7645(tw)m 2(o,)k +7694(mer)s 4(ge)k 8345(the)s 8695(\207rst)s 0 7643(tw)m 2(o,)k 477(then)s 959(mer)s 4(ge)k 1621(the)s 1982(third)s 2504(with)s 2999(the)s 3360(result)s 3963(of)s 4247(that,)s 4725(then)s 5207(the)s 5568(fourth)s 6222(with)s 6717(the)s 7078(result)s 7681(of)s 7965(that,)s 8443(and)s 8860(so)s -0 7357(on.)m 403(F)s 3(or)k 790(ef\207cienc)s 3(y)k +0 7355(on.)m 403(F)s 3(or)k 790(ef\207cienc)s 3(y)k 1781(reasons)s 2547(be)s 3(yond)k 3306(our)s 3684(scope)s 4283(here,)s 4799(Lout)s 5309(does)s 5797(the)s 6144(mer)s 4(ging)k 6988(in)s 7229(a)s 7393(dif)s 6(ferent)k 8266(order:)s -8934(it)s 0 7069(mer)m 4(ges)k 240 fnt6 736 7071(n)m -240 fnt1 909 7069(g)m 1(alle)k 3(ys)k 1632(by)s +8934(it)s 0 7067(mer)m 4(ges)k 240 fnt6 736 7069(n)m +240 fnt1 909 7067(g)m 1(alle)k 3(ys)k 1632(by)s 1925(mer)s 4(ging)k 2770(the)s 3116(\207rst)s 240 fnt4 -3592 7027(\353)m 240 fnt6 3685 7071(n)m 240 fnt4 3809 7063(/)m -3881(2)s 4006 7027(\373)m 240 fnt1 4197 7069(together)m 9(,)k -5077(then)s 5545(the)s 5892(last)s 240 fnt4 6327 7039(\351)m -240 fnt6 6420 7071(n)m 240 fnt4 6545 7063(/)m 6617(2)s -6741 7039(\371)m 240 fnt1 6933 7069(together)m 9(,)k 7813(then)s -8280(mer)s 4(ging)k 0 6781(the)m 334(result.)s 1014(Of)s -1323(course,)s 2040(if)s 2242(the)s 220 fnt2 2576 6778(@Merge)m -240 fnt1 3458 6781(symbol)m 4204(is)s 4399(associati)s 6(v)k 3(e)k +3592 7025(\353)m 240 fnt6 3685 7069(n)m 240 fnt4 3809 7061(/)m +3881(2)s 4006 7025(\373)m 240 fnt1 4197 7067(together)m 9(,)k +5077(then)s 5545(the)s 5892(last)s 240 fnt4 6327 7037(\351)m +240 fnt6 6420 7069(n)m 240 fnt4 6545 7061(/)m 6617(2)s +6741 7037(\371)m 240 fnt1 6933 7067(together)m 9(,)k 7813(then)s +8280(mer)s 4(ging)k 0 6779(the)m 334(result.)s 1014(Of)s +1323(course,)s 2040(if)s 2242(the)s 220 fnt2 2576 6776(@Merge)m +240 fnt1 3458 6779(symbol)m 4204(is)s 4399(associati)s 6(v)k 3(e)k 5480(this)s 5861(has)s 6217(the)s 6550(same)s 7083(ef)s 6(fect.)k -7768(The)s 8182(total)s 8646(time)s 0 6493(it)m 192(tak)s 2(es)k -733(to)s 972(mer)s 4(ge)k 240 fnt6 1622 6495(n)m -240 fnt1 1797 6493(g)m 1(alle)k 3(ys)k 2521(with)s +7768(The)s 8182(total)s 8646(time)s 0 6491(it)m 192(tak)s 2(es)k +733(to)s 972(mer)s 4(ge)k 240 fnt6 1622 6493(n)m +240 fnt1 1797 6491(g)m 1(alle)k 3(ys)k 2521(with)s 3004(equal)s 3578(k)s 2(e)k 3(ys)k 4063(is)s -240 fnt6 4274 6495(O)m 240 fnt4 4454 6487(\()m 167 fnt4 -4653 6587(2)m 240 fnt6 4539 6495(n)m 240 fnt4 4745 6487(\))m -240 fnt1 4871 6493(or)m 5131(some)s 6(what)k 6156(higher)s +240 fnt6 4274 6493(O)m 240 fnt4 4454 6485(\()m 167 fnt4 +4653 6585(2)m 240 fnt6 4539 6493(n)m 240 fnt4 4745 6485(\))m +240 fnt1 4871 6491(or)m 5131(some)s 6(what)k 6156(higher)s 6827(\(b)s 4(ut)k 7269(al)s 2(w)k 2(ays)k -7981(polynomial)s 0 6205(in)m 240 fnt6 238 6207(n)m 240 fnt1 -352 6205(\))m 475(depending)s 1521(on)s 1813(ho)s 6(w)k +7981(polynomial)s 0 6203(in)m 240 fnt6 238 6205(n)m 240 fnt1 +352 6203(\))m 475(depending)s 1521(on)s 1813(ho)s 6(w)k 2269(man)s 3(y)k 2846(times)s 3409(the)s 3752(parameters)s 4845(occur)s 5431(within)s 6094(the)s 6436(body)s 6965(of)s -220 fnt2 7231 6202(@Merge)m 240 fnt1 8068 6205(;)m 8175(to)s -8409(do)s 8697(it)s 8883(in)s 0 5917(the)m 348(natural)s +220 fnt2 7231 6200(@Merge)m 240 fnt1 8068 6203(;)m 8175(to)s +8409(do)s 8697(it)s 8883(in)s 0 5915(the)m 348(natural)s 1066(linear)s 1669(order)s 2233(w)s 2(ould)k 2888(tak)s 2(e)k -3340(Lout)s 3852(e)s 3(xponential)k 5020(time.)s 480 5543(F)m 3(or)k +3340(Lout)s 3852(e)s 3(xponential)k 5020(time.)s 480 5541(F)m 3(or)k 879(horrible)s 1702(reasons)s 2481(concerning)s 3608(making)s 4390(it)s 4593(possible)s 5444(to)s 5694(print)s 6216(reference)s 7170(lists)s -7616(sorted)s 8269(by)s 8574(point)s 0 5255(of)m 296(\207rst)s +7616(sorted)s 8269(by)s 8574(point)s 0 5253(of)m 296(\207rst)s 753(citation,)s 1602(the)s 1976(particular)s 2976(sort)s 3420(k)s 2(e)k 3(y)k -220 fnt2 3841 5252(??)m 240 fnt1 4157 5255(is)m 4393(treated)s +220 fnt2 3841 5250(??)m 240 fnt1 4157 5253(is)m 4393(treated)s 5126(dif)s 6(ferently)k 15(.)k 6302(If)s 6558(tw)s 2(o)k 6994(g)s 1(alle)k 3(ys)k 7744(ha)s 4(v)k 3(e)k 8271(this)s 8693(k)s 2(e)k 3(y)k 15(,)k -0 4967(according)m 1010(to)s 1264(the)s 1627(rules)s 2156(abo)s 3(v)k 3(e)k +0 4965(according)m 1010(to)s 1264(the)s 1627(rules)s 2156(abo)s 3(v)k 3(e)k 2793(either)s 3411(the)s 3773(second)s 4511(w)s 2(ould)k 5181(be)s 5477(discarded)s 6466(or)s 6740(else)s 7181(it)s 7388(w)s 2(ould)k 8058(be)s 8355(mer)s 4(ged)k -0 4679(with)m 485(the)s 836(\207rst.)s 1374(Ho)s 6(we)k 6(v)k 3(er)k 9(,)k +0 4677(with)m 485(the)s 836(\207rst.)s 1374(Ho)s 6(we)k 6(v)k 3(er)k 9(,)k 2337(for)s 2678(this)s 3077(particular)s 4054(k)s 2(e)k 3(y)k 4452(only)s 15(,)k 4973(the)s 5324(tw)s 2(o)k 5737(g)s 1(alle)k 3(ys)k 6464(will)s 6893(in)s 7139(f)s 2(act)k 7557(be)s 7842(k)s 2(ept)k -8316(distinct,)s 0 4391(just)m 405(as)s 655(though)s 1378(their)s +8316(distinct,)s 0 4389(just)m 405(as)s 655(though)s 1378(their)s 1875(sort)s 2293(k)s 2(e)k 3(ys)k 2778(had)s -3182(been)s 3691(dif)s 6(ferent.)k 240 fnt5 0 3598(2.9.)m +3182(been)s 3691(dif)s 6(ferent.)k 240 fnt5 0 3596(2.9.)m 471(Horizontal)s 1628(galleys)s [ /Dest /LOUThorizontal /DEST pdfmark -240 fnt1 480 3121(All)m 846(the)s +240 fnt1 480 3119(All)m 846(the)s 1201(g)s 1(alle)k 3(ys)k 1932(so)s 2205(f)s 2(ar)k 2534(ha)s 4(v)k 3(e)k 3042(been)s 240 fnt6 -3557 3123(vertical)m 4353(galle)s 7(ys)k 240 fnt1 5018 3121(:)m +3557 3121(vertical)m 4353(galle)s 7(ys)k 240 fnt1 5018 3119(:)m 5191(g)s 1(alle)k 3(ys)k 5922(whose)s 6597(components)s -7812(are)s 8166(separated)s 0 2833(by)m 320(v)s 3(ertical)k +7812(are)s 8166(separated)s 0 2831(by)m 320(v)s 3(ertical)k 1114(concatenation)s 2525(symbols.)s 3514(There)s 4154(are)s 4527(also)s 4992(horizontal)s 6043(g)s 1(alle)k 3(ys,)k 6849(whose)s -7544(components)s 8779(are)s 0 2545(separated)m 951(by)s 1235(the)s -1574(horizontal)s 2588(concatenation)s 3963(operator)s 220 fnt2 4810 2542(&)m -240 fnt1 5002 2545(\(or)m 5331(equi)s 6(v)k 6(alently)k 15(,)k +7544(components)s 8779(are)s 0 2543(separated)m 951(by)s 1235(the)s +1574(horizontal)s 2588(concatenation)s 3963(operator)s 220 fnt2 4810 2540(&)m +240 fnt1 5002 2543(\(or)m 5331(equi)s 6(v)k 6(alently)k 15(,)k 6583(by)s 6867(spaces\).)s 7725(These)s 8342(w)s 2(ork)k -8883(in)s 0 2257(the)m 346(same)s 891(w)s 2(ay)k +8883(in)s 0 2255(the)m 346(same)s 891(w)s 2(ay)k 1340(as)s 1588(v)s 3(ertical)k 2353(g)s 1(alle)k 3(ys,)k 3131(e)s 3(xcept)k 3810(for)s 4146(the)s 4492(change)s 5224(of)s 5493(direction.)s 6504(F)s 3(or)k 6891(e)s 3(xample,)k -7803(the)s 8149(follo)s 6(wing)k 0 1969(de\207nes)m 730(the)s +7803(the)s 8149(follo)s 6(wing)k 0 1967(de\207nes)m 730(the)s 1079(equi)s 6(v)k 6(alent)k 2124(of)s 2396(an)s 2681(ordinary)s 3546(outdented)s 4549(paragraph,)s 5613(e)s 3(xcept)k 6295(that)s 6715(an)s 6999(option)s 7669(is)s 7880(pro)s 3(vided)k -8788(for)s 0 1681(v)m 6(arying)k 778(the)s 1126(size)s -1553(of)s 1824(the)s 2172(outdent:)s 220 fnt2 480 1180(def @OutdentP)m 8(ar)k -480 892( named outdent { 2f })m 480 604( r)m -3(ight x)k 480 316({)m +8788(for)s 0 1679(v)m 6(arying)k 778(the)s 1126(size)s +1553(of)s 1824(the)s 2172(outdent:)s 220 fnt2 480 1178(def @OutdentP)m 8(ar)k +480 890( named outdent { 2f })m 480 602( r)m -3(ight x)k 480 314({)m grestore gsave 1417 -15423 translate -240 fnt1 0 0 0 0 240 288 60 LoutGraphic +240 fnt1 +0 0 0 0 240 288 60 LoutGraphic gsave 1 LoutMargSet grestore @@ -8216,23 +8379,24 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -240 fnt5 1417 -1583(34)m 240 fnt6 8674 -1580(Chapter)m 9524(2.)s -9798(Details)s gsave +240 fnt5 1417 -1583(34)m +240 fnt6 8674 -1580(Chapter)m 9524(2.)s 9798(Details)s gsave 1417 -15423 translate -240 fnt1 9066 13368 0 13264 240 288 60 LoutGraphic +240 fnt1 +9066 13368 0 13264 240 288 60 LoutGraphic gsave 0 LoutMargSet grestore -220 fnt2 480 13207( def @P)m 8(arPlace { @Galle)k 4(y })k -480 12631( def @LineList)m 480 12343( {)m 480 12055( outdent @Wide {} | @P)m 26(Adjust @P)k 8(arPlace)k -480 11767( //1vx @LineList)m 480 11479( })m 480 10903( def @P)m 8(arGalle)k 4(y f)k 6(orce hor)k -3(iz)k 3(ontally into { @P)k 8(arPlace&&preceding })k +220 fnt2 480 13207( def @P)m 8(arPlace { @Galle)k 4(y })k 480 12631( def @LineList)m +480 12343( {)m 480 12055( outdent @Wide {} | @P)m 26(Adjust @P)k 8(arPlace)k 480 11767( //1vx @LineList)m +480 11479( })m 480 10903( def @P)m 8(arGalle)k 4(y f)k 6(orce hor)k -3(iz)k 3(ontally into { @P)k 8(arPlace&&preceding })k 480 10615( r)m -3(ight x)k 480 10327( {)m 480 10039( x)m 480 9751( })m 480 9175( @P)m 26(Adjust @P)k 8(arPlace)k 480 8887( // @P)m 8(arGalle)k 4(y { x &1r)k -8(t })k 480 8599( //1vx @LineList)m 480 8311(})m 240 fnt1 0 7817(Notice)m 703(the)s @@ -8371,28 +8535,28 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -240 fnt6 1417 -1580(2.9.)m 1871(Horizontal)s 2968(galle)s 7(ys)k -240 fnt5 10250 -1583(35)m gsave +240 fnt6 1417 -1580(2.9.)m +1871(Horizontal)s 2968(galle)s 7(ys)k 240 fnt5 10250 -1583(35)m +gsave 1417 -15423 translate 240 fnt1 9066 13368 0 13259 240 288 60 LoutGraphic gsave 1 LoutMargSet grestore -0 13205(so)m 256(in)s 488(practice)s -1288(w)s 2(ould)k 1932(be)s 2203(too)s 2551(slo)s 6(w)k -3040(and)s 3433(w)s 2(ould)k 4077(lead)s 4522(to)s -4750(e)s 3(xcessi)k 6(v)k 3(e)k 5699(clumsiness)s -6788(in)s 7020(notation,)s 7900(so)s 8155(at)s 8376(present)s -0 12917(Lout)m 509(has)s 876(tw)s 2(o)k 1282(competing)s -2342(mechanisms)s 3572(in)s 3811(this)s 4204(area:)s 4764(the)s -5108(b)s 4(uilt-in)k 5861(paragraph)s 6871(break)s 2(er)k +0 13205(so)m 256(in)s 488(practice)s 1288(w)s 2(ould)k +1932(be)s 2203(too)s 2551(slo)s 6(w)k 3040(and)s +3433(w)s 2(ould)k 4077(lead)s 4522(to)s 4750(e)s 3(xcessi)k 6(v)k 3(e)k +5699(clumsiness)s 6788(in)s 7020(notation,)s 7900(so)s 8155(at)s +8376(present)s 0 12917(Lout)m 509(has)s 876(tw)s 2(o)k +1282(competing)s 2342(mechanisms)s 3572(in)s 3811(this)s 4204(area:)s +4764(the)s 5108(b)s 4(uilt-in)k 5861(paragraph)s 6871(break)s 2(er)k 7641(with)s 8120(its)s 8392(limited)s 0 12629(set)m 314(of)s 573(options)s 1318(as)s 1556(gi)s 6(v)k 3(en)k 2124(under)s 2718(the)s 220 fnt2 3054 12626(@Break)m 240 fnt1 @@ -8418,7 +8582,7 @@ 1817(in)s 2077(Section)s 2869(2.7,)s 3294(the)s 3659(components)s 4885(of)s 5174(a)s 5357(g)s 1(alle)k 3(y)k -[ /Dest /LOUT16_4080_det_opti_1 /DEST pdfmark +[ /Dest /LOUT19_4213_det_opti_1 /DEST pdfmark 6009(are)s 6373(promoted)s 7366(one)s 7786(by)s 8097(one)s 8517(into)s 8960(a)s 0 9919(tar)m 4(get.)k 703(When)s 1332(space)s 1919(runs)s 2382(out)s 2748(there,)s 3332(the)s @@ -8455,7 +8619,7 @@ 240 fnt1 4599 7069(whose)m 5290(v)s 6(alue)k 5880(is)s 220 fnt2 6112 7066(Y)m 30(es)k 240 fnt1 6453 7069(.)m 6639(Lik)s 2(e)k 7153(cross)s 7717(referencing,)s -[ /Dest /LOUT16_4080_det_opti_2 /DEST pdfmark +[ /Dest /LOUT19_4213_det_opti_2 /DEST pdfmark 8934(it)s 0 6781(tak)m 2(es)k 539(tw)s 2(o)k 947(runs)s 1409(to)s 1646(ha)s 4(v)k 3(e)k 2145(ef)s 6(fect.)k @@ -8527,7 +8691,7 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore @@ -8537,60 +8701,61 @@ 9066 13448 0 13448 240 288 60 1417 -14865 LoutGr2 0 LoutMargSet grestore -480 fnt5 0 12397(Chapter)m 1819(3.)s 2400(Pr)s 8(ede\207ned)k -4711(symbols)s +480 fnt5 0 12397(Chapter)m +1819(3.)s 2400(Pr)s 8(ede\207ned)k 4711(symbols)s [ /Dest /LOUTsymbols /DEST pdfmark -240 fnt5 0 11133(3.1.)m 471(@Begin)s 1335(and)s -1776(@End)s +240 fnt5 +0 11133(3.1.)m 471(@Begin)s 1335(and)s 1776(@End)s [ /Dest /LOUTbegin /DEST pdfmark -240 fnt1 480 10656(The)m 905(body)s 1435(of)s -1702(a)s 1864(symbol)s 220 fnt2 2620 10653(@Sym)m 240 fnt1 -3324 10656(may)m 3786(be)s 4064(enclosed)s 4955(in)s 220 fnt2 -5194 10653(@Begin)m 240 fnt1 6019 10656(and)m -[ /Dest /LOUT16_4080_pre_begi_1 /DEST pdfmark - -[ /Dest /LOUT16_4080_pre_begi_2 /DEST pdfmark -220 fnt2 6419 10653(@End)m -7076(@Sym)s 240 fnt1 7780 10656(instead)m 8511(of)s 8778(the)s -0 10368(more)m 547(usual)s 1107(braces:)s 220 fnt2 480 9917(def @Section)m -480 9629( named @Title {})m 480 9341( r)m -3(ight @Body)k 480 9053(@Begin)m 480 8765( @Title //2v @Body)m -480 8477(@End @Section)m 240 fnt1 0 8022(The)m 3(y)k 543(may)s -1009(also)s 1447(enclose)s 2220(the)s 2568(right)s 3079(or)s -3338(body)s 3872(parameter)s 4886(of)s 5157(a)s 5323(symbol)s -6083(in)s 9(v)k 4(ocation:)k 220 fnt2 480 7521(@Chapter)m -480 7233( @Title { Introduction })m 480 6945(@Begin)m 480 6657(This subject needs no introduction.)m 480 6369(@End @Chapter)m 240 fnt1 -0 5873(Apart)m 651(from)s 1222(their)s 1767(utility)s 2438(as)s -2735(documentation)s 4262(aids,)s 4801(these)s 5396(forms)s 6051(allo)s 6(w)k -6677(Basser)s 7422(Lout)s 7981(to)s 8268(pinpoint)s 0 5585(mismatched)m -1206(braces,)s 1915(which)s 2549(can)s 2930(otherwise)s 3908(create)s -4525(total)s 4996(ha)s 4(v)k 4(oc.)k 5716(F)s 3(or)k -6098(this)s 6486(reason,)s 7209(the)s 3(y)k 7664(should)s -8353(enclose)s 0 5297(the)m 339(major)s 946(parts)s 1451(of)s -1712(documents,)s 2846(such)s 3333(as)s 3573(chapters)s 4410(and)s -4804(sections.)s 5728(Note)s 6240(that)s 6648(braces)s 7299(cannot)s -7987(be)s 8259(replaced)s 0 5009(by)m 220 fnt2 294 5006(@Begin)m -240 fnt1 1123 5009(and)m 220 fnt2 1527 5006(@End)m 240 fnt1 -2188 5009(in)m 2431(general.)s 240 fnt5 0 4216(3.2.)m 471(Concatenation)s -2015(symbols)s 2893(and)s 3334(paragraphs)s +240 fnt1 +480 10656(The)m 905(body)s 1435(of)s 1702(a)s 1864(symbol)s +220 fnt2 2620 10653(@Sym)m 240 fnt1 3324 10656(may)m 3786(be)s +4064(enclosed)s 4955(in)s 220 fnt2 5194 10653(@Begin)m 240 fnt1 +6019 10656(and)m +[ /Dest /LOUT19_4213_pre_begi_1 /DEST pdfmark + +[ /Dest /LOUT19_4213_pre_begi_2 /DEST pdfmark +220 fnt2 6419 10653(@End)m 7076(@Sym)s 240 fnt1 +7780 10656(instead)m 8511(of)s 8778(the)s 0 10368(more)m 547(usual)s +1107(braces:)s 220 fnt2 480 9917(def @Section)m 480 9629( named @Title {})m 480 9341( r)m -3(ight @Body)k +480 9053(@Begin)m 480 8765( @Title //2v @Body)m 480 8477(@End @Section)m 240 fnt1 0 8022(The)m 3(y)k +543(may)s 1009(also)s 1447(enclose)s 2220(the)s 2568(right)s +3079(or)s 3338(body)s 3872(parameter)s 4886(of)s 5157(a)s +5323(symbol)s 6083(in)s 9(v)k 4(ocation:)k 220 fnt2 +480 7521(@Chapter)m 480 7233( @Title { Introduction })m 480 6945(@Begin)m 480 6657(This subject needs no introduction.)m 480 6369(@End @Chapter)m +240 fnt1 0 5873(Apart)m 651(from)s 1222(their)s 1767(utility)s +2438(as)s 2735(documentation)s 4262(aids,)s 4801(these)s 5396(forms)s +6051(allo)s 6(w)k 6677(Basser)s 7422(Lout)s 7981(to)s +8268(pinpoint)s 0 5585(mismatched)m 1206(braces,)s 1915(which)s 2549(can)s +2930(otherwise)s 3908(create)s 4525(total)s 4996(ha)s 4(v)k 4(oc.)k +5716(F)s 3(or)k 6098(this)s 6486(reason,)s 7209(the)s 3(y)k +7664(should)s 8353(enclose)s 0 5297(the)m 339(major)s 946(parts)s +1451(of)s 1712(documents,)s 2846(such)s 3333(as)s 3573(chapters)s +4410(and)s 4804(sections.)s 5728(Note)s 6240(that)s 6648(braces)s +7299(cannot)s 7987(be)s 8259(replaced)s 0 5009(by)m 220 fnt2 +294 5006(@Begin)m 240 fnt1 1123 5009(and)m 220 fnt2 1527 5006(@End)m +240 fnt1 2188 5009(in)m 2431(general.)s 240 fnt5 0 4216(3.2.)m +471(Concatenation)s 2015(symbols)s 2893(and)s 3334(paragraphs)s [ /Dest /LOUTconcatenation /DEST pdfmark -240 fnt1 480 3739(There)m -1093(are)s 1440(ten)s 1789(concatenation)s 3174(symbols,)s 4079(in)s -4322(three)s 4855(f)s 2(amilies:)k -[ /Dest /LOUT16_4080_pre_conc_1 /DEST pdfmark -220 fnt2 480 3198(/)m -962(^/)s 1547(//)s 2012(^//)s 240 fnt1 2580 3201(V)m 26(ertical)k -3377(concatenation)s 220 fnt2 480 2910(|)m 962(^|)s 1547(||)s -2012(^||)s 240 fnt1 2580 2913(Horizontal)m 3657(concatenation)s 220 fnt2 -480 2622(&)m 962(^&)s 240 fnt1 2580 2625(In-paragraph)m 3871(concatenation)s -0 2084(Each)m 587(symbol)s 1399(produces)s 2367(an)s 2702(object)s -3398(which)s 4093(combines)s 5113(together)s 6008(the)s 6409(tw)s 2(o)k -6871(parameters.)s 8134(The)s 8615(right)s 0 1796(parameter)m 1014(must)s -1539(be)s 1821(separated)s 2781(from)s 3305(the)s 3653(symbol)s -4413(by)s 4707(at)s 4939(least)s 5436(one)s 5838(white)s -6425(space)s 7012(character)s 13(.)k 480 1422(The)m 906(v)s 3(ertical)k -1670(concatenation)s 3052(symbol)s 220 fnt2 3809 1419(/)m 240 fnt1 -3930 1422(places)m 4575(its)s 4848(left)s 5222(parameter)s -[ /Dest /LOUT16_4080_pre_conc_2 /DEST pdfmark +240 fnt1 +480 3739(There)m 1093(are)s 1440(ten)s 1789(concatenation)s 3174(symbols,)s +4079(in)s 4322(three)s 4855(f)s 2(amilies:)k +[ /Dest /LOUT19_4213_pre_conc_1 /DEST pdfmark +220 fnt2 +480 3198(/)m 962(^/)s 1547(//)s 2012(^//)s 240 fnt1 +2580 3201(V)m 26(ertical)k 3377(concatenation)s 220 fnt2 480 2910(|)m +962(^|)s 1547(||)s 2012(^||)s 240 fnt1 2580 2913(Horizontal)m +3657(concatenation)s 220 fnt2 480 2622(&)m 962(^&)s 240 fnt1 +2580 2625(In-paragraph)m 3871(concatenation)s 0 2084(Each)m 587(symbol)s 1399(produces)s +2367(an)s 2702(object)s 3398(which)s 4093(combines)s 5113(together)s +6008(the)s 6409(tw)s 2(o)k 6871(parameters.)s 8134(The)s +8615(right)s 0 1796(parameter)m 1014(must)s 1539(be)s 1821(separated)s +2781(from)s 3305(the)s 3653(symbol)s 4413(by)s 4707(at)s +4939(least)s 5436(one)s 5838(white)s 6425(space)s 7012(character)s 13(.)k +480 1422(The)m 906(v)s 3(ertical)k 1670(concatenation)s 3052(symbol)s +220 fnt2 3809 1419(/)m 240 fnt1 3930 1422(places)m 4575(its)s +4848(left)s 5222(parameter)s +[ /Dest /LOUT19_4213_pre_conc_2 /DEST pdfmark 6233(abo)s 3(v)k 3(e)k 6852(its)s 7125(right)s 7633(parameter)s 8644(with)s 0 1134(their)m 519(column)s 1317(marks)s 1975(aligned.)s 2866(If)s 3119(one)s @@ -8604,7 +8769,7 @@ 1908(concatenation)s 3280(symbols)s 220 fnt2 4117 181(|)m 240 fnt1 4201 184(and)m 220 fnt2 4593 181(||)m 240 fnt1 4734 184(are)m 5069(horizontal)s -[ /Dest /LOUT16_4080_pre_conc_3 /DEST pdfmark +[ /Dest /LOUT19_4213_pre_conc_3 /DEST pdfmark 6080(analogues)s 7076(of)s 220 fnt2 7334 181(/)m 240 fnt1 7446 184(and)m 220 fnt2 7837 181(//)m 240 fnt1 7962 184(:)m 8116(the)s 3(y)k 8566(place)s @@ -8646,29 +8811,30 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -240 fnt6 1417 -1580(3.2.)m 1871(Concatenation)s 3335(symbols)s 4161(and)s -4587(par)s 3(a)k 2(gr)k 3(aphs)k 240 fnt5 -10248 -1583(37)m gsave +240 fnt6 1417 -1580(3.2.)m +1871(Concatenation)s 3335(symbols)s 4161(and)s 4587(par)s 3(a)k 2(gr)k 3(aphs)k +240 fnt5 10248 -1583(37)m gsave 1417 -15423 translate 240 fnt1 9066 13368 0 13259 240 288 60 LoutGraphic gsave 1 LoutMargSet grestore -0 13205(their)m 488(tw)s 2(o)k 888(parameters)s -1976(side)s 2407(by)s 2692(side,)s 3174(with)s 3646(ro)s 6(w)k -4056(mark)s 4599(alignment)s 5605(or)s 5854(top-justi\207cation)s 7414(respecti)s 6(v)k 3(ely)k 15(.)k +0 13205(their)m 488(tw)s 2(o)k +888(parameters)s 1976(side)s 2407(by)s 2692(side,)s 3174(with)s +3646(ro)s 6(w)k 4056(mark)s 4599(alignment)s 5605(or)s +5854(top-justi\207cation)s 7414(respecti)s 6(v)k 3(ely)k 15(.)k 8698(The)s -[ /Dest /LOUT16_4080_pre_conc_4 /DEST pdfmark -55 12917(in-paragraph)m 1327(concatenation)s 2707(symbol)s 220 fnt2 -3461 12914(&)m 240 fnt1 3658 12917(produces)m 4567(horizontal)s 5586(concatenation)s -6965(within)s 7628(a)s 7788(paragraph;)s 8850(its)s 0 12629(special)m +[ /Dest /LOUT19_4213_pre_conc_4 /DEST pdfmark +0 12917(in-paragraph)m 1278(concatenation)s 2663(symbol)s 220 fnt2 +3423 12914(&)m 240 fnt1 3625 12917(produces)m 4540(horizontal)s 5564(concatenation)s +6949(within)s 7617(a)s 7783(paragraph;)s 8850(its)s 0 12629(special)m 718(properties)s 1724(are)s 2071(treated)s 2778(in)s 3021(detail)s 3606(at)s 3838(the)s 4186(end)s 4590(of)s 4861(this)s 5257(section.)s 480 12255(The)m 908(concatenation)s 2293(symbols)s 3142(in)s @@ -8707,16 +8873,16 @@ 938(mark)s 1494(is)s 1708(designated)s 2793(as)s 3047(the)s 240 fnt6 3398 9025(principal)m 4339(mark)s 240 fnt1 4835 9023(,)m 4946(usually)s 5695(the)s 6047(mark)s 6602(of)s -[ /Dest /LOUT16_4080_pre_conc_5 /DEST pdfmark +[ /Dest /LOUT19_4213_pre_conc_5 /DEST pdfmark 6877(the)s 7229(\207rst)s 7664(component.)s 8896(A)s 0 8735(later)m 486(mark)s 1042(can)s 1435(be)s 1721(chosen)s 2447(for)s 2789(this)s 3189(honour)s 3932(by)s 4230(attaching)s 220 fnt2 5163 8732(^)m 240 fnt1 5333 8735(to)m 5576(the)s 5928(preceding)s 6928(concatenation)s -8317(symbol.)s 0 8447(See)m 401(Section)s 1175(3.10)s 1650(for)s -1988(e)s 3(xamples.)k 480 8073(A)m 240 fnt6 712 8075(gap)m +8317(symbol.)s 0 8447(See)m 401(Section)s 1175(3.11)s 1630(for)s +1968(e)s 3(xamples.)k 480 8073(A)m 240 fnt6 712 8075(gap)m 240 fnt1 1065 8073(,)m -[ /Dest /LOUT16_4080_pre_conc_6 /DEST pdfmark +[ /Dest /LOUT19_4213_pre_conc_6 /DEST pdfmark 1175(specifying)s 2227(the)s 2578(distance)s 3420(between)s 4277(the)s 4627(tw)s 2(o)k 5040(parameters,)s 6197(may)s 6666(follo)s 6(w)k 7341(an)s 3(y)k @@ -8748,7 +8914,7 @@ 3966(mode)s 4548(plus)s 4992(an)s 5268(optional)s 6101(indication)s 7108(of)s 7373(unbreakability)s 15(.)k 8896(A)s 240 fnt6 0 4973(length)m -[ /Dest /LOUT16_4080_pre_conc_7 /DEST pdfmark +[ /Dest /LOUT19_4213_pre_conc_7 /DEST pdfmark 240 fnt1 659 4971(is)m 875(represented)s 2040(by)s 2341(an)s 2630(decimal)s 3447(number)s 4244(\(which)s 4972(may)s 5444(not)s 5816(be)s 6104(ne)s 3(g)k 1(ati)k 6(v)k 3(e\))k @@ -8759,29 +8925,29 @@ 7847(gi)s 6(v)k 3(es)k 8393(the)s 8740(full)s 0 4395(selection)m 906(of)s 1177(units)s 1693(of)s 1964(measurement.)s -[ /Dest /LOUT16_4080_pre_conc_8 /DEST pdfmark +[ /Dest /LOUT19_4213_pre_conc_8 /DEST pdfmark -[ /Dest /LOUT16_4080_pre_conc_9 /DEST pdfmark +[ /Dest /LOUT19_4213_pre_conc_9 /DEST pdfmark -[ /Dest /LOUT16_4080_pre_conc_10 /DEST pdfmark +[ /Dest /LOUT19_4213_pre_conc_10 /DEST pdfmark -[ /Dest /LOUT16_4080_pre_conc_11 /DEST pdfmark +[ /Dest /LOUT19_4213_pre_conc_11 /DEST pdfmark -[ /Dest /LOUT16_4080_pre_conc_12 /DEST pdfmark +[ /Dest /LOUT19_4213_pre_conc_12 /DEST pdfmark -[ /Dest /LOUT16_4080_pre_conc_13 /DEST pdfmark +[ /Dest /LOUT19_4213_pre_conc_13 /DEST pdfmark -[ /Dest /LOUT16_4080_pre_conc_14 /DEST pdfmark +[ /Dest /LOUT19_4213_pre_conc_14 /DEST pdfmark -[ /Dest /LOUT16_4080_pre_conc_15 /DEST pdfmark +[ /Dest /LOUT19_4213_pre_conc_15 /DEST pdfmark -[ /Dest /LOUT16_4080_pre_conc_16 /DEST pdfmark +[ /Dest /LOUT19_4213_pre_conc_16 /DEST pdfmark -[ /Dest /LOUT16_4080_pre_conc_17 /DEST pdfmark +[ /Dest /LOUT19_4213_pre_conc_17 /DEST pdfmark 480 4021(After)m 1045(the)s 1396(length)s 2054(comes)s 2718(an)s 3004(optional)s 240 fnt6 3846 4023(gap)m 4261(mode)s 240 fnt1 4773 4021(,)m -[ /Dest /LOUT16_4080_pre_conc_18 /DEST pdfmark +[ /Dest /LOUT19_4213_pre_conc_18 /DEST pdfmark 4883(which)s 5528(is)s 5740(a)s 5909(single)s 6539(letter)s 7090(follo)s 6(wing)k 8070(the)s 8421(length,)s 0 3733(indicating)m 1031(ho)s 6(w)k 1514(the)s 1884(length)s @@ -8789,9 +8955,9 @@ 4801(sho)s 6(wn)k 5500(in)s 5765(Figure)s 6468(3.2,)s 6897(with)s 7401(edge-to-edge)s 8728(g)s 1(ap)k 0 3445(mode)m -[ /Dest /LOUT16_4080_pre_conc_19 /DEST pdfmark +[ /Dest /LOUT19_4213_pre_conc_19 /DEST pdfmark -[ /Dest /LOUT16_4080_pre_conc_20 /DEST pdfmark +[ /Dest /LOUT19_4213_pre_conc_20 /DEST pdfmark 603(the)s 967(length)s 240 fnt6 1638 3447(l)m 240 fnt1 1780 3445(is)m 2006(measured)s 2996(from)s 3536(the)s 3900(trailing)s 4658(edge)s 5181(of)s 5468(the)s 5832(\207rst)s 6279(object)s @@ -8801,24 +8967,24 @@ 4833 3154(e)m 240 fnt1 5005 3157(may)m 5469(be)s 5749(omitted.)s 6642(Hyphenation)s 7934(g)s 1(ap)k 8330(mode)s 8916(is)s -[ /Dest /LOUT16_4080_pre_conc_21 /DEST pdfmark +[ /Dest /LOUT19_4213_pre_conc_21 /DEST pdfmark -[ /Dest /LOUT16_4080_pre_conc_22 /DEST pdfmark -60 2869(similar)m 9(,)k 820(e)s 3(xcept)k 1501(as)s -1751(e)s 3(xplained)k 2736(at)s 2968(the)s 3316(end)s -3720(of)s 3991(this)s 4387(section.)s 480 2495(Mark-to-mark,)m -[ /Dest /LOUT16_4080_pre_conc_23 /DEST pdfmark +[ /Dest /LOUT19_4213_pre_conc_22 /DEST pdfmark +0 2869(similar)m 9(,)k 760(e)s 3(xcept)k 1441(as)s +1691(e)s 3(xplained)k 2676(at)s 2908(the)s 3256(end)s +3660(of)s 3931(this)s 4327(section.)s 480 2495(Mark-to-mark,)m +[ /Dest /LOUT19_4213_pre_conc_23 /DEST pdfmark -[ /Dest /LOUT16_4080_pre_conc_24 /DEST pdfmark +[ /Dest /LOUT19_4213_pre_conc_24 /DEST pdfmark 1957(o)s 3(v)k 3(erstrik)k 2(e,)k -[ /Dest /LOUT16_4080_pre_conc_25 /DEST pdfmark +[ /Dest /LOUT19_4213_pre_conc_25 /DEST pdfmark -[ /Dest /LOUT16_4080_pre_conc_26 /DEST pdfmark +[ /Dest /LOUT19_4213_pre_conc_26 /DEST pdfmark 3028(and)s 3450(k)s 2(erning)k -[ /Dest /LOUT16_4080_pre_conc_27 /DEST pdfmark +[ /Dest /LOUT19_4213_pre_conc_27 /DEST pdfmark -[ /Dest /LOUT16_4080_pre_conc_28 /DEST pdfmark +[ /Dest /LOUT19_4213_pre_conc_28 /DEST pdfmark 4249(measure)s 5118(the)s 5484(length)s 6156(from)s 6698(the)s 7063(last)s 7471(mark)s 8041(of)s 8329(the)s 8695(\207rst)s 0 2207(object)m 648(to)s @@ -8839,13 +9005,13 @@ 4673(other)s 5248(object;)s 5969(this)s 6389(mode)s 7001(is)s 7235(used)s 7756(for)s 8119(subscripts)s 0 1055(and)m 404(superscripts.)s -[ /Dest /LOUT16_4080_pre_conc_29 /DEST pdfmark +[ /Dest /LOUT19_4213_pre_conc_29 /DEST pdfmark -[ /Dest /LOUT16_4080_pre_conc_30 /DEST pdfmark +[ /Dest /LOUT19_4213_pre_conc_30 /DEST pdfmark -[ /Dest /LOUT16_4080_pre_conc_31 /DEST pdfmark +[ /Dest /LOUT19_4213_pre_conc_31 /DEST pdfmark -[ /Dest /LOUT16_4080_pre_conc_32 /DEST pdfmark +[ /Dest /LOUT19_4213_pre_conc_32 /DEST pdfmark 558 681(T)m 19(ab)k 4(ulation)k 1646(ignores)s 2419(the)s 2785(\207rst)s 3234(object)s 3896(and)s 4318(places)s 4984(the)s 5350(leading)s 6125(edge)s 6651(of)s 6940(the)s 7306(second)s @@ -8862,7 +9028,8 @@ grestore gsave 1417 -15423 translate -240 fnt1 0 0 0 0 240 288 60 LoutGraphic +240 fnt1 +0 0 0 0 240 288 60 LoutGraphic gsave 1 LoutMargSet grestore @@ -8899,15 +9066,16 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -240 fnt5 1417 -1583(38)m 240 fnt6 7498 -1580(Chapter)m 8348(3.)s -8622(Pr)s 8(ede\207ned)k 9717(symbols)s gsave +240 fnt5 1417 -1583(38)m +240 fnt6 7498 -1580(Chapter)m 8348(3.)s 8622(Pr)s 8(ede\207ned)k +9717(symbols)s gsave 1417 -15423 translate 240 fnt1 9066 13368 0 13368 240 288 60 LoutGraphic gsave @@ -8938,10 +9106,10 @@ grestore grestore -220 fnt2 170 13116(c)m -gsave +220 fnt2 170 13116(c)m gsave 339 13368 translate -240 fnt1 170 0 0 0 240 288 60 LoutGraphic +240 fnt1 +170 0 0 0 240 288 60 LoutGraphic gsave 0.5 pt ltabhs grestore @@ -8998,8 +9166,8 @@ grestore grestore -220 fnt2 170 12775(i)m 240 fnt1 -679 12778(Inches.)m 0 86 0 86 240 288 60 9066 12941 LoutGr2 +220 fnt2 +170 12775(i)m 240 fnt1 679 12778(Inches.)m 0 86 0 86 240 288 60 9066 12941 LoutGr2 0.5 pt ltabvs grestore @@ -9029,9 +9197,10 @@ grestore grestore -220 fnt2 170 12437(p)m 240 fnt1 679 12440(Points)m -1328(\()s 220 fnt2 1401 12437(72p)m 240 fnt1 1819 12440(=)m -220 fnt2 2007 12437(1i)m 240 fnt1 2163 12440(\).)m 0 86 0 86 240 288 60 9066 12603 LoutGr2 +220 fnt2 170 12437(p)m +240 fnt1 679 12440(Points)m 1328(\()s 220 fnt2 1401 12437(72p)m +240 fnt1 1819 12440(=)m 220 fnt2 2007 12437(1i)m 240 fnt1 +2163 12440(\).)m 0 86 0 86 240 288 60 9066 12603 LoutGr2 0.5 pt ltabvs grestore @@ -9061,10 +9230,9 @@ grestore grestore -220 fnt2 -170 12055(m)m 240 fnt1 679 12058(Ems)m 1155(\()s 220 fnt2 -1228 12055(12m)m 240 fnt1 1701 12058(=)m 220 fnt2 1889 12055(1i)m -240 fnt1 2045 12058(\).)m 0 86 0 86 240 288 60 9066 12220 LoutGr2 +220 fnt2 170 12055(m)m 240 fnt1 679 12058(Ems)m +1155(\()s 220 fnt2 1228 12055(12m)m 240 fnt1 1701 12058(=)m +220 fnt2 1889 12055(1i)m 240 fnt1 2045 12058(\).)m 0 86 0 86 240 288 60 9066 12220 LoutGr2 0.5 pt ltabvs grestore @@ -9094,15 +9262,15 @@ grestore grestore -220 fnt2 170 11678(f)m 240 fnt1 -679 11681(One)m 220 fnt2 1123 11678(f)m 240 fnt1 1229 11681(equals)m -1879(the)s 2215(size)s 2631(of)s 2890(the)s 3226(current)s -3950(font,)s 4431(as)s 4669(speci\207ed)s 5565(by)s 5847(the)s -220 fnt2 6184 11678(@F)m 6(ont)k 240 fnt1 6884 11681(symbol)m -7632(\(Section)s 8473(3.3\).)s 679 11393(This)m 1155(unit)s 1587(is)s -1797(appropriate)s 2941(for)s 3279(lengths)s 4021(that)s 4439(should)s -5136(change)s 5870(with)s 6352(the)s 6700(font)s 7145(size.)s -0 86 0 86 240 288 60 9066 11844 LoutGr2 +220 fnt2 +170 11678(f)m 240 fnt1 679 11681(One)m 220 fnt2 1123 11678(f)m +240 fnt1 1229 11681(equals)m 1879(the)s 2215(size)s 2631(of)s +2890(the)s 3226(current)s 3950(font,)s 4431(as)s 4669(speci\207ed)s +5565(by)s 5847(the)s 220 fnt2 6184 11678(@F)m 6(ont)k +240 fnt1 6884 11681(symbol)m 7632(\(Section)s 8473(3.3\).)s 679 11393(This)m +1155(unit)s 1587(is)s 1797(appropriate)s 2941(for)s 3279(lengths)s +4021(that)s 4439(should)s 5136(change)s 5870(with)s 6352(the)s +6700(font)s 7145(size.)s 0 86 0 86 240 288 60 9066 11844 LoutGr2 0.5 pt ltabvs grestore @@ -9132,14 +9300,15 @@ grestore grestore -220 fnt2 170 11003(s)m 240 fnt1 679 11006(One)m 220 fnt2 -1125 11003(s)m 240 fnt1 1279 11006(equals)m 1932(the)s 2271(preferred)s -3194(g)s 1(ap)k 3582(between)s 4427(tw)s 2(o)k -4828(w)s 2(ords)k 5453(in)s 5687(the)s 6025(current)s -6752(font,)s 7235(as)s 7476(speci\207ed)s 8375(in)s 8608(the)s -679 10718(de\207nition)m 1653(of)s 1924(the)s 2272(font,)s 2764(or)s -3023(by)s 3317(the)s 220 fnt2 3665 10715(@Space)m 240 fnt1 -4562 10718(symbol)m 5322(\(Section)s 6175(3.4\).)s 0 86 0 86 240 288 60 9066 11169 LoutGr2 +220 fnt2 170 11003(s)m 240 fnt1 +679 11006(One)m 220 fnt2 1125 11003(s)m 240 fnt1 1279 11006(equals)m +1932(the)s 2271(preferred)s 3194(g)s 1(ap)k 3582(between)s +4427(tw)s 2(o)k 4828(w)s 2(ords)k 5453(in)s +5687(the)s 6025(current)s 6752(font,)s 7235(as)s 7476(speci\207ed)s +8375(in)s 8608(the)s 679 10718(de\207nition)m 1653(of)s 1924(the)s +2272(font,)s 2764(or)s 3023(by)s 3317(the)s 220 fnt2 +3665 10715(@Space)m 240 fnt1 4562 10718(symbol)m 5322(\(Section)s 6175(3.4\).)s +0 86 0 86 240 288 60 9066 11169 LoutGr2 0.5 pt ltabvs grestore @@ -9169,17 +9338,16 @@ grestore grestore -220 fnt2 170 10328(v)m -240 fnt1 679 10331(One)m 220 fnt2 1149 10328(v)m 240 fnt1 -1334 10331(equals)m 2011(the)s 2375(current)s 3126(g)s 1(ap)k -3540(between)s 4410(lines)s 4927(introduced)s 6024(during)s 6717(paragraph)s -7746(breaking,)s 8706(as)s 679 10043(speci\207ed)m 1574(by)s 1854(the)s -220 fnt2 2188 10040(@Break)m 240 fnt1 3030 10043(symbol)m 3777(\(Section)s -4616(3.4\).)s 5145(This)s 5607(unit)s 6026(is)s 6222(appropriate)s -7352(for)s 7676(lengths,)s 8460(such)s 679 9755(as)m 929(the)s -1277(spaces)s 1952(between)s 2806(paragraphs,)s 3962(which)s 4604(should)s -5301(change)s 6035(with)s 6517(the)s 6865(inter)s 4(-line)k -7791(g)s 1(ap.)k 0 86 0 86 240 288 60 9066 10494 LoutGr2 +220 fnt2 170 10328(v)m 240 fnt1 679 10331(One)m 220 fnt2 +1149 10328(v)m 240 fnt1 1334 10331(equals)m 2011(the)s 2375(current)s +3126(g)s 1(ap)k 3540(between)s 4410(lines)s 4927(introduced)s +6024(during)s 6717(paragraph)s 7746(breaking,)s 8706(as)s 679 10043(speci\207ed)m +1574(by)s 1854(the)s 220 fnt2 2188 10040(@Break)m 240 fnt1 +3030 10043(symbol)m 3777(\(Section)s 4616(3.4\).)s 5145(This)s 5607(unit)s +6026(is)s 6222(appropriate)s 7352(for)s 7676(lengths,)s 8460(such)s +679 9755(as)m 929(the)s 1277(spaces)s 1952(between)s 2806(paragraphs,)s +3962(which)s 4604(should)s 5301(change)s 6035(with)s 6517(the)s +6865(inter)s 4(-line)k 7791(g)s 1(ap.)k 0 86 0 86 240 288 60 9066 10494 LoutGr2 0.5 pt ltabvs grestore @@ -9209,12 +9377,12 @@ grestore grestore -220 fnt2 170 9365(w)m 240 fnt1 -679 9368(One)m 220 fnt2 1167 9365(w)m 240 fnt1 1416 9368(equals)m -2111(the)s 2493(width)s 3128(of)s 3432(the)s 3813(follo)s 6(wing)k -4824(component,)s 6028(or)s 6320(its)s 6629(height)s 7321(if)s -7571(the)s 7952(symbol)s 8746(is)s 679 9080(v)m 3(ertical)k -1446(concatenation.)s 0 86 0 86 240 288 60 9066 9531 LoutGr2 +220 fnt2 +170 9365(w)m 240 fnt1 679 9368(One)m 220 fnt2 1167 9365(w)m +240 fnt1 1416 9368(equals)m 2111(the)s 2493(width)s 3128(of)s +3432(the)s 3813(follo)s 6(wing)k 4824(component,)s 6028(or)s +6320(its)s 6629(height)s 7321(if)s 7571(the)s 7952(symbol)s +8746(is)s 679 9080(v)m 3(ertical)k 1446(concatenation.)s 0 86 0 86 240 288 60 9066 9531 LoutGr2 0.5 pt ltabvs grestore @@ -9244,12 +9412,12 @@ grestore grestore -220 fnt2 170 8739(b)m 240 fnt1 679 8742(One)m -220 fnt2 1133 8739(b)m 240 fnt1 1305 8742(equals)m 1965(the)s -2311(width)s 2912(of)s 3181(the)s 3527(whole)s 4166(concatenation)s -5550(object,)s 6239(or)s 6496(its)s 6770(height)s 7427(if)s -7642(the)s 7988(symbol)s 8746(is)s 679 8454(v)m 3(ertical)k -1446(concatenation.)s 0 86 0 86 240 288 60 9066 8905 LoutGr2 +220 fnt2 +170 8739(b)m 240 fnt1 679 8742(One)m 220 fnt2 1133 8739(b)m +240 fnt1 1305 8742(equals)m 1965(the)s 2311(width)s 2912(of)s +3181(the)s 3527(whole)s 4166(concatenation)s 5550(object,)s 6239(or)s +6496(its)s 6770(height)s 7427(if)s 7642(the)s 7988(symbol)s +8746(is)s 679 8454(v)m 3(ertical)k 1446(concatenation.)s 0 86 0 86 240 288 60 9066 8905 LoutGr2 0.5 pt ltabvs grestore @@ -9279,13 +9447,13 @@ grestore grestore -220 fnt2 170 8113(r)m 240 fnt1 679 8116(One)m -220 fnt2 1176 8113(r)m 240 fnt1 1352 8116(equals)m 2057(one)s -220 fnt2 2502 8113(b)m 240 fnt1 2718 8116(minus)m 3397(one)s -220 fnt2 3842 8113(w)m 240 fnt1 3998 8116(.)m 4205(This)s -4723(unit)s 5198(is)s 5451(used)s 5991(for)s 6371(centring,)s -7304(and)s 7751(for)s 8132(left)s 8552(and)s 679 7828(right)m -1190(justi\207cation.)s 0 86 0 86 240 288 60 9066 8279 LoutGr2 +220 fnt2 +170 8113(r)m 240 fnt1 679 8116(One)m 220 fnt2 1176 8113(r)m +240 fnt1 1352 8116(equals)m 2057(one)s 220 fnt2 2502 8113(b)m +240 fnt1 2718 8116(minus)m 3397(one)s 220 fnt2 3842 8113(w)m +240 fnt1 3998 8116(.)m 4205(This)s 4723(unit)s 5198(is)s +5451(used)s 5991(for)s 6371(centring,)s 7304(and)s 7751(for)s +8132(left)s 8552(and)s 679 7828(right)m 1190(justi\207cation.)s 0 86 0 86 240 288 60 9066 8279 LoutGr2 0.5 pt ltabvs grestore @@ -9315,10 +9483,11 @@ grestore grestore -220 fnt2 170 7438(d)m 240 fnt1 679 7441(De)m 3(grees.)k -1623(This)s 2099(unit)s 2531(may)s 2997(only)s 3477(be)s -3759(used)s 4256(with)s 4738(the)s 220 fnt2 5086 7438(@Rotate)m -240 fnt1 6007 7441(symbol.)m 0 86 0 86 240 288 60 9066 7604 LoutGr2 +220 fnt2 +170 7438(d)m 240 fnt1 679 7441(De)m 3(grees.)k 1623(This)s +2099(unit)s 2531(may)s 2997(only)s 3477(be)s 3759(used)s +4256(with)s 4738(the)s 220 fnt2 5086 7438(@Rotate)m 240 fnt1 +6007 7441(symbol.)m 0 86 0 86 240 288 60 9066 7604 LoutGr2 0.5 pt ltabvs grestore @@ -9348,15 +9517,15 @@ grestore grestore -220 fnt2 170 7050(y)m 240 fnt1 -679 7053(One)m 220 fnt2 1129 7050(y)m 240 fnt1 1292 7053(equals)m -1949(the)s 2292(current)s 3023(v)s 6(alue)k 3586(set)s -3906(by)s 4195(the)s 220 fnt2 4538 7050(@YUnit)m 240 fnt1 -5347 7053(symbol)m 6102(\(Section)s 6950(3.6\).)s 7488(This)s 7959(unit)s -8386(is)s 8590(not)s 679 6765(used)m 1176(internally)s 2145(by)s -2439(Lout;)s 3003(it)s 3195(is)s 3405(included)s 4287(for)s -4625(the)s 4973(con)s 9(v)k 3(enience)k 6213(of)s -6484(application)s 7603(packages.)s 0 86 0 86 240 288 60 9066 7217 LoutGr2 +220 fnt2 170 7050(y)m 240 fnt1 679 7053(One)m +220 fnt2 1129 7050(y)m 240 fnt1 1292 7053(equals)m 1949(the)s +2292(current)s 3023(v)s 6(alue)k 3586(set)s 3906(by)s +4195(the)s 220 fnt2 4538 7050(@YUnit)m 240 fnt1 5347 7053(symbol)m +6102(\(Section)s 6950(3.6\).)s 7488(This)s 7959(unit)s 8386(is)s +8590(not)s 679 6765(used)m 1176(internally)s 2145(by)s 2439(Lout;)s +3003(it)s 3195(is)s 3405(included)s 4287(for)s 4625(the)s +4973(con)s 9(v)k 3(enience)k 6213(of)s 6484(application)s +7603(packages.)s 0 86 0 86 240 288 60 9066 7217 LoutGr2 0.5 pt ltabvs grestore @@ -9401,7 +9570,8 @@ grestore gsave 339 5951 translate -240 fnt1 170 0 0 0 240 288 60 LoutGraphic +240 fnt1 +170 0 0 0 240 288 60 LoutGraphic gsave 0.5 pt ltabhs grestore @@ -9415,15 +9585,14 @@ grestore grestore -240 fnt1 -679 6377(One)m 220 fnt2 1130 6374(z)m 240 fnt1 1290 6377(equals)m -1948(the)s 2292(current)s 3024(v)s 6(alue)k 3588(set)s -3909(by)s 4199(the)s 220 fnt2 4543 6374(@ZUnit)m 240 fnt1 -5341 6377(symbol)m 6097(\(Section)s 6946(3.6\).)s 7485(This)s 7957(unit)s -8385(is)s 8590(not)s 679 6089(used)m 1176(internally)s 2145(by)s -2439(Lout;)s 3003(it)s 3195(is)s 3405(included)s 4287(for)s -4625(the)s 4973(con)s 9(v)k 3(enience)k 6213(of)s -6484(application)s 7603(packages.)s 8217 0 0 0 240 288 60 679 5951 LoutGr2 +240 fnt1 679 6377(One)m 220 fnt2 1130 6374(z)m +240 fnt1 1290 6377(equals)m 1948(the)s 2292(current)s 3024(v)s 6(alue)k +3588(set)s 3909(by)s 4199(the)s 220 fnt2 4543 6374(@ZUnit)m +240 fnt1 5341 6377(symbol)m 6097(\(Section)s 6946(3.6\).)s 7485(This)s +7957(unit)s 8385(is)s 8590(not)s 679 6089(used)m 1176(internally)s +2145(by)s 2439(Lout;)s 3003(it)s 3195(is)s 3405(included)s +4287(for)s 4625(the)s 4973(con)s 9(v)k 3(enience)k +6213(of)s 6484(application)s 7603(packages.)s 8217 0 0 0 240 288 60 679 5951 LoutGr2 0.5 pt ltabhs grestore @@ -9494,9 +9663,9 @@ 1523(objects)s 2254(are)s 2603(separated)s 3566(only)s 4048(by)s 4345(zero)s 4811(or)s 5072(more)s 5622(white)s 6211(space)s -[ /Dest /LOUT16_4080_pre_conc_33 /DEST pdfmark +[ /Dest /LOUT19_4213_pre_conc_33 /DEST pdfmark -[ /Dest /LOUT16_4080_pre_conc_34 /DEST pdfmark +[ /Dest /LOUT19_4213_pre_conc_34 /DEST pdfmark 6801(characters)s 7821(\(spaces,)s 8634(tabs,)s 0 1044(ne)m 6(wlines,)k 983(and)s 1420(formfeeds\),)s 2607(Lout)s 3152(inserts)s 220 fnt2 3859 1041(&)m 240 fnt6 4001 1046(k)m 220 fnt2 4111 1041(s)m @@ -9517,7 +9686,8 @@ grestore gsave 1417 -15423 translate -240 fnt1 0 0 0 0 240 288 60 LoutGraphic +240 fnt1 +0 0 0 0 240 288 60 LoutGraphic gsave 0 LoutMargSet grestore @@ -9554,16 +9724,16 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -240 fnt6 1417 -1580(3.2.)m 1871(Concatenation)s 3335(symbols)s 4161(and)s -4587(par)s 3(a)k 2(gr)k 3(aphs)k 240 fnt5 -10249 -1583(39)m gsave +240 fnt6 1417 -1580(3.2.)m +1871(Concatenation)s 3335(symbols)s 4161(and)s 4587(par)s 3(a)k 2(gr)k 3(aphs)k +240 fnt5 10249 -1583(39)m gsave 1417 -15423 translate 240 fnt1 9066 13368 0 13368 240 288 60 LoutGraphic gsave @@ -9572,10 +9742,10 @@ 6166 7484 0 7484 240 288 60 1450 5884 LoutGr2 grestore save gsave 200 dict begin lfigdict begin grestore -0 6710(Edge-to-edge)m 220 fnt2 1786 6707(|)m 240 fnt6 -1843 6712(l)m 220 fnt2 1929 6707(e)m 240 fnt1 0 5558(Hyphenation)m -220 fnt2 1786 5555(|)m 240 fnt6 1843 5560(l)m 220 fnt2 -1929 5555(h)m 240 fnt1 0 4406(Ov)m 3(erstrik)k 2(e)k +0 6710(Edge-to-edge)m 220 fnt2 +1786 6707(|)m 240 fnt6 1843 6712(l)m 220 fnt2 1929 6707(e)m +240 fnt1 0 5558(Hyphenation)m 220 fnt2 1786 5555(|)m 240 fnt6 +1843 5560(l)m 220 fnt2 1929 5555(h)m 240 fnt1 0 4406(Ov)m 3(erstrik)k 2(e)k 220 fnt2 1786 4403(|)m 240 fnt6 1843 4408(l)m 220 fnt2 1929 4403(o)m 240 fnt1 0 3254(Mark-to-mark)m 220 fnt2 1786 3251(|)m 240 fnt6 1843 3256(l)m 220 fnt2 1929 3251(x)m 240 fnt1 @@ -9611,7 +9781,8 @@ grestore gsave 2268 6748 translate -180 fnt1 680 340 0 340 180 288 45 LoutGraphic +180 fnt1 +680 340 0 340 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath @@ -9671,7 +9842,8 @@ 30.0000 rotate gsave 0 1 translate -180 fnt1 68 -1 0 -1 180 288 45 LoutGraphic +180 fnt1 +68 -1 0 -1 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore @@ -9702,7 +9874,8 @@ grestore 180 fnt6 1732 6455(l)m gsave 567 5596 translate -180 fnt1 680 340 0 340 180 288 45 LoutGraphic +180 fnt1 +680 340 0 340 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath @@ -9754,7 +9927,8 @@ grestore gsave 0 0 translate -180 fnt1 1020 0 0 0 180 288 45 LoutGraphic +180 fnt1 +1020 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore @@ -9809,7 +9983,8 @@ grestore grestore -1732 5303(l)m gsave +1732 5303(l)m +gsave 567 4444 translate 180 fnt1 680 340 0 340 180 288 45 LoutGraphic gsave @@ -9853,7 +10028,8 @@ 30.0000 rotate gsave 0 1 translate -180 fnt1 68 -1 0 -1 180 288 45 LoutGraphic +180 fnt1 +68 -1 0 -1 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore @@ -9910,7 +10086,8 @@ -30.0000 rotate gsave 0 0 translate -180 fnt1 68 -1 0 0 180 288 45 LoutGraphic +180 fnt1 +68 -1 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore @@ -9918,8 +10095,7 @@ grestore grestore -1590 4095(l)m -gsave +1590 4095(l)m gsave 567 3242 translate 180 fnt1 680 340 0 340 180 288 45 LoutGraphic gsave @@ -9949,7 +10125,8 @@ grestore gsave 2551 3128 translate -180 fnt1 0 567 0 567 180 288 45 LoutGraphic +180 fnt1 +0 567 0 567 180 288 45 LoutGraphic gsave 0 0 moveto 0 ysize lineto [ 3 pt ] 0 setdash stroke grestore @@ -10009,7 +10186,8 @@ grestore gsave 680 3094 translate -180 fnt1 1871 0 0 0 180 288 45 LoutGraphic +180 fnt1 +1871 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore @@ -10028,8 +10206,8 @@ grestore grestore -180 fnt1 975 2892(max\()m 180 fnt6 1383 2893(l,)m 1503(a+b+l/10)s -180 fnt1 2205 2892(\))m gsave +180 fnt1 975 2892(max\()m 180 fnt6 1383 2893(l,)m +1503(a+b+l/10)s 180 fnt1 2205 2892(\))m gsave 1247 3718 translate 180.0000 rotate gsave @@ -10084,7 +10262,8 @@ grestore grestore -180 fnt6 920 3787(a)m gsave +180 fnt6 920 3787(a)m +gsave 2551 3718 translate 180.0000 rotate gsave @@ -10138,7 +10317,8 @@ grestore gsave 2268 3718 translate -180 fnt1 283 0 0 0 180 288 45 LoutGraphic +180 fnt1 +283 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore @@ -10157,8 +10337,7 @@ grestore grestore -2366 3743(b)m -gsave +2366 3743(b)m gsave 567 2090 translate 180 fnt1 680 340 0 340 180 288 45 LoutGraphic gsave @@ -10178,7 +10357,8 @@ grestore gsave 2268 2090 translate -180 fnt1 680 340 0 340 180 288 45 LoutGraphic +180 fnt1 +680 340 0 340 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath @@ -10238,7 +10418,8 @@ 30.0000 rotate gsave 0 1 translate -180 fnt1 68 -1 0 -1 180 288 45 LoutGraphic +180 fnt1 +68 -1 0 -1 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore @@ -10267,8 +10448,9 @@ grestore grestore -180 fnt1 1203 1740(max\()m 180 fnt6 1611 1741(l,)m 1731(a,)s -1891(b)s 180 fnt1 1977 1740(\))m gsave +180 fnt1 1203 1740(max\()m 180 fnt6 +1611 1741(l,)m 1731(a,)s 1891(b)s 180 fnt1 1977 1740(\))m +gsave 1247 2566 translate 180.0000 rotate gsave @@ -10323,8 +10505,7 @@ grestore grestore -180 fnt6 920 2635(a)m -gsave +180 fnt6 920 2635(a)m gsave 2551 2566 translate 180.0000 rotate gsave @@ -10353,7 +10534,8 @@ -30.0000 rotate gsave 0 0 translate -180 fnt1 68 -1 0 0 180 288 45 LoutGraphic +180 fnt1 +68 -1 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore @@ -10399,7 +10581,8 @@ grestore 2366 2591(b)m gsave 567 938 translate -180 fnt1 680 340 0 340 180 288 45 LoutGraphic +180 fnt1 +680 340 0 340 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath @@ -10451,7 +10634,8 @@ grestore gsave 0 0 translate -180 fnt1 2268 0 0 0 180 288 45 LoutGraphic +180 fnt1 +2268 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore @@ -10506,7 +10690,8 @@ grestore grestore -1587 532(l)m gsave +1587 532(l)m +gsave 3402 234 translate 180.0000 rotate gsave @@ -10560,7 +10745,8 @@ grestore gsave 0 234 translate -180 fnt1 3402 0 0 0 180 288 45 LoutGraphic +180 fnt1 +3402 0 0 0 180 288 45 LoutGraphic gsave 0 0 moveto xsize 0 lineto stroke grestore @@ -10579,44 +10765,42 @@ grestore grestore -1189 22(curr)m 6(ent)k 1759(bound)s - +1189 22(curr)m 6(ent)k 1759(bound)s grestore end end restore grestore [ /Dest /LOUTgapmodes /DEST pdfmark -200 fnt5 2562 5321(Figur)m 3(e)k 3170(3.2.)s 200 fnt1 -3562 5322(The)m 3918(six)s 4196(g)s 1(ap)k 4527(modes)s -5089(pro)s 3(vided)k 5844(by)s 6089(Lout.)s 240 fnt1 -480 4689(A)m 724(sequence)s 1672(of)s 1958(tw)s 2(o)k -2383(or)s 2657(more)s 3219(objects)s 3962(separated)s 4936(by)s -220 fnt2 5245 4686(&)m 240 fnt1 5462 4689(symbols)m 6326(is)s -6551(a)s -[ /Dest /LOUT16_4080_pre_conc_35 /DEST pdfmark -240 fnt6 6732 4691(par)m 3(a)k 2(gr)k 3(aph)k -240 fnt1 7745 4689(.)m 7924(Lout)s 8451(breaks)s 0 4401(paragraphs)m -1100(into)s 1526(lines)s 2029(automatically)s 3384(as)s 3635(required,)s -4539(by)s 4834(con)s 9(v)k 3(erting)k 5898(some)s -6460(of)s 6732(the)s 220 fnt2 7081 4398(&)m 240 fnt1 -7284 4401(symbols)m 8134(into)s 220 fnt2 8560 4398(//1vx)m 240 fnt1 -9022 4401(.)m 0 4113(Unbreakable)m 1279(g)s 1(aps)k 1769(are)s -2117(not)s 2485(eligible)s 3258(for)s 3597(this)s 3995(con)s 9(v)k 3(ersion.)k +200 fnt5 +2562 5321(Figur)m 3(e)k 3170(3.2.)s 200 fnt1 3562 5322(The)m +3918(six)s 4196(g)s 1(ap)k 4527(modes)s 5089(pro)s 3(vided)k +5844(by)s 6089(Lout.)s 240 fnt1 480 4689(A)m 724(sequence)s +1672(of)s 1958(tw)s 2(o)k 2383(or)s 2657(more)s +3219(objects)s 3962(separated)s 4936(by)s 220 fnt2 5245 4686(&)m +240 fnt1 5462 4689(symbols)m 6326(is)s 6551(a)s +[ /Dest /LOUT19_4213_pre_conc_35 /DEST pdfmark +240 fnt6 +6732 4691(par)m 3(a)k 2(gr)k 3(aph)k 240 fnt1 +7745 4689(.)m 7924(Lout)s 8451(breaks)s 0 4401(paragraphs)m 1100(into)s +1526(lines)s 2029(automatically)s 3384(as)s 3635(required,)s 4539(by)s +4834(con)s 9(v)k 3(erting)k 5898(some)s 6460(of)s +6732(the)s 220 fnt2 7081 4398(&)m 240 fnt1 7284 4401(symbols)m +8134(into)s 220 fnt2 8560 4398(//1vx)m 240 fnt1 9022 4401(.)m +0 4113(Unbreakable)m 1279(g)s 1(aps)k 1769(are)s 2117(not)s +2485(eligible)s 3258(for)s 3597(this)s 3995(con)s 9(v)k 3(ersion.)k 5198(`Optimal')s 6173(line)s 6588(breaks)s 7265(are)s 7613(chosen,)s 8386(using)s 8960(a)s 0 3825(method)m 776(adapted)s 1578(from)s 2102(T)s 2198 3777(E)m 2305 3825(X)m 2534([)s [ /Rect [2605 3822 2711 3990] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTknuth1984tex /ANN pdfmark 2605(5)s 2711(].)s -[ /Dest /LOUT16_4059_pre_conc_1 /DEST pdfmark - -[ /Dest /LOUT16_4080_pre_conc_36 /DEST pdfmark +[ /Dest /LOUT19_4213_pre_conc_36 /DEST pdfmark 480 3451(If)m 735(an)s 220 fnt2 1043 3448(&)m 240 fnt1 1271 3451(symbol)m 2056(whose)s 2750(g)s 1(ap)k 3173(has)s 3568(h)s 1(yphenation)k 4834(mode)s -[ /Dest /LOUT16_4080_pre_conc_37 /DEST pdfmark +[ /Dest /LOUT19_4213_pre_conc_37 /DEST pdfmark -[ /Dest /LOUT16_4080_pre_conc_38 /DEST pdfmark +[ /Dest /LOUT19_4213_pre_conc_38 /DEST pdfmark 5447(is)s 5683(chosen)s 6430(for)s 6793(replacement)s 8046(by)s 220 fnt2 8365 3448(//1vx)m 240 fnt1 8827 3451(,)m 8960(a)s 0 3163(h)m 1(yphen)k @@ -10687,15 +10871,16 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -240 fnt5 1417 -1583(40)m 240 fnt6 7498 -1580(Chapter)m 8348(3.)s -8622(Pr)s 8(ede\207ned)k 9717(symbols)s gsave +240 fnt5 1417 -1583(40)m +240 fnt6 7498 -1580(Chapter)m 8348(3.)s 8622(Pr)s 8(ede\207ned)k +9717(symbols)s gsave 1417 -15423 translate 240 fnt1 9066 13368 0 13257 240 288 60 LoutGraphic gsave @@ -10710,15 +10895,15 @@ [ /Dest /LOUTfont /DEST pdfmark 240 fnt1 480 11939(A)m 240 fnt6 728 11941(font)m -[ /Dest /LOUT16_4080_pre_font_1 /DEST pdfmark +[ /Dest /LOUT19_4213_pre_font_1 /DEST pdfmark 240 fnt1 1182 11939(is)m 1410(a)s 1594(collection)s 2611(of)s 2900(characters)s 3936(which)s 4596(may)s 5080(be)s 5380(printed.)s 6239(Man)s 3(y)k 6867(fonts)s 7414(come)s 8006(in)s 240 fnt6 8268 11941(families)m 240 fnt1 9019 11939(,)m -[ /Dest /LOUT16_4080_pre_font_2 /DEST pdfmark +[ /Dest /LOUT19_4213_pre_font_2 /DEST pdfmark -[ /Dest /LOUT16_4080_pre_font_3 /DEST pdfmark +[ /Dest /LOUT19_4213_pre_font_3 /DEST pdfmark 0 11651(which)m 634(are)s 973(groups)s 1667(of)s 1930(fonts)s 2450(that)s 2860(ha)s 4(v)k 3(e)k 3352(been)s 3853(designed)s 4754(to)s 4984(go)s 5269(together)s 13(.)k @@ -10743,9 +10928,9 @@ 0 8629(be)m 282(applied)s 1044(to)s 1283(man)s 3(y)k 1866(font)s 2311(f)s 2(amilies.)k 480 8255(Lig)m 1(atures,)k -[ /Dest /LOUT16_4080_pre_font_4 /DEST pdfmark +[ /Dest /LOUT19_4213_pre_font_4 /DEST pdfmark -[ /Dest /LOUT16_4080_pre_font_5 /DEST pdfmark +[ /Dest /LOUT19_4213_pre_font_5 /DEST pdfmark 1488(such)s 1984(as)s 2234(\210)s 2420(for)s 2758(f)s 2849(l)s 2970(and)s 3375(\207)s 3560(for)s 3898(f)s 3989(i,)s 4163(are)s 4510(considered)s 5604(by)s 5899(Basser)s @@ -10764,7 +10949,7 @@ 690(disable)s 1423(a)s 1589(lig)s 1(ature)k 2373(or)s 2632(k)s 2(ern.)k 480 6729(The)m 220 fnt2 908 6726(@F)m 6(ont)k 240 fnt1 1620 6729(symbol)m -[ /Dest /LOUT16_4080_pre_font_6 /DEST pdfmark +[ /Dest /LOUT19_4213_pre_font_6 /DEST pdfmark 2380(returns)s 3094(its)s 3370(right)s 3881(parameter)s 4895(in)s 5138(a)s 5304(font)s 5749(and)s 6153(size)s 6580(speci\207ed)s 7488(by)s 7782(its)s 8058(left:)s @@ -10870,18 +11055,19 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -240 fnt6 1417 -1580(3.3.)m 1871(@F)s 25(ont,)k 2611(@Char)s 26(,)k -3391(and)s 3817(@F)s 25(ontDef)k 240 fnt5 10256 -1583(41)m -gsave +240 fnt6 1417 -1580(3.3.)m +1871(@F)s 25(ont,)k 2611(@Char)s 26(,)k 3391(and)s +3817(@F)s 25(ontDef)k 240 fnt5 10256 -1583(41)m gsave 1417 -15423 translate -240 fnt1 9066 13368 0 13259 240 288 60 LoutGraphic +240 fnt1 +9066 13368 0 13259 240 288 60 LoutGraphic gsave 1 LoutMargSet grestore @@ -10891,7 +11077,7 @@ 220 fnt2 908 12828(@F)m 6(ont)k 240 fnt1 1620 12831(symbol)m 2380(also)s 2818(switches)s 3692(to)s 3931(and)s 4335(from)s 4859(small)s 5431(capitals:)s -[ /Dest /LOUT16_4080_pre_font_7 /DEST pdfmark +[ /Dest /LOUT19_4213_pre_font_7 /DEST pdfmark 220 fnt2 480 12330(smallcaps @F)m 6(ont ...)k 480 12042(nosmallcaps @F)m 6(ont ...)k 240 fnt1 0 11546(These)m 639(may)s 1118(be)s 1412(nested,)s 2143(and)s 2559(the)s 3(y)k @@ -10983,7 +11169,12 @@ 220 fnt2 3276 431(@F)m 11(ace)k 240 fnt1 3968 434(.)m 4125(There)s 4730(are)s 5070(a)s 5228(fe)s 6(w)k 5627(fonts)s 6149(which)s 6783(are)s 7123(the)s 7463(only)s -7936(members)s 8855(of)s +7936(members)s 8855(of)s 0 146(their)m 488(f)s 2(amilies;)k +1356(e)s 6(v)k 3(en)k 1846(though)s 2559(these)s +3096(fonts)s 3616(do)s 3899(not)s 4255(need)s 4755(a)s +4911(f)s 2(ace)k 5352(name,)s 5968(the)s 3(y)k +6421(must)s 6936(be)s 7208(gi)s 6(v)k 3(en)k +7778(one,)s 8221(probably)s grestore gsave 1417 -15423 translate @@ -11024,166 +11215,167 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -240 fnt5 1417 -1583(42)m 240 fnt6 7498 -1580(Chapter)m 8348(3.)s -8622(Pr)s 8(ede\207ned)k 9717(symbols)s gsave +240 fnt5 1417 -1583(42)m +240 fnt6 7498 -1580(Chapter)m 8348(3.)s 8622(Pr)s 8(ede\207ned)k +9717(symbols)s gsave 1417 -15423 translate 240 fnt1 9066 13368 0 13259 240 288 60 LoutGraphic gsave 0 LoutMargSet grestore -0 13205(their)m 488(f)s 2(amilies;)k -1356(e)s 6(v)k 3(en)k 1846(though)s 2559(these)s -3096(fonts)s 3616(do)s 3899(not)s 4255(need)s 4755(a)s -4911(f)s 2(ace)k 5352(name,)s 5968(the)s 3(y)k -6421(must)s 6936(be)s 7208(gi)s 6(v)k 3(en)k -7778(one,)s 8221(probably)s 220 fnt2 0 12914(Base)m 240 fnt1 -492 12917(,)m 599(by)s 893(their)s 220 fnt2 1390 12914(@F)m 6(ontDef)k -240 fnt1 2384 12917(.)m 480 12543(The)m 950(other)s 1543(\207elds)s +220 fnt2 0 13202(Base)m 240 fnt1 +492 13205(,)m 599(by)s 893(their)s 220 fnt2 1390 13202(@F)m 6(ontDef)k +240 fnt1 2384 13205(.)m 480 12831(The)m 950(other)s 1543(\207elds)s 2154(are)s 2543(implementation-dependent,)s 5255(b)s 4(ut)k 5659(in)s 5944(Basser)s 6683(Lout)s 7237(V)s 26(ersion)k 8067(3)s -8273(the)s 3(y)k 8779(are)s 220 fnt2 0 12252(@Name)m -240 fnt1 800 12255(,)m 908(a)s 1076(PostScript)s 2120(font)s -2567(name;)s 220 fnt2 3198 12252(@Metr)m -3(ics)k 240 fnt1 -4124 12255(,)m 4293(an)s -[ /Dest /LOUT16_4080_pre_font_8 /DEST pdfmark +8273(the)s 3(y)k 8779(are)s 220 fnt2 0 12540(@Name)m +240 fnt1 800 12543(,)m 908(a)s 1076(PostScript)s 2120(font)s +2567(name;)s 220 fnt2 3198 12540(@Metr)m -3(ics)k 240 fnt1 +4124 12543(,)m 4293(an)s +[ /Dest /LOUT19_4213_pre_font_8 /DEST pdfmark 4578(Adobe)s 5275(font)s 5721(metrics)s -6476(\(formerly)s 7446(AFM\))s 8095(\207le)s 8458(whose)s 0 11967(F)m 3(ontName)k +6476(\(formerly)s 7446(AFM\))s 8095(\207le)s 8458(whose)s 0 12255(F)m 3(ontName)k 1070(entry)s 1622(must)s 2154(agree)s 2734(with)s 3223(the)s 3578(PostScript)s 4627(font)s 5079(name)s 5660(just)s 6072(mentioned;)s -7201(and)s 220 fnt2 7612 11964(@Mapping)m 240 fnt1 8664 11967(,)m -8778(the)s 0 11679(name)m 589(of)s 876(a)s 1057(Lout)s +7201(and)s 220 fnt2 7612 12252(@Mapping)m 240 fnt1 8664 12255(,)m +8778(the)s 0 11967(name)m 589(of)s 876(a)s 1057(Lout)s 1585(Character)s 2589(Mapping)s 3522(\(LCM\))s 4264(\207le.)s 4748(The)s 5192(\207les)s 5657(are)s 6019(searched)s 6929(for)s 7282(in)s -7541(standard)s 8425(places.)s 0 11391(Consult)m 813(the)s 1169(PostScript)s +7541(standard)s 8425(places.)s 0 11679(Consult)m 813(the)s 1169(PostScript)s 2220(Reference)s 3252(Manual)s 4046([)s -[ /Rect [4117 11391 4212 11553] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTadobe1990ps /ANN pdfmark +[ /Rect [4117 11679 4212 11841] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTadobe1990ps /ANN pdfmark 4117(1)s 4212(])s 4339(for)s 4685(general)s 5451(information)s 6645(about)s 7245(fonts)s -7782(and)s 8195(encoding)s 0 11103(v)m 3(ectors;)k 795(brie\210y)s 15(,)k +7782(and)s 8195(encoding)s 0 11391(v)m 3(ectors;)k 795(brie\210y)s 15(,)k 1506(an)s 1785(8-bit)s -[ /Dest /LOUT16_4080_pre_font_9 /DEST pdfmark +[ /Dest /LOUT19_4213_pre_font_9 /DEST pdfmark 2291(character)s 3221(code)s 240 fnt6 -3724 11105(c)m 240 fnt1 3882 11103(in)m 4120(Lout')s 13(s)k +3724 11393(c)m 240 fnt1 3882 11391(in)m 4120(Lout')s 13(s)k 4778(input)s 5325(is)s 5531(mapped)s 6342(to)s 6577(the)s -6920(character)s 7850(in)s 8088(the)s 8431(Adobe)s 0 10815(font)m +6920(character)s 7850(in)s 8088(the)s 8431(Adobe)s 0 11103(font)m 449(metrics)s 1206(\207le)s 1571(whose)s 2243(name)s 2822(appears)s 3607(on)s 3908(the)s 4260(line)s 4679(labelled)s 240 fnt6 -5497 10817(c)m 240 fnt1 5663 10815(in)m 5910(the)s 6262(LCM)s +5497 11105(c)m 240 fnt1 5663 11103(in)m 5910(the)s 6262(LCM)s 6840(\207le.)s 7313(The)s 7745(LCM)s 8322(\207le)s 8688(also)s -0 10527(de\207nes)m 756(v)s 6(arious)k 1532(character)s 4(-to-character)k +0 10815(de\207nes)m 756(v)s 6(arious)k 1532(character)s 4(-to-character)k 3707(mappings,)s 4772(such)s 5295(as)s 5572(upper)s 4(-case)k 6686(to)s 6952(lo)s 6(wer)k 4(-case,)k 8110(which)s -8779(are)s 0 10239(used)m 497(for)s 835(such)s 1331(purposes)s +8779(are)s 0 10527(used)m 497(for)s 835(such)s 1331(purposes)s 2233(as)s 2483(the)s 2831(production)s 3925(of)s 4196(small)s -4768(capitals.)s 480 9865(The)m 933(options)s 1714(sho)s 6(wn)k +4768(capitals.)s 480 10153(The)m 933(options)s 1714(sho)s 6(wn)k 2416(abo)s 3(v)k 3(e)k 3063(are)s 3436(all)s 3754(compulsory)s 15(,)k 5001(b)s 4(ut)k 5388(there)s 5946(are)s 6319(tw)s 2(o)k 6754(other)s 7330(options)s -8111(which)s 8779(are)s 0 9577(optional.)m 942(The)s 220 fnt2 -1364 9574(@Recode)m 240 fnt1 2388 9577(option,)m 3101(if)s 3312(gi)s 6(v)k 3(en,)k +8111(which)s 8779(are)s 0 9865(optional.)m 942(The)s 220 fnt2 +1364 9862(@Recode)m 240 fnt1 2388 9865(option,)m 3101(if)s 3312(gi)s 6(v)k 3(en,)k 3935(must)s 4454(ha)s 4(v)k 3(e)k 4948(v)s 6(alue)k -220 fnt2 5510 9574(Y)m 30(es)k 240 fnt1 5905 9577(\(the)m +220 fnt2 5510 9862(Y)m 30(es)k 240 fnt1 5905 9865(\(the)m 6325(def)s 2(ault,)k 7087(so)s 7347(rarely)s 7950(seen\))s -8497(or)s 220 fnt2 8749 9574(No)m 240 fnt1 9022 9577(.)m -0 9289(If)m 220 fnt2 239 9286(@Recode { No })m 240 fnt1 1887 9289(is)m +8497(or)s 220 fnt2 8749 9862(No)m 240 fnt1 9022 9865(.)m +0 9577(If)m 220 fnt2 239 9574(@Recode { No })m 240 fnt1 1887 9577(is)m 2106(gi)s 6(v)k 3(en,)k 2745(Lout)s 3266(assumes)s 4123(that)s 4551(the)s 4908(gi)s 6(v)k 3(en)k 5497(encoding)s 6437(v)s 3(ector)k 7100(is)s 7319(already)s -8086(associated)s 0 9001(with)m 482(this)s 878(font)s 1323(in)s +8086(associated)s 0 9289(with)m 482(this)s 878(font)s 1323(in)s 1566(the)s 1914(PostScript)s 2956(interpreter)s 9(,)k 4047(and)s 4451(optimizes)s 5431(its)s 5707(output)s 6379(accordingly)s 15(.)k -480 8627(The)m 928(other)s 1500(optional)s 2359(option,)s 220 fnt2 -3099 8624(@Extr)m 2(aMetr)k -3(ics)k 240 fnt1 4535 8627(,)m +480 8915(The)m 928(other)s 1500(optional)s 2359(option,)s 220 fnt2 +3099 8912(@Extr)m 2(aMetr)k -3(ics)k 240 fnt1 4535 8915(,)m 4663(has)s 5053(v)s 6(alue)k 5642(equal)s 6236(to)s 6495(the)s 6864(name)s 7459(of)s 7750(a)s 7937(second)s -8681(font)s 0 8339(metrics)m 765(\207le)s 1138(which,)s 1843(if)s +8681(font)s 0 8627(metrics)m 765(\207le)s 1138(which,)s 1843(if)s 2072(gi)s 6(v)k 3(en,)k 2715(is)s 2937(added)s 3580(to)s 3831(the)s 4191(main)s 4739(one)s 5153(de\207ned)s -5929(by)s 220 fnt2 6235 8336(@Metr)m -3(ics)k 240 fnt1 -7161 8339(.)m 7338(This)s 7826(e)s 3(xtra)k 8373(metrics)s -0 8051(\207le)m 357(contains)s 220 fnt2 1200 8048(C)m 240 fnt1 -1404 8051(\(de\207ne)m 2119(character\))s 3117(and)s 220 fnt2 3516 8048(CC)m -240 fnt1 3878 8051(\(de\207ne)m 4593(composite)s 5627(character\))s 6625(entries)s -7307(in)s 7545(the)s 7888(same)s 8430(format)s 0 7763(as)m +5929(by)s 220 fnt2 6235 8624(@Metr)m -3(ics)k 240 fnt1 +7161 8627(.)m 7338(This)s 7826(e)s 3(xtra)k 8373(metrics)s +0 8339(\207le)m 357(contains)s 220 fnt2 1200 8336(C)m 240 fnt1 +1404 8339(\(de\207ne)m 2119(character\))s 3117(and)s 220 fnt2 3516 8336(CC)m +240 fnt1 3878 8339(\(de\207ne)m 4593(composite)s 5627(character\))s 6625(entries)s +7307(in)s 7545(the)s 7888(same)s 8430(format)s 0 8051(as)m 259(in)s 512(AFM)s 1095(\207les;)s 1615(Lout)s 2136(will)s 2572(b)s 4(uild)k 3128(composite)s 4177(characters)s 5204(declared)s 6081(in)s 6334(this)s 6740(e)s 3(xtra)k 7283(\207le)s 7654(from)s 8188(the)s 8546(gi)s 6(v)k 3(en)k -0 7475(pieces,)m 707(which)s 1352(it)s 1547(does)s 2041(not)s +0 7763(pieces,)m 707(which)s 1352(it)s 1547(does)s 2041(not)s 2410(do)s 2706(for)s 3048(composite)s 4090(characters)s 5111(in)s 5358(the)s 5709(main)s 6247(AFM)s 6824(\207le.)s 7296(There)s -7912(are)s 8263(e)s 3(xample)k 0 7187(e)m 3(xtra)k +7912(are)s 8263(e)s 3(xample)k 0 7475(e)m 3(xtra)k 534(metrics)s 1287(\207les)s 1736(in)s 1979(the)s 2327(current)s 3063(Lout)s 3575(distrib)s 4(ution)k 4730(which)s 5372(sho)s 6(w)k 5926(the)s 6274(precise)s 7006(format)s 7702(of)s 7973(these)s -8520(\207les.)s 480 6813(It)m 708(is)s 941(not)s 1330(possible)s +8520(\207les.)s 480 7101(It)m 708(is)s 941(not)s 1330(possible)s 2193(to)s 2456(ha)s 4(v)k 3(e)k 2980(tw)s 2(o)k -220 fnt2 3413 6810(@F)m 6(ontDef)k 240 fnt1 4490 6813(database)m +220 fnt2 3413 7098(@F)m 6(ontDef)k 240 fnt1 4490 7101(database)m 5392(entries)s 6103(with)s 6608(the)s 6979(same)s 7549(f)s 2(amily)k -8247(and)s 8675(f)s 2(ace)k 0 6525(names,)m 703(because)s +8247(and)s 8675(f)s 2(ace)k 0 6813(names,)m 703(because)s 1501(then)s 1955(the)s 3(y)k 2402(must)s 2912(ha)s 4(v)k 3(e)k -3398(the)s 3731(same)s 220 fnt2 4262 6522(@T)m 26(ag)k -240 fnt1 4825 6525(,)m 4917(which)s 5544(is)s 5739(not)s +3398(the)s 3731(same)s 220 fnt2 4262 6810(@T)m 26(ag)k +240 fnt1 4825 6813(,)m 4917(which)s 5544(is)s 5739(not)s 6089(allo)s 6(wed.)k 6989(Ho)s 6(we)k 6(v)k 3(er)k 9(,)k -7934(a)s 8084(PostScript)s 0 6237(font)m 470(name)s 1070(and)s +7934(a)s 8084(PostScript)s 0 6525(font)m 470(name)s 1070(and)s 1500(\207le)s 1886(may)s 2378(appear)s 3101(in)s 3369(tw)s 2(o)k 3805(or)s 4090(more)s 4662(font)s 5133(de\207nitions,)s 6276(allo)s 6(wing)k -7185(one)s 7613(PostScript)s 8681(font)s 0 5949(to)m 264(ha)s 4(v)k 3(e)k +7185(one)s 7613(PostScript)s 8681(font)s 0 6237(to)m 264(ha)s 4(v)k 3(e)k 791(tw)s 2(o)k 1227(or)s 1512(more)s 2085(equally)s 2869(v)s 6(alid)k 3425(Lout)s 3963(names.)s 4763(The)s 5217(LCM)s 5816(\207les)s 6291(may)s 6783(be)s 7091(equal)s -7690(or)s 7975(dif)s 6(ferent)k 8876(as)s 0 5661(desired.)m -480 5287(The)m 220 fnt2 917 5284(@Char)m 240 fnt1 1685 5287(symbol)m +7690(or)s 7975(dif)s 6(ferent)k 8876(as)s 0 5949(desired.)m +480 5575(The)m 220 fnt2 917 5572(@Char)m 240 fnt1 1685 5575(symbol)m -[ /Dest /LOUT16_4080_pre_font_10 /DEST pdfmark +[ /Dest /LOUT19_4213_pre_font_10 /DEST pdfmark 2454(allo)s 6(ws)k 3133(a)s 3309(character)s 4252(to)s 4501(be)s 4792(speci\207ed)s 5710(by)s 6014(its)s 6299(name)s -6883(\(its)s 7247(PostScript)s 8299(name)s 8883(in)s 0 4999(Basser)m +6883(\(its)s 7247(PostScript)s 8299(name)s 8883(in)s 0 5287(Basser)m 697(Lout\))s 1277(rather)s 1893(than)s 2362(by)s 2656(its)s -2932(code:)s 220 fnt2 480 4498(@Char nine)m 240 fnt1 0 4043(is)m +2932(code:)s 220 fnt2 480 4786(@Char nine)m 240 fnt1 0 4331(is)m 215(equi)s 6(v)k 6(alent)k 1265(to)s 220 fnt2 -1510 4040(9)m 240 fnt1 1689 4043(in)m 1938(most)s 2469(fonts.)s +1510 4328(9)m 240 fnt1 1689 4331(in)m 1938(most)s 2469(fonts.)s 3117(This)s 3599(is)s 3815(useful)s 4460(as)s 4716(a)s 4888(documentation)s 6373(aid)s 6729(and)s 7139(to)s 7384(be)s -7672(sure)s 8132(of)s 8409(getting)s 0 3755(the)m 347(right)s +7672(sure)s 8132(of)s 8409(getting)s 0 4043(the)m 347(right)s 856(character)s 1788(e)s 6(v)k 3(en)k 2286(if)s 2501(the)s 2848(encoding)s 3777(v)s 3(ector)k 4429(of)s 4698(the)s 5044(font)s 5488(is)s 5696(changed.)s 6656(Ho)s 6(we)k 6(v)k 3(er)k -220 fnt2 7576 3752(@Char)m 240 fnt1 8332 3755(will)m 8756(f)s 2(ail)k -0 3467(if)m 217(the)s 565(character)s 1499(named)s 2195(is)s +220 fnt2 7576 4040(@Char)m 240 fnt1 8332 4043(will)m 8756(f)s 2(ail)k +0 3755(if)m 217(the)s 565(character)s 1499(named)s 2195(is)s 2405(not)s 2771(in)s 3014(the)s 3362(encoding)s 4293(v)s 3(ector)k 4947(of)s 5218(the)s 5566(current)s 6302(font.)s 240 fnt5 -0 2674(3.4.)m 471(@Br)s 4(eak)k +0 2962(3.4.)m 471(@Br)s 4(eak)k [ /Dest /LOUTbreak /DEST pdfmark -240 fnt1 480 2242(The)m -220 fnt2 898 2239(@Break)m 240 fnt1 1744 2242(symbol)m 2493(in\210uences)s +240 fnt1 480 2530(The)m +220 fnt2 898 2527(@Break)m 240 fnt1 1744 2530(symbol)m 2493(in\210uences)s 3504(the)s 3842(appearance)s 4962(of)s 5223(paragraphs)s 6313(\(Section)s 7155(3.2\),)s 7631(of)s 6(fering)k 8437(a)s 8592(\207x)s 3(ed)k -0 1954(set)m 325(of)s 596(styles:)s 220 fnt2 1275 1446(adjust)m -1916(@Break)s 240 fnt6 2772 1451(object)m -[ /Dest /LOUT16_4080_pre_brea_1 /DEST pdfmark -240 fnt1 3600 1449(Break)m -4301(the)s 4718(paragraphs)s 5887(of)s 240 fnt6 6228 1451(object)m -240 fnt1 6945 1449(into)m 7439(lines,)s 8066(and)s 8540(apply)s -220 fnt2 3600 1158(@P)m 26(Adjust)k 240 fnt1 4633 1161(\(Section)m -5511(3.16\))s 6084(to)s 6348(e)s 6(v)k 3(ery)k +0 2242(set)m 325(of)s 596(styles:)s 220 fnt2 1275 1734(adjust)m +1916(@Break)s 240 fnt6 2772 1739(object)m +[ /Dest /LOUT19_4213_pre_brea_1 /DEST pdfmark +240 fnt1 3600 1737(Break)m +4301(the)s 4718(paragraphs)s 5887(of)s 240 fnt6 6228 1739(object)m +240 fnt1 6945 1737(into)m 7439(lines,)s 8066(and)s 8540(apply)s +220 fnt2 3600 1446(@P)m 26(Adjust)k 240 fnt1 4633 1449(\(Section)m +5511(3.17\))s 6084(to)s 6348(e)s 6(v)k 3(ery)k 6949(line)s 7388(e)s 3(xcept)k 8094(the)s 8467(last)s -8883(in)s 3600 873(each)m 4095(paragraph;)s -[ /Dest /LOUT12_1501_pre_brea_1 /DEST pdfmark -220 fnt2 1128 365(outdent)m -1916(@Break)s 240 fnt6 2772 370(object)m -[ /Dest /LOUT16_4080_pre_brea_2 /DEST pdfmark -240 fnt1 3600 368(Lik)m 2(e)k -220 fnt2 4122 365(adjust)m 240 fnt1 4703 368(,)m 4840(e)s 3(xcept)k -5551(that)s 220 fnt2 6000 365(2.0f @Wide {} &0i)m 240 fnt1 7809 368(is)m -8049(inserted)s 8894(at)s +8883(in)s 3600 1161(each)m 4095(paragraph;)s +[ /Dest /LOUT16_1489_pre_brea_1 /DEST pdfmark +220 fnt2 1128 653(outdent)m +1916(@Break)s 240 fnt6 2772 658(object)m +[ /Dest /LOUT19_4213_pre_brea_2 /DEST pdfmark +240 fnt1 3600 656(Lik)m 2(e)k +220 fnt2 4122 653(adjust)m 240 fnt1 4703 656(,)m 4840(e)s 3(xcept)k +5551(that)s 220 fnt2 6000 653(2.0f @Wide {} &0i)m 240 fnt1 7809 656(is)m +8049(inserted)s 8894(at)s 3600 368(the)m 3981(be)s 3(ginning)k +5022(of)s 5326(e)s 6(v)k 3(ery)k 5935(line)s +6382(e)s 3(xcept)k 7096(the)s 7477(\207rst,)s 7988(creating)s +8843(an)s 3600 80(outdented)m 4592(paragraph)s 5595(\(the)s 6012(outdent)s +6780(width)s 7372(may)s 7828(be)s 8100(changed)s 8946(\211)s + grestore gsave 1417 -15423 translate @@ -11224,170 +11416,171 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -240 fnt6 1417 -1580(3.4.)m 1871(@Br)s 8(eak)k 240 fnt5 -10250 -1583(43)m gsave +240 fnt6 1417 -1580(3.4.)m +1871(@Br)s 8(eak)k 240 fnt5 10250 -1583(43)m gsave 1417 -15423 translate -240 fnt1 9066 13412 0 13303 240 288 60 LoutGraphic +240 fnt1 +9066 13412 0 13303 240 288 60 LoutGraphic gsave 1 LoutMargSet grestore -3600 13249(the)m 3981(be)s 3(ginning)k 5022(of)s -5326(e)s 6(v)k 3(ery)k 5935(line)s 6382(e)s 3(xcept)k -7096(the)s 7477(\207rst,)s 7988(creating)s 8843(an)s 3600 12961(outdented)m -4592(paragraph)s 5595(\(the)s 6012(outdent)s 6780(width)s 7372(may)s -7828(be)s 8100(changed)s 8946(\211)s 3600 12673(see)m 3961(belo)s 6(w\);)k - -[ /Dest /LOUT12_1501_pre_brea_2 /DEST pdfmark -220 fnt2 1187 12175(r)m 2(agged)k 1916(@Break)s 240 fnt6 -2772 12180(object)m -[ /Dest /LOUT16_4080_pre_brea_3 /DEST pdfmark -240 fnt1 3600 12178(Break)m 4222(the)s 4559(paragraphs)s -5648(of)s 240 fnt6 5908 12180(object)m 240 fnt1 6545 12178(into)m -6960(lines,)s 7507(b)s 4(ut)k 7858(do)s 8140(not)s -8495(adjust)s 3600 11890(the)m 3948(lines)s 4450(\(`ragged)s 5317(right'\);)s - -[ /Dest /LOUT12_1501_pre_brea_3 /DEST pdfmark -220 fnt2 1077 11382(cr)m 2(agged)k 1916(@Break)s 240 fnt6 -2772 11387(object)m -[ /Dest /LOUT16_4080_pre_brea_4 /DEST pdfmark -240 fnt1 3600 11385(Lik)m 2(e)k 220 fnt2 -4125 11382(r)m 2(agged)k 240 fnt1 4794 11385(,)m 4934(e)s 3(xcept)k -5648(that)s 6099(each)s 6628(line)s 7075(will)s 7534(be)s -7849(centred)s 8644(with)s 3600 11097(respect)m 4336(to)s 4575(the)s -4923(others;)s -[ /Dest /LOUT12_1501_pre_brea_4 /DEST pdfmark -220 fnt2 1114 10589(rr)m 2(agged)k 1916(@Break)s -240 fnt6 2772 10594(object)m -[ /Dest /LOUT16_4080_pre_brea_5 /DEST pdfmark -240 fnt1 3600 10592(Lik)m 2(e)k -220 fnt2 4115 10589(r)m 2(agged)k 240 fnt1 4784 10592(,)m +3600 13249(see)m 3961(belo)s 6(w\);)k +[ /Dest /LOUT16_1489_pre_brea_2 /DEST pdfmark +220 fnt2 1187 12751(r)m 2(agged)k +1916(@Break)s 240 fnt6 2772 12756(object)m +[ /Dest /LOUT19_4213_pre_brea_3 /DEST pdfmark +240 fnt1 3600 12754(Break)m +4222(the)s 4559(paragraphs)s 5648(of)s 240 fnt6 5908 12756(object)m +240 fnt1 6545 12754(into)m 6960(lines,)s 7507(b)s 4(ut)k +7858(do)s 8140(not)s 8495(adjust)s 3600 12466(the)m 3948(lines)s +4450(\(`ragged)s 5317(right'\);)s +[ /Dest /LOUT16_1489_pre_brea_3 /DEST pdfmark +220 fnt2 1077 11958(cr)m 2(agged)k +1916(@Break)s 240 fnt6 2772 11963(object)m +[ /Dest /LOUT19_4213_pre_brea_4 /DEST pdfmark +240 fnt1 3600 11961(Lik)m 2(e)k +220 fnt2 4125 11958(r)m 2(agged)k 240 fnt1 4794 11961(,)m +4934(e)s 3(xcept)k 5648(that)s 6099(each)s 6628(line)s +7075(will)s 7534(be)s 7849(centred)s 8644(with)s 3600 11673(respect)m +4336(to)s 4575(the)s 4923(others;)s +[ /Dest /LOUT16_1489_pre_brea_4 /DEST pdfmark +220 fnt2 1114 11165(rr)m 2(agged)k +1916(@Break)s 240 fnt6 2772 11170(object)m +[ /Dest /LOUT19_4213_pre_brea_5 /DEST pdfmark +240 fnt1 3600 11168(Lik)m 2(e)k +220 fnt2 4115 11165(r)m 2(agged)k 240 fnt1 4784 11168(,)m 4914(e)s 3(xcept)k 5618(that)s 6059(each)s 6577(line)s -7014(will)s 7463(be)s 7768(right-justi\207ed)s 3600 10304(with)m 4082(respect)s +7014(will)s 7463(be)s 7768(right-justi\207ed)s 3600 10880(with)m 4082(respect)s 4818(to)s 5057(the)s 5405(others)s 6040(\(`ragged)s 6907(left'\);)s -[ /Dest /LOUT12_1501_pre_brea_5 /DEST pdfmark -220 fnt2 1065 9796(or)m 2(agged)k 1916(@Break)s 240 fnt6 -2772 9801(object)m -[ /Dest /LOUT16_4080_pre_brea_6 /DEST pdfmark -240 fnt1 3600 9799(The)m 4028(ob)s 3(vious)k -4835(combination)s 6088(of)s 220 fnt2 6359 9796(r)m 2(agged)k -240 fnt1 7088 9799(and)m 220 fnt2 7492 9796(outdent)m 240 fnt1 -8220 9799(;)m -[ /Dest /LOUT12_1501_pre_brea_6 /DEST pdfmark -220 fnt2 1413 9292(lines)m 1916(@Break)s 240 fnt6 -2772 9297(object)m -[ /Dest /LOUT16_4080_pre_brea_7 /DEST pdfmark -240 fnt1 3600 9295(Break)m 4284(the)s 4685(paragraphs)s -5837(of)s 240 fnt6 6161 9297(object)m 240 fnt1 6861 9295(into)m -7339(lines)s 7893(at)s 8178(the)s 8579(same)s 3600 9007(points)m +[ /Dest /LOUT16_1489_pre_brea_5 /DEST pdfmark +220 fnt2 1065 10372(or)m 2(agged)k 1916(@Break)s 240 fnt6 +2772 10377(object)m +[ /Dest /LOUT19_4213_pre_brea_6 /DEST pdfmark +240 fnt1 3600 10375(The)m 4028(ob)s 3(vious)k +4835(combination)s 6088(of)s 220 fnt2 6359 10372(r)m 2(agged)k +240 fnt1 7088 10375(and)m 220 fnt2 7492 10372(outdent)m 240 fnt1 +8220 10375(;)m +[ /Dest /LOUT16_1489_pre_brea_6 /DEST pdfmark +220 fnt2 1413 9868(lines)m 1916(@Break)s 240 fnt6 +2772 9873(object)m +[ /Dest /LOUT19_4213_pre_brea_7 /DEST pdfmark +240 fnt1 3600 9871(Break)m 4284(the)s 4685(paragraphs)s +5837(of)s 240 fnt6 6161 9873(object)m 240 fnt1 6861 9871(into)m +7339(lines)s 7893(at)s 8178(the)s 8579(same)s 3600 9583(points)m 4235(that)s 4651(the)s 3(y)k 5113(are)s 5458(brok)s 2(en)k 6177(into)s 6600(lines)s 7101(in)s 7342(the)s 7689(input,)s -8286(and)s 8688(also)s 3600 8719(at)m 3819(concatenation)s 5190(symbols)s -6026(of)s 6283(the)s 6617(form)s 220 fnt2 7128 8716(&)m -240 fnt6 7270 8721(k)m 220 fnt2 7380 8716(b)m 240 fnt1 -7540 8719(for)m 7865(an)s 3(y)k 240 fnt6 8248 8721(k)m -240 fnt1 8404 8719(greater)m 3600 8431(than)m 4069(1.)s 4354(Do)s +8286(and)s 8688(also)s 3600 9295(at)m 3819(concatenation)s 5190(symbols)s +6026(of)s 6283(the)s 6617(form)s 220 fnt2 7128 9292(&)m +240 fnt6 7270 9297(k)m 220 fnt2 7380 9292(b)m 240 fnt1 +7540 9295(for)m 7865(an)s 3(y)k 240 fnt6 8248 9297(k)m +240 fnt1 8404 9295(greater)m 3600 9007(than)m 4069(1.)s 4354(Do)s 4700(not)s 5067(adjust)s 5698(the)s 6047(lines.)s 6663(An)s 3(y)k 7127(spaces)s 7803(at)s 8035(the)s 8384(start)s 8855(of)s -3600 8143(a)m 3766(line)s 4180(other)s 4731(than)s 5200(the)s +3600 8719(a)m 3766(line)s 4180(other)s 4731(than)s 5200(the)s 5548(\207rst)s 5979(line)s 6393(will)s 6819(appear)s 7516(in)s 7759(the)s 8107(output;)s -[ /Dest /LOUT12_1501_pre_brea_7 /DEST pdfmark -220 fnt2 1303 7635(clines)m 1916(@Break)s -240 fnt6 2772 7640(object)m -[ /Dest /LOUT16_4080_pre_brea_8 /DEST pdfmark -240 fnt1 3600 7638(Break)m 4288(the)s -4693(paragraphs)s 5849(of)s 240 fnt6 6177 7640(object)m 240 fnt1 -6881 7638(into)m 7363(lines)s 7921(as)s 8228(for)s 220 fnt2 -8623 7635(lines)m 3600 7347(@Break)m 240 fnt1 4396 7350(,)m 4503(then)s +[ /Dest /LOUT16_1489_pre_brea_7 /DEST pdfmark +220 fnt2 1303 8211(clines)m 1916(@Break)s +240 fnt6 2772 8216(object)m +[ /Dest /LOUT19_4213_pre_brea_8 /DEST pdfmark +240 fnt1 3600 8214(Break)m 4288(the)s +4693(paragraphs)s 5849(of)s 240 fnt6 6177 8216(object)m 240 fnt1 +6881 8214(into)m 7363(lines)s 7921(as)s 8228(for)s 220 fnt2 +8623 8211(lines)m 3600 7923(@Break)m 240 fnt1 4396 7926(,)m 4503(then)s 4972(centre)s 5611(each)s 6106(line)s 6520(with)s 7002(respect)s 7738(to)s 7977(the)s 8325(others;)s -[ /Dest /LOUT12_1501_pre_brea_8 /DEST pdfmark -220 fnt2 1337 6842(r)m -3(lines)k -1916(@Break)s 240 fnt6 2772 6847(object)m -[ /Dest /LOUT16_4080_pre_brea_9 /DEST pdfmark -240 fnt1 3600 6845(Break)m -4288(the)s 4693(paragraphs)s 5849(of)s 240 fnt6 6177 6847(object)m -240 fnt1 6881 6845(into)m 7363(lines)s 7921(as)s 8228(for)s -220 fnt2 8623 6842(lines)m 3600 6554(@Break)m 240 fnt1 4396 6557(,)m +[ /Dest /LOUT16_1489_pre_brea_8 /DEST pdfmark +220 fnt2 1337 7418(r)m -3(lines)k +1916(@Break)s 240 fnt6 2772 7423(object)m +[ /Dest /LOUT19_4213_pre_brea_9 /DEST pdfmark +240 fnt1 3600 7421(Break)m +4288(the)s 4693(paragraphs)s 5849(of)s 240 fnt6 6177 7423(object)m +240 fnt1 6881 7421(into)m 7363(lines)s 7921(as)s 8228(for)s +220 fnt2 8623 7418(lines)m 3600 7130(@Break)m 240 fnt1 4396 7133(,)m 4535(then)s 5036(right-)s 5555(justify)s 6251(each)s 6778(line)s -7224(with)s 7738(respect)s 8506(to)s 8778(the)s 3600 6269(others.)m +7224(with)s 7738(respect)s 8506(to)s 8778(the)s 3600 6845(others.)m -[ /Dest /LOUT12_1501_pre_brea_9 /DEST pdfmark -0 5816(If)m 235(the)s 588(paragraph)s 1606(w)s 2(as)k +[ /Dest /LOUT16_1489_pre_brea_9 /DEST pdfmark +0 6392(If)m 235(the)s 588(paragraph)s 1606(w)s 2(as)k 2032(an)s 2320(entire)s 2924(component)s 4053(of)s 4329(a)s 4501(g)s 1(alle)k 3(y)k 15(,)k 5178(so)s 5449(will)s 5880(each)s 6380(of)s 6656(its)s 6937(lines)s -7444(be;)s 7787(otherwise)s 8778(the)s 0 5528(lines)m 502(are)s -849(enclosed)s 1744(in)s 1987(a)s 220 fnt2 2153 5525(@OneRo)m 3(w)k -240 fnt1 3284 5528(symbol)m 4044(after)s 4540(breaking.)s 480 5154(The)m +7444(be;)s 7787(otherwise)s 8778(the)s 0 6104(lines)m 502(are)s +849(enclosed)s 1744(in)s 1987(a)s 220 fnt2 2153 6101(@OneRo)m 3(w)k +240 fnt1 3284 6104(symbol)m 4044(after)s 4540(breaking.)s 480 5730(The)m 911(length)s 1570(of)s 1845(the)s 2196(g)s 1(ap)k 2598(used)s 3099(to)s 3341(separate)s 4183(the)s 4535(lines)s 5040(produced)s 5993(by)s 6291(paragraph)s 7307(breaking)s 8201(is)s -8415(al)s 2(w)k 2(ays)k 220 fnt2 0 4863(1v)m -240 fnt1 231 4866(.)m 395(Ho)s 6(we)k 6(v)k 3(er)k 9(,)k -1355(the)s 220 fnt2 1703 4863(v)m 240 fnt1 1872 4866(unit)m +8415(al)s 2(w)k 2(ays)k 220 fnt2 0 5439(1v)m +240 fnt1 231 5442(.)m 395(Ho)s 6(we)k 6(v)k 3(er)k 9(,)k +1355(the)s 220 fnt2 1703 5439(v)m 240 fnt1 1872 5442(unit)m 2304(itself)s 2852(and)s 3256(the)s -[ /Dest /LOUT16_4080_pre_brea_10 /DEST pdfmark +[ /Dest /LOUT19_4213_pre_brea_10 /DEST pdfmark 3604(g)s 1(ap)k 4002(mode)s 4590(may)s 5056(be)s 5338(changed:)s 240 fnt6 -1503 4363(gap)m 220 fnt2 1916 4358(@Break)m 240 fnt6 2772 4363(object)m -240 fnt1 3600 4361(W)m 9(ithin)k 240 fnt6 4312 4363(object)m -240 fnt1 4900 4361(,)m 5008(tak)s 2(e)k 5460(the)s +1503 4939(gap)m 220 fnt2 1916 4934(@Break)m 240 fnt6 2772 4939(object)m +240 fnt1 3600 4937(W)m 9(ithin)k 240 fnt6 4312 4939(object)m +240 fnt1 4900 4937(,)m 5008(tak)s 2(e)k 5460(the)s 5809(v)s 6(alue)k 6377(of)s 6649(the)s 220 fnt2 -6998 4358(v)m 240 fnt1 7167 4361(unit)m 7600(to)s 7839(be)s -8122(the)s 8471(length)s 3600 4073(of)m 240 fnt6 3871 4075(gap)m -240 fnt1 4224 4073(;)m -[ /Dest /LOUT12_1501_pre_brea_10 /DEST pdfmark -1375 3572(+)m 240 fnt6 1503 3574(gap)m -220 fnt2 1916 3569(@Break)m 240 fnt6 2772 3574(object)m 240 fnt1 -3600 3572(W)m 9(ithin)k 240 fnt6 4320 3574(object)m 240 fnt1 -4908 3572(,)m 5024(tak)s 2(e)k 5485(the)s 5841(v)s 6(alue)k -6418(of)s 6698(the)s 220 fnt2 7054 3569(v)m 240 fnt1 -7232 3572(unit)m 7673(to)s 7920(be)s 8211(lar)s 4(ger)k -8832(by)s 3600 3284(the)m 3948(length)s 4603(of)s 240 fnt6 -4874 3286(gap)m 240 fnt1 5287 3284(than)m 5756(it)s 5948(w)s 2(ould)k +6998 4934(v)m 240 fnt1 7167 4937(unit)m 7600(to)s 7839(be)s +8122(the)s 8471(length)s 3600 4649(of)m 240 fnt6 3871 4651(gap)m +240 fnt1 4224 4649(;)m +[ /Dest /LOUT16_1489_pre_brea_10 /DEST pdfmark +1375 4148(+)m 240 fnt6 1503 4150(gap)m +220 fnt2 1916 4145(@Break)m 240 fnt6 2772 4150(object)m 240 fnt1 +3600 4148(W)m 9(ithin)k 240 fnt6 4320 4150(object)m 240 fnt1 +4908 4148(,)m 5024(tak)s 2(e)k 5485(the)s 5841(v)s 6(alue)k +6418(of)s 6698(the)s 220 fnt2 7054 4145(v)m 240 fnt1 +7232 4148(unit)m 7673(to)s 7920(be)s 8211(lar)s 4(ger)k +8832(by)s 3600 3860(the)m 3948(length)s 4603(of)s 240 fnt6 +4874 3862(gap)m 240 fnt1 5287 3860(than)m 5756(it)s 5948(w)s 2(ould)k 6603(otherwise)s 7588(ha)s 4(v)k 3(e)k 8089(been;)s -[ /Dest /LOUT12_1501_pre_brea_11 /DEST pdfmark -1383 2779(\211)m 240 fnt6 1503 2781(gap)m 220 fnt2 1916 2776(@Break)m -240 fnt6 2772 2781(object)m 240 fnt1 3600 2779(W)m 9(ithin)k -240 fnt6 4309 2781(object)m 240 fnt1 4897 2779(,)m 5000(tak)s 2(e)k +[ /Dest /LOUT16_1489_pre_brea_11 /DEST pdfmark +1383 3355(\211)m 240 fnt6 1503 3357(gap)m 220 fnt2 1916 3352(@Break)m +240 fnt6 2772 3357(object)m 240 fnt1 3600 3355(W)m 9(ithin)k +240 fnt6 4309 3357(object)m 240 fnt1 4897 3355(,)m 5000(tak)s 2(e)k 5448(the)s 5792(v)s 6(alue)k 6356(of)s 6623(the)s -220 fnt2 6968 2776(v)m 240 fnt1 7133 2779(unit)m 7561(to)s -7796(be)s 8074(smaller)s 8832(by)s 3600 2491(the)m 3948(length)s -4603(of)s 240 fnt6 4874 2493(gap)m 240 fnt1 5287 2491(than)m +220 fnt2 6968 3352(v)m 240 fnt1 7133 3355(unit)m 7561(to)s +7796(be)s 8074(smaller)s 8832(by)s 3600 3067(the)m 3948(length)s +4603(of)s 240 fnt6 4874 3069(gap)m 240 fnt1 5287 3067(than)m 5756(it)s 5948(w)s 2(ould)k 6603(otherwise)s 7588(ha)s 4(v)k 3(e)k 8089(been.)s -[ /Dest /LOUT12_1501_pre_brea_12 /DEST pdfmark -0 1986(In)m 256(each)s 751(case,)s 1269(the)s -1617(mode)s 2205(of)s 240 fnt6 2476 1988(gap)m 240 fnt1 -2889 1986(is)m 3099(adopted)s 3915(within)s 240 fnt6 4583 1988(object)m -240 fnt1 5171 1986(.)m 480 1612(The)m 220 fnt2 908 1609(@Break)m -240 fnt1 1764 1612(symbol)m 2524(also)s 2962(controls)s 3783(h)s 1(yphenation:)k -220 fnt2 1141 1104(h)m 6(yphen @Break)k 240 fnt6 2772 1109(object)m - -[ /Dest /LOUT16_4080_pre_brea_11 /DEST pdfmark -240 fnt1 3600 1107(Permit)m 4296(h)s 1(yphenation)k 5536(within)s -6204(the)s 6552(paragraphs)s 7652(of)s 240 fnt6 7923 1109(object)m -240 fnt1 8511 1107(;)m -[ /Dest /LOUT12_1501_pre_brea_13 /DEST pdfmark -220 fnt2 897 599(noh)m 6(yphen @Break)k -240 fnt6 2772 604(object)m -[ /Dest /LOUT16_4080_pre_brea_12 /DEST pdfmark -240 fnt1 3600 602(Prohibit)m 4440(h)s 1(yphenation)k +[ /Dest /LOUT16_1489_pre_brea_12 /DEST pdfmark +0 2562(In)m 256(each)s 751(case,)s 1269(the)s +1617(mode)s 2205(of)s 240 fnt6 2476 2564(gap)m 240 fnt1 +2889 2562(is)m 3099(adopted)s 3915(within)s 240 fnt6 4583 2564(object)m +240 fnt1 5171 2562(.)m 480 2188(The)m 220 fnt2 908 2185(@Break)m +240 fnt1 1764 2188(symbol)m 2524(also)s 2962(controls)s 3783(h)s 1(yphenation:)k +220 fnt2 1141 1680(h)m 6(yphen @Break)k 240 fnt6 2772 1685(object)m + +[ /Dest /LOUT19_4213_pre_brea_11 /DEST pdfmark +240 fnt1 3600 1683(Permit)m 4296(h)s 1(yphenation)k 5536(within)s +6204(the)s 6552(paragraphs)s 7652(of)s 240 fnt6 7923 1685(object)m +240 fnt1 8511 1683(;)m +[ /Dest /LOUT16_1489_pre_brea_13 /DEST pdfmark +220 fnt2 897 1175(noh)m 6(yphen @Break)k +240 fnt6 2772 1180(object)m +[ /Dest /LOUT19_4213_pre_brea_12 /DEST pdfmark +240 fnt1 3600 1178(Prohibit)m 4440(h)s 1(yphenation)k 5691(within)s 6370(the)s 6729(paragraphs)s 7840(of)s 240 fnt6 -8122 604(object)m 240 fnt1 8710 602(;)m 8833(all)s 3600 314(h)m 1(yphenation)k +8122 1180(object)m 240 fnt1 8710 1178(;)m 8833(all)s 3600 890(h)m 1(yphenation)k 4897(g)s 1(aps)k 5443(without)s 6291(e)s 3(xception)k 7332(re)s 6(v)k 3(ert)k 7996(to)s 8292(edge-)s -8812(to-)s +8812(to-)s 3600 602(edge)m 4108(mode.)s +[ /Dest /LOUT16_1489_pre_brea_14 /DEST pdfmark +0 99(The)m 220 fnt2 +428 96(@Break)m 240 fnt1 1284 99(also)m 1722(has)s 2092(options)s +2848(which)s 3490(control)s 4222(wido)s 6(w)k 4922(and)s +5326(orphan)s 6048(lines:)s grestore gsave 1417 -15423 translate @@ -11428,128 +11621,141 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -240 fnt5 1417 -1583(44)m 240 fnt6 7498 -1580(Chapter)m 8348(3.)s -8622(Pr)s 8(ede\207ned)k 9717(symbols)s gsave +240 fnt5 1417 -1583(44)m +240 fnt6 7498 -1580(Chapter)m 8348(3.)s 8622(Pr)s 8(ede\207ned)k +9717(symbols)s gsave 1417 -15423 translate -240 fnt1 9066 13368 0 13259 240 288 60 LoutGraphic +240 fnt1 9066 13368 0 13257 240 288 60 LoutGraphic gsave 0 LoutMargSet grestore -3600 13205(edge)m 4108(mode.)s - -[ /Dest /LOUT12_1501_pre_brea_14 /DEST pdfmark -0 12702(The)m 220 fnt2 428 12699(@Break)m 240 fnt1 1284 12702(also)m -1722(has)s 2092(options)s 2848(which)s 3490(control)s 4222(wido)s 6(w)k -4922(and)s 5326(orphan)s 6048(lines:)s 220 fnt2 480 12194(unbreakab)m 4(le\207rst @Break)k -240 fnt6 3059 12199(ob)m 3293(-)s 480 11911(ject)m -[ /Dest /LOUT16_4080_pre_brea_13 /DEST pdfmark +220 fnt2 480 13200(unbreakab)m 4(le\207rst @Break)k +240 fnt6 3059 13205(ob)m 3293(-)s 480 12917(ject)m +[ /Dest /LOUT19_4213_pre_brea_13 /DEST pdfmark 240 fnt1 -3600 12197(Pre)m 6(v)k 3(ent)k 4431(column)s 5256(and)s +3600 13203(Pre)m 6(v)k 3(ent)k 4431(column)s 5256(and)s 5710(page)s 6268(breaks)s 6993(\(i.e.)s 7458(pre)s 6(v)k 3(ent)k -8276(a)s 8492(g)s 1(alle)k 3(y)k 3600 11909(from)m +8276(a)s 8492(g)s 1(alle)k 3(y)k 3600 12915(from)m 4147(splitting\))s 5081(between)s 5959(the)s 6330(\207rst)s 6784(and)s -7212(second)s 7958(lines)s 8483(of)s 8778(the)s 3600 11621(paragraphs)m -4700(of)s 240 fnt6 4971 11623(object)m 240 fnt1 5559 11621(;)m +7212(second)s 7958(lines)s 8483(of)s 8778(the)s 3600 12627(paragraphs)m +4700(of)s 240 fnt6 4971 12629(object)m 240 fnt1 5559 12627(;)m -[ /Dest /LOUT12_1501_pre_brea_15 /DEST pdfmark -220 fnt2 480 11113(unbreakab)m 4(lelast @Break)k 240 fnt6 3059 11118(ob)m -3293(-)s 480 10830(ject)m -[ /Dest /LOUT16_4080_pre_brea_14 /DEST pdfmark -240 fnt1 3600 11116(Pre)m 6(v)k 3(ent)k +[ /Dest /LOUT16_1489_pre_brea_15 /DEST pdfmark +220 fnt2 480 12119(unbreakab)m 4(lelast @Break)k 240 fnt6 3059 12124(ob)m +3293(-)s 480 11836(ject)m +[ /Dest /LOUT19_4213_pre_brea_14 /DEST pdfmark +240 fnt1 3600 12122(Pre)m 6(v)k 3(ent)k 4429(column)s 5252(and)s 5704(page)s 6261(breaks)s 6984(between)s -7886(the)s 8282(last)s 8722(and)s 3600 10828(second)m 4323(last)s +7886(the)s 8282(last)s 8722(and)s 3600 11834(second)m 4323(last)s 4714(lines)s 5216(of)s 5487(the)s 5835(paragraphs)s 6935(of)s -240 fnt6 7206 10830(object)m 240 fnt1 7794 10828(.)m -[ /Dest /LOUT12_1501_pre_brea_16 /DEST pdfmark -0 10325(These)m +240 fnt6 7206 11836(object)m 240 fnt1 7794 11834(.)m +[ /Dest /LOUT16_1489_pre_brea_16 /DEST pdfmark +0 11331(These)m 612(options)s 1353(w)s 2(ork)k 1889(by)s 2168(adding)s -2858(the)s 220 fnt2 3191 10322(u)m 240 fnt1 3344 10325(\(unbreakable\))m +2858(the)s 220 fnt2 3191 11328(u)m 240 fnt1 3344 11331(\(unbreakable\))m 4705(suf\207x)s 5290(to)s 5514(the)s 5847(appropriate)s 6976(g)s 1(aps)k -7450(during)s 8113(paragraph)s 0 10037(breaking,)m 959(so)s 1241(their)s +7450(during)s 8113(paragraph)s 0 11043(breaking,)m 959(so)s 1241(their)s 1754(precise)s 2502(ef)s 6(fect)k 3114(is)s 3340(as)s 3606(described)s 4595(for)s 4949(this)s 5361(suf\207x.)s 6086(These)s 6729(options)s 7501(may)s 7983(be)s 8281(counter)s 8998(-)s -0 9749(manded)m 800(by)s 220 fnt2 1078 9746(breakab)m 4(le\207rst @Break)k -240 fnt1 3292 9749(and)m 220 fnt2 3680 9746(breakab)m 4(lelast @Break.)k -240 fnt1 5983 9749(The)m 6395(width)s 6981(of)s 7236(the)s -7568(outdenting)s 8629(used)s 0 9461(in)m 243(the)s 220 fnt2 -591 9458(outdent)m 240 fnt1 1379 9461(style)m 1886(may)s 2352(be)s +0 10755(manded)m 800(by)s 220 fnt2 1078 10752(breakab)m 4(le\207rst @Break)k +240 fnt1 3292 10755(and)m 220 fnt2 3680 10752(breakab)m 4(lelast @Break.)k +240 fnt1 5983 10755(The)m 6395(width)s 6981(of)s 7236(the)s +7568(outdenting)s 8629(used)s 0 10467(in)m 243(the)s 220 fnt2 +591 10464(outdent)m 240 fnt1 1379 10467(style)m 1886(may)s 2352(be)s 2634(changed)s 3490(lik)s 2(e)k 3902(this:)s 220 fnt2 -480 8953({ setoutdent)m 240 fnt6 1769 8958(width)m 220 fnt2 2430 8953(} @Break)m -240 fnt6 480 8670(object)m 240 fnt1 3600 8956(W)m 9(ithin)k -240 fnt6 4310 8958(object)m 240 fnt1 4898 8956(,)m 5003(whene)s 6(v)k 3(er)k +480 9959({ setoutdent)m 240 fnt6 1769 9964(width)m 220 fnt2 2430 9959(} @Break)m +240 fnt6 480 9676(object)m 240 fnt1 3600 9962(W)m 9(ithin)k +240 fnt6 4310 9964(object)m 240 fnt1 4898 9962(,)m 5003(whene)s 6(v)k 3(er)k 5982(outdenting)s 7057(is)s 7265(required,)s 8166(use)s 240 fnt6 -8539 8958(width)m 240 fnt1 3600 8668(for)m 3983(the)s 4377(amount)s +8539 9964(width)m 240 fnt1 3600 9674(for)m 3983(the)s 4377(amount)s 5201(of)s 5518(outdenting.)s 6751(Note)s 7318(that)s 7782(this)s -8224(does)s 8760(not)s 3600 8380(itself)m 4161(cause)s 4761(a)s +8224(does)s 8760(not)s 3600 9386(itself)m 4161(cause)s 4761(a)s 4940(switch)s 5634(to)s 5886(outdenting)s 6976(style.)s 7604(The)s -8045(width)s 8660(may)s 3600 8092(be)m 3887(preceded)s 4813(by)s -220 fnt2 5112 8089(+)m 240 fnt1 5298 8092(or)m 220 fnt2 -5562 8089(\211)m 240 fnt1 5749 8092(to)m 5993(indicate)s 6811(a)s +8045(width)s 8660(may)s 3600 9098(be)m 3887(preceded)s 4813(by)s +220 fnt2 5112 9095(+)m 240 fnt1 5298 9098(or)m 220 fnt2 +5562 9095(\211)m 240 fnt1 5749 9098(to)m 5993(indicate)s 6811(a)s 6982(change)s 7721(to)s 7965(the)s 8319(e)s 3(xisting)k -3600 7804(outdent)m 4378(v)s 6(alue.)k -[ /Dest /LOUT12_1501_pre_brea_17 /DEST pdfmark -480 7085(Se)m 6(v)k 3(eral)k +3600 8810(outdent)m 4378(v)s 6(alue.)k +[ /Dest /LOUT16_1489_pre_brea_17 /DEST pdfmark +480 8091(Se)m 6(v)k 3(eral)k 1310(options)s 2135(may)s 2669(be)s 3020(gi)s 6(v)k 3(en)k -3668(to)s 3976(the)s 220 fnt2 4392 7082(@Break)m 240 fnt1 -5317 7085(symbol)m 6145(simultaneously)s 15(,)k 7754(in)s 8065(an)s 3(y)k -8531(order)s 13(.)k 0 6797(F)m 3(or)k 389(e)s 3(xample,)k -220 fnt2 480 6296({ adjust 1.2fx h)m 6(yphen } @Break ...)k 240 fnt1 0 5798(is)m +3668(to)s 3976(the)s 220 fnt2 4392 8088(@Break)m 240 fnt1 +5317 8091(symbol)m 6145(simultaneously)s 15(,)k 7754(in)s 8065(an)s 3(y)k +8531(order)s 13(.)k 0 7803(F)m 3(or)k 389(e)s 3(xample,)k +220 fnt2 480 7302({ adjust 1.2fx h)m 6(yphen } @Break ...)k 240 fnt1 0 6804(is)m 210(a)s 375(typical)s 1079(initial)s 1689(v)s 6(alue.)k 2365(There)s 2977(may)s 3442(be)s 3723(empty)s 4375(objects)s -5102(and)s 220 fnt2 5505 5795(@Null)m 240 fnt1 6149 5798(objects)m +5102(and)s 220 fnt2 5505 6801(@Null)m 240 fnt1 6149 6804(objects)m 6877(in)s 7119(the)s 7466(left)s 7842(parameter)s 8855(of)s -220 fnt2 0 5507(@Break)m 240 fnt1 796 5510(;)m 908(these)s -1455(are)s 1802(ignored.)s 240 fnt5 0 4717(3.5.)m 471(@Space)s +220 fnt2 0 6513(@Break)m 240 fnt1 796 6516(;)m 908(these)s +1455(are)s 1802(ignored.)s 240 fnt5 0 5723(3.5.)m 471(@Space)s [ /Dest /LOUTspace /DEST pdfmark -240 fnt1 480 4240(The)m 220 fnt2 911 4237(@Space)m 240 fnt1 -1812 4240(symbol)m -[ /Dest /LOUT16_4080_pre_spac_1 /DEST pdfmark +240 fnt1 480 5246(The)m 220 fnt2 911 5243(@Space)m 240 fnt1 +1812 5246(symbol)m +[ /Dest /LOUT19_4213_pre_spac_1 /DEST pdfmark 2576(changes)s 3402(the)s 3754(v)s 6(alue)k -4326(of)s 4601(the)s 220 fnt2 4953 4237(s)m 240 fnt1 -5120 4240(unit)m 5556(of)s 5831(measurement)s 7169(\(Section)s -[ /Dest /LOUT16_4080_pre_spac_2 /DEST pdfmark +4326(of)s 4601(the)s 220 fnt2 4953 5243(s)m 240 fnt1 +5120 5246(unit)m 5556(of)s 5831(measurement)s 7169(\(Section)s +[ /Dest /LOUT19_4213_pre_spac_2 /DEST pdfmark 8026(3.2\))s -8458(within)s 0 3952(its)m 276(right)s 787(parameter)s 1801(to)s +8458(within)s 0 4958(its)m 276(right)s 787(parameter)s 1801(to)s 2040(the)s 2388(v)s 6(alue)k 2956(gi)s 6(v)k 3(en)k 3536(by)s 3830(the)s 4178(left)s 4555(parameter:)s 220 fnt2 -480 3451(1c @Space { a b c d })m 240 fnt1 0 2955(has)m 370(result)s 480 2502(a)m -1153(b)s 1833(c)s 2499(d)s 0 2049(As)m 311(for)s -643(the)s 220 fnt2 985 2046(@Break)m 240 fnt1 1835 2049(symbol,)m +480 4457(1c @Space { a b c d })m 240 fnt1 0 3961(has)m 370(result)s 480 3508(a)m +1153(b)s 1833(c)s 2499(d)s 0 3055(As)m 311(for)s +643(the)s 220 fnt2 985 3052(@Break)m 240 fnt1 1835 3055(symbol,)m 2641(the)s 2982(left)s 3353(parameter)s 4361(of)s 220 fnt2 -4626 2046(@Space)m 240 fnt1 5517 2049(may)m 5976(be)s 6252(gi)s 6(v)k 3(en)k +4626 3052(@Space)m 240 fnt1 5517 3055(may)m 5976(be)s 6252(gi)s 6(v)k 3(en)k 6826(relati)s 6(v)k 3(e)k 7582(to)s 7815(the)s -8156(enclosing)s 220 fnt2 0 1758(s)m 240 fnt1 163 1761(unit,)m +8156(enclosing)s 220 fnt2 0 2764(s)m 240 fnt1 163 2767(unit,)m 642(and)s 1046(it)s 1238(may)s 1704(include)s 2464(a)s 2630(g)s 1(ap)k 3028(mode.)s 3724(Note)s 4245(that)s -4663(the)s 220 fnt2 5011 1758(@F)m 6(ont)k 240 fnt1 -5723 1761(symbol)m 6483(also)s 6921(sets)s 7330(the)s 220 fnt2 -7678 1758(s)m 240 fnt1 7841 1761(unit.)m 480 1387(The)m 906(left)s -1280(parameter)s 2292(of)s 2560(the)s 220 fnt2 2906 1384(@Space)m -240 fnt1 3800 1387(symbol)m 4558(may)s 5021(also)s 5456(hold)s +4663(the)s 220 fnt2 5011 2764(@F)m 6(ont)k 240 fnt1 +5723 2767(symbol)m 6483(also)s 6921(sets)s 7330(the)s 220 fnt2 +7678 2764(s)m 240 fnt1 7841 2767(unit.)m 480 2393(The)m 906(left)s +1280(parameter)s 2292(of)s 2560(the)s 220 fnt2 2906 2390(@Space)m +240 fnt1 3800 2393(symbol)m 4558(may)s 5021(also)s 5456(hold)s 5938(an)s 3(y)k 6332(one)s 6732(of)s 7000(the)s 7346(\207v)s 3(e)k 7755(special)s 8470(v)s 6(alues)k -220 fnt2 0 1096(lout)m 240 fnt1 349 1099(,)m 220 fnt2 -461 1096(compress)m 240 fnt1 1406 1099(,)m 220 fnt2 1518 1096(separ)m 2(ate)k -240 fnt1 2362 1099(,)m 220 fnt2 2474 1096(troff)m 240 fnt1 -2849 1099(,)m 2961(and)s 220 fnt2 3371 1096(te)m 6(x)k -240 fnt1 3656 1099(,)m 3768(which)s 4415(control)s 5152(the)s +220 fnt2 0 2102(lout)m 240 fnt1 349 2105(,)m 220 fnt2 +461 2102(compress)m 240 fnt1 1406 2105(,)m 220 fnt2 1518 2102(separ)m 2(ate)k +240 fnt1 2362 2105(,)m 220 fnt2 2474 2102(troff)m 240 fnt1 +2849 2105(,)m 2961(and)s 220 fnt2 3371 2102(te)m 6(x)k +240 fnt1 3656 2105(,)m 3768(which)s 4415(control)s 5152(the)s 5505(w)s 2(ay)k 5962(in)s 6210(which)s 6857(Lout)s -7374(treats)s 7946(white)s 8539(space)s 0 811(separating)m 1047(tw)s 2(o)k -1470(objects.)s 2324(The)s 2764(names)s 220 fnt2 3439 808(troff)m -240 fnt1 3887 811(and)m 220 fnt2 4304 808(te)m 6(x)k -240 fnt1 4661 811(indicate)m 5486(that)s 5917(the)s 6278(beha)s 4(viour)k -7303(of)s 7587(these)s 8147(options)s 8916(is)s 0 523(inspired)m +7374(treats)s 7946(white)s 8539(space)s 0 1817(separating)m 1047(tw)s 2(o)k +1470(objects.)s 2324(The)s 2764(names)s 220 fnt2 3439 1814(troff)m +240 fnt1 3887 1817(and)m 220 fnt2 4304 1814(te)m 6(x)k +240 fnt1 4661 1817(indicate)m 5486(that)s 5917(the)s 6278(beha)s 4(viour)k +7303(of)s 7587(these)s 8147(options)s 8916(is)s 0 1529(inspired)m 828(by)s 1122(these)s 1669(other)s 2220(document)s 3224(formatting)s -4285(systems.)s +4285(systems.)s 480 1155(The)m 897(def)s 2(ault)k 1607(setting,)s +220 fnt2 2339 1152(lout)m 240 fnt1 2688 1155(,)m 2784(produces)s +3687(as)s 3926(man)s 3(y)k 4498(spaces)s 5161(in)s +5393(the)s 5729(output)s 6390(as)s 6629(there)s 7150(are)s +7486(in)s 7717(the)s 8054(input.)s 8698(The)s 220 fnt2 +0 864(compress)m 240 fnt1 1017 867(setting)m 1719(causes)s 2407(all)s +2712(sequences)s 3746(of)s 4029(tw)s 2(o)k 4452(or)s +4723(more)s 5283(white)s 5882(space)s 6482(characters)s 7512(to)s +7764(be)s 8058(treated)s 8778(the)s 0 579(same)m 556(as)s +815(one)s 1227(white)s 1823(space)s 2419(character)s 13(.)k +3454(The)s 220 fnt2 3891 576(separ)m 2(ate)k 240 fnt1 +4804 579(setting)m 5504(is)s 5723(lik)s 2(e)k 220 fnt2 +6144 576(compress)m 240 fnt1 7159 579(b)m 4(ut)k 7530(also)s +7977(causes)s 8662(zero)s 0 291(white)m 587(spaces)s 1263(between)s +2118(tw)s 2(o)k 2529(objects)s 3258(\(b)s 4(ut)k +3700(not)s 4067(within)s 4736(one)s 5138(w)s 2(ord\))k +5757(to)s 5997(be)s 6280(treated)s 6988(the)s 7337(same)s +7885(as)s 8136(one)s 8539(white)s grestore gsave 1417 -15423 translate @@ -11590,146 +11796,147 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -240 fnt6 1417 -1578(3.5.)m 1871(@Space)s 240 fnt5 10250 -1581(45)m -gsave +240 fnt6 1417 -1578(3.5.)m +1871(@Space)s 240 fnt5 10250 -1581(45)m gsave 1417 -15423 translate 240 fnt1 9066 13370 0 13261 240 288 60 LoutGraphic gsave 1 LoutMargSet grestore -480 13207(The)m 897(def)s 2(ault)k 1607(setting,)s 220 fnt2 -2339 13204(lout)m 240 fnt1 2688 13207(,)m 2784(produces)s 3687(as)s -3926(man)s 3(y)k 4498(spaces)s 5161(in)s 5393(the)s -5729(output)s 6390(as)s 6629(there)s 7150(are)s 7486(in)s -7717(the)s 8054(input.)s 8698(The)s 220 fnt2 0 12916(compress)m -240 fnt1 1017 12919(setting)m 1719(causes)s 2407(all)s 2712(sequences)s -3746(of)s 4029(tw)s 2(o)k 4452(or)s 4723(more)s -5283(white)s 5882(space)s 6482(characters)s 7512(to)s 7764(be)s -8058(treated)s 8778(the)s 0 12631(same)m 556(as)s 815(one)s -1227(white)s 1823(space)s 2419(character)s 13(.)k 3454(The)s -220 fnt2 3891 12628(separ)m 2(ate)k 240 fnt1 4804 12631(setting)m -5504(is)s 5723(lik)s 2(e)k 220 fnt2 6144 12628(compress)m -240 fnt1 7159 12631(b)m 4(ut)k 7530(also)s 7977(causes)s -8662(zero)s 0 12343(white)m 587(spaces)s 1263(between)s 2118(tw)s 2(o)k -2529(objects)s 3258(\(b)s 4(ut)k 3700(not)s 4067(within)s -4736(one)s 5138(w)s 2(ord\))k 5757(to)s 5997(be)s -6280(treated)s 6988(the)s 7337(same)s 7885(as)s 8136(one)s -8539(white)s 0 12055(space)m 587(character)s 13(.)k 480 11681(The)m -220 fnt2 902 11678(troff)m 240 fnt1 1330 11681(setting)m 2013(is)s -2216(the)s 2557(same)s 3097(as)s 220 fnt2 3340 11678(lout)m -240 fnt1 3742 11681(e)m 3(xcept)k 4416(that)s 4828(where)s 6(v)k 3(er)k -5761(a)s 5920(sentence)s 6792(ends)s 7275(at)s 7500(the)s -7841(end)s 8238(of)s 8502(a)s 8661(line,)s 0 11393(one)m -415(e)s 3(xtra)k 962(space)s 1562(is)s 1785(added.)s -2535(F)s 3(ormally)k 15(,)k 3513(when)s 4102(tw)s 2(o)k -4525(objects)s 5266(are)s 5627(separated)s 6600(by)s 6907(white)s -7507(space)s 8108(characters)s 0 11105(which)m 660(include)s 1439(at)s -1689(least)s 2205(one)s 2625(ne)s 6(wline)k 3451(character)s 9(,)k -4442(and)s 4864(the)s 5231(\207rst)s 5680(object)s 6343(is)s -6572(a)s 6756(w)s 2(ord)k 7323(ending)s 8046(in)s -8308(an)s 3(y)k 8724(one)s 0 10817(of)m 288(a)s -471(certain)s 1194(set)s 1536(of)s 1824(sequences)s 2862(of)s -3150(characters,)s 4241(the)s 4606(e)s 3(xtra)k 5157(space)s -5761(is)s 5988(added.)s 6741(The)s 7186(set)s 7528(of)s -7816(sequences)s 8855(of)s 0 10529(characters)m 1025(depends)s 1868(on)s -2173(the)s 2528(current)s 3272(language)s 4199(and)s 4610(is)s -4828(de\207ned)s 5598(in)s 5849(the)s 220 fnt2 6204 10526(langdef)m -240 fnt1 6987 10529(for)m 7333(that)s 7758(language)s 8686(\(see)s -0 10241(Section)m 774(3.9\).)s 480 9867(The)m 220 fnt2 930 9864(te)m 6(x)k -240 fnt1 1297 9867(option)m 1989(is)s 2221(the)s 2592(most)s -3139(complicated.)s 4494(First,)s 5060(the)s 220 fnt2 5430 9864(compress)m -240 fnt1 6458 9867(option)m 7149(is)s 7382(applied.)s 8272(Then,)s -8894(at)s 0 9579(e)m 6(v)k 3(ery)k 576(sentence)s -1455(ending,)s 2213(whether)s 3043(or)s 3302(not)s 3667(at)s -3899(the)s 4246(end)s 4650(of)s 4921(a)s 5086(line,)s -5551(one)s 5952(e)s 3(xtra)k 6486(space)s 7073(is)s -7282(added.)s 8018(A)s 8247(sentence)s 0 9291(ending)m 709(is)s -923(de\207ned)s 1690(as)s 1944(for)s 220 fnt2 2286 9288(troff)m -240 fnt1 2726 9291(e)m 3(xcept)k 3411(that,)s 3880(in)s -4127(addition)s 4972(to)s 5215(the)s 5568(preceding)s 6568(w)s 2(ord)k +0 13207(space)m +587(character)s 13(.)k 480 12833(The)m 220 fnt2 902 12830(troff)m +240 fnt1 1330 12833(setting)m 2013(is)s 2216(the)s 2557(same)s +3097(as)s 220 fnt2 3340 12830(lout)m 240 fnt1 3742 12833(e)m 3(xcept)k +4416(that)s 4828(where)s 6(v)k 3(er)k 5761(a)s +5920(sentence)s 6792(ends)s 7275(at)s 7500(the)s 7841(end)s +8238(of)s 8502(a)s 8661(line,)s 0 12545(one)m 415(e)s 3(xtra)k +962(space)s 1562(is)s 1785(added.)s 2535(F)s 3(ormally)k 15(,)k +3513(when)s 4102(tw)s 2(o)k 4525(objects)s 5266(are)s +5627(separated)s 6600(by)s 6907(white)s 7507(space)s 8108(characters)s +0 12257(which)m 660(include)s 1439(at)s 1689(least)s 2205(one)s +2625(ne)s 6(wline)k 3451(character)s 9(,)k 4442(and)s +4864(the)s 5231(\207rst)s 5680(object)s 6343(is)s 6572(a)s +6756(w)s 2(ord)k 7323(ending)s 8046(in)s 8308(an)s 3(y)k +8724(one)s 0 11969(of)m 288(a)s 471(certain)s 1194(set)s +1536(of)s 1824(sequences)s 2862(of)s 3150(characters,)s 4241(the)s +4606(e)s 3(xtra)k 5157(space)s 5761(is)s 5988(added.)s +6741(The)s 7186(set)s 7528(of)s 7816(sequences)s 8855(of)s +0 11681(characters)m 1025(depends)s 1868(on)s 2173(the)s 2528(current)s +3272(language)s 4199(and)s 4610(is)s 4828(de\207ned)s 5598(in)s +5849(the)s 220 fnt2 6204 11678(langdef)m 240 fnt1 6987 11681(for)m +7333(that)s 7758(language)s 8686(\(see)s 0 11393(Section)m 774(3.10\).)s +480 11019(The)m 220 fnt2 930 11016(te)m 6(x)k 240 fnt1 +1297 11019(option)m 1989(is)s 2221(the)s 2592(most)s 3139(complicated.)s +4494(First,)s 5060(the)s 220 fnt2 5430 11016(compress)m 240 fnt1 +6458 11019(option)m 7149(is)s 7382(applied.)s 8272(Then,)s 8894(at)s +0 10731(e)m 6(v)k 3(ery)k 576(sentence)s 1455(ending,)s +2213(whether)s 3043(or)s 3302(not)s 3667(at)s 3899(the)s +4246(end)s 4650(of)s 4921(a)s 5086(line,)s 5551(one)s +5952(e)s 3(xtra)k 6486(space)s 7073(is)s 7282(added.)s +8018(A)s 8247(sentence)s 0 10443(ending)m 709(is)s 923(de\207ned)s +1690(as)s 1944(for)s 220 fnt2 2286 10440(troff)m 240 fnt1 +2726 10443(e)m 3(xcept)k 3411(that,)s 3880(in)s 4127(addition)s +4972(to)s 5215(the)s 5568(preceding)s 6568(w)s 2(ord)k 7120(ha)s 4(ving)k 7825(to)s 8068(end)s 8476(in)s -8724(one)s 0 9003(of)m 268(a)s 431(certain)s 1134(set)s +8724(one)s 0 10155(of)m 268(a)s 431(certain)s 1134(set)s 1456(of)s 1724(sequences)s 2742(of)s 3010(characters,)s 4081(the)s 4426(character)s 5357(preceding)s 6350(that)s 6765(sequence)s 7695(must)s -8217(e)s 3(xist)k 8722(and)s 0 8715(must)m 525(be)s +8217(e)s 3(xist)k 8722(and)s 0 9867(must)m 525(be)s 807(a)s 973(lo)s 6(wer)k 4(-case)k 2053(letter)s 13(.)k 2693(A)s 2924(character)s 3858(is)s 4068(a)s 4234(lo)s 6(wer)k 4(-case)k 5314(letter)s 5864(if,)s 6116(in)s 6359(the)s 6707(Lout)s -7219(Character)s 8208(Mapping)s 0 8427(\207le)m 393(\(Section)s 1278(3.3\))s +7219(Character)s 8208(Mapping)s 0 9579(\207le)m 393(\(Section)s 1278(3.3\))s 1738(associated)s 2810(with)s 3325(the)s 3705(current)s 4473(font,)s 4997(an)s 5313(upper)s 4(-case)k 6432(equi)s 6(v)k 6(alent)k -7508(of)s 7811(the)s 8192(character)s 0 8139(is)m 210(de\207ned.)s -240 fnt5 0 7396(3.6.)m 471(@YUnit,)s 1432(@ZUnit,)s 2380(@CurrYUnit,)s +7508(of)s 7811(the)s 8192(character)s 0 9291(is)m 210(de\207ned.)s +240 fnt5 0 8548(3.6.)m 471(@YUnit,)s 1432(@ZUnit,)s 2380(@CurrYUnit,)s 3859(and)s 4300(@CurrZUnit)s [ /Dest /LOUTyunit /DEST pdfmark -240 fnt1 480 6925(The)m 220 fnt2 -917 6922(@YUnit)m 240 fnt1 1741 6925(symbol)m -[ /Dest /LOUT16_4080_pre_yuni_1 /DEST pdfmark +240 fnt1 480 8077(The)m 220 fnt2 +917 8074(@YUnit)m 240 fnt1 1741 8077(symbol)m +[ /Dest /LOUT19_4213_pre_yuni_1 /DEST pdfmark -[ /Dest /LOUT16_4080_pre_yuni_2 /DEST pdfmark +[ /Dest /LOUT19_4213_pre_yuni_2 /DEST pdfmark 2510(changes)s 3342(the)s 3699(v)s 6(alue)k 4277(of)s 4557(the)s 220 fnt2 -4915 6922(y)m 240 fnt1 5092 6925(unit)m 5534(of)s 5814(measurement)s -7158(\(Section)s 8020(3.2\))s 8458(within)s 0 6637(its)m 276(right)s +4915 8074(y)m 240 fnt1 5092 8077(unit)m 5534(of)s 5814(measurement)s +7158(\(Section)s 8020(3.2\))s 8458(within)s 0 7789(its)m 276(right)s 787(parameter)s 1801(to)s 2040(the)s 2388(v)s 6(alue)k 2956(gi)s 6(v)k 3(en)k 3536(by)s 3830(the)s -4178(left)s 4555(parameter:)s 220 fnt2 480 6136(1c @YUnit { ...)m 13( })k -240 fnt1 0 5642(ensures)m 760(that)s 1170(the)s 1510(v)s 6(alue)k -2070(of)s 220 fnt2 2333 5639(1y)m 240 fnt1 2615 5642(within)m +4178(left)s 4555(parameter:)s 220 fnt2 480 7288(1c @YUnit { ...)m 13( })k +240 fnt1 0 6794(ensures)m 760(that)s 1170(the)s 1510(v)s 6(alue)k +2070(of)s 220 fnt2 2333 6791(1y)m 240 fnt1 2615 6794(within)m 3275(the)s 3615(right)s 4118(parameter)s 5124(will)s 5542(be)s -220 fnt2 5816 5639(1c)m 240 fnt1 6043 5642(.)m 6199(The)s -220 fnt2 6619 5639(@ZUnit)m 240 fnt1 7413 5642(symbol)m 8165(is)s -8366(similar)s 9(,)k 0 5354(setting)m 688(the)s 1034(v)s 6(alue)k -1600(of)s 1869(the)s 220 fnt2 2215 5351(z)m 240 fnt1 -2376 5354(unit)m 2806(in)s 3047(its)s 3321(right)s 3830(parameter)s 13(.)k +220 fnt2 5816 6791(1c)m 240 fnt1 6043 6794(.)m 6199(The)s +220 fnt2 6619 6791(@ZUnit)m 240 fnt1 7413 6794(symbol)m 8165(is)s +8366(similar)s 9(,)k 0 6506(setting)m 688(the)s 1034(v)s 6(alue)k +1600(of)s 1869(the)s 220 fnt2 2215 6503(z)m 240 fnt1 +2376 6506(unit)m 2806(in)s 3047(its)s 3321(right)s 3830(parameter)s 13(.)k 4933(Both)s 5453(units)s 5967(ha)s 4(v)k 3(e)k 6466(def)s 2(ault)k 7185(v)s 6(alue)k 7751(zero.)s -8324(The)s 8749(left)s 0 5066(parameter)m 1011(may)s 1473(not)s +8324(The)s 8749(left)s 0 6218(parameter)m 1011(may)s 1473(not)s 1836(include)s 2592(a)s 2755(g)s 1(ap)k 3149(mode,)s 3784(nor)s 4160(may)s 4622(it)s 4811(use)s 5182(the)s -220 fnt2 5526 5063(w)m 240 fnt1 5682 5066(,)m 220 fnt2 -5786 5063(b)m 240 fnt1 5900 5066(,)m 220 fnt2 6003 5063(r)m -240 fnt1 6076 5066(,)m 6180(or)s 6435(of)s 6702(course)s -220 fnt2 7379 5063(d)m 240 fnt1 7545 5066(units,)m 8114(b)s 4(ut)k -8472(it)s 8660(may)s 0 4778(be)m 3(gin)k 577(with)s -220 fnt2 1050 4775(+)m 240 fnt1 1220 4778(or)m 220 fnt2 -1470 4775(-)m 240 fnt1 1584 4778(to)m 1814(indicate)s 2616(that)s +220 fnt2 5526 6215(w)m 240 fnt1 5682 6218(,)m 220 fnt2 +5786 6215(b)m 240 fnt1 5900 6218(,)m 220 fnt2 6003 6215(r)m +240 fnt1 6076 6218(,)m 6180(or)s 6435(of)s 6702(course)s +220 fnt2 7379 6215(d)m 240 fnt1 7545 6218(units,)m 8114(b)s 4(ut)k +8472(it)s 8660(may)s 0 5930(be)m 3(gin)k 577(with)s +220 fnt2 1050 5927(+)m 240 fnt1 1220 5930(or)m 220 fnt2 +1470 5927(-)m 240 fnt1 1584 5930(to)m 1814(indicate)s 2616(that)s 3025(v)s 6(alue)k 3583(is)s 3784(to)s 4014(be)s 4286(added)s 4907(to)s 5136(or)s 5386(subtracted)s 6416(from)s 6931(the)s 7269(current)s 7996(v)s 6(alue.)k 8662(An)s 3(y)k -0 4490(ne)m 3(g)k 1(ati)k 6(v)k 3(e)k -853(result)s 1443(of)s 1714(using)s 220 fnt2 2286 4487(-)m -240 fnt1 2410 4490(will)m 2836(be)s 3118(silently)s 3875(replaced)s -4742(by)s 5036(zero.)s 480 4116(The)m 220 fnt2 913 4113(@CurrYUnit)m -240 fnt1 2159 4116(and)m 220 fnt2 2569 4113(@CurrZUnit)m 240 fnt1 -3803 4116(symbols)m 4658(report)s 5294(the)s 5648(v)s 6(alue)k -6222(of)s 6499(the)s 220 fnt2 6853 4113(y)m 240 fnt1 -7027 4116(and)m 220 fnt2 7437 4113(z)m 240 fnt1 7607 4116(units,)m -8185(in)s 8434(points,)s 0 3828(truncated)m 947(to)s 1186(the)s +0 5642(ne)m 3(g)k 1(ati)k 6(v)k 3(e)k +853(result)s 1443(of)s 1714(using)s 220 fnt2 2286 5639(-)m +240 fnt1 2410 5642(will)m 2836(be)s 3118(silently)s 3875(replaced)s +4742(by)s 5036(zero.)s 480 5268(The)m 220 fnt2 913 5265(@CurrYUnit)m +240 fnt1 2159 5268(and)m 220 fnt2 2569 5265(@CurrZUnit)m 240 fnt1 +3803 5268(symbols)m 4658(report)s 5294(the)s 5648(v)s 6(alue)k +6222(of)s 6499(the)s 220 fnt2 6853 5265(y)m 240 fnt1 +7027 5268(and)m 220 fnt2 7437 5265(z)m 240 fnt1 7607 5268(units,)m +8185(in)s 8434(points,)s 0 4980(truncated)m 947(to)s 1186(the)s 1534(nearest)s 2270(inte)s 3(ger)k 13(.)k 3081(F)s 3(or)k -3470(e)s 3(xample,)k 220 fnt2 480 3327(1i @YUnit { )m 11(The current v)k 5(alue of the y unit is @CurrYUnit })k -240 fnt1 0 2829(produces)m 480 2326(The)m 908(current)s 1644(v)s 6(alue)k +3470(e)s 3(xample,)k 220 fnt2 480 4479(1i @YUnit { )m 11(The current v)k 5(alue of the y unit is @CurrYUnit })k +240 fnt1 0 3981(produces)m 480 3478(The)m 908(current)s 1644(v)s 6(alue)k 2212(of)s 2483(the)s 2831(y)s 3005(unit)s 3437(is)s -3647(72p)s 0 1823(since)m 547(there)s 1080(are)s 1427(72)s +3647(72p)s 0 2975(since)m 547(there)s 1080(are)s 1427(72)s 1721(points)s 2357(in)s 2600(one)s 3002(inch)s 3471(\(at)s 3782(least,)s 4326(Lout)s 4838(thinks)s 5474(there)s 6007(are\).)s -480 1449(These)m 1123(units)s 1655(are)s 2018(not)s 2400(used)s +480 2601(These)m 1123(units)s 1655(are)s 2018(not)s 2400(used)s 2913(internally)s 3898(by)s 4208(Lout.)s 4840(The)s 3(y)k 5399(are)s 5762(supplied)s 6647(as)s 6913(part)s 7360(of)s -7647(the)s 8011(style)s 8534(infor)s 8998(-)s 0 1161(mation)m +7647(the)s 8011(style)s 8534(infor)s 8998(-)s 0 2313(mation)m 731(for)s 1080(the)s 1439(con)s 9(v)k 3(enience)k 2690(of)s 2972(application)s 4102(packages.)s 5154(F)s 3(or)k 5554(e)s 3(xample,)k 6479(the)s 6838(Eq)s 7173(equation)s -8065(formatting)s 0 873(package)m 840(uses)s 1303(them)s 1841(to)s +8065(formatting)s 0 2025(package)m 840(uses)s 1303(them)s 1841(to)s 2080(\207ne-)s 2507(tune)s 2975(the)s 3323(appearance)s 4454(of)s -4725(equations.)s +4725(equations.)s 240 fnt5 0 1232(3.7.)m 471(@SetColour)s 1788(and)s +2229(@SetColor)s +[ /Dest /LOUTcolour /DEST pdfmark +240 fnt1 480 800(The)m 220 fnt2 927 797(@SetColour)m +240 fnt1 2204 800(and)m 220 fnt2 2628 797(@SetColor)m 240 fnt1 +3783 800(symbols,)m +[ /Dest /LOUT19_4213_pre_colo_1 /DEST pdfmark + +[ /Dest /LOUT19_4213_pre_colo_2 /DEST pdfmark +4708(which)s 5370(ha)s 4(v)k 3(e)k +5891(identical)s 6788(ef)s 6(fect,)k 7451(return)s 8098(their)s +8615(right)s 0 512(parameter)m 1047(in)s 1323(the)s 1704(colour)s +2408(speci\207ed)s 3349(by)s 3676(their)s 4206(left)s 4617(parameter)s 13(.)k +5755(The)s 6216(form)s 6773(of)s 7077(the)s 7458(left)s +7868(parameter)s 8916(is)s 0 224(implementation-dependent;)m 2693(in)s 2954(Basser)s +3670(Lout)s 4200(it)s 4410(must)s 4954(be)s 5254(an)s +5555(object)s 6218(whose)s 6904(v)s 6(alue)k 7490(is)s +7719(a)s 7903(sequence)s 8855(of)s grestore gsave 1417 -15423 translate @@ -11766,127 +11973,152 @@ %%IncludeResource: font Helvetica /Helveticafnt2 vec2 /Helvetica LoutRecode /fnt2 { /Helveticafnt2 LoutFont } def +%%IncludeResource: font Times-Italic +/Times-Italicfnt8 vec2 /Times-Italic LoutRecode +/fnt8 { /Times-Italicfnt8 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -240 fnt5 1417 -1583(46)m 240 fnt6 7498 -1580(Chapter)m 8348(3.)s -8622(Pr)s 8(ede\207ned)k 9717(symbols)s gsave +240 fnt5 1417 -1583(46)m +240 fnt6 7498 -1580(Chapter)m 8348(3.)s 8622(Pr)s 8(ede\207ned)k +9717(symbols)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(3.7.)m -471(@SetColour)s 1788(and)s 2229(@SetColor)s -[ /Dest /LOUTcolour /DEST pdfmark -240 fnt1 480 12771(The)m -220 fnt2 927 12768(@SetColour)m 240 fnt1 2204 12771(and)m 220 fnt2 -2628 12768(@SetColor)m 240 fnt1 3783 12771(symbols,)m -[ /Dest /LOUT16_4080_pre_colo_1 /DEST pdfmark - -[ /Dest /LOUT16_4080_pre_colo_2 /DEST pdfmark -4708(which)s 5370(ha)s 4(v)k 3(e)k -5891(identical)s 6788(ef)s 6(fect,)k 7451(return)s 8098(their)s -8615(right)s 0 12483(parameter)m 1047(in)s 1323(the)s 1704(colour)s -2408(speci\207ed)s 3349(by)s 3676(their)s 4206(left)s 4617(parameter)s 13(.)k -5755(The)s 6216(form)s 6773(of)s 7077(the)s 7458(left)s -7868(parameter)s 8916(is)s 0 12195(implementation-dependent;)m 2693(in)s 2954(Basser)s -3670(Lout)s 4200(it)s 4410(must)s 4954(be)s 5254(an)s -5555(object)s 6218(whose)s 6904(v)s 6(alue)k 7490(is)s -7719(a)s 7903(sequence)s 8855(of)s 0 11907(w)m 2(ords)k -634(comprising)s 1763(a)s 1929(PostScript)s 2971(command)s 3973(for)s -4311(setting)s 5001(colour)s 13(.)k 5763(F)s 3(or)k -6152(e)s 3(xample,)k 220 fnt2 480 11406({ 1.0 0.0 0.0 setrgbcolor } @SetColour { hello)m 8(, w)k 2(or)k -3(ld })k -240 fnt1 0 10907(produces)m 915(the)s 1263(red)s 1626(result)s -1.0 0.0 0.0 setrgbcolor 480 10404(hello,)m 1065(w)s 2(orld)k 0.0 0.0 0.0 setrgbcolor -0 9920(Of)m 322(course,)s 1050(a)s 1213(colour)s 1881(output)s +0 13205(w)m 2(ords)k 634(comprising)s +1763(a)s 1929(PostScript)s 2971(command)s 3973(for)s 4311(setting)s +5001(colour)s 13(.)k 5763(F)s 3(or)k 6152(e)s 3(xample,)k +220 fnt2 480 12704({ 1.0 0.0 0.0 setrgbcolor } @SetColour { hello)m 8(, w)k 2(or)k -3(ld })k +240 fnt1 0 12205(produces)m 915(the)s 1263(red)s 1626(result)s +1.0 0.0 0.0 setrgbcolor 480 11702(hello,)m 1065(w)s 2(orld)k 0.0 0.0 0.0 LoutSetRGBColor +0 11218(Of)m 322(course,)s 1050(a)s 1213(colour)s 1881(output)s 2550(de)s 6(vice)k 3222(is)s 3429(needed)s 4162(to)s 4398(see)s 4756(the)s 5101(ef)s 6(fect;)k 5747(on)s 6041(a)s 6204(monochrome)s 7520(de)s 6(vice)k 8191(the)s -8536(result)s 0 9632(will)m 426(be)s 708(some)s 1269(shade)s -1870(of)s 2141(gre)s 3(y)k 15(.)k 480 9258(The)m -220 fnt2 901 9255(@SetColour)m 240 fnt1 2151 9258(command)m 3145(accepts)s +8536(result)s 0 10930(will)m 426(be)s 708(some)s 1269(shade)s +1870(of)s 2141(gre)s 3(y)k 15(.)k 480 10556(The)m +220 fnt2 901 10553(@SetColour)m 240 fnt1 2151 10556(command)m 3145(accepts)s 3892(the)s 4232(special)s 4943(v)s 6(alue)k 220 fnt2 -5504 9255(nochange)m 240 fnt1 6512 9258(for)m 6843(the)s 7183(left)s -7553(parameter)s 13(.)k 8650(This)s 0 8970(v)m 6(alue)k +5504 10553(nochange)m 240 fnt1 6512 10556(for)m 6843(the)s 7183(left)s +7553(parameter)s 13(.)k 8650(This)s 0 10268(v)m 6(alue)k 574(causes)s 1256(the)s 1611(right)s 2129(parameter)s 3150(to)s 3396(ha)s 4(v)k 3(e)k 3904(the)s 4258(colour)s 4936(it)s 5135(w)s 2(ould)k 5797(ha)s 4(v)k 3(e)k -6305(had)s 6716(without)s 7514(the)s 220 fnt2 7869 8967(@SetColour)m -240 fnt1 0 8682(command.)m 1108(An)s 1458(empty)s 2110(left)s +6305(had)s 6716(without)s 7514(the)s 220 fnt2 7869 10265(@SetColour)m +240 fnt1 0 9980(command.)m 1108(An)s 1458(empty)s 2110(left)s 2487(parameter)s 3501(also)s 3939(has)s 4309(this)s 4705(ef)s 6(fect.)k -480 8308(There)m 1132(is)s 1382(no)s 1715(def)s 2(ault)k +480 9606(There)m 1132(is)s 1382(no)s 1715(def)s 2(ault)k 2476(colour)s 9(,)k 3225(so)s 3530(the)s 3918(user)s 4416(must)s 4981(ensure)s 5701(that)s 6159(the)s 6546(root)s 7031(g)s 1(alle)k 3(y)k 7705(or)s 8004(each)s -8539(of)s 8850(its)s 0 8020(components)m 1208(is)s 1418(enclosed)s -2313(in)s 2556(a)s 220 fnt2 2722 8017(@SetColour)m 240 fnt1 -3979 8020(symbol)m 4739(whose)s 5407(left)s 5784(parameter)s 6798(is)s -7008(not)s 220 fnt2 7374 8017(nochange)m 240 fnt1 8330 8020(.)m -480 7646(Lout)m 1046(mak)s 2(es)k 1761(no)s 2109(attempt)s +8539(of)s 8850(its)s 0 9318(components)m 1208(is)s 1418(enclosed)s +2313(in)s 2556(a)s 220 fnt2 2722 9315(@SetColour)m 240 fnt1 +3979 9318(symbol)m 4739(whose)s 5407(left)s 5784(parameter)s 6798(is)s +7008(not)s 220 fnt2 7374 9315(nochange)m 240 fnt1 8330 9318(.)m +480 8944(Lout)m 1046(mak)s 2(es)k 1761(no)s 2109(attempt)s 2939(to)s 3233(understand)s 4396(colour)s 9(,)k 5159(it)s 5406(simply)s 6166(prints)s 6815(the)s 7218(PostScript)s 8315(or)s -8629(PDF)s 0 7358(commands)m 1082(when)s 1652(appropriate.)s 2897(This)s +8629(PDF)s 0 8656(commands)m 1082(when)s 1652(appropriate.)s 2897(This)s 3367(has)s 3731(the)s 4072(adv)s 6(antage)k 5086(of)s 5350(permitting)s 6392(access)s 7047(to)s 7279(an)s 3(y)k -7670(of)s 7934(PostScript')s 13(s)k 0 7070(colour)m 703(models)s +7670(of)s 7934(PostScript')s 13(s)k 0 8368(colour)m 703(models)s 1478(\(some)s 2150(require)s 2915(initialization)s 4210(which)s 4885(can)s -5306(be)s 5621(supplied)s 6522(using)s 220 fnt2 7127 7067(@PrependGr)m 2(aphic)k -240 fnt1 8940 7070(\),)m 0 6782(b)m 4(ut)k 373(the)s +5306(be)s 5621(supplied)s 6522(using)s 220 fnt2 7127 8365(@PrependGr)m 2(aphic)k +240 fnt1 8940 8368(\),)m 0 8080(b)m 4(ut)k 373(the)s 733(disadv)s 6(antage)k 2044(of)s 2326(of)s 6(fering)k 3154(no)s 3459(w)s 2(ay)k 3922(to)s 4172(mak)s 2(e)k 4756(relati)s 6(v)k 3(e)k 5530(changes)s 6364(\(`as)s 6783(before)s 7461(only)s 7953(redder)s 9(,)k 16(')k -8722(and)s 0 6494(so)m 266(on\).)s 480 6120(F)m 3(or)k +8722(and)s 0 7792(so)m 266(on\).)s 480 7418(F)m 3(or)k 870(those)s 1432(who)s 1899(wish)s 2409(to)s 2649(obtain)s 3305(colour)s 3977(without)s 4769(w)s 2(orking)k 5619(v)s 3(ery)k -6096(hard,)s 6629(the)s 220 fnt2 6978 6117(setrgbcolor)m 240 fnt1 -8124 6120(command)m 0 5832(used)m 496(abo)s 3(v)k 3(e)k +6096(hard,)s 6629(the)s 220 fnt2 6978 7415(setrgbcolor)m 240 fnt1 +8124 7418(command)m 0 7130(used)m 496(abo)s 3(v)k 3(e)k 1117(is)s 1325(a)s 4(v)k 6(ailable)k 2232(in)s 2474(e)s 6(v)k 3(ery)k 3048(v)s 3(ersion)k 3805(of)s 4075(PostScript,)s 5162(requires)s 5981(no)s 6273(initialization,)s -7584(and)s 7987(is)s 8196(simple)s 8887(to)s 0 5544(use.)m +7584(and)s 7987(is)s 8196(simple)s 8887(to)s 0 6842(use.)m 485(The)s 915(three)s 1450(numbers,)s 2384(which)s 3028(range)s 3617(from)s 4143(0.0)s 4501(to)s 4742(1.0,)s 5151(determine)s 6164(the)s 6515(intensity)s 7394(of)s 7667(red,)s 8081(green,)s -8722(and)s 0 5256(blue)m 468(respecti)s 6(v)k 3(ely)k 15(.)k +8722(and)s 0 6554(blue)m 468(respecti)s 6(v)k 3(ely)k 15(.)k 1762(Some)s 2363(useful)s 3002(v)s 6(alues)k 3658(for)s 3996(the)s 4344(left)s 4721(parameter)s 5735(are)s 220 fnt2 -480 4691(1.0)m 838(0.0)s 1196(0.0)s 1554(setrgbcolor)s 240 fnt6 -2979 4696(r)m 8(ed)k 220 fnt2 480 4372(0.0)m 838(1.0)s -1196(0.0)s 1554(setrgbcolor)s 240 fnt6 2979 4377(gr)m 8(een)k -220 fnt2 480 4042(0.0)m 838(0.0)s 1196(1.0)s 1554(setrgbcolor)s -240 fnt6 2979 4047(blue)m 220 fnt2 480 3712(1.0)m 838(1.0)s -1196(1.0)s 1554(setrgbcolor)s 240 fnt6 2979 3717(white)m 220 fnt2 -480 3393(0.5)m 837(0.5)s 1194(0.5)s 1551(setrgbcolor)s 240 fnt6 -2979 3398(gr)m 8(e)k 7(y)k 220 fnt2 480 3063(0.0)m -838(0.0)s 1196(0.0)s 1554(setrgbcolor)s 240 fnt6 2979 3068(blac)m 4(k)k -240 fnt1 0 2507(Colouring)m 1042(an)s 1344(object)s 2007(white)s +480 5989(1.0)m 838(0.0)s 1196(0.0)s 1554(setrgbcolor)s 240 fnt6 +2979 5994(r)m 8(ed)k 220 fnt2 480 5670(0.0)m 838(1.0)s +1196(0.0)s 1554(setrgbcolor)s 240 fnt6 2979 5675(gr)m 8(een)k +220 fnt2 480 5340(0.0)m 838(0.0)s 1196(1.0)s 1554(setrgbcolor)s +240 fnt6 2979 5345(blue)m 220 fnt2 480 5010(1.0)m 838(1.0)s +1196(1.0)s 1554(setrgbcolor)s 240 fnt6 2979 5015(white)m 220 fnt2 +480 4691(0.5)m 837(0.5)s 1194(0.5)s 1551(setrgbcolor)s 240 fnt6 +2979 4696(gr)m 8(e)k 7(y)k 220 fnt2 480 4361(0.0)m +838(0.0)s 1196(0.0)s 1554(setrgbcolor)s 240 fnt6 2979 4366(blac)m 4(k)k +240 fnt1 0 3805(Colouring)m 1042(an)s 1344(object)s 2007(white)s 2613(is)s 2841(useful)s 3499(for)s 3856(producing)s 4899(an)s 5200(empty)s 5871(space)s 6477(whose)s 7164(size)s 7609(is)s -7838(that)s 8275(of)s 8565(some)s 0 2219(object.)m 240 fnt5 -0 1426(3.8.)m 471(@Outline)s -[ /Dest /LOUToutline /DEST pdfmark -240 fnt1 480 994(The)m 220 fnt2 -895 991(@Outline)m 240 fnt1 1850 994(symbol)m -[ /Dest /LOUT16_4080_pre_outl_1 /DEST pdfmark -2597(causes)s 3258(all)s -3537(the)s 3872(w)s 2(ords)k 4492(in)s 4722(the)s -5056(right)s 5553(parameter)s 6554(\(which)s 7261(may)s 7714(be)s -7982(an)s 8251(arbitrary)s 0 706(object\))m 712(to)s 951(be)s -1233(printed)s 1968(in)s 2211(outline,)s 2982(rather)s 3598(than)s -4067(\207lled)s 4616(as)s 4866(is)s 5076(usual.)s 5745(F)s 3(or)k -6134(e)s 3(xample,)k 220 fnt2 480 205(@Outline @Bo)m 6(x 24p @F)k 6(ont HELP)k +7838(that)s 8275(of)s 8565(some)s 0 3517(object.)m 480 3143(Since)m +1076(the)s 1434(introduction)s 2670(of)s 2951(te)s 3(xtures)k +3765(to)s 4014(Lout)s 4536(in)s 4789(V)s 26(ersion)k +5587(3.27,)s 6124(direct)s 6737(use)s 7122(of)s 7403(PostScript)s +8455(colour)s 0 2855(setting)m 689(operations)s 1734(such)s 2228(as)s +220 fnt2 2476 2852(setrgbcolor)m 240 fnt1 3620 2855(is)m 3828(deprecated.)s +5025(Instead,)s 5820(Lout)s 6330(of)s 6(fers)k 6930(its)s +7204(o)s 6(wn)k 7666(v)s 3(ersions)k 8509(of)s +8778(the)s 0 2567(standard)m 868(PostScript)s 1910(colour)s 2581(setting)s +3271(operations:)s 2982 12 0 12 240 288 60 480 1831 LoutGr2 +LoutBox 0.0 0.0 0.0 LoutSetRGBColor fill +grestore + +grestore +240 fnt8 624 1983(If)m 864(you)s 1264(want)s +1794(this)s gsave +3462 1831 translate +240 fnt1 3616 12 0 12 240 288 60 LoutGraphic +gsave +LoutBox 0.0 0.0 0.0 LoutSetRGBColor fill +grestore + +grestore +3606(Y)s 22(ou)k 4011(should)s +4716(r)s 3(ather)k 5376(write)s 5920(this)s 220 fnt2 +624 1594(n)m 2(um)k 1096(setg)s 2(r)k 2(a)k 6(y)k +3606(n)s 2(um)k 4078(LoutSetGr)s 2(a)k 6(y)k +624 1210(n)m 2(um)k 1096(n)s 2(um)k 1568(n)s 2(um)k +2040(setrgbcolor)s 3606(n)s 2(um)k 4078(n)s 2(um)k +4550(n)s 2(um)k 5022(LoutSetRGBColor)s 624 826(n)m 2(um)k +1096(n)s 2(um)k 1568(n)s 2(um)k 2040(sethsbcolor)s +3606(n)s 2(um)k 4078(n)s 2(um)k 4550(n)s 2(um)k +5022(LoutSetHSBColor)s gsave +480 295 translate +240 fnt1 2982 12 0 12 240 288 60 LoutGraphic +gsave +LoutBox 0.0 0.0 0.0 LoutSetRGBColor fill +grestore + +grestore +624 442(n)m 2(um)k 1096(n)s 2(um)k +1568(n)s 2(um)k 2040(setcm)s 3(ykcolor)k gsave +3462 295 translate +240 fnt1 +3616 12 0 12 240 288 60 LoutGraphic +gsave +LoutBox 0.0 0.0 0.0 LoutSetRGBColor fill +grestore grestore +3606(n)s 2(um)k 4078(n)s 2(um)k 4550(n)s 2(um)k +5022(LoutSetCMYKColor)s +grestore gsave 1417 -15423 translate 240 fnt1 0 0 0 0 240 288 60 LoutGraphic @@ -11926,126 +12158,342 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -240 fnt6 1417 -1580(3.8.)m 1871(@Outline)s 240 fnt5 10248 -1583(47)m +240 fnt6 1417 -1580(3.7.)m +1871(@SetColour)s 3127(and)s 3553(@SetColor)s 240 fnt5 10248 -1583(47)m gsave 1417 -15423 translate -240 fnt1 9066 13413 0 13413 240 288 60 LoutGraphic +240 fnt1 9066 13413 0 13304 240 288 60 LoutGraphic gsave 1 LoutMargSet grestore -0 13250(produces)m 1336 461 72 180 240 288 60 480 12449 LoutGr2 -LoutBox stroke +0 13250(The)m 462(Lout)s 1008(v)s 3(ersions)k +1887(are)s 2268(equi)s 6(v)k 6(alent)k 3346(to)s +3619(the)s 4001(PostScript)s 5077(ones)s 5601(b)s 4(ut)k +5997(without)s 6822(the)s 7204(unw)s 2(anted)k 8225(ef)s 6(fect)k +8855(of)s 0 12962(causing)m 784(the)s 1132(current)s 1868(te)s 3(xture)k +2584(to)s 2823(be)s 3105(for)s 4(gotten.)k 240 fnt5 +0 12169(3.8.)m 471(@SetT)s 22(extur)k 4(e)k +[ /Dest /LOUTtexture /DEST pdfmark +240 fnt1 +480 11737(The)m 220 fnt2 943 11734(@SetT)m 26(e)k 6(xture)k +240 fnt1 2295 11737(symbol)m +[ /Dest /LOUT19_4213_pre_text_1 /DEST pdfmark +3091(returns)s 3841(its)s 4152(right)s +4699(parameter)s 5749(in)s 6028(the)s 6411(te)s 3(xture)k +7163(speci\207ed)s 8107(by)s 8437(its)s 8749(left)s 0 11449(parameter)m 13(.)k +1105(A)s 1335(te)s 3(xture)k 2051(is)s 2261(a)s +2427(pattern)s 3147(used)s 3644(when)s 4220(\207lling)s 4844(areas)s +5385(to)s 5624(get)s 5976(a)s 6142(te)s 3(xture)k +6858(rather)s 7474(than)s 7943(solid)s 8466(color)s 13(.)k +480 11075(In)m 736(the)s 1084(PostScript)s 2125(w)s 2(orld,)k +2788(te)s 3(xtures)k 3592(are)s 3938(called)s 4566(patterns,)s +5429(and)s 5832(the)s 6180(rele)s 6(v)k 6(ant)k +6997(PostScript)s 8038(commands)s 0 10787(use)m 390(this)s 801(terminology)s 15(.)k +2135(The)s 2578(author)s 3264(has)s 3650(preferred)s 4597(the)s +4960(term)s 5473(`te)s 3(xture')k 6339(because)s 7167(it)s +7375(is)s 7600(more)s 8162(precise:)s 8960(a)s 0 10499(pattern)m +720(could)s 1310(be)s 1592(a)s 1758(pattern)s 2478(for)s +2816(an)s 3(ything.)k 480 10125(The)m 220 fnt2 896 10122(@SetT)m 26(e)k 6(xture)k +240 fnt1 2200 10125(command)m 3189(accepts)s 3931(the)s 4267(special)s +4972(v)s 6(alue)k 220 fnt2 5528 10122(nochange)m 240 fnt1 +6532 10125(for)m 6857(the)s 7193(left)s 7558(parameter)s 13(.)k +8650(This)s 0 9837(v)m 6(alue)k 568(causes)s 1243(the)s +1591(right)s 2102(parameter)s 3116(to)s 3355(ha)s 4(v)k 3(e)k +3856(the)s 4204(te)s 3(xture)k 4920(it)s 5112(w)s 2(ould)k +5767(ha)s 4(v)k 3(e)k 6268(had)s 6672(without)s +7463(the)s 220 fnt2 7810 9834(@SetT)m 26(e)k 6(xture)k +240 fnt1 0 9549(command.)m 1108(An)s 1458(empty)s 2110(left)s +2487(parameter)s 3501(also)s 3939(has)s 4309(this)s 4705(ef)s 6(fect.)k +480 9175(Another)m 1329(special)s 2052(v)s 6(alue)k 2625(is)s +220 fnt2 2840 9172(LoutT)m 26(e)k 6(xtureSolid)k 240 fnt1 +4453 9175(,)m 4565(which)s 5212(means)s 5879(no)s 6177(te)s 3(xture)k +6898(at)s 7135(all,)s 7485(just)s 7895(solid)s 8424(colour)s 13(.)k +0 8887(It)m 207(w)s 2(ould)k 864(be)s 1149(useful)s +1790(to)s 2032(change)s 2768(back)s 3284(to)s 3525(solid)s +4051(colour)s 4724(within)s 5395(an)s 5680(enclosing)s 6653(te)s 3(xtured)k +7493(re)s 3(gion.)k 8268(It)s 8475(is)s 8688(also)s +0 8599(the)m 355(initial)s 973(te)s 3(xture;)k 1752(thus)s +2209(there)s 2749(is)s 2966(no)s 3266(need)s 3783(to)s +4029(ensure)s 4716(that)s 5141(the)s 5496(root)s 5948(g)s 1(alle)k 3(y)k +6589(or)s 6855(each)s 7357(of)s 7635(its)s 7918(components)s +0 8311(is)m 210(enclosed)s 1105(in)s 1348(a)s 220 fnt2 +1514 8308(@SetT)m 26(e)k 6(xture)k 240 fnt1 2830 8311(symbol.)m +480 7937(The)m 934(form)s 1485(of)s 1783(the)s 2158(left)s +2561(parameter)s 3602(is)s 3839(implementation-dependent;)s 6541(in)s 6810(Basser)s +7534(Lout)s 8073(it)s 8292(must)s 8844(be)s 0 7649(an)m +288(object)s 937(whose)s 1610(v)s 6(alue)k 2184(is)s +2399(a)s 2570(sequence)s 3509(of)s 3785(w)s 2(ords)k +4424(comprising)s 5559(PostScript)s 6606(for)s 6949(setting)s 7645(a)s +7816(te)s 3(xture,)k 8588(up)s 8887(to)s 0 7361(and)m +407(including)s 1367(the)s 1718(PostScript)s 220 fnt2 2763 7358(setpatter)m -5(n)k +240 fnt1 3793 7361(command)m 4799(\(or)s 5140(equi)s 6(v)k 6(alent\))k +6255(which)s 6900(installs)s 7630(the)s 7981(te)s 3(xture)k +8701(into)s 0 7073(the)m 347(graphics)s 1207(state.)s 1807(Lout)s +2318(mak)s 2(es)k 2977(no)s 3269(attempt)s 4044(to)s +4282(understand)s 5389(te)s 3(xtures,)k 6248(it)s 6439(simply)s +7143(prints)s 7737(the)s 8084(PostScript)s 0 6785(commands)m 1083(when)s +1654(appropriate.)s 2901(Consult)s 3701([)s +[ /Rect [3772 6785 3867 6947] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTadobe1990ps /ANN pdfmark +3772(1)s 3867(])s +3980(for)s 4312(information)s 5492(about)s 6079(PostScript)s 7116(patterns.)s +7971(Y)s 26(ou')k 2(ll)k 8616(need)s 0 6497(to)m +239(do)s 532(that)s 950(in)s 1193(order)s 1757(to)s +1996(mak)s 2(e)k 2568(sense)s 3142(of)s 3413(the)s +3761(rest)s 4165(of)s 4436(this)s 4832(section.)s 480 6123(Since)m +1065(b)s 4(uilding)k 1909(e)s 6(v)k 3(en)k +2406(a)s 2569(simple)s 3259(te)s 3(xture)k 3972(tak)s 2(es)k +4509(a)s 4672(lot)s 4981(of)s 5249(PostScript)s 6288(and)s +6689(is)s 6896(quite)s 7427(error)s 4(-prone,)k 8614(Lout)s +0 5835(de\207nes)m 721(tw)s 2(o)k 1122(symbols)s 1962(in)s +2197(the)s 2536(PostScript)s 3569(prologue)s 4467(called)s 220 fnt2 +5087 5832(LoutMak)m 4(eT)k 26(e)k 6(xture)k 240 fnt1 +6802 5835(and)m 220 fnt2 7197 5832(LoutSetT)m 26(e)k 6(xture)k +240 fnt1 8708 5835(that)m 0 5547(you)m 415(can)s 804(use)s +1179(to)s 1418(mak)s 2(e)k 1990(and)s 2394(set)s +2719(a)s 2885(te)s 3(xture,)k 3652(lik)s 2(e)k +4064(this:)s 220 fnt2 480 5049({ "1 1 1 0 dg 0 pt 0 pt")m 480 4761( "2 [0 0 2 pt 3 pt] 2 pt 3 pt { ...)m 13( }")k +480 4473( "LoutMak)m 4(eT)k 26(e)k 6(xture LoutSetT)k 26(e)k 6(xture")k +480 4185(} @SetT)m 26(e)k 6(xture ...)k 240 fnt1 0 3691(W)m 19(e')k 2(ll)k +598(e)s 3(xplain)k 1377(both)s 1881(symbols)s 2752(in)s +3016(detail)s 3622(in)s 3887(a)s 4074(moment,)s 4986(b)s 4(ut)k +5369(just)s 5796(brie\210y)s 15(,)k 220 fnt2 6533 3688(LoutMak)m 4(eT)k 26(e)k 6(xture)k +240 fnt1 8278 3691(mak)m 2(es)k 8960(a)s 0 3403(te)m 3(xture,)k +798(lea)s 4(ving)k 1582(a)s 1779(pattern)s 2530(dictionary)s +3584(as)s 3865(returned)s 4750(by)s 220 fnt2 5075 3400(mak)m 4(epatter)k -5(n)k +240 fnt1 6373 3403(on)m 6701(the)s 7080(e)s 3(x)k 3(ecution)k +8092(stack,)s 8722(and)s 220 fnt2 0 3112(LoutSetT)m 26(e)k 6(xture)k +240 fnt1 1510 3115(installs)m 2227(this)s 2612(te)s 3(xture)k +3318(into)s 3732(the)s 4070(current)s 4795(graphics)s 5646(state,)s +6179(lik)s 2(e)k 220 fnt2 6581 3112(setpatter)m -5(n)k +240 fnt1 7597 3115(b)m 4(ut)k 7949(without)s 8729(an)s 3(y)k +0 2827(mention)m 841(of)s 1112(colour)s 13(.)k 220 fnt2 +480 2450(LoutMak)m 4(eT)k 26(e)k 6(xture)k 240 fnt1 +2251 2453(is)m 2508(just)s 2961(a)s 3174(con)s 9(v)k 3(enience)k +4461(de\207nition)s 5483(that)s 5948(constructs)s 7015(a)s 7229(pattern)s +7996(matrix)s 8722(and)s 0 2165(dictionary)m 15(,)k 1054(populating)s +2124(them)s 2655(with)s 3129(the)s 3470(stack)s 4015(elements)s +4907(to)s 5139(its)s 5408(left,)s 5825(then)s 6286(calls)s +220 fnt2 6767 2162(mak)m 4(epatter)k -5(n)k 240 fnt1 +7974 2165(.)m 8131(Y)s 26(ou)k 8565(don')s 4(t)k +0 1877(ha)m 4(v)k 3(e)k 524(to)s 786(use)s +1184(it)s 1399(if)s 1639(you)s 2077(don')s 4(t)k +2661(w)s 2(ant)k 3207(to.)s 3580(The)s 4031(abo)s 3(v)k 3(e)k +4676(e)s 3(xample)k 5562(of)s 220 fnt2 5856 1874(LoutMak)m 4(eT)k 26(e)k 6(xture)k +240 fnt1 7603 1877(sets)m 8035(the)s 8406(pattern)s 0 1589(matrix)m +678(and)s 1082(dictionary)s 2105(as)s 2355(follo)s 6(ws.)k +480 1215(The)m 907(\207rst)s 1336(number)s 2125(is)s 2333(a)s +2498(scale)s 3029(f)s 2(actor)k 9(,)k 3679(and)s +4081(the)s 4428(second)s 5149(and)s 5551(third)s 6058(are)s +6404(horizontal)s 7426(and)s 7828(v)s 3(ertical)k 8593(scale)s +0 927(f)m 2(actors.)k 813(The)s 1243(fourth)s 1886(\()s +220 fnt2 1959 924(0 dg)m 240 fnt1 2374 927(\))m 2504(is)s +2716(an)s 3001(angle)s 3577(of)s 3851(rotation.)s 4760(The)s +5190(\207fth)s 5647(and)s 6053(sixth)s 6577(are)s 6926(horizontal)s +7952(and)s 8359(v)s 3(ertical)k 0 639(shifts.)m 681(These)s +1308(six)s 1642(numbers)s 2517(determine)s 3528(the)s 3876(pattern)s +4596(transformation)s 6059(matrix)s 6737(passed)s 7433(to)s 220 fnt2 +7672 636(mak)m 4(epatter)k -5(n)k 240 fnt1 8879 639(.)m +480 265(The)m 907(remaining)s 1928(elements)s 2826(go)s 3118(into)s +3541(the)s 3888(pattern)s 4606(dictionary)s 15(.)k 220 fnt2 +5723 262(P)m 8(aintT)k 26(ype)k 240 fnt1 6726 265(is)m +6935(set)s 7258(to)s 7496(the)s 7842(\207rst)s 8272(of)s +8541(them,)s grestore -480 fnt1 72 72(HELP)mo +gsave +1417 -15423 translate +240 fnt1 0 0 0 0 240 288 60 LoutGraphic +gsave +1 LoutMargSet grestore -0 11998(Outlining)m 984(is)s -1209(part)s 1654(of)s 1940(the)s 2303(style)s 2824(information,)s -4074(in)s 4332(the)s 4694(same)s 5256(w)s 2(ay)k -5721(as)s 5986(colour)s 9(,)k 6710(font,)s 7216(underlining,)s -8441(and)s 8860(so)s 0 11710(forth.)m 630(Outlining)s 1602(can)s + +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 48 54 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +%%+ font Times-Italic +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-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 +0 0 translate +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +240 fnt5 1417 -1583(48)m +240 fnt6 7498 -1580(Chapter)m 8348(3.)s 8622(Pr)s 8(ede\207ned)k +9717(symbols)s gsave +1417 -15423 translate +240 fnt1 9066 13368 0 13259 240 288 60 LoutGraphic +gsave +0 LoutMargSet +grestore +0 13205(or)m 250(the)s 589(se)s 6(v)k 3(enth)k +1359(item)s 1834(o)s 3(v)k 3(erall)k 2537(\(2)s +2781(in)s 3015(our)s 3384(e)s 3(xample,)k 4289(denoting)s +5171(an)s 5445(uncoloured)s 6571(pattern,)s 7332(which)s 7965(will)s +8381(usually)s 0 12917(be)m 298(the)s 663(best)s 1125(choice;)s +1877(the)s 2242(pattern)s 2979(will)s 3421(be)s 3720(painted)s +4499(in)s 4758(the)s 5123(current)s 5876(colour\),)s 220 fnt2 +6689 12914(BBo)m 6(x)k 240 fnt1 7282 12917(is)m 7509(set)s +7850(to)s 8106(the)s 8471(eighth)s 0 12629(item,)m 538(here)s +220 fnt2 1012 12626([0 0 2 pt 3 pt])m 240 fnt1 2280 12629(,)m 220 fnt2 +2394 12626(XStep)m 240 fnt1 3050 12629(is)m 3267(set)s 3600(to)s +3846(the)s 4201(ninth)s 4757(item,)s 5295(here)s 220 fnt2 +5769 12626(2 pt)m 240 fnt1 6131 12629(,)m 220 fnt2 6246 12626(YStep)m +240 fnt1 6902 12629(is)m 7119(set)s 7451(to)s 7697(the)s +8052(tenth)s 8595(item,)s 0 12341(here)m 220 fnt2 465 12338(3 pt)m +240 fnt1 827 12341(,)m 932(and)s 220 fnt2 1334 12338(P)m 8(aintProc)k +240 fnt1 2329 12341(is)m 2537(set)s 2859(to)s 3096(the)s +3442(ele)s 6(v)k 3(enth)k 4298(and)s 4700(last)s +5089(item,)s 5617(which)s 6257(should)s 6952(be)s 7232(an)s +7513(e)s 3(x)k 3(ecutable)k 8582(array)s 0 12053(as)m +257(sho)s 6(wn.)k 1049(All)s 1417(non-zero)s 2328(lengths)s +3077(must)s 3610(be)s 3900(in)s 4151(absolute)s 5012(units,)s +5591(that)s 6017(is,)s 6291(follo)s 6(wed)k 7201(by)s +220 fnt2 7502 12050(in)m 240 fnt1 7658 12053(,)m 220 fnt2 +7773 12050(cm)m 240 fnt1 8052 12053(,)m 220 fnt2 8167 12050(pt)m +240 fnt1 8346 12053(,)m 8461(or)s 220 fnt2 8728 12050(em)m +240 fnt1 9019 12053(,)m 0 11765(otherwise)m 985(the)s 1333(results)s +2007(will)s 2433(be)s 2715(unpredictable.)s 220 fnt2 480 11388(LoutSetT)m 26(e)k 6(xture)k +240 fnt1 2039 11391(installs)m 2805(the)s 3192(gi)s 6(v)k 3(en)k +3811(te)s 3(xture)k 4566(into)s 5031(the)s 5418(graphics)s +6318(state,)s 6901(preserving)s 8002(the)s 8390(current)s 0 11103(colour)m 13(.)k +819(Y)s 26(ou)k 1318(must)s 1900(use)s 220 fnt2 +2332 11100(LoutSetT)m 26(e)k 6(xture)k 240 fnt1 3909 11103(and)m +4370(you)s 4842(must)s 5424(not)s 5847(use)s 220 fnt2 +6279 11100(setcolorspace)m 240 fnt1 7625 11103(,)m 220 fnt2 7789 11100(setcolor)m +240 fnt1 8557 11103(,)m 8722(and)s 220 fnt2 0 10812(setpatter)m -5(n)k +240 fnt1 967 10815(,)m 1069(because)s 1877(Lout)s 2383(considers)s +3332(colour)s 3998(and)s 4396(te)s 3(xture)k 5107(to)s +5341(be)s 5617(independent)s 6842(of)s 7108(each)s 7597(other)s 9(,)k +8181(and)s 8579(these)s 0 10527(PostScript)m 1042(commands)s 2130(don')s 4(t.)k +480 10153(Another)m 1316(adv)s 6(antage)k 2328(of)s 220 fnt2 +2591 10150(LoutMak)m 4(eT)k 26(e)k 6(xture)k 240 fnt1 +4307 10153(and)m 220 fnt2 4703 10150(LoutSetT)m 26(e)k 6(xture)k +240 fnt1 6214 10153(is)m 6416(that)s 6826(the)s 3(y)k +7281(beha)s 4(v)k 3(e)k 8000(sensibly)s 8829(on)s +0 9865(Le)m 6(v)k 3(el)k 589(1)s 743(PostScript)s +1784(interpreters,)s 2976(which)s 3616(do)s 3908(not)s 4273(ha)s 4(v)k 3(e)k +4773(patterns.)s 5691(Rather)s 6387(than)s 6855(f)s 2(ailing)k +7528(altogether)s 9(,)k 8579(these)s 0 9577(commands)m 1080(will)s +1497(mak)s 2(e)k 2061(sure)s 2506(e)s 6(v)k 3(erything)k +3564(appears)s 4337(in)s 4571(solid)s 5086(colour)s 13(.)k +5839(Be)s 6152(a)s 3(w)k 2(are,)k 6816(though,)s +7580(that)s 7989(interpreters)s 0 9289(e)m 3(xist)k 508(\(e.g)s +220 fnt2 926 9286(gv)m 240 fnt1 1217 9289(ca.)m 1533(1997\))s +2141(which)s 2783(appear)s 3480(to)s 3719(be)s 4001(Le)s 6(v)k 3(el)k +4591(2)s 4765(b)s 4(ut)k 5127(actually)s 5937(lea)s 4(v)k 3(e)k +6490(te)s 3(xtured)k 7328(areas)s 7869(blank.)s 480 8915(F)m 3(or)k +869(information)s 2054(on)s 2351(ho)s 6(w)k 2812(these)s +3359(symbols)s 4208(are)s 4555(implemented,)s 5910(consult)s 6661(Appendix)s +7661(A.)s 240 fnt5 0 8122(3.9.)m 471(@Outline)s +[ /Dest /LOUToutline /DEST pdfmark +240 fnt1 +480 7690(The)m 220 fnt2 895 7687(@Outline)m 240 fnt1 1850 7690(symbol)m + +[ /Dest /LOUT19_4213_pre_outl_1 /DEST pdfmark +2597(causes)s 3258(all)s 3537(the)s 3872(w)s 2(ords)k +4492(in)s 4722(the)s 5056(right)s 5553(parameter)s 6554(\(which)s +7261(may)s 7714(be)s 7982(an)s 8251(arbitrary)s 0 7402(object\))m +712(to)s 951(be)s 1233(printed)s 1968(in)s 2211(outline,)s +2982(rather)s 3598(than)s 4067(\207lled)s 4616(as)s 4866(is)s +5076(usual.)s 5745(F)s 3(or)k 6134(e)s 3(xample,)k +220 fnt2 480 6901(@Outline @Bo)m 6(x 24p @F)k 6(ont HELP)k 240 fnt1 +0 6405(produces)m 1336 461 72 180 240 288 60 480 5604 LoutGr2 +LoutBox stroke +grestore +480 fnt1 72 72(HELP)mo +grestore +0 5153(Outlining)m 984(is)s +1209(part)s 1654(of)s 1940(the)s 2303(style)s 2824(information,)s +4074(in)s 4332(the)s 4694(same)s 5256(w)s 2(ay)k +5721(as)s 5986(colour)s 9(,)k 6710(font,)s 7216(underlining,)s +8441(and)s 8860(so)s 0 4865(forth.)m 630(Outlining)s 1602(can)s 1994(be)s 2278(applied)s 3042(to)s 3284(an)s 3(y)k 3683(font)s 4131(lik)s 2(ely)k 4729(to)s 4970(be)s 5255(used)s 5754(in)s 6000(practice.)s 6921(At)s 7222(the)s -7573(time)s 8055(of)s 8329(writing,)s 0 11422(there)m 528(is)s +7573(time)s 8055(of)s 8329(writing,)s 0 4577(there)m 528(is)s 732(no)s 1020(w)s 2(ay)k 1465(to)s 1699(control)s 2425(the)s 2768(thickness)s 3703(of)s 3969(the)s 4311(outline,)s -5077(and)s 220 fnt2 5475 11419(@Outline)m 240 fnt1 6439 11422(has)m +5077(and)s 220 fnt2 5475 4574(@Outline)m 240 fnt1 6439 4577(has)m 6803(no)s 7091(ef)s 6(fect)k 7681(in)s 7919(PDF)s -8410(output.)s 0 11134(The)m 424(size)s 847(of)s 1114(outlined)s +8410(output.)s 0 4289(The)m 424(size)s 847(of)s 1114(outlined)s 1952(w)s 2(ords)k 2582(is)s 2788(tak)s 2(en)k 3357(by)s 3647(Lout)s 4155(to)s 4390(be)s 4668(the)s 5012(same)s 5555(as)s 5801(if)s 6014(the)s 3(y)k 6473(had)s 6873(not)s 7235(been)s 7740(outlined,)s 8626(e)s 6(v)k 3(en)k -0 10846(though)m 723(the)s 3(y)k 1186(are)s 1533(in)s +0 4001(though)m 723(the)s 3(y)k 1186(are)s 1533(in)s 1776(reality)s 2439(slightly)s 3210(lar)s 4(ger)k 13(.)k -240 fnt5 0 10053(3.9.)m 471(@Language)s 1762(and)s 2203(@CurrLang)s +240 fnt5 0 3208(3.10.)m 591(@Language)s 1882(and)s 2323(@CurrLang)s [ /Dest /LOUTlanguage /DEST pdfmark -240 fnt1 480 9576(The)m 220 fnt2 905 9573(@Language)m 240 fnt1 -2153 9576(symbol)m 2910(informs)s 3701(Lout)s 4210(that)s 4625(its)s +240 fnt1 480 2731(The)m 220 fnt2 905 2728(@Language)m 240 fnt1 +2153 2731(symbol)m 2910(informs)s 3701(Lout)s 4210(that)s 4625(its)s 4898(right)s 5406(parameter)s 6417(is)s 6624(written)s -[ /Dest /LOUT16_4080_pre_lang_1 /DEST pdfmark +[ /Dest /LOUT19_4213_pre_lang_1 /DEST pdfmark 7354(in)s -7594(the)s 7939(language)s 8855(of)s 0 9288(its)m 276(left)s -653(parameter:)s 220 fnt2 480 8787(Danish @Language { ...)m 13( })k 240 fnt1 -0 8288(Basser)m 706(Lout)s 1228(V)s 26(ersion)k 2025(3)s +7594(the)s 7939(language)s 8855(of)s 0 2443(its)m 276(left)s +653(parameter:)s 220 fnt2 480 1942(Danish @Language { ...)m 13( })k 240 fnt1 +0 1443(Basser)m 706(Lout)s 1228(V)s 26(ersion)k 2025(3)s 2199(uses)s 2671(this)s 3077(information)s 4271(in)s 4524(tw)s 2(o)k 4943(w)s 2(ays:)k 5609(to)s 5857(h)s 1(yphenate)k -6906(w)s 2(ords)k 7549(appropriately)s 8887(to)s 0 8000(that)m +6906(w)s 2(ords)k 7549(appropriately)s 8887(to)s 0 1155(that)m 418(language,)s 1389(and)s 1793(to)s 2032(change)s 2766(the)s 3114(v)s 6(alue)k 3682(of)s 3953(the)s 220 fnt2 -4301 7997(@CurrLang)m 240 fnt1 5486 8000(symbol)m 6246(\(see)s 6686(belo)s 6(w\).)k -7508(Other)s 8112(uses,)s 8630(such)s 0 7712(as)m 250(right-to-left)s +4301 1152(@CurrLang)m 240 fnt1 5486 1155(symbol)m 6246(\(see)s 6686(belo)s 6(w\).)k +7508(Other)s 8112(uses,)s 8630(such)s 0 867(as)m 250(right-to-left)s 1422(formatting)s 2483(of)s 2754(certain)s 3460(languages,)s 4524(may)s 4990(be)s 5272(added)s 5902(in)s 6145(the)s 6493(future.)s -480 7338(The)m 953(left)s 1375(parameter)s 2434(must)s 3004(either)s +480 493(The)m 953(left)s 1375(parameter)s 2434(must)s 3004(either)s 3652(be)s 3979(empty)s 4676(\(which)s 5442(means)s 6149(to)s 6433(lea)s 4(v)k 3(e)k 7031(the)s 7424(current)s -8206(language)s 0 7050(unchanged\))m 1167(or)s 1428(else)s 1857(it)s +8206(language)s 0 205(unchanged\))m 1167(or)s 1428(else)s 1857(it)s 2051(must)s 2578(ha)s 4(v)k 3(e)k 3080(been)s 3591(gi)s 6(v)k 3(en)k 4173(in)s 4418(a)s -220 fnt2 4586 7047(langdef)m -[ /Dest /LOUT16_4080_pre_lang_2 /DEST pdfmark -240 fnt1 5363 7050(language)m 6285(de\207nition)s +220 fnt2 4586 202(langdef)m +[ /Dest /LOUT19_4213_pre_lang_2 /DEST pdfmark +240 fnt1 5363 205(language)m 6285(de\207nition)s 7261(at)s 7495(the)s 7845(be)s 3(ginning)k 8855(of)s -0 6762(the)m 348(input:)s 220 fnt2 480 6254(langdef Danish Dansk {)m 240 fnt6 -2993 6259(implementation-dependent)m 220 fnt2 5608 6254(})m 240 fnt1 0 5755(After)m -220 fnt2 571 5752(langdef)m 240 fnt1 1355 5755(comes)m 2025(a)s -2199(sequence)s 3140(of)s 3419(one)s 3829(or)s 4096(more)s -4651(simple)s 5352(w)s 2(ords,)k 6050(which)s 6700(are)s -7055(alternati)s 6(v)k 3(e)k 8117(names)s 8788(for)s -0 5467(the)m 347(language)s 1265(being)s 1849(de\207ned.)s 2716(F)s 3(ollo)k 6(wing)k -3743(them)s 4279(comes)s 4940(an)s 5221(implementation-dependent)s 7843(part)s -8272(between)s 0 5179(braces.)m 760(In)s 1001(Basser)s 1684(Lout)s -2181(V)s 26(ersion)k 2955(3)s 3104(this)s 3486(part)s -3902(contains)s 4736(the)s 5069(name)s 5629(of)s 5885(the)s -6219(Lout)s 6716(h)s 1(yphenation)k 7941(information)s 0 4891(\207le)m -383(\(minus)s 1121(its)s 1419(.lh)s 1745(suf\207x\))s 2441(to)s -2702(be)s 3007(used)s 3527(when)s 4125(h)s 1(yphenating)k -5384(w)s 2(ords)k 6040(in)s 6306(this)s 6725(language,)s -7718(follo)s 6(wed)k 8643(by)s 8960(a)s 0 4603(sequence)m -933(of)s 1204(w)s 2(ords)k 1838(which)s 2480(de\207ne)s -3121(the)s 3469(ends)s 3959(of)s 4230(sentences.)s 5310(F)s 3(or)k -5699(e)s 3(xample:)k 220 fnt2 480 4103(langdef English { english .)m 13( :)k 11( ? ! .\) ?\) !\) })k -240 fnt1 0 3604(de\207nes)m 748(a)s 934(language)s 1874(called)s -2522(English)s 3329(with)s 3831(h)s 1(yphenation)k 5091(patterns)s -5918(\207le)s 220 fnt2 6298 3601(english.lh)m 240 fnt1 7289 3604(and)m -7713(se)s 6(v)k 3(en)k 8326(w)s 2(ays)k -8887(to)s 0 3316(end)m 424(a)s 610(sentence.)s 1617(The)s -2065(use)s 2460(of)s 2751(these)s 3318(sentence)s 4217(endings)s -5034(is)s 5264(described)s 6258(in)s 6521(Section)s 7315(3.5.)s -7799(If)s 8049(there)s 8602(is)s 8833(no)s 0 3028(h)m 1(yphenation)k -1236(\207le)s 1592(a)s 4(v)k 6(ailable,)k 2546(this)s -2937(is)s 3143(indicated)s 4072(by)s 4361(writing)s 220 fnt2 -5099 3025(-)m 240 fnt1 5219 3028(for)m 5552(the)s 5895(\207le)s -6251(name;)s 6877(if)s 7089(there)s 7617(are)s 7959(no)s -8247(sentence)s 0 2740(ends,)m 546(the)s 3(y)k 1009(are)s -1356(simply)s 2061(omitted.)s 480 2366(The)m 220 fnt2 913 2363(@CurrLang)m -240 fnt1 2103 2366(symbol,)m 2920(which)s 3567(has)s 3942(no)s -4240(parameters,)s 5399(e)s 6(v)k 6(aluates)k 6332(to)s -6576(the)s 6929(\207rst)s -[ /Dest /LOUT16_4080_pre_lang_3 /DEST pdfmark -7365(name)s 7944(gi)s 6(v)k 3(en)k -8529(in)s 8778(the)s 220 fnt2 0 2075(langdef)m 240 fnt1 -776 2078(of)m 1047(the)s 1395(language)s 2315(in)s 2558(force)s -3104(at)s 3336(the)s 3684(point)s 4236(where)s 4876(it)s -5068(is)s 5278(in)s 9(v)k 4(ok)k 2(ed:)k -220 fnt2 480 1577(Dansk @Language { )m 11(This is @CurrLang.)k 13( })k 240 fnt1 -0 1078(has)m 370(result)s 480 625(This)m 956(is)s 1166(Danish.)s grestore gsave 1417 -15423 translate 240 fnt1 0 0 0 0 240 288 60 LoutGraphic gsave -1 LoutMargSet +0 LoutMargSet grestore grestore @@ -12057,22 +12505,22 @@ pgsave restore showpage -%%Page: 48 54 +%%Page: 49 55 %%BeginPageSetup %%PageResources: font Times-Roman -%%+ font Times-Bold %%+ font Times-Italic +%%+ font Times-Bold %%+ font Helvetica /pgsave save def %%IncludeResource: font Times-Roman /Times-Romanfnt1 vec2 /Times-Roman LoutRecode /fnt1 { /Times-Romanfnt1 LoutFont } def -%%IncludeResource: font Times-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 Times-Bold +/Times-Boldfnt5 vec2 /Times-Bold LoutRecode +/fnt5 { /Times-Boldfnt5 LoutFont } def %%IncludeResource: font Helvetica /Helveticafnt2 vec2 /Helvetica LoutRecode /fnt2 { /Helveticafnt2 LoutFont } def @@ -12080,64 +12528,164 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -240 fnt5 1417 -1583(48)m 240 fnt6 7498 -1580(Chapter)m 8348(3.)s -8622(Pr)s 8(ede\207ned)k 9717(symbols)s gsave +240 fnt6 1417 -1580(3.10.)m +1991(@Langua)s 2(g)k 2(e)k 3219(and)s 3645(@CurrLang)s +240 fnt5 10249 -1583(49)m gsave 1417 -15423 translate 240 fnt1 9066 13368 0 13259 240 288 60 LoutGraphic gsave -0 LoutMargSet +1 LoutMargSet grestore -0 13205(It)m 205(is)s -415(typically)s 1305(used)s 1802(with)s 2284(the)s 220 fnt2 -2632 13202(@Case)m 240 fnt1 3419 13205(symbol)m 4179(lik)s 2(e)k -4591(this:)s 220 fnt2 480 12704(@CurrLang @Case {)m 480 12416( Danish @Y)m 4(ield tirsdag)k -480 12128( English @Y)m 4(ield )k 11(T)k 26(uesda)k 6(y)k -480 11840( F)m 9(rench @Y)k 4(ield Mardi)k 480 11552(})m 240 fnt1 -0 11058(This)m 476(e)s 3(xample)k 1339(e)s 6(v)k 6(aluates)k +0 13205(the)m 348(input:)s +220 fnt2 480 12697(langdef Danish Dansk {)m 240 fnt6 2993 12702(implementation-dependent)m 220 fnt2 +5608 12697(})m 240 fnt1 0 12198(After)m 220 fnt2 571 12195(langdef)m +240 fnt1 1355 12198(comes)m 2025(a)s 2199(sequence)s 3140(of)s +3419(one)s 3829(or)s 4096(more)s 4651(simple)s 5352(w)s 2(ords,)k +6050(which)s 6700(are)s 7055(alternati)s 6(v)k 3(e)k +8117(names)s 8788(for)s 0 11910(the)m 347(language)s 1265(being)s +1849(de\207ned.)s 2716(F)s 3(ollo)k 6(wing)k 3743(them)s +4279(comes)s 4940(an)s 5221(implementation-dependent)s 7843(part)s 8272(between)s +0 11622(braces.)m 760(In)s 1001(Basser)s 1684(Lout)s 2181(V)s 26(ersion)k +2955(3)s 3104(this)s 3486(part)s 3902(contains)s 4736(the)s +5069(name)s 5629(of)s 5885(the)s 6219(Lout)s 6716(h)s 1(yphenation)k +7941(information)s 0 11334(\207le)m 383(\(minus)s 1121(its)s 1419(.lh)s +1745(suf\207x\))s 2441(to)s 2702(be)s 3007(used)s 3527(when)s +4125(h)s 1(yphenating)k 5384(w)s 2(ords)k 6040(in)s +6306(this)s 6725(language,)s 7718(follo)s 6(wed)k 8643(by)s +8960(a)s 0 11046(sequence)m 933(of)s 1204(w)s 2(ords)k +1838(which)s 2480(de\207ne)s 3121(the)s 3469(ends)s 3959(of)s +4230(sentences.)s 5310(F)s 3(or)k 5699(e)s 3(xample:)k +220 fnt2 480 10546(langdef English { english .)m 13( :)k 11( ? ! .\) ?\) !\) })k 240 fnt1 +0 10047(de\207nes)m 748(a)s 934(language)s 1874(called)s 2522(English)s +3329(with)s 3831(h)s 1(yphenation)k 5091(patterns)s 5918(\207le)s +220 fnt2 6298 10044(english.lh)m 240 fnt1 7289 10047(and)m 7713(se)s 6(v)k 3(en)k +8326(w)s 2(ays)k 8887(to)s 0 9759(end)m 424(a)s +610(sentence.)s 1617(The)s 2065(use)s 2460(of)s 2751(these)s +3318(sentence)s 4217(endings)s 5034(is)s 5264(described)s 6258(in)s +6521(Section)s 7315(3.5.)s 7799(If)s 8049(there)s 8602(is)s +8833(no)s 0 9471(h)m 1(yphenation)k 1236(\207le)s 1592(a)s 4(v)k 6(ailable,)k +2546(this)s 2937(is)s 3143(indicated)s 4072(by)s 4361(writing)s +220 fnt2 5099 9468(-)m 240 fnt1 5219 9471(for)m 5552(the)s +5895(\207le)s 6251(name;)s 6877(if)s 7089(there)s 7617(are)s +7959(no)s 8247(sentence)s 0 9183(ends,)m 546(the)s 3(y)k +1009(are)s 1356(simply)s 2061(omitted.)s 480 8809(The)m 220 fnt2 +913 8806(@CurrLang)m 240 fnt1 2103 8809(symbol,)m 2920(which)s 3567(has)s +3942(no)s 4240(parameters,)s 5399(e)s 6(v)k 6(aluates)k +6332(to)s 6576(the)s 6929(\207rst)s +[ /Dest /LOUT19_4213_pre_lang_3 /DEST pdfmark +7365(name)s 7944(gi)s 6(v)k 3(en)k +8529(in)s 8778(the)s 220 fnt2 0 8518(langdef)m 240 fnt1 +776 8521(of)m 1047(the)s 1395(language)s 2315(in)s 2558(force)s +3104(at)s 3336(the)s 3684(point)s 4236(where)s 4876(it)s +5068(is)s 5278(in)s 9(v)k 4(ok)k 2(ed:)k +220 fnt2 480 8020(Dansk @Language { )m 11(This is @CurrLang.)k 13( })k 240 fnt1 +0 7521(has)m 370(result)s 480 7068(This)m 956(is)s 1166(Danish.)s +0 6615(It)m 205(is)s 415(typically)s 1305(used)s 1802(with)s +2284(the)s 220 fnt2 2632 6612(@Case)m 240 fnt1 3419 6615(symbol)m +4179(lik)s 2(e)k 4591(this:)s 220 fnt2 480 6114(@CurrLang @Case {)m +480 5826( Danish @Y)m 4(ield tirsdag)k 480 5538( English @Y)m 4(ield )k 11(T)k 26(uesda)k 6(y)k +480 5250( F)m 9(rench @Y)k 4(ield Mardi)k 480 4962(})m 240 fnt1 +0 4468(This)m 476(e)s 3(xample)k 1339(e)s 6(v)k 6(aluates)k 2267(to)s 2506(the)s 2854(name)s 3428(of)s 3699(the)s 4047(third)s 4556(day)s 4956(of)s 5227(the)s 5575(week)s -6141(in)s 6384(the)s 6732(current)s 7468(language.)s 480 10684(The)m +6141(in)s 6384(the)s 6732(current)s 7468(language.)s 480 4094(The)m 908(current)s 1644(language)s 2563(is)s 2773(part)s 3204(of)s 3474(the)s 3822(style)s 4329(of)s 4599(an)s 4882(object,)s 5573(lik)s 2(e)k 5984(its)s 6260(font.)s 6809(As)s -7125(e)s 3(xplained)k 8110(in)s 8352(Section)s 0 10396(2.6,)m +7125(e)s 3(xplained)k 8110(in)s 8352(Section)s 0 3806(2.6,)m 419(style)s 939(is)s 1162(inherited)s 2081(through)s 2896(the)s 3257(point)s 3822(of)s 4105(appearance,)s 5300(which)s 5955(for)s 6305(language)s 7238(can)s 7640(be)s 7935(une)s 3(xpected.)k -0 10108(F)m 3(or)k 380(e)s 3(xample,)k 1284(an)s +0 3518(F)m 3(or)k 380(e)s 3(xample,)k 1284(an)s 1557(inde)s 3(x)k 2131(entry)s 2666(which)s 3298(originates)s 4281(in)s 4514(a)s 4671(French)s 5382(chapter)s 6135(b)s 4(ut)k 6487(appears)s 7258(in)s 7491(an)s 7764(English)s 8542(inde)s 3(x)k -0 9820(will)m 426(ha)s 4(v)k 3(e)k 927(English)s +0 3230(will)m 426(ha)s 4(v)k 3(e)k 927(English)s 1715(for)s 2053(its)s 2329(language,)s 3300(so)s 3566(must)s 4091(be)s 4373(e)s 3(xplicitly)k 5326(set)s 5651(to)s -5890(French)s 6611(using)s 220 fnt2 7183 9817(@Language)m 240 fnt1 -8374 9820(.)m 240 fnt5 0 9027(3.10.)m 591(@OneCol)s 1653(and)s +5890(French)s 6611(using)s 220 fnt2 7183 3227(@Language)m 240 fnt1 +8374 3230(.)m 240 fnt5 0 2437(3.11.)m 591(@OneCol)s 1653(and)s 2094(@OneRo)s 2(w)k [ /Dest /LOUTonerow /DEST pdfmark -240 fnt1 480 8595(The)m 220 fnt2 -913 8592(@OneRo)m 3(w)k 240 fnt1 2049 8595(symbol)m -[ /Dest /LOUT16_4080_pre_oner_1 /DEST pdfmark +240 fnt1 480 2005(The)m 220 fnt2 +913 2002(@OneRo)m 3(w)k 240 fnt1 2049 2005(symbol)m +[ /Dest /LOUT19_4213_pre_oner_1 /DEST pdfmark -[ /Dest /LOUT16_4080_pre_oner_2 /DEST pdfmark +[ /Dest /LOUT19_4213_pre_oner_2 /DEST pdfmark 2814(returns)s 3533(its)s 3814(right)s 4330(parameter)s 5350(modi\207ed)s 6264(so)s 6535(that)s 6958(only)s 7443(the)s 7796(principal)s 8706(ro)s 6(w)k -0 8307(mark)m 540(protrudes.)s 1595(This)s 2059(is)s 2257(normally)s +0 1717(mark)m 540(protrudes.)s 1595(This)s 2059(is)s 2257(normally)s 3162(the)s 3498(\207rst)s 3917(ro)s 6(w)k 4324(mark,)s 4910(b)s 4(ut)k 5260(another)s 6025(one)s 6415(may)s -6869(be)s 7139(chosen)s 7849(by)s 8130(preceding)s 0 8019(it)m -192(with)s 220 fnt2 674 8016(^/)m 240 fnt1 901 8019(or)m -220 fnt2 1160 8016(^//)m 240 fnt1 1388 8019(.)m 1552(F)s 3(or)k -1941(e)s 3(xample,)k 220 fnt2 480 7518(@OneRo)m 3(w { |0.5r)k -8(t Slope @F)k 6(ont x + 2 ^//1p @HLine //1p |0.5r)k -8(t 5 })k -240 fnt1 0 7022(has)m 370(result)s 468 371 0 188 240 288 60 480 6043 LoutGr2 +6869(be)s 7139(chosen)s 7849(by)s 8130(preceding)s 0 1429(it)m +192(with)s 220 fnt2 674 1426(^/)m 240 fnt1 901 1429(or)m +220 fnt2 1160 1426(^//)m 240 fnt1 1388 1429(.)m 1552(F)s 3(or)k +1941(e)s 3(xample,)k 220 fnt2 480 928(@OneRo)m 3(w { |0.5r)k -8(t Slope @F)k 6(ont x + 2 ^//1p @HLine //1p |0.5r)k -8(t 5 })k +240 fnt1 0 432(has)m 370(result)s +grestore +gsave +1417 -15423 translate +240 fnt1 0 0 0 0 240 288 60 LoutGraphic +gsave +1 LoutMargSet +grestore + +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 50 56 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +%%+ font Times-Italic +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-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 +0 0 translate +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +240 fnt5 1417 -1583(50)m +240 fnt6 7498 -1580(Chapter)m 8348(3.)s 8622(Pr)s 8(ede\207ned)k +9717(symbols)s gsave +1417 -15423 translate +240 fnt1 9066 13368 0 13185 240 288 60 LoutGraphic +gsave +0 LoutMargSet +grestore +468 371 0 188 240 288 60 480 12997 LoutGr2 grestore save gsave 200 dict begin lfigdict begin grestore 468 371 0 188 240 288 60 0 0 LoutGr2 @@ -12155,8 +12703,8 @@ xmark ysize 0 0.3 cm lfigpadd ] lfigdopath pop pop grestore -240 fnt6 0 211(x)m -240 fnt1 166 209(+)m 354(2)s 468 0 0 0 240 288 60 0 188 LoutGr2 +240 fnt6 0 211(x)m 240 fnt1 +166 209(+)m 354(2)s 468 0 0 0 240 288 60 0 188 LoutGr2 0 0 moveto xsize 0 lineto stroke grestore @@ -12167,12 +12715,12 @@ grestore end end restore grestore -0 5327(with)m -482(one)s 884(ro)s 6(w)k 1304(mark)s 1856(protruding)s -2919(from)s 3443(the)s 3791(bar)s 4156(as)s 4406(sho)s 6(wn.)k -5190(Compare)s 6123(this)s 6519(with)s 220 fnt2 480 4826(@OneRo)m 3(w { |0.5r)k -8(t Slope @F)k 6(ont x + 2 //1p @HLine //1p |0.5r)k -8(t 5 })k -240 fnt1 0 4330(where)m 640(the)s 988(mark)s 1540(protrudes)s -2494(from)s 3018(the)s 3366(numerator:)s 468 371 0 263 240 288 60 480 3351 LoutGr2 +0 12281(with)m 482(one)s +884(ro)s 6(w)k 1304(mark)s 1856(protruding)s 2919(from)s +3443(the)s 3791(bar)s 4156(as)s 4406(sho)s 6(wn.)k +5190(Compare)s 6123(this)s 6519(with)s 220 fnt2 480 11780(@OneRo)m 3(w { |0.5r)k -8(t Slope @F)k 6(ont x + 2 //1p @HLine //1p |0.5r)k -8(t 5 })k +240 fnt1 0 11284(where)m 640(the)s 988(mark)s 1540(protrudes)s +2494(from)s 3018(the)s 3366(numerator:)s 468 371 0 263 240 288 60 480 10305 LoutGr2 grestore save gsave 200 dict begin lfigdict begin grestore 468 371 0 263 240 288 60 0 0 LoutGr2 @@ -12203,52 +12751,129 @@ end end restore grestore -[ /Dest /LOUT16_4080_pre_oner_3 /DEST pdfmark +[ /Dest /LOUT19_4213_pre_oner_3 /DEST pdfmark 220 fnt2 -61 2897(@OneCol)m 240 fnt1 1074 2900(has)m 1445(the)s 1794(same)s -2342(ef)s 6(fect)k 2939(on)s 3237(columns)s 4100(as)s -220 fnt2 4351 2897(@OneRo)m 3(w)k 240 fnt1 5483 2900(does)m -5974(on)s 6272(ro)s 6(ws,)k 6839(with)s 7322(the)s -7671(symbols)s 220 fnt2 8521 2897(^|)m 240 fnt1 8722 2900(and)m -220 fnt2 0 2609(^||)m 240 fnt1 257 2612(\(or)m 220 fnt2 -595 2609(^&)m 240 fnt1 840 2612(\))m 968(determining)s 2176(which)s -2818(mark)s 3370(is)s 3580(chosen.)s 240 fnt5 0 1819(3.11.)m +0 9851(@OneCol)m 240 fnt1 1016 9854(has)m 1391(the)s 1744(same)s +2296(ef)s 6(fect)k 2897(on)s 3198(columns)s 4065(as)s +220 fnt2 4320 9851(@OneRo)m 3(w)k 240 fnt1 5456 9854(does)m +5951(on)s 6252(ro)s 6(ws,)k 6823(with)s 7310(the)s +7663(symbols)s 220 fnt2 8517 9851(^|)m 240 fnt1 8722 9854(and)m +220 fnt2 0 9563(^||)m 240 fnt1 257 9566(\(or)m 220 fnt2 +595 9563(^&)m 240 fnt1 840 9566(\))m 968(determining)s 2176(which)s +2818(mark)s 3370(is)s 3580(chosen.)s 240 fnt5 0 8773(3.12.)m 591(@W)s 4(ide)k 1411(and)s 1852(@High)s [ /Dest /LOUTwide /DEST pdfmark 240 fnt1 -480 1342(The)m 220 fnt2 910 1339(@Wide)m 240 fnt1 1687 1342(symbol)m +480 8296(The)m 220 fnt2 910 8293(@Wide)m 240 fnt1 1687 8296(symbol)m -[ /Dest /LOUT16_4080_pre_wide_1 /DEST pdfmark +[ /Dest /LOUT19_4213_pre_wide_1 /DEST pdfmark 2450(returns)s 3167(its)s 3446(right)s 3960(parameter)s 4977(modi\207ed)s 5888(to)s 6130(ha)s 4(v)k 3(e)k 6634(the)s 6985(width)s 7590(gi)s 6(v)k 3(en)k 8173(by)s -8470(its)s 8749(left)s 0 1054(parameter)m 9(,)k 1058(which)s +8470(its)s 8749(left)s 0 8008(parameter)m 9(,)k 1058(which)s 1707(must)s 2238(be)s 2527(a)s 2699(length)s 3361(\(Section)s 4220(3.2\))s 4655(whose)s 5329(unit)s 5768(of)s 6045(measurement)s -7386(is)s 220 fnt2 7602 1051(c)m 240 fnt1 7707 1054(,)m -220 fnt2 7821 1051(i)m 240 fnt1 7855 1054(,)m 220 fnt2 -7968 1051(p)m 240 fnt1 8082 1054(,)m 220 fnt2 8196 1051(m)m -240 fnt1 8365 1054(,)m 220 fnt2 8478 1051(f)m 240 fnt1 -8536 1054(,)m 220 fnt2 8650 1051(s)m 240 fnt1 8753 1054(,)m -8867(or)s 220 fnt2 0 763(v)m 240 fnt1 109 766(.)m +7386(is)s 220 fnt2 7602 8005(c)m 240 fnt1 7707 8008(,)m +220 fnt2 7821 8005(i)m 240 fnt1 7855 8008(,)m 220 fnt2 +7968 8005(p)m 240 fnt1 8082 8008(,)m 220 fnt2 8196 8005(m)m +240 fnt1 8365 8008(,)m 220 fnt2 8478 8005(f)m 240 fnt1 +8536 8008(,)m 220 fnt2 8650 8005(s)m 240 fnt1 8753 8008(,)m +8867(or)s 220 fnt2 0 7717(v)m 240 fnt1 109 7720(.)m 278(If)s 513(the)s 867(right)s 1383(parameter)s 2403(is)s 2618(not)s 2990(as)s 3245(wide)s 3772(as)s 4027(required,)s 4936(white)s 5528(space)s 6121(is)s 6336(added)s 6972(at)s 7209(the)s 7563(right;)s 8131(if)s 8354(it)s 8551(is)s -8767(too)s 0 478(wide,)m 585(its)s 875(paragraphs)s 1988(are)s +8767(too)s 0 7432(wide,)m 585(its)s 875(paragraphs)s 1988(are)s 2349(brok)s 2(en)k 3083(\(Section)s 3949(3.4\))s 4391(so)s 4670(that)s 5102(it)s 5308(\207ts.)s 5777(A)s 220 fnt2 -6021 475(@OneCol)m 240 fnt1 7046 478(operation)m 8020(is)s 8244(included)s -0 190(in)m 257(the)s 620(ef)s 6(fect)k 1231(of)s -220 fnt2 1517 187(@Wide)m 240 fnt1 2231 190(,)m 2353(since)s +6021 7429(@OneCol)m 240 fnt1 7046 7432(operation)m 8020(is)s 8244(included)s +0 7144(in)m 257(the)s 620(ef)s 6(fect)k 1231(of)s +220 fnt2 1517 7141(@Wide)m 240 fnt1 2231 7144(,)m 2353(since)s 2915(it)s 3122(does)s 3627(not)s 4008(mak)s 2(e)k 4595(sense)s 5184(for)s 5537(an)s 5835(object)s 6494(of)s 6780(\207x)s 3(ed)k 7329(width)s 7946(to)s 8200(ha)s 4(v)k 3(e)k -8716(tw)s 2(o)k +8716(tw)s 2(o)k 0 6856(column)m 775(marks.)s +[ /Dest /LOUT19_4213_pre_wide_2 /DEST pdfmark +552 6482(The)m +220 fnt2 993 6479(@High)m 240 fnt1 1725 6482(symbol)m 2498(similarly)s +3413(ensures)s 4194(that)s 4625(its)s 4914(result)s 5517(is)s +5740(of)s 6024(a)s 6203(gi)s 6(v)k 3(en)k +6796(height,)s 7514(by)s 7821(adding)s 8539(white)s 0 6194(space)m +573(at)s 790(the)s 1123(bottom.)s 1950(In)s 2191(this)s +2572(case)s 3024(it)s 3201(is)s 3396(an)s 3664(error)s +4172(for)s 4495(the)s 4828(right)s 5324(parameter)s 6323(to)s +6547(be)s 6814(too)s 7158(lar)s 4(ge.)k 7780(A)s +220 fnt2 7995 6191(@OneRo)m 3(w)k 240 fnt1 0 5906(operation)m +960(is)s 1170(included.)s 240 fnt5 0 5113(3.13.)m 591(@HShift)s +1550(and)s 1991(@VShift)s +[ /Dest /LOUThshift /DEST pdfmark +240 fnt1 480 4681(The)m 220 fnt2 +917 4678(@HShift)m 240 fnt1 1802 4681(symbol)m +[ /Dest /LOUT19_4213_pre_hshi_1 /DEST pdfmark +2572(returns)s 3296(its)s +3582(right)s 4103(parameter)s 5127(with)s 5619(principal)s 6533(mark)s +7095(shifted)s 7813(as)s 8073(prescribed)s 0 4393(by)m 294(its)s +570(left)s 947(parameter:)s 220 fnt2 1124 3885(+)m 240 fnt6 +1244 3890(length)m 220 fnt2 1897 3885(@HShift)m 240 fnt6 2772 3890(object)m +240 fnt1 3600 3888(Principal)m 4517(mark)s 5069(shifted)s 5777(to)s +6016(the)s 6364(right)s 6875(by)s 240 fnt6 7169 3890(length)m +240 fnt1 7762 3888(;)m +[ /Dest /LOUT16_1489_pre_hshi_1 /DEST pdfmark +220 fnt2 1180 3380(-)m 240 fnt6 +1244 3385(length)m 220 fnt2 1897 3380(@HShift)m 240 fnt6 2772 3385(object)m +240 fnt1 3600 3383(Principal)m 4517(mark)s 5069(shifted)s 5777(to)s +6016(the)s 6364(left)s 6741(by)s 240 fnt6 7035 3385(length)m +240 fnt1 7628 3383(;)m +[ /Dest /LOUT16_1489_pre_hshi_2 /DEST pdfmark +240 fnt6 1244 2880(length)m 220 fnt2 +1897 2875(@HShift)m 240 fnt6 2772 2880(object)m 240 fnt1 3600 2878(Principal)m +4512(mark)s 5058(shifted)s 5760(so)s 6020(as)s 6264(to)s +6497(lie)s 240 fnt6 6786 2880(length)m 240 fnt1 7433 2878(to)m +7666(the)s 8008(right)s 8513(of)s 8778(the)s 3600 2590(left)m +3977(edge)s 4485(of)s 240 fnt6 4756 2592(object)m 240 fnt1 +5344 2590(;)m +[ /Dest /LOUT16_1489_pre_hshi_3 /DEST pdfmark +0 2087(In)m 256(each)s 751(chase)s 220 fnt2 +1338 2084(@HShift)m 240 fnt1 2213 2087(includes)m 3061(a)s 220 fnt2 +3227 2084(@OneCol)m 240 fnt1 4239 2087(ef)m 6(fect.)k 480 1713(The)m +916(units)s 1440(of)s 1720(measurement)s 3062(of)s 240 fnt6 +3342 1715(length)m 240 fnt1 4003 1713(may)m 4478(be)s 220 fnt2 +4768 1710(c)m 240 fnt1 4873 1713(,)m 220 fnt2 4989 1710(i)m +240 fnt1 5023 1713(,)m 220 fnt2 5138 1710(p)m 240 fnt1 +5252 1713(,)m 220 fnt2 5368 1710(m)m 240 fnt1 5537 1713(,)m +220 fnt2 5652 1710(f)m 240 fnt1 5710 1713(,)m 220 fnt2 +5825 1710(s)m 240 fnt1 5928 1713(,)m 220 fnt2 6044 1710(v)m +240 fnt1 6153 1713(,)m 6268(or)s 220 fnt2 6536 1710(w)m +240 fnt1 6692 1713(.)m 6864(In)s 7129(the)s 7485(latter)s +8043(case,)s 220 fnt2 8569 1710(1w)m 240 fnt1 8916 1713(is)m +0 1425(tak)m 2(en)k 579(to)s 825(be)s 1113(the)s +1468(width)s 2076(of)s 2354(the)s 2708(right)s 3226(parameter)s 9(,)k +4285(so)s 4557(that,)s 5029(for)s 5373(e)s 3(xample,)k +220 fnt2 6294 1422(0.5w @HShift)m 240 fnt1 7699 1425(will)m 8132(centre)s +8778(the)s 0 1137(principal)m 904(column)s 1679(mark)s 2231(within)s +2899(the)s 3247(right)s 3758(parameter)s 13(.)k +[ /Dest /LOUT19_4213_pre_hshi_2 /DEST pdfmark +548 763(The)m +220 fnt2 984 760(@VShift)m 240 fnt1 1855 763(symbol)m 2624(is)s +2842(similar)s 3572(e)s 3(xcept)k 4261(that)s 4688(it)s +4888(applies)s 5624(v)s 3(ertically)k 6584(to)s 6832(the)s +7188(principal)s 8100(ro)s 6(w)k 8529(mark:)s 220 fnt2 +0 472(+)m 240 fnt6 120 477(length)m 240 fnt1 771 475(shifts)m +1337(it)s 1527(do)s 6(wn,)k 220 fnt2 2159 472(-)m +240 fnt6 2223 477(length)m 240 fnt1 2874 475(shifts)m 3440(it)s +3629(up,)s 3974(and)s 240 fnt6 4376 477(length)m 240 fnt1 +5027 475(shifts)m 5593(it)s 5783(to)s 240 fnt6 6019 477(length)m +240 fnt1 6670 475(belo)m 6(w)k 7301(the)s 7647(top)s +8004(edge)s 8510(of)s 8778(the)s 0 187(object.)m 748(W)s 9(ith)k +220 fnt2 1274 184(@VShift)m 240 fnt1 2077 187(,)m 220 fnt2 +2184 184(1w)m 240 fnt1 2522 187(is)m 2732(tak)s 2(en)k +3305(to)s 3544(be)s 3826(the)s 4174(height)s 4832(of)s +5103(the)s 5451(right)s 5962(parameter)s 13(.)k grestore gsave 1417 -15423 translate -240 fnt1 0 0 0 0 240 288 60 LoutGraphic +240 fnt1 +0 0 0 0 240 288 60 LoutGraphic gsave 0 LoutMargSet grestore @@ -12262,7 +12887,7 @@ pgsave restore showpage -%%Page: 49 55 +%%Page: 51 57 %%BeginPageSetup %%PageResources: font Times-Roman %%+ font Times-Italic @@ -12285,146 +12910,143 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -240 fnt6 1417 -1580(3.11.)m 1991(@W)s 13(ide)k 2742(and)s -3168(@High)s 240 fnt5 10249 -1583(49)m gsave +240 fnt6 1417 -1580(3.14.)m +1991(@HExpand)s 3182(and)s 3608(@VExpand)s 240 fnt5 10256 -1583(51)m +gsave 1417 -15423 translate -240 fnt1 9066 13368 0 13259 240 288 60 LoutGraphic +240 fnt1 9066 13368 0 13368 240 288 60 LoutGraphic gsave 1 LoutMargSet grestore -0 13205(column)m 775(marks.)s - -[ /Dest /LOUT16_4080_pre_wide_2 /DEST pdfmark -552 12831(The)m 220 fnt2 993 12828(@High)m 240 fnt1 1725 12831(symbol)m -2498(similarly)s 3413(ensures)s 4194(that)s 4625(its)s 4914(result)s -5517(is)s 5740(of)s 6024(a)s 6203(gi)s 6(v)k 3(en)k -6796(height,)s 7514(by)s 7821(adding)s 8539(white)s 0 12543(space)m -573(at)s 790(the)s 1123(bottom.)s 1950(In)s 2191(this)s -2572(case)s 3024(it)s 3201(is)s 3396(an)s 3664(error)s -4172(for)s 4495(the)s 4828(right)s 5324(parameter)s 6323(to)s -6547(be)s 6814(too)s 7158(lar)s 4(ge.)k 7780(A)s -220 fnt2 7995 12540(@OneRo)m 3(w)k 240 fnt1 0 12255(operation)m -960(is)s 1170(included.)s 240 fnt5 0 11462(3.12.)m 591(@HShift)s -1550(and)s 1991(@VShift)s -[ /Dest /LOUThshift /DEST pdfmark -240 fnt1 480 11030(The)m 220 fnt2 -917 11027(@HShift)m 240 fnt1 1802 11030(symbol)m -[ /Dest /LOUT16_4080_pre_hshi_1 /DEST pdfmark -2572(returns)s 3296(its)s -3582(right)s 4103(parameter)s 5127(with)s 5619(principal)s 6533(mark)s -7095(shifted)s 7813(as)s 8073(prescribed)s 0 10742(by)m 294(its)s -570(left)s 947(parameter:)s 220 fnt2 1124 10234(+)m 240 fnt6 -1244 10239(length)m 220 fnt2 1897 10234(@HShift)m 240 fnt6 2772 10239(object)m -240 fnt1 3600 10237(Principal)m 4517(mark)s 5069(shifted)s 5777(to)s -6016(the)s 6364(right)s 6875(by)s 240 fnt6 7169 10239(length)m -240 fnt1 7762 10237(;)m -[ /Dest /LOUT12_1501_pre_hshi_1 /DEST pdfmark -220 fnt2 1180 9729(-)m 240 fnt6 -1244 9734(length)m 220 fnt2 1897 9729(@HShift)m 240 fnt6 2772 9734(object)m -240 fnt1 3600 9732(Principal)m 4517(mark)s 5069(shifted)s 5777(to)s -6016(the)s 6364(left)s 6741(by)s 240 fnt6 7035 9734(length)m -240 fnt1 7628 9732(;)m -[ /Dest /LOUT12_1501_pre_hshi_2 /DEST pdfmark -240 fnt6 1244 9229(length)m 220 fnt2 -1897 9224(@HShift)m 240 fnt6 2772 9229(object)m 240 fnt1 3600 9227(Principal)m -4512(mark)s 5058(shifted)s 5760(so)s 6020(as)s 6264(to)s -6497(lie)s 240 fnt6 6786 9229(length)m 240 fnt1 7433 9227(to)m -7666(the)s 8008(right)s 8513(of)s 8778(the)s 3600 8939(left)m -3977(edge)s 4485(of)s 240 fnt6 4756 8941(object)m 240 fnt1 -5344 8939(;)m -[ /Dest /LOUT12_1501_pre_hshi_3 /DEST pdfmark -0 8436(In)m 256(each)s 751(chase)s 220 fnt2 -1338 8433(@HShift)m 240 fnt1 2213 8436(includes)m 3061(a)s 220 fnt2 -3227 8433(@OneCol)m 240 fnt1 4239 8436(ef)m 6(fect.)k 480 8062(The)m -916(units)s 1440(of)s 1720(measurement)s 3062(of)s 240 fnt6 -3342 8064(length)m 240 fnt1 4003 8062(may)m 4478(be)s 220 fnt2 -4768 8059(c)m 240 fnt1 4873 8062(,)m 220 fnt2 4989 8059(i)m -240 fnt1 5023 8062(,)m 220 fnt2 5138 8059(p)m 240 fnt1 -5252 8062(,)m 220 fnt2 5368 8059(m)m 240 fnt1 5537 8062(,)m -220 fnt2 5652 8059(f)m 240 fnt1 5710 8062(,)m 220 fnt2 -5825 8059(s)m 240 fnt1 5928 8062(,)m 220 fnt2 6044 8059(v)m -240 fnt1 6153 8062(,)m 6268(or)s 220 fnt2 6536 8059(w)m -240 fnt1 6692 8062(.)m 6864(In)s 7129(the)s 7485(latter)s -8043(case,)s 220 fnt2 8569 8059(1w)m 240 fnt1 8916 8062(is)m -0 7774(tak)m 2(en)k 579(to)s 825(be)s 1113(the)s -1468(width)s 2076(of)s 2354(the)s 2708(right)s 3226(parameter)s 9(,)k -4285(so)s 4557(that,)s 5029(for)s 5373(e)s 3(xample,)k -220 fnt2 6294 7771(0.5w @HShift)m 240 fnt1 7699 7774(will)m 8132(centre)s -8778(the)s 0 7486(principal)m 904(column)s 1679(mark)s 2231(within)s -2899(the)s 3247(right)s 3758(parameter)s 13(.)k -[ /Dest /LOUT16_4080_pre_hshi_2 /DEST pdfmark -548 7112(The)m -220 fnt2 984 7109(@VShift)m 240 fnt1 1855 7112(symbol)m 2624(is)s -2842(similar)s 3572(e)s 3(xcept)k 4261(that)s 4688(it)s -4888(applies)s 5624(v)s 3(ertically)k 6584(to)s 6832(the)s -7188(principal)s 8100(ro)s 6(w)k 8529(mark:)s 220 fnt2 -0 6821(+)m 240 fnt6 120 6826(length)m 240 fnt1 771 6824(shifts)m -1337(it)s 1527(do)s 6(wn,)k 220 fnt2 2159 6821(-)m -240 fnt6 2223 6826(length)m 240 fnt1 2874 6824(shifts)m 3440(it)s -3629(up,)s 3974(and)s 240 fnt6 4376 6826(length)m 240 fnt1 -5027 6824(shifts)m 5593(it)s 5783(to)s 240 fnt6 6019 6826(length)m -240 fnt1 6670 6824(belo)m 6(w)k 7301(the)s 7647(top)s -8004(edge)s 8510(of)s 8778(the)s 0 6536(object.)m 748(W)s 9(ith)k -220 fnt2 1274 6533(@VShift)m 240 fnt1 2077 6536(,)m 220 fnt2 -2184 6533(1w)m 240 fnt1 2522 6536(is)m 2732(tak)s 2(en)k -3305(to)s 3544(be)s 3826(the)s 4174(height)s 4832(of)s -5103(the)s 5451(right)s 5962(parameter)s 13(.)k 240 fnt5 -0 5743(3.13.)m 591(@HExpand)s 1854(and)s 2295(@VExpand)s +240 fnt5 0 13203(3.14.)m 591(@HExpand)s 1854(and)s +2295(@VExpand)s [ /Dest /LOUThexpand /DEST pdfmark -[ /Dest /LOUT16_4080_pre_hexp_1 /DEST pdfmark +[ /Dest /LOUT19_4213_pre_hexp_1 /DEST pdfmark -[ /Dest /LOUT16_4080_pre_hexp_2 /DEST pdfmark +[ /Dest /LOUT19_4213_pre_hexp_2 /DEST pdfmark -[ /Dest /LOUT16_4080_pre_hexp_3 /DEST pdfmark -240 fnt1 -558 5266(The)m 220 fnt2 1004 5263(@HExpand)m 240 fnt1 2195 5266(symbol)m -2973(causes)s 3666(its)s 3961(right)s 4490(parameter)s 5522(to)s -5779(be)s 6079(as)s 6348(wide)s 6887(as)s 7155(it)s -7365(possibly)s 8235(could)s 8844(be)s 0 4978(without)m 784(violating)s -1679(a)s 220 fnt2 1837 4975(@Wide)m 240 fnt1 2603 4978(symbol)m -3355(or)s 3606(intruding)s 4528(into)s 4945(the)s 5285(space)s -5864(occupied)s 6778(by)s 7064(neighbouring)s 8386(g)s 1(aps)k -8867(or)s 0 4690(objects.)m 841(The)s 220 fnt2 1269 4687(@VExpand)m -240 fnt1 2430 4690(symbol)m 3190(is)s 3400(similar)s 9(,)k -4160(b)s 4(ut)k 4522(it)s 4714(af)s 6(fects)k -5394(height.)s 6156(F)s 3(or)k 6545(e)s 3(xample,)k -7459(in)s 7702(the)s 8050(object)s 220 fnt2 480 4189(8i @Wide 11i @High {)m -480 3901( //1i ||1i @HExpand @VExpand x ||1i)m 480 3613( //1i)m 480 3325(})m 240 fnt1 0 2831(object)m -220 fnt2 655 2828(x)m 240 fnt1 834 2831(could)m 1435(ha)s 4(v)k 3(e)k -1947(an)s 3(y)k 2356(size)s 2794(up)s 3098(to)s -3348(six)s 3694(inches)s 4367(wide)s 4899(by)s 5204(nine)s -5683(inches)s 6357(high,)s 6901(so)s 7178(the)s 220 fnt2 -7537 2828(@HExpand)m 240 fnt1 8722 2831(and)m 220 fnt2 0 2540(@VExpand)m -240 fnt1 1166 2543(symbols)m 2021(cause)s 2614(it)s 2812(to)s -3057(ha)s 4(v)k 3(e)k 3564(e)s 3(xactly)k -4311(this)s 4713(size.)s 5254(This)s 5736(is)s 5952(important,)s -6994(for)s 7338(e)s 3(xample,)k 8258(if)s 220 fnt2 -8481 2540(x)m 240 fnt1 8655 2543(con)m 8998(-)s 0 2255(tains)m -220 fnt2 502 2252(|1r)m -8(t)k 240 fnt1 879 2255(or)m -220 fnt2 1138 2252(/1r)m -8(t)k 240 fnt1 1459 2255(;)m -1571(without)s 2362(the)s 2710(e)s 3(xpansion)k 3735(these)s -4282(might)s 4900(not)s 5266(mo)s 3(v)k 3(e)k +[ /Dest /LOUT19_4213_pre_hexp_3 /DEST pdfmark +240 fnt1 558 12726(The)m 220 fnt2 1004 12723(@HExpand)m +240 fnt1 2195 12726(symbol)m 2973(causes)s 3666(its)s 3961(right)s +4490(parameter)s 5522(to)s 5779(be)s 6079(as)s 6348(wide)s +6887(as)s 7155(it)s 7365(possibly)s 8235(could)s 8844(be)s +0 12438(without)m 784(violating)s 1679(a)s 220 fnt2 1837 12435(@Wide)m +240 fnt1 2603 12438(symbol)m 3355(or)s 3606(intruding)s 4528(into)s +4945(the)s 5285(space)s 5864(occupied)s 6778(by)s 7064(neighbouring)s +8386(g)s 1(aps)k 8867(or)s 0 12150(objects.)m 841(The)s +220 fnt2 1269 12147(@VExpand)m 240 fnt1 2430 12150(symbol)m 3190(is)s +3400(similar)s 9(,)k 4160(b)s 4(ut)k 4522(it)s +4714(af)s 6(fects)k 5394(height.)s 6156(F)s 3(or)k +6545(e)s 3(xample,)k 7459(in)s 7702(the)s 8050(object)s +220 fnt2 480 11649(8i @Wide 11i @High {)m 480 11361( //1i ||1i @HExpand @VExpand x ||1i)m 480 11073( //1i)m 480 10785(})m +240 fnt1 0 10291(object)m 220 fnt2 655 10288(x)m 240 fnt1 +834 10291(could)m 1435(ha)s 4(v)k 3(e)k 1947(an)s 3(y)k +2356(size)s 2794(up)s 3098(to)s 3348(six)s 3694(inches)s +4367(wide)s 4899(by)s 5204(nine)s 5683(inches)s 6357(high,)s +6901(so)s 7178(the)s 220 fnt2 7537 10288(@HExpand)m 240 fnt1 +8722 10291(and)m 220 fnt2 0 10000(@VExpand)m 240 fnt1 1166 10003(symbols)m +2021(cause)s 2614(it)s 2812(to)s 3057(ha)s 4(v)k 3(e)k +3564(e)s 3(xactly)k 4311(this)s 4713(size.)s 5254(This)s +5736(is)s 5952(important,)s 6994(for)s 7338(e)s 3(xample,)k +8258(if)s 220 fnt2 8481 10000(x)m 240 fnt1 8655 10003(con)m +8998(-)s 0 9715(tains)m 220 fnt2 502 9712(|1r)m -8(t)k +240 fnt1 879 9715(or)m 220 fnt2 1138 9712(/1r)m -8(t)k +240 fnt1 1459 9715(;)m 1571(without)s 2362(the)s 2710(e)s 3(xpansion)k +3735(these)s 4282(might)s 4900(not)s 5266(mo)s 3(v)k 3(e)k 5848(as)s 6098(f)s 2(ar)k 6420(across)s 7068(or)s 7327(do)s 6(wn)k 7911(as)s 8161(e)s 3(xpected.)k -480 1881(As)m 809(Section)s 1595(2.6)s 1961(e)s 3(xplains)k +480 9341(As)m 809(Section)s 1595(2.6)s 1961(e)s 3(xplains)k 2818(in)s 3074(detail,)s 3723(most)s 4260(objects)s 5001(are)s 5360(already)s 6130(as)s 6392(lar)s 4(ge)k 6933(as)s -7196(the)s 3(y)k 7671(possibly)s 8536(could)s 0 1593(be.)m +7196(the)s 3(y)k 7671(possibly)s 8536(could)s 0 9053(be.)m 379(Consequently)s 1738(these)s 2273(symbols)s 3110(are)s 3446(needed)s -4170(only)s 4638(rarely)s 15(.)k 220 fnt2 5331 1590(@HExpand)m -240 fnt1 6493 1593(includes)m 7329(a)s 220 fnt2 7483 1590(@OneCol)m -240 fnt1 8483 1593(ef)m 6(fect,)k 0 1305(and)m 220 fnt2 -404 1302(@VExpand)m 240 fnt1 1565 1305(includes)m 2413(a)s 220 fnt2 -2579 1302(@OneRo)m 3(w)k 240 fnt1 3710 1305(ef)m 6(fect.)k +4170(only)s 4638(rarely)s 15(.)k 220 fnt2 5331 9050(@HExpand)m +240 fnt1 6493 9053(includes)m 7329(a)s 220 fnt2 7483 9050(@OneCol)m +240 fnt1 8483 9053(ef)m 6(fect,)k 0 8765(and)m 220 fnt2 +404 8762(@VExpand)m 240 fnt1 1565 8765(includes)m 2413(a)s 220 fnt2 +2579 8762(@OneRo)m 3(w)k 240 fnt1 3710 8765(ef)m 6(fect.)k +240 fnt5 0 7976(3.15.)m 591(@HContract)s 1976(and)s 2417(@VContract)s + +[ /Dest /LOUThcontract /DEST pdfmark + +[ /Dest /LOUT19_4213_pre_hcon_1 /DEST pdfmark + +[ /Dest /LOUT19_4213_pre_hcon_2 /DEST pdfmark + +[ /Dest /LOUT19_4213_pre_hcon_3 /DEST pdfmark +240 fnt1 542 7544(The)m 220 fnt2 972 7541(@HContr)m 2(act)k +240 fnt1 2239 7544(symbol)m 3001(reduces)s 3784(the)s 4135(size)s +4564(of)s 4837(its)s 5116(right)s 5629(parameter)s 6645(to)s +6887(a)s 7055(reasonable)s 8136(minimum)s 0 7256(\(after)m 575(paragraph)s +1588(breaking\).)s 2668(F)s 3(or)k 3057(e)s 3(xample,)k +220 fnt2 480 6755(5i @Wide @HContr)m 2(act { A |1r)k -8(t B })k 240 fnt1 +0 6261(has)m 370(result)s 480 5810(A)m 650(B)s 0 5359(in)m +233(which)s 864(the)s 1201(B)s 1393(is)s 1592(much)s +2170(closer)s 2789(to)s 3017(the)s 3354(A)s 3574(than)s +4032(it)s 4213(w)s 2(ould)k 4857(otherwise)s 5831(ha)s 4(v)k 3(e)k +6321(been.)s 220 fnt2 6926 5356(@VContr)m 2(act)k 240 fnt1 +8167 5359(is)m 8366(similar)s 9(,)k 0 5071(b)m 4(ut)k +362(in)s 605(a)s 771(v)s 3(ertical)k 1538(direction.)s +2551(See)s 2952(Section)s 3726(2.6)s 4079(for)s 4417(a)s +4583(more)s 5130(e)s 3(xtensi)k 6(v)k 3(e)k +6077(discussion.)s 240 fnt5 0 4327(3.16.)m 591(@HLimited)s 1864(and)s +2305(@VLimited)s +[ /Dest /LOUThlimited /DEST pdfmark + +[ /Dest /LOUT19_4213_pre_hlim_1 /DEST pdfmark + +[ /Dest /LOUT19_4213_pre_hlim_2 /DEST pdfmark +240 fnt1 579 3895(The)m 220 fnt2 1047 3892(@HLimited)m +240 fnt1 2221 3895(symbol)m 3021(limits)s 3654(the)s 4042(width)s +4684(a)s 4(v)k 6(ailable)k 5631(to)s 5910(recursi)s 6(v)k 3(e)k +6871(and)s 7315(recepti)s 6(v)k 3(e)k 8277(symbols)s +0 3607(within)m 692(its)s 993(right)s 1529(parameter)s 2567(to)s +2831(whate)s 6(v)k 3(er)k 3783(is)s 4018(a)s 4(v)k 6(ailable)k +4950(without)s 5766(increasing)s 6826(the)s 7198(e)s 3(xisting)k +8030(size)s 8482(of)s 8778(the)s 220 fnt2 0 3316(@HLimited)m +240 fnt1 1138 3319(object.)m 1890(So)s 2199(this)s 2599(symbol)s +3362(acts)s 3788(lik)s 2(e)k 220 fnt2 4204 3316(@Wide)m +240 fnt1 4981 3319(with)m 5467(respect)s 6206(to)s 6449(limiting)s +7261(the)s 7613(space)s 8204(occupied)s 0 3031(by)m 315(recursi)s 6(v)k 3(e)k +1258(and)s 1684(recepti)s 6(v)k 3(e)k 2627(symbols,)s +3553(e)s 3(xcept)k 4256(that)s 4695(instead)s 5451(of)s +5744(enforcing)s 6734(a)s 6921(\207x)s 3(ed)k 7477(constant)s +8355(limit,)s 8934(it)s 0 2743(enforces)m 860(whate)s 6(v)k 3(er)k +1787(size)s 2214(is)s 2424(already)s 3181(in)s 3424(place.)s +480 2369(The)m 220 fnt2 904 2366(@VLimited)m 240 fnt1 2022 2369(symbol)m +2778(is)s 2983(e)s 3(xactly)k 3719(the)s 4063(same,)s +4656(e)s 3(xcept)k 5332(that)s 5746(it)s 5933(applies)s +6656(v)s 3(ertically)k 7604(rather)s 8215(than)s 8679(hor)s +8998(-)s 0 2081(izontally)m 15(.)k 240 fnt5 0 1288(3.17.)m +591(@HAdjust,)s 1804(@V)s 32(Adjust,)k 2972(and)s 3413(@P)s 17(Adjust)k + +[ /Dest /LOUThadjust /DEST pdfmark +[ /Dest /LOUT19_4213_pre_hadj_1 /DEST pdfmark + +[ /Dest /LOUT19_4213_pre_hadj_2 /DEST pdfmark + +[ /Dest /LOUT19_4213_pre_hadj_3 /DEST pdfmark + +[ /Dest /LOUT19_4213_pre_hadj_4 /DEST pdfmark +240 fnt1 551 812(These)m 1189(symbols)s 2050(spread)s 2743(their)s +3252(right)s 3774(parameter)s 4800(apart)s 5348(until)s 5852(it)s +6056(occupies)s 6955(all)s 7260(the)s 7619(space)s 8218(a)s 4(v)k 6(ailable)k +0 524(to)m 268(it;)s 220 fnt2 602 521(@HAdjust)m 240 fnt1 +1678 524(adjusts)m 220 fnt2 2422 521(|)m 240 fnt1 2549 524(sequences,)m +220 fnt2 3656 521(@V)m 17(Adjust)k 240 fnt1 4702 524(adjusts)m +220 fnt2 5447 521(/)m 240 fnt1 5601 524(sequences,)m 6707(and)s +220 fnt2 7141 521(@P)m 26(Adjust)k 240 fnt1 8179 524(adjusts)m +220 fnt2 8924 521(&)m 240 fnt1 0 236(sequences.)m 1134(F)s 3(or)k +1523(e)s 3(xample,)k grestore gsave 1417 -15423 translate @@ -12442,7 +13064,7 @@ pgsave restore showpage -%%Page: 50 56 +%%Page: 52 58 %%BeginPageSetup %%PageResources: font Times-Roman %%+ font Times-Bold @@ -12465,135 +13087,114 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -240 fnt5 1417 -1583(50)m 240 fnt6 7498 -1580(Chapter)m 8348(3.)s -8622(Pr)s 8(ede\207ned)k 9717(symbols)s gsave +240 fnt5 1417 -1583(52)m +240 fnt6 7498 -1580(Chapter)m 8348(3.)s 8622(Pr)s 8(ede\207ned)k +9717(symbols)s 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 0 LoutMargSet grestore -240 fnt5 0 13203(3.14.)m -591(@HContract)s 1976(and)s 2417(@VContract)s -[ /Dest /LOUThcontract /DEST pdfmark - -[ /Dest /LOUT16_4080_pre_hcon_1 /DEST pdfmark - -[ /Dest /LOUT16_4080_pre_hcon_2 /DEST pdfmark - -[ /Dest /LOUT16_4080_pre_hcon_3 /DEST pdfmark -240 fnt1 542 12771(The)m -220 fnt2 972 12768(@HContr)m 2(act)k 240 fnt1 2239 12771(symbol)m -3001(reduces)s 3784(the)s 4135(size)s 4564(of)s 4837(its)s -5116(right)s 5629(parameter)s 6645(to)s 6887(a)s 7055(reasonable)s -8136(minimum)s 0 12483(\(after)m 575(paragraph)s 1588(breaking\).)s 2668(F)s 3(or)k -3057(e)s 3(xample,)k 220 fnt2 480 11982(5i @Wide @HContr)m 2(act { A |1r)k -8(t B })k -240 fnt1 0 11488(has)m 370(result)s 480 11037(A)m 650(B)s -0 10586(in)m 233(which)s 864(the)s 1201(B)s 1393(is)s -1592(much)s 2170(closer)s 2789(to)s 3017(the)s 3354(A)s -3574(than)s 4032(it)s 4213(w)s 2(ould)k 4857(otherwise)s -5831(ha)s 4(v)k 3(e)k 6321(been.)s 220 fnt2 -6926 10583(@VContr)m 2(act)k 240 fnt1 8167 10586(is)m 8366(similar)s 9(,)k -0 10298(b)m 4(ut)k 362(in)s 605(a)s 771(v)s 3(ertical)k -1538(direction.)s 2551(See)s 2952(Section)s 3726(2.6)s 4079(for)s -4417(a)s 4583(more)s 5130(e)s 3(xtensi)k 6(v)k 3(e)k -6077(discussion.)s 240 fnt5 0 9554(3.15.)m 591(@HLimited)s 1864(and)s -2305(@VLimited)s -[ /Dest /LOUThlimited /DEST pdfmark - -[ /Dest /LOUT16_4080_pre_hlim_1 /DEST pdfmark - -[ /Dest /LOUT16_4080_pre_hlim_2 /DEST pdfmark -240 fnt1 579 9122(The)m 220 fnt2 1047 9119(@HLimited)m -240 fnt1 2221 9122(symbol)m 3021(limits)s 3654(the)s 4042(width)s -4684(a)s 4(v)k 6(ailable)k 5631(to)s 5910(recursi)s 6(v)k 3(e)k -6871(and)s 7315(recepti)s 6(v)k 3(e)k 8277(symbols)s -0 8834(within)m 692(its)s 993(right)s 1529(parameter)s 2567(to)s -2831(whate)s 6(v)k 3(er)k 3783(is)s 4018(a)s 4(v)k 6(ailable)k -4950(without)s 5766(increasing)s 6826(the)s 7198(e)s 3(xisting)k -8030(size)s 8482(of)s 8778(the)s 220 fnt2 0 8543(@HLimited)m -240 fnt1 1138 8546(object.)m 1890(So)s 2199(this)s 2599(symbol)s -3362(acts)s 3788(lik)s 2(e)k 220 fnt2 4204 8543(@Wide)m -240 fnt1 4981 8546(with)m 5467(respect)s 6206(to)s 6449(limiting)s -7261(the)s 7613(space)s 8204(occupied)s 0 8258(by)m 315(recursi)s 6(v)k 3(e)k -1258(and)s 1684(recepti)s 6(v)k 3(e)k 2627(symbols,)s -3553(e)s 3(xcept)k 4256(that)s 4695(instead)s 5451(of)s -5744(enforcing)s 6734(a)s 6921(\207x)s 3(ed)k 7477(constant)s -8355(limit,)s 8934(it)s 0 7970(enforces)m 860(whate)s 6(v)k 3(er)k -1787(size)s 2214(is)s 2424(already)s 3181(in)s 3424(place.)s -480 7596(The)m 220 fnt2 904 7593(@VLimited)m 240 fnt1 2022 7596(symbol)m -2778(is)s 2983(e)s 3(xactly)k 3719(the)s 4063(same,)s -4656(e)s 3(xcept)k 5332(that)s 5746(it)s 5933(applies)s -6656(v)s 3(ertically)k 7604(rather)s 8215(than)s 8679(hor)s -8998(-)s 0 7308(izontally)m 15(.)k 240 fnt5 0 6515(3.16.)m -591(@HAdjust,)s 1804(@V)s 32(Adjust,)k 2972(and)s 3413(@P)s 17(Adjust)k - -[ /Dest /LOUThadjust /DEST pdfmark - -[ /Dest /LOUT16_4080_pre_hadj_1 /DEST pdfmark - -[ /Dest /LOUT16_4080_pre_hadj_2 /DEST pdfmark - -[ /Dest /LOUT16_4080_pre_hadj_3 /DEST pdfmark - -[ /Dest /LOUT16_4080_pre_hadj_4 /DEST pdfmark -240 fnt1 551 6039(These)m 1189(symbols)s 2050(spread)s 2743(their)s -3252(right)s 3774(parameter)s 4800(apart)s 5348(until)s 5852(it)s -6056(occupies)s 6955(all)s 7260(the)s 7619(space)s 8218(a)s 4(v)k 6(ailable)k -0 5751(to)m 268(it;)s 220 fnt2 602 5748(@HAdjust)m 240 fnt1 -1678 5751(adjusts)m 220 fnt2 2422 5748(|)m 240 fnt1 2549 5751(sequences,)m -220 fnt2 3656 5748(@V)m 17(Adjust)k 240 fnt1 4702 5751(adjusts)m -220 fnt2 5447 5748(/)m 240 fnt1 5601 5751(sequences,)m 6707(and)s -220 fnt2 7141 5748(@P)m 26(Adjust)k 240 fnt1 8179 5751(adjusts)m -220 fnt2 8924 5748(&)m 240 fnt1 0 5463(sequences.)m 1134(F)s 3(or)k -1523(e)s 3(xample,)k 220 fnt2 480 4962(4i @Wide @P)m 26(Adjust { 1 2 3 4 5 6 7 8 })k -240 fnt1 0 4465(has)m 370(result)s 480 4010(1)m 1274(2)s +220 fnt2 480 13207(4i @Wide @P)m 26(Adjust { 1 2 3 4 5 6 7 8 })k +240 fnt1 0 12710(has)m 370(result)s 480 12255(1)m 1274(2)s 2088(3)s 2892(4)s 3706(5)s 4512(6)s 5325(7)s -6133(8)s 0 3556(More)m 571(precisely)s 15(,)k 1521(the)s +6133(8)s 0 11801(More)m 571(precisely)s 15(,)k 1521(the)s 1865(widening)s 2806(is)s 3012(ef)s 6(fected)k 3828(by)s 4119(enlar)s 4(ging)k 5067(the)s 5411(size)s 5835(of)s 6102(each)s 6593(component)s 7714(e)s 3(xcept)k 8391(the)s -8735(last)s 0 3268(by)m 284(an)s 556(equal)s 1118(fraction)s +8735(last)s 0 11513(by)m 284(an)s 556(equal)s 1118(fraction)s 1907(of)s 2167(the)s 2504(space)s 3080(that)s 3488(w)s 2(ould)k 4132(otherwise)s 5106(be)s 5377(left)s 5744(o)s 3(v)k 3(er)k 6212(\211)s 6381(just)s 6775(the)s 7113(opposite)s 7969(of)s -8229(the)s 8566(usual)s 0 2980(procedure,)m 1063(which)s 1705(assigns)s +8229(the)s 8566(usual)s 0 11225(procedure,)m 1063(which)s 1705(assigns)s 2447(all)s 2740(the)s 3088(lefto)s 3(v)k 3(er)k 3884(space)s 4471(to)s 4710(the)s 5058(last)s 5449(component)s -6573(\(Section)s 7426(2.6\).)s 220 fnt2 480 2603(@P)m 26(Adjust)k -240 fnt1 1497 2606(is)m 1716(used)s 2222(by)s 2525(the)s -220 fnt2 2883 2603(adjust)m 240 fnt1 3533 2606(and)m 220 fnt2 -3946 2603(outdent)m 240 fnt1 4743 2606(options)m 5508(of)s 5789(the)s -220 fnt2 6146 2603(@Break)m 240 fnt1 7011 2606(symbol)m 7780(\(Section)s -8643(3.4\).)s 0 2318(It)m 213(has)s 591(a)s 765(slight)s +6573(\(Section)s 7426(2.6\).)s 220 fnt2 480 10848(@P)m 26(Adjust)k +240 fnt1 1497 10851(is)m 1716(used)s 2222(by)s 2525(the)s +220 fnt2 2883 10848(adjust)m 240 fnt1 3533 10851(and)m 220 fnt2 +3946 10848(outdent)m 240 fnt1 4743 10851(options)m 5508(of)s 5789(the)s +220 fnt2 6146 10848(@Break)m 240 fnt1 7011 10851(symbol)m 7780(\(Section)s +8643(3.4\).)s 0 10563(It)m 213(has)s 591(a)s 765(slight)s 1364(peculiarity:)s 2559(it)s 2759(will)s 3193(not)s 3567(enlar)s 4(ge)k 4330(components)s 5546(when)s 6130(the)s 6486(immediately)s 7742(follo)s 6(wing)k -8728(g)s 1(ap)k 0 2030(has)m 398(width)s 1029(0.)s +8728(g)s 1(ap)k 0 10275(has)m 398(width)s 1029(0.)s 1342(This)s 1847(is)s 2086(to)s 2354(pre)s 6(v)k 3(ent)k 3151(space)s 3767(from)s 4320(appearing)s 5345(\(for)s 5791(e)s 3(xample\))k 6755(between)s 7638(a)s 7833(w)s 2(ord)k 8410(and)s -8843(an)s 0 1742(immediately)m 1248(follo)s 6(wing)k 2225(comma.)s +8843(an)s 0 9987(immediately)m 1248(follo)s 6(wing)k 2225(comma.)s 3093(The)s 3521(other)s 4072(tw)s 2(o)k 4482(symbols)s 5331(will)s 5757(enlar)s 4(ge)k 6512(such)s 7008(components.)s -240 fnt5 0 949(3.17.)m 591(@HScale)s 1587(and)s 2028(@VScale)s +240 fnt5 0 9194(3.18.)m 591(@HScale)s 1587(and)s 2028(@VScale)s [ /Dest /LOUThscale /DEST pdfmark -[ /Dest /LOUT16_4080_pre_hsca_1 /DEST pdfmark +[ /Dest /LOUT19_4213_pre_hsca_1 /DEST pdfmark -[ /Dest /LOUT16_4080_pre_hsca_2 /DEST pdfmark +[ /Dest /LOUT19_4213_pre_hsca_2 /DEST pdfmark -[ /Dest /LOUT16_4080_pre_hsca_3 /DEST pdfmark -220 fnt2 538 514(@HScale)m 240 fnt1 1516 517(causes)m 2189(its)s +[ /Dest /LOUT19_4213_pre_hsca_3 /DEST pdfmark +220 fnt2 538 8759(@HScale)m 240 fnt1 1516 8762(causes)m 2189(its)s 2462(right)s 2970(parameter)s 3982(to)s 4218(e)s 3(xpand)k 4962(to)s 5199(\207ll)s 5516(the)s 5861(space)s 6446(a)s 4(v)k 6(ailable,)k -7402(by)s 7693(geometricallly)s 0 229(scaling)m 730(it:)s +7402(by)s 7693(geometricallly)s 0 8474(scaling)m 730(it:)s 220 fnt2 +480 7973(4i @Wide @HScale { 1 2 3 4 5 6 7 8 })m 240 fnt1 0 7479(has)m 370(result)s gsave +480 0 translate +4.4965 1.0000 scale +0 7024(1)m +155(2)s 329(3)s 493(4)s 667(5)s 833(6)s +1006(7)s 1174(8)s +grestore +0 6570(and)m 220 fnt2 480 6119(0.5i @Wide @HScale { 1 2 3 4 5 6 7 8 })m +240 fnt1 0 5625(has)m 370(result)s gsave +480 0 translate +0.5621 1.0000 scale +0 5170(1)m 155(2)s +329(3)s 493(4)s 667(5)s 833(6)s 1006(7)s +1174(8)s +grestore +220 fnt2 0 4713(@HScale)m 240 fnt1 980 4716(\207rst)m +1409(applies)s 220 fnt2 2136 4713(@HContr)m 2(act)k 240 fnt1 +3398 4716(to)m 3635(its)s 3910(parameter)s 9(,)k 4960(then)s +5427(horizontally)s 6635(scales)s 7254(it)s 7444(to)s 7682(the)s +8028(actual)s 8651(size.)s 0 4428(The)m 433(principal)s 1342(mark)s +1899(of)s 2175(the)s 2528(right)s 3044(parameter)s 4063(has)s +4438(no)s 4736(ef)s 6(fect)k 5337(on)s 5639(the)s +5992(result;)s 6639(the)s 6992(parameter)s 8011(is)s 8226(scaled)s +8887(to)s 0 4140(the)m 365(actual)s 1007(size)s 1451(and)s +1872(positioned)s 2944(to)s 3200(\207ll)s 3537(the)s 3902(space)s +4506(a)s 4(v)k 6(ailable.)k 5539(\(T)s 19(aking)k +6347(account)s 7168(of)s 7456(alignment)s 8489(of)s 8778(the)s +0 3852(principal)m 904(mark)s 1456(only)s 1936(causes)s 2611(trouble)s +3344(in)s 3587(practice.\))s 220 fnt2 480 3475(@VScale)m 240 fnt1 +1460 3478(is)m 1681(similar)s 9(,)k 2452(b)s 4(ut)k +2825(in)s 3080(a)s 3257(v)s 3(ertical)k 4035(direction.)s +220 fnt2 5059 3475(@HScale)m 240 fnt1 6051 3478(and)m 220 fnt2 +6467 3475(@VScale)m 240 fnt1 7447 3478(each)m 7953(ha)s 4(v)k 3(e)k +8465(both)s 8960(a)s 220 fnt2 0 3187(@OneCol)m 240 fnt1 +1012 3190(and)m 1416(a)s 220 fnt2 1582 3187(@OneRo)m 3(w)k +240 fnt1 2713 3190(ef)m 6(fect.)k 240 fnt5 0 2442(3.19.)m +591(@HCo)s 2(v)k 2(er)k 1679(and)s 2120(@VCo)s 2(v)k 2(er)k + +[ /Dest /LOUThcover /DEST pdfmark + +[ /Dest /LOUT19_4213_pre_cove_1 /DEST pdfmark + +[ /Dest /LOUT19_4213_pre_cove_2 /DEST pdfmark +240 fnt1 529 2010(The)m 220 fnt2 946 2007(@VCo)m 3(v)k 5(er)k +240 fnt1 1941 2010(symbol)m 2690(v)s 3(ertically)k 3631(scales)s +4241(its)s 4506(right)s 5006(parameter)s 6009(so)s 6264(that)s +6671(it)s 6852(co)s 3(v)k 3(ers)k 7510(e)s 6(v)k 3(ery)k +8075(object)s 8708(that)s 0 1722(shares)m 648(its)s 924(ro)s 6(w)k +1344(mark.)s 1999(F)s 3(or)k 2388(e)s 3(xample,)k +220 fnt2 480 1221(@VCo)m 3(v)k 5(er \( 45d @Rotate Hello @VCo)k 3(v)k 5(er \))k +240 fnt1 0 725(produces)m grestore gsave 1417 -15423 translate @@ -12611,7 +13212,7 @@ pgsave restore showpage -%%Page: 51 57 +%%Page: 53 59 %%BeginPageSetup %%PageResources: font Times-Roman %%+ font Times-Italic @@ -12634,74 +13235,25 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -240 fnt6 1417 -1580(3.17.)m 1991(@HScale)s 2955(and)s 3381(@VScale)s -240 fnt5 10256 -1583(51)m gsave +240 fnt6 1417 -1580(3.19.)m +1991(@HCo)s 2(ver)k 3032(and)s 3458(@VCo)s 2(ver)k +240 fnt5 10250 -1583(53)m gsave 1417 -15423 translate -240 fnt1 9066 13413 0 13309 240 288 60 LoutGraphic +240 fnt1 9066 13412 0 12965 240 288 60 LoutGraphic gsave 1 LoutMargSet grestore -220 fnt2 480 13252(4i @Wide @HScale { 1 2 3 4 5 6 7 8 })m 240 fnt1 -0 12758(has)m 370(result)s gsave -480 0 translate -4.4965 1.0000 scale -0 12303(1)m 155(2)s 329(3)s -493(4)s 667(5)s 833(6)s 1006(7)s 1174(8)s - -grestore -0 11849(and)m 220 fnt2 480 11398(0.5i @Wide @HScale { 1 2 3 4 5 6 7 8 })m 240 fnt1 0 10904(has)m -370(result)s gsave -480 0 translate -0.5621 1.0000 scale -0 10449(1)m 155(2)s 329(3)s 493(4)s -667(5)s 833(6)s 1006(7)s 1174(8)s +748 843 0 396 240 288 60 480 12569 LoutGr2 +grestore save gsave 200 dict begin lfigdict begin grestore -220 fnt2 -0 9992(@HScale)m 240 fnt1 980 9995(\207rst)m 1409(applies)s 220 fnt2 -2136 9992(@HContr)m 2(act)k 240 fnt1 3398 9995(to)m 3635(its)s -3910(parameter)s 9(,)k 4960(then)s 5427(horizontally)s 6635(scales)s -7254(it)s 7444(to)s 7682(the)s 8028(actual)s 8651(size.)s -0 9707(The)m 433(principal)s 1342(mark)s 1899(of)s 2175(the)s -2528(right)s 3044(parameter)s 4063(has)s 4438(no)s 4736(ef)s 6(fect)k -5337(on)s 5639(the)s 5992(result;)s 6639(the)s 6992(parameter)s -8011(is)s 8226(scaled)s 8887(to)s 0 9419(the)m 365(actual)s -1007(size)s 1451(and)s 1872(positioned)s 2944(to)s 3200(\207ll)s -3537(the)s 3902(space)s 4506(a)s 4(v)k 6(ailable.)k -5539(\(T)s 19(aking)k 6347(account)s 7168(of)s 7456(alignment)s -8489(of)s 8778(the)s 0 9131(principal)m 904(mark)s 1456(only)s -1936(causes)s 2611(trouble)s 3344(in)s 3587(practice.\))s 220 fnt2 -480 8754(@VScale)m 240 fnt1 1460 8757(is)m 1681(similar)s 9(,)k -2452(b)s 4(ut)k 2825(in)s 3080(a)s 3257(v)s 3(ertical)k -4035(direction.)s 220 fnt2 5059 8754(@HScale)m 240 fnt1 6051 8757(and)m -220 fnt2 6467 8754(@VScale)m 240 fnt1 7447 8757(each)m 7953(ha)s 4(v)k 3(e)k -8465(both)s 8960(a)s 220 fnt2 0 8466(@OneCol)m 240 fnt1 -1012 8469(and)m 1416(a)s 220 fnt2 1582 8466(@OneRo)m 3(w)k -240 fnt1 2713 8469(ef)m 6(fect.)k 240 fnt5 0 7721(3.18.)m -591(@HCo)s 2(v)k 2(er)k 1679(and)s 2120(@VCo)s 2(v)k 2(er)k - -[ /Dest /LOUThcover /DEST pdfmark - -[ /Dest /LOUT16_4080_pre_cove_1 /DEST pdfmark - -[ /Dest /LOUT16_4080_pre_cove_2 /DEST pdfmark -240 fnt1 529 7289(The)m 220 fnt2 946 7286(@VCo)m 3(v)k 5(er)k -240 fnt1 1941 7289(symbol)m 2690(v)s 3(ertically)k 3631(scales)s -4241(its)s 4506(right)s 5006(parameter)s 6009(so)s 6264(that)s -6671(it)s 6852(co)s 3(v)k 3(ers)k 7510(e)s 6(v)k 3(ery)k -8075(object)s 8708(that)s 0 7001(shares)m 648(its)s 924(ro)s 6(w)k -1344(mark.)s 1999(F)s 3(or)k 2388(e)s 3(xample,)k -220 fnt2 480 6500(@VCo)m 3(v)k 5(er \( 45d @Rotate Hello @VCo)k 3(v)k 5(er \))k -240 fnt1 0 6004(produces)m 748 843 0 396 240 288 60 480 4821 LoutGr2 -grestore save gsave 200 dict begin lfigdict begin -grestore -748 843 0 396 240 288 60 0 0 LoutGr2 +748 843 0 396 240 288 60 0 0 LoutGr2 0.015 cm setlinewidth lfiground setlinecap 0.15 cm /lfigdashed [ -0.3 cm ymark @@ -12716,23 +13268,23 @@ gsave 210 396 translate 45.0000 rotate -0 -54(Hello)m +0 -54(Hello)m + grestore gsave 680 396 translate 1.0000 4.1328 scale -0 -54(\))m - +0 -54(\))m grestore grestore end end restore grestore -0 4370(The)m 428(ro)s 6(w)k 848(mark)s 1400(has)s -1770(been)s 2279(added)s 2909(to)s 3148(sho)s 6(w)k +0 12118(The)m 428(ro)s 6(w)k 848(mark)s +1400(has)s 1770(been)s 2279(added)s 2909(to)s 3148(sho)s 6(w)k 3702(clearly)s 4405(where)s 5045(it)s 5237(lies.)s 5732(This)s 6208(should)s 6905(be)s 7187(compared)s 8188(with)s 220 fnt2 -480 3869(@VScale \( 45d @Rotate Hello @VScale \))m 240 fnt1 0 3373(which)m 642(produces)s 748 486 0 39 240 288 60 480 2547 LoutGr2 +480 11617(@VScale \( 45d @Rotate Hello @VScale \))m 240 fnt1 0 11121(which)m 642(produces)s 748 486 0 39 240 288 60 480 10295 LoutGr2 grestore save gsave 200 dict begin lfigdict begin grestore 748 486 0 39 240 288 60 0 0 LoutGr2 @@ -12762,222 +13314,126 @@ grestore end end restore grestore -0 2096(Scaling)m 786(abandons)s 1759(mark)s +0 9844(Scaling)m 786(abandons)s 1759(mark)s 2328(alignment)s 3361(and)s 3782(so)s 4065(is)s 4292(able)s 4763(to)s 5018(e)s 3(xactly)k 5776(co)s 3(v)k 3(er)k 6378(the)s 6743(rest)s 7164(of)s 7452(the)s 7817(ro)s 6(w)k 15(,)k -8292(whereas)s 0 1808(co)m 3(v)k 3(ering)k 896(preserv)s 3(es)k +8292(whereas)s 0 9556(co)m 3(v)k 3(ering)k 896(preserv)s 3(es)k 1859(mark)s 2424(alignment)s 3453(and)s 3869(so)s 4148(is)s 4371(obliged)s 5160(in)s 5415(general)s 6186(to)s 6438(more)s 6998(than)s 7479(co)s 3(v)k 3(er)k 8077(the)s -8438(rest)s 8855(of)s 0 1520(the)m 348(ro)s 6(w)k 15(.)k -480 1146(If)m 700(the)s 1038(parameter)s 2042(of)s 220 fnt2 -2303 1143(@VCo)m 3(v)k 5(er)k 240 fnt1 3299 1146(has)m +8438(rest)s 8855(of)s 0 9268(the)m 348(ro)s 6(w)k 15(.)k +480 8894(If)m 700(the)s 1038(parameter)s 2042(of)s 220 fnt2 +2303 8891(@VCo)m 3(v)k 5(er)k 240 fnt1 3299 8894(has)m 3658(zero)s 4112(v)s 3(ertical)k 4869(size,)s 5337(this)s 5723(is)s 5923(tak)s 2(en)k 6485(to)s 6714(mean)s 7279(that)s 7687(co)s 3(v)k 3(ering)k 8561(is)s -8760(not)s 0 858(required)m 863(after)s 1368(all)s 1670(and)s -2083(the)s 220 fnt2 2441 855(@VCo)m 3(v)k 5(er)k -240 fnt1 3456 858(is)m 3675(silently)s 4441(ignored.)s 5345(If)s +8760(not)s 0 8606(required)m 863(after)s 1368(all)s 1670(and)s +2083(the)s 220 fnt2 2441 8603(@VCo)m 3(v)k 5(er)k +240 fnt1 3456 8606(is)m 3675(silently)s 4441(ignored.)s 5345(If)s 5585(ho)s 6(we)k 6(v)k 3(er)k 6463(the)s -6820(parameter)s 7843(has)s 8223(non-zero)s 0 570(size)m 434(abo)s 3(v)k 3(e)k +6820(parameter)s 7843(has)s 8223(non-zero)s 0 8318(size)m 434(abo)s 3(v)k 3(e)k 1064(the)s 1420(mark)s 1980(b)s 4(ut)k 2350(zero)s 2822(size)s 3256(belo)s 6(w)k 15(,)k 3935(or)s 4202(vice)s 4664(v)s 3(ersa,)k 5280(this)s 5684(is)s 5901(tak)s 2(en)k 6482(to)s 6729(be)s 7019(an)s -7310(error)s 7841(since)s 8396(scaling)s 0 282(cannot)m 698(mak)s 2(e)k +7310(error)s 7841(since)s 8396(scaling)s 0 8030(cannot)m 698(mak)s 2(e)k 1270(the)s 1618(parameter)s 2632(co)s 3(v)k 3(er)k 3217(the)s 3565(rest)s 3969(of)s 4240(the)s 4588(ro)s 6(w)k 15(.)k - -grestore -gsave -1417 -15423 translate -240 fnt1 0 0 0 0 240 288 60 LoutGraphic -gsave -1 LoutMargSet -grestore - -grestore - -grestore - -grestore - -pgsave restore -showpage - -%%Page: 52 58 -%%BeginPageSetup -%%PageResources: font Times-Roman -%%+ font Times-Bold -%%+ font Times-Italic -%%+ font Helvetica -/pgsave save def -%%IncludeResource: font Times-Roman -/Times-Romanfnt1 vec2 /Times-Roman LoutRecode -/fnt1 { /Times-Romanfnt1 LoutFont } def -%%IncludeResource: font Times-Bold -/Times-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 -0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic -gsave -LoutPageSet -grestore -gsave -0 16840 translate -0.0000 rotate -240 fnt5 1417 -1583(52)m 240 fnt6 7498 -1580(Chapter)m 8348(3.)s -8622(Pr)s 8(ede\207ned)k 9717(symbols)s gsave -1417 -15423 translate -240 fnt1 9066 13368 0 13259 240 288 60 LoutGraphic -gsave -0 LoutMargSet -grestore -220 fnt2 480 13202(@HCo)m 3(v)k 5(er)k -240 fnt1 1505 13205(is)m 1722(similar)s 9(,)k 2489(horizontally)s -3705(co)s 3(v)k 3(ering)k 4596(all)s 4896(objects)s -5631(that)s 6056(share)s 6623(its)s 6906(column)s 7688(mark.)s -8350(Neither)s 0 12917(symbol)m 753(w)s 2(orks)k 1379(well)s -1837(near)s 2300(g)s 1(alle)k 3(y)k 2926(tar)s 4(gets,)k -3658(because)s 4463(the)s 4803(scale)s 5328(f)s 2(actor)k -5934(to)s 6166(apply)s 6744(is)s 6946(determined)s 8071(before)s -8729(an)s 3(y)k 0 12629(g)m 1(alle)k 3(y)k +220 fnt2 480 7653(@HCo)m 3(v)k 5(er)k 240 fnt1 +1505 7656(is)m 1722(similar)s 9(,)k 2489(horizontally)s 3705(co)s 3(v)k 3(ering)k +4596(all)s 4896(objects)s 5631(that)s 6056(share)s 6623(its)s +6906(column)s 7688(mark.)s 8350(Neither)s 0 7368(symbol)m 753(w)s 2(orks)k +1379(well)s 1837(near)s 2300(g)s 1(alle)k 3(y)k +2926(tar)s 4(gets,)k 3658(because)s 4463(the)s 4803(scale)s +5328(f)s 2(actor)k 5934(to)s 6166(apply)s 6744(is)s +6946(determined)s 8071(before)s 8729(an)s 3(y)k 0 7080(g)m 1(alle)k 3(y)k 634(\210ushing)s 1459(tak)s 2(es)k 1999(place.)s 240 fnt5 -0 11836(3.19.)m 591(@StartHSpan,@StartVSpan,)s 3642(@StartHVSpan,)s 5374(@HSpan,)s 6416(and)s +0 6287(3.20.)m 591(@StartHSpan,@StartVSpan,)s 3642(@StartHVSpan,)s 5374(@HSpan,)s 6416(and)s 6857(@VSpan)s [ /Dest /LOUThspan /DEST pdfmark -[ /Dest /LOUT16_4080_pre_span_1 /DEST pdfmark +[ /Dest /LOUT19_4213_pre_span_1 /DEST pdfmark -[ /Dest /LOUT16_4080_pre_span_2 /DEST pdfmark +[ /Dest /LOUT19_4213_pre_span_2 /DEST pdfmark -[ /Dest /LOUT16_4080_pre_span_3 /DEST pdfmark +[ /Dest /LOUT19_4213_pre_span_3 /DEST pdfmark -[ /Dest /LOUT16_4080_pre_span_4 /DEST pdfmark +[ /Dest /LOUT19_4213_pre_span_4 /DEST pdfmark -[ /Dest /LOUT16_4080_pre_span_5 /DEST pdfmark -240 fnt1 556 11359(These)m 1199(symbols)s 2065(w)s 2(ork)k +[ /Dest /LOUT19_4213_pre_span_5 /DEST pdfmark +240 fnt1 556 5810(These)m 1199(symbols)s 2065(w)s 2(ork)k 2632(together)s 3492(to)s 3747(produce)s 4591(spanning)s 5525(columns)s 6403(and)s 6824(ro)s 6(ws)k 7350(in)s 7610(a)s -7792(more)s 8356(\210e)s 3(xible)k 0 11071(w)m 2(ay)k +7792(more)s 8356(\210e)s 3(xible)k 0 5522(w)m 2(ay)k 451(than)s 920(is)s 1130(possible)s 1970(in)s 2213(practice)s -3024(with)s 220 fnt2 3506 11068(//)m 240 fnt1 3691 11071(and)m -220 fnt2 4095 11068(||)m 240 fnt1 4189 11071(.)m 4353(An)s -4703(object)s 220 fnt2 480 10570(@Star)m -8(tHSpan object)k 240 fnt1 -0 10073(causes)m 220 fnt2 682 10070(object)m 240 fnt1 1330 10073(to)m +3024(with)s 220 fnt2 3506 5519(//)m 240 fnt1 3691 5522(and)m +220 fnt2 4095 5519(||)m 240 fnt1 4189 5522(.)m 4353(An)s +4703(object)s 220 fnt2 480 5021(@Star)m -8(tHSpan object)k 240 fnt1 +0 4524(causes)m 220 fnt2 682 4521(object)m 240 fnt1 1330 4524(to)m 1577(be)s 1866(printed,)s 2658(b)s 4(ut)k 3027(occup)s 2(ying)k 4084(all)s 4384(the)s 4740(horizontal)s 5771(space)s 6366(to)s 6612(the)s 6968(right)s 7486(on)s 7791(the)s 8146(ro)s 6(w)k -8574(mark)s 0 9785(on)m 289(which)s 922(it)s 1105(lies)s +8574(mark)s 0 4236(on)m 289(which)s 922(it)s 1105(lies)s 1478(up)s 1762(to)s 1992(and)s 2387(including)s 3335(the)s -3675(rightmost)s 220 fnt2 4642 9782(@HSpan)m 240 fnt1 5572 9785(symbol)m +3675(rightmost)s 220 fnt2 4642 4233(@HSpan)m 240 fnt1 5572 4236(symbol)m 6323(on)s 6611(that)s 7020(mark)s 7563(not)s 7920(preceded)s -8832(by)s 220 fnt2 0 9494(@Star)m -8(tHVSpan)k 240 fnt1 -1496 9497(,)m 220 fnt2 1603 9494(@Star)m -8(tHSpan)k 240 fnt1 -2953 9497(,)m 220 fnt2 3059 9494(@Star)m -8(tVSpan)k 240 fnt1 -4397 9497(,)m 4503(or)s 220 fnt2 4761 9494(@VSpan)m 240 fnt1 -5628 9497(.)m 5791(The)s 6218(column)s 6992(mark)s 7543(of)s -7813(this)s 8208(spanning)s 0 9209(object)m 644(is)s 854(not)s +8832(by)s 220 fnt2 0 3945(@Star)m -8(tHVSpan)k 240 fnt1 +1496 3948(,)m 220 fnt2 1603 3945(@Star)m -8(tHSpan)k 240 fnt1 +2953 3948(,)m 220 fnt2 3059 3945(@Star)m -8(tVSpan)k 240 fnt1 +4397 3948(,)m 4503(or)s 220 fnt2 4761 3945(@VSpan)m 240 fnt1 +5628 3948(.)m 5791(The)s 6218(column)s 6992(mark)s 7543(of)s +7813(this)s 8208(spanning)s 0 3660(object)m 644(is)s 854(not)s 1220(constrained)s 2380(to)s 2619(align)s 3154(with)s 3636(an)s 3(y)k 4033(of)s 4304(the)s 4652(column)s 5427(marks)s 6062(of)s -6333(the)s 6681(columns)s 7543(it)s 7735(spans.)s 480 8835(If)m -739(there)s 1301(is)s 1541(no)s 220 fnt2 1863 8832(@HSpan)m -240 fnt1 2831 8835(symbol)m 3621(an)s 3(ywhere)k 4633(to)s -4901(the)s 5279(right)s 5819(of)s 220 fnt2 6119 8832(@Star)m -8(tHSpan)k -240 fnt1 7469 8835(,)m 7606(then)s 8104(the)s 8482(object)s -0 8547(spans)m 585(only)s 1067(its)s 1345(o)s 6(wn)k +6333(the)s 6681(columns)s 7543(it)s 7735(spans.)s 480 3286(If)m +739(there)s 1301(is)s 1541(no)s 220 fnt2 1863 3283(@HSpan)m +240 fnt1 2831 3286(symbol)m 3621(an)s 3(ywhere)k 4633(to)s +4901(the)s 5279(right)s 5819(of)s 220 fnt2 6119 3283(@Star)m -8(tHSpan)k +240 fnt1 7469 3286(,)m 7606(then)s 8104(the)s 8482(object)s +0 2998(spans)m 585(only)s 1067(its)s 1345(o)s 6(wn)k 1811(column.)s 2695(This)s 3173(means)s 3837(that)s 4257(it)s 4451(occupies)s 5341(that)s 5761(column)s 6538(as)s 6790(usual)s 7352(b)s 4(ut)k 7716(its)s 7994(mark)s 8548(is)s -8760(not)s 0 8259(constrained)m 1160(to)s 1399(align)s 1934(with)s +8760(not)s 0 2710(constrained)m 1160(to)s 1399(align)s 1934(with)s 2416(those)s 2977(of)s 3248(the)s 3596(other)s 4147(objects)s -4875(in)s 5118(the)s 5466(column.)s 480 7885(Similarly)m 15(,)k -1457(the)s 220 fnt2 1801 7882(@Star)m -8(tVSpan)k 240 fnt1 -3196 7885(symbol)m 3952(causes)s 4624(its)s 4896(object)s 5537(to)s +4875(in)s 5118(the)s 5466(column.)s 480 2336(Similarly)m 15(,)k +1457(the)s 220 fnt2 1801 2333(@Star)m -8(tVSpan)k 240 fnt1 +3196 2336(symbol)m 3952(causes)s 4624(its)s 4896(object)s 5537(to)s 5772(occup)s 2(y)k 6513(all)s 6802(the)s 7147(v)s 3(ertical)k -7910(space)s 8493(belo)s 6(w)k 0 7597(it)m 191(on)s +7910(space)s 8493(belo)s 6(w)k 0 2048(it)m 191(on)s 486(the)s 832(column)s 1605(mark)s 2155(on)s 2451(which)s 3091(it)s 3281(lies,)s 3717(do)s 6(wn)k 4299(to)s 4537(and)s 4939(including)s 5894(the)s 6240(bottommost)s 220 fnt2 -7441 7594(@VSpan)m 240 fnt1 8366 7597(symbol)m 0 7309(on)m 294(that)s +7441 2045(@VSpan)m 240 fnt1 8366 2048(symbol)m 0 1760(on)m 294(that)s 708(mark)s 1256(not)s 1618(preceded)s 2535(by)s 2825(a)s -220 fnt2 2987 7306(@Star)m -8(tHVSpan)k 240 fnt1 4483 7309(,)m -220 fnt2 4586 7306(@Star)m -8(tHSpan)k 240 fnt1 5936 7309(,)m -220 fnt2 6039 7306(@Star)m -8(tVSpan)k 240 fnt1 7377 7309(,)m -7480(or)s 220 fnt2 7735 7306(@HSpan)m 240 fnt1 8614 7309(;)m -8722(and)s 0 7021(if)m 206(there)s 728(is)s 927(no)s -220 fnt2 1209 7018(@VSpan)m 240 fnt1 2125 7021(symbol)m 2874(an)s 3(ywhere)k +220 fnt2 2987 1757(@Star)m -8(tHVSpan)k 240 fnt1 4483 1760(,)m +220 fnt2 4586 1757(@Star)m -8(tHSpan)k 240 fnt1 5936 1760(,)m +220 fnt2 6039 1757(@Star)m -8(tVSpan)k 240 fnt1 7377 1760(,)m +7480(or)s 220 fnt2 7735 1757(@HSpan)m 240 fnt1 8614 1760(;)m +8722(and)s 0 1472(if)m 206(there)s 728(is)s 927(no)s +220 fnt2 1209 1469(@VSpan)m 240 fnt1 2125 1472(symbol)m 2874(an)s 3(ywhere)k 3846(belo)s 6(w)k 4468(it)s 4649(on)s 4935(that)s 5342(mark,)s 5929(then)s 6387(the)s 6724(object)s 7357(spans)s -7929(only)s 8398(its)s 8662(o)s 6(wn)k 0 6733(ro)m 6(w)k 15(,)k +7929(only)s 8398(its)s 8662(o)s 6(wn)k 0 1184(ro)m 6(w)k 15(,)k 458(occup)s 2(ying)k 1507(its)s 1783(ro)s 6(w)k 2203(b)s 4(ut)k 2565(with)s 3047(its)s 3323(mark)s 3875(not)s 4241(constrained)s 5401(to)s 5640(align)s 6175(with)s -6657(the)s 7005(ro)s 6(w)k 7425(mark.)s 480 6359(The)m -220 fnt2 949 6356(@Star)m -8(tHVSpan)k 240 fnt1 2547 6359(symbol)m +6657(the)s 7005(ro)s 6(w)k 7425(mark.)s 480 810(The)m +220 fnt2 949 807(@Star)m -8(tHVSpan)k 240 fnt1 2547 810(symbol)m 3349(combines)s 4359(the)s 4748(ef)s 6(fects)k 5470(of)s -220 fnt2 5783 6356(@Star)m -8(tHSpan)k 240 fnt1 7235 6359(and)m -220 fnt2 7681 6356(@Star)m -8(tVSpan)k 240 fnt1 9019 6359(,)m -0 6071(allo)m 6(wing)k 884(an)s 1167(object)s 1811(to)s +220 fnt2 5783 807(@Star)m -8(tHSpan)k 240 fnt1 7235 810(and)m +220 fnt2 7681 807(@Star)m -8(tVSpan)k 240 fnt1 9019 810(,)m +0 522(allo)m 6(wing)k 884(an)s 1167(object)s 1811(to)s 2050(span)s 2546(both)s 3029(columns)s 3891(and)s 4295(ro)s 6(ws)k 4805(simultaneously)s 15(.)k 6402(F)s 3(or)k 6791(e)s 3(xample,)k -7705(in)s 220 fnt2 480 5570(@Star)m -8(tHVSpan x | | @HSpan)k 480 5282(/)m -480 4994(@VSpan | |)m 240 fnt1 0 4498(the)m 378(object)s 220 fnt2 -1052 4495(x)m 240 fnt1 1250 4498(will)m 1706(occup)s 2(y)k -2481(a)s 2677(rectangular)s 3841(area)s 4328(spanning)s 5276(three)s -5840(columns,)s 6788(tw)s 2(o)k 7228(ro)s 6(ws,)k -7824(and)s 8258(the)s 8637(g)s 1(aps)k 0 4210(between)m -854(them.)s 480 3836(The)m 908(objects)s 1636(lying)s 2182(in)s -2425(the)s 2774(re)s 3(gion)k 3439(spanned)s 4283(should)s -4980(all)s 5274(be)s 5556(empty)s 15(,)k 6247(or)s -6506(the)s 220 fnt2 6855 3833(@HSpan)m 240 fnt1 7794 3836(and)m -220 fnt2 8199 3833(@VSpan)m 240 fnt1 0 3548(symbols)m 865(can)s -1271(be)s 1570(used)s 2084(to)s 2340(document)s 3360(the)s -3725(spanning)s 4660(that)s 5095(is)s 5322(occurring.)s 6418(At)s -6734(present)s 7501(there)s 8051(may)s 8534(be)s 8833(no)s -0 3260(g)m 1(alle)k 3(y)k 639(tar)s 4(gets)k -1328(or)s 1593(recursi)s 6(v)k 3(e)k 2521(symbols)s -3376(within)s 4050(the)s 4404(right)s 4921(parameter)s 5941(of)s -220 fnt2 6218 3257(@Star)m -8(tHSpan)k 240 fnt1 7568 3260(,)m -220 fnt2 7681 3257(@Star)m -8(tVSpan)k 240 fnt1 9019 3260(,)m -0 2972(or)m 220 fnt2 246 2969(@Star)m -8(tHVSpan)k 240 fnt1 -1742 2972(.)m 1892(Ho)s 6(we)k 6(v)k 3(er)k 9(,)k -2838(the)s 3172(right)s 3670(parameter)s 4670(may)s 5122(otherwise)s -6093(be)s 6362(an)s 6631(arbitrary)s 7492(object,)s 8169(including)s -0 2684(paragraphs)m 1100(of)s 1371(te)s 3(xt)k 1786(that)s -2204(require)s 2936(breaking.)s 480 2310(If)m 722(the)s 1082(right)s -1605(parameter)s 2631(of)s 220 fnt2 2914 2307(@Star)m -8(tHSpan)k -240 fnt1 4264 2310(,)m 220 fnt2 4383 2307(@Star)m -8(tVSpan)k -240 fnt1 5721 2310(,)m 5840(or)s 220 fnt2 6111 2307(@Star)m -8(tHVSpan)k -240 fnt1 7679 2310(occupies)m 8579(more)s 0 2022(horizontal)m 1022(or)s -1279(v)s 3(ertical)k 2044(space)s 2629(than)s 3095(all)s -3386(of)s 3655(the)s 4001(spanned)s 4842(columns)s 5701(or)s -5958(ro)s 6(ws)k 6466(combined)s 7466(require,)s 8247(the)s -8592(e)s 3(xtra)k 0 1734(space)m 601(goes)s 1106(into)s -1546(the)s 1908(last)s 2314(spanned)s 3172(column)s 3962(or)s -4235(ro)s 6(w)k 15(.)k 4765(Ov)s 3(erlapping)k -6026(spanning)s 6958(ro)s 6(ws)k 7483(and)s 7902(columns)s -8779(are)s 0 1446(permitted.)m 1081(Gaps)s 1626(spanned)s 2471(by)s -2767(span)s 3266(objects)s 3996(are)s 4345(unbreakable)s 5572(\(their)s -220 fnt2 6151 1443(u)m 240 fnt1 6321 1446(indicator)m 7232(is)s -7444(set)s 7772(automatically)s 0 1158(and)m 404(cannot)s 1102(be)s -1384(re)s 6(v)k 4(ok)k 2(ed\).)k +7705(in)s grestore gsave 1417 -15423 translate 240 fnt1 0 0 0 0 240 288 60 LoutGraphic gsave -0 LoutMargSet +1 LoutMargSet grestore grestore @@ -12989,22 +13445,22 @@ pgsave restore showpage -%%Page: 53 59 +%%Page: 54 60 %%BeginPageSetup %%PageResources: font Times-Roman -%%+ font Times-Italic %%+ font Times-Bold +%%+ font Times-Italic %%+ font Helvetica /pgsave save def %%IncludeResource: font Times-Roman /Times-Romanfnt1 vec2 /Times-Roman LoutRecode /fnt1 { /Times-Romanfnt1 LoutFont } def -%%IncludeResource: font Times-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 Times-Italic +/Times-Italicfnt6 vec2 /Times-Italic LoutRecode +/fnt6 { /Times-Italicfnt6 LoutFont } def %%IncludeResource: font Helvetica /Helveticafnt2 vec2 /Helvetica LoutRecode /fnt2 { /Helveticafnt2 LoutFont } def @@ -13012,111 +13468,118 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -240 fnt6 1417 -1580(3.20.)m 1991(@Scale)s 240 fnt5 10250 -1583(53)m -gsave +240 fnt5 1417 -1583(54)m +240 fnt6 7498 -1580(Chapter)m 8348(3.)s 8622(Pr)s 8(ede\207ned)k +9717(symbols)s gsave 1417 -15423 translate -240 fnt1 9066 13412 0 13412 240 288 60 LoutGraphic +240 fnt1 9066 13368 0 13264 240 288 60 LoutGraphic gsave -1 LoutMargSet +0 LoutMargSet grestore -240 fnt5 0 13247(3.20.)m 591(@Scale)s +220 fnt2 480 13207(@Star)m -8(tHVSpan x | | @HSpan)k +480 12919(/)m 480 12631(@VSpan | |)m 240 fnt1 0 12135(the)m 378(object)s +220 fnt2 1052 12132(x)m 240 fnt1 1250 12135(will)m 1706(occup)s 2(y)k +2481(a)s 2677(rectangular)s 3841(area)s 4328(spanning)s 5276(three)s +5840(columns,)s 6788(tw)s 2(o)k 7228(ro)s 6(ws,)k +7824(and)s 8258(the)s 8637(g)s 1(aps)k 0 11847(between)m +854(them.)s 480 11473(The)m 908(objects)s 1636(lying)s 2182(in)s +2425(the)s 2774(re)s 3(gion)k 3439(spanned)s 4283(should)s +4980(all)s 5274(be)s 5556(empty)s 15(,)k 6247(or)s +6506(the)s 220 fnt2 6855 11470(@HSpan)m 240 fnt1 7794 11473(and)m +220 fnt2 8199 11470(@VSpan)m 240 fnt1 0 11185(symbols)m 865(can)s +1271(be)s 1570(used)s 2084(to)s 2340(document)s 3360(the)s +3725(spanning)s 4660(that)s 5095(is)s 5322(occurring.)s 6418(At)s +6734(present)s 7501(there)s 8051(may)s 8534(be)s 8833(no)s +0 10897(g)m 1(alle)k 3(y)k 639(tar)s 4(gets)k +1328(or)s 1593(recursi)s 6(v)k 3(e)k 2521(symbols)s +3376(within)s 4050(the)s 4404(right)s 4921(parameter)s 5941(of)s +220 fnt2 6218 10894(@Star)m -8(tHSpan)k 240 fnt1 7568 10897(,)m +220 fnt2 7681 10894(@Star)m -8(tVSpan)k 240 fnt1 9019 10897(,)m +0 10609(or)m 220 fnt2 246 10606(@Star)m -8(tHVSpan)k 240 fnt1 +1742 10609(.)m 1892(Ho)s 6(we)k 6(v)k 3(er)k 9(,)k +2838(the)s 3172(right)s 3670(parameter)s 4670(may)s 5122(otherwise)s +6093(be)s 6362(an)s 6631(arbitrary)s 7492(object,)s 8169(including)s +0 10321(paragraphs)m 1100(of)s 1371(te)s 3(xt)k 1786(that)s +2204(require)s 2936(breaking.)s 480 9947(If)m 722(the)s 1082(right)s +1605(parameter)s 2631(of)s 220 fnt2 2914 9944(@Star)m -8(tHSpan)k +240 fnt1 4264 9947(,)m 220 fnt2 4383 9944(@Star)m -8(tVSpan)k +240 fnt1 5721 9947(,)m 5840(or)s 220 fnt2 6111 9944(@Star)m -8(tHVSpan)k +240 fnt1 7679 9947(occupies)m 8579(more)s 0 9659(horizontal)m 1022(or)s +1279(v)s 3(ertical)k 2044(space)s 2629(than)s 3095(all)s +3386(of)s 3655(the)s 4001(spanned)s 4842(columns)s 5701(or)s +5958(ro)s 6(ws)k 6466(combined)s 7466(require,)s 8247(the)s +8592(e)s 3(xtra)k 0 9371(space)m 601(goes)s 1106(into)s +1546(the)s 1908(last)s 2314(spanned)s 3172(column)s 3962(or)s +4235(ro)s 6(w)k 15(.)k 4765(Ov)s 3(erlapping)k +6026(spanning)s 6958(ro)s 6(ws)k 7483(and)s 7902(columns)s +8779(are)s 0 9083(permitted.)m 1081(Gaps)s 1626(spanned)s 2471(by)s +2767(span)s 3266(objects)s 3996(are)s 4345(unbreakable)s 5572(\(their)s +220 fnt2 6151 9080(u)m 240 fnt1 6321 9083(indicator)m 7232(is)s +7444(set)s 7772(automatically)s 0 8795(and)m 404(cannot)s 1102(be)s +1384(re)s 6(v)k 4(ok)k 2(ed\).)k 240 fnt5 +0 8012(3.21.)m 591(@Scale)s [ /Dest /LOUTscale /DEST pdfmark -[ /Dest /LOUT16_4080_pre_scal_1 /DEST pdfmark -240 fnt1 588 12815(This)m -1112(symbol)s 1920(geometrically)s 3335(scales)s 4004(its)s 4328(right)s -4887(parameter)s 5949(by)s 6291(the)s 6687(scale)s 7268(f)s 2(actor)k +[ /Dest /LOUT19_4213_pre_scal_1 /DEST pdfmark +240 fnt1 588 7580(This)m 1112(symbol)s +1920(geometrically)s 3335(scales)s 4004(its)s 4328(right)s 4887(parameter)s +5949(by)s 6291(the)s 6687(scale)s 7268(f)s 2(actor)k 7930(gi)s 6(v)k 3(en)k 8558(in)s 8850(its)s -0 12527(left)m 377(parameter:)s 220 fnt2 480 12026(1.0 @Scale Hello 2.0 @Scale Hello 0.5 @Scale Hello)m 240 fnt1 -0 11571(has)m 370(result)s gsave -480 11063 translate +0 7292(left)m 377(parameter:)s 220 fnt2 480 6791(1.0 @Scale Hello 2.0 @Scale Hello 0.5 @Scale Hello)m 240 fnt1 +0 6336(has)m 370(result)s gsave +480 5828 translate 1.0000 1.0000 scale 0 -54(Hello)m grestore gsave -1124 11063 translate +1124 5828 translate 2.0000 2.0000 scale 0 -54(Hello)m grestore gsave -2292 11063 translate +2292 5828 translate 0.5000 0.5000 scale 0 -54(Hello)m grestore -0 10500(The)m 433(left)s 815(parameter)s 1834(can)s 2228(be)s +0 5265(The)m 433(left)s 815(parameter)s 1834(can)s 2228(be)s 2515(tw)s 2(o)k 2930(scale)s 3468(f)s 2(actors,)k 4227(in)s 4475(which)s 5122(case)s 5594(the)s 5947(\207rst)s 6383(applies)s 7116(horizontally)s 15(,)k 8368(and)s 8778(the)s -0 10212(second)m 723(v)s 3(ertically:)k 220 fnt2 480 9711({0.5 2.0} @Scale Hello)m -240 fnt1 0 9217(has)m 370(result)s gsave -480 8709 translate +0 4977(second)m 723(v)s 3(ertically:)k 220 fnt2 480 4476({0.5 2.0} @Scale Hello)m +240 fnt1 0 3982(has)m 370(result)s gsave +480 3474 translate 0.5000 2.0000 scale 0 -54(Hello)m grestore -0 8146(The)m +0 2911(The)m 433(left)s 815(parameter)s 1834(may)s 2305(be)s 2592(empty)s 15(,)k 3287(in)s 3535(which)s 4182(case)s 4654(Lout)s 5171(will)s 5602(scale)s 6140(the)s 6493(object)s 7142(by)s 7441(a)s -7612(common)s 8512(f)s 2(actor)k 0 7858(horizontally)m 1209(and)s +7612(common)s 8512(f)s 2(actor)k 0 2623(horizontally)m 1209(and)s 1613(v)s 3(ertically)k 2565(so)s 2831(as)s 3081(to)s 3320(occup)s 2(y)k 4064(all)s 4357(a)s 4(v)k 6(ailable)k -5265(horizontal)s 6289(space:)s 220 fnt2 480 7357({} @Scale { Hello w)m 2(or)k -3(ld })k -240 fnt1 0 6863(has)m 370(result)s gsave -0 5706 translate +5265(horizontal)s 6289(space:)s 220 fnt2 480 2122({} @Scale { Hello w)m 2(or)k -3(ld })k +240 fnt1 0 1628(has)m 370(result)s gsave +0 471 translate 7.9609 7.9609 scale 0 -54(Hello)m 583(w)s 2(orld)k grestore -0 4802(The)m 433(right)s 949(parameter)s 1969(may)s 2440(be)s -2728(an)s 3(y)k 3130(object.)s 220 fnt2 3884 4799(@Scale)m -240 fnt1 4712 4802(has)m 5088(both)s 5576(a)s 220 fnt2 -5748 4799(@OneCol)m 240 fnt1 6765 4802(and)m 7175(a)s 220 fnt2 -7346 4799(@OneRo)m 3(w)k 240 fnt1 8483 4802(ef)m 6(fect,)k -0 4514(and)m 404(the)s 752(marks)s 1387(of)s 1658(the)s -2006(result)s 2596(coincide)s 3462(with)s 3944(the)s 4292(principal)s -5196(marks)s 5831(of)s 6102(the)s 6450(right)s 6961(parameter)s 13(.)k -240 fnt5 0 3721(3.21.)m 591(@Rotate)s -[ /Dest /LOUTrotate /DEST pdfmark - -[ /Dest /LOUT16_4080_pre_rota_1 /DEST pdfmark - -[ /Dest /LOUT16_4080_pre_rota_2 /DEST pdfmark -240 fnt1 542 3289(The)m -220 fnt2 973 3286(@Rotate)m 240 fnt1 1897 3289(symbol)m 2660(will)s -3089(rotate)s 3691(its)s 3970(right)s 4484(parameter)s 5501(counterclockwise)s -7233(an)s 7519(amount)s 8300(gi)s 6(v)k 3(en)k -8883(in)s 0 3001(de)m 3(grees)k 778(\(positi)s 6(v)k 3(e)k -1661(or)s 1920(ne)s 3(g)k 1(ati)k 6(v)k 3(e\))k -2845(by)s 3139(its)s 3415(left)s 3792(parameter)s 13(.)k -4897(F)s 3(or)k 5286(e)s 3(xample,)k 220 fnt2 -480 2500(30d @Rotate { hello)m 8(, w)k 2(or)k -3(ld })k 240 fnt1 -0 2006(has)m 370(result)s gsave -534 1053 translate -30.0000 rotate -0 -54(hello,)m 583(w)s 2(orld)k grestore -0 527(Before)m 710(rotating)s 1511(the)s 1863(object,)s 220 fnt2 -2559 524(@OneCol)m 240 fnt1 3576 527(and)m 220 fnt2 3984 524(@OneRo)m 3(w)k -240 fnt1 5120 527(are)m 5471(applied)s 6238(to)s 6482(it.)s -6782(The)s 7215(result)s 7809(is)s 8024(a)s 8195(rectangle)s -0 239(whose)m 668(marks)s 1303(pass)s 1766(through)s 2568(the)s -2916(point)s 3468(where)s 4108(the)s 4456(original)s 5254(marks)s -5889(crossed:)s -grestore gsave 1417 -15423 translate 240 fnt1 0 0 0 0 240 288 60 LoutGraphic gsave -1 LoutMargSet +0 LoutMargSet grestore grestore @@ -13128,47 +13591,83 @@ pgsave restore showpage -%%Page: 54 60 +%%Page: 55 61 %%BeginPageSetup %%PageResources: font Times-Roman -%%+ font Times-Bold %%+ font Times-Italic -%%+ font Symbol +%%+ font Times-Bold %%+ 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 Symbol -/fnt4 { /Symbol 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 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -240 fnt5 1417 -1583(54)m 240 fnt6 7498 -1580(Chapter)m 8348(3.)s -8622(Pr)s 8(ede\207ned)k 9717(symbols)s gsave +240 fnt6 1417 -1580(3.21.)m +1991(@Scale)s 240 fnt5 10250 -1583(55)m gsave 1417 -15423 translate -240 fnt1 9066 13368 0 12598 240 288 60 LoutGraphic +240 fnt1 9066 13413 0 13413 240 288 60 LoutGraphic gsave -0 LoutMargSet +1 LoutMargSet +grestore +0 13250(The)m +433(right)s 949(parameter)s 1969(may)s 2440(be)s 2728(an)s 3(y)k +3130(object.)s 220 fnt2 3884 13247(@Scale)m 240 fnt1 4712 13250(has)m +5088(both)s 5576(a)s 220 fnt2 5748 13247(@OneCol)m 240 fnt1 +6765 13250(and)m 7175(a)s 220 fnt2 7346 13247(@OneRo)m 3(w)k +240 fnt1 8483 13250(ef)m 6(fect,)k 0 12962(and)m 404(the)s +752(marks)s 1387(of)s 1658(the)s 2006(result)s 2596(coincide)s +3462(with)s 3944(the)s 4292(principal)s 5196(marks)s 5831(of)s +6102(the)s 6450(right)s 6961(parameter)s 13(.)k 240 fnt5 +0 12169(3.22.)m 591(@Rotate)s +[ /Dest /LOUTrotate /DEST pdfmark + +[ /Dest /LOUT19_4213_pre_rota_1 /DEST pdfmark + +[ /Dest /LOUT19_4213_pre_rota_2 /DEST pdfmark +240 fnt1 542 11737(The)m 220 fnt2 +973 11734(@Rotate)m 240 fnt1 1897 11737(symbol)m 2660(will)s 3089(rotate)s +3691(its)s 3970(right)s 4484(parameter)s 5501(counterclockwise)s 7233(an)s +7519(amount)s 8300(gi)s 6(v)k 3(en)k 8883(in)s +0 11449(de)m 3(grees)k 778(\(positi)s 6(v)k 3(e)k +1661(or)s 1920(ne)s 3(g)k 1(ati)k 6(v)k 3(e\))k +2845(by)s 3139(its)s 3415(left)s 3792(parameter)s 13(.)k +4897(F)s 3(or)k 5286(e)s 3(xample,)k 220 fnt2 +480 10948(30d @Rotate { hello)m 8(, w)k 2(or)k -3(ld })k 240 fnt1 +0 10454(has)m 370(result)s gsave +534 9501 translate +30.0000 rotate +0 -54(hello,)m 583(w)s 2(orld)k + grestore -1587 283 340 113 240 288 60 480 12485 LoutGr2 +0 8975(Before)m 710(rotating)s 1511(the)s 1863(object,)s 220 fnt2 +2559 8972(@OneCol)m 240 fnt1 3576 8975(and)m 220 fnt2 3984 8972(@OneRo)m 3(w)k +240 fnt1 5120 8975(are)m 5471(applied)s 6238(to)s 6482(it.)s +6782(The)s 7215(result)s 7809(is)s 8024(a)s 8195(rectangle)s +0 8687(whose)m 668(marks)s 1303(pass)s 1766(through)s 2568(the)s +2916(point)s 3468(where)s 4108(the)s 4456(original)s 5254(marks)s +5889(crossed:)s 1587 283 340 113 240 288 60 480 7464 LoutGr2 grestore save gsave 200 dict begin lfigdict begin grestore 1587 283 340 113 240 288 60 0 0 LoutGr2 @@ -13192,9 +13691,8 @@ grestore end end restore grestore -240 fnt4 2547 12538(\336)m -gsave -3256 12331 translate +240 fnt4 2547 7517(\336)m gsave +3256 7310 translate 240 fnt1 1515 1037 379 267 240 288 60 LoutGraphic gsave grestore save gsave 200 dict begin lfigdict begin @@ -13249,96 +13747,211 @@ grestore end end restore grestore -240 fnt1 0 11880(As)m 324(this)s 728(e)s 3(xample)k -1598(sho)s 6(ws,)k 2306(rotation)s 3113(by)s 3415(an)s -3705(angle)s 4287(other)s 4845(than)s 5322(a)s 5495(multiple)s -6355(of)s 6633(ninety)s 7293(de)s 3(grees)k 8079(introduces)s -0 11592(quite)m 534(a)s 700(lot)s 1012(of)s 1283(white)s -1870(space.)s 2565(So,)s 2925(for)s 3263(e)s 3(xample,)k -4177(the)s 4525(result)s 5115(of)s 220 fnt2 480 11084(-30d)m -968(@Rotate)s 1890(30d)s 2305(@Rotate)s 240 fnt6 3286 11089(object)m -240 fnt1 0 10586(is)m 210(a)s 376(much)s 965(lar)s 4(ger)k -1577(object)s 2221(than)s 240 fnt6 2690 10588(object)m 240 fnt1 -3278 10586(,)m 3385(despite)s 4118(the)s 4466(f)s 2(act)k -4881(that)s 5299(one)s 5701(rotation)s 6501(cancels)s 7255(the)s -7603(other)s 13(.)k 480 10212(Rotation)m 1362(of)s 1634(objects)s -2363(containing)s 3427(recepti)s 6(v)k 3(e)k 4350(and)s -4755(recursi)s 6(v)k 3(e)k 5678(symbols)s 6528(is)s -6739(permitted,)s 7762(b)s 4(ut)k 8125(for)s 8464(angles)s -0 9924(other)m 553(than)s 1024(multiples)s 1967(of)s 2240(ninety)s -2894(de)s 3(grees)k 3675(it)s 3869(is)s 4082(best)s -4529(to)s 4770(mak)s 2(e)k 5345(the)s 5695(size)s -6125(of)s 6398(the)s 6748(rotated)s 7472(object)s 8118(clear)s -8644(with)s 220 fnt2 0 9633(@Wide)m 240 fnt1 774 9636(and)m -220 fnt2 1178 9633(@High)m 240 fnt1 1897 9636(symbols:)m 220 fnt2 -480 9135(30d @Rotate 5i @Wide 4i @High)m 480 8847({ //1i @T)m 26(e)k 6(xtPlace)k 480 8559( //1i)m -480 8271(})m 240 fnt1 0 7777(This)m 532(is)s 798(because)s -1667(for)s 2061(angles)s 2779(other)s 3386(than)s 3911(multiples)s -4907(of)s 5234(ninety)s 5942(de)s 3(grees)k 6776(the)s -7180(space)s 7823(a)s 4(v)k 6(ailable)k 8788(for)s -220 fnt2 0 7486(@T)m 26(e)k 6(xtPlace)k 240 fnt1 -1218 7489(to)m 1457(occup)s 2(y)k 2201(is)s 2411(indeterminate,)s -3831(and)s 4235(the)s 4583(result)s 5173(is)s 5383(poor)s 13(.)k -240 fnt5 0 6696(3.22.)m 591(@Backgr)s 4(ound)k +240 fnt1 +0 6859(As)m 324(this)s 728(e)s 3(xample)k 1598(sho)s 6(ws,)k +2306(rotation)s 3113(by)s 3415(an)s 3705(angle)s 4287(other)s +4845(than)s 5322(a)s 5495(multiple)s 6355(of)s 6633(ninety)s +7293(de)s 3(grees)k 8079(introduces)s 0 6571(quite)m 534(a)s +700(lot)s 1012(of)s 1283(white)s 1870(space.)s 2565(So,)s +2925(for)s 3263(e)s 3(xample,)k 4177(the)s 4525(result)s +5115(of)s 220 fnt2 480 6063(-30d)m 968(@Rotate)s 1890(30d)s +2305(@Rotate)s 240 fnt6 3286 6068(object)m 240 fnt1 0 5565(is)m +210(a)s 376(much)s 965(lar)s 4(ger)k 1577(object)s +2221(than)s 240 fnt6 2690 5567(object)m 240 fnt1 3278 5565(,)m +3385(despite)s 4118(the)s 4466(f)s 2(act)k 4881(that)s +5299(one)s 5701(rotation)s 6501(cancels)s 7255(the)s 7603(other)s 13(.)k +480 5191(Rotation)m 1362(of)s 1634(objects)s 2363(containing)s 3427(recepti)s 6(v)k 3(e)k +4350(and)s 4755(recursi)s 6(v)k 3(e)k 5678(symbols)s +6528(is)s 6739(permitted,)s 7762(b)s 4(ut)k 8125(for)s +8464(angles)s 0 4903(other)m 553(than)s 1024(multiples)s 1967(of)s +2240(ninety)s 2894(de)s 3(grees)k 3675(it)s 3869(is)s +4082(best)s 4529(to)s 4770(mak)s 2(e)k 5345(the)s +5695(size)s 6125(of)s 6398(the)s 6748(rotated)s 7472(object)s +8118(clear)s 8644(with)s 220 fnt2 0 4612(@Wide)m 240 fnt1 +774 4615(and)m 220 fnt2 1178 4612(@High)m 240 fnt1 1897 4615(symbols:)m +220 fnt2 480 4114(30d @Rotate 5i @Wide 4i @High)m 480 3826({ //1i @T)m 26(e)k 6(xtPlace)k +480 3538( //1i)m 480 3250(})m 240 fnt1 0 2756(This)m 532(is)s +798(because)s 1667(for)s 2061(angles)s 2779(other)s 3386(than)s +3911(multiples)s 4907(of)s 5234(ninety)s 5942(de)s 3(grees)k +6776(the)s 7180(space)s 7823(a)s 4(v)k 6(ailable)k +8788(for)s 220 fnt2 0 2465(@T)m 26(e)k 6(xtPlace)k +240 fnt1 1218 2468(to)m 1457(occup)s 2(y)k 2201(is)s +2411(indeterminate,)s 3831(and)s 4235(the)s 4583(result)s 5173(is)s +5383(poor)s 13(.)k 240 fnt5 0 1675(3.23.)m 591(@Backgr)s 4(ound)k + [ /Dest /LOUTbackground /DEST pdfmark -[ /Dest /LOUT16_4080_pre_back_1 /DEST pdfmark -240 fnt1 -577 6219(The)m 220 fnt2 1042 6216(@Bac)m 4(kg)k 2(round)k -240 fnt1 2515 6219(symbol)m 3312(will)s 3775(print)s 4323(its)s +[ /Dest /LOUT19_4213_pre_back_1 /DEST pdfmark +240 fnt1 577 1198(The)m 220 fnt2 1042 1195(@Bac)m 4(kg)k 2(round)k +240 fnt1 2515 1198(symbol)m 3312(will)s 3775(print)s 4323(its)s 4637(left)s 5051(parameter)s 6102(in)s 6382(the)s 6767(background)s -7993(of)s 8301(its)s 8615(right)s 0 5931(parameter)m 13(.)k +7993(of)s 8301(its)s 8615(right)s 0 910(parameter)m 13(.)k 1115(That)s 1624(is,)s 1901(the)s 2260(result)s 2860(has)s 3241(the)s 3600(size)s 4038(of)s 4319(the)s 4678(right)s 5200(parameter)s 9(,)k 6263(b)s 4(ut)k 6635(the)s -6994(left)s 7382(parameter)s 8407(will)s 8844(be)s 0 5643(printed)m +6994(left)s 7382(parameter)s 8407(will)s 8844(be)s 0 622(printed)m 735(\207rst)s 1166(in)s 1409(the)s 1757(same)s 2304(space,)s 2942(with)s 3424(its)s 3700(marks)s 4335(aligned)s 5097(with)s 5579(the)s 5927(marks)s 6562(of)s 6833(the)s 7181(right)s -7692(parameter)s 13(.)k 240 fnt5 0 4850(3.23.)m 591(@K)s 6(er)k 3(nShrink)k +7692(parameter)s 13(.)k +grestore +gsave +1417 -15423 translate +240 fnt1 0 0 0 0 240 288 60 LoutGraphic +gsave +1 LoutMargSet +grestore + +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 56 62 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +%%+ font Times-Italic +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-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 +0 0 translate +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +240 fnt5 1417 -1583(56)m +240 fnt6 7498 -1580(Chapter)m 8348(3.)s 8622(Pr)s 8(ede\207ned)k +9717(symbols)s gsave +1417 -15423 translate +240 fnt1 9066 13368 0 13368 240 288 60 LoutGraphic +gsave +0 LoutMargSet +grestore +240 fnt5 0 13203(3.24.)m 591(@K)s 6(er)k 3(nShrink)k [ /Dest /LOUTkernshrink /DEST pdfmark -[ /Dest /LOUT16_4080_pre_kshr_1 /DEST pdfmark -240 fnt1 541 4418(This)m 1018(symbol)s 1779(returns)s 2495(its)s +[ /Dest /LOUT19_4213_pre_kshr_1 /DEST pdfmark +240 fnt1 541 12771(This)m 1018(symbol)s 1779(returns)s 2495(its)s 2772(right)s 3284(parameter)s 4300(unchanged)s 5397(in)s 5641(appearance)s 6774(b)s 4(ut)k 7137(occup)s 2(ying)k 8187(a)s -8355(slightly)s 0 4130(smaller)m 770(bounding)s 1737(box.)s 2269(The)s +8355(slightly)s 0 12483(smaller)m 770(bounding)s 1737(box.)s 2269(The)s 2705(reduction)s 3673(is)s 3891(by)s 4193(the)s 4549(amount)s 5335(of)s 5614(k)s 2(erning)k 6404(that)s 6830(w)s 2(ould)k -7493(be)s 7783(applied)s 8553(if)s 8778(the)s 0 3842(right)m +7493(be)s 7783(applied)s 8553(if)s 8778(the)s 0 12195(right)m 511(parameter)s 1525(w)s 2(as)k 1946(immediately)s 240 fnt6 -3194 3844(followed)m 240 fnt1 4084 3842(by)m 4378(the)s 4726(left)s +3194 12197(followed)m 240 fnt1 4084 12195(by)m 4378(the)s 4726(left)s 5103(parameter)s 13(.)k 6208(F)s 3(or)k 6597(e)s 3(xample,)k -220 fnt2 480 3341(.)m 13( @K)k 8(er)k -5(nShr)k -3(ink P)k -240 fnt1 0 2886(has)m 370(result)s 104 158 0 54 240 288 60 480 2438 LoutGr2 +220 fnt2 480 11694(.)m 13( @K)k 8(er)k -5(nShr)k -3(ink P)k +240 fnt1 0 11239(has)m 370(result)s 104 158 0 54 240 288 60 480 10791 LoutGr2 LoutBox stroke grestore 0 0(P)m grestore -0 1987(where)m +0 10340(where)m 649(a)s 824(box)s 1249(of)s 1529(size)s 1965(0)s 2150(has)s 2529(been)s 3048(dra)s 3(wn)k 3709(around)s 4441(the)s 4799(result)s 5398(to)s 5647(mak)s 2(e)k 6228(its)s 6513(e)s 3(xtent)k 7164(clear)s 13(.)k -7787(Compare)s 8730(this)s 0 1699(with)m 482(`P')s 806(alone:)s -130 158 0 54 240 288 60 480 1250 LoutGr2 +7787(Compare)s 8730(this)s 0 10052(with)m 482(`P')s 806(alone:)s +130 158 0 54 240 288 60 480 9603 LoutGr2 LoutBox stroke grestore 0 0(P)m grestore -0 799(in)m 243(which)s 885(the)s 1232(bounding)s +0 9152(in)m 243(which)s 885(the)s 1232(bounding)s 2191(box)s 2605(e)s 3(xactly)k 3346(encloses)s 4206(the)s 4554(object,)s 5245(or)s 5503(at)s 5735(least)s 6231(is)s -6441(supposed)s 7390(to.)s 7740(The)s 8167(bounding)s 0 511(box)m +6441(supposed)s 7390(to.)s 7740(The)s 8167(bounding)s 0 8864(box)m 415(is)s 625(smaller)s 1387(on)s 1684(the)s 2032(right)s 2543(by)s 2837(the)s 3185(amount)s 3963(of)s 4234(k)s 2(erning)k 5016(that)s 5434(w)s 2(ould)k 6089(be)s 6371(applied)s 7133(between)s 7987(`P')s 8311(and)s 8715(`.)s 16('.)k -480 137(The)m 916(only)s 1405(kno)s 6(wn)k 2117(use)s +480 8490(The)m 916(only)s 1405(kno)s 6(wn)k 2117(use)s 2501(for)s 2847(this)s 3252(symbol)s 4020(is)s 4239(to)s 4486(produce)s 5322(tuck)s 2(ed-in)k 6288(subscripts)s 7304(in)s -7555(the)s 7912(Eq)s 8245(equation)s +7555(the)s 7912(Eq)s 8245(equation)s 0 8202(formatting)m 1061(package.)s +240 fnt5 0 7409(3.25.)m 591(@Common,)s 1872(@Rump,)s 2847(and)s +3288(@Meld)s +[ /Dest /LOUTrump /DEST pdfmark + +[ /Dest /LOUT19_4213_pre_rump_1 /DEST pdfmark + +[ /Dest /LOUT19_4213_pre_rump_2 /DEST pdfmark + +[ /Dest /LOUT19_4213_pre_rump_3 /DEST pdfmark +240 fnt1 540 6932(The)m 220 fnt2 968 6929(@Common)m +240 fnt1 2127 6932(and)m 220 fnt2 2531 6929(@Rump)m 240 fnt1 +3391 6932(symbols)m 4240(compare)s 5119(tw)s 2(o)k 5529(paragraph)s +6542(objects:)s 220 fnt2 480 6431({ Aardv)m 5(ar)k -3(k, 29 } @Common { Aardv)k 5(ar)k -3(k, 359 })k +240 fnt1 0 5937(If)m 234(either)s 842(parameter)s 1860(is)s +2075(not)s 2446(a)s 2616(paragraph)s 3634(object,)s 4329(it)s +4526(is)s 4741(con)s 9(v)k 3(erted)k 5734(into)s +6164(a)s 6334(single-object)s 7633(paragraph)s 8651(\207rst.)s 0 5649(The)m +418(result)s 998(of)s 220 fnt2 1259 5646(@Common)m 240 fnt1 +2408 5649(is)m 2608(the)s 2946(common)s 3831(pre\207x)s 4433(of)s +4694(the)s 5032(tw)s 2(o)k 5432(paragraphs;)s 6583(that)s +6991(is,)s 7247(those)s 7798(initial)s 8398(objects)s 0 5361(which)m +640(are)s 985(equal)s 1555(in)s 1796(the)s 2142(tw)s 2(o)k +2549(paragraphs.)s 3760(In)s 4013(the)s 4359(e)s 3(xample)k +5220(abo)s 3(v)k 3(e,)k 5890(the)s 6236(result)s +6824(is)s 220 fnt2 7031 5358(Aardv)m 5(ar)k -3(k,)k +240 fnt1 7949 5361(.)m 8111(The)s 8536(result)s 0 5073(of)m +220 fnt2 271 5070(@Rump)m 240 fnt1 1131 5073(is)m 1341(that)s +1759(part)s 2190(of)s 2461(the)s 2809(second)s 3532(object)s +4176(which)s 4818(is)s 5028(not)s 5394(included)s 6276(in)s +220 fnt2 6519 5070(@Common)m 240 fnt1 7618 5073(;)m 7730(the)s +8078(result)s 8668(of)s 220 fnt2 480 4572({ Aardv)m 5(ar)k -3(k, 29 } @Rump { Aardv)k 5(ar)k -3(k, 359 })k +240 fnt1 0 4076(is)m 220 fnt2 210 4073(359)m 240 fnt1 +567 4076(.)m 480 3702(If)m 698(the)s 1034(tw)s 2(o)k +1431(objects)s 2147(ha)s 4(v)k 3(e)k 2635(nothing)s +3408(in)s 3638(common,)s 4571(the)s 4907(result)s 5484(of)s +220 fnt2 5743 3699(@Common)m 240 fnt1 6889 3702(will)m 7303(be)s +7572(an)s 7843(empty)s 8482(object)s 0 3414(and)m 400(the)s +744(result)s 1330(of)s 220 fnt2 1597 3411(@Rump)m 240 fnt1 +2453 3414(will)m 2874(be)s 3152(the)s 3496(second)s 4215(object.)s +4959(If)s 5185(the)s 5528(tw)s 2(o)k 5934(objects)s +6658(are)s 7001(identical,)s 7926(the)s 8270(result)s 8855(of)s +220 fnt2 0 3123(@Common)m 240 fnt1 1159 3126(will)m 1585(be)s +1867(the)s 2215(\207rst)s 2646(object,)s 3337(and)s 3741(the)s +4089(result)s 4679(of)s 220 fnt2 4950 3123(@Rump)m 240 fnt1 +5810 3126(will)m 6236(be)s 6518(an)s 6801(empty)s 7453(object.)s +480 2752(The)m 933(only)s 1438(kno)s 6(wn)k 2167(use)s +2567(for)s 220 fnt2 2930 2749(@Rump)m 240 fnt1 3815 2752(and)m +220 fnt2 4244 2749(@Common)m 240 fnt1 5428 2752(is)m 5663(to)s +5927(implement)s 7034(mer)s 4(ged)k 7830(inde)s 3(x)k +8439(entries)s 0 2464(\(Section)m 853(2.8\).)s 480 2090(The)m 220 fnt2 +942 2087(@Meld)m 240 fnt1 1723 2090(symbol)m 2518(returns)s 3267(the)s +3649(minimum)s 4674(meld)s 5245(of)s 5551(tw)s 2(o)k +5995(paragraphs,)s 7186(that)s 7639(is,)s 7940(the)s 8323(shortest)s +0 1802(paragraph)m 1013(that)s 1431(contains)s 2279(the)s 2627(tw)s 2(o)k +3037(original)s 3835(paragraphs)s 4935(as)s 5185(subsequences.)s 6652(F)s 3(or)k +7041(e)s 3(xample,)k 220 fnt2 480 1301({ Aardv)m 5(ar)k -3(k , 1 , 2 } @Meld { Aardv)k 5(ar)k -3(k , 2 , 3 })k +240 fnt1 0 807(produces)m 480 304(Aardv)m 6(ark)k 1438(,)s +1545(1)s 1700(,)s 1807(2)s 1981(,)s 2088(3)s + grestore gsave 1417 -15423 translate @@ -13356,7 +13969,7 @@ pgsave restore showpage -%%Page: 55 61 +%%Page: 57 63 %%BeginPageSetup %%PageResources: font Times-Roman %%+ font Times-Italic @@ -13379,133 +13992,136 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -240 fnt6 1417 -1580(3.23.)m 1991(@K)s 8(ernShrink)k 240 fnt5 -10250 -1583(55)m gsave +240 fnt6 1417 -1580(3.25.)m +1991(@Common,)s 3170(@Rump,)s 4042(and)s 4468(@Meld)s 240 fnt5 +10248 -1583(57)m gsave 1417 -15423 translate -240 fnt1 9066 13413 0 13304 240 288 60 LoutGraphic +240 fnt1 9066 13368 0 13368 240 288 60 LoutGraphic gsave 1 LoutMargSet grestore -0 13250(formatting)m 1061(package.)s 240 fnt5 0 12457(3.24.)m -591(@Common,)s 1872(@Rump,)s 2847(and)s 3288(@Meld)s -[ /Dest /LOUTrump /DEST pdfmark - -[ /Dest /LOUT16_4080_pre_rump_1 /DEST pdfmark - -[ /Dest /LOUT16_4080_pre_rump_2 /DEST pdfmark - -[ /Dest /LOUT16_4080_pre_rump_3 /DEST pdfmark -240 fnt1 -540 11980(The)m 220 fnt2 968 11977(@Common)m 240 fnt1 2127 11980(and)m -220 fnt2 2531 11977(@Rump)m 240 fnt1 3391 11980(symbols)m 4240(compare)s -5119(tw)s 2(o)k 5529(paragraph)s 6542(objects:)s 220 fnt2 -480 11479({ Aardv)m 5(ar)k -3(k, 29 } @Common { Aardv)k 5(ar)k -3(k, 359 })k -240 fnt1 0 10985(If)m 234(either)s 842(parameter)s 1860(is)s -2075(not)s 2446(a)s 2616(paragraph)s 3634(object,)s 4329(it)s -4526(is)s 4741(con)s 9(v)k 3(erted)k 5734(into)s -6164(a)s 6334(single-object)s 7633(paragraph)s 8651(\207rst.)s 0 10697(The)m -418(result)s 998(of)s 220 fnt2 1259 10694(@Common)m 240 fnt1 -2408 10697(is)m 2608(the)s 2946(common)s 3831(pre\207x)s 4433(of)s -4694(the)s 5032(tw)s 2(o)k 5432(paragraphs;)s 6583(that)s -6991(is,)s 7247(those)s 7798(initial)s 8398(objects)s 0 10409(which)m -640(are)s 985(equal)s 1555(in)s 1796(the)s 2142(tw)s 2(o)k -2549(paragraphs.)s 3760(In)s 4013(the)s 4359(e)s 3(xample)k -5220(abo)s 3(v)k 3(e,)k 5890(the)s 6236(result)s -6824(is)s 220 fnt2 7031 10406(Aardv)m 5(ar)k -3(k,)k -240 fnt1 7949 10409(.)m 8111(The)s 8536(result)s 0 10121(of)m -220 fnt2 271 10118(@Rump)m 240 fnt1 1131 10121(is)m 1341(that)s -1759(part)s 2190(of)s 2461(the)s 2809(second)s 3532(object)s -4176(which)s 4818(is)s 5028(not)s 5394(included)s 6276(in)s -220 fnt2 6519 10118(@Common)m 240 fnt1 7618 10121(;)m 7730(the)s -8078(result)s 8668(of)s 220 fnt2 480 9620({ Aardv)m 5(ar)k -3(k, 29 } @Rump { Aardv)k 5(ar)k -3(k, 359 })k -240 fnt1 0 9124(is)m 220 fnt2 210 9121(359)m 240 fnt1 -567 9124(.)m 480 8750(If)m 698(the)s 1034(tw)s 2(o)k -1431(objects)s 2147(ha)s 4(v)k 3(e)k 2635(nothing)s -3408(in)s 3638(common,)s 4571(the)s 4907(result)s 5484(of)s -220 fnt2 5743 8747(@Common)m 240 fnt1 6889 8750(will)m 7303(be)s -7572(an)s 7843(empty)s 8482(object)s 0 8462(and)m 400(the)s -744(result)s 1330(of)s 220 fnt2 1597 8459(@Rump)m 240 fnt1 -2453 8462(will)m 2874(be)s 3152(the)s 3496(second)s 4215(object.)s -4959(If)s 5185(the)s 5528(tw)s 2(o)k 5934(objects)s -6658(are)s 7001(identical,)s 7926(the)s 8270(result)s 8855(of)s -220 fnt2 0 8171(@Common)m 240 fnt1 1159 8174(will)m 1585(be)s -1867(the)s 2215(\207rst)s 2646(object,)s 3337(and)s 3741(the)s -4089(result)s 4679(of)s 220 fnt2 4950 8171(@Rump)m 240 fnt1 -5810 8174(will)m 6236(be)s 6518(an)s 6801(empty)s 7453(object.)s -480 7800(The)m 933(only)s 1438(kno)s 6(wn)k 2167(use)s -2567(for)s 220 fnt2 2930 7797(@Rump)m 240 fnt1 3815 7800(and)m -220 fnt2 4244 7797(@Common)m 240 fnt1 5428 7800(is)m 5663(to)s -5927(implement)s 7034(mer)s 4(ged)k 7830(inde)s 3(x)k -8439(entries)s 0 7512(\(Section)m 853(2.8\).)s 480 7138(The)m 220 fnt2 -942 7135(@Meld)m 240 fnt1 1723 7138(symbol)m 2518(returns)s 3267(the)s -3649(minimum)s 4674(meld)s 5245(of)s 5551(tw)s 2(o)k -5995(paragraphs,)s 7186(that)s 7639(is,)s 7940(the)s 8323(shortest)s -0 6850(paragraph)m 1013(that)s 1431(contains)s 2279(the)s 2627(tw)s 2(o)k -3037(original)s 3835(paragraphs)s 4935(as)s 5185(subsequences.)s 6652(F)s 3(or)k -7041(e)s 3(xample,)k 220 fnt2 480 6349({ Aardv)m 5(ar)k -3(k , 1 , 2 } @Meld { Aardv)k 5(ar)k -3(k , 2 , 3 })k -240 fnt1 0 5855(produces)m 480 5352(Aardv)m 6(ark)k 1438(,)s -1545(1)s 1700(,)s 1807(2)s 1981(,)s 2088(3)s -0 4868(The)m 455(result)s 1073(is)s 1310(related)s 2045(to)s -2312(the)s 2687(well-kno)s 6(wn)k 3909(longest)s 4688(common)s -5610(substring,)s 6622(in)s 6893(that)s 7338(the)s 7714(meld)s -8278(contains)s 0 4580(e)m 6(v)k 3(erything)k 1054(not)s -1407(in)s 1636(the)s 1971(lcs)s 2274(plus)s 2710(one)s -3099(cop)s 2(y)k 3604(of)s 3861(e)s 6(v)k 3(erything)k +0 13205(The)m 455(result)s 1073(is)s +1310(related)s 2045(to)s 2312(the)s 2687(well-kno)s 6(wn)k +3909(longest)s 4688(common)s 5610(substring,)s 6622(in)s 6893(that)s +7338(the)s 7714(meld)s 8278(contains)s 0 12917(e)m 6(v)k 3(erything)k +1054(not)s 1407(in)s 1636(the)s 1971(lcs)s 2274(plus)s +2710(one)s 3099(cop)s 2(y)k 3604(of)s 3861(e)s 6(v)k 3(erything)k 4915(in)s 5145(the)s 5479(lcs.)s 5895(Where)s 6575(there)s 7094(are)s 7428(se)s 6(v)k 3(eral)k 8136(minimum)s -0 4292(melds,)m 220 fnt2 705 4289(@Meld)m 240 fnt1 1478 4292(returns)m +0 12629(melds,)m 220 fnt2 705 12626(@Meld)m 240 fnt1 1478 12629(returns)m 2219(the)s 2595(one)s 3024(in)s 3294(which)s 3964(the)s 4339(components)s 5574(of)s 5873(the)s 6248(\207rst)s 6706(parameter)s 7748(are)s 8122(as)s 8399(f)s 2(ar)k 8749(left)s -0 4004(as)m 250(possible.)s 480 3630(Determining)m 1764(the)s 2136(v)s 6(alues)k +0 12341(as)m 250(possible.)s 480 11967(Determining)m 1764(the)s 2136(v)s 6(alues)k 2816(of)s 3110(all)s 3427(these)s 3998(symbols)s 4870(requires)s 5714(testing)s 6428(whether)s 7281(one)s 7707(component)s 8855(of)s -0 3342(the)m 372(\207rst)s 827(paragraph)s 1864(is)s 2098(equal)s +0 11679(the)m 372(\207rst)s 827(paragraph)s 1864(is)s 2098(equal)s 2695(to)s 2958(one)s 3384(component)s 4532(of)s 4827(the)s 5199(second.)s 6052(Since)s 6663(V)s 26(ersion)k 7475(3.25,)s -8026(the)s 8398(objects)s 0 3054(in)m 9(v)k 4(olv)k 3(ed)k +8026(the)s 8398(objects)s 0 11391(in)m 9(v)k 4(olv)k 3(ed)k 893(may)s 1372(be)s 1667(arbitrary)s 2555(and)s 2972(Lout)s 3497(will)s 3936(perform)s 4778(the)s 5139(necessary)s 6135(detailed)s -6962(checking)s 7892(for)s 8244(equality;)s 0 2766(pre)m 6(viously)k 15(,)k +6962(checking)s 7892(for)s 8244(equality;)s 0 11103(pre)m 6(viously)k 15(,)k 1084(only)s 1552(simple)s 2233(w)s 2(ords)k 2855(were)s 3363(guaranteed)s 4458(to)s 4685(be)s 4954(tested)s 5557(correctly)s 15(.)k 6482(T)s 19(w)k 2(o)k 6941(w)s 2(ords)k 7563(are)s 7898(equal)s 8459(if)s 8663(the)s 3(y)k -0 2478(contain)m 761(the)s 1108(same)s 1655(sequence)s 2587(of)s +0 10815(contain)m 761(the)s 1108(same)s 1655(sequence)s 2587(of)s 2858(characters,)s 3931(re)s 3(g)k 1(ardless)k 4945(of)s 5216(whether)s 6045(the)s 3(y)k 6508(are)s 6854(enclosed)s -7749(in)s 7991(quotes,)s 8722(and)s 0 2190(re)m 3(g)k 1(ardless)k +7749(in)s 7991(quotes,)s 8722(and)s 0 10527(re)m 3(g)k 1(ardless)k 1008(of)s 1272(the)s 1612(current)s 2341(font)s 2778(or)s 3030(an)s 3(y)k 3419(other)s 3963(style)s 4462(information.)s 5747(Otherwise,)s 6828(objects)s 7549(are)s 7888(equal)s 8454(if)s -8663(the)s 3(y)k 0 1902(are)m 337(of)s 598(the)s +8663(the)s 3(y)k 0 10239(are)m 337(of)s 598(the)s 936(same)s 1473(type)s 1931(and)s 2325(ha)s 4(v)k 3(e)k 2816(the)s 3153(same)s 3690(parameters,)s 4834(including)s 5781(g)s 1(aps)k -6260(in)s 6493(concatenation)s 7868(objects.)s 8698(The)s 0 1614(sole)m -459(e)s 3(xception)k 1461(is)s 220 fnt2 1690 1611(@LinkSource)m -240 fnt1 3002 1614(,)m 3127(whose)s 3814(left)s 4209(parameter)s +6260(in)s 6493(concatenation)s 7868(objects.)s 8698(The)s 0 9951(sole)m +459(e)s 3(xception)k 1461(is)s 220 fnt2 1690 9948(@LinkSource)m +240 fnt1 3002 9951(,)m 3127(whose)s 3814(left)s 4209(parameter)s 5241(is)s 5470(ignored)s 6277(during)s 6974(equality)s 7816(testing,)s -8579(since)s 0 1326(otherwise)m 985(there)s 1518(w)s 2(ould)k +8579(since)s 0 9663(otherwise)m 985(there)s 1518(w)s 2(ould)k 2173(be)s 2455(problems)s 3396(in)s 3639(the)s 3987(appearance)s 5118(of)s 5389(melded)s 6151(clickable)s 7069(inde)s 3(x)k -7653(entries.)s 480 952(Style)m 1052(changing)s 2008(operations)s 3080(\()s -220 fnt2 3153 949(@F)m 6(ont)k 240 fnt1 3805 952(,)m -220 fnt2 3937 949(@Colour)m 240 fnt1 4890 952(etc.\))m 5382(are)s -5754(not)s 6145(considered)s 7264(in)s 7532(equality)s 8382(testing,)s -0 664(since)m 547(these)s 1094(ha)s 4(v)k 3(e)k +7653(entries.)s 480 9289(Style)m 1023(changing)s 1949(operations)s 2991(\()s +220 fnt2 3064 9286(@F)m 6(ont)k 240 fnt1 3716 9289(,)m +220 fnt2 3819 9286(@SetColour)m 240 fnt1 5071 9289(etc.\))m 5532(are)s +5874(not)s 6236(considered)s 7325(in)s 7563(equality)s 8382(testing,)s +0 9001(since)m 547(these)s 1094(ha)s 4(v)k 3(e)k 1595(been)s 2104(processed)s 3105(and)s 3508(deleted)s 4256(by)s 4550(the)s 4898(time)s 5378(that)s 5796(the)s 6143(tests)s 6618(are)s 6965(done.)s 7595(Also,)s 8154(Lout)s 8665(tries)s -0 376(hard)m 483(to)s 722(get)s 1074(rid)s 1397(of)s +0 8713(hard)m 483(to)s 722(get)s 1074(rid)s 1397(of)s 1668(redundant)s 2685(braces)s 3346(around)s 4069(concatenation)s 5454(objects,)s -6238(which)s 6880(is)s 7090(wh)s 1(y)k +6238(which)s 6880(is)s 7090(wh)s 1(y)k 220 fnt2 +480 8212({ a { b c } } @Meld { { a b } c })m 240 fnt1 0 7718(produces)m 480 7215(a)m 646(b)s +819(c)s 0 6762(The)m 428(tw)s 2(o)k 838(parameters)s +1936(are)s 2283(equal)s 2856(by)s 3150(the)s 3498(time)s +3978(the)s 3(y)k 4441(are)s 4788(compared)s 5789(by)s +220 fnt2 6083 6759(@Meld)m 240 fnt1 6769 6762(.)m 480 6388(One)m +928(problematic)s 2114(area)s 2563(in)s 2799(the)s 3139(use)s +3506(of)s 3770(these)s 4309(operators)s 5241(is)s 5444(the)s +5784(de\207nition)s 6750(of)s 7014(equality)s 7830(when)s 8398(objects)s +0 6100(are)m 365(immediately)s 1631(adjacent.)s 2609(Lout)s 3139(contains)s +4005(an)s 4306(optimization)s 5589(which)s 6249(mer)s 4(ges)k +7004(immediately)s 8270(adjacent)s 0 5812(w)m 2(ords)k 634(whene)s 6(v)k 3(er)k +1615(the)s 3(y)k 2078(ha)s 4(v)k 3(e)k +2579(the)s 2927(same)s 3474(style.)s 4089(F)s 3(or)k +4478(e)s 3(xample,)k 220 fnt2 480 5314({Hello}{w)m 2(or)k -3(ld})k +240 fnt1 0 4820(w)m 2(ould)k 655(be)s 937(treated)s +1644(internally)s 2613(as)s 2863(one)s 3265(w)s 2(ord,)k +3862(whereas)s 220 fnt2 480 4319({Hello}{y)m 4(ello)k 3(w @Colour w)k 2(or)k -3(ld})k +240 fnt1 0 3821(w)m 2(ould)k 683(be)s 994(treated)s +1729(as)s 2008(tw)s 2(o)k 2447(adjacent)s 3331(w)s 2(ords.)k +4107(Thus,)s 4721(although)s 220 fnt2 5645 3818(@F)m 6(ont)k +240 fnt1 6297 3821(,)m 220 fnt2 6433 3818(@SetColour)m 240 fnt1 +7630 3821(,)m 7765(and)s 8198(the)s 8575(other)s 0 3533(style)m +517(operators)s 1468(are)s 1825(ignored)s 2625(in)s 2878(equality)s +3713(testing,)s 4467(the)s 3(y)k 4941(may)s 5417(af)s 6(fect)k +6024(the)s 6382(structure)s 7284(of)s 7565(the)s 7924(objects)s +8663(the)s 3(y)k 0 3245(lie)m 294(within.)s 480 2871(At)m +810(present,)s 220 fnt2 1639 2868(@Common)m 240 fnt1 2830 2871(and)m +220 fnt2 3266 2868(@Rump)m 240 fnt1 4158 2871(treat)m 4673(all)s +4998(unmer)s 4(ged)k 6041(components)s 7281(of)s 7584(their)s +8113(paragraph)s 0 2583(as)m 278(separate,)s 1195(e)s 6(v)k 3(en)k +1724(if)s 1969(one)s 2399(is)s 2638(immediately)s 3914(adjacent)s +4799(to)s 5066(another)s 13(.)k 220 fnt2 5962 2580(@Common)m +240 fnt1 7150 2583(and)m 220 fnt2 7582 2580(@Rump)m 240 fnt1 +8471 2583(w)m 2(ould)k 0 2295(thus)m 449(see)s 809(one)s +1210(component)s 2333(in)s 2574(the)s 2921(\207rst)s 3351(e)s 3(xample)k +4213(and)s 4615(tw)s 2(o)k 5024(in)s 5266(the)s +5613(second.)s 220 fnt2 6440 2292(@Meld)m 240 fnt1 7185 2295(treats)m +7751(each)s 8245(group)s 8855(of)s 0 2007(immediately)m 1239(adjacent)s +2086(components)s 3285(as)s 3526(a)s 3683(single)s 4301(component,)s +5463(so)s 5720(it)s 5903(w)s 2(ould)k 6549(see)s +6901(one)s 7294(component)s 8409(in)s 8643(both)s 0 1719(e)m 3(xamples;)k +1015(b)s 4(ut)k 1381(it)s 1577(w)s 2(ould)k +2235(still)s 2651(not)s 3021(report)s 3655(them)s 4196(as)s +4450(equal,)s 5079(since)s 5630(one)s 6035(is)s 6249(a)s +6419(single)s 7050(w)s 2(ord)k 7601(and)s 8009(the)s +8361(other)s 8916(is)s 0 1431(a)m 179(pair)s 623(of)s +907(adjacent)s 1777(w)s 2(ords.)k 2537(These)s 3177(confusing)s +4188(and)s 4605(inconsistent)s 5820(properties)s 6839(might)s 7471(be)s +7766(re)s 6(vised)k 8521(in)s 8778(the)s 0 1143(future.)m +754(See)s 1176(Section)s 1971(4.6)s 2345(for)s 2704(an)s +3008(e)s 3(xample)k 3892(of)s 4184(the)s 4553(practical)s +5450(use)s 5846(of)s 6138(these)s 6706(operators,)s 7723(in)s +7987(which)s 8650(v)s 3(ery)k 0 855(small)m 564(unbreakable)s +1781(g)s 1(aps)k 2262(are)s 2600(used)s 3089(to)s +3320(ensure)s 3991(that)s 4401(apparently)s 5456(adjacent)s 6303(components)s +7503(are)s 7842(separate,)s 8722(and)s 220 fnt2 0 564(@OneCol)m +240 fnt1 1026 567(is)m 1250(used)s 1761(to)s 2014(pre)s 6(v)k 3(ent)k +2797(the)s 3159(w)s 2(ord)k 3721(mer)s 4(ging)k +4581(optimization)s 5860(from)s 6399(taking)s 7064(ef)s 6(fect)k +7674(when)s 8264(it)s 8471(w)s 2(ould)k 0 279(otherwise)m +985(cause)s 1572(trouble.)s grestore gsave 1417 -15423 translate @@ -13523,7 +14139,7 @@ pgsave restore showpage -%%Page: 56 62 +%%Page: 58 64 %%BeginPageSetup %%PageResources: font Times-Roman %%+ font Times-Bold @@ -13546,109 +14162,86 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -240 fnt5 1417 -1583(56)m 240 fnt6 7498 -1580(Chapter)m 8348(3.)s -8622(Pr)s 8(ede\207ned)k 9717(symbols)s gsave +240 fnt5 1417 -1583(58)m +240 fnt6 7498 -1580(Chapter)m 8348(3.)s 8622(Pr)s 8(ede\207ned)k +9717(symbols)s gsave 1417 -15423 translate -240 fnt1 9066 13368 0 13264 240 288 60 LoutGraphic +240 fnt1 9066 13368 0 13368 240 288 60 LoutGraphic gsave 0 LoutMargSet grestore -220 fnt2 480 13207({ a { b c } } @Meld { { a b } c })m -240 fnt1 0 12713(produces)m 480 12210(a)m 646(b)s 819(c)s -0 11757(The)m 428(tw)s 2(o)k 838(parameters)s 1936(are)s -2283(equal)s 2856(by)s 3150(the)s 3498(time)s 3978(the)s 3(y)k -4441(are)s 4788(compared)s 5789(by)s 220 fnt2 6083 11754(@Meld)m -240 fnt1 6769 11757(.)m 480 11383(One)m 928(problematic)s 2114(area)s -2563(in)s 2799(the)s 3139(use)s 3506(of)s 3770(these)s -4309(operators)s 5241(is)s 5444(the)s 5784(de\207nition)s 6750(of)s -7014(equality)s 7830(when)s 8398(objects)s 0 11095(are)m 365(immediately)s -1631(adjacent.)s 2609(Lout)s 3139(contains)s 4005(an)s 4306(optimization)s -5589(which)s 6249(mer)s 4(ges)k 7004(immediately)s 8270(adjacent)s -0 10807(w)m 2(ords)k 634(whene)s 6(v)k 3(er)k -1615(the)s 3(y)k 2078(ha)s 4(v)k 3(e)k -2579(the)s 2927(same)s 3474(style.)s 4089(F)s 3(or)k -4478(e)s 3(xample,)k 220 fnt2 480 10309({Hello}{w)m 2(or)k -3(ld})k -240 fnt1 0 9815(w)m 2(ould)k 655(be)s 937(treated)s -1644(internally)s 2613(as)s 2863(one)s 3265(w)s 2(ord,)k -3862(whereas)s 220 fnt2 480 9314({Hello}{y)m 4(ello)k 3(w @Colour w)k 2(or)k -3(ld})k -240 fnt1 0 8816(w)m 2(ould)k 708(be)s 1044(treated)s -1805(as)s 2109(tw)s 2(o)k 2573(adjacent)s 3483(w)s 2(ords.)k -4284(Thus,)s 4924(although)s 220 fnt2 5873 8813(@F)m 6(ont)k -240 fnt1 6525 8816(,)m 220 fnt2 6686 8813(@Colour)m 240 fnt1 -7554 8816(,)m 7715(and)s 8173(the)s 8575(other)s 0 8528(style)m -517(operators)s 1468(are)s 1825(ignored)s 2625(in)s 2878(equality)s -3713(testing,)s 4467(the)s 3(y)k 4941(may)s 5417(af)s 6(fect)k -6024(the)s 6382(structure)s 7284(of)s 7565(the)s 7924(objects)s -8663(the)s 3(y)k 0 8240(lie)m 294(within.)s 480 7866(At)m -810(present,)s 220 fnt2 1639 7863(@Common)m 240 fnt1 2830 7866(and)m -220 fnt2 3266 7863(@Rump)m 240 fnt1 4158 7866(treat)m 4673(all)s -4998(unmer)s 4(ged)k 6041(components)s 7281(of)s 7584(their)s -8113(paragraph)s 0 7578(as)m 278(separate,)s 1195(e)s 6(v)k 3(en)k -1724(if)s 1969(one)s 2399(is)s 2638(immediately)s 3914(adjacent)s -4799(to)s 5066(another)s 13(.)k 220 fnt2 5962 7575(@Common)m -240 fnt1 7150 7578(and)m 220 fnt2 7582 7575(@Rump)m 240 fnt1 -8471 7578(w)m 2(ould)k 0 7290(thus)m 449(see)s 809(one)s -1210(component)s 2333(in)s 2574(the)s 2921(\207rst)s 3351(e)s 3(xample)k -4213(and)s 4615(tw)s 2(o)k 5024(in)s 5266(the)s -5613(second.)s 220 fnt2 6440 7287(@Meld)m 240 fnt1 7185 7290(treats)m -7751(each)s 8245(group)s 8855(of)s 0 7002(immediately)m 1239(adjacent)s -2086(components)s 3285(as)s 3526(a)s 3683(single)s 4301(component,)s -5463(so)s 5720(it)s 5903(w)s 2(ould)k 6549(see)s -6901(one)s 7294(component)s 8409(in)s 8643(both)s 0 6714(e)m 3(xamples;)k -1015(b)s 4(ut)k 1381(it)s 1577(w)s 2(ould)k -2235(still)s 2651(not)s 3021(report)s 3655(them)s 4196(as)s -4450(equal,)s 5079(since)s 5630(one)s 6035(is)s 6249(a)s -6419(single)s 7050(w)s 2(ord)k 7601(and)s 8009(the)s -8361(other)s 8916(is)s 0 6426(a)m 179(pair)s 623(of)s -907(adjacent)s 1777(w)s 2(ords.)k 2537(These)s 3177(confusing)s -4188(and)s 4605(inconsistent)s 5820(properties)s 6839(might)s 7471(be)s -7766(re)s 6(vised)k 8521(in)s 8778(the)s 0 6138(future.)m -754(See)s 1176(Section)s 1971(4.6)s 2345(for)s 2704(an)s -3008(e)s 3(xample)k 3892(of)s 4184(the)s 4553(practical)s -5450(use)s 5846(of)s 6138(these)s 6706(operators,)s 7723(in)s -7987(which)s 8650(v)s 3(ery)k 0 5850(small)m 564(unbreakable)s -1781(g)s 1(aps)k 2262(are)s 2600(used)s 3089(to)s -3320(ensure)s 3991(that)s 4401(apparently)s 5456(adjacent)s 6303(components)s -7503(are)s 7842(separate,)s 8722(and)s 220 fnt2 0 5559(@OneCol)m -240 fnt1 1026 5562(is)m 1250(used)s 1761(to)s 2014(pre)s 6(v)k 3(ent)k -2797(the)s 3159(w)s 2(ord)k 3721(mer)s 4(ging)k -4581(optimization)s 5860(from)s 6399(taking)s 7064(ef)s 6(fect)k -7674(when)s 8264(it)s 8471(w)s 2(ould)k 0 5274(otherwise)m -985(cause)s 1572(trouble.)s 240 fnt5 0 4530(3.25.)m 591(@Insert)s +240 fnt5 0 13203(3.26.)m 591(@Insert)s [ /Dest /LOUTinsert /DEST pdfmark -[ /Dest /LOUT16_4080_pre_inse_1 /DEST pdfmark -240 fnt1 541 4098(The)m 220 fnt2 970 4095(@Inser)m -8(t)k -240 fnt1 1808 4098(symbol)m 2569(inserts)s 3245(its)s 3522(left)s +[ /Dest /LOUT19_4213_pre_inse_1 /DEST pdfmark +240 fnt1 541 12771(The)m 220 fnt2 970 12768(@Inser)m -8(t)k +240 fnt1 1808 12771(symbol)m 2569(inserts)s 3245(its)s 3522(left)s 3901(parameter)s 4916(at)s 5149(the)s 5499(be)s 3(ginning)k 6508(of)s 6781(the)s 7130(\207rst)s 7563(paragraph)s 8577(of)s -8850(its)s 0 3810(right)m 511(parameter:)s 220 fnt2 480 3309(X @Inser)m -8(t { A B // C // D })k -240 fnt1 0 2815(is)m 210(equi)s 6(v)k 6(alent)k -1254(to)s 220 fnt2 480 2314({ XA B // C // D })m 240 fnt1 0 1820(Notice)m +8850(its)s 0 12483(right)m 511(parameter:)s 220 fnt2 480 11982(X @Inser)m -8(t { A B // C // D })k +240 fnt1 0 11488(is)m 210(equi)s 6(v)k 6(alent)k +1254(to)s 220 fnt2 480 10987({ XA B // C // D })m 240 fnt1 0 10493(Notice)m 707(that)s 1139(a)s 1320(zero-width)s 2426(space)s 3028(separates)s -220 fnt2 3968 1817(X)m 240 fnt1 4185 1820(from)m 4723(the)s +220 fnt2 3968 10490(X)m 240 fnt1 4185 10493(from)m 4723(the)s 5085(\207rst)s 5531(paragraph,)s 6608(so)s 6889(if)s 7120(some)s -7696(wider)s 8314(space)s 8916(is)s 0 1532(required)m 857(it)s +7696(wider)s 8314(space)s 8916(is)s 0 10205(required)m 857(it)s 1052(must)s 1580(be)s 1865(placed)s 2550(at)s 2785(the)s -3137(end)s 3544(of)s 220 fnt2 3818 1529(X)m 240 fnt1 -3960 1532(.)m 4127(The)s 220 fnt2 4558 1529(@Inser)m -8(t)k -240 fnt1 5397 1532(operation)m 6361(is)s 6574(applied)s 7339(to)s +3137(end)s 3544(of)s 220 fnt2 3818 10202(X)m 240 fnt1 +3960 10205(.)m 4127(The)s 220 fnt2 4558 10202(@Inser)m -8(t)k +240 fnt1 5397 10205(operation)m 6361(is)s 6574(applied)s 7339(to)s 7581(the)s 7932(v)s 6(alue)k 8503(of)s 8778(the)s -0 1244(right)m 511(parameter)s 1525(after)s 2021(e)s 6(v)k 6(aluation.)k -480 870(The)m 917(only)s 1407(kno)s 6(wn)k 2121(use)s +0 9917(right)m 511(parameter)s 1525(after)s 2021(e)s 6(v)k 6(aluation.)k +480 9543(The)m 917(only)s 1407(kno)s 6(wn)k 2121(use)s 2506(for)s 2853(this)s 3259(symbol)s 4029(is)s 4249(to)s 4498(attach)s 5134(something)s 6194(lik)s 2(e)k 240 fnt5 -6616 869(Figur)m 4(e)k 7355(6)s 240 fnt1 7538 870(to)m -7787(the)s 8145(front)s 8679(of)s 8960(a)s 0 582(multi-paragraph)m -1596(caption.)s +6616 9542(Figur)m 4(e)k 7355(6)s 240 fnt1 7538 9543(to)m +7787(the)s 8145(front)s 8679(of)s 8960(a)s 0 9255(multi-paragraph)m +1596(caption.)s 240 fnt5 0 8462(3.27.)m 591(@OneOf)s +[ /Dest /LOUToneof /DEST pdfmark + +[ /Dest /LOUT19_4213_pre_oneo_1 /DEST pdfmark +240 fnt1 +534 8030(The)m 220 fnt2 956 8027(@OneOf)m 240 fnt1 1877 8030(symbol)m +2631(returns)s 3339(one)s 3734(of)s 3999(the)s 4341(sequence)s +5268(of)s 5533(objects)s 6254(which)s 6890(is)s 7094(its)s +7364(right)s 7869(parameter)s 8876(as)s 0 7742(its)m 276(result:)s +220 fnt2 480 7291(@OneOf {)m 480 7003( @ResultA)m 480 6715( @ResultB)m 480 6427( @ResultC)m +480 6139(})m 240 fnt1 0 5645(The)m 451(choice)s 1155(is)s +1388(made)s 1986(to)s 2248(ensure)s 2952(that)s 3393(whate)s 6(v)k 3(er)k +4344(g)s 1(alle)k 3(y)k 5001(tar)s 4(get)k +5624(is)s 5857(required)s 6735(at)s 6990(the)s 7362(moment)s +8229(is)s 8463(found.)s 0 5357(F)m 3(or)k 389(e)s 3(xample,)k +1304(if)s 1522(we)s 1858(are)s 2206(e)s 6(v)k 6(aluating)k +220 fnt2 3244 5354(@OneOf)m 240 fnt1 4172 5357(as)m 4423(part)s +4855(of)s 5127(an)s 5411(attempt)s 6188(to)s 6428(attach)s +7056(a)s 7223(g)s 1(alle)k 3(y)k 7858(whose)s +8527(tar)s 4(get)k 0 5069(is)m 220 fnt2 222 5066(@SomeT)m 26(arget)k +240 fnt1 1622 5069(,)m 1741(then)s 2223(the)s 2583(result)s +3186(abo)s 3(v)k 3(e)k 3820(will)s 4259(be)s +220 fnt2 4553 5066(@ResultA)m 240 fnt1 5613 5069(if)m 5843(it)s +6047(contains)s 220 fnt2 6908 5066(@SomeT)m 26(arget)k 240 fnt1 +8308 5069(,)m 8427(or)s 8699(else)s 220 fnt2 0 4778(@ResultB)m +240 fnt1 1042 4781(if)m 1260(it)s 1453(contains)s 220 fnt2 +2302 4778(@SomeT)m 26(arget)k 240 fnt1 3702 4781(,)m 3810(or)s +4070(else)s 220 fnt2 4498 4778(@ResultC)m 240 fnt1 5552 4781(\(whether)m +6462(or)s 6722(not)s 7089(it)s 7282(contains)s 8131(the)s +8480(tar)s 4(get,)k 0 4493(or)m 259(if)s 476(there)s +1009(is)s 1219(no)s 1512(tar)s 4(get\).)k 480 4119(Use)m +930(of)s 220 fnt2 1224 4116(@OneOf)m 240 fnt1 2174 4119(in)m +2440(conjunction)s 3650(with)s 4155(recursi)s 6(v)k 3(e)k +5100(symbols)s 5972(can)s 6384(lead)s 6863(to)s 7125(problems.)s +8202(Consider)s 0 3831(this)m 396(e)s 3(xample:)k 220 fnt2 +480 3330(def @Recursiv)m 5(e {)k 480 2754( def @ChoiceA { @APlace // @Recursiv)m 5(e })k 480 2178( def @ChoiceB { @BPlace // @Recursiv)m 5(e })k +480 1602( @OneOf {)m 480 1314( @ChoiceA)m 480 1026( @ChoiceB)m 480 738( })m 480 450(})m + grestore gsave 1417 -15423 translate @@ -13666,7 +14259,7 @@ pgsave restore showpage -%%Page: 57 63 +%%Page: 59 65 %%BeginPageSetup %%PageResources: font Times-Roman %%+ font Times-Italic @@ -13689,86 +14282,116 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -240 fnt6 1417 -1578(3.25.)m 1991(@Insert)s 240 fnt5 10248 -1581(57)m -gsave +240 fnt6 1417 -1578(3.27.)m +1991(@OneOf)s 240 fnt5 10249 -1581(59)m gsave 1417 -15423 translate -240 fnt1 9066 13415 0 13415 240 288 60 LoutGraphic +240 fnt1 9066 13370 0 13261 240 288 60 LoutGraphic gsave 1 LoutMargSet grestore -240 fnt5 0 13250(3.26.)m 591(@OneOf)s -[ /Dest /LOUToneof /DEST pdfmark - -[ /Dest /LOUT16_4080_pre_oneo_1 /DEST pdfmark -240 fnt1 534 12818(The)m -220 fnt2 956 12815(@OneOf)m 240 fnt1 1877 12818(symbol)m 2631(returns)s -3339(one)s 3734(of)s 3999(the)s 4341(sequence)s 5268(of)s -5533(objects)s 6254(which)s 6890(is)s 7094(its)s 7364(right)s -7869(parameter)s 8876(as)s 0 12530(its)m 276(result:)s 220 fnt2 -480 12079(@OneOf {)m 480 11791( @ResultA)m 480 11503( @ResultB)m 480 11215( @ResultC)m 480 10927(})m -240 fnt1 0 10433(The)m 451(choice)s 1155(is)s 1388(made)s -1986(to)s 2248(ensure)s 2952(that)s 3393(whate)s 6(v)k 3(er)k -4344(g)s 1(alle)k 3(y)k 5001(tar)s 4(get)k -5624(is)s 5857(required)s 6735(at)s 6990(the)s 7362(moment)s -8229(is)s 8463(found.)s 0 10145(F)m 3(or)k 389(e)s 3(xample,)k -1304(if)s 1522(we)s 1858(are)s 2206(e)s 6(v)k 6(aluating)k -220 fnt2 3244 10142(@OneOf)m 240 fnt1 4172 10145(as)m 4423(part)s -4855(of)s 5127(an)s 5411(attempt)s 6188(to)s 6428(attach)s -7056(a)s 7223(g)s 1(alle)k 3(y)k 7858(whose)s -8527(tar)s 4(get)k 0 9857(is)m 220 fnt2 222 9854(@SomeT)m 26(arget)k -240 fnt1 1622 9857(,)m 1741(then)s 2223(the)s 2583(result)s -3186(abo)s 3(v)k 3(e)k 3820(will)s 4259(be)s -220 fnt2 4553 9854(@ResultA)m 240 fnt1 5613 9857(if)m 5843(it)s -6047(contains)s 220 fnt2 6908 9854(@SomeT)m 26(arget)k 240 fnt1 -8308 9857(,)m 8427(or)s 8699(else)s 220 fnt2 0 9566(@ResultB)m -240 fnt1 1042 9569(if)m 1260(it)s 1453(contains)s 220 fnt2 -2302 9566(@SomeT)m 26(arget)k 240 fnt1 3702 9569(,)m 3810(or)s -4070(else)s 220 fnt2 4498 9566(@ResultC)m 240 fnt1 5552 9569(\(whether)m -6462(or)s 6722(not)s 7089(it)s 7282(contains)s 8131(the)s -8480(tar)s 4(get,)k 0 9281(or)m 259(if)s 476(there)s -1009(is)s 1219(no)s 1512(tar)s 4(get\).)k 480 8907(Use)m -930(of)s 220 fnt2 1224 8904(@OneOf)m 240 fnt1 2174 8907(in)m -2440(conjunction)s 3650(with)s 4155(recursi)s 6(v)k 3(e)k -5100(symbols)s 5972(can)s 6384(lead)s 6863(to)s 7125(problems.)s -8202(Consider)s 0 8619(this)m 396(e)s 3(xample:)k 220 fnt2 -480 8118(def @Recursiv)m 5(e {)k 480 7542( def @ChoiceA { @APlace // @Recursiv)m 5(e })k 480 6966( def @ChoiceB { @BPlace // @Recursiv)m 5(e })k -480 6390( @OneOf {)m 480 6102( @ChoiceA)m 480 5814( @ChoiceB)m 480 5526( })m 480 5238(})m -240 fnt1 0 4744(Lout)m 523(belie)s 6(v)k 3(es)k -1360(that)s 1790(e)s 3(xpanding)k 220 fnt2 2849 4741(@Recursiv)m 5(e)k -240 fnt1 4106 4744(is)m 4328(the)s 4687(right)s 5210(thing)s -5767(to)s 6017(do)s 6322(when)s 6910(searching)s 7890(for)s -8240(either)s 8855(of)s 0 4456(the)m 380(g)s 1(alle)k 3(y)k -1046(tar)s 4(gets)k 220 fnt2 1762 4453(@APlace)m 240 fnt1 -2763 4456(and)m 220 fnt2 3199 4453(@BPlace)m 240 fnt1 4108 4456(.)m -4305(When)s 4966(searching)s 5968(for)s 220 fnt2 6338 4453(@BPlace)m -240 fnt1 7339 4456(this)m 7768(leads)s 8342(Lout)s 8887(to)s -0 4168(e)m 3(xpand)k 220 fnt2 760 4165(@Recursiv)m 5(e)k -240 fnt1 1945 4168(,)m 2065(then)s 220 fnt2 2547 4165(@ChoiceA)m -240 fnt1 3596 4168(,)m 3717(then)s 4199(the)s 220 fnt2 -4560 4165(@Recursiv)m 5(e)k 240 fnt1 5818 4168(symbol)m 6592(within)s -220 fnt2 7273 4165(@ChoiceA)m 240 fnt1 8322 4168(,)m 8442(and)s -8860(so)s 0 3880(on)m 320(in\207nitely)s 15(.)k 1355(This)s -1854(problem)s 2734(can)s 3146(be)s 3451(a)s 4(v)k 4(oided)k -4283(by)s 4600(attaching)s 5552(a)s 220 fnt2 5741 3877(@NotRe)m 6(v)k 5(ealed)k -240 fnt1 7291 3880(symbol)m 8074(to)s 8336(each)s 8855(of)s -0 3592(the)m 357(inner)s 220 fnt2 918 3589(@Recursiv)m 5(e)k -240 fnt1 2172 3592(symbols:)m 3146(these)s 3703(are)s 4059(then)s +0 13207(Lout)m +523(belie)s 6(v)k 3(es)k 1360(that)s 1790(e)s 3(xpanding)k +220 fnt2 2849 13204(@Recursiv)m 5(e)k 240 fnt1 4106 13207(is)m +4328(the)s 4687(right)s 5210(thing)s 5767(to)s 6017(do)s +6322(when)s 6910(searching)s 7890(for)s 8240(either)s 8855(of)s +0 12919(the)m 380(g)s 1(alle)k 3(y)k 1046(tar)s 4(gets)k +220 fnt2 1762 12916(@APlace)m 240 fnt1 2763 12919(and)m 220 fnt2 +3199 12916(@BPlace)m 240 fnt1 4108 12919(.)m 4305(When)s 4966(searching)s +5968(for)s 220 fnt2 6338 12916(@BPlace)m 240 fnt1 7339 12919(this)m +7768(leads)s 8342(Lout)s 8887(to)s 0 12631(e)m 3(xpand)k +220 fnt2 760 12628(@Recursiv)m 5(e)k 240 fnt1 1945 12631(,)m +2065(then)s 220 fnt2 2547 12628(@ChoiceA)m 240 fnt1 3596 12631(,)m +3717(then)s 4199(the)s 220 fnt2 4560 12628(@Recursiv)m 5(e)k +240 fnt1 5818 12631(symbol)m 6592(within)s 220 fnt2 7273 12628(@ChoiceA)m +240 fnt1 8322 12631(,)m 8442(and)s 8860(so)s 0 12343(on)m +320(in\207nitely)s 15(.)k 1355(This)s 1854(problem)s 2734(can)s +3146(be)s 3451(a)s 4(v)k 4(oided)k 4283(by)s +4600(attaching)s 5552(a)s 220 fnt2 5741 12340(@NotRe)m 6(v)k 5(ealed)k +240 fnt1 7291 12343(symbol)m 8074(to)s 8336(each)s 8855(of)s +0 12055(the)m 357(inner)s 220 fnt2 918 12052(@Recursiv)m 5(e)k +240 fnt1 2172 12055(symbols:)m 3146(these)s 3703(are)s 4059(then)s 4538(not)s 4914(a)s 4(v)k 6(ailable)k 5831(for)s 6179(e)s 3(xpansion)k 7214(until)s 7716(a)s 7892(decision)s -8756(has)s 0 3304(been)m 510(made)s 1085(to)s 1326(e)s 3(xpand)k +8756(has)s 0 11767(been)m 510(made)s 1085(to)s 1326(e)s 3(xpand)k 2074(the)s 2424(symbol)s 3185(the)s 3(y)k 3650(lie)s 3945(within.)s 4721(In)s 4979(this)s 5376(particular)s 6352(e)s 3(xample)k 7216(it)s 7410(w)s 2(ould)k 8066(be)s 8350(simpler)s -0 3016(to)m 239(write)s 220 fnt2 480 2564(def @Recursiv)m 5(e {)k -480 1988( @OneOf {)m 480 1700( @APlace)m 480 1412( @BPlace)m 480 1124( })m 480 836( // @Recursiv)m 5(e)k +0 11479(to)m 239(write)s 220 fnt2 480 11027(def @Recursiv)m 5(e {)k +480 10451( @OneOf {)m 480 10163( @APlace)m 480 9875( @BPlace)m 480 9587( })m 480 9299( // @Recursiv)m 5(e)k +480 9011(})m 240 fnt1 0 8517(b)m 4(ut)k 378(this)s +791(f)s 2(actoring)k 1720(is)s 1947(not)s 2329(possible)s +3186(when)s 3778(the)s 4143(recursi)s 6(v)k 3(e)k +5081(calls)s 5586(ha)s 4(v)k 3(e)k 6103(parameters)s +7218(that)s 7652(are)s 8016(required)s 8887(to)s 0 8229(dif)m 6(fer)k +583(in)s 826(the)s 1174(tw)s 2(o)k 1584(cases.)s +240 fnt5 0 7485(3.28.)m 591(@Next)s +[ /Dest /LOUTnext /DEST pdfmark + +[ /Dest /LOUT19_4213_pre_next_1 /DEST pdfmark +240 fnt1 535 7053(The)m +220 fnt2 957 7050(@Ne)m 6(xt)k 240 fnt1 1676 7053(symbol)m +2430(returns)s 3138(its)s 3409(parameter)s 4417(plus)s 4861(one.)s +5366(It)s 5565(is)s 5769(rather)s 6380(cle)s 6(v)k 3(er)k +7008(at)s 7234(w)s 2(orking)k 8078(this)s 8468(out:)s +8934(it)s 0 6765(hunts)m 570(through)s 1372(the)s 1720(parameter)s +2734(from)s 3258(right)s 3769(to)s 4008(left,)s 4432(looking)s +5217(for)s 5555(a)s 5721(number)s 6512(to)s 6751(increment:)s +220 fnt2 480 6264(@Ne)m 6(xt \(3.99\))k 240 fnt1 0 5768(has)m +404(result)s 1029(\(3.100\).)s 1925(If)s 220 fnt2 2190 5765(@Ne)m 6(xt)k +240 fnt1 2949 5768(cannot)m 3681(\207nd)s 4147(a)s 4348(digit)s +4880(inside)s 5542(its)s 5852(parameter)s 9(,)k 6939(it)s +7166(is)s 7410(an)s 7728(error)s 13(.)k 8377(Roman)s +0 5480(numerals)m 925(are)s 1270(handled)s 2084(by)s 2376(storing)s +3091(them)s 3627(in)s 3868(a)s 4032(database,)s 4960(as)s +5208(e)s 3(xplained)k 6191(in)s 6432(Section)s 7204(4.2;)s +220 fnt2 7614 5477(@Ne)m 6(xt)k 240 fnt1 8336 5480(will)m +8760(not)s 0 5192(increment)m 1015(a)s 1181(Roman)s 1930(numeral.)s +240 fnt5 0 4449(3.29.)m 591(@Case)s +[ /Dest /LOUTcase /DEST pdfmark +[ /Dest /LOUT19_4213_pre_case_1 /DEST pdfmark + +[ /Dest /LOUT19_4213_pre_case_2 /DEST pdfmark +240 fnt1 540 4017(The)m +220 fnt2 968 4014(@Case)m 240 fnt1 1755 4017(symbol)m 2515(selects)s +3202(its)s 3478(result)s 4068(from)s 4592(a)s 4758(list)s +5109(of)s 5380(alternati)s 6(v)k 3(es,)k 6578(depending)s +7629(on)s 7926(a)s 8092(tag:)s 220 fnt2 480 3516(@Da)m 6(y @Case {)k +480 3228( { 1 21 31 } @Y)m 4(ield st)k 480 2940( { 2 22 } @Y)m 4(ield nd)k 480 2652( { 3 23 } @Y)m 4(ield rd)k +480 2364( else @Y)m 4(ield th)k 480 2076(})m 240 fnt1 0 1582(In)m +257(this)s 654(e)s 3(xample)k 1518(the)s 1868(result)s +2459(will)s 2886(be)s 3169(st)s 3390(if)s 220 fnt2 +3608 1579(@Da)m 6(y)k 240 fnt1 4274 1582(is)m 4485(1,)s +4714(21,)s 5062(or)s 5322(31,)s 5670(and)s 6076(nd)s +6375(if)s 220 fnt2 6593 1579(@Da)m 6(y)k 240 fnt1 +7259 1582(is)m 7471(2)s 7646(or)s 7906(22,)s 8254(etc.)s +8698(The)s 0 1294(ef)m 6(fect)k 594(is)s 801(similar)s +1520(to)s 1756(accessing)s 2722(a)s 2885(database,)s 3812(though)s +4532(in)s 4773(a)s 4936(more)s 5480(compact)s 6347(form.)s +6972(The)s 7397(right)s 7905(parameter)s 8916(is)s 0 1006(a)m +171(sequence)s 1109(of)s 220 fnt2 1385 1003(@Y)m 4(ield)k +240 fnt1 2143 1006(symbols,)m 3053(each)s 3553(with)s 4040(a)s +4211(left)s 4594(parameter)s 5613(whose)s 6286(v)s 6(alue)k +6859(is)s 7074(a)s 7245(sequence)s 8183(of)s 8459(one)s +8867(or)s 0 718(more)m 547(juxtapositions)s 1940(of)s 2211(simple)s +2904(w)s 2(ords,)k 3594(and)s 3998(a)s 4164(right)s +4675(parameter)s 5689(which)s 6331(may)s 6797(be)s 7079(an)s 3(y)k +7476(object.)s 480 344(W)m 19(e)k 895(\207rst)s 1372(describe)s +2271(the)s 2665(beha)s 4(viour)k 3725(when)s 4347(the)s +4742(v)s 6(alue)k 5356(of)s 5674(the)s 6068(left)s +6492(parameter)s 7552(of)s 220 fnt2 7870 341(@Case)m 240 fnt1 +8703 344(is)m 8960(a)s 0 56(juxtaposition)m 1302(of)s 1568(one)s +1965(or)s 2220(more)s 2762(simple)s 3450(w)s 2(ords.)k +4193(Then)s 4737(the)s 5080(result)s 5666(of)s 5932(the)s +220 fnt2 6275 53(@Case)m 240 fnt1 7058 56(is)m 7263(the)s +7606(right)s 8112(parameter)s grestore gsave 1417 -15423 translate @@ -13786,7 +14409,7 @@ pgsave restore showpage -%%Page: 58 64 +%%Page: 60 66 %%BeginPageSetup %%PageResources: font Times-Roman %%+ font Times-Bold @@ -13809,118 +14432,85 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -240 fnt5 1417 -1583(58)m 240 fnt6 7498 -1580(Chapter)m 8348(3.)s -8622(Pr)s 8(ede\207ned)k 9717(symbols)s gsave +240 fnt5 1417 -1583(60)m +240 fnt6 7498 -1580(Chapter)m 8348(3.)s 8622(Pr)s 8(ede\207ned)k +9717(symbols)s gsave 1417 -15423 translate -240 fnt1 9066 13368 0 13267 240 288 60 LoutGraphic +240 fnt1 9066 13368 0 13259 240 288 60 LoutGraphic gsave 0 LoutMargSet grestore -220 fnt2 480 13210(})m -240 fnt1 0 12716(b)m 4(ut)k 378(this)s 791(f)s 2(actoring)k -1720(is)s 1947(not)s 2329(possible)s 3186(when)s 3778(the)s -4143(recursi)s 6(v)k 3(e)k 5081(calls)s 5586(ha)s 4(v)k 3(e)k -6103(parameters)s 7218(that)s 7652(are)s 8016(required)s 8887(to)s -0 12428(dif)m 6(fer)k 583(in)s 826(the)s 1174(tw)s 2(o)k -1584(cases.)s 240 fnt5 0 11684(3.27.)m 591(@Next)s -[ /Dest /LOUTnext /DEST pdfmark - -[ /Dest /LOUT16_4080_pre_next_1 /DEST pdfmark -240 fnt1 -535 11252(The)m 220 fnt2 957 11249(@Ne)m 6(xt)k 240 fnt1 -1676 11252(symbol)m 2430(returns)s 3138(its)s 3409(parameter)s 4417(plus)s -4861(one.)s 5366(It)s 5565(is)s 5769(rather)s 6380(cle)s 6(v)k 3(er)k -7008(at)s 7234(w)s 2(orking)k 8078(this)s 8468(out:)s -8934(it)s 0 10964(hunts)m 570(through)s 1372(the)s 1720(parameter)s -2734(from)s 3258(right)s 3769(to)s 4008(left,)s 4432(looking)s -5217(for)s 5555(a)s 5721(number)s 6512(to)s 6751(increment:)s -220 fnt2 480 10463(@Ne)m 6(xt \(3.99\))k 240 fnt1 0 9967(has)m -404(result)s 1029(\(3.100\).)s 1925(If)s 220 fnt2 2190 9964(@Ne)m 6(xt)k -240 fnt1 2949 9967(cannot)m 3681(\207nd)s 4147(a)s 4348(digit)s -4880(inside)s 5542(its)s 5852(parameter)s 9(,)k 6939(it)s -7166(is)s 7410(an)s 7728(error)s 13(.)k 8377(Roman)s -0 9679(numerals)m 925(are)s 1270(handled)s 2084(by)s 2376(storing)s -3091(them)s 3627(in)s 3868(a)s 4032(database,)s 4960(as)s -5208(e)s 3(xplained)k 6191(in)s 6432(Section)s 7204(4.2;)s -220 fnt2 7614 9676(@Ne)m 6(xt)k 240 fnt1 8336 9679(will)m -8760(not)s 0 9391(increment)m 1015(a)s 1181(Roman)s 1930(numeral.)s -240 fnt5 0 8648(3.28.)m 591(@Case)s -[ /Dest /LOUTcase /DEST pdfmark - -[ /Dest /LOUT16_4080_pre_case_1 /DEST pdfmark - -[ /Dest /LOUT16_4080_pre_case_2 /DEST pdfmark -240 fnt1 540 8216(The)m -220 fnt2 968 8213(@Case)m 240 fnt1 1755 8216(symbol)m 2515(selects)s -3202(its)s 3478(result)s 4068(from)s 4592(a)s 4758(list)s -5109(of)s 5380(alternati)s 6(v)k 3(es,)k 6578(depending)s -7629(on)s 7926(a)s 8092(tag:)s 220 fnt2 480 7715(@Da)m 6(y @Case {)k -480 7427( { 1 21 31 } @Y)m 4(ield st)k 480 7139( { 2 22 } @Y)m 4(ield nd)k 480 6851( { 3 23 } @Y)m 4(ield rd)k -480 6563( else @Y)m 4(ield th)k 480 6275(})m 240 fnt1 0 5781(In)m -257(this)s 654(e)s 3(xample)k 1518(the)s 1868(result)s -2459(will)s 2886(be)s 3169(st)s 3390(if)s 220 fnt2 -3608 5778(@Da)m 6(y)k 240 fnt1 4274 5781(is)m 4485(1,)s -4714(21,)s 5062(or)s 5322(31,)s 5670(and)s 6076(nd)s -6375(if)s 220 fnt2 6593 5778(@Da)m 6(y)k 240 fnt1 -7259 5781(is)m 7471(2)s 7646(or)s 7906(22,)s 8254(etc.)s -8698(The)s 0 5493(ef)m 6(fect)k 594(is)s 801(similar)s -1520(to)s 1756(accessing)s 2722(a)s 2885(database,)s 3812(though)s -4532(in)s 4773(a)s 4936(more)s 5480(compact)s 6347(form.)s -6972(The)s 7397(right)s 7905(parameter)s 8916(is)s 0 5205(a)m -171(sequence)s 1109(of)s 220 fnt2 1385 5202(@Y)m 4(ield)k -240 fnt1 2143 5205(symbols,)m 3053(each)s 3553(with)s 4040(a)s -4211(left)s 4594(parameter)s 5613(whose)s 6286(v)s 6(alue)k -6859(is)s 7074(a)s 7245(sequence)s 8183(of)s 8459(one)s -8867(or)s 0 4917(more)m 547(juxtapositions)s 1940(of)s 2211(simple)s -2904(w)s 2(ords,)k 3594(and)s 3998(a)s 4164(right)s -4675(parameter)s 5689(which)s 6331(may)s 6797(be)s 7079(an)s 3(y)k -7476(object.)s 480 4543(W)m 19(e)k 895(\207rst)s 1372(describe)s -2271(the)s 2665(beha)s 4(viour)k 3725(when)s 4347(the)s -4742(v)s 6(alue)k 5356(of)s 5674(the)s 6068(left)s -6492(parameter)s 7552(of)s 220 fnt2 7870 4540(@Case)m 240 fnt1 -8703 4543(is)m 8960(a)s 0 4255(juxtaposition)m 1302(of)s 1568(one)s -1965(or)s 2220(more)s 2762(simple)s 3450(w)s 2(ords.)k -4193(Then)s 4737(the)s 5080(result)s 5666(of)s 5932(the)s -220 fnt2 6275 4252(@Case)m 240 fnt1 7058 4255(is)m 7263(the)s -7606(right)s 8112(parameter)s 0 3967(of)m 287(the)s 652(\207rst)s -220 fnt2 1100 3964(@Y)m 4(ield)k 240 fnt1 1870 3967(whose)m +0 13205(of)m 287(the)s 652(\207rst)s +220 fnt2 1100 13202(@Y)m 4(ield)k 240 fnt1 1870 13205(whose)m 2554(left)s 2948(parameter)s 3979(contains)s 4844(either)s 5463(the)s 5828(v)s 6(alue)k 6413(of)s 6701(the)s 7065(left)s -7459(parameter)s 8490(of)s 8778(the)s 220 fnt2 0 3676(@Case)m -240 fnt1 727 3679(,)m 834(or)s 1093(the)s 1441(special)s -2159(v)s 6(alue)k 220 fnt2 2727 3676(else)m 240 fnt1 -3121 3679(.)m 3285(If)s 3515(there)s 4048(is)s 4258(no)s -4551(such)s 220 fnt2 5047 3676(@Y)m 4(ield)k 240 fnt1 -5800 3679(it)m 5992(is)s 6202(an)s 6485(error)s 13(.)k -480 3305(When)m 1133(the)s 1506(left)s 1908(parameter)s 2946(of)s -220 fnt2 3242 3302(@Case)m 240 fnt1 4054 3305(is)m 4288(not)s +7459(parameter)s 8490(of)s 8778(the)s 220 fnt2 0 12914(@Case)m +240 fnt1 727 12917(,)m 834(or)s 1093(the)s 1441(special)s +2159(v)s 6(alue)k 220 fnt2 2727 12914(else)m 240 fnt1 +3121 12917(.)m 3285(If)s 3515(there)s 4048(is)s 4258(no)s +4551(such)s 220 fnt2 5047 12914(@Y)m 4(ield)k 240 fnt1 +5800 12917(it)m 5992(is)s 6202(an)s 6485(error)s 13(.)k +480 12543(When)m 1133(the)s 1506(left)s 1908(parameter)s 2946(of)s +220 fnt2 3242 12540(@Case)m 240 fnt1 4054 12543(is)m 4288(not)s 4679(a)s 4870(juxtaposition)s 6200(of)s 6496(simple)s 7214(w)s 2(ords,)k -7928(the)s 8301(result)s 8916(is)s 0 3017(the)m 350(right)s +7928(the)s 8301(result)s 8916(is)s 0 12255(the)m 350(right)s 864(parameter)s 1881(of)s 2155(the)s 2506(\207rst)s 220 fnt2 -2940 3014(@Y)m 4(ield)k 240 fnt1 3696 3017(whose)m 4367(left)s -4746(parameter)s 5763(is)s 220 fnt2 5976 3014(else)m 240 fnt1 -6370 3017(,)m 6480(or)s 6742(an)s 7028(error)s 7554(otherwise.)s -8650(This)s 0 2729(permits)m 767(e)s 3(xamples)k 1718(lik)s 2(e)k -220 fnt2 480 2228(@RunningTitle @Case {)m 480 1940( dft @Y)m 4(ield @Title)k 480 1652( else @Y)m 4(ield @RunningTitle)k -480 1364(})m 240 fnt1 0 870(where)m 661(a)s 848(running)s +2940 12252(@Y)m 4(ield)k 240 fnt1 3696 12255(whose)m 4367(left)s +4746(parameter)s 5763(is)s 220 fnt2 5976 12252(else)m 240 fnt1 +6370 12255(,)m 6480(or)s 6742(an)s 7028(error)s 7554(otherwise.)s +8650(This)s 0 11967(permits)m 767(e)s 3(xamples)k 1718(lik)s 2(e)k +220 fnt2 480 11466(@RunningTitle @Case {)m 480 11178( dft @Y)m 4(ield @Title)k 480 10890( else @Y)m 4(ield @RunningTitle)k +480 10602(})m 240 fnt1 0 10108(where)m 661(a)s 848(running)s 1667(title)s 2115(is)s 2346(returned)s 3221(unless)s 3892(it)s 4105(has)s 4496(the)s 4866(v)s 6(alue)k 220 fnt2 -5455 867(dft)m 240 fnt1 5776 870(\(which)m 6519(presumably)s 7710(means)s -8393(that)s 8833(no)s 0 582(running)m 798(title)s 1224(w)s 2(as)k +5455 10105(dft)m 240 fnt1 5776 10108(\(which)m 6519(presumably)s 7710(means)s +8393(that)s 8833(no)s 0 9820(running)m 798(title)s 1224(w)s 2(as)k 1645(supplied\),)s 2642(in)s 2885(which)s 3527(case)s 3994(an)s 4277(ordinary)s 5141(title)s 5567(is)s 5777(returned)s 6631(instead.)s -480 208(When)m 1126(a)s 1310(recepti)s 6(v)k 3(e)k +480 9446(When)m 1126(a)s 1310(recepti)s 6(v)k 3(e)k 2250(symbol)s 3028(is)s 3256(placed)s 3955(within)s 4641(a)s -220 fnt2 4825 205(@Case)m 240 fnt1 5552 208(,)m 5677(it)s +220 fnt2 4825 9443(@Case)m 240 fnt1 5552 9446(,)m 5677(it)s 5887(should)s 6601(be)s 6901(included)s 7801(in)s 8062(each)s -8575(alter)s 8998(-)s +8575(alter)s 8998(-)s 0 9158(nati)m 6(v)k 3(e,)k +695(since)s 1255(otherwise)s 2254(Basser)s 2964(Lout)s 3490(may)s +3969(become)s 4783(confused)s 5718(when)s 6308(trying)s 6945(to)s +7198(predict)s 7934(whether)s 8778(the)s 0 8870(symbol)m 755(will)s +1176(be)s 1453(a)s 1613(part)s 2039(of)s 2305(the)s +2648(result)s 3232(or)s 3486(not.)s 3951(Alternati)s 6(v)k 3(ely)k 15(,)k +5288(if)s 5500(it)s 5687(can)s 6071(be)s 6347(guaranteed)s +7449(that)s 7862(the)s 8204(recepti)s 6(v)k 3(e)k +0 8582(symbol)m 764(will)s 1195(ne)s 6(v)k 3(er)k +1782(be)s 2069(searched)s 2967(for)s 3310(when)s 3891(the)s +4244(cases)s 4804(that)s 5226(it)s 5423(does)s 5918(not)s +6289(lie)s 6587(within)s 7260(are)s 7612(selected,)s 8493(that)s +8916(is)s 0 8294(all)m 293(right)s 804(too.)s 240 fnt5 +0 7501(3.30.)m 591(@Moment)s +[ /Dest /LOUTmoment /DEST pdfmark +240 fnt1 480 7069(The)m 908(prede\207ned)s +1976(symbol)s 220 fnt2 2736 7066(@Moment)m +[ /Dest /LOUT19_4213_pre_mome_1 /DEST pdfmark +240 fnt1 3808 7069(has)m +4178(the)s 4526(follo)s 6(wing)k 5503(de\207nition:)s 220 fnt2 +480 6568(def @Moment)m 480 6280( named @T)m 26(ag {})k 480 5992( named @Second {})m 480 5704( named @Min)m 2(ute {})k +480 5416( named @Hour {})m 480 5128( named @Da)m 6(y {})k 480 4840( named @Month {})m 480 4552( named @Y)m 30(ear {})k +480 4264( named @Centur)m -6(y {})k 480 3976( named @W)m 6(eekDa)k 6(y {})k +480 3688( named @Y)m 30(earDa)k 6(y {})k 480 3400( named @Da)m 6(ylightSa)k 4(ving {})k +480 3112({})m 240 fnt1 0 2618(It)m 208(may)s 677(be)s +962(used)s 1463(lik)s 2(e)k 1878(an)s 3(y)k +2278(other)s 2832(symbol.)s 3705(Lout)s 4220(pro)s 3(vides)k +5095(an)s 5381(in)s 9(v)k 4(ocation)k 6439(of)s +220 fnt2 6713 2615(@Moment)m 240 fnt1 7788 2618(with)m 8273(tag)s +220 fnt2 8622 2615(no)m 3(w)k 240 fnt1 9019 2618(,)m +0 2330(whose)m 668(other)s 1219(parameters)s 2317(are)s 2664(numbers)s +3539(encoding)s 4470(the)s 4818(current)s 5554(date)s 6008(and)s +6412(time:)s grestore gsave 1417 -15423 translate @@ -13938,7 +14528,7 @@ pgsave restore showpage -%%Page: 59 65 +%%Page: 61 67 %%BeginPageSetup %%PageResources: font Times-Roman %%+ font Times-Italic @@ -13961,93 +14551,115 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -240 fnt6 1417 -1578(3.28.)m 1991(@Case)s 240 fnt5 10249 -1581(59)m -gsave +240 fnt6 1417 -1578(3.30.)m +1991(@Moment)s 240 fnt5 10256 -1581(61)m gsave 1417 -15423 translate -240 fnt1 9066 13414 0 13305 240 288 60 LoutGraphic +240 fnt1 9066 13414 0 13414 240 288 60 LoutGraphic gsave 1 LoutMargSet grestore -0 13251(nati)m 6(v)k 3(e,)k 695(since)s 1255(otherwise)s -2254(Basser)s 2964(Lout)s 3490(may)s 3969(become)s 4783(confused)s -5718(when)s 6308(trying)s 6945(to)s 7198(predict)s 7934(whether)s -8778(the)s 0 12963(symbol)m 755(will)s 1176(be)s 1453(a)s -1613(part)s 2039(of)s 2305(the)s 2648(result)s 3232(or)s -3486(not.)s 3951(Alternati)s 6(v)k 3(ely)k 15(,)k -5288(if)s 5500(it)s 5687(can)s 6071(be)s 6347(guaranteed)s -7449(that)s 7862(the)s 8204(recepti)s 6(v)k 3(e)k -0 12675(symbol)m 764(will)s 1195(ne)s 6(v)k 3(er)k -1782(be)s 2069(searched)s 2967(for)s 3310(when)s 3891(the)s -4244(cases)s 4804(that)s 5226(it)s 5423(does)s 5918(not)s -6289(lie)s 6587(within)s 7260(are)s 7612(selected,)s 8493(that)s -8916(is)s 0 12387(all)m 293(right)s 804(too.)s 240 fnt5 -0 11594(3.29.)m 591(@Moment)s -[ /Dest /LOUTmoment /DEST pdfmark -240 fnt1 480 11162(The)m 908(prede\207ned)s -1976(symbol)s 220 fnt2 2736 11159(@Moment)m -[ /Dest /LOUT16_4080_pre_mome_1 /DEST pdfmark -240 fnt1 3808 11162(has)m -4178(the)s 4526(follo)s 6(wing)k 5503(de\207nition:)s 220 fnt2 -480 10661(def @Moment)m 480 10373( named @T)m 26(ag {})k 480 10085( named @Second {})m 480 9797( named @Min)m 2(ute {})k -480 9509( named @Hour {})m 480 9221( named @Da)m 6(y {})k 480 8933( named @Month {})m 480 8645( named @Y)m 30(ear {})k -480 8357( named @Centur)m -6(y {})k 480 8069( named @W)m 6(eekDa)k 6(y {})k -480 7781( named @Y)m 30(earDa)k 6(y {})k 480 7493( named @Da)m 6(ylightSa)k 4(ving {})k -480 7205({})m 240 fnt1 0 6711(It)m 208(may)s 677(be)s -962(used)s 1463(lik)s 2(e)k 1878(an)s 3(y)k -2278(other)s 2832(symbol.)s 3705(Lout)s 4220(pro)s 3(vides)k -5095(an)s 5381(in)s 9(v)k 4(ocation)k 6439(of)s -220 fnt2 6713 6708(@Moment)m 240 fnt1 7788 6711(with)m 8273(tag)s -220 fnt2 8622 6708(no)m 3(w)k 240 fnt1 9019 6711(,)m -0 6423(whose)m 668(other)s 1219(parameters)s 2317(are)s 2664(numbers)s -3539(encoding)s 4470(the)s 4818(current)s 5554(date)s 6008(and)s -6412(time:)s 220 fnt2 480 5858(@Second)m 240 fnt1 2482 5861(the)m -2830(current)s 3566(second,)s 4338(usually)s 5083(between)s 5937(00)s -6232(and)s 6636(59)s 220 fnt2 480 5527(@Min)m 2(ute)k -240 fnt1 2482 5530(the)m 2830(current)s 3566(minute,)s 4337(between)s -5191(00)s 5486(and)s 5890(59)s 220 fnt2 480 5217(@Hour)m -240 fnt1 2482 5220(the)m 2830(current)s 3566(hour)s 9(,)k -4103(between)s 4957(00)s 5252(and)s 5656(23)s 220 fnt2 -480 4907(@Da)m 6(y)k 240 fnt1 2482 4910(the)m 2830(current)s -3566(day)s 3966(of)s 4237(the)s 4585(month,)s 5304(between)s -6158(1)s 6313(and)s 6717(31)s 220 fnt2 480 4578(@Month)m -240 fnt1 2482 4581(the)m 2830(current)s 3566(month,)s 4285(between)s -5139(1)s 5294(\(January\))s 6245(and)s 6649(12)s 6943(\(December\))s -220 fnt2 480 4249(@Y)m 30(ear)k 240 fnt1 2482 4252(the)m -2830(current)s 3566(year)s 4037(of)s 4308(the)s 4656(century)s 15(,)k -5465(between)s 6319(00)s 6614(and)s 7018(99)s 220 fnt2 -480 3920(@Centur)m -6(y)k 240 fnt1 2482 3923(the)m 2830(current)s -3566(century)s 15(,)k 4375(e.g.)s 4765(19)s 5056(or)s -5315(20)s 220 fnt2 480 3591(@W)m 6(eekDa)k 6(y)k -240 fnt1 2482 3594(the)m 2830(current)s 3566(day)s 3966(of)s -4237(the)s 4585(week,)s 5197(between)s 6051(1)s 6206(\(Sunday\))s -7132(and)s 7536(7)s 7704(\(Saturday\))s 220 fnt2 480 3260(@Y)m 30(earDa)k 6(y)k -240 fnt1 2482 3263(the)m 2830(current)s 3566(day)s 3966(of)s +220 fnt2 +480 13189(@Second)m 240 fnt1 2482 13192(the)m 2830(current)s 3566(second,)s +4338(usually)s 5083(between)s 5937(00)s 6232(and)s 6636(59)s +220 fnt2 480 12858(@Min)m 2(ute)k 240 fnt1 2482 12861(the)m +2830(current)s 3566(minute,)s 4337(between)s 5191(00)s 5486(and)s +5890(59)s 220 fnt2 480 12548(@Hour)m 240 fnt1 2482 12551(the)m +2830(current)s 3566(hour)s 9(,)k 4103(between)s 4957(00)s +5252(and)s 5656(23)s 220 fnt2 480 12238(@Da)m 6(y)k +240 fnt1 2482 12241(the)m 2830(current)s 3566(day)s 3966(of)s +4237(the)s 4585(month,)s 5304(between)s 6158(1)s 6313(and)s +6717(31)s 220 fnt2 480 11909(@Month)m 240 fnt1 2482 11912(the)m +2830(current)s 3566(month,)s 4285(between)s 5139(1)s 5294(\(January\))s +6245(and)s 6649(12)s 6943(\(December\))s 220 fnt2 480 11580(@Y)m 30(ear)k +240 fnt1 2482 11583(the)m 2830(current)s 3566(year)s 4037(of)s +4308(the)s 4656(century)s 15(,)k 5465(between)s 6319(00)s +6614(and)s 7018(99)s 220 fnt2 480 11251(@Centur)m -6(y)k +240 fnt1 2482 11254(the)m 2830(current)s 3566(century)s 15(,)k +4375(e.g.)s 4765(19)s 5056(or)s 5315(20)s 220 fnt2 +480 10922(@W)m 6(eekDa)k 6(y)k 240 fnt1 2482 10925(the)m +2830(current)s 3566(day)s 3966(of)s 4237(the)s 4585(week,)s +5197(between)s 6051(1)s 6206(\(Sunday\))s 7132(and)s 7536(7)s +7704(\(Saturday\))s 220 fnt2 480 10591(@Y)m 30(earDa)k 6(y)k +240 fnt1 2482 10594(the)m 2830(current)s 3566(day)s 3966(of)s 4237(the)s 4585(year)s 9(,)k 5094(between)s 5948(0)s -6123(and)s 6527(365)s 220 fnt2 480 2931(@Da)m 6(ylightSa)k 4(ving)k -240 fnt1 2482 2934(an)m 2784(implementation-dependent)s 5427(number)s 6237(that)s -6675(may)s 7160(encode)s 7914(the)s 8282(daylight)s 2482 2646(sa)m 4(ving)k +6123(and)s 6527(365)s 220 fnt2 480 10262(@Da)m 6(ylightSa)k 4(ving)k +240 fnt1 2482 10265(an)m 2784(implementation-dependent)s 5427(number)s 6237(that)s +6675(may)s 7160(encode)s 7914(the)s 8282(daylight)s 2482 9977(sa)m 4(ving)k 3156(currently)s 4072(in)s 4315(ef)s 6(fect)k -[ /Dest /LOUT16_4080_pre_mome_2 /DEST pdfmark -100 2085(Unix)m -675(manual)s 1474(entries)s 2202(state)s 2735(that)s 220 fnt2 -3194 2082(@Second)m 240 fnt1 4250 2085(can)m 4679(be)s 5002(as)s -5292(high)s 5816(as)s 6107(61,)s 6494(to)s 6774(allo)s 6(w)k -7393(for)s 7772(leap)s 8264(seconds.)s 0 1797(Judicious)m 955(use)s -1330(of)s 1601(databases)s 2568(can)s 2957(con)s 9(v)k 3(ert)k -3722(these)s 4269(numbers)s 5144(into)s 5569(useful)s 6208(dates.)s -6863(F)s 3(or)k 7252(e)s 3(xample,)k 220 fnt2 -480 1296(@Moment&&no)m 3(w @Open { @Da)k 6(y {@Months&&@Month}, @Centur)k -6(y{@Y)k 30(ear} })k -240 fnt1 0 797(produces)m 915(something)s 1965(lik)s 2(e)k -2377(16)s 2670(October)s 9(,)k 3538(2002)s 4072(gi)s 6(v)k 3(en)k -4652(a)s 4818(suitable)s 5617(database)s 6496(of)s 6767(months.)s +[ /Dest /LOUT19_4213_pre_mome_2 /DEST pdfmark +0 9416(Unix)m +519(manual)s 1262(entries)s 1934(state)s 2411(that)s 220 fnt2 +2814 9413(@Second)m 240 fnt1 3813 9416(can)m 4186(be)s 4453(as)s +4687(high)s 5155(as)s 5389(61,)s 5720(to)s 5944(allo)s 6(w)k +6507(for)s 6830(leap)s 7265(seconds.)s 8171(Judicious)s 0 9128(use)m +375(of)s 646(databases)s 1613(can)s 2002(con)s 9(v)k 3(ert)k +2767(these)s 3314(numbers)s 4189(into)s 4614(useful)s 5253(dates.)s +5908(F)s 3(or)k 6297(e)s 3(xample,)k 220 fnt2 +480 8627(@Moment&&no)m 3(w @Open { @Da)k 6(y {@Months&&@Month}, @Centur)k -6(y{@Y)k 30(ear} })k +240 fnt1 0 8129(produces)m 915(something)s 1965(lik)s 2(e)k +2377(22)s 2671(No)s 3(v)k 3(ember)k 9(,)k +3773(2002)s 4307(gi)s 6(v)k 3(en)k 4887(a)s +5053(suitable)s 5852(database)s 6731(of)s 7002(months.)s 240 fnt5 +0 7336(3.31.)m 591(@Null)s +[ /Dest /LOUTnull /DEST pdfmark +240 fnt1 480 6904(This)m 979(symbol)s + +[ /Dest /LOUT19_4213_pre_null_1 /DEST pdfmark +1762(pro)s 3(vides)k 2657(a)s 2846(con)s 9(v)k 3(enient)k +3967(w)s 2(ay)k 4441(to)s 4703(remo)s 3(v)k 3(e)k +5493(unw)s 2(anted)k 6503(concatenation)s 7911(symbols.)s 8896(If)s +0 6616(there)m 544(is)s 765(a)s 942(concatenation)s 2339(symbol)s +3110(preceding)s 220 fnt2 4117 6613(@Null)m 240 fnt1 4702 6616(,)m +4821(the)s 220 fnt2 5180 6613(@Null)m 240 fnt1 5836 6616(and)m +6252(the)s 6611(concatenation)s 8007(symbol)s 8779(are)s 0 6328(both)m +482(deleted.)s 1335(Otherwise,)s 2423(if)s 2638(there)s 3170(is)s +3379(a)s 3544(follo)s 6(wing)k 4519(concatenation)s 5903(symbol,)s +6714(it)s 6905(and)s 7307(the)s 220 fnt2 7654 6325(@Null)m +240 fnt1 8298 6328(are)m 8643(both)s 0 6040(deleted.)m 794(Otherwise,)s +220 fnt2 1883 6037(@Null)m 240 fnt1 2528 6040(becomes)m 3416(an)s +3699(empty)s 4351(object.)s 480 5666(These)m 1107(rules)s 1622(apply)s +2208(to)s 2447(a)s 2613(fully)s 3118(parenthesized)s 4490(v)s 3(ersion)k +5248(of)s 5519(the)s 5867(e)s 3(xpression.)k 7051(F)s 3(or)k +7440(e)s 3(xample,)k 8354(in)s 220 fnt2 480 5165(...)m 13( //1vx @Null |0.5i ...)k +240 fnt1 0 4710(it)m 202(is)s 423(the)s 782(horizontal)s +1817(concatenation)s 3213(symbol)s 3984(follo)s 6(wing)k 220 fnt2 +4972 4707(@Null)m 240 fnt1 5628 4710(that)m 6057(disappears,)s 7184(because)s +8008(in)s 8262(the)s 8621(fully)s 0 4422(parenthesized)m 1372(v)s 3(ersion)k +220 fnt2 480 3921(...)m 13( //1vx { @Null |0.5i ...)k 13( })k 240 fnt1 +0 3427(there)m 533(is)s 743(no)s 1036(concatenation)s 2421(symbol)s +3181(preceding)s 4177(the)s 220 fnt2 4525 3424(@Null)m 240 fnt1 +5110 3427(.)m 240 fnt5 0 2634(3.32.)m 591(@Galley)s 1534(and)s +1975(@F)s 6(or)k 4(ceGalley)k +[ /Dest /LOUTgalley /DEST pdfmark +240 fnt1 480 2157(These)m +1131(symbols)s +[ /Dest /LOUT19_4213_pre_gall_1 /DEST pdfmark +[ /Dest /LOUT19_4213_pre_gall_2 /DEST pdfmark +2004(both)s 2511(act)s 2874(as)s 3148(a)s +3338(placeholder)s 4538(for)s 4900(a)s 5090(g)s 1(alle)k 3(y)k 15(.)k +5844(That)s 6366(is,)s 6656(the)s 3(y)k 7144(may)s +7634(be)s 7940(replaced)s 8832(by)s 0 1869(components)m 1210(of)s +1483(a)s 1651(g)s 1(alle)k 3(y)k 15(.)k +2383(In)s 2641(the)s 2991(case)s 3460(of)s 220 fnt2 +3734 1866(@F)m 6(orceGalle)k 4(y)k 240 fnt1 5189 1869(the)m +5539(g)s 1(alle)k 3(y)k 6175(will)s 6604(then)s +7075(ha)s 4(v)k 3(e)k 7578(a)s 7746(forcing)s +8492(g)s 1(alle)k 3(y)k 0 1581(ef)m 6(fect)k +583(at)s 802(this)s 1184(point)s 1723(although)s 2604(it)s +2783(need)s 3280(not)s 3632(be)s 3901(declared)s 4754(using)s +220 fnt2 5313 1578(f)m 6(orce into)k 240 fnt1 6202 1581(.)m +6353(See)s 6740(Section)s 7501(2.7)s 7835(for)s 8160(a)s +8312(detailed)s 0 1293(discussion)m 1054(of)s 1325(g)s 1(alle)k 3(ys,)k +2105(forcing)s 2848(g)s 1(alle)k 3(ys,)k 3628(and)s +4032(tar)s 4(gets.)k grestore gsave 1417 -15423 translate @@ -14065,12 +14677,13 @@ pgsave restore showpage -%%Page: 60 66 +%%Page: 62 68 %%BeginPageSetup %%PageResources: font Times-Roman %%+ font Times-Bold %%+ font Times-Italic %%+ font Helvetica +%%+ font Symbol /pgsave save def %%IncludeResource: font Times-Roman /Times-Romanfnt1 vec2 /Times-Roman LoutRecode @@ -14084,144 +14697,162 @@ %%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 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -240 fnt5 1417 -1583(60)m 240 fnt6 7498 -1580(Chapter)m 8348(3.)s -8622(Pr)s 8(ede\207ned)k 9717(symbols)s gsave +240 fnt5 1417 -1583(62)m +240 fnt6 7498 -1580(Chapter)m 8348(3.)s 8622(Pr)s 8(ede\207ned)k +9717(symbols)s gsave 1417 -15423 translate 240 fnt1 9066 13368 0 13368 240 288 60 LoutGraphic gsave 0 LoutMargSet grestore -240 fnt5 0 13203(3.30.)m -591(@Null)s -[ /Dest /LOUTnull /DEST pdfmark -240 fnt1 480 12771(This)m 979(symbol)s -[ /Dest /LOUT16_4080_pre_null_1 /DEST pdfmark -1762(pro)s 3(vides)k -2657(a)s 2846(con)s 9(v)k 3(enient)k 3967(w)s 2(ay)k -4441(to)s 4703(remo)s 3(v)k 3(e)k 5493(unw)s 2(anted)k -6503(concatenation)s 7911(symbols.)s 8896(If)s 0 12483(there)m 544(is)s -765(a)s 942(concatenation)s 2339(symbol)s 3110(preceding)s 220 fnt2 -4117 12480(@Null)m 240 fnt1 4702 12483(,)m 4821(the)s 220 fnt2 -5180 12480(@Null)m 240 fnt1 5836 12483(and)m 6252(the)s 6611(concatenation)s -8007(symbol)s 8779(are)s 0 12195(both)m 482(deleted.)s 1335(Otherwise,)s -2423(if)s 2638(there)s 3170(is)s 3379(a)s 3544(follo)s 6(wing)k -4519(concatenation)s 5903(symbol,)s 6714(it)s 6905(and)s 7307(the)s -220 fnt2 7654 12192(@Null)m 240 fnt1 8298 12195(are)m 8643(both)s -0 11907(deleted.)m 794(Otherwise,)s 220 fnt2 1883 11904(@Null)m 240 fnt1 -2528 11907(becomes)m 3416(an)s 3699(empty)s 4351(object.)s 480 11533(These)m -1107(rules)s 1622(apply)s 2208(to)s 2447(a)s 2613(fully)s -3118(parenthesized)s 4490(v)s 3(ersion)k 5248(of)s 5519(the)s -5867(e)s 3(xpression.)k 7051(F)s 3(or)k 7440(e)s 3(xample,)k -8354(in)s 220 fnt2 480 11032(...)m 13( //1vx @Null |0.5i ...)k 240 fnt1 -0 10577(it)m 202(is)s 423(the)s 782(horizontal)s 1817(concatenation)s -3213(symbol)s 3984(follo)s 6(wing)k 220 fnt2 4972 10574(@Null)m -240 fnt1 5628 10577(that)m 6057(disappears,)s 7184(because)s 8008(in)s -8262(the)s 8621(fully)s 0 10289(parenthesized)m 1372(v)s 3(ersion)k -220 fnt2 480 9788(...)m 13( //1vx { @Null |0.5i ...)k 13( })k 240 fnt1 -0 9294(there)m 533(is)s 743(no)s 1036(concatenation)s 2421(symbol)s -3181(preceding)s 4177(the)s 220 fnt2 4525 9291(@Null)m 240 fnt1 -5110 9294(.)m 240 fnt5 0 8501(3.31.)m 591(@Galley)s 1534(and)s -1975(@F)s 6(or)k 4(ceGalley)k -[ /Dest /LOUTgalley /DEST pdfmark -240 fnt1 480 8024(These)m -1131(symbols)s -[ /Dest /LOUT16_4080_pre_gall_1 /DEST pdfmark - -[ /Dest /LOUT16_4080_pre_gall_2 /DEST pdfmark -2004(both)s 2511(act)s 2874(as)s 3148(a)s -3338(placeholder)s 4538(for)s 4900(a)s 5090(g)s 1(alle)k 3(y)k 15(.)k -5844(That)s 6366(is,)s 6656(the)s 3(y)k 7144(may)s -7634(be)s 7940(replaced)s 8832(by)s 0 7736(components)m 1210(of)s -1483(a)s 1651(g)s 1(alle)k 3(y)k 15(.)k -2383(In)s 2641(the)s 2991(case)s 3460(of)s 220 fnt2 -3734 7733(@F)m 6(orceGalle)k 4(y)k 240 fnt1 5189 7736(the)m -5539(g)s 1(alle)k 3(y)k 6175(will)s 6604(then)s -7075(ha)s 4(v)k 3(e)k 7578(a)s 7746(forcing)s -8492(g)s 1(alle)k 3(y)k 0 7448(ef)m 6(fect)k -583(at)s 802(this)s 1184(point)s 1723(although)s 2604(it)s -2783(need)s 3280(not)s 3632(be)s 3901(declared)s 4754(using)s -220 fnt2 5313 7445(f)m 6(orce into)k 240 fnt1 6202 7448(.)m -6353(See)s 6740(Section)s 7501(2.7)s 7835(for)s 8160(a)s -8312(detailed)s 0 7160(discussion)m 1054(of)s 1325(g)s 1(alle)k 3(ys,)k -2105(forcing)s 2848(g)s 1(alle)k 3(ys,)k 3628(and)s -4032(tar)s 4(gets.)k 240 fnt5 0 6367(3.32.)m 591(@BeginHeaderComponent,)s -3466(@EndHeaderComponent,)s 6182(@SetHeaderComponent,)s 591 6079(and)m 1032(@ClearHeaderComponent)s +240 fnt5 0 13203(3.33.)m 591(@BeginHeaderComponent,)s +3466(@EndHeaderComponent,)s 6182(@SetHeaderComponent,)s 591 12915(and)m 1032(@ClearHeaderComponent)s [ /Dest /LOUTheader_comp /DEST pdfmark 240 fnt1 -480 5602(Informally)m 15(,)k 1597(header)s 2298(components)s 3510(are)s +480 12438(Informally)m 15(,)k 1597(header)s 2298(components)s 3510(are)s 3861(running)s 4663(headers)s 5448(that)s 5871(appear)s 6572(at)s 6808(the)s -[ /Dest /LOUT16_4080_pre_head_1 /DEST pdfmark +[ /Dest /LOUT19_4213_pre_head_1 /DEST pdfmark 7160(top)s 7523(of)s 7798(the)s 8151(displayed)s -0 5314(se)m 3(gments)k 936(of)s 1204(g)s 1(alle)k 3(ys.)k +0 12150(se)m 3(gments)k 936(of)s 1204(g)s 1(alle)k 3(ys.)k 2039(The)s 3(y)k 2579(are)s 2923(used,)s 3467(for)s 3802(e)s 3(xample,)k 4714(by)s 5005(the)s 220 fnt2 -5350 5311(@Tb)m 4(l)k 240 fnt1 5917 5314(table)m 6434(formatting)s -7493(package)s 8330(to)s 8566(place)s 0 5026(running)m 798(headers)s +5350 12147(@Tb)m 4(l)k 240 fnt1 5917 12150(table)m 6434(formatting)s +7493(package)s 8330(to)s 8566(place)s 0 11862(running)m 798(headers)s 1579(at)s 1811(the)s 2159(top)s 2518(of)s 2789(each)s 3284(page)s 3792(of)s 4063(a)s 4229(multi-page)s 5320(table,)s -5891(after)s 6387(the)s 6735(\207rst)s 7166(page.)s 480 4652(F)m 3(ormally)k 15(,)k +5891(after)s 6387(the)s 6735(\207rst)s 7166(page.)s 480 11488(F)m 3(ormally)k 15(,)k 1431(a)s 1583(header)s 2266(component)s 3376(of)s 3633(a)s 3785(g)s 1(alle)k 3(y)k 4405(is)s 4601(an)s 4870(ordinary)s 5720(component)s 6830(of)s 7087(a)s 7239(g)s 1(alle)k 3(y)k -7859(\(Section)s 8698(2.7\))s 0 4364(together)m 845(with)s 1330(an)s +7859(\(Section)s 8698(2.7\))s 0 11200(together)m 845(with)s 1330(an)s 1616(indication)s 2631(that)s 3052(the)s 3403(component)s 4530(is)s 4742(a)s 4911(header)s 5611(component.)s 6841(When)s 7473(printed,)s -8260(a)s 8429(header)s 0 4076(component)m 1125(looks)s 1696(e)s 3(xactly)k +8260(a)s 8429(header)s 0 10912(component)m 1125(looks)s 1696(e)s 3(xactly)k 2438(lik)s 2(e)k 2851(it)s 3045(w)s 2(ould)k 3701(ha)s 4(v)k 3(e)k 4203(done)s 4726(as)s 4977(an)s 5262(ordinary)s 6127(component;)s 7304(the)s 7653(dif)s 6(ference)k -8671(is)s 8883(in)s 0 3788(whether)m 830(the)s 1178(component)s +8671(is)s 8883(in)s 0 10624(whether)m 830(the)s 1178(component)s 2302(is)s 2512(printed)s 3247(at)s 3479(all,)s 3824(and)s -4228(if)s 4445(so)s 4711(where.)s 480 3414(Ev)m 3(ery)k +4228(if)s 4445(so)s 4711(where.)s 480 10250(Ev)m 3(ery)k 1109(non-header)s 2253(component)s 3384(of)s 3663(e)s 6(v)k 3(ery)k 4246(g)s 1(alle)k 3(y)k 4888(has)s 5266(associated)s 6313(with)s 6803(it)s 7002(a)s 7176(sequence)s 8116(of)s -8395(zero)s 8867(or)s 0 3126(more)m 553(header)s 1257(components.)s +8395(zero)s 8867(or)s 0 9962(more)m 553(header)s 1257(components.)s 2585(Whene)s 6(v)k 3(er)k 3625(a)s 3798(g)s 1(alle)k 3(y)k 4439(attaches)s 5266(to)s 5511(a)s 5684(tar)s 4(get,)k 6337(and)s 6748(the)s 7102(tar)s 4(get)k 7708(does)s -8205(not)s 8578(itself)s 0 2838(occup)m 2(y)k 736(an)s +8205(not)s 8578(itself)s 0 9674(occup)m 2(y)k 736(an)s 1010(entire)s 1601(component)s 2716(of)s 2979(the)s 3318(enclosing)s 4280(g)s 1(alle)k 3(y)k 15(,)k 4943(copies)s 5597(of)s 5859(the)s 6199(header)s 6887(components)s 8086(associated)s -0 2550(with)m 482(the)s 830(\207rst)s 1261(ordinary)s 2125(component)s +0 9386(with)m 482(the)s 830(\207rst)s 1261(ordinary)s 2125(component)s 3249(to)s 3488(be)s 3770(promoted)s 4745(into)s 5170(that)s 5588(tar)s 4(get)k 6187(are)s 6534(promoted)s 7509(into)s -7934(it)s 8126(\207rst.)s 480 2176(The)m 914(condition)s 1881(`and)s +7934(it)s 8126(\207rst.)s 480 9012(The)m 914(condition)s 1881(`and)s 2370(the)s 2724(tar)s 4(get)k 3329(does)s 3825(not)s 4197(itself)s 4751(occup)s 2(y)k 5501(an)s 5790(entire)s -6395(component)s 7525(of)s 7802(the)s 8156(enclosing)s 0 1888(g)m 1(alle)k 3(y')k +6395(component)s 7525(of)s 7802(the)s 8156(enclosing)s 0 8724(g)m 1(alle)k 3(y')k 704(ensures)s 1484(that,)s 1961(for)s 2311(e)s 3(xample,)k 3237(when)s 3825(part)s 4268(of)s 4551(a)s 4729(section)s 5475(has)s 5857(header)s 6566(components,)s 7842(these)s 8401(are)s -8760(not)s 0 1600(printed)m 739(where)s 1384(the)s 1736(section)s +8760(not)s 0 8436(printed)m 739(where)s 1384(the)s 1736(section)s 2475(is)s 2689(promoted)s 3669(into)s 4098(its)s 4379(chapter)s 9(,)k 5184(b)s 4(ut)k 5551(rather)s 6171(where)s 6816(the)s -7168(chapter)s 7936(is)s 8151(promoted)s 0 1312(onto)m 481(pages.)s +7168(chapter)s 7936(is)s 8151(promoted)s 0 8148(onto)m 481(pages.)s 1193(If)s 1426(the)s 1777(tar)s 4(get)k 2379(occupies)s 3269(the)s 3620(whole)s 4264(component,)s 5438(then)s 5910(the)s 6260(incoming)s 7220(g)s 1(alle)k 3(y)k 7857(will)s -8286(not)s 8655(split)s 0 1024(at)m 232(all,)s 577(so)s +8286(not)s 8655(split)s 0 7860(at)m 232(all,)s 577(so)s 843(headers)s 1624(w)s 2(ould)k 2279(be)s 2561(of)s -2832(no)s 3125(interest)s 3887(there.)s 480 650(The)m 896(one)s +2832(no)s 3125(interest)s 3887(there.)s 480 7486(The)m 896(one)s 1286(remaining)s 2295(question)s 3151(is)s 3348(`Ho)s 6(w)k 3929(is)s 4126(the)s 4462(sequence)s 5383(of)s 5641(header)s -6326(components)s 7521(of)s 7780(each)s 8262(ordinary)s 0 362(component)m +6326(components)s 7521(of)s 7780(each)s 8262(ordinary)s 0 7198(component)m 1124(determined?')s 2477(By)s 2812(def)s 2(ault,)k 3580(the)s 3928(header)s 4626(components)s 5834(of)s 6106(one)s 6508(component)s -7632(are)s 7980(the)s 8328(same)s 8876(as)s +7632(are)s 7980(the)s 8328(same)s 8876(as)s 0 6910(those)m +561(of)s 832(the)s 1180(pre)s 6(vious)k 2049(component.)s +3277(W)s 19(e)k 3646(can)s 4035(sho)s 6(w)k +4589(this)s 4985(graphically)s 6114(as)s 6364(follo)s 6(ws:)k +240 fnt6 480 6411(C)m 167 fnt6 645 6324(i)m 240 fnt4 +773 6403(:)m 240 fnt6 903 6411(H)m 167 fnt4 1086 6319(1)m +240 fnt4 1163 6403(,)m 240 fnt6 1270 6411(H)m 167 fnt4 +1453 6319(2)m 240 fnt4 1544 6403(,)m 1651(\274)s 1949(,)s +240 fnt6 2056 6411(H)m 167 fnt6 2239 6324(n)m 240 fnt6 +480 6123(/)m 480 5835(C)m 167 fnt6 645 5748(i)m 167 fnt4 +711 5743(+)m 823(1)s 240 fnt4 972 5827(:)m 240 fnt6 +1102 5835(H)m 167 fnt4 1285 5743(1)m 240 fnt4 1362 5827(,)m +240 fnt6 1469 5835(H)m 167 fnt4 1652 5743(2)m 240 fnt4 +1743 5827(,)m 1850(\274)s 2148(,)s 240 fnt6 2255 5835(H)m +167 fnt6 2438 5748(n)m 240 fnt1 0 5292(which)m 642(may)s +1109(be)s 1391(read:)s 1909(`If)s 2218(ordinary)s 3083(component)s +240 fnt6 4208 5294(C)m 167 fnt6 4373 5207(i)m 240 fnt1 +4477 5292(has)m 4848(header)s 5545(component)s 6670(sequence)s 240 fnt6 +7604 5294(H)m 167 fnt4 7787 5202(1)m 240 fnt4 7864 5286(,)m +240 fnt6 7971 5294(H)m 167 fnt4 8154 5202(2)m 240 fnt4 +8245 5286(,)m 8352(\274)s 8650(,)s 240 fnt6 8757 5294(H)m +167 fnt6 8940 5207(n)m 240 fnt1 9019 5292(,)m 0 5004(then)m +468(its)s 743(successor)s 1718(component)s 240 fnt6 2841 5006(C)m +167 fnt6 3006 4919(i)m 167 fnt4 3072 4914(+)m 3184(1)s +240 fnt1 3308 5004(has)m 3677(header)s 4373(component)s 5496(sequence)s +240 fnt6 6428 5006(H)m 167 fnt4 6611 4914(1)m 240 fnt4 +6688 4998(,)m 240 fnt6 6795 5006(H)m 167 fnt4 6978 4914(2)m +240 fnt4 7069 4998(,)m 7176(\274)s 7474(,)s 240 fnt6 +7581 5006(H)m 167 fnt6 7764 4919(n)m 240 fnt1 7902 5004(also.)m 16(')k +8501(Using)s 0 4716(this)m 396(notation,)s 1287(we)s 1622(may)s +2088(no)s 6(w)k 2549(de\207ne)s 3190(the)s 3538(four)s +3996(symbols)s 4845(that)s 5263(af)s 6(fect)k 5859(header)s +6556(component)s 7680(sequences:)s 240 fnt6 480 4217(C)m 167 fnt6 +645 4130(i)m 240 fnt4 773 4209(:)m 240 fnt6 903 4217(H)m +167 fnt4 1086 4125(1)m 240 fnt4 1163 4209(,)m 240 fnt6 +1270 4217(H)m 167 fnt4 1453 4125(2)m 240 fnt4 1544 4209(,)m +1651(\274)s 1949(,)s 240 fnt6 2056 4217(H)m 167 fnt6 +2239 4130(n)m 240 fnt6 480 3929(/)m 480 3641(gap)m 220 fnt2 +905 3636(@BeginHeaderComponent)m 240 fnt6 3609 3641(H)m 167 fnt6 3792 3554(n)m +167 fnt4 3893 3549(+)m 4005(1)s 240 fnt6 480 3353(/)m +480 3065(C)m 167 fnt6 645 2978(i)m 167 fnt4 711 2973(+)m +823(1)s 240 fnt4 972 3057(:)m 240 fnt6 1102 3065(H)m +167 fnt4 1285 2973(1)m 240 fnt4 1362 3057(,)m 240 fnt6 +1469 3065(H)m 167 fnt4 1652 2973(2)m 240 fnt4 1743 3057(,)m +1850(\274)s 2148(,)s 240 fnt6 2255 3065(H)m 167 fnt6 +2438 2978(n)m 240 fnt4 2529 3057(,)m 240 fnt6 2636 3065(H)m +167 fnt6 2819 2978(n)m 167 fnt4 2920 2973(+)m 3032(1)s +240 fnt1 0 2522(That)m 478(is,)s 220 fnt2 723 2519(@BeginHeaderComponent)m +240 fnt1 3394 2522(occup)m 2(ying)k 4422(an)s 4684(entire)s + +[ /Dest /LOUT19_4213_pre_head_2 /DEST pdfmark +5263(component)s 6366(appends)s 7181(a)s 7326(header)s 8002(component)s +0 2234(to)m 255(the)s 619(sequence)s 1568(of)s 1856(the)s +2220(follo)s 6(wing)k 3213(ordinary)s 4093(components.)s 5431(When)s +6076(printed,)s 6876(this)s 7288(header)s 8002(component)s 0 1946(is)m +217(separated)s 1184(by)s 240 fnt6 1485 1948(gap)m 240 fnt1 +1905 1946(from)m 2436(the)s 2792(follo)s 6(wing)k 3776(component;)s +4959(if)s 240 fnt6 5183 1948(gap)m 240 fnt1 5603 1946(is)m +5820(empty)s 6480(it)s 6679(denotes)s 220 fnt2 7468 1943(0ie)m +240 fnt1 7819 1946(as)m 8076(usual)s 8644(with)s 0 1658(concatenation)m +1391(g)s 1(aps.)k 2000(The)s 2434(appearance)s 3572(of)s +3850(the)s 4204(header)s 4908(component)s 6039(will)s 6471(be)s +6760(e)s 3(xactly)k 7508(as)s 7764(it)s 7963(w)s 2(ould)k +8625(ha)s 4(v)k 3(e)k 0 1370(been)m 509(had)s +913(it)s 1105(occurred)s 1999(alone)s 2573(at)s 2805(that)s +3223(point,)s 3822(rather)s 4438(than)s 4907(after)s 220 fnt2 +5403 1367(@BeginHeaderComponent)m 240 fnt1 8035 1370(.)m 480 996(Ne)m 3(xt)k +1002(comes)s 220 fnt2 1664 993(@EndHeaderComponent)m 240 fnt1 4126 996(:)m + grestore gsave 1417 -15423 translate @@ -14239,13 +14870,14 @@ pgsave restore showpage -%%Page: 61 67 +%%Page: 63 69 %%BeginPageSetup %%PageResources: font Times-Roman %%+ font Times-Italic %%+ font Times-Bold %%+ font Symbol %%+ font Helvetica +%%+ font Courier /pgsave save def %%IncludeResource: font Times-Roman /Times-Romanfnt1 vec2 /Times-Roman LoutRecode @@ -14261,138 +14893,142 @@ %%IncludeResource: font Helvetica /Helveticafnt2 vec2 /Helvetica LoutRecode /fnt2 { /Helveticafnt2 LoutFont } def +%%IncludeResource: font Courier +/Courierfnt9 vec2 /Courier LoutRecode +/fnt9 { /Courierfnt9 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -240 fnt6 1417 -1580(3.32.)m 1991(@Be)s 9(ginHeaderComponent,)k 4781(@EndHeaderComponent,)s -7408(@SetHeaderComponent,)s 1991 -1868(and)m 2417(@ClearHeaderComponent)s 240 fnt5 10256 -1583(61)m -gsave +240 fnt6 1417 -1580(3.33.)m +1991(@Be)s 9(ginHeaderComponent,)k 4778(@EndHeaderComponent,)s 7402(@SetHeaderComponent,)s 1991 -1868(and)m +2417(@ClearHeaderComponent)s 240 fnt5 10250 -1583(63)m gsave 1417 -15423 translate -240 fnt1 9066 13080 0 12971 240 288 60 LoutGraphic +240 fnt1 9066 13080 0 12973 240 288 60 LoutGraphic gsave 1 LoutMargSet grestore -0 12917(those)m 561(of)s 832(the)s 1180(pre)s 6(vious)k -2049(component.)s 3277(W)s 19(e)k 3646(can)s 4035(sho)s 6(w)k -4589(this)s 4985(graphically)s 6114(as)s 6364(follo)s 6(ws:)k -240 fnt6 480 12418(C)m 167 fnt6 645 12331(i)m 240 fnt4 -773 12410(:)m 240 fnt6 903 12418(H)m 167 fnt4 1086 12326(1)m -240 fnt4 1163 12410(,)m 240 fnt6 1270 12418(H)m 167 fnt4 -1453 12326(2)m 240 fnt4 1544 12410(,)m 1651(\274)s 1949(,)s -240 fnt6 2056 12418(H)m 167 fnt6 2239 12331(n)m 240 fnt6 -480 12130(/)m 480 11842(C)m 167 fnt6 645 11755(i)m 167 fnt4 -711 11750(+)m 823(1)s 240 fnt4 972 11834(:)m 240 fnt6 -1102 11842(H)m 167 fnt4 1285 11750(1)m 240 fnt4 1362 11834(,)m -240 fnt6 1469 11842(H)m 167 fnt4 1652 11750(2)m 240 fnt4 -1743 11834(,)m 1850(\274)s 2148(,)s 240 fnt6 2255 11842(H)m -167 fnt6 2438 11755(n)m 240 fnt1 0 11299(which)m 642(may)s -1109(be)s 1391(read:)s 1909(`If)s 2218(ordinary)s 3083(component)s -240 fnt6 4208 11301(C)m 167 fnt6 4373 11214(i)m 240 fnt1 -4477 11299(has)m 4848(header)s 5545(component)s 6670(sequence)s 240 fnt6 -7604 11301(H)m 167 fnt4 7787 11209(1)m 240 fnt4 7864 11293(,)m -240 fnt6 7971 11301(H)m 167 fnt4 8154 11209(2)m 240 fnt4 -8245 11293(,)m 8352(\274)s 8650(,)s 240 fnt6 8757 11301(H)m -167 fnt6 8940 11214(n)m 240 fnt1 9019 11299(,)m 0 11011(then)m -468(its)s 743(successor)s 1718(component)s 240 fnt6 2841 11013(C)m -167 fnt6 3006 10926(i)m 167 fnt4 3072 10921(+)m 3184(1)s -240 fnt1 3308 11011(has)m 3677(header)s 4373(component)s 5496(sequence)s -240 fnt6 6428 11013(H)m 167 fnt4 6611 10921(1)m 240 fnt4 -6688 11005(,)m 240 fnt6 6795 11013(H)m 167 fnt4 6978 10921(2)m -240 fnt4 7069 11005(,)m 7176(\274)s 7474(,)s 240 fnt6 -7581 11013(H)m 167 fnt6 7764 10926(n)m 240 fnt1 7902 11011(also.)m 16(')k -8501(Using)s 0 10723(this)m 396(notation,)s 1287(we)s 1622(may)s -2088(no)s 6(w)k 2549(de\207ne)s 3190(the)s 3538(four)s -3996(symbols)s 4845(that)s 5263(af)s 6(fect)k 5859(header)s -6556(component)s 7680(sequences:)s 240 fnt6 480 10224(C)m 167 fnt6 -645 10137(i)m 240 fnt4 773 10216(:)m 240 fnt6 903 10224(H)m -167 fnt4 1086 10132(1)m 240 fnt4 1163 10216(,)m 240 fnt6 -1270 10224(H)m 167 fnt4 1453 10132(2)m 240 fnt4 1544 10216(,)m -1651(\274)s 1949(,)s 240 fnt6 2056 10224(H)m 167 fnt6 -2239 10137(n)m 240 fnt6 480 9936(/)m 480 9648(gap)m 220 fnt2 -905 9643(@BeginHeaderComponent)m 240 fnt6 3609 9648(H)m 167 fnt6 3792 9561(n)m -167 fnt4 3893 9556(+)m 4005(1)s 240 fnt6 480 9360(/)m -480 9072(C)m 167 fnt6 645 8985(i)m 167 fnt4 711 8980(+)m -823(1)s 240 fnt4 972 9064(:)m 240 fnt6 1102 9072(H)m -167 fnt4 1285 8980(1)m 240 fnt4 1362 9064(,)m 240 fnt6 -1469 9072(H)m 167 fnt4 1652 8980(2)m 240 fnt4 1743 9064(,)m -1850(\274)s 2148(,)s 240 fnt6 2255 9072(H)m 167 fnt6 -2438 8985(n)m 240 fnt4 2529 9064(,)m 240 fnt6 2636 9072(H)m -167 fnt6 2819 8985(n)m 167 fnt4 2920 8980(+)m 3032(1)s -240 fnt1 0 8529(That)m 478(is,)s 220 fnt2 723 8526(@BeginHeaderComponent)m -240 fnt1 3394 8529(occup)m 2(ying)k 4422(an)s 4684(entire)s - -[ /Dest /LOUT16_4080_pre_head_2 /DEST pdfmark -5263(component)s 6366(appends)s 7181(a)s 7326(header)s 8002(component)s -0 8241(to)m 255(the)s 619(sequence)s 1568(of)s 1856(the)s -2220(follo)s 6(wing)k 3213(ordinary)s 4093(components.)s 5431(When)s -6076(printed,)s 6876(this)s 7288(header)s 8002(component)s 0 7953(is)m -217(separated)s 1184(by)s 240 fnt6 1485 7955(gap)m 240 fnt1 -1905 7953(from)m 2436(the)s 2792(follo)s 6(wing)k 3776(component;)s -4959(if)s 240 fnt6 5183 7955(gap)m 240 fnt1 5603 7953(is)m -5820(empty)s 6480(it)s 6679(denotes)s 220 fnt2 7468 7950(0ie)m -240 fnt1 7819 7953(as)m 8076(usual)s 8644(with)s 0 7665(concatenation)m -1391(g)s 1(aps.)k 2000(The)s 2434(appearance)s 3572(of)s -3850(the)s 4204(header)s 4908(component)s 6039(will)s 6471(be)s -6760(e)s 3(xactly)k 7508(as)s 7764(it)s 7963(w)s 2(ould)k -8625(ha)s 4(v)k 3(e)k 0 7377(been)m 509(had)s -913(it)s 1105(occurred)s 1999(alone)s 2573(at)s 2805(that)s -3223(point,)s 3822(rather)s 4438(than)s 4907(after)s 220 fnt2 -5403 7374(@BeginHeaderComponent)m 240 fnt1 8035 7377(.)m 480 7003(Ne)m 3(xt)k -1002(comes)s 220 fnt2 1664 7000(@EndHeaderComponent)m 240 fnt1 4126 7003(:)m -240 fnt6 480 6508(C)m 167 fnt6 645 6421(i)m 240 fnt4 -773 6500(:)m 240 fnt6 903 6508(H)m 167 fnt4 1086 6416(1)m -240 fnt4 1163 6500(,)m 240 fnt6 1270 6508(H)m 167 fnt4 -1453 6416(2)m 240 fnt4 1544 6500(,)m 1651(\274)s 1949(,)s -240 fnt6 2056 6508(H)m 167 fnt6 2239 6421(n)m 240 fnt4 -2330 6500(,)m 240 fnt6 2437 6508(H)m 167 fnt6 2620 6421(n)m -167 fnt4 2721 6416(+)m 2833(1)s 240 fnt6 480 6220(/)m -220 fnt2 480 5927(@EndHeaderComponent)m 240 fnt6 480 5644(/)m 480 5356(C)m -167 fnt6 645 5269(i)m 167 fnt4 711 5264(+)m 823(1)s -240 fnt4 972 5348(:)m 240 fnt6 1102 5356(H)m 167 fnt4 -1285 5264(1)m 240 fnt4 1362 5348(,)m 240 fnt6 1469 5356(H)m -167 fnt4 1652 5264(2)m 240 fnt4 1743 5348(,)m 1850(\274)s -2148(,)s 240 fnt6 2255 5356(H)m 167 fnt6 2438 5269(n)m -240 fnt1 0 4813(That)m 520(is,)s 220 fnt2 809 4810(@EndHeaderComponent)m -240 fnt1 3353 4813(\(which)m 4097(has)s 4490(no)s 4805(parameters\))s -6003(occup)s 2(ying)k 7074(an)s -[ /Dest /LOUT16_4080_pre_head_3 /DEST pdfmark -7380(entire)s 8002(component)s -0 4525(deletes)m 722(the)s 1078(last)s 1477(header)s 2182(component.)s -3418(If)s 3656(the)s 4012(sequence)s 4953(is)s 5171(empty)s 15(,)k -5869(a)s 6043(w)s 2(arning)k 6886(message)s 7760(is)s -7978(printed)s 8722(and)s 0 4237(it)m 193(remains)s 1002(empty)s 15(.)k -220 fnt2 1751 4234(@BeginHeaderComponent)m 240 fnt1 4445 4237(and)m 220 fnt2 -4851 4234(@EndHeaderComponent)m 240 fnt1 7375 4237(are)m 7724(naturally)s 8629(used)s -0 3949(in)m 243(matching)s 1186(\(possibly)s 2117(nested\))s 2856(pairs,)s +240 fnt6 +480 12921(C)m 167 fnt6 645 12834(i)m 240 fnt4 773 12913(:)m +240 fnt6 903 12921(H)m 167 fnt4 1086 12829(1)m 240 fnt4 +1163 12913(,)m 240 fnt6 1270 12921(H)m 167 fnt4 1453 12829(2)m +240 fnt4 1544 12913(,)m 1651(\274)s 1949(,)s 240 fnt6 +2056 12921(H)m 167 fnt6 2239 12834(n)m 240 fnt4 2330 12913(,)m +240 fnt6 2437 12921(H)m 167 fnt6 2620 12834(n)m 167 fnt4 +2721 12829(+)m 2833(1)s 240 fnt6 480 12633(/)m 220 fnt2 +480 12340(@EndHeaderComponent)m 240 fnt6 480 12057(/)m 480 11769(C)m 167 fnt6 +645 11682(i)m 167 fnt4 711 11677(+)m 823(1)s 240 fnt4 +972 11761(:)m 240 fnt6 1102 11769(H)m 167 fnt4 1285 11677(1)m +240 fnt4 1362 11761(,)m 240 fnt6 1469 11769(H)m 167 fnt4 +1652 11677(2)m 240 fnt4 1743 11761(,)m 1850(\274)s 2148(,)s +240 fnt6 2255 11769(H)m 167 fnt6 2438 11682(n)m 240 fnt1 +0 11226(That)m 520(is,)s 220 fnt2 809 11223(@EndHeaderComponent)m 240 fnt1 +3353 11226(\(which)m 4097(has)s 4490(no)s 4805(parameters\))s 6003(occup)s 2(ying)k +7074(an)s +[ /Dest /LOUT19_4213_pre_head_3 /DEST pdfmark +7380(entire)s 8002(component)s 0 10938(deletes)m 722(the)s +1078(last)s 1477(header)s 2182(component.)s 3418(If)s 3656(the)s +4012(sequence)s 4953(is)s 5171(empty)s 15(,)k 5869(a)s +6043(w)s 2(arning)k 6886(message)s 7760(is)s 7978(printed)s +8722(and)s 0 10650(it)m 193(remains)s 1002(empty)s 15(.)k +220 fnt2 1751 10647(@BeginHeaderComponent)m 240 fnt1 4445 10650(and)m 220 fnt2 +4851 10647(@EndHeaderComponent)m 240 fnt1 7375 10650(are)m 7724(naturally)s 8629(used)s +0 10362(in)m 243(matching)s 1186(\(possibly)s 2117(nested\))s 2856(pairs,)s 3427(to)s 3666(introduce)s 4625(and)s 5029(subsequently)s 6333(retract)s -7001(a)s 7167(header)s 7864(component.)s 480 3575(Ne)m 3(xt)k -1002(comes)s 220 fnt2 1664 3572(@SetHeaderComponent)m 240 fnt1 4065 3575(:)m -240 fnt6 480 3080(C)m 167 fnt6 645 2993(i)m 240 fnt4 -773 3072(:)m 240 fnt6 903 3080(H)m 167 fnt4 1086 2988(1)m -240 fnt4 1163 3072(,)m 240 fnt6 1270 3080(H)m 167 fnt4 -1453 2988(2)m 240 fnt4 1544 3072(,)m 1651(\274)s 1949(,)s -240 fnt6 2056 3080(H)m 167 fnt6 2239 2993(n)m 240 fnt6 -480 2792(/)m 480 2504(gap)m 220 fnt2 905 2499(@SetHeaderComponent)m 240 fnt6 -3378 2504(H)m 167 fnt6 3561 2417(n)m 167 fnt4 3662 2412(+)m -3774(1)s 240 fnt6 480 2216(/)m 480 1928(C)m 167 fnt6 -645 1841(i)m 167 fnt4 711 1836(+)m 823(1)s 240 fnt4 -972 1920(:)m 240 fnt6 1102 1928(H)m 167 fnt6 1285 1841(n)m -167 fnt4 1386 1836(+)m 1498(1)s 220 fnt2 0 1382(@SetHeaderComponent)m -240 fnt1 2461 1385(clears)m 3068(an)s 3(y)k 3465(current)s +7001(a)s 7167(header)s 7864(component.)s 480 9988(Ne)m 3(xt)k +1002(comes)s 220 fnt2 1664 9985(@SetHeaderComponent)m 240 fnt1 4065 9988(:)m +240 fnt6 480 9493(C)m 167 fnt6 645 9406(i)m 240 fnt4 +773 9485(:)m 240 fnt6 903 9493(H)m 167 fnt4 1086 9401(1)m +240 fnt4 1163 9485(,)m 240 fnt6 1270 9493(H)m 167 fnt4 +1453 9401(2)m 240 fnt4 1544 9485(,)m 1651(\274)s 1949(,)s +240 fnt6 2056 9493(H)m 167 fnt6 2239 9406(n)m 240 fnt6 +480 9205(/)m 480 8917(gap)m 220 fnt2 905 8912(@SetHeaderComponent)m 240 fnt6 +3378 8917(H)m 167 fnt6 3561 8830(n)m 167 fnt4 3662 8825(+)m +3774(1)s 240 fnt6 480 8629(/)m 480 8341(C)m 167 fnt6 +645 8254(i)m 167 fnt4 711 8249(+)m 823(1)s 240 fnt4 +972 8333(:)m 240 fnt6 1102 8341(H)m 167 fnt6 1285 8254(n)m +167 fnt4 1386 8249(+)m 1498(1)s 220 fnt2 0 7795(@SetHeaderComponent)m +240 fnt1 2461 7798(clears)m 3068(an)s 3(y)k 3465(current)s 4201(header)s 4898(components)s -[ /Dest /LOUT16_4080_pre_head_4 /DEST pdfmark +[ /Dest /LOUT19_4213_pre_head_4 /DEST pdfmark 6107(and)s 6511(replaces)s 7344(them)s -7882(by)s 8176(one)s 8578(of)s 8850(its)s 0 1097(o)m 6(wn.)k +7882(by)s 8176(one)s 8578(of)s 8850(its)s 0 7510(o)m 6(wn.)k 571(Finally)s 1302(we)s 1637(ha)s 4(v)k 3(e)k -220 fnt2 2138 1094(@ClearHeaderComponent)m 240 fnt1 4733 1097(:)m +220 fnt2 2138 7507(@ClearHeaderComponent)m 240 fnt1 4733 7510(:)m 240 fnt6 +480 7011(C)m 167 fnt6 645 6924(i)m 240 fnt4 773 7003(:)m +240 fnt6 903 7011(H)m 167 fnt4 1086 6919(1)m 240 fnt4 +1163 7003(,)m 240 fnt6 1270 7011(H)m 167 fnt4 1453 6919(2)m +240 fnt4 1544 7003(,)m 1651(\274)s 1949(,)s 240 fnt6 +2056 7011(H)m 167 fnt6 2239 6924(n)m 240 fnt6 480 6723(/)m +220 fnt2 480 6430(@ClearHeaderComponent)m 240 fnt6 480 6147(/)m 480 5859(C)m +167 fnt6 645 5772(i)m 167 fnt4 711 5767(+)m 823(1)s +240 fnt4 972 5851(:)m 240 fnt1 0 5316(This)m 466(symbol)s +1216(clears)s 1813(an)s 3(y)k 2200(header)s 2886(components,)s +4140(lea)s 4(ving)k 4883(the)s 5221(sequence)s 6143(empty)s 15(.)k +6880(These)s +[ /Dest /LOUT19_4213_pre_head_5 /DEST pdfmark +7497(last)s 7878(tw)s 2(o)k 8277(symbols)s +0 5028(combine)m 880(less)s 1288(cleanly)s 2031(than)s 2499(the)s +2846(\207rst)s 3276(tw)s 2(o)k 3685(\(either)s 4366(will)s +4791(wreck)s 5435(an)s 3(y)k 5831(enclosing)s 220 fnt2 +6800 5025(@BeginHeaderCompo)m 9002(-)s 0 4737(nent)m 240 fnt1 491 4740(\211)m +220 fnt2 679 4737(@EndHeaderComponent)m 240 fnt1 3209 4740(pair\),)m 3774(b)s 4(ut)k +4145(the)s 3(y)k 4616(are)s 4971(useful)s 5618(in)s +5869(situations)s 6845(where)s 7493(the)s 7849(range)s 8444(of)s +8724(one)s 0 4452(header)m 697(is)s 907(terminated)s 1986(by)s +2280(the)s 2628(start)s 3098(of)s 3369(the)s 3717(range)s +4304(of)s 4575(the)s 4923(ne)s 3(xt.)k 480 4078(All)m +859(four)s 1337(symbols)s 2206(yield)s 2761(the)s 3129(v)s 6(alue)k +220 fnt2 3717 4075(@Null)m 240 fnt1 4382 4078(where)m 5041(the)s 3(y)k +5524(appear)s 13(.)k 6332(If)s 6582(the)s 3(y)k +7064(do)s 7377(not)s 7763(occup)s 2(y)k 8527(entire)s +0 3790(components)m 1208(of)s 1479(their)s 1976(g)s 1(alle)k 3(y)k 15(,)k +2648(the)s 3(y)k 3111(are)s 3458(silently)s 4215(ignored.)s +480 3416(Owing)m 1186(to)s 1426(limitations)s 2499(in)s 2743(the)s +3092(w)s 2(ay)k 3544(header)s 4242(components)s 5451(are)s +5799(implemented,)s 7155(the)s 7504(follo)s 6(wing)k 8482(object)s +0 3128(types)m 547(are)s 885(not)s 1242(allo)s 6(wed)k +2042(inside)s 2660(them,)s 3236(and)s 3631(Basser)s 4319(Lout)s +4821(will)s 5238(complain)s 6176(and)s 6571(quit)s 6994(if)s +7202(it)s 7385(\207nds)s 7893(an)s 3(y)k 8281(of)s +8542(them:)s 0 2840(g)m 1(alle)k 3(ys,)k 772(recepti)s 6(v)k 3(e)k +1686(or)s 1936(recursi)s 6(v)k 3(e)k 2850(symbols,)s +3747(cross)s 4280(references,)s 220 fnt2 5359 2837(@P)m 8(ageLabel)k +240 fnt1 6608 2840(,)m 220 fnt2 6707 2837(@HExpand)m 240 fnt1 +7820 2840(,)m 220 fnt2 7918 2837(@VExpand)m 240 fnt1 9019 2840(,)m +220 fnt2 0 2549(@HCo)m 3(v)k 5(er)k 240 fnt1 +958 2552(,)m 220 fnt2 1091 2549(@VCo)m 3(v)k 5(er)k +240 fnt1 2037 2552(,)m 2171(and)s 220 fnt2 2602 2549(@Scale)m +240 fnt1 3452 2552(when)m 4054(it)s 4273(has)s 4670(an)s +4980(empty)s 5659(left)s 6062(parameter)s 13(.)k 7134(In)s +7417(addition,)s 8335(if)s 8579(more)s 0 2264(than)m 498(three)s +1061(copies)s 1753(of)s 2054(the)s 2432(same)s 3008(running)s +3836(header)s 4563(are)s 4940(printed)s 5705(on)s 6031(the)s +6409(same)s 6986(page,)s 7575(their)s 8102(horizontal)s 0 1976(positions)m +919(will)s 1350(become)s 2155(confused,)s 3131(probably)s 4040(resulting)s +4934(in)s 5182(the)s 5535(apparent)s 6422(disappearance)s 7837(of)s +8113(all)s 8411(b)s 4(ut)k 8778(the)s 0 1688(last)m +402(three)s 947(copies.)s 1733(\(The)s 2252(magic)s 2900(number)s +3703(3)s 3878(can)s 4279(be)s 4572(increased)s 5544(by)s +5849(recompiling)s 7069(the)s 7428(Lout)s 7952(source)s 8644(with)s +0 1400(the)m 220 fnt9 348 1408(MAX_HCOPIES)m 240 fnt1 1860 1400(constant)m +2717(increased.\))s 240 fnt5 0 617(3.34.)m 591(@NotRe)s 3(v)k 2(ealed)k + +[ /Dest /LOUTnotrevealed /DEST pdfmark +240 fnt1 480 185(The)m 220 fnt2 938 182(@NotRe)m 6(v)k 5(ealed)k +240 fnt1 2495 185(symbol)m +[ /Dest /LOUT19_4213_pre_notr_1 /DEST pdfmark +3285(e)s 3(x)k 3(erts)k +3931(\207ne)s 4376(control)s 5138(o)s 3(v)k 3(er)k +5647(the)s 6026(process)s 6824(of)s 7125(e)s 3(xpanding)k +8204(recepti)s 6(v)k 3(e)k grestore gsave 1417 -15423 translate @@ -14410,12 +15046,11 @@ pgsave restore showpage -%%Page: 62 68 +%%Page: 64 70 %%BeginPageSetup %%PageResources: font Times-Roman %%+ font Times-Bold %%+ font Times-Italic -%%+ font Symbol %%+ font Helvetica /pgsave save def %%IncludeResource: font Times-Roman @@ -14427,8 +15062,6 @@ %%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 @@ -14436,115 +15069,129 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -240 fnt5 1417 -1583(62)m 240 fnt6 7498 -1580(Chapter)m 8348(3.)s -8622(Pr)s 8(ede\207ned)k 9717(symbols)s gsave +240 fnt5 1417 -1583(64)m +240 fnt6 7498 -1580(Chapter)m 8348(3.)s 8622(Pr)s 8(ede\207ned)k +9717(symbols)s gsave 1417 -15423 translate -240 fnt1 9066 13368 0 13261 240 288 60 LoutGraphic +240 fnt1 9066 13368 0 13259 240 288 60 LoutGraphic gsave 0 LoutMargSet grestore -240 fnt6 480 13209(C)m -167 fnt6 645 13122(i)m 240 fnt4 773 13201(:)m 240 fnt6 -903 13209(H)m 167 fnt4 1086 13117(1)m 240 fnt4 1163 13201(,)m -240 fnt6 1270 13209(H)m 167 fnt4 1453 13117(2)m 240 fnt4 -1544 13201(,)m 1651(\274)s 1949(,)s 240 fnt6 2056 13209(H)m -167 fnt6 2239 13122(n)m 240 fnt6 480 12921(/)m 220 fnt2 -480 12628(@ClearHeaderComponent)m 240 fnt6 480 12345(/)m 480 12057(C)m 167 fnt6 -645 11970(i)m 167 fnt4 711 11965(+)m 823(1)s 240 fnt4 -972 12049(:)m 240 fnt1 0 11514(This)m 466(symbol)s 1216(clears)s -1813(an)s 3(y)k 2200(header)s 2886(components,)s 4140(lea)s 4(ving)k -4883(the)s 5221(sequence)s 6143(empty)s 15(.)k 6880(These)s - -[ /Dest /LOUT16_4080_pre_head_5 /DEST pdfmark -7497(last)s 7878(tw)s 2(o)k 8277(symbols)s 0 11226(combine)m -880(less)s 1288(cleanly)s 2031(than)s 2499(the)s 2846(\207rst)s -3276(tw)s 2(o)k 3685(\(either)s 4366(will)s 4791(wreck)s -5435(an)s 3(y)k 5831(enclosing)s 220 fnt2 6800 11223(@BeginHeaderCompo)m -9002(-)s 0 10935(nent)m 240 fnt1 491 10938(\211)m 220 fnt2 -679 10935(@EndHeaderComponent)m 240 fnt1 3209 10938(pair\),)m 3774(b)s 4(ut)k -4145(the)s 3(y)k 4616(are)s 4971(useful)s 5618(in)s -5869(situations)s 6845(where)s 7493(the)s 7849(range)s 8444(of)s -8724(one)s 0 10650(header)m 697(is)s 907(terminated)s 1986(by)s -2280(the)s 2628(start)s 3098(of)s 3369(the)s 3717(range)s -4304(of)s 4575(the)s 4923(ne)s 3(xt.)k 480 10276(All)m -859(four)s 1337(symbols)s 2206(yield)s 2761(the)s 3129(v)s 6(alue)k -220 fnt2 3717 10273(@Null)m 240 fnt1 4382 10276(where)m 5041(the)s 3(y)k -5524(appear)s 13(.)k 6332(If)s 6582(the)s 3(y)k -7064(do)s 7377(not)s 7763(occup)s 2(y)k 8527(entire)s -0 9988(components)m 1208(of)s 1479(their)s 1976(g)s 1(alle)k 3(y)k 15(,)k -2648(the)s 3(y)k 3111(are)s 3458(silently)s 4215(ignored.)s -240 fnt5 0 9195(3.33.)m 591(@NotRe)s 3(v)k 2(ealed)k - -[ /Dest /LOUTnotrevealed /DEST pdfmark -240 fnt1 480 8763(The)m 220 fnt2 938 8760(@NotRe)m 6(v)k 5(ealed)k -240 fnt1 2495 8763(symbol)m -[ /Dest /LOUT16_4080_pre_notr_1 /DEST pdfmark -3285(e)s 3(x)k 3(erts)k -3931(\207ne)s 4376(control)s 5138(o)s 3(v)k 3(er)k -5647(the)s 6026(process)s 6824(of)s 7125(e)s 3(xpanding)k -8204(recepti)s 6(v)k 3(e)k 0 8475(symbols.)m 955(It)s -1152(may)s 1611(appear)s 2300(only)s 2773(within)s 3433(the)s -3774(body)s 4300(of)s 4564(a)s 4722(de\207nition,)s 5739(immediately)s -6979(follo)s 6(wing)k 7949(the)s 8289(name)s 8855(of)s -0 8187(a)m 166(recepti)s 6(v)k 3(e)k 1088(symbol.)s -1957(F)s 3(or)k 2346(e)s 3(xample:)k 220 fnt2 -480 7686(def A { @Galle)m 4(y })k 480 7110(def B { @Galle)m 4(y })k 480 6534(def ABList)m -480 6246({)m 480 5958( A)m 480 5670( // B @NotRe)m 6(v)k 5(ealed)k -480 5382( // ABList)m 480 5094(})m 240 fnt1 0 4600(The)m 424(meaning)s +0 13205(symbols.)m 955(It)s 1152(may)s +1611(appear)s 2300(only)s 2773(within)s 3433(the)s 3774(body)s +4300(of)s 4564(a)s 4722(de\207nition,)s 5739(immediately)s 6979(follo)s 6(wing)k +7949(the)s 8289(name)s 8855(of)s 0 12917(a)m 166(recepti)s 6(v)k 3(e)k +1088(symbol.)s 1957(F)s 3(or)k 2346(e)s 3(xample:)k +220 fnt2 480 12416(def A { @Galle)m 4(y })k 480 11840(def B { @Galle)m 4(y })k +480 11264(def ABList)m 480 10976({)m 480 10688( A)m 480 10400( // B @NotRe)m 6(v)k 5(ealed)k +480 10112( // ABList)m 480 9824(})m 240 fnt1 0 9330(The)m 424(meaning)s 1297(is)s 1503(that)s 1916(the)s 2260(symbol)s 3016(immediately)s -4259(preceding)s 220 fnt2 5251 4597(@NotRe)m 6(v)k 5(ealed)k -240 fnt1 6718 4600(,)m 220 fnt2 6821 4597(B)m 240 fnt1 -7015 4600(in)m 7253(this)s 7645(e)s 3(xample,)k 8555(is)s -8760(not)s 0 4312(re)m 6(v)k 3(ealed)k 851(to)s +4259(preceding)s 220 fnt2 5251 9327(@NotRe)m 6(v)k 5(ealed)k +240 fnt1 6718 9330(,)m 220 fnt2 6821 9327(B)m 240 fnt1 +7015 9330(in)m 7253(this)s 7645(e)s 3(xample,)k 8555(is)s +8760(not)s 0 9042(re)m 6(v)k 3(ealed)k 851(to)s 1083(g)s 1(alle)k 3(ys)k 1800(which)s 2435(encounter)s -220 fnt2 3431 4309(ABList)m 240 fnt1 4113 4312(while)m 4693(searching)s +220 fnt2 3431 9039(ABList)m 240 fnt1 4113 9042(while)m 4693(searching)s 5655(for)s 5986(tar)s 4(gets;)k 6723(to)s 6955(such)s 7444(g)s 1(alle)k 3(ys)k 8161(it)s 8345(appears)s -0 4024(that)m 220 fnt2 408 4021(ABList)m 240 fnt1 1086 4024(contains)m -220 fnt2 1923 4021(A)m 240 fnt1 2116 4024(only)m 15(,)k -2624(not)s 220 fnt2 2979 4021(B)m 240 fnt1 3117 4024(,)m +0 8754(that)m 220 fnt2 408 8751(ABList)m 240 fnt1 1086 8754(contains)m +220 fnt2 1923 8751(A)m 240 fnt1 2116 8754(only)m 15(,)k +2624(not)s 220 fnt2 2979 8751(B)m 240 fnt1 3117 8754(,)m 3213(hence)s 3816(only)s 4286(g)s 1(alle)k 3(ys)k -4999(tar)s 4(geted)k 5811(to)s 220 fnt2 6039 4021(A)m -240 fnt1 6233 4024(will)m 6648(e)s 3(xpand)k 220 fnt2 -7384 4021(ABList)m 240 fnt1 8013 4024(.)m 8166(Ho)s 6(we)k 6(v)k 3(er)k 9(,)k -0 3736(after)m 220 fnt2 496 3733(ABList)m 240 fnt1 1185 3736(is)m +4999(tar)s 4(geted)k 5811(to)s 220 fnt2 6039 8751(A)m +240 fnt1 6233 8754(will)m 6648(e)s 3(xpand)k 220 fnt2 +7384 8751(ABList)m 240 fnt1 8013 8754(.)m 8166(Ho)s 6(we)k 6(v)k 3(er)k 9(,)k +0 8466(after)m 220 fnt2 496 8463(ABList)m 240 fnt1 1185 8466(is)m 1395(e)s 3(xpanded)k 2368(by)s 2662(such)s 3158(a)s 3324(g)s 1(alle)k 3(y)k 15(,)k 220 fnt2 -3996 3733(B)m 240 fnt1 4194 3736(will)m 4620(be)s 4902(a)s 4(v)k 6(ailable)k +3996 8463(B)m 240 fnt1 4194 8466(will)m 4620(be)s 4902(a)s 4(v)k 6(ailable)k 5810(as)s 6060(a)s 6226(tar)s 4(get)k 6825(in)s 7068(the)s 7416(usual)s 7976(w)s 2(ay)k 15(.)k -480 3362(Apart)m 1081(from)s 1602(this)s 1994(meaning,)s 220 fnt2 -2922 3359(@NotRe)m 6(v)k 5(ealed)k 240 fnt1 4445 3362(has)m +480 8092(Apart)m 1081(from)s 1602(this)s 1994(meaning,)s 220 fnt2 +2922 8089(@NotRe)m 6(v)k 5(ealed)k 240 fnt1 4445 8092(has)m 4812(no)s 5102(ef)s 6(fect)k 5694(at)s 5923(all,)s 6264(and)s 6665(the)s 7010(body)s 7540(of)s 7808(the)s -8152(de\207nition)s 0 3074(may)m 501(be)s 819(understood)s 1976(by)s -2306(deleting)s 220 fnt2 3164 3071(@NotRe)m 6(v)k 5(ealed)k -240 fnt1 4727 3074(and)m 5166(an)s 3(y)k 5599(preceding)s -6630(space.)s 7361(Thus,)s 7982(the)s 8366(symbol)s 0 2786(preceding)m -220 fnt2 1001 2783(@NotRe)m 6(v)k 5(ealed)k 240 fnt1 -2533 2786(may)m 3004(ha)s 4(v)k 3(e)k 3510(named)s +8152(de\207nition)s 0 7804(may)m 501(be)s 819(understood)s 1976(by)s +2306(deleting)s 220 fnt2 3164 7801(@NotRe)m 6(v)k 5(ealed)k +240 fnt1 4727 7804(and)m 5166(an)s 3(y)k 5599(preceding)s +6630(space.)s 7361(Thus,)s 7982(the)s 8366(symbol)s 0 7516(preceding)m +220 fnt2 1001 7513(@NotRe)m 6(v)k 5(ealed)k 240 fnt1 +2533 7516(may)m 3004(ha)s 4(v)k 3(e)k 3510(named)s 4211(and)s 4620(right)s 5136(parameters)s 6239(in)s 6487(the)s 6840(usual)s 7405(w)s 2(ay;)k 7919(these)s 8471(w)s 2(ould)k -0 2498(follo)m 6(w)k 672(after)s 1168(the)s 220 fnt2 -1516 2495(@NotRe)m 6(v)k 5(ealed)k 240 fnt1 3043 2498(symbol.)m -480 2124(This)m 944(symbol)s 1692(w)s 2(as)k 2101(introduced)s +0 7228(follo)m 6(w)k 672(after)s 1168(the)s 220 fnt2 +1516 7225(@NotRe)m 6(v)k 5(ealed)k 240 fnt1 3043 7228(symbol.)m +480 6854(This)m 944(symbol)s 1692(w)s 2(as)k 2101(introduced)s 3169(to)s 3396(o)s 3(v)k 3(ercome)k 4377(a)s 4530(problem)s 5375(with)s 5845(\210oating)s 6616(\207gures)s 7306(treated)s -8001(as)s 8238(displays.)s 0 1836(It)m 205(turned)s 874(out)s +8001(as)s 8238(displays.)s 0 6566(It)m 205(turned)s 874(out)s 1240(to)s 1479(be)s 1761(essential)s 2638(to)s 2877(specify)s 3621(the)s 3969(layout)s 4627(of)s 4898(a)s 5064(column)s -5839(\(in)s 6161(part\))s 6660(as)s +5839(\(in)s 6161(part\))s 6660(as)s 220 fnt2 480 6065(@BodyT)m 26(e)k 6(xtPlace)k +480 5777(// @FigurePlace)m 480 5489(// @BodyT)m 26(e)k 6(xtPlace)k 480 5201(// @FigurePlace)m +480 4913(// @BodyT)m 26(e)k 6(xtPlace)k 480 4625(...)m 240 fnt1 +0 4174(so)m 256(that)s 664(\207gures)s 1356(could)s 1935(alternate)s +2802(with)s 3274(body)s 3798(te)s 3(xt)k 4202(do)s 6(wn)k +4776(the)s 5114(column.)s 5986(Ho)s 6(we)k 6(v)k 3(er)k 9(,)k +6935(some)s 7486(means)s 8138(w)s 2(as)k 8548(need)s +8998(-)s 0 3886(ed)m 291(to)s 538(ensure)s 1226(that)s +1652(in)s 1903(the)s 2259(absence)s 3080(of)s 3359(an)s 3(y)k +3764(\207gures)s 4474(there)s 5015(could)s 5613(only)s 6101(be)s +6391(one)s 220 fnt2 6801 3883(@BodyT)m 26(e)k 6(xtPlace)k +240 fnt1 8527 3886(in)m 8778(the)s 0 3598(column,)m 831(since)s +1385(otherwise)s 2377(v)s 6(arious)k 3132(problems)s 4080(arose,)s +4698(for)s 5042(e)s 3(xample)k 5912(the)s 220 fnt2 +6267 3595(@NP)m 240 fnt1 6851 3598(symbol)m 7618(merely)s 8342(causing)s +0 3310(a)m 174(skip)s 634(from)s 1167(one)s 220 fnt2 +1577 3307(@BodyT)m 26(e)k 6(xtPlace)k 240 fnt1 3303 3310(to)m +3551(the)s 3907(ne)s 3(xt)k 4385(in)s 4636(the)s +4992(same)s 5548(column,)s 6381(rather)s 7006(than)s 7483(to)s +7730(the)s 8087(\207rst)s 8526(in)s 8778(the)s 0 3022(ne)m 3(xt)k +490(column.)s 1394(Also,)s 1974(without)s 2787(this)s 3204(feature)s +3944(the)s 4314(optimal)s 5120(page)s 5650(break)s 2(er')k 13(s)k +6595(attempts)s 7477(to)s 7737(end)s 8163(a)s 8351(column)s +0 2734(early)m 545(w)s 2(ould)k 1214(be)s 1510(frustrated)s +2496(by)s 2805(Lout)s 3331(then)s 3814(disco)s 3(v)k 3(ering)k +4991(that)s 5423(plenty)s 6090(of)s 6375(space)s 6976(e)s 3(xisted)k +7722(at)s 7968(a)s 8149(follo)s 6(wing)k 220 fnt2 +0 2443(@BodyT)m 26(e)k 6(xtPlace)k 240 fnt1 1703 2446(in)m +1931(the)s 2263(same)s 2795(column.)s 3662(The)s 4074(solution)s +4887(is)s 5082(based)s 5669(on)s 220 fnt2 5951 2443(ABList)m +240 fnt1 6625 2446(abo)m 3(v)k 3(e;)k 7287(each)s +7767(occurrence)s 8855(of)s 220 fnt2 0 2155(@BodyT)m 26(e)k 6(xtPlace)k +240 fnt1 1712 2158(after)m 2201(a)s 220 fnt2 2361 2155(@FigurePlace)m +240 fnt1 3798 2158(is)m 4002(not)s 4361(re)s 6(v)k 3(ealed)k +5213(in)s 5449(the)s 5791(enclosing)s 6754(de\207nition,)s 7772(and)s +8169(so)s 8428(cannot)s 0 1870(be)m 282(found)s 899(by)s +1194(body)s 1728(te)s 3(xt)k 2144(g)s 1(alle)k 3(ys)k +2868(unless)s 3517(a)s 3684(\207gure)s 4298(has)s 4669(pre)s 6(viously)k +5727(attached)s 6581(to)s 6821(the)s 7169(preceding)s 220 fnt2 +8166 1867(@Figure)m 9002(-)s 0 1579(Place)m 240 fnt1 540 1582(.)m +240 fnt5 0 835(3.35.)m 591(The)s 1046(cr)s 4(oss)k +1614(r)s 4(efer)k 4(ence)k 2616(symbols)s 3494(&&)s +3941(and)s 4382(&&&)s +[ /Dest /LOUTcrossref /DEST pdfmark +240 fnt1 480 358(The)m 941(cross)s +1516(reference)s 2493(symbol)s 220 fnt2 3286 355(&&)m 240 fnt1 +3668 358(tak)m 2(es)k 4241(the)s 4623(name)s 5230(of)s +5534(a)s 5734(symbol)s 6527(\(not)s 7006(an)s 7322(object\))s +8068(for)s 8439(its)s 8749(left)s 0 70(parameter)m 9(,)k +1068(and)s 1489(an)s 1788(object)s 2449(whose)s 3134(v)s 6(alue)k +3718(must)s 4260(be)s 4559(a)s 4741(simple)s 5451(w)s 2(ord,)k +6064(or)s 6340(se)s 6(v)k 3(eral)k 7079(simple)s +7788(w)s 2(ords,)k 8495(for)s 8850(its)s grestore gsave 1417 -15423 translate -240 fnt1 0 0 0 0 240 288 60 LoutGraphic +240 fnt1 +0 0 0 0 240 288 60 LoutGraphic gsave 0 LoutMargSet grestore @@ -14558,7 +15205,7 @@ pgsave restore showpage -%%Page: 63 69 +%%Page: 65 71 %%BeginPageSetup %%PageResources: font Times-Roman %%+ font Times-Italic @@ -14581,156 +15228,159 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -240 fnt6 1417 -1580(3.33.)m 1991(@NotRe)s 3(vealed)k 240 fnt5 -10250 -1583(63)m gsave +240 fnt6 1417 -1580(3.35.)m +1991(The)s 2403(cr)s 10(oss)k 2953(r)s 8(efer)k 8(ence)k +3892(symbols)s 4718(&&)s 5137(and)s 5563(&&&)s 240 fnt5 +10250 -1583(65)m gsave 1417 -15423 translate -240 fnt1 9066 13412 0 13308 240 288 60 LoutGraphic +240 fnt1 9066 13368 0 13259 240 288 60 LoutGraphic gsave 1 LoutMargSet grestore -220 fnt2 480 13251(@BodyT)m 26(e)k 6(xtPlace)k -480 12963(// @FigurePlace)m 480 12675(// @BodyT)m 26(e)k 6(xtPlace)k 480 12387(// @FigurePlace)m -480 12099(// @BodyT)m 26(e)k 6(xtPlace)k 480 11811(...)m 240 fnt1 -0 11360(so)m 256(that)s 664(\207gures)s 1356(could)s 1935(alternate)s -2802(with)s 3274(body)s 3798(te)s 3(xt)k 4202(do)s 6(wn)k -4776(the)s 5114(column.)s 5986(Ho)s 6(we)k 6(v)k 3(er)k 9(,)k -6935(some)s 7486(means)s 8138(w)s 2(as)k 8548(need)s -8998(-)s 0 11072(ed)m 291(to)s 538(ensure)s 1226(that)s -1652(in)s 1903(the)s 2259(absence)s 3080(of)s 3359(an)s 3(y)k -3764(\207gures)s 4474(there)s 5015(could)s 5613(only)s 6101(be)s -6391(one)s 220 fnt2 6801 11069(@BodyT)m 26(e)k 6(xtPlace)k -240 fnt1 8527 11072(in)m 8778(the)s 0 10784(column,)m 831(since)s -1385(otherwise)s 2377(v)s 6(arious)k 3132(problems)s 4080(arose,)s -4698(for)s 5042(e)s 3(xample)k 5912(the)s 220 fnt2 -6267 10781(@NP)m 240 fnt1 6851 10784(symbol)m 7618(merely)s 8342(causing)s -0 10496(a)m 174(skip)s 634(from)s 1167(one)s 220 fnt2 -1577 10493(@BodyT)m 26(e)k 6(xtPlace)k 240 fnt1 3303 10496(to)m -3551(the)s 3907(ne)s 3(xt)k 4385(in)s 4636(the)s -4992(same)s 5548(column,)s 6381(rather)s 7006(than)s 7483(to)s -7730(the)s 8087(\207rst)s 8526(in)s 8778(the)s 0 10208(ne)m 3(xt)k -490(column.)s 1394(Also,)s 1974(without)s 2787(this)s 3204(feature)s -3944(the)s 4314(optimal)s 5120(page)s 5650(break)s 2(er')k 13(s)k -6595(attempts)s 7477(to)s 7737(end)s 8163(a)s 8351(column)s -0 9920(early)m 545(w)s 2(ould)k 1214(be)s 1510(frustrated)s -2496(by)s 2805(Lout)s 3331(then)s 3814(disco)s 3(v)k 3(ering)k -4991(that)s 5423(plenty)s 6090(of)s 6375(space)s 6976(e)s 3(xisted)k -7722(at)s 7968(a)s 8149(follo)s 6(wing)k 220 fnt2 -0 9629(@BodyT)m 26(e)k 6(xtPlace)k 240 fnt1 1703 9632(in)m -1931(the)s 2263(same)s 2795(column.)s 3662(The)s 4074(solution)s -4887(is)s 5082(based)s 5669(on)s 220 fnt2 5951 9629(ABList)m -240 fnt1 6625 9632(abo)m 3(v)k 3(e;)k 7287(each)s -7767(occurrence)s 8855(of)s 220 fnt2 0 9341(@BodyT)m 26(e)k 6(xtPlace)k -240 fnt1 1712 9344(after)m 2201(a)s 220 fnt2 2361 9341(@FigurePlace)m -240 fnt1 3798 9344(is)m 4002(not)s 4361(re)s 6(v)k 3(ealed)k -5213(in)s 5449(the)s 5791(enclosing)s 6754(de\207nition,)s 7772(and)s -8169(so)s 8428(cannot)s 0 9056(be)m 282(found)s 899(by)s -1194(body)s 1728(te)s 3(xt)k 2144(g)s 1(alle)k 3(ys)k -2868(unless)s 3517(a)s 3684(\207gure)s 4298(has)s 4669(pre)s 6(viously)k -5727(attached)s 6581(to)s 6821(the)s 7169(preceding)s 220 fnt2 -8166 9053(@Figure)m 9002(-)s 0 8765(Place)m 240 fnt1 540 8768(.)m -240 fnt5 0 8021(3.34.)m 591(The)s 1046(cr)s 4(oss)k -1614(r)s 4(efer)k 4(ence)k 2616(symbols)s 3494(&&)s -3941(and)s 4382(&&&)s -[ /Dest /LOUTcrossref /DEST pdfmark -240 fnt1 480 7544(The)m 941(cross)s -1516(reference)s 2493(symbol)s 220 fnt2 3286 7541(&&)m 240 fnt1 -3668 7544(tak)m 2(es)k 4241(the)s 4623(name)s 5230(of)s -5534(a)s 5734(symbol)s 6527(\(not)s 7006(an)s 7322(object\))s -8068(for)s 8439(its)s 8749(left)s 0 7256(parameter)m 9(,)k -1068(and)s 1489(an)s 1788(object)s 2449(whose)s 3134(v)s 6(alue)k -3718(must)s 4260(be)s 4559(a)s 4741(simple)s 5451(w)s 2(ord,)k -6064(or)s 6340(se)s 6(v)k 3(eral)k 7079(simple)s -7788(w)s 2(ords,)k 8495(for)s 8850(its)s 0 6968(right)m -519(parameter)s 13(.)k 1633(The)s 2069(result)s 2668(is)s -2887(a)s 3061(cross)s 3612(reference,)s 4615(which)s 5265(may)s -5740(be)s 6030(thought)s 6831(of)s 7111(as)s 7369(an)s -7661(arro)s 6(w)k 8275(pointing)s 0 6680(from)m 524(the)s -872(cross)s 1414(reference)s 2357(symbol)s 3117(to)s 3356(the)s -3704(be)s 3(ginning)k 4712(of)s 4983(an)s 5266(in)s 9(v)k 4(ocation)k -6320(of)s 6591(the)s 6939(named)s 7635(symbol.)s 480 6306(The)m +0 13205(right)m 519(parameter)s 13(.)k +1633(The)s 2069(result)s 2668(is)s 2887(a)s 3061(cross)s +3612(reference,)s 4615(which)s 5265(may)s 5740(be)s 6030(thought)s +6831(of)s 7111(as)s 7369(an)s 7661(arro)s 6(w)k +8275(pointing)s 0 12917(from)m 524(the)s 872(cross)s 1414(reference)s +2357(symbol)s 3117(to)s 3356(the)s 3704(be)s 3(ginning)k +4712(of)s 4983(an)s 5266(in)s 9(v)k 4(ocation)k +6320(of)s 6591(the)s 6939(named)s 7635(symbol.)s 480 12543(The)m 894(in)s 9(v)k 4(ocation)k 1934(pointed)s 2696(to,)s 2975(kno)s 6(wn)k 3665(as)s 3901(the)s 240 fnt6 -4235 6308(tar)m 8(g)k 2(et)k 240 fnt1 4846 6306(of)m +4235 12545(tar)m 8(g)k 2(et)k 240 fnt1 4846 12543(of)m 5103(the)s 5437(cross)s 5965(reference,)s 6945(is)s 7141(generally)s -8070(one)s 8458(whose)s 220 fnt2 0 6015(@T)m 26(ag)k -240 fnt1 643 6018(parameter)m 1677(has)s 2067(v)s 6(alue)k +8070(one)s 8458(whose)s 220 fnt2 0 12252(@T)m 26(ag)k +240 fnt1 643 12255(parameter)m 1677(has)s 2067(v)s 6(alue)k 2655(equal)s 3248(to)s 3507(the)s 3875(right)s 4406(parameter)s 5440(of)s 5731(the)s 6099(cross)s 6661(reference)s 7624(symbol.)s -8513(Three)s 0 5730(special)m 759(tags,)s 220 fnt2 1292 5727(preceding)m -240 fnt1 2243 5730(,)m 220 fnt2 2391 5727(f)m 6(ollo)k 3(wing)k -240 fnt1 3221 5730(,)m 3369(and)s 220 fnt2 3814 5727(f)m 6(oll_or_prec)k -240 fnt1 4948 5730(,)m 5097(point)s 5690(respecti)s 6(v)k 3(ely)k +8513(Three)s 0 11967(special)m 759(tags,)s 220 fnt2 1292 11964(preceding)m +240 fnt1 2243 11967(,)m 220 fnt2 2391 11964(f)m 6(ollo)k 3(wing)k +240 fnt1 3221 11967(,)m 3369(and)s 220 fnt2 3814 11964(f)m 6(oll_or_prec)k +240 fnt1 4948 11967(,)m 5097(point)s 5690(respecti)s 6(v)k 3(ely)k 6930(to)s 7210(the)s 7599(\207rst)s 8072(in)s 9(v)k 4(ocation)k -0 5442(preceding)m 1006(the)s 1365(cross)s 1918(reference)s 2872(in)s +0 11679(preceding)m 1006(the)s 1365(cross)s 1918(reference)s 2872(in)s 3126(the)s 3485(\207nal)s 3976(printed)s 4721(document,)s 5783(to)s 6033(the)s 6392(\207rst)s 6834(in)s 9(v)k 4(ocation)k -7899(follo)s 6(wing)k 8887(it,)s 0 5154(and)m 404(to)s +7899(follo)s 6(wing)k 8887(it,)s 0 11391(and)m 404(to)s 643(the)s 991(\207rst)s 1422(follo)s 6(wing)k 2399(it)s 2591(if)s 2808(such)s 3304(e)s 3(xists)k 3896(else)s 4323(to)s 4562(the)s 4910(\207rst)s 5341(preceding)s 6337(it.)s -480 4780(A)m 709(cross)s 1249(reference)s 2190(may)s 2654(be)s +480 11017(A)m 709(cross)s 1249(reference)s 2190(may)s 2654(be)s 2935(used)s 3430(in)s 3671(four)s 4127(w)s 2(ays:)k 4782(where)s 5420(an)s 5701(object)s 6343(is)s 6552(e)s 3(xpected,)k -7504(in)s 7745(which)s 8385(case)s 8850(its)s 0 4492(v)m 6(alue)k +7504(in)s 7745(which)s 8385(case)s 8850(its)s 0 10729(v)m 6(alue)k 576(is)s 795(a)s 970(cop)s 2(y)k 1497(of)s 1777(the)s 2134(tar)s 4(get;)k 2794(with)s 3285(the)s -220 fnt2 3642 4489(@Open)m 240 fnt1 4457 4492(and)m 220 fnt2 -4870 4489(@Use)m 240 fnt1 5544 4492(symbols;)m 6463(with)s 6954(the)s -220 fnt2 7311 4489(@T)m 26(agged)k 240 fnt1 8309 4492(symbol;)m -0 4204(and)m 414(in)s 667(the)s 220 fnt2 1025 4201(into)m -240 fnt1 1441 4204(clause)m 2105(or)s 220 fnt2 2374 4201(@T)m 26(arget)k -240 fnt1 3271 4204(symbol)m 4041(of)s 4323(a)s 4499(g)s 1(alle)k 3(y)k +220 fnt2 3642 10726(@Open)m 240 fnt1 4457 10729(and)m 220 fnt2 +4870 10726(@Use)m 240 fnt1 5544 10729(symbols;)m 6463(with)s 6954(the)s +220 fnt2 7311 10726(@T)m 26(agged)k 240 fnt1 8309 10729(symbol;)m +0 10441(and)m 414(in)s 667(the)s 220 fnt2 1025 10438(into)m +240 fnt1 1441 10441(clause)m 2105(or)s 220 fnt2 2374 10438(@T)m 26(arget)k +240 fnt1 3271 10441(symbol)m 4041(of)s 4323(a)s 4499(g)s 1(alle)k 3(y)k 5143(de\207nition,)s 6177(in)s 6430(which)s 7083(case)s 7560(the)s -7918(v)s 6(alue)k 8496(of)s 8778(the)s 0 3916(tag)m -345(must)s 870(be)s 220 fnt2 1152 3913(preceding)m 240 fnt1 -2103 3916(,)m 220 fnt2 2210 3913(f)m 6(ollo)k 3(wing)k -240 fnt1 3040 3916(,)m 3147(or)s 220 fnt2 3406 3913(f)m 6(oll_or_prec)k -240 fnt1 4540 3916(.)m 480 3542(W)m 9(ithin)k 1233(an)s -220 fnt2 1557 3539(into)m 240 fnt1 2004 3542(clause)m 2698(or)s -220 fnt2 2999 3539(@T)m 26(arget)k 240 fnt1 3927 3542(symbol,)m +7918(v)s 6(alue)k 8496(of)s 8778(the)s 0 10153(tag)m +345(must)s 870(be)s 220 fnt2 1152 10150(preceding)m 240 fnt1 +2103 10153(,)m 220 fnt2 2210 10150(f)m 6(ollo)k 3(wing)k +240 fnt1 3040 10153(,)m 3147(or)s 220 fnt2 3406 10150(f)m 6(oll_or_prec)k +240 fnt1 4540 10153(.)m 480 9779(W)m 9(ithin)k 1233(an)s +220 fnt2 1557 9776(into)m 240 fnt1 2004 9779(clause)m 2698(or)s +220 fnt2 2999 9776(@T)m 26(arget)k 240 fnt1 3927 9779(symbol,)m 4780(the)s 5169(alternati)s 6(v)k 3(e)k 6265(form)s -220 fnt2 6830 3539(&&&)m 240 fnt1 7365 3542(is)m 7616(acceptable)s -8722(and)s 0 3254(indicates)m 900(a)s 1066(forcing)s 1809(g)s 1(alle)k 3(y)k -2443(\(Section)s 3296(2.7\).)s 480 2880(Except)m 1203(within)s 1870(an)s -220 fnt2 2151 2877(into)m 240 fnt1 2556 2880(clause)m 3208(or)s -220 fnt2 3465 2877(@T)m 26(arget)k 240 fnt1 4351 2880(symbol,)m +220 fnt2 6830 9776(&&&)m 240 fnt1 7365 9779(is)m 7616(acceptable)s +8722(and)s 0 9491(indicates)m 900(a)s 1066(forcing)s 1809(g)s 1(alle)k 3(y)k +2443(\(Section)s 3296(2.7\).)s 480 9117(Except)m 1203(within)s 1870(an)s +220 fnt2 2151 9114(into)m 240 fnt1 2556 9117(clause)m 3208(or)s +220 fnt2 3465 9114(@T)m 26(arget)k 240 fnt1 4351 9117(symbol,)m 5162(the)s 5508(symbol)s 6267(referred)s 7078(to)s 7315(must)s 7839(ha)s 4(v)k 3(e)k 8339(a)s 220 fnt2 -8503 2877(@T)m 26(ag)k 240 fnt1 0 2592(parameter)m 13(.)k +8503 9114(@T)m 26(ag)k 240 fnt1 0 8829(parameter)m 13(.)k 1100(This)s 1570(is)s 1775(so)s 2035(e)s 6(v)k 3(en)k 2530(if)s 2741(the)s 3084(right)s 3589(parameter)s 4597(of)s 4863(the)s 5205(cross)s 5742(reference)s 6679(is)s 220 fnt2 -6884 2589(preceding)m 240 fnt1 7835 2592(,)m 220 fnt2 7936 2589(f)m 6(ollo)k 3(wing)k -240 fnt1 8766 2592(,)m 8867(or)s 220 fnt2 0 2301(f)m 6(oll_or_prec)k -240 fnt1 1134 2304(.)m 240 fnt5 0 1515(3.35.)m 591(@T)s 22(agged)k +6884 8826(preceding)m 240 fnt1 7835 8829(,)m 220 fnt2 7936 8826(f)m 6(ollo)k 3(wing)k +240 fnt1 8766 8829(,)m 8867(or)s 220 fnt2 0 8538(f)m 6(oll_or_prec)k +240 fnt1 1134 8541(.)m 240 fnt5 0 7752(3.36.)m 591(@T)s 22(agged)k [ /Dest /LOUTtagged /DEST pdfmark -240 fnt1 480 1038(The)m 220 fnt2 924 1035(@T)m 26(agged)k +240 fnt1 480 7275(The)m 220 fnt2 924 7272(@T)m 26(agged)k -[ /Dest /LOUT16_4080_pre_tagg_1 /DEST pdfmark -240 fnt1 1929 1038(symbol)m 2705(tak)s 2(es)k 3261(a)s +[ /Dest /LOUT19_4213_pre_tagg_1 /DEST pdfmark +240 fnt1 1929 7275(symbol)m 2705(tak)s 2(es)k 3261(a)s 3444(cross)s 4002(reference)s 4961(for)s 5315(its)s 5607(left)s 6001(parameter)s 7031(and)s 7451(an)s 7750(object,)s 8458(whose)s -0 750(v)m 6(alue)k 565(must)s 1087(be)s 1366(a)s +0 6987(v)m 6(alue)k 565(must)s 1087(be)s 1366(a)s 1528(juxtaposition)s 2831(of)s 3099(simple)s 3788(w)s 2(ords,)k 4475(or)s 4731(se)s 6(v)k 3(eral)k 5450(w)s 2(ords,)k 6136(or)s 6392(an)s 6672(empty)s 7320(object,)s 8008(for)s -8343(its)s 8615(right)s 0 462(parameter)m 13(.)k 1104(It)s +8343(its)s 8615(right)s 0 6699(parameter)m 13(.)k 1104(It)s 1307(has)s 1675(the)s 2021(ef)s 6(fect)k 2615(of)s 2885(attaching)s 3812(its)s 4086(right)s 4595(parameter)s 5607(as)s 5856(an)s 6137(additional)s 7146(tag)s 7489(to)s 7726(the)s -8072(in)s 9(v)k 4(ocation)k 0 174(denoted)m 819(by)s +8072(in)s 9(v)k 4(ocation)k 0 6411(denoted)m 819(by)s 1117(its)s 1397(left)s 1778(parameter)s 9(,)k 2834(unless)s 3487(the)s 3839(right)s 4353(parameter)s 5371(is)s 5585(empty)s 15(,)k -6279(in)s 6526(which)s 7172(case)s 220 fnt2 7643 171(@T)m 26(agged)k -240 fnt1 8636 174(does)m +6279(in)s 6526(which)s 7172(case)s 220 fnt2 7643 6408(@T)m 26(agged)k +240 fnt1 8636 6411(does)m 0 6123(nothing.)m 896(The)s 1324(result)s +1914(of)s 220 fnt2 2185 6120(@T)m 26(agged)k 240 fnt1 +3174 6123(is)m 3384(al)s 2(w)k 2(ays)k 220 fnt2 +4095 6120(@Null)m 240 fnt1 4680 6123(,)m 4787(which)s 5429(mak)s 2(es)k +6089(it)s 6281(ef)s 6(fecti)k 6(v)k 3(ely)k +7340(in)s 9(visible.)k 240 fnt5 0 5330(3.37.)m 591(@Open and @Use)s + +[ /Dest /LOUTopen /DEST pdfmark +240 fnt1 480 4853(The)m 220 fnt2 904 4850(@Open)m 240 fnt1 +1706 4853(symbol)m +[ /Dest /LOUT19_4213_pre_open_1 /DEST pdfmark +2462(tak)s 2(es)k 2998(a)s 3159(cross)s +3697(reference)s 4636(or)s 4891(symbol)s 5647(in)s 9(v)k 4(ocation)k +6696(for)s 7030(its)s 7302(left)s 7675(parameter)s 9(,)k +8722(and)s 0 4565(an)m 269(arbitrary)s 1130(object,)s 1807(which)s +2435(must)s 2946(be)s 3214(enclosed)s 4095(in)s 4324(braces,)s +5027(for)s 5351(its)s 5613(right)s 6110(parameter)s 13(.)k +7201(The)s 7615(right)s 8112(parameter)s 0 4277(may)m 462(refer)s +966(to)s 1201(the)s 1544(e)s 3(xported)k 2432(parameters)s +3525(and)s 3925(nested)s 4589(de\207nitions)s 5646(of)s 5912(the)s +6256(in)s 9(v)k 4(ocation)k 7305(denoted)s 8117(by)s +8406(the)s 8749(left)s 0 3989(parameter)m 9(,)k 1050(and)s +1452(its)s 1725(v)s 6(alue)k 2291(is)s 2499(the)s +220 fnt2 2844 3986(@Open)m 240 fnt1 3648 3989(symbol')m 13(s)k +4560(result.)s 5252(The)s 5678(tar)s 4(get)k 6274(of)s +6543(the)s 6889(cross)s 7428(reference)s 8369(may)s 8832(lie)s +0 3701(in)m 234(an)s 507(e)s 3(xternal)k 1318(database)s +2187(\(Section)s 3031(3.39\).)s 3684(An)s 3(y)k 4138(symbol)s +4888(a)s 4(v)k 6(ailable)k 5787(outside)s 6524(the)s +220 fnt2 6862 3698(@Open)m 240 fnt1 7658 3701(which)m 8290(happens)s +0 3413(to)m 239(ha)s 4(v)k 3(e)k 741(the)s +1089(same)s 1637(name)s 2212(as)s 2462(one)s 2865(of)s +3137(the)s 3485(symbols)s 4335(made)s 4910(a)s 4(v)k 6(ailable)k +5818(by)s 6113(the)s 220 fnt2 6462 3410(@Open)m 240 fnt1 +7268 3413(will)m 7695(be)s 7978(una)s 4(v)k 6(ailable)k +0 3125(within)m 668(the)s 220 fnt2 1016 3122(@Open)m 240 fnt1 +1762 3125(.)m +[ /Dest /LOUT19_4213_pre_open_2 /DEST pdfmark +538 2751(The)m 220 fnt2 963 2748(@Use)m 240 fnt1 +1625 2751(symbol)m 2382(is)s 2589(an)s 220 fnt2 2869 2748(@Open)m +240 fnt1 3672 2751(symbol)m 4429(in)s 4669(a)s 4832(dif)s 6(ferent)k +5704(form.)s 6329(It)s 6531(may)s 6994(only)s 7471(appear)s +8165(among)s 8867(or)s 0 2463(after)m 502(the)s 857(de\207nitions)s +1925(in)s 2175(Lout')s 13(s)k 2844(input,)s 3450(and)s +3861(it)s 4060(is)s 4277(equi)s 6(v)k 6(alent)k +5328(to)s 5574(enclosing)s 6551(the)s 6906(remainder)s 7941(of)s +8219(the)s 8574(input)s 0 2175(in)m 243(an)s 220 fnt2 +526 2172(@Open)m 240 fnt1 1332 2175(symbol.)m 2201(F)s 3(or)k +2590(e)s 3(xample,)k 240 fnt6 480 1672(de\207nitions)m 220 fnt2 +480 1379(@Use)m 1145({)s 240 fnt6 1269 1384(x)m 220 fnt2 +1435 1379(})m 480 1091(@Use)m 1145({)s 240 fnt6 1269 1096(y)m +220 fnt2 1431 1091(})m 240 fnt6 480 808(r)m 8(est)k +894(of)s 1175(input)s 240 fnt1 0 307(is)m 210(equi)s 6(v)k 6(alent)k +1254(to)s grestore gsave 1417 -15423 translate @@ -14748,7 +15398,7 @@ pgsave restore showpage -%%Page: 64 70 +%%Page: 66 72 %%BeginPageSetup %%PageResources: font Times-Roman %%+ font Times-Bold @@ -14771,125 +15421,126 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -240 fnt5 1417 -1583(64)m 240 fnt6 7498 -1580(Chapter)m 8348(3.)s -8622(Pr)s 8(ede\207ned)k 9717(symbols)s gsave +240 fnt5 1417 -1583(66)m +240 fnt6 7498 -1580(Chapter)m 8348(3.)s 8622(Pr)s 8(ede\207ned)k +9717(symbols)s gsave 1417 -15423 translate -240 fnt1 9066 13368 0 13259 240 288 60 LoutGraphic +240 fnt1 9066 13368 0 13257 240 288 60 LoutGraphic gsave 0 LoutMargSet grestore -0 13205(nothing.)m 896(The)s -1324(result)s 1914(of)s 220 fnt2 2185 13202(@T)m 26(agged)k -240 fnt1 3174 13205(is)m 3384(al)s 2(w)k 2(ays)k -220 fnt2 4095 13202(@Null)m 240 fnt1 4680 13205(,)m 4787(which)s -5429(mak)s 2(es)k 6089(it)s 6281(ef)s 6(fecti)k 6(v)k 3(ely)k -7340(in)s 9(visible.)k 240 fnt5 0 12412(3.36.)m 591(@Open and @Use)s - -[ /Dest /LOUTopen /DEST pdfmark -240 fnt1 480 11935(The)m 220 fnt2 904 11932(@Open)m 240 fnt1 -1706 11935(symbol)m -[ /Dest /LOUT16_4080_pre_open_1 /DEST pdfmark -2462(tak)s 2(es)k 2998(a)s 3159(cross)s -3697(reference)s 4636(or)s 4891(symbol)s 5647(in)s 9(v)k 4(ocation)k -6696(for)s 7030(its)s 7302(left)s 7675(parameter)s 9(,)k -8722(and)s 0 11647(an)m 269(arbitrary)s 1130(object,)s 1807(which)s -2435(must)s 2946(be)s 3214(enclosed)s 4095(in)s 4324(braces,)s -5027(for)s 5351(its)s 5613(right)s 6110(parameter)s 13(.)k -7201(The)s 7615(right)s 8112(parameter)s 0 11359(may)m 462(refer)s -966(to)s 1201(the)s 1544(e)s 3(xported)k 2432(parameters)s -3525(and)s 3925(nested)s 4589(de\207nitions)s 5646(of)s 5912(the)s -6256(in)s 9(v)k 4(ocation)k 7305(denoted)s 8117(by)s -8406(the)s 8749(left)s 0 11071(parameter)m 9(,)k 1050(and)s -1452(its)s 1725(v)s 6(alue)k 2291(is)s 2499(the)s -220 fnt2 2844 11068(@Open)m 240 fnt1 3648 11071(symbol')m 13(s)k -4560(result.)s 5252(The)s 5678(tar)s 4(get)k 6274(of)s -6543(the)s 6889(cross)s 7428(reference)s 8369(may)s 8832(lie)s -0 10783(in)m 234(an)s 507(e)s 3(xternal)k 1318(database)s -2187(\(Section)s 3031(3.38\).)s 3684(An)s 3(y)k 4138(symbol)s -4888(a)s 4(v)k 6(ailable)k 5787(outside)s 6524(the)s -220 fnt2 6862 10780(@Open)m 240 fnt1 7658 10783(which)m 8290(happens)s -0 10495(to)m 239(ha)s 4(v)k 3(e)k 741(the)s -1089(same)s 1637(name)s 2212(as)s 2462(one)s 2865(of)s -3137(the)s 3485(symbols)s 4335(made)s 4910(a)s 4(v)k 6(ailable)k -5818(by)s 6113(the)s 220 fnt2 6462 10492(@Open)m 240 fnt1 -7268 10495(will)m 7695(be)s 7978(una)s 4(v)k 6(ailable)k -0 10207(within)m 668(the)s 220 fnt2 1016 10204(@Open)m 240 fnt1 -1762 10207(.)m -[ /Dest /LOUT16_4080_pre_open_2 /DEST pdfmark -538 9833(The)m 220 fnt2 963 9830(@Use)m 240 fnt1 -1625 9833(symbol)m 2382(is)s 2589(an)s 220 fnt2 2869 9830(@Open)m -240 fnt1 3672 9833(symbol)m 4429(in)s 4669(a)s 4832(dif)s 6(ferent)k -5704(form.)s 6329(It)s 6531(may)s 6994(only)s 7471(appear)s -8165(among)s 8867(or)s 0 9545(after)m 502(the)s 857(de\207nitions)s -1925(in)s 2175(Lout')s 13(s)k 2844(input,)s 3450(and)s -3861(it)s 4060(is)s 4277(equi)s 6(v)k 6(alent)k -5328(to)s 5574(enclosing)s 6551(the)s 6906(remainder)s 7941(of)s -8219(the)s 8574(input)s 0 9257(in)m 243(an)s 220 fnt2 -526 9254(@Open)m 240 fnt1 1332 9257(symbol.)m 2201(F)s 3(or)k -2590(e)s 3(xample,)k 240 fnt6 480 8754(de\207nitions)m 220 fnt2 -480 8461(@Use)m 1145({)s 240 fnt6 1269 8466(x)m 220 fnt2 -1435 8461(})m 480 8173(@Use)m 1145({)s 240 fnt6 1269 8178(y)m -220 fnt2 1431 8173(})m 240 fnt6 480 7890(r)m 8(est)k -894(of)s 1175(input)s 240 fnt1 0 7389(is)m 210(equi)s 6(v)k 6(alent)k -1254(to)s 240 fnt6 480 6886(de\207nitions)m 480 6598(x)m 220 fnt2 -646 6593(@Open)m 480 6305({)m 240 fnt6 960 6310(y)m 220 fnt2 -1122 6305(@Open)m 960 6017({)m 240 fnt6 1084 6022(r)m 8(est)k -1498(of)s 1779(input)s 220 fnt2 960 5729(})m 480 5441(})m -240 fnt1 0 4947(The)m 220 fnt2 424 4944(@Use)m 240 fnt1 -1085 4947(symbol)m 1841(allo)s 6(ws)k 2506(a)s 2668(set)s +240 fnt6 480 13205(de\207nitions)m 480 12917(x)m +220 fnt2 646 12912(@Open)m 480 12624({)m 240 fnt6 960 12629(y)m +220 fnt2 1122 12624(@Open)m 960 12336({)m 240 fnt6 1084 12341(r)m 8(est)k +1498(of)s 1779(input)s 220 fnt2 960 12048(})m 480 11760(})m +240 fnt1 0 11266(The)m 220 fnt2 424 11263(@Use)m 240 fnt1 +1085 11266(symbol)m 1841(allo)s 6(ws)k 2506(a)s 2668(set)s 2989(of)s 3256(standard)s 4120(packages)s 5044(to)s 5279(be)s 5557(opened)s 6303(without)s 7090(the)s 7434(incon)s 9(v)k 3(enience)k -8855(of)s 0 4659(enclosing)m 974(the)s 1327(entire)s 1931(document)s -2939(in)s 220 fnt2 3187 4656(@Open)m 240 fnt1 3998 4659(symbols.)m +8855(of)s 0 10978(enclosing)m 974(the)s 1327(entire)s 1931(document)s +2939(in)s 220 fnt2 3187 10975(@Open)m 240 fnt1 3998 10978(symbols.)m 4964(Such)s 5505(enclosure)s 6482(could)s 7076(cause)s 7668(Basser)s -8370(Lout)s 8887(to)s 0 4371(run)m 376(out)s 742(of)s -1013(memory)s 15(.)k 240 fnt5 0 3578(3.37.)m 591(@LinkSour)s 4(ce,)k +8370(Lout)s 8887(to)s 0 10690(run)m 376(out)s 742(of)s +1013(memory)s 15(.)k 240 fnt5 0 9897(3.38.)m 591(@LinkSour)s 4(ce,)k 2120(@LinkDest,)s 3400(and)s 3841(@URLLink)s [ /Dest /LOUTlink_source /DEST pdfmark -240 fnt1 480 3107(The)m -949(tw)s 2(o)k 1400(symbols)s 220 fnt2 2290 3104(@LinkSource)m -240 fnt1 3703 3107(and)m 220 fnt2 4148 3104(@LinkDest)m -[ /Dest /LOUT16_4080_pre_link_1 /DEST pdfmark - -[ /Dest /LOUT16_4080_pre_link_2 /DEST pdfmark -240 fnt1 -5322 3107(w)m 2(ork)k 5914(together)s 6798(to)s 7078(create)s -240 fnt6 7744 3109(cr)m 10(oss)k 8335(links)s 240 fnt1 -8883 3107(in)m 0 2819(a)m 202(document,)s 1290(that)s 1745(is,)s +240 fnt1 480 9426(The)m +949(tw)s 2(o)k 1400(symbols)s 220 fnt2 2290 9423(@LinkSource)m +240 fnt1 3703 9426(and)m 220 fnt2 4148 9423(@LinkDest)m +[ /Dest /LOUT19_4213_pre_link_1 /DEST pdfmark + +[ /Dest /LOUT19_4213_pre_link_2 /DEST pdfmark +240 fnt1 +5322 9426(w)m 2(ork)k 5914(together)s 6798(to)s 7078(create)s +240 fnt6 7744 9428(cr)m 10(oss)k 8335(links)s 240 fnt1 +8883 9426(in)m 0 9138(a)m 202(document,)s 1290(that)s 1745(is,)s 2048(points)s 2721(where)s 3398(a)s 3601(user)s 4096(vie)s 6(wing)k 4951(the)s 5336(document)s 6377(on)s 6711(screen)s 7415(can)s -7841(click)s 8403(and)s 8844(be)s 0 2531(transported)m 1132(to)s +7841(click)s 8403(and)s 8844(be)s 0 8850(transported)m 1132(to)s 1369(another)s 2144(point)s 2695(in)s 2936(the)s 3282(document.)s 4389(W)s 19(e)k 4756(call)s 5153(the)s 5500(point)s 6050(where)s 6688(the)s 7035(user)s 7491(clicks)s 8097(the)s -240 fnt6 8443 2533(sour)m 8(ce)k 240 fnt1 0 2243(of)m +240 fnt6 8443 8852(sour)m 8(ce)k 240 fnt1 0 8562(of)m 271(the)s 619(link,)s 1098(and)s 1502(the)s 1850(point)s 2402(where)s 3042(the)s 3390(user)s 3848(arri)s 6(v)k 3(es)k -4539(the)s 240 fnt6 4887 2245(destination)m 240 fnt1 6004 2243(of)m -6275(the)s 6623(link.)s 480 1869(T)m 19(o)k 780(create)s +4539(the)s 240 fnt6 4887 8564(destination)m 240 fnt1 6004 8562(of)m +6275(the)s 6623(link.)s 480 8188(T)m 19(o)k 780(create)s 1405(a)s 1571(source)s 2251(point,)s 2850(place)s 240 fnt6 -480 1366(ta)m 2(g)k 220 fnt2 838 1361(@LinkSource)m 240 fnt6 -2210 1366(object)m 240 fnt1 0 863(at)m 228(some)s 785(point)s +480 7685(ta)m 2(g)k 220 fnt2 838 7680(@LinkSource)m 240 fnt6 +2210 7685(object)m 240 fnt1 0 7182(at)m 228(some)s 785(point)s 1332(in)s 1571(the)s 1915(document,)s 2961(where)s 3597(the)s -3941(v)s 6(alue)k 4504(of)s 240 fnt6 4771 865(ta)m 2(g)k -240 fnt1 5124 863(is)m 5330(a)s 5492(le)s 3(g)k 1(al)k +3941(v)s 6(alue)k 4504(of)s 240 fnt6 4771 7184(ta)m 2(g)k +240 fnt1 5124 7182(is)m 5330(a)s 5492(le)s 3(g)k 1(al)k 6002(cross)s 6540(reference)s 7479(tag,)s 7873(and)s 240 fnt6 -8273 865(object)m 240 fnt1 8916 863(is)m 0 575(an)m 279(arbitrary)s +8273 7184(object)m 240 fnt1 8916 7182(is)m 0 6894(an)m 279(arbitrary)s 1149(Lout)s 1657(object.)s 2400(The)s 2823(result)s 3409(of)s -3675(this)s 4066(is)s 4272(just)s 240 fnt6 4672 577(object)m -240 fnt1 5260 575(,)m 5363(b)s 4(ut)k 5720(if)s +3675(this)s 4066(is)s 4272(just)s 240 fnt6 4672 6896(object)m +240 fnt1 5260 6894(,)m 5363(b)s 4(ut)k 5720(if)s 5932(the)s 6276(user)s 6729(of)s 6995(a)s 7157(screen)s -7819(vie)s 6(wer)k 8518(clicks)s 0 287(on)m 297(an)s 3(y)k +7819(vie)s 6(wer)k 8518(clicks)s 0 6606(on)m 297(an)s 3(y)k 694(point)s 1246(within)s 1914(the)s 2262(rectangular)s 3396(bounding)s 4355(box)s 4770(of)s 5041(that)s 5459(object,)s 6150(a)s -6316(link)s 6749(will)s 7175(be)s 7457(entered.)s +6316(link)s 6749(will)s 7175(be)s 7457(entered.)s 480 6232(At)m +799(present,)s 240 fnt6 1616 6234(object)m 240 fnt1 2285 6232(abo)m 3(v)k 3(e)k +2927(is)s 3158(treated)s 3885(as)s 4156(though)s 4899(it)s +5111(were)s 5652(enclosed)s 6567(in)s 220 fnt2 6831 6229(@OneCol)m +240 fnt1 7783 6232(.)m 7967(This)s 8464(means)s 0 5944(that)m +420(a)s 589(long)s 1071(link)s 1507(source)s 2190(or)s +2452(destination)s 3561(point)s 4116(will)s 4545(not)s 4914(break)s +5509(o)s 3(v)k 3(er)k 5991(tw)s 2(o)k +6404(lines)s 6909(as)s 7162(part)s 7596(of)s 7870(an)s +8156(enclosing)s 0 5656(paragraph.)m 480 5282(T)m 19(o)k 780(create)s +1405(a)s 1571(destination)s 2677(point,)s 3276(place)s 240 fnt6 +480 4779(ta)m 2(g)k 220 fnt2 838 4774(@LinkDest)m 240 fnt6 +1970 4779(object)m 240 fnt1 0 4276(at)m 221(some)s 771(point)s +1312(in)s 1544(the)s 1881(document.)s 2978(Ag)s 1(ain,)k +240 fnt6 3658 4278(ta)m 2(g)k 240 fnt1 4005 4276(must)m +4519(e)s 6(v)k 6(aluate)k 5348(to)s 5576(a)s +5731(le)s 3(g)k 1(al)k 6235(cross)s 6766(reference)s +7698(tag,)s 8086(and)s 240 fnt6 8478 4278(object)m 240 fnt1 +0 3988(may)m 469(be)s 755(an)s 3(y)k 1156(Lout)s +1672(object.)s 2424(All)s 220 fnt2 2788 3985(@LinkSource)m 240 fnt1 +4164 3988(symbols)m 5017(whose)s 5689(tag)s 6038(is)s 6252(equal)s +6829(to)s 7072(this)s 7472(one)s 7878(are)s 8229(link)s 2(ed)k +8887(to)s 0 3700(this)m 396(destination)s 1502(point.)s 480 3326(F)m 3(or)k +907(e)s 6(v)k 3(ery)k 1521(source)s 2239(point)s +2829(there)s 3400(must)s 3963(be)s 4283(e)s 3(xactly)k +5062(one)s 5502(destination)s 6646(point)s 7236(with)s 7756(the)s +8142(same)s 8727(tag,)s 0 3038(otherwise)m 1016(it)s 1240(will)s +1697(not)s 2095(be)s 2408(clear)s 2963(where)s 3634(the)s +4014(link)s 4479(is)s 4720(supposed)s 5702(to)s 5972(tak)s 2(e)k +6456(the)s 6835(user)s 13(.)k 7416(Lout)s 7959(will)s +8417(print)s 8960(a)s 0 2750(w)m 2(arning)k 829(if)s +1040(this)s 1430(condition)s 2384(is)s 2588(violated)s 3410(an)s 3(ywhere;)k +4443(it)s 4628(will)s 5048(refuse)s 5681(to)s 5914(insert)s +6497(a)s 6657(destination)s 7757(point)s 8303(with)s 8778(the)s +0 2462(same)m 555(name)s 1138(as)s 1397(a)s 1571(pre)s 6(vious)k +2449(one,)s 2911(b)s 4(ut)k 3282(it)s 3482(is)s +3701(not)s 4076(able)s 4539(to)s 4786(refrain)s 5487(from)s +6020(inserting)s 6918(a)s 7092(source)s 7781(point)s 8342(with)s +8833(no)s 0 2174(corresponding)m 1430(destination)s 2544(point,)s 3152(and)s +3564(such)s 4068(points)s 4713(must)s 5246(cause)s 5842(errors)s +6457(of)s 6736(some)s 7306(kind)s 7798(when)s 8383(vie)s 6(wed)k +0 1886(\(e)m 3(xactly)k 820(what)s 1345(error)s 1868(will)s +2294(depend)s 3044(on)s 3341(the)s 3689(vie)s 6(wer\).)k +480 1512(The)m 220 fnt2 915 1509(@URLLink)m 240 fnt1 2045 1512(symbol)m +2812(is)s 3029(similar)s 3758(to)s 220 fnt2 4004 1509(@LinkSource)m +240 fnt1 5383 1512(in)m 5633(being)s 6225(the)s 6580(source)s +7267(point)s 7826(of)s 8104(a)s 8277(link,)s 8764(b)s 4(ut)k +0 1224(instead)m 735(of)s 1006(a)s 1172(tag)s 1517(you)s +1932(supply)s 2625(a)s 2791(URL)s 3327(to)s 3566(some)s +4127(other)s 4678(document)s 5682(altogether:)s 220 fnt2 480 723("http://snar)m -3(k.ptc.spb)k 4(u.r)k -3(u/~uw)k 2(e/lout/lout.html" @URLLink { Lout Home P)k 8(age })k +240 fnt1 0 224(The)m 445(URL)s 999(will)s 1443(need)s +1970(to)s 2227(be)s 2527(enclosed)s 3439(in)s 3700(quotes,)s +4450(because)s 5280(of)s 5569(the)s 5935(/)s 6080(characters)s +7116(which)s 7776(are)s 8141(otherwise)s grestore gsave 1417 -15423 translate @@ -14907,7 +15558,7 @@ pgsave restore showpage -%%Page: 65 71 +%%Page: 67 73 %%BeginPageSetup %%PageResources: font Times-Roman %%+ font Times-Italic @@ -14930,139 +15581,147 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -240 fnt6 1417 -1580(3.37.)m 1991(@LinkSour)s 8(ce)k 2(,)k -3384(@LinkDest,)s 4560(and)s 4986(@URLLink)s 240 fnt5 10250 -1583(65)m -gsave +240 fnt6 1417 -1580(3.38.)m +1991(@LinkSour)s 8(ce)k 2(,)k 3384(@LinkDest,)s 4560(and)s +4986(@URLLink)s 240 fnt5 10248 -1583(67)m gsave 1417 -15423 translate -240 fnt1 9066 13387 0 13276 240 288 60 LoutGraphic +240 fnt1 9066 13387 0 13278 240 288 60 LoutGraphic gsave 1 LoutMargSet grestore -480 13222(At)m 799(present,)s 240 fnt6 1616 13224(object)m 240 fnt1 -2285 13222(abo)m 3(v)k 3(e)k 2927(is)s 3158(treated)s -3885(as)s 4156(though)s 4899(it)s 5111(were)s 5652(enclosed)s -6567(in)s 220 fnt2 6831 13219(@OneCol)m 240 fnt1 7783 13222(.)m -7967(This)s 8464(means)s 0 12934(that)m 420(a)s 589(long)s -1071(link)s 1507(source)s 2190(or)s 2452(destination)s 3561(point)s -4116(will)s 4545(not)s 4914(break)s 5509(o)s 3(v)k 3(er)k -5991(tw)s 2(o)k 6404(lines)s 6909(as)s 7162(part)s -7596(of)s 7870(an)s 8156(enclosing)s 0 12646(paragraph.)m 480 12272(T)m 19(o)k -780(create)s 1405(a)s 1571(destination)s 2677(point,)s 3276(place)s -240 fnt6 480 11769(ta)m 2(g)k 220 fnt2 838 11764(@LinkDest)m -240 fnt6 1970 11769(object)m 240 fnt1 0 11266(at)m 221(some)s -771(point)s 1312(in)s 1544(the)s 1881(document.)s 2978(Ag)s 1(ain,)k -240 fnt6 3658 11268(ta)m 2(g)k 240 fnt1 4005 11266(must)m -4519(e)s 6(v)k 6(aluate)k 5348(to)s 5576(a)s -5731(le)s 3(g)k 1(al)k 6235(cross)s 6766(reference)s -7698(tag,)s 8086(and)s 240 fnt6 8478 11268(object)m 240 fnt1 -0 10978(may)m 469(be)s 755(an)s 3(y)k 1156(Lout)s -1672(object.)s 2424(All)s 220 fnt2 2788 10975(@LinkSource)m 240 fnt1 -4164 10978(symbols)m 5017(whose)s 5689(tag)s 6038(is)s 6252(equal)s -6829(to)s 7072(this)s 7472(one)s 7878(are)s 8229(link)s 2(ed)k -8887(to)s 0 10690(this)m 396(destination)s 1502(point.)s 480 10316(F)m 3(or)k -907(e)s 6(v)k 3(ery)k 1521(source)s 2239(point)s -2829(there)s 3400(must)s 3963(be)s 4283(e)s 3(xactly)k -5062(one)s 5502(destination)s 6646(point)s 7236(with)s 7756(the)s -8142(same)s 8727(tag,)s 0 10028(otherwise)m 1016(it)s 1240(will)s -1697(not)s 2095(be)s 2408(clear)s 2963(where)s 3634(the)s -4014(link)s 4479(is)s 4720(supposed)s 5702(to)s 5972(tak)s 2(e)k -6456(the)s 6835(user)s 13(.)k 7416(Lout)s 7959(will)s -8417(print)s 8960(a)s 0 9740(w)m 2(arning)k 829(if)s -1040(this)s 1430(condition)s 2384(is)s 2588(violated)s 3410(an)s 3(ywhere;)k -4443(it)s 4628(will)s 5048(refuse)s 5681(to)s 5914(insert)s -6497(a)s 6657(destination)s 7757(point)s 8303(with)s 8778(the)s -0 9452(same)m 555(name)s 1138(as)s 1397(a)s 1571(pre)s 6(vious)k -2449(one,)s 2911(b)s 4(ut)k 3282(it)s 3482(is)s -3701(not)s 4076(able)s 4539(to)s 4786(refrain)s 5487(from)s -6020(inserting)s 6918(a)s 7092(source)s 7781(point)s 8342(with)s -8833(no)s 0 9164(corresponding)m 1430(destination)s 2544(point,)s 3152(and)s -3564(such)s 4068(points)s 4713(must)s 5246(cause)s 5842(errors)s -6457(of)s 6736(some)s 7306(kind)s 7798(when)s 8383(vie)s 6(wed)k -0 8876(\(e)m 3(xactly)k 820(what)s 1345(error)s 1868(will)s -2294(depend)s 3044(on)s 3341(the)s 3689(vie)s 6(wer\).)k -480 8502(The)m 220 fnt2 915 8499(@URLLink)m 240 fnt1 2045 8502(symbol)m -2812(is)s 3029(similar)s 3758(to)s 220 fnt2 4004 8499(@LinkSource)m -240 fnt1 5383 8502(in)m 5633(being)s 6225(the)s 6580(source)s -7267(point)s 7826(of)s 8104(a)s 8277(link,)s 8764(b)s 4(ut)k -0 8214(instead)m 735(of)s 1006(a)s 1172(tag)s 1517(you)s -1932(supply)s 2625(a)s 2791(URL)s 3327(to)s 3566(some)s -4127(other)s 4678(document)s 5682(altogether:)s 220 fnt2 480 7713("http://snar)m -3(k.ptc.spb)k 4(u.r)k -3(u/~uw)k 2(e/lout/lout.html" @URLLink { Lout Home P)k 8(age })k -240 fnt1 0 7214(The)m 445(URL)s 999(will)s 1443(need)s -1970(to)s 2227(be)s 2527(enclosed)s 3439(in)s 3700(quotes,)s -4450(because)s 5280(of)s 5569(the)s 5935(/)s 6080(characters)s -7116(which)s 7776(are)s 8141(otherwise)s 0 6926(tak)m 2(en)k +0 13224(tak)m 2(en)k 591(to)s 849(be)s 1150(concatenation)s 2553(operations.)s 3732(As)s -4068(for)s 220 fnt2 4425 6923(@LinkSource)m 240 fnt1 5737 6926(,)m +4068(for)s 220 fnt2 4425 13221(@LinkSource)m 240 fnt1 5737 13224(,)m 5862(the)s 6229(result)s 6838(is)s 7067(just)s 7490(the)s -7857(object)s 8520(to)s 8778(the)s 0 6638(right,)m 558(lik)s 2(e)k +7857(object)s 8520(to)s 8778(the)s 0 12936(right,)m 558(lik)s 2(e)k 970(this:)s -[ /Rect [480 6088 2091 6298] /Border [0 0 0] /Action << /Subtype /URI /URI (http://snark.ptc.spbu.ru/~uwe/lout/lout.html) >> /Subtype /Link /ANN pdfmark -480 6140(Lout)m 992(Home)s 1633(P)s 3(age)k -0 5637(b)m 4(ut)k 373(if)s 601(the)s 960(user)s +[ /Rect [480 12386 2091 12596] /Border [0 0 0] /Action << /Subtype /URI /URI (http://snark.ptc.spbu.ru/~uwe/lout/lout.html) >> /Subtype /Link /ANN pdfmark +480 12438(Lout)m 992(Home)s 1633(P)s 3(age)k +0 11935(b)m 4(ut)k 373(if)s 601(the)s 960(user)s 1429(clicks)s 2048(on)s 2356(this)s 2763(object)s 3418(on)s 3726(the)s 4086(screen)s 4764(the)s 3(y)k 5238(enter)s 5786(a)s 5963(link)s 6407(that)s 6836(tak)s 2(es)k 7387(them)s 7936(to)s 8186(the)s 8546(gi)s 6(v)k 3(en)k -0 5349(URL)m 530(location,)s 1401(assuming)s 2352(that)s 2764(the)s +0 11647(URL)m 530(location,)s 1401(assuming)s 2352(that)s 2764(the)s 3106(softw)s 2(are)k 3976(which)s 4612(the)s 3(y)k 5069(are)s 5410(using)s 5976(to)s 6209(display)s 6948(the)s 7290(document)s 8288(is)s 8492(cle)s 6(v)k 3(er)k -0 5061(enough)m 763(to)s 1002(do)s 1295(this.)s 480 4687(F)m 3(or)k -920(the)s 1320(purposes)s 2274(of)s 220 fnt2 2596 4684(@Common)m -240 fnt1 3695 4687(,)m 220 fnt2 3854 4684(@Rump)m 240 fnt1 -4654 4687(,)m 4813(and)s 220 fnt2 5269 4684(@Meld)m 240 fnt1 -5955 4687(,)m 6113(tw)s 2(o)k 220 fnt2 6575 4684(@LinkSource)m -240 fnt1 7999 4687(objects)m 8779(are)s 0 4399(considered)m 1092(to)s +0 11359(enough)m 763(to)s 1002(do)s 1295(this.)s 480 10985(F)m 3(or)k +920(the)s 1320(purposes)s 2274(of)s 220 fnt2 2596 10982(@Common)m +240 fnt1 3695 10985(,)m 220 fnt2 3854 10982(@Rump)m 240 fnt1 +4654 10985(,)m 4813(and)s 220 fnt2 5269 10982(@Meld)m 240 fnt1 +5955 10985(,)m 6113(tw)s 2(o)k 220 fnt2 6575 10982(@LinkSource)m +240 fnt1 7999 10985(objects)m 8779(are)s 0 10697(considered)m 1092(to)s 1328(be)s 1608(equal)s 2178(if)s 2393(their)s 2887(right)s 3396(parameters)s 4491(are)s 4836(equal;)s 5463(the)s 5809(left)s -6183(parameters)s 7279(are)s 7623(not)s 7986(considered.)s 0 4111(This)m +6183(parameters)s 7279(are)s 7623(not)s 7986(considered.)s 0 10409(This)m 480(beha)s 4(viour)k 1498(is)s 1713(needed,)s 2503(for)s 2846(e)s 3(xample,)k 3765(to)s 4009(mak)s 2(e)k 4586(inde)s 3(x)k 5175(entries)s 5867(look)s 6359(reasonable)s -7442(when)s 8023(melded.)s 8896(If)s 0 3823(tw)m 2(o)k -220 fnt2 420 3820(@LinkSource)m 240 fnt1 1803 3823(objects)m 2542(with)s +7442(when)s 8023(melded.)s 8896(If)s 0 10121(tw)m 2(o)k +220 fnt2 420 10118(@LinkSource)m 240 fnt1 1803 10121(objects)m 2542(with)s 3035(equal)s 3619(right)s 4141(parameters)s 5250(b)s 4(ut)k 5623(dif)s 6(ferent)k 6509(left)s 6897(parameters)s 8006(are)s -8364(melded)s 0 3535(into)m 412(one,)s 851(one)s 1239(of)s +8364(melded)s 0 9833(into)m 412(one,)s 851(one)s 1239(of)s 1497(the)s 1831(tw)s 2(o)k 2227(will)s 2639(be)s 2908(the)s 3242(result,)s 3865(b)s 4(ut)k 4214(which)s 4842(one)s 5230(is)s 5426(unde\207ned.)s 6522(Notice)s 7201(that)s -7605(melding)s 8428(cannot)s 0 3247(produce)m 827(an)s 1110(unde\207ned)s +7605(melding)s 8428(cannot)s 0 9545(produce)m 827(an)s 1110(unde\207ned)s 2113(link,)s 2592(since)s 3139(the)s 3487(w)s 2(orst)k 4076(it)s 4268(can)s 4657(do)s 4950(is)s 5160(delete)s -5786(a)s 220 fnt2 5952 3244(@LinkSource)m 240 fnt1 7264 3247(.)m -240 fnt5 0 2454(3.38.)m 591(@Database and @SysDatabase)s +5786(a)s 220 fnt2 5952 9542(@LinkSource)m 240 fnt1 7264 9545(.)m +480 9171(Practically)m 1595(speaking,)s 2594(the)s 2984(right)s 3536(parameters)s +4676(of)s 220 fnt2 4988 9168(@LinkSource)m 240 fnt1 6402 9171(and)m +220 fnt2 6847 9168(@URLLink)m 240 fnt1 8012 9171(need)m 8563(to)s +8844(be)s 0 8883(non-null,)m 941(non-empty)s 2055(objects,)s 2863(since)s +3433(otherwise)s 4442(there)s 4998(is)s 5232(nothing)s 6040(visible)s +6756(for)s 7118(the)s 7489(user)s 7971(to)s 8233(click)s +8782(on.)s 0 8595(\(This)m 542(condition)s 1489(is)s 1686(not)s +2038(check)s 2(ed)k 2865(or)s 3110(enforced)s 3991(by)s +4271(Lout.\))s 4958(Ho)s 6(we)k 6(v)k 3(er)k 9(,)k +5904(the)s 6239(right)s 6736(parameter)s 7737(of)s 220 fnt2 +7994 8592(@LinkDest)m 240 fnt1 0 8307(could)m 588(reasonably)s 1676(be)s +1956(empty)s 2605(or)s 2862(null.)s 3396(Usually)s 15(,)k +4229(when)s 220 fnt2 4803 8304(@Null)m 240 fnt1 5446 8307(lies)m +5825(inside)s 6450(a)s 6614(non-concatenation)s 8435(object,)s 0 8019(for)m +338(e)s 3(xample)k 480 7516(@OneCol @Null)m 0 7062(the)m 379(ef)s 6(fect)k +1007(of)s 1309(the)s 220 fnt2 1689 7059(@Null)m 240 fnt1 +2365 7062(is)m 2607(lost)s 3043(\211)s 3255(the)s 3634(result)s +4256(in)s 4530(this)s 4958(e)s 3(xample)k 5852(is)s +6094(equi)s 6(v)k 6(alent)k 7169(to)s 7440(an)s +7754(empty)s 8438(object.)s 0 6774(Ho)m 6(we)k 6(v)k 3(er)k 9(,)k +960(when)s 1536(the)s 1884(right)s 2395(parameter)s 3409(of)s +220 fnt2 3680 6771(@LinkDest)m 240 fnt1 4812 6774(is)m 220 fnt2 +5022 6771(@Null)m 240 fnt1 5607 6774(:)m 480 6271(@LinkDest @Null)m 0 5817(or)m +307(when)s 932(it)s 1173(is)s 1432(some)s 2042(object)s +2735(treated)s 3491(lik)s 2(e)k 220 fnt2 3952 5814(@Null)m +240 fnt1 4645 5817(by)m 4988(Lout)s 5549(\(e.g.)s 6067(a)s +220 fnt2 6282 5814(@T)m 26(agged)k 240 fnt1 7320 5817(symbol\),)m +8260(then)s 8778(the)s 220 fnt2 0 5526(@LinkDest)m 240 fnt1 +1121 5529(itself)m 1657(has)s 2016(the)s 2352(ef)s 6(fect)k +2937(on)s 3222(surrounding)s 4420(concatentation)s 5860(operators)s 6788(that)s +220 fnt2 7195 5526(@Null)m 240 fnt1 7828 5529(has,)m 8242(allo)s 6(wing)k +0 5241(it)m 192(to)s 431(be)s 713(made)s 1287(ef)s 6(fecti)k 6(v)k 3(ely)k +2346(in)s 9(visible)k 3216(in)s 3459(the)s 3807(printed)s +4542(document,)s 5593(though)s 6316(still)s 6728(really)s 7325(there.)s +240 fnt5 0 4448(3.39.)m 591(@Database and @SysDatabase)s [ /Dest /LOUTdatabase /DEST pdfmark -[ /Dest /LOUT16_4080_pre_data_1 /DEST pdfmark -240 fnt1 529 1977(The)m -220 fnt2 945 1974(@Database)m 240 fnt1 2148 1977(symbol)m 2896(is)s +[ /Dest /LOUT19_4213_pre_data_1 /DEST pdfmark +240 fnt1 529 3971(The)m +220 fnt2 945 3968(@Database)m 240 fnt1 2148 3971(symbol)m 2896(is)s 3095(used)s 3580(to)s 3808(declare)s 4541(the)s 4877(e)s 3(xistence)k 5808(of)s 6067(a)s 6222(\207le)s 6571(of)s 6831(symbol)s -7579(in)s 9(v)k 4(ocations)k 8708(that)s 0 1689(Lout)m +7579(in)s 9(v)k 4(ocations)k 8708(that)s 0 3683(Lout)m 512(may)s 978(refer)s 1487(to)s 1726(when)s 2302(e)s 6(v)k 6(aluating)k 3339(cross)s 3881(references.)s 5025(In)s 5281(Basser)s 5978(Lout,)s -6537(for)s 6875(e)s 3(xample,)k 220 fnt2 480 1188(@Database @Months @W)m 6(eekDa)k 6(ys { standard })k -240 fnt1 0 690(means)m 690(that)s 1137(there)s 1698(is)s -1937(a)s 2131(\207le)s 2521(called)s 220 fnt2 3177 687(standard.ld)m -240 fnt1 4339 690(containing)m 5430(in)s 9(v)k 4(ocations)k +6537(for)s 6875(e)s 3(xample,)k 220 fnt2 480 3182(@Database @Months @W)m 6(eekDa)k 6(ys { standard })k +240 fnt1 0 2684(means)m 690(that)s 1137(there)s 1698(is)s +1937(a)s 2131(\207le)s 2521(called)s 220 fnt2 3177 2681(standard.ld)m +240 fnt1 4339 2684(containing)m 5430(in)s 9(v)k 4(ocations)k 6600(of)s 6899(the)s 7276(pre)s 6(viously)k 8363(de\207ned)s -0 402(symbols)m 220 fnt2 846 399(@Months)m 240 fnt1 1838 402(and)m -220 fnt2 2238 399(@W)m 6(eekDa)k 6(ys)k 240 fnt1 -3503 402(.)m 3663(A)s 220 fnt2 3889 399(@Database)m 240 fnt1 -5100 402(symbol)m 5856(may)s 6318(appear)s 7011(an)s 3(ywhere)k -7990(a)s 8152(de\207nition)s 0 114(or)m 252(a)s 220 fnt2 -411 111(@Use)m 240 fnt1 1069 114(symbol)m 1822(may)s 2281(appear)s 13(.)k +0 2396(symbols)m 220 fnt2 846 2393(@Months)m 240 fnt1 1838 2396(and)m +220 fnt2 2238 2393(@W)m 6(eekDa)k 6(ys)k 240 fnt1 +3503 2396(.)m 3663(A)s 220 fnt2 3889 2393(@Database)m 240 fnt1 +5100 2396(symbol)m 5856(may)s 6318(appear)s 7011(an)s 3(ywhere)k +7990(a)s 8152(de\207nition)s 0 2108(or)m 252(a)s 220 fnt2 +411 2105(@Use)m 240 fnt1 1069 2108(symbol)m 1822(may)s 2281(appear)s 13(.)k 3062(Dif)s 6(ferent)k 3982(de\207nitions)s 5036(packages)s 5957(may)s 6416(refer)s 6918(to)s 7150(a)s 7309(common)s 8196(database,)s - +0 1820(pro)m 3(vided)k 935(the)s 1312(de\207nitions)s 2402(the)s 3(y)k +2894(gi)s 6(v)k 3(e)k 3382(for)s 3749(its)s +4054(symbols)s 4932(are)s 5308(compatible.)s 6563(An)s 6942(entry)s +7516(is)s 7755(interpreted)s 8876(as)s 0 1532(though)m 756(it)s +981(appears)s 1795(at)s 2060(the)s 2441(point)s 3026(where)s +3699(the)s 4080(cross)s 4655(reference)s 5631(that)s 6082(retrie)s 6(v)k 3(es)k +6978(it)s 7203(does,)s 7782(which)s 8457(allo)s 6(ws)k +0 1244(symbols)m 866(lik)s 2(e)k 220 fnt2 1296 1241(@I)m +240 fnt1 1639 1244(for)m 220 fnt2 1995 1241(Slope @F)m 6(ont)k +240 fnt1 3346 1244(to)m 3602(be)s 3902(used)s 4417(in)s +4678(databases.)s 5776(The)s 6221(database)s 7118(\207le)s 7497(may)s +7981(not)s 8365(contain)s 220 fnt2 0 953(@Database)m 240 fnt1 +1214 956(or)m 220 fnt2 1473 953(@Include)m 240 fnt1 2455 956(symbols,)m +3360(and)s 3764(each)s 4259(in)s 9(v)k 4(ocation)k +5313(within)s 5981(it)s 6173(must)s 6698(be)s 6980(enclosed)s +7875(in)s 8118(braces.)s 480 582(Basser)m 1198(Lout)s 1732(constructs)s +2773(an)s 240 fnt6 3078 584(inde)m 4(x)k 3674(\207le)s +240 fnt1 3959 582(,)m +[ /Dest /LOUT19_4213_pre_data_2 /DEST pdfmark +4087(which)s 4751(in)s 5016(this)s +5433(e)s 3(xample)k 6318(is)s 6550(called)s 220 fnt2 +7199 579(standard.li)m 240 fnt1 8196 582(,)m 8325(the)s 8695(\207rst)s +0 294(time)m 481(it)s 675(e)s 6(v)k 3(er)k +1139(encounters)s 2227(the)s 2577(database,)s 3509(as)s 3761(an)s +4045(aid)s 4397(to)s 4638(searching)s 5608(it.)s 5906(If)s +6138(the)s 6488(database)s 7368(\207le)s 7731(is)s 7943(changed,)s +8850(its)s grestore gsave 1417 -15423 translate @@ -15080,7 +15739,7 @@ pgsave restore showpage -%%Page: 66 72 +%%Page: 68 74 %%BeginPageSetup %%PageResources: font Times-Roman %%+ font Times-Bold @@ -15103,89 +15762,64 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -240 fnt5 1417 -1583(66)m 240 fnt6 7498 -1580(Chapter)m 8348(3.)s -8622(Pr)s 8(ede\207ned)k 9717(symbols)s gsave +240 fnt5 1417 -1583(68)m +240 fnt6 7498 -1580(Chapter)m 8348(3.)s 8622(Pr)s 8(ede\207ned)k +9717(symbols)s gsave 1417 -15423 translate 240 fnt1 9066 13368 0 13259 240 288 60 LoutGraphic gsave 0 LoutMargSet grestore -0 13205(pro)m 3(vided)k -935(the)s 1312(de\207nitions)s 2402(the)s 3(y)k 2894(gi)s 6(v)k 3(e)k -3382(for)s 3749(its)s 4054(symbols)s 4932(are)s 5308(compatible.)s -6563(An)s 6942(entry)s 7516(is)s 7755(interpreted)s 8876(as)s -0 12917(though)m 756(it)s 981(appears)s 1795(at)s 2060(the)s -2441(point)s 3026(where)s 3699(the)s 4080(cross)s 4655(reference)s -5631(that)s 6082(retrie)s 6(v)k 3(es)k 6978(it)s -7203(does,)s 7782(which)s 8457(allo)s 6(ws)k 0 12629(symbols)m -866(lik)s 2(e)k 220 fnt2 1296 12626(@I)m 240 fnt1 -1639 12629(for)m 220 fnt2 1995 12626(Slope @F)m 6(ont)k 240 fnt1 -3346 12629(to)m 3602(be)s 3902(used)s 4417(in)s 4678(databases.)s -5776(The)s 6221(database)s 7118(\207le)s 7497(may)s 7981(not)s -8365(contain)s 220 fnt2 0 12338(@Database)m 240 fnt1 1214 12341(or)m -220 fnt2 1473 12338(@Include)m 240 fnt1 2455 12341(symbols,)m 3360(and)s -3764(each)s 4259(in)s 9(v)k 4(ocation)k 5313(within)s -5981(it)s 6173(must)s 6698(be)s 6980(enclosed)s 7875(in)s -8118(braces.)s 480 11967(Basser)m 1198(Lout)s 1732(constructs)s 2773(an)s -240 fnt6 3078 11969(inde)m 4(x)k 3674(\207le)s 240 fnt1 -3959 11967(,)m -[ /Dest /LOUT16_4080_pre_data_2 /DEST pdfmark -4087(which)s 4751(in)s 5016(this)s 5433(e)s 3(xample)k -6318(is)s 6550(called)s 220 fnt2 7199 11964(standard.li)m 240 fnt1 -8196 11967(,)m 8325(the)s 8695(\207rst)s 0 11679(time)m 481(it)s -675(e)s 6(v)k 3(er)k 1139(encounters)s 2227(the)s -2577(database,)s 3509(as)s 3761(an)s 4045(aid)s 4397(to)s -4638(searching)s 5608(it.)s 5906(If)s 6138(the)s 6488(database)s -7368(\207le)s 7731(is)s 7943(changed,)s 8850(its)s 0 11391(inde)m 3(x)k -586(\207le)s 950(must)s 1477(be)s 1762(deleted)s 2512(by)s -2809(the)s 3159(user)s 3620(so)s 3888(that)s 4309(Basser)s -5008(Lout)s 5523(kno)s 6(ws)k 6196(to)s 6438(reconstruct)s -7561(it.)s 7860(There)s 8475(is)s 8688(also)s 0 11103(an)m -300(installation)s 1435(option)s 2121(which)s 2780(allo)s 6(ws)k -3466(this)s 3879(deletion)s 4723(to)s 4979(be)s 5278(done)s -5817(automatically)s 7188(on)s 7502(suitable)s 8318(systems)s 0 10815(\(including)m -1036(Unix\).)s 480 10441(Basser)m 1210(Lout)s 1756(searches)s 2649(for)s -3021(databases)s 4021(in)s 4298(the)s 4679(current)s 5449(directory)s -6398(\207rst,)s 6910(then)s 7412(in)s 7689(a)s 7888(sequence)s -8855(of)s 0 10153(standard)m 868(places.)s 1629(T)s 19(o)k -1929(search)s 2596(the)s 2944(standard)s 3812(places)s 4460(only)s 15(,)k +0 13205(inde)m 3(x)k 586(\207le)s +950(must)s 1477(be)s 1762(deleted)s 2512(by)s 2809(the)s +3159(user)s 3620(so)s 3888(that)s 4309(Basser)s 5008(Lout)s +5523(kno)s 6(ws)k 6196(to)s 6438(reconstruct)s 7561(it.)s +7860(There)s 8475(is)s 8688(also)s 0 12917(an)m 300(installation)s +1435(option)s 2121(which)s 2780(allo)s 6(ws)k 3466(this)s +3879(deletion)s 4723(to)s 4979(be)s 5278(done)s 5817(automatically)s +7188(on)s 7502(suitable)s 8318(systems)s 0 12629(\(including)m 1036(Unix\).)s +480 12255(Basser)m 1210(Lout)s 1756(searches)s 2649(for)s 3021(databases)s +4021(in)s 4298(the)s 4679(current)s 5449(directory)s 6398(\207rst,)s +6910(then)s 7412(in)s 7689(a)s 7888(sequence)s 8855(of)s +0 11967(standard)m 868(places.)s 1629(T)s 19(o)k 1929(search)s +2596(the)s 2944(standard)s 3812(places)s 4460(only)s 15(,)k 4978(use)s -[ /Dest /LOUT16_4080_pre_data_3 /DEST pdfmark -220 fnt2 5353 10150(@SysDatabase)m 240 fnt1 6873 10153(.)m -240 fnt5 0 9360(3.39.)m 591(@Graphic)s +[ /Dest /LOUT19_4213_pre_data_3 /DEST pdfmark +220 fnt2 5353 11964(@SysDatabase)m 240 fnt1 6873 11967(.)m +240 fnt5 0 11174(3.40.)m 591(@Graphic)s [ /Dest /LOUTgraphic /DEST pdfmark -[ /Dest /LOUT16_4080_pre_grap_1 /DEST pdfmark +[ /Dest /LOUT19_4213_pre_grap_1 /DEST pdfmark -[ /Dest /LOUT16_4080_pre_grap_2 /DEST pdfmark -240 fnt1 556 8883(Lout)m +[ /Dest /LOUT19_4213_pre_grap_2 /DEST pdfmark +240 fnt1 556 10697(Lout)m 1084(does)s 1590(not)s 1972(pro)s 3(vide)k 2772(the)s 3136(v)s 6(ast)k 3592(repertoire)s 4591(of)s 4878(graphical)s 5838(objects)s 6582(\(lines,)s 7235(circles,)s 7980(box)s 3(es,)k -8660(etc.\))s 0 8595(required)m 846(by)s 1132(diagrams.)s 2163(Instead,)s +8660(etc.\))s 0 10409(required)m 846(by)s 1132(diagrams.)s 2163(Instead,)s 2952(it)s 3135(pro)s 3(vides)k 3999(an)s 4274(escape)s 4958(route)s 5497(to)s 5727(some)s 6280(other)s 6823(language)s 7734(that)s 8144(does)s 8625(ha)s 4(v)k 3(e)k -0 8307(these)m 547(features,)s 1409(via)s 1761(its)s 220 fnt2 -2037 8304(@Gr)m 2(aphic)k 240 fnt1 3081 8307(symbol:)m -[ /Dest /LOUT16_4080_pre_grap_3 /DEST pdfmark +0 10121(these)m 547(features,)s 1409(via)s 1761(its)s 220 fnt2 +2037 10118(@Gr)m 2(aphic)k 240 fnt1 3081 10121(symbol:)m +[ /Dest /LOUT19_4213_pre_grap_3 /DEST pdfmark 220 fnt2 -480 7809({ 0 0 mo)m 3(v)k 5(eto)k 480 7521( 0 ysiz)m 3(e lineto)k -480 7233( xsiz)m 3(e ysiz)k 3(e lineto)k 480 6945( xsiz)m 3(e 0 lineto)k -480 6657( closepath)m 480 6369( strok)m 4(e)k 480 6081(})m 480 5793(@Gr)m 2(aphic)k -480 5505({ //0.2c)m 480 5217( ||0.2c hello)m 8(, w)k 2(or)k -3(ld ||0.2c)k -480 4929( //0.2c)m 480 4641(})m 240 fnt1 0 4147(The)m 428(result)s +480 9623({ 0 0 mo)m 3(v)k 5(eto)k 480 9335( 0 ysiz)m 3(e lineto)k +480 9047( xsiz)m 3(e ysiz)k 3(e lineto)k 480 8759( xsiz)m 3(e 0 lineto)k +480 8471( closepath)m 480 8183( strok)m 4(e)k 480 7895(})m 480 7607(@Gr)m 2(aphic)k +480 7319({ //0.2c)m 480 7031( ||0.2c hello)m 8(, w)k 2(or)k -3(ld ||0.2c)k +480 6743( //0.2c)m 480 6455(})m 240 fnt1 0 5961(The)m 428(result)s 1018(of)s 1289(the)s 1637(abo)s 3(v)k 3(e)k 2259(in)s 9(v)k 4(ocation)k 3313(of)s 3584(the)s -3932(symbol)s 220 fnt2 4692 4144(@Gr)m 2(aphic)k 240 fnt1 -5736 4147(is)m 1365 422 0 422 240 288 60 480 3385 LoutGr2 +3932(symbol)s 220 fnt2 4692 5958(@Gr)m 2(aphic)k 240 fnt1 +5736 5961(is)m 1365 422 0 422 240 288 60 480 5199 LoutGr2 0 0 moveto 0 ysize lineto xsize ysize lineto @@ -15195,41 +15829,42 @@ grestore 113 146(hello,)m 698(w)s 2(orld)k grestore -480 2669(The)m +480 4483(The)m 909(right)s 1421(parameter)s 2437(al)s 2(w)k 2(ays)k 3149(appears)s 3931(as)s 4183(part)s 4615(of)s 4888(the)s 5237(result,)s 5875(and)s 6281(indeed)s 6978(the)s 7327(result)s 7919(is)s 8130(al)s 2(w)k 2(ays)k 8843(an)s -0 2381(object)m 651(whose)s 1327(size)s 1761(is)s 1979(identical)s +0 4195(object)m 651(whose)s 1327(size)s 1761(is)s 1979(identical)s 2863(to)s 3110(the)s 3465(size)s 3900(of)s 4178(the)s -4534(right)s 5052(parameter)s 6074(with)s 220 fnt2 6563 2378(@OneCol)m -240 fnt1 7583 2381(and)m 220 fnt2 7995 2378(@OneRo)m 3(w)k -240 fnt1 0 2093(applied)m 762(to)s 1001(it.)s 1297(From)s +4534(right)s 5052(parameter)s 6074(with)s 220 fnt2 6563 4192(@OneCol)m +240 fnt1 7583 4195(and)m 220 fnt2 7995 4192(@OneRo)m 3(w)k +240 fnt1 0 3907(applied)m 762(to)s 1001(it.)s 1297(From)s 1875(no)s 6(w)k 2336(on)s 2633(we)s 2968(refer)s 3477(to)s 3716(this)s 4112(part)s 4543(of)s 4814(the)s -5162(result)s 5752(as)s 6002(the)s 240 fnt6 6350 2095(base)m -240 fnt1 6782 2093(.)m 480 1719(The)m 898(left)s 1264(parameter)s +5162(result)s 5752(as)s 6002(the)s 240 fnt6 6350 3909(base)m +240 fnt1 6782 3907(.)m 480 3533(The)m 898(left)s 1264(parameter)s 2267(is)s 2466(implementation-dependent:)s 5184(that)s 5591(is,)s 5847(its)s 6112(meaning)s 6978(is)s 7177(not)s 7532(de\207ned)s 8284(by)s -8567(Lout,)s 0 1431(and)m 421(dif)s 6(ferent)k 1313(implementations)s +8567(Lout,)s 0 3245(and)m 421(dif)s 6(ferent)k 1313(implementations)s 2975(could)s 3582(require)s 4332(dif)s 6(ferent)k 5224(v)s 6(alues)k 5898(for)s 6253(it.)s 6567(The)s 7012(follo)s 6(wing)k -8007(description)s 0 1143(applies)m 713(to)s 936(Basser)s 1618(Lout,)s +8007(description)s 0 2957(applies)m 713(to)s 936(Basser)s 1618(Lout,)s 2161(which)s 2787(uses)s 3235(the)s 3567(PostScript)s 4593(page)s 5086(description)s 6189(language)s 7093([)s -[ /Rect [7164 1143 7259 1305] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTadobe1990ps /ANN pdfmark +[ /Rect [7164 2957 7259 3119] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTadobe1990ps /ANN pdfmark 7164(1)s 7259(].)s -7487(Similar)s 8233(b)s 4(ut)k 8579(more)s 0 855(restricted)m +7487(Similar)s 8233(b)s 4(ut)k 8579(more)s 0 2669(restricted)m 962(possibilities)s 2172(e)s 3(xist)k 2698(with)s 3198(the)s 3563(PDF)s 4078(back)s 4609(end)s 5031(\(see)s 5488(a)s 5672(separate)s 6528(document)s 7550(distrib)s 4(uted)k 8644(with)s -0 567(Lout\);)m 643(to)s 882(include)s 1642(both,)s 2175(use)s -2550(the)s 220 fnt2 2898 564(@Bac)m 4(kEnd)k 240 fnt1 -4043 567(symbol)m 4803(lik)s 2(e)k 5215(this:)s +0 2381(Lout\);)m 643(to)s 882(include)s 1642(both,)s 2175(use)s +2550(the)s 220 fnt2 2898 2378(@Bac)m 4(kEnd)k 240 fnt1 +4043 2381(symbol)m 4803(lik)s 2(e)k 5215(this:)s grestore gsave 1417 -15423 translate -240 fnt1 0 0 0 0 240 288 60 LoutGraphic +240 fnt1 +0 0 0 0 240 288 60 LoutGraphic gsave 0 LoutMargSet grestore @@ -15243,7 +15878,7 @@ pgsave restore showpage -%%Page: 67 73 +%%Page: 69 75 %%BeginPageSetup %%PageResources: font Times-Roman %%+ font Times-Italic @@ -15266,17 +15901,18 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -240 fnt6 1417 -1580(3.39.)m 1991(@Gr)s 3(aphic)k 240 fnt5 -10248 -1583(67)m gsave +240 fnt6 1417 -1580(3.40.)m +1991(@Gr)s 3(aphic)k 240 fnt5 10249 -1583(69)m gsave 1417 -15423 translate -240 fnt1 9066 13368 0 13264 240 288 60 LoutGraphic +240 fnt1 +9066 13368 0 13264 240 288 60 LoutGraphic gsave 1 LoutMargSet grestore @@ -15303,8 +15939,8 @@ gsave grestore save gsave 200 dict begin lfigdict begin grestore -180 fnt6 107 1955(ysize)m -0 1388(ymark)m 180 fnt1 364 253(0)m 2551 1701 850 1134 180 288 45 676 293 LoutGr2 +180 fnt6 +107 1955(ysize)m 0 1388(ymark)m 180 fnt1 364 253(0)m 2551 1701 850 1134 180 288 45 676 293 LoutGr2 grestore save gsave 200 dict begin lfigdict begin grestore 2551 1701 850 1134 180 288 45 0 0 LoutGr2 @@ -15328,44 +15964,44 @@ grestore end end restore grestore -676 14(0)m 180 fnt6 -1526 15(xmark)m 3227(xsize)s end end restore +676 14(0)m +180 fnt6 1526 15(xmark)m 3227(xsize)s end end restore grestore -0 5003(In)m 265(addition)s 1115(to)s -1363(these)s 1920(four)s 2387(symbols)s 3245(and)s 3658(0,)s -3895(lengths)s 4646(may)s 5121(be)s 5412(denoted)s 6238(in)s -6490(centimetres,)s 7706(inches,)s 8434(points,)s 0 4715(ems,)m 492(f)s -13(')k 13(s,)k -850(v')s 13(s)k 1180(and)s 1584(s')s 13(s)k -1887(using)s 2459(the)s 2807(notation)s 240 fnt6 480 4179(l)m -220 fnt2 666 4174(cm)m 240 fnt1 1197 4177(instead)m 1932(of)s -2203(Lout')s 13(s)k 240 fnt6 3045 4179(l)m 240 fnt1 -3111 4177(c)m 240 fnt6 480 3891(l)m 220 fnt2 666 3886(in)m -240 fnt1 1197 3889(instead)m 1932(of)s 2203(Lout')s 13(s)k -240 fnt6 3045 3891(l)m 240 fnt1 3111 3889(i)m 240 fnt6 -480 3603(l)m 220 fnt2 666 3598(pt)m 240 fnt1 1197 3601(instead)m -1932(of)s 2203(Lout')s 13(s)k 240 fnt6 3045 3603(l)m -240 fnt1 3111 3601(p)m 240 fnt6 480 3315(l)m 220 fnt2 -666 3310(em)m 240 fnt1 1197 3313(instead)m 1932(of)s 2203(Lout')s 13(s)k -240 fnt6 3045 3315(l)m 240 fnt1 3111 3313(m)m 240 fnt6 -480 3027(l)m 220 fnt2 666 3022(ft)m 240 fnt1 1197 3025(instead)m -1932(of)s 2203(Lout')s 13(s)k 240 fnt6 3045 3027(l)m -240 fnt1 3111 3025(f)m 240 fnt6 480 2739(l)m 220 fnt2 -666 2734(vs)m 240 fnt1 1197 2737(instead)m 1932(of)s 2203(Lout')s 13(s)k -240 fnt6 3045 2739(l)m 240 fnt1 3111 2737(v)m 240 fnt6 -480 2451(l)m 220 fnt2 666 2446(sp)m 240 fnt1 1197 2449(instead)m -1932(of)s 2203(Lout')s 13(s)k 240 fnt6 3045 2451(l)m -240 fnt1 3111 2449(s)m 0 1908(Note)m 521(that)s 939(there)s -1472(must)s 1997(be)s 2279(a)s 2445(space)s 3032(between)s -3886(the)s 4234(number)s 5025(and)s 5429(its)s 5705(unit,)s -6184(unlik)s 2(e)k 6836(Lout)s 7348(proper)s 13(.)k -480 1534(A)m 732(point)s 1306(within)s 1996(the)s 2366(base)s -2869(\(and,)s 3423(with)s 3927(care,)s 4453(a)s 4642(point)s -5216(outside)s 5985(it\))s 6267(may)s 6755(be)s 7059(denoted)s -7897(by)s 8213(a)s 8401(pair)s 8855(of)s 0 1246(lengths.)m -855(F)s 3(or)k 1244(e)s 3(xample,)k 220 fnt2 -480 749(xmar)m -3(k ymar)k -3(k)k 240 fnt1 0 251(is)m -210(the)s 558(point)s 1110(where)s 1750(the)s 2098(marks)s -2733(cross,)s 3331(and)s +0 5003(In)m 265(addition)s +1115(to)s 1363(these)s 1920(four)s 2387(symbols)s 3245(and)s +3658(0,)s 3895(lengths)s 4646(may)s 5121(be)s 5412(denoted)s +6238(in)s 6490(centimetres,)s 7706(inches,)s 8434(points,)s 0 4715(ems,)m +492(f)s -13(')k 13(s,)k 850(v')s 13(s)k +1180(and)s 1584(s')s 13(s)k 1887(using)s 2459(the)s +2807(notation)s 240 fnt6 480 4179(l)m 220 fnt2 666 4174(cm)m +240 fnt1 1197 4177(instead)m 1932(of)s 2203(Lout')s 13(s)k +240 fnt6 3045 4179(l)m 240 fnt1 3111 4177(c)m 240 fnt6 +480 3891(l)m 220 fnt2 666 3886(in)m 240 fnt1 1197 3889(instead)m +1932(of)s 2203(Lout')s 13(s)k 240 fnt6 3045 3891(l)m +240 fnt1 3111 3889(i)m 240 fnt6 480 3603(l)m 220 fnt2 +666 3598(pt)m 240 fnt1 1197 3601(instead)m 1932(of)s 2203(Lout')s 13(s)k +240 fnt6 3045 3603(l)m 240 fnt1 3111 3601(p)m 240 fnt6 +480 3315(l)m 220 fnt2 666 3310(em)m 240 fnt1 1197 3313(instead)m +1932(of)s 2203(Lout')s 13(s)k 240 fnt6 3045 3315(l)m +240 fnt1 3111 3313(m)m 240 fnt6 480 3027(l)m 220 fnt2 +666 3022(ft)m 240 fnt1 1197 3025(instead)m 1932(of)s 2203(Lout')s 13(s)k +240 fnt6 3045 3027(l)m 240 fnt1 3111 3025(f)m 240 fnt6 +480 2739(l)m 220 fnt2 666 2734(vs)m 240 fnt1 1197 2737(instead)m +1932(of)s 2203(Lout')s 13(s)k 240 fnt6 3045 2739(l)m +240 fnt1 3111 2737(v)m 240 fnt6 480 2451(l)m 220 fnt2 +666 2446(sp)m 240 fnt1 1197 2449(instead)m 1932(of)s 2203(Lout')s 13(s)k +240 fnt6 3045 2451(l)m 240 fnt1 3111 2449(s)m 0 1908(Note)m +521(that)s 939(there)s 1472(must)s 1997(be)s 2279(a)s +2445(space)s 3032(between)s 3886(the)s 4234(number)s 5025(and)s +5429(its)s 5705(unit,)s 6184(unlik)s 2(e)k 6836(Lout)s +7348(proper)s 13(.)k 480 1534(A)m 732(point)s 1306(within)s +1996(the)s 2366(base)s 2869(\(and,)s 3423(with)s 3927(care,)s +4453(a)s 4642(point)s 5216(outside)s 5985(it\))s 6267(may)s +6755(be)s 7059(denoted)s 7897(by)s 8213(a)s 8401(pair)s +8855(of)s 0 1246(lengths.)m 855(F)s 3(or)k 1244(e)s 3(xample,)k +220 fnt2 480 749(xmar)m -3(k ymar)k -3(k)k 240 fnt1 +0 251(is)m 210(the)s 558(point)s 1110(where)s 1750(the)s +2098(marks)s 2733(cross,)s 3331(and)s grestore gsave 1417 -15423 translate @@ -15383,7 +16019,7 @@ pgsave restore showpage -%%Page: 68 74 +%%Page: 70 76 %%BeginPageSetup %%PageResources: font Times-Roman %%+ font Times-Bold @@ -15406,40 +16042,41 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -240 fnt5 1417 -1583(68)m 240 fnt6 7498 -1580(Chapter)m 8348(3.)s -8622(Pr)s 8(ede\207ned)k 9717(symbols)s gsave +240 fnt5 1417 -1583(70)m +240 fnt6 7498 -1580(Chapter)m 8348(3.)s 8622(Pr)s 8(ede\207ned)k +9717(symbols)s gsave 1417 -15423 translate 240 fnt1 9066 13368 0 13271 240 288 60 LoutGraphic gsave 0 LoutMargSet grestore -220 fnt2 480 13214(0 2 cm)m -240 fnt1 0 12759(is)m 195(a)s 346(point)s 883(on)s -1164(the)s 1497(left)s 1859(edge,)s 2402(tw)s 2(o)k -2797(centimetres)s 3933(abo)s 3(v)k 3(e)k 4539(the)s -4872(bottom)s 5595(left-hand)s 6499(corner)s 13(.)k 7245(These)s -7857(tw)s 2(o)k 8251(numbers)s 0 12471(are)m 347(called)s -975(the)s 240 fnt6 1323 12473(x)m 1489(coor)s 8(dinate)k -240 fnt1 2571 12471(and)m 2975(the)s 240 fnt6 3323 12473(y)m -3485(coor)s 8(dinate)k 240 fnt1 4567 12471(of)m 4838(the)s -5186(point.)s 480 12097(The)m 906(\207rst)s 1335(step)s 1770(in)s -2011(specifying)s 3057(a)s 3221(graphic)s 3988(object)s 4630(is)s -4837(to)s 5074(de\207ne)s 5712(a)s 240 fnt6 5876 12099(path)m -240 fnt1 6297 12097(.)m 6458(A)s 6686(path)s 7152(can)s -7539(be)s 7818(thought)s 8608(of)s 8876(as)s 0 11809(the)m -349(track)s 888(of)s 1161(a)s 1328(pen)s 1733(mo)s 3(ving)k -2516(o)s 3(v)k 3(er)k 2996(the)s 3346(page.)s -3963(The)s 4393(pen)s 4797(may)s 5265(be)s 5548(up)s -5842(\(not)s 6289(dra)s 3(wing\))k 7199(or)s 7460(do)s 6(wn)k -8045(\(dra)s 3(wing)k 8960(a)s 0 11521(line)m 414(or)s -673(curv)s 3(e\))k 1329(as)s 1579(it)s 1771(mo)s 3(v)k 3(es.)k +220 fnt2 480 13214(0 2 cm)m 240 fnt1 +0 12759(is)m 195(a)s 346(point)s 883(on)s 1164(the)s +1497(left)s 1859(edge,)s 2402(tw)s 2(o)k 2797(centimetres)s +3933(abo)s 3(v)k 3(e)k 4539(the)s 4872(bottom)s +5595(left-hand)s 6499(corner)s 13(.)k 7245(These)s 7857(tw)s 2(o)k +8251(numbers)s 0 12471(are)m 347(called)s 975(the)s 240 fnt6 +1323 12473(x)m 1489(coor)s 8(dinate)k 240 fnt1 2571 12471(and)m +2975(the)s 240 fnt6 3323 12473(y)m 3485(coor)s 8(dinate)k +240 fnt1 4567 12471(of)m 4838(the)s 5186(point.)s 480 12097(The)m +906(\207rst)s 1335(step)s 1770(in)s 2011(specifying)s 3057(a)s +3221(graphic)s 3988(object)s 4630(is)s 4837(to)s 5074(de\207ne)s +5712(a)s 240 fnt6 5876 12099(path)m 240 fnt1 6297 12097(.)m +6458(A)s 6686(path)s 7152(can)s 7539(be)s 7818(thought)s +8608(of)s 8876(as)s 0 11809(the)m 349(track)s 888(of)s +1161(a)s 1328(pen)s 1733(mo)s 3(ving)k 2516(o)s 3(v)k 3(er)k +2996(the)s 3346(page.)s 3963(The)s 4393(pen)s 4797(may)s +5265(be)s 5548(up)s 5842(\(not)s 6289(dra)s 3(wing\))k +7199(or)s 7460(do)s 6(wn)k 8045(\(dra)s 3(wing)k +8960(a)s 0 11521(line)m 414(or)s 673(curv)s 3(e\))k +1329(as)s 1579(it)s 1771(mo)s 3(v)k 3(es.)k 2554(The)s 2982(entire)s 3581(path)s 4050(is)s 4260(a)s 4426(sequence)s 5359(of)s 5630(the)s 5978(follo)s 6(wing)k 6955(items:)s 240 fnt6 1847 11149(x)m 2013(y)s 220 fnt2 @@ -15508,7 +16145,7 @@ 240 fnt1 3600 3482(The)m 4028(pen)s 4431(will)s 4857(dra)s 3(w)k 5386(lines)s 5888(of)s 6159(the)s 6507(gi)s 6(v)k 3(en)k 7087(width.)s -[ /Dest /LOUT12_1501_pre_grap_1 /DEST pdfmark +[ /Dest /LOUT16_1489_pre_grap_1 /DEST pdfmark 220 fnt2 1553 2974([)m 240 fnt6 1668 2979(length)m 220 fnt2 2321 2974(])m 2430(0)s 2605(setdash)s 240 fnt1 3600 2977(The)m 4034(pen)s 4444(will)s 4876(dra)s 3(w)k @@ -15516,7 +16153,7 @@ 7648(do)s 6(wn,)k 8289(with)s 8778(the)s 3600 2689(dashes)m 4289(each)s 4784(of)s 5055(the)s 5403(gi)s 6(v)k 3(en)k 5983(length.)s -[ /Dest /LOUT12_1501_pre_grap_2 /DEST pdfmark +[ /Dest /LOUT16_1489_pre_grap_2 /DEST pdfmark 0 2186(These)m 627(options)s 1383(are)s 1730(follo)s 6(wed)k 2632(by)s 2926(the)s 3274(w)s 2(ord)k 220 fnt2 3822 2183(strok)m 4(e)k 240 fnt1 4408 2186(.)m 4572(So,)s @@ -15546,7 +16183,7 @@ pgsave restore showpage -%%Page: 69 75 +%%Page: 71 77 %%BeginPageSetup %%PageResources: font Times-Roman %%+ font Times-Italic @@ -15569,24 +16206,24 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -240 fnt6 1417 -1580(3.39.)m 1991(@Gr)s 3(aphic)k 240 fnt5 -10249 -1583(69)m gsave +240 fnt6 1417 -1580(3.40.)m +1991(@Gr)s 3(aphic)k 240 fnt5 10256 -1583(71)m gsave 1417 -15423 translate -240 fnt1 9066 13368 0 13368 240 288 60 LoutGraphic +240 fnt1 +9066 13368 0 13368 240 288 60 LoutGraphic gsave 1 LoutMargSet grestore -480 12940(When)m 1106(\207lling)s 1726(in)s 1965(the)s -2310(re)s 3(gion)k 2971(enclosed)s 3862(by)s 4153(a)s -4315(path,)s 4830(the)s 5175(main)s 5706(option)s 6371(is)s -220 fnt2 6578 12937(setg)m 2(r)k 2(a)k 6(y)k +480 12940(When)m 1106(\207lling)s 1726(in)s 1965(the)s 2310(re)s 3(gion)k +2971(enclosed)s 3862(by)s 4153(a)s 4315(path,)s 4830(the)s +5175(main)s 5706(option)s 6371(is)s 220 fnt2 6578 12937(setg)m 2(r)k 2(a)k 6(y)k 240 fnt1 7286 12940(,)m 7389(which)s 8027(determines)s 0 12652(the)m 348(shade)s 949(of)s 1220(gre)s 3(y)k 1696(to)s 1935(use,)s 2361(on)s 2658(a)s 2824(scale)s 3357(from)s @@ -15634,7 +16271,7 @@ [ /Rect [6410 5262 6524 5424] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTkingston1995lout_user /ANN pdfmark 6410(4)s 6524(,)s 6652(Chapter)s 7490(9],)s -[ /Dest /LOUT16_4080_pre_grap_4 /DEST pdfmark +[ /Dest /LOUT19_4213_pre_grap_4 /DEST pdfmark 7817(to)s 8077(be)s 8380(sure)s 8855(of)s 0 4974(a)m 4(v)k 4(oiding)k 883(these)s 1430(errors.)s 480 4600(PostScript)m 1543(e)s 3(xperts)k 2302(may)s 2789(\207nd)s @@ -15670,7 +16307,8 @@ grestore gsave 1417 -15423 translate -240 fnt1 0 0 0 0 240 288 60 LoutGraphic +240 fnt1 +0 0 0 0 240 288 60 LoutGraphic gsave 1 LoutMargSet grestore @@ -15684,7 +16322,7 @@ pgsave restore showpage -%%Page: 70 76 +%%Page: 72 78 %%BeginPageSetup %%PageResources: font Times-Roman %%+ font Times-Bold @@ -15710,37 +16348,38 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -240 fnt5 1417 -1583(70)m 240 fnt6 7498 -1580(Chapter)m 8348(3.)s -8622(Pr)s 8(ede\207ned)k 9717(symbols)s gsave +240 fnt5 1417 -1583(72)m +240 fnt6 7498 -1580(Chapter)m 8348(3.)s 8622(Pr)s 8(ede\207ned)k +9717(symbols)s gsave 1417 -15423 translate 240 fnt1 9066 13368 0 13259 240 288 60 LoutGraphic gsave 0 LoutMargSet grestore -0 13205(where)m 240 fnt6 -628 13207(x)m 240 fnt4 733 13199(,)m 240 fnt6 802 13207(y)m -240 fnt1 952 13205(is)m 1149(the)s 1485(position)s 2300(of)s -2558(the)s 2894(lo)s 6(wer)k 3479(left)s 3843(corner)s -4501(of)s 4759(the)s 5095(base.)s 5671(Ha)s 4(ving)k -6412(tw)s 2(o)k 6810(parts)s 7312(permits)s 8066(brack)s 2(eting)k -0 12917(operations,)m 1112(lik)s 2(e)k 220 fnt2 1533 12914(sa)m 4(v)k 5(e)k +0 13205(where)m 240 fnt6 628 13207(x)m +240 fnt4 733 13199(,)m 240 fnt6 802 13207(y)m 240 fnt1 +952 13205(is)m 1149(the)s 1485(position)s 2300(of)s 2558(the)s +2894(lo)s 6(wer)k 3479(left)s 3843(corner)s 4501(of)s +4759(the)s 5095(base.)s 5671(Ha)s 4(ving)k 6412(tw)s 2(o)k +6810(parts)s 7312(permits)s 8066(brack)s 2(eting)k 0 12917(operations,)m +1112(lik)s 2(e)k 220 fnt2 1533 12914(sa)m 4(v)k 5(e)k 240 fnt1 2049 12917(and)m 220 fnt2 2462 12914(restore)m 240 fnt1 3206 12917(or)m 220 fnt2 3474 12914(begin)m 240 fnt1 4065 12917(and)m 220 fnt2 4478 12914(end)m 240 fnt1 4832 12917(,)m 4949(to)s 5197(enclose)s 5979(an)s 6271(object.)s 7028(See)s 7438(the)s 7795(source)s 8484(\207le)s 8855(of)s 0 12629(the)m 348(Diag)s 866(package)s 1706(for)s 2044(e)s 3(xamples.)k 240 fnt5 -0 11836(3.40.)m 591(@PlainGraphic)s +0 11836(3.41.)m 591(@PlainGraphic)s [ /Dest /LOUTplaingraphic /DEST pdfmark -[ /Dest /LOUT16_4080_pre_plai_1 /DEST pdfmark +[ /Dest /LOUT19_4213_pre_plai_1 /DEST pdfmark 240 fnt1 567 11359(The)m 220 fnt2 1023 11356(@PlainGr)m 2(aphic)k 240 fnt1 2580 11359(symbol)m 3368(is)s 3606(a)s 4(v)k 3(ery)k 4211(rudimentary)s 5461(analogue)s @@ -15758,15 +16397,15 @@ 4096 9775(is)m 4328(used)s 4847(in)s 5112(the)s 220 fnt2 5482 9772(tb)m 4(l)k 240 fnt1 5777 9775(table-dra)m 3(wing)k 7176(package)s 8038(to)s 8299(produce)s 0 9487(plain-te)m 3(xt)k -972(rules.)s 240 fnt5 0 8694(3.41.)m 591(@IncludeGraphic)s 2491(and)s +972(rules.)s 240 fnt5 0 8694(3.42.)m 591(@IncludeGraphic)s 2491(and)s 2932(@SysIncludeGraphic)s [ /Dest /LOUTincludegraphic /DEST pdfmark -[ /Dest /LOUT16_4080_pre_incg_1 /DEST pdfmark +[ /Dest /LOUT19_4213_pre_incg_1 /DEST pdfmark -[ /Dest /LOUT16_4080_pre_incg_2 /DEST pdfmark +[ /Dest /LOUT19_4213_pre_incg_2 /DEST pdfmark -[ /Dest /LOUT16_4080_pre_incg_3 /DEST pdfmark +[ /Dest /LOUT19_4213_pre_incg_3 /DEST pdfmark 240 fnt1 540 8217(These)m 1167(symbols)s 2016(instruct)s 2792(Lout)s 3304(to)s 3543(incorporate)s 4687(a)s 4853(separately)s 5875(created)s 6622(illustration:)s 220 fnt2 480 7716(@IncludeGr)m 2(aphic "m)k 3(ypor)k -8(tr)k 2(ait.eps")k @@ -15803,7 +16442,7 @@ 3153(object)s 3797(has)s 4167(zero)s 4631(size.)s 220 fnt2 480 4451(@IncludeGr)m 2(aphic)k 240 fnt1 2228 4454(searches)m 3085(the)s 3430(same)s 3974(directories)s 5029(that)s 220 fnt2 5444 4451(@Include)m -240 fnt1 6423 4454(does)m 6910(\(Section)s 7760(3.44\).)s 220 fnt2 +240 fnt1 6423 4454(does)m 6910(\(Section)s 7760(3.45\).)s 220 fnt2 8420 4451(@Sys)m 9002(-)s 0 4163(IncludeGr)m 2(aphic)k 240 fnt1 1562 4166(is)m 1806(the)s 2188(same)s 2769(as)s 220 fnt2 3053 4163(@IncludeGr)m 2(aphic)k 240 fnt1 4744 4166(,)m 4885(e)s 3(xcept)k @@ -15824,14 +16463,14 @@ 8297(This)s 8765(\207le)s 0 2928(is)m 210(remo)s 3(v)k 3(ed)k 1099(immediately)s 2347(after)s 2843(it)s 3035(is)s 3245(copied)s 3941(into)s 4366(the)s 4714(output)s 5386(\207le.)s 240 fnt5 -0 2135(3.42.)m 591(@IncludeGraphicRepeated)s 3445(and)s 3886(@SysIncludeGraphicRepeated)s +0 2135(3.43.)m 591(@IncludeGraphicRepeated)s 3445(and)s 3886(@SysIncludeGraphicRepeated)s [ /Dest /LOUTincludegraphicrepeated /DEST pdfmark -[ /Dest /LOUT16_4080_pre_incr_1 /DEST pdfmark +[ /Dest /LOUT19_4213_pre_incr_1 /DEST pdfmark -[ /Dest /LOUT16_4080_pre_incr_2 /DEST pdfmark +[ /Dest /LOUT19_4213_pre_incr_2 /DEST pdfmark -[ /Dest /LOUT16_4080_pre_incr_3 /DEST pdfmark +[ /Dest /LOUT19_4213_pre_incr_3 /DEST pdfmark 240 fnt1 548 1658(These)m 1183(symbols,)s 2097(which)s 2747(are)s 3103(allo)s 6(wed)k 3920(only)s 4409(at)s 4649(the)s 5006(start)s 5484(of)s @@ -15865,7 +16504,7 @@ pgsave restore showpage -%%Page: 71 77 +%%Page: 73 79 %%BeginPageSetup %%PageResources: font Times-Roman %%+ font Times-Italic @@ -15888,23 +16527,24 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -240 fnt6 1417 -1580(3.42.)m 1991(@IncludeGr)s 3(aphicRepeated)k 4679(and)s -5105(@SysIncludeGr)s 3(aphicRepeated)k 240 fnt5 10256 -1583(71)m gsave +240 fnt6 1417 -1580(3.43.)m +1991(@IncludeGr)s 3(aphicRepeated)k 4679(and)s 5105(@SysIncludeGr)s 3(aphicRepeated)k +240 fnt5 10250 -1583(73)m gsave 1417 -15423 translate 240 fnt1 9066 13368 0 13259 240 288 60 LoutGraphic gsave 1 LoutMargSet grestore -0 13205(output)m -678(\207le)s 1045(just)s 1456(once,)s 2021(at)s 2260(the)s -2614(start,)s 3137(rather)s 3759(than)s 4234(o)s 3(v)k 3(er)k +0 13205(output)m 678(\207le)s +1045(just)s 1456(once,)s 2021(at)s 2260(the)s 2614(start,)s +3137(rather)s 3759(than)s 4234(o)s 3(v)k 3(er)k 4720(and)s 5130(o)s 3(v)k 3(er)k 5615(ag)s 1(ain)k 6195(for)s 6539(e)s 6(v)k 3(ery)k 7122(time)s 7608(it)s 7806(appears)s 8593(in)s 8843(an)s 220 fnt2 @@ -15970,15 +16610,15 @@ 2561(a)s 2728(single)s 3356(\207lter)s 3867(to)s 4107(read)s 4577(all)s 4871(the)s 5220(EPS)s 5678(\207les,)s 6184(rather)s 6801(than)s 7271(a)s 7438(separate)s 8277(\207lter)s 8788(for)s -0 7187(each)m 495(one.)s 240 fnt5 0 6444(3.43.)m 591(@Pr)s 4(ependGraphic and @SysPr)k 4(ependGraphic)k +0 7187(each)m 495(one.)s 240 fnt5 0 6444(3.44.)m 591(@Pr)s 4(ependGraphic and @SysPr)k 4(ependGraphic)k [ /Dest /LOUTprependgraphic /DEST pdfmark -[ /Dest /LOUT16_4080_pre_prep_1 /DEST pdfmark +[ /Dest /LOUT19_4213_pre_prep_1 /DEST pdfmark -[ /Dest /LOUT16_4080_pre_prep_2 /DEST pdfmark +[ /Dest /LOUT19_4213_pre_prep_2 /DEST pdfmark -[ /Dest /LOUT16_4080_pre_prep_3 /DEST pdfmark +[ /Dest /LOUT19_4213_pre_prep_3 /DEST pdfmark 240 fnt1 582 5967(These)m 1252(symbols,)s 2200(which)s 2885(may)s 3394(appear)s 4134(an)s 3(ywhere)k 5160(that)s 5621(a)s 5830(de\207nition)s 6847(or)s 220 fnt2 7149 5964(@Use)m 240 fnt1 @@ -16010,29 +16650,30 @@ 1957(the)s 2305(same)s 2852(places)s 3500(as)s 220 fnt2 3750 3236(@Include)m 240 fnt1 4732 3239(and)m 220 fnt2 5136 3236(@SysInclude)m 240 fnt1 6484 3239(respecti)m 6(v)k 3(ely)k 15(.)k -240 fnt5 0 2446(3.44.)m 591(@Include and @SysInclude)s +480 2865(If)m 699(the)s 1036(same)s 1572(\207le)s 1921(name)s +2484(appears)s 3254(in)s 3486(tw)s 2(o)k 220 fnt2 +3884 2862(@PrependGr)m 2(aphic)k 240 fnt1 5746 2865(or)m 220 fnt2 +5994 2862(@SysPrependGr)m 2(aphic)k 240 fnt1 8221 2865(symbols,)m 0 2577(the)m +385(second)s 1146(occurrence)s 2288(is)s 2536(silently)s 3330(ignored.)s +4263(This)s 4777(allo)s 6(ws)k 5484(se)s 6(v)k 3(eral)k +6243(packages)s 7209(to)s 7486(share)s 8084(PostScript)s 0 2289(resources:)m +1059(each)s 1545(includes)s 2384(the)s 2722(appropriate)s 3857(prepend)s +4677(\207le,)s 5079(b)s 4(ut)k 5432(in)s 5666(the)s +6005(end)s 6399(only)s 6870(one)s 7263(cop)s 2(y)k +7771(ot)s 8008(it)s 8191(is)s 8391(printed)s 0 2001(to)m +239(Lout')s 13(s)k 901(output.)s 240 fnt5 0 1208(3.45.)m +591(@Include and @SysInclude)s [ /Dest /LOUTinclude /DEST pdfmark -[ /Dest /LOUT16_4080_pre_incl_1 /DEST pdfmark +[ /Dest /LOUT19_4213_pre_incl_1 /DEST pdfmark + +[ /Dest /LOUT19_4213_pre_incl_2 /DEST pdfmark +240 fnt1 562 731(These)m 1212(symbols)s 2083(instruct)s +2882(Lout)s 3417(to)s 3678(temporarily)s 4869(switch)s 5572(to)s +5834(reading)s 6627(another)s 7426(\207le,)s 7861(whose)s 8552(name)s +0 443(appears)m 781(in)s 1024(braces)s 1685(follo)s 6(wing)k +2662(the)s 3010(symbol.)s 3879(F)s 3(or)k 4268(e)s 3(xample,)k -[ /Dest /LOUT16_4080_pre_incl_2 /DEST pdfmark -240 fnt1 562 1969(These)m -1212(symbols)s 2083(instruct)s 2882(Lout)s 3417(to)s 3678(temporarily)s -4869(switch)s 5572(to)s 5834(reading)s 6627(another)s 7426(\207le,)s -7861(whose)s 8552(name)s 0 1681(appears)m 781(in)s 1024(braces)s -1685(follo)s 6(wing)k 2662(the)s 3010(symbol.)s 3879(F)s 3(or)k -4268(e)s 3(xample,)k 220 fnt2 480 1180(@Include { "/usr/lout/langdefs" })m 240 fnt1 -0 681(will)m 455(cause)s 1072(the)s 1450(contents)s 2328(of)s -2629(\207le)s 3020(/usr/lout/langdefs)s 4773(to)s 5042(be)s 5354(read)s -5853(at)s 6115(the)s 6493(point)s 7075(it)s 7297(occurs.)s -8115(After)s 8708(that)s 0 393(\207le)m 405(is)s 659(read,)s -1221(the)s 1613(current)s 2393(\207le)s 2798(is)s 3052(resumed.)s -4070(The)s 4542(included)s 5468(\207le)s 5873(may)s 6383(contain)s -7188(arbitrary)s 8107(Lout)s 8664(te)s 3(xt,)k 0 105(including)m -958(other)s 220 fnt2 1511 102(@Include)m 240 fnt1 2494 105(commands.)m -3697(The)s 4127(\207le)s 4489(is)s 4701(searched)s 5597(for)s -5936(\207rst)s 6369(in)s 6614(the)s 6963(current)s 7701(directory)s 15(,)k -8657(then)s grestore gsave 1417 -15423 translate @@ -16050,7 +16691,7 @@ pgsave restore showpage -%%Page: 72 78 +%%Page: 74 80 %%BeginPageSetup %%PageResources: font Times-Roman %%+ font Times-Bold @@ -16073,144 +16714,139 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -240 fnt5 1417 -1583(72)m 240 fnt6 7498 -1580(Chapter)m 8348(3.)s -8622(Pr)s 8(ede\207ned)k 9717(symbols)s gsave +240 fnt5 1417 -1583(74)m +240 fnt6 7498 -1580(Chapter)m 8348(3.)s 8622(Pr)s 8(ede\207ned)k +9717(symbols)s gsave 1417 -15423 translate -240 fnt1 9066 13368 0 13259 240 288 60 LoutGraphic +240 fnt1 9066 13368 0 13264 240 288 60 LoutGraphic gsave 0 LoutMargSet grestore -0 13205(in)m 259(a)s -442(sequence)s 1392(of)s 1680(standard)s 2565(places)s 3229(which)s -3888(are)s 4252(not)s 4635(necessarily)s 5767(the)s 6131(same)s -6695(places)s 7360(that)s 7795(databases)s 8779(are)s 0 12917(searched)m -894(for)s 13(.)k 220 fnt2 1323 12914(@SysInclude)m 240 fnt1 -2671 12917(searches)m 3531(the)s 3879(standard)s 4747(places)s 5395(only)s 15(.)k -240 fnt5 0 12124(3.45.)m 591(@BackEnd)s 1814(and)s 2255(the)s +220 fnt2 480 13207(@Include { "/usr/lout/langdefs" })m 240 fnt1 +0 12708(will)m 455(cause)s 1072(the)s 1450(contents)s 2328(of)s +2629(\207le)s 3020(/usr/lout/langdefs)s 4773(to)s 5042(be)s 5354(read)s +5853(at)s 6115(the)s 6493(point)s 7075(it)s 7297(occurs.)s +8115(After)s 8708(that)s 0 12420(\207le)m 405(is)s 659(read,)s +1221(the)s 1613(current)s 2393(\207le)s 2798(is)s 3052(resumed.)s +4070(The)s 4542(included)s 5468(\207le)s 5873(may)s 6383(contain)s +7188(arbitrary)s 8107(Lout)s 8664(te)s 3(xt,)k 0 12132(including)m +958(other)s 220 fnt2 1511 12129(@Include)m 240 fnt1 2494 12132(commands.)m +3697(The)s 4127(\207le)s 4489(is)s 4701(searched)s 5597(for)s +5936(\207rst)s 6369(in)s 6614(the)s 6963(current)s 7701(directory)s 15(,)k +8657(then)s 0 11844(in)m 259(a)s 442(sequence)s 1392(of)s +1680(standard)s 2565(places)s 3229(which)s 3888(are)s 4252(not)s +4635(necessarily)s 5767(the)s 6131(same)s 6695(places)s 7360(that)s +7795(databases)s 8779(are)s 0 11556(searched)m 894(for)s 13(.)k +220 fnt2 1323 11553(@SysInclude)m 240 fnt1 2671 11556(searches)m 3531(the)s +3879(standard)s 4747(places)s 5395(only)s 15(.)k 480 11182(From)m +1084(V)s 26(ersion)k 1899(3.27,)s 2452(a)s 2645(special)s +3389(beha)s 4(viour)k 4429(has)s 4826(been)s 5361(instituted)s +6335(when)s 6937(an)s 7247(attempt)s 8049(is)s 8286(made)s +8887(to)s 220 fnt2 0 10891(@Include)m 240 fnt1 973 10894(or)m +220 fnt2 1223 10891(@SysInclude)m 240 fnt1 2562 10894(the)m 2901(same)s +3439(\207le)s 3791(twice.)s 4403(If)s 4623(a)s 4780(second)s +5494(or)s 5744(subsequent)s 6859(attempt)s 7626(occurs)s 8292(after)s +8778(the)s 0 10606(end)m 402(of)s 671(de\207nitions,)s 220 fnt2 +1785 10603(@Use)m 240 fnt1 2448 10606(clauses,)m 3242(and)s 220 fnt2 +3644 10603(@Database)m 240 fnt1 4855 10606(clauses)m 5594(\(i.e.)s 6006(if)s +6221(it)s 6410(occurs)s 7083(within)s 7748(the)s 8094(content)s +8855(of)s 0 10318(the)m 342(document\),)s 1465(it)s 1650(will)s +2069(go)s 2355(ahead,)s 3014(thus)s 3457(allo)s 6(wing)k +4334(the)s 4675(repeated)s 5535(inclusion)s 6463(of)s 6727(\207les)s +7169(containing)s 8225(objects)s 8946(\211)s 0 10030(not)m 370(necessarily)s +1490(recommended,)s 2957(b)s 4(ut)k 3324(certainly)s 4217(one)s +4624(w)s 2(ay)k 5080(of)s 5356(repeating)s 6302(information.)s +7599(But)s 8010(if)s 8232(a)s 8403(second)s 0 9742(or)m +270(subsequent)s 1406(attempt)s 2194(occurs)s 2881(within)s 3561(the)s +3921(re)s 3(gion)k 4598(of)s 4881(de\207nitions,)s 220 fnt2 +6010 9739(@Use)m 240 fnt1 6687 9742(clauses,)m 7496(and)s 220 fnt2 +7912 9739(@Database)m 240 fnt1 0 9454(clauses,)m 797(then)s 1266(that)s +1684(attempt)s 2460(will)s 2886(be)s 3168(silently)s 3925(ignored.)s +480 9080(This)m 955(beha)s 4(viour)k 1967(is)s 2175(useful)s +2813(for)s 3149(situations)s 4115(where)s 4754(tw)s 2(o)k +5162(packages)s 6089(depend)s 6837(on)s 7133(a)s 7298(third,)s +7854(caled,)s 8464(say)s 15(,)k 220 fnt2 8873 9077(C)m +240 fnt1 9022 9080(.)m 0 8792(W)m 19(e)k 369(can)s +758(then)s 1227(place)s 220 fnt2 480 8291(@SysInclude { C })m 240 fnt1 +0 7793(at)m 222(the)s 559(start)s 1018(of)s 1279(both)s +1751(packages.)s 2781(If)s 3001(neither)s 3713(package)s 4542(is)s +4742(included,)s 5662(then)s 220 fnt2 6120 7790(C)m 240 fnt1 +6319 7793(w)m 2(on')k 4(t)k 6920(be)s 7191(either)s 13(.)k +7875(But)s 8270(if)s 8476(one)s 8867(or)s 0 7505(both)m +483(is)s 693(included,)s 1624(then)s 220 fnt2 2093 7502(C)m +240 fnt1 2301 7505(will)m 2727(be)s 3009(included)s 3891(just)s +4296(once)s 4803(at)s 5035(the)s 5383(start)s 5853(of)s +6124(the)s 6471(\207rst.)s 6946(An)s 3(y)k 7410(pattern)s +8130(of)s 8400(ac)s 3(yclic)k 0 7217(dependencies)m 1342(between)s +2198(packages)s 3129(can)s 3520(be)s 3805(e)s 3(xpressed)k +4805(with)s 5289(this)s 5688(mechanism,)s 6886(just)s 7294(by)s +7590(including)s 8550(e)s 6(v)k 3(ery)k 0 6929(package)m +840(that)s 1259(a)s 1426(gi)s 6(v)k 3(en)k +2007(package)s 2848(depends)s 3684(on)s 3982(at)s 4215(the)s +4564(start)s 5035(of)s 5306(the)s 5655(\207le)s 6017(containing)s +7081(that)s 7500(package.)s 8449(Cyclic)s 0 6641(dependencies)m 1340(are)s +1687(be)s 3(yond)k 2448(Lout')s 13(s)k 3110(one-pass)s +3998(comprehension)s 5517(an)s 3(yw)k 2(ay)k 15(.)k +240 fnt5 0 5848(3.46.)m 591(@BackEnd)s 1814(and)s 2255(the)s 2629(PlainT)s 22(ext)k 3663(and)s 4104(PDF)s 4623(back)s 5172(ends)s [ /Dest /LOUTbackend /DEST pdfmark -[ /Dest /LOUT16_4080_pre_bend_1 /DEST pdfmark -240 fnt1 547 11692(The)m 220 fnt2 983 11689(@Bac)m 4(kEnd)k -240 fnt1 2136 11692(symbol,)m 2955(which)s 3605(tak)s 2(es)k +[ /Dest /LOUT19_4213_pre_bend_1 /DEST pdfmark +240 fnt1 547 5416(The)m 220 fnt2 983 5413(@Bac)m 4(kEnd)k +240 fnt1 2136 5416(symbol,)m 2955(which)s 3605(tak)s 2(es)k 4153(no)s 4454(parameters,)s 5615(has)s 5993(for)s 6339(its)s 6623(result)s 7220(a)s 7394(string)s 7999(naming)s 8778(the)s -0 11404(back)m 523(end)s 938(currently)s 1865(in)s 2119(use.)s +0 5128(back)m 523(end)s 938(currently)s 1865(in)s 2119(use.)s 2613(Three)s 3237(back)s 3761(ends)s 4262(are)s 4620(a)s 4(v)k 6(ailable,)k 5590(PostScript,)s 6690(PDF)s 7198(and)s 7613(PlainT)s 16(e)k 3(xt.)k -8698(The)s 0 11116(symbol)m 760(is)s 970(generally)s 1913(used)s -2410(lik)s 2(e)k 2822(this:)s 220 fnt2 480 10615(@Bac)m 4(kEnd @Case {)k -480 10327( PlainT)m 26(e)k 6(xt @Y)k 4(ield { ...)k 13( })k -480 10039( P)m 11(ostScr)k -3(ipt @Y)k 4(ield { ...)k 13( })k -480 9751( PDF @Y)m 4(ield { ...)k 13( })k 480 9463(})m 240 fnt1 -0 8969(to)m 255(obtain)s 926(dif)s 6(ferent)k 1817(objects)s +8698(The)s 0 4840(symbol)m 760(is)s 970(generally)s 1913(used)s +2410(lik)s 2(e)k 2822(this:)s 220 fnt2 480 4339(@Bac)m 4(kEnd @Case {)k +480 4051( PlainT)m 26(e)k 6(xt @Y)k 4(ield { ...)k 13( })k +480 3763( P)m 11(ostScr)k -3(ipt @Y)k 4(ield { ...)k 13( })k +480 3475( PDF @Y)m 4(ield { ...)k 13( })k 480 3187(})m 240 fnt1 +0 2693(to)m 255(obtain)s 926(dif)s 6(ferent)k 1817(objects)s 2561(depending)s 3628(on)s 3941(the)s 4305(back)s 4834(end.)s -5360(No)s 220 fnt2 5722 8966(else)m 240 fnt1 6192 8969(is)m +5360(No)s 220 fnt2 5722 2690(else)m 240 fnt1 6192 2693(is)m 6418(required)s 7288(since)s 7851(these)s 8414(are)s 8778(the)s -0 8681(only)m 480(possible)s 1320(v)s 6(alues.)k 480 8307(When)m -1101(a)s 220 fnt2 1259 8304(@Case)m 240 fnt1 2037 8307(symbol)m -2789(has)s 220 fnt2 3151 8304(@Bac)m 4(kEnd)k 240 fnt1 -4287 8307(for)m 4617(its)s 4885(left)s 5253(parameter)s 6259(and)s +0 2405(only)m 480(possible)s 1320(v)s 6(alues.)k 480 2031(When)m +1101(a)s 220 fnt2 1259 2028(@Case)m 240 fnt1 2037 2031(symbol)m +2789(has)s 220 fnt2 3151 2028(@Bac)m 4(kEnd)k 240 fnt1 +4287 2031(for)m 4617(its)s 4885(left)s 5253(parameter)s 6259(and)s 6655(the)s 6994(left)s 7363(parameter)s 8369(of)s 8631(each)s -220 fnt2 0 8016(@Y)m 4(ield)k 240 fnt1 768 8019(symbol)m +220 fnt2 0 1740(@Y)m 4(ield)k 240 fnt1 768 1743(symbol)m 1544(within)s 2228(it)s 2435(consists)s 3259(of)s 3546(a)s 3728(sequence)s 4676(of)s 4963(one)s 5381(or)s 5656(more)s 6218(literal)s 6844(w)s 2(ords)k 7494(\(including)s 220 fnt2 -8546 8016(else)m 240 fnt1 8940 8019(\),)m 0 7731(Lout)m 531(will)s +8546 1740(else)m 240 fnt1 8940 1743(\),)m 0 1455(Lout)m 531(will)s 976(optimize)s 1888(by)s 2201(e)s 6(v)k 6(aluating)k -3258(the)s 220 fnt2 3625 7728(@Case)m 240 fnt1 4432 7731(symbol)m +3258(the)s 220 fnt2 3625 1452(@Case)m 240 fnt1 4432 1455(symbol)m 5211(at)s 5463(the)s 5830(time)s 6330(it)s 6541(is)s -6771(read.)s 7365(This)s 7861(optimization)s 0 7443(ensures)m 789(that)s +6771(read.)s 7365(This)s 7861(optimization)s 0 1167(ensures)m 789(that)s 1228(there)s 1782(is)s 2013(only)s 2514(a)s 2701(small)s 3294(once-only)s 4326(performance)s 5610(penalty)s 6389(for)s 6748(multiple)s -7621(back)s 8155(ends,)s 8722(and)s 0 7155(it)m 206(permits)s -987(these)s 220 fnt2 1548 7152(@Case)m 240 fnt1 2350 7155(symbols)m +7621(back)s 8155(ends,)s 8722(and)s 0 879(it)m 206(permits)s +987(these)s 220 fnt2 1548 876(@Case)m 240 fnt1 2350 879(symbols)m 3213(\(b)s 4(ut)k 3668(no)s 3976(other)s 4541(symbols\))s 5481(to)s 5734(appear)s 6446(within)s 7128(the)s 7490(object)s -8149(follo)s 6(wing)k 220 fnt2 0 6864(@Include)m 240 fnt1 -982 6867(and)m 220 fnt2 1386 6864(@PrependGr)m 2(aphic)k 240 fnt1 -3259 6867(symbols.)m 480 6493(The)m 918(PlainT)s 16(e)k 3(xt)k +8149(follo)s 6(wing)k 220 fnt2 0 588(@Include)m 240 fnt1 +982 591(and)m 220 fnt2 1386 588(@PrependGr)m 2(aphic)k 240 fnt1 +3259 591(symbols.)m 480 217(The)m 918(PlainT)s 16(e)k 3(xt)k 1899(back)s 2423(end)s 2837(dif)s 6(fers)k 3515(from)s 4050(the)s 4409(PostScript)s 5461(one)s 5874(in)s 6128(tw)s 2(o)k -6548(main)s 7094(respects.)s 8038(First,)s 8593(there)s 0 6205(is)m -226(ef)s 6(fecti)k 6(v)k 3(ely)k 1302(just)s -1724(one)s 2143(font:)s 2711(although)s 3622(all)s 3932(the)s -4297(font)s 4759(commands)s 5864(w)s 2(ork)k 6431(e)s 3(xactly)k -7189(as)s 7456(usual,)s 8085(the)s 3(y)k 8565(don')s 4(t)k -0 5917(actually)m 817(change)s 1558(an)s 3(ything.)k 2565(Each)s -3107(character)s 4049(in)s 4299(this)s 4702(font)s 5155(is)s -5372(tak)s 2(en)k 5953(to)s 6199(be)s 6488(one)s -6898(tenth)s 7440(of)s 7719(one)s 8128(inch)s 8605(wide)s -0 5629(and)m 404(20)s 699(points)s 1335(high.)s 1925(Second,)s -2737(the)s 3085(output)s 3757(is)s 3967(an)s 4250(ordinary)s -5114(te)s 3(xt)k 5529(\207le,)s 5941(not)s 6307(a)s -6473(PostScript)s 7515(\207le.)s 480 5255(Clearly)m 15(,)k 1306(with)s -1820(ordinary)s 2716(te)s 3(xt)k 3162(output)s 3866(the)s -4246(possibility)s 5327(of)s 5630(adv)s 6(anced)k 6618(graphics)s -7510(features)s 8348(such)s 8876(as)s 0 4967(rotation)m 829(and)s -1262(scaling)s 2022(is)s 2261(curtailed.)s 3290(Ne)s 6(v)k 3(ertheless,)k -4651(all)s 4974(symbols)s 5852(ha)s 4(v)k 3(e)k -6383(well-de\207ned)s 7665(\(possibly)s 8626(null\))s 0 4679(ef)m 6(fects)k -706(in)s 976(the)s 1351(PlainT)s 16(e)k 3(xt)k -2348(back)s 2888(end,)s 3368(so)s 3661(there)s 4221(is)s -4457(no)s 4777(additional)s 5815(danger)s 6553(of)s 6851(crashing)s -7741(the)s 8116(system)s 8867(or)s 0 4391(obtaining)m 957(grossly)s -1702(unreasonable)s 3020(output)s 3692(by)s 3986(a)s 4152(change)s -4886(to)s 5125(PlainT)s 16(e)k 3(xt.)k 480 4017(The)m -905(PlainT)s 16(e)k 3(xt)k 1872(back)s 2382(end)s -2783(is)s 2990(obtained)s 3869(by)s 4160(the)s 220 fnt2 -4505 4014(-p)m 240 fnt1 4749 4017(option)m 5415(to)s 5651(Basser)s -6345(Lout.)s 6958(The)s 7383(character)s 8314(size)s 8737(can)s -0 3729(be)m 282(changed)s 1138(by)s 1432(adding)s 2137(tw)s 2(o)k -2547(lengths)s 3289(to)s 3528(the)s 220 fnt2 3876 3726(-p)m -240 fnt1 4123 3729(option,)m 4842(lik)s 2(e)k 5254(this:)s -220 fnt2 480 3232(lout -p0.1i12p ...)m 240 fnt1 0 2736(which)m 650(in)s 9(v)k 4(ok)k 2(es)k -1439(the)s 1795(PlainT)s 16(e)k 3(xt)k 2773(back)s -3294(end)s 3706(with)s 4196(each)s 4699(character)s 5641(being)s -6234(0.1)s 6577(inches)s 7247(wide)s 7776(and)s 8188(12)s -8490(points)s 0 2448(high.)m 595(Ho)s 6(we)k 6(v)k 3(er)k 9(,)k -1561(e)s 3(xperience)k 2655(suggests)s 3523(that)s 3947(the)s -4301(best)s 4752(approach)s 5691(is)s 5907(to)s 6152(de\207ne)s -6799(all)s 7098(horizontal)s 8128(lengths)s 8876(as)s 0 2160(multiples)m -943(of)s 1218(the)s 220 fnt2 1569 2157(s)m 240 fnt1 -1736 2160(unit)m 2171(\(the)s 2602(width)s 3208(of)s 3482(a)s -3652(space,)s 4293(hence)s 4911(the)s 5262(width)s 5868(of)s -6143(all)s 6439(characters\))s 7538(and)s 7945(to)s 8188(de\207ne)s -8833(all)s 0 1872(v)m 3(ertical)k 777(lengths)s 1530(as)s -1791(multiples)s 2742(of)s 3023(the)s 220 fnt2 3382 1869(f)m -240 fnt1 3511 1872(unit)m 3954(\(the)s 4391(font)s 4847(size,)s -5336(equal)s 5920(to)s 6169(the)s 6528(height)s 7197(of)s -7479(e)s 6(v)k 3(ery)k 8066(character\),)s 0 1584(and)m -404(not)s 770(to)s 1009(change)s 1743(the)s 2091(character)s -3025(size)s 3452(in)s 3695(the)s 4043(command)s 5045(line.)s -480 1210(There)m 1098(is)s 1314(a)s 220 fnt2 1486 1207(-P)m -240 fnt1 1762 1210(option)m 2437(which)s 3085(is)s 3301(identical)s -4184(with)s 4671(the)s 220 fnt2 5025 1207(-p)m 240 fnt1 -5278 1210(option)m 5953(e)s 3(xcept)k 6640(that)s 7064(it)s -7262(inserts)s 7942(a)s 8114(form-feed)s 0 922(character)m 934(between)s -1788(each)s 2283(tw)s 2(o)k 2693(components)s 3901(of)s -4172(the)s 4520(output,)s 5239(b)s 4(ut)k 5601(not)s -5967(before)s 6633(the)s 6981(\207rst)s 7412(or)s 7671(after)s -8167(the)s 8515(last.)s 480 548(The)m 911(PDF)s 1412(back)s -1928(end)s 2336(is)s 2549(obtained)s 3435(by)s 3732(typing)s -220 fnt2 4401 545(lout -Z)m 240 fnt1 5017 548(.)m 5185(It)s -5393(is)s 5607(similar)s 6332(to)s 6575(PostScript)s 7620(b)s 4(ut)k -7986(much)s 8579(more)s 0 260(limited)m 755(in)s 1019(functionality)s 15(.)k -2411(Consult)s 3237(a)s 3425(separate)s 4284(document)s 5309(distrib)s 4(uted)k -6407(with)s 6910(Lout)s 7444(for)s 7803(further)s 8534(infor)s -8998(-)s +6548(main)s 7094(respects.)s 8038(First,)s 8593(there)s grestore gsave 1417 -15423 translate -240 fnt1 0 0 0 0 240 288 60 LoutGraphic +240 fnt1 +0 0 0 0 240 288 60 LoutGraphic gsave 0 LoutMargSet grestore @@ -16224,7 +16860,7 @@ pgsave restore showpage -%%Page: 73 79 +%%Page: 75 81 %%BeginPageSetup %%PageResources: font Times-Roman %%+ font Times-Italic @@ -16247,107 +16883,128 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -240 fnt6 1417 -1580(3.45.)m 1991(@Bac)s 4(kEnd)k 3137(and)s -3563(the)s 3908(PlainT)s 22(e)k 4(xt)k 4875(and)s -5301(PDF)s 5834(bac)s 4(k)k 6346(ends)s 240 fnt5 -10250 -1583(73)m gsave +240 fnt6 1417 -1580(3.46.)m +1991(@Bac)s 4(kEnd)k 3137(and)s 3563(the)s 3908(PlainT)s 22(e)k 4(xt)k +4875(and)s 5301(PDF)s 5834(bac)s 4(k)k 6346(ends)s +240 fnt5 10250 -1583(75)m gsave 1417 -15423 translate -240 fnt1 9066 13412 0 13303 240 288 60 LoutGraphic +240 fnt1 9066 13413 0 13304 240 288 60 LoutGraphic gsave 1 LoutMargSet grestore -0 13249(mation.)m 240 fnt5 0 12506(3.46.)m 591(@V)s 24(erbatim and @RawV)k 24(erbatim)k - -[ /Dest /LOUTverbatim /DEST pdfmark - -[ /Dest /LOUT16_4080_pre_verb_1 /DEST pdfmark - -[ /Dest /LOUT16_4080_pre_verb_2 /DEST pdfmark -240 fnt1 543 12074(These)m 1173(symbols)s 2026(instruct)s 2805(Lout)s -3321(to)s 3563(read)s 4036(the)s 4387(follo)s 6(wing)k -5367(te)s 3(xt)k 5786(\(enclosed)s 6763(in)s 7010(braces\))s -7751(v)s 3(erbatim,)k 8708(that)s 0 11786(is,)m 266(turning)s -1010(of)s 6(f)k 1354(all)s 1647(special)s 2365(character)s -3299(meanings.)s 4380(F)s 3(or)k 4769(e)s 3(xample,)k -220 fnt2 480 11285(@V)m 17(erbatim { "hello" })k 240 fnt1 0 10791(produces)m -480 10288("hello")m 220 fnt2 0 9832(@V)m 17(erbatim)k 240 fnt1 -1178 9835(ignores)m 1983(all)s 2325(characters)s 3393(after)s 3938(the)s -4336(opening)s 5210(brace)s 5833(up)s 6175(to)s 6464(b)s 4(ut)k -6875(not)s 7291(including)s 8297(the)s 8695(\207rst)s 0 9547(non-white-space)m -1654(character)s 13(.)k 220 fnt2 2697 9544(@Ra)m 4(wV)k 17(erbatim)k -240 fnt1 4278 9547(dif)m 6(fers)k 4964(from)s 220 fnt2 -5506 9544(@V)m 17(erbatim)k 240 fnt1 6653 9547(only)m 7151(in)s -7413(that)s 7849(it)s 8059(ignores)s 8833(all)s 0 9259(characters)m -1018(after)s 1514(the)s 1862(opening)s 2687(brace)s 3261(up)s -3554(to)s 3793(b)s 4(ut)k 4155(not)s 4521(including)s -5479(the)s 5827(\207rst)s 6258(non-white-space)s 7894(character)s 9(,)k -8867(or)s 0 8971(up)m 302(to)s 551(and)s 965(including)s -1931(the)s 2289(\207rst)s 2730(ne)s 6(wline)k 3547(character)s 9(,)k -4528(whiche)s 6(v)k 3(er)k 5585(comes)s 6257(\207rst.)s -6802(This)s 7287(v)s 6(ariant)k 8014(is)s 8234(useful)s -8883(in)s 0 8683(cases)m 555(such)s 1051(as)s 220 fnt2 -480 8232(@Ra)m 4(wV)k 17(erbatim {)k 480 7944( v)m 5(ar x:)k 11( Real)k -480 7656(begin)m 480 7368(})m 240 fnt1 0 6874(where)m 662(the)s -1033(\207rst)s 1486(line)s 1923(of)s 2217(the)s 2587(v)s 3(erbatim)k -3516(te)s 3(xt)k 3954(be)s 3(gins)k 4649(with)s -5154(white)s 5763(space)s 6373(which)s 7038(w)s 2(ould)k -7715(be)s 8020(ignored)s 8832(by)s 220 fnt2 0 6583(@V)m 17(erbatim)k -240 fnt1 1069 6586(.)m 1232(Both)s 1754(symbols)s 2602(ignore)s -3268(all)s 3560(white)s 4146(spaces)s 4820(at)s 5051(the)s -5398(end)s 5801(of)s 6071(the)s 6418(v)s 3(erbatim)k -7323(te)s 3(xt,)k 7784(preceding)s 8778(the)s 0 6298(closing)m -744(brace.)s 240 fnt5 0 5505(3.47.)m 591(@Underline)s -[ /Dest /LOUTunderline /DEST pdfmark +0 13250(is)m 226(ef)s 6(fecti)k 6(v)k 3(ely)k +1302(just)s 1724(one)s 2143(font:)s 2711(although)s 3622(all)s +3932(the)s 4297(font)s 4759(commands)s 5864(w)s 2(ork)k +6431(e)s 3(xactly)k 7189(as)s 7456(usual,)s 8085(the)s 3(y)k +8565(don')s 4(t)k 0 12962(actually)m 817(change)s 1558(an)s 3(ything.)k +2565(Each)s 3107(character)s 4049(in)s 4299(this)s 4702(font)s +5155(is)s 5372(tak)s 2(en)k 5953(to)s 6199(be)s +6488(one)s 6898(tenth)s 7440(of)s 7719(one)s 8128(inch)s +8605(wide)s 0 12674(and)m 404(20)s 699(points)s 1335(high.)s +1925(Second,)s 2737(the)s 3085(output)s 3757(is)s 3967(an)s +4250(ordinary)s 5114(te)s 3(xt)k 5529(\207le,)s 5941(not)s +6307(a)s 6473(PostScript)s 7515(\207le.)s 480 12300(Clearly)m 15(,)k +1306(with)s 1820(ordinary)s 2716(te)s 3(xt)k 3162(output)s +3866(the)s 4246(possibility)s 5327(of)s 5630(adv)s 6(anced)k +6618(graphics)s 7510(features)s 8348(such)s 8876(as)s 0 12012(rotation)m +829(and)s 1262(scaling)s 2022(is)s 2261(curtailed.)s 3290(Ne)s 6(v)k 3(ertheless,)k +4651(all)s 4974(symbols)s 5852(ha)s 4(v)k 3(e)k +6383(well-de\207ned)s 7665(\(possibly)s 8626(null\))s 0 11724(ef)m 6(fects)k +706(in)s 976(the)s 1351(PlainT)s 16(e)k 3(xt)k +2348(back)s 2888(end,)s 3368(so)s 3661(there)s 4221(is)s +4457(no)s 4777(additional)s 5815(danger)s 6553(of)s 6851(crashing)s +7741(the)s 8116(system)s 8867(or)s 0 11436(obtaining)m 957(grossly)s +1702(unreasonable)s 3020(output)s 3692(by)s 3986(a)s 4152(change)s +4886(to)s 5125(PlainT)s 16(e)k 3(xt.)k 480 11062(The)m +905(PlainT)s 16(e)k 3(xt)k 1872(back)s 2382(end)s +2783(is)s 2990(obtained)s 3869(by)s 4160(the)s 220 fnt2 +4505 11059(-p)m 240 fnt1 4749 11062(option)m 5415(to)s 5651(Basser)s +6345(Lout.)s 6958(The)s 7383(character)s 8314(size)s 8737(can)s +0 10774(be)m 282(changed)s 1138(by)s 1432(adding)s 2137(tw)s 2(o)k +2547(lengths)s 3289(to)s 3528(the)s 220 fnt2 3876 10771(-p)m +240 fnt1 4123 10774(option,)m 4842(lik)s 2(e)k 5254(this:)s +220 fnt2 480 10277(lout -p0.1i12p ...)m 240 fnt1 0 9781(which)m 650(in)s 9(v)k 4(ok)k 2(es)k +1439(the)s 1795(PlainT)s 16(e)k 3(xt)k 2773(back)s +3294(end)s 3706(with)s 4196(each)s 4699(character)s 5641(being)s +6234(0.1)s 6577(inches)s 7247(wide)s 7776(and)s 8188(12)s +8490(points)s 0 9493(high.)m 595(Ho)s 6(we)k 6(v)k 3(er)k 9(,)k +1561(e)s 3(xperience)k 2655(suggests)s 3523(that)s 3947(the)s +4301(best)s 4752(approach)s 5691(is)s 5907(to)s 6152(de\207ne)s +6799(all)s 7098(horizontal)s 8128(lengths)s 8876(as)s 0 9205(multiples)m +943(of)s 1218(the)s 220 fnt2 1569 9202(s)m 240 fnt1 +1736 9205(unit)m 2171(\(the)s 2602(width)s 3208(of)s 3482(a)s +3652(space,)s 4293(hence)s 4911(the)s 5262(width)s 5868(of)s +6143(all)s 6439(characters\))s 7538(and)s 7945(to)s 8188(de\207ne)s +8833(all)s 0 8917(v)m 3(ertical)k 777(lengths)s 1530(as)s +1791(multiples)s 2742(of)s 3023(the)s 220 fnt2 3382 8914(f)m +240 fnt1 3511 8917(unit)m 3954(\(the)s 4391(font)s 4847(size,)s +5336(equal)s 5920(to)s 6169(the)s 6528(height)s 7197(of)s +7479(e)s 6(v)k 3(ery)k 8066(character\),)s 0 8629(and)m +404(not)s 770(to)s 1009(change)s 1743(the)s 2091(character)s +3025(size)s 3452(in)s 3695(the)s 4043(command)s 5045(line.)s +480 8255(There)m 1098(is)s 1314(a)s 220 fnt2 1486 8252(-P)m +240 fnt1 1762 8255(option)m 2437(which)s 3085(is)s 3301(identical)s +4184(with)s 4671(the)s 220 fnt2 5025 8252(-p)m 240 fnt1 +5278 8255(option)m 5953(e)s 3(xcept)k 6640(that)s 7064(it)s +7262(inserts)s 7942(a)s 8114(form-feed)s 0 7967(character)m 934(between)s +1788(each)s 2283(tw)s 2(o)k 2693(components)s 3901(of)s +4172(the)s 4520(output,)s 5239(b)s 4(ut)k 5601(not)s +5967(before)s 6633(the)s 6981(\207rst)s 7412(or)s 7671(after)s +8167(the)s 8515(last.)s 480 7593(The)m 911(PDF)s 1412(back)s +1928(end)s 2336(is)s 2549(obtained)s 3435(by)s 3732(typing)s +220 fnt2 4401 7590(lout -Z)m 240 fnt1 5017 7593(.)m 5185(It)s +5393(is)s 5607(similar)s 6332(to)s 6575(PostScript)s 7620(b)s 4(ut)k +7986(much)s 8579(more)s 0 7305(limited)m 755(in)s 1019(functionality)s 15(.)k +2411(Consult)s 3237(a)s 3425(separate)s 4284(document)s 5309(distrib)s 4(uted)k +6407(with)s 6910(Lout)s 7444(for)s 7803(further)s 8534(infor)s +8998(-)s 0 7017(mation.)m 240 fnt5 0 6274(3.47.)m 591(@V)s 24(erbatim and @RawV)k 24(erbatim)k -[ /Dest /LOUT16_4080_pre_unde_1 /DEST pdfmark -240 fnt1 -533 5073(The)m 220 fnt2 953 5070(@Under)m -3(line)k 240 fnt1 -2160 5073(symbol)m 2912(underlines)s 3951(its)s 4219(right)s 4722(parameter)s 9(,)k -5767(b)s 4(ut)k 6121(only)s 6593(if)s 6802(that)s -7212(parameter)s 8218(is)s 8420(a)s 8578(w)s 2(ord)k -0 4785(or)m 259(a)s 425(paragraph:)s 220 fnt2 480 4284(W)m 6(e @Under)k -3(line { really do } mean this)k 3(.)k -240 fnt1 0 3786(produces)m 480 3283(W)m 19(e)k 849(really)s -849 1679 3259 12 ul -1446(do)s 1739(mean)s 2314(this.)s 0 2780(It)m 204(is)s -412(not)s 776(possible)s 1614(to)s 1851(underline)s 2808(an)s -3089(arbitrary)s 3962(object)s 4604(using)s 5174(this)s 5568(symbol;)s -6383(the)s 220 fnt2 6729 2777(@Under)m -3(line)k 240 fnt1 -7942 2780(symbol)m 8700(will)s 0 2492(be)m 282(ignored)s 1071(if)s -1288(this)s 1684(is)s 1894(attempted.)s 480 2118(It)m 731(is)s -987(v)s 3(ery)k 1509(easy)s 2034(to)s 240 fnt6 -2319 2120(de\207ne)m 240 fnt1 2990 2118(a)m 3202(symbol)s 4008(which)s -4696(will)s 5168(underline)s 6173(an)s 6502(arbitrary)s 7423(object,)s -8160(using)s 8778(the)s 220 fnt2 0 1827(@Gr)m 2(aphic)k -240 fnt1 1045 1830(symbol.)m 1915(This)s 2393(raises)s 2988(the)s -3337(question)s 4207(of)s 4479(wh)s 1(y)k 220 fnt2 -4946 1827(@Under)m -3(line)k 240 fnt1 6163 1830(is)m 6374(needed)s -7111(at)s 7345(all.)s 7748(The)s 8177(answer)s 8916(is)s -0 1542(that)m 220 fnt2 418 1539(@Under)m -3(line)k 240 fnt1 -1633 1542(has)m 2003(tw)s 2(o)k 2413(properties)s 3419(that)s -3837(distinguish)s 4944(it)s 5136(from)s 5660(symbols)s 6509(based)s -7112(on)s 220 fnt2 7409 1539(@Gr)m 2(aphic)k 240 fnt1 -8393 1542(.)m 480 1168(First,)m 1021(when)s 220 fnt2 1594 1165(@Under)m -3(line)k -240 fnt1 2806 1168(both)m 3286(contains)s 4130(a)s 4293(paragraph)s -5303(and)s 5704(is)s 5911(used)s 6404(within)s 7069(a)s -7232(paragraph,)s 8292(as)s 8539(in)s 8778(the)s 0 880(e)m 3(xample)k -875(abo)s 3(v)k 3(e,)k 1561(the)s 1921(inner)s -2485(and)s 2901(outer)s 3465(paragraphs)s 4577(are)s 4937(mer)s 4(ged)k -5720(into)s 6158(one,)s 6623(permitting)s 7684(the)s 8045(underlined)s -0 592(te)m 3(xt)k 412(to)s 647(break)s 1236(o)s 3(v)k 3(er)k -1711(se)s 6(v)k 3(eral)k 2430(lines.)s 3041(This)s -3513(is)s 3720(ho)s 6(w)k 4177(the)s 220 fnt2 -4522 589(@F)m 6(ont)k 240 fnt1 5230 592(symbol)m 5986(w)s 2(orks)k -6617(too,)s 7026(b)s 4(ut)k 7385(symbols)s 8230(based)s -8829(on)s 220 fnt2 0 301(@Gr)m 2(aphic)k 240 fnt1 -1044 304(do)m 1337(not)s 1703(permit)s 2386(this)s 2782(mer)s 4(ging.)k +[ /Dest /LOUTverbatim /DEST pdfmark + +[ /Dest /LOUT19_4213_pre_verb_1 /DEST pdfmark +[ /Dest /LOUT19_4213_pre_verb_2 /DEST pdfmark +240 fnt1 543 5842(These)m 1173(symbols)s 2026(instruct)s 2805(Lout)s +3321(to)s 3563(read)s 4036(the)s 4387(follo)s 6(wing)k +5367(te)s 3(xt)k 5786(\(enclosed)s 6763(in)s 7010(braces\))s +7751(v)s 3(erbatim,)k 8708(that)s 0 5554(is,)m 266(turning)s +1010(of)s 6(f)k 1354(all)s 1647(special)s 2365(character)s +3299(meanings.)s 4380(F)s 3(or)k 4769(e)s 3(xample,)k +220 fnt2 480 5053(@V)m 17(erbatim { "hello" })k 240 fnt1 0 4559(produces)m +480 4056("hello")m 220 fnt2 0 3600(@V)m 17(erbatim)k 240 fnt1 +1178 3603(ignores)m 1983(all)s 2325(characters)s 3393(after)s 3938(the)s +4336(opening)s 5210(brace)s 5833(up)s 6175(to)s 6464(b)s 4(ut)k +6875(not)s 7291(including)s 8297(the)s 8695(\207rst)s 0 3315(non-white-space)m +1654(character)s 13(.)k 220 fnt2 2697 3312(@Ra)m 4(wV)k 17(erbatim)k +240 fnt1 4278 3315(dif)m 6(fers)k 4964(from)s 220 fnt2 +5506 3312(@V)m 17(erbatim)k 240 fnt1 6653 3315(only)m 7151(in)s +7413(that)s 7849(it)s 8059(ignores)s 8833(all)s 0 3027(characters)m +1018(after)s 1514(the)s 1862(opening)s 2687(brace)s 3261(up)s +3554(to)s 3793(b)s 4(ut)k 4155(not)s 4521(including)s +5479(the)s 5827(\207rst)s 6258(non-white-space)s 7894(character)s 9(,)k +8867(or)s 0 2739(up)m 302(to)s 551(and)s 965(including)s +1931(the)s 2289(\207rst)s 2730(ne)s 6(wline)k 3547(character)s 9(,)k +4528(whiche)s 6(v)k 3(er)k 5585(comes)s 6257(\207rst.)s +6802(This)s 7287(v)s 6(ariant)k 8014(is)s 8234(useful)s +8883(in)s 0 2451(cases)m 555(such)s 1051(as)s 220 fnt2 +480 2000(@Ra)m 4(wV)k 17(erbatim {)k 480 1712( v)m 5(ar x:)k 11( Real)k +480 1424(begin)m 480 1136(})m 240 fnt1 0 642(where)m 662(the)s +1033(\207rst)s 1486(line)s 1923(of)s 2217(the)s 2587(v)s 3(erbatim)k +3516(te)s 3(xt)k 3954(be)s 3(gins)k 4649(with)s +5154(white)s 5763(space)s 6373(which)s 7038(w)s 2(ould)k +7715(be)s 8020(ignored)s 8832(by)s 220 fnt2 0 351(@V)m 17(erbatim)k +240 fnt1 1069 354(.)m 1232(Both)s 1754(symbols)s 2602(ignore)s +3268(all)s 3560(white)s 4146(spaces)s 4820(at)s 5051(the)s +5398(end)s 5801(of)s 6071(the)s 6418(v)s 3(erbatim)k +7323(te)s 3(xt,)k 7784(preceding)s 8778(the)s 0 66(closing)m +744(brace.)s grestore gsave 1417 -15423 translate @@ -16365,7 +17022,7 @@ pgsave restore showpage -%%Page: 74 80 +%%Page: 76 82 %%BeginPageSetup %%PageResources: font Times-Roman %%+ font Times-Bold @@ -16388,69 +17045,115 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -240 fnt5 1417 -1583(74)m 240 fnt6 7498 -1580(Chapter)m 8348(3.)s -8622(Pr)s 8(ede\207ned)k 9717(symbols)s gsave +240 fnt5 1417 -1583(76)m +240 fnt6 7498 -1580(Chapter)m 8348(3.)s 8622(Pr)s 8(ede\207ned)k +9717(symbols)s gsave 1417 -15423 translate -240 fnt1 9066 13368 0 13259 240 288 60 LoutGraphic +240 fnt1 9066 13368 0 13368 240 288 60 LoutGraphic gsave 0 LoutMargSet grestore -480 13205(Second,)m 1292(Adobe)s -1987(font)s 2432(\207les)s 2881(specify)s 3625(the)s 3973(correct)s -4694(position)s 5522(and)s 5926(thickness)s 6867(of)s 7138(underlining)s -8294(for)s 8631(each)s 0 12917(font,)m 501(and)s 914(the)s -220 fnt2 1272 12914(@Under)m -3(line)k 240 fnt1 2496 12917(symbol)m -3266(follo)s 6(ws)k 4037(these)s 4593(speci\207cations.)s 6068(The)s -6505(font)s 6960(used)s 7466(is)s 7685(the)s 8043(font)s -8497(of)s 8778(the)s 0 12629(\207rst)m 431(object)s 1075(underlined,)s -2205(if)s 2422(it)s 2614(is)s 2824(a)s 2990(simple)s -3683(w)s 2(ord,)k 4280(or)s 4539(else)s 4966(the)s -5314(font)s 5759(of)s 6030(the)s 6378(enclosing)s 7348(paragraph.)s -240 fnt5 0 11836(3.48.)m 591(@P)s 2(ageLabel)k -[ /Dest /LOUTpagelabel /DEST pdfmark +240 fnt5 0 13203(3.48.)m 591(@Underline)s -[ /Dest /LOUT16_4080_pre_page_1 /DEST pdfmark -240 fnt1 -533 11359(The)m 220 fnt2 953 11356(@P)m 8(ageLabel)k 240 fnt1 -2255 11359(symbol)m 3007(associates)s 4005(a)s 4164(page)s 4664(label)s -5176(in)s 5411(the)s 5751(PostScript)s 6786(output)s 7450(\207le)s -7804(with)s 8278(the)s 8618(page)s 0 11071(within)m 688(which)s -1350(\(or)s 1708(just)s 2133(before)s 2819(which\))s 3552(the)s -3920(symbol)s 4700(occurs,)s 5451(so)s 5737(that)s 6175(PostScript)s -7237(vie)s 6(wers)k 8045(are)s 8412(able)s 8887(to)s -0 10783(inde)m 3(x)k 587(the)s 939(page)s 1450(by)s -1748(this)s 2148(label.)s 2779(\(The)s 3290(label)s 3813(is)s -4026(printed)s 4765(in)s 5011(the)s 220 fnt2 5363 10780(%%P)m 8(age)k -240 fnt1 6313 10783(comment)m 7266(preceding)s 8266(the)s 8618(page)s -0 10495(in)m 243(the)s 591(PostScript)s 1633(output)s 2305(\207le.\))s -2858(F)s 3(or)k 3247(e)s 3(xample,)k 220 fnt2 -480 9994(@P)m 8(ageLabel iv)k 240 fnt1 0 9495(associates)m 1018(the)s -1379(label)s 220 fnt2 1910 9492(iv)m 240 fnt1 2140 9495(with)m -2634(the)s 2995(page.)s 3623(The)s 4064(label)s 4595(may)s -5074(be)s 5368(an)s 5664(arbitrary)s 6551(object;)s 7260(if)s -7489(its)s 7778(v)s 6(alue)k 8358(is)s 8581(not)s -8960(a)s 0 9207(simple)m 693(w)s 2(ord,)k 1290(it)s -1482(will)s 1908(be)s 2190(replaced)s 3057(by)s 220 fnt2 -3351 9204(?)m 240 fnt1 3459 9207(.)m 220 fnt2 480 8830(@P)m 8(ageLabel)k -240 fnt1 1799 8833(is)m 2019(unrelated)s 2977(to)s 3226(Lout')s 13(s)k -3899(cross)s 4451(referencing)s 5602(mechanism;)s 6813(it)s 7016(is)s -7236(for)s 7585(communicating)s 0 8545(a)m 176(label)s 706(to)s -956(the)s 1315(PostScript)s 2368(output)s 3051(\207le,)s 3474(not)s -3851(to)s 4101(other)s 4662(parts)s 5188(of)s 5470(Lout.)s -6097(The)s 6536(result)s 7137(of)s 220 fnt2 7419 8542(@P)m 8(ageLabel)k -240 fnt1 8739 8545(is)m 8960(a)s 0 8257(null)m 427(object.)s +[ /Dest /LOUTunderline /DEST pdfmark + +[ /Dest /LOUT19_4213_pre_unde_1 /DEST pdfmark +240 fnt1 533 12771(The)m 220 fnt2 953 12768(@Under)m -3(line)k +240 fnt1 2160 12771(symbol)m 2912(underlines)s 3951(its)s 4219(right)s +4722(parameter)s 9(,)k 5767(b)s 4(ut)k 6121(only)s +6593(if)s 6802(that)s 7212(parameter)s 8218(is)s 8420(a)s +8578(w)s 2(ord)k 0 12483(or)m 259(a)s 425(paragraph:)s +220 fnt2 480 11982(W)m 6(e @Under)k -3(line { really do } mean this)k 3(.)k +240 fnt1 0 11484(produces)m 480 10981(W)m 19(e)k 849(really)s +849 1679 10957 12 ul +1446(do)s 1739(mean)s 2314(this.)s 0 10478(It)m 204(is)s +412(not)s 776(possible)s 1614(to)s 1851(underline)s 2808(an)s +3089(arbitrary)s 3962(object)s 4604(using)s 5174(this)s 5568(symbol;)s +6383(the)s 220 fnt2 6729 10475(@Under)m -3(line)k 240 fnt1 +7942 10478(symbol)m 8700(will)s 0 10190(be)m 282(ignored)s 1071(if)s +1288(this)s 1684(is)s 1894(attempted.)s 480 9816(It)m 731(is)s +987(v)s 3(ery)k 1509(easy)s 2034(to)s 240 fnt6 +2319 9818(de\207ne)m 240 fnt1 2990 9816(a)m 3202(symbol)s 4008(which)s +4696(will)s 5168(underline)s 6173(an)s 6502(arbitrary)s 7423(object,)s +8160(using)s 8778(the)s 220 fnt2 0 9525(@Gr)m 2(aphic)k +240 fnt1 1045 9528(symbol.)m 1915(This)s 2393(raises)s 2988(the)s +3337(question)s 4207(of)s 4479(wh)s 1(y)k 220 fnt2 +4946 9525(@Under)m -3(line)k 240 fnt1 6163 9528(is)m 6374(needed)s +7111(at)s 7345(all.)s 7748(The)s 8177(answer)s 8916(is)s +0 9240(that)m 220 fnt2 418 9237(@Under)m -3(line)k 240 fnt1 +1633 9240(has)m 2003(tw)s 2(o)k 2413(properties)s 3419(that)s +3837(distinguish)s 4944(it)s 5136(from)s 5660(symbols)s 6509(based)s +7112(on)s 220 fnt2 7409 9237(@Gr)m 2(aphic)k 240 fnt1 +8393 9240(.)m 480 8866(First,)m 1021(when)s 220 fnt2 1594 8863(@Under)m -3(line)k +240 fnt1 2806 8866(both)m 3286(contains)s 4130(a)s 4293(paragraph)s +5303(and)s 5704(is)s 5911(used)s 6404(within)s 7069(a)s +7232(paragraph,)s 8292(as)s 8539(in)s 8778(the)s 0 8578(e)m 3(xample)k +875(abo)s 3(v)k 3(e,)k 1561(the)s 1921(inner)s +2485(and)s 2901(outer)s 3465(paragraphs)s 4577(are)s 4937(mer)s 4(ged)k +5720(into)s 6158(one,)s 6623(permitting)s 7684(the)s 8045(underlined)s +0 8290(te)m 3(xt)k 412(to)s 647(break)s 1236(o)s 3(v)k 3(er)k +1711(se)s 6(v)k 3(eral)k 2430(lines.)s 3041(This)s +3513(is)s 3720(ho)s 6(w)k 4177(the)s 220 fnt2 +4522 8287(@F)m 6(ont)k 240 fnt1 5230 8290(symbol)m 5986(w)s 2(orks)k +6617(too,)s 7026(b)s 4(ut)k 7385(symbols)s 8230(based)s +8829(on)s 220 fnt2 0 7999(@Gr)m 2(aphic)k 240 fnt1 +1044 8002(do)m 1337(not)s 1703(permit)s 2386(this)s 2782(mer)s 4(ging.)k +480 7628(Second,)m 1292(Adobe)s 1987(font)s 2432(\207les)s 2881(specify)s +3625(the)s 3973(correct)s 4694(position)s 5522(and)s 5926(thickness)s +6867(of)s 7138(underlining)s 8294(for)s 8631(each)s 0 7340(font,)m +501(and)s 914(the)s 220 fnt2 1272 7337(@Under)m -3(line)k +240 fnt1 2496 7340(symbol)m 3266(follo)s 6(ws)k 4037(these)s +4593(speci\207cations.)s 6068(The)s 6505(font)s 6960(used)s 7466(is)s +7685(the)s 8043(font)s 8497(of)s 8778(the)s 0 7052(\207rst)m +431(object)s 1075(underlined,)s 2205(if)s 2422(it)s 2614(is)s +2824(a)s 2990(simple)s 3683(w)s 2(ord,)k 4280(or)s +4539(else)s 4966(the)s 5314(font)s 5759(of)s 6030(the)s +6378(enclosing)s 7348(paragraph.)s 240 fnt5 0 6259(3.49.)m 591(@P)s 2(ageLabel)k + +[ /Dest /LOUTpagelabel /DEST pdfmark +[ /Dest /LOUT19_4213_pre_page_1 /DEST pdfmark +240 fnt1 533 5782(The)m 220 fnt2 953 5779(@P)m 8(ageLabel)k +240 fnt1 2255 5782(symbol)m 3007(associates)s 4005(a)s 4164(page)s +4664(label)s 5176(in)s 5411(the)s 5751(PostScript)s 6786(output)s +7450(\207le)s 7804(with)s 8278(the)s 8618(page)s 0 5494(within)m +688(which)s 1350(\(or)s 1708(just)s 2133(before)s 2819(which\))s +3552(the)s 3920(symbol)s 4700(occurs,)s 5451(so)s 5737(that)s +6175(PostScript)s 7237(vie)s 6(wers)k 8045(are)s 8412(able)s +8887(to)s 0 5206(inde)m 3(x)k 587(the)s 939(page)s +1450(by)s 1748(this)s 2148(label.)s 2779(\(The)s 3290(label)s +3813(is)s 4026(printed)s 4765(in)s 5011(the)s 220 fnt2 +5363 5203(%%P)m 8(age)k 240 fnt1 6313 5206(comment)m 7266(preceding)s +8266(the)s 8618(page)s 0 4918(in)m 243(the)s 591(PostScript)s +1633(output)s 2305(\207le.\))s 2858(F)s 3(or)k 3247(e)s 3(xample,)k +220 fnt2 480 4417(@P)m 8(ageLabel iv)k 240 fnt1 0 3918(associates)m +1018(the)s 1379(label)s 220 fnt2 1910 3915(iv)m 240 fnt1 +2140 3918(with)m 2634(the)s 2995(page.)s 3623(The)s 4064(label)s +4595(may)s 5074(be)s 5368(an)s 5664(arbitrary)s 6551(object;)s +7260(if)s 7489(its)s 7778(v)s 6(alue)k 8358(is)s +8581(not)s 8960(a)s 0 3630(simple)m 693(w)s 2(ord,)k +1290(it)s 1482(will)s 1908(be)s 2190(replaced)s 3057(by)s +220 fnt2 3351 3627(?)m 240 fnt1 3459 3630(.)m 220 fnt2 +480 3253(@P)m 8(ageLabel)k 240 fnt1 1799 3256(is)m 2019(unrelated)s +2977(to)s 3226(Lout')s 13(s)k 3899(cross)s 4451(referencing)s +5602(mechanism;)s 6813(it)s 7016(is)s 7236(for)s 7585(communicating)s +0 2968(a)m 176(label)s 706(to)s 956(the)s 1315(PostScript)s +2368(output)s 3051(\207le,)s 3474(not)s 3851(to)s 4101(other)s +4662(parts)s 5188(of)s 5470(Lout.)s 6097(The)s 6536(result)s +7137(of)s 220 fnt2 7419 2965(@P)m 8(ageLabel)k 240 fnt1 +8739 2968(is)m 8960(a)s 0 2680(null)m 427(object.)s grestore gsave 1417 -15423 translate -240 fnt1 0 0 0 0 240 288 60 LoutGraphic +240 fnt1 +0 0 0 0 240 288 60 LoutGraphic gsave 0 LoutMargSet grestore @@ -16464,7 +17167,7 @@ pgsave restore showpage -%%Page: 75 81 +%%Page: 77 83 %%BeginPageSetup %%PageResources: font Times-Roman %%+ font Times-Bold @@ -16490,105 +17193,105 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -9066 13451 0 13451 240 288 60 1417 -14868 LoutGr2 +9066 13452 0 13452 240 288 60 1417 -14869 LoutGr2 1 LoutMargSet grestore -480 fnt5 0 12400(Chapter)m 1819(4.)s 2400(Examples)s +480 fnt5 0 12401(Chapter)m +1819(4.)s 2400(Examples)s [ /Dest /LOUTexamples /DEST pdfmark -240 fnt1 -0 11449(This)m 503(chapter)s 1294(presents)s 2156(some)s 2744(e)s 3(xamples)k -3723(tak)s 2(en)k 4324(from)s 4875(the)s 5251(v)s 6(arious)k -6028(packages)s 6983(a)s 4(v)k 6(ailable)k 7919(with)s -8429(Basser)s 0 11161(Lout.)m 661(The)s 1134(reader)s 1835(who)s -2346(masters)s 3171(these)s 3763(e)s 3(xamples)k 4759(will)s -5230(be)s 5557(well)s 6068(prepared)s 7007(to)s 7291(read)s -7805(the)s 8198(packages)s 0 10873(themselv)m 3(es.)k 1223(The)s -1650(e)s 3(xamples)k 2600(ha)s 4(v)k 3(e)k -3100(not)s 3465(been)s 3973(simpli\207ed)s 4986(in)s 5229(an)s 3(y)k -5625(w)s 2(ay)k 15(,)k 6113(since)s 6659(an)s -6941(important)s 7929(part)s 8359(of)s 8629(their)s 0 10585(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 480 10211(Although)m 1486(all)s -1823(these)s 2415(e)s 3(xamples)k 3410(ha)s 4(v)k 3(e)k +240 fnt1 0 11450(This)m 503(chapter)s +1294(presents)s 2156(some)s 2744(e)s 3(xamples)k 3723(tak)s 2(en)k +4324(from)s 4875(the)s 5251(v)s 6(arious)k 6028(packages)s +6983(a)s 4(v)k 6(ailable)k 7919(with)s 8429(Basser)s +0 11162(Lout.)m 661(The)s 1134(reader)s 1835(who)s 2346(masters)s +3171(these)s 3763(e)s 3(xamples)k 4759(will)s 5230(be)s +5557(well)s 6068(prepared)s 7007(to)s 7291(read)s 7805(the)s +8198(packages)s 0 10874(themselv)m 3(es.)k 1223(The)s 1650(e)s 3(xamples)k +2600(ha)s 4(v)k 3(e)k 3100(not)s 3465(been)s +3973(simpli\207ed)s 4986(in)s 5229(an)s 3(y)k 5625(w)s 2(ay)k 15(,)k +6113(since)s 6659(an)s 6941(important)s 7929(part)s 8359(of)s +8629(their)s 0 10586(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 480 10212(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 9923(represent)m 935(the)s 1283(current)s 2019(state)s +8011(necessarily)s 0 9924(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 9130(4.1.)m 471(An)s 833(equation)s 1779(f)s 6(ormatting)k +0 9131(4.1.)m 471(An)s 833(equation)s 1779(f)s 6(ormatting)k 2930(package)s [ /Dest /LOUTeq /DEST pdfmark -240 fnt1 480 8653(In)m 751(this)s 1162(section)s +240 fnt1 480 8654(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 -[ /Dest /LOUT16_4080_exa_equa_1 /DEST pdfmark +[ /Dest /LOUT19_4213_exa_equa_1 /DEST pdfmark 7168(equation)s -8065(formatting)s 0 8365(package.)m 976(Equation)s 1925(formatting)s 3014(mak)s 2(es)k +8065(formatting)s 0 8366(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 8077(ha)m 4(v)k 3(e)k +6043(partly)s 6682(because)s 7523(its)s 7828(requirements)s 0 8078(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 7789(are)m 347(required.)s 480 7415(T)m 19(o)k 777(the)s +0 7790(are)m 347(required.)s 480 7416(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 7127(tion)m 430(of)s 702(high-)s +8435(collec)s 8998(-)s 0 7128(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 6839(and)m +6948(the)s 7297(basics)s 7933(of)s 8206(language)s 0 6840(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 6551(being)m 585(readily)s 1302(a)s 4(v)k 6(ailable,)k +0 6552(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 6177(As)m 808(described)s 1794(in)s 2049(the)s +5677(replaced.)s 480 6178(As)m 808(described)s 1794(in)s 2049(the)s 2409(User')s 13(s)k 3082(Guide)s 3734([)s -[ /Rect [3805 6177 3919 6339] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTkingston1995lout_user /ANN pdfmark +[ /Rect [3805 6178 3919 6340] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTkingston1995lout_user /ANN pdfmark 3805(4)s 3919(],)s 4117(an)s 4412(equation)s 5305(is)s 5527(entered)s 6300(in)s 6554(a)s 6732(format)s 7440(based)s 8055(on)s -8364(the)s 8724(one)s 0 5889(introduced)m 1081(by)s 1375(the)s +8364(the)s 8724(one)s 0 5890(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([)s -[ /Rect [5571 5889 5685 6051] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTkernighan1975eqn /ANN pdfmark +[ /Rect [5571 5890 5685 6052] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTkernighan1975eqn /ANN pdfmark 5571(2)s 5685(]:)s -[ /Dest /LOUT16_4080_exa_equa_2 /DEST pdfmark +[ /Dest /LOUT19_4213_exa_equa_2 /DEST pdfmark -[ /Dest /LOUT16_4080_exa_equa_3 /DEST pdfmark -220 fnt2 480 5388(@Eq { { x sup 2 + y sup 2 } o)m 3(v)k 5(er 2 })k 240 fnt1 -0 4890(The)m 428(result)s 1018(is)s 167 fnt4 586 4487(2)m -240 fnt6 480 4427(x)m 240 fnt4 737 4419(+)m 167 fnt4 -1040 4487(2)m 240 fnt6 938 4427(y)m 639 0 0 0 240 288 12 480 4329 LoutGr2 +[ /Dest /LOUT19_4213_exa_equa_3 /DEST pdfmark +220 fnt2 480 5389(@Eq { { x sup 2 + y sup 2 } o)m 3(v)k 5(er 2 })k 240 fnt1 +0 4891(The)m 428(result)s 1018(is)s 167 fnt4 586 4488(2)m +240 fnt6 480 4428(x)m 240 fnt4 737 4420(+)m 167 fnt4 +1040 4488(2)m 240 fnt6 938 4428(y)m 639 0 0 0 240 288 12 480 4330 LoutGr2 0 0 moveto xsize 0 lineto 0.05 ft setlinewidth stroke grestore grestore -240 fnt4 742 4101(2)m -240 fnt1 0 3590(In)m 256(outline,)s 1027(the)s 1375(de\207nition)s -2349(of)s 2620(the)s 220 fnt2 2968 3587(@Eq)m 240 fnt1 -3506 3590(symbol)m 4266(is)s -[ /Dest /LOUT16_4080_exa_equa_4 /DEST pdfmark -220 fnt2 480 3093(e)m 6(xpor)k -8(t sup o)k 3(v)k 5(er "+" "2" "<=")k -480 2805(def @Eq)m 480 2517( body @Body)m 480 2229({)m 480 1941( def sup precedence 60 left x r)m -3(ight y { ...)k 13( })k -480 1653( def o)m 3(v)k 5(er precedence 54 left x r)k -3(ight y { ...)k 13( })k -480 1365( def "2" { Base @F)m 6(ont "2" })k 480 1077( def "+" { {Symbol Base} @F)m 6(ont "+" })k 480 789( def "<=" { {Symbol Base} @F)m 6(ont "\\243" })k -480 501( ...)m +240 fnt4 742 4102(2)m +240 fnt1 0 3591(In)m 256(outline,)s 1027(the)s 1375(de\207nition)s +2349(of)s 2620(the)s 220 fnt2 2968 3588(@Eq)m 240 fnt1 +3506 3591(symbol)m 4266(is)s +[ /Dest /LOUT19_4213_exa_equa_4 /DEST pdfmark +220 fnt2 480 3094(e)m 6(xpor)k -8(t sup o)k 3(v)k 5(er "+" "2" "<=")k +480 2806(def @Eq)m 480 2518( body @Body)m 480 2230({)m 480 1942( def sup precedence 60 left x r)m -3(ight y { ...)k 13( })k +480 1654( def o)m 3(v)k 5(er precedence 54 left x r)k -3(ight y { ...)k 13( })k +480 1366( def "2" { Base @F)m 6(ont "2" })k 480 1078( def "+" { {Symbol Base} @F)m 6(ont "+" })k 480 790( def "<=" { {Symbol Base} @F)m 6(ont "\\243" })k +480 502( ...)m grestore -0 0 0 0 240 288 60 1417 -14868 LoutGr2 +0 0 0 0 240 288 60 1417 -14869 LoutGr2 1 LoutMargSet grestore grestore -192 fnt5 5856 -15422(75)m +192 fnt5 5856 -15423(77)m grestore grestore @@ -16596,7 +17299,7 @@ pgsave restore showpage -%%Page: 76 82 +%%Page: 78 84 %%BeginPageSetup %%PageResources: font Times-Roman %%+ font Times-Bold @@ -16619,32 +17322,33 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -240 fnt5 1417 -1583(76)m 240 fnt6 8434 -1580(Chapter)m 9284(4.)s -9558(Examples)s 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 13264 240 288 60 LoutGraphic gsave 0 LoutMargSet grestore -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 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 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 +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 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 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 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 @@ -16674,7 +17378,7 @@ 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 -[ /Dest /LOUT16_4080_exa_equa_5 /DEST pdfmark +[ /Dest /LOUT19_4213_exa_equa_5 /DEST pdfmark 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 @@ -16701,7 +17405,7 @@ 6457(and)s 6865(assists)s 7529(when)s 8109(tuning)s 8778(the)s 0 3484(v)m 6(alues.)k 769(Here)s 1289(is)s 1499(another)s 2276(characteristic)s 3600(de\207nition:)s -[ /Dest /LOUT16_4080_exa_equa_6 /DEST pdfmark +[ /Dest /LOUT19_4213_exa_equa_6 /DEST pdfmark 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 @@ -16723,7 +17427,7 @@ pgsave restore showpage -%%Page: 77 83 +%%Page: 79 85 %%BeginPageSetup %%PageResources: font Times-Roman %%+ font Times-Italic @@ -16749,32 +17453,32 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -240 fnt6 1417 -1580(4.1.)m 1871(An)s 2191(equation)s 3083(formatting)s -4147(pac)s 4(ka)k 2(g)k 2(e)k 240 fnt5 -10248 -1583(77)m gsave +240 fnt6 1417 -1580(4.1.)m +1871(An)s 2191(equation)s 3083(formatting)s 4147(pac)s 4(ka)k 2(g)k 2(e)k +240 fnt5 10249 -1583(79)m gsave 1417 -15423 translate 240 fnt1 9066 13368 0 13267 240 288 60 LoutGraphic gsave 1 LoutMargSet grestore -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 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 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 +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 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 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 11564(tendenc)m 3(y)k 915(to)s @@ -16782,7 +17486,7 @@ 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 -[ /Dest /LOUT16_4080_exa_equa_7 /DEST pdfmark +[ /Dest /LOUT19_4213_exa_equa_7 /DEST pdfmark 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 @@ -16797,7 +17501,7 @@ [ /Rect [7208 8752 7314 8920] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTknuth1984tex /ANN pdfmark 7208(5)s 7314(].)s -[ /Dest /LOUT16_4080_exa_equa_8 /DEST pdfmark +[ /Dest /LOUT19_4213_exa_equa_8 /DEST pdfmark 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 @@ -16852,7 +17556,7 @@ 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 1126(in)m 250(the)s -[ /Dest /LOUT16_4080_exa_para_1 /DEST pdfmark +[ /Dest /LOUT19_4213_exa_para_1 /DEST pdfmark 605(User')s 13(s)k 1274(Guide)s 1922([)s [ /Rect [1993 1126 2107 1288] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTkingston1995lout_user /ANN pdfmark 1993(4)s @@ -16869,7 +17573,8 @@ grestore gsave 1417 -15423 translate -240 fnt1 0 0 0 0 240 288 60 LoutGraphic +240 fnt1 +0 0 0 0 240 288 60 LoutGraphic gsave 1 LoutMargSet grestore @@ -16883,7 +17588,7 @@ pgsave restore showpage -%%Page: 78 84 +%%Page: 80 86 %%BeginPageSetup %%PageResources: font Times-Roman %%+ font Times-Bold @@ -16906,45 +17611,46 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -240 fnt5 1417 -1583(78)m 240 fnt6 8434 -1580(Chapter)m 9284(4.)s -9558(Examples)s gsave +240 fnt5 1417 -1583(80)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 13259 240 288 60 LoutGraphic gsave 0 LoutMargSet grestore -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 -[ /Dest /LOUT16_4080_exa_para_2 /DEST pdfmark -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 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 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 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 +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 + +[ /Dest /LOUT19_4213_exa_para_2 /DEST pdfmark +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 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 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 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 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 @@ -16965,7 +17671,7 @@ 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 8369(def @DocumentLa)m 6(y)k 4(out)k -[ /Dest /LOUT16_4080_exa_para_3 /DEST pdfmark +[ /Dest /LOUT19_4213_exa_para_3 /DEST pdfmark 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 @@ -16977,7 +17683,7 @@ 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 -[ /Dest /LOUT16_4080_exa_para_4 /DEST pdfmark +[ /Dest /LOUT19_4213_exa_para_4 /DEST pdfmark 240 fnt6 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 @@ -16995,7 +17701,7 @@ 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 1799(appropriate)m 1144(syntax)s 1824(is)s -[ /Dest /LOUT16_4080_exa_para_5 /DEST pdfmark +[ /Dest /LOUT19_4213_exa_para_5 /DEST pdfmark 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 @@ -17021,7 +17727,7 @@ pgsave restore showpage -%%Page: 79 85 +%%Page: 81 87 %%BeginPageSetup %%PageResources: font Times-Roman %%+ font Times-Italic @@ -17044,31 +17750,33 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -240 fnt6 1417 -1580(4.2.)m 1871(P)s 19(ar)k 3(a)k 2(gr)k 3(aphs,)k -3082(displays,)s 3959(and)s 4385(lists)s 240 fnt5 10249 -1583(79)m +240 fnt6 1417 -1580(4.2.)m +1871(P)s 19(ar)k 3(a)k 2(gr)k 3(aphs,)k +3082(displays,)s 3959(and)s 4385(lists)s 240 fnt5 10256 -1583(81)m gsave 1417 -15423 translate 240 fnt1 9066 13368 0 13259 240 288 60 LoutGraphic gsave 1 LoutMargSet grestore -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 +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 @@ -17092,9 +17800,9 @@ 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 -[ /Dest /LOUT16_4080_exa_para_6 /DEST pdfmark +[ /Dest /LOUT19_4213_exa_para_6 /DEST pdfmark -[ /Dest /LOUT16_4080_exa_para_7 /DEST pdfmark +[ /Dest /LOUT19_4213_exa_para_7 /DEST pdfmark 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 5072(analogy)m @@ -17139,7 +17847,7 @@ pgsave restore showpage -%%Page: 80 86 +%%Page: 82 88 %%BeginPageSetup %%PageResources: font Times-Roman %%+ font Times-Bold @@ -17162,49 +17870,50 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -240 fnt5 1417 -1583(80)m 240 fnt6 8434 -1580(Chapter)m 9284(4.)s -9558(Examples)s 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 13259 240 288 60 LoutGraphic +240 fnt1 +9066 13368 0 13259 240 288 60 LoutGraphic gsave 0 LoutMargSet grestore -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 +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 -[ /Dest /LOUT16_4080_exa_para_8 /DEST pdfmark +[ /Dest /LOUT19_4213_exa_para_8 /DEST pdfmark 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 -[ /Dest /LOUT12_1501_exa_para_1 /DEST pdfmark +[ /Dest /LOUT16_1489_exa_para_1 /DEST pdfmark 480 10484(def @EndListPlace { @Galle)m 4(y })k 480 10196(def @EndList f)m 6(orce into { @EndListPlace&&preceding })k 480 9908({})m -[ /Dest /LOUT12_1501_exa_para_2 /DEST pdfmark +[ /Dest /LOUT16_1489_exa_para_2 /DEST pdfmark 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 -[ /Dest /LOUT12_1501_exa_para_3 /DEST pdfmark +[ /Dest /LOUT16_1489_exa_para_3 /DEST pdfmark 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 @@ -17256,7 +17965,7 @@ pgsave restore showpage -%%Page: 81 87 +%%Page: 83 89 %%BeginPageSetup %%PageResources: font Times-Roman %%+ font Times-Italic @@ -17279,23 +17988,24 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -240 fnt6 1417 -1580(4.2.)m 1871(P)s 19(ar)k 3(a)k 2(gr)k 3(aphs,)k -3082(displays,)s 3959(and)s 4385(lists)s 240 fnt5 10256 -1583(81)m +240 fnt6 1417 -1580(4.2.)m +1871(P)s 19(ar)k 3(a)k 2(gr)k 3(aphs,)k +3082(displays,)s 3959(and)s 4385(lists)s 240 fnt5 10250 -1583(83)m gsave 1417 -15423 translate 240 fnt1 9066 13368 0 13259 240 288 60 LoutGraphic gsave 1 LoutMargSet grestore -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 +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 @@ -17309,7 +18019,7 @@ 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 -[ /Dest /LOUT16_4080_exa_para_9 /DEST pdfmark +[ /Dest /LOUT19_4213_exa_para_9 /DEST pdfmark 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 @@ -17344,9 +18054,9 @@ [ /Dest /LOUTpagelayout /DEST pdfmark 240 fnt1 480 2608(The)m 921(page)s 1443(layout)s -[ /Dest /LOUT16_4080_exa_page_1 /DEST pdfmark +[ /Dest /LOUT19_4213_exa_page_1 /DEST pdfmark -[ /Dest /LOUT16_4080_exa_page_2 /DEST pdfmark +[ /Dest /LOUT19_4213_exa_page_2 /DEST pdfmark 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 @@ -17373,7 +18083,7 @@ 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 503(@P)m 8(ageOf intro)k 240 fnt1 1499 506(else)m 6(where:)k -[ /Dest /LOUT16_4080_exa_page_3 /DEST pdfmark +[ /Dest /LOUT19_4213_exa_page_3 /DEST pdfmark grestore gsave @@ -17392,7 +18102,7 @@ pgsave restore showpage -%%Page: 82 88 +%%Page: 84 90 %%BeginPageSetup %%PageResources: font Times-Roman %%+ font Times-Bold @@ -17415,32 +18125,33 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -240 fnt5 1417 -1583(82)m 240 fnt6 8434 -1580(Chapter)m 9284(4.)s -9558(Examples)s 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 13264 240 288 60 LoutGraphic gsave 0 LoutMargSet grestore 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 -[ /Dest /LOUT12_1501_exa_page_1 /DEST pdfmark +[ /Dest /LOUT16_1489_exa_page_1 /DEST pdfmark 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 -[ /Dest /LOUT12_1501_exa_page_2 /DEST pdfmark +[ /Dest /LOUT16_1489_exa_page_2 /DEST pdfmark 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 -[ /Dest /LOUT12_1501_exa_page_3 /DEST pdfmark +[ /Dest /LOUT16_1489_exa_page_3 /DEST pdfmark 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 @@ -17499,13 +18210,14 @@ 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 597(by)m 294(a)s 460(short)s 998(horizontal)s 2022(line:)s -[ /Dest /LOUT16_4080_exa_page_4 /DEST pdfmark +[ /Dest /LOUT19_4213_exa_page_4 /DEST pdfmark 220 fnt2 480 96(e)m 6(xpor)k -8(t @T)k 26(ag)k grestore gsave 1417 -15423 translate -240 fnt1 0 0 0 0 240 288 60 LoutGraphic +240 fnt1 +0 0 0 0 240 288 60 LoutGraphic gsave 0 LoutMargSet grestore @@ -17519,7 +18231,7 @@ pgsave restore showpage -%%Page: 83 89 +%%Page: 85 91 %%BeginPageSetup %%PageResources: font Times-Roman %%+ font Times-Italic @@ -17542,15 +18254,16 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -240 fnt6 1417 -1580(4.3.)m 1871(P)s 19(a)k 2(g)k 2(e)k -2393(layout)s 240 fnt5 10250 -1583(83)m 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 10250 -1583(85)m gsave 1417 -15423 translate 240 fnt1 9066 13368 0 13264 240 288 60 LoutGraphic gsave @@ -17559,11 +18272,11 @@ 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 -[ /Dest /LOUT12_1501_exa_page_4 /DEST pdfmark +[ /Dest /LOUT16_1489_exa_page_4 /DEST pdfmark 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 -[ /Dest /LOUT12_1501_exa_page_5 /DEST pdfmark +[ /Dest /LOUT16_1489_exa_page_5 /DEST pdfmark 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 @@ -17577,7 +18290,7 @@ 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 -[ /Dest /LOUT16_4080_exa_page_5 /DEST pdfmark +[ /Dest /LOUT19_4213_exa_page_5 /DEST pdfmark 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 @@ -17602,7 +18315,7 @@ 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 -[ /Dest /LOUT16_4080_exa_page_6 /DEST pdfmark +[ /Dest /LOUT19_4213_exa_page_6 /DEST pdfmark grestore gsave @@ -17621,7 +18334,7 @@ pgsave restore showpage -%%Page: 84 90 +%%Page: 86 92 %%BeginPageSetup %%PageResources: font Times-Roman %%+ font Times-Bold @@ -17644,22 +18357,23 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -240 fnt5 1417 -1583(84)m 240 fnt6 8434 -1580(Chapter)m 9284(4.)s -9558(Examples)s gsave +240 fnt5 1417 -1583(86)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 13264 240 288 60 LoutGraphic gsave 0 LoutMargSet grestore -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 +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 @@ -17677,7 +18391,7 @@ 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 -[ /Dest /LOUT16_4080_exa_page_7 /DEST pdfmark +[ /Dest /LOUT19_4213_exa_page_7 /DEST pdfmark 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 @@ -17711,7 +18425,7 @@ 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 -[ /Dest /LOUT16_4080_exa_page_8 /DEST pdfmark +[ /Dest /LOUT19_4213_exa_page_8 /DEST pdfmark 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 @@ -17738,7 +18452,7 @@ pgsave restore showpage -%%Page: 85 91 +%%Page: 87 93 %%BeginPageSetup %%PageResources: font Times-Roman %%+ font Times-Italic @@ -17761,15 +18475,16 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -240 fnt6 1417 -1580(4.3.)m 1871(P)s 19(a)k 2(g)k 2(e)k -2393(layout)s 240 fnt5 10250 -1583(85)m 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 10248 -1583(87)m gsave 1417 -15423 translate 240 fnt1 9066 13368 0 13259 240 288 60 LoutGraphic gsave @@ -17798,7 +18513,7 @@ 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 10103(odd-numbered)m 1454(page:)s -[ /Dest /LOUT16_4080_exa_page_9 /DEST pdfmark +[ /Dest /LOUT19_4213_exa_page_9 /DEST pdfmark 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 @@ -17837,7 +18552,7 @@ 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 -[ /Dest /LOUT16_4080_exa_page_10 /DEST pdfmark +[ /Dest /LOUT19_4213_exa_page_10 /DEST pdfmark 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 @@ -17860,7 +18575,7 @@ pgsave restore showpage -%%Page: 86 92 +%%Page: 88 94 %%BeginPageSetup %%PageResources: font Times-Roman %%+ font Times-Bold @@ -17883,17 +18598,18 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -240 fnt5 1417 -1583(86)m 240 fnt6 8434 -1580(Chapter)m 9284(4.)s -9558(Examples)s 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 13264 240 288 60 LoutGraphic +240 fnt1 +9066 13368 0 13264 240 288 60 LoutGraphic gsave 0 LoutMargSet grestore @@ -17928,7 +18644,7 @@ 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 -[ /Dest /LOUT16_4080_exa_chap_1 /DEST pdfmark +[ /Dest /LOUT19_4213_exa_chap_1 /DEST pdfmark 7583(of)s 7850(V)s 26(ersion)k 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 @@ -17936,7 +18652,7 @@ 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 -[ /Dest /LOUT16_4080_exa_chap_2 /DEST pdfmark +[ /Dest /LOUT19_4213_exa_chap_2 /DEST pdfmark 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 @@ -17956,7 +18672,7 @@ 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 2118(the)m 348(follo)s 6(wing)k 1325(de\207nitions:)s -[ /Dest /LOUT16_4080_exa_chap_3 /DEST pdfmark +[ /Dest /LOUT19_4213_exa_chap_3 /DEST pdfmark 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 @@ -17978,7 +18694,7 @@ pgsave restore showpage -%%Page: 87 93 +%%Page: 89 95 %%BeginPageSetup %%PageResources: font Times-Roman %%+ font Times-Italic @@ -18001,29 +18717,29 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -240 fnt6 1417 -1580(4.4.)m 1871(Chapter)s 2(s)k 2802(and)s -3228(sections)s 240 fnt5 10248 -1583(87)m gsave +240 fnt6 1417 -1580(4.4.)m +1871(Chapter)s 2(s)k 2802(and)s 3228(sections)s 240 fnt5 +10249 -1583(89)m gsave 1417 -15423 translate 240 fnt1 9066 13368 0 13259 240 288 60 LoutGraphic gsave 1 LoutMargSet grestore -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 +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 @@ -18033,18 +18749,18 @@ 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 -[ /Dest /LOUT16_4080_exa_chap_4 /DEST pdfmark +[ /Dest /LOUT19_4213_exa_chap_4 /DEST pdfmark 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 -[ /Dest /LOUT12_1501_exa_chap_1 /DEST pdfmark +[ /Dest /LOUT16_1489_exa_chap_1 /DEST pdfmark 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 -[ /Dest /LOUT12_1501_exa_chap_2 /DEST pdfmark +[ /Dest /LOUT16_1489_exa_chap_2 /DEST pdfmark 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 @@ -18065,7 +18781,7 @@ pgsave restore showpage -%%Page: 88 94 +%%Page: 90 96 %%BeginPageSetup %%PageResources: font Times-Roman %%+ font Times-Bold @@ -18088,22 +18804,22 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -240 fnt5 1417 -1583(88)m 240 fnt6 8434 -1580(Chapter)m 9284(4.)s -9558(Examples)s 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 13264 240 288 60 LoutGraphic gsave 0 LoutMargSet grestore -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 +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 @@ -18111,7 +18827,7 @@ 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 -[ /Dest /LOUT12_1501_exa_chap_3 /DEST pdfmark +[ /Dest /LOUT16_1489_exa_chap_3 /DEST pdfmark 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 @@ -18215,7 +18931,7 @@ pgsave restore showpage -%%Page: 89 95 +%%Page: 91 97 %%BeginPageSetup %%PageResources: font Times-Roman %%+ font Times-Italic @@ -18238,15 +18954,16 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -240 fnt6 1417 -1580(4.4.)m 1871(Chapter)s 2(s)k 2802(and)s -3228(sections)s 240 fnt5 10249 -1583(89)m gsave +240 fnt6 1417 -1580(4.4.)m +1871(Chapter)s 2(s)k 2802(and)s 3228(sections)s 240 fnt5 +10256 -1583(91)m gsave 1417 -15423 translate 240 fnt1 9066 13368 0 13264 240 288 60 LoutGraphic gsave @@ -18330,7 +19047,7 @@ 8558(v)s 6(alue)k 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 -[ /Dest /LOUT16_4080_exa_chap_5 /DEST pdfmark +[ /Dest /LOUT19_4213_exa_chap_5 /DEST pdfmark 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 @@ -18343,7 +19060,7 @@ 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 -[ /Dest /LOUT16_4080_exa_chap_6 /DEST pdfmark +[ /Dest /LOUT19_4213_exa_chap_6 /DEST pdfmark 220 fnt2 480 75(def @EndSectionsPlace { @Galle)m 4(y })k grestore @@ -18363,7 +19080,7 @@ pgsave restore showpage -%%Page: 90 96 +%%Page: 92 98 %%BeginPageSetup %%PageResources: font Times-Roman %%+ font Times-Bold @@ -18386,26 +19103,26 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -240 fnt5 1417 -1583(90)m 240 fnt6 8434 -1580(Chapter)m 9284(4.)s -9558(Examples)s 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 13264 240 288 60 LoutGraphic +240 fnt1 +9066 13368 0 13264 240 288 60 LoutGraphic gsave 0 LoutMargSet grestore -220 fnt2 480 13207(def @EndSections f)m 6(orce into { @EndSectionsPlace&&preceding } {})k 480 12919(macro @BeginSections { //@SectionGap @SectionList 1 // @EndSectionsPlace // })m - -[ /Dest /LOUT12_1501_exa_chap_4 /DEST pdfmark -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 +220 fnt2 480 13207(def @EndSections f)m 6(orce into { @EndSectionsPlace&&preceding } {})k 480 12919(macro @BeginSections { //@SectionGap @SectionList 1 // @EndSectionsPlace // })m +[ /Dest /LOUT16_1489_exa_chap_4 /DEST pdfmark +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 @@ -18413,7 +19130,7 @@ 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 -[ /Dest /LOUT12_1501_exa_chap_5 /DEST pdfmark +[ /Dest /LOUT16_1489_exa_chap_5 /DEST pdfmark 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 @@ -18481,7 +19198,7 @@ pgsave restore showpage -%%Page: 91 97 +%%Page: 93 99 %%BeginPageSetup %%PageResources: font Times-Roman %%+ font Times-Italic @@ -18504,34 +19221,35 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -240 fnt6 1417 -1580(4.4.)m 1871(Chapter)s 2(s)k 2802(and)s -3228(sections)s 240 fnt5 10256 -1583(91)m gsave +240 fnt6 1417 -1580(4.4.)m +1871(Chapter)s 2(s)k 2802(and)s 3228(sections)s 240 fnt5 +10250 -1583(93)m gsave 1417 -15423 translate 240 fnt1 9066 13368 0 13259 240 288 60 LoutGraphic gsave 1 LoutMargSet grestore -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 +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 [ /Dest /LOUTbiblio /DEST pdfmark -[ /Dest /LOUT16_4080_exa_bibl_1 /DEST pdfmark +[ /Dest /LOUT19_4213_exa_bibl_1 /DEST pdfmark 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 -[ /Dest /LOUT16_4080_exa_bibl_2 /DEST pdfmark +[ /Dest /LOUT19_4213_exa_bibl_2 /DEST pdfmark 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 @@ -18548,13 +19266,13 @@ 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 -[ /Dest /LOUT12_1501_exa_bibl_1 /DEST pdfmark +[ /Dest /LOUT16_1489_exa_bibl_1 /DEST pdfmark 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 -[ /Dest /LOUT12_1501_exa_bibl_2 /DEST pdfmark +[ /Dest /LOUT16_1489_exa_bibl_2 /DEST pdfmark grestore gsave @@ -18573,7 +19291,7 @@ pgsave restore showpage -%%Page: 92 98 +%%Page: 94 100 %%BeginPageSetup %%PageResources: font Times-Roman %%+ font Times-Bold @@ -18596,32 +19314,33 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -240 fnt5 1417 -1583(92)m 240 fnt6 8434 -1580(Chapter)m 9284(4.)s -9558(Examples)s gsave +240 fnt5 1417 -1583(94)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 13259 240 288 60 LoutGraphic gsave 0 LoutMargSet grestore -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 +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 @@ -18688,7 +19407,7 @@ pgsave restore showpage -%%Page: 93 99 +%%Page: 95 101 %%BeginPageSetup %%PageResources: font Times-Roman %%+ font Times-Italic @@ -18711,34 +19430,34 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -240 fnt6 1417 -1580(4.5.)m 1871(Biblio)s 2(gr)k 3(aphies)k -240 fnt5 10250 -1583(93)m gsave +240 fnt6 1417 -1580(4.5.)m +1871(Biblio)s 2(gr)k 3(aphies)k 240 fnt5 10250 -1583(95)m +gsave 1417 -15423 translate 240 fnt1 9066 13368 0 13259 240 288 60 LoutGraphic gsave 1 LoutMargSet grestore -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 +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 @@ -18762,7 +19481,7 @@ 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 -[ /Dest /LOUT16_4080_exa_bibl_3 /DEST pdfmark +[ /Dest /LOUT19_4213_exa_bibl_3 /DEST pdfmark 220 fnt2 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 @@ -18791,7 +19510,7 @@ pgsave restore showpage -%%Page: 94 100 +%%Page: 96 102 %%BeginPageSetup %%PageResources: font Times-Roman %%+ font Times-Bold @@ -18814,17 +19533,18 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -240 fnt5 1417 -1583(94)m 240 fnt6 8434 -1580(Chapter)m 9284(4.)s -9558(Examples)s gsave +240 fnt5 1417 -1583(96)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 13264 240 288 60 LoutGraphic gsave 0 LoutMargSet grestore @@ -18849,7 +19569,7 @@ 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 -[ /Dest /LOUT16_4080_exa_bibl_4 /DEST pdfmark +[ /Dest /LOUT19_4213_exa_bibl_4 /DEST pdfmark 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 @@ -18916,7 +19636,7 @@ pgsave restore showpage -%%Page: 95 101 +%%Page: 97 103 %%BeginPageSetup %%PageResources: font Times-Roman %%+ font Times-Italic @@ -18939,27 +19659,28 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -240 fnt6 1417 -1580(4.5.)m 1871(Biblio)s 2(gr)k 3(aphies)k -240 fnt5 10250 -1583(95)m gsave +240 fnt6 1417 -1580(4.5.)m +1871(Biblio)s 2(gr)k 3(aphies)k 240 fnt5 10248 -1583(97)m +gsave 1417 -15423 translate 240 fnt1 9066 13368 0 13259 240 288 60 LoutGraphic gsave 1 LoutMargSet grestore -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 +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 @@ -19013,11 +19734,11 @@ 3635(nothing)s 4421(to)s 4661(pro)s 3(v)k 3(e.)k 5365(W)s 19(e)k 5735(also)s 6174(assume)s 6935(that)s 7354(e)s 6(v)k 3(ery)k 7931(entry)s 8477(with)s -8960(a)s 0 6731(gi)m 6(v)k 3(en)k 584(k)s 2(e)k 3(y)k -984(has)s 1359(the)s 1712(same)s 2263(label,)s 2839(including)s -3801(an)s 3(y)k 4203(indent)s 4865(\(that)s 5367(is,)s -5638(the)s 5991(same)s 6542(initial)s 7158(part)s 7594(before)s -8265(the)s 8618(page)s 0 6443(number\).)m 974(If)s 1204(labels)s +8960(a)s 0 6731(gi)m 6(v)k 3(en)k 582(k)s 2(e)k 3(y)k +980(has)s 1352(the)s 1703(same)s 2252(label,)s 2826(including)s +3785(an)s 3(y)k 4185(format)s 4883(\(that)s 5383(is,)s +5651(the)s 6002(same)s 6551(initial)s 7165(part)s 7598(before)s +8267(the)s 8618(page)s 0 6443(number\).)m 974(If)s 1204(labels)s 1812(dif)s 6(fer)k 2395(the)s 2743(result)s 3333(is)s 3543(unde\207ned)s 4546(and)s 4950(there)s 5483(is)s 5693(nothing)s 6478(to)s 6717(pro)s 3(v)k 3(e.)k 480 6069(W)m 19(e)k @@ -19085,7 +19806,7 @@ pgsave restore showpage -%%Page: 96 102 +%%Page: 98 104 %%BeginPageSetup %%PageResources: font Times-Roman %%+ font Times-Bold @@ -19098,9 +19819,735 @@ %%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 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 +0 0 translate +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +240 fnt5 1417 -1583(98)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 +gsave +0 LoutMargSet +grestore +0 13205(If)m 230(the)s 578(inde)s 3(x)k 1162(entry)s +1707(is)s 1917(non-ra)s 3(w)k 15(,)k 2803(the)s +3151(follo)s 6(wing)k 4128(e)s 3(xpression)k 5205(is)s +5415(used)s 5912(to)s 6151(de\207ne)s 6792(its)s 7068(v)s 6(alue:)k +220 fnt2 480 12704(label &0.03fu {}{@OneCol ,} pn)m 240 fnt1 0 12208(where)m 220 fnt2 +635 12205(pn)m 240 fnt1 919 12208(is)m 1124(the)s 1466(page)s +1969(number)s 2754(or)s 3008(page)s 3510(number)s 4296(range)s +4877(of)s 5143(the)s 5485(entry)s 15(.)k 6120(In)s +6370(each)s 6860(case)s 7321(we)s 7651(clearly)s 8348(ha)s 4(v)k 3(e)k +8843(an)s 0 11920(entry)m 545(that)s 963(satis\207es)s 1770(all)s +2063(the)s 2411(requirements)s 3709(of)s 3980(the)s 4328(theorem.)s +480 11546(No)m 6(w)k 1000(consider)s 1877(what)s 2409(happens)s +3252(when)s 3835(we)s 4176(come)s 4757(to)s 5003(mer)s 4(ge)k +5659(tw)s 2(o)k 6076(entries.)s 6882(The)s 7317(code)s +7832(used)s 8336(to)s 8582(carry)s 0 11258(out)m 366(this)s +762(mer)s 4(ge)k 1411(is)s 220 fnt2 480 10757(def @Merge left x r)m -3(ight y)k +480 10469({)m 480 10181( { x @Rump { x @Meld y } } @Case)m 480 9893( {)m 480 9605( "" @Y)m 4(ield x)k +480 9317( else @Y)m 4(ield { { x{@OneCol ,} } @Meld y })k 480 9029( })m 480 8453(})m 240 fnt1 +0 7959(where)m 220 fnt2 640 7956(x)m 240 fnt1 808 7959(is)m +1018(the)s 1366(\207rst)s 1797(entry)s 2342(and)s 220 fnt2 +2746 7956(y)m 240 fnt1 2914 7959(is)m 3124(the)s 3472(second.)s +480 7585(W)m 19(e)k 849(call)s 1248(the)s 1596(e)s 3(xpression)k +220 fnt2 480 7084(x @Rump { x @Meld y })m 240 fnt1 0 6584(the)m 240 fnt6 +348 6586(discriminant)m 240 fnt1 1561 6584(,)m 1668(since)s 2215(it)s +2407(determines)s 3506(which)s 4148(case)s 4615(to)s 4854(apply)s 15(.)k +5535(W)s 19(e)k 5904(will)s 6330(track)s 6868(this)s +7264(in)s 7507(detail)s 8092(belo)s 6(w)k 15(,)k +8764(b)s 4(ut)k 0 6296(approximately)m 15(,)k 1483(its)s +1770(function)s 2635(is)s 2856(to)s 3105(determine)s 4127(whether)s +220 fnt2 4968 6293(y)m 240 fnt1 5147 6296(contains)m 6005(something)s +7066(that)s 7495(is)s 7716(dif)s 6(ferent)k 8602(from)s +0 6008(an)m 3(ything)k 903(in)s 220 fnt2 1162 6005(x)m +240 fnt1 1270 6008(.)m 1450(If)s 1696(so,)s 2031(then)s +220 fnt2 2516 6005(x @Meld y)m 240 fnt1 3630 6008(dif)m 6(fers)k +4313(from)s 220 fnt2 4852 6005(x)m 240 fnt1 5036 6008(and)m +5456(the)s 5820(discriminant)s 7089(is)s 7315(non-empty;)s 8480(if)s +8713(not,)s 220 fnt2 0 5717(x @Meld y)m 240 fnt1 1098 5720(is)m +1308(equal)s 1881(to)s 220 fnt2 2120 5717(x)m 240 fnt1 +2288 5720(and)m 2692(the)s 3040(discriminant)s 4294(is)s 4504(empty)s 15(.)k +480 5346(The)m 919(\207rst)s 1362(entry)s 15(,)k 220 fnt2 +1956 5343(x)m 240 fnt1 2064 5346(,)m 2183(may)s 2660(be)s +2954(ra)s 3(w)k 3374(or)s 3645(non-ra)s 3(w)k 15(,)k +4543(and)s 4958(the)s 5318(second,)s 220 fnt2 6101 5343(y)m +240 fnt1 6209 5346(,)m 6328(may)s 6805(also)s 7255(be)s +7548(ra)s 3(w)k 7969(or)s 8240(non-ra)s 3(w)k 15(,)k +0 5058(together)m 843(gi)s 6(ving)k 1502(four)s 1960(cases,)s +2571(which)s 3213(we)s 3548(tak)s 2(e)k 4000(in)s +4243(turn.)s 480 4684(If)m 718(both)s 1209(entries)s 1904(are)s +2260(ra)s 3(w)k 15(,)k 2715(then)s 3192(by)s +3494(assumption)s 4650(the)s 3(y)k 5121(ha)s 4(v)k 3(e)k +5630(the)s 5986(same)s 6542(labels)s 7158(and)s 7570(so)s +7844(are)s 8200(identical.)s 0 4396(Thus,)m 220 fnt2 586 4393(x @Meld y)m +240 fnt1 1684 4396(equals)m 220 fnt2 2346 4393(x)m 240 fnt1 +2454 4396(,)m 2561(the)s 2909(discriminant)s 4163(is)s 4373(empty)s 15(,)k +5063(and)s 5467(the)s 5815(result)s 6405(is)s 220 fnt2 +6615 4393(x)m 240 fnt1 6723 4396(,)m 6830(which)s 7472(is)s +7682(correct.)s 480 4022(If)m 220 fnt2 704 4019(x)m 240 fnt1 +866 4022(is)m 1070(ra)s 3(w)k 1473(and)s 220 fnt2 +1870 4019(y)m 240 fnt1 2032 4022(is)m 2236(non-ra)s 3(w)k 15(,)k +3116(then)s 3579(the)s 3920(discriminant)s 5168(is)s 5372(non-empty)s +6457(and)s 6855(the)s 7196(result)s 7780(is)s 7984(the)s +8326(meld)s 8855(of)s 0 3734(tw)m 2(o)k 410(objects,)s +1194(the)s 1542(\207rst)s 1973(ha)s 4(ving)k 2674(the)s +3022(form)s 220 fnt2 480 3233(label &0.03fu {}{@OneCol ,})m 240 fnt1 0 2739(being)m +220 fnt2 585 2736(x)m 240 fnt1 753 2739(with)m 1235(a)s +1401(comma)s 2165(appended,)s 3190(and)s 3594(the)s 3942(second)s +4665(being)s 5250(some)s 5811(non-ra)s 3(w)k 6659(entry)s +7204(such)s 7700(as)s 220 fnt2 480 2238(label &0.03fu {}{@OneCol ,} pn1{@OneCol ,} pn2)m 240 fnt1 +0 1742(where)m 646(the)s 1001(pattern)s 1727(may)s 2200(repeat.)s +2954(W)s 19(e)k 3329(are)s 3683(assuming)s 4647(by)s +4947(induction)s 5915(that)s 220 fnt2 6339 1739(y)m 240 fnt1 +6514 1742(has)m 6891(this)s 7293(form.)s 7928(Clearly)s 15(,)k +8730(this)s 0 1454(meld)m 536(gi)s 6(v)k 3(es)k +1083(a)s 1249(v)s 6(alue)k 1817(equal)s 2390(to)s +220 fnt2 2629 1451(y)m 240 fnt1 2737 1454(,)m 2844(which)s +3486(is)s 3696(the)s 4044(correct)s 4766(result.)s 480 1080(If)m +220 fnt2 710 1077(x)m 240 fnt1 878 1080(is)m 1088(non-ra)s 3(w)k +1936(and)s 220 fnt2 2340 1077(y)m 240 fnt1 2508 1080(is)m +2718(ra)s 3(w)k 15(,)k 3165(the)s 220 fnt2 +3513 1077(@Meld)m 240 fnt1 4259 1080(in)m 4502(the)s 4850(discriminant)s +6104(melds)s 6726(tw)s 2(o)k 7136(v)s 6(alues)k +7792(typi\207ed)s 8581(by)s 220 fnt2 480 579(label &0.03fu {}{@OneCol ,} pn1{@OneCol ,} pn2)m 240 fnt1 +0 83(and)m +grestore +gsave +1417 -15423 translate +240 fnt1 0 0 0 0 240 288 60 LoutGraphic +gsave +0 LoutMargSet +grestore + +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 99 105 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Italic +%%+ font Times-Bold +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def +%%IncludeResource: font Times-Italic +/Times-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 +0 0 translate +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +240 fnt6 1417 -1580(4.6.)m +1871(Mer)s 8(g)k 2(ed)k 2671(inde)s 4(x)k +3245(entries)s 240 fnt5 10249 -1583(99)m gsave +1417 -15423 translate +240 fnt1 9066 13368 0 13266 240 288 60 LoutGraphic +gsave +1 LoutMargSet +grestore +220 fnt2 +480 13209(label &0.03fu {})m 240 fnt1 0 12715(The)m 440(result)s 1042(of)s +1325(this)s 1733(is)s 220 fnt2 1955 12712(x)m 240 fnt1 +2135 12715(with)m 2629(an)s 2924(empty)s 3588(object)s 4244(added)s +4886(at)s 5130(the)s 5490(end.)s 6012(This)s 6500(empty)s +7164(object)s 7820(is)s 8042(the)s 8403(second)s 0 12427(element)m +815(of)s 220 fnt2 1084 12424(y)m 240 fnt1 1192 12427(,)m +1297(which)s 1937(is)s 2145(not)s 2509(equal)s 3080(to)s +3317(an)s 3(y)k 3712(element)s 4526(of)s 220 fnt2 +4795 12424(x)m 240 fnt1 4903 12427(:)m 5067(the)s 5413(second)s +6134(element)s 6948(of)s 220 fnt2 7217 12424(x)m 240 fnt1 +7383 12427(is)m 7591(not)s 220 fnt2 7955 12424({})m 240 fnt1 +8150 12427(b)m 4(ut)k 8510(rather)s 220 fnt2 0 12136({}{@OneCol ,})m +240 fnt1 1371 12139(,)m 1515(because)s 220 fnt2 2365 12136(@Meld)m +240 fnt1 3148 12139(treats)m 3752(immediately)s 5038(adjacent)s 5931(objects)s +6696(as)s 6983(single)s 7647(elements.)s 8698(The)s 0 11851(result)m +590(of)s 220 fnt2 861 11848(@Rump)m 240 fnt1 1720 11851(is)m +1930(then)s 2398(this)s 2794(e)s 3(xtra)k 3327(empty)s +3979(object,)s 4669(so)s 4935(the)s 5282(discriminant)s 6536(is)s +6745(the)s 7093(empty)s 7744(object)s 8388(and)s 8791(we)s +0 11563(return)m 220 fnt2 627 11560(x)m 240 fnt1 735 11563(,)m +842(correctly)s 15(.)k 1839(It)s 2044(is)s 2254(this)s +2650(case)s 3117(that)s 3535(requires)s 4355(us)s 4619(to)s +4858(use)s 220 fnt2 5233 11560(0.03fu)m 240 fnt1 5829 11563(;)m +5941(without)s 6732(it)s 6924(we)s 7259(w)s 2(ould)k +7914(be)s 8196(melding)s 220 fnt2 480 11062(label{@OneCol ,} pn1{@OneCol ,} pn2)m 240 fnt1 +0 10566(with)m 220 fnt2 480 10118(label)m 240 fnt1 0 9664(producing)m +220 fnt2 480 9163(label{@OneCol ,} pn1{@OneCol ,} pn2 label)m 240 fnt1 0 8667(leading)m 757(to)s +996(a)s 1162(non-empty)s 2253(discriminant)s 3507(and)s 3911(the)s +4259(wrong)s 4924(answer)s 13(.)k 480 8293(This)m 957(lea)s 4(v)k 3(es)k +1600(just)s 2007(the)s 2357(case)s 2826(where)s 3468(both)s +220 fnt2 3953 8290(x)m 240 fnt1 4123 8293(and)m 220 fnt2 +4529 8290(y)m 240 fnt1 4698 8293(are)m 5047(non-ra)s 3(w)k 15(.)k +5992(W)s 19(e)k 6363(will)s 6791(di)s 6(vide)k +7441(this)s 7839(last)s 8232(case)s 8701(into)s 0 8005(three)m +533(sub-cases,)s 1556(b)s 4(ut)k 1918(\207rst)s 2349(we)s +2684(need)s 3194(some)s 3755(general)s 4513(observ)s 6(ations.)k +480 7631(Inde)m 3(x)k 1078(entries)s 1766(are)s 2114(sorted)s +2757(for)s 3096(mer)s 4(ging)k 3943(in)s 4187(the)s +4536(order)s 5101(in)s 5345(which)s 5988(their)s 6486(anchor)s +7198(points)s 7835(appear)s 8533(in)s 8778(the)s 0 7343(\207nal)m +490(printed)s 1235(document.)s 2354(This)s 2840(means)s 3513(that)s +3941(o)s 3(v)k 3(er)k 4431(the)s 4789(course)s +5480(of)s 5761(these)s 6319(entries)s 7016(the)s 7375(page)s +7893(numbers)s 8779(are)s 0 7055(non-decreasing.)m 1636(It)s 1853(is)s +2075(therefore)s 3004(clear)s 3539(that,)s 4016(although)s 4923(the)s +5283(order)s 5859(of)s 6142(mer)s 4(ging)k 7000(is)s +7222(unde\207ned)s 8237(\(actually)s 0 6767(a)m 196(balanced)s 1134(tree)s +1577(order)s 2172(is)s 2412(used\),)s 3067(whene)s 6(v)k 3(er)k +4078(tw)s 2(o)k 4519(entries)s 5236(are)s 5613(presented)s +6617(for)s 6986(mer)s 4(ging,)k 7916(all)s 8239(the)s +8618(page)s 0 6479(numbers)m 867(in)s 1101(the)s 1440(\207rst)s +1862(entry)s 2398(are)s 2736(no)s 3020(lar)s 4(ger)k +3623(than)s 4083(all)s 4368(the)s 4707(page)s 5206(numbers)s +6072(in)s 6306(the)s 6645(second)s 7359(entry)s 15(.)k +7990(W)s 19(e)k 8350(are)s 8688(also)s 0 6191(assuming)m +957(inducti)s 6(v)k 3(ely)k 2078(that)s 2496(the)s +2844(page)s 3352(numbers)s 4227(in)s 4471(each)s 4966(entry)s +5511(are)s 5858(distinct)s 6621(and)s 7025(monotone)s 8040(increasing.)s +0 5903(Thus,)m 599(there)s 1145(can)s 1547(be)s 1842(at)s +2087(most)s 2626(one)s 3041(page)s 3562(number)s 4366(common)s +5274(to)s 5526(an)s 3(y)k 5937(tw)s 2(o)k +6360(entries)s 7060(being)s 7658(mer)s 4(ged,)k 8491(and)s +8909(if)s 0 5615(there)m 533(is)s 743(one)s 1145(in)s +1388(common)s 2283(it)s 2475(is)s 2685(the)s 3033(last)s +3424(page)s 3932(number)s 4723(of)s 4994(the)s 5342(\207rst)s +5773(entry)s 6318(and)s 6722(the)s 7070(\207rst)s 7501(of)s +7772(the)s 8120(second.)s 480 5241(Our)m 935(\207rst)s 1389(sub-case)s +2291(is)s 2524(when)s 3123(the)s 3494(tw)s 2(o)k +3927(entries)s 4638(ha)s 4(v)k 3(e)k 5162(no)s +5478(page)s 6009(number)s 6823(in)s 7089(common.)s 8114(Since)s +220 fnt2 8724 5238(y)m 240 fnt1 8916 5241(is)m 0 4953(non-ra)m 3(w)k 15(,)k +886(it)s 1079(has)s 1450(a)s 1617(page)s 2126(number)s +2918(not)s 3285(equal)s 3859(to)s 4098(an)s 3(y)k +4496(page)s 5005(number)s 5797(in)s 220 fnt2 6041 4950(x)m +240 fnt1 6149 4953(.)m 6314(Therefore)s 7312(the)s 7661(discriminant)s +8916(is)s 0 4665(non-empty)m 1101(and)s 1516(the)s 1875(result)s +2476(is)s 2697(the)s 3055(meld)s 3602(of)s 220 fnt2 +3884 4662(x{@OneCol ,})m 240 fnt1 5290 4665(with)m 220 fnt2 5783 4662(y)m +240 fnt1 5891 4665(,)m 6008(which)s 6661(for)s 7010(e)s 3(xample)k +7884(could)s 8485(be)s 8778(the)s 0 4377(meld)m 536(of)s +220 fnt2 480 3926(label &0.03fu {}{@OneCol ,} pn1{@OneCol ,} pn2{@OneCol ,})m 240 fnt1 0 3430(with)m 220 fnt2 +480 2978(label &0.03fu {}{@OneCol ,} pn3{@OneCol ,} pn4)m 240 fnt1 0 2482(This)m 508(will)s 966(gi)s 6(v)k 3(e)k +1457(the)s 1837(right)s 2380(answer)s 9(,)k 3187(since)s +220 fnt2 3767 2479(@Meld)m 240 fnt1 4545 2482(treats)m 5144(adjacent)s +6032(objects)s 6792(as)s 7074(single)s 7733(elements,)s 8722(and)s +0 2194(al)m 2(w)k 2(ays)k 711(incorporates)s 1943(elements)s +2843(from)s 3367(the)s 3715(\207rst)s 4146(parameter)s 5160(\207rst)s +5591(when)s 6167(it)s 6359(has)s 6729(a)s 6895(choice.)s +480 1820(Our)m 908(second)s 1627(sub-case)s 2501(is)s 2707(when)s +3278(the)s 3622(tw)s 2(o)k 4028(entries)s 4710(ha)s 4(v)k 3(e)k +5207(a)s 5368(page)s 5872(number)s 6659(in)s 6897(common)s +7788(and)s 220 fnt2 8187 1817(y)m 240 fnt1 8351 1820(has)m +8716(tw)s 2(o)k 0 1532(or)m 273(more)s 835(page)s +1358(numbers.)s 2361(The)s 2804(common)s 3714(page)s 4236(number)s +5042(must)s 5582(be)s 5879(the)s 6242(last)s 6648(of)s +220 fnt2 6933 1529(x)m 240 fnt1 7116 1532(and)m 7535(the)s +7898(\207rst)s 8344(of)s 220 fnt2 8630 1529(y)m 240 fnt1 +8738 1532(,)m 8860(so)s 0 1244(ag)m 1(ain)k 220 fnt2 +574 1241(y)m 240 fnt1 742 1244(has)m 1112(something)s 2163(\(its)s +2518(last)s 2909(page)s 3417(number\))s 4277(distinct)s 5040(from)s +220 fnt2 5564 1241(x)m 240 fnt1 5672 1244(,)m 5779(the)s +6128(discriminant)s 7382(is)s 7592(non-empty)s 15(,)k 8722(and)s +0 956(we)m 335(end)s 739(up)s 1032(for)s 1370(e)s 3(xample)k +2233(melding)s 220 fnt2 480 455(label &0.03fu {}{@OneCol ,} pn1{@OneCol ,} pn2{@OneCol ,})m +grestore +gsave +1417 -15423 translate +240 fnt1 0 0 0 0 240 288 60 LoutGraphic +gsave +1 LoutMargSet +grestore + +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 100 106 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +%%+ font Times-Italic +%%+ font Helvetica +/pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def +%%IncludeResource: font Times-Bold +/Times-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 +0 0 translate +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +240 fnt5 1417 -1583(100)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 +gsave +0 LoutMargSet +grestore +0 13205(with)m 220 fnt2 480 12753(label &0.03fu {}{@OneCol ,} pn2{@OneCol ,} pn3)m 240 fnt1 0 12257(Ag)m 1(ain)k +648(it')s 13(s)k 998(clear)s 1529(that)s 1955(the)s +2310(meld)s 2854(will)s 3288(produce)s 4123(the)s 4478(right)s +4997(answer;)s 5794(in)s 6045(f)s 2(act,)k 6514(this)s +6918(second)s 7649(sub-case)s 8536(could)s 0 11969(be)m 282(uni\207ed)s +1005(with)s 1487(the)s 1835(\207rst)s 2266(sub-case.)s 480 11595(Our)m +916(third)s 1429(sub-case)s 2312(is)s 2526(when)s 3106(the)s +3458(tw)s 2(o)k 3872(entries)s 4563(ha)s 4(v)k 3(e)k +5068(a)s 5238(page)s 5750(number)s 6545(in)s 6792(common)s +7691(and)s 220 fnt2 8099 11592(y)m 240 fnt1 8271 11595(has)m +8646(only)s 0 11307(one)m 402(page)s 910(number)s 13(.)k +1792(In)s 2048(this)s 2444(case,)s 2962(typi\207ed)s 3751(by)s +220 fnt2 4045 11304(x)m 240 fnt1 4213 11307(with)m 4695(v)s 6(alue)k +220 fnt2 480 10806(label &0.03fu {}{@OneCol ,} pn1{@OneCol ,} pn2)m 240 fnt1 0 10310(and)m 220 fnt2 +404 10307(y)m 240 fnt1 572 10310(with)m 1054(v)s 6(alue)k +220 fnt2 480 9811(label &0.03fu {}{@OneCol ,} pn2)m 240 fnt1 0 9315(it)m 190(is)s +398(clear)s 918(that)s 220 fnt2 1334 9312(y)m 240 fnt1 +1500 9315(of)m 6(fers)k 2098(nothing)s 2881(ne)s 6(w)k 15(,)k +3363(the)s 3709(discriminant)s 4961(is)s 5168(empty)s 15(,)k +5856(and)s 6257(the)s 6603(result,)s 7238(quite)s 7769(correctly)s 15(,)k +8707(is)s 220 fnt2 8914 9312(x)m 240 fnt1 9022 9315(.)m +0 9027(This)m 476(completes)s 1496(the)s 1844(proof.)s +grestore +gsave +1417 -15423 translate +240 fnt1 +0 0 0 0 240 288 60 LoutGraphic +gsave +0 LoutMargSet +grestore + +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 101 107 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +%%+ font Helvetica +%%+ font Times-Italic +/pgsave save def +%%IncludeResource: font Times-Roman +/Times-Romanfnt1 vec2 /Times-Roman LoutRecode +/fnt1 { /Times-Romanfnt1 LoutFont } def +%%IncludeResource: font Times-Bold +/Times-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-Italicfnt8 vec2 /Times-Italic LoutRecode +/fnt8 { /Times-Italicfnt8 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +9066 13448 0 13448 240 288 60 1417 -14865 LoutGr2 +1 LoutMargSet +grestore +480 fnt5 0 12397(A)m 12(ppendix)k +2097(A.)s 2784(Implementation)s 6168(of)s 6713(T)s 44(extur)k 8(es)k + +[ /Dest /LOUTtex /DEST pdfmark +240 fnt1 0 11711(The)m 430(follo)s 6(wing)k 1409(notes)s +1967(detail)s 2554(ho)s 6(w)k 3018(PostScript)s 4062(patterns)s +4871(ha)s 4(v)k 3(e)k 5374(been)s 5885(used)s +6385(to)s 6626(produce)s 7455(te)s 3(xtures.)k 8374(See)s +8778(the)s 0 11423(PostScript)m 1042(Language)s 2042(Reference)s 3066(Manual,)s +3904(second)s 4627(edition)s 5348(\(PLRM\),)s 6265(especially)s 7274(Section)s +8048(4.9.)s 480 11049(PostScript)m 1525(patterns)s 2336(are)s 2686(implemented)s +3996(as)s 4250(color)s 4804(spaces,)s 5539(whereas)s 6376(from)s +6904(a)s 7074(logical)s 7782(point)s 8338(of)s 8613(vie)s 6(w)k +0 10761(the)m 3(y)k 462(are)s 807(really)s 1402(separate)s +2239(entities)s 2977(in)s 3218(the)s 3564(graphics)s 4424(state,)s +4966(independent)s 6194(of)s 6463(color)s 7013(\(e)s 3(xcept)k +7771(that)s 8187(a)s 8351(colored)s 0 10473(te)m 3(xture)k +716(o)s 3(v)k 3(errides)k 1650(an)s 3(y)k +2047(current)s 2783(color)s 3334(while)s 3921(it)s 4113(is)s +4323(in)s 4566(ef)s 6(fect\).)k 5345(T)s 19(o)k +5645(ensure)s 6325(that)s 6743(Lout')s 13(s)k 220 fnt2 +7405 10470(@SetT)m 26(e)k 6(xture)k 240 fnt1 8722 10473(and)m +220 fnt2 0 10182(@SetColour)m 240 fnt1 1260 10185(symbols)m 2112(ha)s 4(v)k 3(e)k +2616(this)s 3015(desired)s 3766(independence)s 5141(of)s 5415(each)s +5913(other)s 9(,)k 6505(the)s 6856(follo)s 6(wing)k +7836(operators)s 8779(are)s 0 9897(de\207ned)m 763(in)s 1006(the)s +1354(Lout)s 1866(prologue:)s 5090 12 0 12 240 288 60 1063 9281 LoutGr2 +LoutBox 0.0 0.0 0.0 LoutSetRGBColor fill +grestore + +grestore +240 fnt8 2550 9385(Lout-de\207ned)m 3826(oper)s 3(ator)k +gsave +6153 9281 translate +240 fnt1 1850 12 0 12 240 288 60 LoutGraphic +gsave +LoutBox 0.0 0.0 0.0 LoutSetRGBColor fill +grestore + +grestore +6297(What)s 6866(it)s 7062(r)s 8(eplaces)k +220 fnt2 2623 9092(n)m 2(um)k 3322(LoutSetGr)s 2(a)k 6(y)k +5522(-)s 240 fnt1 6297 9095(setgray)m 220 fnt2 1679 8804(n)m 2(um)k +2151(n)s 2(um)k 2623(n)s 2(um)k 3322(LoutSetRGBColor)s +5522(-)s 240 fnt1 6297 8807(setr)m 4(gbcolor)k 220 fnt2 +1679 8516(n)m 2(um)k 2151(n)s 2(um)k 2623(n)s 2(um)k +3322(LoutSetHSBColor)s 5522(-)s 240 fnt1 6297 8519(sethsbcolor)m 220 fnt2 +1207 8228(n)m 2(um)k 1679(n)s 2(um)k 2151(n)s 2(um)k +2623(n)s 2(um)k 3322(LoutSetCMYKColor)s 5522(-)s 240 fnt1 +6297 8231(setcmykcolor)m 2115 12 0 12 240 288 60 1063 7865 LoutGr2 +LoutBox 0.0 0.0 0.0 LoutSetRGBColor fill +grestore + +grestore +220 fnt2 2920 7940(p)m gsave +3178 7865 translate +240 fnt1 2200 12 0 12 240 288 60 LoutGraphic +gsave +LoutBox 0.0 0.0 0.0 LoutSetRGBColor fill +grestore + +grestore +3322(LoutSetT)s 26(e)k 6(xture)k +gsave +5378 7865 translate +240 fnt1 775 12 0 12 240 288 60 LoutGraphic +gsave +LoutBox 0.0 0.0 0.0 LoutSetRGBColor fill +grestore + +grestore +5522(-)s gsave +6153 7865 translate +240 fnt1 1850 12 0 12 240 288 60 LoutGraphic +gsave +LoutBox 0.0 0.0 0.0 LoutSetRGBColor fill +grestore + +grestore +240 fnt1 6297 7943(setpattern)m +0 7426(These)m 619(ha)s 4(v)k 3(e)k 1111(similar)s +1825(signatures)s 2836(to)s 3066(the)s 3406(corresponding)s 4819(PostScript)s +5852(operators)s 6784(sho)s 6(wn,)k 7502(and)s 7897(the)s +8237(idea)s 8686(is)s 8887(to)s 0 7138(use)m 375(the)s +724(Lout-de\207ned)s 2019(v)s 3(ersions)k 2865(where)s 3506(you)s +3922(w)s 2(ould)k 4578(normally)s 5495(use)s 5871(the)s +6220(PostScript)s 7263(ones.)s 7807(The)s 8236(\207rst)s 8668(four)s +0 6850(set)m 336(the)s 695(color)s 1257(without)s 2059(disturbing)s +3094(an)s 3(y)k 3502(current)s 4249(te)s 3(xture;)k +5032(the)s 5391(last)s 5794(sets)s 6214(the)s 6573(te)s 3(xture)k +7300(without)s 8103(disturbing)s 0 6562(an)m 3(y)k 386(current)s +1110(color)s 13(.)k 1740(Here)s 220 fnt2 2248 6559(p)m +240 fnt1 2411 6562(may)m 2865(be)s 3135(the)s 3471(PostScript)s +220 fnt2 4502 6559(n)m 2(ull)k 240 fnt1 4874 6562(object,)m +5553(meaning)s 6418(no)s 6700(te)s 3(xture)k 7404(i.e.)s +7728(normal)s 8448(\207lling,)s 0 6274(or)m 259(else)s 686(it)s +878(must)s 1403(be)s 1685(an)s 1968(instantiated)s 3127(pattern)s +3847(dictionary)s 15(,)k 4908(as)s 5158(returned)s 6012(by)s +220 fnt2 6306 6271(mak)m 4(epatter)k -5(n)k 240 fnt1 +7513 6274(.)m 480 5900(There)m 1093(are)s 1440(three)s 1973(k)s 2(e)k 3(y)k +2368(data)s 2826(types)s 3382(used)s 3879(by)s 4173(this)s +4569(code:)s 0 5397(\213)m 480(A)s 761(colorspace,)s 1941(denoted)s +220 fnt2 2809 5394(cs)m 240 fnt1 3022 5397(,)m 3180(is)s +3441(a)s 3659(PostScript)s 4752(colorspace)s 5881(array)s 6477(and)s +6932(may)s 7449(ha)s 4(v)k 3(e)k 8002(one)s +8455(of)s 8778(the)s 480 5109(follo)m 6(wing)k 1457(v)s 6(alues:)k +220 fnt2 1104 4592([ /De)m 6(viceGr)k 2(a)k 6(y ])k +240 fnt1 3059 4595(The)m 3487(gre)s 3(yscale)k 4442(colorspace)s +220 fnt2 1104 4248([ /De)m 6(viceRGB ])k 240 fnt1 3059 4251(The)m +3487(RGB)s 4023(colorspace)s 220 fnt2 1104 3904([ /De)m 6(viceCMYK ])k +240 fnt1 3059 3907(The)m 3487(CMYK)s 4266(colorspace)s 220 fnt2 +1104 3560([ /P)m 8(atter)k -5(n ])k 240 fnt1 3059 3563(A)m +3289(colored)s 4064(pattern)s 220 fnt2 1104 3216([ /P)m 8(atter)k -5(n /name ])k +240 fnt1 3059 3219(An)m 3497(uncolored)s 4600(pattern;)s 220 fnt2 +5463 3216(/name)m 240 fnt1 6214 3219(may)m 6768(be)s 220 fnt2 +7138 3216(/De)m 6(viceGr)k 2(a)k 6(y)k 240 fnt1 +8329 3219(,)m 220 fnt2 8525 3216(/De)m 8858(-)s 3059 2928(viceRGB)m +240 fnt1 3916 2931(,)m 4023(or)s 220 fnt2 4282 2928(/De)m 6(viceCMYK)k + +[ /Dest /LOUT16_1489_tex_1 /DEST pdfmark +240 fnt1 0 2447(\213)m 480(A)s 708(color)s 9(,)k +1294(denoted)s 2107(c,)s 2318(is)s 2525(an)s 2805(array)s +3346(containing)s 4407(a)s 4570(PostScript)s 5609(non-pattern)s 6765(color)s +7314(and)s 7715(thus)s 8162(may)s 8625(ha)s 4(v)k 3(e)k +480 2159(one)m 882(of)s 1153(the)s 1501(follo)s 6(wing)k +2478(v)s 6(alues:)k 220 fnt2 1104 1642([ g)m 2(re)k 4(y ])k +240 fnt1 3031 1645(A)m 220 fnt2 3261 1642(/De)m 6(viceGr)k 2(a)k 6(y)k +240 fnt1 4512 1645(color)m 220 fnt2 1104 1298([ red g)m 2(reen b)k 4(lue ])k +240 fnt1 3031 1301(A)m 220 fnt2 3261 1298(/De)m 6(viceRGB)k +240 fnt1 4513 1301(color)m 220 fnt2 1104 954([ c m y k ])m 240 fnt1 +3031 957(A)m 220 fnt2 3261 954(/De)m 6(viceCMYK)k 240 fnt1 +4679 957(color)m 480 440(W)m 19(e)k 853(enclose)s 1630(colors)s +2269(in)s 2516(an)s 2804(array)s 3352(to)s 3595(mak)s 2(e)k +4171(it)s 4368(easy)s 4851(for)s 5193(us)s 5461(to)s +5704(deal)s 6162(with)s 6648(their)s 7149(v)s 6(arying)k +7931(length.)s 8698(The)s 480 152(array)m 1024(has)s 1394(to)s +1633(be)s 1915(unpack)s 2(ed)k 2889(with)s 220 fnt2 +3371 149(aload)m 240 fnt1 3955 152(before)m 4621(calling)s 220 fnt2 +5324 149(setcolor)m 240 fnt1 6092 152(.)m +[ /Dest /LOUT16_1489_tex_2 /DEST pdfmark + +grestore +0 0 0 0 240 288 60 1417 -14865 LoutGr2 +1 LoutMargSet +grestore + +grestore +192 fnt5 5811 -15421(101)m + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 102 108 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +%%+ font Times-Italic +%%+ font Helvetica +%%+ font Courier +/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 Courier +/Courierfnt9 vec2 /Courier LoutRecode +/fnt9 { /Courierfnt9 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate +240 fnt5 1417 -1583(102)m +240 fnt6 6599 -1580(Appendix)m 7563(A.)s 7863(Implementation)s 9418(of)s +9699(T)s 22(e)k 4(xtur)k 8(es)k gsave +1417 -15423 translate +240 fnt1 +9066 13368 0 13259 240 288 60 LoutGraphic +gsave +0 LoutMargSet +grestore +0 13205(\213)m 480(A)s 744(pattern,)s 1549(denoted)s 220 fnt2 +2400 13202(p)m 240 fnt1 2514 13205(.)m 2712(F)s 3(or)k +3136(us,)s 3491(a)s 3691(pattern)s 4446(is)s 4691(either)s +5328(the)s 5711(PostScript)s 6788(null)s 7249(object,)s 7975(meaning)s +8887(to)s 480 12917(\207ll)m 824(with)s 1331(solid)s 1879(color)s 9(,)k +2492(or)s 2776(else)s 3228(it)s 3444(is)s 3679(a)s +3870(dictionary)s 4917(as)s 5192(returned)s 6071(by)s 220 fnt2 +6389 12914(mak)m 4(epatter)k -5(n)k 240 fnt1 7596 12917(.)m +7785(When)s 8439(such)s 8960(a)s 480 12629(dictionary)m 1505(is)s +1718(installed)s 2588(in)s 2834(the)s 3185(current)s 3924(graphics)s +4788(state,)s 5334(this)s 5733(code)s 6244(guarantees)s 7320(that)s +7741(it)s 7936(will)s 8365(contain)s 480 12341(tw)m 2(o)k +890(e)s 3(xtra)k 1424(entries:)s 220 fnt2 1104 11873(/Under)m -3(lyingColorSpace)k +240 fnt1 3640 11876(A)m 220 fnt2 3870 11873(cs)m 240 fnt1 +4143 11876(as)m 4393(de\207ned)s 5156(abo)s 3(v)k 3(e)k +220 fnt2 1104 11529(/Under)m -3(lyingColor)k 240 fnt1 3640 11532(A)m +220 fnt2 3870 11529(c)m 240 fnt1 4035 11532(as)m 4285(de\207ned)s +5048(abo)s 3(v)k 3(e)k 480 11015(W)m 19(e)k +849(need)s 1358(these)s 1905(e)s 3(xtra)k 2438(entries)s +3124(to)s 3363(mak)s 2(e)k 3934(color)s 4484(independent)s +5714(of)s 5984(te)s 3(xture:)k 6809(without)s 7600(them)s +8137(we)s 8471(w)s 2(ould)k 480 10727(lose)m 943(the)s +1314(current)s 2072(color)s 2646(when)s 3244(we)s 3602(set)s +3949(a)s 4138(te)s 3(xture.)k 4984(Because)s 5860(of)s +6153(these)s 6723(v)s 6(ariables)k 7652(we)s 8010(can')s 4(t)k +8566(share)s 480 10439(pattern)m 1200(dictionaries)s 2365(among)s 3070(graphics)s +3931(states.)s 4625(W)s 19(e)k 4994(must)s 5519(cop)s 2(y)k +6037(them.)s +[ /Dest /LOUT16_1489_tex_3 /DEST pdfmark +0 9936(This)m 476(representation)s 1886(obe)s 3(ys)k +2493(the)s 2841(follo)s 6(wing)k 3818(in)s 9(v)k 6(ariant:)k +0 9433(\213)m 480(All)s 853(components)s 2075(of)s 2360(the)s +2721(PostScript)s 3777(graphics)s 4652(state)s 5158(related)s 5879(to)s +6132(pattern)s 6865(and)s 7283(color)s 7848(ha)s 4(v)k 3(e)k +8363(de\207ned)s 480 9145(v)m 6(alues)k 1136(\(e.g.)s 1605(there)s +2138(is)s 2348(ne)s 6(v)k 3(er)k 2930(a)s +3096(situation)s 3976(where)s 4616(we)s 4951(set)s 5276(color)s +5827(space)s 6414(b)s 4(ut)k 6776(not)s 7142(color\).)s + +[ /Dest /LOUT16_1489_tex_4 /DEST pdfmark +0 8642(\213)m 480(If)s 709(the)s 1056(PostScript)s 2097(graphics)s +2956(state)s 3448(contains)s 4295(a)s 220 fnt2 4460 8639(/P)m 8(atter)k -5(n)k +240 fnt1 5269 8642(colorspace,)m 6397(the)s 6744(pattern)s 7463(dictionary)s +8484(stored)s 480 8354(in)m 723(the)s 1071(state)s 1564(has)s +220 fnt2 1934 8351(/Under)m -3(lyingColorSpace)k 240 fnt1 4242 8354(and)m +220 fnt2 4646 8351(/Under)m -3(lyingColor)k 240 fnt1 6340 8354(entries)m +7027(of)s 7298(types)s 220 fnt2 7854 8351(cs)m 240 fnt1 +8127 8354(and)m 220 fnt2 8531 8351(c)m 240 fnt1 8636 8354(.)m + +[ /Dest /LOUT16_1489_tex_5 /DEST pdfmark +0 7851(\213)m 480(If)s 733(the)s 1105(graphics)s 1990(state)s +2507(contains)s 3379(an)s 3685(uncolored)s 220 fnt2 4724 7848(/P)m 8(atter)k -5(n)k +240 fnt1 5559 7851(colorspace,)m 6712(then)s 7205(the)s 220 fnt2 +7577 7848(/Under)m -3(lyingCol)k 9002(-)s 480 7560(orSpace)m 240 fnt1 +1338 7563(and)m 220 fnt2 1730 7560(/Under)m -3(lyingColor)k 240 fnt1 +3413 7563(entries)m 4088(of)s 4347(the)s 4684(pattern)s 5392(dictionary)s +6404(stored)s 7034(in)s 7265(the)s 7602(state)s 8083(agree)s +8644(with)s 480 7275(the)m 828(underlying)s 1918(color)s 2469(space)s +3056(and)s 3460(color)s 4011(stored)s 4653(in)s 4896(the)s +5244(graphics)s 6105(state.)s +[ /Dest /LOUT16_1489_tex_6 /DEST pdfmark +0 6772(And)m 471(it)s 663(has)s +1033(the)s 1381(follo)s 6(wing)k 2358(abstraction)s 3463(function:)s +0 6269(\213)m 480(If)s 725(the)s 1089(graphics)s 1965(state)s +2474(colorspace)s 3568(is)s 220 fnt2 3793 6266(/P)m 8(atter)k -5(n)k +240 fnt1 4544 6269(,)m 4667(then)s 5152(the)s 5515(abstract)s +6333(current)s 7085(te)s 3(xture)k 7816(is)s 8042(the)s +8406(pattern)s 480 5981(dictionary)m 1500(stored)s 2138(in)s 2378(the)s +2722(graphics)s 3580(state)s 4069(color)s 13(.)k 4707(If)s +4934(the)s 5278(graphics)s 6136(state)s 6625(colorspace)s 7700(is)s +7906(not)s 220 fnt2 8268 5978(/P)m 8(atter)k -5(n)k +240 fnt1 9019 5981(,)m 480 5693(then)m 949(the)s 1297(abstract)s +2099(current)s 2835(te)s 3(xture)k 3551(is)s 220 fnt2 +3761 5690(n)m 2(ull)k 240 fnt1 4085 5693(.)m +[ /Dest /LOUT16_1489_tex_7 /DEST pdfmark +0 5236(\213)m +480(If)s 725(the)s 1089(graphics)s 1966(state)s 2475(colorspace)s +3568(is)s 220 fnt2 3794 5233(/P)m 8(atter)k -5(n)k +240 fnt1 4545 5236(,)m 4668(then)s 5153(the)s 5517(abstract)s +6334(colorspace)s 7428(and)s 7848(color)s 8415(are)s 8778(the)s +480 4948(v)m 6(alues)k 1145(of)s 220 fnt2 1425 4945(/Under)m -3(lyingColorSpace)k +240 fnt1 3743 4948(and)m 220 fnt2 4156 4945(/Under)m -3(lyingColor)k +240 fnt1 5860 4948(in)m 6112(the)s 6469(pattern)s 7199(dictionary)s +8231(stored)s 8883(in)s 480 4660(the)m 849(graphics)s 1731(state)s +2246(color)s 13(.)k 2849(If)s 3100(the)s 3470(graphics)s +4352(state)s 4866(colorspace)s 5966(is)s 6197(not)s 220 fnt2 +6584 4657(/P)m 8(atter)k -5(n)k 240 fnt1 7335 4660(,)m +7464(then)s 7954(the)s 8324(abstract)s 480 4372(current)m 1216(colorspace)s +2294(and)s 2698(color)s 3249(are)s 3596(as)s 3846(returned)s +4700(by)s 220 fnt2 4994 4369(currentcolorspace)m 240 fnt1 6790 4372(and)m +220 fnt2 7194 4369([ currentcolor ])m 240 fnt1 8583 4372(.)m +[ /Dest /LOUT16_1489_tex_8 /DEST pdfmark +0 3869(The)m +428(follo)s 6(wing)k 1405(functions)s 2346(are)s 2693(pri)s 6(v)k 6(ate)k +3400(helpers)s 4141(for)s 4479(the)s 4827(public)s 5478(functions:)s +220 fnt9 480 3392(% Current pattern \(may be null\): - LoutCurrentP p)m 480 3144(/LoutCurrentP)m 480 2896({ %% -)m 480 2648( currentcolorspace %% [ /name etc ])m +480 2400( 0 get /Pattern eq %% bool)m 480 2152( { %% - \(have pattern\))m 480 1904( [ currentcolor ] %% [ comp0 ... compn p ])m 480 1656( dup length 1 sub get %% p)m 480 1408( })m +480 1160( { %% - \(no pattern\))m 480 912( null %% null)m 480 664( } ifelse %% p)m 480 416(} def)m +[ /Dest /LOUT16_1489_tex_9 /DEST pdfmark + +grestore +gsave +1417 -15423 translate +240 fnt1 +0 0 0 0 240 288 60 LoutGraphic +gsave +0 LoutMargSet +grestore + +grestore + +grestore + +grestore + +pgsave restore +showpage + +%%Page: 103 109 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +%%+ font Courier +%%+ 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 Courier +/Courierfnt9 vec2 /Courier LoutRecode +/fnt9 { /Courierfnt9 LoutFont } def %%IncludeResource: font Helvetica /Helveticafnt2 vec2 /Helvetica LoutRecode /fnt2 { /Helveticafnt2 LoutFont } def @@ -19108,110 +20555,53 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -240 fnt5 1417 -1583(96)m 240 fnt6 8434 -1580(Chapter)m 9284(4.)s -9558(Examples)s gsave +240 fnt5 10130 -1581(103)m +gsave 1417 -15423 translate -240 fnt1 9066 13368 0 13368 240 288 60 LoutGraphic +240 fnt1 9066 13414 0 13323 240 288 60 LoutGraphic gsave -0 LoutMargSet +1 LoutMargSet grestore -0 13205(If)m 230(the)s 578(inde)s 3(x)k -1162(entry)s 1707(is)s 1917(non-ra)s 3(w)k 15(,)k -2803(the)s 3151(follo)s 6(wing)k 4128(e)s 3(xpression)k -5205(is)s 5415(used)s 5912(to)s 6151(de\207ne)s 6792(its)s -7068(v)s 6(alue:)k 220 fnt2 480 12704(label &0.03fu {}{@OneCol ,} pn)m 240 fnt1 -0 12208(where)m 220 fnt2 635 12205(pn)m 240 fnt1 919 12208(is)m -1124(the)s 1466(page)s 1969(number)s 2754(or)s 3008(page)s -3510(number)s 4296(range)s 4877(of)s 5143(the)s 5485(entry)s 15(.)k -6120(In)s 6370(each)s 6860(case)s 7321(we)s 7651(clearly)s -8348(ha)s 4(v)k 3(e)k 8843(an)s 0 11920(entry)m -545(that)s 963(satis\207es)s 1770(all)s 2063(the)s 2411(requirements)s -3709(of)s 3980(the)s 4328(theorem.)s 480 11546(No)m 6(w)k -1000(consider)s 1877(what)s 2409(happens)s 3252(when)s 3835(we)s -4176(come)s 4757(to)s 5003(mer)s 4(ge)k 5659(tw)s 2(o)k -6076(entries.)s 6882(The)s 7317(code)s 7832(used)s 8336(to)s -8582(carry)s 0 11258(out)m 366(this)s 762(mer)s 4(ge)k -1411(is)s 220 fnt2 480 10757(def @Merge left x r)m -3(ight y)k 480 10469({)m -480 10181( { x @Rump { x @Meld y } } @Case)m 480 9893( {)m 480 9605( "" @Y)m 4(ield x)k 480 9317( else @Y)m 4(ield { { x{@OneCol ,} } @Meld y })k -480 9029( })m 480 8453(})m 240 fnt1 0 7959(where)m 220 fnt2 -640 7956(x)m 240 fnt1 808 7959(is)m 1018(the)s 1366(\207rst)s -1797(entry)s 2342(and)s 220 fnt2 2746 7956(y)m 240 fnt1 -2914 7959(is)m 3124(the)s 3472(second.)s 480 7585(W)m 19(e)k -849(call)s 1248(the)s 1596(e)s 3(xpression)k 220 fnt2 -480 7084(x @Rump { x @Meld y })m 240 fnt1 0 6584(the)m 240 fnt6 348 6586(discriminant)m -240 fnt1 1561 6584(,)m 1668(since)s 2215(it)s 2407(determines)s -3506(which)s 4148(case)s 4615(to)s 4854(apply)s 15(.)k -5535(W)s 19(e)k 5904(will)s 6330(track)s 6868(this)s -7264(in)s 7507(detail)s 8092(belo)s 6(w)k 15(,)k -8764(b)s 4(ut)k 0 6296(approximately)m 15(,)k 1483(its)s -1770(function)s 2635(is)s 2856(to)s 3105(determine)s 4127(whether)s -220 fnt2 4968 6293(y)m 240 fnt1 5147 6296(contains)m 6005(something)s -7066(that)s 7495(is)s 7716(dif)s 6(ferent)k 8602(from)s -0 6008(an)m 3(ything)k 903(in)s 220 fnt2 1162 6005(x)m -240 fnt1 1270 6008(.)m 1450(If)s 1696(so,)s 2031(then)s -220 fnt2 2516 6005(x @Meld y)m 240 fnt1 3630 6008(dif)m 6(fers)k -4313(from)s 220 fnt2 4852 6005(x)m 240 fnt1 5036 6008(and)m -5456(the)s 5820(discriminant)s 7089(is)s 7315(non-empty;)s 8480(if)s -8713(not,)s 220 fnt2 0 5717(x @Meld y)m 240 fnt1 1098 5720(is)m -1308(equal)s 1881(to)s 220 fnt2 2120 5717(x)m 240 fnt1 -2288 5720(and)m 2692(the)s 3040(discriminant)s 4294(is)s 4504(empty)s 15(.)k -480 5346(The)m 919(\207rst)s 1362(entry)s 15(,)k 220 fnt2 -1956 5343(x)m 240 fnt1 2064 5346(,)m 2183(may)s 2660(be)s -2954(ra)s 3(w)k 3374(or)s 3645(non-ra)s 3(w)k 15(,)k -4543(and)s 4958(the)s 5318(second,)s 220 fnt2 6101 5343(y)m -240 fnt1 6209 5346(,)m 6328(may)s 6805(also)s 7255(be)s -7548(ra)s 3(w)k 7969(or)s 8240(non-ra)s 3(w)k 15(,)k -0 5058(together)m 843(gi)s 6(ving)k 1502(four)s 1960(cases,)s -2571(which)s 3213(we)s 3548(tak)s 2(e)k 4000(in)s -4243(turn.)s 480 4684(If)m 718(both)s 1209(entries)s 1904(are)s -2260(ra)s 3(w)k 15(,)k 2715(then)s 3192(by)s -3494(assumption)s 4650(the)s 3(y)k 5121(ha)s 4(v)k 3(e)k -5630(the)s 5986(same)s 6542(labels)s 7158(and)s 7570(so)s -7844(are)s 8200(identical.)s 0 4396(Thus,)m 220 fnt2 586 4393(x @Meld y)m -240 fnt1 1684 4396(equals)m 220 fnt2 2346 4393(x)m 240 fnt1 -2454 4396(,)m 2561(the)s 2909(discriminant)s 4163(is)s 4373(empty)s 15(,)k -5063(and)s 5467(the)s 5815(result)s 6405(is)s 220 fnt2 -6615 4393(x)m 240 fnt1 6723 4396(,)m 6830(which)s 7472(is)s -7682(correct.)s 480 4022(If)m 220 fnt2 704 4019(x)m 240 fnt1 -866 4022(is)m 1070(ra)s 3(w)k 1473(and)s 220 fnt2 -1870 4019(y)m 240 fnt1 2032 4022(is)m 2236(non-ra)s 3(w)k 15(,)k -3116(then)s 3579(the)s 3920(discriminant)s 5168(is)s 5372(non-empty)s -6457(and)s 6855(the)s 7196(result)s 7780(is)s 7984(the)s -8326(meld)s 8855(of)s 0 3734(tw)m 2(o)k 410(objects,)s -1194(the)s 1542(\207rst)s 1973(ha)s 4(ving)k 2674(the)s -3022(form)s 220 fnt2 480 3233(label &0.03fu {}{@OneCol ,})m 240 fnt1 0 2739(being)m -220 fnt2 585 2736(x)m 240 fnt1 753 2739(with)m 1235(a)s -1401(comma)s 2165(appended,)s 3190(and)s 3594(the)s 3942(second)s -4665(being)s 5250(some)s 5811(non-ra)s 3(w)k 6659(entry)s -7204(such)s 7700(as)s 220 fnt2 480 2238(label &0.03fu {}{@OneCol ,} pn1{@OneCol ,} pn2)m 240 fnt1 -0 1742(where)m 646(the)s 1001(pattern)s 1727(may)s 2200(repeat.)s -2954(W)s 19(e)k 3329(are)s 3683(assuming)s 4647(by)s -4947(induction)s 5915(that)s 220 fnt2 6339 1739(y)m 240 fnt1 -6514 1742(has)m 6891(this)s 7293(form.)s 7928(Clearly)s 15(,)k -8730(this)s 0 1454(meld)m 536(gi)s 6(v)k 3(es)k -1083(a)s 1249(v)s 6(alue)k 1817(equal)s 2390(to)s -220 fnt2 2629 1451(y)m 240 fnt1 2737 1454(,)m 2844(which)s -3486(is)s 3696(the)s 4044(correct)s 4766(result.)s 480 1080(If)m -220 fnt2 710 1077(x)m 240 fnt1 878 1080(is)m 1088(non-ra)s 3(w)k -1936(and)s 220 fnt2 2340 1077(y)m 240 fnt1 2508 1080(is)m -2718(ra)s 3(w)k 15(,)k 3165(the)s 220 fnt2 -3513 1077(@Meld)m 240 fnt1 4259 1080(in)m 4502(the)s 4850(discriminant)s -6104(melds)s 6726(tw)s 2(o)k 7136(v)s 6(alues)k -7792(typi\207ed)s 8581(by)s 220 fnt2 480 579(label &0.03fu {}{@OneCol ,} pn1{@OneCol ,} pn2)m 240 fnt1 -0 83(and)m +220 fnt9 480 13277(% Current color and color space: - LoutCurrentCCS c cs)m 480 13029(/LoutCurrentCCS)m 480 12781({)m +480 12533( LoutCurrentP dup null eq %% p bool)m 480 12285( { %% null)m 480 12037( pop [ currentcolor ] %% c)m 480 11789( currentcolorspace %% c cs)m 480 11541( })m +480 11293( { %% p)m 480 11045( dup %% p p)m 480 10797( /UnderlyingColor get exch %% c p)m 480 10549( /UnderlyingColorSpace get %% c cs)m 480 10301( } ifelse %% c cs)m +480 10053(} def)m +[ /Dest /LOUT16_1489_tex_10 /DEST pdfmark +480 9604(% Make c, cs, and p current: c cs p LoutSetCCSP -)m 480 9356(/LoutSetCCSP)m 480 9108({ %% c cs p)m 480 8860( dup null eq %% c cs p bool)m +480 8612( { %% c cs p \(null pattern\))m 480 8364( pop setcolorspace %% c)m 480 8116( aload pop setcolor %% -)m 480 7868( })m 480 7620( { %% c cs p \(non-null pattern\))m +480 7372( % copy pattern dictionary)m 480 7124( 12 dict copy %% c cs p)m 480 6628( % record cs and c in p)m 480 6380( dup /UnderlyingColorSpace %% c cs p p /UCS)m 480 6132( 3 index put %% c cs p)m +480 5884( dup /UnderlyingColor %% c cs p p /UC)m 480 5636( 4 index put %% c cs p)m 480 5140( % do setcolorspace and setcolor)m 480 4892( dup /PaintType get 1 eq %% c cs p bool)m 480 4644( { %% c cs p \(colored pattern\))m +480 4396( [/Pattern] setcolorspace %% c cs p)m 480 4148( setcolor %% c cs)m 480 3900( pop pop %% -)m 480 3652( })m 480 3404( { %% c cs p \(uncolored pattern\))m +480 3156( [ /Pattern %% c cs p [ /Pattern)m 480 2908( 4 -1 roll %% c p [ /Pattern cs)m 480 2660( ] setcolorspace %% c p)m 480 2412( exch aload length 1 add %% p comp1 ... compm m+1)m 480 2164( -1 roll %% comp1 ... compm p)m +480 1916( setcolor %% -)m 480 1668( } ifelse %% -)m 480 1420( } ifelse %% -)m 480 1172(} def)m +[ /Dest /LOUT16_1489_tex_11 /DEST pdfmark +240 fnt1 +0 697(W)m 9(ith)k 536(the)s 894(helper)s 1561(functions)s +2513(it')s 13(s)k 2865(no)s 6(w)k 3336(easy)s +3825(to)s 4075(deri)s 6(v)k 3(e)k 4729(the)s +5087(colour)s 5768(and)s 6183(te)s 3(xture)k 6909(setting)s +7609(commands)s 8708(that)s 0 409(we)m 346(are)s 705(of)s 6(fering)k +1533(to)s 1784(our)s 2175(end)s 2591(users.)s 3197(When)s +3838(setting)s 4540(the)s 4900(color)s 5463(we)s 5810(pass)s +6284(it,)s 6535(plus)s 6997(the)s 7357(current)s 8105(pattern,)s +8887(to)s 220 fnt2 0 118(LoutSetCCSP)m 240 fnt1 1355 121(;)m +1459(when)s 2027(setting)s 2709(the)s 3049(pattern)s 3761(we)s +4088(pass)s 4542(it,)s 4773(plus)s 5215(the)s 5555(current)s +6283(color)s 9(,)k 6864(to)s 220 fnt2 7095 118(LoutSetCCSP)m +240 fnt1 8450 121(.)m 8605(Note)s grestore gsave 1417 -15423 translate 240 fnt1 0 0 0 0 240 288 60 LoutGraphic gsave -0 LoutMargSet +1 LoutMargSet grestore grestore @@ -19223,154 +20613,95 @@ pgsave restore showpage -%%Page: 97 103 +%%Page: 104 110 %%BeginPageSetup %%PageResources: font Times-Roman -%%+ font Times-Italic %%+ font Times-Bold +%%+ font Times-Italic %%+ font Helvetica +%%+ font Courier /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 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 Courier +/Courierfnt9 vec2 /Courier LoutRecode +/fnt9 { /Courierfnt9 LoutFont } def 0.0500 dup scale 10 setlinewidth %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -240 fnt6 1417 -1580(4.6.)m 1871(Mer)s 8(g)k 2(ed)k -2671(inde)s 4(x)k 3245(entries)s 240 fnt5 10248 -1583(97)m -gsave +240 fnt5 1417 -1583(104)m +240 fnt6 6599 -1580(Appendix)m 7563(A.)s 7863(Implementation)s 9418(of)s +9699(T)s 22(e)k 4(xtur)k 8(es)k gsave 1417 -15423 translate -240 fnt1 9066 13368 0 13266 240 288 60 LoutGraphic +240 fnt1 +9066 13368 0 13259 240 288 60 LoutGraphic gsave -1 LoutMargSet +0 LoutMargSet grestore -220 fnt2 480 13209(label &0.03fu {})m 240 fnt1 0 12715(The)m 440(result)s -1042(of)s 1325(this)s 1733(is)s 220 fnt2 1955 12712(x)m -240 fnt1 2135 12715(with)m 2629(an)s 2924(empty)s 3588(object)s -4244(added)s 4886(at)s 5130(the)s 5490(end.)s 6012(This)s -6500(empty)s 7164(object)s 7820(is)s 8042(the)s 8403(second)s -0 12427(element)m 815(of)s 220 fnt2 1084 12424(y)m 240 fnt1 -1192 12427(,)m 1297(which)s 1937(is)s 2145(not)s 2509(equal)s -3080(to)s 3317(an)s 3(y)k 3712(element)s 4526(of)s -220 fnt2 4795 12424(x)m 240 fnt1 4903 12427(:)m 5067(the)s -5413(second)s 6134(element)s 6948(of)s 220 fnt2 7217 12424(x)m -240 fnt1 7383 12427(is)m 7591(not)s 220 fnt2 7955 12424({})m -240 fnt1 8150 12427(b)m 4(ut)k 8510(rather)s 220 fnt2 -0 12136({}{@OneCol ,})m 240 fnt1 1371 12139(,)m 1515(because)s 220 fnt2 -2365 12136(@Meld)m 240 fnt1 3148 12139(treats)m 3752(immediately)s 5038(adjacent)s -5931(objects)s 6696(as)s 6983(single)s 7647(elements.)s 8698(The)s -0 11851(result)m 590(of)s 220 fnt2 861 11848(@Rump)m 240 fnt1 -1720 11851(is)m 1930(then)s 2398(this)s 2794(e)s 3(xtra)k -3327(empty)s 3979(object,)s 4669(so)s 4935(the)s 5282(discriminant)s -6536(is)s 6745(the)s 7093(empty)s 7744(object)s 8388(and)s -8791(we)s 0 11563(return)m 220 fnt2 627 11560(x)m 240 fnt1 -735 11563(,)m 842(correctly)s 15(.)k 1839(It)s 2044(is)s -2254(this)s 2650(case)s 3117(that)s 3535(requires)s 4355(us)s -4619(to)s 4858(use)s 220 fnt2 5233 11560(0.03fu)m 240 fnt1 -5829 11563(;)m 5941(without)s 6732(it)s 6924(we)s 7259(w)s 2(ould)k -7914(be)s 8196(melding)s 220 fnt2 480 11062(label{@OneCol ,} pn1{@OneCol ,} pn2)m 240 fnt1 -0 10566(with)m 220 fnt2 480 10118(label)m 240 fnt1 0 9664(producing)m -220 fnt2 480 9163(label{@OneCol ,} pn1{@OneCol ,} pn2 label)m 240 fnt1 0 8667(leading)m 757(to)s -996(a)s 1162(non-empty)s 2253(discriminant)s 3507(and)s 3911(the)s -4259(wrong)s 4924(answer)s 13(.)k 480 8293(This)m 957(lea)s 4(v)k 3(es)k -1600(just)s 2007(the)s 2357(case)s 2826(where)s 3468(both)s -220 fnt2 3953 8290(x)m 240 fnt1 4123 8293(and)m 220 fnt2 -4529 8290(y)m 240 fnt1 4698 8293(are)m 5047(non-ra)s 3(w)k 15(.)k -5992(W)s 19(e)k 6363(will)s 6791(di)s 6(vide)k -7441(this)s 7839(last)s 8232(case)s 8701(into)s 0 8005(three)m -533(sub-cases,)s 1556(b)s 4(ut)k 1918(\207rst)s 2349(we)s -2684(need)s 3194(some)s 3755(general)s 4513(observ)s 6(ations.)k -480 7631(Inde)m 3(x)k 1078(entries)s 1766(are)s 2114(sorted)s -2757(for)s 3096(mer)s 4(ging)k 3943(in)s 4187(the)s -4536(order)s 5101(in)s 5345(which)s 5988(their)s 6486(anchor)s -7198(points)s 7835(appear)s 8533(in)s 8778(the)s 0 7343(\207nal)m -490(printed)s 1235(document.)s 2354(This)s 2840(means)s 3513(that)s -3941(o)s 3(v)k 3(er)k 4431(the)s 4789(course)s -5480(of)s 5761(these)s 6319(entries)s 7016(the)s 7375(page)s -7893(numbers)s 8779(are)s 0 7055(non-decreasing.)m 1636(It)s 1853(is)s -2075(therefore)s 3004(clear)s 3539(that,)s 4016(although)s 4923(the)s -5283(order)s 5859(of)s 6142(mer)s 4(ging)k 7000(is)s -7222(unde\207ned)s 8237(\(actually)s 0 6767(a)m 196(balanced)s 1134(tree)s -1577(order)s 2172(is)s 2412(used\),)s 3067(whene)s 6(v)k 3(er)k -4078(tw)s 2(o)k 4519(entries)s 5236(are)s 5613(presented)s -6617(for)s 6986(mer)s 4(ging,)k 7916(all)s 8239(the)s -8618(page)s 0 6479(numbers)m 867(in)s 1101(the)s 1440(\207rst)s -1862(entry)s 2398(are)s 2736(no)s 3020(lar)s 4(ger)k -3623(than)s 4083(all)s 4368(the)s 4707(page)s 5206(numbers)s -6072(in)s 6306(the)s 6645(second)s 7359(entry)s 15(.)k -7990(W)s 19(e)k 8350(are)s 8688(also)s 0 6191(assuming)m -957(inducti)s 6(v)k 3(ely)k 2078(that)s 2496(the)s -2844(page)s 3352(numbers)s 4227(in)s 4471(each)s 4966(entry)s -5511(are)s 5858(distinct)s 6621(and)s 7025(monotone)s 8040(increasing.)s -0 5903(Thus,)m 599(there)s 1145(can)s 1547(be)s 1842(at)s -2087(most)s 2626(one)s 3041(page)s 3562(number)s 4366(common)s -5274(to)s 5526(an)s 3(y)k 5937(tw)s 2(o)k -6360(entries)s 7060(being)s 7658(mer)s 4(ged,)k 8491(and)s -8909(if)s 0 5615(there)m 533(is)s 743(one)s 1145(in)s -1388(common)s 2283(it)s 2475(is)s 2685(the)s 3033(last)s -3424(page)s 3932(number)s 4723(of)s 4994(the)s 5342(\207rst)s -5773(entry)s 6318(and)s 6722(the)s 7070(\207rst)s 7501(of)s -7772(the)s 8120(second.)s 480 5241(Our)m 935(\207rst)s 1389(sub-case)s -2291(is)s 2524(when)s 3123(the)s 3494(tw)s 2(o)k -3927(entries)s 4638(ha)s 4(v)k 3(e)k 5162(no)s -5478(page)s 6009(number)s 6823(in)s 7089(common.)s 8114(Since)s -220 fnt2 8724 5238(y)m 240 fnt1 8916 5241(is)m 0 4953(non-ra)m 3(w)k 15(,)k -886(it)s 1079(has)s 1450(a)s 1617(page)s 2126(number)s -2918(not)s 3285(equal)s 3859(to)s 4098(an)s 3(y)k -4496(page)s 5005(number)s 5797(in)s 220 fnt2 6041 4950(x)m -240 fnt1 6149 4953(.)m 6314(Therefore)s 7312(the)s 7661(discriminant)s -8916(is)s 0 4665(non-empty)m 1101(and)s 1516(the)s 1875(result)s -2476(is)s 2697(the)s 3055(meld)s 3602(of)s 220 fnt2 -3884 4662(x{@OneCol ,})m 240 fnt1 5290 4665(with)m 220 fnt2 5783 4662(y)m -240 fnt1 5891 4665(,)m 6008(which)s 6661(for)s 7010(e)s 3(xample)k -7884(could)s 8485(be)s 8778(the)s 0 4377(meld)m 536(of)s -220 fnt2 480 3926(label &0.03fu {}{@OneCol ,} pn1{@OneCol ,} pn2{@OneCol ,})m 240 fnt1 0 3430(with)m 220 fnt2 -480 2978(label &0.03fu {}{@OneCol ,} pn3{@OneCol ,} pn4)m 240 fnt1 0 2482(This)m 508(will)s 966(gi)s 6(v)k 3(e)k -1457(the)s 1837(right)s 2380(answer)s 9(,)k 3187(since)s -220 fnt2 3767 2479(@Meld)m 240 fnt1 4545 2482(treats)m 5144(adjacent)s -6032(objects)s 6792(as)s 7074(single)s 7733(elements,)s 8722(and)s -0 2194(al)m 2(w)k 2(ays)k 711(incorporates)s 1943(elements)s -2843(from)s 3367(the)s 3715(\207rst)s 4146(parameter)s 5160(\207rst)s -5591(when)s 6167(it)s 6359(has)s 6729(a)s 6895(choice.)s -480 1820(Our)m 908(second)s 1627(sub-case)s 2501(is)s 2707(when)s -3278(the)s 3622(tw)s 2(o)k 4028(entries)s 4710(ha)s 4(v)k 3(e)k -5207(a)s 5368(page)s 5872(number)s 6659(in)s 6897(common)s -7788(and)s 220 fnt2 8187 1817(y)m 240 fnt1 8351 1820(has)m -8716(tw)s 2(o)k 0 1532(or)m 273(more)s 835(page)s -1358(numbers.)s 2361(The)s 2804(common)s 3714(page)s 4236(number)s -5042(must)s 5582(be)s 5879(the)s 6242(last)s 6648(of)s -220 fnt2 6933 1529(x)m 240 fnt1 7116 1532(and)m 7535(the)s -7898(\207rst)s 8344(of)s 220 fnt2 8630 1529(y)m 240 fnt1 -8738 1532(,)m 8860(so)s 0 1244(ag)m 1(ain)k 220 fnt2 -574 1241(y)m 240 fnt1 742 1244(has)m 1112(something)s 2163(\(its)s -2518(last)s 2909(page)s 3417(number\))s 4277(distinct)s 5040(from)s -220 fnt2 5564 1241(x)m 240 fnt1 5672 1244(,)m 5779(the)s -6128(discriminant)s 7382(is)s 7592(non-empty)s 15(,)k 8722(and)s -0 956(we)m 335(end)s 739(up)s 1032(for)s 1370(e)s 3(xample)k -2233(melding)s 220 fnt2 480 455(label &0.03fu {}{@OneCol ,} pn1{@OneCol ,} pn2{@OneCol ,})m +0 13205(that)m 418(there)s 951(is)s 1161(no)s 220 fnt2 +1454 13202(/De)m 6(viceHSB)k 240 fnt1 2621 13205(:)m 220 fnt2 +2727 13202(hsb)m 240 fnt1 3133 13205(is)m 3343(a)s 3509(v)s 6(ariant)k +4226(of)s 220 fnt2 4497 13202(rgb)m 240 fnt1 4806 13205(.)m +220 fnt9 480 12731(% num LoutSetGray -)m 480 12483(/LoutSetGray)m 480 12235({)m 480 11987( [ 2 1 roll ] %% c)m +480 11739( [ /DeviceGray ] %% c cs)m 480 11491( LoutCurrentP %% c cs p)m 480 11243( LoutSetCCSP %% -)m 480 10995(} def)m +[ /Dest /LOUT16_1489_tex_12 /DEST pdfmark +480 10546(% r g b LoutSetRGBColor -)m +480 10298(/LoutSetRGBColor)m 480 10050({ %% r g b)m 480 9802( [ 4 1 roll ] %% c)m 480 9554( [ /DeviceRGB ] %% c cs)m 480 9306( LoutCurrentP %% c cs p)m +480 9058( LoutSetCCSP %% -)m 480 8810(} def)m +[ /Dest /LOUT16_1489_tex_13 /DEST pdfmark +480 8361(% h s b LoutSetHSBColor -)m 480 8113(/LoutSetHSBColor)m 480 7865({ %% h s b)m +480 7617( gsave sethsbcolor %% -)m 480 7369( currentrgbcolor grestore %% r g b)m 480 7121( LoutSetRGBColor %% -)m 480 6873(} def)m +[ /Dest /LOUT16_1489_tex_14 /DEST pdfmark +480 6424(% c m y k LoutSetRGBColor -)m +480 6176(/LoutSetCMYKColor)m 480 5928({)m 480 5680( [ 5 1 roll ] %% c)m 480 5432( [ /DeviceCMYK ] %% c cs)m 480 5184( LoutCurrentP %% c cs p)m +480 4936( LoutSetCCSP %% -)m 480 4688(} def)m +[ /Dest /LOUT16_1489_tex_15 /DEST pdfmark +480 4241(% p LoutSetTexture -)m 480 3993(/LoutSetTexture)m 480 3745({)m +480 3497( LoutCurrentCCS %% p c cs)m 480 3249( 3 -1 roll %% c cs p)m 480 3001( LoutSetCCSP %% -)m 480 2753(} def)m +[ /Dest /LOUT16_1489_tex_16 /DEST pdfmark +240 fnt1 +0 2278(All)m 369(we)s 713(need)s 1232(no)s 6(w)k +1702(is)s 1921(some)s 2491(sample)s 3233(te)s 3(xtures.)k +4159(T)s 16(e)k 3(xtures)k 5036(are)s 5392(just)s +5806(pattern)s 6535(dictionaries)s 7709(as)s 7968(returned)s 8832(by)s +220 fnt2 0 1987(mak)m 4(epatter)k -5(n)k 240 fnt1 +1207 1990(.)m 1374(Here)s 1898(is)s 2111(a)s 2281(PostScript)s +3327(function)s 4184(that)s 4606(appears)s 5390(in)s 5637(the)s +5989(Lout)s 6504(prologue.)s 7523(Its)s 7815(function)s 8673(is)s +8887(to)s 0 1702(simplify)m 861(the)s 1220(production)s 2325(of)s +2607(te)s 3(xtures.)k 3535(It)s 3751(\207rst)s 4193(tak)s 2(es)k +4744(six)s 5089(parameters)s 6198(to)s 6448(specify)s 7203(a)s +7380(transformation)s 8855(of)s 0 1414(the)m 354(te)s 3(xture)k +1077(used)s 1581(to)s 1827(b)s 4(uild)k 2380(the)s +2735(matrix)s 3420(tak)s 2(en)k 4000(by)s 220 fnt2 +4300 1411(mak)m 4(epatter)k -5(n)k 240 fnt1 5507 1414(,)m +5621(then)s 6097(\207v)s 3(e)k 6516(parameters)s 7621(that)s +8046(go)s 8346(into)s 8778(the)s 0 1126(pattern)m 720(dictionary)s 15(.)k + grestore gsave 1417 -15423 translate 240 fnt1 0 0 0 0 240 288 60 LoutGraphic gsave -1 LoutMargSet +0 LoutMargSet grestore grestore @@ -19382,11 +20713,11 @@ pgsave restore showpage -%%Page: 98 104 +%%Page: 105 111 %%BeginPageSetup %%PageResources: font Times-Roman %%+ font Times-Bold -%%+ font Times-Italic +%%+ font Courier %%+ font Helvetica /pgsave save def %%IncludeResource: font Times-Roman @@ -19395,9 +20726,9 @@ %%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 Courier +/Courierfnt9 vec2 /Courier LoutRecode +/fnt9 { /Courierfnt9 LoutFont } def %%IncludeResource: font Helvetica /Helveticafnt2 vec2 /Helvetica LoutRecode /fnt2 { /Helveticafnt2 LoutFont } def @@ -19405,48 +20736,46 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -240 fnt5 1417 -1583(98)m 240 fnt6 8434 -1580(Chapter)m 9284(4.)s -9558(Examples)s gsave +240 fnt5 10130 -1581(105)m +gsave 1417 -15423 translate -240 fnt1 9066 13368 0 13259 240 288 60 LoutGraphic +240 fnt1 9066 13414 0 13317 240 288 60 LoutGraphic gsave -0 LoutMargSet +1 LoutMargSet grestore -0 13205(with)m 220 fnt2 480 12753(label &0.03fu {}{@OneCol ,} pn2{@OneCol ,} pn3)m 240 fnt1 -0 12257(Ag)m 1(ain)k 648(it')s 13(s)k 998(clear)s -1529(that)s 1955(the)s 2310(meld)s 2854(will)s 3288(produce)s -4123(the)s 4478(right)s 4997(answer;)s 5794(in)s 6045(f)s 2(act,)k -6514(this)s 6918(second)s 7649(sub-case)s 8536(could)s 0 11969(be)m -282(uni\207ed)s 1005(with)s 1487(the)s 1835(\207rst)s 2266(sub-case.)s -480 11595(Our)m 916(third)s 1429(sub-case)s 2312(is)s 2526(when)s -3106(the)s 3458(tw)s 2(o)k 3872(entries)s 4563(ha)s 4(v)k 3(e)k -5068(a)s 5238(page)s 5750(number)s 6545(in)s 6792(common)s -7691(and)s 220 fnt2 8099 11592(y)m 240 fnt1 8271 11595(has)m -8646(only)s 0 11307(one)m 402(page)s 910(number)s 13(.)k -1792(In)s 2048(this)s 2444(case,)s 2962(typi\207ed)s 3751(by)s -220 fnt2 4045 11304(x)m 240 fnt1 4213 11307(with)m 4695(v)s 6(alue)k -220 fnt2 480 10806(label &0.03fu {}{@OneCol ,} pn1{@OneCol ,} pn2)m 240 fnt1 0 10310(and)m 220 fnt2 -404 10307(y)m 240 fnt1 572 10310(with)m 1054(v)s 6(alue)k -220 fnt2 480 9811(label &0.03fu {}{@OneCol ,} pn2)m 240 fnt1 0 9315(it)m 190(is)s -398(clear)s 918(that)s 220 fnt2 1334 9312(y)m 240 fnt1 -1500 9315(of)m 6(fers)k 2098(nothing)s 2881(ne)s 6(w)k 15(,)k -3363(the)s 3709(discriminant)s 4961(is)s 5168(empty)s 15(,)k -5856(and)s 6257(the)s 6603(result,)s 7238(quite)s 7769(correctly)s 15(,)k -8707(is)s 220 fnt2 8914 9312(x)m 240 fnt1 9022 9315(.)m -0 9027(This)m 476(completes)s 1496(the)s 1844(proof.)s +220 fnt9 480 13271(% )m 480 13023(% LoutMakeTexture p)m 480 12775(/LoutMakeTexture)m +480 12527({ %% s sx sy r h v pt bb xs ys pp)m 480 12279( 12 dict begin %% s sx sy r h v pt bb xs ys pp)m 480 12031( /PaintProc exch def %% s sx sy r h v pt bb xs ys)m 480 11783( /YStep exch def %% s sx sy r h v pt bb xs)m 480 11535( /XStep exch def %% s sx sy r h v pt bb)m +480 11287( /BBox exch def %% s sx sy r h v pt)m 480 11039( /PaintType exch def %% s sx sy r h v)m 480 10791( /PatternType 1 def %% s sx sy r h v)m 480 10543( /TilingType 1 def %% s sx sy r h v)m 480 10295( currentdict end %% s sx sy r h v p)m +480 10047( 7 1 roll %% p s sx sy r h v)m 480 9799( matrix translate %% p s sx sy r mat1)m 480 9551( 5 1 roll %% p mat1 s sx sy r)m 480 9303( matrix rotate %% p mat1 s sx sy mat2)m 480 9055( 4 1 roll %% p mat1 mat2 s sx sy)m +480 8807( matrix scale %% p mat1 mat2 s mat3)m 480 8559( exch dup matrix scale %% p mat1 mat2 mat3 mat4)m 480 8311( matrix concatmatrix %% p mat1 mat2 mat34)m 480 8063( matrix concatmatrix %% p mat1 mat234)m 480 7815( matrix concatmatrix %% p mat1234)m +480 7567( /makepattern where)m 480 7319( { %% p mat123 dict)m 480 7071( pop makepattern %% p)m 480 6823( })m 480 6575( { %% p mat123)m +480 6327( pop pop null %% null)m 480 6079( } ifelse %% p \(may be null\))m 480 5831(} def)m +[ /Dest /LOUT16_1489_tex_17 /DEST pdfmark +240 fnt1 0 5356(F)m 3(or)k +384(e)s 3(xamples)k 1330(of)s 1596(te)s 3(xtures)k +2395(using)s 220 fnt2 2962 5353(LoutMak)m 4(eT)k 26(e)k 6(xture)k +240 fnt1 4626 5356(,)m 4727(consult)s 5473(the)s 5816(standard)s +6679(include)s 7434(\207le)s 220 fnt2 7790 5353(colte)m 6(x)k +240 fnt1 8355 5356(.)m 8513(There)s 0 5068(is)m 210(only)s +690(one)s 1092(b)s 4(uilt-in)k 1848(te)s 3(xture,)k +220 fnt2 2615 5065(LoutT)m 26(e)k 6(xtureSolid)k 240 fnt1 +4228 5068(:)m 220 fnt9 480 4585(/LoutTextureSolid)m 480 4337({)m 480 4089( null)m +480 3841( LoutSetTexture)m 480 3593(} def)m +[ /Dest /LOUT16_1489_tex_18 /DEST pdfmark + grestore gsave 1417 -15423 translate 240 fnt1 0 0 0 0 240 288 60 LoutGraphic gsave -0 LoutMargSet +1 LoutMargSet grestore grestore @@ -19458,7 +20787,7 @@ pgsave restore showpage -%%Page: 99 105 +%%Page: 106 112 %%BeginPageSetup %%PageResources: font Times-Roman %%+ font Times-Bold @@ -19477,7 +20806,7 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore @@ -19485,26 +20814,26 @@ 0 16840 translate 0.0000 rotate 9066 13448 0 13448 240 288 60 1417 -14865 LoutGr2 -1 LoutMargSet +0 LoutMargSet grestore -480 fnt5 0 12397(Refer)m 8(ences)k -[ /Dest /LOUT17_431_all_1 /DEST pdfmark +480 fnt5 0 12397(Refer)m 8(ences)k + +[ /Dest /LOUT20_434_all_1 /DEST pdfmark [ /Dest /LOUTadobe1990ps /DEST pdfmark -240 fnt1 0 11800([1])m -480(Adobe)s 1182(Systems,)s 2094(Inc..)s 240 fnt6 2631 11802(P)m 19(ostScript)k -3680(Langua)s 2(g)k 2(e)k 4696(Refer)s 8(ence)k -5704(Manual,)s 6550(Second)s 7316(Edition)s 240 fnt1 8014 11800(.)m -8186(Addison-)s 480 11512(W)m 19(esle)k 3(y)k 1169(,)s -1276(1990)s 1751(.)s +240 fnt1 0 11800([1])m 480(Adobe)s 1182(Systems,)s 2094(Inc..)s +240 fnt6 2631 11802(P)m 19(ostScript)k 3680(Langua)s 2(g)k 2(e)k +4696(Refer)s 8(ence)k 5704(Manual,)s 6550(Second)s 7316(Edition)s +240 fnt1 8014 11800(.)m 8186(Addison-)s 480 11512(W)m 19(esle)k 3(y)k +1169(,)s 1276(1990)s 1751(.)s [ /Dest /LOUTkernighan1975eqn /DEST pdfmark -0 11009([2])m 480(Brian)s 1132(W)s 22(.)k -1504(K)s 6(ernighan)k 2630(and)s 3098(Lorinda)s 3980(L.)s -4294(Cherry)s 15(.)k 5172(A)s 5466(system)s 6255(for)s -6657(typesetting)s 7824(mathematics)s 9022(.)s 240 fnt6 480 10723(Communications)m -2158(of)s 2439(the)s 2784(A)s 7(CM)k 240 fnt5 -3351 10720(18)m 240 fnt1 3585 10721(,)m 3692(182\211193)s 4576(\(1975\))s -5203(.)s +0 11009([2])m 480(Brian)s +1132(W)s 22(.)k 1504(K)s 6(ernighan)k 2630(and)s +3098(Lorinda)s 3980(L.)s 4294(Cherry)s 15(.)k 5172(A)s +5466(system)s 6255(for)s 6657(typesetting)s 7824(mathematics)s 9022(.)s +240 fnt6 480 10723(Communications)m 2158(of)s 2439(the)s 2784(A)s 7(CM)k +240 fnt5 3351 10720(18)m 240 fnt1 3585 10721(,)m 3692(182\211193)s +4576(\(1975\))s 5203(.)s [ /Dest /LOUTkingston1995lout_program /DEST pdfmark 0 10220([3])m 480(Jef)s 6(fre)k 3(y)k 1177(H.)s 1443(Kingston.)s 240 fnt6 2475 10222(The)m 2876(Basser)s @@ -19560,11 +20889,11 @@ 8409(,)s 8516(1979)s 8987(.)s grestore 0 0 0 0 240 288 60 1417 -14865 LoutGr2 -1 LoutMargSet +0 LoutMargSet grestore grestore -192 fnt5 5856 -15421(99)m +192 fnt5 5808 -15421(106)m grestore @@ -19573,7 +20902,7 @@ pgsave restore showpage -%%Page: 100 106 +%%Page: 107 113 %%BeginPageSetup %%PageResources: font Times-Roman %%+ font Times-Bold @@ -19596,7 +20925,7 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore @@ -19604,250 +20933,250 @@ 0 16840 translate 0.0000 rotate 9066 13448 0 13448 240 288 60 1417 -14865 LoutGr2 -0 LoutMargSet +1 LoutMargSet grestore -480 fnt5 0 12404(Index)m -[ /Dest /LOUT17_453_all_1 /DEST pdfmark -220 fnt2 0 11807(adjust)m 641(@Break)s -240 fnt1 1444 11810(,)m -[ /Rect [1551 11810 1785 11972] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_brea_1 /ANN pdfmark -1551(42)s 0 11522(Adjustment)m 1176(of)s -1447(object)s 2038(,)s -[ /Rect [2145 11519 2380 11687] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_hadj_4 /ANN pdfmark -2145(50)s 0 11234(Adobe)m 695(Systems,)s -1599(Inc.)s 1955(,)s -[ /Rect [2062 11234 2296 11396] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_font_8 /ANN pdfmark -2062(42)s 0 10946(Alignment)m 240 fnt6 -1083 10948(see)m 240 fnt1 1441 10946(mark)m 1993(alignment)s 0 10658(Associati)m 6(vity)k -1256(,)s -[ /Rect [1363 10658 1597 10820] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_det_prec_2 /ANN pdfmark -1363(22)s 220 fnt2 0 10079(@Bac)m 4(kEnd)k -240 fnt1 1145 10082(symbol)m 1852(,)s -[ /Rect [1959 10081 2193 10244] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_bend_1 /ANN pdfmark -1959(72)s 220 fnt2 -0 9791(@Bac)m 4(kg)k 2(round)k 240 fnt1 1436 9794(symbol)m -2143(,)s -[ /Rect [2250 9791 2484 9959] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_back_1 /ANN pdfmark -2250(54)s 220 fnt2 0 9503(@Begin)m 240 fnt1 -829 9506(symbol)m 1536(,)s -[ /Rect [1643 9503 1876 9670] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_begi_1 /ANN pdfmark -1643(36)s 220 fnt2 0 9215(@BeginHeaderComponent)m -240 fnt1 2692 9218(symbol)m 3399(,)s -[ /Rect [3506 9215 3721 9382] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_head_2 /ANN pdfmark -3506(61)s 0 8930(Bibliographies)m -1406(,)s -[ /Rect [1513 8925 1728 9092] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_exa_bibl_1 /ANN pdfmark -1513(91)s 0 8642(Body)m 574(of)s 845(a)s -1011(de\207nition)s 1932(,)s -[ /Rect [2039 8642 2153 8804] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pri_defi_3 /ANN pdfmark -2039(4)s 220 fnt2 0 8351(body)m -240 fnt1 534 8354(parameter)m 1495(,)s -[ /Rect [1602 8353 1830 8516] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_det_visi_3 /ANN pdfmark -1602(17)s 0 8066(Braces)m -648(,)s -[ /Rect [755 8063 859 8228] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pri_obje_6 /ANN pdfmark -755(3)s 220 fnt2 0 7775(b)m 240 fnt1 -174 7778(unit)m 553(,)s -[ /Rect [660 7775 888 7940] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_conc_15 /ANN pdfmark -660(37)s 240 7490(use)m 615(in)s -220 fnt2 858 7487(//1.1b)m 240 fnt1 1406 7490(,)m -[ /Rect [1513 7489 1741 7652] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_det_gall_4 /ANN pdfmark -1513(27)s -220 fnt2 0 6911(@Case)m 240 fnt1 787 6914(symbol)m 1494(,)s - -[ /Rect [1601 6911 1828 7079] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_case_1 /ANN pdfmark -1601(58)s 0 6626(Centring)m 837(,)s -[ /Rect [944 6623 1172 6788] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_conc_31 /ANN pdfmark -944(37)s 220 fnt2 -0 6335(@Chapter)m 240 fnt1 1063 6338(e)m 3(xample)k 1873(,)s - -[ /Rect [1980 6335 2208 6500] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_exa_chap_4 /ANN pdfmark -1980(87)s 0 6050(Chapters)m 901(and)s 1305(sections)s 2073(,)s - -[ /Rect [2180 6047 2413 6214] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_exa_chap_1 /ANN pdfmark -2180(86)s 220 fnt2 0 5759(@Char)m 240 fnt1 758 5762(symbol)m -1465(,)s -[ /Rect [1572 5762 1806 5924] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_font_10 /ANN pdfmark -1572(42)s 0 5474(Cherry)m 15(,)k 756(L.)s -953(,)s -[ /Rect [1060 5471 1286 5639] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_exa_equa_3 /ANN pdfmark -1060(75)s 220 fnt2 0 5183(@ClearHeaderComponent)m 240 fnt1 -2655 5186(symbol)m 3362(,)s -[ /Rect [3469 5183 3703 5350] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_head_5 /ANN pdfmark -3469(62)s 220 fnt2 0 4895(clines)m -613(@Break)s 240 fnt1 1416 4898(,)m -[ /Rect [1523 4895 1747 5060] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_brea_8 /ANN pdfmark -1523(43)s 220 fnt2 -0 4607(@ColList)m 240 fnt1 948 4610(e)m 3(xample)k 1758(,)s - -[ /Rect [1865 4607 2089 4772] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_exa_page_5 /ANN pdfmark -1865(83)s 0 4322(Column)m 829(mark)s 1328(,)s -[ /Rect [1435 4322 1530 4484] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pri_obje_2 /ANN pdfmark -1435(1)s -0 4034(Comment)m 951(,)s -[ /Rect [1058 4031 1284 4199] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_det_lexi_21 /ANN pdfmark -1058(15)s 0 3746(Comment)m 1004(character)s -1885(,)s -[ /Rect [1992 3743 2216 3908] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_det_lexi_6 /ANN pdfmark -1992(13)s 220 fnt2 0 3455(@Common)m 240 fnt1 -1159 3458(symbol)m 1866(,)s -[ /Rect [1973 3455 2199 3623] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_rump_1 /ANN pdfmark -1973(55)s 0 3170(Components)m 1262(of)s -1533(a)s 1699(g)s 1(alle)k 3(y)k 2280(,)s - -[ /Rect [2387 3167 2620 3334] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_det_gall_3 /ANN pdfmark -2387(26)s 240 2882(promotion)m 1294(of)s 1512(,)s -[ /Rect [1619 2877 1850 3044] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_det_gall_8 /ANN pdfmark -1619(29)s -0 2594(Concatenation)m 1439(symbols)s 2235(,)s -[ /Rect [2342 2591 2575 2758] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_conc_1 /ANN pdfmark -2342(36)s 0 2306(Contraction)m -1186(of)s 1457(object)s 2048(,)s -[ /Rect [2155 2303 2390 2471] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_hcon_3 /ANN pdfmark -2155(50)s 220 fnt2 -0 2015(cr)m 2(agged)k 839(@Break)s 240 fnt1 1642 2018(,)m - -[ /Rect [1749 2015 1973 2180] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_brea_4 /ANN pdfmark -1749(43)s 0 1730(Cross)m 596(reference)s 1486(,)s -[ /Rect [1593 1729 1701 1888] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pri_cros_1 /ANN pdfmark -1593(7)s -220 fnt2 0 1439(c)m 240 fnt1 165 1442(unit)m 544(,)s - -[ /Rect [651 1439 879 1604] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_conc_8 /ANN pdfmark -651(37)s 220 fnt2 0 1151(@CurrLang)m 240 fnt1 1185 1154(symbol)m -1892(,)s -[ /Rect [1999 1153 2227 1316] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_lang_3 /ANN pdfmark -1999(47)s 220 fnt2 0 575(@Database)m 240 fnt1 -1214 578(symbol)m 1921(,)s -[ /Rect [2028 575 2254 743] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_data_1 /ANN pdfmark -2028(65)s 0 290(Date,)m 558(printing)s -1368(of)s 1639(current)s 2322(,)s -[ /Rect [2429 285 2660 455] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_mome_2 /ANN pdfmark -2429(59)s 4816 11807(Def)m 2(ault)k -5590(v)s 6(alue)k 6158(of)s 6429(parameter)s 7390(,)s - -[ /Rect [7497 11804 7723 11972] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_det_name_3 /ANN pdfmark -7497(15)s 4816 11519(De\207nitions)m 5877(,)s -[ /Rect [5984 11519 6098 11681] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pri_defi_1 /ANN pdfmark -5984(4)s 4816 11231(Delimiter)m -5737(,)s -[ /Rect [5844 11228 6068 11393] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_det_lexi_11 /ANN pdfmark -5844(13)s 4816 10943(Diag)m 5334(diagram-dra)s 3(wing)k -7030(package)s 7817(,)s -[ /Rect [7924 10938 8155 11107] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_grap_4 /ANN pdfmark -7924(69)s 4816 10655(Diagrams)m 5743(,)s - -[ /Rect [5850 10652 6083 10819] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_grap_2 /ANN pdfmark -5850(66)s 4816 10367(DocumentLayout)m 6551(package)s 7338(,)s -[ /Rect [7445 10366 7673 10525] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_exa_para_1 /ANN pdfmark -7445(77)s -5056 10079(chapters)m 5903(and)s 6307(sections)s 7075(,)s -[ /Rect [7182 10076 7415 10243] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_exa_chap_2 /ANN pdfmark -7182(86)s -5056 9791(displays)m 5838(,)s -[ /Rect [5945 9788 6172 9953] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_exa_para_4 /ANN pdfmark -5945(78)s 5056 9503(lists)m 5438(,)s - -[ /Rect [5545 9498 5776 9665] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_exa_para_6 /ANN pdfmark -5545(79)s 5056 9215(page)m 5564(layout)s 6169(,)s -[ /Rect [6276 9212 6491 9377] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_exa_page_2 /ANN pdfmark -6276(81)s -5056 8927(paragraphs)m 6103(,)s -[ /Rect [6210 8924 6437 9089] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_exa_para_2 /ANN pdfmark -6210(78)s 220 fnt2 4816 8636(d)m -240 fnt1 4986 8639(unit)m 5365(,)s -[ /Rect [5472 8636 5700 8801] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_conc_17 /ANN pdfmark -5472(37)s 4816 8063(Edge-to-edge)m -6160(g)s 1(ap)k 6558(mode)s 7093(,)s -[ /Rect [7200 8060 7428 8225] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_conc_19 /ANN pdfmark -7200(37)s -220 fnt2 4816 7772(e)m 240 fnt1 4990 7775(g)m 1(ap)k -5388(mode)s 5923(,)s -[ /Rect [6030 7772 6258 7937] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_conc_20 /ANN pdfmark -6030(37)s 220 fnt2 4816 7484(@Enclose)m -240 fnt1 5818 7487(,)m -[ /Rect [5925 7484 6140 7649] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_det_gall_12 /ANN pdfmark -5925(31)s 220 fnt2 4816 7196(@End)m -240 fnt1 5477 7199(symbol)m 6184(,)s -[ /Rect [6291 7196 6524 7363] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_begi_2 /ANN pdfmark -6291(36)s 220 fnt2 -4816 6908(@EndHeaderComponent)m 240 fnt1 7338 6911(symbol)m 8045(,)s -[ /Rect [8152 6908 8367 7075] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_head_3 /ANN pdfmark -8152(61)s -4816 6623(Eq)m 5140(equation)s 6021(formatting)s 7082(package)s 7869(,)s - -[ /Rect [7976 6620 8202 6788] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_exa_equa_1 /ANN pdfmark -7976(75)s 220 fnt2 4816 6332(@Eq)m 240 fnt1 5354 6335(e)m 3(xample)k -6164(,)s -[ /Rect [6271 6332 6497 6500] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_exa_equa_4 /ANN pdfmark -6271(75)s 4816 6047(Escape)m 5549(character)s 6430(,)s - -[ /Rect [6537 6044 6761 6209] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_det_lexi_5 /ANN pdfmark -6537(13)s 220 fnt2 4816 5756(@Ev)m 5(enP)k 8(ageList)k -240 fnt1 6435 5759(e)m 3(xample)k 7245(,)s -[ /Rect [7352 5756 7578 5924] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_exa_page_10 /ANN pdfmark -7352(85)s -4816 5471(Expansion)m 5884(of)s 6155(object)s 6746(,)s -[ /Rect [6853 5466 7084 5633] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_hexp_3 /ANN pdfmark -6853(49)s -220 fnt2 4816 5180(e)m 6(xpor)k -8(t)k 240 fnt1 -5484 5183(clause)m 6084(,)s -[ /Rect [6191 5180 6418 5345] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_det_visi_4 /ANN pdfmark +480 fnt5 0 12404(Index)m + +[ /Dest /LOUT20_489_all_1 /DEST pdfmark +220 fnt2 0 11807(adjust)m 641(@Break)s 240 fnt1 1444 11810(,)m + +[ /Rect [1551 11810 1785 11972] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_brea_1 /ANN pdfmark +1551(42)s 0 11522(Adjustment)m 1176(of)s 1447(object)s 2038(,)s + +[ /Rect [2145 11519 2360 11687] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_hadj_4 /ANN pdfmark +2145(51)s 0 11234(Adobe)m 695(Systems,)s 1599(Inc.)s 1955(,)s + +[ /Rect [2062 11234 2296 11396] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_font_8 /ANN pdfmark +2062(42)s 0 10946(Alignment)m 240 fnt6 1083 10948(see)m 240 fnt1 +1441 10946(mark)m 1993(alignment)s 0 10658(Associati)m 6(vity)k 1256(,)s + +[ /Rect [1363 10658 1597 10820] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_det_prec_2 /ANN pdfmark +1363(22)s 220 fnt2 0 10079(@Bac)m 4(kEnd)k 240 fnt1 +1145 10082(symbol)m 1852(,)s +[ /Rect [1959 10081 2193 10244] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_bend_1 /ANN pdfmark +1959(74)s 220 fnt2 0 9791(@Bac)m 4(kg)k 2(round)k +240 fnt1 1436 9794(symbol)m 2143(,)s +[ /Rect [2250 9791 2476 9959] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_back_1 /ANN pdfmark +2250(55)s 220 fnt2 +0 9503(@Begin)m 240 fnt1 829 9506(symbol)m 1536(,)s +[ /Rect [1643 9503 1876 9670] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_begi_1 /ANN pdfmark +1643(36)s +220 fnt2 0 9215(@BeginHeaderComponent)m 240 fnt1 2692 9218(symbol)m 3399(,)s + +[ /Rect [3506 9215 3740 9382] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_head_2 /ANN pdfmark +3506(62)s 0 8930(Bibliographies)m 1406(,)s +[ /Rect [1513 8925 1737 9092] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_exa_bibl_1 /ANN pdfmark +1513(93)s 0 8642(Body)m +574(of)s 845(a)s 1011(de\207nition)s 1932(,)s +[ /Rect [2039 8642 2153 8804] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pri_defi_3 /ANN pdfmark +2039(4)s +220 fnt2 0 8351(body)m 240 fnt1 534 8354(parameter)m 1495(,)s + +[ /Rect [1602 8353 1830 8516] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_det_visi_3 /ANN pdfmark +1602(17)s 0 8066(Braces)m 648(,)s +[ /Rect [755 8063 859 8228] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pri_obje_6 /ANN pdfmark +755(3)s 220 fnt2 +0 7775(b)m 240 fnt1 174 7778(unit)m 553(,)s +[ /Rect [660 7775 888 7940] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_conc_15 /ANN pdfmark +660(37)s +240 7490(use)m 615(in)s 220 fnt2 858 7487(//1.1b)m 240 fnt1 +1406 7490(,)m +[ /Rect [1513 7489 1741 7652] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_det_gall_4 /ANN pdfmark +1513(27)s 220 fnt2 0 6911(@Case)m 240 fnt1 +787 6914(symbol)m 1494(,)s +[ /Rect [1601 6909 1832 7079] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_case_1 /ANN pdfmark +1601(59)s 0 6626(Centring)m 837(,)s + +[ /Rect [944 6623 1172 6788] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_conc_31 /ANN pdfmark +944(37)s 220 fnt2 0 6335(@Chapter)m 240 fnt1 1063 6338(e)m 3(xample)k +1873(,)s +[ /Rect [1980 6333 2211 6500] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_exa_chap_4 /ANN pdfmark +1980(89)s 0 6050(Chapters)m 901(and)s 1305(sections)s +2073(,)s +[ /Rect [2180 6047 2407 6212] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_exa_chap_1 /ANN pdfmark +2180(88)s 220 fnt2 0 5759(@Char)m 240 fnt1 +758 5762(symbol)m 1465(,)s +[ /Rect [1572 5762 1806 5924] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_font_10 /ANN pdfmark +1572(42)s 0 5474(Cherry)m 15(,)k +756(L.)s 953(,)s +[ /Rect [1060 5473 1288 5632] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_exa_equa_3 /ANN pdfmark +1060(77)s 220 fnt2 0 5183(@ClearHeaderComponent)m +240 fnt1 2655 5186(symbol)m 3362(,)s +[ /Rect [3469 5183 3693 5350] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_head_5 /ANN pdfmark +3469(63)s 220 fnt2 +0 4895(clines)m 613(@Break)s 240 fnt1 1416 4898(,)m +[ /Rect [1523 4895 1747 5060] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_brea_8 /ANN pdfmark +1523(43)s +220 fnt2 0 4607(@ColList)m 240 fnt1 948 4610(e)m 3(xample)k +1758(,)s +[ /Rect [1865 4607 2091 4775] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_exa_page_5 /ANN pdfmark +1865(85)s 0 4322(Column)m 829(mark)s 1328(,)s + +[ /Rect [1435 4322 1530 4484] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pri_obje_2 /ANN pdfmark +1435(1)s 0 4034(Comment)m 951(,)s +[ /Rect [1058 4031 1284 4199] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_det_lexi_21 /ANN pdfmark +1058(15)s 0 3746(Comment)m +1004(character)s 1885(,)s +[ /Rect [1992 3743 2216 3908] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_det_lexi_6 /ANN pdfmark +1992(13)s 220 fnt2 0 3455(@Common)m +240 fnt1 1159 3458(symbol)m 1866(,)s +[ /Rect [1973 3455 2206 3623] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_rump_1 /ANN pdfmark +1973(56)s 0 3170(Components)m +1262(of)s 1533(a)s 1699(g)s 1(alle)k 3(y)k +2280(,)s +[ /Rect [2387 3167 2620 3334] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_det_gall_3 /ANN pdfmark +2387(26)s 240 2882(promotion)m 1294(of)s 1512(,)s + +[ /Rect [1619 2877 1850 3044] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_det_gall_8 /ANN pdfmark +1619(29)s 0 2594(Concatenation)m 1439(symbols)s 2235(,)s +[ /Rect [2342 2591 2575 2758] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_conc_1 /ANN pdfmark +2342(36)s +0 2306(Contraction)m 1186(of)s 1457(object)s 2048(,)s +[ /Rect [2155 2303 2370 2471] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_hcon_3 /ANN pdfmark +2155(51)s +220 fnt2 0 2015(cr)m 2(agged)k 839(@Break)s 240 fnt1 +1642 2018(,)m +[ /Rect [1749 2015 1973 2180] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_brea_4 /ANN pdfmark +1749(43)s 0 1730(Cross)m 596(reference)s 1486(,)s + +[ /Rect [1593 1729 1701 1888] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pri_cros_1 /ANN pdfmark +1593(7)s 220 fnt2 0 1439(c)m 240 fnt1 165 1442(unit)m +544(,)s +[ /Rect [651 1439 879 1604] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_conc_8 /ANN pdfmark +651(37)s 220 fnt2 0 1151(@CurrLang)m 240 fnt1 +1185 1154(symbol)m 1892(,)s +[ /Rect [1999 1149 2230 1316] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_lang_3 /ANN pdfmark +1999(49)s 220 fnt2 0 575(@Database)m +240 fnt1 1214 578(symbol)m 1921(,)s +[ /Rect [2028 575 2256 742] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_data_1 /ANN pdfmark +2028(67)s 0 290(Date,)m +558(printing)s 1368(of)s 1639(current)s 2322(,)s +[ /Rect [2429 287 2644 454] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_mome_2 /ANN pdfmark +2429(61)s +4816 11807(Def)m 2(ault)k 5590(v)s 6(alue)k 6158(of)s +6429(parameter)s 7390(,)s +[ /Rect [7497 11804 7723 11972] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_det_name_3 /ANN pdfmark +7497(15)s 4816 11519(De\207nitions)m 5877(,)s + +[ /Rect [5984 11519 6098 11681] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pri_defi_1 /ANN pdfmark +5984(4)s 4816 11231(Delimiter)m 5737(,)s +[ /Rect [5844 11228 6068 11393] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_det_lexi_11 /ANN pdfmark +5844(13)s 4816 10943(Diag)m +5334(diagram-dra)s 3(wing)k 7030(package)s 7817(,)s +[ /Rect [7924 10942 8139 11105] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_grap_4 /ANN pdfmark +7924(71)s +4816 10655(Diagrams)m 5743(,)s +[ /Rect [5850 10652 6077 10819] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_grap_2 /ANN pdfmark +5850(68)s 4816 10367(DocumentLayout)m 6551(package)s +7338(,)s +[ /Rect [7445 10362 7676 10529] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_exa_para_1 /ANN pdfmark +7445(79)s 5056 10079(chapters)m 5903(and)s 6307(sections)s +7075(,)s +[ /Rect [7182 10076 7409 10241] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_exa_chap_2 /ANN pdfmark +7182(88)s 5056 9791(displays)m 5838(,)s +[ /Rect [5945 9788 6180 9953] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_exa_para_4 /ANN pdfmark +5945(80)s +5056 9503(lists)m 5438(,)s +[ /Rect [5545 9500 5760 9665] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_exa_para_6 /ANN pdfmark +5545(81)s 5056 9215(page)m 5564(layout)s +6169(,)s +[ /Rect [6276 9212 6500 9377] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_exa_page_2 /ANN pdfmark +6276(83)s 5056 8927(paragraphs)m 6103(,)s +[ /Rect [6210 8924 6445 9089] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_exa_para_2 /ANN pdfmark +6210(80)s +220 fnt2 4816 8636(d)m 240 fnt1 4986 8639(unit)m 5365(,)s + +[ /Rect [5472 8636 5700 8801] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_conc_17 /ANN pdfmark +5472(37)s 4816 8063(Edge-to-edge)m 6160(g)s 1(ap)k 6558(mode)s +7093(,)s +[ /Rect [7200 8060 7428 8225] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_conc_19 /ANN pdfmark +7200(37)s 220 fnt2 4816 7772(e)m 240 fnt1 +4990 7775(g)m 1(ap)k 5388(mode)s 5923(,)s +[ /Rect [6030 7772 6258 7937] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_conc_20 /ANN pdfmark +6030(37)s +220 fnt2 4816 7484(@Enclose)m 240 fnt1 5818 7487(,)m +[ /Rect [5925 7484 6140 7649] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_det_gall_12 /ANN pdfmark +5925(31)s +220 fnt2 4816 7196(@End)m 240 fnt1 5477 7199(symbol)m 6184(,)s + +[ /Rect [6291 7196 6524 7363] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_begi_2 /ANN pdfmark +6291(36)s 220 fnt2 4816 6908(@EndHeaderComponent)m 240 fnt1 7338 6911(symbol)m +8045(,)s +[ /Rect [8152 6908 8376 7075] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_head_3 /ANN pdfmark +8152(63)s 4816 6623(Eq)m 5140(equation)s 6021(formatting)s +7082(package)s 7869(,)s +[ /Rect [7976 6622 8204 6781] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_exa_equa_1 /ANN pdfmark +7976(77)s 220 fnt2 4816 6332(@Eq)m +240 fnt1 5354 6335(e)m 3(xample)k 6164(,)s +[ /Rect [6271 6334 6499 6493] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_exa_equa_4 /ANN pdfmark +6271(77)s +4816 6047(Escape)m 5549(character)s 6430(,)s +[ /Rect [6537 6044 6761 6209] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_det_lexi_5 /ANN pdfmark +6537(13)s 220 fnt2 +4816 5756(@Ev)m 5(enP)k 8(ageList)k 240 fnt1 6435 5759(e)m 3(xample)k +7245(,)s +[ /Rect [7352 5756 7580 5921] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_exa_page_10 /ANN pdfmark +7352(87)s 4816 5471(Expansion)m 5884(of)s 6155(object)s +6746(,)s +[ /Rect [6853 5468 7068 5636] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_hexp_3 /ANN pdfmark +6853(51)s 220 fnt2 4816 5180(e)m 6(xpor)k -8(t)k +240 fnt1 5484 5183(clause)m 6084(,)s +[ /Rect [6191 5180 6418 5345] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_det_visi_4 /ANN pdfmark 6191(18)s 4816 4607(F)m 3(ace)k 5320(of)s 5591(a)s 5757(font)s 6149(,)s -[ /Rect [6256 4604 6491 4769] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_font_3 /ANN pdfmark +[ /Rect [6256 4604 6491 4769] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_font_3 /ANN pdfmark 6256(40)s 4816 4319(F)m 3(amily)k 5544(of)s 5815(a)s 5981(font)s 6373(,)s -[ /Rect [6480 4316 6715 4481] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_font_2 /ANN pdfmark +[ /Rect [6480 4316 6715 4481] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_font_2 /ANN pdfmark 6480(40)s 220 fnt2 4816 4028(f)m 6(ollo)k 3(wing)k 240 fnt1 5653 4031(,)m -[ /Rect [5760 4028 5867 4193] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pri_cros_7 /ANN pdfmark +[ /Rect [5760 4028 5867 4193] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pri_cros_7 /ANN pdfmark 5760(8)s 220 fnt2 4816 3740(f)m 6(ollo)k 3(wing)k 240 fnt1 5653 3743(,)m -[ /Rect [5760 3740 5867 3905] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pri_cros_6 /ANN pdfmark +[ /Rect [5760 3740 5867 3905] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pri_cros_6 /ANN pdfmark 5760(8)s 4816 3455(F)m 3(onts)k 5343(,)s -[ /Rect [5450 3452 5685 3617] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_font_1 /ANN pdfmark +[ /Rect [5450 3452 5685 3617] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_font_1 /ANN pdfmark 5450(40)s 220 fnt2 4816 3164(@F)m 6(ont)k 240 fnt1 5528 3167(symbol)m 6235(,)s -[ /Rect [6342 3164 6577 3329] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_font_6 /ANN pdfmark +[ /Rect [6342 3164 6577 3329] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_font_6 /ANN pdfmark 6342(40)s 220 fnt2 4816 2876(@F)m 6(ootSect)k 240 fnt1 5967 2879(e)m 3(xample)k 6777(,)s -[ /Rect [6884 2876 7118 3041] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_exa_page_4 /ANN pdfmark -6884(82)s 220 fnt2 4816 2588(@F)m 6(orceGalle)k 4(y)k +[ /Rect [6884 2876 7118 3041] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_exa_page_4 /ANN pdfmark +6884(84)s 220 fnt2 4816 2588(@F)m 6(orceGalle)k 4(y)k 240 fnt1 6269 2591(symbol)m 6976(,)s -[ /Rect [7083 2588 7318 2755] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_gall_2 /ANN pdfmark -7083(60)s 4816 2303(F)m 3(orcing)k +[ /Rect [7083 2588 7298 2755] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_gall_2 /ANN pdfmark +7083(61)s 4816 2303(F)m 3(orcing)k 5610(g)s 1(alle)k 3(y)k 6191(,)s -[ /Rect [6298 2298 6529 2465] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_det_gall_10 /ANN pdfmark +[ /Rect [6298 2298 6529 2465] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_det_gall_10 /ANN pdfmark 6298(29)s 4816 2015(F)m 3(ormfeed)k 5747(,)s -[ /Rect [5854 2012 6078 2177] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_det_lexi_9 /ANN pdfmark +[ /Rect [5854 2012 6078 2177] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_det_lexi_9 /ANN pdfmark 5854(13)s 220 fnt2 4816 1724(f)m 240 fnt1 4934 1727(unit)m 5313(,)s -[ /Rect [5420 1724 5648 1889] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_conc_11 /ANN pdfmark +[ /Rect [5420 1724 5648 1889] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_conc_11 /ANN pdfmark 5420(37)s 4816 1151(Galle)m 3(ys)k 5541(,)s -[ /Rect [5648 1148 5883 1313] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pri_gall_1 /ANN pdfmark +[ /Rect [5648 1148 5883 1313] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pri_gall_1 /ANN pdfmark 5648(10)s 5056 863(in)m 5299(detail)s 5831(,)s -[ /Rect [5938 860 6171 1027] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_det_gall_1 /ANN pdfmark +[ /Rect [5938 860 6171 1027] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_det_gall_1 /ANN pdfmark 5938(26)s 220 fnt2 4816 572(@Galle)m 4(y)k 240 fnt1 5714 575(symbol)m 6421(,)s -[ /Rect [6528 572 6763 739] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_gall_1 /ANN pdfmark -6528(60)s 4816 287(Gap)m +[ /Rect [6528 572 6743 739] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_gall_1 /ANN pdfmark +6528(61)s 4816 287(Gap)m 5215(,)s -[ /Rect [5322 284 5550 449] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_conc_6 /ANN pdfmark +[ /Rect [5322 284 5550 449] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_conc_6 /ANN pdfmark 5322(37)s grestore 0 0 0 0 240 288 60 1417 -14865 LoutGr2 -0 LoutMargSet +1 LoutMargSet grestore grestore -192 fnt5 5808 -15421(100)m +192 fnt5 5808 -15421(107)m grestore grestore @@ -19855,22 +21184,22 @@ pgsave restore showpage -%%Page: 101 107 +%%Page: 108 114 %%BeginPageSetup %%PageResources: font Times-Roman -%%+ font Times-Italic %%+ font Times-Bold +%%+ font Times-Italic %%+ font Helvetica /pgsave save def %%IncludeResource: font Times-Roman /Times-Romanfnt1 vec2 /Times-Roman LoutRecode /fnt1 { /Times-Romanfnt1 LoutFont } def -%%IncludeResource: font Times-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 Times-Italic +/Times-Italicfnt6 vec2 /Times-Italic LoutRecode +/fnt6 { /Times-Italicfnt6 LoutFont } def %%IncludeResource: font Helvetica /Helveticafnt2 vec2 /Helvetica LoutRecode /fnt2 { /Helveticafnt2 LoutFont } def @@ -19878,299 +21207,299 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -240 fnt6 1417 -1580(Inde)m 4(x)k 240 fnt5 10136 -1583(101)m -gsave +240 fnt5 1417 -1583(108)m +240 fnt6 9956 -1580(Inde)m 4(x)k gsave 1417 -15423 translate 240 fnt1 9066 13412 0 13412 240 288 60 LoutGraphic gsave -1 LoutMargSet +0 LoutMargSet grestore -0 13249(Gap)m 452(mode)s 987(,)s -[ /Rect [1094 13246 1322 13411] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_conc_18 /ANN pdfmark -1094(37)s 220 fnt2 -0 12958(@Gr)m 2(aphic)k 240 fnt1 1044 12961(symbol)m 1751(,)s - -[ /Rect [1858 12958 2091 13125] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_grap_1 /ANN pdfmark -1858(66)s 220 fnt2 0 12382(@HAdjust)m 240 fnt1 1046 12385(symbol)m -1753(,)s -[ /Rect [1860 12382 2095 12550] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_hadj_2 /ANN pdfmark -1860(50)s 220 fnt2 0 12094(@HContr)m 2(act)k -240 fnt1 1264 12097(symbol)m 1971(,)s -[ /Rect [2078 12094 2313 12262] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_hcon_1 /ANN pdfmark -2078(50)s 220 fnt2 -0 11806(@HCo)m 3(v)k 5(er)k 240 fnt1 1018 11809(symbol)m -1725(,)s -[ /Rect [1832 11806 2047 11974] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_cove_1 /ANN pdfmark -1832(51)s 0 11521(Header)m 750(component)s 1874(of)s -2145(g)s 1(alle)k 3(y)k 2726(,)s -[ /Rect [2833 11518 3068 11685] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_head_1 /ANN pdfmark -2833(60)s -0 11233(Height)m 711(of)s 982(an)s 1265(object)s 1856(,)s - -[ /Rect [1963 11233 2197 11395] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_det_size_3 /ANN pdfmark -1963(24)s 220 fnt2 0 10942(@HExpand)m 240 fnt1 1173 10945(symbol)m -1880(,)s -[ /Rect [1987 10940 2218 11107] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_hexp_1 /ANN pdfmark -1987(49)s 220 fnt2 0 10654(h)m 240 fnt1 -168 10657(g)m 1(ap)k 566(mode)s 1101(,)s -[ /Rect [1208 10654 1436 10819] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_conc_22 /ANN pdfmark -1208(37)s -220 fnt2 0 10366(@High)m 240 fnt1 719 10369(symbol)m 1426(,)s - -[ /Rect [1533 10364 1764 10531] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_wide_2 /ANN pdfmark -1533(49)s 220 fnt2 0 10078(@HLimited)m 240 fnt1 1135 10081(symbol)m -1842(,)s -[ /Rect [1949 10078 2184 10246] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_hlim_1 /ANN pdfmark -1949(50)s 220 fnt2 0 9790(@Hline)m 240 fnt1 -773 9793(e)m 3(xample)k 1583(,)s -[ /Rect [1690 9792 1918 9951] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_exa_equa_7 /ANN pdfmark -1690(77)s 0 9505(Horizontal)m -1077(concatenation)s 2409(,)s -[ /Rect [2516 9502 2749 9669] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_conc_3 /ANN pdfmark -2516(36)s 220 fnt2 0 9214(@HScale)m -240 fnt1 981 9217(symbol)m 1688(,)s -[ /Rect [1795 9214 2030 9382] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_hsca_1 /ANN pdfmark -1795(50)s 220 fnt2 -0 8926(@HShift)m 240 fnt1 875 8929(symbol)m 1582(,)s -[ /Rect [1689 8924 1920 9091] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_hshi_1 /ANN pdfmark -1689(49)s -220 fnt2 0 8638(@HSpan)m 240 fnt1 939 8641(symbol)m 1646(,)s - -[ /Rect [1753 8638 1987 8806] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_span_4 /ANN pdfmark -1753(52)s 0 8353(Hyphenation)m 1294(g)s 1(ap)k 1692(mode)s -2227(,)s -[ /Rect [2334 8348 2565 8515] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_conc_37 /ANN pdfmark +0 13249(Gap)m +452(mode)s 987(,)s +[ /Rect [1094 13246 1322 13411] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_conc_18 /ANN pdfmark +1094(37)s 220 fnt2 0 12958(@Gr)m 2(aphic)k +240 fnt1 1044 12961(symbol)m 1751(,)s +[ /Rect [1858 12958 2085 13125] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_grap_1 /ANN pdfmark +1858(68)s 220 fnt2 +0 12382(@HAdjust)m 240 fnt1 1046 12385(symbol)m 1753(,)s +[ /Rect [1860 12382 2075 12550] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_hadj_2 /ANN pdfmark +1860(51)s +220 fnt2 0 12094(@HContr)m 2(act)k 240 fnt1 1264 12097(symbol)m +1971(,)s +[ /Rect [2078 12094 2293 12262] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_hcon_1 /ANN pdfmark +2078(51)s 220 fnt2 0 11806(@HCo)m 3(v)k 5(er)k +240 fnt1 1018 11809(symbol)m 1725(,)s +[ /Rect [1832 11806 2066 11974] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_cove_1 /ANN pdfmark +1832(52)s 0 11521(Header)m +750(component)s 1874(of)s 2145(g)s 1(alle)k 3(y)k +2726(,)s +[ /Rect [2833 11518 3067 11685] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_head_1 /ANN pdfmark +2833(62)s 0 11233(Height)m 711(of)s 982(an)s +1265(object)s 1856(,)s +[ /Rect [1963 11233 2197 11395] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_det_size_3 /ANN pdfmark +1963(24)s 220 fnt2 0 10942(@HExpand)m +240 fnt1 1173 10945(symbol)m 1880(,)s +[ /Rect [1987 10942 2202 11110] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_hexp_1 /ANN pdfmark +1987(51)s 220 fnt2 +0 10654(h)m 240 fnt1 168 10657(g)m 1(ap)k 566(mode)s +1101(,)s +[ /Rect [1208 10654 1436 10819] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_conc_22 /ANN pdfmark +1208(37)s 220 fnt2 0 10366(@High)m 240 fnt1 +719 10369(symbol)m 1426(,)s +[ /Rect [1533 10366 1768 10534] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_wide_2 /ANN pdfmark +1533(50)s 220 fnt2 0 10078(@HLimited)m +240 fnt1 1135 10081(symbol)m 1842(,)s +[ /Rect [1949 10078 2164 10246] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_hlim_1 /ANN pdfmark +1949(51)s 220 fnt2 +0 9790(@Hline)m 240 fnt1 773 9793(e)m 3(xample)k 1583(,)s + +[ /Rect [1690 9788 1921 9955] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_exa_equa_7 /ANN pdfmark +1690(79)s 0 9505(Horizontal)m 1077(concatenation)s 2409(,)s +[ /Rect [2516 9502 2749 9669] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_conc_3 /ANN pdfmark +2516(36)s +220 fnt2 0 9214(@HScale)m 240 fnt1 981 9217(symbol)m 1688(,)s + +[ /Rect [1795 9214 2029 9382] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_hsca_1 /ANN pdfmark +1795(52)s 220 fnt2 0 8926(@HShift)m 240 fnt1 875 8929(symbol)m +1582(,)s +[ /Rect [1689 8926 1924 9094] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_hshi_1 /ANN pdfmark +1689(50)s 220 fnt2 0 8638(@HSpan)m 240 fnt1 +939 8641(symbol)m 1646(,)s +[ /Rect [1753 8638 1977 8806] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_span_4 /ANN pdfmark +1753(53)s 0 8353(Hyphenation)m 1294(g)s 1(ap)k +1692(mode)s 2227(,)s +[ /Rect [2334 8348 2565 8515] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_conc_37 /ANN pdfmark 2334(39)s 0 8065(Hyphenation)m 1294(g)s 1(ap)k 1692(mode)s 2227(,)s -[ /Rect [2334 8062 2562 8227] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_conc_21 /ANN pdfmark +[ /Rect [2334 8062 2562 8227] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_conc_21 /ANN pdfmark 2334(37)s 220 fnt2 0 7774(h)m 6(yphen)k 760(@Break)s 240 fnt1 1563 7777(,)m -[ /Rect [1670 7774 1894 7939] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_brea_11 /ANN pdfmark +[ /Rect [1670 7774 1894 7939] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_brea_11 /ANN pdfmark 1670(43)s 1894(,)s -[ /Rect [2001 7777 2235 7939] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_brea_13 /ANN pdfmark +[ /Rect [2001 7777 2235 7939] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_brea_13 /ANN pdfmark 2001(44)s 0 7201(Identi\207er)m 882(,)s -[ /Rect [989 7198 1213 7363] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_det_lexi_12 /ANN pdfmark +[ /Rect [989 7198 1213 7363] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_det_lexi_12 /ANN pdfmark 989(13)s 220 fnt2 0 6910(impor)m -8(t)k 240 fnt1 673 6913(clause)m 1273(,)s -[ /Rect [1380 6910 1607 7075] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_det_visi_5 /ANN pdfmark +[ /Rect [1380 6910 1607 7075] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_det_visi_5 /ANN pdfmark 1380(18)s 220 fnt2 0 6622(@IncludeGr)m 2(aphicRepeated)k 240 fnt1 2695 6625(symbol)m 3402(,)s -[ /Rect [3509 6622 3744 6787] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_incr_1 /ANN pdfmark -3509(70)s 220 fnt2 0 6334(@IncludeGr)m 2(aphic)k +[ /Rect [3509 6624 3743 6787] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_incr_1 /ANN pdfmark +3509(72)s 220 fnt2 0 6334(@IncludeGr)m 2(aphic)k 240 fnt1 1751 6337(symbol)m 2458(,)s -[ /Rect [2565 6334 2800 6499] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_incg_1 /ANN pdfmark -2565(70)s 220 fnt2 +[ /Rect [2565 6336 2799 6499] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_incg_1 /ANN pdfmark +2565(72)s 220 fnt2 0 6046(@Include)m 240 fnt1 982 6049(symbol)m 1689(,)s -[ /Rect [1796 6048 2011 6211] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_incl_1 /ANN pdfmark -1796(71)s +[ /Rect [1796 6046 2020 6211] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_incl_1 /ANN pdfmark +1796(73)s 220 fnt2 0 5758(@IndentedDispla)m 6(y)k 240 fnt1 1847 5761(e)m 3(xample)k 2657(,)s -[ /Rect [2764 5758 2991 5923] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_exa_para_5 /ANN pdfmark -2764(78)s 220 fnt2 0 5470(@IndentedList)m 240 fnt1 +[ /Rect [2764 5758 2999 5923] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_exa_para_5 /ANN pdfmark +2764(80)s 220 fnt2 0 5470(@IndentedList)m 240 fnt1 1474 5473(e)m 3(xample)k 2284(,)s -[ /Rect [2391 5470 2626 5635] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_exa_para_8 /ANN pdfmark -2391(80)s 0 5185(Inde)m 3(x)k +[ /Rect [2391 5470 2625 5635] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_exa_para_8 /ANN pdfmark +2391(82)s 0 5185(Inde)m 3(x)k 597(\207le)s 958(\(for)s 1375(databases\))s 2366(,)s -[ /Rect [2473 5182 2706 5349] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_data_2 /ANN pdfmark -2473(66)s +[ /Rect [2473 5182 2701 5349] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_data_2 /ANN pdfmark +2473(67)s 0 4897(In-paragraph)m 1291(concatenation)s 2623(,)s -[ /Rect [2730 4894 2958 5059] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_conc_4 /ANN pdfmark +[ /Rect [2730 4894 2958 5059] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_conc_4 /ANN pdfmark 2730(37)s 220 fnt2 0 4606(@Inser)m -8(t)k 240 fnt1 836 4609(symbol)m 1543(,)s -[ /Rect [1650 4606 1883 4774] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_inse_1 /ANN pdfmark -1650(56)s 220 fnt2 0 4318(into)m 240 fnt1 406 4321(clause)m +[ /Rect [1650 4606 1877 4774] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_inse_1 /ANN pdfmark +1650(58)s 220 fnt2 0 4318(into)m 240 fnt1 406 4321(clause)m 1006(,)s -[ /Rect [1113 4318 1348 4483] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pri_gall_2 /ANN pdfmark +[ /Rect [1113 4318 1348 4483] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pri_gall_2 /ANN pdfmark 1113(10)s 0 4033(In)m 9(v)k 4(ocation)k 1067(of)s 1338(a)s 1504(symbol)s 2211(,)s -[ /Rect [2318 4033 2432 4195] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pri_defi_4 /ANN pdfmark +[ /Rect [2318 4033 2432 4195] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pri_defi_4 /ANN pdfmark 2318(4)s 0 3169(K)m 6(ernighan,)k 1111(B.)s 1322(,)s -[ /Rect [1429 3166 1655 3334] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_exa_equa_2 /ANN pdfmark -1429(75)s +[ /Rect [1429 3168 1657 3327] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_exa_equa_2 /ANN pdfmark +1429(77)s 0 2881(K)m 6(erning)k 778(,)s -[ /Rect [885 2878 1120 3043] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_font_5 /ANN pdfmark +[ /Rect [885 2878 1120 3043] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_font_5 /ANN pdfmark 885(40)s 0 2593(K)m 6(erning)k 831(g)s 1(ap)k 1229(mode)s 1764(,)s -[ /Rect [1871 2590 2099 2755] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_conc_27 /ANN pdfmark +[ /Rect [1871 2590 2099 2755] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_conc_27 /ANN pdfmark 1871(37)s 220 fnt2 0 2302(@K)m 8(er)k -5(nShr)k -3(ink)k 240 fnt1 1367 2305(symbol)m 2074(,)s -[ /Rect [2181 2302 2415 2470] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_kshr_1 /ANN pdfmark -2181(54)s 220 fnt2 +[ /Rect [2181 2302 2414 2470] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_kshr_1 /ANN pdfmark +2181(56)s 220 fnt2 0 2014(@K)m 8(e)k 4(y)k 240 fnt1 647 2017(parameter)m 1608(,)s -[ /Rect [1715 2014 1949 2179] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_det_sort_2 /ANN pdfmark +[ /Rect [1715 2014 1949 2179] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_det_sort_2 /ANN pdfmark 1715(32)s 220 fnt2 0 1726(k)m 240 fnt1 170 1729(g)m 1(ap)k 568(mode)s 1103(,)s -[ /Rect [1210 1726 1438 1891] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_conc_28 /ANN pdfmark +[ /Rect [1210 1726 1438 1891] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_conc_28 /ANN pdfmark 1210(37)s 0 1441(Knuth,)m 706(D.)s 930(,)s -[ /Rect [1037 1440 1265 1599] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_exa_equa_8 /ANN pdfmark -1037(77)s 220 fnt2 +[ /Rect [1037 1436 1268 1603] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_exa_equa_8 /ANN pdfmark +1037(79)s 220 fnt2 0 862(langdef)m 240 fnt1 776 865(language)m 1696(de\207nition)s 2617(,)s -[ /Rect [2724 864 2952 1027] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_lang_2 /ANN pdfmark -2724(47)s 220 fnt2 0 574(@Language)m 240 fnt1 1251 577(symbol)m +[ /Rect [2724 862 2951 1027] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_lang_2 /ANN pdfmark +2724(48)s 220 fnt2 0 574(@Language)m 240 fnt1 1251 577(symbol)m 1958(,)s -[ /Rect [2065 576 2293 739] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_lang_1 /ANN pdfmark -2065(47)s 220 fnt2 0 286(@LClos)m 240 fnt1 +[ /Rect [2065 574 2292 739] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_lang_1 /ANN pdfmark +2065(48)s 220 fnt2 0 286(@LClos)m 240 fnt1 836 289(symbol)m 1543(,)s -[ /Rect [1650 289 1884 451] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_det_lexi_13 /ANN pdfmark +[ /Rect [1650 289 1884 451] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_det_lexi_13 /ANN pdfmark 1650(14)s 4816 13249(LCM)m 5389(\207le)s 5697(,)s -[ /Rect [5804 13249 6038 13411] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_font_9 /ANN pdfmark +[ /Rect [5804 13249 6038 13411] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_font_9 /ANN pdfmark 5804(42)s 4816 12961(Length)m 5498(,)s -[ /Rect [5605 12958 5833 13123] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_conc_7 /ANN pdfmark +[ /Rect [5605 12958 5833 13123] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_conc_7 /ANN pdfmark 5605(37)s 220 fnt2 4816 12670(@LEn)m 4(v)k 240 fnt1 5594 12673(symbol)m 6301(,)s -[ /Rect [6408 12673 6642 12835] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_det_lexi_14 /ANN pdfmark +[ /Rect [6408 12673 6642 12835] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_det_lexi_14 /ANN pdfmark 6408(14)s 4816 12385(Letter)m 5445(character)s 6326(,)s -[ /Rect [6433 12382 6657 12547] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_det_lexi_2 /ANN pdfmark +[ /Rect [6433 12382 6657 12547] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_det_lexi_2 /ANN pdfmark 6433(13)s 4816 12097(Lig)m 1(atures)k 5715(,)s -[ /Rect [5822 12094 6057 12259] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_font_4 /ANN pdfmark +[ /Rect [5822 12094 6057 12259] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_font_4 /ANN pdfmark 5822(40)s 220 fnt2 4816 11806(lines)m 5319(@Break)s 240 fnt1 6122 11809(,)m -[ /Rect [6229 11806 6453 11971] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_brea_7 /ANN pdfmark +[ /Rect [6229 11806 6453 11971] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_brea_7 /ANN pdfmark 6229(43)s 220 fnt2 4816 11518(@LinkDest)m 240 fnt1 5948 11521(symbol)m 6655(,)s -[ /Rect [6762 11518 6996 11685] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_link_2 /ANN pdfmark -6762(64)s 220 fnt2 4816 11230(@LinkSource)m 240 fnt1 +[ /Rect [6762 11518 6995 11685] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_link_2 /ANN pdfmark +6762(66)s 220 fnt2 4816 11230(@LinkSource)m 240 fnt1 6188 11233(symbol)m 6895(,)s -[ /Rect [7002 11230 7236 11397] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_link_1 /ANN pdfmark -7002(64)s 220 fnt2 4816 10942(@LInput)m +[ /Rect [7002 11230 7235 11397] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_link_1 /ANN pdfmark +7002(66)s 220 fnt2 4816 10942(@LInput)m 240 fnt1 5705 10945(symbol)m 6412(,)s -[ /Rect [6519 10945 6753 11107] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_det_lexi_15 /ANN pdfmark +[ /Rect [6519 10945 6753 11107] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_det_lexi_15 /ANN pdfmark 6519(14)s 4816 10657(Literal)m 5506(w)s 2(ord)k 6001(,)s -[ /Rect [6108 10657 6342 10819] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_det_lexi_19 /ANN pdfmark +[ /Rect [6108 10657 6342 10819] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_det_lexi_19 /ANN pdfmark 6108(14)s 220 fnt2 4816 10366(@LUse)m 240 fnt1 5603 10369(symbol)m 6310(,)s -[ /Rect [6417 10369 6651 10531] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_det_lexi_17 /ANN pdfmark +[ /Rect [6417 10369 6651 10531] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_det_lexi_17 /ANN pdfmark 6417(14)s 220 fnt2 4816 10078(@L)m 24(Vis)k 240 fnt1 5494 10081(symbol)m 6201(,)s -[ /Rect [6308 10081 6542 10243] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_det_lexi_16 /ANN pdfmark +[ /Rect [6308 10081 6542 10243] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_det_lexi_16 /ANN pdfmark 6308(14)s 4816 9505(Macro)m 5440(,)s -[ /Rect [5547 9502 5773 9670] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_det_lexi_22 /ANN pdfmark +[ /Rect [5547 9502 5773 9670] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_det_lexi_22 /ANN pdfmark 5547(15)s 4816 9217(Mark)m 5395(alignment)s 6358(,)s -[ /Rect [6465 9217 6560 9379] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pri_obje_3 /ANN pdfmark +[ /Rect [6465 9217 6560 9379] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pri_obje_3 /ANN pdfmark 6465(1)s 5056 8929(in)m 5299(detail)s 5831(,)s -[ /Rect [5938 8926 6165 9091] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_det_gall_5 /ANN pdfmark +[ /Rect [5938 8926 6165 9091] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_det_gall_5 /ANN pdfmark 5938(28)s 4816 8641(Mark-to-mark)m 6230(g)s 1(ap)k 6628(mode)s 7163(,)s -[ /Rect [7270 8638 7498 8803] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_conc_23 /ANN pdfmark +[ /Rect [7270 8638 7498 8803] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_conc_23 /ANN pdfmark 7270(37)s 220 fnt2 4816 8350(@Meld)m 240 fnt1 5562 8353(symbol)m 6269(,)s -[ /Rect [6376 8350 6602 8518] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_rump_3 /ANN pdfmark -6376(55)s 220 fnt2 +[ /Rect [6376 8350 6609 8518] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_rump_3 /ANN pdfmark +6376(56)s 220 fnt2 4816 8062(@Merge)m 240 fnt1 5713 8065(symbol)m 6420(,)s -[ /Rect [6527 8062 6751 8227] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_det_sort_3 /ANN pdfmark +[ /Rect [6527 8062 6751 8227] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_det_sort_3 /ANN pdfmark 6527(33)s 220 fnt2 4816 7774(@Moment)m 240 fnt1 5888 7777(symbol)m 6595(,)s -[ /Rect [6702 7772 6933 7942] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_mome_1 /ANN pdfmark -6702(59)s 220 fnt2 4816 7486(m)m 240 fnt1 5045 7489(unit)m +[ /Rect [6702 7774 6937 7941] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_mome_1 /ANN pdfmark +6702(60)s 220 fnt2 4816 7486(m)m 240 fnt1 5045 7489(unit)m 5424(,)s -[ /Rect [5531 7486 5759 7651] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_conc_10 /ANN pdfmark +[ /Rect [5531 7486 5759 7651] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_conc_10 /ANN pdfmark 5531(37)s 220 fnt2 4816 6910(named)m 240 fnt1 5535 6913(parameter)m 6496(,)s -[ /Rect [6603 6910 6829 7078] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_det_name_2 /ANN pdfmark +[ /Rect [6603 6910 6829 7078] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_det_name_2 /ANN pdfmark 6603(15)s 4816 6625(Nested)m 5538(de\207nitions)s 6546(,)s -[ /Rect [6653 6624 6881 6787] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_det_visi_1 /ANN pdfmark +[ /Rect [6653 6624 6881 6787] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_det_visi_1 /ANN pdfmark 6653(17)s 220 fnt2 4816 6334(@Ne)m 6(xt)k 240 fnt1 5540 6337(symbol)m 6247(,)s -[ /Rect [6354 6334 6581 6502] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_next_1 /ANN pdfmark -6354(58)s 220 fnt2 +[ /Rect [6354 6332 6585 6502] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_next_1 /ANN pdfmark +6354(59)s 220 fnt2 4816 6046(noh)m 6(yphen)k 5820(@Break)s 240 fnt1 6623 6049(,)m -[ /Rect [6730 6046 6954 6211] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_brea_12 /ANN pdfmark +[ /Rect [6730 6046 6954 6211] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_brea_12 /ANN pdfmark 6730(43)s 6954(,)s -[ /Rect [7061 6049 7295 6211] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_brea_14 /ANN pdfmark +[ /Rect [7061 6049 7295 6211] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_brea_14 /ANN pdfmark 7061(44)s 220 fnt2 4816 5758(@NotRe)m 6(v)k 5(ealed)k 240 fnt1 6343 5761(symbol)m 7050(,)s -[ /Rect [7157 5758 7391 5925] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_notr_1 /ANN pdfmark -7157(62)s 220 fnt2 +[ /Rect [7157 5758 7381 5925] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_notr_1 /ANN pdfmark +7157(63)s 220 fnt2 4816 5470(@Null)m 240 fnt1 5461 5473(symbol)m 6168(,)s -[ /Rect [6275 5470 6510 5637] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_null_1 /ANN pdfmark -6275(60)s +[ /Rect [6275 5470 6490 5637] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_null_1 /ANN pdfmark +6275(61)s 4816 5185(Numbered)m 5884(list)s 6182(,)s -[ /Rect [6289 5180 6520 5347] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_exa_para_7 /ANN pdfmark -6289(79)s 220 fnt2 +[ /Rect [6289 5182 6504 5347] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_exa_para_7 /ANN pdfmark +6289(81)s 220 fnt2 4816 4894(@NumberOf)m 240 fnt1 6108 4897(e)m 3(xample)k 6918(,)s -[ /Rect [7025 4894 7258 5061] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_exa_chap_3 /ANN pdfmark -7025(86)s 4816 4321(Object)m 5460(,)s -[ /Rect [5567 4321 5662 4483] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pri_obje_1 /ANN pdfmark +[ /Rect [7025 4894 7252 5059] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_exa_chap_3 /ANN pdfmark +7025(88)s 4816 4321(Object)m 5460(,)s +[ /Rect [5567 4321 5662 4483] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pri_obje_1 /ANN pdfmark 5567(1)s 220 fnt2 4816 4030(@OddP)m 8(ageList)k 240 fnt1 6355 4033(e)m 3(xample)k 7165(,)s -[ /Rect [7272 4030 7498 4198] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_exa_page_9 /ANN pdfmark -7272(85)s 220 fnt2 4816 3742(o)m 240 fnt1 +[ /Rect [7272 4030 7500 4195] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_exa_page_9 /ANN pdfmark +7272(87)s 220 fnt2 4816 3742(o)m 240 fnt1 4991 3745(g)m 1(ap)k 5389(mode)s 5924(,)s -[ /Rect [6031 3742 6259 3907] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_conc_26 /ANN pdfmark +[ /Rect [6031 3742 6259 3907] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_conc_26 /ANN pdfmark 6031(37)s 220 fnt2 4816 3454(@OneCol)m 240 fnt1 5828 3457(symbol)m 6535(,)s -[ /Rect [6642 3454 6869 3619] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_oner_3 /ANN pdfmark -6642(48)s 220 fnt2 4816 3166(@OneOf)m 240 fnt1 5743 3169(symbol)m +[ /Rect [6642 3454 6877 3622] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_oner_3 /ANN pdfmark +6642(50)s 220 fnt2 4816 3166(@OneOf)m 240 fnt1 5743 3169(symbol)m 6450(,)s -[ /Rect [6557 3166 6785 3334] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_oneo_1 /ANN pdfmark -6557(57)s 220 fnt2 4816 2878(@OneP)m 8(age)k +[ /Rect [6557 3166 6784 3334] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_oneo_1 /ANN pdfmark +6557(58)s 220 fnt2 4816 2878(@OneP)m 8(age)k 240 fnt1 6010 2881(e)m 3(xample)k 6820(,)s -[ /Rect [6927 2878 7161 3043] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_exa_page_7 /ANN pdfmark -6927(84)s +[ /Rect [6927 2878 7160 3045] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_exa_page_7 /ANN pdfmark +6927(86)s 220 fnt2 4816 2590(@OneRo)m 3(w)k 240 fnt1 5947 2593(symbol)m 6654(,)s -[ /Rect [6761 2590 6988 2755] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_oner_1 /ANN pdfmark -6761(48)s 220 fnt2 4816 2302(@Open)m 240 fnt1 +[ /Rect [6761 2588 6992 2755] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_oner_1 /ANN pdfmark +6761(49)s 220 fnt2 4816 2302(@Open)m 240 fnt1 5622 2305(symbol)m 6329(,)s -[ /Rect [6436 2302 6670 2469] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_open_1 /ANN pdfmark -6436(64)s 4816 2017(Optimal)m 5654(g)s 1(alle)k 3(y)k +[ /Rect [6436 2302 6662 2470] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_open_1 /ANN pdfmark +6436(65)s 4816 2017(Optimal)m 5654(g)s 1(alle)k 3(y)k 6288(breaking)s 7125(,)s -[ /Rect [7232 2014 7458 2182] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_det_opti_1 /ANN pdfmark +[ /Rect [7232 2014 7458 2182] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_det_opti_1 /ANN pdfmark 7232(35)s 220 fnt2 4816 1726(@Optimiz)m 3(e)k 240 fnt1 5953 1729(symbol)m 6660(,)s -[ /Rect [6767 1726 6993 1894] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_det_opti_2 /ANN pdfmark +[ /Rect [6767 1726 6993 1894] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_det_opti_2 /ANN pdfmark 6767(35)s 220 fnt2 4816 1438(or)m 2(agged)k 5667(@Break)s 240 fnt1 6470 1441(,)m -[ /Rect [6577 1438 6801 1603] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_brea_6 /ANN pdfmark +[ /Rect [6577 1438 6801 1603] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_brea_6 /ANN pdfmark 6577(43)s 220 fnt2 4816 1150(@OrElse)m 240 fnt1 5761 1153(e)m 3(xample)k 6571(,)s -[ /Rect [6678 1148 6909 1315] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_exa_chap_5 /ANN pdfmark -6678(89)s 4816 865(Other)m 5420(character)s 6301(,)s +[ /Rect [6678 1148 6893 1315] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_exa_chap_5 /ANN pdfmark +6678(91)s 4816 865(Other)m 5420(character)s 6301(,)s -[ /Rect [6408 862 6632 1027] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_det_lexi_3 /ANN pdfmark +[ /Rect [6408 862 6632 1027] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_det_lexi_3 /ANN pdfmark 6408(13)s 220 fnt2 4816 574(outdent)m 5604(@Break)s 240 fnt1 6407 577(,)m -[ /Rect [6514 577 6748 739] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_brea_2 /ANN pdfmark +[ /Rect [6514 577 6748 739] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_brea_2 /ANN pdfmark 6514(42)s 220 fnt2 4816 286(@Outline)m 240 fnt1 5785 289(symbol)m 6492(,)s -[ /Rect [6599 286 6832 453] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_outl_1 /ANN pdfmark -6599(46)s +[ /Rect [6599 286 6826 451] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_outl_1 /ANN pdfmark +6599(48)s grestore gsave 1417 -15423 translate 240 fnt1 0 0 0 0 240 288 60 LoutGraphic gsave -1 LoutMargSet +0 LoutMargSet grestore grestore @@ -20182,22 +21511,22 @@ pgsave restore showpage -%%Page: 102 108 +%%Page: 109 115 %%BeginPageSetup %%PageResources: font Times-Roman -%%+ font Times-Bold %%+ font Times-Italic +%%+ font Times-Bold %%+ font Helvetica /pgsave save def %%IncludeResource: font Times-Roman /Times-Romanfnt1 vec2 /Times-Roman LoutRecode /fnt1 { /Times-Romanfnt1 LoutFont } def -%%IncludeResource: font Times-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 Times-Bold +/Times-Boldfnt5 vec2 /Times-Bold LoutRecode +/fnt5 { /Times-Boldfnt5 LoutFont } def %%IncludeResource: font Helvetica /Helveticafnt2 vec2 /Helvetica LoutRecode /fnt2 { /Helveticafnt2 LoutFont } def @@ -20205,300 +21534,300 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -240 fnt5 1417 -1583(102)m 240 fnt6 9956 -1580(Inde)m 4(x)k -gsave +240 fnt6 1417 -1580(Inde)m 4(x)k +240 fnt5 10129 -1583(109)m gsave 1417 -15423 translate 240 fnt1 9066 13412 0 13412 240 288 60 LoutGraphic gsave -0 LoutMargSet +1 LoutMargSet grestore -220 fnt2 0 13245(o)m 3(v)k 5(er)k 240 fnt1 -479 13248(e)m 3(xample)k 1289(,)s -[ /Rect [1396 13245 1629 13412] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_exa_equa_6 /ANN pdfmark -1396(76)s 0 12960(Ov)m 3(erstrik)k 2(e)k -1059(g)s 1(ap)k 1457(mode)s 1992(,)s -[ /Rect [2099 12957 2327 13122] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_conc_25 /ANN pdfmark -2099(37)s -220 fnt2 0 12381(@P)m 26(Adjust)k 240 fnt1 1008 12384(symbol)m -1715(,)s -[ /Rect [1822 12381 2057 12549] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_hadj_1 /ANN pdfmark -1822(50)s 220 fnt2 0 12093(@P)m 8(age)k -240 fnt1 779 12096(e)m 3(xample)k 1589(,)s -[ /Rect [1696 12093 1920 12258] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_exa_page_6 /ANN pdfmark -1696(83)s -220 fnt2 0 11805(@P)m 8(ageLabel)k 240 fnt1 1309 11808(symbol)m -2016(,)s -[ /Rect [2123 11807 2357 11970] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_page_1 /ANN pdfmark -2123(74)s 0 11520(P)m 3(age)k 518(layout)s -240 11232(principles)m 1233(of)s 1451(,)s -[ /Rect [1558 11229 1664 11397] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pri_defi_7 /ANN pdfmark -1558(5)s 240 10944(in)m -483(practice)s 1241(,)s -[ /Rect [1348 10941 1563 11106] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_exa_page_1 /ANN pdfmark -1348(81)s 220 fnt2 0 10653(@P)m 8(ageOf)k -240 fnt1 1016 10656(e)m 3(xample)k 1826(,)s -[ /Rect [1933 10653 2148 10818] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_exa_page_3 /ANN pdfmark -1933(81)s -0 10368(P)m 3(aragraph)k 1023(breaking)s 1860(,)s -[ /Rect [1967 10365 2071 10530] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pri_obje_7 /ANN pdfmark -1967(3)s -240 10080(in)m 483(detail)s 1015(,)s -[ /Rect [1122 10075 1353 10242] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_conc_35 /ANN pdfmark -1122(39)s 0 9792(P)m 3(arameter)k -971(,)s -[ /Rect [1078 9792 1192 9954] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pri_defi_5 /ANN pdfmark -1078(4)s 220 fnt2 240 9501(body)m 240 fnt1 -774 9504(parameter)m 1735(,)s -[ /Rect [1842 9503 2070 9666] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_det_visi_2 /ANN pdfmark -1842(17)s 220 fnt2 240 9213(named)m -240 fnt1 959 9216(parameter)m 1920(,)s -[ /Rect [2027 9213 2253 9381] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_det_name_1 /ANN pdfmark -2027(15)s 220 fnt2 -0 8925(@PlainGr)m 2(aphic)k 240 fnt1 1530 8928(symbol)m 2237(,)s - -[ /Rect [2344 8925 2579 9090] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_plai_1 /ANN pdfmark -2344(70)s 0 8640(PostScript)m 989(,)s -[ /Rect [1096 8640 1222 8803] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_preface_1 /ANN pdfmark -1096(ii)s 240 8352(used)m -737(by)s 220 fnt2 1031 8349(@Gr)m 2(aphic)k 240 fnt1 -2022 8352(,)m -[ /Rect [2129 8349 2362 8516] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_grap_3 /ANN pdfmark -2129(66)s 240 8064(used)m 737(by)s 220 fnt2 -1031 8061(@IncludeGr)m 2(aphic)k 240 fnt1 2729 8064(,)m -[ /Rect [2836 8061 3071 8226] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_incg_3 /ANN pdfmark -2836(70)s -240 7776(used)m 737(by)s 220 fnt2 1031 7773(@IncludeGr)m 2(aphicRepeated)k -240 fnt1 3673 7776(,)m -[ /Rect [3780 7773 4015 7938] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_incr_3 /ANN pdfmark -3780(70)s 240 7488(used)m 737(by)s -220 fnt2 1031 7485(@PrependGr)m 2(aphic)k 240 fnt1 2851 7488(,)m - -[ /Rect [2958 7487 3173 7650] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_prep_3 /ANN pdfmark -2958(71)s 220 fnt2 0 7197(@PP)m 240 fnt1 566 7200(e)m 3(xample)k -1376(,)s -[ /Rect [1483 7197 1710 7362] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_exa_para_3 /ANN pdfmark -1483(78)s 0 6912(Precedence)m 1091(,)s -[ /Rect [1198 6912 1432 7074] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_det_prec_1 /ANN pdfmark -1198(22)s -220 fnt2 0 6621(preceding)m 240 fnt1 958 6624(,)m -[ /Rect [1065 6621 1172 6786] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pri_cros_5 /ANN pdfmark -1065(8)s -220 fnt2 0 6333(@PrependGr)m 2(aphic)k 240 fnt1 1873 6336(symbol)m -2580(,)s -[ /Rect [2687 6335 2902 6498] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_prep_1 /ANN pdfmark -2687(71)s 0 6048(Principal)m 917(mark)s 1416(,)s - -[ /Rect [1523 6045 1751 6210] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_conc_5 /ANN pdfmark -1523(37)s 240 5760(ef)m 6(fect)k 836(on)s 220 fnt2 -1133 5757(@OneCol)m 240 fnt1 2145 5760(and)m 220 fnt2 2549 5757(@OneRo)m 3(w)k -240 fnt1 3627 5760(,)m -[ /Rect [3734 5757 3961 5922] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_oner_2 /ANN pdfmark -3734(48)s 0 5472(Promotion)m 1067(of)s -1338(components)s 2493(,)s -[ /Rect [2600 5467 2831 5634] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_det_gall_9 /ANN pdfmark -2600(29)s 220 fnt2 0 5181(p)m -240 fnt1 174 5184(unit)m 553(,)s -[ /Rect [660 5181 888 5346] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_conc_9 /ANN pdfmark -660(37)s 0 4608(Quote)m -641(character)s 1522(,)s -[ /Rect [1629 4605 1853 4770] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_det_lexi_4 /ANN pdfmark -1629(13)s 0 4320(Quoted)m 763(w)s 2(ord)k -1258(,)s -[ /Rect [1365 4320 1599 4482] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_det_lexi_20 /ANN pdfmark -1365(14)s 220 fnt2 0 3741(r)m 2(agged)k -729(@Break)s 240 fnt1 1532 3744(,)m -[ /Rect [1639 3741 1863 3906] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_brea_3 /ANN pdfmark -1639(43)s 220 fnt2 -0 3453(@Ra)m 4(wV)k 17(erbatim)k 240 fnt1 1563 3456(symbol)m -2270(,)s -[ /Rect [2377 3453 2601 3618] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_verb_2 /ANN pdfmark -2377(73)s 0 3168(Recepti)m 6(v)k 3(e)k +220 fnt2 0 13246(o)m 3(v)k 5(er)k +240 fnt1 479 13249(e)m 3(xample)k 1289(,)s +[ /Rect [1396 13246 1623 13411] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_exa_equa_6 /ANN pdfmark +1396(78)s +0 12961(Ov)m 3(erstrik)k 2(e)k 1059(g)s 1(ap)k +1457(mode)s 1992(,)s +[ /Rect [2099 12958 2327 13123] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_conc_25 /ANN pdfmark +2099(37)s 220 fnt2 0 12382(@P)m 26(Adjust)k +240 fnt1 1008 12385(symbol)m 1715(,)s +[ /Rect [1822 12382 2037 12550] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_hadj_1 /ANN pdfmark +1822(51)s 220 fnt2 +0 12094(@P)m 8(age)k 240 fnt1 779 12097(e)m 3(xample)k +1589(,)s +[ /Rect [1696 12094 1922 12262] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_exa_page_6 /ANN pdfmark +1696(85)s 220 fnt2 0 11806(@P)m 8(ageLabel)k +240 fnt1 1309 11809(symbol)m 2016(,)s +[ /Rect [2123 11806 2356 11973] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_page_1 /ANN pdfmark +2123(76)s 0 11521(P)m 3(age)k +518(layout)s 240 11233(principles)m 1233(of)s 1451(,)s +[ /Rect [1558 11230 1664 11398] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pri_defi_7 /ANN pdfmark +1558(5)s +240 10945(in)m 483(practice)s 1241(,)s +[ /Rect [1348 10942 1572 11107] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_exa_page_1 /ANN pdfmark +1348(83)s 220 fnt2 +0 10654(@P)m 8(ageOf)k 240 fnt1 1016 10657(e)m 3(xample)k +1826(,)s +[ /Rect [1933 10654 2157 10819] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_exa_page_3 /ANN pdfmark +1933(83)s 0 10369(P)m 3(aragraph)k 1023(breaking)s +1860(,)s +[ /Rect [1967 10366 2071 10531] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pri_obje_7 /ANN pdfmark +1967(3)s 240 10081(in)m 483(detail)s 1015(,)s + +[ /Rect [1122 10076 1353 10243] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_conc_35 /ANN pdfmark +1122(39)s 0 9793(P)m 3(arameter)k 971(,)s +[ /Rect [1078 9793 1192 9955] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pri_defi_5 /ANN pdfmark +1078(4)s +220 fnt2 240 9502(body)m 240 fnt1 774 9505(parameter)m 1735(,)s + +[ /Rect [1842 9504 2070 9667] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_det_visi_2 /ANN pdfmark +1842(17)s 220 fnt2 240 9214(named)m 240 fnt1 959 9217(parameter)m +1920(,)s +[ /Rect [2027 9214 2253 9382] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_det_name_1 /ANN pdfmark +2027(15)s 220 fnt2 0 8926(@PlainGr)m 2(aphic)k +240 fnt1 1530 8929(symbol)m 2237(,)s +[ /Rect [2344 8928 2578 9091] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_plai_1 /ANN pdfmark +2344(72)s 0 8641(PostScript)m +989(,)s +[ /Rect [1096 8641 1222 8804] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_preface_1 /ANN pdfmark +1096(ii)s 240 8353(used)m 737(by)s 220 fnt2 +1031 8350(@Gr)m 2(aphic)k 240 fnt1 2022 8353(,)m +[ /Rect [2129 8350 2356 8517] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_grap_3 /ANN pdfmark +2129(68)s +240 8065(used)m 737(by)s 220 fnt2 1031 8062(@IncludeGr)m 2(aphic)k +240 fnt1 2729 8065(,)m +[ /Rect [2836 8064 3070 8227] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_incg_3 /ANN pdfmark +2836(72)s 240 7777(used)m 737(by)s +220 fnt2 1031 7774(@IncludeGr)m 2(aphicRepeated)k 240 fnt1 3673 7777(,)m + +[ /Rect [3780 7776 4014 7939] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_incr_3 /ANN pdfmark +3780(72)s 240 7489(used)m 737(by)s 220 fnt2 1031 7486(@PrependGr)m 2(aphic)k +240 fnt1 2851 7489(,)m +[ /Rect [2958 7486 3182 7651] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_prep_3 /ANN pdfmark +2958(73)s 220 fnt2 0 7198(@PP)m +240 fnt1 566 7201(e)m 3(xample)k 1376(,)s +[ /Rect [1483 7198 1718 7363] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_exa_para_3 /ANN pdfmark +1483(80)s +0 6913(Precedence)m 1091(,)s +[ /Rect [1198 6913 1432 7075] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_det_prec_1 /ANN pdfmark +1198(22)s 220 fnt2 0 6622(preceding)m +240 fnt1 958 6625(,)m +[ /Rect [1065 6622 1172 6787] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pri_cros_5 /ANN pdfmark +1065(8)s 220 fnt2 0 6334(@PrependGr)m 2(aphic)k +240 fnt1 1873 6337(symbol)m 2580(,)s +[ /Rect [2687 6334 2911 6499] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_prep_1 /ANN pdfmark +2687(73)s 0 6049(Principal)m +917(mark)s 1416(,)s +[ /Rect [1523 6046 1751 6211] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_conc_5 /ANN pdfmark +1523(37)s 240 5761(ef)m 6(fect)k +836(on)s 220 fnt2 1133 5758(@OneCol)m 240 fnt1 2145 5761(and)m +220 fnt2 2549 5758(@OneRo)m 3(w)k 240 fnt1 3627 5761(,)m + +[ /Rect [3734 5756 3965 5923] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_oner_2 /ANN pdfmark +3734(49)s 0 5473(Promotion)m 1067(of)s 1338(components)s 2493(,)s + +[ /Rect [2600 5468 2831 5635] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_det_gall_9 /ANN pdfmark +2600(29)s 220 fnt2 0 5182(p)m 240 fnt1 174 5185(unit)m +553(,)s +[ /Rect [660 5182 888 5347] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_conc_9 /ANN pdfmark +660(37)s 0 4609(Quote)m 641(character)s 1522(,)s + +[ /Rect [1629 4606 1853 4771] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_det_lexi_4 /ANN pdfmark +1629(13)s 0 4321(Quoted)m 763(w)s 2(ord)k 1258(,)s + +[ /Rect [1365 4321 1599 4483] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_det_lexi_20 /ANN pdfmark +1365(14)s 220 fnt2 0 3742(r)m 2(agged)k 729(@Break)s +240 fnt1 1532 3745(,)m +[ /Rect [1639 3742 1863 3907] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_brea_3 /ANN pdfmark +1639(43)s 220 fnt2 0 3454(@Ra)m 4(wV)k 17(erbatim)k +240 fnt1 1563 3457(symbol)m 2270(,)s +[ /Rect [2377 3454 2603 3622] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_verb_2 /ANN pdfmark +2377(75)s 0 3169(Recepti)m 6(v)k 3(e)k 1003(symbol)s 1710(,)s -[ /Rect [1817 3168 2032 3330] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pri_gall_4 /ANN pdfmark -1817(11)s 0 2880(Recursion)m 974(,)s +[ /Rect [1817 3169 2032 3331] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pri_gall_4 /ANN pdfmark +1817(11)s 0 2881(Recursion)m 974(,)s -[ /Rect [1081 2877 1187 3045] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pri_defi_6 /ANN pdfmark -1081(5)s 220 fnt2 0 2589(@Ref)m 6(erence)k 240 fnt1 -1281 2592(e)m 3(xample)k 2091(,)s -[ /Rect [2198 2587 2413 2754] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_exa_bibl_2 /ANN pdfmark -2198(91)s 220 fnt2 -0 2301(@Ref)m 6(erenceSection)k 240 fnt1 2006 2304(e)m 3(xample)k +[ /Rect [1081 2878 1187 3046] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pri_defi_6 /ANN pdfmark +1081(5)s 220 fnt2 0 2590(@Ref)m 6(erence)k 240 fnt1 +1281 2593(e)m 3(xample)k 2091(,)s +[ /Rect [2198 2588 2422 2755] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_exa_bibl_2 /ANN pdfmark +2198(93)s 220 fnt2 +0 2302(@Ref)m 6(erenceSection)k 240 fnt1 2006 2305(e)m 3(xample)k 2816(,)s -[ /Rect [2923 2299 3147 2466] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_exa_bibl_3 /ANN pdfmark -2923(93)s 220 fnt2 0 2013(@Ref)m 240 fnt1 -621 2016(e)m 3(xample)k 1431(,)s -[ /Rect [1538 2011 1772 2178] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_exa_bibl_4 /ANN pdfmark -1538(94)s 0 1728(Reid,)m +[ /Rect [2923 2300 3149 2470] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_exa_bibl_3 /ANN pdfmark +2923(95)s 220 fnt2 0 2014(@Ref)m 240 fnt1 +621 2017(e)m 3(xample)k 1431(,)s +[ /Rect [1538 2012 1771 2181] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_exa_bibl_4 /ANN pdfmark +1538(96)s 0 1729(Reid,)m 559(Brian)s 1147(K.)s 1371(,)s -[ /Rect [1478 1727 1586 1886] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pri_cros_3 /ANN pdfmark -1478(7)s 0 1440(Right)m +[ /Rect [1478 1728 1586 1887] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pri_cros_3 /ANN pdfmark +1478(7)s 0 1441(Right)m 592(justi\207cation)s 1724(,)s -[ /Rect [1831 1437 2059 1602] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_conc_32 /ANN pdfmark -1831(37)s 220 fnt2 0 1149(r)m -3(lines)k -579(@Break)s 240 fnt1 1382 1152(,)m -[ /Rect [1489 1149 1713 1314] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_brea_9 /ANN pdfmark -1489(43)s 0 864(Roman)m +[ /Rect [1831 1438 2059 1603] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_conc_32 /ANN pdfmark +1831(37)s 220 fnt2 0 1150(r)m -3(lines)k +579(@Break)s 240 fnt1 1382 1153(,)m +[ /Rect [1489 1150 1713 1315] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_brea_9 /ANN pdfmark +1489(43)s 0 865(Roman)m 749(numerals)s 1623(,)s -[ /Rect [1730 861 1945 1026] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_exa_para_9 /ANN pdfmark -1730(81)s 0 576(Root)m 526(g)s 1(alle)k 3(y)k +[ /Rect [1730 862 1954 1027] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_exa_para_9 /ANN pdfmark +1730(83)s 0 577(Root)m 526(g)s 1(alle)k 3(y)k 1107(,)s -[ /Rect [1214 576 1429 738] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pri_gall_5 /ANN pdfmark -1214(11)s 240 288(in)m 483(detail)s 1015(,)s +[ /Rect [1214 577 1429 739] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pri_gall_5 /ANN pdfmark +1214(11)s 240 289(in)m 483(detail)s 1015(,)s -[ /Rect [1122 285 1349 450] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_det_gall_6 /ANN pdfmark +[ /Rect [1122 286 1349 451] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_det_gall_6 /ANN pdfmark 1122(28)s 4816 13247(Root)m 5342(g)s 1(alle)k 3(y)k 240 fnt6 5976 13249(\(ctd.\))m 240 fnt1 5056 12959(printing)m 5866(of)s 6084(,)s -[ /Rect [6191 12954 6422 13121] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_det_gall_7 /ANN pdfmark +[ /Rect [6191 12954 6422 13121] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_det_gall_7 /ANN pdfmark 6191(29)s 5056 12671(size)m 5483(of)s 5754(components)s 6962(of)s 7180(,)s -[ /Rect [7287 12668 7513 12836] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_det_size_5 /ANN pdfmark +[ /Rect [7287 12668 7513 12836] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_det_size_5 /ANN pdfmark 7287(25)s 220 fnt2 4816 12380(@Rotate)m 240 fnt1 5737 12383(symbol)m 6444(,)s -[ /Rect [6551 12380 6775 12548] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_rota_1 /ANN pdfmark -6551(53)s 4816 12095(Rotation)m +[ /Rect [6551 12380 6777 12548] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_rota_1 /ANN pdfmark +6551(55)s 4816 12095(Rotation)m 5697(of)s 5968(object)s 6559(,)s -[ /Rect [6666 12092 6890 12260] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_rota_2 /ANN pdfmark -6666(53)s 4816 11807(Ro)m 6(w)k +[ /Rect [6666 12092 6892 12260] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_rota_2 /ANN pdfmark +6666(55)s 4816 11807(Ro)m 6(w)k 5317(mark)s 5816(,)s -[ /Rect [5923 11807 6037 11969] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pri_obje_4 /ANN pdfmark +[ /Rect [5923 11807 6037 11969] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pri_obje_4 /ANN pdfmark 5923(2)s 220 fnt2 4816 11516(rr)m 2(agged)k 5618(@Break)s 240 fnt1 6421 11519(,)m -[ /Rect [6528 11516 6752 11681] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_brea_5 /ANN pdfmark +[ /Rect [6528 11516 6752 11681] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_brea_5 /ANN pdfmark 6528(43)s 220 fnt2 4816 11228(@Rump)m 240 fnt1 5676 11231(symbol)m 6383(,)s -[ /Rect [6490 11228 6716 11396] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_rump_2 /ANN pdfmark -6490(55)s +[ /Rect [6490 11228 6723 11396] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_rump_2 /ANN pdfmark +6490(56)s 220 fnt2 4816 10940(r)m 240 fnt1 4949 10943(unit)m 5328(,)s -[ /Rect [5435 10940 5663 11105] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_conc_16 /ANN pdfmark +[ /Rect [5435 10940 5663 11105] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_conc_16 /ANN pdfmark 5435(37)s 220 fnt2 4816 10652(@Runner)m 240 fnt1 5818 10655(e)m 3(xample)k 6628(,)s -[ /Rect [6735 10652 6969 10817] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_exa_page_8 /ANN pdfmark -6735(84)s 220 fnt2 4816 10076(@Scale)m 240 fnt1 +[ /Rect [6735 10652 6968 10819] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_exa_page_8 /ANN pdfmark +6735(86)s 220 fnt2 4816 10076(@Scale)m 240 fnt1 5639 10079(symbol)m 6346(,)s -[ /Rect [6453 10076 6677 10244] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_scal_1 /ANN pdfmark -6453(53)s 4816 9791(Scaling)m 5586(of)s +[ /Rect [6453 10076 6687 10244] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_scal_1 /ANN pdfmark +6453(54)s 4816 9791(Scaling)m 5586(of)s 5857(object)s 6448(,)s -[ /Rect [6555 9788 6790 9956] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_hsca_3 /ANN pdfmark -6555(50)s 4816 9503(Scribe)m 5429(,)s +[ /Rect [6555 9788 6789 9956] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_hsca_3 /ANN pdfmark +6555(52)s 4816 9503(Scribe)m 5429(,)s -[ /Rect [5536 9502 5644 9661] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pri_cros_2 /ANN pdfmark +[ /Rect [5536 9502 5644 9661] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pri_cros_2 /ANN pdfmark 5536(7)s 220 fnt2 4816 9212(@Section)m 240 fnt1 5816 9215(e)m 3(xample)k 6626(,)s -[ /Rect [6733 9210 6964 9377] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_exa_chap_6 /ANN pdfmark -6733(89)s 220 fnt2 4816 8924(@SetColor)m 240 fnt1 +[ /Rect [6733 9210 6948 9377] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_exa_chap_6 /ANN pdfmark +6733(91)s 220 fnt2 4816 8924(@SetColor)m 240 fnt1 5951 8927(symbol)m 6658(,)s -[ /Rect [6765 8924 6998 9091] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_colo_2 /ANN pdfmark -6765(46)s 220 fnt2 4816 8636(@SetColour)m +[ /Rect [6765 8924 6991 9092] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_colo_2 /ANN pdfmark +6765(45)s 220 fnt2 4816 8636(@SetColour)m 240 fnt1 6073 8639(symbol)m 6780(,)s -[ /Rect [6887 8636 7120 8803] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_colo_1 /ANN pdfmark -6887(46)s 220 fnt2 +[ /Rect [6887 8636 7113 8804] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_colo_1 /ANN pdfmark +6887(45)s 220 fnt2 4816 8348(@SetHeaderComponent)m 240 fnt1 7277 8351(symbol)m 7984(,)s -[ /Rect [8091 8348 8306 8515] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_head_4 /ANN pdfmark -8091(61)s -4816 8063(Size)m 5283(of)s 5554(an)s 5837(object)s 6428(,)s - -[ /Rect [6535 8063 6769 8225] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_det_size_4 /ANN pdfmark -6535(24)s 4816 7775(small)m 5388(capitals)s 6115(,)s -[ /Rect [6222 7775 6437 7937] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_font_7 /ANN pdfmark -6222(41)s -4816 7487(Sorted)m 5498(g)s 1(alle)k 3(ys)k 6169(,)s - -[ /Rect [6276 7484 6510 7649] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_det_sort_1 /ANN pdfmark -6276(32)s 4816 7199(Space)m 5390(,)s -[ /Rect [5497 7196 5721 7361] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_det_lexi_10 /ANN pdfmark -5497(13)s 5056 6911(when)m -5632(signi\207cant)s 6635(,)s -[ /Rect [6742 6908 6969 7073] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_conc_34 /ANN pdfmark -6742(38)s 220 fnt2 4816 6620(@Space)m -240 fnt1 5713 6623(symbol)m 6420(,)s -[ /Rect [6527 6623 6761 6785] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_spac_1 /ANN pdfmark -6527(44)s 220 fnt2 -4816 6332(@Star)m -8(tHSpan)k 240 fnt1 6226 6335(symbol)m 6933(,)s - -[ /Rect [7040 6332 7274 6500] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_span_1 /ANN pdfmark -7040(52)s 220 fnt2 4816 6044(@Star)m -8(tHVSpan)k 240 fnt1 -6372 6047(symbol)m 7079(,)s -[ /Rect [7186 6044 7420 6212] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_span_3 /ANN pdfmark -7186(52)s 220 fnt2 4816 5756(@Star)m -8(tVSpan)k -240 fnt1 6214 5759(symbol)m 6921(,)s -[ /Rect [7028 5756 7262 5924] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_span_2 /ANN pdfmark -7028(52)s 4816 5471(Style)m -5363(of)s 5634(an)s 5917(object)s 6508(,)s -[ /Rect [6615 5468 6839 5633] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_det_size_1 /ANN pdfmark -6615(23)s -220 fnt2 4816 5180(s)m 240 fnt1 4979 5183(unit)m 5358(,)s - -[ /Rect [5465 5180 5693 5345] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_conc_12 /ANN pdfmark -5465(37)s 5056 4895(and)m 220 fnt2 5460 4892(@Space)m 240 fnt1 -6357 4895(symbol)m 7064(,)s -[ /Rect [7171 4895 7405 5057] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_spac_2 /ANN pdfmark -7171(44)s 220 fnt2 4816 4604(sup)m -240 fnt1 5222 4607(e)m 3(xample)k 6032(,)s -[ /Rect [6139 4604 6372 4771] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_exa_equa_5 /ANN pdfmark -6139(76)s -4816 4319(Symbol)m 5563(,)s -[ /Rect [5670 4319 5784 4481] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pri_defi_2 /ANN pdfmark -5670(4)s 220 fnt2 4816 4028(@SysDatabase)m -240 fnt1 6396 4031(symbol)m 7103(,)s -[ /Rect [7210 4028 7443 4195] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_data_3 /ANN pdfmark -7210(66)s 220 fnt2 -4816 3740(@SysIncludeGr)m 2(aphicRepeated)k 240 fnt1 7877 3743(symbol)m 8584(,)s - -[ /Rect [8691 3740 8926 3905] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_incr_2 /ANN pdfmark -8691(70)s 220 fnt2 4816 3452(@SysIncludeGr)m 2(aphic)k 240 fnt1 -6933 3455(symbol)m 7640(,)s -[ /Rect [7747 3452 7982 3617] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_incg_2 /ANN pdfmark -7747(70)s 220 fnt2 4816 3164(@SysInclude)m -240 fnt1 6164 3167(symbol)m 6871(,)s -[ /Rect [6978 3166 7193 3329] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_incl_2 /ANN pdfmark -6978(71)s 220 fnt2 -4816 2876(@SysPrependGr)m 2(aphic)k 240 fnt1 7055 2879(symbol)m 7762(,)s - -[ /Rect [7869 2878 8084 3041] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_prep_2 /ANN pdfmark -7869(71)s 4816 2303(T)m 19(ables)k 5432(,)s -[ /Rect [5539 2303 5653 2465] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pri_obje_5 /ANN pdfmark -5539(2)s -4816 2015(T)m 19(ab)k 4(ulation)k 5886(g)s 1(ap)k +[ /Rect [8091 8348 8315 8515] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_head_4 /ANN pdfmark +8091(63)s +220 fnt2 4816 8060(@SetT)m 26(e)k 6(xture)k 240 fnt1 +6132 8063(symbol)m 6839(,)s +[ /Rect [6946 8062 7174 8225] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_text_1 /ANN pdfmark +6946(47)s 4816 7775(Size)m 5283(of)s +5554(an)s 5837(object)s 6428(,)s +[ /Rect [6535 7775 6769 7937] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_det_size_4 /ANN pdfmark +6535(24)s 4816 7487(small)m +5388(capitals)s 6115(,)s +[ /Rect [6222 7487 6437 7649] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_font_7 /ANN pdfmark +6222(41)s 4816 7199(Sorted)m 5498(g)s 1(alle)k 3(ys)k +6169(,)s +[ /Rect [6276 7196 6510 7361] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_det_sort_1 /ANN pdfmark +6276(32)s 4816 6911(Space)m 5390(,)s +[ /Rect [5497 6908 5721 7073] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_det_lexi_10 /ANN pdfmark +5497(13)s +5056 6623(when)m 5632(signi\207cant)s 6635(,)s +[ /Rect [6742 6620 6969 6785] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_conc_34 /ANN pdfmark +6742(38)s 220 fnt2 +4816 6332(@Space)m 240 fnt1 5713 6335(symbol)m 6420(,)s +[ /Rect [6527 6335 6761 6497] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_spac_1 /ANN pdfmark +6527(44)s +220 fnt2 4816 6044(@Star)m -8(tHSpan)k 240 fnt1 6226 6047(symbol)m +6933(,)s +[ /Rect [7040 6044 7264 6212] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_span_1 /ANN pdfmark +7040(53)s 220 fnt2 4816 5756(@Star)m -8(tHVSpan)k +240 fnt1 6372 5759(symbol)m 7079(,)s +[ /Rect [7186 5756 7410 5924] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_span_3 /ANN pdfmark +7186(53)s 220 fnt2 +4816 5468(@Star)m -8(tVSpan)k 240 fnt1 6214 5471(symbol)m 6921(,)s + +[ /Rect [7028 5468 7252 5636] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_span_2 /ANN pdfmark +7028(53)s 4816 5183(Style)m 5363(of)s 5634(an)s 5917(object)s +6508(,)s +[ /Rect [6615 5180 6839 5345] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_det_size_1 /ANN pdfmark +6615(23)s 220 fnt2 4816 4892(s)m 240 fnt1 +4979 4895(unit)m 5358(,)s +[ /Rect [5465 4892 5693 5057] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_conc_12 /ANN pdfmark +5465(37)s 5056 4607(and)m 220 fnt2 +5460 4604(@Space)m 240 fnt1 6357 4607(symbol)m 7064(,)s +[ /Rect [7171 4607 7405 4769] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_spac_2 /ANN pdfmark +7171(44)s +220 fnt2 4816 4316(sup)m 240 fnt1 5222 4319(e)m 3(xample)k +6032(,)s +[ /Rect [6139 4316 6366 4481] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_exa_equa_5 /ANN pdfmark +6139(78)s 4816 4031(Symbol)m 5563(,)s +[ /Rect [5670 4031 5784 4193] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pri_defi_2 /ANN pdfmark +5670(4)s +220 fnt2 4816 3740(@SysDatabase)m 240 fnt1 6396 3743(symbol)m 7103(,)s + +[ /Rect [7210 3740 7437 3907] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_data_3 /ANN pdfmark +7210(68)s 220 fnt2 4816 3452(@SysIncludeGr)m 2(aphicRepeated)k 240 fnt1 +7877 3455(symbol)m 8584(,)s +[ /Rect [8691 3454 8925 3617] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_incr_2 /ANN pdfmark +8691(72)s 220 fnt2 4816 3164(@SysIncludeGr)m 2(aphic)k +240 fnt1 6933 3167(symbol)m 7640(,)s +[ /Rect [7747 3166 7981 3329] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_incg_2 /ANN pdfmark +7747(72)s 220 fnt2 +4816 2876(@SysInclude)m 240 fnt1 6164 2879(symbol)m 6871(,)s +[ /Rect [6978 2876 7202 3041] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_incl_2 /ANN pdfmark +6978(73)s +220 fnt2 4816 2588(@SysPrependGr)m 2(aphic)k 240 fnt1 7055 2591(symbol)m +7762(,)s +[ /Rect [7869 2588 8093 2753] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_prep_2 /ANN pdfmark +7869(73)s 4816 2015(T)m 19(ables)k 5432(,)s + +[ /Rect [5539 2015 5653 2177] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pri_obje_5 /ANN pdfmark +5539(2)s 4816 1727(T)m 19(ab)k 4(ulation)k 5886(g)s 1(ap)k 6284(mode)s 6819(,)s -[ /Rect [6926 2012 7154 2177] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_conc_29 /ANN pdfmark -6926(37)s 220 fnt2 4816 1724(@T)m 26(agged)k -240 fnt1 5805 1727(symbol)m 6512(,)s -[ /Rect [6619 1724 6843 1891] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_tagg_1 /ANN pdfmark -6619(63)s 220 fnt2 -4816 1436(@T)m 26(ag)k 240 fnt1 5439 1439(parameter)m 9(,)k +[ /Rect [6926 1724 7154 1889] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_conc_29 /ANN pdfmark +6926(37)s 220 fnt2 4816 1436(@T)m 26(agged)k +240 fnt1 5805 1439(symbol)m 6512(,)s +[ /Rect [6619 1436 6845 1604] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_tagg_1 /ANN pdfmark +6619(65)s 220 fnt2 +4816 1148(@T)m 26(ag)k 240 fnt1 5439 1151(parameter)m 9(,)k 6491(def)s 2(ault)k 7212(v)s 6(alue)k 7780(of)s 7998(,)s -[ /Rect [8105 1436 8338 1603] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_det_name_4 /ANN pdfmark -8105(16)s 4816 1151(T)m 19(ar)k 4(get)k +[ /Rect [8105 1148 8338 1315] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_det_name_4 /ANN pdfmark +8105(16)s 4816 863(T)m 19(ar)k 4(get)k 5476(of)s 5747(cross)s 6289(reference)s 7179(,)s -[ /Rect [7286 1148 7393 1313] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pri_cros_4 /ANN pdfmark +[ /Rect [7286 860 7393 1025] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pri_cros_4 /ANN pdfmark 7286(8)s -4816 863(T)m 19(ar)k 4(get)k 5476(of)s 5747(a)s +4816 575(T)m 19(ar)k 4(get)k 5476(of)s 5747(a)s 5913(g)s 1(alle)k 3(y)k 6494(,)s -[ /Rect [6601 863 6816 1025] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pri_gall_3 /ANN pdfmark +[ /Rect [6601 575 6816 737] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pri_gall_3 /ANN pdfmark 6601(11)s -5056 575(in)m 5299(detail)s 5831(,)s -[ /Rect [5938 572 6171 739] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_det_gall_2 /ANN pdfmark -5938(26)s 220 fnt2 -4816 284(@T)m 26(arget)k 240 fnt1 5703 287(symbol)m 6410(,)s - -[ /Rect [6517 284 6752 449] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_det_gall_11 /ANN pdfmark -6517(30)s +5056 287(in)m 5299(detail)s 5831(,)s +[ /Rect [5938 284 6171 451] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_det_gall_2 /ANN pdfmark +5938(26)s grestore gsave 1417 -15423 translate -240 fnt1 0 0 0 0 240 288 60 LoutGraphic +240 fnt1 +0 0 0 0 240 288 60 LoutGraphic gsave -0 LoutMargSet +1 LoutMargSet grestore grestore @@ -20510,22 +21839,22 @@ pgsave restore showpage -%%Page: 103 109 +%%Page: 110 116 %%BeginPageSetup %%PageResources: font Times-Roman -%%+ font Times-Italic %%+ font Times-Bold +%%+ font Times-Italic %%+ font Helvetica /pgsave save def %%IncludeResource: font Times-Roman /Times-Romanfnt1 vec2 /Times-Roman LoutRecode /fnt1 { /Times-Romanfnt1 LoutFont } def -%%IncludeResource: font Times-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 Times-Italic +/Times-Italicfnt6 vec2 /Times-Italic LoutRecode +/fnt6 { /Times-Italicfnt6 LoutFont } def %%IncludeResource: font Helvetica /Helveticafnt2 vec2 /Helvetica LoutRecode /fnt2 { /Helveticafnt2 LoutFont } def @@ -20533,120 +21862,124 @@ %%EndPageSetup gsave 0 0 translate -240 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic +240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -240 fnt6 1417 -1580(Inde)m 4(x)k 240 fnt5 10130 -1583(103)m -gsave +240 fnt5 1417 -1583(110)m +240 fnt6 9956 -1580(Inde)m 4(x)k gsave 1417 -15423 translate 240 fnt1 9066 13412 0 13412 240 288 60 LoutGraphic gsave -1 LoutMargSet +0 LoutMargSet grestore -0 13254(T)m 96 13206(E)m 203 13254(X)m 240 12966(h)m 1(yphenation)k +220 fnt2 +0 13246(@T)m 26(arget)k 240 fnt1 887 13249(symbol)m 1594(,)s + +[ /Rect [1701 13246 1936 13411] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_det_gall_11 /ANN pdfmark +1701(30)s 0 12961(T)m 96 12913(E)m 203 12961(X)m 240 12673(h)m 1(yphenation)k 1427(,)s -[ /Rect [1534 12961 1765 13128] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_conc_38 /ANN pdfmark -1534(39)s 240 12678(optimal)m 1025(paragraph)s 2038(breaking)s +[ /Rect [1534 12668 1765 12835] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_conc_38 /ANN pdfmark +1534(39)s 240 12385(optimal)m 1025(paragraph)s 2038(breaking)s 2875(,)s -[ /Rect [2982 12673 3213 12840] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_conc_36 /ANN pdfmark -2982(39)s 0 12390(T)m 16(e)k 3(xtual)k +[ /Rect [2982 12380 3213 12547] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_conc_36 /ANN pdfmark +2982(39)s 0 12097(T)m 16(e)k 3(xtual)k 766(unit)s 1145(,)s -[ /Rect [1252 12387 1476 12552] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_det_lexi_1 /ANN pdfmark -1252(13)s 220 fnt2 0 12099(t)m -240 fnt1 117 12102(g)m 1(ap)k 515(mode)s 1050(,)s - -[ /Rect [1157 12099 1385 12264] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_conc_30 /ANN pdfmark -1157(37)s 220 fnt2 0 11523(@Under)m -3(line)k 240 fnt1 -1215 11526(symbol)m 1922(,)s -[ /Rect [2029 11523 2253 11688] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_unde_1 /ANN pdfmark -2029(73)s 0 11238(Underscore)m 1158(character)s +[ /Rect [1252 12094 1476 12259] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_det_lexi_1 /ANN pdfmark +1252(13)s 220 fnt2 0 11806(t)m +240 fnt1 117 11809(g)m 1(ap)k 515(mode)s 1050(,)s + +[ /Rect [1157 11806 1385 11971] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_conc_30 /ANN pdfmark +1157(37)s 220 fnt2 0 11230(@Under)m -3(line)k 240 fnt1 +1215 11233(symbol)m 1922(,)s +[ /Rect [2029 11230 2262 11397] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_unde_1 /ANN pdfmark +2029(76)s 0 10945(Underscore)m 1158(character)s 2039(,)s -[ /Rect [2146 11235 2370 11400] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_det_lexi_7 /ANN pdfmark -2146(13)s 220 fnt2 0 10947(@Use)m 240 fnt1 -665 10950(symbol)m 1372(,)s -[ /Rect [1479 10947 1713 11114] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_open_2 /ANN pdfmark -1479(64)s 220 fnt2 0 10371(@V)m 17(Adjust)k -240 fnt1 1017 10374(symbol)m 1724(,)s -[ /Rect [1831 10371 2066 10539] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_hadj_3 /ANN pdfmark -1831(50)s 220 fnt2 -0 10083(@VContr)m 2(act)k 240 fnt1 1252 10086(symbol)m 1959(,)s - -[ /Rect [2066 10083 2301 10251] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_hcon_2 /ANN pdfmark -2066(50)s 220 fnt2 0 9795(@VCo)m 3(v)k 5(er)k -240 fnt1 1006 9798(symbol)m 1713(,)s -[ /Rect [1820 9795 2035 9963] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_cove_2 /ANN pdfmark -1820(51)s 220 fnt2 -0 9507(@V)m 17(erbatim)k 240 fnt1 1129 9510(symbol)m 1836(,)s +[ /Rect [2146 10942 2370 11107] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_det_lexi_7 /ANN pdfmark +2146(13)s 220 fnt2 0 10654(@Use)m 240 fnt1 +665 10657(symbol)m 1372(,)s +[ /Rect [1479 10654 1705 10822] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_open_2 /ANN pdfmark +1479(65)s 220 fnt2 0 10078(@V)m 17(Adjust)k +240 fnt1 1017 10081(symbol)m 1724(,)s +[ /Rect [1831 10078 2046 10246] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_hadj_3 /ANN pdfmark +1831(51)s 220 fnt2 +0 9790(@VContr)m 2(act)k 240 fnt1 1252 9793(symbol)m 1959(,)s + +[ /Rect [2066 9790 2281 9958] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_hcon_2 /ANN pdfmark +2066(51)s 220 fnt2 0 9502(@VCo)m 3(v)k 5(er)k +240 fnt1 1006 9505(symbol)m 1713(,)s +[ /Rect [1820 9502 2054 9670] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_cove_2 /ANN pdfmark +1820(52)s 220 fnt2 +0 9214(@V)m 17(erbatim)k 240 fnt1 1129 9217(symbol)m 1836(,)s -[ /Rect [1943 9507 2167 9672] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_verb_1 /ANN pdfmark -1943(73)s 0 9222(V)m 26(ertical)k 797(concatenation)s 2129(,)s +[ /Rect [1943 9214 2169 9382] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_verb_1 /ANN pdfmark +1943(75)s 0 8929(V)m 26(ertical)k 797(concatenation)s 2129(,)s -[ /Rect [2236 9219 2469 9386] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_conc_2 /ANN pdfmark -2236(36)s 220 fnt2 0 8931(@VExpand)m 240 fnt1 1161 8934(symbol)m +[ /Rect [2236 8926 2469 9093] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_conc_2 /ANN pdfmark +2236(36)s 220 fnt2 0 8638(@VExpand)m 240 fnt1 1161 8641(symbol)m 1868(,)s -[ /Rect [1975 8929 2206 9096] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_hexp_2 /ANN pdfmark -1975(49)s 220 fnt2 0 8643(@VLimited)m 240 fnt1 -1123 8646(symbol)m 1830(,)s -[ /Rect [1937 8643 2172 8811] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_hlim_2 /ANN pdfmark -1937(50)s 220 fnt2 0 8355(@VScale)m -240 fnt1 969 8358(symbol)m 1676(,)s -[ /Rect [1783 8355 2018 8523] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_hsca_2 /ANN pdfmark -1783(50)s 220 fnt2 -0 8067(@VShift)m 240 fnt1 863 8070(symbol)m 1570(,)s -[ /Rect [1677 8065 1908 8232] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_hshi_2 /ANN pdfmark -1677(49)s -220 fnt2 0 7779(@VSpan)m 240 fnt1 927 7782(symbol)m 1634(,)s +[ /Rect [1975 8638 2190 8806] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_hexp_2 /ANN pdfmark +1975(51)s 220 fnt2 0 8350(@VLimited)m 240 fnt1 +1123 8353(symbol)m 1830(,)s +[ /Rect [1937 8350 2152 8518] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_hlim_2 /ANN pdfmark +1937(51)s 220 fnt2 0 8062(@VScale)m +240 fnt1 969 8065(symbol)m 1676(,)s +[ /Rect [1783 8062 2017 8230] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_hsca_2 /ANN pdfmark +1783(52)s 220 fnt2 +0 7774(@VShift)m 240 fnt1 863 7777(symbol)m 1570(,)s +[ /Rect [1677 7774 1912 7942] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_hshi_2 /ANN pdfmark +1677(50)s +220 fnt2 0 7486(@VSpan)m 240 fnt1 927 7489(symbol)m 1634(,)s -[ /Rect [1741 7779 1975 7947] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_span_5 /ANN pdfmark -1741(52)s 220 fnt2 0 7491(v)m 240 fnt1 169 7494(unit)m +[ /Rect [1741 7486 1965 7654] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_span_5 /ANN pdfmark +1741(53)s 220 fnt2 0 7198(v)m 240 fnt1 169 7201(unit)m 548(,)s -[ /Rect [655 7491 883 7656] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_conc_13 /ANN pdfmark -655(37)s 240 7206(ef)m 6(fect)k 836(on)s +[ /Rect [655 7198 883 7363] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_conc_13 /ANN pdfmark +655(37)s 240 6913(ef)m 6(fect)k 836(on)s 1133(paragraph)s 2146(breaking)s 2983(,)s -[ /Rect [3090 7203 3314 7368] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_brea_10 /ANN pdfmark -3090(43)s 0 6630(White)m +[ /Rect [3090 6910 3314 7075] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_brea_10 /ANN pdfmark +3090(43)s 0 6337(White)m 640(space)s 1174(,)s -[ /Rect [1281 6627 1505 6792] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_det_lexi_8 /ANN pdfmark -1281(13)s 240 6342(when)m 816(signi\207cant)s +[ /Rect [1281 6334 1505 6499] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_det_lexi_8 /ANN pdfmark +1281(13)s 240 6049(when)m 816(signi\207cant)s 1819(,)s -[ /Rect [1926 6339 2153 6504] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_conc_33 /ANN pdfmark -1926(38)s 220 fnt2 0 6051(@Wide)m 240 fnt1 -774 6054(symbol)m 1481(,)s -[ /Rect [1588 6051 1815 6216] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_wide_1 /ANN pdfmark -1588(48)s 0 5766(W)m 9(idth)k +[ /Rect [1926 6046 2153 6211] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_conc_33 /ANN pdfmark +1926(38)s 220 fnt2 0 5758(@Wide)m 240 fnt1 +774 5761(symbol)m 1481(,)s +[ /Rect [1588 5758 1823 5926] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_wide_1 /ANN pdfmark +1588(50)s 0 5473(W)m 9(idth)k 646(of)s 917(an)s 1200(object)s 1791(,)s -[ /Rect [1898 5766 2132 5928] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_det_size_2 /ANN pdfmark +[ /Rect [1898 5473 2132 5635] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_det_size_2 /ANN pdfmark 1898(24)s -0 5478(W)m 19(ord)k 531(,)s -[ /Rect [638 5478 872 5640] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_det_lexi_18 /ANN pdfmark +0 5185(W)m 19(ord)k 531(,)s +[ /Rect [638 5185 872 5347] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_det_lexi_18 /ANN pdfmark 638(14)s 220 fnt2 -0 5187(w)m 240 fnt1 216 5190(unit)m 595(,)s -[ /Rect [702 5187 930 5352] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_conc_14 /ANN pdfmark +0 4894(w)m 240 fnt1 216 4897(unit)m 595(,)s +[ /Rect [702 4894 930 5059] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_conc_14 /ANN pdfmark 702(37)s -220 fnt2 0 4611(x)m 240 fnt1 168 4614(g)m 1(ap)k +220 fnt2 0 4318(x)m 240 fnt1 168 4321(g)m 1(ap)k 566(mode)s 1101(,)s -[ /Rect [1208 4611 1436 4776] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_conc_24 /ANN pdfmark -1208(37)s 220 fnt2 0 4035(@Y)m 4(ield)k -240 fnt1 753 4038(symbol)m 1460(,)s -[ /Rect [1567 4035 1794 4203] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_case_2 /ANN pdfmark -1567(58)s 220 fnt2 -0 3747(@YUnit)m 240 fnt1 814 3750(symbol)m 1521(,)s -[ /Rect [1628 3747 1854 3915] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_yuni_1 /ANN pdfmark +[ /Rect [1208 4318 1436 4483] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_conc_24 /ANN pdfmark +1208(37)s 220 fnt2 0 3742(@Y)m 4(ield)k +240 fnt1 753 3745(symbol)m 1460(,)s +[ /Rect [1567 3740 1798 3910] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_case_2 /ANN pdfmark +1567(59)s 220 fnt2 +0 3454(@YUnit)m 240 fnt1 814 3457(symbol)m 1521(,)s +[ /Rect [1628 3454 1854 3622] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_yuni_1 /ANN pdfmark 1628(45)s -220 fnt2 0 3171(@ZUnit)m 240 fnt1 802 3174(symbol)m 1509(,)s +220 fnt2 0 2878(@ZUnit)m 240 fnt1 802 2881(symbol)m 1509(,)s -[ /Rect [1616 3171 1842 3339] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT16_4080_pre_yuni_2 /ANN pdfmark +[ /Rect [1616 2878 1842 3046] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4213_pre_yuni_2 /ANN pdfmark 1616(45)s grestore gsave 1417 -15423 translate 240 fnt1 0 0 0 0 240 288 60 LoutGraphic gsave -1 LoutMargSet +0 LoutMargSet grestore grestore @@ -20663,13 +21996,15 @@ %%+ font Times-Bold %%+ font Times-Italic %%+ font Times-BoldItalic +%%+ font Times-Italic %%+ font Helvetica %%+ font Helvetica-Oblique %%+ font Symbol +%%+ font Courier %%DocumentSuppliedResources: procset LoutStartUp %%+ procset LoutTabPrependGraphic %%+ procset LoutFigPrependGraphic %%+ procset LoutBasicSetup %%+ encoding vec2 -%%Pages: 109 +%%Pages: 116 %%EOF diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/expert/pre lout-3.27/doc/expert/pre --- lout-3.26/doc/expert/pre Wed Sep 18 12:22:37 2002 +++ lout-3.27/doc/expert/pre Wed Oct 30 21:09:20 2002 @@ -10,6 +10,7 @@ @Include { pre_spac } @Include { pre_yuni } @Include { pre_colo } +@Include { pre_text } @Include { pre_outl } @Include { pre_lang } @Include { pre_oner } diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/expert/pre_colo lout-3.27/doc/expert/pre_colo --- lout-3.26/doc/expert/pre_colo Wed Sep 18 12:22:37 2002 +++ lout-3.27/doc/expert/pre_colo Wed Oct 30 21:32:47 2002 @@ -60,4 +60,34 @@ } Colouring an object white is useful for producing an empty space whose size is that of some object. +@PP +Since the introduction of textures to Lout in Version 3.27, direct +use of PostScript colour setting operations such as {@Code setrgbcolor} +is deprecated. Instead, Lout offers its own versions of the +standard PostScript colour setting operations: +@ID @OneRow @Tbl + aformat { @Cell A | @Cell B } + bformat { @Cell @Code A | @Cell @Code B } +{ +@Rowa + A { If you want this } + B { You should rather write this } + f { Italic } + rb { yes } +@Rowb + A { num setgray } + B { num LoutSetGray } +@Rowb + A { num num num setrgbcolor } + B { num num num LoutSetRGBColor } +@Rowb + A { num num num sethsbcolor } + B { num num num LoutSetHSBColor } +@Rowb + A { num num num setcmykcolor } + B { num num num LoutSetCMYKColor } + rb { yes } +} +The Lout versions are equivalent to the PostScript ones but without +the unwanted effect of causing the current texture to be forgotten. @End @Section diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/expert/pre_head lout-3.27/doc/expert/pre_head --- lout-3.26/doc/expert/pre_head Wed Sep 18 12:22:37 2002 +++ lout-3.27/doc/expert/pre_head Sun Nov 17 12:12:15 2002 @@ -110,4 +110,15 @@ All four symbols yield the value @@Null where they appear. If they do not occupy entire components of their galley, they are silently ignored. +@PP +Owing to limitations in the way header components are implemented, the +following object types are not allowed inside them, and Basser Lout will +complain and quit if it finds any of them: galleys, receptive or +recursive symbols, cross references, @@PageLabel, @@HExpand, @@VExpand, +@@HCover, @@VCover, and @@Scale when it has an empty left parameter. +In addition, if more than three copies of the same running header are +printed on the same page, their horizontal positions will become +confused, probably resulting in the apparent disappearance of all but the +last three copies. (The magic number 3 can be increased by recompiling +the Lout source with the @F MAX_HCOPIES constant increased.) @End @Section diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/expert/pre_incl lout-3.27/doc/expert/pre_incl --- lout-3.26/doc/expert/pre_incl Wed Sep 18 12:22:37 2002 +++ lout-3.27/doc/expert/pre_incl Wed Oct 30 20:57:45 2002 @@ -17,4 +17,27 @@ directory, then in a sequence of standard places which are not necessarily the same places that databases are searched for. @@SysInclude searches the standard places only. +@PP +From Version 3.27, a special behaviour has been instituted when an +attempt is made to @@Include or @@SysInclude the same file twice. +If a second or subsequent attempt occurs after the end of definitions, +@@Use clauses, and @@Database clauses (i.e. if it occurs within the +content of the document), it will go ahead, thus allowing the +repeated inclusion of files containing objects -- not necessarily +recommended, but certainly one way of repeating information. But +if a second or subsequent attempt occurs within the region of +definitions, @@Use clauses, and @@Database clauses, then that attempt +will be silently ignored. +@PP +This behaviour is useful for situations where two packages +depend on a third, caled, say, {@Code C }. We can then place +@ID @Code "@SysInclude { C }" +at the start of both packages. If neither package is included, then +{@Code C} won't be either. But if one or both is included, then +{@Code C} will be included just once at the start of the first. +Any pattern of acyclic dependencies between packages can be +expressed with this mechanism, just by including every package +that a given package depends on at the start of the file containing +that package. Cyclic dependencies are beyond Lout's one-pass +comprehension anyway. @End @Section diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/expert/pre_link lout-3.27/doc/expert/pre_link --- lout-3.26/doc/expert/pre_link Wed Oct 16 06:50:46 2002 +++ lout-3.27/doc/expert/pre_link Sun Nov 17 20:50:25 2002 @@ -64,4 +64,22 @@ be the result, but which one is undefined. Notice that melding cannot produce an undefined link, since the worst it can do is delete a @@LinkSource. +@PP +Practically speaking, the right parameters of @@LinkSource +and @@URLLink need to be non-null, non-empty objects, since +otherwise there is nothing visible for the user to click on. +(This condition is not checked or enforced by Lout.) However, +the right parameter of @@LinkDest could reasonably be empty +or null. Usually, when @@Null lies inside a non-concatenation +object, for example +@ID "@OneCol @Null" +the effect of the @@Null is lost -- the result in this example +is equivalent to an empty object. However, when the right +parameter of @@LinkDest is @@Null: +@ID "@LinkDest @Null" +or when it is some object treated like @@Null by Lout (e.g. +a @@Tagged symbol), then the @@LinkDest itself has the effect +on surrounding concatentation operators that @@Null has, +allowing it to be made effectively invisible in the printed +document, though still really there. @End @Section diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/expert/pre_prep lout-3.27/doc/expert/pre_prep --- lout-3.26/doc/expert/pre_prep Wed Sep 18 12:22:37 2002 +++ lout-3.27/doc/expert/pre_prep Mon Oct 28 17:19:37 2002 @@ -21,4 +21,10 @@ start like this, rather than with every diagram. @@PrependGraphic and @@SysPrependGraphic search for the file in the same places as @@Include and @@SysInclude respectively. +@PP +If the same file name appears in two @@PrependGraphic or +@@SysPrependGraphic symbols, the second occurrence is +silently ignored. This allows several packages to share +PostScript resources: each includes the appropriate prepend file, +but in the end only one copy ot it is printed to Lout's output. @End @Section diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/expert/pre_rump lout-3.27/doc/expert/pre_rump --- lout-3.26/doc/expert/pre_rump Wed Oct 16 07:25:35 2002 +++ lout-3.27/doc/expert/pre_rump Wed Oct 23 17:18:57 2002 @@ -51,7 +51,7 @@ equality testing, since otherwise there would be problems in the appearance of melded clickable index entries. @PP -Style changing operations (@@Font, @@Colour etc.) are not considered +Style changing operations (@@Font, @@SetColour etc.) are not considered in equality testing, since these have been processed and deleted by the time that the tests are done. Also, Lout tries hard to get rid of redundant braces around concatenation objects, which is why @@ -68,7 +68,7 @@ would be treated internally as one word, whereas @ID @Code "{Hello}{yellow @Colour world}" would be treated as two adjacent words. Thus, although @@Font, -@@Colour, and the other style operators are ignored in equality +@@SetColour, and the other style operators are ignored in equality testing, they may affect the structure of the objects they lie within. @PP diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/expert/pre_text lout-3.27/doc/expert/pre_text --- lout-3.26/doc/expert/pre_text Thu Jan 1 10:00:00 1970 +++ lout-3.27/doc/expert/pre_text Wed Oct 30 22:44:37 2002 @@ -0,0 +1,92 @@ +@Section + @Title { "@SetTexture" } + @Tag { texture } +@Begin +@PP +The @@SetTexture symbol +settexture.sym @Index { @@SetTexture symbol } +returns its right parameter in the texture specified by its left +parameter. A texture is a pattern used when filling areas to +get a texture rather than solid color. +@PP +In the PostScript world, textures are called patterns, and the +relevant PostScript commands use this terminology. The author +has preferred the term `texture' because it is more precise: +a pattern could be a pattern for anything. +@PP +The @@SetTexture command accepts the special value {@Code "nochange"} +for the left parameter. This value causes the right parameter to have +the texture it would have had without the @@SetTexture command. An +empty left parameter also has this effect. +@PP +Another special value is {@Code "LoutTextureSolid"}, which means no +texture at all, just solid colour. It would be useful to change +back to solid colour within an enclosing textured region. It is also +the initial texture; thus there is no need to ensure that the root +galley or each of its components is enclosed in a @@SetTexture symbol. +@PP +The form of the left parameter is implementation-dependent; in Basser +Lout it must be an object whose value is a sequence of words comprising +PostScript for setting a texture, up to and including the PostScript +@Code "setpattern" command (or equivalent) which installs the texture +into the graphics state. Lout makes no attempt to understand textures, +it simply prints the PostScript commands when appropriate. Consult +@Cite { $adobe1990ps } for information about PostScript patterns. +You'll need to do that in order to make sense of the rest of this section. +@PP +Since building even a simple texture takes a lot of PostScript +and is quite error-prone, Lout defines two symbols in the PostScript +prologue called @Code "LoutMakeTexture" and @Code "LoutSetTexture" +that you can use to make and set a texture, like this: +@ID @Code @Verbatim { +{ "1 1 1 0 dg 0 pt 0 pt" + "2 [0 0 2 pt 3 pt] 2 pt 3 pt { ... }" + "LoutMakeTexture LoutSetTexture" +} @SetTexture ... +} +We'll explain both symbols in detail in a moment, but just briefly, +@Code "LoutMakeTexture" makes a texture, leaving a pattern dictionary +as returned by @Code "makepattern" on the execution stack, and +@Code "LoutSetTexture" installs this texture into the current graphics +state, like @Code "setpattern" but without any mention of colour. +@PP +@Code "LoutMakeTexture" is just a convenience definition that +constructs a pattern matrix and dictionary, populating them with the +stack elements to its left, then calls {@Code makepattern}. You don't +have to use it if you don't want to. The above example of +@Code "LoutMakeTexture" sets the pattern matrix and dictionary as follows. +@PP +The first number is a scale factor, and the second and third are horizontal +and vertical scale factors. The fourth ({@Code "0 dg"}) is an angle of +rotation. The fifth and sixth are horizontal and vertical shifts. These +six numbers determine the pattern transformation matrix passed to +{@Code makepattern}. +@PP +The remaining elements go into the pattern dictionary. @Code "PaintType" +is set to the first of them, or the seventh item overall (2 in our example, +denoting an uncoloured pattern, which will usually be the best choice; +the pattern will be painted in the current colour), @Code "BBox" is set +to the eighth item, here {@Code "[0 0 2 pt 3 pt]"}, @Code "XStep" is set +to the ninth item, here {@Code "2 pt"}, @Code "YStep" is set to the tenth +item, here {@Code "3 pt"}, and @Code "PaintProc" is set to the eleventh +and last item, which should be an executable array as shown. All non-zero +lengths must be in absolute units, that is, followed by {@Code in}, {@Code cm}, +{@Code pt}, or {@Code em}, otherwise the results will be unpredictable. +@PP +@Code "LoutSetTexture" installs the given texture into the +graphics state, preserving the current colour. You must use +@Code "LoutSetTexture" and you must not use {@Code setcolorspace}, +@Code {setcolor}, and {@Code setpattern}, because Lout considers +colour and texture to be independent of each other, and these PostScript +commands don't. +@PP +Another advantage of @Code "LoutMakeTexture" and @Code "LoutSetTexture" +is that they behave sensibly on Level 1 PostScript interpreters, +which do not have patterns. Rather than failing altogether, these +commands will make sure everything appears in solid colour. Be +aware, though, that interpreters exist (e.g @Code gv ca. 1997) which +appear to be Level 2 but actually leave textured areas blank. +@PP +For information on how these symbols are implemented, consult +Appendix {@NumberOf tex}. +@End @Section diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/expert/preface lout-3.27/doc/expert/preface --- lout-3.26/doc/expert/preface Tue Oct 8 16:14:21 2002 +++ lout-3.27/doc/expert/preface Fri Nov 22 08:58:24 2002 @@ -21,7 +21,7 @@ September 1994 @Cite { $kingston1995lout.program } and developed continuously since then. This manual was rendered into PostScript postscript @Index { PostScript } -by Version 3.26 of the Basser Lout interpreter, using the symbols +by Version 3.27 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 -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/expert/tex lout-3.27/doc/expert/tex --- lout-3.26/doc/expert/tex Thu Jan 1 10:00:00 1970 +++ lout-3.27/doc/expert/tex Wed Oct 30 22:35:48 2002 @@ -0,0 +1,383 @@ +@Appendix + @Title { Implementation of Textures } + @Tag { tex } +@Begin +The following notes detail how PostScript patterns have been +used to produce textures. See the PostScript Language +Reference Manual, second edition (PLRM), especially Section 4.9. +@PP +PostScript patterns are implemented as color spaces, whereas +from a logical point of view they are really separate entities +in the graphics state, independent of color (except that a +colored texture overrides any current color while it is in +effect). To ensure that Lout's @@SetTexture and @@SetColour +symbols have this desired independence of each other, the +following operators are defined in the Lout prologue: +@CD @Tbl + mv { 0.5vx } + bfont { Italic } + bformat { @StartHSpan @Cell i { ctr } A | @HSpan | @HSpan | @Cell D } + aformat { @Cell i { right } @Code A | @Cell @Code B | + @Cell mr { 1c } @Code "-" | @Cell D } +{ +@Rowb + ma { 0i } + A { Lout-defined operator } + D { What it replaces } + rb { yes } +@Rowa + A { num } + B { LoutSetGray } + D { setgray } +@Rowa + A { num num num } + B { LoutSetRGBColor } + D { setrgbcolor } +@Rowa + A { num num num } + B { LoutSetHSBColor } + D { sethsbcolor } +@Rowa + A { num num num num } + B { LoutSetCMYKColor } + D { setcmykcolor } +@Rowa + A { p } + B { LoutSetTexture } + D { setpattern } + rb { yes } + mb { 0i } +} +These have similar signatures to the corresponding PostScript +operators shown, and the idea is to use the Lout-defined +versions where you would normally use the PostScript ones. +The first four set the color without disturbing any current +texture; the last sets the texture without disturbing +any current color. Here @Code { p } may be the PostScript +{@Code null} object, meaning no texture i.e. normal filling, +or else it must be an instantiated pattern dictionary, as +returned by @Code { makepattern }. +@PP +There are three key data types used by this code: +@BulletList + +@LI { A colorspace, denoted @Code { cs }, is a PostScript +colorspace array and may have one of the following values: +@DP @RID @Tbl + mv { 0.6vx } + aformat { @Cell @Code A | @Cell B } +{ +@Rowa + ma { 0i } + A { "[ /DeviceGray ]" } + B { The greyscale colorspace } +@Rowa + A { "[ /DeviceRGB ]" } + B { The RGB colorspace } +@Rowa + A { "[ /DeviceCMYK ]" } + B { The CMYK colorspace } +@Rowa + A { "[ /Pattern ]" } + B { A colored pattern } +@Rowa + mb { 0i } + A { "[ /Pattern /name ]" } + B { An uncolored pattern; @Code "/name" may be +{@Code "/DeviceGray"}, {@Code "/DeviceRGB"}, or +{@Code "/DeviceCMYK"} } +} +} + +@LI { A color, denoted c, is an array containing a PostScript +non-pattern color and thus may have one of the following values: +@ID @Tbl + mv { 0.6vx } + aformat { @Cell @Code A | @Cell B } +{ +@Rowa + ma { 0i } + A { "[ grey ]" } + B { A @Code "/DeviceGray" color } +@Rowa + A { "[ red green blue ]" } + B { A @Code "/DeviceRGB" color } +@Rowa + A { "[ c m y k ]" } + B { A @Code "/DeviceCMYK" color } + mb { 0i } +} +We enclose colors in an array to make it easy for us to +deal with their varying length. The array has to be unpacked +with @Code "aload" before calling {@Code setcolor}. +} + +@LI { A pattern, denoted {@Code "p"}. For us, a pattern is +either the PostScript null object, meaning to fill with solid +color, or else it is a dictionary as returned by +{@Code makepattern}. When such a dictionary is installed in +the current graphics state, this code guarantees that it will +contain two extra entries: +@ID @Tbl + mv { 0.6vx } + aformat { @Cell @Code A | @Cell B } +{ +@Rowa + ma { 0i } + A { "/UnderlyingColorSpace" } + B { A @Code cs as defined above } +@Rowa + A { "/UnderlyingColor" } + B { A @Code c as defined above } + mb { 0i } +} +We need these extra entries to make color independent of +texture: without them we would lose the current color when +we set a texture. Because of these variables we can't share +pattern dictionaries among graphics states. We must copy them. +} + +@EndList +This representation obeys the following invariant: +@BulletList + +@LI { +All components of the PostScript graphics state related to +pattern and color have defined values (e.g. there is never a +situation where we set color space but not color). +} + +@LI { +If the PostScript graphics state contains a @Code "/Pattern" +colorspace, the pattern dictionary stored in the state has +@Code "/UnderlyingColorSpace" and @Code "/UnderlyingColor" +entries of types @Code cs and {@Code c}. +} + +@LI { +If the graphics state contains an uncolored @Code "/Pattern" +colorspace, then the @Code "/UnderlyingColorSpace" and +@Code "/UnderlyingColor" entries of the pattern dictionary +stored in the state agree with the underlying color space +and color stored in the graphics state. +} + +@EndList +And it has the following abstraction function: +@BulletList + +@LI { +If the graphics state colorspace is {@Code "/Pattern"}, then +the abstract current texture is the pattern dictionary stored +in the graphics state color. If the graphics state colorspace +is not {@Code "/Pattern"}, then the abstract current texture +is {@Code null}. +} + +@LI { +If the graphics state colorspace is {@Code "/Pattern"}, then the +abstract colorspace and color are the values of +@Code "/UnderlyingColorSpace" and @Code "/UnderlyingColor" +in the pattern dictionary stored in the graphics state color. +If the graphics state colorspace is not {@Code "/Pattern"}, +then the abstract current colorspace and color are as returned +by @Code "currentcolorspace" and {@Code "[ currentcolor ]"}. +} + +@EndList +The following functions are private helpers for the public functions: +@IndentedList + +@LI @OneRow -2px @Break @F @Verbatim @Begin +% Current pattern (may be null): - LoutCurrentP p +/LoutCurrentP +{ %% - + currentcolorspace %% [ /name etc ] + 0 get /Pattern eq %% bool + { %% - (have pattern) + [ currentcolor ] %% [ comp0 ... compn p ] + dup length 1 sub get %% p + } + { %% - (no pattern) + null %% null + } ifelse %% p +} def +@End @Verbatim + +@LI @OneRow -2px @Break @F @Verbatim @Begin +% Current color and color space: - LoutCurrentCCS c cs +/LoutCurrentCCS +{ + LoutCurrentP dup null eq %% p bool + { %% null + pop [ currentcolor ] %% c + currentcolorspace %% c cs + } + { %% p + dup %% p p + /UnderlyingColor get exch %% c p + /UnderlyingColorSpace get %% c cs + } ifelse %% c cs +} def +@End @Verbatim + +@LI @OneRow -2px @Break @F @Verbatim @Begin +% Make c, cs, and p current: c cs p LoutSetCCSP - +/LoutSetCCSP +{ %% c cs p + dup null eq %% c cs p bool + { %% c cs p (null pattern) + pop setcolorspace %% c + aload pop setcolor %% - + } + { %% c cs p (non-null pattern) + % copy pattern dictionary + 12 dict copy %% c cs p + + % record cs and c in p + dup /UnderlyingColorSpace %% c cs p p /UCS + 3 index put %% c cs p + dup /UnderlyingColor %% c cs p p /UC + 4 index put %% c cs p + + % do setcolorspace and setcolor + dup /PaintType get 1 eq %% c cs p bool + { %% c cs p (colored pattern) + [/Pattern] setcolorspace %% c cs p + setcolor %% c cs + pop pop %% - + } + { %% c cs p (uncolored pattern) + [ /Pattern %% c cs p [ /Pattern + 4 -1 roll %% c p [ /Pattern cs + ] setcolorspace %% c p + exch aload length 1 add %% p comp1 ... compm m+1 + -1 roll %% comp1 ... compm p + setcolor %% - + } ifelse %% - + } ifelse %% - +} def +@End @Verbatim + +@EndList +With the helper functions it's now easy to derive the colour and +texture setting commands that we are offering to our end users. +When setting the color we pass it, plus the current pattern, to +{@Code "LoutSetCCSP"}; when setting the pattern we pass it, plus +the current color, to {@Code "LoutSetCCSP"}. Note that there is +no {@Code "/DeviceHSB"}: @Code "hsb" is a variant of {@Code "rgb"}. +@IndentedList + +@LI @OneRow -2px @Break @F @Verbatim @Begin +% num LoutSetGray - +/LoutSetGray +{ + [ 2 1 roll ] %% c + [ /DeviceGray ] %% c cs + LoutCurrentP %% c cs p + LoutSetCCSP %% - +} def +@End @Verbatim + +@LI @OneRow -2px @Break @F @Verbatim @Begin +% r g b LoutSetRGBColor - +/LoutSetRGBColor +{ %% r g b + [ 4 1 roll ] %% c + [ /DeviceRGB ] %% c cs + LoutCurrentP %% c cs p + LoutSetCCSP %% - +} def +@End @Verbatim + +@LI @OneRow -2px @Break @F @Verbatim @Begin +% h s b LoutSetHSBColor - +/LoutSetHSBColor +{ %% h s b + gsave sethsbcolor %% - + currentrgbcolor grestore %% r g b + LoutSetRGBColor %% - +} def +@End @Verbatim + +@LI @OneRow -2px @Break @F @Verbatim @Begin +% c m y k LoutSetRGBColor - +/LoutSetCMYKColor +{ + [ 5 1 roll ] %% c + [ /DeviceCMYK ] %% c cs + LoutCurrentP %% c cs p + LoutSetCCSP %% - +} def +@End @Verbatim + +@LI @OneRow -2px @Break @F @Verbatim @Begin +% p LoutSetTexture - +/LoutSetTexture +{ + LoutCurrentCCS %% p c cs + 3 -1 roll %% c cs p + LoutSetCCSP %% - +} def +@End @Verbatim + +@EndList +All we need now is some sample textures. Textures are just pattern +dictionaries as returned by {@Code "makepattern"}. Here is +a PostScript function that appears in the Lout prologue. Its +function is to simplify the production of textures. It first +takes six parameters to specify a transformation of the texture +used to build the matrix taken by {@Code makepattern}, then +five parameters that go into the pattern dictionary. +@IndentedList + +@LI @OneRow -2px @Break @F @Verbatim @Begin +% +% LoutMakeTexture p +/LoutMakeTexture +{ %% s sx sy r h v pt bb xs ys pp + 12 dict begin %% s sx sy r h v pt bb xs ys pp + /PaintProc exch def %% s sx sy r h v pt bb xs ys + /YStep exch def %% s sx sy r h v pt bb xs + /XStep exch def %% s sx sy r h v pt bb + /BBox exch def %% s sx sy r h v pt + /PaintType exch def %% s sx sy r h v + /PatternType 1 def %% s sx sy r h v + /TilingType 1 def %% s sx sy r h v + currentdict end %% s sx sy r h v p + 7 1 roll %% p s sx sy r h v + matrix translate %% p s sx sy r mat1 + 5 1 roll %% p mat1 s sx sy r + matrix rotate %% p mat1 s sx sy mat2 + 4 1 roll %% p mat1 mat2 s sx sy + matrix scale %% p mat1 mat2 s mat3 + exch dup matrix scale %% p mat1 mat2 mat3 mat4 + matrix concatmatrix %% p mat1 mat2 mat34 + matrix concatmatrix %% p mat1 mat234 + matrix concatmatrix %% p mat1234 + /makepattern where + { %% p mat123 dict + pop makepattern %% p + } + { %% p mat123 + pop pop null %% null + } ifelse %% p (may be null) +} def +@End @Verbatim + +@EndList +For examples of textures using {@Code LoutMakeTexture}, consult +the standard include file {@Code coltex}. There is only one +built-in texture, {@Code LoutTextureSolid}: +@IndentedList + +@LI @OneRow -2px @Break @F @Verbatim @Begin +/LoutTextureSolid +{ + null + LoutSetTexture +} def +@End @Verbatim + +@RawEndList +@End @Appendix diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/slides/README lout-3.27/doc/slides/README --- lout-3.26/doc/slides/README Wed Oct 16 09:04:12 2002 +++ lout-3.27/doc/slides/README Fri Nov 22 08:56:52 2002 @@ -15,4 +15,4 @@ outfile.ps is included. Jeff Kingston -16 October 2002 +22 November 2002 diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/slides/outfile.ps lout-3.27/doc/slides/outfile.ps --- lout-3.26/doc/slides/outfile.ps Wed Oct 16 09:04:20 2002 +++ lout-3.27/doc/slides/outfile.ps Fri Nov 22 09:08:52 2002 @@ -1,6 +1,6 @@ %!PS-Adobe-3.0 -%%Creator: Basser Lout Version 3.26 (October 2002) -%%CreationDate: Wed Oct 16 09:04:20 2002 +%%Creator: Basser Lout Version 3.27 (November 2002) +%%CreationDate: Fri Nov 22 09:08:51 2002 %%DocumentData: Binary %%DocumentNeededResources: (atend) %%DocumentSuppliedResources: (atend) @@ -10,7 +10,6 @@ %%Pages: (atend) %%BoundingBox: 0 0 595 842 %%EndComments - %%BeginProlog %%BeginResource: procset LoutStartUp /save_cp { currentpoint /cp_y exch def /cp_x exch def } def @@ -86,6 +85,155 @@ PreEPSF_state restore end % userdict } bind def + +% Find current texture (may be null) +% - LoutCurrentP p +/LoutCurrentP +{ + currentcolorspace + 0 get /Pattern eq + { + [ currentcolor ] + dup length 1 sub get + } + { + null + } ifelse +} def + +% Find current color and color space +% - LoutCurrentCCS c cs +/LoutCurrentCCS +{ + LoutCurrentP dup null eq + { + pop [ currentcolor ] + currentcolorspace + } + { + dup + /UnderlyingColor get + exch /UnderlyingColorSpace get + } ifelse +} def + +% Install c, cs, and (a copy of) p into graphics state +% c cs p LoutSetCCSP - +/LoutSetCCSP +{ + dup null eq + { + pop setcolorspace + aload pop setcolor + } + { + % copy pattern dictionary + 12 dict copy + + % record cs and c in p + dup /UnderlyingColorSpace 3 index + put + dup /UnderlyingColor 4 index + put + + % do setcolorspace and setcolor + dup /PaintType get 1 eq + { + [ /Pattern ] setcolorspace + setcolor + pop pop + } + { + [ /Pattern + 4 -1 roll + ] setcolorspace + exch aload length 1 add + -1 roll + setcolor + } ifelse + } ifelse +} def + +% num LoutSetGray - +/LoutSetGray +{ + [ 2 1 roll ] + [ /DeviceGray ] + LoutCurrentP + LoutSetCCSP +} def + +% r g b LoutSetRGBColor - +/LoutSetRGBColor +{ + [ 4 1 roll ] + [ /DeviceRGB ] + LoutCurrentP + LoutSetCCSP +} def + +% h s b LoutSetHSBColor - +/LoutSetHSBColor +{ + gsave sethsbcolor + currentrgbcolor grestore + LoutSetRGBColor +} def + +% c m y k LoutSetRGBColor - +/LoutSetCMYKColor +{ + [ 5 1 roll ] + [ /DeviceCMYK ] + LoutCurrentP + LoutSetCCSP +} def + +% p LoutSetTexture - +/LoutSetTexture +{ + LoutCurrentCCS + 3 -1 roll + LoutSetCCSP +} def + +% +% LoutMakeTexture p +/LoutMakeTexture +{ + 12 dict begin + /PaintProc exch def + /YStep exch def + /XStep exch def + /BBox exch def + /PaintType exch def + /PatternType 1 def + /TilingType 1 def + currentdict end + 7 1 roll + matrix translate + 5 1 roll + matrix rotate + 4 1 roll + matrix scale + exch dup matrix scale + matrix concatmatrix + matrix concatmatrix + matrix concatmatrix + /makepattern where + { + pop makepattern + } + { + pop pop null + } ifelse +} def + +/LoutTextureSolid +{ + null + LoutSetTexture +} def %%EndResource %%BeginResource: procset LoutTabPrependGraphic @@ -212,6 +360,10 @@ % PostScript @SysPrependGraphic file for @Fig Jeffrey H. Kingston % % Version 2.0 (includes CIRCUM label) January 1992 % % % +% Although Fig is now obsolete I have updated it 20 October 2002 % +% to work with textures, i.e. replacing setrgbcolor with % +% LoutSetRGBColor. % +% % % To assist in avoiding name clashes, the names of all symbols % % defined here begin with "lfig". However, this is not feasible % % with user-defined labels and some labels used by users. % @@ -358,34 +510,34 @@ } def % painting (i.e. filling): - lfigwhite - (etc.) -/lfignopaint { } def -/lfignochange { fill } def -/lfigdarkblue { 0.0 0.0 0.5 setrgbcolor fill } def -/lfigblue { 0.0 0.0 1.0 setrgbcolor fill } def -/lfiglightblue { 0.5 0.5 1.0 setrgbcolor fill } def -/lfigdarkgreen { 0.0 0.5 0.0 setrgbcolor fill } def -/lfiggreen { 0.0 1.0 0.0 setrgbcolor fill } def -/lfiglightgreen { 0.5 1.0 0.5 setrgbcolor fill } def -/lfigdarkred { 0.5 0.0 0.0 setrgbcolor fill } def -/lfigred { 1.0 0.0 0.0 setrgbcolor fill } def -/lfiglightred { 1.0 0.5 0.5 setrgbcolor fill } def -/lfigdarkcyan { 0.0 0.5 0.5 setrgbcolor fill } def -/lfigcyan { 0.0 1.0 1.0 setrgbcolor fill } def -/lfiglightcyan { 0.5 1.0 1.0 setrgbcolor fill } def -/lfigdarkmagenta { 0.5 0.0 0.5 setrgbcolor fill } def -/lfigmagenta { 1.0 0.0 1.0 setrgbcolor fill } def -/lfiglightmagenta { 1.0 0.5 1.0 setrgbcolor fill } def -/lfigdarkyellow { 0.5 0.5 0.0 setrgbcolor fill } def -/lfigyellow { 1.0 1.0 0.0 setrgbcolor fill } def -/lfiglightyellow { 1.0 1.0 0.5 setrgbcolor fill } def -/lfigdarkgray { 0.2 0.2 0.2 setrgbcolor fill } def -/lfiggray { 0.5 0.5 0.5 setrgbcolor fill } def -/lfiglightgray { 0.8 0.8 0.8 setrgbcolor fill } def -/lfigdarkgrey { 0.2 0.2 0.2 setrgbcolor fill } def -/lfiggrey { 0.5 0.5 0.5 setrgbcolor fill } def -/lfiglightgrey { 0.8 0.8 0.8 setrgbcolor fill } def -/lfigblack { 0.0 0.0 0.0 setrgbcolor fill } def -/lfigwhite { 1.0 1.0 1.0 setrgbcolor fill } def +/lfignopaint { } def +/lfignochange { fill } def +/lfigdarkblue { 0.0 0.0 0.5 LoutSetRGBColor fill } def +/lfigblue { 0.0 0.0 1.0 LoutSetRGBColor fill } def +/lfiglightblue { 0.5 0.5 1.0 LoutSetRGBColor fill } def +/lfigdarkgreen { 0.0 0.5 0.0 LoutSetRGBColor fill } def +/lfiggreen { 0.0 1.0 0.0 LoutSetRGBColor fill } def +/lfiglightgreen { 0.5 1.0 0.5 LoutSetRGBColor fill } def +/lfigdarkred { 0.5 0.0 0.0 LoutSetRGBColor fill } def +/lfigred { 1.0 0.0 0.0 LoutSetRGBColor fill } def +/lfiglightred { 1.0 0.5 0.5 LoutSetRGBColor fill } def +/lfigdarkcyan { 0.0 0.5 0.5 LoutSetRGBColor fill } def +/lfigcyan { 0.0 1.0 1.0 LoutSetRGBColor fill } def +/lfiglightcyan { 0.5 1.0 1.0 LoutSetRGBColor fill } def +/lfigdarkmagenta { 0.5 0.0 0.5 LoutSetRGBColor fill } def +/lfigmagenta { 1.0 0.0 1.0 LoutSetRGBColor fill } def +/lfiglightmagenta { 1.0 0.5 1.0 LoutSetRGBColor fill } def +/lfigdarkyellow { 0.5 0.5 0.0 LoutSetRGBColor fill } def +/lfigyellow { 1.0 1.0 0.0 LoutSetRGBColor fill } def +/lfiglightyellow { 1.0 1.0 0.5 LoutSetRGBColor fill } def +/lfigdarkgray { 0.2 0.2 0.2 LoutSetRGBColor fill } def +/lfiggray { 0.5 0.5 0.5 LoutSetRGBColor fill } def +/lfiglightgray { 0.8 0.8 0.8 LoutSetRGBColor fill } def +/lfigdarkgrey { 0.2 0.2 0.2 LoutSetRGBColor fill } def +/lfiggrey { 0.5 0.5 0.5 LoutSetRGBColor fill } def +/lfiglightgrey { 0.8 0.8 0.8 LoutSetRGBColor fill } def +/lfigblack { 0.0 0.0 0.0 LoutSetRGBColor fill } def +/lfigwhite { 1.0 1.0 1.0 LoutSetRGBColor fill } def % line caps (and joins, not currently used) /lfigbutt 0 def @@ -1386,26 +1538,49 @@ linewidth setlinewidth stroke } def +% % pre-texture versions +% % stroke a filled y histogram: - filledyhisto - +% /filledyhisto +% { +% linewidth setlinewidth +% xprev yleft trpoint exch currentlinewidth 2 div add exch yextra sub moveto +% xprev yprev trpoint exch currentlinewidth 2 div add exch lineto +% xcurr yprev trpoint exch currentlinewidth 2 div sub exch lineto +% xcurr yleft trpoint exch currentlinewidth 2 div sub exch yextra sub lineto +% closepath fill +% } def + +% % stroke a filled x histogram: - filledxhisto - +% /filledxhisto +% { +% linewidth setlinewidth +% xleft yprev trpoint currentlinewidth 2 div add exch xextra sub exch moveto +% xcurr yprev trpoint currentlinewidth 2 div add lineto +% xcurr ycurr trpoint currentlinewidth 2 div sub lineto +% xleft ycurr trpoint currentlinewidth 2 div sub exch xextra sub exch lineto +% closepath fill +% } def + % stroke a filled y histogram: - filledyhisto - /filledyhisto { linewidth setlinewidth - xprev yleft trpoint exch currentlinewidth 2 div add exch yextra sub moveto - xprev yprev trpoint exch currentlinewidth 2 div add exch lineto - xcurr yprev trpoint exch currentlinewidth 2 div sub exch lineto - xcurr yleft trpoint exch currentlinewidth 2 div sub exch yextra sub lineto - closepath fill + xprev yleft trpoint exch currentlinewidth 1.3 mul add exch yextra sub moveto + xprev yprev trpoint exch currentlinewidth 1.3 mul add exch lineto + xcurr yprev trpoint exch currentlinewidth 1.3 mul sub exch lineto + xcurr yleft trpoint exch currentlinewidth 1.3 mul sub exch yextra sub lineto + gsave texture fill grestore stroke } def % stroke a filled x histogram: - filledxhisto - /filledxhisto { linewidth setlinewidth - xleft yprev trpoint currentlinewidth 2 div add exch xextra sub exch moveto - xcurr yprev trpoint currentlinewidth 2 div add lineto - xcurr ycurr trpoint currentlinewidth 2 div sub lineto - xleft ycurr trpoint currentlinewidth 2 div sub exch xextra sub exch lineto - closepath fill + xleft yprev trpoint currentlinewidth 1.3 mul add exch xextra sub exch moveto + xcurr yprev trpoint currentlinewidth 1.3 mul add lineto + xcurr ycurr trpoint currentlinewidth 1.3 mul sub lineto + xleft ycurr trpoint currentlinewidth 1.3 mul sub exch xextra sub exch lineto + gsave texture fill grestore stroke } def @@ -1528,13 +1703,6 @@ } if } def -% % trpoint: transform (x, y) in graph space into (x', y') in print space -% % x y trpoint x' y' -% /trpoint -% { exch xtr trxmin sub trxmax trxmin sub div xwidth mul xextra add -% exch ytr trymin sub trymax trymin sub div ywidth mul yextra add -% } def - % trpoint: transform (x, y) in graph space into (x', y') in print space % x y trpoint x' y' @@ -1571,7 +1739,7 @@ % [ data ] xandy [ data ] /xandy {} def -% swapxandy: no interpolation of x or y values +% swapxandy: swap x and y values % [ data ] swapxandy [ data ] /swapxandy { dup /tmp exch def @@ -1943,7 +2111,8 @@ /rundata { alldata { gsave - dup dup dup dup + dup dup dup dup dup + 5 get /texture exch def 4 get /dopaint exch def 3 get /initrun exch def 2 get /pairs exch def @@ -1951,7 +2120,9 @@ 0 get /data exch def dopaint { data length 4 ge - { initrun + { + gsave + initrun newpath data 0 get ymin trpoint yextra sub moveto 0 2 data length 2 sub @@ -1961,7 +2132,8 @@ xcurr ycurr trpoint lineto } for data dup length 2 sub get ymin trpoint yextra sub lineto - closepath fill + closepath texture fill + grestore } if } if initrun @@ -2195,7 +2367,7 @@ gsave 0 0 translate -400 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic +400 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 400 480 100 LoutGraphic gsave LoutPageSet grestore @@ -2207,19 +2379,20 @@ grestore grestore -160 fnt1 1417 -1526(lout)m 10419(1)s gsave +160 fnt1 1417 -1526(lout)m +10419(1)s gsave 1417 -14005 translate 400 fnt1 9066 12053 0 11779 400 480 100 LoutGraphic gsave 1 LoutMargSet grestore -600 fnt2 691 11623(A)m -1250(Pr)s 6(actical)k 3667(Introduction)s 6922(to)s 7566(the)s -3956 10183(Lout)m 616 8743(Document)m 3500(F)s 18(or)k -15(matting)k -6490(System)s 400 fnt2 2882 6881(Jeffre)m 8(y)k 4180(H.)s -4656(Kingston)s 400 fnt3 1395 5779(Basser)m 2794(Dept.)s 3834(of)s -4333(Computer)s 6242(Science)s 2251 5299(The)m 3058(Univ)s 10(ersity)k -4951(of)s 5450(Sydne)s 8(y)k +600 fnt2 691 11623(A)m 1250(Pr)s 6(actical)k +3667(Introduction)s 6922(to)s 7566(the)s 3956 10183(Lout)m 616 8743(Document)m +3500(F)s 18(or)k -15(matting)k 6490(System)s 400 fnt2 +2882 6881(Jeffre)m 8(y)k 4180(H.)s 4656(Kingston)s 400 fnt3 +1395 5779(Basser)m 2794(Dept.)s 3834(of)s 4333(Computer)s 6242(Science)s +2251 5299(The)m 3058(Univ)s 10(ersity)k 4951(of)s 5450(Sydne)s 8(y)k + grestore gsave 1417 -14005 translate @@ -2256,27 +2429,28 @@ %%EndPageSetup gsave 0 0 translate -400 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic +400 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 400 480 100 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -160 fnt1 1417 -1526(lout)m 10407(2)s gsave +160 fnt1 1417 -1526(lout)m +10407(2)s gsave 1417 -14005 translate 400 fnt1 9066 12053 0 12053 400 480 100 LoutGraphic gsave 0 LoutMargSet grestore -400 fnt4 2988 11377(A)m -3363(simple)s 4565(input)s 5575(\207le)s +400 fnt4 2988 11377(A)m 3363(simple)s +4565(input)s 5575(\207le)s [ /Dest /LOUT26_224_all_1 /DEST pdfmark -360 fnt2 800 9646(@SysInclude { doc })m -800 9166(@Doc @T)m 43(e)k 10(xt @Begin)k 800 8686(Hello)m 14(, w)k 3(or)k -5(ld)k -800 8206(@End @T)m 43(e)k 10(xt)k 400 fnt4 0 6381(Ho)m 4(w)k -889(to)s 1313(f)s 10(ormat)k 2579(it)s 360 fnt2 -800 5635(lout \207lename > out.ps)m 800 5155(ghostvie)m 7(w out.ps)k 800 4675(mpr out.ps)m +360 fnt2 800 9646(@SysInclude { doc })m 800 9166(@Doc @T)m 43(e)k 10(xt @Begin)k +800 8686(Hello)m 14(, w)k 3(or)k -5(ld)k 800 8206(@End @T)m 43(e)k 10(xt)k +400 fnt4 0 6381(Ho)m 4(w)k 889(to)s 1313(f)s 10(ormat)k +2579(it)s 360 fnt2 800 5635(lout \207lename > out.ps)m 800 5155(ghostvie)m 7(w out.ps)k +800 4675(mpr out.ps)m grestore gsave 1417 -14005 translate @@ -2305,14 +2479,15 @@ %%EndPageSetup gsave 0 0 translate -400 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic +400 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 400 480 100 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -160 fnt1 1417 -1526(lout)m 10414(3)s gsave +160 fnt1 1417 -1526(lout)m +10414(3)s gsave 1417 -14005 translate 400 fnt1 9066 12052 0 12052 400 480 100 LoutGraphic gsave @@ -2363,21 +2538,22 @@ %%EndPageSetup gsave 0 0 translate -400 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic +400 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 400 480 100 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -160 fnt1 1417 -1526(lout)m 10407(4)s gsave +160 fnt1 1417 -1526(lout)m +10407(4)s gsave 1417 -14005 translate 400 fnt1 9066 12053 0 12053 400 480 100 LoutGraphic gsave 0 LoutMargSet grestore -400 fnt4 2339 11377(Headings)m -4026(and)s 4762(paragraphs)s +400 fnt4 2339 11377(Headings)m 4026(and)s +4762(paragraphs)s [ /Dest /LOUT26_224_all_3 /DEST pdfmark 360 fnt2 800 9646(@SysInclude { doc })m 800 9166(@Doc @T)m 43(e)k 10(xt @Begin)k 800 8686(@Heading { Introduction })m 800 8206(@PP)m 800 7726(The design of the Lout f)m 10(or)k -9(matting)k @@ -2420,14 +2596,15 @@ %%EndPageSetup gsave 0 0 translate -400 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic +400 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 400 480 100 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -160 fnt1 1417 -1527(lout)m 10412(5)s gsave +160 fnt1 1417 -1527(lout)m +10412(5)s gsave 1417 -14005 translate 400 fnt1 9066 12051 0 12051 400 480 100 LoutGraphic gsave @@ -2483,23 +2660,24 @@ %%EndPageSetup gsave 0 0 translate -400 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic +400 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 400 480 100 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -160 fnt1 1417 -1526(lout)m 10408(6)s gsave +160 fnt1 1417 -1526(lout)m +10408(6)s gsave 1417 -14005 translate 400 fnt1 9066 12052 0 12052 400 480 100 LoutGraphic gsave 0 LoutMargSet grestore -400 fnt4 3817 11376(Displays)m - +400 fnt4 3817 11376(Displays)m [ /Dest /LOUT26_224_all_5 /DEST pdfmark -360 fnt2 800 9652(Y)m 50(ou cer)k -14(tainly don't w)k 5(ant to retur)k -9(n to)k +360 fnt2 +800 9652(Y)m 50(ou cer)k -14(tainly don't w)k 5(ant to retur)k -9(n to)k 800 9172(his of\207ce and repor)m -14(t:)k 800 8692(@IndentedDispla)m 10(y @I {)k 800 8212(`I can't \207nd an ef\207cient algor)m -5(ithm, I)k 800 7732(guess I'm just too dumb)m 14(.)k 36(')k 800 7252(})m 800 6772(T)m 43(o a)k 7(v)k 9(oid ser)k -5(ious damage to y)k 7(our)k 800 6292(position in the compan)m 5(y)k 36(, it w)k 3(ould)k 800 5812(be better if ...)m @@ -2536,14 +2714,15 @@ %%EndPageSetup gsave 0 0 translate -400 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic +400 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 400 480 100 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -160 fnt1 1417 -1526(lout)m 10411(7)s gsave +160 fnt1 1417 -1526(lout)m +10411(7)s gsave 1417 -14005 translate 400 fnt1 9066 12053 0 12053 400 480 100 LoutGraphic gsave @@ -2554,10 +2733,10 @@ 8640 10080 1440 8457 400 480 100 0 668 LoutGr2 LoutBox stroke grestore -1440 8367(Y)m 44(ou)k -2173(certainly)s 3657(don')s 7(t)k 4591(w)s 4(ant)k -5460(to)s 5856(return)s 6901(to)s 1440 7887(his)m 1990(of\207ce)s -2991(and)s 3665(report:)s 400 fnt5 2240 7048(`I)m 2626(can')s 12(t)k +1440 8367(Y)m 44(ou)k 2173(certainly)s +3657(don')s 7(t)k 4591(w)s 4(ant)k 5460(to)s +5856(return)s 6901(to)s 1440 7887(his)m 1990(of\207ce)s 2991(and)s +3665(report:)s 400 fnt5 2240 7048(`I)m 2626(can')s 12(t)k 3542(\207nd)s 4252(an)s 4742(ef\207cient)s 2240 6568(algorithm,)m 3970(I)s 4223(guess)s 5201(I'm)s 5848(just)s 6532(too)s 2240 6088(dumb)m 16(.)k 56(')k 400 fnt1 1440 5330(T)m 32(o)k 1940(a)s 8(v)k 8(oid)k @@ -2603,14 +2782,15 @@ %%EndPageSetup gsave 0 0 translate -400 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic +400 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 400 480 100 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -160 fnt1 1417 -1526(lout)m 10411(8)s gsave +160 fnt1 1417 -1526(lout)m +10411(8)s gsave 1417 -14005 translate 400 fnt1 9066 12052 0 12052 400 480 100 LoutGraphic gsave @@ -2657,14 +2837,15 @@ %%EndPageSetup gsave 0 0 translate -400 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic +400 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 400 480 100 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -160 fnt1 1417 -1526(lout)m 10409(9)s gsave +160 fnt1 1417 -1526(lout)m +10409(9)s gsave 1417 -14005 translate 400 fnt1 9066 12051 0 12051 400 480 100 LoutGraphic gsave @@ -2675,10 +2856,10 @@ 8640 10080 1440 8457 400 480 100 0 666 LoutGr2 LoutBox stroke grestore -1440 8367(Y)m 44(ou)k -2173(certainly)s 3657(don')s 7(t)k 4591(w)s 4(ant)k -5460(to)s 5856(return)s 6901(to)s 1440 7887(his)m 1990(of\207ce)s -2991(and)s 3665(report:)s 400 fnt5 2240 7048(`I)m 2626(can')s 12(t)k +1440 8367(Y)m 44(ou)k 2173(certainly)s +3657(don')s 7(t)k 4591(w)s 4(ant)k 5460(to)s +5856(return)s 6901(to)s 1440 7887(his)m 1990(of\207ce)s 2991(and)s +3665(report:)s 400 fnt5 2240 7048(`I)m 2626(can')s 12(t)k 3542(\207nd)s 4252(an)s 4742(ef\207cient)s 2240 6568(algorithm,)m 3970(I)s 4223(guess)s 5201(I'm)s 5848(just)s 6532(too)s 2240 6088(dumb)m 16(.)k 56(')k 400 fnt1 1440 5330(T)m 32(o)k 1940(a)s 8(v)k 8(oid)k @@ -2724,24 +2905,24 @@ %%EndPageSetup gsave 0 0 translate -400 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic +400 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 400 480 100 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -160 fnt1 1417 -1526(lout)m 10326(10)s gsave +160 fnt1 1417 -1526(lout)m +10326(10)s gsave 1417 -14005 translate 400 fnt1 9066 12052 0 12052 400 480 100 LoutGraphic gsave 0 LoutMargSet grestore -400 fnt4 4128 11376(Lists)m - +400 fnt4 4128 11376(Lists)m [ /Dest /LOUT26_224_all_9 /DEST pdfmark -360 fnt2 800 9722(@Heading { Oper)m 3(ating Instr)k -5(uctions })k 800 9242(@NumberedList)m -800 8762(@ListItem { Press small g)m 3(reen le)k 10(v)k 9(er)k 18(.)k 21( })k +360 fnt2 +800 9722(@Heading { Oper)m 3(ating Instr)k -5(uctions })k 800 9242(@NumberedList)m 800 8762(@ListItem { Press small g)m 3(reen le)k 10(v)k 9(er)k 18(.)k 21( })k 800 8282(@ListItem { )m 14(W)k 14(ait appro)k 10(ximately 10 seconds)k 800 7802(until red light \210ashes)m 5(.)k 21( })k 800 7322(@ListItem { If smok)m 7(e emerges from rear of unit,)k 800 6842(call Ser)m -10(vice Depar)k -14(tment.)k 21( })k 800 6362(@EndList)m @@ -2777,14 +2958,15 @@ %%EndPageSetup gsave 0 0 translate -400 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic +400 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 400 480 100 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -160 fnt1 1417 -1526(lout)m 10339(11)s gsave +160 fnt1 1417 -1526(lout)m +10339(11)s gsave 1417 -14005 translate 400 fnt1 9066 12053 0 12053 400 480 100 LoutGraphic gsave @@ -2795,19 +2977,19 @@ 8640 10080 1440 8456 400 480 100 0 668 LoutGr2 LoutBox stroke grestore -400 fnt4 1440 8364(Operating)m -3287(Instructions)s 400 fnt1 1440 7529(1.)m 2240(Press)s 3166(small)s -4123(green)s 5104(le)s 10(v)k 6(er)k 22(.)k - -[ /Dest /LOUT21_1501_all_1 /DEST pdfmark -1440 6689(2.)m 2240(W)s 32(ait)k 3077(approximately)s 5468(10)s -5952(seconds)s 2240 6209(until)m 3065(red)s 3672(light)s 4505(\210ashes.)s - -[ /Dest /LOUT21_1501_all_2 /DEST pdfmark -1440 5369(3.)m 2240(If)s 2626(smok)s 4(e)k 3757(emer)s 7(ges)k +400 fnt4 1440 8364(Operating)m 3287(Instructions)s +400 fnt1 1440 7529(1.)m 2240(Press)s 3166(small)s 4123(green)s +5104(le)s 10(v)k 6(er)k 22(.)k +[ /Dest /LOUT22_1489_all_1 /DEST pdfmark +1440 6689(2.)m +2240(W)s 32(ait)k 3077(approximately)s 5468(10)s 5952(seconds)s +2240 6209(until)m 3065(red)s 3672(light)s 4505(\210ashes.)s +[ /Dest /LOUT22_1489_all_2 /DEST pdfmark +1440 5369(3.)m +2240(If)s 2626(smok)s 4(e)k 3757(emer)s 7(ges)k 5164(from)s 6040(rear)s 6760(of)s 2240 4889(unit,)m 3040(call)s 3708(Service)s 4997(Department.)s -[ /Dest /LOUT21_1501_all_3 /DEST pdfmark +[ /Dest /LOUT22_1489_all_3 /DEST pdfmark grestore @@ -2847,14 +3029,15 @@ %%EndPageSetup gsave 0 0 translate -400 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic +400 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 400 480 100 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -160 fnt1 1417 -1526(lout)m 10327(12)s gsave +160 fnt1 1417 -1526(lout)m +10327(12)s gsave 1417 -14005 translate 400 fnt1 9066 12053 0 12053 400 480 100 LoutGraphic gsave @@ -2905,24 +3088,25 @@ %%EndPageSetup gsave 0 0 translate -400 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic +400 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 400 480 100 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -160 fnt1 1417 -1526(lout)m 10334(13)s gsave +160 fnt1 1417 -1526(lout)m +10334(13)s gsave 1417 -14005 translate 400 fnt1 9066 12052 0 12052 400 480 100 LoutGraphic gsave 1 LoutMargSet grestore -400 fnt4 3840 11376(Sections)m - +400 fnt4 3840 11376(Sections)m [ /Dest /LOUT26_224_all_12 /DEST pdfmark -360 fnt2 800 9720(@Section)m 800 9240( @T)m 43(ag { dfs })k 800 8760( @Title { Depth-\207rst search })m -800 8280(@Begin)m 800 7800(@PP)m 800 7320(W)m 10(e tur)k -9(n no)k 5(w to our \207rst algor)k -5(ithm)k +360 fnt2 +800 9720(@Section)m 800 9240( @T)m 43(ag { dfs })k 800 8760( @Title { Depth-\207rst search })m 800 8280(@Begin)m +800 7800(@PP)m 800 7320(W)m 10(e tur)k -9(n no)k 5(w to our \207rst algor)k -5(ithm)k 800 6840(on gener)m 3(al g)k 3(r)k 3(aphs ...)k 800 6360(@End @Section)m grestore @@ -2957,14 +3141,15 @@ %%EndPageSetup gsave 0 0 translate -400 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic +400 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 400 480 100 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -160 fnt1 1417 -1526(lout)m 10327(14)s gsave +160 fnt1 1417 -1526(lout)m +10327(14)s gsave 1417 -14005 translate 400 fnt1 9066 12053 0 12053 400 480 100 LoutGraphic gsave @@ -2975,8 +3160,8 @@ 8640 10080 1440 8456 400 480 100 0 668 LoutGr2 LoutBox stroke grestore -400 fnt4 1440 8364(10.6.)m -2424(Depth-\207rst)s 4386(sear)s 7(ch)k 400 fnt1 2240 7743(W)m 32(e)k +400 fnt4 1440 8364(10.6.)m 2424(Depth-\207rst)s +4386(sear)s 7(ch)k 400 fnt1 2240 7743(W)m 32(e)k 2854(turn)s 3592(no)s 10(w)k 4359(to)s 4758(our)s 5391(\207rst)s 1440 7263(algorithm)m 3093(on)s 3587(general)s 4854(graphs)s 6003(\202)s @@ -3018,14 +3203,15 @@ %%EndPageSetup gsave 0 0 translate -400 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic +400 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 400 480 100 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -160 fnt1 1417 -1527(lout)m 10332(15)s gsave +160 fnt1 1417 -1527(lout)m +10332(15)s gsave 1417 -14005 translate 400 fnt1 9066 12051 0 12051 400 480 100 LoutGraphic gsave @@ -3064,14 +3250,15 @@ %%EndPageSetup gsave 0 0 translate -400 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic +400 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 400 480 100 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -160 fnt1 1417 -1526(lout)m 10328(16)s gsave +160 fnt1 1417 -1526(lout)m +10328(16)s gsave 1417 -14005 translate 400 fnt1 9066 12052 0 12052 400 480 100 LoutGraphic gsave @@ -3082,9 +3269,9 @@ 8640 10080 1440 8457 400 480 100 0 667 LoutGr2 LoutBox stroke grestore -1440 8367(F)m 6(or)k -2089(further)s 3276(information,)s 5341(consult)s 1440 7887(Section)m 2732(10.6)s -3520(on)s 4014(page)s 4860(245.)s +1440 8367(F)m 6(or)k 2089(further)s +3276(information,)s 5341(consult)s 1440 7887(Section)m 2732(10.6)s 3520(on)s +4014(page)s 4860(245.)s grestore grestore @@ -3123,14 +3310,15 @@ %%EndPageSetup gsave 0 0 translate -400 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic +400 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 400 480 100 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -160 fnt1 1417 -1526(lout)m 10331(17)s gsave +160 fnt1 1417 -1526(lout)m +10331(17)s gsave 1417 -14005 translate 400 fnt1 9066 12053 0 12053 400 480 100 LoutGraphic gsave @@ -3178,14 +3366,15 @@ %%EndPageSetup gsave 0 0 translate -400 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic +400 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 400 480 100 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -160 fnt1 1417 -1526(lout)m 10331(18)s gsave +160 fnt1 1417 -1526(lout)m +10331(18)s gsave 1417 -14005 translate 400 fnt1 9066 12052 0 12052 400 480 100 LoutGraphic gsave @@ -3196,8 +3385,8 @@ 8640 10080 1440 8457 400 480 100 0 667 LoutGr2 LoutBox stroke grestore -1440 8367(F)m 6(or)k -2089(the)s 2669(details,)s 3889(consult)s 5143(the)s 5723(User')s 22(s)k +1440 8367(F)m 6(or)k 2089(the)s +2669(details,)s 3889(consult)s 5143(the)s 5723(User')s 22(s)k 1440 7887(Guide)m 2508([1].)s 1440 7264(\202)m 400 fnt4 1440 6639(Refer)m 7(ences)k 400 fnt1 1440 5881(1.)m 2240(Jef)s 10(fre)k 6(y)k 3422(H.)s 3883(Kingston.)s 400 fnt5 5621 5883(A)m 5947(User')s 16(s)k @@ -3207,9 +3396,9 @@ 5977(of)s 2240 3961(Computer)m 3938(Science)s 5171(,)s 5349(Uni)s 10(v)k 6(ersity)k 2240 3481(of)m 2693(Sydne)s 6(y)k 3876(,)s 4054(1995)s 4830(.)s -[ /Dest /LOUT21_1501_all_4 /DEST pdfmark +[ /Dest /LOUT22_1489_all_4 /DEST pdfmark 1440 2644(2.)m 2240(\202)s -[ /Dest /LOUT21_1501_all_5 /DEST pdfmark +[ /Dest /LOUT22_1489_all_5 /DEST pdfmark grestore @@ -3249,21 +3438,22 @@ %%EndPageSetup gsave 0 0 translate -400 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic +400 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 400 480 100 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -160 fnt1 1417 -1526(lout)m 10329(19)s gsave +160 fnt1 1417 -1526(lout)m +10329(19)s gsave 1417 -14005 translate 400 fnt1 9066 12051 0 12051 400 480 100 LoutGraphic gsave 1 LoutMargSet grestore -400 fnt4 2601 11375(Database)m -4269(\207le)s 4872(myr)s 7(efs.ld)k +400 fnt4 2601 11375(Database)m 4269(\207le)s +4872(myr)s 7(efs.ld)k [ /Dest /LOUT26_224_all_18 /DEST pdfmark 360 fnt2 800 9644({ @Ref)m 10(erence)k 800 9164( @T)m 43(ag { kingston1995lout.user })k 800 8684( @T)m 43(ype { Book })k 800 8204( @A)m 10(uthor { Jeffre)k 7(y H.)k 21( Kingston })k @@ -3303,52 +3493,54 @@ %%EndPageSetup gsave 0 0 translate -400 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic +400 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 400 480 100 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -160 fnt1 1417 -1526(lout)m 10326(20)s gsave +160 fnt1 1417 -1526(lout)m +10326(20)s gsave 1417 -14005 translate 400 fnt1 9066 12052 0 12052 400 480 100 LoutGraphic gsave 0 LoutMargSet grestore -400 fnt4 2965 11375(Books)m -4097(\(and)s 4966(theses\))s +400 fnt4 2965 11375(Books)m 4097(\(and)s +4966(theses\))s [ /Dest /LOUT26_224_all_19 /DEST pdfmark 400 fnt1 0 9650(\213)m 800(T)s 14(itle)k 1632(page,)s 2564(pref)s 4(ace,)k 3912(introduction)s -[ /Dest /LOUT21_1501_all_6 /DEST pdfmark +[ /Dest /LOUT22_1489_all_6 /DEST pdfmark 0 8810(\213)m 800(Automatic)s 2574(table)s 3442(of)s 3895(contents)s -[ /Dest /LOUT21_1501_all_7 /DEST pdfmark +[ /Dest /LOUT22_1489_all_7 /DEST pdfmark 0 8053(\213)m 800(Pref)s 4(atory)k 2372(pages)s 3365(numbered)s 5060(in)s 5465(Roman)s 6713(numerals)s -[ /Dest /LOUT21_1501_all_8 /DEST pdfmark +[ /Dest /LOUT22_1489_all_8 /DEST pdfmark 0 7213(\213)m 800(Chapters,)s 2397(sections,)s 3861(subsections,)s 5880(appendices)s -[ /Dest /LOUT21_1501_all_9 /DEST pdfmark +[ /Dest /LOUT22_1489_all_9 /DEST pdfmark 0 6374(\213)m 800(References)s 2656(at)s 3044(end)s 3718(of)s 4171(chapters)s 5585(or)s 6018(book)s -[ /Dest /LOUT21_1501_all_10 /DEST pdfmark +[ /Dest /LOUT22_1489_all_10 /DEST pdfmark 0 5535(\213)m 800(Running)s 2265(page)s 3111(headers)s -[ /Dest /LOUT21_1501_all_11 /DEST pdfmark +[ /Dest /LOUT22_1489_all_11 /DEST pdfmark 0 4695(\213)m 800(Odd-e)s 10(v)k 6(en)k 2453(page)s 3299(formats)s -[ /Dest /LOUT21_1501_all_12 /DEST pdfmark +[ /Dest /LOUT22_1489_all_12 /DEST pdfmark 0 3855(\213)m 800(Sorted)s 1940(inde)s 6(x)k -[ /Dest /LOUT21_1501_all_13 /DEST pdfmark +[ /Dest /LOUT22_1489_all_13 /DEST pdfmark grestore gsave 1417 -14005 translate -400 fnt1 0 0 0 0 400 480 100 LoutGraphic +400 fnt1 +0 0 0 0 400 480 100 LoutGraphic gsave 0 LoutMargSet grestore @@ -3381,24 +3573,24 @@ %%EndPageSetup gsave 0 0 translate -400 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic +400 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 400 480 100 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -160 fnt1 1417 -1526(lout)m 10339(21)s gsave +160 fnt1 1417 -1526(lout)m +10339(21)s gsave 1417 -14005 translate 400 fnt1 9066 12053 0 12053 400 480 100 LoutGraphic gsave 1 LoutMargSet grestore -400 fnt4 2631 11377(Making)m -4057(a)s 4353(sorted)s 5509(index)s +400 fnt4 2631 11377(Making)m 4057(a)s +4353(sorted)s 5509(index)s [ /Dest /LOUT26_224_all_20 /DEST pdfmark -360 fnt2 800 9646(@PP)m -800 9166(There are se)m 10(v)k 9(er)k 3(al possib)k 7(le w)k 5(a)k 10(ys to implement the)k +360 fnt2 800 9646(@PP)m 800 9166(There are se)m 10(v)k 9(er)k 3(al possib)k 7(le w)k 5(a)k 10(ys to implement the)k 800 8686(@I P)m 14(ar)k -14(tition procedure)k 5(,)k 800 8206(par)m -14(tition @Inde)k 10(x { @I P)k 14(ar)k -14(tition \(in {@I Quic)k 7(ksor)k -14(t}\) })k 800 7726(b)m 7(ut the f)k 10(ollo)k 5(wing seems to be the best.)k 21( Star)k -14(ting ...)k @@ -3438,14 +3630,15 @@ %%EndPageSetup gsave 0 0 translate -400 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic +400 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 400 480 100 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -160 fnt1 1417 -1526(lout)m 10327(22)s gsave +160 fnt1 1417 -1526(lout)m +10327(22)s gsave 1417 -14005 translate 400 fnt1 9066 12053 0 12053 400 480 100 LoutGraphic gsave @@ -3456,11 +3649,11 @@ 8640 10080 1440 8462 400 480 100 0 668 LoutGr2 LoutBox stroke grestore -400 fnt4 1440 8370(Index)m -400 fnt1 1440 7795(\202)m 1440 7315(partial)m 2552(order)s 16(,)k -3557(227)s 400 fnt5 1440 6837(P)m 32(artition)k 400 fnt1 -2941 6835(\(in)m 400 fnt5 3479 6837(Quic)m 8(ksort)k 400 fnt1 -5052 6835(\),)m 5363(189)s 1440 6355(postorder)m 3049(tra)s 8(v)k 6(ersal)k +400 fnt4 1440 8370(Index)m 400 fnt1 +1440 7795(\202)m 1440 7315(partial)m 2552(order)s 16(,)k 3557(227)s +400 fnt5 1440 6837(P)m 32(artition)k 400 fnt1 2941 6835(\(in)m +400 fnt5 3479 6837(Quic)m 8(ksort)k 400 fnt1 5052 6835(\),)m +5363(189)s 1440 6355(postorder)m 3049(tra)s 8(v)k 6(ersal)k 1840 5875(of)m 2293(binary)s 3404(tree,)s 4180(19)s 1840 5395(topological)m 3730(ordering,)s 5262(229)s 1440 4915(\202)m grestore @@ -3501,30 +3694,31 @@ %%EndPageSetup gsave 0 0 translate -400 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic +400 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 400 480 100 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -160 fnt1 1417 -1526(lout)m 10334(23)s gsave +160 fnt1 1417 -1526(lout)m +10334(23)s gsave 1417 -14005 translate 400 fnt1 9066 12052 0 12052 400 480 100 LoutGraphic gsave 1 LoutMargSet grestore -400 fnt4 2785 11376(Equation)m -4455(f)s 10(ormatting)k +400 fnt4 2785 11376(Equation)m 4455(f)s 10(ormatting)k + [ /Dest /LOUT26_224_all_22 /DEST pdfmark -360 fnt2 800 9645(@SysInclude { eq })m 800 9165(...)m -800 8685(Since @Eq { )m 18(T\(n-i\) = )k 18(T\(0\) = 0 } w)k 3(e ha)k 7(v)k 9(e)k +360 fnt2 800 9645(@SysInclude { eq })m 800 9165(...)m 800 8685(Since @Eq { )m 18(T\(n-i\) = )k 18(T\(0\) = 0 } w)k 3(e ha)k 7(v)k 9(e)k 800 8205(@IndentedDispla)m 10(y @Eq {)k 800 7725(T\(n\) = big sum from i=0 to n-1 2 sup i = 2 sup n - 1)m 800 7245(})m 800 6765(f)m 10(or the n)k 3(umber of disk mo)k 5(v)k 9(es made b)k 7(y the )k 18(T)k 43(o)k 5(w)k 3(ers)k 800 6285(of Hanoi algor)m -5(ithm, giv)k 9(en @Eq { n } disks)k 5(.)k grestore gsave 1417 -14005 translate -400 fnt1 0 0 0 0 400 480 100 LoutGraphic +400 fnt1 +0 0 0 0 400 480 100 LoutGraphic gsave 1 LoutMargSet grestore @@ -3556,14 +3750,15 @@ %%EndPageSetup gsave 0 0 translate -400 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic +400 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 400 480 100 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -160 fnt1 1417 -1526(lout)m 10327(24)s gsave +160 fnt1 1417 -1526(lout)m +10327(24)s gsave 1417 -14005 translate 400 fnt1 9066 12053 0 12053 400 480 100 LoutGraphic gsave @@ -3574,20 +3769,20 @@ 8640 10080 1440 8457 400 480 100 0 668 LoutGr2 LoutBox stroke grestore -1440 8367(Since)m 400 fnt5 -2419 8369(T)m 400 fnt6 2691 8357(\()m 400 fnt5 2831 8369(n)m -400 fnt6 3141 8357(-)m 400 fnt5 3475 8369(i)m 400 fnt6 -3601 8357(\))m 3852(=)s 400 fnt5 4207 8369(T)m 400 fnt6 -4479 8357(\()m 4619(0)s 4828(\))s 5079(=)s 5434(0)s -400 fnt1 5723 8367(we)m 6280(ha)s 8(v)k 6(e)k -400 fnt5 2240 7206(T)m 400 fnt6 2512 7194(\()m 400 fnt5 -2652 7206(n)m 400 fnt6 2862 7194(\))m 3113(=)s 279 fnt5 -3468 7622(n)m 279 fnt6 3637 7614(-)m 3824(1)s 519 fnt6 -3520 7165(\345)m 279 fnt5 3484 6867(i)m 279 fnt6 3597 6859(=)m -3786(0)s 279 fnt5 4143 7369(i)m 400 fnt6 3953 7194(2)m -4357(=)s 279 fnt5 4902 7401(n)m 400 fnt6 4712 7194(2)m -5154(-)s 5488(1)s 400 fnt1 1440 6101(for)m 2006(the)s -2586(number)s 3907(of)s 4360(disk)s 5128(mo)s 6(v)k 6(es)k +1440 8367(Since)m 400 fnt5 2419 8369(T)m +400 fnt6 2691 8357(\()m 400 fnt5 2831 8369(n)m 400 fnt6 +3141 8357(-)m 400 fnt5 3475 8369(i)m 400 fnt6 3601 8357(\))m +3852(=)s 400 fnt5 4207 8369(T)m 400 fnt6 4479 8357(\()m +4619(0)s 4828(\))s 5079(=)s 5434(0)s 400 fnt1 +5723 8367(we)m 6280(ha)s 8(v)k 6(e)k 400 fnt5 +2240 7206(T)m 400 fnt6 2512 7194(\()m 400 fnt5 2652 7206(n)m +400 fnt6 2862 7194(\))m 3113(=)s 279 fnt5 3468 7622(n)m +279 fnt6 3637 7614(-)m 3824(1)s 519 fnt6 3520 7165(\345)m +279 fnt5 3484 6867(i)m 279 fnt6 3597 6859(=)m 3786(0)s +279 fnt5 4143 7369(i)m 400 fnt6 3953 7194(2)m 4357(=)s +279 fnt5 4902 7401(n)m 400 fnt6 4712 7194(2)m 5154(-)s +5488(1)s 400 fnt1 1440 6101(for)m 2006(the)s 2586(number)s +3907(of)s 4360(disk)s 5128(mo)s 6(v)k 6(es)k 6243(made)s 1440 5621(by)m 1930(the)s 2510(T)s 32(o)k 10(wers)k 3749(of)s 4202(Hanoi)s 5268(algorithm,)s 1440 5141(gi)m 10(v)k 6(en)k 400 fnt5 2406 5143(n)m 400 fnt1 2696 5141(disks.)m @@ -3596,7 +3791,8 @@ grestore gsave 1417 -14005 translate -400 fnt1 0 0 0 0 400 480 100 LoutGraphic +400 fnt1 +0 0 0 0 400 480 100 LoutGraphic gsave 0 LoutMargSet grestore @@ -3629,21 +3825,22 @@ %%EndPageSetup gsave 0 0 translate -400 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic +400 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 400 480 100 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -160 fnt1 1417 -1527(lout)m 10332(25)s gsave +160 fnt1 1417 -1527(lout)m +10332(25)s gsave 1417 -14005 translate 400 fnt1 9066 12051 0 12051 400 480 100 LoutGraphic gsave 1 LoutMargSet grestore -400 fnt4 3035 11375(Another)m -4550(equation)s +400 fnt4 3035 11375(Another)m 4550(equation)s + [ /Dest /LOUT26_224_all_24 /DEST pdfmark 360 fnt2 800 9644(@CenteredDispla)m 10(y @Eq {)k 800 9164(big int supp 1 on 0 )m 21(`)k 800 8684(dx o)m 5(v)k 9(er sqr)k -14(t { 1 - x sup 2 })k 800 8204(= pi o)m 5(v)k 9(er 2)k @@ -3683,14 +3880,15 @@ %%EndPageSetup gsave 0 0 translate -400 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic +400 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 400 480 100 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -160 fnt1 1417 -1526(lout)m 10328(26)s gsave +160 fnt1 1417 -1526(lout)m +10328(26)s gsave 1417 -14005 translate 400 fnt1 9066 12052 0 12052 400 480 100 LoutGraphic gsave @@ -3701,9 +3899,8 @@ 8640 10080 1440 8640 400 480 100 0 667 LoutGr2 LoutBox stroke grestore -674 fnt6 3160 7426(\362)m -279 fnt6 3355 7973(1)m 3355 7285(0)m 400 fnt5 3990 7783(dx)m -1187 0 0 0 400 480 20 3586 7698 LoutGr2 +674 fnt6 3160 7426(\362)m 279 fnt6 +3355 7973(1)m 3355 7285(0)m 400 fnt5 3990 7783(dx)m 1187 0 0 0 400 480 20 3586 7698 LoutGr2 0 0 moveto xsize 0 lineto 0.05 ft setlinewidth stroke grestore @@ -3711,16 +3908,17 @@ gsave 0 7295 translate 1.0000 1.2178 scale -400 fnt6 3586 -100(\326)m +400 fnt6 +3586 -100(\326)m grestore 981 0 0 0 400 480 20 3792 7618 LoutGr2 0 0 moveto xsize 0 lineto 0.03 ft setlinewidth 2 setlinecap stroke grestore grestore -400 fnt6 3852 7254(1)m 4128(-)s -279 fnt6 4640 7368(2)m 400 fnt5 4462 7266(x)m 400 fnt6 -4913 7598(=)m 5268 7785(p)m gsave +400 fnt6 3852 7254(1)m 4128(-)s 279 fnt6 +4640 7368(2)m 400 fnt5 4462 7266(x)m 400 fnt6 4913 7598(=)m +5268 7785(p)m gsave 5268 7698 translate 400 fnt5 212 0 0 0 400 480 20 LoutGraphic gsave @@ -3767,14 +3965,15 @@ %%EndPageSetup gsave 0 0 translate -400 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic +400 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 400 480 100 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -160 fnt1 1417 -1526(lout)m 10331(27)s gsave +160 fnt1 1417 -1526(lout)m +10331(27)s gsave 1417 -14005 translate 400 fnt1 9066 12053 0 12053 400 480 100 LoutGraphic gsave @@ -3822,14 +4021,15 @@ %%EndPageSetup gsave 0 0 translate -400 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic +400 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 400 480 100 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -160 fnt1 1417 -1526(lout)m 10331(28)s gsave +160 fnt1 1417 -1526(lout)m +10331(28)s gsave 1417 -14005 translate 400 fnt1 9066 12052 0 12052 400 480 100 LoutGraphic gsave @@ -3886,25 +4086,26 @@ %%EndPageSetup gsave 0 0 translate -400 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic +400 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 400 480 100 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -160 fnt1 1417 -1526(lout)m 10329(29)s gsave +160 fnt1 1417 -1526(lout)m +10329(29)s gsave 1417 -14005 translate 400 fnt1 9066 12051 0 12051 400 480 100 LoutGraphic gsave 1 LoutMargSet grestore -400 fnt4 3357 11375(Another)m -4872(table)s +400 fnt4 3357 11375(Another)m 4872(table)s + [ /Dest /LOUT26_224_all_28 /DEST pdfmark -360 fnt2 800 10201(@T)m 43(ab)k 800 9721( hmargin { 0.4c })m -800 9241( vmargin { 0.3v })m 800 8761( side { single })m 800 8281( @Fmta { @Col @B @CC X @Ov)m 9(er A,B)k 7(,C })k -800 7801( @Fmtb { @Col @I A ! @Col B !! @Col C })m 800 7321({)m 800 6361(@Ro)m 5(w)k 5(a abo)k 5(v)k 9(e { single })k +360 fnt2 800 10201(@T)m 43(ab)k 800 9721( hmargin { 0.4c })m 800 9241( vmargin { 0.3v })m +800 8761( side { single })m 800 8281( @Fmta { @Col @B @CC X @Ov)m 9(er A,B)k 7(,C })k 800 7801( @Fmtb { @Col @I A ! @Col B !! @Col C })m +800 7321({)m 800 6361(@Ro)m 5(w)k 5(a abo)k 5(v)k 9(e { single })k 800 5881( X { )m 18(V)k 25(alue of mathematical ...)k 21( dollars\) })k 800 4921(@Ro)m 5(wb abo)k 5(v)k 9(e { doub)k 7(le })k 800 4441( A { Quadr)m 3(atic f)k 10(or)k -9(m)k 3(ula })k 800 3961( B { @Eq { x ^= { ...)m 21( } o)k 5(v)k 9(er 2a } })k 800 3481( C { 3^.5 })m @@ -3949,14 +4150,15 @@ %%EndPageSetup gsave 0 0 translate -400 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic +400 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 400 480 100 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -160 fnt1 1417 -1526(lout)m 10326(30)s gsave +160 fnt1 1417 -1526(lout)m +10326(30)s gsave 1417 -14005 translate 400 fnt1 9066 12052 0 12052 400 480 100 LoutGraphic gsave @@ -4015,7 +4217,8 @@ grestore gsave 9341 -488 translate -400 fnt1 360 344 0 159 400 480 100 LoutGraphic +400 fnt1 +360 344 0 159 400 480 100 LoutGraphic gsave 0.5 pt ltabvs grestore @@ -4055,7 +4258,8 @@ grestore gsave 0 -2010 translate -400 fnt1 0 144 0 0 400 480 100 LoutGraphic +400 fnt1 +0 144 0 0 400 480 100 LoutGraphic gsave 0.5 pt ltabvs grestore @@ -4069,8 +4273,8 @@ grestore grestore -400 fnt5 226 -1474(Quadr)m 6(atic)k -1955(formula)s gsave +400 fnt5 226 -1474(Quadr)m 6(atic)k 1955(formula)s +gsave 3211 -632 translate 400 fnt1 226 0 0 0 400 480 100 LoutGraphic gsave @@ -4094,12 +4298,12 @@ grestore grestore -4724(x)s 400 fnt6 5062 -1486(=)m 5417 -1206(-)m -400 fnt5 5651 -1194(b)m 400 fnt6 5961 -1206(\261)m gsave +4724(x)s 400 fnt6 +5062 -1486(=)m 5417 -1206(-)m 400 fnt5 5651 -1194(b)m 400 fnt6 +5961 -1206(\261)m gsave 0 -1146 translate 1.0000 1.3911 scale -6296 -100(\326)m - +6296 -100(\326)m grestore gsave 6502 -776 translate @@ -4109,14 +4313,15 @@ grestore grestore -279 fnt6 6752 -1026(2)m 400 fnt5 6562 -1194(b)m 400 fnt6 -7005 -1206(-)m 7339(4)s 400 fnt5 7547 -1194(ac)m 2500 0 0 0 400 480 20 5417 -1386 LoutGr2 +279 fnt6 6752 -1026(2)m +400 fnt5 6562 -1194(b)m 400 fnt6 7005 -1206(-)m 7339(4)s +400 fnt5 7547 -1194(ac)m 2500 0 0 0 400 480 20 5417 -1386 LoutGr2 0 0 moveto xsize 0 lineto 0.05 ft setlinewidth stroke grestore grestore -400 fnt6 -6466 -1766(2)m 400 fnt5 6676 -1754(a)m gsave +400 fnt6 6466 -1766(2)m 400 fnt5 +6676 -1754(a)m gsave 7917 -632 translate 400 fnt1 226 0 0 0 400 480 100 LoutGraphic gsave @@ -4142,7 +4347,8 @@ grestore gsave 8143 -1866 translate -400 fnt1 0 1090 0 480 400 480 100 LoutGraphic +400 fnt1 +0 1090 0 480 400 480 100 LoutGraphic gsave 0.5 pt ltabvs grestore @@ -4164,8 +4370,8 @@ grestore grestore -400 fnt1 8586 -1476(3)m -8759(.5)s 226 0 0 0 400 480 100 9115 -632 LoutGr2 +400 fnt1 8586 -1476(3)m 8759(.5)s +226 0 0 0 400 480 100 9115 -632 LoutGr2 0.5 pt ltabhd grestore @@ -4205,10 +4411,10 @@ grestore grestore -400 fnt5 226 -2655(Binomial)m 1791(theor)s 14(em)k -gsave +400 fnt5 226 -2655(Binomial)m 1791(theor)s 14(em)k gsave 226 -3159 translate -400 fnt1 2985 0 0 0 400 480 100 LoutGraphic +400 fnt1 +2985 0 0 0 400 480 100 LoutGraphic gsave 0.5 pt ltabhs grestore @@ -4230,25 +4436,25 @@ grestore grestore -400 fnt6 3663 -2667(\()m 400 fnt5 3803 -2655(a)m 400 fnt6 -4114 -2667(+)m 400 fnt5 4449 -2655(b)m 279 fnt5 4770 -2462(n)m -400 fnt6 4659 -2667(\))m 5062(=)s 334 fnt6 5545 -2288(\245)m -519 fnt6 5479 -2696(\345)m 279 fnt5 5417 -3002(k)m 279 fnt6 -5583 -3010(=)m 5772(0)s gsave +400 fnt6 3663 -2667(\()m 400 fnt5 +3803 -2655(a)m 400 fnt6 4114 -2667(+)m 400 fnt5 4449 -2655(b)m +279 fnt5 4770 -2462(n)m 400 fnt6 4659 -2667(\))m 5062(=)s +334 fnt6 5545 -2288(\245)m 519 fnt6 5479 -2696(\345)m 279 fnt5 +5417 -3002(k)m 279 fnt6 5583 -3010(=)m 5772(0)s gsave 0 -2558 translate 1.0000 2.3652 scale -400 fnt6 5923 -100(\()m +400 fnt6 +5923 -100(\()m grestore -400 fnt5 -6103 -2415(n)m 6106 -2891(k)m gsave +400 fnt5 6103 -2415(n)m 6106 -2891(k)m gsave 0 -2558 translate 1.0000 2.3652 scale -400 fnt6 6353 -100(\))m +400 fnt6 +6353 -100(\))m grestore -279 fnt5 -6675 -2499(k)m 400 fnt5 6484 -2655(a)m 279 fnt5 7012 -2486(n)m -279 fnt6 7181 -2494(-)m 279 fnt5 7368 -2486(k)m 400 fnt5 -6822 -2655(b)m gsave +279 fnt5 6675 -2499(k)m 400 fnt5 6484 -2655(a)m +279 fnt5 7012 -2486(n)m 279 fnt6 7181 -2494(-)m 279 fnt5 +7368 -2486(k)m 400 fnt5 6822 -2655(b)m gsave 3663 -3159 translate 400 fnt1 4254 0 1259 0 400 480 100 LoutGraphic gsave @@ -4258,7 +4464,8 @@ grestore gsave 7917 -3159 translate -400 fnt1 226 0 0 0 400 480 100 LoutGraphic +400 fnt1 +226 0 0 0 400 480 100 LoutGraphic gsave 0.5 pt ltabhs grestore @@ -4296,7 +4503,8 @@ grestore grestore -400 fnt1 8369 -2657(12)m 746 0 390 0 400 480 100 8369 -3159 LoutGr2 +400 fnt1 +8369 -2657(12)m 746 0 390 0 400 480 100 8369 -3159 LoutGr2 0.5 pt ltabhs grestore @@ -4362,14 +4570,15 @@ %%EndPageSetup gsave 0 0 translate -400 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic +400 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 400 480 100 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -160 fnt1 1417 -1526(lout)m 10339(31)s gsave +160 fnt1 1417 -1526(lout)m +10339(31)s gsave 1417 -14005 translate 400 fnt1 9066 12052 0 12052 400 480 100 LoutGraphic gsave @@ -4424,14 +4633,15 @@ %%EndPageSetup gsave 0 0 translate -400 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic +400 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 400 480 100 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -160 fnt1 1417 -1526(lout)m 10327(32)s gsave +160 fnt1 1417 -1526(lout)m +10327(32)s gsave 1417 -14005 translate 400 fnt1 9066 12052 0 12052 400 480 100 LoutGraphic gsave @@ -4510,21 +4720,22 @@ %%EndPageSetup gsave 0 0 translate -400 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic +400 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 400 480 100 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -160 fnt1 1417 -1526(lout)m 10334(33)s gsave +160 fnt1 1417 -1526(lout)m +10334(33)s gsave 1417 -14005 translate 400 fnt1 9066 12052 0 12052 400 480 100 LoutGraphic gsave 1 LoutMargSet grestore -400 fnt4 3304 11376(Basic)m -4308(graphics)s +400 fnt4 3304 11376(Basic)m 4308(graphics)s + [ /Dest /LOUT26_224_all_32 /DEST pdfmark 360 fnt2 800 9645(45d @Rotate 1.5 @Scale @Bo)m 10(x {)k 800 9165( Hello)m 14(, w)k 3(or)k -5(ld)k 800 8685(})m @@ -4560,14 +4771,15 @@ %%EndPageSetup gsave 0 0 translate -400 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic +400 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 400 480 100 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -160 fnt1 1417 -1526(lout)m 10327(34)s gsave +160 fnt1 1417 -1526(lout)m +10327(34)s gsave 1417 -14005 translate 400 fnt1 9066 12052 0 12052 400 480 100 LoutGraphic gsave @@ -4636,14 +4848,15 @@ %%EndPageSetup gsave 0 0 translate -400 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic +400 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 400 480 100 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -160 fnt1 1417 -1527(lout)m 10332(35)s gsave +160 fnt1 1417 -1527(lout)m +10332(35)s gsave 1417 -14005 translate 400 fnt1 9066 12051 0 12051 400 480 100 LoutGraphic gsave @@ -4684,14 +4897,15 @@ %%EndPageSetup gsave 0 0 translate -400 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic +400 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 400 480 100 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -160 fnt1 1417 -1526(lout)m 10328(36)s gsave +160 fnt1 1417 -1526(lout)m +10328(36)s gsave 1417 -14005 translate 400 fnt1 9066 12052 0 12052 400 480 100 LoutGraphic gsave @@ -4763,14 +4977,15 @@ %%EndPageSetup gsave 0 0 translate -400 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic +400 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 400 480 100 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -160 fnt1 1417 -1526(lout)m 10331(37)s gsave +160 fnt1 1417 -1526(lout)m +10331(37)s gsave 1417 -14005 translate 400 fnt1 9066 12052 0 12052 400 480 100 LoutGraphic gsave @@ -4785,7 +5000,8 @@ grestore gsave 1417 -14005 translate -400 fnt1 0 0 0 0 400 480 100 LoutGraphic +400 fnt1 +0 0 0 0 400 480 100 LoutGraphic gsave 1 LoutMargSet grestore @@ -4810,14 +5026,15 @@ %%EndPageSetup gsave 0 0 translate -400 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic +400 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 400 480 100 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -160 fnt1 1417 -1526(lout)m 10331(38)s gsave +160 fnt1 1417 -1526(lout)m +10331(38)s gsave 1417 -14005 translate 400 fnt1 9066 12052 0 12052 400 480 100 LoutGraphic gsave @@ -4908,23 +5125,24 @@ %%EndPageSetup gsave 0 0 translate -400 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic +400 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 400 480 100 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -160 fnt1 1417 -1526(lout)m 10329(39)s gsave +160 fnt1 1417 -1526(lout)m +10329(39)s gsave 1417 -14005 translate 400 fnt1 9066 12051 0 12051 400 480 100 LoutGraphic gsave 1 LoutMargSet grestore -400 fnt4 3895 11375(Graphs)m - +400 fnt4 3895 11375(Graphs)m [ /Dest /LOUT26_224_all_38 /DEST pdfmark -340 fnt2 800 9036(@Gr)m 3(aph)k 800 8556( abo)m 5(v)k 8(ecaption { Ne)k 6(w South )k 13(W)k 13(ales road deaths)k +340 fnt2 +800 9036(@Gr)m 3(aph)k 800 8556( abo)m 5(v)k 8(ecaption { Ne)k 6(w South )k 13(W)k 13(ales road deaths)k 800 8076(\(per 100 million v)m 8(ehicle km\) })k 800 7596({)m 800 7116( @Data points { plus } pairs { dashed })m 800 6636( { 1963 5.6 1971 4.3 1976 3.7 1979 3.4)m 800 6156( 1982 2.9 1985 2.3 1988 2.0 })m 800 5676(})m grestore @@ -4955,14 +5173,15 @@ %%EndPageSetup gsave 0 0 translate -400 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic +400 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 400 480 100 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -160 fnt1 1417 -1526(lout)m 10326(40)s gsave +160 fnt1 1417 -1526(lout)m +10326(40)s gsave 1417 -14005 translate 400 fnt1 9066 12052 0 12052 400 480 100 LoutGraphic gsave @@ -4973,10 +5192,10 @@ 8640 10080 1440 8640 400 480 100 0 667 LoutGr2 LoutBox stroke grestore -1631 8367(Ne)m 10(w)k -2463(South)s 3491(W)s 32(ales)k 4540(road)s 5347(deaths)s -1717 7887(\(per)m 2460(100)s 3151(million)s 4400(v)s 6(ehicle)k -5639(km\))s 5103 3402 0 3402 400 480 100 1440 4116 LoutGr2 +1631 8367(Ne)m 10(w)k 2463(South)s +3491(W)s 32(ales)k 4540(road)s 5347(deaths)s 1717 7887(\(per)m +2460(100)s 3151(million)s 4400(v)s 6(ehicle)k 5639(km\))s +5103 3402 0 3402 400 480 100 1440 4116 LoutGr2 grestore gsave xsize ysize lgraphdict begin /ysize exch def /xsize exch def @@ -4987,6 +5206,7 @@ /linewidth currentlinewidth def /symbolsize 0.15 ft def } { false } +{ null LoutSetTexture } ] ] def 0 [ false ] 0 alldata false false 0 0.5 cm false false 0.5 ft xset @@ -5033,14 +5253,15 @@ %%EndPageSetup gsave 0 0 translate -400 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic +400 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 400 480 100 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -160 fnt1 1417 -1526(lout)m 10339(41)s gsave +160 fnt1 1417 -1526(lout)m +10339(41)s gsave 1417 -14005 translate 400 fnt1 9066 12053 0 12053 400 480 100 LoutGraphic gsave @@ -5087,14 +5308,15 @@ %%EndPageSetup gsave 0 0 translate -400 fnt1 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 400 480 100 LoutGraphic +400 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 400 480 100 LoutGraphic gsave LoutPageSet grestore gsave 0 16840 translate 0.0000 rotate -160 fnt1 1417 -1526(lout)m 10327(42)s gsave +160 fnt1 1417 -1526(lout)m +10327(42)s gsave 1417 -14005 translate 400 fnt1 9066 12053 0 12053 400 480 100 LoutGraphic gsave @@ -5119,6 +5341,7 @@ /linewidth currentlinewidth def /symbolsize 0.15 ft def } { false } +{ null LoutSetTexture } ] [ [ 10 3.53 50 7.45 100 9.32 200 13.41 500 21.63 ] xandy { filledcircle } @@ -5127,6 +5350,7 @@ /linewidth currentlinewidth def /symbolsize 0.15 ft def } { false } +{ null LoutSetTexture } ] [ [ 10 2 500 2 ] xandy { } @@ -5135,6 +5359,7 @@ /linewidth currentlinewidth def /symbolsize 0.15 ft def } { false } +{ null LoutSetTexture } ] [ [ 10 20 500 { /xval exch def xval 3.14159 xval mul 4 div sqrt 1 add } for ] xandy { } @@ -5143,6 +5368,7 @@ /linewidth currentlinewidth def /symbolsize 0.15 ft def } { false } +{ null LoutSetTexture } ] ] def 0 [ 10 lgen 50 lgen 100 lgen 200 lgen 500 lgen ] 0 alldata false false 0 0 false 0 0.5 ft xset @@ -5171,7 +5397,8 @@ grestore gsave 1417 -14005 translate -400 fnt1 0 0 0 0 400 480 100 LoutGraphic +400 fnt1 +0 0 0 0 400 480 100 LoutGraphic gsave 0 LoutMargSet grestore Binary files lout-3.26/doc/user/.pie_intr.swp and lout-3.27/doc/user/.pie_intr.swp differ diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/README lout-3.27/doc/user/README --- lout-3.26/doc/user/README Wed Oct 16 08:09:14 2002 +++ lout-3.27/doc/user/README Fri Nov 22 09:39:13 2002 @@ -17,22 +17,14 @@ should gradually go away on later runs. The following shows the error message output on the later runs for A4 size printing: -lout file "typ_repo" (from "typ" line 19, from "all" line 38): - 38,1: 1.0c object too high for 0.2c space; will try elsewhere -lout file "typ_over" (from "typ" line 21, from "all" line 38): - 8,1: 1.0c object too high for 0.0c space; will try elsewhere -lout file "gra_summ" (from "gra" line 44, from "all" line 45): - 8,1: 23.6c object too high for 23.6c space; @Scale inserted -lout file "prg_tabs" (from "prg" line 108, from "all" line 46): - 58,23: prg2lout 2,1: program text ended within comment - 60,35: prg2lout 2,1: program text ended within comment +lout file "gra_summ" (from "gra" line 44, from "all" line 46): + 10,1: 23.7c object too high for 23.6c space; @Scale inserted +lout file "prg_tabs" (from "prg" line 112, from "all" line 48): + 66,23: prg2lout 2,1: program text ended within comment + 68,35: prg2lout 2,1: program text ended within comment -The first two warnings are about footnotes whose first lines did not -fit on the bottom of the current page, so had to begin on the following -page. The third warning is about a large table that had to be scaled -down very slightly to fit on the page (lengths are printed to one -decimal place, which in this case gives the misleading impression -that the table did actually fit to begin with). The last two warnings +The first warning is about a large table that had to be scaled +down very slightly to fit on the page. The last two warnings point to two places where a C program text ended inside a comment, which in these cases was deliberate. If you set the document in Letter size paper, you will get a somewhat different set of warning @@ -43,7 +35,7 @@ close to large unbreakable displays. A copy of the final PostScript output file (A4 paper size) is -stored at "ftp://ftp.cs.su.oz.au/jeff/lout/lout-3.26.user.ps.gz". +stored at "ftp://ftp.cs.su.oz.au/jeff/lout/lout-3.27.user.ps.gz". Jeffrey H. Kingston -16 October 2002 +22 November 2002 diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/all lout-3.27/doc/user/all --- lout-3.26/doc/user/all Tue Oct 8 16:13:13 2002 +++ lout-3.27/doc/user/all Fri Nov 22 09:02:31 2002 @@ -1,8 +1,9 @@ +@SysInclude { xrgb } @SysInclude { tab } @SysInclude { tbl } @SysInclude { eq } -@SysInclude { fig } @SysInclude { graph } +@SysInclude { pie } @SysInclude { pas } @SysInclude { diag } @SysInclude { cprint } @@ -21,11 +22,11 @@ Document Formatting System } @Author { Jeffrey H. Kingston } - @Edition { Version 3.26 -October, 2002 } + @Edition { Version 3.27 +November, 2002 } @Publisher { Copyright @CopyRight 1991, 2002 Jeffrey H. Kingston, -Basser Department of Computer Science, +School of Information Technologies, The University of Sydney 2006, Australia. ISBN 0 86758 951 5. } @InitialLanguage { English } @@ -43,7 +44,9 @@ @Include { bgr } @Include { dia } @Include { gra } +@Include { pie } @Include { prg } @Include { pascal } @Include { ap_qck } @Include { ap_byp } +@Include { ap_col } diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/ap_byp lout-3.27/doc/user/ap_byp --- lout-3.26/doc/user/ap_byp Wed Sep 18 12:22:38 2002 +++ lout-3.27/doc/user/ap_byp Sun Nov 17 16:59:49 2002 @@ -4,6 +4,7 @@ @Begin @PP The `bypass' symbols described in this appendix are intended to be +bypass.symbols @Index { bypass symbols } used only in Lout which is generated by computer programs. Their purpose is to bypass the Lout cross reference database, and so reduce the number of passes needed to finalise a document. These symbols diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/ap_col lout-3.27/doc/user/ap_col --- lout-3.26/doc/user/ap_col Thu Jan 1 10:00:00 1970 +++ lout-3.27/doc/user/ap_col Tue Nov 19 15:29:17 2002 @@ -0,0 +1,581 @@ +@Appendix + @Title { Lots more colours } + @Tag { morecolours } +@Begin +Here is the long list of extra colours, said to be from the +xrgb @Index { @Code "@Xrgb" symbol } +X windows system, that you can get by placing +@Code "@SysInclude { xrgb }" at the start of your document and +using the @Code "@Xrgb" symbol. For example, you might write +@ID @Code "{@Xrgb oldlace} @Colour ..." +or +@ID @Code "@Box paint { @Xrgb oldlace } ..." +You can't get these colours just by giving their +names; you have to use the @Code "@Xrgb" symbol. Wherever +@Code "grey" appears it may also be spelt {@Code gray}. +@PP +There are 541 colours here. I've removed capitalized alternative +spellings and hyphens from the information provided to me. Thanks +to Mark Summerfield for providing this information. +@DP +@XRGBTest black +@XRGBTest snow +@XRGBTest ghostwhite +@XRGBTest whitesmoke +@XRGBTest gainsboro +@XRGBTest floralwhite +@XRGBTest oldlace +@XRGBTest linen +@XRGBTest antiquewhite +@XRGBTest papayawhip +@XRGBTest blanchedalmond +@XRGBTest bisque +@XRGBTest peachpuff +@XRGBTest navajowhite +@XRGBTest moccasin +@XRGBTest cornsilk +@XRGBTest ivory +@XRGBTest lemonchiffon +@XRGBTest seashell +@XRGBTest honeydew +@XRGBTest mintcream +@XRGBTest azure +@XRGBTest aliceblue +@XRGBTest lavender +@XRGBTest lavenderblush +@XRGBTest mistyrose +@XRGBTest white +@XRGBTest darkslategrey +@XRGBTest dimgrey +@XRGBTest slategrey +@XRGBTest lightslategrey +@XRGBTest grey +@XRGBTest lightgrey +@XRGBTest midnightblue +@XRGBTest navy +@XRGBTest navyblue +@XRGBTest cornflowerblue +@XRGBTest darkslateblue +@XRGBTest slateblue +@XRGBTest mediumslateblue +@XRGBTest lightslateblue +@XRGBTest mediumblue +@XRGBTest royalblue +@XRGBTest blue +@XRGBTest dodgerblue +@XRGBTest deepskyblue +@XRGBTest skyblue +@XRGBTest lightskyblue +@XRGBTest steelblue +@XRGBTest lightsteelblue +@XRGBTest lightblue +@XRGBTest powderblue +@XRGBTest paleturquoise +@XRGBTest darkturquoise +@XRGBTest mediumturquoise +@XRGBTest turquoise +@XRGBTest cyan +@XRGBTest lightcyan +@XRGBTest cadetblue +@XRGBTest mediumaquamarine +@XRGBTest aquamarine +@XRGBTest darkgreen +@XRGBTest darkolivegreen +@XRGBTest darkseagreen +@XRGBTest seagreen +@XRGBTest mediumseagreen +@XRGBTest lightseagreen +@XRGBTest palegreen +@XRGBTest springgreen +@XRGBTest lawngreen +@XRGBTest green +@XRGBTest chartreuse +@XRGBTest mediumspringgreen +@XRGBTest greenyellow +@XRGBTest limegreen +@XRGBTest yellowgreen +@XRGBTest forestgreen +@XRGBTest olivedrab +@XRGBTest darkkhaki +@XRGBTest khaki +@XRGBTest palegoldenrod +@XRGBTest lightgoldenrodyellow +@XRGBTest lightyellow +@XRGBTest yellow +@XRGBTest gold +@XRGBTest lightgoldenrod +@XRGBTest goldenrod +@XRGBTest darkgoldenrod +@XRGBTest rosybrown +@XRGBTest indianred +@XRGBTest saddlebrown +@XRGBTest sienna +@XRGBTest peru +@XRGBTest burlywood +@XRGBTest beige +@XRGBTest wheat +@XRGBTest sandybrown +@XRGBTest tan +@XRGBTest chocolate +@XRGBTest firebrick +@XRGBTest brown +@XRGBTest darksalmon +@XRGBTest salmon +@XRGBTest lightsalmon +@XRGBTest orange +@XRGBTest darkorange +@XRGBTest coral +@XRGBTest lightcoral +@XRGBTest tomato +@XRGBTest orangered +@XRGBTest red +@XRGBTest hotpink +@XRGBTest deeppink +@XRGBTest pink +@XRGBTest lightpink +@XRGBTest palevioletred +@XRGBTest maroon +@XRGBTest mediumvioletred +@XRGBTest violetred +@XRGBTest magenta +@XRGBTest violet +@XRGBTest plum +@XRGBTest orchid +@XRGBTest mediumorchid +@XRGBTest darkorchid +@XRGBTest darkviolet +@XRGBTest blueviolet +@XRGBTest purple +@XRGBTest mediumpurple +@XRGBTest thistle +@XRGBNoTest +@XRGBNoTest +@XRGBNoTest +@XRGBNoTest +@DP +@XRGBTest snow1 +@XRGBTest snow2 +@XRGBTest snow3 +@XRGBTest snow4 +@XRGBTest seashell1 +@XRGBTest seashell2 +@XRGBTest seashell3 +@XRGBTest seashell4 +@XRGBTest antiquewhite1 +@XRGBTest antiquewhite2 +@XRGBTest antiquewhite3 +@XRGBTest antiquewhite4 +@XRGBTest bisque1 +@XRGBTest bisque2 +@XRGBTest bisque3 +@XRGBTest bisque4 +@XRGBTest peachpuff1 +@XRGBTest peachpuff2 +@XRGBTest peachpuff3 +@XRGBTest peachpuff4 +@XRGBTest navajowhite1 +@XRGBTest navajowhite2 +@XRGBTest navajowhite3 +@XRGBTest navajowhite4 +@XRGBTest lemonchiffon1 +@XRGBTest lemonchiffon2 +@XRGBTest lemonchiffon3 +@XRGBTest lemonchiffon4 +@XRGBTest cornsilk1 +@XRGBTest cornsilk2 +@XRGBTest cornsilk3 +@XRGBTest cornsilk4 +@XRGBTest ivory1 +@XRGBTest ivory2 +@XRGBTest ivory3 +@XRGBTest ivory4 +@XRGBTest honeydew1 +@XRGBTest honeydew2 +@XRGBTest honeydew3 +@XRGBTest honeydew4 +@XRGBTest lavenderblush1 +@XRGBTest lavenderblush2 +@XRGBTest lavenderblush3 +@XRGBTest lavenderblush4 +@XRGBTest mistyrose1 +@XRGBTest mistyrose2 +@XRGBTest mistyrose3 +@XRGBTest mistyrose4 +@XRGBTest azure1 +@XRGBTest azure2 +@XRGBTest azure3 +@XRGBTest azure4 +@XRGBTest slateblue1 +@XRGBTest slateblue2 +@XRGBTest slateblue3 +@XRGBTest slateblue4 +@XRGBTest royalblue1 +@XRGBTest royalblue2 +@XRGBTest royalblue3 +@XRGBTest royalblue4 +@XRGBTest blue1 +@XRGBTest blue2 +@XRGBTest blue3 +@XRGBTest blue4 +@XRGBTest dodgerblue1 +@XRGBTest dodgerblue2 +@XRGBTest dodgerblue3 +@XRGBTest dodgerblue4 +@XRGBTest steelblue1 +@XRGBTest steelblue2 +@XRGBTest steelblue3 +@XRGBTest steelblue4 +@XRGBTest deepskyblue1 +@XRGBTest deepskyblue2 +@XRGBTest deepskyblue3 +@XRGBTest deepskyblue4 +@XRGBTest skyblue1 +@XRGBTest skyblue2 +@XRGBTest skyblue3 +@XRGBTest skyblue4 +@XRGBTest lightskyblue1 +@XRGBTest lightskyblue2 +@XRGBTest lightskyblue3 +@XRGBTest lightskyblue4 +@XRGBTest lightsteelblue1 +@XRGBTest lightsteelblue2 +@XRGBTest lightsteelblue3 +@XRGBTest lightsteelblue4 +@XRGBTest lightblue1 +@XRGBTest lightblue2 +@XRGBTest lightblue3 +@XRGBTest lightblue4 +@XRGBTest lightcyan1 +@XRGBTest lightcyan2 +@XRGBTest lightcyan3 +@XRGBTest lightcyan4 +@XRGBTest paleturquoise1 +@XRGBTest paleturquoise2 +@XRGBTest paleturquoise3 +@XRGBTest paleturquoise4 +@XRGBTest cadetblue1 +@XRGBTest cadetblue2 +@XRGBTest cadetblue3 +@XRGBTest cadetblue4 +@XRGBTest turquoise1 +@XRGBTest turquoise2 +@XRGBTest turquoise3 +@XRGBTest turquoise4 +@XRGBTest cyan1 +@XRGBTest cyan2 +@XRGBTest cyan3 +@XRGBTest cyan4 +@XRGBTest aquamarine1 +@XRGBTest aquamarine2 +@XRGBTest aquamarine3 +@XRGBTest aquamarine4 +@XRGBTest darkseagreen1 +@XRGBTest darkseagreen2 +@XRGBTest darkseagreen3 +@XRGBTest darkseagreen4 +@XRGBTest seagreen1 +@XRGBTest seagreen2 +@XRGBTest seagreen3 +@XRGBTest seagreen4 +@XRGBTest palegreen1 +@XRGBTest palegreen2 +@XRGBTest palegreen3 +@XRGBTest palegreen4 +@XRGBTest springgreen1 +@XRGBTest springgreen2 +@XRGBTest springgreen3 +@XRGBTest springgreen4 +@XRGBTest green1 +@XRGBTest green2 +@XRGBTest green3 +@XRGBTest green4 +@XRGBTest chartreuse1 +@XRGBTest chartreuse2 +@XRGBTest chartreuse3 +@XRGBTest chartreuse4 +@XRGBTest olivedrab1 +@XRGBTest olivedrab2 +@XRGBTest olivedrab3 +@XRGBTest olivedrab4 +@XRGBTest darkolivegreen1 +@XRGBTest darkolivegreen2 +@XRGBTest darkolivegreen3 +@XRGBTest darkolivegreen4 +@XRGBTest khaki1 +@XRGBTest khaki2 +@XRGBTest khaki3 +@XRGBTest khaki4 +@XRGBTest lightgoldenrod1 +@XRGBTest lightgoldenrod2 +@XRGBTest lightgoldenrod3 +@XRGBTest lightgoldenrod4 +@XRGBTest lightyellow1 +@XRGBTest lightyellow2 +@XRGBTest lightyellow3 +@XRGBTest lightyellow4 +@XRGBTest yellow1 +@XRGBTest yellow2 +@XRGBTest yellow3 +@XRGBTest yellow4 +@XRGBTest gold1 +@XRGBTest gold2 +@XRGBTest gold3 +@XRGBTest gold4 +@XRGBTest goldenrod1 +@XRGBTest goldenrod2 +@XRGBTest goldenrod3 +@XRGBTest goldenrod4 +@XRGBTest darkgoldenrod1 +@XRGBTest darkgoldenrod2 +@XRGBTest darkgoldenrod3 +@XRGBTest darkgoldenrod4 +@XRGBTest rosybrown1 +@XRGBTest rosybrown2 +@XRGBTest rosybrown3 +@XRGBTest rosybrown4 +@XRGBTest indianred1 +@XRGBTest indianred2 +@XRGBTest indianred3 +@XRGBTest indianred4 +@XRGBTest sienna1 +@XRGBTest sienna2 +@XRGBTest sienna3 +@XRGBTest sienna4 +@XRGBTest burlywood1 +@XRGBTest burlywood2 +@XRGBTest burlywood3 +@XRGBTest burlywood4 +@XRGBTest wheat1 +@XRGBTest wheat2 +@XRGBTest wheat3 +@XRGBTest wheat4 +@XRGBTest tan1 +@XRGBTest tan2 +@XRGBTest tan3 +@XRGBTest tan4 +@XRGBTest chocolate1 +@XRGBTest chocolate2 +@XRGBTest chocolate3 +@XRGBTest chocolate4 +@XRGBTest firebrick1 +@XRGBTest firebrick2 +@XRGBTest firebrick3 +@XRGBTest firebrick4 +@XRGBTest brown1 +@XRGBTest brown2 +@XRGBTest brown3 +@XRGBTest brown4 +@XRGBTest salmon1 +@XRGBTest salmon2 +@XRGBTest salmon3 +@XRGBTest salmon4 +@XRGBTest lightsalmon1 +@XRGBTest lightsalmon2 +@XRGBTest lightsalmon3 +@XRGBTest lightsalmon4 +@XRGBTest orange1 +@XRGBTest orange2 +@XRGBTest orange3 +@XRGBTest orange4 +@XRGBTest darkorange1 +@XRGBTest darkorange2 +@XRGBTest darkorange3 +@XRGBTest darkorange4 +@XRGBTest coral1 +@XRGBTest coral2 +@XRGBTest coral3 +@XRGBTest coral4 +@XRGBTest tomato1 +@XRGBTest tomato2 +@XRGBTest tomato3 +@XRGBTest tomato4 +@XRGBTest orangered1 +@XRGBTest orangered2 +@XRGBTest orangered3 +@XRGBTest orangered4 +@XRGBTest red1 +@XRGBTest red2 +@XRGBTest red3 +@XRGBTest red4 +@XRGBTest deeppink1 +@XRGBTest deeppink2 +@XRGBTest deeppink3 +@XRGBTest deeppink4 +@XRGBTest hotpink1 +@XRGBTest hotpink2 +@XRGBTest hotpink3 +@XRGBTest hotpink4 +@XRGBTest pink1 +@XRGBTest pink2 +@XRGBTest pink3 +@XRGBTest pink4 +@XRGBTest lightpink1 +@XRGBTest lightpink2 +@XRGBTest lightpink3 +@XRGBTest lightpink4 +@XRGBTest palevioletred1 +@XRGBTest palevioletred2 +@XRGBTest palevioletred3 +@XRGBTest palevioletred4 +@XRGBTest maroon1 +@XRGBTest maroon2 +@XRGBTest maroon3 +@XRGBTest maroon4 +@XRGBTest violetred1 +@XRGBTest violetred2 +@XRGBTest violetred3 +@XRGBTest violetred4 +@XRGBTest magenta1 +@XRGBTest magenta2 +@XRGBTest magenta3 +@XRGBTest magenta4 +@XRGBTest orchid1 +@XRGBTest orchid2 +@XRGBTest orchid3 +@XRGBTest orchid4 +@XRGBTest plum1 +@XRGBTest plum2 +@XRGBTest plum3 +@XRGBTest plum4 +@XRGBTest mediumorchid1 +@XRGBTest mediumorchid2 +@XRGBTest mediumorchid3 +@XRGBTest mediumorchid4 +@XRGBTest darkorchid1 +@XRGBTest darkorchid2 +@XRGBTest darkorchid3 +@XRGBTest darkorchid4 +@XRGBTest purple1 +@XRGBTest purple2 +@XRGBTest purple3 +@XRGBTest purple4 +@XRGBTest mediumpurple1 +@XRGBTest mediumpurple2 +@XRGBTest mediumpurple3 +@XRGBTest mediumpurple4 +@XRGBTest thistle1 +@XRGBTest thistle2 +@XRGBTest thistle3 +@XRGBTest thistle4 +@XRGBNoTest +@XRGBNoTest +@XRGBNoTest +@XRGBNoTest +@DP +@XRGBTest grey0 +@XRGBTest grey1 +@XRGBTest grey2 +@XRGBTest grey3 +@XRGBTest grey4 +@XRGBTest grey5 +@XRGBTest grey6 +@XRGBTest grey7 +@XRGBTest grey8 +@XRGBTest grey9 +@XRGBTest grey10 +@XRGBTest grey11 +@XRGBTest grey12 +@XRGBTest grey13 +@XRGBTest grey14 +@XRGBTest grey15 +@XRGBTest grey16 +@XRGBTest grey17 +@XRGBTest grey18 +@XRGBTest grey19 +@XRGBTest grey20 +@XRGBTest grey21 +@XRGBTest grey22 +@XRGBTest grey23 +@XRGBTest grey24 +@XRGBTest grey25 +@XRGBTest grey26 +@XRGBTest grey27 +@XRGBTest grey28 +@XRGBTest grey29 +@XRGBTest grey30 +@XRGBTest grey31 +@XRGBTest grey32 +@XRGBTest grey33 +@XRGBTest grey34 +@XRGBTest grey35 +@XRGBTest grey36 +@XRGBTest grey37 +@XRGBTest grey38 +@XRGBTest grey39 +@XRGBTest grey40 +@XRGBTest grey41 +@XRGBTest grey42 +@XRGBTest grey43 +@XRGBTest grey44 +@XRGBTest grey45 +@XRGBTest grey46 +@XRGBTest grey47 +@XRGBTest grey48 +@XRGBTest grey49 +@XRGBTest grey50 +@XRGBTest grey51 +@XRGBTest grey52 +@XRGBTest grey53 +@XRGBTest grey54 +@XRGBTest grey55 +@XRGBTest grey56 +@XRGBTest grey57 +@XRGBTest grey58 +@XRGBTest grey59 +@XRGBTest grey60 +@XRGBTest grey61 +@XRGBTest grey62 +@XRGBTest grey63 +@XRGBTest grey64 +@XRGBTest grey65 +@XRGBTest grey66 +@XRGBTest grey67 +@XRGBTest grey68 +@XRGBTest grey69 +@XRGBTest grey70 +@XRGBTest grey71 +@XRGBTest grey72 +@XRGBTest grey73 +@XRGBTest grey74 +@XRGBTest grey75 +@XRGBTest grey76 +@XRGBTest grey77 +@XRGBTest grey78 +@XRGBTest grey79 +@XRGBTest grey80 +@XRGBTest grey81 +@XRGBTest grey82 +@XRGBTest grey83 +@XRGBTest grey84 +@XRGBTest grey85 +@XRGBTest grey86 +@XRGBTest grey87 +@XRGBTest grey88 +@XRGBTest grey89 +@XRGBTest grey90 +@XRGBTest grey91 +@XRGBTest grey92 +@XRGBTest grey93 +@XRGBTest grey94 +@XRGBTest grey95 +@XRGBTest grey96 +@XRGBTest grey97 +@XRGBTest grey98 +@XRGBTest grey99 +@XRGBTest grey100 +@XRGBNoTest +@XRGBNoTest +@XRGBNoTest +@XRGBNoTest +@DP +@XRGBTest darkgrey +@XRGBTest darkblue +@XRGBTest darkcyan +@XRGBTest darkmagenta +@XRGBTest darkred +@XRGBTest lightgreen +@XRGBNoTest # makes a dummy last line to ensure adjusting on all lines +@XRGBNoTest +@XRGBNoTest +@XRGBNoTest +@End @Appendix diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/bas_font lout-3.27/doc/user/bas_font --- lout-3.26/doc/user/bas_font Wed Sep 18 12:22:37 2002 +++ lout-3.27/doc/user/bas_font Thu Nov 21 21:11:45 2002 @@ -4,7 +4,6 @@ @Begin @PP A @I font is a collection of characters that may be printed. For -font. @Index { font } example, here is the Times Roman font: @ID @OneRow { Times Base } @Font 0.05c @Space { { @Char space } @@ -574,7 +573,7 @@ family is used. @PP The @Code "@Font" symbol changes the font of the following object. For -font.sym @Index @Code "@Font" +font.sym @Index { @Code "@Font" symbol } example, @ID @Code "{ Helvetica Slope } @Font { Hello World }" produces @@ -607,7 +606,7 @@ because it makes equation formatting easy, and examples like the above look poor anyway. However, if you want to do this and so require alignment through the baseline, you can get it, with the @Code baselinemark -option to the @Code "@Font" symbol like this: +option to the @Code "@Font" symbol: @ID @Code "baselinemark @Font { Here's a 20p @Font big word }" which produces @ID @Code { baselinemark @Font { Here's a 20p @Font big word } } @@ -615,20 +614,18 @@ @Code { baselinemark } in your initial font (see below). Lout's equation formatter contains the opposite option, which is @Code "xheight2mark @Font { ... }" -(meaning that the alignment goes through a point half the height of +(which aligns through a point half the height of an x character) so you won't disrupt equation formatting if you do -this, although you will have a problem if you put an equation inside -a paragraph, since its axis will be aligned with the baseline of -the adjacent words. +this, although if you put an equation inside a paragraph, its +axis will be aligned with the baseline of the adjacent words. @PP -For the convenience of people who use fixed width fonts such as -Courier, there is an @Code "@F" symbol which switches to a -fixed width font family: +There is an @Code "@F" symbol which switches to a fixed width font +family: @ID @Code "@F { Hello world }" -produces +produces the equivalent of @Code "{ Courier Base -1p } @Font ...", +like this: @ID @F { Hello world } -It is the same as writing @Code "{ Courier Base -1p } @Font ..." -with the @Code "-1p" included to compensate for the relatively +The @Code "-1p" is included to compensate for the relatively large appearance of the Courier font. @PP The document as a whole will be set in @Code { Times Base 12p }. To diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/bas_head lout-3.27/doc/user/bas_head --- lout-3.26/doc/user/bas_head Wed Sep 18 12:22:37 2002 +++ lout-3.27/doc/user/bas_head Mon Nov 18 11:02:56 2002 @@ -25,8 +25,7 @@ headingfont. @Index @Code "@HeadingFont" file (Section {@NumberOf setup}). @PP -The @Code "@Heading" symbol may be used with any type of document, but it -is really intended only for simple ones. In complex documents, large-scale -structure symbols (Section {@NumberOf largescale}) are usually more -appropriate. +In complex documents, large-scale structure symbols +(Section {@NumberOf largescale}) are usually more appropriate +than the @Code "@Heading" symbol. @End @Section diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/bas_lang lout-3.27/doc/user/bas_lang --- lout-3.26/doc/user/bas_lang Wed Sep 18 12:22:37 2002 +++ lout-3.27/doc/user/bas_lang Mon Nov 18 11:17:03 2002 @@ -14,23 +14,6 @@ Changing language is quite analogous to changing font using the @Code "@Font" symbol. @PP -Since accented characters (Section {@NumberOf characters}) are always -available irrespective of the language, at first sight it might seem -that there is no need to bother informing Lout what language you are -writing in. However, words are hyphenated differently depending on the -hyphenation.languages @SubIndex { in languages other than English } -language, and some symbols have different results in different -languages. For example, -@ID @Code "Danish @Language @Date" -produces -@ID { Danish @Language @Date } -date.languages @SubIndex { in languages other than English } -time.languages @SubIndex { in languages other than English } -lists.languages @SubIndex { in languages other than English } -and the alphabetic list symbols of Section {@NumberOf lists} also -vary with the current language. So it's worth doing for the sake of -knowing that non-English parts will appear as they should. -@PP At the time of writing, the following languages were available: @ID @OneRow @Code { Croatian Hrvatski @@ -59,6 +42,23 @@ names, all equally acceptable to the @Code "@Language" symbol. @Code "EnglishUK" differs from @Code "English" only by applying hyphenation rules said to be more appropriate for British English. +@PP +Since accented characters (Section {@NumberOf characters}) are always +available irrespective of the language, at first sight it might seem +that there is no need to bother informing Lout what language you are +writing in. However, words are hyphenated differently depending on the +hyphenation.languages @SubIndex { in languages other than English } +language, and some symbols have different results in different +languages. For example, +@ID @Code "Danish @Language @Date" +produces +@ID { Danish @Language @Date } +date.languages @SubIndex { in languages other than English } +time.languages @SubIndex { in languages other than English } +lists.languages @SubIndex { in languages other than English } +and the alphabetic list symbols of Section {@NumberOf lists} also +vary with the current language. So it's worth doing for the sake of +knowing that non-English parts will appear as they should. @PP If your entire document is in a language other than English, you need to change the @Code "@InitialLanguage" option: diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/bas_par1 lout-3.27/doc/user/bas_par1 --- lout-3.26/doc/user/bas_par1 Wed Sep 18 12:22:37 2002 +++ lout-3.27/doc/user/bas_par1 Thu Nov 21 16:37:52 2002 @@ -34,7 +34,7 @@ The {@Code "@NP"} `new page' symbol causes the following paragraph to page. @Index { page, skipping to next } new.page @Index { new page } -np. @Index @Code "@NP" +np. @Index { @Code "@NP" (new page) } begin on a new page or column. Of course, Lout starts a new page or column automatically when the old one is full, so @Code "@NP" is needed only rarely. diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/bas_par2 lout-3.27/doc/user/bas_par2 --- lout-3.26/doc/user/bas_par2 Wed Sep 18 12:22:37 2002 +++ lout-3.27/doc/user/bas_par2 Thu Nov 21 18:44:07 2002 @@ -5,7 +5,7 @@ @PP @I { Paragraph breaking } is the process of paragraph.breaking @Index { paragraph breaking } -inserting line breaks into praragraphs at places appropriate to the column +inserting line breaks into paragraphs at places appropriate to the column width. Lout works out suitable column widths and performs paragraph breaking automatically, finding an `optimal' break with the method used by the @TeX @@ -20,7 +20,7 @@ } Changing the paragraph breaking style is similar to changing the font, colour, or language, and is done using the @Code "@Break" symbol: -break. @Index @Code "@Break" +breakzzz.sym @Index { @Code "@Break" symbol } @ID @Code "ragged @Break ..." This example causes every paragraph in the following object to be broken using the @Code ragged style, of which more below. @@ -255,7 +255,7 @@ You can turn them off with @Code "breakablefirst @Break" and @Code "breakablelast @Break". In both cases Lout makes it happen by breaking at the previous place, either between paragraphs or two lines from -the end of a paragraph. Alternatively, both features are compatible with -Lout's @Code "@OptimizePages" option, which will optimize the overall page -layout of the document subject to these requirements. +the end of a paragraph. Both features are compatible with Lout's +@Code "@OptimizePages" option, which optimizes the overall page +layout subject to these requirements. @End @Section diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/bas_spac lout-3.27/doc/user/bas_spac --- lout-3.26/doc/user/bas_spac Wed Sep 18 12:22:37 2002 +++ lout-3.27/doc/user/bas_spac Thu Nov 21 15:43:51 2002 @@ -72,7 +72,8 @@ {@Code "Hello"}. @PP When an object-consuming symbol like @Code "@I" is followed by an -braces. @Index { braces, effect of } +braces. @RawIndex { braces } +braces.in.lout @SubIndex { in Lout text } object enclosed in braces, that is the object consumed. For example, @ID @Code "This is @I { absolutely necessary }, since otherwise ..." produces diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/bas_star lout-3.27/doc/user/bas_star --- lout-3.26/doc/user/bas_star Wed Sep 18 12:22:37 2002 +++ lout-3.27/doc/user/bas_star Thu Nov 21 16:03:40 2002 @@ -100,7 +100,7 @@ of two other systems, troff and @TeX, if you prefer (Section {@NumberOf white}). @PP When Lout runs, you might see some error messages containing the words -error.messages @Index { error messages } +errors. @Index { errors } `unresolved cross reference' and `no destination point' -- not on file @Code "intro" above, but on more complicated ones (anything with a footnote, for example). These just mean that you have to run the @Code "lout" command diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/bgr lout-3.27/doc/user/bgr --- lout-3.26/doc/user/bgr Wed Sep 18 12:22:38 2002 +++ lout-3.27/doc/user/bgr Sun Nov 17 17:30:12 2002 @@ -3,12 +3,15 @@ @Tag { graphics } @Begin @LP -This chapter introduces some basic graphics symbols for colour, rotation, -scaling, and included illustrations. These are all from the standard -BasicLayout package, so no @Code "@SysInclude" line is needed to -get them. +This chapter introduces some basic graphics symbols for colour, texture, +graphics. @Index { graphics (basic) } +graphics.see @RawSubIndex { @I { see also } diagrams, graphs, pie graphs } +rotation, scaling, and included illustrations. These are all from the +standard BasicLayout package, so no @Code "@SysInclude" line is needed to +get them beyond the usual @Code "@SysInclude { doc }" or whatever. @BeginSections @Include { bgr_colo } +@Include { bgr_text } @Include { bgr_boxs } @Include { bgr_outl } @Include { bgr_rota } diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/bgr_boxs lout-3.27/doc/user/bgr_boxs --- lout-3.26/doc/user/bgr_boxs Wed Sep 18 12:22:38 2002 +++ lout-3.27/doc/user/bgr_boxs Sun Nov 17 17:25:59 2002 @@ -23,6 +23,8 @@ showing that a box may enclose an arbitrarily complicated object. @PP The @Code "@Box" symbol has a @Code margin option which determines the +box. @RawIndex @Code "@Box" +box.margin @SubIndex { @Code "margin" option } margin between the box and what it encloses. For example, @ID @OneRow @Code { "@Box" @@ -38,6 +40,7 @@ large headings (in overhead transparencies, say) need large margins. @PP There is a @Code "linewidth" option which determines the width +box.linewidth @SubIndex { @Code "linewidth" option } (thickness) of the line drawn around the boundary of the box: @ID @OneRow @Code { "@Box" @@ -60,6 +63,7 @@ around the box at all. @PP There is also a @Code "paint" option which paints a background of the +box.paint @SubIndex { @Code "paint" option } nominated colour: @ID @Code "@Box paint { grey } WARNING!" has result @@ -78,6 +82,61 @@ This works because the box is painted before the object it encloses is drawn on the page. @PP +Wherever there is a @Code paint option in Lout for painting the background +of something, there is always an accompanying @Code texture option for +box.texture @SubIndex { @Code "texture" option } +applying that paint with the textures described in +Section {@NumberOf textures}. For example, +@ID @Code "@Box paint { black } texture { brickwork } 50p @Font WARNING!" +produces +@FootNote { As explained in Section {@NumberOf textures}, if you can't +see any textures the problem is probably with your PostScript viewer. } +@ID @Box paint { black } texture { brickwork } 50p @Font WARNING! +If @Code paint is absent or @Code none then @Code texture will have no +effect. Since textures are naturally lighter than solid colour, you +will usually need darker paint when using textures than when not. +@PP +To set options on a texture within a @Code "texture" option, you can write +@ID @Code "texture { striped @Texture angle { 45d } scale { 2 } }" +mimicking the @Code "@Texture" symbol from Section {@NumberOf textures}, +but without any following object. However, it's clunky to have to type +both @Code texture and {@Code "@Texture"}, so by special arrangement you +can omit the @Code "@Texture" symbol within the @Code "texture" option: +@ID @Code "texture { striped angle { 45d } scale { 2 } }" +The value of the @Code "texture" option may also be an expert's texture +as required by {@Code "@SetTexture"}. Incidentally, there is no +significance in our laying out all the options along one line. As always +in Lout, the end of a line and a space mean the same. We've done it this +way because we think it's the clearest way to lay out the @Code texture option. +@PP +Let's just summarize the painting and texturing possibilities for boxes. +A box has three components: its outline, its background, and its content +(what appears inside). You can actually set the colour and texture of +all three components independently of each other, with a little trouble: +@ID @OneRow @Code @Verbatim { +black @Colour striped @Texture angle { 45d } +@Box + paint { lightgrey } + linewidth { 2p } + texture { striped angle { 90d } } +darkgrey @Colour striped @Texture scale { 2 } 50p @Font ABC +} +produces +@CD { +black @Colour striped @Texture angle { 45d } +@Box + paint { lightgrey } + linewidth { 2p } + texture { striped angle { 90d } } +darkgrey @Colour striped @Texture scale { 2 } 50p @Font ABC +} +The outline colour and texture are the colour and texture from outside +the box; the background colour and texture are always determined by the +@Code paint and @Code texture options; and the colour and texture of +the contents are inherited from outside the box, but can be changed as +shown if desired. Notice what happens when two textures overstrike: the +lower one shows through the unpainted parts of the upper one. +@PP There are @Code "@CurveBox" and @Code "@ShadowBox" symbols that curvebox. @Index @Code "@CurveBox" shadowbox. @Index @Code "@ShadowBox" @@ -89,9 +148,10 @@ A { @CurveBox { A curve box } } B { @ShadowBox { A shadow box } } } -These also have @Code "margin" and @Code "paint" options, and -@Code "@ShadowBox" has a @Code "shadow" option which determines -the thickness of the shadow (its default value is {@Code "0.2f"}). +These also have {@Code "margin"}, {@Code "linewidth"}, {@Code "paint"}, +and @Code "texture" options, and @Code "@ShadowBox" has a @Code "shadow" +option which determines the thickness of the shadow (its default value +is {@Code "0.2f"}). @PP Boxes are quite at home inside paragraphs, as @Box { a box }, @CurveBox { a curve box }, and @ShadowBox { a shadow box } @@ -116,8 +176,28 @@ "@OddPageTop { { My lovely document @LP @LocalWidthRule } @Right @PageNum }" } will draw a rule under just the three words. Of course, underlining using -the @Code "@Underline" symbol might be a better way to do this. Both -symbols have a @Code "linewidth" option which works like the one for -boxes described above. In particular, Lout leaves zero space for the -line, no matter how wide you make it. +the @Code "@Underline" symbol might be a better way to do this. +@PP +These two rule symbols are handled behind the scenes like the outlines +of boxes. Both symbols have a @Code "linewidth" option which works +like the one for boxes described above. In particular, Lout leaves +zero space for the line, no matter how wide you make it. And to change +the colour or texture of a rule, it must be enclosed in @Code "@Colour" +and @Code "@Texture" symbols: +@ID @Code "chessboard @Texture scale { 2 } @FullWidthRule linewidth { 8p }" +produces +@DP +chessboard @Texture scale { 2 } @FullWidthRule linewidth { 8p } +@DP +Notice how we have made sure that the rule is wide enough to +accommodate two rows of the chessboard texture. The author's +printer places a thin row of solid colour along the top of +this pattern. Logically it should not be there; it can be got +rid of by reducing the line width: +@ID @Code "chessboard @Texture scale { 2 } @FullWidthRule linewidth { 7.5p }" +produces +@DP +chessboard @Texture scale { 2 } @FullWidthRule linewidth { 7.5p } +@DP +We can only guess that the problem might be roundoff error. @End @Section diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/bgr_colo lout-3.27/doc/user/bgr_colo --- lout-3.26/doc/user/bgr_colo Wed Sep 18 12:22:38 2002 +++ lout-3.27/doc/user/bgr_colo Mon Nov 18 14:26:30 2002 @@ -12,7 +12,7 @@ @ID grey @Colour { Hello, world } The @Code "@Colour" symbol will accept any of the following colours: @QD @HAdjust @Tab - vmargin { 0.7vx } + vmargin { 0.5vx } hmargin { 0.2c } @Fmta { @Col A @Colour @FilledBox ! @Col @Code A ! @Col ! @Col B @Colour @FilledBox ! @Col @Code B ! @Col ! @@ -32,11 +32,13 @@ @Rowb A { black } B { white } } Monochrome output devices will render them as shades of grey. Colouring -something @Code white makes it invisible (unless it is being printed -on a coloured background), which is sometimes useful. +something @Code white makes it invisible (unless printed on a coloured +background), which is sometimes useful. See Appendix {@NumberOf morecolours} +to get many more colour names, using the @Code xrgb include file +and its @Code "@Xrgb" symbol. @PP In addition to the list of colours given above, there is a special -colour called {@Code nochange} which produces whatever colour you already +{@Code nochange} colour which produces whatever colour you already happen to be using; you can also use an empty object to ask for this. And you can get lots more colours by specifying them using numbers, like this: @ID @Code "{ rgb 0.5 0.5 1.0 } @Colour { Hello, world }" @@ -44,8 +46,7 @@ blue at intensity 1.0, producing @ID { rgb 0.5 0.5 1.0 } @Colour { Hello, world } In the strange world of colour coordinates, in which 0 is dark and 1 is -light, this is a light blue. You can also use the CMYK system if you -know what that is: +light, this is a light blue. You can also use the CMYK system: @ID @Code "{ cmyk 0.5 0.5 1.0 1.0 } @Colour { Hello, world }" produces @ID { cmyk 0.5 0.5 1.0 1.0 } @Colour { Hello, world } @@ -53,7 +54,7 @@ from this section, it means any of the names above, or {@Code nochange}, or an object beginning with @Code "rgb" or @Code "cmyk" as shown. @PP -Whether or not the colours produced by @Code "@Colour" actually +Whether the colours produced by @Code "@Colour" actually correspond with the names depends on the output device; the same nominal colour can look quite different on screen and on paper. @End @Section diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/bgr_rota lout-3.27/doc/user/bgr_rota --- lout-3.26/doc/user/bgr_rota Wed Sep 18 12:22:38 2002 +++ lout-3.27/doc/user/bgr_rota Sun Nov 17 17:27:00 2002 @@ -16,11 +16,11 @@ using the @Code "@Wide" symbol: wide @RawIndex { @Code "@Wide" } wide.rotate @SubIndex { with @Code "@Rotate" } -@ID @OneRow @Code { -"-90d @Rotate 4.5c @Wide {" -"Papal initiatives and influence from the crowning of" -"Charlemagne to the First Crusade" -"}" +@ID @OneRow @Code @Verbatim { +-90d @Rotate 4.5c @Wide { +Papal initiatives and influence from the crowning of +Charlemagne to the First Crusade +} } The result here is @ID { diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/bgr_text lout-3.27/doc/user/bgr_text --- lout-3.26/doc/user/bgr_text Thu Jan 1 10:00:00 1970 +++ lout-3.27/doc/user/bgr_text Thu Nov 21 21:45:31 2002 @@ -0,0 +1,258 @@ +@Section + @Title { Textures } + @Tag { textures } +@Begin +@PP +The @Code "@Texture" symbol works in the same kind of way as @Code "@Font" +texture.sym @Index { @Code "@Texture" symbol } +and @Code "@Colour" do. It causes the object to its right to be printed +in a texture specified by the object to its +left: +@ID @Code "striped @Texture 50p @Font ABC" +produces +@FootNote { +If you can't see the result here, or if you can see it but without +texture, then the fault is probably in your PostScript viewer. +The PostScript viewer used by the author (a 1997 version of @I { gv }) +shows a blank space here and throughout this section wherever a +texture is supposed to appear, but when printed on his printer +the textures appear correctly. +} +@CD striped @Texture 50p @Font ABC +The object to the right of @Code "@Texture" may be arbitrary as usual. +@PP +# Textures are harder to specify than colours, and only a few +# texture names are widely used. +Only a handful of textures +are offered by the @Code "@Texture" symbol; but, as some +compensation, there are options which allow any texture to +be scaled, printed at any angle, +texture.sym @RawIndex { @Code "@Texture" symbol } +texture.sym.scale @SubIndex { @Code "scale" option } +texture.sym.angle @SubIndex { @Code "angle" option } +texture.sym.hshift @SubIndex { @Code "hshift" option } +texture.sym.vshift @SubIndex { @Code "vshift" option } +and shifted: +@ID @OneRow @Code @Verbatim { +striped @Texture + scale { 2 } + angle { 45d } + hshift { 1p } + vshift { 3p } +50p @Font ABC +} +produces +@CD striped @Texture + scale { 2 } + angle { 45d } + hshift { 1p } + vshift { 3p } +50p @Font ABC +with the texture scaled by a factor of 2, printed at an angle of 45 +degrees, and shifted one point horizontally and three points +vertically. The @Code scale option causes equal scaling in the +horizontal and vertical directions; there is also {@Code hscale} +which scales horizontally only, and @Code vscale which scales +vertically only. As you would expect, the default values of these +options are @Code 1 for the scaling options, {@Code 0d} for {@Code angle}, +and {@Code 0p} for {@Code hshift} and {@Code vshift}. +# @PP +# Stripes would rarely need to be shifted in practice, but some of the other +# textures described below can benefit from shifting. +@PP +Here is the list of all textures offered by the @Code "@Texture" +symbol, with the options specific to each kind of texture, their +default values, and sample default output. Remember, all textures +take the {@Code angle}, {@Code scale}, {@Code hscale}, {@Code vscale}, +{@Code hshift}, and {@Code vshift} options as well. +@ID @OneRow @Tbl + mv { 0.5v } + aformat { @Cell ml { 0i } A | @Cell @Code B | @Cell mr { 0i } @I lines @Break C } +{ + +@Rowa + ma { 0i } + A { @TextureSample solid } + B { +"solid @Texture" +solid."texture" @Index { @Code "solid" "texture" } +} + +@Rowa + A { @TextureSample striped } + B { +"striped @Texture" +" width { 1p }" +" gap { 1p }" +} + C { "" +The width of each stripe +The width of each gap between stripes +striped."texture" @Index { @Code "striped" "texture" } +} + +@Rowa + A { @TextureSample grid } + B { +"grid @Texture" +" width { 1p }" +" gap { 1p }" +} + C { "" +The width of each stripe +grid."texture" @Index { @Code "grid" "texture" } +The width of each gap between stripes +} + +@Rowa + A { @TextureSample dotted } + B { +"dotted @Texture" +" radius { 0.5p }" +" gap { 2p }" +} + C { "" +The radius of each dot (filled circle) +dotted."texture" @Index { @Code "dotted" "texture" } +The gap between the centres of adjacent dots +} + +@Rowa + A { @TextureSample chessboard } + B { +"chessboard @Texture" +" width { 2p }" +} + C { "" +The width of each square +chessboard."texture" @Index { @Code "chessboard" "texture" } +} + +@Rowa + A { @TextureSample brickwork } + B { +"brickwork @Texture" +" width { 6p }" +" height { 2p }" +" linewidth { 0.5p }" +} + C { "" +The width of each brick +The height of each brick +brickwork."texture" @Index { @Code "brickwork" "texture" } +The width of the brickwork lines +} + +@Rowa + A { @TextureSample honeycomb } + B { +"honeycomb @Texture" +" radius { 2p }" +" linewidth { 0.5p }" +} + C { "" +The radius of each hexagon +honeycomb."texture" @Index { @Code "honeycomb" "texture" } +The width of the lines +} + +@Rowa + A { @TextureSample triangular } + B { +"triangular @Texture" +" radius { 4p }" +" linewidth { 0.5p }" +} + C { "" +The side length of each triangle +triangular."texture" @Index { @Code "triangular" "texture" } +The width of the lines +} + +@Rowa + mb { 0i } + A { @TextureSample string } + B { +"string @Texture" +" width { 12p }" +" height { 12p }" +" font { Times-Roman }" +" size { 10p }" +" value { \"*\" }" +} + C { "" +The width at which the string repeats +The height at which the string repeats +The font used to display the string (see below) +The font size used to display the string +string."texture" @Index { @Code "string" "texture" } +The characters to be displayed +} + +} +This last example seems like a good one for experimenting with +the {@Code hshift} and {@Code vshift} options, so here goes: +texture.sym.hshift @SubIndex { @Code "hshift" option } +texture.sym.vshift @SubIndex { @Code "vshift" option } +@ID @OneRow @Tbl + mv { 0.5v } + aformat { @Cell ml { 0i } A | @Cell @Code B | @Cell mr { 0i } @I lines @Break C } +{ +@Rowa + mb { 0i } + A { +@Box margin { 0i } +string @Texture hshift { 4p } vshift { 4p } +@Box margin { 2.0f } paint { black } {} +} + B { +"string @Texture" +" hshift { 4p }" +" vshift { 4p }" +} +} +You have to find the right amount of shift by experiment, especially +when combined with rotation and scaling. We recommend sticking to the +{@Code p} (points), {@Code m} (ems), {@Code c} (centimetres), and +{@Code i} (inches) units of measurement when giving length options +to {@Code "@Texture"} symbols. +@PP +Care is needed when using the @Code font and @Code value options +of {@Code "string @Texture"}, since these options are passed straight +through to the PostScript output without checking. The @Code "font" +option takes a PostScript name for a font, not a Lout name. Typical +PostScript font names, virtually certain to work, are {@Code Times-Roman} +and {@Code Helvetica}. Since Lout takes no special steps to make sure +that the font you ask for is available, you should restrict your font +choices to fonts known to be in use elsewhere on the same page, or +known to be always loaded in your viewing device. The @Code "value" +option must be a sequence of characters from the nominated font. +Although the value does not have to be quoted as shown, we recommend +it as a reminder of how limited the choices are here. Also, spaces in +your value will work better between quotes, and to make parentheses -- +@Code "(" and @Code ")" -- come out correctly they must be enclosed in +quotes and preceded by a backslash character, which you get as usual by +writing @I two backslash characters. For example, {@Code "\"\\\\(\""} +will produce one left parenthesis. +@PP +Notice that {@Code "solid @Texture"} produces solid colour, +or in other words no texture: +@ID @Code @Verbatim { +striped @Texture angle { 45d } +@Box linewidth { 2p } solid @Texture 50p @Font WARNING! +} +produces +@CD { +striped @Texture angle { 45d } +@Box linewidth { 2p } solid @Texture 50p @Font WARNING! +} +As shown, {@Code "solid @Texture"} is useful for switching back to +normal printing within a textured region. In this example, without +it the letters would have been striped as well. +@PP +Expert users can also make the object to the left of @Code "@Texture" +be anything that is acceptable to the left of the expert's symbol +{@Code "@SetTexture"}, allowing people who want to do some serious +work in PostScript to get arbitrary textures. Consult the Expert's +Guide for more about this. +@End @Section diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/dia lout-3.27/doc/user/dia --- lout-3.26/doc/user/dia Wed Sep 18 12:22:38 2002 +++ lout-3.27/doc/user/dia Thu Nov 21 17:18:50 2002 @@ -4,7 +4,8 @@ @Begin @LP This chapter describes how to use the @@Diag symbol -diag. @Index { @@Diag } +diagrams. @RawIndex { diagrams } +diag.diagrams @Index { @Code "@Diag" (diagrams) } @FootNote { Starting with Version 3.18 of Lout, the @@Diag symbol was enhanced with the {@Code "@ANode"}, {@Code "@BNode"}, and {@Code "@CNode"} symbols diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/dia_defi lout-3.27/doc/user/dia_defi --- lout-3.26/doc/user/dia_defi Wed Sep 18 12:22:38 2002 +++ lout-3.27/doc/user/dia_defi Thu Nov 21 16:00:35 2002 @@ -4,6 +4,10 @@ @Begin @PP @@Diag permits you to create your own node outlines and link paths, by +diagrams. @RawIndex { diagrams } +diagrams.definitions @SubIndex { definitions } +definitions. @RawIndex { definitions } +definitions.use.with.diagrams @SubIndex { use with diagrams } giving non-standard values to the @Code outline and @Code path options. This section shows how to do this for very simple shapes only; the following section introduces the large repertoire of geometrical @@ -34,14 +38,14 @@ The value of the @Code outline option is a sequence of points defined in this coordinate system: @ID { -@Code { -"@Node" -" outline {" -" 0 0" -" xsize 0" -" 0 ysize" -" 0 0" -" }" +@Code @Verbatim { +@Node + outline { + 0 0 + xsize 0 + 0 ysize + 0 0 + } } ||7ct @Diag { @@ -64,20 +68,21 @@ next with a straight line. It is conventional to proceed anticlockwise around the outline, but you may start anywhere. @PP -The {@Code paint}, {@Code outlinestyle}, {@Code outlinedashlength}, -and {@Code outlinewidth} options of @Code "@Node" work for user-defined -outlines exactly as they do for the standard ones: +The {@Code paint}, {@Code texture}, {@Code outlinestyle}, +{@Code outlinedashlength}, and {@Code outlinewidth} options of +@Code "@Node" work for user-defined outlines exactly as they do +for the standard ones: @ID { -@Code { -"@Node" -" outline {" -" 0 0" -" xsize 0" -" 0 ysize" -" 0 0" -" }" -" paint { lightgrey }" -" outlinestyle { solid dashed }" +@Code @Verbatim { +@Node + outline { + 0 0 + xsize 0 + 0 ysize + 0 0 + } + paint { lightgrey } + outlinestyle { solid dashed } } ||7ct @Diag { @@ -104,15 +109,15 @@ where @I point stands for any point. This causes the two points to be joined by an arc whose centre is at the given point: @ID { -@Code { -"@Node" -" outline {" -" 0 0" -" ysize 0" -" [ 0 0 ]" -" 0 ysize" -" 0 0" -" }" +@Code @Verbatim { +@Node + outline { + 0 0 + ysize 0 + [ 0 0 ] + 0 ysize + 0 0 + } } ||7ct @Diag { @@ -181,13 +186,13 @@ Tags (Section {@NumberOf dia_tags}) may be assigned to points within the outline option, like this: @ID { -@Code { -"@Node" -" outline {" -" LR:: { xsize 0 }" -" UL:: { 0 ysize }" -" 0 0 LR UL 0 0" -" }" +@Code @Verbatim { +@Node + outline { + LR:: { xsize 0 } + UL:: { 0 ysize } + 0 0 LR UL 0 0 + } } ||7ct @Diag { @@ -226,15 +231,15 @@ parallel, or antiparallel. A direction is given using the @Code ":<" symbol within an outline: @ID { -@Code { -"@Node" -" outline {" -" LR:: { xsize 0 }" -" LR:< 0d" -" UL:: { 0 ysize }" -" UL:< 270d" -" 0 0 LR UL 0 0" -" }" +@Code @Verbatim { +@Node + outline { + LR:: { xsize 0 } + LR:< 0d + UL:: { 0 ysize } + UL:< 270d + 0 0 LR UL 0 0 + } } ||7ct @Diag { @@ -271,13 +276,13 @@ values of the link's @Code from and @Code to options, and these form the basis of constructing the link path: @ID { -@Code { -"@Link" -" path {" -" FROM:: from" -" TO:: to" -" FROM TO" -" }" +@Code @Verbatim { +@Link + path { + FROM:: from + TO:: to + FROM TO + } } ||7ct { @@ -309,33 +314,33 @@ production the best thing to do with it is to add it to your extend. @Index { @Code extend keyword } @Code "mydefs" file in the following form: -@ID @OneRow @Code { -"extend @DiagSetup @Diag" -"macro @MyNode {" -" @Node" -" outline {" -" LR:: { xsize 0 }" -" LR:< 0d" -" UL:: { 0 ysize }" -" UL:< 270d" -" 0 0 LR UL 0 0" -" }" -"}" +@ID @OneRow @Code @Verbatim { +extend @DiagSetup @Diag +macro @MyNode { + @Node + outline { + LR:: { xsize 0 } + LR:< 0d + UL:: { 0 ysize } + UL:< 270d + 0 0 LR UL 0 0 + } +} } This says that we are `extending' the @@Diag symbol by adding a new symbol, {@Code "@MyNode"}, which stands for what follows it between braces. @Code "@MyNode" will then behave exactly like @Code "@Circle" and the other standard node symbols. The same pattern works for links: -@ID @OneRow @Code { -"extend @DiagSetup @Diag" -"macro @MyLink {" -" @Link" -" path {" -" FROM:: from" -" TO:: to" -" FROM TO" -" }" -"}" +@ID @OneRow @Code @Verbatim { +extend @DiagSetup @Diag +macro @MyLink { + @Link + path { + FROM:: from + TO:: to + FROM TO + } +} } If it is worth the effort to construct a new outline or link path, it is worth packaging it like this and thinking up a good name for it, @@ -343,15 +348,15 @@ @PP This same approach is also useful to define common combinations of options, even when there is no new outline or path: -@ID @OneRow @Code { -"extend @DiagSetup @Diag" -"macro @BigOctagon {" -" @Polygon" -" sides { 8 }" -" hsize { 5c }" -" vsize { 5c }" -" font { Bold }" -"}" +@ID @OneRow @Code @Verbatim { +extend @DiagSetup @Diag +macro @BigOctagon { + @Polygon + sides { 8 } + hsize { 5c } + vsize { 5c } + font { Bold } +} } Such definitions are very useful if the combinations occur frequently. Any options not mentioned have their usual default values, diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/dia_erro lout-3.27/doc/user/dia_erro --- lout-3.26/doc/user/dia_erro Wed Sep 18 12:22:38 2002 +++ lout-3.27/doc/user/dia_erro Thu Nov 21 21:24:00 2002 @@ -8,6 +8,8 @@ symbols are passed through Lout to the output file without checking, including anything containing @Code "@Diag" lengths, angles, points, and tags. Any errors in these options will not be detected until the file +errors. @RawIndex { errors } +errors.in.diagrams @SubIndex { in diagrams } is printed. @PP The most likely errors are {@I syntax @I errors}, as in @@ -27,6 +29,10 @@ If you see {@Code VMerror} in an error message, it means that the printer vmerror. @Index { @Code VMerror PostScript error } is running out of memory. In that case, one thing you can try is +diagrams. @RawIndex { diagrams } +diagrams.save @SubIndex { @Code "save" option } +save. @RawIndex { @Code "save" option } +save.in.diagrams @SubIndex { in diagrams } @ID @Code { "@Diag" " save { yes }" diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/dia_geom lout-3.27/doc/user/dia_geom --- lout-3.26/doc/user/dia_geom Wed Sep 18 12:22:38 2002 +++ lout-3.27/doc/user/dia_geom Fri Nov 15 08:45:48 2002 @@ -4,6 +4,9 @@ @Begin @PP @@Diag has many options whose values contain lengths, angles, and +diagrams. @RawIndex { diagrams } +diagrams.geometry @SubIndex { geometry } +geometry.diagrams @Index { geometry in diagrams } points. Options such as @Code margin and {@Code vsize}, which affect the size or appearance of the base of a node, may contain only the kinds of lengths described in Section {@NumberOf objects}; but in all other cases @@ -46,23 +49,23 @@ specified. Vector operations, with the aid of a few well-chosen tags, can greatly simplify the production of outlines: @ID { -@Code { -"@Node" -" outline {" -" SB:: {0 ysize} ** 0.4" -" ST:: {0 ysize} ** 0.6" -" HB:: {xsize 0} ** 0.7" -" SB" -" SB ++ HB" -" HB" -" xsize ysize * 0.5" -" HB ++ {0 ysize}" -" HB ++ ST" -" ST" -" SB" -" }" -" paint { grey }" -"{ 6c @Wide 2c @High }" +@Code @Verbatim { +@Node + outline { + SB:: {0 ysize} ** 0.4 + ST:: {0 ysize} ** 0.6 + HB:: {xsize 0} ** 0.7 + SB + SB ++ HB + HB + xsize ysize * 0.5 + HB ++ {0 ysize} + HB ++ ST + ST + SB + } + paint { grey } +{ 6c @Wide 2c @High } } ||7ct @Diag { @@ -96,8 +99,6 @@ permissible to change the value assigned to a tag by reassigning. @PP Two very useful symbols, {@Code angleto} and {@Code atangle}, bring -angleto. @Index { @Code angleto symbol in @Code "@Diag" } -atangle. @Index { @Code atangle symbol in @Code "@Diag" } angles into the algebra. The {@Code angleto} symbol finds the angle from one point to another. For example, @ID @Code "SB angleto ST" @@ -109,21 +110,20 @@ is the point @Code 2f from {@Code "B@NE"} to its northwest. @PP There is a @Code prev symbol, used only within {@Code outline} and -prev. @Index { @Code prev symbol in @Code "@Diag" } {@Code path}, which returns the previous point on the outline or path, ignoring points within {@Code "[]"}. It makes relative movements very easy: @ID { -@Code { -" outline {" -" 0 0" -" { 2c atangle 30d }" -" prev ++ { 2c atangle 90d }" -" prev ++ { 2c atangle 150d }" -" prev ++ { 2c atangle 210d }" -" prev ++ { 2c atangle 270d }" -" 0 0" -" }" +@Code @Verbatim { + outline { + 0 0 + { 2c atangle 30d } + prev ++ { 2c atangle 90d } + prev ++ { 2c atangle 150d } + prev ++ { 2c atangle 210d } + prev ++ { 2c atangle 270d } + 0 0 + } } ||7ct @Diag { ||2.5c @@ -145,8 +145,6 @@ always regretted later. @PP There are {@Code xcoord} and {@Code ycoord} symbols for finding the -xcoord. @Index { @Code xcoord symbol in @Code "@Diag" } -ycoord. @Index { @Code ycoord symbol in @Code "@Diag" } @I x and @I y coordinates of a point: @ID @Code { "{xcoord P1} min {xcoord P2}" "{ycoord P1} max {ycoord P2}" @@ -168,9 +166,9 @@ whose preceding object should be either a point or else the tag of a node with one of the standard shapes, and whose following object is an angle: -@ID @Code { -"{ xsize ysize*0.5 } boundaryatangle 45d" -"A boundaryatangle 45d" +@ID @Code @Verbatim { +{ xsize ysize*0.5 } boundaryatangle 45d +A boundaryatangle 45d } In the first case the result is the point, regardless of the angle. In the second case, the result is the point on the boundary of @@ -191,13 +189,13 @@ line to take is @ID @Code "from??CTR angleto to??CTR" and so the desired path is -@ID @Code { -"path {" -" FROM:: from boundaryatangle { from??CTR angleto to??CTR }" -" TO:: to boundaryatangle { to??CTR angleto from??CTR }" -" FROM" -" TO" -"}" +@ID @Code @Verbatim { +path { + FROM:: from boundaryatangle { from??CTR angleto to??CTR } + TO:: to boundaryatangle { to??CTR angleto from??CTR } + FROM + TO +} } The first line defines point @Code FROM to be on the boundary of @Code from at the appropriate angle, if @Code "from" is a node tag; diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/dia_intr lout-3.27/doc/user/dia_intr --- lout-3.26/doc/user/dia_intr Wed Sep 18 12:22:38 2002 +++ lout-3.27/doc/user/dia_intr Fri Nov 15 07:19:05 2002 @@ -48,6 +48,12 @@ @Code "}" } This reflects @@Diag's view of the world as consisting of {@I nodes} +diagrams. @RawIndex { diagrams } +diagrams.nodespart @SubIndex { nodes part } +nodespart.diagrams @Index { nodes part in diagrams } +diagrams. @RawIndex { diagrams } +diagrams.linkspart @SubIndex { links part } +linkspart.diagrams @Index { links part in diagrams } (circles, squares, and so on), which have to be put in their right places and then joined with @I links (lines, arrows). The technical meaning of the {@Code "//"} symbol does not concern us here; it @@ -75,6 +81,9 @@ pattern: they consume the following object, which may be arbitrary, draw a shape around it, and give back the resulting object. To insert links, the nodes must first be given names, called {@I tags}, using the @Code "::" symbol: +diagrams. @RawIndex { diagrams } +diagrams.tags @SubIndex { tags ({@Code "::"}) } +tags.diagrams @Index { tags ({@Code "::"}) in diagrams } @ID @OneRow @Code { "A:: @Ellipse { Hello, world }" "@DP" @@ -85,14 +94,14 @@ @Fmta { @Col 7c @Wide A ! @Col B } { @Rowa - A { @Code { -"@Diag {" -" A:: @Ellipse { Hello, world }" -" @DP" -" B:: @Square @I x" -" //" -" @Link from { A } to { B }" -"}" + A { @Code @Verbatim { +@Diag { + A:: @Ellipse { Hello, world } + @DP + B:: @Square @I x + // + @Link from { A } to { B } +} } } B { @Diag { A:: @Ellipse { Hello, world } diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/dia_labe lout-3.27/doc/user/dia_labe --- lout-3.26/doc/user/dia_labe Wed Sep 18 12:22:38 2002 +++ lout-3.27/doc/user/dia_labe Thu Nov 21 21:16:21 2002 @@ -4,6 +4,10 @@ @Begin @PP Diagrams often contain small @I labels adjacent to their nodes and links: +diagrams. @RawIndex { diagrams } +diagrams.labels @SubIndex { labels } +labels. @RawIndex { labels } +labels.in.diagrams @SubIndex { in diagrams } @CD @Diag nodelabelformat { @I @Body } { @@ -23,20 +27,27 @@ @Arrow from { B } to { C } ylabel { 20 } } Each node may have up to four labels, called {@Code alabel}, {@Code blabel}, -label. @Index { label options in @Code "@Diag" } -alabel. @Index { @Code alabel option in @Code "@Diag" } -blabel. @Index { @Code blabel option in @Code "@Diag" } -clabel. @Index { @Code clabel option in @Code "@Diag" } -dlabel. @Index { @Code dlabel option in @Code "@Diag" } +diagrams. @RawIndex { diagrams } +diagrams.alabel @SubIndex { @Code "alabel" option } +alabel.diagrams @Index { @Code "alabel" option (diagrams) } +diagrams. @RawIndex { diagrams } +diagrams.blabel @SubIndex { @Code "blabel" option } +blabel.diagrams @Index { @Code "blabel" option (diagrams) } +diagrams. @RawIndex { diagrams } +diagrams.clabel @SubIndex { @Code "clabel" option } +clabel.diagrams @Index { @Code "clabel" option (diagrams) } +diagrams. @RawIndex { diagrams } +diagrams.dlabel @SubIndex { @Code "dlabel" option } +dlabel.diagrams @Index { @Code "dlabel" option (diagrams) } {@Code clabel}, and {@Code dlabel}: @ID { -@Code { -"@Ellipse" -" alabel { a }" -" blabel { b }" -" clabel { c }" -" dlabel { d }" -"{ Hello, world }" +@Code @Verbatim { +@Ellipse + alabel { a } + blabel { b } + clabel { c } + dlabel { d } +{ Hello, world } } ||7ct @VContract @Diag { @@ -49,14 +60,29 @@ } } Links also have labels, five in fact: +diagrams. @RawIndex { diagrams } +diagrams.fromlabel @SubIndex { @Code "fromlabel" option } +fromlabel.diagrams @Index { @Code "fromlabel" option (diagrams) } +diagrams. @RawIndex { diagrams } +diagrams.xlabel @SubIndex { @Code "xlabel" option } +xlabel.diagrams @Index { @Code "xlabel" option (diagrams) } +diagrams. @RawIndex { diagrams } +diagrams.ylabel @SubIndex { @Code "ylabel" option } +ylabel.diagrams @Index { @Code "ylabel" option (diagrams) } +diagrams. @RawIndex { diagrams } +diagrams.zlabel @SubIndex { @Code "zlabel" option } +zlabel.diagrams @Index { @Code "zlabel" option (diagrams) } +diagrams. @RawIndex { diagrams } +diagrams.tolabel @SubIndex { @Code "tolabel" option } +tolabel.diagrams @Index { @Code "tolabel" option (diagrams) } @ID { -@Code { -"@Link" -" fromlabel { f }" -" xlabel { x }" -" ylabel { y }" -" zlabel { z }" -" tolabel { t }" +@Code @Verbatim { +@Link + fromlabel { f } + xlabel { x } + ylabel { y } + zlabel { z } + tolabel { t } } ||7ct @VContract @Diag { @@ -77,9 +103,9 @@ at a funny angle, because these labels are the means of attaching arrowheads to links: @ID { -@Code { -"@Link" -" tolabel { @SolidArrowHead }" +@Code @Verbatim { +@Link + tolabel { @SolidArrowHead } } ||7ct @VContract @Diag { @@ -109,14 +135,22 @@ are corresponding options for all nine labels. @PP The {@Code alabelfont} and {@Code alabelbreak} options determine the +diagrams. @RawIndex { diagrams } +diagrams.labelfont @SubIndex { @Code "labelfont" options } +labelfont. @RawIndex { @Code "labelfont" options } +labelfont.in.diagrams @SubIndex { in diagrams } +diagrams. @RawIndex { diagrams } +diagrams.labelbreak @SubIndex { @Code "labelbreak" options } +labelbreak. @RawIndex { @Code "labelbreak" options } +labelbreak.in.diagrams @SubIndex { in diagrams } font and paragraph breaking style of the label: @ID { -@Code { -"@Ellipse" -" alabel { a }" -" alabelfont { -2p }" -" alabelbreak { ragged nohyphen }" -"{ Hello, world }" +@Code @Verbatim { +@Ellipse + alabel { a } + alabelfont { -2p } + alabelbreak { ragged nohyphen } +{ Hello, world } } ||7ct @VContract @Diag { @@ -130,13 +164,17 @@ This example shows the default values of these two options; @Code "-2p" explains why the labels in earlier examples were printed in a smaller font size. There is also an {@Code alabelformat} option which allows +diagrams. @RawIndex { diagrams } +diagrams.labelformat @SubIndex { @Code "labelformat" options } +labelformat. @RawIndex { @Code "labelformat" options } +labelformat.in.diagrams @SubIndex { in diagrams } for more radical changes in appearance: @ID { -@Code { -"@Ellipse" -" alabel { a }" -" alabelformat { @Box @I @Body }" -"{ Hello, world }" +@Code @Verbatim { +@Ellipse + alabel { a } + alabelformat { @Box @I @Body } +{ Hello, world } } ||7ct @Diag { @@ -155,13 +193,13 @@ {@Code nodelabelformat} options which work in the same way but affect all of the node labels, not just one: @ID { -@Code { -"@Ellipse" -" nodelabelformat" -" { @Box @I @Body }" -" alabel { a }" -" blabel { b }" -"{ Hello, world }" +@Code @Verbatim { +@Ellipse + nodelabelformat + { @Box @I @Body } + alabel { a } + blabel { b } +{ Hello, world } } ||7ct @Diag { @@ -179,19 +217,19 @@ results that people do not expect.) The @Code "@Diag" symbol also has these options, in the usual way, and they are extremely useful there: @ID { -@Code { -"@Diag" -" nodelabelfont { Slope -2p }" -" linklabelformat { \"/\"@Body\"/\" }" -" hsize { 1.8c }" -"{" -" A:: @Ellipse alabel { a } { OK }" -" @DP" -" @DP" -" B:: @Ellipse alabel { b } { FAULT }" -" //" -" @Arrow from { A } to { B } ylabel { sig }" -"}" +@Code @Verbatim { +@Diag + nodelabelfont { Slope -2p } + linklabelformat { \/\@Body\/\ } + hsize { 1.8c } +{ + A:: @Ellipse alabel { a } { OK } + @DP + @DP + B:: @Ellipse alabel { b } { FAULT } + // + @Arrow from { A } to { B } ylabel { sig } +} } ||7ct @VContract @Diag @@ -225,15 +263,18 @@ link: {@Code alabel} in the north-east corner of the node, {@Code ylabel} halfway along the link, and so on. This general location of the label is defined by the {@Code alabelpos} option. Here +diagrams. @RawIndex { diagrams } +diagrams.labelpos @SubIndex { @Code "labelpos" options } +labelpos.diagrams @Index { @Code "labelpos" options (diagrams) } are the default values for all nine labels: @IL @LI { -@Code { -"@Node" -" alabelpos { NE }" -" blabelpos { NW }" -" clabelpos { SW }" -" dlabelpos { SE }" +@Code @Verbatim { +@Node + alabelpos { NE } + blabelpos { NW } + clabelpos { SW } + dlabelpos { SE } } ||7ct @VContract @Diag { @@ -242,13 +283,13 @@ } } @LI { -@Code { -"@Link" -" fromlabelpos { FROM }" -" xlabelpos { LFROM }" -" ylabelpos { LMID }" -" zlabelpos { LTO }" -" tolabelpos { TO }" +@Code @Verbatim { +@Link + fromlabelpos { FROM } + xlabelpos { LFROM } + ylabelpos { LMID } + zlabelpos { LTO } + tolabelpos { TO } } ||7ct @VContract @Diag { @@ -268,15 +309,21 @@ the formatting options above. @PP In a similar vein, there is an @Code { xindent } option which controls how +diagrams. @RawIndex { diagrams } +diagrams.xindent @SubIndex { @Code "xindent" option } +xindent.diagrams @Index { @Code "xindent" option (diagrams) } far from the start of the link the @Code "LFROM" tag, and hence the {@Code xlabel}, will appear. A similar option, @Code { zindent }, determines +diagrams. @RawIndex { diagrams } +diagrams.zindent @SubIndex { @Code "zindent" option } +zindent.diagrams @Index { @Code "zindent" option (diagrams) } how far from the end of the link the @Code "LTO" tag and hence the {@Code zlabel} will appear: @ID { -@Code { -"@Link" -" xindent { 1f }" -" zindent { 2f }" +@Code @Verbatim { +@Link + xindent { 1f } + zindent { 2f } } ||7ct @VContract @Diag { @@ -293,6 +340,9 @@ Both options have default value {@Code 0.8f}. @PP The @Code alabelangle option determines the angle at which the label is +diagrams. @RawIndex { diagrams } +diagrams.labelangle @SubIndex { @Code "labelangle" options } +labelangle.diagrams @Index { @Code "labelangle" options (diagrams) } printed: @ID @Tab @Fmta { @Col @Code A ! @Col B } @@ -308,6 +358,9 @@ B { Perpendicular to the outline or link path } } The @Code "alabelprox" option determines where in the proximity of +diagrams. @RawIndex { diagrams } +diagrams.labelprox @SubIndex { @Code "labelprox" options } +labelprox.diagrams @Index { @Code "labelprox" options (diagrams) } @Code alabelpos the label is printed: @ID @Tab @Fmta { @Col @Code A ! @Col B } @@ -334,14 +387,18 @@ going from @Code from to @Code to (the default for node labels) } } The {@Code alabelmargin} option adds a margin around all four sides of +diagrams. @RawIndex { diagrams } +diagrams.labelmargin @SubIndex { @Code "labelmargin" options } +labelmargin. @RawIndex { @Code "labelmargin" options } +labelmargin.in.diagrams @SubIndex { in diagrams } the label, thereby moving it away from {@Code alabelpos} irrespective of which direction it happens to lie in: @ID { -@Code { -"@Ellipse" -" alabel { a }" -" alabelmargin { 0f }" -"{ Hello, world }" +@Code @Verbatim { +@Ellipse + alabel { a } + alabelmargin { 0f } +{ Hello, world } } ||7ct @VContract @Diag { @@ -371,7 +428,7 @@ @PP The @Code alabelprox option may be {@Code N}, {@Code S}, {@Code E}, {@Code W}, {@Code NE}, {@Code SE}, {@Code NW}, -{@Code SW}, or {@Code CTR}: +{@Code SW}, {@Code NNW}, {@Code NNE}, {@Code SSW}, {@Code SSE}, or {@Code CTR}: @CD @Diag { //1f @ShowTags @Box margin { 0.5c } { 24p @Font grey @Colour @I label } @@ -400,6 +457,9 @@ or side midpoint slides up or down this line to the point which minimises the distance from {@Code alabelpos} to the centre of the label. Only @Code ylabelctr has @Code "yes" for its default value; the +diagrams. @RawIndex { diagrams } +diagrams.labelctr @SubIndex { @Code "labelctr" options } +labelctr.diagrams @Index { @Code "labelctr" options (diagrams) } @Code y label often looks better centred when this adjustment is made, particularly on lines with shallow but non-zero slope: @CD @Tab @@ -426,6 +486,10 @@ rather than one of its corners. @PP Finally, when all else fails there is an {@Code alabeladjust} option +diagrams. @RawIndex { diagrams } +diagrams.labeladjust @SubIndex { @Code "labeladjust" options } +labeladjust. @RawIndex { @Code "labeladjust" options } +labeladjust.in.diagrams @SubIndex { in diagrams } which translates the label by an arbitrary amount: @ID @Code "alabeladjust { -0.5c 1.5c }" causes the label to appear 0.5 centimetres to the left of and 1.5 centimetres diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/dia_link lout-3.27/doc/user/dia_link --- lout-3.26/doc/user/dia_link Wed Sep 18 12:22:38 2002 +++ lout-3.27/doc/user/dia_link Thu Nov 21 21:21:46 2002 @@ -4,15 +4,26 @@ @Begin @PP @Code "@Diag" has one basic symbol for creating links, called -link. @Index { @Code "@Link" symbol from @Code "@Diag" } +diagrams. @RawIndex { diagrams } +diagrams.link @SubIndex { @Code "@Link" symbol } +link.diagrams @Index { @Code "@Link" symbol (diagrams) } {@Code "@Link"}. It draws a link between two points or nodes given by {@Code from} and {@Code to} options, along a path +diagrams. @RawIndex { diagrams } +diagrams.from @SubIndex { @Code "from" option } +from.diagrams @Index { @Code "from" option (diagrams) } +diagrams. @RawIndex { diagrams } +diagrams.to @SubIndex { @Code "to" option } +to.diagrams @Index { @Code "to" option (diagrams) } given by a {@Code path} option: -@ID @Code { -"@Link" -" path { ... }" -" from { ... }" -" to { ... }" +diagrams. @RawIndex { diagrams } +diagrams.path @SubIndex { @Code "path" option } +path.diagrams @Index { @Code "path" option (diagrams) } +@ID @Code @Verbatim { +@Link + path { ... } + from { ... } + to { ... } } Unlike {@Code "@Node"}, {@Code "@Link"} has no following object. @PP @@ -72,6 +83,13 @@ made for two nodes very close together. @PP @Code "@Link" has two options, @Code bias and {@Code radius}, that may be +diagrams. @RawIndex { diagrams } +diagrams.bias @SubIndex { @Code "bias" option } +bias.diagrams @Index { @Code "bias" option (diagrams) } +diagrams. @RawIndex { diagrams } +diagrams.radius @SubIndex { @Code "radius" option } +radius. @RawIndex { @Code "radius" option } +radius.in.diagrams @SubIndex { in diagrams } used to fine-tune the path. The @Code "bias" option determines the maximum distance that a curve is permitted to stray: @CD @Tab @@ -108,10 +126,10 @@ Lout has no idea where the path is wandering, and cannot take it into account when placing a diagram on the page: @ID { -@Code { -"@Link" -" path { ccurve }" -" bias { 2c }" +@Code @Verbatim { +@Link + path { ccurve } + bias { 2c } } ||7ct @Diag vstrut { no } { @@ -130,6 +148,15 @@ document, unless overridden. @PP There are {@Code pathstyle}, {@Code pathdashlength} and {@Code pathwidth} +diagrams. @RawIndex { diagrams } +diagrams.pathstyle @SubIndex { @Code "pathstyle" option } +pathstyle.diagrams @Index { @Code "pathstyle" option (diagrams) } +diagrams. @RawIndex { diagrams } +diagrams.pathdashlength @SubIndex { @Code "pathdashlength" option } +pathdashlength.diagrams @Index { @Code "pathdashlength" option (diagrams) } +diagrams. @RawIndex { diagrams } +diagrams.pathwidth @SubIndex { @Code "pathwidth" option } +pathwidth.diagrams @Index { @Code "pathwidth" option (diagrams) } options which affect the appearance of the path in the same way as the {@Code outlinestyle}, {@Code outlinedashlength} and {@Code outlinewidth} options of {@Code "@Node"} affect the outline. When {@Code pathstyle} @@ -137,15 +164,20 @@ tries to divide the path into fewer segments than it would otherwise, to make dashed and dotted paths look as good as possible. There is also a {@Code pathgap} option which affects only @Code doubleline paths; it +diagrams. @RawIndex { diagrams } +diagrams.pathgap @SubIndex { @Code "pathgap" option } +pathgap.diagrams @Index { @Code "pathgap" option (diagrams) } determines the gap between the centres of the two lines. @PP The @Code "@Link" symbol has an @Code arrow option, which adds an -arrow. @Index { arrows } +diagrams. @RawIndex { diagrams } +diagrams.arrow.opt @SubIndex { @Code "arrow" option } +arrow.opt.diagrams @Index { @Code "arrow" option (diagrams) } arrowhead to the end of the link: @ID { -@Code { -"@Link" -" arrow { yes }" +@Code @Verbatim { +@Link + arrow { yes } } ||7ct @Diag { @@ -160,9 +192,9 @@ Its value may be {@Code no} (the default), {@Code yes}, {@Code forward} (which is the same as {@Code yes}), {@Code back}, or {@Code both}: @ID { -@Code { -"@Link" -" arrow { both }" +@Code @Verbatim { +@Link + arrow { both } } ||7ct @Diag { @@ -177,17 +209,26 @@ @Code "@Link" has three options for controlling the appearance of arrowheads: {@Code arrowstyle}, {@Code arrowwidth}, and {@Code arrowlength}. Although every link symbol has these options, for +diagrams. @RawIndex { diagrams } +diagrams.arrowstyle @SubIndex { @Code "arrowstyle" option } +arrowstyle.diagrams @Index { @Code "arrowstyle" option (diagrams) } +diagrams. @RawIndex { diagrams } +diagrams.arrowwidth @SubIndex { @Code "arrowwidth" option } +arrowwidth.diagrams @Index { @Code "arrowwidth" option (diagrams) } +diagrams. @RawIndex { diagrams } +diagrams.arrowlength @SubIndex { @Code "arrowlength" option } +arrowlength.diagrams @Index { @Code "arrowlength" option (diagrams) } consistency it is almost always better to set the corresponding options to the @Code "@Diag" symbol, which applies them to every arrow in the diagram: -@ID @Code { -"@Diag" -" arrowstyle { solid }" -" arrowwidth { 0.3f }" -" arrowlength { 0.5f }" -"{" -" ..." -"}" +@ID @Code @Verbatim { +@Diag + arrowstyle { solid } + arrowwidth { 0.3f } + arrowlength { 0.5f } +{ + ... +} } This shows the default values: a solid arrowhead like the ones above, @Code "0.3f" wide (across) and @Code "0.5f" long. The @Code "arrowwidth" @@ -245,15 +286,55 @@ not overstrike and thicken the point of the arrow. } @PP -It is possible to place an arbitrary object at the beginning or +Corresponding with {@Code arrowstyle}, {@Code arrowwidth}, and +{@Code arrowlength}, there are {@Code backarrowstyle}, +{@Code backarrowwidth}, and {@Code backarrowlength} options which +diagrams. @RawIndex { diagrams } +diagrams.backarrowstyle @SubIndex { @Code "backarrowstyle" option } +backarrowstyle.diagrams @Index { @Code "backarrowstyle" option (diagrams) } +diagrams. @RawIndex { diagrams } +diagrams.backarrowwidth @SubIndex { @Code "backarrowwidth" option } +backarrowwidth.diagrams @Index { @Code "backarrowwidth" option (diagrams) } +diagrams. @RawIndex { diagrams } +diagrams.backarrowlength @SubIndex { @Code "backarrowlength" option } +backarrowlength.diagrams @Index { @Code "backarrowlength" option (diagrams) } +determine the style and size of the back arrow; it doesn't have +to be the same style or size as the forward arrow: +@ID { +@Code @Verbatim { +@Link + arrow { both } + backarrowstyle { circle } +} +||7ct +@Diag { +1c @High 3c @Wide +// +@Link + from { 0,0 } + to { 1,1 } + arrow { both } + backarrowstyle { circle } +} +} +It is also possible to place an arbitrary object at the beginning or end of a link, using the @Code "fromlabel" and @Code "tolabel" options of Section {@NumberOf dia_labe}. @PP To save time in common cases, @Code "@Diag" provides link symbols, each of which is just @Code "@Link" with one of the standard paths already set: {@Code "@Line"}, {@Code "@Curve"}, {@Code "@CCurve"}, +diagrams. @RawIndex { diagrams } +diagrams.line @SubIndex { @Code "@Line" symbol } +line.diagrams @Index { @Code "@Line" symbol (diagrams) } +diagrams. @RawIndex { diagrams } +diagrams.curve @SubIndex { @Code "@Curve" symbol } +curve.diagrams @Index { @Code "@Curve" symbol (diagrams) } {@Code "@RVLCurve"}, and so on. There are also symbols in which the @Code "arrow" option is set to @Code yes in addition: {@Code "@Arrow"}, +diagrams. @RawIndex { diagrams } +diagrams.arrow.sym @SubIndex { @Code "@Arrow" symbol } +arrow.sym.diagrams @Index { @Code "@Arrow" symbol (diagrams) } {@Code "@CurveArrow"}, {@Code "@CCurveArrow"}, {@Code "@RVLCurveArrow"}, and so on. See the summary (Section {@NumberOf dia_summ}) for the full list of these symbols. You will still need the @Code "arrow" option diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/dia_node lout-3.27/doc/user/dia_node --- lout-3.26/doc/user/dia_node Wed Sep 18 12:22:38 2002 +++ lout-3.27/doc/user/dia_node Thu Nov 21 21:31:29 2002 @@ -4,14 +4,19 @@ @Begin @PP @Code "@Diag" has one basic symbol for creating nodes. It is called -node. @Index { @Code "@Node" } +diagrams. @RawIndex { diagrams } +diagrams.node @SubIndex { @Code "@Node" symbol } +node.diagrams @Index { @Code "@Node" symbol (diagrams) } {@Code "@Node"}, and it takes the following object and encloses it in an outline whose shape is determined by the {@Code "outline"} option: +diagrams. @RawIndex { diagrams } +diagrams.outline @SubIndex { @Code "outline" option } +outline.diagrams @Index { @Code "outline" option (diagrams) } @ID { -@Code { -"@Node" -" outline { curvebox }" -"{ Hello, world }" +@Code @Verbatim { +@Node + outline { curvebox } +{ Hello, world } } ||7ct @Diag { @@ -29,13 +34,16 @@ The shape of the outline is determined by the @Code outline option, but its size and position depend on the size and position of its {@I base}: the following object with a small margin around it. For +diagrams. @RawIndex { diagrams } +diagrams.base @SubIndex { base of a node } +base.diagrams @Index { base of a node in diagrams } example, this is how a circle is positioned over its base (shown in grey): @ID @OneRow { -@Code { -"@Node" -" outline { circle }" -"{ Hello, world }" +@Code @Verbatim { +@Node + outline { circle } +{ Hello, world } } ||7ct @Diag { @@ -55,14 +63,14 @@ to the @Code "@Diag" symbol as well, where they apply to every node in the diagram: @ID @OneRow { -@Code { -"@Diag" -" outline { circle }" -"{" -" @Node @I a" -" @DP" -" @Node @I b" -"}" +@Code @Verbatim { +@Diag + outline { circle } +{ + @Node @I a + @DP + @Node @I b +} } ||7ct @Diag @@ -88,9 +96,15 @@ Section {@NumberOf dia_synt} have three node types). To handle these cases there are three alternative versions of the @Code "@Node" symbol, called {@Code "@ANode"}, {@Code "@BNode"}, and -anode.fig @Index { @Code "@ANode" in @Code "@Diag" } -bnode.fig @Index { @Code "@BNode" in @Code "@Diag" } -cnode.fig @Index { @Code "@CNode" in @Code "@Diag" } +diagrams. @RawIndex { diagrams } +diagrams.anode @SubIndex { @Code "@ANode" symbol } +anode.diagrams @Index { @Code "@ANode" symbol (diagrams) } +diagrams. @RawIndex { diagrams } +diagrams.bnode @SubIndex { @Code "@BNode" symbol } +bnode.diagrams @Index { @Code "@BNode" symbol (diagrams) } +diagrams. @RawIndex { diagrams } +diagrams.cnode @SubIndex { @Code "@CNode" symbol } +cnode.diagrams @Index { @Code "@CNode" symbol (diagrams) } {@Code "@CNode"}. These have exactly the same options as {@Code "@Node"}, but the @I default values of these options are different, in that they come from @Code "@Diag" options, @@ -130,33 +144,55 @@ To save time in simple cases, @Code "@Diag" provides nine other node symbols called {@Code "@Box"}, -box.fig @Index { @Code "@Box" in @Code "@Diag" } +diagrams. @RawIndex { diagrams } +diagrams.box @SubIndex { @Code "@Box" symbol } +boxzzz.diagrams @Index { @Code "@Box" symbol (diagrams) } {@Code "@CurveBox"}, -curvebox.fig @Index { @Code "@CurveBox" in @Code "@Diag" } +diagrams. @RawIndex { diagrams } +diagrams.curvebox @SubIndex { @Code "@CurveBox" symbol } +curvebox.diagrams @Index { @Code "@CurveBox" symbol (diagrams) } {@Code "@ShadowBox"}, -shadowbox.fig @Index { @Code "@ShadowBox" in @Code "@Diag" } +diagrams. @RawIndex { diagrams } +diagrams.shadowbox @SubIndex { @Code "@ShadowBox" symbol } +shadowbox.diagrams @Index { @Code "@ShadowBox" symbol (diagrams) } {@Code "@Square"}, -square. @Index @Code "@Square" +diagrams. @RawIndex { diagrams } +diagrams.square @SubIndex { @Code "@Square" symbol } +square.diagrams @Index { @Code "@Square" symbol (diagrams) } {@Code "@Diamond"}, -diamond. @Index @Code "@Diamond" +diagrams. @RawIndex { diagrams } +diagrams.diamond @SubIndex { @Code "@Diamond" symbol } +diamond.diagrams @Index { @Code "@Diamond" symbol (diagrams) } {@Code "@Polygon"}, +diagrams. @RawIndex { diagrams } +diagrams.polygon @SubIndex { @Code "@Polygon" symbol } {@Code "@Isosceles"}, -isosceles. @Index @Code "@Isosceles" +diagrams. @RawIndex { diagrams } +diagrams.isosceles @SubIndex { @Code "@Isosceles" symbol } +isosceles.diagrams @Index { @Code "@Isosceles" symbol (diagrams) } {@Code "@Ellipse"}, -ellipse. @Index @Code "@Ellipse" +diagrams. @RawIndex { diagrams } +diagrams.ellipse @SubIndex { @Code "@Ellipse" symbol } +ellipse.diagrams @Index { @Code "@Ellipse" symbol (diagrams) } +diagrams. @RawIndex { diagrams } +diagrams.circle @SubIndex { @Code "@Circle" symbol } +circle.diagrams @Index { @Code "@Circle" symbol (diagrams) } and {@Code "@Circle"}. These are just abbreviations for @Code "@Node" with the appropriate value of {@Code outline}, nothing more. They take the same options as {@Code "@Node"} (except that @Code outline is already fixed), and everything works in the same way. @PP There is a @Code shadow option which determines the depth of the shadow +diagrams. @RawIndex { diagrams } +diagrams.shadow @SubIndex { @Code "shadow" option } +shadow.diagrams @Index { @Code "shadow" option (diagrams) } in shadow boxes: @ID { -@Code { -"@Node" -" outline { shadowbox }" -" shadow { 0.4f }" -"{ WARNING }" +@Code @Verbatim { +@Node + outline { shadowbox } + shadow { 0.4f } +{ WARNING } } ||7ct @Diag { @@ -168,13 +204,19 @@ } This example shows the default value, 0.4 times the current font size. For polygons there is a @Code sides option for specifying the number -polygon. @Index @Code "@Polygon" +diagrams. @RawIndex { diagrams } +diagrams.sides @SubIndex { @Code "sides" option } +sides.diagrams @Index { @Code "sides" option (diagrams) } +diagrams. @RawIndex { diagrams } +diagrams.angle @SubIndex { @Code "angle" option } +angle.diagrams @Index { @Code "angle" option (diagrams) } +polygon.diagrams @Index { @Code "@Polygon" (diagrams) } of sides, and an @Code angle option for rotating the outline: @IL @LI { -@Code { -"@Polygon" -" sides { 5 }" +@Code @Verbatim { +@Polygon + sides { 5 } } ||7ct @Diag { @@ -185,10 +227,10 @@ } @LI { -@Code { -"@Polygon" -" sides { 5 }" -" angle { 0d }" +@Code @Verbatim { +@Polygon + sides { 5 } + angle { 0d } } ||7ct @Diag { @@ -212,14 +254,26 @@ appearance of shadow boxes and polygons, respectively. @PP The {@Code outlinestyle}, {@Code outlinedashlength}, and {@Code outlinewidth} +diagrams. @RawIndex { diagrams } +diagrams.outlinestyle @SubIndex { @Code "outlinestyle" option } +outlinestyle. @RawIndex { @Code "outlinestyle" option } +outlinestyle.in.diagrams @SubIndex { in diagrams } +diagrams. @RawIndex { diagrams } +diagrams.outlinedashlength @SubIndex { @Code "outlinedashlength" option } +outlinedashlength. @RawIndex { @Code "outlinedashlength" option } +outlinedashlength.in.diagrams @SubIndex { in diagrams } +diagrams. @RawIndex { diagrams } +diagrams.outlinewidth @SubIndex { @Code "outlinewidth" option } +outlinewidth. @RawIndex { @Code "outlinewidth" option } +outlinewidth.in.diagrams @SubIndex { in diagrams } options apply to any node and affect the appearance of the outline: @ID @OneRow { -@Code { -"@CurveBox" -" outlinestyle { solid }" -" outlinedashlength { 0.2f }" -" outlinewidth { thin }" -"{ Hello, world }" +@Code @Verbatim { +@CurveBox + outlinestyle { solid } + outlinedashlength { 0.2f } + outlinewidth { thin } +{ Hello, world } } ||7ct @Diag { @@ -232,14 +286,27 @@ } This example shows the default values of these options. The {@Code outlinestyle} option may be {@Code solid}, {@Code dashed}, -dashed. @Index { dashed lines } -dotted. @Index { dotted lines } +diagrams. @RawIndex { diagrams } +diagrams.solid @SubIndex { @Code "solid" outlines } +solid.diagrams @Index { @Code "solid" outlines (diagrams) } +diagrams. @RawIndex { diagrams } +diagrams.dashed @SubIndex { @Code "dashed" outlines } +dashed.diagrams @Index { dashed outlines (diagrams) } {@Code cdashed}, {@Code dotted}, or {@Code noline}: +diagrams. @RawIndex { diagrams } +diagrams.cdashed @SubIndex { @Code "cdashed" outlines } +cdashed.diagrams @Index { cdashed outlines (diagrams) } +diagrams. @RawIndex { diagrams } +diagrams.dotted @SubIndex { @Code "dotted" outlines } +dotted.diagrams @Index { dotted outlines (diagrams) } +diagrams. @RawIndex { diagrams } +diagrams.noline @SubIndex { @Code "noline" outlines } +noline.diagrams @Index { noline outlines (diagrams) } @ID @OneRow { -@Code { -"@CurveBox" -" outlinestyle { cdashed }" -"{ Hello, world }" +@Code @Verbatim { +@CurveBox + outlinestyle { cdashed } +{ Hello, world } } ||7ct @Diag { @@ -262,10 +329,10 @@ mentioned above, meaning that they are to be applied in turn to each segment of the outline: @ID @OneRow { -@Code { -"@CurveBox" -" outlinestyle { solid cdashed }" -"{ Hello, world }" +@Code @Verbatim { +@CurveBox + outlinestyle { solid cdashed } +{ Hello, world } } ||7ct @Diag { @@ -289,14 +356,18 @@ @PP Nodes may be painted any of the colours listed in Section {@NumberOf colour}, using the @Code "paint" option: +diagrams. @RawIndex { diagrams } +diagrams.paint @SubIndex { @Code "paint" option } +paint. @RawIndex { @Code "paint" option } +paint.in.diagrams @SubIndex { in diagrams } @ID @OneRow { -@Code { -"@Box" -" paint { grey }" -"@Diamond" -" outlinestyle { noline }" -" paint { white }" -"{ Hello, world }" +@Code @Verbatim { +@Box + paint { grey } +@Diamond + outlinestyle { noline } + paint { white } +{ Hello, world } } ||7ct @Diag { @@ -309,27 +380,42 @@ } } In this example the object following @Code "@Box" is a diamond containing -{@Code "Hello, world"}. The default value of @Code "paint" is -{@Code nopaint}, a special value (not a colour) meaning don't use any paint. +{@Code "Hello, world"}. The default value of @Code "paint" is {@Code none}, +a special value (not a colour) meaning don't use any paint. There is +also a @Code "texture" option which causes this paint to be applied with a +diagrams. @RawIndex { diagrams } +diagrams.texture @SubIndex { @Code "texture" option } +texture.option. @RawIndex { @Code "texture" option } +texture.option.in.diagrams @SubIndex { in diagrams } +given texture. This works exacly like the @Code texture option described +in Section {@NumberOf boxes}, so we'll say no more about it here. @PP When painting it is important to know what order things are done in, because anything put down earlier will disappear under the paint. This is why -@Code nopaint and @Code white are different. Painting is done first, then +@Code none and @Code white are different. Painting is done first, then boundaries, and finally the following object. @PP Each node symbol has @Code "font" and @Code "break" options which may be used to +diagrams. @RawIndex { diagrams } +diagrams.font @SubIndex { @Code "font" option } +font.option. @RawIndex { @Code "font" option } +font.option.in.diagrams @SubIndex { in diagrams } +diagrams. @RawIndex { diagrams } +diagrams.break @SubIndex { @Code "break" option } +break. @RawIndex { @Code "break" option } +break.diagrams @SubIndex { in diagrams } set the font and paragraph breaking style of the following object: @ID @OneRow { -@Code { -"@Box" -" font { Helvetica Base }" -" break { clines }" -"{" -"WARNING" -"DANGEROUS" -"PENGUINS" -"}" +@Code @Verbatim { +@Box + font { Helvetica Base } + break { clines } +{ +WARNING +DANGEROUS +PENGUINS +} } ||7ct @Diag { @@ -345,16 +431,19 @@ } Both options have empty default values, which leave the font and break style unchanged. There is also a @Code "format" option for making more +diagrams. @RawIndex { diagrams } +diagrams.format @SubIndex { @Code "format" option } +format.diagrams @Index { @Code "format" option (diagrams) } radical changes to the appearance of the following object: @ID @OneRow { -@Code { -"@Box" -" format {" -" {0.8 1.5} @Scale @S @Body" -" }" -"{" -"Dangerous Penguins" -"}" +@Code @Verbatim { +@Box + format { + {0.8 1.5} @Scale @S @Body + } +{ +Dangerous Penguins +} } ||7ct @Diag { @@ -368,26 +457,30 @@ The result is the @Code "format" option with any @Code "@Body" symbol within it replaced by the following object. These are very useful when attached to the @Code "@Diag" symbol: -@ID @OneRow @Code { -"@Diag" -" font { Helvetica Base }" -" break { clines }" -" format { { 0.8 1.5 } @Scale @S @Body }" -"{" -" ..." -"}" +@ID @OneRow @Code @Verbatim { +@Diag + font { Helvetica Base } + break { clines } + format { { 0.8 1.5 } @Scale @S @Body } +{ + ... +} } since then they apply to every node, as usual, thereby eliminating a lot of tedious, error-prone duplication of formatting information at each node. @PP The @Code margin option determines the size of the margin added to +diagrams. @RawIndex { diagrams } +diagrams.margin @SubIndex { @Code "margin" option } +margin.options @RawIndex { margin options } +margin.options.in.diagrams @SubIndex { in diagrams } the following object: @ID @OneRow { -@Code { -"@Box" -" margin { 0c }" -"{ Hello, world }" +@Code @Verbatim { +@Box + margin { 0c } +{ Hello, world } } ||7ct @Diag { @@ -411,16 +504,19 @@ {@Code margin}, {@Code hmargin}, and {@Code vmargin}. @PP When nodes appear side by side, the {@Code valign} option is +diagrams. @RawIndex { diagrams } +diagrams.valign @SubIndex { @Code "valign" option } +valign.diagrams @Index { @Code "valign" option (diagrams) } useful for controlling their vertical position with respect to each other. For example, @ID @OneRow { -@Code { -"@Diag" -" valign { foot }" -"{" -"@Box font { 24p } Big" -"@Box font { 8p } Small" -"}" +@Code @Verbatim { +@Diag + valign { foot } +{ +@Box font { 24p } Big +@Box font { 8p } Small +} } ||7ct @Diag @@ -439,15 +535,18 @@ through the top, centre (the default value), or foot. @PP The {@Code vsize} option specifies a particular +diagrams. @RawIndex { diagrams } +diagrams.vsize @SubIndex { @Code "vsize" option } +vsize.diagrams @Index { @Code "vsize" option (diagrams) } height for a node (not including margins): @ID @OneRow { -@Code { -"@Diag" -" vsize { 2f }" -"{" -"@Box font { 24p } Big" -"@Box font { 8p } Small" -"}" +@Code @Verbatim { +@Diag + vsize { 2f } +{ +@Box font { 24p } Big +@Box font { 8p } Small +} } ||7ct @Diag @@ -463,17 +562,20 @@ to enlarge {@Code "@High"}', probably) and enlarge the base. @PP There is a @Code vindent option which is effective only when @Code vsize +diagrams. @RawIndex { diagrams } +diagrams.vindent @SubIndex { @Code "vindent" option } +vindent.diagrams @Index { @Code "vindent" option (diagrams) } is used. It controls where in the vertical space the following object is to appear: @ID @OneRow { -@Code { -"@Diag" -" vsize { 3f }" -"{" -"@Box vindent { top } Top" -"@Box Centre" -"@Box vindent { foot } Foot" -"}" +@Code @Verbatim { +@Diag + vsize { 3f } +{ +@Box vindent { top } Top +@Box Centre +@Box vindent { foot } Foot +} } ||7ct @Diag @@ -493,12 +595,12 @@ Small discrepancies in the size of nodes can be very annoying, particularly when the nodes appear side by side: @ID @OneRow { -@Code { -"@Diag" -"{" -"@Box Hole @Box in" -"@Box my @Box pocket" -"}" +@Code @Verbatim { +@Diag +{ +@Box Hole @Box in +@Box my @Box pocket +} } ||7ct @Diag @@ -511,13 +613,13 @@ the nodes. Selecting a fixed vertical size for all nodes goes some way towards solving this problem: @ID @OneRow { -@Code { -"@Diag" -" vsize { 1f }" -"{" -"@Box Hole @Box in" -"@Box my @Box pocket" -"}" +@Code @Verbatim { +@Diag + vsize { 1f } +{ +@Box Hole @Box in +@Box my @Box pocket +} } ||7ct @Diag @@ -533,14 +635,17 @@ being misaligned. A better solution is to insert a @I { vertical strut } into each node: an invisible object with zero width and height equal to {@Code 1f}. This is done using the @Code vstrut option: +diagrams. @RawIndex { diagrams } +diagrams.vstrut @SubIndex { @Code "vstrut" option } +vstrut.diagrams @Index { @Code "vstrut" option (diagrams) } @ID @OneRow { -@Code { -"@Diag" -" vstrut { yes }" -"{" -"@Box Hole @Box in" -"@Box my @Box pocket" -"}" +@Code @Verbatim { +@Diag + vstrut { yes } +{ +@Box Hole @Box in +@Box my @Box pocket +} } ||7ct @Diag @@ -555,6 +660,18 @@ is equivalent to {@Code "vstrut { 1.0f }"}. @PP There are {@Code halign}, {@Code hsize}, {@Code hindent}, and {@Code hstrut} +diagrams. @RawIndex { diagrams } +diagrams.halign @SubIndex { @Code "halign" option } +halign.diagrams @Index { @Code "halign" option (diagrams) } +diagrams. @RawIndex { diagrams } +diagrams.hsize @SubIndex { @Code "hsize" option } +hsize.diagrams @Index { @Code "hsize" option (diagrams) } +diagrams. @RawIndex { diagrams } +diagrams.hindent @SubIndex { @Code "hindent" option } +hindent.diagrams @Index { @Code "hindent" option (diagrams) } +diagrams. @RawIndex { diagrams } +diagrams.hstrut @SubIndex { @Code "hstrut" option } +hstrut.diagrams @Index { @Code "hstrut" option (diagrams) } options which work horizontally exactly as {@Code valign}, {@Code vsize}, {@Code vindent}, and {@Code vstrut} work vertically, except that they use {@Code left} and {@Code right} where the vertical ones use diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/dia_posi lout-3.27/doc/user/dia_posi --- lout-3.26/doc/user/dia_posi Wed Sep 18 12:22:38 2002 +++ lout-3.27/doc/user/dia_posi Fri Nov 15 08:21:58 2002 @@ -4,6 +4,9 @@ @Begin @PP Once the nodes of the diagram are in place, @@Diag can be trusted to look +diagrams. @RawIndex { diagrams } +diagrams.positioning @SubIndex { positioning nodes } +positioning.diagrams @Index { positioning nodes in diagrams } after the rest: links to standard outlines will terminate neatly on their boundaries, labels will not overstrike links no matter what direction they are heading, and so on. The great weakness of @@Diag is in positioning @@ -23,28 +26,28 @@ The {@Code "@Tbl"} symbol (Chapter {@NumberOf tables}) is a good choice when the nodes have any kind of grid-like arrangement: @ID @OneRow { -@Code { -"@Diag {" -"@Tbl" -" aformat { @Cell A | @Cell B | @Cell C }" -" marginhorizontal { 0.5c }" -" marginvertical { 0.25c }" -"{" -"@Rowa" -" B { A:: @Square }" -"@Rowa" -" A { B:: @Square }" -" C { C:: @Square }" -"@Rowa" -" B { D:: @Square }" -"}" -"//" -"@Arrow from { A } to { B }" -"@Arrow from { A } to { C }" -"@Arrow from { B } to { D }" -"@Arrow from { C } to { D }" -"@Arrow from { A } to { D }" -"}" +@Code @Verbatim { +@Diag { +@Tbl + aformat { @Cell A | @Cell B | @Cell C } + marginhorizontal { 0.5c } + marginvertical { 0.25c } +{ +@Rowa + B { A:: @Square } +@Rowa + A { B:: @Square } + C { C:: @Square } +@Rowa + B { D:: @Square } +} +// +@Arrow from { A } to { B } +@Arrow from { A } to { C } +@Arrow from { B } to { D } +@Arrow from { C } to { D } +@Arrow from { A } to { D } +} } ||9ct @Diag { @@ -76,21 +79,21 @@ has an @Code "objects" option which can place arbitrary objects, including labelled nodes, anywhere on a graph: @ID @OneRow { -@Code { -"@Diag {" -"@Graph" -" xmin { 0 }" -" xmax { 100 }" -" ymin { 0 }" -" ymax { 100 }" -" objects {" -" @CTR at { 20 30 } { A:: @Square }" -" @CTR at { 60 70 } { B:: @Square }" -" }" -"{}" -"//" -"@Link from { A } to { B }" -"}" +@Code @Verbatim { +@Diag { +@Graph + xmin { 0 } + xmax { 100 } + ymin { 0 } + ymax { 100 } + objects { + @CTR at { 20 30 } { A:: @Square } + @CTR at { 60 70 } { B:: @Square } + } +{} +// +@Link from { A } to { B } +} } ||8.5ct @Diag { @@ -117,18 +120,21 @@ to scatter nodes about a diagram at random. The first step is to create a nodes part that is just an empty space of whatever size you want the final diagram to be: -@ID @OneRow @Code { -"@Diag {" -" 4c @High 6c @Wide" -" //" -" ..." -"}" +@ID @OneRow @Code @Verbatim { +@Diag { + 4c @High 6c @Wide + // + ... +} } As shown, this is done with the @Code "@Wide" and @Code "@High" symbols from basic Lout; the above diagram will be four centimetres high by six centimetres wide. @PP @@Diag has a @Code "," symbol that allows you to specify a point by +diagrams. @RawIndex { diagrams } +diagrams.coordinates @SubIndex { coordinates } +coordinates.diagrams @Index { coordinates in diagrams } its coordinates in the diagram's base. For example, @Code "0,0" denotes the bottom left-hand corner of the base, @Code "1,0" denotes the bottom right-hand corner, and @@ -137,23 +143,26 @@ outside the base (which is allowed but seldom useful). @PP Every node symbol has a @Code "translate" option which allows you +diagrams. @RawIndex { diagrams } +diagrams.translate @SubIndex { @Code "translate" option } +translate.diagrams @Index { @Code "translate" option (diagrams) } to move the node about on the diagram's base (or off it if you use coordinates less than 0 or greater than 1). If you use this option, the node effectively has zero size and overstrikes anything else in the area you put it (like labels do). It is best to put these nodes in the links part: @ID @OneRow { -@Code { -"@Diag {" -"@Box margin { 0c } 4c @Wide 5c @High" -"//" -"A:: @Square" -" translate { CTR to 0.5, 0.67 }" -" { @I A }" -"B:: @Circle" -" translate { CTR to 0.8, 0.25 }" -" { @I B }" -"}" +@Code @Verbatim { +@Diag { +@Box margin { 0c } 4c @Wide 5c @High +// +A:: @Square + translate { CTR to 0.5, 0.67 } + { @I A } +B:: @Circle + translate { CTR to 0.8, 0.25 } + { @I B } +} } ||9ct @Diag { @@ -177,25 +186,25 @@ at all. Here is an example which shows what a little ingenuity can accomplish: @ID @OneRow { -@Code { -"@Diag {" -"@Polygon" -" sides { 5 }" -" outlinestyle { noline }" -" hsize { 4c }" -" vsize { 4c }" -"//" -"A:: @Circle translate { N to P1 } {}" -"B:: @Circle translate { N to P2 } {}" -"C:: @Circle translate { N to P3 } {}" -"D:: @Circle translate { N to P4 } {}" -"E:: @Circle translate { N to P5 } {}" -"@Link arrow { both } from { A } to { B }" -"@Link arrow { both } from { B } to { C }" -"@Link arrow { both } from { C } to { D }" -"@Link arrow { both } from { D } to { E }" -"@Link arrow { both } from { E } to { A }" -"}" +@Code @Verbatim { +@Diag { +@Polygon + sides { 5 } + outlinestyle { noline } + hsize { 4c } + vsize { 4c } +// +A:: @Circle translate { N to P1 } {} +B:: @Circle translate { N to P2 } {} +C:: @Circle translate { N to P3 } {} +D:: @Circle translate { N to P4 } {} +E:: @Circle translate { N to P5 } {} +@Link arrow { both } from { A } to { B } +@Link arrow { both } from { B } to { C } +@Link arrow { both } from { C } to { D } +@Link arrow { both } from { D } to { E } +@Link arrow { both } from { E } to { A } +} } ||9ct @Diag { diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/dia_summ lout-3.27/doc/user/dia_summ --- lout-3.26/doc/user/dia_summ Wed Sep 18 12:22:38 2002 +++ lout-3.27/doc/user/dia_summ Thu Nov 21 10:00:30 2002 @@ -4,6 +4,9 @@ @Begin @PP Here is the complete list of standard node outlines that may be given +diagrams. @RawIndex { diagrams } +diagrams.summary @SubIndex { summary of all options } +summary.diagrams @Index { summary of all options for diagrams } to the @Code "@Node" symbol. Each shows the outline name, any extra options relevant to this outline, base (shown as a grey box), segments (shown using {@Code "outlinestyle { solid dashed }"}), @@ -262,8 +265,12 @@ C { {@Code thin}, {@Code medium}, {@Code thick}, or any @I length } @Rowa A { " paint" } - B { nopaint } - C { @Code nopaint or any colour from Section {@NumberOf colour} } + B { none } + C { @Code none or any colour from Section {@NumberOf colour} } +@Rowa + A { " texture" } + B { solid } + C { Any texture from Section {@NumberOf textures} } @Rowa A { " font" } B { } @@ -320,6 +327,10 @@ C { {@Code "left"}, {@Code "ctr"}, {@Code "mctr"}, {@Code "right"}, or any length from Section {@NumberOf objects} } @Rowa + A { " hstrut"} + B { no } + C { {@Code no}, {@Code yes}, or any length from Section {@NumberOf objects} } +@Rowa A { " hmargin" } B { margin } C { any length from Section {@NumberOf objects} } @@ -332,10 +343,6 @@ B { hmargin } C { any length from Section {@NumberOf objects} } @Rowa - A { " hstrut"} - B { no } - C { {@Code no}, {@Code yes}, or any length from Section {@NumberOf objects} } -@Rowa A { " nodelabel"} B { } C { any object } @@ -369,7 +376,8 @@ B { outside } C { {@Code above}, {@Code below}, {@Code left}, {@Code right}, {@Code inside}, or {@Code outside}; {@Code CTR}, {@Code N}, {@Code S}, -{@Code E}, {@Code W}, {@Code NE}, {@Code NW}, {@Code SW}, or {@Code SE} +{@Code E}, {@Code W}, {@Code NE}, {@Code NW}, {@Code SW}, {@Code SE}, +{@Code NNW}, {@Code NNE}, {@Code SSW}, or {@Code SSE} } @Rowa A { " nodelabelctr"} @@ -1210,6 +1218,19 @@ B { 0.5f } C { any @I length } @Rowa + A { " backarrowstyle"} + B { solid } + C { {@Code solid}, {@Code halfopen}, {@Code open}, {@Code curvedsolid}, +{@Code curvedhalfopen}, or {@Code curvedopen} } +@Rowa + A { " backarrowwidth"} + B { 0.3f } + C { any @I length } +@Rowa + A { " backarrowlength"} + B { 0.5f } + C { any @I length } +@Rowa A { " linklabel"} B { } C { any object } @@ -1243,7 +1264,8 @@ B { above } C { {@Code above}, {@Code below}, {@Code left}, {@Code right}, {@Code inside}, or {@Code outside}; {@Code CTR}, {@Code N}, {@Code S}, -{@Code E}, {@Code W}, {@Code NE}, {@Code NW}, {@Code SW}, or {@Code SE} +{@Code E}, {@Code W}, {@Code NE}, {@Code NW}, {@Code SW}, {@Code SE}, +{@Code NNW}, {@Code NNE}, {@Code SSW}, or {@Code SSE} } @Rowa A { " linklabelctr"} @@ -1279,7 +1301,7 @@ C { any length from Section {@NumberOf objects} } @Rowa A { " fromlabelfont"} - B { } + B { "-2p" } C { Any value suitable for the @Code "@Font" symbol } @Rowa A { " fromlabelbreak"} @@ -1303,7 +1325,8 @@ B { W } C { {@Code above}, {@Code below}, {@Code left}, {@Code right}, {@Code inside}, or {@Code outside}; {@Code CTR}, {@Code N}, {@Code S}, -{@Code E}, {@Code W}, {@Code NE}, {@Code NW}, {@Code SW}, or {@Code SE} +{@Code E}, {@Code W}, {@Code NE}, {@Code NW}, {@Code SW}, {@Code SE}, +{@Code NNW}, {@Code NNE}, {@Code SSW}, or {@Code SSE} } @Rowa A { " fromlabelctr"} @@ -1323,7 +1346,7 @@ C { any length from Section {@NumberOf objects} } @Rowa A { " tolabelfont"} - B { } + B { "-2p" } C { Any value suitable for the @Code "@Font" symbol } @Rowa A { " tolabelbreak"} @@ -1347,7 +1370,8 @@ B { W } C { {@Code above}, {@Code below}, {@Code left}, {@Code right}, {@Code inside}, or {@Code outside}; {@Code CTR}, {@Code N}, {@Code S}, -{@Code E}, {@Code W}, {@Code NE}, {@Code NW}, {@Code SW}, or {@Code SE} +{@Code E}, {@Code W}, {@Code NE}, {@Code NW}, {@Code SW}, {@Code SE}, +{@Code NNW}, {@Code NNE}, {@Code SSW}, or {@Code SSE} } @Rowa A { " tolabelctr"} diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/dia_synt lout-3.27/doc/user/dia_synt --- lout-3.26/doc/user/dia_synt Wed Sep 18 12:22:38 2002 +++ lout-3.27/doc/user/dia_synt Fri Nov 15 08:35:59 2002 @@ -4,7 +4,8 @@ @Begin @PP A variant of the @@Diag symbol, called {@Code "@SyntaxDiag"}, -syntax.diag @Index { @Code "@SyntaxDiag" symbol } +diagrams. @RawIndex { diagrams } +diagrams.syntax @SubIndex { syntax diagrams } syntax.diagrams @Index { syntax diagrams } railroad.diagrams @Index { railroad diagrams } produces syntax diagrams (sometimes called railroad diagrams): diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/dia_tags lout-3.27/doc/user/dia_tags --- lout-3.26/doc/user/dia_tags Wed Sep 18 12:22:38 2002 +++ lout-3.27/doc/user/dia_tags Fri Nov 15 07:59:39 2002 @@ -5,6 +5,9 @@ @PP In addition to drawing the outline, each of the standard node types also attaches names, called {@I tags}, to certain points. For +diagrams. @RawIndex { diagrams } +diagrams.tags @SubIndex { tags ({@Code "::"}) } +tags.diagrams @Index { tags ({@Code "::"}) in diagrams } example, the @Code "@Ellipse" symbol creates nine tags: @ID { @Code { @@ -36,10 +39,10 @@ (Section {@NumberOf dia_summ}) at the end of this chapter. Each tag stands for a point, and may be used wherever a point is required: @ID { -@Code { -"@Ellipse { Hello, world }" -"//" -"@Link from { SW } to { SE }" +@Code @Verbatim { +@Ellipse { Hello, world } +// +@Link from { SW } to { SE } } ||7ct @Diag { @@ -73,10 +76,10 @@ {@Code "::"}, plus a @Code "@" character, to each one. These longer tags may be used exactly like the others: @ID { -@Code { -"A:: @Ellipse { Hello, world }" -"//" -"@Link from { A@SW } to { A@SE }" +@Code @Verbatim { +A:: @Ellipse { Hello, world } +// +@Link from { A@SW } to { A@SE } } ||7ct @Diag { @@ -89,17 +92,17 @@ objects; it will retag every tag within the following object, even tags that have already been retagged: @ID { -@Code { -"A:: {" -" 1:: @Ellipse" -" vsize { 1.0c }" -" hsize { 2.5c }" -" @DP" -" @DP" -" 2:: @Ellipse" -" vsize { 1.0c }" -" hsize { 2.5c }" -"}" +@Code @Verbatim { +A:: { + 1:: @Ellipse + vsize { 1.0c } + hsize { 2.5c } + @DP + @DP + 2:: @Ellipse + vsize { 1.0c } + hsize { 2.5c } +} } ||7ct @Diag { @@ -125,14 +128,14 @@ @PP When a tag lies within the object following some node, it is automatically retagged in this way with tag {@Code IN}. For example, in -@ID @Code { -"@Square" -"@Circle Hello" +@ID @Code @Verbatim { +@Square +@Circle Hello } the circle lies within the square, and what you get in effect is -@ID @Code { -"@Square" -"IN:: @Circle Hello" +@ID @Code @Verbatim { +@Square +IN:: @Circle Hello } This prevents confusion between the tags of the inner and outer nodes. This retagging cannot be left to the user's discretion, owing to unexpected @@ -144,13 +147,13 @@ given, they have a special virtue not shared by any other options. It is possible to give the name of an entire node, not just a tag denoting one point, to them: -@ID { +@ID @Verbatim { @Code { -"A:: @Circle" -"@DP" -"B:: @Ellipse { Hello, world }" -"//" -"@Link from { A } to { B }" +A:: @Circle +@DP +B:: @Ellipse { Hello, world } +// +@Link from { A } to { B } } ||7ct @Diag { @@ -167,6 +170,9 @@ not tags, strictly speaking, at all. @PP The @Code "::" symbol has a @Code restrict option which can be +diagrams. @RawIndex { diagrams } +diagrams.restrict @SubIndex { @Code "restrict" option } +restrict.diagrams @Index { @Code "restrict" option (diagrams) } used to save printer memory in deeply nested structures (such as the syntax diagrams of Section {@NumberOf dia_synt}) by restricting the tags promoted by @Code "::" to a limited set: diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/dia_tree lout-3.27/doc/user/dia_tree --- lout-3.26/doc/user/dia_tree Wed Sep 18 12:22:38 2002 +++ lout-3.27/doc/user/dia_tree Thu Nov 21 17:18:37 2002 @@ -4,29 +4,37 @@ @Begin @PP @@Diag offers some symbols for producing tree diagrams, using the -tree. @Index { @Code "@Tree" symbol in @@Diag } +diagrams. @RawIndex { diagrams } +diagrams.tree @SubIndex { @Code "@Tree" symbol } +tree.diagrams @Index { @Code "@Tree" symbol (diagrams) } @Code "@Tree" symbol, which may appear anywhere within the nodes part: -@ID @OneRow @Code { -"@Diag {" -" ..." -" @Tree { ... }" -" ..." -"}" +@ID @OneRow @Code @Verbatim { +@Diag { + ... + @Tree { ... } + ... +} } Within this symbol, new symbols {@Code "@LeftSub"}, {@Code "@RightSub"}, +diagrams. @RawIndex { diagrams } +diagrams.leftsub @SubIndex { @Code "@LeftSub" symbol } +leftsub.diagrams @Index { @Code "@LeftSub" symbol (diagrams) } +diagrams. @RawIndex { diagrams } +diagrams.rightsub @SubIndex { @Code "@RightSub" symbol } +rightsub.diagrams @Index { @Code "@RightSub" symbol (diagrams) } {@Code "@FirstSub"}, {@Code "@NextSub"}, and {@Code "@StubSub"} become available. The first two are used to get a (non-empty) binary tree: @ID @OneRow { -@Code { -"@Tree {" -" @Circle A" -" @LeftSub {" -" @Circle B" -" @LeftSub @Square C" -" @RightSub @Square D" -" }" -" @RightSub @Circle E" -"}" +@Code @Verbatim { +@Tree { + @Circle A + @LeftSub { + @Circle B + @LeftSub @Square C + @RightSub @Square D + } + @RightSub @Circle E +} } ||7ct @Diag { @@ -52,19 +60,25 @@ @Code "@RightSub" symbol. @PP A similar system using @Code "@FirstSub" and @Code "@NextSub" produces +diagrams. @RawIndex { diagrams } +diagrams.firstsub @SubIndex { @Code "@FirstSub" symbol } +firstsub.diagrams @Index { @Code "@FirstSub" symbol (diagrams) } +diagrams. @RawIndex { diagrams } +diagrams.nextsub @SubIndex { @Code "@NextSub" symbol } +nextsub.diagrams @Index { @Code "@NextSub" symbol (diagrams) } trees in which each node may have arbitrarily many children: @ID @OneRow { -@Code { -"@Tree {" -" @Circle A" -" @FirstSub {" -" @Circle B" -" @FirstSub @Square C" -" @NextSub @Square D" -" }" -" @NextSub @Circle E" -" @NextSub @Circle F" -"}" +@Code @Verbatim { +@Tree { + @Circle A + @FirstSub { + @Circle B + @FirstSub @Square C + @NextSub @Square D + } + @NextSub @Circle E + @NextSub @Circle F +} } ||7ct @Diag { @@ -90,16 +104,16 @@ Although each subtree must contain a node for its root, it is not hard to get around this: @ID @OneRow { -@Code { -"@Tree" -"{" -"@Circle" -"@FirstSub @Circle" -"@NextSub pathstyle { noline }" -" @Circle outlinestyle { noline }" -" ..." -"@NextSub @Circle" -"}" +@Code @Verbatim { +@Tree +{ +@Circle +@FirstSub @Circle +@NextSub pathstyle { noline } + @Circle outlinestyle { noline } + ... +@NextSub @Circle +} } ||7ct @Diag { @@ -119,12 +133,15 @@ and so forth which help with fine-tuning its position. @PP The fifth subtree symbol, {@Code "@StubSub"}, produces a stub subtree: +diagrams. @RawIndex { diagrams } +diagrams.stubsub @SubIndex { @Code "@StubSub" symbol } +stubsub.diagrams @Index { @Code "@StubSub" symbol (diagrams) } @ID @OneRow { -@Code { -"@Tree {" -"@Circle @Eq { a }" -"@StubSub @Eq { T tsub a }" -"}" +@Code @Verbatim { +@Tree { +@Circle @Eq { a } +@StubSub @Eq { T tsub a } +} } ||7ct @Diag { @@ -152,18 +169,18 @@ these apply to the link drawn from the parent of the root of the subtree to the root of the subtree (or anticlockwise around the stub object): @ID @OneRow { -@Code { -"@Tree {" -" @Circle A" -" @LeftSub" -" arrow { yes }" -" xlabel { 1 }" -" @Circle B" -" @RightSub" -" arrow { yes }" -" xlabel { 2 }" -" @Circle C" -"}" +@Code @Verbatim { +@Tree { + @Circle A + @LeftSub + arrow { yes } + xlabel { 1 } + @Circle B + @RightSub + arrow { yes } + xlabel { 2 } + @Circle C +} } ||7ct @Diag { @@ -185,16 +202,22 @@ The subtree symbols do not need @Code from and @Code to options, because they already know which nodes they are linking together. However, you may use @Code from or @Code to to give a tag specifying a particular +diagrams. @RawIndex { diagrams } +diagrams.from @SubIndex { @Code "from" option } +from.diagrams @Index { @Code "from" option (diagrams) } +diagrams. @RawIndex { diagrams } +diagrams.to @SubIndex { @Code "to" option } +to.diagrams @Index { @Code "to" option (diagrams) } point within the node: @ID @OneRow { -@Code { -"@Tree {" -"@Circle" -"@LeftSub from { S } to { N }" -" @Isosceles vsize { 2f }" -"@RightSub from { S } to { N }" -" @Isosceles vsize { 2f }" -"}" +@Code @Verbatim { +@Tree { +@Circle +@LeftSub from { S } to { N } + @Isosceles vsize { 2f } +@RightSub from { S } to { N } + @Isosceles vsize { 2f } +} } ||7ct @Diag @@ -213,15 +236,15 @@ options also work for {@Code "@StubSub"}, where they refer to the start and end of the stub path: @ID @OneRow { -@Code { -"@Tree {" -"@Circle @Eq { a }" -"@StubSub" -" from { SW }" -" to { SE }" -"@Box outlinestyle { noline }" -" @Eq { T tsub a }" -"}" +@Code @Verbatim { +@Tree { +@Circle @Eq { a } +@StubSub + from { SW } + to { SE } +@Box outlinestyle { noline } + @Eq { T tsub a } +} } ||7ct @Diag { @@ -239,25 +262,31 @@ @PP The @Code "@LeftSub" and @Code "@RightSub" symbols have variants called @Code "@ZeroWidthLeftSub" and @Code "@ZeroWidthRightSub" which are the +diagrams. @RawIndex { diagrams } +diagrams.zerowidthleftsub @SubIndex { @Code "@ZeroWidthLeftSub" symbol } +zerowidthleftsub.diagrams @Index { @Code "@ZeroWidthLeftSub" (diagrams) } +diagrams. @RawIndex { diagrams } +diagrams.zerowidthrightsub @SubIndex { @Code "@ZeroWidthRightSub" symbol } +zerowidthrightsub.diagrams @Index { @Code "@ZeroWidthRightSub" (diagrams) } same except that the resulting subtrees consume no width: @ID @OneRow { -@Code { -"@Tree {" -"@Circle" -"@LeftSub {" -" @Circle" -" @LeftSub @Square" -" @RightSub @Square" -"}" -"@RightSub {" -" @Circle" -" @LeftSub {" -" @Circle" -" @ZeroWidthLeftSub @Square" -" @ZeroWidthRightSub @Square" -" }" -" @RightSub @Square" -"} }" +@Code @Verbatim { +@Tree { +@Circle +@LeftSub { + @Circle + @LeftSub @Square + @RightSub @Square +} +@RightSub { + @Circle + @LeftSub { + @Circle + @ZeroWidthLeftSub @Square + @ZeroWidthRightSub @Square + } + @RightSub @Square +} } } ||7ct @Diag { @@ -285,23 +314,29 @@ @PP The @Code "@Diag" symbol has a few options for adjusting the appearance of the tree. The @Code "treehsep" option determines the horizontal space left +diagrams. @RawIndex { diagrams } +diagrams.treehsep @SubIndex { @Code "treehsep" option } +treehsep.diagrams @Index { @Code "treehsep" option (diagrams) } between a root and its left subtree, between a root and its right subtree, and between one subtree and the next when @Code "@NextSub" is used. The @Code "treevsep" option determines the vertical space left between a root +diagrams. @RawIndex { diagrams } +diagrams.treevsep @SubIndex { @Code "treevsep" option } +treevsep.diagrams @Index { @Code "treevsep" option (diagrams) } and its subtrees: @ID @OneRow { -@Code { -"@Diag" -" treehsep { 0c }" -" treevsep { 0c }" -"{" -"@Tree" -"{" -" @Circle A" -" @LeftSub @Square B" -" @RightSub @Square C" -"}" -"}" +@Code @Verbatim { +@Diag + treehsep { 0c } + treevsep { 0c } +{ +@Tree +{ + @Circle A + @LeftSub @Square B + @RightSub @Square C +} +} } ||7ct @Diag @@ -322,6 +357,9 @@ all children of their parent. @PP The @Code "treehindent" option determines where the root of a non-binary +diagrams. @RawIndex { diagrams } +diagrams.treehindent @SubIndex { @Code "treehindent" option } +treehindent.diagrams @Index { @Code "treehindent" option (diagrams) } tree is positioned over its subtrees; the value may be @Code "left" for at left, @Code "ctr" for centred over them (the default), @Code "right" for at the right, or any length, meaning that far from @@ -340,7 +378,9 @@ be retagged in the usual way. @PP There is an @Code "@HTree" symbol which is the same as -htree. @Index { @Code "@HTree" symbol in @@Diag } +diagrams. @RawIndex { diagrams } +diagrams.htree @SubIndex { @Code "@HTree" symbol } +htree.diagrams @Index { @Code "@HTree" symbol (diagrams) } @Code "@Tree" except that the tree grows horizontally (from left to right) instead of vertically. The same symbols are available within @Code "@HTree" as within {@Code "@Tree"}; @Code "@LeftSub" and @@ -348,20 +388,23 @@ @Code "@RightSub" and @Code "@NextSub" produce lower trees. @Code "@HTree" has no @Code "treehindent" option; instead, it has an exactly analogous @Code "treevindent" option. +diagrams. @RawIndex { diagrams } +diagrams.treevindent @SubIndex { @Code "treevindent" option } +treevindent.diagrams @Index { @Code "treevindent" option (diagrams) } @PP @Code "@HTree" may be used to get horizontal lists: @ID @OneRow { -@Code { -"@I @Diag" -" arrow { yes } treehsep { 1c } {" -"@HTree {" -" @Node A" -" @FirstSub {" -" @Node B" -" @FirstSub @Node C" -" }" -"}" -"}" +@Code @Verbatim { +@I @Diag + arrow { yes } treehsep { 1c } { +@HTree { + @Node A + @FirstSub { + @Node B + @FirstSub @Node C + } +} +} } ||7ct @I @Diag arrow { yes } treehsep { 1c } { diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/equ lout-3.27/doc/user/equ --- lout-3.26/doc/user/equ Wed Sep 18 12:22:38 2002 +++ lout-3.27/doc/user/equ Thu Nov 14 22:09:46 2002 @@ -6,7 +6,9 @@ This chapter explains how to produce mathematical formulas in Lout, equations. @Index { equations } mathematics. @Index mathematics -eq. @Index @Code "@Eq" +equations. @RawIndex { equations } +equations.eq @SubIndex { @Code "@Eq" } +eq.equations @Index { @Code "@Eq" (equations) } using the @Code "@Eq" symbol like this: @ID @Code { "@Eq { big int supp 1 on 0 ` dx over sqrt {1 - x sup 2} = pi over 2 }" diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/equ_defs lout-3.27/doc/user/equ_defs --- lout-3.26/doc/user/equ_defs Wed Sep 18 12:22:38 2002 +++ lout-3.27/doc/user/equ_defs Thu Nov 21 21:07:32 2002 @@ -5,6 +5,10 @@ Whenever you type particular equations or parts of equations repeatedly, you can save time by using definitions. Definitions are the subject of Section {@NumberOf definitions}, so here we will just give a few examples +equations. @RawIndex { equations } +equations.definitions @SubIndex { definitions, use with } +definitions. @RawIndex { definitions } +definitions.use.with.equations @SubIndex { use with equations } of their use in equation formatting. @PP Suppose for example that @OneCol @Eq { p sub i ` log sub 2 ` p sub i } diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/equ_disp lout-3.27/doc/user/equ_disp --- lout-3.26/doc/user/equ_disp Wed Sep 18 12:22:38 2002 +++ lout-3.27/doc/user/equ_disp Thu Nov 14 22:34:16 2002 @@ -93,14 +93,14 @@ means that no space is inserted above or below the display. Instead, raw.displays @Index { raw displays } you must insert it yourself using paragraph symbols: -@ID @OneRow @Code { -"preceding text" -"@DP" -"@RawAlignedDisplay @Eq { ... }" -"@DP" -"@RawAlignedNumberedDisplay @Eq { ... }" -"@DP" -"following text" +@ID @OneRow @Code @Verbatim { +preceding text +@DP +@RawAlignedDisplay @Eq { ... } +@DP +@RawAlignedNumberedDisplay @Eq { ... } +@DP +following text } You get the right spacing by placing {@Code "@DP"} symbols before, between, and after each display; and you get to use the specialized diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/equ_intr lout-3.27/doc/user/equ_intr --- lout-3.26/doc/user/equ_intr Wed Sep 18 12:22:38 2002 +++ lout-3.27/doc/user/equ_intr Thu Nov 14 22:11:19 2002 @@ -17,12 +17,11 @@ } This shows what to do if you want both tables and equations, but you may leave out the line for tables if you don't want them. Setup files -for specialized packages, such as like {@Code "tab"} and {@Code "eq"}, +for specialized packages, such as {@Code "tab"} and {@Code "eq"}, are best included before the main setup file, but may be included in any order. @PP With the @Code "eq" file included, you may write -eq. @Index { @Code "@Eq" } @ID @Code "@Eq { ... }" at any point in your document, and the symbols of @Code "@Eq" will be available between the braces. Any symbols available outside continue @@ -38,7 +37,9 @@ arrange the paragraph so that the equation does not spread over two lines, use {@Code "@OneCol @Eq { ... }"}. This is needed so frequently that a symbol @Code "@E" is defined in @Code "eq" along with @Code "@Eq" -e. @Index { @Code "@E" } +equations. @RawIndex { equations } +equations.e @SubIndex { @Code "@E" } +eaaa.equations @Index { @Code "@E" (equations) } which is an abbreviation for {@Code "@OneCol @Eq"}. @PP To display an equation, use a display symbol like @Code "@IndentedDisplay" diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/equ_spac lout-3.27/doc/user/equ_spac --- lout-3.26/doc/user/equ_spac Wed Sep 18 12:22:38 2002 +++ lout-3.27/doc/user/equ_spac Thu Nov 21 16:57:17 2002 @@ -19,9 +19,13 @@ is to enclose that part in a @Code "@Font" symbol.) @PP Every symbol provided by {@Code "@Eq"} has a @I {full name}, which +equations. @RawIndex { equations } +equations.fullname @SubIndex { full name of symbol } full.name @Index { full name of equation symbol } denotes the symbol without any space attached. Many symbols also have a @I {short name}, which denotes the same symbol with what +equations. @RawIndex { equations } +equations.shortname @SubIndex { short name of symbol } short.name @Index { short name of equation symbol } {@Code "@Eq"} considers to be an appropriate amount of space for that symbol attached to it. For example, @Eq { lessequal } has full name @@ -39,11 +43,17 @@ } @EL {@Code "@Eq"} puts a thick space around relation symbols like {@Code "<="}, -relations @Index { relation symbols in equations } +equations. @RawIndex { equations } +equations.relation.symbols @SubIndex { relation symbols } +relation.symbols @Index { relation symbols in equations } a medium space around binary operator symbols like {@Code "+"}, and a thin -binary.op @Index { binary operators in equations } +equations. @RawIndex { equations } +equations.binaryoperators @SubIndex { binary operator symbols } +binaryoperators @Index { binary operator symbols in equations } space after punctuation symbols (@Code ";" and {@Code ","}); except that -punctuation @Index { punctuation in equations } +equations. @RawIndex { equations } +equations.punctuation @SubIndex { punctuation symbols } +punctuation @Index { punctuation symbols in equations } in places where the symbols appear in a smaller size (superscripts, subscripts, etc.), these spaces are omitted. No other horizontal space is ever inserted. @@ -52,6 +62,9 @@ mathematics most of the time. It is best to rely on them in the first instance and only think about spacing when the result is not pleasing. In that case, {@Code "@Eq"}'s space can be removed by using the full names, +equations. @RawIndex { equations } +equations.spacing @SubIndex { spacing symbols } +spacing.equations @Index { spacing symbols in equations } and thin, medium and thick space can be added using the following symbols: @ID @Tab vmargin { 0.5vx } @@ -72,10 +85,21 @@ the @Code "s" unit has value 0 and so is not very useful, but one can write @Code "&2m" for example for a two em space. The full names are tedious to remember, so {@Code "@Eq"} provides a @Code "non" symbol -non. @Index { @Code "non" in equations } +equations. @RawIndex { equations } +equations.non @SubIndex { @Code "non" symbol } +non.equations @Index { @Code "non" symbol (equations) } which removes spaces from its right parameter; thus @Code "non <=" is equivalent to {@Code "lessequal"}. There are also {@Code "rel"}, +equations. @RawIndex { equations } +equations.rel @SubIndex { @Code "rel" symbol } +rel.equations @Index { @Code "rel" symbol (equations) } {@Code "bin"}, and {@Code "punct"} symbols for telling {@Code "@Eq"} +equations. @RawIndex { equations } +equations.bin @SubIndex { @Code "bin" symbol } +bin.equations @Index { @Code "bin" symbol (equations) } +equations. @RawIndex { equations } +equations.punct @SubIndex { @Code "punct" symbol } +punct.equations @Index { @Code "punct" symbol (equations) } to add space to the following symbol as though it was a relation symbol, binary operator, or punctuation symbol. @End @Section diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/equ_summ lout-3.27/doc/user/equ_summ --- lout-3.26/doc/user/equ_summ Wed Sep 18 12:22:38 2002 +++ lout-3.27/doc/user/equ_summ Thu Nov 21 21:33:09 2002 @@ -33,7 +33,11 @@ B { Remove spaces normally put into @Code x } @Rowa A { @Code "vctr x" } - B { Centre @Code x vertically } + B { Centre @Code x vertically +equations. @RawIndex { equations } +equations.vctr @SubIndex { @Code "vctr" symbol } +vctr.equations @Index { @Code "vctr" symbol (equations) } +} @Rowa A { @Code "big x" } B { Make @Code x larger } @@ -63,48 +67,72 @@ @Code "x dot" |7ct @Eq { x dot } +equations. @RawIndex { equations } +equations.dot @SubIndex { @Code "dot" symbol } +dot.equations @Index { @Code "dot" symbol (equations) } } @LI { @Code "x dotdot" |7ct @Eq { x dotdot } +equations. @RawIndex { equations } +equations.dotdot @SubIndex { @Code "dotdot" symbol } +dotdot.equations @Index { @Code "dotdot" symbol (equations) } } @LI { @Code "x hat" |7ct @Eq { x hat } +equations. @RawIndex { equations } +equations.hat @SubIndex { @Code "hat" symbol } +hat.equations @Index { @Code "hat" symbol (equations) } } @LI { @Code "x tilde" |7ct @Eq { x tilde } +equations. @RawIndex { equations } +equations.tilde @SubIndex { @Code "tilde" symbol } +tilde.equations @Index { @Code "tilde" symbol (equations) } } @LI { @Code "x vec" |7ct @Eq { x vec } +equations. @RawIndex { equations } +equations.vec @SubIndex { @Code "vec" symbol } +vec.equations @Index { @Code "vec" symbol (equations) } } @LI { @Code "x dyad" |7ct @Eq { x dyad } +equations. @RawIndex { equations } +equations.dyad @SubIndex { @Code "dyad" symbol } +dyad.equations @Index { @Code "dyad" symbol (equations) } } @LI { @Code "x+y overbar" |7ct @Eq { x+y overbar } +equations. @RawIndex { equations } +equations.overbar @SubIndex { @Code "overbar" symbol } +overbar.equations @Index { @Code "overbar" symbol (equations) } } @LI { @Code "x+y underbar" |7ct @Eq { x+y underbar } +equations. @RawIndex { equations } +equations.underbar @SubIndex { @Code "underbar" symbol } +underbar.equations @Index { @Code "underbar" symbol (equations) } } @EL @@ -165,12 +193,18 @@ "{90d @Rotate blbrace}" } |7ct @Eq { {a, ... , z} widefrom {90d @Rotate blbrace} } +equations. @RawIndex { equations } +equations.widefrom @SubIndex { @Code "widefrom" symbol } +widezzzfrom.equations @Index { @Code "widefrom" symbol (equations) } } @LI { @Code "{a, ... , z} wideto minus" |7ct @Eq { {a, ... , z} wideto minus } +equations. @RawIndex { equations } +equations.wideto @SubIndex { @Code "wideto" symbol } +widezzzto.equations @Index { @Code "wideto" symbol (equations) } } @EL @@ -183,12 +217,18 @@ @Code "sqrt {x over y}" |7ct @Eq { sqrt {x over y} } +equations. @RawIndex { equations } +equations.sqrt @SubIndex { @Code "sqrt" symbol } +sqrt.equations @Index { @Code "sqrt" symbol (equations) } } @LI { @Code "3 root {x over y}" |7ct @Eq { 3 root {x over y} } +equations. @RawIndex { equations } +equations.root @SubIndex { @Code "root" symbol } +root.equations @Index { @Code "root" symbol (equations) } } @EL @@ -200,24 +240,36 @@ @Code "2 over 3" |7ct @Eq { 2 over 3 } +equations. @RawIndex { equations } +equations.over @SubIndex { @Code "over" symbol } +over.equations @Index { @Code "over" symbol (equations) } } @LI { @Code "2 frac 3" |7ct @Eq { 2 frac 3 } +equations. @RawIndex { equations } +equations.frac @SubIndex { @Code "frac" symbol } +frac.equations @Index { @Code "frac" symbol (equations) } } @LI { @Code "2 div 3" |7ct @Eq { 2 div 3 } +equations. @RawIndex { equations } +equations.div @SubIndex { @Code "div" symbol } +div.equations @Index { @Code "div" symbol (equations) } } @LI { @Code "2 slash 3" |7ct @Eq { 2 slash 3 } +equations. @RawIndex { equations } +equations.slash @SubIndex { @Code "slash" symbol } +slash.equations @Index { @Code "slash" symbol (equations) } } @EL @@ -286,6 +338,9 @@ } @DP These can be negated by preceding them with {@Code "not"}, as in +equations. @RawIndex { equations } +equations.not @SubIndex { @Code "not" symbol } +not.equations @Index { @Code "not" symbol (equations) } negation. @Index { negation of equation symbols } {@Code "not =="}, for example, which yields {@Eq { not == }}. The following short names define binary operators (medium space on each side): diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/equ_symb lout-3.27/doc/user/equ_symb --- lout-3.26/doc/user/equ_symb Wed Sep 18 12:22:38 2002 +++ lout-3.27/doc/user/equ_symb Thu Nov 21 17:01:03 2002 @@ -45,17 +45,27 @@ @Eq { x sub 2 } } Here the @Code "sub" symbol has taken the object just to its left, and -sub. @Index { @Code "sub" in equations } +equations. @RawIndex { equations } +equations.sub @SubIndex { @Code "sub" symbol } +sub.sym.equations @Index { @Code "sub" symbol (equations) } the object just to its right, and joined them into one object in the form of a subscript. The two objects are called the left and right parameters of {@Code "sub"}, and they may be arbitrary Lout objects. @PP Other symbols of a similar kind include {@Code "sup"} for -sup. @Index { @Code "sup" in equations } +equations. @RawIndex { equations } +equations.sup @SubIndex { @Code "sup" symbol } +sup.equations @Index { @Code "sup" symbol (equations) } superscripting, @Code "over" for built-up fractions, and @Code "from" -over.eq. @Index { @Code "over" in equations } -from. @Index { @Code "from" in equations } -to. @Index { @Code "to" in equations } +equations. @RawIndex { equations } +equations.over @SubIndex { @Code "over" symbol } +over.equations @Index { @Code "over" symbol (equations) } +equations. @RawIndex { equations } +equations.from @SubIndex { @Code "from" symbol } +from.equations @Index { @Code "from" symbol (equations) } +equations. @RawIndex { equations } +equations.to @SubIndex { @Code "to" symbol } +to.equations @Index { @Code "to" symbol (equations) } and @Code "to" for the lower and upper limits of sums, products, etc. These symbols may be used together to produce complicated equations very easily: @@ -73,8 +83,12 @@ @Code "to" do all the work of placing the limits. They are quite independent, so either or both may be omitted. To get a superscript directly over a subscript, use the @Code "supp" and @Code "on" symbols: -supp. @Index { @Code "supp" in equations } -on. @Index { @Code "on" in equations } +equations. @RawIndex { equations } +equations.supp @SubIndex { @Code "supp" symbol } +supp.equations @Index { @Code "supp" symbol (equations) } +equations. @RawIndex { equations } +equations.on @SubIndex { @Code "on" symbol } +on.equations @Index { @Code "on" symbol (equations) } @ID { @Code "A supp b on a" |7ct @@ -98,6 +112,12 @@ } @EndList The @Code "tsub" and @Code "ton" symbols are exactly like @Code "sub" +equations. @RawIndex { equations } +equations.tsub @SubIndex { @Code "tsub" symbol } +tsub.equations @Index { @Code "tsub" symbol (equations) } +equations. @RawIndex { equations } +equations.ton @SubIndex { @Code "ton" symbol } +ton.equations @Index { @Code "ton" symbol (equations) } and @Code "on" except for this tucking-in effect. However, the @Code "sub" symbol itself does a certain amount of tucking in; the amount is determined by kerning information in the font files and @@ -121,6 +141,9 @@ @EndList @Code "@Eq" chooses between them in the following way. Every symbol that takes a parameter also has a {@I precedence}, which is a number. For +equations. @RawIndex { equations } +equations.precedence @SubIndex { precedence of symbols } +precedence.equations @Index { precedence of symbols in equations } example, @Code "sup" has precedence 60 and @Code "over" has precedence 54. The symbol with the highest precedence wins the object lying between them, so in the above case the first interpretation is chosen. If two @@ -170,17 +193,19 @@ chapter gives the precedence of every symbol. @PP The @Code matrix symbol {@PageMark matrix} builds an array of objects: -matrix. @Index { @Code "matrix" in equations } +equations. @RawIndex { equations } +equations.matrix @SubIndex { @Code "matrix" symbol } +matrix.equations @Index { @Code "matrix" symbol (equations) } @ID { -@Code { -"matrix" -" atleft { blpar }" -" atright { brpar }" -"{" -" row col x sup 2 col y sup 2 col z sup 2" -" row col x col y col z" -" row col 1 col 1 col 1" -"}" +@Code @Verbatim { +matrix + atleft { blpar } + atright { brpar } +{ + row col x sup 2 col y sup 2 col z sup 2 + row col x col y col z + row col 1 col 1 col 1 +} } ||9ct @Eq { @@ -195,17 +220,29 @@ } } The @Code atleft and @Code atright options place vertically scaled +equations. @RawIndex { equations } +equations.atleft @SubIndex { @Code "atleft" option } +atleft.equations @Index { @Code "atleft" option (equations) } +equations. @RawIndex { equations } +equations.atright @SubIndex { @Code "atright" option } +atright.equations @Index { @Code "atright" option (equations) } versions of their values at each side; if either is omitted the value is taken to be an empty object of zero width by default. Although we have used @Code blpar and @Code brpar here, since the options are vertically scaled to the correct size some people prefer simply -@ID @OneRow @Code { -"matrix" -" atleft { ( }" -" atright { ) }" +@ID @OneRow @Code @Verbatim { +matrix + atleft { ( } + atright { ) } } The right parameter of @Code matrix is the array itself. It must be enclosed in braces, and it is a sequence of rows introduced by +equations. @RawIndex { equations } +equations.row @SubIndex { @Code "row" symbol } +row.equations @Index { @Code "row" symbol (equations) } +equations. @RawIndex { equations } +equations.col @SubIndex { @Code "col" symbol } +col.equations @Index { @Code "col" symbol (equations) } @Code row symbols; each row is a sequence of objects introduced by @Code col symbols. @FootNote { @@ -220,8 +257,20 @@ @PP Entries built with the @Code col symbol have their objects centred in the column. Also available are @Code lcol for left-justified entries, +equations. @RawIndex { equations } +equations.lcol @SubIndex { @Code "lcol" symbol } +lcol.equations @Index { @Code "lcol" symbol (equations) } @Code ccol meaning the same as {@Code col}, @Code rcol for +equations. @RawIndex { equations } +equations.ccol @SubIndex { @Code "ccol" symbol } +ccol.equations @Index { @Code "ccol" symbol (equations) } +equations. @RawIndex { equations } +equations.rcol @SubIndex { @Code "rcol" symbol } +rcol.equations @Index { @Code "rcol" symbol (equations) } right-justified entries, and @Code mcol for alignment along column +equations. @RawIndex { equations } +equations.mcol @SubIndex { @Code "mcol" symbol } +mcol.equations @Index { @Code "mcol" symbol (equations) } marks. Each column may contain entries of different kinds, except that @Code mcol does not work well with any other sort. @PP @@ -253,6 +302,10 @@ } To assist in resolving this problem, the @Code "matrix" symbol has a @Code "strut" option, which causes a strut to be inserted into +equations. @RawIndex { equations } +equations.strut @SubIndex { @Code "strut" option } +strut.option. @RawIndex { @Code "strut" option } +strut.option.in.equations @SubIndex { in equations } every row, guaranteeing that every row has height at least equal to the height of the strut. By using @ID @Code { @@ -304,27 +357,51 @@ @Rowa A { "pmatrix" } B { "matrix atleft { ( } atright { ) } { M }" } - C { @Eq { pmatrix { M } } } + C { @Eq { pmatrix { M } } +equations. @RawIndex { equations } +equations.pmatrix @SubIndex { @Code "pmatrix" symbol } +pmatrix.equations @Index { @Code "pmatrix" symbol (equations) } +} @Rowa A { "bmatrix" } B { "matrix atleft { blbrack } atright { brbrack } { M }" } - C { @Eq { bmatrix { M } } } + C { @Eq { bmatrix { M } } +equations. @RawIndex { equations } +equations.bmatrix @SubIndex { @Code "bmatrix" symbol } +bmatrix.equations @Index { @Code "bmatrix" symbol (equations) } +} @Rowa A { "brmatrix" } B { "matrix atleft { blbrace } atright { brbrace } { M }" } - C { @Eq { brmatrix { M } } } + C { @Eq { brmatrix { M } } +equations. @RawIndex { equations } +equations.brmatrix @SubIndex { @Code "brmatrix" symbol } +brmatrix.equations @Index { @Code "brmatrix" symbol (equations) } +} @Rowa A { "fmatrix" } B { "matrix atleft { blfloor } atright { brfloor } { M }" } - C { @Eq { fmatrix { M } } } + C { @Eq { fmatrix { M } } +equations. @RawIndex { equations } +equations.fmatrix @SubIndex { @Code "fmatrix" symbol } +fmatrix.equations @Index { @Code "fmatrix" symbol (equations) } +} @Rowa A { "cmatrix" } B { "matrix atleft { blceil } atright { brceil } { M }" } - C { @Eq { cmatrix { M } } } + C { @Eq { cmatrix { M } } +equations. @RawIndex { equations } +equations.cmatrix @SubIndex { @Code "cmatrix" symbol } +cmatrix.equations @Index { @Code "cmatrix" symbol (equations) } +} @Rowa A { "amatrix" } B { "matrix atleft { blangle } atright { brangle } { M }" } - C { @Eq { amatrix { M } } } + C { @Eq { amatrix { M } } +equations. @RawIndex { equations } +equations.amatrix @SubIndex { @Code "amatrix" symbol } +amatrix.equations @Index { @Code "amatrix" symbol (equations) } +} } For example: @ID { @@ -340,6 +417,9 @@ scaled delimiters around things that aren't necessarily matrices at all. @PP Each of the @Code "@Eq" symbols that takes parameters also has a @Code gap +equations. @RawIndex { equations } +equations.gap @SubIndex { @Code "gap" option } +gap.equations @Index { @Code "gap" option (equations) } option, which controls the amount of space inserted by the symbol: @IL @LI { diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/equ_tequ lout-3.27/doc/user/equ_tequ --- lout-3.26/doc/user/equ_tequ Wed Sep 18 12:22:38 2002 +++ lout-3.27/doc/user/equ_tequ Thu Nov 14 22:42:31 2002 @@ -4,6 +4,7 @@ @Begin @PP There is an alternative version of the @Code "@Eq" symbol that +tex. @RawIndex { @TeX } tex.mathfonts @SubIndex { mathematical fonts } uses fonts taken from the @TeX document formatting system. These fonts are said to produce better-looking @@ -12,6 +13,7 @@ @PP The fonts were converted from @TeX form to PostScript form by Basil K. Malyshev, who has attached a license to them permitting +malyshev @Index { Malyshev, Basil K. } non-commercial use only. This is a much more stringent license than the one attached to Lout itself. For this reason, the files needed to use these @TeX fonts are distributed separately from the @@ -24,10 +26,11 @@ absolutely nothing else. @PP Unfortunately, the @TeX fonts are not usually resident on PostScript -printing devices, which means that Lout is obliged to include them in its -PostScript output file. You don't have to do anything to make this -happen, but the cost is fairly large: changing to @Code "@SysInclude { teq }" -increases the size of the PostScript output file by 252 kilobytes. +printing devices, which means that Lout is obliged to include them in +its PostScript output file. You don't have to do anything to make this +happen, but the cost is fairly large: changing to +@Code "@SysInclude { teq }" increases the size of the PostScript +output file by 252 kilobytes. @PP It is possible to gain access to characters in the @TeX fonts that are not accessible directly from {@Code "@Eq"}, mainly diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/equ_vert lout-3.27/doc/user/equ_vert --- lout-3.26/doc/user/equ_vert Wed Sep 18 12:22:38 2002 +++ lout-3.27/doc/user/equ_vert Thu Nov 14 22:26:17 2002 @@ -5,6 +5,8 @@ @PP Every equation and every object within every equation has an @I axis running through it which is used to position it vertically +equations. @RawIndex { equations } +equations.axis @SubIndex { axis of } axis @Index { axis of equation } with respect to nearby objects. In the Expert's Guide to Lout @Cite { $kingston1995lout.expert } this is called a @I { row mark }, @@ -105,14 +107,20 @@ } To supply these possibilities, the @Code "matrix" symbol and all its variants (@Code "pmatrix" etc.) have two options whose +equations. @RawIndex { equations } +equations.userow @SubIndex { @Code "userow" option } +userow.equations @Index { @Code "userow" option (equations) } +equations. @RawIndex { equations } +equations.shiftdelim @SubIndex { @Code "shiftdelim" option } +shiftdelim.equations @Index { @Code "shiftdelim" option (equations) } values may be {@Code "yes"} or {@Code "no"}: -@ID @Code { -"matrix" -" userow { no }" -" shiftdelim { yes }" -"{" -" ..." -"}" +@ID @Code @Verbatim { +matrix + userow { no } + shiftdelim { yes } +{ + ... +} } The @Code "userow" option determines whether the axis of the matrix will use a row axis; the default is not to, i.e. to @@ -126,6 +134,9 @@ do nothing, the first (or only) row's axis becomes the overall axis. To select some other row instead, replace the @Code "row" symbol that precedes the row by {@Code "axisrow"}: +equations. @RawIndex { equations } +equations.axisrow @SubIndex { @Code "axisrow" symbol } +axisrow.equations @Index { @Code "axisrow" symbol (equations) } @ID @Code @Tab vmargin { 0.5vx } hmargin { 1s } diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/fmt_head lout-3.27/doc/user/fmt_head --- lout-3.26/doc/user/fmt_head Wed Sep 18 12:22:37 2002 +++ lout-3.27/doc/user/fmt_head Mon Nov 18 09:38:51 2002 @@ -74,12 +74,12 @@ @PP Let's summarize the five options so far by looking at their values in the @Code book setup file, which was used to produce the present document: -@ID @OneRow @Code { -"@PageHeaders { Titles }" -"@PageNumbers { Arabic }" -"@FirstPageNumber { 1 }" -"@IntroPageNumbers { Roman }" -"@IntroFirstPageNumber { 1 }" +@ID @OneRow @Code @Verbatim { +@PageHeaders { Titles } +@PageNumbers { Arabic } +@FirstPageNumber { 1 } +@IntroPageNumbers { Roman } +@IntroFirstPageNumber { 1 } } The remainder of this section goes beyond these basic choices to explain how to change the detailed appearance of page headers @@ -109,36 +109,36 @@ could be a non-intro start odd page, or an intro non-start even page, and so on. This makes eight (@Eq { 2 times 2 times 2 }) possibilities altogether. Depending on the type of document there may also be pages -that Lout will never place a page header or footer on. For example, no page -headers or footers will appear on pages containing part titles in books. +that Lout will never place a page header or footer on (e.g. pages +containing part titles in books). @PP If you choose {@Code "@PageHeaders { None }"}, there are no page headers or footers, so there is nothing more to say. If you choose {@Code "@PageHeaders { Simple }"}, then eight options become relevant for controlling the page headers on each of the eight kinds of pages. Here they are with their default values: -@ID @OneRow @Code { -"@OddTop { @Centre { - @PageNum - } }" -"@EvenTop { @Centre { - @PageNum - } }" -"@StartOddTop { @Null }" -"@StartEvenTop { @Null }" -"@IntroOddTop { @Null }" -"@IntroEvenTop { @Null }" -"@IntroStartOddTop { @Null }" -"@IntroStartEvenTop { @Null }" +@ID @OneRow @Code @Verbatim { +@OddTop { @Centre { - @PageNum - } } +@EvenTop { @Centre { - @PageNum - } } +@StartOddTop { @Null } +@StartEvenTop { @Null } +@IntroOddTop { @Null } +@IntroEvenTop { @Null } +@IntroStartOddTop { @Null } +@IntroStartEvenTop { @Null } } If the word @Code Start is missing from an option name, the option applies to non-start pages; if @Code Intro is missing, it applies to non-intro pages. Another eight options control footers in the same way: -@ID @OneRow @Code { -"@OddFoot { @Null }" -"@EvenFoot { @Null }" -"@StartOddFoot { @Null }" -"@StartEvenFoot { @Null }" -"@IntroOddFoot { @Centre @PageNum }" -"@IntroEvenFoot { @Null }" -"@IntroStartOddFoot { @Centre @PageNum }" -"@IntroStartEvenFoot { @Null }" +@ID @OneRow @Code @Verbatim { +@OddFoot { @Null } +@EvenFoot { @Null } +@StartOddFoot { @Null } +@StartEvenFoot { @Null } +@IntroOddFoot { @Centre @PageNum } +@IntroEvenFoot { @Null } +@IntroStartOddFoot { @Centre @PageNum } +@IntroStartEvenFoot { @Null } } The value of the option is an object which becomes the header or footer. It may be any object, but there are some peculiarities that @@ -197,30 +197,30 @@ A different set of sixteen options applies when @Code "@PageHeaders" is set to @Code Titles or {@Code "NoTitles"}. Here are the eight options for headers, with their default values: -@ID @OneRow @Code { -"@RunningOddTop { @I { @MinorNum @DotSep @MinorTitle }" -" @Right @B @PageNum }" -"@RunningEvenTop { @B @PageNum" -" @Right @I { @MajorNum @DotSep @MajorTitle } }" -"@RunningStartOddTop { @Null }" -"@RunningStartEvenTop { @Null }" -"@RunningIntroOddTop { @Null }" -"@RunningIntroEvenTop { @Null }" -"@RunningIntroStartOddTop { @Null }" -"@RunningIntroStartEvenTop { @Null }" +@ID @OneRow @Code @Verbatim { +@RunningOddTop { @I { @MinorNum @DotSep @MinorTitle } + @Right @B @PageNum } +@RunningEvenTop { @B @PageNum + @Right @I { @MajorNum @DotSep @MajorTitle } } +@RunningStartOddTop { @Null } +@RunningStartEvenTop { @Null } +@RunningIntroOddTop { @Null } +@RunningIntroEvenTop { @Null } +@RunningIntroStartOddTop { @Null } +@RunningIntroStartEvenTop { @Null } } Some options occupy two lines, but only because they are long: as usual, the end of a line is the same as one space. Here are the options for footers: -@ID @OneRow @Code { -"@RunningOddFoot { @Null }" -"@RunningEvenFoot { @Null }" -"@RunningStartOddFoot { @Centre { Bold 0.8f } @Font @PageNum }" -"@RunningStartEvenFoot { @Centre { Bold 0.8f } @Font @PageNum }" -"@RunningIntroOddFoot { @Right @PageNum }" -"@RunningIntroEvenFoot { @PageNum }" -"@RunningIntroStartOddFoot { @Null }" -"@RunningIntroStartEvenFoot { @Null }" +@ID @OneRow @Code @Verbatim { +@RunningOddFoot { @Null } +@RunningEvenFoot { @Null } +@RunningStartOddFoot { @Centre { Bold 0.8f } @Font @PageNum } +@RunningStartEvenFoot { @Centre { Bold 0.8f } @Font @PageNum } +@RunningIntroOddFoot { @Right @PageNum } +@RunningIntroEvenFoot { @PageNum } +@RunningIntroStartOddFoot { @Null } +@RunningIntroStartEvenFoot { @Null } } All these options are similar to the earlier ones, in providing one option for each of the eight kinds of pages. The names are the same diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/fmt_marg lout-3.27/doc/user/fmt_marg --- lout-3.26/doc/user/fmt_marg Wed Sep 18 12:22:37 2002 +++ lout-3.27/doc/user/fmt_marg Thu Nov 21 21:19:14 2002 @@ -4,8 +4,8 @@ @Begin @PP There are six options for setting the top and bottom margins on each -margins. @RawIndex { margins } -margins.in.pages @SubIndex { in pages } +margin.options @RawIndex { margin options } +margin.options.in.pages @SubIndex { in pages } top.margin @Index @Code "@TopMargin" foot.margin @Index @Code "@FootMargin" odd.left.margin @Index @Code "@OddLeftMargin" @@ -14,13 +14,13 @@ even.right.margin @Index @Code "@EvenRightMargin" page, and the left and right margins on odd and even pages. Here they are with their default values: -@ID @OneRow @Code { -"@TopMargin { 2.50c }" -"@FootMargin { 2.50c }" -"@OddLeftMargin { 2.50c }" -"@OddRightMargin { 2.50c }" -"@EvenLeftMargin { 2.50c }" -"@EvenRightMargin { 2.50c }" +@ID @OneRow @Code @Verbatim { +@TopMargin { 2.50c } +@FootMargin { 2.50c } +@OddLeftMargin { 2.50c } +@OddRightMargin { 2.50c } +@EvenLeftMargin { 2.50c } +@EvenRightMargin { 2.50c } } When setting these options you must ensure that @ID @Eq { @Code "@OddLeftMargin" + @Code "@OddRightMargin" = @@ -31,11 +31,11 @@ In addition, four options are provided which add extra left and right margins to the page @I body (that is, everything but the running headers and footers): -@ID @OneRow @Code { -"@OddLeftBodyMargin { 0c }" -"@OddRightBodyMargin { 0c }" -"@EvenLeftBodyMargin { 0c }" -"@EvenRightBodyMargin { 0c }" +@ID @OneRow @Code @Verbatim { +@OddLeftBodyMargin { 0c } +@OddRightBodyMargin { 0c } +@EvenLeftBodyMargin { 0c } +@EvenRightBodyMargin { 0c } } The default is to add no page body margins, as shown. Most people who use page body margins would change only @Code "@OddRightBodyMargin" and @@ -46,12 +46,12 @@ @PP You can have a box drawn around each page if you wish. Here are the relevant options and their default values: -@ID @OneRow @Code { -"@PageBoxType { None }" -"@PageBoxMargin { 1.00c }" -"@PageBoxLineWidth {}" -"@PageBoxPaint { None }" -"@PageBoxShadow { 0.06c }" +@ID @OneRow @Code @Verbatim { +@PageBoxType { None } +@PageBoxMargin { 1.00c } +@PageBoxLineWidth {} +@PageBoxPaint { None } +@PageBoxShadow { 0.06c } } You get boxes by changing the @Code "@PageBoxType" option: page.box.type @Index @Code "@PageBoxType" @@ -83,10 +83,10 @@ the page box exactly as the {@Code margin}, {@Code linewidth}, {@Code paint}, and {@Code shadow} options described for other boxes in Section {@NumberOf boxes} do. For example, -@ID @OneRow @Code { -"@PageBoxType { CurveBox }" -"@PageBoxMargin { 1.0c }" -"@PageBoxPaint { grey }" +@ID @OneRow @Code @Verbatim { +@PageBoxType { CurveBox } +@PageBoxMargin { 1.0c } +@PageBoxPaint { grey } } draws a curved box, painted grey, around each page, with a one centimetre margin between its boundary and the page contents. If the @@ -138,13 +138,13 @@ The @Code "@BoundaryMarks" symbol has options for controlling the line width (thickness), the line length, and the gap between the ends of the lines and the corner of the text area: -@ID @OneRow @Code { -"@PageBackground {" -" @BoundaryMarks" -" linewidth { 0.2p }" -" length { 0.5c }" -" gap { 0.5c }" -"}" +@ID @OneRow @Code @Verbatim { +@PageBackground { + @BoundaryMarks + linewidth { 0.2p } + length { 0.5c } + gap { 0.5c } +} } This shows the default values: 0.2 points for line width, 0.5 centimetres for the others. diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/fmt_setu lout-3.27/doc/user/fmt_setu --- lout-3.26/doc/user/fmt_setu Wed Sep 18 12:22:37 2002 +++ lout-3.27/doc/user/fmt_setu Thu Nov 21 21:26:19 2002 @@ -5,7 +5,7 @@ @PP As mentioned briefly in Section {@NumberOf start}, each Lout document begins with an instruction to include (i.e. to read) a @I { setup file }: -setup.file @Index { setup file } +setup.files. @Index { setup files } sysinclude. @Index @Code "@SysInclude" system.include @Index { system include directory } doc.file @Index { @Code "doc" file } @@ -105,11 +105,13 @@ few. You change the overall format of your document by changing these options. @PP -As it stands, the options are all hidden within comments, so the -default values (shown within braces) are in force. To change an -option, delete the @Code "#" and change the value between -braces. For example, to set the document in Helvetica 10 point -font, change the @Code { "@InitialFont" } line to +A @Code "#" causes Lout to ignore that character and the rest of the +line (such ignored parts are called {@I comments} and @Code "#" is +the @I { comment character }). As it stands, then, the options are +all hidden within comments, so their default values (shown within braces +in the comments) are in force. To change an option, delete the @Code "#" +and change the value between braces. For example, to set the document +in Helvetica 10 point font, change the @Code { "@InitialFont" } line to @ID @Code "@InitialFont { Helvetica Base 10p }" We won't go through all the options now, since they are the subject of following sections. @@ -124,15 +126,15 @@ one or both of the alternative values as you wish. @PP Next comes a similar @Code "@Use" clause, for the DocumentSetup package: -@ID @OneRow @Code { -"@Use { @DocumentSetup" -" # @PageType { A4 @OrIfPlain Other }" -" # @PageWidth { 80s }" -" # @PageHeight { 66f }" -" # @PageOrientation { Portrait }" -" # @PageBackground {}" -" # @TopMargin { 2.5c @OrIfPlain 6f }" -"}" +@ID @OneRow @Code @Verbatim { +@Use { @DocumentSetup + # @PageType { A4 @OrIfPlain Other } + # @PageWidth { 80s } + # @PageHeight { 66f } + # @PageOrientation { Portrait } + # @PageBackground {} + # @TopMargin { 2.5c @OrIfPlain 6f } +} } This one has many options, starting with options for page layout as shown, then going on to figures and tables, tables of @@ -145,28 +147,27 @@ so that overhead transparencies will have a large font size. However, now comes a third @Code "@Use" clause whose symbol and options depend on the document type. For ordinary documents (i.e. in the @Code "doc" -setup file) this clause is -@ID @OneRow @Code { -"@Use { @OrdinarySetup" -" # @IndexWord { index }" -" # @AppendixWord { appendix }" -" # @SectionNumbers { Arabic }" -" # @AppendixNumbers { UCAlpha }" -" # @SectionHeadingFont { Bold }" -"}" +setup file) this clause is (once again we show just some of the options): +@ID @OneRow @Code @Verbatim { +@Use { @OrdinarySetup + # @IndexWord { index } + # @AppendixWord { appendix } + # @SectionNumbers { Arabic } + # @AppendixNumbers { UCAlpha } + # @SectionHeadingFont { Bold } +} +} +In the @Code slides setup file for overhead transparencies, we find this: +@ID @OneRow @Code @Verbatim { +@Use { @OverheadSetup + # @DateLine { No } + # @ContentsWord { contents } + # @FirstOverheadNumber { 1 } + # @OverheadNumbers { Arabic } + # @TitlePageFont { Helvetica Base 1.5f } + # @OverheadHeadingFont { Bold } + # @OverheadInContents { No } } -Once again this is just some of the options. In the @Code slides -setup file for overhead transparencies, we find this: -@ID @OneRow @Code { -"@Use { @OverheadSetup" -" # @DateLine { No }" -" # @ContentsWord { contents }" -" # @FirstOverheadNumber { 1 }" -" # @OverheadNumbers { Arabic }" -" # @TitlePageFont { Helvetica Base 1.5f }" -" # @OverheadHeadingFont { Bold }" -" # @OverheadInContents { No }" -"}" } In general this third @Code "@Use" clause assigns values to options specific to the document type we are using, whereas the first and diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/fmt_size lout-3.27/doc/user/fmt_size --- lout-3.26/doc/user/fmt_size Wed Sep 18 12:22:37 2002 +++ lout-3.27/doc/user/fmt_size Mon Nov 18 09:25:54 2002 @@ -6,11 +6,11 @@ This section explains how to use the setup file options that determine page size and page orientation. Here they are with their default values: page.type @Index @Code "@PageType" -@ID @OneRow @Code { -"@PageType { A4 }" -"@PageWidth {}" -"@PageHeight {}" -"@PageOrientation { Portrait }" +@ID @OneRow @Code @Verbatim { +@PageType { A4 } +@PageWidth {} +@PageHeight {} +@PageOrientation { Portrait } } The usual way to determine the page size is to set the @Code "@PageType" option to the name of the paper you use: diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/gra_capt lout-3.27/doc/user/gra_capt --- lout-3.26/doc/user/gra_capt Wed Sep 18 12:22:38 2002 +++ lout-3.27/doc/user/gra_capt Thu Nov 21 21:22:55 2002 @@ -4,7 +4,25 @@ @Begin @PP There are options for placing captions above, below, left, and right of +captions. @RawIndex { captions } captions.graphs @SubIndex { in graphs } +graphs. @RawIndex { graphs (statistical) } +graphs.captions @SubIndex { captions } +graphs.abovecaption @SubIndex { @Code abovecaption option } +abovecaption. @RawIndex { @Code "abovecaption" option } +abovecaption.graph @SubIndex { in graphs } +graphs. @RawIndex { graphs (statistical) } +graphs.belowcaption @SubIndex { @Code belowcaption option } +belowcaption. @RawIndex { @Code "belowcaption" option } +belowcaption.graph @SubIndex { in graphs } +graphs. @RawIndex { graphs (statistical) } +graphs.leftcaption @SubIndex { @Code leftcaption option } +leftcaption. @RawIndex { @Code "leftcaption" option } +leftcaption.graph @SubIndex { in graphs } +graphs. @RawIndex { graphs (statistical) } +graphs.rightcaption @SubIndex { @Code rightcaption option } +rightcaption. @RawIndex { @Code "rightcaption" option } +rightcaption.graph @SubIndex { in graphs } the frame: @ID @OneRow @Code { "@Graph" @@ -34,21 +52,37 @@ @PP There are options for controlling the amount of space between each caption (when non-empty) and the frame. Here they are with their +graphs. @RawIndex { graphs (statistical) } +graphs.abovegap @SubIndex { @Code abovegap option } +abovegap. @RawIndex { @Code "abovegap" option } +abovegap.graphs @SubIndex { in graphs } +graphs. @RawIndex { graphs (statistical) } +graphs.belowgap @SubIndex { @Code belowgap option } +belowgap. @RawIndex { @Code "belowgap" option } +belowgap.graphs @SubIndex { in graphs } +graphs. @RawIndex { graphs (statistical) } +graphs.leftgap @SubIndex { @Code leftgap option } +leftgap. @RawIndex { @Code "leftgap" option } +leftgap.graphs @SubIndex { in graphs } +graphs. @RawIndex { graphs (statistical) } +graphs.rightgap @SubIndex { @Code rightgap option } +rightgap. @RawIndex { @Code "rightgap" option } +rightgap.graphs @SubIndex { in graphs } default values: -@ID @OneRow @Code { -"@Graph" -" abovegap { 0.5 cm }" -" belowgap { 0.5 cm }" -" leftgap { 1.5 cm }" -" rightgap { 0.5 cm }" -"{" -" ..." -"}" +@ID @OneRow @Code @Verbatim { +@Graph + abovegap { 0.5c } + belowgap { 0.5c } + leftgap { 1.5c } + rightgap { 0.5c } +{ + ... +} } This is particularly important in the case of {@Code "leftgap"} (and @Code "rightgap" if @Code rticks is used), because Lout has no idea how wide the ticks and labels attached to the y axis -are; 1.5 cm is just a wild guess and often needs adjustment. On the +are; 1.5c is just a wild guess and often needs adjustment. On the other hand, Lout does know how high the ticks and labels on the x axis are; it allows 1.7 times the current font size for them, and @Code "belowgap" is additional to this. @@ -56,13 +90,17 @@ When a graph is to be presented as a centred display, it is generally best if the centring is done with respect to the frame alone, not the captions, ticks, and labels. The @Code "hidecaptions" option does this by +graphs. @RawIndex { graphs (statistical) } +graphs.hidecaptions @SubIndex { @Code hidecaptions option } +hidecaptions. @RawIndex { @Code "hidecaptions" option } +hidecaptions.in.graphs @SubIndex { in graphs } making the left and right captions and gaps seem to Lout to have zero width: -@ID @OneRow @Code { -"@Graph" -" hidecaptions { yes }" -"{" -" ..." -"}" +@ID @OneRow @Code @Verbatim { +@Graph + hidecaptions { yes } +{ + ... +} } Actually @Code "yes" has been made the default value, since the vast majority of graphs are centred displays. In the rare cases where diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/gra_data lout-3.27/doc/user/gra_data --- lout-3.26/doc/user/gra_data Wed Sep 18 12:22:38 2002 +++ lout-3.27/doc/user/gra_data Thu Nov 21 21:31:39 2002 @@ -4,11 +4,15 @@ @Begin @PP The @Code "@Data" symbol has options for controlling the -data. @Index @Code "@Data" +graphs. @RawIndex { graphs (statistical) } +graphs.data @SubIndex { @Code "@Data" symbol } +data.graph @Index { @Code "@Data" symbol (graphs) } appearance of its data. We have already seen the @Code "points" option, which controls what is printed at each data +graphs. @RawIndex { graphs (statistical) } +graphs.points @SubIndex { @Code points option } +points.graph @Index { @Code "points" option (graphs) } point: -points.graphs @Index { @Code "points" option in graphs } @CD @Tab vmargin { 0.5vx } @Fmta { @Col @Code A ! @Col B ! @Col ! @Col @Code C ! @Col D } @@ -41,20 +45,24 @@ } If the @Code "points" option is omitted or empty, nothing is printed. The symbols are centred over the data point. There is a @Code "symbolsize" +graphs. @RawIndex { graphs (statistical) } +graphs.symbolsize @SubIndex { @Code symbolsize option } +symbolsize.graph @Index { @Code "symbolsize" option (graphs) } option which controls the size (radius) of all these symbols: -symbolsize. @Index { @Code "symbolsize" option in graphs } @ID @OneRow @Code { "@Data" -" symbolsize { 0.15 ft }" +" symbolsize { 0.15f }" } shows the default, 0.15 times the current font size. More precisely, the default value is taken from an option to the @Code "@Graph" symbol, also called {@Code "symbolsize"}. By setting that option you can therefore set the symbol size of all data -points in the graph at once; its default value is {@Code "0.15 ft"}. +points in the graph at once; its default value is {@Code "0.15f"}. @PP The @Code "@Data" symbol also has a @Code "pairs" option which -pairs. @Index { @Code "pairs" option in graphs } +graphs. @RawIndex { graphs (statistical) } +graphs.pairs @SubIndex { @Code pairs option } +pairs.graph @Index { @Code "pairs" option (graphs) } determines how each pair of points is connected. The choices are @Code none (not connected, the default), @Code solid (a solid line), @Code dashed (a dashed line), or @Code dotted (a dotted line). For @@ -97,38 +105,49 @@ others. @PP A @Code "dashlength" option controls the length of dashes and also the +graphs. @RawIndex { graphs (statistical) } +graphs.dashlength @SubIndex { @Code dashlength option } +dashlength.graph @Index { @Code "dashlength" option (graphs) } separation between dots, and a @Code "linewidth" option controls the +graphs. @RawIndex { graphs (statistical) } +graphs.linewidth @SubIndex { @Code linewidth option } +linewidth.graph @Index { @Code "linewidth" option (graphs) } width (thickness) of the lines and dots: @ID @OneRow @Code { "@Data" -" dashlength { 0.2 ft }" -" linewidth { 0.5 pt }" +" dashlength { 0.2f }" +" linewidth { 0.5p }" "{" " ..." "}" } -This shows the default values, {@Code "0.2 ft"} for @Code "dashlength" -and {@Code "0.5 pt"} (half a point) for {@Code "linewidth"}. Actually +This shows the default values, {@Code "0.2f"} for @Code "dashlength" +and {@Code "0.5p"} (half a point) for {@Code "linewidth"}. Actually the default value for @Code "linewidth" is whatever happens to be already in use, but Lout sets line widths to half a point initially. This option also controls the separation between bars in histograms. @PP The @Code "pairs" option is also used for producing histograms, like +graphs. @RawIndex { graphs (statistical) } +graphs.histograms @SubIndex { histograms } histograms. @Index { histograms } +graphs. @RawIndex { graphs (statistical) } +graphs.yhisto @SubIndex { @Code yhisto option } +yhisto.graph @Index { @Code "yhisto" option (graphs) } this: -@ID @OneRow @Code { -"@Graph" -" hidecaptions { yes }" -" abovecaption { Computer Science 3 Results (1993) }" -" leftcaption { Number of" -"students }" -" belowcaption { Final mark (%) }" -" yextra { 0 cm }" -" ymax { 80 }" -"{" -" @Data pairs { yhisto }" -" { 0 1 10 3 20 2 30 4 40 15 50 60 60 58 70 28 80 15 90 7 100 0 }" -"}" +@ID @OneRow @Code @Verbatim { +@Graph + hidecaptions { yes } + abovecaption { Computer Science 3 Results (1993) } + leftcaption { Number of +students } + belowcaption { Final mark (%) } + yextra { 0c } + ymax { 80 } +{ + @Data pairs { yhisto } + { 0 1 10 3 20 2 30 4 40 15 50 60 60 58 70 28 80 15 90 7 100 0 } +} } which has result @CD @Graph @@ -137,7 +156,7 @@ leftcaption { Number of students } belowcaption { Final mark (%) } - yextra { 0 cm } + yextra { 0c } ymax { 80 } { @Data @@ -150,13 +169,16 @@ on the result (however, there must be a last y value anyway). @PP There is an alternative to @Code "yhisto" called {@Code "surfaceyhisto"}: +graphs. @RawIndex { graphs (statistical) } +graphs.surfaceyhisto @SubIndex { @Code surfaceyhisto option } +surfaceyhisto.graph @Index { @Code "surfaceyhisto" option (graphs) } @CD @Graph hidecaptions { yes } abovecaption { Computer Science 3 Results (1993) } leftcaption { Number of students } belowcaption { Final mark (%) } - yextra { 0 cm } + yextra { 0c } ymax { 80 } { @Data @@ -167,39 +189,50 @@ histogram, not the descending lines. @PP There are @Code "xhisto" and @Code "surfacexhisto" values of +graphs. @RawIndex { graphs (statistical) } +graphs.xhisto @SubIndex { @Code xhisto option } +xhisto.graph @Index { @Code "xhisto" option (graphs) } +graphs. @RawIndex { graphs (statistical) } +graphs.surfacexhisto @SubIndex { @Code surfacexhisto option } +surfacexhisto.graph @Index { @Code "surfacexhisto" option (graphs) } @Code "pairs" which produce a histogram whose bars are parallel to the x axis. There are also {@Code "filledyhisto" } and {@Code "filledxhisto" } values which produce filled rectangles rather +graphs. @RawIndex { graphs (statistical) } +graphs.filledxhisto @SubIndex { @Code filledxhisto option } +filledxhisto.graph @Index { @Code "filledxhisto" option (graphs) } +graphs. @RawIndex { graphs (statistical) } +graphs.filledyhisto @SubIndex { @Code filledyhisto option } +filledyhisto.graph @Index { @Code "filledyhisto" option (graphs) } than outlined ones: -@ID @OneRow @Code { -"@Graph" -" abovecaption { Fertility rates in some developing countries }" -" xextra { 0 cm }" -" yextra { 0 cm }" -" xmax { 8 }" -" yticks {" -" 1.5 (Turkey) 2.5 (Thailand)" -" 3.5 (Indonesia) 4.5 (Costa Rica)" -" 5.5 (Colombia) 6.5 (Cameroon)" -" 7.5 (Botswana) 8.5 (Bangladesh)" -" }" -" yticklength { 0 cm }" -"{" -" @Data" -" pairs { filledxhisto }" -" { 0 1 3.2 2 2.2 3 3.0 4 3.5 5 2.8 6 5.9 7 4.8 8 5.3 9 }" -"}" +@ID @OneRow @Code @Verbatim { +@Graph + abovecaption { Fertility rates in some developing countries } + xextra { 0c } + yextra { 0c } + xmax { 8 } + yticks { + 1.5 (Turkey) 2.5 (Thailand) + 3.5 (Indonesia) 4.5 (Costa Rica) + 5.5 (Colombia) 6.5 (Cameroon) + 7.5 (Botswana) 8.5 (Bangladesh) + } + yticklength { 0c } +{ + @Data + pairs { filledxhisto } + { 0 1 3.2 2 2.2 3 3.0 4 3.5 5 2.8 6 5.9 7 4.8 8 5.3 9 } +} } produces @CD @Graph - abovecaption { Fertility rates in some developing countries - } - xextra { 0 cm } - yextra { 0 cm } + abovecaption { Fertility rates in some developing countries } + xextra { 0c } + yextra { 0c } xmax { 8 } yticks { 1.5 (Turkey) 2.5 (Thailand) 3.5 (Indonesia) 4.5 (Costa Rica) 5.5 (Colombia) 6.5 (Cameroon) 7.5 (Botswana) 8.5 (Bangladesh) } - yticklength { 0 cm } + yticklength { 0c } { @Data pairs { filledxhisto } @@ -212,10 +245,13 @@ first x value has no effect on the result. @PP The colour of one set of data can be changed with a @Code "colour" +graphs. @RawIndex { graphs (statistical) } +graphs.colour @SubIndex { @Code colour option } +colour.graph @Index { @Code "colour" option (graphs) } option: -@ID @OneRow @Code { -"@Data" -" colour { blue }" +@ID @OneRow @Code @Verbatim { +@Data + colour { blue } } For the complete list of acceptable colours, see Section {@NumberOf colour}. The @Code "colour" option's name may also be @@ -223,6 +259,10 @@ @PP It is also possible to paint the area between the data points and the x axis (or frame if @Code "style" is not {@Code "axes"}), using +graphs. @RawIndex { graphs (statistical) } +graphs.paint @SubIndex { @Code paint option } +paint. @RawIndex { @Code "paint" option } +paint.in.graphs @SubIndex { in graphs } @ID @OneRow @Code { "@Data" " paint { yes }" @@ -234,8 +274,69 @@ painting that set, so they cannot be hidden under their own paint; and axes and frames are drawn last so that they too are never hidden. @PP +Wherever there is a @Code paint option in Lout's standard packages, +there is a neighbouring @Code texture option. For historical reasons +the @Code paint option of @Code "@Graph" is not quite the same as other +@Code "paint" options, but the @Code "texture" option is available +graphs. @RawIndex { graphs (statistical) } +graphs.texture @SubIndex { @Code texture option } +texture.option. @RawIndex { @Code "texture" option } +texture.option.in.graph @SubIndex { in graphs } +as usual: +@ID @OneRow @Code @Verbatim { +@Graph + yextra { 0c } +{ + @Data + paint { yes } + texture { chessboard angle { 45d } } + { 0 0.00 1 1.00 2 1.50 3 1.83 4 2.08 5 2.28 6 2.45 } +} +} +produces +@FootNote { +If you can't see any textures here, the fault is probably with your +PostScript viewer. See Section {@NumberOf textures}. +} +@CD @Graph + yextra { 0c } +{ + @Data + paint { yes } + texture { striped angle { 90d } } + { 0 0.00 1 1.00 2 1.50 3 1.83 4 2.08 5 2.28 6 2.45 } +} +Any value acceptable to the @Code "texture" option of @Code "@Box" +(Section {@NumberOf boxes}) is acceptable here. The @Code "texture" +option will also give a texture to the filled areas of a +{@Code filledxhisto} or {@Code filledyhisto}: +@ID @OneRow @Code @Verbatim { +@Graph + yextra { 0c } +{ + @Data + pairs { filledyhisto } + texture { striped angle { 45d } } + { 0 0.00 1 1.00 2 1.50 3 1.83 4 2.08 5 2.28 6 2.45 7 0 } +} +} +produces +@CD @Graph + yextra { 0c } +{ + @Data + pairs { filledyhisto } + texture { striped angle { 45d } } + { 0 0.00 1 1.00 2 1.50 3 1.83 4 2.08 5 2.28 6 2.45 7 0 } +} +If you want the bars to vary in colour or texture, you have to give +multiple @Code "@Data" sets, one for each combination of colour and +texture. +@PP A @Code "dataformat" option is provided for changing the interpretation -dataformat. @Index { @Code "dataformat" option in graphs } +graphs. @RawIndex { graphs (statistical) } +graphs.dataformat @SubIndex { @Code dataformat option } +dataformat.graph @Index { @Code "dataformat" option (graphs) } of the data. Ordinarily, as we know, the numbers are taken to be pairs of x and y coordinates, like this: @ID @OneRow @Code { @@ -253,17 +354,17 @@ " y y ... y" "}" } -and x values 1, 2, and so on are inserted automatically, just as though -the original input had been +and x values 1, 2, and so on are inserted automatically, as though +the original input was @ID @OneRow @Code { "@Data" "{" " 1 y 2 y ..." "}" } -There is also {@Code "xonly"}, which inserts y values 1, 2, and so on. The +Similarly, {@Code "xonly"} inserts y values 1, 2, and so on. The default value, {@Code "xandy"}, gives the usual interpretation, and -{@Code "swapxandy"} exchanges adjacent pairs of numbers in the data, so -that the data is interpreted as @E { (y, x) } pairs rather than @E { (x, y) } +{@Code "swapxandy"} exchanges adjacent pairs of numbers: the data +is interpreted as @E { (y, x) } pairs rather than @E { (x, y) } pairs. The layout of data on lines has no effect on the interpretation. @End @Section diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/gra_erro lout-3.27/doc/user/gra_erro --- lout-3.26/doc/user/gra_erro Wed Sep 18 12:22:38 2002 +++ lout-3.27/doc/user/gra_erro Thu Nov 21 21:24:36 2002 @@ -4,6 +4,10 @@ @Begin @PP Lout normally produces output that will print without mishap on +graphs. @RawIndex { graphs (statistical) } +graphs.errors @SubIndex { errors } +errors. @RawIndex { errors } +errors.in.graphs @SubIndex { in graphs } any PostScript device. However, some of the options of @Code "@Graph" and all of the data and labels are passed through Lout without checking. Any errors in this material will not be detected @@ -27,10 +31,14 @@ graph is being printed, and it remains there until the end of the current page, when it is discarded and all memory consumed by the graph is reclaimed. If you do run out of memory, one option is to try -@ID @Code { -"@Graph" -" save { yes }" -"..." +graphs. @RawIndex { graphs (statistical) } +graphs.save @SubIndex { @Code save option } +save. @RawIndex { @Code "save" option } +save.in.graphs @SubIndex { in graphs } +@ID @Code @Verbatim { +@Graph + save { yes } +... } This causes the memory used by the graph to be reclaimed as soon as the graph is printed, which might well solve your problem if you have diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/gra_func lout-3.27/doc/user/gra_func --- lout-3.26/doc/user/gra_func Wed Sep 18 12:22:38 2002 +++ lout-3.27/doc/user/gra_func Wed Nov 13 20:34:14 2002 @@ -4,6 +4,8 @@ @Begin @PP @Code "@Graph" offers quite a large selection of mathematical functions, +graphs. @RawIndex { graphs (statistical) } +graphs.mathematical @SubIndex { mathematical functions } mathematical.functions @Index { mathematical functions in graphs } available everywhere that x and y coordinates are required: within the @Code xticks and @Code yticks options, within the points within @@ -26,36 +28,36 @@ {@Code "yloop"}, and {@Code "zloop"}. For example, the following plots the two functions @Eq { y = 2 } and @Eq { y = sqrt { pi x "/" 4 } + 1 } for @Eq { x } from 10 to 500: -@ID @OneRow @Code { -"-2p @Font @Graph" -" style { axes }" -" xorigin { 0 }" -" yorigin { 0 }" -" width { 8 cm }" -" xticks { 10@ 50@ 100@ 200@ 500@ }" -" objects { @NE at { 300 2 } @I { Exponential }" -" @SE at { 300 sqrt { pi*300/4 } + 1 } @I { Uniform } }" -" belowcaption { @I n }" -" belowgap { 0 cm }" -" leftcaption { Right shell nodes }" -"{" -" @Data points { filledcircle }" -" { 10 1.97 50 2.01 100 2.00 200 2.0 500 2.00 }" -"" -" @Data points { filledcircle }" -" { 10 3.53 50 7.45 100 9.32 200 13.41 500 21.63 }" -"" -" @Data pairs { dashed }" -" { 10 2 500 2 }" -"" -" @Data pairs { dashed }" -" {" -" xloop from { 10 } to { 500 } by { 20 } do" -" {" -" x sqrt { pi*x / 4 } + 1" -" }" -" }" -"}" +@ID -1px @Break @OneRow @Code @Verbatim { +-2p @Font @Graph + style { axes } + xorigin { 0 } + yorigin { 0 } + width { 8c } + xticks { 10@ 50@ 100@ 200@ 500@ } + objects { @NE at { 300 2 } @I { Exponential } + @SE at { 300 sqrt { pi*300/4 } + 1 } @I { Uniform } } + belowcaption { @I n } + belowgap { 0c } + leftcaption { Right shell nodes } +{ + @Data points { filledcircle } + { 10 1.97 50 2.01 100 2.00 200 2.0 500 2.00 } + + @Data points { filledcircle } + { 10 3.53 50 7.45 100 9.32 200 13.41 500 21.63 } + + @Data pairs { dashed } + { 10 2 500 2 } + + @Data pairs { dashed } + { + xloop from { 10 } to { 500 } by { 20 } do + { + x sqrt { pi*x / 4 } + 1 + } + } +} } The @Code "do" option of @Code xloop is replicated repeatedly with each occurrence of @Code x replaced by 10, 30, 50, ... up to 490. The @@ -67,14 +69,14 @@ style { axes } xorigin { 0 } yorigin { 0 } - width { 8 cm } + width { 8c } xticks { 10@ 50@ 100@ 200@ 500@ } objects { @NE at { 300 2 } @I { Exponential } @SE at { 300 sqrt { pi*300/4 } + 1 } @I { Uniform } } belowcaption { @I n } - belowgap { 0 cm } + belowgap { 0c } leftcaption { Right shell nodes } { @Data points { filledcircle } @@ -101,11 +103,11 @@ There is also an @Code "if" symbol which produces alternative results, depending on whether a condition evaluates to @Code "true" or {@Code"false"}: -@ID @OneRow @Code { -"xloop from { -5 } to { +5 } by { 0.2 } do" -"{" -" if cond { abs { x } > 0.1 } then { x 1/x } else {}" -"}" +@ID @OneRow @Code @Verbatim { +xloop from { -5 } to { +5 } by { 0.2 } do +{ + if cond { abs { x } > 0.1 } then { x 1/x } else {} +} } This plots the function @Eq { y = 1 "/" x }, skipping points near zero. Actually the @Code "else" part could be omitted since its default @@ -113,13 +115,13 @@ @PP Adventurous users might enjoy nesting a @Code "yloop" or @Code "zloop" within an {@Code "xloop"}, or using loops to generate ticks, like this: -@ID @OneRow @Code { -"xticks {" -" xloop from { 0 } to { 20 } do" -" {" -" x if cond { x mod 5 = 0 } then { @ }" -" }" -"}" +@ID @OneRow @Code @Verbatim { +xticks { + xloop from { 0 } to { 20 } do + { + x if cond { x mod 5 = 0 } then { @ } + } +} } The missing @Code "by" option defaults to 1, so this produces x ticks at 0, 1, 2, ..., 20, with labels at 0, 5, 10, 15, and 20. It is quite all @@ -129,25 +131,25 @@ You can define your own functions using Lout definitions, placed in your @Code "mydefs" file as explained in Section {@NumberOf definitions}. Here is an example of a function definition: -@ID @OneRow @Code { -"import @Graph @Data" -"def @Tan" -" precedence 40" -" right x" -"{" -" sin x / cos x" -"}" +@ID @OneRow @Code @Verbatim { +import @Graph @Data +def @Tan + precedence 40 + right x +{ + sin x / cos x +} } This defines a function called @Code "@Tan" which implements the trigonometric tangent function. It may then be used in expressions just like any other function: -@ID @OneRow @Code { -"@Data {" -" yloop from { 0 } to { 0.95 } by { 0.05 } do" -" {" -" y @Tan { y / pi }" -" }" -"}" +@ID @OneRow @Code @Verbatim { +@Data { + yloop from { 0 } to { 0.95 } by { 0.05 } do + { + y @Tan { y / pi } + } +} } Following is a detailed explanation. @PP diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/gra_keys lout-3.27/doc/user/gra_keys --- lout-3.26/doc/user/gra_keys Wed Sep 18 12:22:38 2002 +++ lout-3.27/doc/user/gra_keys Wed Nov 13 21:01:00 2002 @@ -4,23 +4,66 @@ @Begin @PP A @I key to a graph is an explanation of what each data set -key. @Index { key in graph } +graphs. @RawIndex { graphs (statistical) } +graphs.keys @SubIndex { keys } +keys.graph @Index { keys in graphs } represents. To assist you in constructing a key, some extra symbols are provided in addition to {@Code "@Graph"}: -graph.cross @Index @Code "@GraphCross" -graph.plus @Index @Code "@GraphPlus" -graph.square @Index @Code "@GraphSquare" -graph.filled.square @Index @Code "@GraphFilledSquare" -graph.diamond @Index @Code "@GraphDiamond" -graph.filled.diamond @Index @Code "@GraphFilledDiamond" -graph.circle @Index @Code "@GraphCircle" -graph.filled.circle @Index @Code "@GraphFilledCircle" -graph.triangle @Index @Code "@GraphTriangle" -graph.filled.triangle @Index @Code "@GraphFilledTriangle" -graph.noline @Index @Code "@GraphNoLine" -graph.solid @Index @Code "@GraphSolid" -graph.dashed @Index @Code "@GraphDashed" -graph.dotted @Index @Code "@GraphDotted" +graphs. @RawIndex { graphs (statistical) } +graphs.graphcross @SubIndex { @Code "@GraphCross" symbol } +{ graphacross } @Index { @Code "@GraphCross" symbol (graphs) } + +graphs. @RawIndex { graphs (statistical) } +graphs.graphplus @SubIndex { @Code "@GraphPlus" symbol } +{ graphaplus } @Index { @Code "@GraphPlus" symbol (graphs) } + +graphs. @RawIndex { graphs (statistical) } +graphs.graphsquare @SubIndex { @Code "@GraphSquare" symbol } +{ graphasquare } @Index { @Code "@GraphSquare" symbol (graphs) } + +graphs. @RawIndex { graphs (statistical) } +graphs.graphfilled.square @SubIndex { @Code "@GraphFilledSquare" symbol } +{ graphafilled.square } @Index { @Code "@GraphFilledSquare" symbol (graphs) } + +graphs. @RawIndex { graphs (statistical) } +graphs.graphdiamond @SubIndex { @Code "@GraphDiamond" symbol } +{ graphadiamond } @Index { @Code "@GraphDiamond" symbol (graphs) } + +graphs. @RawIndex { graphs (statistical) } +graphs.graphfilled.diamond @SubIndex { @Code "@GraphFilledDiamond" symbol } +{ graphafilled.diamond } @Index { @Code "@GraphFilledDiamond" symbol (graphs) } + +graphs. @RawIndex { graphs (statistical) } +graphs.graphcircle @SubIndex { @Code "@GraphCircle" symbol } +{ graphacircle } @Index { @Code "@GraphCircle" symbol (graphs) } + +graphs. @RawIndex { graphs (statistical) } +graphs.graphfilled.circle @SubIndex { @Code "@GraphFilledCircle" symbol } +{ graphafilled.circle } @Index { @Code "@GraphFilledCircle" symbol (graphs) } + +graphs. @RawIndex { graphs (statistical) } +graphs.graphtriangle @SubIndex { @Code "@GraphTriangle" symbol } +{ graphatriangle } @Index { @Code "@GraphTriangle" symbol (graphs) } + +graphs. @RawIndex { graphs (statistical) } +graphs.graphfilled.triangle @SubIndex { @Code "@GraphFilledTriangle" symbol } +{ graphafilled.triangle } @Index { @Code "@GraphFilledTriangle" symbol (graphs) } + +graphs. @RawIndex { graphs (statistical) } +graphs.graphnoline @SubIndex { @Code "@GraphNoLine" symbol } +{ graphanoline } @Index { @Code "@GraphNoLine" symbol (graphs) } + +graphs. @RawIndex { graphs (statistical) } +graphs.graphsolid @SubIndex { @Code "@GraphSolid" symbol } +{ graphasolid } @Index { @Code "@GraphSolid" symbol (graphs) } + +graphs. @RawIndex { graphs (statistical) } +graphs.graphdashed @SubIndex { @Code "@GraphDashed" symbol } +{ graphadashed } @Index { @Code "@GraphDashed" symbol (graphs) } + +graphs. @RawIndex { graphs (statistical) } +graphs.graphdotted @SubIndex { @Code "@GraphDotted" symbol } +{ graphadotted } @Index { @Code "@GraphDotted" symbol (graphs) } @ID @Tab @Fmta { @Col @Code A ! @Col B ! @Col @Code C ! @Col D } { @@ -66,14 +109,16 @@ These extra symbols may be used anywhere in your document except within the right parameter of {@Code "@Graph"}; they are commonly used within the caption options of {@Code "@Graph"}: -@ID @OneRow @Code { -"@Graph" -" rightcaption {" -"@GraphPlus @GraphSolid @GraphPlus Boston" -"@GraphPlus @GraphDashed @GraphPlus New York" -"@GraphPlus @GraphDotted @GraphPlus Philadelphia" -"}" +@ID @OneRow @Code @Verbatim { +@Graph + rightcaption { +@GraphPlus @GraphSolid @GraphPlus Boston +@GraphPlus @GraphDashed @GraphPlus New York +@GraphPlus @GraphDotted @GraphPlus Philadelphia +} } +(You can also use them within the @Code objects option, which +is the way to place your key within the graph itself.) Recall that unlike the other captions, @Code rightcaption is set using the @Code "lines @Break" style rather than {@Code "clines @Break"} (Section {@NumberOf captions}). Adding this caption to the graph @@ -96,9 +141,9 @@ } The first eight symbols have a @Code "symbolsize" option with the -usual meaning and the usual default value ({@Code "0.15 ft"}). The +usual meaning and the usual default value ({@Code "0.15f"}). The last four symbols have @Code "dashlength" and @Code "linewidth" options -with the usual default values, {@Code "0.2 ft"} and {@Code "0.5 pt"} +with the usual default values, {@Code "0.2f"} and {@Code "0.5p"} respectively, and a @Code "length" option, which determines the length -of the line drawn by each symbol; its default value is {@Code "1.0 ft"}. +of the line drawn by each symbol; its default value is {@Code "1.0f"}. @End @Section diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/gra_over lout-3.27/doc/user/gra_over --- lout-3.26/doc/user/gra_over Wed Sep 18 12:22:38 2002 +++ lout-3.27/doc/user/gra_over Thu Nov 21 21:34:11 2002 @@ -9,7 +9,10 @@ and if omitted are assigned some sensible default value. @PP There is a @Code "style" option for controlling the overall style of the -style.graph @Index { @Code "style" option of @Code "@Graph" } +graphs. @RawIndex { graphs (statistical) } +graphs.style @SubIndex { @Code style option } +style. @RawIndex { @Code "style" option } +style.in.graphs @SubIndex { in graphs } axes. @Index { axes in graphs } graph, whose value may be either {@Code "frame"}, {@Code "none"}, or {@Code "axes"}. The default value is {@Code "frame"}, and it produces @@ -20,33 +23,39 @@ @PP If the other value, {@Code "axes"}, is chosen, two other options called {@Code xorigin} and {@Code yorigin} become compulsory: -@ID @OneRow @Code { -"-2p @Font @Graph" -" style { axes }" -" xorigin { 0 }" -" yorigin { 0 }" -" width { 12 cm }" -" height { 7 cm }" -" leftcaption { 90d @Rotate { counts (%) } }" -" leftgap { 1.0 cm }" -" belowcaption { time (min) }" -" belowgap { 0 cm }" -"{" -" @Data" -" points { filledsquare }" -" pairs { solid }" -" { 0 0.0 1 4.8 2 7.0 3 15.2 4 19.8 5 20.0 6 21.0 7 25.0" -" 10 29.5 15 31.2 20 35.0 30 40.0 60 50.8" -" }" -"" -" @Data" -" points { square }" -" pairs { solid }" -" {" -" 0 0.0 1 3.7 1.5 43.1 2 99.1 3 85.6 4 69.1 5 47.0 6 44.1 7 40.8" -" 10 35.0 15 29.4 20 25.0 30 21.1 60 15.5" -" }" -"}" +graphs. @RawIndex { graphs (statistical) } +graphs.xorigin @SubIndex { @Code xorigin option } +xorigin.graph @Index { @Code "xorigin" option (graphs) } +graphs. @RawIndex { graphs (statistical) } +graphs.yorigin @SubIndex { @Code yorigin option } +yorigin.graph @Index { @Code "yorigin" option (graphs) } +@ID @OneRow @Code @Verbatim { +-2p @Font @Graph + style { axes } + xorigin { 0 } + yorigin { 0 } + width { 12c } + height { 7c } + leftcaption { 90d @Rotate { counts (%) } } + leftgap { 1.0c } + belowcaption { time (min) } + belowgap { 0c } +{ + @Data + points { filledsquare } + pairs { solid } + { 0 0.0 1 4.8 2 7.0 3 15.2 4 19.8 5 20.0 6 21.0 7 25.0 + 10 29.5 15 31.2 20 35.0 30 40.0 60 50.8 + } + + @Data + points { square } + pairs { solid } + { + 0 0.0 1 3.7 1.5 43.1 2 99.1 3 85.6 4 69.1 5 47.0 6 44.1 7 40.8 + 10 35.0 15 29.4 20 25.0 30 21.1 60 15.5 + } +} } We have requested a smaller font size for this graph as a whole by preceding it with {@Code "-2p @Font"}, meaning two points smaller, and @@ -56,12 +65,12 @@ style { axes } xorigin { 0 } yorigin { 0 } - width { 12 cm } - height { 7 cm } + width { 12c } + height { 7c } leftcaption { 90d @Rotate { counts (%) } } - leftgap { 1.0 cm } + leftgap { 1.0c } belowcaption { time (min) } - belowgap { 0 cm } + belowgap { 0c } { @Data points { filledsquare } @@ -91,15 +100,21 @@ frame). @PP There are @Code "xlog" and @Code "ylog" options which produce +graphs. @RawIndex { graphs (statistical) } +graphs.xlog @SubIndex { @Code xlog option } +xlog.graph @Index { @Code "xlog" option (graphs) } +graphs. @RawIndex { graphs (statistical) } +graphs.ylog @SubIndex { @Code ylog option } +ylog.graph @Index { @Code "ylog" option (graphs) } logarithmic.axes @Index { logarithmic axes in graphs } logarithmic x and y axes: -@ID @OneRow @Code { -"@Graph" -" xlog { 10 }" -" ylog { 10 }" -"{" -" ..." -"}" +@ID @OneRow @Code @Verbatim { +@Graph + xlog { 10 } + ylog { 10 } +{ + ... +} } The value is the base of the logarithm, usually 10 or 2, or {@Code none} (the default) meaning not logarithmic. Logarithms @@ -110,14 +125,22 @@ for {@Code "ylog"}. @PP There are @Code "width" and @Code "height" options for setting the size +graphs. @RawIndex { graphs (statistical) } +graphs.width @SubIndex { @Code width option } +width. @RawIndex { @Code "width" option } +width.in.graphs @SubIndex { in graphs } +graphs. @RawIndex { graphs (statistical) } +graphs.height @SubIndex { @Code height option } +height. @RawIndex { @Code "height" option } +height.in.graphs @SubIndex { in graphs } of the total area enclosed: -@ID @OneRow @Code { -"@Graph" -" width { 6.0 cm }" -" height { 4.0 cm }" -"{" -" ..." -"}" +@ID @OneRow @Code @Verbatim { +@Graph + width { 6.0c } + height { 4.0c } +{ + ... +} } This shows the default width and height, six centimetres and four centimetres. These lengths and others discussed below can be specified @@ -126,39 +149,48 @@ @PP Within the frame or axes, a small margin is kept free of data points. The size of this margin is controlled by @Code "xextra" and @Code "yextra" +graphs. @RawIndex { graphs (statistical) } +graphs.xextra @SubIndex { @Code xextra option } +xextra.graph @Index { @Code "xextra" option (graphs) } +graphs. @RawIndex { graphs (statistical) } +graphs.yextra @SubIndex { @Code yextra option } +yextra.graph @Index { @Code "yextra" option (graphs) } options: -@ID @OneRow @Code { -"@Graph" -" xextra { 0.5 cm }" -" yextra { 0.5 cm }" -"{" -" ..." -"}" +@ID @OneRow @Code @Verbatim { +@Graph + xextra { 0.5c } + yextra { 0.5c } +{ + ... +} } -Setting @Code "xextra" to @Code "0.5 cm" (the default value if the +Setting @Code "xextra" to @Code "0.5c" (the default value if the @Code style option is {@Code frame}) means that the smallest x value will be placed 0.5 centimetres to the right of the left boundary, and the largest will be placed 0.5 centimetres to the left of the right -boundary. It is quite safe to set @Code "xextra" to @Code "0 cm" if +boundary. It is quite safe to set @Code "xextra" to @Code "0c" if desired, and indeed this is the default value when @Code style is {@Code axes} or {@Code none}. The @Code "yextra" option works in exactly the same way for y values. @PP The @Code "xdecreasing" option plots the x values in decreasing order +graphs. @RawIndex { graphs (statistical) } +graphs.xdecreasing @SubIndex { @Code xdecreasing option } +xdecreasing.graph @Index { @Code "xdecreasing" option (graphs) } instead of increasing: -@ID @Code { -"@Graph" -" xdecreasing { yes }" -" abovecaption { New South Wales road deaths, 1960--1990" -"(fatalities per 100 million vehicle km) }" -"{" -" @Data" -" points { plus }" -" pairs { dashed }" -" {" -" 1963 5.6 1971 4.3 1976 3.7 1979 3.4 1982 2.9 1985 2.3 1988 2.0" -" }" -"}" +@ID @Code @Verbatim { +@Graph + xdecreasing { yes } + abovecaption { New South Wales road deaths, 1960--1990 +(fatalities per 100 million vehicle km) } +{ + @Data + points { plus } + pairs { dashed } + { + 1963 5.6 1971 4.3 1976 3.7 1979 3.4 1982 2.9 1985 2.3 1988 2.0 + } +} } produces @CD @Graph @@ -175,5 +207,8 @@ } The value of @Code "xdecreasing" should be either @Code "no" (the default value) or {@Code "yes"}. A similar @Code "ydecreasing" option does the same +graphs. @RawIndex { graphs (statistical) } +graphs.ydecreasing @SubIndex { @Code ydecreasing option } +ydecreasing.graph @Index { @Code "ydecreasing" option (graphs) } thing to the y axis. @End @Section diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/gra_plac lout-3.27/doc/user/gra_plac --- lout-3.26/doc/user/gra_plac Wed Sep 18 12:22:38 2002 +++ lout-3.27/doc/user/gra_plac Wed Nov 13 20:31:40 2002 @@ -7,15 +7,18 @@ able to place on the graph is quite limited. However, there is a way to place any number of arbitrary Lout objects anywhere on the graph, using the @Code objects option to the @Code "@Graph" symbol: -@ID @OneRow @Code { -"@Graph" -" objects {" -" @CTR at {2.5 6.0} @Eq { y = x sup 2 }" -" @CTR at {4.5 7.0} @Eq { y = x sup 3 }" -" }" +graphs. @RawIndex { graphs (statistical) } +graphs.objects @SubIndex { @Code objects option } +objects.graph @Index { @Code "objects" option (graphs) } +@ID @OneRow @Code @Verbatim { +@Graph + objects { + @CTR at {2.5 6.0} @Eq { y = x sup 2 } + @CTR at {4.5 7.0} @Eq { y = x sup 3 } + } } where we have used the @Code "@Eq" symbol from Chapter {@NumberOf equations} -twice to place two equations onto the graph at the points {@Code "2.5 6.0"} +to place two equations onto the graph at the points {@Code "2.5 6.0"} and {@Code "4.5 7.0"} respectively. An example result appears in the next section. @PP @@ -28,8 +31,8 @@ right corner coincides with the point, and similarly for the other symbols. @PP Each of these symbols has a @Code "margin" option which enlarges the -object by adding a margin around it before placing it: -@ID @Code "@NW at {2.5 6.0} margin { 0.3 ft } @Eq { y = x sup 2 }" +object by adding a margin: +@ID @Code "@NW at {2.5 6.0} margin { 0.3f } @Eq { y = x sup 2 }" shows the default value, 0.3 times the current font size. As the margin is increased, the object moves further away from the point. @PP diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/gra_summ lout-3.27/doc/user/gra_summ --- lout-3.26/doc/user/gra_summ Wed Sep 18 12:22:38 2002 +++ lout-3.27/doc/user/gra_summ Fri Nov 22 09:29:01 2002 @@ -4,8 +4,10 @@ @Begin @PP The options to the @Code "@Graph" symbol, their default values, and +graphs. @RawIndex { graphs (statistical) } +graphs.summary @SubIndex { summary of all options } their possible values are: -@ID -2.1px @Break -1p @Font @Tab +@ID -2.5px @Break -1p @Font @Tab hmargin { 0.15c } @Fmta { @Col @Code { " "A } ! @Col @Code "{" ! @Col @Code B ! @Col @Code "}" ! @Col ! @Col ! @Col C } @@ -19,20 +21,20 @@ C { {@Code frame}, {@Code axes}, or {@Code none} } @Rowa A { width } - B { 6.0 cm } + B { 6.0c } C { any @I distance } @Rowa A { height } - B { 4.0 cm } + B { 4.0c } C { any @I distance } @Rowa A { xextra } - B { 0.5 cm } - C { any @I distance ({@Code axes} and {@Code none} default is {@Code "0 cm"}) } + B { 0.5c } + C { any @I distance ({@Code axes} and {@Code none} default is {@Code "0c"}) } @Rowa A { yextra } - B { 0.5 cm } - C { any @I distance ({@Code axes} and {@Code none} default is {@Code "0 cm"}) } + B { 0.5c } + C { any @I distance ({@Code axes} and {@Code none} default is {@Code "0c"}) } @Rowa A { xdecreasing } B { no } @@ -59,19 +61,19 @@ C { any Lout object } @Rowa A { leftgap } - B { 1.5 cm } + B { 1.5c } C { any @I distance } @Rowa A { rightgap } - B { 0.5 cm } + B { 0.5c } C { any @I distance } @Rowa A { abovegap } - B { 0.5 cm } + B { 0.5c } C { any @I distance } @Rowa A { belowgap } - B { 0.5 cm } + B { 0.5c } C { any @I distance } @Rowa A { hidecaptions } @@ -138,15 +140,15 @@ automatic } @Rowa A { xticklength } - B { 0.5 ft } + B { 0.5f } C { any @I distance } @Rowa A { yticklength } - B { 0.5 ft } + B { 0.5f } C { any @I distance } @Rowa A { rticklength } - B { 0.5 ft } + B { 0.5f } C { any @I distance } @Rowa A { objects } @@ -174,53 +176,30 @@ B { no } C { {@Code no} or {@Code yes} } @Rowa + A { texture } + B { solid } + C { any texture from Section {@NumberOf textures} } +@Rowa A { dataformat } B { xandy } C { {@Code xandy}, {@Code yonly}, {@Code xonly}, {@Code swapxandy} } @Rowa A { dashlength } - B { 0.2 ft } + B { 0.2f } C { any @I distance } @Rowa A { linewidth } - B { 0.5 pt } + B { 0.5p } C { any @I distance } @Rowa A { symbolsize } - B { 0.15 ft } + B { 0.15f } C { any @I distance } } @I Number means an ordinary decimal number; @I distance means a number -followed by at least one space followed by any one of the following -units of measurement: -@ID @Tab - vmargin { 0.5vx } - @Fmta { @Col @Code A ! @Col B } -{ -@Rowa - A { cm } - B { centimetres } -@Rowa - A { in } - B { inches } -@Rowa - A { em } - B { Ems (12 ems = 1 inch) } -@Rowa - A { pt } - B { Points (72 points = 1 inch) } -@Rowa - A { ft } - B { @Code "1 ft" is the size of the current font } -@Rowa - A { sp } - B { @Code "1 sp" is the width of the space character in the current font } -@Rowa - A { vs } - B { @Code "1 vs" is the current inter-line spacing } -} -In general, numbers denote x or y values while distances denote lengths -on the printed result. +with a unit of measurement (Section {@NumberOf objects}), such as +@Code { 5c } or {@Code 0.5f}. In general, numbers denote x or y +values while distances denote lengths on the printed result. @PP The minimum plottable x value is the minimum of all the x data, {@Code xticks}, {@Code xorigin}, {@Code xmin}, and {@Code xmax} whenever @@ -248,7 +227,7 @@ } where @I object is an arbitrary Lout object. Each of these nine symbols also has a @Code "margin" option whose value may be any non-negative -distance, with default value {@Code "0.3 ft"}. +distance, with default value {@Code "0.3f"}. @PP The options to the @Code "@Data" symbol, their default values, and their possible values are: @@ -277,6 +256,9 @@ @Rowa A { paint } C { {@Code no} or {@Code yes} } +@Rowa + A { texture } + C { Any texture from Section {@NumberOf textures} } @Rowa A { dataformat } C { {@Code xandy}, {@Code yonly}, {@Code xonly} } diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/gra_tick lout-3.27/doc/user/gra_tick --- lout-3.26/doc/user/gra_tick Wed Sep 18 12:22:38 2002 +++ lout-3.27/doc/user/gra_tick Thu Nov 21 16:30:42 2002 @@ -4,8 +4,13 @@ @Begin @PP @I Ticks are the short lines that mark off intervals along the axes, and +graphs. @RawIndex { graphs (statistical) } +graphs.ticks @SubIndex { ticks } ticks.graph @Index { ticks in graphs } -labels.graph @Index { labels in graphs } +graphs. @RawIndex { graphs (statistical) } +graphs.labels @SubIndex { labels } +labels. @RawIndex { labels } +labels.in.graphs @SubIndex { in graphs } @I labels are the numbers appearing near the ticks (not to be confused with captions). {@Code "@Graph"} produces ticks and labels automatically with some care, so it is probably best not to worry about them unless the @@ -13,6 +18,15 @@ @PP One simple way to control the production of x ticks is with the {@Code xmin}, {@Code xmax}, and {@Code xticksep} options to @Code +graphs. @RawIndex { graphs (statistical) } +graphs.xmin @SubIndex { @Code xmin option } +xmin.graph @Index { @Code "xmin" option (graphs) } +graphs. @RawIndex { graphs (statistical) } +graphs.xmax @SubIndex { @Code xmax option } +xmax.graph @Index { @Code "xmax" option (graphs) } +graphs. @RawIndex { graphs (statistical) } +graphs.xticksep @SubIndex { @Code xticksep option } +xticksep.graph @Index { @Code "xticksep" option (graphs) } "@Graph". For example, @ID @OneRow @Code { "@Graph" @@ -27,7 +41,9 @@ @PP Alternatively, complete control over the appearance of x ticks and labels is provided by the @Code "xticks" option. For example, -xticks.graph @Index { @Code "xticks" option to @Code "@Graph" } +graphs. @RawIndex { graphs (statistical) } +graphs.xticks @SubIndex { @Code xticks option } +xticks.graph @Index { @Code "xticks" option (graphs) } @ID @OneRow @Code { "@Graph" " xticks { 0@ 5 10@ 15 20@ }" @@ -60,7 +76,7 @@ exponents when the axis is logarithmic, so @Code xticks is hardly necessary in this example. Anyway the result is @CD @Graph - height { 3 cm } + height { 3c } xlog { 10 } xticks { 1 (1) 10 (10) 100 (10^2) 1000 (10^3) 10000 (10^4) 100000 (10^5) } { @@ -74,17 +90,37 @@ @PP Similar options control ticks and labels on the y axis: {@Code "ymin"}, {@Code "ymax"}, {@Code "yticksep"}, and {@Code "yticks"}. There are -yticks.graph @Index { @Code "yticks" option to @Code "@Graph" } +graphs. @RawIndex { graphs (statistical) } +graphs.ymin @SubIndex { @Code ymin option } +ymin.graph @Index { @Code "ymin" option (graphs) } +graphs. @RawIndex { graphs (statistical) } +graphs.ymax @SubIndex { @Code ymax option } +ymax.graph @Index { @Code "ymax" option (graphs) } +graphs. @RawIndex { graphs (statistical) } +graphs.yticksep @SubIndex { @Code yticksep option } +yticksep.graph @Index { @Code "yticksep" option (graphs) } +graphs. @RawIndex { graphs (statistical) } +graphs.yticks @SubIndex { @Code yticks option } +yticks.graph @Index { @Code "yticks" option (graphs) } also @Code "xticklength" and @Code "yticklength" options which set the length of ticks: +graphs. @RawIndex { graphs (statistical) } +graphs.xticklength @SubIndex { @Code xticklength option } +xticklength.graph @Index { @Code "xticklength" option (graphs) } +graphs. @RawIndex { graphs (statistical) } +graphs.yticklength @SubIndex { @Code yticklength option } +yticklength.graph @Index { @Code "yticklength" option (graphs) } @ID @OneRow @Code { "@Graph" -" xticklength { 0.5 ft }" -" yticklength { 0.5 ft }" +" xticklength { 0.5f }" +" yticklength { 0.5f }" } shows the default values, half the current font size in both cases. @PP There is also an {@Code "rticks"} option which is similar to +graphs. @RawIndex { graphs (statistical) } +graphs.rticks @SubIndex { @Code rticks option } +rticks.graph @Index { @Code "rticks" option (graphs) } {@Code "yticks"} except that the ticks it controls appear on the right-hand side of the frame (this option is relevant only when the @Code style option is {@Code frame}). Unlike @Code "xticks" and @@ -98,9 +134,9 @@ @Graph style { frame } width { 6c } - height { 8c } - xextra { 0 cm } - yextra { 0 cm } + height { 6c } + xextra { 0c } + yextra { 0c } rightcaption { -90d @Rotate { Precipitation mm } } rightgap { 3.0f } hidecaptions { no } @@ -109,28 +145,28 @@ ymin { 0 } ymax { 450 } xticks { } - xticklength { 0 cm } + xticklength { 0c } rticks { 0@ 50@ 100@ 150@ 200@ 250@ 300@ 350@ 400@ 450@ } yticks {} { @Data - pairs { filledyhisto } - colour { blue } - linewidth { 1 pt } + pairs { filledyhisto } + colour { blue } + linewidth { 1 pt } { - 0 340 - 1 410 - 2 430 - 3 340 - 4 290 - 5 175 - 6 140 - 7 125 - 8 110 - 9 100 - 10 85 - 11 175 - 12 0 + 0 340 + 1 410 + 2 430 + 3 340 + 4 290 + 5 175 + 6 140 + 7 125 + 8 110 + 9 100 + 10 85 + 11 175 + 12 0 } } @@ -139,9 +175,9 @@ @Graph style { frame } width { 6c } - height { 8c } - xextra { 0 cm } - yextra { 0 cm } + height { 6c } + xextra { 0c } + yextra { 0c } leftcaption { 90d @Rotate { Temperature {@Degree}C } } leftgap { 2.5f } hidecaptions { no } @@ -163,13 +199,13 @@ 10.5 (N) 11.5 (D) } - xticklength { 0 cm } + xticklength { 0c } yticks { -30@ -20@ -10@ 0@ 10@ 20@ 30@ 40@ } { @Data - pairs { solid } - colour { red } - linewidth { 1 pt } + pairs { solid } + colour { red } + linewidth { 1 pt } { 0.0 24 1.0 24 @@ -193,8 +229,63 @@ "rticks { 0@ 50@ 100@ 150@ 200@ 250@ 300@ 350@ 400@ 450@ }" "yticks {}" } -for its ticks. -@PP +for its ticks. This graph uses other features that we have not +come to yet, but anyway its source is: +@ID 0.95 @Scale -1px @Break @OneRow @Code @Verbatim { +@Graph + style { frame } + width { 6c } + height { 6c } + xextra { 0c } + yextra { 0c } + rightcaption { -90d @Rotate { Precipitation mm } } + rightgap { 3.0f } + hidecaptions { no } + xmin { 0 } + xmax { 12 } + ymin { 0 } + ymax { 450 } + xticks { } + xticklength { 0c } + rticks { 0@ 50@ 100@ 150@ 200@ 250@ 300@ 350@ 400@ 450@ } + yticks {} +{ + @Data pairs { filledyhisto } colour { blue } linewidth { 1 pt } + { + 0 340 1 410 2 430 3 340 4 290 5 175 6 140 + 7 125 8 110 9 100 10 85 11 175 12 0 + } +} + +@OverStrike + +@Graph + style { frame } + width { 6c } + height { 6c } + xextra { 0c } + yextra { 0c } + leftcaption { 90d @Rotate { Temperature {@Degree}C } } + leftgap { 2.5f } + hidecaptions { no } + xmin { 0 } + xmax { 12 } + ymin { -30 } + ymax { 50 } + xticks { + 0.5 (J) 1.5 (F) 2.5 (M) 3.5 (A) 4.5 (M) 5.5 (J) + 6.5 (J) 7.5 (A) 8.5 (S) 9.5 (O) 10.5 (N) 11.5 (D) + } + xticklength { 0c } + yticks { -30@ -20@ -10@ 0@ 10@ 20@ 30@ 40@ } +{ + @Data pairs { solid } colour { red } linewidth { 1 pt } + { + 0.0 24 1.0 24 2.0 25 3.0 26 4.0 26 5.0 26 6.0 + 26 7.0 27 8.0 26 9.0 27 10.0 28 11.0 28 12.0 26 + } +} +} Lout has only a hazy idea of how much space is occupied by ticks and labels. Unless @Code "xticks" is empty, Lout allows 1.7 times the current font size below the graph for x ticks and labels, which is diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/mydefs lout-3.27/doc/user/mydefs --- lout-3.26/doc/user/mydefs Wed Sep 18 12:22:38 2002 +++ lout-3.27/doc/user/mydefs Tue Nov 19 15:26:58 2002 @@ -145,31 +145,12 @@ } } - def @ShowHMark - named linewidth { 0.015 cm } - named linestyle { dashed } - named dashlength { 0.15 cm } - named paint { light } - right x + def @ShowHMark right x { - @Fig { - @Figure - shape { - @BackEnd @Case { - PostScript @Yield { - -0.3 cm ymark - {xsize ymark} ++ {0.3 cm 0} - } - PDF @Yield { "" # VT: PDF currently has no output - } - } - } - linewidth { linewidth } - linestyle { linestyle } - dashlength { dashlength } - x - } + "-0.3 cm ymark moveto xsize 0.3 cm add ymark lineto" + "[ 0.1 cm ] 0 setdash stroke" + } @Graphic x } def @ZeroWidth right x { @OneCol { |0io x |0io } } @@ -211,4 +192,30 @@ 2.7c @Wide @StartUp x ||0.3c 2.7c @Wide @StartLeft x ||0.3c 2.2c @Wide @StartDown x + } + + import @BasicSetup + def @TextureSample right x + { + @Box margin { 0i } + x @Texture @Box margin { 2.0f } paint { black } {} + } + + import @BasicSetup + def @XRGBTest right col + { + def @Thing { + @HContract @VContract { 0.9c @Wide 0.5f @High ^/ 0.5f @High } + } + + @HContract { + @Box paint { @Xrgb col } margin { 0i } @Thing + &0.2c + 2.8c @Wide downifneeded @Scale @Code col + } + } + + def @XRGBNoTest + { + @HContract { 0.9c @Wide &0.2c 2.8c @Wide {} } } diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/pie lout-3.27/doc/user/pie --- lout-3.26/doc/user/pie Thu Jan 1 10:00:00 1970 +++ lout-3.27/doc/user/pie Wed Oct 23 08:03:19 2002 @@ -0,0 +1,53 @@ +@Chapter + @Title { Pie Graphs } + @Tag { pie } +@Begin +@LP +This chapter describes how to draw pie graphs, using the @Code "@Pie" +piegraphs. @Index { pie graphs } +pie. @Index { @Code "@Pie" symbol } +symbol. For example, +@ID @OneRow -1px @Break @Code @Verbatim { +@Pie +{ + @Slice + weight { 20 } + label { Admin (20%) } + @Slice + weight { 40 } + paint { green } + label { Research (40%) } + @Slice + weight { 40 } + paint { lightred } + label { Teaching (40%) } +} +} +produces the pie graph +@CD @Pie +{ + @Slice + weight { 20 } + label { Admin (20%) } + @Slice + weight { 40 } + paint { green } + label { Research (40%) } + @Slice + weight { 40 } + paint { lightred } + label { Teaching (40%) } +} +This example shows off most of what @Code "@Pie" can do. +# there are many options, but for the most part they offer +# detailed adjustments, not additional features. +@BeginSections +@Include { pie_intr } +@Include { pie_slic } +@Include { pie_over } +@Include { pie_capt } +@Include { pie_labe } +@Include { pie_erro } +@Include { pie_summ } +@EndSections +@End @Chapter diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/pie_capt lout-3.27/doc/user/pie_capt --- lout-3.26/doc/user/pie_capt Thu Jan 1 10:00:00 1970 +++ lout-3.27/doc/user/pie_capt Thu Nov 21 21:17:09 2002 @@ -0,0 +1,111 @@ +@Section + @Title { Captions } + @Tag { pie_capt } +@Begin +@PP +There are options for placing captions left, right, above, and below +captions. @RawIndex { captions } +captions.pie @SubIndex { in pie graphs } +piegraphs. @RawIndex { pie graphs } +piegraphs.captions @SubIndex { captions } +leftcaption. @RawIndex { @Code "leftcaption" option } +leftcaption.pie @SubIndex { in pie graphs } +piegraphs. @RawIndex { pie graphs } +piegraphs.leftcaption @SubIndex { @Code "leftcaption" option } +rightcaption. @RawIndex { @Code "rightcaption" option } +rightcaption.pie @SubIndex { in pie graphs } +piegraphs. @RawIndex { pie graphs } +piegraphs.rightcaption @SubIndex { @Code "rightcaption" option } +abovecaption. @RawIndex { @Code "abovecaption" option } +abovecaption.pie @SubIndex { in pie graphs } +piegraphs. @RawIndex { pie graphs } +piegraphs.abovecaption @SubIndex { @Code "abovecaption" option } +belowcaption. @RawIndex { @Code "belowcaption" option } +belowcaption.pie @SubIndex { in pie graphs } +piegraphs. @RawIndex { pie graphs } +piegraphs.belowcaption @SubIndex { @Code "belowcaption" option } +the pie graph, following the pattern of the captions in {@Code "@Graph"}: +@ID @OneRow @Code @Verbatim { +@Pie + leftcaption { At left } + rightcaption { At right } + abovecaption { This appears above } + belowcaption { This appears below } +} +produces +@CD @Pie + leftcaption { At left } + rightcaption { At right } + abovecaption { This appears above } + belowcaption { This appears below } +{ + @Slice + weight { 20 } + label { Admin (20%) } + @Slice + weight { 40 } + paint { green } + label { Research (40%) } + @Slice + weight { 40 } + paint { lightred } + label { Teaching (40%) } +} +The captions may be arbitrary Lout objects, so may include +equations, {@Code "@Rotate"}, and so on. Each caption except +@Code rightcaption is printed in the +@Code "clines @Break" style, which means that multiple lines in one +caption will be centred beneath each other. The @Code rightcaption +option uses the @Code "lines @Break" style, in which the lines are +left justified beneath each other. +@PP +There are options for controlling the amount of space between each +caption and the pie graph. Here they are with their default values: +leftgap. @RawIndex { @Code "leftgap" option } +leftgap.pie @SubIndex { in pie graphs } +piegraphs. @RawIndex { pie graphs } +piegraphs.leftgap @SubIndex { @Code "leftgap" option } +rightgap. @RawIndex { @Code "rightgap" option } +rightgap.pie @SubIndex { in pie graphs } +piegraphs. @RawIndex { pie graphs } +piegraphs.rightgap @SubIndex { @Code "rightgap" option } +abovegap. @RawIndex { @Code "abovegap" option } +abovegap.pie @SubIndex { in pie graphs } +piegraphs. @RawIndex { pie graphs } +piegraphs.abovegap @SubIndex { @Code "abovegap" option } +belowgap. @RawIndex { @Code "belowgap" option } +belowgap.pie @SubIndex { in pie graphs } +piegraphs. @RawIndex { pie graphs } +piegraphs.belowgap @SubIndex { @Code "belowgap" option } +@ID @OneRow @Code @Verbatim { +@Pie + leftgap { 0.5c } + rightgap { 0.5c } + abovegap { 0.5c } + belowgap { 0.5c } +} +These gaps are inserted only if the corresponding caption is +non-empty. Lout knows exactly where captions are, and leaves +space for them and their gaps, so it would be wrong to attempt +to use the {@Code leftextra}, {@Code rightextra}, {@Code aboveextra}, +and {@Code belowextra} options from Section {@NumberOf pie_over} to +allow for the space occupied by captions. +@PP +When a pie graph is to be presented as a centred display, it is usually +best if the centring is done with respect to the pie alone, not the +captions and labels. The @Code "hidecaptions" option does this by +hidecaptions. @RawIndex { @Code "hidecaptions" option } +hidecaptions.in.pie @SubIndex { in pie graphs } +piegraphs. @RawIndex { pie graphs } +piegraphs.hidecaptions @SubIndex { @Code "hidecaptions" option } +making the left and right captions and gaps seem to Lout to have zero +width: +@ID @OneRow @Code @Verbatim { +@Pie + hidecaptions { yes } +} +Actually @Code "yes" has been made the default value, since the vast +majority of pie graphs are centred displays. In the rare cases where +this feature is not wanted (for example, if a pie graph appears as an entry +in a table), use {@Code "hidecaptions { no }"}. +@End @Section diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/pie_erro lout-3.27/doc/user/pie_erro --- lout-3.26/doc/user/pie_erro Thu Jan 1 10:00:00 1970 +++ lout-3.27/doc/user/pie_erro Thu Nov 21 21:41:34 2002 @@ -0,0 +1,35 @@ +@Section + @Title { Errors } + @Tag { pie_erro } +@Begin +@PP +Lout normally produces output that will print without mishap on +errors. @RawIndex { errors } +errors.pie @SubIndex { in pie graphs } +piegraphs. @RawIndex { pie graphs } +piegraphs.errors @SubIndex { errors } +any PostScript device. However, some of the options of @Code "@Pie" +and @Code "@Slice" are passed through Lout without checking. Any +errors in this material will not be detected until the file is printed. +@PP +When an error is detected, the offending page is printed up to the +point where the error occurred, with a message nearby describing +the error. Printing of the document is then aborted. The problem +is usually easy to locate since it lies in whatever should have +been printed next. +@PP +Like {@Code "@Diag"} and {@Code "@Graph"}, @Code "@Pie" has a +@Code "save" option which causes the memory used by the pie graph +save. @RawIndex { @Code "save" option } +save.in.pie @SubIndex { in pie graphs } +piegraphs. @RawIndex { pie graphs } +piegraphs.save @SubIndex { @Code "save" option } +to be reclaimed as soon as it is printed: +@ID @OneRow @Code @Verbatim { +@Pie + save { yes } +... +} +However @Code "@Pie" uses very little memory and so this option is +probably not going to be needed. +@End @Section diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/pie_intr lout-3.27/doc/user/pie_intr --- lout-3.26/doc/user/pie_intr Thu Jan 1 10:00:00 1970 +++ lout-3.27/doc/user/pie_intr Fri Nov 1 18:02:44 2002 @@ -0,0 +1,65 @@ +@Section + @Title { Introduction } + @Tag { pie_intr } +@Begin +@PP +The Lout definitions for pie graph formatting are kept in a file called +{@Code "pie"}, which you must include at the start of your document if +pie.file @Index { @Code "pie" setup file } +you want pie graphs, like this: +@ID -1px @Break @OneRow @Code { +"@SysInclude { pie }" +"@SysInclude { doc }" +"@Doc @Text @Begin" +"..." +"@End @Text" +} +Setup files for specialized packages, such as {@Code "pie"}, should be +included before the main setup file. Once this is done, the @Code "@Pie" +symbol used below will then be available for use anywhere within your +document. As usual in Lout, the @Code "@Pie" symbol produces an object +which may appear anywhere at all -- in a centred display, for example, +or in a figure, or as an entry in a table. +@PP +A pie graph is made by a @Code "@Pie" symbol enclosing a sequence of +@Code "@Slice" symbols. These @Code "@Slice" symbols and their options +are the only things that may appear inside the @Code "@Pie" symbol. +@PP +Every option of @Code "@Slice" is also an option of {@Code "@Pie"}. +Giving a value to such an option at @Code "@Pie" will make that +the default value for very {@Code "@Slice"}. For example, +you can write +@ID -1px @Break @OneRow @Code @Verbatim { +@Pie + weight { 20 } +{ + ... +} +} +to give every slice a weight (angular extent) of 20. If all but a +few slices have the same weight, you can still do this, just giving +a @Code weight option to the exceptional slices. +@PP +Furthermore, every option of @Code "@Pie" appears in the setup +file, and giving a value to an option there makes that value the +default value for every @Code "@Pie" in your document. For example, +if you want every slice of every pie to be light red, you can set +the @Code paint option in the setup file to {@Code lightred}, +and all your slices will be painted this colour unless you +override the setup file value by giving @Code paint options to +some pies or slices. +@PP +See Section @NumberOf setup to find out how to make your own copy +of the setup file, perhaps calling it {@Code mypie}, and change +some options within it. Your document would then typically +start like this: +@ID -1px @Break @OneRow @Code { +"@Include { mypie }" +"@SysInclude { doc }" +"@Doc @Text @Begin" +"..." +"@End @Text" +} +and by changing options within file @Code "mypie" you can +affect every pie graph in your document. +@End @Section diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/pie_labe lout-3.27/doc/user/pie_labe --- lout-3.26/doc/user/pie_labe Thu Jan 1 10:00:00 1970 +++ lout-3.27/doc/user/pie_labe Thu Nov 21 21:15:34 2002 @@ -0,0 +1,382 @@ +@Section + @Title { Labels } + @Tag { pie_labe } +@Begin +@PP +labels. @RawIndex { labels } +labels.in.pie @SubIndex { in pie graphs } +piegraphs. @RawIndex { pie graphs } +piegraphs.labels @SubIndex { labels } +Labels are short messages printed inside the slices, +identifying them. We've already seen the @Code label +option, in which we place the label, which can be an +arbitrary Lout object. In this section we'll show how +to change the format and position of these labels. +@PP +For changing the format of a label there are four options: +@ID -1px @Break @OneRow @Code @Verbatim { +@Slice + labelfont { -2p } + labelbreak { clines } + labelmargin { 0.2f } + labelformat { @Body } +} +This shows the default values of these options. +@PP +The @Code labelfont option determines the font in which the +labelfont. @RawIndex { @Code "labelfont" options } +labelfont.in.pie @SubIndex { in pie graphs } +piegraphs. @RawIndex { pie graphs } +piegraphs.labelfont @SubIndex { @Code "labelfont" option } +label will be printed. The default value shown above calls +for the current font to be used, two points smaller than it +otherwise would have been. Any value acceptable to the +@Code "@Font" symbol from Section {@NumberOf fonts} is +acceptable here, including changing the family and face. +@PP +The @Code labelbreak option determines how paragraph breaking +labelbreak. @RawIndex { @Code "labelbreak" options } +labelbreak.in.pie @SubIndex { in pie graphs } +piegraphs. @RawIndex { pie graphs } +piegraphs.labelbreak @SubIndex { @Code "labelbreak" option } +within the label will be carried out. Any value acceptable to +the @Code "@Break" symbol from Section {@NumberOf paras} is +acceptable here. The default value shown above causes each +line of the label to be one line of the result, with each +line centred with respect to the longest line. +@PP +The @Code labelmargin option places a margin around the +labelmargin. @RawIndex { @Code "labelmargin" options } +labelmargin.in.pie @SubIndex { in pie graphs } +piegraphs. @RawIndex { pie graphs } +piegraphs.labelmargin @SubIndex { @Code "labelmargin" option } +label. The default value shown makes a margin of width +0.2 times the current font size. This margin has no effect +on the appearance or position of the label (in particular, +it is drawn outside @Code "labelformat" below, not inside). +It is only needed for adjusting the appearance of fingers, +as described as the end of this section. +@PP +The @Code labelformat option allows more radical changes +labelformat. @RawIndex { @Code "labelformat" options } +labelformat.in.pie @SubIndex { in pie graphs } +piegraphs. @RawIndex { pie graphs } +piegraphs.labelformat @SubIndex { @Code "labelformat" option } +to the label format. Its value may be an arbitrary +object. Within it, the symbol @Code "@Body" stands for +the value of the @Code "label" option: +@ID -1px @Break @OneRow @Code @Verbatim { +@Slice + labelformat { @ShadowBox @Body } +} +will cause the text of the label to appear within a +shadow box. Of course, we could get this effect by +placing these symbols in the label itself, like this: +@ID -1px @Break @OneRow @Code @Verbatim { +@Slice + label { @ShadowBox { Admin (20%) } } +} +However, like all @Code "@Slice" options, @Code labelformat +may be given to @Code "@Pie" as well, like this: +@ID -1px @Break @OneRow @Code @Verbatim { +@Pie + labelformat { @ShadowBox @Body } +} +and there it affects every label in the pie graph: +@CD @Pie + labelformat { @ShadowBox @Body } +{ + @Slice + weight { 20 } + label { Admin (20%) } + @Slice + weight { 40 } + label { Research (40%) } + @Slice + weight { 40 } + label { Teaching (40%) } +} +When the labels all have the same format, this is much faster +and less error-prone than formatting each label independently, +especially when experimenting with different formats. +@PP +Two options are available for changing the positions of +labels: +@ID -1px @Break @OneRow @Code @Verbatim { +@Slice + labelradius { internal } + labeladjust { 0c 0c } +} +Each label occupies a rectangular area, and these options +determine the position of the centre of the rectangle. +@PP +The @Code labelradius option determines how far the +labelradius.pie @Index { @Code "labelradius" option (pie graphs) } +piegraphs. @RawIndex { pie graphs } +piegraphs.labelradius @SubIndex { @Code "labelradius" option } +centre of the label is from the point of the slice +(usually the same as the centre of the pie graph, +but not when the slice is detached). The default value +of {@Code labelradius} shown above, {@Code internal}, +is a synonym for 0.6, so it causes the centre of the label +to appear 60% of the way from the point of the slice to +its outside boundary. The angular position of the label +centre will be halfway around the arc of the slice. No +attempt is made to fit the label into the interior of +the slice; it lands where these rules say irrespective +of what might be overstruck when it does. It is printed +after its slice's outline and paint, so it can't be +hidden by them; but if it strays into the next slice it +will be buried under any paint in that slice. +@PP +For fine adjustments, the @Code labeladjust option +labeladjust. @RawIndex { @Code "labeladjust" options } +labeladjust.in.pie @SubIndex { in pie graphs } +piegraphs. @RawIndex { pie graphs } +piegraphs.labeladjust @SubIndex { @Code "labeladjust" option } +may be used to move the label centre any distance in +the x and y directions. For example, +@ID -1px @Break @OneRow @Code @Verbatim { +@Slice + labeladjust { 0.2c -0.1c } +} +will move the label centre 0.2 centimetres further to +the right and 0.1 centimetres down from where it would +otherwise have appeared. +@PP +The recommended procedure for getting internal labels +to look good is to first try them without any adjustment. +Next, consider rearranging the label layout. Our running +example has poorly positioned labels, but they can be +improved just by breaking each label over two lines: +@CD @Pie + # abovecaption { Ideal breakdown of academic workload } + aboveextra { 1f } +{ + @Slice + detach { yes } + weight { 20 } + label { Admin @LLP (20%) } + @Slice + weight { 40 } + paint { green } + label { Research @LLP (40%) } + @Slice + weight { 40 } + paint { lightred } + label { Teaching @LLP (40%) } +} +Finally, the @Code labeladjust option is there as a last resort. +@PP +To get a label outside its slice, use +externallabels.pie @Index { external labels in pie graphs } +piegraphs. @RawIndex { pie graphs } +piegraphs.externallabels @SubIndex { external labels } +@ID -1px @Break @OneRow @Code @Verbatim { +@Slice + labelradius { external } +} +Again, @Code external is just a synonym for the number +1.4, meaning that the label centre is to be placed 140% +of the pie chart's radius away from the point of the +slice. It can be replaced by any number. +@PP +Two issues arise when labels are placed externally. +The first issue is that Lout does not know where these labels +are being printed and so cannot leave space for them. +Section {@NumberOf pie_over} has already explained how to +handle this problem using the {@Code leftextra}, +{@Code rightextra}, {@Code aboveextra}, and {@Code belowextra} +options of {@Code "@Pie"}. Our running example, converted +to external labels, might be entered like this: +@ID -1px @Break @OneRow @Code @Verbatim { +@Pie + abovecaption { Ideal breakdown of academic workload } + labelradius { external } + aboveextra { 0.7c } + belowextra { 1.3c } +{ + @Slice + detach { yes } + weight { 20 } + label { Admin @LLP (20%) } + @Slice + weight { 40 } + paint { green } + label { Research @LLP (40%) } + @Slice + weight { 40 } + paint { lightred } + label { Teaching @LLP (40%) } +} +} +which produces this: +@CD @Pie + abovecaption { Ideal breakdown of academic workload } + labelradius { external } + aboveextra { 0.7c } + belowextra { 1.3c } +{ + @Slice + detach { yes } + weight { 20 } + label { Admin @LLP (20%) } + @Slice + weight { 40 } + paint { green } + label { Research @LLP (40%) } + @Slice + weight { 40 } + paint { lightred } + label { Teaching @LLP (40%) } +} +The amount of extra space to add has to be worked out by +experiment. It can help to temporarily remove all +captions and enclose the @Code "@Pie" symbol in a box +with zero margin: +@ID -1px @Break @Code @Verbatim { @Box margin { 0i } @Pie ... } +to show clearly how much space the @Code extra options +are covering. +@PP +The second issue raised by external labels is how to +visually connect each label with its slice, when this +fingers.pie @Index { fingers in pie graphs } +piegraphs. @RawIndex { pie graphs } +piegraphs.fingers @SubIndex { fingers } +seems necessary. @Code "@Pie" can do this with short +line segments that we will call {@I fingers}: +@CD @Pie + abovecaption { Ideal breakdown of academic workload } + labelradius { external } + aboveextra { 1.3f } + belowextra { 3f } + finger { yes } +{ + @Slice + detach { yes } + weight { 20 } + label { Admin @LLP (20%) } + @Slice + weight { 40 } + paint { green } + label { Research @LLP (40%) } + @Slice + weight { 40 } + paint { lightred } + label { Teaching @LLP (40%) } +} +These were made by adding @Code "finger { yes }" as +another option to the @Code "@Pie" symbol. +@PP +Each slice has several options which control the +appearance of its own finger. Here is the full set, +showing their default values: +@ID -1px @Break @OneRow @Code @Verbatim { +@Slice + finger { no } + fingerstyle { solid } + fingerdashlength { 0.2f } + fingerwidth { thin } + fingerradius { 0.7 } + fingeradjust { 0c 0c } +} +The @Code "finger" option may be @Code "no" or @Code "yes" +finger.pie @Index { @Code "finger" option (pie graphs) } +piegraphs. @RawIndex { pie graphs } +piegraphs.finger @SubIndex { @Code "finger" option } +and determines whether a finger will be drawn or not. +@PP +The {@Code fingerstyle}, {@Code fingerdashlength}, and +{@Code fingerwidth} options are exactly analogous to +fingerstyle.pie @Index { @Code "fingerstyle" option (pie graphs) } +piegraphs. @RawIndex { pie graphs } +piegraphs.fingerstyle @SubIndex { @Code "fingerstyle" option } +fingerdashlength.pie @Index { @Code "fingerdashlength" option (pie graphs) } +piegraphs. @RawIndex { pie graphs } +piegraphs.fingerdashlength @SubIndex { @Code "fingerdashlength" option } +fingerwidth.pie @Index { @Code "fingerwidth" option (pie graphs) } +piegraphs. @RawIndex { pie graphs } +piegraphs.fingerwidth @SubIndex { @Code "fingerwidth" option } +the {@Code outlinestyle}, {@Code outlinedashlength}, and +{@Code outlinewidth} options. They take the same range +of values, and determine the style of the line segment +drawn to make the finger (solid, dashed, etc.). +@PP +The {@Code fingerradius} and {@Code fingeradjust} options +are exactly analogous to the {@Code labelradius} and +{@Code labeladjust} options, except that instead of +determining the position of the centre of the label they +determine the position of the inner endpoint of the +finger. The default values place it 70% of the way +from the point of the slice to its outer edge. The +@I outer endpoint of the finger always terminates on +the bounding box of the label, with the line pointing +through the centre of the label, and this cannot be +changed, although the @Code labelmargin option +(see the start of this section) may be used to decrease +or increase the margin around the label, thus causing +the finger to terminate closer to the label or further away. +@PP +Fingers may have arrowheads on their inner ends: +@ID @OneRow @Code @Verbatim { +@Pie + labelradius { 1.6 } + aboveextra { 2f } + belowextra { 4f } + finger { yes } + fingerarrow { yes } + fingerradius { 1 } +{ + @Slice + detach { yes } + weight { 20 } + label { Admin @LLP (20%) } + @Slice + weight { 40 } + paint { green } + label { Research @LLP (40%) } + @Slice + weight { 40 } + paint { lightred } + label { Teaching @LLP (40%) } +} +} +produces +@CD @Pie + labelradius { 1.6 } + aboveextra { 2f } + belowextra { 4f } + finger { yes } + fingerarrow { yes } + fingerradius { 1 } +{ + @Slice + detach { yes } + weight { 20 } + label { Admin @LLP (20%) } + @Slice + weight { 40 } + paint { green } + label { Research @LLP (40%) } + @Slice + weight { 40 } + paint { lightred } + label { Teaching @LLP (40%) } +} +The point of the arrowhead coincides with the inner +endpoint of the finger, so @Code "fingerradius" would +usually be set to @Code 1 when arrowheads are used. +@PP +Although @Code "@Pie" does not offer the elegant selection +of arrowhead styles of {@Code "@Diag"}, it is possible +to change the length and width of the arrowheads +with these options: +@ID @OneRow @Code @Verbatim { +@Slice + fingerarrowlength { 0.6f } + fingerarrowwidth { 0.45f } +} +This example shows the default values of these options. +These options may of course be given to @Code "@Pie" and +also in the setup file as usual. +@End @Section diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/pie_over lout-3.27/doc/user/pie_over --- lout-3.26/doc/user/pie_over Thu Jan 1 10:00:00 1970 +++ lout-3.27/doc/user/pie_over Thu Nov 21 21:22:19 2002 @@ -0,0 +1,117 @@ +@Section + @Title { Changing the overall appearance of the pie graph } + @Tag { pie_over } +@Begin +@PP +We've already seen that all @Code "@Slice" options may be given +piegraphs. @RawIndex { pie graphs } +piegraphs.overall @SubIndex { overall appearance } +to @Code "@Pie" as well. In addition to those, @Code "@Pie" has +its own options that affect the overall appearance of the pie graph: +@ID -1px @Break @OneRow @Code @Verbatim { +@Pie + radius { 2.5c } + initialangle { 0d } + leftextra { 0c } + rightextra { 0c } + aboveextra { 0c } + belowextra { 0c } +} +This example shows these options with their default values. +@PP +The @Code radius option determines the radius of the pie +radius. @RawIndex { @Code "radius" option } +radius.pie @SubIndex { in pie graphs } +piegraphs. @RawIndex { pie graphs } +piegraphs.radius @SubIndex { @Code "radius" option } +graph. As shown, the default radius is 2.5 centimetres, giving a diameter +of 5 centimetres. +@PP +The @Code initialangle option determines the angle that the first +initialangle.pie @Index { @Code "initialangle" option (pie graphs) } +piegraphs. @RawIndex { pie graphs } +piegraphs.initialangle @SubIndex { @Code "initialangle" option } +slice begins at. Following mathematical convention, the default angle +@Code 0d is directly to the right of the centre of the pie graph, and +as the value of @Code initialangle is increased the initial angle moves +anticlockwise. The slices are placed in anticlockwise order immediately +adjacent to each other. If you need a gap between two slices, use a +slice with no outline, no paint, and no label. +@PP +Lout thinks that the whole pie graph occupies a square space +tightly fitting around the given radius, as we can verify by +drawing a box with zero margin around an example pie graph: +@CD @Box margin { 0i } @Pie +{ + @Slice + weight { 20 } + label { Admin (20%) } + @Slice + weight { 40 } + paint { green } + label { Research (40%) } + @Slice + weight { 40 } + paint { lightred } + label { Teaching (40%) } +} +Detached slices (Section {@NumberOf pie_slic}) and external +labels (Section {@NumberOf pie_labe}) can be printed outside +this square region without Lout's knowledge, and this is +likely to spoil the layout: +@CD @Box margin { 0i } @Pie +{ + @Slice + detach { yes } + weight { 20 } + label { Admin (20%) } + @Slice + weight { 40 } + paint { green } + label { Research (40%) } + @Slice + weight { 40 } + paint { lightred } + label { Teaching (40%) } +} +The {@Code leftextra}, {@Code rightextra}, {@Code aboveextra}, and +leftextra.pie @Index { @Code "leftextra" option (pie graphs) } +piegraphs. @RawIndex { pie graphs } +piegraphs.leftextra @SubIndex { @Code "leftextra" option } +rightextra.pie @Index { @Code "rightextra" option (pie graphs) } +piegraphs. @RawIndex { pie graphs } +piegraphs.rightextra @SubIndex { @Code "rightextra" option } +aboveextra.pie @Index { @Code "aboveextra" option (pie graphs) } +piegraphs. @RawIndex { pie graphs } +piegraphs.aboveextra @SubIndex { @Code "aboveextra" option } +belowextra.pie @Index { @Code "belowextra" option (pie graphs) } +piegraphs. @RawIndex { pie graphs } +piegraphs.belowextra @SubIndex { @Code "belowextra" option } +{@Code belowextra} options are used to tell Lout to leave extra +space to the left, right, above, and below, so as to correct these +problems: +@ID -1px @Break @OneRow @Code @Verbatim { +@Pie + aboveextra { 0.7c } +} +We have not added extra space at the right as well, since we prefer +to centre the pie graph horizontally without regard to detached +slices. The result occupies 0.7 cm extra at the top: +@CD @Box margin { 0i } @Pie aboveextra { 0.7c } +{ + @Slice + detach { yes } + weight { 20 } + label { Admin (20%) } + @Slice + weight { 40 } + paint { green } + label { Research (40%) } + @Slice + weight { 40 } + paint { lightred } + label { Teaching (40%) } +} +We'll see these options again when we come to external labels in +Section {@NumberOf pie_labe}. +@End @Section diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/pie_slic lout-3.27/doc/user/pie_slic --- lout-3.26/doc/user/pie_slic Thu Jan 1 10:00:00 1970 +++ lout-3.27/doc/user/pie_slic Thu Nov 21 21:57:06 2002 @@ -0,0 +1,203 @@ +@Section + @Title { Changing the appearance of slices } + @Tag { pie_slic } +@Begin +@PP +The @Code "@Slice" symbol has options for controlling the +slice. @Index { @Code "@Slice" symbol (pie graphs) } +piegraphs. @RawIndex { pie graphs } +piegraphs.slice @SubIndex { @Code "@Slice" symbol } +appearance of the slice it makes: +@ID -1px @Break @OneRow @Code @Verbatim { +@Slice + weight { 10 } + paint { none } + texture { solid } + outlinestyle { solid } + outlinedashlength { 0.2f } + outlinewidth { thin } + detach { no } +} +This example shows the default values of the options. +@PP +The @Code weight option is the weight (angular extent) of +weight.pie @Index { @Code "weight" option (pie graphs) } +piegraphs. @RawIndex { pie graphs } +piegraphs.weight @SubIndex { @Code "weight" option } +the slice. By default, the total weight of the complete +pie graph is 100, so a slice of weight 10, say, would occupy +10% of the pie area, or in other words an angular extent +of (10"/"100) @Multiply 360 degrees. You can change the +@I total weight by setting an option to the @Code "@Pie" symbol: +totalweight.pie @Index { @Code "totalweight" option (pie graphs) } +piegraphs. @RawIndex { pie graphs } +piegraphs.totalweight @SubIndex { @Code "totalweight" option } +@ID -1px @Break @OneRow @Code @Verbatim { +@Pie + totalweight { 360 } +} +The value 360 would be useful if you wanted your weights to +correspond with degrees. It would be good to get @Code "@Pie" +to add up all the weights of its constituent slices and use +that for the total weight, but problems behind the scenes +prevent this. As it is, if the total weight of all slices +is less than {@Code totalweight}, the leftover angular +extent will be blank; and if it exceeds {@Code totalweight}, +later slices will overstrike earlier ones. +@PP +The @Code paint option defines the colour of the interior +paint. @RawIndex { @Code "paint" option } +paint.in.pie @SubIndex { in pie graphs } +piegraphs. @RawIndex { pie graphs } +piegraphs.paint @SubIndex { @Code "paint" option } +of the slice. Any colour acceptable to the {@Code "@Colour"} +symbol (Section {@NumberOf colour}) is allowed, plus the +default value {@Code none}, meaning no paint. As always, +alongside the @Code "paint" option there is a @Code "texture" +texture.option. @RawIndex { @Code "texture" option } +texture.option.in.pie @SubIndex { in pie graphs } +piegraphs. @RawIndex { pie graphs } +piegraphs.texture @SubIndex { @Code "texture" option } +option: +@ID -1px @Break @OneRow @Code @Verbatim { +@Pie + paint { grey } +{ + @Slice + weight { 20 } + texture { striped } + label { Admin (20%) } + @Slice + weight { 40 } + texture { striped angle { 45d } } + label { Research (40%) } + @Slice + weight { 40 } + texture { striped angle { 90d } } + label { Teaching (40%) } +} +} +produces +@CD +@Pie + paint { grey } +{ + @Slice + weight { 20 } + texture { striped } + label { Admin (20%) } + @Slice + weight { 40 } + texture { striped angle { 45d } } + label { Research (40%) } + @Slice + weight { 40 } + texture { striped angle { 90d } } + label { Teaching (40%) } +} +Textures might work better in black and white prints. +@PP +The next three options affect the outline drawn around each +slice. The @Code outlinestyle option +outlinestyle. @RawIndex { @Code "outlinestyle" option } +outlinestyle.in.pie @SubIndex { in pie graphs } +piegraphs. @RawIndex { pie graphs } +piegraphs.outlinestyle @SubIndex { @Code "outlinestyle" option } +may be {@Code solid} (the default) which +draws a solid line, {@Code dashed} which draws a dashed +line, {@Code cdashed} which draws a dashed line with +half-size dashes at the ends (this often looks better +than {@Code dashed}), @Code "dotted" which draws a dotted line, +and @Code noline which draws no outline at all. The +@Code outlinedashlength option determines the dash length +outlinedashlength. @RawIndex { @Code "outlinedashlength" option } +outlinedashlength.in.pie @SubIndex { in pie graphs } +piegraphs. @RawIndex { pie graphs } +piegraphs.outlinedashlength @SubIndex { @Code "outlinedashlength" option } +if @Code outlinestyle is @Code dashed or {@Code cdashed}, and +the distance between dots if @Code outlinestyle is +{@Code dotted}. The length will be varied a little to ensure +that the dashes or dots fit evenly on each segment of the +outline. The @Code "outlinewidth" option determines the width +outlinewidth. @RawIndex { @Code "outlinewidth" option } +outlinewidth.in.pie @SubIndex { in pie graphs } +piegraphs. @RawIndex { pie graphs } +piegraphs.outlinewidth @SubIndex { @Code "outlinewidth" option } +of the outline, or the diameter of the dots if @Code outlinestyle +is {@Code dotted}. +@PP +You can give three values to {@Code outlinestyle}, like this: +@ID -1px @Break @OneRow @Code @Verbatim { +@Pie +{ red @Colour @Slice + weight { 75 } + outlinestyle { dashed cdashed dotted } + label { Bad debts } +} +} +and the first will apply to the first straight segment, +the second to the curved segment, and the third to the +second straight segment: +@CD @Pie +{ red @Colour @Slice + weight { 75 } + outlinestyle { dashed cdashed dotted } + label { Bad debts } +} +There is no option to change the colour of the outline, +but you can change the colour of the whole slice using +the {@Code "@Colour"} symbol from Section {@NumberOf colour} +as shown. It colours the label as well, but you can +fix that by enclosing the contents of your label in +another {@Code "@Colour"} symbol if you need to. +@PP +The @Code detach option pulls its slice radially out of the +detach.pie @Index { @Code "detach" option (pie graphs) } +piegraphs. @RawIndex { pie graphs } +piegraphs.detach @SubIndex { @Code "detach" option } +pie, without affecting any other slice: +@CD @Pie + # abovecaption { Ideal breakdown of academic workload } + aboveextra { 0.7c } +{ + @Slice + detach { yes } + weight { 20 } + label { Admin (20%) } + @Slice + weight { 40 } + paint { green } + label { Research (40%) } + @Slice + weight { 40 } + paint { lightred } + label { Teaching (40%) } +} +is produced by +@ID -1px @Break @OneRow @Code @Verbatim { +@Pie + aboveextra { 0.7c } +{ + @Slice + detach { yes } + weight { 20 } + label { Admin (20%) } + @Slice + weight { 40 } + paint { green } + label { Research (40%) } + @Slice + weight { 40 } + paint { lightred } + label { Teaching (40%) } +} +} +We've used the @Code aboveextra option +(Section {@NumberOf pie_over}) to compensate for Lout's +ignorance of where the slice actually ended up. +The value of @Code detach may be {@Code no} (the +default), {@Code yes}, or any number, which defines +the fraction of the pie radius that the slice is +pulled out by. For example, @Code yes is just another +name for {@Code 0.5}. +@End @Section diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/pie_summ lout-3.27/doc/user/pie_summ --- lout-3.26/doc/user/pie_summ Thu Jan 1 10:00:00 1970 +++ lout-3.27/doc/user/pie_summ Mon Nov 11 10:13:30 2002 @@ -0,0 +1,187 @@ +@Section + @Title { Summary } + @Tag { pie_summ } +@Begin +@PP +Here are the options of the @Code "@Pie" symbol, +piegraphs. @RawIndex { pie graphs } +piegraphs.summary @SubIndex { summary } +with their default values and allowed values: +@ID @Tab + hmargin { 0.15c } + vmargin { 0.47vx } + @Fmta { @Col @Code { " "A } ! @Col @Code "{" ! @Col @Code B ! + @Col @Code "}" ! @Col ! @Col ! @Col C } + @Fmtb { @Col @Code A ! @Col ! @Col ! @Col ! @Col ! @Col ! @Col } +{ +@Rowb + A { "@Pie" } +@Rowa + A { save } + B { no } + C { {@Code no} or {@Code yes} } +@Rowa + A { totalweight } + B { 100 } + C { any positive number } +@Rowa + A { radius } + B { 2.5c } + C { any length } +@Rowa + A { initialangle } + B { 0d } + C { any angle (@Code {90d} etc.) } +@Rowa + A { leftextra } + B { 0c } + C { any length } +@Rowa + A { rightextra } + B { 0c } + C { any length } +@Rowa + A { aboveextra } + B { 0c } + C { any length } +@Rowa + A { belowextra } + B { 0c } + C { any length } +@Rowa + A { leftcaption } + B { } + C { any Lout object } +@Rowa + A { rightcaption } + B { } + C { any Lout object } +@Rowa + A { abovecaption } + B { } + C { any Lout object } +@Rowa + A { belowcaption } + B { } + C { any Lout object } +@Rowa + A { leftgap } + B { 0.5c } + C { any length } +@Rowa + A { rightgap } + B { 0.5c } + C { any length } +@Rowa + A { abovegap } + B { 0.5c } + C { any length } +@Rowa + A { belowgap } + B { 0.5c } + C { any length } +@Rowa + A { hidecaptions } + B { yes } + C { @Code no or @Code yes } +@Rowa + A { weight } + B { 10 } + C { Any positive number } +@Rowa + A { paint } + B { none } + C { @Code none or any colour (Section @NumberOf { colour }) } +@Rowa + A { texture } + B { solid } + C { Any texture (Section @NumberOf { textures }) } +@Rowa + A { outlinestyle } + B { solid } + C { {@Code solid}, @Code {dashed}, @Code {cdashed}, @Code { dotted }, +or @Code { noline } } +@Rowa + A { outlinedashlength } + B { 0.2f } + C { any length } +@Rowa + A { outlinewidth } + B { thin } + C { @Code { thin }, @Code { medium }, @Code { thick }, or any length } +@Rowa + A { detach } + B { no } + C { {@Code no}, {@Code yes}, or any non-negative number } +@Rowa + A { label } + B { } + C { any Lout object } +@Rowa + A { labelfont } + B { -2p } + C { any font as given to @Code "@Font" } +@Rowa + A { labelbreak } + B { clines } + C { any break style as given to @Code "@Break" } +@Rowa + A { labelmargin } + B { 0.2f } + C { any length } +@Rowa + A { labelformat } + B { "@Body" } + C { any Lout object, usually including @Code "@Body" } +@Rowa + A { labelradius } + B { internal } + C { {@Code internal}, {@Code external}, or any positive number } +@Rowa + A { labeladjust } + B { 0c 0c } + C { any point (pair of lengths) } +@Rowa + A { finger } + B { no } + C { @Code no or @Code yes } +@Rowa + A { fingerstyle } + B { solid } + C { {@Code solid}, @Code {dashed}, @Code {cdashed}, @Code { dotted }, +or @Code { noline } } +@Rowa + A { fingerdashlength } + B { 0.2f } + C { any length } +@Rowa + A { fingerwidth } + B { thin } + C { @Code { thin }, @Code { medium }, @Code { thick }, or any length } +@Rowa + A { fingerradius } + B { 0.7 } + C { any positive number } +@Rowa + A { fingeradjust } + B { 0c 0c } + C { a point (pair of lengths) } +@Rowa + A { fingerarrow } + B { no } + C { @Code no or @Code yes } +@Rowa + A { fingerarrowlength } + B { 0.6f } + C { any length } +@Rowa + A { fingerarrowwidth } + B { 0.45f } + C { any length } +} +The options from @Code "weight" downwards are also the complete +set of options of the @Code "@Slice" symbol. The value of an +option is the value given at the @Code "@Slice" symbol, if any; +otherwise, the value at the enclosing @Code "@Pie" is used +if any; if it is not given there, the setup file value is used. +@End @Section diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/preface lout-3.27/doc/user/preface --- lout-3.26/doc/user/preface Tue Oct 8 16:12:42 2002 +++ lout-3.27/doc/user/preface Fri Nov 22 09:02:57 2002 @@ -3,7 +3,7 @@ This User's Guide brings together in one document everything needed for the day-to-day use of Version 3 of the Lout document formatting system. -@IndexBlanks +@IndexLetters @PP There are three other documents describing Lout: the Expert's Guide @Cite { $kingston1995lout.expert }, which you need if you want to add @@ -17,8 +17,8 @@ gnu. @Index { GNU Public License } primary source is directory @ID @Code "ftp://ftp.it.usyd.edu.au/jeff/lout" -in which may be found a gzipped tar file containing the main distribution -(currently {@Code "lout-3.26.tar.gz"}), and various other things including +containing a gzipped tar file of the current version +(currently {@Code "lout-3.27.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 @@ -40,6 +40,7 @@ eqn. @Index { @Code eqn equation formatter } equation formatter @Cite { $kernighan1975eqn }, and also by Brian K. Reid's Scribe system @Cite { $reid1980scribe }. That +scribe. @RawIndex { Scribe } scribe.influence @SubIndex { influence on Lout } reid.b @Index { Reid, Brian K. } research phase ended in October 1991 with the first public release of Lout. diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/prg lout-3.27/doc/user/prg --- lout-3.26/doc/user/prg Wed Sep 18 12:22:38 2002 +++ lout-3.27/doc/user/prg Sun Nov 17 16:30:44 2002 @@ -4,6 +4,8 @@ @Begin @LP This chapter describes how to typeset computer program text using Lout +programs. @Index { programs } +computer.programs. @RawIndex { computer programs @I see programs } in conjunction with the @Code prg2lout prg2lout. @Index { @Code prg2lout filter program } @FootNote { @@ -27,11 +29,13 @@ will print keywords in bold, identifiers in italics, add line numbers, etc. @PP At the time of writing, the available programming languages are: -eiffel. @Index { Eiffel program printing } -c. @Index { C and C++ program printing } blue. @Index { Blue program printing } +c. @Index { C and C++ program printing } +eiffel. @Index { Eiffel program printing } +java. @Index { Java program printing } perl. @Index { Perl program printing } pod. @Index { Pod (for Perl) printing } +python. @Index { Python program printing } @CD @Tbl mv { 0.5vx } af { Italic } diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/prg_chan lout-3.27/doc/user/prg_chan --- lout-3.26/doc/user/prg_chan Wed Sep 18 12:22:38 2002 +++ lout-3.27/doc/user/prg_chan Thu Nov 21 21:26:36 2002 @@ -14,8 +14,11 @@ For general information about how to make your own setup file, consult Section {@NumberOf setup}. The options that determine the default values are in the @Code "@Use" clause which occupies most of the setup +programs. @RawIndex { programs } +programs.setup @SubIndex { setup files for } +setup.files. @RawIndex { setup files } +setup.files.for.programs @SubIndex { for programs } file. Here is part of the @Code "@Use" clause from {@Code cprint}: -cprint. @Index @Code "@CPSetup" @ID @Code @Tbl mv { 0.5vx } aformat { @Cell A | @Cell B | @Cell C } @@ -96,9 +99,9 @@ these symbols here, you must include your setup file @I after @Code "@SysInclude { doc }" or whatever, the reverse of the usual arrangement, so that they are defined before Lout reads your setup -file. This reversal is carried out automatically when formatting -programs independently of any document, so you can use these symbols -in a setup file given by a @Code { -S } command line flag. +file. This is always done when formatting programs independently of +any document, so you can use these symbols in a setup file given by +a @Code { -S } command line flag. } If you do use exotic formats, remember that in some programming languages, comments and even strings may occupy more than one line: {@Code "@Box"}, for example, will give a logical but probably unwanted result when diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/prg_comm lout-3.27/doc/user/prg_comm --- lout-3.26/doc/user/prg_comm Wed Sep 18 12:22:37 2002 +++ lout-3.27/doc/user/prg_comm Sun Nov 17 16:56:17 2002 @@ -4,6 +4,9 @@ @Begin @PP It is possible to embed Lout text inside program comments. How this +programs. @RawIndex { programs } +programs.loutcode @SubIndex { Lout code embedded in } +loutcode.programs @Index { Lout code embedded in programs } is done could in principle vary from language to language, but in every language supported so far it is done by starting off the comment with an @Code "@" character. If the language has several ways to get @@ -19,7 +22,56 @@ line.) Other possible uses for this feature include index entries and margin notes. Incredible as it may seem, you can even write @ID @Code "/*@ @CD @Heading { Function @CP { treeprint() } } */" -with a @Code "@CP" symbol and some C code inside the Lout code -inside the C code. You probably can't go further, however, at least -not in C, since that would require a C comment inside a C comment. +with @Code "@CP" and C code inside the Lout code inside the C code. You +probably can't go further, however, at least not in C, since that would +require a C comment inside a C comment. +@PP +It's possible to get quite long Lout insertions, with a bit of +care. For example, here's how to get a filled paragraph of text +into a computer program: +@ID @OneRow @Code @Verbatim { +@Eiffel { +--@@ID ragged @Break { +--@This program is free software; you can redistribute +--@it and"/"or modify it under the terms of the +--@@B { GNU General Public License } as published by +--@the Free Software Foundation; either Version 2, or +--@(at your option) any later version. +--@} + +launch(x: APPLICATION) is + -- launch the application + deferred +} +} +produces +@ID @OneRow @Eiffel { +--@@ID ragged @Break { +--@This program is free software; you can redistribute +--@it and"/"or modify it under the terms of the +--@@B { GNU General Public License } as published by +--@the Free Software Foundation; either Version 2, or +--@(at your option) any later version. +--@} + +launch(x: APPLICATION) is + -- launch the application + deferred +} +This example relies on the fact that @Code prg2lout passes +escape comments like these through to Lout absolutely +untouched. Notice the use of both a display symbol ({@Code "@ID"}) +and a change to the break style ({@Code "ragged @Break"}). If +the change of break style had been omitted, the break +style of the surrounding program, {@Code "lines @Break"}, +would have been applied to the displayed paragraph. The +display symbol is needed because without it the paragraph +would be an integral part of the surrounding program (which +is actually considered by Lout to be one paragraph), making +the @Code "ragged @Break" ineffective since you can't change +the paragraph style in the middle of a paragraph. +@PP +Clearly, use of such escape comments in conjunction with line +numbers is going to be problematic. No promise is made +that the result of doing that will make sense. @End @Section diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/prg_embe lout-3.27/doc/user/prg_embe --- lout-3.26/doc/user/prg_embe Wed Sep 18 12:22:38 2002 +++ lout-3.27/doc/user/prg_embe Thu Nov 21 18:43:01 2002 @@ -20,20 +20,20 @@ The program texts within the Lout document are enclosed in braces preceded by the Lout symbol from the third column of the table, like this for the C language: -@ID @OneRow @Code { -"@IndentedDisplay @CP {" -"#include " -"" -"treeprint(p) /* print tree p recursively */" -"struct tnode *p;" -"{" -" if (p != NULL) {" -" treeprint(p->left);" -" printf(\"%4d %s\\n\", p->count, p->word);" -" treeprint(p->right);" -" }" -"}" -"}" +@ID @OneRow @Code @Verbatim { +@IndentedDisplay @CP { +#include + +treeprint(p) /* print tree p recursively */ +struct tnode *p; +{ + if (p != NULL) { + treeprint(p->left); + printf(\%4d %s\\n\, p->count, p->word); + treeprint(p->right); + } +} +} } Although computer programs violate the rules of legal Lout input in many ways, these rules are suspended by the {@Code "@CP"}, {@Code "@Eiffel"} etc. symbols, @@ -61,6 +61,10 @@ other languages) to prevent it being broken across two lines, if desired. @PP In cases where the program text has unbalanced braces, it is necessary to +programs. @RawIndex { programs } +programs.braces @SubIndex { braces in } +braces. @RawIndex { braces } +braces.in.program @SubIndex { in program formatting } use the alternative form @Code "@CP @Begin ... @End @CP" (or the equivalent for other languages), so that Lout does not confuse program braces with Lout braces. In that case the program text must not diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/prg_erro lout-3.27/doc/user/prg_erro --- lout-3.26/doc/user/prg_erro Wed Sep 18 12:22:37 2002 +++ lout-3.27/doc/user/prg_erro Thu Nov 21 21:08:33 2002 @@ -5,6 +5,10 @@ @PP In order to understand the error messages produced by program printing, it is necessary to understand that Lout's first step when +programs. @RawIndex { programs } +programs.errors @SubIndex { errors } +errors. @RawIndex { errors } +errors.in.programs @SubIndex { in program formatting } given a program text is to pass it to the separate {@Code prg2lout} program for analysis. This separate program is the source of most of the error messages associated with program printing. diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/prg_form lout-3.27/doc/user/prg_form --- lout-3.26/doc/user/prg_form Wed Sep 18 12:22:38 2002 +++ lout-3.27/doc/user/prg_form Sun Nov 17 16:45:24 2002 @@ -4,6 +4,9 @@ @Begin @PP The formfeed (Control-L) character is traditionally taken to be a +programs. @RawIndex { programs } +programs.formfeeds @SubIndex { formfeed characters in } +formfeeds.programs @Index { formfeed characters in programs } request to start a new page. This is explicitly recognized by the formal definition of the C language and many others, which treat this character as white space from a language point of view, with diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/prg_lone lout-3.27/doc/user/prg_lone --- lout-3.26/doc/user/prg_lone Wed Sep 18 12:22:38 2002 +++ lout-3.27/doc/user/prg_lone Sun Nov 17 16:32:01 2002 @@ -4,6 +4,9 @@ @Begin @PP Printing of program files independently of any document is accomplished by +programs. @RawIndex { programs } +programs.standalone @SubIndex { stand-alone } +standalone.programs @Index { stand-alone programs } the following Unix pipeline: @ID @Code "prg2lout -l language options files | lout -s > out.ps" where @Code language stands for any one of the programming language diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/prg_opti lout-3.27/doc/user/prg_opti --- lout-3.26/doc/user/prg_opti Wed Sep 18 12:22:37 2002 +++ lout-3.27/doc/user/prg_opti Thu Nov 21 21:10:41 2002 @@ -7,28 +7,41 @@ options for changing the appearance of the printed program. These options are the same for all symbols, although their default values may vary. The @Code "style" option changes the printing style; its +programs. @RawIndex { programs } +programs.style @SubIndex { @Code "style" option } +style. @RawIndex { @Code "style" option } +style.in.programs @SubIndex { in programs } +programs. @RawIndex { programs } +programs.fixed @SubIndex { @Code "fixed" style } +fixed.programs @Index { @Code "fixed" style (programs) } value may be {@Code "fixed"} (fixed-width font), {@Code "varying"} +programs. @RawIndex { programs } +programs.varying @SubIndex { @Code "varying" style } +varying.programs @Index { @Code "varying" style (programs) } +programs. @RawIndex { programs } +programs.symbol @SubIndex { @Code "symbol" style } +symbol.programs @Index { @Code "symbol" style (programs) } (varying-width font), or {@Code "symbol"} (varying-width font with mathematical symbols used for some operators). Its default value depends on the language, and may be found in the fourth column of the table at the start of this chapter. The example in the previous section was in @Code fixed style; we can switch styles like this: -@ID @OneRow @Code { -"@CP" -" style { varying }" -"{" -"#include " -"" -"treeprint(p) /* print tree p recursively */" -"struct tnode *p;" -"{" -" if (p != NULL) {" -" treeprint(p->left);" -" printf(\"%4d %s\\n\", p->count, p->word);" -" treeprint(p->right);" -" }" -"}" -"}" +@ID @OneRow @Code @Verbatim { +@CP + style { varying } +{ +#include + +treeprint(p) /* print tree p recursively */ +struct tnode *p; +{ + if (p != NULL) { + treeprint(p->left); + printf(\%4d %s\\n\, p->count, p->word); + treeprint(p->right); + } +} +} } The result in this case will be @ID @OneRow @CP style { varying } @@ -65,31 +78,44 @@ The {@Code "@CP"}, {@Code "@Eiffel"} etc. symbols have additional options which allow a finer control over the style. Here they all are, with their default values: -@ID @OneRow @Code { -"@CP [ or @Eiffel, @Blue, etc. ]" -" style { fixed }" -" numbered { No }" -" font { Courier }" -" size { -1.0p }" -" line { 1.0vx }" -" tabin { 8 }" -" tabout { 8s }" -" identifiers { Base }" -" keywords { Base }" -" operators { Base }" -" numbers { Base }" -" strings { Base }" -" comments { Base }" -"{" -" ..." -"}" +@ID @OneRow @Code @Verbatim { +@CP [ or @Eiffel, @Blue, etc. ] + style { fixed } + numbered { No } + font { Courier } + size { -1.0p } + line { 1.0vx } + tabin { 8 } + tabout { 8s } + identifiers { Base } + keywords { Base } + operators { Base } + numbers { Base } + strings { Base } + comments { Base } +{ + ... +} } We are already familiar with {@Code "style"}. After that comes {@Code "numbered"}, whose value may be {@Code "No"} (the default), {@Code "Yes"}, or a number, and which determines whether or not +programs. @RawIndex { programs } +programs.numbered @SubIndex { @Code "numbered" option } +numbered.programs @Index { @Code "numbered" option (programs) } line numbers are to be added and if so the value of the first one. Next we have {@Code "font"}, which determines the font family to use, {@Code "size"}, +programs. @RawIndex { programs } +programs.font @SubIndex { @Code "font" option } +font.option. @RawIndex { @Code "font" option } +font.option.in.programs @SubIndex { in program formatting } +programs. @RawIndex { programs } +programs.size @SubIndex { @Code "size" option } +size.programs @Index { @Code "size" option (programs) } +programs. @RawIndex { programs } +programs.line @SubIndex { @Code "line" option } +line.programs @Index { @Code "line" option (programs) } the font size to use, and {@Code "line"}, the inter-line spacing. The default value for @Code "size" asks for one point smaller than in the surrounding document; this was done to compensate for Courier's relatively @@ -98,6 +124,24 @@ The @Code "tabin" and @Code "tabout" options are the subject of Section {@NumberOf tabs}. After them come six options giving the particular font faces in which to print identifiers, keywords, operators, +programs. @RawIndex { programs } +programs.identifiers @SubIndex { @Code "identifiers" option } +identifiers.programs @Index { @Code "identifiers" option (programs) } +programs. @RawIndex { programs } +programs.keywords @SubIndex { @Code "keywords" option } +keywords.programs @Index { @Code "keywords" option (programs) } +programs. @RawIndex { programs } +programs.operators @SubIndex { @Code "operators" option } +operators.programs @Index { @Code "operators" option (programs) } +programs. @RawIndex { programs } +programs.numbers @SubIndex { @Code "numbers" option } +numbers.programs @Index { @Code "numbers" option (programs) } +programs. @RawIndex { programs } +programs.strings @SubIndex { @Code "strings" option } +strings.programs @Index { @Code "strings" option (programs) } +programs. @RawIndex { programs } +programs.comments @SubIndex { @Code "comments" option } +comments.programs @Index { @Code "comments" option (programs) } numbers, strings, and comments. {@Code "Base"} means the basic face; other commonly available choices are {@Code "Slope"} and {@Code "Bold"}. These options may all be set to different faces if desired. The default values diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/prg_perl lout-3.27/doc/user/prg_perl --- lout-3.26/doc/user/prg_perl Wed Sep 18 12:22:38 2002 +++ lout-3.27/doc/user/prg_perl Sun Nov 17 16:54:56 2002 @@ -4,6 +4,9 @@ @Begin @PP The Perl programming language +programs. @RawIndex { programs } +programs.perl @SubIndex { Perl problems } +perl.programs @Index { Perl problems (programs) } @FootNote { My thanks to Mark Summerfield for help with Perl and Pod. } is quite a difficult one for the @Code { prg2lout } program to deal with, and our boast that programs can be included with `absolutely no @@ -82,6 +85,9 @@ Further work may eliminate some of these problems. @PP The Pod language is used by Perl programmers for creating documentation, +programs. @RawIndex { programs } +programs.pod @SubIndex { Pod problems } +pod.programs @Index { Pod problems (programs) } and may be found within Perl programs or standing alone. Lout supports both arrangements without any special action by the user. At the beginning of the @Code perl setup line, the following line has been placed: diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/prg_pipe lout-3.27/doc/user/prg_pipe --- lout-3.26/doc/user/prg_pipe Wed Sep 18 12:22:38 2002 +++ lout-3.27/doc/user/prg_pipe Sun Nov 17 16:49:43 2002 @@ -4,6 +4,9 @@ @Begin @PP We have said that program text within @Code "@CP { ... }" and the other +programs. @RawIndex { programs } +programs.include @SubIndex { @Code "@Include" within } +include.programs @Index { @Code "@Include" within programs } symbols is passed directly to @Code prg2lout for analysis. However, there is an exception. The program text may contain an @Code "@Include" or @Code "@SysInclude" command, which, as for the @@ -25,6 +28,9 @@ actual program file is wanted for display. Rather than placing the wanted part in a separate file, which is error-prone and tedious when the program is changing, Unix users can use the @Code "pipe" option +programs. @RawIndex { programs } +programs.pipe @SubIndex { @Code "pipe" option } +pipe.programs @Index { @Code "pipe" option (programs) } to pipe the entire file through an arbitrary sequence of Unix commands, which may be used to make the wanted selection before the program text is passed to {@Code prg2lout}. diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/prg_prog lout-3.27/doc/user/prg_prog --- lout-3.26/doc/user/prg_prog Wed Sep 18 12:22:38 2002 +++ lout-3.27/doc/user/prg_prog Sun Nov 17 16:47:46 2002 @@ -4,6 +4,9 @@ @Begin @PP The standard reference for the Eiffel language @Cite { $meyer1992eiffel } +programs. @RawIndex { programs } +programs.programtext @SubIndex { program text in comments } +programtext.programs @Index { program text in program comments } specifies that identifiers within comments may or should be enclosed in ` and ' so that they may be noticed and printed in an italic font: diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/prg_tabs lout-3.27/doc/user/prg_tabs --- lout-3.26/doc/user/prg_tabs Wed Sep 18 12:22:38 2002 +++ lout-3.27/doc/user/prg_tabs Sun Nov 17 16:44:27 2002 @@ -4,12 +4,17 @@ @Begin @PP Tab characters provide a convenient way to indent and align parts of -tab.c @Index { tab characters in programs } +programs. @RawIndex { programs } +programs.tab.characters @SubIndex { tab characters } +tab.characters.programs @Index { tab characters in programs } computer programs. With care, this alignment can be preserved in the final print even with varying-width fonts. @PP The distance between two tab stops in the program text is by default taken to be 8 characters, which is standard for Unix. This can be changed with +programs. @RawIndex { programs } +programs.tabin @SubIndex { @Code "tabin" option } +tabin.programs @Index { @Code "tabin" option (programs) } the @Code "tabin" option. For example, @ID @Code "@CP tabin { 4 }" informs Lout that tab stops occur every 4 characters in the program @@ -19,6 +24,9 @@ @PP The distance between two tab stops on the printed page is quite a different thing, and it is determined by the value of the @Code "tabout" option, which +programs. @RawIndex { programs } +programs.tabout @SubIndex { @Code "tabout" option } +tabout.programs @Index { @Code "tabout" option (programs) } must be a Lout length. For example, @ID @Code "@CP tabout { 0.5i }" requests that tab stops be placed at half-inch intervals. In other diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/ref_chan lout-3.27/doc/user/ref_chan --- lout-3.26/doc/user/ref_chan Wed Sep 18 12:22:37 2002 +++ lout-3.27/doc/user/ref_chan Mon Nov 18 08:52:19 2002 @@ -13,29 +13,33 @@ Section {@NumberOf setup}. Here we just describe the setup file options that relate to references. Here they are, with their default values: -@ID @OneRow @Code { -"@MakeReferences { Yes }" -"@RefCiteStyle { [cite] }" -"@RefCiteLabels { @RefNum }" -"@RefNumbers { Arabic }" -"@RefListFormat { Labels }" -"@RefListLabels { [@RefNum] }" -"@RefListTitle { references }" -"@ChapRefListTitle { references }" -"@RefListIndent { 0c }" -"@RefListRightIndent { 0c }" -"@RefListGap { 1.00v }" -"@RefListFont { }" -"@RefListBreak { }" -"@RefListLabelWidth { 2.00f }" -"@RefListSortKey { @Tag }" +@ID @OneRow @Code @Verbatim { +@MakeReferences { Yes } +@RefCiteStyle { [cite] } +@RefCiteLabels { @RefNum } +@RefNumbers { Arabic } +@RefListFormat { Labels } +@RefListLabels { [@RefNum] } +@RefListTitle { references } +@ChapRefListTitle { references } +@RefListIndent { 0c } +@RefListRightIndent { 0c } +@RefListGap { 1.00v } +@RefListFont { } +@RefListBreak { } +@RefListLabelWidth { 2.00f } +@RefListSortKey { @Tag } } -makereferences.sym @Index { @Code "@MakeReferences" } +references. @RawIndex { references } +references.makereferences @SubIndex { @Code "@MakeReferences" } +makereferences.references @Index { @Code "@MakeReferences" (references) } Setting @Code "@MakeReferences" to @Code "No" will cause Lout to ignore all citation symbols and omit all reference lists. @PP @Code "@RefCiteStyle" and @Code "@RefCiteLabels" combine to -refcitestyle.sym @Index { @Code "@RefCiteStyle" } +references. @RawIndex { references } +references.refcitestyle @SubIndex { @Code "@RefCiteStyle" } +refcitestyle.references @Index { @Code "@RefCiteStyle" (references) } determine the appearance of citations. The result of each @Code "@Cite" symbol is the value of @Code "@RefCiteStyle" with the @Code "cite" symbol replaced by the object following the @Code "@Cite" symbol. For @@ -44,7 +48,9 @@ {@Code "@RefCiteStyle"}. @PP @Code "@RefCiteLabels" determines the appearance of each label within -refcitelabels.sym @Index { @Code "@RefCiteLabels" } +references. @RawIndex { references } +references.refcitelabels @SubIndex { @Code "@RefCiteLabels" } +refcitelabels.references @Index { @Code "@RefCiteLabels" (references) } the citation. Within it, the @Code "@RefNum" symbol will produce the number of the reference, and you may also use any of the options of the @Code "@Reference" symbol listed at the beginning of Section @@ -68,7 +74,9 @@ this @Code "label" option is explained in Section {@NumberOf labelled}. @PP @Code "@RefNumbers" determines the kind of numbering produced by the -refnumbers.sym @Index { @Code "@RefNumbers" } +references. @RawIndex { references } +references.refnumbers @SubIndex { @Code "@RefNumbers" } +refnumbers.references @Index { @Code "@RefNumbers" (references) } @Code "@RefNum" symbol used within @Code "@RefCiteLabels" above and @Code "@RefListLabels" below. Its value may be {@Code Arabic}, {@Code Roman}, {@Code UCRoman}, {@Code Alpha}, or {@Code UCAlpha}, as @@ -77,7 +85,9 @@ @PP The remaining eleven setup file options are all concerned with the appearance of the reference list. The first, {@Code "@RefListFormat"}, -reflistformat.sym @Index { @Code "@RefListFormat" } +references. @RawIndex { references } +references.reflistformat @SubIndex { @Code "@RefListFormat" } +reflistformat.references @Index { @Code "@RefListFormat" (references) } determines the overall format of the list. Here is what its four @NoCite { $strunk1979style } possible values do: @ID @Tab @@ -106,7 +116,9 @@ labels and references, only with where they appear. @PP @Code "@RefListLabels" determines the appearance of the labels in the -reflistlabels.sym @Index { @Code "@RefListLabels" } +references. @RawIndex { references } +references.reflistlabels @SubIndex { @Code "@RefListLabels" } +reflistlabels.references @Index { @Code "@RefListLabels" (references) } reference list (and so has no effect if @Code "@RefListFormat" is {@Code "NoLabels"}). It is a combination of @Code "@RefCiteStyle" and {@Code "@RefCiteLabels"}; you can use @Code "@RefNum" and all the @@ -122,38 +134,54 @@ @Code "@RefListLabelWidth" option described below. @PP @Code "@RefListTitle" determines the heading placed just before the -reflisttitle.sym @Index { @Code "@RefListTitle" } +references. @RawIndex { references } +references.reflisttitle @SubIndex { @Code "@RefListTitle" } +reflisttitle.references @Index { @Code "@RefListTitle" (references) } reference list at the end of the document: @ID @Code "@RefListTitle { Further Reading }" Two special values, @Code "references" and {@Code "bibliography"}, produce References and Bibliography in English and their equivalents in other languages. @Code "@ChapRefListTitle" is the same as -chapreflisttitle.sym @Index { @Code "@ChapRefListTitle" } +references. @RawIndex { references } +references.chapreflisttitle @SubIndex { @Code "@ChapRefListTitle" } +chapreflisttitle.references @Index { @Code "@ChapRefListTitle" (references) } {@Code "@RefListTitle"}, but applied to the reference list at the end of each chapter of a book when @Code "@ChapCite" is used. @PP {@Code "@RefListIndent"}, {@Code "@RefListRightIndent"}, and -reflistindent.sym @Index { @Code "@RefListIndent" } -reflistrightindent.sym @Index { @Code "@RefListRightIndent" } -reflistgap.sym @Index { @Code "@RefListGap" } +references. @RawIndex { references } +references.reflistindent @SubIndex { @Code "@RefListIndent" } +reflistindent.references @Index { @Code "@RefListIndent" (references) } +references. @RawIndex { references } +references.reflistrightindent @SubIndex { @Code "@RefListRightIndent" } +reflistrightindent.references @Index { @Code "@RefListRightIndent" (references) } {@Code "@RefListGap"} determine the left indent, right indent, and gap +references. @RawIndex { references } +references.reflistgap @SubIndex { @Code "@RefListGap" } +reflistgap.references @Index { @Code "@RefListGap" (references) } between reference list items, analogously to the {@Code "indent"}, {@Code "rightindent"}, and {@Code "gap"} options of the @Code "@List" symbol (Section {@NumberOf lists}). @Code "@RefListFont" and +references. @RawIndex { references } +references.reflistfont @SubIndex { @Code "@RefListFont" } +reflistfont.references @Index { @Code "@RefListFont" (references) } +references. @RawIndex { references } +references.reflistbreak @SubIndex { @Code "@RefListBreak" } +reflistbreak.references @Index { @Code "@RefListBreak" (references) } @Code "@RefListBreak" determine the font and -reflistfont.sym @Index { @Code "@RefListFont" } -reflistbreak.sym @Index { @Code "@RefListBreak" } paragraph breaking style of the reference list. For example, -@ID @OneRow @Code { -"@RefListFont { -2p }" -"@RefListBreak { 1.2fx outdent }" +@ID @OneRow @Code @Verbatim { +@RefListFont { -2p } +@RefListBreak { 1.2fx outdent } } switches to a smaller size with outdented paragraphs (these work well with {@Code NoLabels}). The empty default values produce the same font and break style as in the document as a whole. @PP @Code "@RefListLabelWidth" determines the distance from the left -reflistlabelwidth.sym @Index { @Code "@RefListLabelWidth" } +references. @RawIndex { references } +references.reflistlabelwidth @SubIndex { @Code "@RefListLabelWidth" } +reflistlabelwidth.references @Index { @Code "@RefListLabelWidth" (references) } edge of the labels to the left edge of the references, when @Code "@RefListFormat" is @Code Labels or {@Code DropLabels} (it has no effect when @Code "@RefListFormat" is @Code NoLabels or @@ -169,11 +197,13 @@ Lout is not clever enough to choose a good value by itself. @PP Finally, @Code "@RefListSortKey" determines the sorting key used when +references. @RawIndex { references } +references.reflistsortkey @SubIndex { @Code "@RefListSortKey" } +reflistsortkey.references @Index { @Code "@RefListSortKey" (references) } sort.ref @Index { sorting of reference lists } -reflistsortkey.sym @Index { @Code "@RefListSortKey" } ordering the reference list. The default value, @ID @Code "@RefListSortKey { @Tag }" -sorts by tag. Another popular possibility is to sort by the +sorts by tag. Another possibility is to sort by the @Code "@Label" option: @ID @Code "@RefListSortKey { @Label }" As usual @Code "@Label" will use the value of a @Code "label" option diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/ref_cite lout-3.27/doc/user/ref_cite --- lout-3.26/doc/user/ref_cite Wed Sep 18 12:22:37 2002 +++ lout-3.27/doc/user/ref_cite Mon Nov 18 08:49:28 2002 @@ -4,10 +4,11 @@ @Begin @PP To cite one or more references, use the @Code "@Cite" symbol like this: -citing @Index { citing references } -cite. @Index @Code "@Cite" -@ID @Code { -"This feature is beyond our scope @Cite { $kingston1995lout.expert, page 97 }." +references. @RawIndex { references } +references.cite @SubIndex { @Code "@Cite" } +cite.references @Index { @Code "@Cite" (references) } +@ID @Code @Verbatim { +This feature is beyond our scope @Cite { $kingston1995lout.expert, page 97 }. } The following object must be enclosed in braces. It may be an arbitrary object as usual. Within it the @Code "$" character is a symbol with a @@ -29,7 +30,9 @@ setting options in the setup file (Section {@NumberOf changeref}). @PP If you are making a book, there is a @Code "@ChapCite" symbol which is -chap.cite @Index @Code "@ChapCite" +references. @RawIndex { references } +references.chap.cite @SubIndex { @Code "@ChapCite" } +chap.cite.references @Index { @Code "@ChapCite" (references) } the same as @Code "@Cite" except that its references come out at the end of the current preface, introduction, chapter, or appendix, rather than at the end of the document. @@ -46,7 +49,9 @@ Although it is frowned upon by the authorities, some people include references which are not cited anywhere in the body of their document. For this there is {@Code "@NoCite"}: -no.cite @Index @Code "@NoCite" +references. @RawIndex { references } +references.no.cite @SubIndex { @Code "@NoCite" } +no.cite.references @Index { @Code "@NoCite" (references) } @ID @Code { "... our scope @NoCite { $kingston1995lout.expert $kingston1993lout.design }." } @@ -59,34 +64,38 @@ that if you put commas between the references inside @Code "@NoCite" you will get commas in the output (so don't). There is a @Code "@NoChapCite" symbol that combines @Code "@NoCite" and -no.chap.cite @Index @Code "@NoChapCite" +references. @RawIndex { references } +references.no.chap.cite @SubIndex { @Code "@NoChapCite" } +no.chap.cite.references @Index { @Code "@NoChapCite" (references) } {@Code "@ChapCite"}. For compatibility with previous versions of Lout, there is a @Code "@Ref" symbol: -ref. @Index @Code "@Ref" +ref. @Index { @Code "@Ref" (references) } @ID @Code "@Ref kingston1995lout.expert" is the same as @Code "@Cite { $kingston1995lout.expert }" without the brackets. There are analogous {@Code "@ChapRef"}, {@Code "@NoRef"}, and {@Code "@NoChapRef"} -chap.ref @Index @Code "@ChapRef" -no.ref @Index @Code "@NoRef" -no.chap.ref @Index @Code "@NoChapRef" +chap.ref @Index { @Code "@ChapRef" (references) } +no.ref @Index { @Code "@NoRef" (references) } +no.chap.ref @Index { @Code "@NoChapRef" (references) } symbols, which are not recommended. @PP The @Code "@RefPrint" symbol will print a reference on the spot: -ref.print @Index @Code "@RefPrint" resume. @Index { resumes } curriculum. @Index { curriculum vitae } +references. @RawIndex { references } +references.refprint @SubIndex { @Code "@RefPrint" } +refprint.references @Index { @Code "@RefPrint" (references) } @ID @Code "@RefPrint kingston1995lout.expert" has result @ID @RefPrint kingston1995lout.expert unrelated to any reference list. For example, -@ID @OneRow @Code { -"@Heading { Journal Articles }" -"@NumberedList" -"@LI @RefPrint kingston1985tree" -"..." -"@LI @RefPrint kingston1993lout.design" -"@EndList" +@ID @OneRow @Code @Verbatim { +@Heading { Journal Articles } +@NumberedList +@LI @RefPrint kingston1985tree +... +@LI @RefPrint kingston1993lout.design +@EndList } might appear in someone's resume. @End @Section diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/ref_crea lout-3.27/doc/user/ref_crea --- lout-3.26/doc/user/ref_crea Wed Sep 18 12:22:37 2002 +++ lout-3.27/doc/user/ref_crea Mon Nov 18 08:52:44 2002 @@ -10,13 +10,16 @@ To do this you must be using your own setup file, as explained in Section {@NumberOf setup}. At the end of the setup file you will find this line: -reference.print @Index { reference printing style } -ref.style @Index @Code "@RefStyle" +references. @RawIndex { references } +references.refstyle @SubIndex { @Code "@RefStyle" } +refstyle.references @Index { @Code "@RefStyle" (references) } @ID @Code "@SysDatabase @RefStyle { refstyle }" This tells Lout to consult a database file of reference styles called {@Code "refstyle.ld"}. These are not references, they are formatting styles, one for each reference type. The @Code "Sys" in @Code "@SysDatabase" -sys.database @Index @Code "@SysDatabase" +references. @RawIndex { references } +references.sysdatabase @SubIndex { @Code "@SysDatabase" } +sysdatabase.references @Index { @Code "@SysDatabase" } means that this file is stored in the @I { Lout system database directory }, system.database.dir @Index { system database directory } refstyle.ld.file @Index { @Code "refstyle.ld" file} @@ -50,19 +53,19 @@ In practice you will probably want to store your database of reference styles in some library directory, so that it can be used by many documents. A Unix pathname is appropriate for this: -@ID @Code "@Database @RefStyle { \"/usr/jeff/lib/mystyle\" }" +@ID @Code @Verbatim { @Database @RefStyle { "/usr/jeff/lib/mystyle" } } Quotes are needed because of the @Code "/" characters. @PP The database entries within @Code "refstyle.ld" and @Code "mystyle.ld" might look something like this: -@ID @OneRow @Code { -"{ Book @RefStyle @Style" -" { @Reference&&reftag @Open" -" {" -" @Author. @I @Title. @Publisher, @Year." -" }" -" }" -"}" +@ID @OneRow @Code @Verbatim { +{ Book @RefStyle @Style + { @Reference&&reftag @Open + { + @Author. @I @Title. @Publisher, @Year. + } + } +} } The meaning of the first two lines is beyond our scope, except that @Code "Book" on the first line means that this is the entry which @@ -113,14 +116,9 @@ @Rowa A { "}" } } The meaning is that each object to the left of an @Code "@If" will be -if. @Index @Code "@If" printed only if the condition to the right of the @Code "@If" is true. The condition may contain options, which are considered to be true if they are not omitted (non-empty), and it may contain {@Code "@And"}, -and. @Index @Code "@And" -or. @Index @Code "@Or" -not. @Index @Code "@Not" -true. @Index @Code "@True" {@Code "@Or"}, {@Code "@Not"}, and @Code "@True" with the usual precedence and meaning. Sub-conditions may be enclosed in braces if desired, although it is best to keep the conditions as simple as possible given the diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/ref_entr lout-3.27/doc/user/ref_entr --- lout-3.26/doc/user/ref_entr Wed Sep 18 12:22:37 2002 +++ lout-3.27/doc/user/ref_entr Mon Nov 18 08:50:25 2002 @@ -144,6 +144,9 @@ 2000. Multi-word tags are possible but not recommended. @PP Unusually for Lout, you can have unquoted @Code "/" and @Code "~" +references. @RawIndex { references } +references.url @SubIndex { @Code "@URL" } +url.references @Index { @Code "@URL" (references) } characters inside the @Code "@URL" option: @ID @Code "@URL { ftp://ftp.cs.su.oz.au/jeff/lout }" In fact it is better not to use quotes because then Lout will @@ -153,25 +156,27 @@ Since the types within each broad category are similar, our plan is to give one example of each and briefly note how the others differ. Here is a @Code Book entry showing all its options: -book.ref.type @Index { @Code Book reference type } -@ID @OneRow @Code { -"{ @Reference" -" @Tag { homer.odyssey }" -" @Type { Book }" -" @Author { Homer }" -" @Title { The Odyssey }" -" @TitleNote { Translated by E. V. Rieu }" -" @Pinpoint { Chapter VI }" -" @Pages { 102--111 }" -" @Page { 102 }" -" @Publisher { Penguin Books }" -" @Address { Harmondsworth, Middlesex }" -" @Edition { Penguin Classics Edition }" -" @Month { August }" -" @Year { 1942 }" -" @Note { The date of composition is unknown," -"but is thought to be about the tenth century BC. }" -"}" +references. @RawIndex { references } +references.book @SubIndex { @Code Book reference type } +book.references @Index { @Code "Book" reference type } +@ID @OneRow @Code @Verbatim { +{ @Reference + @Tag { homer.odyssey } + @Type { Book } + @Author { Homer } + @Title { The Odyssey } + @TitleNote { Translated by E. V. Rieu } + @Pinpoint { Chapter VI } + @Pages { 102--111 } + @Page { 102 } + @Publisher { Penguin Books } + @Address { Harmondsworth, Middlesex } + @Edition { Penguin Classics Edition } + @Month { August } + @Year { 1942 } + @Note { The date of composition is unknown, +but is thought to be about the tenth century BC. } +} } And here is what it produces: @ID @RefPrint homer.odyssey @@ -182,7 +187,9 @@ {@Code "@Publisher"}, and {@Code "@Year"} options. @PP @Code Proceedings is similar, except you -proceedings.ref.type @Index { @Code Proceedings reference type } +references. @RawIndex { references } +references.proceedings @SubIndex { @Code Proceedings reference type } +proceedings.references @Index { @Code "Proceedings" reference type } may have an @Code "@Organization" or @Code "@Institution" option for the sponsoring organization if you wish, and the author will either be absent or an editor: @@ -190,27 +197,31 @@ There is no option specifically for editors, translators, and so forth. @PP @Code PhDThesis is very similar again, with @Code "@Institution" -phdthesis.ref.type @Index { @Code PhDThesis reference type } +references. @RawIndex { references } +references.phdthesis @SubIndex { @Code PhDThesis reference type } +phdthesis.references @Index { @Code "PhDThesis" reference type } instead of {@Code "@Publisher"}, and the phrase `Ph.D. thesis' appearing by magic in the right spot. Like all words and phrases introduced automatically by Lout, it will be translated into the current language if this is not English. @PP Moving now to the second broad category, here is a typical {@Code TechReport}: -techreport.ref.type @Index { @Code TechReport reference type } -@ID @OneRow @Code { -"{ @Reference" -" @Tag { christofides1976tsp }" -" @Type { TechReport }" -" @Author { Christofides, N. }" -" @Title { Worst-case analysis of a new heuristic" -"for the travelling salesman problem }" -" @Number { 388 }" -" @Institution { Graduate School of Industrial" -"Administration, Carnegie-Mellon University }" -" @Address { Pittsburgh, PA }" -" @Year { 1976 }" -"}" +references. @RawIndex { references } +references.techreport @SubIndex { @Code TechReport reference type } +techreport.references @Index { @Code "TechReport" reference type } +@ID @OneRow @Code @Verbatim { +{ @Reference + @Tag { christofides1976tsp } + @Type { TechReport } + @Author { Christofides, N. } + @Title { Worst-case analysis of a new heuristic +for the travelling salesman problem } + @Number { 388 } + @Institution { Graduate School of Industrial +Administration, Carnegie-Mellon University } + @Address { Pittsburgh, PA } + @Year { 1976 } +} } Here is the result: @ID @RefPrint christofides1976tsp @@ -220,27 +231,33 @@ @ID @Code "@TRType { Programmer's Manual }" or whatever. The phrase will be `Master's Thesis' in the current language for type {@Code MastersThesis}, and absent in type -mastersthesis.ref.type @Index { @Code MastersThesis reference type } -misc.ref.type @Index { @Code Misc reference type } +references. @RawIndex { references } +references.mastersthesis @SubIndex { @Code MastersThesis reference type } +mastersthesis.references @Index { @Code "MastersThesis" reference type } +references. @RawIndex { references } +references.misc @SubIndex { @Code Misc reference type } +misc.references @Index { @Code "Misc" reference type } {@Code Misc}. You may use the pinpointing options ({@Code "@Pinpoint"}, {@Code "@Page"}, and {@Code "@Pages"}) and {@Code "@TitleNote"}, {@Code "@Month"}, and {@Code "@Note"} in the same way as for books. @PP Journal articles are referenced by journal name, volume, number, and page(s): -article.ref.type @Index { @Code Article reference type } -@ID @OneRow @Code { -"{ @Reference" -" @Tag { kingston1993lout.design }" -" @Type { Article }" -" @Author { Jeffrey H. Kingston }" -" @Title { The design and implementation of the" -"Lout document formatting language }" -" @Journal { Software---Practice and Experience }" -" @Volume { 23 }" -" @Pages { 1001--1041 }" -" @Year { 1993 }" -"}" +references. @RawIndex { references } +references.article @SubIndex { @Code Article reference type } +article.references @Index { @Code "Article" reference type } +@ID @OneRow @Code @Verbatim { +{ @Reference + @Tag { kingston1993lout.design } + @Type { Article } + @Author { Jeffrey H. Kingston } + @Title { The design and implementation of the +Lout document formatting language } + @Journal { Software---Practice and Experience } + @Volume { 23 } + @Pages { 1001--1041 } + @Year { 1993 } +} } The result of this is @ID @RefPrint kingston1993lout.design @@ -249,25 +266,29 @@ but you may still use {@Code "@Pinpoint"}. @PP Finally, small works that appear within large works have @Code "@Author" -inbook.ref.type @Index { @Code InBook reference type } +references. @RawIndex { references } +references.inbook @SubIndex { @Code InBook reference type } +inbook.references @Index { @Code "InBook" reference type } and @Code "@Title" options for the work itself, and @Code "@InAuthor" and @Code "@InTitle" for the work that it appears within: -@ID @OneRow @Code { -"{ @Reference" -" @Tag { rieu1942intro }" -" @Type { InBook }" -" @Author { E. V. Rieu }" -" @Title { Introduction to @I { The Odyssey } }" -" @InAuthor { Homer }" -" @InTitle { The Odyssey }" -" @Publisher { Penguin }" -" @Year { 1942 }" -"}" +@ID @OneRow @Code @Verbatim { +{ @Reference + @Tag { rieu1942intro } + @Type { InBook } + @Author { E. V. Rieu } + @Title { Introduction to @I { The Odyssey } } + @InAuthor { Homer } + @InTitle { The Odyssey } + @Publisher { Penguin } + @Year { 1942 } +} } @Code "@InAuthor" would often be absent or an editor. The result is @ID @RefPrint rieu1942intro The other options are as for large works. Type @Code InProceedings is -inproceedings.ref.type @Index { @Code InProceedings reference type } +references. @RawIndex { references } +references.inproceedings @SubIndex { @Code InProceedings reference type } +inproceedings.references @Index { @Code "InProceedings" reference type } similar to {@Code InBook}. @PP A database usually has a long life, and some day it might find itself @@ -275,17 +296,17 @@ had in mind. For this reason, a truly meticulous compiler of database entries would enclose @I all language-specific options in @Code "@Language" symbols: -@ID @OneRow @Code { -"{ @Reference" -" @Tag { zimand1986size.sets.strings }" -" @Type { Article }" -" @Author { French @Language { M. Zimand } }" -" @Title { English @Language { On the topological size of sets of random strings } }" -" @Journal { German @Language { Zeitschr. f. math. Logik und Grundlagen d. Math. } }" -" @Volume { 32 }" -" @Pages { 81--88 }" -" @Year { 1986 }" -"}" +@ID @OneRow @Code @Verbatim { +{ @Reference + @Tag { zimand1986size.sets.strings } + @Type { Article } + @Author { French @Language { M. Zimand } } + @Title { English @Language { On the topological size of sets of random strings } } + @Journal { German @Language { Zeitschr. f. math. Logik und Grundlagen d. Math. } } + @Volume { 32 } + @Pages { 81--88 } + @Year { 1986 } +} } (My apologies to M. Zimand if he or she is not French.) This ensures correct hyphenation whatever the language of the document in which the diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/ref_labe lout-3.27/doc/user/ref_labe --- lout-3.26/doc/user/ref_labe Wed Sep 18 12:22:37 2002 +++ lout-3.27/doc/user/ref_labe Mon Nov 18 08:49:49 2002 @@ -5,26 +5,31 @@ @Begin @PP Lout ordinarily assigns a number to each reference, and prints this -labelled.refs @Index { labelled references } +references. @RawIndex { references } +references.labelled @SubIndex { labelled } +labelled.references @Index { labelled references } number beside the reference in the reference list and at the point(s) of citation. There is a way to make Lout use a label of your choice instead of a number for each reference. First change the following setup file options to the values shown (these options are explained in Section {@NumberOf changeref}): -@ID @OneRow @Code { -"@RefCiteLabels { @Label }" -"@RefListLabels { @Label. }" -"@RefListLabelWidth { 4.00f }" -"@RefListSortKey { @Label }" +@ID @OneRow @Code @Verbatim { +@RefCiteLabels { @Label } +@RefListLabels { @Label. } +@RefListLabelWidth { 4.00f } +@RefListSortKey { @Label } } Then make sure that every reference you cite has a {@Code "@Label"} option: -@ID @OneRow @Code { -"{ @Reference" -" @Tag { kingston1995lout.expert }" -" @Type { TechReport }" -" @Label { Kin94 }" -" ..." -"}" +references. @RawIndex { references } +references.label @SubIndex { @Code "@Label" } +label.references @Index { @Code "@Label" (references) } +@ID @OneRow @Code @Verbatim { +{ @Reference + @Tag { kingston1995lout.expert } + @Type { TechReport } + @Label { Kin94 } + ... +} } @Code "@Label" may contain several words, and even font changes, but not an arbitrary object. diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/ref_sett lout-3.27/doc/user/ref_sett --- lout-3.26/doc/user/ref_sett Wed Sep 18 12:22:37 2002 +++ lout-3.27/doc/user/ref_sett Thu Nov 21 17:10:34 2002 @@ -4,31 +4,41 @@ @Begin @PP The basic idea is to store your references in a separate -database.file @Index { database file } +references. @RawIndex { references } +references.database.files @SubIndex { database.files } +database.files.references @Index { database files of references } @I { database file }, in a form which does not include formatting details such as font changes. This makes it easy to use the same references in many documents, and it leaves the formatting to Lout. Here is an example of a reference as it would appear in a database file: -@ID @OneRow @Code { -"{ @Reference" -" @Tag { vanleunen1992 }" -" @Type { Book }" -" @Author { Mary-Claire van Leunen }" -" @Title { A Handbook for Scholars }" -" @Publisher { Oxford }" -" @Edition { Revised Edition }" -" @Year { 1992 }" -"}" +@ID @OneRow @Code @Verbatim { +{ @Reference + @Tag { vanleunen1992 } + @Type { Book } + @Author { Mary-Claire van Leunen } + @Title { A Handbook for Scholars } + @Publisher { Oxford } + @Edition { Revised Edition } + @Year { 1992 } } -reference. @Index @Code "@Reference" +} +references. @RawIndex { references } +references.reference @SubIndex { @Code "@Reference" } +reference.references @Index { @Code "@Reference" (references) } @Code "@Reference" is a symbol, and {@Code "@Tag"}, {@Code "@Type"}, {@Code "@Author"}, and so on are its options. The database file as a whole consists of a sequence of references, each enclosed in braces as shown. @PP The @Code "@Tag" option is compulsory: since you cite a reference by +references. @RawIndex { references } +references.tag @SubIndex { @Code "@Tag" } +tag.option. @RawIndex { @Code "@Tag" option } +tag.option.in.references @SubIndex { in references } giving its tag, there must be one. The @Code "@Type" option is also -type. @Index { @Code "@Type" option } +references. @RawIndex { references } +references.type @SubIndex { @Code "@Type" option } +type.references @Index { @Code "@Type" (references) } compulsory, since it says whether the reference is to a book, a journal article, or whatever, and this determines what other options are required. Section {@NumberOf entries} describes all the types provided @@ -41,7 +51,9 @@ @Code "refs.ld" and put it in the same directory as your document. Next, place @ID @Code "@Database @Reference { refs }" -database. @Index @Code "@Database" +references. @RawIndex { references } +references.database @SubIndex { @Code "@Database" } +database.references @Index { @Code "@Database" (references) } at the start of your document, just before {@Code "@Doc"}, {@Code "@Document"}, {@Code "@Report"}, or whatever. Alternatively, you may place it at the end of your setup file. It informs Lout that @@ -56,6 +68,8 @@ @PP With the database file created and the @Code "@Database" line in place, you are ready to start citing references. The first time that the +references. @RawIndex { references } +references.database.index.file @SubIndex { database index file } database.index.file @Index { database index file } index.file @Index { index file } database is used, Lout will create an @I { index file } whose purpose diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/str lout-3.27/doc/user/str --- lout-3.26/doc/user/str Wed Sep 18 12:22:38 2002 +++ lout-3.27/doc/user/str Wed Nov 20 09:09:45 2002 @@ -12,6 +12,7 @@ @Include { str_larg } @Include { str_cros } @Include { str_cont } +@Include { str_glos } @Include { str_indx } @Include { str_colu } @Include { str_defs } diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/str_colu lout-3.27/doc/user/str_colu --- lout-3.26/doc/user/str_colu Wed Sep 18 12:22:38 2002 +++ lout-3.27/doc/user/str_colu Thu Nov 21 15:58:20 2002 @@ -21,7 +21,7 @@ value 1 as shown, and @Code "@ColumnGap" may be any length (Section {@NumberOf objects}). The column width is derived from these options column.width @RawIndex { column width } -column.width.pages @SubIndex { on pages } +column.width.in.pages @SubIndex { in pages } using the obvious formula @ID @Eq { columnwidth = { pagewidth - margins - ({@Code "@ColumnNumber"} - 1) times {@Code "@ColumnGap"} } diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/str_cont lout-3.27/doc/user/str_cont --- lout-3.26/doc/user/str_cont Wed Sep 18 12:22:38 2002 +++ lout-3.27/doc/user/str_cont Thu Nov 21 17:08:54 2002 @@ -5,7 +5,7 @@ @PP Lout takes note of the titles of all your large-scale structure symbols contents. @Index { contents, tables of } -tables.of.contents. @Index { tables of contents } +tables.zzz.of.contents. @Index { tables of contents } (Section {@NumberOf largescale}) and what pages they begin on, and it uses this information to produce a table of contents like the one at the start of the present document. It is totally automatic; you do diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/str_cros lout-3.27/doc/user/str_cros --- lout-3.26/doc/user/str_cros Wed Sep 18 12:22:38 2002 +++ lout-3.27/doc/user/str_cros Thu Nov 21 21:29:51 2002 @@ -39,7 +39,6 @@ but Lout makes a note of the number of the page on which the word preceding it appears, and inserts that number in place of {@Code "@PageOf decl.of.ind"}. The tag, {@Code "decl.of.ind"}, may be -tag. @Index { tag } any simple word (actually Lout will accept a multi-word tag, but they are very inconvenient and better avoided). The braces are there, as usual, to control grouping: we don't want the following punctuation @@ -58,7 +57,7 @@ symbols, and @Code "@ListItem" and @Code "@DropListItem" (but not @Code "@TagItem" and {@Code "@DropTagItem"}). Each of these symbols has a @Code "@Tag" option: -tag.sym @Index @Code "@Tag" +tag.option. @Index { @Code "@Tag" option } @ID @OneRow @Code { "@Section" " @Title { Cross references }" @@ -88,8 +87,8 @@ } produces @QD { -"For further information on this point, please consult" -"the @TitleOf { cross } section." +For further information on this point, please consult +the @TitleOf { cross } section. } But this symbol won't work for footnotes, list items, and other things without a title. diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/str_figs lout-3.27/doc/user/str_figs --- lout-3.26/doc/user/str_figs Wed Sep 18 12:22:38 2002 +++ lout-3.27/doc/user/str_figs Thu Nov 21 10:26:01 2002 @@ -64,7 +64,7 @@ A { EvenPageTop } B { Like @Code PageTop except that the first page of the figure or table will be an even-numbered (left-hand or verso) page -- useful -for double-pace spreads. } +for double-page spreads. } @Rowa A { FullPage } B { Like {@Code PageTop} except that nothing else will appear on the @@ -269,7 +269,7 @@ @PP The @Code "@FigureCaptionFormat" option determines the format of the caption. Within it, the symbol @Code word stands for the `Figure' -word as defined by {@Code "@FigureWord"}); the @Code number +word as defined by {@Code "@FigureWord"}; the @Code number symbol stands for the number of the figure; and @Code caption stands for the body of the caption. The default value shown above prints the word and number and a period in bold, inserted together with a diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/str_glos lout-3.27/doc/user/str_glos --- lout-3.26/doc/user/str_glos Thu Jan 1 10:00:00 1970 +++ lout-3.27/doc/user/str_glos Fri Nov 22 09:21:06 2002 @@ -0,0 +1,209 @@ +@Section + @Title { Glossaries } + @Tag { glossaries } +@Begin +@PP +A glossary +@FootNote { +The features described in this section are closely based on a +design by Thorsten Seitz. } +is a section at the end of a document containing terms +and their definitions, with a reference back to the page of the +document where each term is first used. It's similar to an index, +except that there are fewer entries and they are longer and more +spaced out -- for reading rather than just reference. +@PP +In order to get a glossary, you have to be using either the @Code book +or @Code report setup file, and you have to make your own copy of +the setup file (as described in Section {@NumberOf setup}) and change +the @Code "@MakeGlossary" option within it to {@Code "Yes"}. Lout +does not insert a glossary automatically. The glossary will appear +at the end of the document, immediately before any index. +@PP +To make an entry in the glossary, place something like this in +your main text at the point you are defining the term: +@ID @Code @Verbatim { +Object @Glossary { +Part of a document occupying a rectangular area; +may be a simple word, or a collection of smaller +objects composed in arbitrary ways. +} +} +The object to the left of @Code "@Glossary" is the term being defined, +and the object to the right is its definition. Nothing will appear +in the main text where you put this, but the term will appear in the +glossary, accompanied by its definition and the page number of this spot. +@PP +The term should be just a word or a short sequence of words. The +definition may be as long and complex as you wish, containing +paragraphs, displays, and so on. +@PP +The glossary items will appear sorted alphabetically. You can use +the @Code "sortkey" option of @Code "@Glossary" to provide a separate +sorting key: +@ID @Code @Verbatim { +{@Char florin} @Glossary sortkey { florin } { +The florin character. +} +} +This entry will appear in the list where things beginning with +@Code f do, not where the @Code florin character code would +place it. If you do this, since the term being defined is no +longer used as a sort key it is free to be an arbitrary object, not +restricted to be a word or a short sequence of words. +@PP +Creating a glossary entry does not automatically create an index +entry (Section {@NumberOf indexes}). If you want an index entry +for your glossary term as well (as you probably will) you need to +make that separately, and you will need to use a different tag +from the tag used by the glossary entry (which is either the term +being defined, or @Code sortkey if given). To make an index entry +that points into the actual glossary, which you also probably need, +just place your index entry somewhere inside the definition. +@PP +In your main text you may want to indicate to the reader that +some word or phrase appears in the glossary. For that there +is the @Code "@InGlossary" symbol: +@ID @Code "... where you can put one @InGlossary { object } ..." +The thing between braces does not actually have to be in the +glossary; @Code "@InGlossary" usually just changes the font, +by default to small capitals, and it does not change anything +unless @Code "@MakeGlossary" is {@Code Yes}. +@PP +The remainder of this section explains how to change the appearance +of the printed glossary, by setting options in the setup file. For +a general introduction to setup files and their options, see +Section {@NumberOf setup}; here we just explain how the particular +options relating to glossaries work. +@PP +Most of the glossary options appear within the @Code "@DocumentSetup" +@Code "@Use" clause. Here they are (except {@Code "@GlossaryFormat"} +which we'll discuss in a moment) with their default values: +@ID @Code @OneRow @Verbatim { +@MakeGlossary { No } +@GlossaryText { @Null } +@GlossaryFont {} +@GlossaryBreak {} +@GlossaryGap { @DisplayGap } +@GlossaryColumnNumber{ 2 } +@GlossaryColumnGap { 1.00c @OrIfPlain 6s } +@InGlossaryFont { smallcaps } +@InGlossaryFormat { @Body } +} +First comes {@Code "@MakeGlossary"}, which determines whether to +make a glossary, as we know. +@PP +{@Code "@GlossaryText"} is some arbitrary text that will be +placed before the first entry of the glossary. You can also +give this option to the @Code "@Book" and @Code "@Report" symbols, +and that would probably be the best place since such text is +usually part of the document content, not the setup. +@PP +@Code "@GlossaryFont" and @Code "@GlossaryBreak" are font and +break style options which are applied to each glossary entry. The +default values don't change the font or break style at all. +@PP +@Code "@GlossaryGap" determines the vertical separation between +one glossary entry and the next. You can give any length +(Section {@NumberOf objects}) here; the default is the gap used +around displays. +@PP +@Code "@GlossaryColumnNumber" and @Code "@GlossaryColumnGap" +determine the number of columns on glossary pages, and the +width of the gap between them. By default you get two columns +per page and a one centimetre gap (or six spaces in plain text +output), as for indexes (Section {@NumberOf indexes}). +@PP +@Code "@InGlossaryFont" and @Code "@InGlossaryFormat" determine +the appearance of the result of the @Code "@InGlossary" symbol. The +first changes the font; the second allows for more radical +formatting. Within it, {@Code "@Body"} stands for the object +following the {@Code "@InGlossary"} object, and you can do +anything you like with it here. For example, +@ID @Code "@InGlossaryFormat { @CurveBox @Body }" +would cause @Code "@InGlossary" to enclose the following +object in a curvebox (which would look horrible, of course). +The default values change to small capitals but nothing more. +@PP +{@Code "@GlossaryFormat"}, which we omitted earlier because +it is more complex, determines the format of each glossary +entry. Here it is with its default value: +@ID @OneRow @Code @Verbatim { +@GlossaryFormat { + +3p @Font @S @Name @Right @I { @Word&&page @PageNum } + @DP + @RawIndentedDisplay @Body +} +} +We'll go through this bit by bit. +@PP +First, the value of the option is longer than usual so we have +spread it over three lines. There is nothing significant in +this; end of line is the same as a space to Lout, and we've +used three lines just to show the value clearly. +@PP +Within @Code "@GlossaryFormat" three symbols are made +available specially: +@QD @OneRow @Tbl + aformat { @Cell @Code A | @Cell B } +{ +@Rowa + A { "@Name" } + B { Will be replaced by the term being defined } +@Rowa + A { "@PageNum" } + B { Will be replaced by the number of the page of the +spot where the @Code "@Glossary" symbol is placed } +@Rowa + A { "@Body" } + B { Will be replaced by the definition } +} +Now let's look at what the default format does. The first bit, +@ID @Code "+3p @Font @S @Name" +produces the term being defined, three points larger than would +have been the case otherwise, and in small capitals. The +@Code "@Right" symbol causes what follows it to appear at the +far right, so +@ID @Code "@I { @Word&&page @PageNum }" +will appear at the right of the column on the same line as +the term. The value of {@Code "@Word&&page"} is just +{@Code page} in the current language, and @Code "@PageNum" is a +page number as we know, so this produces something like +@ID @I { page 143 } +at the right. After that we have {@Code "@DP"} which leaves +a display-sized vertical gap, then the body appears in an +indented display, made Raw so that there is no trailing +vertical space. +@PP +You can change this option to anything you like. For example, +suppose you prefer bold to small capitals, you want the page number +in parentheses after the term, and you want each entry to be +kept together in one column: +@ID @OneRow @Code @Verbatim { +@GlossaryFormat { + @OneRow { + @B @Name (@I { @Word&&page @PageNum }) + @DP + @RawIndentedDisplay @Body + } +} +} +And so on. +@PP +There are a few more setup file options for glossaries, to be found +in the {@Code "@BookSetup"} or {@Code "@ReportSetup"} @Code "@Use" +clause of the setup file. Here they are with their default values: +@ID @OneRow @Code @Verbatim { +@GlossaryWord { glossary } +@GlossaryInContents { Yes } +@GlossaryPrefix {} +} +The first determines the word that will be used as the title of +the glossary. The default value shown produces {@Code Glossary} +in English and its equivalent in other languages. You could change +it, for example, to +@ID @Code "@GlossaryWord { List of Definitions }" +@Code "@GlossaryInContents" determines whether the glossary will +be listed in the table of contents if there is one; and +@Code "@GlossaryPrefix" is used by structure page numbers. +@End @Section diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/str_indx lout-3.27/doc/user/str_indx --- lout-3.26/doc/user/str_indx Wed Sep 18 12:22:38 2002 +++ lout-3.27/doc/user/str_indx Fri Nov 22 09:21:35 2002 @@ -34,6 +34,7 @@ @ID @Code "galileo @Index { Galileo Galilei }" at the point where you mention Galileo. Nothing will be printed there, but the object following the @Code "@Index" symbol will be placed in +index.sym @Index { @Code "@Index" symbol } the index, with a comma and the correct page number appended automatically. @PP @@ -53,6 +54,8 @@ If the sorting you get turns out to be not what you expected, the first thing to try is the replacement of all accented letters in index keys by unaccented ones. Sorting is quite an intractable problem: even +collation.order @Index { collation order } +sorting.order @Index { sorting order } if @Code "strcoll()" gets the sorting right for one language, there still remains the problem of sorting multilingual indexes. @PP @@ -70,36 +73,15 @@ @PP Our first trick, raw entries (no page number attached), is very easy: just use @Code "@RawIndex" instead of {@Code "@Index"}. So the +rawindex.sym @Index { @Code "@RawIndex" symbol } first line of our ambitious example is obtained by @ID @Code "galileo @RawIndex { Galileo Galilei }" This could go anywhere, since no page numbers are involved. @PP -Another use for @Code "@RawIndex" is to get blank lines into the index -between the letters of the alphabet, by inserting phantom entries: -@ID @OneRow @Code { -"b @RawIndex {}" -"c @RawIndex {}" -"d @RawIndex {}" -"..." -"z @RawIndex {}" -} -In fact there is a symbol called @Code "@IndexBlanks" that makes -indexblanks. @Index @Code "@IndexBlanks" -exactly these 25 entries. Unfortunately, these blanks will occasionally -appear at the top of a column, and if there are no tags beginning with -x, for example, there will be two blank lines between the w and y -entries. You can start off with @Code "@IndexBlanks" and replace it -later by the appropriate subset, if necessary. -@FootNote { -For Lout to solve this problem automatically, it would need to be told -which letter each index entry belongs under, perhaps by symbols -{@Code "@AIndex"}, {@Code "@BIndex"}, etc. The author felt that this -would have been too tedious. -} -@PP Our second trick, sub-entries, is also very easy, since a sub-entry differs from an ordinary entry only by having an indent. The symbol is {@Code "@SubIndex"}, so the second line of our ambitious example is +subindex.sym @Index { @Code "@SubIndex" symbol } produced by @ID @Code "galileo.life @SubIndex { life of }" You should always give sub-entries the same sorting key as their @@ -250,22 +232,84 @@ is complete and an overall plan of the structure of the index can be made. @PP +Large indexes may benefit from {@I spacers} -- empty spaces or +spacers. @Index { spacers in indexes } +even headings between the parts for each letter of the alphabet. One +simple way to get blank line spacers is with {@Code "@RawIndex"}, +like this: +@ID @OneRow @Code { +"b @RawIndex {}" +"c @RawIndex {}" +"d @RawIndex {}" +"..." +"z @RawIndex {}" +} +These phantom entries will insert blank lines before the region of each +English letter except `a'. In fact there is a symbol called +@Code "@IndexBlanks" that makes +indexblanks. @Index @Code "@IndexBlanks" +exactly these 25 entries. Unfortunately, these blanks will occasionally +appear at the top of a column, and if there are no tags beginning with +x, for example, there will be two blank lines between the w and y +entries. You can start off with @Code "@IndexBlanks" and replace it +later by the appropriate subset, if necessary. +@FootNote { +For Lout to solve this problem automatically, it would need to be told +which letter each index entry belongs under, perhaps by symbols +{@Code "@AIndex"}, {@Code "@BIndex"}, etc. The author felt that this +would have been too tedious. +} +@PP +A more elaborate kind of spacer can be placed into the index with +indexspacer. @Index @Code "@IndexSpacer" +the @Code "@IndexSpacer" symbol, like this: +@ID @Code "a @IndexSpacer A" +This is roughly equivalent to @Code "a @RawIndex A" in that it puts +the entry @Code A at sort position {@Code a}; but it also places +extra space above and below it, and it includes a font change, so +that the @Code A stands out like a heading (you can see the effect +in the index of this document). @Code "@IndexSpacer" also includes +a conditional new page effect, so that the spacer never appears +alone at the bottom of a column. +@PP +You need to change things slightly for the first spacer: +initialindexspacer. @Index @Code "@InitialIndexSpacer" +@ID @Code "a @InitialIndexSpacer A" +to tell Lout to omit the unwanted space above it. There is an +@Code "@IndexLetters" symbol which places the 26 spacers +indexletters. @Index @Code "@IndexLetters" +@ID @OneRow @Code @Verbatim { +a @InitialIndexSpacer A +b @IndexSpacer B +... +z @IndexSpacer Z +} +into your document for you in one go. Users of other alphabets are +recommended to define a similar symbol of their own. +@PP The remainder of this section describes how to change the appearance of the index by setting options in the setup file. For setup files and their options in general, consult Section {@NumberOf setup}. @PP -There are eight setup file options for the index. Here they are with +There are several setup file options for the index. Here they are with their default values: @ID @OneRow @Code @Verbatim { @MakeIndex { No } @IndexText { @Null } @IndexFont { } @IndexBreak { oragged 1.2fx } +@IndexFormat { @Body } +@SubIndexFormat { {1f @Wide}@Body } +@SubSubIndexFormat { {2f @Wide}@Body } @IndexColumnNumber { 2 } @IndexColumnGap { 1.00c } @IndexCtd { Yes } @IndexCtdWord { continued } @IndexCtdFormat { @Body @I (@CtdWord) } +@IndexSpacerAbove { 2v } +@IndexSpacerBelow { 1v } +@IndexSpacerFont { +3p } +@IndexSpacerFormat { @Body } } The @Code "@MakeIndex" option, which may be @Code Yes or {@Code No}, makeindex. @Index @Code "@MakeIndex" @@ -288,6 +332,22 @@ paragraph breaking style applied to index entries; @Code oragged is the traditional and best way. @PP +@Code "@IndexFormat" allows a more radical control of the appearance +indexformat. @Index @Code "@IndexFormat" +of the index entry than just its font and break style. Within it, +the @Code "@Body" symbol stands for the entry, not including any page +numbers. The default value just leaves the index entry as is, but the +corresponding options for formatting subindexes ({@Code "@SubIndexFormat"} +and {@Code "@SubSubIndexFormat"}) are more interesting: +@ID @Code "@SubIndexFormat { {1f @Wide}@Body }" +causes subindexes to begin with an indent of width {@Code 1f}, +immediately followed by the entry. For more information about +lengths like {@Code 1f}, see Section {@NumberOf objects}. Another +possible format is +@ID @Code "@SubIndexFormat { -- @Body }" +which causes the subindex to begin with an en-dash and two spaces +instead of an indent. +@PP @Code "@IndexColumnNumber" and @Code "@IndexColumnGap" determine the indexcolumnnumber. @Index @Code "@IndexColumnNumber" indexcolumngap. @Index @Code "@IndexColumnGap" @@ -295,12 +355,27 @@ exactly analogous to the @Code "@ColumnNumber" and @Code "@ColumnGap" options described in Section {@NumberOf columns}. @PP -The last three options work together to control the appearance of +The next three options work together to control the appearance of running headers @FootNote { -Index running headers are new in Version 3.19 of Lout. +Index running headers are new in Version 3.19 of Lout. Owing to problems +behind the scenes, if more than three copies of the same running header +appear on the same page, their horizontal positions will become confused, +probably resulting in the apparent disappearance of all but the last +three. Of course, this is highly unlikely to happen, since it means there +must be a four-column index with a page on which all four columns have +the same running header. +} +in the index: +indexctd. @Index { @Code "@IndexCtd" } +indexctdword. @Index { @Code "@IndexCtdWord" } +indexctdformat. @Index { @Code "@IndexCtdFormat" } +@ID @OneRow @Code @Verbatim { +@IndexCtd { Yes } +@IndexCtdWord { continued } +@IndexCtdFormat { @Body @I (@CtdWord) } } -in the index. If an @Code "@Index" entry has @Code "@SubIndex" entries +If an @Code "@Index" entry has @Code "@SubIndex" entries that run over to the next column, Lout will print an unobtrusive running header at the top of that column, something like this in English: @ID { procrastination @I (ctd.) } @@ -314,14 +389,50 @@ want some other word, change that option to the word you want. Finally, you can control the format of the running headers using {@Code "@IndexCtdFormat"}. Within this option, the symbol @Code "@Body" -stands for the value of the index entry that is running over (minus any -page numbers), and @Code "@CtdWord" stands for the word produced by the -@Code "@IndexCtdWord" option. The default value of {@Code "@IndexCtdFormat"}, -shown above, yields the index entry followed by @Code "@IndexCtdWord" in +stands for the value of the index entry that is running over (as formatted +by {@Code "@IndexFormat"}, {@Code "@SubIndexFormat"}, or +{@Code "@SubSubIndexFormat"} but without any page numbers), and +@Code "@CtdWord" stands for the word produced by the @Code "@IndexCtdWord" +option. The default value of {@Code "@IndexCtdFormat"}, shown above, +yields the index entry followed by @Code "@IndexCtdWord" in italics and parentheses. @PP +Finally, we have four options to control the appearance of index +spacers: +indexspacerabove. @Index { @Code "@IndexSpacerAbove" } +indexspacerbelow. @Index { @Code "@IndexSpacerBelow" } +indexspacerfont. @Index { @Code "@IndexSpacerFont" } +indexspacerformat. @Index { @Code "@IndexSpacerFormat" } +@ID @OneRow @Code @Verbatim { +@IndexSpacerAbove { 2v } +@IndexSpacerBelow { 1v } +@IndexSpacerFont { +3p } +@IndexSpacerFormat { @Body } +} +@Code "@IndexSpacerAbove" and @Code "@IndexSpacerBelow" determine the +amount of extra space to insert above and below index spacers (except +that {@Code "@InitialIndexSpacer"} uses @Code {0v} for its above space). Any +lengths from Section {@NumberOf objects} are acceptable here; the default +lengths shown are two times and one times the current inter-line +spacing. @Code "@IndexSpacerFont" may contain any font change acceptable +to the {@Code "@Font"} symbol; the default increases the size by 3 +points. For more radical changes to the spacer format, +@Code "@IndexSpacerFormat" allows any symbols to be applied to the +spacer object, which is represented by the symbol @Code "@Body" within +this option. For example, +@ID @Code "@IndexSpacerFormat { @Underline @Body }" +will cause the spacer to be underlined. +@PP +The @Code "@IndexSpacer" symbol has {@Code above}, {@Code below}, +{@Code font}, and {@Code format} options which override the four +setup file options. For example, @Code "@InitialIndexSpacer" is +equivalent to +@ID @Code "@IndexSpacer above { 0v }" +Whether you will ever need to vary the appearance of index spacers +individually in this way is very doubtful, but the capacity is there. +@PP Lout offers the possibility of having up to three independent indexes -(useful for glossaries, author indexes, etc.). The other two are called +(useful for author indexes, etc.). The other two are called index A and index B, and they precede the main index in the output. Just replace @Code Index by @Code IndexA to refer to index A, and by @Code IndexB to refer to index B. For example, diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/str_list lout-3.27/doc/user/str_list --- lout-3.26/doc/user/str_list Wed Oct 9 08:28:43 2002 +++ lout-3.27/doc/user/str_list Thu Nov 21 21:49:15 2002 @@ -8,13 +8,13 @@ list. @Index @Code "@List" l. @Index @Code "@L" made into a displayed list: -@ID @OneRow @Code { -"preceding text" -"@List" -"@ListItem @I Emma" -"@ListItem @I { Mansfield Park }" -"@EndList" -"following text" +@ID @OneRow @Code @Verbatim { +preceding text +@List +@ListItem @I Emma +@ListItem @I { Mansfield Park } +@EndList +following text } After the initial @Code "@List" symbol, each item is introduced by list.item. @Index @Code "@ListItem" @@ -51,13 +51,13 @@ @Code "@NumberedList" causes the items to be numbered: numberedlist. @Index @Code "@NumberedList" nl. @Index @Code "@NL" -@ID @OneRow @Code { -"@Heading { Quiz }" -"@NumberedList" -"@ListItem { Which American statesman owned a two-storey clock? }" -"@ListItem { Which Yankee commander from the Civil War cut a" -"swathe of destruction through the State of Georgia? }" -"@EndList" +@ID @OneRow @Code @Verbatim { +@Heading { Quiz } +@NumberedList +@ListItem { Which American statesman owned a two-storey clock? } +@ListItem { Which Yankee commander from the Civil War cut a +swathe of destruction through the State of Georgia? } +@EndList } has result @ID @OneRow { @@ -146,18 +146,18 @@ ti. @Index @Code "@TI" {@Code "@ListItem"}. Since such labels tend to be quite wide, there are @Code "@WideTaggedList" and @Code "@VeryWideTaggedList" symbols -widetaggedlist @Index @Code "@WideTaggedList" +widezzztaggedlist @Index @Code "@WideTaggedList" wtl. @Index @Code "@WTL" verywidetaggedlist @Index @Code "@VeryWideTaggedList" vwtl. @Index @Code "@VWTL" which leave extra space for them: -@ID @OneRow @Code { -"@WideTaggedList" -"@TagItem { 9 a.m. } { Breakfast in the Ipamena Lounge," -"served with Irish coffee and fresh croissants. }" -"@TagItem { 10 a.m. } { Prof. A. Smith" -"speaks on `The Wealth of Nations.' }" -"@EndList" +@ID @OneRow @Code @Verbatim { +@WideTaggedList +@TagItem { 9 a.m. } { Breakfast in the Ipamena Lounge, +served with Irish coffee and fresh croissants. } +@TagItem { 10 a.m. } { Prof. A. Smith +speaks on `The Wealth of Nations.' } +@EndList } Each @Code "@TagItem" symbol is followed by the desired label between braces, and then the item proper. The label may be empty, but still its @@ -197,15 +197,15 @@ raw.end.list. @Index @Code "@RawEndList" @Code "@EndList" has a raw version which omits the following space. These are mainly used when an item is itself a list: -@ID @OneRow @Code { -"@ParenNumberedList" -"@ListItem {" -" @RawParenRomanList" -" @ListItem { MV Nominees," -"hereinafter called the vendor, ... }" -" @RawEndList" -"}" -"@EndList" +@ID @OneRow @Code @Verbatim { +@ParenNumberedList +@ListItem { + @RawParenRomanList + @ListItem { MV Nominees, +hereinafter called the vendor, ... } + @RawEndList +} +@EndList } produces @ID @OneRow { @@ -242,12 +242,12 @@ @PP Another special list item is {@Code "@ListInterruptItem"}. This prints its content without any numbering or formatting: -@ID @OneRow @Code { -"@NumberedList" -"@ListItem { This is the first list item. }" -"@ListInterruptItem { This is an interruption to the list. }" -"@ListItem { This is the second list item. }" -"@EndList" +@ID @OneRow @Code @Verbatim { +@NumberedList +@ListItem { This is the first list item. } +@ListInterruptItem { This is an interruption to the list. } +@ListItem { This is the second list item. } +@EndList } produces @ID @OneRow { @@ -273,15 +273,15 @@ described in this section are derived from the two basic ones, @Code "@List" and {@Code "@RawList"}, merely by setting options. Here are all the options, together with their default values: -@ID @OneRow @Code { -"@List" -" type { num }" -" style { num }" -" labelwidth { 2f }" -" indent { 0c }" -" rightindent { 0c }" -" gap { 1v }" -" start { 1 }" +@ID @OneRow @Code @Verbatim { +@List + type { num } + style { num } + labelwidth { 2f } + indent { 0c } + rightindent { 0c } + gap { 1v } + start { 1 } } These options may be used with all of the list and raw list symbols, except that some combinations don't make sense, for example @Code "indent" @@ -295,14 +295,14 @@ being replaced by the number (in Arabic, Roman, etc. as determined by the @Code "type" option) of the item. For example, @Code "@ParenNumberedList" is just -@ID @OneRow @Code { -"@List" -" style { (num) }" +@ID @OneRow @Code @Verbatim { +@List + style { (num) } } and @Code "@BulletList" is just -@ID @OneRow @Code { -"@List" -" style { @Bullet }" +@ID @OneRow @Code @Verbatim { +@List + style { @Bullet } } with @Code "num" not mentioned since no number is wanted. The @Code "@TaggedList" symbol and its variants also have the @@ -336,9 +336,9 @@ @PP The @Code "start" option is the number assigned to the first item. It must be decimal: -@ID @OneRow @Code { -"@ParenRomanList" -" start { 25 }" +@ID @OneRow @Code @Verbatim { +@ParenRomanList + start { 25 } } looks strange, but it is the correct way to number the first item (xxv). @@ -346,18 +346,18 @@ Here is a larger example of these options in action. Setting both @Code "indent" and @Code "rightindent" to @Code "@DisplayIndent" produces an effect similar to {@Code "@QuotedDisplay"}: -@ID @OneRow @Code { -"preceding text" -"@List" -" style { @I {Item num}: }" -" indent { @DisplayIndent }" -" rightindent { @DisplayIndent }" -" labelwidth { @WideIndent }" -" start { 10 }" -"@ListItem { The vendor ... in the case of accident. }" -"@ListItem { The vendor ... adjacent to the facility. }" -"@EndList" -"following text" +@ID @OneRow @Code @Verbatim { +preceding text +@List + style { @I {Item num}: } + indent { @DisplayIndent } + rightindent { @DisplayIndent } + labelwidth { @WideIndent } + start { 10 } +@ListItem { The vendor ... in the case of accident. } +@ListItem { The vendor ... adjacent to the facility. } +@EndList +following text } The result is @ID @OneRow { @@ -387,8 +387,8 @@ by setting options called {@Code "@ListTagWidth"}, {@Code "@ListIndent"}, {@Code "@ListRightIndent"}, and {@Code "@ListGap"} in the setup file (Section {@NumberOf setup}). These default values will then apply -automatically to every list in the document unless overridden by an option, -just as the usual default values do. The setup file also has a -{@Code "@ListOuterGap"} option which determines the gap before the first -and after the last list item in non-raw lists. +to every list in the document unless overridden by an option, +just like the usual default values. The setup file also has a +{@Code "@ListOuterGap"} option which determines the gap before +the first and after the last list item in non-raw lists. @End @Section diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/str_marg lout-3.27/doc/user/str_marg --- lout-3.26/doc/user/str_marg Wed Sep 18 12:22:38 2002 +++ lout-3.27/doc/user/str_marg Wed Oct 30 16:43:50 2002 @@ -86,7 +86,7 @@ page is provided by the @Code "@Place" symbol: @ID @OneRow @Code { "@Place" -" x { right - 1 cm - xsize }" +" x { right - 1c - xsize }" " y { { foot + top } / 2 }" "{" " @Box { Hello }" @@ -97,15 +97,15 @@ centimetre from the right edge of the page, and whose @I y (vertical) position is halfway up & @Place - x { right - 1 cm - xsize } + x { right - 1c - xsize } y { { foot + top } / 2 } { @Box { Hello } } the page. @PP -In addition to numbers, Lout lengths (Section {@NumberOf objects}), -and Diag lengths (Section {@NumberOf dia_summ}), the following symbols +In addition to numbers, with or without units of measurement +(Section {@NumberOf objects}), the following symbols may be used inside the @Code "x" and @Code "y" options: @ID @Tab @Fmta { @Col @Code A ! @Col B } diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/tbl lout-3.27/doc/user/tbl --- lout-3.26/doc/user/tbl Wed Sep 18 12:22:37 2002 +++ lout-3.27/doc/user/tbl Sat Nov 2 08:50:21 2002 @@ -38,7 +38,7 @@ @BeginSections @Include { tbl_intr } # introduction -@Include { tbl_cell } # basic cell formatting: font, break, width, paint +@Include { tbl_cell } # cell formatting: font, break, width, paint @Include { tbl_rows } # row formats and the @Row symbol @Include { tbl_rule } # rules @Include { tbl_marg } # margins diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/tbl_alig lout-3.27/doc/user/tbl_alig --- lout-3.26/doc/user/tbl_alig Wed Sep 18 12:22:37 2002 +++ lout-3.27/doc/user/tbl_alig Thu Nov 14 07:50:48 2002 @@ -4,6 +4,8 @@ @Begin @PP Columns of numbers are often presented with decimal points aligned: +tables. @RawIndex { tables } +tables.aligned @SubIndex { aligned columns } aligned.columns @Index { aligned columns in tables } @CD @OneRow @Tbl marginvertical { 0.5vx } diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/tbl_cell lout-3.27/doc/user/tbl_cell --- lout-3.26/doc/user/tbl_cell Wed Sep 18 12:22:37 2002 +++ lout-3.27/doc/user/tbl_cell Thu Nov 21 21:32:02 2002 @@ -4,7 +4,18 @@ @Begin @PP The @Code "@Cell" symbol offers a few options for changing the appearance -cell.option @Index { cell options in tables } +tables. @RawIndex { tables } +tables.paint @SubIndex { @Code "paint" option } +paint. @RawIndex { @Code "paint" option } +paint.in.tables @SubIndex { in tables } +tables. @RawIndex { tables } +tables.font @SubIndex { @Code "font" option } +font.option. @RawIndex { @Code "font" option } +font.option.in.tables @SubIndex { in tables } +tables. @RawIndex { tables } +tables.break @SubIndex { @Code "break" option } +break. @RawIndex { @Code "break" option } +break.tables @SubIndex { in tables } of entries placed in it. Like all options, these appear immediately after the @Code "@Cell" symbol, with their values in braces: @ID @OneRow @Code @Verbatim { @@ -29,9 +40,61 @@ } with a light grey background, Italic font, and @Code "clines" paragraph breaking style. The paint colour -may be any colour from Section {@NumberOf colour}. Another option, -{@Code background}, allows an arbitrary object to be placed in the -background of the cell, in front of any paint but behind the entry. +may be any colour from Section {@NumberOf colour}. +@PP +Wherever there is a @Code paint option in the standard packages, there +is a neighbouring @Code texture option, which causes the paint to be +tables. @RawIndex { tables } +tables.texture @SubIndex { @Code "texture" option } +texture.option. @RawIndex { @Code "texture" option } +texture.option.in.tables @SubIndex { in tables } +applied according to a given texture. For a list of available +textures, consult Section {@NumberOf textures}; for how the @Code texture +option works, consult the description of the @Code texture option to the +@Code "@Box" symbol in Section {@NumberOf boxes} (all @Code texture +options work in the same way). Here's an example: +@ID @OneRow @Code @Verbatim { +@Tbl + width { 2f } + height { 2f } + aformat { +@Cell paint { black } texture { brickwork } A | @Cell B | +@Cell paint { black } texture { brickwork } C | @Cell D } + bformat { +@Cell A | @Cell paint { black } texture { brickwork } B | +@Cell C | @Cell paint { black } texture { brickwork } D } +{ +@Rowa +@Rowb +@Rowa +@Rowb +} +} +produces +@FootNote { If you can't see any textures here, the fault is probably +with your PostScript viewer. See Section {@NumberOf textures}. } +@CD @OneRow +@Tbl + width { 2f } + height { 2f } + aformat { +@Cell paint { black } texture { brickwork } A | @Cell B | +@Cell paint { black } texture { brickwork } C | @Cell D } + bformat { +@Cell A | @Cell paint { black } texture { brickwork } B | +@Cell C | @Cell paint { black } texture { brickwork } D } +{ +@Rowa +@Rowb +@Rowa +@Rowb +} +Another option, {@Code background}, allows an arbitrary object to be +tables. @RawIndex { tables } +tables.background @SubIndex { @Code "background" option } +background.tables @Index { @Code "background" option (tables) } +placed in the background of the cell, in front of any paint but behind +the entry. @PP Later sections introduce other @Code "@Cell" options, for fixed-width columns, indented entries, margins, and rules. It is also @@ -92,6 +155,6 @@ table in the document. When a more general setting of an option is contradicted by a more specific setting (e.g. when @Code "@Tbl" has @Code "paint { lightgrey }" but some cell or row has -{@Code "paint { nopaint }"}), the more specific setting applies. For a +{@Code "paint { none }"}), the more specific setting applies. For a precise description, see Section {@NumberOf tbl_summ}. @End @Section diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/tbl_inde lout-3.27/doc/user/tbl_inde --- lout-3.26/doc/user/tbl_inde Wed Sep 18 12:22:37 2002 +++ lout-3.27/doc/user/tbl_inde Thu Nov 21 21:28:00 2002 @@ -5,6 +5,9 @@ @PP By default, entries appear at the left within cells, not counting the cell margin. The @Code indent option causes entries to be indented +tables. @RawIndex { tables } +tables.indent @SubIndex { @Code "indent" option } +indent.tables @Index { @Code "indent" option (tables) } horizontally. For example, @ID @OneRow @Code "@Cell indent { ctr }" horizontally centres the entry within the cell. Other possible values @@ -15,6 +18,9 @@ example, {@Code 2f}) meaning that much indent. @PP There is a corresponding @Code "indentvertical" option for vertical indenting +tables. @RawIndex { tables } +tables.indentvertical @SubIndex { @Code "indentvertical" option } +indentvertical.tables @Index { @Code "indentvertical" option (tables) } within the cell. It takes the same values except that @Code "left" is renamed {@Code "top"} (the default), and @Code "right" is renamed {@Code foot}. A common problem with vertical placement is that words that @@ -44,6 +50,10 @@ worries. This is because by default @Code "@Tbl" adds a @I { vertical strut } to each entry: an invisible object of zero width and height {@Code "1f"}, which covers for any absent +tables. @RawIndex { tables } +tables.strut @SubIndex { @Code "strut" option } +strut.option. @RawIndex { @Code "strut" option } +strut.option.in.tables @SubIndex { in tables } ascenders and descenders. The option @ID @OneRow @Code "@Cell strut { no }" can be used to remove the strut; other acceptable values for this @@ -51,6 +61,9 @@ add a strut of that length. @PP For completeness there is a corresponding @Code "struthorizontal" option; it +tables. @RawIndex { tables } +tables.struthorizontal @SubIndex { @Code "struthorizontal" option } +struthorizontal.tables @Index { @Code "struthorizontal" option (tables) } takes the same values, its default value is {@Code no}, and it unlikely ever to be used. @End @Section diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/tbl_intr lout-3.27/doc/user/tbl_intr --- lout-3.26/doc/user/tbl_intr Wed Sep 18 12:22:37 2002 +++ lout-3.27/doc/user/tbl_intr Thu Nov 14 07:34:47 2002 @@ -31,7 +31,9 @@ start. @PP To begin with a very simple example, the table -tbl. @Index @Code "@Tbl" +tables. @RawIndex { tables } +tables.tbl @SubIndex { @Code "@Tbl" } +tbl.tables @Index { @Code "@Tbl" (tables) } @CD @Tbl aformat { @Cell A | @Cell B | @Cell C } @@ -70,7 +72,16 @@ } Immediately after the @Code "@Tbl" symbol, which introduces the table, comes a @I { format option }, {@Code "aformat"}, describing the format of +tables. @RawIndex { tables } +tables.aformat @SubIndex { @Code "aformat" option } +aformat.tables @Index { @Code "aformat" option (tables) } +tables. @RawIndex { tables } +tables.format @SubIndex { format of } +format.tables @Index { format of tables } each row. It says that each row contains three cells: {@Code "@Cell A"}, +tables. @RawIndex { tables } +tables.cell @SubIndex { @Code "@Cell" } +cell.tables @Index { @Code "@Cell" (tables) } {@Code "@Cell B"}, and {@Code "@Cell C"}. The format option may have up to 26 cells, with names chosen freely from the upper-case letters from @Code A to {@Code Z}. The symbol @Code "|" separates each cell from the next. @@ -78,6 +89,9 @@ After the format option comes the body of the table, enclosed in braces. It consists entirely of a sequence of rows, each introduced by a @Code "@Rowa" symbol and containing one entry for each cell of the +tables. @RawIndex { tables } +tables.rowa @SubIndex { @Code "@Rowa" } +rowa.tables @Index { @Code "@Rowa" (tables) } format option, as shown (the row may occupy any number of lines of the input file). The entries may be arbitrary Lout objects, such as words, paragraphs, equations, figures, and so on without restriction. An entry diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/tbl_marg lout-3.27/doc/user/tbl_marg --- lout-3.26/doc/user/tbl_marg Wed Sep 18 12:22:37 2002 +++ lout-3.27/doc/user/tbl_marg Thu Nov 21 21:19:30 2002 @@ -4,8 +4,10 @@ @Begin @PP The @Code "@Cell" symbol offers a @Code margin option for changing the -margins @RawIndex { margins } -margins.in.tables @SubIndex { margins in tables } +tables. @RawIndex { tables } +tables.margin @SubIndex { @Code "margin" options } +margin.options @RawIndex { margin options } +margin.options.in.tables @SubIndex { in tables } amount of margin left between the entry and the boundary of the cell: @ID @Code "@Cell margin { 0.3f }" The default values are different for horizontal and vertical margins, diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/tbl_mark lout-3.27/doc/user/tbl_mark --- lout-3.26/doc/user/tbl_mark Wed Sep 18 12:22:37 2002 +++ lout-3.27/doc/user/tbl_mark Thu Nov 14 08:08:02 2002 @@ -4,13 +4,15 @@ @Begin @PP Occasionally the vertical alignment of a table with objects to its left +tables. @RawIndex { tables } +tables.vertical.alignment @SubIndex { vertical alignment of } vertical.alignment @Index { vertical alignment of tables } and right becomes an issue. Examples are hard to find, but let's say that we need to construct a symbol @ID @AmberLight and include it in running text. The obvious first attempt at a table with three rows is -@ID @OneRow @Code @Verbatim { +@ID -1px @Break @OneRow @Code @Verbatim { @Tbl aformat { @Cell A } margin { 0i } @@ -36,10 +38,13 @@ in running text, because vertical alignment is by default through the top boundary of the table. To make the alignment pass through one of the rows, replace its @Code "@Row" symbol by a corresponding +tables. @RawIndex { tables } +tables.markrow @SubIndex { @Code "@MarkRow" symbols } +thing.tables @Index { @Code "@MarkRow" symbols (tables) } @Code "@MarkRow" symbol. Here is the revised table, enclosed in a definition for ease of use: amberlight @Index { @Code "@AmberLight" symbol } -@ID @OneRow @Code @Verbatim { +@ID -1px @Break @OneRow @Code @Verbatim { import @TblSetup def @AmberLight { diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/tbl_mult lout-3.27/doc/user/tbl_mult --- lout-3.26/doc/user/tbl_mult Wed Sep 18 12:22:37 2002 +++ lout-3.27/doc/user/tbl_mult Thu Nov 21 16:38:27 2002 @@ -4,14 +4,37 @@ @Begin @PP The tables produced by @Code "@Tbl" permit page breaks (including breaking +tables. @RawIndex { tables } +tables.multipage @SubIndex { multi-page } multi.page.tables @Index { multi-page tables } to a new column) between every two rows, except rows that have a vertically spanning cell in common. Page breaks cannot occur within rows. The choice of page breaks can either be left to Lout, or it can be forced by placing the new page symbol @Code "@NP" between two -np.tables @Index { @Code "@NP" (new page) in tables } +tables. @RawIndex { tables } +tables.np @SubIndex { @Code "@NP" (new page) in } +np. @RawIndex { @Code "@NP" (new page) } +np.in.tables @SubIndex { in tables } rows. @PP +To prevent page breaks within a table, precede the @Code "@Tbl" +symbol by {@Code "@OneRow"}: +@ID @Code "@CD @OneRow @Tbl ..." +@Code "@OneRow" is a general Lout symbol which binds the following +object into a single, unbreakable row. Make sure your table is +small enough to fit on one page when you do this, otherwise an error +message will be printed and it will be scaled to fit. Display symbols +like @Code "@CD" often have this effect anyway. +@PP +To prevent a page break between two particular rows, but not in +general, replace the @Code "@Row" symbol of the second row with +tables. @RawIndex { tables } +tables.nobreakrow @SubIndex { @Code "@NoBreakRow" symbols } +nobreakrow.tables @Index { @Code "@NoBreakRow" symbols (tables) } +the corresponding @Code "@NoBreakRow" symbol (@Code "@NoBreakRowa" +instead of {@Code "@Rowa"}, @Code "@NoBreakRowb" instead of +{@Code "@Rowb"}, and so on). +@PP Some care is needed over where to put multi-page tables. They can't go within any of the display symbols, because display symbols are not clever enough to break tables between rows, even though they are sometimes able @@ -34,14 +57,27 @@ a @Code "|" after the last cell within each {@Code format} option, creating an empty extra column. @PP -One practical problem with multi-page tables is that of getting a +One practical problem in multi-page tables is getting the rules +right. The simplest way to do this is to set @Code "rulehorizontal" +to {@Code yes}. This places a rule above every row including the +first on each page, and a rule below every row including the last +on each page. There is nothing equivalent to running headers +(described below) at the bottom of the page -- nothing that would allow +you to insert a rule after the last line of each page, but not +elsewhere. (However, if you are using the @Code "@Table" +symbol, its @Code "@Format" option can be used to do this.) +@PP +Another practical problem with multi-page tables is that of getting a heading over every page after the first. This is easy if you know where the page breaks are going to fall (if you are using {@Code "@NP"}, for example), but you usually don't. To solve this problem, @Code {"@Tbl"} offers the @Code "@HeaderRowa" ... @Code "@HeaderRowh" and +tables. @RawIndex { tables } +tables.headerrow @SubIndex { @Code "@HeaderRow" symbols } +headerrow.tables @Index { @Code "@HeaderRow" symbols (tables) } @Code "@EndHeaderRow" symbols. For example, the multi-page table in Section {@NumberOf tbl_summ} is arranged like this: -@ID @OneRow @Code @Verbatim { +@ID -1px @Break @OneRow @Code @Verbatim { @Tbl ... { @@ -59,7 +95,7 @@ rulebelow { yes } @Rowa A { paint p } - B { nopaint } + B { none } D { any colour from Section {@NumberOf colour} } ... @Rowa @@ -70,24 +106,22 @@ @EndHeaderRow } } -where we have omitted a lot of irrelevant things. @Code "@HeaderRowd" -is exactly like {@Code "@Rowd"}, except that the row is not printed at -all where it occurs; instead, it is saved up and used as a running header -on subsequent pages. +@Code "@HeaderRowd" is exactly like {@Code "@Rowd"}, except that the row is +not printed at all where it occurs; instead, it is saved up and used as a +running header on subsequent pages. @PP The @Code "@EndHeaderRow" symbol goes where a @Code "@Row" symbol might go. Notice that it does not end with a letter between {@Code a} and -{@Code h}, and that it has no options. Its meaning is that the most -recent running header is not wanted on pages after this point: in other -words, it cancels the previous @Code "@HeaderRowa" ... @Code "@HeaderRowh" -symbol. Forgetting @Code "@EndHeaderRow" is disastrous, because every page -from this point on will then have the running header, even though the table -ended long before. +{@Code h}, and that it has no options. Its effect is to cancel the +closest preceding @Code "@HeaderRowa" ... @Code "@HeaderRowh" symbol. +If you forget it, the result is bizarre: the header row will remain +in effect, and then every page from this point on will have the running +header, even though the table ended long before. @PP There may be any number of header rows saved up at any moment, all to be printed at the top of subsequent pages. Having @Code "@EndHeaderRow" -allows them to be `nested.' For example, just schematically, -@ID @OneRow @Code @Verbatim { +allows them to be `nested.' For example, +@ID -1px @Break @OneRow @Code @Verbatim { @HeaderRowa ... @HeaderRowb ... @EndHeaderRow @@ -97,46 +131,24 @@ } could be used in a table to say that the entire table has the first header row; and that the first part also has the second header row, -but the second part of the table has a different second header row, -but still the same first header row. +but that subsequent parts of the table have their own, different +second header row, but still the same first header row. @PP -These header symbols have some peculiarities not likely to trouble the -ordinary user, but worth pointing out. Each copy of a running header -will be identical to every other copy, so any attempt to use cross -references to add (say) page numbers to the running header is doomed to -disappointment. (If you want to change the header, use -@Code "@EndHeaderRow" followed by a new header row.) Basser Lout -copies running header rows into the table after each page break, -with no check on whether the next page has enough space to -accommodate them, so if your running headers are so high that -there is no room for ordinary rows on the page after they are -inserted, then the document will never end. Finally, header -rows are taken account of by Lout when deciding column widths, -whether they are actually printed or not. -@PP -Another practical problem in multi-page tables is getting the rules -right. The simplest way to do this is to set @Code "rulehorizontal" -to {@Code yes}. This places a rule above every row including the -first on each page, and a rule below every row including the last -on each page. There is nothing equivalent to running headers -at the bottom of the page -- nothing that would allow you to -insert a rule after the last line of each page, but not -elsewhere. (However, if you are using the @Code "@Table" -symbol, its @Code "@Format" option can be used to do this.) -@PP -To prevent page breaks within a table, precede the @Code "@Tbl" -symbol by {@Code "@OneRow"}: -@ID @Code "@CD @OneRow @Tbl ..." -@Code "@OneRow" is a general Lout symbol which binds the following -object into a single, unbreakable row. Make sure your table is -small enough to fit on one page when you do this, otherwise an error -message will be printed and it will be scaled to fit. Of course, we -said earlier that display symbols like @Code "@CD" do this anyway, -but that might change some day. -@PP -To prevent a page break between two particular rows, but not in -general, replace the @Code "@Row" symbol of the second row with -the corresponding @Code "@NoBreakRow" symbol (@Code "@NoBreakRowa" -instead of {@Code "@Rowa"}, @Code "@NoBreakRowb" instead of -{@Code "@Rowb"}, and so on). +Certain kinds of objects are not allowed in header rows, and Lout will +complain and quit if you try to put them there. Galleys +(e.g. {@Code "@FootNote"} and {@Code "@Index"}) are not allowed, nor are +cross references (e.g. {@Code "@NumberOf"} and {@Code "@PageOf"}), nor +are {@Code "@HExpand"}, {@Code "@VExpand"}, or {@Code "@Scale"} in the +form that works out its own scale factor. Spanning symbols +({@Code "@StartHSpan"}, {@Code "@StartVSpan"} etc.) work well in header +row formats, however. +@PP +Header rows have some other peculiarities, not likely to trouble +the ordinary user but worth pointing out. Header rows are taken +account of by Lout when deciding column widths, whether they are +actually printed or not. Basser Lout copies running header rows +into the table after each page break, with no check on whether the +next page has enough space to accommodate them, so if your running +headers are so high that there is no room for ordinary rows on the +page after they are inserted, then the document will never end. @End @Section diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/tbl_plai lout-3.27/doc/user/tbl_plai --- lout-3.26/doc/user/tbl_plai Wed Sep 18 12:22:37 2002 +++ lout-3.27/doc/user/tbl_plai Thu Nov 14 08:02:34 2002 @@ -4,8 +4,10 @@ @Begin @PP Tables work well with plain text output (Section {@NumberOf plain}): +tables. @RawIndex { tables } +tables.plaintext @SubIndex { plain text output } plain.text.tables @Index { plain text tables } -@CD @OneRow -1px @Break @F @Verbatim { +@CD @OneRow 0.9 @Scale 1.0fx @Break @F @Verbatim { ................................................... . . . . Johnson . Johnson suddenly uttered, in . @@ -48,7 +50,7 @@ @PP @Code "@Tbl" changes the default values of several options when used in a plain text document: -@ID @Code @Verbatim { +@ID @OneRow @Code @Verbatim { @Tbl marginvertical { 2f } marginhorizontal { 2s } @@ -62,6 +64,9 @@ {@Code "1s"}, since this avoids fractional spacing which cannot be successful in plain text files and produces quite messy results. There is also a @Code ruleplainchar option for changing the character used to +tables. @RawIndex { tables } +tables.ruleplainchar @SubIndex { @Code "ruleplainchar" option } +ruleplainchar.tables @Index { @Code "ruleplainchar" option (tables) } draw rules. For example, @ID @Code @Verbatim { @Tbl diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/tbl_rows lout-3.27/doc/user/tbl_rows --- lout-3.26/doc/user/tbl_rows Wed Sep 18 12:22:37 2002 +++ lout-3.27/doc/user/tbl_rows Thu Nov 21 17:06:37 2002 @@ -6,6 +6,8 @@ We've seen that the @Code aformat option of @Code "@Tbl" determines the format of the rows introduced by the @Code "@Rowa" symbol. There are eight row format options: {@Code aformat}, +tables. @RawIndex { tables } +tables.row.formats @SubIndex { row formats } row.formats @Index { row formats in tables } {@Code bformat}, and so on up to {@Code hformat}, and for each there is a corresponding {@Code "@Row"} symbol: {@Code "@Rowa"}, {@Code "@Rowb"}, @@ -47,6 +49,9 @@ @PP In addition to the eight @Code format options of {@Code "@Tbl"}, it is possible to specify the format of a row at the row itself, using the +tables. @RawIndex { tables } +tables.format.option @SubIndex { @Code "format" option } +format.tables @Index { @Code "format" option (tables) } @Code "@Row" symbol like this: @ID @OneRow @Code @Verbatim { @Row diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/tbl_rule lout-3.27/doc/user/tbl_rule --- lout-3.26/doc/user/tbl_rule Wed Sep 18 12:22:37 2002 +++ lout-3.27/doc/user/tbl_rule Thu Nov 14 07:42:30 2002 @@ -4,6 +4,9 @@ @Begin @PP There is a @Code "rule" option for drawing a rule around a cell: +tables. @RawIndex { tables } +tables.rule @SubIndex { @Code "rule" options } +rule.tables @Index { @Code "rule" options (tables) } @ID @OneRow @Code "@Cell rule { yes }" Other values are {@Code no} (the default), {@Code single} (the same as {@Code yes}), and {@Code double} (for a diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/tbl_setu lout-3.27/doc/user/tbl_setu --- lout-3.26/doc/user/tbl_setu Wed Sep 18 12:22:37 2002 +++ lout-3.27/doc/user/tbl_setu Thu Nov 21 21:27:01 2002 @@ -4,7 +4,10 @@ @Begin @PP All of the options apart from the @Code format options can be changed -setup.files.tables @Index { setup files for tables } +tables. @RawIndex { tables } +tables.setup @SubIndex { setup file } +setup.files. @RawIndex { setup files } +setup.files.for.tables @SubIndex { for tables } in the @Code { tbl } setup file, in which case the new values become the default values for every table in the document. This section explains how to do it. Changing options in the setup file can save a @@ -37,7 +40,7 @@ the @Code "@TblSetup" @Code "@Use" clause, which looks like this: @ID @OneRow @Code @Verbatim { @Use { @TblSetup - # paint { nopaint } + # paint { none } # font { } # break { } } @@ -48,7 +51,7 @@ surrounding text: @ID @OneRow @Code @Verbatim { @Use { @TblSetup - # paint { nopaint } + # paint { none } font { -2p } # break { } } diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/tbl_span lout-3.27/doc/user/tbl_span --- lout-3.26/doc/user/tbl_span Wed Sep 18 12:22:37 2002 +++ lout-3.27/doc/user/tbl_span Thu Nov 14 08:06:41 2002 @@ -4,10 +4,18 @@ @Begin @PP To make a cell span across several columns, precede the @Code "@Cell" +tables. @RawIndex { tables } +tables.span @SubIndex { spanning columns and rows } spanning.columns @Index { spanning columns and rows in tables } symbol with @Code "@StartHSpan" and replace each spanned cell's +tables. @RawIndex { tables } +tables.starthspan @SubIndex { @Code "@StartHSpan" option } +starthspan.tables @Index { @Code "@StartHSpan" option (tables) } @Code "@Cell" symbol with {@Code "@HSpan"}, like this: -@ID @OneRow @Code @Verbatim { +tables. @RawIndex { tables } +tables.hspan @SubIndex { @Code "@HSpan" option } +hspan.tables @Index { @Code "@HSpan" option (tables) } +@ID @OneRow -1px @Break @Code @Verbatim { @Tbl rule { yes } aformat { @StartHSpan @Cell indent { ctr } @B A | @HSpan | @HSpan } @@ -51,8 +59,14 @@ @PP Spanning rows work in the same way; the spanning cell is preceded by {@Code "@StartVSpan"}, and the spanned cells are replaced by +tables. @RawIndex { tables } +tables.startvspan @SubIndex { @Code "@StartVSpan" option } +startvspan.tables @Index { @Code "@StartVSpan" option (tables) } +tables. @RawIndex { tables } +tables.vspan @SubIndex { @Code "@VSpan" option } +vspan.tables @Index { @Code "@VSpan" option (tables) } {@Code "@VSpan"}: -@ID @OneRow @Code @Verbatim { +@ID @OneRow -1px @Break @Code @Verbatim { @Tbl rule { yes } aformat { @StartVSpan @Cell @I A | @Cell B | @Cell C } @@ -96,7 +110,7 @@ C { Introductory Computer Science } } Here is a notorious larger example, the `spiral': -@ID @OneRow @Code @Verbatim { +@ID @OneRow -1px @Break @Code @Verbatim { @QuotedDisplay @Tbl rule { yes } { @@ -131,17 +145,14 @@ to ensure that every format has exactly the same number of @Code "|" symbols. Otherwise the number of columns will differ from row to row. The names given to the entries ({@Code "A"}, {@Code "B"}, {@Code "C"}, -etc.) are quite irrelevant: having a @Code "@Cell D" in one row and a -@Code "@Cell D" in another does not mean that the cells will appear in -the same column. -# @PP -# There is an asymmetry in the spiral above: the first column -# occupies slightly more space than the other two. This arises -# because the left margin of the leftmost column is excluded from the -# calculation of how much space is available. This anomaly might be -# corrected some day. +etc.) are quite irrelevant: having a @Code "@Cell D" in one row and +a @Code "@Cell D" in another does not mean that the cells will appear +in the same column. @PP There is a @Code "@StartHVSpan" symbol which combines the effects +tables. @RawIndex { tables } +tables.starthvspan @SubIndex { @Code "@StartHVSpan" option } +starthvspan.tables @Index { @Code "@StartHVSpan" option (tables) } of @Code "@StartHSpan" and {@Code "@StartVSpan"}. You need to use it in this arrangement: @ID @OneRow @Tbl diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/tbl_summ lout-3.27/doc/user/tbl_summ --- lout-3.26/doc/user/tbl_summ Wed Sep 18 12:22:37 2002 +++ lout-3.27/doc/user/tbl_summ Thu Nov 14 08:04:52 2002 @@ -4,6 +4,8 @@ @Begin @PP This summary applies to all @Code "@Tbl" options except the @Code format +tables. @RawIndex { tables } +tables.summary @SubIndex { summary of all options } options described in Section {@NumberOf tbl_rows}. Here is the complete list of these options, one option per line, showing its alternative spellings, default values (PostScript and PDF, and plain text) from the setup @@ -47,8 +49,12 @@ rulebelow { yes } @Rowa A { paint p } - B { nopaint } + B { none } D { any colour from Section {@NumberOf colour} } +@Rowa + A { texture t } + B { solid } + D { any texture from Section {@NumberOf textures} } @Rowa A { background bg } D { any object } diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/tbl_widt lout-3.27/doc/user/tbl_widt --- lout-3.26/doc/user/tbl_widt Wed Sep 18 12:22:37 2002 +++ lout-3.27/doc/user/tbl_widt Thu Nov 21 21:14:08 2002 @@ -4,6 +4,8 @@ @Begin @PP Lout is quite good a choosing suitable widths for cells. It leaves +column.width @RawIndex { column width } +column.width.in.tables @SubIndex { in tables } narrow cells at their natural width, then uses paragraph breaking to reduce the wider cells to a common width which is as large as the available space allows: @@ -23,6 +25,10 @@ } This usually looks good, but if you need something else, there is the @Code width option: +tables. @RawIndex { tables } +tables.width @SubIndex { @Code "width" option } +width. @RawIndex { @Code "width" option } +width.in.tables @SubIndex { in tables } @ID @OneRow @Code "@Cell width { 3c }" Here we have asked for a cell width of three centimetres; this includes the cell margins. When using @Code width to fine-tune the appearance of @@ -34,6 +40,8 @@ approximate this is to give these cells the same @Code width value. The @Code width option also has a special value, {@Code "expand"}. All cells with @Code "width { expand }" are assigned a common width +tables. @RawIndex { tables } +tables.expand @SubIndex { @Code expand cell width } expand.cell.width @Index { @Code expand cell width in tables } equal to the maximum amount permitted by the available space. For example, @ID @OneRow @Code @Verbatim { @@ -78,6 +86,10 @@ with the total table width reduced to four inches. @PP There is an analogous @Code height option which makes a cell take on +tables. @RawIndex { tables } +tables.height @SubIndex { @Code height option } +height. @RawIndex { @Code "height" option } +height.in.tables @SubIndex { in tables } a particular fixed height, again including margins. Make sure there is enough height in the cell to hold its entry when you use this option. The @Code "expand" value is not available for height. diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/typ_book lout-3.27/doc/user/typ_book --- lout-3.26/doc/user/typ_book Wed Sep 18 12:22:38 2002 +++ lout-3.27/doc/user/typ_book Thu Nov 21 16:51:52 2002 @@ -7,7 +7,7 @@ books. @Index { books } book. @Index @Code "@Book" @Code "@Book" symbol: -@ID @OneRow @Code { +@ID @OneRow -1px @Break @Code { "@SysInclude { book }" "@Book" " @Title {}" @@ -28,6 +28,10 @@ " @FirstPageNumber { 1 }" " @IntroFirstPageNumber { 1 }" " @OptimizePages { No }" +" @GlossaryText { @Null }" +" @IndexText { @Null }" +" @IndexAText { @Null }" +" @IndexBText { @Null }" "//" } This shows all the options of @Code "@Book" with their default values. As @@ -128,6 +132,11 @@ is usually caused by footnotes or floating figures inserted at points which end up near page boundaries. @PP +The {@Code "@GlossaryText"}, {@Code "@IndexText"}, {@Code "@IndexAText"}, +and {@Code "@IndexBText"} symbols allow you to insert some arbitrary +text after the title of the glossary, index, etc., and before the +entries. +@PP After the compulsory @Code "//" comes an optional preface: preface. @Index @Code "@Preface" @ID @OneRow @Code { @@ -352,7 +361,8 @@ 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" -references.before.appendices @Index @Code "@ReferencesBeforeAppendices" +references. @RawIndex references +references.references.before.appendices @SubIndex @Code "@ReferencesBeforeAppendices" determines whether any final list of references appears before or after any appendices. @Code "@ChapterWord" determines the word used in chapter titles; its default value, {@Code "chapter"}, diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/typ_ordi lout-3.27/doc/user/typ_ordi --- lout-3.26/doc/user/typ_ordi Wed Sep 18 12:22:38 2002 +++ lout-3.27/doc/user/typ_ordi Thu Nov 21 15:28:12 2002 @@ -42,7 +42,6 @@ may be given in any order, and only the ones that need to be changed need be given at all. Notice the @Code "//" after the last option. Its meaning is beyond our -"//" @Index { @Code "//" symbol } scope, but total disaster will ensue if it is forgotten. The @Code "@Doc" symbol is an abbreviation for {@Code "@Document //"}, which is why you don't need @Code "//" with {@Code "@Doc"}. diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/typ_repo lout-3.27/doc/user/typ_repo --- lout-3.26/doc/user/typ_repo Wed Sep 18 12:22:38 2002 +++ lout-3.27/doc/user/typ_repo Thu Nov 21 11:07:49 2002 @@ -9,7 +9,7 @@ technical.reports. @Index { technical reports } report. @Index @Code "@Report" file and the @Code "@Report" symbol: -@ID @OneRow @Code { +@ID @OneRow -1px @Break @Code { "@SysInclude { report }" "@Report" " @Title {}" @@ -31,20 +31,17 @@ " @AbstractDisplay { Yes }" " @AbstractTitle { Abstract }" " @Abstract {}" +" @GlossaryText { @Null }" +" @IndexText { @Null }" +" @IndexAText { @Null }" +" @IndexBText { @Null }" "//" } This shows all the options of {@Code "@Report"} @FootNote { -Version 3.13 of Lout is not completely upwardly compatible with -previous versions in its handling of technical reports. The change -concerns the abstract, and if you see the error message -@ID @Code "symbol @Abstract unknown or misspelt" -you probably need to convert your document. To convert an older -document to Version 3.13, move any @Code "@Abstract" from after the -@Code "//" to before it, delete any options to the @Code "@Abstract" -symbol, and delete any initial paragraph symbol within the abstract. -You can use the @Code "@AbstractTitle" option described in this section -to change the title of the abstract. +Before Version 3.13, @Code "@Abstract" followed "//" rather than +preceded it, and had some options that are now withdrawn. Old +documents may therefore need some superficial rearrangement. } with their default values. As usual with options, they may be given in any order, and only the ones whose values need to be changed need be @@ -186,6 +183,11 @@ abstract. @Index @Code "@Abstract" 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 +The {@Code "@GlossaryText"}, {@Code "@IndexText"}, {@Code "@IndexAText"}, +and {@Code "@IndexBText"} symbols allow you to insert some arbitrary +text after the title of the glossary, index, etc., and before the +entries. @PP After the compulsory {@Code "//"} comes the report body in the form of a sequence of sections: diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/vbgr lout-3.27/doc/user/vbgr --- lout-3.26/doc/user/vbgr Thu Jan 1 10:00:00 1970 +++ lout-3.27/doc/user/vbgr Sun Nov 17 17:14:52 2002 @@ -0,0 +1,8 @@ +gvim bgr +gvim bgr_colo +gvim bgr_text +gvim bgr_boxs +gvim bgr_outl +gvim bgr_rota +gvim bgr_scal +gvim bgr_incl diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/vdia lout-3.27/doc/user/vdia --- lout-3.26/doc/user/vdia Thu Jan 1 10:00:00 1970 +++ lout-3.27/doc/user/vdia Sat Nov 2 09:32:27 2002 @@ -0,0 +1,13 @@ +gvim dia +gvim dia_intr +gvim dia_node +gvim dia_link +gvim dia_tags +gvim dia_labe +gvim dia_posi +gvim dia_tree +gvim dia_synt +gvim dia_erro +gvim dia_defi +gvim dia_geom +gvim dia_summ diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/vequ lout-3.27/doc/user/vequ --- lout-3.26/doc/user/vequ Thu Jan 1 10:00:00 1970 +++ lout-3.27/doc/user/vequ Thu Nov 14 21:44:24 2002 @@ -0,0 +1,9 @@ +gvim equ +gvim equ_intr +gvim equ_symb +gvim equ_vert +gvim equ_spac +gvim equ_disp +gvim equ_defs +gvim equ_summ +gvim equ_tequ diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/vfmt lout-3.27/doc/user/vfmt --- lout-3.26/doc/user/vfmt Wed Sep 18 12:22:38 2002 +++ lout-3.27/doc/user/vfmt Mon Nov 18 09:18:48 2002 @@ -1 +1,5 @@ -vi fmt fmt_setu fmt_size fmt_marg fmt_head +gvim fmt +gvim fmt_setu +gvim fmt_size +gvim fmt_marg +gvim fmt_head diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/vgra lout-3.27/doc/user/vgra --- lout-3.26/doc/user/vgra Thu Jan 1 10:00:00 1970 +++ lout-3.27/doc/user/vgra Wed Oct 23 14:16:02 2002 @@ -0,0 +1,11 @@ +gvim gra +gvim gra_intr +gvim gra_over +gvim gra_capt +gvim gra_tick +gvim gra_data +gvim gra_plac +gvim gra_func +gvim gra_keys +gvim gra_erro +gvim gra_summ diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/vpie lout-3.27/doc/user/vpie --- lout-3.26/doc/user/vpie Thu Jan 1 10:00:00 1970 +++ lout-3.27/doc/user/vpie Wed Oct 23 08:01:31 2002 @@ -0,0 +1,15 @@ +gvim pie +sleep 2 +gvim pie_intr +sleep 2 +gvim pie_slic +sleep 2 +gvim pie_over +sleep 2 +gvim pie_capt +sleep 2 +gvim pie_labe +sleep 2 +gvim pie_erro +sleep 2 +gvim pie_summ diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/vprg lout-3.27/doc/user/vprg --- lout-3.26/doc/user/vprg Wed Sep 18 12:22:38 2002 +++ lout-3.27/doc/user/vprg Sun Nov 17 16:26:38 2002 @@ -1 +1,12 @@ -vi prg prg_lone prg_embe prg_opti prg_chan prg_tabs prg_form prg_comm prg_prog prg_pipe prg_erro prg_perl +gvim prg +gvim prg_lone +gvim prg_embe +gvim prg_opti +gvim prg_chan +gvim prg_tabs +gvim prg_form +gvim prg_comm +gvim prg_prog +gvim prg_pipe +gvim prg_erro +gvim prg_perl diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/vref lout-3.27/doc/user/vref --- lout-3.26/doc/user/vref Wed Sep 18 12:22:38 2002 +++ lout-3.27/doc/user/vref Mon Nov 18 07:52:06 2002 @@ -1 +1,7 @@ -vi ref ref_sett ref_cite ref_labe ref_entr ref_chan ref_crea +gvim ref +gvim ref_sett +gvim ref_cite +gvim ref_labe +gvim ref_entr +gvim ref_chan +gvim ref_crea diff -u --recursive --new-file -u --recursive --new-file lout-3.26/doc/user/vtbl lout-3.27/doc/user/vtbl --- lout-3.26/doc/user/vtbl Wed Sep 18 12:22:38 2002 +++ lout-3.27/doc/user/vtbl Sat Nov 2 08:19:17 2002 @@ -1,2 +1,15 @@ -vi tbl tbl_intr tbl_cell tbl_rows tbl_rule tbl_marg tbl_widt tbl_inde \ - tbl_alig tbl_span tbl_mark tbl_mult tbl_plai tbl_setu tbl_summ +gvim tbl +gvim tbl_intr +gvim tbl_cell +gvim tbl_rows +gvim tbl_rule +gvim tbl_marg +gvim tbl_widt +gvim tbl_inde +gvim tbl_alig +gvim tbl_span +gvim tbl_mark +gvim tbl_mult +gvim tbl_plai +gvim tbl_setu +gvim tbl_summ diff -u --recursive --new-file -u --recursive --new-file lout-3.26/externs.h lout-3.27/externs.h --- lout-3.26/externs.h Tue Oct 8 16:11:16 2002 +++ lout-3.27/externs.h Sun Nov 17 20:19:56 2002 @@ -1,9 +1,9 @@ /*@externs.h:External Declarations:Directories and file conventions@**********/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.26) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.27) */ /* COPYRIGHT (C) 1991, 2002 Jeffrey H. Kingston */ /* */ -/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */ +/* Jeffrey H. Kingston (jeff@it.usyd.edu.au) */ /* Basser Department of Computer Science */ /* The University of Sydney 2006 */ /* AUSTRALIA */ @@ -95,7 +95,7 @@ /* */ /*****************************************************************************/ -#define LOUT_VERSION AsciiToFull("Basser Lout Version 3.26 (October 2002)") +#define LOUT_VERSION AsciiToFull("Basser Lout Version 3.27 (November 2002)") #define CROSS_DB AsciiToFull("lout") #define SOURCE_SUFFIX AsciiToFull(".lt") #define INDEX_SUFFIX AsciiToFull(".li") @@ -113,23 +113,46 @@ /* */ /* Operating system dependent things */ /* */ -/* (1) File read and write modes for binary files, and directory character */ +/* (1) Reading files */ +/* */ +/* Starting from Version 3.27, Lout reads all files in "binary mode", so */ +/* that the actual characters in the file are presented to Lout. Lout */ +/* accepts any of LF, CR, LF+CR, CR+LF as a valid line ending on any */ +/* line of any file, taking the longest match as usual. */ +/* */ +/* This strategy has two major advantages: files transferred between */ +/* operating systems are always read correctly without needing any */ +/* conversion, and ftell() always works properly on binary files (its */ +/* behaviour on text files has been observed to vary). */ +/* */ +/* READ_FILE Mode passed to fopen() when reading any file at all */ +/* */ +/* (2) Writing files */ +/* */ +/* Starting from Version 3.27, Lout writes all files in "binary mode", */ +/* so that the actual characters in the file are all explicitly written */ +/* by Lout. The macro STR_NEWLINE defines what character(s) Lout will */ +/* write when it wants to end the line; throughout Lout the "\n" thing */ +/* never appears, only STR_NEWLINE. STR_NEWLINE is defined below to be */ +/* "\n" on Unix, "\r\n" on DOS, and "\r" on Mac. */ +/* */ +/* This strategy might seem to be overkill, given that writing "\n" on */ +/* a DOS text file would write "\r\n" anyway. Unfortunately, when Lout */ +/* is writing a database file, it uses ftell() as it is writing to find */ +/* out where it's up to. Since we can only be sure that ftell() will */ +/* work on binary files, we've made all file writing be binary. */ +/* */ +/* WRITE_FILE Mode passed to fopen() when writing any file at all */ +/* APPEND_FILE Mode passed to fopen() when appending any file at all */ +/* STR_NEWLINE The string to write to a binary file to end a line */ +/* */ +/* (3) Directory character */ +/* */ +/* Operating systems differ in the character used in path names. */ /* */ -/* MS-DOS text file line endings differ from Unix line endings. This is */ -/* usually ignorable but causes problems with binary files and files where */ -/* you do arithmetic on fseek() values. In Lout the problematic files are */ -/* compressed trie and hyphenation files, and database index files. So */ -/* we must read and write these files in "binary mode" in MS-DOS. For */ -/* completeness we have included synonyms for all file modes used by Lout: */ -/* */ -/* READ_BINARY Mode passed to fopen() when reading a "binary file" */ -/* WRITE_BINARY Mode passed to fopen() when writing a "binary file" */ -/* READ_TEXT Mode passed to fopen() when reading a "text file" */ -/* APPEND_TEXT Mode passed to fopen() when appending to "text file" */ -/* WRITE_TEXT Mode passed to fopen() when writing a "text file" */ /* STR_DIR Directory character used in file path names */ /* */ -/* (2) System command and file name for uncompressing EPS files */ +/* (4) System command and file name for uncompressing EPS files */ /* */ /* UNCOMPRESS_COM System command for uncompressing compressed EPS file */ /* LOUT_EPS Name of temporary uncompressed EPS file */ @@ -142,31 +165,28 @@ /*****************************************************************************/ #if OS_UNIX -#define READ_BINARY "r" -#define WRITE_BINARY "w" -#define READ_TEXT "r" -#define APPEND_TEXT "a" -#define WRITE_TEXT "w" +#define READ_FILE "r" +#define WRITE_FILE "w" +#define APPEND_FILE "a" +#define STR_NEWLINE AsciiToFull("\n") #define STR_DIR AsciiToFull("/") #define UNCOMPRESS_COM "gunzip -c %s > %s" #define LOUT_EPS "lout.eps" #else #if OS_DOS -#define READ_BINARY "rb" -#define WRITE_BINARY "wb" -#define READ_TEXT "rt" -#define APPEND_TEXT "at" -#define WRITE_TEXT "wt" +#define READ_FILE "rb" +#define WRITE_FILE "wb" +#define APPEND_FILE "ab" +#define STR_NEWLINE AsciiToFull("\r\n") #define STR_DIR AsciiToFull("/") #define UNCOMPRESS_COM "gunzip -c %s > %s" #define LOUT_EPS "lout.eps" #else #if OS_MAC -#define READ_BINARY "r" -#define WRITE_BINARY "w" -#define READ_TEXT "r" -#define APPEND_TEXT "a" -#define WRITE_TEXT "w" +#define READ_FILE "r" +#define WRITE_FILE "w" +#define APPEND_FILE "a" +#define STR_NEWLINE AsciiToFull("\r") #define STR_DIR AsciiToFull(":") #define UNCOMPRESS_COM "gunzip -c %s > %s" #define LOUT_EPS "lout.eps" @@ -219,14 +239,14 @@ /* one file path name, one symbol full name, etc. This */ /* may be increased immediately without limit. */ /* */ -/* MAX_FONT The maximum number of sized fonts allowed. This */ -/* can be increased beyond 4096 only by setting aside */ -/* a larger word_font() field. */ +/* MAX_FONT The maximum number of sized fonts allowed. */ /* */ /* MAX_COLOUR The maximum number of distinct left parameters of */ /* @SetColour and @SetColor symbols allowed (after */ -/* evaluation). This can be increased beyond 1024 */ -/* only by setting aside a larger word_colour() field. */ +/* evaluation). */ +/* */ +/* MAX_TEXTURE The maximum number of distinct left parameters of */ +/* the @SetTexture symbol allowed (after evaluation). */ /* */ /* MAX_LANGUAGE The maximum number of distinct languages allowed. */ /* This can be increased beyond 256 only by setting */ @@ -238,6 +258,10 @@ /* MAX_CHARS The maximimum number of characters in a font. This */ /* cannot be increased easily. */ /* */ +/* MAX_HCOPIES The maximimum number of copies of one running header */ +/* that can appear correctly on one page. Can be */ +/* increased to any small positive integer. */ +/* */ /*****************************************************************************/ #define MAX_FULL_LENGTH 8388607 /* 2**23 - 1, about 148 metres */ @@ -247,11 +271,13 @@ #define MAX_WORD 2048 #define MAX_OBJECT_REC ceiling(sizeof(struct word_type)+MAX_WORD,sizeof(ALIGN)) #define MAX_BUFF 512 -#define MAX_FONT 4096 -#define MAX_COLOUR 4096 +#define MAX_FONT 65535 +#define MAX_COLOUR 65535 +#define MAX_TEXTURE 65535 #define MAX_LANGUAGE 64 #define MAX_LEX_STACK 10 #define MAX_CHARS 256 +#define MAX_HCOPIES 3 /*****************************************************************************/ /* */ @@ -276,7 +302,7 @@ #define ceiling(a, b) ( ((a) - 1)/(b) + 1 ) /* ceiling(a/b) */ #define is_odd(x) ( (x) & 1 ) /* TRUE if x is odd number */ -/*@::ALIGN, FULL_LENGTH, FONT_NUM, COLOUR_NUM, LANGUAGE_NUM, FULL_CHAR@*******/ +/*@::Some straightforward typedefs@*******************************************/ /* */ /* typedef ALIGN - used for forcing record alignment. */ /* */ @@ -309,7 +335,7 @@ /* */ /*****************************************************************************/ -typedef unsigned FONT_NUM; +typedef short unsigned FONT_NUM; /*****************************************************************************/ @@ -318,7 +344,16 @@ /* */ /*****************************************************************************/ -typedef unsigned COLOUR_NUM; +typedef short unsigned COLOUR_NUM; + + +/*****************************************************************************/ +/* */ +/* TEXTURE_NUM - internal name for a texture. */ +/* */ +/*****************************************************************************/ + +typedef short unsigned TEXTURE_NUM; /*****************************************************************************/ @@ -418,7 +453,9 @@ #define CH_FLAG_PDF 'Z' /* the -Z command line flag */ #define CH_SPACE ' ' /* space character */ -#define CH_NEWLINE '\n' /* the newline character */ +/* #define CH_NEWLINE '\n'*/ /* the newline character */ +#define CH_LF '\n' /* the line feed character */ +#define CH_CR '\r' /* the carriage return character */ #define CH_SYMSTART '@' /* extra letter symbols may have */ #define CH_UNDERSCORE '_' /* extra letter symbols may have */ #define CH_QUOTE '"' /* the quote character */ @@ -476,7 +513,6 @@ #define STR_SPACE AsciiToFull(" ") #define STR_FORMFEED AsciiToFull("\f") #define STR_TAB AsciiToFull("\t") -#define STR_NEWLINE AsciiToFull("\n") #define STR_LETTERS_LOWER AsciiToFull("abcdefghijklmnopqrstuvwxyz") #define STR_LETTERS_UPPER AsciiToFull("ABCDEFGHIJKLMNOPQRSTUVWXYZ") #define STR_LETTERS_SYMSTART AsciiToFull("@") @@ -519,6 +555,7 @@ #define STR_FONT_RECODE AsciiToFull("Recode") #define STR_FONT_NORECODE AsciiToFull("NoRecode") #define STR_COLOUR_NOCHANGE AsciiToFull("nochange") +#define STR_TEXTURE_NOCHANGE AsciiToFull("nochange") #define STR_BREAK_HYPHEN AsciiToFull("hyphen") #define STR_BREAK_NOHYPHEN AsciiToFull("nohyphen") @@ -625,9 +662,10 @@ SHORT_LENGTH ozunit; /* value of z unit of measurement */ SHORT_LENGTH ooutdent_len; /* amount to outdent in outdent style*/ SHORT_LENGTH osmallcaps_len; /* size of small capitals */ - COLOUR_NUM ocolour : 10; /* current colour */ + FONT_NUM ofont; /* current font */ + COLOUR_NUM ocolour; /* current colour */ + TEXTURE_NUM otexture; /* current texture */ LANGUAGE_NUM olanguage : 6; /* current language */ - FONT_NUM ofont : 11; /* current font */ BOOLEAN ooutline : 2; /* TRUE if outlining words */ BOOLEAN onobreakfirst : 1; /* no break after first line of para */ BOOLEAN onobreaklast : 1; /* no break after last line of para */ @@ -646,6 +684,7 @@ #define display_style(x)(x).osu2.oss2.odisplay_style #define font(x) (x).ofont #define colour(x) (x).ocolour +#define texture(x) (x).otexture #define outline(x) (x).ooutline #define language(x) (x).olanguage #define nobreakfirst(x) (x).onobreakfirst @@ -665,6 +704,7 @@ GapCopy(space_gap(x), space_gap(y)), \ font(x) = font(y), \ colour(x) = colour(y), \ + texture(x) = texture(y), \ outline(x) = outline(y), \ language(x) = language(y), \ nobreakfirst(x) = nobreakfirst(y), \ @@ -777,7 +817,7 @@ /*@::SECOND_UNION, THIRD_UNION, FOURTH_UNION@*********************************/ /* */ -/* typedef SECOND_UNION - four bytes holding various flags etc. */ +/* typedef SECOND_UNION - eight bytes holding various flags etc. */ /* */ /*****************************************************************************/ @@ -790,18 +830,21 @@ struct /* used by WORD objects only, except underline used by all */ /* objects, including GAP_OBJ */ - { FONT_NUM oword_font : 11; - COLOUR_NUM oword_colour : 10; + { FONT_NUM oword_font; + COLOUR_NUM oword_colour; + TEXTURE_NUM oword_texture; + unsigned ounderline : 2; /* aligns with os23.underline */ BOOLEAN oword_outline : 1; LANGUAGE_NUM oword_language : 6; BOOLEAN oword_baselinemark : 1; - unsigned ounderline : 2; unsigned oword_hyph : 1; } os22; struct /* used by non-WORD objects */ - { unsigned char ofoll_or_prec; - unsigned char ocross_type; /* CROSS objects only */ + { unsigned short ofoll_or_prec; + unsigned short ocross_type; /* CROSS objects only */ + unsigned short ounused_os23; + unsigned ounderline : 2; /* aligns with os22.underline */ BOOLEAN onon_blocking: 1; BOOLEAN osized : 1; BOOLEAN othreaded : 1; @@ -815,7 +858,6 @@ BOOLEAN oopt_gazumped: 1; BOOLEAN oadjust_cat : 1; BOOLEAN oforce_gall : 1; - unsigned ounderline : 2; /* don't forget ounderline from os22 applies in this union! */ } os23; @@ -826,7 +868,7 @@ } os24; struct /* used by WORD and QWORD when they are font records */ - { FONT_NUM ofont_num : 12; + { FONT_NUM ofont_num; unsigned short ofont_page; } os25; @@ -996,6 +1038,7 @@ /* zunit Value of z unit of measurement */ /* font Which internal font (including size) to use */ /* colour Which internal colour to use */ +/* texture Which internal texture to use */ /* outline TRUE if outlining words rather than filling them */ /* language Which internal language to use */ /* nobreakfirst TRUE if break not allowed after first line of para */ @@ -1041,8 +1084,9 @@ /* */ /* back(COLM) Horizontal position of start of underline */ /* fwd(COLM) Horizontal position of end of underline */ -/* back(ROWM) [type clash] font determining underline appearance */ -/* fwd(ROWM) [type clash] the colour of the underline */ +/* word_font Font determining underline appearance */ +/* word_colour The colour of the underline */ +/* word_texture The texture of the underline */ /* */ /* PAGE_LABEL - a @PageLabel object */ /* */ @@ -1082,7 +1126,8 @@ /* foll_or_prec Direction of search for target (forward, back, etc.) */ /* whereto Symbol this galley is targeted at */ /* seen_nojoin TRUE if // op found within galley anywhere */ -/* headers either nilobj or an ACAT of header components */ +/* headers[i] each either nilobj or an ACAT of header components */ +/* head_next which header[i] we will use next. */ /* */ /* SPLIT - a split object, used for building tables */ /* */ @@ -1102,6 +1147,7 @@ /* SIZED The size of the word */ /* word_font Font to print this word in (from style) */ /* word_colour Colour to print this word in (from style) */ +/* word_texture texture to print this word in (from style) */ /* word_outline If TRUE, print this word in outline (from style) */ /* word_language Language (for hyphenation) of this word (from style) */ /* word_baselinemark TRUE if mark of this word goes through baseline */ @@ -1294,7 +1340,8 @@ /* */ /* FONT, SPACE, BREAK - @Font, @Space, @Break symbols */ /* YUNIT, ZUNIT - @YUnit, @ZUnit symbols */ -/* COLOUR, OUTLINE, LANGUAGE - @Colour, @Outline, @Language symbols */ +/* COLOUR, TEXTURE - @SetColour, @SetTexture symbols */ +/* OUTLINE, LANGUAGE - @Outline, @Language symbols */ /* PLUS, MINUS, - @Plus, @Minus symbols */ /* MELD, COMMON, RUMP, INSERT - @Meld, @Common, @Rump, @Insert symbols */ /* OPEN, TAGGED - @Open, @Tagged symbols */ @@ -1536,7 +1583,6 @@ union rec *opinpoint; FULL_LENGTH osave_mark; } oux; - /* union rec *oready_galls; */ } os2; struct head_type /* all fields of HEAD, both as token and object */ @@ -1557,8 +1603,8 @@ union rec *oopt_counts; union rec *olimiter; union rec *oenclose_obj; - union rec *oheaders; - union rec *odead_headers; + union rec *oheaders[MAX_HCOPIES]; + int ohead_next; int oopt_comps_permitted; } os2a; @@ -1620,12 +1666,10 @@ unsigned char otype; unsigned char otarget_state; FILE_NUM otarget_file; - /* FILE_NUM ocr_file; unused */ union rec *otarget_val; int otarget_seq; int otarget_pos; int otarget_lnum; - /* int ocr_seq; unused */ int ogall_seq; union rec *osymb; union rec *ogall_tag; @@ -1674,6 +1718,7 @@ #define spanner_count(x) word_font(x) #define incg_type(x) word_font(x) #define word_colour(x) (x)->os1.ou2.os22.oword_colour +#define word_texture(x) (x)->os1.ou2.os22.oword_texture #define spanner_sized(x) word_colour(x) #define word_outline(x) (x)->os1.ou2.os22.oword_outline #define word_language(x) (x)->os1.ou2.os22.oword_language @@ -1779,8 +1824,8 @@ #define opt_counts(x) (x)->os2a.oopt_counts #define limiter(x) (x)->os2a.olimiter #define enclose_obj(x) (x)->os2a.oenclose_obj -#define headers(x) (x)->os2a.oheaders -#define dead_headers(x) (x)->os2a.odead_headers +#define headers(x, i) (x)->os2a.oheaders[i] +#define head_next(x) (x)->os2a.ohead_next #define opt_comps_permitted(x) (x)->os2a.oopt_comps_permitted #define number(x) (x)->os4.onumber @@ -1937,8 +1982,8 @@ 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, COLOUR_NUM col, FULL_LENGTH xstart, - FULL_LENGTH xstop, FULL_LENGTH ymk); + void (*PrintUnderline)(FONT_NUM fnum, COLOUR_NUM col, TEXTURE_NUM pat, + 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); @@ -1980,151 +2025,153 @@ #define NULL_CLOS 5 /* to sn @Null */ #define CROSS 6 /* to sn && (a cross reference obj) */ #define FORCE_CROSS 7 /* to sn &&& (a forcing cross ref.) */ -#define HEAD 8 /* o n a galley header */ -#define SPLIT 9 /* o @Split */ -#define PAR 10 /* o a parameter of a closure */ -#define WORD 11 /* o a word */ -#define QWORD 12 /* o a word (was quoted in i/p) */ -#define HSPANNER 13 /* o a horizontal spanner */ -#define VSPANNER 14 /* o a vertical spanner */ -#define ROW_THR 15 /* o a row thread */ -#define COL_THR 16 /* o a column thread */ -#define ACAT 17 /* to s a sequence of &-ed objs */ -#define HCAT 18 /* to s a sequence of |-ed objs */ -#define VCAT 19 /* to s a sequence of /-ed objs */ -#define BEGIN_HEADER 20 /* to s @BeginHeaderComponent */ -#define END_HEADER 21 /* to s @EndHeaderComponent */ -#define SET_HEADER 22 /* to s @SetHeaderComponent */ -#define CLEAR_HEADER 23 /* to s @ClearHeaderComponent */ -#define ONE_COL 24 /* to s @OneCol */ -#define ONE_ROW 25 /* to s @OneRow */ -#define WIDE 26 /* to s @Wide */ -#define HIGH 27 /* to s @High */ -#define HSHIFT 28 /* to s @HShift */ -#define VSHIFT 29 /* to s @VShift */ -#define HSCALE 30 /* to s @HScale */ -#define VSCALE 31 /* to s @VScale */ -#define HCOVER 32 /* to s @HCover */ -#define VCOVER 33 /* to s @VCover */ -#define SCALE 34 /* to s @Scale */ -#define KERN_SHRINK 35 /* to s @KernShrink */ -#define HCONTRACT 36 /* to s @HContract */ -#define VCONTRACT 37 /* to s @VContract */ -#define HLIMITED 38 /* to s @HLimited */ -#define VLIMITED 39 /* to s @VLimited */ -#define HEXPAND 40 /* to s @HExpand */ -#define VEXPAND 41 /* to s @VExpand */ -#define START_HSPAN 42 /* to s @StartHSpan */ -#define START_VSPAN 43 /* to s @StartVSpan */ -#define START_HVSPAN 44 /* to s @StartHVSpan */ -#define HSPAN 45 /* to s @HSpan */ -#define VSPAN 46 /* to s @VSpan */ -#define PADJUST 47 /* to s @PAdjust */ -#define HADJUST 48 /* to s @HAdjust */ -#define VADJUST 49 /* to s @VAdjust */ -#define ROTATE 50 /* to s @Rotate */ -#define BACKGROUND 51 /* to s @Background */ -#define CASE 52 /* to s @Case */ -#define VERBATIM 53 /* to s @Verbatim */ -#define RAW_VERBATIM 54 /* to s @RawVerbatim */ -#define YIELD 55 /* to s @Yield */ -#define BACKEND 56 /* to s @BackEnd */ -#define FILTERED 57 /* to s filtered object (no name) */ -#define XCHAR 58 /* to s @Char */ -#define FONT 59 /* to s @Font */ -#define SPACE 60 /* to s @Space */ -#define YUNIT 61 /* to s @YUnit */ -#define ZUNIT 62 /* to s @ZUnit */ -#define BREAK 63 /* to s @Break */ -#define UNDERLINE 64 /* to s @Underline */ -#define COLOUR 65 /* to s @SetColour and @SetColor */ -#define OUTLINE 66 /* to s @Outline */ -#define LANGUAGE 67 /* to s @Language */ -#define CURR_LANG 68 /* to s @CurrLang */ -#define CURR_FAMILY 69 /* to s @CurrFamily */ -#define CURR_FACE 70 /* to s @CurrFace */ -#define CURR_YUNIT 71 /* to s @CurrYUnit */ -#define CURR_ZUNIT 72 /* to s @CurrZUnit */ -#define COMMON 73 /* to s @Common */ -#define RUMP 74 /* to s @Rump */ -#define MELD 75 /* to s @Meld */ -#define INSERT 76 /* to s @Insert */ -#define ONE_OF 77 /* to s @OneOf */ -#define NEXT 78 /* to s @Next */ -#define PLUS 79 /* to s @Plus */ -#define MINUS 80 /* to s @Minus */ -#define ENV_OBJ 81 /* to s object with envt (no name) */ -#define ENV 82 /* to s @LEnv */ -#define ENVA 83 /* to s @LEnvA */ -#define ENVB 84 /* to s @LEnvB */ -#define ENVC 85 /* to s @LEnvC */ -#define ENVD 86 /* to s @LEnvD */ -#define CENV 87 /* to s @LCEnv */ -#define CLOS 88 /* to s @LClos */ -#define LVIS 89 /* to s @LVis */ -#define LUSE 90 /* to s @LUse */ -#define LEO 91 /* to s @LEO */ -#define OPEN 92 /* to s @Open */ -#define TAGGED 93 /* to s @Tagged */ -#define INCGRAPHIC 94 /* to s @IncludeGraphic */ -#define SINCGRAPHIC 95 /* to s @SysIncludeGraphic */ -#define PLAIN_GRAPHIC 96 /* to s @PlainGraphic */ -#define GRAPHIC 97 /* to s @Graphic */ -#define LINK_SOURCE 98 /* to s @LinkSource */ -#define LINK_DEST 99 /* to s @LinkDest */ -#define LINK_URL 100 /* to s @URLLink */ -#define TSPACE 101 /* t a space token, parser only */ -#define TJUXTA 102 /* t a juxta token, parser only */ -#define LBR 103 /* t s left brace token */ -#define RBR 104 /* t s right brace token */ -#define BEGIN 105 /* t s @Begin token */ -#define END 106 /* t s @End token */ -#define USE 107 /* t s @Use */ -#define NOT_REVEALED 108 /* t s @NotRevealed */ -#define GSTUB_NONE 109 /* t a galley stub, no rpar */ -#define GSTUB_INT 110 /* t galley stub internal rpar */ -#define GSTUB_EXT 111 /* t galley stub external rpar */ -#define UNEXPECTED_EOF 112 /* t unexpected end of file */ -#define INCLUDE 113 /* s @Include */ -#define SYS_INCLUDE 114 /* s @SysInclude */ -#define PREPEND 115 /* s @Prepend */ -#define SYS_PREPEND 116 /* s @SysPrepend */ -#define INCG_REPEATED 117 /* s @IncludeGraphicRepeated */ -#define SINCG_REPEATED 118 /* s @SysIncludeGraphicRepeated */ -#define DATABASE 119 /* s @Database */ -#define SYS_DATABASE 120 /* s @SysDatabase */ -#define DEAD 121 /* i a dead galley */ -#define UNATTACHED 122 /* i an inner, unsized galley */ -#define RECEPTIVE 123 /* i a receptive object index */ -#define RECEIVING 124 /* i a receiving object index */ -#define RECURSIVE 125 /* i a recursive definite obj. */ -#define PRECEDES 126 /* i an ordering constraint */ -#define FOLLOWS 127 /* i other end of ordering c. */ -#define CROSS_LIT 128 /* i literal word cross-ref */ -#define CROSS_FOLL 129 /* i following type cross-ref */ -#define CROSS_FOLL_OR_PREC 130 /* i follorprec type cross-ref */ -#define GALL_FOLL 131 /* i galley with &&following */ -#define GALL_FOLL_OR_PREC 132 /* i galley with &&following */ -#define CROSS_TARG 133 /* i value of cross-ref */ -#define GALL_TARG 134 /* i target of these galleys */ -#define GALL_PREC 135 /* i galley with &&preceding */ -#define CROSS_PREC 136 /* i preceding type cross-ref */ -#define PAGE_LABEL_IND 137 /* i index of PAGE_LABEL */ -#define SCALE_IND 138 /* i index of auto SCALE */ -#define COVER_IND 139 /* i index of HCOVER or VCOVER */ -#define EXPAND_IND 140 /* i index of HEXPAND or VEXPD */ -#define THREAD 141 /* a sequence of threads */ -#define CROSS_SYM 142 /* cross-ref info */ -#define CR_ROOT 143 /* RootCross */ -#define MACRO 144 /* a macro symbol */ -#define LOCAL 145 /* a local symbol */ -#define LPAR 146 /* a left parameter */ -#define NPAR 147 /* a named parameter */ -#define RPAR 148 /* a right parameter */ -#define EXT_GALL 149 /* an external galley */ -#define CR_LIST 150 /* a list of cross references */ -#define SCOPE_SNAPSHOT 151 /* a scope snapshot */ -#define DISPOSED 152 /* a disposed record */ +#define LINK_DEST_NULL 8 /* to sn @LinkDest (null version) */ +#define HEAD 9 /* o n a galley header */ +#define SPLIT 10 /* o @Split */ +#define PAR 11 /* o a parameter of a closure */ +#define WORD 12 /* o a word */ +#define QWORD 13 /* o a word (was quoted in i/p) */ +#define HSPANNER 14 /* o a horizontal spanner */ +#define VSPANNER 15 /* o a vertical spanner */ +#define ROW_THR 16 /* o a row thread */ +#define COL_THR 17 /* o a column thread */ +#define ACAT 18 /* to s a sequence of &-ed objs */ +#define HCAT 19 /* to s a sequence of |-ed objs */ +#define VCAT 20 /* to s a sequence of /-ed objs */ +#define BEGIN_HEADER 21 /* to s @BeginHeaderComponent */ +#define END_HEADER 22 /* to s @EndHeaderComponent */ +#define SET_HEADER 23 /* to s @SetHeaderComponent */ +#define CLEAR_HEADER 24 /* to s @ClearHeaderComponent */ +#define ONE_COL 25 /* to s @OneCol */ +#define ONE_ROW 26 /* to s @OneRow */ +#define WIDE 27 /* to s @Wide */ +#define HIGH 28 /* to s @High */ +#define HSHIFT 29 /* to s @HShift */ +#define VSHIFT 30 /* to s @VShift */ +#define HSCALE 31 /* to s @HScale */ +#define VSCALE 32 /* to s @VScale */ +#define HCOVER 33 /* to s @HCover */ +#define VCOVER 34 /* to s @VCover */ +#define SCALE 35 /* to s @Scale */ +#define KERN_SHRINK 36 /* to s @KernShrink */ +#define HCONTRACT 37 /* to s @HContract */ +#define VCONTRACT 38 /* to s @VContract */ +#define HLIMITED 39 /* to s @HLimited */ +#define VLIMITED 40 /* to s @VLimited */ +#define HEXPAND 41 /* to s @HExpand */ +#define VEXPAND 42 /* to s @VExpand */ +#define START_HSPAN 43 /* to s @StartHSpan */ +#define START_VSPAN 44 /* to s @StartVSpan */ +#define START_HVSPAN 45 /* to s @StartHVSpan */ +#define HSPAN 46 /* to s @HSpan */ +#define VSPAN 47 /* to s @VSpan */ +#define PADJUST 48 /* to s @PAdjust */ +#define HADJUST 49 /* to s @HAdjust */ +#define VADJUST 50 /* to s @VAdjust */ +#define ROTATE 51 /* to s @Rotate */ +#define BACKGROUND 52 /* to s @Background */ +#define CASE 53 /* to s @Case */ +#define VERBATIM 54 /* to s @Verbatim */ +#define RAW_VERBATIM 55 /* to s @RawVerbatim */ +#define YIELD 56 /* to s @Yield */ +#define BACKEND 57 /* to s @BackEnd */ +#define FILTERED 58 /* to s filtered object (no name) */ +#define XCHAR 59 /* to s @Char */ +#define FONT 60 /* to s @Font */ +#define SPACE 61 /* to s @Space */ +#define YUNIT 62 /* to s @YUnit */ +#define ZUNIT 63 /* to s @ZUnit */ +#define BREAK 64 /* to s @Break */ +#define UNDERLINE 65 /* to s @Underline */ +#define COLOUR 66 /* to s @SetColour and @SetColor */ +#define TEXTURE 67 /* to s @SetTexture */ +#define OUTLINE 68 /* to s @Outline */ +#define LANGUAGE 69 /* to s @Language */ +#define CURR_LANG 70 /* to s @CurrLang */ +#define CURR_FAMILY 71 /* to s @CurrFamily */ +#define CURR_FACE 72 /* to s @CurrFace */ +#define CURR_YUNIT 73 /* to s @CurrYUnit */ +#define CURR_ZUNIT 74 /* to s @CurrZUnit */ +#define COMMON 75 /* to s @Common */ +#define RUMP 76 /* to s @Rump */ +#define MELD 77 /* to s @Meld */ +#define INSERT 78 /* to s @Insert */ +#define ONE_OF 79 /* to s @OneOf */ +#define NEXT 80 /* to s @Next */ +#define PLUS 81 /* to s @Plus */ +#define MINUS 82 /* to s @Minus */ +#define ENV_OBJ 83 /* to s object with envt (no name) */ +#define ENV 84 /* to s @LEnv */ +#define ENVA 85 /* to s @LEnvA */ +#define ENVB 86 /* to s @LEnvB */ +#define ENVC 87 /* to s @LEnvC */ +#define ENVD 88 /* to s @LEnvD */ +#define CENV 89 /* to s @LCEnv */ +#define CLOS 90 /* to s @LClos */ +#define LVIS 91 /* to s @LVis */ +#define LUSE 92 /* to s @LUse */ +#define LEO 93 /* to s @LEO */ +#define OPEN 94 /* to s @Open */ +#define TAGGED 95 /* to s @Tagged */ +#define INCGRAPHIC 96 /* to s @IncludeGraphic */ +#define SINCGRAPHIC 97 /* to s @SysIncludeGraphic */ +#define PLAIN_GRAPHIC 98 /* to s @PlainGraphic */ +#define GRAPHIC 99 /* to s @Graphic */ +#define LINK_SOURCE 100 /* to s @LinkSource */ +#define LINK_DEST 101 /* to s @LinkDest */ +#define LINK_URL 102 /* to s @URLLink */ +#define TSPACE 103 /* t a space token, parser only */ +#define TJUXTA 104 /* t a juxta token, parser only */ +#define LBR 105 /* t s left brace token */ +#define RBR 106 /* t s right brace token */ +#define BEGIN 107 /* t s @Begin token */ +#define END 108 /* t s @End token */ +#define USE 109 /* t s @Use */ +#define NOT_REVEALED 110 /* t s @NotRevealed */ +#define GSTUB_NONE 111 /* t a galley stub, no rpar */ +#define GSTUB_INT 112 /* t galley stub internal rpar */ +#define GSTUB_EXT 113 /* t galley stub external rpar */ +#define UNEXPECTED_EOF 114 /* t unexpected end of file */ +#define INCLUDE 115 /* s @Include */ +#define SYS_INCLUDE 116 /* s @SysInclude */ +#define PREPEND 117 /* s @Prepend */ +#define SYS_PREPEND 118 /* s @SysPrepend */ +#define INCG_REPEATED 119 /* s @IncludeGraphicRepeated */ +#define SINCG_REPEATED 120 /* s @SysIncludeGraphicRepeated */ +#define DATABASE 121 /* s @Database */ +#define SYS_DATABASE 122 /* s @SysDatabase */ +#define DEAD 123 /* i a dead galley */ +#define UNATTACHED 124 /* i an inner, unsized galley */ +#define RECEPTIVE 125 /* i a receptive object index */ +#define RECEIVING 126 /* i a receiving object index */ +#define RECURSIVE 127 /* i a recursive definite obj. */ +#define PRECEDES 128 /* i an ordering constraint */ +#define FOLLOWS 129 /* i other end of ordering c. */ +#define CROSS_LIT 130 /* i literal word cross-ref */ +#define CROSS_FOLL 131 /* i following type cross-ref */ +#define CROSS_FOLL_OR_PREC 132 /* i follorprec type cross-ref */ +#define GALL_FOLL 133 /* i galley with &&following */ +#define GALL_FOLL_OR_PREC 134 /* i galley with &&following */ +#define CROSS_TARG 135 /* i value of cross-ref */ +#define GALL_TARG 136 /* i target of these galleys */ +#define GALL_PREC 137 /* i galley with &&preceding */ +#define CROSS_PREC 138 /* i preceding type cross-ref */ +#define PAGE_LABEL_IND 139 /* i index of PAGE_LABEL */ +#define SCALE_IND 140 /* i index of auto SCALE */ +#define COVER_IND 141 /* i index of HCOVER or VCOVER */ +#define EXPAND_IND 142 /* i index of HEXPAND or VEXPD */ +#define THREAD 143 /* a sequence of threads */ +#define CROSS_SYM 144 /* cross-ref info */ +#define CR_ROOT 145 /* RootCross */ +#define MACRO 146 /* a macro symbol */ +#define LOCAL 147 /* a local symbol */ +#define LPAR 148 /* a left parameter */ +#define NPAR 149 /* a named parameter */ +#define RPAR 150 /* a right parameter */ +#define EXT_GALL 151 /* an external galley */ +#define CR_LIST 152 /* a list of cross references */ +#define SCOPE_SNAPSHOT 153 /* a scope snapshot */ +#define DISPOSED 154 /* a disposed record */ #define is_indefinite(x) ((x) >= CLOSURE && (x) <= HEAD) #define is_header(x) ((x) >= BEGIN_HEADER && (x) <= CLEAR_HEADER) @@ -2143,6 +2190,22 @@ /* */ /*****************************************************************************/ +/* sides of a mark */ +#define BACK 155 /* means lies to left of mark */ +#define ON 156 /* means lies on mark */ +#define FWD 157 /* means lies to right of mark */ + +/* constraint statuses */ +#define PROMOTE 158 /* this component may be promoted */ +#define CLOSE 159 /* must close dest before promoting */ +#define BLOCK 160 /* cannot promote this component */ +#define CLEAR 161 /* this constraint is now satisfied */ + +/* gap increment types */ +#define GAP_ABS 162 /* absolute, e.g. 3p */ +#define GAP_INC 163 /* increment, e.g. +3p */ +#define GAP_DEC 164 /* decrement, e.g. -3p */ + /* gap modes occupying mode(x) */ #define NO_MODE 0 /* for error detection: no mode */ #define EDGE_MODE 1 /* edge-to-edge spacing */ @@ -2189,123 +2252,113 @@ #define SMALL_CAPS_OFF 0 /* don't want small capitals */ #define SMALL_CAPS_ON 1 /* small capitals */ -/* sides of a mark */ -#define BACK 153 /* means lies to left of mark */ -#define ON 154 /* means lies on mark */ -#define FWD 155 /* means lies to right of mark */ - /* statuses of thread objects */ -#define NOTSIZED 0 /* this thread object is not sized */ -#define SIZED 1 /* thread is sized but not printed */ -#define FINALSIZE 2 /* thread object size is now final */ - -/* constraint statuses */ -#define PROMOTE 156 /* this component may be promoted */ -#define CLOSE 157 /* must close dest before promoting */ -#define BLOCK 158 /* cannot promote this component */ -#define CLEAR 159 /* this constraint is now satisfied */ - -/* gap increment types */ -#define GAP_ABS 160 /* absolute, e.g. 3p */ -#define GAP_INC 161 /* increment, e.g. +3p */ -#define GAP_DEC 162 /* decrement, e.g. -3p */ +#define NOTSIZED 0 /* this thread object is not sized */ +#define SIZED 1 /* thread is sized but not printed */ +#define FINALSIZE 2 /* thread object size is now final */ /* file types */ -#define SOURCE_FILE 0 /* input file from command line */ -#define INCLUDE_FILE 1 /* @Include file */ -#define DATABASE_FILE 2 /* database file */ -#define INDEX_FILE 3 /* database index file */ -#define FONT_FILE 4 /* font file */ -#define PREPEND_FILE 5 /* PostScript prologue file */ -#define HYPH_FILE 6 /* hyphenation file */ -#define HYPH_PACKED_FILE 7 /* packed hyphenation file */ -#define MAPPING_FILE 8 /* character mapping file */ -#define FILTER_FILE 9 /* filter output file */ -#define MAX_TYPES 10 /* number of file types */ +#define SOURCE_FILE 0 /* input file from command line */ +#define INCLUDE_FILE 1 /* @Include file */ +#define DATABASE_FILE 2 /* database file */ +#define INDEX_FILE 3 /* database index file */ +#define FONT_FILE 4 /* font file */ +#define PREPEND_FILE 5 /* PostScript prologue file */ +#define HYPH_FILE 6 /* hyphenation file */ +#define HYPH_PACKED_FILE 7 /* packed hyphenation file */ +#define MAPPING_FILE 8 /* character mapping file */ +#define FILTER_FILE 9 /* filter output file */ +#define MAX_TYPES 10 /* number of file types */ /* path types (i.e. sequences of directories for file searching) */ -#define SOURCE_PATH 0 /* path to search for source files */ -#define INCLUDE_PATH 1 /* path for @Include files */ -#define SYSINCLUDE_PATH 2 /* path for @SysInclude files */ -#define DATABASE_PATH 3 /* path for @Database files */ -#define SYSDATABASE_PATH 4 /* path for @SysDatabase files */ -#define FONT_PATH 5 /* path for font metrics (AFM) files */ -#define HYPH_PATH 6 /* path for hyphenation files */ -#define MAPPING_PATH 7 /* path for mapping (LCM) files */ -#define MAX_PATHS 8 /* number of mapping paths */ +#define SOURCE_PATH 0 /* path to search for source files */ +#define INCLUDE_PATH 1 /* path for @Include files */ +#define SYSINCLUDE_PATH 2 /* path for @SysInclude files */ +#define DATABASE_PATH 3 /* path for @Database files */ +#define SYSDATABASE_PATH 4 /* path for @SysDatabase files */ +#define FONT_PATH 5 /* path for font metrics (AFM) files */ +#define HYPH_PATH 6 /* path for hyphenation files */ +#define MAPPING_PATH 7 /* path for mapping (LCM) files */ +#define MAX_PATHS 8 /* number of mapping paths */ /* units of measurement */ -#define NO_UNIT 0 /* no unit - for error detection */ -#define FIXED_UNIT 1 /* inches, cm, points, ems, y, z */ -#define FRAME_UNIT 2 /* b unit (frame widths) */ -#define AVAIL_UNIT 3 /* r unit (available spaces) */ -#define DEG_UNIT 4 /* d unit (degrees) */ -#define NEXT_UNIT 5 /* w unit (inners) */ +#define NO_UNIT 0 /* no unit - for error detection */ +#define FIXED_UNIT 1 /* inches, cm, points, ems, y, z */ +#define FRAME_UNIT 2 /* b unit (frame widths) */ +#define AVAIL_UNIT 3 /* r unit (available spaces) */ +#define DEG_UNIT 4 /* d unit (degrees) */ +#define NEXT_UNIT 5 /* w unit (inners) */ /* units of distance as multiples of the basic unit */ -#define CM 567 /* 1 centimetre */ -#define IN 1440 /* 1 inch */ -#define EM 120 /* 1 em (= 1/12 inch) */ -#define PT 20 /* 1 point (= 1/72 inch) */ -#define FR 4096 /* virtual unit for frame units */ -#define DG 128 /* virtual unit for degrees */ -#define SF 128 /* virtual unit for @Scale factors */ +#define CM 567 /* 1 centimetre */ +#define IN 1440 /* 1 inch */ +#define EM 120 /* 1 em (= 1/12 inch) */ +#define PT 20 /* 1 point (= 1/72 inch) */ +#define FR 4096 /* virtual unit for frame units */ +#define DG 128 /* virtual unit for degrees */ +#define SF 128 /* virtual unit for @Scale factors */ /* default size of characters for the PLAINTEXT back end */ -#define PLAIN_WIDTH 144 /* default char width, 10 per inch */ -#define PLAIN_HEIGHT 240 /* default char height, 6 per inch */ +#define PLAIN_WIDTH 144 /* default char width, 10 per inch */ +#define PLAIN_HEIGHT 240 /* default char height, 6 per inch */ /* precedences */ -#define NO_PREC 0 /* lower than any precedence */ -#define BEGIN_PREC 1 /* precedence of @Begin */ -#define END_PREC 2 /* precedence of @End */ -#define LBR_PREC 3 /* precedence of { */ -#define RBR_PREC 4 /* precedence of } */ -#define VCAT_PREC 5 /* precedence of / */ -#define HCAT_PREC 6 /* precedence of | */ -#define ACAT_PREC 7 /* precedence of & and white space */ -#define MIN_PREC 10 /* minimum precedence of user ops */ -#define MAX_PREC 100 /* maximim precedence of user ops */ -#define DEFAULT_PREC 100 /* default precedence of user ops */ -#define CROSSOP_PREC 101 /* precedence of && and &&& ops */ -#define GAP_PREC 102 /* precedence of gap op after cat op */ -#define JUXTA_PREC 103 /* precedence of juxtaposition & */ -#define FILTER_PREC 104 /* precedence of filter symbol ops */ -#define FORCE_PREC 105 /* higher than any precedence */ +#define NO_PREC 0 /* lower than any precedence */ +#define BEGIN_PREC 1 /* precedence of @Begin */ +#define END_PREC 2 /* precedence of @End */ +#define LBR_PREC 3 /* precedence of { */ +#define RBR_PREC 4 /* precedence of } */ +#define VCAT_PREC 5 /* precedence of / */ +#define HCAT_PREC 6 /* precedence of | */ +#define ACAT_PREC 7 /* precedence of & and white space */ +#define MIN_PREC 10 /* minimum precedence of user ops */ +#define MAX_PREC 100 /* maximim precedence of user ops */ +#define DEFAULT_PREC 100 /* default precedence of user ops */ +#define CROSSOP_PREC 101 /* precedence of && and &&& ops */ +#define GAP_PREC 102 /* precedence of gap op after cat op */ +#define JUXTA_PREC 103 /* precedence of juxtaposition & */ +#define FILTER_PREC 104 /* precedence of filter symbol ops */ +#define FORCE_PREC 105 /* higher than any precedence */ /* back ends */ -#define POSTSCRIPT 0 /* PostScript back end */ -#define PDF 1 /* PDF back end */ -#define PLAINTEXT 2 /* plain text back end */ +#define POSTSCRIPT 0 /* PostScript back end */ +#define PDF 1 /* PDF back end */ +#define PLAINTEXT 2 /* plain text back end */ /* error types */ -#define INTERN 0 /* internal error (i.e. bug) */ -#define FATAL 1 /* fatal error, abort now */ -#define WARN 2 /* warning, non-fatal */ +#define INTERN 0 /* internal error (i.e. bug) */ +#define FATAL 1 /* fatal error, abort now */ +#define WARN 2 /* warning, non-fatal */ /* status values returned by AttachGalley() */ -#define ATTACH_KILLED 0 -#define ATTACH_INPUT 1 -#define ATTACH_NOTARGET 2 -#define ATTACH_SUSPEND 3 -#define ATTACH_NULL 4 -#define ATTACH_ACCEPT 5 +#define ATTACH_KILLED 0 +#define ATTACH_INPUT 1 +#define ATTACH_NOTARGET 2 +#define ATTACH_SUSPEND 3 +#define ATTACH_NULL 4 +#define ATTACH_ACCEPT 5 + +/* kinds of tidying up accepted by ReplaceWithTidy */ +#define ACAT_TIDY 0 +#define WORD_TIDY 1 +#define PARA_TIDY 2 /* types of memory usage, used to debug memory consumption */ -#define MEM_BINARY 0 /* the executable binary */ -#define MEM_OBJECTS 1 /* objects currently in free list */ -#define MEM_FONTS 2 /* fonts */ -#define MEM_LEX 3 /* lexical analyser file buffers */ -#define MEM_FILES 4 /* table of file names */ -#define MEM_CROSSREF 5 /* table of file names */ -#define MEM_PAGES 6 /* page grids (-p only) */ -#define MEM_DBCHECK 7 /* database checks */ -#define MEM_DB 8 /* in_memory database */ -#define MEM_HYPH_PATS 9 /* hyphenation patterns */ -#define MEM_CMAPS 10 /* character maps */ -#define MEM_COLOUR_TAB 11 /* colour table */ -#define MEM_LANG_TAB 12 /* language table */ -#define MEM_USAGE_MAX 13 /* number of memory usage types */ +#define MEM_BINARY 0 /* the executable binary */ +#define MEM_OBJECTS 1 /* objects currently in free list */ +#define MEM_FONTS 2 /* fonts */ +#define MEM_LEX 3 /* lexical analyser file buffers */ +#define MEM_FILES 4 /* table of file names */ +#define MEM_CROSSREF 5 /* table of file names */ +#define MEM_PAGES 6 /* page grids (-p only) */ +#define MEM_DBCHECK 7 /* database checks */ +#define MEM_DB 8 /* in_memory database */ +#define MEM_HYPH_PATS 9 /* hyphenation patterns */ +#define MEM_CMAPS 10 /* character maps */ +#define MEM_COLOUR_TAB 11 /* colour table */ +#define MEM_TEXTURE_TAB 12 /* texture table */ +#define MEM_LANG_TAB 13 /* language table */ +#define MEM_USAGE_MAX 14 /* number of memory usage types */ /*@::Keywords@****************************************************************/ /* */ @@ -2405,6 +2458,7 @@ #define KW_UNDERLINE AsciiToFull("@Underline") #define KW_COLOUR AsciiToFull("@SetColour") #define KW_COLOR AsciiToFull("@SetColor") +#define KW_TEXTURE AsciiToFull("@SetTexture") #define KW_OUTLINE AsciiToFull("@Outline") #define KW_LANGUAGE AsciiToFull("@Language") #define KW_CURR_LANG AsciiToFull("@CurrLang") @@ -2501,7 +2555,7 @@ #define checkmem(z, typ) \ { if( (MemCheck != 0) && ( (POINTER) z == MemCheck) ) \ - fprintf(stderr, "%ld = New(%s)\n", (long) z, Image(type(z))); \ + fprintf(stderr, "%ld = New(%s)%s",(long)z,Image(type(z)),STR_NEWLINE); \ } #else @@ -2561,8 +2615,8 @@ #define setdisposed \ { if( (MemCheck != 0) && ((POINTER) zz_hold == MemCheck) ) \ - fprintf(stderr, "Dispose(%ld, %s)\n", (long) zz_hold, \ - Image(type(zz_hold))); \ + fprintf(stderr, "Dispose(%ld, %s)%s", (long) zz_hold, \ + Image(type(zz_hold)), STR_NEWLINE); \ type(zz_hold) = DISPOSED; \ } @@ -2983,6 +3037,7 @@ extern FILE_NUM DatabaseFileNum(FILE_POS *xfpos); extern FULL_CHAR *FileName(FILE_NUM fnum); extern FULL_CHAR *FullFileName(FILE_NUM fnum); +extern int FileType(FILE_NUM fnum); extern FULL_CHAR *EchoFilePos(FILE_POS *pos); extern FULL_CHAR *EchoAltFilePos(FILE_POS *pos); extern FULL_CHAR *EchoFileSource(FILE_NUM fnum); @@ -3011,6 +3066,7 @@ unsigned char res_type); /***** z06.c Object Parser **************************************/ +extern BOOLEAN InDefinitions; extern void SetScope(OBJECT env, int *count, BOOLEAN vis_only); extern void InitParser(FULL_CHAR *cross_db); extern OBJECT Parse(OBJECT *token, OBJECT encl, BOOLEAN defs_allowed, @@ -3029,7 +3085,7 @@ extern BOOLEAN EqualManifested(OBJECT x, OBJECT y); /***** z08.c Object Manifest **************************************/ -extern OBJECT ReplaceWithTidy(OBJECT x, BOOLEAN one_word); +extern OBJECT ReplaceWithTidy(OBJECT x, int one_word); extern OBJECT Manifest(OBJECT x, OBJECT env, STYLE *style, OBJECT bthr[2], OBJECT fthr[2], OBJECT *target, OBJECT *crs, BOOLEAN ok, BOOLEAN need_expand, OBJECT *enclose, BOOLEAN fcr); @@ -3133,6 +3189,7 @@ OBJECT enclose); /*** z22.c Galley Service **************************************/ +extern void ClearHeaders(OBJECT hd); extern void Interpose(OBJECT z, int typ, OBJECT x, OBJECT y); extern void FlushInners(OBJECT inners, OBJECT hd); extern void ExpandRecursives(OBJECT recs); @@ -3319,7 +3376,6 @@ #define StringLength(a) strlen((char *)(a)) #define StringFOpen(a, b) fopen( (char *) (a), (b) ) #define StringFPuts(a, b) fputs( (char *) (a), (b) ) -#define StringFGets(a, b, c) fgets( (char *) (a), (b), (c) ) #define StringRemove(a) remove((char *)(a)) #define StringRename(a, b) rename((char *)(a),(char *)(b)) extern BOOLEAN StringBeginsWith(FULL_CHAR *str, FULL_CHAR *pattern); @@ -3363,6 +3419,7 @@ extern OBJECT BuildEnclose(OBJECT hd); /***** z45.c External Sort **************************************/ +extern int ReadOneLine(FILE *fp, FULL_CHAR *buff, int buff_len); extern LINE *ReadLines(FILE *fp, FULL_CHAR *fname, FULL_CHAR *first_line, int *len); extern void WriteLines(FILE *fp, LINE *lines, int len); extern void SortLines(LINE *lines, int lines_len); @@ -3440,6 +3497,11 @@ extern FULL_LENGTH PlainCharHeight; /* character height */ extern BOOLEAN PlainFormFeed; /* true if using \f */ +/***** z52.c Texture Service **************************************/ +extern void TextureInit(void); +extern void TextureChange(STYLE *style, OBJECT x); +extern FULL_CHAR *TextureCommand(TEXTURE_NUM pnum); + /*@::assert(), debug(), debug flags@******************************************/ /* */ /* ASSERT AND DEBUG CODE */ @@ -3562,8 +3624,9 @@ #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 */ +#define DTX 52 /* z52.c -dtx Texture Service */ +#define DPP 53 /* -dpp Profiling */ +#define ANY 54 /* -d any */ #else #define ifdebug(cat, urg, x) Binary files lout-3.26/include/.dsf.swp and lout-3.27/include/.dsf.swp differ Binary files lout-3.26/include/.lengths.swp and lout-3.27/include/.lengths.swp differ diff -u --recursive --new-file -u --recursive --new-file lout-3.26/include/README lout-3.27/include/README --- lout-3.26/include/README Wed Sep 18 12:22:38 2002 +++ lout-3.27/include/README Mon Nov 18 17:48:00 2002 @@ -1,86 +1,97 @@ Directory lout/include This directory contains Lout source files for the standard packages. -The following listing classifies them into types of files. +The following listing classifies them into types of files. Ordinary +users only need to know about setup files, not source files. Setup files (containing mainly lists of options settable by the user) --------------------------------------------------------------------- Setup files for basic document types (choose one): - doc The OrdinarySetup package - report The ReportSetup package - book The BookSetup package - slides The OverheadsSetup package - picture The IllustrationSetup package + doc OrdinarySetup package + report ReportSetup package + book BookSetup package + slides OverheadsSetup package + picture IllustrationSetup package Setup files for special-purpose packages (choose any combination): - tbl The Tbl table formatting package - tab The Tab table formatting package (OBSOLETE, use tbl) - eq The Eq equation formatting package - diag The Diag diagram drawing package - fig The Fig advanced graphics package (OBSOLETE, use diag) - graph The Graph graph drawing package - pas The Pas Pascal progam printing package - modula The Modula Modula-2 progam printing package - latin2 The Latin2 (Eastern European characters) package - russian The Russian language package + diag Diag diagram drawing package + eq Eq equation formatting package + graph Graph graph drawing package + latin2 Latin2 (Eastern European characters) package + pie Pie pie graph drawing package + russian Russian language package + tbl Tbl table formatting package + xrgb @Xrgb symbol (extra named colours) Setup files for program formatting packages (choose any combination): + blue Blue cprint C and C++ eiffel Eiffel - blue Blue + java Java + modula Modula-2 (quick hack, does not use prg2lout) + pas Pascal (quick hack, does not use prg2lout) perl Perl + Pod pod Pod python Python -Source files (containing Lout and PostScript source code for the packages) --------------------------------------------------------------------------- +Source files containing Lout and PostScript source code for the packages +------------------------------------------------------------------------ - bsf The BasicSetup package - ccommand Definition of the @ColourCommand symbol + bsf BasicSetup package bsf.lpg A PostScript prepend file needed by BasicSetup - dsf The DocumentSetup package - docf The OrdinarySetup package - reportf The ReportSetup package - bookf The BookSetup package - slidesf The OverheadsSetup package - picturef The IllustrationSetup package + dsf DocumentSetup package + docf OrdinarySetup package + reportf ReportSetup package + bookf BookSetup package + slidesf OverheadsSetup package + picturef IllustrationSetup package - tabf The Tab table formatting package (OBSOLETE) - tabf.lpg A PostScript prepend file needed by tabf (OBSOLETE) - tblf The Tbl table formatting package - eqf The Eq equation formatting package - figf The Fig advanced graphics package (OBSOLETE) - figf.lpg A PostScript prepend file needed by figf (OBSOLETE) - diagf The Diag diagram drawing package + diagf Diag diagram drawing package diagf.etc A file included by diagf diagf.lpg A PostScript prepend file needed by diagf - graphf The Graph graph drawing package + eqf Eq equation formatting package + graphf Graph graph drawing package graphf.etc A file included by graphf graphf.lpg A PostScript prepend file needed by graphf - pasf Pascal - modulaf Modula-2 - latin2.fd Latin2 font definitions file (placeholder file) + pief Pie diagram drawing package + pief.lpg A PostScript prepend file needed by pief russian.fd Russian font definitions file (placeholder file) + tblf Tbl table formatting package + bluef Blue cprintf C and C++ eiffelf Eiffel - bluef Blue + javaf Java + modulaf Modula-2 + pasf Pascal perlf Perl podf Pod pythonf Python -Miscellaneous -------------- +Obsolete source files retained for backward compatibility +--------------------------------------------------------- + + tab Tab table formatting package (OBSOLETE, use tbl) + tabf Tab table formatting package (OBSOLETE) + tabf.lpg A PostScript prepend file needed by tabf (OBSOLETE) + fig Fig advanced graphics package (OBSOLETE, use diag) + figf Fig advanced graphics package (OBSOLETE) + figf.lpg A PostScript prepend file needed by figf (OBSOLETE) + +Miscellaneous source files +-------------------------- langdefs Standard language definitions file + lengths Helper definitions: @PSLengths and @LoutLengths + coltex Helper definitions: @ColourCommand and @TextureCommand mydefs Empty file for if the user doesn't have a mydefs ts The ToySetup package (an expert users' intro. example) init A Lout source file used during installation (lout -x) Jeffrey H. Kingston -21 October 2001 +30 October 2002 diff -u --recursive --new-file -u --recursive --new-file lout-3.26/include/book lout-3.27/include/book --- lout-3.26/include/book Wed Sep 18 12:22:39 2002 +++ lout-3.27/include/book Thu Nov 21 08:34:06 2002 @@ -144,34 +144,68 @@ # @RefListBreak { } # break style of ref list # @RefListLabelWidth { @ListLabelWidth } # Labels column width # @RefListSortKey { @Tag } # sorting key + # @MakeGlossary { No } # make glossary? Yes or No + # @GlossaryText { @Null } # glossary initial text + # @GlossaryFont { } # glossary entries font + # @GlossaryBreak { } # glossary entries break + # @GlossaryFormat { +3p @Font @S @Name # glossary entries format + # @Right @I { @Word&&page @PageNum } + # @DP @RawIndentedDisplay @Body } + # @GlossaryGap { @DisplayGap } # gap between glossary entries + # @GlossaryColumnNumber{ 2 } # glossary columns (1 to 10) + # @GlossaryColumnGap { 1.00c @OrIfPlain 6s } # glossary column gap + # @InGlossaryFont { smallcaps } # font for @InGlossary + # @InGlossaryFormat { @Body } # format for @InGlossary + # @MakeIndex { No } # make index? Yes or No # @MakeIndex { No } # make index? Yes or No @MakeIndex { Yes } # make index? Yes or No # @IndexText { @Null } # index initial text # @IndexFont { } # index entries font # @IndexBreak { {oragged 1.2fx} @OrIfPlain {oragged 1fx} } # and break + # @IndexFormat { @Body } # @Index format + # @SubIndexFormat { {1f @Wide}@Body } # @SubIndex format + # @SubSubIndexFormat { {2f @Wide}@Body } # @SubSubIndex format # @IndexColumnNumber { 2 } # index columns (1 to 10) # @IndexColumnGap { 1.00c @OrIfPlain 6s } # index column gap # @IndexCtd { Yes } # include (ctd.) lines # @IndexCtdWord { continued } # "ctd." in current lang. # @IndexCtdFormat { @Body @I (@CtdWord) } # format of ctd. + # @IndexSpacerAbove { 2v } # space above index spacer + # @IndexSpacerBelow { 1v } # space below index spacer + # @IndexSpacerFont { +3p } # font of index spacer + # @IndexSpacerFormat { @Body } # format of index spacer # @MakeIndexA { No } # make index A? Yes or No # @IndexAText { @Null } # index A initial text # @IndexAFont { } # index A entries font # @IndexABreak { {oragged 1.2fx} @OrIfPlain {oragged 1fx} } # and break + # @IndexAFormat { @Body } # @IndexA format + # @SubIndexAFormat { {1f @Wide}@Body } # @SubIndexA format + # @SubSubIndexAFormat { {2f @Wide}@Body } # @SubSubIndexA format # @IndexAColumnNumber { 2 } # index A columns (1 to 10) # @IndexAColumnGap { 1.00c @OrIfPlain 6s } # index A column gap # @IndexACtd { Yes } # include (ctd.) lines # @IndexACtdWord { continued } # "ctd." in current lang. # @IndexACtdFormat { @Body @I (@CtdWord) } # format of ctd. + # @IndexASpacerAbove { 2v } # space above index A spacer + # @IndexASpacerBelow { 1v } # space below index A spacer + # @IndexASpacerFont { +3p } # font of index A spacer + # @IndexASpacerFormat { @Body } # format of index A spacer # @MakeIndexB { No } # make index B? Yes or No # @IndexBText { @Null } # index B initial text # @IndexBFont { } # index B entries font # @IndexBBreak { {oragged 1.2fx} @OrIfPlain {oragged 1fx} } # and break + # @IndexBFormat { @Body } # @IndexB format + # @SubIndexBFormat { {1f @Wide}@Body } # @SubIndexB format + # @SubSubIndexBFormat { {2f @Wide}@Body } # @SubSubIndexB format # @IndexBColumnNumber { 2 } # index B columns (1 to 10) # @IndexBColumnGap { 1.00c @OrIfPlain 6s } # index B column gap # @IndexBCtd { Yes } # include (ctd.) lines # @IndexBCtdWord { continued } # "ctd." in current lang. # @IndexBCtdFormat { @Body @I (@CtdWord) } # format of ctd. + # @IndexBSpacerAbove { 2v } # space above index B spacer + # @IndexBSpacerBelow { 1v } # space below index B spacer + # @IndexBSpacerFont { +3p } # font of index B spacer + # @IndexBSpacerFormat { @Body } # format of index B spacer # @TopGap { 0.75c @OrIfPlain 2f } # gap between figures # @MidGap { 0.75c @OrIfPlain 2f } # gap above/below body text # @FootNoteNumbers { Arabic } # footnote numbers @@ -280,6 +314,7 @@ # @AbbreviationsWord { abbreviations } # word for "Abbreviations" # @ChapterWord { chapter } # word for "Chapter" # @AppendixWord { appendix } # word for "Appendix" + # @GlossaryWord { glossary } # word for "Glossary" # @IndexWord { index } # word for "Index" # @IndexAWord { index } # word for "Index" (A) # @IndexBWord { index } # word for "Index" (B) @@ -340,6 +375,7 @@ # @SubAppendixInContents { Yes } # add subappendices to contents # @SubSubAppendixInContents { No } # add sub-subapps to contents # @ReferencesInContents { Yes } # add ref. section to contents + # @GlossaryInContents { Yes } # add glossary to contents # @IndexInContents { Yes } # add index to contents # @IndexAInContents { Yes } # add index A to contents # @IndexBInContents { Yes } # add index B to contents @@ -386,6 +422,7 @@ # @ChapterPrefix { } # for structured page nums # @AppendixPrefix { } # for structured page nums # @ReferencesPrefix { } # for structured page nums + # @GlossaryPrefix { } # for structured page nums # @IndexPrefix { } # for structured page nums # @IndexAPrefix { } # for structured page nums # @IndexBPrefix { } # for structured page nums diff -u --recursive --new-file -u --recursive --new-file lout-3.26/include/bookf lout-3.27/include/bookf --- lout-3.26/include/bookf Wed Sep 18 12:22:38 2002 +++ lout-3.27/include/bookf Thu Nov 21 10:54:49 2002 @@ -27,6 +27,7 @@ named @AbbreviationsWord { abbreviations } named @ChapterWord { chapter } named @AppendixWord { appendix } + named @GlossaryWord { glossary } named @IndexWord { index } named @IndexAWord { index } named @IndexBWord { index } @@ -106,6 +107,7 @@ named @SubAppendixInContents { Yes } named @SubSubAppendixInContents { No } named @ReferencesInContents { Yes } + named @GlossaryInContents { Yes } named @IndexInContents { Yes } named @IndexAInContents { Yes } named @IndexBInContents { Yes } @@ -158,6 +160,7 @@ named @ChapterPrefix { } named @AppendixPrefix { } named @ReferencesPrefix { } + named @GlossaryPrefix { } named @IndexPrefix { } named @IndexAPrefix { } named @IndexBPrefix { } @@ -319,7 +322,6 @@ named @OnTitlePage {} named @AfterTitlePage {} named @AtEnd { dft } - named @AtAfter { dft } named @InitialFont { @InitialFont } named @InitialBreak { @InitialBreak } named @InitialOutdent { @InitialOutdent } @@ -331,6 +333,7 @@ named @FirstPageNumber { @FirstPageNumber } named @IntroFirstPageNumber { @IntroFirstPageNumber } named @OptimizePages { @OptimizePages } + named @GlossaryText { @GlossaryText } named @IndexText { @IndexText } named @IndexAText { @IndexAText } named @IndexBText { @IndexBText } @@ -450,6 +453,39 @@ } + def @GlossaryPart + named @Tag {} + { + def @Run + { + NonStart @Runner + @MajorNum {} + @MajorTitle { glossary @WordVal @GlossaryWord } + @MinorNum {} + @MinorTitle { glossary @WordVal @GlossaryWord } + @Owner { @Tag } + @Prefix { @GlossaryPrefix } + } + + @LargeScaleStructure + tag { @Tag } + type { Major } + initiallanguage { @InitialLanguage } + title { glossary @WordVal @GlossaryWord } + aboveheadinggap { @AboveChapterGap } + headingfont { @ChapterHeadingFont } + headingbreak { @ChapterHeadingBreak } + headingformat { @Num @ChapterHeadingFormat @Body } + headingtext { @GlossaryText } + incontents { @GlossaryInContents } + pnprefix { @GlossaryPrefix } + inrunners { Yes } + sendheader { @Full @Body } + innergap { @SectionGap } + wantindefinite { Yes } + @GlossarySection @Run + } + def @IndexPart named @Tag {} { @@ -588,6 +624,7 @@ // @ReferencesBeforeAppendices @Do { @MakeReferences @Do @ReferencesPart } + // @MakeGlossary @Do @GlossaryPart // @AppendixList @FirstAppendixNumber // @ReferencesBeforeAppendices @NoDo { @MakeReferences @Do @ReferencesPart @@ -637,6 +674,7 @@ // @ReferencesBeforeAppendices @Do { @MakeReferences @Do @ReferencesPart } + // @MakeGlossary @Do @GlossaryPart // @AppendixList @FirstAppendixNumber // @ReferencesBeforeAppendices @NoDo { @MakeReferences @Do @ReferencesPart diff -u --recursive --new-file -u --recursive --new-file lout-3.26/include/bsf lout-3.27/include/bsf --- lout-3.26/include/bsf Wed Oct 9 08:32:47 2002 +++ lout-3.27/include/bsf Mon Nov 18 10:24:04 2002 @@ -1,10 +1,11 @@ ############################################################################### # # -# Lout @BasicSetup package (Version 3.13) # +# Lout @BasicSetup package # # # # Jeffrey H. Kingston # # 5 February 1999 # +# Modified 30 October 2002 - reorganization of colours, textures, lengths # # # # Based on the first part of the @DocumentLayout package, version 3.11. # # # @@ -15,7 +16,9 @@ # # ############################################################################### -@SysPrependGraphic { "bsf.lpg" } # rules, boxes, margin note setup +@SysInclude { lengths } # @PSLengths +@SysInclude { coltex } # @ColourCommand and @TextureCommand +@SysPrependGraphic { bsf.lpg } # rules, boxes, margin note setup ############################################################################### @@ -38,73 +41,55 @@ ########################################################################### # # -# @ColourCommand, @Colour, @Color # +# @Colour, @Color # # # ########################################################################### -@SysInclude { ccommand } +def @Colour @Color left col right y { {@ColourCommand col} @SetColour y } - def @Colour @Color left col right y { {@ColourCommand col} @SetColour y } - export i c p m s v f - def @LengthUnits - { - def i left x { - @BackEnd @Case { - PostScript @Yield { x" in" } - PDF @Yield { "__mul(__in, "x")" } - PlainText @Yield "" - } - } - - def c left x { - @BackEnd @Case { - PostScript @Yield { x" cm" } - PDF @Yield { "__mul(__cm, "x")" } - PlainText @Yield "" - } - } - - def p left x { - @BackEnd @Case { - PostScript @Yield { x" pt" } - PDF @Yield { "__mul(__pt, "x")" } - PlainText @Yield "" - } - } - - def m left x { - @BackEnd @Case { - PostScript @Yield { x" em" } - PDF @Yield { "__mul(__em, "x")" } - PlainText @Yield "" - } - } - - def s left x { - @BackEnd @Case { - PostScript @Yield { x" sp" } - PDF @Yield { "__mul(__louts, "x")" } - PlainText @Yield "" - } - } +########################################################################### +# # +# @Texture # +# # +########################################################################### - def v left x { - @BackEnd @Case { - PostScript @Yield { x" vs" } - PDF @Yield { "__mul(__loutv, "x")" } - PlainText @Yield "" - } - } - def f left x { - @BackEnd @Case { - PostScript @Yield { x" ft" } - PDF @Yield { "__mul(__loutf, "x")" } - PlainText @Yield "" - } - } - } +def @Texture + left type + named scale { 1 } + named hscale { 1 } + named vscale { 1 } + import @PSLengths named angle { 0d } + import @PSLengths named hshift { 0i } + import @PSLengths named vshift { 0i } + import @PSLengths named width { "dft" } + import @PSLengths named height { "dft" } + import @PSLengths named gap { "dft" } + import @PSLengths named radius { "dft" } + import @PSLengths named linewidth { "dft" } + named font { "dft" } + import @PSLengths named size { "dft" } + named value { "dft" } + right x +{ + { type @TextureCommand + scale { scale } + hscale { hscale } + vscale { vscale } + angle { angle } + hshift { hshift } + vshift { vshift } + width { width } + height { height } + gap { gap } + radius { radius } + linewidth { linewidth } + font { font } + size { size } + value { value } + } @SetTexture x +} ############################################################################### @@ -733,40 +718,28 @@ ########################################################################### # # - # @AddPaint, @LineWidth (obsolete), @StrokeCommand # + # @AddPaint, @StrokeCommand # # # ########################################################################### - def @AddPaint right col + def @AddPaint + left col + right texture { col @Case { none @Yield "" nochange @Yield { @BackEnd @Case { - PostScript @Yield "gsave fill grestore" - PDF @Yield "q f Q" - PlainText @Yield "" + PostScript @Yield { "gsave" texture "fill grestore" } + PDF @Yield { "q f Q" } + PlainText @Yield { "" } } } else @Yield { @BackEnd @Case { - PostScript @Yield {"gsave" @ColourCommand col "fill grestore"} + PostScript @Yield {"gsave" @ColourCommand col texture "fill grestore"} PDF @Yield { "q" @ColourCommand col "f Q" } - PlainText @Yield "" - } - } - } - } - - def @LineWidth right lw - { - lw @Case { - "" @Yield "" - else @Yield { - @BackEnd @Case { - PostScript @Yield { lw "setlinewidth" } - PDF @Yield { lw "w" } - PlainText @Yield "" + PlainText @Yield { "" } } } } @@ -802,7 +775,7 @@ ########################################################################### def @FullWidthRule - import @LengthUnits named linewidth {} + import @PSLengths named linewidth {} { @BackEnd @Case { @@ -819,7 +792,7 @@ } def @LocalWidthRule - import @LengthUnits named linewidth {} + import @PSLengths named linewidth {} { @BackEnd @Case { @@ -837,21 +810,22 @@ def @Box named margin { 0.3f } - import @LengthUnits named linewidth {} + import @PSLengths named linewidth {} named paint { none } + import @TextureImport named texture {} right x { @BackEnd @Case { PostScript @Yield @VContract @HContract 0c @HShift { - {"LoutBox" @AddPaint paint @StrokeCommand linewidth } + {"LoutBox" paint @AddPaint texture @StrokeCommand linewidth } @Graphic { ^/margin ^|margin 0c @HShift @OneRow x |margin /margin } } PDF @Yield @VContract @HContract 0c @HShift { { "0 0 m __xsize 0 l __xsize __ysize l 0 __ysize l h" - @AddPaint paint @StrokeCommand linewidth } @Graphic + paint @AddPaint texture @StrokeCommand linewidth } @Graphic { ^/margin ^|margin 0c @HShift @OneRow x |margin /margin } } @@ -863,8 +837,9 @@ def @CurveBox named margin { 0.3f } - import @LengthUnits named linewidth {} + import @PSLengths named linewidth {} named paint { none } + import @TextureImport named texture {} right x { def @PDFStuff @@ -887,13 +862,13 @@ "__div(__mul(11, __xmark), 24) 0" "__xmark 0 c" "h" - @AddPaint paint @StrokeCommand linewidth + paint @AddPaint texture @StrokeCommand linewidth } @VContract @HContract 0c @HShift @BackEnd @Case { PostScript @Yield { - {"LoutCurveBox" @AddPaint paint @StrokeCommand linewidth } + {"LoutCurveBox" paint @AddPaint texture @StrokeCommand linewidth } @Graphic { ^/margin ^|margin 0c @HShift @OneRow x |margin /margin } } @@ -911,8 +886,9 @@ def @ShadowBox named margin { 0.3f } - import @LengthUnits named linewidth {} + import @PSLengths named linewidth {} named paint { none } + import @TextureImport named texture {} named shadow { 0.2f } right x { @@ -921,14 +897,22 @@ PostScript @Yield { "LoutShadowBox fill" @Graphic { ^/shadow ^|shadow 0c @HShift - @Box margin {margin} paint {paint} linewidth {linewidth} x + @Box + margin {margin} + paint {paint} + texture { texture } + linewidth {linewidth} x |shadow /shadow } } PlainText @Yield { ^/shadow ^|shadow 0c @HShift - @Box margin {margin} paint {paint} linewidth {linewidth} x + @Box + margin { margin } + paint { paint } + texture { texture } + linewidth {linewidth} x |shadow /shadow } @@ -942,7 +926,11 @@ } @Graphic { ^/shadow ^|shadow 0c @HShift - @Box margin {margin} paint {paint} linewidth {linewidth} x + @Box + margin { margin } + paint { paint } + texture { texture } + linewidth { linewidth } x |shadow /shadow } } @@ -957,13 +945,13 @@ ########################################################################### def @BoundaryMarks - import @LengthUnits named linewidth { 0.2p } - import @LengthUnits named length { 0.5c } - import @LengthUnits named gap { 0.5c } - import @LengthUnits named lout { 0c } - import @LengthUnits named rout { 0c } - import @LengthUnits named uout { 0c } - import @LengthUnits named dout { 0c } + import @PSLengths named linewidth { 0.2p } + import @PSLengths named length { 0.5c } + import @PSLengths named gap { 0.5c } + import @PSLengths named lout { 0c } + import @PSLengths named rout { 0c } + import @PSLengths named uout { 0c } + import @PSLengths named dout { 0c } { def @UpStroke { "0" gap "rmoveto" "0" length "rlineto" } def @DownStroke { "0" gap "neg" "rmoveto" "0" length "neg rlineto" } @@ -1074,7 +1062,7 @@ def @PageMark right tag { - @Null & tag @LinkDest & @PageMarker&&preceding @Tagged tag + tag @LinkDest @Null & @PageMarker&&preceding @Tagged tag } def @NoLinkPageMark diff -u --recursive --new-file -u --recursive --new-file lout-3.26/include/bsf.bk lout-3.27/include/bsf.bk --- lout-3.26/include/bsf.bk Tue Oct 8 16:34:08 2002 +++ lout-3.27/include/bsf.bk Thu Jan 1 10:00:00 1970 @@ -1,1618 +0,0 @@ - -############################################################################### -# # -# Lout @BasicSetup package (Version 3.13) # -# # -# Jeffrey H. Kingston # -# 5 February 1999 # -# # -# Based on the first part of the @DocumentLayout package, version 3.11. # -# # -# This package contains basic symbols used widely throughout many # -# documents, for font changes, particular characters, standard words in # -# the current language, date and time, paragraphs, lists, colours, # -# rules, and boxes. # -# # -############################################################################### - -@SysPrependGraphic { "bsf.lpg" } # rules, boxes, margin note setup - - -############################################################################### -# # -# The following symbols are defined outside @BasicSetup so that # -# they can be invoked when setting its parameters in the @Use clause. # -# # -############################################################################### - -def @OrIfPlain - precedence 80 - left x - right y -{ - @BackEnd @Case { - PlainText @Yield y - else @Yield x - } -} - -########################################################################### -# # -# @ColourCommand, @Colour, @Color # -# # -########################################################################### - -@SysInclude { ccommand } - - def @Colour @Color left col right y { {@ColourCommand col} @SetColour y } - - export i c p m s v f - def @LengthUnits - { - def i left x { - @BackEnd @Case { - PostScript @Yield { x" in" } - PDF @Yield { "__mul(__in, "x")" } - PlainText @Yield "" - } - } - - def c left x { - @BackEnd @Case { - PostScript @Yield { x" cm" } - PDF @Yield { "__mul(__cm, "x")" } - PlainText @Yield "" - } - } - - def p left x { - @BackEnd @Case { - PostScript @Yield { x" pt" } - PDF @Yield { "__mul(__pt, "x")" } - PlainText @Yield "" - } - } - - def m left x { - @BackEnd @Case { - PostScript @Yield { x" em" } - PDF @Yield { "__mul(__em, "x")" } - PlainText @Yield "" - } - } - - def s left x { - @BackEnd @Case { - PostScript @Yield { x" sp" } - PDF @Yield { "__mul(__louts, "x")" } - PlainText @Yield "" - } - } - - def v left x { - @BackEnd @Case { - PostScript @Yield { x" vs" } - PDF @Yield { "__mul(__loutv, "x")" } - PlainText @Yield "" - } - } - - def f left x { - @BackEnd @Case { - PostScript @Yield { x" ft" } - PDF @Yield { "__mul(__loutf, "x")" } - PlainText @Yield "" - } - } - } - - -############################################################################### -# # -# Symbols exported by @BasicSetup. # -# # -############################################################################### - -export - - @InitialFont @InitialBreak @InitialOutdent @InitialSpace @InitialLanguage - @InitialColour @OptimizePages @HeadingFont - @ParaGap @ParaIndent @DisplayGap @DisplayIndent @DefaultIndent - @DisplayNumStyle @WideIndent @VeryWideIndent - @ListGap @ListIndent @ListRightIndent @ListLabelWidth - @NumberSeparator - - @Word @Roman @UCRoman @Alpha @UCAlpha @Months @ShortMonths @WeekDays - @ShortWeekDays @TwelveHours @ShortHours @MeriDiems @ShortMeriDiems - - @Sym @R @I @B @BI @S @F @II - "~" "~~" "``" "''" ",," "--" "---" "..." - - @Bullet @ParSym @SectSym @Dagger @DaggerDbl @CDot @Sterling @Yen @Florin - @Star @Degree @Minute @Second @Multiply @Divide @Lozenge @Register - @CopyRight @TradeMark @Euro - - @Date @Time @DateTimeFormat @DropCapTwo @DropCapThree @Centre @Right - @NoDotSep @NoDotJoin @Join @Sep @DotSep @ColonSep @DotJoin @DashJoin - @NumSep @OverStrike @Sup @Sub @FullWidthRule @LocalWidthRule - @Box @CurveBox @ShadowBox @BoundaryMarks - @NumberMarker @NumberOf @TitleMarker @TitleOf - @PageMarker @PageMark @NoLinkPageMark @PageOf @CrossLink @ExternalLink - - @BeginDisplayCounter - - @Heading "^" "&-" @If @Not @And @Or @True - @PP @LP @LLP @DP @LOP @NP @CNP - - @BeginAlignedDisplays - @EndAlignedDisplays - - @Display - @LeftDisplay - @IndentedDisplay - @QuotedDisplay - @CentredDisplay - @RightDisplay - @AlignedDisplay - @LeftAlignedDisplay - @IndentedAlignedDisplay - @QuotedAlignedDisplay - @CentredAlignedDisplay - @RightAlignedDisplay - @NumberedDisplay - @LeftNumberedDisplay - @IndentedNumberedDisplay - @QuotedNumberedDisplay - @CentredNumberedDisplay - @RightNumberedDisplay - @AlignedNumberedDisplay - @LeftAlignedNumberedDisplay - @IndentedAlignedNumberedDisplay - @QuotedAlignedNumberedDisplay - @CentredAlignedNumberedDisplay - @RightAlignedNumberedDisplay - - @RawDisplay - @RawLeftDisplay - @RawIndentedDisplay - @RawQuotedDisplay - @RawCentredDisplay - @RawRightDisplay - @RawAlignedDisplay - @RawLeftAlignedDisplay - @RawIndentedAlignedDisplay - @RawQuotedAlignedDisplay - @RawCentredAlignedDisplay - @RawRightAlignedDisplay - @RawNumberedDisplay - @RawLeftNumberedDisplay - @RawIndentedNumberedDisplay - @RawQuotedNumberedDisplay - @RawCentredNumberedDisplay - @RawRightNumberedDisplay - @RawAlignedNumberedDisplay - @RawLeftAlignedNumberedDisplay - @RawIndentedAlignedNumberedDisplay - @RawQuotedAlignedNumberedDisplay - @RawCentredAlignedNumberedDisplay - @RawRightAlignedNumberedDisplay - - @ListItem - @ListInterruptItem - @ListNewPage - @DropListItem - @TagItem - @DropTagItem - - @EndList - @RawEndList - - @RawList - @RawLeftList - @RawIndentedList - @RawQuotedList - @RawCentredList @RawCenteredList - @RawNumberedList - @RawParenNumberedList - @RawRomanList - @RawParenRomanList - @RawUCRomanList - @RawParenUCRomanList - @RawAlphaList - @RawParenAlphaList - @RawUCAlphaList - @RawParenUCAlphaList - @RawBulletList - @RawStarList - @RawDashList - @RawTaggedList - @RawWideTaggedList - @RawVeryWideTaggedList - - @List - @LeftList - @IndentedList - @QuotedList - @CentredList @CenteredList - @NumberedList - @ParenNumberedList - @RomanList - @ParenRomanList - @UCRomanList - @ParenUCRomanList - @AlphaList - @ParenAlphaList - @UCAlphaList - @ParenUCAlphaList - @BulletList - @StarList - @DashList - @TaggedList - @WideTaggedList - @VeryWideTaggedList - - -############################################################################### -# # -# The @BasicSetup package. # -# # -############################################################################### - -def @BasicSetup - named @InitialFont { Times Base 12p } # initial font - named @InitialBreak { {adjust 1.20fx hyphen} @OrIfPlain - {ragged 1fx nohyphen} } # initial break - named @InitialOutdent { 2f @OrIfPlain 4s } # initial outdent - named @InitialSpace { lout } # initial space style - named @InitialLanguage{ English } # initial language - named @InitialColour { black } # initial colour - named @OptimizePages { No } # optimize page breaks? - named @HeadingFont { Bold } # font for @Heading - named @FixedWidthFont { Courier Base -1p } # font for @F - named @ParaGap { 1.3vx @OrIfPlain 1f } # gap between paragraphs - named @ParaIndent { 2.0f @OrIfPlain 5s } # first-line indent for @PP - named @DisplayGap { 1.0v @OrIfPlain 1f } # gap above, below displays - named @DisplayIndent { 2.0f @OrIfPlain 5s } # @IndentedDisplay indent - named @DefaultIndent { 0.5rt } # @Display indent - named @DisplayNumStyle - right num { (num) } # display number style - named @WideIndent { 4.0f @OrIfPlain 10s } # @WideTaggedList indent - named @VeryWideIndent { 8.0f @OrIfPlain 20s } # @VeryWideTaggedList indent - named @ListOuterGap { 1.0v @OrIfPlain 1f } # gap before, after list - named @ListGap { 1.0v @OrIfPlain 1f } # gap between list items - named @ListIndent { 0s } # indent of list items - named @ListRightIndent{ 0s } # right indent of list items - named @ListLabelWidth { 2.0f @OrIfPlain 5s } # width allowed for list tags - named @NumberSeparator{ . } # separates numbers like 2.3.7 - import @BasicSetup - named @CrossLinkFormat - right @Body { @Body } # format for cross links - import @BasicSetup - named @ExternalLinkFormat - right @Body { @Body } # format for external links -@Begin - - ########################################################################### - # # - # @Sym, font symbols, and miscellaneous special characters. # - # # - ########################################################################### - - def @Sym right x { { Symbol Base } @Font @Char x } - - def @R right x { Base @Font x } - def @I right x { Slope @Font x } - def @B right x { Bold @Font x } - def @BI right x { BoldSlope @Font x } - def @S right x { smallcaps @Font x } - def @F right x { @FixedWidthFont @Font x } - - def @II - right x - { - { @CurrFace @Case { - Bold @Yield BoldSlope - else @Yield Slope - } } @Font x - } - - def "~" left x right y { x &1su y } - def "~~" left x right y { x &2s y } - - def "``" { @Char "quotedblleft" @OrIfPlain "``" } - def "''" { @Char "quotedblright" @OrIfPlain "''" } - def ",," { @Char "quotedblbase" @OrIfPlain ",," } - def "--" { @Char "endash" @OrIfPlain "--" } - def "---" { @Char "emdash" @OrIfPlain "---"} - def "..." { @Char "ellipsis" @OrIfPlain "..."} - def @Bullet { @Char "bullet" @OrIfPlain "o" } - def @ParSym { @Char "paragraph" @OrIfPlain "P" } - def @SectSym { @Char "section" @OrIfPlain "$" } - def @Dagger { @Char "dagger" @OrIfPlain "+" } - def @DaggerDbl { @Char "daggerdbl" @OrIfPlain "++" } - def @CDot { @Char "periodcentered" @OrIfPlain "." } - def @Sterling { @Char "sterling" @OrIfPlain "&" } - def @Yen { @Char "yen" @OrIfPlain "Y" } - def @Florin { @Char "florin" @OrIfPlain "f" } - - def @Star { @Sym "asteriskmath" @OrIfPlain "*" } - def @Degree { @Sym "degree" @OrIfPlain "o" } - def @Minute { @Sym "minute" @OrIfPlain "'" } - def @Second { @Sym "second" @OrIfPlain "''" } - def @Multiply { @Sym "multiply" @OrIfPlain "x" } - def @Divide { @Sym "divide" @OrIfPlain "/" } - def @Lozenge { @Sym "lozenge" @OrIfPlain "O" } - def @Register { @Sym "registersans" @OrIfPlain "R" } - def @CopyRight { @Sym "copyrightsans" @OrIfPlain "C" } - def @TradeMark { @Sym "trademarksans" @OrIfPlain "TM" } - - def @Euro - { - @BackEnd @Case { - - PostScript @Yield { - 0.65w @VShift @VContract @HContract - "xsize ysize ysize 0.07 mul louteuro" @Graphic { - 0.7f @High 0.735f @Wide - } - } - - PDF @Yield { EUR } - - PlainText @Yield { EUR } - } - } - - - ########################################################################### - # # - # Symbols stored in the "standard" database # - # # - # @Word language-spacific words such as Chapter, etc. # - # @Roman lower case Roman numerals i, ii, ... , cc # - # @UCRoman upper case Roman numerals I, II, ... , CC # - # @Alpha lower case Roman alphabet a, b, ... , z # - # @UCAlpha upper case Roman alphabet A, B, ... , Z # - # @Months months of the year: January, ... , December # - # @ShortMonths months of the year, abbreviated: Jan, ..., Dec # - # @WeekDays days of the week: Sunday, ... , Saturday # - # @ShortWeekDays days of the week, abbreviated: Sun, ... , Sat # - # @TwelveHours hours, from 1 to 12 # - # @ShortHours hours, from 0 to 23 # - # @DateTimeFormat format of results of @Date and @Time # - # # - ########################################################################### - - def @Word left @Tag right @Val { @Val } - def @Roman left @Tag right @Val { @Val } - def @UCRoman left @Tag right @Val { @Val } - def @Alpha left @Tag right @Val { @Val } - def @UCAlpha left @Tag right @Val { @Val } - def @Months left @Tag right @Val { @Val } - def @ShortMonths left @Tag right @Val { @Val } - def @WeekDays left @Tag right @Val { @Val } - def @ShortWeekDays left @Tag right @Val { @Val } - def @TwelveHours left @Tag right @Val { @Val } - def @ShortHours left @Tag right @Val { @Val } - def @MeriDiems left @Tag right @Val { @Val } - def @ShortMeriDiems left @Tag right @Val { @Val } - - export @Value - def @DateTimeFormat left @Tag - named @Value - named @Year {} - named @ShortYear {} - named @Month {} - named @ShortMonth {} - named @MonthNum {} - named @Day {} - named @ShortDay {} - named @DayNum {} - named @MeriDiem {} - named @ShortMeriDiem {} - named @Hour {} - named @TwelveHour {} - named @ShortHour {} - named @Minute {} - named @Second {} - {} - {} - - @SysDatabase @Word @Roman @UCRoman @Alpha @UCAlpha @Months - @ShortMonths @WeekDays @ShortWeekDays @TwelveHours - @ShortHours @MeriDiems @ShortMeriDiems @DateTimeFormat - { standard } - - - ########################################################################### - # # - # @Date and @Time: the date and time now. # - # # - ########################################################################### - - def @Date - named @Format - named @Year { @Moment&&now @Open { {@Century}@Year }} - named @ShortYear { @Moment&&now @Open { @Year }} - named @Month { @Moment&&now @Open { @Months&&@Month }} - named @ShortMonth { @Moment&&now @Open { @ShortMonths&&@Month }} - named @MonthNum { @Moment&&now @Open { @Month }} - named @Day { @Moment&&now @Open { @WeekDays&&@WeekDay }} - named @ShortDay { @Moment&&now @Open { @ShortWeekDays&&@WeekDay}} - named @DayNum { @Moment&&now @Open { @Day }} - named @MeriDiem { @Moment&&now @Open { @MeriDiems&&@Hour }} - named @ShortMeriDiem{ @Moment&&now @Open { @ShortMeriDiems&&@Hour }} - named @Hour { @Moment&&now @Open { @Hour }} - named @TwelveHour { @Moment&&now @Open { @TwelveHours&&@Hour }} - named @ShortHour { @Moment&&now @Open { @ShortHours&&@Hour }} - named @Minute { @Moment&&now @Open { @Minute }} - named @Second { @Moment&&now @Open { @Second }} - { - @DateTimeFormat&&date @Open { @Value - @Year { @Year } - @ShortYear { @ShortYear } - @Month { @Month } - @ShortMonth { @ShortMonth } - @MonthNum { @MonthNum } - @Day { @Day } - @ShortDay { @ShortDay } - @DayNum { @DayNum } - @MeriDiem { @MeriDiem } - @ShortMeriDiem { @ShortMeriDiem } - @Hour { @Hour } - @TwelveHour { @TwelveHour } - @ShortHour { @ShortHour } - @Minute { @Minute } - @Second { @Second } - } - } - { @Format } - - def @Time - named @Format - named @Year { @Moment&&now @Open { {@Century}@Year }} - named @ShortYear { @Moment&&now @Open { @Year }} - named @Month { @Moment&&now @Open { @Months&&@Month }} - named @ShortMonth { @Moment&&now @Open { @ShortMonths&&@Month }} - named @MonthNum { @Moment&&now @Open { @Month }} - named @Day { @Moment&&now @Open { @WeekDays&&@WeekDay }} - named @ShortDay { @Moment&&now @Open { @ShortWeekDays&&@WeekDay}} - named @DayNum { @Moment&&now @Open { @Day }} - named @MeriDiem { @Moment&&now @Open { @MeriDiems&&@Hour }} - named @ShortMeriDiem{ @Moment&&now @Open { @ShortMeriDiems&&@Hour }} - named @Hour { @Moment&&now @Open { @Hour }} - named @TwelveHour { @Moment&&now @Open { @TwelveHours&&@Hour }} - named @ShortHour { @Moment&&now @Open { @ShortHours&&@Hour }} - named @Minute { @Moment&&now @Open { @Minute }} - named @Second { @Moment&&now @Open { @Second }} - { - @DateTimeFormat&&time @Open { @Value - @Year { @Year } - @ShortYear { @ShortYear } - @Month { @Month } - @ShortMonth { @ShortMonth } - @MonthNum { @MonthNum } - @Day { @Day } - @ShortDay { @ShortDay } - @DayNum { @DayNum } - @MeriDiem { @MeriDiem } - @ShortMeriDiem { @ShortMeriDiem } - @Hour { @Hour } - @TwelveHour { @TwelveHour } - @ShortHour { @ShortHour } - @Minute { @Minute } - @Second { @Second } - } - } - { @Format } - - - ########################################################################### - # # - # @DropCapTwo and @DropCapThree # - # # - ########################################################################### - - def @DropCapTwo - left y - named height { 1.5v } - right x - { - def @ParPlace { @Galley } - def @EndParPlace { @Galley } - - def @LineList - { - @PAdjust @ParPlace - //1vx @LineList - } - - def @ParGalley horizontally into { @ParPlace&&preceding } - right x - { - x - } - - def @EndPar force into { @EndParPlace&&following } { @Null } - - def @Cap - { - -0.25f @VShift 1.0w @VShift { - -90d @Rotate height @Wide @Scale 90d @Rotate y - } - } - - |1s @PAdjust @ParPlace - /1vo @Cap @ParGalley {x & @EndPar &1rt } | @PAdjust @ParPlace - //1vx @LineList - // @EndParPlace - } - - def @DropCapThree - left y - named height { 2.5v } - right x - { - def @ParPlace { @Galley } - def @EndParPlace { @Galley } - - def @LineList - { - @PAdjust @ParPlace - //1vx @LineList - } - - def @ParGalley force horizontally into { @ParPlace&&preceding } - right x - { - x - } - - def @EndPar force into { @EndParPlace&&following } { @Null } - - def @Cap - { - -0.25f @VShift 1.0w @VShift { - -90d @Rotate height @Wide @Scale 90d @Rotate y - } - } - - |1s @PAdjust @ParPlace - /1vo @ParGalley { x & @EndPar &1rt } | @PAdjust @ParPlace - /1vo @Cap | @PAdjust @ParPlace - //1vx @LineList - // @EndParPlace - } - - - ########################################################################### - # # - # @Centre, @Center, @Right, @NoDotSep, @NoDotJoin, @DotSep, # - # @ColonSep, @DotJoin, @DashJoin, @NumSep # - # # - ########################################################################### - - macro @Centre @Center { |0.5rt @HContract } - - def @Right - precedence 50 - left x - right y - { x |1.0rt @OneCol { 2f @Wide {} | y } } - - def @NoDotSep left x right y - { - x @Case { - {} @Yield y - else @Yield { - y @Case { - {} @Yield x - else @Yield { x |2s y } - } - } - } - } - - def @NoDotJoin left x right y - { - x @Case { - {} @Yield y - else @Yield { - y @Case { - {} @Yield x - else @Yield { x{y} } - } - } - } - } - - def @DotSep left x right y - { - x @Case { - {} @Yield y - else @Yield { - y @Case { - {} @Yield x - else @Yield { x. |2s y } - } - } - } - } - - def @ColonSep left x right y - { - x @Case { - {} @Yield y - else @Yield { - y @Case { - {} @Yield x - else @Yield { x: |2s y } - } - } - } - } - - def @DotJoin left x right y - { - x @Case { - {} @Yield y - else @Yield { - y @Case { - {} @Yield x - else @Yield { x.y } - } - } - } - } - - def @DashJoin left x right y - { - x @Case { - {} @Yield y - else @Yield { - y @Case { - {} @Yield x - else @Yield { x--y } - } - } - } - } - - def @NumSep left x right y - { - x @Case { - {} @Yield y - else @Yield { - y @Case { - {} @Yield x - else @Yield { - @CurrLang @Case { - Hungarian @Yield { y. x } - else @Yield { x y } - } - } - } - } - } - } - - - ########################################################################### - # # - # @OverStrike, @Sup and @Sub # - # # - ########################################################################### - - def @OverStrike left x right y - { - @OneRow { @HContract @VContract x /0io @HContract @VContract y } - } - - def @Sup - left x - named gap { 0.40fk } - right y - { - @HContract @VContract - { - | 0.7f @Font y ^/gap x - } - } - - def @Sub - left x - named gap { 0.40fk } - right y - { - @HContract @VContract - { - x /gap | 0.7f @Font y - } - } - - - ########################################################################### - # # - # @AddPaint, @LineWidth (obsolete), @StrokeCommand # - # # - ########################################################################### - - def @AddPaint right col - { - col @Case { - none @Yield "" - nochange @Yield { - @BackEnd @Case { - PostScript @Yield "gsave fill grestore" - PDF @Yield "q f Q" - PlainText @Yield "" - } - } - else @Yield { - @BackEnd @Case { - PostScript @Yield {"gsave" @ColourCommand col "fill grestore"} - PDF @Yield { "q" @ColourCommand col "f Q" } - PlainText @Yield "" - } - } - } - } - - def @LineWidth right lw - { - lw @Case { - "" @Yield "" - else @Yield { - @BackEnd @Case { - PostScript @Yield { lw "setlinewidth" } - PDF @Yield { lw "w" } - PlainText @Yield "" - } - } - } - } - - def @StrokeCommand right linewidth - { - @BackEnd @Case { - PostScript @Yield { - linewidth @Case { - "" @Yield { "stroke" } - none @Yield { } - else @Yield { linewidth "setlinewidth stroke" } - } - } - PDF @Yield { - linewidth @Case { - "" @Yield { "S" } - none @Yield { } - else @Yield { linewidth "w S" } - } - } - else @Yield "" - } - } - - - - ########################################################################### - # # - # @FullWidthRule, @Box, @CurveBox, and @ShadowBox # - # # - ########################################################################### - - def @FullWidthRule - import @LengthUnits named linewidth {} - { - @BackEnd @Case { - - PostScript @Yield @HExpand { - { "LoutRule" @StrokeCommand linewidth } @Graphic { 0.5p @High } - } - - PDF @Yield @HExpand { - { "0 0 m __xsize 0 l" @StrokeCommand linewidth } @Graphic { 0.5p @High } - } - - PlainText @Yield { "-" @PlainGraphic 1f @High } - } - } - - def @LocalWidthRule - import @LengthUnits named linewidth {} - { - @BackEnd @Case { - - PostScript @Yield { - { "LoutRule" @StrokeCommand linewidth } @Graphic { 0.5p @High } - } - - PDF @Yield { - { "0 0 m __xsize 0 l" @StrokeCommand linewidth } @Graphic { 0.5p @High } - } - - PlainText @Yield { "-" @PlainGraphic 1f @High } - } - } - - def @Box - named margin { 0.3f } - import @LengthUnits named linewidth {} - named paint { none } - right x - { - @BackEnd @Case { - - PostScript @Yield @VContract @HContract 0c @HShift { - {"LoutBox" @AddPaint paint @StrokeCommand linewidth } - @Graphic - { ^/margin ^|margin 0c @HShift @OneRow x |margin /margin } - } - - PDF @Yield @VContract @HContract 0c @HShift { - { "0 0 m __xsize 0 l __xsize __ysize l 0 __ysize l h" - @AddPaint paint @StrokeCommand linewidth } @Graphic - { ^/margin ^|margin 0c @HShift @OneRow x |margin /margin } - } - - PlainText @Yield @VContract @HContract 0c @HShift { - ^/margin ^|margin 0c @HShift @OneRow x |margin /margin - } - } - } - - def @CurveBox - named margin { 0.3f } - import @LengthUnits named linewidth {} - named paint { none } - right x - { - def @PDFStuff - { - "__xmark 0 m" - "__sub(__xsize, __xmark) 0 l" - "__sub(__xsize, __div(__mul(11, __xmark), 24)) 0" - "__xsize __div(__mul(11, __xmark), 24)" - "__xsize __xmark c" - "__xsize __sub(__ysize, __xmark) l" - "__xsize __sub(__ysize, __div(__mul(11, __xmark), 24))" - "__sub(__xsize, __div(__mul(11, __xmark), 24)) __ysize" - "__sub(__xsize, __xmark) __ysize c" - "__xmark __ysize l" - "__div(__mul(11, __xmark), 24) __ysize" - "0 __sub(__ysize, __div(__mul(11, __xmark), 24))" - "0 __sub(__ysize, __xmark) c" - "0 __xmark l" - "0 __div(__mul(11, __xmark), 24)" - "__div(__mul(11, __xmark), 24) 0" - "__xmark 0 c" - "h" - @AddPaint paint @StrokeCommand linewidth - } - - @VContract @HContract 0c @HShift @BackEnd @Case { - - PostScript @Yield { - {"LoutCurveBox" @AddPaint paint @StrokeCommand linewidth } - @Graphic - { ^/margin ^|margin 0c @HShift @OneRow x |margin /margin } - } - - PlainText @Yield { - ^/margin ^|margin 0c @HShift @OneRow x |margin /margin - } - - PDF @Yield { - @PDFStuff @Graphic - { ^/margin ^|margin 0c @HShift @OneRow x |margin /margin } - } - } - } - - def @ShadowBox - named margin { 0.3f } - import @LengthUnits named linewidth {} - named paint { none } - named shadow { 0.2f } - right x - { - @VContract @HContract 0c @HShift @BackEnd @Case { - - PostScript @Yield { - "LoutShadowBox fill" @Graphic - { ^/shadow ^|shadow 0c @HShift - @Box margin {margin} paint {paint} linewidth {linewidth} x - |shadow /shadow - } - } - - PlainText @Yield { - ^/shadow ^|shadow 0c @HShift - @Box margin {margin} paint {paint} linewidth {linewidth} x - |shadow /shadow - } - - PDF @Yield { - { - "__mul(__xmark, 2) 0 m __xsize 0 l" - "__xsize __sub(__ysize, __mul(__xmark, 2)) l" - "__sub(__xsize, __xmark) __sub(__ysize, __mul(__xmark, 2)) l" - "__sub(__xsize, __xmark) __xmark l" - "__mul(__xmark, 2) __xmark l h f" - } - @Graphic - { ^/shadow ^|shadow 0c @HShift - @Box margin {margin} paint {paint} linewidth {linewidth} x - |shadow /shadow - } - } - } - } - - - ########################################################################### - # # - # @BoundaryMarks # - # # - ########################################################################### - - def @BoundaryMarks - import @LengthUnits named linewidth { 0.2p } - import @LengthUnits named length { 0.5c } - import @LengthUnits named gap { 0.5c } - import @LengthUnits named lout { 0c } - import @LengthUnits named rout { 0c } - import @LengthUnits named uout { 0c } - import @LengthUnits named dout { 0c } - { - def @UpStroke { "0" gap "rmoveto" "0" length "rlineto" } - def @DownStroke { "0" gap "neg" "rmoveto" "0" length "neg rlineto" } - def @LeftStroke { gap "neg" "0" "rmoveto" length "neg" "0 rlineto" } - def @RightStroke { gap "0" "rmoveto" length "0 rlineto" } - - def @LLSpot { lout "neg" dout "neg" moveto } - def @LRSpot { xsize rout "add" dout "neg" moveto } - def @ULSpot { lout "neg" ysize uout "add" moveto } - def @URSpot { xsize rout "add" ysize uout "add" moveto } - - def @PDFStuff { - "__sub(-"gap", "lout") __sub(0, "dout") m " - "__sub(__sub(-"gap", "lout"), "length") __sub(0, "dout") l" - "__sub(0, "lout") __sub(-"gap", "dout") m " - "__sub(0, "lout") __sub(__sub(-"gap", "dout"), "length") l" - "__add(__xsize,"rout") __sub(-"gap", "dout") m " - "__add(__xsize,"rout") __sub(__sub(-"gap", "dout"), "length") l" - "__add(__add(__xsize,"rout"),"gap") __sub(0, "dout") m " - "__add(__add(__add(__xsize,"rout"),"gap"),"length") __sub(0, "dout") l" - " __sub(__sub(0, "lout"), "gap") __add(__ysize, "uout") m " - "__sub(__sub(__sub(0, "lout"), "gap"), "length") __add(__ysize, "uout") l" - "__sub(0, "lout") __add(__add(__ysize, "uout"), "gap") m " - "__sub(0, "lout") __add(__add(__add(__ysize, "uout"), "gap"), "length") l" - " __add(__add(__xsize, "rout"), "gap") __add(__ysize, "uout") m " - "__add(__add(__add(__xsize, "rout"), "gap"), "length") __add(__ysize, "uout") l" - "__add(__xsize, "rout") __add(__add(__ysize, "uout"), "gap") m " - "__add(__xsize, "rout") __add(__add(__add(__ysize, "uout"), "gap"), "length") l" - - linewidth "w S" - } - - @BackEnd @Case { - - PostScript @Yield { - { - @LLSpot @LeftStroke - @LLSpot @DownStroke - @LRSpot @DownStroke - @LRSpot @RightStroke - @ULSpot @LeftStroke - @ULSpot @UpStroke - @URSpot @RightStroke - @URSpot @UpStroke - - linewidth "setlinewidth stroke" - } @Graphic {} - } - - PlainText @Yield "" - - PDF @Yield { @PDFStuff @Graphic {} } - } - } - - ########################################################################## - # # - # @NumberMarker, @NumberOf, @TitleMarker, @TitleOf, # - # @PageMark, @PageOf, @CrossLink, @ExternalLink # - # # - # NB the default value ?? is desperately important for unsorted # - # reference lists numbered by first appearance (@NumberOf @Tag), # - # because it is the special sort key value that prevents merging, # - # hence allowing all the references to be printed even though # - # their sort keys are all ?? initially. # - # # - ########################################################################## - - export @Tag @Value - def @NumberMarker - named @Tag {} - named @Value { "??" } - { - @Null - } - - def @NumberOf - right tag - { - @NumberMarker&&tag @Open { @Value } - } - - - export @Tag @Value - def @TitleMarker - named @Tag {} - named @Value { "??" } - { - @Null - } - - def @TitleOf - right tag - { - @TitleMarker&&tag @Open { @Value } - } - - - export num rawnum @Tag - def @PageMarker - named @Tag {} - named num {} - named rawnum {} - { - @PageLabel num - } - - def @PageMark - right tag - { - @Null & tag @LinkDest & @PageMarker&&preceding @Tagged tag - } - - def @NoLinkPageMark - right tag - { - @PageMarker&&preceding @Tagged tag - } - - def @PageOf - right tag - { - @PageMarker&&tag @Open { num } - } - - def @CrossLink - left tag - named @Format right @Body { @CrossLinkFormat @Body } - right obj - { - @HContract @VContract { - tag @LinkSource @Format obj - } - } - - def @ExternalLink - left tag - named @Format right @Body { @ExternalLinkFormat @Body } - right obj - { - @HContract @VContract { - tag @URLLink @Format obj - } - } - - - ########################################################################### - # # - # @Join and @Sep # - # # - # Join two objects together with @NumberSeparator, unless one is # - # empty in which case just return the other. # - # # - ########################################################################### - - def @Join left x right y - { - x @Case { - {} @Yield y - else @Yield { - y @Case { - {} @Yield x - else @Yield { x{@NumberSeparator}y } - } - } - } - } - - def @Sep left x right y - { - x @Case { - {} @Yield y - else @Yield { - y @Case { - {} @Yield x - else @Yield { x{@NumberSeparator} |2s y } - } - } - } - } - - - ########################################################################### - # # - # Miscellaneous. # - # # - ########################################################################### - - def @Heading right x { ragged @Break @HeadingFont @Font x } - def "^" { {} ^& {} } - def "&-" left x right y { x &0ch y } - - - ########################################################################### - # # - # @If @Not @And @Or @True # - # # - # Used in databases to make optional fields format nicely. # - # # - ########################################################################### - - def @If - precedence 97 - left x - right y - { - y @Case { - {} @Yield @Null - else @Yield { @Null{x} } - } - } - - def @Not - precedence 100 - right y - { - y @Case { - {} @Yield "*" - else @Yield "" - } - } - - def @And - precedence 99 - left x - right y - { - x @Case { - {} @Yield {} - else @Yield y - } - } - - def @Or - precedence 98 - left x - right y - { - x @Case { - {} @Yield y - else @Yield x - } - } - - def @True { "*" } - - - ########################################################################### - # # - # Paragraphs. # - # # - ########################################################################### - - macro @PP { //@ParaGap @ParaIndent @Wide &{0i} } - macro @LP { //{@ParaGap} } - macro @LLP { //{1vx} } - macro @DP { //{@DisplayGap} } - macro @LOP { //{@ListOuterGap} } - macro @NP { //{1.1b} } - macro @CNP { // 3.2v @High //0io //{} } - - - ########################################################################### - # # - # Beginning and ending of aligned displays. # - # # - ########################################################################### - - def @APlace { @Galley } - def @EndAlignedPlace { @Galley } - def @AlignedPlace { @Galley } - - def @BAligned into { @APlace&&preceding } - { - def @AlignedList { @AlignedPlace /1.1b @AlignedList } - - //1.1b @AlignedList - // @EndAlignedPlace - } - - macro @BAD @BeginAlignedDisplays { // @APlace | @BAligned } - def @EAD @EndAlignedDisplays force into { @EndAlignedPlace&&preceding } {} - - - ########################################################################### - # # - # New code for numbered displays that will cross section boundaries # - # # - ########################################################################### - - export @Tag val - def @NumDispCounterMarker - named @Tag {} - named val {} - { - @Null - } - - def @NumDispNum right tag - { - @NumDispCounterMarker&&tag @Open { @Next val } - } - - def @NumDispCounterIncrement - right tag - { - @NumDispCounterMarker&&preceding @Tagged tag - @NumDispCounterMarker val { @NumDispNum tag } - @NumberMarker @Tag { tag } @Value { @NumDispNum tag } - } - - def @NN - { - @NumDispCounterMarker&&preceding @Open { @DisplayNumStyle val } - } - - def @Do - left x - right y - { - x @Case { - { No None } @Yield @Null - else @Yield y - } - } - - def @BeginDisplayCounter - left condition - right prefix - { - condition @Do @NumDispCounterMarker val { prefix @Join 0 } - } - - - ########################################################################### - # # - # Galleys that carry displays to their places. # - # # - ########################################################################### - - def @DispPlace { @Galley } - - def @Disp into { @DispPlace&&preceding } - right x - { - x - } - - def @NDisp into { @DispPlace&&preceding } - named @Tag {} - right x - { - @OneRow { - @NumDispCounterIncrement @Tag - @PageMark @Tag - ^// - @OneRow x - } - } - - def @ADisp into { @AlignedPlace&&preceding } - right x - { - x - } - - def @ANDisp into { @AlignedPlace&&preceding } - named @Tag {} - right x - { - @OneRow { - @NumDispCounterIncrement @Tag - @PageMark @Tag - ^/ - @OneRow x - } - } - - - ########################################################################### - # # - # Displays and raw displays. # - # # - ########################################################################### - - macro @G { |@DefaultIndent } - macro @LG { | } - macro @IG { |@DisplayIndent } - macro @CG { |0.5rt } - macro @RG { |1.0rt } - macro @QR { @DisplayIndent @Wide { |1rt @NN } } - macro @DX { @DispPlace } - macro @DY { @Disp } - macro @AX { @APlace } - macro @AY { @ADisp } - macro @NY { @NDisp } - macro @MY { @ANDisp } - - macro @D @Display { @DP @G @DX | @DP // @DY } - macro @LD @LeftDisplay { @DP @LG @DX | @DP // @DY } - macro @ID @IndentedDisplay { @DP @IG @DX | @DP // @DY } - macro @QD @QuotedDisplay { @DP @IG @DX @IG @DP // @DY } - macro @CD @CentredDisplay - @CenteredDisplay { @DP @CG @DX | @DP // @DY } - macro @RightDisplay { @DP @RG @DX | @DP // @DY } - - - macro @AD @AlignedDisplay { @DP @G @AX | @DP // @AY } - macro @LAD @LeftAlignedDisplay { @DP @LG @AX | @DP // @AY } - macro @IAD @IndentedAlignedDisplay { @DP @IG @AX | @DP // @AY } - macro @QAD @QuotedAlignedDisplay { @DP @IG @AX @IG @DP // @AY } - macro @CAD @CentredAlignedDisplay - @CenteredAlignedDisplay { @DP @CG @AX | @DP // @AY } - macro @RightAlignedDisplay { @DP @RG @AX | @DP // @AY } - - macro @ND @NumberedDisplay { @DP @G @DX |1rt @NN @DP // @NY } - macro @LND @LeftNumberedDisplay { @DP @LG @DX |1rt @NN @DP // @NY } - macro @IND @IndentedNumberedDisplay { @DP @IG @DX |1rt @NN @DP // @NY } - macro @QND @QuotedNumberedDisplay { @DP @IG @DX |1rt @QR @DP // @NY } - macro @CND @CentredNumberedDisplay - @CenteredNumberedDisplay { @DP @CG @DX |1rt @NN @DP // @NY } - macro @RightNumberedDisplay { @DP @RG @DX |1rt @NN @DP // @NY } - - macro @AND @AlignedNumberedDisplay { @DP @G @AX |1rt @NN @DP // @MY } - macro @LAND @LeftAlignedNumberedDisplay { @DP @LG @AX |1rt @NN @DP // @MY } - macro @IAND @IndentedAlignedNumberedDisplay{ @DP @IG @AX |1rt @NN @DP // @MY } - macro @QAND @QuotedAlignedNumberedDisplay { @DP @IG @AX |1rt @QR @DP // @MY } - macro @CAND @CentredAlignedNumberedDisplay - @CenteredAlignedNumberedDisplay{ @DP @CG @AX |1rt @NN @DP // @MY } - macro @RightAlignedNumberedDisplay { @DP @RG @AX |1rt @NN @DP // @MY } - - - macro @RD @RawDisplay { @G @DX | // @DY } - macro @RLD @RawLeftDisplay { @LG @DX | // @DY } - macro @RID @RawIndentedDisplay { @IG @DX | // @DY } - macro @RQD @RawQuotedDisplay { @IG @DX @IG | // @DY } - macro @RCD @RawCentredDisplay - @RawCenteredDisplay { @CG @DX | | // @DY } - macro @RRD @RawRightDisplay { @RG @DX | // @DY } - - - macro @RAD @RawAlignedDisplay { @G @AX | // @AY } - macro @RLAD @RawLeftAlignedDisplay { @LG @AX | // @AY } - macro @RIAD @RawIndentedAlignedDisplay { @IG @AX | // @AY } - macro @RQAD @RawQuotedAlignedDisplay { @IG @AX @IG | // @AY } - macro @RCAD @RawCentredAlignedDisplay - @RawCenteredAlignedDisplay { @CG @AX | // @AY } - macro @RRAD @RawRightAlignedDisplay { @RG @AX | // @AY } - - macro @RND @RawNumberedDisplay { @G @DX |1rt @NN // @NY } - macro @RLND @RawLeftNumberedDisplay { @LG @DX |1rt @NN // @NY } - macro @RIND @RawIndentedNumberedDisplay { @IG @DX |1rt @NN // @NY } - macro @RQND @RawQuotedNumberedDisplay { @IG @DX |1rt @QR // @NY } - macro @RCND @RawCentredNumberedDisplay - @RawCenteredNumberedDisplay { @CG @DX |1rt @NN // @NY } - macro @RRND @RawRightNumberedDisplay { @RG @DX |1rt @NN // @NY } - - macro @RAND @RawAlignedNumberedDisplay { @G @AX |1rt @NN // @MY } - macro @RLAND @RawLeftAlignedNumberedDisplay { @LG @AX |1rt @NN // @MY } - macro @RIAND @RawIndentedAlignedNumberedDisplay { @IG @AX |1rt @NN // @MY } - macro @RQAND @RawQuotedAlignedNumberedDisplay { @IG @AX |1rt @QR // @MY } - macro @RCAND @RawCentredAlignedNumberedDisplay - @RawCenteredAlignedNumberedDisplay { @CG @AX |1rt @NN // @MY } - macro @RRAND @RawRightAlignedNumberedDisplay{ @RG @AX |1rt @NN // @MY } - - - ########################################################################### - # # - # Lists and raw lists. # - # # - ########################################################################### - - - def @ItemPlace { @Galley } - def @InterruptItemPlace { @Galley } - def @NewPageItemPlace { @Galley } - def @TagPlace { @Galley } - def @EndListPlace { @Galley } - - def @RawList - named style right num { num } - named type right num { num } - named gap { @ListGap } - named indent { @ListIndent } - named itemindent { 0c } - named rightindent { @ListRightIndent } - named labelwidth { @ListLabelWidth } - named start { 1 } - { - def @MakeList right num - { - def @NormalItem - { - |indent - labelwidth @Wide { - # @NumberMarker @Value {style num} {style num} &0io - @NumberMarker @Value {num} {style type num} &0io - } - |itemindent @ItemPlace |rightindent - //gap @MakeList @NotRevealed @Next num - } - - def @InterruptItem - { - @InterruptItemPlace - //gap @MakeList @NotRevealed num - } - - def @NewPageItem - { - @NewPageItemPlace - //1.1b @MakeList @NotRevealed num - } - - @OneOf - { - @NormalItem - @InterruptItem - @NewPageItem - } - } - - def @ListGalleyPlace { @Galley } - - def @ListGalley into { @ListGalleyPlace&&preceding } - { - @MakeList start // @EndListPlace - } - - @ListGalleyPlace - // - @ListGalley - } - - def listitem into { @ItemPlace&&preceding } - named @Tag {} - right x - { - @NumberMarker&&preceding @Tagged @Tag - // x - // @PageMark @Tag # weird placement, but @PageMark is definite now - } - - def droplistitem into { @ItemPlace&&preceding } - named @Tag {} - right x - { - @NumberMarker&&preceding @Tagged @Tag - // @PageMark @Tag - //1vx x - } - - def tagitem into { @ItemPlace&&preceding } - named tag {} - right x - { - def sendtag into { @TagPlace&&preceding } { tag } - - sendtag // x - } - - def droptagitem into { @ItemPlace&&preceding } - named tag {} - right x - { - def sendtag into { @TagPlace&&preceding } { tag } - - sendtag // //1vx x - } - - def endlist force into { @EndListPlace&&preceding } {} - - def listnewpage into { @NewPageItemPlace&&preceding } {} - - def listinterruptitem into { @InterruptItemPlace&&preceding } - right x - { - x - } - - - macro @LI @ListItem { // listitem } - macro @LII @ListInterruptItem { // listinterruptitem } - macro @LNP @ListNewPage { // listnewpage } - macro @DLI @DropListItem { // droplistitem } - macro @TI @TagItem { // tagitem tag } - macro @DTI @DropTagItem { // droptagitem tag } - macro @REL @RawEndList { // & endlist // } - macro @EL @EndList { // & endlist @LOP } - - - macro @RLL @RawLeftList { @RawList style {} - labelwidth { 0c } } - macro @RIL @RawIndentedList { @RawList style {} } - macro @RQL @RawQuotedList { @RawList style {} - rightindent {@DisplayIndent}} - macro @RCL @RawCentredList { @RawList style {} - labelwidth {0c} - itemindent {0.5rt} } - macro @RawCenteredList { @RawCentredList } - macro @RNL @RawNumberedList { @RawList style { num. } } - macro @RPNL @RawParenNumberedList { @RawList style { (num) } } - macro @RRL @RawRomanList { @RawList type { @Roman&&num } - style { num. } } - macro @RPRL @RawParenRomanList { @RawList type { @Roman&&num } - style { (num) } } - macro @RUCRL @RawUCRomanList { @RawList type { @UCRoman&&num } - style { num. } } - macro @RPUCRL @RawParenUCRomanList { @RawList type { @UCRoman&&num } - style { (num) } } - macro @RAL @RawAlphaList { @RawList type { @Alpha&&num } - style { num. } } - macro @RPAL @RawParenAlphaList { @RawList type { @Alpha&&num } - style { (num) } } - macro @RUCAL @RawUCAlphaList { @RawList type { @UCAlpha&&num } - style { num. } } - macro @RPUCAL @RawParenUCAlphaList { @RawList type { @UCAlpha&&num } - style { (num) } } - macro @RBL @RawBulletList { @RawList style { @Bullet } } - macro @RSL @RawStarList { @RawList style { @Star } } - macro @RDL @RawDashList { @RawList style { -- } } - macro @RTL @RawTaggedList { @RawList type { @TagPlace } } - macro @RWTL @RawWideTaggedList { @RawList type { @TagPlace } - labelwidth { @WideIndent } } - macro @RVWTL @RawVeryWideTaggedList{ @RawList type { @TagPlace } - labelwidth { @VeryWideIndent } } - - - macro @L @List { @LOP @RawList } - macro @LL @LeftList { @LOP @RawLeftList } - macro @IL @IndentedList { @LOP @RawIndentedList } - macro @QL @QuotedList { @LOP @RawQuotedList } - macro @CL @CentredList { @LOP @RawCentredList } - macro @CenteredList { @LOP @RawCenteredList } - macro @NL @NumberedList { @LOP @RawNumberedList } - macro @PNL @ParenNumberedList { @LOP @RawParenNumberedList } - macro @RL @RomanList { @LOP @RawRomanList } - macro @PRL @ParenRomanList { @LOP @RawParenRomanList } - macro @UCRL @UCRomanList { @LOP @RawUCRomanList } - macro @PUCRL @ParenUCRomanList { @LOP @RawParenUCRomanList } - macro @AL @AlphaList { @LOP @RawAlphaList } - macro @PAL @ParenAlphaList { @LOP @RawParenAlphaList } - macro @UCAL @UCAlphaList { @LOP @RawUCAlphaList } - macro @PUCAL @ParenUCAlphaList { @LOP @RawParenUCAlphaList } - macro @BL @BulletList { @LOP @RawBulletList } - macro @SL @StarList { @LOP @RawStarList } - macro @DL @DashList { @LOP @RawDashList } - macro @TL @TaggedList { @LOP @RawTaggedList } - macro @WTL @WideTaggedList { @LOP @RawWideTaggedList } - macro @VWTL @VeryWideTaggedList { @LOP @RawVeryWideTaggedList } - -@End @BasicSetup diff -u --recursive --new-file -u --recursive --new-file lout-3.26/include/ccommand lout-3.27/include/ccommand --- lout-3.26/include/ccommand Wed Sep 18 12:22:39 2002 +++ lout-3.27/include/ccommand Thu Jan 1 10:00:00 1970 @@ -1,113 +0,0 @@ - -########################################################################### -# # -# @ColourCommand # -# # -# Jeff Kingston # -# 19 October 2001 # -# # -# @ColourCommand converts a colour expressed in a manner that the # -# ordinary user can comprehend into the PostScript or PDF command # -# needed to obtain that colour, suitable for passing to @SetColour # -# or including in the left parameter of @Graphic. # -# # -# This symbol is needed in various places so I've taken the coward's # -# way out and @SysIncluded it at those places. # -# # -# Examples of behaviour for the PostScript back end: # -# # -# Parameter Result # -# ------------------------------------------------------------ # -# black "0.0 0.0 0.0 setrgbcolor" # -# darkblue "0.0 0.0 0.5 setrgbcolor" # -# white "1.0 1.0 1.0 setrgbcolor" # -# none "" # -# nochange "" # -# "" "" # -# rgb " setrgbcolor" # -# cymk " setcymkcolor" # -# ------------------------------------------------------------ # -# # -# @ColourCommand also does the right thing for the PDF back end; # -# its result is always empty for the PlainText back end. # -# # -########################################################################### - -def @ColourCommand right @Body -{ - def @RGB right coords - { - @BackEnd @Case { - PostScript @Yield { coords "setrgbcolor" } - PDF @Yield { coords "rg" coords "RG" } - PlainText @Yield "" - } - } - - def @CMYK right coords - { - @BackEnd @Case { - PostScript @Yield { coords "setcmykcolor" } - PDF @Yield { coords "k" coords "K" } - PlainText @Yield "" - } - } - - def @RGBElse right alt - { - { "rgb" @Common @Body } @Case { - "rgb" @Yield @RGB { "rgb" @Rump @Body } - else @Yield alt - } - } - - def @CMYKElse right alt - { - { "cmyk" @Common @Body } @Case { - "cmyk" @Yield @CMYK { "cmyk" @Rump @Body } - else @Yield alt - } - } - - def @NoChangeElse right alt - { - @Body @Case { - { "nochange" "none" "" } @Yield "" - else @Yield alt - } - } - - def @RGBCoords - { - @Body @Case { - black @Yield { 0.0 0.0 0.0 } - darkblue @Yield { 0.0 0.0 0.5 } - blue @Yield { 0.0 0.0 1.0 } - lightblue @Yield { 0.5 0.5 1.0 } - darkgreen @Yield { 0.0 0.5 0.0 } - green @Yield { 0.0 1.0 0.0 } - lightgreen @Yield { 0.5 1.0 0.5 } - darkred @Yield { 0.5 0.0 0.0 } - red @Yield { 1.0 0.0 0.0 } - lightred @Yield { 1.0 0.5 0.5 } - darkcyan @Yield { 0.0 0.5 0.5 } - cyan @Yield { 0.0 1.0 1.0 } - lightcyan @Yield { 0.5 1.0 1.0 } - darkmagenta @Yield { 0.5 0.0 0.5 } - magenta @Yield { 1.0 0.0 1.0 } - lightmagenta @Yield { 1.0 0.5 1.0 } - darkyellow @Yield { 0.5 0.5 0.0 } - yellow @Yield { 1.0 1.0 0.0 } - lightyellow @Yield { 1.0 1.0 0.5 } - darkgray @Yield { 0.2 0.2 0.2 } - gray @Yield { 0.5 0.5 0.5 } - lightgray @Yield { 0.8 0.8 0.8 } - darkgrey @Yield { 0.2 0.2 0.2 } - grey @Yield { 0.5 0.5 0.5 } - lightgrey @Yield { 0.8 0.8 0.8 } - white @Yield { 1.0 1.0 1.0 } - } - } - - @RGBElse @CMYKElse @NoChangeElse @RGB @RGBCoords -} diff -u --recursive --new-file -u --recursive --new-file lout-3.26/include/coltex lout-3.27/include/coltex --- lout-3.26/include/coltex Thu Jan 1 10:00:00 1970 +++ lout-3.27/include/coltex Wed Nov 6 17:03:35 2002 @@ -0,0 +1,417 @@ + +########################################################################### +# # +# coltex # +# # +# Jeffrey H. Kingston # +# 30 October 2002 # +# # +# Include file providing @ColourCommand and @TextureCommand symbols. # +# # +########################################################################### + +@SysInclude { lengths } # @PSLengths (needed for @TextureCommand) + + +########################################################################### +# # +# @ColourCommand # +# # +# Jeff Kingston # +# 19 October 2001 # +# Updated for compatibility with textures 28 October 2002. # +# # +# @ColourCommand converts a colour expressed in a manner that the # +# ordinary user can comprehend into the PostScript or PDF command # +# needed to obtain that colour, suitable for passing to @SetColour # +# or including in the left parameter of @Graphic. # +# # +# This symbol is needed in various places so I've taken the coward's # +# way out and @SysIncluded it at those places. # +# # +# Examples of behaviour for the PostScript back end: # +# # +# Parameter Result # +# ------------------------------------------------------------ # +# black "0.0 0.0 0.0 LoutSetRGBColor" # +# darkblue "0.0 0.0 0.5 LoutSetRGBColor" # +# white "1.0 1.0 1.0 LoutSetRGBColor" # +# none "" # +# nochange "" # +# "" "" # +# rgb " LoutSetRGBColor" # +# cymk " LoutSetCMYKColor" # +# ------------------------------------------------------------ # +# # +# See the Expert's Guide for the use of LoutSetRGBColor and # +# LoutSetCMYKColor rather than setrgbcolor and setcmykcolor. # +# # +# @ColourCommand also does the right thing for the PDF back end; # +# its result is always empty for the PlainText back end. # +# # +########################################################################### + +def @ColourCommand right @Body +{ + def @RGB right coords + { + @BackEnd @Case { + PostScript @Yield { coords "LoutSetRGBColor" } + PDF @Yield { coords "rg" coords "RG" } + PlainText @Yield "" + } + } + + def @CMYK right coords + { + @BackEnd @Case { + PostScript @Yield { coords "LoutSetCMYKColor" } + PDF @Yield { coords "k" coords "K" } + PlainText @Yield "" + } + } + + def @RGBElse right alt + { + { "rgb" @Common @Body } @Case { + "rgb" @Yield @RGB { "rgb" @Rump @Body } + else @Yield alt + } + } + + def @CMYKElse right alt + { + { "cmyk" @Common @Body } @Case { + "cmyk" @Yield @CMYK { "cmyk" @Rump @Body } + else @Yield alt + } + } + + def @NoChangeElse right alt + { + @Body @Case { + { "nochange" "none" "" } @Yield "" + else @Yield alt + } + } + + def @RGBCoords + { + @Body @Case { + black @Yield { 0.0 0.0 0.0 } + darkblue @Yield { 0.0 0.0 0.5 } + blue @Yield { 0.0 0.0 1.0 } + lightblue @Yield { 0.5 0.5 1.0 } + darkgreen @Yield { 0.0 0.5 0.0 } + green @Yield { 0.0 1.0 0.0 } + lightgreen @Yield { 0.5 1.0 0.5 } + darkred @Yield { 0.5 0.0 0.0 } + red @Yield { 1.0 0.0 0.0 } + lightred @Yield { 1.0 0.5 0.5 } + darkcyan @Yield { 0.0 0.5 0.5 } + cyan @Yield { 0.0 1.0 1.0 } + lightcyan @Yield { 0.5 1.0 1.0 } + darkmagenta @Yield { 0.5 0.0 0.5 } + magenta @Yield { 1.0 0.0 1.0 } + lightmagenta @Yield { 1.0 0.5 1.0 } + darkyellow @Yield { 0.5 0.5 0.0 } + yellow @Yield { 1.0 1.0 0.0 } + lightyellow @Yield { 1.0 1.0 0.5 } + darkgray @Yield { 0.2 0.2 0.2 } + gray @Yield { 0.5 0.5 0.5 } + lightgray @Yield { 0.8 0.8 0.8 } + darkgrey @Yield { 0.2 0.2 0.2 } + grey @Yield { 0.5 0.5 0.5 } + lightgrey @Yield { 0.8 0.8 0.8 } + white @Yield { 1.0 1.0 1.0 } + } + } + + @RGBElse @CMYKElse @NoChangeElse @RGB @RGBCoords +} + + +########################################################################### +# # +# @TextureCommand # +# # +# @TextureCommand converts a texture expressed in a manner that the # +# ordinary user can comprehend into the PostScript texture dictionary # +# needed to obtain that texture, suitable for passing to @SetTexture # +# or including in the left parameter of @Graphic. # +# # +########################################################################### + +def @TextureCommand + left type + named scale { 1 } + named hscale { 1 } + named vscale { 1 } + import @PSLengths named angle { 0d } + import @PSLengths named hshift { 0i } + import @PSLengths named vshift { 0i } + import @PSLengths named width { "dft" } + import @PSLengths named height { "dft" } + import @PSLengths named gap { "dft" } + import @PSLengths named radius { "dft" } + import @PSLengths named linewidth { "dft" } + named font { "dft" } + import @PSLengths named size { "dft" } + named value { "dft" } +{ + def @Dft left x right y + { + y @Case { + "dft" @Yield x + else @Yield y + } + } + + def @SolidTexture + { + "null LoutSetTexture" + } + + def @StripedTexture + { + def @Width { "1 pt" @Dft width } + def @Gap { "1 pt" @Dft gap } + + scale hscale vscale angle hshift vshift + "2" + "[ 0 0" @Width @Gap "add dup ]" + @Width @Gap "add dup" + "{" + "pop 0 0 moveto" + @Width @Gap "add 0 lineto" + "0" @Width "rlineto" + "0" @Width "lineto" + "closepath fill" + "}" + "LoutMakeTexture LoutSetTexture" + } + + def @GridTexture + { + def @Width { "1 pt" @Dft width } + def @Gap { "1 pt" @Dft gap } + + scale hscale vscale angle hshift vshift + "2" + "[ 0 0" @Width @Gap "add dup ]" + @Width @Gap "add dup" + "{" + "pop 0 0 moveto" + @Width @Gap "add 0 lineto" + "0" @Width "rlineto" + @Gap "neg 0 rlineto" + "0" @Gap "rlineto" + @Width "neg 0 rlineto" + "closepath fill" + "}" + "LoutMakeTexture LoutSetTexture" + } + + def @DottedTexture + { + def @Radius { "0.5 pt" @Dft radius } + def @Gap { "2 pt" @Dft gap } + + scale hscale vscale angle hshift vshift + "2" + "[ 0 0" @Gap "dup ]" + @Gap "dup" + "{" + "pop" @Gap "2 div dup" @Radius "0 360 arc fill" + "}" + "LoutMakeTexture LoutSetTexture" + } + + def @ChessboardTexture + { + def @Width { "2 pt" @Dft width } + + scale hscale vscale angle hshift vshift + "2" + "[ 0 0" @Width "2 mul dup ]" + @Width "2 mul dup" + "{" + "pop 0 0 moveto" + @Width "0 rlineto" + "0" @Width "rlineto" + @Width "neg 0 rlineto" + closepath + @Width @Width "moveto" + @Width "0 rlineto" + "0" @Width "rlineto" + @Width "neg 0 rlineto" + "closepath fill" + "}" + "LoutMakeTexture LoutSetTexture" + } + + def @BrickworkTexture + { + def @Width { "6 pt" @Dft width } + def @Height { "2 pt" @Dft height } + def @Linewidth { "0.5 pt" @Dft linewidth } + + scale hscale vscale angle hshift vshift + "2" + "[ 0 0" @Width @Height "2 mul ]" + @Width @Height "2 mul" + "{" + "pop 0 0 moveto" @Width "0 rlineto" + "0" @Height "moveto" @Width "0 rlineto" + "0" @Height "2 mul moveto" @Width "0 rlineto" + "0 0 moveto 0" @Height "rlineto" + @Width "0 moveto 0" @Height "rlineto" + @Width "2 div" @Height "moveto 0" @Height "rlineto" + "[] 0 setdash" @Linewidth "setlinewidth stroke" + "}" + "LoutMakeTexture LoutSetTexture" + } + + def @HoneycombTexture + { + def @R { "2.0 pt" @Dft radius } + def @Linewidth { "0.5 pt" @Dft linewidth } + + def @X { @R "0.5 mul" } + def @Y { @R "0.886 mul" } + def @NegX { @X "neg" } + def @NegY { @Y "neg" } + def @NegR { @R "neg" } + def @BoxWidth { @R @X "add 2 mul" } + def @BoxHeight { @Y "2 mul" } + + scale hscale vscale angle hshift vshift + "2" + "[ 0 0" @BoxWidth @BoxHeight "]" + @BoxWidth @BoxHeight + "{" + "pop" + @X "0 moveto" + @R "0 rlineto" + @X @Y "rlineto" + @R "0 rlineto" + @NegR "0 rlineto" + @NegX @Y "rlineto" + @NegR "0 rlineto" + @NegX @NegY "rlineto" + "closepath" + "[] 0 setdash" @Linewidth "setlinewidth stroke" + "}" + "LoutMakeTexture LoutSetTexture" + } + + def @TriangularTexture + { + def @R { "4.0 pt" @Dft radius } + def @Linewidth { "0.5 pt" @Dft linewidth } + + def @X { @R "0.5 mul" } + def @Y { @R "0.886 mul" } + def @BoxWidth { @R } + def @BoxHeight { @Y "2 mul" } + + scale hscale vscale angle hshift vshift + "2" + "[ 0 0" @BoxWidth @BoxHeight "]" + @BoxWidth @BoxHeight + "{" + "pop" + "0 0 moveto" + @R "0 lineto" + "0" @Y "2 mul lineto" + @R "0 rlineto" + "closepath" + "0" @Y "moveto" + @R "0 rlineto" + "[] 0 setdash" @Linewidth "setlinewidth stroke" + "}" + "LoutMakeTexture LoutSetTexture" + } + + def @StringTexture + { + def @Width { "12 pt" @Dft width } + def @Height { "12 pt" @Dft height } + def @Font { "Times-Roman" @Dft font } + def @Size { "10 pt" @Dft size } + def @Value { "*" @Dft value } + + scale hscale vscale angle hshift vshift + "2" + "[ 0 0" @Width @Height "]" + @Width @Height + "{" + "pop /"@Font "findfont" @Size "scalefont setfont" + "("@Value") dup false 0 0 moveto charpath flattenpath" + "pathbbox pop pop neg exch neg exch moveto show" + + "}" + "LoutMakeTexture LoutSetTexture" + } + + type @Case + { + "solid" @Yield @SolidTexture + "striped" @Yield @StripedTexture + "grid" @Yield @GridTexture + "dotted" @Yield @DottedTexture + "chessboard" @Yield @ChessboardTexture + "brickwork" @Yield @BrickworkTexture + "honeycomb" @Yield @HoneycombTexture + "triangular" @Yield @TriangularTexture + "string" @Yield @StringTexture + else @Yield type + } +} + +########################################################################### +# # +# @TextureImport # +# # +# Used as an import for texture options. # +# # +# We cleverly replace @Texture by nothing inside those options, # +# and replace the known types by themselves plus @TextureCommand. # +# This allows the user to type # +# # +# texture { striped } # +# texture { striped @Texture } # +# texture { striped angle { 45d } } # +# texture { striped @Texture angle { 45d } } # +# # +# and it all winds up being a call to @TextureCommand. # +# # +########################################################################### + +export + + solid + striped + grid + dotted + chessboard + brickwork + honeycomb + triangular + string + @Texture + +def @TextureImport +{ + macro solid { "solid" @TextureCommand } + macro striped { "striped" @TextureCommand } + macro grid { "grid" @TextureCommand } + macro dotted { "dotted" @TextureCommand } + macro chessboard { "chessboard" @TextureCommand } + macro brickwork { "brickwork" @TextureCommand } + macro honeycomb { "honeycomb" @TextureCommand } + macro triangular { "triangular" @TextureCommand } + macro string { "string" @TextureCommand } + + macro @Texture { } +} diff -u --recursive --new-file -u --recursive --new-file lout-3.26/include/diag lout-3.27/include/diag --- lout-3.26/include/diag Wed Sep 18 12:22:39 2002 +++ lout-3.27/include/diag Mon Nov 11 13:14:02 2002 @@ -49,8 +49,9 @@ # translate { } # outlinestyle { solid } # outlinedashlength { 0.2f } - # outlinewidth { 0.02f } - # paint { nopaint } + # outlinewidth { thin } + # paint { none } + # texture { solid } # font { } # break { } # format { @Body } @@ -74,8 +75,8 @@ # nodelabelbreak { ragged nohyphen } # nodelabelformat { @Body } # nodelabelpos { } - # nodelabelprox { outside } # nodelabelangle { horizontal } + # nodelabelprox { outside } # nodelabelctr { no } # nodelabeladjust { 0 0 } # alabel { } @@ -84,8 +85,8 @@ # alabelbreak { } # alabelformat { } # alabelpos { NE } - # alabelprox { } # alabelangle { } + # alabelprox { } # alabelctr { } # alabeladjust { } # blabel { } @@ -94,8 +95,8 @@ # blabelbreak { } # blabelformat { } # blabelpos { NW } - # blabelprox { } # blabelangle { } + # blabelprox { } # blabelctr { } # blabeladjust { } # clabel { } @@ -104,8 +105,8 @@ # clabelbreak { } # clabelformat { } # clabelpos { SW } - # clabelprox { } # clabelangle { } + # clabelprox { } # clabelctr { } # clabeladjust { } # dlabel { } @@ -114,8 +115,8 @@ # dlabelbreak { } # dlabelformat { } # dlabelpos { SE } - # dlabelprox { } # dlabelangle { } + # dlabelprox { } # dlabelctr { } # dlabeladjust { } @@ -133,8 +134,9 @@ # atranslate { } # aoutlinestyle { solid } # aoutlinedashlength { 0.2f } - # aoutlinewidth { 0.02f } - # apaint { nopaint } + # aoutlinewidth { thin } + # apaint { none } + # atexture { solid } # afont { } # abreak { } # aformat { @Body } @@ -158,8 +160,8 @@ # anodelabelbreak { ragged nohyphen } # anodelabelformat { @Body } # anodelabelpos { } - # anodelabelprox { outside } # anodelabelangle { horizontal } + # anodelabelprox { outside } # anodelabelctr { no } # anodelabeladjust { 0 0 } # aalabel { } @@ -168,8 +170,8 @@ # aalabelbreak { } # aalabelformat { } # aalabelpos { NE } - # aalabelprox { } # aalabelangle { } + # aalabelprox { } # aalabelctr { } # aalabeladjust { } # ablabel { } @@ -178,8 +180,8 @@ # ablabelbreak { } # ablabelformat { } # ablabelpos { NW } - # ablabelprox { } # ablabelangle { } + # ablabelprox { } # ablabelctr { } # ablabeladjust { } # aclabel { } @@ -188,8 +190,8 @@ # aclabelbreak { } # aclabelformat { } # aclabelpos { SW } - # aclabelprox { } # aclabelangle { } + # aclabelprox { } # aclabelctr { } # aclabeladjust { } # adlabel { } @@ -198,8 +200,8 @@ # adlabelbreak { } # adlabelformat { } # adlabelpos { SE } - # adlabelprox { } # adlabelangle { } + # adlabelprox { } # adlabelctr { } # adlabeladjust { } @@ -217,8 +219,9 @@ # btranslate { } # boutlinestyle { solid } # boutlinedashlength { 0.2f } - # boutlinewidth { 0.02f } - # bpaint { nopaint } + # boutlinewidth { thin } + # bpaint { none } + # btexture { solid } # bfont { } # bbreak { } # bformat { @Body } @@ -242,8 +245,8 @@ # bnodelabelbreak { ragged nohyphen } # bnodelabelformat { @Body } # bnodelabelpos { } - # bnodelabelprox { outside } # bnodelabelangle { horizontal } + # bnodelabelprox { outside } # bnodelabelctr { no } # bnodelabeladjust { 0 0 } # balabel { } @@ -252,8 +255,8 @@ # balabelbreak { } # balabelformat { } # balabelpos { NE } - # balabelprox { } # balabelangle { } + # balabelprox { } # balabelctr { } # balabeladjust { } # bblabel { } @@ -262,8 +265,8 @@ # bblabelbreak { } # bblabelformat { } # bblabelpos { NW } - # bblabelprox { } # bblabelangle { } + # bblabelprox { } # bblabelctr { } # bblabeladjust { } # bclabel { } @@ -272,8 +275,8 @@ # bclabelbreak { } # bclabelformat { } # bclabelpos { SW } - # bclabelprox { } # bclabelangle { } + # bclabelprox { } # bclabelctr { } # bclabeladjust { } # bdlabel { } @@ -282,8 +285,8 @@ # bdlabelbreak { } # bdlabelformat { } # bdlabelpos { SE } - # bdlabelprox { } # bdlabelangle { } + # bdlabelprox { } # bdlabelctr { } # bdlabeladjust { } @@ -301,8 +304,9 @@ # ctranslate { } # coutlinestyle { solid } # coutlinedashlength { 0.2f } - # coutlinewidth { 0.02f } - # cpaint { nopaint } + # coutlinewidth { thin } + # cpaint { none } + # ctexture { solid } # cfont { } # cbreak { } # cformat { @Body } @@ -326,8 +330,8 @@ # cnodelabelbreak { ragged nohyphen } # cnodelabelformat { @Body } # cnodelabelpos { } - # cnodelabelprox { outside } # cnodelabelangle { horizontal } + # cnodelabelprox { outside } # cnodelabelctr { no } # cnodelabeladjust { 0 0 } # calabel { } @@ -336,8 +340,8 @@ # calabelbreak { } # calabelformat { } # calabelpos { NE } - # calabelprox { } # calabelangle { } + # calabelprox { } # calabelctr { } # calabeladjust { } # cblabel { } @@ -346,8 +350,8 @@ # cblabelbreak { } # cblabelformat { } # cblabelpos { NW } - # cblabelprox { } # cblabelangle { } + # cblabelprox { } # cblabelctr { } # cblabeladjust { } # cclabel { } @@ -356,8 +360,8 @@ # cclabelbreak { } # cclabelformat { } # cclabelpos { SW } - # cclabelprox { } # cclabelangle { } + # cclabelprox { } # cclabelctr { } # cclabeladjust { } # cdlabel { } @@ -366,8 +370,8 @@ # cdlabelbreak { } # cdlabelformat { } # cdlabelpos { SE } - # cdlabelprox { } # cdlabelangle { } + # cdlabelprox { } # cdlabelctr { } # cdlabeladjust { } @@ -388,22 +392,27 @@ # radius { 1.0f } # xindent { 0.8f } # zindent { 0.8f } + # frompt { 0 0 } + # topt { 0 0 } # pathstyle { solid } # pathdashlength { 0.2f } - # pathwidth { 0.02f } - # pathgap { 0.04f } + # pathwidth { thin } + # pathgap { thin } # arrow { no } # arrowstyle { solid } - # arrowwidth { 0.45f } - # arrowlength { 0.6f } + # arrowwidth { 0.3f } + # arrowlength { 0.5f } + # backarrowstyle { solid } + # backarrowwidth { 0.3f } + # backarrowlength { 0.5f } # linklabel { } # linklabelmargin { 0.2f } # linklabelfont { "-2p" } # linklabelbreak { ragged nohyphen } # linklabelformat { @Body } # linklabelpos { } - # linklabelprox { above } # linklabelangle { horizontal } + # linklabelprox { above } # linklabelctr { no } # linklabeladjust { 0 0 } # xlabel { } @@ -412,8 +421,8 @@ # xlabelbreak { } # xlabelformat { } # xlabelpos { LFROM } - # xlabelprox { } # xlabelangle { } + # xlabelprox { } # xlabelctr { } # xlabeladjust { } # ylabel { } @@ -422,8 +431,8 @@ # ylabelbreak { } # ylabelformat { } # ylabelpos { LMID } - # ylabelprox { } # ylabelangle { } + # ylabelprox { } # ylabelctr { yes } # ylabeladjust { } # zlabel { } @@ -432,8 +441,8 @@ # zlabelbreak { } # zlabelformat { } # zlabelpos { LTO } - # zlabelprox { } # zlabelangle { } + # zlabelprox { } # zlabelctr { } # zlabeladjust { } # fromlabel { } @@ -442,8 +451,8 @@ # fromlabelbreak { ragged nohyphen } # fromlabelformat { @Body } # fromlabelpos { FROM } - # fromlabelprox { E } # fromlabelangle { antiparallel } + # fromlabelprox { W } # fromlabelctr { no } # fromlabeladjust { 0 0 } # tolabel { } @@ -452,8 +461,8 @@ # tolabelbreak { ragged nohyphen } # tolabelformat { @Body } # tolabelpos { TO } - # tolabelprox { E } # tolabelangle { parallel } + # tolabelprox { W } # tolabelctr { no } # tolabeladjust { 0 0 } diff -u --recursive --new-file -u --recursive --new-file lout-3.26/include/diagf lout-3.27/include/diagf --- lout-3.26/include/diagf Wed Sep 18 12:22:39 2002 +++ lout-3.27/include/diagf Thu Nov 21 09:58:11 2002 @@ -10,8 +10,10 @@ # # ############################################################################### +@SysInclude { diagf.etc } # @Geometry +@SysInclude { coltex } # @ColourCommand and @TextureCommand @SysPrependGraphic { diagf.lpg } -@SysInclude { diagf.etc } + ############################################################################### # # @@ -59,7 +61,8 @@ named medium { 0.08 ft } named thick { 0.12 ft } { thin } - named paint { nopaint } + named paint { none } + import @TextureImport named texture { solid } named font { } named break { } named format right @Body { @Body } @@ -92,8 +95,8 @@ named nodelabelbreak { ragged nohyphen } named nodelabelformat right @Body { @Body } import @Geometry named nodelabelpos { } - named nodelabelprox { outside } import @Geometry named nodelabelangle { horizontal } + named nodelabelprox { outside } named nodelabelctr { no } import @Geometry named nodelabeladjust { 0 0 } @@ -103,8 +106,8 @@ named alabelbreak { } named alabelformat right @Body { } import @Geometry named alabelpos { NE } - named alabelprox { } import @Geometry named alabelangle { } + named alabelprox { } named alabelctr { } import @Geometry named alabeladjust { } @@ -114,8 +117,8 @@ named blabelbreak { } named blabelformat right @Body { } import @Geometry named blabelpos { NW } - named blabelprox { } import @Geometry named blabelangle { } + named blabelprox { } named blabelctr { } import @Geometry named blabeladjust { } @@ -125,8 +128,8 @@ named clabelbreak { } named clabelformat right @Body { } import @Geometry named clabelpos { SW } - named clabelprox { } import @Geometry named clabelangle { } + named clabelprox { } named clabelctr { } import @Geometry named clabeladjust { } @@ -136,8 +139,8 @@ named dlabelbreak { } named dlabelformat right @Body { } import @Geometry named dlabelpos { SE } - named dlabelprox { } import @Geometry named dlabelangle { } + named dlabelprox { } named dlabelctr { } import @Geometry named dlabeladjust { } @@ -171,7 +174,8 @@ named medium { 0.08 ft } named thick { 0.12 ft } { thin } - named apaint { nopaint } + named apaint { none } + import @TextureImport named atexture{ solid } named afont { } named abreak { } named aformat right @Body { @Body } @@ -204,8 +208,8 @@ named anodelabelbreak { ragged nohyphen } named anodelabelformat right @Body { @Body } import @Geometry named anodelabelpos{ } - named anodelabelprox { outside } import @Geometry named anodelabelangle { horizontal } + named anodelabelprox { outside } named anodelabelctr { no } import @Geometry named anodelabeladjust { 0 0 } @@ -215,8 +219,8 @@ named aalabelbreak { } named aalabelformat right @Body { } import @Geometry named aalabelpos { NE } - named aalabelprox { } import @Geometry named aalabelangle { } + named aalabelprox { } named aalabelctr { } import @Geometry named aalabeladjust{ } @@ -226,8 +230,8 @@ named ablabelbreak { } named ablabelformat right @Body { } import @Geometry named ablabelpos { NW } - named ablabelprox { } import @Geometry named ablabelangle { } + named ablabelprox { } named ablabelctr { } import @Geometry named ablabeladjust{ } @@ -237,8 +241,8 @@ named aclabelbreak { } named aclabelformat right @Body { } import @Geometry named aclabelpos { SW } - named aclabelprox { } import @Geometry named aclabelangle { } + named aclabelprox { } named aclabelctr { } import @Geometry named aclabeladjust{ } @@ -248,8 +252,8 @@ named adlabelbreak { } named adlabelformat right @Body { } import @Geometry named adlabelpos { SE } - named adlabelprox { } import @Geometry named adlabelangle { } + named adlabelprox { } named adlabelctr { } import @Geometry named adlabeladjust{ } @@ -283,7 +287,8 @@ named medium { 0.08 ft } named thick { 0.12 ft } { thin } - named bpaint { nopaint } + named bpaint { none } + import @TextureImport named btexture{ solid } named bfont { } named bbreak { } named bformat right @Body { @Body } @@ -316,8 +321,8 @@ named bnodelabelbreak { ragged nohyphen } named bnodelabelformat right @Body { @Body } import @Geometry named bnodelabelpos{ } - named bnodelabelprox { outside } import @Geometry named bnodelabelangle { horizontal } + named bnodelabelprox { outside } named bnodelabelctr { no } import @Geometry named bnodelabeladjust { 0 0 } @@ -395,7 +400,8 @@ named medium { 0.08 ft } named thick { 0.12 ft } { thin } - named cpaint { nopaint } + named cpaint { none } + import @TextureImport named ctexture{ solid } named cfont { } named cbreak { } named cformat right @Body { @Body } @@ -428,8 +434,8 @@ named cnodelabelbreak { ragged nohyphen } named cnodelabelformat right @Body { @Body } import @Geometry named cnodelabelpos{ } - named cnodelabelprox { outside } import @Geometry named cnodelabelangle { horizontal } + named cnodelabelprox { outside } named cnodelabelctr { no } import @Geometry named cnodelabeladjust { 0 0 } @@ -439,8 +445,8 @@ named calabelbreak { } named calabelformat right @Body { } import @Geometry named calabelpos { NE } - named calabelprox { } import @Geometry named calabelangle { } + named calabelprox { } named calabelctr { } import @Geometry named calabeladjust{ } @@ -450,8 +456,8 @@ named cblabelbreak { } named cblabelformat right @Body { } import @Geometry named cblabelpos { NW } - named cblabelprox { } import @Geometry named cblabelangle { } + named cblabelprox { } named cblabelctr { } import @Geometry named cblabeladjust{ } @@ -461,8 +467,8 @@ named cclabelbreak { } named cclabelformat right @Body { } import @Geometry named cclabelpos { SW } - named cclabelprox { } import @Geometry named cclabelangle { } + named cclabelprox { } named cclabelctr { } import @Geometry named cclabeladjust{ } @@ -472,8 +478,8 @@ named cdlabelbreak { } named cdlabelformat right @Body { } import @Geometry named cdlabelpos { SE } - named cdlabelprox { } import @Geometry named cdlabelangle { } + named cdlabelprox { } named cdlabelctr { } import @Geometry named cdlabeladjust{ } @@ -498,6 +504,7 @@ named topt {} named arrow {} named arrowlength {} + named backarrowlength {} { line } import @Geometry named from { 0,0 } import @Geometry named to { 1,1 } @@ -533,6 +540,9 @@ named arrowstyle { solid } named arrowwidth { 0.3f } named arrowlength { 0.5f } + named backarrowstyle { solid } + named backarrowwidth { 0.3f } + named backarrowlength { 0.5f } named linklabel { } named linklabelmargin { 0.2f } @@ -540,8 +550,8 @@ named linklabelbreak { ragged nohyphen } named linklabelformat right @Body { @Body } import @Geometry named linklabelpos { } - named linklabelprox { above } import @Geometry named linklabelangle { horizontal } + named linklabelprox { above } named linklabelctr { no } import @Geometry named linklabeladjust { 0 0 } @@ -551,8 +561,8 @@ named xlabelbreak { } named xlabelformat right @Body { } import @Geometry named xlabelpos { LFROM } - named xlabelprox { } import @Geometry named xlabelangle { } + named xlabelprox { } named xlabelctr { } import @Geometry named xlabeladjust { } @@ -562,8 +572,8 @@ named ylabelbreak { } named ylabelformat right @Body { } import @Geometry named ylabelpos { LMID } - named ylabelprox { } import @Geometry named ylabelangle { } + named ylabelprox { } named ylabelctr { yes } import @Geometry named ylabeladjust { } @@ -573,8 +583,8 @@ named zlabelbreak { } named zlabelformat right @Body { } import @Geometry named zlabelpos { LTO } - named zlabelprox { } import @Geometry named zlabelangle { } + named zlabelprox { } named zlabelctr { } import @Geometry named zlabeladjust { } @@ -584,8 +594,8 @@ named fromlabelbreak { ragged nohyphen } named fromlabelformat right @Body { @Body } import @Geometry named fromlabelpos { FROM } - named fromlabelprox { W } import @Geometry named fromlabelangle { antiparallel } + named fromlabelprox { W } named fromlabelctr { no } import @Geometry named fromlabeladjust { 0 0 } @@ -595,8 +605,8 @@ named tolabelbreak { ragged nohyphen } named tolabelformat right @Body { @Body } import @Geometry named tolabelpos { TO } - named tolabelprox { W } import @Geometry named tolabelangle { parallel } + named tolabelprox { W } named tolabelctr { no } import @Geometry named tolabeladjust { 0 0 } @@ -707,6 +717,7 @@ named thick { 0.12 ft } { outlinewidth } named paint { paint } + import @TextureImport named texture { texture } named font { font } named break { break } named format right @Body { format @Body } @@ -768,6 +779,7 @@ named thick { 0.12 ft } { aoutlinewidth } named apaint { apaint } + import @TextureImport named atexture { atexture } named afont { afont } named abreak { abreak } named aformat right @Body { aformat @Body } @@ -829,6 +841,7 @@ named thick { 0.12 ft } { boutlinewidth } named bpaint { bpaint } + import @TextureImport named btexture { btexture } named bfont { bfont } named bbreak { bbreak } named bformat right @Body { bformat @Body } @@ -890,6 +903,7 @@ named thick { 0.12 ft } { coutlinewidth } named cpaint { cpaint } + import @TextureImport named ctexture { ctexture } named cfont { cfont } named cbreak { cbreak } named cformat right @Body { cformat @Body } @@ -935,6 +949,7 @@ named topt {} named arrow {} named arrowlength {} + named backarrowlength {} { path from { from } to { to } @@ -950,6 +965,7 @@ topt { topt } arrow { arrow } arrowlength { arrowlength } + backarrowlength{ backarrowlength } } import @Geometry named from { from } import @Geometry named to { to } @@ -985,6 +1001,9 @@ named arrowstyle { arrowstyle } named arrowwidth { arrowwidth } named arrowlength { arrowlength } + named backarrowstyle { backarrowstyle } + named backarrowwidth { backarrowwidth } + named backarrowlength { backarrowlength } named nodelabel { nodelabel } named nodelabelmargin { nodelabelmargin } @@ -1138,14 +1157,11 @@ # # ####################################################################### -# include @ColourCommand symbol -@SysInclude { ccommand } - - def @PSAddPaint right col + def @PSAddPaint left col right tex { col @Case { - { "none" "nopaint" } @Yield "{}" - else @Yield { "{" @ColourCommand col "fill }" } + { "no" "none" "nopaint" } @Yield "{}" + else @Yield { "{" @ColourCommand col tex "fill }" } } } @@ -2264,6 +2280,7 @@ named thick { 0.12 ft } { outlinewidth } named paint { paint } + import @TextureImport named texture { texture } named font { font } named break { break } named format right @Body { format @Body } @@ -2517,7 +2534,7 @@ { "ldiagnodebegin [" @OutLine "]" outlinedashlength "[" outlinestyle "]" - outlinewidth @PSAddPaint paint "ldiagnodeend" + outlinewidth paint @PSAddPaint texture "ldiagnodeend" "(IN) ldiagpushtagdict" // "ldiagpopuptagdict" @@ -2607,6 +2624,7 @@ named thick { 0.12 ft } { aoutlinewidth } named paint { apaint } + import @TextureImport named texture { atexture } named font { afont } named break { abreak } named format right @Body { aformat @Body } @@ -2860,7 +2878,7 @@ { "ldiagnodebegin [" @OutLine "]" outlinedashlength "[" outlinestyle "]" - outlinewidth @PSAddPaint paint "ldiagnodeend" + outlinewidth paint @PSAddPaint texture "ldiagnodeend" "(IN) ldiagpushtagdict" // "ldiagpopuptagdict" @@ -2950,6 +2968,7 @@ named thick { 0.12 ft } { boutlinewidth } named paint { bpaint } + import @TextureImport named texture { btexture } named font { bfont } named break { bbreak } named format right @Body { bformat @Body } @@ -3203,7 +3222,7 @@ { "ldiagnodebegin [" @OutLine "]" outlinedashlength "[" outlinestyle "]" - outlinewidth @PSAddPaint paint "ldiagnodeend" + outlinewidth paint @PSAddPaint texture "ldiagnodeend" "(IN) ldiagpushtagdict" // "ldiagpopuptagdict" @@ -3293,6 +3312,7 @@ named thick { 0.12 ft } { coutlinewidth } named paint { cpaint } + import @TextureImport named texture { ctexture } named font { cfont } named break { cbreak } named format right @Body { cformat @Body } @@ -3546,7 +3566,7 @@ { "ldiagnodebegin [" @OutLine "]" outlinedashlength "[" outlinestyle "]" - outlinewidth @PSAddPaint paint "ldiagnodeend" + outlinewidth paint @PSAddPaint texture "ldiagnodeend" "(IN) ldiagpushtagdict" // "ldiagpopuptagdict" @@ -3637,6 +3657,7 @@ { @InsulatedNode paint { nochange } + texture { solid } outlinestyle { noline } outlinewidth { pathwidth } outline { @@ -3662,6 +3683,7 @@ outlinewidth { pathwidth } outlinestyle { noline } paint { nochange } + texture { solid } outline { @BackEnd @Case { PostScript @Yield { @@ -3696,6 +3718,7 @@ { @InsulatedNode paint { nochange } + texture { solid } outlinestyle { noline } outlinewidth { pathwidth } outline { @@ -3728,6 +3751,7 @@ @InsulatedNode outlinestyle { noline } paint { nochange } + texture { solid } outlinewidth { pathwidth } outline { @BackEnd @Case { @@ -3757,6 +3781,7 @@ @InsulatedNode outlinestyle { noline } paint { nochange } + texture { solid } outlinewidth { pathwidth } outline { @BackEnd @Case { @@ -3800,6 +3825,7 @@ @InsulatedNode outlinestyle { noline } paint { nochange } + texture { solid } outlinewidth { pathwidth } outline { @BackEnd @Case { @@ -3844,6 +3870,7 @@ @InsulatedNode outlinestyle { noline } paint { nochange } + texture { solid } outlinewidth { pathwidth } outline { circle } { length @Wide length @High } @@ -3857,6 +3884,7 @@ @InsulatedNode outlinestyle { noline } paint { nochange } + texture { solid } outlinewidth { pathwidth } outline { box } { length @Wide width @High } @@ -3919,6 +3947,7 @@ named topt {} named arrow {} named arrowlength {} + named backarrowlength {} { path from { from } to { to } @@ -3933,7 +3962,7 @@ frompt { frompt } topt { topt } arrow { arrow } - arrowlength { arrowlength } + backarrowlength { backarrowlength } } import @Geometry named from { from } import @Geometry named to { to } @@ -3946,7 +3975,7 @@ import @Geometry named xindent { xindent } import @Geometry named zindent { zindent } import @Geometry named frompt { frompt } - import @Geometry named topt { topt } + import @Geometry named topt { topt } named pathstyle named solid { "/ldiagsolid" } named dashed { "/ldiagdashed" } @@ -3970,6 +3999,9 @@ named arrowstyle { arrowstyle } named arrowwidth { arrowwidth } named arrowlength { arrowlength } + named backarrowstyle { backarrowstyle } + named backarrowwidth { backarrowwidth } + named backarrowlength { backarrowlength } named linklabel { linklabel } named linklabelmargin { linklabelmargin } @@ -4091,9 +4123,9 @@ arrow @Case { { back both } @Yield { @ArrowHead - style { arrowstyle } - width { arrowwidth } - length { arrowlength } + style { backarrowstyle } + width { backarrowwidth } + length { backarrowlength } pathwidth { pathwidth } } else @Yield "" @@ -4119,13 +4151,13 @@ { @BackEnd @Case { PostScript @Yield { - {arrow @FromArrowLength arrowlength} + {arrow @FromArrowLength backarrowlength} {arrow @ToArrowLength arrowlength} "{" from "}" "{" to "}" xindent zindent "ldiaglinepath" # FROM :< {from??CTR angleto to??CTR} # FROM :: from boundaryatangle FROM@ANGLE - # ++ {arrow @FromArrowLength arrowlength}atangle FROM@ANGLE + # ++ {arrow @FromArrowLength backarrowlength}atangle FROM@ANGLE # TO :< FROM@ANGLE # TO :: to boundaryatangle { TO@ANGLE - 180d } # ++ {arrow @ToArrowLength arrowlength} atangle {TO@ANGLE - 180d} @@ -4152,13 +4184,13 @@ { @BackEnd @Case { PostScript @Yield { - {arrow @FromArrowLength arrowlength} + {arrow @FromArrowLength backarrowlength} {arrow @ToArrowLength arrowlength} "{" from "}" "{" to "}" xindent zindent pathgap "ldiagdoublelinepath" # FROM :< {from??CTR angleto to??CTR} # FROM :: from boundaryatangle FROM@ANGLE - # ++ {arrow @FromArrowLength arrowlength}atangle FROM@ANGLE + # ++ {arrow @FromArrowLength backarrowlength}atangle FROM@ANGLE # TO :< FROM@ANGLE # TO :: to boundaryatangle { TO@ANGLE - 180d } # ++ {arrow @ToArrowLength arrowlength} atangle {TO@ANGLE - 180d} @@ -4185,7 +4217,7 @@ { @BackEnd @Case { PostScript @Yield { - {arrow @FromArrowLength arrowlength} + {arrow @FromArrowLength backarrowlength} {arrow @ToArrowLength arrowlength} "{" from "}" "{" to "}" xindent zindent bias "ldiagacurvepath" @@ -4199,7 +4231,7 @@ # to??CTR XTOP ldiaglinebetween ldiaglineintersect } # FROM :: aabout # circum { from } - # extra { arrow @FromArrowLength arrowlength } + # extra { arrow @FromArrowLength backarrowlength } # centre { CTR } # FROM :< if cond { from??CTR distance FROM > 0 } # then { from??CTR angleto FROM } @@ -4241,7 +4273,7 @@ { @BackEnd @Case { PostScript @Yield { - {arrow @FromArrowLength arrowlength} + {arrow @FromArrowLength backarrowlength} {arrow @ToArrowLength arrowlength} "{" from "}" "{" to "}" xindent zindent bias "ldiagccurvepath" @@ -4255,7 +4287,7 @@ # to??CTR XTOP ldiaglinebetween ldiaglineintersect } # FROM :: cabout # circum { from } - # extra { arrow @FromArrowLength arrowlength } + # extra { arrow @FromArrowLength backarrowlength } # centre { CTR } # FROM :< if cond { from??CTR distance FROM > 0 } # then { from??CTR angleto FROM } @@ -4298,13 +4330,13 @@ { @BackEnd @Case { PostScript @Yield { - {arrow @FromArrowLength arrowlength} + {arrow @FromArrowLength backarrowlength} {arrow @ToArrowLength arrowlength} "{" from "}" "{" to "}" xindent zindent [ frompt ] [ topt ] "ldiagbezierpath" # FROM :< from??CTR angleto frompt # FROM :: from boundaryatangle FROM@ANGLE - # ++ {arrow @FromArrowLength arrowlength} atangle FROM@ANGLE + # ++ {arrow @FromArrowLength backarrowlength} atangle FROM@ANGLE # TO :< topt angleto to??CTR # TO :: to boundaryatangle { TO@ANGLE + 180d } # ++ {arrow @ToArrowLength arrowlength} atangle { TO@ANGLE + 180d } @@ -4324,7 +4356,7 @@ { @BackEnd @Case { PostScript @Yield { - {arrow @FromArrowLength arrowlength} + {arrow @FromArrowLength backarrowlength} {arrow @ToArrowLength arrowlength} "{" from "}" "{" to "}" xindent zindent "ldiagvhlinepath" @@ -4332,7 +4364,7 @@ # FANG := from??CTR angleto CTR # TANG := to??CTR angleto CTR # FROM :: from boundaryatangle FANG - # ++ {arrow @FromArrowLength arrowlength} atangle FANG + # ++ {arrow @FromArrowLength backarrowlength} atangle FANG # FROM :< FANG # TO :: to boundaryatangle TANG # ++ {arrow @ToArrowLength arrowlength} atangle TANG @@ -4359,7 +4391,7 @@ { @BackEnd @Case { PostScript @Yield { - {arrow @FromArrowLength arrowlength} + {arrow @FromArrowLength backarrowlength} {arrow @ToArrowLength arrowlength} "{" from "}" "{" to "}" xindent zindent radius "ldiagvhcurvepath" @@ -4367,7 +4399,7 @@ # FANG := from??CTR angleto CTR # TANG := to??CTR angleto CTR # FROM :: from boundaryatangle FANG - # ++ {arrow @FromArrowLength arrowlength} atangle FANG + # ++ {arrow @FromArrowLength backarrowlength} atangle FANG # FROM :< FANG # TO :: to boundaryatangle TANG # ++ {arrow @ToArrowLength arrowlength} atangle TANG @@ -4408,7 +4440,7 @@ { @BackEnd @Case { PostScript @Yield { - {arrow @FromArrowLength arrowlength} + {arrow @FromArrowLength backarrowlength} {arrow @ToArrowLength arrowlength} "{" from "}" "{" to "}" xindent zindent "ldiaghvlinepath" @@ -4416,7 +4448,7 @@ # FANG := from??CTR angleto CTR # TANG := to??CTR angleto CTR # FROM :: from boundaryatangle FANG - # ++ {arrow @FromArrowLength arrowlength} atangle FANG + # ++ {arrow @FromArrowLength backarrowlength} atangle FANG # FROM :< FANG # TO :: to boundaryatangle TANG # ++ {arrow @ToArrowLength arrowlength} atangle TANG @@ -4443,7 +4475,7 @@ { @BackEnd @Case { PostScript @Yield { - {arrow @FromArrowLength arrowlength} + {arrow @FromArrowLength backarrowlength} {arrow @ToArrowLength arrowlength} "{" from "}" "{" to "}" xindent zindent radius "ldiaghvcurvepath" @@ -4451,7 +4483,7 @@ # FANG := from??CTR angleto CTR # TANG := to??CTR angleto CTR # FROM :: from boundaryatangle FANG - # ++ {arrow @FromArrowLength arrowlength} atangle FANG + # ++ {arrow @FromArrowLength backarrowlength} atangle FANG # FROM :< FANG # TO :: to boundaryatangle TANG # ++ {arrow @ToArrowLength arrowlength} atangle TANG @@ -4492,12 +4524,12 @@ { @BackEnd @Case { PostScript @Yield { - {arrow @FromArrowLength arrowlength} + {arrow @FromArrowLength backarrowlength} {arrow @ToArrowLength arrowlength} "{" from "}" "{" to "}" xindent zindent bias "ldiaglvrlinepath" # FROM :: from boundaryatangle 180d - # ++ {arrow @FromArrowLength arrowlength} atangle 180d + # ++ {arrow @FromArrowLength backarrowlength} atangle 180d # FROM :< 180d # TO :: to boundaryatangle 180d # ++ {arrow @ToArrowLength arrowlength} atangle 180d @@ -4527,12 +4559,12 @@ { @BackEnd @Case { PostScript @Yield { - {arrow @FromArrowLength arrowlength} + {arrow @FromArrowLength backarrowlength} {arrow @ToArrowLength arrowlength} "{" from "}" "{" to "}" xindent zindent bias radius "ldiaglvrcurvepath" # FROM :: from boundaryatangle 180d - # ++ {arrow @FromArrowLength arrowlength} atangle 180d + # ++ {arrow @FromArrowLength backarrowlength} atangle 180d # FROM :< 180d # TO :: to boundaryatangle 180d # ++ {arrow @ToArrowLength arrowlength} atangle 180d @@ -4579,12 +4611,12 @@ { @BackEnd @Case { PostScript @Yield { - {arrow @FromArrowLength arrowlength} + {arrow @FromArrowLength backarrowlength} {arrow @ToArrowLength arrowlength} "{" from "}" "{" to "}" xindent zindent bias "ldiagrvllinepath" # FROM :: from boundaryatangle 0d - # ++ {arrow @FromArrowLength arrowlength} atangle 0d + # ++ {arrow @FromArrowLength backarrowlength} atangle 0d # FROM :< 0d # TO :: to boundaryatangle 0d # ++ {arrow @ToArrowLength arrowlength} atangle 0d @@ -4614,12 +4646,12 @@ { @BackEnd @Case { PostScript @Yield { - {arrow @FromArrowLength arrowlength} + {arrow @FromArrowLength backarrowlength} {arrow @ToArrowLength arrowlength} "{" from "}" "{" to "}" xindent zindent bias radius "ldiagrvlcurvepath" # FROM :: from boundaryatangle 0d - # ++ {arrow @FromArrowLength arrowlength} atangle 0d + # ++ {arrow @FromArrowLength backarrowlength} atangle 0d # FROM :< 0d # TO :: to boundaryatangle 0d # ++ {arrow @ToArrowLength arrowlength} atangle 0d @@ -4667,7 +4699,7 @@ { @BackEnd @Case { PostScript @Yield { - {arrow @FromArrowLength arrowlength} + {arrow @FromArrowLength backarrowlength} {arrow @ToArrowLength arrowlength} "{" from "}" "{" to "}" xindent zindent hfrac hbias "ldiaghvhlinepath" @@ -4676,7 +4708,7 @@ # 180 { 180d } 180-270 { 180d } 270 { 180d } 270-360 { 0d }} # TODIRN := {FRDIRN + 180d} # FROM :: from boundaryatangle FRDIRN ++ - # {arrow @FromArrowLength arrowlength} atangle FRDIRN + # {arrow @FromArrowLength backarrowlength} atangle FRDIRN # FROM :< FRDIRN # TO :: to boundaryatangle TODIRN ++ # {arrow @ToArrowLength arrowlength} atangle TODIRN @@ -4704,7 +4736,7 @@ { @BackEnd @Case { PostScript @Yield { - {arrow @FromArrowLength arrowlength} + {arrow @FromArrowLength backarrowlength} {arrow @ToArrowLength arrowlength} "{" from "}" "{" to "}" xindent zindent hfrac hbias radius "ldiaghvhcurvepath" @@ -4713,7 +4745,7 @@ # 180 { 180d } 180-270 { 180d } 270 { 180d } 270-360 { 0d }} # TODIRN := {FRDIRN + 180d} # FROM :: from boundaryatangle FRDIRN ++ - # {arrow @FromArrowLength arrowlength} atangle FRDIRN + # {arrow @FromArrowLength backarrowlength} atangle FRDIRN # FROM :< FRDIRN # TO :: to boundaryatangle TODIRN ++ # {arrow @ToArrowLength arrowlength} atangle TODIRN @@ -4759,12 +4791,12 @@ { @BackEnd @Case { PostScript @Yield { - {arrow @FromArrowLength arrowlength} + {arrow @FromArrowLength backarrowlength} {arrow @ToArrowLength arrowlength} "{" from "}" "{" to "}" xindent zindent hfrac hbias "ldiagvhvlinepath" # FROM :: from boundaryatangle 0d - # ++ {arrow @FromArrowLength arrowlength} atangle 0d + # ++ {arrow @FromArrowLength backarrowlength} atangle 0d # FROM :< 0d # TO :: to boundaryatangle 0d # ++ {arrow @ToArrowLength arrowlength} atangle 0d @@ -4794,7 +4826,7 @@ { @BackEnd @Case { PostScript @Yield { - {arrow @FromArrowLength arrowlength} + {arrow @FromArrowLength backarrowlength} {arrow @ToArrowLength arrowlength} "{" from "}" "{" to "}" xindent zindent hfrac hbias radius "ldiagvhvcurvepath" @@ -4851,14 +4883,14 @@ { @BackEnd @Case { PostScript @Yield { - {arrow @FromArrowLength arrowlength} + {arrow @FromArrowLength backarrowlength} {arrow @ToArrowLength arrowlength} "{" from "}" "{" to "}" xindent zindent bias fbias tbias "ldiagdwraplinepath" # DIRN := if cond { xcoord from??CTR < xcoord to??CTR } # then { 180d } else { 0d } # FROM :: from boundaryatangle DIRN - # ++ {arrow @FromArrowLength arrowlength} atangle DIRN + # ++ {arrow @FromArrowLength backarrowlength} atangle DIRN # FROM :< DIRN # TO :: to boundaryatangle { DIRN + 180d } # ++ {arrow @ToArrowLength arrowlength} atangle { DIRN + 180d } @@ -4893,7 +4925,7 @@ { @BackEnd @Case { PostScript @Yield { - {arrow @FromArrowLength arrowlength} + {arrow @FromArrowLength backarrowlength} {arrow @ToArrowLength arrowlength} "{" from "}" "{" to "}" xindent zindent bias fbias tbias radius "ldiagdwrapcurvepath" @@ -4902,7 +4934,7 @@ # CLOCK := if cond { xcoord from??CTR < xcoord to??CTR } # then { anticlockwise } else { clockwise } # FROM :: from boundaryatangle DIRN - # ++ {arrow @FromArrowLength arrowlength} atangle DIRN + # ++ {arrow @FromArrowLength backarrowlength} atangle DIRN # FROM :< DIRN # TO :: to boundaryatangle { DIRN + 180d } # ++ {arrow @ToArrowLength arrowlength} atangle { DIRN + 180d } @@ -4976,14 +5008,14 @@ { @BackEnd @Case { PostScript @Yield { - {arrow @FromArrowLength arrowlength} + {arrow @FromArrowLength backarrowlength} {arrow @ToArrowLength arrowlength} "{" from "}" "{" to "}" xindent zindent bias fbias tbias "ldiaguwraplinepath" # DIRN := if cond { xcoord from??CTR < xcoord to??CTR } # then { 180d } else { 0d } # FROM :: from boundaryatangle DIRN - # ++ {arrow @FromArrowLength arrowlength} atangle DIRN + # ++ {arrow @FromArrowLength backarrowlength} atangle DIRN # FROM :< DIRN # TO :: to boundaryatangle { DIRN + 180d } # ++ {arrow @ToArrowLength arrowlength} atangle { DIRN + 180d } @@ -5018,7 +5050,7 @@ { @BackEnd @Case { PostScript @Yield { - {arrow @FromArrowLength arrowlength} + {arrow @FromArrowLength backarrowlength} {arrow @ToArrowLength arrowlength} "{" from "}" "{" to "}" xindent zindent bias fbias tbias radius "ldiaguwrapcurvepath" @@ -5027,7 +5059,7 @@ # CLOCK := if cond { xcoord from??CTR < xcoord to??CTR } # then { clockwise } else { anticlockwise } # FROM :: from boundaryatangle DIRN - # ++ {arrow @FromArrowLength arrowlength} atangle DIRN + # ++ {arrow @FromArrowLength backarrowlength} atangle DIRN # FROM :< DIRN # TO :: to boundaryatangle { DIRN + 180d } # ++ {arrow @ToArrowLength arrowlength} atangle { DIRN + 180d } @@ -5137,6 +5169,7 @@ topt { topt } arrow { arrow } arrowlength { arrowlength } + backarrowlength { backarrowlength } } } } @@ -5233,6 +5266,7 @@ named topt {} named arrow {} named arrowlength {} + named backarrowlength {} { path from { from } to { to } @@ -5248,6 +5282,7 @@ topt { topt } arrow { arrow } arrowlength { arrowlength } + backarrowlength { backarrowlength } } import @Geometry named basefrom { } import @Geometry named baseto { } @@ -5286,6 +5321,9 @@ named arrowstyle { arrowstyle } named arrowwidth { arrowwidth } named arrowlength { arrowlength } + named backarrowstyle { backarrowstyle } + named backarrowwidth { backarrowwidth } + named backarrowlength { backarrowlength } named linklabel { linklabel } named linklabelmargin { linklabelmargin } @@ -5405,6 +5443,7 @@ topt { topt } arrow { arrow } arrowlength { arrowlength } + backarrowlength { backarrowlength } } pathstyle { pathstyle } pathdashlength { pathdashlength } @@ -5414,6 +5453,9 @@ arrowstyle { arrowstyle } arrowwidth { arrowwidth } arrowlength { arrowlength } + backarrowstyle { backarrowstyle } + backarrowwidth { backarrowwidth } + backarrowlength { backarrowlength } linklabel { linklabel } linklabelmargin { linklabelmargin } @@ -6712,5 +6754,6 @@ chsize { 1f } arrowlength { 0.4f } + backarrowlength { 0.4f } } } diff -u --recursive --new-file -u --recursive --new-file lout-3.26/include/diagf.lpg lout-3.27/include/diagf.lpg --- lout-3.26/include/diagf.lpg Wed Sep 18 12:22:38 2002 +++ lout-3.27/include/diagf.lpg Thu Nov 21 09:57:58 2002 @@ -227,26 +227,39 @@ { pop pop } def +% shape and labels of the @Box symbol +% ldiagbox /ldiagbox { 0 0 /SW ldiagpointdef xsize 0 /SE ldiagpointdef xsize ysize /NE ldiagpointdef 0 ysize /NW ldiagpointdef + + xsize 0.25 mul ysize /NNW ldiagpointdef + xsize 0.75 mul ysize /NNE ldiagpointdef + xsize 0.25 mul 0 /SSW ldiagpointdef + xsize 0.75 mul 0 /SSE ldiagpointdef + SE 0.5 ldiagpmul /S ldiagpointdef NW 0.5 ldiagpmul /W ldiagpointdef W SE ldiagpadd /E ldiagpointdef S NW ldiagpadd /N ldiagpointdef + NE 0.5 ldiagpmul /CTR ldiagpointdef - 0 dg /S@ANGLE ldiagangledef - 45 dg /SE@ANGLE ldiagangledef - 90 dg /E@ANGLE ldiagangledef - 135 dg /NE@ANGLE ldiagangledef - 180 dg /N@ANGLE ldiagangledef - 225 dg /NW@ANGLE ldiagangledef - 270 dg /W@ANGLE ldiagangledef - 315 dg /SW@ANGLE ldiagangledef + 0 dg /SSW@ANGLE ldiagangledef + 0 dg /S@ANGLE ldiagangledef + 0 dg /SSE@ANGLE ldiagangledef + 45 dg /SE@ANGLE ldiagangledef + 90 dg /E@ANGLE ldiagangledef + 135 dg /NE@ANGLE ldiagangledef + 180 dg /NNE@ANGLE ldiagangledef + 180 dg /N@ANGLE ldiagangledef + 180 dg /NNW@ANGLE ldiagangledef + 225 dg /NW@ANGLE ldiagangledef + 270 dg /W@ANGLE ldiagangledef + 315 dg /SW@ANGLE ldiagangledef [ CTR NE ldiagpsub /ldiagboxcircum cvx ] ldiagcircumdef SW SE NE NW SW diff -u --recursive --new-file -u --recursive --new-file lout-3.26/include/doc lout-3.27/include/doc --- lout-3.26/include/doc Wed Sep 18 12:22:39 2002 +++ lout-3.27/include/doc Thu Nov 21 08:32:42 2002 @@ -145,33 +145,66 @@ # @RefListBreak { } # break style of ref list # @RefListLabelWidth { @ListLabelWidth } # Labels column width # @RefListSortKey { @Tag } # sorting key + # @MakeGlossary { No } # make glossary? Yes or No + # @GlossaryText { @Null } # glossary initial text + # @GlossaryFont { } # glossary entries font + # @GlossaryBreak { } # glossary entries break + # @GlossaryFormat { +3p @Font @S @Name # glossary entries format + # @Right @I { @Word&&page @PageNum } + # @DP @RawIndentedDisplay @Body } + # @GlossaryGap { @DisplayGap } # gap between glossary entries + # @GlossaryColumnNumber{ 2 } # glossary columns (1 to 10) + # @GlossaryColumnGap { 1.00c @OrIfPlain 6s } # glossary column gap + # @InGlossaryFont { smallcaps } # font for @InGlossary + # @InGlossaryFormat { @Body } # format for @InGlossary # @MakeIndex { No } # make index? Yes or No # @IndexText { @Null } # index initial text # @IndexFont { } # index entries font # @IndexBreak { {oragged 1.2fx} @OrIfPlain {oragged 1fx} } # and break + # @IndexFormat { @Body } # @Index format + # @SubIndexFormat { {1f @Wide}@Body } # @SubIndex format + # @SubSubIndexFormat { {2f @Wide}@Body } # @SubSubIndex format # @IndexColumnNumber { 2 } # index columns (1 to 10) # @IndexColumnGap { 1.00c @OrIfPlain 6s } # index column gap # @IndexCtd { Yes } # include (ctd.) lines # @IndexCtdWord { continued } # "ctd." in current lang. # @IndexCtdFormat { @Body @I (@CtdWord) } # format of ctd. + # @IndexSpacerAbove { 2v } # space above index spacer + # @IndexSpacerBelow { 1v } # space below index spacer + # @IndexSpacerFont { +3p } # font of index spacer + # @IndexSpacerFormat { @Body } # format of index spacer # @MakeIndexA { No } # make index A? Yes or No # @IndexAText { @Null } # index A initial text # @IndexAFont { } # index A entries font # @IndexABreak { {oragged 1.2fx} @OrIfPlain {oragged 1fx} } # and break + # @IndexAFormat { @Body } # @IndexA format + # @SubIndexAFormat { {1f @Wide}@Body } # @SubIndexA format + # @SubSubIndexAFormat { {2f @Wide}@Body } # @SubSubIndexA format # @IndexAColumnNumber { 2 } # index A columns (1 to 10) # @IndexAColumnGap { 1.00c @OrIfPlain 6s } # index A column gap # @IndexACtd { Yes } # include (ctd.) lines # @IndexACtdWord { continued } # "ctd." in current lang. # @IndexACtdFormat { @Body @I (@CtdWord) } # format of ctd. + # @IndexASpacerAbove { 2v } # space above index A spacer + # @IndexASpacerBelow { 1v } # space below index A spacer + # @IndexASpacerFont { +3p } # font of index A spacer + # @IndexASpacerFormat { @Body } # format of index A spacer # @MakeIndexB { No } # make index B? Yes or No # @IndexBText { @Null } # index B initial text # @IndexBFont { } # index B entries font # @IndexBBreak { {oragged 1.2fx} @OrIfPlain {oragged 1fx} } # and break + # @IndexBFormat { @Body } # @IndexB format + # @SubIndexBFormat { {1f @Wide}@Body } # @SubIndexB format + # @SubSubIndexBFormat { {2f @Wide}@Body } # @SubSubIndexB format # @IndexBColumnNumber { 2 } # index B columns (1 to 10) # @IndexBColumnGap { 1.00c @OrIfPlain 6s } # index B column gap # @IndexBCtd { Yes } # include (ctd.) lines # @IndexBCtdWord { continued } # "ctd." in current lang. # @IndexBCtdFormat { @Body @I (@CtdWord) } # format of ctd. + # @IndexBSpacerAbove { 2v } # space above index B spacer + # @IndexBSpacerBelow { 1v } # space below index B spacer + # @IndexBSpacerFont { +3p } # font of index B spacer + # @IndexBSpacerFormat { @Body } # format of index B spacer # @TopGap { 0.75c @OrIfPlain 2f } # gap between figures # @MidGap { 0.75c @OrIfPlain 2f } # gap above/below body text # @FootNoteNumbers { Arabic } # footnote numbers diff -u --recursive --new-file -u --recursive --new-file lout-3.26/include/dsf lout-3.27/include/dsf --- lout-3.26/include/dsf Wed Oct 16 08:53:56 2002 +++ lout-3.27/include/dsf Thu Nov 21 08:35:11 2002 @@ -38,14 +38,19 @@ @Ref @NoRef @ChapRef @NoChapRef @Cite @NoCite @ChapCite @NoChapCite - @IndexA @SubIndexA @SubSubIndexA @RawIndexA - @RawSubIndexA @RawSubSubIndexA @IndexABlanks + @Glossary @InGlossary - @IndexB @SubIndexB @SubSubIndexB @RawIndexB - @RawSubIndexB @RawSubSubIndexB @IndexBBlanks - - @Index @SubIndex @SubSubIndex @RawIndex - @RawSubIndex @RawSubSubIndex @IndexBlanks + @IndexA @SubIndexA @SubSubIndexA + @RawIndexA @RawSubIndexA @RawSubSubIndexA + @IndexABlanks @IndexASpacer @InitialIndexASpacer @IndexALetters + + @IndexB @SubIndexB @SubSubIndexB + @RawIndexB @RawSubIndexB @RawSubSubIndexB + @IndexBBlanks @IndexBSpacer @InitialIndexBSpacer @IndexBLetters + + @Index @SubIndex @SubSubIndex + @RawIndex @RawSubIndex @RawSubSubIndex + @IndexBlanks @IndexSpacer @InitialIndexSpacer @IndexLetters @BypassContentsEntry @BypassMajorContentsEntry @BypassFigureContentsEntry @BypassTableContentsEntry @@ -73,7 +78,7 @@ named @EvenRightBodyMargin { 0c } # extra margin for page body named @PageBoxType { None } # None Box CurveBox ShadowBox named @PageBoxMargin { 1.00c } # page box margin - import @LengthUnits named @PageBoxLineWidth + import @PSLengths named @PageBoxLineWidth { } # page box line thickness named @PageBoxPaint { none } # page box paint named @PageBoxShadow { 0.60c } # shadow margin if ShadowBox @@ -236,10 +241,32 @@ named ":" { "\037" } { @Tag } # sorting key + named @MakeGlossary { No } # make glossary? Yes or No + named @GlossaryText { @Null } # initial glossary text + named @GlossaryFont { } # font for glossary + named @GlossaryBreak { } # break style for glossary + named @GlossaryFormat # format for glossary + named @Name {} + named @PageNum {} + named @Body {} + { +3p @Font @S @Name + @Right @I { @Word&&page @PageNum } + @DP @RawIndentedDisplay @Body } + named @GlossaryGap { @DisplayGap } # gap between glossary items + named @GlossaryColumnNumber { 2 } # glossary columns (1 to 10) + named @GlossaryColumnGap { 1.00c @OrIfPlain 6s } # glossary column gap + named @InGlossaryFont { smallcaps } # font for @InGlossary + named @InGlossaryFormat right @Body { @Body } # format for @InGlossary named @MakeIndex { No } # make index? Yes or No named @IndexText { @Null } # initial index text named @IndexFont { } # index entries font named @IndexBreak { {oragged 1.2fx} @OrIfPlain {oragged 1fx} } # index entries break + named @IndexFormat + right @Body { @Body } # @Index format + named @SubIndexFormat + right @Body { {1f @Wide}@Body } # @SubIndex format + named @SubSubIndexFormat + right @Body { {2f @Wide}@Body } # @SubSubIndex format named @IndexColumnNumber { 2 } # index columns (1 to 10) named @IndexColumnGap { 1.00c @OrIfPlain 6s } # index column gap named @IndexCtd { Yes } # include (ctd.) lines @@ -248,10 +275,21 @@ left @Body right @CtdWord { @Body @I (@CtdWord) } # (ctd.) format + named @IndexSpacerAbove { 2v } # space above index spacer + named @IndexSpacerBelow { 1v } # space below index spacer + named @IndexSpacerFont { +3p } # font of index spacer + named @IndexSpacerFormat + right @Body { @Body } # format of index spacer named @MakeIndexA { No } # make index A? Yes or No named @IndexAText { @Null } # initial index text named @IndexAFont { } # index A entries font named @IndexABreak { {oragged 1.2fx} @OrIfPlain {oragged 1fx} } # index A entries break + named @IndexAFormat + right @Body { @Body } # @IndexA format + named @SubIndexAFormat + right @Body { {1f @Wide}@Body } # @SubIndexA format + named @SubSubIndexAFormat + right @Body { {2f @Wide}@Body } # @SubSubIndexA format named @IndexAColumnNumber { 2 } # index A columns (1 to 10) named @IndexAColumnGap { 1.00c @OrIfPlain 6s } # index A column gap named @IndexACtd { Yes } # include (ctd.) lines @@ -260,10 +298,21 @@ left @Body right @CtdWord { @Body @I (@CtdWord) } # (ctd.) format + named @IndexASpacerAbove { 2v } # space above index A spacer + named @IndexASpacerBelow { 1v } # space below index A spacer + named @IndexASpacerFont { +3p } # font of index A spacer + named @IndexASpacerFormat + right @Body { @Body } # format of index A spacer named @MakeIndexB { No } # make index B? Yes or No named @IndexBText { @Null } # initial index text named @IndexBFont { } # index B entries font named @IndexBBreak { {oragged 1.2fx} @OrIfPlain {oragged 1fx} } # index B entries break + named @IndexBFormat + right @Body { @Body } # @IndexB format + named @SubIndexBFormat + right @Body { {1f @Wide}@Body } # @SubIndexB format + named @SubSubIndexBFormat + right @Body { {2f @Wide}@Body } # @SubSubIndexB format named @IndexBColumnNumber { 2 } # index B columns (1 to 10) named @IndexBColumnGap { 1.00c @OrIfPlain 6s } # index B column gap named @IndexBCtd { Yes } # include (ctd.) lines @@ -272,6 +321,11 @@ left @Body right @CtdWord { @Body @I (@CtdWord) } # (ctd.) format + named @IndexBSpacerAbove { 2v } # space above index B spacer + named @IndexBSpacerBelow { 1v } # space below index B spacer + named @IndexBSpacerFont { +3p } # font of index B spacer + named @IndexBSpacerFormat + right @Body { @Body } # format of index B spacer named @TopGap { 0.75c @OrIfPlain 2f } # gap between figures named @MidGap { 0.75c @OrIfPlain 2f } # gap above/below body text @@ -785,7 +839,7 @@ ########################################################################### # # # Definitions for page headers and footers. There are 16 symbols here, # - # in the following pattern: # + # in the following arrangement: # # # # @(- | Running)(- | Intro)(Odd | Even)(Top | Foot)Header # # # @@ -807,6 +861,7 @@ named @Prefix {} named @Tag {} { @Null + # "(@Runner:"@Start":"@MajorTitle")" } def @DupRunner # duplicate previous runner @@ -1168,6 +1223,7 @@ def @IntroOddFullPlace { @Galley } def @IntroEvenFullPlace { @Galley } def @IntroColPlace { @Galley } + def @GlossaryPlace { @Galley } def @IndexPlace { @Galley } def @IndexAPlace { @Galley } def @IndexBPlace { @Galley } @@ -1359,6 +1415,11 @@ @HExpand num @ColsOf @EqualWidth 0c @High @IntroColPlace } + def @GlossaryColList right num + { + @HExpand num @ColsOf gap { @GlossaryColumnGap } @EqualWidth @VExpand @GlossaryPlace + } + def @IndexColList right num { @HExpand num @ColsOf gap { @IndexColumnGap } @EqualWidth @VExpand @IndexPlace @@ -1479,7 +1540,7 @@ ########################################################################### # # # Definitions for page lists. There are four symbols here, in the # - # following pattern: # + # following arrangement: # # # # @(Simple | Running)(- | Intro)PageList # # # @@ -1502,6 +1563,7 @@ @OneOf { @ColList colnum + @GlossaryColList @GlossaryColumnNumber @IndexAColList @IndexAColumnNumber @IndexBColList @IndexBColumnNumber @IndexColList @IndexColumnNumber @@ -1513,6 +1575,7 @@ @OneOf { @IntroColList colnum + @GlossaryColList @GlossaryColumnNumber @IndexAColList @IndexAColumnNumber @IndexBColList @IndexBColumnNumber @IndexColList @IndexColumnNumber @@ -2141,7 +2204,9 @@ named postgap { 0c } named protect { No } { - def @Leaders { @ContentsLeader &@ContentsLeaderGap @Leaders } +# def @Leaders { @ContentsLeader &@ContentsLeaderGap @Leaders } + + def @Leaders { @ContentsLeaderGap @Wide {} & @ContentsLeader & @Leaders } def @OptionalCrossLink right x { @@ -2158,10 +2223,20 @@ } } +# def @Item +# { +# |indent @OptionalCrossLink number @ContentsFormat @HExpand { +# title & @ContentsLeaderGap @Wide &1rt @OneCol { +# @Leaders & @RightPart &0io +# } +# } +# |@ContentsRightWidth +# } + def @Item { |indent @OptionalCrossLink number @ContentsFormat @HExpand { - title & @ContentsLeaderGap @Wide &1rt @OneCol { + title &1rt @OneCol { @Leaders & @RightPart &0io } } @@ -2537,45 +2612,45 @@ # but since the point of @Place is to output a matrix (?), I have not implemented this change # def @Place - named x + import @PSLengths named x named "+" precedence 96 associativity left left a right b { a b "add" } named "-" precedence 96 associativity left left a right b { a b "sub" } named "/" precedence 97 associativity left left a right b { a b "div" } named "*" precedence 98 associativity left left a right b { a b "mul" } - named c precedence 99 left a { a "cm" } - named i precedence 99 left a { a "in" } - named e precedence 99 left a { a "em" } - named p precedence 99 left a { a "pt" } - named f precedence 99 left a { a "ft" } - named s precedence 99 left a { a "sp" } - named v precedence 99 left a { a "vs" } - named cm precedence 99 left a { a "cm" } - named in precedence 99 left a { a "in" } - named em precedence 99 left a { a "em" } - named pt precedence 99 left a { a "pt" } - named ft precedence 99 left a { a "ft" } - named sp precedence 99 left a { a "sp" } - named vs precedence 99 left a { a "vs" } + # named c precedence 99 left a { a "cm" } + # named i precedence 99 left a { a "in" } + # named e precedence 99 left a { a "em" } + # named p precedence 99 left a { a "pt" } + # named f precedence 99 left a { a "ft" } + # named s precedence 99 left a { a "sp" } + # named v precedence 99 left a { a "vs" } + # named cm precedence 99 left a { a "cm" } + # named in precedence 99 left a { a "in" } + # named em precedence 99 left a { a "em" } + # named pt precedence 99 left a { a "pt" } + # named ft precedence 99 left a { a "ft" } + # named sp precedence 99 left a { a "sp" } + # named vs precedence 99 left a { a "vs" } { 0 } - named y + import @PSLengths named y named "+" precedence 96 associativity left left a right b { a b "add" } named "-" precedence 96 associativity left left a right b { a b "sub" } named "/" precedence 97 associativity left left a right b { a b "div" } named "*" precedence 98 associativity left left a right b { a b "mul" } - named c precedence 99 left a { a "cm" } - named i precedence 99 left a { a "in" } - named e precedence 99 left a { a "em" } - named p precedence 99 left a { a "pt" } - named f precedence 99 left a { a "ft" } - named s precedence 99 left a { a "sp" } - named v precedence 99 left a { a "vs" } - named cm precedence 99 left a { a "cm" } - named in precedence 99 left a { a "in" } - named em precedence 99 left a { a "em" } - named pt precedence 99 left a { a "pt" } - named ft precedence 99 left a { a "ft" } - named sp precedence 99 left a { a "sp" } - named vs precedence 99 left a { a "vs" } + # named c precedence 99 left a { a "cm" } + # named i precedence 99 left a { a "in" } + # named e precedence 99 left a { a "em" } + # named p precedence 99 left a { a "pt" } + # named f precedence 99 left a { a "ft" } + # named s precedence 99 left a { a "sp" } + # named v precedence 99 left a { a "vs" } + # named cm precedence 99 left a { a "cm" } + # named in precedence 99 left a { a "in" } + # named em precedence 99 left a { a "em" } + # named pt precedence 99 left a { a "pt" } + # named ft precedence 99 left a { a "ft" } + # named sp precedence 99 left a { a "sp" } + # named vs precedence 99 left a { a "vs" } { 0 } right val { @@ -3988,6 +4063,59 @@ ########################################################################### # # + # Glossary. # + # # + ########################################################################### + + def @GlossaryList { @Galley //@GlossaryGap @GlossaryList } + + def @GlossarySection into { @GlossaryPlace&&following } + right etc + { + // @GlossaryList + // etc + //1rt + } + + def @DoGlossary into { @GlossaryList&&following } + left @Key + named name {} + named pnum {} + right body + { + @GlossaryFont @Font @GlossaryBreak @Break @GlossaryFormat + @Name { name } + @PageNum { pnum } + @Body { body } + } + + def @Glossary + left name + named sortkey { dft } + right body + { + def key { sortkey @Dft name } + + @MakeGlossary @Case { + { Yes yes } @Yield { @PageMark key & + key @DoGlossary name { name } pnum { @PageOf key } body + } + else @Yield @Null + } + } + + def @InGlossary + right x + { + @MakeGlossary @Case { + { Yes yes } @Yield { @InGlossaryFormat @InGlossaryFont @Font x } + else @Yield x + } + } + + + ########################################################################### + # # # Index. # # # ########################################################################### @@ -4002,39 +4130,47 @@ // @IndexBreak @Break @BypassIndexList // @ClearHeaderComponent // etc + //1rt } def @DoIndex into { @IndexList&&following } - left @Key - named indent { 0f } - named stem {} - right @Body - { + left @Key # sort key + named pgrange {} # page numbers, or empty if none + named depth {} # 0, 1, or 2 (@Index, @Sub, or @SubSub) + right body # body, not including any prefix + { + def @Body + { + depth @Case { + 0 @Yield @IndexFormat body + 1 @Yield @SubIndexFormat body + 2 @Yield @SubSubIndexFormat body + } + } + def @Enclose right x { - @IndexCtd.indent @Case { + @IndexCtd.depth @Case { - Yes.0f @Yield { + Yes.0 @Yield { @ClearHeaderComponent //1vx x //1vx 1vx @SetHeaderComponent { - indent @Wide & - stem @IndexCtdFormat {continued @WordVal @IndexCtdWord} + @Body @IndexCtdFormat {continued @WordVal @IndexCtdWord} } //1vx 1vx @BeginHeaderComponent (unused) } - Yes.1f @Yield { + Yes.1 @Yield { @EndHeaderComponent //1vx x //1vx 1vx @BeginHeaderComponent { - indent @Wide & - stem @IndexCtdFormat {continued @WordVal @IndexCtdWord} + @Body @IndexCtdFormat {continued @WordVal @IndexCtdWord} } } @@ -4043,46 +4179,43 @@ } } - def @Merge left x right y + def @Merge left lpart right rpart { - { x @Rump { x @Meld y } } @Case + { lpart @Rump { lpart @Meld rpart } } @Case { - "" @Yield x - else @Yield { { x{@OneCol ,} } @Meld y } + "" @Yield lpart + else @Yield { { lpart{@OneCol ,} } @Meld rpart } } } - @IndexFont @Font @IndexBreak @Break { indent @Wide & @Body } + @IndexFont @Font @IndexBreak @Break pgrange @Case { + "" @Yield { @Body &"0.03fu" {} } + else @Yield { @Body &"0.03fu" {}{@OneCol ,} pgrange } + + } } def @RawIndex - left x - named @Tag {} - named indent { 0f } - right y + left lpart + named depth { 0 } + right rpart { @MakeIndex @Case { - Yes @Yield { - @PageMark @Tag & - x @DoIndex stem { y } indent { indent } - { - y &"0.03fu" {} - } - } + Yes @Yield { lpart @DoIndex depth { depth } rpart } else @Yield @Null } } - macro @RawSubIndex { @RawIndex indent { "1f" } } - macro @RawSubSubIndex { @RawIndex indent { "2f" } } + macro @RawSubIndex { @RawIndex depth { 1 } } + macro @RawSubSubIndex { @RawIndex depth { 2 } } def @Index - left x + left lpart named @Tag {} - named indent { 0f } + named depth { 0 } named to {} - right y + right rpart { def @PgMk right tag { @@ -4104,21 +4237,16 @@ } } - @MakeIndex @Case { Yes @Yield { - @PageMark @Tag & - x @DoIndex stem { y } indent { indent } - { - y &"0.03fu" {}{@OneCol ,} @PgRange - } - } + @PageMark @Tag & + lpart @DoIndex depth { depth } pgrange { @PgRange } rpart } else @Yield @Null } } - macro @SubIndex { @Index indent { "1f" } } - macro @SubSubIndex { @Index indent { "2f" } } + macro @SubIndex { @Index depth { 1 } } + macro @SubSubIndex { @Index depth { 2 } } def @IndexBlanks { @@ -4131,6 +4259,44 @@ z @RawIndex {} } + def @IndexSpacer + left lpart + named above { @IndexSpacerAbove } + named below { @IndexSpacerBelow } + named font { @IndexSpacerFont } + named format right @Body { @IndexSpacerFormat @Body } + right rpart + { + def @Send into { @IndexList&&following } + right @Key + { + @ClearHeaderComponent + // + //above + @CNP + @OneRow { font @Font format rpart //below } + } + + @MakeIndex @Case { + Yes @Yield @Send lpart + else @Yield @Null + } + } + + macro @InitialIndexSpacer { @IndexSpacer above { 0i } } + + def @IndexLetters + { + a @InitialIndexSpacer A + b @IndexSpacer B c @IndexSpacer C d @IndexSpacer D e @IndexSpacer E + f @IndexSpacer F g @IndexSpacer G h @IndexSpacer H i @IndexSpacer I + j @IndexSpacer J k @IndexSpacer K l @IndexSpacer L m @IndexSpacer M + n @IndexSpacer N o @IndexSpacer O p @IndexSpacer P q @IndexSpacer Q + r @IndexSpacer R s @IndexSpacer S t @IndexSpacer T u @IndexSpacer U + v @IndexSpacer V w @IndexSpacer W x @IndexSpacer X y @IndexSpacer Y + z @IndexSpacer Z + } + def @BypassBeginIndexPlace { @Galley } def @BypassBeginIndex force into { @BypassBeginIndexPlace&&preceding } {} @@ -4157,40 +4323,51 @@ def @IndexASection into { @IndexAPlace&&following } right etc { - // @IndexABreak @Break @IndexAList // etc - // @IndexABreak @Break @BypassIndexAList // etc + // @IndexABreak @Break @IndexAList + // @IndexABreak @Break @BypassIndexAList + // @ClearHeaderComponent + // etc + //1rt } def @DoIndexA into { @IndexAList&&following } - left @Key - named indent { 0f } - right @Body - { + left @Key # sort key + named pgrange {} # page numbers, or empty if none + named depth {} # 0, 1, or 2 (@IndexA, @Sub, or @SubSub) + right body # body, not including any prefix + { + def @Body + { + depth @Case { + 0 @Yield @IndexAFormat body + 1 @Yield @SubIndexAFormat body + 2 @Yield @SubSubIndexAFormat body + } + } + def @Enclose right x { - @IndexACtd.indent @Case { + @IndexACtd.depth @Case { - Yes.0f @Yield { + Yes.0 @Yield { @ClearHeaderComponent //1vx x //1vx 1vx @SetHeaderComponent { - indent @Wide & - stem @IndexACtdFormat {continued @WordVal @IndexACtdWord} + @Body @IndexACtdFormat {continued @WordVal @IndexACtdWord} } //1vx 1vx @BeginHeaderComponent (unused) } - Yes.1f @Yield { + Yes.1 @Yield { @EndHeaderComponent //1vx x //1vx 1vx @BeginHeaderComponent { - indent @Wide & - stem @IndexACtdFormat {continued @WordVal @IndexACtdWord} + @Body @IndexACtdFormat {continued @WordVal @IndexACtdWord} } } @@ -4199,46 +4376,43 @@ } } - def @Merge left x right y + def @Merge left lpart right rpart { - { x @Rump { x @Meld y } } @Case + { lpart @Rump { lpart @Meld rpart } } @Case { - "" @Yield x - else @Yield { { x{@OneCol ,} } @Meld y } + "" @Yield lpart + else @Yield { { lpart{@OneCol ,} } @Meld rpart } } } - @IndexAFont @Font @IndexABreak @Break { indent @Wide & @Body } + @IndexAFont @Font @IndexABreak @Break pgrange @Case { + "" @Yield { @Body &"0.03fu" {} } + else @Yield { @Body &"0.03fu" {}{@OneCol ,} pgrange } + + } } def @RawIndexA - left x - named @Tag {} - named indent { 0f } - right y + left lpart + named depth { 0 } + right rpart { @MakeIndexA @Case { - Yes @Yield { - @PageMark @Tag & - x @DoIndexA stem { y } indent { indent } - { - y &"0.03fu" {} - } - } + Yes @Yield { lpart @DoIndexA depth { depth } rpart } else @Yield @Null } } - macro @RawSubIndexA { @RawIndexA indent { "1f" } } - macro @RawSubSubIndexA { @RawIndexA indent { "2f" } } + macro @RawSubIndexA { @RawIndexA depth { 1 } } + macro @RawSubSubIndexA { @RawIndexA depth { 2 } } def @IndexA - left x + left lpart named @Tag {} - named indent { 0f } + named depth { 0 } named to {} - right y + right rpart { def @PgMk right tag { @@ -4262,19 +4436,14 @@ @MakeIndexA @Case { Yes @Yield { - @PageMark @Tag & - x @DoIndexA stem { y } indent { indent } - { - y &"0.03fu" {}{@OneCol ,} @PgRange - } - } + @PageMark @Tag & + lpart @DoIndexA depth { depth } pgrange { @PgRange } rpart } else @Yield @Null } - } - macro @SubIndexA { @IndexA indent { "1f" } } - macro @SubSubIndexA { @IndexA indent { "2f" } } + macro @SubIndexA { @IndexA depth { 1 } } + macro @SubSubIndexA { @IndexA depth { 2 } } def @IndexABlanks { @@ -4287,6 +4456,44 @@ z @RawIndexA {} } + def @IndexASpacer + left lpart + named above { @IndexASpacerAbove } + named below { @IndexASpacerBelow } + named font { @IndexASpacerFont } + named format right @Body { @IndexASpacerFormat @Body } + right rpart + { + def @Send into { @IndexAList&&following } + right @Key + { + @ClearHeaderComponent + // + //above + @CNP + @OneRow { font @Font format rpart //below } + } + + @MakeIndexA @Case { + Yes @Yield @Send lpart + else @Yield @Null + } + } + + macro @InitialIndexASpacer { @IndexASpacer above { 0i } } + + def @IndexALetters + { + a @InitialIndexASpacer A + b @IndexASpacer B c @IndexASpacer C d @IndexASpacer D e @IndexASpacer E + f @IndexASpacer F g @IndexASpacer G h @IndexASpacer H i @IndexASpacer I + j @IndexASpacer J k @IndexASpacer K l @IndexASpacer L m @IndexASpacer M + n @IndexASpacer N o @IndexASpacer O p @IndexASpacer P q @IndexASpacer Q + r @IndexASpacer R s @IndexASpacer S t @IndexASpacer T u @IndexASpacer U + v @IndexASpacer V w @IndexASpacer W x @IndexASpacer X y @IndexASpacer Y + z @IndexASpacer Z + } + def @BypassBeginIndexAPlace { @Galley } def @BypassBeginIndexA force into { @BypassBeginIndexAPlace&&preceding } {} @@ -4313,40 +4520,51 @@ def @IndexBSection into { @IndexBPlace&&following } right etc { - // @IndexBBreak @Break @IndexBList // etc - // @IndexBBreak @Break @BypassIndexBList // etc + // @IndexBBreak @Break @IndexBList + // @IndexBBreak @Break @BypassIndexBList + // @ClearHeaderComponent + // etc + //1rt } def @DoIndexB into { @IndexBList&&following } - left @Key - named indent { 0f } - right @Body - { + left @Key # sort key + named pgrange {} # page numbers, or empty if none + named depth {} # 0, 1, or 2 (@IndexB, @Sub, or @SubSub) + right body # body, not including any prefix + { + def @Body + { + depth @Case { + 0 @Yield @IndexBFormat body + 1 @Yield @SubIndexBFormat body + 2 @Yield @SubSubIndexBFormat body + } + } + def @Enclose right x { - @IndexBCtd.indent @Case { + @IndexBCtd.depth @Case { - Yes.0f @Yield { + Yes.0 @Yield { @ClearHeaderComponent //1vx x //1vx 1vx @SetHeaderComponent { - indent @Wide & - stem @IndexBCtdFormat {continued @WordVal @IndexBCtdWord} + @Body @IndexBCtdFormat {continued @WordVal @IndexBCtdWord} } //1vx 1vx @BeginHeaderComponent (unused) } - Yes.1f @Yield { + Yes.1 @Yield { @EndHeaderComponent //1vx x //1vx 1vx @BeginHeaderComponent { - indent @Wide & - stem @IndexBCtdFormat {continued @WordVal @IndexBCtdWord} + @Body @IndexBCtdFormat {continued @WordVal @IndexBCtdWord} } } @@ -4355,46 +4573,43 @@ } } - def @Merge left x right y + def @Merge left lpart right rpart { - { x @Rump { x @Meld y } } @Case + { lpart @Rump { lpart @Meld rpart } } @Case { - "" @Yield x - else @Yield { { x{@OneCol ,} } @Meld y } + "" @Yield lpart + else @Yield { { lpart{@OneCol ,} } @Meld rpart } } } - @IndexBFont @Font @IndexBBreak @Break { indent @Wide & @Body } + @IndexBFont @Font @IndexBBreak @Break pgrange @Case { + "" @Yield { @Body &"0.03fu" {} } + else @Yield { @Body &"0.03fu" {}{@OneCol ,} pgrange } + + } } def @RawIndexB - left x - named @Tag {} - named indent { 0f } - right y + left lpart + named depth { 0 } + right rpart { @MakeIndexB @Case { - Yes @Yield { - @PageMark @Tag & - x @DoIndexB stem { y } indent { indent } - { - y &"0.03fu" {} - } - } + Yes @Yield { lpart @DoIndexB depth { depth } rpart } else @Yield @Null } } - macro @RawSubIndexB { @RawIndexB indent { "1f" } } - macro @RawSubSubIndexB { @RawIndexB indent { "2f" } } + macro @RawSubIndexB { @RawIndexB depth { 1 } } + macro @RawSubSubIndexB { @RawIndexB depth { 2 } } def @IndexB - left x + left lpart named @Tag {} - named indent { 0f } + named depth { 0 } named to {} - right y + right rpart { def @PgMk right tag { @@ -4418,19 +4633,14 @@ @MakeIndexB @Case { Yes @Yield { - @PageMark @Tag & - x @DoIndexB stem { y } indent { indent } - { - y &"0.03fu" {}{@OneCol ,} @PgRange - } - } + @PageMark @Tag & + lpart @DoIndexB depth { depth } pgrange { @PgRange } rpart } else @Yield @Null } - } - macro @SubIndexB { @IndexB indent { "1f" } } - macro @SubSubIndexB { @IndexB indent { "2f" } } + macro @SubIndexB { @IndexB depth { 1 } } + macro @SubSubIndexB { @IndexB depth { 2 } } def @IndexBBlanks { @@ -4443,6 +4653,44 @@ z @RawIndexB {} } + def @IndexBSpacer + left lpart + named above { @IndexBSpacerAbove } + named below { @IndexBSpacerBelow } + named font { @IndexBSpacerFont } + named format right @Body { @IndexBSpacerFormat @Body } + right rpart + { + def @Send into { @IndexBList&&following } + right @Key + { + @ClearHeaderComponent + // + //above + @CNP + @OneRow { font @Font format rpart //below } + } + + @MakeIndexB @Case { + Yes @Yield @Send lpart + else @Yield @Null + } + } + + macro @InitialIndexBSpacer { @IndexBSpacer above { 0i } } + + def @IndexBLetters + { + a @InitialIndexBSpacer A + b @IndexBSpacer B c @IndexBSpacer C d @IndexBSpacer D e @IndexBSpacer E + f @IndexBSpacer F g @IndexBSpacer G h @IndexBSpacer H i @IndexBSpacer I + j @IndexBSpacer J k @IndexBSpacer K l @IndexBSpacer L m @IndexBSpacer M + n @IndexBSpacer N o @IndexBSpacer O p @IndexBSpacer P q @IndexBSpacer Q + r @IndexBSpacer R s @IndexBSpacer S t @IndexBSpacer T u @IndexBSpacer U + v @IndexBSpacer V w @IndexBSpacer W x @IndexBSpacer X y @IndexBSpacer Y + z @IndexBSpacer Z + } + def @BypassBeginIndexBPlace { @Galley } def @BypassBeginIndexB force into { @BypassBeginIndexBPlace&&preceding } {} @@ -4471,7 +4719,7 @@ named type {} # MajorIntro, Major, VeryMajor, or Minor named initiallanguage {} # its language named title {} # its full title - named runningtitle {} # its running title + named runningtitle { dft } # its running title Jeffk 12/11/02 from {} named aboveheadinggap { 0f } # gap above heading named headingfont {} # its heading font named headingbreak {} # its heading break @@ -4528,6 +4776,21 @@ initiallanguage @Language { runningtitle @Dft title } } + def @IfMajor right x + { + type @Case { + { MajorIntro Major ExtraMajor ExtraMajorIntro } @Yield x + else @Yield @Null + } + } + + def @StartIfMajor { + type @Case { + { MajorIntro Major ExtraMajor ExtraMajorIntro VeryMajor } @Yield Start + else @Yield NonStart + } + } + def @Run right start { inrunners @Do type @Case { @@ -4613,6 +4876,7 @@ Minor @Yield { headingfont @Font headingbreak @Break @Protect {@LongNum headingformat title} + // @Run @StartIfMajor // @PageMark tag @DP headingtext } @@ -4622,6 +4886,7 @@ //aboveheadinggap headingfont @Font headingbreak @Break { @LongNum headingformat title } + // @Run @StartIfMajor // @PageMark tag @DP headingtext } @@ -4631,6 +4896,7 @@ //aboveheadinggap headingfont @Font headingbreak @Break { bypassnumber headingformat title } + // @Run @StartIfMajor // @PageMark tag @DP headingtext } @@ -4638,21 +4904,6 @@ } } - def @IfMajor right x - { - type @Case { - { MajorIntro Major ExtraMajor ExtraMajorIntro } @Yield x - else @Yield @Null - } - } - - def @StartIfMajor { - type @Case { - { MajorIntro Major ExtraMajor ExtraMajorIntro VeryMajor } @Yield Start - else @Yield NonStart - } - } - initiallanguage @Language { @Heading // wantindefinite @Case { @@ -4663,7 +4914,7 @@ attachnum & @NumberMarker @Tag { tag } @Value { @ShortNum } } // @IfMajor { @FootNoteThrough @Do @BeginFootNoteCounter } - // @Run @StartIfMajor + # // @Run @StartIfMajor // @ContentsStuff // @TitleMarker @Tag { tag } @Value { title } // intheorems @BeginAllCounters @ShortNum diff -u --recursive --new-file -u --recursive --new-file lout-3.26/include/figf.lpg lout-3.27/include/figf.lpg --- lout-3.26/include/figf.lpg Wed Sep 18 12:22:38 2002 +++ lout-3.27/include/figf.lpg Wed Oct 30 20:38:36 2002 @@ -4,6 +4,10 @@ % PostScript @SysPrependGraphic file for @Fig Jeffrey H. Kingston % % Version 2.0 (includes CIRCUM label) January 1992 % % % +% Although Fig is now obsolete I have updated it 20 October 2002 % +% to work with textures, i.e. replacing setrgbcolor with % +% LoutSetRGBColor. % +% % % To assist in avoiding name clashes, the names of all symbols % % defined here begin with "lfig". However, this is not feasible % % with user-defined labels and some labels used by users. % @@ -150,34 +154,34 @@ } def % painting (i.e. filling): - lfigwhite - (etc.) -/lfignopaint { } def -/lfignochange { fill } def -/lfigdarkblue { 0.0 0.0 0.5 setrgbcolor fill } def -/lfigblue { 0.0 0.0 1.0 setrgbcolor fill } def -/lfiglightblue { 0.5 0.5 1.0 setrgbcolor fill } def -/lfigdarkgreen { 0.0 0.5 0.0 setrgbcolor fill } def -/lfiggreen { 0.0 1.0 0.0 setrgbcolor fill } def -/lfiglightgreen { 0.5 1.0 0.5 setrgbcolor fill } def -/lfigdarkred { 0.5 0.0 0.0 setrgbcolor fill } def -/lfigred { 1.0 0.0 0.0 setrgbcolor fill } def -/lfiglightred { 1.0 0.5 0.5 setrgbcolor fill } def -/lfigdarkcyan { 0.0 0.5 0.5 setrgbcolor fill } def -/lfigcyan { 0.0 1.0 1.0 setrgbcolor fill } def -/lfiglightcyan { 0.5 1.0 1.0 setrgbcolor fill } def -/lfigdarkmagenta { 0.5 0.0 0.5 setrgbcolor fill } def -/lfigmagenta { 1.0 0.0 1.0 setrgbcolor fill } def -/lfiglightmagenta { 1.0 0.5 1.0 setrgbcolor fill } def -/lfigdarkyellow { 0.5 0.5 0.0 setrgbcolor fill } def -/lfigyellow { 1.0 1.0 0.0 setrgbcolor fill } def -/lfiglightyellow { 1.0 1.0 0.5 setrgbcolor fill } def -/lfigdarkgray { 0.2 0.2 0.2 setrgbcolor fill } def -/lfiggray { 0.5 0.5 0.5 setrgbcolor fill } def -/lfiglightgray { 0.8 0.8 0.8 setrgbcolor fill } def -/lfigdarkgrey { 0.2 0.2 0.2 setrgbcolor fill } def -/lfiggrey { 0.5 0.5 0.5 setrgbcolor fill } def -/lfiglightgrey { 0.8 0.8 0.8 setrgbcolor fill } def -/lfigblack { 0.0 0.0 0.0 setrgbcolor fill } def -/lfigwhite { 1.0 1.0 1.0 setrgbcolor fill } def +/lfignopaint { } def +/lfignochange { fill } def +/lfigdarkblue { 0.0 0.0 0.5 LoutSetRGBColor fill } def +/lfigblue { 0.0 0.0 1.0 LoutSetRGBColor fill } def +/lfiglightblue { 0.5 0.5 1.0 LoutSetRGBColor fill } def +/lfigdarkgreen { 0.0 0.5 0.0 LoutSetRGBColor fill } def +/lfiggreen { 0.0 1.0 0.0 LoutSetRGBColor fill } def +/lfiglightgreen { 0.5 1.0 0.5 LoutSetRGBColor fill } def +/lfigdarkred { 0.5 0.0 0.0 LoutSetRGBColor fill } def +/lfigred { 1.0 0.0 0.0 LoutSetRGBColor fill } def +/lfiglightred { 1.0 0.5 0.5 LoutSetRGBColor fill } def +/lfigdarkcyan { 0.0 0.5 0.5 LoutSetRGBColor fill } def +/lfigcyan { 0.0 1.0 1.0 LoutSetRGBColor fill } def +/lfiglightcyan { 0.5 1.0 1.0 LoutSetRGBColor fill } def +/lfigdarkmagenta { 0.5 0.0 0.5 LoutSetRGBColor fill } def +/lfigmagenta { 1.0 0.0 1.0 LoutSetRGBColor fill } def +/lfiglightmagenta { 1.0 0.5 1.0 LoutSetRGBColor fill } def +/lfigdarkyellow { 0.5 0.5 0.0 LoutSetRGBColor fill } def +/lfigyellow { 1.0 1.0 0.0 LoutSetRGBColor fill } def +/lfiglightyellow { 1.0 1.0 0.5 LoutSetRGBColor fill } def +/lfigdarkgray { 0.2 0.2 0.2 LoutSetRGBColor fill } def +/lfiggray { 0.5 0.5 0.5 LoutSetRGBColor fill } def +/lfiglightgray { 0.8 0.8 0.8 LoutSetRGBColor fill } def +/lfigdarkgrey { 0.2 0.2 0.2 LoutSetRGBColor fill } def +/lfiggrey { 0.5 0.5 0.5 LoutSetRGBColor fill } def +/lfiglightgrey { 0.8 0.8 0.8 LoutSetRGBColor fill } def +/lfigblack { 0.0 0.0 0.0 LoutSetRGBColor fill } def +/lfigwhite { 1.0 1.0 1.0 LoutSetRGBColor fill } def % line caps (and joins, not currently used) /lfigbutt 0 def diff -u --recursive --new-file -u --recursive --new-file lout-3.26/include/graphf lout-3.27/include/graphf --- lout-3.26/include/graphf Wed Sep 18 12:22:38 2002 +++ lout-3.27/include/graphf Sun Nov 3 08:21:12 2002 @@ -10,8 +10,11 @@ # # ############################################################################### +@SysInclude { graphf.etc } # @GraphMath +@SysInclude { lengths } # @LoutLengths +@SysInclude { coltex } # @ColourCommand and @TextureCommand @SysPrependGraphic { graphf.lpg } -@SysInclude { graphf.etc } + def @GraphObj left p @@ -43,15 +46,7 @@ } def @GraphCross - named symbolsize - named cm left x { x"c" } - named in left x { x"i" } - named em left x { x"m" } - named pt left x { x"p" } - named ft left x { x"f" } - named sp left x { x"s" } - named vs left x { x"v" } - { 0.15 ft } + import @LoutLengths named symbolsize { 0.15f } { @BackEnd @Case { @@ -66,7 +61,8 @@ PDF @Yield { @HContract @VContract - {"n [] 0 d 0 0 m __xsize __ysize l 0 __ysize m __xsize 0 l S"} # uses S because PostScript version does NOT use closepath + { "n [] 0 d 0 0 m __xsize __ysize l 0 __ysize m __xsize 0 l S"} + # uses S because PostScript version does NOT use closepath @Graphic {symbolsize @High symbolsize @Wide ^| symbolsize @Wide ^/ symbolsize @High} } @@ -75,15 +71,7 @@ } def @GraphPlus - named symbolsize - named cm left x { x"c" } - named in left x { x"i" } - named em left x { x"m" } - named pt left x { x"p" } - named ft left x { x"f" } - named sp left x { x"s" } - named vs left x { x"v" } - { 0.15 ft } + import @LoutLengths named symbolsize { 0.15f } { @BackEnd @Case { @@ -98,7 +86,8 @@ PDF @Yield { @HContract @VContract - {"n [] 0 d __xmark 0 m __xmark __ysize l 0 __ymark m __xsize __ymark l S"} # uses S because PostScript version does NOT use closepath + { "n [] 0 d __xmark 0 m __xmark __ysize l 0 __ymark m __xsize __ymark l S"} + # uses S because PostScript version does NOT use closepath @Graphic {symbolsize @High symbolsize @Wide ^| symbolsize @Wide ^/ symbolsize @High} } @@ -107,15 +96,7 @@ } def @GraphSquare - named symbolsize - named cm left x { x"c" } - named in left x { x"i" } - named em left x { x"m" } - named pt left x { x"p" } - named ft left x { x"f" } - named sp left x { x"s" } - named vs left x { x"v" } - { 0.15 ft } + import @LoutLengths named symbolsize { 0.15f } { @BackEnd @Case { @@ -139,15 +120,7 @@ } def @GraphFilledSquare - named symbolsize - named cm left x { x"c" } - named in left x { x"i" } - named em left x { x"m" } - named pt left x { x"p" } - named ft left x { x"f" } - named sp left x { x"s" } - named vs left x { x"v" } - { 0.15 ft } + import @LoutLengths named symbolsize { 0.15f } { @BackEnd @Case { @@ -171,15 +144,7 @@ } def @GraphDiamond - named symbolsize - named cm left x { x"c" } - named in left x { x"i" } - named em left x { x"m" } - named pt left x { x"p" } - named ft left x { x"f" } - named sp left x { x"s" } - named vs left x { x"v" } - { 0.15 ft } + import @LoutLengths named symbolsize { 0.15f } { @BackEnd @Case { @@ -203,15 +168,7 @@ } def @GraphFilledDiamond - named symbolsize - named cm left x { x"c" } - named in left x { x"i" } - named em left x { x"m" } - named pt left x { x"p" } - named ft left x { x"f" } - named sp left x { x"s" } - named vs left x { x"v" } - { 0.15 ft } + import @LoutLengths named symbolsize { 0.15f } { @BackEnd @Case { @@ -236,15 +193,7 @@ } def @GraphCircle - named symbolsize - named cm left x { x"c" } - named in left x { x"i" } - named em left x { x"m" } - named pt left x { x"p" } - named ft left x { x"f" } - named sp left x { x"s" } - named vs left x { x"v" } - { 0.15 ft } + import @LoutLengths named symbolsize { 0.15f } { @BackEnd @Case { @@ -294,15 +243,7 @@ } def @GraphFilledCircle - named symbolsize - named cm left x { x"c" } - named in left x { x"i" } - named em left x { x"m" } - named pt left x { x"p" } - named ft left x { x"f" } - named sp left x { x"s" } - named vs left x { x"v" } - { 0.15 ft } + import @LoutLengths named symbolsize { 0.15f } { @BackEnd @Case { PostScript @Yield { @@ -355,15 +296,7 @@ } def @GraphTriangle - named symbolsize - named cm left x { x"c" } - named in left x { x"i" } - named em left x { x"m" } - named pt left x { x"p" } - named ft left x { x"f" } - named sp left x { x"s" } - named vs left x { x"v" } - { 0.15 ft } + import @LoutLengths named symbolsize { 0.15f } { @BackEnd @Case { @@ -387,15 +320,7 @@ } def @GraphFilledTriangle - named symbolsize - named cm left x { x"c" } - named in left x { x"i" } - named em left x { x"m" } - named pt left x { x"p" } - named ft left x { x"f" } - named sp left x { x"s" } - named vs left x { x"v" } - { 0.15 ft } + import @LoutLengths named symbolsize { 0.15f } { @BackEnd @Case { @@ -419,33 +344,17 @@ } def @GraphNoLine - named dashlength { 0.2 ft } - named linewidth { "currentlinewidth" } - named length - named cm left x { x"c" } - named in left x { x"i" } - named em left x { x"m" } - named pt left x { x"p" } - named ft left x { x"f" } - named sp left x { x"s" } - named vs left x { x"v" } - { 1.0 ft } + import @PSLengths named dashlength { 0.2f } + import @PSLengths named linewidth { "currentlinewidth" } + import @LoutLengths named length { 1.0f } { length @Wide {} } def @GraphSolid - named dashlength { 0.2 ft } - named linewidth { "currentlinewidth" } - named length - named cm left x { x"c" } - named in left x { x"i" } - named em left x { x"m" } - named pt left x { x"p" } - named ft left x { x"f" } - named sp left x { x"s" } - named vs left x { x"v" } - { 1.0 ft } + import @PSLengths named dashlength { 0.2f } + import @PSLengths named linewidth { "currentlinewidth" } + import @LoutLengths named length { 1.0f } { @BackEnd @Case { PostScript @Yield { @@ -463,17 +372,9 @@ } def @GraphDashed - named dashlength { 0.2 ft } - named linewidth { "currentlinewidth" } - named length - named cm left x { x"c" } - named in left x { x"i" } - named em left x { x"m" } - named pt left x { x"p" } - named ft left x { x"f" } - named sp left x { x"s" } - named vs left x { x"v" } - { 1.0 ft } + import @PSLengths named dashlength { 0.2f } + import @PSLengths named linewidth { "currentlinewidth" } + import @LoutLengths named length { 1.0f } { @BackEnd @Case { PostScript @Yield { @@ -491,17 +392,9 @@ } def @GraphDotted - named dashlength { 0.2 ft } - named linewidth { "currentlinewidth" } - named length - named cm left x { x"c" } - named in left x { x"i" } - named em left x { x"m" } - named pt left x { x"p" } - named ft left x { x"f" } - named sp left x { x"s" } - named vs left x { x"v" } - { 1.0 ft } + import @PSLengths named dashlength { 0.2f } + import @PSLengths named linewidth { "currentlinewidth" } + import @LoutLengths named length { 1.0f } { @BackEnd @Case { PostScript @Yield { @@ -521,230 +414,111 @@ export @Data def @Graph - named save { no } - named style { frame } - named width - named cm left x { x"c" } - named in left x { x"i" } - named em left x { x"m" } - named pt left x { x"p" } - named ft left x { x"f" } - named sp left x { x"s" } - named vs left x { x"v" } - { 6.0 cm } - named height - named cm left x { x"c" } - named in left x { x"i" } - named em left x { x"m" } - named pt left x { x"p" } - named ft left x { x"f" } - named sp left x { x"s" } - named vs left x { x"v" } - { 4.0 cm } - named xextra { "none" } - named yextra { "none" } - named xdecreasing { no } - named ydecreasing { no } - named leftcaption { } - named rightcaption { } - named abovecaption { } - named belowcaption { } - named leftgap - named cm left x { x"c" } - named in left x { x"i" } - named em left x { x"m" } - named pt left x { x"p" } - named ft left x { x"f" } - named sp left x { x"s" } - named vs left x { x"v" } - { 1.5 cm } - named rightgap - named cm left x { x"c" } - named in left x { x"i" } - named em left x { x"m" } - named pt left x { x"p" } - named ft left x { x"f" } - named sp left x { x"s" } - named vs left x { x"v" } - { 0.5 cm } - named abovegap - named cm left x { x"c" } - named in left x { x"i" } - named em left x { x"m" } - named pt left x { x"p" } - named ft left x { x"f" } - named sp left x { x"s" } - named vs left x { x"v" } - { 0.5 cm } - named belowgap - named cm left x { x"c" } - named in left x { x"i" } - named em left x { x"m" } - named pt left x { x"p" } - named ft left x { x"f" } - named sp left x { x"s" } - named vs left x { x"v" } - { 0.5 cm } - named hidecaptions { yes } + named save { no } + named style { frame } + import @LoutLengths named width { 6.0c } + import @LoutLengths named height { 4.0c } + import @PSLengths named xextra { "none" } + import @PSLengths named yextra { "none" } + named xdecreasing { no } + named ydecreasing { no } + named leftcaption { } + named rightcaption { } + named abovecaption { } + named belowcaption { } + import @LoutLengths named leftgap { 1.5c } + import @LoutLengths named rightgap { 0.5c } + import @LoutLengths named abovegap { 0.5c } + import @LoutLengths named belowgap { 0.5c } + named hidecaptions { yes } named objects named @NW import @GraphMath named at { 0 0 } - named margin - named cm left x { x"c" } - named in left x { x"i" } - named em left x { x"m" } - named pt left x { x"p" } - named ft left x { x"f" } - named sp left x { x"s" } - named vs left x { x"v" } - { 0.3 ft } + import @LoutLengths named margin { 0.3f } right x { at @GraphObj adj { "xsize neg ysize" } margin { margin } x } named @SW import @GraphMath named at { 0 0 } - named margin - named cm left x { x"c" } - named in left x { x"i" } - named em left x { x"m" } - named pt left x { x"p" } - named ft left x { x"f" } - named sp left x { x"s" } - named vs left x { x"v" } - { 0.3 ft } + import @LoutLengths named margin { 0.3f } right x { at @GraphObj adj { "xsize neg 0" } margin { margin } x } named @SE import @GraphMath named at { 0 0 } - named margin - named cm left x { x"c" } - named in left x { x"i" } - named em left x { x"m" } - named pt left x { x"p" } - named ft left x { x"f" } - named sp left x { x"s" } - named vs left x { x"v" } - { 0.3 ft } + import @LoutLengths named margin { 0.3f } right x { at @GraphObj adj { "0 0" } margin { margin } x } named @NE import @GraphMath named at { 0 0 } - named margin - named cm left x { x"c" } - named in left x { x"i" } - named em left x { x"m" } - named pt left x { x"p" } - named ft left x { x"f" } - named sp left x { x"s" } - named vs left x { x"v" } - { 0.3 ft } + import @LoutLengths named margin { 0.3f } right x { at @GraphObj adj { "0 ysize" } margin { margin } x } named @W import @GraphMath named at { 0 0 } - named margin - named cm left x { x"c" } - named in left x { x"i" } - named em left x { x"m" } - named pt left x { x"p" } - named ft left x { x"f" } - named sp left x { x"s" } - named vs left x { x"v" } - { 0.3 ft } + import @LoutLengths named margin { 0.3f } right x { at @GraphObj adj { "xsize neg ysize 2 div" } margin { margin } x } named @S import @GraphMath named at { 0 0 } - named margin - named cm left x { x"c" } - named in left x { x"i" } - named em left x { x"m" } - named pt left x { x"p" } - named ft left x { x"f" } - named sp left x { x"s" } - named vs left x { x"v" } - { 0.3 ft } + import @LoutLengths named margin { 0.3f } right x { at @GraphObj adj { "xsize neg 2 div 0" } margin { margin } x } named @E import @GraphMath named at { 0 0 } - named margin - named cm left x { x"c" } - named in left x { x"i" } - named em left x { x"m" } - named pt left x { x"p" } - named ft left x { x"f" } - named sp left x { x"s" } - named vs left x { x"v" } - { 0.3 ft } + import @LoutLengths named margin { 0.3f } right x { at @GraphObj adj { "0 ysize 2 div" } margin { margin } x } named @N import @GraphMath named at { 0 0 } - named margin - named cm left x { x"c" } - named in left x { x"i" } - named em left x { x"m" } - named pt left x { x"p" } - named ft left x { x"f" } - named sp left x { x"s" } - named vs left x { x"v" } - { 0.3 ft } + import @LoutLengths named margin { 0.3f } right x { at @GraphObj adj { "xsize neg 2 div ysize" } margin { margin } x } named @CTR import @GraphMath named at { 0 0 } - named margin - named cm left x { x"c" } - named in left x { x"i" } - named em left x { x"m" } - named pt left x { x"p" } - named ft left x { x"f" } - named sp left x { x"s" } - named vs left x { x"v" } - { 0.3 ft } + import @LoutLengths named margin { 0.3f } right x { at @GraphObj adj { "xsize neg 2 div ysize 2 div" } margin {margin} x } {} - named xorigin named none { "false" } { none } - named yorigin named none { "false" } { none } - named xlog named none { "0" } { none } - named ylog named none { "0" } { none } - named points named none { "none" } { none } - named pairs named none { "none" } { none } - named colour color named none { "none" } { none } - named paint named none { "none" } { none } - named xmin named none { "false" } { none } - named xmax named none { "false" } { none } - named ymin named none { "false" } { none } - named ymax named none { "false" } { none } - named xticksep named none { "0" } { none } - named yticksep named none { "0" } { none } - named rticksep named none { "0" } { none } + named xorigin named none { "false" } { none } + named yorigin named none { "false" } { none } + named xlog named none { "0" } { none } + named ylog named none { "0" } { none } + named points named none { "none" } { none } + named pairs named none { "none" } { none } + named colour color named none { "none" } { none } + named paint named none { "none" } { none } + import @TextureImport named texture { solid } + named xmin named none { "false" } { none } + named xmax named none { "false" } { none } + named ymin named none { "false" } { none } + named ymax named none { "false" } { none } + named xticksep named none { "0" } { none } + named yticksep named none { "0" } { none } + named rticksep named none { "0" } { none } import @GraphMath named xticks - named none { "false" } - named auto { "false" } - named "@" { " lgen" } - named "^" { "^" } - { false } + named none { "false" } + named auto { "false" } + named "@" { " lgen" } + named "^" { "^" } + { false } import @GraphMath named yticks - named none { "false" } - named auto { "false" } - named "@" { " lgen" } - named "^" { "^" } - { false } + named none { "false" } + named auto { "false" } + named "@" { " lgen" } + named "^" { "^" } + { false } import @GraphMath named rticks - named none { "false" } - named auto { "false" } - named "@" { " lgen" } - named "^" { "^" } - { } - named xticklength { 0.5 ft } - named yticklength { 0.5 ft } - named rticklength { 0.5 ft } - named dataformat { xandy } - named dashlength { 0.2 ft } - named linewidth { "currentlinewidth" } - named symbolsize { 0.15 ft } + named none { "false" } + named auto { "false" } + named "@" { " lgen" } + named "^" { "^" } + { } + import @PSLengths named xticklength { 0.5f } + import @PSLengths named yticklength { 0.5f } + import @PSLengths named rticklength { 0.5f } + named dataformat { xandy } + import @PSLengths named dashlength { 0.2f } + import @PSLengths named linewidth { "currentlinewidth" } + import @PSLengths named symbolsize { 0.15f } body @Body @Begin @@ -817,11 +591,12 @@ def @Data named points named none { "none" } { points } named pairs named none { "none" } { pairs } - named colour color named none { "none" } { colour } + named colour color named none { "none" } { colour } named paint named none { "none" } { paint } - named dashlength { dashlength } - named linewidth { linewidth } - named symbolsize { symbolsize } + import @TextureImport named texture { texture } + import @PSLengths named dashlength { dashlength } + import @PSLengths named linewidth { linewidth } + import @PSLengths named symbolsize { symbolsize } named dataformat { dataformat } body data { @@ -945,9 +720,6 @@ } } -# include @ColourCommand symbol -@SysInclude { ccommand } - def @Paint { paint @Case { @@ -963,6 +735,7 @@ " /linewidth" linewidth "def" @ColourCommand colour " /symbolsize" symbolsize "def }" "{" @Paint "}" + "{" texture "}" "]" } diff -u --recursive --new-file -u --recursive --new-file lout-3.26/include/graphf.lpg lout-3.27/include/graphf.lpg --- lout-3.26/include/graphf.lpg Wed Sep 18 12:22:38 2002 +++ lout-3.27/include/graphf.lpg Sun Nov 3 08:53:07 2002 @@ -173,26 +173,49 @@ linewidth setlinewidth stroke } def +% % pre-texture versions +% % stroke a filled y histogram: - filledyhisto - +% /filledyhisto +% { +% linewidth setlinewidth +% xprev yleft trpoint exch currentlinewidth 2 div add exch yextra sub moveto +% xprev yprev trpoint exch currentlinewidth 2 div add exch lineto +% xcurr yprev trpoint exch currentlinewidth 2 div sub exch lineto +% xcurr yleft trpoint exch currentlinewidth 2 div sub exch yextra sub lineto +% closepath fill +% } def + +% % stroke a filled x histogram: - filledxhisto - +% /filledxhisto +% { +% linewidth setlinewidth +% xleft yprev trpoint currentlinewidth 2 div add exch xextra sub exch moveto +% xcurr yprev trpoint currentlinewidth 2 div add lineto +% xcurr ycurr trpoint currentlinewidth 2 div sub lineto +% xleft ycurr trpoint currentlinewidth 2 div sub exch xextra sub exch lineto +% closepath fill +% } def + % stroke a filled y histogram: - filledyhisto - /filledyhisto { linewidth setlinewidth - xprev yleft trpoint exch currentlinewidth 2 div add exch yextra sub moveto - xprev yprev trpoint exch currentlinewidth 2 div add exch lineto - xcurr yprev trpoint exch currentlinewidth 2 div sub exch lineto - xcurr yleft trpoint exch currentlinewidth 2 div sub exch yextra sub lineto - closepath fill + xprev yleft trpoint exch currentlinewidth 1.3 mul add exch yextra sub moveto + xprev yprev trpoint exch currentlinewidth 1.3 mul add exch lineto + xcurr yprev trpoint exch currentlinewidth 1.3 mul sub exch lineto + xcurr yleft trpoint exch currentlinewidth 1.3 mul sub exch yextra sub lineto + gsave texture fill grestore stroke } def % stroke a filled x histogram: - filledxhisto - /filledxhisto { linewidth setlinewidth - xleft yprev trpoint currentlinewidth 2 div add exch xextra sub exch moveto - xcurr yprev trpoint currentlinewidth 2 div add lineto - xcurr ycurr trpoint currentlinewidth 2 div sub lineto - xleft ycurr trpoint currentlinewidth 2 div sub exch xextra sub exch lineto - closepath fill + xleft yprev trpoint currentlinewidth 1.3 mul add exch xextra sub exch moveto + xcurr yprev trpoint currentlinewidth 1.3 mul add lineto + xcurr ycurr trpoint currentlinewidth 1.3 mul sub lineto + xleft ycurr trpoint currentlinewidth 1.3 mul sub exch xextra sub exch lineto + gsave texture fill grestore stroke } def @@ -315,13 +338,6 @@ } if } def -% % trpoint: transform (x, y) in graph space into (x', y') in print space -% % x y trpoint x' y' -% /trpoint -% { exch xtr trxmin sub trxmax trxmin sub div xwidth mul xextra add -% exch ytr trymin sub trymax trymin sub div ywidth mul yextra add -% } def - % trpoint: transform (x, y) in graph space into (x', y') in print space % x y trpoint x' y' @@ -358,7 +374,7 @@ % [ data ] xandy [ data ] /xandy {} def -% swapxandy: no interpolation of x or y values +% swapxandy: swap x and y values % [ data ] swapxandy [ data ] /swapxandy { dup /tmp exch def @@ -730,7 +746,8 @@ /rundata { alldata { gsave - dup dup dup dup + dup dup dup dup dup + 5 get /texture exch def 4 get /dopaint exch def 3 get /initrun exch def 2 get /pairs exch def @@ -738,7 +755,9 @@ 0 get /data exch def dopaint { data length 4 ge - { initrun + { + gsave + initrun newpath data 0 get ymin trpoint yextra sub moveto 0 2 data length 2 sub @@ -748,7 +767,8 @@ xcurr ycurr trpoint lineto } for data dup length 2 sub get ymin trpoint yextra sub lineto - closepath fill + closepath texture fill + grestore } if } if initrun diff -u --recursive --new-file -u --recursive --new-file lout-3.26/include/lengths lout-3.27/include/lengths --- lout-3.26/include/lengths Thu Jan 1 10:00:00 1970 +++ lout-3.27/include/lengths Wed Oct 30 18:23:34 2002 @@ -0,0 +1,150 @@ + +########################################################################### +# # +# lengths # +# # +# Jeffrey H. Kingston # +# 30 October 2002 # +# # +# This file offers two symbols for converting between PostScript # +# lengths and Lout lengths. This has been a messy area and the two # +# symbols in this file, @LoutLengths and @PSLengths, are my attempt # +# to put a final end to the mess. # +# # +# A Lout length is, and has always been, a number followed by # +# a one-letter unit of measurement: i c p m s v f d. # +# # +# A PostScript length is, and has always been, a number followed # +# by a space followed by a two-letter unit of measurement, one of # +# in cm pt em sp vs ft dg. # +# # +# To the ordinary user who reads the User's Guide, all lengths # +# now look like Lout lengths. However, internally some of these # +# lengths are used by Lout and others are passed to PostScript. # +# Based on the two symbols @PSLengths and @LoutLengths defined # +# below, an option x which could contain a length of either kind # +# can be classified as one of three types: # +# # +# Type of option How to handle it # +# ------------------------------------------------------------------- # +# Option was never advertised named x { ... } # +# as taking a PostScript length # +# # +# Option was advertised as import @LoutLengths named x { ... } # +# possibly taking a PostScript # +# length, but its value is used # +# by Lout # +# # +# Option whose value has to be import @PSLengths named x { ... } # +# passed to PostScript # +# ------------------------------------------------------------------- # +# # +# Either kind of import allows either kind of length to be given; # +# @LoutLengths makes sure the final result is suitable for passing # +# to Lout, while @PSLengths makes sure the final result is suitable # +# for passing to PostScript. If things had been done right from the # +# start, there would be no need for @LoutLengths, but for backward # +# compatibility we will continue to use it basically forever. # +# # +########################################################################### + + +########################################################################### +# # +# @LoutLengths # +# # +# Convert PostScript lengths into Lout lengths. # +# # +########################################################################### + +export in cm pt em sp vs ft dg +def @LoutLengths +{ + def in left x { x"i" } + def cm left x { x"c" } + def pt left x { x"p" } + def em left x { x"m" } + def sp left x { x"s" } + def vs left x { x"b" } + def ft left x { x"f" } + def dg left x { x"d" } +} + + +########################################################################### +# # +# @PSLengths # +# # +# Convert Lout lengths into PostScript (also PDF) lengths. # +# PDF is no longer supported but this code was there already so # +# it's been carried over. # +# # +########################################################################### + +export i c p m s v f d +def @PSLengths +{ + def i left x { + @BackEnd @Case { + PostScript @Yield { x" in" } + PDF @Yield { "__mul(__in, "x")" } + PlainText @Yield "" + } + } + + def c left x { + @BackEnd @Case { + PostScript @Yield { x" cm" } + PDF @Yield { "__mul(__cm, "x")" } + PlainText @Yield "" + } + } + + def p left x { + @BackEnd @Case { + PostScript @Yield { x" pt" } + PDF @Yield { "__mul(__pt, "x")" } + PlainText @Yield "" + } + } + + def m left x { + @BackEnd @Case { + PostScript @Yield { x" em" } + PDF @Yield { "__mul(__em, "x")" } + PlainText @Yield "" + } + } + + def s left x { + @BackEnd @Case { + PostScript @Yield { x" sp" } + PDF @Yield { "__mul(__louts, "x")" } + PlainText @Yield "" + } + } + + def v left x { + @BackEnd @Case { + PostScript @Yield { x" vs" } + PDF @Yield { "__mul(__loutv, "x")" } + PlainText @Yield "" + } + } + + def f left x { + @BackEnd @Case { + PostScript @Yield { x" ft" } + PDF @Yield { "__mul(__loutf, "x")" } + PlainText @Yield "" + } + } + + def d left x { + @BackEnd @Case { + PostScript @Yield { x" dg" } + PDF @Yield { "__mul(__loutd, "x")" } + PlainText @Yield "" + } + } +} diff -u --recursive --new-file -u --recursive --new-file lout-3.26/include/picture lout-3.27/include/picture --- lout-3.26/include/picture Wed Sep 18 12:22:39 2002 +++ lout-3.27/include/picture Thu Nov 21 08:34:41 2002 @@ -144,33 +144,67 @@ # @RefListBreak { } # break style of ref list # @RefListLabelWidth { @ListLabelWidth } # Labels column width # @RefListSortKey { @Tag } # sorting key + # @MakeGlossary { No } # make glossary? Yes or No + # @GlossaryText { @Null } # glossary initial text + # @GlossaryFont { } # glossary entries font + # @GlossaryBreak { } # glossary entries break + # @GlossaryFormat { +3p @Font @S @Name # glossary entries format + # @Right @I { @Word&&page @PageNum } + # @DP @RawIndentedDisplay @Body } + # @GlossaryGap { @DisplayGap } # gap between glossary entries + # @GlossaryColumnNumber{ 2 } # glossary columns (1 to 10) + # @GlossaryColumnGap { 1.00c @OrIfPlain 6s } # glossary column gap + # @InGlossaryFont { smallcaps } # font for @InGlossary + # @InGlossaryFormat { @Body } # format for @InGlossary + # @MakeIndex { No } # make index? Yes or No # @MakeIndex { No } # make index? Yes or No # @IndexText { @Null } # index initial text # @IndexFont { } # index entries font # @IndexBreak { {oragged 1.2fx} @OrIfPlain {oragged 1fx} } # and break + # @IndexFormat { @Body } # @Index format + # @SubIndexFormat { {1f @Wide}@Body } # @SubIndex format + # @SubSubIndexFormat { {2f @Wide}@Body } # @SubSubIndex format # @IndexColumnNumber { 2 } # index columns (1 to 10) # @IndexColumnGap { 1.00c @OrIfPlain 6s } # index column gap # @IndexCtd { Yes } # include (ctd.) lines # @IndexCtdWord { continued } # "ctd." in current lang. # @IndexCtdFormat { @Body @I (@CtdWord) } # format of ctd. + # @IndexSpacerAbove { 2v } # space above index spacer + # @IndexSpacerBelow { 1v } # space below index spacer + # @IndexSpacerFont { +3p } # font of index spacer + # @IndexSpacerFormat { @Body } # format of index spacer # @MakeIndexA { No } # make index A? Yes or No # @IndexAText { @Null } # index A initial text # @IndexAFont { } # index A entries font # @IndexABreak { {oragged 1.2fx} @OrIfPlain {oragged 1fx} } # and break + # @IndexAFormat { @Body } # @IndexA format + # @SubIndexAFormat { {1f @Wide}@Body } # @SubIndexA format + # @SubSubIndexAFormat { {2f @Wide}@Body } # @SubSubIndexA format # @IndexAColumnNumber { 2 } # index A columns (1 to 10) # @IndexAColumnGap { 1.00c @OrIfPlain 6s } # index A column gap # @IndexACtd { Yes } # include (ctd.) lines # @IndexACtdWord { continued } # "ctd." in current lang. # @IndexACtdFormat { @Body @I (@CtdWord) } # format of ctd. + # @IndexASpacerAbove { 2v } # space above index A spacer + # @IndexASpacerBelow { 1v } # space below index A spacer + # @IndexASpacerFont { +3p } # font of index A spacer + # @IndexASpacerFormat { @Body } # format of index A spacer # @MakeIndexB { No } # make index B? Yes or No # @IndexBText { @Null } # index B initial text # @IndexBFont { } # index B entries font # @IndexBBreak { {oragged 1.2fx} @OrIfPlain {oragged 1fx} } # and break + # @IndexBFormat { @Body } # @IndexB format + # @SubIndexBFormat { {1f @Wide}@Body } # @SubIndexB format + # @SubSubIndexBFormat { {2f @Wide}@Body } # @SubSubIndexB format # @IndexBColumnNumber { 2 } # index B columns (1 to 10) # @IndexBColumnGap { 1.00c @OrIfPlain 6s } # index B column gap # @IndexBCtd { Yes } # include (ctd.) lines # @IndexBCtdWord { continued } # "ctd." in current lang. # @IndexBCtdFormat { @Body @I (@CtdWord) } # format of ctd. + # @IndexBSpacerAbove { 2v } # space above index B spacer + # @IndexBSpacerBelow { 1v } # space below index B spacer + # @IndexBSpacerFont { +3p } # font of index B spacer + # @IndexBSpacerFormat { @Body } # format of index B spacer # @TopGap { 0.75c @OrIfPlain 2f } # gap between figures # @MidGap { 0.75c @OrIfPlain 2f } # gap above/below body text # @FootNoteNumbers { Arabic } # footnote numbers diff -u --recursive --new-file -u --recursive --new-file lout-3.26/include/pie lout-3.27/include/pie --- lout-3.26/include/pie Thu Jan 1 10:00:00 1970 +++ lout-3.27/include/pie Mon Nov 11 09:05:39 2002 @@ -0,0 +1,109 @@ +############################################################################### +# # +# Lout setup file for pie charts # +# # +# Jeffrey H. Kingston # +# 16 October 2002 # +# # +############################################################################### + + +############################################################################### +# # +# The @SysInclude { pief } line # +# # +# This line causes Lout to read the definitions for pie charts, and should # +# not be touched. # +# # +############################################################################### + +@SysInclude { pief } + + +############################################################################### +# # +# The @PieSetup @Use clause # +# # +# To change the default value of any option, delete the # at the start of # +# its line and change the value between braces. # +# # +############################################################################### + +@Use { @PieSetup + + ############################################################################# + # # + # General options # + # # + ############################################################################# + + # save { no } + # totalweight { 100 } + # radius { 2.5c } + # initialangle { 0d } + # leftextra { 0i } + # rightextra { 0i } + # aboveextra { 0i } + # belowextra { 0i } + + ############################################################################# + # # + # Caption options # + # # + ############################################################################# + + # leftcaption { } + # rightcaption { } + # abovecaption { } + # belowcaption { } + # leftgap { 0.5c } + # rightgap { 0.5c } + # abovegap { 0.5c } + # belowgap { 0.5c } + # hidecaptions { yes } + + ############################################################################# + # # + # Slice options # + # # + ############################################################################# + + # weight { 1 } + # paint { none } + # texture { solid } + # outlinestyle { solid } + # outlinedashlength { 0.2f } + # outlinewidth { thin } + # detach { no } + + ############################################################################# + # # + # Label options # + # # + ############################################################################# + + # label { } + # labelfont { -2p } + # labelbreak { clines } + # labelmargin { 0.2f } + # labelformat { @Body } + # labelradius { internal } + # labeladjust { 0 0 } + + ############################################################################# + # # + # finger options # + # # + ############################################################################# + + # finger { no } + # fingerstyle { solid } + # fingerdashlength { 0.2f } + # fingerwidth { thin } + # fingerradius { 0.7 } + # fingeradjust { 0 0 } + # fingerarrow { no } + # fingerarrowlength { 0.6f } + # fingerarrowwidth { 0.45f } + +} diff -u --recursive --new-file -u --recursive --new-file lout-3.26/include/pief lout-3.27/include/pief --- lout-3.26/include/pief Thu Jan 1 10:00:00 1970 +++ lout-3.27/include/pief Mon Nov 11 09:17:43 2002 @@ -0,0 +1,409 @@ + +############################################################################### +# # +# Lout @Pie package for drawing pie charts # +# Version 1.0 (October 2002) # +# Jeffrey H. Kingston # +# # +############################################################################### + +@SysPrependGraphic { pief.lpg } +@SysInclude { lengths } # @PSLengths and @LoutLengths +@SysInclude { coltex } # @ColourCommand and @TextureCommand + + +############################################################################### +# # +# @PieSetup symbol # +# # +############################################################################### + +export @Pie +def @PieSetup + named save { no } + named totalweight { 100 } + named radius { 2.5c } + import @PSLengths named initialangle{ 0d } + named leftextra { 0i } + named rightextra { 0i } + named aboveextra { 0i } + named belowextra { 0i } + named leftcaption { } + named rightcaption { } + named abovecaption { } + named belowcaption { } + named leftgap { 0.5c } + named rightgap { 0.5c } + named abovegap { 0.5c } + named belowgap { 0.5c } + named hidecaptions { yes } + named weight { 1 } + named paint { none } + import @TextureImport named texture { solid } + named outlinestyle + named solid { "/lpiesolid" } + named dashed { "/lpiedashed" } + named cdashed { "/lpiecdashed" } + named dotted { "/lpiedotted" } + named noline { "/lpienoline" } + { solid } + import @PSLengths named outlinedashlength { 0.2f } + import @PSLengths named outlinewidth + named thin { 0.04f } + named medium { 0.08f } + named thick { 0.12f } + { thin } + named detach + named yes Yes { 0.5 } + named no No { 0.0 } + { no } + named label { } + named labelfont { -2p } + named labelbreak { clines } + named labelmargin { 0.2f } + named labelformat right @Body { @Body } + named labelradius + named internal { 0.6 } + named external { 1.4 } + { internal } + import @PSLengths named labeladjust { 0 0 } + named finger { no } + named fingerstyle + named solid { "/lpiesolid" } + named dashed { "/lpiedashed" } + named cdashed { "/lpiecdashed" } + named dotted { "/lpiedotted" } + named noline { "/lpienoline" } + { solid } + import @PSLengths named fingerdashlength { 0.2f } + import @PSLengths named fingerwidth + named thin { 0.04f } + named medium { 0.08f } + named thick { 0.12f } + { thin } + named fingerradius { 0.7 } + import @PSLengths named fingeradjust{ 0 0 } + named fingerarrow { no } + import @PSLengths named fingerarrowlength { 0.6f } + import @PSLengths named fingerarrowwidth { 0.45f } +{ + + ########################################################################### + # # + # @Pie symbol # + # # + ########################################################################### + + export @Slice + def @Pie + named save { save } + named totalweight { 100 } + named radius { radius } + import @PSLengths named initialangle { initialangle } + named leftextra { leftextra } + named rightextra { rightextra } + named aboveextra { aboveextra } + named belowextra { belowextra } + named leftcaption { leftcaption } + named rightcaption { rightcaption } + named abovecaption { abovecaption } + named belowcaption { belowcaption } + named leftgap { leftgap } + named rightgap { rightgap } + named abovegap { abovegap } + named belowgap { belowgap } + named hidecaptions { hidecaptions } + named weight { weight } + named paint { paint } + import @TextureImport named texture { texture } + named outlinestyle + named solid { "/lpiesolid" } + named dashed { "/lpiedashed" } + named cdashed { "/lpiecdashed" } + named dotted { "/lpiedotted" } + named noline { "/lpienoline" } + { outlinestyle } + import @PSLengths named outlinedashlength{ outlinedashlength } + import @PSLengths named outlinewidth + named thin { 0.04f } + named medium { 0.08f } + named thick { 0.12f } + { outlinewidth } + named detach + named yes Yes { 0.5 } + named no No { 0.0 } + { detach } + named label { label } + named labelfont { labelfont } + named labelbreak { labelbreak } + named labelmargin { labelmargin } + named labelformat right @Body { labelformat @Body } + named labelradius + named internal { 0.6 } + named external { 1.4 } + { labelradius } + import @PSLengths named labeladjust { labeladjust } + named finger { finger } + named fingerstyle + named solid { "/lpiesolid" } + named dashed { "/lpiedashed" } + named cdashed { "/lpiecdashed" } + named dotted { "/lpiedotted" } + named noline { "/lpienoline" } + { fingerstyle } + import @PSLengths named fingerdashlength{ fingerdashlength } + import @PSLengths named fingerwidth + named thin { 0.04f } + named medium { 0.08f } + named thick { 0.12f } + { fingerwidth } + named fingerradius { fingerradius } + import @PSLengths named fingeradjust { fingeradjust } + named fingerarrow { fingerarrow } + import @PSLengths named fingerarrowlength { fingerarrowlength } + import @PSLengths named fingerarrowwidth { fingerarrowwidth } + + body @Body + { + + + ####################################################################### + # # + # Miscellaneous helper definitions # + # # + ####################################################################### + + def @AddPaint left col right texture + { + col @Case { + { "no" "none" "nopaint" } @Yield "{}" + else @Yield { "{" @ColourCommand col texture "fill }" } + } + } + + # Like @Graphic, but affects the graphics state of right parameter + def @InnerGraphic + left ps + right x + { + { ps gsave // grestore } @Graphic x + } + + def @ZeroWidth right x + { + @HContract @VContract { + ^|0io @HContract @VContract x |0io + } + } + + def @ZeroSize right x + { + @HContract @VContract { + ^/0io ^|0io @HContract @VContract x |0io /0io + } + } + + + ####################################################################### + # # + # @Slice # + # # + ####################################################################### + + def @Slice + named weight { weight } + named paint { paint } + import @TextureImport named texture { texture } + named outlinestyle + named solid { "/lpiesolid" } + named dashed { "/lpiedashed" } + named cdashed { "/lpiecdashed" } + named dotted { "/lpiedotted" } + named noline { "/lpienoline" } + { outlinestyle } + import @PSLengths named outlinedashlength { outlinedashlength } + import @PSLengths named outlinewidth + named thin { 0.04f } + named medium { 0.08f } + named thick { 0.12f } + { outlinewidth } + named detach + named yes Yes { 0.5 } + named no No { 0.0 } + { detach } + named label { label } + named labelfont { labelfont } + named labelbreak { labelbreak } + named labelmargin { labelmargin } + named labelformat right @Body { labelformat @Body } + named labelradius + named internal { 0.6 } + named external { 1.4 } + { labelradius } + import @PSLengths named labeladjust { labeladjust } + named finger { finger } + named fingerstyle + named solid { "/lpiesolid" } + named dashed { "/lpiedashed" } + named cdashed { "/lpiecdashed" } + named dotted { "/lpiedotted" } + named noline { "/lpienoline" } + { fingerstyle } + import @PSLengths named fingerdashlength { fingerdashlength } + import @PSLengths named fingerwidth + named thin { 0.04 ft } + named medium { 0.08 ft } + named thick { 0.12 ft } + { fingerwidth } + named fingerradius { fingerradius } + import @PSLengths named fingeradjust{ fingeradjust } + named fingerarrow { fingerarrow } + import @PSLengths named fingerarrowlength { fingerarrowlength } + import @PSLengths named fingerarrowwidth { fingerarrowwidth } + { + + def @DrawSlice + { + outlinedashlength "[" outlinestyle "]" + outlinewidth paint @AddPaint texture + weight detach + "lpiebeginslice" + // + "lpieendslice" + } + + def @TranslateLabelAndDrawFinger + { labeladjust labelradius "lpietranslatelabel" + finger @Case { + { no No } @Yield "" + { yes Yes } @Yield { + fingerdashlength "[" fingerstyle "]" + fingerwidth fingeradjust fingerradius + "lpiedrawfinger" + fingerarrow @Case { + { no No } @Yield "" + { yes Yes } @Yield { + fingerarrowlength fingerarrowwidth + "lpiedrawarrowhead" + } + } + } + } + } + + def @AddMargins right x + { + @HContract @VContract { + //labelmargin ||labelmargin x ||labelmargin //labelmargin + } + } + + @Null @ZeroSize @DrawSlice @Graphic + @TranslateLabelAndDrawFinger @InnerGraphic { + @AddMargins labelfont @Font labelbreak @Break labelformat label + } @Null + + } + + def @Above + { + abovecaption @Case { + "" @Yield "" + else @Yield @OneCol { + ||0.5rt clines @Break abovecaption || //abovegap + } + } + } + + def @Below + { + belowcaption @Case { + "" @Yield "" + else @Yield @OneCol { + //belowgap ||0.5rt clines @Break belowcaption || + } + } + } + + def @Left + { + leftcaption @Case { + "" @Yield "" + else @Yield @OneRow { + { //0.5rt clines @Break leftcaption // } ^||leftgap + } + } + } + + def @Right + { + rightcaption @Case { + "" @Yield "" + else @Yield @OneRow { + ||rightgap { //0.5rt lines @Break rightcaption // } + } + } + } + + def @HideWidth right x + { + hidecaptions @Case { + { No no } @Yield x + { Yes yes } @Yield @OneCol { ||0io x ||0io } + } + } + + def @AddCaptions right x + { + + @HContract @VContract + { + | @Above | + / @HideWidth @Left | &0.5rt x | @HideWidth @Right + / | @Below | + } + } + + def @AddExtra right x + { + @HContract @VContract + { + /aboveextra |leftextra x |rightextra /belowextra + } + } + + def @GraphicSetup right x + { + { + save @Case { + { yes Yes } @Yield { + "grestore save gsave" totalweight initialangle "lpiebegin" + // + "lpieend restore" + } + { no No } @Yield { + totalweight initialangle "lpiebegin" + // + "lpieend" + } + } + } @Graphic x + } + + def @Base right x + { + def @Square { radius @Wide radius @High {} } + + @HContract @VContract { + @Square ^| @Square + ^/ + @Square | @Square + / + x + } + } + + @AddCaptions @AddExtra @GraphicSetup @Base @Body + + } +} diff -u --recursive --new-file -u --recursive --new-file lout-3.26/include/pief.lpg lout-3.27/include/pief.lpg --- lout-3.26/include/pief.lpg Thu Jan 1 10:00:00 1970 +++ lout-3.27/include/pief.lpg Mon Nov 11 09:29:26 2002 @@ -0,0 +1,485 @@ +%%BeginResource: procset LoutPiePrependGraphic +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % +% PostScript @SysPrependGraphic file for @Pie Jeffrey H. Kingston % +% Version 1.0 % +% % +% Jeffrey H. Kingston % +% October 2002 % +% % +% To assist in avoiding name clashes, the names of all symbols % +% defined here begin with "lpie". % +% % +% is two numbers, a point. % +% is one number, a length % +% is one number, an angle in degrees % +% is one number, the preferred length of a dash % +% % +% The following invariant is maintained from the end of the % +% call to lpiebegin to the beginning of the call to lpieend: % +% % +% lpiecentre is an executable function which leaves the two % +% coordinates of the centre of the pie on the % +% operand stack (signature - lpiectr ) % +% % +% lpieradius is the radius of the pie % +% % +% lpieinitangle is the initial angle % +% % +% lpietotalweight is the total weight of all slices % +% % +% lpiecurrentweight is the total weight of all slices so far % +% % +% The first four are constants set by lpiebegin; the last is % +% updated as each slice is printed. % +% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% install error handler into error dictionary +errordict begin + /handleerror + { + { /Times-Roman findfont 8 pt scalefont setfont + 0 setgray 4 pt 4 pt moveto + $error /errorname get + dup lpiedict exch known + { lpiedict exch get } + { 100 string cvs } ifelse + show + ( Command: ) show + $error /command get 100 string cvs show + } stopped {} if + showpage stop + } def +end + +% initial coordinates of debug output +/lpiedebugposy 432 def +/lpiedebugposx 72 def + +% lpiedebugprint - +% must be defined outside lpiedict since used in arbitrary places +% print plus count or stack entries, whichever is the smaller +/lpiedebugprint +{ + exch + gsave + initgraphics + lpiedebugposy 72 lt + { /lpiedebugposx lpiedebugposx 144 add store + /lpiedebugposy 432 store + } + { + /lpiedebugposy lpiedebugposy 12 sub store + } ifelse + lpiedebugposx lpiedebugposy moveto + /Times-Roman findfont 10 scalefont setfont + 0 setgray show + count 1 sub 2 copy lt { pop } { exch pop } ifelse 1 sub + 0 exch 1 exch + { + /lpiedebugposy lpiedebugposy 12 sub store + lpiedebugposx 12 add lpiedebugposy moveto + index + dup type (dicttype) eq + { + (begin dict) show + { + /lpiedebugposy lpiedebugposy 12 sub store + lpiedebugposx 24 add lpiedebugposy moveto + pop 100 string cvs show + } forall + /lpiedebugposy lpiedebugposy 12 sub store + lpiedebugposx 12 add lpiedebugposy moveto + (end dict) show + } + { + dup type (arraytype) eq + { + dup xcheck { (executable array) } { (literal array) } ifelse show + { + /lpiedebugposy lpiedebugposy 12 sub store + lpiedebugposx 24 add lpiedebugposy moveto + 100 string cvs show + } forall + /lpiedebugposy lpiedebugposy 12 sub store + lpiedebugposx 12 add lpiedebugposy moveto + (end array) show + } + { + dup xcheck { (ex: ) } { (lit: ) } ifelse show + 100 string cvs show + } ifelse + } ifelse + } for + grestore +} def + +% name lpiedebugpoint - +/lpieshowpoint +{ + dup cvx exec moveto 20 string cvs show newpath +} def + +% begin pie: lpiebegin - +% must be defined outside lpiedict since it loads it +/lpiebegin +{ lpiedict begin + 20 dict begin + xmark ymark /lpiecentre lpiepointdef + /lpieradius xmark def + /lpieinitialangle exch def + /lpietotalweight exch def + /lpiecurrentweight 0 def +} def + +% end pie: - lpieend - +/lpieend +{ + end + end +} def + +% pie dictionary +/lpiedict 200 dict def + +% subsequent definitions are held within the pie dictionary +lpiedict begin + +% error messages +/syntaxerror (syntaxerror error: syntax error in text of pie chart?) def +/typecheck (typecheck error: syntax error in text of pie chart?) def +/undefined (undefined error: unknown or misspelt label?) def +/VMError (VMError error: run out of memory?) def + +% maximum of two numbers: lpiemax +/lpiemax { 2 copy gt { pop } { exch pop } ifelse } def + +% minimum of two numbers: lpiemin +/lpiemin { 2 copy lt { pop } { exch pop } ifelse } def + +% add two points: lpiepadd +/lpiepadd +{ + % (Entering padd) 4 lpiedebugprint + exch 3 1 roll add 3 1 roll add exch + % (Leaving padd) 2 lpiedebugprint +} def + +% subtract first point from second: lpiepsub +/lpiepsub { 3 2 roll sub 3 1 roll exch sub exch } def + +% max two points: lpiepmax +/lpiepmax { exch 3 1 roll lpiemax 3 1 roll lpiemax exch } def + +% min two points: lpiepmin +/lpiepmin { exch 3 1 roll lpiemin 3 1 roll lpiemin exch } def + +% scalar multiplication: lpiepmul +/lpiepmul { dup 3 1 roll mul 3 1 roll mul exch } def + +% distance between two points: lpiedistance +/lpiedistance { lpiepsub dup mul exch dup mul add sqrt } def + +% point at angle and distance +% lpieatangle +/lpieatangle { 2 copy cos mul 3 1 roll sin mul lpiepadd } def + +% stroke a solid line: lpiesolid - +/lpiesolid +{ % (Entering lpiesolid) 2 lpiedebugprint + gsave pop pop [] 0 setdash 1 setlinecap stroke grestore newpath + % (Leaving lpiesolid) 0 lpiedebugprint +} def + +% stroke a dashed line: lpiedashed - +/lpiedashed +{ gsave + 2 copy div 2 le 1 index 0 le or + { exch pop 1 pt lpiemax [ exch dup ] 0 setdash } + { dup [ exch 4 2 roll 2 copy div + 1 sub 2 div ceiling dup 4 1 roll + 1 add mul sub exch div ] 0 setdash + } ifelse 0 setlinecap stroke + grestore newpath +} def + +% stroke a cdashed line: lpiecdashed - +/lpiecdashed +{ % (Entering lpiecdashed) 2 lpiedebugprint + gsave + 2 copy le 1 index 0 le or + { exch pop 1 pt lpiemax [ exch dup ] dup 0 get 2 div setdash } + { dup [ 4 2 roll exch 2 copy exch div + 2 div ceiling div 1 index sub + ] exch 2 div setdash + } ifelse 0 setlinecap stroke + grestore newpath + % (Leaving lpiecdashed) 0 lpiedebugprint +} def + +% stroke a dotted line: lpiedotted - +/lpiedotted +{ gsave + 2 copy le 1 index 0 le or + { exch pop 1 pt lpiemax [ exch 0 exch ] 0 setdash } + { 1 index exch div ceiling div + [ 0 3 2 roll ] 0 setdash + } ifelse 1 setlinecap stroke + grestore newpath +} def + +% stroke a noline line: lpienoline - +/lpienoline +{ pop pop +} def + +% label a point in current dictionary: /name lpiepointdef - +/lpiepointdef +{ + % (Entering lpiepointdef) 3 lpiedebugprint + [ 4 2 roll transform /itransform cvx ] cvx def + % (Leaving lpiepointdef) 0 lpiedebugprint +} def + +% find the angle that the current slice starts at +% - lpiesliceangle1 +/lpiesliceangle1 +{ lpiecurrentweight lpietotalweight div 360 mul lpieinitialangle add +} def + +% find the angle that the current slice stops at +% - lpiesliceangle2 +/lpiesliceangle2 +{ weight lpiecurrentweight add lpietotalweight div 360 mul lpieinitialangle add +} def + +% find the angle that bisects the current slice +% - lpieslicemidangle +/lpieslicemidangle +{ weight 2 div lpiecurrentweight add lpietotalweight div 360 mul lpieinitialangle add +} def + +% update the total weight +% - lpieupdateweight - +/lpieupdateweight +{ weight lpiecurrentweight add /lpiecurrentweight exch def +} def + +% find the apex of the slice +% - lpiesliceapex +/lpiesliceapex +{ lpiecentre lpieradius detach mul lpieslicemidangle lpieatangle +} def + +% find the end of the first arm of the slice +% - lpieslicearm1 +/lpieslicearm1 +{ lpiesliceapex lpieradius lpiesliceangle1 lpieatangle +} def + +% find the end of the second arm of the slice +% - lpieslicearm2 +/lpieslicearm2 +{ lpiesliceapex lpieradius lpiesliceangle2 lpieatangle +} def + +% set the whole closed path for the current slice +% - lpiesetslicepath - +/lpiesetslicepath +{ newpath lpiesliceapex moveto + currentpoint lpieradius lpiesliceangle1 lpiesliceangle2 arc + closepath +} def + +% set the first segment of the current slice and return its length +% - lpiesetsegment1 +/lpiesetsegment1 +{ newpath lpiesliceapex moveto lpieslicearm1 lineto + lpieradius +} def + +% set the second segment of the current slice and return its length +% - lpiesetsegment2 +/lpiesetsegment2 +{ newpath lpiesliceapex moveto lpieslicearm2 lineto + lpieradius +} def + +% set the arc segment of the current slice and return its length +% - lpiesetarcsegment +/lpiesetarcsegment +{ newpath + lpiesliceapex lpieradius lpiesliceangle1 lpiesliceangle2 arc + lpiesliceangle2 lpiesliceangle1 sub 180 div 3.14159 mul lpieradius mul +} def + +% draw one slice +% [ ] { } +% lpiedrawslice - +/lpiebeginslice +{ + % (Entering lpiebeginslice) 6 lpiedebugprint + /detach exch def + /weight exch def + + % paint the slice + gsave lpiesetslicepath exec grestore + + % set the line width + setlinewidth + + % stroke each segment separately to get dashes right + 2 copy lpiesetsegment1 3 1 roll + dup length 0 exch mod get cvx + % (Stroking segment1) count 1 sub lpiedebugprint + exec + + 2 copy lpiesetarcsegment 3 1 roll + dup length 1 exch mod get cvx + % (Stroking arc segment) count 1 sub lpiedebugprint + exec + + lpiesetsegment2 3 1 roll + dup length 2 exch mod get cvx + % (Stroking segment2) count 1 sub lpiedebugprint + exec + + % (Leaving lpiebeginslice) 0 lpiedebugprint +} def + +% finish off one slice +/lpieendslice +{ + % (Entering lpieendslice) 0 lpiedebugprint + + % update current weight ready for next slice + lpieupdateweight + + % (Leaving lpieendslice) 0 lpiedebugprint +} def + +% translate label +% lpietranslatelabel - +/lpietranslatelabel +{ + % (Entering lpietranslatelabel) 3 lpiedebugprint + /labelradius exch def + % lpiecentre (lpiecentre:) 2 lpiedebugprint pop pop + % lpieradius (lpieradius:) 1 lpiedebugprint pop + % labelradius (labelradius:) 1 lpiedebugprint pop + % lpieslicemidangle (lpieslicemidangle:) 1 lpiedebugprint pop + xsize 2 div ysize 2 div /labelcentre lpiepointdef + labelcentre + lpiesliceapex lpieradius labelradius mul lpieslicemidangle lpieatangle lpiepsub + lpiepadd + translate + % (Leaving lpietranslatelabel) 0 lpiedebugprint +} def + +% fix an angle to 0 <= res < 360: lpiefixangle +/lpiefixangle +{ + % (Entering lpiefixangle) 1 lpiedebugprint + { dup 0 ge { exit } if + 360 add + } loop + { dup 360 lt { exit } if + 360 sub + } loop + % (Leaving lpiefixangle) 1 lpiedebugprint +} def + +% angle from one point to another +% lpieangleto +/lpieangleto { + lpiepsub 2 copy 0 eq exch 0 eq and {pop} {exch atan} ifelse +} def + +% find point on circumference of box: alpha a b lpieboxcircum x y +/lpieboxcircum +{ + % (Entering lpieboxcircum) 3 lpiedebugprint + 4 dict begin + /b exch def + /a exch def + lpiefixangle /alpha exch def + 0 0 a b lpieangleto /theta exch def + % a (a:) 1 lpiedebugprint pop + % b (b:) 1 lpiedebugprint pop + % theta (theta:) 1 lpiedebugprint pop + % alpha (alpha:) 1 lpiedebugprint pop + + % if alpha <= theta, return (a, a*tan(alpha)) + alpha theta le + { a a alpha sin mul alpha cos div } + { + % else if alpha <= 180 - theta, return (b*cot(alpha), b) + alpha 180 theta sub le + { b alpha cos mul alpha sin div b } + { + % else if alpha <= 180 + theta, return (-a, -a*tan(alpha)) + alpha 180 theta add le + { a neg a neg alpha sin mul alpha cos div } + { + % else if alpha <= 360 - theta, return (-b*cot(alpha), -b) + alpha 360 theta sub le + { b neg alpha cos mul alpha sin div b neg } + { + % else 360 - theta <= alpha, return (a, a*tan(alpha)) + a a alpha sin mul alpha cos div + } ifelse + } ifelse + } ifelse + } ifelse + end + % (Leaving lpieboxcircum) 2 lpiedebugprint +} def + + +% draw finger (will immediately follow lpietranslatelabel) +% "[" "]" fingerwidth +% lpiedrawfinger - +/lpiedrawfinger +{ + % (Entering lpidrawfinger) 6 lpiedebugprint + % find inner endpoint of finger + /fingerradius exch def + lpiesliceapex lpieradius fingerradius mul + lpieslicemidangle lpieatangle lpiepadd + /fingerinner lpiepointdef + xsize 2 div ysize 2 div /labelcentre lpiepointdef + 0 0 /labelorigin lpiepointdef + + % find outer endpoint of finger, on circumference of label + labelcentre fingerinner lpieangleto + xsize 2 div ysize 2 div + lpieboxcircum labelcentre lpiepadd + /fingerouter lpiepointdef + + % set the line width + setlinewidth + + % draw line + newpath fingerinner moveto fingerouter lineto + fingerinner fingerouter lpiedistance 3 1 roll 0 get cvx exec + % (Leaving lpiedrawfinger) 0 lpiedebugprint +} def + +% draw arrowhead (will immediately follow lpiedrawfinger if reqd) +% lpiedrawarrowhead +/lpiedrawarrowhead +{ + gsave + /headwidth exch def + /headlength exch def + fingerinner translate + fingerouter fingerinner lpieangleto rotate + 0 0 moveto + headlength neg headwidth 2 div lineto + 0 headwidth neg rlineto + closepath fill + grestore +} def +end +%%EndResource diff -u --recursive --new-file -u --recursive --new-file lout-3.26/include/report lout-3.27/include/report --- lout-3.26/include/report Wed Sep 18 12:22:39 2002 +++ lout-3.27/include/report Thu Nov 21 08:33:46 2002 @@ -149,33 +149,67 @@ # @RefListBreak { } # break style of ref list # @RefListLabelWidth { @ListLabelWidth } # Labels column width # @RefListSortKey { @Tag } # sorting key + # @MakeGlossary { No } # make glossary? Yes or No + # @GlossaryText { @Null } # glossary initial text + # @GlossaryFont { } # glossary entries font + # @GlossaryBreak { } # glossary entries break + # @GlossaryFormat { +3p @Font @S @Name # glossary entries format + # @Right @I { @Word&&page @PageNum } + # @DP @RawIndentedDisplay @Body } + # @GlossaryGap { @DisplayGap } # gap between glossary entries + # @GlossaryColumnNumber{ 2 } # glossary columns (1 to 10) + # @GlossaryColumnGap { 1.00c @OrIfPlain 6s } # glossary column gap + # @InGlossaryFont { smallcaps } # font for @InGlossary + # @InGlossaryFormat { @Body } # format for @InGlossary + # @MakeIndex { No } # make index? Yes or No # @MakeIndex { No } # make index? Yes or No # @IndexText { @Null } # index initial text # @IndexFont { } # index entries font # @IndexBreak { {oragged 1.2fx} @OrIfPlain {oragged 1fx} } # and break + # @IndexFormat { @Body } # @Index format + # @SubIndexFormat { {1f @Wide}@Body } # @SubIndex format + # @SubSubIndexFormat { {2f @Wide}@Body } # @SubSubIndex format # @IndexColumnNumber { 2 } # index columns (1 to 10) # @IndexColumnGap { 1.00c @OrIfPlain 6s } # index column gap # @IndexCtd { Yes } # include (ctd.) lines # @IndexCtdWord { continued } # "ctd." in current lang. # @IndexCtdFormat { @Body @I (@CtdWord) } # format of ctd. + # @IndexSpacerAbove { 2v } # space above index spacer + # @IndexSpacerBelow { 1v } # space below index spacer + # @IndexSpacerFont { +3p } # font of index spacer + # @IndexSpacerFormat { @Body } # format of index spacer # @MakeIndexA { No } # make index A? Yes or No # @IndexAText { @Null } # index A initial text # @IndexAFont { } # index A entries font # @IndexABreak { {oragged 1.2fx} @OrIfPlain {oragged 1fx} } # and break + # @IndexAFormat { @Body } # @IndexA format + # @SubIndexAFormat { {1f @Wide}@Body } # @SubIndexA format + # @SubSubIndexAFormat { {2f @Wide}@Body } # @SubSubIndexA format # @IndexAColumnNumber { 2 } # index A columns (1 to 10) # @IndexAColumnGap { 1.00c @OrIfPlain 6s } # index A column gap # @IndexACtd { Yes } # include (ctd.) lines # @IndexACtdWord { continued } # "ctd." in current lang. # @IndexACtdFormat { @Body @I (@CtdWord) } # format of ctd. + # @IndexASpacerAbove { 2v } # space above index A spacer + # @IndexASpacerBelow { 1v } # space below index A spacer + # @IndexASpacerFont { +3p } # font of index A spacer + # @IndexASpacerFormat { @Body } # format of index A spacer # @MakeIndexB { No } # make index B? Yes or No # @IndexBText { @Null } # index B initial text # @IndexBFont { } # index B entries font # @IndexBBreak { {oragged 1.2fx} @OrIfPlain {oragged 1fx} } # and break + # @IndexBFormat { @Body } # @IndexB format + # @SubIndexBFormat { {1f @Wide}@Body } # @SubIndexB format + # @SubSubIndexBFormat { {2f @Wide}@Body } # @SubSubIndexB format # @IndexBColumnNumber { 2 } # index B columns (1 to 10) # @IndexBColumnGap { 1.00c @OrIfPlain 6s } # index B column gap # @IndexBCtd { Yes } # include (ctd.) lines # @IndexBCtdWord { continued } # "ctd." in current lang. # @IndexBCtdFormat { @Body @I (@CtdWord) } # format of ctd. + # @IndexBSpacerAbove { 2v } # space above index B spacer + # @IndexBSpacerBelow { 1v } # space below index B spacer + # @IndexBSpacerFont { +3p } # font of index B spacer + # @IndexBSpacerFormat { @Body } # format of index B spacer # @TopGap { 0.75c @OrIfPlain 2f } # gap between figures # @MidGap { 0.75c @OrIfPlain 2f } # gap above/below body text # @FootNoteNumbers { Arabic } # footnote numbers @@ -291,6 +325,7 @@ # @AbstractWord { abstract } # word for "Abstract" # @ContentsWord { contents } # word for "Contents" # @AppendixWord { appendix } # word for "Appendix" + # @GlossaryWor { glossary } # word for "Glossary" # @IndexWord { index } # word for "Index" # @IndexAWord { index } # word for "Index" (A) # @IndexBWord { index } # word for "Index" (B) @@ -333,6 +368,9 @@ # @ReferencesHeadingFont { Bold } # references head font # @ReferencesHeadingBreak { ragged 1.2fx nohyphen } # references head break # @ReferencesHeadingFormat { title } # references head fmt + # @GlossaryHeadingFont { Bold } # glossary head font + # @GlossaryHeadingBreak { ragged 1.2fx nohyphen } # glossary head break + # @GlossaryHeadingFormat { title } # glossary head fmt # @IndexHeadingFont { Bold } # index head font # @IndexHeadingBreak { ragged 1.2fx nohyphen } # index head break # @IndexHeadingFormat { title } # index head fmt @@ -355,6 +393,7 @@ # @SubAppendixInContents { Yes } # add subappendices to contents # @SubSubAppendixInContents { No } # add sub-subapps to contents # @ReferencesInContents { Yes } # add references to contents + # @GlossaryInContents { Yes } # add glossary to contents # @IndexInContents { Yes } # add index to contents # @IndexAInContents { Yes } # add index A to contents # @IndexBInContents { Yes } # add index B to contents @@ -393,6 +432,7 @@ # @SectionPrefix { } # for structured page nums # @AppendixPrefix { } # for structured page nums # @ReferencesPrefix { } # for structured page nums + # @GlossaryPrefix { } # for structured page nums # @IndexPrefix { } # for structured page nums # @IndexAPrefix { } # for structured page nums # @IndexBPrefix { } # for structured page nums diff -u --recursive --new-file -u --recursive --new-file lout-3.26/include/reportf lout-3.27/include/reportf --- lout-3.26/include/reportf Wed Sep 18 12:22:38 2002 +++ lout-3.27/include/reportf Wed Nov 20 09:06:13 2002 @@ -37,6 +37,7 @@ named @AbstractWord { abstract } named @ContentsWord { contents } named @AppendixWord { appendix } + named @GlossaryWord { glossary } named @IndexWord { index } named @IndexAWord { index } named @IndexBWord { index } @@ -99,6 +100,11 @@ named @ReferencesHeadingFormat right title { title } + named @GlossaryHeadingFont { Bold } + named @GlossaryHeadingBreak { ragged 1.2fx nohyphen } + named @GlossaryHeadingFormat + right title { title } + named @IndexHeadingFont { Bold } named @IndexHeadingBreak { ragged 1.2fx nohyphen } named @IndexHeadingFormat @@ -128,6 +134,7 @@ named @SubAppendixInContents { Yes } named @SubSubAppendixInContents { No } named @ReferencesInContents { Yes } + named @GlossaryInContents { Yes } named @IndexInContents { Yes } named @IndexAInContents { Yes } named @IndexBInContents { Yes } @@ -172,6 +179,7 @@ named @SectionPrefix { } named @AppendixPrefix { } named @ReferencesPrefix { } + named @GlossaryPrefix { } named @IndexPrefix { } named @IndexAPrefix { } named @IndexBPrefix { } @@ -270,6 +278,7 @@ named @AbstractDisplay { @AbstractDisplay } named @AbstractTitle { @AbstractTitle } named @Abstract {} + named @GlossaryText { @GlossaryText } named @IndexText { @IndexText } named @IndexAText { @IndexAText } named @IndexBText { @IndexBText } @@ -360,6 +369,44 @@ { //@RefListGap @ReferencesSection } } + def @GlossaryPart + named @Tag {} + { + + def @Run + { + NonStart @Runner + @MajorNum {} + @MajorTitle { glossary @WordVal @GlossaryWord } + @MinorNum {} + @MinorTitle {} + @Owner { @Tag } + @Prefix { @GlossaryPrefix } + } + + @LargeScaleStructure + tag { @Tag } + type { Major } + initiallanguage { @InitialLanguage } + title { glossary @WordVal @GlossaryWord } + headingfont { @GlossaryHeadingFont } + headingbreak { @GlossaryHeadingBreak } + headingformat { @GlossaryHeadingFormat @Body } + headingtext { @GlossaryText } + incontents { @GlossaryInContents } + prefix { @GlossaryPrefix } + inrunners { Yes } + majornum {} + majortitle {} + minornum {} + minortitle { glossary @WordVal @GlossaryWord } + sendheader { @Full @Body } + innergap { @SectionGap } + wantindefinite { Yes } + @GlossarySection @Run + + } + def @IndexPart named @Tag {} { @@ -497,6 +544,7 @@ //@SectionGap @ReferencesBeforeAppendices @NoDo { @MakeReferences @Do @ReferencesPart } + // @MakeGlossary @Do @GlossaryPart // @MakeIndexA @Do @IndexAPart // @MakeIndexB @Do @IndexBPart // @MakeIndex @Do @IndexPart @@ -526,6 +574,7 @@ } //@SectionGap @EndFigureList //@SectionGap @EndNoteList 1 + // @MakeGlossary @Do @GlossaryPart // @MakeIndexA @Do @IndexAPart // @MakeIndexB @Do @IndexBPart // @MakeIndex @Do @IndexPart diff -u --recursive --new-file -u --recursive --new-file lout-3.26/include/slides lout-3.27/include/slides --- lout-3.26/include/slides Wed Sep 18 12:22:38 2002 +++ lout-3.27/include/slides Thu Nov 21 08:34:26 2002 @@ -147,33 +147,67 @@ # @RefListBreak { } # break style of ref list # @RefListLabelWidth { @ListLabelWidth } # Labels column width # @RefListSortKey { @Tag } # sorting key + # @MakeGlossary { No } # make glossary? Yes or No + # @GlossaryText { @Null } # glossary initial text + # @GlossaryFont { } # glossary entries font + # @GlossaryBreak { } # glossary entries break + # @GlossaryFormat { +3p @Font @S @Name # glossary entries format + # @Right @I { @Word&&page @PageNum } + # @DP @RawIndentedDisplay @Body } + # @GlossaryGap { @DisplayGap } # gap between glossary entries + # @GlossaryColumnNumber{ 2 } # glossary columns (1 to 10) + # @GlossaryColumnGap { 1.00c @OrIfPlain 6s } # glossary column gap + # @InGlossaryFont { smallcaps } # font for @InGlossary + # @InGlossaryFormat { @Body } # format for @InGlossary + # @MakeIndex { No } # make index? Yes or No # @MakeIndex { No } # make index? Yes or No # @IndexText { @Null } # index initial text # @IndexFont { } # index entries font # @IndexBreak { {oragged 1.2fx} @OrIfPlain {oragged 1fx} } # and break + # @IndexFormat { @Body } # @Index format + # @SubIndexFormat { {1f @Wide}@Body } # @SubIndex format + # @SubSubIndexFormat { {2f @Wide}@Body } # @SubSubIndex format # @IndexColumnNumber { 2 } # index columns (1 to 10) # @IndexColumnGap { 1.00c @OrIfPlain 6s } # index column gap # @IndexCtd { Yes } # include (ctd.) lines # @IndexCtdWord { continued } # "ctd." in current lang. # @IndexCtdFormat { @Body @I (@CtdWord) } # format of ctd. + # @IndexSpacerAbove { 2v } # space above index spacer + # @IndexSpacerBelow { 1v } # space below index spacer + # @IndexSpacerFont { +3p } # font of index spacer + # @IndexSpacerFormat { @Body } # format of index spacer # @MakeIndexA { No } # make index A? Yes or No # @IndexAText { @Null } # index A initial text # @IndexAFont { } # index A entries font # @IndexABreak { {oragged 1.2fx} @OrIfPlain {oragged 1fx} } # and break + # @IndexAFormat { @Body } # @IndexA format + # @SubIndexAFormat { {1f @Wide}@Body } # @SubIndexA format + # @SubSubIndexAFormat { {2f @Wide}@Body } # @SubSubIndexA format # @IndexAColumnNumber { 2 } # index A columns (1 to 10) # @IndexAColumnGap { 1.00c @OrIfPlain 6s } # index A column gap # @IndexACtd { Yes } # include (ctd.) lines # @IndexACtdWord { continued } # "ctd." in current lang. # @IndexACtdFormat { @Body @I (@CtdWord) } # format of ctd. + # @IndexASpacerAbove { 2v } # space above index A spacer + # @IndexASpacerBelow { 1v } # space below index A spacer + # @IndexASpacerFont { +3p } # font of index A spacer + # @IndexASpacerFormat { @Body } # format of index A spacer # @MakeIndexB { No } # make index B? Yes or No # @IndexBText { @Null } # index B initial text # @IndexBFont { } # index B entries font # @IndexBBreak { {oragged 1.2fx} @OrIfPlain {oragged 1fx} } # and break + # @IndexBFormat { @Body } # @IndexB format + # @SubIndexBFormat { {1f @Wide}@Body } # @SubIndexB format + # @SubSubIndexBFormat { {2f @Wide}@Body } # @SubSubIndexB format # @IndexBColumnNumber { 2 } # index B columns (1 to 10) # @IndexBColumnGap { 1.00c @OrIfPlain 6s } # index B column gap # @IndexBCtd { Yes } # include (ctd.) lines # @IndexBCtdWord { continued } # "ctd." in current lang. # @IndexBCtdFormat { @Body @I (@CtdWord) } # format of ctd. + # @IndexBSpacerAbove { 2v } # space above index B spacer + # @IndexBSpacerBelow { 1v } # space below index B spacer + # @IndexBSpacerFont { +3p } # font of index B spacer + # @IndexBSpacerFormat { @Body } # format of index B spacer # @TopGap { 0.75c @OrIfPlain 2f } # gap between figures # @MidGap { 0.75c @OrIfPlain 2f } # gap above/below body text # @FootNoteNumbers { Arabic } # footnote numbers diff -u --recursive --new-file -u --recursive --new-file lout-3.26/include/tbl lout-3.27/include/tbl --- lout-3.26/include/tbl Wed Sep 18 12:22:38 2002 +++ lout-3.27/include/tbl Fri Nov 1 20:11:01 2002 @@ -12,7 +12,7 @@ # # # The @SysInclude { tblf } line # # # -# This line causes Lout to read the definitions for diagrams, and should # +# This line causes Lout to read the definitions for tables, and should # # not be touched. # # # ############################################################################### @@ -30,7 +30,8 @@ ############################################################################### @Use { @TblSetup - # paint { nopaint } # colour of background + # paint { none } # colour of background + # texture { solid } # texture of paint background # background { } # object in background # font { } # font # break { } # paragraph breaking style diff -u --recursive --new-file -u --recursive --new-file lout-3.26/include/tblf lout-3.27/include/tblf --- lout-3.26/include/tblf Wed Sep 18 12:22:38 2002 +++ lout-3.27/include/tblf Fri Nov 1 20:52:28 2002 @@ -11,7 +11,7 @@ # # ############################################################################### -# obsoloete now @SysPrependGraphic { tblf.lpg } +@SysInclude { coltex } export @OrIfPlain def @TOIP { @@ -29,7 +29,8 @@ export @Tbl def @TblSetup - import @TOIP named paint p { nopaint } + import @TOIP named paint p { none } + import @TextureImport named texture t { solid } import @TOIP named background bg {} import @TOIP named font f {} import @TOIP named break b {} @@ -98,6 +99,7 @@ ########################################################################### def setupp { p } + def setupt { t } def setupbg { bg } def setupf { f } def setupb { b } @@ -206,6 +208,7 @@ # parameters for formatting the entire table named paint p {} + import @TextureImport named texture t {} named background bg {} named font f {} named break b {} @@ -254,6 +257,7 @@ # parameters for formatting @Rowa rows named apaint ap {} + import @TextureImport named atexture at {} named abackground abg {} named afont af {} named abreak ab {} @@ -308,6 +312,7 @@ named Z {} named @Cell named paint p {} + import @TextureImport named texture t {} named background bg {} named font f {} named break b {} @@ -359,6 +364,7 @@ # parameters for formatting @Rowb rows named bpaint bp {} + import @TextureImport named btexture bt {} named bbackground bbg {} named bfont bf {} named bbreak bb {} @@ -413,6 +419,7 @@ named Z {} named @Cell named paint p {} + import @TextureImport named texture t {} named background bg {} named font f {} named break b {} @@ -464,6 +471,7 @@ # parameters for formatting @Rowc rows named cpaint cp {} + import @TextureImport named ctexture ct {} named cbackground cbg {} named cfont cf {} named cbreak cb {} @@ -518,6 +526,7 @@ named Z {} named @Cell named paint p {} + import @TextureImport named texture t {} named background bg {} named font f {} named break b {} @@ -569,6 +578,7 @@ # parameters for formatting @Rowd rows named dpaint dp {} + import @TextureImport named dtexture dt {} named dbackground dbg {} named dfont df {} named dbreak db {} @@ -623,6 +633,7 @@ named Z {} named @Cell named paint p {} + import @TextureImport named texture t {} named background bg {} named font f {} named break b {} @@ -674,6 +685,7 @@ # parameters for formatting @Rowe rows named epaint ep {} + import @TextureImport named etexture et {} named ebackground ebg {} named efont ef {} named ebreak eb {} @@ -728,6 +740,7 @@ named Z {} named @Cell named paint p {} + import @TextureImport named texture t {} named background bg {} named font f {} named break b {} @@ -779,6 +792,7 @@ # parameters for formatting @Rowf rows named fpaint fp {} + import @TextureImport named ftexture ft {} named fbackground fbg {} named ffont ff {} named fbreak fb {} @@ -833,6 +847,7 @@ named Z {} named @Cell named paint p {} + import @TextureImport named texture t {} named background bg {} named font f {} named break b {} @@ -884,6 +899,7 @@ # parameters for formatting @Rowg rows named gpaint gp {} + import @TextureImport named gtexture gt {} named gbackground gbg {} named gfont gf {} named gbreak gb {} @@ -938,6 +954,7 @@ named Z {} named @Cell named paint p {} + import @TextureImport named texture t {} named background bg {} named font f {} named break b {} @@ -989,6 +1006,7 @@ # parameters for formatting @Rowh rows named hpaint hp {} + import @TextureImport named htexture ht {} named hbackground hbg {} named hfont hf {} named hbreak hb {} @@ -1043,6 +1061,7 @@ named Z {} named @Cell named paint p {} + import @TextureImport named texture t {} named background bg {} named font f {} named break b {} @@ -1103,6 +1122,7 @@ ####################################################################### def tblp { p @Else setupp } + def tblt { t @Else setupt } def tblbg { bg @Else setupbg } def tblf { f @Else setupf } def tblb { b @Else setupb } @@ -1137,6 +1157,7 @@ def @DoCell named compulsory p {} + named compulsory t {} named compulsory bg {} named compulsory f {} named compulsory b {} @@ -1180,9 +1201,6 @@ @OneRow { /0io x /0io } } -# include @ColourCommand symbol -@SysInclude { ccommand } - def @PDFBox { "0 0 m __xsize 0 l __xsize __ysize l 0 __ysize l h" @@ -1213,15 +1231,6 @@ } } - def @PaintBox left col right x - { - @BackEnd @Case { - PostScript @Yield { {"LoutBox" @PSAddPaint col } @Graphic x } - PDF @Yield { { @PDFBox @PDFAddPaint col "S" } @Graphic x } - PlainText @Yield { x } - } - } - def @HRule left col right thick { @ZeroHeight thick @High col @FillBox {} @@ -1327,12 +1336,21 @@ } } + def @PaintBox right x + { + @BackEnd @Case { + PostScript @Yield { {"LoutBox" @ColourCommand p t "fill"} @Graphic x } + PDF @Yield { { @PDFBox @PDFAddPaint col "S" } @Graphic x } + PlainText @Yield { x } + } + } + def @AddPaint right x { p @Case { { none nopaint no } @Yield x - else @Yield { p @PaintBox x } + else @Yield { @PaintBox x } } } @@ -1405,6 +1423,7 @@ # symbol for producing @Row rows def @DoRow named paint p {} + import @TextureImport named texture t {} named background bg {} named font f {} named break b {} @@ -1459,6 +1478,7 @@ named Z {} named @Cell named paint p {} + import @TextureImport named texture t {} named background bg {} named font f {} named break b {} @@ -1522,6 +1542,7 @@ ################################################################### def rowp { p @Else tblp } + def rowt { t @Else tblt } def rowbg { bg @Else tblbg } def rowf { f @Else tblf } def rowb { b @Else tblb } @@ -1570,6 +1591,7 @@ ####################################################### p { p @Else rowp } + t { t @Else rowt } bg { bg @Else rowbg } f { f @Else rowf } b { b @Else rowb } @@ -1608,6 +1630,7 @@ # symbol for producing @Rowa rows def @DoRowa named paint p {} + import @TextureImport named texture t {} named background bg {} named font f {} named break b {} @@ -1668,6 +1691,7 @@ ################################################################### def tbxp { ap @Else tblp } + def tbxt { at @Else tblt } def tbxbg { abg @Else tblbg } def tbxf { af @Else tblf } def tbxb { ab @Else tblb } @@ -1706,6 +1730,7 @@ ################################################################### def rowp { p @Else tbxp } + def rowt { t @Else tblt } def rowbg { bg @Else tbxbg } def rowf { f @Else tbxf } def rowb { b @Else tbxb } @@ -1754,6 +1779,7 @@ ####################################################### p { p @Else rowp } + t { t @Else rowt } bg { bg @Else rowbg } f { f @Else rowf } b { b @Else rowb } @@ -1792,6 +1818,7 @@ # symbol for producing @Rowb rows def @DoRowb named paint p {} + import @TextureImport named texture t {} named background bg {} named font f {} named break b {} @@ -1852,6 +1879,7 @@ ################################################################### def tbxp { bp @Else tblp } + def tbxt { bt @Else tblt } def tbxbg { bbg @Else tblbg } def tbxf { bf @Else tblf } def tbxb { bb @Else tblb } @@ -1890,6 +1918,7 @@ ################################################################### def rowp { p @Else tbxp } + def rowt { t @Else tblt } def rowbg { bg @Else tbxbg } def rowf { f @Else tbxf } def rowb { b @Else tbxb } @@ -1938,6 +1967,7 @@ ####################################################### p { p @Else rowp } + t { t @Else rowt } bg { bg @Else rowbg } f { f @Else rowf } b { b @Else rowb } @@ -1976,6 +2006,7 @@ # symbol for producing @Rowc rows def @DoRowc named paint p {} + import @TextureImport named texture t {} named background bg {} named font f {} named break b {} @@ -2036,6 +2067,7 @@ ################################################################### def tbxp { cp @Else tblp } + def tbxt { ct @Else tblt } def tbxbg { cbg @Else tblbg } def tbxf { cf @Else tblf } def tbxb { cb @Else tblb } @@ -2074,6 +2106,7 @@ ################################################################### def rowp { p @Else tbxp } + def rowt { t @Else tblt } def rowbg { bg @Else tbxbg } def rowf { f @Else tbxf } def rowb { b @Else tbxb } @@ -2122,6 +2155,7 @@ ####################################################### p { p @Else rowp } + t { t @Else rowt } bg { bg @Else rowbg } f { f @Else rowf } b { b @Else rowb } @@ -2160,6 +2194,7 @@ # symbol for producing @Rowd rows def @DoRowd named paint p {} + import @TextureImport named texture t {} named background bg {} named font f {} named break b {} @@ -2220,6 +2255,7 @@ ################################################################### def tbxp { dp @Else tblp } + def tbxt { dt @Else tblt } def tbxbg { dbg @Else tblbg } def tbxf { df @Else tblf } def tbxb { db @Else tblb } @@ -2258,6 +2294,7 @@ ################################################################### def rowp { p @Else tbxp } + def rowt { t @Else tblt } def rowbg { bg @Else tbxbg } def rowf { f @Else tbxf } def rowb { b @Else tbxb } @@ -2306,6 +2343,7 @@ ####################################################### p { p @Else rowp } + t { t @Else rowt } bg { bg @Else rowbg } f { f @Else rowf } b { b @Else rowb } @@ -2344,6 +2382,7 @@ # symbol for producing @Rowe rows def @DoRowe named paint p {} + import @TextureImport named texture t {} named background bg {} named font f {} named break b {} @@ -2404,6 +2443,7 @@ ################################################################### def tbxp { ep @Else tblp } + def tbxt { et @Else tblt } def tbxbg { ebg @Else tblbg } def tbxf { ef @Else tblf } def tbxb { eb @Else tblb } @@ -2442,6 +2482,7 @@ ################################################################### def rowp { p @Else tbxp } + def rowt { t @Else tblt } def rowbg { bg @Else tbxbg } def rowf { f @Else tbxf } def rowb { b @Else tbxb } @@ -2490,6 +2531,7 @@ ####################################################### p { p @Else rowp } + t { t @Else rowt } bg { bg @Else rowbg } f { f @Else rowf } b { b @Else rowb } @@ -2528,6 +2570,7 @@ # symbol for producing @Rowf rows def @DoRowf named paint p {} + import @TextureImport named texture t {} named background bg {} named font f {} named break b {} @@ -2588,6 +2631,7 @@ ################################################################### def tbxp { fp @Else tblp } + def tbxt { ft @Else tblt } def tbxbg { fbg @Else tblbg } def tbxf { ff @Else tblf } def tbxb { fb @Else tblb } @@ -2626,6 +2670,7 @@ ################################################################### def rowp { p @Else tbxp } + def rowt { t @Else tblt } def rowbg { bg @Else tbxbg } def rowf { f @Else tbxf } def rowb { b @Else tbxb } @@ -2674,6 +2719,7 @@ ####################################################### p { p @Else rowp } + t { t @Else rowt } bg { bg @Else rowbg } f { f @Else rowf } b { b @Else rowb } @@ -2712,6 +2758,7 @@ # symbol for producing @Rowg rows def @DoRowg named paint p {} + import @TextureImport named texture t {} named background bg {} named font f {} named break b {} @@ -2772,6 +2819,7 @@ ################################################################### def tbxp { gp @Else tblp } + def tbxt { gt @Else tblt } def tbxbg { gbg @Else tblbg } def tbxf { gf @Else tblf } def tbxb { gb @Else tblb } @@ -2810,6 +2858,7 @@ ################################################################### def rowp { p @Else tbxp } + def rowt { t @Else tblt } def rowbg { bg @Else tbxbg } def rowf { f @Else tbxf } def rowb { b @Else tbxb } @@ -2858,6 +2907,7 @@ ####################################################### p { p @Else rowp } + t { t @Else rowt } bg { bg @Else rowbg } f { f @Else rowf } b { b @Else rowb } @@ -2896,6 +2946,7 @@ # symbol for producing @Rowh rows def @DoRowh named paint p {} + import @TextureImport named texture t {} named background bg {} named font f {} named break b {} @@ -2956,6 +3007,7 @@ ################################################################### def tbxp { hp @Else tblp } + def tbxt { ht @Else tblt } def tbxbg { hbg @Else tblbg } def tbxf { hf @Else tblf } def tbxb { hb @Else tblb } @@ -2994,6 +3046,7 @@ ################################################################### def rowp { p @Else tbxp } + def rowt { t @Else tblt } def rowbg { bg @Else tbxbg } def rowf { f @Else tbxf } def rowb { b @Else tbxb } @@ -3042,6 +3095,7 @@ ####################################################### p { p @Else rowp } + t { t @Else rowt } bg { bg @Else rowbg } f { f @Else rowf } b { b @Else rowb } diff -u --recursive --new-file -u --recursive --new-file lout-3.26/include/xrgb lout-3.27/include/xrgb --- lout-3.26/include/xrgb Thu Jan 1 10:00:00 1970 +++ lout-3.27/include/xrgb Tue Nov 19 15:10:13 2002 @@ -0,0 +1,680 @@ +##################################################################### +# # +# @Xrgb symbol # +# # +# Contributed by Mark Summerfield # +# Tested and installed by Jeff Kingston, 18 November 2002 # +# November 2002 # +# # +# Said to be the list of named colours known to the X-windows # +# system. There are 752 colours here, but many are listed twice # +# under different spellings of their names. # +# # +# I've deleted the else clause and moved "black" to the top. # +# This will ensure that if the user mis-types the colour, an # +# error message will be printed and "black" substituted. # +# # +##################################################################### + +def @Xrgb right x { + x @Case { + { black } @Yield { rgb "0.000 0.000 0.000" } + { snow } @Yield { rgb "1.000 0.980 0.980" } + { ghostwhite } @Yield { rgb "0.973 0.973 1.000" } + { whitesmoke } @Yield { rgb "0.961 0.961 0.961" } + { gainsboro } @Yield { rgb "0.863 0.863 0.863" } + { floralwhite } @Yield { rgb "1.000 0.980 0.941" } + { oldlace } @Yield { rgb "0.992 0.961 0.902" } + { linen } @Yield { rgb "0.980 0.941 0.902" } + { antiquewhite } @Yield { rgb "0.980 0.922 0.843" } + { papayawhip } @Yield { rgb "1.000 0.937 0.835" } + { blanchedalmond } @Yield { rgb "1.000 0.922 0.804" } + { bisque } @Yield { rgb "1.000 0.894 0.769" } + { peachpuff } @Yield { rgb "1.000 0.855 0.725" } + { navajowhite } @Yield { rgb "1.000 0.871 0.678" } + { moccasin } @Yield { rgb "1.000 0.894 0.710" } + { cornsilk } @Yield { rgb "1.000 0.973 0.863" } + { ivory } @Yield { rgb "1.000 1.000 0.941" } + { lemonchiffon } @Yield { rgb "1.000 0.980 0.804" } + { seashell } @Yield { rgb "1.000 0.961 0.933" } + { honeydew } @Yield { rgb "0.941 1.000 0.941" } + { mintcream } @Yield { rgb "0.961 1.000 0.980" } + { azure } @Yield { rgb "0.941 1.000 1.000" } + { aliceblue } @Yield { rgb "0.941 0.973 1.000" } + { lavender } @Yield { rgb "0.902 0.902 0.980" } + { lavenderblush } @Yield { rgb "1.000 0.941 0.961" } + { mistyrose } @Yield { rgb "1.000 0.894 0.882" } + { white } @Yield { rgb "1.000 1.000 1.000" } + { darkslategray } @Yield { rgb "0.184 0.310 0.310" } + { darkslategrey } @Yield { rgb "0.184 0.310 0.310" } + { dimgray } @Yield { rgb "0.412 0.412 0.412" } + { dimgrey } @Yield { rgb "0.412 0.412 0.412" } + { slategray } @Yield { rgb "0.439 0.502 0.565" } + { slategrey } @Yield { rgb "0.439 0.502 0.565" } + { lightslategray } @Yield { rgb "0.467 0.533 0.600" } + { lightslategrey } @Yield { rgb "0.467 0.533 0.600" } + { gray } @Yield { rgb "0.745 0.745 0.745" } + { grey } @Yield { rgb "0.745 0.745 0.745" } + { lightgrey } @Yield { rgb "0.827 0.827 0.827" } + { lightgray } @Yield { rgb "0.827 0.827 0.827" } + { midnightblue } @Yield { rgb "0.098 0.098 0.439" } + { navy } @Yield { rgb "0.000 0.000 0.502" } + { navyblue } @Yield { rgb "0.000 0.000 0.502" } + { cornflowerblue } @Yield { rgb "0.392 0.584 0.929" } + { darkslateblue } @Yield { rgb "0.282 0.239 0.545" } + { slateblue } @Yield { rgb "0.416 0.353 0.804" } + { mediumslateblue } @Yield { rgb "0.482 0.408 0.933" } + { lightslateblue } @Yield { rgb "0.518 0.439 1.000" } + { mediumblue } @Yield { rgb "0.000 0.000 0.804" } + { royalblue } @Yield { rgb "0.255 0.412 0.882" } + { blue } @Yield { rgb "0.000 0.000 1.000" } + { dodgerblue } @Yield { rgb "0.118 0.565 1.000" } + { deepskyblue } @Yield { rgb "0.000 0.749 1.000" } + { skyblue } @Yield { rgb "0.529 0.808 0.922" } + { lightskyblue } @Yield { rgb "0.529 0.808 0.980" } + { steelblue } @Yield { rgb "0.275 0.510 0.706" } + { lightsteelblue } @Yield { rgb "0.690 0.769 0.871" } + { lightblue } @Yield { rgb "0.678 0.847 0.902" } + { powderblue } @Yield { rgb "0.690 0.878 0.902" } + { paleturquoise } @Yield { rgb "0.686 0.933 0.933" } + { darkturquoise } @Yield { rgb "0.000 0.808 0.820" } + { mediumturquoise } @Yield { rgb "0.282 0.820 0.800" } + { turquoise } @Yield { rgb "0.251 0.878 0.816" } + { cyan } @Yield { rgb "0.000 1.000 1.000" } + { lightcyan } @Yield { rgb "0.878 1.000 1.000" } + { cadetblue } @Yield { rgb "0.373 0.620 0.627" } + { mediumaquamarine } @Yield { rgb "0.400 0.804 0.667" } + { aquamarine } @Yield { rgb "0.498 1.000 0.831" } + { darkgreen } @Yield { rgb "0.000 0.392 0.000" } + { darkolivegreen } @Yield { rgb "0.333 0.420 0.184" } + { darkseagreen } @Yield { rgb "0.561 0.737 0.561" } + { seagreen } @Yield { rgb "0.180 0.545 0.341" } + { mediumseagreen } @Yield { rgb "0.235 0.702 0.443" } + { lightseagreen } @Yield { rgb "0.125 0.698 0.667" } + { palegreen } @Yield { rgb "0.596 0.984 0.596" } + { springgreen } @Yield { rgb "0.000 1.000 0.498" } + { lawngreen } @Yield { rgb "0.486 0.988 0.000" } + { green } @Yield { rgb "0.000 1.000 0.000" } + { chartreuse } @Yield { rgb "0.498 1.000 0.000" } + { mediumspringgreen } @Yield { rgb "0.000 0.980 0.604" } + { greenyellow } @Yield { rgb "0.678 1.000 0.184" } + { limegreen } @Yield { rgb "0.196 0.804 0.196" } + { yellowgreen } @Yield { rgb "0.604 0.804 0.196" } + { forestgreen } @Yield { rgb "0.133 0.545 0.133" } + { olivedrab } @Yield { rgb "0.420 0.557 0.137" } + { darkkhaki } @Yield { rgb "0.741 0.718 0.420" } + { khaki } @Yield { rgb "0.941 0.902 0.549" } + { palegoldenrod } @Yield { rgb "0.933 0.910 0.667" } + { lightgoldenrodyellow }@Yield{ rgb "0.980 0.980 0.824" } + { lightyellow } @Yield { rgb "1.000 1.000 0.878" } + { yellow } @Yield { rgb "1.000 1.000 0.000" } + { gold } @Yield { rgb "1.000 0.843 0.000" } + { lightgoldenrod } @Yield { rgb "0.933 0.867 0.510" } + { goldenrod } @Yield { rgb "0.855 0.647 0.125" } + { darkgoldenrod } @Yield { rgb "0.722 0.525 0.043" } + { rosybrown } @Yield { rgb "0.737 0.561 0.561" } + { indianred } @Yield { rgb "0.804 0.361 0.361" } + { saddlebrown } @Yield { rgb "0.545 0.271 0.075" } + { sienna } @Yield { rgb "0.627 0.322 0.176" } + { peru } @Yield { rgb "0.804 0.522 0.247" } + { burlywood } @Yield { rgb "0.871 0.722 0.529" } + { beige } @Yield { rgb "0.961 0.961 0.863" } + { wheat } @Yield { rgb "0.961 0.871 0.702" } + { sandybrown } @Yield { rgb "0.957 0.643 0.376" } + { tan } @Yield { rgb "0.824 0.706 0.549" } + { chocolate } @Yield { rgb "0.824 0.412 0.118" } + { firebrick } @Yield { rgb "0.698 0.133 0.133" } + { brown } @Yield { rgb "0.647 0.165 0.165" } + { darksalmon } @Yield { rgb "0.914 0.588 0.478" } + { salmon } @Yield { rgb "0.980 0.502 0.447" } + { lightsalmon } @Yield { rgb "1.000 0.627 0.478" } + { orange } @Yield { rgb "1.000 0.647 0.000" } + { darkorange } @Yield { rgb "1.000 0.549 0.000" } + { coral } @Yield { rgb "1.000 0.498 0.314" } + { lightcoral } @Yield { rgb "0.941 0.502 0.502" } + { tomato } @Yield { rgb "1.000 0.388 0.278" } + { orangered } @Yield { rgb "1.000 0.271 0.000" } + { red } @Yield { rgb "1.000 0.000 0.000" } + { hotpink } @Yield { rgb "1.000 0.412 0.706" } + { deeppink } @Yield { rgb "1.000 0.078 0.576" } + { pink } @Yield { rgb "1.000 0.753 0.796" } + { lightpink } @Yield { rgb "1.000 0.714 0.757" } + { palevioletred } @Yield { rgb "0.859 0.439 0.576" } + { maroon } @Yield { rgb "0.690 0.188 0.376" } + { mediumvioletred } @Yield { rgb "0.780 0.082 0.522" } + { violetred } @Yield { rgb "0.816 0.125 0.565" } + { magenta } @Yield { rgb "1.000 0.000 1.000" } + { violet } @Yield { rgb "0.933 0.510 0.933" } + { plum } @Yield { rgb "0.867 0.627 0.867" } + { orchid } @Yield { rgb "0.855 0.439 0.839" } + { mediumorchid } @Yield { rgb "0.729 0.333 0.827" } + { darkorchid } @Yield { rgb "0.600 0.196 0.800" } + { darkviolet } @Yield { rgb "0.580 0.000 0.827" } + { blueviolet } @Yield { rgb "0.541 0.169 0.886" } + { purple } @Yield { rgb "0.627 0.125 0.941" } + { mediumpurple } @Yield { rgb "0.576 0.439 0.859" } + { thistle } @Yield { rgb "0.847 0.749 0.847" } + { snow1 } @Yield { rgb "1.000 0.980 0.980" } + { snow2 } @Yield { rgb "0.933 0.914 0.914" } + { snow3 } @Yield { rgb "0.804 0.788 0.788" } + { snow4 } @Yield { rgb "0.545 0.537 0.537" } + { seashell1 } @Yield { rgb "1.000 0.961 0.933" } + { seashell2 } @Yield { rgb "0.933 0.898 0.871" } + { seashell3 } @Yield { rgb "0.804 0.773 0.749" } + { seashell4 } @Yield { rgb "0.545 0.525 0.510" } + { antiquewhite1 } @Yield { rgb "1.000 0.937 0.859" } + { antiquewhite2 } @Yield { rgb "0.933 0.875 0.800" } + { antiquewhite3 } @Yield { rgb "0.804 0.753 0.690" } + { antiquewhite4 } @Yield { rgb "0.545 0.514 0.471" } + { bisque1 } @Yield { rgb "1.000 0.894 0.769" } + { bisque2 } @Yield { rgb "0.933 0.835 0.718" } + { bisque3 } @Yield { rgb "0.804 0.718 0.620" } + { bisque4 } @Yield { rgb "0.545 0.490 0.420" } + { peachpuff1 } @Yield { rgb "1.000 0.855 0.725" } + { peachpuff2 } @Yield { rgb "0.933 0.796 0.678" } + { peachpuff3 } @Yield { rgb "0.804 0.686 0.584" } + { peachpuff4 } @Yield { rgb "0.545 0.467 0.396" } + { navajowhite1 } @Yield { rgb "1.000 0.871 0.678" } + { navajowhite2 } @Yield { rgb "0.933 0.812 0.631" } + { navajowhite3 } @Yield { rgb "0.804 0.702 0.545" } + { navajowhite4 } @Yield { rgb "0.545 0.475 0.369" } + { lemonchiffon1 } @Yield { rgb "1.000 0.980 0.804" } + { lemonchiffon2 } @Yield { rgb "0.933 0.914 0.749" } + { lemonchiffon3 } @Yield { rgb "0.804 0.788 0.647" } + { lemonchiffon4 } @Yield { rgb "0.545 0.537 0.439" } + { cornsilk1 } @Yield { rgb "1.000 0.973 0.863" } + { cornsilk2 } @Yield { rgb "0.933 0.910 0.804" } + { cornsilk3 } @Yield { rgb "0.804 0.784 0.694" } + { cornsilk4 } @Yield { rgb "0.545 0.533 0.471" } + { ivory1 } @Yield { rgb "1.000 1.000 0.941" } + { ivory2 } @Yield { rgb "0.933 0.933 0.878" } + { ivory3 } @Yield { rgb "0.804 0.804 0.757" } + { ivory4 } @Yield { rgb "0.545 0.545 0.514" } + { honeydew1 } @Yield { rgb "0.941 1.000 0.941" } + { honeydew2 } @Yield { rgb "0.878 0.933 0.878" } + { honeydew3 } @Yield { rgb "0.757 0.804 0.757" } + { honeydew4 } @Yield { rgb "0.514 0.545 0.514" } + { lavenderblush1 } @Yield { rgb "1.000 0.941 0.961" } + { lavenderblush2 } @Yield { rgb "0.933 0.878 0.898" } + { lavenderblush3 } @Yield { rgb "0.804 0.757 0.773" } + { lavenderblush4 } @Yield { rgb "0.545 0.514 0.525" } + { mistyrose1 } @Yield { rgb "1.000 0.894 0.882" } + { mistyrose2 } @Yield { rgb "0.933 0.835 0.824" } + { mistyrose3 } @Yield { rgb "0.804 0.718 0.710" } + { mistyrose4 } @Yield { rgb "0.545 0.490 0.482" } + { azure1 } @Yield { rgb "0.941 1.000 1.000" } + { azure2 } @Yield { rgb "0.878 0.933 0.933" } + { azure3 } @Yield { rgb "0.757 0.804 0.804" } + { azure4 } @Yield { rgb "0.514 0.545 0.545" } + { slateblue1 } @Yield { rgb "0.514 0.435 1.000" } + { slateblue2 } @Yield { rgb "0.478 0.404 0.933" } + { slateblue3 } @Yield { rgb "0.412 0.349 0.804" } + { slateblue4 } @Yield { rgb "0.278 0.235 0.545" } + { royalblue1 } @Yield { rgb "0.282 0.463 1.000" } + { royalblue2 } @Yield { rgb "0.263 0.431 0.933" } + { royalblue3 } @Yield { rgb "0.227 0.373 0.804" } + { royalblue4 } @Yield { rgb "0.153 0.251 0.545" } + { blue1 } @Yield { rgb "0.000 0.000 1.000" } + { blue2 } @Yield { rgb "0.000 0.000 0.933" } + { blue3 } @Yield { rgb "0.000 0.000 0.804" } + { blue4 } @Yield { rgb "0.000 0.000 0.545" } + { dodgerblue1 } @Yield { rgb "0.118 0.565 1.000" } + { dodgerblue2 } @Yield { rgb "0.110 0.525 0.933" } + { dodgerblue3 } @Yield { rgb "0.094 0.455 0.804" } + { dodgerblue4 } @Yield { rgb "0.063 0.306 0.545" } + { steelblue1 } @Yield { rgb "0.388 0.722 1.000" } + { steelblue2 } @Yield { rgb "0.361 0.675 0.933" } + { steelblue3 } @Yield { rgb "0.310 0.580 0.804" } + { steelblue4 } @Yield { rgb "0.212 0.392 0.545" } + { deepskyblue1 } @Yield { rgb "0.000 0.749 1.000" } + { deepskyblue2 } @Yield { rgb "0.000 0.698 0.933" } + { deepskyblue3 } @Yield { rgb "0.000 0.604 0.804" } + { deepskyblue4 } @Yield { rgb "0.000 0.408 0.545" } + { skyblue1 } @Yield { rgb "0.529 0.808 1.000" } + { skyblue2 } @Yield { rgb "0.494 0.753 0.933" } + { skyblue3 } @Yield { rgb "0.424 0.651 0.804" } + { skyblue4 } @Yield { rgb "0.290 0.439 0.545" } + { lightskyblue1 } @Yield { rgb "0.690 0.886 1.000" } + { lightskyblue2 } @Yield { rgb "0.643 0.827 0.933" } + { lightskyblue3 } @Yield { rgb "0.553 0.714 0.804" } + { lightskyblue4 } @Yield { rgb "0.376 0.482 0.545" } + { slategray1 } @Yield { rgb "0.776 0.886 1.000" } + { slategray2 } @Yield { rgb "0.725 0.827 0.933" } + { slategray3 } @Yield { rgb "0.624 0.714 0.804" } + { slategray4 } @Yield { rgb "0.424 0.482 0.545" } + { lightsteelblue1 } @Yield { rgb "0.792 0.882 1.000" } + { lightsteelblue2 } @Yield { rgb "0.737 0.824 0.933" } + { lightsteelblue3 } @Yield { rgb "0.635 0.710 0.804" } + { lightsteelblue4 } @Yield { rgb "0.431 0.482 0.545" } + { lightblue1 } @Yield { rgb "0.749 0.937 1.000" } + { lightblue2 } @Yield { rgb "0.698 0.875 0.933" } + { lightblue3 } @Yield { rgb "0.604 0.753 0.804" } + { lightblue4 } @Yield { rgb "0.408 0.514 0.545" } + { lightcyan1 } @Yield { rgb "0.878 1.000 1.000" } + { lightcyan2 } @Yield { rgb "0.820 0.933 0.933" } + { lightcyan3 } @Yield { rgb "0.706 0.804 0.804" } + { lightcyan4 } @Yield { rgb "0.478 0.545 0.545" } + { paleturquoise1 } @Yield { rgb "0.733 1.000 1.000" } + { paleturquoise2 } @Yield { rgb "0.682 0.933 0.933" } + { paleturquoise3 } @Yield { rgb "0.588 0.804 0.804" } + { paleturquoise4 } @Yield { rgb "0.400 0.545 0.545" } + { cadetblue1 } @Yield { rgb "0.596 0.961 1.000" } + { cadetblue2 } @Yield { rgb "0.557 0.898 0.933" } + { cadetblue3 } @Yield { rgb "0.478 0.773 0.804" } + { cadetblue4 } @Yield { rgb "0.325 0.525 0.545" } + { turquoise1 } @Yield { rgb "0.000 0.961 1.000" } + { turquoise2 } @Yield { rgb "0.000 0.898 0.933" } + { turquoise3 } @Yield { rgb "0.000 0.773 0.804" } + { turquoise4 } @Yield { rgb "0.000 0.525 0.545" } + { cyan1 } @Yield { rgb "0.000 1.000 1.000" } + { cyan2 } @Yield { rgb "0.000 0.933 0.933" } + { cyan3 } @Yield { rgb "0.000 0.804 0.804" } + { cyan4 } @Yield { rgb "0.000 0.545 0.545" } + { darkslategray1 } @Yield { rgb "0.592 1.000 1.000" } + { darkslategray2 } @Yield { rgb "0.553 0.933 0.933" } + { darkslategray3 } @Yield { rgb "0.475 0.804 0.804" } + { darkslategray4 } @Yield { rgb "0.322 0.545 0.545" } + { aquamarine1 } @Yield { rgb "0.498 1.000 0.831" } + { aquamarine2 } @Yield { rgb "0.463 0.933 0.776" } + { aquamarine3 } @Yield { rgb "0.400 0.804 0.667" } + { aquamarine4 } @Yield { rgb "0.271 0.545 0.455" } + { darkseagreen1 } @Yield { rgb "0.757 1.000 0.757" } + { darkseagreen2 } @Yield { rgb "0.706 0.933 0.706" } + { darkseagreen3 } @Yield { rgb "0.608 0.804 0.608" } + { darkseagreen4 } @Yield { rgb "0.412 0.545 0.412" } + { seagreen1 } @Yield { rgb "0.329 1.000 0.624" } + { seagreen2 } @Yield { rgb "0.306 0.933 0.580" } + { seagreen3 } @Yield { rgb "0.263 0.804 0.502" } + { seagreen4 } @Yield { rgb "0.180 0.545 0.341" } + { palegreen1 } @Yield { rgb "0.604 1.000 0.604" } + { palegreen2 } @Yield { rgb "0.565 0.933 0.565" } + { palegreen3 } @Yield { rgb "0.486 0.804 0.486" } + { palegreen4 } @Yield { rgb "0.329 0.545 0.329" } + { springgreen1 } @Yield { rgb "0.000 1.000 0.498" } + { springgreen2 } @Yield { rgb "0.000 0.933 0.463" } + { springgreen3 } @Yield { rgb "0.000 0.804 0.400" } + { springgreen4 } @Yield { rgb "0.000 0.545 0.271" } + { green1 } @Yield { rgb "0.000 1.000 0.000" } + { green2 } @Yield { rgb "0.000 0.933 0.000" } + { green3 } @Yield { rgb "0.000 0.804 0.000" } + { green4 } @Yield { rgb "0.000 0.545 0.000" } + { chartreuse1 } @Yield { rgb "0.498 1.000 0.000" } + { chartreuse2 } @Yield { rgb "0.463 0.933 0.000" } + { chartreuse3 } @Yield { rgb "0.400 0.804 0.000" } + { chartreuse4 } @Yield { rgb "0.271 0.545 0.000" } + { olivedrab1 } @Yield { rgb "0.753 1.000 0.243" } + { olivedrab2 } @Yield { rgb "0.702 0.933 0.227" } + { olivedrab3 } @Yield { rgb "0.604 0.804 0.196" } + { olivedrab4 } @Yield { rgb "0.412 0.545 0.133" } + { darkolivegreen1 } @Yield { rgb "0.792 1.000 0.439" } + { darkolivegreen2 } @Yield { rgb "0.737 0.933 0.408" } + { darkolivegreen3 } @Yield { rgb "0.635 0.804 0.353" } + { darkolivegreen4 } @Yield { rgb "0.431 0.545 0.239" } + { khaki1 } @Yield { rgb "1.000 0.965 0.561" } + { khaki2 } @Yield { rgb "0.933 0.902 0.522" } + { khaki3 } @Yield { rgb "0.804 0.776 0.451" } + { khaki4 } @Yield { rgb "0.545 0.525 0.306" } + { lightgoldenrod1 } @Yield { rgb "1.000 0.925 0.545" } + { lightgoldenrod2 } @Yield { rgb "0.933 0.863 0.510" } + { lightgoldenrod3 } @Yield { rgb "0.804 0.745 0.439" } + { lightgoldenrod4 } @Yield { rgb "0.545 0.506 0.298" } + { lightyellow1 } @Yield { rgb "1.000 1.000 0.878" } + { lightyellow2 } @Yield { rgb "0.933 0.933 0.820" } + { lightyellow3 } @Yield { rgb "0.804 0.804 0.706" } + { lightyellow4 } @Yield { rgb "0.545 0.545 0.478" } + { yellow1 } @Yield { rgb "1.000 1.000 0.000" } + { yellow2 } @Yield { rgb "0.933 0.933 0.000" } + { yellow3 } @Yield { rgb "0.804 0.804 0.000" } + { yellow4 } @Yield { rgb "0.545 0.545 0.000" } + { gold1 } @Yield { rgb "1.000 0.843 0.000" } + { gold2 } @Yield { rgb "0.933 0.788 0.000" } + { gold3 } @Yield { rgb "0.804 0.678 0.000" } + { gold4 } @Yield { rgb "0.545 0.459 0.000" } + { goldenrod1 } @Yield { rgb "1.000 0.757 0.145" } + { goldenrod2 } @Yield { rgb "0.933 0.706 0.133" } + { goldenrod3 } @Yield { rgb "0.804 0.608 0.114" } + { goldenrod4 } @Yield { rgb "0.545 0.412 0.078" } + { darkgoldenrod1 } @Yield { rgb "1.000 0.725 0.059" } + { darkgoldenrod2 } @Yield { rgb "0.933 0.678 0.055" } + { darkgoldenrod3 } @Yield { rgb "0.804 0.584 0.047" } + { darkgoldenrod4 } @Yield { rgb "0.545 0.396 0.031" } + { rosybrown1 } @Yield { rgb "1.000 0.757 0.757" } + { rosybrown2 } @Yield { rgb "0.933 0.706 0.706" } + { rosybrown3 } @Yield { rgb "0.804 0.608 0.608" } + { rosybrown4 } @Yield { rgb "0.545 0.412 0.412" } + { indianred1 } @Yield { rgb "1.000 0.416 0.416" } + { indianred2 } @Yield { rgb "0.933 0.388 0.388" } + { indianred3 } @Yield { rgb "0.804 0.333 0.333" } + { indianred4 } @Yield { rgb "0.545 0.227 0.227" } + { sienna1 } @Yield { rgb "1.000 0.510 0.278" } + { sienna2 } @Yield { rgb "0.933 0.475 0.259" } + { sienna3 } @Yield { rgb "0.804 0.408 0.224" } + { sienna4 } @Yield { rgb "0.545 0.278 0.149" } + { burlywood1 } @Yield { rgb "1.000 0.827 0.608" } + { burlywood2 } @Yield { rgb "0.933 0.773 0.569" } + { burlywood3 } @Yield { rgb "0.804 0.667 0.490" } + { burlywood4 } @Yield { rgb "0.545 0.451 0.333" } + { wheat1 } @Yield { rgb "1.000 0.906 0.729" } + { wheat2 } @Yield { rgb "0.933 0.847 0.682" } + { wheat3 } @Yield { rgb "0.804 0.729 0.588" } + { wheat4 } @Yield { rgb "0.545 0.494 0.400" } + { tan1 } @Yield { rgb "1.000 0.647 0.310" } + { tan2 } @Yield { rgb "0.933 0.604 0.286" } + { tan3 } @Yield { rgb "0.804 0.522 0.247" } + { tan4 } @Yield { rgb "0.545 0.353 0.169" } + { chocolate1 } @Yield { rgb "1.000 0.498 0.141" } + { chocolate2 } @Yield { rgb "0.933 0.463 0.129" } + { chocolate3 } @Yield { rgb "0.804 0.400 0.114" } + { chocolate4 } @Yield { rgb "0.545 0.271 0.075" } + { firebrick1 } @Yield { rgb "1.000 0.188 0.188" } + { firebrick2 } @Yield { rgb "0.933 0.173 0.173" } + { firebrick3 } @Yield { rgb "0.804 0.149 0.149" } + { firebrick4 } @Yield { rgb "0.545 0.102 0.102" } + { brown1 } @Yield { rgb "1.000 0.251 0.251" } + { brown2 } @Yield { rgb "0.933 0.231 0.231" } + { brown3 } @Yield { rgb "0.804 0.200 0.200" } + { brown4 } @Yield { rgb "0.545 0.137 0.137" } + { salmon1 } @Yield { rgb "1.000 0.549 0.412" } + { salmon2 } @Yield { rgb "0.933 0.510 0.384" } + { salmon3 } @Yield { rgb "0.804 0.439 0.329" } + { salmon4 } @Yield { rgb "0.545 0.298 0.224" } + { lightsalmon1 } @Yield { rgb "1.000 0.627 0.478" } + { lightsalmon2 } @Yield { rgb "0.933 0.584 0.447" } + { lightsalmon3 } @Yield { rgb "0.804 0.506 0.384" } + { lightsalmon4 } @Yield { rgb "0.545 0.341 0.259" } + { orange1 } @Yield { rgb "1.000 0.647 0.000" } + { orange2 } @Yield { rgb "0.933 0.604 0.000" } + { orange3 } @Yield { rgb "0.804 0.522 0.000" } + { orange4 } @Yield { rgb "0.545 0.353 0.000" } + { darkorange1 } @Yield { rgb "1.000 0.498 0.000" } + { darkorange2 } @Yield { rgb "0.933 0.463 0.000" } + { darkorange3 } @Yield { rgb "0.804 0.400 0.000" } + { darkorange4 } @Yield { rgb "0.545 0.271 0.000" } + { coral1 } @Yield { rgb "1.000 0.447 0.337" } + { coral2 } @Yield { rgb "0.933 0.416 0.314" } + { coral3 } @Yield { rgb "0.804 0.357 0.271" } + { coral4 } @Yield { rgb "0.545 0.243 0.184" } + { tomato1 } @Yield { rgb "1.000 0.388 0.278" } + { tomato2 } @Yield { rgb "0.933 0.361 0.259" } + { tomato3 } @Yield { rgb "0.804 0.310 0.224" } + { tomato4 } @Yield { rgb "0.545 0.212 0.149" } + { orangered1 } @Yield { rgb "1.000 0.271 0.000" } + { orangered2 } @Yield { rgb "0.933 0.251 0.000" } + { orangered3 } @Yield { rgb "0.804 0.216 0.000" } + { orangered4 } @Yield { rgb "0.545 0.145 0.000" } + { red1 } @Yield { rgb "1.000 0.000 0.000" } + { red2 } @Yield { rgb "0.933 0.000 0.000" } + { red3 } @Yield { rgb "0.804 0.000 0.000" } + { red4 } @Yield { rgb "0.545 0.000 0.000" } + { deeppink1 } @Yield { rgb "1.000 0.078 0.576" } + { deeppink2 } @Yield { rgb "0.933 0.071 0.537" } + { deeppink3 } @Yield { rgb "0.804 0.063 0.463" } + { deeppink4 } @Yield { rgb "0.545 0.039 0.314" } + { hotpink1 } @Yield { rgb "1.000 0.431 0.706" } + { hotpink2 } @Yield { rgb "0.933 0.416 0.655" } + { hotpink3 } @Yield { rgb "0.804 0.376 0.565" } + { hotpink4 } @Yield { rgb "0.545 0.227 0.384" } + { pink1 } @Yield { rgb "1.000 0.710 0.773" } + { pink2 } @Yield { rgb "0.933 0.663 0.722" } + { pink3 } @Yield { rgb "0.804 0.569 0.620" } + { pink4 } @Yield { rgb "0.545 0.388 0.424" } + { lightpink1 } @Yield { rgb "1.000 0.682 0.725" } + { lightpink2 } @Yield { rgb "0.933 0.635 0.678" } + { lightpink3 } @Yield { rgb "0.804 0.549 0.584" } + { lightpink4 } @Yield { rgb "0.545 0.373 0.396" } + { palevioletred1 } @Yield { rgb "1.000 0.510 0.671" } + { palevioletred2 } @Yield { rgb "0.933 0.475 0.624" } + { palevioletred3 } @Yield { rgb "0.804 0.408 0.537" } + { palevioletred4 } @Yield { rgb "0.545 0.278 0.365" } + { maroon1 } @Yield { rgb "1.000 0.204 0.702" } + { maroon2 } @Yield { rgb "0.933 0.188 0.655" } + { maroon3 } @Yield { rgb "0.804 0.161 0.565" } + { maroon4 } @Yield { rgb "0.545 0.110 0.384" } + { violetred1 } @Yield { rgb "1.000 0.243 0.588" } + { violetred2 } @Yield { rgb "0.933 0.227 0.549" } + { violetred3 } @Yield { rgb "0.804 0.196 0.471" } + { violetred4 } @Yield { rgb "0.545 0.133 0.322" } + { magenta1 } @Yield { rgb "1.000 0.000 1.000" } + { magenta2 } @Yield { rgb "0.933 0.000 0.933" } + { magenta3 } @Yield { rgb "0.804 0.000 0.804" } + { magenta4 } @Yield { rgb "0.545 0.000 0.545" } + { orchid1 } @Yield { rgb "1.000 0.514 0.980" } + { orchid2 } @Yield { rgb "0.933 0.478 0.914" } + { orchid3 } @Yield { rgb "0.804 0.412 0.788" } + { orchid4 } @Yield { rgb "0.545 0.278 0.537" } + { plum1 } @Yield { rgb "1.000 0.733 1.000" } + { plum2 } @Yield { rgb "0.933 0.682 0.933" } + { plum3 } @Yield { rgb "0.804 0.588 0.804" } + { plum4 } @Yield { rgb "0.545 0.400 0.545" } + { mediumorchid1 } @Yield { rgb "0.878 0.400 1.000" } + { mediumorchid2 } @Yield { rgb "0.820 0.373 0.933" } + { mediumorchid3 } @Yield { rgb "0.706 0.322 0.804" } + { mediumorchid4 } @Yield { rgb "0.478 0.216 0.545" } + { darkorchid1 } @Yield { rgb "0.749 0.243 1.000" } + { darkorchid2 } @Yield { rgb "0.698 0.227 0.933" } + { darkorchid3 } @Yield { rgb "0.604 0.196 0.804" } + { darkorchid4 } @Yield { rgb "0.408 0.133 0.545" } + { purple1 } @Yield { rgb "0.608 0.188 1.000" } + { purple2 } @Yield { rgb "0.569 0.173 0.933" } + { purple3 } @Yield { rgb "0.490 0.149 0.804" } + { purple4 } @Yield { rgb "0.333 0.102 0.545" } + { mediumpurple1 } @Yield { rgb "0.671 0.510 1.000" } + { mediumpurple2 } @Yield { rgb "0.624 0.475 0.933" } + { mediumpurple3 } @Yield { rgb "0.537 0.408 0.804" } + { mediumpurple4 } @Yield { rgb "0.365 0.278 0.545" } + { thistle1 } @Yield { rgb "1.000 0.882 1.000" } + { thistle2 } @Yield { rgb "0.933 0.824 0.933" } + { thistle3 } @Yield { rgb "0.804 0.710 0.804" } + { thistle4 } @Yield { rgb "0.545 0.482 0.545" } + { gray0 } @Yield { rgb "0.000 0.000 0.000" } + { grey0 } @Yield { rgb "0.000 0.000 0.000" } + { gray1 } @Yield { rgb "0.012 0.012 0.012" } + { grey1 } @Yield { rgb "0.012 0.012 0.012" } + { gray2 } @Yield { rgb "0.020 0.020 0.020" } + { grey2 } @Yield { rgb "0.020 0.020 0.020" } + { gray3 } @Yield { rgb "0.031 0.031 0.031" } + { grey3 } @Yield { rgb "0.031 0.031 0.031" } + { gray4 } @Yield { rgb "0.039 0.039 0.039" } + { grey4 } @Yield { rgb "0.039 0.039 0.039" } + { gray5 } @Yield { rgb "0.051 0.051 0.051" } + { grey5 } @Yield { rgb "0.051 0.051 0.051" } + { gray6 } @Yield { rgb "0.059 0.059 0.059" } + { grey6 } @Yield { rgb "0.059 0.059 0.059" } + { gray7 } @Yield { rgb "0.071 0.071 0.071" } + { grey7 } @Yield { rgb "0.071 0.071 0.071" } + { gray8 } @Yield { rgb "0.078 0.078 0.078" } + { grey8 } @Yield { rgb "0.078 0.078 0.078" } + { gray9 } @Yield { rgb "0.090 0.090 0.090" } + { grey9 } @Yield { rgb "0.090 0.090 0.090" } + { gray10 } @Yield { rgb "0.102 0.102 0.102" } + { grey10 } @Yield { rgb "0.102 0.102 0.102" } + { gray11 } @Yield { rgb "0.110 0.110 0.110" } + { grey11 } @Yield { rgb "0.110 0.110 0.110" } + { gray12 } @Yield { rgb "0.122 0.122 0.122" } + { grey12 } @Yield { rgb "0.122 0.122 0.122" } + { gray13 } @Yield { rgb "0.129 0.129 0.129" } + { grey13 } @Yield { rgb "0.129 0.129 0.129" } + { gray14 } @Yield { rgb "0.141 0.141 0.141" } + { grey14 } @Yield { rgb "0.141 0.141 0.141" } + { gray15 } @Yield { rgb "0.149 0.149 0.149" } + { grey15 } @Yield { rgb "0.149 0.149 0.149" } + { gray16 } @Yield { rgb "0.161 0.161 0.161" } + { grey16 } @Yield { rgb "0.161 0.161 0.161" } + { gray17 } @Yield { rgb "0.169 0.169 0.169" } + { grey17 } @Yield { rgb "0.169 0.169 0.169" } + { gray18 } @Yield { rgb "0.180 0.180 0.180" } + { grey18 } @Yield { rgb "0.180 0.180 0.180" } + { gray19 } @Yield { rgb "0.188 0.188 0.188" } + { grey19 } @Yield { rgb "0.188 0.188 0.188" } + { gray20 } @Yield { rgb "0.200 0.200 0.200" } + { grey20 } @Yield { rgb "0.200 0.200 0.200" } + { gray21 } @Yield { rgb "0.212 0.212 0.212" } + { grey21 } @Yield { rgb "0.212 0.212 0.212" } + { gray22 } @Yield { rgb "0.220 0.220 0.220" } + { grey22 } @Yield { rgb "0.220 0.220 0.220" } + { gray23 } @Yield { rgb "0.231 0.231 0.231" } + { grey23 } @Yield { rgb "0.231 0.231 0.231" } + { gray24 } @Yield { rgb "0.239 0.239 0.239" } + { grey24 } @Yield { rgb "0.239 0.239 0.239" } + { gray25 } @Yield { rgb "0.251 0.251 0.251" } + { grey25 } @Yield { rgb "0.251 0.251 0.251" } + { gray26 } @Yield { rgb "0.259 0.259 0.259" } + { grey26 } @Yield { rgb "0.259 0.259 0.259" } + { gray27 } @Yield { rgb "0.271 0.271 0.271" } + { grey27 } @Yield { rgb "0.271 0.271 0.271" } + { gray28 } @Yield { rgb "0.278 0.278 0.278" } + { grey28 } @Yield { rgb "0.278 0.278 0.278" } + { gray29 } @Yield { rgb "0.290 0.290 0.290" } + { grey29 } @Yield { rgb "0.290 0.290 0.290" } + { gray30 } @Yield { rgb "0.302 0.302 0.302" } + { grey30 } @Yield { rgb "0.302 0.302 0.302" } + { gray31 } @Yield { rgb "0.310 0.310 0.310" } + { grey31 } @Yield { rgb "0.310 0.310 0.310" } + { gray32 } @Yield { rgb "0.322 0.322 0.322" } + { grey32 } @Yield { rgb "0.322 0.322 0.322" } + { gray33 } @Yield { rgb "0.329 0.329 0.329" } + { grey33 } @Yield { rgb "0.329 0.329 0.329" } + { gray34 } @Yield { rgb "0.341 0.341 0.341" } + { grey34 } @Yield { rgb "0.341 0.341 0.341" } + { gray35 } @Yield { rgb "0.349 0.349 0.349" } + { grey35 } @Yield { rgb "0.349 0.349 0.349" } + { gray36 } @Yield { rgb "0.361 0.361 0.361" } + { grey36 } @Yield { rgb "0.361 0.361 0.361" } + { gray37 } @Yield { rgb "0.369 0.369 0.369" } + { grey37 } @Yield { rgb "0.369 0.369 0.369" } + { gray38 } @Yield { rgb "0.380 0.380 0.380" } + { grey38 } @Yield { rgb "0.380 0.380 0.380" } + { gray39 } @Yield { rgb "0.388 0.388 0.388" } + { grey39 } @Yield { rgb "0.388 0.388 0.388" } + { gray40 } @Yield { rgb "0.400 0.400 0.400" } + { grey40 } @Yield { rgb "0.400 0.400 0.400" } + { gray41 } @Yield { rgb "0.412 0.412 0.412" } + { grey41 } @Yield { rgb "0.412 0.412 0.412" } + { gray42 } @Yield { rgb "0.420 0.420 0.420" } + { grey42 } @Yield { rgb "0.420 0.420 0.420" } + { gray43 } @Yield { rgb "0.431 0.431 0.431" } + { grey43 } @Yield { rgb "0.431 0.431 0.431" } + { gray44 } @Yield { rgb "0.439 0.439 0.439" } + { grey44 } @Yield { rgb "0.439 0.439 0.439" } + { gray45 } @Yield { rgb "0.451 0.451 0.451" } + { grey45 } @Yield { rgb "0.451 0.451 0.451" } + { gray46 } @Yield { rgb "0.459 0.459 0.459" } + { grey46 } @Yield { rgb "0.459 0.459 0.459" } + { gray47 } @Yield { rgb "0.471 0.471 0.471" } + { grey47 } @Yield { rgb "0.471 0.471 0.471" } + { gray48 } @Yield { rgb "0.478 0.478 0.478" } + { grey48 } @Yield { rgb "0.478 0.478 0.478" } + { gray49 } @Yield { rgb "0.490 0.490 0.490" } + { grey49 } @Yield { rgb "0.490 0.490 0.490" } + { gray50 } @Yield { rgb "0.498 0.498 0.498" } + { grey50 } @Yield { rgb "0.498 0.498 0.498" } + { gray51 } @Yield { rgb "0.510 0.510 0.510" } + { grey51 } @Yield { rgb "0.510 0.510 0.510" } + { gray52 } @Yield { rgb "0.522 0.522 0.522" } + { grey52 } @Yield { rgb "0.522 0.522 0.522" } + { gray53 } @Yield { rgb "0.529 0.529 0.529" } + { grey53 } @Yield { rgb "0.529 0.529 0.529" } + { gray54 } @Yield { rgb "0.541 0.541 0.541" } + { grey54 } @Yield { rgb "0.541 0.541 0.541" } + { gray55 } @Yield { rgb "0.549 0.549 0.549" } + { grey55 } @Yield { rgb "0.549 0.549 0.549" } + { gray56 } @Yield { rgb "0.561 0.561 0.561" } + { grey56 } @Yield { rgb "0.561 0.561 0.561" } + { gray57 } @Yield { rgb "0.569 0.569 0.569" } + { grey57 } @Yield { rgb "0.569 0.569 0.569" } + { gray58 } @Yield { rgb "0.580 0.580 0.580" } + { grey58 } @Yield { rgb "0.580 0.580 0.580" } + { gray59 } @Yield { rgb "0.588 0.588 0.588" } + { grey59 } @Yield { rgb "0.588 0.588 0.588" } + { gray60 } @Yield { rgb "0.600 0.600 0.600" } + { grey60 } @Yield { rgb "0.600 0.600 0.600" } + { gray61 } @Yield { rgb "0.612 0.612 0.612" } + { grey61 } @Yield { rgb "0.612 0.612 0.612" } + { gray62 } @Yield { rgb "0.620 0.620 0.620" } + { grey62 } @Yield { rgb "0.620 0.620 0.620" } + { gray63 } @Yield { rgb "0.631 0.631 0.631" } + { grey63 } @Yield { rgb "0.631 0.631 0.631" } + { gray64 } @Yield { rgb "0.639 0.639 0.639" } + { grey64 } @Yield { rgb "0.639 0.639 0.639" } + { gray65 } @Yield { rgb "0.651 0.651 0.651" } + { grey65 } @Yield { rgb "0.651 0.651 0.651" } + { gray66 } @Yield { rgb "0.659 0.659 0.659" } + { grey66 } @Yield { rgb "0.659 0.659 0.659" } + { gray67 } @Yield { rgb "0.671 0.671 0.671" } + { grey67 } @Yield { rgb "0.671 0.671 0.671" } + { gray68 } @Yield { rgb "0.678 0.678 0.678" } + { grey68 } @Yield { rgb "0.678 0.678 0.678" } + { gray69 } @Yield { rgb "0.690 0.690 0.690" } + { grey69 } @Yield { rgb "0.690 0.690 0.690" } + { gray70 } @Yield { rgb "0.702 0.702 0.702" } + { grey70 } @Yield { rgb "0.702 0.702 0.702" } + { gray71 } @Yield { rgb "0.710 0.710 0.710" } + { grey71 } @Yield { rgb "0.710 0.710 0.710" } + { gray72 } @Yield { rgb "0.722 0.722 0.722" } + { grey72 } @Yield { rgb "0.722 0.722 0.722" } + { gray73 } @Yield { rgb "0.729 0.729 0.729" } + { grey73 } @Yield { rgb "0.729 0.729 0.729" } + { gray74 } @Yield { rgb "0.741 0.741 0.741" } + { grey74 } @Yield { rgb "0.741 0.741 0.741" } + { gray75 } @Yield { rgb "0.749 0.749 0.749" } + { grey75 } @Yield { rgb "0.749 0.749 0.749" } + { gray76 } @Yield { rgb "0.761 0.761 0.761" } + { grey76 } @Yield { rgb "0.761 0.761 0.761" } + { gray77 } @Yield { rgb "0.769 0.769 0.769" } + { grey77 } @Yield { rgb "0.769 0.769 0.769" } + { gray78 } @Yield { rgb "0.780 0.780 0.780" } + { grey78 } @Yield { rgb "0.780 0.780 0.780" } + { gray79 } @Yield { rgb "0.788 0.788 0.788" } + { grey79 } @Yield { rgb "0.788 0.788 0.788" } + { gray80 } @Yield { rgb "0.800 0.800 0.800" } + { grey80 } @Yield { rgb "0.800 0.800 0.800" } + { gray81 } @Yield { rgb "0.812 0.812 0.812" } + { grey81 } @Yield { rgb "0.812 0.812 0.812" } + { gray82 } @Yield { rgb "0.820 0.820 0.820" } + { grey82 } @Yield { rgb "0.820 0.820 0.820" } + { gray83 } @Yield { rgb "0.831 0.831 0.831" } + { grey83 } @Yield { rgb "0.831 0.831 0.831" } + { gray84 } @Yield { rgb "0.839 0.839 0.839" } + { grey84 } @Yield { rgb "0.839 0.839 0.839" } + { gray85 } @Yield { rgb "0.851 0.851 0.851" } + { grey85 } @Yield { rgb "0.851 0.851 0.851" } + { gray86 } @Yield { rgb "0.859 0.859 0.859" } + { grey86 } @Yield { rgb "0.859 0.859 0.859" } + { gray87 } @Yield { rgb "0.871 0.871 0.871" } + { grey87 } @Yield { rgb "0.871 0.871 0.871" } + { gray88 } @Yield { rgb "0.878 0.878 0.878" } + { grey88 } @Yield { rgb "0.878 0.878 0.878" } + { gray89 } @Yield { rgb "0.890 0.890 0.890" } + { grey89 } @Yield { rgb "0.890 0.890 0.890" } + { gray90 } @Yield { rgb "0.898 0.898 0.898" } + { grey90 } @Yield { rgb "0.898 0.898 0.898" } + { gray91 } @Yield { rgb "0.910 0.910 0.910" } + { grey91 } @Yield { rgb "0.910 0.910 0.910" } + { gray92 } @Yield { rgb "0.922 0.922 0.922" } + { grey92 } @Yield { rgb "0.922 0.922 0.922" } + { gray93 } @Yield { rgb "0.929 0.929 0.929" } + { grey93 } @Yield { rgb "0.929 0.929 0.929" } + { gray94 } @Yield { rgb "0.941 0.941 0.941" } + { grey94 } @Yield { rgb "0.941 0.941 0.941" } + { gray95 } @Yield { rgb "0.949 0.949 0.949" } + { grey95 } @Yield { rgb "0.949 0.949 0.949" } + { gray96 } @Yield { rgb "0.961 0.961 0.961" } + { grey96 } @Yield { rgb "0.961 0.961 0.961" } + { gray97 } @Yield { rgb "0.969 0.969 0.969" } + { grey97 } @Yield { rgb "0.969 0.969 0.969" } + { gray98 } @Yield { rgb "0.980 0.980 0.980" } + { grey98 } @Yield { rgb "0.980 0.980 0.980" } + { gray99 } @Yield { rgb "0.988 0.988 0.988" } + { grey99 } @Yield { rgb "0.988 0.988 0.988" } + { gray100 } @Yield { rgb "1.000 1.000 1.000" } + { grey100 } @Yield { rgb "1.000 1.000 1.000" } + { darkgrey } @Yield { rgb "0.663 0.663 0.663" } + { darkgray } @Yield { rgb "0.663 0.663 0.663" } + { darkblue } @Yield { rgb "0.000 0.000 0.545" } + { darkcyan } @Yield { rgb "0.000 0.545 0.545" } + { darkmagenta } @Yield { rgb "0.545 0.000 0.545" } + { darkred } @Yield { rgb "0.545 0.000 0.000" } + { lightgreen } @Yield { rgb "0.565 0.933 0.565" } + # else @Yield { rgb "0.000 0.000 0.000" } + } +} diff -u --recursive --new-file -u --recursive --new-file lout-3.26/makefile lout-3.27/makefile --- lout-3.26/makefile Wed Oct 16 09:11:05 2002 +++ lout-3.27/makefile Fri Nov 22 08:48:56 2002 @@ -1,6 +1,6 @@ ############################################################################### # # -# Make file for installing Basser Lout Version 3.26 # +# Make file for installing Basser Lout Version 3.27 # # # # Jeffrey H. Kingston # # undated # @@ -47,7 +47,12 @@ # # # These should appear like this below. # # # -# (3) This may be the trickiest step of all. On some systems, for example # +# (3) This step is about to become obsolete. This version of Lout is not # +# affected by the value of DBFIX, and if beta testing shows that the # +# changes that have made DBFIX unnecessary actually work, then this step # +# will be deleted in subsequent releases. # +# # +# 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 # @@ -270,11 +275,11 @@ USESTAT = 1 SAFEDFT = 0 -# DEBUGGING = 0 -# TRACING = +DEBUGGING = 0 +TRACING = -DEBUGGING = 1 -TRACING = -g +# DEBUGGING = 1 +# TRACING = -g BINDIR = /home/jeff/bin LIBDIR = /home/jeff/lout.lib @@ -306,7 +311,6 @@ RCOPY = cp -r COPTS = -ansi -pedantic -Wall -O3 -# COPTS = -ansi -pedantic -Wall CFLAGS = -DOS_UNIX=$(OSUNIX) \ -DOS_DOS=$(OSDOS) \ @@ -337,7 +341,7 @@ 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 \ - z49.o z50.o z51.o + z49.o z50.o z51.o z52.o lout: $(OBJS) $(CC) -o lout $(OBJS) $(ZLIB) -lm diff -u --recursive --new-file -u --recursive --new-file lout-3.26/maps/LtLatin2.LCM lout-3.27/maps/LtLatin2.LCM --- lout-3.26/maps/LtLatin2.LCM Wed Sep 18 12:22:40 2002 +++ lout-3.27/maps/LtLatin2.LCM Tue Nov 5 18:27:03 2002 @@ -36,6 +36,7 @@ # # # Jeffrey H. Kingston # # 17 March 1996 # +# Modified dcroat/Dcroat 5/11/02 thanks marko@fly.srk.fer.hr # # # # Dec- Octal Character Functions ... # # imal code name # @@ -251,7 +252,7 @@ 205 315 Iacute LC iacute; UA I; AC acute; 206 316 Icircumflex LC icircumflex; UA I; AC circumflex; 207 317 Dcaron LC dcaron; UA D; AC caron; -208 320 Dcroat LC dcroat; +208 320 Dcroat LC dcroat; UA D; 209 321 Nacute LC nacute; UA N; AC acute; 210 322 Ncaron LC ncaron; UA N; AC caron; 211 323 Oacute LC oacute; UA O; AC acute; @@ -283,7 +284,7 @@ 237 355 iacute UC Iacute; UA dotlessi; AC acute; 238 356 icircumflex UC Icircumflex; UA dotlessi; AC circumflex; 239 357 dcaron UC Dcaron; UA d; AC caron; -240 360 dcroat UC Dcroat; +240 360 dcroat UC Dcroat; UA d; 241 361 nacute UC Nacute; UA n; AC acute; 242 362 ncaron UC Ncaron; UA n; AC caron; 243 363 oacute UC Oacute; UA o; AC acute; diff -u --recursive --new-file -u --recursive --new-file lout-3.26/notes.dsc lout-3.27/notes.dsc --- lout-3.26/notes.dsc Wed Sep 18 12:22:41 2002 +++ lout-3.27/notes.dsc Thu Jan 1 10:00:00 1970 @@ -1,75 +0,0 @@ -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 -Conventions (DSC), as given in Appendix G of the PostScript Language -Reference Manual, second edition (PLRM). Page numbers refer to PLRM. -These are minor infringements which should not trouble anyone (I hope). -Please let me know of any problems. - -Language level and extensions. Lout does not produce %%LanguageLevel and -%%Extensions comments, implying that its output is Level 1 PostScript with -no extensions (p644). This is true except for PostScript which user-level -commands choose to add via @SetColour, @Graphic, @IncludeGraphic, and -@PrependGraphic commands. If this added PostScript is not Level 1 then -the absence of %%LanguageLevel and %%Extensions comments will be in -violation of the DSC. Lout's standard packages use only Level 1, which -should take care of most of the @SetColour, @Graphic, and @PrependGraphic -commands encountered in practice. If a %%LanguageLevel or %%Extensions -comment is encountered in an @IncludeGraphic file, Lout prints a warning -message but takes no other action. - -Color separation conventions (pp685-688). At present Lout generates none -of the comments described in this section. - -DocumentSuppliedResources. According to p671, each included document -(%%Begin(End)Document pair in PostScript, @IncludeGraphic file in Lout) -should have a corresponding "%%DocumentSuppliedResources: file" entry. -This contradicts p660, where each %%DocumentSuppliedResources entry is -said to correspond to a %%Begin(End)Resource pair. Lout does not record -%%Begin(End)Document pairs in the %%DocumentSuppliedResources list. - -EOF. According to p673, the %%EOF comment of an included document (i.e. -one enclosed in %%Begin(End)Document) will be ignored. However, p658 -does not mention this exception, and one Adobe PostScript interpreter at -least in the author's environment terminates at the first %%EOF whether -or not it lies inside %%Begin(End)Document. Accordingly, Lout strips -out any %%EOF comment within any included document during inclusion. - -Font inclusion. According to p678, "%%IncludeResource: font" comments -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. (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 -Lout lists fonts but not encoding vectors under this comment. - -Definitions in EPS files. On p736, "it is strongly recommended that an -EPS file make its definitions in its own dictionary or dictionaries". -Lout -EPS does not follow this recommendation, since it is not clear where -to create this dictionary or dictionaries, given that the DSC states (p625) -that the prolog should be a sequence of procset definitions (after the -header section and defaults section) only. Perhaps each procset should be -in its own dictionary, as is done in lout/include/fig_prepend for example, -but this is not stated anywhere. diff -u --recursive --new-file -u --recursive --new-file lout-3.26/notes_dsc lout-3.27/notes_dsc --- lout-3.26/notes_dsc Thu Jan 1 10:00:00 1970 +++ lout-3.27/notes_dsc Wed Sep 18 12:22:41 2002 @@ -0,0 +1,75 @@ +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 +Conventions (DSC), as given in Appendix G of the PostScript Language +Reference Manual, second edition (PLRM). Page numbers refer to PLRM. +These are minor infringements which should not trouble anyone (I hope). +Please let me know of any problems. + +Language level and extensions. Lout does not produce %%LanguageLevel and +%%Extensions comments, implying that its output is Level 1 PostScript with +no extensions (p644). This is true except for PostScript which user-level +commands choose to add via @SetColour, @Graphic, @IncludeGraphic, and +@PrependGraphic commands. If this added PostScript is not Level 1 then +the absence of %%LanguageLevel and %%Extensions comments will be in +violation of the DSC. Lout's standard packages use only Level 1, which +should take care of most of the @SetColour, @Graphic, and @PrependGraphic +commands encountered in practice. If a %%LanguageLevel or %%Extensions +comment is encountered in an @IncludeGraphic file, Lout prints a warning +message but takes no other action. + +Color separation conventions (pp685-688). At present Lout generates none +of the comments described in this section. + +DocumentSuppliedResources. According to p671, each included document +(%%Begin(End)Document pair in PostScript, @IncludeGraphic file in Lout) +should have a corresponding "%%DocumentSuppliedResources: file" entry. +This contradicts p660, where each %%DocumentSuppliedResources entry is +said to correspond to a %%Begin(End)Resource pair. Lout does not record +%%Begin(End)Document pairs in the %%DocumentSuppliedResources list. + +EOF. According to p673, the %%EOF comment of an included document (i.e. +one enclosed in %%Begin(End)Document) will be ignored. However, p658 +does not mention this exception, and one Adobe PostScript interpreter at +least in the author's environment terminates at the first %%EOF whether +or not it lies inside %%Begin(End)Document. Accordingly, Lout strips +out any %%EOF comment within any included document during inclusion. + +Font inclusion. According to p678, "%%IncludeResource: font" comments +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. (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 +Lout lists fonts but not encoding vectors under this comment. + +Definitions in EPS files. On p736, "it is strongly recommended that an +EPS file make its definitions in its own dictionary or dictionaries". +Lout -EPS does not follow this recommendation, since it is not clear where +to create this dictionary or dictionaries, given that the DSC states (p625) +that the prolog should be a sequence of procset definitions (after the +header section and defaults section) only. Perhaps each procset should be +in its own dictionary, as is done in lout/include/fig_prepend for example, +but this is not stated anywhere. diff -u --recursive --new-file -u --recursive --new-file lout-3.26/prg2lout.c lout-3.27/prg2lout.c --- lout-3.26/prg2lout.c Wed Oct 16 09:29:58 2002 +++ lout-3.27/prg2lout.c Fri Nov 22 08:49:36 2002 @@ -4,7 +4,7 @@ /* PRG2LOUT: A PROGRAM TO CONVERT PROGRAM SOURCES INTO LOUT */ /* COPYRIGHT (C) 2000 Jeffrey H. Kingston */ /* */ -/* Version 2.2, 17 September 2001 */ +/* Version 2.3, November 2002 */ /* */ /* Jeffrey H. Kingston (jeff@cs.su.oz.au) */ /* Basser Department of Computer Science */ @@ -134,11 +134,13 @@ #include #include +#include #define FALSE 0 #define TRUE 1 #define BOOLEAN unsigned #define MAX_CHAR 256 #define is_whitespace(ch) ((ch)==' ' || (ch)=='\t' || (ch)=='\n' || (ch)=='\f') +#define U (unsigned char *) /*****************************************************************************/ /* */ @@ -165,15 +167,15 @@ /*****************************************************************************/ typedef struct { - char *first; - char *second; + unsigned char *first; + unsigned char *second; } CHAR_PAIR; CHAR_PAIR pairs[] = { - { "(", ")" }, - { "{", "}" }, - { "[", "]" }, - { "<", ">" }, + { (unsigned char *) "(", (unsigned char *) ")" }, + { (unsigned char *) "{", (unsigned char *) "}" }, + { (unsigned char *) "[", (unsigned char *) "]" }, + { (unsigned char *) "<", (unsigned char *) ">" }, { NULL, NULL } }; @@ -189,60 +191,68 @@ #define AllCharacters NULL /* code will recognize NULL and do this */ -char AllPrintable[] = +unsigned char AllPrintable[] = " !\"#$%&'()*+,-./0123456789:;<=>?@[\\]^_`\\{|}~\ ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" ; -char AllPrintablePlusNL[] = +unsigned char AllPrintablePlusNL[] = " !\"#$%&'()*+,-./0123456789:;<=>?@[\\]^_`\\{|}~\ ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\n" ; -char AllPrintablePlusTab[] = +unsigned char AllPrintablePlusTab[] = " !\"#$%&'()*+,-./0123456789:;<=>?@[\\]^_`\\{|}~\ ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\t" ; -char AllPrintableTabNL[] = +unsigned char AllPrintableTabNL[] = " !\"#$%&'()*+,-./0123456789:;<=>?@[\\]^_`\\{|}~\ ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\n\t" ; -char AllPrintableTabNLFF[] = +unsigned char AllPrintableTabNLFF[] = " !\"#$%&'()*+,-./0123456789:;<=>?@[\\]^_`\\{|}~\ ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\n\t\f" ; -char Letters[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" ; +unsigned char Letters[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" ; -char Letter_Digit[] = +unsigned char Letter_Digit[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789" ; #define SepLetters \ -"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", \ -"N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", \ -"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", \ -"n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z" - -#define SepDigits "0", "1", "2", "3", "4", "5", "6", "7", "8", "9" - -#define HexDigits "A", "a", "B", "b", "C", "c", "D", "d", "E", "e", "F", "f" - -#define SepPunct "/", "(", "[", "{", "<", "!", "%", "#", "|", ",", \ - ":", ";", "$", "\"","^", "&", "*", "-", "=", "+", \ - "~", "'", "@", "?", ".", "`" - -#define BktPunct "", "(", "[", "{", "<", "", "", "", "", "", \ - "", "", "", "", "", "", "", "", "", "", \ - "", "", "", "", "", "" - -#define EndPunct "/", ")", "]", "}", ">", "!", "%", "#", "|", ",", \ - ":", ";", "$", "\"","^", "&", "*", "-", "=", "+", \ - "~", "'", "@", "?", ".", "`" +U "A", U "B", U "C", U "D", U "E", U "F", U "G", U "H", U "I", U "J", \ +U "K", U "L", U "M", U "N", U "O", U "P", U "Q", U "R", U "S", U "T", \ +U "U", U "V", U "W", U "X", U "Y", U "Z", \ +U "a", U "b", U "c", U "d", U "e", U "f", U "g", U "h", U "i", U "j", \ +U "k", U "l", U "m", U "n", U "o", U "p", U "q", U "r", U "s", U "t", \ +U "u", U "v", U "w", U "x", U "y", U "z" + +#define SepDigits \ +U "0", U "1", U "2", U "3", U "4", U "5", U "6", U "7", U "8", U "9" + +#define HexDigits \ +U "A", U "a", U "B", U "b", U "C", U "c", U "D", U "d", U "E", U "e", \ +U "F", U "f" + +#define SepPunct \ +U "/", U "(", U "[", U "{", U "<", U "!", U "%", U "#", U "|", U ",", \ +U ":", U ";", U "$", U "\"", U "^", U "&", U "*", U "-", U "=", U "+", \ +U "~", U "'", U "@", U "?", U ".", U "`" + +#define BktPunct \ +U "", U "(", U "[", U "{", U "<", U "", U "", U "", U "", U "", \ +U "", U "", U "", U "", U "", U "", U "", U "", U "", U "", \ +U "", U "", U "", U "", U "", U "" + +#define EndPunct \ +U "/", U ")", U "]", U "}", U ">", U "!", U "%", U "#", U "|", U ",", \ +U ":", U ";", U "$", U "\"", U "^", U "&", U "*", U "-", U "=", U "+", \ +U "~", U "'", U "@", U "?", U ".", U "`" #define PercentLetters \ -"%A", "%B", "%C", "%D", "%E", "%F", "%G", "%H", "%I", "%J", "%K", \ -"%L", "%M", "%N", "%O", "%P", "%Q", "%R", "%S", "%T", "%U", "%V", \ -"%W", "%X", "%Y", "%Z", \ -"%a", "%b", "%c", "%d", "%e", "%f", "%g", "%h", "%i", "%j", "%k", \ -"%l", "%m", "%n", "%o", "%p", "%q", "%r", "%s", "%t", "%u", "%v", \ -"%w", "%x", "%y", "%z", "%_" +U "%A", U "%B", U "%C", U "%D", U "%E", U "%F", U "%G", U "%H", U "%I", \ +U "%J", U "%K", U "%L", U "%M", U "%N", U "%O", U "%P", U "%Q", U "%R", \ +U "%S", U "%T", U "%U", U "%V", U "%W", U "%X", U "%Y", U "%Z", \ +U "%a", U "%b", U "%c", U "%d", U "%e", U "%f", U "%g", U "%h", U "%i", \ +U "%j", U "%k", U "%l", U "%m", U "%n", U "%o", U "%p", U "%q", U "%r", \ +U "%s", U "%t", U "%u", U "%v", U "%w", U "%x", U "%y", U "%z", U "%_" /*****************************************************************************/ @@ -476,209 +486,211 @@ #define PRINT_COMMAND_ONLY 6 typedef struct token_rec { - char *name; + unsigned char *name; int print_style; - char *command, *alternate_command, *following_command; + unsigned char *command, *alternate_command, *following_command; BOOLEAN start_line_only; - char *starts[MAX_STARTS]; - char *starts2[MAX_STARTS2]; - char *brackets2[MAX_STARTS2]; - char *ends2[MAX_STARTS2]; - char *legal; - char *escape; - char *escape_legal; - char *inner_escape; - char *end_inner_escape; - char *bracket_delimiter; - char *end_delimiter; + unsigned char *starts[MAX_STARTS]; + unsigned char *starts2[MAX_STARTS2]; + unsigned char *brackets2[MAX_STARTS2]; + unsigned char *ends2[MAX_STARTS2]; + unsigned char *legal; + unsigned char *escape; + unsigned char *escape_legal; + unsigned char *inner_escape; + unsigned char *end_inner_escape; + unsigned char *bracket_delimiter; + unsigned char *end_delimiter; BOOLEAN end_start_line_only; BOOLEAN want_two_ends; /* The following options are initialized by the program, so don't you */ - char chtype[MAX_CHAR]; /* character types within token */ - char escape_chtype[MAX_CHAR]; /* character types after escape */ + unsigned char chtype[MAX_CHAR]; /* char types within token */ + unsigned char escape_chtype[MAX_CHAR]; /* char types after escape */ } TOKEN; /*****************************************************************************/ /* */ /* Tokens defining strings and literal characters in non-Perl languages. */ +/* NB "U" is a cast to (unsigned char *) */ /* */ /*****************************************************************************/ TOKEN CStringToken = { - "string", /* used by error messages involving this token */ + U "string", /* used by error messages involving this token */ PRINT_WHOLE_QUOTED, /* print this token in quotes etc. as usual */ - "@PS", /* Lout command for formatting strings */ - "", /* no alternate command */ - "", /* no following command */ + U "@PS", /* Lout command for formatting strings */ + U "", /* no alternate command */ + U "", /* no following command */ FALSE, /* token allowed anywhere, not just start of line */ - { "\"" }, /* strings begin with a " character */ + { U "\"" }, /* strings begin with a " character */ { NULL }, /* no start2 needed */ { NULL }, /* so no brackets2 either */ { NULL }, /* so no end2 either */ AllPrintable, /* inside, any printable is OK */ - "\\", /* within strings, \\ is the escape character */ + U "\\", /* within strings, \\ is the escape character */ AllPrintablePlusNL, /* after escape char, any printable char or nl OK */ - "", /* strings do not permit "inner escapes" */ - "", /* and so there is no end innner escape either */ - "", /* no bracketing delimiter */ - "\"", /* strings end with a " character */ + U "", /* strings do not permit "inner escapes" */ + U "", /* and so there is no end innner escape either */ + U "", /* no bracketing delimiter */ + U "\"", /* strings end with a " character */ FALSE, /* end delimiter does not have to be at line start */ FALSE, /* don't need to see end delimiter twice to stop */ }; TOKEN CCharacterToken = { - "character", /* used by error messages involving this token */ + U "character", /* used by error messages involving this token */ PRINT_WHOLE_QUOTED, /* print this token in quotes etc. as usual */ - "@PC", /* Lout command for formatting characters */ - "", /* no alternate command */ - "", /* no following command */ + U "@PC", /* Lout command for formatting characters */ + U "", /* no alternate command */ + U "", /* no following command */ FALSE, /* token allowed anywhere, not just start of line */ - { "'" }, /* characters begin with a ' character */ + { U "'" }, /* characters begin with a ' character */ { NULL }, /* no start2 needed */ { NULL }, /* so no brackets2 either */ { NULL }, /* so no end2 either */ AllPrintable, /* inside, any printable character is OK */ - "\\", /* within characters, \\ is the escape character */ + U "\\", /* within characters, \\ is the escape character */ AllPrintable, /* after escape char, any printable char is OK */ - "", /* characters do not permit "inner escapes" */ - "", /* and so there is no end innner escape either */ - "", /* no bracketing delimiter */ - "'", /* characters end with a ' character */ + U "", /* characters do not permit "inner escapes" */ + U "", /* and so there is no end innner escape either */ + U "", /* no bracketing delimiter */ + U "'", /* characters end with a ' character */ FALSE, /* end delimiter does not have to be at line start */ FALSE, /* don't need to see end delimiter twice to stop */ }; TOKEN EiffelStringToken = { - "string", /* used by error messages involving this token */ + U "string", /* used by error messages involving this token */ PRINT_WHOLE_QUOTED, /* print this token in quotes etc. as usual */ - "@PS", /* Lout command for formatting strings */ - "", /* no alternate command */ - "", /* no following command */ + U "@PS", /* Lout command for formatting strings */ + U "", /* no alternate command */ + U "", /* no following command */ FALSE, /* token allowed anywhere, not just start of line */ - { "\"" }, /* strings begin with a " character */ + { U "\"" }, /* strings begin with a " character */ { NULL }, /* no start2 needed */ { NULL }, /* so no brackets2 either */ { NULL }, /* so no end2 either */ AllPrintable, /* inside, any printable except " is OK */ - "%", /* within strings, % is the escape character */ - AllPrintable, /* after escape char, any printable char is OK */ "", /* strings do not permit "inner escapes" */ - "", /* and so there is no end innner escape either */ - "", /* no bracketing delimiter */ - "\"", /* strings end with a " character */ + U "%", /* within strings, % is the escape character */ + AllPrintable, /* after escape char, any printable char is OK */ + U "", /* strings do not permit "inner escapes" */ + U "", /* and so there is no end innner escape either */ + U "", /* no bracketing delimiter */ + U "\"", /* strings end with a " character */ FALSE, /* end delimiter does not have to be at line start */ FALSE, /* don't need to see end delimiter twice to stop */ }; TOKEN EiffelCharacterToken = { - "character", /* used by error messages involving this token */ + U "character", /* used by error messages involving this token */ PRINT_WHOLE_QUOTED, /* print this token in quotes etc. as usual */ - "@PC", /* Lout command for formatting characters */ - "", /* no alternate command */ - "", /* no following command */ + U "@PC", /* Lout command for formatting characters */ + U "", /* no alternate command */ + U "", /* no following command */ FALSE, /* token allowed anywhere, not just start of line */ - { "'" }, /* characters begin with a ' character */ + { U "'" }, /* characters begin with a ' character */ { NULL }, /* no start2 needed */ { NULL }, /* so no brackets2 either */ { NULL }, /* so no end2 either */ AllPrintable, /* inside, any printable except ' is OK */ - "%", /* within characters, % is the escape character */ + U "%", /* within characters, % is the escape character */ AllPrintable, /* after escape char, any printable char is OK */ - "", /* characters do not permit "inner escapes" */ - "", /* and so there is no end innner escape either */ - "", /* no bracketing delimiter */ - "'", /* characters end with a ' character */ + U "", /* characters do not permit "inner escapes" */ + U "", /* and so there is no end innner escape either */ + U "", /* no bracketing delimiter */ + U "'", /* characters end with a ' character */ FALSE, /* end delimiter does not have to be at line start */ FALSE, /* don't need to see end delimiter twice to stop */ }; TOKEN PythonDblStringToken = { - "string", /* used by error messages involving this token */ + U "string", /* used by error messages involving this token */ PRINT_WHOLE_QUOTED, /* print this token in quotes etc. as usual */ - "@PS", /* Lout command for formatting strings */ - "", /* no alternate command */ - "", /* no following command */ + U "@PS", /* Lout command for formatting strings */ + U "", /* no alternate command */ + U "", /* no following command */ FALSE, /* token allowed anywhere, not just start of line */ - { "\"" }, /* strings begin with a " character */ + { U "\"" }, /* strings begin with a " character */ { NULL }, /* no start2 needed */ { NULL }, /* so no brackets2 either */ { NULL }, /* so no end2 either */ AllPrintable, /* inside, any printable is OK */ - "\\", /* within strings, \\ is the escape character */ + U "\\", /* within strings, \\ is the escape character */ AllPrintablePlusNL, /* after escape char, any printable char or nl OK */ - "", /* strings do not permit "inner escapes" */ - "", /* and so there is no end innner escape either */ - "", /* no bracketing delimiter */ - "\"", /* strings end with a " character */ + U "", /* strings do not permit "inner escapes" */ + U "", /* and so there is no end innner escape either */ + U "", /* no bracketing delimiter */ + U "\"", /* strings end with a " character */ FALSE, /* end delimiter does not have to be at line start */ FALSE, /* don't need to see end delimiter twice to stop */ }; TOKEN PythonSnglStringToken = { - "string", /* used by error messages involving this token */ + U "string", /* used by error messages involving this token */ PRINT_WHOLE_QUOTED, /* print this token in quotes etc. as usual */ - "@PS", /* Lout command for formatting strings */ - "", /* no alternate command */ - "", /* no following command */ + U "@PS", /* Lout command for formatting strings */ + U "", /* no alternate command */ + U "", /* no following command */ FALSE, /* token allowed anywhere, not just start of line */ - { "'" }, /* strings begin with a ' character */ + { U "'" }, /* strings begin with a ' character */ { NULL }, /* no start2 needed */ { NULL }, /* so no brackets2 either */ { NULL }, /* so no end2 either */ AllPrintable, /* inside, any printable is OK */ - "\\", /* within strings, \\ is the escape character */ + U "\\", /* within strings, \\ is the escape character */ AllPrintablePlusNL, /* after escape char, any printable char or nl OK */ - "", /* strings do not permit "inner escapes" */ - "", /* and so there is no end innner escape either */ - "", /* no bracketing delimiter */ - "'", /* strings end with a ' character */ + U "", /* strings do not permit "inner escapes" */ + U "", /* and so there is no end innner escape either */ + U "", /* no bracketing delimiter */ + U "'", /* strings end with a ' character */ FALSE, /* end delimiter does not have to be at line start */ FALSE, /* don't need to see end delimiter twice to stop */ }; TOKEN PythonTriSnglStringToken = { - "string", /* used by error messages involving this token */ + U "string", /* used by error messages involving this token */ PRINT_WHOLE_QUOTED, /* print this token in quotes etc. as usual */ - "@PS", /* Lout command for formatting strings */ - "", /* no alternate command */ - "", /* no following command */ + U "@PS", /* Lout command for formatting strings */ + U "", /* no alternate command */ + U "", /* no following command */ FALSE, /* token allowed anywhere, not just start of line */ - { "'''" }, /* strings begin with ''' */ + { U "'''" }, /* strings begin with ''' */ { NULL }, /* no start2 needed */ { NULL }, /* so no brackets2 either */ { NULL }, /* so no end2 either */ AllPrintableTabNL, /* inside, any printable is OK */ - "\\", /* within strings, \\ is the escape character */ + U "\\", /* within strings, \\ is the escape character */ AllPrintableTabNL, /* after escape char, any printable char or nl OK */ - "", /* strings do not permit "inner escapes" */ - "", /* and so there is no end innner escape either */ - "", /* no bracketing delimiter */ - "'''", /* strings end with ''' */ + U "", /* strings do not permit "inner escapes" */ + U "", /* and so there is no end innner escape either */ + U "", /* no bracketing delimiter */ + U "'''", /* strings end with ''' */ FALSE, /* end delimiter does not have to be at line start */ FALSE, /* don't need to see end delimiter twice to stop */ }; TOKEN PythonTriDblStringToken = { - "string", /* used by error messages involving this token */ + U "string", /* used by error messages involving this token */ PRINT_WHOLE_QUOTED, /* print this token in quotes etc. as usual */ - "@PS", /* Lout command for formatting strings */ - "", /* no alternate command */ - "", /* no following command */ + U "@PS", /* Lout command for formatting strings */ + U "", /* no alternate command */ + U "", /* no following command */ FALSE, /* token allowed anywhere, not just start of line */ - { "\"\"\"" }, /* strings begin with """ */ + { U "\"\"\"" }, /* strings begin with """ */ { NULL }, /* no start2 needed */ { NULL }, /* so no brackets2 either */ { NULL }, /* so no end2 either */ - AllPrintableTabNL, /* inside, any printable is OK */ - "\\", /* within strings, \\ is the escape character */ + AllPrintableTabNL, /* inside, any printable is OK */ + U "\\", /* within strings, \\ is the escape character */ AllPrintableTabNL, /* after escape char, any printable char or nl OK */ - "", /* strings do not permit "inner escapes" */ - "", /* and so there is no end innner escape either */ - "", /* no bracketing delimiter */ - "\"\"\"", /* strings end with """ */ + U "", /* strings do not permit "inner escapes" */ + U "", /* and so there is no end innner escape either */ + U "", /* no bracketing delimiter */ + U "\"\"\"", /* strings end with """ */ FALSE, /* end delimiter does not have to be at line start */ FALSE, /* don't need to see end delimiter twice to stop */ }; @@ -693,23 +705,23 @@ /*****************************************************************************/ TOKEN IdentifierToken = { - "identifier", /* used by error messages involving this token */ + U "identifier", /* used by error messages involving this token */ PRINT_WHOLE_QUOTED, /* print this token in quotes etc. as usual */ - "@PI", /* Lout command for formatting identifiers */ - "@PK", /* Alternate command (for keywords) */ - "", /* no following command */ + U "@PI", /* Lout command for formatting identifiers */ + U "@PK", /* Alternate command (for keywords) */ + U "", /* no following command */ FALSE, /* token allowed anywhere, not just start of line */ - { SepLetters, "_" }, /* identifiers begin with any letter or _ */ + { SepLetters, U "_" }, /* identifiers begin with any letter or _ */ { NULL }, /* no start2 needed */ { NULL }, /* so no brackets2 either */ { NULL }, /* so no end2 either */ Letter_Digit, /* inside, letters, underscores, digits are OK */ - "", /* no escape character within identifiers */ - "", /* so nothing legal after escape char either */ - "", /* identifiers do not permit "inner escapes" */ - "", /* and so there is no end innner escape either */ - "", /* no bracketing delimiter */ - "", /* identifiers do not end with a delimiter */ + U "", /* no escape character within identifiers */ + U "", /* so nothing legal after escape char either */ + U "", /* identifiers do not permit "inner escapes" */ + U "", /* and so there is no end innner escape either */ + U "", /* no bracketing delimiter */ + U "", /* identifiers do not end with a delimiter */ FALSE, /* end delimiter does not have to be at line start */ FALSE, /* don't need to see end delimiter twice to stop */ }; @@ -722,23 +734,23 @@ /*****************************************************************************/ TOKEN NumberToken = { - "number", /* used by error messages involving this token */ + U "number", /* used by error messages involving this token */ PRINT_WHOLE_QUOTED, /* print this token in quotes etc. as usual */ - "@PN", /* Lout command for formatting numbers */ - "", /* no alternate command */ - "", /* no following command */ + U "@PN", /* Lout command for formatting numbers */ + U "", /* no alternate command */ + U "", /* no following command */ FALSE, /* token allowed anywhere, not just start of line */ { SepDigits }, /* numbers must begin with a digit */ { NULL }, /* no start2 needed */ { NULL }, /* so no brackets2 either */ { NULL }, /* so no end2 either */ - "0123456789.eE", /* inside, digits, decimal point, exponent */ - "", /* no escape character within numbers */ - "", /* so nothing legal after escape char either */ - "", /* numbers do not permit "inner escapes" */ - "", /* and so there is no end innner escape either */ - "", /* no bracketing delimiter */ - "", /* numbers do not end with a delimiter */ + U "0123456789.eE", /* inside, digits, decimal point, exponent */ + U "", /* no escape character within numbers */ + U "", /* so nothing legal after escape char either */ + U "", /* numbers do not permit "inner escapes" */ + U "", /* and so there is no end innner escape either */ + U "", /* no bracketing delimiter */ + U "", /* numbers do not end with a delimiter */ FALSE, /* end delimiter does not have to be at line start */ FALSE, /* don't need to see end delimiter twice to stop */ }; @@ -751,112 +763,112 @@ /*****************************************************************************/ TOKEN CCommentToken = { - "comment", /* used by error messages involving this token */ + U "comment", /* used by error messages involving this token */ PRINT_WHOLE_QUOTED, /* print this token in quotes etc. as usual */ - "@PC", /* Lout command for formatting comments */ - "", /* no alternate command */ - "", /* no following command */ + U "@PC", /* Lout command for formatting comments */ + U "", /* no alternate command */ + U "", /* no following command */ FALSE, /* token allowed anywhere, not just start of line */ - { "/*" }, /* comments begin with this character pair */ + { U "/*" }, /* comments begin with this character pair */ { NULL }, /* no start2 needed */ { NULL }, /* so no brackets2 either */ { NULL }, /* so no end2 either */ AllPrintableTabNLFF, /* inside, any printable char, tab, nl, ff is OK */ - "", /* no escape character within comments */ - "", /* so nothing legal after escape char either */ - "", /* C comments do not permit "inner escapes" */ - "", /* and so there is no end innner escape either */ - "", /* no bracketing delimiter */ - "*/", /* comments end with this character pair */ + U "", /* no escape character within comments */ + U "", /* so nothing legal after escape char either */ + U "", /* C comments do not permit "inner escapes" */ + U "", /* and so there is no end innner escape either */ + U "", /* no bracketing delimiter */ + U "*/", /* comments end with this character pair */ FALSE, /* end delimiter does not have to be at line start */ FALSE, /* don't need to see end delimiter twice to stop */ }; TOKEN CPPCommentToken = { - "comment", /* used by error messages involving this token */ + U "comment", /* used by error messages involving this token */ PRINT_WHOLE_QUOTED, /* print this token in quotes etc. as usual */ - "@PC", /* Lout command for formatting comments */ - "", /* no alternate command */ - "", /* no following command */ + U "@PC", /* Lout command for formatting comments */ + U "", /* no alternate command */ + U "", /* no following command */ FALSE, /* token allowed anywhere, not just start of line */ - { "//" }, /* comments begin with this character pair */ + { U "//" }, /* comments begin with this character pair */ { NULL }, /* no start2 needed */ { NULL }, /* so no brackets2 either */ { NULL }, /* so no end2 either */ AllPrintablePlusTab, /* inside, any printable char is OK (not NL) */ - "", /* no escape character within comments */ - "", /* so nothing legal after escape char either */ - "", /* C comments do not permit "inner escapes" */ - "", /* and so there is no end innner escape either */ - "", /* no bracketing delimiter */ - "", /* no end delimiter (end of line will end it) */ + U "", /* no escape character within comments */ + U "", /* so nothing legal after escape char either */ + U "", /* C comments do not permit "inner escapes" */ + U "", /* and so there is no end innner escape either */ + U "", /* no bracketing delimiter */ + U "", /* no end delimiter (end of line will end it) */ FALSE, /* end delimiter does not have to be at line start */ FALSE, /* don't need to see end delimiter twice to stop */ }; TOKEN EiffelCommentToken = { - "comment", /* used by error messages involving this token */ + U "comment", /* used by error messages involving this token */ PRINT_WHOLE_QUOTED, /* print this token in quotes etc. as usual */ - "@PC", /* Lout command for formatting comments */ - "", /* no alternate command */ - "", /* no following command */ + U "@PC", /* Lout command for formatting comments */ + U "", /* no alternate command */ + U "", /* no following command */ FALSE, /* token allowed anywhere, not just start of line */ - { "--" }, /* comments begin with this character pair */ + { U "--" }, /* comments begin with this character pair */ { NULL }, /* no start2 needed */ { NULL }, /* so no brackets2 either */ { NULL }, /* so no end2 either */ AllPrintablePlusTab, /* inside, any printable char is OK */ - "", /* no escape character within comments */ - "", /* so nothing legal after escape char either */ - "`", /* start of "inner escape" in Eiffel comment */ - "'", /* end of "inner escape" in Eiffel comment */ - "", /* no bracketing delimiter */ - "", /* no ending delimiter; end of line will end it */ + U "", /* no escape character within comments */ + U "", /* so nothing legal after escape char either */ + U "`", /* start of "inner escape" in Eiffel comment */ + U "'", /* end of "inner escape" in Eiffel comment */ + U "", /* no bracketing delimiter */ + U "", /* no ending delimiter; end of line will end it */ FALSE, /* end delimiter does not have to be at line start */ FALSE, /* don't need to see end delimiter twice to stop */ }; TOKEN BlueCommentToken = { - "comment", /* used by error messages involving this token */ + U "comment", /* used by error messages involving this token */ PRINT_WHOLE_QUOTED, /* print this token in quotes etc. as usual */ - "@PC", /* Lout command for formatting comments */ - "", /* no alternate command */ - "", /* no following command */ + U "@PC", /* Lout command for formatting comments */ + U "", /* no alternate command */ + U "", /* no following command */ FALSE, /* token allowed anywhere, not just start of line */ - { "==", "--" }, /* comments begin with this character pair */ + { U "==", U "--" }, /* comments begin with this character pair */ { NULL }, /* no start2 needed */ { NULL }, /* so no brackets2 either */ { NULL }, /* so no end2 either */ AllPrintablePlusTab, /* inside, any printable char is OK */ - "", /* no escape character within comments */ - "", /* so nothing legal after escape char either */ - "`", /* start of "inner escape" in Blue comment */ - "'", /* end of "inner escape" in Blue comment */ - "", /* no bracketing delimiter */ - "", /* no ending delimiter; end of line will end it */ + U "", /* no escape character within comments */ + U "", /* so nothing legal after escape char either */ + U "`", /* start of "inner escape" in Blue comment */ + U "'", /* end of "inner escape" in Blue comment */ + U "", /* no bracketing delimiter */ + U "", /* no ending delimiter; end of line will end it */ FALSE, /* end delimiter does not have to be at line start */ FALSE, /* don't need to see end delimiter twice to stop */ }; TOKEN PythonCommentToken = { - "comment", /* used by error messages involving this token */ + U "comment", /* used by error messages involving this token */ PRINT_WHOLE_QUOTED, /* print this token in quotes etc. as usual */ - "@PC", /* Lout command for formatting comments */ - "", /* no alternate command */ - "", /* no following command */ + U "@PC", /* Lout command for formatting comments */ + U "", /* no alternate command */ + U "", /* no following command */ FALSE, /* token allowed anywhere, not just start of line */ - { "#" }, /* comments begin with this character pair */ + { U "#" }, /* comments begin with this character pair */ { NULL }, /* no start2 needed */ { NULL }, /* so no brackets2 either */ { NULL }, /* so no end2 either */ AllPrintablePlusTab, /* inside, any printable char is OK (not NL) */ - "", /* no escape character within comments */ - "", /* so nothing legal after escape char either */ - "", /* C comments do not permit "inner escapes" */ - "", /* and so there is no end innner escape either */ - "", /* no bracketing delimiter */ - "", /* no end delimiter (end of line will end it) */ + U "", /* no escape character within comments */ + U "", /* so nothing legal after escape char either */ + U "", /* Python comments do not permit "inner escapes" */ + U "", /* and so there is no end innner escape either */ + U "", /* no bracketing delimiter */ + U "", /* no end delimiter (end of line will end it) */ FALSE, /* end delimiter does not have to be at line start */ FALSE, /* don't need to see end delimiter twice to stop */ }; @@ -871,90 +883,112 @@ /*****************************************************************************/ TOKEN CCommentEscapeToken = { - "Lout escape", /* used by error messages involving this token */ + U "Lout escape", /* used by error messages involving this token */ PRINT_NODELIMS_UNQUOTED, /* print this token unformatted */ - "", /* no Lout command since we are printing raw */ - "", /* no alternate command */ - "", /* no following command */ + U "", /* no Lout command since we are printing raw */ + U "", /* no alternate command */ + U "", /* no following command */ FALSE, /* token allowed anywhere, not just start of line */ - { "/*@" }, /* escape comments begin with this delimiter */ + { U "/*@" }, /* escape comments begin with this delimiter */ { NULL }, /* no start2 needed */ { NULL }, /* so no brackets2 either */ { NULL }, /* so no end2 either */ AllPrintableTabNLFF, /* inside, any printable char, tab, nl, ff is OK */ - "", /* no escape character within comments */ - "", /* so nothing legal after escape char either */ - "", /* no "inner escape" in escape comments */ - "", /* so no end of "inner escape" either */ - "", /* no bracketing delimiter */ - "*/", /* comments end with this character pair */ + U "", /* no escape character within comments */ + U "", /* so nothing legal after escape char either */ + U "", /* no "inner escape" in escape comments */ + U "", /* so no end of "inner escape" either */ + U "", /* no bracketing delimiter */ + U "*/", /* comments end with this character pair */ FALSE, /* end delimiter does not have to be at line start */ FALSE, /* don't need to see end delimiter twice to stop */ }; TOKEN CPPCommentEscapeToken = { - "Lout escape", /* used by error messages involving this token */ + U "Lout escape", /* used by error messages involving this token */ PRINT_NODELIMS_UNQUOTED, /* print this token unformatted */ - "", /* no Lout command since we are printing raw */ - "", /* no alternate command */ - "", /* no following command */ + U "", /* no Lout command since we are printing raw */ + U "", /* no alternate command */ + U "", /* no following command */ FALSE, /* token allowed anywhere, not just start of line */ - { "//@" }, /* escape comments begin with this delimiter */ + { U "//@" }, /* escape comments begin with this delimiter */ { NULL }, /* no start2 needed */ { NULL }, /* so no brackets2 either */ { NULL }, /* so no end2 either */ AllPrintablePlusTab, /* inside, any printable char is OK */ - "", /* no escape character within comments */ - "", /* so nothing legal after escape char either */ - "", /* no "inner escape" in escape comments */ - "", /* so no end of "inner escape" either */ - "", /* no bracketing delimiter */ - "", /* no end delimiter (end of line will end it) */ + U "", /* no escape character within comments */ + U "", /* so nothing legal after escape char either */ + U "", /* no "inner escape" in escape comments */ + U "", /* so no end of "inner escape" either */ + U "", /* no bracketing delimiter */ + U "", /* no end delimiter (end of line will end it) */ FALSE, /* end delimiter does not have to be at line start */ FALSE, /* don't need to see end delimiter twice to stop */ }; TOKEN EiffelCommentEscapeToken = { - "Lout escape", /* used by error messages involving this token */ + U "Lout escape", /* used by error messages involving this token */ PRINT_NODELIMS_UNQUOTED, /* print this token unformatted */ - "", /* no Lout command since we are printing raw */ - "", /* no alternate command */ - "", /* no following command */ + U "", /* no Lout command since we are printing raw */ + U "", /* no alternate command */ + U "", /* no following command */ FALSE, /* token allowed anywhere, not just start of line */ - { "--@" }, /* escape comments begin with this delimiter */ + { U "--@" }, /* escape comments begin with this delimiter */ { NULL }, /* no start2 needed */ { NULL }, /* so no brackets2 either */ { NULL }, /* so no end2 either */ AllPrintablePlusTab, /* inside, any printable char is OK */ - "", /* no escape character within comments */ - "", /* so nothing legal after escape char either */ - "", /* no "inner escape" in escape comments */ - "", /* so no end of "inner escape" either */ - "", /* no bracketing delimiter */ - "", /* no ending delimiter; end of line will end it */ + U "", /* no escape character within comments */ + U "", /* so nothing legal after escape char either */ + U "", /* no "inner escape" in escape comments */ + U "", /* so no end of "inner escape" either */ + U "", /* no bracketing delimiter */ + U "", /* no ending delimiter; end of line will end it */ FALSE, /* end delimiter does not have to be at line start */ FALSE, /* don't need to see end delimiter twice to stop */ }; TOKEN BlueCommentEscapeToken = { - "Lout escape", /* used by error messages involving this token */ + U "Lout escape", /* used by error messages involving this token */ PRINT_NODELIMS_UNQUOTED, /* print this token unformatted */ - "", /* no Lout command since we are printing raw */ - "", /* no alternate command */ - "", /* no following command */ + U "", /* no Lout command since we are printing raw */ + U "", /* no alternate command */ + U "", /* no following command */ FALSE, /* token allowed anywhere, not just start of line */ - { "==@", "--@" }, /* escape comments begin with these delimiters */ + { U "==@", U "--@" }, /* escape comments begin with these delimiters */ { NULL }, /* no start2 needed */ { NULL }, /* so no brackets2 either */ { NULL }, /* so no end2 either */ AllPrintablePlusTab, /* inside, any printable char is OK */ - "", /* no escape character within comments */ - "", /* so nothing legal after escape char either */ - "", /* no "inner escape" in escape comments */ - "", /* so no end of "inner escape" either */ - "", /* no bracketing delimiter */ - "", /* no ending delimiter; end of line will end it */ + U "", /* no escape character within comments */ + U "", /* so nothing legal after escape char either */ + U "", /* no "inner escape" in escape comments */ + U "", /* so no end of "inner escape" either */ + U "", /* no bracketing delimiter */ + U "", /* no ending delimiter; end of line will end it */ + FALSE, /* end delimiter does not have to be at line start */ + FALSE, /* don't need to see end delimiter twice to stop */ +}; + +TOKEN PythonCommentEscapeToken = { + U "Lout escape", /* used by error messages involving this token */ + PRINT_NODELIMS_UNQUOTED, /* print this token unformatted */ + U "", /* no Lout command since we are printing raw */ + U "", /* no alternate command */ + U "", /* no following command */ + FALSE, /* token allowed anywhere, not just start of line */ + { U "#@" }, /* escape comments begin with this delimiter */ + { NULL }, /* no start2 needed */ + { NULL }, /* so no brackets2 either */ + { NULL }, /* so no end2 either */ + AllPrintablePlusTab, /* inside, any printable char is OK (not NL) */ + U "", /* no escape character within comments */ + U "", /* so nothing legal after escape char either */ + U "", /* no "inner escape" in escape comments */ + U "", /* so no end of "inner escape" either */ + U "", /* no bracketing delimiter */ + U "", /* no ending delimiter; end of line will end it */ FALSE, /* end delimiter does not have to be at line start */ FALSE, /* don't need to see end delimiter twice to stop */ }; @@ -969,21 +1003,21 @@ #define FixedToken(str, command) /* define fixed-string token */ \ { \ - str, /* name used for debugging only */ \ + U str, /* name used for debugging only */ \ PRINT_WHOLE_QUOTED, /* print this token as usual */ \ - command, /* Lout command for formatting this */ \ - "", /* no alternate command */ \ - "", /* no following command */ \ + U command, /* Lout command for formatting this */ \ + U "", /* no alternate command */ \ + U "", /* no following command */ \ FALSE, /* token not just start of line */ \ - { str }, /* token begins (and ends!) with this */ \ + { U str }, /* token begins (and ends!) with this */ \ { NULL }, /* no start2 needed */ \ { NULL }, /* so no brackets2 either */ \ { NULL }, /* so no end2 either */ \ - "", /* nothing inside, since no inside */ \ - "", "", /* no escape character */ \ - "", "", /* no inner escape; no end inner esc */ \ - "", /* no bracketing delimiter */ \ - "", /* no ending delimiter */ \ + U "", /* nothing inside, since no inside */ \ + U "", U "", /* no escape character */ \ + U "", U "", /* no inner escape; no end inner esc */ \ + U "", /* no bracketing delimiter */ \ + U "", /* no ending delimiter */ \ FALSE, /* end not have to be at line start */ \ FALSE, /* don't end delimiter twice to stop */ \ } @@ -1032,21 +1066,21 @@ #define NoParameterToken(str, command) /* define fixed-string token */ \ { \ - str, /* name used for debugging only */ \ + U str, /* name used for debugging only */ \ PRINT_COMMAND_ONLY, /* print only the command */ \ - command, /* Lout command for formatting this */ \ - "", /* no alternate command */ \ - "", /* no following command */ \ + U command, /* Lout command for formatting this */ \ + U "", /* no alternate command */ \ + U "", /* no following command */ \ FALSE, /* token not just start of line */ \ - { str }, /* token begins (and ends!) with this */ \ + { U str }, /* token begins (and ends!) with this */ \ { NULL }, /* no start2 needed */ \ { NULL }, /* so no bracket2 either */ \ { NULL }, /* so no end2 either */ \ - "", /* nothing inside, since no inside */ \ - "", "", /* no escape character */ \ - "", "", /* no inner escape; no end inner esc */ \ - "", /* no bracketing delimiter */ \ - "", /* no ending delimiter */ \ + U "", /* nothing inside, since no inside */ \ + U "", U "", /* no escape character */ \ + U "", U "", /* no inner escape; no end inner esc */ \ + U "", /* no bracketing delimiter */ \ + U "", /* no ending delimiter */ \ FALSE, /* end not have to be at line start */ \ FALSE, /* don't end delimiter twice to stop */ \ } @@ -1115,109 +1149,109 @@ TOKEN PerlSingleQuoteStringToken = { - "''-string", /* used by error messages involving this token */ + U "''-string", /* used by error messages involving this token */ PRINT_WHOLE_QUOTED, /* print this token in quotes etc. as usual */ - "@PS", /* Lout command for formatting strings */ - "", /* no alternate command */ - "", /* no following command */ + U "@PS", /* Lout command for formatting strings */ + U "", /* no alternate command */ + U "", /* no following command */ FALSE, /* token allowed anywhere, not just start of line */ - { "'" }, /* strings begin with a ' character */ + { U "'" }, /* strings begin with a ' character */ { NULL }, /* no start2 needed */ { NULL }, /* so no bracket2 either */ { NULL }, /* so no end2 either */ AllCharacters, /* inside, any character at all is OK */ - "\\", /* within strings, \\ is the escape character */ + U "\\", /* within strings, \\ is the escape character */ AllCharacters, /* after escape, any character is OK (trust us) */ - "", "", /* no "inner escapes"; no end innner escape */ - "", /* no bracketing delimiter */ - "\'", /* strings end with a ' character */ + U "", U "", /* no "inner escapes"; no end innner escape */ + U "", /* no bracketing delimiter */ + U "\'", /* strings end with a ' character */ FALSE, /* end delimiter does not have to be at line start */ FALSE, /* don't need to see end delimiter twice to stop */ }; TOKEN PerlDoubleQuoteStringToken = { - "\"\"-string", /* used by error messages involving this token */ + U "\"\"-string", /* used by error messages involving this token */ PRINT_WHOLE_QUOTED, /* print this token in quotes etc. as usual */ - "@PS", /* Lout command for formatting strings */ - "", /* no alternate command */ - "", /* no following command */ + U "@PS", /* Lout command for formatting strings */ + U "", /* no alternate command */ + U "", /* no following command */ FALSE, /* token allowed anywhere, not just start of line */ - { "\"" }, /* strings begin with a " character */ + { U "\"" }, /* strings begin with a " character */ { NULL }, /* no start2 needed */ { NULL }, /* so no bracket2 either */ { NULL }, /* so no end2 either */ AllCharacters, /* inside, any character at all is OK */ - "\\", /* within strings, \\ is the escape character */ + U "\\", /* within strings, \\ is the escape character */ AllCharacters, /* after escape char, any character at all is OK */ - "", "", /* no "inner escapes"; no end innner escape */ - "", /* no bracketing delimiter */ - "\"", /* strings end with a " character */ + U "", U "", /* no "inner escapes"; no end innner escape */ + U "", /* no bracketing delimiter */ + U "\"", /* strings end with a " character */ FALSE, /* end delimiter does not have to be at line start */ FALSE, /* don't need to see end delimiter twice to stop */ }; TOKEN PerlBackQuoteStringToken = { - "``-string", /* used by error messages involving this token */ + U "``-string", /* used by error messages involving this token */ PRINT_WHOLE_QUOTED, /* print this token in quotes etc. as usual */ - "@PS", /* Lout command for formatting strings */ - "", /* no alternate command */ - "", /* no following command */ + U "@PS", /* Lout command for formatting strings */ + U "", /* no alternate command */ + U "", /* no following command */ FALSE, /* token allowed anywhere, not just start of line */ - { "`" }, /* strings begin with a ` character */ + { U "`" }, /* strings begin with a ` character */ { NULL }, /* no start2 needed */ { NULL }, /* so no bracket2 either */ { NULL }, /* so no end2 either */ AllCharacters, /* inside, any character at all is OK */ - "\\", /* within strings, \\ is the escape character */ + U "\\", /* within strings, \\ is the escape character */ AllCharacters, /* after escape char, any character at all is OK */ - "", "", /* no "inner escapes"; no end innner escape */ - "", /* no bracketing delimiter */ - "`", /* strings end with a ` character */ + U "", U "", /* no "inner escapes"; no end innner escape */ + U "", /* no bracketing delimiter */ + U "`", /* strings end with a ` character */ FALSE, /* end delimiter does not have to be at line start */ FALSE, /* don't need to see end delimiter twice to stop */ }; TOKEN PerlQTypeStringToken = { - "q-type string", /* used by error messages involving this token */ + U "q-type string", /* used by error messages involving this token */ PRINT_WHOLE_QUOTED, /* print this token in quotes etc. as usual */ - "@PS", /* Lout command for formatting strings */ - "", /* no alternate command */ - "", /* no following command */ + U "@PS", /* Lout command for formatting strings */ + U "", /* no alternate command */ + U "", /* no following command */ FALSE, /* token allowed anywhere, not just start of line */ - { "q", "qq", "qx", "qw", "qr", "m" }, /* q-type strings begin with these */ + { U "q", U "qq", U "qx", U "qw", U "qr", U "m" },/* q-type string begins */ { SepPunct }, /* start2 can be any punctuation character */ { BktPunct }, /* bracketing delimiters to match SepPunct */ { EndPunct }, /* end2 must match start2 */ AllCharacters, /* inside, any character at all is OK */ - "\\", /* within strings, \\ is the escape character */ + U "\\", /* within strings, \\ is the escape character */ AllCharacters, /* after escape char, any character at all is OK */ - "", /* strings do not permit "inner escapes" */ - "", /* and so there is no end innner escape either */ - "", /* will be using bracket2 for bracket delimiter */ - "", /* will be using end2 for the end delimiter here */ + U "", /* strings do not permit "inner escapes" */ + U "", /* and so there is no end innner escape either */ + U "", /* will be using bracket2 for bracket delimiter */ + U "", /* will be using end2 for the end delimiter here */ FALSE, /* end delimiter does not have to be at line start */ FALSE, /* don't need to see end delimiter twice to stop */ }; TOKEN PerlSTypeStringToken = { - "s-type string", /* used by error messages involving this token */ + U "s-type string", /* used by error messages involving this token */ PRINT_WHOLE_QUOTED, /* print this token in quotes etc. as usual */ - "@PS", /* Lout command for formatting strings */ - "", /* no alternate command */ - "", /* no following command */ + U "@PS", /* Lout command for formatting strings */ + U "", /* no alternate command */ + U "", /* no following command */ FALSE, /* token allowed anywhere, not just start of line */ - { "s", "y", "tr" }, /* s-type strings begin with these */ + { U "s", U "y", U "tr" }, /* s-type strings begin with these */ { SepPunct }, /* start2 can be any punctuation character */ { BktPunct }, /* bracketing delimiters to match SepPunct */ { EndPunct }, /* end2 must match start2 */ AllCharacters, /* inside, any character at all is OK */ - "\\", /* within strings, \\ is the escape character */ + U "\\", /* within strings, \\ is the escape character */ AllCharacters, /* after escape char, any character at all is OK */ - "", /* strings do not permit "inner escapes" */ - "", /* and so there is no end innner escape either */ - "", /* will be using bracket2 for bracket delimiter */ - "", /* will be using end2 for the end delimiter here */ + U "", /* strings do not permit "inner escapes" */ + U "", /* and so there is no end innner escape either */ + U "", /* will be using bracket2 for bracket delimiter */ + U "", /* will be using end2 for the end delimiter here */ FALSE, /* end delimiter does not have to be at line start */ TRUE, /* need to see end delimiter twice to stop */ }; @@ -1237,23 +1271,23 @@ #define PerlREToken(start, com) \ { \ - "regex", /* used by error messages */ \ + U "regex", /* used by error messages */ \ PRINT_NODELIMS_QUOTED,/* no delims since we supply them */ \ - com, /* the command */ \ - "", /* no alternate command */ \ - "@PS{\"/\"}", /* following command (final /) */ \ + U com, /* the command */ \ + U "", /* no alternate command */ \ + U "@PS{\"/\"}", /* following command (final /) */ \ FALSE, /* token allowed not just start of line */ \ - { start }, /* preceding token in this case */ \ - { "/", " /", "\t/", " /", " \t/", "\t /", "\t\t/" }, /* start2 */ \ - { "", "", "", "", "", "", "" }, /* bracket2 */ \ - { "/", "/", "/", "/", "/", "/", "/" }, /* end2 */ \ + { U start }, /* preceding token in this case */ \ + { U "/", U " /", U "\t/", U " /", U " \t/", U "\t /", U "\t\t/" }, \ + { U "", U "", U "", U "", U "", U "", U "" }, \ + { U "/", U "/", U "/", U "/", U "/", U "/", U "/" }, \ AllCharacters, /* any character OK inside */ \ - "\\", /* \\ is the escape character */ \ + U "\\", /* \\ is the escape character */ \ AllCharacters, /* after escape char, any is OK */ \ - "", /* no inner escapes */ \ - "", /* no end innner escape either */ \ - "", /* will be using bracket2 here */ \ - "", /* will be using end2 here */ \ + U "", /* no inner escapes */ \ + U "", /* no end innner escape either */ \ + U "", /* will be using bracket2 here */ \ + U "", /* will be using end2 here */ \ FALSE, /* no need to end at line start */ \ FALSE, /* don't want end delimiter twice */ \ } @@ -1279,23 +1313,23 @@ TOKEN PerlRegExpStartLineToken = { - "regex", /* used by error messages */ + U "regex", /* used by error messages */ PRINT_WHOLE_QUOTED, /* we can print the whole thing this time */ - "@PS", /* the command */ - "", /* no alternate command */ - "", /* no following command */ + U "@PS", /* the command */ + U "", /* no alternate command */ + U "", /* no following command */ TRUE, /* token allowed only at start of line */ - { "/" }, /* starting delimiter (so easy!) */ + { U "/" }, /* starting delimiter (so easy!) */ { NULL }, /* no start2 */ { NULL }, /* so no bracket2 either */ { NULL }, /* so no end2 either */ AllCharacters, /* any character OK inside */ - "\\", /* \\ is the escape character */ + U "\\", /* \\ is the escape character */ AllCharacters, /* after escape char, any is OK */ - "", /* no inner escapes */ - "", /* no end innner escape either */ - "", /* no bracketing delimiter */ - "/", /* ending delimiter */ + U "", /* no inner escapes */ + U "", /* no end innner escape either */ + U "", /* no bracketing delimiter */ + U "/", /* ending delimiter */ FALSE, /* no need to end at line start */ FALSE, /* don't want end delimiter twice */ }; @@ -1370,21 +1404,21 @@ #define HereToken(startstr, endstr) \ { \ - "here-document", /* used by error messages */ \ + U "here-document", /* used by error messages */ \ PRINT_WHOLE_QUOTED, /* as usual */ \ - "@PS", /* here documents are strings */ \ - "", /* no alternate command */ \ - "", /* no following command */ \ + U "@PS", /* here documents are strings */ \ + U "", /* no alternate command */ \ + U "", /* no following command */ \ FALSE, /* token allowed not just start of line */ \ - { startstr }, /* starting delimiter */ \ + { U startstr }, /* starting delimiter */ \ { NULL }, /* no start2 */ \ { NULL }, /* no bracket2 */ \ { NULL }, /* no end2 */ \ AllCharacters, /* any character OK inside */ \ - "", "", /* no escape character */ \ - "", "", /* no inner escapes */ \ - "", /* no bracketing delimiter */ \ - endstr, /* token ends with this */ \ + U "", U "", /* no escape character */ \ + U "", U "", /* no inner escapes */ \ + U "", /* no bracketing delimiter */ \ + U endstr, /* token ends with this */ \ TRUE, /* must be found at line start */ \ FALSE, /* don't want end delimiter twice */ \ } @@ -1432,34 +1466,34 @@ /*****************************************************************************/ TOKEN PerlIdentifierToken = { - "identifier", /* used by error messages involving this token */ + U "identifier", /* used by error messages involving this token */ PRINT_WHOLE_QUOTED, /* print this token in quotes etc. as usual */ - "@PI", /* Lout command for formatting identifiers */ - "@PK", /* Alternate command (for keywords) */ - "", /* no following command */ + U "@PI", /* Lout command for formatting identifiers */ + U "@PK", /* Alternate command (for keywords) */ + U "", /* no following command */ FALSE, /* token allowed anywhere, not just start of line */ - { SepLetters, "_", "$", "@", PercentLetters}, /* identifier starts */ + { SepLetters, U "_", U "$", U "@", PercentLetters}, /* ident. starts */ { NULL }, /* no start2 needed */ { NULL }, /* so no bracket2 either */ { NULL }, /* so no end2 either */ Letter_Digit, /* inside, letters, underscores, digits are OK */ - "", /* no escape character within identifiers */ - "", /* so nothing legal after escape char either */ - "", /* identifiers do not permit "inner escapes" */ - "", /* and so there is no end innner escape either */ - "", /* no bracketing delimiter */ - "", /* identifiers do not end with a delimiter */ + U "", /* no escape character within identifiers */ + U "", /* so nothing legal after escape char either */ + U "", /* identifiers do not permit "inner escapes" */ + U "", /* and so there is no end innner escape either */ + U "", /* no bracketing delimiter */ + U "", /* identifiers do not end with a delimiter */ FALSE, /* end delimiter does not have to be at line start */ FALSE, /* don't need to see end delimiter twice to stop */ }; TOKEN PerlSpecialIdentifierToken = { - "special variable", /* used by error messages involving this token */ + U "special variable", /* used by error messages involving this token */ PRINT_WHOLE_QUOTED, /* print this token in quotes etc. as usual */ - "@PI", /* Lout command for formatting identifiers */ - "", /* Alternate command (for keywords) */ - "", /* no following command */ + U "@PI", /* Lout command for formatting identifiers */ + U "", /* Alternate command (for keywords) */ + U "", /* no following command */ FALSE, /* token allowed anywhere, not just start of line */ { /* Taken from 5.6.0's perlvar.pod */ @@ -1468,22 +1502,24 @@ /* wrinkle. We only list the first 9 regex match variables. */ /* Only the ones not recognized elsewhere are being kept now */ - "$&", "$`", "$'", "$+", "@+", "$*", "$.", "$/", "$|", "$,", "$\\", "$\"", - "$;", "$#", "$%", "$=", "$-", "@-", "$~", "$^", "$:", "$^L", "$^A", "$?", - "$!", "$^E", "$@", "$$", "$<", "$>", "$(", "$)", "$0", "$[", "$]", "$^C", - "$^D", "$^F", "$^H", "%^H", "$^I", "$^M", "$^O", "$^P", "$^R", "$^S", - "$^T", "$^V", "$^W", "${^WARNING_BITS}", "${^WIDE_SYSTEM_CALLS}", "$^X", + U "$&", U "$`", U "$'", U "$+", U "@+", U "$*", U "$.", U "$/", + U "$|", U "$,", U "$\\", U "$\"", U "$;", U "$#", U "$%", U "$=", + U "$-", U "@-", U "$~", U "$^", U "$:", U "$^L", U "$^A", U "$?", + U "$!", U "$^E", U "$@", U "$$", U "$<", U "$>", U "$(", U "$)", + U "$0", U "$[", U "$]", U "$^C", U "$^D", U "$^F", U "$^H", U "%^H", + U "$^I", U "$^M", U "$^O", U "$^P", U "$^R", U "$^S", U "$^T", U "$^V", + U "$^W", U "${^WARNING_BITS}", U "${^WIDE_SYSTEM_CALLS}", U "$^X", }, { NULL }, /* no start2 needed */ { NULL }, /* so no bracket2 either */ { NULL }, /* so no end2 either */ - "", /* nothing allowed inside, since ends after start */ - "", /* no escape character within identifiers */ - "", /* so nothing legal after escape char either */ - "", /* identifiers do not permit "inner escapes" */ - "", /* and so there is no end innner escape either */ - "", /* no bracketing delimiter */ - "", /* identifiers do not end with a delimiter */ + U "", /* nothing allowed inside, since ends after start */ + U "", /* no escape character within identifiers */ + U "", /* so nothing legal after escape char either */ + U "", /* identifiers do not permit "inner escapes" */ + U "", /* and so there is no end innner escape either */ + U "", /* no bracketing delimiter */ + U "", /* identifiers do not end with a delimiter */ FALSE, /* end delimiter does not have to be at line start */ FALSE, /* don't need to see end delimiter twice to stop */ }; @@ -1509,68 +1545,68 @@ /*****************************************************************************/ TOKEN PerlLiteralNumberToken = { - "number", /* used by error messages involving this token */ + U "number", /* used by error messages involving this token */ PRINT_WHOLE_QUOTED, /* print this token in quotes etc. as usual */ - "@PN", /* Lout command for formatting numbers */ - "", /* no alternate command */ - "", /* no following command */ + U "@PN", /* Lout command for formatting numbers */ + U "", /* no alternate command */ + U "", /* no following command */ FALSE, /* token allowed anywhere, not just start of line */ { SepDigits }, /* numbers must begin with a digit */ { NULL }, /* no start2 needed */ { NULL }, /* so no bracket2 either */ { NULL }, /* so no end2 either */ - "0123456789.eE_", /* inside, digits, point, exponent, underscore */ - "", /* no escape character within numbers */ - "", /* so nothing legal after escape char either */ - "", /* numbers do not permit "inner escapes" */ - "", /* and so there is no end innner escape either */ - "", /* no bracketing delimiter */ - "", /* numbers do not end with a delimiter */ + U "0123456789.eE_", /* inside, digits, point, exponent, underscore */ + U "", /* no escape character within numbers */ + U "", /* so nothing legal after escape char either */ + U "", /* numbers do not permit "inner escapes" */ + U "", /* and so there is no end innner escape either */ + U "", /* no bracketing delimiter */ + U "", /* numbers do not end with a delimiter */ FALSE, /* end delimiter does not have to be at line start */ FALSE, /* don't need to see end delimiter twice to stop */ }; TOKEN PerlHexNumberToken = { - "number", /* used by error messages involving this token */ + U "number", /* used by error messages involving this token */ PRINT_WHOLE_QUOTED, /* print this token in quotes etc. as usual */ - "@PN", /* Lout command for formatting numbers */ - "", /* no alternate command */ - "", /* no following command */ + U "@PN", /* Lout command for formatting numbers */ + U "", /* no alternate command */ + U "", /* no following command */ FALSE, /* token allowed anywhere, not just start of line */ - { "0x" }, /* hex numbers must begin with 0x */ + { U "0x" }, /* hex numbers must begin with 0x */ { NULL }, /* no start2 needed */ { NULL }, /* so no bracket2 either */ { NULL }, /* so no end2 either */ - "0123456789AaBbCcDdEeFf", /* inside, hexadecimal digits */ - "", /* no escape character within numbers */ - "", /* so nothing legal after escape char either */ - "", /* numbers do not permit "inner escapes" */ - "", /* and so there is no end innner escape either */ - "", /* no bracketing delimiter */ - "", /* numbers do not end with a delimiter */ + U "0123456789AaBbCcDdEeFf", /* inside, hexadecimal digits */ + U "", /* no escape character within numbers */ + U "", /* so nothing legal after escape char either */ + U "", /* numbers do not permit "inner escapes" */ + U "", /* and so there is no end innner escape either */ + U "", /* no bracketing delimiter */ + U "", /* numbers do not end with a delimiter */ FALSE, /* end delimiter does not have to be at line start */ FALSE, /* don't need to see end delimiter twice to stop */ }; TOKEN PerlBinaryNumberToken = { - "number", /* used by error messages involving this token */ + U "number", /* used by error messages involving this token */ PRINT_WHOLE_QUOTED, /* print this token in quotes etc. as usual */ - "@PN", /* Lout command for formatting numbers */ - "", /* no alternate command */ - "", /* no following command */ + U "@PN", /* Lout command for formatting numbers */ + U "", /* no alternate command */ + U "", /* no following command */ FALSE, /* token allowed anywhere, not just start of line */ - { "0b" }, /* binary numbers must begin with 0b */ + { U "0b" }, /* binary numbers must begin with 0b */ { NULL }, /* no start2 needed */ { NULL }, /* so no bracket2 either */ { NULL }, /* so no end2 either */ - "01", /* inside, binary digits */ - "", /* no escape character within numbers */ - "", /* so nothing legal after escape char either */ - "", /* numbers do not permit "inner escapes" */ - "", /* and so there is no end innner escape either */ - "", /* no bracketing delimiter */ - "", /* numbers do not end with a delimiter */ + U "01", /* inside, binary digits */ + U "", /* no escape character within numbers */ + U "", /* so nothing legal after escape char either */ + U "", /* numbers do not permit "inner escapes" */ + U "", /* and so there is no end innner escape either */ + U "", /* no bracketing delimiter */ + U "", /* numbers do not end with a delimiter */ FALSE, /* end delimiter does not have to be at line start */ FALSE, /* don't need to see end delimiter twice to stop */ }; @@ -1587,45 +1623,45 @@ /*****************************************************************************/ TOKEN PerlCommentToken = { - "comment", /* used by error messages involving this token */ + U "comment", /* used by error messages involving this token */ PRINT_WHOLE_QUOTED, /* print this token in quotes etc. as usual */ - "@PC", /* Lout command for formatting comments */ - "", /* no alternate command */ - "", /* no following command */ + U "@PC", /* Lout command for formatting comments */ + U "", /* no alternate command */ + U "", /* no following command */ FALSE, /* token allowed anywhere, not just start of line */ - { "#" }, /* comments begin with this character */ + { U "#" }, /* comments begin with this character */ { NULL }, /* no start2 needed */ { NULL }, /* so no bracket2 either */ { NULL }, /* so no end2 either */ AllPrintablePlusTab, /* inside, any printable char is OK (not NL) */ - "", /* no escape character within comments */ - "", /* so nothing legal after escape char either */ - "", /* C comments do not permit "inner escapes" */ - "", /* and so there is no end innner escape either */ - "", /* no bracketing delimiter */ - "", /* no end delimiter (end of line will end it) */ + U "", /* no escape character within comments */ + U "", /* so nothing legal after escape char either */ + U "", /* C comments do not permit "inner escapes" */ + U "", /* and so there is no end innner escape either */ + U "", /* no bracketing delimiter */ + U "", /* no end delimiter (end of line will end it) */ FALSE, /* end delimiter does not have to be at line start */ FALSE, /* don't need to see end delimiter twice to stop */ }; TOKEN PerlCommentEscapeToken = { - "Lout escape", /* used by error messages involving this token */ + U "Lout escape", /* used by error messages involving this token */ PRINT_NODELIMS_UNQUOTED, /* print this token unformatted */ - "", /* no Lout command since we are printing raw */ - "", /* no alternate command */ - "", /* no following command */ + U "", /* no Lout command since we are printing raw */ + U "", /* no alternate command */ + U "", /* no following command */ FALSE, /* token allowed anywhere, not just start of line */ - { "#@" }, /* comments begin with this character pair */ + { U "#@" }, /* comments begin with this character pair */ { NULL }, /* no start2 needed */ { NULL }, /* so no bracket2 either */ { NULL }, /* so no end2 either */ AllPrintablePlusTab, /* inside, any printable char is OK */ - "", /* no escape character within comments */ - "", /* so nothing legal after escape char either */ - "", /* no "inner escape" in escape comments */ - "", /* so no end of "inner escape" either */ - "", /* no bracketing delimiter */ - "", /* no end delimiter (end of line will end it) */ + U "", /* no escape character within comments */ + U "", /* so nothing legal after escape char either */ + U "", /* no "inner escape" in escape comments */ + U "", /* so no end of "inner escape" either */ + U "", /* no bracketing delimiter */ + U "", /* no end delimiter (end of line will end it) */ FALSE, /* end delimiter does not have to be at line start */ FALSE, /* don't need to see end delimiter twice to stop */ }; @@ -1647,23 +1683,23 @@ /*****************************************************************************/ TOKEN PerlPodToken = { - "perl-pod", /* used by error messages involving this token */ + U "perl-pod", /* used by error messages involving this token */ PRINT_NODELIMS_UNQUOTED, /* unquoted but with a command enclosing it */ - "@DP @Pod", /* Lout command for formatting Pod */ - "", /* no alternate command */ - "@DP\n", /* following command */ + U "@DP @Pod", /* Lout command for formatting Pod */ + U "", /* no alternate command */ + U "@DP\n", /* following command */ TRUE, /* token allowed at start of line only */ - { "=", "=pod" }, /* pod insert begins with either of these */ + { U "=", U "=pod" }, /* pod insert begins with either of these */ { NULL }, /* no start2 needed */ { NULL }, /* so no bracket2 either */ { NULL }, /* so no end2 either */ AllCharacters, /* inside, any character at all is OK */ - "", /* no escape character within pod comments */ - "", /* so nothing legal after escape char either */ - "", /* pod comments do not permit "inner escapes" */ - "", /* and so there is no end innner escape either */ - "", /* no bracketing delimiter */ - "=cut", /* pod comments end with this string */ + U "", /* no escape character within pod comments */ + U "", /* so nothing legal after escape char either */ + U "", /* pod comments do not permit "inner escapes" */ + U "", /* and so there is no end innner escape either */ + U "", /* no bracketing delimiter */ + U "=cut", /* pod comments end with this string */ TRUE, /* end delimiter must be at line start */ FALSE, /* don't need to see end delimiter twice to stop */ }; @@ -1701,21 +1737,21 @@ #define FlagToken(str, command) /* define fixed-string token */ \ { \ - str, /* name used for debugging only */ \ + U str, /* name used for debugging only */ \ PRINT_WHOLE_QUOTED, /* print this token as usual */ \ - command, /* Lout command for formatting this */ \ - "", /* no alternate command */ \ - "", /* no following command */ \ + U command, /* Lout command for formatting this */ \ + U "", /* no alternate command */ \ + U "", /* no following command */ \ FALSE, /* token not just start of line */ \ - { str }, /* token begins (and ends!) with this */ \ - { " ", "\t" }, /* plus a white space char */ \ - { "", "" }, /* no bracket2 though */ \ - { "", "" }, /* no end2 though */ \ - "", /* nothing inside, since no inside */ \ - "", "", /* no escape character */ \ - "", "", /* no inner escape; no end inner esc */ \ - "", /* no bracketing delimiter */ \ - "", /* no ending delimiter */ \ + { U str }, /* token begins (and ends!) with this */ \ + { U " ", U "\t" }, /* plus a white space char */ \ + { U "", U "" }, /* no bracket2 though */ \ + { U "", U "" }, /* no end2 though */ \ + U "", /* nothing inside, since no inside */ \ + U "", U "", /* no escape character */ \ + U "", U "", /* no inner escape; no end inner esc */ \ + U "", /* no bracketing delimiter */ \ + U "", /* no ending delimiter */ \ FALSE, /* end not have to be at line start */ \ FALSE, /* don't end delimiter twice to stop */ \ } @@ -1776,39 +1812,39 @@ /*****************************************************************************/ TOKEN PodVerbatimLineToken = { - "verbatim-para", /* used by error messages involving this token */ + U "verbatim-para", /* used by error messages involving this token */ PRINT_WHOLE_QUOTED, /* printing the whole paragraph quoted */ - "@PV ", /* Lout command for formatting verbatim line */ - "", "", /* no alternate command; no following command */ + U "@PV ", /* Lout command for formatting verbatim line */ + U "", U "", /* no alternate command; no following command */ TRUE, /* token allowed at start of line only */ - { "\t", " " }, /* command begins with this */ + { U "\t", U " " }, /* command begins with this */ { NULL }, /* no start2 needed */ { NULL }, /* so no bracket2 either */ { NULL }, /* so no end2 either */ AllPrintablePlusTab, /* inside, any printable char except newline is OK */ - "", "", /* no escape character within verbatim lines */ - "", "", /* no "inner escapes" within verbatim lines */ - "", /* no bracketing delimiter */ - "", /* ends at end of line */ + U "", U "", /* no escape character within verbatim lines */ + U "", U "", /* no "inner escapes" within verbatim lines */ + U "", /* no bracketing delimiter */ + U "", /* ends at end of line */ FALSE, /* don't need to be at start of line to end it */ FALSE, /* don't need to see end delimiter twice to stop */ }; TOKEN PodEmptyLineToken = { - "pod-empty-line", /* used by error messages involving this token */ + U "pod-empty-line", /* used by error messages involving this token */ PRINT_COMMAND_ONLY, /* printing just the command */ - "@PPG\n", /* Lout command for formatting Pod empty line */ - "", "", /* no alternate command; no following command */ + U "@PPG\n", /* Lout command for formatting Pod empty line */ + U "", U "", /* no alternate command; no following command */ TRUE, /* token allowed at start of line only */ - { "\n" }, /* command begins with this */ + { U "\n" }, /* command begins with this */ { NULL }, /* no start2 needed */ { NULL }, /* so no bracket2 either */ { NULL }, /* so no end2 either */ - "", /* nothing inside */ - "", "", /* no escape character */ - "", "", /* no inner escape */ - "", /* no bracketing delimiter */ - "", /* token will end with the end of the line */ + U "", /* nothing inside */ + U "", U "", /* no escape character */ + U "", U "", /* no inner escape */ + U "", /* no bracketing delimiter */ + U "", /* token will end with the end of the line */ FALSE, /* end delimiter does not have to be at line start */ FALSE, /* don't need to see end delimiter twice to stop */ }; @@ -1837,23 +1873,23 @@ /*****************************************************************************/ TOKEN PodIgnoreToken = { - "pod-cut", /* used by error messages involving this token */ + U "pod-cut", /* used by error messages involving this token */ PRINT_COMMAND_ONLY, /* printing just the command */ - "", /* Lout command for formatting Pod cut (nothing) */ - "", /* no alternate command */ - "", /* no following command */ + U "", /* Lout command for formatting Pod cut (nothing) */ + U "", /* no alternate command */ + U "", /* no following command */ TRUE, /* token allowed at start of line only */ - { "=pod", "=cut" }, /* command begins with this */ + { U "=pod", U "=cut" }, /* command begins with this */ { NULL }, /* no start2 needed */ { NULL }, /* so no bracket2 either */ { NULL }, /* so no end2 either */ AllCharacters, /* anything at all can be inside */ - "", /* no escape character */ - "", /* so nothing legal after escape char either */ - "", /* cut tokens do not permit "inner escapes" */ - "", /* and so there is no end innner escape either */ - "", /* no bracketing delimiter */ - "\n", /* token will end with the end of the line */ + U "", /* no escape character */ + U "", /* so nothing legal after escape char either */ + U "", /* cut tokens do not permit "inner escapes" */ + U "", /* and so there is no end innner escape either */ + U "", /* no bracketing delimiter */ + U "\n", /* token will end with the end of the line */ TRUE, /* end delimiter (\n) has to be at a line start */ FALSE, /* don't need to see end delimiter twice to stop */ }; @@ -1866,58 +1902,58 @@ /*****************************************************************************/ TOKEN PodHeading1Token = { - "=head1", /* used by error messages involving this token */ + U "=head1", /* used by error messages involving this token */ PRINT_NODELIMS_INNER, /* print without delimiters, formatting inner */ - "@PHA", /* Lout command for formatting Pod heading */ - "", "", /* no alternate command; no following command */ + U "@PHA", /* Lout command for formatting Pod heading */ + U "", U "", /* no alternate command; no following command */ TRUE, /* token allowed at start of line only */ - {"=head1","head1"}, /* command begins with this */ - { " ", "\t" }, /* helps to skip following white space */ - { "", "" }, /* no bracket2 */ - { "\n", "\n" }, /* token ends at end of line */ + {U "=head1", U "head1"}, /* command begins with this */ + { U " ", U "\t" }, /* helps to skip following white space */ + { U "", U "" }, /* no bracket2 */ + { U "\n", U "\n" }, /* token ends at end of line */ AllCharacters, /* anything in the heading */ - "", "", /* no escape character; nothing legal after escape */ - "", "", /* no inner escapes; no end inner escape */ - "", /* no bracketing delimiter */ - "\n\n", /* token will end with the first blank line */ + U "", U "", /* no escape character; nothing legal after escape */ + U "", U "", /* no inner escapes; no end inner escape */ + U "", /* no bracketing delimiter */ + U "\n\n", /* token will end with the first blank line */ FALSE, /* end delimiter (\n) has to be at a line start */ FALSE, /* don't need to see end delimiter twice to stop */ }; TOKEN PodHeading2Token = { - "=head2", /* used by error messages involving this token */ + U "=head2", /* used by error messages involving this token */ PRINT_NODELIMS_INNER, /* print without delimiters, formatting inner */ - "@PHB", /* Lout command for formatting Pod heading */ - "", "", /* no alternate command; no following command */ + U "@PHB", /* Lout command for formatting Pod heading */ + U "", U "", /* no alternate command; no following command */ TRUE, /* token allowed at start of line only */ - { "=head2" }, /* command begins with this */ - { " ", "\t" }, /* helps to skip following white space */ - { "", "" }, /* no bracket2 */ - { "\n", "\n" }, /* token ends at end of line */ + { U "=head2" }, /* command begins with this */ + { U " ", U "\t" }, /* helps to skip following white space */ + { U "", U "" }, /* no bracket2 */ + { U "\n", U "\n" }, /* token ends at end of line */ AllCharacters, /* anything in the heading */ - "", "", /* no escape character; nothing legal after escape */ - "", "", /* no inner escapes; no end inner escape */ - "", /* no bracketing delimiter */ - "\n\n", /* token will end with the first blank line */ + U "", U "", /* no escape character; nothing legal after escape */ + U "", U "", /* no inner escapes; no end inner escape */ + U "", /* no bracketing delimiter */ + U "\n\n", /* token will end with the first blank line */ FALSE, /* end delimiter (\n) has to be at a line start */ FALSE, /* don't need to see end delimiter twice to stop */ }; TOKEN PodHeading3Token = { - "=head3", /* used by error messages involving this token */ + U "=head3", /* used by error messages involving this token */ PRINT_NODELIMS_INNER, /* print without delimiters, formatting inner */ - "@PHC", /* Lout command for formatting Pod heading */ - "", "", /* no alternate command; no following command */ + U "@PHC", /* Lout command for formatting Pod heading */ + U "", U "", /* no alternate command; no following command */ TRUE, /* token allowed at start of line only */ - { "=head3" }, /* command begins with this */ - { " ", "\t" }, /* helps to skip following white space */ - { "", "" }, /* no bracket2 */ - { "\n", "\n" }, /* token ends at end of line */ + { U "=head3" }, /* command begins with this */ + { U " ", U "\t" }, /* helps to skip following white space */ + { U "", U "" }, /* no bracket2 */ + { U "\n", U "\n" }, /* token ends at end of line */ AllCharacters, /* anything in the heading */ - "", "", /* no escape character; nothing legal after escape */ - "", "", /* no inner escapes; no end inner escape */ - "", /* no bracketing delimiter */ - "\n\n", /* token will end with the first blank line */ + U "", U "", /* no escape character; nothing legal after escape */ + U "", U "", /* no inner escapes; no end inner escape */ + U "", /* no bracketing delimiter */ + U "\n\n", /* token will end with the first blank line */ FALSE, /* end delimiter (\n) has to be at a line start */ FALSE, /* don't need to see end delimiter twice to stop */ }; @@ -1930,59 +1966,59 @@ /*****************************************************************************/ TOKEN PodOverToken = { - "=over", /* used by error messages involving this token */ + U "=over", /* used by error messages involving this token */ PRINT_NODELIMS_UNQUOTED, /* just a number after =over, so this is safe */ - "@RawTaggedList gap{@PLG}indent{@PLI}rightindent{@PLRI}labelwidth{@PLLW ", - "", /* no alternate command */ - "} // {", /* open brace to match } at first item */ + U "@RawTaggedList gap{@PLG}indent{@PLI}rightindent{@PLRI}labelwidth{@PLLW ", + U "", /* no alternate command */ + U "} // {", /* open brace to match } at first item */ TRUE, /* token allowed at start of line only */ - { "=over" }, /* command begins with this */ + { U "=over" }, /* command begins with this */ { NULL }, /* no start2 needed */ { NULL }, /* so no bracket2 either */ { NULL }, /* so no end2 either */ AllCharacters, /* inside, any printable char is OK */ - "", "", /* no escape character; nothing legal after escape */ - "", "", /* no inner escapes; no end inner escape */ - "", /* no bracketing delimiter */ - "\n", /* token will end with the end of the line */ + U "", U "", /* no escape character; nothing legal after escape */ + U "", U "", /* no inner escapes; no end inner escape */ + U "", /* no bracketing delimiter */ + U "\n", /* token will end with the end of the line */ TRUE, /* end delimiter (\n) has to be at a line start */ FALSE, /* don't need to see end delimiter twice to stop */ }; TOKEN PodItemToken = { - "=item", /* used by error messages involving this token */ + U "=item", /* used by error messages involving this token */ PRINT_NODELIMS_INNER, /* printing just what follows =item on the line */ - "@Null //}\n@DTI {@PLL", /* Lout command for formatting Pod item */ - "", /* no alternate command */ - "} {", /* open brace to enclose the item content */ + U "@Null //}\n@DTI {@PLL", /* Lout command for formatting Pod item */ + U "", /* no alternate command */ + U "} {", /* open brace to enclose the item content */ TRUE, /* token allowed at start of line only */ - { "=item" }, /* command begins with this */ - { " ", "\t" }, /* helps to skip following white space */ - { "", "" }, /* no bracket2 */ - { "\n\n", "\n\n" }, /* token will end at blank line */ + { U "=item" }, /* command begins with this */ + { U " ", U "\t" }, /* helps to skip following white space */ + { U "", U "" }, /* no bracket2 */ + { U "\n\n", U "\n\n"},/* token will end at blank line */ AllPrintableTabNL, /* any printable inside */ - "", "", /* no escape character; nothing legal after escape */ - "", "", /* no inner escapes; no end inner escape */ - "", "", /* see brackets2[]; see ends2[] */ + U "", U "", /* no escape character; nothing legal after escape */ + U "", U "", /* no inner escapes; no end inner escape */ + U "", U "", /* see brackets2[]; see ends2[] */ FALSE, /* end delimiter (\n) must already be at start */ FALSE, /* don't need to see end delimiter twice to stop */ }; TOKEN PodBackToken = { - "=back", /* used by error messages involving this token */ + U "=back", /* used by error messages involving this token */ PRINT_COMMAND_ONLY, /* printing just the command */ - "@Null // }\n@EndList\n", /* Lout command for formatting Pod back */ - "", "", /* no alternate command; no following command */ + U "@Null // }\n@EndList\n", /* Lout command for formatting Pod back */ + U "", U "", /* no alternate command; no following command */ TRUE, /* token allowed at start of line only */ - { "=back" }, /* command begins with this */ + { U "=back" }, /* command begins with this */ { NULL }, /* no start2 needed */ { NULL }, /* so no bracket2 either */ { NULL }, /* so no end2 either */ AllCharacters, /* anything inside (in principle) */ - "", "", /* no escape character; nothing legal after escape */ - "", "", /* no inner escapes; no end inner escape */ - "", /* no bracketing delimiter */ - "\n", /* token will end with the next blank line */ + U "", U "", /* no escape character; nothing legal after escape */ + U "", U "", /* no inner escapes; no end inner escape */ + U "", /* no bracketing delimiter */ + U "\n", /* token will end with the next blank line */ TRUE, /* end delimiter (\n) has to be at a line start */ FALSE, /* don't need to see end delimiter twice to stop */ }; @@ -1996,21 +2032,21 @@ #define PodNarrowItemToken(tag, command) \ { \ - "=item", /* used by error messages */ \ + U "=item", /* used by error messages */ \ PRINT_NODELIMS_INNER, /* printing just what follows =item */ \ - command, /* Lout command for formatting Pod item */ \ - "", /* no alternate command */ \ - "}} {", /* open brace to enclose the item content*/ \ + U command, /* Lout command for formatting Pod item */ \ + U "", /* no alternate command */ \ + U "}} {", /* open brace to enclose the item content*/ \ TRUE, /* token allowed at start of line only */ \ - { "=item", "=item ", "=item\t", /* starts */ \ - "=item ", "=item \t", "=item\t ", "=item\t\t" }, /* */ \ - { tag }, /* the tag we recognize */ \ - { "" }, /* no bracket2 */ \ - { "\n\n", "\n\n" }, /* token will end at blank line */ \ + { U "=item", U "=item ", U "=item\t", /* starts */ \ + U "=item ", U "=item \t", U "=item\t ", U "=item\t\t" }, /* */ \ + { U tag }, /* the tag we recognize */ \ + { U "" }, /* no bracket2 */ \ + { U "\n\n", U "\n\n" }, /* token will end at blank line */ \ AllPrintableTabNL, /* any printable inside */ \ - "", "", /* no escape character */ \ - "", "", /* no inner escapes; no end inner escape */ \ - "", "", /* see brackets2[]; see ends2[] */ \ + U "", U "", /* no escape character */ \ + U "", U "", /* no inner escapes; no end inner escape */ \ + U "", U "", /* see brackets2[]; see ends2[] */ \ FALSE, /* end delimiter (\n) already at start */ \ FALSE, /* don't need to see end delimiter twice */ \ } @@ -2039,55 +2075,55 @@ /*****************************************************************************/ TOKEN PodForToken = { - "=for", /* used by error messages involving this token */ + U "=for", /* used by error messages involving this token */ PRINT_COMMAND_ONLY, /* printing just the command */ - "", /* Lout command for formatting Pod for (nothing) */ - "", "", /* no alternate command; no following command */ + U "", /* Lout command for formatting Pod for (nothing) */ + U "", U "", /* no alternate command; no following command */ TRUE, /* token allowed at start of line only */ - { "=for" }, /* command begins with this */ + { U "=for" }, /* command begins with this */ { NULL }, { NULL }, /* no start2 needed; so no bracket2 either */ { NULL }, /* so no end2 either */ AllCharacters, /* anything inside */ - "", "", /* no escape character; nothing legal after escape */ - "", "", /* no inner escapes; no end inner escape */ - "", /* no bracketing delimiter */ - "\n", /* token will end with the end of the line */ + U "", U "", /* no escape character; nothing legal after escape */ + U "", U "", /* no inner escapes; no end inner escape */ + U "", /* no bracketing delimiter */ + U "\n", /* token will end with the end of the line */ TRUE, /* end delimiter (\n) has to be at a line start */ FALSE, /* don't need to see end delimiter twice to stop */ }; TOKEN PodBeginToken = { - "=begin", /* used by error messages involving this token */ + U "=begin", /* used by error messages involving this token */ PRINT_COMMAND_ONLY, /* printing just the command */ - "", /* Lout command for formatting Pod for (nothing) */ - "", "", /* no alternate command; no following command */ + U "", /* Lout command for formatting Pod for (nothing) */ + U "", U "", /* no alternate command; no following command */ TRUE, /* token allowed at start of line only */ - { "=begin" }, /* command begins with this */ + { U "=begin" }, /* command begins with this */ { NULL }, { NULL }, /* no start2 needed; so no bracket2 either */ { NULL }, /* so no end2 either */ AllCharacters, /* anything inside */ - "", "", /* no escape character; nothing legal after escape */ - "", "", /* no inner escapes; no end inner escape */ - "", /* no bracketing delimiter */ - "=end", /* token will end with =end character */ + U "", U "", /* no escape character; nothing legal after escape */ + U "", U "", /* no inner escapes; no end inner escape */ + U "", /* no bracketing delimiter */ + U "=end", /* token will end with =end character */ TRUE, /* end delimiter has to be at a line start */ FALSE, /* don't need to see end delimiter twice to stop */ }; TOKEN PodBeginLoutToken = { - "=begin lout", /* used by error messages involving this token */ + U "=begin lout", /* used by error messages involving this token */ PRINT_NODELIMS_UNQUOTED,/* this is a Lout escape, no delims or quotes */ - "", /* Lout command for formatting Pod for (nothing) */ - "", "", /* no alternate command; no following command */ + U "", /* Lout command for formatting Pod for (nothing) */ + U "", U "", /* no alternate command; no following command */ TRUE, /* token allowed at start of line only */ - { "=begin lout", "=begin Lout" }, /* command begins with this */ + { U "=begin lout", U "=begin Lout" }, /* command begins with this */ { NULL }, { NULL }, /* no start2 needed; so no bracket2 either */ { NULL }, /* so no end2 either */ AllCharacters, /* anything inside */ - "", "", /* no escape character; nothing legal after escape */ - "", "", /* no inner escapes; no end inner escape */ - "", /* no bracketing delimiter */ - "=end", /* token will end with =end character */ + U "", U "", /* no escape character; nothing legal after escape */ + U "", U "", /* no inner escapes; no end inner escape */ + U "", /* no bracketing delimiter */ + U "=end", /* token will end with =end character */ TRUE, /* end delimiter has to be at a line start */ FALSE, /* don't need to see end delimiter twice to stop */ }; @@ -2122,20 +2158,20 @@ #define RecursiveToken(str, command) /* Pod recursive token */ \ { \ - str, /* name used for debugging only */ \ + U str, /* name used for debugging only */ \ PRINT_NODELIMS_INNER, /* recursively format the inside */ \ - command, /* Lout command for formatting this */ \ - "", "", /* no alternate command; no following */ \ + U command, /* Lout command for formatting this */ \ + U "", U "", /* no alternate command; no following */ \ FALSE, /* token not just start of line */ \ - { str }, /* token begins with this */ \ - { "<", "<< ", "<<< ", "<<<< " }, /* start2 */ \ - { "", "", "", "" }, /* no bracket2 */ \ - { ">", " >>", " >>>", " >>>>" }, /* end2 */ \ + { U str }, /* token begins with this */ \ + { U "<", U "<< ", U "<<< ", U "<<<< " }, /* start2 */ \ + { U "", U "", U "", U "" }, /* no bracket2 */ \ + { U ">", U " >>", U " >>>", U " >>>>" }, /* end2 */ \ AllCharacters, /* anything inside (in fact, not used)*/ \ - "", "", /* no escape character */ \ - "", "", /* no inner escape; no end inner esc */ \ - "", /* will use brackets2 here */ \ - "", /* will use end2 here */ \ + U "", U "", /* no escape character */ \ + U "", U "", /* no inner escape; no end inner esc */ \ + U "", /* will use brackets2 here */ \ + U "", /* will use end2 here */ \ FALSE, /* end not have to be at line start */ \ FALSE, /* don't end delimiter twice to stop */ \ } @@ -2162,20 +2198,20 @@ #define InteriorToken(str, command, style) /* Pod delimited token */ \ { \ - str, /* name used for debugging only */ \ + U str, /* name used for debugging only */ \ style, /* print this token unquoted */ \ - command, /* Lout command for formatting this */ \ - "", "", /* no alternate command; no following */ \ + U command, /* Lout command for formatting this */ \ + U "", U "", /* no alternate command; no following */ \ FALSE, /* token not just start of line */ \ - { str }, /* token begins with this */ \ - { "<", "<< ", "<<< ", "<<<< " }, /* start2 */ \ - { "", "", "", "" }, /* no bracket2 */ \ - { ">", " >>", " >>>", " >>>>" }, /* end2 */ \ + { U str }, /* token begins with this */ \ + { U "<", U "<< ", U "<<< ", U "<<<< " }, /* start2 */ \ + { U "", U "", U "", U "" }, /* no bracket2 */ \ + { U ">", U " >>", U " >>>", U " >>>>" }, /* end2 */ \ AllCharacters, /* anything inside */ \ - "", "", /* no escape character */ \ - "", "", /* no inner escape; no end inner esc */ \ - "", /* will use brackets2 here */ \ - "", /* will use end2 here */ \ + U "", U "", /* no escape character */ \ + U "", U "", /* no inner escape; no end inner esc */ \ + U "", /* will use brackets2 here */ \ + U "", /* will use end2 here */ \ FALSE, /* end not have to be at line start */ \ FALSE, /* don't end delimiter twice to stop */ \ } @@ -2205,42 +2241,42 @@ /*****************************************************************************/ TOKEN PodNumCharToken = { - "E<>", /* used by error messages involving this token */ + U "E<>", /* used by error messages involving this token */ PRINT_NODELIMS_UNQUOTED,/* we're doing these manually, since they're funny*/ - "\"\\", /* precede character number with \" */ - "", /* no alternate command */ - "\"", /* follow character number with " */ + U "\"\\", /* precede character number with \" */ + U "", /* no alternate command */ + U "\"", /* follow character number with " */ FALSE, /* token allowed at start of line only */ - { "E<" }, /* command begins with this */ + { U "E<" }, /* command begins with this */ { NULL }, /* no start2 needed */ { NULL }, /* so no bracket2 either */ { NULL }, /* so no end2 either */ - "0123456789", /* digits inside */ - "", "", /* no escape character */ - "", "", /* no "inner escapes" */ - "", /* no bracketing delimiter */ - ">", /* token will end with > character */ + U "0123456789", /* digits inside */ + U "", U "", /* no escape character */ + U "", U "", /* no "inner escapes" */ + U "", /* no bracketing delimiter */ + U ">", /* token will end with > character */ FALSE, /* end delimiter does not have to be at line start */ FALSE, /* don't need to see end delimiter twice to stop */ }; #define PodEscapeToken(str, command) /* Pod delimited token */ \ { \ - str, /* name used for debugging only */ \ + U str, /* name used for debugging only */ \ PRINT_COMMAND_ONLY, /* print this token unquoted */ \ - command, /* Lout command for formatting this */ \ - "", /* no alternate command */ \ - "", /* no following command */ \ + U command, /* Lout command for formatting this */ \ + U "", /* no alternate command */ \ + U "", /* no following command */ \ FALSE, /* token not just start of line */ \ - { str }, /* token begins with this */ \ + { U str }, /* token begins with this */ \ { NULL }, /* start2 */ \ { NULL }, /* bracket2 */ \ { NULL }, /* end2 */ \ - "", /* nothing inside */ \ - "", "", /* no escape character */ \ - "", "", /* no inner escape either */ \ - "", /* no bracketing delimiter */ \ - "", /* no ending delimiter */ \ + U "", /* nothing inside */ \ + U "", U "", /* no escape character */ \ + U "", U "", /* no inner escape either */ \ + U "", /* no bracketing delimiter */ \ + U "", /* no ending delimiter */ \ FALSE, /* end not have to be at line start */ \ FALSE, /* don't end delimiter twice to stop */ \ } @@ -2431,6 +2467,13 @@ "short", "signed", "sizeof", "static", "struct", "switch", "template", "this", "throw", "try", "typedef", "union", "unsigned", "virtual", "void", "volatile", "while", + + /* these contributed by Isaac To */ + "bool", "wchar_t", "typeid", "typename", "false", "true", "const_cast", + "dynamic_cast", "reinterpret_cast", "static_cast", "namespace", "using", + "and", "and_eq", "bitand", "bitor", "compl", "not", "not_eq", "or", + "or_eq", "xor", "xor_eq", "explicit", "export", "mutable", + } }; @@ -2444,8 +2487,8 @@ { &BackSlashToken, &PythonDblStringToken, &PythonSnglStringToken, &PythonTriSnglStringToken, &PythonTriDblStringToken, - &PythonCommentToken, &IdentifierToken, &NumberToken, - &PlusToken, &MinusToken, &StarToken, &PythonPowerToken, + &PythonCommentToken, &PythonCommentEscapeToken, &IdentifierToken, + &NumberToken, &PlusToken, &MinusToken, &StarToken, &PythonPowerToken, &SlashToken, &PercentToken, &PythonBitLeftShiftToken, &PythonBitRightShiftToken, &AmpersandToken, &BarToken, &HatToken, &CircumToken, &LessToken, &GreaterToken, @@ -2831,7 +2874,7 @@ #define MAX_LINE 1024 static char file_name[MAX_LINE]; /* current input file name */ -static char curr_line[MAX_LINE]; /* current input line */ +static unsigned char curr_line[MAX_LINE]; /* current input line */ static int line_num; /* current input line number */ static int line_pos; /* current input column number */ static BOOLEAN raw_seen; /* TRUE if -r (raw mode) */ @@ -2949,7 +2992,7 @@ else if( curr_line[line_pos+1] != '\0' ) { /* we've already read in the next line; it's at &curr_line[line_pos+1] */ - strcpy(&curr_line[1], &curr_line[line_pos+1]); + strcpy((char *) &curr_line[1], (char *) &curr_line[line_pos+1]); line_num++; line_pos = 1; } @@ -2958,7 +3001,7 @@ /* we need to read in the new line */ line_num++; line_pos = 1; - if( fgets(&curr_line[1], MAX_LINE-2, in_fp) == (char *) NULL ) + if( fgets((char *) &curr_line[1], MAX_LINE-2, in_fp) == (char *) NULL ) curr_line[1] = '\0'; } if( DEBUG_NEXTCHAR ) @@ -2976,14 +3019,14 @@ /* */ /*****************************************************************************/ -BOOLEAN InputMatches(char *pattern) -{ char *p, *q; +BOOLEAN InputMatches(unsigned char *pattern) +{ unsigned char *p, *q; for(p = &curr_line[line_pos], q = pattern; *q != '\0'; p++, q++ ) { if( *p == '\0' ) { /* attempt to read another line of input, since we are off the end */ - if( fgets(p, MAX_LINE-2-(p - curr_line), in_fp) == (char *) NULL ) + if( fgets((char *) p, MAX_LINE-2-(p - curr_line), in_fp) == (char *) NULL ) *p = '\0'; } if( *p != *q ) @@ -3022,7 +3065,7 @@ /* */ /*****************************************************************************/ -BOOLEAN TrieInsert(TRIE *T, char *str, TOKEN *val) +BOOLEAN TrieInsert(TRIE *T, unsigned char *str, TOKEN *val) { BOOLEAN res; if( DEBUG_TRIE ) fprintf(stderr, "[ TrieInsert(T, %s, %s)\n", str, EchoToken(val)); @@ -3056,7 +3099,7 @@ /* */ /*****************************************************************************/ -TOKEN *TrieRetrieve(TRIE T, char *str, int *len) +TOKEN *TrieRetrieve(TRIE T, unsigned char *str, int *len) { TOKEN *res; int i; if( DEBUG_TRIE ) fprintf(stderr, "[ TrieRetrieve(T, %s, len)\n", str); @@ -3111,7 +3154,7 @@ ErrorHeader()); abort(); } - for( i = hash(str); HashTable[i] != (char *) NULL; i = (i+1) % MAX_SYM ); + for( i=hash(str); HashTable[i]!=(char *) NULL; i = (i+1)%MAX_SYM ); HashTable[i] = str; HashTableCount++; if( DEBUG_SETUP ) @@ -3120,8 +3163,8 @@ BOOLEAN HashRetrieve(char *str) { int i; - for( i = hash(str); HashTable[i] != (char *) NULL; i = (i+1) % MAX_SYM ) - if( strcmp(HashTable[i], str) == 0 ) + for( i=hash(str); HashTable[i]!=(char *) NULL; i = (i+1)%MAX_SYM ) + if( strcmp( (char *) HashTable[i], (char *) str) == 0 ) return TRUE; return FALSE; } @@ -3134,11 +3177,12 @@ /* This is the code that actually prints the output file. */ /* To emit one token, the call sequence should be as follows: */ /* */ -/* StartEmit(LANGUAGE *lang, TOKEN *current_token, char *start_delim, l) */ -/* Emit(TOKEN *current_token, char ch) */ +/* StartEmit(LANGUAGE *lang, TOKEN *current_token, */ +/* unsigned char *start_delim, l) */ +/* Emit(TOKEN *current_token, unsigned char ch) */ /* ... */ -/* Emit(TOKEN *current_token, char ch) */ -/* EndEmit(TOKEN *current_token, char *end_delim) */ +/* Emit(TOKEN *current_token, unsigned char ch) */ +/* EndEmit(TOKEN *current_token, unsigned char *end_delim) */ /* */ /* The back end will then take care of all print styles automatically, */ /* including checking for keywords. When emitting white space each space */ @@ -3148,7 +3192,7 @@ /* */ /*****************************************************************************/ -static char save_value[MAX_LINE]; /* the token text */ +static unsigned char save_value[MAX_LINE]; /* the token text */ static int save_len; /* index of \0 in save_value */ static BOOLEAN save_on = FALSE; /* TRUE when saving */ static LANGUAGE *save_language; /* the current language */ @@ -3157,7 +3201,7 @@ static BOOLEAN out_formfeed = FALSE; /* TRUE if last was formfeed */ static int brace_depth; /* brace depth in verbatim */ -extern void Emit(TOKEN *current_token, char ch); +extern void Emit(TOKEN *current_token, unsigned char ch); /*****************************************************************************/ /* */ @@ -3210,7 +3254,7 @@ /* */ /*****************************************************************************/ -void EmitRaw(char ch) +void EmitRaw(unsigned char ch) { if( DEBUG_EMIT ) @@ -3292,7 +3336,8 @@ /*****************************************************************************/ /* */ -/* StartEmit(LANGUAGE *lang, TOKEN *current_token, char *start_delim, len) */ +/* StartEmit(LANGUAGE *lang, TOKEN *current_token, */ +/* unsigned char *start_delim, len) */ /* */ /* Start the emission of a token. If it is a PRINT_WHOLE_QUOTED, it has */ /* to be saved since it might be a keyword. */ @@ -3301,7 +3346,8 @@ /* */ /*****************************************************************************/ -void StartEmit(LANGUAGE *lang, TOKEN *current_token, char *start_delim, int len) +void StartEmit(LANGUAGE *lang, TOKEN *current_token, + unsigned char *start_delim, int len) { int i; if( save_on ) { @@ -3393,15 +3439,15 @@ /*****************************************************************************/ /* */ -/* EndEmit(TOKEN *current_token, char *end_delim) */ +/* EndEmit(TOKEN *current_token, unsigned char *end_delim) */ /* */ /* End emitting the current token. Its ending delimiter was end_delim. */ /* */ /*****************************************************************************/ #define at_start_line(s, i) ((i) == 0 || s[(i)-1] == '\n' || s[(i)-1] == '\f' ) -void EndEmit(TOKEN *current_token, char *end_delim) -{ char *com; +void EndEmit(TOKEN *current_token, unsigned char *end_delim) +{ unsigned char *com; int i; BOOLEAN quoted_now = FALSE; switch( current_token->print_style ) @@ -3418,7 +3464,8 @@ case PRINT_NODELIMS_QUOTED: /* work out whether we are printing the command or its alternative */ - com=(current_token->alternate_command[0]!='\0'&&HashRetrieve(save_value)? + com=(current_token->alternate_command[0]!='\0' && + HashRetrieve( (char *) save_value)? current_token->alternate_command : current_token->command); /* print command, opening brace */ @@ -3508,7 +3555,7 @@ case PRINT_WHOLE_UNQUOTED: /* print end delimiter, verbatim */ - fputs(end_delim, out_fp); + fputs( (char *) end_delim, out_fp); /* NB NO BREAK */ @@ -3569,7 +3616,7 @@ /* */ /*****************************************************************************/ -void Emit(TOKEN *current_token, char ch) +void Emit(TOKEN *current_token, unsigned char ch) { switch( current_token->print_style ) { @@ -3583,9 +3630,9 @@ if( ch == '\n' || ch == '\f' ) { /* could save newline too, but uses less memory if print now */ - EndEmit(current_token, ""); + EndEmit(current_token, U ""); EmitRaw(ch); - StartEmit(save_language, current_token, "", 0); + StartEmit(save_language, current_token, U "", 0); } else if( save_len < MAX_LINE - 1 ) { @@ -3648,14 +3695,14 @@ /*****************************************************************************/ /* */ -/* EmitProtected(char ch) */ +/* EmitProtected(unsigned char ch) */ /* */ /* Emit one character of the current token. If the character is a special */ /* one in Lout, protect it with quotes. */ /* */ /*****************************************************************************/ -void EmitProtected(char ch) +void EmitProtected(unsigned char ch) { switch( ch ) { @@ -3703,10 +3750,11 @@ /* */ /*****************************************************************************/ -char *clone2strings(char *s1, char *s2) -{ char *res; - res = (char *) malloc( (strlen(s1) + strlen(s2) + 1) * sizeof(char)); - sprintf(res, "%s%s", s1, s2); +unsigned char *clone2strings(unsigned char *s1, unsigned char *s2) +{ unsigned char *res; + res = (unsigned char *) malloc( + (strlen( (char *) s1) + strlen( (char *) s2) + 1) * sizeof(unsigned char)); + sprintf( (char *) res, "%s%s", s1, s2); if( DEBUG_SETUP ) fprintf(stderr, "clone2strings(%s, %s) = %s\n", s1, s2, res); return res; @@ -3793,7 +3841,7 @@ } /* load the opening delimiters of this token into the trie */ - for( j = 0; t->starts[j] != (char *) NULL; j++ ) + for( j = 0; t->starts[j] != (unsigned char *) NULL; j++ ) { if( !TrieInsert(t->start_line_only ? &StartLineTrie:&Trie,t->starts[j],t) ) { if( *(t->starts[j]) == '\0' ) fprintf(err_fp, "%s: empty starting delimiter\n", ErrorHeader()); @@ -3852,7 +3900,7 @@ } /* load the keyword hash table */ - for( j = 0; lang->keywords[j] != (char *) NULL; j++ ) + for( j = 0; lang->keywords[j] != NULL; j++ ) HashInsert(lang->keywords[j]); if( DEBUG_SETUP ) @@ -3862,15 +3910,15 @@ /*****************************************************************************/ /* */ -/* BOOLEAN Printable(char ch) */ +/* BOOLEAN Printable(unsigned char ch) */ /* */ /* TRUE if ch is a printable character. Used only by error messages so */ /* can be slow. */ /* */ /*****************************************************************************/ -BOOLEAN Printable(char ch) -{ char *p; +BOOLEAN Printable(unsigned char ch) +{ unsigned char *p; for( p = AllPrintable; *p != '\0' && *p != ch; p++ ); return (*p == ch); } /* end Printable */ @@ -3915,15 +3963,16 @@ for( i = 0; pairs[i].first != NULL && !InputMatches(pairs[i].first); i++ ); if( DEBUG_PROCESS ) fprintf(stderr, "Matching() = %d (\"%s\", \"%s\")\n", i, - pairs[i].first == NULL ? "NULL" : pairs[i].first, - pairs[i].second == NULL ? "NULL" : pairs[i].second); + pairs[i].first == NULL ? "NULL" : (char *) pairs[i].first, + pairs[i].second == NULL ? "NULL" : (char *) pairs[i].second); return i; } /*****************************************************************************/ /* */ -/* Process(LANGUAGE *lang, TOKEN *outer_token, char *outer_end_delimiter) */ +/* Process(LANGUAGE *lang, TOKEN *outer_token, */ +/* unsigned char *outer_end_delimiter) */ /* */ /* Process a sequence of input tokens. If we are currently recursing */ /* inside some other token, outer_token is non-null and is that token, */ @@ -3952,10 +4001,11 @@ } } -void Process(LANGUAGE *lang, TOKEN *outer_token, char *outer_end_delimiter) -{ TOKEN *current_token; int len, i, state; - int end_delimiter_depth, end_delimiter_count; - char *curr_end_delim, *curr_bracket_delim; +void Process(LANGUAGE *lang, TOKEN *outer_token, + unsigned char *outer_end_delimiter) +{ TOKEN *current_token = (TOKEN *) NULL; int len, i, state; + int end_delimiter_depth = 0, end_delimiter_count = 0; + unsigned char *curr_end_delim = U "", *curr_bracket_delim = U ""; if( DEBUG_PROCESS ) fprintf(stderr, "[ Process(%s, -, -, -, -)\n", lang->names[0]); @@ -3984,7 +4034,7 @@ curr_line[line_pos] == outer_end_delimiter[0] && InputMatches(outer_end_delimiter) ) { - len = strlen(outer_end_delimiter); + len = strlen( (char *) outer_end_delimiter); for( i = 0; i < len; i++ ) NextChar(); state = STOP; @@ -4007,7 +4057,7 @@ if( current_token->print_style == PRINT_NODELIMS_INNER ) { Process(lang, current_token, current_token->end_delimiter); - EndEmit(current_token, ""); + EndEmit(current_token, U ""); } else { @@ -4079,7 +4129,7 @@ if( end_delimiter_count == 0 ) { /* seen all the end delimiters we need, so token ends */ - len = strlen(curr_end_delim); + len = strlen( (char *) curr_end_delim); for( i = 0; i < len; i++ ) NextChar(); EndEmit(current_token, curr_end_delim); @@ -4129,7 +4179,7 @@ case INNER_ESCAPE: - EndEmit(current_token, ""); + EndEmit(current_token, U ""); NextChar(); Process(lang, current_token, current_token->end_inner_escape); state = IN_TOKEN_AFTER_INNER_ESCAPE; @@ -4166,7 +4216,7 @@ else { /* normal termination after last legal character */ - EndEmit(current_token, ""); + EndEmit(current_token, U ""); state = START; } break; @@ -4242,7 +4292,7 @@ case IN_TOKEN_AFTER_INNER_ESCAPE: /* ending delimiter of inner escape has been read over */ - StartEmit(lang, current_token, "", 0); + StartEmit(lang, current_token, U "", 0); state = IN_TOKEN; break; @@ -4278,7 +4328,7 @@ else fprintf(err_fp, "%s: %s token ended within %s\n", ErrorHeader(), outer_token->name, current_token->name); - EndEmit(current_token, ""); + EndEmit(current_token, U ""); } break; @@ -4292,7 +4342,7 @@ else fprintf(err_fp, "%s: %s token ended within %s\n", ErrorHeader(), outer_token->name, current_token->name); - EndEmit(current_token, ""); + EndEmit(current_token, U ""); break; @@ -4301,7 +4351,7 @@ /* we stopped after the escape character */ fprintf(err_fp, "%s: skipping %c at end of program text\n", ErrorHeader(), current_token->escape[0]); - EndEmit(current_token, ""); + EndEmit(current_token, U ""); break; @@ -4475,7 +4525,6 @@ ErrorHeader(), outfilename); exit(1); } - /* setbuf(out_fp, (char *) NULL); */ break; @@ -4653,7 +4702,8 @@ { if( languages[i]->names[j] == (char *) NULL ) i++, j = 0; - else if( strcmp(languages[i]->names[j], language_option) == 0 ) + else if( strcmp( (char *) languages[i]->names[j], + (char *) language_option) == 0 ) lang = languages[i]; else j++; @@ -4713,7 +4763,7 @@ curr_line[line_pos] = '\n'; /* forces line read */ line_num = 0; NextChar(); - Process(lang, (TOKEN *) NULL, ""); + Process(lang, (TOKEN *) NULL, U ""); } else if( file_count > 0 ) { int ch; diff -u --recursive --new-file -u --recursive --new-file lout-3.26/whatsnew lout-3.27/whatsnew --- lout-3.26/whatsnew Wed Oct 16 09:34:34 2002 +++ lout-3.27/whatsnew Fri Nov 22 08:52:26 2002 @@ -316,11 +316,28 @@ Merged index entries completely reimplemented @DropTagItem (@DTI) now prevents page break after drop tag -Things that ought to be done but haven't been done yet +Changes and new features introduced in Version 3.27 [22 November 2002] - Fix bug in table running headers code - Fix bug in index header placement when there are multiple indexes - Column-width footnotes in full-width pages. + Fixes for all bugs, including table running headers and index headers + Repeated @PrependGraphic of same file allowed and ignored + Repeated @Include of same file of definitions allowed and ignored + Pie graphs (see new chapter of User's Guide) + Textures, a.k.a. patterns (see new section of Basic Graphics chapter, + and revisions to @Tbl, @Pie, @Diag, and @Graph chapters) + User's Guide no longer mentions @Diag lengths (1.2 cm, 0.5 ft etc), + although they are still available for backward compatibility + Arrowheads at opposite ends of a @Diag link now each have own style, + length, and width (NB this is marginally not upward compatible) + User's Guide now recommends "paint { none }" to get no paint, although + the old "nopaint" value is still available for backward compatibility + Any line anywhere can end in any of \n, \r, \r\n, or \n\r + 26 more strings recognised as keywords in @CP C/C++ printing + Lots more named colours using Mark Summerfield's @Xrgb symbol + Glossaries, following a design by Thorsten Seitz + @IndexFormat, @SubIndexFormat, @SubSubIndexFormat options for + changing the format of index entries + @IndexSpacer and @IndexLetters - spacers (headers) within indexes + In @Diag, @Box and @ShadowBox now have NNW, NNE, SSW, and SSE tags + User's Guide has revised and larger (17-page) index Jeff Kingston -undated diff -u --recursive --new-file -u --recursive --new-file lout-3.26/z01.c lout-3.27/z01.c --- lout-3.26/z01.c Mon Oct 14 19:20:59 2002 +++ lout-3.27/z01.c Sun Nov 17 09:10:43 2002 @@ -1,9 +1,9 @@ /*@z01.c:Supervise:StartSym, AllowCrossDb, etc.@******************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.26) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.27) */ /* COPYRIGHT (C) 1991, 2002 Jeffrey H. Kingston */ /* */ -/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */ +/* Jeffrey H. Kingston (jeff@it.usyd.edu.au) */ /* Basser Department of Computer Science */ /* The University of Sydney 2006 */ /* AUSTRALIA */ @@ -126,47 +126,78 @@ /*****************************************************************************/ /* */ /* static void PrintUsage(fp) */ +/* static void PrintVersion(lib, fp) */ /* */ -/* Print usage information on file fp. */ +/* Print usage information / version information on file fp. */ /* */ /*****************************************************************************/ -#define lput(str) fprintf(fp, "%s\n", str) +#define lputnl fputs( (char *) STR_NEWLINE, fp) +#define lput0(fmt) { fprintf(fp,fmt); lputnl; } +#define lput1(fmt, p1) { fprintf(fp,fmt, p1); lputnl; } +#define lput2(fmt, p1, p2) { fprintf(fp,fmt, p1, p2); lputnl; } +#define lput3(fmt, p1, p2, p3) { fprintf(fp,fmt, p1, p2, p3); lputnl; } +#define lput4(fmt, p1, p2, p3, p4){ fprintf(fp,fmt, p1, p2, p3, p4); lputnl; } static void PrintUsage(FILE *fp) { - lput("" ); - lput("usage: lout options files" ); - lput("" ); - lput(" -s suppress access to cross reference database" ); - lput(" -EPS EPS (Encapsulated PostScript) output" ); - lput(" -PDF or -Z PDF (Adobe Portable Document Format) output" ); - lput(" -p plain text output instead of PostScript" ); - lput(" -P like -p but with form-feed char between pages" ); - lput(" -S safe execution (disable calls to system(3))" ); - lput(" -U unsafe execution (allow calls to system(3))" ); - lput(" -l ASCII collation order when sorting indexes etc." ); - lput(" -L locale collation order when sorting indexes etc." ); - lput(" -o file output to file instead of stdout" ); - lput(" -e file error messages to file instead of stderr" ); - lput(" -a alternative error format: file:line:col ..." ); - lput(" -w print total number of words in output" ); - lput(" -i file like @SysInclude { file }; not recommended" ); - lput(" -I directory add directory to include file search path" ); - lput(" -C directory add directory to LCM file search path" ); - lput(" -F directory add directory to font metrics file search path" ); - lput(" -H directory add directory to hyphenation file search path" ); - lput(" -D directory add directory to database file search path" ); - lput(" --option{value} set option e.g. --'@InitialFont{Times Base 10p}'" ); - lput(" -c file use file.li instead of lout.li for crossrefs" ); - lput(" -M save memory (don't read in database indexes)" ); - lput(" -x initializing run, not for ordinary use" ); - lput(" -u print this usage message on stderr and exit" ); - lput(" -V print version and configuration information" ); - lput(" - a file name denoting standard input" ); - lput("" ); - + lputnl; + lput0("usage: lout options files" ); + lputnl; + lput0(" -s suppress access to cross reference database" ); + lput0(" -EPS EPS (Encapsulated PostScript) output" ); + lput0(" -PDF or -Z PDF (Adobe Portable Document Format) output" ); + lput0(" -p plain text output instead of PostScript" ); + lput0(" -P like -p but with form-feed char between pages" ); + lput0(" -S safe execution (disable calls to system(3))" ); + lput0(" -U unsafe execution (allow calls to system(3))" ); + lput0(" -l ASCII collation order when sorting indexes etc." ); + lput0(" -L locale collation order when sorting indexes etc."); + lput0(" -o file output to file instead of stdout" ); + lput0(" -e file error messages to file instead of stderr" ); + lput0(" -a alternative error format: file:line:col ..." ); + lput0(" -w print total number of words in output" ); + lput0(" -i file like @SysInclude { file }; not recommended" ); + lput0(" -I directory add directory to include file search path" ); + lput0(" -C directory add directory to LCM file search path" ); + lput0(" -F directory add directory to font metrics file search path" ); + lput0(" -H directory add directory to hyphenation file search path" ); + lput0(" -D directory add directory to database file search path" ); + lput0(" --option{value} set option e.g. --'@InitialFont{Times Base 10p}'"); + lput0(" -c file use file.li instead of lout.li for crossrefs" ); + lput0(" -M save memory (don't read in database indexes)" ); + lput0(" -x initializing run, not for ordinary use" ); + lput0(" -u print this usage message on stderr and exit" ); + lput0(" -V print version and configuration information" ); + lput0(" - a file name denoting standard input" ); + lputnl; } /* end PrintUsage */ +static void PrintVersion(FULL_CHAR *lib, FILE *fp) +{ + lput1("%s", LOUT_VERSION); + lput2("%-28s %s", + "Basser Lout written by:", "Jeffrey H. Kingston (jeff@it.usyd.edu.au)"); + lput2("%-28s %s", + "Free source available from:", "ftp://ftp.cs.usyd.edu.au/jeff/lout"); + lput3("%-28s %s %s", + "This executable compiled:", __TIME__, __DATE__); + lput4("%-28s %s%s%s", "System include directory:", lib, STR_DIR, INCL_DIR); + lput4("%-28s %s%s%s", "System database directory:", lib, STR_DIR, DATA_DIR); + lput1("Database index files created afresh automatically:%s", + USE_STAT ? " yes" : " no"); + lput1("Safe execution (disabling system()) is default:%s", + SAFE_DFT ? " yes" : " no"); + lput1("strcoll() used for sorting by default:%s", COLLATE ? " yes" : " no"); + lput1("PDF compression on:%s", PDF_COMPRESSION ? " yes" : " no"); + lput1("Debugging (-d, -dd, -ddd flags) available:%s", DEBUG_ON ?" yes":" no"); + lputnl; + lput0("Basser Lout comes with ABSOLUTELY NO WARRANTY."); + lput0("This is free software, and you are welcome to"); + lput0("redistribute it under certain conditions. For"); + lput0("details on both points, consult the GNU General"); + lput0("Public License (distributed with this software)."); +} /* end PrintVersion */ + /*@::GetArg(), main()@********************************************************/ /* */ @@ -417,33 +448,7 @@ case CH_FLAG_VERSION: - fprintf(stderr, "%s\n", LOUT_VERSION); - fprintf(stderr, "%-28s %s\n", - "Basser Lout written by:", "Jeffrey H. Kingston (jeff@cs.usyd.edu.au)"); - fprintf(stderr, "%-28s %s\n", - "Free source available from:", "ftp://ftp.cs.usyd.edu.au/jeff/lout"); - fprintf(stderr, "%-28s %s %s\n", - "This executable compiled:", __TIME__, __DATE__); - fprintf(stderr, "%-28s %s%s%s\n", "System include directory:", - lib, STR_DIR, INCL_DIR); - fprintf(stderr, "%-28s %s%s%s\n", "System database directory:", - lib, STR_DIR, DATA_DIR); - fprintf(stderr, "Database index files created afresh automatically:%s\n", - USE_STAT ? " yes" : " no"); - fprintf(stderr, "Safe execution (disabling system()) is default:%s\n", - SAFE_DFT ? " yes" : " no"); - fprintf(stderr, "strcoll() used for sorting by default:%s\n", - COLLATE ? " yes" : " no"); - fprintf(stderr, "PDF compression on:%s\n", - PDF_COMPRESSION ? " yes" : " no"); - fprintf(stderr, "Debugging (-d, -dd, -ddd flags) available:%s\n", - DEBUG_ON ? " yes" : " no"); - fprintf(stderr, "\n"); - fprintf(stderr, "Basser Lout comes with ABSOLUTELY NO WARRANTY.\n"); - fprintf(stderr, "This is free software, and you are welcome to\n"); - fprintf(stderr, "redistribute it under certain conditions. For\n"); - fprintf(stderr, "details on both points, consult the GNU General\n"); - fprintf(stderr, "Public License (distributed with this software).\n"); + PrintVersion(lib, stderr); exit(0); break; @@ -530,7 +535,8 @@ sscanf(argv[i], "-m%ld", &MemCheckLong); MemCheck = (POINTER) MemCheckLong; - fprintf(stderr, "checking memory location %ld\n", (long) MemCheck); + fprintf(stderr, "checking memory location %ld%s", + (long) MemCheck, (char *) STR_NEWLINE); break; @@ -561,7 +567,8 @@ { case ' ': case '\t': - case '\n': + case CH_CR: + case CH_LF: case '{': case '}': @@ -651,14 +658,14 @@ out_fp = stdout; } else - { out_fp = StringFOpen(outfile, - BackEnd->code == PLAINTEXT ? WRITE_TEXT : WRITE_BINARY); + { out_fp = StringFOpen(outfile, WRITE_FILE); if( out_fp == null ) Error(1, 27, "cannot open output file %s", FATAL, no_fpos, outfile); } /* initialize miscellaneous modules */ ColourInit(); + TextureInit(); LanguageInit(); BackEnd->PrintInitialize(out_fp); @@ -728,6 +735,7 @@ load(KW_UNDERLINE, UNDERLINE, FALSE, TRUE, FALSE, DEFAULT_PREC); load(KW_COLOUR, COLOUR, TRUE, TRUE, FALSE, DEFAULT_PREC); load(KW_COLOR, COLOUR, TRUE, TRUE, FALSE, DEFAULT_PREC); + load(KW_TEXTURE, TEXTURE, TRUE, TRUE, FALSE, DEFAULT_PREC); load(KW_OUTLINE, OUTLINE, FALSE, TRUE, FALSE, DEFAULT_PREC); load(KW_LANGUAGE, LANGUAGE, TRUE, TRUE, FALSE, DEFAULT_PREC); load(KW_CURR_LANG, CURR_LANG, FALSE, FALSE, FALSE, DEFAULT_PREC); @@ -820,12 +828,24 @@ /* initialise lexical analyser */ LexPush(FirstFile(SOURCE_FILE), 0, SOURCE_FILE, 1, FALSE); + /* alternative processing which tests running time of lexer+parser only */ + /* *** + if( TRUE ) + { + InitParser(cross_db); + t = NewToken(BEGIN, no_fpos, 0, 0, BEGIN_PREC, StartSym); + res = Parse(&t, StartSym, TRUE, FALSE); + exit(0); + return 0; + } + *** */ + /* process input files */ InitParser(cross_db); t = NewToken(BEGIN, no_fpos, 0, 0, BEGIN_PREC, StartSym); res = Parse(&t, StartSym, TRUE, TRUE); - debug0(DGT, D, "calling TransferEnd(res) from main()"); DisposeObject(CommandOptions); + debug0(DGT, D, "calling TransferEnd(res) from main()"); TransferEnd(res); TransferClose(); diff -u --recursive --new-file -u --recursive --new-file lout-3.26/z02.c lout-3.27/z02.c --- lout-3.26/z02.c Tue Oct 8 16:09:07 2002 +++ lout-3.27/z02.c Sun Nov 17 09:10:54 2002 @@ -1,9 +1,9 @@ /*@z02.c:Lexical Analyser:Declarations@***************************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.26) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.27) */ /* COPYRIGHT (C) 1991, 2002 Jeffrey H. Kingston */ /* */ -/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */ +/* Jeffrey H. Kingston (jeff@it.usyd.edu.au) */ /* Basser Department of Computer Science */ /* The University of Sydney 2006 */ /* AUSTRALIA */ @@ -31,6 +31,10 @@ /* from Waite, W. M.: The Cost of Lexical Analysis, in Software - Practice */ /* and Experience, v16, pp473-488 (May 1986). */ /* */ +/* Converted 8 November 2002 to handle DOS etc. line endings. The end of */ +/* a line is now taken to be the second end-of-line character when there */ +/* are two of them. With this rule it's quite easy to do the conversion. */ +/* */ /*****************************************************************************/ #include "externs.h" #define BUFFER_SIZE 8192 /* size of buffer for block read */ @@ -143,7 +147,7 @@ int val; FULL_CHAR *str; { int i; for( i = 0; str[i] != '\0'; i++ ) - chtbl[ str[i] ] = val; + chtbl[ str[i] ] = val; } /* end initchtbl */ void LexInit(void) @@ -165,7 +169,8 @@ initchtbl(CSPACE, STR_SPACE); initchtbl(FORMFEED,STR_FORMFEED); initchtbl(TAB, STR_TAB); - initchtbl(NEWLINE, STR_NEWLINE); + chtbl[CH_LF] = NEWLINE; + chtbl[CH_CR] = NEWLINE; chtbl['\0'] = ENDFILE; stack_free = -1; } /* end LexInit */ @@ -237,7 +242,7 @@ Error(2, 3, "run out of memory when opening file %s", FATAL, PosOfFile(x), FullFileName(x)); buf = chpt = &mem_block[MAX_LINE]; - last_char = CH_NEWLINE; + last_char = CH_CR; this_file = x; offset = offs; first_line_num = lnum; same_file = same; ftype = ftyp; next_token = nilobj; @@ -301,8 +306,8 @@ #define setword(typ, res, file_pos, str, len) \ { NewWord(res, typ, len, &file_pos); \ FposCopy(fpos(res), file_pos); \ - for( c = 0; c < len; c++ ) string(res)[c] = str[c]; \ - string(res)[c] = '\0'; \ + for( ch = 0; ch < len; ch++ ) string(res)[ch] = str[ch]; \ + string(res)[ch] = '\0'; \ } @@ -336,13 +341,16 @@ * need this workaround (I haven't tried compiling lout with gcc * though, as the result will need cygwin.dll to run). */ + +/* *** retired by JeffK 2002-11-08 since now reading in binary mode { register FULL_CHAR *p; for (p = chpt; p < limit; ++p) { - if (*p == (FULL_CHAR) CH_NEWLINE) + if (*p == (FULL_CHAR) CH_LF) --res; } } +*** */ #endif /* DB_FIX */ debug1(DLA, DD, "LexNextTokenPos() returning %ld", res); @@ -368,7 +376,7 @@ if( blksize != 0 && chpt < limit ) { debugcond0(DLA, DD, stack_free <= 1, "srcnext: transferring."); col = buf; - while( (*--col = *--limit) != CH_NEWLINE ); + while( chtbl[(*--col = *--limit)] != NEWLINE ); frst = col + 1; limit++; blksize = 0; } @@ -384,11 +392,11 @@ blksize = fread( (char *) buf, sizeof(char), BUFFER_SIZE, fp); if( blksize > 0 ) last_char = *(buf + blksize - 1); - if( blksize < BUFFER_SIZE && last_char != CH_NEWLINE ) + if( blksize < BUFFER_SIZE && chtbl[last_char] != NEWLINE ) { - /* at end of file since blksize = 0; so add missing newline char */ + /* at end of file since blksize < BUFFER_SIZE; add missing newline char */ blksize++; - last_char = *(buf+blksize-1) = CH_NEWLINE; + last_char = *(buf+blksize-1) = CH_LF; /* this adjustment breaks LexNextTokenPos, so fatal error if database */ if( ftype == DATABASE_FILE ) @@ -401,7 +409,7 @@ debugcond4(DLA, DD, stack_free <= 1, "srcnext: %d = fread(0x%x, %d, %d, fp)", blksize, buf, sizeof(char), BUFFER_SIZE); - frst = buf; limit = buf + blksize; *limit = CH_NEWLINE; + frst = buf; limit = buf + blksize; *limit = CH_LF; } /* if nothing more to read, make this clear */ @@ -427,7 +435,7 @@ { FULL_CHAR *startpos; /* where the latest token started */ register FULL_CHAR *p, *q; /* pointer to current input char */ - register int c; /* temporary character (really char) */ + register int ch; /* temporary character (really char) */ OBJECT res; /* result token */ int vcount, hcount; /* no. of newlines and spaces seen */ @@ -445,7 +453,7 @@ { case ESCAPE: - if( ftype==DATABASE_FILE && *p>='a' && *p<='z' && *(p+1) == '{' /*}*/ ) + if( ftype==DATABASE_FILE && *p>='a' && *p<='z' && *(p+1) == '{' ) { res = NewToken(LBR, &file_pos, 0, 0, (unsigned) *p, StartSym); p += 2; } @@ -461,9 +469,21 @@ case COMMENT: debug1(DLA, DDD, "LexGetToken%s: comment", EchoFilePos(&file_pos)); - while( (c = *p++) != CH_NEWLINE && c != '\0' ); - if( c == CH_NEWLINE ) + while( chtbl[(ch = *p++)] != NEWLINE && ch != '\0' ); + if( chtbl[ch] == NEWLINE ) { + /* skip over second newline character if any */ + if( ch == CH_LF ) + { + if( *p == CH_CR ) + p++; + } + else /* ch == CH_CR */ + { + if( *p == CH_LF ) + p++; + } + /* do NEWLINE action, only preserve existing horizontal space */ /* and don't count the newline in the vcount. */ chpt = p; srcnext(); @@ -493,6 +513,19 @@ case NEWLINE: + /* skip over second newline character if any */ + if( *(p-1) == CH_LF ) + { + if( *p == CH_CR ) + p++; + } + else /* *(p-1) == CH_CR */ + { + if( *p == CH_LF ) + p++; + } + + /* do newline action */ chpt = p; srcnext(); line_num(file_pos)++; col_num(file_pos) = 0; @@ -533,7 +566,7 @@ line_num(file_pos) = first_line_num; } frst = limit = chpt = buf; - blksize = 0; last_char = CH_NEWLINE; + blksize = 0; last_char = CH_LF; srcnext(); startline = (p = chpt) - 1; hcount = 0; @@ -557,9 +590,6 @@ /* input ends with "@End @FilterOut" */ res = NewToken(END, &file_pos, 0, 0, END_PREC, FilterOutSym); - /* *** - next_token = NewToken(CLOSURE,&file_pos,0,0,NO_PREC,FilterOutSym); - *** */ --p; startline = p; break; @@ -585,11 +615,12 @@ col_num(file_pos) = (startpos = p-1) - startline; while( chtbl[*p++] == OTHER ); - c = p - startpos - 1; + /* using ch as a real int here, not a char */ + ch = p - startpos - 1; do - { res = SearchSym(startpos, c); - --c; --p; - } while( c > 0 && res == nilobj ); + { res = SearchSym(startpos, ch); + --ch; --p; + } while( ch > 0 && res == nilobj ); goto MORE; /* 7 lines down */ @@ -635,7 +666,7 @@ New(t, LBR); } fname = Parse(&t, nilobj, FALSE, FALSE); - fname = ReplaceWithTidy(fname, FALSE); + fname = ReplaceWithTidy(fname, ACAT_TIDY); if( scope_suppressed ) SuppressScope(); if( !is_word(type(fname)) ) { Error(2, 10, "name of include file expected here", @@ -647,15 +678,31 @@ len = StringLength(string(fname)) - StringLength(SOURCE_SUFFIX); if( len >= 0 && StringEqual(&string(fname)[len], SOURCE_SUFFIX) ) StringCopy(&string(fname)[len], STR_EMPTY); - debug0(DFS, D, " calling DefineFile from LexGetToken"); - fnum = DefineFile(string(fname), STR_EMPTY, &fpos(fname), + if( !InDefinitions || + (FileNum(string(fname), STR_EMPTY) == NO_FILE && + FileNum(string(fname), SOURCE_SUFFIX) == NO_FILE) ) + { + /* need to define and read this include file */ + debug1(DFS, D, " calling DefineFile %s from LexGetToken", + string(fname)); + fnum = DefineFile(string(fname), STR_EMPTY, &fpos(fname), INCLUDE_FILE, predefined(res)==INCLUDE ? INCLUDE_PATH : SYSINCLUDE_PATH); - Dispose(fname); - LexPush(fnum, 0, INCLUDE_FILE, 1, FALSE); - res = LexGetToken(); - vcount++; /** TEST ADDITION! **/ - p = chpt; + Dispose(fname); + LexPush(fnum, 0, INCLUDE_FILE, 1, FALSE); + res = LexGetToken(); + vcount++; /** TEST ADDITION! **/ + p = chpt; + } + else + { + debug1(DFS, D, " skipping DefineFile %s from LexGetToken", + string(fname)); + res = nilobj; + p = chpt; + Dispose(fname); + break; + } } else if( predefined(res) == END ) res = NewToken(predefined(res), &file_pos,0,0,precedence(res),nilobj); @@ -728,9 +775,14 @@ chpt = p; vspace(res) = vcount; hspace(res) = hcount; + debug5(DLA, DD, "LexGetToken%s returning %s %s %d.%d", + EchoFilePos(&file_pos), Image(type(res)), EchoToken(res), + vspace(res), hspace(res)); + /* *** debugcond5(DLA, DD, stack_free <= 1, "LexGetToken%s returning %s %s %d.%d", EchoFilePos(&file_pos), Image(type(res)), EchoToken(res), vspace(res), hspace(res)); + *** */ return res; } /* end LexGetToken */ @@ -745,40 +797,100 @@ /* terminate at matching right brace. */ /* */ /* If lessskip is true it means that we should skip only up to and */ -/* including the first newline character, as opposed to the usual */ +/* including the first newline character sequence, as opposed to the usual */ /* skipping of all initial white space characters. */ /* */ /*****************************************************************************/ +/*****************************************************************************/ +/* */ +/* print(ch) */ +/* */ +/* Add ch to the result of the verbatim scan. If chtbl[ch] == NEWLINE, */ +/* this means to add whatever sequence of characters counts as the end */ +/* of line sequence in today's operating system. Otherwise, just add ch. */ +/* */ +/* The code that calls print() ensures that only one character is passed */ +/* to print() per newline sequence; this could be either CH_LF or CH_CR. */ +/* */ +/*****************************************************************************/ + #define print(ch) \ { debug2(DLA, D, "print(%c), bufftop = %d", ch, bufftop); \ if( fp == NULL ) \ { if( bufftop < MAX_BUFF ) \ { if( chtbl[ch] == NEWLINE ) \ - { res = BuildLines(res, buff, &bufftop); \ + { res = BuildLines(res, buff, &bufftop, hs_lnum_overshoot); \ } \ else buff[bufftop++] = ch; \ } \ } \ - else putc(ch, fp); \ + else if( chtbl[ch] != NEWLINE ) \ + putc(ch, fp); \ + else \ + StringFPuts(STR_NEWLINE, fp); \ } -#define clear() \ -{ int i; \ - for( i = 0; i < hs_top; i++ ) print(hs_buff[i]); \ - hs_top = 0; \ -} +/*****************************************************************************/ +/* */ +/* hold(ch) */ +/* */ +/* At this point we are thinking about print(ch) but we are not certain */ +/* yet, so ch is held pending a decision. */ +/* */ +/* The code that calls hold() ensures that only one character is passed */ +/* to hold() per newline sequence; this could be either CH_LF or CH_CR. */ +/* */ +/*****************************************************************************/ #define hold(ch) \ { if( hs_top == MAX_BUFF ) clear(); \ hs_buff[hs_top++] = ch; \ + if( chtbl[ch] == NEWLINE ) \ + hs_lnum_overshoot++; \ } -static OBJECT BuildLines(OBJECT current, FULL_CHAR *buff, int *bufftop) -{ OBJECT wd, res, gp, gpword; int c; +/*****************************************************************************/ +/* */ +/* clear() */ +/* */ +/* A decision has been made that all currently held characters are now */ +/* to be printed. */ +/* */ +/*****************************************************************************/ + +#define clear() \ +{ int i; \ + for( i = 0; i < hs_top; i++ ) \ + { print(hs_buff[i]); \ + if( chtbl[hs_buff[i]] == NEWLINE ) \ + hs_lnum_overshoot--; \ + } \ + hs_top = 0; \ + assert(hs_lnum_overshoot == 0, "clear(): hs_lnum_overshoot!"); \ +} + +/*****************************************************************************/ +/* */ +/* OBJECT BuildLines(current, buff, bufftop, ladj) */ +/* */ +/* Add one line containing word buff to the growing set of verbatim lines. */ +/* Adjust the line number of file_pos by ladj to account for extra lines */ +/* that we may be holding, which would otherwise cause us to overestimate */ +/* which line we are on. */ +/* */ +/*****************************************************************************/ + +static OBJECT BuildLines(OBJECT current, FULL_CHAR *buff, int *bufftop, int ladj) +{ OBJECT wd, res, gp, gpword; int ch; FILE_POS xfp; + + /* adjust file position since we may have been holding stuff */ + file_num(xfp) = file_num(file_pos); + line_num(xfp) = line_num(file_pos) - ladj; + col_num(xfp) = 1; /* build a new word and reset the buffer */ - setword(WORD, wd, file_pos, buff, *bufftop); + setword(WORD, wd, xfp, buff, *bufftop); debug1(DLA, D, "BuildLines(current, %s)", EchoObject(wd)); *bufftop = 0; @@ -801,8 +913,8 @@ New(gp, GAP_OBJ); mark(gap(gp)) = FALSE; join(gap(gp)) = FALSE; - FposCopy(fpos(gp), file_pos); - gpword = MakeWord(WORD, AsciiToFull("1vx"), &file_pos); + FposCopy(fpos(gp), xfp); + gpword = MakeWord(WORD, AsciiToFull("1vx"), &xfp); Link(gp, gpword); Link(res, gp); Link(res, wd); @@ -820,6 +932,7 @@ BOOLEAN skipping; /* TRUE when skipping initial spaces */ FULL_CHAR hs_buff[MAX_BUFF]; /* hold spaces here in case last */ int hs_top; /* next free spot in hs_buff */ + int hs_lnum_overshoot = 0; /* subtract this from lnum */ FULL_CHAR buff[MAX_BUFF]; /* hold line here if not to file */ int bufftop; /* top of buff */ OBJECT res = nilobj; /* result object if not to file */ @@ -857,8 +970,23 @@ case NEWLINE: + /* skip over second newline character if any */ + if( *(p-1) == CH_LF ) + { + if( *p == CH_CR ) + p++; + } + else /* c == CH_CR */ + { + if( *p == CH_LF ) + p++; + } + + /* sort out skipping and holding */ if( !skipping ) hold(*(p-1)); if( lessskip ) skipping = FALSE; + + /* perform newline action */ chpt = p; srcnext(); line_num(file_pos)++; col_num(file_pos) = 0; @@ -925,7 +1053,7 @@ FATAL, &fpos(t), KW_LBR, sysinc ? KW_SYSINCLUDE : KW_INCLUDE); incl_fname = Parse(&t, nilobj, FALSE, FALSE); p = chpt; - incl_fname = ReplaceWithTidy(incl_fname, FALSE); + incl_fname = ReplaceWithTidy(incl_fname, ACAT_TIDY); if( !is_word(type(incl_fname)) ) Error(2, 19, "expected file name here", FATAL,&fpos(incl_fname)); debug0(DFS, D, " calling DefineFile from LexScanVerbatim"); @@ -960,7 +1088,7 @@ break; }; - print('\n'); + print(CH_LF); if( p - startline >= MAX_LINE ) { col_num(file_pos) = 1; diff -u --recursive --new-file -u --recursive --new-file lout-3.26/z03.c lout-3.27/z03.c --- lout-3.26/z03.c Tue Oct 8 16:11:31 2002 +++ lout-3.27/z03.c Sun Nov 17 09:11:03 2002 @@ -1,9 +1,9 @@ /*@z03.c:File Service:Declarations, no_fpos@******************************** */ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.26) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.27) */ /* COPYRIGHT (C) 1991, 2002 Jeffrey H. Kingston */ /* */ -/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */ +/* Jeffrey H. Kingston (jeff@it.usyd.edu.au) */ /* Basser Department of Computer Science */ /* The University of Sydney 2006 */ /* AUSTRALIA */ @@ -136,30 +136,38 @@ } /* end ftab_retrieve */ #if DEBUG_ON -static void ftab_debug(FILE_TABLE S, FILE *fp) +static void ftab_debug(FILE_TABLE S) { int i; OBJECT x, link, y; - fprintf(fp, " table size: %d; current number of files: %d\n", + FULL_CHAR buff[MAX_BUFF]; + debug2(DFS, D, " table size: %d; current number of files: %d", ftab_size(S), ftab_count(S)); for( i = 0; i < ftab_size(S); i++ ) { x = ftab_num(S, i); - fprintf(fp, " ftab_num(S, %d) = %s\n", i, + debug2(DFS, D, " ftab_num(S, %d) = %s", i, x == nilobj ? AsciiToFull("") : !is_word(type(x)) ? AsciiToFull("not WORD!") : string(x) ); } - fprintf(fp, "\n"); + debug0(DFS, D, ""); for( i = 0; i < ftab_size(S); i++ ) { x = ftab_name(S, i); - fprintf(fp, " ftab_name(S, %d) =", i); if( x == nilobj ) - fprintf(fp, " "); + { + debug1(DFS, D, " ftab_name(S, %d) = ", i); + } else if( type(x) != ACAT ) - fprintf(fp, " not ACAT!"); - else for( link = Down(x); link != x; link = NextDown(link) ) - { Child(y, link); - fprintf(fp, " %s", - is_word(type(y)) ? string(y) : AsciiToFull("not-WORD!")); + { + debug1(DFS, D, " ftab_name(S, %d) = not ACAT!>", i); + } + else + { + StringCopy(buff, STR_EMPTY); + for( link = Down(x); link != x; link = NextDown(link) ) + { Child(y, link); + StringCat(buff, STR_SPACE); + StringCat(buff, is_word(type(y)) ? string(y):AsciiToFull("not-WORD!")); + } + debug2(DFS, D, " ftab_name(S, %d) =%s", i, buff); } - fprintf(fp, "\n"); } } /* end ftab_debug */ @@ -174,9 +182,11 @@ static FILE_TABLE file_tab; /* the file table */ static OBJECT file_type[MAX_TYPES]; /* files of each type */ static OBJECT file_path[MAX_PATHS]; /* the search paths */ +/* ***don't need these any more static char *file_mode[MAX_TYPES] = { READ_TEXT, READ_TEXT, READ_TEXT, READ_BINARY, READ_TEXT, READ_TEXT, READ_TEXT, READ_BINARY, READ_TEXT, READ_TEXT }; +*** */ /*****************************************************************************/ @@ -230,6 +240,9 @@ /* Declare a file whose name is str plus suffix and whose fpos is xfpos. */ /* The file type is ftype, and its search path is fpath. */ /* */ +/* If ignore_dup is TRUE, any repeated definition of the same file with */ +/* the same type will be ignored. The result in that case will be the */ +/* */ /*****************************************************************************/ FILE_NUM DefineFile(FULL_CHAR *str, FULL_CHAR *suffix, @@ -260,7 +273,7 @@ used_suffix(fname) = FALSE; ftab_insert(fname, &file_tab); debug1(DFS, DD, "DefineFile returning %s", string(fname)); - ifdebug(DFS, DD, ftab_debug(file_tab, stderr)); + ifdebug(DFS, DD, ftab_debug(file_tab)); return file_number(fname); } /* end DefineFile */ @@ -333,6 +346,7 @@ return (FILE_NUM) i; } /* end FileNum */ + /*****************************************************************************/ /* */ /* FILE_NUM DatabaseFileNum(FILE_POS *xfpos) */ @@ -453,6 +467,23 @@ /*****************************************************************************/ /* */ +/* int FileType(FILE_NUM fnum) */ +/* */ +/* Return the type of file fnum. */ +/* */ +/*****************************************************************************/ + +int FileType(FILE_NUM fnum) +{ OBJECT x; + x = ftab_num(file_tab, fnum); + assert( x != nilobj, "FileType: x == nilobj!" ); + if( Down(x) != x ) Child(x, Down(x)); + return type_of_file(x); +} /* end FileType */ + + +/*****************************************************************************/ +/* */ /* FULL_CHAR *EchoFilePos(pos) */ /* */ /* Returns a string reporting the value of file position pos. */ @@ -630,7 +661,7 @@ BOOLEAN check_lt, OBJECT *full_name, FILE_POS *xfpos, char *read_mode, BOOLEAN *used_source_suffix) { FULL_CHAR buff[MAX_BUFF], buff2[MAX_BUFF]; - OBJECT link, y, cpath; FILE *fp, *fp2; + OBJECT link, y = nilobj, cpath; FILE *fp, *fp2; debug4(DFS, DD, "[ SearchPath(%s, %s, %s, %s, -)", str, EchoObject(fpath), bool(check_ld), bool(check_lt)); @@ -676,7 +707,7 @@ StringCopy(buff2, buff); StringCopy(&buff2[StringLength(buff2) - StringLength(INDEX_SUFFIX)], DATA_SUFFIX); - fp2 = StringFOpen(buff2, READ_TEXT); + fp2 = StringFOpen(buff2, READ_FILE); debug1(DFS, DD, fp2 == null ? " fail %s" : " succeed %s", buff2); if( fp2 != null ) { fclose(fp2); @@ -730,7 +761,7 @@ { StringCopy(buff2, buff); StringCat(buff2, SOURCE_SUFFIX); - fp2 = StringFOpen(buff2, READ_TEXT); + fp2 = StringFOpen(buff2, READ_FILE); debug1(DFS, DD, fp2 == null ? " fail %s" : " succeed %s", buff2); if( fp2 != null ) { if( fp != null ) @@ -773,13 +804,19 @@ fname = ftab_num(file_tab, fnum); if( Down(fname) != fname ) { Child(y, Down(fname)); - fp = StringFOpen(string(y), file_mode[type_of_file(fname)]); + /* fp = StringFOpen(string(y), file_mode[type_of_file(fname)]); */ + fp = StringFOpen(string(y), READ_FILE); debug1(DFS,DD,fp==null ? " failed on %s" : " succeeded on %s", string(y)); } else - { fp = SearchPath(string(fname), file_path[path(fname)], check_ld, + { + /* *** + fp = SearchPath(string(fname), file_path[path(fname)], check_ld, check_lt, &full_name, &fpos(fname), file_mode[type_of_file(fname)], &used_source_suffix); + *** */ + fp = SearchPath(string(fname), file_path[path(fname)], check_ld, check_lt, + &full_name, &fpos(fname), READ_FILE, &used_source_suffix); if( full_name != nilobj ) Link(fname, full_name); used_suffix(fname) = used_source_suffix; } @@ -811,7 +848,7 @@ assert( typ == INCGRAPHIC || typ == SINCGRAPHIC, "OpenIncGraphicFile!" ); p = (typ == INCGRAPHIC ? INCLUDE_PATH : SYSINCLUDE_PATH); fp = SearchPath(str, file_path[p], FALSE, FALSE, full_name, xfpos, - READ_TEXT, &used_source_suffix); + READ_FILE, &used_source_suffix); if( *full_name == nilobj ) *full_name = MakeWord(WORD, str, xfpos); if( fp == null ) @@ -840,7 +877,7 @@ else { system(buff); - fp = fopen(LOUT_EPS, READ_TEXT); + fp = fopen(LOUT_EPS, READ_FILE); *compressed = TRUE; } } diff -u --recursive --new-file -u --recursive --new-file lout-3.26/z04.c lout-3.27/z04.c --- lout-3.26/z04.c Tue Oct 8 16:09:15 2002 +++ lout-3.27/z04.c Sun Nov 17 20:21:05 2002 @@ -1,9 +1,9 @@ /*@z04.c:Token Service:NewToken(), CopyTokenList()@***************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.26) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.27) */ /* COPYRIGHT (C) 1991, 2002 Jeffrey H. Kingston */ /* */ -/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */ +/* Jeffrey H. Kingston (jeff@it.usyd.edu.au) */ /* Basser Department of Computer Science */ /* The University of Sydney 2006 */ /* AUSTRALIA */ @@ -195,6 +195,7 @@ case BREAK: case UNDERLINE: case COLOUR: + case TEXTURE: case OUTLINE: case LANGUAGE: case CURR_LANG: @@ -218,6 +219,7 @@ case GRAPHIC: case LINK_SOURCE: case LINK_DEST: + case LINK_DEST_NULL: case LINK_URL: case ACAT: case HCAT: diff -u --recursive --new-file -u --recursive --new-file lout-3.26/z05.c lout-3.27/z05.c --- lout-3.26/z05.c Tue Oct 8 16:09:16 2002 +++ lout-3.27/z05.c Sun Nov 17 20:21:23 2002 @@ -1,9 +1,9 @@ /*@z05.c:Read Definitions:ReadLangDef()@**************************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.26) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.27) */ /* COPYRIGHT (C) 1991, 2002 Jeffrey H. Kingston */ /* */ -/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */ +/* Jeffrey H. Kingston (jeff@it.usyd.edu.au) */ /* Basser Department of Computer Science */ /* The University of Sydney 2006 */ /* AUSTRALIA */ @@ -65,7 +65,7 @@ return; } inside = Parse(&t, encl, FALSE, FALSE); - inside = ReplaceWithTidy(inside, FALSE); + inside = ReplaceWithTidy(inside, ACAT_TIDY); LanguageDefine(names, inside); return; } /* end ReadLangDef */ @@ -75,12 +75,15 @@ /* */ /* ReadPrependDef(typ, encl) */ /* */ -/* Read @Prepend { } and record its presence. */ +/* Read @PrependGraphic { } and record its presence, unless it */ +/* is there already; we allow multiple occurrences but only want to print */ +/* the file once. */ /* */ /*****************************************************************************/ void ReadPrependDef(unsigned typ, OBJECT encl) { OBJECT t, fname; + FILE_NUM fnum; t = LexGetToken(); if( type(t) != LBR ) { Error(5, 5, "left brace expected here in %s declaration", @@ -89,14 +92,16 @@ return; } fname = Parse(&t, encl, FALSE, FALSE); - fname = ReplaceWithTidy(fname, FALSE); + fname = ReplaceWithTidy(fname, ACAT_TIDY); if( !is_word(type(fname)) ) { Error(5, 6, "name of %s file expected here", WARN, &fpos(fname),KW_PREPEND); DisposeObject(fname); return; } debug0(DFS, D, " calling DefineFile from ReadPrependDef"); - DefineFile(string(fname), STR_EMPTY, &fpos(fname), PREPEND_FILE, + fnum = FileNum(string(fname), STR_EMPTY); + if( fnum == NO_FILE || FileType(fnum) != PREPEND_FILE ) + DefineFile(string(fname), STR_EMPTY, &fpos(fname), PREPEND_FILE, typ == PREPEND ? INCLUDE_PATH : SYSINCLUDE_PATH); } /* end ReadPrependDef */ @@ -120,7 +125,7 @@ return; } fname = Parse(&t, encl, FALSE, FALSE); - fname = ReplaceWithTidy(fname, FALSE); + fname = ReplaceWithTidy(fname, ACAT_TIDY); if( !is_word(type(fname)) ) { Error(5, 6, "name of %s file expected here", WARN, &fpos(fname), KW_INCG_REPEATED); @@ -166,7 +171,7 @@ WARN, &fpos(t), KW_DATABASE); } fname = Parse(&t, encl, FALSE, FALSE); - fname = ReplaceWithTidy(fname, FALSE); + fname = ReplaceWithTidy(fname, ACAT_TIDY); if( !is_word(type(fname)) ) { Error(5, 10, "name of %s file expected here", WARN, &fpos(fname), KW_DATABASE); @@ -270,6 +275,7 @@ case BREAK: case UNDERLINE: case COLOUR: + case TEXTURE: case OUTLINE: case LANGUAGE: case CURR_LANG: @@ -292,6 +298,7 @@ case GRAPHIC: case LINK_SOURCE: case LINK_DEST: + case LINK_DEST_NULL: case LINK_URL: case NOT_REVEALED: diff -u --recursive --new-file -u --recursive --new-file lout-3.26/z06.c lout-3.27/z06.c --- lout-3.26/z06.c Tue Oct 8 16:09:18 2002 +++ lout-3.27/z06.c Sun Nov 17 20:21:57 2002 @@ -1,9 +1,9 @@ /*@z06.c:Parser:PushObj(), PushToken(), etc.@*********************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.26) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.27) */ /* COPYRIGHT (C) 1991, 2002 Jeffrey H. Kingston */ /* */ -/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */ +/* Jeffrey H. Kingston (jeff@it.usyd.edu.au) */ /* Basser Department of Computer Science */ /* The University of Sydney 2006 */ /* AUSTRALIA */ @@ -44,6 +44,7 @@ static OBJECT tok_stack[MAX_STACK]; /* stack of tokens */ static int ttop = -1; /* top of tok_stack */ static int unknown_count = 0; /* no. of unknown symbols */ + BOOLEAN InDefinitions = TRUE; /* TRUE when in definitions */ #if DEBUG_ON static BOOLEAN debug_now = FALSE; /* TRUE when want to debug */ #endif @@ -147,7 +148,7 @@ /*****************************************************************************/ static void HuntCommandOptions(OBJECT x) -{ OBJECT colink, coname, coval, opt, y, link, sym; BOOLEAN found; +{ OBJECT colink, coname, coval, opt = nilobj, y = nilobj, link, sym; BOOLEAN found; debug1(DOP, DD, "HuntCommandOptions(%s)", SymName(actual(x))); sym = actual(x); for( colink = Down(CommandOptions); colink != CommandOptions; @@ -440,6 +441,7 @@ case BREAK: case UNDERLINE: case COLOUR: + case TEXTURE: case OUTLINE: case LANGUAGE: case CURR_LANG: @@ -889,6 +891,7 @@ #if DEBUG_ON debug_now = TRUE; #endif + InDefinitions = FALSE; debugcond4(DOP, DD, debug_now, "[ Parse (first) (%s, %s, %s, %s)", EchoToken(*token), SymName(encl), bool(defs_allowed), bool(transfer_allowed)); @@ -1032,6 +1035,7 @@ case BREAK: case UNDERLINE: case COLOUR: + case TEXTURE: case OUTLINE: case LANGUAGE: case CURR_LANG: diff -u --recursive --new-file -u --recursive --new-file lout-3.26/z07.c lout-3.27/z07.c --- lout-3.26/z07.c Tue Oct 15 13:32:36 2002 +++ lout-3.27/z07.c Sun Nov 17 20:22:41 2002 @@ -1,9 +1,9 @@ /*@z07.c:Object Service:SplitIsDefinite(), DisposeObject()@*******************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.26) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.27) */ /* COPYRIGHT (C) 1991, 2002 Jeffrey H. Kingston */ /* */ -/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */ +/* Jeffrey H. Kingston (jeff@it.usyd.edu.au) */ /* Basser Department of Computer Science */ /* The University of Sydney 2006 */ /* AUSTRALIA */ @@ -195,7 +195,9 @@ /* */ /* OBJECT CopyObject(x, pos) */ /* */ -/* Make a copy of unsized object x, setting all file positions to *pos. */ +/* Make a copy of unsized object x, setting all file positions to *pos, */ +/* unless *pos is no_fpos, in which case set all file positions to what */ +/* they are in the object being copied. */ /* */ /*****************************************************************************/ @@ -279,6 +281,7 @@ case BREAK: case UNDERLINE: case COLOUR: + case TEXTURE: case OUTLINE: case LANGUAGE: case CURR_LANG: @@ -302,6 +305,7 @@ case GRAPHIC: case LINK_SOURCE: case LINK_DEST: + case LINK_DEST_NULL: case LINK_URL: case VCAT: case HCAT: @@ -453,6 +457,7 @@ case GRAPHIC: case LINK_SOURCE: case LINK_DEST: + case LINK_DEST_NULL: case LINK_URL: case ROTATE: case BACKGROUND: @@ -518,7 +523,7 @@ OBJECT xcomp[MAX_MELD], ycomp[MAX_MELD]; OBJECT xgaps[MAX_MELD], ygaps[MAX_MELD]; BOOLEAN is_equal; - OBJECT link, z, g; BOOLEAN jn; + OBJECT link, z = nilobj, g; BOOLEAN jn; int xlen, ylen, xi, yi; debug2(DOS, D, "Meld(%s, %s)", EchoObject(x), EchoObject(y)); assert(type(x) == ACAT, "Meld: type(x) != ACAT"); @@ -816,6 +821,7 @@ case GRAPHIC: case PLAIN_GRAPHIC: case LINK_DEST: + case LINK_DEST_NULL: case LINK_URL: case INCGRAPHIC: case SINCGRAPHIC: diff -u --recursive --new-file -u --recursive --new-file lout-3.26/z08.c lout-3.27/z08.c --- lout-3.26/z08.c Tue Oct 15 18:38:03 2002 +++ lout-3.27/z08.c Sun Nov 17 20:24:37 2002 @@ -1,9 +1,9 @@ /*@z08.c:Object Manifest:ReplaceWithSplit()@**********************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.26) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.27) */ /* COPYRIGHT (C) 1991, 2002 Jeffrey H. Kingston */ /* */ -/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */ +/* Jeffrey H. Kingston (jeff@it.usyd.edu.au) */ /* Basser Department of Computer Science */ /* The University of Sydney 2006 */ /* AUSTRALIA */ @@ -97,28 +97,34 @@ /*@::ReplaceWithTidy()@*******************************************************/ /* */ -/* OBJECT ReplaceWithTidy(x, one_word) */ +/* OBJECT ReplaceWithTidy(x, spacing) */ /* */ /* Replace object x with a tidier version in which juxtapositions are */ /* folded. If this is not possible, return the original object. */ /* */ -/* If one_word is TRUE, the result is to be a single QWORD with inter- */ -/* word spaces converted to single space characters. Otherwise an ACAT */ -/* is the preferred result. */ +/* Spacing can have value 0, 1, or 2, with the following meaning: */ /* */ -/* *** Meaning changed, now interword spaces are converted to the same */ -/* number of spaces to assist construction of sorting keys. */ +/* ACAT_TIDY An ACAT is the preferred result */ +/* */ +/* WORD_TIDY The result is to be a single QWORD with interword spaces */ +/* converted to as many space characters as there were. */ +/* */ +/* PARA_TIDY The result is to be a single QWORD with interword spaces */ +/* replaced by single spaces, and line ends marked by */ +/* newline characters. */ /* */ /*****************************************************************************/ -OBJECT ReplaceWithTidy(OBJECT x, BOOLEAN one_word) -{ static FULL_CHAR buff[MAX_BUFF]; /* the growing current word */ +OBJECT ReplaceWithTidy(OBJECT x, int spacing) +{ static FULL_CHAR buff[MAX_WORD]; /* the growing current word */ static int buff_len; /* length of current word */ static FILE_POS buff_pos; /* filepos of current word */ static unsigned buff_typ; /* WORD or QWORD of current */ OBJECT link, y, tmp, res; /* temporaries */ int i; - debug2(DOM, DD, "ReplaceWithTidy(%s, %s)", EchoObject(x), bool(one_word)); + debug2(DOM, DD, "ReplaceWithTidy(%s, %s)", EchoObject(x), + spacing == ACAT_TIDY ? "ACAT_TIDY" : + spacing == WORD_TIDY ? "WORD_TIDY" : "PARA_TIDY"); switch( type(x) ) { case ACAT: @@ -135,8 +141,9 @@ for( link = Down(x); link != x; link = NextDown(link) ) { Child(y, link); if( is_word(type(y)) ) - { if( buff_len + StringLength(string(y)) >= MAX_BUFF ) - Error(8, 1, "word is too long", WARN, &fpos(y)); + { if( buff_len + StringLength(string(y)) >= MAX_WORD ) + Error(8, 1, "word is too long (%d characters)", WARN, &fpos(y), + buff_len + StringLength(string(y))); else { if( buff_len == 0 ) FposCopy(buff_pos, fpos(y)); StringCopy(&buff[buff_len], string(y)); @@ -146,25 +153,60 @@ } else if( type(y) == GAP_OBJ ) { if( Down(y) != y || hspace(y) + vspace(y) > 0 ) - { if( one_word ) - { if( buff_len + hspace(y) + vspace(y) >= MAX_BUFF ) - Error(8, 2, "word is too long", WARN, &fpos(y)); - else - { for( i = 0; i < hspace(y) + vspace(y); i++ ) - { StringCopy(&buff[buff_len], AsciiToFull(" ")); - buff_len++; - } - buff_typ = QWORD; - } - } - else - { tmp = MakeWord(buff_typ, buff, &buff_pos); - buff_len = 0; buff_typ = WORD; - if( res == nilobj ) - { New(res, ACAT); - FposCopy(fpos(res), fpos(x)); - } - Link(res, tmp); Link(res, y); + { + switch( spacing ) + { + case WORD_TIDY: + + if( buff_len + hspace(y) + vspace(y) >= MAX_WORD ) + Error(8, 2, "word is too long (%d characters)", WARN, &fpos(y), + buff_len + hspace(y) + vspace(y) ); + else + { for( i = 0; i < hspace(y) + vspace(y); i++ ) + { StringCopy(&buff[buff_len], AsciiToFull(" ")); + buff_len++; + } + buff_typ = QWORD; + } + break; + + + case ACAT_TIDY: + + tmp = MakeWord(buff_typ, buff, &buff_pos); + buff_len = 0; buff_typ = WORD; + if( res == nilobj ) + { New(res, ACAT); + FposCopy(fpos(res), fpos(x)); + } + Link(res, tmp); Link(res, y); + break; + + + case PARA_TIDY: + + if( buff_len + hspace(y) + vspace(y) >= MAX_WORD ) + Error(8, 2, "word is too long (%d characters)", WARN, &fpos(y), + buff_len + hspace(y) + vspace(y)); + else + { + for( i = 0; i < vspace(y); i++ ) + { StringCopy(&buff[buff_len], STR_NEWLINE); + buff_len++; + } + for( i = 0; i < hspace(y); i++ ) + { StringCopy(&buff[buff_len], STR_SPACE); + buff_len++; + } + buff_typ = QWORD; + } + break; + + + default: + + assert(FALSE, "bad spacing type in ReplaceWithTidy"); + break; } } } @@ -300,7 +342,7 @@ debug1(DOM, DD, "manifesting gap, style = %s", EchoStyle(style)); z = Manifest(z, env, &new_style, nbt, nft, &ntarget, crs, FALSE, FALSE, enclose, fcr); debug1(DOM, DD, "replacing with tidy, style = %s", EchoStyle(style)); - z = ReplaceWithTidy(z, FALSE); + z = ReplaceWithTidy(z, ACAT_TIDY); debug1(DOM, DD, "calling GetGap, style = %s", EchoStyle(style)); GetGap(z, style, &gap(g), &res_inc); if( bt[perp] ) Link(bt[perp], g); @@ -402,7 +444,7 @@ OBJECT fthr[2], OBJECT *target, OBJECT *crs, BOOLEAN ok, BOOLEAN need_expand, OBJECT *enclose, BOOLEAN fcr) { OBJECT y, tag, ylink, yield, ytag, zlink; - OBJECT res, z, firsttag, firstres; + OBJECT res, z, firsttag, firstres = nilobj; /* make sure left parameter (the tag) is in order */ debug0(DOM, DD, " manifesting CASE now"); @@ -410,7 +452,7 @@ debug1(DOM, DD, " manifesting CASE tag %s now", EchoObject(tag)); tag = Manifest(tag, env, style, nbt, nft, &ntarget, crs, FALSE, FALSE, &nenclose, fcr); - tag = ReplaceWithTidy(tag, FALSE); + tag = ReplaceWithTidy(tag, ACAT_TIDY); /* make sure the right parameter is an ACAT */ Child(y, LastDown(x)); @@ -441,7 +483,7 @@ Child(ytag, Down(yield)); ytag = Manifest(ytag, env, style, nbt, nft, &ntarget, crs, FALSE, FALSE, &nenclose, fcr); - ytag = ReplaceWithTidy(ytag, FALSE); + ytag = ReplaceWithTidy(ytag, ACAT_TIDY); if( is_word(type(ytag)) ) { if( firsttag == nilobj ) { firsttag = ytag; @@ -554,7 +596,7 @@ } Child(z, NextDown(Down(y))); z = Manifest(z, env, style, nbt, nft, &ntarget, crs, FALSE, FALSE, &nenclose, fcr); - z = ReplaceWithTidy(z, FALSE); + z = ReplaceWithTidy(z, ACAT_TIDY); if( is_word(type(z)) && StringEqual(string(z), KW_PRECEDING) ) cross_type(y) = CROSS_PREC; else if( is_word(type(z)) && StringEqual(string(z), KW_FOLLOWING) ) @@ -573,7 +615,7 @@ /* make sure second argument (the new key) is ok */ Child(tag, LastDown(x)); tag = Manifest(tag, env, style, nbt, nft, &ntarget, crs, FALSE, FALSE, &nenclose, fcr); - tag = ReplaceWithTidy(tag, TRUE); /* && */ + tag = ReplaceWithTidy(tag, WORD_TIDY); /* && */ if( !is_word(type(tag)) ) { Error(8, 17, "right parameter of %s must be a simple word", WARN, &fpos(tag), KW_TAGGED); @@ -647,7 +689,7 @@ { if( is_tag(actual(y)) || is_key(actual(y)) ) { z = Manifest(z, env, style, nbt, nft, &ntarget, crs, FALSE, FALSE, &nenclose, fcr); - z = ReplaceWithTidy(z, TRUE); + z = ReplaceWithTidy(z, WORD_TIDY); if( !is_word(type(z)) ) { debug2(ANY, D, "z = %s %s", Image(type(z)), EchoObject(z)); @@ -657,7 +699,7 @@ } else if( type(z) == NEXT ) { z = Manifest(z, env, style, nbt, nft, &ntarget, crs, FALSE, FALSE, &nenclose, fcr); - z = ReplaceWithTidy(z, FALSE); + z = ReplaceWithTidy(z, ACAT_TIDY); } else if( type(z) == CLOSURE && is_par(type(actual(z))) ) { @@ -673,34 +715,6 @@ } } - /* now check z to see whether it is either a word or and ACAT of words */ - /* *** - if( type(z) == ACAT ) - { int i = 0; OBJECT t, tlink, g; - tlink = Down(z); - for( ; tlink != z && symbol_free; tlink = NextDown(tlink), i++ ) - { Child(t, tlink); - switch( type(t) ) - { - case WORD: - case QWORD: if( i > 20 ) symbol_free = FALSE; - break; - - case GAP_OBJ: if( Down(t) != t ) - { Child(g, Down(t)); - if( !is_word(type(g)) ) symbol_free = FALSE; - } - break; - - default: symbol_free = FALSE; - break; - - } - } - } - else - *** */ - if( !is_word(type(z)) ) { symbol_free = FALSE; } @@ -714,7 +728,6 @@ if( y != nilobj && type(y) == CLOSURE ) { OBJECT prntenv; Parent(prntenv, Up(y)); - if( type(prntenv) != ENV ) fprintf(stderr, "%s\n", Image(type(prntenv))); assert(type(prntenv) == ENV, "Manifest: prntenv!"); if( Down(prntenv) == LastDown(prntenv) ) { env = prntenv; @@ -755,7 +768,7 @@ AttachEnv(env, x); SetTarget(hd); enclose_obj(hd) = (has_enclose(sym) ? BuildEnclose(hd) : nilobj); - headers(hd) = dead_headers(hd) = nilobj; + ClearHeaders(hd); x = hd; threaded(x) = bthr[COLM] != nilobj || fthr[COLM] != nilobj; ReplaceWithSplit(x, bthr, fthr); @@ -786,7 +799,7 @@ actual(command) = filter(enclosing(sym)); FilterSetFileNames(x); command = Manifest(command,env,style,nbt,nft,&ntarget,crs,FALSE,FALSE, &nenclose, fcr); - command = ReplaceWithTidy(command, TRUE); + command = ReplaceWithTidy(command, WORD_TIDY); if( !is_word(type(command)) ) Error(8, 19, "filter parameter of %s symbol is not simple", FATAL, &fpos(command), SymName(enclosing(sym))); @@ -881,10 +894,10 @@ OBJECT Manifest(OBJECT x, OBJECT env, STYLE *style, OBJECT bthr[2], OBJECT fthr[2], OBJECT *target, OBJECT *crs, BOOLEAN ok, BOOLEAN need_expand, OBJECT *enclose, BOOLEAN fcr) -{ OBJECT bt[2], ft[2], y, link, gaplink, g; register FULL_CHAR *p; - OBJECT res, res_env, res_env2, hold_env, hold_env2, z, prev; +{ OBJECT bt[2], ft[2], y, link, nextlink, gaplink, g; register FULL_CHAR *p; + OBJECT res = nilobj, res_env, res_env2, hold_env, hold_env2, z, prev; OBJECT link1, link2, x1, x2, y1, y2; - int par, num1, num2; GAP res_gap; unsigned res_inc; STYLE new_style; + int i, par, num1, num2; GAP res_gap; unsigned res_inc; STYLE new_style; BOOLEAN done, multiline; FULL_CHAR ch; float scale_factor; static int depth = 0; #if DEBUG_ON @@ -955,7 +968,7 @@ Child(y, Down(x)); y = Manifest(y, env, style, nbt, nft, &ntarget, crs, FALSE, FALSE, &nenclose, fcr); - y = ReplaceWithTidy(y, TRUE); + y = ReplaceWithTidy(y, WORD_TIDY); ReplaceWithSplit(x, bthr, fthr); break; @@ -1007,6 +1020,7 @@ if( !ok || *crs == nilobj ) { word_font(x) = font(*style); word_colour(x) = colour(*style); + word_texture(x) = texture(*style); word_outline(x) = outline(*style); word_language(x) = language(*style); word_baselinemark(x) = baselinemark(*style); @@ -1040,6 +1054,7 @@ if( is_word(type(y)) ) { word_font(y) = font(*style); word_colour(y) = colour(*style); + word_texture(y) = texture(*style); word_outline(y) = outline(*style); word_language(y) = language(*style); word_baselinemark(y) = baselinemark(*style); @@ -1078,6 +1093,7 @@ if( is_word(type(y)) ) { word_font(y) = font(*style); word_colour(y) = colour(*style); + word_texture(y) = texture(*style); word_outline(y) = outline(*style); word_language(y) = language(*style); word_baselinemark(y) = baselinemark(*style); @@ -1095,7 +1111,7 @@ /* explicit & operator whose value is the child of g */ Child(z, Down(g)); z = Manifest(z, env, &new_style, nbt, nft, &ntarget, crs, FALSE, FALSE, &nenclose, fcr); - z = ReplaceWithTidy(z, FALSE); + z = ReplaceWithTidy(z, ACAT_TIDY); GetGap(z, style, &gap(g), &res_inc); vspace(g) = hspace(g) = 0; } @@ -1210,6 +1226,7 @@ prev != nilobj && is_word(type(prev)) && !mark(gap(g)) && word_font(prev) == word_font(y) && word_colour(prev) == word_colour(y) && + word_texture(prev) == word_texture(y) && word_outline(prev) == word_outline(y) && word_language(prev) == word_language(y) && word_baselinemark(prev) == word_baselinemark(y) ) @@ -1217,7 +1234,7 @@ { unsigned typ; assert( underline(prev) == UNDER_OFF, "Manifest/ACAT: underline(prev)!" ); assert( underline(y) == UNDER_OFF, "Manifest/ACAT: underline(y)!" ); - if( StringLength(string(prev))+StringLength(string(y)) >= MAX_BUFF ) + if( StringLength(string(prev))+StringLength(string(y)) >= MAX_WORD ) Error(8, 24, "word %s%s is too long", FATAL, &fpos(prev), string(prev), string(y)); z = y; @@ -1225,6 +1242,7 @@ y = MakeWordTwo(typ, string(prev), string(y), &fpos(prev)); word_font(y) = word_font(prev); word_colour(y) = word_colour(prev); + word_texture(y) = word_texture(prev); word_outline(y) = word_outline(prev); word_language(y) = word_language(prev); word_baselinemark(y) = word_baselinemark(prev); @@ -1248,90 +1266,6 @@ *crs = nilobj; } } - - /* implement FILL_OFF break option if required */ - /* *** this has been moved now to MinSize, z12.c *** */ - - /* *** - if( ok && multiline && fill_style(*style) == FILL_UNDEF ) - Error(8, 25, "missing %s symbol or option", FATAL, &fpos(x), KW_BREAK); - if( ok && multiline && fill_style(*style) == FILL_OFF ) - { OBJECT prev_acat, new_acat; BOOLEAN jn; - - %* compress any ACAT children of ACAT x *% - for( link = x; NextDown(link) != x; link = NextDown(link) ) - { Child(y, NextDown(link)); - if( type(y) == ACAT ) - { TransferLinks(Down(y), y, NextDown(link)); - DisposeChild(Up(y)); - link = PrevDown(link); - } - } - - %* do line breaks now *% - prev_acat = x; - New(x, VCAT); - adjust_cat(x) = FALSE; - ReplaceNode(x, prev_acat); - Link(x, prev_acat); - FirstDefinite(prev_acat, link, y, jn); - if( link != prev_acat ) - { - NextDefiniteWithGap(prev_acat, link, y, g, jn); - while( link != prev_acat ) - { - if( mode(gap(g)) != NO_MODE && line_breaker(g) ) - { OBJECT glink = PrevDown(Up(g)); - debug2(DOM, DD, "lines gap just before definite %s at %s", - Image(type(y)), EchoFilePos(&fpos(y))); - MoveLink(NextDown(glink), x, PARENT); - GapCopy(gap(g), line_gap(*style)); - width(gap(g)) *= find_max(1, vspace(g)); - New(new_acat, ACAT); - adjust_cat(new_acat) = padjust(*style); - FposCopy(fpos(new_acat), fpos(g)); - if( hspace(g) > 0 ) - { z = MakeWord(WORD, STR_EMPTY, &fpos(g)); - word_font(z) = font(*style); - word_colour(z) = colour(*style); - word_outline(z) = outline(*style); - word_language(z) = language(*style); - word_baselinemark(z) = baselinemark(*style); - word_hyph(z) = hyph_style(*style) == HYPH_ON; - underline(z) = UNDER_OFF; - Link(new_acat, z); - New(z, GAP_OBJ); - hspace(z) = hspace(g); - vspace(z) = 0; - underline(z) = UNDER_OFF; - GapCopy(gap(z), space_gap(*style)); - width(gap(z)) *= hspace(z); - Link(new_acat, z); - } - TransferLinks(NextDown(glink), prev_acat, new_acat); - StyleCopy(save_style(new_acat), *style); - Link(x, new_acat); - prev_acat = new_acat; - glink = prev_acat; - } - NextDefiniteWithGap(prev_acat, link, y, g, jn); - } - } - - %* remove any singleton ACAT objects under x, if they are VCATs *% - for( link = Down(x); link != x; link = NextDown(link) ) - { Child(y, link); - if( type(y) == ACAT && Down(y) == LastDown(y) ) - { Child(z, Down(y)); - if( type(z) == VCAT ) - { MoveLink(link, z, CHILD); - DisposeObject(y); - } - } - } - } - *** */ - ReplaceWithSplit(x, bthr, fthr); break; @@ -1349,7 +1283,7 @@ Child(y, Down(x)); y = Manifest(y, env, style, nbt, nft, &ntarget, crs, FALSE, FALSE, &nenclose, fcr); - y = ReplaceWithTidy(y, FALSE); + y = ReplaceWithTidy(y, ACAT_TIDY); GetGap(y, style, &res_gap, &res_inc); if( res_inc != GAP_ABS || mode(res_gap) != EDGE_MODE || units(res_gap) != FIXED_UNIT ) @@ -1368,7 +1302,7 @@ Child(y, Down(x)); y = Manifest(y, env, style, nbt, nft, &ntarget, crs, FALSE, FALSE, &nenclose, fcr); - y = ReplaceWithTidy(y, FALSE); + y = ReplaceWithTidy(y, ACAT_TIDY); GetGap(y, style, &shift_gap(x), &res_inc); shift_type(x) = res_inc; if( mode(shift_gap(x)) != EDGE_MODE || @@ -1414,16 +1348,31 @@ case SET_HEADER: /* first manifest gap, which is left parameter */ + debug1(DGS, D, "[ Manifest(%s)", EchoObject(x)); Child(y, Down(x)); y = Manifest(y, env, style, nbt, nft, &ntarget, crs, FALSE, FALSE, &nenclose, fcr); - y = ReplaceWithTidy(y, FALSE); + y = ReplaceWithTidy(y, ACAT_TIDY); GetGap(y, style, &line_gap(save_style(x)), &res_inc); - /* now the right parameter */ + /* attach MAX_HCOPIES-1 new copies of the right parameter as children */ Child(y, LastDown(x)); - y = Manifest(y, env, style, bthr, fthr, target, crs, ok, need_expand, - enclose, fcr); + for( i = 1; i < MAX_HCOPIES; i++ ) + { + z = CopyObject(y, &fpos(y)); + Link(x, z); + } + ifdebug(DGS, D, DebugObject(x)); + + /* manifest all MAX_HCOPIES copies of the right parameter */ + for( link = NextDown(Down(x)); link != x; link = nextlink ) + { + nextlink = NextDown(link); + Child(y, link); + y = Manifest(y, env, style, bthr, fthr, target, crs, ok, need_expand, + enclose, fcr); + } + debug0(DGS, D, "] Manifest returning."); break; @@ -1451,7 +1400,7 @@ Child(y, Down(x)); y = Manifest(y, env, style, nbt, nft, &ntarget, crs, FALSE, FALSE, &nenclose, fcr); - y = ReplaceWithTidy(y, FALSE); + y = ReplaceWithTidy(y, ACAT_TIDY); GetGap(y, style, &res_gap, &res_inc); if( res_inc != GAP_ABS || mode(res_gap) != EDGE_MODE || units(res_gap) != DEG_UNIT ) @@ -1496,7 +1445,7 @@ Child(y, Down(x)); y = Manifest(y, env, style, nbt, nft, &ntarget, crs, FALSE, FALSE, &nenclose, fcr); - y = ReplaceWithTidy(y, FALSE); + y = ReplaceWithTidy(y, ACAT_TIDY); if( is_word(type(y)) && StringEqual(string(y), STR_EMPTY) ) { /* missing scale factor, meaning to be inserted automatically */ @@ -1579,7 +1528,7 @@ Child(y, Down(x)); y = Manifest(y, env, style, nbt, nft, &ntarget, crs, FALSE, FALSE, &nenclose, fcr); - y = ReplaceWithTidy(y, FALSE); + y = ReplaceWithTidy(y, ACAT_TIDY); if( !is_word(type(y)) ) { Error(8, 30, "%s dropped (parameter is not a simple word)", WARN, &fpos(y), KW_XCHAR); @@ -1664,13 +1613,16 @@ case ZUNIT: case BREAK: case COLOUR: + case TEXTURE: case LANGUAGE: assert( Down(x) != x && NextDown(Down(x)) != x, "Manifest: FONT!" ); StyleCopy(new_style, *style); Child(y, Down(x)); y = Manifest(y, env, style, nbt, nft, &ntarget, crs, FALSE, FALSE, &nenclose, fcr); - y = ReplaceWithTidy(y, type(x) == COLOUR); + y = ReplaceWithTidy(y, + type(x) == COLOUR ? WORD_TIDY : + type(x) == TEXTURE ? PARA_TIDY : ACAT_TIDY); switch( type(x) ) { case FONT: FontChange(&new_style, y); @@ -1691,6 +1643,9 @@ case COLOUR: ColourChange(&new_style, y); break; + case TEXTURE: TextureChange(&new_style, y); + break; + case LANGUAGE: LanguageChange(&new_style, y); break; @@ -1935,14 +1890,14 @@ Child(y, Down(x)); y = Manifest(y, env, style, nbt, nft, &ntarget, crs, FALSE, FALSE, &nenclose, fcr); - y = ReplaceWithTidy(y, FALSE); + y = ReplaceWithTidy(y, ACAT_TIDY); Child(z, NextDown(Down(x))); z = Manifest(z, env, style, nbt, nft, &ntarget, crs, FALSE, FALSE, &nenclose, fcr); - z = ReplaceWithTidy(z, FALSE); + z = ReplaceWithTidy(z, ACAT_TIDY); if( is_word(type(y)) && sscanf( (char *) string(y), "%d", &num1) == 1 && is_word(type(z)) && sscanf( (char *) string(z), "%d", &num2) == 1 ) { - FULL_CHAR buff[MAX_BUFF]; + FULL_CHAR buff[MAX_WORD]; sprintf( (char *) buff, "%d", type(x) == PLUS ? num1+num2 : num1-num2); res = MakeWord(WORD, buff, &fpos(x)); } @@ -2031,10 +1986,12 @@ Child(y, LastDown(x)); y = Manifest(y, env, style, nbt, nft, target, crs, ok,FALSE,enclose,fcr); StyleCopy(save_style(x), *style); + if( type(x) == LINK_DEST && is_indefinite(type(y)) ) + type(x) = LINK_DEST_NULL; Child(y, Down(x)); y = Manifest(y, env, style, nbt, nft, &ntarget, crs, FALSE, FALSE, &nenclose, fcr); - y = ReplaceWithTidy(y, TRUE); + y = ReplaceWithTidy(y, WORD_TIDY); ReplaceWithSplit(x, bthr, fthr); break; @@ -2047,7 +2004,7 @@ EchoObject(x), EchoStyle(&save_style(x))); Child(y, Down(x)); y = Manifest(y, env, style, nbt, nft, &ntarget, crs, FALSE, FALSE, &nenclose, fcr); - y = ReplaceWithTidy(y, FALSE); + y = ReplaceWithTidy(y, WORD_TIDY); if( !is_word(type(y)) ) { Error(8, 37, "%s deleted (invalid right parameter)", WARN, &fpos(y), type(x) == INCGRAPHIC ? KW_INCGRAPHIC : KW_SINCGRAPHIC); diff -u --recursive --new-file -u --recursive --new-file lout-3.26/z09.c lout-3.27/z09.c --- lout-3.26/z09.c Tue Oct 8 16:09:26 2002 +++ lout-3.27/z09.c Sun Nov 17 09:11:56 2002 @@ -1,9 +1,9 @@ /*@z09.c:Closure Expansion:SearchEnv()@***************************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.26) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.27) */ /* COPYRIGHT (C) 1991, 2002 Jeffrey H. Kingston */ /* */ -/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */ +/* Jeffrey H. Kingston (jeff@it.usyd.edu.au) */ /* Basser Department of Computer Science */ /* The University of Sydney 2006 */ /* AUSTRALIA */ @@ -216,7 +216,7 @@ /* fail only if there is no default value available */ if( sym_body(actual(x)) == nilobj ) { - debug3(DCE, D, "failing ClosureExpand( %s, crs, %s, %s, res_env )\n", + debug3(DCE, D, "failing ClosureExpand( %s, crs, %s, %s, res_env )", EchoObject(x), bool(crs_wanted), EchoObject(env)); Error(9, 2, "no value for parameter %s of symbol %s:", WARN, &fpos(x), SymName(actual(x)), SymName(enclosing(actual(x)))); diff -u --recursive --new-file -u --recursive --new-file lout-3.26/z10.c lout-3.27/z10.c --- lout-3.26/z10.c Tue Oct 8 16:09:27 2002 +++ lout-3.27/z10.c Sun Nov 17 09:12:05 2002 @@ -1,9 +1,9 @@ /*@z10.c:Cross References:CrossInit(), CrossMake()@***************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.26) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.27) */ /* COPYRIGHT (C) 1991, 2002 Jeffrey H. Kingston */ /* */ -/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */ +/* Jeffrey H. Kingston (jeff@it.usyd.edu.au) */ /* Basser Department of Computer Science */ /* The University of Sydney 2006 */ /* AUSTRALIA */ @@ -44,7 +44,7 @@ /* a mapping (symbol x file) -> current tag. */ /* */ /* crtab_getnext(sym, fnum, S) Get next value associated with sym,fnum */ -/* crtab_debug(S, fp) Debug print of table S to file fp */ +/* crtab_debug(S) Debug print of table S to file fp */ /* */ /*****************************************************************************/ @@ -136,21 +136,23 @@ } /* end crtab_getnext */ #if DEBUG_ON -static void crtab_debug(CROSSREF_TABLE S, FILE *fp) +static void crtab_debug(CROSSREF_TABLE S) { int i; CROSSREF_ENTRY x; if( S == NULL ) - { fprintf(fp, " null table\n"); + { + debug0(DCR, D, " null table"); return; } - fprintf(fp, " table size: %d; current count: %d\n", + debug2(DCR, D, " table size: %d; current count: %d", crtab_size(S), crtab_count(S)); for( i = 0; i < crtab_size(S); i++ ) - { fprintf(fp, "crtab_chain(S, %d) =", i); + { + debug1(DCR, D, "crtab_chain(S, %d) =", i); for( x = crtab_chain(S, i); x != NULL; x = x->crtab_next ) - { fprintf(fp, " %s:%s,%d", + { + debug3(DCR, D, " %s:%s,%d", SymName(x->crtab_sym), FileName(x->crtab_fnum), x->crtab_value); } - fprintf(fp, "\n"); } } /* end crtab_debug */ #endif @@ -248,7 +250,7 @@ seq = crtab_getnext(sym, fnum, &crossref_tab); debug3(DCR, DDD, "%d = crtab_getnext(%s, %s, S); S =", seq, SymName(sym), FileName(fnum)); - ifdebug(DCR, DDD, crtab_debug(crossref_tab, stderr)); + ifdebug(DCR, DDD, crtab_debug(crossref_tab)); if( StringLength(file_name) + 20 >= MAX_BUFF ) Error(10, 3, "automatically generated tag is too long (contains %s)", FATAL, &fpos(x), file_name); @@ -362,7 +364,7 @@ debug0(DOM, D, " [ calling Manifest from CrossExpand"); tag = Manifest(tag, env, style, nbt, nft, &ntarget, crs, FALSE, FALSE, &nenclose, FALSE); debug0(DOM, D, " ] returning from Manifest"); - tag = ReplaceWithTidy(tag, TRUE); /* && */ + tag = ReplaceWithTidy(tag, WORD_TIDY); /* && */ /* extract sym (the symbol name) and tag (the tag value) from x */ Child(y, Down(x)); @@ -610,7 +612,7 @@ key = Manifest(key, env, &save_style(val), nbt, nft, &ntarget, &crs, FALSE, TRUE, &nenclose, FALSE); debug0(DOM, D, " ] returning from Manifest"); - key = ReplaceWithTidy(key, TRUE); + key = ReplaceWithTidy(key, WORD_TIDY); DeleteLink(Down(env)); DisposeObject(hold_env); } @@ -814,7 +816,7 @@ { /* sort out the value of this tag now */ Child(tag, Down(par)); - tag = ReplaceWithTidy(tag, TRUE); /* && */ + tag = ReplaceWithTidy(tag, WORD_TIDY); /* && */ if( !is_word(type(tag)) ) { Error(10, 15, "tag of %s is not a simple word", WARN, &fpos(tag), SymName(actual(target_val(cs)))); @@ -1073,5 +1075,5 @@ DbConvert(NewCrossDb, TRUE); debug0(DCR, D, "] CrossClose returning."); - ifdebug(DCR, DD, crtab_debug(crossref_tab, stderr)); + ifdebug(DCR, DD, crtab_debug(crossref_tab)); } /* end CrossClose */ diff -u --recursive --new-file -u --recursive --new-file lout-3.26/z11.c lout-3.27/z11.c --- lout-3.26/z11.c Tue Oct 8 16:09:28 2002 +++ lout-3.27/z11.c Sun Nov 17 09:12:13 2002 @@ -1,9 +1,9 @@ /*@z11.c:Style Service:EchoStyle()@*******************************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.26) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.27) */ /* COPYRIGHT (C) 1991, 2002 Jeffrey H. Kingston */ /* */ -/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */ +/* Jeffrey H. Kingston (jeff@it.usyd.edu.au) */ /* Basser Department of Computer Science */ /* The University of Sydney 2006 */ /* AUSTRALIA */ @@ -41,6 +41,7 @@ FULL_CHAR *EchoStyle(STYLE *style) { static FULL_CHAR res[100]; + static char buff[100]; static char *hyphwords[] = { "hyph_undef", "hyph_off", "hyph_on" }; static char *fillwords[] = { "fill_undef", "fill_off", "fill_on" }; static char *spacewords[] = { "lout", "comp", "troff", "tex" }; @@ -80,6 +81,8 @@ } if( nobreakfirst(*style) ) StringCat(res, AsciiToFull(":NBF")); if( nobreaklast(*style) ) StringCat(res, AsciiToFull(":NBL")); + sprintf(buff, ":C%d:P%d", colour(*style), texture(*style)); + StringCat(res, AsciiToFull(buff)); StringCat(res, AsciiToFull("]")); return res; } /* end EchoStyle */ diff -u --recursive --new-file -u --recursive --new-file lout-3.26/z12.c lout-3.27/z12.c --- lout-3.26/z12.c Tue Oct 8 16:09:29 2002 +++ lout-3.27/z12.c Sun Nov 17 20:24:57 2002 @@ -1,9 +1,9 @@ /*@z12.c:Size Finder:MinSize()@***********************************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.26) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.27) */ /* COPYRIGHT (C) 1991, 2002 Jeffrey H. Kingston */ /* */ -/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */ +/* Jeffrey H. Kingston (jeff@it.usyd.edu.au) */ /* Basser Department of Computer Science */ /* The University of Sydney 2006 */ /* AUSTRALIA */ @@ -77,7 +77,8 @@ /*****************************************************************************/ static BOOLEAN BuildSpanner(OBJECT x) -{ OBJECT link, prnt, y, hspanner, vspanner, end_link, t, hprnt, vprnt, spanobj; +{ OBJECT link, prnt, y, hspanner = nilobj, vspanner = nilobj, end_link, t; + OBJECT hprnt, vprnt, spanobj; BOOLEAN need_hspanner, need_vspanner; debug1(DSF, DD, "BuildSpanner(%s)", EchoObject(x)); assert( type(x) == START_HVSPAN || type(x) == START_HSPAN || @@ -250,7 +251,7 @@ void SpannerAvailableSpace(OBJECT y, int dim, FULL_LENGTH *resb, FULL_LENGTH *resf) { OBJECT slink, s, thr, gp, prevthr; - FULL_LENGTH b, f; + FULL_LENGTH b = 0, f = 0; /* initial values not used */ unsigned thr_type, cat_type; assert( type(y) == HSPANNER || type(y) == VSPANNER, "SpannerAvail!"); @@ -317,6 +318,70 @@ } /* end SpannerAvailableSpace */ +/*@@**************************************************************************/ +/* */ +/* FULL_CHAR *IndexType(index) */ +/* */ +/* Return some string that will give a meaningful idea to end users of */ +/* what this index is pointing at. */ +/* */ +/*****************************************************************************/ + +static FULL_CHAR *IndexType(OBJECT index) +{ FULL_CHAR *res; + debug1(DVH, DD, "IndexType(%s)", Image(type(index))); + switch( type(index) ) + { + case DEAD: + case UNATTACHED: + case GALL_PREC: + case GALL_FOLL: + case GALL_FOLL_OR_PREC: + case RECEPTIVE: + case RECEIVING: + case PRECEDES: + case FOLLOWS: + case GALL_TARG: + + res = AsciiToFull("galley or galley target"); + break; + + + case RECURSIVE: + + res = AsciiToFull("recursive symbol"); + break; + + + case SCALE_IND: + case COVER_IND: + case EXPAND_IND: + case PAGE_LABEL_IND: + + res = Image(type(actual(index))); + break; + + + case CROSS_TARG: + case CROSS_PREC: + case CROSS_FOLL: + case CROSS_FOLL_OR_PREC: + + res = AsciiToFull("cross reference or cross reference target"); + break; + + + default: + + assert1(FALSE, "IndexType: unknown index", Image(type(index))); + res = STR_EMPTY; + break; + } + debug1(DVH, DD, "IndexType returning %s", res); + return res; +} /* end IndexType */ + + /*****************************************************************************/ /* */ /* OBJECT MinSize(x, dim, extras) */ @@ -327,7 +392,7 @@ /*****************************************************************************/ OBJECT MinSize(OBJECT x, int dim, OBJECT *extras) -{ OBJECT y, z, link, prev, t, g, full_name; +{ OBJECT y, z, link, prev, t, g, full_name, catch_extras; FULL_LENGTH b, f, dble_fwd; BOOLEAN dble_found, found, will_expand, cp; FILE *fp; @@ -597,6 +662,7 @@ case END_HEADER: case CLEAR_HEADER: + /* remember, these have a dummy child for threads to attach to */ back(x, dim) = fwd(x, dim) = 0; Child(y, Down(x)); back(y, dim) = fwd(y, dim) = 0; @@ -606,10 +672,23 @@ case BEGIN_HEADER: case SET_HEADER: - Child(y, LastDown(x)); - y = MinSize(y, dim, extras); - back(x, dim) = back(y, dim); - fwd(x, dim) = fwd(y, dim); + /* remember, there are multiple copies of each header */ + for( link = NextDown(Down(x)); link != x; link = NextDown(link) ) + { + Child(y, link); + New(catch_extras, ACAT) + y = MinSize(y, dim, &catch_extras); + if( Down(catch_extras) != catch_extras ) + { + /* we can't handle things that generate extras inside headers */ + Child(z, Down(catch_extras)); + Error(12, 16, "%s contains object of illegal type: %s", + FATAL, &fpos(x), Image(type(x)), IndexType(z)); + } + DisposeObject(catch_extras); + back(x, dim) = back(y, dim); + fwd(x, dim) = fwd(y, dim); + } debug4(DSF, D, "MinSize(%s, %s) := (%s, %s)", Image(type(x)), dimen(dim), EchoLength(back(x, dim)), EchoLength(fwd(x, dim))); break; @@ -619,6 +698,7 @@ case GRAPHIC: case LINK_SOURCE: case LINK_DEST: + case LINK_DEST_NULL: case LINK_URL: Child(y, LastDown(x)); @@ -876,6 +956,7 @@ z = MakeWord(WORD, STR_EMPTY, &fpos(g)); word_font(z) = font(save_style(x)); word_colour(z) = colour(save_style(x)); + word_texture(z) = texture(save_style(x)); word_outline(z) = outline(save_style(x)); word_language(z) = language(save_style(x)); word_baselinemark(z) = baselinemark(save_style(x)); @@ -966,6 +1047,7 @@ mode(gap(g)) == EDGE_MODE && !mark(gap(g)) && word_font(prev) == word_font(y) && word_colour(prev) == word_colour(y) && + word_texture(prev) == word_texture(y) && word_outline(prev) == word_outline(y) && word_language(prev) == word_language(y) && word_baselinemark(prev) == word_baselinemark(y) && @@ -984,6 +1066,7 @@ y = MakeWordTwo(typ, string(prev), string(y), &fpos(prev)); word_font(y) = word_font(prev); word_colour(y) = word_colour(prev); + word_texture(y) = word_texture(prev); word_outline(y) = word_outline(prev); word_language(y) = word_language(prev); word_baselinemark(y) = word_baselinemark(prev); diff -u --recursive --new-file -u --recursive --new-file lout-3.26/z13.c lout-3.27/z13.c --- lout-3.26/z13.c Tue Oct 8 16:09:30 2002 +++ lout-3.27/z13.c Sun Nov 17 20:25:06 2002 @@ -1,9 +1,9 @@ /*@z13.c:Object Breaking:BreakJoinedGroup()@**********************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.26) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.27) */ /* COPYRIGHT (C) 1991, 2002 Jeffrey H. Kingston */ /* */ -/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */ +/* Jeffrey H. Kingston (jeff@it.usyd.edu.au) */ /* Basser Department of Computer Science */ /* The University of Sydney 2006 */ /* AUSTRALIA */ @@ -48,7 +48,7 @@ static void BreakJoinedGroup(OBJECT start, OBJECT stop, OBJECT m, CONSTRAINT *c, FULL_LENGTH *res_back, FULL_LENGTH *res_fwd) -{ OBJECT y, link; FULL_LENGTH b, f, sb, sf; CONSTRAINT yc; +{ OBJECT y = nilobj, link; FULL_LENGTH b, f, sb, sf; CONSTRAINT yc; debug1(DOB, DD, "[ BreakJoinedGroup(start, stop, m, %s, -, -)", EchoConstraint(c)); @@ -117,7 +117,8 @@ /*****************************************************************************/ static OBJECT BreakVcat(OBJECT x, CONSTRAINT *c) -{ OBJECT y, link, start_group, m; FULL_LENGTH b, f, dble_fwd; CONSTRAINT tc; +{ OBJECT y, link, start_group, m = nilobj; + FULL_LENGTH b, f, dble_fwd; CONSTRAINT tc; BOOLEAN dble_found; debug1(DOB, DD, "[ BreakVcat(x, %s)", EchoConstraint(c)); assert(Down(x) != x, "BreakVcat: Down(x) == x!" ); @@ -220,8 +221,8 @@ static OBJECT BreakTable(OBJECT x, CONSTRAINT *c) { FULL_LENGTH bwidth, fwidth; /* running back(x) and fwd(x) */ int bcount, fcount; /* running no. of components */ - OBJECT mlink, my; /* minimum-width unbroken component */ - BOOLEAN ratm; /* TRUE when my has a mark to its right */ + OBJECT mlink = nilobj, my; /* minimum-width unbroken component */ + BOOLEAN ratm = FALSE; /* TRUE when my has a mark to its right */ int mside; /* side of the mark my is on: BACK, ON, FWD */ FULL_LENGTH msize; /* size of my (minimal among unbroken) */ CONSTRAINT mc; /* desirable constraint for my */ @@ -232,7 +233,7 @@ /* if they are all assigned equal width */ FULL_LENGTH fwd_max, back_max;/* maximum space available forward of or */ /* back of the mark, when columns are even */ - FULL_LENGTH col_size; /* the column size actually used in breaking */ + FULL_LENGTH col_size = 0; /* the column size actually used in breaking */ FULL_LENGTH prev_col_size; /* previous column size (try to keep equal) */ FULL_LENGTH beffect, feffect; /* the amount bwidth, fwidth must increase */ /* when my is broken */ @@ -544,6 +545,7 @@ small_caps(save_style(y)) = FALSE; font(save_style(y)) = word_font(x); colour(save_style(y)) = word_colour(x); + texture(save_style(y)) = word_texture(x); outline(save_style(y)) = word_outline(x); language(save_style(y)) = word_language(x); baselinemark(save_style(y)) = word_baselinemark(x); @@ -694,10 +696,14 @@ case BEGIN_HEADER: case SET_HEADER: - Child(y, LastDown(x)); - y = BreakObject(y, c); - back(x, COLM) = back(y, COLM); - fwd(x, COLM) = fwd(y, COLM); + /* multiple copies, remember */ + for( link = NextDown(Down(x)); link != x; link = NextDown(link) ) + { + Child(y, link); + y = BreakObject(y, c); + back(x, COLM) = back(y, COLM); + fwd(x, COLM) = fwd(y, COLM); + } debug3(DOB, D, "BreakObject(%s, COLM) = (%s, %s)", Image(type(x)), EchoLength(back(x, COLM)), EchoLength(fwd(x, COLM))); break; @@ -707,6 +713,7 @@ case GRAPHIC: case LINK_SOURCE: case LINK_DEST: + case LINK_DEST_NULL: case LINK_URL: Child(y, LastDown(x)); diff -u --recursive --new-file -u --recursive --new-file lout-3.26/z14.c lout-3.27/z14.c --- lout-3.26/z14.c Tue Oct 8 16:09:31 2002 +++ lout-3.27/z14.c Sun Nov 17 09:12:36 2002 @@ -1,9 +1,9 @@ /*@z14.c:Fill Service:Declarations@*******************************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.26) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.27) */ /* COPYRIGHT (C) 1991, 2002 Jeffrey H. Kingston */ /* */ -/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */ +/* Jeffrey H. Kingston (jeff@it.usyd.edu.au) */ /* Basser Department of Computer Science */ /* The University of Sydney 2006 */ /* AUSTRALIA */ @@ -164,7 +164,7 @@ /*****************************************************************************/ #define MoveRightToGap(I,x,rlink,right,max_width,etc_width,hyph_word) \ -{ OBJECT newg, foll, tmp; \ +{ OBJECT newg, foll = nilobj, tmp; \ BOOLEAN jn, unbreakable_at_right = FALSE; \ debug0(DOF, DDD, "MoveRightToGap(I, x, rlink, right, -, -, -)"); \ \ @@ -220,6 +220,7 @@ { hyph_word = MakeWord(WORD, STR_HYPHEN, &fpos(x)); \ word_font(hyph_word) = 0; \ word_colour(hyph_word) = colour(save_style(x)); \ + word_texture(hyph_word) = texture(save_style(x)); \ word_outline(hyph_word) = outline(save_style(x)); \ word_language(hyph_word) = language(save_style(x)); \ word_baselinemark(hyph_word) = baselinemark(save_style(x)); \ @@ -266,7 +267,7 @@ /*****************************************************************************/ #define IntervalInit(I, x, max_width, etc_width, hyph_word) \ -{ OBJECT rlink, right; BOOLEAN jn; \ +{ OBJECT rlink, right = nilobj; BOOLEAN jn; \ debug0(DOF, DDD, "IntervalInit(I, x, -, -, hyph_word)"); \ I.llink = x; \ \ @@ -299,7 +300,7 @@ /*****************************************************************************/ #define IntervalShiftRightEnd(I, x, hyph_word, max_width, etc_width) \ -{ OBJECT rlink, g, right; \ +{ OBJECT rlink, g, right = nilobj; \ assert( I.class != AT_END, "IntervalShiftRightEnd: AT_END!" ); \ rlink = I.rlink; \ if( rlink == x ) I.class = AT_END; \ @@ -352,7 +353,7 @@ /*****************************************************************************/ #define IntervalShiftLeftEnd(I, x, max_width, etc_width) \ -{ OBJECT llink, left, lgap, y; BOOLEAN jn; \ +{ OBJECT llink, left = nilobj, lgap, y; BOOLEAN jn; \ debug1(DOF, DDD, "IntervalShiftLeftEnd(%s)", IntervalPrint(I, x)); \ assert( I.class != AT_END, "IntervalShiftLeftEnd: AT_END!" ); \ \ @@ -518,8 +519,9 @@ OBJECT FillObject(OBJECT x, CONSTRAINT *c, OBJECT multi, BOOLEAN can_hyphenate, BOOLEAN allow_shrink, BOOLEAN extend_unbreakable, BOOLEAN *hyph_used) -{ INTERVAL I, BestI; OBJECT res, gp, tmp, z, y, link, ylink, prev, next; - int max_width, etc_width, outdent_margin, f; BOOLEAN jn; unsigned typ; +{ INTERVAL I, BestI; + OBJECT res, gp, tmp, z = nilobj, y = nilobj, link, ylink, prev, next; + int max_width, etc_width, outdent_margin = 0, f; BOOLEAN jn; unsigned typ; static OBJECT hyph_word = nilobj; BOOLEAN hyph_allowed; /* TRUE when hyphenation of words is permitted */ assert( type(x) == ACAT, "FillObject: type(x) != ACAT!" ); @@ -527,7 +529,7 @@ debug4(DOF, D, "FillObject(x, %s, can_hyph = %s, %s); %s", EchoConstraint(c), bool(can_hyphenate), multi == nilobj ? "nomulti" : "multi", EchoStyle(&save_style(x))); - ifdebug(DOF, DD, DebugObject(x); fprintf(stderr, "\n\n") ); + ifdebug(DOF, DD, DebugObject(x)); *hyph_used = FALSE; @@ -553,6 +555,7 @@ res = MakeWord(WORD, STR_EMPTY, &fpos(x)); word_font(res) = font(save_style(x)); word_colour(res) = colour(save_style(x)); + word_texture(res) = texture(save_style(x)); word_outline(res) = outline(save_style(x)); word_language(res) = language(save_style(x)); word_baselinemark(res) = baselinemark(save_style(x)); @@ -574,6 +577,7 @@ back(tmp, COLM) = fwd(tmp, COLM) = back(tmp, ROWM) = fwd(tmp, ROWM) = 0; word_font(tmp) = 0; word_colour(tmp) = 0; + word_texture(tmp) = 1; word_outline(tmp) = 0; word_language(tmp) = 0; word_baselinemark(tmp) = FALSE; @@ -630,7 +634,8 @@ if( IntervalClass(I) == EMPTY_INTERVAL || IntervalBadness(BestI) <= IntervalBadness(I) ) I = BestI; - debug1(DOF, DD, "BestI: %s\n", IntervalPrint(I, x)); + debug1(DOF, DD, "BestI: %s", IntervalPrint(I, x)); + debug0(DOF, DD, ""); /* NB no break */ @@ -749,6 +754,7 @@ back(t1, COLM) = fwd(t1, COLM) = back(t1, ROWM) = fwd(t1, ROWM) = 0; word_font(t1) = 0; word_colour(t1) = 0; + word_texture(t1) = 1; word_outline(t1) = 0; word_language(t1) = 0; word_baselinemark(t1) = FALSE; @@ -782,7 +788,8 @@ /* add zero-width gap object */ New(z, GAP_OBJ); - debug0(DOF, DD, " adding hyphen\n"); + debug0(DOF, DD, " adding hyphen"); + debug0(DOF, DD, ""); hspace(z) = vspace(z) = 0; underline(z) = underline(tmp); SetGap(gap(z), TRUE, FALSE, TRUE, FIXED_UNIT, EDGE_MODE, 0); @@ -792,6 +799,7 @@ z = MakeWord(WORD, STR_HYPHEN, &fpos(y)); word_font(z) = word_font(tmp); word_colour(z) = word_colour(tmp); + word_texture(z) = word_texture(tmp); word_outline(z) = word_outline(tmp); word_language(z) = word_language(tmp); word_baselinemark(z) = word_baselinemark(tmp); @@ -887,6 +895,7 @@ if( is_word(type(prev)) && is_word(type(next)) && word_font(prev) == word_font(next) && word_colour(prev) == word_colour(next) && + word_texture(prev) == word_texture(next) && word_outline(prev) == word_outline(next) && word_language(prev) == word_language(next) && word_baselinemark(prev) == word_baselinemark(next) && @@ -898,6 +907,7 @@ tmp = MakeWordTwo(typ, string(prev), string(next), &fpos(prev)); word_font(tmp) = word_font(prev); word_colour(tmp) = word_colour(prev); + word_texture(tmp) = word_texture(prev); word_outline(tmp) = word_outline(prev); word_language(tmp) = word_language(prev); word_baselinemark(tmp) = word_baselinemark(prev); diff -u --recursive --new-file -u --recursive --new-file lout-3.26/z15.c lout-3.27/z15.c --- lout-3.26/z15.c Tue Oct 8 16:09:32 2002 +++ lout-3.27/z15.c Sun Nov 17 20:25:22 2002 @@ -1,9 +1,9 @@ /*@z15.c:Size Constraints:MinConstraint(), EnlargeToConstraint()@*************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.26) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.27) */ /* COPYRIGHT (C) 1991, 2002 Jeffrey H. Kingston */ /* */ -/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */ +/* Jeffrey H. Kingston (jeff@it.usyd.edu.au) */ /* Basser Department of Computer Science */ /* The University of Sydney 2006 */ /* AUSTRALIA */ @@ -311,7 +311,7 @@ OBJECT y, int dim, OBJECT *why) { int side; /* the size of y that x is on: BACK, ON, FWD */ CONSTRAINT yc; /* constraints on y */ - FULL_LENGTH backy, fwdy; /* back(y), fwd(y) would be if x was (0, 0) */ + FULL_LENGTH backy=0, fwdy=0; /* back(y), fwd(y) would be if x was (0, 0) */ FULL_LENGTH be, fe; /* amount back(x), fwd(x) can be for free */ FULL_LENGTH beffect, feffect; /* scratch variables for calculations */ FULL_LENGTH seffect; /* scratch variables for calculations */ @@ -481,6 +481,7 @@ case GRAPHIC: case LINK_SOURCE: case LINK_DEST: + case LINK_DEST_NULL: case LINK_URL: case KERN_SHRINK: case BEGIN_HEADER: @@ -770,6 +771,7 @@ case GRAPHIC: case LINK_SOURCE: case LINK_DEST: + case LINK_DEST_NULL: case LINK_URL: case KERN_SHRINK: case WORD: diff -u --recursive --new-file -u --recursive --new-file lout-3.26/z16.c lout-3.27/z16.c --- lout-3.26/z16.c Tue Oct 8 16:09:32 2002 +++ lout-3.27/z16.c Sun Nov 17 20:25:32 2002 @@ -1,9 +1,9 @@ /*@z16.c:Size Adjustment:SetNeighbours(), CatAdjustSize()@********************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.26) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.27) */ /* COPYRIGHT (C) 1991, 2002 Jeffrey H. Kingston */ /* */ -/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */ +/* Jeffrey H. Kingston (jeff@it.usyd.edu.au) */ /* Basser Department of Computer Science */ /* The University of Sydney 2006 */ /* AUSTRALIA */ @@ -41,7 +41,7 @@ /*****************************************************************************/ FULL_LENGTH FindShift(OBJECT x, OBJECT y, int dim) -{ FULL_LENGTH len, res; +{ FULL_LENGTH len = 0, res = 0; /* initial values unused */ debug4(DSF, DD, "FindShift(%s, %s %s, %s)", Image(type(x)), Image(type(y)), EchoObject(y), dimen(dim)); @@ -157,7 +157,7 @@ { OBJECT link; OBJECT pg, prec_def, sg, sd; FULL_LENGTH beffect, feffect, seffect; int side; - int bb, ff; + int bb = 0, ff = 0; /* initial values unused */ debug6(DSA, DD, "CatAdjustSize(%s x, %s, %s, %s, %s y, %s)", Image(type(x)), EchoLength(*b), EchoLength(*f), bool(ratm), Image(type(y)), dimen(dim)); @@ -400,6 +400,7 @@ case GRAPHIC: case LINK_SOURCE: case LINK_DEST: + case LINK_DEST_NULL: case LINK_URL: case KERN_SHRINK: case BACKGROUND: diff -u --recursive --new-file -u --recursive --new-file lout-3.26/z17.c lout-3.27/z17.c --- lout-3.26/z17.c Tue Oct 8 16:09:33 2002 +++ lout-3.27/z17.c Sun Nov 17 09:13:02 2002 @@ -1,9 +1,9 @@ /*@z17.c:Gap Widths:GetGap()@*************************************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.26) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.27) */ /* COPYRIGHT (C) 1991, 2002 Jeffrey H. Kingston */ /* */ -/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */ +/* Jeffrey H. Kingston (jeff@it.usyd.edu.au) */ /* Basser Department of Computer Science */ /* The University of Sydney 2006 */ /* AUSTRALIA */ @@ -176,7 +176,7 @@ /*****************************************************************************/ FULL_LENGTH MinGap(FULL_LENGTH a, FULL_LENGTH b, FULL_LENGTH c, GAP *xgap) -{ FULL_LENGTH res; int w; +{ FULL_LENGTH res; int w = 0; switch( units(*xgap) ) { case FIXED_UNIT: w = width(*xgap); @@ -297,7 +297,7 @@ FULL_LENGTH ActualGap(FULL_LENGTH prevf, FULL_LENGTH b, FULL_LENGTH f, GAP *xgap, FULL_LENGTH frame_size, FULL_LENGTH mk) -{ FULL_LENGTH res; int w, w2; +{ FULL_LENGTH res; int w = 0, w2; switch( units(*xgap) ) { case FIXED_UNIT: w = width(*xgap); diff -u --recursive --new-file -u --recursive --new-file lout-3.26/z18.c lout-3.27/z18.c --- lout-3.26/z18.c Tue Oct 8 16:09:34 2002 +++ lout-3.27/z18.c Sun Nov 17 09:41:18 2002 @@ -1,9 +1,9 @@ /*@z18.c:Galley Transfer:Declarations@****************************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.26) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.27) */ /* COPYRIGHT (C) 1991, 2002 Jeffrey H. Kingston */ /* */ -/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */ +/* Jeffrey H. Kingston (jeff@it.usyd.edu.au) */ /* Basser Department of Computer Science */ /* The University of Sydney 2006 */ /* AUSTRALIA */ @@ -80,6 +80,7 @@ small_caps(InitialStyle) = SMALL_CAPS_OFF; font(InitialStyle) = 0; /* i.e. undefined */ colour(InitialStyle) = 0; /* i.e. undefined */ + texture(InitialStyle) = 1; /* i.e. "null" */ outline(InitialStyle) = FALSE; /* i.e. not outlined */ language(InitialStyle) = 0; /* i.e. undefined */ yunit(InitialStyle) = 0; /* i.e. zero */ @@ -94,7 +95,7 @@ New(up_hd, HEAD); force_gall(up_hd) = FALSE; actual(up_hd) = enclose_obj(up_hd) = limiter(up_hd) = nilobj; - headers(up_hd) = dead_headers(up_hd) = nilobj; + ClearHeaders(up_hd); opt_components(up_hd) = opt_constraints(up_hd) = nilobj; gall_dir(up_hd) = ROWM; New(dest_index, RECEIVING); @@ -112,7 +113,7 @@ New(root_galley, HEAD); force_gall(root_galley) = FALSE; enclose_obj(root_galley) = limiter(root_galley) = nilobj; - headers(root_galley) = dead_headers(root_galley) = nilobj; + ClearHeaders(root_galley); opt_components(root_galley) = opt_constraints(root_galley) = nilobj; gall_dir(root_galley) = ROWM; FposCopy(fpos(root_galley), *no_fpos); @@ -155,7 +156,8 @@ /*****************************************************************************/ OBJECT TransferBegin(OBJECT x) -{ OBJECT xsym, index, y, link, env, new_env, hold_env, res, hd, target, why; +{ OBJECT xsym, index, y, link, env, new_env, hold_env, res = nilobj; + OBJECT hd, target, why; CONSTRAINT c; debug1(DGT, D, "[ [ TransferBegin( %s )", EchoObject(x)); ifdebug(DGT, DD, debug_targets()); @@ -180,7 +182,7 @@ AttachEnv(env, y); /* now the new environment is y catenated with the old one */ - debug0(DCR, DDD, "calling SetEnv from TransferBegin (a)"); + debug0(DCR, DD, "calling SetEnv from TransferBegin (a)"); new_env = SetEnv(y, nilobj); } else new_env = env; @@ -203,7 +205,7 @@ AttachEnv(env, x); SetTarget(hd); enclose_obj(hd) = (has_enclose(actual(hd)) ? BuildEnclose(hd) : nilobj); - headers(hd) = dead_headers(hd) = nilobj; + ClearHeaders(hd); /* search for destination for hd and release it */ Link(Up(target), index); @@ -302,7 +304,8 @@ /* make the component into a galley */ New(hd, HEAD); force_gall(hd) = FALSE; - enclose_obj(hd) = limiter(hd) = headers(hd) = dead_headers(hd) = nilobj; + ClearHeaders(hd); + enclose_obj(hd) = limiter(hd) = nilobj; opt_components(hd) = opt_constraints(hd) = nilobj; gall_dir(hd) = ROWM; FposCopy(fpos(hd), fpos(x)); @@ -406,7 +409,8 @@ /* make the component into a galley */ New(hd, HEAD); FposCopy(fpos(hd), fpos(x)); force_gall(hd) = FALSE; - enclose_obj(hd) = limiter(hd) = headers(hd) = dead_headers(hd) = nilobj; + ClearHeaders(hd); + enclose_obj(hd) = limiter(hd) = nilobj; opt_components(hd) = opt_constraints(hd) = nilobj; gall_dir(hd) = ROWM; actual(hd) = whereto(hd) = ready_galls(hd) = nilobj; diff -u --recursive --new-file -u --recursive --new-file lout-3.26/z19.c lout-3.27/z19.c --- lout-3.26/z19.c Tue Oct 8 16:09:34 2002 +++ lout-3.27/z19.c Sun Nov 17 20:25:49 2002 @@ -1,9 +1,9 @@ /*@z19.c:Galley Attaching:DetachGalley()@*************************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.26) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.27) */ /* COPYRIGHT (C) 1991, 2002 Jeffrey H. Kingston */ /* */ -/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */ +/* Jeffrey H. Kingston (jeff@it.usyd.edu.au) */ /* Basser Department of Computer Science */ /* The University of Sydney 2006 */ /* AUSTRALIA */ @@ -226,9 +226,9 @@ OBJECT target_index; /* the index of target */ OBJECT target_galley; /* the body of target, made into a galley */ OBJECT tg_inners; /* inner galleys of target_galley */ - BOOLEAN need_precedes; /* true if destination lies before galley */ + BOOLEAN need_precedes = FALSE;/* true if destination lies before galley */ OBJECT recs; /* list of recursive definite objects */ - OBJECT link, y; /* for scanning through the components of hd */ + OBJECT link, y = nilobj; /* for scanning through the components of hd */ CONSTRAINT c; /* temporary variable holding a constraint */ OBJECT env, n1, tmp, zlink, z, sym; /* placeholders and temporaries */ BOOLEAN was_sized; /* true if sized(hd) initially */ @@ -323,7 +323,7 @@ New(target_galley, HEAD); force_gall(target_galley) = FALSE; enclose_obj(target_galley) = limiter(target_galley) = nilobj; - headers(target_galley) = dead_headers(target_galley) = nilobj; + ClearHeaders(target_galley); opt_components(target_galley) = opt_constraints(target_galley) = nilobj; gall_dir(target_galley) = external_hor(target) ? COLM : ROWM; FposCopy(fpos(target_galley), fpos(target)); @@ -565,6 +565,7 @@ case GRAPHIC: case LINK_SOURCE: case LINK_DEST: + case LINK_DEST_NULL: case LINK_URL: case ACAT: case HCAT: diff -u --recursive --new-file -u --recursive --new-file lout-3.26/z20.c lout-3.27/z20.c --- lout-3.26/z20.c Tue Oct 8 16:09:35 2002 +++ lout-3.27/z20.c Sun Nov 17 20:26:29 2002 @@ -1,9 +1,9 @@ /*@z20.c:Galley Flushing:DebugInnersNames()@**********************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.26) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.27) */ /* COPYRIGHT (C) 1991, 2002 Jeffrey H. Kingston */ /* */ -/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */ +/* Jeffrey H. Kingston (jeff@it.usyd.edu.au) */ /* Basser Department of Computer Science */ /* The University of Sydney 2006 */ /* AUSTRALIA */ @@ -112,26 +112,27 @@ CONSTRAINT dest_perp_constr; /* the perpendicular size constraint on dest */ int pb, pf, f; /* candidate replacement sizes for dest */ - OBJECT dest_encl; /* the VCAT or ACAT enclosing dest, if any */ + OBJECT dest_encl = nilobj; /* the VCAT or ACAT enclosing dest, if any */ int dest_side; /* if dest_encl != nilobj, side dest is on */ - BOOLEAN need_adjust; /* TRUE as soon as dest_encl needs adjusting */ - FULL_LENGTH dest_back, dest_fwd; /* the current size of dest_encl or dest */ - FULL_LENGTH frame_size; /* the total constraint of dest_encl */ + BOOLEAN need_adjust = FALSE; /* TRUE as soon as dest_encl needs adjusting */ + FULL_LENGTH dest_back = 0; /* the current back size of dest_encl or dest*/ + FULL_LENGTH dest_fwd = 0; /* the current fwd size of dest_encl or dest */ + FULL_LENGTH frame_size = 0; /* the total constraint of dest_encl */ OBJECT prec_gap; /* the gap preceding dest if any else nilobj */ OBJECT prec_def; /* the component preceding dest, if any */ OBJECT succ_gap; /* the gap following dest if any else nilobj */ OBJECT succ_def; /* the component following dest, if any */ OBJECT stop_link; /* most recently seen gap link of hd */ - FULL_LENGTH stop_back; /* back(dest_encl) incl all before stop_link */ - FULL_LENGTH stop_fwd; /* fwd(dest_encl) incl. all before stop_link */ - FULL_LENGTH stop_perp_back; /* back(dest_encl) in other direction */ - FULL_LENGTH stop_perp_fwd; /* fwd(dest_encl) in other direction */ + FULL_LENGTH stop_back = 0; /* back(dest_encl) incl all before stop_link */ + FULL_LENGTH stop_fwd = 0; /* fwd(dest_encl) incl. all before stop_link */ + FULL_LENGTH stop_perp_back=0; /* back(dest_encl) in other direction */ + FULL_LENGTH stop_perp_fwd=0; /* fwd(dest_encl) in other direction */ BOOLEAN prnt_flush; /* TRUE when the parent of hd needs a flush */ BOOLEAN target_is_internal; /* TRUE if flushing into an internal target */ BOOLEAN headers_seen; /* TRUE if a header is seen at all */ OBJECT zlink, z, tmp, prnt; int attach_status; BOOLEAN remove_target; OBJECT why; - FULL_LENGTH perp_back, perp_fwd; /* current perp size of dest_encl */ + FULL_LENGTH perp_back = 0, perp_fwd = 0; /* current perp size of dest_encl */ debug1(DGF, D, "[ FlushGalley %s (hd)", SymName(actual(hd))); prnt_flush = FALSE; @@ -396,7 +397,7 @@ { Child(y, link); if( type(y) == SPLIT ) Child(y, DownDim(y, dim)); - debug2(DGF, DD, " examining %s %s", Image(type(y)), EchoObject(y)); + debug2(DGF, D, " examining %s %s", Image(type(y)), EchoObject(y)); switch( type(y) ) { @@ -532,6 +533,7 @@ case GRAPHIC: case LINK_SOURCE: case LINK_DEST: + case LINK_DEST_NULL: case LINK_URL: case ACAT: case HCAT: @@ -800,9 +802,10 @@ /* reject this component and move to a new dest; at this point, link is */ /* the link to the rejected component; its child is either y or else it */ /* is a SPLIT whose child is y */ - debug3(DGF, D, "at REJECT now (stop_link %s); headers(%s) = %s", + debug4(DGF, D, "at REJECT now (stop_link %s); headers(%s, %d) = %s", stop_link != nilobj ? "non-nil" : "nil", - SymName(actual(hd)), EchoObject(headers(hd))); + SymName(actual(hd)), head_next(hd), + EchoObject(headers(hd, head_next(hd)))); assert(actual(dest) != PrintSym, "FlushGalley: reject print!"); if( inners != nilobj ) DisposeObject(inners); if( stop_link != nilobj ) @@ -838,15 +841,17 @@ } /* now, if there are headers, dump them into the galley */ - if( headers(hd) != nilobj ) - { int headers_count; + if( headers(hd, head_next(hd)) != nilobj ) + { int i, headers_count; + debug0(DGS, D, " [ FlushGalley/REJECT dumping headers"); /* dump new copy of headers into top of galley */ - assert(Down(headers(hd))!=headers(hd), "FlushGalley/REJECT: headers!"); + i = head_next(hd); + assert(Down(headers(hd, i))!=headers(hd, i), "FlushGalley/REJECT: headers!"); tmp = Down(hd); assert( tmp != hd, "FlushGalley/REJECT: first_link!" ); headers_count = 0; - for( link=Down(headers(hd)); link != headers(hd); link=NextDown(link) ) + for( link=Down(headers(hd, i)); link != headers(hd, i); link=NextDown(link) ) { Child(y, link); debug2(DGS, D, "FlushGalley(%s)/REJECT linking %s", SymName(actual(hd)), EchoObject(y)); @@ -855,6 +860,10 @@ headers_count++; } assert(headers_count % 2 == 0, "FlushGalley/REJECT: headers_count!"); + + /* now increase head_next(hd) to make sure we don't resuse these soon */ + head_next(hd) = (head_next(hd) + 1) % MAX_HCOPIES; + debug0(DGS, D, " ] end FlushGalley/REJECT dumping headers"); } /* now detach and resume */ @@ -911,7 +920,7 @@ SetTarget(hd2); foll_or_prec(hd2) = GALL_FOLL; enclose_obj(hd2) = (has_enclose(actual(hd2)) ? BuildEnclose(hd2) : nilobj); - headers(hd2) = dead_headers(hd2) = nilobj; + ClearHeaders(hd2); Link(Up(y), index2); /* set up the next ready galley for reading next time */ diff -u --recursive --new-file -u --recursive --new-file lout-3.26/z21.c lout-3.27/z21.c --- lout-3.26/z21.c Wed Oct 9 12:05:30 2002 +++ lout-3.27/z21.c Sun Nov 17 09:13:32 2002 @@ -1,9 +1,9 @@ /*@z21.c:Galley Maker:SizeGalley()@*******************************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.26) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.27) */ /* COPYRIGHT (C) 1991, 2002 Jeffrey H. Kingston */ /* */ -/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */ +/* Jeffrey H. Kingston (jeff@it.usyd.edu.au) */ /* Basser Department of Computer Science */ /* The University of Sydney 2006 */ /* AUSTRALIA */ @@ -309,6 +309,7 @@ back(tmp, COLM) = fwd(tmp, COLM) = 0; back(tmp, ROWM) = fwd(tmp, ROWM) = 0; word_font(tmp) = word_colour(tmp) = word_language(tmp) = 0; + word_texture(tmp) = 1; word_baselinemark(tmp) = FALSE; word_outline(tmp) = FALSE; word_hyph(tmp) = FALSE; diff -u --recursive --new-file -u --recursive --new-file lout-3.26/z22.c lout-3.27/z22.c --- lout-3.26/z22.c Tue Oct 8 16:09:37 2002 +++ lout-3.27/z22.c Sun Nov 17 20:26:59 2002 @@ -1,9 +1,9 @@ /*@z22.c:Galley Service:Interpose()@******************************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.26) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.27) */ /* COPYRIGHT (C) 1991, 2002 Jeffrey H. Kingston */ /* */ -/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */ +/* Jeffrey H. Kingston (jeff@it.usyd.edu.au) */ /* Basser Department of Computer Science */ /* The University of Sydney 2006 */ /* AUSTRALIA */ @@ -108,7 +108,8 @@ break; } } - fprintf(stderr, ")\n"); + fprintf(stderr, ")"); + debug0(DGF, D, ""); ) /* check for root galley case */ @@ -191,7 +192,7 @@ void ExpandRecursives(OBJECT recs) { CONSTRAINT non_c, hc, vc; - OBJECT target_index, target, z, n1, inners, newrecs, hd, tmp, env, why; + OBJECT target_index, target, z = nilobj, n1, inners, newrecs, hd, tmp, env, why; debug0(DCR, DDD, "ExpandRecursives(recs)"); SetConstraint(non_c, MAX_FULL_LENGTH, MAX_FULL_LENGTH, MAX_FULL_LENGTH); n1 = nilobj; @@ -206,7 +207,8 @@ /* expand body of target, convert to galley, and check size */ New(hd, HEAD); actual(hd) = actual(target); must_expand(hd) = TRUE; force_gall(hd) = FALSE; - enclose_obj(hd) = limiter(hd) = headers(hd) = dead_headers(hd) = nilobj; + ClearHeaders(hd); + enclose_obj(hd) = limiter(hd) = nilobj; opt_components(hd) = opt_constraints(hd) = nilobj; gall_dir(hd) = horiz_galley(actual(target)); whereto(hd) = ready_galls(hd) = nilobj; @@ -259,7 +261,7 @@ AdjustSize(target, back(z, ROWM), fwd(z, ROWM), ROWM); Interpose(target, VCAT, z, z); } - debug0(DGS, D, "calling Promote(hd, hd) from ExpandRecursives"); + debug0(DGS, DD, "calling Promote(hd, hd) from ExpandRecursives"); Promote(hd, hd, target_index, TRUE); DeleteNode(hd); DeleteNode(target_index); if( inners != nilobj ) @@ -282,7 +284,7 @@ /*****************************************************************************/ static OBJECT FindSplitInGalley(OBJECT hd) -{ OBJECT link, y; +{ OBJECT link, y = nilobj; debug0(DGF, D, "FindSplitInGalley(hd)"); for( link = Down(hd); link != hd; link = NextDown(link) ) { Child(y, link); @@ -350,6 +352,7 @@ case GRAPHIC: case LINK_SOURCE: case LINK_DEST: + case LINK_DEST_NULL: case LINK_URL: debug0(DGF, D, "FindSplitInGalley(hd) failing, hd ="); @@ -371,6 +374,22 @@ /*****************************************************************************/ /* */ +/* ClearHeaders(OBJECT hd) */ +/* */ +/* Clear the headers of hd. */ +/* */ +/*****************************************************************************/ + +void ClearHeaders(OBJECT hd) +{ int i; + for( i = 0; i < MAX_HCOPIES; i++ ) + headers(hd, i) = nilobj; + head_next(hd) = 0; +} /* end ClearHeaders */ + + +/*****************************************************************************/ +/* */ /* DisposeHeaders(OBJECT hd) */ /* */ /* Dispose the headers of hd. */ @@ -378,13 +397,17 @@ /*****************************************************************************/ static void DisposeHeaders(OBJECT hd) -{ if( headers(hd) != nilobj ) - { assert(type(headers(hd)) == ACAT || type(headers(hd)) == VCAT, - "DisposeHeaders: type(headers(hd))!"); - while( Down(headers(hd)) != headers(hd) ) - { DisposeChild(Down(headers(hd))); +{ int i; + for( i = 0; i < MAX_HCOPIES; i++ ) + { + if( headers(hd, i) != nilobj ) + { assert(type(headers(hd, i)) == ACAT || type(headers(hd, i)) == VCAT, + "DisposeHeaders: type(headers(hd))!"); + while( Down(headers(hd, i)) != headers(hd, i) ) + { DisposeChild(Down(headers(hd, i))); + } + headers(hd, i) = nilobj; } - headers(hd) = nilobj; } } /* end DisposeHeaders */ @@ -409,10 +432,11 @@ /*****************************************************************************/ void HandleHeader(OBJECT hd, OBJECT header) -{ OBJECT g, z, gaplink; +{ OBJECT g, gaplink, gap_obj; + int i; debug3(DGS, D, "[ HandleHeader(%s, %s); headers = %s; galley:", - SymName(actual(hd)), EchoObject(header), EchoObject(headers(hd))); - ifdebug(DGS, D, DebugGalley(hd, nilobj, 2)); + SymName(actual(hd)), EchoObject(header), EchoObject(headers(hd, head_next(hd)))); + ifdebug(DGS, DD, DebugGalley(hd, nilobj, 2)); assert(is_header(type(header)), "HandleHeader: type(header)!"); assert(Up(header) == LastUp(header) && Up(header) != header, "HandleHeader: header parents!"); @@ -435,58 +459,57 @@ case BEGIN_HEADER: - /* make new headers if required */ - if( headers(hd) == nilobj ) - New(headers(hd), gall_dir(hd) == ROWM ? VCAT : ACAT); - - /* construct a gap object from the left parameter */ - New(g, GAP_OBJ); - underline(g) = FALSE; - MoveLink(Down(header), g, PARENT); - Child(z, Down(g)); - GapCopy(gap(g), line_gap(save_style(header))); - mark(gap(g)) = join(gap(g)) = FALSE; - - /* move header and gap into headers() */ - MoveLink(LastDown(header), headers(hd), PARENT); - Link(headers(hd), g); - debug2(DOB, D, "HandleHeader moving %s header %s", - SymName(actual(hd)), Image(type(header))); + Child(gap_obj, Down(header)); + for( i = 0; i < MAX_HCOPIES; i++ ) + { + /* make new headers if required */ + if( headers(hd, i) == nilobj ) + New(headers(hd, i), gall_dir(hd) == ROWM ? VCAT : ACAT); + + /* construct a gap object from the left parameter */ + New(g, GAP_OBJ); + underline(g) = FALSE; + Link(g, CopyObject(gap_obj, &fpos(gap_obj))); + GapCopy(gap(g), line_gap(save_style(header))); + mark(gap(g)) = join(gap(g)) = FALSE; + + /* move header and gap into headers() */ + MoveLink(NextDown(Down(header)), headers(hd, i), PARENT); + Link(headers(hd, i), g); + debug2(DGS, D, "HandleHeader moving %s header %s", + SymName(actual(hd)), Image(type(header))); + } break; case END_HEADER: - if( headers(hd) == nilobj ) - Error(22, 11, "no header for %s to remove", WARN, &fpos(hd), - KW_END_HEADER); - else + for( i = 0; i < MAX_HCOPIES; i++ ) { - /* dispose last gap */ - assert(LastDown(headers(hd))!=headers(hd), "Promote/END_HEADER!"); - Child(g, LastDown(headers(hd))); - assert(type(g) == GAP_OBJ, "HandleHeader: END_HEADER/gap!"); - DisposeChild(LastDown(headers(hd))); - - /* dispose last header object */ - assert(LastDown(headers(hd))!=headers(hd), "Promote/END_HEADER!"); - DisposeChild(LastDown(headers(hd))); - if( Down(headers(hd)) == headers(hd) ) - { DisposeObject(headers(hd)); - headers(hd) = nilobj; - } + if( headers(hd, i) == nilobj ) + Error(22, 11, "no header for %s to remove", WARN, &fpos(hd), + KW_END_HEADER); + else + { + /* dispose last gap */ + assert(LastDown(headers(hd, i))!=headers(hd, i), "Promote/END_HEADER!"); + Child(g, LastDown(headers(hd, i))); + assert(type(g) == GAP_OBJ, "HandleHeader: END_HEADER/gap!"); + DisposeChild(LastDown(headers(hd, i))); + + /* dispose last header object */ + assert(LastDown(headers(hd, i))!=headers(hd, i), "Promote/END_HEADER!"); + DisposeChild(LastDown(headers(hd, i))); + if( Down(headers(hd, i)) == headers(hd, i) ) + { DisposeObject(headers(hd, i)); + headers(hd, i) = nilobj; + } + } } break; } - /* dispose header object and following gap object */ - /* *** old code - y = MakeWord(WORD, STR_EMPTY, &fpos(header)); - back(y, COLM) = fwd(y, COLM) = back(y, ROWM) = fwd(y, ROWM) = 0; - ReplaceNode(y, header); - *** */ - /* dispose header object (must take care to disentangle safely) */ gaplink = NextDown(Up(header)); assert(type(gaplink) == LINK, "HandleHeader: type(gaplink)!"); @@ -500,8 +523,8 @@ DisposeChild(gaplink); debug2(DGS, D, "] HandleHeader returning; headers(%s) now %s; galley:", - SymName(actual(hd)), EchoObject(headers(hd))); - ifdebug(DGS, D, DebugGalley(hd, nilobj, 2)); + SymName(actual(hd)), EchoObject(headers(hd, 0))); + ifdebug(DGS, DD, DebugGalley(hd, nilobj, 2)); } /* end HandleHeader */ @@ -533,8 +556,8 @@ OBJECT dest, link, y, z, tmp1, tmp2, why, top_y; FULL_CHAR *label_string; FULL_LENGTH aback, afwd; int dim; - debug1(DGS, D, "[ Promote(%s, stop_link):", SymName(actual(hd))); - ifdebug(DGS, D, DebugGalley(hd, stop_link, 2)); + debug1(DGS, DD, "[ Promote(%s, stop_link):", SymName(actual(hd))); + ifdebug(DGS, DD, DebugGalley(hd, stop_link, 2)); assert( type(hd) == HEAD, "Promote: hd!" ); assert( type(stop_link) == LINK || stop_link == hd, "Promote: stop_link!" ); @@ -546,7 +569,7 @@ if( stop_link != hd ) { Child(y, stop_link); if( type(y) != GAP_OBJ ) - { ifdebug(DGS, D, DebugGalley(hd, stop_link, 2)); + { ifdebug(DGS, DD, DebugGalley(hd, stop_link, 2)); } assert( type(y) == GAP_OBJ, "Promote: missing GAP_OBJ!" ); stop_link = NextDown(stop_link); @@ -620,6 +643,7 @@ fwd(last, COLM) = fwd(y, gall_dir(hd)); word_font(last) = word_font(y); word_colour(last) = word_colour(y); + word_texture(last) = word_texture(y); word_outline(last) = word_outline(y); word_language(last) = word_language(y); word_baselinemark(last) = word_baselinemark(y); @@ -833,6 +857,7 @@ case CLOSURE: case NULL_CLOS: + case LINK_DEST_NULL: case PAGE_LABEL: case CROSS: case FORCE_CROSS: @@ -948,8 +973,8 @@ /* promote components */ TransferLinks(Down(hd), stop_link, link); - debug0(DGS, D, "] Promote returning; galley:"); - ifdebug(DGS, D, DebugGalley(hd, nilobj, 2)); + debug0(DGS, DD, "] Promote returning; galley:"); + ifdebug(DGS, DD, DebugGalley(hd, nilobj, 2)); } /* end Promote */ diff -u --recursive --new-file -u --recursive --new-file lout-3.26/z23.c lout-3.27/z23.c --- lout-3.26/z23.c Tue Oct 8 16:09:37 2002 +++ lout-3.27/z23.c Mon Nov 18 07:43:41 2002 @@ -1,9 +1,9 @@ /*@z23.c:Galley Printer:ScaleFactor()@****************************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.26) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.27) */ /* COPYRIGHT (C) 1991, 2002 Jeffrey H. Kingston */ /* */ -/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */ +/* Jeffrey H. Kingston (jeff@it.usyd.edu.au) */ /* Basser Department of Computer Science */ /* The University of Sydney 2006 */ /* AUSTRALIA */ @@ -35,6 +35,48 @@ /*****************************************************************************/ /* */ +/* FirstDefiniteLDN(x, link, y, jn, ymk, dim, sp, pg) */ +/* NextDefiniteWithGapLDN(x, link, y, g, jn, ymk, dim, sp, pg) */ +/* */ +/* Like FirstDefinite and NextDefiniteWithGap but during the scan, if a */ +/* LINK_DEST_NULL is encountered, call FixAndPrintObject on it before */ +/* continuing on to find the next definite object. */ +/* */ +/*****************************************************************************/ + +#define FirstDefiniteLDN(x, link, y, jn, ymk, dim, sp, pg) \ +{ jn = TRUE; \ + for( link = Down(x); link != x; link = NextDown(link) ) \ + { Child(y, link); \ + if( type(y) == GAP_OBJ ) jn = jn && join(gap(y)); \ + else if( type(y)==SPLIT ? SplitIsDefinite(y) : is_definite(type(y)))\ + break; \ + else if( type(y) == LINK_DEST_NULL ) \ + FixAndPrintObject(y, ymk, 0, 0, dim, sp, pg, 0, &aback, &afwd); \ + } \ +} /* end FirstDefiniteLDN */ + +#define NextDefiniteWithGapLDN(x, link, y, g, jn, ymk, dim, sp, pg) \ +{ g = nilobj; jn = TRUE; \ + for( link = NextDown(link); link != x; link = NextDown(link) ) \ + { Child(y, link); \ + if( type(y) == GAP_OBJ ) g = y, jn = jn && join(gap(y)); \ + else if( type(y)==SPLIT ? SplitIsDefinite(y):is_definite(type(y)) ) \ + { \ + debug2(DFS, D, " NextDefiniteWithGap at %s %s", \ + Image(type(y)), EchoObject(y)); \ + assert( g != nilobj, "NextDefiniteWithGap: g == nilobj!" ); \ + break; \ + } \ + else if( type(y) == LINK_DEST_NULL ) \ + FixAndPrintObject(y, ymk, 0, 0, dim, sp, pg, 0, &aback, &afwd); \ + } \ +} /* end NextDefiniteWithGapLDN */ + + + +/*****************************************************************************/ +/* */ /* static float ScaleFactor(avail_size, inner_size) */ /* */ /* Return the scale factor for this scaling, or 0 if impossible. */ @@ -59,7 +101,7 @@ /*****************************************************************************/ static FULL_LENGTH FindAdjustIncrement(OBJECT x, FULL_LENGTH frame_size,int dim) -{ OBJECT y, link, prev, g; +{ OBJECT y = nilobj, link, prev = nilobj, g; int adjustable_gaps; BOOLEAN jn; FULL_LENGTH inc, mk, actual_size; @@ -131,7 +173,7 @@ OBJECT FixAndPrintObject(OBJECT x, FULL_LENGTH xmk, FULL_LENGTH xb, FULL_LENGTH xf, int dim, BOOLEAN suppress, FULL_LENGTH pg, int count, FULL_LENGTH *actual_back, FULL_LENGTH *actual_fwd) -{ OBJECT y, link, prev, g, z, face, thr, res, uplink; +{ OBJECT y = nilobj, link, prev = nilobj, g, z, face, thr, res, uplink; /* OBJECT fixed_thr, tmp; */ FULL_LENGTH mk, ymk, frame_size, back_edge, yb, yf, inc, f; FULL_LENGTH aback, afwd; @@ -590,6 +632,7 @@ case LINK_SOURCE: case LINK_DEST: + case LINK_DEST_NULL: case LINK_URL: CountChild(y, LastDown(x), count); @@ -606,6 +649,7 @@ break; case LINK_DEST: + case LINK_DEST_NULL: BackEnd->LinkDest(z, save_mark(x) - back(x, COLM), (pg - xmk) - xf, save_mark(x) + fwd(x, COLM), (pg - xmk) + xb); @@ -668,7 +712,7 @@ Image(type(x)), EchoLength(back(x, dim)), EchoLength(fwd(x, dim)), EchoLength(xmk), EchoLength(xb), EchoLength(xf)); - FirstDefinite(x, link, prev, jn); + FirstDefiniteLDN(x, link, prev, jn, xmk, dim, NO_SUPPRESS, pg); if( link != x ) { @@ -680,7 +724,7 @@ /* */ /*******************************************************************/ - NextDefiniteWithGap(x, link, y, g, jn); + NextDefiniteWithGap(x, link, y, g, jn); /* not LDN since will redo */ if( link != x && mode(gap(g)) == TAB_MODE && units(gap(g)) == AVAIL_UNIT && width(gap(g)) == 0 ) { @@ -692,7 +736,7 @@ mode(gap(g)) = EDGE_MODE; units(gap(g)) = FIXED_UNIT; } - FirstDefinite(x, link, prev, jn); + FirstDefinite(x, link, prev, jn); /* not LDN since already done */ /*******************************************************************/ /* */ @@ -724,7 +768,7 @@ /* */ /*******************************************************************/ - NextDefiniteWithGap(x, link, y, g, jn); + NextDefiniteWithGapLDN(x, link, y, g, jn, mk, dim, NO_SUPPRESS, pg); while( link != x ) { if( mode(gap(g)) == TAB_MODE && units(gap(g)) == AVAIL_UNIT && @@ -749,7 +793,7 @@ mk += ActualGap(afwd, back(y, dim), fwd(y, dim), &gap(g), frame_size, mk - back_edge); prev = y; - NextDefiniteWithGap(x, link, y, g, jn); + NextDefiniteWithGapLDN(x, link, y, g, jn, mk, dim, NO_SUPPRESS, pg); } /*******************************************************************/ @@ -792,7 +836,7 @@ FULL_LENGTH b, f, dlen; start_group = nilobj; dble_found = FALSE; dlen = 0; debug0(DGP, DD, " groups beginning."); - FirstDefinite(x, link, y, jn); + FirstDefiniteLDN(x, link, y, jn, xmk, dim, NO_SUPPRESS, pg); if( link != x ) { /* start first group, with or without join */ @@ -805,7 +849,7 @@ Image(type(y)), dble_found ? "" : "not ", EchoLength(b), EchoLength(f)); - NextDefiniteWithGap(x, link, y, g, jn); + NextDefiniteWithGapLDN(x, link, y, g, jn, xmk, dim, NO_SUPPRESS, pg); while( link != x ) { if( !jn ) @@ -845,7 +889,7 @@ EchoLength(b), EchoLength(f)); } - NextDefiniteWithGap(x, link, y, g, jn); + NextDefiniteWithGapLDN(x, link, y, g, jn, xmk, dim, NO_SUPPRESS, pg); } assert( start_group != nilobj, "FAPO: final start_group!" ); @@ -892,11 +936,13 @@ if( dim == COLM ) { BOOLEAN will_adjust, adjusting; - FULL_LENGTH actual_size, - adjust_indent, frame_size, back_edge, adjust_inc, inc, adjust_sofar; - int adjustable_gaps, gaps_sofar; - BOOLEAN underlining; int underline_xstart; - FONT_NUM underline_font; COLOUR_NUM underline_colour; + FULL_LENGTH actual_size, adjust_indent, frame_size, back_edge; + FULL_LENGTH adjust_inc, inc = 0, adjust_sofar = 0; + int adjustable_gaps, gaps_sofar = 0; + BOOLEAN underlining; int underline_xstart = 0; + FONT_NUM underline_font = 0; + COLOUR_NUM underline_colour = 0; + TEXTURE_NUM underline_texture = 0; OBJECT urec, last_bad_gap; @@ -916,7 +962,7 @@ /* */ /*********************************************************************/ - FirstDefinite(x, link, y, jn); + FirstDefinite(x, link, y, jn); /* no LDN since this is initial pass */ if( link == x ) { *actual_back = back(x, dim); *actual_fwd = fwd(x, dim); @@ -938,7 +984,7 @@ mk = back_edge + back(y, dim); frame_size = xb + xf; prev = y; - NextDefiniteWithGap(x, link, y, g, jn); + NextDefiniteWithGap(x, link, y, g, jn); /* no LDN, initial pass */ while( link != x ) { save_actual_gap(g) = ActualGap(fwd(prev, dim), back(y, dim), @@ -951,7 +997,7 @@ } else if( width(gap(g)) > 0 ) adjustable_gaps++; prev = y; - NextDefiniteWithGap(x, link, y, g, jn); + NextDefiniteWithGap(x, link, y, g, jn); /* no LDN, initial pass */ } actual_size = mk + fwd(prev, dim) - back_edge; @@ -1111,10 +1157,10 @@ underlining = FALSE; adjusting = will_adjust && last_bad_gap == nilobj; - FirstDefinite(x, link, y, jn); + FirstDefiniteLDN(x, link, y, jn, xmk, dim, NO_SUPPRESS, pg); prev = y; mk = xmk - back(x, dim) + back(y, dim) + adjust_indent; - NextDefiniteWithGap(x, link, y, g, jn); + NextDefiniteWithGapLDN(x, link, y, g, jn, mk, dim, NO_SUPPRESS, pg); while( link != x ) { /* check for underlining */ @@ -1128,10 +1174,18 @@ underlining = TRUE; debug2(DGP, DD, "underlining begins at %s %s", Image(type(prev)), EchoObject(prev)); - underline_font = is_word(type(prev)) ? word_font(prev) : - font(save_style(x)); - underline_colour = is_word(type(prev)) ? word_colour(prev) : - colour(save_style(x)); + if( is_word(type(prev)) ) + { + underline_font = word_font(prev); + underline_colour = word_colour(prev); + underline_texture = word_texture(prev); + } + else + { + underline_font = font(save_style(x)); + underline_colour = colour(save_style(x)); + underline_texture = texture(save_style(x)); + } underline_xstart = mk - back(prev, dim); } if( underline(g) == UNDER_OFF ) @@ -1142,8 +1196,9 @@ New(urec, UNDER_REC); back(urec, COLM) = underline_xstart; fwd(urec, COLM) = mk + fwd(prev, dim); - back(urec, ROWM) = underline_font; - fwd(urec, ROWM) = underline_colour; + word_font(urec) = underline_font; + word_colour(urec) = underline_colour; + word_texture(urec) = underline_texture; underlining = FALSE; Link(Up(prev), urec); } @@ -1173,7 +1228,7 @@ if( !adjusting && will_adjust && g == last_bad_gap ) adjusting = TRUE; - NextDefiniteWithGap(x, link, y, g, jn); + NextDefiniteWithGapLDN(x, link, y, g, jn, mk, dim, NO_SUPPRESS, pg); } /* check for underlining */ @@ -1193,10 +1248,18 @@ debug2(DGP, DD, "underlining begins at %s %s", Image(type(prev)), EchoObject(prev)); underlining = TRUE; - underline_font = is_word(type(prev)) ? word_font(prev) : - font(save_style(x)); - underline_colour = is_word(type(prev)) ? word_colour(prev) : - colour(save_style(x)); + if( is_word(type(prev)) ) + { + underline_font = word_font(prev); + underline_colour = word_colour(prev); + underline_texture = word_texture(prev); + } + else + { + underline_font = font(save_style(x)); + underline_colour = colour(save_style(x)); + underline_texture = texture(save_style(x)); + } underline_xstart = mk - back(prev, dim); } @@ -1206,8 +1269,9 @@ New(urec, UNDER_REC); back(urec, COLM) = underline_xstart; fwd(urec, COLM) = mk + fwd(prev, dim); - back(urec, ROWM) = underline_font; - fwd(urec, ROWM) = underline_colour; + word_font(urec) = underline_font; + word_colour(urec) = underline_colour; + word_texture(urec) = underline_texture; underlining = FALSE; Link(Up(prev), urec); } @@ -1221,11 +1285,11 @@ } else for( link = Down(x); link != x; link = NextDown(link) ) { Child(y, link); - if( !is_definite(type(y)) ) + if( !is_definite(type(y)) && type(y) != LINK_DEST_NULL ) { if( type(y) == UNDER_REC ) /* generate an underline now */ - { BackEnd->PrintUnderline(back(y, ROWM), fwd(y, ROWM), back(y, COLM), - fwd(y, COLM), pg - xmk); + { BackEnd->PrintUnderline(word_font(y),word_colour(y), + word_colour(y), back(y, COLM), fwd(y, COLM), pg - xmk); link = PrevDown(link); /* remove all trace of underlining */ DisposeChild(Up(y)); /* in case we print this object again */ } @@ -1251,7 +1315,13 @@ Image(type(x)), EchoLength(back(x, dim)), EchoLength(fwd(x, dim)), i, Image(type(y)), EchoLength(back(y, dim)), EchoLength(fwd(y, dim))); + + /* This line seems to have been an optimization. It won't + * work if we are inside a running header, since subsequent + * passes will have forgotten the thread. JeffK 13/11/02 MoveLink(uplink, link, CHILD); DeleteLink(link); + */ + assert( type(y) != GAP_OBJ, "FAPO: THR!"); if( thr_state(x) != FINALSIZE ) diff -u --recursive --new-file -u --recursive --new-file lout-3.26/z24.c lout-3.27/z24.c --- lout-3.26/z24.c Tue Oct 8 16:09:38 2002 +++ lout-3.27/z24.c Sun Nov 17 09:13:55 2002 @@ -1,9 +1,9 @@ /*@z24.c:Print Service:PrintInit()@*******************************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.26) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.27) */ /* COPYRIGHT (C) 1991, 2002 Jeffrey H. Kingston */ /* */ -/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */ +/* Jeffrey H. Kingston (jeff@it.usyd.edu.au) */ /* Basser Department of Computer Science */ /* The University of Sydney 2006 */ /* AUSTRALIA */ diff -u --recursive --new-file -u --recursive --new-file lout-3.26/z25.c lout-3.27/z25.c --- lout-3.26/z25.c Tue Oct 15 12:43:08 2002 +++ lout-3.27/z25.c Sun Nov 17 20:27:37 2002 @@ -1,9 +1,9 @@ /*@z25.c:Object Echo:aprint(), cprint(), printnum()@**************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.26) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.27) */ /* COPYRIGHT (C) 1991, 2002 Jeffrey H. Kingston */ /* */ -/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */ +/* Jeffrey H. Kingston (jeff@it.usyd.edu.au) */ /* Basser Department of Computer Science */ /* The University of Sydney 2006 */ /* AUSTRALIA */ @@ -99,7 +99,7 @@ static void newline(void) { if( fp == null ) AppendString(STR_SPACE); else - { fputs("\n", fp); + { StringFPuts(STR_NEWLINE, fp); fflush(fp); for( col = 0; col < indent; col++ ) fputs(" ", fp); } @@ -702,8 +702,6 @@ break; - case BEGIN_HEADER: - case SET_HEADER: case ONE_COL: case ONE_ROW: case HCONTRACT: @@ -740,6 +738,7 @@ case GRAPHIC: case LINK_SOURCE: case LINK_DEST: + case LINK_DEST_NULL: case LINK_URL: case ROTATE: case BACKGROUND: @@ -755,6 +754,7 @@ case BREAK: case UNDERLINE: case COLOUR: + case TEXTURE: case OUTLINE: case LANGUAGE: case OPEN: @@ -785,6 +785,35 @@ break; + case BEGIN_HEADER: + case SET_HEADER: + + /* print enclosing left brace if needed */ + braces_needed = (DEFAULT_PREC <= outer_prec); + if( braces_needed ) cprint(KW_LBR), aprint(" "); + + /* print left parameter */ + if( Down(x) != LastDown(x) ) + { CountChild(y, Down(x), count); + echo(y, find_max(outer_prec, DEFAULT_PREC), count); + aprint(" "); + } + + cprint(Image(type(x))); + + /* print right parameter copies */ + for( link = NextDown(Down(x)), i=1; link != x; link = NextDown(link), i++ ) + { + newline(); + printnum(i); + aprint(": "); + CountChild(y, link, count); + echo(y, find_max(outer_prec,DEFAULT_PREC), count); + } + if( braces_needed ) aprint(" "), cprint(KW_RBR); + break; + + case RAW_VERBATIM: case VERBATIM: @@ -938,7 +967,7 @@ limit = 60; if( x == nilobj ) fprintf(stderr, ""); else echo(x, type(x) == GAP_OBJ ? VCAT : 0, 1); - fprintf(stderr, "\n"); + fprintf(stderr, "%s", STR_NEWLINE); debug0(DOE, D, "DebugObject returning"); } /* end DebugObject */ @@ -1008,36 +1037,72 @@ /* Print overview of galley hd on stderr; mark pinpoint if found */ /* */ /*****************************************************************************/ -#define eprint(x, a, b, c) fprintf(stderr, "| %d %-7s %20s %s\n", x, a, b, c) void DebugGalley(OBJECT hd, OBJECT pinpt, int indent) { OBJECT link, y; char istr[30]; int i; for( i = 0; i < indent; i++ ) istr[i] = ' '; istr[i] = '\0'; if( type(hd) != HEAD ) - { fprintf(stderr, "%shd is %s\n", istr, Image(type(hd))); + { + debug2(ANY, D, "%shd is %s", istr, Image(type(hd))); return; } - fprintf(stderr, "%sgalley %s into %s\n", istr, + debug3(ANY, D, "%sgalley %s into %s", istr, SymName(actual(hd)), SymName(whereto(hd))); for( link = Down(hd); link != hd; link = NextDown(link) ) { Child(y, link); if( y == pinpt || link == pinpt ) - { fprintf(stderr, "++ %d %s ", (int) y, Image(type(y))); + { + debug2(ANY, D, "++ %d %s ", (int) y, Image(type(y))); DebugObject(y); } else if( type(y) == GAP_OBJ ) - eprint((int) y, "gap_obj", Image(type(y)), EchoGap(&gap(y))); + { + debug4(ANY, D, "| %d %-7s %20s %s", (int) y, "gap_obj", + Image(type(y)), EchoGap(&gap(y))); + } + else if( type(y) == EXPAND_IND ) + { OBJECT z = nilobj; + if( type(actual(y)) == VEXPAND || type(actual(y)) == HEXPAND ) + { + Child(z, Down(actual(y))); + if( !is_word(type(z)) ) + z = nilobj; + } + if( z == nilobj ) + { + debug4(ANY, D, "| %d %-7s %20s %s", (int) y, "index", + Image(type(y)), Image(type(actual(y)))); + } + else + { + debug5(ANY, D, "| %d %-7s %20s %s \"%s\"", (int) y, "index", + Image(type(y)), Image(type(actual(y))), string(z)); + } + assert( type(actual(y)) == VEXPAND || type(actual(y)) == HEXPAND, + "DebugGalley: type(actual(EXPAND_IND))!"); + } else if( is_index(type(y)) ) - eprint((int) y, "index", Image(type(y)), ""); + { + debug4(ANY, D, "| %d %-7s %20s %s", (int) y, "index", + Image(type(y)), ""); + } else if( is_definite(type(y)) ) - eprint((int) y, "def_obj", Image(type(y)), is_word(type(y)) ? string(y):STR_EMPTY); + { + debug4(ANY, D, "| %d %-7s %20s %s", (int) y, "def_obj", + Image(type(y)), is_word(type(y)) ? string(y):STR_EMPTY); + } else if( is_indefinite(type(y)) ) - eprint((int) y, "indefin", Image(type(y)), - type(y) == CLOSURE ? SymName(actual(y)) : STR_EMPTY); + { + debug4(ANY, D, "| %d %-7s %20s %s", (int) y, "indefin", + Image(type(y)), type(y) == CLOSURE ? SymName(actual(y)) : STR_EMPTY); + } else - eprint((int) y, "unknown", Image(type(y)), ""); + { + debug4(ANY, D, "| %d %-7s %20s %s", (int) y, "unknown", + Image(type(y)), ""); + } } } /* end DebugGalley */ #endif diff -u --recursive --new-file -u --recursive --new-file lout-3.26/z26.c lout-3.27/z26.c --- lout-3.26/z26.c Tue Oct 8 16:09:39 2002 +++ lout-3.27/z26.c Sun Nov 17 20:27:48 2002 @@ -1,9 +1,9 @@ /*@z26.c:Echo Service:BeginString()@******************************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.26) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.27) */ /* COPYRIGHT (C) 1991, 2002 Jeffrey H. Kingston */ /* */ -/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */ +/* Jeffrey H. Kingston (jeff@it.usyd.edu.au) */ /* Basser Department of Computer Science */ /* The University of Sydney 2006 */ /* AUSTRALIA */ @@ -209,6 +209,7 @@ case BREAK: return KW_BREAK; case UNDERLINE: return KW_UNDERLINE; case COLOUR: return KW_COLOUR; + case TEXTURE: return KW_TEXTURE; case OUTLINE: return KW_OUTLINE; case LANGUAGE: return KW_LANGUAGE; case CURR_LANG: return KW_CURR_LANG; @@ -243,6 +244,7 @@ case GRAPHIC: return KW_GRAPHIC; case LINK_SOURCE: return KW_LINK_SOURCE; case LINK_DEST: return KW_LINK_DEST; + case LINK_DEST_NULL: return KW_LINK_DEST; case LINK_URL: return KW_LINK_URL; case ACAT: return AsciiToFull("acat"); case HCAT: return AsciiToFull("hcat"); diff -u --recursive --new-file -u --recursive --new-file lout-3.26/z27.c lout-3.27/z27.c --- lout-3.26/z27.c Tue Oct 8 16:09:40 2002 +++ lout-3.27/z27.c Sun Nov 17 09:14:18 2002 @@ -1,9 +1,9 @@ /*@z27.c:Debug Service:Debug flags@*******************************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.26) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.27) */ /* COPYRIGHT (C) 1991, 2002 Jeffrey H. Kingston */ /* */ -/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */ +/* Jeffrey H. Kingston (jeff@it.usyd.edu.au) */ /* Basser Department of Computer Science */ /* The University of Sydney 2006 */ /* AUSTRALIA */ @@ -84,6 +84,7 @@ {"po", {0, 0, 0}}, /* PostScript Back End */ {"pf", {0, 0, 0}}, /* PDF Back End */ {"pt", {0, 0, 0}}, /* Plain Text Back End */ + {"tx", {0, 0, 0}}, /* Texture Service */ {"pp", {0, 0, 0}}, /* Profiling */ {"", {0, 0, 0}}, /* any */ }; @@ -121,14 +122,17 @@ { static BOOLEAN first_message = TRUE; va_list ap; if( first_message ) - { fprintf(stderr, "\nLout Debug Output:\n"); + { + fprintf(stderr, "%s", STR_NEWLINE); + fprintf(stderr, "Lout Debug Output:"); + fprintf(stderr, "%s", STR_NEWLINE); first_message = FALSE; } fprintf(stderr, "%2s: ", dbg[category].flag); va_start(ap, str); vfprintf(stderr, str, ap); va_end(ap); - fprintf(stderr, "\n"); + fprintf(stderr, "%s", STR_NEWLINE); fflush(stderr); } /* end Debug */ @@ -158,7 +162,10 @@ for( i = 0; i < proftop; i++ ) { if( strcmp(profstack[i].label, str) == 0 ) { for( i = 0; i < proftop; i++ ) - fprintf(stderr, "profstack[%d] = %s\n", i, profstack[i].label); + { + fprintf(stderr, "profstack[%d] = %s", i, profstack[i].label); + fprintf(stderr, "%s", STR_NEWLINE); + } assert1(FALSE, "ProfileOn: restarted", str); } } @@ -204,9 +211,10 @@ void ProfilePrint(void) { int i; for( i = 0; i < profsize; i++ ) - { fprintf(stderr, "Profile %-20s %6ld secs, %3d calls, %6.2f secs/call\n", + { fprintf(stderr, "Profile %-20s %6ld secs, %3d calls, %6.2f secs/call", profstore[i].label, profstore[i].time, profstore[i].calls, (float) profstore[i].time / profstore[i].calls ); + fprintf(stderr, "%s", STR_NEWLINE); } } /* end ProfilePrint */ #endif diff -u --recursive --new-file -u --recursive --new-file lout-3.26/z28.c lout-3.27/z28.c --- lout-3.26/z28.c Tue Oct 8 16:09:41 2002 +++ lout-3.27/z28.c Sun Nov 17 09:14:26 2002 @@ -1,9 +1,9 @@ /*@z28.c:Error Service:ErrorInit(), ErrorSeen()@******************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.26) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.27) */ /* COPYRIGHT (C) 1991, 2002 Jeffrey H. Kingston */ /* */ -/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */ +/* Jeffrey H. Kingston (jeff@it.usyd.edu.au) */ /* Basser Department of Computer Science */ /* The University of Sydney 2006 */ /* AUSTRALIA */ @@ -53,7 +53,7 @@ void ErrorInit(FULL_CHAR *str) { if( fp != NULL ) Error(28, 1, "-e argument appears twice in command line", FATAL, no_fpos); - fp = StringFOpen(str, WRITE_TEXT); + fp = StringFOpen(str, WRITE_FILE); if( fp == NULL ) Error(28, 2, "cannot open error file %s", FATAL, no_fpos, str); } /* end ErrorInit */ @@ -84,7 +84,7 @@ static void PrintFileBanner(int fnum) { static int CurrentFileNum = -1; if( fnum != CurrentFileNum ) - { fprintf(fp, "lout%s:\n", EchoFileSource(fnum)); + { fprintf(fp, "lout%s:%s", EchoFileSource(fnum), (char *) STR_NEWLINE); CurrentFileNum = fnum; } } /* end PrintFileBanner */ @@ -178,16 +178,16 @@ while( block_top > 0 ) LeaveErrorBlock(TRUE); if( AltErrorFormat ) { - fprintf(fp, condcatgets(MsgCat, 28, 7, "%s internal error: %s\n"), - EchoAltFilePos(pos), val); - /* for estrip's benefit: Error(28, 7, "%s internal error: %s\n") */ + fprintf(fp, condcatgets(MsgCat, 28, 7, "%s internal error: %s%s"), + EchoAltFilePos(pos), val, (char *) STR_NEWLINE); + /* for estrip's benefit: Error(28, 7, "%s internal error: %s%s") */ } else { PrintFileBanner(file_num(*pos)); - fprintf(fp, condcatgets(MsgCat, 28, 4, " %6s internal error: %s\n"), - EchoFileLine(pos), val); - /* for estrip's benefit: Error(28, 4, " %6s internal error: %s\n") */ + fprintf(fp, condcatgets(MsgCat, 28, 4, " %6s internal error: %s%s"), + EchoFileLine(pos), val, (char *) STR_NEWLINE); + /* for estrip's benefit: Error(28, 4, " %6s internal error: %s%s") */ } #if DEBUG_ON abort(); @@ -202,17 +202,17 @@ while( block_top > 0 ) LeaveErrorBlock(TRUE); if( AltErrorFormat ) { - fprintf(fp, condcatgets(MsgCat, 28, 8, "%s: fatal error: %s\n"), - EchoAltFilePos(pos), val); + fprintf(fp, condcatgets(MsgCat, 28, 8, "%s: fatal error: %s%s"), + EchoAltFilePos(pos), val, (char *) STR_NEWLINE); } else { PrintFileBanner(file_num(*pos)); - fprintf(fp, condcatgets(MsgCat, 28, 5, " %6s: fatal error: %s\n"), - EchoFileLine(pos), val); + fprintf(fp, condcatgets(MsgCat, 28, 5, " %6s: fatal error: %s%s"), + EchoFileLine(pos), val, (char *) STR_NEWLINE); } - /* for estrip's benefit: Error(28, 5, " %6s: fatal error: %s\n") */ - /* for estrip's benefit: Error(28, 8, "%s: fatal error: %s\n") */ + /* for estrip's benefit: Error(28, 5, " %6s: fatal error: %s%s") */ + /* for estrip's benefit: Error(28, 8, "%s: fatal error: %s%s") */ exit(1); break; @@ -223,24 +223,27 @@ { if( AltErrorFormat ) { - fprintf(fp, "%s: %s\n", EchoAltFilePos(pos), val); + fprintf(fp, "%s: %s%s", EchoAltFilePos(pos), val, + (char *) STR_NEWLINE); } else { PrintFileBanner(file_num(*pos)); - fprintf(fp, " %6s: %s\n", EchoFileLine(pos), val); + fprintf(fp, " %6s: %s%s", EchoFileLine(pos), val, + (char *) STR_NEWLINE); } } else if( mess_top < MAX_ERRORS ) { if( AltErrorFormat ) { - sprintf(message[mess_top++], "%s: %s\n", EchoAltFilePos(pos), val); + sprintf(message[mess_top++], "%s: %s%s", EchoAltFilePos(pos), val, + (char *) STR_NEWLINE); } else { message_fnum[mess_top] = file_num(*pos); - sprintf(message[mess_top++], " %6s: %s\n", - EchoFileLine(pos), val); + sprintf(message[mess_top++], " %6s: %s%s", + EchoFileLine(pos), val, (char *) STR_NEWLINE); } } else Error(28, 6, "too many error messages", FATAL, pos); diff -u --recursive --new-file -u --recursive --new-file lout-3.26/z29.c lout-3.27/z29.c --- lout-3.26/z29.c Tue Oct 8 16:09:41 2002 +++ lout-3.27/z29.c Sun Nov 17 09:14:33 2002 @@ -1,9 +1,9 @@ /*@z29.c:Symbol Table:Declarations, hash()@***********************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.26) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.27) */ /* COPYRIGHT (C) 1991, 2002 Jeffrey H. Kingston */ /* */ -/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */ +/* Jeffrey H. Kingston (jeff@it.usyd.edu.au) */ /* Basser Department of Computer Science */ /* The University of Sydney 2006 */ /* AUSTRALIA */ @@ -730,12 +730,14 @@ { fprintf(stderr, "+"); usum += j; } - fprintf(stderr, "\n"); + fprintf(stderr, "%s", STR_NEWLINE); } - fprintf(stderr, "average length counting duplicate names = %.1f\n", + fprintf(stderr, "average length counting duplicate names = %.1f", (float) sum / sym_count); - fprintf(stderr, "average length not counting duplicate names = %.1f\n", + fprintf(stderr, "%s", STR_NEWLINE); + fprintf(stderr, "average length not counting duplicate names = %.1f", (float) usum / sym_count); + fprintf(stderr, "%s", STR_NEWLINE); } /* end CheckSymSpread */ diff -u --recursive --new-file -u --recursive --new-file lout-3.26/z30.c lout-3.27/z30.c --- lout-3.26/z30.c Tue Oct 8 16:09:42 2002 +++ lout-3.27/z30.c Sun Nov 17 09:14:41 2002 @@ -1,9 +1,9 @@ /*@z30.c:Symbol uses:InsertUses()@********************************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.26) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.27) */ /* COPYRIGHT (C) 1991, 2002 Jeffrey H. Kingston */ /* */ -/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */ +/* Jeffrey H. Kingston (jeff@it.usyd.edu.au) */ /* Basser Department of Computer Science */ /* The University of Sydney 2006 */ /* AUSTRALIA */ diff -u --recursive --new-file -u --recursive --new-file lout-3.26/z31.c lout-3.27/z31.c --- lout-3.26/z31.c Tue Oct 8 16:09:42 2002 +++ lout-3.27/z31.c Sun Nov 17 20:28:13 2002 @@ -1,9 +1,9 @@ /*@z31.c:Memory Allocator:DebugMemory()@**************************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.26) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.27) */ /* COPYRIGHT (C) 1991, 2002 Jeffrey H. Kingston */ /* */ -/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */ +/* Jeffrey H. Kingston (jeff@it.usyd.edu.au) */ /* Basser Department of Computer Science */ /* The University of Sydney 2006 */ /* AUSTRALIA */ @@ -56,6 +56,7 @@ "hyphenation pattern tables", "character mappings", "colour tables", + "texture tables", "language tables", }; @@ -232,6 +233,7 @@ zz_lengths[ BREAK ] = zz_lengths[ UNDERLINE ] = zz_lengths[ COLOUR ] = + zz_lengths[ TEXTURE ] = zz_lengths[ OUTLINE ] = zz_lengths[ LANGUAGE ] = zz_lengths[ CURR_LANG ] = @@ -266,6 +268,7 @@ zz_lengths[ GRAPHIC ] = zz_lengths[ LINK_SOURCE ] = zz_lengths[ LINK_DEST ] = + zz_lengths[ LINK_DEST_NULL] = zz_lengths[ LINK_URL ] = ceiling(sizeof(struct closure_type), sizeof(ALIGN)); diff -u --recursive --new-file -u --recursive --new-file lout-3.26/z32.c lout-3.27/z32.c --- lout-3.26/z32.c Tue Oct 8 16:09:43 2002 +++ lout-3.27/z32.c Sun Nov 17 20:28:33 2002 @@ -1,9 +1,9 @@ /*@z32.c:Counter Service:Next()@**********************************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.26) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.27) */ /* COPYRIGHT (C) 1991, 2002 Jeffrey H. Kingston */ /* */ -/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */ +/* Jeffrey H. Kingston (jeff@it.usyd.edu.au) */ /* Basser Department of Computer Science */ /* The University of Sydney 2006 */ /* AUSTRALIA */ @@ -61,6 +61,7 @@ y = MakeWord(type(x), buff, &fpos(x)); word_font(y) = word_font(x); word_colour(y) = word_colour(x); + word_texture(y) = word_texture(x); word_outline(y) = word_outline(x); word_language(y) = word_language(x); word_baselinemark(y) = word_baselinemark(x); @@ -120,6 +121,7 @@ case GRAPHIC: case LINK_SOURCE: case LINK_DEST: + case LINK_DEST_NULL: case LINK_URL: Child(y, LastDown(x)); diff -u --recursive --new-file -u --recursive --new-file lout-3.26/z33.c lout-3.27/z33.c --- lout-3.26/z33.c Tue Oct 8 16:09:44 2002 +++ lout-3.27/z33.c Sun Nov 17 09:15:03 2002 @@ -1,9 +1,9 @@ /*@z33.c:Database Service:OldCrossDb(), NewCrossDb(), SymToNum()@*************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.26) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.27) */ /* COPYRIGHT (C) 1991, 2002 Jeffrey H. Kingston */ /* */ -/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */ +/* Jeffrey H. Kingston (jeff@it.usyd.edu.au) */ /* Basser Department of Computer Science */ /* The University of Sydney 2006 */ /* AUSTRALIA */ @@ -133,8 +133,8 @@ #if DEBUG_ON static void dtab_debug(DBCHECK_TABLE S, FILE *fp) { int i; OBJECT x, link, y; - fprintf(fp, " table size: %d; current number of items: %d\n", - dtab_size(S), dtab_count(S)); + fprintf(fp, " table size: %d; current number of items: %d%s", + dtab_size(S), dtab_count(S), STR_NEWLINE); for( i = 0; i < dtab_size(S); i++ ) { x = dtab_item(S, i); fprintf(fp, "dtab_item(S, %d) =", i); @@ -148,7 +148,7 @@ is_word(type(y)) ? SymName(db_checksym(y)) : AsciiToFull("?"), is_word(type(y)) ? string(y) : AsciiToFull("not-WORD!")); } - fprintf(fp, "\n"); + fprintf(fp, "%s", STR_NEWLINE); } } /* end dtab_debug */ #endif @@ -210,7 +210,7 @@ /*****************************************************************************/ #define NumToSym(db, num, sym) \ -{ OBJECT link, y; \ +{ OBJECT link, y = nilobj; \ for( link = Down(db); link != db; link = NextDown(link) ) \ { Child(y, link); \ if( type(y) == CROSS_SYM && number(link) == num ) break; \ @@ -312,7 +312,7 @@ FATAL, no_fpos, string(db), NEW_INDEX_SUFFIX); StringCopy(buff, string(db)); StringCat(buff, NEW_INDEX_SUFFIX); - db_filep(db) = StringFOpen(buff, WRITE_BINARY); + db_filep(db) = StringFOpen(buff, WRITE_FILE); if( db_filep(db) == null ) Error(33, 3, "cannot write to database file %s", FATAL, &fpos(db), buff); } @@ -325,11 +325,12 @@ else StringCopy(buff, AsciiToFull(".")); SymToNum(db, sym, symnum, gall); ifdebug(DBS, DD, - fprintf(stderr, " -> %s%d&%s\t%s\t%ld\t%d\t%s\n", gall ? "0" : "", symnum, - tag, seq, dfpos, dlnum, buff); + fprintf(stderr, " -> %s%d&%s\t%s\t%ld\t%d\t%s%s", gall ? "0" : "", symnum, + tag, seq, dfpos, dlnum, buff, STR_NEWLINE); ); - fprintf(db_filep(db), "%s%d&%s\t%s\t%s\t%ld\t%d\t%s\n", gall ? "0" : "", - symnum, tag, seq, StringFiveInt(++extra_seq), dfpos, dlnum, buff); + fprintf(db_filep(db), "%s%d&%s\t%s\t%s\t%ld\t%d\t%s%s", gall ? "0" : "", + symnum, tag, seq, StringFiveInt(++extra_seq), dfpos, dlnum, buff, + STR_NEWLINE); /* return */ debug0(DBS, DD, "DbInsert returning."); @@ -358,15 +359,16 @@ StringCat(oldname, NEW_INDEX_SUFFIX); if( db_filep(db) != null ) { - fprintf(db_filep(db), "00 %s %s\n", LOUT_VERSION, "database index file"); + fprintf(db_filep(db), "00 %s %s%s", LOUT_VERSION, "database index file", + (char *) STR_NEWLINE); for( link = Down(db); link != db; link = NextDown(link) ) { Child(y, link); assert( type(y) == CROSS_SYM || type(y) == ACAT, "DbConvert: y!" ); if( type(y) != CROSS_SYM ) continue; - fprintf(db_filep(db), "%s %d %s\n", - db_targ(link) ? "00target" : "00symbol", - number(link), - full_name ? FullSymName(symb(y), AsciiToFull(" ")) : SymName(symb(y))); + fprintf(db_filep(db), "%s %d %s%s", + db_targ(link) ? "00target" : "00symbol", number(link), + full_name ? FullSymName(symb(y), AsciiToFull(" ")) : SymName(symb(y)), + (char *) STR_NEWLINE); } fclose(db_filep(db)); debug2(DBS, DD, " calling SortFile(%s, %s)", oldname, newname); @@ -417,7 +419,7 @@ { FILE *fp; OBJECT db, t, res, tag, par, sym, link, y; int i, lnum, dlnum, num, count, leftp; FILE_NUM index_fnum, dfnum; long dfpos; - BOOLEAN gall; FULL_CHAR line[MAX_BUFF], sym_name[MAX_BUFF]; char *gotline; + BOOLEAN gall; FULL_CHAR line[MAX_BUFF], sym_name[MAX_BUFF]; int status; ifdebug(DPP, D, ProfileOn("DbLoad")); debug3(DBS, DD, "[ DbLoad(%s, %d, %s, -)", string(stem), fpath, bool(create)); @@ -429,7 +431,7 @@ /* read first line of database index file, which should have the version */ if( fp != null ) - { if( StringFGets(line, MAX_BUFF, fp) == NULL || + { if( ReadOneLine(fp, line, MAX_BUFF) == 0 || !StringBeginsWith(&line[3], LOUT_VERSION) ) { /* out of date, pretend it isn't there at all */ @@ -441,10 +443,6 @@ if( fp == null && create ) { db = nilobj; debug0(DFS, D, " calling DefineFile from DbLoad (2)"); - /* *** bug fix JeffK 12/9/00; need same path as index file - dfnum = DefineFile(string(stem), DATA_SUFFIX, &fpos(stem), - DATABASE_FILE, DATABASE_PATH); - *** */ dfnum = DefineFile(string(stem), DATA_SUFFIX, &fpos(stem), DATABASE_FILE, fpath); dfpos = 0L; LexPush(dfnum, 0, DATABASE_FILE, 1, FALSE); @@ -475,7 +473,7 @@ if( tag == nilobj ) Error(33, 8, "database symbol %s has no tag", FATAL, &fpos(res), SymName(actual(res))); - tag = ReplaceWithTidy(tag, TRUE); /* && */ + tag = ReplaceWithTidy(tag, WORD_TIDY); /* && */ if( !is_word(type(tag)) ) Error(33, 9, "database symbol tag is not a simple word", FATAL, &fpos(res)); @@ -505,7 +503,7 @@ } DbConvert(db, FALSE); if( (fp = OpenFile(index_fnum, FALSE, FALSE)) == null || - StringFGets(line, MAX_BUFF, fp) == NULL || + ReadOneLine(fp, line, MAX_BUFF) == 0 || !StringBeginsWith(&line[3], LOUT_VERSION) ) Error(33, 12, "cannot open database file %s", FATAL, &fpos(db), FileName(index_fnum)); @@ -533,9 +531,9 @@ /* read header lines of index file, find its symbols */ leftp = 0; lnum = 1; - gotline = StringFGets(line, MAX_BUFF, fp); - while( gotline != NULL ) + while( (status = ReadOneLine(fp, line, MAX_BUFF)) != 0 ) { + debug1(DBS, D, "ReadOneLine returning \"%s\"", line); if( line[0] != '0' || line[1] != '0' ) break; lnum++; leftp = (int) ftell(fp); @@ -546,7 +544,7 @@ { /* any symbols are possible, full path names in index file required */ count = 0; sym = StartSym; - while( line[i] != CH_NEWLINE && line[i] != '\0' ) + while( line[i] != '\0' ) { PushScope(sym, FALSE, FALSE); count++; sscanf( (char *) &line[i+1], "%s", sym_name); sym = SearchSym(sym_name, StringLength(sym_name)); @@ -585,16 +583,16 @@ ifdebug(DPP, D, ProfileOff("DbLoad")); return db; } - gotline = StringFGets(line, MAX_BUFF, fp); } /* if in_memory, go on to read the entire database index into memory */ if( in_memory(db) ) - { int len; - if( gotline == NULL ) + { + if( status == 0 ) db_lines(db) = 0; else { + int len; db_lines(db) = ReadLines(fp, FileName(index_fnum), line, &len); db_lineslen(db) = len; SortLines(db_lines(db), db_lineslen(db)); @@ -620,30 +618,50 @@ /* end of a line. Search the file by binary search for a line beginning */ /* with str. If found, return it in line, else return FALSE. */ /* */ +/* NB if the line endings consist of two characters, the end of the line */ +/* is at the second character. */ +/* */ /*****************************************************************************/ static BOOLEAN SearchFile(FILE *fp, int left, int right, FULL_CHAR *str, FULL_CHAR *line) { int l, r, mid, mid_end; FULL_CHAR buff[MAX_BUFF]; BOOLEAN res; + int ch; ifdebug(DPP, D, ProfileOn("SearchFile")); debug3(DBS, D, "SearchFile(fp, %d, %d, %s, line)", left, right, str); l = left; r = right; while( l <= r ) { - /* loop invt: (l==0 or fp[l-1]==CH_NEWLINE) and (fp[r] == CH_NEWLINE) */ + /* loop invt: (l==0 or fp[l-1]==end_of_line) and (fp[r] == end_of_line) */ /* and first key >= str lies in the range fp[l..r+1] */ /* find line near middle of the range; mid..mid_end brackets it */ debug2(DBS, DD, " start loop: l = %d, r = %d", l, r); mid = (l + r)/2; fseek(fp, (long) mid, SEEK_SET); - do { mid++; } while( getc(fp) != CH_NEWLINE ); + do { mid++; } while( (ch = getc(fp)) != CH_CR && ch != CH_LF ); + if( ch == CH_CR ) + { + ch = getc(fp); + if( ch != CH_LF ) + ungetc(ch, fp); + else + mid++; + } + else /* ch == CH_LF */ + { + ch = getc(fp); + if( ch != CH_CR ) + ungetc(ch, fp); + else + mid++; + } if( mid == r + 1 ) { mid = l; fseek(fp, (long) mid, SEEK_SET); } - StringFGets(line, MAX_BUFF, fp); + ReadOneLine(fp, line, MAX_BUFF); mid_end = (int) ftell(fp) - 1; debug3(DBS, DD, " mid: %d, mid_end: %d, line: %s", mid, mid_end, line); assert( l <= mid, "SearchFile: l > mid!" ); @@ -666,7 +684,7 @@ /* now first key >= str lies in fp[l]; compare it with str */ if( l < right ) { fseek(fp, (long) l, SEEK_SET); - StringFGets(line, MAX_BUFF, fp); + ReadOneLine(fp, line, MAX_BUFF); sscanf( (char *) line, "%[^\t]", buff); res = StringEqual(str, buff); } @@ -762,7 +780,7 @@ return FALSE; } sscanf( (char *) db_lines(db)[lnum], - "%*[^\t]\t%[^\t]\t%*[^\t]\t%ld\t%d\t%[^\n]", seq, dfpos, dlnum, buff); + "%*[^\t]\t%[^\t]\t%*[^\t]\t%ld\t%d\t%[^\n\f]", seq, dfpos, dlnum, buff); *cont = lnum+1; } else @@ -776,7 +794,7 @@ return FALSE; } sscanf( (char *) line, - "%*[^\t]\t%[^\t]\t%*[^\t]\t%ld\t%d\t%[^\n]", seq, dfpos, dlnum, buff); + "%*[^\t]\t%[^\t]\t%*[^\t]\t%ld\t%d\t%[^\n\f]", seq, dfpos, dlnum, buff); *cont = ftell(db_filep(db)); } @@ -833,7 +851,7 @@ } cline = (FULL_CHAR *) db_lines(db)[*cont]; *gall = (cline[0] == '0' ? 1 : 0); - sscanf((char *)&cline[*gall], "%d&%[^\t]\t%[^\t]\t%*[^\t]\t%ld\t%d\t%[^\n]", + sscanf((char *)&cline[*gall], "%d&%[^\t]\t%[^\t]\t%*[^\t]\t%ld\t%d\t%[^\n\f]", &symnum, tag, seq, dfpos, dlnum, fname); *cont = *cont + 1; } @@ -841,13 +859,13 @@ { /* use *cont to find position of next entry; advance *cont */ fseek(db_filep(db), *cont == 0L ? (long) left_pos(db) : *cont, SEEK_SET); - if( StringFGets(line, MAX_BUFF, db_filep(db)) == NULL ) + if( ReadOneLine(db_filep(db), line, MAX_BUFF) == 0 ) { debug0(DBS, DD, "DbRetrieveNext returning FALSE (no successor)"); ifdebug(DPP, D, ProfileOff("DbRetrieveNext")); return FALSE; } *gall = (line[0] == '0' ? 1 : 0); - sscanf((char *)&line[*gall], "%d&%[^\t]\t%[^\t]\t%*[^\t]\t%ld\t%d\t%[^\n]", + sscanf((char *)&line[*gall], "%d&%[^\t]\t%[^\t]\t%*[^\t]\t%ld\t%d\t%[^\n\f]", &symnum, tag, seq, dfpos, dlnum, fname); *cont = ftell(db_filep(db)); } diff -u --recursive --new-file -u --recursive --new-file lout-3.26/z34.c lout-3.27/z34.c --- lout-3.26/z34.c Tue Oct 8 16:09:44 2002 +++ lout-3.27/z34.c Sun Nov 17 09:15:12 2002 @@ -1,9 +1,9 @@ /*@z34.c:Rotation Service:Declarations@***************************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.26) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.27) */ /* COPYRIGHT (C) 1991, 2002 Jeffrey H. Kingston */ /* */ -/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */ +/* Jeffrey H. Kingston (jeff@it.usyd.edu.au) */ /* Basser Department of Computer Science */ /* The University of Sydney 2006 */ /* AUSTRALIA */ diff -u --recursive --new-file -u --recursive --new-file lout-3.26/z35.c lout-3.27/z35.c --- lout-3.26/z35.c Tue Oct 8 16:09:45 2002 +++ lout-3.27/z35.c Sun Nov 17 09:15:20 2002 @@ -1,9 +1,9 @@ /*@z35.c:Time Keeper: MomentSym(), TimeString()@******************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.26) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.27) */ /* COPYRIGHT (C) 1991, 2002 Jeffrey H. Kingston */ /* */ -/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */ +/* Jeffrey H. Kingston (jeff@it.usyd.edu.au) */ /* Basser Department of Computer Science */ /* The University of Sydney 2006 */ /* AUSTRALIA */ diff -u --recursive --new-file -u --recursive --new-file lout-3.26/z36.c lout-3.27/z36.c --- lout-3.26/z36.c Tue Oct 8 16:09:45 2002 +++ lout-3.27/z36.c Sun Nov 17 09:15:27 2002 @@ -1,9 +1,9 @@ /*@z36.c:Hyphenation: Declarations@*******************************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.26) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.27) */ /* COPYRIGHT (C) 1991, 2002 Jeffrey H. Kingston */ /* */ -/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */ +/* Jeffrey H. Kingston (jeff@it.usyd.edu.au) */ /* Basser Department of Computer Science */ /* The University of Sydney 2006 */ /* AUSTRALIA */ @@ -373,9 +373,9 @@ { int i; fprintf(fp, "key: "); for( i = start; i < stop; i++ ) fprintf(fp, " %c", key[i]); - fprintf(fp, "\nrate:"); + fprintf(fp, "%srate:", STR_NEWLINE); for( i = 0; rate[i] != '\0'; i++ ) fprintf(fp, " %c", rate[i]); - fprintf(fp, "\n"); + fprintf(fp, "%s", STR_NEWLINE); } /* end ShowRate */ @@ -411,7 +411,7 @@ pos++; } AltUncompressValue(&(T->string_mem[pos]), str); - fprintf(fp, " %s\n", str); + fprintf(fp, " %s%s", str, STR_NEWLINE); } /* else if next_node > 0 have a child node to explore */ @@ -442,10 +442,11 @@ for( ch = 0; ch < MAX_CHAR; ch++ ) if( T->class[ch] == i ) fprintf(fp, "%c", ch); } - fprintf(fp, "\n"); - fprintf(fp, "Node space: %d capacity, %d used\n", T->node_lim, T->node_free); - fprintf(fp, "String space: %d capacity, %d used\n", T->string_lim, - T->string_lim - T->string_first); + fprintf(fp, "%s", STR_NEWLINE); + fprintf(fp, "Node space: %d capacity, %d used%s", T->node_lim, T->node_free, + STR_NEWLINE); + fprintf(fp, "String space: %d capacity, %d used%s", T->string_lim, + T->string_lim - T->string_first, STR_NEWLINE); prefix[0] = '\0'; DoTriePrint(T, 0, 0, fp); } /* end TriePrint */ @@ -681,9 +682,9 @@ static void CompressTrie(TRIE T) { FULL_CHAR *p, *q; int len, i; debug0(DHY, DD, "CompressTrie(T), T ="); - debug2(DHY, DD, "Node space: %d capacity, %d used\n", + debug2(DHY, DD, "Node space: %d capacity, %d used", T->node_lim, T->node_free); - debug2(DHY, DD, "String space: %d capacity, %d used\n", + debug2(DHY, DD, "String space: %d capacity, %d used", T->string_lim, T->string_lim - T->string_first); ifdebug(DHY, DD, TriePrint(T, stderr)); T->node_lim = T->node_free; @@ -774,15 +775,15 @@ } /* check that first line contains magic header or stub */ - if( StringFGets(str, MAX_BUFF, unpacked_fp) == NULL || - ( !StringEqual(str, AsciiToFull("Lout hyphenation information\n")) && - !StringEqual(str, AsciiToFull("Lout hyphenation placeholder\n")) ) + if( ReadOneLine(unpacked_fp, str, MAX_BUFF) == 0 || + ( !StringEqual(str, AsciiToFull("Lout hyphenation information")) && + !StringEqual(str, AsciiToFull("Lout hyphenation placeholder")) ) ) Error(36, 9, "header line of hyphenation file %s missing", FATAL, no_fpos, FileName(unpacked_fnum)); /* if file is just a placeholder, exit silently with success */ - if( !StringEqual(str, AsciiToFull("Lout hyphenation information\n")) ) + if( !StringEqual(str, AsciiToFull("Lout hyphenation information")) ) { *success = TRUE; return (TRIE) NULL; } @@ -792,7 +793,7 @@ state = START_STATE; hline_num = 1; length_limit = 0; - while( StringFGets(buff, MAX_BUFF, unpacked_fp) != NULL ) + while( ReadOneLine(unpacked_fp, buff, MAX_BUFF) != 0 ) { hline_num++; bpos = 0; while( sscanf( (char *) &buff[bpos], "%s%n", str, &bcount) == 1 && @@ -915,7 +916,7 @@ StringCopy(buff, FileName(unpacked_fnum)); StringCopy(&buff[StringLength(buff) - StringLength(HYPH_SUFFIX)], HYPH_PACKED_SUFFIX); - packed_fp = StringFOpen(buff, WRITE_BINARY); + packed_fp = StringFOpen(buff, WRITE_FILE); if( packed_fp == NULL ) Error(36, 14, "cannot write to hyphenation file %s", FATAL,no_fpos,buff); BePutInt(packed_fp, T->magic); @@ -1080,6 +1081,8 @@ z = MakeWord(WORD, &key[stop+1], &fpos(y)); word_font(z) = word_font(y); word_colour(z) = word_colour(y); + word_texture(z) = word_texture(y); + word_texture(z) = word_texture(y); word_outline(z) = word_outline(y); word_language(z) = word_language(y); word_baselinemark(z) = word_baselinemark(y); @@ -1123,7 +1126,7 @@ ifdebug(DHY, DD, fprintf(stderr, "trying suffix \""); for( p = ss; *p != 0; p++ ) fprintf(stderr, "%c", findrep(*p, T)); - fprintf(stderr, "\"\n"); + fprintf(stderr, "\"%s", STR_NEWLINE); ); /* accumulate all prefixes of ss */ @@ -1196,6 +1199,7 @@ { z = MakeWord(WORD, &key[start+i-1], &fpos(y)); word_font(z) = word_font(y); word_colour(z) = word_colour(y); + word_texture(z) = word_texture(y); word_outline(z) = word_outline(y); word_language(z) = word_language(y); word_baselinemark(z) = word_baselinemark(y); diff -u --recursive --new-file -u --recursive --new-file lout-3.26/z37.c lout-3.27/z37.c --- lout-3.26/z37.c Tue Oct 8 16:09:46 2002 +++ lout-3.27/z37.c Sun Nov 17 09:15:35 2002 @@ -1,9 +1,9 @@ /*@z37.c:Font Service:Declarations@*******************************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.26) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.27) */ /* COPYRIGHT (C) 1991, 2002 Jeffrey H. Kingston */ /* */ -/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */ +/* Jeffrey H. Kingston (jeff@it.usyd.edu.au) */ /* Basser Department of Computer Science */ /* The University of Sydney 2006 */ /* AUSTRALIA */ @@ -231,8 +231,8 @@ } } for( i = 1; i <= font_count; i++ ) - fprintf(stderr, " finfo[%d].font_table = %s\n", i, - EchoObject(finfo[i].font_table)); + fprintf(stderr, " finfo[%d].font_table = %s%s", i, + EchoObject(finfo[i].font_table), STR_NEWLINE); } /* end FontDebug */ @@ -278,13 +278,13 @@ FULL_CHAR *lig, int *ligtop, FILE_NUM fnum, struct metrics *fnt, int *lnum, FILE *fp) { FULL_CHAR buff[MAX_BUFF], command[MAX_BUFF], ch, ligchar; - int i, wx, llx, lly, urx, ury; + int i, wx = 0, llx = 0, lly = 0, urx = 0, ury = 0; float fl_wx, fl_llx, fl_lly, fl_urx, fl_ury; BOOLEAN wxfound, bfound; OBJECT AFMfilename; Child(AFMfilename, NextDown(Down(face))); - while( StringFGets(buff, MAX_BUFF, fp) != NULL && + while( ReadOneLine(fp, buff, MAX_BUFF) != 0 && !StringBeginsWith(buff, AsciiToFull("EndCharMetrics")) && !StringBeginsWith(buff, AsciiToFull("EndExtraCharMetrics")) ) { @@ -293,7 +293,7 @@ (*lnum)++; ch = '\0'; wxfound = bfound = FALSE; i = 0; while( buff[i] == ' ' ) i++; - while( buff[i] != '\n' ) + while( buff[i] != '\0' ) { debug2(DFT, DDD, " ch = %d, &buff[i] = %s", ch, &buff[i]); sscanf( (char *) &buff[i], "%s", command); @@ -321,7 +321,7 @@ lig[(*ligtop)++] = ch; i++; /* skip L */ while( buff[i] == ' ' ) i++; - while( buff[i] != ';' && buff[i] != '\n' ) + while( buff[i] != ';' && buff[i] != '\0' ) { sscanf( (char *) &buff[i], "%s", command); ligchar = MapCharEncoding(command, font_mapping(face)); if( ligchar != '\0' ) lig[(*ligtop)++] = ligchar; @@ -338,7 +338,7 @@ } lig[(*ligtop)++] = '\0'; } - while( buff[i] != ';' && buff[i] != '\n' ) i++; + while( buff[i] != ';' && buff[i] != '\0' ) i++; if( buff[i] == ';' ) { i++; while( buff[i] == ' ' ) i++; } @@ -392,13 +392,13 @@ static void ReadCompositeMetrics(OBJECT face, OBJECT Extrafilename, FILE_NUM extra_fnum, int *lnum, unsigned short composite[], COMPOSITE cmp[], int *cmptop, FILE *fp) -{ char *status; +{ int status; FULL_CHAR buff[MAX_BUFF], composite_name[100], name[100]; int composite_num, x_offset, y_offset, i, count; FULL_CHAR composite_code, code; /* build composites */ - while( (status = StringFGets(buff, MAX_BUFF, fp)) != (char *) NULL + while( (status = ReadOneLine(fp, buff, MAX_BUFF)) != 0 && StringBeginsWith(buff, AsciiToFull("CC")) ) { (*lnum)++; @@ -408,7 +408,7 @@ if( sscanf((char *)buff, "CC %s %d ", composite_name, &composite_num) != 2 ) Error(37, 5, "syntax error in extra font file %s (line %d)", FATAL, &fpos(Extrafilename), FileName(extra_fnum), *lnum); - for( i = 0; buff[i] != ';' && buff[i] != '\n' && buff[i] != '\0'; i++ ); + for( i = 0; buff[i] != ';' && buff[i] != '\0'; i++ ); if( buff[i] != ';' ) Error(37, 5, "syntax error in extra font file %s (line %d)", FATAL, &fpos(Extrafilename), FileName(extra_fnum), *lnum); @@ -428,7 +428,7 @@ if( sscanf((char *)&buff[i]," PCC %s %d %d",name,&x_offset,&y_offset)!=3 ) Error(37, 5, "syntax error in extra font file %s (line %d)", FATAL, &fpos(Extrafilename), FileName(extra_fnum), *lnum); - for( ; buff[i] != ';' && buff[i] != '\n' && buff[i] != '\0'; i++ ); + for( ; buff[i] != ';' && buff[i] != '\0'; i++ ); if( buff[i] != ';' ) Error(37, 5, "syntax error in extra font file %s (line %d)", FATAL, &fpos(Extrafilename), FileName(extra_fnum), *lnum); @@ -452,7 +452,7 @@ cmp[*cmptop].char_code = (FULL_CHAR) '\0'; (*cmptop)++; } - if( status == (char *) NULL || + if( status == 0 || !StringBeginsWith(buff, AsciiToFull("EndBuildComposites")) ) Error(37, 9, "missing EndBuildComposites in extra font file %s (line %d)", FATAL, &fpos(Extrafilename), FileName(extra_fnum), *lnum); @@ -481,7 +481,7 @@ OBJECT family, face, font_name, AFMfilename, Extrafilename, LCMfilename; OBJECT recode, first_size; FULL_CHAR buff[MAX_BUFF], command[MAX_BUFF], ch; - char *status; + int status; int xheight2, i, lnum, ligtop, cmptop; float fl_xheight2, fl_under_pos, fl_under_thick; int under_pos, under_thick; @@ -559,35 +559,35 @@ } else if( actual(y) == fd_name ) { Child(font_name, Down(y)); - font_name = ReplaceWithTidy(font_name, TRUE); + font_name = ReplaceWithTidy(font_name, WORD_TIDY); if( !is_word(type(font_name)) ) Error(37, 14, "illegal font name (quotes needed?)", FATAL, &fpos(font_name)); } else if( actual(y) == fd_metrics ) { Child(AFMfilename, Down(y)); - AFMfilename = ReplaceWithTidy(AFMfilename, TRUE); + AFMfilename = ReplaceWithTidy(AFMfilename, WORD_TIDY); if( !is_word(type(AFMfilename)) ) Error(37, 15, "illegal font metrics file name (quotes needed?)", FATAL, &fpos(AFMfilename)); } else if( actual(y) == fd_extra_metrics ) { Child(Extrafilename, Down(y)); - Extrafilename = ReplaceWithTidy(Extrafilename, TRUE); + Extrafilename = ReplaceWithTidy(Extrafilename, WORD_TIDY); if( !is_word(type(Extrafilename)) ) Error(37, 16, "illegal font extra metrics file name (quotes needed?)", FATAL, &fpos(Extrafilename)); } else if( actual(y) == fd_mapping ) { Child(LCMfilename, Down(y)); - LCMfilename = ReplaceWithTidy(LCMfilename, TRUE); + LCMfilename = ReplaceWithTidy(LCMfilename, WORD_TIDY); if( !is_word(type(LCMfilename)) ) Error(37, 17, "illegal mapping file name (quotes needed?)", FATAL, &fpos(LCMfilename)); } else if( actual(y) == fd_recode ) { Child(recode, Down(y)); - recode = ReplaceWithTidy(recode, TRUE); + recode = ReplaceWithTidy(recode, WORD_TIDY); if( !is_word(type(recode)) ) Error(37, 18, "illegal value of %s", FATAL, &fpos(recode), SymName(fd_recode)); @@ -704,7 +704,7 @@ FileName(fnum)); /* check that the AFM file begins, as it should, with "StartFontMetrics" */ - if( StringFGets(buff, MAX_BUFF, fp) == NULL || + if( ReadOneLine(fp, buff, MAX_BUFF) == 0 || sscanf( (char *) buff, "%s", command) != 1 || !StringEqual(command, "StartFontMetrics") ) { debug1(DFT, DD, "first line of AFM file:%s", buff); @@ -760,8 +760,8 @@ kv = (unsigned char *) NULL; ks = (SHORT_LENGTH *) NULL; font_name_found = FALSE; lnum = 1; - while( (status = StringFGets(buff, MAX_BUFF, fp)) != (char *) NULL && - !(buff[0] == 'E' && StringEqual(buff, AsciiToFull("EndFontMetrics\n"))) ) + while( (status = ReadOneLine(fp, buff, MAX_BUFF)) != 0 && + !(buff[0] == 'E' && StringEqual(buff, AsciiToFull("EndFontMetrics"))) ) { lnum++; if( sscanf( (char *) buff, "%s", command) != EOF ) switch( command[0] ) @@ -868,7 +868,7 @@ num_pairs * sizeof(SHORT_LENGTH))); ks = (SHORT_LENGTH *) malloc(num_pairs * sizeof(SHORT_LENGTH)); last_ch1 = '\0'; - while( StringFGets(buff, MAX_BUFF, fp) == (char *) buff && + while( ReadOneLine(fp, buff, MAX_BUFF) != 0 && !StringBeginsWith(buff, AsciiToFull("EndKernPairs")) ) { debug1(DFT, DD, "FontRead reading %s", buff); @@ -952,7 +952,7 @@ } /* make sure we terminated the font metrics file gracefully */ - if( status == (char *) NULL ) + if( status == 0 ) Error(37, 38, "EndFontMetrics missing from font file %s", FATAL, &fpos(AFMfilename), FileName(fnum)); fclose(fp); @@ -981,7 +981,7 @@ &fpos(Extrafilename), FileName(extra_fnum)); lnum = 0; - while( StringFGets(buff, MAX_BUFF, extra_fp) != (char *) NULL ) + while( ReadOneLine(extra_fp, buff, MAX_BUFF) != 0 ) { debug1(DFT, D, " Extra: %s", buff); lnum++; @@ -1054,8 +1054,8 @@ void FontChange(STYLE *style, OBJECT x) { /* register */ int i; OBJECT requested_family, requested_face, requested_size; - OBJECT par[3], family, face, fsize, y, link, new, old, tmpf; - GAP gp; SHORT_LENGTH flen; int num, c; unsigned inc; + OBJECT par[3], family, face, fsize, y = nilobj, link, new, old, tmpf; + GAP gp; SHORT_LENGTH flen = 0; int num, c; unsigned inc; struct metrics *newfnt, *oldfnt; FULL_CHAR *lig; int cmptop; @@ -1625,7 +1625,8 @@ /* */ /* FULL_LENGTH FontSize(fnum, x) */ /* */ -/* Return the size of this font. x is for error messages only. */ +/* Return the size of this font. x is for error messages only, and may be */ +/* nilobj if fnum is certain not to be NO_FONT. */ /* */ /*****************************************************************************/ @@ -1772,17 +1773,18 @@ Child(first_size, NextDown(NextDown(Down(face)))); assert( is_word(type(first_size)), "FontPrintAll: first_size!" ); if( font_recoded(face) ) - { fprintf(fp, "/%s%s %s /%s LoutRecode\n", + { fprintf(fp, "/%s%s %s /%s LoutRecode%s", 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)); + MapEncodingName(font_mapping(face)), string(ps_name), + (char *) STR_NEWLINE); + fprintf(fp, "/%s { /%s%s LoutFont } def%s", string(first_size), + string(ps_name), string(first_size), (char *) STR_NEWLINE); } - else fprintf(fp, "/%s { /%s LoutFont } def\n", string(first_size), - string(ps_name)); + else fprintf(fp, "/%s { /%s LoutFont } def%s", string(first_size), + string(ps_name), (char *) STR_NEWLINE); } } - fputs("\n", fp); + fputs((char *) STR_NEWLINE, fp); debug0(DFT, DD, "FontPrintAll returning."); } /* end FontPrintAll */ @@ -1915,8 +1917,9 @@ { Child(face, flink); Child(ps_name, Down(face)); assert( is_word(type(ps_name)), "FontPrintPageResources: ps_name!" ); - fprintf(fp, "%s font %s\n", - first_need ? "%%DocumentNeededResources:" : "%%+", string(ps_name)); + fprintf(fp, "%s font %s%s", + first_need ? "%%DocumentNeededResources:" : "%%+", string(ps_name), + (char *) STR_NEWLINE); first_need = FALSE; } } diff -u --recursive --new-file -u --recursive --new-file lout-3.26/z38.c lout-3.27/z38.c --- lout-3.26/z38.c Tue Oct 8 16:09:46 2002 +++ lout-3.27/z38.c Sun Nov 17 09:15:44 2002 @@ -1,9 +1,9 @@ /*@z38.c:Character Mappings:Declarations@*************************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.26) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.27) */ /* COPYRIGHT (C) 1991, 2002 Jeffrey H. Kingston */ /* */ -/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */ +/* Jeffrey H. Kingston (jeff@it.usyd.edu.au) */ /* Basser Department of Computer Science */ /* The University of Sydney 2006 */ /* AUSTRALIA */ @@ -112,7 +112,9 @@ MAPPING MapLoad(OBJECT file_name, BOOLEAN recoded) { FILE *fp; MAP_VEC map; MAPPING res; - int i, m, curr_line_num, line_pos, prev_code, dc, oc, count; + int i, m, curr_line_num, line_pos, prev_code, dc, count; + unsigned int oc; + int status; FULL_CHAR buff[MAX_BUFF], cn[MAX_BUFF], ch, mapname[MAX_BUFF], mapval[MAX_BUFF]; debug2(DCM,D, "MapLoad(%s, %s)", EchoObject(file_name), bool(recoded)); @@ -175,21 +177,21 @@ /* first pass through the file; read character codes and names only */ prev_code = -1; curr_line_num = 0; - while( fgets( (char *) buff, MAX_BUFF, fp) == (char *) buff ) + while( (status = ReadOneLine(fp, buff, MAX_BUFF)) != 0 ) { /* skip comment lines and blank lines */ curr_line_num++; for( i = 0; buff[i] == ' ' || buff[i] == '\t'; i++ ); - if( buff[i] == '#' || buff[i] == '\n' || buff[i] == '\0' ) continue; + if( buff[i] == '#' || buff[i] == '\0' ) continue; /* parse line and check validity of decimal and octal character codes */ count = sscanf( (char *) buff, "%d %o %s", &dc, &oc, cn); if( count < 2 ) Error(38, 4, "character code(s) missing in mapping file (line %d)", - FATAL, &fpos(file_name)); + FATAL, &fpos(file_name), curr_line_num); if( dc != oc ) Error(38, 5, "decimal and octal codes disagree in mapping file (line %d)", - FATAL, &fpos(file_name)); + FATAL, &fpos(file_name), curr_line_num); if( dc < 1 && !StringEqual(cn, STR_NOCHAR) ) Error(38, 6, "code %d too small (min is 1) in mapping file (line %d)", FATAL, &fpos(file_name), dc, curr_line_num); @@ -219,16 +221,15 @@ /* second pass through the file: read mappings */ rewind(fp); curr_line_num = 0; - while( fgets( (char *) buff, MAX_BUFF, fp) == (char *) buff ) + while( (status = ReadOneLine(fp, buff, MAX_BUFF)) != 0 ) { /* skip comment lines and blank lines */ curr_line_num++; for( i = 0; buff[i] == ' ' || buff[i] == '\t'; i++ ); - if( buff[i] == '#' || buff[i] == '\n' || buff[i] == '\0' ) continue; + if( buff[i] == '#' || buff[i] == '\0' ) continue; /* parse line */ - count = sscanf( (char *) buff, "%d %o %s%n", - &dc, &oc, cn, &line_pos); + count = sscanf( (char *) buff, "%d %o %s%n", &dc, &oc, cn, &line_pos); /* find and insert the maps */ while( sscanf( (char *) &buff[line_pos], "%s %[^;];%n", @@ -344,7 +345,7 @@ { 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)); + fprintf(fp, "%%%%+ encoding %s%s", string(map->name), (char *) STR_NEWLINE); } } /* end MapPrintPSResources */ @@ -363,6 +364,7 @@ res = MakeWord(type(x), buff, &fpos(x)); word_font(res) = fnum; word_colour(res) = word_colour(x); + word_texture(res) = word_texture(x); word_outline(res) = word_outline(x); word_language(res) = word_language(x); word_baselinemark(res) = word_baselinemark(x); @@ -430,9 +432,9 @@ static FULL_LENGTH font_change_length = 0; OBJECT MapSmallCaps(OBJECT x, STYLE *style) -{ MAPPING m; int i; OBJECT new_y, new_x, new_acat, tmp; +{ MAPPING m; int i; OBJECT new_y, new_x = nilobj, new_acat = nilobj, tmp; FULL_CHAR buff[MAX_BUFF], *uc, *p, *q; - FONT_NUM small_font; FULL_LENGTH vshift; int state; STYLE new_style; + FONT_NUM small_font = 0; FULL_LENGTH vshift = 0; int state; STYLE new_style; assert( is_word(type(x)), "MapSmallCaps: !is_word(type(x))" ); debug2(DCM, D, "MapSmallCaps(%s %s)", Image(type(x)), string(x)); diff -u --recursive --new-file -u --recursive --new-file lout-3.26/z39.c lout-3.27/z39.c --- lout-3.26/z39.c Tue Oct 8 16:09:47 2002 +++ lout-3.27/z39.c Sun Nov 17 09:15:51 2002 @@ -1,9 +1,9 @@ /*@z39.c:String Handler:AsciiToFull(), StringEqual(), etc.@*******************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.26) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.27) */ /* COPYRIGHT (C) 1991, 2002 Jeffrey H. Kingston */ /* */ -/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */ +/* Jeffrey H. Kingston (jeff@it.usyd.edu.au) */ /* Basser Department of Computer Science */ /* The University of Sydney 2006 */ /* AUSTRALIA */ @@ -26,10 +26,9 @@ /* MODULE: String Handler */ /* EXTERNS: AsciiToFull(), StringEqual(), */ /* StringCat(), StringCopy(), StringLength(), */ -/* StringFOpen(), StringFPuts(), StringFGets(), */ -/* StringRemove(), StringRename(), StringBeginsWith(), */ -/* StringContains(), StringInt(), StringFiveInt(), */ -/* StringQuotedWord() */ +/* StringFOpen(), StringFPuts(), StringRemove(), */ +/* StringRename(), StringBeginsWith(), StringContains(), */ +/* StringInt(), StringFiveInt(), StringQuotedWord() */ /* */ /*****************************************************************************/ #include "externs.h" @@ -44,7 +43,6 @@ /* StringLength(a) Length of string a */ /* StringFOpen(str, mode) Equivalent to fopen(str, mode) */ /* StringFPuts(str, fp) Equivalent to fputs(str, fp) */ -/* StringFGets(str, n, fp) Equivalent to fgets(str, n, fp) */ /* StringRemove(a) Equivalent to remove(a) */ /* StringRename(a, b) Equivalent to rename(a, b) */ /* */ @@ -79,7 +77,8 @@ *** */ int strcollcmp(char *a, char *b) -{ char a1[100], a2[100], a3[100], b1[100], b2[100], b3[100]; +{ char a1[MAX_BUFF], a2[MAX_BUFF], a3[MAX_BUFF]; + char b1[MAX_BUFF], b2[MAX_BUFF], b3[MAX_BUFF]; int order; a1[0] = a2[0] = a3[0] = '\0'; sscanf(a, "%[^\t]\t%[^\t]\t%[^\t]", a1, a2, a3); diff -u --recursive --new-file -u --recursive --new-file lout-3.26/z40.c lout-3.27/z40.c --- lout-3.26/z40.c Tue Oct 8 16:09:48 2002 +++ lout-3.27/z40.c Sun Nov 17 09:15:59 2002 @@ -1,9 +1,9 @@ /*@z40.c:Filter Handler:FilterInit()@*****************************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.26) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.27) */ /* COPYRIGHT (C) 1991, 2002 Jeffrey H. Kingston */ /* */ -/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */ +/* Jeffrey H. Kingston (jeff@it.usyd.edu.au) */ /* Basser Department of Computer Science */ /* The University of Sydney 2006 */ /* AUSTRALIA */ @@ -73,7 +73,7 @@ FposCopy(fpos(res), *xfpos); ++filter_count; sprintf( (char *) buff, "%s%d", FILTER_IN, filter_count); - fp = StringFOpen(buff, WRITE_TEXT); + fp = StringFOpen(buff, WRITE_FILE); if( fp == NULL ) Error(40, 1, "cannot open temporary filter file %s", FATAL, xfpos, buff); x = MakeWord(WORD, buff, xfpos); @@ -128,7 +128,7 @@ /*****************************************************************************/ OBJECT FilterExecute(OBJECT x, FULL_CHAR *command, OBJECT env) -{ int status; OBJECT t, res, scope_snapshot; char line[MAX_LINE]; +{ int status; OBJECT t, res, scope_snapshot; FULL_CHAR line[MAX_LINE]; FILE *err_fp; FILE_NUM filter_out_file; assert( type(x) == FILTERED, "FilterExecute: type(x)!" ); @@ -150,13 +150,10 @@ { /* execute the command, echo error messages, and exit if status problem */ status = system( (char *) command); - err_fp = StringFOpen(FILTER_ERR, READ_TEXT); + err_fp = StringFOpen(FILTER_ERR, READ_FILE); if( err_fp != NULL ) - { while( fgets(line, MAX_LINE, err_fp) != NULL ) - { if( line[strlen(line)-1] == '\n' ) - line[strlen(line)-1] = '\0'; + { while( ReadOneLine(err_fp, line, MAX_LINE) != 0 ) Error(40, 3, "%s", WARN, &fpos(x), line); - } fclose(err_fp); StringRemove(FILTER_ERR); } @@ -165,11 +162,6 @@ FATAL, &fpos(x), command); /* read in output of system command as a Lout object */ - /* *** using scope snapshot now - SwitchScope(nilobj); - count = 0; - SetScope(env, &count, TRUE); - *** */ Child(scope_snapshot, LastDown(x)); LoadScopeSnapshot(scope_snapshot); debug0(DFS, D, " calling DefineFile from FilterExecute"); @@ -180,10 +172,6 @@ t = NewToken(BEGIN, &fpos(x), 0, 0, BEGIN_PREC, FilterOutSym); res = Parse(&t, nilobj, FALSE, FALSE); LexPop(); - /* *** using scope snapshot now - for( i = 1; i <= count; i++ ) PopScope(); - UnSwitchScope(nilobj); - *** */ ClearScopeSnapshot(scope_snapshot); StringRemove(string(sym_body(FilterOutSym))); sym_body(FilterOutSym) = filter_out_filename; @@ -208,34 +196,42 @@ assert( type(x) == FILTERED, "FilterWrite: type(x)!" ); debug2(DFH, D, "[ FilterWrite(%d %s, fp)", (int) x, EchoObject(x)); Child(y, Down(x)); - in_fp = StringFOpen(string(y), READ_TEXT); + in_fp = StringFOpen(string(y), READ_FILE); if( in_fp == NULL ) Error(40, 5, "cannot read filter temporary file %s", FATAL, &fpos(x), string(y)); if( filter_use_begin(y) ) - { StringFPuts(KW_BEGIN, fp); - StringFPuts("\n", fp); - *linecount += 1; - while( (ch = getc(in_fp)) != EOF ) - { putc(ch, fp); - if( ch == '\n' ) *linecount += 1; + StringFPuts(KW_BEGIN, fp); + else + StringFPuts(KW_LBR, fp); + StringFPuts(STR_NEWLINE, fp); + *linecount += 1; + while( (ch = getc(in_fp)) != EOF ) + { putc(ch, fp); + if( ch == CH_CR ) + { + ch = getc(in_fp); + if( ch != CH_LF ) + ungetc(ch, in_fp); + *linecount += 1; + } + else if( ch == CH_LF ) + { + ch = getc(in_fp); + if( ch != CH_CR ) + ungetc(ch, in_fp); + *linecount += 1; } + } + if( filter_use_begin(y) ) + { StringFPuts(KW_END, fp); StringFPuts(" ", fp); StringFPuts(SymName(filter_actual(y)), fp); } else - { StringFPuts(KW_LBR, fp); - StringFPuts("\n", fp); - *linecount += 1; - while( (ch = getc(in_fp)) != EOF ) - { putc(ch, fp); - ifdebug(DFH, D, putc(ch, stderr)); - if( ch == '\n' ) *linecount += 1; - } StringFPuts(KW_RBR, fp); - } - StringFPuts("\n", fp); + StringFPuts(STR_NEWLINE, fp); *linecount += 1; fclose(in_fp); debug0(DFH, D, "] FilterWrite returning."); diff -u --recursive --new-file -u --recursive --new-file lout-3.26/z41.c lout-3.27/z41.c --- lout-3.26/z41.c Tue Oct 8 16:09:48 2002 +++ lout-3.27/z41.c Sun Nov 17 20:29:03 2002 @@ -1,9 +1,9 @@ /*@z41.c:Object Input-Output:AppendToFile, ReadFromFile@**********************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.26) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.27) */ /* COPYRIGHT (C) 1991, 2002 Jeffrey H. Kingston */ /* */ -/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */ +/* Jeffrey H. Kingston (jeff@it.usyd.edu.au) */ /* Basser Department of Computer Science */ /* The University of Sydney 2006 */ /* AUSTRALIA */ @@ -47,7 +47,7 @@ OBJECT ReadFromFile(FILE_NUM fnum, long pos, int lnum) { OBJECT t, res; #if DEBUG_ON - int ipos; + int ipos = 0; #endif ifdebug(DPP, D, ProfileOn("ReadFromFile")); ifdebug(DIO, D, ipos = (int) pos); @@ -530,6 +530,7 @@ case BREAK: name = KW_BREAK; goto SETC; case UNDERLINE: name = KW_UNDERLINE; goto SETC; case COLOUR: name = KW_COLOUR; goto SETC; + case TEXTURE: name = KW_TEXTURE; goto SETC; case OUTLINE: name = KW_OUTLINE; goto SETC; case LANGUAGE: name = KW_LANGUAGE; goto SETC; case CURR_LANG: name = KW_CURR_LANG; goto SETC; @@ -553,6 +554,7 @@ case GRAPHIC: name = KW_GRAPHIC; goto SETC; case LINK_SOURCE: name = KW_LINK_SOURCE; goto SETC; case LINK_DEST: name = KW_LINK_DEST; goto SETC; + case LINK_DEST_NULL:name = KW_LINK_DEST; goto SETC; case LINK_URL: name = KW_LINK_URL; goto SETC; /* print left parameter, if present */ @@ -651,7 +653,7 @@ FATAL, PosOfFile(fnum), str, NEW_DATA_SUFFIX); StringCopy(buff, str); StringCat(buff, NEW_DATA_SUFFIX); last_write_fp = StringFOpen(buff, - FileTestUpdated(fnum) ? APPEND_TEXT : WRITE_TEXT); + FileTestUpdated(fnum) ? APPEND_FILE : WRITE_FILE); if( last_write_fp == null ) Error(41, 4, "cannot append to database file %s", FATAL, no_fpos, buff); last_write_fnum = fnum; @@ -717,7 +719,7 @@ /* be a problem); then rename "newname" to be "oldname" (avoids */ /* overwriting an existing file "oldname", another problem) */ - if( (fp = StringFOpen(oldname, READ_TEXT)) != NULL ) + if( (fp = StringFOpen(oldname, READ_FILE)) != NULL ) { fclose(fp); StringRemove(oldname); } diff -u --recursive --new-file -u --recursive --new-file lout-3.26/z42.c lout-3.27/z42.c --- lout-3.26/z42.c Tue Oct 8 16:09:49 2002 +++ lout-3.27/z42.c Sun Nov 17 09:16:17 2002 @@ -1,9 +1,9 @@ /*@z42.c:Colour Service:ColourChange, ColourCommand@**************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.26) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.27) */ /* COPYRIGHT (C) 1991, 2002 Jeffrey H. Kingston */ /* */ -/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */ +/* Jeffrey H. Kingston (jeff@it.usyd.edu.au) */ /* Basser Department of Computer Science */ /* The University of Sydney 2006 */ /* AUSTRALIA */ @@ -131,15 +131,15 @@ #if DEBUG_ON static void ctab_debug(COLOUR_TABLE S, FILE *fp) { int i; OBJECT x, link, y; - fprintf(fp, " table size: %d; current number of colours: %d\n", - ctab_size(S), ctab_count(S)); + fprintf(fp, " table size: %d; current number of colours: %d%s", + ctab_size(S), ctab_count(S), STR_NEWLINE); for( i = 0; i < ctab_size(S); i++ ) { x = ctab_num(S, i); - fprintf(fp, " ctab_num(S, %d) = %s\n", i, + fprintf(fp, " ctab_num(S, %d) = %s%s", i, x == nilobj ? AsciiToFull("") : - is_word(type(x)) ? string(x) : AsciiToFull("not WORD!")); + is_word(type(x)) ? string(x) : AsciiToFull("not WORD!"), STR_NEWLINE); } - fprintf(fp, "\n"); + fprintf(fp, "%s", STR_NEWLINE); for( i = 0; i < ctab_size(S); i++ ) { x = ctab_name(S, i); fprintf(fp, "ctab_name(S, %d) =", i); @@ -152,7 +152,7 @@ fprintf(fp, " %s", is_word(type(y)) ? string(y) : AsciiToFull("not-WORD!")); } - fprintf(fp, "\n"); + fprintf(fp, "%s", STR_NEWLINE); } } /* end ctab_debug */ #endif @@ -192,16 +192,6 @@ debug0(DCO, D, "ColourChange returning (colour unchanged)"); return; } - - /* *** allowing empty left parameter now, means nochange - if( StringEqual(string(x), STR_EMPTY) ) - { if( BackEnd->colour_avail ) - Error(42, 4, "%s ignored (empty left parameter)", WARN, &fpos(x), - KW_COLOUR); - debug0(DCO, D, "ColourChange returning (colour unchanged)"); - return; - } - *** */ /* if argument is nochange, do nothing */ if( StringEqual(string(x), STR_COLOUR_NOCHANGE) || diff -u --recursive --new-file -u --recursive --new-file lout-3.26/z43.c lout-3.27/z43.c --- lout-3.26/z43.c Tue Oct 8 16:09:49 2002 +++ lout-3.27/z43.c Sun Nov 17 09:16:24 2002 @@ -1,9 +1,9 @@ /*@z43.c:Language Service:LanguageChange, LanguageString@*********************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.26) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.27) */ /* COPYRIGHT (C) 1991, 2002 Jeffrey H. Kingston */ /* */ -/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */ +/* Jeffrey H. Kingston (jeff@it.usyd.edu.au) */ /* Basser Department of Computer Science */ /* The University of Sydney 2006 */ /* AUSTRALIA */ @@ -122,8 +122,8 @@ #if DEBUG_ON static void ltab_debug(LANGUAGE_TABLE S, FILE *fp) { int i; OBJECT x, link, y; - fprintf(fp, " table size: %d; current number of keys: %d\n", - ltab_size(S), ltab_count(S)); + fprintf(fp, " table size: %d; current number of keys: %d%s", + ltab_size(S), ltab_count(S), STR_NEWLINE); for( i = 0; i < ltab_size(S); i++ ) { x = ltab_item(S, i); fprintf(fp, "ltab_item(S, %d) =", i); @@ -136,7 +136,7 @@ fprintf(fp, " %s", is_word(type(y)) ? string(y) : AsciiToFull("not-WORD!")); } - fprintf(fp, "\n"); + fprintf(fp, "%s", STR_NEWLINE); } } /* end ltab_debug */ #endif diff -u --recursive --new-file -u --recursive --new-file lout-3.26/z44.c lout-3.27/z44.c --- lout-3.26/z44.c Tue Oct 8 16:09:50 2002 +++ lout-3.27/z44.c Sun Nov 17 09:16:32 2002 @@ -1,9 +1,9 @@ /*@z44.c:Vertical Hyphenation:VerticalHyphenate()@****************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.26) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.27) */ /* COPYRIGHT (C) 1991, 2002 Jeffrey H. Kingston */ /* */ -/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */ +/* Jeffrey H. Kingston (jeff@it.usyd.edu.au) */ /* Basser Department of Computer Science */ /* The University of Sydney 2006 */ /* AUSTRALIA */ @@ -84,7 +84,7 @@ /*****************************************************************************/ static OBJECT FindTarget(OBJECT index) -{ OBJECT res; +{ OBJECT res = nilobj; debug1(DVH, DD, "FindTarget(%s)", Image(type(index))); switch( type(index) ) { @@ -263,8 +263,8 @@ /*****************************************************************************/ BOOLEAN VerticalHyphenate(OBJECT y) -{ OBJECT large_comp, index, z, link, g; - OBJECT row_thread, s1, s2, sh, sv, shp, prev, nxt, large_comp_split; +{ OBJECT large_comp, index, z, link, g, large_comp_split = nilobj; + OBJECT row_thread, s1, s2, sh, sv, shp, prev = nilobj, nxt = nilobj; FULL_LENGTH rump_fwd; debug1(DVH, D, "[ VerticalHyphenate(y: %s), y =", EchoLength(size(y, ROWM))); ifdebug(DVH, D, DebugObject(y)); @@ -415,7 +415,7 @@ /*****************************************************************************/ static OBJECT BuildMergeTree(int n, OBJECT x, OBJECT *lenv, OBJECT *lact) -{ OBJECT res, merge, link, y, l, r, env, act, left_par, right_par; +{ OBJECT res, merge, link, y = nilobj, l, r, env, act, left_par, right_par; debug2(DHY, DD, "BuildMergeTree(%d, %s, -. -)", n, EchoObject(x)); if( n == 1 ) @@ -506,7 +506,7 @@ /*****************************************************************************/ OBJECT BuildEnclose(OBJECT hd) -{ OBJECT sym, parsym, x, y, link, par, val, env, res; +{ OBJECT sym = nilobj, parsym, x, y, link, par, val, env, res; debug1(DOM, D, "BuildEnclose(%s)", SymName(actual(hd))); /* find @Enclose symbol and check that it has just one parameter */ diff -u --recursive --new-file -u --recursive --new-file lout-3.26/z45.c lout-3.27/z45.c --- lout-3.26/z45.c Tue Oct 8 16:09:50 2002 +++ lout-3.27/z45.c Sun Nov 17 09:16:39 2002 @@ -1,9 +1,9 @@ /*@z45.c:External Sort:SortFile()@********************************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.26) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.27) */ /* COPYRIGHT (C) 1991, 2002 Jeffrey H. Kingston */ /* */ -/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */ +/* Jeffrey H. Kingston (jeff@it.usyd.edu.au) */ /* Basser Department of Computer Science */ /* The University of Sydney 2006 */ /* AUSTRALIA */ @@ -38,17 +38,85 @@ /*****************************************************************************/ /* */ +/* int ReadOneLine(FILE *fp, char *buff, int buff_len) */ +/* */ +/* Read one line of fp, up to and including the following newline */ +/* sequence, which may be a CH_LF/CH_CR pair as well as singleton. */ +/* Place the contents of the line into *buff, including a concluding */ +/* \0 but never the concluding newline sequence. */ +/* */ +/* The buffer has space for buff_len characters including the concluding */ +/* \0. If space runs out, terminate the read early; the unread portion */ +/* will be read by the next call to ReadOneLine(). This code assumes */ +/* that buff_len is at least 2. */ +/* */ +/* Return values are as follows: */ +/* */ +/* 0 Did not read a line because EOF was encountered immediately */ +/* 1 Successfully read a line, empty or otherwise, into *buff */ +/* 2 Read a line but had to stop early owing to buffer overflow */ +/* */ +/*****************************************************************************/ + +int ReadOneLine(FILE *fp, FULL_CHAR *buff, int buff_len) +{ int ch; + int len1 = buff_len - 1; + + /* read characters up to the end of line or file */ + int count = 0; + while( (ch = getc(fp)) != EOF && ch != CH_LF && ch != CH_CR ) + { + buff[count++] = ch; + if( count >= len1 ) + { + /* out of space, have to stop early */ + buff[count++] = '\0'; + return 2; + } + } + + /* terminate gracefully depending what character we stopped at */ + if( ch == EOF ) + { + if( count == 0 ) + return 0; + } + else if( ch == CH_LF ) + { + /* consume any immediately following CH_CR too */ + ch = getc(fp); + if( ch != CH_CR ) + ungetc(ch, fp); + } + else /* ch == CH_CR */ + { + /* consume any immediately following CH_LF too */ + ch = getc(fp); + if( ch != CH_LF ) + ungetc(ch, fp); + } + buff[count++] = '\0'; + return 1; +} /* end ReadOneLine */ + + +/*****************************************************************************/ +/* */ /* LINE *ReadLines(FILE *fp, FULL_CHAR *fname, FULL_CHAR *first_line, *len) */ /* */ /* Read all of the lines of fp into memory and return a null-terminated */ /* array of pointers to these lines, and set *len to the number of lines. */ /* Make sure the lines themselves are null-terminated, also. */ /* */ +/* As for ReadOneLine above, lines may be terminated by a one or two */ +/* character newline sequence, but these characters are never included */ +/* in the lines returned. */ +/* */ /* fname is the name of the file being sorted, and is used for error */ /* messages only. */ /* */ /* if first_line is non-null then it is a pointer to a string which is */ -/* to become as the first line of the result. This string needs copying. */ +/* to become the first line of the result. This string needs copying. */ /* */ /*****************************************************************************/ @@ -119,11 +187,25 @@ } /* if newline char, end this line and start the next */ - if( ch == '\n' ) + if( ch == CH_LF || ch == CH_CR ) { *bp++ = '\0'; debug1(DEX, D, " finished line: %s", *(lp-1)); + /* get rid of following character if part of two-character line ending */ + if( ch == CH_LF ) + { + ch = getc(fp); + if( ch != CH_CR ) + ungetc(ch, fp); + } + else /* ch == CH_CR */ + { + ch = getc(fp); + if( ch != CH_LF ) + ungetc(ch, fp); + } + /* if no room in lines for next line, double its size */ if( lp == lines_top ) { @@ -164,7 +246,7 @@ { int i; for( i = 0; i < len; i++ ) { fputs(lines[i], fp); - fputs("\n", fp); + fputs((char *) STR_NEWLINE, fp); } } @@ -218,13 +300,13 @@ debug2(DEX, D, "SortFile(%s, %s)", infile, outfile); /* open input file */ - in_fp = fopen( (char *) infile, READ_BINARY); + in_fp = fopen( (char *) infile, READ_FILE); if( in_fp == (FILE *) NULL ) Error(45, 5, "cannot open index file %s for reading", FATAL, no_fpos, outfile); /* open output file */ - out_fp = fopen( (char *) outfile, WRITE_BINARY); + out_fp = fopen( (char *) outfile, WRITE_FILE); if( out_fp == (FILE *) NULL ) Error(45, 6, "cannot open index file %s for writing", FATAL, no_fpos, outfile); diff -u --recursive --new-file -u --recursive --new-file lout-3.26/z46.c lout-3.27/z46.c --- lout-3.26/z46.c Tue Oct 8 16:09:51 2002 +++ lout-3.27/z46.c Sun Nov 17 09:16:47 2002 @@ -1,9 +1,9 @@ /*@z46.c:Optimal Galleys:FindOptimize()@**************************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.26) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.27) */ /* COPYRIGHT (C) 1991, 2002 Jeffrey H. Kingston */ /* */ -/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */ +/* Jeffrey H. Kingston (jeff@it.usyd.edu.au) */ /* Basser Department of Computer Science */ /* The University of Sydney 2006 */ /* AUSTRALIA */ @@ -76,7 +76,7 @@ bt[COLM] = ft[COLM] = bt[ROWM] = ft[ROWM] = ntarget = nenclose = crs = nilobj; res = Manifest(res, env, &save_style(x), bt, ft, &ntarget, &crs, TRUE, FALSE, &nenclose, FALSE); - res = ReplaceWithTidy(res, TRUE); + res = ReplaceWithTidy(res, WORD_TIDY); if( !is_word(type(res)) ) { Error(46, 1, "unable to evaluate %s parameter, assuming value is No", WARN, &fpos(x), KW_OPTIMIZE); @@ -133,7 +133,7 @@ assert( type(y) == PAR, "SetOptimize: type(y) != PAR!" ); Child(y, Down(y)); assert( type(y) == ACAT, "SetOptimize: type(y) != ACAT!" ); - y = ReplaceWithTidy(y, FALSE); + y = ReplaceWithTidy(y, ACAT_TIDY); opt_hyph(hd) = FALSE; assert( type(y) == ACAT, "SetOptimize: type(y) != ACAT (2)!" ); for( link = y; NextDown(link) != y; link = NextDown(link) ) @@ -243,6 +243,7 @@ back(tmp, COLM) = fwd(tmp, COLM) = 0; back(tmp, ROWM) = fwd(tmp, ROWM) = 0; word_font(tmp) = word_colour(tmp) = 0; + word_texture(tmp) = 1; word_outline(tmp) = FALSE; word_language(tmp) = word_hyph(tmp) = 0; word_baselinemark(tmp) = FALSE; @@ -475,7 +476,7 @@ { Child(y, link); fprintf(stderr, " %d", comp_count(y)); } - fprintf(stderr, "\n"); + fprintf(stderr, "%s", STR_NEWLINE); } debug0(DOG, D, ""); } /* end DebugOptimize */ diff -u --recursive --new-file -u --recursive --new-file lout-3.26/z47.c lout-3.27/z47.c --- lout-3.26/z47.c Tue Oct 8 16:09:52 2002 +++ lout-3.27/z47.c Sun Nov 17 09:16:54 2002 @@ -1,9 +1,9 @@ /*@z47.c:Environment Table:EnvReadRetrieve()@*********************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.26) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.27) */ /* COPYRIGHT (C) 1991, 2002 Jeffrey H. Kingston */ /* */ -/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */ +/* Jeffrey H. Kingston (jeff@it.usyd.edu.au) */ /* Basser Department of Computer Science */ /* The University of Sydney 2006 */ /* AUSTRALIA */ diff -u --recursive --new-file -u --recursive --new-file lout-3.26/z48.c lout-3.27/z48.c --- lout-3.26/z48.c Tue Oct 8 16:09:52 2002 +++ lout-3.27/z48.c Sun Nov 17 09:17:04 2002 @@ -1,9 +1,9 @@ /*@z48.c:PDF back end@********************************************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.26) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.27) */ /* COPYRIGHT (C) 1991, 2002 Jeffrey H. Kingston */ /* */ -/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */ +/* Jeffrey H. Kingston (jeff@it.usyd.edu.au) */ /* Basser Department of Computer Science */ /* The University of Sydney 2006 */ /* AUSTRALIA */ @@ -1044,7 +1044,7 @@ t_font_list_entry_ptr entry = PDFFont_FindListEntry(in_real_font_name); debug4(DPD, D, "PDFFont_AddFont(-, %s, %s, %s) [new = %s]", in_short_font_name, in_real_font_name, - (in_font_encoding_name ? in_font_encoding_name : ""), + (in_font_encoding_name != (FULL_CHAR *) NULL ? in_font_encoding_name : ""), bool(entry == NULL)); /* *** this attempted bug fix by Jeff K. problem may be multiple font entries for the same font @@ -3484,7 +3484,7 @@ PDF_FILE_OFFSET xref_start; /* file offset of start of xref table */ PDF_OBJECT_NUM catalog_obj_num; PDF_OBJECT_NUM info_obj_num; - PDF_OBJECT_NUM dests_obj_num; + PDF_OBJECT_NUM dests_obj_num = 0; /* write out any unresolved link annotations. This could be done earlier */ /* (in fact, it can be done as each new target is defined) but I've */ diff -u --recursive --new-file -u --recursive --new-file lout-3.26/z49.c lout-3.27/z49.c --- lout-3.26/z49.c Tue Oct 8 16:09:53 2002 +++ lout-3.27/z49.c Sun Nov 17 09:17:14 2002 @@ -1,9 +1,9 @@ /*@z49.c:PostScript Back End:PS_BackEnd@**************************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.26) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.27) */ /* COPYRIGHT (C) 1991, 2002 Jeffrey H. Kingston */ /* */ -/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */ +/* Jeffrey H. Kingston (jeff@it.usyd.edu.au) */ /* Basser Department of Computer Science */ /* The University of Sydney 2006 */ /* AUSTRALIA */ @@ -29,25 +29,48 @@ /*****************************************************************************/ #include "externs.h" +#define pnl fputs((char *) STR_NEWLINE, out_fp) +#define p0(str) { fputs(str, out_fp); pnl; } +#define p1(fmt, a1) { fprintf(out_fp, fmt, a1); pnl; } +#define p2(fmt, a1, a2) { fprintf(out_fp, fmt, a1, a2); pnl; } +#define p3(fmt, a1, a2, a3) { fprintf(out_fp, fmt, a1, a2, a3); pnl; } +#define p4(fmt, a1, a2, a3, a4) { fprintf(out_fp, fmt, a1, a2, a3, a4); pnl; } + /*****************************************************************************/ /* */ -/* State variables for this module */ +/* State variables for this module - general */ /* */ /*****************************************************************************/ #define StartUpResource "LoutStartUp" #define NO_FONT 0 /* actually stolen from z37.c */ #define NO_COLOUR 0 +#define NO_TEXTURE 0 #define MAX_GS 50 /* maximum depth of graphics states */ #define STRING_SIZE 16000 /* used by forms code */ -BOOLEAN Encapsulated; /* TRUE if EPS file is wanted */ +BOOLEAN Encapsulated; /* TRUE if EPS file is wanted */ +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 OBJECT incg_files = nilobj; /* IncludeGraphicRepeated files */ +static FILE *out_fp; /* file to print PostScript on */ + + +/*****************************************************************************/ +/* */ +/* State variables for this module - graphics state */ +/* */ +/*****************************************************************************/ typedef struct { FONT_NUM gs_font; /* font number of this state */ BOOLEAN gs_baselinemark; /* baseline mark in use */ COLOUR_NUM gs_colour; /* colour number of this state */ + TEXTURE_NUM gs_texture; /* texture 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 */ @@ -59,17 +82,90 @@ static FONT_NUM currentfont; /* font of most recent atom */ static BOOLEAN currentbaselinemark; /* current baselinemark */ static COLOUR_NUM currentcolour; /* colour of most recent atom */ +static TEXTURE_NUM currenttexture; /* texture 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 OBJECT incg_files = nilobj; /* IncludeGraphicRepeated files */ -static FILE *out_fp; /* file to print PostScript on */ + +/*****************************************************************************/ +/* */ +/* SetBaseLineMarkAndFont(BOOLEAN blm, FONT_NUM f) */ +/* */ +/* Ensure these are the current baselinemark and font, both in */ +/* currentbaselinemark and currentfont, and in the PostScript output. */ +/* */ +/* The code allows for the possibility that the current font could be */ +/* NO_FONT. This is for DefineGraphicNames only, it should never */ +/* happen otherwise. */ +/* */ +/*****************************************************************************/ + +static void SetBaseLineMarkAndFont(BOOLEAN blm, FONT_NUM f) +{ + /* if baselinemark has changed then record change */ + if( blm != currentbaselinemark ) + { currentbaselinemark = blm; + if( currentfont != NO_FONT ) + currentxheight2 = currentbaselinemark ? 0 : FontHalfXHeight(currentfont); + } + + /* if font has changed then record and print change */ + if( f != currentfont ) + { currentfont = f; + if( currentfont != NO_FONT ) + { + currentxheight2 = currentbaselinemark ? 0 : FontHalfXHeight(currentfont); + fprintf(out_fp, "%hd %s", FontSize(currentfont, nilobj), + FontName(currentfont)); + if( ++wordcount >= 5 ) + { pnl; + wordcount = 0; + } + else putc(' ', out_fp); + } + } +} /* end SetBaseLineMarkAndFont */ + + +/*****************************************************************************/ +/* */ +/* SetColourAndTexture(COLOUR_NUM col, TEXTURE_NUM pat) */ +/* */ +/* Ensure these are the current colour and texture, both in currentcolour */ +/* and currenttexture, and in the PostScript output. */ +/* */ +/*****************************************************************************/ + +static void SetColourAndTexture(COLOUR_NUM col, TEXTURE_NUM pat) +{ + /* if colour has changed then record and print change */ + if( col != currentcolour ) + { currentcolour = col; + if( currentcolour > 0 ) + { fprintf(out_fp, "%s", ColourCommand(currentcolour)); + if( ++wordcount >= 5 ) + { pnl; + wordcount = 0; + } + else putc(' ', out_fp); + } + } + + /* if texture has changed then record and print change */ + if( pat != currenttexture ) + { currenttexture = pat; + if( currenttexture > 0 ) + { fprintf(out_fp, "%s", TextureCommand(currenttexture)); + if( ++wordcount >= 5 ) + { pnl; + wordcount = 0; + } + else putc(' ', out_fp); + } + } + +} /* end SetColourAndTexture */ /*****************************************************************************/ @@ -123,7 +219,7 @@ S = (LINK_DEST_TABLE) malloc(2*sizeof(int) + newsize * sizeof(OBJECT)); if( S == (LINK_DEST_TABLE) NULL ) - Error(43, 1, "run out of memory enlarging link dest table", FATAL, no_fpos); + Error(49, 1, "run out of memory enlarging link dest table", FATAL, no_fpos); ltab_size(S) = newsize; ltab_count(S) = 0; for( i = 0; i < newsize; i++ ) ltab_item(S, i) = nilobj; @@ -153,7 +249,7 @@ for( link = Down(z); link != z; link = NextDown(link) ) { Child(y, link); if( StringEqual(string(x), string(y)) ) - { Error(43, 2, "link name %s used twice (first at%s)", + { Error(49, 2, "link name %s used twice (first at%s)", WARN, &fpos(x), string(x), EchoFilePos(&fpos(y))); } } @@ -175,8 +271,8 @@ #if DEBUG_ON static void ltab_debug(LINK_DEST_TABLE S, FILE *fp) { int i; OBJECT x, link, y; - fprintf(fp, " table size: %d; current number of keys: %d\n", - ltab_size(S), ltab_count(S)); + fprintf(fp, " table size: %d; current number of keys: %d%s", + ltab_size(S), ltab_count(S), STR_NEWLINE); for( i = 0; i < ltab_size(S); i++ ) { x = ltab_item(S, i); fprintf(fp, "ltab_item(S, %d) =", i); @@ -189,7 +285,7 @@ fprintf(fp, " %s", is_word(type(y)) ? string(y) : AsciiToFull("not-WORD!")); } - fprintf(fp, "\n"); + fprintf(fp, "%s", STR_NEWLINE); } } /* end ltab_debug */ #endif @@ -231,6 +327,7 @@ currentfont = NO_FONT; currentbaselinemark = FALSE; currentcolour = NO_COLOUR; + currenttexture = NO_TEXTURE; cpexists = FALSE; wordcount = pagecount = 0; New(needs, ACAT); @@ -330,17 +427,15 @@ 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); + p1("%%%%IncludeResource: font %s", 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, + p4("/%s%s %s /%s LoutRecode", 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); + p3("/%s { /%s%s LoutFont } def", short_name, font_name, short_name); } - else fprintf(out_fp, "/%s { /%s LoutFont } def\n", short_name, font_name); + else p2("/%s { /%s LoutFont } def", short_name, font_name); } /* end PrintPageSetupForFont */ @@ -355,7 +450,7 @@ static void PS_PrintPageResourceForFont(FULL_CHAR *font_name, BOOLEAN first) { - fprintf(out_fp, "%s font %s\n", first ? "%%PageResources:" : "%%+",font_name); + p2("%s font %s", first ? "%%PageResources:" : "%%+", font_name); } /* end PS_PrintPageResourceForFont */ @@ -369,12 +464,14 @@ 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)); + p1("%%%%BeginResource: encoding %s", string(map->name)); + p1("/%s [", 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"); + fprintf(out_fp, "/%s%s", string(map->vector[i]), + (i+1)%8 != 0 ? " " : (char *) STR_NEWLINE); + p0("] def"); + p0("%%EndResource"); + pnl; } /* end PrintMapping */ @@ -397,11 +494,11 @@ void PS_PrintEPSFile(FILE *fp, FILE_POS *pos) { int state; OBJECT y; - FULL_CHAR buff[MAX_BUFF]; + FULL_CHAR buff[MAX_LINE]; debug0(DPO, D, "[ PS_PrintEPSFile"); assert( fp != NULL, "PS_PrintEPSFile: fp!" ); - state = (StringFGets(buff, MAX_BUFF, fp) == NULL) ? FINISHED : SKIPPING; + state = (ReadOneLine(fp, buff, MAX_LINE) == 0) ? FINISHED : SKIPPING; while( state != FINISHED ) switch(state) { case SKIPPING: @@ -411,15 +508,19 @@ { y = MakeWord(WORD, &buff[StringLength("%%DocumentNeededResources:")], no_fpos); Link(needs, y); - state = (StringFGets(buff,MAX_BUFF,fp)==NULL) ? FINISHED : READING_DNR; + state = (ReadOneLine(fp, buff, MAX_LINE) == 0) ? FINISHED : READING_DNR; } else { if( StringBeginsWith(buff, AsciiToFull("%%LanguageLevel:")) ) Error(49, 10, "ignoring LanguageLevel comment in EPS file", WARN, pos); if( StringBeginsWith(buff, AsciiToFull("%%Extensions:")) ) Error(49, 11, "ignoring Extensions comment in EPS file", WARN, pos); - if( !strip_out(buff) ) StringFPuts(buff, out_fp); - state = (StringFGets(buff, MAX_BUFF, fp) == NULL) ? FINISHED : SKIPPING; + if( !strip_out(buff) ) + { + StringFPuts(buff, out_fp); + pnl; + } + state = (ReadOneLine(fp, buff, MAX_LINE) == 0) ? FINISHED : SKIPPING; } break; @@ -428,11 +529,15 @@ if( StringBeginsWith(buff, AsciiToFull("%%+")) ) { y = MakeWord(WORD, &buff[StringLength(AsciiToFull("%%+"))], no_fpos); Link(needs, y); - state = (StringFGets(buff,MAX_BUFF,fp)==NULL) ? FINISHED : READING_DNR; + state = (ReadOneLine(fp, buff, MAX_LINE) == 0) ? FINISHED : READING_DNR; } else - { if( !strip_out(buff) ) StringFPuts(buff, out_fp); - state = (StringFGets(buff, MAX_BUFF, fp) == NULL) ? FINISHED : SKIPPING; + { if( !strip_out(buff) ) + { + StringFPuts(buff, out_fp); + pnl; + } + state = (ReadOneLine(fp, buff, MAX_LINE) == 0) ? FINISHED : SKIPPING; } break; } @@ -527,140 +632,303 @@ /* */ /*****************************************************************************/ -#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) -#define p4(str, ar1, ar2, ar3, ar4) fprintf(out_fp, str, ar1, ar2, ar3, ar4) - 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\n", 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("%%LanguageLevel: 2\n"); - p0("%%Pages: (atend)\n"); - p2("%%%%BoundingBox: 0 0 %d %d\n", h/PT, v/PT); - p0("%%EndComments\n\n"); + p0(Encapsulated ? "%!PS-Adobe-3.0 EPSF-3.0" : "%!PS-Adobe-3.0"); + p1("%%%%Creator: %s", LOUT_VERSION); + p1("%%%%CreationDate: %s", TimeString()); + p0("%%DocumentData: Binary"); + p0("%%DocumentNeededResources: (atend)"); + p0("%%DocumentSuppliedResources: (atend)"); + p3("%%%%DocumentMedia: %s %d %d 0 white ()", MediaName(h, v), h/PT, v/PT); + p0("%%PageOrder: Ascend"); + p0("%%LanguageLevel: 2"); + p0("%%Pages: (atend)"); + p2("%%%%BoundingBox: 0 0 %d %d", h/PT, v/PT); + p0("%%EndComments"); /* 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("%%BeginProlog"); + p1("%%%%BeginResource: procset %s", StartUpResource); + p0("/save_cp { currentpoint /cp_y exch def /cp_x exch def } def"); + p0("/restore_cp { cp_x cp_y moveto } def"); + p0("/outline { gsave 1 1 1 setrgbcolor dup show save_cp"); + p0(" grestore true charpath stroke restore_cp } bind def"); + p0("/m { 3 1 roll moveto show } bind def"); + p0("/mo { 3 1 roll moveto outline } bind def"); + p0("/s { exch currentpoint exch pop moveto show } bind def"); + p0("/so { exch currentpoint exch pop moveto outline } bind def"); + p0("/k { exch neg 0 rmoveto show } bind def"); + p0("/ko { exch neg 0 rmoveto outline } bind def"); + p0("/r { exch 0 rmoveto show } bind def"); + p0("/ro { exch 0 rmoveto outline } bind def"); + p0("/c { gsave 3 1 roll rmoveto show grestore } bind def"); + p0("/co { gsave 3 1 roll rmoveto outline grestore } bind def"); + p0("/ul { gsave setlinewidth dup 3 1 roll"); + p0(" moveto lineto stroke grestore } bind def"); + p1("/in { %d mul } def", IN); + p1("/cm { %d mul } def", CM); + p1("/pt { %d mul } def", PT); + p1("/em { %d mul } def", EM); + p0("/sp { louts mul } def"); + p0("/vs { loutv mul } def"); + p0("/ft { loutf mul } def"); + p0("/dg { } def"); + pnl; + + p0("/LoutGraphic {"); + p0(" /louts exch def"); + p0(" /loutv exch def"); + p0(" /loutf exch def"); + p0(" /ymark exch def"); + p0(" /xmark exch def"); + p0(" /ysize exch def"); + p0(" /xsize exch def"); + p0("} def"); + pnl; - p0("/LoutGr2 { gsave translate LoutGraphic gsave } def\n\n"); + p0("/LoutGr2 { gsave translate LoutGraphic gsave } def"); + pnl; /* print definition used by Lout output to recode fonts */ /* adapted from PostScript Language Reference Manual (2nd Ed), p. 275 */ /* usage: / / 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"); + p0("/LoutFont"); + p0("{ findfont exch scalefont setfont"); + p0("} bind def"); + pnl; + + p0("/LoutRecode {"); + p0(" { findfont dup length dict begin"); + p0(" {1 index /FID ne {def} {pop pop} ifelse} forall"); + p0(" /Encoding exch def"); + p0(" currentdict end definefont pop"); + p0(" }"); + p0(" stopped pop"); + p0("} bind def"); + pnl; /* print definitions used by Lout output when including EPSF files */ /* copied from PostScript Language Reference Manual (2nd Ed.), p. 726 */ /* but then revised to follow Adobe's Technical Note #5144 */ - p0("/LoutStartEPSF { % prepare for EPSF inclusion\n"); - p0(" userdict begin\n"); - p0(" /PreEPSF_state save def\n"); - p0(" /dict_stack countdictstack def\n"); - p0(" /ops_count count 1 sub def\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("/LoutEPSFCleanUp { % clean up after EPSF inclusion\n"); - p0(" count ops_count sub { pop } repeat\n"); - p0(" countdictstack dict_stack sub { end } repeat\n"); - p0(" PreEPSF_state restore\n"); - p0(" end % userdict\n"); - p0("} bind def\n"); + p0("/LoutStartEPSF { % prepare for EPSF inclusion"); + p0(" userdict begin"); + p0(" /PreEPSF_state save def"); + p0(" /dict_stack countdictstack def"); + p0(" /ops_count count 1 sub def"); + p0(" /showpage {} def"); + p0(" 0 setgray 0 setlinecap"); + p0(" 1 setlinewidth 0 setlinejoin"); + p0(" 10 setmiterlimit [] 0 setdash newpath"); + p0(" /languagelevel where"); + p0(" { pop languagelevel"); + p0(" 1 ne"); + p0(" { false setstrokeadjust false setoverprint"); + p0(" } if"); + p0(" } if"); + p0("} bind def"); + pnl; + p0("/LoutEPSFCleanUp { % clean up after EPSF inclusion"); + p0(" count ops_count sub { pop } repeat"); + p0(" countdictstack dict_stack sub { end } repeat"); + p0(" PreEPSF_state restore"); + p0(" end % userdict"); + p0("} bind def"); + pnl; + + /* print textures definitions - see Expert's Guide for explanation */ + p0("% Find current texture (may be null)"); + p0("% - LoutCurrentP p"); + p0("/LoutCurrentP"); + p0("{"); + p0(" currentcolorspace"); + p0(" 0 get /Pattern eq"); + p0(" {"); + p0(" [ currentcolor ]"); + p0(" dup length 1 sub get"); + p0(" }"); + p0(" {"); + p0(" null"); + p0(" } ifelse"); + p0("} def"); + pnl; + + p0("% Find current color and color space"); + p0("% - LoutCurrentCCS c cs"); + p0("/LoutCurrentCCS"); + p0("{"); + p0(" LoutCurrentP dup null eq"); + p0(" {"); + p0(" pop [ currentcolor ]"); + p0(" currentcolorspace"); + p0(" }"); + p0(" {"); + p0(" dup"); + p0(" /UnderlyingColor get"); + p0(" exch /UnderlyingColorSpace get"); + p0(" } ifelse"); + p0("} def"); + pnl; + + p0("% Install c, cs, and (a copy of) p into graphics state"); + p0("% c cs p LoutSetCCSP -"); + p0("/LoutSetCCSP"); + p0("{"); + p0(" dup null eq"); + p0(" {"); + p0(" pop setcolorspace"); + p0(" aload pop setcolor"); + p0(" }"); + p0(" {"); + p0(" % copy pattern dictionary"); + p0(" 12 dict copy"); + pnl; + + p0(" % record cs and c in p"); + p0(" dup /UnderlyingColorSpace 3 index"); + p0(" put"); + p0(" dup /UnderlyingColor 4 index"); + p0(" put"); + pnl; + + p0(" % do setcolorspace and setcolor"); + p0(" dup /PaintType get 1 eq"); + p0(" {"); + p0(" [ /Pattern ] setcolorspace"); + p0(" setcolor"); + p0(" pop pop"); + p0(" }"); + p0(" {"); + p0(" [ /Pattern"); + p0(" 4 -1 roll"); + p0(" ] setcolorspace"); + p0(" exch aload length 1 add"); + p0(" -1 roll"); + p0(" setcolor"); + p0(" } ifelse"); + p0(" } ifelse"); + p0("} def"); + pnl; + + p0("% num LoutSetGray -"); + p0("/LoutSetGray"); + p0("{"); + p0(" [ 2 1 roll ]"); + p0(" [ /DeviceGray ]"); + p0(" LoutCurrentP"); + p0(" LoutSetCCSP"); + p0("} def"); + pnl; + + p0("% r g b LoutSetRGBColor -"); + p0("/LoutSetRGBColor"); + p0("{"); + p0(" [ 4 1 roll ]"); + p0(" [ /DeviceRGB ]"); + p0(" LoutCurrentP"); + p0(" LoutSetCCSP"); + p0("} def"); + pnl; + + p0("% h s b LoutSetHSBColor -"); + p0("/LoutSetHSBColor"); + p0("{"); + p0(" gsave sethsbcolor"); + p0(" currentrgbcolor grestore"); + p0(" LoutSetRGBColor"); + p0("} def"); + pnl; + + p0("% c m y k LoutSetRGBColor -"); + p0("/LoutSetCMYKColor"); + p0("{"); + p0(" [ 5 1 roll ]"); + p0(" [ /DeviceCMYK ]"); + p0(" LoutCurrentP"); + p0(" LoutSetCCSP"); + p0("} def"); + pnl; + + p0("% p LoutSetTexture -"); + p0("/LoutSetTexture"); + p0("{"); + p0(" LoutCurrentCCS"); + p0(" 3 -1 roll"); + p0(" LoutSetCCSP"); + p0("} def"); + pnl; + + p0("% "); + p0("% LoutMakeTexture p"); + p0("/LoutMakeTexture"); + p0("{"); + p0(" 12 dict begin"); + p0(" /PaintProc exch def"); + p0(" /YStep exch def"); + p0(" /XStep exch def"); + p0(" /BBox exch def"); + p0(" /PaintType exch def"); + p0(" /PatternType 1 def"); + p0(" /TilingType 1 def"); + p0(" currentdict end"); + p0(" 7 1 roll"); + p0(" matrix translate"); + p0(" 5 1 roll"); + p0(" matrix rotate"); + p0(" 4 1 roll"); + p0(" matrix scale"); + p0(" exch dup matrix scale"); + p0(" matrix concatmatrix"); + p0(" matrix concatmatrix"); + p0(" matrix concatmatrix"); + p0(" /makepattern where"); + p0(" {"); + p0(" pop makepattern"); + p0(" }"); + p0(" {"); + p0(" pop pop null"); + p0(" } ifelse"); + p0("} def"); + pnl; + + p0("/LoutTextureSolid"); + p0("{"); + p0(" null"); + p0(" LoutSetTexture"); + p0("} def"); + + /* PostScript forms, if needed */ if( incg_files != nilobj ) { - p0("\n/LoutReadFormEPS {\n"); - p1(" currentfile 0 (Lout_Marker_%s)\n", (char *) TimeString()); - p0(" /SubFileDecode filter exch 1\n"); - p1(" { 2 copy 4 index %d string readstring 4 1 roll\n", STRING_SIZE); - p0(" put not { exit } if 1 add\n"); - p0(" } loop\n"); - p0(" 1 add 2 copy () put pop currentglobal true setglobal exch\n"); - p0(" 0 1 array put setglobal pop\n"); - p0("} bind def\n"); + pnl; + p0("LoutReadFormEPS {"); + p1(" currentfile 0 (Lout_Marker_%s)", (char *) TimeString()); + p0(" /SubFileDecode filter exch 1"); + p1(" { 2 copy 4 index %d string readstring 4 1 roll", STRING_SIZE); + p0(" put not { exit } if 1 add"); + p0(" } loop"); + p0(" 1 add 2 copy () put pop currentglobal true setglobal exch"); + p0(" 0 1 array put setglobal pop"); + p0("} bind def"); } - p0("%%EndResource\n\n"); + p0("%%EndResource"); + pnl; /* 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; + { FULL_CHAR buff[MAX_LINE]; FILE *fp; if( (fp = OpenFile(fnum, FALSE, FALSE)) == null ) - Error(49, 3, "cannot open %s file %s", WARN, PosOfFile(fnum), + Error(49, 3, "cannot open %s file %s", FATAL, PosOfFile(fnum), KW_PREPEND, FileName(fnum)); - else if( StringFGets(buff, MAX_BUFF, fp) == NULL ) + else if( ReadOneLine(fp, buff, MAX_LINE) == 0 ) Error(49, 4, "%s file %s is empty", WARN, PosOfFile(fnum), KW_PREPEND, FileName(fnum)); else @@ -674,21 +942,27 @@ Error(49, 5, "%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 ) + pnl; + p2("%% %s file %s", KW_PREPEND, FileName(fnum)); + while( ReadOneLine(fp, buff, MAX_LINE) != 0 ) + { StringFPuts(buff, out_fp); - p0("\n"); + pnl; + } + pnl; fclose(fp); } } - fputs("%%EndProlog\n\n", out_fp); - fputs("%%BeginSetup\n", out_fp); + p0("%%EndProlog"); + pnl; + p0("%%BeginSetup"); /* print one PostScript form for each @IncludeGraphicRepeated entry */ if( incg_files != nilobj ) { int fnum; FILE *fp; BOOLEAN junk, cp; OBJECT link, x, full_name; - p0("<< /MaxFormItem currentsystemparams /MaxFormCache get >> setuserparams\n\n"); + p0("<< /MaxFormItem currentsystemparams /MaxFormCache get >> setuserparams"); + pnl; fnum = 1; for( link = Down(incg_files); link != incg_files; link = NextDown(link) ) { @@ -711,35 +985,36 @@ /* print the form resource for this file */ /* NB tech note says file_size / STRING_SIZE + 2 but really means */ /* ceiling(file_size / STRING_SIZE) + 2 so we use + 3 */ - p1("%%%%BeginResource: form Form%d\n", fnum); - p1("/Form%d\n", fnum); - p0("10 dict begin\n"); - p0(" /FormType 1 def\n"); - p1(" /EPSArray %d array def\n", file_size / STRING_SIZE + 3); - p0(" /AcquisitionProc {\n"); - p0(" EPSArray dup 0 get dup 0 get\n"); - p0(" dup 3 1 roll 1 add 0 exch put get\n"); - p0(" } bind def\n"); - p0("\n"); - p0(" /PaintProc {\n"); - p0(" begin\n"); - p0(" LoutStartEPSF\n"); - p0(" EPSArray 0 get 0 1 put\n"); - p0(" //AcquisitionProc 0 () /SubFileDecode filter\n"); - p0(" cvx exec\n"); - p0(" LoutEPSFCleanUp\n"); - p0(" end\n"); - p0(" } bind def\n"); - p0("\n"); - p4(" /BBox [ %d %d %d %d ] def\n", llx, lly, urx, ury); - p0(" /Matrix [1 0 0 1 0 0] def\n"); + p1("%%%%BeginResource: form Form%d", fnum); + p1("/Form%d", fnum); + p0("10 dict begin"); + p0(" /FormType 1 def"); + p1(" /EPSArray %d array def", file_size / STRING_SIZE + 3); + p0(" /AcquisitionProc {"); + p0(" EPSArray dup 0 get dup 0 get"); + p0(" dup 3 1 roll 1 add 0 exch put get"); + p0(" } bind def"); + pnl; + p0(" /PaintProc {"); + p0(" begin"); + p0(" LoutStartEPSF"); + p0(" EPSArray 0 get 0 1 put"); + p0(" //AcquisitionProc 0 () /SubFileDecode filter"); + p0(" cvx exec"); + p0(" LoutEPSFCleanUp"); + p0(" end"); + p0(" } bind def"); + pnl; + p4(" /BBox [ %d %d %d %d ] def", llx, lly, urx, ury); + p0(" /Matrix [1 0 0 1 0 0] def"); p1("currentdict end def %% Form%d", fnum); - p0("\n"); - p1("Form%d /EPSArray get\n", fnum); - p0("LoutReadFormEPS\n"); + pnl; + p1("Form%d /EPSArray get", fnum); + p0("LoutReadFormEPS"); PS_PrintEPSFile(fp, &fpos(x)); - p1("Lout_Marker_%s\n", (char *) TimeString()); - p0("%%EndResource\n\n"); + p1("Lout_Marker_%s", (char *) TimeString()); + p0("%%EndResource"); + pnl; /* remove any unpacked version and go to next file */ if( cp ) StringRemove(AsciiToFull(LOUT_EPS)); @@ -751,21 +1026,22 @@ MapPrintEncodings(); /* pdfmark compatibility code, as in the pdfmark Reference Manual p10 */ - p0("/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse\n"); + p0("/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse"); - /* FontPrintPageSetup(out_fp); */ - fputs("%%EndSetup\n\n", out_fp); + p0("%%EndSetup"); + pnl; 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"); + p1(" %d", ++pagecount); + p0("%%BeginPageSetup"); FontPrintPageResources(out_fp); - fprintf(out_fp, "/pgsave save def\n"); + p0("/pgsave save def"); FontPrintPageSetup(out_fp); FontAdvanceCurrentPage(); - fprintf(out_fp, "%.4f dup scale %d setlinewidth\n", 1.0 / PT, PT/2); - fprintf(out_fp, "%%%%EndPageSetup\n\n"); + p2("%.4f dup scale %d setlinewidth", 1.0 / PT, PT/2); + p0("%%EndPageSetup"); + pnl; prologue_done = TRUE; } /* end PS_PrintBeforeFirstPage */ @@ -782,8 +1058,11 @@ { OBJECT x, link; BOOLEAN first_need; if( prologue_done ) { - fprintf(out_fp, "\npgsave restore\nshowpage\n"); - fprintf(out_fp, "\n%%%%Trailer\n"); + pnl; + p0("pgsave restore"); + p0("showpage"); + pnl; + p0("%%Trailer"); /* print resource requirements (DSC 3.0 version) - fonts */ first_need = FontNeeded(out_fp); @@ -792,22 +1071,20 @@ 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)); + p2("%s %s", first_need ? "%%DocumentNeededResources:" : "%%+", string(x)); first_need = FALSE; } /* print resources supplied */ - fprintf(out_fp, "%%%%DocumentSuppliedResources: procset %s\n", - StartUpResource); + p1("%%%%DocumentSuppliedResources: procset %s", StartUpResource); for( link = Down(supplied); link != supplied; link = NextDown(link) ) { Child(x, link); - fprintf(out_fp, "%%%%+ %s", string(x)); + p1("%%%%+ %s", string(x)); } MapPrintPSResources(out_fp); - fprintf(out_fp, "%%%%Pages: %d\n", pagecount); - fprintf(out_fp, "%%%%EOF\n"); + p1("%%%%Pages: %d", pagecount); + p0("%%EOF"); } } /* end PS_PrintAfterLastPage */ @@ -825,28 +1102,32 @@ { FULL_CHAR *p; debug2(DPO, DD, "PrintBetweenPages(%d, %d)", h, v); - fprintf(out_fp, "\npgsave restore\nshowpage\n"); + pnl; + p0("pgsave restore"); + p0("showpage"); gs_stack_top = 0; cpexists = FALSE; currentfont = NO_FONT; currentbaselinemark = FALSE; currentcolour = NO_COLOUR; + currenttexture = NO_TEXTURE; if( Encapsulated ) { PS_PrintAfterLastPage(); Error(49, 6, "truncating -EPS document at end of first page", FATAL, no_fpos); } - fprintf(out_fp, "\n%%%%Page: "); + pnl; + 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"); + p1(" %d", ++pagecount); + p0("%%BeginPageSetup"); FontPrintPageResources(out_fp); - fprintf(out_fp, "/pgsave save def\n"); + p0("/pgsave save def"); FontPrintPageSetup(out_fp); FontAdvanceCurrentPage(); - fprintf(out_fp, "%.4f dup scale %d setlinewidth\n", 1.0 / PT, PT/2); - fprintf(out_fp, "%%%%EndPageSetup\n"); + p2("%.4f dup scale %d setlinewidth", 1.0 / PT, PT/2); + p0("%%EndPageSetup"); wordcount = 0; } /* end PS_PrintBetweenPages */ @@ -911,40 +1192,13 @@ 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":""); + debug7(DPO, DD, "PrintWord( %s, %d, %d ) font %d colour %d texture %d%s", + string(x), hpos, vpos, word_font(x), word_colour(x), word_texture(x), + word_outline(x) ? " outline":""); TotalWordCount++; - /* if baselinemark is different to previous then record change */ - if( word_baselinemark(x) != currentbaselinemark ) - { currentbaselinemark = word_baselinemark(x); - currentxheight2 = currentbaselinemark ? 0 : FontHalfXHeight(currentfont); - } - - /* if font is different to previous word then print change */ - if( word_font(x) != currentfont ) - { currentfont = word_font(x); - currentxheight2 = currentbaselinemark ? 0 : 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); - } - } + SetBaseLineMarkAndFont(word_baselinemark(x), word_font(x)); + SetColourAndTexture(word_colour(x), word_texture(x)); /* convert ligature sequences into ligature characters */ lig = finfo[word_font(x)].lig_table; @@ -1031,7 +1285,7 @@ else fputs(EightBitToPrintForm[*p], out_fp); } if( ++wordcount >= 5 ) - { fprintf(out_fp, ")%s\n", command); + { p1(")%s", command); wordcount = 0; } else fprintf(out_fp, ")%s ", command); @@ -1056,7 +1310,7 @@ /*****************************************************************************/ /* */ -/* PS_PrintUnderline(fnum, col, xstart, xstop, ymk) */ +/* PS_PrintUnderline(fnum, col, pat, xstart, xstop, ymk) */ /* */ /* Draw an underline suitable for font fnum, in colour col, from xstart to */ /* xstop at the appropriate distance below mark ymk. */ @@ -1064,27 +1318,16 @@ /*****************************************************************************/ static void PS_PrintUnderline(FONT_NUM fnum, COLOUR_NUM col, - FULL_LENGTH xstart, FULL_LENGTH xstop, FULL_LENGTH ymk) + TEXTURE_NUM pat, FULL_LENGTH xstart, FULL_LENGTH xstop, FULL_LENGTH ymk) { debug5(DPO, DD, "PrintUnderline(fnt %d, col %d, xstart %s, xstop %s, ymk %s)", fnum, col, EchoLength(xstart), EchoLength(xstop), EchoLength(ymk)); - /* if colour is different to previously then print change */ - if( col != currentcolour ) - { currentcolour = col; - if( currentcolour > 0 ) - { fprintf(out_fp, "%s", ColourCommand(currentcolour)); - if( ++wordcount >= 5 ) - { putc('\n', out_fp); - wordcount = 0; - } - else putc(' ', out_fp); - } - } + SetColourAndTexture(col, pat); /* now print the underline command */ - fprintf(out_fp, "%d %d %d %d ul\n", xstart, xstop, - ymk - finfo[fnum].underline_pos, finfo[fnum].underline_thick); + p4("%d %d %d %d ul", xstart, xstop, ymk - finfo[fnum].underline_pos, + finfo[fnum].underline_thick); debug0(DPO, DD, "PrintUnderline returning."); } /* end PS_PrintUnderline */ @@ -1100,7 +1343,7 @@ 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); + p2("%d %d translate", xdist, ydist); cpexists = FALSE; debug0(DPO, D, "PS_CoordTranslate returning."); } /* end PS_CoordTranslate */ @@ -1116,7 +1359,7 @@ 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); + p1("%.4f rotate", (float) amount / DG); cpexists = FALSE; debug0(DPO, D, "CoordRotate returning."); } /* end PS_CoordRotate */ @@ -1137,7 +1380,7 @@ #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); + p2("%.4f %.4f scale", hfactor, vfactor); cpexists = FALSE; debug0(DPO, D, "CoordScale returning."); } /* end PS_CoordScale */ @@ -1154,7 +1397,7 @@ static void PS_SaveGraphicState(OBJECT x) { debug0(DPO, D, "SaveGraphicState()"); - fprintf(out_fp, "gsave\n"); + p0("gsave"); gs_stack_top++; if( gs_stack_top >= MAX_GS ) Error(49, 7, "rotations, graphics etc. too deeply nested (max is %d)", @@ -1162,6 +1405,7 @@ gs_stack[gs_stack_top].gs_font = currentfont; gs_stack[gs_stack_top].gs_baselinemark= currentbaselinemark; gs_stack[gs_stack_top].gs_colour = currentcolour; + gs_stack[gs_stack_top].gs_texture = currenttexture; gs_stack[gs_stack_top].gs_cpexists = cpexists; gs_stack[gs_stack_top].gs_currenty = currenty; gs_stack[gs_stack_top].gs_xheight2 = currentxheight2; @@ -1182,10 +1426,12 @@ void PS_RestoreGraphicState(void) { debug0(DPO, D, "PS_RestoreGraphicState()"); - fprintf(out_fp, "\ngrestore\n"); + pnl; + p0("grestore"); currentfont = gs_stack[gs_stack_top].gs_font; currentbaselinemark = gs_stack[gs_stack_top].gs_baselinemark; currentcolour = gs_stack[gs_stack_top].gs_colour; + currenttexture = gs_stack[gs_stack_top].gs_texture; cpexists = gs_stack[gs_stack_top].gs_cpexists; currenty = gs_stack[gs_stack_top].gs_currenty; currentxheight2 = gs_stack[gs_stack_top].gs_xheight2; @@ -1221,7 +1467,7 @@ { Child(y, link); if( type(y) == GAP_OBJ ) { - if( vspace(y) > 0 ) fputs("\n", out_fp); + if( vspace(y) > 0 ) pnl; else if( hspace(y) > 0 ) fputs(" ", out_fp); } else if( is_word(type(y)) || type(y) == ACAT ) @@ -1262,39 +1508,18 @@ void PS_DefineGraphicNames(OBJECT x) { assert( type(x) == GRAPHIC, "PrintGraphic: type(x) != GRAPHIC!" ); - debug1(DPO, D, "DefineGraphicNames( %s )", EchoObject(x)); + debug1(DPO, D, "PS_DefineGraphicNames( %s )", EchoObject(x)); debug1(DPO, DD, " style = %s", EchoStyle(&save_style(x))); - /* if baselinemark is different to prevsiou then record change */ - if( baselinemark(save_style(x)) != currentbaselinemark ) - { - currentbaselinemark = baselinemark(save_style(x)); - if( currentfont > 0 ) - currentxheight2 = currentbaselinemark ? 0 : FontHalfXHeight(currentfont); - } - - /* 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 = currentbaselinemark ? 0 : 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)); - } + SetBaseLineMarkAndFont(baselinemark(save_style(x)), font(save_style(x))); + SetColourAndTexture(colour(save_style(x)), texture(save_style(x))); /* now print the actual command that defines the names */ - fprintf(out_fp, "%d %d %d %d %d %d %d LoutGraphic\n", + fprintf(out_fp, "%d %d %d %d %d %d %d LoutGraphic%s", 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)))); + width(line_gap(save_style(x))), width(space_gap(save_style(x))), + (char *) STR_NEWLINE); debug0(DPO, D, "PS_DefineGraphicNames returning."); } /* end PS_DefineGraphicNames */ @@ -1305,19 +1530,21 @@ /* */ /* Equivalent to the sequence of calls */ /* */ -/* SaveGraphicState(x) */ -/* CoordTranslate(xdist, ydist) */ -/* DefineGraphicNames(x) */ -/* SaveGraphicState(x) */ +/* PS_SaveGraphicState(x) */ +/* PS_CoordTranslate(xdist, ydist) */ +/* PS_DefineGraphicNames(x) */ +/* PS_SaveGraphicState(x) */ /* */ -/* but generates less PostScript. */ +/* but generates less PostScript in some cases, and never more. */ /* */ /*****************************************************************************/ 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 ) + if( gs_stack_top >= MAX_GS - 1 || + font(save_style(x)) != currentfont || + colour(save_style(x)) != currentcolour || + texture(save_style(x)) != currenttexture ) { /* do it bit by bit, will be rare anyway */ PS_SaveGraphicState(x); @@ -1327,13 +1554,14 @@ } else { - /* no font or colour changes, no stack overflow, so can optimize */ + /* no font, colour, or texture changes, no stack overflow, so optimize */ /* from Save */ gs_stack_top++; gs_stack[gs_stack_top].gs_font = currentfont; gs_stack[gs_stack_top].gs_baselinemark = currentbaselinemark; gs_stack[gs_stack_top].gs_colour = currentcolour; + gs_stack[gs_stack_top].gs_texture = currenttexture; gs_stack[gs_stack_top].gs_cpexists = cpexists; gs_stack[gs_stack_top].gs_currenty = currenty; gs_stack[gs_stack_top].gs_xheight2 = currentxheight2; @@ -1346,16 +1574,17 @@ gs_stack[gs_stack_top].gs_font = currentfont; gs_stack[gs_stack_top].gs_baselinemark = currentbaselinemark; gs_stack[gs_stack_top].gs_colour = currentcolour; + gs_stack[gs_stack_top].gs_texture = currenttexture; 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", + fprintf(out_fp, "%d %d %d %d %d %d %d %d %d LoutGr2%s", 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); + xdist, ydist, (char *) STR_NEWLINE); } } /* end PS_SaveTranslateDefineSave */ @@ -1369,90 +1598,63 @@ /* Find bounding box line in EPS file fp. fpos is used for errors only. */ /* */ /*****************************************************************************/ -#define IG_LOOKING 0 -#define IG_NOFILE 1 -#define IG_BADFILE 2 -#define IG_BADSIZE 3 -#define IG_OK 4 BOOLEAN PS_FindBoundingBox(FILE *fp, FILE_POS *pos, FULL_LENGTH *llx, FULL_LENGTH *lly, FULL_LENGTH *urx, FULL_LENGTH *ury) -{ BOOLEAN first_line = TRUE; FULL_CHAR buff[MAX_BUFF]; - int status = (fp == NULL ? IG_NOFILE : IG_LOOKING); - int read_status; - BOOLEAN res; +{ FULL_CHAR buff[MAX_LINE]; float fllx, flly, furx, fury; *llx = *lly = *urx = *ury = 0; - /* search for BoundingBox line */ - while( status == IG_LOOKING ) + /* if we don't even have a file, say so and return failure */ + if( fp == NULL ) { - read_status = fscanf(fp, "%[^\n\r]%*c", (char *) buff); - if( read_status == 0 || read_status == EOF ) - { - /* end of input and no luck */ - break; - } - if( first_line && !StringBeginsWith(buff, AsciiToFull("%!")) ) - status = IG_BADFILE; - else - { first_line = FALSE; - if( buff[0] == '%' - && StringBeginsWith(buff, AsciiToFull("%%BoundingBox:")) - && !StringContains(buff, AsciiToFull("(atend)")) ) - { - if( sscanf( (char *) buff, "%%%%BoundingBox: %f %f %f %f", - &fllx, &flly, &furx, &fury) == 4 ) - { - status = IG_OK; - *llx = fllx; - *lly = flly; - *urx = furx; - *ury = fury; - } - else status = IG_BADSIZE; - } - } + Error(49, 17, "EPS file ignored (cannot open file)", WARN, pos); + return FALSE; } - /* report error depending on status */ - res = TRUE; - switch( status ) + /* if the file is empty, say so and return failure */ + if( ReadOneLine(fp, buff, MAX_LINE) == 0 ) { - case IG_NOFILE: - - Error(49, 17, "EPS file ignored (cannot open file)", WARN, pos); - res = FALSE; - break; - - - case IG_LOOKING: - - Error(49, 18, "EPS given zero size (no BoundingBox line in file)", - WARN, pos); - break; - - - case IG_BADFILE: - - Error(49, 19, "EPS file ignored (bad first line in file)", WARN, pos); - res = FALSE; - break; - - - case IG_BADSIZE: - - Error(49, 20, "EPS given zero size (bad BoundingBox line in file)", - WARN, pos); - break; - - - case IG_OK: + Error(49, 23, "EPS file ignored (file is empty)", WARN, pos); + return FALSE; + } - break; + /* if the file has a bad first line, say so and return failure */ + if( !StringBeginsWith(buff, AsciiToFull("%!")) ) + { + Error(49, 19, "EPS file ignored (bad first line in file)", WARN, pos); + return FALSE; + } + /* search through file for BoundingBox line */ + while( ReadOneLine(fp, buff, MAX_LINE) != 0 ) + { + if( buff[0] == '%' + && StringBeginsWith(buff, AsciiToFull("%%BoundingBox:")) + && !StringContains(buff, AsciiToFull("(atend)")) ) + { + if( sscanf( (char *) buff, "%%%%BoundingBox: %f %f %f %f", + &fllx, &flly, &furx, &fury) == 4 ) + { + *llx = fllx; + *lly = flly; + *urx = furx; + *ury = fury; + return TRUE; + } + else + { + Error(49, 20, "EPS given zero size (bad BoundingBox line in file)", + WARN, pos); + return FALSE; + } + } } - return res; + + /* if we get this far, we didn't find the bounding box line */ + Error(49, 18, "EPS given zero size (no BoundingBox line in file)", + WARN, pos); + return FALSE; } /* end PS_FindBoundingBox */ @@ -1486,26 +1688,8 @@ /* open the include file and get its full path name */ Child(y, Down(x)); - /* if currentbaselinemark is different to previous word then record change */ - if( baselinemark(save_style(x)) != currentbaselinemark ) - { - currentbaselinemark = baselinemark(save_style(x)); - currentxheight2 = currentbaselinemark ? 0 : FontHalfXHeight(currentfont); - } - - /* if font is different to previous word then print change */ - if( font(save_style(x)) != currentfont ) - { currentfont = font(save_style(x)); - currentxheight2 = currentbaselinemark ? 0 : 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)); - } + SetBaseLineMarkAndFont(baselinemark(save_style(x)), font(save_style(x))); + SetColourAndTexture(colour(save_style(x)), texture(save_style(x))); fnum = PS_FindIncGRepeated(y, type(x)); if( fnum != 0 ) @@ -1515,7 +1699,7 @@ 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, "Form%d execform\n", fnum); + p1("Form%d execform", fnum); PS_RestoreGraphicState(); } else @@ -1525,11 +1709,11 @@ assert( fp != NULL, "PS_PrintGraphicInclude: fp!" ); /* print appropriate header code for EPS file inclusion */ - fprintf(out_fp, "LoutStartEPSF\n"); + p0("LoutStartEPSF"); 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)); + p1("%%%%BeginDocument: %s", string(full_name)); /* copy through the include file, except divert resources lines to needs */ /* and strip out some comment lines that cause problems */ @@ -1538,7 +1722,9 @@ /* wrapup */ DisposeObject(full_name); if( compressed ) StringRemove(AsciiToFull(LOUT_EPS)); - fprintf(out_fp, "\n%%%%EndDocument\nLoutEPSFCleanUp\n"); + pnl; + p0("%%EndDocument"); + p0("LoutEPSFCleanUp"); } cpexists = FALSE; @@ -1598,10 +1784,11 @@ llx, lly, urx, ury); /* print the link source point */ + pnl; fprintf(out_fp, - "\n[ /Rect [%d %d %d %d] %s %s /Subtype /Link /Dest /%s /ANN pdfmark\n", + "[ /Rect [%d %d %d %d] %s %s /Subtype /Link /Dest /%s /ANN pdfmark%s", llx, lly, urx, ury, "/Border [0 0 0]", "/View [ /XYZ null null null ]", - ConvertToPDFName(name)); + ConvertToPDFName(name), (char *) STR_NEWLINE); /* remember it so that at end of run can check if it has an dest point */ Link(link_source_list, name); @@ -1628,7 +1815,8 @@ if( prev == nilobj ) { /* not used previously, so print it and remember it */ - fprintf(out_fp, "\n[ /Dest /%s /DEST pdfmark\n", ConvertToPDFName(name)); + pnl; + p1("[ /Dest /%s /DEST pdfmark", ConvertToPDFName(name)); ltab_insert(name, &link_dest_tab); } else @@ -1656,10 +1844,11 @@ if( is_word(type(url)) ) { + pnl; fprintf(out_fp, - "\n[ /Rect [%d %d %d %d] %s /Action << %s /URI (%s) >> %s /ANN pdfmark\n", + "[ /Rect [%d %d %d %d] %s /Action << %s /URI (%s) >> %s /ANN pdfmark%s", llx, lly, urx, ury, "/Border [0 0 0]", "/Subtype /URI", string(url), - "/Subtype /Link"); + "/Subtype /Link", (char *) STR_NEWLINE); } else Error(49, 22, "%s ignored; left parameter not a simple word", diff -u --recursive --new-file -u --recursive --new-file lout-3.26/z50.c lout-3.27/z50.c --- lout-3.26/z50.c Tue Oct 8 16:09:53 2002 +++ lout-3.27/z50.c Sun Nov 17 09:17:22 2002 @@ -1,9 +1,9 @@ /*@z50.c:PDF Back End:PDF_BackEnd@********************************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.26) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.27) */ /* COPYRIGHT (C) 1991, 2002 Jeffrey H. Kingston */ /* */ -/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */ +/* Jeffrey H. Kingston (jeff@it.usyd.edu.au) */ /* Basser Department of Computer Science */ /* The University of Sydney 2006 */ /* AUSTRALIA */ @@ -38,6 +38,7 @@ /*****************************************************************************/ #define NO_FONT 0 /* actually stolen from z37.c */ #define NO_COLOUR 0 +#define NO_TEXTURE 0 #define MAX_GS 50 /* maximum depth of graphics states */ static FILE *out_fp; /* file to print PDF on */ @@ -47,6 +48,7 @@ FONT_NUM gs_font; /* font number of this state */ BOOLEAN gs_baselinemark; /* TRUE if baseline mark */ COLOUR_NUM gs_colour; /* colour number of this state */ + TEXTURE_NUM gs_texture; /* texture 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 */ @@ -58,6 +60,7 @@ static FONT_NUM currentfont; /* font of most recent atom */ static BOOLEAN currentbaselinemark; /* baseline mark in use */ static COLOUR_NUM currentcolour; /* colour of most recent atom */ +static TEXTURE_NUM currenttexture; /* texture 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 */ @@ -104,6 +107,7 @@ currentfont = NO_FONT; currentbaselinemark = FALSE; currentcolour = NO_COLOUR; + currentcolour = NO_TEXTURE; cpexists = FALSE; wordcount = pagecount = 0; New(needs, ACAT); @@ -145,7 +149,7 @@ FULL_CHAR *font_name, FULL_CHAR *first_size_str) { FULL_CHAR *enc = NULL; - fprintf(out_fp, "%%%%IncludeResource: font %s\n", font_name); + fprintf(out_fp, "%%%%IncludeResource: font %s%s", font_name, STR_NEWLINE); /*** PDFFont_AddFont(out_fp, first_size_str, font_name, MapEncodingName(font_mapping(face))); @@ -190,7 +194,8 @@ { 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'); + fprintf(out_fp, "/%s%s", string(map->vector[i]), + (i+1)%8 != 0 ? STR_SPACE : STR_NEWLINE); PDFFile_EndFontEncoding(out_fp); } /* end PDF_PrintMapping */ @@ -304,7 +309,9 @@ 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 */ + /* *** currently unused + unsigned short *composite; COMPOSITE *cmp; + *** */ static int last_hpos; /* does not need to be initialised */ static int next_hpos = -1; #if 0 @@ -330,6 +337,8 @@ PDFFont_Set(out_fp, FontSize(currentfont, x), FontName(currentfont)); } + /* PDF textures not implemented */ + /* if colour is different to previous word then print change */ if( word_colour(x) != currentcolour ) { @@ -341,6 +350,8 @@ } } + /* PDF textures not implemented */ + /* move to coordinate of x */ debug1(DPF, DDD, " currentxheight2 = %d", currentxheight2); vpos = vpos - currentxheight2; @@ -483,7 +494,7 @@ /*****************************************************************************/ static void PDF_PrintUnderline(FONT_NUM fnum, COLOUR_NUM col, - FULL_LENGTH xstart, FULL_LENGTH xstop, FULL_LENGTH ymk) + TEXTURE_NUM pat, FULL_LENGTH xstart, FULL_LENGTH xstop, FULL_LENGTH ymk) { debug5(DPF, DD, "PDF_PrintUnderline(ft %d, co %d, xstrt %s, xstp %s, ymk %s)", fnum, col, EchoLength(xstart), EchoLength(xstop), EchoLength(ymk)); @@ -529,7 +540,7 @@ PDFPage_Translate(out_fp, xdist, ydist); #else char temp_str[64]; - sprintf(temp_str, "1 0 0 1 %d %d cm\n", xdist, ydist); + sprintf(temp_str, "1 0 0 1 %d %d cm%s", xdist, ydist, STR_NEWLINE); PDFPage_Write(out_fp, temp_str); #endif } @@ -579,7 +590,7 @@ PDFPage_Scale(out_fp, hfactor, vfactor); #else char temp_str[64]; - sprintf(temp_str, "%.2f 0 0 %.2f 0 0 cm\n", hfactor, vfactor); + sprintf(temp_str, "%.2f 0 0 %.2f 0 0 cm%s", hfactor, vfactor, STR_NEWLINE); PDFPage_Write(out_fp, temp_str); #endif } @@ -607,6 +618,7 @@ gs_stack[gs_stack_top].gs_font = currentfont; gs_stack[gs_stack_top].gs_baselinemark = currentbaselinemark; gs_stack[gs_stack_top].gs_colour = currentcolour; + gs_stack[gs_stack_top].gs_texture = currenttexture; gs_stack[gs_stack_top].gs_cpexists = cpexists; gs_stack[gs_stack_top].gs_currenty = currenty; gs_stack[gs_stack_top].gs_xheight2 = currentxheight2; @@ -636,6 +648,7 @@ currentfont = gs_stack[gs_stack_top].gs_font; currentbaselinemark = gs_stack[gs_stack_top].gs_baselinemark; currentcolour = gs_stack[gs_stack_top].gs_colour; + currenttexture = gs_stack[gs_stack_top].gs_texture; cpexists = gs_stack[gs_stack_top].gs_cpexists; currenty = gs_stack[gs_stack_top].gs_currenty; currentxheight2 = gs_stack[gs_stack_top].gs_xheight2; @@ -671,7 +684,7 @@ { Child(y, link); if( type(y) == GAP_OBJ ) { - if( vspace(y) > 0 ) PDFPage_Write(out_fp, "\n"); + if( vspace(y) > 0 ) PDFPage_Write(out_fp, (char *) STR_NEWLINE); else if( hspace(y) > 0 ) PDFPage_Write(out_fp, " "); } else if( is_word(type(y)) || type(y) == ACAT ) @@ -730,6 +743,8 @@ PDFFont_Set(out_fp, FontSize(currentfont, x), FontName(currentfont)); } } + + /* PDF textures not implemented */ /* if colour is different to previous word then print change */ if( colour(save_style(x)) != currentcolour ) diff -u --recursive --new-file -u --recursive --new-file lout-3.26/z51.c lout-3.27/z51.c --- lout-3.26/z51.c Tue Oct 8 16:10:03 2002 +++ lout-3.27/z51.c Sun Nov 17 09:17:28 2002 @@ -1,9 +1,9 @@ /*@z51.c:Plain Text Back End:Plain_BackEnd@***********************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.26) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.27) */ /* COPYRIGHT (C) 1991, 2002 Jeffrey H. Kingston */ /* */ -/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */ +/* Jeffrey H. Kingston (jeff@it.usyd.edu.au) */ /* Basser Department of Computer Science */ /* The University of Sydney 2006 */ /* AUSTRALIA */ @@ -196,7 +196,7 @@ putc('+', out_fp); for( j = 0; j < hsize; j++ ) putc('-', out_fp); putc('+', out_fp); - putc('\n', out_fp); + fputs((char *) STR_NEWLINE, out_fp); ); for( i = vsize - 1; i >= 0; i-- ) { ifdebug(DPT, D, putc('|', out_fp)); @@ -205,13 +205,13 @@ for( j = 0; j <= jmax; j++ ) putc(page[i*hsize + j], out_fp); ifdebug(DPT, D, putc('|', out_fp)); - putc('\n', out_fp); + fputs((char *) STR_NEWLINE, out_fp); } ifdebug(DPT, D, putc('+', out_fp); for( j = 0; j < hsize; j++ ) putc('-', out_fp); putc('+', out_fp); - putc('\n', out_fp); + fputs((char *) STR_NEWLINE, out_fp); ); /* separate the page from the next one with a form-feed if required */ @@ -286,7 +286,7 @@ static void Plain_PrintPlainGraphic(OBJECT x, FULL_LENGTH xmk, FULL_LENGTH ymk, OBJECT z) -{ int i, len, starth, startv, stoph, stopv, h, v; +{ int i, len, starth, startv, stoph, stopv, h = 0, v = 0; debug2(DPT, D, "Plain_PrintPlainGraphic(x, xmk %s, ymk %s)", EchoLength(xmk), EchoLength(ymk)); @@ -336,7 +336,7 @@ /*****************************************************************************/ /* */ -/* Plain_PrintUnderline(fnum, col, xstart, xstop, ymk) */ +/* Plain_PrintUnderline(fnum, col, pat, xstart, xstop, ymk) */ /* */ /* Draw an underline suitable for font fnum, in colour col, from xstart to */ /* xstop at the appropriate distance below mark ymk. */ @@ -344,7 +344,7 @@ /*****************************************************************************/ static void Plain_PrintUnderline(FONT_NUM fnum, COLOUR_NUM col, - FULL_LENGTH xstart, FULL_LENGTH xstop, FULL_LENGTH ymk) + TEXTURE_NUM pat, FULL_LENGTH xstart, FULL_LENGTH xstop, FULL_LENGTH ymk) { debug5(DPT, DD, "Plain_PrintUnderline(fnum %d, col %d, xstart %s, xstop %s, ymk %s )", @@ -373,7 +373,7 @@ putc('+', out_fp); for( j = 0; j < hsize; j++ ) putc('-', out_fp); putc('+', out_fp); - putc('\n', out_fp); + fputs((char *) STR_NEWLINE, out_fp); ); for( i = vsize - 1; i >= 0; i-- ) { ifdebug(DPT, D, putc('|', out_fp)); @@ -382,13 +382,13 @@ for( j = 0; j <= jmax; j++ ) putc(page[i*hsize + j], out_fp); ifdebug(DPT, D, putc('|', out_fp)); - putc('\n', out_fp); + fputs((char *) STR_NEWLINE, out_fp); } ifdebug(DPT, D, putc('+', out_fp); for( j = 0; j < hsize; j++ ) putc('-', out_fp); putc('+', out_fp); - putc('\n', out_fp); + fputs((char *) STR_NEWLINE, out_fp); ); } } /* end Plain_PrintAfterLastPage */ diff -u --recursive --new-file -u --recursive --new-file lout-3.26/z52.c lout-3.27/z52.c --- lout-3.26/z52.c Thu Jan 1 10:00:00 1970 +++ lout-3.27/z52.c Sun Nov 17 09:17:40 2002 @@ -0,0 +1,243 @@ +/*@z52.c:Texture Service:TextureChange, TextureCommand@***********************/ +/* */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.27) */ +/* COPYRIGHT (C) 1991, 2002 Jeffrey H. Kingston */ +/* */ +/* Jeffrey H. Kingston (jeff@it.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: z52.c */ +/* MODULE: Texture Service */ +/* EXTERNS: TextureChange(), TextureCommand() */ +/* */ +/*****************************************************************************/ +#include "externs.h" +#define INIT_TEXTURE_NUM 100 + + +/*****************************************************************************/ +/* */ +/* TEXTURE_TABLE */ +/* */ +/* A symbol table permitting access to texture records by number or name. */ +/* The table will automatically enlarge to accept any number of entries, */ +/* but there is an arbitrary limit of 65535 textures imposed so that texture*/ +/* numbers can be stored in 16 bit fields. */ +/* */ +/* ptab_new(newsize) New empty table, newsize capacity */ +/* ptab_insert(x, &S) Insert new texture object x into S */ +/* ptab_retrieve(str, S) Retrieve texture object of name str */ +/* ptab_num(S, num) Retrieve texture object, number num */ +/* ptab_debug(S, fp) Debug print of table S to file fp */ +/* */ +/*****************************************************************************/ + +typedef struct +{ int pattab_size; /* size of table */ + int pattab_count; /* number of textures held */ + struct pattab_rec + { OBJECT by_number; /* texture record by number */ + OBJECT by_name_hash; /* texture record by name */ + } pattab[1]; +} *TEXTURE_TABLE; + +#define ptab_size(S) (S)->pattab_size +#define ptab_count(S) (S)->pattab_count +#define ptab_num(S, i) (S)->pattab[i].by_number +#define ptab_name(S, i) (S)->pattab[i].by_name_hash + +#define hash(pos, str, S) \ +{ FULL_CHAR *p = str; \ + pos = *p++; \ + while( *p ) pos += *p++; \ + pos = pos % ptab_size(S); \ +} + +static TEXTURE_TABLE ptab_new(int newsize) +{ TEXTURE_TABLE S; int i; + ifdebug(DMA, D, DebugRegisterUsage(MEM_TEXTURE_TAB, 1, + 2*sizeof(int) + newsize * sizeof(struct pattab_rec))); + S = (TEXTURE_TABLE) malloc(2*sizeof(int) + newsize * sizeof(struct pattab_rec)); + if( S == (TEXTURE_TABLE) NULL ) + Error(42, 1, "ran out of memory when enlarging texture table", + FATAL, no_fpos); + ptab_size(S) = newsize; + ptab_count(S) = 0; + for( i = 0; i < newsize; i++ ) + { ptab_num(S, i) = ptab_name(S, i) = nilobj; + } + return S; +} /* end ptab_new */ + +static void ptab_insert(OBJECT x, TEXTURE_TABLE *S); + +static TEXTURE_TABLE ptab_rehash(TEXTURE_TABLE S, int newsize) +{ TEXTURE_TABLE NewS; int i; + NewS = ptab_new(newsize); + for( i = 1; i <= ptab_count(S); i++ ) + ptab_insert(ptab_num(S, i), &NewS); + for( i = 0; i < ptab_size(S); i++ ) + { if( ptab_name(S, i) != nilobj ) DisposeObject(ptab_name(S, i)); + } + ifdebug(DMA, D, DebugRegisterUsage(MEM_TEXTURE_TAB, -1, + -(2*sizeof(int) + ptab_size(S) * sizeof(struct pattab_rec)))); + free(S); + return NewS; +} /* end ptab_rehash */ + +static void ptab_insert(OBJECT x, TEXTURE_TABLE *S) +{ int pos, num; + if( ptab_count(*S) == ptab_size(*S) - 1 ) /* one less since 0 unused */ + *S = ptab_rehash(*S, 2*ptab_size(*S)); + num = ++ptab_count(*S); + if( num > MAX_TEXTURE ) + Error(42, 2, "too many textures (maximum is %d)", + FATAL, &fpos(x), MAX_TEXTURE); + hash(pos, string(x), *S); + if( ptab_name(*S, pos) == nilobj ) New(ptab_name(*S, pos), ACAT); + Link(ptab_name(*S, pos), x); + word_texture(x) = num; + ptab_num(*S, num) = x; +} /* end ptab_insert */ + +static OBJECT ptab_retrieve(FULL_CHAR *str, TEXTURE_TABLE S) +{ OBJECT x, link, y; int pos; + hash(pos, str, S); + x = ptab_name(S, pos); + if( x == nilobj ) return nilobj; + for( link = Down(x); link != x; link = NextDown(link) ) + { Child(y, link); + if( StringEqual(str, string(y)) ) return y; + } + return nilobj; +} /* end ptab_retrieve */ + +#if DEBUG_ON +static void ptab_debug(TEXTURE_TABLE S, FILE *fp) +{ int i; OBJECT x, link, y; + fprintf(fp, " table size: %d; current number of textures: %d%s", + ptab_size(S), ptab_count(S), STR_NEWLINE); + for( i = 0; i < ptab_size(S); i++ ) + { x = ptab_num(S, i); + fprintf(fp, " ptab_num(S, %d) = %s%s", i, + x == nilobj ? AsciiToFull("") : + is_word(type(x)) ? string(x) : AsciiToFull("not WORD!"), STR_NEWLINE); + } + fprintf(fp, "%s", STR_NEWLINE); + for( i = 0; i < ptab_size(S); i++ ) + { x = ptab_name(S, i); + fprintf(fp, "ptab_name(S, %d) =", i); + if( x == nilobj ) + fprintf(fp, " "); + else if( type(x) != ACAT ) + fprintf(fp, " not ACAT!"); + else for( link = Down(x); link != x; link = NextDown(link) ) + { Child(y, link); + fprintf(fp, " %s", + is_word(type(y)) ? string(y) : AsciiToFull("not-WORD!")); + } + fprintf(fp, STR_NEWLINE); + } +} /* end ptab_debug */ +#endif + + +static TEXTURE_TABLE pat_tab; + +/*****************************************************************************/ +/* */ +/* TextureInit() */ +/* */ +/* Initialize this module. */ +/* */ +/*****************************************************************************/ + +void TextureInit(void) +{ OBJECT cname; + + /* initial texture table is empty */ + pat_tab = ptab_new(INIT_TEXTURE_NUM); + + /* insert "LoutTextureSolid" as texture number 1 */ + cname = MakeWord(WORD, AsciiToFull("LoutTextureSolid"), no_fpos); + ptab_insert(cname, &pat_tab); +} /* end TextureInit */ + + +/*****************************************************************************/ +/* */ +/* TextureChange(style, x) */ +/* */ +/* Change the current style to contain the texture of texture command x. */ +/* */ +/*****************************************************************************/ + +void TextureChange(STYLE *style, OBJECT x) +{ OBJECT cname; + debug2(DTX, D, "TextureChange(%s, %s)", EchoStyle(style), EchoObject(x)); + + /* if argument is not a word, fail and exit */ + if( !is_word(type(x)) ) + { Error(42, 3, "%s ignored (illegal left parameter)", WARN, &fpos(x), + KW_TEXTURE); + debug0(DTX, D, "TextureChange returning (texture unchanged)"); + return; + } + + /* if argument is nochange, do nothing */ + if( StringEqual(string(x), STR_TEXTURE_NOCHANGE) || + StringEqual(string(x), STR_EMPTY) ) + { debug0(DTX, D, "TextureChange returning (texture nochange)"); + return; + } + + /* retrieve texture command if present, else insert it */ + { cname = ptab_retrieve(string(x), pat_tab); + if( cname == nilobj ) + { cname = MakeWord(type(x), string(x), &fpos(x)); + ptab_insert(cname, &pat_tab); + texture(*style) = word_texture(cname); + } + else texture(*style) = word_texture(cname); + } + + debug2(DTX, D, "TextureChange returning %d (texture = %s)", + texture(*style), string(cname)); + ifdebug(DTX, DD, ptab_debug(pat_tab, stderr)); +} /* TextureChange */ + + +/*@::TextureCommand()@********************************************************/ +/* */ +/* FULL_CHAR *TextureCommand(pnum) */ +/* */ +/* Return the PostScript command for producing texture pnum. */ +/* */ +/*****************************************************************************/ + +FULL_CHAR *TextureCommand(TEXTURE_NUM pnum) +{ FULL_CHAR *res; + debug1(DTX, D, "TextureCommand(%d)", pnum); + assert( pnum > 0 && pnum <= ptab_count(pat_tab), "TextureCommand: number" ); + + res = string(ptab_num(pat_tab, pnum)); + + debug1(DTX, D, "TextureCommand returning %s", res); + return res; +} /* end TextureCommand */