aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--README2
-rw-r--r--blurb10
-rw-r--r--doc/design/README2
-rw-r--r--doc/design/outfile.ps327
-rw-r--r--doc/expert/README2
-rw-r--r--doc/expert/all2
-rw-r--r--doc/expert/det_lexi6
-rw-r--r--doc/expert/mydefs2
-rw-r--r--doc/expert/outfile.ps7865
-rw-r--r--doc/expert/pre1
-rw-r--r--doc/expert/pre_link43
-rw-r--r--doc/expert/preface2
-rw-r--r--doc/slides/README2
-rw-r--r--doc/slides/outfile.ps195
-rw-r--r--doc/user/README13
-rw-r--r--doc/user/all2
-rw-r--r--doc/user/bas_par16
-rw-r--r--doc/user/bas_star16
-rw-r--r--doc/user/bgr_boxs4
-rw-r--r--doc/user/bgr_colo6
-rw-r--r--doc/user/dia9
-rw-r--r--doc/user/dia_intr4
-rw-r--r--doc/user/dia_node8
-rw-r--r--doc/user/dia_summ9
-rw-r--r--doc/user/equ_disp6
-rw-r--r--doc/user/preface2
-rw-r--r--doc/user/prg6
-rw-r--r--doc/user/str_cros69
-rw-r--r--doc/user/str_indx25
-rw-r--r--doc/user/str_larg4
-rw-r--r--doc/user/tbl_intr9
-rw-r--r--doc/user/tbl_mult2
-rw-r--r--doc/user/typ_apdf23
-rw-r--r--doc/user/typ_book6
-rw-r--r--doc/user/user.ps7070
-rw-r--r--externs.h330
-rw-r--r--include/book1
-rw-r--r--include/bookf4
-rw-r--r--include/bsf178
-rw-r--r--include/doc1
-rw-r--r--include/dsf256
-rw-r--r--include/picture1
-rw-r--r--include/python109
-rw-r--r--include/pythonf390
-rw-r--r--include/report1
-rw-r--r--include/slides1
-rw-r--r--makefile11
-rw-r--r--prg2lout.c204
-rw-r--r--whatsnew10
-rw-r--r--z01.c5
-rw-r--r--z02.c2
-rw-r--r--z03.c2
-rw-r--r--z04.c4
-rw-r--r--z05.c4
-rw-r--r--z06.c6
-rw-r--r--z07.c54
-rw-r--r--z08.c33
-rw-r--r--z09.c2
-rw-r--r--z10.c26
-rw-r--r--z11.c2
-rw-r--r--z12.c12
-rw-r--r--z13.c4
-rw-r--r--z14.c2
-rw-r--r--z15.c8
-rw-r--r--z16.c4
-rw-r--r--z17.c2
-rw-r--r--z18.c15
-rw-r--r--z19.c9
-rw-r--r--z20.c80
-rw-r--r--z21.c2
-rw-r--r--z22.c144
-rw-r--r--z23.c544
-rw-r--r--z24.c2
-rw-r--r--z25.c42
-rw-r--r--z26.c6
-rw-r--r--z27.c2
-rw-r--r--z28.c2
-rw-r--r--z29.c2
-rw-r--r--z30.c2
-rw-r--r--z31.c6
-rw-r--r--z32.c4
-rw-r--r--z33.c2
-rw-r--r--z34.c2
-rw-r--r--z35.c2
-rw-r--r--z36.c2
-rw-r--r--z37.c13
-rw-r--r--z38.c2
-rw-r--r--z39.c2
-rw-r--r--z40.c2
-rw-r--r--z41.c4
-rw-r--r--z42.c2
-rw-r--r--z43.c2
-rw-r--r--z44.c3
-rw-r--r--z45.c2
-rw-r--r--z46.c2
-rw-r--r--z47.c2
-rw-r--r--z48.c2
-rw-r--r--z49.c299
-rw-r--r--z50.c81
-rw-r--r--z51.c75
100 files changed, 7689 insertions, 11103 deletions
diff --git a/README b/README
index d8e6141..8e224ec 100644
--- a/README
+++ b/README
@@ -1,4 +1,4 @@
-THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.22)
+THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.23)
BASSER LOUT VERSION 3 COPYRIGHT (C) 1994, 2000 Jeffrey H. Kingston
Jeffrey H. Kingston
diff --git a/blurb b/blurb
index 42f758d..67ba795 100644
--- a/blurb
+++ b/blurb
@@ -1,7 +1,7 @@
- THE LOUT DOCUMENT FORMATTING SYSTEM, VERSION 3.22
+ THE LOUT DOCUMENT FORMATTING SYSTEM, VERSION 3.23
-Version 3.22 of the Lout document formatting system is now available
+Version 3.23 of the Lout document formatting system is now available
(free of charge). The system reads a high-level description of a
document similar in style to LaTeX and produces a PostScript, PDF or
plain text output file.
@@ -21,9 +21,9 @@ project that went back to the beginning.
Lout is written in highly portable ANSI C. It is distributed under the
GNU public license as follows:
- ftp://ftp.cs.usyd.edu.au/jeff/lout/lout-3.22.tar.gz
+ ftp://ftp.cs.usyd.edu.au/jeff/lout/lout-3.23.tar.gz
-In other words, in a gzipped tar file called "lout-3.22.tar.gz" in the
+In other words, in a gzipped tar file called "lout-3.23.tar.gz" in the
"jeff/lout" subdirectory of the home directory of "ftp ftp.cs.usyd.edu.au"
with login name "ftp" or "anonymous" using any non-empty password. The
distribution contains
@@ -44,7 +44,7 @@ distribution contains
For those who want to browse first, a PostScript version of the User's
Guide may be found in the same ftp directory:
- ftp://ftp.cs.usyd.edu.au/jeff/lout/lout-3.22.user.ps.gz
+ ftp://ftp.cs.usyd.edu.au/jeff/lout/lout-3.23.user.ps.gz
Lout was designed and implemented by Jeffrey H. Kingston (jeff@cs.usyd.edu.au)
of the Basser Department of Computer Science at the University of Sydney.
diff --git a/doc/design/README b/doc/design/README
index 996bd33..97ad276 100644
--- a/doc/design/README
+++ b/doc/design/README
@@ -22,4 +22,4 @@ messages (although changing the paper size might
produce one or two benign ones).
Jeffrey H. Kingston
-3 June 2000
+24 June 2000
diff --git a/doc/design/outfile.ps b/doc/design/outfile.ps
index 9d26159..4a1a9f4 100644
--- a/doc/design/outfile.ps
+++ b/doc/design/outfile.ps
@@ -1,6 +1,6 @@
%!PS-Adobe-3.0
-%%Creator: Basser Lout Version 3.22 (June 2000)
-%%CreationDate: Sat Jun 3 12:54:58 2000
+%%Creator: Basser Lout Version 3.23 (June 2000)
+%%CreationDate: Sat Jun 24 12:48:29 2000
%%DocumentData: Binary
%%DocumentNeededResources: (atend)
%%DocumentSuppliedResources: (atend)
@@ -1389,6 +1389,7 @@ end
] def
%%EndResource
+/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse
%%EndSetup
%%Page: i 1
@@ -1493,7 +1494,9 @@ grestore
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 240 fnt1 480 8495(Lout)m
+0 8926(1.)m 291(Intr)s 4(oduction)k
+[ /Dest /LOUT16_594_s1_0_1 /DEST pdfmark
+240 fnt1 480 8495(Lout)m
985([1,)s 1284(2])s 1515(is)s 1718(a)s 1877(high-le)s 6(v)k 3(el)k
2885(language)s 3798(for)s 4129(document)s 5126(formatting,)s 6234(designed)s
7136(and)s 7533(implemented)s 8832(by)s 0 8207(the)m 341(author)s 13(.)k
@@ -1633,7 +1636,9 @@ gsave
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 240 fnt1 480 11987(The)m
+240 fnt2 0 12463(2.)m 291(Objects)s
+[ /Dest /LOUT16_594_s2_0_1 /DEST pdfmark
+240 fnt1 480 11987(The)m
923(essence)s 1725(of)s 2011(an)s 3(y)k 2424(mo)s 3(v)k 3(e)k
3021(to)s 3276(a)s 3457(higher)s 4144(le)s 6(v)k 3(el)k
4669(is)s 4895(the)s 5258(introduction)s 6500(of)s 6786(some)s
@@ -1657,7 +1662,9 @@ grestore
3056(and)s 3460(the)s 3808(comple)s 3(x)k 4684(nested)s
5353(structures)s 6332(of)s 6603(equations.)s 240 fnt2 0 9898(2.1.)m
471(The)s 926(genesis)s 1697(of)s 1969(the)s 2343(object)s
-3026(abstraction)s 240 fnt1 480 9421(When)m 1163(one)s 1620(e)s 3(xamines)k
+3026(abstraction)s
+[ /Dest /LOUTgenesis /DEST pdfmark
+240 fnt1 480 9421(When)m 1163(one)s 1620(e)s 3(xamines)k
2626(pre)s 6(vious)k 3549(document)s 4608(formatting)s 5724(systems)s
6587([4])s 6958(looking)s 7798(for)s 8191(ideas)s 8788(for)s
0 9133(abstractions,)m 1245(as)s 1492(the)s 1837(author)s 2505(did)s
@@ -1980,6 +1987,8 @@ grestore
7809(might)s 8431(form)s 8960(a)s 0 5823(more)m 547(uni\207ed)s
1270(basis)s 1799(for)s 2137(these)s 2684(features.)s 240 fnt2
0 5224(2.2.)m 471(Grammatical)s 1893(and)s 2334(lexical)s 3039(structur)s 4(e)k
+
+[ /Dest /LOUTlexical /DEST pdfmark
240 fnt1 480 4792(If)m 700(objects)s 1418(are)s 1755(to)s
1984(be)s 2256(constructed)s 3406(lik)s 2(e)k 3807(mathematical)s
5138(e)s 3(xpressions,)k 6348(the)s 6686(natural)s 7394(notation)s
@@ -2137,7 +2146,9 @@ grestore
2504(mak)s 2(e)k 3076(a)s 3242(more)s 3789(sophisticated)s
5095(linear)s 5698(method)s 6474(lik)s 2(e)k 6886(tries)s
7347(w)s 2(orthwhile.)k 240 fnt2 0 5026(2.3.)m 471(Basic)s
-1073(structural)s 2149(operators)s 240 fnt1 480 4549(A)m 696(programming)s
+1073(structural)s 2149(operators)s
+[ /Dest /LOUTobjects /DEST pdfmark
+240 fnt1 480 4549(A)m 696(programming)s
2036(language)s 2941(may)s 3393(be)s 3660(considered)s 4739(complete)s
5656(when)s 6218(it)s 6395(attains)s 7054(the)s 7388(po)s 6(wer)k
8025(of)s 8281(a)s 8432(T)s 10(uring)k 0 4261(machine,)m
@@ -2229,6 +2240,8 @@ gsave
5769 -1582(-)m 5897(5)s 6063(-)s 9066 13413 0 13413 240 288 60 1417 -15423 LoutGr2
1 LoutMargSet
grestore
+
+[ /Dest /LOUTprimitives /DEST pdfmark
240 fnt4 266 13217(object)m
220 fnt6 974 13212(/)m 240 fnt4 1038 13217(gap)m 1511(object)s
240 fnt1 3816 13215(V)m 26(ertical)k 4613(concatenation)s 5998(with)s
@@ -2766,6 +2779,8 @@ gsave
5768 -1575(-)m 5896(7)s 6064(-)s 9066 13422 0 13422 240 288 60 1417 -15423 LoutGr2
1 LoutMargSet
grestore
+
+[ /Dest /LOUTgapmodes /DEST pdfmark
6693 8221 0 8221 240 288 60 1186 5201 LoutGr2
grestore save gsave 200 dict begin lfigdict begin
grestore
@@ -2831,8 +2846,8 @@ gsave
0 0 translate
30.0000 rotate
gsave
-0 0 translate
-180 fnt1 68 0 0 0 180 288 45 LoutGraphic
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
gsave
0 0 moveto xsize 0 lineto stroke
grestore
@@ -2852,8 +2867,8 @@ gsave
0 0 translate
-30.0000 rotate
gsave
-0 0 translate
-180 fnt1 68 0 0 0 180 288 45 LoutGraphic
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
gsave
0 0 moveto xsize 0 lineto stroke
grestore
@@ -2867,8 +2882,8 @@ gsave
1247 7395 translate
30.0000 rotate
gsave
-0 0 translate
-180 fnt1 68 0 0 0 180 288 45 LoutGraphic
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
gsave
0 0 moveto xsize 0 lineto stroke
grestore
@@ -2888,8 +2903,8 @@ gsave
1247 7395 translate
-30.0000 rotate
gsave
-0 0 translate
-180 fnt1 68 0 0 0 180 288 45 LoutGraphic
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
gsave
0 0 moveto xsize 0 lineto stroke
grestore
@@ -2940,8 +2955,8 @@ gsave
0 0 translate
30.0000 rotate
gsave
-0 0 translate
-180 fnt1 68 0 0 0 180 288 45 LoutGraphic
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
gsave
0 0 moveto xsize 0 lineto stroke
grestore
@@ -2961,8 +2976,8 @@ gsave
0 0 translate
-30.0000 rotate
gsave
-0 0 translate
-180 fnt1 68 0 0 0 180 288 45 LoutGraphic
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
gsave
0 0 moveto xsize 0 lineto stroke
grestore
@@ -2976,8 +2991,8 @@ gsave
1247 6214 translate
30.0000 rotate
gsave
-0 0 translate
-180 fnt1 68 0 0 0 180 288 45 LoutGraphic
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
gsave
0 0 moveto xsize 0 lineto stroke
grestore
@@ -2997,8 +3012,8 @@ gsave
1247 6214 translate
-30.0000 rotate
gsave
-0 0 translate
-180 fnt1 68 0 0 0 180 288 45 LoutGraphic
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
gsave
0 0 moveto xsize 0 lineto stroke
grestore
@@ -3049,8 +3064,8 @@ gsave
0 0 translate
30.0000 rotate
gsave
-0 0 translate
-180 fnt1 68 0 0 0 180 288 45 LoutGraphic
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
gsave
0 0 moveto xsize 0 lineto stroke
grestore
@@ -3070,8 +3085,8 @@ gsave
0 0 translate
-30.0000 rotate
gsave
-0 0 translate
-180 fnt1 68 0 0 0 180 288 45 LoutGraphic
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
gsave
0 0 moveto xsize 0 lineto stroke
grestore
@@ -3085,8 +3100,8 @@ gsave
680 4976 translate
30.0000 rotate
gsave
-0 0 translate
-180 fnt1 68 0 0 0 180 288 45 LoutGraphic
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
gsave
0 0 moveto xsize 0 lineto stroke
grestore
@@ -3106,8 +3121,8 @@ gsave
680 4976 translate
-30.0000 rotate
gsave
-0 0 translate
-180 fnt1 68 0 0 0 180 288 45 LoutGraphic
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
gsave
0 0 moveto xsize 0 lineto stroke
grestore
@@ -3159,8 +3174,8 @@ gsave
0 0 translate
30.0000 rotate
gsave
-0 0 translate
-180 fnt1 68 0 0 0 180 288 45 LoutGraphic
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
gsave
0 0 moveto xsize 0 lineto stroke
grestore
@@ -3180,8 +3195,8 @@ gsave
0 0 translate
-30.0000 rotate
gsave
-0 0 translate
-180 fnt1 68 0 0 0 180 288 45 LoutGraphic
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
gsave
0 0 moveto xsize 0 lineto stroke
grestore
@@ -3195,8 +3210,8 @@ gsave
680 3739 translate
30.0000 rotate
gsave
-0 0 translate
-180 fnt1 68 0 0 0 180 288 45 LoutGraphic
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
gsave
0 0 moveto xsize 0 lineto stroke
grestore
@@ -3216,8 +3231,8 @@ gsave
680 3739 translate
-30.0000 rotate
gsave
-0 0 translate
-180 fnt1 68 0 0 0 180 288 45 LoutGraphic
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
gsave
0 0 moveto xsize 0 lineto stroke
grestore
@@ -3235,8 +3250,8 @@ gsave
0 0 translate
30.0000 rotate
gsave
-0 0 translate
-180 fnt1 68 0 0 0 180 288 45 LoutGraphic
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
gsave
0 0 moveto xsize 0 lineto stroke
grestore
@@ -3256,8 +3271,8 @@ gsave
0 0 translate
-30.0000 rotate
gsave
-0 0 translate
-180 fnt1 68 0 0 0 180 288 45 LoutGraphic
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
gsave
0 0 moveto xsize 0 lineto stroke
grestore
@@ -3271,8 +3286,8 @@ gsave
680 4363 translate
30.0000 rotate
gsave
-0 0 translate
-180 fnt1 68 0 0 0 180 288 45 LoutGraphic
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
gsave
0 0 moveto xsize 0 lineto stroke
grestore
@@ -3292,8 +3307,8 @@ gsave
680 4363 translate
-30.0000 rotate
gsave
-0 0 translate
-180 fnt1 68 0 0 0 180 288 45 LoutGraphic
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
gsave
0 0 moveto xsize 0 lineto stroke
grestore
@@ -3308,8 +3323,8 @@ gsave
0 0 translate
30.0000 rotate
gsave
-0 0 translate
-180 fnt1 68 0 0 0 180 288 45 LoutGraphic
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
gsave
0 0 moveto xsize 0 lineto stroke
grestore
@@ -3329,8 +3344,8 @@ gsave
0 0 translate
-30.0000 rotate
gsave
-0 0 translate
-180 fnt1 68 0 0 0 180 288 45 LoutGraphic
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
gsave
0 0 moveto xsize 0 lineto stroke
grestore
@@ -3344,8 +3359,8 @@ gsave
2268 4363 translate
30.0000 rotate
gsave
-0 0 translate
-180 fnt1 68 0 0 0 180 288 45 LoutGraphic
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
gsave
0 0 moveto xsize 0 lineto stroke
grestore
@@ -3365,8 +3380,8 @@ gsave
2268 4363 translate
-30.0000 rotate
gsave
-0 0 translate
-180 fnt1 68 0 0 0 180 288 45 LoutGraphic
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
gsave
0 0 moveto xsize 0 lineto stroke
grestore
@@ -3417,8 +3432,8 @@ gsave
0 0 translate
30.0000 rotate
gsave
-0 0 translate
-180 fnt1 68 0 0 0 180 288 45 LoutGraphic
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
gsave
0 0 moveto xsize 0 lineto stroke
grestore
@@ -3438,8 +3453,8 @@ gsave
0 0 translate
-30.0000 rotate
gsave
-0 0 translate
-180 fnt1 68 0 0 0 180 288 45 LoutGraphic
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
gsave
0 0 moveto xsize 0 lineto stroke
grestore
@@ -3453,8 +3468,8 @@ gsave
680 2443 translate
30.0000 rotate
gsave
-0 0 translate
-180 fnt1 68 0 0 0 180 288 45 LoutGraphic
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
gsave
0 0 moveto xsize 0 lineto stroke
grestore
@@ -3474,8 +3489,8 @@ gsave
680 2443 translate
-30.0000 rotate
gsave
-0 0 translate
-180 fnt1 68 0 0 0 180 288 45 LoutGraphic
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
gsave
0 0 moveto xsize 0 lineto stroke
grestore
@@ -3494,8 +3509,8 @@ gsave
0 0 translate
30.0000 rotate
gsave
-0 0 translate
-180 fnt1 68 0 0 0 180 288 45 LoutGraphic
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
gsave
0 0 moveto xsize 0 lineto stroke
grestore
@@ -3515,8 +3530,8 @@ gsave
0 0 translate
-30.0000 rotate
gsave
-0 0 translate
-180 fnt1 68 0 0 0 180 288 45 LoutGraphic
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
gsave
0 0 moveto xsize 0 lineto stroke
grestore
@@ -3530,8 +3545,8 @@ gsave
680 3067 translate
30.0000 rotate
gsave
-0 0 translate
-180 fnt1 68 0 0 0 180 288 45 LoutGraphic
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
gsave
0 0 moveto xsize 0 lineto stroke
grestore
@@ -3551,8 +3566,8 @@ gsave
680 3067 translate
-30.0000 rotate
gsave
-0 0 translate
-180 fnt1 68 0 0 0 180 288 45 LoutGraphic
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
gsave
0 0 moveto xsize 0 lineto stroke
grestore
@@ -3567,8 +3582,8 @@ gsave
0 0 translate
30.0000 rotate
gsave
-0 0 translate
-180 fnt1 68 0 0 0 180 288 45 LoutGraphic
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
gsave
0 0 moveto xsize 0 lineto stroke
grestore
@@ -3588,8 +3603,8 @@ gsave
0 0 translate
-30.0000 rotate
gsave
-0 0 translate
-180 fnt1 68 0 0 0 180 288 45 LoutGraphic
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
gsave
0 0 moveto xsize 0 lineto stroke
grestore
@@ -3603,8 +3618,8 @@ gsave
2268 3067 translate
30.0000 rotate
gsave
-0 0 translate
-180 fnt1 68 0 0 0 180 288 45 LoutGraphic
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
gsave
0 0 moveto xsize 0 lineto stroke
grestore
@@ -3624,8 +3639,8 @@ gsave
2268 3067 translate
-30.0000 rotate
gsave
-0 0 translate
-180 fnt1 68 0 0 0 180 288 45 LoutGraphic
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
gsave
0 0 moveto xsize 0 lineto stroke
grestore
@@ -3676,8 +3691,8 @@ gsave
0 0 translate
30.0000 rotate
gsave
-0 0 translate
-180 fnt1 68 0 0 0 180 288 45 LoutGraphic
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
gsave
0 0 moveto xsize 0 lineto stroke
grestore
@@ -3697,8 +3712,8 @@ gsave
0 0 translate
-30.0000 rotate
gsave
-0 0 translate
-180 fnt1 68 0 0 0 180 288 45 LoutGraphic
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
gsave
0 0 moveto xsize 0 lineto stroke
grestore
@@ -3712,8 +3727,8 @@ gsave
0 1234 translate
30.0000 rotate
gsave
-0 0 translate
-180 fnt1 68 0 0 0 180 288 45 LoutGraphic
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
gsave
0 0 moveto xsize 0 lineto stroke
grestore
@@ -3733,8 +3748,8 @@ gsave
0 1234 translate
-30.0000 rotate
gsave
-0 0 translate
-180 fnt1 68 0 0 0 180 288 45 LoutGraphic
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
gsave
0 0 moveto xsize 0 lineto stroke
grestore
@@ -3749,8 +3764,8 @@ gsave
0 0 translate
30.0000 rotate
gsave
-0 0 translate
-180 fnt1 68 0 0 0 180 288 45 LoutGraphic
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
gsave
0 0 moveto xsize 0 lineto stroke
grestore
@@ -3770,8 +3785,8 @@ gsave
0 0 translate
-30.0000 rotate
gsave
-0 0 translate
-180 fnt1 68 0 0 0 180 288 45 LoutGraphic
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
gsave
0 0 moveto xsize 0 lineto stroke
grestore
@@ -3785,8 +3800,8 @@ gsave
0 734 translate
30.0000 rotate
gsave
-0 0 translate
-180 fnt1 68 0 0 0 180 288 45 LoutGraphic
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
gsave
0 0 moveto xsize 0 lineto stroke
grestore
@@ -3806,8 +3821,8 @@ gsave
0 734 translate
-30.0000 rotate
gsave
-0 0 translate
-180 fnt1 68 0 0 0 180 288 45 LoutGraphic
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
gsave
0 0 moveto xsize 0 lineto stroke
grestore
@@ -3958,6 +3973,8 @@ grestore
220 fnt6 8604 7385(//1vx)m 240 fnt1 0 7100(during)m 678(paragraph)s
1691(breaking)s 2581(\(Section)s 3434(2.5\).)s 240 fnt2 0 6451(2.4.)m
471(Implementation)s 2159(of)s 2431(objects)s 3201(and)s 3642(concatenation)s
+
+[ /Dest /LOUTobjects_impl /DEST pdfmark
240 fnt1 480 5974(In)m 738(this)s 1136(section)s 1872(we)s
2210(discuss)s 2954(the)s 3304(implementation)s 4863(of)s 5137(objects)s
5867(and)s 6273(concatenation,)s 7710(and)s 8117(especially)s 0 5686(mark)m
@@ -6479,17 +6496,23 @@ grestore
240 fnt4 1991 3918(width)m 240 fnt5 2530 3910(\()m 240 fnt4
2662 3918(f)m 240 fnt5 2823 3910(\))m 2973(\255)s 240 fnt4
3194 3918(width)m 240 fnt5 3733 3910(\()m 240 fnt4 3817 3918(i)m
-240 fnt5 3892 3910(\))m 240 fnt4 480 3367(y)m 240 fnt5
+240 fnt5 3892 3910(\))m
+[ /Dest /LOUT12_1492_s2_4_1 /DEST pdfmark
+240 fnt4 480 3367(y)m 240 fnt5
666 3359(=)m 240 fnt4 879 3367(width)m 240 fnt5 1418 3359(\()m
240 fnt4 1502 3367(d)m 240 fnt5 1688 3359(\))m 1838(\255)s
240 fnt4 2059 3367(width)m 240 fnt5 2598 3359(\()m 240 fnt4
-2682 3367(g)m 240 fnt5 2808 3359(\))m 240 fnt4 480 2816(z)m
+2682 3367(g)m 240 fnt5 2808 3359(\))m
+[ /Dest /LOUT12_1492_s2_4_2 /DEST pdfmark
+240 fnt4 480 2816(z)m
240 fnt5 655 2808(=)m 240 fnt4 868 2816(width)m 240 fnt5
1407 2808(\()m 240 fnt4 1491 2816(b)m 240 fnt5 1617 2808(\))m
1767(\255)s 240 fnt4 1988 2816(width)m 240 fnt5 2527 2808(\()m
240 fnt4 2611 2816(e)m 240 fnt5 2722 2808(\))m 2872(\255)s
240 fnt4 3093 2816(width)m 240 fnt5 3632 2808(\()m 240 fnt4
-3716 2816(h)m 240 fnt5 3843 2808(\))m 240 fnt1 0 2312(It)m
+3716 2816(h)m 240 fnt5 3843 2808(\))m
+[ /Dest /LOUT12_1492_s2_4_3 /DEST pdfmark
+240 fnt1 0 2312(It)m
224(seems)s 878(clear)s 1420(that)s 240 fnt4 1857 2314(y)m
240 fnt1 2038 2312(at)m 2289(least)s 2805(must)s 3349(appear)s
4065(twice)s 4657(in)s 4919(an)s 3(y)k 5335(e)s 3(xpression)k
@@ -7211,7 +7234,9 @@ grestore
1970(reclaimed)s 2969(after)s 3465(printing)s 4275(each)s 4770(page)s
5278(there)s 5811(is)s 6021(little)s 6513(need.)s 240 fnt2
0 1781(2.5.)m 471(Context-sensiti)s 2(v)k 2(e)k 2274(attrib)s 4(utes)k
-3318(of)s 3590(objects)s 240 fnt1 480 1305(Although)m 1466(we)s
+3318(of)s 3590(objects)s
+[ /Dest /LOUTstyle /DEST pdfmark
+240 fnt1 480 1305(Although)m 1466(we)s
1826(are)s 2198(free)s 2649(to)s 2913(place)s 3498(an)s 3(y)k
3920(object)s 4588(in)s 4856(an)s 3(y)k 5278(conte)s 3(xt,)k
6111(the)s 6484(conte)s 3(xt)k 7270(must)s 7820(in\210uence)s
@@ -7455,6 +7480,8 @@ grestore
2912(in)s 3155(Section)s 3929(5.5,)s 4336(b)s 4(ut,)k
4745(re)s 3(grettably)k 15(,)k 5868(it)s 6060(is)s
6270(not)s 6636(implemented.)s 240 fnt2 0 7547(3.)m 291(De\207nitions)s
+
+[ /Dest /LOUT16_594_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
@@ -7467,7 +7494,9 @@ grestore
5874(of)s 6145(users)s 6686(are)s 7033(not)s 7398(programmers)s
8722(and)s 0 6252(do)m 293(not)s 659(understand)s 1767(the)s
2115(code)s 2623(the)s 3(y)k 3086(in)s 9(v)k 4(ok)k 2(e.)k
-240 fnt2 0 5603(3.1.)m 471(Operators)s 240 fnt1 480 5126(It)m
+240 fnt2 0 5603(3.1.)m 471(Operators)s
+[ /Dest /LOUToperators /DEST pdfmark
+240 fnt1 480 5126(It)m
680(is)s 885(e)s 6(vident)k 1637(from)s 2156(the)s
2498(e)s 3(xample)k 3356(of)s 3621(Eqn)s 4059(that)s
4471(user)s 4(-de\207ned)k 5702(operators)s 6636(are)s 6978(needed)s
@@ -7660,6 +7689,8 @@ grestore
4341(not)s 4707(to)s 4946(intimidate)s 5970(the)s 6318(non-)s
6746(e)s 3(xpert)k 7400(user)s 13(.)k 240 fnt2
0 1222(3.2.)m 471(Recursion)s 1563(and)s 2004(page)s 2539(lay)s 6(out)k
+
+[ /Dest /LOUTrecursion /DEST pdfmark
240 fnt1 480 745(Design)m 1302(and)s 1794(implementation)s 3439(should)s
4223(proceed)s 5126(together)s 6057(in)s 6387(e)s 3(xploratory)k
7628(projects,)s 8579(since)s 0 457(otherwise)m 988(the)s 1340(design)s
@@ -7916,7 +7947,9 @@ grestore
5147(method)s 5916(of)s 6179(specifying)s 7220(the)s 7561(layout)s
8211(of)s 8474(pages,)s 0 11727(which)m 642(requires)s 1462(no)s
1755(specialized)s 2874(language)s 3794(features.)s 240 fnt2 0 11079(3.3.)m
-471(Modules)s 240 fnt1 480 10648(It)m 679(is)s 882(well)s
+471(Modules)s
+[ /Dest /LOUTmodules /DEST pdfmark
+240 fnt1 480 10648(It)m 679(is)s 882(well)s
1342(accepted)s 2229(that)s 2641(the)s 2982(visibility)s 3879(of)s
4143(symbols)s 4986(is)s 5189(not)s 5549(adequately)s 6632(controlled)s
7653(by)s 7940(Algol)s 8533(block)s 0 10360(structure.)m 999(The)s
@@ -8181,7 +8214,9 @@ grestore
8197(using)s 8778(the)s 0 3368(resources)m 953(of)s 1224(more)s
1771(than)s 2240(one)s 2642(of)s 2913(the)s 3261(standard)s
4129(packages.)s 240 fnt2 0 2719(3.4.)m 471(Implementation)s 2159(of)s
-2431(de\207nitions)s 240 fnt1 480 2242(Input)m 1089(is)s 1343(processed)s
+2431(de\207nitions)s
+[ /Dest /LOUTdefs_impl /DEST pdfmark
+240 fnt1 480 2242(Input)m 1089(is)s 1343(processed)s
2388(by)s 2726(a)s 2936(h)s 1(ybrid)k 3663(parser)s
4350(which)s 5036(emplo)s 2(ys)k 5940(operator)s 6840(precedence)s
8015(for)s 8398(objects)s 0 1954(and)m 433(simple)s 1156(recursi)s 6(v)k 3(e)k
@@ -8330,7 +8365,9 @@ grestore
2162(with)s 2644(en)s 9(vironments)k 3988(are)s 4335(written)s
5068(to)s 5307(auxiliary)s 6210(\207les)s 6659(\(Section)s 7512(6.1\).)s
240 fnt2 0 6157(4.)m 291(Implementation)s 1979(of)s 2251(the)s
-2625(functional)s 3715(subset)s 240 fnt1 480 5680(The)m 941(objects)s
+2625(functional)s 3715(subset)s
+[ /Dest /LOUTfunctional /DEST pdfmark
+240 fnt1 480 5680(The)m 941(objects)s
1702(and)s 2139(de\207nitions)s 3233(of)s 3537(Lout)s 4082(are)s
4462(v)s 3(ery)k 4971(similar)s 5726(to)s 5998(those)s
6592(found)s 7242(in)s 7518(other)s 8102(functional)s 0 5392(languages,)m
@@ -8475,7 +8512,9 @@ grestore
5254(in)s 5529(the)s 5909(w)s 2(ay)k 6393(of)s
6696(the)s 7076(mer)s 4(ging)k 7954(of)s 8257(passes)s
8952(2)s 0 9082(and)m 404(3.)s 240 fnt2 0 8338(5.)m
-291(Galleys)s 240 fnt1 480 7861(W)m 9(ith)k 1022(objects)s
+291(Galleys)s
+[ /Dest /LOUT16_594_s5_0_1 /DEST pdfmark
+240 fnt1 480 7861(W)m 9(ith)k 1022(objects)s
1767(and)s 2188(de\207nitions)s 3266(under)s 3888(control,)s 4689(the)s
5053(author)s 5741(f)s 2(aced)k 6331(the)s 6696(problem)s
7570(of)s 7858(getting)s 8592(body)s 0 7573(te)m 3(xt,)k
@@ -8489,7 +8528,9 @@ grestore
2088(approximately)s 3538(as)s 3803(described)s 4793(in)s 5051(Section)s
5840(5.1;)s 6268(the)s 6631(implementation)s 8204(occupied)s 0 6709(the)m
348(years)s 903(1987-89.)s 240 fnt2 0 6060(5.1.)m 471(The)s
-926(galley)s 1580(abstraction)s 240 fnt1 480 5583(Let)m 870(us)s
+926(galley)s 1580(abstraction)s
+[ /Dest /LOUTgalleys /DEST pdfmark
+240 fnt1 480 5583(Let)m 870(us)s
1147(tak)s 2(e)k 1611(the)s 1972(footnote)s 2838(as)s
3100(a)s 3279(representati)s 6(v)k 3(e)k 4677(e)s 3(xample.)k
5661(At)s 5973(some)s 6546(point)s 7111(in)s 7366(the)s
@@ -8578,6 +8619,8 @@ gsave
5710 -1579(-)m 5838(23)s 6122(-)s 9066 13416 0 13416 240 288 60 1417 -15423 LoutGr2
1 LoutMargSet
grestore
+
+[ /Dest /LOUTcomponents /DEST pdfmark
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
@@ -9058,7 +9101,9 @@ grestore
2717(this)s 3113(feature.)s 3939(Its)s 4228(implementation)s 5785(will)s
6211(be)s 6493(discussed)s 7468(in)s 7711(Section)s 8485(6.2.)s
240 fnt2 0 1476(5.2.)m 471(The)s 926(galley)s 1580(\210ushing)s
-2447(algorithm)s 240 fnt1 480 999(Galle)m 3(y)k 1177(components)s
+2447(algorithm)s
+[ /Dest /LOUTflushing /DEST pdfmark
+240 fnt1 480 999(Galle)m 3(y)k 1177(components)s
2395(are)s 2751(promoted)s 3736(one)s 4148(by)s 4451(one)s
4863(into)s 5298(the)s 5655(point)s 6217(of)s 6498(appearance)s
7638(in)s 7891(the)s 8249(dynamic)s 0 711(parent)m 672(g)s 1(alle)k 3(y)k 15(,)k
@@ -10559,7 +10604,9 @@ grestore
3125(each)s 3620(page)s 4128(is)s 4338(be)s 3(gun,)k
5028(has)s 5398(the)s 5746(adv)s 6(antage)k 6766(in)s
7009(this)s 7405(respect.)s 240 fnt2 0 7822(5.3.)m 471(Size)s
-938(constraints)s 2120(and)s 2561(size)s 2988(adjustments)s 240 fnt1
+938(constraints)s 2120(and)s 2561(size)s 2988(adjustments)s
+[ /Dest /LOUTconstraints /DEST pdfmark
+240 fnt1
480 7346(The)m 893(g)s 1(alle)k 3(y)k 1512(\210ushing)s
2321(algorithm)s 3295(needs)s 3876(to)s 4099(kno)s 6(w)k
4665(the)s 4998(a)s 4(v)k 6(ailable)k 5890(width)s
@@ -10898,7 +10945,9 @@ grestore
4153(other)s 4704(g)s 1(alle)k 3(y)k 15(,)k
5376(b)s 4(ut)k 5738(not)s 6104(after)s 6600(e)s 6(v)k 3(ery)k
7176(component.)s 240 fnt2 0 3391(5.4.)m 471(The)s 926(limited)s
-1696(lookahead)s 2802(pr)s 4(oblem)k 240 fnt1 480 2914(Basser)m
+1696(lookahead)s 2802(pr)s 4(oblem)k
+[ /Dest /LOUTlookahead /DEST pdfmark
+240 fnt1 480 2914(Basser)m
1189(Lout)s 1714(assumes)s 2575(that)s 3006(there)s 3552(will)s
3991(be)s 4286(enough)s 5062(internal)s 5859(memory)s 6723(to)s
6975(hold)s 7472(the)s 7833(symbol)s 8606(table)s 0 2626(plus)m
@@ -11181,7 +11230,9 @@ grestore
4686(and)s 5090(an)s 3(y)k 5487(g)s 1(alle)k 3(ys)k
6211(for)s 6549(it)s 6741(are)s 7088(read)s 7557(in)s
7800(and)s 8204(\210ushed.)s 240 fnt2 0 10502(5.5.)m 471(Horizontal)s
-1628(galleys)s 240 fnt1 480 10025(There)m 1108(is)s 1333(a)s
+1628(galleys)s
+[ /Dest /LOUThorizontal /DEST pdfmark
+240 fnt1 480 10025(There)m 1108(is)s 1333(a)s
1514(strong)s 2180(analogy)s 3007(between)s 3876(breaking)s 4781(a)s
4962(column)s 5752(of)s 6038(te)s 3(xt)k 6468(into)s
6908(page-sized)s 8003(pieces,)s 8722(and)s 0 9737(breaking)m 912(a)s
@@ -11433,6 +11484,8 @@ gsave
grestore
240 fnt2 0 12672(6.)m
291(Cr)s 4(oss)k 926(r)s 4(efer)k 4(ences)k
+
+[ /Dest /LOUT16_594_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
@@ -11462,7 +11515,9 @@ grestore
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 240 fnt1 480 8770(In)m 736(de)s 6(v)k 3(eloping)k
+2496(abstraction)s
+[ /Dest /LOUTcross /DEST pdfmark
+240 fnt1 480 8770(In)m 736(de)s 6(v)k 3(eloping)k
1844(the)s 2192(cross)s 2734(reference)s 3677(abstraction,)s 4832(it)s
5024(seemed)s 5799(best)s 6244(to)s 6483(be)s 3(gin)k
7069(with)s 7551(the)s 7899(database)s 8779(ap)s 8998(-)s
@@ -11639,7 +11694,9 @@ grestore
2014(cross)s 2556(references)s 3587(do)s 3880(appear)s 4577(naturally)s 15(,)k
5518(and)s 5922(it)s 6114(w)s 2(orks.)k 240 fnt2
0 1875(6.2.)m 471(Implementation)s 2159(of)s 2431(cr)s 4(oss)k
-2999(r)s 4(efer)k 4(ences)k 240 fnt1 480 1398(Before)m
+2999(r)s 4(efer)k 4(ences)k
+[ /Dest /LOUTcross_impl /DEST pdfmark
+240 fnt1 480 1398(Before)m
1185(an)s 1466(object)s 2109(can)s 2496(be)s 2777(sized)s
3324(and)s 3727(printed,)s 4509(the)s 4855(v)s 6(alues)k
5510(of)s 5779(an)s 3(y)k 6175(cross)s 6715(references)s
@@ -11907,7 +11964,9 @@ gsave
0 LoutMargSet
grestore
0 13253(more)m 547(is)s
-757(required.)s 240 fnt2 0 12460(7.)m 291(Conclusion)s 240 fnt1
+757(required.)s 240 fnt2 0 12460(7.)m 291(Conclusion)s
+[ /Dest /LOUT16_594_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
@@ -12085,13 +12144,17 @@ grestore
7216(408)s 7659(\(1991\))s 8286(,)s 8429(Basser)s 480 12219(Department)m
1668(of)s 1939(Computer)s 2956(Science,)s 3806(The)s 4234(Uni)s 6(v)k 3(ersity)k
5288(of)s 5559(Sydne)s 3(y)k 15(,)k 6367(Australia)s
-7242(.)s 0 11716(2.)m 480(Kingston,)s 1492(Jef)s 6(fre)k 3(y)k
+7242(.)s
+[ /Dest /LOUT12_1492_s7_0_1 /DEST pdfmark
+0 11716(2.)m 480(Kingston,)s 1492(Jef)s 6(fre)k 3(y)k
2227(H..)s 2652(A)s 2910(ne)s 6(w)k 3385(approach)s
4347(to)s 4613(document)s 5645(formatting)s 6646(.)s 6838(T)s 16(ech.)k
7432(Rep.)s 7950(412)s 8392(\(1991\))s 9019(,)s 480 11428(Basser)m
1177(Department)s 2365(of)s 2636(Computer)s 3653(Science,)s 4503(The)s
4931(Uni)s 6(v)k 3(ersity)k 5985(of)s 6256(Sydne)s 3(y)k 15(,)k
-7064(Australia)s 7939(.)s 0 10925(3.)m 480(Kingston,)s 1491(Jef)s 6(fre)k 3(y)k
+7064(Australia)s 7939(.)s
+[ /Dest /LOUT12_1492_s7_0_2 /DEST pdfmark
+0 10925(3.)m 480(Kingston,)s 1491(Jef)s 6(fre)k 3(y)k
2224(H..)s 2647(The)s 3101(Basser)s 3824(Lout)s 4362(Document)s
5445(F)s 3(ormatter)k 6383(,)s 6516(1991)s 6971(.)s
7161(Computer)s 8204(program;)s 480 10637(V)m 26(ersion)k 1287(2)s
@@ -12105,18 +12168,24 @@ grestore
7912(via)s 8297(email)s 8916(is)s 480 10061(a)m 4(v)k 6(ailable)k
1388(for)s 1726(non-)s 240 fnt4 2154 10063(ftp)m 240 fnt1
2459 10061(sites.)m 3047(All)s 3407(enquiries)s 4334(to)s 4573(jef)s 6(f@cs.su.oz.au.)k
+
+[ /Dest /LOUT12_1492_s7_0_3 /DEST pdfmark
0 9558(4.)m 480(Furuta,)s 1211(Richard,)s 2075(Sco\207eld,)s 2965(Jef)s 6(fre)k 3(y)k 15(,)k
3710(and)s 4113(Sha)s 3(w)k 15(,)k 4734(Alan.)s
5363(Document)s 6419(formatting)s 7480(systems:)s 8402(surv)s 3(e)k 3(y)k 15(,)k
480 9270(concepts,)m 1424(and)s 1828(issues)s 2390(.)s 240 fnt4
2554 9272(Computing)m 3673(Surve)s 7(ys)k 240 fnt2 4465 9269(14)m
240 fnt1 4699 9270(,)m 4806(417\211472)s 5700(\(1982\))s 6327(.)s
+
+[ /Dest /LOUT12_1492_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 fnt4 480 8479(Communications)m 2158(of)s 2439(the)s
2784(A)s 7(CM)k 240 fnt2 3351 8476(18)m 240 fnt1
-3585 8477(,)m 3692(182\211193)s 4576(\(1975\))s 5203(.)s 0 7977(6.)m
+3585 8477(,)m 3692(182\211193)s 4576(\(1975\))s 5203(.)s
+[ /Dest /LOUT12_1492_s7_0_5 /DEST pdfmark
+0 7977(6.)m
480(Kingston,)s 1488(Jef)s 6(fre)k 3(y)k 2218(H..)s
2638(Fig)s 3033(\211)s 3236(a)s 3425(Lout)s 3961(package)s
4824(for)s 5185(dra)s 3(wing)k 6042(\207gures)s 6684(.)s
@@ -12124,7 +12193,9 @@ grestore
9019(,)s 480 7689(Basser)m 1177(Department)s 2365(of)s 2636(Computer)s
3653(Science,)s 4503(The)s 4931(Uni)s 6(v)k 3(ersity)k
5985(of)s 6256(Sydne)s 3(y)k 15(,)k 7064(Australia)s
-7939(.)s 0 7184(7.)m 480(Reid,)s 1042(Brian)s 1633(K..)s
+7939(.)s
+[ /Dest /LOUT12_1492_s7_0_6 /DEST pdfmark
+0 7184(7.)m 480(Reid,)s 1042(Brian)s 1633(K..)s
2033(A)s 2266(High-)s 2813(Le)s 6(v)k 3(el)k
3406(Approach)s 4410(to)s 4652(Computer)s 5672(Document)s 6732(Production)s
7779(.)s 7946(In)s 240 fnt4 8205 7186(Pr)m 10(oceed)k
@@ -12134,15 +12205,21 @@ grestore
6421(Langua)s 2(g)k 2(es)k 7526(\(POPL\),)s 8376(Las)s
8779(V)s 26(e)k 240 fnt1 8998 6896(-)m 240 fnt4
480 6610(gas)m 868(NV)s 240 fnt1 1192 6608(,)m 1299(pages)s
-1895(24\21131)s 2470(,)s 2577(1980)s 3052(.)s 0 6103(8.)m
+1895(24\21131)s 2470(,)s 2577(1980)s 3052(.)s
+[ /Dest /LOUT12_1492_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 0 5310(9.)m 480(Knuth,)s 1186(Donald)s
+2051(07974)s 2645(.)s
+[ /Dest /LOUT12_1492_s7_0_8 /DEST pdfmark
+0 5310(9.)m 480(Knuth,)s 1186(Donald)s
1949(E..)s 240 fnt4 2319 5312(The)m 2731(T)s 2882 5264(E)m
3033 5312(XBook)m 240 fnt1 3675 5310(.)m 3839(Addison-W)s 19(esle)k 3(y)k
-5419(,)s 5526(1984)s 6000(.)s 0 4807(10.)m 480(Kingston,)s
+5419(,)s 5526(1984)s 6000(.)s
+[ /Dest /LOUT12_1492_s7_0_9 /DEST pdfmark
+0 4807(10.)m 480(Kingston,)s
1485(Jef)s 6(fre)k 3(y)k 2212(H..)s 2629(Eq)s
2973(\211)s 3173(a)s 3359(Lout)s 3892(package)s 4752(for)s
5110(typesetting)s 6232(mathematics)s 7430(.)s 7614(T)s 16(ech.)k
@@ -12151,25 +12228,33 @@ grestore
5909(Uni)s 6(v)k 3(ersity)k 6998(of)s 7304(Sydne)s 3(y)k 15(,)k
8147(Australia)s 9022(.)s 480 4231(\(Contains)m 1461(an)s 1744(appendix)s
2677(describing)s 3726(the)s 4074(P)s 3(as)k 4454(P)s 3(ascal)k
-5116(formatter)s 13(.\))k 0 3728(11.)m 480(Kingston,)s 1478(Jef)s 6(fre)k 3(y)k
+5116(formatter)s 13(.\))k
+[ /Dest /LOUT12_1492_s7_0_10 /DEST pdfmark
+0 3728(11.)m 480(Kingston,)s 1478(Jef)s 6(fre)k 3(y)k
2198(H..)s 2608(A)s 2851(be)s 3(ginners')k 3903(guide)s
4504(to)s 4756(Lout)s 5208(.)s 5385(T)s 16(ech.)k
5964(Rep.)s 6467(409)s 6891(\(1991\))s 7518(,)s 7638(Basser)s
8348(Depart)s 8998(-)s 480 3440(ment)m 1018(of)s 1289(Computer)s
2306(Science,)s 3156(The)s 3584(Uni)s 6(v)k 3(ersity)k
4638(of)s 4909(Sydne)s 3(y)k 15(,)k 5717(Australia)s
-6592(.)s 0 2937(12.)m 480(Kingston,)s 1475(Jef)s 6(fre)k 3(y)k
+6592(.)s
+[ /Dest /LOUT12_1492_s7_0_11 /DEST pdfmark
+0 2937(12.)m 480(Kingston,)s 1475(Jef)s 6(fre)k 3(y)k
2193(H..)s 2600(T)s 19(ab)k 3017(\211)s 3207(a)s
3384(Lout)s 3907(package)s 4757(for)s 5106(formatting)s 6177(tables)s
6725(.)s 6900(T)s 16(ech.)k 7476(Rep.)s 7977(413)s
8392(\(1991\))s 9019(,)s 480 2649(Basser)m 1177(Department)s 2365(of)s
2636(Computer)s 3653(Science,)s 4503(The)s 4931(Uni)s 6(v)k 3(ersity)k
5985(of)s 6256(Sydne)s 3(y)k 15(,)k 7064(Australia)s
-7939(.)s 0 2146(13.)m 480(Brooks,)s 1279(K)s 6(enneth)k
+7939(.)s
+[ /Dest /LOUT12_1492_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 fnt4 5908 2148(IEEE)m
6490(Computer)s 240 fnt1 7453 2146(,)m 7560(7\21119)s 8091(\(1991\))s
8718(.)s
+[ /Dest /LOUT12_1492_s7_0_13 /DEST pdfmark
+
grestore
0 0 0 0 240 288 60 1417 -15423 LoutGr2
1 LoutMargSet
diff --git a/doc/expert/README b/doc/expert/README
index 43c611c..ca5c6c7 100644
--- a/doc/expert/README
+++ b/doc/expert/README
@@ -16,4 +16,4 @@ copy of the final outfile.ps is included. There
should be no warning messages on the fifth run.
Jeffrey H. Kingston
-3 June 2000
+24 June 2000
diff --git a/doc/expert/all b/doc/expert/all
index 7daf713..2b94cb9 100644
--- a/doc/expert/all
+++ b/doc/expert/all
@@ -10,7 +10,7 @@ Lout
Document Formatting System }
@Author { Jeffrey H. Kingston }
- @Edition { Version 3.22
+ @Edition { Version 3.23
June, 2000 }
@Publisher { @I { @CopyRight Copyright 1991, 2000, Jeffrey
H. Kingston, Basser Department of Computer Science, The University
diff --git a/doc/expert/det_lexi b/doc/expert/det_lexi
index d488917..b50c14f 100644
--- a/doc/expert/det_lexi
+++ b/doc/expert/det_lexi
@@ -135,6 +135,8 @@ do so. The complete list of predefined identifiers is
@JL "@LInput"
@JL "@LVis"
@JL "@LUse"
+ @JL "@LinkSource"
+ @JL "@LinkDest"
@JL "@Meld"
@JL "@Merge"
@JL "@Minus"
@@ -153,9 +155,9 @@ do so. The complete list of predefined identifiers is
@JL "@PlainGraphic"
@JL "@Plus"
@JL "@PrependGraphic"
- @JL "@RawVerbatim"
} |4.4cx {
- "@Rotate"
+ "@RawVerbatim"
+ @JL "@Rotate"
@JL "@Rump"
@JL "@Scale"
@JL "@SetColor"
diff --git a/doc/expert/mydefs b/doc/expert/mydefs
index 92f9871..4d17d45 100644
--- a/doc/expert/mydefs
+++ b/doc/expert/mydefs
@@ -55,6 +55,8 @@
def @@LInput { @Code "@LInput" }
def @@LUse { @Code "@LUse" }
def @@LVis { @Code "@LVis" }
+ def @@LinkSource { @Code "@LinkSource" }
+ def @@LinkDest { @Code "@LinkDest" }
def @@Meld { @Code "@Meld" }
def @@Merge { @Code "@Merge" }
def @@Moment { @Code "@Moment" }
diff --git a/doc/expert/outfile.ps b/doc/expert/outfile.ps
index 696568a..03b1d40 100644
--- a/doc/expert/outfile.ps
+++ b/doc/expert/outfile.ps
@@ -1,6 +1,6 @@
%!PS-Adobe-3.0
-%%Creator: Basser Lout Version 3.22 (June 2000)
-%%CreationDate: Sat Jun 3 13:06:09 2000
+%%Creator: Basser Lout Version 3.23 (June 2000)
+%%CreationDate: Sat Jun 24 12:54:31 2000
%%DocumentData: Binary
%%DocumentNeededResources: (atend)
%%DocumentSuppliedResources: (atend)
@@ -1389,6 +1389,7 @@ end
] def
%%EndResource
+/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse
%%EndSetup
%%Page: i 1
@@ -1427,8 +1428,8 @@ grestore
600 fnt2 1355 12125(An)m 2215(Exper)s -24(t')k 30(s)k
4518(Guide)s 6258(to)s 6902(the)s 3956 10685(Lout)m 616 9245(Document)m
3500(F)s 18(or)k -15(matting)k 6490(System)s 240 fnt2
-3544 6059(Jeffre)m 4(y)k 4321(H.)s 4606(Kingston)s 3884 4395(V)m 19(ersion)k
-4727(3.22)s 3958 4107(J)m 4(une)k 3(,)k 4582(2000)s
+3544 6059(Jeffre)m 4(y)k 4321(H.)s 4606(Kingston)s 3883 4395(V)m 19(ersion)k
+4726(3.23)s 3959 4107(J)m 4(une)k 3(,)k 4583(2000)s
240 fnt4 0 342(\343)m 240 fnt3 315 340(Cop)m 7(yr)k -3(ight)k
1493(1991,)s 2214(2000,)s 2935(Jeffre)s 4(y)k 3811(H.)s
4173(Kingston,)s 5293(Basser)s 6203(Depar)s -9(tment)k 7619(of)s
@@ -1474,7 +1475,59 @@ gsave
9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
0 LoutMargSet
grestore
-480 fnt5 0 12955(Pr)m 8(eface)k 240 fnt1 540 12095(This)m
+480 fnt5 0 12955(Pr)m 8(eface)k
+[ /Dest /LOUTpreface /DEST pdfmark
+
+[ /Dest /LOUT15_4067_preface_1 /DEST pdfmark
+
+[ /Dest /LOUT15_4067_preface_2 /DEST pdfmark
+
+[ /Dest /LOUT15_4067_preface_3 /DEST pdfmark
+
+[ /Dest /LOUT15_4067_preface_4 /DEST pdfmark
+
+[ /Dest /LOUT15_4067_preface_5 /DEST pdfmark
+
+[ /Dest /LOUT15_4067_preface_6 /DEST pdfmark
+
+[ /Dest /LOUT15_4067_preface_7 /DEST pdfmark
+
+[ /Dest /LOUT15_4067_preface_8 /DEST pdfmark
+
+[ /Dest /LOUT15_4067_preface_9 /DEST pdfmark
+
+[ /Dest /LOUT15_4067_preface_10 /DEST pdfmark
+
+[ /Dest /LOUT15_4067_preface_11 /DEST pdfmark
+
+[ /Dest /LOUT15_4067_preface_12 /DEST pdfmark
+
+[ /Dest /LOUT15_4067_preface_13 /DEST pdfmark
+
+[ /Dest /LOUT15_4067_preface_14 /DEST pdfmark
+
+[ /Dest /LOUT15_4067_preface_15 /DEST pdfmark
+
+[ /Dest /LOUT15_4067_preface_16 /DEST pdfmark
+
+[ /Dest /LOUT15_4067_preface_17 /DEST pdfmark
+
+[ /Dest /LOUT15_4067_preface_18 /DEST pdfmark
+
+[ /Dest /LOUT15_4067_preface_19 /DEST pdfmark
+
+[ /Dest /LOUT15_4067_preface_20 /DEST pdfmark
+
+[ /Dest /LOUT15_4067_preface_21 /DEST pdfmark
+
+[ /Dest /LOUT15_4067_preface_22 /DEST pdfmark
+
+[ /Dest /LOUT15_4067_preface_23 /DEST pdfmark
+
+[ /Dest /LOUT15_4067_preface_24 /DEST pdfmark
+
+[ /Dest /LOUT15_4067_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
@@ -1499,24 +1552,30 @@ grestore
4359(description)s 5484(of)s 5761(each)s 6262(prede\207ned)s 7336(symbol.)s
8211(The)s 8646(\207nal)s 0 9705(chapter)m 763(presents)s 1597(a)s
1763(collection)s 2762(of)s 3033(adv)s 6(anced)k 3989(e)s 3(xamples.)k
-480 9331(This)m 946(manual)s 1695(presents)s 2519(V)s 26(ersion)k
-3296(3)s 3450(of)s 3711(Basser)s 4397(Lout,)s 4946(publicly)s
-5774(released)s 6604(in)s 6836(September)s 7908(1994)s 8432([3)s
-8615(])s 8722(and)s 0 9043(de)m 6(v)k 3(eloped)k
-1041(continuously)s 2341(since)s 2897(then.)s 3482(This)s 3967(manual)s
-4735(w)s 2(as)k 5164(rendered)s 6067(into)s 6501(PostScript)s
-7552(by)s 7855(V)s 26(ersion)k 8652(3.22)s 0 8755(of)m
+480 9331(This)m 947(manual)s 1696(presents)s 2520(V)s 26(ersion)k
+3299(3)s 3453(of)s 3714(Basser)s 4401(Lout,)s 4951(publicly)s
+5779(released)s 6609(in)s 6843(September)s 7915(1994)s 8439([)s
+
+[ /Rect [8510 9328 8614 9493] /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
+1042(continuously)s 2343(since)s 2900(then.)s 3485(This)s 3971(manual)s
+4740(w)s 2(as)k 5170(rendered)s 6074(into)s 6509(PostScript)s
+
+[ /Dest /LOUT15_4082_preface_1 /DEST pdfmark
+7560(by)s 7864(V)s 26(ersion)k 8662(3.23)s 0 8755(of)m
271(the)s 619(Basser)s 1316(Lout)s 1828(interpreter)s 9(,)k
2919(using)s 3491(the)s 3839(symbols)s 4688(described)s 5662(in)s
-5905(the)s 6253(User')s 13(s)k 6914(Guide)s 7555([4)s
-7748(].)s 240 fnt5 0 8250(Ackno)m 2(wledgment.)k 240 fnt1
-1986 8251(V)m 26(ersion)k 2811(3)s 3012(has)s 3419(bene\207ted)s
-4391(from)s 4953(hundreds)s 5919(of)s 6227(comments)s 7298(recei)s 6(v)k 3(ed)k
-8193(since)s 8778(the)s 0 7963(release)m 726(of)s 1006(V)s 26(ersion)k
-1803(1)s 1967(in)s 2219(October)s 3057(1991.)s 3710(Not)s
-4138(e)s 6(v)k 3(ery)k 4723(suggestion)s 5813(could)s
-6411(be)s 6702(follo)s 6(wed,)k 7662(b)s 4(ut)k
-8033(man)s 3(y)k 8625(ha)s 4(v)k 3(e)k
+5905(the)s 6253(User')s 13(s)k 6914(Guide)s 7555([)s
+
+[ /Rect [7626 8755 7740 8917] /Subtype /Link /Dest /LOUTkingston1995lout_user /ANN pdfmark
+7626(4)s 7740(].)s 240 fnt5 0 8250(Ackno)m 2(wledgment.)k
+240 fnt1 1986 8251(V)m 26(ersion)k 2811(3)s 3012(has)s
+3419(bene\207ted)s 4391(from)s 4953(hundreds)s 5919(of)s 6227(comments)s
+7298(recei)s 6(v)k 3(ed)k 8193(since)s 8778(the)s
+0 7963(release)m 726(of)s 1006(V)s 26(ersion)k 1803(1)s
+1967(in)s 2219(October)s 3057(1991.)s 3710(Not)s 4138(e)s 6(v)k 3(ery)k
+4723(suggestion)s 5813(could)s 6411(be)s 6702(follo)s 6(wed,)k
+7662(b)s 4(ut)k 8033(man)s 3(y)k 8625(ha)s 4(v)k 3(e)k
0 7675(been,)m 559(and)s 963(the)s 1311(encouragement)s 2832(w)s 2(as)k
3253(greatly)s 3970(appreciated.)s
grestore
@@ -1558,135 +1617,269 @@ gsave
9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
1 LoutMargSet
grestore
-480 fnt5 0 12955(Contents)m 240 fnt5 0 11982(Chapter)m 908(1)s
+480 fnt5 0 12955(Contents)m
+[ /Dest /LOUT16_363_all_1 /DEST pdfmark
+
+[ /Rect [0 11893 8346 12147] /Subtype /Link /Dest /LOUTprinciples /ANN pdfmark
+240 fnt5 0 11982(Chapter)m 908(1)s
240 fnt1 1015 11983(.)m 240 fnt5 1179 11982(Principles)m 240 fnt1
2738 11983(..)m 3082(..)s 3426(..)s 3770(..)s 4114(..)s
4458(..)s 4802(..)s 5146(..)s 5490(..)s 5834(..)s
6178(..)s 6522(..)s 6866(..)s 7210(..)s 7554(..)s
-7898(..)s 8242(..)s 8971(1)s 720 11638(1.1.)m 1184(Objects)s
+7898(..)s 8242(..)s
+[ /Rect [8971 11983 9066 12145] /Subtype /Link /Dest /LOUTprinciples /ANN pdfmark
+8971(1)s
+[ /Rect [720 11548 8346 11801] /Subtype /Link /Dest /LOUTobjects /ANN pdfmark
+720 11638(1.1.)m 1184(Objects)s
2394(..)s 2738(..)s 3082(..)s 3426(..)s 3770(..)s
4114(..)s 4458(..)s 4802(..)s 5146(..)s 5490(..)s
5834(..)s 6178(..)s 6522(..)s 6866(..)s 7210(..)s
-7554(..)s 7898(..)s 8242(..)s 8971(1)s 720 11293(1.2.)m
+7554(..)s 7898(..)s 8242(..)s
+[ /Rect [8971 11638 9066 11800] /Subtype /Link /Dest /LOUTobjects /ANN pdfmark
+8971(1)s
+[ /Rect [720 11203 8346 11456] /Subtype /Link /Dest /LOUTdefinitions /ANN pdfmark
+720 11293(1.2.)m
1184(De\207nitions)s 2738(..)s 3082(..)s 3426(..)s 3770(..)s
4114(..)s 4458(..)s 4802(..)s 5146(..)s 5490(..)s
5834(..)s 6178(..)s 6522(..)s 6866(..)s 7210(..)s
-7554(..)s 7898(..)s 8242(..)s 8962(3)s 720 10948(1.3.)m
+7554(..)s 7898(..)s 8242(..)s
+[ /Rect [8962 11290 9066 11455] /Subtype /Link /Dest /LOUTdefinitions /ANN pdfmark
+8962(3)s
+[ /Rect [720 10858 8346 11111] /Subtype /Link /Dest /LOUTcross /ANN pdfmark
+720 10948(1.3.)m
1184(Cross)s 1780(references)s 3082(..)s 3426(..)s 3770(..)s
4114(..)s 4458(..)s 4802(..)s 5146(..)s 5490(..)s
5834(..)s 6178(..)s 6522(..)s 6866(..)s 7210(..)s
-7554(..)s 7898(..)s 8242(..)s 8958(7)s 720 10603(1.4.)m
+7554(..)s 7898(..)s 8242(..)s
+[ /Rect [8958 10947 9066 11106] /Subtype /Link /Dest /LOUTcross /ANN pdfmark
+8958(7)s
+[ /Rect [720 10513 8346 10766] /Subtype /Link /Dest /LOUTgalleys /ANN pdfmark
+720 10603(1.4.)m
1184(Galle)s 3(ys)k 2394(..)s 2738(..)s 3082(..)s
3426(..)s 3770(..)s 4114(..)s 4458(..)s 4802(..)s
5146(..)s 5490(..)s 5834(..)s 6178(..)s 6522(..)s
6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s
-8955(9)s 240 fnt5 0 9974(Chapter)m 908(2)s 240 fnt1
+
+[ /Rect [8955 10598 9066 10765] /Subtype /Link /Dest /LOUTgalleys /ANN pdfmark
+8955(9)s
+[ /Rect [0 9885 8346 10139] /Subtype /Link /Dest /LOUTdetails /ANN pdfmark
+240 fnt5 0 9974(Chapter)m 908(2)s 240 fnt1
1023 9975(.)m 240 fnt5 1187 9974(Details)m 240 fnt1 2394 9975(..)m
2738(..)s 3082(..)s 3426(..)s 3770(..)s 4114(..)s
4458(..)s 4802(..)s 5146(..)s 5490(..)s 5834(..)s
6178(..)s 6522(..)s 6866(..)s 7210(..)s 7554(..)s
-7898(..)s 8242(..)s 8842(13)s 720 9630(2.1.)m 1184(Le)s 3(xical)k
+7898(..)s 8242(..)s
+[ /Rect [8842 9972 9066 10137] /Subtype /Link /Dest /LOUTdetails /ANN pdfmark
+8842(13)s
+[ /Rect [720 9540 8346 9793] /Subtype /Link /Dest /LOUTlexical /ANN pdfmark
+720 9630(2.1.)m 1184(Le)s 3(xical)k
1952(structure)s 2843(\(w)s 2(ords,)k 3612(spaces,)s 4343(symbols\))s
5269(and)s 5673(macros)s 6866(..)s 7210(..)s 7554(..)s
-7898(..)s 8242(..)s 8842(13)s 720 9285(2.2.)m 1184(Named)s
+7898(..)s 8242(..)s
+[ /Rect [8842 9627 9066 9792] /Subtype /Link /Dest /LOUTlexical /ANN pdfmark
+8842(13)s
+[ /Rect [720 9195 8346 9450] /Subtype /Link /Dest /LOUTnamed /ANN pdfmark
+720 9285(2.2.)m 1184(Named)s
1933(parameters)s 3426(..)s 3770(..)s 4114(..)s 4458(..)s
4802(..)s 5146(..)s 5490(..)s 5834(..)s 6178(..)s
6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s
-8242(..)s 8840(15)s 720 8940(2.3.)m 1184(Nested)s 1906(de\207nitions,)s
+8242(..)s
+[ /Rect [8840 9282 9066 9450] /Subtype /Link /Dest /LOUTnamed /ANN pdfmark
+8840(15)s
+[ /Rect [720 8850 8346 9103] /Subtype /Link /Dest /LOUTvisibility /ANN pdfmark
+720 8940(2.3.)m 1184(Nested)s 1906(de\207nitions,)s
3023(body)s 3557(parameters,)s 4711(e)s 3(xtend,)k 5453(import,)s
6197(and)s 6601(e)s 3(xport)k 7554(..)s 7898(..)s
-8242(..)s 8838(17)s 720 8595(2.4.)m 1184(Filtered)s 1984(right)s
+8242(..)s
+[ /Rect [8838 8939 9066 9102] /Subtype /Link /Dest /LOUTvisibility /ANN pdfmark
+8838(17)s
+[ /Rect [720 8505 8346 8758] /Subtype /Link /Dest /LOUTfilters /ANN pdfmark
+720 8595(2.4.)m 1184(Filtered)s 1984(right)s
2495(and)s 2899(body)s 3433(parameters)s 4802(..)s 5146(..)s
5490(..)s 5834(..)s 6178(..)s 6522(..)s 6866(..)s
-7210(..)s 7554(..)s 7898(..)s 8242(..)s 8831(20)s
+7210(..)s 7554(..)s 7898(..)s 8242(..)s
+[ /Rect [8831 8592 9066 8757] /Subtype /Link /Dest /LOUTfilters /ANN pdfmark
+8831(20)s
+
+[ /Rect [720 8160 8346 8415] /Subtype /Link /Dest /LOUTprecedence /ANN pdfmark
720 8250(2.5.)m 1184(Precedence)s 2328(and)s 2732(associati)s 6(vity)k
3974(of)s 4245(symbols)s 5490(..)s 5834(..)s 6178(..)s
6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s
-8242(..)s 8832(22)s 720 7905(2.6.)m 1184(The)s 1612(style)s
+8242(..)s
+[ /Rect [8832 8250 9066 8412] /Subtype /Link /Dest /LOUTprecedence /ANN pdfmark
+8832(22)s
+[ /Rect [720 7815 8346 8069] /Subtype /Link /Dest /LOUTsize /ANN pdfmark
+720 7905(2.6.)m 1184(The)s 1612(style)s
2119(and)s 2523(size)s 2950(of)s 3221(objects)s 4458(..)s
4802(..)s 5146(..)s 5490(..)s 5834(..)s 6178(..)s
6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s
-8242(..)s 8842(23)s 720 7560(2.7.)m 1184(Galle)s 3(ys)k
+8242(..)s
+[ /Rect [8842 7902 9066 8067] /Subtype /Link /Dest /LOUTsize /ANN pdfmark
+8842(23)s
+[ /Rect [720 7470 8346 7725] /Subtype /Link /Dest /LOUTtargets /ANN pdfmark
+720 7560(2.7.)m 1184(Galle)s 3(ys)k
1962(and)s 2366(tar)s 4(gets)k 3426(..)s 3770(..)s
4114(..)s 4458(..)s 4802(..)s 5146(..)s 5490(..)s
5834(..)s 6178(..)s 6522(..)s 6866(..)s 7210(..)s
-7554(..)s 7898(..)s 8242(..)s 8840(25)s 720 7215(2.8.)m
+7554(..)s 7898(..)s 8242(..)s
+[ /Rect [8840 7557 9066 7725] /Subtype /Link /Dest /LOUTtargets /ANN pdfmark
+8840(25)s
+[ /Rect [720 7125 8346 7378] /Subtype /Link /Dest /LOUTsorted /ANN pdfmark
+720 7215(2.8.)m
1184(Sorted)s 1866(g)s 1(alle)k 3(ys)k 3082(..)s
3426(..)s 3770(..)s 4114(..)s 4458(..)s 4802(..)s
5146(..)s 5490(..)s 5834(..)s 6178(..)s 6522(..)s
6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s
-8832(32)s 720 6870(2.9.)m 1184(Horizontal)s 2261(g)s 1(alle)k 3(ys)k
+
+[ /Rect [8832 7212 9066 7377] /Subtype /Link /Dest /LOUTsorted /ANN pdfmark
+8832(32)s
+[ /Rect [720 6780 8346 7033] /Subtype /Link /Dest /LOUThorizontal /ANN pdfmark
+720 6870(2.9.)m 1184(Horizontal)s 2261(g)s 1(alle)k 3(ys)k
3426(..)s 3770(..)s 4114(..)s 4458(..)s 4802(..)s
5146(..)s 5490(..)s 5834(..)s 6178(..)s 6522(..)s
6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s
-8842(33)s 720 6525(2.10.)m 1304(Optimal)s 2142(g)s 1(alle)k 3(y)k
+
+[ /Rect [8842 6867 9066 7032] /Subtype /Link /Dest /LOUThorizontal /ANN pdfmark
+8842(33)s
+[ /Rect [720 6435 8346 6690] /Subtype /Link /Dest /LOUToptimal /ANN pdfmark
+720 6525(2.10.)m 1304(Optimal)s 2142(g)s 1(alle)k 3(y)k
2776(breaking)s 4114(..)s 4458(..)s 4802(..)s 5146(..)s
5490(..)s 5834(..)s 6178(..)s 6522(..)s 6866(..)s
-7210(..)s 7554(..)s 7898(..)s 8242(..)s 8840(35)s
+7210(..)s 7554(..)s 7898(..)s 8242(..)s
+[ /Rect [8840 6522 9066 6690] /Subtype /Link /Dest /LOUToptimal /ANN pdfmark
+8840(35)s
+
+[ /Rect [0 5807 8346 6061] /Subtype /Link /Dest /LOUTsymbols /ANN pdfmark
240 fnt5 0 5896(Chapter)m 908(3)s 240 fnt1 1021 5897(.)m
240 fnt5 1185 5896(Pr)m 4(ede\207ned)k 2338(symbols)s 240 fnt1
3426 5897(..)m 3770(..)s 4114(..)s 4458(..)s 4802(..)s
5146(..)s 5490(..)s 5834(..)s 6178(..)s 6522(..)s
6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s
-8833(36)s 720 5552(3.1.)m 1184(@Be)s 3(gin)k 2031(and)s
+
+[ /Rect [8833 5894 9066 6061] /Subtype /Link /Dest /LOUTsymbols /ANN pdfmark
+8833(36)s
+[ /Rect [720 5462 8346 5716] /Subtype /Link /Dest /LOUTbegin /ANN pdfmark
+720 5552(3.1.)m 1184(@Be)s 3(gin)k 2031(and)s
2435(@End)s 3426(..)s 3770(..)s 4114(..)s 4458(..)s
4802(..)s 5146(..)s 5490(..)s 5834(..)s 6178(..)s
6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s
-8242(..)s 8833(36)s 720 5207(3.2.)m 1184(Concatenation)s 2623(symbols)s
+8242(..)s
+[ /Rect [8833 5549 9066 5716] /Subtype /Link /Dest /LOUTbegin /ANN pdfmark
+8833(36)s
+[ /Rect [720 5117 8346 5371] /Subtype /Link /Dest /LOUTconcatenation /ANN pdfmark
+720 5207(3.2.)m 1184(Concatenation)s 2623(symbols)s
3472(and)s 3876(paragraphs)s 5490(..)s 5834(..)s 6178(..)s
6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s
-8242(..)s 8833(36)s 720 4862(3.3.)m 1184(@F)s 3(ont,)k
+8242(..)s
+[ /Rect [8833 5204 9066 5371] /Subtype /Link /Dest /LOUTconcatenation /ANN pdfmark
+8833(36)s
+[ /Rect [720 4772 8346 5025] /Subtype /Link /Dest /LOUTfont /ANN pdfmark
+720 4862(3.3.)m 1184(@F)s 3(ont,)k
1948(@Char)s 9(,)k 2732(and)s 3136(@F)s 3(ontDef)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 8831(40)s 720 4517(3.4.)m 1184(@Break)s
+7898(..)s 8242(..)s
+[ /Rect [8831 4859 9066 5024] /Subtype /Link /Dest /LOUTfont /ANN pdfmark
+8831(40)s
+[ /Rect [720 4427 8346 4680] /Subtype /Link /Dest /LOUTbreak /ANN pdfmark
+720 4517(3.4.)m 1184(@Break)s
2394(..)s 2738(..)s 3082(..)s 3426(..)s 3770(..)s
4114(..)s 4458(..)s 4802(..)s 5146(..)s 5490(..)s
5834(..)s 6178(..)s 6522(..)s 6866(..)s 7210(..)s
-7554(..)s 7898(..)s 8242(..)s 8832(42)s 720 4172(3.5.)m
+7554(..)s 7898(..)s 8242(..)s
+[ /Rect [8832 4517 9066 4679] /Subtype /Link /Dest /LOUTbreak /ANN pdfmark
+8832(42)s
+[ /Rect [720 4082 8346 4337] /Subtype /Link /Dest /LOUTspace /ANN pdfmark
+720 4172(3.5.)m
1184(@Space)s 2394(..)s 2738(..)s 3082(..)s 3426(..)s
3770(..)s 4114(..)s 4458(..)s 4802(..)s 5146(..)s
5490(..)s 5834(..)s 6178(..)s 6522(..)s 6866(..)s
-7210(..)s 7554(..)s 7898(..)s 8242(..)s 8832(44)s
+7210(..)s 7554(..)s 7898(..)s 8242(..)s
+[ /Rect [8832 4172 9066 4334] /Subtype /Link /Dest /LOUTspace /ANN pdfmark
+8832(44)s
+
+[ /Rect [720 3737 8346 3991] /Subtype /Link /Dest /LOUTyunit /ANN pdfmark
720 3827(3.6.)m 1184(@YUnit,)s 2110(@ZUnit,)s 3009(@CurrYUnit,)s 4373(and)s
4777(@CurrZUnit)s 6522(..)s 6866(..)s 7210(..)s 7554(..)s
-7898(..)s 8242(..)s 8832(44)s 720 3482(3.7.)m 1184(@SetColour)s
+7898(..)s 8242(..)s
+[ /Rect [8832 3827 9066 3989] /Subtype /Link /Dest /LOUTyunit /ANN pdfmark
+8832(44)s
+[ /Rect [720 3392 8346 3647] /Subtype /Link /Dest /LOUTcolour /ANN pdfmark
+720 3482(3.7.)m 1184(@SetColour)s
2435(and)s 2839(@SetColor)s 4458(..)s 4802(..)s 5146(..)s
5490(..)s 5834(..)s 6178(..)s 6522(..)s 6866(..)s
-7210(..)s 7554(..)s 7898(..)s 8242(..)s 8840(45)s
+7210(..)s 7554(..)s 7898(..)s 8242(..)s
+[ /Rect [8840 3479 9066 3647] /Subtype /Link /Dest /LOUTcolour /ANN pdfmark
+8840(45)s
+
+[ /Rect [720 3047 8346 3301] /Subtype /Link /Dest /LOUToutline /ANN pdfmark
720 3137(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
-8833(46)s 720 2792(3.9.)m 1184(@Language)s 2405(and)s 2809(@CurrLang)s
+
+[ /Rect [8833 3134 9066 3301] /Subtype /Link /Dest /LOUToutline /ANN pdfmark
+8833(46)s
+[ /Rect [720 2702 8346 2956] /Subtype /Link /Dest /LOUTlanguage /ANN pdfmark
+720 2792(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 8833(46)s 720 2447(3.10.)m 1304(@OneCol)s
+7898(..)s 8242(..)s
+[ /Rect [8833 2789 9066 2956] /Subtype /Link /Dest /LOUTlanguage /ANN pdfmark
+8833(46)s
+[ /Rect [720 2357 8346 2610] /Subtype /Link /Dest /LOUTonerow /ANN pdfmark
+720 2447(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 8838(47)s 720 2102(3.11.)m 1304(@W)s 9(ide)k
+8242(..)s
+[ /Rect [8838 2446 9066 2609] /Subtype /Link /Dest /LOUTonerow /ANN pdfmark
+8838(47)s
+[ /Rect [720 2012 8346 2265] /Subtype /Link /Dest /LOUTwide /ANN pdfmark
+720 2102(3.11.)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 8839(48)s 720 1757(3.12.)m 1304(@HShift)s 2222(and)s
+8242(..)s
+[ /Rect [8839 2099 9066 2264] /Subtype /Link /Dest /LOUTwide /ANN pdfmark
+8839(48)s
+[ /Rect [720 1667 8346 1920] /Subtype /Link /Dest /LOUThshift /ANN pdfmark
+720 1757(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
-8839(48)s 720 1412(3.13.)m 1304(@HExpand)s 2488(and)s 2892(@VExpand)s
+
+[ /Rect [8839 1754 9066 1919] /Subtype /Link /Dest /LOUThshift /ANN pdfmark
+8839(48)s
+[ /Rect [720 1322 8346 1575] /Subtype /Link /Dest /LOUThexpand /ANN pdfmark
+720 1412(3.13.)m 1304(@HExpand)s 2488(and)s 2892(@VExpand)s
4458(..)s 4802(..)s 5146(..)s 5490(..)s 5834(..)s
6178(..)s 6522(..)s 6866(..)s 7210(..)s 7554(..)s
-7898(..)s 8242(..)s 8839(48)s 720 1067(3.14.)m 1304(@HContract)s
+7898(..)s 8242(..)s
+[ /Rect [8835 1407 9066 1574] /Subtype /Link /Dest /LOUThexpand /ANN pdfmark
+8835(49)s
+[ /Rect [720 977 8346 1230] /Subtype /Link /Dest /LOUThcontract /ANN pdfmark
+720 1067(3.14.)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 8835(49)s
+7210(..)s 7554(..)s 7898(..)s 8242(..)s
+[ /Rect [8835 1062 9066 1229] /Subtype /Link /Dest /LOUThcontract /ANN pdfmark
+8835(49)s
+
+[ /Rect [720 632 8346 887] /Subtype /Link /Dest /LOUThlimited /ANN pdfmark
720 722(3.15.)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 8835(49)s 720 377(3.16.)m 1304(@HAdjust,)s 2443(@V)s 32(Adjust,)k
+8242(..)s
+[ /Rect [8835 717 9066 884] /Subtype /Link /Dest /LOUThlimited /ANN pdfmark
+8835(49)s
+[ /Rect [720 287 8346 541] /Subtype /Link /Dest /LOUThadjust /ANN pdfmark
+720 377(3.16.)m 1304(@HAdjust,)s 2443(@V)s 32(Adjust,)k
3550(and)s 3954(@P)s 22(Adjust)k 5490(..)s 5834(..)s
6178(..)s 6522(..)s 6866(..)s 7210(..)s 7554(..)s
-7898(..)s 8242(..)s 8835(49)s
+7898(..)s 8242(..)s
+[ /Rect [8835 372 9066 539] /Subtype /Link /Dest /LOUThadjust /ANN pdfmark
+8835(49)s
grestore
0 0 0 0 240 288 60 1417 -15423 LoutGr2
1 LoutMargSet
@@ -1726,140 +1919,291 @@ gsave
9066 13415 0 13415 240 288 60 1417 -14832 LoutGr2
0 LoutMargSet
grestore
+
+[ /Rect [720 13127 8346 13382] /Subtype /Link /Dest /LOUThscale /ANN pdfmark
720 13217(3.17.)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 8831(50)s 720 12872(3.18.)m 1304(@HCo)s 3(v)k 3(er)k
+7898(..)s 8242(..)s
+[ /Rect [8831 13214 9066 13382] /Subtype /Link /Dest /LOUThscale /ANN pdfmark
+8831(50)s
+[ /Rect [720 12782 8346 13037] /Subtype /Link /Dest /LOUThcover /ANN pdfmark
+720 12872(3.18.)m 1304(@HCo)s 3(v)k 3(er)k
2337(and)s 2741(@VCo)s 3(v)k 3(er)k 4114(..)s
4458(..)s 4802(..)s 5146(..)s 5490(..)s 5834(..)s
6178(..)s 6522(..)s 6866(..)s 7210(..)s 7554(..)s
-7898(..)s 8242(..)s 8831(50)s 720 12527(3.19.)m 1304(@StartHSpan,@StartVSpan,)s
+7898(..)s 8242(..)s
+[ /Rect [8831 12869 9066 13037] /Subtype /Link /Dest /LOUThcover /ANN pdfmark
+8831(50)s
+[ /Rect [720 12437 8346 12692] /Subtype /Link /Dest /LOUThspan /ANN pdfmark
+720 12527(3.19.)m 1304(@StartHSpan,@StartVSpan,)s
4117(@StartHVSpan,)s 5720(@HSpan,)s 6700(and)s 7104(@VSpan)s 8242(..)s
-8851(51)s 720 12182(3.20.)m 1304(@Scale)s 2394(..)s 2738(..)s
+
+[ /Rect [8851 12524 9066 12692] /Subtype /Link /Dest /LOUThspan /ANN pdfmark
+8851(51)s
+[ /Rect [720 12092 8346 12347] /Subtype /Link /Dest /LOUTscale /ANN pdfmark
+720 12182(3.20.)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 8832(52)s 720 11837(3.21.)m 1304(@Rotate)s 2394(..)s
+8242(..)s
+[ /Rect [8832 12179 9066 12347] /Subtype /Link /Dest /LOUTscale /ANN pdfmark
+8832(52)s
+[ /Rect [720 11747 8346 12002] /Subtype /Link /Dest /LOUTrotate /ANN pdfmark
+720 11837(3.21.)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 8842(53)s 720 11492(3.22.)m 1304(@Background)s
+7898(..)s 8242(..)s
+[ /Rect [8842 11834 9066 12002] /Subtype /Link /Dest /LOUTrotate /ANN pdfmark
+8842(53)s
+[ /Rect [720 11402 8346 11657] /Subtype /Link /Dest /LOUTbackground /ANN pdfmark
+720 11492(3.22.)m 1304(@Background)s
3082(..)s 3426(..)s 3770(..)s 4114(..)s 4458(..)s
4802(..)s 5146(..)s 5490(..)s 5834(..)s 6178(..)s
6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s
-8242(..)s 8842(53)s 720 11147(3.23.)m 1304(@K)s 6(ernShrink)k
+8242(..)s
+[ /Rect [8842 11489 9066 11657] /Subtype /Link /Dest /LOUTbackground /ANN pdfmark
+8842(53)s
+[ /Rect [720 11057 8346 11312] /Subtype /Link /Dest /LOUTkernshrink /ANN pdfmark
+720 11147(3.23.)m 1304(@K)s 6(ernShrink)k
3082(..)s 3426(..)s 3770(..)s 4114(..)s 4458(..)s
4802(..)s 5146(..)s 5490(..)s 5834(..)s 6178(..)s
6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s
-8242(..)s 8842(53)s 720 10802(3.24.)m 1304(@Common,)s 2524(@Rump,)s
+8242(..)s
+[ /Rect [8832 11144 9066 11312] /Subtype /Link /Dest /LOUTkernshrink /ANN pdfmark
+8832(54)s
+[ /Rect [720 10712 8346 10967] /Subtype /Link /Dest /LOUTrump /ANN pdfmark
+720 10802(3.24.)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 8832(54)s 720 10457(3.25.)m 1304(@Insert)s
+7898(..)s 8242(..)s
+[ /Rect [8832 10799 9066 10967] /Subtype /Link /Dest /LOUTrump /ANN pdfmark
+8832(54)s
+[ /Rect [720 10367 8346 10622] /Subtype /Link /Dest /LOUTinsert /ANN pdfmark
+720 10457(3.25.)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 8840(55)s 720 10112(3.26.)m
+7554(..)s 7898(..)s 8242(..)s
+[ /Rect [8840 10454 9066 10622] /Subtype /Link /Dest /LOUTinsert /ANN pdfmark
+8840(55)s
+[ /Rect [720 10022 8346 10277] /Subtype /Link /Dest /LOUToneof /ANN pdfmark
+720 10112(3.26.)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 8840(55)s 720 9767(3.27.)m
+7554(..)s 7898(..)s 8242(..)s
+[ /Rect [8840 10109 9066 10277] /Subtype /Link /Dest /LOUToneof /ANN pdfmark
+8840(55)s
+[ /Rect [720 9677 8346 9932] /Subtype /Link /Dest /LOUTnext /ANN pdfmark
+720 9767(3.27.)m
1304(@Ne)s 3(xt)k 2394(..)s 2738(..)s 3082(..)s
3426(..)s 3770(..)s 4114(..)s 4458(..)s 4802(..)s
5146(..)s 5490(..)s 5834(..)s 6178(..)s 6522(..)s
6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s
-8833(56)s 720 9422(3.28.)m 1304(@Case)s 2394(..)s 2738(..)s
+
+[ /Rect [8833 9764 9066 9932] /Subtype /Link /Dest /LOUTnext /ANN pdfmark
+8833(56)s
+[ /Rect [720 9332 8346 9587] /Subtype /Link /Dest /LOUTcase /ANN pdfmark
+720 9422(3.28.)m 1304(@Case)s 2394(..)s 2738(..)s
3082(..)s 3426(..)s 3770(..)s 4114(..)s 4458(..)s
4802(..)s 5146(..)s 5490(..)s 5834(..)s 6178(..)s
6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s
-8242(..)s 8833(56)s 720 9077(3.29.)m 1304(@Moment)s 2738(..)s
+8242(..)s
+[ /Rect [8833 9419 9066 9587] /Subtype /Link /Dest /LOUTcase /ANN pdfmark
+8833(56)s
+[ /Rect [720 8987 8346 9242] /Subtype /Link /Dest /LOUTmoment /ANN pdfmark
+720 9077(3.29.)m 1304(@Moment)s 2738(..)s
3082(..)s 3426(..)s 3770(..)s 4114(..)s 4458(..)s
4802(..)s 5146(..)s 5490(..)s 5834(..)s 6178(..)s
6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s
-8242(..)s 8838(57)s 720 8732(3.30.)m 1304(@Null)s 2394(..)s
+8242(..)s
+[ /Rect [8838 9074 9066 9242] /Subtype /Link /Dest /LOUTmoment /ANN pdfmark
+8838(57)s
+[ /Rect [720 8642 8346 8897] /Subtype /Link /Dest /LOUTnull /ANN pdfmark
+720 8732(3.30.)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 8839(58)s 720 8387(3.31.)m 1304(@Galle)s 3(y)k
+7898(..)s 8242(..)s
+[ /Rect [8839 8729 9066 8897] /Subtype /Link /Dest /LOUTnull /ANN pdfmark
+8839(58)s
+[ /Rect [720 8297 8346 8552] /Subtype /Link /Dest /LOUTgalley /ANN pdfmark
+720 8387(3.31.)m 1304(@Galle)s 3(y)k
2213(and)s 2617(@F)s 3(orceGalle)k 3(y)k 4458(..)s
4802(..)s 5146(..)s 5490(..)s 5834(..)s 6178(..)s
6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s
-8242(..)s 8839(58)s 720 8042(3.32.)m 1304(@Be)s 3(ginHeaderComponent,)k
+8242(..)s
+[ /Rect [8839 8384 9066 8552] /Subtype /Link /Dest /LOUTgalley /ANN pdfmark
+8839(58)s
+[ /Rect [720 7664 8346 8205] /Subtype /Link /Dest /LOUTheader_comp /ANN pdfmark
+720 8042(3.32.)m 1304(@Be)s 3(ginHeaderComponent,)k
4041(@EndHeaderComponent,)s 6596(@SetHeaderCom)s 8278(-)s 1304 7754(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
-8835(59)s 720 7409(3.33.)m 1304(@NotRe)s 6(v)k 3(ealed)k
+
+[ /Rect [8835 7749 9066 7919] /Subtype /Link /Dest /LOUTheader_comp /ANN pdfmark
+8835(59)s
+[ /Rect [720 7319 8346 7573] /Subtype /Link /Dest /LOUTnotrevealed /ANN pdfmark
+720 7409(3.33.)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 8831(60)s 720 7064(3.34.)m 1304(The)s 1732(cross)s
+8242(..)s
+[ /Rect [8831 7406 9066 7573] /Subtype /Link /Dest /LOUTnotrevealed /ANN pdfmark
+8831(60)s
+[ /Rect [720 6974 8346 7228] /Subtype /Link /Dest /LOUTcrossref /ANN pdfmark
+720 7064(3.34.)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 8851(61)s 720 6719(3.35.)m
+7554(..)s 7898(..)s 8242(..)s
+[ /Rect [8851 7061 9066 7228] /Subtype /Link /Dest /LOUTcrossref /ANN pdfmark
+8851(61)s
+[ /Rect [720 6629 8346 6884] /Subtype /Link /Dest /LOUTtagged /ANN pdfmark
+720 6719(3.35.)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 8832(62)s
+7210(..)s 7554(..)s 7898(..)s 8242(..)s
+[ /Rect [8832 6716 9066 6883] /Subtype /Link /Dest /LOUTtagged /ANN pdfmark
+8832(62)s
+
+[ /Rect [720 6284 8346 6538] /Subtype /Link /Dest /LOUTopen /ANN pdfmark
720 6374(3.36.)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 8832(62)s 720 6029(3.37.)m 1304(@Database and @SysDatabase)s
+7898(..)s 8242(..)s
+[ /Rect [8832 6371 9066 6538] /Subtype /Link /Dest /LOUTopen /ANN pdfmark
+8832(62)s
+[ /Rect [720 5939 8346 6193] /Subtype /Link /Dest /LOUTlink_source /ANN pdfmark
+720 6029(3.37.)m 1304(@LinkSource and @LinkDest)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 6026 9066 6193] /Subtype /Link /Dest /LOUTlink_source /ANN pdfmark
+8842(63)s
+[ /Rect [720 5594 8346 5848] /Subtype /Link /Dest /LOUTdatabase /ANN pdfmark
+720 5684(3.38.)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 8842(63)s 720 5684(3.38.)m 1304(@Graphic)s 2738(..)s
+8242(..)s
+[ /Rect [8842 5681 9066 5848] /Subtype /Link /Dest /LOUTdatabase /ANN pdfmark
+8842(63)s
+[ /Rect [720 5249 8346 5503] /Subtype /Link /Dest /LOUTgraphic /ANN pdfmark
+720 5339(3.39.)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 8842(63)s 720 5339(3.39.)m 1304(@PlainGraphic)s 3082(..)s
+8242(..)s
+[ /Rect [8832 5336 9066 5503] /Subtype /Link /Dest /LOUTgraphic /ANN pdfmark
+8832(64)s
+[ /Rect [720 4904 8346 5158] /Subtype /Link /Dest /LOUTplaingraphic /ANN pdfmark
+720 4994(3.40.)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
-8838(67)s 720 4994(3.40.)m 1304(@IncludeGraphic)s 3065(and)s 3469(@SysIncludeGraphic)s
+
+[ /Rect [8839 4991 9066 5158] /Subtype /Link /Dest /LOUTplaingraphic /ANN pdfmark
+8839(68)s
+[ /Rect [720 4559 8346 4813] /Subtype /Link /Dest /LOUTincludegraphic /ANN pdfmark
+720 4649(3.41.)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 8838(67)s 720 4649(3.41.)m
+7554(..)s 7898(..)s 8242(..)s
+[ /Rect [8839 4646 9066 4813] /Subtype /Link /Dest /LOUTincludegraphic /ANN pdfmark
+8839(68)s
+[ /Rect [720 4214 8346 4468] /Subtype /Link /Dest /LOUTprependgraphic /ANN pdfmark
+720 4304(3.42.)m
1304(@PrependGraphic and @SysPrependGraphic)s 6178(..)s 6522(..)s 6866(..)s 7210(..)s
-7554(..)s 7898(..)s 8242(..)s 8839(68)s 720 4304(3.42.)m
+7554(..)s 7898(..)s 8242(..)s
+[ /Rect [8835 4299 9066 4468] /Subtype /Link /Dest /LOUTprependgraphic /ANN pdfmark
+8835(69)s
+[ /Rect [720 3869 8346 4123] /Subtype /Link /Dest /LOUTinclude /ANN pdfmark
+720 3959(3.43.)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 8839(68)s 720 3959(3.43.)m
+7554(..)s 7898(..)s 8242(..)s
+[ /Rect [8835 3954 9066 4123] /Subtype /Link /Dest /LOUTinclude /ANN pdfmark
+8835(69)s
+[ /Rect [720 3524 8346 3778] /Subtype /Link /Dest /LOUTbackend /ANN pdfmark
+720 3614(3.44.)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
-8835(69)s 720 3614(3.44.)m 1304(@V)s 26(erbatim and @Ra)k 3(wV)k 26(erbatim)k
+
+[ /Rect [8835 3609 9066 3778] /Subtype /Link /Dest /LOUTbackend /ANN pdfmark
+8835(69)s
+[ /Rect [720 3179 8346 3434] /Subtype /Link /Dest /LOUTverbatim /ANN pdfmark
+720 3269(3.45.)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 8831(70)s 720 3269(3.45.)m 1304(@Underline)s 2738(..)s
+8242(..)s
+[ /Rect [8831 3266 9066 3431] /Subtype /Link /Dest /LOUTverbatim /ANN pdfmark
+8831(70)s
+[ /Rect [720 2834 8346 3088] /Subtype /Link /Dest /LOUTunderline /ANN pdfmark
+720 2924(3.46.)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 8831(70)s 720 2924(3.46.)m 1304(@P)s 3(ageLabel)k
+8242(..)s
+[ /Rect [8851 2923 9066 3086] /Subtype /Link /Dest /LOUTunderline /ANN pdfmark
+8851(71)s
+[ /Rect [720 2489 8346 2742] /Subtype /Link /Dest /LOUTpagelabel /ANN pdfmark
+720 2579(3.47.)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 8851(71)s 240 fnt5 0 2295(Chapter)m 908(4)s
-240 fnt1 1022 2296(.)m 240 fnt5 1186 2295(Examples)m 240 fnt1
-2738 2296(..)m 3082(..)s 3426(..)s 3770(..)s 4114(..)s
+8242(..)s
+[ /Rect [8851 2578 9066 2741] /Subtype /Link /Dest /LOUTpagelabel /ANN pdfmark
+8851(71)s
+[ /Rect [0 1861 8346 2115] /Subtype /Link /Dest /LOUTexamples /ANN pdfmark
+240 fnt5 0 1950(Chapter)m 908(4)s
+240 fnt1 1022 1951(.)m 240 fnt5 1186 1950(Examples)m 240 fnt1
+2738 1951(..)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 8832(72)s 720 1951(4.1.)m 1184(An)s
+7898(..)s 8242(..)s
+[ /Rect [8832 1950 9066 2113] /Subtype /Link /Dest /LOUTexamples /ANN pdfmark
+8832(72)s
+[ /Rect [720 1516 8346 1769] /Subtype /Link /Dest /LOUTeq /ANN pdfmark
+720 1606(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 8832(72)s
-720 1606(4.2.)m 1184(P)s 3(aragraphs,)k 2350(displays,)s 3241(and)s
+7210(..)s 7554(..)s 7898(..)s 8242(..)s
+[ /Rect [8832 1605 9066 1768] /Subtype /Link /Dest /LOUTeq /ANN pdfmark
+8832(72)s
+
+[ /Rect [720 1171 8346 1424] /Subtype /Link /Dest /LOUTparas /ANN pdfmark
+720 1261(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 8832(74)s 720 1261(4.3.)m
+7554(..)s 7898(..)s 8242(..)s
+[ /Rect [8832 1260 9066 1423] /Subtype /Link /Dest /LOUTparas /ANN pdfmark
+8832(74)s
+[ /Rect [720 826 8346 1079] /Subtype /Link /Dest /LOUTpagelayout /ANN pdfmark
+720 916(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
-8839(78)s 720 916(4.4.)m 1184(Chapters)s 2085(and)s 2489(sections)s
+
+[ /Rect [8839 913 9066 1078] /Subtype /Link /Dest /LOUTpagelayout /ANN pdfmark
+8839(78)s
+[ /Rect [720 481 8346 734] /Subtype /Link /Dest /LOUTchapters /ANN pdfmark
+720 571(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 8842(83)s
-720 571(4.5.)m 1184(Bibliographies)s 3082(..)s 3426(..)s 3770(..)s
+7210(..)s 7554(..)s 7898(..)s 8242(..)s
+[ /Rect [8842 568 9066 733] /Subtype /Link /Dest /LOUTchapters /ANN pdfmark
+8842(83)s
+
+[ /Rect [720 136 8346 391] /Subtype /Link /Dest /LOUTbiblio /ANN pdfmark
+720 226(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 8839(88)s
+7554(..)s 7898(..)s 8242(..)s
+[ /Rect [8839 223 9066 388] /Subtype /Link /Dest /LOUTbiblio /ANN pdfmark
+8839(88)s
grestore
0 0 0 0 240 288 60 1417 -14832 LoutGr2
0 LoutMargSet
@@ -1900,17 +2244,25 @@ gsave
9066 13470 0 13470 240 288 60 1417 -14887 LoutGr2
1 LoutMargSet
grestore
-240 fnt5 0 13305(Refer)m 4(ences)k 240 fnt1 1362 13306(..)m
+
+[ /Rect [0 13072 8346 13326] /Subtype /Link /Dest /LOUT16_427_all_1 /ANN pdfmark
+240 fnt5 0 13161(Refer)m 4(ences)k 240 fnt1 1362 13162(..)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
-8842(93)s 240 fnt5 0 12679(Index)m 240 fnt1 1018 12680(..)m
+
+[ /Rect [8842 13157 9066 13324] /Subtype /Link /Dest /LOUT16_427_all_1 /ANN pdfmark
+8842(93)s
+[ /Rect [0 12446 8346 12698] /Subtype /Link /Dest /LOUT16_449_all_1 /ANN pdfmark
+240 fnt5 0 12535(Index)m 240 fnt1 1018 12536(..)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 8832(94)s
+8242(..)s
+[ /Rect [8832 12531 9066 12698] /Subtype /Link /Dest /LOUT16_449_all_1 /ANN pdfmark
+8832(94)s
grestore
0 0 0 0 240 288 60 1417 -14887 LoutGr2
1 LoutMargSet
@@ -1995,14 +2347,18 @@ grestore
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 240 fnt1
+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 480 9891(Since)m
+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
@@ -2066,8 +2422,16 @@ grestore
480 380(Lout)m 995(deals)s 1541(with)s 2027(something)s 3081(a)s
3251(little)s 3747(more)s 4298(complicated)s 5528(than)s 6001(rectangles:)s
240 fnt6 7079 382(objects.)m 240 fnt1 7914 380(An)m 8268(object)s
+
+[ /Dest /LOUT15_4082_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 /LOUT15_4082_pri_obje_2 /DEST pdfmark
+
+[ /Dest /LOUT15_4082_pri_obje_3 /DEST pdfmark
+
+[ /Dest /LOUT15_4067_pri_obje_1 /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
@@ -2123,7 +2487,9 @@ gsave
gsave
0 LoutMargSet
grestore
-240 fnt6 0 13205(mark)m 240 fnt1 557 13203(protruding)m
+240 fnt6 0 13205(mark)m
+[ /Dest /LOUT15_4082_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
@@ -2406,10 +2772,12 @@ grestore
grestore
end end restore
grestore
-0 2287(There)m 655(are)s
-1044(se)s 6(v)k 3(eral)k 1808(things)s 2486(to)s
-2768(note)s 3278(carefully)s 4222(here.)s 4839(White)s 5522(space)s
-6151(\(including)s 7229(tabs)s 7707(and)s 8154(ne)s 6(wlines\))k
+
+[ /Dest /LOUT15_4082_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
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
@@ -2493,7 +2861,9 @@ gsave
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 6660(set)s
+5414(o)s 3(v)k 3(erride)k 6286(the)s
+[ /Dest /LOUT15_4082_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
@@ -2505,7 +2875,9 @@ grestore
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 6327(into)s 6762(the)s 7119(space)s
+5810(to)s 6059(\207t)s
+[ /Dest /LOUT15_4082_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
2944(lines,)s 3494(its)s 3762(width)s 4355(is)s 4557(reduced)s
@@ -2527,8 +2899,10 @@ grestore
480 7163(prediction of the witches b)m 4(y m)k 2(urder)k -3(ing Duncan and becoming king of Scotland)k 480 6875(in his place)m 3(.)k 13( \(26 w)k 2(ords\))k
480 6587(})m 240 fnt1 0 6093(has)m 370(for)s 708(its)s
984(result)s 1574(the)s 1922(follo)s 6(wing)k 2899(\207v)s 3(e)k
-3311(inch)s 3780(wide)s 4301(object)s 4945([7)s 5132(]:)s
-480 5590(Macbeth)m 1356(w)s 2(as)k 1758(v)s 3(ery)k
+3311(inch)s 3780(wide)s 4301(object)s 4945([)s
+[ /Rect [5016 6092 5124 6251] /Subtype /Link /Dest /LOUTstrunk1979style /ANN pdfmark
+5016(7)s
+5124(]:)s 480 5590(Macbeth)m 1356(w)s 2(as)k 1758(v)s 3(ery)k
2216(ambitious.)s 3304(This)s 480 5302(led)m 828(him)s 1257(to)s
1493(wish)s 2000(to)s 2236(become)s 3033(king)s 3509(of)s
480 5014(Scotland.)m 1538(The)s 2023(witches)s 2861(told)s 3348(him)s
@@ -2563,7 +2937,9 @@ grestore
8397(circles,)s 0 1545(and)m 404(so)s 670(on,)s 1017(b)s 4(ut)k
1379(the)s 3(y)k 1842(do)s 2135(not)s 2501(add)s
2905(an)s 3(ything)k 3793(ne)s 6(w)k 4240(in)s
-4483(principle.)s 240 fnt5 0 752(1.2.)m 471(De\207nitions)s 240 fnt1
+4483(principle.)s 240 fnt5 0 752(1.2.)m 471(De\207nitions)s
+[ /Dest /LOUTdefinitions /DEST pdfmark
+240 fnt1
480 321(The)m 897(features)s 1691(of)s 1950(Lout)s 2451(are)s
2786(v)s 3(ery)k 3250(general.)s 4105(The)s 3(y)k
4637(do)s 4918(not)s 5272(assume)s 6020(that)s 6427(documents)s
@@ -2625,7 +3001,9 @@ 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
4389(and)s 4778(footnotes,)s 5759(for)s 6082(e)s 3(xample.)k
-240 fnt6 7037 13206(De\207nitions)m 240 fnt1 8127 13204(bridge)m 8778(the)s
+240 fnt6 7037 13206(De\207nitions)m
+[ /Dest /LOUT15_4082_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
4935(features)s 5740(\211)s 5918(footnotes,)s 6913(equations,)s 7936(pages)s
@@ -2639,9 +3017,11 @@ grestore
5261 11966(X)m 5430(',)s 5633(which)s 6291(is)s 6517(the)s
6881(name)s 7471(of)s 7758(one)s 8176(of)s 8464(Lout')s 13(s)k
0 11678(most)m 525(illustrious)s 1531(ri)s 6(v)k 6(als)k
-2100([5)s 2285(].)s 2528(Lout)s 3040(solv)s 3(es)k
-3686(it)s 3878(easily)s 4489(enough,)s 5302(lik)s 2(e)k
-5714(this:)s 220 fnt2 480 11177(T{ /0.2f)m 6(o E }X)k 240 fnt1
+2100([)s
+[ /Rect [2171 11675 2277 11843] /Subtype /Link /Dest /LOUTknuth1984tex /ANN pdfmark
+2171(5)s 2277(].)s 2520(Lout)s 3032(solv)s 3(es)k
+3678(it)s 3870(easily)s 4481(enough,)s 5294(lik)s 2(e)k
+5706(this:)s 220 fnt2 480 11177(T{ /0.2f)m 6(o E }X)k 240 fnt1
0 10683(b)m 4(ut)k 373(to)s 624(type)s 1103(this)s
1511(e)s 6(v)k 3(ery)k 2098(time)s 2590(T)s
2686 10635(E)m 2794 10683(X)m 3035(is)s 3256(mentioned)s 4336(w)s 2(ould)k
@@ -2657,6 +3037,8 @@ grestore
3653(`@T)s 26(eX',)k 4451(\202)s 240 fnt1 0 8400(as)m
250(the)s 598(author)s 1269(did)s 1633(earlier)s 2301(in)s
2544(this)s 2940(paragraph.)s 480 8026(A)m 240 fnt6 706 8028(symbol)m
+
+[ /Dest /LOUT15_4082_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
@@ -2669,10 +3051,14 @@ grestore
736(to)s 973(be)s 1253(a)s 1417(symbol,)s 2227(and)s
2629(says)s 3090(what)s 3613(the)s 3959(symbol)s 4717(stands)s
5364(for)s 13(.)k 5791(The)s 240 fnt6 6217 7452(body)m
-240 fnt1 6737 7450(of)m 7006(a)s 7170(de\207nition)s 8142(is)s
+240 fnt1 6737 7450(of)m 7006(a)s 7170(de\207nition)s
+[ /Dest /LOUT15_4082_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 240 fnt1
+240 fnt6 4226 7164(in)m 9(vok)k 2(e)k
+[ /Dest /LOUT15_4082_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
2401(ripe)s 2828(for)s 3166(packaging)s 4203(in)s 4446(a)s
@@ -2695,7 +3081,9 @@ grestore
480 2699(})m 240 fnt1 0 2205(This)m 492(de\207nition)s 1483(says)s
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 220 fnt2 5300 2202(x)m 240 fnt1
+240 fnt1 5176 2205(,)m
+[ /Dest /LOUT15_4082_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
7952(in)s 9(v)k 4(ok)k 2(ed,)k 8833(all)s
@@ -2770,7 +3158,9 @@ grestore
480 12777(Lout)m 994(permits)s 1764(de\207nitions)s 2828(to)s 3070(in)s 9(v)k 4(ok)k 2(e)k
3765(themselv)s 3(es,)k 4934(a)s 5103(peculiarly)s 6115(circular)s
6905(thing)s 7453(to)s 7695(do)s 7991(which)s 8636(goes)s
-0 12489(by)m 294(the)s 642(name)s 1216(of)s 240 fnt6
+0 12489(by)m 294(the)s 642(name)s 1216(of)s
+[ /Dest /LOUT15_4082_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
4695(a)s 4861(recursi)s 6(v)k 3(e)k 5783(de\207nition:)s
@@ -2844,7 +3234,11 @@ grestore
4552(sho)s 6(wing)k 5406(ho)s 6(w)k 5862(de\207nitions)s
6918(may)s 7379(be)s 7656(used)s 8148(to)s 8382(specify)s
0 2309(the)m 240 fnt6 348 2311(pa)m 2(g)k 2(e)k
-863(layout)s 240 fnt1 1525 2309(of)m 1796(a)s 1962(document.)s
+863(layout)s
+[ /Dest /LOUT15_4067_pri_defi_1 /DEST pdfmark
+
+[ /Dest /LOUT15_4082_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
6527(lik)s 2(e)k 6939(this:)s 220 fnt2 480 1808(def @P)m 8(age)k
@@ -3157,8 +3551,12 @@ grestore
8086 3366(instead)m 8855(of)s 220 fnt2 0 3075(@F)m 6(ootPlace)k
240 fnt1 1196 3078(.)m 1360(And)s 1831(on)s 2128(and)s
2532(on.)s 240 fnt5 0 2330(1.3.)m 471(Cr)s 4(oss)k
-1106(r)s 4(efer)k 4(ences)k 240 fnt1 480 1898(A)m
-705(cross)s 1241(reference)s 2178(in)s 2415(common)s 3304(terminology)s
+1106(r)s 4(efer)k 4(ences)k
+[ /Dest /LOUTcross /DEST pdfmark
+240 fnt1 480 1898(A)m
+705(cross)s 1241(reference)s
+[ /Dest /LOUT15_4082_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
8098(page)s 8600(57')s 8946(\211)s 0 1610(a)m 168(reference)s
@@ -3173,10 +3571,16 @@ grestore
805(57)s 1093(mo)s 3(v)k 3(es)k 1763(to)s
2002(page)s 2510(63,)s 2857(and)s 3261(all)s 3554(the)s
3902(cross)s 4444(references)s 5475(must)s 6000(be)s 6282(changed.)s
-480 660(The)m 917(Scribe)s 1593(document)s 2606(formatter)s 9(,)k
-3601(de)s 6(v)k 3(eloped)k 4644(by)s 4947(Brian)s
-5545(K.)s 5831(Reid)s 6351([6)s 6543(],)s 6739(introduced)s
-7829(a)s 8005(scheme)s 8788(for)s 0 372(k)m 2(eeping)k
+480 660(The)m 918(Scribe)s
+[ /Dest /LOUT15_4082_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] /Subtype /Link /Dest /LOUTreid1980scribe /ANN pdfmark
+6428(6)s 6541(],)s
+
+[ /Dest /LOUT15_4082_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
5241(names)s 5898(to)s 6132(tables,)s 6791(\207gures,)s 7544(etc.,)s
@@ -3287,12 +3691,20 @@ grestore
1049(be)s 3(ginning)k 2054(at)s 2284(the)s 2629(cross)s
3169(reference)s 4109(and)s 4511(ending)s 5213(at)s 5443(the)s
5788(top)s 6145(of)s 6413(the)s 6759(tar)s 4(get)k
+
+[ /Dest /LOUT15_4082_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 220 fnt2 7888 5856(f)m 6(oll_or_prec)k
+240 fnt1 7385 5859(,)m 7488(and)s
+[ /Dest /LOUT15_4082_pri_cros_5 /DEST pdfmark
+
+[ /Dest /LOUT15_4082_pri_cros_6 /DEST pdfmark
+
+[ /Dest /LOUT15_4082_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
4116 5571(points)m 4792(to)s 5071(some)s 5671(table)s 6231(appearing)s
@@ -3435,7 +3847,9 @@ grestore
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 240 fnt1 480 10497(It)m 695(is)s
+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
@@ -3579,6 +3993,8 @@ grestore
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 /LOUT15_4082_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
@@ -3614,8 +4030,8 @@ gsave
0 0 translate
30.0000 rotate
gsave
-0 0 translate
-240 fnt1 68 0 0 0 240 288 60 LoutGraphic
+0 1 translate
+240 fnt1 68 -2 0 -1 240 288 60 LoutGraphic
gsave
0 0 moveto xsize 0 lineto stroke
grestore
@@ -3635,8 +4051,8 @@ gsave
0 0 translate
-30.0000 rotate
gsave
-0 0 translate
-240 fnt1 68 0 0 0 240 288 60 LoutGraphic
+0 1 translate
+240 fnt1 68 -2 0 -1 240 288 60 LoutGraphic
gsave
0 0 moveto xsize 0 lineto stroke
grestore
@@ -3684,8 +4100,8 @@ gsave
0 0 translate
30.0000 rotate
gsave
-0 0 translate
-240 fnt1 68 0 0 0 240 288 60 LoutGraphic
+0 1 translate
+240 fnt1 68 -2 0 -1 240 288 60 LoutGraphic
gsave
0 0 moveto xsize 0 lineto stroke
grestore
@@ -3705,8 +4121,8 @@ gsave
0 0 translate
-30.0000 rotate
gsave
-0 0 translate
-240 fnt1 68 0 0 0 240 288 60 LoutGraphic
+0 1 translate
+240 fnt1 68 -2 0 -1 240 288 60 LoutGraphic
gsave
0 0 moveto xsize 0 lineto stroke
grestore
@@ -3720,8 +4136,8 @@ grestore
4335 9295 translate
30.0000 rotate
gsave
-0 0 translate
-240 fnt1 68 0 0 0 240 288 60 LoutGraphic
+0 1 translate
+240 fnt1 68 -2 0 -1 240 288 60 LoutGraphic
gsave
0 0 moveto xsize 0 lineto stroke
grestore
@@ -3741,8 +4157,8 @@ gsave
4335 9295 translate
-30.0000 rotate
gsave
-0 0 translate
-240 fnt1 68 0 0 0 240 288 60 LoutGraphic
+0 1 translate
+240 fnt1 68 -2 0 -1 240 288 60 LoutGraphic
gsave
0 0 moveto xsize 0 lineto stroke
grestore
@@ -3770,7 +4186,9 @@ grestore
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 240 fnt1 6013 2105(clause,)m
+4889(special)s 220 fnt2 5607 2102(into)m
+[ /Dest /LOUT15_4082_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
@@ -3845,6 +4263,8 @@ grestore
220 fnt2 1903 12252(@F)m 6(ootPlace)k 3(,)k 240 fnt1
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 /LOUT15_4082_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
@@ -3862,6 +4282,8 @@ grestore
8778(the)s 0 10018(body)m 533(of)s 802(a)s 966(symbol)s
1725(it)s 1915(in)s 9(v)k 4(ok)k 2(es,)k
2750(is)s 2959(called)s 3585(a)s 240 fnt6 3749 10020(r)m 8(eceptive)k
+
+[ /Dest /LOUT15_4082_pri_gall_4 /DEST pdfmark
240 fnt1 4668 10018(symbol,)m 5478(meaning)s 6353(recepti)s 6(v)k 3(e)k
7274(to)s 7511(g)s 1(alle)k 3(ys.)k 220 fnt2
8346 10015(@F)m 6(oot)k 240 fnt1 8998 10018(-)m 220 fnt2
@@ -3885,7 +4307,9 @@ grestore
2228(through)s 3023(the)s 3364(construction)s 4596(of)s 4861(our)s
5233(e)s 3(xample)k 6089(document.)s 7190(Initially)s 7992(there)s
8518(is)s 8721(just)s 0 8204(the)m 348(one)s 240 fnt6
-750 8206(r)m 10(oot)k 240 fnt1 1203 8204(g)m 1(alle)k 3(y)k 15(,)k
+750 8206(r)m 10(oot)k
+[ /Dest /LOUT15_4082_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
3315 7732(@P)m 7(ageList)k gsave
@@ -3895,8 +4319,8 @@ gsave
0 0 translate
30.0000 rotate
gsave
-0 0 translate
-240 fnt1 68 0 0 0 240 288 60 LoutGraphic
+0 1 translate
+240 fnt1 68 -2 0 -1 240 288 60 LoutGraphic
gsave
0 0 moveto xsize 0 lineto stroke
grestore
@@ -3916,8 +4340,8 @@ gsave
0 0 translate
-30.0000 rotate
gsave
-0 0 translate
-240 fnt1 68 0 0 0 240 288 60 LoutGraphic
+0 1 translate
+240 fnt1 68 -2 0 -1 240 288 60 LoutGraphic
gsave
0 0 moveto xsize 0 lineto stroke
grestore
@@ -3962,8 +4386,8 @@ gsave
0 0 translate
30.0000 rotate
gsave
-0 0 translate
-240 fnt1 68 0 0 0 240 288 60 LoutGraphic
+0 1 translate
+240 fnt1 68 -2 0 -1 240 288 60 LoutGraphic
gsave
0 0 moveto xsize 0 lineto stroke
grestore
@@ -3983,8 +4407,8 @@ gsave
0 0 translate
-30.0000 rotate
gsave
-0 0 translate
-240 fnt1 68 0 0 0 240 288 60 LoutGraphic
+0 1 translate
+240 fnt1 68 -2 0 -1 240 288 60 LoutGraphic
gsave
0 0 moveto xsize 0 lineto stroke
grestore
@@ -4012,8 +4436,8 @@ gsave
0 0 translate
30.0000 rotate
gsave
-0 0 translate
-240 fnt1 68 0 0 0 240 288 60 LoutGraphic
+0 1 translate
+240 fnt1 68 -2 0 -1 240 288 60 LoutGraphic
gsave
0 0 moveto xsize 0 lineto stroke
grestore
@@ -4033,8 +4457,8 @@ gsave
0 0 translate
-30.0000 rotate
gsave
-0 0 translate
-240 fnt1 68 0 0 0 240 288 60 LoutGraphic
+0 1 translate
+240 fnt1 68 -2 0 -1 240 288 60 LoutGraphic
gsave
0 0 moveto xsize 0 lineto stroke
grestore
@@ -4139,8 +4563,8 @@ gsave
0 0 translate
30.0000 rotate
gsave
-0 0 translate
-240 fnt1 68 0 0 0 240 288 60 LoutGraphic
+0 1 translate
+240 fnt1 68 -2 0 -1 240 288 60 LoutGraphic
gsave
0 0 moveto xsize 0 lineto stroke
grestore
@@ -4160,8 +4584,8 @@ gsave
0 0 translate
-30.0000 rotate
gsave
-0 0 translate
-240 fnt1 68 0 0 0 240 288 60 LoutGraphic
+0 1 translate
+240 fnt1 68 -2 0 -1 240 288 60 LoutGraphic
gsave
0 0 moveto xsize 0 lineto stroke
grestore
@@ -4200,8 +4624,8 @@ gsave
0 0 translate
30.0000 rotate
gsave
-0 0 translate
-240 fnt1 68 0 0 0 240 288 60 LoutGraphic
+0 1 translate
+240 fnt1 68 -2 0 -1 240 288 60 LoutGraphic
gsave
0 0 moveto xsize 0 lineto stroke
grestore
@@ -4221,8 +4645,8 @@ gsave
0 0 translate
-30.0000 rotate
gsave
-0 0 translate
-240 fnt1 68 0 0 0 240 288 60 LoutGraphic
+0 1 translate
+240 fnt1 68 -2 0 -1 240 288 60 LoutGraphic
gsave
0 0 moveto xsize 0 lineto stroke
grestore
@@ -4262,8 +4686,8 @@ gsave
0 0 translate
30.0000 rotate
gsave
-0 0 translate
-240 fnt1 68 0 0 0 240 288 60 LoutGraphic
+0 1 translate
+240 fnt1 68 -2 0 -1 240 288 60 LoutGraphic
gsave
0 0 moveto xsize 0 lineto stroke
grestore
@@ -4283,8 +4707,8 @@ gsave
0 0 translate
-30.0000 rotate
gsave
-0 0 translate
-240 fnt1 68 0 0 0 240 288 60 LoutGraphic
+0 1 translate
+240 fnt1 68 -2 0 -1 240 288 60 LoutGraphic
gsave
0 0 moveto xsize 0 lineto stroke
grestore
@@ -4334,8 +4758,8 @@ gsave
0 0 translate
30.0000 rotate
gsave
-0 0 translate
-240 fnt1 68 0 0 0 240 288 60 LoutGraphic
+0 1 translate
+240 fnt1 68 -2 0 -1 240 288 60 LoutGraphic
gsave
0 0 moveto xsize 0 lineto stroke
grestore
@@ -4355,8 +4779,8 @@ gsave
0 0 translate
-30.0000 rotate
gsave
-0 0 translate
-240 fnt1 68 0 0 0 240 288 60 LoutGraphic
+0 1 translate
+240 fnt1 68 -2 0 -1 240 288 60 LoutGraphic
gsave
0 0 moveto xsize 0 lineto stroke
grestore
@@ -4442,20 +4866,38 @@ gsave
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 240 fnt5
+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
+
+[ /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 5857(which)s 6492(may)s 6951(be)s 7226(either)s
+5757 10655(,)m
+[ /Dest /LOUT15_4082_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 480 9829(letter)m 220 fnt2 1934 9826(@ab-zAB-Z_)m
+6914 10367(chosen)m 7636(from:)s
+[ /Dest /LOUT15_4082_det_lexi_2 /DEST pdfmark
+
+[ /Dest /LOUT15_4082_det_lexi_3 /DEST pdfmark
+
+[ /Dest /LOUT15_4082_det_lexi_4 /DEST pdfmark
+
+[ /Dest /LOUT15_4082_det_lexi_5 /DEST pdfmark
+
+[ /Dest /LOUT15_4082_det_lexi_6 /DEST pdfmark
+
+[ /Dest /LOUT15_4082_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
@@ -4477,7 +4919,13 @@ grestore
4543(pre)s 6(vious)k 5412(classes.)s 480 6610(A)m 240 fnt6
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 6805(Lout)s 7304(treats)s
+4539(white)s 5113(space)s 5687(characters.)s
+[ /Dest /LOUT15_4082_det_lexi_8 /DEST pdfmark
+
+[ /Dest /LOUT15_4082_det_lexi_9 /DEST pdfmark
+
+[ /Dest /LOUT15_4082_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
3985(it)s 4173(is)s 4379(useful)s 5014(for)s 5348(getting)s
@@ -4485,7 +4933,9 @@ grestore
0 6034(source)m 680(code.)s 480 5660(A)m 240 fnt6 709 5662(delimiter)m
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 6754(is)s 6963(the)s 7310(name)s 7883(of)s
+6113(which)s
+[ /Dest /LOUT15_4082_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
1945 5369(//)m 240 fnt1 2159 5372(are)m 2534(delimiters.)s 3681(When)s
@@ -4511,7 +4961,9 @@ grestore
855 1323(identi\207er)m 240 fnt1 1808 1321(is)m 2043(a)s 2234(sequence)s
3192(of)s 3488(one)s 3915(or)s 4199(more)s 4772(letters)s
5430(which)s 6097(is)s 6332(the)s 6705(name)s 7304(of)s
-7600(a)s 7791(symbol.)s 8685(It)s 8916(is)s 0 1033(con)m 9(v)k 3(entional)k
+7600(a)s
+[ /Dest /LOUT15_4082_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
5436 1030(@)m 240 fnt1 5627 1033(;)m 5829(Basser)s 6556(Lout)s
@@ -4594,47 +5046,63 @@ grestore
3361 12128(@HSpan)m 3361 11840(@Include)m 3361 11552(@IncludeGr)m 2(aphic)k 3361 11264(@Inser)m -8(t)k
3361 10976(@K)m 8(er)k -5(nShr)k -3(ink)k 3361 10688(@K)m 8(e)k 4(y)k
3361 10400(@Language)m 3361 10112(@LClos)m 3361 9824(@LEn)m 4(v)k 3361 9536(@LInput)m
-3361 9248(@L)m 24(Vis)k 3361 8960(@LUse)m 3361 8672(@Meld)m 3361 8384(@Merge)m
-3361 8096(@Min)m 2(us)k 3361 7808(@Moment)m 3361 7520(@Ne)m 6(xt)k
-3361 7232(@NotRe)m 6(v)k 5(ealed)k 3361 6944(@Null)m 3361 6656(@OneCol)m
-3361 6368(@OneOf)m 3361 6080(@OneRo)m 3(w)k 3361 5792(@Open)m 3361 5504(@Optimiz)m 3(e)k
-3361 5216(@Outline)m 3361 4928(@P)m 26(Adjust)k 3361 4640(@P)m 8(ageLabel)k
-3361 4352(@PlainGr)m 2(aphic)k 3361 4064(@Plus)m 3361 3776(@PrependGr)m 2(aphic)k
-3361 3488(@Ra)m 4(wV)k 17(erbatim)k 5855 12416(@Rotate)m 5855 12128(@Rump)m
-5855 11840(@Scale)m 5855 11552(@SetColor)m 5855 11264(@SetColour)m 5855 10976(@SetHeaderComponent)m 5855 10688(@Space)m
-5855 10400(@Star)m -8(tHSpan)k 5855 10112(@Star)m -8(tHVSpan)k 5855 9824(@Star)m -8(tVSpan)k
-5855 9536(@SysDatabase)m 5855 9248(@SysInclude)m 5855 8960(@SysIncludeGr)m 2(aphic)k 5855 8672(@SysPrependGr)m 2(aphic)k
-5855 8384(@T)m 26(ag)k 5855 8096(@T)m 26(agged)k 5855 7808(@T)m 26(arget)k
-5855 7520(@Under)m -3(line)k 5855 7232(@Use)m 5855 6944(@V)m 17(Adjust)k
-5855 6656(@VContr)m 2(act)k 5855 6368(@VCo)m 3(v)k 5(er)k
-5855 6080(@V)m 17(erbatim)k 5855 5792(@VExpand)m 5855 5504(@VLimited)m 5855 5216(@VScale)m
-5855 4928(@VShift)m 5855 4640(@VSpan)m 5855 4352(@Wide)m 5855 4064(@Y)m 4(ield)k
-5855 3776(@YUnit)m 5855 3488(@ZUnit)m 240 fnt1 0 2745(plus)m 498(the)s
+3361 9248(@L)m 24(Vis)k 3361 8960(@LUse)m 3361 8672(@LinkSource)m 3361 8384(@LinkDest)m
+3361 8096(@Meld)m 3361 7808(@Merge)m 3361 7520(@Min)m 2(us)k 3361 7232(@Moment)m
+3361 6944(@Ne)m 6(xt)k 3361 6656(@NotRe)m 6(v)k 5(ealed)k
+3361 6368(@Null)m 3361 6080(@OneCol)m 3361 5792(@OneOf)m 3361 5504(@OneRo)m 3(w)k
+3361 5216(@Open)m 3361 4928(@Optimiz)m 3(e)k 3361 4640(@Outline)m 3361 4352(@P)m 26(Adjust)k
+3361 4064(@P)m 8(ageLabel)k 3361 3776(@PlainGr)m 2(aphic)k 3361 3488(@Plus)m
+3361 3200(@PrependGr)m 2(aphic)k 5855 12416(@Ra)m 4(wV)k 17(erbatim)k
+5855 12128(@Rotate)m 5855 11840(@Rump)m 5855 11552(@Scale)m 5855 11264(@SetColor)m 5855 10976(@SetColour)m
+5855 10688(@SetHeaderComponent)m 5855 10400(@Space)m 5855 10112(@Star)m -8(tHSpan)k 5855 9824(@Star)m -8(tHVSpan)k
+5855 9536(@Star)m -8(tVSpan)k 5855 9248(@SysDatabase)m 5855 8960(@SysInclude)m 5855 8672(@SysIncludeGr)m 2(aphic)k
+5855 8384(@SysPrependGr)m 2(aphic)k 5855 8096(@T)m 26(ag)k 5855 7808(@T)m 26(agged)k
+5855 7520(@T)m 26(arget)k 5855 7232(@Under)m -3(line)k 5855 6944(@Use)m
+5855 6656(@V)m 17(Adjust)k 5855 6368(@VContr)m 2(act)k 5855 6080(@VCo)m 3(v)k 5(er)k
+5855 5792(@V)m 17(erbatim)k 5855 5504(@VExpand)m 5855 5216(@VLimited)m 5855 4928(@VScale)m
+5855 4640(@VShift)m 5855 4352(@VSpan)m 5855 4064(@Wide)m 5855 3776(@Y)m 4(ield)k
+5855 3488(@YUnit)m 5855 3200(@ZUnit)m 240 fnt1 0 2704(plus)m 498(the)s
894(names)s 1605(of)s 1924(the)s 2321(parameters)s 3467(of)s
-220 fnt2 3786 2742(@Moment)m 240 fnt1 4798 2745(.)m 5011(The)s
-5487(symbols)s 220 fnt2 6385 2742(@LClos)m 240 fnt1 7161 2745(,)m
-220 fnt2 7316 2742(@LEn)m 4(v)k 240 fnt1 8034 2745(,)m
-220 fnt2 8190 2742(@LInput)m 240 fnt1 9019 2745(,)m 220 fnt2
-0 2454(@L)m 24(Vis)k 240 fnt1 722 2457(and)m 220 fnt2
-1170 2454(@LUse)m 240 fnt1 2001 2457(appear)m 2742(in)s 3029(cross)s
+220 fnt2 3786 2701(@Moment)m 240 fnt1 4798 2704(.)m 5011(The)s
+5487(symbols)s 220 fnt2 6385 2701(@LClos)m 240 fnt1 7161 2704(,)m
+220 fnt2 7316 2701(@LEn)m 4(v)k 240 fnt1 8034 2704(,)m
+
+[ /Dest /LOUT15_4082_det_lexi_13 /DEST pdfmark
+
+[ /Dest /LOUT15_4082_det_lexi_14 /DEST pdfmark
+
+[ /Dest /LOUT15_4082_det_lexi_15 /DEST pdfmark
+
+[ /Dest /LOUT15_4082_det_lexi_16 /DEST pdfmark
+
+[ /Dest /LOUT15_4082_det_lexi_17 /DEST pdfmark
+220 fnt2 8190 2701(@LInput)m 240 fnt1 9019 2704(,)m 220 fnt2
+0 2413(@L)m 24(Vis)k 240 fnt1 722 2416(and)m 220 fnt2
+1170 2413(@LUse)m 240 fnt1 2001 2416(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 2169(use)m
-375(else)s 6(where.)k 480 1795(A)m 728(sequence)s 1679(of)s
+7538(and)s 7986(are)s 8377(not)s 8788(for)s 0 2128(use)m
+375(else)s 6(where.)k 480 1754(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 1507(by)m 304(def)s 2(ault)k 1036(a)s 240 fnt6
-1213 1509(liter)m 3(al)k 1864(wor)s 8(d)k 240 fnt1
-2355 1507(,)m 2473(which)s 3126(means)s 3799(that)s 4227(it)s
-4430(will)s 4867(pass)s 5341(through)s 6154(Lout)s 6677(unchanged.)s
-7890(An)s 8251(arbitrary)s 0 1219(sequence)m 926(of)s 1190(characters)s
+0 1466(by)m 304(def)s 2(ault)k 1036(a)s 240 fnt6
+1213 1468(liter)m 3(al)k 1864(wor)s 8(d)k 240 fnt1
+2355 1466(,)m 2473(which)s 3126(means)s 3799(that)s 4227(it)s
+4430(will)s
+[ /Dest /LOUT15_4082_det_lexi_18 /DEST pdfmark
+
+[ /Dest /LOUT15_4082_det_lexi_19 /DEST pdfmark
+
+[ /Dest /LOUT15_4082_det_lexi_20 /DEST pdfmark
+4867(pass)s 5341(through)s 6154(Lout)s 6677(unchanged.)s
+7890(An)s 8251(arbitrary)s 0 1178(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 1216("{ }",)m 240 fnt1
-6457 1219(is)m 6660(also)s 7091(a)s 7250(literal)s 7853(w)s 2(ord.)k
-8499(Space)s 0 931(characters)m 1005(may)s 1458(be)s 1726(included,)s
+5082(e)s 3(xample)k 220 fnt2 5938 1175("{ }",)m 240 fnt1
+6457 1178(is)m 6660(also)s 7091(a)s 7250(literal)s 7853(w)s 2(ord.)k
+8499(Space)s 0 890(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 643(only)m 480(between)s
+6645(character)s 7566(sequences,)s 8629(used)s 0 602(only)m 480(between)s
1334(quotes,)s 2066(for)s 2404(obtaining)s 3361(otherwise)s 4346(inaccessible)s
5556(characters:)s
grestore
@@ -4701,7 +5169,9 @@ grestore
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 220 fnt2 3328 11388(#)m 240 fnt1
+1451(comment)s 2398(character)s
+[ /Dest /LOUT15_4082_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
8110(end)s 8511(of)s 8778(the)s 0 11103(line)m 414(is)s
@@ -4710,7 +5180,9 @@ grestore
6593(this:)s 220 fnt2 480 10606(# Lout user man)m 2(ual)k 480 10318(# J)m 6(.)k 13( Kingston, J)k 4(une 1989)k
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 240 fnt1
+5184(on.)s 240 fnt6 480 9447(Macr)m 10(os)k
+[ /Dest /LOUT15_4082_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
6489(a)s 6667(sequence)s 7612(of)s 7895(te)s 3(xtual)k
@@ -4759,19 +5231,27 @@ grestore
4230(pointless;)s 5192(ho)s 6(we)k 6(v)k 3(er)k 9(,)k
6099(an)s 220 fnt2 6382 4819(impor)m -8(t)k 240 fnt1
7055 4822(clause)m 7708(is)s 7918(permitted.)s 240 fnt5 0 4030(2.2.)m
-471(Named)s 1257(parameters)s 240 fnt1 480 3553(In)m 728(addition)s
+471(Named)s 1257(parameters)s
+[ /Dest /LOUTnamed /DEST pdfmark
+240 fnt1 480 3553(In)m 728(addition)s
1560(to)s 1790(left)s 2159(and)s 2554(right)s 3056(\(or)s
3386(body\))s 3985(parameters,)s 5130(a)s 5288(symbol)s 6039(may)s
6496(ha)s 4(v)k 3(e)k 6989(an)s 3(y)k
7377(number)s 8159(of)s 240 fnt6 8421 3555(named)m 0 3267(par)m 3(ameter)k 2(s)k
-240 fnt1 1080 3265(:)m 220 fnt2 480 2768(def @Chapter)m 480 2480( named @T)m 26(ag {})k
+240 fnt1 1080 3265(:)m
+[ /Dest /LOUT15_4082_det_name_1 /DEST pdfmark
+
+[ /Dest /LOUT15_4082_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
2336(in)s 2580(between)s 3434(those)s 3996(of)s 4267(an)s 3(y)k
4665(left)s 5042(and)s 5447(right)s 5958(parameters,)s 7113(and)s
7517(each)s 8013(is)s 8224(follo)s 6(wed)k 0 258(by)m
293(a)s 240 fnt6 457 260(default)m 1183(value)s 240 fnt1
-1753 258(between)m 2605(braces.)s 3377(When)s 220 fnt2 4004 255(@Chapter)m
+1753 258(between)m
+[ /Dest /LOUT15_4082_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
@@ -4856,7 +5336,9 @@ grestore
6705(it)s 6886(will)s 7302(still)s 7703(use)s 8068(the)s
8405(def)s 2(ault)k 0 8956(v)m 6(alue)k 568(as)s
818(just)s 1223(described.)s 480 8582(A)m 719(named)s 220 fnt2
-1424 8579(@T)m 26(ag)k 240 fnt1 2057 8582(parameter)m 3080(does)s
+1424 8579(@T)m 26(ag)k 240 fnt1 2057 8582(parameter)m
+[ /Dest /LOUT15_4082_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
7940(instead,)s 8733(if)s 8960(a)s 0 8294(def)m 2(ault)k
@@ -4875,7 +5357,9 @@ grestore
8127(v)s 6(alue)k 8700(will)s 0 7430(be)m 282(replaced)s
1149(by)s 1443(an)s 1726(in)s 9(v)k 3(ented)k
2596(one.)s 480 7056(Named)m 1229(parameters)s 2327(may)s 2793(ha)s 4(v)k 3(e)k
-3294(parameters,)s 4448(as)s 4698(in)s 4941(the)s 5289(follo)s 6(wing)k
+3294(parameters,)s
+[ /Dest /LOUTstrange /DEST pdfmark
+4448(as)s 4698(in)s 4941(the)s 5289(follo)s 6(wing)k
6266(de\207nition:)s 220 fnt2 480 6555(def @Str)m 2(ange)k 480 6267( named @F)m 6(or)k -5(mat r)k -3(ight @V)k 15(al { [@V)k 15(al] })k
480 5979( r)m -3(ight x)k 480 5691({)m 480 5403( @F)m 6(or)k -5(mat x)k
480 5115(})m 240 fnt1 0 4621(The)m 428(named)s 1125(parameter)s
@@ -4966,7 +5450,11 @@ grestore
1281(are)s 1628(tw)s 2(o)k 2038(major)s 2655(ones.)s
240 fnt5 0 11836(2.3.)m 471(Nested)s 1216(de\207nitions,)s 2392(body)s
2954(parameters,)s 4236(extend,)s 5027(import,)s 5844(and)s 6285(export)s
+
+[ /Dest /LOUTvisibility /DEST pdfmark
240 fnt1 480 11359(A)m 710(de\207nition)s 1684(may)s 2150(contain)s
+
+[ /Dest /LOUT15_4082_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
@@ -5074,14 +5562,21 @@ grestore
4881(the)s 5219(enclosing)s 6179(symbol.)s 7038(The)s 7456(\207rst)s
7877(and)s 8270(simplest)s 0 2288(of)m 267(these)s 810(features)s
1611(is)s 1817(the)s 240 fnt6 2161 2290(body)m 2678(par)s 3(ameter)k
-240 fnt1 3677 2288(,)m 3780(an)s 4059(alternati)s 6(v)k 3(e)k
+240 fnt1 3677 2288(,)m
+[ /Dest /LOUT15_4082_det_visi_2 /DEST pdfmark
+
+[ /Dest /LOUT15_4082_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 1052(package)s
-1883([4)s 2076(,)s 2174(Chapter)s 2982(7])s 3211(is)s
-3412(a)s 3569(classic)s 4249(e)s 3(xample)k 5102(of)s
-5364(the)s 5703(use)s 6069(of)s 6331(a)s 6488(body)s
-7013(parameter)s 13(.)k 8109(In)s 8355(outline,)s 0 1712(it)m
-192(looks)s 762(lik)s 2(e)k 1174(this:)s
+7502(The)s 7926(Eq)s 8245(equation)s 0 2000(formatting)m 1053(package)s
+1884([)s
+[ /Rect [1955 2000 2069 2162] /Subtype /Link /Dest /LOUTkingston1995lout_user /ANN pdfmark
+1955(4)s 2069(,)s 2168(Chapter)s 2976(7])s
+3205(is)s 3407(a)s 3564(classic)s 4244(e)s 3(xample)k
+5099(of)s 5361(the)s 5700(use)s 6067(of)s 6329(a)s
+6486(body)s 7012(parameter)s 13(.)k 8108(In)s 8355(outline,)s
+0 1712(it)m 192(looks)s 762(lik)s 2(e)k 1174(this:)s
+
grestore
gsave
1417 -15423 translate
@@ -5148,7 +5643,9 @@ grestore
7194(to)s 7454(outside)s 8222(the)s 8592(body)s 0 9261(of)m
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 2725(preceding)s 3724(the)s 4075(de\207nition)s 5052(as)s
+2018 9261(clause,)m
+[ /Dest /LOUT15_4082_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
817(outside)s 1566(the)s 1916(body)s 2452(of)s 220 fnt2
@@ -5202,7 +5699,9 @@ grestore
3598(parameters)s 4761(may)s 5292(be)s 5639(made)s 6279(visible)s
7037(within)s 7770(a)s 8002(subsequent)s 0 3196(de\207nition)m 974(or)s
1233(macro)s 1883(by)s 2177(preceding)s 3173(it)s 3365(with)s
-3847(an)s 220 fnt2 4130 3193(impor)m -8(t)k 240 fnt1
+3847(an)s 220 fnt2 4130 3193(impor)m -8(t)k
+[ /Dest /LOUT15_4082_det_visi_5 /DEST pdfmark
+240 fnt1
4803 3196(clause,)m 5507(lik)s 2(e)k 5919(this:)s 220 fnt2
480 2695(impor)m -8(t @Eq)k 480 2407(def p)m 6(ythag { sqr)k -8(t { x sup 2 + y sup 2 } })k
240 fnt1 0 1908(Note)m 548(ho)s 6(we)k 6(v)k 3(er)k
@@ -5465,7 +5964,9 @@ grestore
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
-2335(body)s 2897(parameters)s 240 fnt1 480 8374(A)m 719(right)s
+2335(body)s 2897(parameters)s
+[ /Dest /LOUTfilters /DEST pdfmark
+240 fnt1 480 8374(A)m 719(right)s
1239(or)s 1507(body)s 2050(parameter)s 3073(may)s 3548(be)s
3839(\207ltered)s 4582(by)s 4885(some)s 5455(other)s 6015(computer)s
6987(program)s 7866(before)s 8541(being)s 0 8086(included)m 882(by)s
@@ -5633,7 +6134,7 @@ grestore
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
882(in)s 1125(the)s 1473(usual)s 2033(form)s 2557(\(Section)s
-3410(3.42\):)s 220 fnt2 480 2821(@Sor)m -8(t {)k 480 2533(A)m 6(usten, J)k 4(ane)k
+3410(3.43\):)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
@@ -5726,10 +6227,14 @@ grestore
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
-2118(associati)s 2(vity)k 3420(of)s 3692(symbols)s 240 fnt1
+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 4538(which)s 5209(is)s 5448(a)s
+240 fnt1 4401 10207(,)m
+[ /Dest /LOUT15_4082_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
1715(for)s 2053(an)s 2336(object,)s 3027(the)s 3375(one)s
@@ -5749,6 +6254,8 @@ grestore
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
+
+[ /Dest /LOUT15_4082_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
7180(op1)s 7564(b)s 7739(op2)s 8156(c)s 240 fnt1
@@ -5890,24 +6397,34 @@ grestore
7230(practice)s 8031(than)s 8490(a)s 8645(pure)s 0 8597(precedence)m
1131(rule)s 1558(can)s 1947(do.)s 240 fnt5 0 7804(2.6.)m
471(The)s 926(style)s 1446(and)s 1887(size)s 2314(of)s
-2586(objects)s 240 fnt1 480 7327(This)m 944(section)s 1666(e)s 3(xplains)k
+2586(objects)s
+[ /Dest /LOUTsize /DEST pdfmark
+240 fnt1 480 7327(This)m 944(section)s 1666(e)s 3(xplains)k
2499(ho)s 6(w)k 2948(Lout)s 3448(determines)s 4535(the)s
4870(style)s 5365(and)s 5757(size)s 6172(of)s 6431(each)s
6914(object.)s 7650(T)s 19(ogether)k 9(,)k 8579(these)s
0 7039(attrib)m 4(utes)k 935(determine)s 1946(the)s 2294(object')s 13(s)k
3088(\207nal)s 3568(appearance)s 4699(in)s 4942(the)s 5290(output.)s
+
+[ /Dest /LOUT15_4082_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 0 5659(\213)m 480(Whether)s
+5932 6159(f)m 240 fnt1 6050 6162(unit\);)m
+[ /Dest /LOUT12_1492_det_size_1 /DEST pdfmark
+0 5659(\213)m 480(Whether)s
1363(small)s 1935(capitals)s 2715(are)s 3062(in)s 3305(ef)s 6(fect)k
-3901(or)s 4160(not;)s 0 5156(\213)m 480(What)s 1058(g)s 1(ap)k
+3901(or)s 4160(not;)s
+[ /Dest /LOUT12_1492_det_size_2 /DEST pdfmark
+0 5156(\213)m 480(What)s 1058(g)s 1(ap)k
1456(to)s 1695(replace)s 2440(a)s 2606(single)s 3233(space)s
3820(between)s 4674(tw)s 2(o)k 5084(objects)s 5812(by)s
6106(\(also)s 6623(de\207ning)s 7461(the)s 220 fnt2 7809 5153(s)m
-240 fnt1 7972 5156(unit\);)m 0 4653(\213)m 480(The)s 900(interpretation)s
+240 fnt1 7972 5156(unit\);)m
+[ /Dest /LOUT12_1492_det_size_3 /DEST pdfmark
+0 4653(\213)m 480(The)s 900(interpretation)s
2235(to)s 2465(place)s 3017(on)s 3306(white)s 3884(space)s
4463(separating)s 5490(tw)s 2(o)k 5891(objects)s 6611(\()s
220 fnt2 6684 4650(lout)m 240 fnt1 7033 4653(,)m 220 fnt2
@@ -5915,28 +6432,46 @@ grestore
240 fnt1 9019 4653(,)m 220 fnt2 480 4362(troff)m 240 fnt1
855 4365(,)m 962(or)s 220 fnt2 1221 4362(te)m 6(x)k
240 fnt1 1566 4365(as)m 1816(in)s 2059(Section)s 2833(3.5\);)s
+
+[ /Dest /LOUT12_1492_det_size_4 /DEST pdfmark
0 3871(\213)m 480(The)s 908(current)s 1644(v)s 6(alue)k
2212(of)s 2483(the)s 220 fnt2 2831 3868(y)m 240 fnt1
2999 3871(and)m 220 fnt2 3403 3868(z)m 240 fnt1 3567 3871(units)m
-4083(of)s 4354(measurement)s 5688(\(Section)s 6541(3.6\);)s 0 3370(\213)m
+4083(of)s 4354(measurement)s 5688(\(Section)s 6541(3.6\);)s
+[ /Dest /LOUT12_1492_det_size_5 /DEST pdfmark
+0 3370(\213)m
480(The)s 908(kind)s 1392(of)s 1663(paragraph)s 2676(breaking)s
3566(to)s 3805(emplo)s 2(y)k 4575(\()s 220 fnt2
4648 3367(adjust)m 240 fnt1 5229 3370(,)m 220 fnt2 5336 3367(r)m 2(agged)k
-240 fnt1 6005 3370(,)m 6112(etc.\))s 0 2867(\213)m 480(What)s
+240 fnt1 6005 3370(,)m 6112(etc.\))s
+[ /Dest /LOUT12_1492_det_size_6 /DEST pdfmark
+0 2867(\213)m 480(What)s
1058(g)s 1(ap)k 1456(to)s 1695(insert)s 2285(between)s
3139(the)s 3487(lines)s 3989(of)s 4260(paragraphs)s 5360(\(also)s
5877(de\207ning)s 6715(the)s 220 fnt2 7063 2864(v)m 240 fnt1
-7232 2867(unit\);)m 0 2364(\213)m 480(Whether)s 1363(to)s 1602(permit)s
-2285(h)s 1(yphenation)k 3525(or)s 3784(not;)s 0 1861(\213)m
+7232 2867(unit\);)m
+[ /Dest /LOUT12_1492_det_size_7 /DEST pdfmark
+0 2364(\213)m 480(Whether)s 1363(to)s 1602(permit)s
+2285(h)s 1(yphenation)k 3525(or)s 3784(not;)s
+[ /Dest /LOUT12_1492_det_size_8 /DEST pdfmark
+0 1861(\213)m
480(What)s 1058(colour)s 1729(the)s 2077(object)s 2721(is)s
-2931(to)s 3170(appear)s 3867(in;)s 0 1358(\213)m 480(Whether)s
+2931(to)s 3170(appear)s 3867(in;)s
+[ /Dest /LOUT12_1492_det_size_9 /DEST pdfmark
+0 1358(\213)m 480(Whether)s
220 fnt2 1363 1355(@Outline)m 240 fnt1 2332 1358(is)m 2542(in)s
-2785(ef)s 6(fect;)k 0 874(\213)m 480(The)s 908(language)s
-1828(of)s 2099(the)s 2447(object;)s 0 371(\213)m 480(Whether)s
+2785(ef)s 6(fect;)k
+[ /Dest /LOUT12_1492_det_size_10 /DEST pdfmark
+0 874(\213)m 480(The)s 908(language)s
+1828(of)s 2099(the)s 2447(object;)s
+[ /Dest /LOUT12_1492_det_size_11 /DEST pdfmark
+0 371(\213)m 480(Whether)s
220 fnt2 1363 368(@V)m 17(Adjust)k 240 fnt1 2320 371(,)m
220 fnt2 2427 368(@HAdjust)m 240 fnt1 3473 371(and)m 220 fnt2
3877 368(@P)m 26(Adjust)k 240 fnt1 4885 371(are)m 5232(in)s
5475(ef)s 6(fect.)k
+[ /Dest /LOUT12_1492_det_size_12 /DEST pdfmark
+
grestore
gsave
1417 -15423 translate
@@ -5987,122 +6522,126 @@ 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 13368 240 288 60 LoutGraphic
gsave
0 LoutMargSet
grestore
-0 13205(The)m 423(style)s 925(of)s 1191(an)s
+0 12917(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 12917(of)m 286(a)s 467(parameter)s 1497(depends)s
+8619(style)s 0 12629(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 12629(that)m 415(it)s
+8080(\207rst)s 8527(tar)s 4(get)k 0 12341(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 12338(@F)m 6(ont)k 240 fnt1 652 12341(,)m 220 fnt2
-759 12338(@Break)m 240 fnt1 1555 12341(,)m 220 fnt2 1662 12338(@Space)m
-240 fnt1 2499 12341(,)m 220 fnt2 2606 12338(@SetColour)m 240 fnt1
-3863 12341(or)m 220 fnt2 4122 12338(@SetColor)m 240 fnt1 5197 12341(,)m
-220 fnt2 5304 12338(@Outline)m 240 fnt1 6213 12341(,)m 6320(and)s
-220 fnt2 6724 12338(@Language)m 240 fnt1 7975 12341(symbols.)m 480 11967(There)m
+0 12050(@F)m 6(ont)k 240 fnt1 652 12053(,)m 220 fnt2
+759 12050(@Break)m 240 fnt1 1555 12053(,)m 220 fnt2 1662 12050(@Space)m
+240 fnt1 2499 12053(,)m 220 fnt2 2606 12050(@SetColour)m 240 fnt1
+3863 12053(or)m 220 fnt2 4122 12050(@SetColor)m 240 fnt1 5197 12053(,)m
+220 fnt2 5304 12050(@Outline)m 240 fnt1 6213 12053(,)m 6320(and)s
+220 fnt2 6724 12050(@Language)m 240 fnt1 7975 12053(symbols.)m 480 11679(There)m
1102(are)s 1459(no)s 1761(standard)s 2639(def)s 2(ault)k
3369(v)s 6(alues)k 4035(for)s 4382(style,)s 4950(e)s 3(xcept)k
5640(that)s 6068(small)s 6649(capitals)s 7439(and)s 7852(outlining)s
-8779(are)s 0 11679(initially)m 800(of)s 6(f,)k 1183(the)s
+8779(are)s 0 11391(initially)m 800(of)s 6(f,)k 1183(the)s
1535(interpretation)s 2882(of)s 3157(white)s 3748(space)s 4339(is)s
-4553(initially)s 220 fnt2 5354 11676(lout)m 240 fnt1 5703 11679(,)m
+4553(initially)s 220 fnt2 5354 11388(lout)m 240 fnt1 5703 11391(,)m
5814(and)s 6222(the)s 6574(v)s 6(alues)k 7234(of)s
-7509(the)s 220 fnt2 7861 11676(y)m 240 fnt1 8033 11679(and)m
-220 fnt2 8441 11676(z)m 240 fnt1 8610 11679(units)m 0 11391(are)m
+7509(the)s 220 fnt2 7861 11388(y)m 240 fnt1 8033 11391(and)m
+220 fnt2 8441 11388(z)m 240 fnt1 8610 11391(units)m 0 11103(are)m
355(zero.)s 939(Therefore)s 1945(one)s 2356(must)s 2890(ensure)s
3578(that)s 4005(the)s 4362(root)s 4816(g)s 1(alle)k 3(y)k
5459(or)s 5726(each)s 6230(of)s 6510(its)s 6795(components)s
-8012(is)s 8231(enclosed)s 0 11103(in)m 220 fnt2 238 11100(@F)m 6(ont)k
-240 fnt1 890 11103(,)m 220 fnt2 992 11100(@Break)m 240 fnt1
-1788 11103(,)m 220 fnt2 1890 11100(@SetColour)m 240 fnt1 3142 11103(or)m
-220 fnt2 3396 11100(@SetColor)m 240 fnt1 4471 11103(,)m 4573(and)s
-220 fnt2 4972 11100(@Language)m 240 fnt1 6218 11103(symbols.)m 7175(From)s
-7748(there)s 8276(the)s 8619(style)s 0 10815(is)m 206(passed)s
+8012(is)s 8231(enclosed)s 0 10815(in)m 220 fnt2 238 10812(@F)m 6(ont)k
+240 fnt1 890 10815(,)m 220 fnt2 992 10812(@Break)m 240 fnt1
+1788 10815(,)m 220 fnt2 1890 10812(@SetColour)m 240 fnt1 3142 10815(or)m
+220 fnt2 3396 10812(@SetColor)m 240 fnt1 4471 10815(,)m 4573(and)s
+220 fnt2 4972 10812(@Language)m 240 fnt1 6218 10815(symbols.)m 7175(From)s
+7748(there)s 8276(the)s 8619(style)s 0 10527(is)m 206(passed)s
897(to)s 1131(incoming)s 2083(g)s 1(alle)k 3(ys)k
2802(and)s 3202(the)s 3545(objects)s 4268(within)s 4931(them.)s
-5568(Enclosure)s 6576(in)s 220 fnt2 6814 10812(@Space)m 240 fnt1
-7706 10815(is)m 7911(not)s 8272(required)s 0 10527(because)m 813(the)s
-220 fnt2 1161 10524(s)m 240 fnt1 1324 10527(unit)m 1756(is)s
-1966(also)s 2404(set)s 2729(by)s 220 fnt2 3023 10524(@F)m 6(ont)k
-240 fnt1 3735 10527(\(Section)m 4588(3.5\).)s 536 10153(The)m 959(remainder)s
+5568(Enclosure)s 6576(in)s 220 fnt2 6814 10524(@Space)m 240 fnt1
+7706 10527(is)m 7911(not)s 8272(required)s 0 10239(because)m 813(the)s
+220 fnt2 1161 10236(s)m 240 fnt1 1324 10239(unit)m 1756(is)s
+1966(also)s 2404(set)s 2729(by)s 220 fnt2 3023 10236(@F)m 6(ont)k
+240 fnt1 3735 10239(\(Section)m 4588(3.5\).)s
+[ /Dest /LOUT15_4082_det_size_2 /DEST pdfmark
+
+[ /Dest /LOUT15_4082_det_size_3 /DEST pdfmark
+
+[ /Dest /LOUT15_4082_det_size_4 /DEST pdfmark
+536 9865(The)m 959(remainder)s
1983(of)s 2249(this)s 2641(section)s 3370(e)s 3(xplains)k
4210(ho)s 6(w)k 4667(the)s 5010(size)s 5433(of)s
5699(each)s 6189(object)s 6829(\(its)s 7179(width)s 7777(and)s
-8176(height)s 8829(on)s 0 9865(the)m 353(printed)s 1094(page\))s
+8176(height)s 8829(on)s 0 9577(the)m 353(printed)s 1094(page\))s
1679(is)s 1895(determined.)s 3140(W)s 19(e)k 3514(will)s
3946(treat)s 4434(width)s 5042(only)s 15(,)k 5566(since)s
6118(height)s 6782(is)s 6997(determined)s 8136(in)s 8385(e)s 3(xactly)k
-0 9577(the)m 348(same)s 895(w)s 2(ay)k 15(,)k
+0 9289(the)m 348(same)s 895(w)s 2(ay)k 15(,)k
1384(e)s 3(xcept)k 2065(that)s 2483(the)s 2831(complications)s
4223(introduced)s 5304(by)s 5598(paragraph)s 6611(breaking)s 7501(are)s
-7848(absent.)s 480 9203(W)m 9(ith)k 1006(three)s 1539(e)s 3(xceptions)k
+7848(absent.)s 480 8915(W)m 9(ith)k 1006(three)s 1539(e)s 3(xceptions)k
2611(\(see)s 3051(belo)s 6(w\),)k 3817(the)s 4165(width)s
4768(of)s 5039(an)s 5323(object)s 5967(is)s 6178(as)s
6428(lar)s 4(ge)k 6958(as)s 7208(it)s 7401(possibly)s
-8253(could)s 8844(be)s 0 8915(without)m 784(violating)s 1679(a)s
-220 fnt2 1837 8912(@Wide)m 240 fnt1 2603 8915(symbol)m 3355(or)s
+8253(could)s 8844(be)s 0 8627(without)m 784(violating)s 1679(a)s
+220 fnt2 1837 8624(@Wide)m 240 fnt1 2603 8627(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 8627(objects.)m 841(As)s 1158(an)s 1441(aid)s 1791(to)s
+0 8339(objects.)m 841(As)s 1158(an)s 1441(aid)s 1791(to)s
2030(in)s 9(v)k 3(estig)k 1(ating)k 3305(this)s
3701(rule,)s 4179(we)s 4514(will)s 4940(use)s 5315(the)s
-5663(de\207nition)s 220 fnt2 480 8126(def @TightBo)m 6(x r)k -3(ight x)k
-480 7838({)m 480 7550( "0 0 mo)m 3(v)k 5(eto xsiz)k 3(e 0 lineto xsiz)k 3(e ysiz)k 3(e lineto 0 ysiz)k 3(e lineto closepath strok)k 4(e")k
-480 7262( @Gr)m 2(aphic x)k 480 6974(})m 240 fnt1 0 6480(which)m
+5663(de\207nition)s 220 fnt2 480 7838(def @TightBo)m 6(x r)k -3(ight x)k
+480 7550({)m 480 7262( "0 0 mo)m 3(v)k 5(eto xsiz)k 3(e 0 lineto xsiz)k 3(e ysiz)k 3(e lineto 0 ysiz)k 3(e lineto closepath strok)k 4(e")k
+480 6974( @Gr)m 2(aphic x)k 480 6686(})m 240 fnt1 0 6192(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.38\))s 7543(with)s 8040(no)s
-8349(mar)s 4(gin.)k 0 6192(The)m 428(result)s 1018(of)s
-220 fnt2 480 5741(5c @Wide @TightBo)m 6(x metempsychosis)k 240 fnt1 0 5242(is)m
-2835 215 0 106 240 288 60 480 4737 LoutGr2
+5082(parameter)s 6111(\(Section)s 6980(3.39\))s 7543(with)s 8040(no)s
+8349(mar)s 4(gin.)k 0 5904(The)m 428(result)s 1018(of)s
+220 fnt2 480 5453(5c @Wide @TightBo)m 6(x metempsychosis)k 240 fnt1 0 4954(is)m
+2835 215 0 106 240 288 60 480 4449 LoutGr2
0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath stroke
grestore
0 52(metempsychosis)m
grestore
-0 4286(The)m 432(widest)s 1120(that)s 220 fnt2
-1542 4283(@TightBo)m 6(x metempsychosis)k 240 fnt1 4377 4286(could)m 4971(possibly)s
+0 3998(The)m 432(widest)s 1120(that)s 220 fnt2
+1542 3995(@TightBo)m 6(x metempsychosis)k 240 fnt1 4377 3998(could)m 4971(possibly)s
5827(be)s 6113(is)s 6327(\207v)s 3(e)k 6743(centimetres,)s
-7954(and)s 8363(accord)s 8998(-)s 0 3998(ingly)m 552(that)s
+7954(and)s 8363(accord)s 8998(-)s 0 3710(ingly)m 552(that)s
977(is)s 1194(its)s 1477(width.)s 2193(The)s 2628(same)s
-3182(applies)s 3917(to)s 220 fnt2 4163 3995(metempsychosis)m 240 fnt1
-5791 3998(,)m 5905(which)s 6554(is)s 6771(\207v)s 3(e)k
-7190(centimetres)s 8348(wide)s 8876(as)s 0 3710(well.)m 583(Note)s
+3182(applies)s 3917(to)s 220 fnt2 4163 3707(metempsychosis)m 240 fnt1
+5791 3710(,)m 5905(which)s 6554(is)s 6771(\207v)s 3(e)k
+7190(centimetres)s 8348(wide)s 8876(as)s 0 3422(well.)m 583(Note)s
1113(carefully)s 2024(that)s 2451(there)s 2992(is)s 3211(no)s
3513(object)s 4166(in)s 4418(this)s 4822(e)s 3(xample)k
5694(whose)s 6371(width)s 6982(is)s 7200(equal)s 7782(to)s
-8030(the)s 8387(sum)s 8855(of)s 0 3422(the)m 348(widths)s
+8030(the)s 8387(sum)s 8855(of)s 0 3134(the)m 348(widths)s
1037(of)s 1308(the)s 1656(letters)s 2289(of)s 220 fnt2
-2560 3419(metempsychosis)m 240 fnt1 4188 3422(.)m 480 3048(The)m 903(\207rst)s
+2560 3131(metempsychosis)m 240 fnt1 4188 3134(.)m 480 2760(The)m 903(\207rst)s
1329(of)s 1595(the)s 1938(three)s 2466(e)s 3(xceptions)k
3532(to)s 3766(the)s 4109(`as)s 4433(wide)s 4949(as)s
5194(possible')s 6085(rule)s 6507(is)s 6712(the)s 220 fnt2
-7055 3045(@HContr)m 2(act)k 240 fnt1 8314 3048(symbol,)m 0 2760(which)m
+7055 2757(@HContr)m 2(act)k 240 fnt1 8314 2760(symbol,)m 0 2472(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 2472(de\207nition)m 974(will)s 1400(not)s 1766(be)s
-2048(attempted\):)s 220 fnt2 480 1971(5c @Wide @HContr)m 2(act @TightBo)k 6(x metempsychosis)k
-240 fnt1 0 1472(produces)m 1572 215 0 106 240 288 60 480 917 LoutGr2
+8435(formal)s 0 2184(de\207nition)m 974(will)s 1400(not)s 1766(be)s
+2048(attempted\):)s 220 fnt2 480 1683(5c @Wide @HContr)m 2(act @TightBo)k 6(x metempsychosis)k
+240 fnt1 0 1184(produces)m 1572 215 0 106 240 288 60 480 629 LoutGr2
0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath stroke
grestore
0 52(metempsychosis)m
grestore
-0 466(The)m 482(object)s
-220 fnt2 1180 463(@HContr)m 2(act @TightBo)k 6(x metempsychosis)k 240 fnt1
-5334 466(is)m 5598(still)s 6064(\207v)s 3(e)k 6530(centimetres)s
-7735(wide,)s 8361(b)s 4(ut)k 8778(the)s 0 178(object)m
-220 fnt2 644 175(@TightBo)m 6(x metempsychosis)k 240 fnt1 3475 178(has)m
-3845(been)s 4354(reduced.)s
+0 178(The)m 482(object)s
+220 fnt2 1180 175(@HContr)m 2(act @TightBo)k 6(x metempsychosis)k 240 fnt1
+5334 178(is)m 5598(still)s 6064(\207v)s 3(e)k 6530(centimetres)s
+7735(wide,)s 8361(b)s 4(ut)k 8778(the)s
grestore
gsave
1417 -15423 translate
@@ -6158,125 +6697,129 @@ gsave
gsave
1 LoutMargSet
grestore
-480 13205(The)m 922(second)s 1659(of)s 1945(the)s 2307(three)s
-2855(e)s 3(xceptions)k 3940(is)s 4165(the)s 4527(horizontal)s
-5565(concatenation)s 6965(symbol)s 220 fnt2 7739 13202(|)m 240 fnt1
-7851 13205(\(and)m 8348(also)s 220 fnt2 8801 13202(&)m 240 fnt1
-8943 13205(\).)m 0 12917(Consider)m 924(this)s 1320(e)s 3(xample:)k
-220 fnt2 480 12416(5c @Wide @TightBo)m 6(x { A |1c B |1c C })k 240 fnt1 0 11917(As)m
-317(usual,)s 929(the)s 1277(right)s 1788(parameter)s 2802(of)s
-220 fnt2 3073 11914(@Wide)m 240 fnt1 3847 11917(is)m 4057(\207v)s 3(e)k
-4469(centimetres)s 5620(wide,)s 6192(and)s 6596(the)s 6944(result)s
-7534(looks)s 8104(lik)s 2(e)k 8516(this:)s 2835 165 0 57 240 288 60 480 11412 LoutGr2
+0 13205(object)m 220 fnt2 644 13202(@TightBo)m 6(x metempsychosis)k 240 fnt1
+3475 13205(has)m 3845(been)s 4354(reduced.)s 480 12831(The)m 922(second)s
+1659(of)s 1945(the)s 2307(three)s 2855(e)s 3(xceptions)k
+3940(is)s 4165(the)s 4527(horizontal)s 5565(concatenation)s 6965(symbol)s
+220 fnt2 7739 12828(|)m 240 fnt1 7851 12831(\(and)m 8348(also)s
+220 fnt2 8801 12828(&)m 240 fnt1 8943 12831(\).)m 0 12543(Consider)m
+924(this)s 1320(e)s 3(xample:)k 220 fnt2 480 12042(5c @Wide @TightBo)m 6(x { A |1c B |1c C })k
+240 fnt1 0 11543(As)m 317(usual,)s 929(the)s 1277(right)s
+1788(parameter)s 2802(of)s 220 fnt2 3073 11540(@Wide)m 240 fnt1
+3847 11543(is)m 4057(\207v)s 3(e)k 4469(centimetres)s 5620(wide,)s
+6192(and)s 6596(the)s 6944(result)s 7534(looks)s 8104(lik)s 2(e)k
+8516(this:)s 2835 165 0 57 240 288 60 480 11038 LoutGr2
0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath stroke
grestore
-0 3(A)m
-737(B)s 1447(C)s
-grestore
-0 10961(Lout)m 512(has)s 882(to)s
-1121(apportion)s 2095(the)s 2443(size)s 2870(minus)s 3506(inter)s 4(-column)k
-4793(g)s 1(aps)k 5282(among)s 5987(the)s 6335(three)s
-6868(columns.)s 480 10587(If)m 707(the)s 1052(columns)s 1911(are)s
-2255(wide)s 2772(enough)s 3532(to)s 3768(require)s 4497(paragraph)s
-5507(breaking,)s 6447(Lout)s 6956(will)s 7379(assign)s 8031(sizes)s
-8543(to)s 8778(the)s 0 10299(columns)m 864(in)s 1110(such)s
-1609(a)s 1778(w)s 2(ay)k 2232(as)s 2484(to)s
-2726(lea)s 4(v)k 3(e)k 3282(narro)s 6(w)k
-4010(columns)s 4875(unbrok)s 2(en)k 5837(and)s 6244(break)s
-6839(wider)s 7446(columns)s 8311(to)s 8553(equal)s 0 10011(width,)m
-652(occup)s 2(ying)k 1702(the)s 2051(full)s 2438(size.)s
-2974(Otherwise,)s 4064(paragraph)s 5077(breaking)s 5968(is)s 6179(not)s
-6546(required,)s 7450(and)s 7855(each)s 8351(column)s 0 9723(will)m
-431(be)s 719(assigned)s 1607(a)s 1779(reasonable)s 2863(minimum)s
-3858(size)s 4291(in)s 4540(the)s 4894(manner)s 5677(of)s
-220 fnt2 5953 9720(@HContr)m 2(act)k 240 fnt1 7157 9723(,)m
-7270(e)s 3(xcept)k 7957(that)s 8381(the)s 8735(last)s
-0 9435(column)m 775(recei)s 6(v)k 3(es)k 1599(all)s
-1892(the)s 2240(lefto)s 3(v)k 3(er)k 3036(width.)s
-3745(F)s 3(or)k 4134(e)s 3(xample,)k 220 fnt2
-480 8934(5c @Wide { @TightBo)m 6(x A |1c @TightBo)k 6(x B |1c @TightBo)k 6(x C })k 240 fnt1
-0 8435(has)m 370(result)s 170 165 0 57 240 288 60 480 7980 LoutGr2
+0 3(A)m 737(B)s 1447(C)s
+grestore
+0 10587(Lout)m
+512(has)s 882(to)s 1121(apportion)s 2095(the)s 2443(size)s
+2870(minus)s 3506(inter)s 4(-column)k 4793(g)s 1(aps)k
+5282(among)s 5987(the)s 6335(three)s 6868(columns.)s 480 10213(If)m
+707(the)s 1052(columns)s 1911(are)s 2255(wide)s 2772(enough)s
+3532(to)s 3768(require)s 4497(paragraph)s 5507(breaking,)s 6447(Lout)s
+6956(will)s 7379(assign)s 8031(sizes)s 8543(to)s 8778(the)s
+0 9925(columns)m 864(in)s 1110(such)s 1609(a)s 1778(w)s 2(ay)k
+2232(as)s 2484(to)s 2726(lea)s 4(v)k 3(e)k
+3282(narro)s 6(w)k 4010(columns)s 4875(unbrok)s 2(en)k
+5837(and)s 6244(break)s 6839(wider)s 7446(columns)s 8311(to)s
+8553(equal)s 0 9637(width,)m 652(occup)s 2(ying)k 1702(the)s
+2051(full)s 2438(size.)s 2974(Otherwise,)s 4064(paragraph)s 5077(breaking)s
+5968(is)s 6179(not)s 6546(required,)s 7450(and)s 7855(each)s
+8351(column)s 0 9349(will)m 431(be)s 719(assigned)s 1607(a)s
+1779(reasonable)s 2863(minimum)s 3858(size)s 4291(in)s 4540(the)s
+4894(manner)s 5677(of)s 220 fnt2 5953 9346(@HContr)m 2(act)k
+240 fnt1 7157 9349(,)m 7270(e)s 3(xcept)k 7957(that)s
+8381(the)s 8735(last)s 0 9061(column)m 775(recei)s 6(v)k 3(es)k
+1599(all)s 1892(the)s 2240(lefto)s 3(v)k 3(er)k
+3036(width.)s 3745(F)s 3(or)k 4134(e)s 3(xample,)k
+220 fnt2 480 8560(5c @Wide { @TightBo)m 6(x A |1c @TightBo)k 6(x B |1c @TightBo)k 6(x C })k
+240 fnt1 0 8061(has)m 370(result)s 170 165 0 57 240 288 60 480 7606 LoutGr2
0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath stroke
grestore
0 3(A)m
grestore
-143 165 0 57 240 288 60 1217 7980 LoutGr2
+143 165 0 57 240 288 60 1217 7606 LoutGr2
0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath stroke
grestore
-0 3(B)m
+0 3(B)m
+
grestore
-1388 165 0 57 240 288 60 1927 7980 LoutGr2
+1388 165 0 57 240 288 60 1927 7606 LoutGr2
0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath stroke
grestore
-0 3(C)m
-
-grestore
-0 7529(If)m 237(it)s 436(is)s 653(desired)s 1408(that)s
-1833(the)s 2188(lefto)s 3(v)k 3(er)k 2991(width)s
-3600(remain)s 4327(unused,)s 5120(rather)s 5743(than)s 6219(going)s
-6825(into)s 7257(the)s 7612(last)s 8010(column,)s 8843(an)s
-0 7241(empty)m 654(column)s 1431(can)s 1822(be)s 2106(appended,)s
-3133(or)s 3394(the)s 3744(last)s 4137(column)s 4914(can)s
-5305(be)s 5589(enclosed)s 6486(in)s 220 fnt2 6731 7238(@HContr)m 2(act)k
-240 fnt1 7935 7241(.)m 8101(T)s 19(w)k 2(o)k
-8575(other)s 0 6953(w)m 2(ays)k 560(to)s 819(apportion)s
+0 3(C)m
+grestore
+0 7155(If)m 237(it)s 436(is)s 653(desired)s
+1408(that)s 1833(the)s 2188(lefto)s 3(v)k 3(er)k
+2991(width)s 3600(remain)s 4327(unused,)s 5120(rather)s 5743(than)s
+6219(going)s 6825(into)s 7257(the)s 7612(last)s 8010(column,)s
+8843(an)s 0 6867(empty)m 654(column)s 1431(can)s 1822(be)s
+2106(appended,)s 3133(or)s 3394(the)s 3744(last)s 4137(column)s
+4914(can)s 5305(be)s 5589(enclosed)s 6486(in)s 220 fnt2
+6731 6864(@HContr)m 2(act)k 240 fnt1 7935 6867(.)m 8101(T)s 19(w)k 2(o)k
+8575(other)s 0 6579(w)m 2(ays)k 560(to)s 819(apportion)s
1813(the)s 2181(lefto)s 3(v)k 3(er)k 2997(width)s
3619(are)s 3986(pro)s 3(vided)k 4912(by)s 5226(the)s
-220 fnt2 5594 6950(@HExpand)m 240 fnt1 6787 6953(and)m 220 fnt2
-7211 6950(@HAdjust)m 240 fnt1 8277 6953(symbols)m 0 6665(\(Sections)m 940(3.13)s
-1404(and)s 1808(3.16\).)s 480 6291(The)m 914(third)s 1430(and)s
+220 fnt2 5594 6576(@HExpand)m 240 fnt1 6787 6579(and)m 220 fnt2
+7211 6576(@HAdjust)m 240 fnt1 8277 6579(symbols)m 0 6291(\(Sections)m 940(3.13)s
+1404(and)s 1808(3.16\).)s 480 5917(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 6003(the)m
+6377(concerns)s 7285(the)s 7640(components)s 8855(of)s 0 5629(the)m
348(root)s 793(g)s 1(alle)k 3(y)k 15(.)k
1522(Each)s 2057(is)s 2267(considered)s 3361(to)s 3600(be)s
-3882(enclosed)s 4777(in)s 220 fnt2 5020 6000(@HContr)m 2(act)k
-240 fnt1 6284 6003(and)m 220 fnt2 6688 6000(@VContr)m 2(act)k
-240 fnt1 7940 6003(symbols.)m 480 5629(Up)m 836(to)s 1086(this)s
+3882(enclosed)s
+[ /Dest /LOUT15_4082_det_size_5 /DEST pdfmark
+4777(in)s 220 fnt2 5020 5626(@HContr)m 2(act)k
+240 fnt1 6284 5629(and)m 220 fnt2 6688 5626(@VContr)m 2(act)k
+240 fnt1 7940 5629(symbols.)m 480 5255(Up)m 836(to)s 1086(this)s
1493(point)s 2056(we)s 2401(ha)s 4(v)k 3(e)k
2913(treated)s 3631(width)s 4244(as)s 4505(a)s 4681(single)s
5319(quantity)s 15(,)k 6206(b)s 4(ut)k 6579(of)s
6860(course)s 7551(it)s 7754(has)s 8135(tw)s 2(o)k
-8556(parts:)s 0 5341(width)m 602(to)s 841(left)s 1218(and)s
+8556(parts:)s 0 4967(width)m 602(to)s 841(left)s 1218(and)s
1622(right)s 2133(of)s 2404(the)s 2752(mark.)s 3407(The)s
3835(`as)s 4164(wide)s 4685(as)s 4935(possible')s 5831(rule)s
6258(applies)s 6986(to)s 7225(both)s 7708(directions:)s 220 fnt2
-480 4840(@HContr)m 2(act { @TightBo)k 6(x 953^.05 /0.5c @TightBo)k 6(x 2^.8286 })k 240 fnt1
-0 4341(has)m 370(result)s 877 170 344 59 240 288 60 480 3881 LoutGr2
+480 4466(@HContr)m 2(act { @TightBo)k 6(x 953^.05 /0.5c @TightBo)k 6(x 2^.8286 })k 240 fnt1
+0 3967(has)m 370(result)s 877 170 344 59 240 288 60 480 3507 LoutGr2
0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath stroke
grestore
0 5(953)m 344(.05)s
grestore
-877 167 344 57 240 288 60 480 3431 LoutGr2
+877 167 344 57 240 288 60 480 3057 LoutGr2
0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath stroke
grestore
230 3(2)m
344(.8286)s
grestore
-0 2980(Lefto)m 3(v)k 3(er)k 868(width)s
+0 2606(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 2692(to)m 239(the)s 587(left)s 964(of)s
-220 fnt2 1235 2689(2.8286)m 240 fnt1 1958 2692(o)m 6(wing)k
+8646(only)s 0 2318(to)m 239(the)s 587(left)s 964(of)s
+220 fnt2 1235 2315(2.8286)m 240 fnt1 1958 2318(o)m 6(wing)k
2604(to)s 2843(the)s 3191(column)s 3966(mark)s 4518(alignment.)s
-240 fnt5 0 1899(2.7.)m 471(Galleys)s 1282(and)s 1723(tar)s 2(gets)k
-240 fnt1 480 1422(The)m 909(beha)s 4(viour)k 1924(of)s
+240 fnt5 0 1525(2.7.)m 471(Galleys)s 1282(and)s 1723(tar)s 2(gets)k
+
+[ /Dest /LOUTtargets /DEST pdfmark
+240 fnt1 480 1048(The)m 909(beha)s 4(viour)k 1924(of)s
2197(g)s 1(alle)k 3(ys)k 2923(and)s 3328(their)s
3827(tar)s 4(gets,)k 4568(as)s 4820(described)s 5796(in)s
-6040(Section)s 6816(1.4,)s 7225(can)s 7616(be)s 7900(summarized)s
-0 1134(in)m 243(three)s 776(la)s 3(ws:)k 240 fnt6
-0 682(F)m 10(ir)k 2(st)k 540(Law)s 240 fnt1
-949 680(:)m 1139(The)s 1592(\207rst)s 2047(tar)s 4(get)k
+6040(Section)s
+[ /Dest /LOUT15_4082_det_gall_1 /DEST pdfmark
+
+[ /Dest /LOUT15_4082_det_gall_2 /DEST pdfmark
+6816(1.4,)s 7225(can)s 7616(be)s 7900(summarized)s
+0 760(in)m 243(three)s 776(la)s 3(ws:)k 240 fnt6
+0 308(F)m 10(ir)k 2(st)k 540(Law)s 240 fnt1
+949 306(:)m 1139(The)s 1592(\207rst)s 2047(tar)s 4(get)k
2671(is)s 2905(the)s 3278(closest)s 4012(in)s 9(v)k 4(ocation)k
5091(of)s 5386(the)s 5759(tar)s 4(get)k 6382(symbol,)s
-7219(either)s 7846(preceding)s 8867(or)s 0 392(follo)m 6(wing)k
-972(the)s 1315(in)s 9(v)k 4(ocation)k 2363(point)s
-2910(of)s 3175(the)s 3518(g)s 1(alle)k 3(y)k
-4146(as)s 4391(required,)s 5288(which)s 5925(has)s 6289(suf\207cient)s
-7233(space)s 7814(to)s 8048(recei)s 6(v)k 3(e)k
-8778(the)s 0 104(\207rst)m 431(component;)s
+7219(either)s 7846(preceding)s 8867(or)s
grestore
gsave
1417 -15423 translate
@@ -6327,77 +6870,79 @@ 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 13257 240 288 60 LoutGraphic
+240 fnt1 9066 13368 0 13259 240 288 60 LoutGraphic
gsave
0 LoutMargSet
grestore
-240 fnt6 0 13205(Second)m 773(Law)s 240 fnt1
-1182 13203(:)m 1364(Each)s 1915(subsequent)s 3055(tar)s 4(get)k
-3670(is)s 3896(the)s 4259(closest)s 4985(in)s 9(v)k 4(ocation)k
-6055(of)s 6342(the)s 6706(tar)s 4(get)k 7321(symbol,)s
-8149(follo)s 6(wing)k 0 12915(the)m 337(pre)s 6(vious)k
-1195(tar)s 4(get)k 1783(and)s 2176(lying)s 2710(within)s
-3367(the)s 3704(same)s 4240(g)s 1(alle)k 3(y)k 15(,)k
-4901(which)s 5532(has)s 5891(suf\207cient)s 6829(space)s 7405(to)s
-7633(recei)s 6(v)k 3(e)k 8358(the)s 8695(\207rst)s
-0 12627(remaining)m 1022(component;)s 240 fnt6 0 12124(Thir)m 8(d)k
-607(Law)s 240 fnt1 1016 12122(:)m 1199(A)s 1446(recepti)s 6(v)k 3(e)k
-2385(symbol)s 3162(that)s 3597(does)s 4104(not)s 4487(recei)s 6(v)k 3(e)k
+0 13205(follo)m 6(wing)k 972(the)s 1315(in)s 9(v)k 4(ocation)k
+2363(point)s 2910(of)s 3175(the)s 3518(g)s 1(alle)k 3(y)k
+4146(as)s 4391(required,)s 5288(which)s 5925(has)s 6289(suf\207cient)s
+7233(space)s 7814(to)s 8048(recei)s 6(v)k 3(e)k
+8778(the)s 0 12917(\207rst)m 431(component;)s 240 fnt6 0 12414(Second)m
+773(Law)s 240 fnt1 1182 12412(:)m 1364(Each)s 1915(subsequent)s
+3055(tar)s 4(get)k 3670(is)s 3896(the)s 4259(closest)s
+4985(in)s 9(v)k 4(ocation)k 6055(of)s 6342(the)s
+6706(tar)s 4(get)k 7321(symbol,)s 8149(follo)s 6(wing)k
+0 12124(the)m 337(pre)s 6(vious)k 1195(tar)s 4(get)k
+1783(and)s 2176(lying)s 2710(within)s 3367(the)s 3704(same)s
+4240(g)s 1(alle)k 3(y)k 15(,)k 4901(which)s
+5532(has)s 5891(suf\207cient)s 6829(space)s 7405(to)s 7633(recei)s 6(v)k 3(e)k
+8358(the)s 8695(\207rst)s 0 11836(remaining)m 1022(component;)s 240 fnt6
+0 11333(Thir)m 8(d)k 607(Law)s 240 fnt1 1016 11331(:)m
+1199(A)s 1446(recepti)s 6(v)k 3(e)k 2385(symbol)s
+3162(that)s 3597(does)s 4104(not)s 4487(recei)s 6(v)k 3(e)k
5240(at)s 5489(least)s 6003(one)s 6422(component)s 7563(of)s
7851(an)s 3(y)k 8265(g)s 1(alle)k 3(y)k
-8916(is)s 0 11834(replaced)m 867(by)s 220 fnt2 1161 11831(@Null)m
-240 fnt1 1746 11834(.)m 0 11331(The)m 436(terms)s 1025(`closest,)s 16(')k
+8916(is)s 0 11043(replaced)m 867(by)s 220 fnt2 1161 11040(@Null)m
+240 fnt1 1746 11043(.)m 0 10540(The)m 436(terms)s 1025(`closest,)s 16(')k
1918(`preceding,)s 16(')k 3104(and)s 3516(`follo)s 6(wing')k
4639(refer)s 5156(to)s 5403(position)s 6239(in)s 6490(the)s
-6846(\207nal)s 7334(printed)s 8078(document.)s 0 11043(This)m 476(section)s
+6846(\207nal)s 7334(printed)s 8078(document.)s 0 10252(This)m 476(section)s
1210(e)s 3(xplains)k 2055(the)s 2403(operation)s 3363(of)s
3634(these)s 4181(la)s 3(ws)k 4667(in)s 4910(Basser)s
-5607(Lout.)s 480 10669(When)m 1100(a)s 1257(g)s 1(alle)k 3(y)k
+5607(Lout.)s 480 9878(When)m 1100(a)s 1257(g)s 1(alle)k 3(y)k
1881(cannot)s 2570(be)s 2843(\207tted)s 3382(into)s 3798(just)s
4194(one)s 4586(tar)s 4(get,)k 5223(Lout)s 5726(must)s
6241(\207nd)s 6663(points)s 7290(in)s 7523(the)s 7862(g)s 1(alle)k 3(y)k
-8486(where)s 0 10381(it)m 191(can)s 579(be)s 860(split)s
+8486(where)s 0 9590(it)m 191(can)s 579(be)s 860(split)s
1330(in)s 1572(tw)s 2(o.)k 2091(The)s 2518(object)s
3161(lying)s 3705(between)s 4558(tw)s 2(o)k 4966(neighbouring)s
6295(potential)s 7185(split)s 7655(points)s 8290(is)s 8498(called)s
-0 10093(a)m 240 fnt6 166 10095(component)m 240 fnt1 1281 10093(of)m
+0 9302(a)m 240 fnt6 166 9304(component)m
+[ /Dest /LOUT15_4082_det_gall_3 /DEST pdfmark
+240 fnt1 1281 9302(of)m
1552(the)s 1900(g)s 1(alle)k 3(y)k 15(.)k
2629(By)s 2963(de\207nition,)s 3987(a)s 4153(component)s 5277(cannot)s
-5975(be)s 6257(split.)s 480 9719(T)m 19(o)k 813(determine)s
+5975(be)s 6257(split.)s 480 8928(T)m 19(o)k 813(determine)s
1857(the)s 2239(components)s 3480(of)s 3785(a)s 3984(g)s 1(alle)k 3(y)k 15(,)k
4690(e)s 3(xpand)k 5470(all)s 5797(symbols)s 6679(other)s
7264(than)s 7766(recursi)s 6(v)k 3(e)k 8722(and)s
-0 9431(recepti)m 6(v)k 3(e)k 909(ones,)s 1442(discard)s
-2177(all)s 220 fnt2 2457 9428(@F)m 6(ont)k 240 fnt1
-3109 9431(,)m 220 fnt2 3203 9428(@Break)m 240 fnt1 3999 9431(,)m
-220 fnt2 4093 9428(@Space)m 240 fnt1 4930 9431(,)m 220 fnt2
-5024 9428(@SetColor)m 240 fnt1 6099 9431(,)m 220 fnt2 6193 9428(@SetColour)m
-240 fnt1 7390 9431(,)m 7484(and)s 220 fnt2 7875 9428(@Language)m
-240 fnt1 0 9143(symbols,)m 908(perform)s 1740(paragraph)s 2756(breaking)s
+0 8640(recepti)m 6(v)k 3(e)k 909(ones,)s 1442(discard)s
+2177(all)s 220 fnt2 2457 8637(@F)m 6(ont)k 240 fnt1
+3109 8640(,)m 220 fnt2 3203 8637(@Break)m 240 fnt1 3999 8640(,)m
+220 fnt2 4093 8637(@Space)m 240 fnt1 4930 8640(,)m 220 fnt2
+5024 8637(@SetColor)m 240 fnt1 6099 8640(,)m 220 fnt2 6193 8637(@SetColour)m
+240 fnt1 7390 8640(,)m 7484(and)s 220 fnt2 7875 8637(@Language)m
+240 fnt1 0 8352(symbols,)m 908(perform)s 1740(paragraph)s 2756(breaking)s
3649(as)s 3902(required,)s 4809(and)s 5216(discard)s 5967(all)s
6263(redundant)s 7283(braces.)s 8060(Then)s 8613(vie)s 6(w)k
-0 8855(the)m 367(g)s 1(alle)k 3(y)k 1020(as)s
+0 8064(the)m 367(g)s 1(alle)k 3(y)k 1020(as)s
1290(a)s 1475(sequence)s 2428(of)s 2718(one)s 3140(or)s
3418(more)s 3984(objects)s 4732(separated)s 5711(by)s 6025(v)s 3(ertical)k
-6811(concatenation)s 8216(symbols;)s 0 8567(these)m 567(are)s 935(the)s
+6811(concatenation)s 8216(symbols;)s 0 7776(these)m 567(are)s 935(the)s
1304(components)s 2533(and)s 2958(split)s 3450(points,)s 4163(e)s 3(xcept)k
4865(that)s 5304(concatenation)s 6710(symbols)s 7580(whose)s 8269(g)s 1(aps)k
-8779(are)s 0 8279(unbreakable)m 1225(\(Section)s 2078(3.2\))s 2506(are)s
+8779(are)s 0 7488(unbreakable)m 1225(\(Section)s 2078(3.2\))s 2506(are)s
2853(not)s 3219(eligible)s 3991(to)s 4230(be)s 4512(split)s
4983(points.)s 5732(F)s 3(or)k 6121(e)s 3(xample,)k
7035(gi)s 6(v)k 3(en)k 7615(the)s 7963(de\207nition)s
-220 fnt2 480 7778(def @Section into { @SectionPlace&&preceding })m 480 7490( named @Title {})m 480 7202( r)m -3(ight @Body)k
-480 6914({)m 480 6626( 15p @F)m 6(ont { @Title //0.7f })k 480 6338( //)m 480 6050( @Body)m
-480 5762(})m 240 fnt1 0 5268(the)m 348(g)s 1(alle)k 3(y)k
-220 fnt2 480 4767(@Section)m 480 4479( @Title { Introduction })m 480 4191({ )m 11(This is a subject that really)k
-480 3903(needs no introduction.)m 13( })k 240 fnt1 0 3409(becomes)m 220 fnt2
-480 2962(Introduction)m 480 2674(//0.7f)m 480 2386({})m 480 2098(//)m 480 1810(This is a subject that really needs)m
-480 1522(//1vx)m 480 1234(no introduction.)m 240 fnt1 0 780(with)m 482(four)s
-939(components.)s 2260(If)s 220 fnt2 2489 777(@Body)m 240 fnt1
-3269 780(had)m 3673(been)s 4181(preceded)s 5102(by)s 220 fnt2
-5395 777(|1.0c)m 240 fnt1 5921 780(in)m 6164(the)s 6511(de\207nition,)s
-7535(the)s 7882(result)s 8471(w)s 2(ould)k 0 492(ha)m 4(v)k 3(e)k
-501(been)s
+220 fnt2 480 6987(def @Section into { @SectionPlace&&preceding })m 480 6699( named @Title {})m 480 6411( r)m -3(ight @Body)k
+480 6123({)m 480 5835( 15p @F)m 6(ont { @Title //0.7f })k 480 5547( //)m 480 5259( @Body)m
+480 4971(})m 240 fnt1 0 4477(the)m 348(g)s 1(alle)k 3(y)k
+220 fnt2 480 3976(@Section)m 480 3688( @Title { Introduction })m 480 3400({ )m 11(This is a subject that really)k
+480 3112(needs no introduction.)m 13( })k 240 fnt1 0 2618(becomes)m 220 fnt2
+480 2171(Introduction)m 480 1883(//0.7f)m 480 1595({})m 480 1307(//)m 480 1019(This is a subject that really needs)m
+480 731(//1vx)m 480 443(no introduction.)m
grestore
gsave
1417 -15423 translate
@@ -6452,113 +6997,120 @@ gsave
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
+240 fnt1 9066 13368 0 13259 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(|1.0c { )m 11(This is a subject that really needs //1vx no introduction.)k 13( })k 240 fnt1 0 11561(with)m
-220 fnt2 524 11558(//1vx)m 240 fnt1 1089 11561(b)m 4(uried)k
-1796(within)s 2507(one)s 2951(component)s 4118(and)s 4564(hence)s
-5221(not)s 5629(a)s 5838(potential)s 6771(split)s 7285(point.)s
-7983(If)s 220 fnt2 8256 11558(0.7f)m 240 fnt1 8722 11561(had)m
-0 11273(been)m 220 fnt2 525 11270(0.7fu)m 240 fnt1 999 11273(,)m
-1123(the)s 1488(g)s 1(ap)k 1903(w)s 2(ould)k
-2575(ha)s 4(v)k 3(e)k 3092(been)s 3618(unbreakable)s
-4860(and)s 220 fnt2 5281 11270(//0.7fu)m 240 fnt1 5954 11273(w)m 2(ould)k
-6625(not)s 7008(ha)s 4(v)k 3(e)k 7526(been)s
-8052(a)s 8235(potential)s 0 10985(split)m 471(point.)s 480 10611(V)m 26(ersion)k
-1310(3.03)s 1816(has)s 2228(liberalized)s 3335(this)s 3773(some)s 6(what)k
-4840(in)s 5125(the)s 5515(follo)s 6(wing)k 6534(w)s 2(ay)k 15(.)k
-7122(When)s 7793(a)s 8002(component)s 0 10323(consists)m 808(of)s
+0 13205(with)m 482(four)s 939(components.)s 2260(If)s 220 fnt2
+2489 13202(@Body)m 240 fnt1 3269 13205(had)m 3673(been)s 4181(preceded)s
+5102(by)s 220 fnt2 5395 13202(|1.0c)m 240 fnt1 5921 13205(in)m
+6164(the)s 6511(de\207nition,)s 7535(the)s 7882(result)s 8471(w)s 2(ould)k
+0 12917(ha)m 4(v)k 3(e)k 501(been)s 220 fnt2
+480 12469(Introduction)m 480 12181(//0.7f)m 480 11893({})m 480 11605(//)m 480 11317(|1.0c { )m 11(This is a subject that really needs //1vx no introduction.)k 13( })k
+240 fnt1 0 10819(with)m 220 fnt2 524 10816(//1vx)m 240 fnt1
+1089 10819(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 10816(0.7f)m
+240 fnt1 8722 10819(had)m 0 10531(been)m 220 fnt2 525 10528(0.7fu)m
+240 fnt1 999 10531(,)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 10528(//0.7fu)m
+240 fnt1 5954 10531(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 10243(split)m 471(point.)s
+480 9869(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 9581(consists)m 808(of)s
1080(a)s 1247(horizontal)s 2271(sequence)s 3205(of)s 3477(tw)s 2(o)k
-3887(or)s 4147(more)s 4695(objects)s 240 fnt6 5423 10325(A)m
-168 fnt4 5558 10232(1)m 240 fnt4 5637 10317(,)m 5746(\274)s
-6046(,)s 240 fnt6 6155 10325(A)m 168 fnt6 6290 10238(n)m
-240 fnt1 6431 10323(separated)m 7391(by)s 220 fnt2 7686 10320(|)m
-240 fnt1 7784 10323(\(not)m 220 fnt2 8229 10320(||)m 240 fnt1
-8323 10323(,)m 8431(not)s 220 fnt2 8798 10320(&)m 240 fnt1
-8940 10323(\),)m 0 10035(Lout)m 506(will)s 926(in)s 9(v)k 3(estig)k 1(ate)k
+3887(or)s 4147(more)s 4695(objects)s 240 fnt6 5423 9583(A)m
+168 fnt4 5558 9490(1)m 240 fnt4 5637 9575(,)m 5746(\274)s
+6046(,)s 240 fnt6 6155 9583(A)m 168 fnt6 6290 9496(n)m
+240 fnt1 6431 9581(separated)m 7391(by)s 220 fnt2 7686 9578(|)m
+240 fnt1 7784 9581(\(not)m 220 fnt2 8229 9578(||)m 240 fnt1
+8323 9581(,)m 8431(not)s 220 fnt2 8798 9578(&)m 240 fnt1
+8940 9581(\),)m 0 9293(Lout)m 506(will)s 926(in)s 9(v)k 3(estig)k 1(ate)k
1998(the)s 2339(component)s 3457(to)s 3690(see)s 4044(whether)s
4868(it)s 5054(can)s 5436(be)s 5712(brok)s 2(en)k
6426(up.)s 6823(It)s 7022(looks)s 7586(at)s 7811(each)s
-240 fnt6 8300 10037(A)m 168 fnt6 8435 9950(i)m 240 fnt1
-8533 10035(to)m 8765(see)s 0 9747(whether)m 830(it)s 1023(is)s
+240 fnt6 8300 9295(A)m 168 fnt6 8435 9208(i)m 240 fnt1
+8533 9293(to)m 8765(see)s 0 9005(whether)m 830(it)s 1023(is)s
1234(a)s 1401(v)s 3(ertical)k 2169(concatenation)s 3555(of)s
-3827(objects)s 240 fnt6 4556 9749(A)m 168 fnt6 4691 9662(i)m
-168 fnt4 4743 9656(1)m 240 fnt4 4822 9741(,)m 4932(\274)s
-5232(,)s 240 fnt6 5342 9749(A)m 168 fnt6 5477 9662(im)m
-240 fnt1 5641 9747(;)m 5754(if)s 5972(tw)s 2(o)k
+3827(objects)s 240 fnt6 4556 9007(A)m 168 fnt6 4691 8920(i)m
+168 fnt4 4743 8914(1)m 240 fnt4 4822 8999(,)m 4932(\274)s
+5232(,)s 240 fnt6 5342 9007(A)m 168 fnt6 5477 8920(im)m
+240 fnt1 5641 9005(;)m 5754(if)s 5972(tw)s 2(o)k
6383(or)s 6643(more)s 7191(of)s 7463(the)s 240 fnt6
-7812 9749(A)m 168 fnt6 7947 9662(i)m 240 fnt1 8052 9747(satisfy)m
-8730(this)s 0 9459(condition,)m 1009(the)s 1354(component)s 2475(will)s
+7812 9007(A)m 168 fnt6 7947 8920(i)m 240 fnt1 8052 9005(satisfy)m
+8730(this)s 0 8717(condition,)m 1009(the)s 1354(component)s 2475(will)s
2898(not)s 3262(be)s 3541(brok)s 2(en)k 4258(up.)s
4659(So)s 4962(no)s 6(w)k 5421(suppose)s 6246(we)s
6578(ha)s 4(v)k 3(e)k 7076(just)s 7479(one)s
-240 fnt6 7878 9461(A)m 168 fnt6 8013 9374(i)m 240 fnt1
-8114 9459(which)m 8753(is)s 8960(a)s 0 9171(v)m 3(ertical)k
+240 fnt6 7878 8719(A)m 168 fnt6 8013 8632(i)m 240 fnt1
+8114 8717(which)m 8753(is)s 8960(a)s 0 8429(v)m 3(ertical)k
757(concatenation.)s 2239(Lout)s 2741(will)s 3156(break)s 3738(the)s
4076(component)s 5189(into)s 5604(one)s 5996(component)s 7109(for)s
-7437(each)s 7922(of)s 8182(the)s 240 fnt6 8520 9173(A)m
-168 fnt6 8655 9086(i)m 168 fnt4 8707 9080(1)m 240 fnt4
-8775 9165(,)m 8851(\274)s 3 8877(,)m 240 fnt6 80 8885(A)m
-168 fnt6 215 8798(im)m 240 fnt1 379 8883(,)m 476(pro)s 3(vided)k
+7437(each)s 7922(of)s 8182(the)s 240 fnt6 8520 8431(A)m
+168 fnt6 8655 8344(i)m 168 fnt4 8707 8338(1)m 240 fnt4
+8775 8423(,)m 8851(\274)s 3 8135(,)m 240 fnt6 80 8143(A)m
+168 fnt6 215 8056(im)m 240 fnt1 379 8141(,)m 476(pro)s 3(vided)k
1373(that)s 1781(the)s 3(y)k 2234(are)s 2571(separated)s
-3521(by)s 220 fnt2 3806 8880(//)m 240 fnt1 3981 8883(symbols)m
-4820(\(not)s 220 fnt2 5255 8880(/)m 240 fnt1 5319 8883(\),)m
+3521(by)s 220 fnt2 3806 8138(//)m 240 fnt1 3981 8141(symbols)m
+4820(\(not)s 220 fnt2 5255 8138(/)m 240 fnt1 5319 8141(\),)m
5495(and)s 5890(pro)s 3(vided)k 6786(this)s 7172(can)s
-7551(be)s 7823(done)s 8335(without)s 0 8595(introducing)m 1155(an)s 3(y)k
+7551(be)s 7823(done)s 8335(without)s 0 7853(introducing)m 1155(an)s 3(y)k
1550(apparent)s 2431(change)s 3164(into)s 3587(the)s 3933(appearance)s
5062(of)s 5332(the)s 5678(component)s 6800(\(this)s 7274(second)s
-7995(rule)s 8420(will)s 8844(be)s 0 8307(satis\207ed)m 847(if)s
-1071(the)s 1426(other)s 240 fnt6 1984 8309(A)m 168 fnt6
-2119 8222(j)m 240 fnt1 2232 8307(are)m 2586(not)s 2959(v)s 3(ery)k
+7995(rule)s 8420(will)s 8844(be)s 0 7565(satis\207ed)m 847(if)s
+1071(the)s 1426(other)s 240 fnt6 1984 7567(A)m 168 fnt6
+2119 7480(j)m 240 fnt1 2232 7565(are)m 2586(not)s 2959(v)s 3(ery)k
3442(lar)s 4(ge\).)k 4165(The)s 4600(e)s 3(xample)k
5470(abo)s 3(v)k 3(e)k 6099(satis\207es)s 6913(all)s
-7213(these)s 7767(rules)s 8289(and)s 8700(will)s 0 7996(be)m
+7213(these)s 7767(rules)s 8289(and)s 8700(will)s 0 7254(be)m
282(brok)s 2(en)k 1002(up)s 1295(into)s 1720(tw)s 2(o)k
-2130(components,)s 3394(so)s 3660(the)s 220 fnt2 4008 7993(//1vx)m
-240 fnt1 4530 7996(becomes)m 5418(a)s 5584(potential)s 6475(split)s
-6946(point)s 7498(after)s 7994(all.)s 480 7622(The)m 913(lines)s
+2130(components,)s 3394(so)s 3660(the)s 220 fnt2 4008 7251(//1vx)m
+240 fnt1 4530 7254(becomes)m 5418(a)s 5584(potential)s 6475(split)s
+6946(point)s 7498(after)s 7994(all.)s 480 6880(The)m 913(lines)s
1421(of)s 1697(a)s 1869(paragraph)s 2887(become)s 3693(separate)s
4536(components)s 5750(if)s 5972(the)s 6326(paragraph)s 7344(occupies)s
-8238(an)s 8527(entire)s 0 7334(component)m 1151(before)s 1844(breaking;)s
+8238(an)s 8527(entire)s 0 6592(component)m 1151(before)s 1844(breaking;)s
2820(otherwise)s 3833(the)s 3(y)k 4323(are)s 4697(enclosed)s
-5619(in)s 5890(a)s 220 fnt2 6083 7331(@OneRo)m 3(w)k
-240 fnt1 7241 7334(symbol)m 8028(within)s 8724(one)s 0 7046(component.)m
+5619(in)s 5890(a)s 220 fnt2 6083 6589(@OneRo)m 3(w)k
+240 fnt1 7241 6592(symbol)m 8028(within)s 8724(one)s 0 6304(component.)m
1237(The)s 1675(same)s 2232(is)s 2452(true)s 2888(of)s
3169(incoming)s 4136(components)s 5354(of)s 5635(other)s 6195(g)s 1(alle)k 3(ys.)k
-7042(If)s 7282(a)s 220 fnt2 7458 7043(@Galle)m 4(y)k
-240 fnt1 8366 7046(symbol)m 0 6758(occupies)m 892(an)s 1180(entire)s
+7042(If)s 7282(a)s 220 fnt2 7458 6301(@Galle)m 4(y)k
+240 fnt1 8366 6304(symbol)m 0 6016(occupies)m 892(an)s 1180(entire)s
1783(component)s 2912(by)s 3211(the)s 3563(rules)s 4083(abo)s 3(v)k 3(e,)k
4761(then)s 5234(the)s 5587(incoming)s 6549(components)s 7761(that)s
-8184(replace)s 8934(it)s 0 6470(become)m 800(components)s 2008(of)s
+8184(replace)s 8934(it)s 0 5728(become)m 800(components)s 2008(of)s
2279(their)s 2776(ne)s 6(w)k 3223(home:)s 220 fnt2
-480 5916(An e)m 6(xample)k 480 5628(//0.5c)m 480 5340(@Galle)m 4(y)k
-480 5052(//0.5c)m 480 4764(@SomethingList)m 240 fnt4 2500 5625(\336)m 220 fnt2
-3141 5916(An e)m 6(xample)k 3141 5628(//0.5c)m 3141 5340(Incoming components)m 3141 5052(//0.2c)m
-3141 4764(from some other galle)m 4(y)k 3141 4476(//0.5c)m 3141 4188(@SomethingList)m 240 fnt1
-0 3632(Otherwise)m 1062(the)s 1435(incoming)s 2416(components)s 3649(are)s
-4020(grouped)s 4888(within)s 5580(a)s 220 fnt2 5771 3629(@OneRo)m 3(w)k
-240 fnt1 6926 3632(symbol)m 7711(and)s 8139(lie)s 8458(within)s
-0 3344(one)m 402(component.)s 480 2970(This)m 985(distinction)s 2080(has)s
+480 5174(An e)m 6(xample)k 480 4886(//0.5c)m 480 4598(@Galle)m 4(y)k
+480 4310(//0.5c)m 480 4022(@SomethingList)m 240 fnt4 2500 4883(\336)m 220 fnt2
+3141 5174(An e)m 6(xample)k 3141 4886(//0.5c)m 3141 4598(Incoming components)m 3141 4310(//0.2c)m
+3141 4022(from some other galle)m 4(y)k 3141 3734(//0.5c)m 3141 3446(@SomethingList)m 240 fnt1
+0 2890(Otherwise)m 1062(the)s 1435(incoming)s 2416(components)s 3649(are)s
+4020(grouped)s 4888(within)s 5580(a)s 220 fnt2 5771 2887(@OneRo)m 3(w)k
+240 fnt1 6926 2890(symbol)m 7711(and)s 8139(lie)s 8458(within)s
+0 2602(one)m 402(component.)s 480 2228(This)m 985(distinction)s 2080(has)s
2480(a)s 2675(mark)s 2(ed)k 3477(ef)s 6(fect)k
4103(on)s 4429(the)s 4806(v)s 3(ertical)k 5603(concatenation)s
-7017(symbol)s 220 fnt2 7806 2967(//1.1b)m 240 fnt1 8347 2970(,)m
-8484(which)s 0 2682(calls)m 509(for)s 868(more)s 1436(space)s
+
+[ /Dest /LOUT15_4082_det_gall_4 /DEST pdfmark
+7017(symbol)s 220 fnt2 7806 2225(//1.1b)m 240 fnt1 8347 2228(,)m
+8484(which)s 0 1940(calls)m 509(for)s 868(more)s 1436(space)s
2045(than)s 2535(is)s 2766(a)s 4(v)k 6(ailable)k
3695(\(Section)s 4570(3.2\).)s 5134(There)s 5768(is)s 5999(no)s
6314(room)s 6900(for)s 7259(this)s 7676(symbol)s 8458(within)s
-0 2394(an)m 3(y)k 402(component,)s 1579(so)s 1851(it)s
+0 1652(an)m 3(y)k 402(component,)s 1579(so)s 1851(it)s
2049(will)s 2481(force)s 3033(a)s 3205(split)s 3682(and)s
4092(be)s 4379(discarded)s 5359(in)s 5608(that)s 6032(case.)s
6613(But)s 7025(it)s 7223(can)s 7618(be)s 7906(promoted)s
-8887(to)s 0 2106(between)m 854(tw)s 2(o)k 1264(components.)s
-480 1732(Components)m 1749(may)s 2223(be)s 2513(separated)s 3481(by)s
-220 fnt2 3783 1729(/)m 240 fnt1 3914 1732(as)m 4172(well)s
-4646(as)s 4904(by)s 220 fnt2 5206 1729(//)m 240 fnt1
-5331 1732(,)m 5445(gi)s 6(ving)k 6112(rise)s 6520(to)s
-6767(column)s 7550(mark)s 8110(alignment)s 0 1444(between)m 854(adjacent)s
+8887(to)s 0 1364(between)m 854(tw)s 2(o)k 1264(components.)s
+480 990(Components)m 1749(may)s 2223(be)s 2513(separated)s 3481(by)s
+220 fnt2 3783 987(/)m 240 fnt1 3914 990(as)m 4172(well)s
+4646(as)s 4904(by)s 220 fnt2 5206 987(//)m 240 fnt1
+5331 990(,)m 5445(gi)s 6(ving)k 6112(rise)s 6520(to)s
+6767(column)s 7550(mark)s 8110(alignment)s 0 702(between)m 854(adjacent)s
1710(components:)s
grestore
gsave
@@ -6648,7 +7200,9 @@ grestore
6435(the)s 6843(meaning)s 7779(of)s 8110(alignment)s 0 11269(becomes)m
882(v)s 3(ery)k 1351(doubtful.)s 2319(F)s 3(or)k
2702(e)s 3(xample,)k 3609(what)s 4127(if)s 4338(the)s
-4679(tar)s 4(gets)k 5355(are)s 5696(in)s 5932(dif)s 6(ferent)k
+4679(tar)s 4(gets)k
+[ /Dest /LOUT15_4082_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 10981(what)m 525(if)s 742(one)s 1144(lies)s 1526(within)s
220 fnt2 2194 10978(90d @Rotate)m 240 fnt1 3482 10981(?)m 480 10607(The)m
@@ -6738,7 +7292,9 @@ grestore
3674(mark)s 4226(will)s 4652(ha)s 4(v)k 3(e)k
5153(equal)s 5726(width.)s 480 4115(The)m 906(root)s 1348(g)s 1(alle)k 3(y)k 15(,)k
2018(where)s 2655(e)s 6(v)k 3(erything)k 3720(collects)s
-4497(immediately)s 5742(prior)s 6264(to)s 6500(output,)s 7217(is)s
+4497(immediately)s 5742(prior)s 6264(to)s 6500(output,)s
+[ /Dest /LOUT15_4082_det_gall_6 /DEST pdfmark
+7217(is)s
7424(created)s 8168(automati)s 8998(-)s 0 3827(cally)m 15(,)k
556(not)s 921(by)s 1214(a)s 1379(de\207nition.)s 2459(Its)s
2747(tar)s 4(get)k 3346(is)s 3555(the)s 3902(output)s
@@ -6825,10 +7381,14 @@ grestore
6392(\207nd)s 6823(its)s 7099(\207rst)s 7530(tar)s 4(get)k
8130(preceding)s 0 10409(its)m 276(in)s 9(v)k 4(ocation)k
1330(point,)s 1929(within)s 220 fnt2 2597 10406(@P)m 8(ageList)k
-240 fnt1 3661 10409(.)m 480 10035(Printing)m 1308(the)s 1661(root)s
+240 fnt1 3661 10409(.)m 480 10035(Printing)m
+[ /Dest /LOUTrootg /DEST pdfmark
+1308(the)s 1661(root)s
2112(g)s 1(alle)k 3(y)k 2751(on)s 3054(the)s
3407(output)s 4085(\207le)s 4451(is)s 4666(some)s 6(what)k
-5696(problematical,)s 7121(because)s 7940(Lout)s 8457(has)s 8833(no)s
+5696(problematical,)s
+[ /Dest /LOUT15_4082_det_gall_7 /DEST pdfmark
+7121(because)s 7940(Lout)s 8457(has)s 8833(no)s
0 9747(w)m 2(ay)k 461(of)s 742(kno)s 6(wing)k
1638(ho)s 6(w)k 2109(lar)s 4(ge)k 2648(the)s
3006(paper)s 3607(is.)s 3941(Basser)s 4648(Lout)s 5170(simply)s
@@ -6844,7 +7404,11 @@ grestore
1390(on)s 1687(the)s 2035(result.)s 480 8509(Basser)m 1204(Lout)s
1744(will)s 2198(promote)s 3079(a)s 3273(component)s 4425(only)s
4933(after)s 5457(an)s 3(y)k 5882(recepti)s 6(v)k 3(e)k
-6832(symbols)s 7709(within)s 8405(it)s 8625(ha)s 4(v)k 3(e)k
+6832(symbols)s
+[ /Dest /LOUT15_4082_det_gall_8 /DEST pdfmark
+
+[ /Dest /LOUT15_4082_det_gall_9 /DEST pdfmark
+7709(within)s 8405(it)s 8625(ha)s 4(v)k 3(e)k
0 8221(been)m 509(replaced,)s 1426(either)s 2029(by)s 2324(g)s 1(alle)k 3(ys)k
3048(or)s 3308(by)s 220 fnt2 3602 8218(@Null)m 240 fnt1
4187 8221(,)m 4295(since)s 4842(until)s 5336(then)s 5805(the)s
@@ -6876,7 +7440,11 @@ grestore
3592(footnotes.)s 4635(A)s 4854(v)s 6(ariant)k 5559(of)s
5819(the)s 6156(g)s 1(alle)k 3(y)k 6778(concept,)s
7618(called)s 8235(a)s 240 fnt6 8389 6035(for)m 8(cing)k
-0 5747(galle)m 7(y)k 240 fnt1 573 5745(,)m 680(is)s
+0 5747(galle)m 7(y)k 240 fnt1 573 5745(,)m
+[ /Dest /LOUT15_4082_det_gall_10 /DEST pdfmark
+
+[ /Dest /LOUTforcing /DEST pdfmark
+680(is)s
890(introduced)s 1971(to)s 2210(solv)s 3(e)k 2768(this)s
3164(problem.)s 4125(A)s 4355(forcing)s 5098(g)s 1(alle)k 3(y)k
5732(is)s 5942(de\207ned)s 6705(lik)s 2(e)k 7117(this:)s
@@ -7009,7 +7577,9 @@ grestore
806(which)s 1442(is)s 1646(by)s 1934(gi)s 6(ving)k
2586(the)s 2928(symbol)s 3682(that)s 4094(is)s 4297(to)s
4530(be)s 4806(a)s 4966(g)s 1(alle)k 3(y)k
-5594(a)s 5753(parameter)s 6761(or)s 7014(nested)s 7677(de\207nition)s
+5594(a)s 5753(parameter)s 6761(or)s 7014(nested)s
+[ /Dest /LOUT15_4082_det_gall_11 /DEST pdfmark
+7677(de\207nition)s
8644(with)s 0 11679(the)m 348(special)s 1066(name)s 220 fnt2
1640 11676(@T)m 26(arget)k 240 fnt1 2467 11679(:)m 220 fnt2
480 11178(def @T)m 26(e)k 6(xt)k 480 10890( r)m -3(ight x)k
@@ -7145,7 +7715,9 @@ grestore
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 6777(meaning:)s 7772(when)s 8353(compo)s 8998(-)s
+6054(special)s
+[ /Dest /LOUT15_4082_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
240 fnt1 3619 12917(or)m 220 fnt2 3879 12914(@F)m 6(orceGalle)k 4(y)k
@@ -7295,18 +7867,24 @@ grestore
8052(a)s 8209(split;)s 8722(and)s 0 11557(the)m 348(Second)s
1111(La)s 3(w)k 1587(puts)s 2037(Basser)s 2734(Lout)s
3246(on)s 3543(the)s 3891(right)s 4402(track)s 4940(thereafter)s 13(.)k
-240 fnt5 0 10764(2.8.)m 471(Sorted)s 1203(galleys)s 240 fnt1
+240 fnt5 0 10764(2.8.)m 471(Sorted)s 1203(galleys)s
+[ /Dest /LOUTsorted /DEST pdfmark
+240 fnt1
480 10287(When)m 1128(footnotes)s 2088(are)s 2455(placed)s 3156(at)s
3407(the)s 3775(bottom)s 4532(of)s 4823(a)s 5008(page,)s
5586(the)s 3(y)k 6069(appear)s 6785(there)s 7337(in)s
7600(\207rst)s 8050(come,)s 8695(\207rst)s 0 9999(serv)m 3(ed)k
674(order)s 13(.)k 1324(T)s 19(o)k 1618(mak)s 2(e)k
2185(g)s 1(alle)k 3(ys)k 2903(appear)s 3595(in)s
-3832(sorted)s 4469(order)s 9(,)k 5065(as)s 5310(is)s
+3832(sorted)s 4469(order)s 9(,)k 5065(as)s
+[ /Dest /LOUT15_4082_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 240 fnt1 5977 9711(is)m
+5318 9708(@K)m 8(e)k 4(y)k
+[ /Dest /LOUT15_4082_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
480 8972(def @Inde)m 6(xEntr)k -6(y into { @Inde)k 6(xPlace&&f)k 6(ollo)k 3(wing })k
@@ -7440,7 +8018,9 @@ grestore
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
6809(tw)s 2(o)k 7210(parameters,)s 8355(left)s 8722(and)s
-0 8883(right\),)m 643(and)s 1054(if)s 1277(that)s 1702(sorted)s
+0 8883(right\),)m
+[ /Dest /LOUT15_4082_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
@@ -7497,7 +8077,9 @@ grestore
8042(do)s 8337(it)s 8532(in)s 8778(the)s 0 5629(natural)m
718(linear)s 1321(order)s 1885(w)s 2(ould)k 2540(tak)s 2(e)k
2992(Lout)s 3504(e)s 3(xponential)k 4672(time.)s 240 fnt5
-0 4836(2.9.)m 471(Horizontal)s 1628(galleys)s 240 fnt1 480 4359(All)m
+0 4836(2.9.)m 471(Horizontal)s 1628(galleys)s
+[ /Dest /LOUThorizontal /DEST pdfmark
+240 fnt1 480 4359(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 4361(vertical)m 4353(galle)s 7(ys)k
@@ -7755,10 +8337,14 @@ grestore
8646(only)s 0 12917(for)m 338(occasional)s 1402(tricks,)s 2039(such)s
2535(as)s 2785(paragraphs)s 3885(with)s 4367(drop)s 4859(capitals,)s
5695(circular)s 6483(outlines,)s 7347(etc.)s 240 fnt5 0 12124(2.10.)m
-591(Optimal)s 1495(galley)s 2149(br)s 4(eaking)k 240 fnt1
+591(Optimal)s 1495(galley)s 2149(br)s 4(eaking)k
+[ /Dest /LOUToptimal /DEST pdfmark
+240 fnt1
480 11647(As)m 814(e)s 3(xplained)k 1817(in)s 2077(Section)s
2869(2.7,)s 3294(the)s 3659(components)s 4885(of)s 5174(a)s
-5357(g)s 1(alle)k 3(y)k 6009(are)s 6373(promoted)s
+5357(g)s 1(alle)k 3(y)k
+[ /Dest /LOUT15_4082_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 11359(tar)m 4(get.)k 703(When)s 1332(space)s 1919(runs)s
2382(out)s 2748(there,)s 3332(the)s 3680(g)s 1(alle)k 3(y)k
@@ -7794,7 +8380,9 @@ grestore
2790(called)s 220 fnt2 3440 8506(@Optimiz)m 3(e)k 240 fnt1
4599 8509(whose)m 5290(v)s 6(alue)k 5880(is)s 220 fnt2
6112 8506(Y)m 30(es)k 240 fnt1 6453 8509(.)m 6639(Lik)s 2(e)k
-7153(cross)s 7717(referencing,)s 8934(it)s 0 8221(tak)m 2(es)k
+7153(cross)s 7717(referencing,)s
+[ /Dest /LOUT15_4082_det_opti_2 /DEST pdfmark
+8934(it)s 0 8221(tak)m 2(es)k
539(tw)s 2(o)k 947(runs)s 1409(to)s 1646(ha)s 4(v)k 3(e)k
2145(ef)s 6(fect.)k 2844(On)s 3192(the)s 3538(\207rst)s
3968(run,)s 4392(Lout)s 4902(records)s 5655(the)s 6001(sizes)s
@@ -7875,11 +8463,19 @@ gsave
0 LoutMargSet
grestore
480 fnt5 0 12397(Chapter)m 1819(3.)s 2400(Pr)s 8(ede\207ned)k
-4711(symbols)s 240 fnt5 0 11133(3.1.)m 471(@Begin)s 1335(and)s
-1776(@End)s 240 fnt1 480 10656(The)m 905(body)s 1435(of)s
+4711(symbols)s
+[ /Dest /LOUTsymbols /DEST pdfmark
+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 220 fnt2 6419 10653(@End)m
+5194 10653(@Begin)m 240 fnt1 6019 10656(and)m
+[ /Dest /LOUT15_4082_pre_begi_1 /DEST pdfmark
+
+[ /Dest /LOUT15_4082_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
@@ -7900,9 +8496,13 @@ grestore
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 3739(There)m
+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 220 fnt2 480 3198(/)m
+4322(three)s 4855(f)s 2(amilies:)k
+[ /Dest /LOUT15_4082_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
@@ -7914,7 +8514,9 @@ grestore
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 6233(abo)s 3(v)k 3(e)k
+3930 1422(places)m 4575(its)s 4848(left)s 5222(parameter)s
+[ /Dest /LOUT15_4082_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
3544(parameter)s 4581(has)s 4973(more)s 5543(column)s 6341(marks)s
@@ -7926,7 +8528,9 @@ grestore
404(left-justi\207es)s 1594(the)s 1942(objects.)s 480 184(The)m 896(horizontal)s
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 6080(analogues)s 7076(of)s 220 fnt2 7334 181(/)m
+5069(horizontal)s
+[ /Dest /LOUT15_4082_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
grestore
@@ -7985,9 +8589,11 @@ 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
-8698(The)s 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
+8698(The)s
+[ /Dest /LOUT15_4082_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
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
@@ -8025,14 +8631,18 @@ grestore
240 fnt6 4459 9399(components)m 240 fnt1 5598 9397(.)m 480 9023(One)m
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 6877(the)s
+4946(usually)s 5695(the)s 6047(mark)s 6602(of)s
+[ /Dest /LOUT15_4082_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
-240 fnt1 1065 8073(,)m 1175(specifying)s 2227(the)s 2578(distance)s
+240 fnt1 1065 8073(,)m
+[ /Dest /LOUT15_4082_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
7741(concatenation)s 0 7785(symbol.)m 866(There)s 1475(may)s 1937(be)s
@@ -8062,7 +8672,9 @@ grestore
2162(a)s 2322(length)s 2971(plus)s 3415(a)s 3574(g)s 1(ap)k
3966(mode)s 4548(plus)s 4992(an)s 5268(optional)s 6101(indication)s
7108(of)s 7373(unbreakability)s 15(.)k 8896(A)s 240 fnt6
-0 4973(length)m 240 fnt1 659 4971(is)m 875(represented)s 2040(by)s
+0 4973(length)m
+[ /Dest /LOUT15_4082_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
7036(follo)s 6(wed)k 7944(by)s 8244(a)s 8416(unit)s
@@ -8071,14 +8683,40 @@ grestore
4572(length)s 5226(2.5)s 5571(centimetres.)s 6834(Figure)s 7513(3.1)s
7847(gi)s 6(v)k 3(es)k 8393(the)s 8740(full)s
0 4395(selection)m 906(of)s 1177(units)s 1693(of)s 1964(measurement.)s
+
+[ /Dest /LOUT15_4082_pre_conc_8 /DEST pdfmark
+
+[ /Dest /LOUT15_4082_pre_conc_9 /DEST pdfmark
+
+[ /Dest /LOUT15_4082_pre_conc_10 /DEST pdfmark
+
+[ /Dest /LOUT15_4082_pre_conc_11 /DEST pdfmark
+
+[ /Dest /LOUT15_4082_pre_conc_12 /DEST pdfmark
+
+[ /Dest /LOUT15_4082_pre_conc_13 /DEST pdfmark
+
+[ /Dest /LOUT15_4082_pre_conc_14 /DEST pdfmark
+
+[ /Dest /LOUT15_4082_pre_conc_15 /DEST pdfmark
+
+[ /Dest /LOUT15_4082_pre_conc_16 /DEST pdfmark
+
+[ /Dest /LOUT15_4082_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 4883(which)s 5528(is)s 5740(a)s 5909(single)s
+4773 4021(,)m
+[ /Dest /LOUT15_4082_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
2562(is)s 2794(to)s 3055(be)s 3359(measured.)s 4462(As)s
4801(sho)s 6(wn)k 5500(in)s 5765(Figure)s 6468(3.2,)s
6897(with)s 7401(edge-to-edge)s 8728(g)s 1(ap)k 0 3445(mode)m
+
+[ /Dest /LOUT15_4082_pre_conc_19 /DEST pdfmark
+
+[ /Dest /LOUT15_4082_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
@@ -8087,10 +8725,26 @@ grestore
3071(def)s 2(ault)k 3790(mode:)s 4486(the)s 220 fnt2
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
-0 2869(similar)m 9(,)k 760(e)s 3(xcept)k 1441(as)s
-1691(e)s 3(xplained)k 2676(at)s 2908(the)s 3256(end)s
-3660(of)s 3931(this)s 4327(section.)s 480 2495(Mark-to-mark,)m 1957(o)s 3(v)k 3(erstrik)k 2(e,)k
-3028(and)s 3450(k)s 2(erning)k 4249(measure)s 5118(the)s
+
+[ /Dest /LOUT15_4082_pre_conc_21 /DEST pdfmark
+
+[ /Dest /LOUT15_4082_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 /LOUT15_4082_pre_conc_23 /DEST pdfmark
+
+[ /Dest /LOUT15_4082_pre_conc_24 /DEST pdfmark
+1957(o)s 3(v)k 3(erstrik)k 2(e,)k
+
+[ /Dest /LOUT15_4082_pre_conc_25 /DEST pdfmark
+
+[ /Dest /LOUT15_4082_pre_conc_26 /DEST pdfmark
+3028(and)s 3450(k)s 2(erning)k
+[ /Dest /LOUT15_4082_pre_conc_27 /DEST pdfmark
+
+[ /Dest /LOUT15_4082_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
892(the)s 1245(\207rst)s 1680(mark)s 2237(of)s 2513(the)s
@@ -8109,6 +8763,14 @@ grestore
2539(from)s 3087(o)s 3(v)k 3(erlapping)k 4301(the)s
4673(other)s 5248(object;)s 5969(this)s 6389(mode)s 7001(is)s
7235(used)s 7756(for)s 8119(subscripts)s 0 1055(and)m 404(superscripts.)s
+
+[ /Dest /LOUT15_4082_pre_conc_29 /DEST pdfmark
+
+[ /Dest /LOUT15_4082_pre_conc_30 /DEST pdfmark
+
+[ /Dest /LOUT15_4082_pre_conc_31 /DEST pdfmark
+
+[ /Dest /LOUT15_4082_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
@@ -8176,6 +8838,8 @@ gsave
gsave
0 LoutMargSet
grestore
+
+[ /Dest /LOUTunits /DEST pdfmark
0 86 0 86 240 288 60 0 13282 LoutGr2
0.5 pt ltabvs
grestore
@@ -8714,63 +9378,62 @@ grestore
200 fnt5 1938 5388(Figur)m 3(e)k
2546(3.1.)s 200 fnt1 2938 5389(The)m 3294(thirteen)s 3948(units)s
4377(of)s 4603(measurement)s 5713(pro)s 3(vided)k 6468(by)s
-6713(Lout.)s 240 fnt1 0 4758(will)m 426(centre)s 1065(it.)s
-480 4384(The)m 914(v)s 6(alue)k 220 fnt2 1488 4381(|0r)m -8(t)k
-240 fnt1 1871 4384(separating)m 2913(the)s 3267(\207rst)s 3704(and)s
+6713(Lout.)s
+[ /Dest /LOUTgapmodes /DEST pdfmark
+240 fnt1 0 4333(will)m 426(centre)s 1065(it.)s
+480 3959(The)m 914(v)s 6(alue)k 220 fnt2 1488 3956(|0r)m -8(t)k
+240 fnt1 1871 3959(separating)m 2913(the)s 3267(\207rst)s 3704(and)s
4115(second)s 4844(items)s 5418(in)s 5667(a)s 5840(sequence)s
-6779(of)s 7056(horizontally)s 8272(concate)s 8998(-)s 0 4096(nated)m
+6779(of)s 7056(horizontally)s 8272(concate)s 8998(-)s 0 3671(nated)m
572(objects)s 1296(is)s 1502(some)s 6(what)k 2522(special)s
3236(in)s 3475(that)s 3889(it)s 4077(denotes)s 4855(left)s
5228(justi\207cation)s 6409(of)s 6676(the)s 7020(object)s 7660(to)s
-7895(its)s 8167(left)s 8540(in)s 8778(the)s 0 3808(a)m 4(v)k 6(ailable)k
+7895(its)s 8167(left)s 8540(in)s 8778(the)s 0 3383(a)m 4(v)k 6(ailable)k
902(space.)s 1590(This)s 2059(is)s 2262(identical)s 3132(with)s
-220 fnt2 3607 3805(|0ie)m 240 fnt1 4001 3808(when)m 4570(the)s
+220 fnt2 3607 3380(|0ie)m 240 fnt1 4001 3383(when)m 4570(the)s
4911(object)s 5548(to)s 5780(the)s 6121(left)s 6491(also)s
-6922(has)s 7285(the)s 7626(principal)s 8523(mark;)s 0 3520(b)m 4(ut)k
+6922(has)s 7285(the)s 7626(principal)s 8523(mark;)s 0 3095(b)m 4(ut)k
354(when)s 922(it)s 1105(does)s 1587(not,)s 220 fnt2
-1991 3517(|0r)m -8(t)k 240 fnt1 2360 3520(will)m 2777(cause)s
+1991 3092(|0r)m -8(t)k 240 fnt1 2360 3095(will)m 2777(cause)s
3356(the)s 3695(object)s 4331(to)s 4561(the)s 4901(left)s
5269(to)s 5500(appear)s 6188(further)s 6889(to)s 7119(the)s
7459(left)s 7827(than)s 8288(it)s 8471(w)s 2(ould)k
-0 3232(otherwise)m 985(ha)s 4(v)k 3(e)k 1486(done,)s
+0 2807(otherwise)m 985(ha)s 4(v)k 3(e)k 1486(done,)s
2059(if)s 2276(space)s 2863(to)s 3102(do)s 3395(so)s
-3661(is)s 3871(a)s 4(v)k 6(ailable.)k 480 2858(A)m
+3661(is)s 3871(a)s 4(v)k 6(ailable.)k 480 2433(A)m
744(g)s 1(ap)k 1177(is)s 1421(optionally)s 2480(concluded)s
3557(with)s 4073(an)s 4391(indication)s 5439(of)s 5744(unbreakability)s 15(,)k
7252(which)s 7929(is)s 8173(a)s 8374(letter)s 220 fnt2
-8958 2855(u)m 240 fnt1 0 2570(appended)m 976(to)s 1215(the)s
+8958 2430(u)m 240 fnt1 0 2145(appended)m 976(to)s 1215(the)s
1563(g)s 1(ap.)k 2072(A)s 2303(paragraph)s 3316(will)s
3742(ne)s 6(v)k 3(er)k 4324(be)s 4607(brok)s 2(en)k
5327(at)s 5559(an)s 5842(unbreakable)s 7068(g)s 1(ap,)k
7520(nor)s 7899(will)s 8325(a)s 8492(g)s 1(alle)k 3(y)k
-0 2282(be)m 293(brok)s 2(en)k 1025(across)s 1684(tw)s 2(o)k
+0 1857(be)m 293(brok)s 2(en)k 1025(across)s 1684(tw)s 2(o)k
2106(tar)s 4(gets)k 2800(at)s 3044(such)s 3551(a)s
3729(g)s 1(ap.)k 4249(Basser)s 4958(Lout')s 13(s)k
5631(implementation)s 7200(is)s 7421(slightly)s 8204(defecti)s 6(v)k 3(e)k
-0 1994(in)m 242(that)s 659(it)s 849(ignores)s 1603(an)s 3(y)k
+0 1569(in)m 242(that)s 659(it)s 849(ignores)s 1603(an)s 3(y)k
1999(unbreakable)s 3222(indication)s 4234(in)s 4476(the)s 4822(g)s 1(ap)k
5219(separating)s 6253(the)s 6599(\207rst)s 7029(component)s 8151(promoted)s
-0 1706(into)m 425(an)s 3(y)k 822(tar)s 4(get)k
-1421(from)s 1945(the)s 2293(second.)s 480 1332(When)m 1111(tw)s 2(o)k
+0 1281(into)m 425(an)s 3(y)k 822(tar)s 4(get)k
+1421(from)s 1945(the)s 2293(second.)s 480 907(When)m 1111(tw)s 2(o)k
1523(objects)s 2254(are)s 2603(separated)s 3566(only)s 4048(by)s
4345(zero)s 4811(or)s 5072(more)s 5622(white)s 6211(space)s
-6801(characters)s 7821(\(spaces,)s 8634(tabs,)s 0 1044(ne)m 6(wlines,)k
+
+[ /Dest /LOUT15_4082_pre_conc_33 /DEST pdfmark
+
+[ /Dest /LOUT15_4082_pre_conc_34 /DEST pdfmark
+6801(characters)s 7821(\(spaces,)s 8634(tabs,)s 0 619(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
-240 fnt1 4307 1044(between)m 5194(the)s 5575(tw)s 2(o)k
-6018(objects,)s 6835(where)s 240 fnt6 7508 1046(k)m 240 fnt1
-7711 1044(is)m 7954(the)s 8335(number)s 0 756(of)m 291(spaces.)s
-1100(Precisely)s 15(,)k 240 fnt6 2087 758(k)m 240 fnt1
-2278 756(is)m 2509(determined)s 3662(by)s 3977(discarding)s 5047(all)s
+3859 616(&)m 240 fnt6 4001 621(k)m 220 fnt2 4111 616(s)m
+240 fnt1 4307 619(between)m 5194(the)s 5575(tw)s 2(o)k
+6018(objects,)s 6835(where)s 240 fnt6 7508 621(k)m 240 fnt1
+7711 619(is)m 7954(the)s 8335(number)s 0 331(of)m 291(spaces.)s
+1100(Precisely)s 15(,)k 240 fnt6 2087 333(k)m 240 fnt1
+2278 331(is)m 2509(determined)s 3662(by)s 3977(discarding)s 5047(all)s
5360(space)s 5968(characters)s 7007(and)s 7431(tabs)s 7888(that)s
-8327(precede)s 0 468(ne)m 6(wlines)k 903(\(these)s 1537(are)s
-1892(in)s 9(visible)k 2771(so)s 3045(are)s 3400(better)s
-4012(ignored\),)s 4937(then)s 5414(counting)s 6313(1)s 6477(for)s
-6823(each)s 7326(ne)s 6(wline,)k 8193(formfeed)s 0 180(or)m
-259(space,)s 897(and)s 1301(8)s 1468(for)s 1806(each)s
-2301(tab)s 2646(character)s 13(.)k 3671(The)s 4099(g)s 1(ap)k
-4497(will)s 4923(be)s 5205(unbreakable)s 6430(if)s 240 fnt6
-6647 182(k)m 240 fnt1 6817 180(is)m 7027(zero.)s
+8327(precede)s
grestore
gsave
1417 -15423 translate
@@ -8891,8 +9554,8 @@ gsave
0 0 translate
30.0000 rotate
gsave
-0 0 translate
-180 fnt1 68 0 0 0 180 288 45 LoutGraphic
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
gsave
0 0 moveto xsize 0 lineto stroke
grestore
@@ -8912,8 +9575,8 @@ gsave
0 0 translate
-30.0000 rotate
gsave
-0 0 translate
-180 fnt1 68 0 0 0 180 288 45 LoutGraphic
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
gsave
0 0 moveto xsize 0 lineto stroke
grestore
@@ -8927,8 +9590,8 @@ gsave
1247 6658 translate
30.0000 rotate
gsave
-0 0 translate
-180 fnt1 68 0 0 0 180 288 45 LoutGraphic
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
gsave
0 0 moveto xsize 0 lineto stroke
grestore
@@ -8948,8 +9611,8 @@ gsave
1247 6658 translate
-30.0000 rotate
gsave
-0 0 translate
-180 fnt1 68 0 0 0 180 288 45 LoutGraphic
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
gsave
0 0 moveto xsize 0 lineto stroke
grestore
@@ -9000,8 +9663,8 @@ gsave
0 0 translate
30.0000 rotate
gsave
-0 0 translate
-180 fnt1 68 0 0 0 180 288 45 LoutGraphic
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
gsave
0 0 moveto xsize 0 lineto stroke
grestore
@@ -9021,8 +9684,8 @@ gsave
0 0 translate
-30.0000 rotate
gsave
-0 0 translate
-180 fnt1 68 0 0 0 180 288 45 LoutGraphic
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
gsave
0 0 moveto xsize 0 lineto stroke
grestore
@@ -9036,8 +9699,8 @@ gsave
1247 5506 translate
30.0000 rotate
gsave
-0 0 translate
-180 fnt1 68 0 0 0 180 288 45 LoutGraphic
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
gsave
0 0 moveto xsize 0 lineto stroke
grestore
@@ -9057,8 +9720,8 @@ gsave
1247 5506 translate
-30.0000 rotate
gsave
-0 0 translate
-180 fnt1 68 0 0 0 180 288 45 LoutGraphic
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
gsave
0 0 moveto xsize 0 lineto stroke
grestore
@@ -9109,8 +9772,8 @@ gsave
0 0 translate
30.0000 rotate
gsave
-0 0 translate
-180 fnt1 68 0 0 0 180 288 45 LoutGraphic
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
gsave
0 0 moveto xsize 0 lineto stroke
grestore
@@ -9130,8 +9793,8 @@ gsave
0 0 translate
-30.0000 rotate
gsave
-0 0 translate
-180 fnt1 68 0 0 0 180 288 45 LoutGraphic
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
gsave
0 0 moveto xsize 0 lineto stroke
grestore
@@ -9145,8 +9808,8 @@ gsave
680 4297 translate
30.0000 rotate
gsave
-0 0 translate
-180 fnt1 68 0 0 0 180 288 45 LoutGraphic
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
gsave
0 0 moveto xsize 0 lineto stroke
grestore
@@ -9166,8 +9829,8 @@ gsave
680 4297 translate
-30.0000 rotate
gsave
-0 0 translate
-180 fnt1 68 0 0 0 180 288 45 LoutGraphic
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
gsave
0 0 moveto xsize 0 lineto stroke
grestore
@@ -9219,8 +9882,8 @@ gsave
0 0 translate
30.0000 rotate
gsave
-0 0 translate
-180 fnt1 68 0 0 0 180 288 45 LoutGraphic
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
gsave
0 0 moveto xsize 0 lineto stroke
grestore
@@ -9240,8 +9903,8 @@ gsave
0 0 translate
-30.0000 rotate
gsave
-0 0 translate
-180 fnt1 68 0 0 0 180 288 45 LoutGraphic
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
gsave
0 0 moveto xsize 0 lineto stroke
grestore
@@ -9255,8 +9918,8 @@ gsave
680 3095 translate
30.0000 rotate
gsave
-0 0 translate
-180 fnt1 68 0 0 0 180 288 45 LoutGraphic
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
gsave
0 0 moveto xsize 0 lineto stroke
grestore
@@ -9276,8 +9939,8 @@ gsave
680 3095 translate
-30.0000 rotate
gsave
-0 0 translate
-180 fnt1 68 0 0 0 180 288 45 LoutGraphic
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
gsave
0 0 moveto xsize 0 lineto stroke
grestore
@@ -9292,7 +9955,7 @@ grestore
gsave
0 0 translate
30.0000 rotate
-68 0 0 0 180 288 45 0 0 LoutGr2
+68 -2 0 -1 180 288 45 0 1 LoutGr2
0 0 moveto xsize 0 lineto stroke
grestore
@@ -9307,7 +9970,7 @@ grestore
gsave
0 0 translate
-30.0000 rotate
-68 0 0 0 180 288 45 0 0 LoutGr2
+68 -2 0 -1 180 288 45 0 1 LoutGr2
0 0 moveto xsize 0 lineto stroke
grestore
@@ -9319,7 +9982,7 @@ grestore
gsave
680 3719 translate
30.0000 rotate
-68 0 0 0 180 288 45 0 0 LoutGr2
+68 -2 0 -1 180 288 45 0 1 LoutGr2
0 0 moveto xsize 0 lineto stroke
grestore
@@ -9334,7 +9997,7 @@ grestore
gsave
680 3719 translate
-30.0000 rotate
-68 0 0 0 180 288 45 0 0 LoutGr2
+68 -2 0 -1 180 288 45 0 1 LoutGr2
0 0 moveto xsize 0 lineto stroke
grestore
@@ -9348,8 +10011,8 @@ gsave
0 0 translate
30.0000 rotate
gsave
-0 0 translate
-180 fnt1 68 0 0 0 180 288 45 LoutGraphic
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
gsave
0 0 moveto xsize 0 lineto stroke
grestore
@@ -9369,8 +10032,8 @@ gsave
0 0 translate
-30.0000 rotate
gsave
-0 0 translate
-180 fnt1 68 0 0 0 180 288 45 LoutGraphic
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
gsave
0 0 moveto xsize 0 lineto stroke
grestore
@@ -9384,8 +10047,8 @@ gsave
2268 3719 translate
30.0000 rotate
gsave
-0 0 translate
-180 fnt1 68 0 0 0 180 288 45 LoutGraphic
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
gsave
0 0 moveto xsize 0 lineto stroke
grestore
@@ -9405,8 +10068,8 @@ gsave
2268 3719 translate
-30.0000 rotate
gsave
-0 0 translate
-180 fnt1 68 0 0 0 180 288 45 LoutGraphic
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
gsave
0 0 moveto xsize 0 lineto stroke
grestore
@@ -9458,8 +10121,8 @@ gsave
0 0 translate
30.0000 rotate
gsave
-0 0 translate
-180 fnt1 68 0 0 0 180 288 45 LoutGraphic
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
gsave
0 0 moveto xsize 0 lineto stroke
grestore
@@ -9479,8 +10142,8 @@ gsave
0 0 translate
-30.0000 rotate
gsave
-0 0 translate
-180 fnt1 68 0 0 0 180 288 45 LoutGraphic
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
gsave
0 0 moveto xsize 0 lineto stroke
grestore
@@ -9494,8 +10157,8 @@ gsave
680 1943 translate
30.0000 rotate
gsave
-0 0 translate
-180 fnt1 68 0 0 0 180 288 45 LoutGraphic
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
gsave
0 0 moveto xsize 0 lineto stroke
grestore
@@ -9515,8 +10178,8 @@ gsave
680 1943 translate
-30.0000 rotate
gsave
-0 0 translate
-180 fnt1 68 0 0 0 180 288 45 LoutGraphic
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
gsave
0 0 moveto xsize 0 lineto stroke
grestore
@@ -9531,7 +10194,7 @@ grestore
gsave
0 0 translate
30.0000 rotate
-68 0 0 0 180 288 45 0 0 LoutGr2
+68 -2 0 -1 180 288 45 0 1 LoutGr2
0 0 moveto xsize 0 lineto stroke
grestore
@@ -9546,7 +10209,7 @@ grestore
gsave
0 0 translate
-30.0000 rotate
-68 0 0 0 180 288 45 0 0 LoutGr2
+68 -2 0 -1 180 288 45 0 1 LoutGr2
0 0 moveto xsize 0 lineto stroke
grestore
@@ -9558,7 +10221,7 @@ grestore
gsave
680 2567 translate
30.0000 rotate
-68 0 0 0 180 288 45 0 0 LoutGr2
+68 -2 0 -1 180 288 45 0 1 LoutGr2
0 0 moveto xsize 0 lineto stroke
grestore
@@ -9573,7 +10236,7 @@ grestore
gsave
680 2567 translate
-30.0000 rotate
-68 0 0 0 180 288 45 0 0 LoutGr2
+68 -2 0 -1 180 288 45 0 1 LoutGr2
0 0 moveto xsize 0 lineto stroke
grestore
@@ -9588,8 +10251,8 @@ gsave
0 0 translate
30.0000 rotate
gsave
-0 0 translate
-180 fnt1 68 0 0 0 180 288 45 LoutGraphic
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
gsave
0 0 moveto xsize 0 lineto stroke
grestore
@@ -9609,8 +10272,8 @@ gsave
0 0 translate
-30.0000 rotate
gsave
-0 0 translate
-180 fnt1 68 0 0 0 180 288 45 LoutGraphic
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
gsave
0 0 moveto xsize 0 lineto stroke
grestore
@@ -9624,8 +10287,8 @@ gsave
2268 2567 translate
30.0000 rotate
gsave
-0 0 translate
-180 fnt1 68 0 0 0 180 288 45 LoutGraphic
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
gsave
0 0 moveto xsize 0 lineto stroke
grestore
@@ -9645,8 +10308,8 @@ gsave
2268 2567 translate
-30.0000 rotate
gsave
-0 0 translate
-180 fnt1 68 0 0 0 180 288 45 LoutGraphic
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
gsave
0 0 moveto xsize 0 lineto stroke
grestore
@@ -9697,8 +10360,8 @@ gsave
0 0 translate
30.0000 rotate
gsave
-0 0 translate
-180 fnt1 68 0 0 0 180 288 45 LoutGraphic
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
gsave
0 0 moveto xsize 0 lineto stroke
grestore
@@ -9718,8 +10381,8 @@ gsave
0 0 translate
-30.0000 rotate
gsave
-0 0 translate
-180 fnt1 68 0 0 0 180 288 45 LoutGraphic
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
gsave
0 0 moveto xsize 0 lineto stroke
grestore
@@ -9733,8 +10396,8 @@ gsave
0 734 translate
30.0000 rotate
gsave
-0 0 translate
-180 fnt1 68 0 0 0 180 288 45 LoutGraphic
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
gsave
0 0 moveto xsize 0 lineto stroke
grestore
@@ -9754,8 +10417,8 @@ gsave
0 734 translate
-30.0000 rotate
gsave
-0 0 translate
-180 fnt1 68 0 0 0 180 288 45 LoutGraphic
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
gsave
0 0 moveto xsize 0 lineto stroke
grestore
@@ -9770,8 +10433,8 @@ gsave
0 0 translate
30.0000 rotate
gsave
-0 0 translate
-180 fnt1 68 0 0 0 180 288 45 LoutGraphic
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
gsave
0 0 moveto xsize 0 lineto stroke
grestore
@@ -9791,8 +10454,8 @@ gsave
0 0 translate
-30.0000 rotate
gsave
-0 0 translate
-180 fnt1 68 0 0 0 180 288 45 LoutGraphic
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
gsave
0 0 moveto xsize 0 lineto stroke
grestore
@@ -9806,8 +10469,8 @@ gsave
0 234 translate
30.0000 rotate
gsave
-0 0 translate
-180 fnt1 68 0 0 0 180 288 45 LoutGraphic
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
gsave
0 0 moveto xsize 0 lineto stroke
grestore
@@ -9827,8 +10490,8 @@ gsave
0 234 translate
-30.0000 rotate
gsave
-0 0 translate
-180 fnt1 68 0 0 0 180 288 45 LoutGraphic
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
gsave
0 0 moveto xsize 0 lineto stroke
grestore
@@ -9844,48 +10507,56 @@ grestore
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 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
+0 4691(ne)m 6(wlines)k 903(\(these)s 1537(are)s 1892(in)s 9(visible)k
+2771(so)s 3045(are)s 3400(better)s 4012(ignored\),)s 4937(then)s
+5414(counting)s 6313(1)s 6477(for)s 6823(each)s 7326(ne)s 6(wline,)k
+8193(formfeed)s 0 4403(or)m 259(space,)s 897(and)s 1301(8)s
+1468(for)s 1806(each)s 2301(tab)s 2646(character)s 13(.)k
+3671(The)s 4099(g)s 1(ap)k 4497(will)s 4923(be)s
+5205(unbreakable)s 6430(if)s 240 fnt6 6647 4405(k)m 240 fnt1
+6817 4403(is)m 7027(zero.)s 480 4029(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 4026(&)m 240 fnt1
+5462 4029(symbols)m 6326(is)s 6551(a)s
+[ /Dest /LOUT15_4082_pre_conc_35 /DEST pdfmark
+240 fnt6 6732 4031(par)m 3(a)k 2(gr)k 3(aph)k
+240 fnt1 7745 4029(.)m 7924(Lout)s 8451(breaks)s 0 3741(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
+6460(of)s 6732(the)s 220 fnt2 7081 3738(&)m 240 fnt1
+7284 3741(symbols)m 8134(into)s 220 fnt2 8560 3738(//1vx)m 240 fnt1
+9022 3741(.)m 0 3453(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 2306 3825(X)m 2535([5)s 2720(].)s
-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 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
+8386(using)s 8960(a)s 0 3165(method)m 776(adapted)s 1578(from)s
+2102(T)s 2198 3117(E)m 2306 3165(X)m 2535([)s
+[ /Rect [2606 3162 2712 3330] /Subtype /Link /Dest /LOUTknuth1984tex /ANN pdfmark
+2606(5)s
+2712(].)s
+[ /Dest /LOUT15_4067_pre_conc_1 /DEST pdfmark
+
+[ /Dest /LOUT15_4082_pre_conc_36 /DEST pdfmark
+480 2791(If)m 735(an)s 220 fnt2 1043 2788(&)m
+240 fnt1 1271 2791(symbol)m 2056(whose)s 2750(g)s 1(ap)k
+3173(has)s 3568(h)s 1(yphenation)k 4834(mode)s
+[ /Dest /LOUT15_4082_pre_conc_37 /DEST pdfmark
+
+[ /Dest /LOUT15_4082_pre_conc_38 /DEST pdfmark
+5447(is)s
+5683(chosen)s 6430(for)s 6793(replacement)s 8046(by)s 220 fnt2
+8365 2788(//1vx)m 240 fnt1 8827 2791(,)m 8960(a)s 0 2503(h)m 1(yphen)k
755(will)s 1174(be)s 1448(appended)s 2417(to)s 2649(the)s
2989(preceding)s 3978(object,)s 4661(unless)s 5303(that)s 5714(object)s
6350(is)s 6553(a)s 6712(w)s 2(ord)k 7252(which)s
-7887(already)s 8636(ends)s 0 2875(with)m 482(a)s 648(h)s 1(yphen.)k
+7887(already)s 8636(ends)s 0 2215(with)m 482(a)s 648(h)s 1(yphen.)k
1517(F)s 3(or)k 1906(e)s 3(xample,)k 220 fnt2
-480 2378(Long)m 1017(w)s 2(ords)k 1654(ma)s 6(y)k
-2122(be)s 2419(h)s 6(yph &0ih enat &0ih ed.)k 240 fnt1 0 1879(could)m
+480 1718(Long)m 1017(w)s 2(ords)k 1654(ma)s 6(y)k
+2122(be)s 2419(h)s 6(yph &0ih enat &0ih ed.)k 240 fnt1 0 1219(could)m
590(ha)s 4(v)k 3(e)k 1091(the)s 1439(follo)s 6(wing)k
2416(result,)s 3053(depending)s 4104(where)s 4744(the)s 5092(line)s
-5506(breaks)s 6181(f)s 2(all:)k 480 1376(Long)m 1038(w)s 2(ords)k
+5506(breaks)s 6181(f)s 2(all:)k 480 716(Long)m 1038(w)s 2(ords)k
1670(may)s 2135(be)s 2415(h)s 1(yphenat)k 3292(-)s
-480 1088(ed.)m 0 635(Basser)m 702(Lout)s 1219(inserts)s 1898(h)s 1(yphenation)k
-3143(g)s 1(aps)k 3637(automatically)s 4996(as)s 5251(required,)s
-6159(ag)s 1(ain)k 6738(follo)s 6(wing)k 7720(the)s
-8073(method)s 8855(of)s 0 347(T)m 96 299(E)m 204 347(X)m
-373(,)s 479(which)s 1120(approximates)s 2458(the)s 2804(h)s 1(yphenations)k
-4130(in)s 4372(W)s 19(ebster')k 13(s)k 5358(dictionary)s 15(.)k
-6474(T)s 19(o)k 6773(pre)s 6(v)k 3(ent)k
-7540(the)s 7886(h)s 1(yphenation)k 0 59(of)m 268(a)s
-430(single)s 1053(w)s 2(ord,)k 1646(enclose)s 2416(it)s
-2604(in)s 2843(quotes.)s 3628(Further)s 4387(control)s 5116(o)s 3(v)k 3(er)k
-5591(paragraph)s 6600(breaking)s 7486(and)s 7886(h)s 1(yphenation)k
-
+480 428(ed.)m
grestore
gsave
1417 -15423 translate
@@ -9940,121 +10611,136 @@ 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
+240 fnt1 9066 13368 0 13259 240 288 60 LoutGraphic
gsave
0 LoutMargSet
grestore
-0 13203(is)m 210(pro)s 3(vided)k
-1116(by)s 1410(the)s 220 fnt2 1758 13200(@Break)m 240 fnt1
-2614 13203(and)m 220 fnt2 3018 13200(@Space)m 240 fnt1 3915 13203(symbols)m
-4764(\(Sections)s 5704(3.4)s 6058(and)s 6462(3.5\).)s 240 fnt5
-0 12410(3.3.)m 471(@F)s 6(ont,)k 1280(@Char)s 22(,)k
-2127(and)s 2568(@F)s 6(ontDef)k 240 fnt1 480 11939(A)m
-240 fnt6 728 11941(font)m 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 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
+0 13205(Basser)m 702(Lout)s
+1219(inserts)s 1898(h)s 1(yphenation)k 3143(g)s 1(aps)k
+3637(automatically)s 4996(as)s 5251(required,)s 6159(ag)s 1(ain)k
+6738(follo)s 6(wing)k 7720(the)s 8073(method)s 8855(of)s
+0 12917(T)m 96 12869(E)m 204 12917(X)m 373(,)s 479(which)s
+1120(approximates)s 2458(the)s 2804(h)s 1(yphenations)k 4130(in)s
+4372(W)s 19(ebster')k 13(s)k 5358(dictionary)s 15(.)k
+6474(T)s 19(o)k 6773(pre)s 6(v)k 3(ent)k
+7540(the)s 7886(h)s 1(yphenation)k 0 12629(of)m 268(a)s
+430(single)s 1053(w)s 2(ord,)k 1646(enclose)s 2416(it)s
+2604(in)s 2843(quotes.)s 3628(Further)s 4387(control)s 5116(o)s 3(v)k 3(er)k
+5591(paragraph)s 6600(breaking)s 7486(and)s 7886(h)s 1(yphenation)k
+0 12341(is)m 210(pro)s 3(vided)k 1116(by)s 1410(the)s
+220 fnt2 1758 12338(@Break)m 240 fnt1 2614 12341(and)m 220 fnt2
+3018 12338(@Space)m 240 fnt1 3915 12341(symbols)m 4764(\(Sections)s 5704(3.4)s
+6058(and)s 6462(3.5\).)s 240 fnt5 0 11548(3.3.)m 471(@F)s 6(ont,)k
+1280(@Char)s 22(,)k 2127(and)s 2568(@F)s 6(ontDef)k
+
+[ /Dest /LOUTfont /DEST pdfmark
+240 fnt1 480 11077(A)m 240 fnt6 728 11079(font)m
+[ /Dest /LOUT15_4082_pre_font_1 /DEST pdfmark
+240 fnt1
+1182 11077(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 11079(families)m
+240 fnt1 9019 11077(,)m
+[ /Dest /LOUT15_4082_pre_font_2 /DEST pdfmark
+
+[ /Dest /LOUT15_4082_pre_font_3 /DEST pdfmark
+0 10789(which)m 634(are)s 973(groups)s
+1667(of)s 1930(fonts)s 2450(that)s 2860(ha)s 4(v)k 3(e)k
3352(been)s 3853(designed)s 4754(to)s 4984(go)s 5269(together)s 13(.)k
6194(F)s 3(or)k 6575(e)s 3(xample,)k 7480(the)s
-7820(T)s 8(imes)k 8451(f)s 2(amily)k 0 11363(includes)m
-848(the)s 1196(follo)s 6(wing)k 2173(fonts:)s 480 10860(T)m 8(imes)k
-1120(Base)s 240 fnt6 480 10574(T)m 13(imes)k 1093(Slope)s
-240 fnt5 480 10283(T)m 4(imes)k 1154(Bold)s 240 fnt7
-480 9995(T)m 8(imes)k 1116(BoldSlope)s 240 fnt1 0 9493(Thus,)m
+7820(T)s 8(imes)k 8451(f)s 2(amily)k 0 10501(includes)m
+848(the)s 1196(follo)s 6(wing)k 2173(fonts:)s 480 9998(T)m 8(imes)k
+1120(Base)s 240 fnt6 480 9712(T)m 13(imes)k 1093(Slope)s
+240 fnt5 480 9421(T)m 4(imes)k 1154(Bold)s 240 fnt7
+480 9133(T)m 8(imes)k 1116(BoldSlope)s 240 fnt1 0 8631(Thus,)m
586(each)s 1080(font)s 1524(has)s 1893(tw)s 2(o)k
-2303(names:)s 3019(its)s 240 fnt6 3294 9495(family)m 3946(name)s
-240 fnt1 4518 9493(\(T)m 8(imes,)k 5292(Helv)s 3(etica,)k
-6310(etc.\))s 6775(and)s 7179(its)s 240 fnt6 7454 9495(face)m
-7904(name)s 240 fnt1 8475 9493(\(Base,)m 0 9205(Slope,)m 682(etc.\).)s
+2303(names:)s 3019(its)s 240 fnt6 3294 8633(family)m 3946(name)s
+240 fnt1 4518 8631(\(T)m 8(imes,)k 5292(Helv)s 3(etica,)k
+6310(etc.\))s 6775(and)s 7179(its)s 240 fnt6 7454 8633(face)m
+7904(name)s 240 fnt1 8475 8631(\(Base,)m 0 8343(Slope,)m 682(etc.\).)s
1294(T)s 8(imes)k 1964(Base)s 2516(is)s 2756(more)s
3334(commonly)s 4443(called)s 5101(T)s 8(imes)k 5772(Roman,)s
6601(and)s 7036(T)s 8(imes)k 7706(Slope)s 8338(is)s
-8579(more)s 0 8917(commonly)m 1085(called)s 1720(T)s 8(imes)k
+8579(more)s 0 8055(commonly)m 1085(called)s 1720(T)s 8(imes)k
2367(Italic.)s 3027(Lout)s 3547(a)s 4(v)k 4(oids)k
4222(these)s 4776(names)s 5445(in)s 5695(f)s 2(a)k 4(v)k 4(our)k
6377(of)s 6655(generic)s 7418(names)s 8087(which)s 8737(can)s
-0 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
+0 7767(be)m 282(applied)s 1044(to)s 1283(man)s 3(y)k
+1866(font)s 2311(f)s 2(amilies.)k 480 7393(Lig)m 1(atures,)k
+
+[ /Dest /LOUT15_4082_pre_font_4 /DEST pdfmark
+
+[ /Dest /LOUT15_4082_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
6596(Lout)s 7108(to)s 7348(be)s 7630(an)s 7913(inte)s 3(gral)k
-8695(part)s 0 7967(of)m 257(the)s 591(font:)s 1128(if)s
+8695(part)s 0 7105(of)m 257(the)s 591(font:)s 1128(if)s
1331(the)s 1665(font)s 2096(de\207nition)s 3056(\(see)s 3482(belo)s 6(w\))k
4175(mentions)s 5089(them,)s 5660(the)s 3(y)k 6109(will)s
6521(be)s 6789(used.)s 7378(Similarly)s 15(,)k 8344(k)s 2(erning)k
-0 7679(\(\207ne)m 510(adjustment)s 1636(of)s 1924(the)s 2289(space)s
+0 6817(\(\207ne)m 510(adjustment)s 1636(of)s 1924(the)s 2289(space)s
2893(between)s 3764(adjacent)s 4637(characters)s 5672(to)s 5928(impro)s 3(v)k 3(e)k
-6792(the)s 7157(appearance\))s 8377(is)s 8604(done)s 0 7391(whene)m 6(v)k 3(er)k
+6792(the)s 7157(appearance\))s 8377(is)s 8604(done)s 0 6529(whene)m 6(v)k 3(er)k
988(indicated)s 1929(in)s 2179(the)s 2535(font)s 2987(de\207nition.)s
4075(Enclosing)s 5092(one)s 5502(of)s 5780(the)s 6135(letters)s
-6775(in)s 220 fnt2 7026 7388(@OneCol)m 240 fnt1 8045 7391(is)m
-8262(one)s 8672(sure)s 0 7103(w)m 2(ay)k 451(to)s
+6775(in)s 220 fnt2 7026 6526(@OneCol)m 240 fnt1 8045 6529(is)m
+8262(one)s 8672(sure)s 0 6241(w)m 2(ay)k 451(to)s
690(disable)s 1423(a)s 1589(lig)s 1(ature)k 2373(or)s
-2632(k)s 2(ern.)k 480 6729(The)m 220 fnt2 908 6726(@F)m 6(ont)k
-240 fnt1 1620 6729(symbol)m 2380(returns)s 3094(its)s 3370(right)s
+2632(k)s 2(ern.)k 480 5867(The)m 220 fnt2 908 5864(@F)m 6(ont)k
+240 fnt1 1620 5867(symbol)m
+[ /Dest /LOUT15_4082_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
-220 fnt2 480 6221({ )m 11(Times Base 12p } @F)k 6(ont)k 240 fnt6
-3155 6226(object)m 240 fnt1 0 5725(The)m 431(f)s 2(amily)k
+220 fnt2 480 5359({ )m 11(Times Base 12p } @F)k 6(ont)k 240 fnt6
+3155 5364(object)m 240 fnt1 0 4863(The)m 431(f)s 2(amily)k
1110(and)s 1517(f)s 2(ace)k 1972(names)s 2638(must)s
3166(ha)s 4(v)k 3(e)k 3671(appeared)s 4596(together)s
-5442(in)s 5689(a)s 220 fnt2 5858 5722(@F)m 6(ontDef)k
-240 fnt1 6916 5725(\(see)m 7360(belo)s 6(w\);)k 8133(the)s
-8485(size)s 8916(is)s 0 5437(arbitrary)m 879(and)s 1287(may)s
+5442(in)s 5689(a)s 220 fnt2 5858 4860(@F)m 6(ontDef)k
+240 fnt1 6916 4863(\(see)m 7360(belo)s 6(w\);)k 8133(the)s
+8485(size)s 8916(is)s 0 4575(arbitrary)m 879(and)s 1287(may)s
1757(be)s 2043(gi)s 6(v)k 3(en)k 2627(in)s
2874(an)s 3(y)k 3275(one)s 3681(of)s 3956(the)s
-220 fnt2 4308 5434(c)m 240 fnt1 4413 5437(,)m 220 fnt2
-4525 5434(i)m 240 fnt1 4559 5437(,)m 220 fnt2 4670 5434(p)m
-240 fnt1 4784 5437(,)m 220 fnt2 4895 5434(m)m 240 fnt1
-5064 5437(,)m 220 fnt2 5175 5434(f)m 240 fnt1 5233 5437(,)m
-220 fnt2 5344 5434(s)m 240 fnt1 5447 5437(,)m 5558(and)s
-220 fnt2 5966 5434(v)m 240 fnt1 6139 5437(units)m 6659(of)s
-6934(measurement)s 8273(\(Section)s 0 5149(3.2\),)m 479(although)s 220 fnt2
-1367 5146(10p)m 240 fnt1 1777 5149(and)m 220 fnt2 2174 5146(12p)m
-240 fnt1 2584 5149(are)m 2924(the)s 3264(most)s 3782(common)s
+220 fnt2 4308 4572(c)m 240 fnt1 4413 4575(,)m 220 fnt2
+4525 4572(i)m 240 fnt1 4559 4575(,)m 220 fnt2 4670 4572(p)m
+240 fnt1 4784 4575(,)m 220 fnt2 4895 4572(m)m 240 fnt1
+5064 4575(,)m 220 fnt2 5175 4572(f)m 240 fnt1 5233 4575(,)m
+220 fnt2 5344 4572(s)m 240 fnt1 5447 4575(,)m 5558(and)s
+220 fnt2 5966 4572(v)m 240 fnt1 6139 4575(units)m 6659(of)s
+6934(measurement)s 8273(\(Section)s 0 4287(3.2\),)m 479(although)s 220 fnt2
+1367 4284(10p)m 240 fnt1 1777 4287(and)m 220 fnt2 2174 4284(12p)m
+240 fnt1 2584 4287(are)m 2924(the)s 3264(most)s 3782(common)s
4669(sizes)s 5177(for)s 5507(te)s 3(xt.)k 6019(There)s
6624(may)s 7083(be)s 7357(empty)s 8002(objects)s 8722(and)s
-220 fnt2 0 4858(@Null)m 240 fnt1 645 4861(objects)m 1373(in)s
+220 fnt2 0 3996(@Null)m 240 fnt1 645 3999(objects)m 1373(in)s
1616(the)s 1964(left)s 2341(parameter)s 3355(of)s 220 fnt2
-3626 4858(@F)m 6(ont)k 240 fnt1 4278 4861(;)m 4390(these)s
-4937(are)s 5284(ignored.)s 480 4487(When)m 1114(a)s 220 fnt2
-1286 4484(@F)m 6(ont)k 240 fnt1 2004 4487(symbol)m 2769(is)s
+3626 3996(@F)m 6(ont)k 240 fnt1 4278 3999(;)m 4390(these)s
+4937(are)s 5284(ignored.)s 480 3625(When)m 1114(a)s 220 fnt2
+1286 3622(@F)m 6(ont)k 240 fnt1 2004 3625(symbol)m 2769(is)s
2985(nested)s 3660(inside)s 4293(the)s 4646(right)s 5163(parameter)s
-6183(of)s 6459(another)s 220 fnt2 7242 4484(@F)m 6(ont)k
-240 fnt1 7960 4487(symbol,)m 8778(the)s 0 4199(inner)m 555(one)s
+6183(of)s 6459(another)s 220 fnt2 7242 3622(@F)m 6(ont)k
+240 fnt1 7960 3625(symbol,)m 8778(the)s 0 3337(inner)m 555(one)s
961(determines)s 2065(the)s 2417(font)s 2867(of)s 3142(its)s
3423(o)s 6(wn)k 3891(right)s 4406(parameter)s 13(.)k
5516(Ho)s 6(we)k 6(v)k 3(er)k 9(,)k
6480(it)s 6677(may)s 7147(be)s 7434(abbre)s 6(viated)k
-8605(so)s 8876(as)s 0 3911(to)m 239(inherit)s 922(part)s
+8605(so)s 8876(as)s 0 3049(to)m 239(inherit)s 922(part)s
1353(of)s 1624(the)s 1972(outer)s 2523(symbol:)s 220 fnt2
-480 3410({ )m 11(Times Base 12p } @F)k 6(ont)k 480 3122({ hello)m 8(, Slope @F)k 6(ont hello)k 8(, 15p @F)k 6(ont hello })k
-240 fnt1 0 2626(has)m 370(result)s 480 2145(hello,)m 240 fnt6
-1065 2147(hello,)m 300 fnt1 1636 2132(hello)m 240 fnt1 0 1661(The)m
-457(\207rst)s 918(inner)s 220 fnt2 1498 1658(@F)m 6(ont)k
-240 fnt1 2240 1661(inherits)m 3037(the)s 3414(outer)s 3995(f)s 2(amily)k
+480 2548({ )m 11(Times Base 12p } @F)k 6(ont)k 480 2260({ hello)m 8(, Slope @F)k 6(ont hello)k 8(, 15p @F)k 6(ont hello })k
+240 fnt1 0 1764(has)m 370(result)s 480 1283(hello,)m 240 fnt6
+1065 1285(hello,)m 300 fnt1 1636 1270(hello)m 240 fnt1 0 799(The)m
+457(\207rst)s 918(inner)s 220 fnt2 1498 796(@F)m 6(ont)k
+240 fnt1 2240 799(inherits)m 3037(the)s 3414(outer)s 3995(f)s 2(amily)k
4699(and)s 5133(size,)s 5641(changing)s 6601(only)s 7111(the)s
-7488(f)s 2(ace;)k 8025(the)s 8403(second)s 0 1373(inherits)m
+7488(f)s 2(ace;)k 8025(the)s 8403(second)s 0 511(inherits)m
754(the)s 1089(outer)s 1627(f)s 2(amily)k 2289(and)s
2680(f)s 2(ace.)k 3225(When)s 3841(a)s 3994(f)s 2(amily)k
4656(name)s 5217(is)s 5413(gi)s 6(v)k 3(en,)k
6030(it)s 6209(must)s 6721(be)s 6990(follo)s 6(wed)k
-7878(immediately)s 0 1085(by)m 294(a)s 460(f)s 2(ace)k
+7878(immediately)s 0 223(by)m 294(a)s 460(f)s 2(ace)k
911(name.)s 1593(A)s 1823(size)s 2250(change)s 2984(may)s
-3450(appear)s 4147(\207rst)s 4578(or)s 4837(last.)s 480 711(Sizes)m
-1035(of)s 1307(the)s 1656(form)s 2180(+)s 240 fnt6
-2308 713(length)m 240 fnt1 2962 711(and)m 3367(\211)s 240 fnt6
-3487 713(length)m 240 fnt1 4140 711(may)m 4607(also)s 5046(be)s
-5328(used,)s 5875(meaning)s 6753(that)s 7171(the)s 7520(font)s
-7966(size)s 8393(is)s 8604(to)s 8844(be)s 240 fnt6
-0 425(length)m 240 fnt1 649 423(lar)m 4(ger)k 1257(or)s
-1512(smaller)s 2269(than)s 2734(the)s 3078(inherited)s 3981(v)s 6(alue.)k
-4652(F)s 3(or)k 5037(e)s 3(xample,)k 5947(\211)s
-220 fnt2 6067 420(2p)m 240 fnt1 6359 423(is)m 6564(often)s
-7108(used)s 7601(for)s 7934(superscripts)s
+3450(appear)s 4147(\207rst)s 4578(or)s 4837(last.)s
grestore
gsave
1417 -15423 translate
@@ -10106,125 +10792,139 @@ gsave
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 13257 240 288 60 LoutGraphic
gsave
1 LoutMargSet
grestore
-0 13205(and)m 407(subscripts.)s 1530(These)s 2161(forms)s 2772(are)s
-3123(highly)s 3792(recommended,)s 5257(since)s 5808(the)s 3(y)k
-6274(don')s 4(t)k 6839(need)s 7352(to)s 7594(be)s
-7880(changed)s 8739(if)s 8960(a)s 0 12917(decision)m 854(is)s
-1064(made)s 1638(to)s 1877(alter)s 2360(the)s 2708(font)s
-3153(size)s 3580(of)s 3851(the)s 4199(document)s 5203(as)s
-5453(a)s 5619(whole.)s 480 12543(The)m 220 fnt2 908 12540(@F)m 6(ont)k
-240 fnt1 1620 12543(symbol)m 2380(also)s 2818(switches)s 3692(to)s
-3931(and)s 4335(from)s 4859(small)s 5431(capitals:)s 220 fnt2
-480 12042(smallcaps @F)m 6(ont ...)k 480 11754(nosmallcaps @F)m 6(ont ...)k 240 fnt1
-0 11258(These)m 639(may)s 1118(be)s 1412(nested,)s 2143(and)s
-2559(the)s 3(y)k 3035(cooperate)s 4033(with)s 4527(other)s
-5091(font)s 5548(changes.)s 6496(The)s 6936(precise)s 7681(ef)s 6(fect)k
-8290(depends)s 0 10970(on)m 293(the)s 637(font)s 1078(\(see)s
-1514(belo)s 6(w\).)k 2331(There)s 2940(is)s 3146(a)s
-3308(def)s 2(ault)k 4024(v)s 6(alue)k 4588(\()s
-220 fnt2 4661 10967(nosmallcaps)m 240 fnt1 5873 10970(\),)m 6055(so)s
-6317(it)s 6504(is)s 6710(not)s 7072(necessary)s 8051(to)s
-8285(mention)s 0 10682(this)m 396(attrib)s 4(ute)k 1243(when)s
-1819(gi)s 6(ving)k 2478(an)s 2761(initial)s 3372(font.)s
-480 10308(There)m 1080(are)s 1413(tw)s 2(o)k 1810(prede\207ned)s
-2864(symbols,)s 220 fnt2 3756 10305(@CurrF)m 11(amily)k 240 fnt1
-5083 10308(and)m 220 fnt2 5474 10305(@CurrF)m 11(ace)k 240 fnt1
-6592 10308(,)m 6685(which)s 7314(respecti)s 6(v)k 3(ely)k
-8499(return)s 0 10020(the)m 337(f)s 2(amily)k 1000(and)s
-1392(f)s 2(ace)k 1831(names)s 2482(of)s 2741(the)s
-3077(current)s 3801(font.)s 4339(F)s 3(or)k 4716(e)s 3(xample,)k
-5618(right)s 6117(no)s 6(w)k 220 fnt2 6567 10017(@CurrF)m 11(amily)k
-240 fnt1 7896 10020(is)m 8094(T)s 8(imes)k 8722(and)s
-220 fnt2 0 9729(@CurrF)m 11(ace)k 240 fnt1 1178 9732(is)m
-1388(Base.)s 480 9358(T)m 19(o)k 799(inform)s 1529(Lout)s
+480 13203(Sizes)m 1035(of)s 1307(the)s 1656(form)s 2180(+)s
+240 fnt6 2308 13205(length)m 240 fnt1 2962 13203(and)m 3367(\211)s
+240 fnt6 3487 13205(length)m 240 fnt1 4140 13203(may)m 4607(also)s
+5046(be)s 5328(used,)s 5875(meaning)s 6753(that)s 7171(the)s
+7520(font)s 7966(size)s 8393(is)s 8604(to)s 8844(be)s
+240 fnt6 0 12917(length)m 240 fnt1 649 12915(lar)m 4(ger)k
+1257(or)s 1512(smaller)s 2269(than)s 2734(the)s 3078(inherited)s
+3981(v)s 6(alue.)k 4652(F)s 3(or)k 5037(e)s 3(xample,)k
+5947(\211)s 220 fnt2 6067 12912(2p)m 240 fnt1 6359 12915(is)m
+6564(often)s 7108(used)s 7601(for)s 7934(superscripts)s 0 12627(and)m
+407(subscripts.)s 1530(These)s 2161(forms)s 2772(are)s 3123(highly)s
+3792(recommended,)s 5257(since)s 5808(the)s 3(y)k 6274(don')s 4(t)k
+6839(need)s 7352(to)s 7594(be)s 7880(changed)s 8739(if)s
+8960(a)s 0 12339(decision)m 854(is)s 1064(made)s 1638(to)s
+1877(alter)s 2360(the)s 2708(font)s 3153(size)s 3580(of)s
+3851(the)s 4199(document)s 5203(as)s 5453(a)s 5619(whole.)s
+480 11965(The)m 220 fnt2 908 11962(@F)m 6(ont)k 240 fnt1
+1620 11965(symbol)m 2380(also)s 2818(switches)s 3692(to)s 3931(and)s
+4335(from)s 4859(small)s 5431(capitals:)s
+[ /Dest /LOUT15_4082_pre_font_7 /DEST pdfmark
+220 fnt2 480 11464(smallcaps @F)m 6(ont ...)k
+480 11176(nosmallcaps @F)m 6(ont ...)k 240 fnt1 0 10680(These)m 639(may)s
+1118(be)s 1412(nested,)s 2143(and)s 2559(the)s 3(y)k
+3035(cooperate)s 4033(with)s 4527(other)s 5091(font)s 5548(changes.)s
+6496(The)s 6936(precise)s 7681(ef)s 6(fect)k 8290(depends)s
+0 10392(on)m 293(the)s 637(font)s 1078(\(see)s 1514(belo)s 6(w\).)k
+2331(There)s 2940(is)s 3146(a)s 3308(def)s 2(ault)k
+4024(v)s 6(alue)k 4588(\()s 220 fnt2 4661 10389(nosmallcaps)m
+240 fnt1 5873 10392(\),)m 6055(so)s 6317(it)s 6504(is)s
+6710(not)s 7072(necessary)s 8051(to)s 8285(mention)s 0 10104(this)m
+396(attrib)s 4(ute)k 1243(when)s 1819(gi)s 6(ving)k
+2478(an)s 2761(initial)s 3372(font.)s 480 9730(There)m 1080(are)s
+1413(tw)s 2(o)k 1810(prede\207ned)s 2864(symbols,)s 220 fnt2
+3756 9727(@CurrF)m 11(amily)k 240 fnt1 5083 9730(and)m 220 fnt2
+5474 9727(@CurrF)m 11(ace)k 240 fnt1 6592 9730(,)m 6685(which)s
+7314(respecti)s 6(v)k 3(ely)k 8499(return)s 0 9442(the)m
+337(f)s 2(amily)k 1000(and)s 1392(f)s 2(ace)k
+1831(names)s 2482(of)s 2741(the)s 3077(current)s 3801(font.)s
+4339(F)s 3(or)k 4716(e)s 3(xample,)k 5618(right)s
+6117(no)s 6(w)k 220 fnt2 6567 9439(@CurrF)m 11(amily)k
+240 fnt1 7896 9442(is)m 8094(T)s 8(imes)k 8722(and)s
+220 fnt2 0 9151(@CurrF)m 11(ace)k 240 fnt1 1178 9154(is)m
+1388(Base.)s 480 8780(T)m 19(o)k 799(inform)s 1529(Lout)s
2061(that)s 2499(certain)s 3225(fonts)s 3773(e)s 3(xist,)k
4348(it)s 4560(is)s 4790(necessary)s 5793(to)s 6051(create)s
-6696(a)s 6882(database)s 7781(of)s 220 fnt2 8072 9355(@F)m 6(ontDef)k
-240 fnt1 0 9070(symbols.)m 962(A)s 1192(typical)s 1897(entry)s
+6696(a)s 6882(database)s 7781(of)s 220 fnt2 8072 8777(@F)m 6(ontDef)k
+240 fnt1 0 8492(symbols.)m 962(A)s 1192(typical)s 1897(entry)s
2442(in)s 2685(such)s 3181(a)s 3347(database)s 4226(looks)s
-4796(lik)s 2(e)k 5208(this:)s 220 fnt2 480 8569({ @F)m 6(ontDef)k
-480 8281( @T)m 26(ag { )k 11(Times-Base })k 480 7993( @F)m 11(amily { )k 11(Times })k
-480 7705( @F)m 11(ace { Base })k 480 7417( @Name { )m 11(Times-Roman })k 480 7129( @Metr)m -3(ics { )k 11(Ti-Rm })k
-480 6841( @Mapping { LtLatin1.LCM })m 480 6553(})m 240 fnt1 0 6059(This)m 483(entry)s
+4796(lik)s 2(e)k 5208(this:)s 220 fnt2 480 7991({ @F)m 6(ontDef)k
+480 7703( @T)m 26(ag { )k 11(Times-Base })k 480 7415( @F)m 11(amily { )k 11(Times })k
+480 7127( @F)m 11(ace { Base })k 480 6839( @Name { )m 11(Times-Roman })k 480 6551( @Metr)m -3(ics { )k 11(Ti-Rm })k
+480 6263( @Mapping { LtLatin1.LCM })m 480 5975(})m 240 fnt1 0 5481(This)m 483(entry)s
1035(informs)s 1837(Lout)s 2356(of)s 2635(the)s 2990(e)s 3(xistence)k
3940(of)s 4218(a)s 4392(font)s 4844(whose)s 5520(f)s 2(amily)k
6202(name)s 6784(is)s 7001(the)s 7357(v)s 6(alue)k
-7932(of)s 220 fnt2 8211 6056(@F)m 11(amily)k 240 fnt1
-0 5771(and)m 398(whose)s 1059(f)s 2(ace)k 1503(name)s
+7932(of)s 220 fnt2 8211 5478(@F)m 11(amily)k 240 fnt1
+0 5193(and)m 398(whose)s 1059(f)s 2(ace)k 1503(name)s
2070(is)s 2273(the)s 2614(v)s 6(alue)k 3175(of)s
-220 fnt2 3439 5768(@F)m 11(ace)k 240 fnt1 4131 5771(.)m
-4288(The)s 220 fnt2 4709 5768(@T)m 26(ag)k 240 fnt1
-5325 5771(v)m 6(alue)k 5886(must)s 6404(be)s 6679(e)s 3(xactly)k
-7413(equal)s 7979(to)s 220 fnt2 8211 5768(@F)m 11(amily)k
-240 fnt1 0 5483(follo)m 6(wed)k 895(by)s 1182(a)s
+220 fnt2 3439 5190(@F)m 11(ace)k 240 fnt1 4131 5193(.)m
+4288(The)s 220 fnt2 4709 5190(@T)m 26(ag)k 240 fnt1
+5325 5193(v)m 6(alue)k 5886(must)s 6404(be)s 6679(e)s 3(xactly)k
+7413(equal)s 7979(to)s 220 fnt2 8211 5190(@F)m 11(amily)k
+240 fnt1 0 4905(follo)m 6(wed)k 895(by)s 1182(a)s
1340(h)s 1(yphen)k 2095(follo)s 6(wed)k 2989(by)s
-220 fnt2 3276 5480(@F)m 11(ace)k 240 fnt1 3968 5483(.)m
+220 fnt2 3276 4902(@F)m 11(ace)k 240 fnt1 3968 4905(.)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 0 5195(their)m 488(f)s 2(amilies;)k
+7936(members)s 8855(of)s 0 4617(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 4904(Base)m 240 fnt1
-492 4907(,)m 599(by)s 893(their)s 220 fnt2 1390 4904(@F)m 6(ontDef)k
-240 fnt1 2384 4907(.)m 480 4533(The)m 950(other)s 1543(\207elds)s
+7778(one,)s 8221(probably)s 220 fnt2 0 4326(Base)m 240 fnt1
+492 4329(,)m 599(by)s 893(their)s 220 fnt2 1390 4326(@F)m 6(ontDef)k
+240 fnt1 2384 4329(.)m 480 3955(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 4242(@Name)m
-240 fnt1 800 4245(,)m 908(a)s 1076(PostScript)s 2120(font)s
-2567(name;)s 220 fnt2 3198 4242(@Metr)m -3(ics)k 240 fnt1
-4124 4245(,)m 4293(an)s 4578(Adobe)s 5275(font)s 5721(metrics)s
-6476(\(formerly)s 7446(AFM\))s 8095(\207le)s 8458(whose)s 0 3957(F)m 3(ontName)k
+8273(the)s 3(y)k 8779(are)s 220 fnt2 0 3664(@Name)m
+240 fnt1 800 3667(,)m 908(a)s 1076(PostScript)s 2120(font)s
+2567(name;)s 220 fnt2 3198 3664(@Metr)m -3(ics)k 240 fnt1
+4124 3667(,)m 4293(an)s
+[ /Dest /LOUT15_4082_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 3379(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 3954(@Mapping)m 240 fnt1 8664 3957(,)m
-8778(the)s 0 3669(name)m 589(of)s 876(a)s 1057(Lout)s
+7201(and)s 220 fnt2 7612 3376(@Mapping)m 240 fnt1 8664 3379(,)m
+8778(the)s 0 3091(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 3381(Consult)m 812(the)s 1168(PostScript)s
-2218(Reference)s 3249(Manual)s 4043([1)s 4217(])s 4343(for)s
-4688(general)s 5454(information)s 6647(about)s 7246(fonts)s 7783(and)s
-8195(encoding)s 0 3093(v)m 3(ectors;)k 795(brie\210y)s 15(,)k
-1506(an)s 1785(8-bit)s 2291(character)s 3221(code)s 240 fnt6
-3724 3095(c)m 240 fnt1 3882 3093(in)m 4120(Lout')s 13(s)k
+7541(standard)s 8425(places.)s 0 2803(Consult)m 813(the)s 1169(PostScript)s
+2220(Reference)s 3252(Manual)s 4046([)s
+[ /Rect [4117 2803 4212 2965] /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 2515(v)m 3(ectors;)k 795(brie\210y)s 15(,)k
+1506(an)s 1785(8-bit)s
+[ /Dest /LOUT15_4082_pre_font_9 /DEST pdfmark
+2291(character)s 3221(code)s 240 fnt6
+3724 2517(c)m 240 fnt1 3882 2515(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 2805(font)m
+6920(character)s 7850(in)s 8088(the)s 8431(Adobe)s 0 2227(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 2807(c)m 240 fnt1 5663 2805(in)m 5910(the)s 6262(LCM)s
+5497 2229(c)m 240 fnt1 5663 2227(in)m 5910(the)s 6262(LCM)s
6840(\207le.)s 7313(The)s 7745(LCM)s 8322(\207le)s 8688(also)s
-0 2517(de\207nes)m 756(v)s 6(arious)k 1532(character)s 4(-to-character)k
+0 1939(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 2229(used)m 497(for)s 835(such)s 1331(purposes)s
+8779(are)s 0 1651(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 1855(The)m 933(options)s 1714(sho)s 6(wn)k
+4768(capitals.)s 480 1277(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 1567(optional.)m 942(The)s 220 fnt2
-1364 1564(@Recode)m 240 fnt1 2388 1567(option,)m 3101(if)s 3312(gi)s 6(v)k 3(en,)k
+8111(which)s 8779(are)s 0 989(optional.)m 942(The)s 220 fnt2
+1364 986(@Recode)m 240 fnt1 2388 989(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 1564(Y)m 30(es)k 240 fnt1 5905 1567(\(the)m
+220 fnt2 5510 986(Y)m 30(es)k 240 fnt1 5905 989(\(the)m
6325(def)s 2(ault,)k 7087(so)s 7347(rarely)s 7950(seen\))s
-8497(or)s 220 fnt2 8749 1564(No)m 240 fnt1 9022 1567(.)m
-0 1279(If)m 220 fnt2 239 1276(@Recode { No })m 240 fnt1 1887 1279(is)m
+8497(or)s 220 fnt2 8749 986(No)m 240 fnt1 9022 989(.)m
+0 701(If)m 220 fnt2 239 698(@Recode { No })m 240 fnt1 1887 701(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 991(with)m 482(this)s 878(font)s 1323(in)s
+8086(associated)s 0 413(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 617(The)m 928(other)s 1500(optional)s 2359(option,)s 220 fnt2
-3099 614(@Extr)m 2(aMetr)k -3(ics)k 240 fnt1 4535 617(,)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
+
grestore
gsave
1417 -15423 translate
@@ -10279,110 +10979,144 @@ gsave
gsave
0 LoutMargSet
grestore
-0 13205(metrics)m 765(\207le)s
+480 13205(The)m 928(other)s
+1500(optional)s 2359(option,)s 220 fnt2 3099 13202(@Extr)m 2(aMetr)k -3(ics)k
+240 fnt1 4535 13205(,)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 12917(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 13202(@Metr)m -3(ics)k
-240 fnt1 7161 13205(.)m 7338(This)s 7826(e)s 3(xtra)k
-8373(metrics)s 0 12917(\207le)m 357(contains)s 220 fnt2 1200 12914(C)m
-240 fnt1 1404 12917(\(de\207ne)m 2119(character\))s 3117(and)s 220 fnt2
-3516 12914(CC)m 240 fnt1 3878 12917(\(de\207ne)m 4593(composite)s 5627(character\))s
+4739(one)s 5153(de\207ned)s 5929(by)s 220 fnt2 6235 12914(@Metr)m -3(ics)k
+240 fnt1 7161 12917(.)m 7338(This)s 7826(e)s 3(xtra)k
+8373(metrics)s 0 12629(\207le)m 357(contains)s 220 fnt2 1200 12626(C)m
+240 fnt1 1404 12629(\(de\207ne)m 2119(character\))s 3117(and)s 220 fnt2
+3516 12626(CC)m 240 fnt1 3878 12629(\(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 12629(as)m 259(in)s 512(AFM)s 1095(\207les;)s 1615(Lout)s
+0 12341(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 12341(pieces,)m 707(which)s 1352(it)s 1547(does)s 2041(not)s
+0 12053(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 12053(e)m 3(xtra)k
+7912(are)s 8263(e)s 3(xample)k 0 11765(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 11679(It)m 708(is)s 941(not)s 1330(possible)s
+8520(\207les.)s 480 11391(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 11676(@F)m 6(ontDef)k 240 fnt1 4490 11679(database)m
+220 fnt2 3413 11388(@F)m 6(ontDef)k 240 fnt1 4490 11391(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 11391(names,)m 703(because)s
+8247(and)s 8675(f)s 2(ace)k 0 11103(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 11388(@T)m 26(ag)k
-240 fnt1 4825 11391(,)m 4917(which)s 5544(is)s 5739(not)s
+3398(the)s 3731(same)s 220 fnt2 4262 11100(@T)m 26(ag)k
+240 fnt1 4825 11103(,)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 11103(font)m 470(name)s 1070(and)s
+7934(a)s 8084(PostScript)s 0 10815(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 10815(to)m 264(ha)s 4(v)k 3(e)k
+7185(one)s 7613(PostScript)s 8681(font)s 0 10527(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 10527(desired.)m
-480 10153(The)m 220 fnt2 917 10150(@Char)m 240 fnt1 1685 10153(symbol)m
+7690(or)s 7975(dif)s 6(ferent)k 8876(as)s 0 10239(desired.)m
+480 9865(The)m 220 fnt2 917 9862(@Char)m 240 fnt1 1685 9865(symbol)m
+
+[ /Dest /LOUT15_4082_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 9865(Basser)m
+6883(\(its)s 7247(PostScript)s 8299(name)s 8883(in)s 0 9577(Basser)m
697(Lout\))s 1277(rather)s 1893(than)s 2362(by)s 2656(its)s
-2932(code:)s 220 fnt2 480 9364(@Char nine)m 240 fnt1 0 8909(is)m
+2932(code:)s 220 fnt2 480 9076(@Char nine)m 240 fnt1 0 8621(is)m
215(equi)s 6(v)k 6(alent)k 1265(to)s 220 fnt2
-1510 8906(9)m 240 fnt1 1689 8909(in)m 1938(most)s 2469(fonts.)s
+1510 8618(9)m 240 fnt1 1689 8621(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 8621(the)m 347(right)s
+7672(sure)s 8132(of)s 8409(getting)s 0 8333(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 8618(@Char)m 240 fnt1 8332 8621(will)m 8756(f)s 2(ail)k
-0 8333(if)m 217(the)s 565(character)s 1499(named)s 2195(is)s
+220 fnt2 7576 8330(@Char)m 240 fnt1 8332 8333(will)m 8756(f)s 2(ail)k
+0 8045(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 7540(3.4.)m 471(@Br)s 4(eak)k 240 fnt1 480 7108(The)m
-220 fnt2 898 7105(@Break)m 240 fnt1 1744 7108(symbol)m 2493(in\210uences)s
+0 7252(3.4.)m 471(@Br)s 4(eak)k
+[ /Dest /LOUTbreak /DEST pdfmark
+240 fnt1 480 6820(The)m
+220 fnt2 898 6817(@Break)m 240 fnt1 1744 6820(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 6820(set)m 325(of)s 596(nine)s 1064(styles:)s 220 fnt2
-1275 6312(adjust)m 1916(@Break)s 240 fnt6 2772 6317(object)m 240 fnt1
-3600 6315(Break)m 4301(the)s 4718(paragraphs)s 5887(of)s 240 fnt6
-6228 6317(object)m 240 fnt1 6945 6315(into)m 7439(lines,)s 8066(and)s
-8540(apply)s 220 fnt2 3600 6024(@P)m 26(Adjust)k 240 fnt1
-4633 6027(\(Section)m 5511(3.16\))s 6084(to)s 6348(e)s 6(v)k 3(ery)k
+0 6532(set)m 325(of)s 596(nine)s 1064(styles:)s 220 fnt2
+1275 6024(adjust)m 1916(@Break)s 240 fnt6 2772 6029(object)m
+[ /Dest /LOUT15_4082_pre_brea_1 /DEST pdfmark
+240 fnt1
+3600 6027(Break)m 4301(the)s 4718(paragraphs)s 5887(of)s 240 fnt6
+6228 6029(object)m 240 fnt1 6945 6027(into)m 7439(lines,)s 8066(and)s
+8540(apply)s 220 fnt2 3600 5736(@P)m 26(Adjust)k 240 fnt1
+4633 5739(\(Section)m 5511(3.16\))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 5739(each)m 4095(paragraph;)s 220 fnt2 1128 5231(outdent)m
-1916(@Break)s 240 fnt6 2772 5236(object)m 240 fnt1 3600 5234(Lik)m 2(e)k
-220 fnt2 4122 5231(adjust)m 240 fnt1 4703 5234(,)m 4840(e)s 3(xcept)k
-5551(that)s 220 fnt2 6000 5231(2.0f @Wide {} &0i)m 240 fnt1 7809 5234(is)m
-8049(inserted)s 8894(at)s 3600 4946(the)m 3981(be)s 3(ginning)k
+8883(in)s 3600 5451(each)m 4095(paragraph;)s
+[ /Dest /LOUT12_1492_pre_brea_1 /DEST pdfmark
+220 fnt2 1128 4943(outdent)m
+1916(@Break)s 240 fnt6 2772 4948(object)m
+[ /Dest /LOUT15_4082_pre_brea_2 /DEST pdfmark
+240 fnt1 3600 4946(Lik)m 2(e)k
+220 fnt2 4122 4943(adjust)m 240 fnt1 4703 4946(,)m 4840(e)s 3(xcept)k
+5551(that)s 220 fnt2 6000 4943(2.0f @Wide {} &0i)m 240 fnt1 7809 4946(is)m
+8049(inserted)s 8894(at)s 3600 4658(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 4658(outdented)m 4602(paragraph;)s 220 fnt2 1187 4150(r)m 2(agged)k
-1916(@Break)s 240 fnt6 2772 4155(object)m 240 fnt1 3600 4153(Break)m
-4222(the)s 4559(paragraphs)s 5648(of)s 240 fnt6 5908 4155(object)m
-240 fnt1 6545 4153(into)m 6960(lines,)s 7507(b)s 4(ut)k
-7858(do)s 8140(not)s 8495(adjust)s 3600 3865(the)m 3948(lines)s
-4450(\(`ragged)s 5317(right'\);)s 220 fnt2 1077 3357(cr)m 2(agged)k
-1916(@Break)s 240 fnt6 2772 3362(object)m 240 fnt1 3600 3360(Lik)m 2(e)k
-220 fnt2 4125 3357(r)m 2(agged)k 240 fnt1 4794 3360(,)m
+8843(an)s 3600 4370(outdented)m 4602(paragraph;)s
+[ /Dest /LOUT12_1492_pre_brea_2 /DEST pdfmark
+220 fnt2 1187 3862(r)m 2(agged)k
+1916(@Break)s 240 fnt6 2772 3867(object)m
+[ /Dest /LOUT15_4082_pre_brea_3 /DEST pdfmark
+240 fnt1 3600 3865(Break)m
+4222(the)s 4559(paragraphs)s 5648(of)s 240 fnt6 5908 3867(object)m
+240 fnt1 6545 3865(into)m 6960(lines,)s 7507(b)s 4(ut)k
+7858(do)s 8140(not)s 8495(adjust)s 3600 3577(the)m 3948(lines)s
+4450(\(`ragged)s 5317(right'\);)s
+[ /Dest /LOUT12_1492_pre_brea_3 /DEST pdfmark
+220 fnt2 1077 3069(cr)m 2(agged)k
+1916(@Break)s 240 fnt6 2772 3074(object)m
+[ /Dest /LOUT15_4082_pre_brea_4 /DEST pdfmark
+240 fnt1 3600 3072(Lik)m 2(e)k
+220 fnt2 4125 3069(r)m 2(agged)k 240 fnt1 4794 3072(,)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 3072(respect)m
-4336(to)s 4575(the)s 4923(others;)s 220 fnt2 1114 2564(rr)m 2(agged)k
-1916(@Break)s 240 fnt6 2772 2569(object)m 240 fnt1 3600 2567(Lik)m 2(e)k
-220 fnt2 4115 2564(r)m 2(agged)k 240 fnt1 4784 2567(,)m
+7075(will)s 7534(be)s 7849(centred)s 8644(with)s 3600 2784(respect)m
+4336(to)s 4575(the)s 4923(others;)s
+[ /Dest /LOUT12_1492_pre_brea_4 /DEST pdfmark
+220 fnt2 1114 2276(rr)m 2(agged)k
+1916(@Break)s 240 fnt6 2772 2281(object)m
+[ /Dest /LOUT15_4082_pre_brea_5 /DEST pdfmark
+240 fnt1 3600 2279(Lik)m 2(e)k
+220 fnt2 4115 2276(r)m 2(agged)k 240 fnt1 4784 2279(,)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 2279(with)m 4082(respect)s
+7014(will)s 7463(be)s 7768(right-justi\207ed)s 3600 1991(with)m 4082(respect)s
4818(to)s 5057(the)s 5405(others)s 6040(\(`ragged)s 6907(left'\);)s
-220 fnt2 1065 1771(or)m 2(agged)k 1916(@Break)s 240 fnt6
-2772 1776(object)m 240 fnt1 3600 1774(The)m 4028(ob)s 3(vious)k
-4835(combination)s 6088(of)s 220 fnt2 6359 1771(r)m 2(agged)k
-240 fnt1 7088 1774(and)m 220 fnt2 7492 1771(outdent)m 240 fnt1
-8220 1774(;)m 220 fnt2 1413 1267(lines)m 1916(@Break)s 240 fnt6
-2772 1272(object)m 240 fnt1 3600 1270(Break)m 4284(the)s 4685(paragraphs)s
-5837(of)s 240 fnt6 6161 1272(object)m 240 fnt1 6861 1270(into)m
-7339(lines)s 7893(at)s 8178(the)s 8579(same)s 3600 982(points)m
+
+[ /Dest /LOUT12_1492_pre_brea_5 /DEST pdfmark
+220 fnt2 1065 1483(or)m 2(agged)k 1916(@Break)s 240 fnt6
+2772 1488(object)m
+[ /Dest /LOUT15_4082_pre_brea_6 /DEST pdfmark
+240 fnt1 3600 1486(The)m 4028(ob)s 3(vious)k
+4835(combination)s 6088(of)s 220 fnt2 6359 1483(r)m 2(agged)k
+240 fnt1 7088 1486(and)m 220 fnt2 7492 1483(outdent)m 240 fnt1
+8220 1486(;)m
+[ /Dest /LOUT12_1492_pre_brea_6 /DEST pdfmark
+220 fnt2 1413 979(lines)m 1916(@Break)s 240 fnt6
+2772 984(object)m
+[ /Dest /LOUT15_4082_pre_brea_7 /DEST pdfmark
+240 fnt1 3600 982(Break)m 4284(the)s 4685(paragraphs)s
+5837(of)s 240 fnt6 6161 984(object)m 240 fnt1 6861 982(into)m
+7339(lines)s 7893(at)s 8178(the)s 8579(same)s 3600 694(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 694(at)m 3819(concatenation)s 5190(symbols)s
-6026(of)s 6283(the)s 6617(form)s 220 fnt2 7128 691(&)m
-240 fnt6 7270 696(k)m 220 fnt2 7380 691(b)m 240 fnt1
-7540 694(for)m 7865(an)s 3(y)k 240 fnt6 8248 696(k)m
-240 fnt1 8404 694(greater)m 3600 406(than)m 4069(1.)s 4354(Do)s
+8286(and)s 8688(also)s 3600 406(at)m 3819(concatenation)s 5190(symbols)s
+6026(of)s 6283(the)s 6617(form)s 220 fnt2 7128 403(&)m
+240 fnt6 7270 408(k)m 220 fnt2 7380 403(b)m 240 fnt1
+7540 406(for)m 7865(an)s 3(y)k 240 fnt6 8248 408(k)m
+240 fnt1 8404 406(greater)m 3600 118(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
@@ -10442,20 +11176,30 @@ gsave
grestore
3600 13249(a)m 3766(line)s 4180(other)s 4731(than)s
5200(the)s 5548(\207rst)s 5979(line)s 6393(will)s 6819(appear)s
-7516(in)s 7759(the)s 8107(output;)s 220 fnt2 1303 12741(clines)m
-1916(@Break)s 240 fnt6 2772 12746(object)m 240 fnt1 3600 12744(Break)m
+7516(in)s 7759(the)s 8107(output;)s
+[ /Dest /LOUT12_1492_pre_brea_7 /DEST pdfmark
+220 fnt2 1303 12741(clines)m
+1916(@Break)s 240 fnt6 2772 12746(object)m
+[ /Dest /LOUT15_4082_pre_brea_8 /DEST pdfmark
+240 fnt1 3600 12744(Break)m
4288(the)s 4693(paragraphs)s 5849(of)s 240 fnt6 6177 12746(object)m
240 fnt1 6881 12744(into)m 7363(lines)s 7921(as)s 8228(for)s
220 fnt2 8623 12741(lines)m 3600 12453(@Break)m 240 fnt1 4396 12456(,)m
4503(then)s 4972(centre)s 5611(each)s 6106(line)s 6520(with)s
-7002(respect)s 7738(to)s 7977(the)s 8325(others;)s 220 fnt2
+7002(respect)s 7738(to)s 7977(the)s 8325(others;)s
+[ /Dest /LOUT12_1492_pre_brea_8 /DEST pdfmark
+220 fnt2
1337 11948(r)m -3(lines)k 1916(@Break)s 240 fnt6 2772 11953(object)m
+
+[ /Dest /LOUT15_4082_pre_brea_9 /DEST pdfmark
240 fnt1 3600 11951(Break)m 4288(the)s 4693(paragraphs)s 5849(of)s
240 fnt6 6177 11953(object)m 240 fnt1 6881 11951(into)m 7363(lines)s
7921(as)s 8228(for)s 220 fnt2 8623 11948(lines)m 3600 11660(@Break)m
240 fnt1 4396 11663(,)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 11375(others.)m 0 10922(If)m 235(the)s 588(paragraph)s
+8778(the)s 3600 11375(others.)m
+[ /Dest /LOUT12_1492_pre_brea_9 /DEST pdfmark
+0 10922(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
@@ -10468,7 +11212,9 @@ grestore
7307(breaking)s 8201(is)s 8415(al)s 2(w)k 2(ays)k
220 fnt2 0 9969(1v)m 240 fnt1 231 9972(.)m 395(Ho)s 6(we)k 6(v)k 3(er)k 9(,)k
1355(the)s 220 fnt2 1703 9969(v)m 240 fnt1 1872 9972(unit)m
-2304(itself)s 2852(and)s 3256(the)s 3604(g)s 1(ap)k
+2304(itself)s 2852(and)s 3256(the)s
+[ /Dest /LOUT15_4082_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 9469(gap)m 220 fnt2 1916 9464(@Break)m 240 fnt6 2772 9469(object)m
240 fnt1 3600 9467(W)m 9(ithin)k 240 fnt6 4312 9469(object)m
@@ -10476,7 +11222,9 @@ grestore
5809(v)s 6(alue)k 6377(of)s 6649(the)s 220 fnt2
6998 9464(v)m 240 fnt1 7167 9467(unit)m 7600(to)s 7839(be)s
8122(the)s 8471(length)s 3600 9179(of)m 240 fnt6 3871 9181(gap)m
-240 fnt1 4224 9179(;)m 1375 8678(+)m 240 fnt6 1503 8680(gap)m
+240 fnt1 4224 9179(;)m
+[ /Dest /LOUT12_1492_pre_brea_10 /DEST pdfmark
+1375 8678(+)m 240 fnt6 1503 8680(gap)m
220 fnt2 1916 8675(@Break)m 240 fnt6 2772 8680(object)m 240 fnt1
3600 8678(W)m 9(ithin)k 240 fnt6 4320 8680(object)m 240 fnt1
4908 8678(,)m 5024(tak)s 2(e)k 5485(the)s 5841(v)s 6(alue)k
@@ -10485,6 +11233,8 @@ grestore
8832(by)s 3600 8390(the)m 3948(length)s 4603(of)s 240 fnt6
4874 8392(gap)m 240 fnt1 5287 8390(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_1492_pre_brea_11 /DEST pdfmark
1383 7885(\211)m 240 fnt6 1503 7887(gap)m 220 fnt2 1916 7882(@Break)m
240 fnt6 2772 7887(object)m 240 fnt1 3600 7885(W)m 9(ithin)k
240 fnt6 4309 7887(object)m 240 fnt1 4897 7885(,)m 5000(tak)s 2(e)k
@@ -10493,38 +11243,56 @@ grestore
7796(be)s 8074(smaller)s 8832(by)s 3600 7597(the)m 3948(length)s
4603(of)s 240 fnt6 4874 7599(gap)m 240 fnt1 5287 7597(than)m
5756(it)s 5948(w)s 2(ould)k 6603(otherwise)s 7588(ha)s 4(v)k 3(e)k
-8089(been.)s 0 7092(In)m 256(each)s 751(case,)s 1269(the)s
+8089(been.)s
+[ /Dest /LOUT12_1492_pre_brea_12 /DEST pdfmark
+0 7092(In)m 256(each)s 751(case,)s 1269(the)s
1617(mode)s 2205(of)s 240 fnt6 2476 7094(gap)m 240 fnt1
2889 7092(is)m 3099(adopted)s 3915(within)s 240 fnt6 4583 7094(object)m
240 fnt1 5171 7092(.)m 480 6718(The)m 220 fnt2 908 6715(@Break)m
240 fnt1 1764 6718(symbol)m 2524(also)s 2962(controls)s 3783(h)s 1(yphenation:)k
220 fnt2 1141 6210(h)m 6(yphen @Break)k 240 fnt6 2772 6215(object)m
+
+[ /Dest /LOUT15_4082_pre_brea_11 /DEST pdfmark
240 fnt1 3600 6213(Permit)m 4296(h)s 1(yphenation)k 5536(within)s
6204(the)s 6552(paragraphs)s 7652(of)s 240 fnt6 7923 6215(object)m
-240 fnt1 8511 6213(;)m 220 fnt2 897 5705(noh)m 6(yphen @Break)k
-240 fnt6 2772 5710(object)m 240 fnt1 3600 5708(Prohibit)m 4440(h)s 1(yphenation)k
+240 fnt1 8511 6213(;)m
+[ /Dest /LOUT12_1492_pre_brea_13 /DEST pdfmark
+220 fnt2 897 5705(noh)m 6(yphen @Break)k
+240 fnt6 2772 5710(object)m
+[ /Dest /LOUT15_4082_pre_brea_12 /DEST pdfmark
+240 fnt1 3600 5708(Prohibit)m 4440(h)s 1(yphenation)k
5691(within)s 6370(the)s 6729(paragraphs)s 7840(of)s 240 fnt6
8122 5710(object)m 240 fnt1 8710 5708(;)m 8833(all)s 3600 5420(h)m 1(yphenation)k
4897(g)s 1(aps)k 5443(without)s 6291(e)s 3(xception)k
7332(re)s 6(v)k 3(ert)k 7996(to)s 8292(edge-)s
-8812(to-)s 3600 5132(edge)m 4108(mode.)s 0 4629(The)m 220 fnt2
+8812(to-)s 3600 5132(edge)m 4108(mode.)s
+[ /Dest /LOUT12_1492_pre_brea_14 /DEST pdfmark
+0 4629(The)m 220 fnt2
428 4626(@Break)m 240 fnt1 1284 4629(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 4121(unbreakab)m 4(le\207rst @Break)k
240 fnt6 3058 4126(ob)m 240 fnt1 3292 4124(-)m 240 fnt6
-480 3838(ject)m 240 fnt1 3600 4124(Pre)m 6(v)k 3(ent)k
+480 3838(ject)m
+[ /Dest /LOUT15_4082_pre_brea_13 /DEST pdfmark
+240 fnt1 3600 4124(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 3836(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 3548(paragraphs)m 4700(of)s 240 fnt6 4971 3550(object)m 240 fnt1
-5559 3548(;)m 220 fnt2 480 3040(unbreakab)m 4(lelast @Break)k 240 fnt6
+5559 3548(;)m
+[ /Dest /LOUT12_1492_pre_brea_15 /DEST pdfmark
+220 fnt2 480 3040(unbreakab)m 4(lelast @Break)k 240 fnt6
3058 3045(ob)m 240 fnt1 3292 3043(-)m 240 fnt6 480 2757(ject)m
+
+[ /Dest /LOUT15_4082_pre_brea_14 /DEST pdfmark
240 fnt1 3600 3043(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 2755(second)m 4323(last)s 4714(lines)s
5216(of)s 5487(the)s 5835(paragraphs)s 6935(of)s 240 fnt6
-7206 2757(object)m 240 fnt1 7794 2755(.)m 0 2252(These)m 688(options)s
+7206 2757(object)m 240 fnt1 7794 2755(.)m
+[ /Dest /LOUT12_1492_pre_brea_16 /DEST pdfmark
+0 2252(These)m 688(options)s
1506(w)s 2(ork)k 2119(by)s 2475(adding)s 3241(the)s
220 fnt2 3651 2249(u)m 240 fnt1 3881 2252(\(unbreakable\))m 5319(suf\207x)s
5980(to)s 6281(the)s 6691(appropriate)s 7897(g)s 1(aps)k
@@ -10599,11 +11367,17 @@ grestore
220 fnt2 5505 13202(@Null)m 240 fnt1 6149 13205(objects)m 6877(in)s
7119(the)s 7466(left)s 7842(parameter)s 8855(of)s 220 fnt2
0 12914(@Break)m 240 fnt1 796 12917(;)m 908(these)s 1455(are)s
-1802(ignored.)s 240 fnt5 0 12124(3.5.)m 471(@Space)s 240 fnt1
+1802(ignored.)s 240 fnt5 0 12124(3.5.)m 471(@Space)s
+[ /Dest /LOUTspace /DEST pdfmark
+240 fnt1
480 11647(The)m 220 fnt2 911 11644(@Space)m 240 fnt1 1812 11647(symbol)m
+
+[ /Dest /LOUT15_4082_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 11644(s)m 240 fnt1 5120 11647(unit)m
-5556(of)s 5831(measurement)s 7169(\(Section)s 8026(3.2\))s 8458(within)s
+5556(of)s 5831(measurement)s 7169(\(Section)s
+[ /Dest /LOUT15_4082_pre_spac_2 /DEST pdfmark
+8026(3.2\))s 8458(within)s
0 11359(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
@@ -10699,8 +11473,14 @@ grestore
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 2488(is)m 210(de\207ned.)s
240 fnt5 0 1745(3.6.)m 471(@YUnit,)s 1432(@ZUnit,)s 2380(@CurrYUnit,)s
-3859(and)s 4300(@CurrZUnit)s 240 fnt1 480 1274(The)m 220 fnt2
-917 1271(@YUnit)m 240 fnt1 1741 1274(symbol)m 2510(changes)s 3342(the)s
+3859(and)s 4300(@CurrZUnit)s
+[ /Dest /LOUTyunit /DEST pdfmark
+240 fnt1 480 1274(The)m 220 fnt2
+917 1271(@YUnit)m 240 fnt1 1741 1274(symbol)m
+[ /Dest /LOUT15_4082_pre_yuni_1 /DEST pdfmark
+
+[ /Dest /LOUT15_4082_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 1271(y)m 240 fnt1 5092 1274(unit)m 5534(of)s 5814(measurement)s
7158(\(Section)s 8020(3.2\))s 8458(within)s 0 986(its)m 276(right)s
@@ -10811,9 +11591,15 @@ grestore
8065(formatting)s 0 8462(package)m 840(uses)s 1303(them)s 1841(to)s
2080(\207ne-)s 2507(tune)s 2975(the)s 3323(appearance)s 4454(of)s
4725(equations.)s 240 fnt5 0 7669(3.7.)m 471(@SetColour)s 1788(and)s
-2229(@SetColor)s 240 fnt1 480 7237(The)m 220 fnt2 927 7234(@SetColour)m
+2229(@SetColor)s
+[ /Dest /LOUTcolour /DEST pdfmark
+240 fnt1 480 7237(The)m 220 fnt2 927 7234(@SetColour)m
240 fnt1 2204 7237(and)m 220 fnt2 2628 7234(@SetColor)m 240 fnt1
-3783 7237(symbols,)m 4708(which)s 5370(ha)s 4(v)k 3(e)k
+3783 7237(symbols,)m
+[ /Dest /LOUT15_4082_pre_colo_1 /DEST pdfmark
+
+[ /Dest /LOUT15_4082_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 6949(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
@@ -10870,7 +11656,11 @@ grestore
2386(no)s 2679(w)s 2(ay)k 3130(to)s 3369(mak)s 2(e)k
3941(relati)s 6(v)k 3(e)k 4703(changes)s 5525(\(`as)s
5933(before)s 6599(only)s 7079(redder)s 9(,)k 16(')k
-7836(and)s 8240(so)s 8506(on\).)s
+7836(and)s 8240(so)s 8506(on\).)s 480 298(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 295(setrgbcolor)m 240 fnt1
+8124 298(command)m
grestore
gsave
1417 -15423 translate
@@ -10925,87 +11715,99 @@ gsave
gsave
0 LoutMargSet
grestore
-480 13205(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 13202(setrgbcolor)m 240 fnt1
-8124 13205(command)m 0 12917(used)m 496(abo)s 3(v)k 3(e)k
+0 13205(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 12629(use.)m
+7584(and)s 7987(is)s 8196(simple)s 8887(to)s 0 12917(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 12341(blue)m 468(respecti)s 6(v)k 3(ely)k 15(.)k
+8722(and)s 0 12629(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 11776(1.0)m 838(0.0)s 1196(0.0)s 1554(setrgbcolor)s 240 fnt6
-2979 11781(r)m 8(ed)k 220 fnt2 480 11457(0.0)m 838(1.0)s
-1196(0.0)s 1554(setrgbcolor)s 240 fnt6 2979 11462(gr)m 8(een)k
-220 fnt2 480 11127(0.0)m 838(0.0)s 1196(1.0)s 1554(setrgbcolor)s
-240 fnt6 2979 11132(blue)m 220 fnt2 480 10797(1.0)m 838(1.0)s
-1196(1.0)s 1554(setrgbcolor)s 240 fnt6 2979 10802(white)m 220 fnt2
-480 10478(0.5)m 837(0.5)s 1194(0.5)s 1551(setrgbcolor)s 240 fnt6
-2979 10483(gr)m 8(e)k 7(y)k 220 fnt2 480 10148(0.0)m
-838(0.0)s 1196(0.0)s 1554(setrgbcolor)s 240 fnt6 2979 10153(blac)m 4(k)k
-240 fnt1 0 9592(Colouring)m 1042(an)s 1344(object)s 2007(white)s
+480 12064(1.0)m 838(0.0)s 1196(0.0)s 1554(setrgbcolor)s 240 fnt6
+2979 12069(r)m 8(ed)k 220 fnt2 480 11745(0.0)m 838(1.0)s
+1196(0.0)s 1554(setrgbcolor)s 240 fnt6 2979 11750(gr)m 8(een)k
+220 fnt2 480 11415(0.0)m 838(0.0)s 1196(1.0)s 1554(setrgbcolor)s
+240 fnt6 2979 11420(blue)m 220 fnt2 480 11085(1.0)m 838(1.0)s
+1196(1.0)s 1554(setrgbcolor)s 240 fnt6 2979 11090(white)m 220 fnt2
+480 10766(0.5)m 837(0.5)s 1194(0.5)s 1551(setrgbcolor)s 240 fnt6
+2979 10771(gr)m 8(e)k 7(y)k 220 fnt2 480 10436(0.0)m
+838(0.0)s 1196(0.0)s 1554(setrgbcolor)s 240 fnt6 2979 10441(blac)m 4(k)k
+240 fnt1 0 9880(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 9304(object.)m 240 fnt5
-0 8511(3.8.)m 471(@Outline)s 240 fnt1 480 8079(The)m 220 fnt2
-895 8076(@Outline)m 240 fnt1 1850 8079(symbol)m 2597(causes)s 3258(all)s
+7838(that)s 8275(of)s 8565(some)s 0 9592(object.)m 240 fnt5
+0 8799(3.8.)m 471(@Outline)s
+[ /Dest /LOUToutline /DEST pdfmark
+240 fnt1 480 8367(The)m 220 fnt2
+895 8364(@Outline)m 240 fnt1 1850 8367(symbol)m
+[ /Dest /LOUT15_4082_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 7791(object\))m 712(to)s 951(be)s
+7982(an)s 8251(arbitrary)s 0 8079(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 7290(@Outline @Bo)m 6(x 24p @F)k 6(ont HELP)k
-240 fnt1 0 6794(produces)m 1336 461 72 180 240 288 60 480 5993 LoutGr2
-LoutBox stroke
+6134(e)s 3(xample,)k 220 fnt2 480 7578(@Outline @Bo)m 6(x 24p @F)k 6(ont HELP)k
+240 fnt1 0 7082(produces)m 1336 461 72 180 240 288 60 480 6281 LoutGr2
+LoutBox stroke
grestore
480 fnt1 72 72(HELP)mo
grestore
-0 5542(Outlining)m
+0 5830(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 5254(forth.)m 630(Outlining)s 1602(can)s
+8441(and)s 8860(so)s 0 5542(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 4966(there)m 528(is)s
+7573(time)s 8055(of)s 8329(writing,)s 0 5254(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 4963(@Outline)m 240 fnt1 6439 4966(has)m
+5077(and)s 220 fnt2 5475 5251(@Outline)m 240 fnt1 6439 5254(has)m
6803(no)s 7091(ef)s 6(fect)k 7681(in)s 7919(PDF)s
-8410(output.)s 0 4678(The)m 424(size)s 847(of)s 1114(outlined)s
+8410(output.)s 0 4966(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 4390(though)m 723(the)s 3(y)k 1186(are)s 1533(in)s
+0 4678(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 3597(3.9.)m 471(@Language)s 1762(and)s 2203(@CurrLang)s
-240 fnt1 480 3120(The)m 220 fnt2 905 3117(@Language)m 240 fnt1
-2153 3120(symbol)m 2910(informs)s 3701(Lout)s 4210(that)s 4625(its)s
-4898(right)s 5406(parameter)s 6417(is)s 6624(written)s 7354(in)s
-7594(the)s 7939(language)s 8855(of)s 0 2832(its)m 276(left)s
-653(parameter:)s 220 fnt2 480 2331(Danish @Language { ...)m 13( })k 240 fnt1
-0 1832(Basser)m 706(Lout)s 1228(V)s 26(ersion)k 2025(3)s
+240 fnt5 0 3885(3.9.)m 471(@Language)s 1762(and)s 2203(@CurrLang)s
+
+[ /Dest /LOUTlanguage /DEST pdfmark
+240 fnt1 480 3408(The)m 220 fnt2 905 3405(@Language)m 240 fnt1
+2153 3408(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 /LOUT15_4082_pre_lang_1 /DEST pdfmark
+7354(in)s
+7594(the)s 7939(language)s 8855(of)s 0 3120(its)m 276(left)s
+653(parameter:)s 220 fnt2 480 2619(Danish @Language { ...)m 13( })k 240 fnt1
+0 2120(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 1544(that)m
+6906(w)s 2(ords)k 7549(appropriately)s 8887(to)s 0 1832(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 1541(@CurrLang)m 240 fnt1 5486 1544(symbol)m 6246(\(see)s 6686(belo)s 6(w\).)k
-7508(Other)s 8112(uses,)s 8630(such)s 0 1256(as)m 250(right-to-left)s
+4301 1829(@CurrLang)m 240 fnt1 5486 1832(symbol)m 6246(\(see)s 6686(belo)s 6(w\).)k
+7508(Other)s 8112(uses,)s 8630(such)s 0 1544(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 882(The)m 953(left)s 1375(parameter)s 2434(must)s 3004(either)s
+480 1170(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
+8206(language)s 0 882(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 879(langdef)m
+[ /Dest /LOUT15_4082_pre_lang_2 /DEST pdfmark
+240 fnt1 5363 882(language)m 6285(de\207nition)s
+7261(at)s 7495(the)s 7845(be)s 3(ginning)k 8855(of)s
+0 594(the)m 348(input:)s 220 fnt2 480 86(langdef Danish Dansk {)m 240 fnt6
+2993 91(implementation-dependent)m 220 fnt2 5608 86(})m
grestore
gsave
1417 -15423 translate
@@ -11056,93 +11858,125 @@ gsave
240 fnt6 1417 -1580(3.9.)m 1871(@Langua)s 2(g)k 2(e)k
3099(and)s 3525(@CurrLang)s 240 fnt5 10248 -1583(47)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(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 13202(langdef)m 240 fnt1 5363 13205(language)m
-6285(de\207nition)s 7261(at)s 7495(the)s 7845(be)s 3(ginning)k
-8855(of)s 0 12917(the)m 348(input:)s 220 fnt2 480 12409(langdef Danish Dansk {)m
-240 fnt6 2993 12414(implementation-dependent)m 220 fnt2 5608 12409(})m 240 fnt1
-0 11910(After)m 220 fnt2 571 11907(langdef)m 240 fnt1 1355 11910(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 11622(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 11334(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 11046(\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 10758(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 10258(langdef English { english .)m 13( :)k 11( ? ! .\) ?\) !\) })k 240 fnt1
-0 9759(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 9756(english.lh)m 240 fnt1 7289 9759(and)m 7713(se)s 6(v)k 3(en)k
-8326(w)s 2(ays)k 8887(to)s 0 9471(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 9183(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 9180(-)m 240 fnt1 5219 9183(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 8895(ends,)m 546(the)s 3(y)k
-1009(are)s 1356(simply)s 2061(omitted.)s 480 8521(The)m 220 fnt2
-913 8518(@CurrLang)m 240 fnt1 2103 8521(symbol,)m 2920(which)s 3567(has)s
-3942(no)s 4240(parameters,)s 5399(e)s 6(v)k 6(aluates)k
-6332(to)s 6576(the)s 6929(\207rst)s 7365(name)s 7944(gi)s 6(v)k 3(en)k
-8529(in)s 8778(the)s 220 fnt2 0 8230(langdef)m 240 fnt1
-776 8233(of)m 1047(the)s 1395(language)s 2315(in)s 2558(force)s
+0 13205(After)m
+220 fnt2 571 13202(langdef)m 240 fnt1 1355 13205(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 12917(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 12629(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 12341(\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 12053(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 11553(langdef English { english .)m 13( :)k 11( ? ! .\) ?\) !\) })k
+240 fnt1 0 11054(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 11051(english.lh)m 240 fnt1 7289 11054(and)m
+7713(se)s 6(v)k 3(en)k 8326(w)s 2(ays)k
+8887(to)s 0 10766(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 10478(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 10475(-)m 240 fnt1 5219 10478(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 10190(ends,)m 546(the)s 3(y)k 1009(are)s
+1356(simply)s 2061(omitted.)s 480 9816(The)m 220 fnt2 913 9813(@CurrLang)m
+240 fnt1 2103 9816(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 /LOUT15_4082_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 9525(langdef)m 240 fnt1
+776 9528(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 7732(Dansk @Language { )m 11(This is @CurrLang.)k 13( })k 240 fnt1
-0 7233(has)m 370(result)s 480 6780(This)m 956(is)s 1166(Danish.)s
-0 6327(It)m 205(is)s 415(typically)s 1305(used)s 1802(with)s
-2284(the)s 220 fnt2 2632 6324(@Case)m 240 fnt1 3419 6327(symbol)m
-4179(lik)s 2(e)k 4591(this:)s 220 fnt2 480 5826(@CurrLang @Case {)m
-480 5538( Danish @Y)m 4(ield tirsdag)k 480 5250( English @Y)m 4(ield )k 11(T)k 26(uesda)k 6(y)k
-480 4962( F)m 9(rench @Y)k 4(ield Mardi)k 480 4674(})m 240 fnt1
-0 4180(This)m 476(e)s 3(xample)k 1339(e)s 6(v)k 6(aluates)k
+220 fnt2 480 9027(Dansk @Language { )m 11(This is @CurrLang.)k 13( })k 240 fnt1
+0 8528(has)m 370(result)s 480 8075(This)m 956(is)s 1166(Danish.)s
+0 7622(It)m 205(is)s 415(typically)s 1305(used)s 1802(with)s
+2284(the)s 220 fnt2 2632 7619(@Case)m 240 fnt1 3419 7622(symbol)m
+4179(lik)s 2(e)k 4591(this:)s 220 fnt2 480 7121(@CurrLang @Case {)m
+480 6833( Danish @Y)m 4(ield tirsdag)k 480 6545( English @Y)m 4(ield )k 11(T)k 26(uesda)k 6(y)k
+480 6257( F)m 9(rench @Y)k 4(ield Mardi)k 480 5969(})m 240 fnt1
+0 5475(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 3806(The)m
+6141(in)s 6384(the)s 6732(current)s 7468(language.)s 480 5101(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 3518(2.6,)m
+7125(e)s 3(xplained)k 8110(in)s 8352(Section)s 0 4813(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 3230(F)m 3(or)k 380(e)s 3(xample,)k 1284(an)s
+0 4525(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 2942(will)m 426(ha)s 4(v)k 3(e)k 927(English)s
+0 4237(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 2939(@Language)m 240 fnt1
-8374 2942(.)m 240 fnt5 0 2149(3.10.)m 591(@OneCol)s 1653(and)s
-2094(@OneRo)s 2(w)k 240 fnt1 480 1717(The)m 220 fnt2
-913 1714(@OneRo)m 3(w)k 240 fnt1 2049 1717(symbol)m 2814(returns)s
+5890(French)s 6611(using)s 220 fnt2 7183 4234(@Language)m 240 fnt1
+8374 4237(.)m 240 fnt5 0 3444(3.10.)m 591(@OneCol)s 1653(and)s
+2094(@OneRo)s 2(w)k
+[ /Dest /LOUTonerow /DEST pdfmark
+240 fnt1 480 3012(The)m 220 fnt2
+913 3009(@OneRo)m 3(w)k 240 fnt1 2049 3012(symbol)m
+[ /Dest /LOUT15_4082_pre_oner_1 /DEST pdfmark
+
+[ /Dest /LOUT15_4082_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 1429(mark)m 540(protrudes.)s 1595(This)s 2059(is)s 2257(normally)s
+0 2724(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 1141(it)m
-192(with)s 220 fnt2 674 1138(^/)m 240 fnt1 901 1141(or)m
-220 fnt2 1160 1138(^//)m 240 fnt1 1388 1141(.)m 1552(F)s 3(or)k
-1941(e)s 3(xample,)k 220 fnt2 480 640(@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
+6869(be)s 7139(chosen)s 7849(by)s 8130(preceding)s 0 2436(it)m
+192(with)s 220 fnt2 674 2433(^/)m 240 fnt1 901 2436(or)m
+220 fnt2 1160 2433(^//)m 240 fnt1 1388 2436(.)m 1552(F)s 3(or)k
+1941(e)s 3(xample,)k 220 fnt2 480 1935(@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 1439(has)m 370(result)s 468 371 0 188 240 288 60 480 460 LoutGr2
+grestore save gsave 200 dict begin lfigdict begin
+grestore
+468 371 0 188 240 288 60 0 0 LoutGr2
+/lfiglightgrey [ lfigbox ] gsave lfigpaintpath grestore
+0.015 cm setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigbox ] lfigdopath
+pop pop
+grestore
+468 371 0 188 240 288 60 0 0 LoutGr2
+
+0.015 cm setlinewidth lfiground setlinecap
+0.15 cm /lfigdashed [ -0.3 cm ymark
+xsize ymark 0.3 cm 0 lfigpadd []
+xmark -0.3 cm
+xmark ysize 0 0.3 cm lfigpadd ] lfigdopath
+pop pop
+grestore
+240 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
+
+grestore
+181 3(5)m
+grestore
+
+grestore
+end end restore
+grestore
grestore
gsave
@@ -11194,47 +12028,16 @@ gsave
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 13368 240 288 60 LoutGraphic
+240 fnt1 9066 13368 0 13259 240 288 60 LoutGraphic
gsave
0 LoutMargSet
grestore
-0 13205(has)m 370(result)s
-468 371 0 188 240 288 60 480 12226 LoutGr2
-grestore save gsave 200 dict begin lfigdict begin
-grestore
-468 371 0 188 240 288 60 0 0 LoutGr2
-/lfiglightgrey [ lfigbox ] gsave lfigpaintpath grestore
-0.015 cm setlinewidth lfiground setlinecap
-0.15 cm /lfigsolid [ lfigbox ] lfigdopath
-pop pop
-grestore
-468 371 0 188 240 288 60 0 0 LoutGr2
-
-0.015 cm setlinewidth lfiground setlinecap
-0.15 cm /lfigdashed [ -0.3 cm ymark
-xsize ymark 0.3 cm 0 lfigpadd []
-xmark -0.3 cm
-xmark ysize 0 0.3 cm lfigpadd ] lfigdopath
-pop pop
-grestore
-240 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
-
-grestore
-181 3(5)m
-grestore
-
-grestore
-end end restore
-grestore
-0 11510(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 11009(@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 10513(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 9534 LoutGr2
+0 13205(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 12704(@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 12208(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 11229 LoutGr2
grestore save gsave 200 dict begin lfigdict begin
grestore
468 371 0 263 240 288 60 0 0 LoutGr2
@@ -11264,74 +12067,125 @@ grestore
grestore
end end restore
grestore
+
+[ /Dest /LOUT15_4082_pre_oner_3 /DEST pdfmark
220 fnt2
-0 9080(@OneCol)m 240 fnt1 1016 9083(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 9080(@OneRo)m 3(w)k 240 fnt1 5456 9083(does)m
-5951(on)s 6252(ro)s 6(ws,)k 6823(with)s 7310(the)s
-7663(symbols)s 220 fnt2 8517 9080(^|)m 240 fnt1 8722 9083(and)m
-220 fnt2 0 8792(^||)m 240 fnt1 257 8795(\(or)m 220 fnt2
-595 8792(^&)m 240 fnt1 840 8795(\))m 968(determining)s 2176(which)s
-2818(mark)s 3370(is)s 3580(chosen.)s 240 fnt5 0 8002(3.11.)m
-591(@W)s 4(ide)k 1411(and)s 1852(@High)s 240 fnt1
-480 7525(The)m 220 fnt2 910 7522(@Wide)m 240 fnt1 1687 7525(symbol)m
+61 10775(@OneCol)m 240 fnt1 1074 10778(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 10775(@OneRo)m 3(w)k 240 fnt1 5483 10778(does)m
+5974(on)s 6272(ro)s 6(ws,)k 6839(with)s 7322(the)s
+7671(symbols)s 220 fnt2 8521 10775(^|)m 240 fnt1 8722 10778(and)m
+220 fnt2 0 10487(^||)m 240 fnt1 257 10490(\(or)m 220 fnt2
+595 10487(^&)m 240 fnt1 840 10490(\))m 968(determining)s 2176(which)s
+2818(mark)s 3370(is)s 3580(chosen.)s 240 fnt5 0 9697(3.11.)m
+591(@W)s 4(ide)k 1411(and)s 1852(@High)s
+[ /Dest /LOUTwide /DEST pdfmark
+240 fnt1
+480 9220(The)m 220 fnt2 910 9217(@Wide)m 240 fnt1 1687 9220(symbol)m
+
+[ /Dest /LOUT15_4082_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 7237(parameter)m 9(,)k 1058(which)s
+8470(its)s 8749(left)s 0 8932(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 7234(c)m 240 fnt1 7707 7237(,)m
-220 fnt2 7821 7234(i)m 240 fnt1 7855 7237(,)m 220 fnt2
-7968 7234(p)m 240 fnt1 8082 7237(,)m 220 fnt2 8196 7234(m)m
-240 fnt1 8365 7237(,)m 220 fnt2 8478 7234(f)m 240 fnt1
-8536 7237(,)m 220 fnt2 8650 7234(s)m 240 fnt1 8753 7237(,)m
-8867(or)s 220 fnt2 0 6946(v)m 240 fnt1 109 6949(.)m
+7386(is)s 220 fnt2 7602 8929(c)m 240 fnt1 7707 8932(,)m
+220 fnt2 7821 8929(i)m 240 fnt1 7855 8932(,)m 220 fnt2
+7968 8929(p)m 240 fnt1 8082 8932(,)m 220 fnt2 8196 8929(m)m
+240 fnt1 8365 8932(,)m 220 fnt2 8478 8929(f)m 240 fnt1
+8536 8932(,)m 220 fnt2 8650 8929(s)m 240 fnt1 8753 8932(,)m
+8867(or)s 220 fnt2 0 8641(v)m 240 fnt1 109 8644(.)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 6661(wide,)m 585(its)s 875(paragraphs)s 1988(are)s
+8767(too)s 0 8356(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 6658(@OneCol)m 240 fnt1 7046 6661(operation)m 8020(is)s 8244(included)s
-0 6373(in)m 257(the)s 620(ef)s 6(fect)k 1231(of)s
-220 fnt2 1517 6370(@Wide)m 240 fnt1 2231 6373(,)m 2353(since)s
+6021 8353(@OneCol)m 240 fnt1 7046 8356(operation)m 8020(is)s 8244(included)s
+0 8068(in)m 257(the)s 620(ef)s 6(fect)k 1231(of)s
+220 fnt2 1517 8065(@Wide)m 240 fnt1 2231 8068(,)m 2353(since)s
2915(it)s 3122(does)s 3627(not)s 4008(mak)s 2(e)k
4595(sense)s 5184(for)s 5537(an)s 5835(object)s 6494(of)s
6780(\207x)s 3(ed)k 7329(width)s 7946(to)s 8200(ha)s 4(v)k 3(e)k
-8716(tw)s 2(o)k 0 6085(column)m 775(marks.)s 552 5711(The)m
-220 fnt2 993 5708(@High)m 240 fnt1 1725 5711(symbol)m 2498(similarly)s
+8716(tw)s 2(o)k 0 7780(column)m 775(marks.)s
+[ /Dest /LOUT15_4082_pre_wide_2 /DEST pdfmark
+552 7406(The)m
+220 fnt2 993 7403(@High)m 240 fnt1 1725 7406(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 5423(space)m
+6796(height,)s 7514(by)s 7821(adding)s 8539(white)s 0 7118(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 5420(@OneRo)m 3(w)k 240 fnt1 0 5135(operation)m
-960(is)s 1170(included.)s 240 fnt5 0 4342(3.12.)m 591(@HShift)s
-1550(and)s 1991(@VShift)s 240 fnt1 480 3910(The)m 220 fnt2
-917 3907(@HShift)m 240 fnt1 1802 3910(symbol)m 2572(returns)s 3296(its)s
+220 fnt2 7995 7115(@OneRo)m 3(w)k 240 fnt1 0 6830(operation)m
+960(is)s 1170(included.)s 240 fnt5 0 6037(3.12.)m 591(@HShift)s
+1550(and)s 1991(@VShift)s
+[ /Dest /LOUThshift /DEST pdfmark
+240 fnt1 480 5605(The)m 220 fnt2
+917 5602(@HShift)m 240 fnt1 1802 5605(symbol)m
+[ /Dest /LOUT15_4082_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 3622(by)m 294(its)s
-570(left)s 947(parameter:)s 220 fnt2 1124 3114(+)m 240 fnt6
-1244 3119(length)m 220 fnt2 1897 3114(@HShift)m 240 fnt6 2772 3119(object)m
-240 fnt1 3600 3117(Principal)m 4517(mark)s 5069(shifted)s 5777(to)s
-6016(the)s 6364(right)s 6875(by)s 240 fnt6 7169 3119(length)m
-240 fnt1 7762 3117(;)m 220 fnt2 1180 2609(-)m 240 fnt6
-1244 2614(length)m 220 fnt2 1897 2609(@HShift)m 240 fnt6 2772 2614(object)m
-240 fnt1 3600 2612(Principal)m 4517(mark)s 5069(shifted)s 5777(to)s
-6016(the)s 6364(left)s 6741(by)s 240 fnt6 7035 2614(length)m
-240 fnt1 7628 2612(;)m 240 fnt6 1244 2109(length)m 220 fnt2
-1897 2104(@HShift)m 240 fnt6 2772 2109(object)m 240 fnt1 3600 2107(Principal)m
+7095(shifted)s 7813(as)s 8073(prescribed)s 0 5317(by)m 294(its)s
+570(left)s 947(parameter:)s 220 fnt2 1124 4809(+)m 240 fnt6
+1244 4814(length)m 220 fnt2 1897 4809(@HShift)m 240 fnt6 2772 4814(object)m
+240 fnt1 3600 4812(Principal)m 4517(mark)s 5069(shifted)s 5777(to)s
+6016(the)s 6364(right)s 6875(by)s 240 fnt6 7169 4814(length)m
+240 fnt1 7762 4812(;)m
+[ /Dest /LOUT12_1492_pre_hshi_1 /DEST pdfmark
+220 fnt2 1180 4304(-)m 240 fnt6
+1244 4309(length)m 220 fnt2 1897 4304(@HShift)m 240 fnt6 2772 4309(object)m
+240 fnt1 3600 4307(Principal)m 4517(mark)s 5069(shifted)s 5777(to)s
+6016(the)s 6364(left)s 6741(by)s 240 fnt6 7035 4309(length)m
+240 fnt1 7628 4307(;)m
+[ /Dest /LOUT12_1492_pre_hshi_2 /DEST pdfmark
+240 fnt6 1244 3804(length)m 220 fnt2
+1897 3799(@HShift)m 240 fnt6 2772 3804(object)m 240 fnt1 3600 3802(Principal)m
4512(mark)s 5058(shifted)s 5760(so)s 6020(as)s 6264(to)s
-6497(lie)s 240 fnt6 6786 2109(length)m 240 fnt1 7433 2107(to)m
-7666(the)s 8008(right)s 8513(of)s 8778(the)s 3600 1819(left)m
-3977(edge)s 4485(of)s 240 fnt6 4756 1821(object)m 240 fnt1
-5344 1819(;)m 0 1316(In)m 256(each)s 751(chase)s 220 fnt2
-1338 1313(@HShift)m 240 fnt1 2213 1316(includes)m 3061(a)s 220 fnt2
-3227 1313(@OneCol)m 240 fnt1 4239 1316(ef)m 6(fect.)k
+6497(lie)s 240 fnt6 6786 3804(length)m 240 fnt1 7433 3802(to)m
+7666(the)s 8008(right)s 8513(of)s 8778(the)s 3600 3514(left)m
+3977(edge)s 4485(of)s 240 fnt6 4756 3516(object)m 240 fnt1
+5344 3514(;)m
+[ /Dest /LOUT12_1492_pre_hshi_3 /DEST pdfmark
+0 3011(In)m 256(each)s 751(chase)s 220 fnt2
+1338 3008(@HShift)m 240 fnt1 2213 3011(includes)m 3061(a)s 220 fnt2
+3227 3008(@OneCol)m 240 fnt1 4239 3011(ef)m 6(fect.)k 480 2637(The)m
+916(units)s 1440(of)s 1720(measurement)s 3062(of)s 240 fnt6
+3342 2639(length)m 240 fnt1 4003 2637(may)m 4478(be)s 220 fnt2
+4768 2634(c)m 240 fnt1 4873 2637(,)m 220 fnt2 4989 2634(i)m
+240 fnt1 5023 2637(,)m 220 fnt2 5138 2634(p)m 240 fnt1
+5252 2637(,)m 220 fnt2 5368 2634(m)m 240 fnt1 5537 2637(,)m
+220 fnt2 5652 2634(f)m 240 fnt1 5710 2637(,)m 220 fnt2
+5825 2634(s)m 240 fnt1 5928 2637(,)m 220 fnt2 6044 2634(v)m
+240 fnt1 6153 2637(,)m 6268(or)s 220 fnt2 6536 2634(w)m
+240 fnt1 6692 2637(.)m 6864(In)s 7129(the)s 7485(latter)s
+8043(case,)s 220 fnt2 8569 2634(1w)m 240 fnt1 8916 2637(is)m
+0 2349(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 2346(0.5w @HShift)m 240 fnt1 7699 2349(will)m 8132(centre)s
+8778(the)s 0 2061(principal)m 904(column)s 1679(mark)s 2231(within)s
+2899(the)s 3247(right)s 3758(parameter)s 13(.)k
+[ /Dest /LOUT15_4082_pre_hshi_2 /DEST pdfmark
+548 1687(The)m
+220 fnt2 984 1684(@VShift)m 240 fnt1 1855 1687(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 1396(+)m 240 fnt6 120 1401(length)m 240 fnt1 771 1399(shifts)m
+1337(it)s 1527(do)s 6(wn,)k 220 fnt2 2159 1396(-)m
+240 fnt6 2223 1401(length)m 240 fnt1 2874 1399(shifts)m 3440(it)s
+3629(up,)s 3974(and)s 240 fnt6 4376 1401(length)m 240 fnt1
+5027 1399(shifts)m 5593(it)s 5783(to)s 240 fnt6 6019 1401(length)m
+240 fnt1 6670 1399(belo)m 6(w)k 7301(the)s 7647(top)s
+8004(edge)s 8510(of)s 8778(the)s 0 1111(object.)m 748(W)s 9(ith)k
+220 fnt2 1274 1108(@VShift)m 240 fnt1 2077 1111(,)m 220 fnt2
+2184 1108(1w)m 240 fnt1 2522 1111(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
@@ -11382,117 +12236,132 @@ gsave
240 fnt6 1417 -1580(3.13.)m 1991(@HExpand)s 3182(and)s 3608(@VExpand)s
240 fnt5 10249 -1583(49)m gsave
1417 -15423 translate
-240 fnt1 9066 13368 0 13257 240 288 60 LoutGraphic
+240 fnt1 9066 13368 0 13368 240 288 60 LoutGraphic
gsave
1 LoutMargSet
grestore
-480 13203(The)m 916(units)s 1440(of)s
-1720(measurement)s 3062(of)s 240 fnt6 3342 13205(length)m 240 fnt1
-4003 13203(may)m 4478(be)s 220 fnt2 4768 13200(c)m 240 fnt1
-4873 13203(,)m 220 fnt2 4989 13200(i)m 240 fnt1 5023 13203(,)m
-220 fnt2 5138 13200(p)m 240 fnt1 5252 13203(,)m 220 fnt2
-5368 13200(m)m 240 fnt1 5537 13203(,)m 220 fnt2 5652 13200(f)m
-240 fnt1 5710 13203(,)m 220 fnt2 5825 13200(s)m 240 fnt1
-5928 13203(,)m 220 fnt2 6044 13200(v)m 240 fnt1 6153 13203(,)m
-6268(or)s 220 fnt2 6536 13200(w)m 240 fnt1 6692 13203(.)m
-6864(In)s 7129(the)s 7485(latter)s 8043(case,)s 220 fnt2
-8569 13200(1w)m 240 fnt1 8916 13203(is)m 0 12915(tak)m 2(en)k
-579(to)s 825(be)s 1113(the)s 1468(width)s 2076(of)s
-2354(the)s 2708(right)s 3226(parameter)s 9(,)k 4285(so)s
-4557(that,)s 5029(for)s 5373(e)s 3(xample,)k 220 fnt2
-6294 12912(0.5w @HShift)m 240 fnt1 7699 12915(will)m 8132(centre)s 8778(the)s
-0 12627(principal)m 904(column)s 1679(mark)s 2231(within)s 2899(the)s
-3247(right)s 3758(parameter)s 13(.)k 548 12253(The)m 220 fnt2
-984 12250(@VShift)m 240 fnt1 1855 12253(symbol)m 2624(is)s 2842(similar)s
-3572(e)s 3(xcept)k 4261(that)s 4688(it)s 4888(applies)s
-5624(v)s 3(ertically)k 6584(to)s 6832(the)s 7188(principal)s
-8100(ro)s 6(w)k 8529(mark:)s 220 fnt2 0 11962(+)m
-240 fnt6 120 11967(length)m 240 fnt1 771 11965(shifts)m 1337(it)s
-1527(do)s 6(wn,)k 220 fnt2 2159 11962(-)m 240 fnt6
-2223 11967(length)m 240 fnt1 2874 11965(shifts)m 3440(it)s 3629(up,)s
-3974(and)s 240 fnt6 4376 11967(length)m 240 fnt1 5027 11965(shifts)m
-5593(it)s 5783(to)s 240 fnt6 6019 11967(length)m 240 fnt1
-6670 11965(belo)m 6(w)k 7301(the)s 7647(top)s 8004(edge)s
-8510(of)s 8778(the)s 0 11677(object.)m 748(W)s 9(ith)k
-220 fnt2 1274 11674(@VShift)m 240 fnt1 2077 11677(,)m 220 fnt2
-2184 11674(1w)m 240 fnt1 2522 11677(is)m 2732(tak)s 2(en)k
-3305(to)s 3544(be)s 3826(the)s 4174(height)s 4832(of)s
-5103(the)s 5451(right)s 5962(parameter)s 13(.)k 240 fnt5
-0 10884(3.13.)m 591(@HExpand)s 1854(and)s 2295(@VExpand)s 240 fnt1
-558 10407(The)m 220 fnt2 1004 10404(@HExpand)m 240 fnt1 2195 10407(symbol)m
-2973(causes)s 3666(its)s 3961(right)s 4490(parameter)s 5522(to)s
-5779(be)s 6079(as)s 6348(wide)s 6887(as)s 7155(it)s
-7365(possibly)s 8235(could)s 8844(be)s 0 10119(without)m 784(violating)s
-1679(a)s 220 fnt2 1837 10116(@Wide)m 240 fnt1 2603 10119(symbol)m
-3355(or)s 3606(intruding)s 4528(into)s 4945(the)s 5285(space)s
-5864(occupied)s 6778(by)s 7064(neighbouring)s 8386(g)s 1(aps)k
-8867(or)s 0 9831(objects.)m 841(The)s 220 fnt2 1269 9828(@VExpand)m
-240 fnt1 2430 9831(symbol)m 3190(is)s 3400(similar)s 9(,)k
-4160(b)s 4(ut)k 4522(it)s 4714(af)s 6(fects)k
-5394(height.)s 6156(F)s 3(or)k 6545(e)s 3(xample,)k
-7459(in)s 7702(the)s 8050(object)s 220 fnt2 480 9330(8i @Wide 11i @High {)m
-480 9042( //1i ||1i @HExpand @VExpand x ||1i)m 480 8754( //1i)m 480 8466(})m 240 fnt1 0 7972(object)m
-220 fnt2 655 7969(x)m 240 fnt1 834 7972(could)m 1435(ha)s 4(v)k 3(e)k
-1947(an)s 3(y)k 2356(size)s 2794(up)s 3098(to)s
-3348(six)s 3694(inches)s 4367(wide)s 4899(by)s 5204(nine)s
-5683(inches)s 6357(high,)s 6901(so)s 7178(the)s 220 fnt2
-7537 7969(@HExpand)m 240 fnt1 8722 7972(and)m 220 fnt2 0 7681(@VExpand)m
-240 fnt1 1166 7684(symbols)m 2021(cause)s 2614(it)s 2812(to)s
-3057(ha)s 4(v)k 3(e)k 3564(e)s 3(xactly)k
-4311(this)s 4713(size.)s 5254(This)s 5736(is)s 5952(important,)s
-6994(for)s 7338(e)s 3(xample,)k 8258(if)s 220 fnt2
-8481 7681(x)m 240 fnt1 8655 7684(con)m 8998(-)s 0 7396(tains)m
-220 fnt2 502 7393(|1r)m -8(t)k 240 fnt1 879 7396(or)m
-220 fnt2 1138 7393(/1r)m -8(t)k 240 fnt1 1459 7396(;)m
-1571(without)s 2362(the)s 2710(e)s 3(xpansion)k 3735(these)s
-4282(might)s 4900(not)s 5266(mo)s 3(v)k 3(e)k
+240 fnt5 0 13203(3.13.)m 591(@HExpand)s
+1854(and)s 2295(@VExpand)s
+[ /Dest /LOUThexpand /DEST pdfmark
+
+[ /Dest /LOUT15_4082_pre_hexp_1 /DEST pdfmark
+
+[ /Dest /LOUT15_4082_pre_hexp_2 /DEST pdfmark
+
+[ /Dest /LOUT15_4082_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 7022(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 6734(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 6731(@HExpand)m
-240 fnt1 6493 6734(includes)m 7329(a)s 220 fnt2 7483 6731(@OneCol)m
-240 fnt1 8483 6734(ef)m 6(fect,)k 0 6446(and)m 220 fnt2
-404 6443(@VExpand)m 240 fnt1 1565 6446(includes)m 2413(a)s 220 fnt2
-2579 6443(@OneRo)m 3(w)k 240 fnt1 3710 6446(ef)m 6(fect.)k
-240 fnt5 0 5657(3.14.)m 591(@HContract)s 1976(and)s 2417(@VContract)s
-240 fnt1 542 5225(The)m 220 fnt2 972 5222(@HContr)m 2(act)k
-240 fnt1 2239 5225(symbol)m 3001(reduces)s 3784(the)s 4135(size)s
+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.14.)m 591(@HContract)s 1976(and)s 2417(@VContract)s
+
+[ /Dest /LOUThcontract /DEST pdfmark
+
+[ /Dest /LOUT15_4082_pre_hcon_1 /DEST pdfmark
+
+[ /Dest /LOUT15_4082_pre_hcon_2 /DEST pdfmark
+
+[ /Dest /LOUT15_4082_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 4937(\(after)m 575(paragraph)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 4436(5i @Wide @HContr)m 2(act { A |1r)k -8(t B })k 240 fnt1
-0 3942(has)m 370(result)s 480 3491(A)m 650(B)s 0 3040(in)m
+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 3037(@VContr)m 2(act)k 240 fnt1
-8167 3040(is)m 8366(similar)s 9(,)k 0 2752(b)m 4(ut)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 2008(3.15.)m 591(@HLimited)s 1864(and)s
-2305(@VLimited)s 240 fnt1 579 1576(The)m 220 fnt2 1047 1573(@HLimited)m
-240 fnt1 2221 1576(symbol)m 3021(limits)s 3654(the)s 4042(width)s
+6077(discussion.)s 240 fnt5 0 4327(3.15.)m 591(@HLimited)s 1864(and)s
+2305(@VLimited)s
+[ /Dest /LOUThlimited /DEST pdfmark
+
+[ /Dest /LOUT15_4082_pre_hlim_1 /DEST pdfmark
+
+[ /Dest /LOUT15_4082_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 1288(within)m 692(its)s 993(right)s 1529(parameter)s 2567(to)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 997(@HLimited)m
-240 fnt1 1138 1000(object.)m 1890(So)s 2199(this)s 2599(symbol)s
-3362(acts)s 3788(lik)s 2(e)k 220 fnt2 4204 997(@Wide)m
-240 fnt1 4981 1000(with)m 5467(respect)s 6206(to)s 6449(limiting)s
-7261(the)s 7613(space)s 8204(occupied)s 0 712(by)m 315(recursi)s 6(v)k 3(e)k
+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 424(enforces)m 860(whate)s 6(v)k 3(er)k
+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.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 /LOUT15_4082_pre_hadj_1 /DEST pdfmark
+
+[ /Dest /LOUT15_4082_pre_hadj_2 /DEST pdfmark
+
+[ /Dest /LOUT15_4082_pre_hadj_3 /DEST pdfmark
+
+[ /Dest /LOUT15_4082_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
@@ -11543,96 +12412,103 @@ gsave
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 13259 240 288 60 LoutGraphic
+240 fnt1 9066 13368 0 13264 240 288 60 LoutGraphic
gsave
0 LoutMargSet
grestore
-480 13205(The)m 220 fnt2
-904 13202(@VLimited)m 240 fnt1 2022 13205(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 12917(izontally)m 15(.)k
-240 fnt5 0 12124(3.16.)m 591(@HAdjust,)s 1804(@V)s 32(Adjust,)k
-2972(and)s 3413(@P)s 17(Adjust)k 240 fnt1 551 11648(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 11360(to)m 268(it;)s 220 fnt2 602 11357(@HAdjust)m 240 fnt1
-1678 11360(adjusts)m 220 fnt2 2422 11357(|)m 240 fnt1 2549 11360(sequences,)m
-220 fnt2 3656 11357(@V)m 17(Adjust)k 240 fnt1 4702 11360(adjusts)m
-220 fnt2 5447 11357(/)m 240 fnt1 5601 11360(sequences,)m 6707(and)s
-220 fnt2 7141 11357(@P)m 26(Adjust)k 240 fnt1 8179 11360(adjusts)m
-220 fnt2 8924 11357(&)m 240 fnt1 0 11072(sequences.)m 1134(F)s 3(or)k
-1523(e)s 3(xample,)k 220 fnt2 480 10571(4i @Wide @P)m 26(Adjust { 1 2 3 4 5 6 7 8 })k
-240 fnt1 0 10074(has)m 370(result)s 480 9619(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 9165(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 8877(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 8589(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 8212(@P)m 26(Adjust)k
-240 fnt1 1497 8215(is)m 1716(used)s 2222(by)s 2525(the)s
-220 fnt2 2883 8212(adjust)m 240 fnt1 3533 8215(and)m 220 fnt2
-3946 8212(outdent)m 240 fnt1 4743 8215(options)m 5508(of)s 5789(the)s
-220 fnt2 6146 8212(@Break)m 240 fnt1 7011 8215(symbol)m 7780(\(Section)s
-8643(3.4\).)s 0 7927(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 7639(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 7351(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 6558(3.17.)m 591(@HScale)s 1587(and)s 2028(@VScale)s
-220 fnt2 538 6123(@HScale)m 240 fnt1 1516 6126(causes)m 2189(its)s
+240 fnt5 0 9194(3.17.)m 591(@HScale)s 1587(and)s 2028(@VScale)s
+
+[ /Dest /LOUThscale /DEST pdfmark
+
+[ /Dest /LOUT15_4082_pre_hsca_1 /DEST pdfmark
+
+[ /Dest /LOUT15_4082_pre_hsca_2 /DEST pdfmark
+
+[ /Dest /LOUT15_4082_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 5838(scaling)m 730(it:)s 220 fnt2
-480 5337(4i @Wide @HScale { 1 2 3 4 5 6 7 8 })m 240 fnt1 0 4843(has)m 370(result)s gsave
+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 4388(1)m
+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 3934(and)m 220 fnt2 480 3483(0.5i @Wide @HScale { 1 2 3 4 5 6 7 8 })m
-240 fnt1 0 2989(has)m 370(result)s gsave
+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 2534(1)m 155(2)s
+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 2077(@HScale)m 240 fnt1 980 2080(\207rst)m
-1409(applies)s 220 fnt2 2136 2077(@HContr)m 2(act)k 240 fnt1
-3398 2080(to)m 3635(its)s 3910(parameter)s 9(,)k 4960(then)s
+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 1792(The)m 433(principal)s 1342(mark)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 1504(the)m 365(actual)s 1007(size)s 1451(and)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 1216(principal)m 904(mark)s 1456(only)s 1936(causes)s 2611(trouble)s
-3344(in)s 3587(practice.\))s 220 fnt2 480 839(@VScale)m 240 fnt1
-1460 842(is)m 1681(similar)s 9(,)k 2452(b)s 4(ut)k
+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 839(@HScale)m 240 fnt1 6051 842(and)m 220 fnt2
-6467 839(@VScale)m 240 fnt1 7447 842(each)m 7953(ha)s 4(v)k 3(e)k
-8465(both)s 8960(a)s 220 fnt2 0 551(@OneCol)m 240 fnt1
-1012 554(and)m 1416(a)s 220 fnt2 1582 551(@OneRo)m 3(w)k
-240 fnt1 2713 554(ef)m 6(fect.)k
+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.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 /LOUT15_4082_pre_cove_1 /DEST pdfmark
+
+[ /Dest /LOUT15_4082_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
@@ -11683,21 +12559,11 @@ gsave
240 fnt6 1417 -1580(3.18.)m 1991(@HCo)s 2(ver)k 3032(and)s
3458(@VCo)s 2(ver)k 240 fnt5 10256 -1583(51)m gsave
1417 -15423 translate
-240 fnt1 9066 13413 0 13413 240 288 60 LoutGraphic
+240 fnt1 9066 13413 0 12966 240 288 60 LoutGraphic
gsave
1 LoutMargSet
grestore
-240 fnt5
-0 13248(3.18.)m 591(@HCo)s 2(v)k 2(er)k 1679(and)s
-2120(@VCo)s 2(v)k 2(er)k 240 fnt1 529 12816(The)m
-220 fnt2 946 12813(@VCo)m 3(v)k 5(er)k 240 fnt1
-1941 12816(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 12528(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 12027(@VCo)m 3(v)k 5(er \( 45d @Rotate Hello @VCo)k 3(v)k 5(er \))k
-240 fnt1 0 11531(produces)m 748 843 0 396 240 288 60 480 10348 LoutGr2
+748 843 0 396 240 288 60 480 12570 LoutGr2
grestore save gsave 200 dict begin lfigdict begin
grestore
748 843 0 396 240 288 60 0 0 LoutGr2
@@ -11710,7 +12576,8 @@ grestore
gsave
0 396 translate
1.0000 4.1328 scale
-0 -54(\()m
+0 -54(\()m
+
grestore
gsave
210 396 translate
@@ -11720,18 +12587,18 @@ grestore
gsave
680 396 translate
1.0000 4.1328 scale
-0 -54(\))m
-
+0 -54(\))m
grestore
grestore
end end restore
grestore
-0 9897(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 9396(@VScale \( 45d @Rotate Hello @VScale \))m 240 fnt1 0 8900(which)m 642(produces)s 748 486 0 39 240 288 60 480 8074 LoutGr2
+0 12119(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 11618(@VScale \( 45d @Rotate Hello @VScale \))m 240 fnt1 0 11122(which)m
+642(produces)s 748 486 0 39 240 288 60 480 10296 LoutGr2
grestore save gsave 200 dict begin lfigdict begin
grestore
748 486 0 39 240 288 60 0 0 LoutGr2
@@ -11744,8 +12611,7 @@ grestore
gsave
0 229 translate
1.0000 2.3824 scale
-0 -54(\()m
-
+0 -54(\()m
grestore
gsave
210 39 translate
@@ -11761,76 +12627,121 @@ grestore
grestore
end end restore
grestore
-0 7623(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 7335(co)m 3(v)k 3(ering)k 896(preserv)s 3(es)k
+0 9845(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 9557(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 7047(the)m 348(ro)s 6(w)k 15(.)k
-480 6673(If)m 700(the)s 1038(parameter)s 2042(of)s 220 fnt2
-2303 6670(@VCo)m 3(v)k 5(er)k 240 fnt1 3299 6673(has)m
+8438(rest)s 8855(of)s 0 9269(the)m 348(ro)s 6(w)k 15(.)k
+480 8895(If)m 700(the)s 1038(parameter)s 2042(of)s 220 fnt2
+2303 8892(@VCo)m 3(v)k 5(er)k 240 fnt1 3299 8895(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 6385(required)m 863(after)s 1368(all)s 1670(and)s
-2083(the)s 220 fnt2 2441 6382(@VCo)m 3(v)k 5(er)k
-240 fnt1 3456 6385(is)m 3675(silently)s 4441(ignored.)s 5345(If)s
+8760(not)s 0 8607(required)m 863(after)s 1368(all)s 1670(and)s
+2083(the)s 220 fnt2 2441 8604(@VCo)m 3(v)k 5(er)k
+240 fnt1 3456 8607(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 6097(size)m 434(abo)s 3(v)k 3(e)k
+6820(parameter)s 7843(has)s 8223(non-zero)s 0 8319(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 5809(cannot)m 698(mak)s 2(e)k
+7310(error)s 7841(since)s 8396(scaling)s 0 8031(cannot)m 698(mak)s 2(e)k
1270(the)s 1618(parameter)s 2632(co)s 3(v)k 3(er)k
3217(the)s 3565(rest)s 3969(of)s 4240(the)s 4588(ro)s 6(w)k 15(.)k
-220 fnt2 480 5432(@HCo)m 3(v)k 5(er)k 240 fnt1
-1505 5435(is)m 1722(similar)s 9(,)k 2489(horizontally)s 3705(co)s 3(v)k 3(ering)k
+220 fnt2 480 7654(@HCo)m 3(v)k 5(er)k 240 fnt1
+1505 7657(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 5147(symbol)m 753(w)s 2(orks)k
+6906(column)s 7688(mark.)s 8350(Neither)s 0 7369(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 4859(g)m 1(alle)k 3(y)k
+6946(determined)s 8071(before)s 8729(an)s 3(y)k 0 7081(g)m 1(alle)k 3(y)k
634(\210ushing)s 1459(tak)s 2(es)k 1999(place.)s 240 fnt5
-0 4066(3.19.)m 591(@StartHSpan,@StartVSpan,)s 3642(@StartHVSpan,)s 5374(@HSpan,)s 6416(and)s
-6857(@VSpan)s 240 fnt1 556 3589(These)m 1199(symbols)s 2065(w)s 2(ork)k
+0 6288(3.19.)m 591(@StartHSpan,@StartVSpan,)s 3642(@StartHVSpan,)s 5374(@HSpan,)s 6416(and)s
+6857(@VSpan)s
+[ /Dest /LOUThspan /DEST pdfmark
+
+[ /Dest /LOUT15_4082_pre_span_1 /DEST pdfmark
+
+[ /Dest /LOUT15_4082_pre_span_2 /DEST pdfmark
+
+[ /Dest /LOUT15_4082_pre_span_3 /DEST pdfmark
+
+[ /Dest /LOUT15_4082_pre_span_4 /DEST pdfmark
+
+[ /Dest /LOUT15_4082_pre_span_5 /DEST pdfmark
+240 fnt1 556 5811(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 3301(w)m 2(ay)k
+7792(more)s 8356(\210e)s 3(xible)k 0 5523(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 3298(//)m 240 fnt1 3691 3301(and)m
-220 fnt2 4095 3298(||)m 240 fnt1 4189 3301(.)m 4353(An)s
-4703(object)s 220 fnt2 480 2800(@Star)m -8(tHSpan object)k 240 fnt1
-0 2303(causes)m 220 fnt2 682 2300(object)m 240 fnt1 1330 2303(to)m
+3024(with)s 220 fnt2 3506 5520(//)m 240 fnt1 3691 5523(and)m
+220 fnt2 4095 5520(||)m 240 fnt1 4189 5523(.)m 4353(An)s
+4703(object)s 220 fnt2 480 5022(@Star)m -8(tHSpan object)k 240 fnt1
+0 4525(causes)m 220 fnt2 682 4522(object)m 240 fnt1 1330 4525(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 2015(on)m 289(which)s 922(it)s 1105(lies)s
+8574(mark)s 0 4237(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 2012(@HSpan)m 240 fnt1 5572 2015(symbol)m
+3675(rightmost)s 220 fnt2 4642 4234(@HSpan)m 240 fnt1 5572 4237(symbol)m
6323(on)s 6611(that)s 7020(mark)s 7563(not)s 7920(preceded)s
-8832(by)s 220 fnt2 0 1724(@Star)m -8(tHVSpan)k 240 fnt1
-1496 1727(,)m 220 fnt2 1603 1724(@Star)m -8(tHSpan)k 240 fnt1
-2953 1727(,)m 220 fnt2 3059 1724(@Star)m -8(tVSpan)k 240 fnt1
-4397 1727(,)m 4503(or)s 220 fnt2 4761 1724(@VSpan)m 240 fnt1
-5628 1727(.)m 5791(The)s 6218(column)s 6992(mark)s 7543(of)s
-7813(this)s 8208(spanning)s 0 1439(object)m 644(is)s 854(not)s
+8832(by)s 220 fnt2 0 3946(@Star)m -8(tHVSpan)k 240 fnt1
+1496 3949(,)m 220 fnt2 1603 3946(@Star)m -8(tHSpan)k 240 fnt1
+2953 3949(,)m 220 fnt2 3059 3946(@Star)m -8(tVSpan)k 240 fnt1
+4397 3949(,)m 4503(or)s 220 fnt2 4761 3946(@VSpan)m 240 fnt1
+5628 3949(.)m 5791(The)s 6218(column)s 6992(mark)s 7543(of)s
+7813(this)s 8208(spanning)s 0 3661(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 1065(If)m
-739(there)s 1301(is)s 1541(no)s 220 fnt2 1863 1062(@HSpan)m
-240 fnt1 2831 1065(symbol)m 3621(an)s 3(ywhere)k 4633(to)s
-4901(the)s 5279(right)s 5819(of)s 220 fnt2 6119 1062(@Star)m -8(tHSpan)k
-240 fnt1 7469 1065(,)m 7606(then)s 8104(the)s 8482(object)s
-0 777(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 3287(If)m
+739(there)s 1301(is)s 1541(no)s 220 fnt2 1863 3284(@HSpan)m
+240 fnt1 2831 3287(symbol)m 3621(an)s 3(ywhere)k 4633(to)s
+4901(the)s 5279(right)s 5819(of)s 220 fnt2 6119 3284(@Star)m -8(tHSpan)k
+240 fnt1 7469 3287(,)m 7606(then)s 8104(the)s 8482(object)s
+0 2999(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
+8760(not)s 0 2711(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 2337(Similarly)m 15(,)k
+1457(the)s 220 fnt2 1801 2334(@Star)m -8(tVSpan)k 240 fnt1
+3196 2337(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 2049(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 2046(@VSpan)m 240 fnt1 8366 2049(symbol)m 0 1761(on)m 294(that)s
+708(mark)s 1256(not)s 1618(preceded)s 2535(by)s 2825(a)s
+220 fnt2 2987 1758(@Star)m -8(tHVSpan)k 240 fnt1 4483 1761(,)m
+220 fnt2 4586 1758(@Star)m -8(tHSpan)k 240 fnt1 5936 1761(,)m
+220 fnt2 6039 1758(@Star)m -8(tVSpan)k 240 fnt1 7377 1761(,)m
+7480(or)s 220 fnt2 7735 1758(@HSpan)m 240 fnt1 8614 1761(;)m
+8722(and)s 0 1473(if)m 206(there)s 728(is)s 927(no)s
+220 fnt2 1209 1470(@VSpan)m 240 fnt1 2125 1473(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 1185(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 811(The)m
+220 fnt2 949 808(@Star)m -8(tHVSpan)k 240 fnt1 2547 811(symbol)m
+3349(combines)s 4359(the)s 4748(ef)s 6(fects)k 5470(of)s
+220 fnt2 5783 808(@Star)m -8(tHSpan)k 240 fnt1 7235 811(and)m
+220 fnt2 7681 808(@Star)m -8(tVSpan)k 240 fnt1 9019 811(,)m
+0 523(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
grestore
gsave
1417 -15423 translate
@@ -11881,114 +12792,100 @@ 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 13259 240 288 60 LoutGraphic
+240 fnt1 9066 13368 0 13264 240 288 60 LoutGraphic
gsave
0 LoutMargSet
grestore
-0 13205(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 12831(Similarly)m 15(,)k 1457(the)s 220 fnt2 1801 12828(@Star)m -8(tVSpan)k
-240 fnt1 3196 12831(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 12543(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 12540(@VSpan)m 240 fnt1 8366 12543(symbol)m 0 12255(on)m
-294(that)s 708(mark)s 1256(not)s 1618(preceded)s 2535(by)s
-2825(a)s 220 fnt2 2987 12252(@Star)m -8(tHVSpan)k 240 fnt1
-4483 12255(,)m 220 fnt2 4586 12252(@Star)m -8(tHSpan)k 240 fnt1
-5936 12255(,)m 220 fnt2 6039 12252(@Star)m -8(tVSpan)k 240 fnt1
-7377 12255(,)m 7480(or)s 220 fnt2 7735 12252(@HSpan)m 240 fnt1
-8614 12255(;)m 8722(and)s 0 11967(if)m 206(there)s 728(is)s
-927(no)s 220 fnt2 1209 11964(@VSpan)m 240 fnt1 2125 11967(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 11679(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 11305(The)m 220 fnt2 949 11302(@Star)m -8(tHVSpan)k
-240 fnt1 2547 11305(symbol)m 3349(combines)s 4359(the)s 4748(ef)s 6(fects)k
-5470(of)s 220 fnt2 5783 11302(@Star)m -8(tHSpan)k 240 fnt1
-7235 11305(and)m 220 fnt2 7681 11302(@Star)m -8(tVSpan)k 240 fnt1
-9019 11305(,)m 0 11017(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 10516(@Star)m -8(tHVSpan x | | @HSpan)k
-480 10228(/)m 480 9940(@VSpan | |)m 240 fnt1 0 9444(the)m 378(object)s
-220 fnt2 1052 9441(x)m 240 fnt1 1250 9444(will)m 1706(occup)s 2(y)k
+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 9156(between)m
-854(them.)s 480 8782(The)m 908(objects)s 1636(lying)s 2182(in)s
+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 8779(@HSpan)m 240 fnt1 7794 8782(and)m
-220 fnt2 8199 8779(@VSpan)m 240 fnt1 0 8494(symbols)m 865(can)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 8206(g)m 1(alle)k 3(y)k 639(tar)s 4(gets)k
+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 8203(@Star)m -8(tHSpan)k 240 fnt1 7568 8206(,)m
-220 fnt2 7681 8203(@Star)m -8(tVSpan)k 240 fnt1 9019 8206(,)m
-0 7918(or)m 220 fnt2 246 7915(@Star)m -8(tHVSpan)k 240 fnt1
-1742 7918(.)m 1892(Ho)s 6(we)k 6(v)k 3(er)k 9(,)k
+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 7630(paragraphs)m 1100(of)s 1371(te)s 3(xt)k 1786(that)s
-2204(require)s 2936(breaking.)s 480 7256(If)m 722(the)s 1082(right)s
-1605(parameter)s 2631(of)s 220 fnt2 2914 7253(@Star)m -8(tHSpan)k
-240 fnt1 4264 7256(,)m 220 fnt2 4383 7253(@Star)m -8(tVSpan)k
-240 fnt1 5721 7256(,)m 5840(or)s 220 fnt2 6111 7253(@Star)m -8(tHVSpan)k
-240 fnt1 7679 7256(occupies)m 8579(more)s 0 6968(horizontal)m 1022(or)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 6680(space)m 601(goes)s 1106(into)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 6392(permitted.)m 1081(Gaps)s 1626(spanned)s 2471(by)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 6389(u)m 240 fnt1 6321 6392(indicator)m 7232(is)s
-7444(set)s 7772(automatically)s 0 6104(and)m 404(cannot)s 1102(be)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 5321(3.20.)m 591(@Scale)s 240 fnt1 588 4889(This)m 1112(symbol)s
+0 8012(3.20.)m 591(@Scale)s
+[ /Dest /LOUTscale /DEST pdfmark
+
+[ /Dest /LOUT15_4082_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 4601(left)m 377(parameter:)s 220 fnt2 480 4100(1.0 @Scale Hello 2.0 @Scale Hello 0.5 @Scale Hello)m 240 fnt1
-0 3645(has)m 370(result)s gsave
-480 3137 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 3137 translate
+1124 5828 translate
2.0000 2.0000 scale
0 -54(Hello)m
grestore
gsave
-2292 3137 translate
+2292 5828 translate
0.5000 0.5000 scale
0 -54(Hello)m
grestore
-0 2574(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 2286(second)m 723(v)s 3(ertically:)k 220 fnt2 480 1785({0.5 2.0} @Scale Hello)m
-240 fnt1 0 1291(has)m 370(result)s gsave
-480 783 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 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 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 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
grestore
gsave
@@ -12040,57 +12937,49 @@ grestore
gsave
0 16840 translate
0.0000 rotate
-240 fnt6 1417 -1578(3.21.)m 1991(@Rotate)s 240 fnt5 10250 -1581(53)m
+240 fnt6 1417 -1580(3.20.)m 1991(@Scale)s 240 fnt5 10250 -1583(53)m
gsave
1417 -15423 translate
-240 fnt1 9066 13414 0 13305 240 288 60 LoutGraphic
+240 fnt1 9066 13412 0 13412 240 288 60 LoutGraphic
gsave
1 LoutMargSet
grestore
-0 13251(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 12963(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 12462({} @Scale { Hello w)m 2(or)k -3(ld })k 240 fnt1
-0 11968(has)m 370(result)s gsave
-0 10811 translate
-7.9609 7.9609 scale
-0 -54(Hello)m 583(w)s 2(orld)k
-
-grestore
-0 9907(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 9904(@Scale)m
-240 fnt1 4712 9907(has)m 5088(both)s 5576(a)s 220 fnt2
-5748 9904(@OneCol)m 240 fnt1 6765 9907(and)m 7175(a)s 220 fnt2
-7346 9904(@OneRo)m 3(w)k 240 fnt1 8483 9907(ef)m 6(fect,)k
-0 9619(and)m 404(the)s 752(marks)s 1387(of)s 1658(the)s
+0 13249(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 13246(@Scale)m
+240 fnt1 4712 13249(has)m 5088(both)s 5576(a)s 220 fnt2
+5748 13246(@OneCol)m 240 fnt1 6765 13249(and)m 7175(a)s 220 fnt2
+7346 13246(@OneRo)m 3(w)k 240 fnt1 8483 13249(ef)m 6(fect,)k
+0 12961(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 8826(3.21.)m 591(@Rotate)s 240 fnt1 542 8394(The)m
-220 fnt2 973 8391(@Rotate)m 240 fnt1 1897 8394(symbol)m 2660(will)s
+240 fnt5 0 12168(3.21.)m 591(@Rotate)s
+[ /Dest /LOUTrotate /DEST pdfmark
+
+[ /Dest /LOUT15_4082_pre_rota_1 /DEST pdfmark
+
+[ /Dest /LOUT15_4082_pre_rota_2 /DEST pdfmark
+240 fnt1 542 11736(The)m
+220 fnt2 973 11733(@Rotate)m 240 fnt1 1897 11736(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 8106(de)m 3(grees)k 778(\(positi)s 6(v)k 3(e)k
+8883(in)s 0 11448(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 7605(30d @Rotate { hello)m 8(, w)k 2(or)k -3(ld })k 240 fnt1
-0 7111(has)m 370(result)s gsave
-534 6158 translate
+480 10947(30d @Rotate { hello)m 8(, w)k 2(or)k -3(ld })k 240 fnt1
+0 10453(has)m 370(result)s gsave
+534 9500 translate
30.0000 rotate
0 -54(hello,)m 583(w)s 2(orld)k
grestore
-0 5632(Before)m 710(rotating)s 1511(the)s 1863(object,)s 220 fnt2
-2559 5629(@OneCol)m 240 fnt1 3576 5632(and)m 220 fnt2 3984 5629(@OneRo)m 3(w)k
-240 fnt1 5120 5632(are)m 5471(applied)s 6238(to)s 6482(it.)s
+0 8974(Before)m 710(rotating)s 1511(the)s 1863(object,)s 220 fnt2
+2559 8971(@OneCol)m 240 fnt1 3576 8974(and)m 220 fnt2 3984 8971(@OneRo)m 3(w)k
+240 fnt1 5120 8974(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 5344(whose)m 668(marks)s 1303(pass)s 1766(through)s 2568(the)s
+0 8686(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 4121 LoutGr2
+5889(crossed:)s 1587 283 340 113 240 288 60 480 7463 LoutGr2
grestore save gsave 200 dict begin lfigdict begin
grestore
1587 283 340 113 240 288 60 0 0 LoutGr2
@@ -12114,8 +13003,8 @@ grestore
grestore
end end restore
grestore
-240 fnt4 2547 4174(\336)m gsave
-3256 3967 translate
+240 fnt4 2547 7516(\336)m gsave
+3256 7309 translate
240 fnt1 1515 1037 379 267 240 288 60 LoutGraphic
gsave
grestore save gsave 200 dict begin lfigdict begin
@@ -12170,30 +13059,53 @@ grestore
grestore
end end restore
grestore
-240 fnt1 0 3516(As)m
+240 fnt1 0 6858(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 3228(quite)m 534(a)s
+7293(de)s 3(grees)k 8079(introduces)s 0 6570(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 2720(-30d)m 968(@Rotate)s 1890(30d)s
-2305(@Rotate)s 240 fnt6 3286 2725(object)m 240 fnt1 0 2222(is)m
+5115(of)s 220 fnt2 480 6062(-30d)m 968(@Rotate)s 1890(30d)s
+2305(@Rotate)s 240 fnt6 3286 6067(object)m 240 fnt1 0 5564(is)m
210(a)s 376(much)s 965(lar)s 4(ger)k 1577(object)s
-2221(than)s 240 fnt6 2690 2224(object)m 240 fnt1 3278 2222(,)m
+2221(than)s 240 fnt6 2690 5566(object)m 240 fnt1 3278 5564(,)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 1848(Rotation)m 1362(of)s 1634(objects)s 2363(containing)s 3427(recepti)s 6(v)k 3(e)k
+480 5190(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 1560(other)m 553(than)s 1024(multiples)s 1967(of)s
+8464(angles)s 0 4902(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 1269(@Wide)m 240 fnt1
-774 1272(and)m 220 fnt2 1178 1269(@High)m 240 fnt1 1897 1272(symbols:)m
-220 fnt2 480 771(30d @Rotate 5i @Wide 4i @High)m 480 483({ //1i @T)m 26(e)k 6(xtPlace)k
-
+8118(clear)s 8644(with)s 220 fnt2 0 4611(@Wide)m 240 fnt1
+774 4614(and)m 220 fnt2 1178 4611(@High)m 240 fnt1 1897 4614(symbols:)m
+220 fnt2 480 4113(30d @Rotate 5i @Wide 4i @High)m 480 3825({ //1i @T)m 26(e)k 6(xtPlace)k
+480 3537( //1i)m 480 3249(})m 240 fnt1 0 2755(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 2464(@T)m 26(e)k 6(xtPlace)k
+240 fnt1 1218 2467(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 1674(3.22.)m 591(@Backgr)s 4(ound)k
+
+[ /Dest /LOUTbackground /DEST pdfmark
+
+[ /Dest /LOUT15_4082_pre_back_1 /DEST pdfmark
+240 fnt1 577 1197(The)m 220 fnt2 1042 1194(@Bac)m 4(kg)k 2(round)k
+240 fnt1 2515 1197(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 909(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 621(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
grestore
gsave
1417 -15423 translate
@@ -12244,95 +13156,113 @@ 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 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( //1i)m
-480 12919(})m 240 fnt1 0 12425(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 12134(@T)m 26(e)k 6(xtPlace)k 240 fnt1
-1218 12137(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 11344(3.22.)m 591(@Backgr)s 4(ound)k 240 fnt1
-577 10867(The)m 220 fnt2 1042 10864(@Bac)m 4(kg)k 2(round)k
-240 fnt1 2515 10867(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 10579(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 10291(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 9498(3.23.)m 591(@K)s 6(er)k 3(nShrink)k
-240 fnt1 541 9066(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 8778(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 8490(right)m
-511(parameter)s 1525(w)s 2(as)k 1946(immediately)s 240 fnt6
-3194 8492(followed)m 240 fnt1 4084 8490(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 7989(.)m 13( @K)k 8(er)k -5(nShr)k -3(ink P)k
-240 fnt1 0 7534(has)m 370(result)s 104 158 0 54 240 288 60 480 7086 LoutGr2
-LoutBox stroke
+240 fnt5 0 13203(3.23.)m
+591(@K)s 6(er)k 3(nShrink)k
+[ /Dest /LOUTkernshrink /DEST pdfmark
+
+[ /Dest /LOUT15_4082_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 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 12195(right)m 511(parameter)s 1525(w)s 2(as)k
+1946(immediately)s 240 fnt6 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 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 6635(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 6347(with)m 482(`P')s 806(alone:)s
-130 158 0 54 240 288 60 480 5898 LoutGr2
-LoutBox stroke
+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 5447(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 5159(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 4785(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 0 4497(formatting)m 1061(package.)s
-240 fnt5 0 3704(3.24.)m 591(@Common,)s 1872(@Rump,)s 2847(and)s
-3288(@Meld)s 240 fnt1 540 3227(The)m 220 fnt2 968 3224(@Common)m
-240 fnt1 2127 3227(and)m 220 fnt2 2531 3224(@Rump)m 240 fnt1
-3391 3227(symbols)m 4240(compare)s 5119(tw)s 2(o)k 5529(paragraph)s
-6542(objects:)s 220 fnt2 480 2726({ Aardv)m 5(ar)k -3(k, 29 } @Common { Aardv)k 5(ar)k -3(k, 359 })k
-240 fnt1 0 2232(If)m 234(either)s 842(parameter)s 1860(is)s
+7555(the)s 7912(Eq)s 8245(equation)s 0 8202(formatting)m 1061(package.)s
+240 fnt5 0 7409(3.24.)m 591(@Common,)s 1872(@Rump,)s 2847(and)s
+3288(@Meld)s
+[ /Dest /LOUTrump /DEST pdfmark
+
+[ /Dest /LOUT15_4082_pre_rump_1 /DEST pdfmark
+
+[ /Dest /LOUT15_4082_pre_rump_2 /DEST pdfmark
+
+[ /Dest /LOUT15_4082_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 1944(The)m
-418(result)s 998(of)s 220 fnt2 1259 1941(@Common)m 240 fnt1
-2408 1944(is)m 2608(the)s 2946(common)s 3831(pre\207x)s 4433(of)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 1656(which)m
+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 1653(Aardv)m 5(ar)k -3(k,)k
-240 fnt1 7949 1656(.)m 8111(The)s 8536(result)s 0 1368(of)m
-220 fnt2 271 1365(@Rump)m 240 fnt1 1131 1368(is)m 1341(that)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 1365(@Common)m 240 fnt1 7618 1368(;)m 7730(the)s
-8078(result)s 8668(of)s 220 fnt2 480 867({ Aardv)m 5(ar)k -3(k, 29 } @Rump { Aardv)k 5(ar)k -3(k, 359 })k
-240 fnt1 0 371(is)m 220 fnt2 210 368(359)m 240 fnt1
-567 371(.)m
+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
+947 2087(@Meld)m 240 fnt1 1732 2090(symbol)m 2531(returns)s 3284(the)s
+3671(minimum)s 4700(meld)s 5275(of)s 5585(tw)s 2(o)k
+6034(paragraphs,)s 7229(that)s 7686(is)s 7935(the)s 8323(shortest)s
+0 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
@@ -12383,84 +13313,92 @@ gsave
240 fnt6 1417 -1580(3.24.)m 1991(@Common,)s 3170(@Rump,)s 4042(and)s
4468(@Meld)s 240 fnt5 10250 -1583(55)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
-480 13205(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 13202(@Common)m 240 fnt1 6889 13205(will)m
-7303(be)s 7572(an)s 7843(empty)s 8482(object)s 0 12917(and)m
-400(the)s 744(result)s 1330(of)s 220 fnt2 1597 12914(@Rump)m
-240 fnt1 2453 12917(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 12626(@Common)m 240 fnt1 1159 12629(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 12626(@Rump)m
-240 fnt1 5810 12629(will)m 6236(be)s 6518(an)s 6801(empty)s
-7453(object.)s 480 12255(The)m 933(only)s 1438(kno)s 6(wn)k
-2167(use)s 2567(for)s 220 fnt2 2930 12252(@Rump)m 240 fnt1
-3815 12255(and)m 220 fnt2 4244 12252(@Common)m 240 fnt1 5428 12255(is)m
-5663(to)s 5927(implement)s 7034(mer)s 4(ged)k 7830(inde)s 3(x)k
-8439(entries)s 0 11967(\(Section)m 853(2.8\).)s 480 11593(The)m 220 fnt2
-947 11590(@Meld)m 240 fnt1 1732 11593(symbol)m 2531(returns)s 3284(the)s
-3671(minimum)s 4700(meld)s 5275(of)s 5585(tw)s 2(o)k
-6034(paragraphs,)s 7229(that)s 7686(is)s 7935(the)s 8323(shortest)s
-0 11305(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 10804({ Aardv)m 5(ar)k -3(k , 1 , 2 } @Meld { Aardv)k 5(ar)k -3(k , 2 , 3 })k
-240 fnt1 0 10310(produces)m 480 9807(Aardv)m 6(ark)k 1438(,)s
-1545(1)s 1700(,)s 1807(2)s 1981(,)s 2088(3)s
-0 9323(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 9035(e)m 6(v)k 3(erything)k 1076(not)s
-1451(in)s 1704(the)s 2061(lcs)s 2387(plus)s 2846(one)s
-3257(cop)s 2(y)k 3785(of)s 4065(e)s 6(v)k 3(erything)k
+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
+1076(not)s 1451(in)s 1704(the)s 2061(lcs)s 2387(plus)s
+2846(one)s 3257(cop)s 2(y)k 3785(of)s 4065(e)s 6(v)k 3(erything)k
5142(in)s 5394(the)s 5751(lcs.)s 6190(This)s 6675(function)s
-7539(is)s 7758(well-suited)s 8887(to)s 0 8747(melding)m 830(comple)s 3(x)k
+7539(is)s 7758(well-suited)s 8887(to)s 0 12629(melding)m 830(comple)s 3(x)k
1698(inde)s 3(x)k 2274(entries.)s 3067(Note)s 3580(that)s
3990(there)s 4515(must)s 5033(be)s 5307(a)s 5465(non-zero)s
6360(amount)s 7131(of)s 7394(space)s 7973(before)s 8631(each)s
-0 8459(comma,)m 805(otherwise)s 1783(each)s 2271(will)s 2690(become)s
+0 12341(comma,)m 805(otherwise)s 1783(each)s 2271(will)s 2690(become)s
3484(part)s 3908(of)s 4172(the)s 4513(preceding)s 5502(w)s 2(ord,)k
-6093(and,)s 6539(since)s 220 fnt2 7079 8456(@Meld)m 240 fnt1
-7818 8459(compares)m 8778(the)s 0 8171(tw)m 2(o)k 410(paragraphs)s
+6093(and,)s 6539(since)s 220 fnt2 7079 12338(@Meld)m 240 fnt1
+7818 12341(compares)m 8778(the)s 0 12053(tw)m 2(o)k 410(paragraphs)s
1510(w)s 2(ord)k 2058(by)s 2352(w)s 2(ord,)k
2949(the)s 3297(result)s 3887(will)s 4313(be)s 4595(dif)s 6(ferent)k
5470(and)s 5874(less)s 6283(satisf)s 2(actory)k 15(.)k
-240 fnt5 0 7378(3.25.)m 591(@Insert)s 240 fnt1 541 6946(The)m
-220 fnt2 970 6943(@Inser)m -8(t)k 240 fnt1 1808 6946(symbol)m
+240 fnt5 0 11260(3.25.)m 591(@Insert)s
+[ /Dest /LOUTinsert /DEST pdfmark
+
+[ /Dest /LOUT15_4082_pre_inse_1 /DEST pdfmark
+240 fnt1 541 10828(The)m
+220 fnt2 970 10825(@Inser)m -8(t)k 240 fnt1 1808 10828(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 6658(right)m
-511(parameter:)s 220 fnt2 480 6157(X @Inser)m -8(t { A B // C // D })k 240 fnt1
-0 5663(is)m 210(equi)s 6(v)k 6(alent)k 1254(to)s
-220 fnt2 480 5162({ XA B // C // D })m 240 fnt1 0 4668(Notice)m 707(that)s
+7130(\207rst)s 7563(paragraph)s 8577(of)s 8850(its)s 0 10540(right)m
+511(parameter:)s 220 fnt2 480 10039(X @Inser)m -8(t { A B // C // D })k 240 fnt1
+0 9545(is)m 210(equi)s 6(v)k 6(alent)k 1254(to)s
+220 fnt2 480 9044({ XA B // C // D })m 240 fnt1 0 8550(Notice)m 707(that)s
1139(a)s 1320(zero-width)s 2426(space)s 3028(separates)s 220 fnt2
-3968 4665(X)m 240 fnt1 4185 4668(from)m 4723(the)s 5085(\207rst)s
+3968 8547(X)m 240 fnt1 4185 8550(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 4380(required)m 857(it)s 1052(must)s
+8314(space)s 8916(is)s 0 8262(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 4377(X)m 240 fnt1 3960 4380(.)m
-4127(The)s 220 fnt2 4558 4377(@Inser)m -8(t)k 240 fnt1
-5397 4380(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 4092(right)m
+3544(of)s 220 fnt2 3818 8259(X)m 240 fnt1 3960 8262(.)m
+4127(The)s 220 fnt2 4558 8259(@Inser)m -8(t)k 240 fnt1
+5397 8262(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 7974(right)m
511(parameter)s 1525(after)s 2021(e)s 6(v)k 6(aluation.)k
-480 3718(The)m 917(only)s 1407(kno)s 6(wn)k 2121(use)s
+480 7600(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 3717(Figur)m 4(e)k 7355(6)s 240 fnt1 7538 3718(to)m
-7787(the)s 8145(front)s 8679(of)s 8960(a)s 0 3430(multi-paragraph)m
-1596(caption.)s 240 fnt5 0 2637(3.26.)m 591(@OneOf)s 240 fnt1
-534 2205(The)m 220 fnt2 956 2202(@OneOf)m 240 fnt1 1877 2205(symbol)m
+6616 7599(Figur)m 4(e)k 7355(6)s 240 fnt1 7538 7600(to)m
+7787(the)s 8145(front)s 8679(of)s 8960(a)s 0 7312(multi-paragraph)m
+1596(caption.)s 240 fnt5 0 6519(3.26.)m 591(@OneOf)s
+[ /Dest /LOUToneof /DEST pdfmark
+
+[ /Dest /LOUT15_4082_pre_oneo_1 /DEST pdfmark
+240 fnt1
+534 6087(The)m 220 fnt2 956 6084(@OneOf)m 240 fnt1 1877 6087(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 1917(its)m 276(result:)s
-220 fnt2 480 1466(@OneOf {)m 480 1178( @ResultA)m 480 890( @ResultB)m 480 602( @ResultC)m
-480 314(})m
+7364(right)s 7869(parameter)s 8876(as)s 0 5799(its)m 276(result:)s
+220 fnt2 480 5348(@OneOf {)m 480 5060( @ResultA)m 480 4772( @ResultB)m 480 4484( @ResultC)m
+480 4196(})m 240 fnt1 0 3702(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 3414(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 3411(@OneOf)m 240 fnt1 4172 3414(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 3126(is)m 220 fnt2 222 3123(@SomeT)m 26(arget)k
+240 fnt1 1622 3126(,)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 3123(@ResultA)m 240 fnt1 5613 3126(if)m 5843(it)s
+6047(contains)s 220 fnt2 6908 3123(@SomeT)m 26(arget)k 240 fnt1
+8308 3126(,)m 8427(or)s 8699(else)s 220 fnt2 0 2835(@ResultB)m
+240 fnt1 1042 2838(if)m 1260(it)s 1453(contains)s 220 fnt2
+2302 2835(@SomeT)m 26(arget)k 240 fnt1 3702 2838(,)m 3810(or)s
+4070(else)s 220 fnt2 4498 2835(@ResultC)m 240 fnt1 5552 2838(\(whether)m
+6462(or)s 6722(not)s 7089(it)s 7282(contains)s 8131(the)s
+8480(tar)s 4(get,)k 0 2550(or)m 259(if)s 476(there)s
+1009(is)s 1219(no)s 1512(tar)s 4(get\).)k 480 2176(Use)m
+930(of)s 220 fnt2 1224 2173(@OneOf)m 240 fnt1 2174 2176(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 1888(this)m 396(e)s 3(xample:)k 220 fnt2
+480 1387(def @Recursiv)m 5(e {)k 480 811( def @ChoiceA { @APlace // @Recursiv)m 5(e })k 480 235( def @ChoiceB { @BPlace // @Recursiv)m 5(e })k
+
grestore
gsave
1417 -15423 translate
@@ -12511,80 +13449,81 @@ gsave
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
+240 fnt1 9066 13368 0 13264 240 288 60 LoutGraphic
gsave
0 LoutMargSet
grestore
-0 13205(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 12917(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 12914(@OneOf)m
-240 fnt1 4172 12917(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 12629(is)m 220 fnt2
-222 12626(@SomeT)m 26(arget)k 240 fnt1 1622 12629(,)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 12626(@ResultA)m 240 fnt1
-5613 12629(if)m 5843(it)s 6047(contains)s 220 fnt2 6908 12626(@SomeT)m 26(arget)k
-240 fnt1 8308 12629(,)m 8427(or)s 8699(else)s 220 fnt2
-0 12338(@ResultB)m 240 fnt1 1042 12341(if)m 1260(it)s 1453(contains)s
-220 fnt2 2302 12338(@SomeT)m 26(arget)k 240 fnt1 3702 12341(,)m
-3810(or)s 4070(else)s 220 fnt2 4498 12338(@ResultC)m 240 fnt1
-5552 12341(\(whether)m 6462(or)s 6722(not)s 7089(it)s 7282(contains)s
-8131(the)s 8480(tar)s 4(get,)k 0 12053(or)m 259(if)s
-476(there)s 1009(is)s 1219(no)s 1512(tar)s 4(get\).)k
-480 11679(Use)m 930(of)s 220 fnt2 1224 11676(@OneOf)m 240 fnt1
-2174 11679(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 11391(this)m 396(e)s 3(xample:)k 220 fnt2
-480 10890(def @Recursiv)m 5(e {)k 480 10314( def @ChoiceA { @APlace // @Recursiv)m 5(e })k 480 9738( def @ChoiceB { @BPlace // @Recursiv)m 5(e })k
-480 9162( @OneOf {)m 480 8874( @ChoiceA)m 480 8586( @ChoiceB)m 480 8298( })m 480 8010(})m
-240 fnt1 0 7516(Lout)m 523(belie)s 6(v)k 3(es)k
-1360(that)s 1790(e)s 3(xpanding)k 220 fnt2 2849 7513(@Recursiv)m 5(e)k
-240 fnt1 4106 7516(is)m 4328(the)s 4687(right)s 5210(thing)s
+220 fnt2 480 13207( @OneOf {)m
+480 12919( @ChoiceA)m 480 12631( @ChoiceB)m 480 12343( })m 480 12055(})m 240 fnt1
+0 11561(Lout)m 523(belie)s 6(v)k 3(es)k 1360(that)s
+1790(e)s 3(xpanding)k 220 fnt2 2849 11558(@Recursiv)m 5(e)k
+240 fnt1 4106 11561(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 7228(the)m 380(g)s 1(alle)k 3(y)k
-1046(tar)s 4(gets)k 220 fnt2 1762 7225(@APlace)m 240 fnt1
-2763 7228(and)m 220 fnt2 3199 7225(@BPlace)m 240 fnt1 4108 7228(.)m
-4305(When)s 4966(searching)s 5968(for)s 220 fnt2 6338 7225(@BPlace)m
-240 fnt1 7339 7228(this)m 7768(leads)s 8342(Lout)s 8887(to)s
-0 6940(e)m 3(xpand)k 220 fnt2 760 6937(@Recursiv)m 5(e)k
-240 fnt1 1945 6940(,)m 2065(then)s 220 fnt2 2547 6937(@ChoiceA)m
-240 fnt1 3596 6940(,)m 3717(then)s 4199(the)s 220 fnt2
-4560 6937(@Recursiv)m 5(e)k 240 fnt1 5818 6940(symbol)m 6592(within)s
-220 fnt2 7273 6937(@ChoiceA)m 240 fnt1 8322 6940(,)m 8442(and)s
-8860(so)s 0 6652(on)m 320(in\207nitely)s 15(.)k 1355(This)s
+8240(either)s 8855(of)s 0 11273(the)m 380(g)s 1(alle)k 3(y)k
+1046(tar)s 4(gets)k 220 fnt2 1762 11270(@APlace)m 240 fnt1
+2763 11273(and)m 220 fnt2 3199 11270(@BPlace)m 240 fnt1 4108 11273(.)m
+4305(When)s 4966(searching)s 5968(for)s 220 fnt2 6338 11270(@BPlace)m
+240 fnt1 7339 11273(this)m 7768(leads)s 8342(Lout)s 8887(to)s
+0 10985(e)m 3(xpand)k 220 fnt2 760 10982(@Recursiv)m 5(e)k
+240 fnt1 1945 10985(,)m 2065(then)s 220 fnt2 2547 10982(@ChoiceA)m
+240 fnt1 3596 10985(,)m 3717(then)s 4199(the)s 220 fnt2
+4560 10982(@Recursiv)m 5(e)k 240 fnt1 5818 10985(symbol)m 6592(within)s
+220 fnt2 7273 10982(@ChoiceA)m 240 fnt1 8322 10985(,)m 8442(and)s
+8860(so)s 0 10697(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 6649(@NotRe)m 6(v)k 5(ealed)k
-240 fnt1 7291 6652(symbol)m 8074(to)s 8336(each)s 8855(of)s
-0 6364(the)m 357(inner)s 220 fnt2 918 6361(@Recursiv)m 5(e)k
-240 fnt1 2172 6364(symbols:)m 3146(these)s 3703(are)s 4059(then)s
+4283(by)s 4600(attaching)s 5552(a)s 220 fnt2 5741 10694(@NotRe)m 6(v)k 5(ealed)k
+240 fnt1 7291 10697(symbol)m 8074(to)s 8336(each)s 8855(of)s
+0 10409(the)m 357(inner)s 220 fnt2 918 10406(@Recursiv)m 5(e)k
+240 fnt1 2172 10409(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 6076(been)m 510(made)s 1085(to)s 1326(e)s 3(xpand)k
+8756(has)s 0 10121(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 5788(to)m 239(write)s 220 fnt2 480 5336(def @Recursiv)m 5(e {)k
-480 4760( @OneOf {)m 480 4472( @APlace)m 480 4184( @BPlace)m 480 3896( })m 480 3608( // @Recursiv)m 5(e)k
-480 3320(})m 240 fnt1 0 2826(b)m 4(ut)k 378(this)s
+0 9833(to)m 239(write)s 220 fnt2 480 9381(def @Recursiv)m 5(e {)k
+480 8805( @OneOf {)m 480 8517( @APlace)m 480 8229( @BPlace)m 480 7941( })m 480 7653( // @Recursiv)m 5(e)k
+480 7365(})m 240 fnt1 0 6871(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 2538(dif)m 6(fer)k
+7218(that)s 7652(are)s 8016(required)s 8887(to)s 0 6583(dif)m 6(fer)k
583(in)s 826(the)s 1174(tw)s 2(o)k 1584(cases.)s
-240 fnt5 0 1794(3.27.)m 591(@Next)s 240 fnt1 535 1362(The)m
-220 fnt2 957 1359(@Ne)m 6(xt)k 240 fnt1 1676 1362(symbol)m
+240 fnt5 0 5839(3.27.)m 591(@Next)s
+[ /Dest /LOUTnext /DEST pdfmark
+
+[ /Dest /LOUT15_4082_pre_next_1 /DEST pdfmark
+240 fnt1 535 5407(The)m
+220 fnt2 957 5404(@Ne)m 6(xt)k 240 fnt1 1676 5407(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 1074(hunts)m 570(through)s 1372(the)s 1720(parameter)s
+8934(it)s 0 5119(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 573(@Ne)m 6(xt \(3.99\))k
+220 fnt2 480 4618(@Ne)m 6(xt \(3.99\))k 240 fnt1 0 4122(has)m
+404(result)s 1029(\(3.100\).)s 1925(If)s 220 fnt2 2190 4119(@Ne)m 6(xt)k
+240 fnt1 2949 4122(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 3834(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 3831(@Ne)m 6(xt)k 240 fnt1 8336 3834(will)m
+8760(not)s 0 3546(increment)m 1015(a)s 1181(Roman)s 1930(numeral.)s
+240 fnt5 0 2803(3.28.)m 591(@Case)s
+[ /Dest /LOUTcase /DEST pdfmark
+
+[ /Dest /LOUT15_4082_pre_case_1 /DEST pdfmark
+
+[ /Dest /LOUT15_4082_pre_case_2 /DEST pdfmark
+240 fnt1 540 2371(The)m
+220 fnt2 968 2368(@Case)m 240 fnt1 1755 2371(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 1870(@Da)m 6(y @Case {)k
+480 1582( { 1 21 31 } @Y)m 4(ield st)k 480 1294( { 2 22 } @Y)m 4(ield nd)k 480 1006( { 3 23 } @Y)m 4(ield rd)k
+480 718( else @Y)m 4(ield th)k 480 430(})m
grestore
gsave
1417 -15423 translate
@@ -12639,94 +13578,95 @@ gsave
gsave
1 LoutMargSet
grestore
-0 13252(has)m 404(result)s 1029(\(3.100\).)s 1925(If)s 220 fnt2
-2190 13249(@Ne)m 6(xt)k 240 fnt1 2949 13252(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 12964(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 12961(@Ne)m 6(xt)k 240 fnt1
-8336 12964(will)m 8760(not)s 0 12676(increment)m 1015(a)s 1181(Roman)s
-1930(numeral.)s 240 fnt5 0 11933(3.28.)m 591(@Case)s 240 fnt1
-540 11501(The)m 220 fnt2 968 11498(@Case)m 240 fnt1 1755 11501(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 11000(@Da)m 6(y @Case {)k 480 10712( { 1 21 31 } @Y)m 4(ield st)k 480 10424( { 2 22 } @Y)m 4(ield nd)k
-480 10136( { 3 23 } @Y)m 4(ield rd)k 480 9848( else @Y)m 4(ield th)k 480 9560(})m
-240 fnt1 0 9066(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 9063(@Da)m 6(y)k 240 fnt1
-4274 9066(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 9063(@Da)m 6(y)k
-240 fnt1 7259 9066(is)m 7471(2)s 7646(or)s 7906(22,)s
-8254(etc.)s 8698(The)s 0 8778(ef)m 6(fect)k 594(is)s
+0 13252(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 13249(@Da)m 6(y)k 240 fnt1 4274 13252(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 13249(@Da)m 6(y)k
+240 fnt1 7259 13252(is)m 7471(2)s 7646(or)s 7906(22,)s
+8254(etc.)s 8698(The)s 0 12964(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 8490(a)m 171(sequence)s 1109(of)s 220 fnt2 1385 8487(@Y)m 4(ield)k
-240 fnt1 2143 8490(symbols,)m 3053(each)s 3553(with)s 4040(a)s
+0 12676(a)m 171(sequence)s 1109(of)s 220 fnt2 1385 12673(@Y)m 4(ield)k
+240 fnt1 2143 12676(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 8202(more)m 547(juxtapositions)s 1940(of)s 2211(simple)s
+8867(or)s 0 12388(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 7828(W)m 19(e)k 895(\207rst)s 1372(describe)s
+7476(object.)s 480 12014(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 7825(@Case)m 240 fnt1
-8703 7828(is)m 8960(a)s 0 7540(juxtaposition)m 1302(of)s 1568(one)s
+6492(parameter)s 7552(of)s 220 fnt2 7870 12011(@Case)m 240 fnt1
+8703 12014(is)m 8960(a)s 0 11726(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 7537(@Case)m 240 fnt1 7058 7540(is)m 7263(the)s
-7606(right)s 8112(parameter)s 0 7252(of)m 287(the)s 652(\207rst)s
-220 fnt2 1100 7249(@Y)m 4(ield)k 240 fnt1 1870 7252(whose)m
+220 fnt2 6275 11723(@Case)m 240 fnt1 7058 11726(is)m 7263(the)s
+7606(right)s 8112(parameter)s 0 11438(of)m 287(the)s 652(\207rst)s
+220 fnt2 1100 11435(@Y)m 4(ield)k 240 fnt1 1870 11438(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 6961(@Case)m
-240 fnt1 727 6964(,)m 834(or)s 1093(the)s 1441(special)s
-2159(v)s 6(alue)k 220 fnt2 2727 6961(else)m 240 fnt1
-3121 6964(.)m 3285(If)s 3515(there)s 4048(is)s 4258(no)s
-4551(such)s 220 fnt2 5047 6961(@Y)m 4(ield)k 240 fnt1
-5800 6964(it)m 5992(is)s 6202(an)s 6485(error)s 13(.)k
-480 6590(When)m 1133(the)s 1506(left)s 1908(parameter)s 2946(of)s
-220 fnt2 3242 6587(@Case)m 240 fnt1 4054 6590(is)m 4288(not)s
+7459(parameter)s 8490(of)s 8778(the)s 220 fnt2 0 11147(@Case)m
+240 fnt1 727 11150(,)m 834(or)s 1093(the)s 1441(special)s
+2159(v)s 6(alue)k 220 fnt2 2727 11147(else)m 240 fnt1
+3121 11150(.)m 3285(If)s 3515(there)s 4048(is)s 4258(no)s
+4551(such)s 220 fnt2 5047 11147(@Y)m 4(ield)k 240 fnt1
+5800 11150(it)m 5992(is)s 6202(an)s 6485(error)s 13(.)k
+480 10776(When)m 1133(the)s 1506(left)s 1908(parameter)s 2946(of)s
+220 fnt2 3242 10773(@Case)m 240 fnt1 4054 10776(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 6302(the)m 350(right)s
+7928(the)s 8301(result)s 8916(is)s 0 10488(the)m 350(right)s
864(parameter)s 1881(of)s 2155(the)s 2506(\207rst)s 220 fnt2
-2940 6299(@Y)m 4(ield)k 240 fnt1 3696 6302(whose)m 4367(left)s
-4746(parameter)s 5763(is)s 220 fnt2 5976 6299(else)m 240 fnt1
-6370 6302(,)m 6480(or)s 6742(an)s 7028(error)s 7554(otherwise.)s
-8650(This)s 0 6014(permits)m 767(e)s 3(xamples)k 1718(lik)s 2(e)k
-220 fnt2 480 5513(@RunningTitle @Case {)m 480 5225( dft @Y)m 4(ield @Title)k 480 4937( else @Y)m 4(ield @RunningTitle)k
-480 4649(})m 240 fnt1 0 4155(where)m 661(a)s 848(running)s
+2940 10485(@Y)m 4(ield)k 240 fnt1 3696 10488(whose)m 4367(left)s
+4746(parameter)s 5763(is)s 220 fnt2 5976 10485(else)m 240 fnt1
+6370 10488(,)m 6480(or)s 6742(an)s 7028(error)s 7554(otherwise.)s
+8650(This)s 0 10200(permits)m 767(e)s 3(xamples)k 1718(lik)s 2(e)k
+220 fnt2 480 9699(@RunningTitle @Case {)m 480 9411( dft @Y)m 4(ield @Title)k 480 9123( else @Y)m 4(ield @RunningTitle)k
+480 8835(})m 240 fnt1 0 8341(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 4152(dft)m 240 fnt1 5776 4155(\(which)m 6519(presumably)s 7710(means)s
-8393(that)s 8833(no)s 0 3867(running)m 798(title)s 1224(w)s 2(as)k
+5455 8338(dft)m 240 fnt1 5776 8341(\(which)m 6519(presumably)s 7710(means)s
+8393(that)s 8833(no)s 0 8053(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 3493(When)m 1126(a)s 1310(recepti)s 6(v)k 3(e)k
+480 7679(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 3490(@Case)m 240 fnt1 5552 3493(,)m 5677(it)s
+220 fnt2 4825 7676(@Case)m 240 fnt1 5552 7679(,)m 5677(it)s
5887(should)s 6601(be)s 6901(included)s 7801(in)s 8062(each)s
-8575(alter)s 8998(-)s 0 3205(nati)m 6(v)k 3(e,)k
+8575(alter)s 8998(-)s 0 7391(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 2917(symbol)m 755(will)s
+7198(predict)s 7934(whether)s 8778(the)s 0 7103(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 2629(symbol)m 764(will)s 1195(ne)s 6(v)k 3(er)k
+0 6815(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 2341(all)m 293(right)s 804(too.)s 240 fnt5
-0 1548(3.29.)m 591(@Moment)s 240 fnt1 480 1116(The)m 908(prede\207ned)s
-1976(symbol)s 220 fnt2 2736 1113(@Moment)m 240 fnt1 3808 1116(has)m
-4178(the)s 4526(follo)s 6(wing)k 5503(de\207nition:)s
+8916(is)s 0 6527(all)m 293(right)s 804(too.)s 240 fnt5
+0 5734(3.29.)m 591(@Moment)s
+[ /Dest /LOUTmoment /DEST pdfmark
+240 fnt1 480 5302(The)m 908(prede\207ned)s
+1976(symbol)s 220 fnt2 2736 5299(@Moment)m
+[ /Dest /LOUT15_4082_pre_mome_1 /DEST pdfmark
+240 fnt1 3808 5302(has)m
+4178(the)s 4526(follo)s 6(wing)k 5503(de\207nition:)s 220 fnt2
+480 4801(def @Moment)m 480 4513( named @T)m 26(ag {})k 480 4225( named @Second {})m 480 3937( named @Min)m 2(ute {})k
+480 3649( named @Hour {})m 480 3361( named @Da)m 6(y {})k 480 3073( named @Month {})m 480 2785( named @Y)m 30(ear {})k
+480 2497( named @Centur)m -6(y {})k 480 2209( named @W)m 6(eekDa)k 6(y {})k
+480 1921( named @Y)m 30(earDa)k 6(y {})k 480 1633( named @Da)m 6(ylightSa)k 4(ving {})k
+480 1345({})m 240 fnt1 0 851(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 848(@Moment)m 240 fnt1 7788 851(with)m 8273(tag)s
+220 fnt2 8622 848(no)m 3(w)k 240 fnt1 9019 851(,)m
+0 563(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
@@ -12777,79 +13717,104 @@ 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(def @Moment)m
-480 12919( named @T)m 26(ag {})k 480 12631( named @Second {})m 480 12343( named @Min)m 2(ute {})k
-480 12055( named @Hour {})m 480 11767( named @Da)m 6(y {})k 480 11479( named @Month {})m 480 11191( named @Y)m 30(ear {})k
-480 10903( named @Centur)m -6(y {})k 480 10615( named @W)m 6(eekDa)k 6(y {})k
-480 10327( named @Y)m 30(earDa)k 6(y {})k 480 10039( named @Da)m 6(ylightSa)k 4(ving {})k
-480 9751({})m 240 fnt1 0 9257(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 9254(@Moment)m 240 fnt1 7788 9257(with)m 8273(tag)s
-220 fnt2 8622 9254(no)m 3(w)k 240 fnt1 9019 9257(,)m
-0 8969(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 8404(@Second)m 240 fnt1 2482 8407(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 8073(@Min)m 2(ute)k
-240 fnt1 2482 8076(the)m 2830(current)s 3566(minute,)s 4337(between)s
-5191(00)s 5486(and)s 5890(59)s 220 fnt2 480 7763(@Hour)m
-240 fnt1 2482 7766(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 7453(@Da)m 6(y)k 240 fnt1 2482 7456(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 7124(@Month)m
-240 fnt1 2482 7127(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 6795(@Y)m 30(ear)k 240 fnt1 2482 6798(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 6466(@Centur)m -6(y)k 240 fnt1 2482 6469(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 6137(@W)m 6(eekDa)k 6(y)k
-240 fnt1 2482 6140(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 5806(@Y)m 30(earDa)k 6(y)k
-240 fnt1 2482 5809(the)m 2830(current)s 3566(day)s 3966(of)s
+220 fnt2 480 13143(@Second)m
+240 fnt1 2482 13146(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 12812(@Min)m 2(ute)k 240 fnt1 2482 12815(the)m 2830(current)s
+3566(minute,)s 4337(between)s 5191(00)s 5486(and)s 5890(59)s
+220 fnt2 480 12502(@Hour)m 240 fnt1 2482 12505(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 12192(@Da)m 6(y)k 240 fnt1
+2482 12195(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 11863(@Month)m 240 fnt1 2482 11866(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 11534(@Y)m 30(ear)k
+240 fnt1 2482 11537(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 11205(@Centur)m -6(y)k
+240 fnt1 2482 11208(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 10876(@W)m 6(eekDa)k 6(y)k 240 fnt1 2482 10879(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 10545(@Y)m 30(earDa)k 6(y)k
+240 fnt1 2482 10548(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 5477(@Da)m 6(ylightSa)k 4(ving)k
-240 fnt1 2482 5480(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 5192(sa)m 4(ving)k
-3156(currently)s 4072(in)s 4315(ef)s 6(fect)k 0 4631(Unix)m
-519(manual)s 1262(entries)s 1934(state)s 2411(that)s 220 fnt2
-2814 4628(@Second)m 240 fnt1 3813 4631(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 4343(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 3842(@Moment&&no)m 3(w @Open { @Da)k 6(y {@Months&&@Month}, @Centur)k -6(y{@Y)k 30(ear} })k
-240 fnt1 0 3344(produces)m 915(something)s 1965(lik)s 2(e)k
-2377(3)s 2541(June,)s 3087(2000)s 3622(gi)s 6(v)k 3(en)k
-4202(a)s 4368(suitable)s 5167(database)s 6046(of)s 6317(months.)s
-240 fnt5 0 2551(3.30.)m 591(@Null)s 240 fnt1 480 2119(This)m
-979(symbol)s 1762(pro)s 3(vides)k 2657(a)s 2846(con)s 9(v)k 3(enient)k
+6123(and)s 6527(365)s 220 fnt2 480 10216(@Da)m 6(ylightSa)k 4(ving)k
+240 fnt1 2482 10219(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 9931(sa)m 4(ving)k
+3156(currently)s 4072(in)s 4315(ef)s 6(fect)k
+[ /Dest /LOUT15_4082_pre_mome_2 /DEST pdfmark
+100 9370(Unix)m
+675(manual)s 1474(entries)s 2202(state)s 2735(that)s 220 fnt2
+3194 9367(@Second)m 240 fnt1 4250 9370(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 9082(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 8581(@Moment&&no)m 3(w @Open { @Da)k 6(y {@Months&&@Month}, @Centur)k -6(y{@Y)k 30(ear} })k
+240 fnt1 0 8083(produces)m 915(something)s 1965(lik)s 2(e)k
+2377(24)s 2671(June,)s 3217(2000)s 3752(gi)s 6(v)k 3(en)k
+4332(a)s 4498(suitable)s 5297(database)s 6176(of)s 6447(months.)s
+240 fnt5 0 7290(3.30.)m 591(@Null)s
+[ /Dest /LOUTnull /DEST pdfmark
+240 fnt1 480 6858(This)m
+979(symbol)s
+[ /Dest /LOUT15_4082_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 1831(there)m 544(is)s 765(a)s 942(concatenation)s 2339(symbol)s
-3110(preceding)s 220 fnt2 4117 1828(@Null)m 240 fnt1 4702 1831(,)m
-4821(the)s 220 fnt2 5180 1828(@Null)m 240 fnt1 5836 1831(and)m
-6252(the)s 6611(concatenation)s 8007(symbol)s 8779(are)s 0 1543(both)m
+0 6570(there)m 544(is)s 765(a)s 942(concatenation)s 2339(symbol)s
+3110(preceding)s 220 fnt2 4117 6567(@Null)m 240 fnt1 4702 6570(,)m
+4821(the)s 220 fnt2 5180 6567(@Null)m 240 fnt1 5836 6570(and)m
+6252(the)s 6611(concatenation)s 8007(symbol)s 8779(are)s 0 6282(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 1540(@Null)m
-240 fnt1 8298 1543(are)m 8643(both)s 0 1255(deleted.)m 794(Otherwise,)s
-220 fnt2 1883 1252(@Null)m 240 fnt1 2528 1255(becomes)m 3416(an)s
-3699(empty)s 4351(object.)s 480 881(These)m 1107(rules)s 1622(apply)s
+6714(it)s 6905(and)s 7307(the)s 220 fnt2 7654 6279(@Null)m
+240 fnt1 8298 6282(are)m 8643(both)s 0 5994(deleted.)m 794(Otherwise,)s
+220 fnt2 1883 5991(@Null)m 240 fnt1 2528 5994(becomes)m 3416(an)s
+3699(empty)s 4351(object.)s 480 5620(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 380(...)m 13( //1vx @Null |0.5i ...)k
-
+7440(e)s 3(xample,)k 8354(in)s 220 fnt2 480 5119(...)m 13( //1vx @Null |0.5i ...)k
+240 fnt1 0 4664(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 4661(@Null)m 240 fnt1 5628 4664(that)m 6057(disappears,)s 7184(because)s
+8008(in)s 8262(the)s 8621(fully)s 0 4376(parenthesized)m 1372(v)s 3(ersion)k
+220 fnt2 480 3875(...)m 13( //1vx { @Null |0.5i ...)k 13( })k 240 fnt1
+0 3381(there)m 533(is)s 743(no)s 1036(concatenation)s 2421(symbol)s
+3181(preceding)s 4177(the)s 220 fnt2 4525 3378(@Null)m 240 fnt1
+5110 3381(.)m 240 fnt5 0 2588(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 2111(These)m
+1131(symbols)s
+[ /Dest /LOUT15_4082_pre_gall_1 /DEST pdfmark
+
+[ /Dest /LOUT15_4082_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 1823(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 1820(@F)m 6(orceGalle)k 4(y)k 240 fnt1 5189 1823(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 1535(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 1532(f)m 6(orce into)k 240 fnt1 6202 1535(.)m
+6353(See)s 6740(Section)s 7501(2.7)s 7835(for)s 8160(a)s
+8312(detailed)s 0 1247(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
@@ -12904,130 +13869,145 @@ gsave
7401(@SetHeaderComponent,)s 1991 -1868(and)m 2417(@ClearHeaderComponent)s 240 fnt5 10249 -1583(59)m
gsave
1417 -15423 translate
-240 fnt1 9066 13080 0 12971 240 288 60 LoutGraphic
+240 fnt1 9066 13080 0 13080 240 288 60 LoutGraphic
gsave
1 LoutMargSet
grestore
-0 12917(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 12914(@Null)m
-240 fnt1 5628 12917(that)m 6057(disappears,)s 7184(because)s 8008(in)s
-8262(the)s 8621(fully)s 0 12629(parenthesized)m 1372(v)s 3(ersion)k
-220 fnt2 480 12128(...)m 13( //1vx { @Null |0.5i ...)k 13( })k 240 fnt1
-0 11634(there)m 533(is)s 743(no)s 1036(concatenation)s 2421(symbol)s
-3181(preceding)s 4177(the)s 220 fnt2 4525 11631(@Null)m 240 fnt1
-5110 11634(.)m 240 fnt5 0 10841(3.31.)m 591(@Galley)s 1534(and)s
-1975(@F)s 6(or)k 4(ceGalley)k 240 fnt1 480 10364(These)m
-1131(symbols)s 2004(both)s 2511(act)s 2874(as)s 3148(a)s
-3338(placeholder)s 4538(for)s 4900(a)s 5090(g)s 1(alle)k 3(y)k 15(.)k
-5844(That)s 6366(is,)s 6656(the)s 3(y)k 7144(may)s
-7634(be)s 7940(replaced)s 8832(by)s 0 10076(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 10073(@F)m 6(orceGalle)k 4(y)k 240 fnt1 5189 10076(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 9788(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 9785(f)m 6(orce into)k 240 fnt1 6202 9788(.)m
-6353(See)s 6740(Section)s 7501(2.7)s 7835(for)s 8160(a)s
-8312(detailed)s 0 9500(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 8707(3.32.)m 591(@BeginHeaderComponent,)s
-3466(@EndHeaderComponent,)s 6182(@SetHeaderComponent,)s 591 8419(and)m 1032(@ClearHeaderComponent)s 240 fnt1
-480 7942(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 7160(top)s 7523(of)s 7798(the)s 8151(displayed)s
-0 7654(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 7651(@Tb)m 4(l)k 240 fnt1 5917 7654(table)m 6434(formatting)s
-7493(package)s 8330(to)s 8566(place)s 0 7366(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 6992(F)m 3(ormally)k 15(,)k
+240 fnt5 0 12915(3.32.)m 591(@BeginHeaderComponent,)s 3466(@EndHeaderComponent,)s 6182(@SetHeaderComponent,)s
+591 12627(and)m 1032(@ClearHeaderComponent)s
+[ /Dest /LOUTheader_comp /DEST pdfmark
+240 fnt1 480 12150(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 /LOUT15_4082_pre_head_1 /DEST pdfmark
+7160(top)s
+7523(of)s 7798(the)s 8151(displayed)s 0 11862(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 11859(@Tb)m 4(l)k
+240 fnt1 5917 11862(table)m 6434(formatting)s 7493(package)s 8330(to)s
+8566(place)s 0 11574(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 11200(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 6704(together)m 845(with)s 1330(an)s
+7859(\(Section)s 8698(2.7\))s 0 10912(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 6416(component)m 1125(looks)s 1696(e)s 3(xactly)k
+8260(a)s 8429(header)s 0 10624(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 6128(whether)m 830(the)s 1178(component)s
+8671(is)s 8883(in)s 0 10336(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 5754(Ev)m 3(ery)k
+4228(if)s 4445(so)s 4711(where.)s 480 9962(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 5466(more)m 553(header)s 1257(components.)s
+8395(zero)s 8867(or)s 0 9674(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 5178(occup)m 2(y)k 736(an)s
+8205(not)s 8578(itself)s 0 9386(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 4890(with)m 482(the)s 830(\207rst)s 1261(ordinary)s 2125(component)s
+0 9098(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 4516(The)m 914(condition)s 1881(`and)s
+7934(it)s 8126(\207rst.)s 480 8724(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 4228(g)m 1(alle)k 3(y')k
+6395(component)s 7525(of)s 7802(the)s 8156(enclosing)s 0 8436(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 3940(printed)m 739(where)s 1384(the)s 1736(section)s
+8760(not)s 0 8148(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 3652(onto)m 481(pages.)s
+7168(chapter)s 7936(is)s 8151(promoted)s 0 7860(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 3364(at)m 232(all,)s 577(so)s
+8286(not)s 8655(split)s 0 7572(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 2990(The)m 896(one)s
+2832(no)s 3125(interest)s 3887(there.)s 480 7198(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 2702(component)m
+6326(components)s 7521(of)s 7780(each)s 8262(ordinary)s 0 6910(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 0 2414(those)m
+7632(are)s 7980(the)s 8328(same)s 8876(as)s 0 6622(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 1915(C)m 168 fnt6 645 1828(i)m 240 fnt4
-773 1907(:)m 240 fnt6 903 1915(H)m 168 fnt4 1086 1822(1)m
-240 fnt4 1164 1907(,)m 240 fnt6 1271 1915(H)m 168 fnt4
-1454 1822(2)m 240 fnt4 1546 1907(,)m 1653(\274)s 1951(,)s
-240 fnt6 2058 1915(H)m 168 fnt6 2241 1828(n)m 240 fnt6
-480 1627(/)m 480 1339(C)m 168 fnt6 645 1252(i)m 168 fnt4
-711 1246(+)m 824(1)s 240 fnt4 974 1331(:)m 240 fnt6
-1104 1339(H)m 168 fnt4 1287 1246(1)m 240 fnt4 1365 1331(,)m
-240 fnt6 1472 1339(H)m 168 fnt4 1655 1246(2)m 240 fnt4
-1747 1331(,)m 1854(\274)s 2152(,)s 240 fnt6 2259 1339(H)m
-168 fnt6 2442 1252(n)m 240 fnt1 0 795(which)m 642(may)s
+240 fnt6 480 6123(C)m 168 fnt6 645 6036(i)m 240 fnt4
+773 6115(:)m 240 fnt6 903 6123(H)m 168 fnt4 1086 6030(1)m
+240 fnt4 1164 6115(,)m 240 fnt6 1271 6123(H)m 168 fnt4
+1454 6030(2)m 240 fnt4 1546 6115(,)m 1653(\274)s 1951(,)s
+240 fnt6 2058 6123(H)m 168 fnt6 2241 6036(n)m 240 fnt6
+480 5835(/)m 480 5547(C)m 168 fnt6 645 5460(i)m 168 fnt4
+711 5454(+)m 824(1)s 240 fnt4 974 5539(:)m 240 fnt6
+1104 5547(H)m 168 fnt4 1287 5454(1)m 240 fnt4 1365 5539(,)m
+240 fnt6 1472 5547(H)m 168 fnt4 1655 5454(2)m 240 fnt4
+1747 5539(,)m 1854(\274)s 2152(,)s 240 fnt6 2259 5547(H)m
+168 fnt6 2442 5460(n)m 240 fnt1 0 5003(which)m 642(may)s
1108(be)s 1391(read:)s 1908(`If)s 2217(ordinary)s 3082(component)s
-240 fnt6 4206 797(C)m 168 fnt6 4371 710(i)m 240 fnt1
-4475 795(has)m 4846(header)s 5543(component)s 6667(sequence)s 240 fnt6
-7601 797(H)m 168 fnt4 7784 704(1)m 240 fnt4 7862 789(,)m
-240 fnt6 7969 797(H)m 168 fnt4 8152 704(2)m 240 fnt4
-8244 789(,)m 8351(\274)s 8649(,)s 240 fnt6 8756 797(H)m
-168 fnt6 8939 710(n)m 240 fnt1 9019 795(,)m 0 507(then)m
-468(its)s 742(successor)s 1717(component)s 240 fnt6 2839 509(C)m
-168 fnt6 3004 422(i)m 168 fnt4 3070 416(+)m 3183(1)s
-240 fnt1 3308 507(has)m 3676(header)s 4372(component)s 5494(sequence)s
-240 fnt6 6426 509(H)m 168 fnt4 6609 416(1)m 240 fnt4
-6687 501(,)m 240 fnt6 6794 509(H)m 168 fnt4 6977 416(2)m
-240 fnt4 7069 501(,)m 7176(\274)s 7474(,)s 240 fnt6
-7581 509(H)m 168 fnt6 7764 422(n)m 240 fnt1 7902 507(also.)m 16(')k
-8501(Using)s 0 219(this)m 396(notation,)s 1287(we)s 1622(may)s
+240 fnt6 4206 5005(C)m 168 fnt6 4371 4918(i)m 240 fnt1
+4475 5003(has)m 4846(header)s 5543(component)s 6667(sequence)s 240 fnt6
+7601 5005(H)m 168 fnt4 7784 4912(1)m 240 fnt4 7862 4997(,)m
+240 fnt6 7969 5005(H)m 168 fnt4 8152 4912(2)m 240 fnt4
+8244 4997(,)m 8351(\274)s 8649(,)s 240 fnt6 8756 5005(H)m
+168 fnt6 8939 4918(n)m 240 fnt1 9019 5003(,)m 0 4715(then)m
+468(its)s 742(successor)s 1717(component)s 240 fnt6 2839 4717(C)m
+168 fnt6 3004 4630(i)m 168 fnt4 3070 4624(+)m 3183(1)s
+240 fnt1 3308 4715(has)m 3676(header)s 4372(component)s 5494(sequence)s
+240 fnt6 6426 4717(H)m 168 fnt4 6609 4624(1)m 240 fnt4
+6687 4709(,)m 240 fnt6 6794 4717(H)m 168 fnt4 6977 4624(2)m
+240 fnt4 7069 4709(,)m 7176(\274)s 7474(,)s 240 fnt6
+7581 4717(H)m 168 fnt6 7764 4630(n)m 240 fnt1 7902 4715(also.)m 16(')k
+8501(Using)s 0 4427(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
+6556(component)s 7680(sequences:)s 240 fnt6 480 3928(C)m 168 fnt6
+645 3841(i)m 240 fnt4 773 3920(:)m 240 fnt6 903 3928(H)m
+168 fnt4 1086 3835(1)m 240 fnt4 1164 3920(,)m 240 fnt6
+1271 3928(H)m 168 fnt4 1454 3835(2)m 240 fnt4 1546 3920(,)m
+1653(\274)s 1951(,)s 240 fnt6 2058 3928(H)m 168 fnt6
+2241 3841(n)m 240 fnt6 480 3640(/)m 480 3352(gap)m 220 fnt2
+905 3347(@BeginHeaderComponent)m 240 fnt6 3609 3352(H)m 168 fnt6 3792 3265(n)m
+168 fnt4 3894 3259(+)m 4007(1)s 240 fnt6 480 3064(/)m
+480 2776(C)m 168 fnt6 645 2689(i)m 168 fnt4 711 2683(+)m
+824(1)s 240 fnt4 974 2768(:)m 240 fnt6 1104 2776(H)m
+168 fnt4 1287 2683(1)m 240 fnt4 1365 2768(,)m 240 fnt6
+1472 2776(H)m 168 fnt4 1655 2683(2)m 240 fnt4 1747 2768(,)m
+1854(\274)s 2152(,)s 240 fnt6 2259 2776(H)m 168 fnt6
+2442 2689(n)m 240 fnt4 2534 2768(,)m 240 fnt6 2641 2776(H)m
+168 fnt6 2824 2689(n)m 168 fnt4 2926 2683(+)m 3039(1)s
+240 fnt1 0 2232(That)m 478(is,)s 220 fnt2 723 2229(@BeginHeaderComponent)m
+240 fnt1 3394 2232(occup)m 2(ying)k 4422(an)s 4684(entire)s
+
+[ /Dest /LOUT15_4082_pre_head_2 /DEST pdfmark
+5263(component)s 6366(appends)s 7181(a)s 7326(header)s 8002(component)s
+0 1944(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 1656(is)m
+217(separated)s 1184(by)s 240 fnt6 1485 1658(gap)m 240 fnt1
+1905 1656(from)m 2436(the)s 2792(follo)s 6(wing)k 3776(component;)s
+4959(if)s 240 fnt6 5183 1658(gap)m 240 fnt1 5603 1656(is)m
+5820(empty)s 6480(it)s 6679(denotes)s 220 fnt2 7468 1653(0ie)m
+240 fnt1 7819 1656(as)m 8076(usual)s 8644(with)s 0 1368(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 1080(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 1077(@BeginHeaderComponent)m 240 fnt1 8035 1080(.)m 480 706(Ne)m 3(xt)k
+1002(comes)s 220 fnt2 1664 703(@EndHeaderComponent)m 240 fnt1 4126 706(:)m
+
grestore
gsave
1417 -15423 translate
@@ -13090,107 +14070,93 @@ grestore
903 13209(H)m 168 fnt4 1086 13116(1)m 240 fnt4 1164 13201(,)m
240 fnt6 1271 13209(H)m 168 fnt4 1454 13116(2)m 240 fnt4
1546 13201(,)m 1653(\274)s 1951(,)s 240 fnt6 2058 13209(H)m
-168 fnt6 2241 13122(n)m 240 fnt6 480 12921(/)m 480 12633(gap)m
-220 fnt2 905 12628(@BeginHeaderComponent)m 240 fnt6 3609 12633(H)m 168 fnt6
-3792 12546(n)m 168 fnt4 3894 12540(+)m 4007(1)s 240 fnt6
-480 12345(/)m 480 12057(C)m 168 fnt6 645 11970(i)m 168 fnt4
-711 11964(+)m 824(1)s 240 fnt4 974 12049(:)m 240 fnt6
-1104 12057(H)m 168 fnt4 1287 11964(1)m 240 fnt4 1365 12049(,)m
-240 fnt6 1472 12057(H)m 168 fnt4 1655 11964(2)m 240 fnt4
-1747 12049(,)m 1854(\274)s 2152(,)s 240 fnt6 2259 12057(H)m
-168 fnt6 2442 11970(n)m 240 fnt4 2534 12049(,)m 240 fnt6
-2641 12057(H)m 168 fnt6 2824 11970(n)m 168 fnt4 2926 11964(+)m
-3039(1)s 240 fnt1 0 11513(That)m 478(is,)s 220 fnt2
-723 11510(@BeginHeaderComponent)m 240 fnt1 3394 11513(occup)m 2(ying)k 4422(an)s
-4684(entire)s 5263(component)s 6366(appends)s 7181(a)s 7326(header)s
-8002(component)s 0 11225(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 10937(is)m 217(separated)s 1184(by)s 240 fnt6 1485 10939(gap)m
-240 fnt1 1905 10937(from)m 2436(the)s 2792(follo)s 6(wing)k
-3776(component;)s 4959(if)s 240 fnt6 5183 10939(gap)m 240 fnt1
-5603 10937(is)m 5820(empty)s 6480(it)s 6679(denotes)s 220 fnt2
-7468 10934(0ie)m 240 fnt1 7819 10937(as)m 8076(usual)s 8644(with)s
-0 10649(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 10361(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 10358(@BeginHeaderComponent)m 240 fnt1 8035 10361(.)m
-480 9987(Ne)m 3(xt)k 1002(comes)s 220 fnt2 1664 9984(@EndHeaderComponent)m
-240 fnt1 4126 9987(:)m 240 fnt6 480 9492(C)m 168 fnt6
-645 9405(i)m 240 fnt4 773 9484(:)m 240 fnt6 903 9492(H)m
-168 fnt4 1086 9399(1)m 240 fnt4 1164 9484(,)m 240 fnt6
-1271 9492(H)m 168 fnt4 1454 9399(2)m 240 fnt4 1546 9484(,)m
-1653(\274)s 1951(,)s 240 fnt6 2058 9492(H)m 168 fnt6
-2241 9405(n)m 240 fnt4 2333 9484(,)m 240 fnt6 2440 9492(H)m
-168 fnt6 2623 9405(n)m 168 fnt4 2725 9399(+)m 2838(1)s
-240 fnt6 480 9204(/)m 220 fnt2 480 8911(@EndHeaderComponent)m 240 fnt6
-480 8628(/)m 480 8340(C)m 168 fnt6 645 8253(i)m 168 fnt4
-711 8247(+)m 824(1)s 240 fnt4 974 8332(:)m 240 fnt6
-1104 8340(H)m 168 fnt4 1287 8247(1)m 240 fnt4 1365 8332(,)m
-240 fnt6 1472 8340(H)m 168 fnt4 1655 8247(2)m 240 fnt4
-1747 8332(,)m 1854(\274)s 2152(,)s 240 fnt6 2259 8340(H)m
-168 fnt6 2442 8253(n)m 240 fnt1 0 7796(That)m 520(is,)s
-220 fnt2 809 7793(@EndHeaderComponent)m 240 fnt1 3353 7796(\(which)m 4097(has)s
-4490(no)s 4805(parameters\))s 6003(occup)s 2(ying)k 7074(an)s
-7380(entire)s 8002(component)s 0 7508(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 7220(it)m
-193(remains)s 1002(empty)s 15(.)k 220 fnt2 1751 7217(@BeginHeaderComponent)m
-240 fnt1 4445 7220(and)m 220 fnt2 4851 7217(@EndHeaderComponent)m 240 fnt1
-7375 7220(are)m 7724(naturally)s 8629(used)s 0 6932(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 6558(Ne)m 3(xt)k 1002(comes)s 220 fnt2
-1664 6555(@SetHeaderComponent)m 240 fnt1 4065 6558(:)m 240 fnt6 480 6063(C)m
-168 fnt6 645 5976(i)m 240 fnt4 773 6055(:)m 240 fnt6
-903 6063(H)m 168 fnt4 1086 5970(1)m 240 fnt4 1164 6055(,)m
-240 fnt6 1271 6063(H)m 168 fnt4 1454 5970(2)m 240 fnt4
-1546 6055(,)m 1653(\274)s 1951(,)s 240 fnt6 2058 6063(H)m
-168 fnt6 2241 5976(n)m 240 fnt6 480 5775(/)m 480 5487(gap)m
-220 fnt2 905 5482(@SetHeaderComponent)m 240 fnt6 3378 5487(H)m 168 fnt6
-3561 5400(n)m 168 fnt4 3663 5394(+)m 3776(1)s 240 fnt6
-480 5199(/)m 480 4911(C)m 168 fnt6 645 4824(i)m 168 fnt4
-711 4818(+)m 824(1)s 240 fnt4 974 4903(:)m 240 fnt6
-1104 4911(H)m 168 fnt6 1287 4824(n)m 168 fnt4 1389 4818(+)m
-1502(1)s 220 fnt2 0 4364(@SetHeaderComponent)m 240 fnt1 2461 4367(clears)m
-3068(an)s 3(y)k 3465(current)s 4201(header)s 4898(components)s
-6107(and)s 6511(replaces)s 7344(them)s 7882(by)s 8176(one)s
-8578(of)s 8850(its)s 0 4079(o)m 6(wn.)k 571(Finally)s
-1302(we)s 1637(ha)s 4(v)k 3(e)k 220 fnt2
-2138 4076(@ClearHeaderComponent)m 240 fnt1 4733 4079(:)m 240 fnt6 480 3580(C)m
-168 fnt6 645 3493(i)m 240 fnt4 773 3572(:)m 240 fnt6
-903 3580(H)m 168 fnt4 1086 3487(1)m 240 fnt4 1164 3572(,)m
-240 fnt6 1271 3580(H)m 168 fnt4 1454 3487(2)m 240 fnt4
-1546 3572(,)m 1653(\274)s 1951(,)s 240 fnt6 2058 3580(H)m
-168 fnt6 2241 3493(n)m 240 fnt6 480 3292(/)m 220 fnt2
-480 2999(@ClearHeaderComponent)m 240 fnt6 480 2716(/)m 480 2428(C)m 168 fnt6
-645 2341(i)m 168 fnt4 711 2335(+)m 824(1)s 240 fnt4
-974 2420(:)m 240 fnt1 0 1884(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
-7497(last)s 7878(tw)s 2(o)k 8277(symbols)s 0 1596(combine)m
-879(less)s 1287(cleanly)s 2030(than)s 2497(the)s 2844(\207rst)s
-3274(tw)s 2(o)k 3683(\(either)s 4363(will)s 4788(wreck)s
-5432(an)s 3(y)k 5828(enclosing)s 220 fnt2 6796 1593(@BeginHeaderCompo)m
-240 fnt1 8998 1596(-)m 220 fnt2 0 1305(nent)m 240 fnt1
-491 1308(\211)m 220 fnt2 679 1305(@EndHeaderComponent)m 240 fnt1 3209 1308(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 1020(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 646(All)m 859(four)s 1337(symbols)s 2206(yield)s 2761(the)s
-3129(v)s 6(alue)k 220 fnt2 3717 643(@Null)m 240 fnt1
-4382 646(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 358(components)m 1208(of)s
-1479(their)s 1976(g)s 1(alle)k 3(y)k 15(,)k
+168 fnt6 2241 13122(n)m 240 fnt4 2333 13201(,)m 240 fnt6
+2440 13209(H)m 168 fnt6 2623 13122(n)m 168 fnt4 2725 13116(+)m
+2838(1)s 240 fnt6 480 12921(/)m 220 fnt2 480 12628(@EndHeaderComponent)m
+240 fnt6 480 12345(/)m 480 12057(C)m 168 fnt6 645 11970(i)m
+168 fnt4 711 11964(+)m 824(1)s 240 fnt4 974 12049(:)m
+240 fnt6 1104 12057(H)m 168 fnt4 1287 11964(1)m 240 fnt4
+1365 12049(,)m 240 fnt6 1472 12057(H)m 168 fnt4 1655 11964(2)m
+240 fnt4 1747 12049(,)m 1854(\274)s 2152(,)s 240 fnt6
+2259 12057(H)m 168 fnt6 2442 11970(n)m 240 fnt1 0 11513(That)m
+520(is,)s 220 fnt2 809 11510(@EndHeaderComponent)m 240 fnt1 3353 11513(\(which)m
+4097(has)s 4490(no)s 4805(parameters\))s 6003(occup)s 2(ying)k
+7074(an)s
+[ /Dest /LOUT15_4082_pre_head_3 /DEST pdfmark
+7380(entire)s 8002(component)s 0 11225(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 10937(it)m 193(remains)s 1002(empty)s 15(.)k
+220 fnt2 1751 10934(@BeginHeaderComponent)m 240 fnt1 4445 10937(and)m 220 fnt2
+4851 10934(@EndHeaderComponent)m 240 fnt1 7375 10937(are)m 7724(naturally)s 8629(used)s
+0 10649(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 10275(Ne)m 3(xt)k
+1002(comes)s 220 fnt2 1664 10272(@SetHeaderComponent)m 240 fnt1 4065 10275(:)m
+240 fnt6 480 9780(C)m 168 fnt6 645 9693(i)m 240 fnt4
+773 9772(:)m 240 fnt6 903 9780(H)m 168 fnt4 1086 9687(1)m
+240 fnt4 1164 9772(,)m 240 fnt6 1271 9780(H)m 168 fnt4
+1454 9687(2)m 240 fnt4 1546 9772(,)m 1653(\274)s 1951(,)s
+240 fnt6 2058 9780(H)m 168 fnt6 2241 9693(n)m 240 fnt6
+480 9492(/)m 480 9204(gap)m 220 fnt2 905 9199(@SetHeaderComponent)m 240 fnt6
+3378 9204(H)m 168 fnt6 3561 9117(n)m 168 fnt4 3663 9111(+)m
+3776(1)s 240 fnt6 480 8916(/)m 480 8628(C)m 168 fnt6
+645 8541(i)m 168 fnt4 711 8535(+)m 824(1)s 240 fnt4
+974 8620(:)m 240 fnt6 1104 8628(H)m 168 fnt6 1287 8541(n)m
+168 fnt4 1389 8535(+)m 1502(1)s 220 fnt2 0 8081(@SetHeaderComponent)m
+240 fnt1 2461 8084(clears)m 3068(an)s 3(y)k 3465(current)s
+4201(header)s 4898(components)s
+[ /Dest /LOUT15_4082_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 7796(o)m 6(wn.)k
+571(Finally)s 1302(we)s 1637(ha)s 4(v)k 3(e)k
+220 fnt2 2138 7793(@ClearHeaderComponent)m 240 fnt1 4733 7796(:)m 240 fnt6
+480 7297(C)m 168 fnt6 645 7210(i)m 240 fnt4 773 7289(:)m
+240 fnt6 903 7297(H)m 168 fnt4 1086 7204(1)m 240 fnt4
+1164 7289(,)m 240 fnt6 1271 7297(H)m 168 fnt4 1454 7204(2)m
+240 fnt4 1546 7289(,)m 1653(\274)s 1951(,)s 240 fnt6
+2058 7297(H)m 168 fnt6 2241 7210(n)m 240 fnt6 480 7009(/)m
+220 fnt2 480 6716(@ClearHeaderComponent)m 240 fnt6 480 6433(/)m 480 6145(C)m
+168 fnt6 645 6058(i)m 168 fnt4 711 6052(+)m 824(1)s
+240 fnt4 974 6137(:)m 240 fnt1 0 5601(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 /LOUT15_4082_pre_head_5 /DEST pdfmark
+7497(last)s 7878(tw)s 2(o)k 8277(symbols)s
+0 5313(combine)m 879(less)s 1287(cleanly)s 2030(than)s 2497(the)s
+2844(\207rst)s 3274(tw)s 2(o)k 3683(\(either)s 4363(will)s
+4788(wreck)s 5432(an)s 3(y)k 5828(enclosing)s 220 fnt2
+6796 5310(@BeginHeaderCompo)m 240 fnt1 8998 5313(-)m 220 fnt2 0 5022(nent)m
+240 fnt1 491 5025(\211)m 220 fnt2 679 5022(@EndHeaderComponent)m 240 fnt1
+3209 5025(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 4737(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 4363(All)m 859(four)s 1337(symbols)s
+2206(yield)s 2761(the)s 3129(v)s 6(alue)k 220 fnt2
+3717 4360(@Null)m 240 fnt1 4382 4363(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 4075(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 3282(3.33.)m 591(@NotRe)s 3(v)k 2(ealed)k
+[ /Dest /LOUTnotrevealed /DEST pdfmark
+240 fnt1 480 2850(The)m 220 fnt2 938 2847(@NotRe)m 6(v)k 5(ealed)k
+240 fnt1 2495 2850(symbol)m
+[ /Dest /LOUT15_4082_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 2562(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 2274(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
grestore
gsave
1417 -15423 translate
@@ -13241,107 +14207,116 @@ gsave
240 fnt6 1417 -1580(3.33.)m 1991(@NotRe)s 3(vealed)k 240 fnt5
10256 -1583(61)m gsave
1417 -15423 translate
-240 fnt1 9066 13412 0 13412 240 288 60 LoutGraphic
+240 fnt1 9066 13412 0 13308 240 288 60 LoutGraphic
gsave
1 LoutMargSet
grestore
-240 fnt5 0 13247(3.33.)m 591(@NotRe)s 3(v)k 2(ealed)k
-240 fnt1 480 12815(The)m 220 fnt2 938 12812(@NotRe)m 6(v)k 5(ealed)k
-240 fnt1 2495 12815(symbol)m 3285(e)s 3(x)k 3(erts)k
-3931(\207ne)s 4376(control)s 5138(o)s 3(v)k 3(er)k
-5647(the)s 6026(process)s 6824(of)s 7125(e)s 3(xpanding)k
-8204(recepti)s 6(v)k 3(e)k 0 12527(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 12239(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 11738(def A { @Galle)m 4(y })k 480 11162(def B { @Galle)m 4(y })k 480 10586(def ABList)m
-480 10298({)m 480 10010( A)m 480 9722( // B @NotRe)m 6(v)k 5(ealed)k
-480 9434( // ABList)m 480 9146(})m 240 fnt1 0 8652(The)m 424(meaning)s
+220 fnt2 480 13251(def A { @Galle)m 4(y })k 480 12675(def B { @Galle)m 4(y })k
+480 12099(def ABList)m 480 11811({)m 480 11523( A)m 480 11235( // B @NotRe)m 6(v)k 5(ealed)k
+480 10947( // ABList)m 480 10659(})m 240 fnt1 0 10165(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 8649(@NotRe)m 6(v)k 5(ealed)k
-240 fnt1 6718 8652(,)m 220 fnt2 6821 8649(B)m 240 fnt1
-7015 8652(in)m 7253(this)s 7645(e)s 3(xample,)k 8555(is)s
-8760(not)s 0 8364(re)m 6(v)k 3(ealed)k 851(to)s
+4259(preceding)s 220 fnt2 5251 10162(@NotRe)m 6(v)k 5(ealed)k
+240 fnt1 6718 10165(,)m 220 fnt2 6821 10162(B)m 240 fnt1
+7015 10165(in)m 7253(this)s 7645(e)s 3(xample,)k 8555(is)s
+8760(not)s 0 9877(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 8361(ABList)m 240 fnt1 4113 8364(while)m 4693(searching)s
+220 fnt2 3431 9874(ABList)m 240 fnt1 4113 9877(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 8076(that)m 220 fnt2 408 8073(ABList)m 240 fnt1 1086 8076(contains)m
-220 fnt2 1923 8073(A)m 240 fnt1 2116 8076(only)m 15(,)k
-2624(not)s 220 fnt2 2979 8073(B)m 240 fnt1 3117 8076(,)m
+0 9589(that)m 220 fnt2 408 9586(ABList)m 240 fnt1 1086 9589(contains)m
+220 fnt2 1923 9586(A)m 240 fnt1 2116 9589(only)m 15(,)k
+2624(not)s 220 fnt2 2979 9586(B)m 240 fnt1 3117 9589(,)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 8073(A)m
-240 fnt1 6233 8076(will)m 6648(e)s 3(xpand)k 220 fnt2
-7384 8073(ABList)m 240 fnt1 8013 8076(.)m 8166(Ho)s 6(we)k 6(v)k 3(er)k 9(,)k
-0 7788(after)m 220 fnt2 496 7785(ABList)m 240 fnt1 1185 7788(is)m
+4999(tar)s 4(geted)k 5811(to)s 220 fnt2 6039 9586(A)m
+240 fnt1 6233 9589(will)m 6648(e)s 3(xpand)k 220 fnt2
+7384 9586(ABList)m 240 fnt1 8013 9589(.)m 8166(Ho)s 6(we)k 6(v)k 3(er)k 9(,)k
+0 9301(after)m 220 fnt2 496 9298(ABList)m 240 fnt1 1185 9301(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 7785(B)m 240 fnt1 4194 7788(will)m 4620(be)s 4902(a)s 4(v)k 6(ailable)k
+3996 9298(B)m 240 fnt1 4194 9301(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 7414(Apart)m 1081(from)s 1602(this)s 1994(meaning,)s 220 fnt2
-2922 7411(@NotRe)m 6(v)k 5(ealed)k 240 fnt1 4445 7414(has)m
+480 8927(Apart)m 1081(from)s 1602(this)s 1994(meaning,)s 220 fnt2
+2922 8924(@NotRe)m 6(v)k 5(ealed)k 240 fnt1 4445 8927(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 7126(may)m 501(be)s 819(understood)s 1976(by)s
-2306(deleting)s 220 fnt2 3164 7123(@NotRe)m 6(v)k 5(ealed)k
-240 fnt1 4727 7126(and)m 5166(an)s 3(y)k 5599(preceding)s
-6630(space.)s 7361(Thus,)s 7982(the)s 8366(symbol)s 0 6838(preceding)m
-220 fnt2 1001 6835(@NotRe)m 6(v)k 5(ealed)k 240 fnt1
-2533 6838(may)m 3004(ha)s 4(v)k 3(e)k 3510(named)s
+8152(de\207nition)s 0 8639(may)m 501(be)s 819(understood)s 1976(by)s
+2306(deleting)s 220 fnt2 3164 8636(@NotRe)m 6(v)k 5(ealed)k
+240 fnt1 4727 8639(and)m 5166(an)s 3(y)k 5599(preceding)s
+6630(space.)s 7361(Thus,)s 7982(the)s 8366(symbol)s 0 8351(preceding)m
+220 fnt2 1001 8348(@NotRe)m 6(v)k 5(ealed)k 240 fnt1
+2533 8351(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 6550(follo)m 6(w)k 672(after)s 1168(the)s 220 fnt2
-1516 6547(@NotRe)m 6(v)k 5(ealed)k 240 fnt1 3043 6550(symbol.)m
-480 6176(This)m 944(symbol)s 1692(w)s 2(as)k 2101(introduced)s
+0 8063(follo)m 6(w)k 672(after)s 1168(the)s 220 fnt2
+1516 8060(@NotRe)m 6(v)k 5(ealed)k 240 fnt1 3043 8063(symbol.)m
+480 7689(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 5888(It)m 205(turned)s 874(out)s
+8001(as)s 8238(displays.)s 0 7401(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 220 fnt2 480 5387(@BodyT)m 26(e)k 6(xtPlace)k
-480 5099(// @FigurePlace)m 480 4811(// @BodyT)m 26(e)k 6(xtPlace)k 480 4523(// @FigurePlace)m
-480 4235(// @BodyT)m 26(e)k 6(xtPlace)k 480 3947(...)m 240 fnt1
-0 3496(so)m 256(that)s 664(\207gures)s 1356(could)s 1935(alternate)s
+5839(\(in)s 6161(part\))s 6660(as)s 220 fnt2 480 6900(@BodyT)m 26(e)k 6(xtPlace)k
+480 6612(// @FigurePlace)m 480 6324(// @BodyT)m 26(e)k 6(xtPlace)k 480 6036(// @FigurePlace)m
+480 5748(// @BodyT)m 26(e)k 6(xtPlace)k 480 5460(...)m 240 fnt1
+0 5009(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 3208(ed)m 291(to)s 538(ensure)s 1226(that)s
+8998(-)s 0 4721(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 3205(@BodyT)m 26(e)k 6(xtPlace)k
-240 fnt1 8527 3208(in)m 8778(the)s 0 2920(column,)m 831(since)s
+6391(one)s 220 fnt2 6801 4718(@BodyT)m 26(e)k 6(xtPlace)k
+240 fnt1 8527 4721(in)m 8778(the)s 0 4433(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 2917(@NP)m 240 fnt1 6851 2920(symbol)m 7618(merely)s 8342(causing)s
-0 2632(a)m 174(skip)s 634(from)s 1167(one)s 220 fnt2
-1577 2629(@BodyT)m 26(e)k 6(xtPlace)k 240 fnt1 3303 2632(to)m
+6267 4430(@NP)m 240 fnt1 6851 4433(symbol)m 7618(merely)s 8342(causing)s
+0 4145(a)m 174(skip)s 634(from)s 1167(one)s 220 fnt2
+1577 4142(@BodyT)m 26(e)k 6(xtPlace)k 240 fnt1 3303 4145(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 2344(ne)m 3(xt)k
+7730(the)s 8087(\207rst)s 8526(in)s 8778(the)s 0 3857(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 2056(early)m 545(w)s 2(ould)k 1214(be)s 1510(frustrated)s
+0 3569(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 1765(@BodyT)m 26(e)k 6(xtPlace)k 240 fnt1 1703 1768(in)m
+0 3278(@BodyT)m 26(e)k 6(xtPlace)k 240 fnt1 1703 3281(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 1765(ABList)m
-240 fnt1 6625 1768(abo)m 3(v)k 3(e;)k 7287(each)s
-7767(occurrence)s 8855(of)s 220 fnt2 0 1477(@BodyT)m 26(e)k 6(xtPlace)k
-240 fnt1 1712 1480(after)m 2201(a)s 220 fnt2 2361 1477(@FigurePlace)m
-240 fnt1 3798 1480(is)m 4002(not)s 4361(re)s 6(v)k 3(ealed)k
+4887(is)s 5082(based)s 5669(on)s 220 fnt2 5951 3278(ABList)m
+240 fnt1 6625 3281(abo)m 3(v)k 3(e;)k 7287(each)s
+7767(occurrence)s 8855(of)s 220 fnt2 0 2990(@BodyT)m 26(e)k 6(xtPlace)k
+240 fnt1 1712 2993(after)m 2201(a)s 220 fnt2 2361 2990(@FigurePlace)m
+240 fnt1 3798 2993(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 1192(be)m 282(found)s 899(by)s
+8169(so)s 8428(cannot)s 0 2705(be)m 282(found)s 899(by)s
1193(body)s 1727(te)s 3(xt)k 2142(g)s 1(alle)k 3(ys)k
2866(unless)s 3515(a)s 3682(\207gure)s 4296(has)s 4666(pre)s 6(viously)k
5724(attached)s 6578(to)s 6817(the)s 7165(preceding)s 220 fnt2
-8162 1189(@Figure)m 240 fnt1 8998 1192(-)m 220 fnt2 0 901(Place)m
-240 fnt1 540 904(.)m
+8162 2702(@Figure)m 240 fnt1 8998 2705(-)m 220 fnt2 0 2414(Place)m
+240 fnt1 540 2417(.)m 240 fnt5 0 1670(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 1193(The)m 941(cross)s 1516(reference)s 2493(symbol)s 220 fnt2
+3286 1190(&&)m 240 fnt1 3668 1193(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 905(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 617(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 329(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
grestore
gsave
1417 -15423 translate
@@ -13392,143 +14367,140 @@ 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
+240 fnt1 9066 13368 0 13259 240 288 60 LoutGraphic
gsave
0 LoutMargSet
grestore
-240 fnt5 0 13203(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 240 fnt1
-480 12726(The)m 941(cross)s 1516(reference)s 2493(symbol)s 220 fnt2
-3286 12723(&&)m 240 fnt1 3668 12726(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 12438(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 12150(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 11862(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 11488(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 11490(tar)m 8(g)k 2(et)k 240 fnt1 4846 11488(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 11197(@T)m 26(ag)k
-240 fnt1 643 11200(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 10912(special)m 759(tags,)s 220 fnt2 1292 10909(preceding)m
-240 fnt1 2243 10912(,)m 220 fnt2 2391 10909(f)m 6(ollo)k 3(wing)k
-240 fnt1 3221 10912(,)m 3369(and)s 220 fnt2 3814 10909(f)m 6(oll_or_prec)k
-240 fnt1 4948 10912(,)m 5097(point)s 5690(respecti)s 6(v)k 3(ely)k
+480 13205(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 13207(tar)m 8(g)k 2(et)k
+240 fnt1 4846 13205(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 12914(@T)m 26(ag)k 240 fnt1 643 12917(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 12629(special)m 759(tags,)s
+220 fnt2 1292 12626(preceding)m 240 fnt1 2243 12629(,)m 220 fnt2
+2391 12626(f)m 6(ollo)k 3(wing)k 240 fnt1 3221 12629(,)m
+3369(and)s 220 fnt2 3814 12626(f)m 6(oll_or_prec)k 240 fnt1
+4948 12629(,)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 10624(preceding)m 1006(the)s 1365(cross)s 1918(reference)s 2872(in)s
+0 12341(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 10336(and)m 404(to)s
+7899(follo)s 6(wing)k 8887(it,)s 0 12053(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 9962(A)m 709(cross)s 1249(reference)s 2190(may)s 2654(be)s
+480 11679(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 9674(v)m 6(alue)k
+7504(in)s 7745(which)s 8385(case)s 8850(its)s 0 11391(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 9671(@Open)m 240 fnt1 4457 9674(and)m 220 fnt2
-4870 9671(@Use)m 240 fnt1 5544 9674(symbols;)m 6463(with)s 6954(the)s
-220 fnt2 7311 9671(@T)m 26(agged)k 240 fnt1 8309 9674(symbol;)m
-0 9386(and)m 414(in)s 667(the)s 220 fnt2 1025 9383(into)m
-240 fnt1 1441 9386(clause)m 2105(or)s 220 fnt2 2374 9383(@T)m 26(arget)k
-240 fnt1 3271 9386(symbol)m 4041(of)s 4323(a)s 4499(g)s 1(alle)k 3(y)k
+220 fnt2 3642 11388(@Open)m 240 fnt1 4457 11391(and)m 220 fnt2
+4870 11388(@Use)m 240 fnt1 5544 11391(symbols;)m 6463(with)s 6954(the)s
+220 fnt2 7311 11388(@T)m 26(agged)k 240 fnt1 8309 11391(symbol;)m
+0 11103(and)m 414(in)s 667(the)s 220 fnt2 1025 11100(into)m
+240 fnt1 1441 11103(clause)m 2105(or)s 220 fnt2 2374 11100(@T)m 26(arget)k
+240 fnt1 3271 11103(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 9098(tag)m
-345(must)s 870(be)s 220 fnt2 1152 9095(preceding)m 240 fnt1
-2103 9098(,)m 220 fnt2 2210 9095(f)m 6(ollo)k 3(wing)k
-240 fnt1 3040 9098(,)m 3147(or)s 220 fnt2 3406 9095(f)m 6(oll_or_prec)k
-240 fnt1 4540 9098(.)m 480 8724(W)m 9(ithin)k 1233(an)s
-220 fnt2 1557 8721(into)m 240 fnt1 2004 8724(clause)m 2698(or)s
-220 fnt2 2999 8721(@T)m 26(arget)k 240 fnt1 3927 8724(symbol,)m
+7918(v)s 6(alue)k 8496(of)s 8778(the)s 0 10815(tag)m
+345(must)s 870(be)s 220 fnt2 1152 10812(preceding)m 240 fnt1
+2103 10815(,)m 220 fnt2 2210 10812(f)m 6(ollo)k 3(wing)k
+240 fnt1 3040 10815(,)m 3147(or)s 220 fnt2 3406 10812(f)m 6(oll_or_prec)k
+240 fnt1 4540 10815(.)m 480 10441(W)m 9(ithin)k 1233(an)s
+220 fnt2 1557 10438(into)m 240 fnt1 2004 10441(clause)m 2698(or)s
+220 fnt2 2999 10438(@T)m 26(arget)k 240 fnt1 3927 10441(symbol,)m
4780(the)s 5169(alternati)s 6(v)k 3(e)k 6265(form)s
-220 fnt2 6830 8721(&&&)m 240 fnt1 7365 8724(is)m 7616(acceptable)s
-8722(and)s 0 8436(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 8062(Except)m 1203(within)s 1870(an)s
-220 fnt2 2151 8059(into)m 240 fnt1 2556 8062(clause)m 3208(or)s
-220 fnt2 3465 8059(@T)m 26(arget)k 240 fnt1 4351 8062(symbol,)m
+220 fnt2 6830 10438(&&&)m 240 fnt1 7365 10441(is)m 7616(acceptable)s
+8722(and)s 0 10153(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 9779(Except)m 1203(within)s 1870(an)s
+220 fnt2 2151 9776(into)m 240 fnt1 2556 9779(clause)m 3208(or)s
+220 fnt2 3465 9776(@T)m 26(arget)k 240 fnt1 4351 9779(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 8059(@T)m 26(ag)k 240 fnt1 0 7774(parameter)m 13(.)k
+8503 9776(@T)m 26(ag)k 240 fnt1 0 9491(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 7771(preceding)m 240 fnt1 7835 7774(,)m 220 fnt2 7936 7771(f)m 6(ollo)k 3(wing)k
-240 fnt1 8766 7774(,)m 8867(or)s 220 fnt2 0 7483(f)m 6(oll_or_prec)k
-240 fnt1 1134 7486(.)m 240 fnt5 0 6697(3.35.)m 591(@T)s 22(agged)k
-240 fnt1 480 6220(The)m 220 fnt2 924 6217(@T)m 26(agged)k
-240 fnt1 1929 6220(symbol)m 2705(tak)s 2(es)k 3261(a)s
+6884 9488(preceding)m 240 fnt1 7835 9491(,)m 220 fnt2 7936 9488(f)m 6(ollo)k 3(wing)k
+240 fnt1 8766 9491(,)m 8867(or)s 220 fnt2 0 9200(f)m 6(oll_or_prec)k
+240 fnt1 1134 9203(.)m 240 fnt5 0 8414(3.35.)m 591(@T)s 22(agged)k
+
+[ /Dest /LOUTtagged /DEST pdfmark
+240 fnt1 480 7937(The)m 220 fnt2 924 7934(@T)m 26(agged)k
+
+[ /Dest /LOUT15_4082_pre_tagg_1 /DEST pdfmark
+240 fnt1 1929 7937(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 5932(v)m 6(alue)k 565(must)s 1087(be)s 1366(a)s
+0 7649(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 5644(parameter)m 13(.)k 1104(It)s
+8343(its)s 8615(right)s 0 7361(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 5356(denoted)m 819(by)s
+8072(in)s 9(v)k 4(ocation)k 0 7073(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 5353(@T)m 26(agged)k
-240 fnt1 8636 5356(does)m 0 5068(nothing.)m 896(The)s 1324(result)s
-1914(of)s 220 fnt2 2185 5065(@T)m 26(agged)k 240 fnt1
-3174 5068(is)m 3384(al)s 2(w)k 2(ays)k 220 fnt2
-4095 5065(@Null)m 240 fnt1 4680 5068(,)m 4787(which)s 5429(mak)s 2(es)k
+6279(in)s 6526(which)s 7172(case)s 220 fnt2 7643 7070(@T)m 26(agged)k
+240 fnt1 8636 7073(does)m 0 6785(nothing.)m 896(The)s 1324(result)s
+1914(of)s 220 fnt2 2185 6782(@T)m 26(agged)k 240 fnt1
+3174 6785(is)m 3384(al)s 2(w)k 2(ays)k 220 fnt2
+4095 6782(@Null)m 240 fnt1 4680 6785(,)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 4275(3.36.)m 591(@Open and @Use)s
-240 fnt1 480 3798(The)m 220 fnt2 904 3795(@Open)m 240 fnt1
-1706 3798(symbol)m 2462(tak)s 2(es)k 2998(a)s 3159(cross)s
+7340(in)s 9(visible.)k 240 fnt5 0 5992(3.36.)m 591(@Open and @Use)s
+
+[ /Dest /LOUTopen /DEST pdfmark
+240 fnt1 480 5515(The)m 220 fnt2 904 5512(@Open)m 240 fnt1
+1706 5515(symbol)m
+[ /Dest /LOUT15_4082_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 3510(an)m 269(arbitrary)s 1130(object,)s 1807(which)s
+8722(and)s 0 5227(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 3222(may)m 462(refer)s
+7201(The)s 7615(right)s 8112(parameter)s 0 4939(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 2934(parameter)m 9(,)k 1050(and)s
+8406(the)s 8749(left)s 0 4651(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 2931(@Open)m 240 fnt1 3648 2934(symbol')m 13(s)k
+220 fnt2 2844 4648(@Open)m 240 fnt1 3648 4651(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 2646(in)m 234(an)s 507(e)s 3(xternal)k 1318(database)s
-2187(\(Section)s 3031(3.37\).)s 3684(An)s 3(y)k 4138(symbol)s
+0 4363(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 2643(@Open)m 240 fnt1 7658 2646(which)m 8290(happens)s
-0 2358(to)m 239(ha)s 4(v)k 3(e)k 741(the)s
+220 fnt2 6862 4360(@Open)m 240 fnt1 7658 4363(which)m 8290(happens)s
+0 4075(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 2355(@Open)m 240 fnt1
-7268 2358(will)m 7695(be)s 7978(una)s 4(v)k 6(ailable)k
-0 2070(within)m 668(the)s 220 fnt2 1016 2067(@Open)m 240 fnt1
-1762 2070(.)m 538 1696(The)m 220 fnt2 963 1693(@Use)m 240 fnt1
-1625 1696(symbol)m 2382(is)s 2589(an)s 220 fnt2 2869 1693(@Open)m
-240 fnt1 3672 1696(symbol)m 4429(in)s 4669(a)s 4832(dif)s 6(ferent)k
+5818(by)s 6113(the)s 220 fnt2 6462 4072(@Open)m 240 fnt1
+7268 4075(will)m 7695(be)s 7978(una)s 4(v)k 6(ailable)k
+0 3787(within)m 668(the)s 220 fnt2 1016 3784(@Open)m 240 fnt1
+1762 3787(.)m
+[ /Dest /LOUT15_4082_pre_open_2 /DEST pdfmark
+538 3413(The)m 220 fnt2 963 3410(@Use)m 240 fnt1
+1625 3413(symbol)m 2382(is)s 2589(an)s 220 fnt2 2869 3410(@Open)m
+240 fnt1 3672 3413(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 1408(after)m 502(the)s 857(de\207nitions)s
+8165(among)s 8867(or)s 0 3125(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 1120(in)m 243(an)s 220 fnt2
-526 1117(@Open)m 240 fnt1 1332 1120(symbol.)m 2201(F)s 3(or)k
-2590(e)s 3(xample,)k
+8219(the)s 8574(input)s 0 2837(in)m 243(an)s 220 fnt2
+526 2834(@Open)m 240 fnt1 1332 2837(symbol.)m 2201(F)s 3(or)k
+2590(e)s 3(xample,)k 240 fnt6 480 2334(de\207nitions)m 220 fnt2
+480 2041(@Use)m 1145({)s 240 fnt6 1269 2046(x)m 220 fnt2
+1435 2041(})m 480 1753(@Use)m 1145({)s 240 fnt6 1269 1758(y)m
+220 fnt2 1431 1753(})m 240 fnt6 480 1470(r)m 8(est)k
+894(of)s 1175(input)s 240 fnt1 0 969(is)m 210(equi)s 6(v)k 6(alent)k
+1254(to)s
grestore
gsave
1417 -15423 translate
@@ -13583,91 +14555,112 @@ gsave
gsave
1 LoutMargSet
grestore
-240 fnt6 480 13205(de\207nitions)m 220 fnt2 480 12912(@Use)m 1145({)s
-240 fnt6 1269 12917(x)m 220 fnt2 1435 12912(})m 480 12624(@Use)m
-1145({)s 240 fnt6 1269 12629(y)m 220 fnt2 1431 12624(})m
-240 fnt6 480 12341(r)m 8(est)k 894(of)s 1175(input)s
-240 fnt1 0 11840(is)m 210(equi)s 6(v)k 6(alent)k
-1254(to)s 240 fnt6 480 11337(de\207nitions)m 480 11049(x)m 220 fnt2
-646 11044(@Open)m 480 10756({)m 240 fnt6 960 10761(y)m 220 fnt2
-1122 10756(@Open)m 960 10468({)m 240 fnt6 1084 10473(r)m 8(est)k
-1498(of)s 1779(input)s 220 fnt2 960 10180(})m 480 9892(})m
-240 fnt1 0 9398(The)m 220 fnt2 424 9395(@Use)m 240 fnt1
-1085 9398(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 9110(enclosing)m 974(the)s 1327(entire)s 1931(document)s
-2939(in)s 220 fnt2 3187 9107(@Open)m 240 fnt1 3998 9110(symbols.)m
+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 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 8822(run)m 376(out)s 742(of)s
-1013(memory)s 15(.)k 240 fnt5 0 8029(3.37.)m 591(@Database and @SysDatabase)s
-240 fnt1 529 7552(The)m 220 fnt2 945 7549(@Database)m 240 fnt1
-2148 7552(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 7264(Lout)m 512(may)s 978(refer)s 1487(to)s
+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.37.)m 591(@LinkSour)s 4(ce and @LinkDest)k
+
+[ /Dest /LOUTlink_source /DEST pdfmark
+240 fnt1 480 9465(These)m 1104(tw)s 2(o)k 1511(symbols)s
+
+[ /Dest /LOUT15_4082_pre_link_1 /DEST pdfmark
+
+[ /Dest /LOUT15_4082_pre_link_2 /DEST pdfmark
+2357(w)s 2(ork)k 2905(together)s 3745(to)s 3981(create)s
+240 fnt6 4603 9467(links)m 240 fnt1 5106 9465(in)m 5346(a)s
+5509(document,)s 6557(that)s 6972(is,)s 7235(points)s 7868(where)s
+8505(a)s 8668(user)s 0 9177(vie)m 6(wing)k 821(the)s
+1172(document)s 2180(on)s 2480(screen)s 3151(can)s 3543(click)s
+4072(and)s 4479(be)s 4765(transported)s 5901(to)s 6144(another)s
+6924(point)s 7480(in)s 7726(the)s 8078(document.)s 0 8889(W)m 19(e)k
+361(call)s 751(the)s 1090(point)s 1634(where)s 2265(the)s
+2604(user)s 3053(clicks)s 3653(the)s 240 fnt6 3992 8891(sour)m 8(ce)k
+240 fnt1 4666 8889(of)m 4928(the)s 5268(link,)s 5738(and)s
+6133(the)s 6472(point)s 7016(where)s 7647(the)s 7986(user)s
+8435(arri)s 6(v)k 3(es)k 0 8601(the)m 240 fnt6
+348 8603(destination)m 240 fnt1 1465 8601(of)m 1736(the)s 2084(link.)s
+480 8227(T)m 19(o)k 780(create)s 1405(a)s 1571(source)s
+2251(point,)s 2850(place)s 240 fnt6 480 7724(ta)m 2(g)k
+220 fnt2 838 7719(@LinkSource)m 240 fnt6 2210 7724(object)m 240 fnt1
+0 7221(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 7223(ta)m 2(g)k 240 fnt1
+5124 7221(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 7223(object)m 240 fnt1 8916 7221(is)m 0 6933(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 6935(object)m
+240 fnt1 5260 6933(,)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 6645(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 480 6271(T)m 19(o)k
+780(create)s 1405(a)s 1571(destination)s 2677(point,)s 3276(place)s
+240 fnt6 480 5768(ta)m 2(g)k 220 fnt2 838 5763(@LinkDest)m
+240 fnt6 1970 5768(object)m 240 fnt1 0 5265(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 5267(ta)m 2(g)k 240 fnt1 4005 5265(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 5267(object)m 240 fnt1
+0 4977(may)m 469(be)s 755(an)s 3(y)k 1156(Lout)s
+1672(object.)s 2424(All)s 220 fnt2 2788 4974(@LinkSource)m 240 fnt1
+4164 4977(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 4689(this)m 396(destination)s 1502(point.)s 480 4315(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 4027(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 3739(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 3451(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 3163(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 2875(\(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 2501(At)m 791(present,)s 240 fnt6 1601 2503(object)m 240 fnt1
+2261 2501(abo)m 3(v)k 3(e)k 2896(is)s 3119(treated)s
+3838(as)s 4101(though)s 4837(it)s 5041(were)s 5574(enclosed)s
+6482(in)s 220 fnt2 6737 2498(@OneCol)m 240 fnt1 7689 2501(,)m
+7809(which)s 8464(means)s 0 2213(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 1925(paragraph.)m 1120(This)s
+1596(de\207cienc)s 3(y)k 2630(might)s 3248(be)s 3530(corrected)s
+4476(in)s 4719(the)s 5067(future.)s 240 fnt5 0 1132(3.38.)m
+591(@Database and @SysDatabase)s
+[ /Dest /LOUTdatabase /DEST pdfmark
+
+[ /Dest /LOUT15_4082_pre_data_1 /DEST pdfmark
+240 fnt1 529 655(The)m 220 fnt2 945 652(@Database)m
+240 fnt1 2148 655(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 367(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 6763(@Database @Months @W)m 6(eekDa)k 6(ys { standard })k
-240 fnt1 0 6265(means)m 690(that)s 1137(there)s 1698(is)s
-1937(a)s 2131(\207le)s 2521(called)s 220 fnt2 3177 6262(standard.ld)m
-240 fnt1 4339 6265(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 5977(symbols)m 220 fnt2 846 5974(@Months)m 240 fnt1 1838 5977(and)m
-220 fnt2 2238 5974(@W)m 6(eekDa)k 6(ys)k 240 fnt1
-3503 5977(.)m 3663(A)s 220 fnt2 3889 5974(@Database)m 240 fnt1
-5100 5977(symbol)m 5856(may)s 6318(appear)s 7011(an)s 3(ywhere)k
-7990(a)s 8152(de\207nition)s 0 5689(or)m 252(a)s 220 fnt2
-411 5686(@Use)m 240 fnt1 1069 5689(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 5401(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 5113(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 4825(symbols)m 866(lik)s 2(e)k 220 fnt2 1296 4822(@I)m
-240 fnt1 1639 4825(for)m 220 fnt2 1995 4822(Slope @F)m 6(ont)k
-240 fnt1 3346 4825(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 4534(@Database)m 240 fnt1
-1214 4537(or)m 220 fnt2 1473 4534(@Include)m 240 fnt1 2455 4537(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 4163(Basser)m 1198(Lout)s 1732(constructs)s
-2773(an)s 240 fnt6 3078 4165(inde)m 4(x)k 3674(\207le)s
-240 fnt1 3959 4163(,)m 4087(which)s 4751(in)s 5016(this)s
-5433(e)s 3(xample)k 6318(is)s 6550(called)s 220 fnt2
-7199 4160(standard.li)m 240 fnt1 8196 4163(,)m 8325(the)s 8695(\207rst)s
-0 3875(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 3587(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 3299(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 3011(\(including)m 1036(Unix\).)s 480 2637(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 2349(standard)m 868(places.)s
-1629(T)s 19(o)k 1929(search)s 2596(the)s 2944(standard)s
-3812(places)s 4460(only)s 15(,)k 4978(use)s 220 fnt2
-5353 2346(@SysDatabase)m 240 fnt1 6873 2349(.)m 240 fnt5 0 1556(3.38.)m
-591(@Graphic)s 240 fnt1 556 1079(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 791(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 503(these)m 547(features,)s 1409(via)s 1761(its)s 220 fnt2
-2037 500(@Gr)m 2(aphic)k 240 fnt1 3081 503(symbol:)m
+6875(e)s 3(xample,)k
grestore
gsave
1417 -15423 translate
@@ -13718,19 +14711,91 @@ 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 13267 240 288 60 LoutGraphic
+240 fnt1 9066 13368 0 13264 240 288 60 LoutGraphic
gsave
0 LoutMargSet
grestore
-220 fnt2 480 13210({ 0 0 mo)m 3(v)k 5(eto)k
-480 12922( 0 ysiz)m 3(e lineto)k 480 12634( xsiz)m 3(e ysiz)k 3(e lineto)k
-480 12346( xsiz)m 3(e 0 lineto)k 480 12058( closepath)m 480 11770( strok)m 4(e)k
-480 11482(})m 480 11194(@Gr)m 2(aphic)k 480 10906({ //0.2c)m 480 10618( ||0.2c hello)m 8(, w)k 2(or)k -3(ld ||0.2c)k
-480 10330( //0.2c)m 480 10042(})m 240 fnt1 0 9548(The)m 428(result)s
+220 fnt2 480 13207(@Database @Months @W)m 6(eekDa)k 6(ys { standard })k
+240 fnt1 0 12709(means)m 690(that)s 1137(there)s 1698(is)s
+1937(a)s 2131(\207le)s 2521(called)s 220 fnt2 3177 12706(standard.ld)m
+240 fnt1 4339 12709(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 12421(symbols)m 220 fnt2 846 12418(@Months)m 240 fnt1 1838 12421(and)m
+220 fnt2 2238 12418(@W)m 6(eekDa)k 6(ys)k 240 fnt1
+3503 12421(.)m 3663(A)s 220 fnt2 3889 12418(@Database)m 240 fnt1
+5100 12421(symbol)m 5856(may)s 6318(appear)s 7011(an)s 3(ywhere)k
+7990(a)s 8152(de\207nition)s 0 12133(or)m 252(a)s 220 fnt2
+411 12130(@Use)m 240 fnt1 1069 12133(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 11845(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 11557(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 11269(symbols)m 866(lik)s 2(e)k 220 fnt2 1296 11266(@I)m
+240 fnt1 1639 11269(for)m 220 fnt2 1995 11266(Slope @F)m 6(ont)k
+240 fnt1 3346 11269(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 10978(@Database)m 240 fnt1
+1214 10981(or)m 220 fnt2 1473 10978(@Include)m 240 fnt1 2455 10981(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 10607(Basser)m 1198(Lout)s 1732(constructs)s
+2773(an)s 240 fnt6 3078 10609(inde)m 4(x)k 3674(\207le)s
+240 fnt1 3959 10607(,)m
+[ /Dest /LOUT15_4082_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 10604(standard.li)m 240 fnt1 8196 10607(,)m 8325(the)s 8695(\207rst)s
+0 10319(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 10031(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 9743(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 9455(\(including)m 1036(Unix\).)s 480 9081(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 8793(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 /LOUT15_4082_pre_data_3 /DEST pdfmark
+220 fnt2
+5353 8790(@SysDatabase)m 240 fnt1 6873 8793(.)m 240 fnt5 0 8000(3.39.)m
+591(@Graphic)s
+[ /Dest /LOUTgraphic /DEST pdfmark
+
+[ /Dest /LOUT15_4082_pre_grap_1 /DEST pdfmark
+
+[ /Dest /LOUT15_4082_pre_grap_2 /DEST pdfmark
+240 fnt1 556 7523(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 7235(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 6947(these)m 547(features,)s 1409(via)s 1761(its)s 220 fnt2
+2037 6944(@Gr)m 2(aphic)k 240 fnt1 3081 6947(symbol:)m
+[ /Dest /LOUT15_4082_pre_grap_3 /DEST pdfmark
+220 fnt2
+480 6449({ 0 0 mo)m 3(v)k 5(eto)k 480 6161( 0 ysiz)m 3(e lineto)k
+480 5873( xsiz)m 3(e ysiz)k 3(e lineto)k 480 5585( xsiz)m 3(e 0 lineto)k
+480 5297( closepath)m 480 5009( strok)m 4(e)k 480 4721(})m 480 4433(@Gr)m 2(aphic)k
+480 4145({ //0.2c)m 480 3857( ||0.2c hello)m 8(, w)k 2(or)k -3(ld ||0.2c)k
+480 3569( //0.2c)m 480 3281(})m 240 fnt1 0 2787(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 9545(@Gr)m 2(aphic)k 240 fnt1
-5736 9548(is)m 1365 422 0 422 240 288 60 480 8786 LoutGr2
+3932(symbol)s 220 fnt2 4692 2784(@Gr)m 2(aphic)k 240 fnt1
+5736 2787(is)m 1365 422 0 422 240 288 60 480 2025 LoutGr2
0 0 moveto
0 ysize lineto
xsize ysize lineto
@@ -13740,53 +14805,26 @@ stroke
grestore
113 146(hello,)m 698(w)s 2(orld)k
grestore
-480 8070(The)m
+480 1309(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 7782(object)m 651(whose)s 1327(size)s 1761(is)s 1979(identical)s
+0 1021(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 7779(@OneCol)m
-240 fnt1 7583 7782(and)m 220 fnt2 7995 7779(@OneRo)m 3(w)k
-240 fnt1 0 7494(applied)m 762(to)s 1001(it.)s 1297(From)s
+4534(right)s 5052(parameter)s 6074(with)s 220 fnt2 6563 1018(@OneCol)m
+240 fnt1 7583 1021(and)m 220 fnt2 7995 1018(@OneRo)m 3(w)k
+240 fnt1 0 733(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 7496(base)m
-240 fnt1 6782 7494(.)m 480 7120(The)m 898(left)s 1264(parameter)s
+5162(result)s 5752(as)s 6002(the)s 240 fnt6 6350 735(base)m
+240 fnt1 6782 733(.)m 480 359(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 6832(and)m 421(dif)s 6(ferent)k 1313(implementations)s
+8567(Lout,)s 0 71(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 6544(applies)m 752(to)s 1016(Basser)s 1737(Lout,)s
-2321(which)s 2988(uses)s 3475(the)s 3848(PostScript)s 4914(page)s
-5447(description)s 6591(language)s 7535([1)s 7709(].)s 7977(Similar)s
-8764(b)s 4(ut)k 0 6256(more)m 559(restricted)s 1517(possibilities)s
-2722(e)s 3(xist)k 3243(with)s 3737(the)s 4098(PDF)s
-4608(back)s 5134(end)s 5550(\(see)s 6003(a)s 6182(separate)s
-7033(document)s 8050(distrib)s 4(uted)k 0 5968(with)m 482(Lout\);)s
-1125(to)s 1364(include)s 2124(both,)s 2657(use)s 3032(the)s
-220 fnt2 3380 5965(@Bac)m 4(kEnd)k 240 fnt1 4525 5968(symbol)m
-5285(lik)s 2(e)k 5697(this:)s 220 fnt2 480 5467({ @Bac)m 4(kEnd @Case {)k
-480 5179( P)m 11(ostScr)k -3(ipt @Y)k 4(ield)k 480 4891( {)m
-480 4603( ...)m 480 4315( })m 480 4027( PDF @Y)m 4(ield)k 480 3739( {)m
-480 3451( ...)m 480 3163( })m 480 2875( })m 480 2587( @Gr)m 2(aphic)k
-480 2299( {)m 480 2011( ...)m 480 1723( })m 480 1435(})m 240 fnt1
-0 941(Returning)m 1039(to)s 1307(PostScript,)s 2425(the)s 2802(left)s
-3208(parameter)s 4251(refers)s 4874(to)s 5142(a)s 5337(coordinate)s
-6431(system)s 7184(whose)s 7881(origin)s 8538(is)s 8778(the)s
-0 653(bottom)m 773(left-hand)s 1728(corner)s 2433(of)s 2740(the)s
-3123(base.)s 3747(It)s 3987(may)s 4489(use)s 4899(the)s
-5282(symbols)s 220 fnt2 6166 650(xsiz)m 3(e)k 240 fnt1
-6751 653(and)m 220 fnt2 7190 650(ysiz)m 3(e)k 240 fnt1
-7774 653(to)m 8048(denote)s 8778(the)s 0 365(horizontal)m 1031(and)s
-1442(v)s 3(ertical)k 2216(size)s 2650(of)s 2928(the)s
-3283(base;)s 3827(similarly)s 15(,)k 220 fnt2 4774 362(xmar)m -3(k)k
-240 fnt1 5442 365(and)m 220 fnt2 5853 362(ymar)m -3(k)k
-240 fnt1 6521 365(denote)m 7222(the)s 7577(positions)s 8499(of)s
-8778(the)s 0 77(base')m 13(s)k 635(column)s 1410(and)s
-1814(ro)s 6(w)k 2234(marks:)s
+8007(description)s
grestore
gsave
1417 -15423 translate
@@ -13834,21 +14872,50 @@ grestore
gsave
0 16840 translate
0.0000 rotate
-240 fnt6 1417 -1580(3.38.)m 1991(@Gr)s 3(aphic)k 240 fnt5
+240 fnt6 1417 -1580(3.39.)m 1991(@Gr)s 3(aphic)k 240 fnt5
10250 -1583(65)m gsave
1417 -15423 translate
-240 fnt1 9066 13368 0 13290 240 288 60 LoutGraphic
+240 fnt1 9066 13368 0 13259 240 288 60 LoutGraphic
gsave
1 LoutMargSet
grestore
-gsave
-480 11296 translate
+0 13205(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 13205 7259 13367] /Subtype /Link /Dest /LOUTadobe1990ps /ANN pdfmark
+7164(1)s 7259(].)s
+7487(Similar)s 8233(b)s 4(ut)k 8579(more)s 0 12917(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 12629(Lout\);)m 643(to)s 882(include)s 1642(both,)s 2175(use)s
+2550(the)s 220 fnt2 2898 12626(@Bac)m 4(kEnd)k 240 fnt1
+4043 12629(symbol)m 4803(lik)s 2(e)k 5215(this:)s 220 fnt2
+480 12128({ @Bac)m 4(kEnd @Case {)k 480 11840( P)m 11(ostScr)k -3(ipt @Y)k 4(ield)k
+480 11552( {)m 480 11264( ...)m 480 10976( })m 480 10688( PDF @Y)m 4(ield)k
+480 10400( {)m 480 10112( ...)m 480 9824( })m 480 9536( })m 480 9248( @Gr)m 2(aphic)k
+480 8960( {)m 480 8672( ...)m 480 8384( })m 480 8096(})m 240 fnt1
+0 7602(Returning)m 1039(to)s 1307(PostScript,)s 2425(the)s 2802(left)s
+3208(parameter)s 4251(refers)s 4874(to)s 5142(a)s 5337(coordinate)s
+6431(system)s 7184(whose)s 7881(origin)s 8538(is)s 8778(the)s
+0 7314(bottom)m 773(left-hand)s 1728(corner)s 2433(of)s 2740(the)s
+3123(base.)s 3747(It)s 3987(may)s 4489(use)s 4899(the)s
+5282(symbols)s 220 fnt2 6166 7311(xsiz)m 3(e)k 240 fnt1
+6751 7314(and)m 220 fnt2 7190 7311(ysiz)m 3(e)k 240 fnt1
+7774 7314(to)m 8048(denote)s 8778(the)s 0 7026(horizontal)m 1031(and)s
+1442(v)s 3(ertical)k 2216(size)s 2650(of)s 2928(the)s
+3283(base;)s 3827(similarly)s 15(,)k 220 fnt2 4774 7023(xmar)m -3(k)k
+240 fnt1 5442 7026(and)m 220 fnt2 5853 7023(ymar)m -3(k)k
+240 fnt1 6521 7026(denote)m 7222(the)s 7577(positions)s 8499(of)s
+8778(the)s 0 6738(base')m 13(s)k 635(column)s 1410(and)s
+1814(ro)s 6(w)k 2234(marks:)s gsave
+480 4375 translate
180 fnt1 3570 2072 0 1994 180 288 45 LoutGraphic
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
@@ -13872,103 +14939,41 @@ grestore
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 10845(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 10557(ems,)m 492(f)s -13(')k 13(s,)k
+0 3924(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 3636(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 10021(l)m
-220 fnt2 666 10016(cm)m 240 fnt1 1197 10019(instead)m 1932(of)s
-2203(Lout')s 13(s)k 240 fnt6 3045 10021(l)m 240 fnt1
-3111 10019(c)m 240 fnt6 480 9733(l)m 220 fnt2 666 9728(in)m
-240 fnt1 1197 9731(instead)m 1932(of)s 2203(Lout')s 13(s)k
-240 fnt6 3045 9733(l)m 240 fnt1 3111 9731(i)m 240 fnt6
-480 9445(l)m 220 fnt2 666 9440(pt)m 240 fnt1 1197 9443(instead)m
-1932(of)s 2203(Lout')s 13(s)k 240 fnt6 3045 9445(l)m
-240 fnt1 3111 9443(p)m 240 fnt6 480 9157(l)m 220 fnt2
-666 9152(em)m 240 fnt1 1197 9155(instead)m 1932(of)s 2203(Lout')s 13(s)k
-240 fnt6 3045 9157(l)m 240 fnt1 3111 9155(m)m 240 fnt6
-480 8869(l)m 220 fnt2 666 8864(ft)m 240 fnt1 1197 8867(instead)m
-1932(of)s 2203(Lout')s 13(s)k 240 fnt6 3045 8869(l)m
-240 fnt1 3111 8867(f)m 240 fnt6 480 8581(l)m 220 fnt2
-666 8576(vs)m 240 fnt1 1197 8579(instead)m 1932(of)s 2203(Lout')s 13(s)k
-240 fnt6 3045 8581(l)m 240 fnt1 3111 8579(v)m 240 fnt6
-480 8293(l)m 220 fnt2 666 8288(sp)m 240 fnt1 1197 8291(instead)m
-1932(of)s 2203(Lout')s 13(s)k 240 fnt6 3045 8293(l)m
-240 fnt1 3111 8291(s)m 0 7750(Note)m 521(that)s 939(there)s
+1887(using)s 2459(the)s 2807(notation)s 240 fnt6 480 3100(l)m
+220 fnt2 666 3095(cm)m 240 fnt1 1197 3098(instead)m 1932(of)s
+2203(Lout')s 13(s)k 240 fnt6 3045 3100(l)m 240 fnt1
+3111 3098(c)m 240 fnt6 480 2812(l)m 220 fnt2 666 2807(in)m
+240 fnt1 1197 2810(instead)m 1932(of)s 2203(Lout')s 13(s)k
+240 fnt6 3045 2812(l)m 240 fnt1 3111 2810(i)m 240 fnt6
+480 2524(l)m 220 fnt2 666 2519(pt)m 240 fnt1 1197 2522(instead)m
+1932(of)s 2203(Lout')s 13(s)k 240 fnt6 3045 2524(l)m
+240 fnt1 3111 2522(p)m 240 fnt6 480 2236(l)m 220 fnt2
+666 2231(em)m 240 fnt1 1197 2234(instead)m 1932(of)s 2203(Lout')s 13(s)k
+240 fnt6 3045 2236(l)m 240 fnt1 3111 2234(m)m 240 fnt6
+480 1948(l)m 220 fnt2 666 1943(ft)m 240 fnt1 1197 1946(instead)m
+1932(of)s 2203(Lout')s 13(s)k 240 fnt6 3045 1948(l)m
+240 fnt1 3111 1946(f)m 240 fnt6 480 1660(l)m 220 fnt2
+666 1655(vs)m 240 fnt1 1197 1658(instead)m 1932(of)s 2203(Lout')s 13(s)k
+240 fnt6 3045 1660(l)m 240 fnt1 3111 1658(v)m 240 fnt6
+480 1372(l)m 220 fnt2 666 1367(sp)m 240 fnt1 1197 1370(instead)m
+1932(of)s 2203(Lout')s 13(s)k 240 fnt6 3045 1372(l)m
+240 fnt1 3111 1370(s)m 0 829(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 7376(A)m 732(point)s 1306(within)s 1996(the)s 2366(base)s
+480 455(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 7088(lengths.)m
-855(F)s 3(or)k 1244(e)s 3(xample,)k 220 fnt2
-480 6591(xmar)m -3(k ymar)k -3(k)k 240 fnt1 0 6093(is)m
-210(the)s 558(point)s 1110(where)s 1750(the)s 2098(marks)s
-2733(cross,)s 3331(and)s 220 fnt2 480 5599(0 2 cm)m 240 fnt1
-0 5144(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 4856(are)m 347(called)s 975(the)s 240 fnt6
-1323 4858(x)m 1489(coor)s 8(dinate)k 240 fnt1 2571 4856(and)m
-2975(the)s 240 fnt6 3323 4858(y)m 3485(coor)s 8(dinate)k
-240 fnt1 4567 4856(of)m 4838(the)s 5186(point.)s 480 4482(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 4484(path)m 240 fnt1 6297 4482(.)m
-6458(A)s 6686(path)s 7152(can)s 7539(be)s 7818(thought)s
-8608(of)s 8876(as)s 0 4194(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 3906(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 3534(x)m 2013(y)s 220 fnt2
-2175 3529(mo)m 3(v)k 5(eto)k 240 fnt1 3120 3532(Lift)m
-3537(the)s 3885(pen)s 4288(and)s 4692(mo)s 3(v)k 3(e)k
-5274(it)s 5466(to)s 5705(the)s 6053(indicated)s 6987(point.)s
-240 fnt6 2036 3175(x)m 2202(y)s 220 fnt2 2364 3170(lineto)m
-240 fnt1 3120 3173(Put)m 3557(the)s 3963(pen)s 4424(do)s 6(wn)k
-5066(and)s 5528(dra)s 3(w)k 6115(a)s 6339(straight)s
-7173(line)s 7645(to)s 7942(the)s 8348(indicat)s 8998(-)s
-3120 2885(ed)m 3404(point.)s 240 fnt6 702 2526(x)m 868(y)s
-1030(r)s 1188(angle1)s 1879(angle2)s 220 fnt2 2580 2521(arc)m
-240 fnt1 3120 2524(Put)m 3502(the)s 3853(pen)s 4259(do)s 6(wn)k
-4846(and)s 5253(dra)s 3(w)k 5785(a)s 5954(circular)s
-6745(arc)s 7092(whose)s 7763(centre)s 8405(has)s 8779(co)s
-8998(-)s 3120 2236(ordinates)m 240 fnt6 4058 2238(x)m 240 fnt1
-4235 2236(and)m 240 fnt6 4650 2238(y)m 240 fnt1 4823 2236(and)m
-5238(whose)s 5917(radius)s 6563(is)s 240 fnt6 6784 2238(r)m
-240 fnt1 6882 2236(.)m 7057(The)s 7496(arc)s 7851(be)s 3(gins)k
-8535(at)s 8778(the)s 3120 1948(angle)m 240 fnt6 3727 1950(angle1)m
-240 fnt1 4451 1948(measuring)m 5533(counterclockwise)s 7295(from)s 7852(the)s
-8233(point)s 8818(di)s 8998(-)s 3120 1660(rectly)m 3714(to)s
-3949(the)s 4294(right)s 4801(of)s 5069(the)s 5413(centre,)s
-6100(and)s 6500(proceeds)s 7397(counterclockwise)s 3120 1372(to)m 240 fnt6
-3361 1374(angle2)m 240 fnt1 4002 1372(.)m 4168(If)s 4401(the)s
-4751(arc)s 5098(is)s 5310(not)s 5679(the)s 6029(\207rst)s
-6462(thing)s 7010(on)s 7309(the)s 7660(path,)s 8181(a)s
-8350(straight)s 3120 1084(line)m 3549(will)s 3990(be)s 4287(dra)s 3(wn)k
-4954(connecting)s 6072(the)s 6435(current)s 7186(point)s 7753(to)s
-8007(the)s 8370(start)s 8855(of)s 3120 796(the)m 3468(arc.)s
-240 fnt6 589 487(x)m 755(y)s 917(r)s 1075(angle1)s
-1766(angle2)s 220 fnt2 2467 482(arcn)m 240 fnt1 3120 485(As)m
-3437(for)s 3775(arc,)s 4173(b)s 4(ut)k 4535(the)s
-4883(arc)s 5227(goes)s 5717(clockwise)s 6729(from)s 240 fnt6
-7253 487(angle1)m 240 fnt1 7944 485(to)m 240 fnt6 8183 487(angle2)m
-240 fnt1 8824 485(.)m 220 fnt2 1955 123(closepath)m 240 fnt1
-3120 126(Dra)m 3(w)k 3702(a)s 3868(straight)s 4644(line)s
-5058(back)s 5571(to)s 5810(the)s 6158(point)s 6710(most)s
-7235(recently)s 8058(mo)s 3(v)k 3(ed)k 8762(to.)s
-
+7897(by)s 8213(a)s 8401(pair)s 8855(of)s 0 167(lengths.)m
+855(F)s 3(or)k 1244(e)s 3(xample,)k
grestore
gsave
1417 -15423 translate
@@ -14019,83 +15024,111 @@ 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 13268 240 288 60 LoutGraphic
gsave
0 LoutMargSet
grestore
-0 13205(The)m 428(\207rst)s
-860(item)s 1344(should)s 2042(al)s 2(w)k 2(ays)k
-2753(be)s 3036(a)s 220 fnt2 3202 13202(mo)m 3(v)k 5(eto)k
-240 fnt1 3907 13205(,)m 220 fnt2 4015 13202(arc)m 240 fnt1
-4315 13205(,)m 4422(or)s 220 fnt2 4682 13202(arcn)m 240 fnt1
-5095 13205(.)m 5259(It)s 5465(should)s 6162(be)s 6445(clear)s
+220 fnt2 480 13211(xmar)m -3(k ymar)k -3(k)k
+240 fnt1 0 12713(is)m 210(the)s 558(point)s 1110(where)s
+1750(the)s 2098(marks)s 2733(cross,)s 3331(and)s 220 fnt2
+480 12219(0 2 cm)m 240 fnt1 0 11764(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 11476(are)m 347(called)s
+975(the)s 240 fnt6 1323 11478(x)m 1489(coor)s 8(dinate)k
+240 fnt1 2571 11476(and)m 2975(the)s 240 fnt6 3323 11478(y)m
+3485(coor)s 8(dinate)k 240 fnt1 4567 11476(of)m 4838(the)s
+5186(point.)s 480 11102(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 11104(path)m
+240 fnt1 6297 11102(.)m 6458(A)s 6686(path)s 7152(can)s
+7539(be)s 7818(thought)s 8608(of)s 8876(as)s 0 10814(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 10526(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 10154(x)m 2013(y)s 220 fnt2
+2175 10149(mo)m 3(v)k 5(eto)k 240 fnt1 3120 10152(Lift)m
+3537(the)s 3885(pen)s 4288(and)s 4692(mo)s 3(v)k 3(e)k
+5274(it)s 5466(to)s 5705(the)s 6053(indicated)s 6987(point.)s
+240 fnt6 2036 9795(x)m 2202(y)s 220 fnt2 2364 9790(lineto)m
+240 fnt1 3120 9793(Put)m 3557(the)s 3963(pen)s 4424(do)s 6(wn)k
+5066(and)s 5528(dra)s 3(w)k 6115(a)s 6339(straight)s
+7173(line)s 7645(to)s 7942(the)s 8348(indicat)s 8998(-)s
+3120 9505(ed)m 3404(point.)s 240 fnt6 702 9146(x)m 868(y)s
+1030(r)s 1188(angle1)s 1879(angle2)s 220 fnt2 2580 9141(arc)m
+240 fnt1 3120 9144(Put)m 3502(the)s 3853(pen)s 4259(do)s 6(wn)k
+4846(and)s 5253(dra)s 3(w)k 5785(a)s 5954(circular)s
+6745(arc)s 7092(whose)s 7763(centre)s 8405(has)s 8779(co)s
+8998(-)s 3120 8856(ordinates)m 240 fnt6 4058 8858(x)m 240 fnt1
+4235 8856(and)m 240 fnt6 4650 8858(y)m 240 fnt1 4823 8856(and)m
+5238(whose)s 5917(radius)s 6563(is)s 240 fnt6 6784 8858(r)m
+240 fnt1 6882 8856(.)m 7057(The)s 7496(arc)s 7851(be)s 3(gins)k
+8535(at)s 8778(the)s 3120 8568(angle)m 240 fnt6 3727 8570(angle1)m
+240 fnt1 4451 8568(measuring)m 5533(counterclockwise)s 7295(from)s 7852(the)s
+8233(point)s 8818(di)s 8998(-)s 3120 8280(rectly)m 3714(to)s
+3949(the)s 4294(right)s 4801(of)s 5069(the)s 5413(centre,)s
+6100(and)s 6500(proceeds)s 7397(counterclockwise)s 3120 7992(to)m 240 fnt6
+3361 7994(angle2)m 240 fnt1 4002 7992(.)m 4168(If)s 4401(the)s
+4751(arc)s 5098(is)s 5310(not)s 5679(the)s 6029(\207rst)s
+6462(thing)s 7010(on)s 7309(the)s 7660(path,)s 8181(a)s
+8350(straight)s 3120 7704(line)m 3549(will)s 3990(be)s 4287(dra)s 3(wn)k
+4954(connecting)s 6072(the)s 6435(current)s 7186(point)s 7753(to)s
+8007(the)s 8370(start)s 8855(of)s 3120 7416(the)m 3468(arc.)s
+240 fnt6 589 7107(x)m 755(y)s 917(r)s 1075(angle1)s
+1766(angle2)s 220 fnt2 2467 7102(arcn)m 240 fnt1 3120 7105(As)m
+3437(for)s 3775(arc,)s 4173(b)s 4(ut)k 4535(the)s
+4883(arc)s 5227(goes)s 5717(clockwise)s 6729(from)s 240 fnt6
+7253 7107(angle1)m 240 fnt1 7944 7105(to)m 240 fnt6 8183 7107(angle2)m
+240 fnt1 8824 7105(.)m 220 fnt2 1955 6743(closepath)m 240 fnt1
+3120 6746(Dra)m 3(w)k 3702(a)s 3868(straight)s 4644(line)s
+5058(back)s 5571(to)s 5810(the)s 6158(point)s 6710(most)s
+7235(recently)s 8058(mo)s 3(v)k 3(ed)k 8762(to.)s
+0 6372(The)m 428(\207rst)s 860(item)s 1344(should)s 2042(al)s 2(w)k 2(ays)k
+2753(be)s 3036(a)s 220 fnt2 3202 6369(mo)m 3(v)k 5(eto)k
+240 fnt1 3907 6372(,)m 220 fnt2 4015 6369(arc)m 240 fnt1
+4315 6372(,)m 4422(or)s 220 fnt2 4682 6369(arcn)m 240 fnt1
+5095 6372(.)m 5259(It)s 5465(should)s 6162(be)s 6445(clear)s
6968(from)s 7493(this)s 7889(that)s 8308(the)s 8657(path)s
-0 12917(gi)m 6(v)k 3(en)k 580(earlier:)s 220 fnt2
-480 12423(0 0 mo)m 3(v)k 5(eto)k 480 12135(0 ysiz)m 3(e lineto)k
-480 11847(xsiz)m 3(e ysiz)k 3(e lineto)k 480 11559(xsiz)m 3(e 0 lineto)k
-480 11271(closepath)m 240 fnt1 0 10775(traces)m 607(around)s 1330(the)s
+0 6084(gi)m 6(v)k 3(en)k 580(earlier:)s 220 fnt2
+480 5590(0 0 mo)m 3(v)k 5(eto)k 480 5302(0 ysiz)m 3(e lineto)k
+480 5014(xsiz)m 3(e ysiz)k 3(e lineto)k 480 4726(xsiz)m 3(e 0 lineto)k
+480 4438(closepath)m 240 fnt1 0 3942(traces)m 607(around)s 1330(the)s
1678(boundary)s 2637(of)s 2908(the)s 3256(base)s 3737(with)s
-4219(the)s 4567(pen)s 4970(do)s 6(wn.)k 480 10401(Once)m
+4219(the)s 4567(pen)s 4970(do)s 6(wn.)k 480 3568(Once)m
1039(a)s 1203(path)s 1670(is)s 1877(set)s 2200(up,)s
2545(we)s 2877(are)s 3222(ready)s 3805(to)s 240 fnt6
-4041 10403(paint)m 240 fnt1 4595 10401(it)m 4785(onto)s 5262(the)s
+4041 3570(paint)m 240 fnt1 4595 3568(it)m 4785(onto)s 5262(the)s
5607(page.)s 6221(There)s 6832(are)s 7176(tw)s 2(o)k
-7584(choices:)s 8405(we)s 8737(can)s 0 10113(either)m 240 fnt6
-618 10115(str)m 10(ok)k 2(e)k 240 fnt1 1259 10113(it,)m
+7584(choices:)s 8405(we)s 8737(can)s 0 3280(either)m 240 fnt6
+618 3282(str)m 10(ok)k 2(e)k 240 fnt1 1259 3280(it,)m
1514(which)s 2172(means)s 2850(to)s 3105(display)s 3866(it)s
4074(as)s 4340(described;)s 5383(or)s 5658(we)s 6009(can)s
-240 fnt6 6414 10115(\207ll)m 240 fnt1 6742 10113(it,)m 6997(which)s
-7655(means)s 8333(to)s 8588(paint)s 0 9825(e)m 6(v)k 3(erything)k
+240 fnt6 6414 3282(\207ll)m 240 fnt1 6742 3280(it,)m 6997(which)s
+7655(means)s 8333(to)s 8588(paint)s 0 2992(e)m 6(v)k 3(erything)k
1067(inside)s 1694(it)s 1886(gre)s 3(y)k 2362(or)s
2621(black.)s 3303(F)s 3(or)k 3692(stroking)s 4529(the)s
4877(tw)s 2(o)k 5287(main)s 5822(options)s 6578(are)s
-240 fnt6 1581 9322(length)m 220 fnt2 2234 9317(setline)m 4(width)k
-240 fnt1 3600 9320(The)m 4028(pen)s 4431(will)s 4857(dra)s 3(w)k
+240 fnt6 1581 2489(length)m 220 fnt2 2234 2484(setline)m 4(width)k
+240 fnt1 3600 2487(The)m 4028(pen)s 4431(will)s 4857(dra)s 3(w)k
5386(lines)s 5888(of)s 6159(the)s 6507(gi)s 6(v)k 3(en)k
-7087(width.)s 220 fnt2 1553 8812([)m 240 fnt6 1668 8817(length)m
-220 fnt2 2321 8812(])m 2430(0)s 2605(setdash)s 240 fnt1
-3600 8815(The)m 4034(pen)s 4444(will)s 4876(dra)s 3(w)k
+7087(width.)s
+[ /Dest /LOUT12_1492_pre_grap_1 /DEST pdfmark
+220 fnt2 1553 1979([)m 240 fnt6 1668 1984(length)m
+220 fnt2 2321 1979(])m 2430(0)s 2605(setdash)s 240 fnt1
+3600 1982(The)m 4034(pen)s 4444(will)s 4876(dra)s 3(w)k
5412(dashed)s 6142(lines)s 6650(when)s 7233(it)s 7432(is)s
-7648(do)s 6(wn,)k 8289(with)s 8778(the)s 3600 8527(dashes)m
+7648(do)s 6(wn,)k 8289(with)s 8778(the)s 3600 1694(dashes)m
4289(each)s 4784(of)s 5055(the)s 5403(gi)s 6(v)k 3(en)k
-5983(length.)s 0 8024(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 8021(strok)m 4(e)k 240 fnt1 4408 8024(.)m 4572(So,)s
-4932(for)s 5270(e)s 3(xample,)k 220 fnt2 480 7526({ 0 0 mo)m 3(v)k 5(eto xsiz)k 3(e 0 lineto)k
-480 7238( 2 pt setline)m 4(width [ 5 pt ] 0 setdash strok)k 4(e)k 480 6950(})m 480 6662(@Gr)m 2(aphic { 3i @Wide })k
-240 fnt1 0 6166(has)m 370(result)s 4320 0 0 0 240 288 60 480 5876 LoutGr2
-0 0 moveto xsize 0 lineto
-2 pt setlinewidth [ 5 pt ] 0 setdash stroke
-grestore
+5983(length.)s
+[ /Dest /LOUT12_1492_pre_grap_2 /DEST pdfmark
grestore
-480 5160(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 5157(setg)m 2(r)k 2(a)k 6(y)k
-240 fnt1 7286 5160(,)m 7389(which)s 8027(determines)s 0 4872(the)m
-348(shade)s 949(of)s 1220(gre)s 3(y)k 1696(to)s
-1935(use,)s 2361(on)s 2658(a)s 2824(scale)s 3357(from)s
-3881(0)s 4056(\(black\))s 4781(to)s 5020(1)s 5175(\(white\).)s
-6028(So,)s 6388(for)s 6726(e)s 3(xample,)k 220 fnt2
-480 4374({ 0 0 mo)m 3(v)k 5(eto xsiz)k 3(e 0 lineto 0 ysiz)k 3(e lineto closepath)k
-480 4086( 0.8 setg)m 2(r)k 2(a)k 6(y \207ll)k 480 3798(})m
-480 3510(@Gr)m 2(aphic)k 480 3222({ 2c @Wide 2c @High })m 240 fnt1 0 2723(has)m
-370(result)s 1134 1134 0 1134 240 288 60 480 1299 LoutGr2
-0 0 moveto xsize 0 lineto 0 ysize lineto closepath
-0.8 setgray fill
-grestore
-
-grestore
-480 583(There)m 1107(are)s 1468(man)s 3(y)k
-2066(other)s 2631(options.)s 3515(The)s 3957(v)s 6(alue)k
-4540(of)s 4825(the)s 5188(left)s 5579(parameter)s 6608(of)s
-220 fnt2 6893 580(@Gr)m 2(aphic)k 240 fnt1 7952 583(may)m
-8432(be)s 8729(an)s 3(y)k 0 295(fragment)m 922(of)s
-1193(the)s 1541(PostScript)s 2583(page)s 3091(description)s 4210(language)s
-5130([1)s 5304(].)s 5547(Here)s 6067(are)s 6414(tw)s 2(o)k
-6824(other)s 7375(e)s 3(xamples:)k
-grestore
gsave
1417 -15423 translate
240 fnt1 0 0 0 0 240 288 60 LoutGraphic
@@ -14118,7 +15151,6 @@ showpage
%%+ font Times-Italic
%%+ font Times-Bold
%%+ font Helvetica
-%%+ font Symbol
/pgsave save def
%%IncludeResource: font Times-Roman
/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
@@ -14132,8 +15164,6 @@ showpage
%%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
@@ -14145,96 +15175,94 @@ grestore
gsave
0 16840 translate
0.0000 rotate
-240 fnt6 1417 -1580(3.38.)m 1991(@Gr)s 3(aphic)k 240 fnt5
+240 fnt6 1417 -1580(3.39.)m 1991(@Gr)s 3(aphic)k 240 fnt5
10248 -1583(67)m gsave
1417 -15423 translate
-240 fnt1 9066 13368 0 13268 240 288 60 LoutGraphic
+240 fnt1 9066 13368 0 13259 240 288 60 LoutGraphic
gsave
1 LoutMargSet
grestore
-220 fnt2 480 13211(xsiz)m 3(e)k 1030(2)s
-1203(div)s 240 fnt1 0 12757(denoting)m 891(a)s 1057(length)s
-1712(equal)s 2285(to)s 2524(half)s 2967(the)s 3315(horizontal)s
-4339(size)s 4766(of)s 5037(the)s 5385(base,)s 5917(and)s
-220 fnt2 480 12258(gsa)m 4(v)k 5(e)k 1110(\207ll)s
-1363(g)s 2(restore)k 2219(strok)s 4(e)k 240 fnt1
-0 11759(which)m 648(both)s 1138(\207lls)s 1554(and)s 1965(strok)s 2(es)k
-2698(the)s 3053(path.)s 3636(Since)s 4230(Basser)s 4933(Lout)s
-5452(does)s 5949(not)s 6322(check)s 6948(that)s 7373(the)s
-7728(left)s 8112(parameter)s 0 11471(is)m 209(v)s 6(alid)k
-737(PostScript,)s 1824(it)s 2014(is)s 2222(possible)s 3061(to)s
-3298(cause)s 3883(mysterious)s 4981(errors)s 5586(in)s 5828(the)s
-6174(printing)s 6982(de)s 6(vice,)k 7705(resulting)s 8592(in)s
-8833(no)s 0 11183(output,)m 708(if)s 914(an)s 1186(incorrect)s
-2083(v)s 6(alue)k 2640(is)s 2839(gi)s 6(v)k 3(en.)k
-3515(It)s 3709(is)s 3908(a)s 4063(good)s 4590(idea)s
-5037(to)s 5265(encapsulate)s 6425(graphics)s 7275(objects)s 7992(in)s
-8224(carefully)s 0 10895(tested)m 635(de\207nitions,)s 1772(lik)s 2(e)k
-2205(those)s 2786(of)s 3078(the)s 3446(Diag)s 3985(\207gure)s
-4619(dra)s 3(wing)k 5473(package)s 6334([4)s 6527(,)s
-6654(Chapter)s 7492(9],)s 7818(to)s 8078(be)s 8380(sure)s
-8855(of)s 0 10607(a)m 4(v)k 4(oiding)k 883(these)s
-1430(errors.)s 480 10233(PostScript)m 1543(e)s 3(xperts)k 2302(may)s
-2789(\207nd)s 3241(the)s 3610(follo)s 6(wing)k 4608(information)s
-5814(helpful)s 6567(when)s 7164(designing)s 8170(adv)s 6(anced)k
-0 9945(graphics)m 861(features.)s 1780(The)s 2208(left)s 2585(parameter)s
-3599(of)s 220 fnt2 3870 9942(@Gr)m 2(aphic)k 240 fnt1
-4914 9945(may)m 5380(ha)s 4(v)k 3(e)k 5881(tw)s 2(o)k
-6291(parts,)s 6862(separated)s 7822(by)s 220 fnt2 8116 9942(//)m
-240 fnt1 8241 9945(:)m 220 fnt2 480 9437({)m 240 fnt6
-604 9442(\207r)m 2(st)k 1038(part)s 220 fnt2 1501 9437(//)m
-240 fnt6 1686 9442(second)m 2417(part)s 220 fnt2 2880 9437(} @Gr)m 2(aphic)k
-240 fnt6 4058 9442(object)m 240 fnt1 0 8941(If)m 230(there)s
-763(is)s 973(no)s 220 fnt2 1266 8938(//)m 240 fnt1
-1391 8941(,)m 1498(the)s 1846(second)s 2569(part)s 3000(is)s
+0 13205(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 13202(strok)m 4(e)k 240 fnt1 4408 13205(.)m 4572(So,)s
+4932(for)s 5270(e)s 3(xample,)k 220 fnt2 480 12707({ 0 0 mo)m 3(v)k 5(eto xsiz)k 3(e 0 lineto)k
+480 12419( 2 pt setline)m 4(width [ 5 pt ] 0 setdash strok)k 4(e)k 480 12131(})m 480 11843(@Gr)m 2(aphic { 3i @Wide })k
+240 fnt1 0 11347(has)m 370(result)s 4320 0 0 0 240 288 60 480 11057 LoutGr2
+0 0 moveto xsize 0 lineto
+2 pt setlinewidth [ 5 pt ] 0 setdash stroke
+grestore
+
+grestore
+480 10341(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 10338(setg)m 2(r)k 2(a)k 6(y)k
+240 fnt1 7286 10341(,)m 7389(which)s 8027(determines)s 0 10053(the)m
+348(shade)s 949(of)s 1220(gre)s 3(y)k 1696(to)s
+1935(use,)s 2361(on)s 2658(a)s 2824(scale)s 3357(from)s
+3881(0)s 4056(\(black\))s 4781(to)s 5020(1)s 5175(\(white\).)s
+6028(So,)s 6388(for)s 6726(e)s 3(xample,)k 220 fnt2
+480 9555({ 0 0 mo)m 3(v)k 5(eto xsiz)k 3(e 0 lineto 0 ysiz)k 3(e lineto closepath)k
+480 9267( 0.8 setg)m 2(r)k 2(a)k 6(y \207ll)k 480 8979(})m
+480 8691(@Gr)m 2(aphic)k 480 8403({ 2c @Wide 2c @High })m 240 fnt1 0 7904(has)m
+370(result)s 1134 1134 0 1134 240 288 60 480 6480 LoutGr2
+0 0 moveto xsize 0 lineto 0 ysize lineto closepath
+0.8 setgray fill
+grestore
+
+grestore
+480 5764(There)m 1107(are)s 1468(man)s 3(y)k
+2066(other)s 2631(options.)s 3515(The)s 3957(v)s 6(alue)k
+4540(of)s 4825(the)s 5188(left)s 5579(parameter)s 6608(of)s
+220 fnt2 6893 5761(@Gr)m 2(aphic)k 240 fnt1 7952 5764(may)m
+8432(be)s 8729(an)s 3(y)k 0 5476(fragment)m 922(of)s
+1193(the)s 1541(PostScript)s 2583(page)s 3091(description)s 4210(language)s
+5130([)s
+[ /Rect [5201 5476 5296 5638] /Subtype /Link /Dest /LOUTadobe1990ps /ANN pdfmark
+5201(1)s 5296(].)s 5539(Here)s 6059(are)s
+6406(tw)s 2(o)k 6816(other)s 7367(e)s 3(xamples:)k
+220 fnt2 480 4979(xsiz)m 3(e)k 1030(2)s 1203(div)s
+240 fnt1 0 4525(denoting)m 891(a)s 1057(length)s 1712(equal)s
+2285(to)s 2524(half)s 2967(the)s 3315(horizontal)s 4339(size)s
+4766(of)s 5037(the)s 5385(base,)s 5917(and)s 220 fnt2
+480 4026(gsa)m 4(v)k 5(e)k 1110(\207ll)s 1363(g)s 2(restore)k
+2219(strok)s 4(e)k 240 fnt1 0 3527(which)m 648(both)s
+1138(\207lls)s 1554(and)s 1965(strok)s 2(es)k 2698(the)s
+3053(path.)s 3636(Since)s 4230(Basser)s 4933(Lout)s 5452(does)s
+5949(not)s 6322(check)s 6948(that)s 7373(the)s 7728(left)s
+8112(parameter)s 0 3239(is)m 209(v)s 6(alid)k 737(PostScript,)s
+1824(it)s 2014(is)s 2222(possible)s 3061(to)s 3298(cause)s
+3883(mysterious)s 4981(errors)s 5586(in)s 5828(the)s 6174(printing)s
+6982(de)s 6(vice,)k 7705(resulting)s 8592(in)s 8833(no)s
+0 2951(output,)m 708(if)s 914(an)s 1186(incorrect)s 2083(v)s 6(alue)k
+2640(is)s 2839(gi)s 6(v)k 3(en.)k 3515(It)s
+3709(is)s 3908(a)s 4063(good)s 4590(idea)s 5037(to)s
+5265(encapsulate)s 6425(graphics)s 7275(objects)s 7992(in)s 8224(carefully)s
+0 2663(tested)m 635(de\207nitions,)s 1773(lik)s 2(e)k 2206(those)s
+2788(of)s 3080(the)s 3449(Diag)s 3988(\207gure)s 4623(dra)s 3(wing)k
+5478(package)s 6339([)s
+[ /Rect [6410 2663 6524 2825] /Subtype /Link /Dest /LOUTkingston1995lout_user /ANN pdfmark
+6410(4)s 6524(,)s 6652(Chapter)s
+7490(9],)s
+[ /Dest /LOUT15_4082_pre_grap_4 /DEST pdfmark
+7817(to)s 8077(be)s 8380(sure)s 8855(of)s
+0 2375(a)m 4(v)k 4(oiding)k 883(these)s 1430(errors.)s
+480 2001(PostScript)m 1543(e)s 3(xperts)k 2302(may)s 2789(\207nd)s
+3241(the)s 3610(follo)s 6(wing)k 4608(information)s 5814(helpful)s
+6567(when)s 7164(designing)s 8170(adv)s 6(anced)k 0 1713(graphics)m
+861(features.)s 1780(The)s 2208(left)s 2585(parameter)s 3599(of)s
+220 fnt2 3870 1710(@Gr)m 2(aphic)k 240 fnt1 4914 1713(may)m
+5380(ha)s 4(v)k 3(e)k 5881(tw)s 2(o)k
+6291(parts,)s 6862(separated)s 7822(by)s 220 fnt2 8116 1710(//)m
+240 fnt1 8241 1713(:)m 220 fnt2 480 1205({)m 240 fnt6
+604 1210(\207r)m 2(st)k 1038(part)s 220 fnt2 1501 1205(//)m
+240 fnt6 1686 1210(second)m 2417(part)s 220 fnt2 2880 1205(} @Gr)m 2(aphic)k
+240 fnt6 4058 1210(object)m 240 fnt1 0 709(If)m 230(there)s
+763(is)s 973(no)s 220 fnt2 1266 706(//)m 240 fnt1
+1391 709(,)m 1498(the)s 1846(second)s 2569(part)s 3000(is)s
3210(tak)s 2(en)k 3783(to)s 4022(be)s 4304(empty)s 15(.)k
5051(The)s 5479(PostScript)s 6521(output)s 7193(has)s 7563(the)s
-7911(form)s 220 fnt2 480 8484(gsa)m 4(v)k 5(e)k
-240 fnt6 480 8201(x)m 646(y)s 220 fnt2 808 8196(tr)m 2(anslate)k
-240 fnt6 480 7913(Code)m 1039(whic)s 3(h)k 1663(de\207nes)s
-220 fnt2 2383 7908(xsiz)m 3(e)k 240 fnt6 2872 7913(,)m
-220 fnt2 2965 7908(ysiz)m 3(e)k 240 fnt6 3454 7913(,)m
-220 fnt2 3547 7908(xmar)m -3(k)k 240 fnt6 4148 7913(,)m
-220 fnt2 4241 7908(ymar)m -3(k)k 240 fnt6 4842 7913(,)m
-220 fnt2 4935 7908(ft)m 240 fnt6 5053 7913(,)m 220 fnt2
-5146 7908(vs)m 240 fnt6 5359 7913(,)m 5452(and)s 220 fnt2
-5878 7908(sp)m 480 7620(gsa)m 4(v)k 5(e)k 240 fnt6
-480 7337(\207r)m 2(st)k 914(part)s 220 fnt2 480 7044(g)m 2(restore)k
-240 fnt6 480 6761(Code)m 1039(whic)s 3(h)k 1663(r)s 8(ender)k 2(s)k
-2439(the)s 2784(right)s 3313(par)s 3(ameter)k 4372(in)s
-4612(tr)s 3(anslated)k 5645(coor)s 8(dinates)k 480 6473(second)m
-1211(part)s 220 fnt2 480 6180(g)m 2(restore)k 240 fnt1
-0 5681(where)m 240 fnt6 628 5683(x)m 240 fnt4 733 5675(,)m
-240 fnt6 802 5683(y)m 240 fnt1 952 5681(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 5393(operations,)m 1112(lik)s 2(e)k
-220 fnt2 1533 5390(sa)m 4(v)k 5(e)k 240 fnt1
-2049 5393(and)m 220 fnt2 2462 5390(restore)m 240 fnt1 3206 5393(or)m
-220 fnt2 3474 5390(begin)m 240 fnt1 4065 5393(and)m 220 fnt2
-4478 5390(end)m 240 fnt1 4832 5393(,)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 5105(the)m 348(Diag)s 866(package)s
-1706(for)s 2044(e)s 3(xamples.)k 240 fnt5 0 4312(3.39.)m
-591(@PlainGraphic)s 240 fnt1 567 3835(The)m 220 fnt2 1023 3832(@PlainGr)m 2(aphic)k
-240 fnt1 2580 3835(symbol)m 3368(is)s 3606(a)s 4(v)k 3(ery)k
-4211(rudimentary)s 5461(analogue)s 6408(for)s 6774(plain)s 7337(te)s 3(xt)k
-7779(output)s 8479(of)s 8778(the)s 220 fnt2 0 3544(@Gr)m 2(aphic)k
-240 fnt1 1037 3547(symbol)m 1789(for)s 2119(PostScript)s 3153(output.)s
-3921(Its)s 4202(result)s 4784(is)s 4986(its)s 5254(right)s
-5757(parameter)s 6763(printed)s 7490(on)s 7779(a)s 7937(background)s
-0 3259(created)m 747(by)s 1041(repeated)s 1908(printings)s 2809(of)s
-3080(its)s 3356(left)s 3733(parameter)s 9(,)k 4785(which)s
-5427(must)s 5952(be)s 6234(a)s 6400(simple)s 7093(w)s 2(ord.)k
-7747(F)s 3(or)k 8136(e)s 3(xample,)k 480 2754("." @PlainGraphic 5s @W)m 9(ide)k
-0 2251(w)m 2(ould)k 676(produce)s 1525(\207v)s 3(e)k
-1959(dots.)s 220 fnt2 2544 2248(@PlainGr)m 2(aphic)k 240 fnt1
-4096 2251(is)m 4328(used)s 4847(in)s 5112(the)s 220 fnt2
-5482 2248(tb)m 4(l)k 240 fnt1 5777 2251(table-dra)m 3(wing)k
-7176(package)s 8038(to)s 8299(produce)s 0 1963(plain-te)m 3(xt)k
-972(rules.)s 240 fnt5 0 1170(3.40.)m 591(@IncludeGraphic)s 2491(and)s
-2932(@SysIncludeGraphic)s
+7911(form)s
grestore
gsave
1417 -15423 translate
@@ -14258,6 +15286,7 @@ showpage
%%+ font Times-Bold
%%+ font Times-Italic
%%+ font Helvetica
+%%+ font Symbol
/pgsave save def
%%IncludeResource: font Times-Roman
/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
@@ -14271,6 +15300,8 @@ showpage
%%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
@@ -14285,117 +15316,125 @@ 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 13368 240 288 60 LoutGraphic
+240 fnt1 9066 13368 0 13308 240 288 60 LoutGraphic
gsave
0 LoutMargSet
grestore
-540 12940(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 12439(@IncludeGr)m 2(aphic "m)k 3(ypor)k -8(tr)k 2(ait.eps")k
-240 fnt1 0 11941(The)m 457(parameter)s 1500(is)s 1739(implementation-dependent;)s
+220 fnt2 480 13251(gsa)m 4(v)k 5(e)k
+240 fnt6 480 12968(x)m 646(y)s 220 fnt2 808 12963(tr)m 2(anslate)k
+240 fnt6 480 12680(Code)m 1039(whic)s 3(h)k 1663(de\207nes)s
+220 fnt2 2383 12675(xsiz)m 3(e)k 240 fnt6 2872 12680(,)m
+220 fnt2 2965 12675(ysiz)m 3(e)k 240 fnt6 3454 12680(,)m
+220 fnt2 3547 12675(xmar)m -3(k)k 240 fnt6 4148 12680(,)m
+220 fnt2 4241 12675(ymar)m -3(k)k 240 fnt6 4842 12680(,)m
+220 fnt2 4935 12675(ft)m 240 fnt6 5053 12680(,)m 220 fnt2
+5146 12675(vs)m 240 fnt6 5359 12680(,)m 5452(and)s 220 fnt2
+5878 12675(sp)m 480 12387(gsa)m 4(v)k 5(e)k 240 fnt6
+480 12104(\207r)m 2(st)k 914(part)s 220 fnt2 480 11811(g)m 2(restore)k
+240 fnt6 480 11528(Code)m 1039(whic)s 3(h)k 1663(r)s 8(ender)k 2(s)k
+2439(the)s 2784(right)s 3313(par)s 3(ameter)k 4372(in)s
+4612(tr)s 3(anslated)k 5645(coor)s 8(dinates)k 480 11240(second)m
+1211(part)s 220 fnt2 480 10947(g)m 2(restore)k 240 fnt1
+0 10448(where)m 240 fnt6 628 10450(x)m 240 fnt4 733 10442(,)m
+240 fnt6 802 10450(y)m 240 fnt1 952 10448(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 10160(operations,)m 1112(lik)s 2(e)k
+220 fnt2 1533 10157(sa)m 4(v)k 5(e)k 240 fnt1
+2049 10160(and)m 220 fnt2 2462 10157(restore)m 240 fnt1 3206 10160(or)m
+220 fnt2 3474 10157(begin)m 240 fnt1 4065 10160(and)m 220 fnt2
+4478 10157(end)m 240 fnt1 4832 10160(,)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 9872(the)m 348(Diag)s 866(package)s
+1706(for)s 2044(e)s 3(xamples.)k 240 fnt5 0 9079(3.40.)m
+591(@PlainGraphic)s
+[ /Dest /LOUTplaingraphic /DEST pdfmark
+
+[ /Dest /LOUT15_4082_pre_plai_1 /DEST pdfmark
+240 fnt1 567 8602(The)m 220 fnt2 1023 8599(@PlainGr)m 2(aphic)k
+240 fnt1 2580 8602(symbol)m 3368(is)s 3606(a)s 4(v)k 3(ery)k
+4211(rudimentary)s 5461(analogue)s 6408(for)s 6774(plain)s 7337(te)s 3(xt)k
+7779(output)s 8479(of)s 8778(the)s 220 fnt2 0 8311(@Gr)m 2(aphic)k
+240 fnt1 1037 8314(symbol)m 1789(for)s 2119(PostScript)s 3153(output.)s
+3921(Its)s 4202(result)s 4784(is)s 4986(its)s 5254(right)s
+5757(parameter)s 6763(printed)s 7490(on)s 7779(a)s 7937(background)s
+0 8026(created)m 747(by)s 1041(repeated)s 1908(printings)s 2809(of)s
+3080(its)s 3356(left)s 3733(parameter)s 9(,)k 4785(which)s
+5427(must)s 5952(be)s 6234(a)s 6400(simple)s 7093(w)s 2(ord.)k
+7747(F)s 3(or)k 8136(e)s 3(xample,)k 480 7521("." @PlainGraphic 5s @W)m 9(ide)k
+0 7018(w)m 2(ould)k 676(produce)s 1525(\207v)s 3(e)k
+1959(dots.)s 220 fnt2 2544 7015(@PlainGr)m 2(aphic)k 240 fnt1
+4096 7018(is)m 4328(used)s 4847(in)s 5112(the)s 220 fnt2
+5482 7015(tb)m 4(l)k 240 fnt1 5777 7018(table-dra)m 3(wing)k
+7176(package)s 8038(to)s 8299(produce)s 0 6730(plain-te)m 3(xt)k
+972(rules.)s 240 fnt5 0 5937(3.41.)m 591(@IncludeGraphic)s 2491(and)s
+2932(@SysIncludeGraphic)s
+[ /Dest /LOUTincludegraphic /DEST pdfmark
+
+[ /Dest /LOUT15_4082_pre_incg_1 /DEST pdfmark
+
+[ /Dest /LOUT15_4082_pre_incg_2 /DEST pdfmark
+
+[ /Dest /LOUT15_4082_pre_incg_3 /DEST pdfmark
+240 fnt1 540 5460(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 4959(@IncludeGr)m 2(aphic "m)k 3(ypor)k -8(tr)k 2(ait.eps")k
+240 fnt1 0 4461(The)m 457(parameter)s 1500(is)s 1739(implementation-dependent;)s
4443(in)s 4715(Basser)s 5441(Lout)s 5982(it)s 6203(is)s
6442(an)s 6754(object)s 7427(whose)s 8124(v)s 6(alue)k
-8721(is)s 8960(a)s 0 11653(simple)m 705(w)s 2(ord)k
+8721(is)s 8960(a)s 0 4173(simple)m 705(w)s 2(ord)k
1265(denoting)s 2168(the)s 2528(name)s 3114(of)s 3397(a)s
3575(\207le.)s 4056(This)s 4544(\207le)s 4917(should)s 5626(ideally)s
6342(be)s 6636(a)s 6814(PostScript)s 7868(EPS)s 8338(V)s 26(ersion)k
-0 11365(3.0)m 345(\207le)s 696([1)s 870(],)s 1045(since)s
-1582(then)s 2040(Lout)s 2542(will)s 2957(k)s 2(eep)k
-3450(careful)s 4156(track)s 4684(of)s 4944(what)s 5459(resources)s
-6401(are)s 6738(required)s 7581(for)s 7909(printing)s 8708(that)s
-0 11077(\207le.)m 473(Ho)s 6(we)k 6(v)k 3(er)k 9(,)k
+0 3885(3.0)m 345(\207le)s 696([)s
+[ /Rect [767 3885 862 4047] /Subtype /Link /Dest /LOUTadobe1990ps /ANN pdfmark
+767(1)s 862(],)s
+1038(since)s 1575(then)s 2034(Lout)s 2536(will)s 2952(k)s 2(eep)k
+3445(careful)s 4152(track)s 4680(of)s 4941(what)s 5456(resources)s
+6399(are)s 6736(required)s 7580(for)s 7908(printing)s 8708(that)s
+0 3597(\207le.)m 473(Ho)s 6(we)k 6(v)k 3(er)k 9(,)k
1437(an)s 3(y)k 1838(PostScript)s 2885(\207le)s 3250(containing)s
-4317(the)s 220 fnt2 4669 11074(%%BoundingBo)m 6(x:)k 240 fnt1
-6464 11077(comment)m 7418(and)s 7826(not)s 8197(requiring)s 0 10789(unusual)m
+4317(the)s 220 fnt2 4669 3594(%%BoundingBo)m 6(x:)k 240 fnt1
+6464 3597(comment)m 7418(and)s 7826(not)s 8197(requiring)s 0 3309(unusual)m
800(resources)s 1753(is)s 1963(lik)s 2(ely)k 2559(to)s
-2798(w)s 2(ork.)k 480 10415(The)m 924(result)s 1530(of)s
-220 fnt2 1817 10412(@IncludeGr)m 2(aphic)k 240 fnt1 3584 10415(is)m
+2798(w)s 2(ork.)k 480 2935(The)m 924(result)s 1530(of)s
+220 fnt2 1817 2932(@IncludeGr)m 2(aphic)k 240 fnt1 3584 2935(is)m
3811(an)s 4110(ordinary)s 4990(Lout)s 5518(object)s 6179(with)s
-6677(marks)s 7328(through)s 8146(its)s 8439(centre.)s 0 10127(It)m
+6677(marks)s 7328(through)s 8146(its)s 8439(centre.)s 0 2647(It)m
202(may)s 665(be)s 944(rotated,)s 1711(scaled,)s 2412(and)s
2813(generally)s 3753(treated)s 4456(lik)s 2(e)k 4865(an)s 3(y)k
5259(other)s 5807(object.)s 6552(Basser)s 7246(Lout)s 7755(determines)s
-8850(its)s 0 9839(size)m 434(by)s 735(consulting)s 1792(the)s
+8850(its)s 0 2359(size)m 434(by)s 735(consulting)s 1792(the)s
2147(bounding)s 3113(box)s 3536(information)s 4728(in)s 4978(the)s
5333(\207le.)s 5809(If)s 6047(this)s 6450(cannot)s 7155(be)s
-7444(found,)s 8117(a)s 8291(w)s 2(arning)k 0 9551(message)m
+7444(found,)s 8117(a)s 8291(w)s 2(arning)k 0 2071(message)m
866(is)s 1076(printed)s 1811(and)s 2215(the)s 2563(result)s
3153(object)s 3797(has)s 4167(zero)s 4631(size.)s 220 fnt2
-480 9174(@IncludeGr)m 2(aphic)k 240 fnt1 2228 9177(searches)m 3085(the)s
-3429(same)s 3973(directories)s 5027(that)s 220 fnt2 5442 9174(@Include)m
-240 fnt1 6421 9177(does)m 6907(\(Section)s 7757(3.42\).)s 220 fnt2
-8416 9174(@Sys)m 240 fnt1 8998 9177(-)m 220 fnt2 0 8886(IncludeGr)m 2(aphic)k
-240 fnt1 1562 8889(is)m 1806(the)s 2188(same)s 2769(as)s
-220 fnt2 3053 8886(@IncludeGr)m 2(aphic)k 240 fnt1 4744 8889(,)m
+480 1694(@IncludeGr)m 2(aphic)k 240 fnt1 2228 1697(searches)m 3085(the)s
+3429(same)s 3973(directories)s 5027(that)s 220 fnt2 5442 1694(@Include)m
+240 fnt1 6421 1697(does)m 6907(\(Section)s 7757(3.43\).)s 220 fnt2
+8416 1694(@Sys)m 240 fnt1 8998 1697(-)m 220 fnt2 0 1406(IncludeGr)m 2(aphic)k
+240 fnt1 1562 1409(is)m 1806(the)s 2188(same)s 2769(as)s
+220 fnt2 3053 1406(@IncludeGr)m 2(aphic)k 240 fnt1 4744 1409(,)m
4885(e)s 3(xcept)k 5600(that)s 6052(it)s 6278(searches)s
-7172(only)s 7686(the)s 8068(directories)s 0 8601(searched)m 894(by)s
-220 fnt2 1188 8598(@SysInclude)m 240 fnt1 2476 8601(.)m 480 8227(If)m
+7172(only)s 7686(the)s 8068(directories)s 0 1121(searched)m 894(by)s
+220 fnt2 1188 1118(@SysInclude)m 240 fnt1 2476 1121(.)m 480 747(If)m
720(the)s 1079(\207le)s 1450(name)s 2035(ends)s 2536(in)s
-2789(an)s 3(y)k 3197(of)s 220 fnt2 3478 8224(.gz)m
-240 fnt1 3765 8227(,)m 220 fnt2 3883 8224(-gz)m 240 fnt1
-4182 8227(,)m 220 fnt2 4300 8224(.z)m 240 fnt1 4465 8227(,)m
-220 fnt2 4582 8224(-z)m 240 fnt1 4759 8227(,)m 220 fnt2
-4877 8224(_z)m 240 fnt1 5103 8227(,)m 5220(or)s 220 fnt2
-5490 8224(.Z)m 240 fnt1 5680 8227(,)m 5798(the)s 6156(\207le)s
-6528(will)s 6964(\207rst)s 7406(be)s 7699(uncompressed)s 0 7939(using)m
-565(the)s 220 fnt2 906 7936(gunzip)m 240 fnt1 1597 7939(command)m
+2789(an)s 3(y)k 3197(of)s 220 fnt2 3478 744(.gz)m
+240 fnt1 3765 747(,)m 220 fnt2 3883 744(-gz)m 240 fnt1
+4182 747(,)m 220 fnt2 4300 744(.z)m 240 fnt1 4465 747(,)m
+220 fnt2 4582 744(-z)m 240 fnt1 4759 747(,)m 220 fnt2
+4877 744(_z)m 240 fnt1 5103 747(,)m 5220(or)s 220 fnt2
+5490 744(.Z)m 240 fnt1 5680 747(,)m 5798(the)s 6156(\207le)s
+6528(will)s 6964(\207rst)s 7406(be)s 7699(uncompressed)s 0 459(using)m
+565(the)s 220 fnt2 906 456(gunzip)m 240 fnt1 1597 459(command)m
2592(into)s 3010(a)s 3169(temporary)s 4198(\207le)s 4552(called)s
-220 fnt2 5173 7936(lout.eps)m 240 fnt1 5987 7939(in)m 6223(the)s
+220 fnt2 5173 456(lout.eps)m 240 fnt1 5987 459(in)m 6223(the)s
6564(current)s 7293(directory)s 15(.)k 8297(This)s 8765(\207le)s
-0 7651(is)m 210(remo)s 3(v)k 3(ed)k 1099(immediately)s
+0 171(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 6858(3.41.)m
-591(@Pr)s 4(ependGraphic and @SysPr)k 4(ependGraphic)k 240 fnt1 582 6381(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 6378(@Use)m 240 fnt1 7857 6381(symbol)m 8660(may)s 0 6093(appear)m 9(,)k
-738(tell)s 1101(Lout)s 1617(to)s 1860(include)s 2624(the)s
-2976(contents)s 3828(of)s 4103(a)s 4273(\207le)s 4637(in)s
-4884(the)s 5236(preamble)s 6185(of)s 6460(its)s 6740(output.)s
-7520(F)s 3(or)k 7913(Basser)s 8614(Lout)s 0 5805(this)m
-418(means)s 1102(that)s 1542(the)s 1912(\207le)s 2295(must)s
-2843(contain)s 3626(PostScript)s 4690(\(and)s 5195(ideally)s 5921(it)s
-6136(w)s 2(ould)k 6813(be)s 3(gin)k 7421(and)s
-7847(end)s 8273(with)s 8778(the)s 220 fnt2 0 5514(%%BeginResource)m
-240 fnt1 1941 5517(and)m 220 fnt2 2345 5514(%%EndResource)m 240 fnt1
-4116 5517(comments)m 5150(of)s 5421(DSC)s 5939(3.0\).)s 6482(F)s 3(or)k
-6871(e)s 3(xample,)k 220 fnt2 480 5016(@SysPrependGr)m 2(aphic { diagf)k 6(.lpg })k
-240 fnt1 0 4517(appears)m 818(at)s 1088(the)s 1474(start)s
-1981(of)s 2290(the)s 2676(Diag)s 3231(package;)s 4165(the)s
-4551(\207le)s 220 fnt2 4949 4514(diagf)m 6(.lpg)k 240 fnt1
-5857 4517(contains)m 6743(a)s 6946(number)s 7775(of)s 8084(PostScript)s
-0 4229(de\207nitions)m 1048(used)s 1532(by)s 1812(Diag)s 2317(for)s
-2642(dra)s 3(wing)k 3462(diagrams.)s 4489(It)s 4680(sa)s 4(v)k 3(es)k
-5229(a)s 5382(lot)s 5680(of)s 5938(space)s 6511(to)s
-6737(include)s 7484(them)s 8008(just)s 8400(once)s 8894(at)s
-0 3941(the)m 334(start)s 789(lik)s 2(e)k 1186(this,)s
-1624(rather)s 2225(than)s 2679(with)s 3146(e)s 6(v)k 3(ery)k
-3708(diagram.)s 220 fnt2 4640 3938(@PrependGr)m 2(aphic)k 240 fnt1
-6498 3941(and)m 220 fnt2 6887 3938(@SysPrependGr)m 2(aphic)k 240 fnt1
-0 3653(search)m 667(for)s 1005(the)s 1353(\207le)s 1714(in)s
-1957(the)s 2305(same)s 2852(places)s 3500(as)s 220 fnt2
-3750 3650(@Include)m 240 fnt1 4732 3653(and)m 220 fnt2 5136 3650(@SysInclude)m
-240 fnt1 6484 3653(respecti)m 6(v)k 3(ely)k 15(.)k
-240 fnt5 0 2860(3.42.)m 591(@Include and @SysInclude)s 240 fnt1 562 2383(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 2095(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 1594(@Include { "/usr/lout/langdefs" })m 240 fnt1
-0 1095(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 807(\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 519(including)m
-958(other)s 220 fnt2 1511 516(@Include)m 240 fnt1 2494 519(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 231(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
+4366(the)s 4714(output)s 5386(\207le.)s
grestore
gsave
1417 -15423 translate
@@ -14443,128 +15482,126 @@ grestore
gsave
0 16840 translate
0.0000 rotate
-240 fnt6 1417 -1580(3.43.)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
-10249 -1583(69)m gsave
+240 fnt6 1417 -1580(3.42.)m 1991(@Pr)s 8(ependGr)k 3(aphic and @SysPr)k 8(ependGr)k 3(aphic)k
+240 fnt5 10249 -1583(69)m gsave
1417 -15423 translate
-240 fnt1 9066 13412 0 13303 240 288 60 LoutGraphic
+240 fnt1 9066 13368 0 13368 240 288 60 LoutGraphic
gsave
1 LoutMargSet
grestore
-0 13249(searched)m 894(for)s 13(.)k 220 fnt2
-1323 13246(@SysInclude)m 240 fnt1 2671 13249(searches)m 3531(the)s 3879(standard)s
-4747(places)s 5395(only)s 15(.)k 240 fnt5 0 12456(3.43.)m
-591(@BackEnd)s 1814(and)s 2255(the)s 2629(PlainT)s 22(ext)k
-3663(and)s 4104(PDF)s 4623(back)s 5172(ends)s 240 fnt1
-547 12024(The)m 220 fnt2 983 12021(@Bac)m 4(kEnd)k 240 fnt1
-2136 12024(symbol,)m 2955(which)s 3605(tak)s 2(es)k 4153(no)s
+240 fnt5 0 13203(3.42.)m 591(@Pr)s 4(ependGraphic and @SysPr)k 4(ependGraphic)k
+
+[ /Dest /LOUTprependgraphic /DEST pdfmark
+
+[ /Dest /LOUT15_4082_pre_prep_1 /DEST pdfmark
+
+[ /Dest /LOUT15_4082_pre_prep_2 /DEST pdfmark
+
+[ /Dest /LOUT15_4082_pre_prep_3 /DEST pdfmark
+240 fnt1 582 12726(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 12723(@Use)m 240 fnt1
+7857 12726(symbol)m 8660(may)s 0 12438(appear)m 9(,)k 738(tell)s
+1101(Lout)s 1617(to)s 1860(include)s 2624(the)s 2976(contents)s
+3828(of)s 4103(a)s 4273(\207le)s 4637(in)s 4884(the)s
+5236(preamble)s 6185(of)s 6460(its)s 6740(output.)s 7520(F)s 3(or)k
+7913(Basser)s 8614(Lout)s 0 12150(this)m 418(means)s 1102(that)s
+1542(the)s 1912(\207le)s 2295(must)s 2843(contain)s 3626(PostScript)s
+4690(\(and)s 5195(ideally)s 5921(it)s 6136(w)s 2(ould)k
+6813(be)s 3(gin)k 7421(and)s 7847(end)s 8273(with)s
+8778(the)s 220 fnt2 0 11859(%%BeginResource)m 240 fnt1 1941 11862(and)m
+220 fnt2 2345 11859(%%EndResource)m 240 fnt1 4116 11862(comments)m 5150(of)s
+5421(DSC)s 5939(3.0\).)s 6482(F)s 3(or)k 6871(e)s 3(xample,)k
+220 fnt2 480 11361(@SysPrependGr)m 2(aphic { diagf)k 6(.lpg })k 240 fnt1
+0 10862(appears)m 818(at)s 1088(the)s 1474(start)s 1981(of)s
+2290(the)s 2676(Diag)s 3231(package;)s 4165(the)s 4551(\207le)s
+220 fnt2 4949 10859(diagf)m 6(.lpg)k 240 fnt1 5857 10862(contains)m
+6743(a)s 6946(number)s 7775(of)s 8084(PostScript)s 0 10574(de\207nitions)m
+1048(used)s 1532(by)s 1812(Diag)s 2317(for)s 2642(dra)s 3(wing)k
+3462(diagrams.)s 4489(It)s 4680(sa)s 4(v)k 3(es)k
+5229(a)s 5382(lot)s 5680(of)s 5938(space)s 6511(to)s
+6737(include)s 7484(them)s 8008(just)s 8400(once)s 8894(at)s
+0 10286(the)m 334(start)s 789(lik)s 2(e)k 1186(this,)s
+1624(rather)s 2225(than)s 2679(with)s 3146(e)s 6(v)k 3(ery)k
+3708(diagram.)s 220 fnt2 4640 10283(@PrependGr)m 2(aphic)k 240 fnt1
+6498 10286(and)m 220 fnt2 6887 10283(@SysPrependGr)m 2(aphic)k 240 fnt1
+0 9998(search)m 667(for)s 1005(the)s 1353(\207le)s 1714(in)s
+1957(the)s 2305(same)s 2852(places)s 3500(as)s 220 fnt2
+3750 9995(@Include)m 240 fnt1 4732 9998(and)m 220 fnt2 5136 9995(@SysInclude)m
+240 fnt1 6484 9998(respecti)m 6(v)k 3(ely)k 15(.)k
+240 fnt5 0 9205(3.43.)m 591(@Include and @SysInclude)s
+[ /Dest /LOUTinclude /DEST pdfmark
+
+[ /Dest /LOUT15_4082_pre_incl_1 /DEST pdfmark
+
+[ /Dest /LOUT15_4082_pre_incl_2 /DEST pdfmark
+240 fnt1 562 8728(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 8440(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 7939(@Include { "/usr/lout/langdefs" })m 240 fnt1
+0 7440(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 7152(\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 6864(including)m
+958(other)s 220 fnt2 1511 6861(@Include)m 240 fnt1 2494 6864(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 6576(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 6288(searched)m 894(for)s 13(.)k
+220 fnt2 1323 6285(@SysInclude)m 240 fnt1 2671 6288(searches)m 3531(the)s
+3879(standard)s 4747(places)s 5395(only)s 15(.)k 240 fnt5
+0 5495(3.44.)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 /LOUT15_4082_pre_bend_1 /DEST pdfmark
+240 fnt1
+547 5063(The)m 220 fnt2 983 5060(@Bac)m 4(kEnd)k 240 fnt1
+2136 5063(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 11736(back)m
+7220(a)s 7394(string)s 7999(naming)s 8778(the)s 0 4775(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 11448(symbol)m 760(is)s 970(generally)s 1913(used)s
-2410(lik)s 2(e)k 2822(this:)s 220 fnt2 480 10947(@Bac)m 4(kEnd @Case {)k
-480 10659( PlainT)m 26(e)k 6(xt @Y)k 4(ield { ...)k 13( })k
-480 10371( P)m 11(ostScr)k -3(ipt @Y)k 4(ield { ...)k 13( })k
-480 10083( PDF @Y)m 4(ield { ...)k 13( })k 480 9795(})m 240 fnt1
-0 9301(to)m 255(obtain)s 926(dif)s 6(ferent)k 1817(objects)s
+8698(The)s 0 4487(symbol)m 760(is)s 970(generally)s 1913(used)s
+2410(lik)s 2(e)k 2822(this:)s 220 fnt2 480 3986(@Bac)m 4(kEnd @Case {)k
+480 3698( PlainT)m 26(e)k 6(xt @Y)k 4(ield { ...)k 13( })k
+480 3410( P)m 11(ostScr)k -3(ipt @Y)k 4(ield { ...)k 13( })k
+480 3122( PDF @Y)m 4(ield { ...)k 13( })k 480 2834(})m 240 fnt1
+0 2340(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 9298(else)m 240 fnt1 6192 9301(is)m
+5360(No)s 220 fnt2 5722 2337(else)m 240 fnt1 6192 2340(is)m
6418(required)s 7288(since)s 7851(these)s 8414(are)s 8778(the)s
-0 9013(only)m 480(possible)s 1320(v)s 6(alues.)k 480 8639(When)m
-1101(a)s 220 fnt2 1259 8636(@Case)m 240 fnt1 2037 8639(symbol)m
-2789(has)s 220 fnt2 3151 8636(@Bac)m 4(kEnd)k 240 fnt1
-4287 8639(for)m 4617(its)s 4885(left)s 5253(parameter)s 6259(and)s
+0 2052(only)m 480(possible)s 1320(v)s 6(alues.)k 480 1678(When)m
+1101(a)s 220 fnt2 1259 1675(@Case)m 240 fnt1 2037 1678(symbol)m
+2789(has)s 220 fnt2 3151 1675(@Bac)m 4(kEnd)k 240 fnt1
+4287 1678(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 8348(@Y)m 4(ield)k 240 fnt1 768 8351(symbol)m
+220 fnt2 0 1387(@Y)m 4(ield)k 240 fnt1 768 1390(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 8348(else)m 240 fnt1 8940 8351(\),)m 0 8063(Lout)m 531(will)s
+8546 1387(else)m 240 fnt1 8940 1390(\),)m 0 1102(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 8060(@Case)m 240 fnt1 4432 8063(symbol)m
+3258(the)s 220 fnt2 3625 1099(@Case)m 240 fnt1 4432 1102(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 7775(ensures)m 789(that)s
+6771(read.)s 7365(This)s 7861(optimization)s 0 814(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 7487(it)m 206(permits)s
-987(these)s 220 fnt2 1548 7484(@Case)m 240 fnt1 2350 7487(symbols)m
+7621(back)s 8155(ends,)s 8722(and)s 0 526(it)m 206(permits)s
+987(these)s 220 fnt2 1548 523(@Case)m 240 fnt1 2350 526(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 7196(@Include)m 240 fnt1
-982 7199(and)m 220 fnt2 1386 7196(@PrependGr)m 2(aphic)k 240 fnt1
-3259 7199(symbols.)m 480 6825(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 6537(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 6249(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 5961(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 5587(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 5299(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 5011(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 4723(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 4349(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 4346(-p)m 240 fnt1 4749 4349(option)m 5415(to)s 5651(Basser)s
-6345(Lout.)s 6958(The)s 7383(character)s 8314(size)s 8737(can)s
-0 4061(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 4058(-p)m
-240 fnt1 4123 4061(option,)m 4842(lik)s 2(e)k 5254(this:)s
-220 fnt2 480 3564(lout -p0.1i12p ...)m 240 fnt1 0 3068(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 2780(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 2492(multiples)m
-943(of)s 1218(the)s 220 fnt2 1569 2489(s)m 240 fnt1
-1736 2492(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 2204(v)m 3(ertical)k 777(lengths)s 1530(as)s
-1791(multiples)s 2742(of)s 3023(the)s 220 fnt2 3382 2201(f)m
-240 fnt1 3511 2204(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 1916(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 1542(There)m 1098(is)s 1314(a)s 220 fnt2 1486 1539(-P)m
-240 fnt1 1762 1542(option)m 2437(which)s 3085(is)s 3301(identical)s
-4184(with)s 4671(the)s 220 fnt2 5025 1539(-p)m 240 fnt1
-5278 1542(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 1254(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 880(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 877(lout -Z)m 240 fnt1 5017 880(.)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 592(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 304(mation.)m
+8149(follo)s 6(wing)k 220 fnt2 0 235(@Include)m 240 fnt1
+982 238(and)m 220 fnt2 1386 235(@PrependGr)m 2(aphic)k 240 fnt1
+3259 238(symbols.)m
grestore
gsave
1417 -15423 translate
@@ -14615,92 +15652,115 @@ 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 13368 240 288 60 LoutGraphic
+240 fnt1 9066 13368 0 13259 240 288 60 LoutGraphic
gsave
0 LoutMargSet
grestore
-240 fnt5 0 13203(3.44.)m
-591(@V)s 24(erbatim and @RawV)k 24(erbatim)k 240 fnt1 543 12771(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 12483(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 11982(@V)m 17(erbatim { "hello" })k
-240 fnt1 0 11488(produces)m 480 10985("hello")m 220 fnt2 0 10529(@V)m 17(erbatim)k
-240 fnt1 1178 10532(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 10244(non-white-space)m 1654(character)s 13(.)k 220 fnt2
-2697 10241(@Ra)m 4(wV)k 17(erbatim)k 240 fnt1 4278 10244(dif)m 6(fers)k
-4964(from)s 220 fnt2 5506 10241(@V)m 17(erbatim)k 240 fnt1
-6653 10244(only)m 7151(in)s 7413(that)s 7849(it)s 8059(ignores)s
-8833(all)s 0 9956(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 9668(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 9380(cases)m 555(such)s
-1051(as)s 220 fnt2 480 8929(@Ra)m 4(wV)k 17(erbatim {)k
-480 8641( v)m 5(ar x:)k 11( Real)k 480 8353(begin)m 480 8065(})m
-240 fnt1 0 7571(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 7280(@V)m 17(erbatim)k 240 fnt1
-1069 7283(.)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 6995(closing)m 744(brace.)s 240 fnt5
-0 6202(3.45.)m 591(@Underline)s 240 fnt1 533 5770(The)m 220 fnt2
-953 5767(@Under)m -3(line)k 240 fnt1 2160 5770(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 5482(or)m 259(a)s
-425(paragraph:)s 220 fnt2 480 4981(W)m 6(e @Under)k -3(line { really do } mean this)k 3(.)k
-240 fnt1 0 4483(produces)m 480 3980(W)m 19(e)k 849(really)s
-849 1679 3956 12 ul
-1446(do)s 1739(mean)s 2314(this.)s 0 3477(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 3474(@Under)m -3(line)k 240 fnt1
-7942 3477(symbol)m 8700(will)s 0 3189(be)m 282(ignored)s 1071(if)s
-1288(this)s 1684(is)s 1894(attempted.)s 480 2815(It)m 731(is)s
-987(v)s 3(ery)k 1509(easy)s 2034(to)s 240 fnt6
-2319 2817(de\207ne)m 240 fnt1 2990 2815(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 2524(@Gr)m 2(aphic)k
-240 fnt1 1045 2527(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 2524(@Under)m -3(line)k 240 fnt1 6163 2527(is)m 6374(needed)s
-7111(at)s 7345(all.)s 7748(The)s 8177(answer)s 8916(is)s
-0 2239(that)m 220 fnt2 418 2236(@Under)m -3(line)k 240 fnt1
-1633 2239(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 2236(@Gr)m 2(aphic)k 240 fnt1
-8393 2239(.)m 480 1865(First,)m 1021(when)s 220 fnt2 1594 1862(@Under)m -3(line)k
-240 fnt1 2806 1865(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 1577(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 1289(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 1286(@F)m 6(ont)k 240 fnt1 5230 1289(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 998(@Gr)m 2(aphic)k 240 fnt1
-1044 1001(do)m 1337(not)s 1703(permit)s 2386(this)s 2782(mer)s 4(ging.)k
-480 627(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 339(font,)m
-501(and)s 914(the)s 220 fnt2 1272 336(@Under)m -3(line)k
-240 fnt1 2496 339(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
+480 13205(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 12917(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 12629(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 12341(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 11967(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 11679(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 11391(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 11103(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 10729(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 10726(-p)m 240 fnt1 4749 10729(option)m 5415(to)s 5651(Basser)s
+6345(Lout.)s 6958(The)s 7383(character)s 8314(size)s 8737(can)s
+0 10441(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 10438(-p)m
+240 fnt1 4123 10441(option,)m 4842(lik)s 2(e)k 5254(this:)s
+220 fnt2 480 9944(lout -p0.1i12p ...)m 240 fnt1 0 9448(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 9160(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 8872(multiples)m
+943(of)s 1218(the)s 220 fnt2 1569 8869(s)m 240 fnt1
+1736 8872(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 8584(v)m 3(ertical)k 777(lengths)s 1530(as)s
+1791(multiples)s 2742(of)s 3023(the)s 220 fnt2 3382 8581(f)m
+240 fnt1 3511 8584(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 8296(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 7922(There)m 1098(is)s 1314(a)s 220 fnt2 1486 7919(-P)m
+240 fnt1 1762 7922(option)m 2437(which)s 3085(is)s 3301(identical)s
+4184(with)s 4671(the)s 220 fnt2 5025 7919(-p)m 240 fnt1
+5278 7922(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 7634(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 7260(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 7257(lout -Z)m 240 fnt1 5017 7260(.)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 6972(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 6684(mation.)m 240 fnt5 0 5941(3.45.)m 591(@V)s 24(erbatim and @RawV)k 24(erbatim)k
+
+[ /Dest /LOUTverbatim /DEST pdfmark
+
+[ /Dest /LOUT15_4082_pre_verb_1 /DEST pdfmark
+
+[ /Dest /LOUT15_4082_pre_verb_2 /DEST pdfmark
+240 fnt1 543 5509(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 5221(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 4720(@V)m 17(erbatim { "hello" })k 240 fnt1 0 4226(produces)m
+480 3723("hello")m 220 fnt2 0 3267(@V)m 17(erbatim)k 240 fnt1
+1178 3270(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 2982(non-white-space)m
+1654(character)s 13(.)k 220 fnt2 2697 2979(@Ra)m 4(wV)k 17(erbatim)k
+240 fnt1 4278 2982(dif)m 6(fers)k 4964(from)s 220 fnt2
+5506 2979(@V)m 17(erbatim)k 240 fnt1 6653 2982(only)m 7151(in)s
+7413(that)s 7849(it)s 8059(ignores)s 8833(all)s 0 2694(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 2406(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 2118(cases)m 555(such)s 1051(as)s 220 fnt2
+480 1667(@Ra)m 4(wV)k 17(erbatim {)k 480 1379( v)m 5(ar x:)k 11( Real)k
+480 1091(begin)m 480 803(})m 240 fnt1 0 309(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
grestore
gsave
1417 -15423 translate
@@ -14748,46 +15808,106 @@ grestore
gsave
0 16840 translate
0.0000 rotate
-240 fnt6 1417 -1580(3.45.)m 1991(@Underline)s 240 fnt5 10256 -1583(71)m
-gsave
+240 fnt6 1417 -1580(3.45.)m 1991(@V)s 26(erbatim and @RawV)k 26(erbatim)k
+240 fnt5 10256 -1583(71)m gsave
1417 -15423 translate
240 fnt1 9066 13413 0 13304 240 288 60 LoutGraphic
gsave
1 LoutMargSet
grestore
-0 13250(\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 12457(3.46.)m
-591(@P)s 2(ageLabel)k 240 fnt1 533 11980(The)m 220 fnt2
-953 11977(@P)m 8(ageLabel)k 240 fnt1 2255 11980(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 11692(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 11404(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 11401(%%P)m 8(age)k 240 fnt1
-6313 11404(comment)m 7266(preceding)s 8266(the)s 8618(page)s 0 11116(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 10615(@P)m 8(ageLabel iv)k
-240 fnt1 0 10116(associates)m 1018(the)s 1379(label)s 220 fnt2
-1910 10113(iv)m 240 fnt1 2140 10116(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 9828(simple)m 693(w)s 2(ord,)k
+220 fnt2 0 13247(@V)m 17(erbatim)k
+240 fnt1 1069 13250(.)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 12962(closing)m
+744(brace.)s 240 fnt5 0 12169(3.46.)m 591(@Underline)s
+[ /Dest /LOUTunderline /DEST pdfmark
+
+[ /Dest /LOUT15_4082_pre_unde_1 /DEST pdfmark
+240 fnt1
+533 11737(The)m 220 fnt2 953 11734(@Under)m -3(line)k 240 fnt1
+2160 11737(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 11449(or)m 259(a)s 425(paragraph:)s 220 fnt2 480 10948(W)m 6(e @Under)k -3(line { really do } mean this)k 3(.)k
+240 fnt1 0 10450(produces)m 480 9947(W)m 19(e)k 849(really)s
+849 1679 9923 12 ul
+1446(do)s 1739(mean)s 2314(this.)s 0 9444(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 9441(@Under)m -3(line)k 240 fnt1
+7942 9444(symbol)m 8700(will)s 0 9156(be)m 282(ignored)s 1071(if)s
+1288(this)s 1684(is)s 1894(attempted.)s 480 8782(It)m 731(is)s
+987(v)s 3(ery)k 1509(easy)s 2034(to)s 240 fnt6
+2319 8784(de\207ne)m 240 fnt1 2990 8782(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 8491(@Gr)m 2(aphic)k
+240 fnt1 1045 8494(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 8491(@Under)m -3(line)k 240 fnt1 6163 8494(is)m 6374(needed)s
+7111(at)s 7345(all.)s 7748(The)s 8177(answer)s 8916(is)s
+0 8206(that)m 220 fnt2 418 8203(@Under)m -3(line)k 240 fnt1
+1633 8206(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 8203(@Gr)m 2(aphic)k 240 fnt1
+8393 8206(.)m 480 7832(First,)m 1021(when)s 220 fnt2 1594 7829(@Under)m -3(line)k
+240 fnt1 2806 7832(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 7544(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 7256(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 7253(@F)m 6(ont)k 240 fnt1 5230 7256(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 6965(@Gr)m 2(aphic)k 240 fnt1
+1044 6968(do)m 1337(not)s 1703(permit)s 2386(this)s 2782(mer)s 4(ging.)k
+480 6594(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 6306(font,)m
+501(and)s 914(the)s 220 fnt2 1272 6303(@Under)m -3(line)k
+240 fnt1 2496 6306(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 6018(\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 5225(3.47.)m 591(@P)s 2(ageLabel)k
+
+[ /Dest /LOUTpagelabel /DEST pdfmark
+
+[ /Dest /LOUT15_4082_pre_page_1 /DEST pdfmark
+240 fnt1 533 4748(The)m 220 fnt2 953 4745(@P)m 8(ageLabel)k
+240 fnt1 2255 4748(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 4460(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 4172(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 4169(%%P)m 8(age)k 240 fnt1 6313 4172(comment)m 7266(preceding)s
+8266(the)s 8618(page)s 0 3884(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 3383(@P)m 8(ageLabel iv)k 240 fnt1 0 2884(associates)m
+1018(the)s 1379(label)s 220 fnt2 1910 2881(iv)m 240 fnt1
+2140 2884(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 2596(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 9825(?)m 240 fnt1 3459 9828(.)m 220 fnt2
-480 9451(@P)m 8(ageLabel)k 240 fnt1 1799 9454(is)m 2019(unrelated)s
+220 fnt2 3351 2593(?)m 240 fnt1 3459 2596(.)m 220 fnt2
+480 2219(@P)m 8(ageLabel)k 240 fnt1 1799 2222(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 9166(a)m 176(label)s 706(to)s 956(the)s 1315(PostScript)s
+0 1934(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 9163(@P)m 8(ageLabel)k 240 fnt1
-8739 9166(is)m 8960(a)s 0 8878(null)m 427(object.)s
+7137(of)s 220 fnt2 7419 1931(@P)m 8(ageLabel)k 240 fnt1
+8739 1934(is)m 8960(a)s 0 1646(null)m 427(object.)s
grestore
gsave
1417 -15423 translate
@@ -14841,7 +15961,9 @@ gsave
9066 13450 0 13450 240 288 60 1417 -14867 LoutGr2
0 LoutMargSet
grestore
-480 fnt5 0 12399(Chapter)m 1819(4.)s 2400(Examples)s 240 fnt1
+480 fnt5 0 12399(Chapter)m 1819(4.)s 2400(Examples)s
+[ /Dest /LOUTexamples /DEST pdfmark
+240 fnt1
0 11448(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
@@ -14861,9 +15983,13 @@ grestore
8011(necessarily)s 0 9922(represent)m 935(the)s 1283(current)s 2019(state)s
2512(of)s 2783(the)s 3131(Lout)s 3643(packages.)s 240 fnt5
0 9129(4.1.)m 471(An)s 833(equation)s 1779(f)s 6(ormatting)k
-2930(package)s 240 fnt1 480 8652(In)m 751(this)s 1162(section)s
+2930(package)s
+[ /Dest /LOUTeq /DEST pdfmark
+240 fnt1 480 8652(In)m 751(this)s 1162(section)s
1911(we)s 2261(describe)s 3128(the)s 3491(design)s 4189(and)s
-4608(implementation)s 6180(of)s 6466(the)s 6829(Eq)s 7168(equation)s
+4608(implementation)s 6180(of)s 6466(the)s 6829(Eq)s
+[ /Dest /LOUT15_4082_exa_equa_1 /DEST pdfmark
+7168(equation)s
8065(formatting)s 0 8364(package.)m 976(Equation)s 1925(formatting)s 3014(mak)s 2(es)k
3702(a)s 3896(natural)s 4642(\207rst)s 5101(e)s 3(xample,)k
6043(partly)s 6682(because)s 7523(its)s 7828(requirements)s 0 8076(ha)m 4(v)k 3(e)k
@@ -14884,24 +16010,35 @@ grestore
0 6550(being)m 585(readily)s 1302(a)s 4(v)k 6(ailable,)k
2261(can)s 2650(be)s 2932(impro)s 3(v)k 3(ed,)k
3950(e)s 3(xtended,)k 4918(or)s 5177(e)s 6(v)k 3(en)k
-5677(replaced.)s 480 6176(As)m 808(described)s 1793(in)s 2048(the)s
-2407(User')s 13(s)k 3079(Guide)s 3732([4)s 3925(],)s
-4122(an)s 4416(equation)s 5309(is)s 5530(entered)s 6302(in)s
-6557(a)s 6734(format)s 7441(based)s 8056(on)s 8364(the)s
-8724(one)s 0 5888(introduced)m 1081(by)s 1375(the)s 1723(eqn)s
-2126(language)s 3046(of)s 3317(K)s 6(ernighan)k 4378(and)s
-4782(Cherry)s 5500([2)s 5693(]:)s 220 fnt2 480 5387(@Eq { { x sup 2 + y sup 2 } o)m 3(v)k 5(er 2 })k
-240 fnt1 0 4889(The)m 428(result)s 1018(is)s 168 fnt4
-586 4484(2)m 240 fnt6 480 4424(x)m 240 fnt4 738 4416(+)m
-168 fnt4 1041 4484(2)m 240 fnt6 939 4424(y)m 641 0 0 0 240 288 12 480 4326 LoutGr2
+5677(replaced.)s 480 6176(As)m 808(described)s 1794(in)s 2049(the)s
+2409(User')s 13(s)k 3082(Guide)s 3734([)s
+[ /Rect [3805 6176 3919 6338] /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 5888(introduced)m 1081(by)s 1375(the)s
+1723(eqn)s 2126(language)s 3046(of)s 3317(K)s 6(ernighan)k
+4378(and)s 4782(Cherry)s 5500([)s
+[ /Rect [5571 5888 5685 6050] /Subtype /Link /Dest /LOUTkernighan1975eqn /ANN pdfmark
+5571(2)s 5685(]:)s
+
+[ /Dest /LOUT15_4082_exa_equa_2 /DEST pdfmark
+
+[ /Dest /LOUT15_4082_exa_equa_3 /DEST pdfmark
+220 fnt2 480 5387(@Eq { { x sup 2 + y sup 2 } o)m 3(v)k 5(er 2 })k 240 fnt1
+0 4889(The)m 428(result)s 1018(is)s 168 fnt4 586 4484(2)m
+240 fnt6 480 4424(x)m 240 fnt4 738 4416(+)m 168 fnt4
+1041 4484(2)m 240 fnt6 939 4424(y)m 641 0 0 0 240 288 12 480 4326 LoutGr2
0 0 moveto xsize 0 lineto 0.05 ft setlinewidth stroke
grestore
grestore
-240 fnt4
-743 4098(2)m 240 fnt1 0 3587(In)m 256(outline,)s 1027(the)s
-1375(de\207nition)s 2349(of)s 2620(the)s 220 fnt2 2968 3584(@Eq)m
-240 fnt1 3506 3587(symbol)m 4266(is)s 220 fnt2 480 3090(e)m 6(xpor)k -8(t sup o)k 3(v)k 5(er "+" "2" "<=")k
+240 fnt4 743 4098(2)m
+240 fnt1 0 3587(In)m 256(outline,)s 1027(the)s 1375(de\207nition)s
+2349(of)s 2620(the)s 220 fnt2 2968 3584(@Eq)m 240 fnt1
+3506 3587(symbol)m 4266(is)s
+[ /Dest /LOUT15_4082_exa_equa_4 /DEST pdfmark
+220 fnt2 480 3090(e)m 6(xpor)k -8(t sup o)k 3(v)k 5(er "+" "2" "<=")k
480 2802(def @Eq)m 480 2514( body @Body)m 480 2226({)m 480 1938( def sup precedence 60 left x r)m -3(ight y { ...)k 13( })k
480 1650( def o)m 3(v)k 5(er precedence 54 left x r)k -3(ight y { ...)k 13( })k
480 1362( def "2" { Base @F)m 6(ont "2" })k 480 1074( def "+" { {Symbol Base} @F)m 6(ont "+" })k 480 786( def "<=" { {Symbol Base} @F)m 6(ont "\\243" })k
@@ -14998,6 +16135,8 @@ grestore
4175(mark,)s 4788(on)s 5099(the)s 5461(axis.)s 6025(F)s 3(or)k
6428(e)s 3(xample,)k 7356(the)s 7719(superscripting)s 0 9085(symbol)m
760(is)s 970(de\207ned)s 1733(as)s 1983(follo)s 6(ws:)k
+
+[ /Dest /LOUT15_4082_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
@@ -15023,7 +16162,9 @@ grestore
220 fnt2 3432 3769(@SupGap)m 240 fnt1 4515 3772(ensures)m 5287(consistenc)s 3(y)k
6457(and)s 6865(assists)s 7529(when)s 8109(tuning)s 8778(the)s
0 3484(v)m 6(alues.)k 769(Here)s 1289(is)s 1499(another)s
-2276(characteristic)s 3600(de\207nition:)s 220 fnt2 480 3034(def o)m 3(v)k 5(er)k
+2276(characteristic)s 3600(de\207nition:)s
+[ /Dest /LOUT15_4082_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
480 442( ^//gap @HLine)m 480 154( //gap |0.5r)m -8(t @OneCol y)k
@@ -15101,7 +16242,9 @@ grestore
1154(do)s 1447(\(Section)s 2300(2.6\).)s 220 fnt2 2843 11561(@HLine)m
240 fnt1 3690 11564(is)m 3900(a)s 4066(horizontal)s 5090(line)s
5504(of)s 5775(the)s 6123(width)s 6725(of)s 6996(the)s
-7344(column:)s 220 fnt2 480 11063(def @HLine)m 480 10775( named line { "0.05 ft setline)m 4(width" })k
+7344(column:)s
+[ /Dest /LOUT15_4082_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
1202(relying)s 1932(on)s 2229(the)s 2577(e)s 3(xpanding)k
@@ -15111,10 +16254,14 @@ grestore
6114(conclude)s 7032(with)s 7511(a)s 7675(fe)s 6(w)k
8078(\207ne)s 8490(points)s 0 8755(of)m 271(mathematical)s 1612(typesetting)s
2714(mentioned)s 3782(by)s 4076(a)s 4242(leading)s 4999(authority)s 15(,)k
-5954(D.)s 6231(E.)s 6481(Knuth)s 7137([5)s 7322(].)s
-480 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
+5954(D.)s 6231(E.)s 6481(Knuth)s 7137([)s
+[ /Rect [7208 8752 7314 8920] /Subtype /Link /Dest /LOUTknuth1984tex /ANN pdfmark
+7208(5)s
+7314(].)s
+[ /Dest /LOUT15_4082_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
4837(a)s 5012(thick)s 5560(space)s 6156(on)s 6462(each)s
6966(side;)s 7472(others,)s 8172(such)s 8677(as)s 240 fnt4
8937 8375(+)m 240 fnt1 0 8093(and)m 240 fnt4 397 8087(-)m
@@ -15155,25 +16302,31 @@ grestore
4527(an)s 3(y)k 220 fnt2 4977 3206(@MedGap)m 240 fnt1
6147 3209(within)m 6868(them)s 7459(is)s 7722(much)s 8364(smaller)s
0 2921(than)m 469(usual.)s 240 fnt5 0 2178(4.2.)m 471(P)s 2(aragraphs,)k
-1780(displays,)s 2718(and)s 3159(lists)s 240 fnt1 480 1701(The)m
+1780(displays,)s 2718(and)s 3159(lists)s
+[ /Dest /LOUTparas /DEST pdfmark
+240 fnt1 480 1701(The)m
914(remaining)s 1942(sections)s 2770(of)s 3047(this)s 3449(chapter)s
4219(are)s 4572(all)s 4871(based)s 5481(on)s 5784(V)s 26(ersion)k
6578(2)s 6759(of)s 7036(the)s 7391(DocumentLayout)s 0 1413(package.)m
941(V)s 26(ersion)k 1722(3,)s 1942(which)s 2577(is)s
2779(similar)s 3494(b)s 4(ut)k 3849(more)s 4389(elaborate,)s
5364(is)s 5566(described)s 6533(from)s 7050(the)s 7391(user')s 13(s)k
-7991(perspecti)s 6(v)k 3(e)k 0 1125(in)m 249(the)s
-604(User')s 13(s)k 1272(Guide)s 1920([4)s 2113(].)s
-2363(In)s 2625(26)s 2925(pages)s 3528(of)s 3806(Lout,)s
-4372(the)s 4726(DocumentLaytout)s 6534(package)s 7381(de\207nes)s 8117(man)s 3(y)k
-8707(fea)s 8998(-)s 0 837(tures)m 506(required)s 1350(in)s
-1583(the)s 1921(formatting)s 2972(of)s 3233(simple)s 3916(documents,)s
-5050(technical)s 5957(reports,)s 6717(and)s 7111(books,)s 7781(including)s
-8728(dis)s 8998(-)s 0 549(plays,)m 603(lists,)s 1085(page)s
-1584(layout,)s 2280(cross)s 2813(references,)s 3891(tables)s 4490(of)s
-4752(contents,)s 5647(footnotes,)s 6635(\207gures,)s 7384(tables,)s 8039(references,)s
-0 261(chapters,)m 903(sections,)s 1780(and)s 2184(sorted)s 2826(inde)s 3(x)k 3(es.)k
-
+7991(perspecti)s 6(v)k 3(e)k 0 1125(in)m 250(the)s
+
+[ /Dest /LOUT15_4082_exa_para_1 /DEST pdfmark
+605(User')s 13(s)k 1274(Guide)s 1922([)s
+[ /Rect [1993 1125 2107 1287] /Subtype /Link /Dest /LOUTkingston1995lout_user /ANN pdfmark
+1993(4)s
+2107(].)s 2357(In)s 2621(26)s 2921(pages)s 3524(of)s
+3803(Lout,)s 4369(the)s 4724(DocumentLaytout)s 6533(package)s 7380(de\207nes)s
+8116(man)s 3(y)k 8707(fea)s 8998(-)s 0 837(tures)m
+506(required)s 1350(in)s 1583(the)s 1921(formatting)s 2972(of)s
+3233(simple)s 3916(documents,)s 5050(technical)s 5957(reports,)s 6717(and)s
+7111(books,)s 7781(including)s 8728(dis)s 8998(-)s 0 549(plays,)m
+603(lists,)s 1085(page)s 1584(layout,)s 2280(cross)s 2813(references,)s
+3891(tables)s 4490(of)s 4752(contents,)s 5647(footnotes,)s 6635(\207gures,)s
+7384(tables,)s 8039(references,)s 0 261(chapters,)m 903(sections,)s 1780(and)s
+2184(sorted)s 2826(inde)s 3(x)k 3(es.)k
grestore
gsave
1417 -15423 translate
@@ -15231,6 +16384,8 @@ gsave
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 /LOUT15_4082_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
@@ -15271,7 +16426,9 @@ grestore
5337(tuning.)s 6113(The)s 3(y)k 6656(are)s 7003(much)s
7592(better)s 8195(placed)s 8876(as)s 0 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 480 8081( named @P)m 8(ar)k 2(aGap { 1.3vx })k
+220 fnt2 480 8369(def @DocumentLa)m 6(y)k 4(out)k
+[ /Dest /LOUT15_4082_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
480 6353( macro @LP { //@P)m 8(ar)k 2(aGap })k 480 6065( ...)m 480 5777(@End @DocumentLa)m 6(y)k 4(out)k
@@ -15281,7 +16438,9 @@ grestore
4356 5279(as)m 4606(it)s 4798(appears)s 5579(in)s 5822(the)s
6170(DocumentLayout)s 7905(package.)s 480 4905(A)m 710(display)s 1455(is)s
1665(a)s 1831(table)s 2351(in)s 2594(which)s 3236(the)s
-3584(\207rst)s 4015(column)s 4790(is)s 5000(blank:)s 240 fnt6
+3584(\207rst)s 4015(column)s 4790(is)s 5000(blank:)s
+[ /Dest /LOUT15_4082_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
240 fnt6 480 3538(following)m 1438(te)s 4(xt)k 240 fnt1
@@ -15297,6 +16456,8 @@ grestore
3458(e)s 3(xpected)k 4413(to)s 4702(type)s 5219(the)s
5617(Lout)s 6179(source)s 6908(sho)s 6(wn)k 7635(abo)s 3(v)k 3(e;)k
8363(a)s 8579(more)s 0 1799(appropriate)m 1144(syntax)s 1824(is)s
+
+[ /Dest /LOUT15_4082_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
@@ -15392,7 +16553,11 @@ grestore
6189(by)s 6481(this)s 220 fnt2 6876 6019(@Null)m 240 fnt1
7519 6022(when)m 8094(there)s 8625(is)s 8833(no)s 0 5734(follo)m 6(wing)k
977(te)s 3(xt.)k 480 5360(An)m 858(automatically)s 2240(numbered)s
-3283(list)s 3662(could)s 4280(ha)s 4(v)k 3(e)k
+3283(list)s
+[ /Dest /LOUT15_4082_exa_para_6 /DEST pdfmark
+
+[ /Dest /LOUT15_4082_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
812(with)s 1294(sequences)s 2315(of)s 2586(pages,)s 3238(we)s
@@ -15489,13 +16654,21 @@ grestore
240 fnt1 6691 12629(by)m 220 fnt2 6986 12626(@Null)m 240 fnt1
7571 12629(.)m 7735(This)s 8212(brings)s 8862(us)s 0 12341(to)m
239(the)s 587(de\207nitions)s 1648(as)s 1898(the)s 3(y)k
-2361(appear)s 3058(in)s 3301(DocumentLayout:)s 220 fnt2 480 11840(def @ItemPlace { @Galle)m 4(y })k
-480 11552(def @ListItem into { @ItemPlace&&preceding })m 480 11264( r)m -3(ight x)k 480 10976({ x })m 480 10484(def @EndListPlace { @Galle)m 4(y })k
-480 10196(def @EndList f)m 6(orce into { @EndListPlace&&preceding })k 480 9908({})m 480 9416(def @Ra)m 4(wIndentedList)k
+2361(appear)s 3058(in)s 3301(DocumentLayout:)s
+[ /Dest /LOUT15_4082_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_1492_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_1492_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 240 fnt1
+480 6536( })m 480 5960( @IList star)m -8(t // @EndListPlace)k 480 5672(})m
+[ /Dest /LOUT12_1492_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
480 4389(@ListItem { \207rst item })m 480 4101(@ListItem { second item })m 480 3813(...)m 480 3525(@ListItem { last item })m 480 3237(@EndList)m
@@ -15597,7 +16770,9 @@ grestore
1173(are)s 1520(needed:)s 220 fnt2 480 11754(macro @NumberedList { //@DispGap @Ra)m 4(wNumberedList //@DispGap })k
480 11466(macro @P)m 8(arenNumberedList { //@DispGap @Ra)k 4(wP)k 8(arenNumberedList //@DispGap })k 240 fnt1
0 10970(and)m 404(so)s 670(on.)s 480 10596(Lists)m 994(numbered)s
-2007(by)s 2300(Roman)s 3047(numerals)s 3973(present)s 4721(a)s
+2007(by)s 2300(Roman)s 3047(numerals)s
+[ /Dest /LOUT15_4082_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
749(numerals.)s 1789(Instead,)s 2586(the)s 3(y)k 3049(must)s
@@ -15628,7 +16803,13 @@ grestore
2783(\207nite)s 3330(sequences)s 4351(of)s 4622(objects)s 5350(may)s
5816(be)s 6098(`counted')s 7047(in)s 7290(this)s 7686(w)s 2(ay)k 15(.)k
240 fnt5 0 3085(4.3.)m 471(P)s 2(age)k 1017(lay)s 6(out)k
-240 fnt1 480 2608(The)m 921(page)s 1443(layout)s 2115(de\207nitions)s
+
+[ /Dest /LOUTpagelayout /DEST pdfmark
+240 fnt1 480 2608(The)m 921(page)s 1443(layout)s
+[ /Dest /LOUT15_4082_exa_page_1 /DEST pdfmark
+
+[ /Dest /LOUT15_4082_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
7791(basic.)s 8460(In)s 8730(this)s 0 2320(section)m 726(we)s
@@ -15654,6 +16835,8 @@ grestore
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 /LOUT15_4082_exa_page_3 /DEST pdfmark
+
grestore
gsave
1417 -15423 translate
@@ -15710,11 +16893,17 @@ gsave
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_1492_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 480 11066(def @P)m 8(ageOf r)k -3(ight x)k 480 10778({)m
+480 11558(})m
+[ /Dest /LOUT12_1492_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 240 fnt1 0 9708(W)m 19(e)k 385(will)s
+480 10202(})m
+[ /Dest /LOUT12_1492_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
3949 9705(@P)m 8(ageMar)k -3(k)k 4(er)k 240 fnt1
@@ -15771,7 +16960,9 @@ grestore
1774(a)s 1931(sequence)s 2854(of)s 3116(full-width)s 4119(tar)s 4(gets)k
4793(at)s 5015(the)s 5354(foot)s 5790(of)s 6052(the)s
6390(page)s 6889(for)s 7218(footnotes,)s 8205(preceded)s 0 597(by)m
-294(a)s 460(short)s 998(horizontal)s 2022(line:)s 220 fnt2
+294(a)s 460(short)s 998(horizontal)s 2022(line:)s
+[ /Dest /LOUT15_4082_exa_page_4 /DEST pdfmark
+220 fnt2
480 96(e)m 6(xpor)k -8(t @T)k 26(ag)k
grestore
gsave
@@ -15829,8 +17020,12 @@ gsave
grestore
220 fnt2 480 13207(def @F)m 6(ootList r)k -3(ight @T)k 26(ag)k
480 12919({)m 480 12631( @Galle)m 4(y)k 480 12343( //@F)m 6(ootGap @F)k 6(ootList @Ne)k 6(xt @T)k 26(ag)k
-480 12055(})m 480 11563(def @F)m 6(ootSect)k 480 11275({)m 480 10987( @F)m 6(ootLen @Wide @HLine)k
+480 12055(})m
+[ /Dest /LOUT12_1492_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_1492_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
@@ -15843,6 +17038,8 @@ grestore
240 fnt1 0 5516(The)m 428(ne)s 3(xt)k 897(de\207nition)s
1871(pro)s 3(vides)k 2743(a)s 2909(horizontal)s 3933(sequence)s
4866(of)s 5137(one)s 5539(or)s 5798(more)s 6345(columns:)s
+
+[ /Dest /LOUT15_4082_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
@@ -15867,6 +17064,8 @@ grestore
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 /LOUT15_4082_exa_page_6 /DEST pdfmark
+
grestore
gsave
1417 -15423 translate
@@ -15939,6 +17138,8 @@ grestore
220 fnt2 1838 9744(@OneP)m 8(age)k 240 fnt1 2972 9747(,)m
3079(de\207ning)s 3917(a)s 4083(typical)s 4788(page)s 5296(of)s
5567(a)s 5733(book)s 6274(or)s 6533(other)s 7084(document:)s
+
+[ /Dest /LOUT15_4082_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
@@ -15971,6 +17172,8 @@ grestore
4297(in)s 4545(the)s 4899(present)s 5655(document\))s 6732(are)s
7085(produced.)s 8146(These)s 8779(are)s 0 3194(based)m 603(on)s
900(the)s 220 fnt2 1248 3191(@Runner)m 240 fnt1 2250 3194(symbol:)m
+
+[ /Dest /LOUT15_4082_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
@@ -16056,7 +17259,9 @@ grestore
1758(de\207ne)s 220 fnt2 2393 10388(@OddP)m 8(ageList)k 240 fnt1
3872 10391(,)m 3973(whose)s 4635(result)s 5219(is)s 5423(a)s
5583(sequence)s 6510(of)s 6775(pages)s 7365(be)s 3(ginning)k
-8367(with)s 8843(an)s 0 10103(odd-numbered)m 1454(page:)s 220 fnt2
+8367(with)s 8843(an)s 0 10103(odd-numbered)m 1454(page:)s
+[ /Dest /LOUT15_4082_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
480 7586( // @Runner&&f)m 6(ollo)k 3(wing @Open {)k 480 7298( @OneP)m 8(age)k
@@ -16093,7 +17298,9 @@ grestore
480 2686(After)m 1043(producing)s 2067(the)s 2415(odd-numbered)s 3869(page,)s
220 fnt2 4428 2683(@OddP)m 8(ageList)k 240 fnt1 5967 2686(in)m 9(v)k 4(ok)k 2(es)k
220 fnt2 6748 2683(@Ev)m 5(enP)k 8(ageList)k 240 fnt1
-8307 2686(:)m 220 fnt2 480 2185(def @Ev)m 5(enP)k 8(ageList)k
+8307 2686(:)m
+[ /Dest /LOUT15_4082_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
480 745( // @Runner&&f)m 6(ollo)k 3(wing @Open {)k 480 457( @OneP)m 8(age)k
@@ -16178,15 +17385,21 @@ grestore
1119(page)s 1627(to)s 1866(be)s 2148(printed,)s 2932(because)s
3745(Basser)s 4442(Lout)s 4954(skips)s 5497(components)s 6705(of)s
6976(height)s 7634(zero.)s 240 fnt5 0 8666(4.4.)m 471(Chapters)s
-1468(and)s 1909(sections)s 240 fnt1 480 8189(The)m 905(de\207nitions)s
+1468(and)s 1909(sections)s
+[ /Dest /LOUTchapters /DEST pdfmark
+240 fnt1 480 8189(The)m 905(de\207nitions)s
1962(of)s 2229(chapters)s 3073(and)s 3473(sections)s 4290(from)s
-4811(the)s 5155(DocumentSetup)s 6746(package)s 7583(of)s 7850(V)s 26(ersion)k
+4811(the)s 5155(DocumentSetup)s 6746(package)s
+[ /Dest /LOUT15_4082_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
3756(DocumentSetup\))s 5432(form)s 5961(the)s 6315(subject)s 7058(of)s
7334(this)s 7736(section.)s 8583(The)s 3(y)k 0 7613(allo)m 6(w)k
579(a)s 745(chapter)s 1508(to)s 1747(be)s 2029(entered)s
-2790(lik)s 2(e)k 3202(this:)s 220 fnt2 480 7112(@Chapter)m
+2790(lik)s 2(e)k 3202(this:)s
+[ /Dest /LOUT15_4082_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
712(the)s 1060(chapter)s 1823(a)s 1989(sequence)s 2922(of)s
@@ -16204,7 +17417,9 @@ grestore
240 fnt1 3838 2406(at)m 4081(an)s 3(y)k 4488(point)s
5050(in)s 5304(the)s 5662(document.)s 6780(This)s 7267(feature)s
7995(is)s 8215(based)s 8829(on)s 0 2118(the)m 348(follo)s 6(wing)k
-1325(de\207nitions:)s 220 fnt2 480 1617(e)m 6(xpor)k -8(t @T)k 26(ag)k
+1325(de\207nitions:)s
+[ /Dest /LOUT15_4082_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
@@ -16278,14 +17493,20 @@ grestore
7362(a)s 7564(ne)s 6(w)k 8046(page.)s 8698(The)s
220 fnt2 0 9817(@Chapter)m 240 fnt1 1063 9820(g)m 1(alle)k 3(y)k
1697(itself)s 2245(is)s 2455(de\207ned)s 3218(as)s 3468(follo)s 6(ws:)k
+
+[ /Dest /LOUT15_4082_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 480 5698( def @ChapterTitle)m 480 5410( {)m
+480 6727( def @BeginSections ...)m 480 6439( def @EndSections ...)m 480 6151( def @Section ...)m
+[ /Dest /LOUT12_1492_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 480 1174( r)m 2(agged @Break @BookTitleF)k 6(or)k -5(mat @ChapterTitle)k
+480 2242( else @Y)m 4(ield @Null)k 480 1954( })m 480 1666( })m
+[ /Dest /LOUT12_1492_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
grestore
@@ -16350,6 +17571,8 @@ grestore
480 11479( @F)m 6(ootOdd { |0.5r)k -8(t 0.8f @F)k 6(ont @B @P)k 8(ageNum })k
480 11191( // @Body)m 480 10903( //@SectionGap @ChapRefSection)m 480 10615( // @Runner)m 480 10327( @T)m 26(opEv)k 5(en { @B @P)k 8(ageNum |1r)k -8(t @I @ChapterNum })k
480 10039( @T)m 26(opOdd { @I {@RunningTitle @OrElse @Title} |1r)k -8(t @B @P)k 8(ageNum })k 480 9751(})m
+
+[ /Dest /LOUT12_1492_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
@@ -16567,7 +17790,9 @@ grestore
5437 5806(if)m 5660(this)s 6063(is)s 6279(not)s 6651(equal)s
7231(to)s 7476(the)s 7830(def)s 2(ault)k 8558(v)s 6(alue)k
220 fnt2 0 5515(dft)m 240 fnt1 240 5518(,)m 347(or)s
-220 fnt2 606 5515(@Title)m 240 fnt1 1294 5518(otherwise:)m 220 fnt2
+220 fnt2 606 5515(@Title)m 240 fnt1 1294 5518(otherwise:)m
+[ /Dest /LOUT15_4082_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
@@ -16579,7 +17804,9 @@ grestore
721(v)s 6(alue)k 1289(of)s 220 fnt2 1560 947(@RunningTitle)m
240 fnt1 3004 950(.)m 480 576(Finally)m 15(,)k 1249(the)s
1597(de\207nitions)s 2658(for)s 2996(sections)s 3817(omitted)s 4605(earlier)s
-5273(are)s 5620(as)s 5870(follo)s 6(ws:)k 220 fnt2
+5273(are)s 5620(as)s 5870(follo)s 6(ws:)k
+[ /Dest /LOUT15_4082_exa_chap_6 /DEST pdfmark
+220 fnt2
480 75(def @EndSectionsPlace { @Galle)m 4(y })k
grestore
gsave
@@ -16636,7 +17863,9 @@ gsave
1 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 480 12422(def @Section f)m 6(orce into { @SectionList&&preceding })k 480 12134( named @T)m 26(ag {})k
+480 12919(macro @BeginSections { //@SectionGap @SectionList 1 // @EndSectionsPlace // })m
+[ /Dest /LOUT12_1492_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
@@ -16645,7 +17874,9 @@ grestore
480 6662( // @SectionList&&preceding @T)m 26(agged @T)k 26(ag)k 480 6374( // @NumberMar)m -3(k)k 4(er&&preceding @T)k 26(agged @T)k 26(ag)k
480 6086( // @P)m 8(ageMar)k -3(k)k 4(er&&preceding @T)k 26(agged @T)k 26(ag)k
480 5798( // { &3f @SectionTitle } @ContentsEntr)m -6(y {@P)k 8(ageOf @T)k 26(ag})k 480 5510( //0io @Body)m
-480 5222(})m 240 fnt1 0 4728(The)m 220 fnt2 409 4725(@BeginSections)m
+480 5222(})m
+[ /Dest /LOUT12_1492_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
5736(by)s 6010(the)s 6338(appropriate)s 7462(g)s 1(ap)k
@@ -16752,11 +17983,17 @@ 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
-240 fnt5 0 12412(4.5.)m 471(Bibliographies)s 240 fnt1 533 11935(The)m
+240 fnt5 0 12412(4.5.)m 471(Bibliographies)s
+[ /Dest /LOUTbiblio /DEST pdfmark
+
+[ /Dest /LOUT15_4082_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 /LOUT15_4082_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
@@ -16772,11 +18009,15 @@ grestore
3148(contain)s 220 fnt2 480 5305({ @Ref)m 6(erence)k 480 5017( @T)m 26(ag { str)k -3(unk1979style })k
480 4729( @T)m 26(ype { Book })k 480 4441( @A)m 6(uthor { Str)k -3(unk, )k 8(William and )k 8(White)k 3(, E.)k 13( B)k 4(.)k 13( })k
480 4153( @Title { )m 11(The Elements of Style })k 480 3865( @Pub)m 4(lisher { MacMillan, third edition })k 480 3577( @Y)m 30(ear { 1979 })k
-480 3289(})m 480 2797({ @Ref)m 6(erence)k 480 2509( @T)m 26(ag { kingston92 })k
+480 3289(})m
+[ /Dest /LOUT12_1492_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_1492_exa_bibl_2 /DEST pdfmark
+
grestore
gsave
1417 -15423 translate
@@ -16981,7 +18222,9 @@ grestore
5279(\207rst)s 5723(step)s 6173(is)s 6396(to)s 6647(create)s
7285(a)s 7463(numbered)s 8491(list)s 8855(of)s 0 7265(places)m
648(that)s 1066(g)s 1(alle)k 3(ys)k 1790(containing)s
-2853(references)s 3884(may)s 4350(attach)s 4977(to:)s 220 fnt2
+2853(references)s 3884(may)s 4350(attach)s 4977(to:)s
+[ /Dest /LOUT15_4082_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
480 5036( named indent { @DispIndent })m 480 4748( named gap { @DispGap })m 480 4460( named star)m -8(t { 1 })k 480 4172({)m
@@ -17067,7 +18310,9 @@ grestore
8998 9745(-)m 220 fnt2 0 9454(Section)m 240 fnt1 777 9457(at)m
1009(each)s 1504(point.)s 480 9083(Our)m 912(task)s 1358(is)s
1568(completed)s 2622(by)s 2916(the)s 3264(follo)s 6(wing)k
-4241(de\207nition:)s 220 fnt2 480 8582(def @Ref r)m -3(ight x)k 480 8294({)m
+4241(de\207nition:)s
+[ /Dest /LOUT15_4082_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 480 7142( @NumberMar)m -3(k)k 4(er&&preceding @T)k 26(agged x &)k
480 6854( @P)m 8(ageMar)k -3(k)k 4(er&&preceding @T)k 26(agged x &)k
@@ -17247,18 +18492,26 @@ gsave
9066 13448 0 13448 240 288 60 1417 -14865 LoutGr2
1 LoutMargSet
grestore
-480 fnt5 0 12397(Refer)m 8(ences)k 240 fnt1 0 11800([1])m
+480 fnt5 0 12397(Refer)m 8(ences)k
+[ /Dest /LOUT16_427_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 0 11009([2])m 480(Brian)s 1132(W)s 22(.)k
+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 10220([3])m 480(Jef)s 6(fre)k 3(y)k
+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
3581(Lout)s 4074(Document)s 5111(F)s 25(ormatting)k 6219(System)s
6929(\(V)s 26(er)k 2(sion)k 7767(3\))s 240 fnt1
@@ -17278,17 +18531,23 @@ grestore
8436(and)s 8832(by)s 480 9068(electronic)m 1474(mail)s 1953(from)s
2477(the)s 2825(author)s 13(.)k 3587(All)s 3947(enquiries)s
4874(to)s 240 fnt6 5113 9070(jef)m 4(f@cs.su.oz.au)k 240 fnt1
-6672 9068(.)m 0 8563([4])m 480(Jef)s 6(fre)k 3(y)k
+6672 9068(.)m
+[ /Dest /LOUTkingston1995lout_user /DEST pdfmark
+0 8563([4])m 480(Jef)s 6(fre)k 3(y)k
1187(H.)s 1463(Kingston.)s 240 fnt6 2504 8565(A)m 2698(User')s 9(s)k
3380(Guide)s 4017(to)s 4255(the)s 4599(Lout)s 5101(Document)s
6148(F)s 25(ormatting)k 7266(System)s 7985(\(V)s 26(er)k 2(sion)k
8833(3\))s 240 fnt1 9022 8563(.)m 480 8275(Basser)m 1177(Department)s
2365(of)s 2636(Computer)s 3653(Science)s 4392(,)s 4499(Uni)s 6(v)k 3(ersity)k
5553(of)s 5824(Sydne)s 3(y)k 6534(,)s 6641(1995)s
-7107(.)s 0 7770([5])m 480(Donald)s 1243(E.)s 1493(Knuth.)s
+7107(.)s
+[ /Dest /LOUTknuth1984tex /DEST pdfmark
+0 7770([5])m 480(Donald)s 1243(E.)s 1493(Knuth.)s
240 fnt6 2256 7772(The)m 2668(T)s 2764 7724(E)m 2872 7772(X)m
3028(Book)s 240 fnt1 3524 7770(.)m 3688(Addison-W)s 19(esle)k 3(y)k
-5268(,)s 5375(1984)s 5849(.)s 0 7265([6])m 480(Brian)s
+5268(,)s 5375(1984)s 5849(.)s
+[ /Dest /LOUTreid1980scribe /DEST pdfmark
+0 7265([6])m 480(Brian)s
1048(K.)s 1305(Reid.)s 1900(A)s 2110(High-)s 2657(Le)s 6(v)k 3(el)k
3227(Approach)s 4207(to)s 4426(Computer)s 5423(Document)s 6459(Production)s
7506(.)s 7650(In)s 240 fnt6 7885 7267(Pr)m 10(oceedings)k
@@ -17297,7 +18556,9 @@ grestore
5804(Langua)s 2(g)k 2(es)k 6891(\(POPL\),)s 7723(Las)s
8107(V)s 26(e)k 9(gas)k 8695(NV)s 240 fnt1
9019 6977(,)m 480 6689(pages)m 1076(24\21131)s 1651(,)s 1758(1980)s
-2233(.)s 0 6184([7])m 480(W)s 9(illiam)k 1313(Strunk)s
+2233(.)s
+[ /Dest /LOUTstrunk1979style /DEST pdfmark
+0 6184([7])m 480(W)s 9(illiam)k 1313(Strunk)s
2012(and)s 2416(E.)s 2666(B.)s 2930(White.)s 240 fnt6
3678 6186(The)m 4090(Elements)s 5021(of)s 5302(Style)s 240 fnt1
5759 6184(.)m 5923(Macmillan)s 6955(.)s 7119(Third)s 7708(Edition)s
@@ -17350,89 +18611,241 @@ gsave
9066 13448 0 13448 240 288 60 1417 -14865 LoutGr2
0 LoutMargSet
grestore
-480 fnt5 0 12404(Index)m 220 fnt2 0 11807(adjust)m 641(@Break)s
-240 fnt1 1444 11810(,)m 1551(42)s 0 11522(Adjustment)m 1176(of)s
-1447(object)s 2038(,)s 2145(49)s 0 11234(Adobe)m 695(Systems,)s
-1599(Inc.)s 1955(,)s 2062(41)s 0 10946(Alignment)m 240 fnt6
+480 fnt5 0 12404(Index)m
+[ /Dest /LOUT16_449_all_1 /DEST pdfmark
+220 fnt2 0 11807(adjust)m 641(@Break)s
+240 fnt1 1444 11810(,)m
+[ /Rect [1551 11810 1785 11972] /Subtype /Link /Dest /LOUT15_4082_pre_brea_1 /ANN pdfmark
+1551(42)s 0 11522(Adjustment)m 1176(of)s
+1447(object)s 2038(,)s
+[ /Rect [2145 11517 2376 11684] /Subtype /Link /Dest /LOUT15_4082_pre_hadj_4 /ANN pdfmark
+2145(49)s 0 11234(Adobe)m 695(Systems,)s
+1599(Inc.)s 1955(,)s
+[ /Rect [2062 11234 2277 11396] /Subtype /Link /Dest /LOUT15_4082_pre_font_8 /ANN pdfmark
+2062(41)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 1363(22)s 220 fnt2 0 10079(b)m 240 fnt1
-174 10082(unit)m 553(,)s 660(37)s 240 9794(use)m 615(in)s
-220 fnt2 858 9791(//1.1b)m 240 fnt1 1406 9794(,)m 1513(27)s
+1256(,)s
+[ /Rect [1363 10658 1597 10820] /Subtype /Link /Dest /LOUT15_4082_det_prec_2 /ANN pdfmark
+1363(22)s 220 fnt2 0 10079(b)m 240 fnt1
+174 10082(unit)m 553(,)s
+[ /Rect [660 10079 888 10244] /Subtype /Link /Dest /LOUT15_4082_pre_conc_15 /ANN pdfmark
+660(37)s 240 9794(use)m 615(in)s
+220 fnt2 858 9791(//1.1b)m 240 fnt1 1406 9794(,)m
+[ /Rect [1513 9793 1741 9956] /Subtype /Link /Dest /LOUT15_4082_det_gall_4 /ANN pdfmark
+1513(27)s
220 fnt2 0 9503(@Bac)m 4(kEnd)k 240 fnt1 1145 9506(symbol)m
-1852(,)s 1959(69)s 220 fnt2 0 9215(@Bac)m 4(kg)k 2(round)k
-240 fnt1 1436 9218(symbol)m 2143(,)s 2250(53)s 220 fnt2
-0 8927(@Begin)m 240 fnt1 829 8930(symbol)m 1536(,)s 1643(36)s
+1852(,)s
+[ /Rect [1959 9501 2190 9670] /Subtype /Link /Dest /LOUT15_4082_pre_bend_1 /ANN pdfmark
+1959(69)s 220 fnt2 0 9215(@Bac)m 4(kg)k 2(round)k
+240 fnt1 1436 9218(symbol)m 2143(,)s
+[ /Rect [2250 9215 2474 9383] /Subtype /Link /Dest /LOUT15_4082_pre_back_1 /ANN pdfmark
+2250(53)s 220 fnt2
+0 8927(@Begin)m 240 fnt1 829 8930(symbol)m 1536(,)s
+[ /Rect [1643 8927 1876 9094] /Subtype /Link /Dest /LOUT15_4082_pre_begi_1 /ANN pdfmark
+1643(36)s
220 fnt2 0 8639(@BeginHeaderComponent)m 240 fnt1 2692 8642(symbol)m 3399(,)s
-3506(59)s 0 8354(Bibliographies)m 1406(,)s 1513(88)s 0 8066(Body)m
-574(of)s 845(a)s 1011(de\207nition)s 1932(,)s 2039(4)s
+
+[ /Rect [3506 8637 3737 8807] /Subtype /Link /Dest /LOUT15_4082_pre_head_2 /ANN pdfmark
+3506(59)s 0 8354(Bibliographies)m 1406(,)s
+[ /Rect [1513 8351 1740 8516] /Subtype /Link /Dest /LOUT15_4082_exa_bibl_1 /ANN pdfmark
+1513(88)s 0 8066(Body)m
+574(of)s 845(a)s 1011(de\207nition)s 1932(,)s
+[ /Rect [2039 8066 2153 8228] /Subtype /Link /Dest /LOUT15_4082_pri_defi_3 /ANN pdfmark
+2039(4)s
220 fnt2 0 7775(body)m 240 fnt1 534 7778(parameter)m 1495(,)s
-1602(17)s 0 7490(Braces)m 648(,)s 755(3)s 220 fnt2
-0 6911(c)m 240 fnt1 165 6914(unit)m 544(,)s 651(37)s
+
+[ /Rect [1602 7777 1830 7940] /Subtype /Link /Dest /LOUT15_4082_det_visi_3 /ANN pdfmark
+1602(17)s 0 7490(Braces)m 648(,)s
+[ /Rect [755 7487 859 7652] /Subtype /Link /Dest /LOUT15_4082_pri_obje_6 /ANN pdfmark
+755(3)s 220 fnt2
+0 6911(c)m 240 fnt1 165 6914(unit)m 544(,)s
+[ /Rect [651 6911 879 7076] /Subtype /Link /Dest /LOUT15_4082_pre_conc_8 /ANN pdfmark
+651(37)s
220 fnt2 0 6623(@Case)m 240 fnt1 787 6626(symbol)m 1494(,)s
-1601(56)s 0 6338(Centring)m 837(,)s 944(37)s 220 fnt2
+
+[ /Rect [1601 6623 1834 6791] /Subtype /Link /Dest /LOUT15_4082_pre_case_1 /ANN pdfmark
+1601(56)s 0 6338(Centring)m 837(,)s
+[ /Rect [944 6335 1172 6500] /Subtype /Link /Dest /LOUT15_4082_pre_conc_31 /ANN pdfmark
+944(37)s 220 fnt2
0 6047(@Chapter)m 240 fnt1 1063 6050(e)m 3(xample)k 1873(,)s
+
+[ /Rect [1980 6047 2214 6212] /Subtype /Link /Dest /LOUT15_4082_exa_chap_4 /ANN pdfmark
1980(84)s 0 5762(Chapters)m 901(and)s 1305(sections)s 2073(,)s
+
+[ /Rect [2180 5759 2404 5924] /Subtype /Link /Dest /LOUT15_4082_exa_chap_1 /ANN pdfmark
2180(83)s 220 fnt2 0 5471(@Char)m 240 fnt1 758 5474(symbol)m
-1465(,)s 1572(42)s 0 5186(Cherry)m 15(,)k 756(L.)s
-953(,)s 1060(72)s 220 fnt2 0 4895(@ClearHeaderComponent)m 240 fnt1
-2655 4898(symbol)m 3362(,)s 3469(60)s 220 fnt2 0 4607(clines)m
-613(@Break)s 240 fnt1 1416 4610(,)m 1523(42)s 220 fnt2
+1465(,)s
+[ /Rect [1572 5474 1806 5636] /Subtype /Link /Dest /LOUT15_4082_pre_font_10 /ANN pdfmark
+1572(42)s 0 5186(Cherry)m 15(,)k 756(L.)s
+953(,)s
+[ /Rect [1060 5185 1294 5348] /Subtype /Link /Dest /LOUT15_4082_exa_equa_3 /ANN pdfmark
+1060(72)s 220 fnt2 0 4895(@ClearHeaderComponent)m 240 fnt1
+2655 4898(symbol)m 3362(,)s
+[ /Rect [3469 4895 3704 5062] /Subtype /Link /Dest /LOUT15_4082_pre_head_5 /ANN pdfmark
+3469(60)s 220 fnt2 0 4607(clines)m
+613(@Break)s 240 fnt1 1416 4610(,)m
+[ /Rect [1523 4607 1747 4772] /Subtype /Link /Dest /LOUT15_4082_pre_brea_8 /ANN pdfmark
+1523(43)s 220 fnt2
0 4319(@ColList)m 240 fnt1 948 4322(e)m 3(xample)k 1758(,)s
-1865(80)s 0 4034(Column)m 829(mark)s 1328(,)s 1435(1)s
-0 3746(Comment)m 951(,)s 1058(15)s 0 3458(Comment)m 1004(character)s
-1885(,)s 1992(13)s 220 fnt2 0 3167(@Common)m 240 fnt1
-1159 3170(symbol)m 1866(,)s 1973(54)s 0 2882(Components)m 1262(of)s
+
+[ /Rect [1865 4319 2100 4484] /Subtype /Link /Dest /LOUT15_4082_exa_page_5 /ANN pdfmark
+1865(80)s 0 4034(Column)m 829(mark)s 1328(,)s
+[ /Rect [1435 4034 1530 4196] /Subtype /Link /Dest /LOUT15_4082_pri_obje_2 /ANN pdfmark
+1435(1)s
+0 3746(Comment)m 951(,)s
+[ /Rect [1058 3743 1284 3911] /Subtype /Link /Dest /LOUT15_4082_det_lexi_21 /ANN pdfmark
+1058(15)s 0 3458(Comment)m 1004(character)s
+1885(,)s
+[ /Rect [1992 3455 2216 3620] /Subtype /Link /Dest /LOUT15_4082_det_lexi_6 /ANN pdfmark
+1992(13)s 220 fnt2 0 3167(@Common)m 240 fnt1
+1159 3170(symbol)m 1866(,)s
+[ /Rect [1973 3167 2207 3335] /Subtype /Link /Dest /LOUT15_4082_pre_rump_1 /ANN pdfmark
+1973(54)s 0 2882(Components)m 1262(of)s
1533(a)s 1699(g)s 1(alle)k 3(y)k 2280(,)s
-2387(26)s 240 2594(promotion)m 1294(of)s 1512(,)s 1619(29)s
-0 2306(Concatenation)m 1439(symbols)s 2235(,)s 2342(36)s 0 2018(Contraction)m
-1186(of)s 1457(object)s 2048(,)s 2155(49)s 220 fnt2
+
+[ /Rect [2387 2879 2620 3046] /Subtype /Link /Dest /LOUT15_4082_det_gall_3 /ANN pdfmark
+2387(26)s 240 2594(promotion)m 1294(of)s 1512(,)s
+[ /Rect [1619 2589 1850 2756] /Subtype /Link /Dest /LOUT15_4082_det_gall_8 /ANN pdfmark
+1619(29)s
+0 2306(Concatenation)m 1439(symbols)s 2235(,)s
+[ /Rect [2342 2303 2575 2470] /Subtype /Link /Dest /LOUT15_4082_pre_conc_1 /ANN pdfmark
+2342(36)s 0 2018(Contraction)m
+1186(of)s 1457(object)s 2048(,)s
+[ /Rect [2155 2013 2386 2180] /Subtype /Link /Dest /LOUT15_4082_pre_hcon_3 /ANN pdfmark
+2155(49)s 220 fnt2
0 1727(cr)m 2(agged)k 839(@Break)s 240 fnt1 1642 1730(,)m
-1749(42)s 0 1442(Cross)m 596(reference)s 1486(,)s 1593(7)s
+
+[ /Rect [1749 1730 1983 1892] /Subtype /Link /Dest /LOUT15_4082_pre_brea_4 /ANN pdfmark
+1749(42)s 0 1442(Cross)m 596(reference)s 1486(,)s
+[ /Rect [1593 1441 1701 1600] /Subtype /Link /Dest /LOUT15_4082_pri_cros_1 /ANN pdfmark
+1593(7)s
220 fnt2 0 1151(@CurrLang)m 240 fnt1 1185 1154(symbol)m 1892(,)s
+
+[ /Rect [1999 1153 2227 1316] /Subtype /Link /Dest /LOUT15_4082_pre_lang_3 /ANN pdfmark
1999(47)s 220 fnt2 0 575(d)m 240 fnt1 170 578(unit)m
-549(,)s 656(37)s 220 fnt2 0 287(@Database)m 240 fnt1
-1214 290(symbol)m 1921(,)s 2028(63)s 4816 11807(Date,)m 5374(printing)s
-6184(of)s 6455(current)s 7138(,)s 7245(58)s 4816 11519(Def)m 2(ault)k
+549(,)s
+[ /Rect [656 575 884 740] /Subtype /Link /Dest /LOUT15_4082_pre_conc_17 /ANN pdfmark
+656(37)s 220 fnt2 0 287(@Database)m 240 fnt1
+1214 290(symbol)m 1921(,)s
+[ /Rect [2028 287 2252 454] /Subtype /Link /Dest /LOUT15_4082_pre_data_1 /ANN pdfmark
+2028(63)s 4816 11807(Date,)m 5374(printing)s
+6184(of)s 6455(current)s 7138(,)s
+[ /Rect [7245 11804 7472 11972] /Subtype /Link /Dest /LOUT15_4082_pre_mome_2 /ANN pdfmark
+7245(58)s 4816 11519(Def)m 2(ault)k
5590(v)s 6(alue)k 6158(of)s 6429(parameter)s 7390(,)s
-7497(15)s 4816 11231(De\207nitions)m 5877(,)s 5984(4)s 4816 10943(Delimiter)m
-5737(,)s 5844(13)s 4816 10655(Diag)m 5334(diagram-dra)s 3(wing)k
-7030(package)s 7817(,)s 7924(67)s 4816 10367(Diagrams)m 5743(,)s
-5850(63)s 4816 10079(DocumentLayout)m 6551(package)s 7338(,)s 7445(74)s
-5056 9791(chapters)m 5903(and)s 6307(sections)s 7075(,)s 7182(83)s
-5056 9503(displays)m 5838(,)s 5945(75)s 5056 9215(lists)m 5438(,)s
-5545(76)s 5056 8927(page)m 5564(layout)s 6169(,)s 6276(78)s
-5056 8639(paragraphs)m 6103(,)s 6210(75)s 220 fnt2 4816 8060(e)m
+
+[ /Rect [7497 11516 7723 11684] /Subtype /Link /Dest /LOUT15_4082_det_name_3 /ANN pdfmark
+7497(15)s 4816 11231(De\207nitions)m 5877(,)s
+[ /Rect [5984 11231 6098 11393] /Subtype /Link /Dest /LOUT15_4082_pri_defi_1 /ANN pdfmark
+5984(4)s 4816 10943(Delimiter)m
+5737(,)s
+[ /Rect [5844 10940 6068 11105] /Subtype /Link /Dest /LOUT15_4082_det_lexi_11 /ANN pdfmark
+5844(13)s 4816 10655(Diag)m 5334(diagram-dra)s 3(wing)k
+7030(package)s 7817(,)s
+[ /Rect [7924 10652 8152 10819] /Subtype /Link /Dest /LOUT15_4082_pre_grap_4 /ANN pdfmark
+7924(67)s 4816 10367(Diagrams)m 5743(,)s
+
+[ /Rect [5850 10364 6084 10531] /Subtype /Link /Dest /LOUT15_4082_pre_grap_2 /ANN pdfmark
+5850(64)s 4816 10079(DocumentLayout)m 6551(package)s 7338(,)s
+[ /Rect [7445 10078 7679 10241] /Subtype /Link /Dest /LOUT15_4082_exa_para_1 /ANN pdfmark
+7445(74)s
+5056 9791(chapters)m 5903(and)s 6307(sections)s 7075(,)s
+[ /Rect [7182 9788 7406 9953] /Subtype /Link /Dest /LOUT15_4082_exa_chap_2 /ANN pdfmark
+7182(83)s
+5056 9503(displays)m 5838(,)s
+[ /Rect [5945 9500 6171 9668] /Subtype /Link /Dest /LOUT15_4082_exa_para_4 /ANN pdfmark
+5945(75)s 5056 9215(lists)m 5438(,)s
+
+[ /Rect [5545 9212 5778 9379] /Subtype /Link /Dest /LOUT15_4082_exa_para_6 /ANN pdfmark
+5545(76)s 5056 8927(page)m 5564(layout)s 6169(,)s
+[ /Rect [6276 8924 6503 9089] /Subtype /Link /Dest /LOUT15_4082_exa_page_2 /ANN pdfmark
+6276(78)s
+5056 8639(paragraphs)m 6103(,)s
+[ /Rect [6210 8636 6436 8804] /Subtype /Link /Dest /LOUT15_4082_exa_para_2 /ANN pdfmark
+6210(75)s 220 fnt2 4816 8060(e)m
240 fnt1 4990 8063(g)m 1(ap)k 5388(mode)s 5923(,)s
+
+[ /Rect [6030 8060 6258 8225] /Subtype /Link /Dest /LOUT15_4082_pre_conc_20 /ANN pdfmark
6030(37)s 4816 7775(Edge-to-edge)m 6160(g)s 1(ap)k 6558(mode)s
-7093(,)s 7200(37)s 220 fnt2 4816 7484(@Enclose)m 240 fnt1
-5818 7487(,)m 5925(31)s 220 fnt2 4816 7196(@End)m 240 fnt1
-5477 7199(symbol)m 6184(,)s 6291(36)s 220 fnt2 4816 6908(@EndHeaderComponent)m
-240 fnt1 7338 6911(symbol)m 8045(,)s 8152(60)s 4816 6623(Eq)m
-5140(equation)s 6021(formatting)s 7082(package)s 7869(,)s 7976(72)s
+7093(,)s
+[ /Rect [7200 7772 7428 7937] /Subtype /Link /Dest /LOUT15_4082_pre_conc_19 /ANN pdfmark
+7200(37)s 220 fnt2 4816 7484(@Enclose)m 240 fnt1
+5818 7487(,)m
+[ /Rect [5925 7484 6140 7649] /Subtype /Link /Dest /LOUT15_4082_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] /Subtype /Link /Dest /LOUT15_4082_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 8387 7075] /Subtype /Link /Dest /LOUT15_4082_pre_head_3 /ANN pdfmark
+8152(60)s 4816 6623(Eq)m
+5140(equation)s 6021(formatting)s 7082(package)s 7869(,)s
+[ /Rect [7976 6622 8210 6785] /Subtype /Link /Dest /LOUT15_4082_exa_equa_1 /ANN pdfmark
+7976(72)s
220 fnt2 4816 6332(@Eq)m 240 fnt1 5354 6335(e)m 3(xample)k
-6164(,)s 6271(72)s 4816 6047(Escape)m 5549(character)s 6430(,)s
+6164(,)s
+[ /Rect [6271 6334 6505 6497] /Subtype /Link /Dest /LOUT15_4082_exa_equa_4 /ANN pdfmark
+6271(72)s 4816 6047(Escape)m 5549(character)s 6430(,)s
+
+[ /Rect [6537 6044 6761 6209] /Subtype /Link /Dest /LOUT15_4082_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 7352(82)s
-4816 5471(Expansion)m 5884(of)s 6155(object)s 6746(,)s 6853(48)s
+240 fnt1 6435 5759(e)m 3(xample)k 7245(,)s
+[ /Rect [7352 5756 7586 5921] /Subtype /Link /Dest /LOUT15_4082_exa_page_10 /ANN pdfmark
+7352(82)s
+4816 5471(Expansion)m 5884(of)s 6155(object)s 6746(,)s
+[ /Rect [6853 5466 7084 5633] /Subtype /Link /Dest /LOUT15_4082_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 6191(18)s 220 fnt2 4816 4604(f)m
-240 fnt1 4934 4607(unit)m 5313(,)s 5420(37)s 4816 4319(F)m 3(ace)k
-5320(of)s 5591(a)s 5757(font)s 6149(,)s 6256(40)s
+5484 5183(clause)m 6084(,)s
+[ /Rect [6191 5180 6418 5345] /Subtype /Link /Dest /LOUT15_4082_det_visi_4 /ANN pdfmark
+6191(18)s 220 fnt2 4816 4604(f)m
+240 fnt1 4934 4607(unit)m 5313(,)s
+[ /Rect [5420 4604 5648 4769] /Subtype /Link /Dest /LOUT15_4082_pre_conc_11 /ANN pdfmark
+5420(37)s 4816 4319(F)m 3(ace)k
+5320(of)s 5591(a)s 5757(font)s 6149(,)s
+[ /Rect [6256 4316 6491 4481] /Subtype /Link /Dest /LOUT15_4082_pre_font_3 /ANN pdfmark
+6256(40)s
4816 4031(F)m 3(amily)k 5544(of)s 5815(a)s 5981(font)s
-6373(,)s 6480(40)s 220 fnt2 4816 3740(f)m 6(ollo)k 3(wing)k
-240 fnt1 5653 3743(,)m 5760(8)s 220 fnt2 4816 3452(f)m 6(ollo)k 3(wing)k
-240 fnt1 5653 3455(,)m 5760(8)s 4816 3167(F)m 3(onts)k
-5343(,)s 5450(40)s 220 fnt2 4816 2876(@F)m 6(ont)k
-240 fnt1 5528 2879(symbol)m 6235(,)s 6342(40)s 220 fnt2
+6373(,)s
+[ /Rect [6480 4028 6715 4193] /Subtype /Link /Dest /LOUT15_4082_pre_font_2 /ANN pdfmark
+6480(40)s 220 fnt2 4816 3740(f)m 6(ollo)k 3(wing)k
+240 fnt1 5653 3743(,)m
+[ /Rect [5760 3740 5867 3905] /Subtype /Link /Dest /LOUT15_4082_pri_cros_7 /ANN pdfmark
+5760(8)s 220 fnt2 4816 3452(f)m 6(ollo)k 3(wing)k
+240 fnt1 5653 3455(,)m
+[ /Rect [5760 3452 5867 3617] /Subtype /Link /Dest /LOUT15_4082_pri_cros_6 /ANN pdfmark
+5760(8)s 4816 3167(F)m 3(onts)k
+5343(,)s
+[ /Rect [5450 3164 5685 3329] /Subtype /Link /Dest /LOUT15_4082_pre_font_1 /ANN pdfmark
+5450(40)s 220 fnt2 4816 2876(@F)m 6(ont)k
+240 fnt1 5528 2879(symbol)m 6235(,)s
+[ /Rect [6342 2876 6577 3041] /Subtype /Link /Dest /LOUT15_4082_pre_font_6 /ANN pdfmark
+6342(40)s 220 fnt2
4816 2588(@F)m 6(ootSect)k 240 fnt1 5967 2591(e)m 3(xample)k
-6777(,)s 6884(79)s 4816 2303(F)m 3(orcing)k 5610(g)s 1(alle)k 3(y)k
-6191(,)s 6298(29)s 4816 2015(F)m 3(ormfeed)k 5747(,)s
-5854(13)s 4816 1439(Galle)m 3(ys)k 5541(,)s 5648(10)s
-5056 1151(in)m 5299(detail)s 5831(,)s 5938(25)s 220 fnt2
+6777(,)s
+[ /Rect [6884 2586 7115 2753] /Subtype /Link /Dest /LOUT15_4082_exa_page_4 /ANN pdfmark
+6884(79)s 4816 2303(F)m 3(orcing)k 5610(g)s 1(alle)k 3(y)k
+6191(,)s
+[ /Rect [6298 2298 6529 2465] /Subtype /Link /Dest /LOUT15_4082_det_gall_10 /ANN pdfmark
+6298(29)s 4816 2015(F)m 3(ormfeed)k 5747(,)s
+
+[ /Rect [5854 2012 6078 2177] /Subtype /Link /Dest /LOUT15_4082_det_lexi_9 /ANN pdfmark
+5854(13)s 4816 1439(Galle)m 3(ys)k 5541(,)s
+[ /Rect [5648 1436 5883 1601] /Subtype /Link /Dest /LOUT15_4082_pri_gall_1 /ANN pdfmark
+5648(10)s
+5056 1151(in)m 5299(detail)s 5831(,)s
+[ /Rect [5938 1148 6164 1316] /Subtype /Link /Dest /LOUT15_4082_det_gall_1 /ANN pdfmark
+5938(25)s 220 fnt2
4816 860(@Galle)m 4(y)k 5654(@F)s 6(orceGalle)k 4(y)k
-240 fnt1 7107 863(symbol)m 7814(,)s 7921(58)s 8155(,)s
-4816 575(Gap)m 5215(,)s 5322(37)s 4816 287(Gap)m 5268(mode)s
-5803(,)s 5910(37)s
+240 fnt1 7107 863(symbol)m 7814(,)s
+[ /Rect [7921 860 8148 1028] /Subtype /Link /Dest /LOUT15_4082_pre_gall_1 /ANN pdfmark
+7921(58)s 8155(,)s
+4816 575(Gap)m 5215(,)s
+[ /Rect [5322 572 5550 737] /Subtype /Link /Dest /LOUT15_4082_pre_conc_6 /ANN pdfmark
+5322(37)s 4816 287(Gap)m 5268(mode)s
+5803(,)s
+[ /Rect [5910 284 6138 449] /Subtype /Link /Dest /LOUT15_4082_pre_conc_18 /ANN pdfmark
+5910(37)s
grestore
0 0 0 0 240 288 60 1417 -14865 LoutGr2
0 LoutMargSet
@@ -17485,104 +18898,274 @@ gsave
1 LoutMargSet
grestore
220 fnt2 0 13245(@Gr)m 2(aphic)k 240 fnt1 1044 13248(symbol)m
-1751(,)s 1858(63)s 220 fnt2 0 12669(h)m 240 fnt1
-168 12672(g)m 1(ap)k 566(mode)s 1101(,)s 1208(37)s
+1751(,)s
+[ /Rect [1858 13245 2092 13412] /Subtype /Link /Dest /LOUT15_4082_pre_grap_1 /ANN pdfmark
+1858(64)s 220 fnt2 0 12669(h)m 240 fnt1
+168 12672(g)m 1(ap)k 566(mode)s 1101(,)s
+[ /Rect [1208 12669 1436 12834] /Subtype /Link /Dest /LOUT15_4082_pre_conc_22 /ANN pdfmark
+1208(37)s
220 fnt2 0 12381(@HAdjust)m 240 fnt1 1046 12384(symbol)m 1753(,)s
+
+[ /Rect [1860 12379 2091 12546] /Subtype /Link /Dest /LOUT15_4082_pre_hadj_2 /ANN pdfmark
1860(49)s 220 fnt2 0 12093(@HContr)m 2(act)k 240 fnt1
-1264 12096(symbol)m 1971(,)s 2078(49)s 220 fnt2 0 11805(@HCo)m 3(v)k 5(er)k
-240 fnt1 1018 11808(symbol)m 1725(,)s 1832(50)s 0 11520(Header)m
+1264 12096(symbol)m 1971(,)s
+[ /Rect [2078 12091 2309 12258] /Subtype /Link /Dest /LOUT15_4082_pre_hcon_1 /ANN pdfmark
+2078(49)s 220 fnt2 0 11805(@HCo)m 3(v)k 5(er)k
+240 fnt1 1018 11808(symbol)m 1725(,)s
+[ /Rect [1832 11805 2067 11973] /Subtype /Link /Dest /LOUT15_4082_pre_cove_1 /ANN pdfmark
+1832(50)s 0 11520(Header)m
750(component)s 1874(of)s 2145(g)s 1(alle)k 3(y)k
-2726(,)s 2833(59)s 0 11232(Height)m 711(of)s 982(an)s
-1265(object)s 1856(,)s 1963(24)s 220 fnt2 0 10941(@HExpand)m
-240 fnt1 1173 10944(symbol)m 1880(,)s 1987(48)s 220 fnt2
-0 10653(@High)m 240 fnt1 719 10656(symbol)m 1426(,)s 1533(48)s
+2726(,)s
+[ /Rect [2833 11515 3064 11685] /Subtype /Link /Dest /LOUT15_4082_pre_head_1 /ANN pdfmark
+2833(59)s 0 11232(Height)m 711(of)s 982(an)s
+1265(object)s 1856(,)s
+[ /Rect [1963 11232 2197 11394] /Subtype /Link /Dest /LOUT15_4082_det_size_3 /ANN pdfmark
+1963(24)s 220 fnt2 0 10941(@HExpand)m
+240 fnt1 1173 10944(symbol)m 1880(,)s
+[ /Rect [1987 10939 2218 11106] /Subtype /Link /Dest /LOUT15_4082_pre_hexp_1 /ANN pdfmark
+1987(49)s 220 fnt2
+0 10653(@High)m 240 fnt1 719 10656(symbol)m 1426(,)s
+[ /Rect [1533 10653 1760 10818] /Subtype /Link /Dest /LOUT15_4082_pre_wide_2 /ANN pdfmark
+1533(48)s
220 fnt2 0 10365(@HLimited)m 240 fnt1 1135 10368(symbol)m 1842(,)s
+
+[ /Rect [1949 10363 2180 10530] /Subtype /Link /Dest /LOUT15_4082_pre_hlim_1 /ANN pdfmark
1949(49)s 220 fnt2 0 10077(@Hline)m 240 fnt1 773 10080(e)m 3(xample)k
-1583(,)s 1690(74)s 0 9792(Horizontal)m 1077(concatenation)s 2409(,)s
+1583(,)s
+[ /Rect [1690 10079 1924 10242] /Subtype /Link /Dest /LOUT15_4082_exa_equa_7 /ANN pdfmark
+1690(74)s 0 9792(Horizontal)m 1077(concatenation)s 2409(,)s
+
+[ /Rect [2516 9789 2749 9956] /Subtype /Link /Dest /LOUT15_4082_pre_conc_3 /ANN pdfmark
2516(36)s 220 fnt2 0 9501(@HScale)m 240 fnt1 981 9504(symbol)m
-1688(,)s 1795(50)s 220 fnt2 0 9213(@HShift)m 240 fnt1
-875 9216(symbol)m 1582(,)s 1689(48)s 220 fnt2 0 8925(@HSpan)m
-240 fnt1 939 8928(symbol)m 1646(,)s 1753(51)s 220 fnt2
+1688(,)s
+[ /Rect [1795 9501 2030 9669] /Subtype /Link /Dest /LOUT15_4082_pre_hsca_1 /ANN pdfmark
+1795(50)s 220 fnt2 0 9213(@HShift)m 240 fnt1
+875 9216(symbol)m 1582(,)s
+[ /Rect [1689 9213 1916 9378] /Subtype /Link /Dest /LOUT15_4082_pre_hshi_1 /ANN pdfmark
+1689(48)s 220 fnt2 0 8925(@HSpan)m
+240 fnt1 939 8928(symbol)m 1646(,)s
+[ /Rect [1753 8925 1968 9093] /Subtype /Link /Dest /LOUT15_4082_pre_span_4 /ANN pdfmark
+1753(51)s 220 fnt2
0 8637(h)m 6(yphen)k 760(@Break)s 240 fnt1 1563 8640(,)m
+
+[ /Rect [1670 8637 1894 8802] /Subtype /Link /Dest /LOUT15_4082_pre_brea_11 /ANN pdfmark
1670(43)s 0 8352(Hyphenation)m 1294(g)s 1(ap)k 1692(mode)s
-2227(,)s 2334(39)s 0 8064(Hyphenation)m 1294(g)s 1(ap)k
-1692(mode)s 2227(,)s 2334(37)s 0 7488(Identi\207er)m 882(,)s
+2227(,)s
+[ /Rect [2334 8347 2565 8514] /Subtype /Link /Dest /LOUT15_4082_pre_conc_37 /ANN pdfmark
+2334(39)s 0 8064(Hyphenation)m 1294(g)s 1(ap)k
+1692(mode)s 2227(,)s
+[ /Rect [2334 8061 2562 8226] /Subtype /Link /Dest /LOUT15_4082_pre_conc_21 /ANN pdfmark
+2334(37)s 0 7488(Identi\207er)m 882(,)s
+
+[ /Rect [989 7485 1213 7650] /Subtype /Link /Dest /LOUT15_4082_det_lexi_12 /ANN pdfmark
989(13)s 220 fnt2 0 7197(impor)m -8(t)k 240 fnt1
-673 7200(clause)m 1273(,)s 1380(18)s 0 6912(In-paragraph)m 1291(concatenation)s
-2623(,)s 2730(37)s 220 fnt2 0 6621(@Include)m 240 fnt1
-982 6624(symbol)m 1689(,)s 1796(68)s 220 fnt2 0 6333(@IncludeGr)m 2(aphic)k
-240 fnt1 1751 6336(symbol)m 2458(,)s 2565(67)s 220 fnt2
+673 7200(clause)m 1273(,)s
+[ /Rect [1380 7197 1607 7362] /Subtype /Link /Dest /LOUT15_4082_det_visi_5 /ANN pdfmark
+1380(18)s 0 6912(In-paragraph)m 1291(concatenation)s
+2623(,)s
+[ /Rect [2730 6909 2958 7074] /Subtype /Link /Dest /LOUT15_4082_pre_conc_4 /ANN pdfmark
+2730(37)s 220 fnt2 0 6621(@Include)m 240 fnt1
+982 6624(symbol)m 1689(,)s
+[ /Rect [1796 6619 2027 6788] /Subtype /Link /Dest /LOUT15_4082_pre_incl_1 /ANN pdfmark
+1796(69)s 220 fnt2 0 6333(@IncludeGr)m 2(aphic)k
+240 fnt1 1751 6336(symbol)m 2458(,)s
+[ /Rect [2565 6333 2792 6500] /Subtype /Link /Dest /LOUT15_4082_pre_incg_1 /ANN pdfmark
+2565(68)s 220 fnt2
0 6045(@IndentedDispla)m 6(y)k 240 fnt1 1847 6048(e)m 3(xample)k
-2657(,)s 2764(75)s 220 fnt2 0 5757(@IndentedList)m 240 fnt1
-1474 5760(e)m 3(xample)k 2284(,)s 2391(77)s 0 5472(Inde)m 3(x)k
-597(\207le)s 958(\(for)s 1375(databases\))s 2366(,)s 2473(63)s
+2657(,)s
+[ /Rect [2764 6045 2990 6213] /Subtype /Link /Dest /LOUT15_4082_exa_para_5 /ANN pdfmark
+2764(75)s 220 fnt2 0 5757(@IndentedList)m 240 fnt1
+1474 5760(e)m 3(xample)k 2284(,)s
+[ /Rect [2391 5759 2619 5918] /Subtype /Link /Dest /LOUT15_4082_exa_para_8 /ANN pdfmark
+2391(77)s 0 5472(Inde)m 3(x)k
+597(\207le)s 958(\(for)s 1375(databases\))s 2366(,)s
+[ /Rect [2473 5469 2707 5636] /Subtype /Link /Dest /LOUT15_4082_pre_data_2 /ANN pdfmark
+2473(64)s
220 fnt2 0 5181(@Inser)m -8(t)k 240 fnt1 836 5184(symbol)m
-1543(,)s 1650(55)s 220 fnt2 0 4893(into)m 240 fnt1
-406 4896(clause)m 1006(,)s 1113(10)s 0 4608(In)m 9(v)k 4(ocation)k
-1067(of)s 1338(a)s 1504(symbol)s 2211(,)s 2318(4)s
+1543(,)s
+[ /Rect [1650 5181 1876 5349] /Subtype /Link /Dest /LOUT15_4082_pre_inse_1 /ANN pdfmark
+1650(55)s 220 fnt2 0 4893(into)m 240 fnt1
+406 4896(clause)m 1006(,)s
+[ /Rect [1113 4893 1348 5058] /Subtype /Link /Dest /LOUT15_4082_pri_gall_2 /ANN pdfmark
+1113(10)s 0 4608(In)m 9(v)k 4(ocation)k
+1067(of)s 1338(a)s 1504(symbol)s 2211(,)s
+[ /Rect [2318 4608 2432 4770] /Subtype /Link /Dest /LOUT15_4082_pri_defi_4 /ANN pdfmark
+2318(4)s
220 fnt2 0 3741(k)m 240 fnt1 170 3744(g)m 1(ap)k
-568(mode)s 1103(,)s 1210(37)s 0 3456(K)m 6(ernighan,)k
-1111(B.)s 1322(,)s 1429(72)s 0 3168(K)m 6(erning)k
-778(,)s 885(40)s 0 2880(K)m 6(erning)k 831(g)s 1(ap)k
-1229(mode)s 1764(,)s 1871(37)s 220 fnt2 0 2589(@K)m 8(er)k -5(nShr)k -3(ink)k
-240 fnt1 1367 2592(symbol)m 2074(,)s 2181(53)s 220 fnt2
+568(mode)s 1103(,)s
+[ /Rect [1210 3741 1438 3906] /Subtype /Link /Dest /LOUT15_4082_pre_conc_28 /ANN pdfmark
+1210(37)s 0 3456(K)m 6(ernighan,)k
+1111(B.)s 1322(,)s
+[ /Rect [1429 3455 1663 3618] /Subtype /Link /Dest /LOUT15_4082_exa_equa_2 /ANN pdfmark
+1429(72)s 0 3168(K)m 6(erning)k
+778(,)s
+[ /Rect [885 3165 1120 3330] /Subtype /Link /Dest /LOUT15_4082_pre_font_5 /ANN pdfmark
+885(40)s 0 2880(K)m 6(erning)k 831(g)s 1(ap)k
+1229(mode)s 1764(,)s
+[ /Rect [1871 2877 2099 3042] /Subtype /Link /Dest /LOUT15_4082_pre_conc_27 /ANN pdfmark
+1871(37)s 220 fnt2 0 2589(@K)m 8(er)k -5(nShr)k -3(ink)k
+240 fnt1 1367 2592(symbol)m 2074(,)s
+[ /Rect [2181 2589 2415 2757] /Subtype /Link /Dest /LOUT15_4082_pre_kshr_1 /ANN pdfmark
+2181(54)s 220 fnt2
0 2301(@K)m 8(e)k 4(y)k 240 fnt1 647 2304(parameter)m
-1608(,)s 1715(32)s 0 2016(Knuth,)m 706(D.)s 930(,)s
+1608(,)s
+[ /Rect [1715 2301 1949 2466] /Subtype /Link /Dest /LOUT15_4082_det_sort_2 /ANN pdfmark
+1715(32)s 0 2016(Knuth,)m 706(D.)s 930(,)s
+
+[ /Rect [1037 2015 1271 2178] /Subtype /Link /Dest /LOUT15_4082_exa_equa_8 /ANN pdfmark
1037(74)s 220 fnt2 0 1437(langdef)m 240 fnt1 776 1440(language)m
-1696(de\207nition)s 2617(,)s 2724(46)s 220 fnt2 0 1149(@Language)m
-240 fnt1 1251 1152(symbol)m 1958(,)s 2065(46)s 220 fnt2
-0 861(@LClos)m 240 fnt1 836 864(symbol)m 1543(,)s 1650(14)s
-0 576(LCM)m 573(\207le)s 881(,)s 988(41)s 0 288(Length)m
-682(,)s 789(37)s 220 fnt2 4816 13246(@LEn)m 4(v)k
-240 fnt1 5594 13249(symbol)m 6301(,)s 6408(14)s 4816 12961(Letter)m
-5445(character)s 6326(,)s 6433(13)s 4816 12673(Lig)m 1(atures)k
-5715(,)s 5822(40)s 220 fnt2 4816 12382(lines)m 5319(@Break)s
-240 fnt1 6122 12385(,)m 6229(42)s 220 fnt2 4816 12094(@LInput)m
-240 fnt1 5705 12097(symbol)m 6412(,)s 6519(14)s 4816 11809(Literal)m
-5506(w)s 2(ord)k 6001(,)s 6108(14)s 220 fnt2
-4816 11518(@LUse)m 240 fnt1 5603 11521(symbol)m 6310(,)s 6417(14)s
-220 fnt2 4816 11230(@L)m 24(Vis)k 240 fnt1 5494 11233(symbol)m
-6201(,)s 6308(14)s 220 fnt2 4816 10654(m)m 240 fnt1
-5045 10657(unit)m 5424(,)s 5531(37)s 4816 10369(Macro)m 5440(,)s
-5547(15)s 4816 10081(Mark)m 5395(alignment)s 6358(,)s 6465(1)s
-5056 9793(in)m 5299(detail)s 5831(,)s 5938(28)s 4816 9505(Mark-to-mark)m
-6230(g)s 1(ap)k 6628(mode)s 7163(,)s 7270(37)s
-220 fnt2 4816 9214(@Meld)m 240 fnt1 5562 9217(symbol)m 6269(,)s
-6376(54)s 220 fnt2 4816 8926(@Merge)m 240 fnt1 5713 8929(symbol)m
-6420(,)s 6527(33)s 220 fnt2 4816 8638(@Moment)m 240 fnt1
-5888 8641(symbol)m 6595(,)s 6702(57)s 220 fnt2 4816 8062(named)m
-240 fnt1 5535 8065(parameter)m 6496(,)s 6603(15)s 4816 7777(Nested)m
-5538(de\207nitions)s 6546(,)s 6653(17)s 220 fnt2 4816 7486(@Ne)m 6(xt)k
-240 fnt1 5540 7489(symbol)m 6247(,)s 6354(56)s 220 fnt2
-4816 7198(noh)m 6(yphen)k 5820(@Break)s 240 fnt1 6623 7201(,)m
-6730(43)s 220 fnt2 4816 6910(@NotRe)m 6(v)k 5(ealed)k
-240 fnt1 6343 6913(symbol)m 7050(,)s 7157(60)s 220 fnt2
-4816 6622(@Null)m 240 fnt1 5461 6625(symbol)m 6168(,)s 6275(58)s
-4816 6337(Numbered)m 5884(list)s 6182(,)s 6289(76)s 220 fnt2
-4816 6046(@NumberOf)m 240 fnt1 6108 6049(e)m 3(xample)k 6918(,)s
-7025(83)s 220 fnt2 4816 5470(o)m 240 fnt1 4991 5473(g)m 1(ap)k
-5389(mode)s 5924(,)s 6031(37)s 4816 5185(Object)m 5460(,)s
-5567(1)s 220 fnt2 4816 4894(@OddP)m 8(ageList)k 240 fnt1
-6355 4897(e)m 3(xample)k 7165(,)s 7272(82)s 220 fnt2
-4816 4606(@OneCol)m 240 fnt1 5828 4609(symbol)m 6535(,)s 6642(48)s
-220 fnt2 4816 4318(@OneOf)m 240 fnt1 5743 4321(symbol)m 6450(,)s
-6557(55)s 220 fnt2 4816 4030(@OneP)m 8(age)k 240 fnt1
-6010 4033(e)m 3(xample)k 6820(,)s 6927(81)s 220 fnt2
-4816 3742(@OneRo)m 3(w)k 240 fnt1 5947 3745(symbol)m 6654(,)s
-6761(47)s 220 fnt2 4816 3454(@Open)m 240 fnt1 5622 3457(symbol)m
-6329(,)s 6436(62)s 4816 3169(Optimal)m 5654(g)s 1(alle)k 3(y)k
-6288(breaking)s 7125(,)s 7232(35)s 220 fnt2 4816 2878(@Optimiz)m 3(e)k
-240 fnt1 5953 2881(symbol)m 6660(,)s 6767(35)s 220 fnt2
-4816 2590(or)m 2(agged)k 5667(@Break)s 240 fnt1 6470 2593(,)m
-6577(42)s 220 fnt2 4816 2302(@OrElse)m 240 fnt1 5761 2305(e)m 3(xample)k
-6571(,)s 6678(86)s 4816 2017(Other)m 5420(character)s 6301(,)s
-6408(13)s 220 fnt2 4816 1726(outdent)m 5604(@Break)s 240 fnt1
-6407 1729(,)m 6514(42)s 220 fnt2 4816 1438(@Outline)m 240 fnt1
-5785 1441(symbol)m 6492(,)s 6599(46)s 220 fnt2 4816 1150(o)m 3(v)k 5(er)k
-240 fnt1 5295 1153(e)m 3(xample)k 6105(,)s 6212(73)s
-4816 865(Ov)m 3(erstrik)k 2(e)k 5875(g)s 1(ap)k
-6273(mode)s 6808(,)s 6915(37)s 220 fnt2 4816 286(p)m
-240 fnt1 4990 289(unit)m 5369(,)s 5476(37)s
+1696(de\207nition)s 2617(,)s
+[ /Rect [2724 1437 2957 1604] /Subtype /Link /Dest /LOUT15_4082_pre_lang_2 /ANN pdfmark
+2724(46)s 220 fnt2 0 1149(@Language)m
+240 fnt1 1251 1152(symbol)m 1958(,)s
+[ /Rect [2065 1149 2298 1316] /Subtype /Link /Dest /LOUT15_4082_pre_lang_1 /ANN pdfmark
+2065(46)s 220 fnt2
+0 861(@LClos)m 240 fnt1 836 864(symbol)m 1543(,)s
+[ /Rect [1650 864 1884 1026] /Subtype /Link /Dest /LOUT15_4082_det_lexi_13 /ANN pdfmark
+1650(14)s
+0 576(LCM)m 573(\207le)s 881(,)s
+[ /Rect [988 576 1203 738] /Subtype /Link /Dest /LOUT15_4082_pre_font_9 /ANN pdfmark
+988(41)s 0 288(Length)m
+682(,)s
+[ /Rect [789 285 1017 450] /Subtype /Link /Dest /LOUT15_4082_pre_conc_7 /ANN pdfmark
+789(37)s 220 fnt2 4816 13246(@LEn)m 4(v)k
+240 fnt1 5594 13249(symbol)m 6301(,)s
+[ /Rect [6408 13249 6642 13411] /Subtype /Link /Dest /LOUT15_4082_det_lexi_14 /ANN pdfmark
+6408(14)s 4816 12961(Letter)m
+5445(character)s 6326(,)s
+[ /Rect [6433 12958 6657 13123] /Subtype /Link /Dest /LOUT15_4082_det_lexi_2 /ANN pdfmark
+6433(13)s 4816 12673(Lig)m 1(atures)k
+5715(,)s
+[ /Rect [5822 12670 6057 12835] /Subtype /Link /Dest /LOUT15_4082_pre_font_4 /ANN pdfmark
+5822(40)s 220 fnt2 4816 12382(lines)m 5319(@Break)s
+240 fnt1 6122 12385(,)m
+[ /Rect [6229 12385 6463 12547] /Subtype /Link /Dest /LOUT15_4082_pre_brea_7 /ANN pdfmark
+6229(42)s 220 fnt2 4816 12094(@LinkDest)m
+240 fnt1 5948 12097(symbol)m 6655(,)s
+[ /Rect [6762 12094 6986 12261] /Subtype /Link /Dest /LOUT15_4082_pre_link_2 /ANN pdfmark
+6762(63)s 220 fnt2
+4816 11806(@LinkSource)m 240 fnt1 6188 11809(symbol)m 6895(,)s
+[ /Rect [7002 11806 7226 11973] /Subtype /Link /Dest /LOUT15_4082_pre_link_1 /ANN pdfmark
+7002(63)s
+220 fnt2 4816 11518(@LInput)m 240 fnt1 5705 11521(symbol)m 6412(,)s
+
+[ /Rect [6519 11521 6753 11683] /Subtype /Link /Dest /LOUT15_4082_det_lexi_15 /ANN pdfmark
+6519(14)s 4816 11233(Literal)m 5506(w)s 2(ord)k 6001(,)s
+
+[ /Rect [6108 11233 6342 11395] /Subtype /Link /Dest /LOUT15_4082_det_lexi_19 /ANN pdfmark
+6108(14)s 220 fnt2 4816 10942(@LUse)m 240 fnt1 5603 10945(symbol)m
+6310(,)s
+[ /Rect [6417 10945 6651 11107] /Subtype /Link /Dest /LOUT15_4082_det_lexi_17 /ANN pdfmark
+6417(14)s 220 fnt2 4816 10654(@L)m 24(Vis)k
+240 fnt1 5494 10657(symbol)m 6201(,)s
+[ /Rect [6308 10657 6542 10819] /Subtype /Link /Dest /LOUT15_4082_det_lexi_16 /ANN pdfmark
+6308(14)s 220 fnt2
+4816 10078(m)m 240 fnt1 5045 10081(unit)m 5424(,)s
+[ /Rect [5531 10078 5759 10243] /Subtype /Link /Dest /LOUT15_4082_pre_conc_10 /ANN pdfmark
+5531(37)s
+4816 9793(Macro)m 5440(,)s
+[ /Rect [5547 9790 5773 9958] /Subtype /Link /Dest /LOUT15_4082_det_lexi_22 /ANN pdfmark
+5547(15)s 4816 9505(Mark)m 5395(alignment)s
+6358(,)s
+[ /Rect [6465 9505 6560 9667] /Subtype /Link /Dest /LOUT15_4082_pri_obje_3 /ANN pdfmark
+6465(1)s 5056 9217(in)m 5299(detail)s 5831(,)s
+
+[ /Rect [5938 9214 6165 9379] /Subtype /Link /Dest /LOUT15_4082_det_gall_5 /ANN pdfmark
+5938(28)s 4816 8929(Mark-to-mark)m 6230(g)s 1(ap)k 6628(mode)s
+7163(,)s
+[ /Rect [7270 8926 7498 9091] /Subtype /Link /Dest /LOUT15_4082_pre_conc_23 /ANN pdfmark
+7270(37)s 220 fnt2 4816 8638(@Meld)m 240 fnt1
+5562 8641(symbol)m 6269(,)s
+[ /Rect [6376 8638 6610 8806] /Subtype /Link /Dest /LOUT15_4082_pre_rump_3 /ANN pdfmark
+6376(54)s 220 fnt2 4816 8350(@Merge)m
+240 fnt1 5713 8353(symbol)m 6420(,)s
+[ /Rect [6527 8350 6751 8515] /Subtype /Link /Dest /LOUT15_4082_det_sort_3 /ANN pdfmark
+6527(33)s 220 fnt2
+4816 8062(@Moment)m 240 fnt1 5888 8065(symbol)m 6595(,)s
+[ /Rect [6702 8062 6930 8230] /Subtype /Link /Dest /LOUT15_4082_pre_mome_1 /ANN pdfmark
+6702(57)s
+220 fnt2 4816 7486(named)m 240 fnt1 5535 7489(parameter)m 6496(,)s
+
+[ /Rect [6603 7486 6829 7654] /Subtype /Link /Dest /LOUT15_4082_det_name_2 /ANN pdfmark
+6603(15)s 4816 7201(Nested)m 5538(de\207nitions)s 6546(,)s
+[ /Rect [6653 7200 6881 7363] /Subtype /Link /Dest /LOUT15_4082_det_visi_1 /ANN pdfmark
+6653(17)s
+220 fnt2 4816 6910(@Ne)m 6(xt)k 240 fnt1 5540 6913(symbol)m
+6247(,)s
+[ /Rect [6354 6910 6587 7078] /Subtype /Link /Dest /LOUT15_4082_pre_next_1 /ANN pdfmark
+6354(56)s 220 fnt2 4816 6622(noh)m 6(yphen)k
+5820(@Break)s 240 fnt1 6623 6625(,)m
+[ /Rect [6730 6622 6954 6787] /Subtype /Link /Dest /LOUT15_4082_pre_brea_12 /ANN pdfmark
+6730(43)s 220 fnt2
+4816 6334(@NotRe)m 6(v)k 5(ealed)k 240 fnt1 6343 6337(symbol)m
+7050(,)s
+[ /Rect [7157 6334 7392 6501] /Subtype /Link /Dest /LOUT15_4082_pre_notr_1 /ANN pdfmark
+7157(60)s 220 fnt2 4816 6046(@Null)m 240 fnt1
+5461 6049(symbol)m 6168(,)s
+[ /Rect [6275 6046 6502 6214] /Subtype /Link /Dest /LOUT15_4082_pre_null_1 /ANN pdfmark
+6275(58)s 4816 5761(Numbered)m 5884(list)s
+6182(,)s
+[ /Rect [6289 5758 6522 5925] /Subtype /Link /Dest /LOUT15_4082_exa_para_7 /ANN pdfmark
+6289(76)s 220 fnt2 4816 5470(@NumberOf)m 240 fnt1
+6108 5473(e)m 3(xample)k 6918(,)s
+[ /Rect [7025 5470 7249 5635] /Subtype /Link /Dest /LOUT15_4082_exa_chap_3 /ANN pdfmark
+7025(83)s 220 fnt2
+4816 4894(o)m 240 fnt1 4991 4897(g)m 1(ap)k 5389(mode)s
+5924(,)s
+[ /Rect [6031 4894 6259 5059] /Subtype /Link /Dest /LOUT15_4082_pre_conc_26 /ANN pdfmark
+6031(37)s 4816 4609(Object)m 5460(,)s
+[ /Rect [5567 4609 5662 4771] /Subtype /Link /Dest /LOUT15_4082_pri_obje_1 /ANN pdfmark
+5567(1)s
+220 fnt2 4816 4318(@OddP)m 8(ageList)k 240 fnt1 6355 4321(e)m 3(xample)k
+7165(,)s
+[ /Rect [7272 4318 7506 4483] /Subtype /Link /Dest /LOUT15_4082_exa_page_9 /ANN pdfmark
+7272(82)s 220 fnt2 4816 4030(@OneCol)m 240 fnt1
+5828 4033(symbol)m 6535(,)s
+[ /Rect [6642 4030 6869 4195] /Subtype /Link /Dest /LOUT15_4082_pre_oner_3 /ANN pdfmark
+6642(48)s 220 fnt2 4816 3742(@OneOf)m
+240 fnt1 5743 3745(symbol)m 6450(,)s
+[ /Rect [6557 3742 6783 3910] /Subtype /Link /Dest /LOUT15_4082_pre_oneo_1 /ANN pdfmark
+6557(55)s 220 fnt2
+4816 3454(@OneP)m 8(age)k 240 fnt1 6010 3457(e)m 3(xample)k
+6820(,)s
+[ /Rect [6927 3454 7142 3619] /Subtype /Link /Dest /LOUT15_4082_exa_page_7 /ANN pdfmark
+6927(81)s 220 fnt2 4816 3166(@OneRo)m 3(w)k
+240 fnt1 5947 3169(symbol)m 6654(,)s
+[ /Rect [6761 3168 6989 3331] /Subtype /Link /Dest /LOUT15_4082_pre_oner_1 /ANN pdfmark
+6761(47)s 220 fnt2
+4816 2878(@Open)m 240 fnt1 5622 2881(symbol)m 6329(,)s
+[ /Rect [6436 2878 6670 3045] /Subtype /Link /Dest /LOUT15_4082_pre_open_1 /ANN pdfmark
+6436(62)s
+4816 2593(Optimal)m 5654(g)s 1(alle)k 3(y)k 6288(breaking)s
+7125(,)s
+[ /Rect [7232 2590 7458 2758] /Subtype /Link /Dest /LOUT15_4082_det_opti_1 /ANN pdfmark
+7232(35)s 220 fnt2 4816 2302(@Optimiz)m 3(e)k
+240 fnt1 5953 2305(symbol)m 6660(,)s
+[ /Rect [6767 2302 6993 2470] /Subtype /Link /Dest /LOUT15_4082_det_opti_2 /ANN pdfmark
+6767(35)s 220 fnt2
+4816 2014(or)m 2(agged)k 5667(@Break)s 240 fnt1 6470 2017(,)m
+
+[ /Rect [6577 2017 6811 2179] /Subtype /Link /Dest /LOUT15_4082_pre_brea_6 /ANN pdfmark
+6577(42)s 220 fnt2 4816 1726(@OrElse)m 240 fnt1 5761 1729(e)m 3(xample)k
+6571(,)s
+[ /Rect [6678 1726 6911 1893] /Subtype /Link /Dest /LOUT15_4082_exa_chap_5 /ANN pdfmark
+6678(86)s 4816 1441(Other)m 5420(character)s 6301(,)s
+
+[ /Rect [6408 1438 6632 1603] /Subtype /Link /Dest /LOUT15_4082_det_lexi_3 /ANN pdfmark
+6408(13)s 220 fnt2 4816 1150(outdent)m 5604(@Break)s 240 fnt1
+6407 1153(,)m
+[ /Rect [6514 1153 6748 1315] /Subtype /Link /Dest /LOUT15_4082_pre_brea_2 /ANN pdfmark
+6514(42)s 220 fnt2 4816 862(@Outline)m 240 fnt1
+5785 865(symbol)m 6492(,)s
+[ /Rect [6599 862 6832 1029] /Subtype /Link /Dest /LOUT15_4082_pre_outl_1 /ANN pdfmark
+6599(46)s 220 fnt2 4816 574(o)m 3(v)k 5(er)k
+240 fnt1 5295 577(e)m 3(xample)k 6105(,)s
+[ /Rect [6212 574 6436 739] /Subtype /Link /Dest /LOUT15_4082_exa_equa_6 /ANN pdfmark
+6212(73)s
+4816 289(Ov)m 3(erstrik)k 2(e)k 5875(g)s 1(ap)k
+6273(mode)s 6808(,)s
+[ /Rect [6915 286 7143 451] /Subtype /Link /Dest /LOUT15_4082_pre_conc_25 /ANN pdfmark
+6915(37)s
grestore
gsave
1417 -15423 translate
@@ -17637,107 +19220,277 @@ gsave
gsave
0 LoutMargSet
grestore
-220 fnt2 0 13246(@P)m 26(Adjust)k 240 fnt1 1008 13249(symbol)m
-1715(,)s 1822(49)s 220 fnt2 0 12958(@P)m 8(age)k
-240 fnt1 779 12961(e)m 3(xample)k 1589(,)s 1696(80)s
-0 12673(P)m 3(age)k 518(layout)s 240 12385(principles)m 1233(of)s
-1451(,)s 1558(5)s 240 12097(in)m 483(practice)s 1241(,)s
-1348(78)s 220 fnt2 0 11806(@P)m 8(ageLabel)k 240 fnt1
-1309 11809(symbol)m 2016(,)s 2123(71)s 220 fnt2 0 11518(@P)m 8(ageOf)k
-240 fnt1 1016 11521(e)m 3(xample)k 1826(,)s 1933(78)s
-0 11233(P)m 3(aragraph)k 1023(breaking)s 1860(,)s 1967(3)s
-240 10945(in)m 483(detail)s 1015(,)s 1122(39)s 0 10657(P)m 3(arameter)k
-971(,)s 1078(4)s 220 fnt2 240 10366(body)m 240 fnt1
-774 10369(parameter)m 1735(,)s 1842(17)s 220 fnt2 240 10078(named)m
-240 fnt1 959 10081(parameter)m 1920(,)s 2027(15)s 220 fnt2
-0 9790(@PlainGr)m 2(aphic)k 240 fnt1 1530 9793(symbol)m 2237(,)s
-2344(67)s 0 9505(PostScript)m 989(,)s 1096(ii)s 240 9217(used)m
-737(by)s 220 fnt2 1031 9214(@Gr)m 2(aphic)k 240 fnt1
-2022 9217(,)m 2129(63)s 240 8929(used)m 737(by)s 220 fnt2
-1031 8926(@IncludeGr)m 2(aphic)k 240 fnt1 2729 8929(,)m 2836(67)s
-240 8641(used)m 737(by)s 220 fnt2 1031 8638(@PrependGr)m 2(aphic)k
-240 fnt1 2851 8641(,)m 2958(68)s 220 fnt2 0 8350(@PP)m
-240 fnt1 566 8353(e)m 3(xample)k 1376(,)s 1483(75)s
-0 8065(Precedence)m 1091(,)s 1198(22)s 220 fnt2 0 7774(preceding)m
-240 fnt1 958 7777(,)m 1065(8)s 220 fnt2 0 7486(@PrependGr)m 2(aphic)k
-240 fnt1 1873 7489(symbol)m 2580(,)s 2687(68)s 0 7201(Principal)m
-917(mark)s 1416(,)s 1523(37)s 240 6913(ef)m 6(fect)k
-836(on)s 220 fnt2 1133 6910(@OneCol)m 240 fnt1 2145 6913(and)m
-220 fnt2 2549 6910(@OneRo)m 3(w)k 240 fnt1 3627 6913(,)m
-3734(47)s 0 6625(Promotion)m 1067(of)s 1338(components)s 2493(,)s
-2600(29)s 0 6049(Quote)m 641(character)s 1522(,)s 1629(13)s
-0 5761(Quoted)m 763(w)s 2(ord)k 1258(,)s 1365(14)s
-220 fnt2 0 5182(r)m 240 fnt1 133 5185(unit)m 512(,)s
-619(37)s 220 fnt2 0 4894(r)m 2(agged)k 729(@Break)s
-240 fnt1 1532 4897(,)m 1639(42)s 220 fnt2 0 4606(@Ra)m 4(wV)k 17(erbatim)k
-240 fnt1 1563 4609(symbol)m 2270(,)s 2377(70)s 0 4321(Recepti)m 6(v)k 3(e)k
-1003(symbol)s 1710(,)s 1817(11)s 0 4033(Recursion)m 974(,)s
-1081(5)s 220 fnt2 0 3742(@Ref)m 240 fnt1 621 3745(e)m 3(xample)k
-1431(,)s 1538(91)s 220 fnt2 0 3454(@Ref)m 6(erence)k
-240 fnt1 1281 3457(e)m 3(xample)k 2091(,)s 2198(88)s
-220 fnt2 0 3166(@Ref)m 6(erenceSection)k 240 fnt1 2006 3169(e)m 3(xample)k
-2816(,)s 2923(90)s 0 2881(Reid,)m 559(Brian)s 1147(K.)s
-1371(,)s 1478(7)s 0 2593(Right)m 592(justi\207cation)s 1724(,)s
-1831(37)s 220 fnt2 0 2302(r)m -3(lines)k 579(@Break)s
-240 fnt1 1382 2305(,)m 1489(43)s 0 2017(Roman)m 749(numerals)s
-1623(,)s 1730(78)s 0 1729(Root)m 526(g)s 1(alle)k 3(y)k
-1107(,)s 1214(11)s 240 1441(in)m 483(detail)s 1015(,)s
-1122(28)s 240 1153(printing)m 1050(of)s 1268(,)s 1375(29)s
-240 865(size)m 667(of)s 938(components)s 2146(of)s 2364(,)s
-2471(25)s 220 fnt2 0 574(@Rotate)m 240 fnt1 921 577(symbol)m
-1628(,)s 1735(53)s 0 289(Rotation)m 881(of)s 1152(object)s
-1743(,)s 1850(53)s 4816 13249(Ro)m 6(w)k 5317(mark)s
-5816(,)s 5923(2)s 220 fnt2 4816 12958(rr)m 2(agged)k
-5618(@Break)s 240 fnt1 6421 12961(,)m 6528(42)s 220 fnt2
-4816 12670(@Rump)m 240 fnt1 5676 12673(symbol)m 6383(,)s 6490(54)s
-220 fnt2 4816 12382(@Runner)m 240 fnt1 5818 12385(e)m 3(xample)k
-6628(,)s 6735(81)s 220 fnt2 4816 11806(s)m 240 fnt1
-4979 11809(unit)m 5358(,)s 5465(37)s 5056 11521(and)m 220 fnt2
-5460 11518(@Space)m 240 fnt1 6357 11521(symbol)m 7064(,)s 7171(44)s
-220 fnt2 4816 11230(@Scale)m 240 fnt1 5639 11233(symbol)m 6346(,)s
-6453(52)s 4816 10945(Scaling)m 5586(of)s 5857(object)s 6448(,)s
-6555(50)s 4816 10657(Scribe)m 5429(,)s 5536(7)s 220 fnt2
-4816 10366(@Section)m 240 fnt1 5816 10369(e)m 3(xample)k 6626(,)s
-6733(86)s 220 fnt2 4816 10078(@SetHeaderComponent)m 240 fnt1 7277 10081(symbol)m
-7984(,)s 8091(60)s 220 fnt2 4816 9790(@SetColor)m 240 fnt1
-5951 9793(symbol)m 6658(,)s 6765(45)s 220 fnt2 4816 9502(@SetColour)m
-240 fnt1 6073 9505(symbol)m 6780(,)s 6887(45)s 4816 9217(Size)m
-5283(of)s 5554(an)s 5837(object)s 6428(,)s 6535(24)s
-4816 8929(small)m 5388(capitals)s 6115(,)s 6222(41)s 4816 8641(Sorted)m
-5498(g)s 1(alle)k 3(ys)k 6169(,)s 6276(32)s
-4816 8353(Space)m 5390(,)s 5497(13)s 5056 8065(when)m 5632(signi\207cant)s
-6635(,)s 6742(38)s 220 fnt2 4816 7774(@Space)m 240 fnt1
-5713 7777(symbol)m 6420(,)s 6527(44)s 220 fnt2 4816 7486(@Star)m -8(tHSpan)k
-240 fnt1 6226 7489(symbol)m 6933(,)s 7040(51)s 220 fnt2
-4816 7198(@Star)m -8(tHVSpan)k 240 fnt1 6372 7201(symbol)m 7079(,)s
-7186(51)s 220 fnt2 4816 6910(@Star)m -8(tVSpan)k 240 fnt1
-6214 6913(symbol)m 6921(,)s 7028(51)s 4816 6625(Style)m 5363(of)s
-5634(an)s 5917(object)s 6508(,)s 6615(23)s 220 fnt2
-4816 6334(sup)m 240 fnt1 5222 6337(e)m 3(xample)k 6032(,)s
-6139(73)s 4816 6049(Symbol)m 5563(,)s 5670(4)s 220 fnt2
-4816 5758(@SysDatabase)m 240 fnt1 6396 5761(symbol)m 7103(,)s 7210(63)s
-220 fnt2 4816 5470(@SysInclude)m 240 fnt1 6164 5473(symbol)m 6871(,)s
-6978(68)s 220 fnt2 4816 5182(@SysIncludeGr)m 2(aphic)k 240 fnt1
-6933 5185(symbol)m 7640(,)s 7747(67)s 220 fnt2 4816 4894(@SysPrependGr)m 2(aphic)k
-240 fnt1 7055 4897(symbol)m 7762(,)s 7869(68)s 220 fnt2
-4816 4318(t)m 240 fnt1 4933 4321(g)m 1(ap)k 5331(mode)s
-5866(,)s 5973(37)s 4816 4033(T)m 19(ables)k 5432(,)s
-5539(2)s 4816 3745(T)m 19(ab)k 4(ulation)k 5886(g)s 1(ap)k
-6284(mode)s 6819(,)s 6926(37)s 220 fnt2 4816 3454(@T)m 26(ag)k
-240 fnt1 5439 3457(parameter)m 9(,)k 6491(def)s 2(ault)k
-7212(v)s 6(alue)k 7780(of)s 7998(,)s 8105(16)s
-220 fnt2 4816 3166(@T)m 26(agged)k 240 fnt1 5805 3169(symbol)m
-6512(,)s 6619(62)s 4816 2881(T)m 19(ar)k 4(get)k
-5476(of)s 5747(cross)s 6289(reference)s 7179(,)s 7286(8)s
-4816 2593(T)m 19(ar)k 4(get)k 5476(of)s 5747(a)s
-5913(g)s 1(alle)k 3(y)k 6494(,)s 6601(11)s
-220 fnt2 4816 2302(@T)m 26(arget)k 240 fnt1 5703 2305(symbol)m
-6410(,)s 6517(30)s 5056 2017(in)m 5299(detail)s 5831(,)s
-5938(25)s 4816 1729(T)m 4912 1681(E)m 5020 1729(X)m 5056 1441(h)m 1(yphenation)k
-6243(,)s 6350(39)s 5056 1153(optimal)m 5841(paragraph)s 6854(breaking)s
-7691(,)s 7798(39)s 4816 865(T)m 16(e)k 3(xtual)k
-5582(unit)s 5961(,)s 6068(13)s 220 fnt2 4816 286(@Under)m -3(line)k
-240 fnt1 6031 289(symbol)m 6738(,)s 6845(70)s
+220 fnt2 0 13246(p)m 240 fnt1 174 13249(unit)m 553(,)s
+
+[ /Rect [660 13246 888 13411] /Subtype /Link /Dest /LOUT15_4082_pre_conc_9 /ANN pdfmark
+660(37)s 220 fnt2 0 12958(@P)m 26(Adjust)k 240 fnt1
+1008 12961(symbol)m 1715(,)s
+[ /Rect [1822 12956 2053 13123] /Subtype /Link /Dest /LOUT15_4082_pre_hadj_1 /ANN pdfmark
+1822(49)s 220 fnt2 0 12670(@P)m 8(age)k
+240 fnt1 779 12673(e)m 3(xample)k 1589(,)s
+[ /Rect [1696 12670 1931 12835] /Subtype /Link /Dest /LOUT15_4082_exa_page_6 /ANN pdfmark
+1696(80)s
+0 12385(P)m 3(age)k 518(layout)s 240 12097(principles)m 1233(of)s
+1451(,)s
+[ /Rect [1558 12094 1664 12262] /Subtype /Link /Dest /LOUT15_4082_pri_defi_7 /ANN pdfmark
+1558(5)s 240 11809(in)m 483(practice)s 1241(,)s
+
+[ /Rect [1348 11806 1575 11971] /Subtype /Link /Dest /LOUT15_4082_exa_page_1 /ANN pdfmark
+1348(78)s 220 fnt2 0 11518(@P)m 8(ageLabel)k 240 fnt1
+1309 11521(symbol)m 2016(,)s
+[ /Rect [2123 11520 2338 11683] /Subtype /Link /Dest /LOUT15_4082_pre_page_1 /ANN pdfmark
+2123(71)s 220 fnt2 0 11230(@P)m 8(ageOf)k
+240 fnt1 1016 11233(e)m 3(xample)k 1826(,)s
+[ /Rect [1933 11230 2160 11395] /Subtype /Link /Dest /LOUT15_4082_exa_page_3 /ANN pdfmark
+1933(78)s
+0 10945(P)m 3(aragraph)k 1023(breaking)s 1860(,)s
+[ /Rect [1967 10942 2071 11107] /Subtype /Link /Dest /LOUT15_4082_pri_obje_7 /ANN pdfmark
+1967(3)s
+240 10657(in)m 483(detail)s 1015(,)s
+[ /Rect [1122 10652 1353 10819] /Subtype /Link /Dest /LOUT15_4082_pre_conc_35 /ANN pdfmark
+1122(39)s 0 10369(P)m 3(arameter)k
+971(,)s
+[ /Rect [1078 10369 1192 10531] /Subtype /Link /Dest /LOUT15_4082_pri_defi_5 /ANN pdfmark
+1078(4)s 220 fnt2 240 10078(body)m 240 fnt1
+774 10081(parameter)m 1735(,)s
+[ /Rect [1842 10080 2070 10243] /Subtype /Link /Dest /LOUT15_4082_det_visi_2 /ANN pdfmark
+1842(17)s 220 fnt2 240 9790(named)m
+240 fnt1 959 9793(parameter)m 1920(,)s
+[ /Rect [2027 9790 2253 9958] /Subtype /Link /Dest /LOUT15_4082_det_name_1 /ANN pdfmark
+2027(15)s 220 fnt2
+0 9502(@PlainGr)m 2(aphic)k 240 fnt1 1530 9505(symbol)m 2237(,)s
+
+[ /Rect [2344 9502 2571 9669] /Subtype /Link /Dest /LOUT15_4082_pre_plai_1 /ANN pdfmark
+2344(68)s 0 9217(PostScript)m 989(,)s
+[ /Rect [1096 9217 1222 9380] /Subtype /Link /Dest /LOUT15_4082_preface_1 /ANN pdfmark
+1096(ii)s 240 8929(used)m
+737(by)s 220 fnt2 1031 8926(@Gr)m 2(aphic)k 240 fnt1
+2022 8929(,)m
+[ /Rect [2129 8926 2363 9093] /Subtype /Link /Dest /LOUT15_4082_pre_grap_3 /ANN pdfmark
+2129(64)s 240 8641(used)m 737(by)s 220 fnt2
+1031 8638(@IncludeGr)m 2(aphic)k 240 fnt1 2729 8641(,)m
+[ /Rect [2836 8638 3063 8805] /Subtype /Link /Dest /LOUT15_4082_pre_incg_3 /ANN pdfmark
+2836(68)s
+240 8353(used)m 737(by)s 220 fnt2 1031 8350(@PrependGr)m 2(aphic)k
+240 fnt1 2851 8353(,)m
+[ /Rect [2958 8348 3189 8517] /Subtype /Link /Dest /LOUT15_4082_pre_prep_3 /ANN pdfmark
+2958(69)s 220 fnt2 0 8062(@PP)m
+240 fnt1 566 8065(e)m 3(xample)k 1376(,)s
+[ /Rect [1483 8062 1709 8230] /Subtype /Link /Dest /LOUT15_4082_exa_para_3 /ANN pdfmark
+1483(75)s
+0 7777(Precedence)m 1091(,)s
+[ /Rect [1198 7777 1432 7939] /Subtype /Link /Dest /LOUT15_4082_det_prec_1 /ANN pdfmark
+1198(22)s 220 fnt2 0 7486(preceding)m
+240 fnt1 958 7489(,)m
+[ /Rect [1065 7486 1172 7651] /Subtype /Link /Dest /LOUT15_4082_pri_cros_5 /ANN pdfmark
+1065(8)s 220 fnt2 0 7198(@PrependGr)m 2(aphic)k
+240 fnt1 1873 7201(symbol)m 2580(,)s
+[ /Rect [2687 7196 2918 7365] /Subtype /Link /Dest /LOUT15_4082_pre_prep_1 /ANN pdfmark
+2687(69)s 0 6913(Principal)m
+917(mark)s 1416(,)s
+[ /Rect [1523 6910 1751 7075] /Subtype /Link /Dest /LOUT15_4082_pre_conc_5 /ANN pdfmark
+1523(37)s 240 6625(ef)m 6(fect)k
+836(on)s 220 fnt2 1133 6622(@OneCol)m 240 fnt1 2145 6625(and)m
+220 fnt2 2549 6622(@OneRo)m 3(w)k 240 fnt1 3627 6625(,)m
+
+[ /Rect [3734 6624 3962 6787] /Subtype /Link /Dest /LOUT15_4082_pre_oner_2 /ANN pdfmark
+3734(47)s 0 6337(Promotion)m 1067(of)s 1338(components)s 2493(,)s
+
+[ /Rect [2600 6332 2831 6499] /Subtype /Link /Dest /LOUT15_4082_det_gall_9 /ANN pdfmark
+2600(29)s 0 5761(Quote)m 641(character)s 1522(,)s
+[ /Rect [1629 5758 1853 5923] /Subtype /Link /Dest /LOUT15_4082_det_lexi_4 /ANN pdfmark
+1629(13)s
+0 5473(Quoted)m 763(w)s 2(ord)k 1258(,)s
+[ /Rect [1365 5473 1599 5635] /Subtype /Link /Dest /LOUT15_4082_det_lexi_20 /ANN pdfmark
+1365(14)s
+220 fnt2 0 4894(r)m 240 fnt1 133 4897(unit)m 512(,)s
+
+[ /Rect [619 4894 847 5059] /Subtype /Link /Dest /LOUT15_4082_pre_conc_16 /ANN pdfmark
+619(37)s 220 fnt2 0 4606(r)m 2(agged)k 729(@Break)s
+240 fnt1 1532 4609(,)m
+[ /Rect [1639 4609 1873 4771] /Subtype /Link /Dest /LOUT15_4082_pre_brea_3 /ANN pdfmark
+1639(42)s 220 fnt2 0 4318(@Ra)m 4(wV)k 17(erbatim)k
+240 fnt1 1563 4321(symbol)m 2270(,)s
+[ /Rect [2377 4318 2612 4483] /Subtype /Link /Dest /LOUT15_4082_pre_verb_2 /ANN pdfmark
+2377(70)s 0 4033(Recepti)m 6(v)k 3(e)k
+1003(symbol)s 1710(,)s
+[ /Rect [1817 4033 2032 4195] /Subtype /Link /Dest /LOUT15_4082_pri_gall_4 /ANN pdfmark
+1817(11)s 0 3745(Recursion)m 974(,)s
+
+[ /Rect [1081 3742 1187 3910] /Subtype /Link /Dest /LOUT15_4082_pri_defi_6 /ANN pdfmark
+1081(5)s 220 fnt2 0 3454(@Ref)m 240 fnt1 621 3457(e)m 3(xample)k
+1431(,)s
+[ /Rect [1538 3452 1753 3619] /Subtype /Link /Dest /LOUT15_4082_exa_bibl_4 /ANN pdfmark
+1538(91)s 220 fnt2 0 3166(@Ref)m 6(erence)k
+240 fnt1 1281 3169(e)m 3(xample)k 2091(,)s
+[ /Rect [2198 3166 2425 3331] /Subtype /Link /Dest /LOUT15_4082_exa_bibl_2 /ANN pdfmark
+2198(88)s
+220 fnt2 0 2878(@Ref)m 6(erenceSection)k 240 fnt1 2006 2881(e)m 3(xample)k
+2816(,)s
+[ /Rect [2923 2876 3158 3043] /Subtype /Link /Dest /LOUT15_4082_exa_bibl_3 /ANN pdfmark
+2923(90)s 0 2593(Reid,)m 559(Brian)s 1147(K.)s
+1371(,)s
+[ /Rect [1478 2592 1586 2751] /Subtype /Link /Dest /LOUT15_4082_pri_cros_3 /ANN pdfmark
+1478(7)s 0 2305(Right)m 592(justi\207cation)s 1724(,)s
+
+[ /Rect [1831 2302 2059 2467] /Subtype /Link /Dest /LOUT15_4082_pre_conc_32 /ANN pdfmark
+1831(37)s 220 fnt2 0 2014(r)m -3(lines)k 579(@Break)s
+240 fnt1 1382 2017(,)m
+[ /Rect [1489 2014 1713 2179] /Subtype /Link /Dest /LOUT15_4082_pre_brea_9 /ANN pdfmark
+1489(43)s 0 1729(Roman)m 749(numerals)s
+1623(,)s
+[ /Rect [1730 1726 1957 1891] /Subtype /Link /Dest /LOUT15_4082_exa_para_9 /ANN pdfmark
+1730(78)s 0 1441(Root)m 526(g)s 1(alle)k 3(y)k
+1107(,)s
+[ /Rect [1214 1441 1429 1603] /Subtype /Link /Dest /LOUT15_4082_pri_gall_5 /ANN pdfmark
+1214(11)s 240 1153(in)m 483(detail)s 1015(,)s
+
+[ /Rect [1122 1150 1349 1315] /Subtype /Link /Dest /LOUT15_4082_det_gall_6 /ANN pdfmark
+1122(28)s 240 865(printing)m 1050(of)s 1268(,)s
+[ /Rect [1375 860 1606 1027] /Subtype /Link /Dest /LOUT15_4082_det_gall_7 /ANN pdfmark
+1375(29)s
+240 577(size)m 667(of)s 938(components)s 2146(of)s 2364(,)s
+
+[ /Rect [2471 574 2697 742] /Subtype /Link /Dest /LOUT15_4082_det_size_5 /ANN pdfmark
+2471(25)s 220 fnt2 0 286(@Rotate)m 240 fnt1 921 289(symbol)m
+1628(,)s
+[ /Rect [1735 286 1959 454] /Subtype /Link /Dest /LOUT15_4082_pre_rota_1 /ANN pdfmark
+1735(53)s 4816 13247(Rotation)m 5697(of)s 5968(object)s
+6559(,)s
+[ /Rect [6666 13244 6890 13412] /Subtype /Link /Dest /LOUT15_4082_pre_rota_2 /ANN pdfmark
+6666(53)s 4816 12959(Ro)m 6(w)k 5317(mark)s
+5816(,)s
+[ /Rect [5923 12959 6037 13121] /Subtype /Link /Dest /LOUT15_4082_pri_obje_4 /ANN pdfmark
+5923(2)s 220 fnt2 4816 12668(rr)m 2(agged)k
+5618(@Break)s 240 fnt1 6421 12671(,)m
+[ /Rect [6528 12671 6762 12833] /Subtype /Link /Dest /LOUT15_4082_pre_brea_5 /ANN pdfmark
+6528(42)s 220 fnt2
+4816 12380(@Rump)m 240 fnt1 5676 12383(symbol)m 6383(,)s
+[ /Rect [6490 12380 6724 12548] /Subtype /Link /Dest /LOUT15_4082_pre_rump_2 /ANN pdfmark
+6490(54)s
+220 fnt2 4816 12092(@Runner)m 240 fnt1 5818 12095(e)m 3(xample)k
+6628(,)s
+[ /Rect [6735 12092 6950 12257] /Subtype /Link /Dest /LOUT15_4082_exa_page_8 /ANN pdfmark
+6735(81)s 220 fnt2 4816 11516(s)m 240 fnt1
+4979 11519(unit)m 5358(,)s
+[ /Rect [5465 11516 5693 11681] /Subtype /Link /Dest /LOUT15_4082_pre_conc_12 /ANN pdfmark
+5465(37)s 5056 11231(and)m 220 fnt2
+5460 11228(@Space)m 240 fnt1 6357 11231(symbol)m 7064(,)s
+[ /Rect [7171 11231 7405 11393] /Subtype /Link /Dest /LOUT15_4082_pre_spac_2 /ANN pdfmark
+7171(44)s
+220 fnt2 4816 10940(@Scale)m 240 fnt1 5639 10943(symbol)m 6346(,)s
+
+[ /Rect [6453 10940 6687 11108] /Subtype /Link /Dest /LOUT15_4082_pre_scal_1 /ANN pdfmark
+6453(52)s 4816 10655(Scaling)m 5586(of)s 5857(object)s 6448(,)s
+
+[ /Rect [6555 10652 6790 10820] /Subtype /Link /Dest /LOUT15_4082_pre_hsca_3 /ANN pdfmark
+6555(50)s 4816 10367(Scribe)m 5429(,)s
+[ /Rect [5536 10366 5644 10525] /Subtype /Link /Dest /LOUT15_4082_pri_cros_2 /ANN pdfmark
+5536(7)s 220 fnt2
+4816 10076(@Section)m 240 fnt1 5816 10079(e)m 3(xample)k 6626(,)s
+
+[ /Rect [6733 10076 6966 10243] /Subtype /Link /Dest /LOUT15_4082_exa_chap_6 /ANN pdfmark
+6733(86)s 220 fnt2 4816 9788(@SetHeaderComponent)m 240 fnt1 7277 9791(symbol)m
+7984(,)s
+[ /Rect [8091 9788 8326 9955] /Subtype /Link /Dest /LOUT15_4082_pre_head_4 /ANN pdfmark
+8091(60)s 220 fnt2 4816 9500(@SetColor)m 240 fnt1
+5951 9503(symbol)m 6658(,)s
+[ /Rect [6765 9500 6991 9668] /Subtype /Link /Dest /LOUT15_4082_pre_colo_2 /ANN pdfmark
+6765(45)s 220 fnt2 4816 9212(@SetColour)m
+240 fnt1 6073 9215(symbol)m 6780(,)s
+[ /Rect [6887 9212 7113 9380] /Subtype /Link /Dest /LOUT15_4082_pre_colo_1 /ANN pdfmark
+6887(45)s 4816 8927(Size)m
+5283(of)s 5554(an)s 5837(object)s 6428(,)s
+[ /Rect [6535 8927 6769 9089] /Subtype /Link /Dest /LOUT15_4082_det_size_4 /ANN pdfmark
+6535(24)s
+4816 8639(small)m 5388(capitals)s 6115(,)s
+[ /Rect [6222 8639 6437 8801] /Subtype /Link /Dest /LOUT15_4082_pre_font_7 /ANN pdfmark
+6222(41)s 4816 8351(Sorted)m
+5498(g)s 1(alle)k 3(ys)k 6169(,)s
+[ /Rect [6276 8348 6510 8513] /Subtype /Link /Dest /LOUT15_4082_det_sort_1 /ANN pdfmark
+6276(32)s
+4816 8063(Space)m 5390(,)s
+[ /Rect [5497 8060 5721 8225] /Subtype /Link /Dest /LOUT15_4082_det_lexi_10 /ANN pdfmark
+5497(13)s 5056 7775(when)m 5632(signi\207cant)s
+6635(,)s
+[ /Rect [6742 7772 6969 7937] /Subtype /Link /Dest /LOUT15_4082_pre_conc_34 /ANN pdfmark
+6742(38)s 220 fnt2 4816 7484(@Space)m 240 fnt1
+5713 7487(symbol)m 6420(,)s
+[ /Rect [6527 7487 6761 7649] /Subtype /Link /Dest /LOUT15_4082_pre_spac_1 /ANN pdfmark
+6527(44)s 220 fnt2 4816 7196(@Star)m -8(tHSpan)k
+240 fnt1 6226 7199(symbol)m 6933(,)s
+[ /Rect [7040 7196 7255 7364] /Subtype /Link /Dest /LOUT15_4082_pre_span_1 /ANN pdfmark
+7040(51)s 220 fnt2
+4816 6908(@Star)m -8(tHVSpan)k 240 fnt1 6372 6911(symbol)m 7079(,)s
+
+[ /Rect [7186 6908 7401 7076] /Subtype /Link /Dest /LOUT15_4082_pre_span_3 /ANN pdfmark
+7186(51)s 220 fnt2 4816 6620(@Star)m -8(tVSpan)k 240 fnt1
+6214 6623(symbol)m 6921(,)s
+[ /Rect [7028 6620 7243 6788] /Subtype /Link /Dest /LOUT15_4082_pre_span_2 /ANN pdfmark
+7028(51)s 4816 6335(Style)m 5363(of)s
+5634(an)s 5917(object)s 6508(,)s
+[ /Rect [6615 6332 6839 6497] /Subtype /Link /Dest /LOUT15_4082_det_size_1 /ANN pdfmark
+6615(23)s 220 fnt2
+4816 6044(sup)m 240 fnt1 5222 6047(e)m 3(xample)k 6032(,)s
+
+[ /Rect [6139 6044 6363 6209] /Subtype /Link /Dest /LOUT15_4082_exa_equa_5 /ANN pdfmark
+6139(73)s 4816 5759(Symbol)m 5563(,)s
+[ /Rect [5670 5759 5784 5921] /Subtype /Link /Dest /LOUT15_4082_pri_defi_2 /ANN pdfmark
+5670(4)s 220 fnt2
+4816 5468(@SysDatabase)m 240 fnt1 6396 5471(symbol)m 7103(,)s
+[ /Rect [7210 5468 7444 5635] /Subtype /Link /Dest /LOUT15_4082_pre_data_3 /ANN pdfmark
+7210(64)s
+220 fnt2 4816 5180(@SysInclude)m 240 fnt1 6164 5183(symbol)m 6871(,)s
+
+[ /Rect [6978 5178 7209 5347] /Subtype /Link /Dest /LOUT15_4082_pre_incl_2 /ANN pdfmark
+6978(69)s 220 fnt2 4816 4892(@SysIncludeGr)m 2(aphic)k 240 fnt1
+6933 4895(symbol)m 7640(,)s
+[ /Rect [7747 4892 7974 5059] /Subtype /Link /Dest /LOUT15_4082_pre_incg_2 /ANN pdfmark
+7747(68)s 220 fnt2 4816 4604(@SysPrependGr)m 2(aphic)k
+240 fnt1 7055 4607(symbol)m 7762(,)s
+[ /Rect [7869 4602 8100 4771] /Subtype /Link /Dest /LOUT15_4082_pre_prep_2 /ANN pdfmark
+7869(69)s 220 fnt2
+4816 4028(t)m 240 fnt1 4933 4031(g)m 1(ap)k 5331(mode)s
+5866(,)s
+[ /Rect [5973 4028 6201 4193] /Subtype /Link /Dest /LOUT15_4082_pre_conc_30 /ANN pdfmark
+5973(37)s 4816 3743(T)m 19(ables)k 5432(,)s
+
+[ /Rect [5539 3743 5653 3905] /Subtype /Link /Dest /LOUT15_4082_pri_obje_5 /ANN pdfmark
+5539(2)s 4816 3455(T)m 19(ab)k 4(ulation)k 5886(g)s 1(ap)k
+6284(mode)s 6819(,)s
+[ /Rect [6926 3452 7154 3617] /Subtype /Link /Dest /LOUT15_4082_pre_conc_29 /ANN pdfmark
+6926(37)s 220 fnt2 4816 3164(@T)m 26(ag)k
+240 fnt1 5439 3167(parameter)m 9(,)k 6491(def)s 2(ault)k
+7212(v)s 6(alue)k 7780(of)s 7998(,)s
+[ /Rect [8105 3164 8338 3331] /Subtype /Link /Dest /LOUT15_4082_det_name_4 /ANN pdfmark
+8105(16)s
+220 fnt2 4816 2876(@T)m 26(agged)k 240 fnt1 5805 2879(symbol)m
+6512(,)s
+[ /Rect [6619 2876 6853 3043] /Subtype /Link /Dest /LOUT15_4082_pre_tagg_1 /ANN pdfmark
+6619(62)s 4816 2591(T)m 19(ar)k 4(get)k
+5476(of)s 5747(cross)s 6289(reference)s 7179(,)s
+[ /Rect [7286 2588 7393 2753] /Subtype /Link /Dest /LOUT15_4082_pri_cros_4 /ANN pdfmark
+7286(8)s
+4816 2303(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 2303 6816 2465] /Subtype /Link /Dest /LOUT15_4082_pri_gall_3 /ANN pdfmark
+6601(11)s
+220 fnt2 4816 2012(@T)m 26(arget)k 240 fnt1 5703 2015(symbol)m
+6410(,)s
+[ /Rect [6517 2012 6752 2177] /Subtype /Link /Dest /LOUT15_4082_det_gall_11 /ANN pdfmark
+6517(30)s 5056 1727(in)m 5299(detail)s 5831(,)s
+
+[ /Rect [5938 1724 6164 1892] /Subtype /Link /Dest /LOUT15_4082_det_gall_2 /ANN pdfmark
+5938(25)s 4816 1439(T)m 4912 1391(E)m 5020 1439(X)m 5056 1151(h)m 1(yphenation)k
+6243(,)s
+[ /Rect [6350 1146 6581 1313] /Subtype /Link /Dest /LOUT15_4082_pre_conc_38 /ANN pdfmark
+6350(39)s 5056 863(optimal)m 5841(paragraph)s 6854(breaking)s
+7691(,)s
+[ /Rect [7798 858 8029 1025] /Subtype /Link /Dest /LOUT15_4082_pre_conc_36 /ANN pdfmark
+7798(39)s 4816 575(T)m 16(e)k 3(xtual)k
+5582(unit)s 5961(,)s
+[ /Rect [6068 572 6292 737] /Subtype /Link /Dest /LOUT15_4082_det_lexi_1 /ANN pdfmark
+6068(13)s
grestore
gsave
1417 -15423 translate
@@ -17792,35 +19545,87 @@ gsave
gsave
1 LoutMargSet
grestore
-0 13249(Underscore)m 1158(character)s 2039(,)s 2146(13)s 220 fnt2
-0 12958(@Use)m 240 fnt1 665 12961(symbol)m 1372(,)s 1479(62)s
-220 fnt2 0 12382(v)m 240 fnt1 169 12385(unit)m 548(,)s
-655(37)s 240 12097(ef)m 6(fect)k 836(on)s 1133(paragraph)s
-2146(breaking)s 2983(,)s 3090(43)s 220 fnt2 0 11806(@V)m 17(Adjust)k
-240 fnt1 1017 11809(symbol)m 1724(,)s 1831(49)s 220 fnt2
-0 11518(@VContr)m 2(act)k 240 fnt1 1252 11521(symbol)m 1959(,)s
-2066(49)s 220 fnt2 0 11230(@VCo)m 3(v)k 5(er)k
-240 fnt1 1006 11233(symbol)m 1713(,)s 1820(50)s 220 fnt2
-0 10942(@V)m 17(erbatim)k 240 fnt1 1129 10945(symbol)m 1836(,)s
-1943(70)s 0 10657(V)m 26(ertical)k 797(concatenation)s 2129(,)s
-2236(36)s 220 fnt2 0 10366(@VExpand)m 240 fnt1 1161 10369(symbol)m
-1868(,)s 1975(48)s 220 fnt2 0 10078(@VLimited)m 240 fnt1
-1123 10081(symbol)m 1830(,)s 1937(49)s 220 fnt2 0 9790(@VScale)m
-240 fnt1 969 9793(symbol)m 1676(,)s 1783(50)s 220 fnt2
-0 9502(@VShift)m 240 fnt1 863 9505(symbol)m 1570(,)s 1677(48)s
-220 fnt2 0 9214(@VSpan)m 240 fnt1 927 9217(symbol)m 1634(,)s
-1741(51)s 220 fnt2 0 8638(w)m 240 fnt1 216 8641(unit)m
-595(,)s 702(37)s 0 8353(White)m 640(space)s 1174(,)s
-1281(13)s 240 8065(when)m 816(signi\207cant)s 1819(,)s 1926(38)s
-220 fnt2 0 7774(@Wide)m 240 fnt1 774 7777(symbol)m 1481(,)s
-1588(48)s 0 7489(W)m 9(idth)k 646(of)s 917(an)s
-1200(object)s 1791(,)s 1898(24)s 0 7201(W)m 19(ord)k
-531(,)s 638(14)s 220 fnt2 0 6622(x)m 240 fnt1
-168 6625(g)m 1(ap)k 566(mode)s 1101(,)s 1208(37)s
-220 fnt2 0 6046(@Y)m 4(ield)k 240 fnt1 753 6049(symbol)m
-1460(,)s 1567(56)s 220 fnt2 0 5758(@YUnit)m 240 fnt1
-814 5761(symbol)m 1521(,)s 1628(44)s 220 fnt2 0 5182(@ZUnit)m
-240 fnt1 802 5185(symbol)m 1509(,)s 1616(44)s
+220 fnt2 0 13246(@Under)m -3(line)k 240 fnt1 1215 13249(symbol)m
+1922(,)s
+[ /Rect [2029 13248 2244 13411] /Subtype /Link /Dest /LOUT15_4082_pre_unde_1 /ANN pdfmark
+2029(71)s 0 12961(Underscore)m 1158(character)s 2039(,)s
+
+[ /Rect [2146 12958 2370 13123] /Subtype /Link /Dest /LOUT15_4082_det_lexi_7 /ANN pdfmark
+2146(13)s 220 fnt2 0 12670(@Use)m 240 fnt1 665 12673(symbol)m
+1372(,)s
+[ /Rect [1479 12670 1713 12837] /Subtype /Link /Dest /LOUT15_4082_pre_open_2 /ANN pdfmark
+1479(62)s 220 fnt2 0 12094(v)m 240 fnt1
+169 12097(unit)m 548(,)s
+[ /Rect [655 12094 883 12259] /Subtype /Link /Dest /LOUT15_4082_pre_conc_13 /ANN pdfmark
+655(37)s 240 11809(ef)m 6(fect)k
+836(on)s 1133(paragraph)s 2146(breaking)s 2983(,)s
+[ /Rect [3090 11806 3314 11971] /Subtype /Link /Dest /LOUT15_4082_pre_brea_10 /ANN pdfmark
+3090(43)s
+220 fnt2 0 11518(@V)m 17(Adjust)k 240 fnt1 1017 11521(symbol)m
+1724(,)s
+[ /Rect [1831 11516 2062 11683] /Subtype /Link /Dest /LOUT15_4082_pre_hadj_3 /ANN pdfmark
+1831(49)s 220 fnt2 0 11230(@VContr)m 2(act)k
+240 fnt1 1252 11233(symbol)m 1959(,)s
+[ /Rect [2066 11228 2297 11395] /Subtype /Link /Dest /LOUT15_4082_pre_hcon_2 /ANN pdfmark
+2066(49)s 220 fnt2
+0 10942(@VCo)m 3(v)k 5(er)k 240 fnt1 1006 10945(symbol)m
+1713(,)s
+[ /Rect [1820 10942 2055 11110] /Subtype /Link /Dest /LOUT15_4082_pre_cove_2 /ANN pdfmark
+1820(50)s 220 fnt2 0 10654(@V)m 17(erbatim)k
+240 fnt1 1129 10657(symbol)m 1836(,)s
+[ /Rect [1943 10654 2178 10819] /Subtype /Link /Dest /LOUT15_4082_pre_verb_1 /ANN pdfmark
+1943(70)s 0 10369(V)m 26(ertical)k
+797(concatenation)s 2129(,)s
+[ /Rect [2236 10366 2469 10533] /Subtype /Link /Dest /LOUT15_4082_pre_conc_2 /ANN pdfmark
+2236(36)s 220 fnt2 0 10078(@VExpand)m
+240 fnt1 1161 10081(symbol)m 1868(,)s
+[ /Rect [1975 10076 2206 10243] /Subtype /Link /Dest /LOUT15_4082_pre_hexp_2 /ANN pdfmark
+1975(49)s 220 fnt2
+0 9790(@VLimited)m 240 fnt1 1123 9793(symbol)m 1830(,)s
+[ /Rect [1937 9788 2168 9955] /Subtype /Link /Dest /LOUT15_4082_pre_hlim_2 /ANN pdfmark
+1937(49)s
+220 fnt2 0 9502(@VScale)m 240 fnt1 969 9505(symbol)m 1676(,)s
+
+[ /Rect [1783 9502 2018 9670] /Subtype /Link /Dest /LOUT15_4082_pre_hsca_2 /ANN pdfmark
+1783(50)s 220 fnt2 0 9214(@VShift)m 240 fnt1 863 9217(symbol)m
+1570(,)s
+[ /Rect [1677 9214 1904 9379] /Subtype /Link /Dest /LOUT15_4082_pre_hshi_2 /ANN pdfmark
+1677(48)s 220 fnt2 0 8926(@VSpan)m 240 fnt1
+927 8929(symbol)m 1634(,)s
+[ /Rect [1741 8926 1956 9094] /Subtype /Link /Dest /LOUT15_4082_pre_span_5 /ANN pdfmark
+1741(51)s 220 fnt2 0 8350(w)m
+240 fnt1 216 8353(unit)m 595(,)s
+[ /Rect [702 8350 930 8515] /Subtype /Link /Dest /LOUT15_4082_pre_conc_14 /ANN pdfmark
+702(37)s 0 8065(White)m
+640(space)s 1174(,)s
+[ /Rect [1281 8062 1505 8227] /Subtype /Link /Dest /LOUT15_4082_det_lexi_8 /ANN pdfmark
+1281(13)s 240 7777(when)m 816(signi\207cant)s
+1819(,)s
+[ /Rect [1926 7774 2153 7939] /Subtype /Link /Dest /LOUT15_4082_pre_conc_33 /ANN pdfmark
+1926(38)s 220 fnt2 0 7486(@Wide)m 240 fnt1
+774 7489(symbol)m 1481(,)s
+[ /Rect [1588 7486 1815 7651] /Subtype /Link /Dest /LOUT15_4082_pre_wide_1 /ANN pdfmark
+1588(48)s 0 7201(W)m 9(idth)k
+646(of)s 917(an)s 1200(object)s 1791(,)s
+[ /Rect [1898 7201 2132 7363] /Subtype /Link /Dest /LOUT15_4082_det_size_2 /ANN pdfmark
+1898(24)s
+0 6913(W)m 19(ord)k 531(,)s
+[ /Rect [638 6913 872 7075] /Subtype /Link /Dest /LOUT15_4082_det_lexi_18 /ANN pdfmark
+638(14)s 220 fnt2
+0 6334(x)m 240 fnt1 168 6337(g)m 1(ap)k 566(mode)s
+1101(,)s
+[ /Rect [1208 6334 1436 6499] /Subtype /Link /Dest /LOUT15_4082_pre_conc_24 /ANN pdfmark
+1208(37)s 220 fnt2 0 5758(@Y)m 4(ield)k
+240 fnt1 753 5761(symbol)m 1460(,)s
+[ /Rect [1567 5758 1800 5926] /Subtype /Link /Dest /LOUT15_4082_pre_case_2 /ANN pdfmark
+1567(56)s 220 fnt2
+0 5470(@YUnit)m 240 fnt1 814 5473(symbol)m 1521(,)s
+[ /Rect [1628 5473 1862 5635] /Subtype /Link /Dest /LOUT15_4082_pre_yuni_1 /ANN pdfmark
+1628(44)s
+220 fnt2 0 4894(@ZUnit)m 240 fnt1 802 4897(symbol)m 1509(,)s
+
+[ /Rect [1616 4897 1850 5059] /Subtype /Link /Dest /LOUT15_4082_pre_yuni_2 /ANN pdfmark
+1616(44)s
grestore
gsave
1417 -15423 translate
diff --git a/doc/expert/pre b/doc/expert/pre
index c21b866..f0714cb 100644
--- a/doc/expert/pre
+++ b/doc/expert/pre
@@ -39,6 +39,7 @@
@Include { pre_cros }
@Include { pre_tagg }
@Include { pre_open }
+@Include { pre_link }
@Include { pre_data }
@Include { pre_grap }
@Include { pre_plai }
diff --git a/doc/expert/pre_link b/doc/expert/pre_link
new file mode 100644
index 0000000..add628f
--- /dev/null
+++ b/doc/expert/pre_link
@@ -0,0 +1,43 @@
+@Section
+ @Title { "@LinkSource and @LinkDest" }
+ @Tag { link_source }
+@Begin
+@PP
+These two symbols
+link.source.sym @Index { @@LinkSource symbol }
+link.dest.sym @Index { @@LinkDest symbol }
+work together to create @I links in a document, that is, points where
+a user viewing the document on screen can click and be transported to
+another point in the document. We call the point where the user
+clicks the @I source of the link, and the point where the user
+arrives the @I destination of the link.
+@PP
+To create a source point, place
+@ID { @I tag @Code "@LinkSource" @I object }
+at some point in the document, where the value of @I tag is a legal
+cross reference tag, and @I object is an arbitrary Lout object. The
+result of this is just {@I object}, but if the user of a screen
+viewer clicks on any point within the rectangular bounding box
+of that object, a link will be entered.
+@PP
+To create a destination point, place
+@ID { @I tag @Code "@LinkDest" @I object }
+at some point in the document. Again, @I tag must evaluate to a
+legal cross reference tag, and @I object may be any Lout
+object. All @Code "@LinkSource" symbols whose
+tag is equal to this one are linked to this destination point.
+@PP
+For every source point there must be exactly one destination point with
+the same tag, otherwise it will not be clear where the link is
+supposed to take the user. Lout will print a warning if this
+condition is violated anywhere; it will refuse to insert a
+destination point with the same name as a previous one, but it is not
+able to refrain from inserting a source point with no corresponding
+destination point, and such points must cause errors of some kind when
+viewed (exactly what error will depend on the viewer).
+@PP
+At present, @I object above is treated as though it were enclosed
+in @@OneCol, which means that a long link source or destination point
+will not break over two lines as part of an enclosing paragraph. This
+deficiency might be corrected in the future.
+@End @Section
diff --git a/doc/expert/preface b/doc/expert/preface
index 92af538..652396f 100644
--- a/doc/expert/preface
+++ b/doc/expert/preface
@@ -21,7 +21,7 @@ This manual presents Version 3 of Basser Lout, publicly released in
September 1994 @Cite { $kingston1995lout.program } and developed
continuously since then. This manual was rendered into PostScript
postscript @Index { PostScript }
-by Version 3.22 of the Basser Lout interpreter, using the symbols
+by Version 3.23 of the Basser Lout interpreter, using the symbols
described in the User's Guide @Cite { $kingston1995lout.user }.
@DP
@Heading { Acknowledgment. } Version 3 has benefited from hundreds of
diff --git a/doc/slides/README b/doc/slides/README
index 96dcce8..3035e96 100644
--- a/doc/slides/README
+++ b/doc/slides/README
@@ -15,4 +15,4 @@ after the second run. A copy of the final
outfile.ps is included.
Jeff Kingston
-3 june 2000
+24 June 2000
diff --git a/doc/slides/outfile.ps b/doc/slides/outfile.ps
index 9057c5d..3abe548 100644
--- a/doc/slides/outfile.ps
+++ b/doc/slides/outfile.ps
@@ -1,6 +1,6 @@
%!PS-Adobe-3.0
-%%Creator: Basser Lout Version 3.22 (June 2000)
-%%CreationDate: Sat Jun 3 12:51:33 2000
+%%Creator: Basser Lout Version 3.23 (June 2000)
+%%CreationDate: Sat Jun 24 12:46:00 2000
%%DocumentData: Binary
%%DocumentNeededResources: (atend)
%%DocumentSuppliedResources: (atend)
@@ -2159,6 +2159,7 @@ end
] def
%%EndResource
+/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse
%%EndSetup
%%Page: 1 1
@@ -2256,7 +2257,9 @@ gsave
0 LoutMargSet
grestore
400 fnt4 2988 11377(A)m
-3363(simple)s 4565(input)s 5575(\207le)s 360 fnt2 800 9646(@SysInclude { doc })m
+3363(simple)s 4565(input)s 5575(\207le)s
+[ /Dest /LOUT24_222_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 6379(Ho)m 4(w)k
889(to)s 1313(f)s 10(ormat)k 2579(it)s 360 fnt2
@@ -2302,8 +2305,10 @@ gsave
gsave
1 LoutMargSet
grestore
+
+[ /Dest /LOUT24_222_all_2 /DEST pdfmark
8640 10080 1440 8457 400 480 100 0 667 LoutGr2
-LoutBox stroke
+LoutBox stroke
grestore
1440 8367(Hello,)m 2505(w)s 4(orld)k
@@ -2359,7 +2364,9 @@ gsave
0 LoutMargSet
grestore
400 fnt4 2339 11377(Headings)m
-4026(and)s 4762(paragraphs)s 360 fnt2 800 9646(@SysInclude { doc })m 800 9166(@Doc @T)m 43(e)k 10(xt @Begin)k
+4026(and)s 4762(paragraphs)s
+[ /Dest /LOUT24_222_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
800 7246(system w)m 5(as under)k -14(tak)k 7(en with the)k 800 6766(needs of the @I { ordinar)m -10(y user })k
800 6286(v)m 9(er)k -10(y m)k 3(uch in mind.)k 800 5806(@End @T)m 43(e)k 10(xt)k
@@ -2413,8 +2420,10 @@ gsave
gsave
1 LoutMargSet
grestore
+
+[ /Dest /LOUT24_222_all_4 /DEST pdfmark
8640 10080 1440 8456 400 480 100 0 666 LoutGr2
-LoutBox stroke
+LoutBox stroke
grestore
400 fnt4 1440 8364(Intr)m 7(oduction)k
400 fnt1 2240 7742(The)m 2953(design)s 4090(of)s 4543(the)s
@@ -2475,6 +2484,8 @@ gsave
0 LoutMargSet
grestore
400 fnt4 3817 11376(Displays)m
+
+[ /Dest /LOUT24_222_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
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
@@ -2525,8 +2536,10 @@ gsave
gsave
1 LoutMargSet
grestore
+
+[ /Dest /LOUT24_222_all_6 /DEST pdfmark
8640 10080 1440 8457 400 480 100 0 668 LoutGr2
-LoutBox stroke
+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
@@ -2591,7 +2604,9 @@ gsave
0 LoutMargSet
grestore
400 fnt4 2299 11376(P)m 4(aragraph)k
-4229(br)s 7(eaking)k 5847(styles)s 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
+4229(br)s 7(eaking)k 5847(styles)s
+[ /Dest /LOUT24_222_all_7 /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
800 9172(his of\207ce and repor)m -14(t:)k 800 8692(@ID { r)m 3(agged noh)k 10(yphen } @Break @I {)k
800 8212(`I can't \207nd an ef\207cient algor)m -5(ithm, I)k 800 7732(guess I'm just too dumb)m 14(.)k 36(')k
800 7252(})m 800 6772(T)m 43(o a)k 7(v)k 9(oid ser)k -5(ious damage to y)k 7(our)k
@@ -2642,8 +2657,10 @@ gsave
gsave
1 LoutMargSet
grestore
+
+[ /Dest /LOUT24_222_all_8 /DEST pdfmark
8640 10080 1440 8457 400 480 100 0 666 LoutGr2
-LoutBox stroke
+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
@@ -2708,6 +2725,8 @@ gsave
0 LoutMargSet
grestore
400 fnt4 4128 11376(Lists)m
+
+[ /Dest /LOUT24_222_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
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
@@ -2758,17 +2777,25 @@ gsave
gsave
1 LoutMargSet
grestore
+
+[ /Dest /LOUT24_222_all_10 /DEST pdfmark
8640 10080 1440 8456 400 480 100 0 668 LoutGr2
-LoutBox stroke
+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 /LOUT20_1492_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 /LOUT20_1492_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 /LOUT20_1492_all_3 /DEST pdfmark
+
grestore
grestore
@@ -2821,7 +2848,9 @@ gsave
0 LoutMargSet
grestore
400 fnt4 3062 11377(T)m 36(echnical)k
-4780(r)s 7(eports)k 360 fnt2 800 9646(@SysInclude { repor)m -14(t })k
+4780(r)s 7(eports)k
+[ /Dest /LOUT24_222_all_11 /DEST pdfmark
+360 fnt2 800 9646(@SysInclude { repor)m -14(t })k
800 9166(@Repor)m -14(t)k 800 8686( @Title { ...)m 21( })k 800 8206( @A)m 10(uthor { ...)k 21( })k
800 7726( @Institution { ...)m 21( })k 800 7246( @DateLine { ...)m 21( })k 800 6766(//)m
800 6286(@Abstr)m 3(act { ...)k 21( })k 800 5806(@Section { ...)m 21( })k
@@ -2877,6 +2906,8 @@ gsave
1 LoutMargSet
grestore
400 fnt4 3840 11376(Sections)m
+
+[ /Dest /LOUT24_222_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
800 6840(on gener)m 3(al g)k 3(r)k 3(aphs ...)k 800 6360(@End @Section)m
@@ -2926,8 +2957,10 @@ gsave
gsave
0 LoutMargSet
grestore
+
+[ /Dest /LOUT24_222_all_13 /DEST pdfmark
8640 10080 1440 8456 400 480 100 0 668 LoutGr2
-LoutBox stroke
+LoutBox stroke
grestore
400 fnt4 1440 8364(10.6.)m
2424(Depth-\207rst)s 4386(sear)s 7(ch)k 400 fnt1 2240 7742(W)m 32(e)k
@@ -2986,7 +3019,9 @@ gsave
1 LoutMargSet
grestore
400 fnt4 3142 11375(Cr)m 7(oss)k
-4199(r)s 7(efer)k 7(ences)k 360 fnt2 800 9722(F)m 10(or fur)k -14(ther inf)k 10(or)k -9(mation, consult)k
+4199(r)s 7(efer)k 7(ences)k
+[ /Dest /LOUT24_222_all_14 /DEST pdfmark
+360 fnt2 800 9722(F)m 10(or fur)k -14(ther inf)k 10(or)k -9(mation, consult)k
800 9242(Section @NumberOf dfs on page)m 800 8762(@P)m 14(ageOf { dfs }.)k
grestore
gsave
@@ -3029,8 +3064,10 @@ gsave
gsave
0 LoutMargSet
grestore
+
+[ /Dest /LOUT24_222_all_15 /DEST pdfmark
8640 10080 1440 8457 400 480 100 0 667 LoutGr2
-LoutBox stroke
+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
@@ -3087,6 +3124,8 @@ gsave
1 LoutMargSet
grestore
400 fnt4 3612 11377(Refer)m 7(ences)k
+
+[ /Dest /LOUT24_222_all_16 /DEST pdfmark
360 fnt2 800 9723(@Database @Ref)m 10(erence { m)k 5(yrefs })k 800 9243(...)m
800 8763(F)m 10(or the details)k 5(, consult the User')k 18(s)k 800 8283(Guide @Cite { $kingston1995lout.user }.)m
@@ -3139,8 +3178,10 @@ gsave
gsave
0 LoutMargSet
grestore
+
+[ /Dest /LOUT24_222_all_17 /DEST pdfmark
8640 10080 1440 8457 400 480 100 0 667 LoutGr2
-LoutBox stroke
+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
@@ -3152,7 +3193,11 @@ grestore
2240 4441(3\))m 400 fnt1 2556 4439(.)m 2829(Basser)s 3992(Department)s
5977(of)s 2240 3959(Computer)m 3938(Science)s 5171(,)s 5349(Uni)s 10(v)k 6(ersity)k
2240 3479(of)m 2693(Sydne)s 6(y)k 3876(,)s 4054(1995)s
-4830(.)s 1440 2642(2.)m 2240(\202)s
+4830(.)s
+[ /Dest /LOUT20_1492_all_4 /DEST pdfmark
+1440 2642(2.)m 2240(\202)s
+[ /Dest /LOUT20_1492_all_5 /DEST pdfmark
+
grestore
grestore
@@ -3205,7 +3250,9 @@ gsave
1 LoutMargSet
grestore
400 fnt4 2601 11375(Database)m
-4269(\207le)s 4872(myr)s 7(efs.ld)k 360 fnt2 800 9644({ @Ref)m 10(erence)k
+4269(\207le)s 4872(myr)s 7(efs.ld)k
+[ /Dest /LOUT24_222_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
800 7724( @Title { A User')m 18(s Guide to the Lout)k 800 7244(Document F)m 10(or)k -9(matting System \(V)k 28(ersion 3\) })k
800 6764( @Institution { Basser Depar)m -14(tment of)k 800 6284(Computer Science })m 800 5804( @Address { Univ)m 9(ersity of Sydne)k 7(y)k
@@ -3257,16 +3304,34 @@ gsave
0 LoutMargSet
grestore
400 fnt4 2965 11375(Books)m
-4097(\(and)s 4966(theses\))s 400 fnt1 0 9650(\213)m 800(T)s 14(itle)k
-1632(page,)s 2564(pref)s 4(ace,)k 3912(introduction)s 0 8810(\213)m
-800(Automatic)s 2574(table)s 3442(of)s 3895(contents)s 0 8053(\213)m
+4097(\(and)s 4966(theses\))s
+[ /Dest /LOUT24_222_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 /LOUT20_1492_all_6 /DEST pdfmark
+0 8810(\213)m
+800(Automatic)s 2574(table)s 3442(of)s 3895(contents)s
+[ /Dest /LOUT20_1492_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 0 7213(\213)m 800(Chapters,)s 2397(sections,)s
-3861(subsections,)s 5880(appendices)s 0 6374(\213)m 800(References)s 2656(at)s
+5465(Roman)s 6713(numerals)s
+[ /Dest /LOUT20_1492_all_8 /DEST pdfmark
+0 7213(\213)m 800(Chapters,)s 2397(sections,)s
+3861(subsections,)s 5880(appendices)s
+[ /Dest /LOUT20_1492_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
-0 5535(\213)m 800(Running)s 2265(page)s 3111(headers)s 0 4695(\213)m
+
+[ /Dest /LOUT20_1492_all_10 /DEST pdfmark
+0 5535(\213)m 800(Running)s 2265(page)s 3111(headers)s
+[ /Dest /LOUT20_1492_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 /LOUT20_1492_all_12 /DEST pdfmark
0 3855(\213)m 800(Sorted)s 1940(inde)s 6(x)k
+[ /Dest /LOUT20_1492_all_13 /DEST pdfmark
+
grestore
gsave
1417 -14005 translate
@@ -3317,7 +3382,9 @@ gsave
1 LoutMargSet
grestore
400 fnt4 2631 11377(Making)m
-4057(a)s 4353(sorted)s 5509(index)s 360 fnt2 800 9646(@PP)m
+4057(a)s 4353(sorted)s 5509(index)s
+[ /Dest /LOUT24_222_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
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
@@ -3371,8 +3438,10 @@ gsave
gsave
0 LoutMargSet
grestore
+
+[ /Dest /LOUT24_222_all_21 /DEST pdfmark
8640 10080 1440 8462 400 480 100 0 668 LoutGr2
-LoutBox stroke
+LoutBox stroke
grestore
400 fnt4 1440 8370(Index)m
400 fnt1 1440 7795(\202)m 1440 7315(partial)m 2552(order)s 16(,)k
@@ -3433,7 +3502,9 @@ gsave
1 LoutMargSet
grestore
400 fnt4 2785 11376(Equation)m
-4455(f)s 10(ormatting)k 360 fnt2 800 9645(@SysInclude { eq })m 800 9165(...)m
+4455(f)s 10(ormatting)k
+[ /Dest /LOUT24_222_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
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
@@ -3485,8 +3556,10 @@ gsave
gsave
0 LoutMargSet
grestore
+
+[ /Dest /LOUT24_222_all_23 /DEST pdfmark
8640 10080 1440 8457 400 480 100 0 668 LoutGr2
-LoutBox stroke
+LoutBox stroke
grestore
1440 8367(Since)m 400 fnt5
2419 8369(T)m 400 fnt6 2691 8357(\()m 400 fnt5 2831 8369(n)m
@@ -3557,7 +3630,9 @@ gsave
1 LoutMargSet
grestore
400 fnt4 3035 11375(Another)m
-4550(equation)s 360 fnt2 800 9644(@CenteredDispla)m 10(y @Eq {)k 800 9164(big int supp 1 on 0 )m 21(`)k
+4550(equation)s
+[ /Dest /LOUT24_222_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
800 7724(})m
grestore
@@ -3608,8 +3683,10 @@ gsave
gsave
0 LoutMargSet
grestore
+
+[ /Dest /LOUT24_222_all_25 /DEST pdfmark
8640 10080 1440 8640 400 480 100 0 667 LoutGr2
-LoutBox stroke
+LoutBox stroke
grestore
676 fnt6 3159 7423(\362)m
280 fnt6 3355 7972(1)m 3355 7281(0)m 400 fnt5 3991 7782(dx)m
@@ -3691,6 +3768,8 @@ gsave
1 LoutMargSet
grestore
400 fnt4 3991 11383(T)m 36(ables)k
+
+[ /Dest /LOUT24_222_all_26 /DEST pdfmark
360 fnt2 800 9729(@SysInclude { tab })m 800 9249(...)m 800 8769(@T)m 43(ab)k
800 8289( @Fmta { @Col @I A ! @Col B })m 800 7809({)m 800 7329(@Ro)m 5(w)k 5(a)k
800 6849( A { F)m 10(or)k -14(tr)k 3(an })k 800 6369( B { )m 18(The \207rst ...)k 21( language })k
@@ -3743,8 +3822,10 @@ gsave
gsave
0 LoutMargSet
grestore
+
+[ /Dest /LOUT24_222_all_27 /DEST pdfmark
8640 10080 1440 8640 400 480 100 0 667 LoutGr2
-LoutBox stroke
+LoutBox stroke
grestore
400 fnt5 1440 8177(F)m 42(ortr)k 6(an)k
400 fnt1 3178 8175(The)m 3891(\207rst)s 4612(high-le)s 10(v)k 6(el)k
@@ -3806,7 +3887,9 @@ gsave
1 LoutMargSet
grestore
400 fnt4 3357 11375(Another)m
-4872(table)s 360 fnt2 800 10201(@T)m 43(ab)k 800 9721( hmargin { 0.4c })m
+4872(table)s
+[ /Dest /LOUT24_222_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
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
@@ -3866,8 +3949,10 @@ gsave
gsave
0 LoutMargSet
grestore
+
+[ /Dest /LOUT24_222_all_29 /DEST pdfmark
8640 10080 1440 8640 400 480 100 0 667 LoutGr2
-LoutBox stroke
+LoutBox stroke
grestore
gsave
1440 8640 translate
@@ -4278,7 +4363,9 @@ gsave
1 LoutMargSet
grestore
400 fnt4 3123 11382(P)m 4(ascal)k
-4297(pr)s 7(ograms)k 360 fnt2 800 9651(@SysInclude { pas })m 800 9171(...)m
+4297(pr)s 7(ograms)k
+[ /Dest /LOUT24_222_all_30 /DEST pdfmark
+360 fnt2 800 9651(@SysInclude { pas })m 800 9171(...)m
800 8691(@ID @P)m 14(as {)k 800 8211(procedure DoPr)m -5(iAbstr)k 3(act\(root:)k 18( Pr)k -5(iEntr)k -10(y\);)k
800 7731(begin)m 800 7251( if root^.leftchild <> nil then begin)m 800 6771( DoPr)m -5(iAbstr)k 3(act\(root^.leftchild\);)k
800 6291( wr)m -5(ite\(', '\);)k 800 5811( end;)m 800 5331( Pr)m -5(iK)k 14(e)k 7(yAbstr)k 3(act\(root^.k)k 7(e)k 7(y\);)k
@@ -4337,8 +4424,10 @@ gsave
gsave
0 LoutMargSet
grestore
+
+[ /Dest /LOUT24_222_all_31 /DEST pdfmark
8640 10080 1440 8455 400 480 100 0 667 LoutGr2
-LoutBox stroke
+LoutBox stroke
grestore
400 fnt4 1440 8363(pr)m 7(ocedur)k 7(e)k
400 fnt5 3270 8367(DoPriAbstr)m 6(act)k 400 fnt1 5622 8365(\()m
@@ -4422,7 +4511,9 @@ gsave
1 LoutMargSet
grestore
400 fnt4 3304 11376(Basic)m
-4308(graphics)s 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
+4308(graphics)s
+[ /Dest /LOUT24_222_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
grestore
gsave
@@ -4469,8 +4560,10 @@ gsave
gsave
0 LoutMargSet
grestore
+
+[ /Dest /LOUT24_222_all_33 /DEST pdfmark
8640 10080 1440 8640 400 480 100 0 667 LoutGr2
-LoutBox stroke
+LoutBox stroke
grestore
gsave
2528 5722 translate
@@ -4482,7 +4575,7 @@ gsave
0 -254 translate
360 fnt2 2027 526 108 254 360 480 100 LoutGraphic
gsave
-LoutBox stroke
+LoutBox stroke
grestore
108 161(Hello)m 14(,)k
1080(w)s 3(or)k -5(ld)k
@@ -4544,7 +4637,9 @@ gsave
1 LoutMargSet
grestore
400 fnt4 2908 11375(Adv)m 4(anced)k
-4704(graphics)s 360 fnt2 800 9644(@SysInclude { \207g })m 800 9164(...)m 800 8684(@Fig {)m
+4704(graphics)s
+[ /Dest /LOUT24_222_all_34 /DEST pdfmark
+360 fnt2 800 9644(@SysInclude { \207g })m 800 9164(...)m 800 8684(@Fig {)m
800 8204(@Bo)m 10(x)k 800 7724( margin { 0c })m 800 7244( paint { b)m 7(lac)k 7(k })k
800 6764(@Ellipse)m 800 6284( linestyle { noline })m 800 5804( paint { white })m 800 5324({ Hello)m 14(, w)k 3(or)k -5(ld })k
800 4844(})m
@@ -4589,8 +4684,10 @@ gsave
gsave
0 LoutMargSet
grestore
+
+[ /Dest /LOUT24_222_all_35 /DEST pdfmark
8640 10080 1440 8231 400 480 100 0 667 LoutGr2
-LoutBox stroke
+LoutBox stroke
grestore
5760 781 226 372 400 480 100 1440 7859 LoutGr2
grestore save gsave 200 dict begin lfigdict begin
@@ -4667,7 +4764,9 @@ gsave
1 LoutMargSet
grestore
400 fnt4 3302 11376(P)m 8(oint)k
-4304(labelling)s 360 fnt2 800 9645(@Fig {)m 800 9165(A::)m 800 8685({)m
+4304(labelling)s
+[ /Dest /LOUT24_222_all_36 /DEST pdfmark
+360 fnt2 800 9645(@Fig {)m 800 9165(A::)m 800 8685({)m
800 8205( 1::)m 18( @Ellipse { 3c @Wide 2c @High })k 800 7725( //3c)m 800 7245( 2::)m 18( @Bo)k 10(x { 3c @Wide 2c @High })k
800 6765(})m 800 6285(@Sho)m 5(wLabels)k 800 5805(})m
grestore
@@ -4711,8 +4810,10 @@ gsave
gsave
0 LoutMargSet
grestore
+
+[ /Dest /LOUT24_222_all_37 /DEST pdfmark
8640 10080 1440 8414 400 480 100 0 667 LoutGr2
-LoutBox stroke
+LoutBox stroke
grestore
5760 4873 0 4647 400 480 100 1440 3767 LoutGr2
grestore save gsave 200 dict begin lfigdict begin
@@ -4808,6 +4909,8 @@ gsave
1 LoutMargSet
grestore
400 fnt4 3895 11375(Graphs)m
+
+[ /Dest /LOUT24_222_all_38 /DEST pdfmark
340 fnt2 800 9035(@Gr)m 3(aph)k 800 8555( abo)m 5(v)k 8(ecaption { Ne)k 6(w South )k 13(W)k 13(ales road deaths)k
800 8075(\(per 100 million v)m 8(ehicle km\) })k 800 7595({)m 800 7115( @Data points { plus } pairs { dashed })m 800 6635( { 1963 5.6 1971 4.3 1976 3.7 1979 3.4)m
800 6155( 1982 2.9 1985 2.3 1988 2.0 })m 800 5675(})m
@@ -4852,8 +4955,10 @@ gsave
gsave
0 LoutMargSet
grestore
+
+[ /Dest /LOUT24_222_all_39 /DEST pdfmark
8640 10080 1440 8640 400 480 100 0 667 LoutGr2
-LoutBox stroke
+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
@@ -4928,6 +5033,8 @@ gsave
gsave
1 LoutMargSet
grestore
+
+[ /Dest /LOUT24_222_all_40 /DEST pdfmark
360 fnt2 800 10484(-2p @F)m 10(ont @Gr)k 3(aph)k
800 10004( style { ax)m 10(es })k 800 9524( xor)m -5(igin { 0 } y)k 7(or)k -5(igin { 0 })k
800 9044( xtic)m 7(ks { 10@ 50@ 100@ 200@ 500@ })k 800 8564( objects { @NE at { 300 2 } @I { Exponential })m 800 8084( @SE at { ...)m 21( } @I { Unif)k 10(or)k -9(m } })k
@@ -4980,8 +5087,10 @@ gsave
gsave
0 LoutMargSet
grestore
+
+[ /Dest /LOUT24_222_all_41 /DEST pdfmark
8640 10080 1440 8640 400 480 100 0 668 LoutGr2
-LoutBox stroke
+LoutBox stroke
grestore
gsave
1440 4671 translate
diff --git a/doc/user/README b/doc/user/README
index e03e324..706b31f 100644
--- a/doc/user/README
+++ b/doc/user/README
@@ -6,10 +6,11 @@ type the command
lout all > op
-in this directory. This must be done six times to completely
-resolve all cross references, although the PostScript file op is
-printable after the first run. Auxiliary files with .li and .ld
-suffixes will be created in this directory.
+in this directory. Owing to some unfortunate page breaks in the
+early runs, this must be done seven times to completely resolve
+all cross references, although the PostScript file op is printable
+after the first run. Auxiliary files with .li and .ld suffixes
+will be created in this directory.
The first run will produce a large number of error messages,
nearly all beginning with "unresolved cross reference". These
@@ -31,7 +32,7 @@ repeated failure to converge, caused by footnotes and floating figures
close to large unbreakable displays.
A copy of the final PostScript output file (A4 paper size) is
-stored at "ftp://ftp.cs.su.oz.au/jeff/lout/lout-3.19.user.ps.gz".
+stored at "ftp://ftp.cs.su.oz.au/jeff/lout/lout-3.23.user.ps.gz".
Jeffrey H. Kingston
-3 June 2000
+24 June 2000
diff --git a/doc/user/all b/doc/user/all
index 46c35f5..e0f239c 100644
--- a/doc/user/all
+++ b/doc/user/all
@@ -21,7 +21,7 @@ Lout
Document Formatting System
}
@Author { Jeffrey H. Kingston }
- @Edition { Version 3.22
+ @Edition { Version 3.23
June, 2000 }
@Publisher {
Copyright @CopyRight 1991, 2000 Jeffrey H. Kingston,
diff --git a/doc/user/bas_par1 b/doc/user/bas_par1
index de3da37..0cee5f8 100644
--- a/doc/user/bas_par1
+++ b/doc/user/bas_par1
@@ -24,8 +24,8 @@ new line. If you are using it to create single lines, you need the
The @Code "@DP" `display paragraph' symbol produces a somewhat larger
dp. @Index @Code "@DP"
vertical space, equal to the amount used before and after displays
-(Section {@NumberOf displays}), with no indent. To get even larger
-vertical spaces, use @Code "@DP" repeatedly. Another symbol,
+(Section {@NumberOf displays}), with no indent. To get even more
+space, use @Code "@DP" repeatedly. Another symbol,
{@Code "@LOP"}, leaves a paragraph break the size of the gap left
lop. @Index @Code "@LOP"
outside (that is, before and after) lists (Section {@NumberOf lists}). This
@@ -57,7 +57,7 @@ column for a heading and at least two lines of text. If so, @Code "@CNP"
does nothing; if not, @Code "@CNP" causes a new page or column to be begun,
like {@Code "@NP"}. The recommended arrangement is
@ID @OneRow @Code {
-"end of previous part."
+# "end of previous part."
"@DP"
"@CNP"
"@Heading { A Heading }"
diff --git a/doc/user/bas_star b/doc/user/bas_star
index ef65eb6..d2c6653 100644
--- a/doc/user/bas_star
+++ b/doc/user/bas_star
@@ -99,15 +99,15 @@ paragraph symbol. Lout will ordinarily take notice of how many spaces you type
between words (Section {@NumberOf spaces}), but it will mimic the spacing rules
of two other systems, troff and @TeX, if you prefer (Section {@NumberOf white}).
@PP
-When Lout runs, you might see some error messages beginning with
+When Lout runs, you might see some error messages containing the words
error.messages @Index { error messages }
-`unresolved cross reference' -- 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 again to finish off
-the complicated things (Section {@NumberOf cross}), and they will gradually
-go away. Of course, if you see error messages about missing braces, unknown
-symbols, and so on, you need to revise your file. Lout will tell you the
-line number of the problem, and how far along the line it is.
+`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
+again to finish off the complicated things (Section {@NumberOf cross}), and
+they will gradually go away. Of course, if you see error messages about
+missing braces, unknown symbols, and so on, you need to revise your file. Lout
+will tell you the line number of the problem, and how far along the line it is.
@PP
@BI { WARNING: } Lout allows documents to cause arbitrary system commands
to be executed. These typically do useful things such as format computer
diff --git a/doc/user/bgr_boxs b/doc/user/bgr_boxs
index 39c6460..54b78a3 100644
--- a/doc/user/bgr_boxs
+++ b/doc/user/bgr_boxs
@@ -55,7 +55,9 @@ large everything is: as far as Lout is concerned, the line always
has width zero. If you draw really thick lines you might need a larger
margin and more space near the box. The default value of @Code linewidth
is empty, which means to use whatever width the PostScript interpreter
-in your output device thinks is a good default value.
+in your output device thinks is a good default value. The special
+value @Code "none" for @Code "linewidth" ensures that no line is drawn
+around the box at all.
@PP
There is also a @Code "paint" option which paints a background of the
nominated colour:
diff --git a/doc/user/bgr_colo b/doc/user/bgr_colo
index 4a48fb9..08d8d2a 100644
--- a/doc/user/bgr_colo
+++ b/doc/user/bgr_colo
@@ -44,5 +44,9 @@ nominal colour can look quite different on screen and on paper. The
standard Lout @Code "@SetColour" symbol can provide many more colours
setcolour. @Index @Code "@SetColour"
@Cite { $kingston1995lout.expert}, although they must be specified
-using numbers rather than names.
+using numbers rather than names. For example,
+@ID @Code "{ 0.5 0.5 1.0 } @SetColour Hello"
+prints @Code Hello in a colour containing red at intensity 0.5, green
+at intensity 0.5, and blue at intensity 1.0, which turns out, in the
+strange world of colour coordinates, to be a light blue.
@End @Section
diff --git a/doc/user/dia b/doc/user/dia
index 6462c88..9b0f8f9 100644
--- a/doc/user/dia
+++ b/doc/user/dia
@@ -9,9 +9,10 @@ diag. @Index { @@Diag }
Starting with Version 3.18 of Lout, the @@Diag symbol was enhanced with
the {@Code "@ANode"}, {@Code "@BNode"}, and {@Code "@CNode"} symbols
described in Section {@NumberOf dia_node}, and with the symbols for
-syntax diagrams described in Section {@NumberOf dia_synt}. These
-enhancements are upwardly compatible, unless the user has defined
-symbols with these same names and used them within diagrams.
+syntax diagrams described in Section {@NumberOf dia_synt}.
+#These
+#enhancements are upwardly compatible, unless the user has defined
+#symbols with these same names and used them within diagrams.
@LP
Prior to Version 3.09 of Lout, this chapter described a symbol called
fig. @Index @Code "@Fig"
@@ -35,7 +36,7 @@ diag. @Index @Code "@Diag"
// @Link from { B } to { D }
// @Arrow from { E } to { D }
}
-@@Diag offers nodes and links, arrows, labels, positioning using coordinates,
+@@Diag offers nodes and links, arrows, labels, coordinates,
tree diagrams, and syntax diagrams.
@BeginSections
@Include { dia_intr }
diff --git a/doc/user/dia_intr b/doc/user/dia_intr
index 52a9d49..4f1ee40 100644
--- a/doc/user/dia_intr
+++ b/doc/user/dia_intr
@@ -26,9 +26,7 @@ This provides everything you need for making diagrams.
The result of the @@Diag symbol is an object in the usual way. A diagram
is commonly made into a centred display, like this:
@ID @OneRow @Code {
-"@CentredDisplay @Diag {"
-" ..."
-"}"
+"@CentredDisplay @Diag { ... }"
}
or into a floating figure, like this:
@ID @OneRow @Code {
diff --git a/doc/user/dia_node b/doc/user/dia_node
index 8980978..4fd6159 100644
--- a/doc/user/dia_node
+++ b/doc/user/dia_node
@@ -279,6 +279,14 @@ to the first value again; this is why a single value is applied to all
segments. Section {@NumberOf dia_summ} shows how each of the
standard shapes is divided into segments.
@PP
+The node symbols of @Code "@Diag" are quite separate symbols from the
+three basic box symbols of Section {@NumberOf boxes}. Although much
+is the same, one obvious difference between the two is that to get no
+outline in those boxes you use @Code { "linewidth { none }" }, whereas
+to get no outline here you use @Code { "outlinestyle { noline }" }. The
+basic boxes can only draw the outline solid or not at all, and their
+options have been kept simple to reflect that.
+@PP
Nodes may be painted any of the colours listed in Section
{@NumberOf colour}, using the @Code "paint" option:
@ID @OneRow {
diff --git a/doc/user/dia_summ b/doc/user/dia_summ
index 4539785..8bf3b1d 100644
--- a/doc/user/dia_summ
+++ b/doc/user/dia_summ
@@ -862,10 +862,12 @@ A:: @Circle /0.8c |1.5c B:: @Circle /2f
Here is the list of abbreviations for the standard paths (note
that @Code curve and @Code acurve are the same). Each
path also has an abbreviation which adds a forward arrow:
-@ID @Tab
- @Fmta { @Col @Code { path "{" A "}" } ! @Col @Code "@"B ! @Col @Code "@"C }
+@DP
+@Tab
+ @Fmta { @Col { @DisplayIndent @Wide & @Code { path "{" A "}" } } !
+ @Col @Code "@"B ! @Col @Code "@"C }
{
-@Rowa
+@FirstRowa
A { line }
B { Line }
C { Arrow }
@@ -942,6 +944,7 @@ path also has an abbreviation which adds a forward arrow:
B { UWrapCurve }
C { UWrapCurveArrow }
}
+@DP
Here is the complete list of options to the @Code "@Link" symbol. The
options related to {@Code xlabel}, {@Code ylabel}, and {@Code zlabel}
have been omitted where they are the same as the {@Code linklabel} options.
diff --git a/doc/user/equ_disp b/doc/user/equ_disp
index 0167b8d..ea4af47 100644
--- a/doc/user/equ_disp
+++ b/doc/user/equ_disp
@@ -48,10 +48,10 @@ is called
@ID @Code "@RawCentredAlignedNumberedDisplay"
By leaving out some or all of {@Code Raw}, {@Code Aligned}, and
{@Code Numbered}, and by changing or leaving out {@Code Centred},
-we get all these combinations. Here
+we get all these combinations. The two displays
numbereddisplay. @Index @Code "@NumberedDisplay"
aligneddisplay. @Index @Code "@AlignedDisplay"
-then is how the two displays given earlier were made:
+given earlier were made like this:
@ID @OneRow @Code {
"... a first example of a numbered display:"
"@BeginAlignedDisplays"
@@ -89,7 +89,7 @@ Section {@NumberOf displays}, and the recommended solution was to
use a list. However, there are no aligned or numbered (in this sense)
lists.
@PP
-To solve this problem, each display symbol has a `raw' version, which
+Fortunately, each display symbol has a `raw' version, which
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:
diff --git a/doc/user/preface b/doc/user/preface
index 9569cab..375999e 100644
--- a/doc/user/preface
+++ b/doc/user/preface
@@ -18,7 +18,7 @@ gnu. @Index { GNU Public License }
primary source is directory
@ID @Code "ftp://ftp.cs.usyd.edu.au/jeff/lout"
in which may be found a gzipped tar file containing the main distribution
-(currently {@Code "lout-3.22.tar.gz"}), and various other things including
+(currently {@Code "lout-3.23.tar.gz"}), and various other things including
a PostScript version of this guide. The distribution contains source code,
libraries, documentation, license, and installation instructions.
@PP
diff --git a/doc/user/prg b/doc/user/prg
index 792124c..d22a7b2 100644
--- a/doc/user/prg
+++ b/doc/user/prg
@@ -75,6 +75,12 @@ pod. @Index { Pod (for Perl) printing }
C { "@Pod" }
D { varying }
E { No }
+@Rowb
+ A { Python }
+ B { python }
+ C { "@Python" }
+ D { varying }
+ E { No }
}
C and C++ are handled together since, for formatting purposes, they
differ only in that C++ has some additional keywords plus an extra
diff --git a/doc/user/str_cros b/doc/user/str_cros
index 7eb74c3..4bb391d 100644
--- a/doc/user/str_cros
+++ b/doc/user/str_cros
@@ -1,5 +1,5 @@
@Section
- @Title { Cross references }
+ @Title { Cross references and links }
@Tag { cross }
@Begin
@PP
@@ -109,4 +109,71 @@ when switching from one document to another, by removing file
lout.li @Index { @Code lout.li file }
{@Code "lout.li"}. You should also remove this file if your document
changes radically -- from a report to a book, say.
+@PP
+PDF viewers and recent versions of PostScript viewers offer a high-tech
+version of cross references called {@I links}, which allow the user to
+click on, say, the entry for a section in a table of contents and be
+immediately transported to the page on which that section begins. In
+principle, anything could happen when a link is clicked on, but Lout
+only offers the kind of link that transports the user to some page
+in the current document.
+@PP
+Lout automatically makes a link out of every page number it prints
+in the table of contents and in the index, and every reference
+citation. You can also insert your own links, using the
+@Code "@CrossLink" symbol like this:
+@ID @Code "See cross @CrossLink { Section @NumberOf cross }"
+The @Code "@CrossLink" symbol consumes two objects, one to its left and the
+other to its right, and we'll explain each of these now.
+@PP
+The object on the right (@Code "Section @NumberOf cross" in our
+example) can be an arbitrary Lout object: you don't have to have
+@Code "@NumberOf" or @Code "@PageOf" inside it, although in practice
+you often will, since it makes sense to put a low-tech link wherever
+you have a high-tech one, for the benefit of readers of paper
+versions. This object on the right is what is printed, so the
+overall result in this example is
+@ID { See cross @CrossLink { Section @NumberOf cross } }
+But, beyond this, clicking anywhere on this object on the screen will
+invoke the link, transporting the user to some other page.
+@PP
+The object on the left (@Code cross in our example) must be a tag
+that is acceptable to the @Code "@PageOf" symbol described earlier
+in this section. The link will transport the user who clicks on
+it to the page that @Code "@PageOf" would point to if given that
+tag. You can ensure that your tag is acceptable in the usual
+ways: by using {@Code "@PageMark"}, or by giving the tag as the
+@Code "@Tag" option of a chapter, section, etc. as described earlier
+in this section.
+@PP
+A moment ago we said that the object to the right of @Code "@CrossLink"
+is what is printed by the @Code "@CrossLink" symbol. This is true by
+default, but there is a @Code "@CrossLinkFormat" option in the setup
+files which allows you to change the appearance of this printed
+object. (See Section {@NumberOf setup} for a general description
+of setup files and their options.) The default value of
+@Code "@CrossLinkFormat" is
+@ID @Code "@CrossLinkFormat { @Body }"
+Within the @Code "@CrossLinkFormat" option, the @Code "@Body" symbol
+stands for the object to the right of {@Code "@CrossLink"}. It is
+actually the value of @Code "@CrossLinkFormat" that is printed, so,
+for example, changing it to
+@ID @Code "@CrossLinkFormat { blue @Colour @Underline @Body }"
+causes all link objects to be printed in blue and underlined. If
+you want a special format just for one link, there is a @Code "@Format"
+option to @Code "@CrossLink" that overrides {@Code "@CrossLinkFormat"}:
+@ID @Code "cross @CrossLink @Format { @CurveBox @Body } { Section @NumberOf cross }"
+You can also give the formatting you want directly, since the object
+to the right of @Code "@CrossLink" can be an arbitrary Lout object:
+@ID @Code "cross @CrossLink @CurveBox { Section @NumberOf cross }"
+However, in this form the @Code "@CrossLinkFormat" setup file option
+is still applied.
+@PP
+At present, the @Code "@CrossLink" symbol behaves as though a @Code "@OneCol"
+symbol encloses the object on its right. This means that that object
+is kept together on one line of any enclosing paragraph, and inter-word
+spaces within it are not adjusted along with the inter-word spaces of
+any enclosing paragraph. This deficiency might be corrected in the
+future, but meanwhile it means that it is best to keep your objects
+on the right short.
@End @Section
diff --git a/doc/user/str_indx b/doc/user/str_indx
index 3c15c09..b75c8db 100644
--- a/doc/user/str_indx
+++ b/doc/user/str_indx
@@ -40,14 +40,15 @@ automatically.
The object preceding the @Code "@Index" symbol is a compulsory key
which is used for sorting the index entries,
@FootNote {
-The collating sequence used to decide what comes after what is the
-collating sequence used by the @Code "memcmp()" library routine (just
-the underlying binary character codes). Alternatively, the version
-of Lout installed on your system may use the @Code "strcoll()"
-collating sequence, which understands accented characters and whose
-effect depends on your locale. To find out whether @Code "strcoll()"
-is in use or not, type @Code "lout -V" which prints out several lines
-of this and similar information.
+The collating sequence used to decide what comes after what is either
+the collating sequence used by the @Code "memcmp()" library routine (just
+the underlying binary character codes), or else the one used by the
+@Code "strcoll()" collating sequence, which understands accented
+characters and whose effect depends on your locale. To find out
+whether @Code "strcoll()" is in use or not, type @Code "lout -V" which
+prints out several lines of this and similar information, including
+information about command line flags to switch between the two kinds of
+collation.
@PP
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
@@ -55,10 +56,10 @@ keys by unaccented ones. Sorting is quite an intractable problem: even
if @Code "strcoll()" gets the sorting right for one language, there still
remains the problem of sorting multilingual indexes.
@PP
-Lout's database mechanism assumes that the @I tab character is collated
-before any character that could appear in a sorting key. It seems that
-there are a few collating sequences in existence which do not satisfy this
-condition, and in these cases Lout will fail to produce the correct index.
+Older versions of Lout assumed that the @I tab character was collated
+before any character that could appear in a sorting key, causing
+problems when this was not so. Recent versions of Lout no longer
+make this assumption.
}
but which is not itself printed anywhere. It is best to construct these
sorting keys from lower-case letters and the . character only, beginning
diff --git a/doc/user/str_larg b/doc/user/str_larg
index 618e69f..2d244ae 100644
--- a/doc/user/str_larg
+++ b/doc/user/str_larg
@@ -48,7 +48,9 @@ This arrangement is reminiscent of the one for lists, and, as for
lists, there may be no paragraph or new page symbols before, between,
or after the sections. To change the gap between sections, you need
to change the @Code "@SectionGap" option in the setup file, as explained
-in Chapter {@NumberOf types}.
+in Chapter {@NumberOf types}. If you just want a new page before one
+section, not all sections, place @Code "@NP" at the very end of the
+previous section, just before its {@Code "@End @Section"}.
@PP
The @Code "@Begin ... @End @Section" that brackets the body of each
section may be abbreviated to {@Code "{ ... }"}. However, the long
diff --git a/doc/user/tbl_intr b/doc/user/tbl_intr
index 3f1f557..1c9160e 100644
--- a/doc/user/tbl_intr
+++ b/doc/user/tbl_intr
@@ -88,11 +88,10 @@ The result of the @Code "@Tbl" symbol is an object. As usual with
Lout, this object may appear at any point in the document,
@FootNote {
In rare cases, when the table occupies an entire paragraph but is not
-displayed, a bug in the current version of Basser Lout causes the second
-column to appear much too far to the right. Until the problem is fixed,
-the first thing to try if this occurs is to replace the very first
-row symbol ({@Code "@Row"}, {@Code "@Rowa"}, {@Code "@Rowb"}, etc.) by
-{@Code "@FirstRow"}, {@Code "@FirstRowa"}, {@Code "@FirstRowb"},
+displayed, a bug in Basser Lout causes the second column to appear much
+too far to the right. If this occurs, replace
+the very first row symbol ({@Code "@Row"}, {@Code "@Rowa"}, {@Code "@Rowb"},
+etc.) by {@Code "@FirstRow"}, {@Code "@FirstRowa"}, {@Code "@FirstRowb"},
etc. There are also {@Code "@HeaderFirstRow"}, {@Code "@HeaderFirstRowa"},
{@Code "@HeaderFirstRowb"} etc. symbols for replacing {@Code "@HeaderRow"},
{@Code "@HeaderRowa"}, {@Code "@HeaderRowb"}, etc., if required.
diff --git a/doc/user/tbl_mult b/doc/user/tbl_mult
index 3b83b8b..b523223 100644
--- a/doc/user/tbl_mult
+++ b/doc/user/tbl_mult
@@ -122,7 +122,7 @@ 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 "@Enclose" option can be used to do this.)
+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"}:
diff --git a/doc/user/typ_apdf b/doc/user/typ_apdf
index 3203384..531f9c9 100644
--- a/doc/user/typ_apdf
+++ b/doc/user/typ_apdf
@@ -10,12 +10,19 @@ pdf. @Index { PDF documents }
@ID @Code "lout -PDF simple > simple.pdf"
No other changes are required.
@PP
-The PDF output is superior to PostScript in providing links: when viewed
-with a PDF viewer, entries in tables of contents and indexes can be
-clicked on and this transports the viewer to the part of the document
-referenced by the link. (Recent versions of PostScript support this
-feature too, but Lout's PostScript doesn't.) However, the PDF output
-produced by Lout is inferior at graphics: the advanced features of the
-@Code "@Diag" and @Code "@Graph" packages do not produce any output. One
-can still format documents that contain them, but the results are disappointing.
+When viewed with a PDF viewer, entries in tables of contents and indexes
+can be clicked on and this transports the viewer to the part of the document
+referenced by the link, as described in
+cross @CrossLink { Section {@NumberOf cross} }. Recent versions of PostScript
+support this feature too, via the @I pdfmark feature, and Lout's PostScript
+contains links expressed in this way. Unfortunately, few PostScript viewers
+know how to handle these links; those that don't just ignore them.
+@PP
+Regrettably, the PDF output produced by Lout is inferior at graphics: the
+advanced features of the @Code "@Diag" and @Code "@Graph" packages do not
+produce any output. One can still format documents that contain them, but
+the results are disappointing. The only way to get the best of everything
+is to produce PostScript, and then either pass it through a `distillation'
+program to produce PDF, or else view it with a PostScript viewer that
+understands links.
@End @Section
diff --git a/doc/user/typ_book b/doc/user/typ_book
index 59d81e5..fd83483 100644
--- a/doc/user/typ_book
+++ b/doc/user/typ_book
@@ -307,8 +307,7 @@ as at the end of the book.
Within the @Code "book" setup file there is a @Code "@BookSetup"
booksetup. @Index @Code "@BookSetup"
symbol whose options control the appearance of features specific to books
-(in other words, the features described in this section). Here is a
-representative sample of these options, showing their default values:
+(in other words, the features described in this section):
@ID @OneRow @Code {
"@Use { @BookSetup"
" # @TitlePageFont { Helvetica Base }"
@@ -325,7 +324,8 @@ representative sample of these options, showing their default values:
" # @ChapterInContents { Yes }"
"}"
}
-Section {@NumberOf setup} explains how to make your own setup file and
+This is just a representative sample of these options. Section
+{@NumberOf setup} explains how to make your own setup file and
change its options; here we just explain what the options do.
@PP
@Code "@TitlePageFont" is the font used on the title
diff --git a/doc/user/user.ps b/doc/user/user.ps
deleted file mode 100644
index 9cbcb3d..0000000
--- a/doc/user/user.ps
+++ /dev/null
@@ -1,7070 +0,0 @@
-%!PS-Adobe-3.0
-%%Creator: Basser Lout Version 3.20 (April 2000)
-%%CreationDate: Mon Apr 24 13:08:28 2000
-%%DocumentData: Binary
-%%DocumentNeededResources: (atend)
-%%DocumentSuppliedResources: (atend)
-%%DocumentMedia: A4 595 842 0 white ()
-%%PageOrder: Ascend
-%%Pages: (atend)
-%%BoundingBox: 0 0 595 842
-%%EndComments
-
-%%BeginProlog
-%%BeginResource: procset LoutStartUp
-/m { 3 1 roll moveto show } bind def
-/mo { 3 1 roll moveto true charpath stroke } bind def
-/s { exch currentpoint exch pop moveto show } bind def
-/so { exch currentpoint exch pop moveto true charpath stroke } bind def
-/k { exch neg 0 rmoveto show } bind def
-/ko { exch neg 0 rmoveto true charpath stroke } bind def
-/ul { gsave setlinewidth dup 3 1 roll
- moveto lineto stroke grestore } bind def
-/in { 1440 mul } def
-/cm { 567 mul } def
-/pt { 20 mul } def
-/em { 120 mul } def
-/sp { louts mul } def
-/vs { loutv mul } def
-/ft { loutf mul } def
-/dg { } def
-
-/LoutGraphic {
- /louts exch def
- /loutv exch def
- /loutf exch def
- /ymark exch def
- /xmark exch def
- /ysize exch def
- /xsize exch def
-} def
-
-/LoutGr2 { gsave translate LoutGraphic gsave } def
-
-/LoutFont
-{ findfont exch scalefont setfont
-} bind def
-
-/LoutRecode {
- { findfont dup length dict begin
- {1 index /FID ne {def} {pop pop} ifelse} forall
- /Encoding exch def
- currentdict end definefont pop
- }
- stopped pop
-} bind def
-
-/BeginEPSF {
- /LoutEPSFState save def
- /dict_count countdictstack def
- /op_count count 1 sub def
- userdict begin
- /showpage { } def
- 0 setgray 0 setlinecap
- 1 setlinewidth 0 setlinejoin
- 10 setmiterlimit [] 0 setdash newpath
- /languagelevel where
- { pop languagelevel
- 1 ne
- { false setstrokeadjust false setoverprint
- } if
- } if
-} bind def
-
-/EndEPSF {
- count op_count sub { pop } repeat
- countdictstack dict_count sub { end } repeat
- LoutEPSFState restore
-} bind def
-%%EndResource
-
-%%BeginResource: encoding vec2
-/vec2 [
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright
-/parenleft /parenright /asterisk /plus /comma /hyphen /period /slash
-/zero /one /two /three /four /five /six /seven
-/eight /nine /colon /semicolon /less /equal /greater /question
-/at /A /B /C /D /E /F /G
-/H /I /J /K /L /M /N /O
-/P /Q /R /S /T /U /V /W
-/X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore
-/quoteleft /a /b /c /d /e /f /g
-/h /i /j /k /l /m /n /o
-/p /q /r /s /t /u /v /w
-/x /y /z /braceleft /bar /braceright /asciitilde /.notdef
-/quotesinglbase /quotedblbase /ellipsis /OE /oe /quotedblleft /quotedblright /fi
-/fl /endash /emdash /bullet /dagger /daggerdbl /florin /fraction
-/dotlessi /grave /acute /circumflex /tilde /macron /breve /dotaccent
-/dieresis /.notdef /ring /cedilla /.notdef /hungarumlaut /ogonek /caron
-/space /exclamdown /cent /sterling /currency /yen /brokenbar /section
-/dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen /registered /macron
-/degree /plusminus /twosuperior /threesuperior /acute /mu /paragraph /periodcentered
-/cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf /threequarters /questiondown
-/Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla
-/Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis
-/Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply
-/Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /germandbls
-/agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla
-/egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis
-/eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide
-/oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /ydieresis
-] def
-%%EndResource
-
-%%BeginResource: procset LoutTabPrependGraphic
-% @PrependGraphic file /export/home/6monthspace/jeff/lout.lib/include/tabf.lpg
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% %
-% PostScript @SysPrependGraphic file for @Tab %
-% %
-% To assist in avoiding name clashes, the names %
-% of all these symbols begin with "ltab". %
-% %
-% Jeffrey H. Kingston %
-% 24 September 1991 %
-% 22 December 1992 %
-% %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-% linewidth ltabhs -
-% horizontal single line
-/ltabhs
-{ 0 0 moveto xsize 0 lineto
- setlinewidth 0 setlinecap stroke
-} def
-
-% linewidth ltabhsp -
-% horizontal single line with projecting ends
-/ltabhsp
-{ 0 0 moveto xsize 0 lineto
- setlinewidth 2 setlinecap stroke
-} def
-
-% linewidth ltabhd -
-% horizontal double line
-/ltabhd
-{ dup dup
- 0 0 moveto xsize 0 lineto
- 0 exch 3 mul moveto xsize exch 3 mul lineto
- setlinewidth 0 setlinecap stroke
-} def
-
-% linewidth ltabhdb -
-% horizontal double line below mark
-/ltabhdb
-{ dup dup
- 0 0 moveto xsize 0 lineto
- 0 exch -3 mul moveto xsize exch -3 mul lineto
- setlinewidth 0 setlinecap stroke
-} def
-
-% linewidth ltabhdnw -
-% horizontal double line with northwest corner
-/ltabhdnw
-{ dup dup dup dup
- 0 0 moveto xsize 0 lineto
- xsize exch 3 mul moveto
- -3 mul exch 3 mul lineto
- -3 mul 0 lineto
- setlinewidth 0 setlinejoin 2 setlinecap stroke
-} def
-
-% linewidth ltabhdne -
-% horizontal double line with northeast corner
-/ltabhdne
-{ dup dup dup dup
- 0 0 moveto xsize 0 lineto
- 0 exch 3 mul moveto
- 3 mul xsize add exch 3 mul lineto
- 3 mul xsize add 0 lineto
- setlinewidth 0 setlinejoin 2 setlinecap stroke
-} def
-
-% linewidth ltabhdsw -
-% horizontal double line with southwest corner
-/ltabhdsw
-{ dup dup dup dup
- 0 0 moveto xsize 0 lineto
- xsize exch -3 mul moveto
- -3 mul exch -3 mul lineto
- -3 mul 0 lineto
- setlinewidth 0 setlinejoin 2 setlinecap stroke
-} def
-
-% linewidth ltabhdse -
-% horizontal double line with southeast corner
-/ltabhdse
-{ dup dup dup dup
- 0 0 moveto xsize 0 lineto
- 0 exch -3 mul moveto
- 3 mul xsize add exch -3 mul lineto
- 3 mul xsize add 0 lineto
- setlinewidth 0 setlinejoin 2 setlinecap stroke
-} def
-
-% linewidth ltabvs -
-% vertical single line
-/ltabvs
-{ 0 0 moveto 0 ysize lineto
- setlinewidth 0 setlinecap stroke
-} def
-
-% linewidth ltabvd -
-% vertical double line
-/ltabvd
-{ dup dup
- 0 0 moveto 0 ysize lineto
- -3 mul 0 moveto -3 mul ysize lineto
- setlinewidth 0 setlinecap stroke
-} def
-
-% linewidth ltabvdr -
-% vertical double line to right of mark
-/ltabvdr
-{ dup dup
- 0 0 moveto 0 ysize lineto
- 3 mul 0 moveto 3 mul ysize lineto
- setlinewidth 0 setlinecap stroke
-} def
-%%EndResource
-
-%%BeginResource: procset LoutTblPrependGraphic
-% @PrependGraphic file /export/home/6monthspace/jeff/lout.lib/include/tblf.lpg
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% %
-% PostScript @SysPrependGraphic file for @Tbl Jeffrey H. Kingston %
-% Version 1.0 June 1998 %
-% %
-% To assist in avoiding name clashes, the names of all symbols %
-% defined here begin with "ltbl". %
-% %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-% painting (i.e. filling): - ltblwhite - (etc.)
-/ltblnopaint { } def
-/ltblnochange { fill } def
-/ltbldarkblue { 0.0 0.0 0.5 setrgbcolor fill } def
-/ltblblue { 0.0 0.0 1.0 setrgbcolor fill } def
-/ltbllightblue { 0.5 0.5 1.0 setrgbcolor fill } def
-/ltbldarkgreen { 0.0 0.5 0.0 setrgbcolor fill } def
-/ltblgreen { 0.0 1.0 0.0 setrgbcolor fill } def
-/ltbllightgreen { 0.5 1.0 0.5 setrgbcolor fill } def
-/ltbldarkred { 0.5 0.0 0.0 setrgbcolor fill } def
-/ltblred { 1.0 0.0 0.0 setrgbcolor fill } def
-/ltbllightred { 1.0 0.5 0.5 setrgbcolor fill } def
-/ltbldarkcyan { 0.0 0.5 0.5 setrgbcolor fill } def
-/ltblcyan { 0.0 1.0 1.0 setrgbcolor fill } def
-/ltbllightcyan { 0.5 1.0 1.0 setrgbcolor fill } def
-/ltbldarkmagenta { 0.5 0.0 0.5 setrgbcolor fill } def
-/ltblmagenta { 1.0 0.0 1.0 setrgbcolor fill } def
-/ltbllightmagenta { 1.0 0.5 1.0 setrgbcolor fill } def
-/ltbldarkyellow { 0.5 0.5 0.0 setrgbcolor fill } def
-/ltblyellow { 1.0 1.0 0.0 setrgbcolor fill } def
-/ltbllightyellow { 1.0 1.0 0.5 setrgbcolor fill } def
-/ltbldarkgray { 0.2 0.2 0.2 setrgbcolor fill } def
-/ltblgray { 0.5 0.5 0.5 setrgbcolor fill } def
-/ltbllightgray { 0.8 0.8 0.8 setrgbcolor fill } def
-/ltbldarkgrey { 0.2 0.2 0.2 setrgbcolor fill } def
-/ltblgrey { 0.5 0.5 0.5 setrgbcolor fill } def
-/ltbllightgrey { 0.8 0.8 0.8 setrgbcolor fill } def
-/ltblblack { 0.0 0.0 0.0 setrgbcolor fill } def
-/ltblwhite { 1.0 1.0 1.0 setrgbcolor fill } def
-%%EndResource
-
-%%BeginResource: procset LoutFigPrependGraphic
-% @PrependGraphic file /export/home/6monthspace/jeff/lout.lib/include/figf.lpg
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% %
-% PostScript @SysPrependGraphic file for @Fig Jeffrey H. Kingston %
-% Version 2.0 (includes CIRCUM label) January 1992 %
-% %
-% To assist in avoiding name clashes, the names of all symbols %
-% defined here begin with "lfig". However, this is not feasible %
-% with user-defined labels and some labels used by users. %
-% %
-% <point> is two numbers, a point. %
-% <length> is one number, a length %
-% <angle> is one number, an angle in degrees %
-% <dashlength> is one number, the preferred length of a dash %
-% %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-errordict begin
- /handleerror
- {
- { /Times-Roman findfont 8 pt scalefont setfont
- 0 setgray 4 pt 4 pt moveto
- $error /errorname get
- dup lfigdict exch known
- { lfigdict exch get }
- { 30 string cvs } ifelse
- show
- ( Command: ) show
- $error /command get 30 string cvs show
- } stopped {} if
- showpage stop
- } def
-end
-
-% concat strings: <string> <string> lfigconcat <string>
-% must be defined outside lfigdict since used in lfigpromotelabels
-/lfigconcat
-{ 2 copy length exch length add string
- dup 0 4 index putinterval
- dup 3 index length 3 index putinterval
- 3 1 roll pop pop
-} def
-
-% <string> lfigdebugprint -
-% must be defined outside lfigdict since used in arbitrary places
-% /lfigdebugprint
-% { print
-% (; operand stack:\n) print
-% count copy
-% count 2 idiv
-% { ==
-% (\n) print
-% } repeat
-% (\n) print
-% } def
-
-/lfigdict 120 dict def
-lfigdict begin
-
-% error messages
-/dictfull (dictfull error: too many labels?) def
-/dictstackoverflow (dictstackoverflow error: labels nested too deeply?) def
-/execstackoverflow (execstackoverflow error: figure nested too deeply?) def
-/limitcheck (limitcheck error: figure nested too deeply or too large?) def
-/syntaxerror (syntaxerror error: syntax error in text of figure?) def
-/typecheck (typecheck error: syntax error in text of figure?) def
-/undefined (undefined error: unknown or misspelt label?) def
-/VMError (VMError error: run out of memory?) def
-
-% push pi onto stack: - lfigpi <num>
-/lfigpi 3.14159 def
-
-% arc directions
-/clockwise false def
-/anticlockwise true def
-
-% maximum of two numbers: <num> <num> lfigmax <num>
-/lfigmax { 2 copy gt { pop } { exch pop } ifelse } def
-
-% minimum of two numbers: <num> <num> lfigmin <num>
-/lfigmin { 2 copy lt { pop } { exch pop } ifelse } def
-
-% add two points: <point> <point> lfigpadd <point>
-/lfigpadd { exch 3 1 roll add 3 1 roll add exch } def
-
-% subtract first point from second: <point> <point> lfigpsub <point>
-/lfigpsub { 3 2 roll sub 3 1 roll exch sub exch } def
-
-% max two points: <point> <point> lfigpmax <point>
-/lfigpmax { exch 3 1 roll lfigmax 3 1 roll lfigmax exch } def
-
-% min two points: <point> <point> lfigpmin <point>
-/lfigpmin { exch 3 1 roll lfigmin 3 1 roll lfigmin exch } def
-
-% scalar multiplication: <point> <num> lfigpmul <point>
-/lfigpmul { dup 3 1 roll mul 3 1 roll mul exch } def
-
-% point at angle and distance: <point> <length> <angle> lfigatangle <point>
-/lfigatangle { 2 copy cos mul 3 1 roll sin mul lfigpadd } def
-
-% angle from one point to another: <point> <point> lfigangle <angle>
-/lfigangle { lfigpsub 2 copy 0 eq exch 0 eq and {pop} {exch atan} ifelse } def
-
-% distance between two points: <point> <point> lfigdistance <length>
-/lfigdistance { lfigpsub dup mul exch dup mul add sqrt } def
-
-% difference in x coords: <point> <point> lfigxdistance <length>
-/lfigxdistance { pop 3 1 roll pop sub } def
-
-%difference in y coords: <point> <point> lfigydistance <length>
-/lfigydistance { 3 1 roll pop sub exch pop } def
-
-% stroke a solid line: <length> <dashlength> lfigsolid -
-/lfigsolid
-{ pop pop [] 0 setdash stroke
-} def
-
-% stroke a lfigdashed line: <length> <dashlength> lfigdashed -
-/lfigdashed
-{ 2 copy div 2 le 1 index 0 le or
- { exch pop 1 pt lfigmax [ exch dup ] 0 setdash }
- { dup [ exch 4 2 roll 2 copy div
- 1 sub 2 div ceiling dup 4 1 roll
- 1 add mul sub exch div ] 0 setdash
- } ifelse stroke
-} def
-
-% stroke a lfigcdashed line: <length> <dashlength> lfigcdashed -
-/lfigcdashed
-{ 2 copy le 1 index 0 le or
- { exch pop 1 pt lfigmax [ exch dup ] dup 0 get 2 div setdash }
- { dup [ 4 2 roll exch 2 copy exch div
- 2 div ceiling div 1 index sub
- ] exch 2 div setdash
- } ifelse stroke
-} def
-
-% stroke a dotted line: <length> <dashlength> lfigdotted -
-/lfigdotted
-{ 2 copy le 1 index 0 le or
- { exch pop 1 pt lfigmax [ exch 0 exch ] 0 setdash }
- { 1 index exch div ceiling div
- [ 0 3 2 roll ] 0 setdash
- } ifelse stroke
-} def
-
-% stroke a noline line: <length> <dashlength> lfignoline -
-/lfignoline
-{ pop pop
-} def
-
-% painting (i.e. filling): - lfigwhite - (etc.)
-/lfignopaint { } def
-/lfignochange { fill } def
-/lfigdarkblue { 0.0 0.0 0.5 setrgbcolor fill } def
-/lfigblue { 0.0 0.0 1.0 setrgbcolor fill } def
-/lfiglightblue { 0.5 0.5 1.0 setrgbcolor fill } def
-/lfigdarkgreen { 0.0 0.5 0.0 setrgbcolor fill } def
-/lfiggreen { 0.0 1.0 0.0 setrgbcolor fill } def
-/lfiglightgreen { 0.5 1.0 0.5 setrgbcolor fill } def
-/lfigdarkred { 0.5 0.0 0.0 setrgbcolor fill } def
-/lfigred { 1.0 0.0 0.0 setrgbcolor fill } def
-/lfiglightred { 1.0 0.5 0.5 setrgbcolor fill } def
-/lfigdarkcyan { 0.0 0.5 0.5 setrgbcolor fill } def
-/lfigcyan { 0.0 1.0 1.0 setrgbcolor fill } def
-/lfiglightcyan { 0.5 1.0 1.0 setrgbcolor fill } def
-/lfigdarkmagenta { 0.5 0.0 0.5 setrgbcolor fill } def
-/lfigmagenta { 1.0 0.0 1.0 setrgbcolor fill } def
-/lfiglightmagenta { 1.0 0.5 1.0 setrgbcolor fill } def
-/lfigdarkyellow { 0.5 0.5 0.0 setrgbcolor fill } def
-/lfigyellow { 1.0 1.0 0.0 setrgbcolor fill } def
-/lfiglightyellow { 1.0 1.0 0.5 setrgbcolor fill } def
-/lfigdarkgray { 0.2 0.2 0.2 setrgbcolor fill } def
-/lfiggray { 0.5 0.5 0.5 setrgbcolor fill } def
-/lfiglightgray { 0.8 0.8 0.8 setrgbcolor fill } def
-/lfigdarkgrey { 0.2 0.2 0.2 setrgbcolor fill } def
-/lfiggrey { 0.5 0.5 0.5 setrgbcolor fill } def
-/lfiglightgrey { 0.8 0.8 0.8 setrgbcolor fill } def
-/lfigblack { 0.0 0.0 0.0 setrgbcolor fill } def
-/lfigwhite { 1.0 1.0 1.0 setrgbcolor fill } def
-
-% line caps (and joins, not currently used)
-/lfigbutt 0 def
-/lfiground 1 def
-/lfigprojecting 2 def
-/lfigmiter 0 def
-/lfigbevel 2 def
-
-% shape and labels of the @Box symbol
-/lfigbox
-{
- 0 0 /SW lfigpointdef
- xsize 0 /SE lfigpointdef
- xsize ysize /NE lfigpointdef
- 0 ysize /NW lfigpointdef
- SE 0.5 lfigpmul /S lfigpointdef
- NW 0.5 lfigpmul /W lfigpointdef
- W SE lfigpadd /E lfigpointdef
- S NW lfigpadd /N lfigpointdef
- NE 0.5 lfigpmul /CTR lfigpointdef
- [ CTR NE lfigpsub /lfigboxcircum cvx ] lfigcircumdef
- SW SE NE NW SW
-} def
-
-% shape and labels of the @CurveBox symbol
-/lfigcurvebox
-{
-
- xsize 0.5 mul ysize 0.5 mul /CTR lfigpointdef
- xsize 0.5 mul 0 /S lfigpointdef
- xsize ysize 0.5 mul /E lfigpointdef
- xsize 0.5 mul ysize /N lfigpointdef
- 0 ysize 0.5 mul /W lfigpointdef
-
- xmark 0.293 mul xmark 0.293 mul /SW lfigpointdef
- xsize xmark 0.293 mul sub xmark 0.293 mul /SE lfigpointdef
- xsize xmark 0.293 mul sub ysize xmark 0.293 mul sub /NE lfigpointdef
- xmark 0.293 mul ysize xmark 0.293 mul sub /NW lfigpointdef
-
- [ xsize ysize 0.5 lfigpmul xmark /lfigcurveboxcircum cvx ] lfigcircumdef
-
- xmark 0
- xsize xmark sub 0
- [ xsize xmark sub xmark ]
- xsize xmark
- xsize ysize xmark sub
- [ xsize xmark sub ysize xmark sub ]
- xsize xmark sub ysize
- xmark ysize
- [ xmark ysize xmark sub ]
- 0 ysize xmark sub
- 0 xmark
- [ xmark xmark ]
- xmark 0
-} def
-
-% shadow of the @ShadowBox symbol
-% its shape and labels are done, somewhat inaccurately, with lfigbox
-/lfigshadow
-{ xmark 2 mul 0 moveto xsize 0 lineto
- xsize ysize xmark 2 mul sub lineto
- xsize xmark sub ysize xmark 2 mul sub lineto
- xsize xmark sub xmark lineto
- xmark 2 mul xmark lineto closepath fill
-} def
-
-% shape and labels of the @Square symbol
-/lfigsquare
-{
- xsize ysize 0.5 lfigpmul /CTR lfigpointdef
- CTR xsize xsize ysize ysize lfigpmax 0.5 lfigpmul lfigpadd /NE lfigpointdef
- CTR 0 0 CTR NE lfigdistance 135 lfigatangle lfigpadd /NW lfigpointdef
- CTR 0 0 CTR NE lfigdistance 225 lfigatangle lfigpadd /SW lfigpointdef
- CTR 0 0 CTR NE lfigdistance 315 lfigatangle lfigpadd /SE lfigpointdef
- SW 0.5 lfigpmul SE 0.5 lfigpmul lfigpadd /S lfigpointdef
- NW 0.5 lfigpmul NE 0.5 lfigpmul lfigpadd /N lfigpointdef
- SW 0.5 lfigpmul NW 0.5 lfigpmul lfigpadd /W lfigpointdef
- SE 0.5 lfigpmul NE 0.5 lfigpmul lfigpadd /E lfigpointdef
- [ CTR NE lfigpsub /lfigboxcircum cvx ] lfigcircumdef
- SW SE NE NW SW
-} def
-
-% shape and labels of the @Diamond symbol
-/lfigdiamond
-{
- xsize 0 0.5 lfigpmul /S lfigpointdef
- 0 ysize 0.5 lfigpmul /W lfigpointdef
- S W lfigpadd /CTR lfigpointdef
- CTR W lfigpadd /N lfigpointdef
- CTR S lfigpadd /E lfigpointdef
- [ xsize ysize 0.5 lfigpmul /lfigdiamondcircum cvx ] lfigcircumdef
- S E N W S
-} def
-
-% shape and labels of the @Ellipse symbol
-/lfigellipse
-{
- xsize 0 0.5 lfigpmul /S lfigpointdef
- 0 ysize 0.5 lfigpmul /W lfigpointdef
- S W lfigpadd /CTR lfigpointdef
- CTR W lfigpadd /N lfigpointdef
- CTR S lfigpadd /E lfigpointdef
- CTR xsize 0 0.3536 lfigpmul lfigpadd 0 ysize 0.3536 lfigpmul lfigpadd /NE lfigpointdef
- 0 ysize 0.3536 lfigpmul CTR xsize 0 0.3536 lfigpmul lfigpadd lfigpsub /SE lfigpointdef
- xsize 0 0.3536 lfigpmul CTR lfigpsub 0 ysize 0.3536 lfigpmul lfigpadd /NW lfigpointdef
- 0 ysize 0.3536 lfigpmul xsize 0 0.3536 lfigpmul CTR lfigpsub lfigpsub /SW lfigpointdef
- [ xsize ysize 0.5 lfigpmul /lfigellipsecircum cvx ] lfigcircumdef
- S [ CTR ] E [ CTR ] N [ CTR ] W [ CTR ] S
-} def
-
-% shape and labels of the @Circle symbol
-/lfigcircle
-{
- xsize ysize 0.5 lfigpmul /CTR lfigpointdef
- CTR xsize 0 ysize 0 lfigpmax 0.5 lfigpmul lfigpadd /E lfigpointdef
- CTR 0 0 CTR E lfigdistance 45 lfigatangle lfigpadd /NE lfigpointdef
- CTR 0 0 CTR E lfigdistance 90 lfigatangle lfigpadd /N lfigpointdef
- CTR 0 0 CTR E lfigdistance 135 lfigatangle lfigpadd /NW lfigpointdef
- CTR 0 0 CTR E lfigdistance 180 lfigatangle lfigpadd /W lfigpointdef
- CTR 0 0 CTR E lfigdistance 225 lfigatangle lfigpadd /SW lfigpointdef
- CTR 0 0 CTR E lfigdistance 270 lfigatangle lfigpadd /S lfigpointdef
- CTR 0 0 CTR E lfigdistance 315 lfigatangle lfigpadd /SE lfigpointdef
- [ S E lfigpsub /lfigellipsecircum cvx ] lfigcircumdef
- S [ CTR ] E [ CTR ] N [ CTR ] W [ CTR ] S
-} def
-
-% shape and labels of the @HLine and @HArrow symbols
-/lfighline
-{
- 0 ymark lfigprevious /FROM lfigpointdef
- xsize ymark lfigprevious /TO lfigpointdef
-} def
-
-% shape and labels of the @VLine and @VArrow symbols
-/lfigvline
-{
- xmark ysize lfigprevious /FROM lfigpointdef
- xmark 0 lfigprevious /TO lfigpointdef
-} def
-
-% points of a polygon around base with given no of sides, vert init angle:
-% <sides> <angle> figpolygon <point> ... <point>
-/lfigpolygon
-{ xsize ysize 0.5 lfigpmul /CTR lfigpointdef
- 90 sub CTR 2 copy lfigmax 5 3 roll
- [ 4 copy pop /lfigpolycircum cvx ] lfigcircumdef
- exch dup 360 exch div exch
- 1 1 3 2 roll
- { 4 string cvs (P) exch lfigconcat cvn
- 6 copy pop pop lfigatangle 2 copy 10 2 roll
- 3 2 roll lfigpointdef
- dup 3 1 roll add exch
- } for
- pop lfigatangle
-} def
-
-% next array element: <array> <index> lfiggetnext <array> <index> <any> true
-% or <array> <index> false
-/lfiggetnext
-{ 2 copy exch length ge
- { false }
- { 2 copy get exch 1 add exch true } ifelse
-} def
-
-% check whether thing is number: <any> lfigisnumbertype <any> <bool>
-/lfigisnumbertype
-{ dup type dup
- /integertype eq exch /realtype eq or
-} def
-
-% check whether thing is an array: <any> lfigisarraytype <any> <bool>
-/lfigisarraytype { dup type /arraytype eq } def
-
-% get next item: <array> <index> lfiggetnextitem <array> <index> 0
-% or <array> <index> <array> 1
-% or <array> <index> <point> 2
-/lfiggetnextitem
-{ lfiggetnext
- { lfigisarraytype
- { 1
- }
- { lfigisnumbertype
- { 3 1 roll
- lfiggetnext
- { lfigisnumbertype
- { 4 3 roll exch 2
- }
- { pop 3 2 roll pop 0
- } ifelse
- }
- { 3 2 roll pop 0
- } ifelse
- }
- { pop 0
- } ifelse
- } ifelse
- }
- { 0
- } ifelse
-} def
-
-% set arc path: bool x1 y1 x2 y2 x0 y0 lfigsetarc <angle> <angle> <dist>
-% the path goes from x1 y1 to x2 y2 about centre x0 y0,
-% anticlockwise if bool is true else clockwise.
-% The orientations of backwards pointing and forwards pointing
-% arrowheads are returned in the two angles, and
-% the length of the arc is returned in <dist>.
-/lfigsetarc
-{
- 20 dict begin
- matrix currentmatrix 8 1 roll
- 2 copy translate 2 copy 8 2 roll
- 4 2 roll lfigpsub 6 2 roll lfigpsub
- dup /y1 exch def dup mul /y1s exch def
- dup /x1 exch def dup mul /x1s exch def
- dup /y2 exch def dup mul /y2s exch def
- dup /x2 exch def dup mul /x2s exch def
-
- y1s y2s eq
- { -1
- }
- { y1s x2s mul y2s x1s mul sub y1s y2s sub div
- } ifelse
- /da exch def
-
- x1s x2s eq
- { -1
- }
- { x1s y2s mul x2s y1s mul sub x1s x2s sub div
- } ifelse
- /db exch def
-
- da 0 gt db 0 gt and
- { /LMax da sqrt db sqrt lfigmax def
- /scalex da sqrt LMax div def
- /scaley db sqrt LMax div def
- scalex scaley scale
- 0 0 LMax
- 0 0 x1 scalex mul y1 scaley mul lfigangle
- 0 0 x2 scalex mul y2 scaley mul lfigangle
- 2 copy eq { 360 add } if
- 2 copy 8 2 roll
- 5 index { arc } { arcn } ifelse
- 2 index 1 index
- { 90 sub } { 90 add } ifelse
- dup sin scaley mul exch cos scalex mul atan
- 2 index 2 index
- { 90 add } { 90 sub } ifelse
- dup sin scaley mul exch cos scalex mul atan
- 5 2 roll % res1 res2 ang1 ang2 anticlockwise
- { exch sub } { sub } ifelse
- dup 0 le { 360 add } if lfigpi mul LMax mul 180 div
- }
- { 0 0 x1 y1 lfigdistance 0 0 x2 y2 lfigdistance eq
- 0 0 x1 y1 lfigdistance 0 gt and
- { 0 0
- 0 0 x1 y1 lfigdistance
- 0 0 x1 y1 lfigangle
- 0 0 x2 y2 lfigangle
- 2 copy eq { 360 add } if
- 2 copy 8 2 roll
- 5 index { arc } { arcn } ifelse
- 2 index 1 index
- { 90 sub } { 90 add } ifelse
- 2 index 2 index
- { 90 add } { 90 sub } ifelse
- 5 2 roll % res1 res2 ang1 ang2 clockwise
- { exch sub } { sub } ifelse
- dup 0 le { 360 add } if lfigpi mul 0 0 x1 y1 lfigdistance mul 180 div
- }
- { x2 y2 lineto pop
- x2 y2 x1 y1 lfigangle
- x1 y1 x2 y2 lfigangle
- x1 y1 x2 y2 lfigdistance
- } ifelse
- } ifelse
- 4 -1 roll setmatrix
- end
-} def
-
-% lfigsetcurve: set up a Bezier curve from x0 y0 to x3 y3
-% and return arrowhead angles and length of curve (actually 0)
-% x0 y0 x1 y1 x2 y2 x3 y3 lfigsetcurve <angle> <angle> <length>
-/lfigsetcurve
-{ 8 copy curveto pop pop
- lfigangle
- 5 1 roll
- 4 2 roll lfigangle
- exch
- 0
-} def
-
-% lfigpaintpath: paint a path of the given shape
-% /paint [ shape ] lfigpaintpath -
-/lfigpaintpath
-{
- 10 dict begin
- 0 newpath
- /prevseen false def
- /curveseen false def
- { lfiggetnextitem
- dup 0 eq { pop exit }
- { 1 eq
- { /curveseen true def
- /curve exch def
- curve length 0 eq { /curveseen false def } if
- }
- { /ycurr exch def
- /xcurr exch def
- prevseen
- { curveseen
- { curve length 4 eq
- { xprev yprev
- curve 0 get curve 1 get
- curve 2 get curve 3 get
- xcurr ycurr
- lfigsetcurve pop pop pop
- }
- { xprev yprev xcurr ycurr
- curve length 1 ge { curve 0 get } { 0 } ifelse
- curve length 2 ge { curve 1 get } { 0 } ifelse
- curve length 3 ge { curve 2 get } { true } ifelse
- 7 1 roll
- lfigsetarc pop pop pop
- } ifelse
- }
- { xcurr ycurr lineto
- } ifelse
- }
- { xcurr ycurr moveto
- } ifelse
- /xprev xcurr def
- /yprev ycurr def
- /prevseen true def
- /curveseen false def
- } ifelse
- } ifelse
- } loop pop pop cvx exec
- end
-} def
-
-% stroke a path of the given shape in the given linestyle and dash length.
-% Return the origin and angle of the backward and forward arrow heads.
-% dashlength /linestyle [shape] lfigdopath [<point> <angle>] [<point> <angle>]
-/lfigdopath
-{
- 10 dict begin
- 0
- /prevseen false def
- /curveseen false def
- /backarrow [] def
- /fwdarrow [] def
- {
- lfiggetnextitem
- dup 0 eq { pop exit }
- {
- 1 eq
- { /curveseen true def
- /curve exch def
- curve length 0 eq { /prevseen false def } if
- }
- { /ycurr exch def
- /xcurr exch def
- prevseen
- { newpath xprev yprev moveto
- curveseen
- { curve length 4 eq
- { xprev yprev
- curve 0 get curve 1 get
- curve 2 get curve 3 get
- xcurr ycurr lfigsetcurve
- }
- { xprev yprev xcurr ycurr
- curve length 1 ge { curve 0 get } { 0 } ifelse
- curve length 2 ge { curve 1 get } { 0 } ifelse
- curve length 3 ge { curve 2 get } { true } ifelse
- 7 1 roll
- lfigsetarc
- } ifelse
- }
- { xcurr ycurr lineto
- xcurr ycurr xprev yprev lfigangle dup 180 sub
- xprev yprev xcurr ycurr lfigdistance
- } ifelse
- 6 index 6 index cvx exec
- [ xprev yprev 5 -1 roll ]
- backarrow length 0 eq
- { /backarrow exch def }
- { pop } ifelse
- [ xcurr ycurr 4 -1 roll ] /fwdarrow exch def
- } if
- /xprev xcurr def
- /yprev ycurr def
- /prevseen true def
- /curveseen false def
- } ifelse
- } ifelse
- } loop
- pop pop pop pop
- backarrow length 0 eq { [ 0 0 0 ] } { backarrow } ifelse
- fwdarrow length 0 eq { [ 0 0 0 ] } { fwdarrow } ifelse
- end
-} def
-
-% lfigdoarrow: draw an arrow head of given form
-% dashlength /lstyle /pstyle hfrac height width [ <point> <angle> ] lfigdoarrow -
-/lfigdoarrow
-{ matrix currentmatrix 8 1 roll
- dup 0 get 1 index 1 get translate
- 2 get rotate
- [ 2 index neg 2 index 0 0
- 3 index 3 index neg
- 1 index 10 index mul 0
- 7 index 7 index ]
- 4 1 roll pop pop pop
- dup 3 1 roll
- gsave lfigpaintpath grestore lfigdopath pop pop
- setmatrix
-} def
-
-% arrow head styles
-/lfigopen 0.0 def
-/lfighalfopen 0.5 def
-/lfigclosed 1.0 def
-
-% stroke no arrows, forward, back, and both
-/lfignoarrow { pop pop pop pop pop pop pop pop } def
-/lfigforward { 7 -1 roll lfigdoarrow pop } def
-/lfigback { 8 -2 roll pop lfigdoarrow } def
-/lfigboth { 8 -1 roll 7 copy lfigdoarrow pop 7 -1 roll lfigdoarrow } def
-
-% lfigprevious: return previous point on path
-/lfigprevious
-{ lfigisnumbertype
- { 2 copy }
- { lfigisarraytype
- { 2 index 2 index }
- { 0 0 }
- ifelse
- } ifelse
-} def
-
-% label a point in 2nd top dictionary: <point> /name lfigpointdef -
-/lfigpointdef
-{
- % (Entering lfigpointdef) lfigdebugprint
- [ 4 2 roll transform
- /itransform cvx ] cvx
- currentdict end
- 3 1 roll
- % currentdict length currentdict maxlength lt
- % { def }
- % { exec moveto (too many labels) show stop }
- % ifelse
- def
- begin
- % (Leaving lfigpointdef) lfigdebugprint
-} def
-
-% promote labels from second top to third top dictionary
-% <string> lfigpromotelabels -
-/lfigpromotelabels
-{
- % (Entering lfigpromotelabels) lfigdebugprint
- currentdict end exch currentdict end
- { exch 20 string cvs 2 index
- (@) lfigconcat exch lfigconcat cvn exch def
- } forall pop begin
- % (Leaving lfigpromotelabels) lfigdebugprint
-} def
-
-% show labels (except CIRCUM): - lfigshowlabels -
-/lfigshowlabels
-{
- % (Entering lfigshowlabels) lfigdebugprint
- currentdict end
- currentdict
- { 1 index 20 string cvs (CIRCUM) search % if CIRCUM in key
- { pop pop pop pop pop }
- { pop cvx exec 2 copy
- newpath 1.5 pt 0 360 arc
- 0 setgray fill
- /Times-Roman findfont 8 pt scalefont setfont
- moveto 0.2 cm 0.1 cm rmoveto 20 string cvs show
- }
- ifelse
- } forall
- begin
- % (Leaving lfigshowlabels) lfigdebugprint
-} def
-
-% fix an angle to 0 <= res < 360: <angle> lfigfixangle <angle>
-/lfigfixangle
-{
- % (Entering lfigfixangle) lfigdebugprint
- { dup 0 ge { exit } if
- 360 add
- } loop
- { dup 360 lt { exit } if
- 360 sub
- } loop
- % (Leaving lfigfixangle) lfigdebugprint
-} def
-
-% find point on circumference of box: alpha a b lfigboxcircum x y
-/lfigboxcircum
-{
- % (Entering lfigboxcircum) lfigdebugprint
- 4 dict begin
- /b exch def
- /a exch def
- lfigfixangle /alpha exch def
- 0 0 a b lfigangle /theta exch def
-
- % if alpha <= theta, return (a, a*tan(alpha))
- alpha theta le
- { a a alpha sin mul alpha cos div }
- {
- % else if alpha <= 180 - theta, return (b*cot(alpha), b)
- alpha 180 theta sub le
- { b alpha cos mul alpha sin div b }
- {
- % else if alpha <= 180 + theta, return (-a, -a*tan(alpha))
- alpha 180 theta add le
- { a neg a neg alpha sin mul alpha cos div }
- {
- % else if alpha <= 360 - theta, return (-b*cot(alpha), -b)
- alpha 360 theta sub le
- { b neg alpha cos mul alpha sin div b neg }
- {
- % else 360 - theta <= alpha, return (a, a*tan(alpha))
- a a alpha sin mul alpha cos div
- } ifelse
- } ifelse
- } ifelse
- } ifelse
- end
- % (Leaving lfigboxcircum) lfigdebugprint
-} def
-
-% find quadratic roots (assume a != 0): a b c lfigqroots x1 x2 2
-% or x2 1
-% or 0
-/lfigqroots
-{
- 4 dict begin
- /c exch def
- /b exch def
- /a exch def
- /disc b b mul 4 a c mul mul sub def
- disc 0 lt
- { 0
- }
- { disc 0 eq
- { b neg 2 a mul div
- 1
- }
- { b neg disc sqrt add 2 a mul div
- b neg disc sqrt sub 2 a mul div
- 2
- }
- ifelse
- }
- ifelse
- end
-} def
-
-% work our which quadrant: <angle> lfigquadrant <0-3>
-/lfigquadrant
-{ dup 90 lt
- { pop 0
- }
- { dup 180 lt
- { pop 1
- }
- { 270 lt
- { 2
- }
- { 3
- } ifelse
- } ifelse
- } ifelse
-} def
-
-% find curvebox circum, assuming upper right quadrant: alpha a b xmk lfigcb x y
-/lfigcb
-{
- 6 dict begin
- /xmk exch def
- /b exch def
- /a exch def
- /alpha exch def
- /theta1 0 0 a b xmk sub lfigangle def
- /theta2 0 0 a xmk sub b lfigangle def
- alpha theta1 le
- { % if alpha <= theta1, return (a, a*tan(alpha))
- a a alpha sin mul alpha cos div
- }
- { alpha theta2 ge
- { % else if alpha > theta2, return (b*cot(alpha), b)
- b alpha cos mul alpha sin div b
- }
- {
- % else, return the intersection of line and circle
- a xmk sub b xmk sub xmk 0 0 alpha lfigcircleintersect
- dup 0 eq
- { % should never happen, just return any reasonable point
- pop
- a b 0.5 lfigpmul
- }
- { 1 eq
- { % should never happen, just return the point on top of stack
- }
- { % the usual case, two points on stack, return the larger
- lfigpmax
- } ifelse
- } ifelse
- } ifelse
- } ifelse
- end
-} def
-
-% find point on circumference of curvebox: alpha a b xmk lfigcurveboxcircum x y
-/lfigcurveboxcircum
-{
- % (Entering lfigcurveboxcircum) lfigdebugprint
- 5 dict begin
- /xmk exch def
- /b exch def
- /a exch def
- lfigfixangle /alpha exch def
-
- % work out which quadrant we are in, and reflect accordingly
- /quad alpha lfigquadrant def
- quad 0 eq
- { alpha a b xmk lfigcb
- }
- { quad 1 eq
- { 180 alpha sub a b xmk lfigcb exch neg exch
- }
- { quad 2 eq
- { alpha 180 sub a b xmk lfigcb neg exch neg exch
- }
- { 360 alpha sub a b xmk lfigcb neg
- } ifelse
- } ifelse
- } ifelse
- end
- % (Leaving lfigcurveboxcircum) lfigdebugprint
-} def
-
-% find point on circumference of diamond: alpha a b lfigdiamondcircum x y
-/lfigdiamondcircum
-{
- % (Entering lfigdiamondcircum) lfigdebugprint
- 4 dict begin
- /b exch def
- /a exch def
- lfigfixangle /alpha exch def
- b alpha cos abs mul a alpha sin abs mul add /denom exch def
- a b mul alpha cos mul denom div
- a b mul alpha sin mul denom div
- end
- % (Leaving lfigdiamondcircum) lfigdebugprint
-} def
-
-% find point on circumference of ellipse: alpha a b lfigellipsecircum x y
-/lfigellipsecircum
-{
- % (Entering lfigellipsecircum) lfigdebugprint
- 4 dict begin
- /b exch def
- /a exch def
- lfigfixangle /alpha exch def
- b alpha cos mul dup mul a alpha sin mul dup mul add sqrt /denom exch def
- a b mul alpha cos mul denom div
- a b mul alpha sin mul denom div
- end
- % (Leaving lfigellipsecircum) lfigdebugprint
-} def
-
-% find point of intersection of two lines each defined by two points
-% x1 y1 x2 y2 x3 y3 x4 y4 lfiglineintersect x y
-/lfiglineintersect
-{
- % (Entering lfiglineintersect) lfigdebugprint
- 13 dict begin
- /y4 exch def
- /x4 exch def
- /y3 exch def
- /x3 exch def
- /y2 exch def
- /x2 exch def
- /y1 exch def
- /x1 exch def
- x2 x1 sub /x21 exch def
- x4 x3 sub /x43 exch def
- y2 y1 sub /y21 exch def
- y4 y3 sub /y43 exch def
- y21 x43 mul y43 x21 mul sub /det exch def
-
- % calculate x
- y21 x43 mul x1 mul
- y43 x21 mul x3 mul sub
- y3 y1 sub x21 mul x43 mul add
- det div
-
- % calculate y
- x21 y43 mul y1 mul
- x43 y21 mul y3 mul sub
- x3 x1 sub y21 mul y43 mul add
- det neg div
-
- end
- % (Leaving lfiglineintersect) lfigdebugprint
-} def
-
-% find point on circumference of polygon
-% alpha radius num theta lfigpolycircum x y
-/lfigpolycircum
-{
- % (Entering lfigpolycircum) lfigdebugprint
- 13 dict begin
- /theta exch def
- /num exch def
- /radius exch def
- /alpha exch def
-
- % calculate delta, the angle from theta to alpha
- alpha theta sub lfigfixangle
-
- % calculate the angle which is the multiple of 360/num closest to delta
- 360 num div div truncate 360 num div mul theta add /anglea exch def
-
- % calculate the next multiple of 360/num after anglea
- anglea 360 num div add /angleb exch def
-
- % intersect the line through these two points with the alpha line
- anglea cos anglea sin angleb cos angleb sin
- 0 0 alpha cos 2 mul alpha sin 2 mul
- lfiglineintersect radius lfigpmul
-
- end
- % (Leaving lfigpolycircum) lfigdebugprint
-} def
-
-% find point of intersection of a point and a circle
-% x0 y0 r x1 y1 theta lfigcircleintersect xa ya xb yb 2
-% or xb yb 1
-% or 0
-/lfigcircleintersect
-{
- % (Entering lfigcircleintersect) lfigdebugprint
- 15 dict begin
- /theta exch def
- /y1 exch def
- /x1 exch def
- /r exch def
- /y0 exch def
- /x0 exch def
-
- % if sin(theta) = 0 then line is horizontal and y must be y1
- theta sin abs 0.00001 lt
- {
- /a 1 def
- /b -2 x0 mul def
- /c x0 dup mul y1 y0 sub dup mul add r dup mul sub def
- a b c lfigqroots dup
- 0 eq
- { pop
- 0
- }
- { 1 eq
- { y1 1
- }
- { y1 exch y1 2
- } ifelse
- } ifelse
- }
- {
- /ct theta cos theta sin div def
- /a ct ct mul 1 add def
- /b ct x1 x0 sub mul y1 add y0 sub 2 mul def
- /c x1 x0 sub dup mul y1 y0 sub dup mul add r dup mul sub def
- a b c lfigqroots dup
- 0 eq
- { pop
- 0
- }
- { 1 eq
- { y1 add /yb exch def
- yb y1 sub ct mul x1 add /xb exch def
- xb yb 1
- }
- { y1 add /ya exch def
- ya y1 sub ct mul x1 add /xa exch def
- y1 add /yb exch def
- yb y1 sub ct mul x1 add /xb exch def
- xa ya xb yb 2
- } ifelse
- } ifelse
- } ifelse
- end
- % (Leaving lfigcircleintersect) lfigdebugprint
-} def
-
-% add CIRCUM operator with this body: <array> lfigcircumdef -
-/lfigcircumdef
-{ % (Entering lfigcircumdef) lfigdebugprint
- /CIRCUM exch cvx
- currentdict end
- 3 1 roll
- % currentdict length currentdict maxlength lt
- % { def }
- % { exec moveto (too many labels) show stop }
- % ifelse
- def
- begin
- % (Leaving lfigcircumdef) lfigdebugprint
-} def
-
-end
-%%EndResource
-
-%%BeginResource: procset LoutGraphPrependGraphic
-% @PrependGraphic file /export/home/6monthspace/jeff/lout.lib/include/graphf.lpg
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% %
-% PostScript @SysPrependGraphic file for @Graph (Version 1.0) %
-% %
-% Version 1.0 by Jeffrey H. Kingston, December 1993. %
-% %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-errordict begin
- /handleerror
- {
- { /Times-Roman findfont 8 pt scalefont setfont
- 0 setgray 4 pt 4 pt moveto
- $error /errorname get
- dup lgraphdict exch known
- { lgraphdict exch get }
- { 30 string cvs } ifelse
- show
- ( Command: ) show
- $error /command get 30 string cvs show
- } stopped {} if
- showpage stop
- } def
-end
-
-/lgraphdict 200 dict def
-lgraphdict begin
-
-% error messages
-/dictfull (dictfull error) def
-/dictstackoverflow (dictstackoverflow error) def
-/execstackoverflow (execstackoverflow error: expression too complex?) def
-/limitcheck (limitcheck error: graph too complex or too large?) def
-/syntaxerror (syntaxerror error: syntax error in text of graph?) def
-/typecheck (typecheck error: syntax error in text of graph?) def
-/undefined (undefined error: unknown or misspelt symbol?) def
-/rangecheck (rangecheck error: undefined expression (e.g. divide by zero)?) def
-/VMError (VMError error: run out of memory?) def
-
-% random number between x and y inclusive: x y dorand num
-/dorand { 1 index sub 1 add rand exch mod add } def
-
-% log to given base: base num dolog num
-/dolog { ln exch ln div } def
-
-% maximum of two numbers: <num> <num> max <num>
-/max { 2 copy gt { pop } { exch pop } ifelse } def
-
-% add two points: <point> <point> padd <point>
-/padd { exch 3 1 roll add 3 1 roll add exch } def
-
-% subtract first point from second: <point> <point> psub <point>
-/psub { 3 2 roll sub 3 1 roll exch sub exch } def
-
-% distance between two points: <point> <point> distance <length>
-/distance { psub dup mul exch dup mul add sqrt } def
-
-% point at angle and distance: <point> <length> <angle> atangle <point>
-/atangle { 2 copy cos mul 3 1 roll sin mul padd } def
-
-% angle from one point to another: <point> <point> angle <angle>
-/angle { psub 2 copy 0 eq exch 0 eq and {pop} {exch atan} ifelse } def
-
-
-% set up for line
-% - linesetup <length> <dashlength>
-/linesetup
-{ newpath
- xcurr ycurr trpoint xprev yprev trpoint
- 4 copy moveto lineto distance dashlength
-} def
-
-% set up for icon-avoiding line
-% - ilinesetup <length> <dashlength>
-/ilinesetup
-{ newpath
- xprev yprev trpoint xcurr ycurr trpoint 4 copy
- 4 copy angle symbolsize 1.5 mul exch 4 2 roll pop pop atangle
- 6 2 roll 4 2 roll
- 4 copy angle symbolsize 1.5 mul exch 4 2 roll pop pop atangle
- 4 copy moveto lineto distance dashlength
-} def
-
-
-% stroke a solid line: <length> <dashlength> solid -
-/solid
-{ pop pop [] 0 setdash linewidth setlinewidth stroke
-} def
-
-% stroke a dashed line: <length> <dashlength> dashed -
-/dashed
-{ 2 copy 2 mul le 1 index 0 le or
- { exch pop 1 pt max [ exch dup ] 0 setdash }
- { dup [ exch 4 2 roll 2 copy div
- 1 sub 2 div ceiling dup 4 1 roll
- 1 add mul sub exch div ] 0 setdash
- } ifelse linewidth setlinewidth stroke
-} def
-
-% stroke a cdashed line: <length> <dashlength> cdashed -
-/cdashed
-{ 2 copy le 1 index 0 le or
- { exch pop 1 pt max [ exch dup ] dup 0 get 2 div setdash }
- { dup [ 4 2 roll exch 2 copy exch div
- 2 div ceiling div 1 index sub
- ] exch 2 div setdash
- } ifelse linewidth setlinewidth stroke
-} def
-
-% stroke a dotted line: <length> <dashlength> dotted -
-/dotted
-{ 2 copy le 1 index 0 le or
- { exch pop 1 pt max [ exch 0 exch ] 0 setdash }
- { 1 index exch div ceiling div 0.99999 mul
- [ 0 3 2 roll ] 0 setdash
- } ifelse gsave 1 setlinecap linewidth setlinewidth stroke grestore newpath
-} def
-
-% stroke a noline line: <length> <dashlength> noline -
-/noline
-{ pop pop
-} def
-
-% stroke a y histogram: - yhisto -
-/yhisto
-{ xprev yleft trpoint yextra sub moveto
- xprev yprev trpoint lineto
- xcurr yprev trpoint lineto
- xcurr yleft trpoint yextra sub lineto
- linewidth setlinewidth stroke
-} def
-
-% stroke an x histogram: - xhisto -
-/xhisto
-{ xleft yprev trpoint exch xextra sub exch moveto
- xcurr yprev trpoint lineto
- xcurr ycurr trpoint lineto
- xleft ycurr trpoint exch xextra sub exch lineto
- linewidth setlinewidth stroke
-} def
-
-% stroke a surface y histogram: - surfaceyhisto -
-/surfaceyhisto
-{ firstpair
- { xprev yleft trpoint yextra sub moveto
- xprev yprev trpoint lineto
- }
- { xprev yprev trpoint moveto
- } ifelse
- xcurr yprev trpoint lineto
- lastpair
- { xcurr yleft trpoint yextra sub lineto
- }
- { xcurr ycurr trpoint lineto
- } ifelse
- linewidth setlinewidth stroke
-} def
-
-% stroke a surface x histogram: - surfacexhisto -
-/surfacexhisto
-{ firstpair
- { xleft yprev trpoint exch xextra sub exch moveto
- }
- { xprev yprev trpoint moveto
- } ifelse
- xcurr yprev trpoint lineto
- xcurr ycurr trpoint lineto
- lastpair
- { xleft ycurr trpoint exch xextra sub exch lineto
- } if
- linewidth setlinewidth stroke
-} def
-
-% stroke a filled y histogram: - filledyhisto -
-/filledyhisto
-{
- linewidth setlinewidth
- xprev yleft trpoint exch currentlinewidth 2 div add exch yextra sub moveto
- xprev yprev trpoint exch currentlinewidth 2 div add exch lineto
- xcurr yprev trpoint exch currentlinewidth 2 div sub exch lineto
- xcurr yleft trpoint exch currentlinewidth 2 div sub exch yextra sub lineto
- closepath fill
-} def
-
-% stroke a filled x histogram: - filledxhisto -
-/filledxhisto
-{
- linewidth setlinewidth
- xleft yprev trpoint currentlinewidth 2 div add exch xextra sub exch moveto
- xcurr yprev trpoint currentlinewidth 2 div add lineto
- xcurr ycurr trpoint currentlinewidth 2 div sub lineto
- xleft ycurr trpoint currentlinewidth 2 div sub exch xextra sub exch lineto
- closepath fill
-} def
-
-
-% cross: show a small cross
-/cross
-{ newpath
- xcurr ycurr trpoint moveto
- symbolsize neg symbolsize neg rmoveto
- symbolsize 2 mul symbolsize 2 mul rlineto
- 0 symbolsize -2 mul rmoveto
- symbolsize -2 mul symbolsize 2 mul rlineto
- [] 0 setdash stroke
-} def
-
-% plus: show a small plus
-/plus
-{ newpath
- xcurr ycurr trpoint moveto
- symbolsize neg 0 rmoveto
- symbolsize 2 mul 0 rlineto
- symbolsize neg symbolsize neg rmoveto
- 0 symbolsize 2 mul rlineto
- [] 0 setdash stroke
-} def
-
-% square: show a small square
-/square
-{ newpath
- xcurr ycurr trpoint moveto
- symbolsize neg symbolsize neg rmoveto
- symbolsize 2 mul 0 rlineto
- 0 symbolsize 2 mul rlineto
- symbolsize -2 mul 0 rlineto
- closepath [] 0 setdash stroke
-} def
-
-% filledsquare: show a small filled square
-/filledsquare
-{ newpath
- xcurr ycurr trpoint moveto
- symbolsize neg symbolsize neg rmoveto
- symbolsize 2 mul 0 rlineto
- 0 symbolsize 2 mul rlineto
- symbolsize -2 mul 0 rlineto
- closepath gsave [] 0 setdash stroke grestore fill
-} def
-
-% diamond: show a small diamond
-/diamond
-{ newpath
- xcurr ycurr trpoint moveto
- symbolsize neg 0 rmoveto
- symbolsize symbolsize neg rlineto
- symbolsize symbolsize rlineto
- symbolsize neg symbolsize rlineto
- closepath [] 0 setdash stroke
-} def
-
-% filleddiamond: show a small filled diamond
-/filleddiamond
-{ newpath
- xcurr ycurr trpoint moveto
- symbolsize neg 0 rmoveto
- symbolsize symbolsize neg rlineto
- symbolsize symbolsize rlineto
- symbolsize neg symbolsize rlineto
- closepath gsave [] 0 setdash stroke grestore fill
-} def
-
-% circle: show a small circle
-/circle
-{ newpath
- xcurr ycurr trpoint symbolsize 0 360 arc [] 0 setdash stroke
-} def
-
-% filledcircle: show a small filled circle
-/filledcircle
-{ newpath
- xcurr ycurr trpoint symbolsize 0 360 arc gsave [] 0 setdash stroke grestore fill
-} def
-
-% triangle: show a small triangle
-/triangle
-{ newpath
- xcurr ycurr trpoint moveto
- 0 symbolsize 1.5 mul rmoveto
- symbolsize neg symbolsize -2.5 mul rlineto
- symbolsize 2 mul 0 rlineto
- closepath [] 0 setdash stroke
-} def
-
-% filledtriangle: show a small filled triangle
-/filledtriangle
-{ newpath
- xcurr ycurr trpoint moveto
- 0 symbolsize 1.5 mul rmoveto
- symbolsize neg symbolsize -2.5 mul rlineto
- symbolsize 2 mul 0 rlineto
- closepath gsave [] 0 setdash stroke grestore fill
-} def
-
-
-%plog: like log only with a base, and protected from failing if <= 0
-% base x plog res
-/plog { dup 0 le { pop pop 0 } { ln exch ln div } ifelse } def
-
-% xtr: transform one x value logarithmically if xlog > 1
-% <num> xtr <num>
-/xtr
-{ xlog 1 gt
- { xlog exch plog
- } if
-} def
-
-% ytr: transform one y value logarithmically if ylog > 1
-% <num> ytr <num>
-/ytr
-{ ylog 1 gt
- { ylog exch plog
- } if
-} def
-
-% % trpoint: transform (x, y) in graph space into (x', y') in print space
-% % x y trpoint x' y'
-% /trpoint
-% { exch xtr trxmin sub trxmax trxmin sub div xwidth mul xextra add
-% exch ytr trymin sub trymax trymin sub div ywidth mul yextra add
-% } def
-
-
-% trpoint: transform (x, y) in graph space into (x', y') in print space
-% x y trpoint x' y'
-/trpoint
-{ exch xtr xdecr { trxmax exch sub } { trxmin sub } ifelse
- trxmax trxmin sub div xwidth mul xextra add
-
- exch ytr ydecr { trymax exch sub } { trymin sub } ifelse
- trymax trymin sub div ywidth mul yextra add
-} def
-
-
-% yonly: interpolate x values 1, 2, ... into data
-% [ data ] yonly [ newdata ]
-/yonly
-{ dup /tmp exch def
- length [ exch 1 exch 1 exch
- { dup tmp exch 1 sub get
- } for
- ]
-} def
-
-% xonly: interpolate y values 1, 2, ... into data
-% [ data ] yonly [ newdata ]
-/xonly
-{ dup /tmp exch def
- length [ exch 1 exch 1 exch
- { dup tmp exch 1 sub get exch
- } for
- ]
-} def
-
-% xandy: no interpolation of x or y values
-% [ data ] xandy [ data ]
-/xandy {} def
-
-
-% expstringwidth: calculate width of string containing optional exponent
-% <string> expstringwidth <width>
-/expstringwidth
-{ (^) search
- { exch pop stringwidth pop exch stringwidth pop 0.7 mul add }
- { stringwidth pop }
- ifelse
-} def
-
-% expstringshow: show string containing optional exponent
-% <string> expstringshow -
-/expstringshow
-{ (^) search
- { exch pop show 0 0.5 ft rmoveto
- gsave currentfont 0.7 scalefont setfont show grestore
- }
- { show
- }
- ifelse
-} def
-
-% concatenate two strings: <string> <string> strconcat <string>
-/strconcat
-{ 2 copy length exch length add string
- dup 0 4 index putinterval
- dup 3 index length 3 index putinterval
- 3 1 roll pop pop
-} def
-
-% lgen: generate one label automatically
-% num lgen num string
-/lgen { dup 20 string cvs } def
-
-% loglgen: generate one logarithmic label (with exponent)
-% <base> <exponent> loglgen <string>
-/loglgen
-{ 20 string cvs exch 20 string cvs
- (^) strconcat exch strconcat
-} def
-
-
-% printxtick: print one x tick
-% xpos printxtick -
-/printxtick
-{ newpath
- yleft trpoint moveto 0 yextra neg rmoveto
- 0 xticklength neg rlineto [] 0 setdash stroke
-} def
-
-% printxlabel: print one x label
-% (xlabel) xpos printxlabel -
-/printxlabel
-{ yleft trpoint moveto 0 yextra neg rmoveto
- 0 xticklength neg rmoveto 0 0.9 ft neg rmoveto
- xlog 1 gt { 0 0.3 ft neg rmoveto } if
- dup expstringwidth -2 div 0 rmoveto expstringshow
-} def
-
-% printytick: print one y tick
-% ypos printytick -
-/printytick
-{ newpath
- xleft exch trpoint moveto xextra neg 0 rmoveto
- yticklength neg 0 rlineto [] 0 setdash stroke
-} def
-
-% printylabel: print one y label
-% (ylabel) ypos printylabel -
-/printylabel
-{ xleft exch trpoint moveto xextra neg 0 rmoveto
- yticklength neg 0 rmoveto -0.3 ft -0.3 ft rmoveto
- dup expstringwidth neg 0 rmoveto expstringshow
-} def
-
-% printrtick: print one r tick
-% ypos printrtick -
-/printrtick
-{ newpath
- xright exch trpoint moveto xextra 0 rmoveto
- rticklength 0 rlineto [] 0 setdash stroke
-} def
-
-% printrlabel: print one r label
-% (rlabel) ypos printrlabel -
-/printrlabel
-{ xright exch trpoint moveto xextra 0 rmoveto
- rticklength 0 rmoveto 0.3 ft -0.3 ft rmoveto
- expstringshow
-} def
-
-% printticks: print ticks and labels
-% /tickproc /labelproc [ tickandlabeldata ] min printticks -
-/printticks
-{ /prev exch def
- { dup type dup dup /integertype eq exch /realtype eq or
- { pop dup /prev exch def 2 index cvx exec
- }
- { /stringtype eq
- { prev 2 index cvx exec
- }
- { pop
- } ifelse
- } ifelse
- } forall
- pop pop
-} def
-
-
-% printxaxistick: print one x axis tick
-% xpos printxaxistick -
-/printxaxistick
-{ newpath
- yaxis trpoint moveto 0 xticklength -2 div rmoveto
- 0 xticklength rlineto [] 0 setdash stroke
-} def
-
-% printxaxislabel: print one x axis label
-% (xlabel) xpos printxaxislabel -
-/printxaxislabel
-{ yaxis trpoint moveto
- 0 xticklength -2 div rmoveto 0 0.9 ft neg rmoveto
- xlog 1 gt { 0 0.3 ft neg rmoveto } if
- dup expstringwidth -2 div 0 rmoveto expstringshow
-} def
-
-% printyaxistick: print one y axis tick
-% ypos printyaxistick -
-/printyaxistick
-{ newpath
- xaxis exch trpoint moveto
- yticklength -2 div 0 rmoveto
- yticklength 0 rlineto [] 0 setdash stroke
-} def
-
-% printyaxislabel: print one y axis label
-% (ylabel) ypos printyaxislabel -
-/printyaxislabel
-{ xaxis exch trpoint moveto
- yticklength -2 div 0 rmoveto -0.3 ft -0.3 ft rmoveto
- dup expstringwidth neg 0 rmoveto expstringshow
-} def
-
-
-% <val> minmax -
-% perform minv := min(minv, val); maxv := max(maxv, val)
-% allowing for the possibility of minv, maxv, val being false (undefined)
-/minmax
-{ dup false eq
- { pop }
- { minv false eq
- { dup /minv exch def /maxv exch def }
- { dup minv lt
- { /minv exch def }
- { dup maxv gt
- { /maxv exch def }
- { pop }
- ifelse
- } ifelse
- } ifelse
- } ifelse
-} def
-
-% <ticks> ticksundef <ticks> <bool>
-% returns true iff the ticks array is undefined (one false entry)
-/ticksundef
-{ dup length 1 eq
- { dup 0 get false eq
- }
- { false }
- ifelse
-} def
-
-% <number> integral <boolean>
-% true if the number has an integral value
-/integral { dup round eq } def
-
-% ticksep ticks xory alldata minval maxval axis base ticksandlimits ticks min max base
-% ticksandlimits: sort out value of x or y ticks and limits and log base
-/ticksandlimits
-{ /base exch def
- /minv false def
- /maxv false def
-
- % min and max of user-supplied minval, maxval, and axis
- minmax minmax minmax
-
- % min and max of data points
- { 0 get dup dup length 1 sub 3 index exch 2 exch
- { get minmax dup
- } for pop pop
- } forall
- pop dup
-
- % min and max of tick values
- { dup type /stringtype eq
- { pop } { minmax } ifelse
- } forall
-
- % fix minv and maxv if undefined (false) or equal
- minv false eq
- { /minv -1 def /maxv 1 def }
- { minv maxv eq
- { minv 0 lt
- { /minv 2 minv mul def /maxv 0 def
- }
- { minv 0 eq
- { /minv -1 def /maxv 1 def
- }
- { /minv 0 def /maxv 2 maxv mul def
- } ifelse
- } ifelse
- } if
- } ifelse
-
- % invent ticks if undefined
- ticksundef
- { pop /ticksep exch def
-
- % if base is reasonable and minv is positive, logarithmic ticks
- base 1 gt minv 0 gt and
- {
- % get integral log of minv and maxv
- /logminv base minv plog floor cvi def
- /logmaxv base maxv plog ceiling cvi def
-
- % if minv close to base, make it 1; reset minv and maxv
- logminv 1 eq logmaxv 4 ge and { /logminv 0 def } if
- /minv base logminv exp def
- /maxv base logmaxv exp def
-
- % ticks := [ base**logminv, ... , base**logmaxv ]
- [ logminv 1 logmaxv
- { dup base exch exp
- exch base exch loglgen
- } for
- ]
- }
- { % non-logarithmic ticks
- {
- % fix tick separation if undefined (0) or too small
- /base 0 def
- /delta maxv minv sub def
- ticksep delta 30 div le
- { /ticksep 10 delta log 1 sub ceiling exp def
- ticksep delta 2 div ge
- { /ticksep ticksep 2 div def }
- { ticksep delta 5 div lt
- { /ticksep 2 ticksep mul def
- } if
- } ifelse
- } if
-
- % adjust minv and maxv to be multiples of ticksep
- /minv minv ticksep div floor ticksep mul def
- /maxv maxv ticksep div ceiling ticksep mul def
- /delta maxv minv sub def
-
- % if minv or maxv near zero, move to zero and redo
- minv ticksep eq
- { /minv 0 def }
- { maxv ticksep neg eq { /maxv 0 def } { exit } ifelse
- } ifelse
- } loop
-
- % if minv, maxv, and ticksep are all integral, set "makeint" to true
- /makeint minv integral maxv integral ticksep integral and and def
-
- % ticks := [ minv, minv+ticksep, ... , maxv ]
- [ 0 1 delta ticksep div round
- { ticksep mul minv add makeint { cvi } if lgen }
- for
- ]
- } ifelse
- }
- { exch pop
- } ifelse
- minv maxv base
-} def
-
-% xset: set up all data for x axis, including limits and ticks
-% xticksep xticks 0 alldata xmin xmax xlog xextra xdecr xaxis xticklength xset -
-/xset
-{ /xticklength exch def
- /xaxis exch def
- /xdecr exch def
- /xextra exch def
- xaxis exch ticksandlimits
- /xlog exch def /xmax exch def /xmin exch def /xticks exch def
- /xleft xdecr { xmax } { xmin } ifelse def
- /xright xdecr { xmin } { xmax } ifelse def
- /xwidth xsize xextra 2 mul sub def
- /trxmin xmin xtr def /trxmax xmax xtr def
-} def
-
-% yset: set up all data for y axis, including limits and yticks
-% yticksep yticks 0 alldata ymin ymax ylog yextra ydecr yaxis yticklength yset -
-/yset
-{ /yticklength exch def
- /yaxis exch def
- /ydecr exch def
- /yextra exch def
- yaxis exch ticksandlimits
- /ylog exch def /ymax exch def /ymin exch def /yticks exch def
- /yleft ydecr { ymax } { ymin } ifelse def
- /yright ydecr { ymin } { ymax } ifelse def
- /ywidth ysize yextra 2 mul sub def
- /trymin ymin ytr def /trymax ymax ytr def
-} def
-
-% rset: set up all data for y axis (again), but including limits and rticks
-% rticksep rticks 0 alldata ymin ymax ylog yextra ydecr yaxis rticklength rset -
-/rset
-{ /rticklength exch def
- /yaxis exch def
- /ydecr exch def
- /yextra exch def
- yaxis exch ticksandlimits
- /ylog exch def /ymax exch def /ymin exch def /rticks exch def
- /yleft ydecr { ymax } { ymin } ifelse def
- /yright ydecr { ymin } { ymax } ifelse def
- /ywidth ysize yextra 2 mul sub def
- /trymin ymin ytr def /trymax ymax ytr def
-} def
-
-% norset: set up data for no rticks
-% - norset -
-/norset
-{ /rticklength 0 def
- /rticks [] def
-} def
-
-% framestyle: print a frame around the graph
-/framestyle
-{ 0 0 moveto xsize 0 lineto xsize ysize lineto
- 0 ysize lineto closepath stroke
- /printxtick /printxlabel xticks xleft printticks
- /printytick /printylabel yticks ymin printticks
- /printrtick /printrlabel rticks ymin printticks
-} def
-
-% nonestyle: print nothing around the graph
-/nonestyle
-{
-} def
-
-% axesstyle: print axes for the graph (unless axis values missing)
-/axesstyle
-{
- xaxis false eq yaxis false eq or
- { framestyle }
- { xaxis yaxis trpoint dup 0 exch moveto xsize exch lineto
- dup 0 moveto ysize lineto stroke
- /printxaxistick /printxaxislabel xticks xleft printticks
- /printyaxistick /printyaxislabel yticks ymin printticks
- } ifelse
-} def
-
-% rundata: run all data sets
-/rundata
-{ alldata
- { gsave
- dup dup dup dup
- 4 get /dopaint exch def
- 3 get /initrun exch def
- 2 get /pairs exch def
- 1 get /points exch def
- 0 get /data exch def
- dopaint
- { data length 4 ge
- { initrun
- newpath
- data 0 get ymin trpoint yextra sub moveto
- 0 2 data length 2 sub
- { dup 1 add
- data exch get /ycurr exch def
- data exch get /xcurr exch def
- xcurr ycurr trpoint lineto
- } for
- data dup length 2 sub get ymin trpoint yextra sub lineto
- closepath fill
- } if
- } if
- initrun
- data length 2 ge
- {
- /xcurr data 0 get def
- /ycurr data 1 get def
- points
- data length 4 ge
- { 2 2 data length 2 sub
- { /xprev xcurr def
- /yprev ycurr def
- dup dup 2 eq /firstpair exch def
- data length 2 sub eq /lastpair exch def
- dup 1 add
- data exch get /ycurr exch def
- data exch get /xcurr exch def
- pairs
- points
- } for
- } if
- } if
- grestore
- } forall
-} def
-
-end
-%%EndResource
-
-%%BeginResource: procset LoutFigPrependGraphic
-% @PrependGraphic file /export/home/6monthspace/jeff/lout.lib/include/diagf.lpg
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% %
-% PostScript @SysPrependGraphic file for @Diag Jeffrey H. Kingston %
-% Version 2.0 (includes CIRCUM label) September 1996 %
-% %
-% To assist in avoiding name clashes, the names of all symbols %
-% defined here begin with "ldiag". However, this is not feasible %
-% with user-defined labels and some labels used by users. %
-% %
-% <point> is two numbers, a point. %
-% <length> is one number, a length %
-% <angle> is one number, an angle in degrees %
-% <dashlength> is one number, the preferred length of a dash %
-% %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-errordict begin
- /handleerror
- {
- { /Times-Roman findfont 8 pt scalefont setfont
- 0 setgray 4 pt 4 pt moveto
- $error /errorname get
- dup ldiagdict exch known
- { ldiagdict exch get }
- { 50 string cvs } ifelse
- show
- ( Command: ) show
- $error /command get 50 string cvs show
- } stopped {} if
- showpage stop
- } def
-end
-
-% begin diagram: <maxlabels> ldiagbegin -
-% must be defined outside ldiagdict since it loads it
-/ldiagbegin
-{ xsize 0 0 ysize ldiagdict begin
- 5 -1 roll /ldiagmaxlabels exch def
- (@Diag) ldiagpushtagdict
- /OOY ldiagpointdef /OOX ldiagpointdef 0 0 /OOO ldiagpointdef
-} def
-
-% end diagram: - ldiagend -
-/ldiagend
-{ ldiagpoptagdict end
-} def
-
-% concat strings: <string> <string> ldiagconcat <string>
-% must be defined outside ldiagdict since used in ldiagpromotelabels
-/ldiagconcat
-{ 2 copy length exch length add string
- dup 0 4 index putinterval
- dup 3 index length 3 index putinterval
- 3 1 roll pop pop
-} def
-
-/ldiagdebugposy 432 def
-/ldiagdebugposx 72 def
-
-% <string> <int> ldiagdebugprint -
-% must be defined outside ldiagdict since used in arbitrary places
-% print count or <int> stack entries, which ever is the smaller
-/ldiagdebugprint
-{
- exch
- gsave
- initgraphics
- ldiagdebugposy 72 lt
- { /ldiagdebugposx ldiagdebugposx 144 add store
- /ldiagdebugposy 432 store
- }
- {
- /ldiagdebugposy ldiagdebugposy 12 sub store
- } ifelse
- ldiagdebugposx ldiagdebugposy 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
- {
- /ldiagdebugposy ldiagdebugposy 12 sub store
- ldiagdebugposx 12 add ldiagdebugposy moveto
- index 50 string cvs show
- } for
- grestore
-} def
-
-/ldiagdict 200 dict def
-ldiagdict begin
-
-% error messages
-/dictfull (dictfull error: too many labels?) def
-/dictstackoverflow (dictstackoverflow error: labels nested too deeply?) def
-/execstackoverflow (execstackoverflow error: figure nested too deeply?) def
-/limitcheck (limitcheck error: figure nested too deeply or too large?) def
-/syntaxerror (syntaxerror error: syntax error in text of figure?) def
-/typecheck (typecheck error: syntax error in text of figure?) def
-/undefined (undefined error: unknown or misspelt label?) def
-/VMError (VMError error: run out of memory?) def
-
-% push pi onto stack: - ldiagpi <num>
-/ldiagpi 3.14159 def
-
-% push e onto stack: - ldiage <num>
-/ldiage 2.71828 def
-
-% arc directions
-/clockwise false def
-/anticlockwise true def
-
-% test equality between two angles: <angle> <angle> ldiagangleeq <bool>
-/ldiagangleeq { ldiagfixangle exch ldiagfixangle eq } def
-
-% test inequality between two angles: <angle> <angle> ldiaganglene <bool>
-/ldiaganglene { ldiagangleeq not } def
-
-% maximum of two numbers: <num> <num> ldiagmax <num>
-/ldiagmax { 2 copy gt { pop } { exch pop } ifelse } def
-
-% minimum of two numbers: <num> <num> ldiagmin <num>
-/ldiagmin { 2 copy lt { pop } { exch pop } ifelse } def
-
-% add two points: <point> <point> ldiagpadd <point>
-/ldiagpadd
-{
- % (Entering padd) 4 ldiagdebugprint
- exch 3 1 roll add 3 1 roll add exch
- % (Leaving padd) 2 ldiagdebugprint
-} def
-
-% subtract first point from second: <point> <point> ldiagpsub <point>
-/ldiagpsub { 3 2 roll sub 3 1 roll exch sub exch } def
-
-% max two points: <point> <point> ldiagpmax <point>
-/ldiagpmax { exch 3 1 roll ldiagmax 3 1 roll ldiagmax exch } def
-
-% min two points: <point> <point> ldiagpmin <point>
-/ldiagpmin { exch 3 1 roll ldiagmin 3 1 roll ldiagmin exch } def
-
-% scalar multiplication: <point> <num> ldiagpmul <point>
-/ldiagpmul { dup 3 1 roll mul 3 1 roll mul exch } def
-
-% point at angle and distance: <point> <length> <angle> ldiagatangle <point>
-/ldiagatangle { 2 copy cos mul 3 1 roll sin mul ldiagpadd } def
-
-% angle from one point to another: <point> <point> ldiagangleto <angle>
-/ldiagangleto { ldiagpsub 2 copy 0 eq exch 0 eq and {pop} {exch atan} ifelse } def
-
-% distance between two points: <point> <point> ldiagdistance <length>
-/ldiagdistance { ldiagpsub dup mul exch dup mul add sqrt } def
-
-% stroke a solid line: <length> <dashlength> ldiagsolid -
-/ldiagsolid
-{ pop pop [] 0 setdash 1 setlinecap stroke
-} def
-
-% stroke a dashed line: <length> <dashlength> ldiagdashed -
-/ldiagdashed
-{ 2 copy div 2 le 1 index 0 le or
- { exch pop 1 pt ldiagmax [ 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
-} def
-
-% stroke a cdashed line: <length> <dashlength> ldiagcdashed -
-/ldiagcdashed
-{ % (Entering ldiagcdashed) 2 ldiagdebugprint
- 2 copy le 1 index 0 le or
- { exch pop 1 pt ldiagmax [ 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
- % (Leaving ldiagcdashed) 0 ldiagdebugprint
-} def
-
-% stroke a dotted line: <length> <dashlength> ldiagdotted -
-/ldiagdotted
-{ 2 copy le 1 index 0 le or
- { exch pop 1 pt ldiagmax [ exch 0 exch ] 0 setdash }
- { 1 index exch div ceiling div
- [ 0 3 2 roll ] 0 setdash
- } ifelse 1 setlinecap stroke
-} def
-
-% stroke a noline line: <length> <dashlength> ldiagnoline -
-/ldiagnoline
-{ pop pop
-} def
-
-% painting (i.e. filling): - ldiagwhite - (etc.)
-/ldiagnopaint { } def
-/ldiagnochange { fill } def
-/ldiagdarkblue { 0.0 0.0 0.5 setrgbcolor fill } def
-/ldiagblue { 0.0 0.0 1.0 setrgbcolor fill } def
-/ldiaglightblue { 0.5 0.5 1.0 setrgbcolor fill } def
-/ldiagdarkgreen { 0.0 0.5 0.0 setrgbcolor fill } def
-/ldiaggreen { 0.0 1.0 0.0 setrgbcolor fill } def
-/ldiaglightgreen { 0.5 1.0 0.5 setrgbcolor fill } def
-/ldiagdarkred { 0.5 0.0 0.0 setrgbcolor fill } def
-/ldiagred { 1.0 0.0 0.0 setrgbcolor fill } def
-/ldiaglightred { 1.0 0.5 0.5 setrgbcolor fill } def
-/ldiagdarkcyan { 0.0 0.5 0.5 setrgbcolor fill } def
-/ldiagcyan { 0.0 1.0 1.0 setrgbcolor fill } def
-/ldiaglightcyan { 0.5 1.0 1.0 setrgbcolor fill } def
-/ldiagdarkmagenta { 0.5 0.0 0.5 setrgbcolor fill } def
-/ldiagmagenta { 1.0 0.0 1.0 setrgbcolor fill } def
-/ldiaglightmagenta { 1.0 0.5 1.0 setrgbcolor fill } def
-/ldiagdarkyellow { 0.5 0.5 0.0 setrgbcolor fill } def
-/ldiagyellow { 1.0 1.0 0.0 setrgbcolor fill } def
-/ldiaglightyellow { 1.0 1.0 0.5 setrgbcolor fill } def
-/ldiagdarkgray { 0.2 0.2 0.2 setrgbcolor fill } def
-/ldiaggray { 0.5 0.5 0.5 setrgbcolor fill } def
-/ldiaglightgray { 0.8 0.8 0.8 setrgbcolor fill } def
-/ldiagdarkgrey { 0.2 0.2 0.2 setrgbcolor fill } def
-/ldiaggrey { 0.5 0.5 0.5 setrgbcolor fill } def
-/ldiaglightgrey { 0.8 0.8 0.8 setrgbcolor fill } def
-/ldiagblack { 0.0 0.0 0.0 setrgbcolor fill } def
-/ldiagwhite { 1.0 1.0 1.0 setrgbcolor fill } def
-
-% shape and labels of the @Box symbol
-/ldiagbox
-{
- 0 0 /SW ldiagpointdef
- xsize 0 /SE ldiagpointdef
- xsize ysize /NE ldiagpointdef
- 0 ysize /NW 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
-
- [ CTR NE ldiagpsub /ldiagboxcircum cvx ] ldiagcircumdef
- SW SE NE NW SW
-} def
-
-% shape and labels of the @CurveBox symbol
-% <margin> ldiagcurvebox <shape>
-/ldiagcurvebox
-{
-
- % (Entering ldiagcurvebox) 1 ldiagdebugprint
- ldiagdecodelength /cbmgn exch def
-
- xsize 0.5 mul ysize 0.5 mul /CTR ldiagpointdef
- xsize 0.5 mul 0 /S ldiagpointdef
- xsize ysize 0.5 mul /E ldiagpointdef
- xsize 0.5 mul ysize /N ldiagpointdef
- 0 ysize 0.5 mul /W ldiagpointdef
-
- cbmgn 0.293 mul cbmgn 0.293 mul /SW ldiagpointdef
- xsize cbmgn 0.293 mul sub cbmgn 0.293 mul /SE ldiagpointdef
- xsize cbmgn 0.293 mul sub ysize cbmgn 0.293 mul sub /NE ldiagpointdef
- cbmgn 0.293 mul ysize cbmgn 0.293 mul sub /NW 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
-
- [ xsize ysize 0.5 ldiagpmul cbmgn /ldiagcurveboxcircum cvx ] ldiagcircumdef
-
- cbmgn 0
- xsize cbmgn sub 0
- [ xsize cbmgn sub cbmgn ]
- xsize cbmgn
- xsize ysize cbmgn sub
- [ xsize cbmgn sub ysize cbmgn sub ]
- xsize cbmgn sub ysize
- cbmgn ysize
- [ cbmgn ysize cbmgn sub ]
- 0 ysize cbmgn sub
- 0 cbmgn
- [ cbmgn cbmgn ]
- cbmgn 0
-
- % (Leaving ldiagcurvebox) 0 ldiagdebugprint
-} def
-
-% shadow of the @ShadowBox symbol
-% its shape and labels are done, somewhat inaccurately, with ldiagbox
-% <shadowmargin> ldiagshadow -
-/ldiagshadow
-{
- /lfshm exch def
-
- lfshm 0 moveto
- 0 lfshm neg rlineto
- xsize 0 rlineto
- 0 ysize rlineto
- lfshm neg 0 rlineto
- xsize 0 lineto
- closepath fill
-
-} def
-
-% shape and labels of the @Square symbol
-/ldiagsquare
-{
- xsize ysize 0.5 ldiagpmul /CTR ldiagpointdef
- CTR xsize xsize ysize ysize ldiagpmax 0.5 ldiagpmul ldiagpadd /NE ldiagpointdef
- CTR 0 0 CTR NE ldiagdistance 135 ldiagatangle ldiagpadd /NW ldiagpointdef
- CTR 0 0 CTR NE ldiagdistance 225 ldiagatangle ldiagpadd /SW ldiagpointdef
- CTR 0 0 CTR NE ldiagdistance 315 ldiagatangle ldiagpadd /SE ldiagpointdef
- SW 0.5 ldiagpmul SE 0.5 ldiagpmul ldiagpadd /S ldiagpointdef
- NW 0.5 ldiagpmul NE 0.5 ldiagpmul ldiagpadd /N ldiagpointdef
- SW 0.5 ldiagpmul NW 0.5 ldiagpmul ldiagpadd /W ldiagpointdef
- SE 0.5 ldiagpmul NE 0.5 ldiagpmul ldiagpadd /E 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
-
- [ CTR NE ldiagpsub /ldiagboxcircum cvx ] ldiagcircumdef
- SW SE NE NW SW
-} def
-
-% shape and labels of the @Diamond symbol
-/ldiagdiamond
-{
- xsize 0 0.5 ldiagpmul /S ldiagpointdef
- 0 ysize 0.5 ldiagpmul /W ldiagpointdef
- S W ldiagpadd /CTR ldiagpointdef
- CTR W ldiagpadd /N ldiagpointdef
- CTR S ldiagpadd /E ldiagpointdef
- E N ldiagpadd 0.5 ldiagpmul /NE ldiagpointdef
- N W ldiagpadd 0.5 ldiagpmul /NW ldiagpointdef
- S W ldiagpadd 0.5 ldiagpmul /SW ldiagpointdef
- S E ldiagpadd 0.5 ldiagpmul /SE ldiagpointdef
-
- 0 dg /S@ANGLE ldiagangledef
- 90 dg /E@ANGLE ldiagangledef
- 180 dg /N@ANGLE ldiagangledef
- 270 dg /W@ANGLE ldiagangledef
- S E ldiagangleto /SE@ANGLE ldiagangledef
- E N ldiagangleto /NE@ANGLE ldiagangledef
- N W ldiagangleto /NW@ANGLE ldiagangledef
- W S ldiagangleto /SW@ANGLE ldiagangledef
-
- [ xsize ysize 0.5 ldiagpmul /ldiagdiamondcircum cvx ] ldiagcircumdef
- S E N W S
-} def
-
-% shape and labels of the @Ellipse symbol
-/ldiagellipse
-{
- xsize 0 0.5 ldiagpmul /S ldiagpointdef
- 0 ysize 0.5 ldiagpmul /W ldiagpointdef
- S W ldiagpadd /CTR ldiagpointdef
- CTR W ldiagpadd /N ldiagpointdef
- CTR S ldiagpadd /E ldiagpointdef
- CTR xsize 0 0.3536 ldiagpmul ldiagpadd 0 ysize 0.3536 ldiagpmul ldiagpadd /NE ldiagpointdef
- 0 ysize 0.3536 ldiagpmul CTR xsize 0 0.3536 ldiagpmul ldiagpadd ldiagpsub /SE ldiagpointdef
- xsize 0 0.3536 ldiagpmul CTR ldiagpsub 0 ysize 0.3536 ldiagpmul ldiagpadd /NW ldiagpointdef
- 0 ysize 0.3536 ldiagpmul xsize 0 0.3536 ldiagpmul CTR ldiagpsub ldiagpsub /SW ldiagpointdef
- [ xsize ysize 0.5 ldiagpmul /ldiagellipsecircum cvx ] ldiagcircumdef
-
- 0 dg /S@ANGLE ldiagangledef
- 90 dg /E@ANGLE ldiagangledef
- 180 dg /N@ANGLE ldiagangledef
- 270 dg /W@ANGLE ldiagangledef
-
- S E ldiagangleto /SE@ANGLE ldiagangledef
- E N ldiagangleto /NE@ANGLE ldiagangledef
- N W ldiagangleto /NW@ANGLE ldiagangledef
- W S ldiagangleto /SW@ANGLE ldiagangledef
-
- S [ CTR ] E [ CTR ] N [ CTR ] W [ CTR ] S
-} def
-
-% shape and labels of the @Circle symbol
-/ldiagcircle
-{
- xsize ysize 0.5 ldiagpmul /CTR ldiagpointdef
- CTR xsize 0 ysize 0 ldiagpmax 0.5 ldiagpmul ldiagpadd /E ldiagpointdef
- CTR 0 0 CTR E ldiagdistance 45 ldiagatangle ldiagpadd /NE ldiagpointdef
- CTR 0 0 CTR E ldiagdistance 90 ldiagatangle ldiagpadd /N ldiagpointdef
- CTR 0 0 CTR E ldiagdistance 135 ldiagatangle ldiagpadd /NW ldiagpointdef
- CTR 0 0 CTR E ldiagdistance 180 ldiagatangle ldiagpadd /W ldiagpointdef
- CTR 0 0 CTR E ldiagdistance 225 ldiagatangle ldiagpadd /SW ldiagpointdef
- CTR 0 0 CTR E ldiagdistance 270 ldiagatangle ldiagpadd /S ldiagpointdef
- CTR 0 0 CTR E ldiagdistance 315 ldiagatangle ldiagpadd /SE ldiagpointdef
- [ S E ldiagpsub /ldiagellipsecircum cvx ] ldiagcircumdef
-
- 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
-
- S [ CTR ] E [ CTR ] N [ CTR ] W [ CTR ] S
-} def
-
-% shape and labels of the @VLine and @VArrow symbols
-/ldiagvline
-{
- xmark ysize ldiagprevious /FROM ldiagpointdef
- xmark 0 ldiagprevious /TO ldiagpointdef
-} def
-
-% points of a polygon around base with given no of sides, vert init angle:
-% <sides> <angle> ldiagpolygon <point> ... <point>
-/ldiagpolygon
-{ exch round cvi exch
- xsize ysize 0.5 ldiagpmul /CTR ldiagpointdef
- 90 sub CTR 2 copy ldiagmax 5 3 roll
- [ 4 copy pop /ldiagpolycircum cvx ] ldiagcircumdef
- exch dup 360 exch div exch
- 1 1 3 2 roll
- { 4 string cvs (P) exch ldiagconcat
- 3 copy exch pop (@ANGLE) ldiagconcat cvn exch 90 add exch ldiagangledef
- cvn 6 copy pop pop ldiagatangle 2 copy 10 2 roll
- 3 2 roll ldiagpointdef
- dup 3 1 roll add exch
- } for
- pop ldiagatangle
-} def
-
-% shape and labels of the @Isosceles triangle symbol
-/ldiagisosceles
-{
- xsize ysize 0.5 ldiagpmul /CTR ldiagpointdef
- 0 0 /SW ldiagpointdef
- xsize 0 /SE ldiagpointdef
- xsize 0.5 mul ysize /N ldiagpointdef
- xsize 0.5 mul 0 /S ldiagpointdef
- SE 0.5 ldiagpmul N 0.5 ldiagpmul ldiagpadd /NE ldiagpointdef
- SW 0.5 ldiagpmul N 0.5 ldiagpmul ldiagpadd /NW ldiagpointdef
-
- [ xsize ysize /ldiagisoscelescircum cvx ] ldiagcircumdef
-
- 0 dg /SW@ANGLE ldiagangledef
- 0 dg /SE@ANGLE ldiagangledef
- 180 dg /N@ANGLE ldiagangledef
- 0 dg /S@ANGLE ldiagangledef
- SE N ldiagangleto /NE@ANGLE ldiagangledef
- N SW ldiagangleto /NW@ANGLE ldiagangledef
-
- SW SE N SW
-} def
-
-% next array element: <array> <index> ldiaggetnext <array> <index> <any> true
-% or <array> <index> false
-/ldiaggetnext
-{ 2 copy exch length ge
- { false }
- { 2 copy get exch 1 add exch true } ifelse
-} def
-
-% check whether thing is number: <any> ldiagisnumbertype <any> <bool>
-/ldiagisnumbertype
-{ dup type dup
- /integertype eq exch /realtype eq or
-} def
-
-% check whether thing is an array: <any> ldiagisarraytype <any> <bool>
-/ldiagisarraytype { dup type /arraytype eq } def
-
-% check whether thing is an array: <any> ldiagisnametype <any> <bool>
-/ldiagisnametype { dup type /nametype eq } def
-
-% get next item: <array> <index> ldiaggetnextitem <array> <index> 0
-% or <array> <index> <array> 1
-% or <array> <index> <point> 2
-/ldiaggetnextitem
-{ ldiaggetnext
- { ldiagisarraytype
- { 1
- }
- { ldiagisnumbertype
- { 3 1 roll
- ldiaggetnext
- { ldiagisnumbertype
- { 4 3 roll exch 2
- }
- { pop 3 2 roll pop 0
- } ifelse
- }
- { 3 2 roll pop 0
- } ifelse
- }
- { pop 0
- } ifelse
- } ifelse
- }
- { 0
- } ifelse
-} def
-
-% approximate equality: num1 num2 approxeq <boolean>
-/approxeq
-{ dup 0 eq
- { pop 0 eq
- }
- { dup 3 1 roll sub exch div abs 0.001 lt
- } ifelse
-} def
-
-% set arc path: bool x1 y1 x2 y2 x0 y0 ldiagsetarc <angle> <angle> <dist>
-% the path goes from x1 y1 to x2 y2 about centre x0 y0,
-% anticlockwise if bool is true else clockwise.
-% The orientations of backwards pointing and forwards pointing
-% arrowheads are returned in the two angles, and
-% the length of the arc is returned in <dist>.
-/ldiagsetarc
-{
- % (Entering ldiagsetarc) 7 ldiagdebugprint
- 20 dict begin
- matrix currentmatrix 8 1 roll
- 2 copy translate 2 copy 8 2 roll
- 4 2 roll ldiagpsub 6 2 roll ldiagpsub
- dup /y1 exch def dup mul /y1s exch def
- dup /x1 exch def dup mul /x1s exch def
- dup /y2 exch def dup mul /y2s exch def
- dup /x2 exch def dup mul /x2s exch def
- /dist1 0 0 x1 y1 ldiagdistance def
- /dist2 0 0 x2 y2 ldiagdistance def
-
- y1s y2s approxeq
- { -1
- }
- { y1s x2s mul y2s x1s mul sub y1s y2s sub div
- } ifelse
- /da exch def
-
- x1s x2s approxeq
- { -1
- }
- { x1s y2s mul x2s y1s mul sub x1s x2s sub div
- } ifelse
- /db exch def
-
- da 0 gt db 0 gt and
- {
- % ( case 1, ellipse) 0 ldiagdebugprint
- /LMax da sqrt db sqrt ldiagmax def
- /scalex da sqrt LMax div def
- /scaley db sqrt LMax div def
- scalex scaley scale
- 0 0 LMax
- 0 0 x1 scalex mul y1 scaley mul ldiagangleto
- 0 0 x2 scalex mul y2 scaley mul ldiagangleto
- 2 copy eq { 360 add } if
- 2 copy 8 2 roll
- 5 index { arc } { arcn } ifelse
- 2 index 1 index
- { 90 sub } { 90 add } ifelse
- dup sin scaley mul exch cos scalex mul atan
- 2 index 2 index
- { 90 add } { 90 sub } ifelse
- dup sin scaley mul exch cos scalex mul atan
- 5 2 roll % res1 res2 ang1 ang2 anticlockwise
- { exch sub } { sub } ifelse
- dup 0 le { 360 add } if ldiagpi mul LMax mul 180 div
- }
- {
- dist1 dist2 approxeq
- % x1 y1 dist1 ( x1 y1, d) 3 ldiagdebugprint pop pop pop
- % x2 y2 dist2 ( x2 y2, d) 3 ldiagdebugprint pop pop pop
- {
- % ( case 2, circle) 0 ldiagdebugprint
- 0 0
- dist1
- 0 0 x1 y1 ldiagangleto
- 0 0 x2 y2 ldiagangleto
- 2 copy eq { 360 add } if
- 2 copy 8 2 roll
- 5 index { arc } { arcn } ifelse
- 2 index 1 index
- { 90 sub } { 90 add } ifelse
- 2 index 2 index
- { 90 add } { 90 sub } ifelse
- 5 2 roll % res1 res2 ang1 ang2 clockwise
- { exch sub } { sub } ifelse
- dup 0 le { 360 add } if
- ldiagpi mul dist1 mul 180 div
- }
- {
- % ( case 3, line) 0 ldiagdebugprint
- x2 y2 lineto pop
- x2 y2 x1 y1 ldiagangleto
- x1 y1 x2 y2 ldiagangleto
- x1 y1 x2 y2 ldiagdistance
- } ifelse
- } ifelse
- 4 -1 roll setmatrix
- end
- % (Leaving ldiagsetarc) 3 ldiagdebugprint
-} def
-
-% ldiagsetcurve: set up a Bezier curve from x0 y0 to x3 y3
-% and return arrowhead angles and length of curve (actually 0)
-% x0 y0 x1 y1 x2 y2 x3 y3 ldiagsetcurve <angle> <angle> <length>
-/ldiagsetcurve
-{ 8 copy curveto pop pop
- ldiagangleto
- 5 1 roll
- 4 2 roll ldiagangleto
- exch
- 0
-} def
-
-% ldiagsetpath: convert a Diag path into a PostScript path
-% [ shape ] ldiagsetpath
-/ldiagsetpath
-{
- 10 dict begin
- 0 newpath
- /prevseen false def
- /curveseen false def
- { ldiaggetnextitem
- dup 0 eq { pop exit }
- { 1 eq
- { /curveseen true def
- /curve exch def
- curve length 0 eq { /curveseen false def } if
- }
- { /ycurr exch def
- /xcurr exch def
- prevseen
- { curveseen
- { curve length 4 eq
- { xprev yprev
- curve 0 get curve 1 get
- curve 2 get curve 3 get
- xcurr ycurr
- ldiagsetcurve pop pop pop
- }
- { xprev yprev xcurr ycurr
- curve length 1 ge { curve 0 get } { 0 } ifelse
- curve length 2 ge { curve 1 get } { 0 } ifelse
- curve length 3 ge { curve 2 get } { true } ifelse
- 7 1 roll
- ldiagsetarc pop pop pop
- } ifelse
- }
- { xcurr ycurr lineto
- } ifelse
- }
- { xcurr ycurr moveto
- } ifelse
- /xprev xcurr def
- /yprev ycurr def
- /prevseen true def
- /curveseen false def
- } ifelse
- } ifelse
- } loop pop pop
- end
-} def
-
-% ldiagpaintpath: paint a path of the given shape
-% /paint [ shape ] ldiagpaintpath -
-/ldiagpaintpath
-{
- ldiagsetpath cvx exec
-} def
-
-% stroke a path of the given shape in the given linestyle and dash length.
-% Return the origin and angle of the backward and forward arrow heads.
-% dashlength /linestyle [shape] ldiagdopath [<point> <angle>] [<point> <angle>]
-/ldiagdopath
-{
- 10 dict begin
- 0
- /prevseen false def
- /curveseen false def
- /backarrow [] def
- /fwdarrow [] def
- {
- ldiaggetnextitem
- dup 0 eq { pop exit }
- {
- 1 eq
- { /curveseen true def
- /curve exch def
- curve length 0 eq { /prevseen false def } if
- }
- { /ycurr exch def
- /xcurr exch def
- prevseen
- { newpath xprev yprev moveto
- curveseen
- { curve length 4 eq
- { xprev yprev
- curve 0 get curve 1 get
- curve 2 get curve 3 get
- xcurr ycurr ldiagsetcurve
- }
- { xprev yprev xcurr ycurr
- curve length 1 ge { curve 0 get } { 0 } ifelse
- curve length 2 ge { curve 1 get } { 0 } ifelse
- curve length 3 ge { curve 2 get } { true } ifelse
- 7 1 roll
- ldiagsetarc
- } ifelse
- }
- { xcurr ycurr lineto
- xcurr ycurr xprev yprev ldiagangleto dup 180 sub
- xprev yprev xcurr ycurr ldiagdistance
- } ifelse
- 6 index 6 index cvx exec
- [ xprev yprev 5 -1 roll ]
- backarrow length 0 eq
- { /backarrow exch def }
- { pop } ifelse
- [ xcurr ycurr 4 -1 roll ] /fwdarrow exch def
- } if
- /xprev xcurr def
- /yprev ycurr def
- /prevseen true def
- /curveseen false def
- } ifelse
- } ifelse
- } loop
- pop pop pop pop
- backarrow length 0 eq { [ 0 0 0 ] } { backarrow } ifelse
- fwdarrow length 0 eq { [ 0 0 0 ] } { fwdarrow } ifelse
- end
-} def
-
-
-% stroke a path of the given shape in the given linestyle and dash length.
-% dashlength [ /linestyle ] [shape] ldiagdosegpath -
-/ldiagdosegpath
-{
- 12 dict begin
- 1 index /seg exch def
- 1 index length /seglength exch def
- 0 /segcount exch def
- 0
- /prevseen false def
- /curveseen false def
- /backarrow [] def
- /fwdarrow [] def
- {
- ldiaggetnextitem
- dup 0 eq { pop exit }
- {
- 1 eq
- { /curveseen true def
- /curve exch def
- curve length 0 eq { /prevseen false def } if
- }
- { /ycurr exch def
- /xcurr exch def
- prevseen
- { newpath xprev yprev moveto
- curveseen
- { curve length 4 eq
- { xprev yprev
- curve 0 get curve 1 get
- curve 2 get curve 3 get
- xcurr ycurr ldiagsetcurve
- }
- { xprev yprev xcurr ycurr
- curve length 1 ge { curve 0 get } { 0 } ifelse
- curve length 2 ge { curve 1 get } { 0 } ifelse
- curve length 3 ge { curve 2 get } { true } ifelse
- 7 1 roll
- ldiagsetarc
- } ifelse
- }
- { xcurr ycurr lineto
- xcurr ycurr xprev yprev ldiagangleto dup 180 sub
- xprev yprev xcurr ycurr ldiagdistance
- } ifelse
- 6 index seg segcount seglength mod get cvx exec
- /segcount segcount 1 add def
- [ xprev yprev 5 -1 roll ]
- backarrow length 0 eq
- { /backarrow exch def }
- { pop } ifelse
- [ xcurr ycurr 4 -1 roll ] /fwdarrow exch def
- } if
- /xprev xcurr def
- /yprev ycurr def
- /prevseen true def
- /curveseen false def
- } ifelse
- } ifelse
- } loop
- pop pop pop pop
- end
-} def
-
-% ldiagnodebegin: start of node parameters
-% ldiagnodebegin -
-/ldiagnodebegin
-{ % (Entering ldiagnodebegin) 0 ldiagdebugprint
- ldiagmaxlabels dict begin
-} def
-
-% ldiagnodeend: end of node parameters (so do the node)
-% <outline> <dashlength> <style> <linewidth> <paint> ldiagnodeend -
-/ldiagnodeend
-{
- % (Entering ldiagnodeend) 0 ldiagdebugprint
- end % matches begin in ldiagnodebegin
- 4 index gsave ldiagpaintpath grestore
- 3 index ldiagsetpath clip newpath
- 2 mul setlinewidth
- 3 -1 roll ldiagdosegpath
- % (Leaving ldiagnodeend) 0 ldiagdebugprint
-} def
-
-% ldiaglinkbegin: start of link parameters
-% <direct> ldiaglinkbegin -
-/ldiaglinkbegin
-{ ldiagmaxlabels dict begin
- 1 eq /direct exch def
-} def
-
-% ldiaglinkend: end of link parameters (so do the link)
-% <outline> <dashlength> <style> <linewidth> ldiaglinkend -
-/ldiaglinkend
-{
- end % matches begin in ldiaglinkbegin
- setlinewidth
- 3 -1 roll ldiagdosegpath
-} def
-
-% ldiagdoarrow: draw an arrow head of given form
-% dashlength /lstyle /pstyle hfrac height width [ <point> <angle> ] ldiagdoarrow -
-/ldiagdoarrow
-{ matrix currentmatrix 8 1 roll
- dup 0 get 1 index 1 get translate
- 2 get rotate
- [ 2 index neg 2 index 0 0
- 3 index 3 index neg
- 1 index 10 index mul 0
- 7 index 7 index ]
- 4 1 roll pop pop pop
- dup 3 1 roll
- gsave ldiagpaintpath grestore ldiagdopath pop pop
- setmatrix
-} def
-
-% arrow head styles
-/ldiagopen 0.0 def
-/ldiaghalfopen 0.5 def
-/ldiagclosed 1.0 def
-
-% stroke no arrows, forward, back, and both
-/ldiagnoarrow { pop pop pop pop pop pop pop pop } def
-/ldiagforward { 7 -1 roll ldiagdoarrow pop } def
-/ldiagback { 8 -2 roll pop ldiagdoarrow } def
-/ldiagboth { 8 -1 roll 7 copy ldiagdoarrow pop 7 -1 roll ldiagdoarrow } def
-
-% ldiagprevious: return previous point on path
-/ldiagprevious
-{ ldiagisnumbertype
- { 2 copy }
- { ldiagisarraytype
- { 2 index 2 index }
- { 0 0 }
- ifelse
- } ifelse
-} def
-
-% Tag dictionary operators
-%
-% Diag's tag dictionaries are kept on the same stack as other dictionaries,
-% since there is nowhere else to put them. However, they are managed like
-% a separate stack using the following operators:
-%
-% <tag> ldiagpushtagdict - Push a new, empty tag dictionary
-% ldiagtoptagdict dict Find the top tag dictionary
-% ldiagpoptagdict - Pop and destroy the top tag dictionary
-% ldiagpopuptagdict - Pop top tag dict and promote its entries
-% ldiagdebugtagdict - Debug print of dictionary stack
-%
-% They are distinguished from other dictionaries by containing /ldiagtagdict,
-% whose value is the <tag> which is used by ldiagpopuptagdict,
-% and they are hopefully never the target of any non-tag definition because
-% they are never the top dictionary, since push places the new dict second.
-
-/ldiagpushtagdict
-{ ldiagmaxlabels dict dup
- currentdict end exch begin begin
- exch /ldiagtagdict exch put
-} def
-
-/ldiagtoptagdict
-{ /ldiagtagdict where not
- { (Diag internal error: no tag dictionary) show stop
- } if
-} def
-
-/ldiagpoptagdict
-{
- % (Entering poptagdict) 0 ldiagdebugprint
- % ldiagdebugtagdict
- mark
- { currentdict end
- dup /ldiagtagdict known
- { exit
- } if
- } loop
- pop
- counttomark
- { begin
- } repeat
- pop
- % (Leaving poptagdict) 0 ldiagdebugprint
- % ldiagdebugtagdict
-} def
-
-% promote labels from top tag dictionary to second top tag dictionary
-% each prefixed by <string>@ if <string> (value of /ldiagtagdict) is not empty
-% - ldiagpopuptagdict -
-/ldiagpopuptagdict
-{
- ldiagtagdict
- % (Entering ldiagpopuptagdict) 1 ldiagdebugprint
- % ldiagdebugtagdict
- ldiagtoptagdict ldiagpoptagdict ldiagtoptagdict exch
- { exch 50 string cvs 3 index
- dup length 0 ne
- { (@) ldiagconcat
- } if
- exch ldiagconcat cvn exch 2 index 3 1 roll put
- } forall
- pop pop
- % (Leaving ldiagpopuptagdict) 0 ldiagdebugprint
- % ldiagdebugtagdict
-} def
-
-% debug tag dictionary stack
-/ldiagdebugtagdict
-{ (Entering ldiagdebugtagdict) 0 ldiagdebugprint
- 30 array dictstack
- { dup /ldiagtagdict known
- { dup /ldiagtagdict get 0 ldiagdebugprint
- { pop 50 string cvs ( ) exch ldiagconcat
- dup 0 ldiagdebugprint
- pop
- }
- forall
- }
- { pop (other) 0 ldiagdebugprint
- } ifelse
- } forall
- (Leaving ldiagdebugtagdict) 0 ldiagdebugprint
-} def
-
-% label a point in top tag dictionary: <point> /name ldiagpointdef -
-/ldiagpointdef
-{
- % (Entering ldiagpointdef) 3 ldiagdebugprint
- [ 4 2 roll transform /itransform cvx ] cvx
- ldiagtoptagdict 3 1 roll put
- % (Leaving ldiagpointdef) 0 ldiagdebugprint
-} def
-
-% label an angle in top tag dictionary: <angle> /name ldiagangledef -
-/ldiagangledef
-{
- % (Entering ldiagangledef) 2 ldiagdebugprint
- exch ldiagfixangle ldiagtoptagdict 3 1 roll put
- % (Leaving ldiagangledef) 0 ldiagdebugprint
-} def
-
-% add CIRCUM operator with this body: <array> ldiagcircumdef -
-/ldiagcircumdef
-{ % (Entering ldiagcircumdef) 1 ldiagdebugprint
- /CIRCUM exch cvx
- ldiagtoptagdict 3 1 roll put
- % currentdict end
- % 3 1 roll
- % def
- % begin
- % (Leaving ldiagcircumdef) 0 ldiagdebugprint
-} def
-
-% show points (except CIRCUM and ANGLE): - ldiagshowpoints -
-/ldiagshowpoints
-{
- % (Entering ldiagshowpoints) 0 ldiagdebugprint
- ldiagtoptagdict
- { 1 index 50 string cvs
- (ldiagdebugpos) search
- { pop pop pop pop pop }
- {
- (CIRCUM) search % if CIRCUM in key
- { pop pop pop pop pop }
- {
- (ANGLE) search % if ANGLE in key
- {
- pop pop pop pop pop
- }
- {
- (ldiagtagdict) search
- {
- pop pop pop pop pop
- }
- {
- pop cvx exec
- newpath 2.0 pt 0 360 arc 0 setgray fill pop
- } ifelse
- } ifelse
- } ifelse
- } ifelse
- } forall
- % (Leaving ldiagshowpoints) 0 ldiagdebugprint
-} def
-
-
-/ldiagshowtags
-{
- % (Entering ldiagshowtags) 0 ldiagdebugprint
- ldiagtoptagdict
- { 1 index 50 string cvs
- % dup 0 ldiagdebugprint
- (ldiagdebugpos) search
- { pop pop pop pop pop }
- {
- (CIRCUM) search % if CIRCUM in key
- { pop pop pop pop pop }
- {
- (ANGLE) search % if ANGLE in key
- {
- pop pop pop pop pop
- }
- {
- (ldiagtagdict) search
- {
- pop pop pop pop pop
- }
- {
- pop cvx exec 2 copy
- gsave
- newpath 2.0 pt 0 360 arc 0 setgray fill
- /Times-Roman findfont 8 pt scalefont setfont
- translate 40 rotate 0.2 cm 0.1 cm moveto 20 string cvs show
- grestore
- } ifelse
- } ifelse
- } ifelse
- } ifelse
- } forall
- % (Leaving ldiagshowtags) 0 ldiagdebugprint
-} def
-
-
-% show angles: - ldiagshowangles -
-/ldiagshowangles
-{
- % (Entering ldiagshowangles) 0 ldiagdebugprint
- ldiagtoptagdict
- { 1 index 20 string cvs
- % dup 0 ldiagdebugprint
- (ldiagdebugpos) search
- { pop pop pop pop pop }
- {
- (ldiagtagdict) search
- {
- pop pop pop pop pop
- }
- {
- (CIRCUM) search % if CIRCUM in key
- { pop pop pop pop pop }
- {
- (@ANGLE) search % if ANGLE in key, draw the angle at the point
- {
- % (showing ANGLE) 5 ldiagdebugprint
- gsave exch pop exch pop cvx
- % (about to execute) 1 ldiagdebugprint
- exec translate rotate 0.8 0.8 scale pop
- newpath 0 0 2.0 pt 0 360 arc 0 setgray fill
- newpath 4 pt 0 moveto 9 pt 0 lineto
- 9 pt 1.5 pt lineto 11 pt 0 lineto 9 pt -1.5 pt lineto
- 9 pt 0 lineto [] 0 setdash 4 pt setlinewidth 0 setlinejoin
- stroke grestore
- % (finished ANGLE) 5 ldiagdebugprint
- }
- {
- % else must be a point, we aren't showing those
- pop pop pop
- } ifelse
- } ifelse
- } ifelse
- } ifelse
- } forall
- % (Leaving ldiagshowangles) 0 ldiagdebugprint
-} def
-
-% fix an angle to 0 <= res < 360: <angle> ldiagfixangle <angle>
-/ldiagfixangle
-{
- % (Entering ldiagfixangle) 1 ldiagdebugprint
- { dup 0 ge { exit } if
- 360 add
- } loop
- { dup 360 lt { exit } if
- 360 sub
- } loop
- % (Leaving ldiagfixangle) 1 ldiagdebugprint
-} def
-
-% find point on circumference of box: alpha a b ldiagboxcircum x y
-/ldiagboxcircum
-{
- % (Entering ldiagboxcircum) 3 ldiagdebugprint
- 4 dict begin
- /b exch def
- /a exch def
- ldiagfixangle /alpha exch def
- 0 0 a b ldiagangleto /theta exch def
-
- % if alpha <= theta, return (a, a*tan(alpha))
- alpha theta le
- { a a alpha sin mul alpha cos div }
- {
- % else if alpha <= 180 - theta, return (b*cot(alpha), b)
- alpha 180 theta sub le
- { b alpha cos mul alpha sin div b }
- {
- % else if alpha <= 180 + theta, return (-a, -a*tan(alpha))
- alpha 180 theta add le
- { a neg a neg alpha sin mul alpha cos div }
- {
- % else if alpha <= 360 - theta, return (-b*cot(alpha), -b)
- alpha 360 theta sub le
- { b neg alpha cos mul alpha sin div b neg }
- {
- % else 360 - theta <= alpha, return (a, a*tan(alpha))
- a a alpha sin mul alpha cos div
- } ifelse
- } ifelse
- } ifelse
- } ifelse
- end
- % (Leaving ldiagboxcircum) 2 ldiagdebugprint
-} def
-
-% find quadratic roots (assume a != 0): a b c ldiagqroots x1 x2 2
-% or x2 1
-% or 0
-/ldiagqroots
-{
- 4 dict begin
- /c exch def
- /b exch def
- /a exch def
- /disc b b mul 4 a c mul mul sub def
- disc 0 lt
- { 0
- }
- { disc 0 eq
- { b neg 2 a mul div
- 1
- }
- { b neg disc sqrt add 2 a mul div
- b neg disc sqrt sub 2 a mul div
- 2
- }
- ifelse
- }
- ifelse
- end
-} def
-
-% work our which quadrant: <angle> ldiagquadrant <0-3>
-/ldiagquadrant
-{ dup 90 lt
- { pop 0
- }
- { dup 180 lt
- { pop 1
- }
- { 270 lt
- { 2
- }
- { 3
- } ifelse
- } ifelse
- } ifelse
-} def
-
-% find curvebox circum, assuming upper right quadrant: alpha a b xmk ldiagcb x y
-/ldiagcb
-{
- 6 dict begin
- /xmk exch def
- /b exch def
- /a exch def
- /alpha exch def
- /theta1 0 0 a b xmk sub ldiagangleto def
- /theta2 0 0 a xmk sub b ldiagangleto def
- alpha theta1 le
- { % if alpha <= theta1, return (a, a*tan(alpha))
- a a alpha sin mul alpha cos div
- }
- { alpha theta2 ge
- { % else if alpha > theta2, return (b*cot(alpha), b)
- b alpha cos mul alpha sin div b
- }
- {
- % else, return the intersection of line and circle
- a xmk sub b xmk sub xmk 0 0 alpha ldiagcircleintersect
- dup 0 eq
- { % should never happen, just return any reasonable point
- pop
- a b 0.5 ldiagpmul
- }
- { 1 eq
- { % should never happen, just return the point on top of stack
- }
- { % the usual case, two points on stack, return the larger
- ldiagpmax
- } ifelse
- } ifelse
- } ifelse
- } ifelse
- end
-} def
-
-% find point on circumference of curvebox: alpha a b xmk ldiagcurveboxcircum x y
-/ldiagcurveboxcircum
-{
- % (Entering ldiagcurveboxcircum) 4 ldiagdebugprint
- 5 dict begin
- /xmk exch def
- /b exch def
- /a exch def
- ldiagfixangle /alpha exch def
-
- % work out which quadrant we are in, and reflect accordingly
- /quad alpha ldiagquadrant def
- quad 0 eq
- { alpha a b xmk ldiagcb
- }
- { quad 1 eq
- { 180 alpha sub a b xmk ldiagcb exch neg exch
- }
- { quad 2 eq
- { alpha 180 sub a b xmk ldiagcb neg exch neg exch
- }
- { 360 alpha sub a b xmk ldiagcb neg
- } ifelse
- } ifelse
- } ifelse
- end
- % (Leaving ldiagcurveboxcircum) 2 ldiagdebugprint
-} def
-
-% find point on circumference of diamond: alpha a b ldiagdiamondcircum x y
-/ldiagdiamondcircum
-{
- % (Entering ldiagdiamondcircum) 3 ldiagdebugprint
- 4 dict begin
- /b exch def
- /a exch def
- ldiagfixangle /alpha exch def
- b alpha cos abs mul a alpha sin abs mul add /denom exch def
- a b mul alpha cos mul denom div
- a b mul alpha sin mul denom div
- end
- % (Leaving ldiagdiamondcircum) 2 ldiagdebugprint
-} def
-
-% find point on circumference of ellipse: alpha a b ldiagellipsecircum x y
-/ldiagellipsecircum
-{
- % (Entering ldiagellipsecircum) 3 ldiagdebugprint
- 4 dict begin
- /b exch def
- /a exch def
- ldiagfixangle /alpha exch def
- b alpha cos mul dup mul a alpha sin mul dup mul add sqrt /denom exch def
- a b mul alpha cos mul denom div
- a b mul alpha sin mul denom div
- end
- % (Leaving ldiagellipsecircum) 2 ldiagdebugprint
-} def
-
-% find point on circumference of isosceles: alpha a b ldiagisoscelescircum x y
-/ldiagisoscelescircum
-{
- % (Entering ldiagisoscelescircum) 3 ldiagdebugprint
- 7 dict begin
- /b exch def
- /a exch def
- /alpha exch ldiagfixangle def
- /theta1 90 def
- /theta2 a b 0.5 ldiagpmul 0 0 ldiagangleto def
- /theta3 a b 0.5 ldiagpmul a 0 ldiagangleto def
- alpha theta1 ge alpha theta2 le and
- { 0 0 a 2 div b
- }
- { alpha theta2 ge alpha theta3 le and
- { 0 0 a 0
- }
- { a 0 a 2 div b
- } ifelse
- } ifelse
- a 2 div b 2 div 2 copy 1 ft alpha ldiagatangle ldiaglineintersect
- a 2 div b 2 div 4 2 roll ldiagpsub
- end
- % (Leaving ldiagisoscelescircum) 2 ldiagdebugprint
-} def
-
-% find point of intersection of two lines each defined by two points
-% x1 y1 x2 y2 x3 y3 x4 y4 ldiaglineintersect x y
-/ldiaglineintersect
-{
- % (Entering ldiaglineintersect) 8 ldiagdebugprint
- 13 dict begin
- /y4 exch def
- /x4 exch def
- /y3 exch def
- /x3 exch def
- /y2 exch def
- /x2 exch def
- /y1 exch def
- /x1 exch def
- x2 x1 sub /x21 exch def
- x4 x3 sub /x43 exch def
- y2 y1 sub /y21 exch def
- y4 y3 sub /y43 exch def
- y21 x43 mul y43 x21 mul sub /det exch def
-
- % calculate x
- y21 x43 mul x1 mul
- y43 x21 mul x3 mul sub
- y3 y1 sub x21 mul x43 mul add
- det div
-
- % calculate y
- x21 y43 mul y1 mul
- x43 y21 mul y3 mul sub
- x3 x1 sub y21 mul y43 mul add
- det neg div
-
- end
- % (Leaving ldiaglineintersect) 2 ldiagdebugprint
-} def
-
-% find point on circumference of polygon
-% alpha radius num theta ldiagpolycircum x y
-/ldiagpolycircum
-{
- % (Entering ldiagpolycircum) 4 ldiagdebugprint
- 13 dict begin
- /theta exch def
- /num exch def
- /radius exch def
- /alpha exch def
-
- % calculate delta, the angle from theta to alpha
- alpha theta sub ldiagfixangle
-
- % calculate the angle which is the multiple of 360/num closest to delta
- 360 num div div truncate 360 num div mul theta add /anglea exch def
-
- % calculate the next multiple of 360/num after anglea
- anglea 360 num div add /angleb exch def
-
- % intersect the line through these two points with the alpha line
- anglea cos anglea sin angleb cos angleb sin
- 0 0 alpha cos 2 mul alpha sin 2 mul
- ldiaglineintersect radius ldiagpmul
-
- end
- % (Leaving ldiagpolycircum) 2 ldiagdebugprint
-} def
-
-% find point of intersection of a line and a circle
-% x0 y0 r x1 y1 theta ldiagcircleintersect xa ya xb yb 2
-% or xb yb 1
-% or 0
-/ldiagcircleintersect
-{
- % (Entering ldiagcircleintersect) 6 ldiagdebugprint
- 15 dict begin
- /theta exch def
- /y1 exch def
- /x1 exch def
- /r exch def
- /y0 exch def
- /x0 exch def
-
- % if sin(theta) = 0 then line is horizontal and y must be y1
- theta sin abs 0.00001 lt
- {
- /a 1 def
- /b -2 x0 mul def
- /c x0 dup mul y1 y0 sub dup mul add r dup mul sub def
- a b c ldiagqroots dup
- 0 eq
- { pop
- 0
- }
- { 1 eq
- { y1 1
- }
- { y1 exch y1 2
- } ifelse
- } ifelse
- }
- {
- /ct theta cos theta sin div def
- /a ct ct mul 1 add def
- /b ct x1 x0 sub mul y1 add y0 sub 2 mul def
- /c x1 x0 sub dup mul y1 y0 sub dup mul add r dup mul sub def
- a b c ldiagqroots dup
- 0 eq
- { pop
- 0
- }
- { 1 eq
- { y1 add /yb exch def
- yb y1 sub ct mul x1 add /xb exch def
- xb yb 1
- }
- { y1 add /ya exch def
- ya y1 sub ct mul x1 add /xa exch def
- y1 add /yb exch def
- yb y1 sub ct mul x1 add /xb exch def
- xa ya xb yb 2
- } ifelse
- } ifelse
- } ifelse
- end
- % (Leaving ldiagcircleintersect) 1 ldiagdebugprint
-} def
-
-% find line which is the perpendicular bisector of two points, defined
-% by two points
-% x1 y1 x2 y2 ldiaglinebetween x3 y3 x4 y4
-/ldiaglinebetween
-{ % (Entering ldiaglinebetween) 4 ldiagdebugprint
- /y2 exch def /x2 exch def
- /y1 exch def /x1 exch def
-
- % let x3, y3 be the point halfway between the two points
- x1 y1 x2 y2 ldiagpadd 0.5 ldiagpmul
- /y3 exch def /x3 exch def
-
- % find a point perpendicular to x3, y3
- x3 y3 50 x1 y1 x2 y2 ldiagangleto 90 dg add ldiagatangle
-
- % plus x3 y3 gives the two points
- x3 y3
-
- % (Leaving ldiaglinebetween) 4 ldiagdebugprint
-} def
-
-% find <proc>@<string>: <proc> <string> ldiagfindlabel <any> true
-% <proc> <string> false
-/ldiagfindlabel
-{
- % (Entering ldiagfindlabel) 2 ldiagdebugprint
- exch dup length 1 ne
- { exch false
- % (Leaving ldiagfindabel (length not 1)) 3 ldiagdebugprint
- }
- { dup 0 get type /nametype ne
- { exch false
- % (Leaving ldiagfindabel (not a name)) 3 ldiagdebugprint
- }
- { dup 0 get 50 string cvs (@) ldiagconcat 2 index ldiagconcat dup where
- { exch get exch pop exch pop cvx exec true
- % (Leaving ldiagfindlabel with success) 100 ldiagdebugprint
- }
- {
- pop exch false
- % (Leaving ldiagfindabel (concat not sensible)) 3 ldiagdebugprint
- } ifelse
- } ifelse
- } ifelse
-} bind def
-
-% execute <proc>@<string> or else default: <proc> <string> ldiagdolabel <various>
-/ldiagdolabel
-{
- % (Entering ldiagdolabel) 2 ldiagdebugprint
- ldiagfindlabel not
- {
- dup (CIRCUM) eq
- { pop pop pop 0 0
- }
- {
- dup (ANGLE) eq
- { pop pop 0
- }
- { pop cvx exec
- } ifelse
- } ifelse
- } if
- % (Leaving ldiagdolabel) 2 ldiagdebugprint
-} bind def
-
-% execute a proc depending on whether number is negative, zero, or positive
-% procneg proczero procpos number ldiagsigncase <anything>
-/ldiagsigncase
-{
- % (Entering ldiagsigncase) 4 ldiagdebugprint
- dup 0 lt
- { pop pop pop exec
- }
- { 0 gt
- { exch pop exch pop exec
- }
- { pop exch pop exec
- } ifelse
- } ifelse
- % (Leaving ldiagsigncase) 0 ldiagdebugprint
-} bind def
-
-% execute proci if angle is in ith quadrant
-% proc45 proc270 proc180 proc90 proc0 proc315 proc225 proc135 angle ldiagquadcase <anything>
-/ldiagquadcase
-{
- % (Entering ldiagquadcase) 9 ldiagdebugprint
- round ldiagfixangle cvi dup 90 mod 0 eq
- { 90 idiv 4 add } { 90 idiv } ifelse
- 8 exch roll pop pop pop pop pop pop pop exec
- % (Leaving ldiagquadcase) 0 ldiagdebugprint
-} bind def
-
-% decode Lout length into PostScript length
-% <string> ldiagdecodelength <number>
-/ldiagdecodelength
-{
- % (Entering ldiagdecodelength) 1 ldiagdebugprint
- (f) search
- { exch pop exch pop cvr ft
- }
- { (c) search
- { exch pop exch pop cvr cm
- }
- { (p) search
- { exch pop exch pop cvr pt
- }
- { (m) search
- { exch pop exch pop cvr em
- }
- { (s) search
- { exch pop exch pop cvr sp
- }
- { (v) search
- { exch pop exch pop cvr vs
- }
- { (i) search
- { exch pop exch pop cvr in
- }
- { pop 0
- } ifelse
- } ifelse
- } ifelse
- } ifelse
- } ifelse
- } ifelse
- } ifelse
- % (Leaving ldiagdecodelength) 1 ldiagdebugprint
-} def
-
-% implement aabout function
-% logical form: <circum> <extra> <centre> aabout <point>
-% actual form: { <labelorpoint> } cvlit <length> [ <point> ] cvx aabout <point>
-/ldiagaabout
-{
- /centre exch def
- /extra exch def
- /circum exch def
-
- /ZXCTR [ centre ] cvx def
- /ZFCTR [ circum (CTR) ldiagdolabel ] cvx def
- /ZAREF ZFCTR ZXCTR ldiagangleto def
- /ZAMIN 0 dg def
- /ZPMIN [ circum (CTR) ldiagdolabel ZAREF ZAMIN sub
- circum (CIRCUM) ldiagdolabel ldiagpadd
- 0 0 extra ZAREF ZAMIN sub ldiagatangle
- ldiagpadd ] cvx def
-
- /ZAMAX 90 dg def
- /ZPMAX [ circum (CTR) ldiagdolabel ZAREF ZAMAX sub
- circum (CIRCUM) ldiagdolabel ldiagpadd
- 0 0 extra ZAREF ZAMAX sub ldiagatangle
- ldiagpadd ] cvx def
-
- 1 1 20
- { /xval exch def
- /ZAMID ZAMIN ZAMAX add 0.5 mul def
- /ZPMID [ circum (CTR) ldiagdolabel ZAREF ZAMID sub
- circum (CIRCUM) ldiagdolabel ldiagpadd
- 0 0 extra ZAREF ZAMID sub ldiagatangle
- ldiagpadd ] cvx def
- ZPMID ZXCTR ldiagdistance ZFCTR ZXCTR ldiagdistance gt
- {
- /ZAMAX [ ZAMID ] cvx def
- /ZPMAX [ ZPMID ] cvx def
- }
- {
- /ZAMIN [ ZAMID ] cvx def
- /ZPMIN [ ZPMID ] cvx def
- } ifelse
- } for
- ZPMID
-} def
-
-% implement cabout function
-% logical form: <circum> <extra> <centre> cabout <point>
-% actual form: { <labelorpoint> } cvlit <length> [ <point> ] cvx cabout <point>
-/ldiagcabout
-{
- /centre exch def
- /extra exch def
- /circum exch def
-
- /ZXCTR [ centre ] cvx def
- /ZFCTR [ circum (CTR) ldiagdolabel ] cvx def
- /ZAREF ZFCTR ZXCTR ldiagangleto def
- /ZAMIN 0 dg def
- /ZPMIN [ circum (CTR) ldiagdolabel ZAREF ZAMIN add
- circum (CIRCUM) ldiagdolabel ldiagpadd
- 0 0 extra ZAREF ZAMIN add ldiagatangle
- ldiagpadd ] cvx def
-
- /ZAMAX 90 dg def
- /ZPMAX [ circum (CTR) ldiagdolabel ZAREF ZAMAX add
- circum (CIRCUM) ldiagdolabel ldiagpadd
- 0 0 extra ZAREF ZAMAX add ldiagatangle
- ldiagpadd ] cvx def
-
- 1 1 20
- { /xval exch def
- /ZAMID ZAMIN ZAMAX add 0.5 mul def
- /ZPMID [ circum (CTR) ldiagdolabel ZAREF ZAMID add
- circum (CIRCUM) ldiagdolabel ldiagpadd
- 0 0 extra ZAREF ZAMID add ldiagatangle
- ldiagpadd ] cvx def
- ZPMID ZXCTR ldiagdistance ZFCTR ZXCTR ldiagdistance gt
- {
- /ZAMAX [ ZAMID ] cvx def
- /ZPMAX [ ZPMID ] cvx def
- }
- {
- /ZAMIN [ ZAMID ] cvx def
- /ZPMIN [ ZPMID ] cvx def
- } ifelse
- } for
- ZPMID
-} def
-
-% fromarrowlength toarrowlength { from } { to } xindent zindent ldiaglinepath -
-/ldiaglinepath
-{
- % (entering ldiaglinepath) 0 ldiagdebugprint
- /zindent exch def
- /xindent exch def
- cvlit /to exch def
- cvlit /from exch def
- /toarrowlength exch def
- /fromarrowlength exch def
-
- from (CTR) ldiagdolabel to (CTR) ldiagdolabel ldiagangleto
- /FROM@ANGLE ldiagangledef
- from (CTR) ldiagdolabel FROM@ANGLE from (CIRCUM) ldiagdolabel ldiagpadd
- 0 0 fromarrowlength FROM@ANGLE ldiagatangle ldiagpadd
- /FROM ldiagpointdef
-
- FROM@ANGLE /TO@ANGLE ldiagangledef
- to (CTR) ldiagdolabel TO@ANGLE 180 dg sub to (CIRCUM) ldiagdolabel ldiagpadd
- 0 0 toarrowlength TO@ANGLE 180 dg sub ldiagatangle ldiagpadd /TO ldiagpointdef
-
- FROM 0.5 ldiagpmul TO 0.5 ldiagpmul ldiagpadd /LMID ldiagpointdef
- FROM@ANGLE /LMID@ANGLE ldiagangledef
-
- /XINDENT xindent FROM LMID ldiagdistance ldiagmin def
- FROM 0 0 XINDENT FROM@ANGLE ldiagatangle ldiagpadd /LFROM ldiagpointdef
- FROM@ANGLE /LFROM@ANGLE ldiagangledef
-
- /ZINDENT zindent TO LMID ldiagdistance ldiagmin def
- 0 0 ZINDENT FROM@ANGLE ldiagatangle TO ldiagpsub /LTO ldiagpointdef
- FROM@ANGLE /LTO@ANGLE ldiagangledef
-
- direct { FROM TO } { FROM LFROM LMID LTO TO } ifelse
-
- % (leaving ldiaglinepath) 0 ldiagdebugprint
-} def
-
-% fromarrowlength toarrowlength { from } { to } xindent zindent pathgap ldiagdoublelinepath -
-/ldiagdoublelinepath
-{
- % (entering ldiagdoublelinepath) 0 ldiagdebugprint
- /pathgap exch def
- /zindent exch def
- /xindent exch def
- cvlit /to exch def
- cvlit /from exch def
- /toarrowlength exch def
- /fromarrowlength exch def
-
- from (CTR) ldiagdolabel to (CTR) ldiagdolabel ldiagangleto
- /FROM@ANGLE ldiagangledef
- from (CTR) ldiagdolabel FROM@ANGLE from (CIRCUM) ldiagdolabel ldiagpadd
- 0 0 fromarrowlength FROM@ANGLE ldiagatangle ldiagpadd
- /FROM ldiagpointdef
-
- FROM@ANGLE /TO@ANGLE ldiagangledef
- to (CTR) ldiagdolabel TO@ANGLE 180 dg sub to (CIRCUM) ldiagdolabel ldiagpadd
- 0 0 toarrowlength TO@ANGLE 180 dg sub ldiagatangle ldiagpadd /TO ldiagpointdef
-
- FROM 0.5 ldiagpmul TO 0.5 ldiagpmul ldiagpadd /LMID ldiagpointdef
- FROM@ANGLE /LMID@ANGLE ldiagangledef
-
- /XINDENT xindent FROM LMID ldiagdistance ldiagmin def
- FROM 0 0 XINDENT FROM@ANGLE ldiagatangle ldiagpadd /LFROM ldiagpointdef
- FROM@ANGLE /LFROM@ANGLE ldiagangledef
-
- /ZINDENT zindent TO LMID ldiagdistance ldiagmin def
- 0 0 ZINDENT FROM@ANGLE ldiagatangle TO ldiagpsub /LTO ldiagpointdef
- FROM@ANGLE /LTO@ANGLE ldiagangledef
-
- direct {
- FROM pathgap 2 div FROM@ANGLE 90 dg sub ldiagatangle
- TO pathgap 2 div FROM@ANGLE 90 dg sub ldiagatangle
- []
- FROM pathgap 2 div FROM@ANGLE 90 dg add ldiagatangle
- TO pathgap 2 div FROM@ANGLE 90 dg add ldiagatangle
- }
- {
- FROM pathgap 2 div FROM@ANGLE 90 dg sub ldiagatangle
- LFROM pathgap 2 div FROM@ANGLE 90 dg sub ldiagatangle
- LMID pathgap 2 div FROM@ANGLE 90 dg sub ldiagatangle
- LTO pathgap 2 div FROM@ANGLE 90 dg sub ldiagatangle
- TO pathgap 2 div FROM@ANGLE 90 dg sub ldiagatangle
- []
- FROM pathgap 2 div FROM@ANGLE 90 dg add ldiagatangle
- LFROM pathgap 2 div FROM@ANGLE 90 dg add ldiagatangle
- LMID pathgap 2 div FROM@ANGLE 90 dg add ldiagatangle
- LTO pathgap 2 div FROM@ANGLE 90 dg add ldiagatangle
- TO pathgap 2 div FROM@ANGLE 90 dg add ldiagatangle
- } ifelse
-
- % (leaving ldiagdoublelinepath) 0 ldiagdebugprint
-} def
-
-% fromarrowlen toarrowlen { from } { to } xindent zindent bias ldiagacurvepath -
-/ldiagacurvepath
-{
- % (entering ldiagacurvepath) 0 ldiagdebugprint
- /bias exch def
- /zindent exch def
- /xindent exch def
- cvlit /to exch def
- cvlit /from exch def
- /toarrowlength exch def
- /fromarrowlength exch def
-
- %/B1 bias 0.02 ft ldiagmax def
- %/B2 from (CTR) ldiagdolabel to (CTR) ldiagdolabel ldiagdistance 0.5 mul def
- %/BIAS B1 B2 ldiagmin def
- /BIAS bias 0.02 ft ldiagmax def
- /XMID [ from (CTR) ldiagdolabel 0.5 ldiagpmul
- to (CTR) ldiagdolabel 0.5 ldiagpmul ldiagpadd ] cvx def
- /XTOP [ XMID 0 0 BIAS from (CTR) ldiagdolabel to (CTR) ldiagdolabel
- ldiagangleto 90 dg sub ldiagatangle ldiagpadd ] cvx def
- /CTR [ from (CTR) ldiagdolabel XTOP ldiaglinebetween
- to (CTR) ldiagdolabel XTOP ldiaglinebetween
- ldiaglineintersect ] cvx def
-
- from fromarrowlength [ CTR ] cvx ldiagaabout /FROM ldiagpointdef
- from (CTR) ldiagdolabel FROM ldiagdistance 0 gt
- { from (CTR) ldiagdolabel FROM ldiagangleto
- }
- { CTR FROM ldiagangleto 90 dg add
- } ifelse /FROM@ANGLE ldiagangledef
-
- to toarrowlength [ CTR ] cvx ldiagcabout /TO ldiagpointdef
- TO to (CTR) ldiagdolabel ldiagdistance 0 gt
- { TO to (CTR) ldiagdolabel ldiagangleto
- }
- { CTR TO ldiagangleto 90 dg add
- } ifelse /TO@ANGLE ldiagangledef
-
- /RADIUS CTR FROM ldiagdistance def
- CTR 0 0 RADIUS CTR FROM ldiagangleto 360 dg CTR TO ldiagangleto
- add CTR FROM ldiagangleto sub cvi 360 mod 0.5 mul add
- ldiagatangle ldiagpadd /LMID ldiagpointdef
- CTR LMID ldiagangleto 90 dg add /LMID@ANGLE ldiagangledef
-
- /XINDENT xindent FROM LMID ldiagdistance ldiagmin def
- CTR 0 0 RADIUS CTR FROM 0 0 XINDENT FROM@ANGLE ldiagatangle
- ldiagpadd ldiagangleto ldiagatangle ldiagpadd /LFROM ldiagpointdef
- CTR LFROM ldiagangleto 90 dg add /LFROM@ANGLE ldiagangledef
-
- /ZINDENT zindent TO LMID ldiagdistance ldiagmin def
- CTR 0 0 RADIUS CTR TO 0 0 ZINDENT TO@ANGLE 180 dg add
- ldiagatangle ldiagpadd ldiagangleto ldiagatangle ldiagpadd /LTO ldiagpointdef
- CTR LTO ldiagangleto 90 dg add /LTO@ANGLE ldiagangledef
-
- direct
- { FROM [CTR] TO }
- { FROM [CTR] LFROM [CTR] LMID [CTR] LTO [CTR] TO }
- ifelse
-
- % (leaving ldiagacurvepath) 0 ldiagdebugprint
-} def
-
-% fromarrowlen toarrowlen { from } { to } xindent zindent bias ldiagccurvepath -
-/ldiagccurvepath
-{
- % (entering ldiagccurvepath) 0 ldiagdebugprint
- % count ( stack size is) 1 ldiagdebugprint pop
- /bias exch def
- /zindent exch def
- /xindent exch def
- cvlit /to exch def
- cvlit /from exch def
- /toarrowlength exch def
- /fromarrowlength exch def
-
- %/B1 bias 0.02 ft ldiagmax def
- %/B2 from (CTR) ldiagdolabel to (CTR) ldiagdolabel ldiagdistance 0.5 mul def
- %/BIAS B1 B2 ldiagmin def
- /BIAS bias 0.02 ft ldiagmax def
- /XMID [ from (CTR) ldiagdolabel 0.5 ldiagpmul
- to (CTR) ldiagdolabel 0.5 ldiagpmul ldiagpadd ] cvx def
- /XTOP [ XMID 0 0 BIAS from (CTR) ldiagdolabel to (CTR) ldiagdolabel
- ldiagangleto 90 dg add ldiagatangle ldiagpadd ] cvx def
- /CTR [ from (CTR) ldiagdolabel XTOP ldiaglinebetween
- to (CTR) ldiagdolabel XTOP ldiaglinebetween ldiaglineintersect ] cvx def
-
- from fromarrowlength [ CTR ] cvx ldiagcabout /FROM ldiagpointdef
- from (CTR) ldiagdolabel FROM ldiagdistance 0 gt
- { from (CTR) ldiagdolabel FROM ldiagangleto }
- { CTR FROM ldiagangleto 90 dg sub }
- ifelse /FROM@ANGLE ldiagangledef
-
- to toarrowlength [ CTR ] cvx ldiagaabout /TO ldiagpointdef
- TO to (CTR) ldiagdolabel ldiagdistance 0 gt
- { TO to (CTR) ldiagdolabel ldiagangleto }
- { CTR TO ldiagangleto 90 dg sub }
- ifelse /TO@ANGLE ldiagangledef
-
- /RADIUS [ CTR FROM ldiagdistance ] cvx def
- CTR 0 0 RADIUS CTR TO ldiagangleto 360 dg CTR FROM ldiagangleto add
- CTR TO ldiagangleto sub cvi 360 cvi mod 2 div add ldiagatangle
- ldiagpadd /LMID ldiagpointdef
- CTR LMID ldiagangleto 90 dg sub /LMID@ANGLE ldiagangledef
-
- /XINDENT [ xindent FROM LMID ldiagdistance ldiagmin ] cvx def
- CTR 0 0 RADIUS CTR FROM 0 0 XINDENT FROM@ANGLE ldiagatangle ldiagpadd
- ldiagangleto ldiagatangle ldiagpadd /LFROM ldiagpointdef
- CTR LFROM ldiagangleto 90 dg sub /LFROM@ANGLE ldiagangledef
-
- /ZINDENT [ zindent TO LMID ldiagdistance ldiagmin ] cvx def
- CTR 0 0 RADIUS CTR TO 0 0 ZINDENT TO@ANGLE 180 dg add ldiagatangle
- ldiagpadd ldiagangleto ldiagatangle ldiagpadd /LTO ldiagpointdef
- CTR LTO ldiagangleto 90 dg sub /LTO@ANGLE ldiagangledef
-
- direct
- { FROM [CTR clockwise] TO }
- { FROM [CTR clockwise] LFROM [CTR clockwise]
- LMID [CTR clockwise] LTO [CTR clockwise] TO }
- ifelse
- % (leaving ldiagccurvepath) 0 ldiagdebugprint
-} def
-
-
-% farr tarr { from } { to } xindent zindent [frompt] [topt] ldiagbezierpath -
-/ldiagbezierpath
-{
- % (entering ldiagbezierpath) 0 ldiagdebugprint
- % count ( stack size is) 1 ldiagdebugprint pop
- cvx /topt exch def
- cvx /frompt exch def
- /zindent exch def
- /xindent exch def
- cvlit /to exch def
- cvlit /from exch def
- /toarrowlength exch def
- /fromarrowlength exch def
-
- from (CTR) ldiagdolabel frompt ldiagangleto /FROM@ANGLE ldiagangledef
- from (CTR) ldiagdolabel FROM@ANGLE from (CIRCUM) ldiagdolabel
- ldiagpadd 0 0 fromarrowlength FROM@ANGLE ldiagatangle ldiagpadd
- /FROM ldiagpointdef
-
- topt to (CTR) ldiagdolabel ldiagangleto /TO@ANGLE ldiagangledef
- to (CTR) ldiagdolabel TO@ANGLE 180 dg add to (CIRCUM) ldiagdolabel
- ldiagpadd 0 0 toarrowlength TO@ANGLE 180 dg add ldiagatangle ldiagpadd
- /TO ldiagpointdef
-
- FROM 0 0 xindent FROM@ANGLE ldiagatangle ldiagpadd
- /LFROM ldiagpointdef
- FROM@ANGLE /LFROM@ANGLE ldiagangledef
-
- TO 0 0 zindent TO@ANGLE 180 dg add ldiagatangle ldiagpadd
- /LTO ldiagpointdef
- TO@ANGLE /LTO@ANGLE ldiagangledef
-
- FROM TO ldiagpadd frompt ldiagpadd topt ldiagpadd 0.25 ldiagpmul
- /LMID ldiagpointdef
-
- FROM [frompt topt] TO
-
- % (leaving ldiagbezierpath) 0 ldiagdebugprint
- % count ( stack size is) 1 ldiagdebugprint pop
-} def
-
-
-% farr tarr { from } { to } xindent zindent ldiagvhlinepath -
-/ldiagvhlinepath
-{
- % (entering ldiagvhlinepath) 0 ldiagdebugprint
- % count ( stack size is) 1 ldiagdebugprint pop
- /zindent exch def
- /xindent exch def
- cvlit /to exch def
- cvlit /from exch def
- /toarrowlength exch def
- /fromarrowlength exch def
-
- /CTR [ from (CTR) ldiagdolabel pop to (CTR) ldiagdolabel exch pop ] cvx def
- /FANG [ from (CTR) ldiagdolabel CTR ldiagangleto ] cvx def
- /TANG [ to (CTR) ldiagdolabel CTR ldiagangleto ] cvx def
-
- from (CTR) ldiagdolabel FANG from (CIRCUM) ldiagdolabel ldiagpadd
- 0 0 fromarrowlength FANG ldiagatangle ldiagpadd /FROM ldiagpointdef
- FANG /FROM@ANGLE ldiagangledef
-
- to (CTR) ldiagdolabel TANG to (CIRCUM) ldiagdolabel ldiagpadd
- 0 0 toarrowlength TANG ldiagatangle ldiagpadd /TO ldiagpointdef
- TANG 180 dg add /TO@ANGLE ldiagangledef
-
- /FDIST [ FROM CTR ldiagdistance ] cvx def
- /TDIST [ TO CTR ldiagdistance ] cvx def
- /XINDENT [ xindent FDIST ldiagmin ] cvx def
- /ZINDENT [ zindent TDIST ldiagmin ] cvx def
- FROM 0 0 XINDENT FANG ldiagatangle ldiagpadd /LFROM ldiagpointdef
- FROM@ANGLE /LFROM@ANGLE ldiagangledef
- TO 0 0 ZINDENT TANG ldiagatangle ldiagpadd /LTO ldiagpointdef
- TO@ANGLE /LTO@ANGLE ldiagangledef
-
- CTR /LMID ldiagpointdef
- 0 0 1 ft FANG 180 dg add ldiagatangle
- 0 0 1 ft TANG 180 dg add ldiagatangle
- ldiagangleto /LMID@ANGLE ldiagangledef
-
- FROM LFROM LMID LTO TO
-
- % (leaving ldiagvhlinepath) 0 ldiagdebugprint
- % count ( stack size is) 1 ldiagdebugprint pop
-} def
-
-% farr tarr { from } { to } xindent zindent radius ldiagvhcurvepath -
-/ldiagvhcurvepath
-{
- % (entering ldiagvhcurvepath) 0 ldiagdebugprint
- % count ( stack size is) 1 ldiagdebugprint pop
- /radius exch def
- /zindent exch def
- /xindent exch def
- cvlit /to exch def
- cvlit /from exch def
- /toarrowlength exch def
- /fromarrowlength exch def
-
- /CTR [ from (CTR) ldiagdolabel pop to (CTR) ldiagdolabel exch pop ] cvx def
- /FANG [ from (CTR) ldiagdolabel CTR ldiagangleto ] cvx def
- /TANG [ to (CTR) ldiagdolabel CTR ldiagangleto ] cvx def
-
- from (CTR) ldiagdolabel FANG from (CIRCUM) ldiagdolabel ldiagpadd
- 0 0 fromarrowlength FANG ldiagatangle ldiagpadd /FROM ldiagpointdef
- FANG /FROM@ANGLE ldiagangledef
-
- to (CTR) ldiagdolabel TANG to (CIRCUM) ldiagdolabel ldiagpadd
- 0 0 toarrowlength TANG ldiagatangle ldiagpadd /TO ldiagpointdef
- TANG 180 dg add /TO@ANGLE ldiagangledef
-
- /FDIST [ FROM CTR ldiagdistance ] cvx def
- /TDIST [ TO CTR ldiagdistance ] cvx def
- /RADIUS [ radius FDIST TDIST ldiagmin ldiagmin ] cvx def
- /XINDENT [ xindent FDIST RADIUS sub ldiagmin ] cvx def
- /ZINDENT [ zindent TDIST RADIUS sub ldiagmin ] cvx def
-
- FROM 0 0 XINDENT FANG ldiagatangle ldiagpadd /LFROM ldiagpointdef
- FROM@ANGLE /LFROM@ANGLE ldiagangledef
- TO 0 0 ZINDENT TANG ldiagatangle ldiagpadd /LTO ldiagpointdef
- TO@ANGLE /LTO@ANGLE ldiagangledef
-
- /FCTR [ CTR 0 0 RADIUS FROM@ANGLE 180 dg add ldiagatangle ldiagpadd ] cvx def
- /TCTR [ CTR 0 0 RADIUS TO@ANGLE ldiagatangle ldiagpadd ] cvx def
- /XCTR [ CTR 0 0 RADIUS FROM@ANGLE 180 dg add ldiagatangle ldiagpadd
- 0 0 RADIUS TO@ANGLE ldiagatangle ldiagpadd ] cvx def
- XCTR 0 0 RADIUS XCTR CTR ldiagangleto ldiagatangle ldiagpadd
- /LMID ldiagpointdef
- FCTR TCTR ldiagangleto /LMID@ANGLE ldiagangledef
-
- FROM LFROM FCTR
- {[XCTR clockwise]} {} {} {} {} {[XCTR]} {[XCTR clockwise]} {[XCTR]}
- FCTR TCTR ldiagangleto ldiagquadcase
- TCTR LTO TO
-
- % (leaving ldiagvhcurvepath) 0 ldiagdebugprint
- % count ( stack size is) 1 ldiagdebugprint pop
-} def
-
-% farr tarr { from } { to } xindent zindent ldiaghvlinepath -
-/ldiaghvlinepath
-{
- % (entering ldiaghvlinepath) 0 ldiagdebugprint
- % count ( stack size is) 1 ldiagdebugprint pop
- /zindent exch def
- /xindent exch def
- cvlit /to exch def
- cvlit /from exch def
- /toarrowlength exch def
- /fromarrowlength exch def
-
- /CTR [ to (CTR) ldiagdolabel pop from (CTR) ldiagdolabel exch pop ] cvx def
- /FANG [ from (CTR) ldiagdolabel CTR ldiagangleto ] cvx def
- /TANG [ to (CTR) ldiagdolabel CTR ldiagangleto ] cvx def
-
- from (CTR) ldiagdolabel FANG from (CIRCUM) ldiagdolabel ldiagpadd
- 0 0 fromarrowlength FANG ldiagatangle ldiagpadd /FROM ldiagpointdef
- FANG /FROM@ANGLE ldiagangledef
-
- to (CTR) ldiagdolabel TANG to (CIRCUM) ldiagdolabel ldiagpadd
- 0 0 toarrowlength TANG ldiagatangle ldiagpadd /TO ldiagpointdef
- TANG 180 dg add /TO@ANGLE ldiagangledef
-
- /FDIST [ FROM CTR ldiagdistance ] cvx def
- /TDIST [ TO CTR ldiagdistance ] cvx def
- /XINDENT [ xindent FDIST ldiagmin ] cvx def
- /ZINDENT [ zindent TDIST ldiagmin ] cvx def
-
- FROM 0 0 XINDENT FANG ldiagatangle ldiagpadd /LFROM ldiagpointdef
- FROM@ANGLE /LFROM@ANGLE ldiagangledef
- TO 0 0 ZINDENT TANG ldiagatangle ldiagpadd /LTO ldiagpointdef
- TO@ANGLE /LTO@ANGLE ldiagangledef
-
- CTR /LMID ldiagpointdef
- 0 0 1 ft FANG 180 dg add ldiagatangle
- 0 0 1 ft TANG 180 dg add ldiagatangle ldiagangleto
- /LMID@ANGLE ldiagangledef
-
- FROM LFROM LMID LTO TO
-
- % (leaving ldiaghvlinepath) 0 ldiagdebugprint
- % count ( stack size is) 1 ldiagdebugprint pop
-} def
-
-% farr tarr { from } { to } xindent zindent radius ldiaghvcurvepath -
-/ldiaghvcurvepath
-{
- % (entering ldiaghvcurvepath) 0 ldiagdebugprint
- % count ( stack size is) 1 ldiagdebugprint pop
- /radius exch def
- /zindent exch def
- /xindent exch def
- cvlit /to exch def
- cvlit /from exch def
- /toarrowlength exch def
- /fromarrowlength exch def
-
- /CTR [ to (CTR) ldiagdolabel pop from (CTR) ldiagdolabel exch pop ] cvx def
- /FANG [ from (CTR) ldiagdolabel CTR ldiagangleto ] cvx def
- /TANG [ to (CTR) ldiagdolabel CTR ldiagangleto ] cvx def
-
- from (CTR) ldiagdolabel FANG from (CIRCUM) ldiagdolabel ldiagpadd
- 0 0 fromarrowlength FANG ldiagatangle ldiagpadd /FROM ldiagpointdef
- FANG /FROM@ANGLE ldiagangledef
-
- to (CTR) ldiagdolabel TANG to (CIRCUM) ldiagdolabel ldiagpadd
- 0 0 toarrowlength TANG ldiagatangle ldiagpadd /TO ldiagpointdef
- TANG 180 dg add /TO@ANGLE ldiagangledef
-
- /FDIST [ FROM CTR ldiagdistance ] cvx def
- /TDIST [ TO CTR ldiagdistance ] cvx def
- /RADIUS [ radius FDIST TDIST ldiagmin ldiagmin ] cvx def
- /XINDENT [ xindent FDIST RADIUS sub ldiagmin ] cvx def
- /ZINDENT [ zindent TDIST RADIUS sub ldiagmin ] cvx def
- FROM 0 0 XINDENT FANG ldiagatangle ldiagpadd /LFROM ldiagpointdef
- FROM@ANGLE /LFROM@ANGLE ldiagangledef
- TO 0 0 ZINDENT TANG ldiagatangle ldiagpadd /LTO ldiagpointdef
- TO@ANGLE /LTO@ANGLE ldiagangledef
-
- /FCTR [ CTR 0 0 RADIUS FROM@ANGLE 180 dg add ldiagatangle ldiagpadd ] cvx def
- /TCTR [ CTR 0 0 RADIUS TO@ANGLE ldiagatangle ldiagpadd ] cvx def
- /XCTR [ CTR 0 0 RADIUS FROM@ANGLE 180 dg add ldiagatangle ldiagpadd
- 0 0 RADIUS TO@ANGLE ldiagatangle ldiagpadd ] cvx def
- XCTR 0 0 RADIUS XCTR CTR ldiagangleto ldiagatangle ldiagpadd
- /LMID ldiagpointdef
- FCTR TCTR ldiagangleto /LMID@ANGLE ldiagangledef
-
- FROM LFROM FCTR
- {[XCTR]} {} {} {} {} {[XCTR clockwise]} {[XCTR]} {[XCTR clockwise]}
- FCTR TCTR ldiagangleto ldiagquadcase
- TCTR LTO TO
-
- % (leaving ldiaghvcurvepath) 0 ldiagdebugprint
- % count ( stack size is) 1 ldiagdebugprint pop
-} def
-
-% farr tarr { from } { to } xindent zindent bias ldiaglvrlinepath -
-/ldiaglvrlinepath
-{
- % (entering ldiaglvrlinepath) 0 ldiagdebugprint
- % count ( stack size is) 1 ldiagdebugprint pop
- /bias exch def
- /zindent exch def
- /xindent exch def
- cvlit /to exch def
- cvlit /from exch def
- /toarrowlength exch def
- /fromarrowlength exch def
-
- from (CTR) ldiagdolabel 180 dg from (CIRCUM) ldiagdolabel ldiagpadd
- 0 0 fromarrowlength 180 dg ldiagatangle ldiagpadd /FROM ldiagpointdef
- 180 dg /FROM@ANGLE ldiagangledef
-
- to (CTR) ldiagdolabel 180 dg to (CIRCUM) ldiagdolabel ldiagpadd
- 0 0 toarrowlength 180 dg ldiagatangle ldiagpadd /TO ldiagpointdef
- 0 dg /TO@ANGLE ldiagangledef
-
- /XLEFT [ FROM pop TO pop ldiagmin bias sub ] cvx def
- XLEFT FROM exch pop /P1 ldiagpointdef
- XLEFT TO exch pop /P2 ldiagpointdef
- /VERT [ P1 P2 ldiagangleto ] cvx def
- P1 P1 0 0 1 ft 180 dg ldiagatangle ldiagpadd 0 0 1 ft VERT ldiagatangle
- ldiagpadd ldiagangleto /P1@ANGLE ldiagangledef
- P2 P2 0 0 1 ft 0 dg ldiagatangle ldiagpadd 0 0 1 ft VERT ldiagatangle
- ldiagpadd ldiagangleto /P2@ANGLE ldiagangledef
-
- P1 0.5 ldiagpmul P2 0.5 ldiagpmul ldiagpadd /LMID ldiagpointdef
- VERT /LMID@ANGLE ldiagangledef
-
- /XINDENT [ xindent FROM P1 ldiagdistance ldiagmin ] cvx def
- /ZINDENT [ zindent P2 TO ldiagdistance ldiagmin ] cvx def
- XINDENT 0 FROM ldiagpsub /LFROM ldiagpointdef
- 180 dg /LFROM@ANGLE ldiagangledef
- ZINDENT 0 TO ldiagpsub /LTO ldiagpointdef
- 0 dg /LTO@ANGLE ldiagangledef
-
- FROM LFROM P1 LMID P2 LTO TO
-
- % (leaving ldiaglvrlinepath) 0 ldiagdebugprint
- % count ( stack size is) 1 ldiagdebugprint pop
-} def
-
-% farr tarr { from } { to } xindent zindent bias radius ldiaglvrcurvepath -
-/ldiaglvrcurvepath
-{
- % (entering ldiaglvrcurvepath) 0 ldiagdebugprint
- % count ( stack size is) 1 ldiagdebugprint pop
- /radius exch def
- /bias exch def
- /zindent exch def
- /xindent exch def
- cvlit /to exch def
- cvlit /from exch def
- /toarrowlength exch def
- /fromarrowlength exch def
-
- from (CTR) ldiagdolabel 180 dg from (CIRCUM) ldiagdolabel ldiagpadd 0 0
- fromarrowlength 180 dg ldiagatangle ldiagpadd /FROM ldiagpointdef
- 180 dg /FROM@ANGLE ldiagangledef
- to (CTR) ldiagdolabel 180 dg to (CIRCUM) ldiagdolabel ldiagpadd 0 0
- toarrowlength 180 dg ldiagatangle ldiagpadd /TO ldiagpointdef
- 0 dg /TO@ANGLE ldiagangledef
- /XLEFT [ FROM pop TO pop ldiagmin bias sub ] cvx def
- /XP1 [ XLEFT FROM exch pop ] cvx def
- /XP2 [ XLEFT TO exch pop ] cvx def
- /VERT [ XP1 XP2 ldiagangleto ] cvx def
- XP1 0.5 ldiagpmul XP2 0.5 ldiagpmul ldiagpadd /LMID ldiagpointdef
- VERT /LMID@ANGLE ldiagangledef
- /XINDENT [ xindent FROM XP1 ldiagdistance ldiagmin ] cvx def
- /ZINDENT [ zindent XP2 TO ldiagdistance ldiagmin ] cvx def
- XINDENT 0 FROM ldiagpsub /LFROM ldiagpointdef
- 180 dg /LFROM@ANGLE ldiagangledef
- ZINDENT 0 TO ldiagpsub /LTO ldiagpointdef
- 0 dg /LTO@ANGLE ldiagangledef
- /RADIUS [ radius XP1 XP2 ldiagdistance 2 div ldiagmin ] cvx def
- /XP1PRE [ XP1 0 0 RADIUS 0 dg ldiagatangle ldiagpadd ] cvx def
- /XP1POST [ XP1 0 0 RADIUS VERT ldiagatangle ldiagpadd ] cvx def
- /XP1CTR [ XP1PRE 0 0 RADIUS VERT ldiagatangle ldiagpadd ] cvx def
- XP1CTR 0 0 RADIUS XP1CTR XP1 ldiagangleto ldiagatangle ldiagpadd
- /P1 ldiagpointdef
- XP1PRE XP1POST ldiagangleto /P1@ANGLE ldiagangledef
- /XP2PRE [ 0 0 RADIUS VERT ldiagatangle XP2 ldiagpsub ] cvx def
- /XP2POST [ XP2 0 0 RADIUS 0 dg ldiagatangle ldiagpadd ] cvx def
- /XP2CTR [ XP2PRE 0 0 RADIUS 0 dg ldiagatangle ldiagpadd ] cvx def
- XP2CTR 0 0 RADIUS XP2CTR XP2 ldiagangleto ldiagatangle ldiagpadd
- /P2 ldiagpointdef
- XP2PRE XP2POST ldiagangleto /P2@ANGLE ldiagangledef
- FROM LFROM XP1PRE
- { } { [XP1CTR] P1 [XP1CTR] } { } { [XP1CTR clockwise] P1 [XP1CTR clockwise] }
- { } { } { } { } VERT round ldiagquadcase
- XP1POST LMID XP2PRE
- { } { [XP2CTR] P2 [XP2CTR] } { } { [XP2CTR clockwise] P2 [XP2CTR clockwise] }
- { } { } { } { } VERT round ldiagquadcase
- XP2POST LTO TO
-
- % (leaving ldiaglvrcurvepath) 0 ldiagdebugprint
- % count ( stack size is) 1 ldiagdebugprint pop
-} def
-
-% farr tarr { from } { to } xindent zindent bias ldiagrvllinepath -
-/ldiagrvllinepath
-{
- % (entering ldiagrvllinepath) 0 ldiagdebugprint
- % count ( stack size is) 1 ldiagdebugprint pop
- /bias exch def
- /zindent exch def
- /xindent exch def
- cvlit /to exch def
- cvlit /from exch def
- /toarrowlength exch def
- /fromarrowlength exch def
-
- from (CTR) ldiagdolabel 0 dg from (CIRCUM) ldiagdolabel ldiagpadd
- 0 0 fromarrowlength 0 dg ldiagatangle ldiagpadd /FROM ldiagpointdef
- 0 dg /FROM@ANGLE ldiagangledef
- to (CTR) ldiagdolabel 0 dg to (CIRCUM) ldiagdolabel ldiagpadd
- 0 0 toarrowlength 0 dg ldiagatangle ldiagpadd /TO ldiagpointdef
- 180 dg /TO@ANGLE ldiagangledef
- /XRIGHT [ FROM pop TO pop ldiagmax bias add ] cvx def
- XRIGHT FROM exch pop /P1 ldiagpointdef
- XRIGHT TO exch pop /P2 ldiagpointdef
- /VERT [ P1 P2 ldiagangleto ] cvx def
- P1 P1 0 0 1 ft 0 dg ldiagatangle ldiagpadd 0 0 1 ft VERT ldiagatangle
- ldiagpadd ldiagangleto /P1@ANGLE ldiagangledef
- P2 P2 0 0 1 ft 180 dg ldiagatangle ldiagpadd 0 0 1 ft VERT ldiagatangle
- ldiagpadd ldiagangleto /P2@ANGLE ldiagangledef
- P1 0.5 ldiagpmul P2 0.5 ldiagpmul ldiagpadd /LMID ldiagpointdef
- VERT /LMID@ANGLE ldiagangledef
- /XINDENT [ xindent FROM P1 ldiagdistance ldiagmin ] cvx def
- /ZINDENT [ zindent P2 TO ldiagdistance ldiagmin ] cvx def
- FROM XINDENT 0 ldiagpadd /LFROM ldiagpointdef
- 0 dg /LFROM@ANGLE ldiagangledef
- TO ZINDENT 0 ldiagpadd /LTO ldiagpointdef
- 180 dg /LTO@ANGLE ldiagangledef
- FROM LFROM P1 LMID P2 LTO TO
-
- % (leaving ldiagrvllinepath) 0 ldiagdebugprint
- % count ( stack size is) 1 ldiagdebugprint pop
-} def
-
-
-% farr tarr { from } { to } xindent zindent bias radius ldiagrvlcurvepath -
-/ldiagrvlcurvepath
-{
- % (entering ldiagrvlcurvepath) 0 ldiagdebugprint
- % count ( stack size is) 1 ldiagdebugprint pop
- /radius exch def
- /bias exch def
- /zindent exch def
- /xindent exch def
- cvlit /to exch def
- cvlit /from exch def
- /toarrowlength exch def
- /fromarrowlength exch def
-
- from (CTR) ldiagdolabel 0 dg from (CIRCUM) ldiagdolabel ldiagpadd
- 0 0 fromarrowlength 0 dg ldiagatangle ldiagpadd /FROM ldiagpointdef
- 0 dg /FROM@ANGLE ldiagangledef
- to (CTR) ldiagdolabel 0 dg to (CIRCUM) ldiagdolabel ldiagpadd
- 0 0 toarrowlength 0 dg ldiagatangle ldiagpadd /TO ldiagpointdef
- 180 dg /TO@ANGLE ldiagangledef
- /XRIGHT [ FROM pop TO pop ldiagmax bias add ] cvx def
- /XP1 [ XRIGHT FROM exch pop ] cvx def
- /XP2 [ XRIGHT TO exch pop ] cvx def
- /VERT [ XP1 XP2 ldiagangleto ] cvx def
- XP1 0.5 ldiagpmul XP2 0.5 ldiagpmul ldiagpadd /LMID ldiagpointdef
- VERT /LMID@ANGLE ldiagangledef
- /XINDENT [ xindent FROM XP1 ldiagdistance ldiagmin ] cvx def
- /ZINDENT [ zindent XP2 TO ldiagdistance ldiagmin ] cvx def
- FROM XINDENT 0 ldiagpadd /LFROM ldiagpointdef
- 0 dg /LFROM@ANGLE ldiagangledef
- TO ZINDENT 0 ldiagpadd /LTO ldiagpointdef
- 180 dg /LTO@ANGLE ldiagangledef
- /RADIUS [ radius XP1 XP2 ldiagdistance 0.5 mul ldiagmin ] cvx def
- /XP1PRE [ XP1 0 0 RADIUS 180 dg ldiagatangle ldiagpadd ] cvx def
- /XP1POST [ XP1 0 0 RADIUS VERT ldiagatangle ldiagpadd ] cvx def
- /XP1CTR [ XP1PRE 0 0 RADIUS VERT ldiagatangle ldiagpadd ] cvx def
- XP1CTR 0 0 RADIUS XP1CTR XP1 ldiagangleto ldiagatangle ldiagpadd
- /P1 ldiagpointdef
- XP1PRE XP1POST ldiagangleto /P1@ANGLE ldiagangledef
- /XP2PRE [ 0 0 RADIUS VERT ldiagatangle XP2 ldiagpsub ] cvx def
- /XP2POST [ XP2 0 0 RADIUS 180 dg ldiagatangle ldiagpadd ] cvx def
- /XP2CTR [ XP2PRE 0 0 RADIUS 180 dg ldiagatangle ldiagpadd ] cvx def
- XP2CTR 0 0 RADIUS XP2CTR XP2 ldiagangleto ldiagatangle ldiagpadd
- /P2 ldiagpointdef
- XP2PRE XP2POST ldiagangleto /P2@ANGLE ldiagangledef
- FROM LFROM XP1PRE
- {} {[XP1CTR clockwise] P1 [XP1CTR clockwise]} {} {[XP1CTR] P1 [XP1CTR]}
- {} {} {} {} VERT round ldiagquadcase
- XP1POST LMID XP2PRE
- {} {[XP2CTR clockwise] P2 [XP2CTR clockwise]} {} {[XP2CTR] P2 [XP2CTR]}
- {} {} {} {} VERT round ldiagquadcase
- XP2POST LTO TO
-
- % (leaving ldiagrvlcurvepath) 0 ldiagdebugprint
- % count ( stack size is) 1 ldiagdebugprint pop
-} def
-
-% farr tarr { from } { to } xindent zindent bias fbias tbias ldiagdwraplinepath -
-/ldiagdwraplinepath
-{
- % (entering ldiagdwraplinepath) 0 ldiagdebugprint
- % count ( stack size is) 1 ldiagdebugprint pop
- /tbias exch def
- /fbias exch def
- /bias exch def
- /zindent exch def
- /xindent exch def
- cvlit /to exch def
- cvlit /from exch def
- /toarrowlength exch def
- /fromarrowlength exch def
-
- /DIRN [ from (CTR) ldiagdolabel pop to (CTR) ldiagdolabel pop
- lt { 180 dg } { 0 dg } ifelse ] cvx def
- from (CTR) ldiagdolabel DIRN from (CIRCUM) ldiagdolabel ldiagpadd 0 0
- fromarrowlength DIRN ldiagatangle ldiagpadd /FROM ldiagpointdef
- DIRN /FROM@ANGLE ldiagangledef
- to (CTR) ldiagdolabel DIRN 180 dg add to (CIRCUM) ldiagdolabel ldiagpadd
- 0 0 toarrowlength DIRN 180 dg add ldiagatangle ldiagpadd /TO ldiagpointdef
- DIRN /TO@ANGLE ldiagangledef
- FROM 0 0 fbias 0 ldiagmax DIRN ldiagatangle ldiagpadd /P1 ldiagpointdef
- DIRN 180 dg eq { 225 dg } { -45 dg } ifelse /P1@ANGLE ldiagangledef
- TO 0 0 tbias 0 ldiagmax DIRN 180 dg add ldiagatangle ldiagpadd
- /P4 ldiagpointdef
- DIRN 180 dg eq { 135 dg } { 45 dg } ifelse /P4@ANGLE ldiagangledef
- /YC [ from (CTR) ldiagdolabel 270 dg from (CIRCUM) ldiagdolabel ldiagpadd
- exch pop to (CTR) ldiagdolabel 270 dg to (CIRCUM) ldiagdolabel ldiagpadd
- exch pop ldiagmin bias 0 ldiagmax sub ] cvx def
- P1 pop YC /P2 ldiagpointdef
- P4@ANGLE 180 dg sub /P2@ANGLE ldiagangledef
- P4 pop YC /P3 ldiagpointdef
- P1@ANGLE 180 dg sub /P3@ANGLE ldiagangledef
- /XINDENT [ xindent FROM P1 ldiagdistance ldiagmin ] cvx def
- FROM 0 0 XINDENT DIRN ldiagatangle ldiagpadd /LFROM ldiagpointdef
- FROM@ANGLE /LFROM@ANGLE ldiagangledef
- /ZINDENT [ zindent TO P4 ldiagdistance ldiagmin ] cvx def
- TO 0 0 ZINDENT DIRN 180 dg add ldiagatangle ldiagpadd /LTO ldiagpointdef
- TO@ANGLE /LTO@ANGLE ldiagangledef
- P2 0.5 ldiagpmul P3 0.5 ldiagpmul ldiagpadd /LMID ldiagpointdef
- DIRN 180 dg sub /LMID@ANGLE ldiagangledef
- FROM P1 P2 P3 P4 TO
-
- % (leaving ldiagdwraplinepath) 0 ldiagdebugprint
- % count ( stack size is) 1 ldiagdebugprint pop
-} def
-
-% farr tarr { from } { to } xindent zindent bias fbias tbias radius
-% ldiagdwrapcurvepath -
-/ldiagdwrapcurvepath
-{
- % (entering ldiagdwrapcurvepath) 0 ldiagdebugprint
- % count ( stack size is) 1 ldiagdebugprint pop
- /radius exch def
- /tbias exch def
- /fbias exch def
- /bias exch def
- /zindent exch def
- /xindent exch def
- cvlit /to exch def
- cvlit /from exch def
- /toarrowlength exch def
- /fromarrowlength exch def
-
- /DIRN [ from (CTR) ldiagdolabel pop to (CTR) ldiagdolabel pop lt
- { 180 dg } { 0 dg } ifelse ] cvx def
- /CLOCK [ from (CTR) ldiagdolabel pop to (CTR) ldiagdolabel pop lt
- { anticlockwise } { clockwise } ifelse ] cvx def
- from (CTR) ldiagdolabel DIRN from (CIRCUM) ldiagdolabel ldiagpadd
- 0 0 fromarrowlength DIRN ldiagatangle ldiagpadd /FROM ldiagpointdef
- DIRN /FROM@ANGLE ldiagangledef
- to (CTR) ldiagdolabel DIRN 180 dg add to (CIRCUM) ldiagdolabel ldiagpadd
- 0 0 toarrowlength DIRN 180 dg add ldiagatangle ldiagpadd /TO ldiagpointdef
- DIRN /TO@ANGLE ldiagangledef
- /XP1 [ FROM 0 0 fbias 0 ldiagmax DIRN ldiagatangle ldiagpadd ] cvx def
- /XP4 [ TO 0 0 tbias 0 ldiagmax DIRN 180 dg add ldiagatangle ldiagpadd ] cvx def
- /YC [ from (CTR) ldiagdolabel 270 dg from (CIRCUM) ldiagdolabel ldiagpadd
- exch pop to (CTR) ldiagdolabel 270 dg to (CIRCUM) ldiagdolabel ldiagpadd
- exch pop ldiagmin bias 0 ldiagmax sub ] cvx def
- /XP2 [ XP1 pop YC ] cvx def
- /XP3 [ XP4 pop YC ] cvx def
- /RP1 [ radius XP1 FROM ldiagdistance XP1 XP2 ldiagdistance 2 div
- ldiagmin ldiagmin ] cvx def
- /XP1PRE [ XP1 0 0 RP1 XP1 FROM ldiagangleto ldiagatangle ldiagpadd ] cvx def
- /XP1POST [ XP1 0 0 RP1 XP1 XP2 ldiagangleto ldiagatangle ldiagpadd ] cvx def
- /XP1CTR [ XP1PRE 0 0 RP1 XP1 XP2 ldiagangleto ldiagatangle ldiagpadd ] cvx def
- XP1CTR 0 0 RP1 XP1CTR XP1 ldiagangleto ldiagatangle ldiagpadd /P1 ldiagpointdef
- XP1CTR P1 ldiagangleto DIRN add 90 dg sub /P1@ANGLE ldiagangledef
- /RP2 [ radius XP1 XP2 ldiagdistance 2 div XP2 XP3 ldiagdistance 2 div
- ldiagmin ldiagmin ] cvx def
- /XP2PRE [ XP2 0 0 RP2 XP2 XP1 ldiagangleto ldiagatangle ldiagpadd ] cvx def
- /XP2POST [ XP2 0 0 RP2 XP2 XP3 ldiagangleto ldiagatangle ldiagpadd ] cvx def
- /XP2CTR [ XP2PRE 0 0 RP2 XP2 XP3 ldiagangleto ldiagatangle ldiagpadd ] cvx def
- XP2CTR 0 0 RP2 XP2CTR XP2 ldiagangleto ldiagatangle ldiagpadd /P2 ldiagpointdef
- XP2CTR P2 ldiagangleto DIRN add 90 dg sub /P2@ANGLE ldiagangledef
- /RP3 [ radius XP2 XP3 ldiagdistance 2 div XP3 XP4 ldiagdistance 2 div
- ldiagmin ldiagmin ] cvx def
- /XP3PRE [ XP3 0 0 RP3 XP3 XP2 ldiagangleto ldiagatangle ldiagpadd ] cvx def
- /XP3POST [ XP3 0 0 RP3 XP3 XP4 ldiagangleto ldiagatangle ldiagpadd ] cvx def
- /XP3CTR [ XP3PRE 0 0 RP3 XP3 XP4 ldiagangleto ldiagatangle ldiagpadd ] cvx def
- XP3CTR 0 0 RP3 XP3CTR XP3 ldiagangleto ldiagatangle ldiagpadd /P3 ldiagpointdef
- XP3CTR P3 ldiagangleto DIRN add 90 dg sub /P3@ANGLE ldiagangledef
- /RP4 [ radius XP4 XP3 ldiagdistance 2 div XP4 TO ldiagdistance
- ldiagmin ldiagmin ] cvx def
- /XP4PRE [ XP4 0 0 RP4 XP4 XP3 ldiagangleto ldiagatangle ldiagpadd ] cvx def
- /XP4POST [ XP4 0 0 RP4 XP4 TO ldiagangleto ldiagatangle ldiagpadd ] cvx def
- /XP4CTR [ XP4PRE 0 0 RP4 XP4 TO ldiagangleto ldiagatangle ldiagpadd ] cvx def
- XP4CTR 0 0 RP4 XP4CTR XP4 ldiagangleto ldiagatangle ldiagpadd /P4 ldiagpointdef
- XP4CTR P4 ldiagangleto DIRN add 90 dg sub /P4@ANGLE ldiagangledef
- /XINDENT [ xindent FROM XP1PRE ldiagdistance ldiagmin ] cvx def
- FROM 0 0 XINDENT DIRN ldiagatangle ldiagpadd /LFROM ldiagpointdef
- FROM@ANGLE /LFROM@ANGLE ldiagangledef
- XP2 0.5 ldiagpmul XP3 0.5 ldiagpmul ldiagpadd /LMID ldiagpointdef
- DIRN 180 dg sub /LMID@ANGLE ldiagangledef
- /ZINDENT [ zindent TO XP4POST ldiagdistance ldiagmin ] cvx def
- TO 0 0 ZINDENT DIRN 180 dg add ldiagatangle ldiagpadd /LTO ldiagpointdef
- TO@ANGLE /LTO@ANGLE ldiagangledef
- FROM LFROM
- XP1PRE [XP1CTR CLOCK] XP1POST
- XP2PRE [XP2CTR CLOCK] XP2POST
- LMID
- XP3PRE [XP3CTR CLOCK] XP3POST
- XP4PRE [XP4CTR CLOCK] XP4POST
- LTO TO
-
- % (leaving ldiagdwrapcurvepath) 0 ldiagdebugprint
- % count ( stack size is) 1 ldiagdebugprint pop
-} def
-
-% farr tarr { from } { to } xindent zindent bias fbias tbias ldiaguwraplinepath -
-/ldiaguwraplinepath
-{
- % (entering ldiaguwraplinepath) 0 ldiagdebugprint
- % count ( stack size is) 1 ldiagdebugprint pop
- /tbias exch def
- /fbias exch def
- /bias exch def
- /zindent exch def
- /xindent exch def
- cvlit /to exch def
- cvlit /from exch def
- /toarrowlength exch def
- /fromarrowlength exch def
-
- /DIRN [ from (CTR) ldiagdolabel pop to (CTR) ldiagdolabel pop lt
- { 180 dg } { 0 dg } ifelse ] cvx def
- from (CTR) ldiagdolabel DIRN from (CIRCUM) ldiagdolabel ldiagpadd
- 0 0 fromarrowlength DIRN ldiagatangle ldiagpadd /FROM ldiagpointdef
- DIRN /FROM@ANGLE ldiagangledef
- to (CTR) ldiagdolabel DIRN 180 dg add to (CIRCUM) ldiagdolabel ldiagpadd
- 0 0 toarrowlength DIRN 180 dg add ldiagatangle ldiagpadd /TO ldiagpointdef
- DIRN /TO@ANGLE ldiagangledef
- FROM 0 0 fbias 0 ldiagmax DIRN ldiagatangle ldiagpadd /P1 ldiagpointdef
- DIRN 180 dg eq { 135 dg } { 45 dg } ifelse /P1@ANGLE ldiagangledef
- TO 0 0 tbias 0 ldiagmax DIRN 180 dg add ldiagatangle ldiagpadd
- /P4 ldiagpointdef
- DIRN 180 dg eq { 225 dg } { -45 dg } ifelse /P4@ANGLE ldiagangledef
- /YC [ from (CTR) ldiagdolabel 90 dg from (CIRCUM) ldiagdolabel ldiagpadd
- exch pop to (CTR) ldiagdolabel 90 dg to (CIRCUM) ldiagdolabel ldiagpadd
- exch pop ldiagmax bias 0 ldiagmax add ] cvx def
- P1 pop YC /P2 ldiagpointdef
- P4@ANGLE 180 dg sub /P2@ANGLE ldiagangledef
- P4 pop YC /P3 ldiagpointdef
- P1@ANGLE 180 dg sub /P3@ANGLE ldiagangledef
- /XINDENT [ xindent FROM P1 ldiagdistance ldiagmin ] cvx def
- FROM 0 0 XINDENT DIRN ldiagatangle ldiagpadd /LFROM ldiagpointdef
- FROM@ANGLE /LFROM@ANGLE ldiagangledef
- /ZINDENT [ zindent TO P4 ldiagdistance ldiagmin ] cvx def
- TO 0 0 ZINDENT DIRN 180 dg add ldiagatangle ldiagpadd /LTO ldiagpointdef
- TO@ANGLE /LTO@ANGLE ldiagangledef
- P2 0.5 ldiagpmul P3 0.5 ldiagpmul ldiagpadd /LMID ldiagpointdef
- DIRN 180 dg sub /LMID@ANGLE ldiagangledef
- FROM P1 P2 P3 P4 TO
-
- % (leaving ldiaguwraplinepath) 0 ldiagdebugprint
- % count ( stack size is) 1 ldiagdebugprint pop
-} def
-
-% farr tarr { from } { to } xindent zindent bias fbias tbias radius
-% ldiaguwrapcurvepath -
-/ldiaguwrapcurvepath
-{
- % (entering ldiaguwrapcurvepath) 0 ldiagdebugprint
- % count ( stack size is) 1 ldiagdebugprint pop
- /radius exch def
- /tbias exch def
- /fbias exch def
- /bias exch def
- /zindent exch def
- /xindent exch def
- cvlit /to exch def
- cvlit /from exch def
- /toarrowlength exch def
- /fromarrowlength exch def
-
- /DIRN [ from (CTR) ldiagdolabel pop to (CTR) ldiagdolabel pop lt
- { 180 dg } { 0 dg } ifelse ] cvx def
- /CLOCK [ from (CTR) ldiagdolabel pop to (CTR) ldiagdolabel pop lt
- { clockwise } { anticlockwise } ifelse ] cvx def
- from (CTR) ldiagdolabel DIRN from (CIRCUM) ldiagdolabel ldiagpadd
- 0 0 fromarrowlength DIRN ldiagatangle ldiagpadd /FROM ldiagpointdef
- DIRN /FROM@ANGLE ldiagangledef
- to (CTR) ldiagdolabel DIRN 180 dg add to (CIRCUM) ldiagdolabel ldiagpadd
- 0 0 toarrowlength DIRN 180 dg add ldiagatangle ldiagpadd /TO ldiagpointdef
- DIRN /TO@ANGLE ldiagangledef
- /XP1 [ FROM 0 0 fbias 0 ldiagmax DIRN ldiagatangle ldiagpadd ] cvx def
- /XP4 [ TO 0 0 tbias 0 ldiagmax DIRN 180 dg add ldiagatangle ldiagpadd ] cvx def
- /YC [ from (CTR) ldiagdolabel 90 dg from (CIRCUM) ldiagdolabel ldiagpadd
- exch pop to (CTR) ldiagdolabel 90 dg to (CIRCUM) ldiagdolabel ldiagpadd
- exch pop ldiagmax bias 0 ldiagmax add ] cvx def
- /XP2 [ XP1 pop YC ] cvx def
- /XP3 [ XP4 pop YC ] cvx def
- /RP1 [ radius XP1 FROM ldiagdistance XP1 XP2 ldiagdistance 2 div
- ldiagmin ldiagmin ] cvx def
- /XP1PRE [ XP1 0 0 RP1 XP1 FROM ldiagangleto ldiagatangle ldiagpadd ] cvx def
- /XP1POST [ XP1 0 0 RP1 XP1 XP2 ldiagangleto ldiagatangle ldiagpadd ] cvx def
- /XP1CTR [ XP1PRE 0 0 RP1 XP1 XP2 ldiagangleto ldiagatangle ldiagpadd ] cvx def
- XP1CTR 0 0 RP1 XP1CTR XP1 ldiagangleto ldiagatangle ldiagpadd /P1 ldiagpointdef
- XP1CTR P1 ldiagangleto DIRN add 90 dg add /P1@ANGLE ldiagangledef
- /RP2 [ radius XP1 XP2 ldiagdistance 2 div XP2 XP3 ldiagdistance 2 div
- ldiagmin ldiagmin ] cvx def
- /XP2PRE [ XP2 0 0 RP2 XP2 XP1 ldiagangleto ldiagatangle ldiagpadd ] cvx def
- /XP2POST [ XP2 0 0 RP2 XP2 XP3 ldiagangleto ldiagatangle ldiagpadd ] cvx def
- /XP2CTR [ XP2PRE 0 0 RP2 XP2 XP3 ldiagangleto ldiagatangle ldiagpadd ] cvx def
- XP2CTR 0 0 RP2 XP2CTR XP2 ldiagangleto ldiagatangle ldiagpadd /P2 ldiagpointdef
- XP2CTR P2 ldiagangleto DIRN add 90 dg add /P2@ANGLE ldiagangledef
- /RP3 [ radius XP2 XP3 ldiagdistance 2 div XP3 XP4 ldiagdistance 2 div
- ldiagmin ldiagmin ] cvx def
- /XP3PRE [ XP3 0 0 RP3 XP3 XP2 ldiagangleto ldiagatangle ldiagpadd ] cvx def
- /XP3POST [ XP3 0 0 RP3 XP3 XP4 ldiagangleto ldiagatangle ldiagpadd ] cvx def
- /XP3CTR [ XP3PRE 0 0 RP3 XP3 XP4 ldiagangleto ldiagatangle ldiagpadd ] cvx def
- XP3CTR 0 0 RP3 XP3CTR XP3 ldiagangleto ldiagatangle ldiagpadd /P3 ldiagpointdef
- XP3CTR P3 ldiagangleto DIRN add 90 dg add /P3@ANGLE ldiagangledef
- /RP4 [ radius XP4 XP3 ldiagdistance 2 div XP4 TO ldiagdistance
- ldiagmin ldiagmin ] cvx def
- /XP4PRE [ XP4 0 0 RP4 XP4 XP3 ldiagangleto ldiagatangle ldiagpadd ] cvx def
- /XP4POST [ XP4 0 0 RP4 XP4 TO ldiagangleto ldiagatangle ldiagpadd ] cvx def
- /XP4CTR [ XP4PRE 0 0 RP4 XP4 TO ldiagangleto ldiagatangle ldiagpadd ] cvx def
- XP4CTR 0 0 RP4 XP4CTR XP4 ldiagangleto ldiagatangle ldiagpadd /P4 ldiagpointdef
- XP4CTR P4 ldiagangleto DIRN add 90 dg add /P4@ANGLE ldiagangledef
- /XINDENT [ xindent FROM XP1PRE ldiagdistance ldiagmin ] cvx def
- FROM 0 0 XINDENT DIRN ldiagatangle ldiagpadd /LFROM ldiagpointdef
- FROM@ANGLE /LFROM@ANGLE ldiagangledef
- XP2 0.5 ldiagpmul XP3 0.5 ldiagpmul ldiagpadd /LMID ldiagpointdef
- DIRN 180 dg sub /LMID@ANGLE ldiagangledef
- /ZINDENT [ zindent TO XP4POST ldiagdistance ldiagmin ] cvx def
- TO 0 0 ZINDENT DIRN 180 dg add ldiagatangle ldiagpadd /LTO ldiagpointdef
- TO@ANGLE /LTO@ANGLE ldiagangledef
- FROM LFROM
- XP1PRE [XP1CTR CLOCK] XP1POST
- XP2PRE [XP2CTR CLOCK] XP2POST
- LMID
- XP3PRE [XP3CTR CLOCK] XP3POST
- XP4PRE [XP4CTR CLOCK] XP4POST
- LTO TO
-
- % (leaving ldiaguwrapcurvepath) 0 ldiagdebugprint
- % count ( stack size is) 1 ldiagdebugprint pop
-} def
-
-% shape and labels of the @SolidArrowHead symbol
-% - ldiagsolidarrowhead -
-/ldiagsolidarrowhead
-{
- 0 0 xsize ysize 0.5 mul 0 ysize
-} def
-
-% shape and labels of the @OpenArrowHead symbol
-% <pathwidth> ldiagopenarrowhead -
-/ldiagopenarrowhead
-{
- /pathwidth exch def
- /PSW [ 0 0 ] cvx def
- /PNW [ 0 ysize ] cvx def
- /PE [ xsize ysize 0.5 mul ] cvx def
- /REL [ 0 0 pathwidth PE PNW ldiagangleto 90 add ldiagatangle ] cvx def
- /PNA [ 0 ysize 0.5 mul pathwidth 0.5 mul add ] cvx def
- /PSA [ 0 ysize 0.5 mul pathwidth 0.5 mul sub ] cvx def
- /PNI [ PNA PNA xsize 0 ldiagpadd PNW REL ldiagpadd
- PE REL ldiagpadd ldiaglineintersect ] cvx def
- /PSI [ 0 pathwidth PNI ldiagpsub ] cvx def
-
- PSW PE PNW PNI PNA PSA PSI PSW
-} def
-
-% shape and labels of the @HalfOpenArrowHead symbol
-% <pathwidth> ldiaghalfopenarrowhead -
-/ldiaghalfopenarrowhead
-{
- /pathwidth exch def
- 0 0
- xsize ysize 0.5 mul
- 0 ysize
- xsize 0.3 mul ysize 0.5 mul pathwidth 0.5 mul add
- 0 ysize 0.5 mul pathwidth 0.5 mul add
- 0 ysize 0.5 mul pathwidth 0.5 mul sub
- xsize 0.3 mul ysize 0.5 mul pathwidth 0.5 mul sub
- 0 0
-} def
-
-% shape and labels of the @SolidCurvedArrowHead symbol
-% - ldiagsolidcurvedarrowhead -
-/ldiagsolidcurvedarrowhead
-{
- 0 0
- [0 0 xsize ysize 0.5 mul ldiaglinebetween
- xsize 0 xsize ysize ldiaglineintersect clockwise]
- xsize ysize 0.5 mul
- [xsize ysize 0.5 mul 0 ysize ldiaglinebetween
- xsize 0 xsize ysize ldiaglineintersect clockwise]
- 0 ysize
-} def
-
-% shape and labels of the @OpenCurvedArrowHead symbol
-% <pathwidth> ldiagopencurvedarrowhead -
-/ldiagopencurvedarrowhead
-{
- /pathwidth exch def
- /LR [ 0 0 xsize ysize 0.5 mul ldiaglinebetween
- xsize 0 xsize ysize ldiaglineintersect
- ] cvx def
- /UR [ xsize ysize 0.5 mul 0 ysize ldiaglinebetween
- xsize 0 xsize ysize ldiaglineintersect
- ] cvx def
- /PW2 [ pathwidth 0.5 mul ] cvx def
- /UMID [
- 0 ysize 0.5 mul PW2 add
- xsize ysize 0.5 mul PW2 add
- 0 ysize 0 0 1 ft UR 0 ysize ldiagangleto 90 add ldiagatangle
- ldiagpadd 0 ysize ldiaglineintersect
- ] cvx def
- /LMID [ 0 pathwidth UMID ldiagpsub ] cvx def
- 0 0
- [LR clockwise]
- xsize ysize 0.5 mul
- [UR clockwise]
- 0 ysize
- UMID
- 0 ysize 0.5 mul PW2 add
- 0 ysize 0.5 mul PW2 sub
- LMID
- 0 0
-} def
-
-% shape and labels of the @HalfOpenCurvedArrowHead symbol
-% <pathwidth> ldiaghalfopencurvedarrowhead -
-/ldiaghalfopencurvedarrowhead
-{
- /pathwidth exch def
- /LR [ 0 0 xsize ysize 0.5 mul ldiaglinebetween
- xsize 0 xsize ysize ldiaglineintersect
- ] cvx def
- /UR [ xsize ysize 0.5 mul 0 ysize ldiaglinebetween
- xsize 0 xsize ysize ldiaglineintersect
- ] cvx def
- /BR [ 0 0 LR 0 ysize UR ldiaglineintersect ] cvx def
- /BRAD [ 0 0 BR ldiagdistance ] cvx def
- /PW2 [ pathwidth 0.5 mul ] cvx def
- /XDIST [ BRAD dup mul PW2 dup mul sub sqrt ] cvx def
- /UMID [ BR XDIST PW2 ldiagpadd ] cvx def
- /LMID [ BR XDIST 0 PW2 sub ldiagpadd ] cvx def
- 0 0
- [LR clockwise]
- xsize ysize 0.5 mul
- [UR clockwise]
- 0 ysize
- [BR clockwise]
- UMID
- 0 ysize 0.5 mul PW2 add
- 0 ysize 0.5 mul PW2 sub
- LMID
- [BR clockwise]
- 0 0
-} def
-
-end
-%%EndResource
-
-%%BeginResource: procset LoutBasicSetup
-% @PrependGraphic file /export/home/6monthspace/jeff/lout.lib/include/bsf.lpg
-
-% width height linethickness louteuro -
-% draw a Euro symbol of this width and height with this line thickness
-/louteuro {
- 20 dict begin
- /eurothick exch def
- /euroheight exch def
- /eurowidth exch def
- /eurostrokewidth euroheight 0.8 mul def
- /eurostep eurothick 60 cos mul 60 sin div def
- /eurotheta 40 def
-
- % llx lly width thickness louteurobox -
- % draw angled box starting at (llx, lly) with given width and thickness
- /louteurobox
- {
- /euroboxthick exch def
- /euroboxwidth exch def
- newpath moveto euroboxwidth 0 rlineto
- eurostep euroboxthick rlineto
- euroboxwidth neg 0 rlineto closepath fill
- } def
-
- % lower cross stroke
- 0 euroheight 2 div eurothick 1.5 mul sub
- eurostrokewidth eurothick louteurobox
-
- % upper cross stroke
- 0 euroheight 2 div eurothick 0.5 mul add
- eurostrokewidth eurostep 2 mul add eurothick louteurobox
-
- % circular part
- /eurohctr eurowidth euroheight 2 div eurotheta cos mul sub def
- /eurovctr euroheight 2 div def
- newpath
- eurohctr eurovctr eurovctr eurotheta 350 eurotheta sub arc
- eurohctr eurovctr eurovctr eurothick sub 365 eurotheta sub eurotheta arcn
- closepath fill
- end
-} def
-
-% path for @FullWidthRule symbol
-/LoutRule
-{ 0 0 moveto xsize 0 lineto
-} def
-
-% path for @Box symbol
-/LoutBox
-{ 0 0 moveto xsize 0 lineto
- xsize ysize lineto 0 ysize lineto
- closepath
-} def
-
-% path for @CurveBox symbol
-/LoutCurveBox
-{ xmark 0 moveto
- xsize xmark sub xmark xmark 270 360 arc
- xsize xmark sub ysize xmark sub xmark 0 90 arc
- xmark ysize xmark sub xmark 90 180 arc
- xmark xmark xmark 180 270 arc
- closepath
-} def
-
-% path for @ShadowBox symbol
-/LoutShadowBox
-{ xmark 2 mul 0 moveto xsize 0 lineto
- xsize ysize xmark 2 mul sub lineto
- xsize xmark sub ysize xmark 2 mul sub lineto
- xsize xmark sub xmark lineto
- xmark 2 mul xmark lineto
- closepath
-} def
-
-% set up dictionary containing margin note data: parity LoutMargSet -
-/LoutMargSet
-{ /LoutMargDict 12 dict def
- LoutMargDict begin
- /parity exch def
- /matr matrix currentmatrix def
- /rightx xsize def
- /lefty ysize def % highest allowable point for top of next left note
- /righty ysize def % highest allowable point for top of next right note
- /max { 2 copy gt { pop } { exch pop } ifelse } def
- /min { 2 copy lt { pop } { exch pop } ifelse } def
- end
-} def
-
-%translate coordinate system for marginal notes: type LoutMargShift -
-% where type 0 is left margin, 1 is right margin, 2 is outer, 3 is inner
-/LoutMargShift
-{ LoutMargDict begin
-
- % y coordinate of top of note, in margin coords, before vertical adjust
- 0 ysize transform matr itransform exch pop
-
- % decide whether left or right margin based on type and parity
- exch [ 0 1 parity 1 parity sub ] exch get 0 eq
- {
- % left margin: adjust top of note downwards if overlaps previous note
- lefty min
-
- % bottom of note is new lefty position and also translate position
- ysize sub dup /lefty exch def
-
- % want right edge of note at coordinate zero
- xsize neg exch
- }
- {
- % right margin: adjust top of note downwards if overlaps previous note
- righty min
-
- % bottom of note is new righty position and also translate position
- ysize sub dup /righty exch def
-
- % want left edge of note at coordinate rightx
- rightx exch
- } ifelse
-
- % stack now contains coord of bottom left corner in margin coordinates
- matr setmatrix translate
- end
-} def
-
-% create LoutPageDict with left, right, foot, top for @Place symbol users
-/LoutPageSet
-{
- /LoutPageDict 5 dict def
- LoutPageDict begin
- /matr matrix currentmatrix def
- /left 0 def
- /right xsize def
- /foot 0 def
- /top ysize def
- end
-
-} def
-
-%%EndResource
-
-%%EndProlog
-
-%%BeginSetup
-%%IncludeResource: font Times-Roman
-/Times-Romanfnt82 vec2 /Times-Roman LoutRecode
-/fnt82 { /Times-Romanfnt82 LoutFont } def
-%%IncludeResource: font Helvetica
-/Helveticafnt35 vec2 /Helvetica LoutRecode
-/fnt35 { /Helveticafnt35 LoutFont } def
-%%IncludeResource: font Symbol
-/fnt78 { /Symbol LoutFont } def
-%%EndSetup
-
-%%Page: i 1
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Helvetica
-%%+ font Symbol
-/pgsave save def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-1 LoutMargSet
-grestore
-600 fnt35 1751 12125(A)m 2310(User')s 30(s)k 4123(Guide)s
-5863(to)s 6507(the)s 3956 10685(Lout)m 616 9245(Document)m 3500(F)s 18(or)k -15(matting)k
-6490(System)s 240 fnt35 3544 6059(Jeffre)m 4(y)k 4321(H.)s
-4606(Kingston)s 3883 4395(V)m 19(ersion)k 4726(3.20)s 3974 4107(Apr)m -3(il,)k
-4567(2000)s 0 340(Cop)m 7(yr)k -3(ight)k 240 fnt78
-1080 342(\343)m 240 fnt35 1323 340(1991,)m 1967(2000)s 2558(Jeffre)s 4(y)k
-3335(H.)s 3620(Kingston,)s 4663(Basser)s 5475(Depar)s -9(tment)k
-6793(of)s 7055(Computer)s 8171(Science)s 3(,)k 0 52(The)m
-469(Univ)s 6(ersity)k 1577(of)s 1839(Sydne)s 4(y)k
-2698(2006,)s 3342(A)s 7(ustr)k 2(alia.)k 4441(ISBN)s
-5048(0)s 5239(86758)s 5961(951)s 6379(5.)s
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: ii 2
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-/pgsave save def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-0 LoutMargSet
-grestore
-480 fnt84 0 12955(Contents)m 240 fnt84 0 11982(Chapter)m 908(1)s
-240 fnt82 1015 11983(.)m 240 fnt84 1179 11982(Computer)m 2286(Pr)s 4(ograms)k
-240 fnt82 3770 11983(..)m 4114(..)s 4458(..)s 4802(..)s
-5146(..)s 5490(..)s 5834(..)s 6178(..)s 6522(..)s
-6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s
-8971(1)s 720 11638(1.1.)m 1184(T)s 19(ypesetting)k 2347(computer)s
-3310(programs)s 4264(independently)s 5674(of)s 5945(an)s 3(y)k
-6342(document)s 7554(..)s 7898(..)s 8242(..)s 8971(1)s
-720 11293(1.2.)m 1184(T)s 19(ypesetting)k 2347(computer)s 3310(programs)s
-4264(as)s 4514(part)s 4945(of)s 5216(a)s 5382(lar)s 4(ger)k
-5994(document)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s
-8952(2)s 720 10948(1.3.)m 1184(Changing)s 2169(the)s 2517(appearance)s
-3648(of)s 3919(a)s 4085(program)s 5146(..)s 5490(..)s
-5834(..)s 6178(..)s 6522(..)s 6866(..)s 7210(..)s
-7554(..)s 7898(..)s 8242(..)s 8952(4)s 720 10603(1.4.)m
-1184(Changing)s 2169(the)s 2517(appearance)s 3648(of)s 3919(all)s
-4212(programs)s 5166(simultaneously)s 6866(..)s 7210(..)s 7554(..)s
-7898(..)s 8242(..)s 8953(6)s 720 10258(1.5.)m 1184(Dealing)s
-1994(with)s 2476(tab)s 2821(characters)s 3839(in)s 4082(programs)s
-5490(..)s 5834(..)s 6178(..)s 6522(..)s 6866(..)s
-7210(..)s 7554(..)s 7898(..)s 8242(..)s 8959(8)s
-720 9913(1.6.)m 1184(Dealing)s 1994(with)s 2476(formfeed)s 3409(characters)s
-4427(in)s 4670(programs)s 5834(..)s 6178(..)s 6522(..)s
-6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s
-8955(9)s 720 9568(1.7.)m 1184(Embedding)s 2341(Lout)s 2853(commands)s
-3941(within)s 4609(program)s 5479(comments)s 6866(..)s 7210(..)s
-7554(..)s 7898(..)s 8242(..)s 8831(10)s 720 9223(1.8.)m
-1184(Embedding)s 2341(program)s 3211(te)s 3(xt)k 3626(within)s
-4294(program)s 5164(comments)s 6522(..)s 6866(..)s 7210(..)s
-7554(..)s 7898(..)s 8242(..)s 8831(10)s 720 8878(1.9.)m
-1184(Reading)s 2035(and)s 2439(selecting)s 3341(program)s 4211(te)s 3(xt)k
-4626(from)s 5150(separate)s 5988(\207les)s 6866(..)s 7210(..)s
-7554(..)s 7898(..)s 8242(..)s 8851(11)s 720 8533(1.10.)m
-1304(Error)s 1867(messages)s 3082(..)s 3426(..)s 3770(..)s
-4114(..)s 4458(..)s 4802(..)s 5146(..)s 5490(..)s
-5834(..)s 6178(..)s 6522(..)s 6866(..)s 7210(..)s
-7554(..)s 7898(..)s 8242(..)s 8832(12)s 720 8188(1.11.)m
-1304(Notes)s 1913(on)s 2210(Perl)s 2649(and)s 3053(Pod)s
-3770(..)s 4114(..)s 4458(..)s 4802(..)s 5146(..)s
-5490(..)s 5834(..)s 6178(..)s 6522(..)s 6866(..)s
-7210(..)s 7554(..)s 7898(..)s 8242(..)s 8832(12)s
-240 fnt84 0 7558(Refer)m 4(ences)k 240 fnt82 1362 7559(..)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
-8840(15)s 240 fnt84 0 6930(Index)m 240 fnt82 1018 6931(..)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 8833(16)s
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 1 3
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Helvetica
-%%+ font Times-Italic
-%%+ font Times-Italic
-/pgsave save def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt90 vec2 /Times-Italic LoutRecode
-/fnt90 { /Times-Italicfnt90 LoutFont } def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-1 LoutMargSet
-grestore
-480 fnt84 0 12955(Chapter)m 1819(1.)s 2400(Computer)s 4618(Pr)s 8(ograms)k
-240 fnt82 0 12003(This)m 471(chapter)s 1228(describes)s 2162(ho)s 6(w)k
-2617(to)s 2850(typeset)s 3581(computer)s 4538(program)s 5403(te)s 3(xt)k
-5812(using)s 6378(Lout)s 6884(in)s 7121(conjunction)s 8302(with)s
-8778(the)s 220 fnt35 0 11712(prg2lout)m 153 fnt82 788 11804(1)m
-240 fnt82 908 11715(\207lter)m 1418(program,)s 2335(which)s 2977(is)s
-3187(al)s 2(w)k 2(ays)k 3898(installed)s 4765(where)s 6(v)k 3(er)k
-5705(Lout)s 6217(is.)s 480 11341(It)m 680(is)s 884(possible)s
-1719(to)s 1952(simply)s 2652(print)s 3157(out)s 3518(one)s
-3914(or)s 4168(more)s 4709(program)s 5574(\207les)s 6017(independently)s
-7422(of)s 7687(an)s 3(y)k 8078(document.)s 0 11053(Alternati)m 6(v)k 3(ely)k 15(,)k
-1355(the)s 1715(program)s 2598(te)s 3(xt)k 3025(may)s
-3503(be)s 3798(printed)s 4545(as)s 4807(part)s 5251(of)s
-5534(a)s 5712(lar)s 4(ger)k 6337(Lout)s 6861(document.)s
-7981(Either)s 8637(w)s 2(ay)k 15(,)k 0 10765(Lout)m
-525(does)s 1028(not)s 1407(lay)s 1767(out)s 2146(the)s
-2507(programs)s 3475(in)s 3731(the)s 4092(sense)s 4679(of)s
-4964(choosing)s 5895(line)s 6322(breaks)s 7011(and)s 7428(indenting;)s
-8457(it)s 8663(uses)s 0 10477(whate)m 6(v)k 3(er)k
-942(line)s 1371(breaks)s 2061(and)s 2480(indenting)s 3452(you)s
-3882(gi)s 6(v)k 3(e)k 4356(to)s 4610(the)s
-4973(program.)s 5962(What)s 6555(Lout)s 7082(does)s 7587(do)s
-7895(is)s 8120(cope)s 8644(with)s 0 10189(characters)m 1044(in)s
-1313(the)s 1688(program)s 2584(te)s 3(xt)k 3026(that)s
-3470(it)s 3689(w)s 2(ould)k 4370(ordinarily)s 5393(either)s
-6022(reject)s 6638(or)s 6923(interpret)s 7818(in)s 8087(some)s
-8675(w)s 2(ay)k 0 9901(\(braces)m 729(and)s 1121(so)s
-1375(on\),)s 1790(ensuring)s 2655(that)s 3061(you)s 3464(can)s
-3842(include)s 4590(program)s 5448(te)s 3(xts)k 5936(with)s
-6406(absolutely)s 7431(no)s 7712(modi\207cations;)s 0 9613(plus,)m 506(if)s
-723(you)s 1138(wish,)s 1697(Lout)s 2209(will)s 2635(print)s
-3146(k)s 2(e)k 3(yw)k 2(ords)k 4121(in)s
-4364(bold,)s 4897(identi\207ers)s 5903(in)s 6146(italics,)s 6822(add)s
-7226(line)s 7640(numbers,)s 8571(etc.)s 480 9239(At)m 779(the)s
-1127(time)s 1607(of)s 1878(writing,)s 2675(the)s 3023(a)s 4(v)k 6(ailable)k
-3931(programming)s 5286(languages)s 6294(are:)s 1808 12 0 12 240 288 60 635 8599 LoutGr2
-LoutBox ltblblack
-grestore
-
-grestore
-240 fnt90 779 8703(Langua)m 2(g)k 2(e)k
-1787(name)s gsave
-2443 8599 translate
-240 fnt82 1730 12 0 12 240 288 60 LoutGraphic
-gsave
-LoutBox ltblblack
-grestore
-
-grestore
-2587(Setup)s 3172(\207le)s 3517(name)s gsave
-4173 8599 translate
-240 fnt82 1469 12 0 12 240 288 60 LoutGraphic
-gsave
-LoutBox ltblblack
-grestore
-
-grestore
-4317(Lout)s
-4820(symbol)s gsave
-5642 8599 translate
-240 fnt82 1499 12 0 12 240 288 60 LoutGraphic
-gsave
-LoutBox ltblblack
-grestore
-
-grestore
-5786(Default)s 6567(style)s gsave
-7141 8599 translate
-240 fnt82 1290 12 0 12 240 288 60 LoutGraphic
-gsave
-LoutBox ltblblack
-grestore
-
-grestore
-7285(`)s 7419(')s
-7548(escapes)s 240 fnt82 779 8413(C,)m 1046(C++)s 220 fnt35
-2587 8410(cpr)m -3(int)k 4317(@CP)s 5786(\207x)s 6(ed)k
-240 fnt82 7285 8413(No)m 779 8125(Eif)m 6(fel)k 220 fnt35
-2587 8122(eiff)m 6(el)k 4317(@Eiff)s 6(el)k 5786(v)s 5(ar)k -6(ying)k
-240 fnt82 7285 8125(Y)m 24(es)k 779 7837(Blue)m 220 fnt35
-2587 7834(b)m 4(lue)k 4317(@Blue)s 5786(v)s 5(ar)k -6(ying)k
-240 fnt82 7285 7837(Y)m 24(es)k 779 7549(Perl)m 220 fnt35
-2587 7546(per)m -3(l)k 4317(@P)s 11(er)k -3(l)k
-5786(\207x)s 6(ed)k 240 fnt82 7285 7549(No)m 779 7261(Pod)m
-220 fnt35 2587 7258(pod)m 4317(@P)s 11(od)k 5786(v)s 5(ar)k -6(ying)k
-240 fnt82 7285 7261(No)m 0 6720(C)m 213(and)s 619(C++)s
-1103(are)s 1452(handled)s 2270(together)s 3114(since,)s 3714(for)s
-4054(formatting)s 5116(purposes,)s 6076(the)s 3(y)k 6540(dif)s 6(fer)k
-7125(only)s 7607(in)s 7851(that)s 8271(C++)s 8756(has)s
-0 6432(some)m 558(additional)s 1566(k)s 2(e)k 3(yw)k 2(ords)k
-2538(plus)s 2985(an)s 3265(e)s 3(xtra)k 3796(w)s 2(ay)k
-4244(to)s 4480(mak)s 2(e)k 5049(comments.)s 6193(Whene)s 6(v)k 3(er)k
-7224(we)s 7556(mention)s 8394(C)s 8602(from)s 0 6144(no)m 6(w)k
-465(on,)s 816(we)s 1156(mean)s 1735(both)s 2223(C)s
-2439(and)s 2848(C++.)s 3446(See)s 3852(Section)s 4630(1.11)s
-5089(for)s 5432(more)s 5983(on)s 6285(Perl)s 6728(and)s
-7137(its)s 7417(handmaiden)s 8649(Pod.)s 0 5856(The)m 428(second)s
-1151(to)s 1390(\207fth)s 1845(columns)s 2707(of)s 2978(this)s
-3374(table)s 3894(will)s 4320(be)s 4602(e)s 3(xplained)k
-5587(at)s 5819(v)s 6(arious)k 6568(points)s 7204(later)s
-7687(in)s 7930(this)s 8326(chapter)s 13(.)k 480 5482(The)m
-913(list)s 1270(of)s 1547(languages)s 2560(is)s 2776(lik)s 2(ely)k
-3378(to)s 3623(e)s 3(xpand,)k 4424(because)s 5243(the)s
-220 fnt35 5597 5479(prg2lout)m 240 fnt82 6450 5482(program)m 7326(has)s
-7702(been)s 8217(designed)s 0 5194(to)m 252(mak)s 2(e)k
-838(it)s 1044(relati)s 6(v)k 3(ely)k 2004(easy)s
-2497(to)s 2750(add)s 3168(ne)s 6(w)k 3629(languages)s
-4651(\(you)s 5159(don')s 4(t)k 5734(ha)s 4(v)k 3(e)k
-6249(to)s 6502(write)s 7062(e)s 3(x)k 3(ecutable)k
-8148(code,)s 8721(just)s 0 4906(declare)m 768(a)s 957(lot)s
-1292(of)s 1586(records)s 2363(describing)s 3435(your)s 3957(language\).)s
-5087(Consult)s 5915(the)s 6286(instructions)s 7475(at)s 7730(the)s
-8101(top)s 8483(of)s 8778(the)s 0 4618(source)m 680(\207le)s
-1041(of)s 1312(that)s 1730(program)s 2600(\()s 240 fnt83
-2673 4620(pr)m 8(g2lout.c)k 240 fnt82 3652 4618(\))m 3780(if)s
-3997(you)s 4412(w)s 2(ant)k 4935(to)s 5174(try)s
-5493(it)s 5685(yourself.)s 240 fnt84 0 3825(1.1.)m 471(T)s 17(ypesetting)k
-1705(computer)s 2745(pr)s 4(ograms)k 3792(independently)s 5295(of)s
-5567(any)s 5996(document)s 240 fnt82 480 3348(Printing)m 1299(of)s
-1566(program)s 2432(\207les)s 2876(independently)s 4282(of)s 4549(an)s 3(y)k
-4942(document)s 5941(is)s 6147(accomplished)s 7516(by)s 7806(the)s
-8149(follo)s 6(wing)k 0 3060(Unix)m 534(pipeline:)s 220 fnt35
-480 2559(prg2lout -l language options \207les | lout -s > out.ps)m 240 fnt82 0 2060(where)m 220 fnt35 626 2057(language)m
-240 fnt82 1566 2060(stands)m 2201(for)s 2525(an)s 3(y)k
-2908(one)s 3296(of)s 3553(the)s 3886(programming)s 5227(language)s
-6133(names)s 6781(in)s 7010(the)s 7344(\207rst)s 7761(column)s
-8522(of)s 8778(the)s 1134 0 0 0 240 288 60 0 1553 LoutGr2
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-122 fnt82 0 1358(1)m 192 fnt82
-62 1288(Prior)m 496(to)s 693(V)s 21(ersion)k 1328(3.18)s
-1707(of)s 1928(Lout,)s 2380(this)s 2702(chapter)s 3318(described)s
-4103(ho)s 4(w)k 4477(to)s 4674(typeset)s 5268(programs)s
-6036(written)s 6628(in)s 6828(the)s 7112(C)s 7287(programming)s
-8377(language)s 0 1058(using)m 487(the)s 172 fnt35 795 1057(c2lout)m
-192 fnt82 1326 1058(\207lter)m 7(,)k 1794(and)s 2148(Eif)s 4(fel)k
-2651(programs)s 3444(using)s 3931(the)s 172 fnt35 4240 1057(eif2lout)m
-192 fnt82 4864 1058(\207lter)m 10(.)k 5375(These)s 5906(ha)s 3(v)k 2(e)k
-6338(no)s 4(w)k 6736(been)s 7174(withdra)s 2(wn)k
-8065(and)s 8419(replaced)s 0 828(by)m 172 fnt35 270 827(prg2lout)m
-192 fnt82 884 828(,)m 1005(which)s 1553(handles)s 2214(multiple)s
-2931(languages.)s 3863(Ordinary)s 4631(Lout)s 5076(documents)s 5981(require)s
-6602(no)s 6871(modi\207cations)s 7989(as)s 8223(a)s 8391(result)s
-8898(of)s 0 598(this)m 317(change.)s 192 fnt84 4490 0(1)m
-
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 2 4
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Times-Italic
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-0 LoutMargSet
-grestore
-240 fnt84 0 13840(2)m 240 fnt83 5981 13843(Chapter)m 6831(1.)s
-7105(Computer)s 8128(Pr)s 10(o)k 2(gr)k 3(ams)k
-240 fnt82 0 13205(table)m 509(abo)s 3(v)k 3(e.)k
-1228(As)s 1533(usual)s 2082(with)s 2553(Lout,)s 3100(the)s
-3437(output)s 4098(will)s 4512(be)s 4783(a)s 4938(PostScript)s
-5968(\207le.)s 6426(Each)s 6950(input)s 7490(\207le)s 7840(will)s
-8255(be)s 3(gin)k 8829(on)s 0 12917(a)m 170(ne)s 6(w)k
-622(page)s 1135(of)s 1411(the)s 1764(output,)s 2488(starting)s
-3262(with)s 3749(its)s 4030(name)s 4609(in)s 4857(bold)s
-5346(type.)s 5927(The)s 6360(options)s 7121(pro)s 3(vide)k
-7910(control)s 8647(o)s 3(v)k 3(er)k 0 12629(the)m
-348(\207nal)s 828(appearance,)s 2010(as)s 2260(follo)s 6(ws:)k
-220 fnt35 0 12121(-p)m 240 fnt83 187 12126(style)m 240 fnt82
-960 12124(Select)m 1630(a)s 1823(printing)s 2661(style.)s 3303(Y)s 26(our)k
-3856(choices)s 4652(are)s 220 fnt35 5026 12121(-p\207x)m 6(ed)k
-240 fnt82 5667 12124(,)m 220 fnt35 5801 12121(-pv)m 5(ar)k -6(ying)k
-240 fnt82 6692 12124(,)m 6827(and)s 220 fnt35 7258 12121(-psymbol)m
-240 fnt82 8134 12124(,)m 8268(with)s 8778(the)s 960 11836(def)m 2(ault)k
-1707(v)s 6(alue)k 2302(v)s 6(arying)k 3106(with)s
-3615(the)s 3990(language)s 4936(as)s 5213(gi)s 6(v)k 3(en)k
-5820(in)s 6089(the)s 6464(fourth)s 7132(column)s 7933(of)s
-8231(the)s 8606(table)s 960 11548(abo)m 3(v)k 3(e.)k
-1690(Consult)s 2495(Section)s 3269(1.2)s 3623(for)s 3961(e)s 3(xamples)k
-4912(of)s 5183(these)s 5730(styles.)s 220 fnt35 0 11042(-n)m
-240 fnt82 960 11045(Do)m 1306(not)s 1672(print)s 2183(\207le)s
-2544(names.)s 220 fnt35 0 10539(-f)m 240 fnt83 131 10544(font)m
-240 fnt82 960 10542(Select)m 1589(a)s 1740(Lout)s 2237(font)s
-2667(f)s 2(amily)k 15(.)k 3423(The)s 3836(def)s 2(ault)k
-4542(is)s 220 fnt35 4737 10539(-fCour)m -3(ier)k 240 fnt82
-5637 10542(for)m 220 fnt35 5961 10539(-p\207x)m 6(ed)k 240 fnt82
-6602 10542(,)m 6694(and)s 220 fnt35 7083 10539(-fTimes)m 240 fnt82
-7852 10542(for)m 220 fnt35 8175 10539(-pv)m 5(ar)k -6(ying)k
-240 fnt82 960 10254(and)m 220 fnt35 1364 10251(-psymbol)m 240 fnt82
-2240 10254(.)m 220 fnt35 0 9750(-v)m 240 fnt83 182 9755(vsize)m
-240 fnt82 960 9753(Select)m 1594(an)s 1867(inter)s 4(-line)k
-2783(spacing)s 3557(size)s 3975(in)s 4208(Lout)s 4710(units.)s
-5329(The)s 5747(def)s 2(ault)k 6459(is)s 220 fnt35
-6659 9750(-v1.1fx)m 240 fnt82 7366 9753(meaning)m 8233(1.1)s 8558(times)s
-960 9465(the)m 1308(font)s 1753(size)s 2180(measured)s 3154(from)s
-3678(baseline)s 4517(to)s 4756(baseline.)s 220 fnt35 0 9007(-L)m
-240 fnt83 191 9012(number)m 240 fnt82 960 9010(Add)m 1478(line)s
-1939(numbers)s 2861(to)s 3147(the)s 3542(program)s 4459(print,)s
-5064(starting)s 5880(with)s 240 fnt83 6409 9012(number)m 240 fnt82
-7146 9010(,)m 7300(or)s 7606(1)s 7808(if)s 240 fnt83
-8072 9012(number)m 240 fnt82 8916 9010(is)m 960 8722(omitted.)m 220 fnt35
-0 8264(-S)m 240 fnt83 209 8269(\207le)m 240 fnt82 960 8267(Use)m
-240 fnt83 1389 8269(\207le)m 240 fnt82 1736 8267(as)m 1988(the)s
-2337(setup)s 2897(\207le)s 3260(for)s 3599(printing)s 4411(your)s
-4912(language.)s 5941(This)s 6419(allo)s 6(ws)k 7090(you)s
-7506(to)s 7747(change)s 8483(all)s 8778(the)s 960 7979(options)m
-1716(mentioned)s 2784(in)s 3027(subsequent)s 4151(sections,)s 5028(rather)s
-5644(than)s 6113(just)s 6518(the)s 6866(fe)s 6(w)k
-7272(gi)s 6(v)k 3(en)k 7852(here.)s 0 7474(There)m
-613(are)s 960(also)s 220 fnt35 1398 7471(-t)m 240 fnt82
-1588 7474(and)m 220 fnt35 1992 7471(-T)m 240 fnt82 2256 7474(options)m
-3012(for)s 3350(dealing)s 4107(with)s 4589(tab)s 4934(characters)s
-5952(\(Section)s 6805(1.5\).)s 240 fnt84 0 6681(1.2.)m 471(T)s 17(ypesetting)k
-1705(computer)s 2745(pr)s 4(ograms)k 3792(as)s 4059(part)s
-4557(of)s 4829(a)s 5007(lar)s 2(ger)k 5687(document)s
-240 fnt82 480 6204(When)m 1097(the)s 1432(program)s 2289(te)s 3(xts)k
-2775(are)s 3109(to)s 3336(be)s 3605(part)s 4023(of)s
-4281(a)s 4434(lar)s 4(ger)k 5034(Lout)s 5533(document,)s
-6571(the)s 6906(procedure)s 7905(is)s 8102(some)s 6(what)k
-0 5916(dif)m 6(ferent.)k 979(Y)s 26(ou)k 1421(need)s
-1931(to)s 2170(include)s 2930(the)s 3278(setup)s 3836(\207le)s
-4197(appropriate)s 5341(to)s 5580(your)s 6079(language,)s 7050(lik)s 2(e)k
-7462(this:)s 220 fnt35 480 5415(@SysInclude { cpr)m -3(int })k 480 5127(@SysInclude { doc })m
-480 4839(@Doc @T)m 26(e)k 6(xt @Begin)k 480 4551(...)m 480 4263(@End @T)m 26(e)k 6(xt)k
-240 fnt82 0 3808(The)m 220 fnt35 422 3805(cpr)m -3(int)k
-240 fnt82 1011 3808(setup)m 1563(\207le)s 1917(includes)s 2759(e)s 6(v)k 3(erything)k
-3820(needed)s 4549(to)s 4782(set)s 5101(up)s 5387(for)s
-5719(C)s 5925(program)s 6788(formatting;)s 7902(for)s 8234(the)s
-8575(other)s 0 3520(languages,)m 1064(consult)s 1815(the)s 2163(second)s
-2886(column)s 3661(of)s 3932(the)s 4280(table)s 4800(at)s
-5032(the)s 5380(start)s 5850(of)s 6121(this)s 6517(chapter)s 13(.)k
-480 3146(The)m 914(program)s 1791(te)s 3(xts)k 2297(within)s
-2972(the)s 3327(Lout)s 3846(document)s 4857(are)s 5210(enclosed)s
-6112(in)s 6362(braces)s 7030(preceded)s 7958(by)s 8259(the)s
-8614(Lout)s 0 2858(symbol)m 760(from)s 1284(the)s 1632(third)s
-2141(column)s 2916(of)s 3187(the)s 3535(table,)s 4106(lik)s 2(e)k
-4518(this)s 4914(for)s 5252(the)s 5600(C)s 5812(language:)s
-
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 3 5
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Italic
-%%+ font Times-Bold
-%%+ font Helvetica
-%%+ font Courier
-/pgsave save def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-%%IncludeResource: font Courier
-/Courierfnt29 vec2 /Courier LoutRecode
-/fnt29 { /Courierfnt29 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-1 LoutMargSet
-grestore
-240 fnt83 0 13843(1.2.)m 454(T)s 17(ypesetting)k 1593(computer)s
-2562(pr)s 10(o)k 2(gr)k 3(ams)k 3534(as)s
-3802(part)s 4265(of)s 4546(a)s 4721(lar)s 8(g)k 2(er)k
-5374(document)s 240 fnt84 8953 13840(3)m 220 fnt35 480 13207(@IndentedDispla)m 6(y @CP {)k
-480 12919(#include <stdio)m 8(.h>)k 480 12343(treepr)m -3(int\(p\) /* pr)k -3(int tree p recursiv)k 5(ely */)k
-480 12055(str)m -3(uct tnode *p;)k 480 11767({)m 480 11479( if \(p != NULL\) {)m 480 11191( treepr)m -3(int\(p->left\);)k
-480 10903( pr)m -3(intf\("%4d %s\\n", p->count, p->w)k 2(ord\);)k 480 10615( treepr)m -3(int\(p->r)k -3(ight\);)k
-480 10327( })m 480 10039(})m 480 9751(})m 240 fnt82 0 9257(Although)m
-962(computer)s 1925(programs)s 2879(violate)s 3584(the)s 3932(rules)s
-4447(of)s 4718(le)s 3(g)k 1(al)k 5232(Lout)s
-5744(input)s 6296(in)s 6539(man)s 3(y)k 7121(w)s 2(ays,)k
-7718(these)s 8265(rules)s 8779(are)s 0 8969(suspended)m 1042(by)s
-1322(the)s 220 fnt35 1655 8966(@CP)m 240 fnt82 2173 8969(,)m
-220 fnt35 2266 8966(@Eiff)m 6(el)k 240 fnt82 3000 8969(etc.)m
-3368(symbols,A)s 4441(allo)s 6(wing)k 5311(the)s 5645(program)s
-6500(te)s 3(xt)k 6901(to)s 7125(be)s 7393(incorporated)s
-8644(with)s 0 8681(absolutely)m 1037(no)s 1330(modi\207cations.)s 2796(The)s
-3224(result)s 3814(is)s 220 fnt29 480 8198(#include)m 1668(<stdio.h>)s
-480 7622(treeprint\(p\))m 3120(/*)s 3516(print)s 4308(tree)s 4968(p)s
-5232(recursively)s 6816(*/)s 480 7334(struct)m 1404(tnode)s 2196 7291(*)m
-2328 7334(p;)m 480 7046({)m 1536 6758(if)m 1932(\(p)s 2328(!=)s
-2724(NULL\))s 3516({)s 2592 6470(treeprint\(p->left\);)m 2592 6182(printf\("%4d)m 4176(%s\\n",)s
-5100(p->count,)s 6420(p->word\);)s 2592 5894(treeprint\(p->right\);)m 1536 5606(})m 480 5318(})m
-240 fnt82 0 4843(W)m 19(e)k 393(ha)s 4(v)k 3(e)k
-919(chosen)s 1665(to)s 1929(use)s 2328(the)s 220 fnt35
-2701 4840(@IndentedDispla)m 6(y)k 240 fnt82 4572 4843(symbol)m 5357(from)s
-5905(Section)s 6704(??)s 6993(to)s 7257(obtain)s 7936(an)s
-8244(indented)s 0 4555(display)m 15(,)k 780(b)s 4(ut)k
-1138(in)s 1378(f)s 2(act)k 220 fnt35 1789 4552(@CP)m
-240 fnt82 2307 4555(,)m 220 fnt35 2411 4552(@Eiff)m 6(el)k
-240 fnt82 3156 4555(and)m 3557(the)s 3901(rest)s 4301(may)s
-4764(appear)s 5457(an)s 3(ywhere)k 6437(at)s 6665(all:)s
-7066(the)s 7410(result)s 7997(is)s 8203(an)s 8482(object)s
-0 4267(in)m 247(the)s 599(usual)s 1163(w)s 2(ay)k 15(,)k
-1656(which)s 2302(may)s 2772(go)s 3069(an)s 3(ywhere.)k
-4164(When)s 4797(including)s 5758(a)s 5928(program)s 6802(te)s 3(xt)k
-7221(within)s 7893(a)s 8063(paragraph,)s 0 3979(use)m 220 fnt35
-365 3976(@OneCol @CP { ...)m 13( })k 240 fnt82 2459 3979(\(or)m 220 fnt35
-2787 3976(@OneCol @Eiff)m 6(el { ...)k 13( })k 240 fnt82 5057 3979(etc.)m
-5429(for)s 5757(other)s 6298(languages\))s 7373(to)s 7602(pre)s 6(v)k 3(ent)k
-8360(it)s 8541(being)s 0 3691(brok)m 2(en)k 720(across)s
-1368(tw)s 2(o)k 1778(lines,)s 2336(if)s 2553(desired.)s
-480 3317(In)m 732(cases)s 1282(where)s 1917(the)s 2260(program)s
-3125(te)s 3(xt)k 3535(has)s 3900(unbalanced)s 5043(braces,)s
-5755(it)s 5942(is)s 6147(necessary)s 7125(to)s 7359(use)s
-7729(the)s 8072(alternati)s 6(v)k 3(e)k 0 3029(form)m
-220 fnt35 514 3026(@CP @Begin ...)m 13( @End @CP)k 240 fnt82 3418 3029(\(or)m
-3746(the)s 4083(equi)s 6(v)k 6(alent)k 5117(for)s
-5444(other)s 5984(languages\),)s 7117(so)s 7372(that)s 7780(Lout)s
-8281(does)s 8760(not)s 0 2741(confuse)m 793(program)s 1656(braces)s
-2309(with)s 2784(Lout)s 3288(braces.)s 4055(In)s 4303(that)s
-4714(case)s 5173(the)s 5514(program)s 6376(te)s 3(xt)k
-6784(must)s 7301(not)s 7660(contain)s 220 fnt35 8413 2738(@End)m
-240 fnt82 9014 2741(;)m 0 2453(and)m 412(in)s 663(either)s
-1275(case)s 1750(the)s 2106(program)s 2985(te)s 3(xt)k
-3408(must)s 3941(not)s 4316(include)s 220 fnt35 5084 2450(@Include)m
-240 fnt82 6074 2453(or)m 220 fnt35 6342 2450(@SysInclude)m 240 fnt82
-7698 2453(unless)m 8355(you)s 8779(are)s 0 2165(really)m 597(including)s
-1554(a)s 1720(\207le)s 2081(at)s 2313(that)s 2731(point)s
-3283(\(Section)s 4136(1.9\).)s 480 1791(If)m 763(your)s 1316(Lout)s
-1882(document)s 2939(contains)s 3841(program)s 4765(te)s 3(xts)k
-5317(in)s 5614(se)s 6(v)k 3(eral)k 6390(languages,)s
-7507(simply)s 8266(add)s 8724(one)s 220 fnt35 0 1500(@SysInclude)m
-240 fnt82 1342 1503(line)m 1749(for)s 2080(each)s 2569(of)s
-2833(them)s 3364(and)s 3761(proceed)s 4570(as)s 4813(before.)s
-5580(If)s 5803(your)s 6296(programming)s 7644(language)s 8557(is)s
-8760(not)s 0 1215(currently)m 916(supported,)s 1967(a)s 2133(viable)s
-2773(alternati)s 6(v)k 3(e)k 3827(is)s 220 fnt35
-480 714(@F @V)m 17(erbatim { ...)k 13( })k 240 fnt82 0 220(These)m
-612(symbols)s 1445(cause)s 2017(the)s 2349(te)s 3(xt)k
-2749(between)s 3587(braces)s 4233(to)s 4456(be)s 4722(set)s
-5032(v)s 3(erbatim)k 5922(in)s 6150(a)s 6300(\207x)s 3(ed-)k
-6844(width)s 7431(font,)s 7907(as)s 8141(e)s 3(xplained)k
-
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 4 6
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Times-Italic
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-0 LoutMargSet
-grestore
-240 fnt84 0 13840(4)m 240 fnt83 5981 13843(Chapter)m 6831(1.)s
-7105(Computer)s 8128(Pr)s 10(o)k 2(gr)k 3(ams)k
-240 fnt82 0 13205(else)m 6(where)k 1008(in)s 1254(this)s
-1653(guide.)s 2352(This)s 2831(f)s 2(allback)k 3662(method)s
-4442(will)s 4871(not)s 5240(handle)s 5937(tab)s 6285(and)s
-6692(formfeed)s 7628(characters)s 8650(v)s 3(ery)k 0 12917(well.)m
-571(Ag)s 1(ain,)k 1257(use)s 220 fnt35 1628 12914(@V)m 17(erbatim @Begin ...)k 13( @End @V)k 17(erbatim)k
-240 fnt82 5645 12917(if)m 5858(your)s 6352(program)s 7218(te)s 3(xt)k
-7628(contains)s 8471(unbal)s 8998(-)s 0 12629(anced)m 616(braces.)s
-240 fnt84 0 11886(1.3.)m 471(Changing)s 1525(the)s 1899(appearance)s
-3138(of)s 3410(a)s 3588(pr)s 4(ogram)k 240 fnt82
-480 11409(The)m 220 fnt35 915 11406(@CP)m 240 fnt82 1433 11409(,)m
-220 fnt35 1548 11406(@Eiff)m 6(el)k 240 fnt82 2305 11409(etc.)m
-2695(symbols)s 3551(ha)s 4(v)k 3(e)k 4060(a)s
-4234(number)s 5033(of)s 5312(options)s 6075(for)s 6421(changing)s
-7360(the)s 7716(appearance)s 8855(of)s 0 11121(the)m 357(printed)s
-1102(program.)s 2086(These)s 2723(options)s 3489(are)s 3846(the)s
-4204(same)s 4761(for)s 5109(all)s 5412(symbols,)s 6327(although)s
-7232(their)s 7739(def)s 2(ault)k 8470(v)s 6(alues)k
-0 10833(may)m 468(v)s 6(ary)k 15(.)k 1039(The)s
-220 fnt35 1470 10830(style)m 240 fnt82 1976 10833(option)m 2648(changes)s
-3473(the)s 3824(printing)s 4637(style;)s 5203(its)s 5482(v)s 6(alue)k
-6053(may)s 6522(be)s 220 fnt35 6807 10830(\207x)m 6(ed)k
-240 fnt82 7316 10833(\(\207x)m 3(ed-width)k 8555(font\),)s 220 fnt35
-0 10542(v)m 5(ar)k -6(ying)k 240 fnt82 777 10545(\(v)m 6(arying-width)k
-2284(font\),)s 2876(or)s 220 fnt35 3157 10542(symbol)m 240 fnt82
-3919 10545(\(v)m 6(arying-width)k 5426(font)s 5892(with)s 6396(mathematical)s
-7758(symbols)s 8629(used)s 0 10257(for)m 342(some)s 907(operators\).)s
-2043(Its)s 2336(def)s 2(ault)k 3061(v)s 6(alue)k
-3633(depends)s 4473(on)s 4774(the)s 5126(language,)s 6101(and)s
-6509(may)s 6979(be)s 7265(found)s 7886(in)s 8133(the)s
-8485(fourth)s 0 9969(column)m 775(of)s 1045(the)s 1392(table)s
-1911(at)s 2143(the)s 2490(start)s 2959(of)s 3229(this)s
-3624(chapter)s 13(.)k 4478(The)s 4905(e)s 3(xample)k
-5767(in)s 6009(the)s 6357(pre)s 6(vious)k 7225(section)s
-7958(w)s 2(as)k 8378(in)s 220 fnt35 8620 9966(\207x)m 6(ed)k
-240 fnt82 0 9681(style;)m 563(we)s 898(can)s 1287(switch)s
-1968(styles)s 2563(lik)s 2(e)k 2975(this:)s 220 fnt35
-480 9180(@CP)m 480 8892( style { v)m 5(ar)k -6(ying })k 480 8604({)m
-480 8316(#include <stdio)m 8(.h>)k 480 7740(treepr)m -3(int\(p\) /* pr)k -3(int tree p recursiv)k 5(ely */)k
-480 7452(str)m -3(uct tnode *p;)k 480 7164({)m 480 6876( if \(p != NULL\) {)m 480 6588( treepr)m -3(int\(p->left\);)k
-480 6300( pr)m -3(intf\("%4d %s\\n", p->count, p->w)k 2(ord\);)k 480 6012( treepr)m -3(int\(p->r)k -3(ight\);)k
-480 5724( })m 480 5436(})m 480 5148(})m 240 fnt82 0 4654(The)m
-428(result)s 1018(in)s 1261(this)s 1657(case)s 2124(will)s
-2550(be)s 480 4198(#)m 240 fnt83 600 4200(include)m 240 fnt82
-1357 4198(<)m 240 fnt83 1486 4200(stdio)m 240 fnt82 1944 4198(.)m
-240 fnt83 1988 4200(h)m 240 fnt82 2103 4198(>)m 240 fnt83
-480 3624(tr)m 8(eeprint)k 240 fnt82 1312 3622(\()m 240 fnt83
-1385 3624(p)m 240 fnt82 1498 3622(\))m 2046(/*)s 2276(print)s
-2787(tree)s 3200(p)s 3373(recursi)s 6(v)k 3(ely)k
-4479(*/)s 240 fnt84 480 3333(struct)m 240 fnt83 1136 3336(tnode)m
-240 fnt82 1721 3280(*)m 240 fnt83 1825 3336(p)m 240 fnt82
-1938 3334(;)m 480 3046({)m 240 fnt84 960 2757(if)m 240 fnt82
-1178 2758(\()m 240 fnt83 1251 2760(p)m 240 fnt82 1424 2758(!=)m
-240 fnt83 1691 2760(NULL)m 240 fnt82 2290 2758(\))m 2418({)s
-240 fnt83 1440 2472(tr)m 8(eeprint)k 240 fnt82 2272 2470(\()m
-240 fnt83 2345 2472(p)m 240 fnt82 2458 2470(->)m 240 fnt83
-2666 2472(left)m 240 fnt82 2974 2470(\);)m 240 fnt83 1440 2184(printf)m
-240 fnt82 2006 2182(\()m 240 fnt83 2079 2184("%4d)m 2684(%s\\n")s
-240 fnt82 3264 2182(,)m 240 fnt83 3371 2184(p)m 240 fnt82
-3484 2182(->)m 240 fnt83 3692 2184(count)m 240 fnt82 4228 2182(,)m
-240 fnt83 4335 2184(p)m 240 fnt82 4448 2182(->)m 240 fnt83
-4656 2184(wor)m 8(d)k 240 fnt82 5147 2182(\);)m 240 fnt83
-1440 1896(tr)m 8(eeprint)k 240 fnt82 2272 1894(\()m 240 fnt83
-2345 1896(p)m 240 fnt82 2458 1894(->)m 240 fnt83 2666 1896(right)m
-240 fnt82 3135 1894(\);)m 960 1606(})m 480 1318(})m 0 824(If)m
-230(we)s 565(use)s 220 fnt35 940 821(style { symbol })m 240 fnt82
-2466 824(we)m 2801(get)s 3153(this:)s
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 5 7
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Italic
-%%+ font Times-Bold
-%%+ font Symbol
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-1 LoutMargSet
-grestore
-240 fnt83 0 13843(1.3.)m 454(Changing)s 1454(the)s 1799(appear)s 3(ance)k
-2980(of)s 3261(a)s 3436(pr)s 10(o)k 2(gr)k 3(am)k
-240 fnt84 8953 13840(5)m 240 fnt82 480 13203(#)m 240 fnt83
-600 13205(include)m 240 fnt78 1357 13197(<)m 240 fnt83 1482 13205(stdio)m
-240 fnt82 1940 13203(.)m 240 fnt83 1984 13205(h)m 240 fnt78
-2099 13197(>)m 240 fnt83 480 12629(tr)m 8(eeprint)k 240 fnt82
-1312 12627(\()m 240 fnt83 1385 12629(p)m 240 fnt82 1498 12627(\))m
-2046(/*)s 2276(print)s 2787(tree)s 3200(p)s 3373(recursi)s 6(v)k 3(ely)k
-4479(*/)s 240 fnt84 480 12338(struct)m 240 fnt83 1136 12341(tnode)m
-240 fnt82 1721 12285(*)m 240 fnt83 1825 12341(p)m 240 fnt82
-1938 12339(;)m 480 12051({)m 240 fnt84 960 11762(if)m 240 fnt82
-1178 11763(\()m 240 fnt83 1251 11765(p)m 240 fnt78 1424 11757(\271)m
-240 fnt83 1613 11765(NULL)m 240 fnt82 2212 11763(\))m 2340({)s
-240 fnt83 1440 11477(tr)m 8(eeprint)k 240 fnt82 2272 11475(\()m
-240 fnt83 2345 11477(p)m 240 fnt78 2458 11469(\256)m 240 fnt83
-2688 11477(left)m 240 fnt82 2996 11475(\);)m 240 fnt83 1440 11189(printf)m
-240 fnt82 2006 11187(\()m 240 fnt83 2079 11189("%4d)m 2684(%s\\n")s
-240 fnt82 3264 11187(,)m 240 fnt83 3371 11189(p)m 240 fnt78
-3484 11181(\256)m 240 fnt83 3714 11189(count)m 240 fnt82 4250 11187(,)m
-240 fnt83 4357 11189(p)m 240 fnt78 4470 11181(\256)m 240 fnt83
-4700 11189(wor)m 8(d)k 240 fnt82 5191 11187(\);)m 240 fnt83
-1440 10901(tr)m 8(eeprint)k 240 fnt82 2272 10899(\()m 240 fnt83
-2345 10901(p)m 240 fnt78 2458 10893(\256)m 240 fnt83 2688 10901(right)m
-240 fnt82 3157 10899(\);)m 960 10611(})m 480 10323(})m 0 9829(with)m
-482(mathematical)s 1823(symbols)s 2672(replacing)s 3614(some)s 4175(of)s
-4446(the)s 4794(operators.)s 480 9455(The)m 220 fnt35 901 9452(@CP)m
-240 fnt82 1419 9455(,)m 220 fnt35 1519 9452(@Eiff)m 6(el)k
-240 fnt82 2261 9455(etc.)m 2636(symbols)s 3478(ha)s 4(v)k 3(e)k
-3972(additional)s 4976(options)s 5725(which)s 6360(allo)s 6(w)k
-6932(a)s 7091(\207ner)s 7582(control)s 8307(o)s 3(v)k 3(er)k
-8778(the)s 0 9167(style.)m 615(Here)s 1135(the)s 3(y)k
-1598(all)s 1891(are,)s 2289(with)s 2771(their)s 3268(def)s 2(ault)k
-3989(v)s 6(alues:)k 220 fnt35 480 8666(@CP [ or @Eiff)m 6(el, @Blue)k 3(, etc.)k 13( ])k
-480 8378( style { \207x)m 6(ed })k 480 8090( n)m 2(umbered { No })k 480 7802( f)m 6(ont { Cour)k -3(ier })k
-480 7514( siz)m 3(e { -1.0p })k 480 7226( line { 1.0vx })m 480 6938( tabin { 8 })m 480 6650( tabout { 8s })m
-480 6362( identi\207ers { Base })m 480 6074( k)m 4(e)k 4(yw)k 2(ords { Base })k
-480 5786( oper)m 2(ators { Base })k 480 5498( n)m 2(umbers { Base })k 480 5210( str)m -3(ings { Base })k
-480 4922( comments { Base })m 480 4634({)m 480 4346( ...)m 480 4058(})m 240 fnt82
-0 3564(W)m 19(e)k 387(are)s 753(already)s 1529(f)s 2(amiliar)k
-2360(with)s 220 fnt35 2861 3561(style)m 240 fnt82 3304 3564(.)m
-3487(After)s 4069(that)s 4506(comes)s 220 fnt35 5187 3561(n)m 2(umbered)k
-240 fnt82 6161 3564(,)m 6287(whose)s 6974(v)s 6(alue)k
-7561(may)s 8046(be)s 220 fnt35 8347 3561(No)m 240 fnt82
-8699 3564(\(the)m 0 3276(def)m 2(ault\),)k 220 fnt35 842 3273(Y)m 30(es)k
-240 fnt82 1183 3276(,)m 1285(or)s 1538(a)s 1699(number)s 9(,)k
-2522(and)s 2921(which)s 3557(determines)s 4651(whether)s 5475(or)s
-5729(not)s 6089(line)s 6498(numbers)s 7367(are)s 7709(to)s
-7942(be)s 8219(added)s 8843(an)s 0 2988(if)m 217(so)s
-482(the)s 829(v)s 6(alue)k 1397(of)s 1667(the)s
-2014(\207rst)s 2444(one.)s 2954(Ne)s 3(xt)k 3475(we)s
-3809(ha)s 4(v)k 3(e)k 220 fnt35 4309 2985(f)m 6(ont)k
-240 fnt82 4665 2988(,)m 4772(which)s 5413(determines)s 6511(the)s
-6858(font)s 7303(f)s 2(amily)k 7977(to)s 8215(use,)s
-220 fnt35 8640 2985(siz)m 3(e)k 240 fnt82 9019 2988(,)m
-0 2700(the)m 347(font)s 791(size)s 1217(to)s 1455(use,)s
-1880(and)s 220 fnt35 2283 2697(line)m 240 fnt82 2615 2700(,)m
-2721(the)s 3068(inter)s 4(-line)k 3992(spacing.)s 4886(The)s
-5313(def)s 2(ault)k 6033(v)s 6(alue)k 6600(for)s
-220 fnt35 6937 2697(siz)m 3(e)k 240 fnt82 7375 2700(asks)m
-7837(for)s 8174(one)s 8574(point)s 0 2412(smaller)m 765(than)s
-1238(in)s 1485(the)s 1837(surrounding)s 3051(document;)s 4111(this)s
-4511(w)s 2(as)k 4936(done)s 5462(to)s 5705(compensate)s
-6894(for)s 7236(Courier')s 13(s)k 8180(relati)s 6(v)k 3(ely)k
-0 2124(lar)m 4(ge)k 529(appearance)s 1660(compared)s 2661(to)s
-2900(other)s 3451(fonts)s 3980(of)s 4251(the)s 4599(same)s
-5146(nominal)s 5985(size.)s 480 1750(The)m 220 fnt35 919 1747(tabin)m
-240 fnt82 1451 1750(and)m 220 fnt35 1866 1747(tabout)m 240 fnt82
-2543 1750(options)m 3310(are)s 3668(the)s 4027(subject)s 4775(of)s
-5057(Section)s 5842(1.5.)s 6317(After)s 6891(them)s 7440(come)s
-8025(six)s 8370(options)s 0 1462(gi)m 6(ving)k 701(the)s
-1091(particular)s 2107(font)s 2594(f)s 2(aces)k 3175(in)s
-3461(which)s 4145(to)s 4426(print)s 4979(identi\207ers,)s 6083(k)s 2(e)k 3(yw)k 2(ords,)k
-7156(operators,)s 8195(numbers,)s 0 1174(strings,)m 741(and)s 1141(comments.)s
-220 fnt35 2285 1171(Base)m 240 fnt82 2833 1174(means)m 3492(the)s
-3836(basic)s 4377(f)s 2(ace;)k 4880(other)s 5428(commonly)s
-6502(a)s 4(v)k 6(ailable)k 7407(choices)s 8171(are)s
-220 fnt35 8514 1171(Slope)m 240 fnt82 0 886(and)m 220 fnt35
-415 883(Bold)m 240 fnt82 841 886(.)m 1016(These)s 1654(options)s
-2421(may)s 2898(all)s 3202(be)s 3495(set)s 3831(to)s
-4081(dif)s 6(ferent)k 4967(f)s 2(aces)k 5517(if)s
-5745(desired.)s 6610(The)s 7049(def)s 2(ault)k 7781(v)s 6(alues)k
-8449(sho)s 6(wn)k 0 598(are)m 347(correct)s 1069(for)s
-220 fnt35 1407 595(style { \207x)m 6(ed })k 240 fnt82 2696 598(only;)m
-3234(the)s 3582(other)s 4133(styles)s 4728(ha)s 4(v)k 3(e)k
-5229(other)s 5780(def)s 2(aults)k 6585(\(Section)s 7438(1.4\).)s
-
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 6 8
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Times-Italic
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-0 LoutMargSet
-grestore
-240 fnt84 0 13840(6)m 240 fnt83 5981 13843(Chapter)m 6831(1.)s
-7105(Computer)s 8128(Pr)s 10(o)k 2(gr)k 3(ams)k
-240 fnt84 0 13203(1.4.)m 471(Changing)s 1525(the)s 1899(appearance)s
-3138(of)s 3410(all)s 3717(pr)s 4(ograms)k 4764(simultaneously)s
-240 fnt82 480 12726(W)m 19(e)k 853(ha)s 4(v)k 3(e)k
-1358(just)s 1767(seen)s 2253(that)s 2675(the)s 220 fnt35
-3027 12723(@CP)m 240 fnt82 3545 12726(,)m 220 fnt35 3656 12723(@Eiff)m 6(el)k
-240 fnt82 4409 12726(etc.)m 4795(symbols)s 5648(ha)s 4(v)k 3(e)k
-6153(man)s 3(y)k 6740(options)s 7500(for)s 7842(changing)s
-8778(the)s 0 12438(appearance)m 1130(of)s 1399(the)s 1746(program)s
-2614(te)s 3(xt.)k 3131(Ho)s 6(we)k 6(v)k 3(er)k 9(,)k
-4090(most)s 4613(people)s 5306(w)s 2(ould)k 5959(not)s
-6323(w)s 2(ant)k 6845(to)s 7082(ha)s 4(v)k 3(e)k
-7582(a)s 7746(dif)s 6(ferent)k 8619(style)s 0 12150(for)m
-333(e)s 6(v)k 3(ery)k 903(program)s 1768(te)s 3(xt)k
-2177(in)s 2415(their)s 2906(document;)s 3957(the)s 3(y)k
-4414(w)s 2(ant)k 4931(to)s 5165(de\207ne)s 5800(the)s
-6143(style)s 6644(once)s 7147(at)s 7373(the)s 7716(start,)s
-8227(and)s 8625(ha)s 4(v)k 3(e)k 0 11862(all)m
-281(their)s 765(program)s 1622(te)s 3(xts)k 2109(come)s
-2670(out)s 3023(in)s 3254(that)s 3659(style)s 4153(without)s
-4932(laboriously)s 6049(setting)s 6726(options)s 7470(on)s 7754(e)s 6(v)k 3(ery)k
-8317(symbol.)s 0 11574(Y)m 26(ou)k 442(do)s 735(this)s
-1131(by)s 1425(cop)s 2(ying)k 2248(the)s 2596(setup)s
-3154(\207le)s 3515(and)s 3919(changing)s 4850(it.)s 480 11200(F)m 3(or)k
-882(general)s 1653(information)s 2852(about)s 3457(ho)s 6(w)k
-3932(to)s 4184(mak)s 2(e)k 4770(your)s 5282(o)s 6(wn)k
-5759(setup)s 6331(\207le,)s 6756(consult)s 7521(Section)s 8308(??.)s
-8698(The)s 0 10912(options)m 775(that)s 1212(determine)s 2242(the)s
-2609(def)s 2(ault)k 3349(v)s 6(alues)k 4024(are)s
-4390(in)s 4652(the)s 220 fnt35 5019 10909(@Use)m 240 fnt82
-5703 10912(clause)m 6375(which)s 7036(occupies)s 7943(most)s 8487(of)s
-8778(the)s 0 10624(setup)m 558(\207le.)s 1027(Here)s 1547(is)s
-1757(part)s 2188(of)s 2459(the)s 220 fnt35 2807 10621(@Use)m
-240 fnt82 3472 10624(clause)m 4125(from)s 220 fnt35 4649 10621(cpr)m -3(int)k
-240 fnt82 5184 10624(:)m 220 fnt35 612 10083(@Use { @CPSetup)m 612 9795( #)m
-1034(pipe)s 3565({)s 4675(})s 612 9507( #)m 1034(n)s 2(umbered)k
-3565({)s 3690(No)s 4675(})s 612 9219( #)m 1034(style)s
-3565({)s 3690(\207x)s 6(ed)k 4675(})s 612 8643( #)m
-1034(\207x)s 6(edf)k 6(ont)k 3565({)s 3690(Cour)s -3(ier)k
-4675(})s 612 8355( #)m 1034(\207x)s 6(edsiz)k 3(e)k
-3565({)s 3690(-1.0p)s 4675(})s 612 8067( #)m 1034(\207x)s 6(edline)k
-3565({)s 3690(1.0vx)s 4675(})s 612 7779( #)m 1034(\207x)s 6(edtabin)k
-3565({)s 3690(8)s 4675(})s 612 7491( #)m 1034(\207x)s 6(edtabout)k
-3565({)s 3690(8s)s 4675(})s 612 6915( #)m 1034(\207x)s 6(edidenti\207ers)k
-3565({)s 3690(Base)s 4675(})s 612 6627( #)m 1034(\207x)s 6(edk)k 4(e)k 4(yw)k 2(ords)k
-3565({)s 3690(Base)s 4675(})s 612 6339( #)m 1034(\207x)s 6(edoper)k 2(ators)k
-3565({)s 3690(Base)s 4675(})s 612 6051( #)m 1034(\207x)s 6(edn)k 2(umbers)k
-3565({)s 3690(Base)s 4675(})s 612 5763( #)m 1034(\207x)s 6(edstr)k -3(ings)k
-3565({)s 3690(Base)s 4675(})s 612 5475( #)m 1034(\207x)s 6(edcomments)k
-3565({)s 3690(Base)s 4675(})s 612 5187( #)m 1034(\207x)s 6(edlinen)k 2(umbers)k
-3565({)s 3690(Base)s 4675(})s 612 4611( #)m 1034(\207x)s 6(edidenti\207ersf)k 6(or)k -5(mat)k
-3565({)s 3690(@Body)s 4675(})s 612 4323( #)m 1034(\207x)s 6(edk)k 4(e)k 4(yw)k 2(ordsf)k 6(or)k -5(mat)k
-3565({)s 3690(@Body)s 4675(})s 612 4035( #)m 1034(\207x)s 6(edoper)k 2(atorsf)k 6(or)k -5(mat)k
-3565({)s 3690(@Body)s 4675(})s 612 3747( #)m 1034(\207x)s 6(edn)k 2(umbersf)k 6(or)k -5(mat)k
-3565({)s 3690(@Body)s 4675(})s 612 3459( #)m 1034(\207x)s 6(edstr)k -3(ingsf)k 6(or)k -5(mat)k
-3565({)s 3690(@Body)s 4675(})s 612 3171( #)m 1034(\207x)s 6(edcommentsf)k 6(or)k -5(mat)k
-3565({)s 3690(@Body)s 4675(})s 612 2883( #)m 1034(\207x)s 6(edlinen)k 2(umbersf)k 6(or)k -5(mat)k
-3565({)s 3690(@Body)s 4675(})s 612 2307(...)m 612 1731(})m
-240 fnt82 0 1193(The)m 220 fnt35 448 1190(pipe)m 240 fnt82
-934 1193(option)m 1623(will)s 2069(be)s 2371(e)s 3(xplained)k
-3376(in)s 3639(Section)s 4434(1.9.)s 4918(The)s 5366(options)s
-6142(whose)s 6830(name)s 7424(be)s 3(gins)k 8117(with)s
-220 fnt35 8620 1190(\207x)m 6(ed)k 240 fnt82 0 905(apply)m
-600(only)s 1094(when)s 220 fnt35 1685 902(style)m 240 fnt82
-2202 905(is)m 220 fnt35 2427 902(\207x)m 6(ed)k 240 fnt82
-2873 905(;)m 2999(there)s 3547(are)s 3908(corresponding)s 5344(options,)s
-6171(not)s 6551(sho)s 6(wn,)k 7293(which)s 7949(apply)s
-8550(when)s 220 fnt35 0 614(style)m 240 fnt82 503 617(is)m
-220 fnt35 713 614(v)m 5(ar)k -6(ying)k 240 fnt82
-1469 617(and)m 220 fnt35 1873 614(symbol)m 240 fnt82 2554 617(.)m
-480 243(W)m 19(e)k 849(can)s 1238(see)s 1599(in)s
-1841(this)s 2237(e)s 3(xtract)k 2943(that)s 3360(the)s
-3708(def)s 2(ault)k 4429(v)s 6(alue)k 4996(of)s
-220 fnt35 5267 240(style)m 240 fnt82 5770 243(is)m 220 fnt35
-5979 240(\207x)m 6(ed)k 240 fnt82 6425 243(,)m 6532(and)s
-6936(of)s 220 fnt35 7206 240(n)m 2(umbers)k 240 fnt82
-8111 243(is)m 220 fnt35 8321 240(No)m 240 fnt82 8594 243(.)m
-8757(W)s 19(e)k
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 7 9
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Italic
-%%+ font Times-Bold
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-1 LoutMargSet
-grestore
-240 fnt83 0 13843(1.4.)m 454(Changing)s 1454(the)s 1799(appear)s 3(ance)k
-2980(of)s 3261(all)s 3573(pr)s 10(o)k 2(gr)k 3(ams)k
-4545(simultaneously)s 240 fnt84 8951 13840(7)m 240 fnt82 0 13205(can)m
-396(also)s 842(see)s 1211(the)s 1567(def)s 2(ault)k
-2296(font)s 2749(f)s 2(amily)k 15(,)k 3470(font)s
-3923(f)s 2(ace,)k 4433(font)s 4886(size,)s 5372(line)s
-5794(spacing,)s 6640(and)s 7052(tab)s 7405(settings)s 8194(when)s
-8778(the)s 0 12917(style)m 502(is)s 220 fnt35 706 12914(\207x)m 6(ed)k
-240 fnt82 1152 12917(.)m 1311(The)s 1733(font)s 2173(f)s 2(amily)k
-2842(name)s 3411(for)s 220 fnt35 3743 12914(\207x)m 6(ed)k
-240 fnt82 4244 12917(style)m 4745(is)s 220 fnt35 4950 12914(Cour)m -3(ier)k
-240 fnt82 5671 12917(,)m 5772(b)s 4(ut)k 6129(for)s
-6461(the)s 6804(other)s 7349(styles)s 7939(\(not)s 8378(sho)s 6(wn\))k
-0 12629(it)m 188(is)s 393(empty)s 15(.)k 1135(This)s
-1606(causes)s 2276(the)s 220 fnt35 2619 12626(\207x)m 6(ed)k
-240 fnt82 3120 12629(style)m 3622(to)s 3856(al)s 2(w)k 2(ays)k
-4563(switch)s 5239(to)s 5473(Courier)s 9(,)k 6296(and)s
-6695(the)s 7038(other)s 7584(styles)s 8174(to)s 8408(use)s
-8778(the)s 0 12341(same)m 547(font)s 992(f)s 2(amily)k
-1667(as)s 1917(in)s 2160(the)s 2508(surrounding)s 3718(document.)s
-480 11967(The)m 895(options)s 1637(from)s 220 fnt35 2147 11964(\207x)m 6(edidenti\207ers)k
-240 fnt82 3582 11967(to)m 220 fnt35 3807 11964(\207x)m 6(edlinen)k 2(umbers)k
-240 fnt82 5497 11967(allo)m 6(w)k 6062(you)s 6463(to)s
-6688(set)s 6999(the)s 7334(font)s 7765(f)s 2(ace)k
-8202(to)s 8427(use)s 8788(for)s 0 11679(each)m 481(of)s
-738(these)s 1270(parts)s 1771(of)s 2027(your)s 2512(program.)s
-3471(People)s 4164(who)s 4616(w)s 2(ant)k 5124(\207x)s 3(ed-width)k
-6267(fonts)s 6781(do)s 7060(not)s 7411(usually)s 8142(w)s 2(ant)k
-8650(v)s 3(ery)k 0 11391(e)m 3(xciting)k 813(font)s
-1251(f)s 2(aces)k 1783(either)s 9(,)k 2417(so)s
-2676(the)s 3017(def)s 2(ault)k 3731(v)s 6(alues)k
-4380(abo)s 3(v)k 3(e)k 4995(are)s 5335(all)s
-220 fnt35 5621 11388(Base)m 240 fnt82 6113 11391(,)m 6213(b)s 4(ut)k
-6568(for)s 6899(the)s 220 fnt35 7240 11388(v)m 5(ar)k -6(ying)k
-240 fnt82 7989 11391(and)m 220 fnt35 8385 11388(symbol)m 240 fnt82
-0 11103(styles,)m 657(the)s 1011(def)s 2(ault)k 1738(identi\207er)s
-2667(f)s 2(ace)k 3124(is)s 220 fnt35 3340 11100(Slope)m
-240 fnt82 3892 11103(,)m 4006(the)s 4360(def)s 2(ault)k
-5087(k)s 2(e)k 3(yw)k 2(ord)k 5982(f)s 2(ace)k
-6440(is)s 220 fnt35 6656 11100(Bold)m 240 fnt82 7082 11103(,)m
-7195(and)s 7606(so)s 7878(on.)s 8288(Y)s 26(ou)k
-8737(can)s 0 10815(actually)m 818(gi)s 6(v)k 3(e)k
-1286(a)s 1460(f)s 2(amily)k 2144(name)s 2726(before)s
-3401(the)s 3757(f)s 2(ace)k 4217(name)s 4800(in)s
-5051(these)s 5607(options,)s 6427(allo)s 6(wing)k 7320(you)s
-7743(to)s 7991(switch)s 8681(font)s 0 10527(f)m 2(amilies)k
-817(for)s 1155(dif)s 6(ferent)k 2030(parts)s 2545(of)s
-2816(the)s 3164(program)s 4034(if)s 4251(you)s 4666(wish.)s
-480 10153(The)m 220 fnt35 900 10150(\207x)m 6(edidenti\207ersf)k 6(or)k -5(mat)k
-240 fnt82 2964 10153(option)m 3624(allo)s 6(ws)k 4284(you)s
-4690(to)s 4920(mak)s 2(e)k 5483(a)s 5641(more)s
-6179(radical)s 6874(change)s 7599(to)s 7829(the)s 8168(format)s
-8855(of)s 0 9865(identi\207ers)m 997(than)s 1456(just)s 1851(the)s
-2190(font.)s 2729(W)s 9(ithin)k 3431(this)s 3817(option,)s
-220 fnt35 4527 9862(@Body)m 240 fnt82 5298 9865(stands)m 5937(for)s
-6266(the)s 6604(identi\207er)s 7516(being)s 8091(formatted,)s 0 9577(and)m
-404(by)s 698(applying)s 1589(Lout)s 2101(symbols)s 2950(to)s
-3189(it,)s 3428(you)s 3843(apply)s 4429(them)s 4967(to)s
-5206(e)s 6(v)k 3(ery)k 5782(identi\207er)s 13(.)k
-6795(F)s 3(or)k 7184(e)s 3(xample,)k 220 fnt35
-480 9076(\207x)m 6(edidenti\207ersf)k 6(or)k -5(mat { red @Colour @Body })k 240 fnt82
-0 8549(will)m 444(cause)s 1049(identi\207ers)s 2073(to)s 2330(be)s
-2630(printed)s 3383(red.)s 153 fnt82 3732 8638(1)m 240 fnt82
-3930 8549(If)m 4178(you)s 4611(do)s 4922(use)s 5315(e)s 3(xotic)k
-5967(formats,)s 6821(remember)s 7867(that)s 8303(in)s 8565(some)s
-0 8261(programming)m 1347(languages,)s 2403(comments)s 3428(and)s 3824(e)s 6(v)k 3(en)k
-4316(strings)s 4995(may)s 5453(occup)s 2(y)k 6188(more)s
-6727(than)s 7188(one)s 7581(line:)s 220 fnt35 8097 8258(@Bo)m 6(x)k
-240 fnt82 8690 8261(,)m 8788(for)s 0 7973(e)m 3(xample,)k
-914(will)s 1340(gi)s 6(v)k 3(e)k 1799(a)s
-1965(logical)s 2670(b)s 4(ut)k 3032(probably)s 3937(unw)s 2(anted)k
-4924(result)s 5514(when)s 6090(formatting)s 7151(a)s 7317(multi-line)s
-8314(string.)s 480 7599(As)m 795(al)s 2(w)k 2(ays)k
-1504(with)s 1983(setup)s 2539(\207les,)s 3041(to)s 3278(change)s
-4009(a)s 4173(def)s 2(ault)k 4892(v)s 6(alue,)k
-5508(delete)s 6132(the)s 6477(preceding)s 220 fnt35 7471 7596(#)m
-240 fnt82 7645 7599(and)m 8047(change)s 8778(the)s 0 7311(part)m
-432(between)s 1288(braces.)s 2064(F)s 3(or)k 2455(e)s 3(xample,)k
-3371(suppose)s 4200(you)s 4617(are)s 4966(happ)s 2(y)k
-5606(with)s 220 fnt35 6090 7308(\207x)m 6(ed)k 240 fnt82
-6597 7311(e)m 3(xcept)k 7280(that)s 7700(you)s 8117(w)s 2(ant)k
-8642(bold)s 0 7023(k)m 2(e)k 3(yw)k 2(ords.)k
-1088(Then)s 1637(one)s 2039(line)s 2453(needs)s 3049(to)s
-3288(be)s 3570(changed,)s 4475(to)s 220 fnt35 480 6524(\207x)m 6(edk)k 4(e)k 4(yw)k 2(ords { Bold })k
-240 fnt82 0 6026(Or)m 307(suppose)s 1130(you)s 1540(lik)s 2(e)k
-220 fnt35 1947 6023(v)m 5(ar)k -6(ying)k 240 fnt82
-2698 6026(as)m 2943(it)s 3130(stands,)s 3830(b)s 4(ut)k
-4187(w)s 2(ould)k 4836(lik)s 2(e)k 5243(it)s
-5430(to)s 5664(be)s 5941(the)s 6284(def)s 2(ault)k
-7000(style)s 7502(rather)s 8113(than)s 220 fnt35 8576 6023(\207x)m 6(ed)k
-240 fnt82 9022 6026(.)m 0 5738(Ag)m 1(ain,)k 691(only)s
-1171(one)s 1573(line)s 1987(needs)s 2583(to)s 2822(be)s
-3104(changed,)s 4009(to)s 220 fnt35 4248 5735(style { v)m 5(ar)k -6(ying })k
-240 fnt82 5727 5738(.)m 480 5364(It)m 708(is)s 942(probably)s
-1871(not)s 2261(a)s 2451(good)s 3013(idea)s 3495(to)s
-3758(change)s 4516(the)s 4888(def)s 2(ault)k 5633(v)s 6(alue)k
-6225(of)s 220 fnt35 6520 5361(n)m 2(umbered)k 240 fnt82
-7578 5364(to)m 220 fnt35 7841 5361(Y)m 30(es)k 240 fnt82
-8182 5364(,)m 8313(because)s 0 5076(small)m 572(fragments)s 1578(of)s
-1848(code)s 2356(within)s 3024(paragraphs)s 4123(will)s 4549(then)s
-5018(get)s 5369(line)s 5783(numbers)s 6658(as)s 6907(well)s
-7373(as)s 7623(lar)s 4(ge)k 8151(displayed)s 0 4788(programs.)m
-1078(If)s 1319(you)s 1746(do)s 2050(ha)s 4(v)k 3(e)k
-2562(man)s 3(y)k 3157(lar)s 4(ge)k 3697(numbered)s
-4723(programs)s 5689(as)s 5950(well)s 6427(as)s 6689(small)s
-7272(fragments,)s 8345(a)s 8523(better)s 0 4500(approach)m 934(w)s 2(ould)k
-1589(be)s 1871(to)s 2110(place)s 220 fnt35 480 3999(impor)m -8(t @CPSetup)k
-480 3711(macro @NCP { @CP n)m 2(umbered { )k 19(Y)k 30(es } })k 240 fnt82
-0 3217(\(or)m 336(the)s 681(equi)s 6(v)k 6(alent)k
-1723(for)s 2058(your)s 2555(language\))s 3544(in)s 3785(your)s
-220 fnt35 4281 3214(m)m 3(ydefs)k 240 fnt82 5037 3217(\207le,)m
-5446(so)s 5710(that)s 6125(you)s 6538(can)s 6924(type)s
-220 fnt35 7390 3214(@NCP)m 240 fnt82 8123 3217(instead)m 8855(of)s
-220 fnt35 0 2926(@CP n)m 2(umbered { )k 19(Y)k 30(es })k
-240 fnt82 2223 2929(.)m 480 2555(The)m 905(setup)s 1460(\207les)s
-1906(for)s 2241(the)s 2586(other)s 3134(languages)s 4139(are)s
-4483(identical)s 5357(to)s 5593(this)s 5986(one,)s 6436(e)s 3(xcept)k
-7114(that)s 7529(the)s 7874(symbol)s 8630(after)s 220 fnt35
-0 2264(@Use)m 240 fnt82 666 2267(is)m 878(dif)s 6(ferent,)k
-1801(and)s 2207(some)s 2770(of)s 3042(the)s 3392(def)s 2(ault)k
-4114(v)s 6(alues)k 4772(may)s 5240(be)s 5523(dif)s 6(ferent.)k
-6504(Changing)s 7490(an)s 7775(option)s 8446(af)s 6(fects)k
-0 1979(only)m 480(the)s 828(language)s 1749(of)s 2020(that)s
-2438(setup)s 2997(\207le;)s 3414(if)s 3632(you)s 4047(ha)s 4(v)k 3(e)k
-4548(multiple)s 5401(languages)s 6409(you)s 6824(can)s 7214(ha)s 4(v)k 3(e)k
-7715(multiple)s 8568(setup)s 1134 0 0 0 240 288 60 0 1457 LoutGr2
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-122 fnt82 0 1262(1)m 172 fnt35
-56 1191(@Colour)m 192 fnt82 779 1192(is)m 945(not)s 1235(a)s
-1365(Lout)s 1773(primiti)s 4(v)k 2(e)k 2510(lik)s 1(e,)k
-2879(say)s 12(,)k 172 fnt35 3206 1191(@F)m 5(ont)k
-192 fnt82 3714 1192(;)m 3801(it)s 3952(is)s 4118(de\207ned)s
-4726(when)s 5184(you)s 5514(write)s 172 fnt35 5948 1191(@SysInclude { doc })m
-192 fnt82 7528 1192(or)m 7733(the)s 8009(equi)s 4(v)k 4(alent)k
-8844(for)s 0 962(the)m 279(other)s 720(document)s 1524(types.)s
-2060(This)s 2441(is)s 2609(true)s 2952(of)s 3168(quite)s
-3596(a)s 3729(fe)s 4(w)k 4055(generally)s 4811(useful)s
-5322(symbols,)s 6047(including)s 172 fnt35 6814 961(@Bo)m 5(x)k
-192 fnt82 7325 962(and)m 172 fnt35 7649 961(@I)m 192 fnt82
-7855 962(.)m 7987(If)s 8170(you)s 8502(w)s 1(ant)k
-8922(to)s 0 732(use)m 300(these)s 738(symbols)s 1417(here,)s
-1832(you)s 2164(must)s 2583(include)s 3192(your)s 3591(setup)s
-4038(\207le)s 192 fnt83 4327 733(after)m 172 fnt35 4740 731(@SysInclude { doc })m
-192 fnt82 6322 732(or)m 6529(whate)s 4(v)k 2(er)k 7(,)k
-7303(the)s 7582(re)s 4(v)k 2(erse)k 8172(of)s
-8388(the)s 8666(usual)s 0 502(arrangement,)m 1044(so)s 1260(that)s
-1597(the)s 2(y)k 1972(are)s 2253(de\207ned)s 2866(before)s
-3402(Lout)s 3814(reads)s 4261(your)s 4663(setup)s 5112(\207le.)s
-5490(This)s 5873(re)s 4(v)k 2(ersal)k 6518(is)s
-6689(carried)s 7268(out)s 7564(automatically)s 8653(when)s 0 272(formatting)m
-841(programs)s 1594(independently)s 2715(of)s 2921(an)s 2(y)k
-3230(document,)s 4063(so)s 4266(you)s 4588(can)s 4891(use)s
-5181(these)s 5609(symbols)s 6279(in)s 6464(a)s 6587(setup)s
-7025(\207le)s 7304(gi)s 4(v)k 2(en)k 7760(by)s
-7987(a)s 172 fnt35 8110 271(-S)m 192 fnt82 8311 272(command)m
-0 42(line)m 332(\210ag.)s
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 8 10
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Times-Italic
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-0 LoutMargSet
-grestore
-240 fnt84 0 13840(8)m 240 fnt83 5981 13843(Chapter)m 6831(1.)s
-7105(Computer)s 8128(Pr)s 10(o)k 2(gr)k 3(ams)k
-240 fnt82 0 13205(\207les)m 449(and)s 853(change)s 1587(their)s
-2084(options)s 2840(quite)s 3374(independently)s 4784(of)s 5055(each)s
-5550(other)s 13(.)k 240 fnt84 0 12412(1.5.)m 471(Dealing)s
-1311(with)s 1817(tab)s 2201(characters)s 3330(in)s 3585(pr)s 4(ograms)k
-240 fnt82 480 11935(T)m 19(ab)k 896(characters)s 1924(pro)s 3(vide)k
-2718(a)s 2894(con)s 9(v)k 3(enient)k 4002(w)s 2(ay)k
-4463(to)s 4712(indent)s 5380(and)s 5794(align)s 6339(parts)s
-6864(of)s 7145(computer)s 8119(programs.)s 0 11647(W)m 9(ith)k
-526(care,)s 1030(this)s 1426(alignment)s 2442(can)s 2831(be)s
-3113(preserv)s 3(ed)k 4097(in)s 4340(the)s 4688(\207nal)s
-5168(print)s 5679(e)s 6(v)k 3(en)k 6179(with)s
-6661(v)s 6(arying-width)k 8067(fonts.)s 480 11273(The)m 896(distance)s
-1723(between)s 2565(tw)s 2(o)k 2962(tab)s 3295(stops)s
-3826(in)s 4056(the)s 4392(program)s 5250(te)s 3(xt)k
-5653(is)s 5850(by)s 6132(def)s 2(ault)k 6841(tak)s 2(en)k
-7401(to)s 7628(be)s 7898(8)s 8052(characters,)s 0 10985(which)m
-642(is)s 852(standard)s 1720(for)s 2058(Unix.)s 2701(This)s
-3177(can)s 3566(be)s 3848(changed)s 4704(with)s 5186(the)s
-220 fnt35 5534 10982(tabin)m 240 fnt82 6055 10985(option.)m 6831(F)s 3(or)k
-7220(e)s 3(xample,)k 220 fnt35 480 10484(@CP tabin { 4 })m 240 fnt82
-0 9990(informs)m 789(Lout)s 1296(that)s 1709(tab)s 2049(stops)s
-2587(occur)s 3173(e)s 6(v)k 3(ery)k 3744(4)s
-3913(characters)s 4926(in)s 5164(the)s 5507(program)s 6372(te)s 3(xt.)k
-6886(All)s 7241(the)s 7584(symbols)s 8428(\()s 220 fnt35
-8501 9987(@CP)m 240 fnt82 9019 9990(,)m 220 fnt35 0 9699(@Eiff)m 6(el)k
-240 fnt82 689 9702(,)m 785(etc.\))s 1240(and)s 1633(their)s
-2118(setup)s 2665(\207les)s 3103(ha)s 4(v)k 3(e)k
-3593(this)s 3977(option)s 4635(and)s 5028(the)s 5364(ne)s 3(xt;)k
-5874(b)s 4(ut)k 6225(to)s 6453(sa)s 4(v)k 3(e)k
-6915(repetition)s 7876(we)s 8200(will)s 8614(stick)s 0 9414(with)m
-482(C)s 694(for)s 1032(the)s 1380(rest)s 1784(of)s
-2055(this)s 2451(section.)s 480 9040(The)m 916(distance)s 1764(between)s
-2627(tw)s 2(o)k 3046(tab)s 3399(stops)s 3951(on)s
-4257(the)s 4614(printed)s 5357(page)s 5874(is)s 6093(quite)s
-6636(a)s 6810(dif)s 6(ferent)k 7694(thing,)s 8302(and)s
-8715(it)s 8916(is)s 0 8752(determined)m 1133(by)s 1427(the)s
-1775(v)s 6(alue)k 2343(of)s 2614(the)s 220 fnt35
-2962 8749(tabout)m 240 fnt82 3628 8752(option,)m 4347(which)s 4989(must)s
-5514(be)s 5796(a)s 5962(Lout)s 6474(length.)s 7236(F)s 3(or)k
-7625(e)s 3(xample,)k 220 fnt35 480 8251(@CP tabout { 0.5i })m 240 fnt82
-0 7757(requests)m 857(that)s 1298(tab)s 1666(stops)s 2232(be)s
-2537(placed)s 3243(at)s 3498(half-inch)s 4440(interv)s 6(als.)k
-5443(In)s 5722(other)s 6297(w)s 2(ords,)k 7010(a)s
-7199(distance)s 8061(of)s 8355(one)s 8781(tab)s 0 7469(stop)m
-474(in)s 739(the)s 1109(program)s 2001(te)s 3(xt)k
-2439(will)s 2887(be)s 3191(equi)s 6(v)k 6(alent)k
-4257(to)s 4519(a)s 4707(distance)s 5568(of)s 5861(half)s
-6326(an)s 6632(inch)s 7123(on)s 7442(the)s 7812(printed)s
-8570(page.)s 0 7181(F)m 3(or)k 389(e)s 3(xample,)k
-220 fnt35 480 6680(@CP style { v)m 5(ar)k -6(ying } tabout { 3f } n)k 2(umbered { )k 19(Y)k 30(es })k
-240 fnt82 0 6181(might)m 659(produce)s 1527(the)s 1916(follo)s 6(wing,)k
-2989(where)s 3670(tab)s 4056(characters)s 5116(in)s 5400(the)s
-5789(program)s 6700(te)s 3(xt)k 7157(ha)s 4(v)k 3(e)k
-7699(been)s 8249(used)s 8788(for)s 0 5893(indenting)m 957(and)s
-1361(also)s 1799(to)s 2038(align)s 2573(the)s 2921(comments:)s
-480 5388(1)m 240 fnt84 1200 5387(struct)m 240 fnt83 1856 5390(tnode)m
-240 fnt82 2441 5388({)m 4080(/*)s 4310(the)s 4658(basic)s
-5202(node)s 5724(*/)s 480 5100(2)m 240 fnt84 1920 5099(char)m
-240 fnt82 2443 5046(*)m 240 fnt83 2547 5102(wor)m 8(d)k
-240 fnt82 3038 5100(;)m 4080(/*)s 4310(points)s 4946(to)s
-5185(the)s 5533(te)s 3(xt)k 5948(*/)s 480 4812(3)m
-240 fnt84 1920 4811(int)m 240 fnt83 2258 4814(count)m 240 fnt82
-2794 4812(;)m 4080(/*)s 4310(number)s 5101(of)s 5372(occurrences)s
-6564(*/)s 480 4524(4)m 240 fnt84 1920 4523(struct)m 240 fnt83
-2576 4526(tnode)m 240 fnt82 3161 4470(*)m 240 fnt83 3265 4526(left)m
-240 fnt82 3573 4524(;)m 4080(/*)s 4310(left)s 4687(child)s
-5223(*/)s 480 4236(5)m 240 fnt84 1920 4235(struct)m 240 fnt83
-2576 4238(tnode)m 240 fnt82 3161 4182(*)m 240 fnt83 3265 4238(right)m
-240 fnt82 3734 4236(;)m 4080(/*)s 4310(right)s 4821(child)s
-5357(*/)s 480 3948(6)m 1200(};)s 0 3454(W)m 19(e')k 12(v)k 3(e)k
-672(used)s 220 fnt35 1183 3451(n)m 2(umbered { )k 19(Y)k 30(es })k
-240 fnt82 2891 3454(to)m 3144(demonstrate)s 4381(that)s 4813(the)s
-5174(features)s 5994(for)s 6345(dealing)s 7116(with)s 7611(tabs)s
-8061(w)s 2(ork)k 8626(e)s 6(v)k 3(en)k
-0 3166(with)m 471(line)s 873(numbers.)s 1850(The)s 2266(v)s 6(alue)k
-220 fnt35 2823 3163(3f)m 240 fnt82 3051 3166(means)m 3702(three)s
-4223(times)s 4780(the)s 5116(current)s 5841(font)s 6274(size,)s
-6741(and)s 7133(it)s 7314(is)s 7512(the)s 7849(def)s 2(ault)k
-8558(v)s 6(alue)k 0 2878(of)m 220 fnt35 273 2875(tabout)m
-240 fnt82 942 2878(for)m 1282(the)s 220 fnt35 1633 2875(v)m 5(ar)k -6(ying)k
-240 fnt82 2391 2878(and)m 220 fnt35 2798 2875(symbol)m 240 fnt82
-3541 2878(styles)m 4139(\(Section)s 4994(1.4\).)s 5540(In)s 5798(a)s
-5967(12)s 6263(point)s 6818(font)s 7265(this)s 7664(is)s
-7876(36)s 8172(points,)s 8867(or)s 0 2590(half)m 443(an)s
-726(inch.)s 480 2216(If)m 220 fnt35 710 2213(tabout)m 240 fnt82
-1376 2216(is)m 1586(too)s 1945(small,)s 2569(there)s 3102(is)s
-3312(a)s 3478(danger)s 4189(that)s 4607(the)s 4955(alignment)s
-5971(might)s 6589(f)s 2(ail.)k 7068(F)s 3(or)k
-7457(e)s 3(xample,)k 220 fnt35 480 1715(@CP style { v)m 5(ar)k -6(ying } tabout { 0.2i })k
-240 fnt82 0 1216(produces)m
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 9 11
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Italic
-%%+ font Times-Bold
-%%+ font Courier
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-%%IncludeResource: font Courier
-/Courierfnt29 vec2 /Courier LoutRecode
-/fnt29 { /Courierfnt29 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-1 LoutMargSet
-grestore
-240 fnt83 0 13843(1.5.)m 454(Dealing)s 1279(with)s 1746(tab)s
-2106(c)s 3(har)k 3(acter)k 2(s)k 3176(in)s
-3416(pr)s 10(o)k 2(gr)k 3(ams)k 240 fnt84
-8952 13840(9)m 480 13202(struct)m 240 fnt83 1136 13205(tnode)m 240 fnt82
-1721 13203({)m 1805(/*)s 2035(the)s 2383(basic)s 2927(node)s
-3449(*/)s 240 fnt84 768 12914(char)m 240 fnt82 1291 12861(*)m
-240 fnt83 1395 12917(wor)m 8(d)k 240 fnt82 1886 12915(;)m
-1938(/*)s 2168(points)s 2804(to)s 3043(the)s 3391(te)s 3(xt)k
-3806(*/)s 240 fnt84 768 12626(int)m 240 fnt83 1106 12629(count)m
-240 fnt82 1642 12627(;)m 1694(/*)s 1924(number)s 2715(of)s
-2986(occurrences)s 4178(*/)s 240 fnt84 768 12338(struct)m 240 fnt83
-1424 12341(tnode)m 240 fnt82 2009 12285(*)m 240 fnt83 2113 12341(left)m
-240 fnt82 2421 12339(;)m 2473(/*)s 2703(left)s 3080(child)s
-3616(*/)s 240 fnt84 768 12050(struct)m 240 fnt83 1424 12053(tnode)m
-240 fnt82 2009 11997(*)m 240 fnt83 2113 12053(right)m 240 fnt82
-2582 12051(;)m 2634(/*)s 2864(right)s 3375(child)s 3911(*/)s
-480 11763(};)m 0 11269(gi)m 6(v)k 3(en)k 590(the)s
-948(same)s 1505(C)s 1727(te)s 3(xt)k 2153(as)s
-2413(the)s 2771(pre)s 6(vious)k 3650(e)s 3(xample.)k
-4632(The)s 5070(problem)s 5937(here)s 6414(is)s 6634(that)s
-7063(we)s 7408(are)s 7765(asking)s 8453(for)s 220 fnt29
-8802 11277(/*)m 240 fnt82 71 10981(to)m 321(appear)s 1029(four)s
-1498(tab)s 1854(stops)s 2408(or)s 2678(0.8)s 3036(inches)s
-3709(from)s 4244(the)s 4603(left)s 4991(edge,)s 5561(and)s
-5976(yet)s 6339(the)s 6698(material)s 7545(to)s 7795(its)s
-8082(left)s 8470(on)s 8778(the)s 0 10693(line)m 419(is)s
-634(wider)s 1244(than)s 1718(this.)s 2232(This)s 2714(causes)s
-220 fnt29 3394 10701(/*)m 240 fnt82 3861 10693(to)m 4105(be)s
-4393(shifted)s 5106(further)s 5820(to)s 6065(the)s 6418(right)s
-6934(than)s 7409(e)s 3(xpected,)k 8368(and)s 8778(the)s
-0 10405(alignment)m 1016(is)s 1226(lost.)s 1735(The)s 2163(only)s
-2643(solution)s 3471(is)s 3681(to)s 3920(increase)s 220 fnt35
-4758 10402(tabout)m 240 fnt82 5364 10405(.)m 480 10031(When)m 1108(typesetting)s
-2208(computer)s 3169(program)s 4038(te)s 3(xts)k 4535(independently)s
-5943(of)s 6213(an)s 3(y)k 6608(document,)s 7657(there)s
-8189(are)s 220 fnt35 8534 10028(-t)m 240 fnt82 8722 10031(and)m
-220 fnt35 0 9740(-T)m 240 fnt82 289 9743(options)m 1070(to)s
-1335(the)s 220 fnt35 1708 9740(prg2lout)m 240 fnt82 2581 9743(program)m
-3477(equi)s 6(v)k 6(alent)k 4546(to)s 220 fnt35
-4811 9740(tabin)m 240 fnt82 5357 9743(and)m 220 fnt35 5786 9740(tabout)m
-240 fnt82 6478 9743(respecti)m 6(v)k 3(ely)k 15(.)k
-7797(F)s 3(or)k 8212(e)s 3(xample,)k 220 fnt35
-0 9452(-T0.5i)m 240 fnt82 606 9455(produces)m 1521(a)s 1687(half-inch)s
-2606(tab)s 2951(width.)s 240 fnt84 0 8662(1.6.)m 471(Dealing)s
-1311(with)s 1817(f)s 6(ormfeed)k 2794(characters)s 3923(in)s
-4178(pr)s 4(ograms)k 240 fnt82 480 8185(The)m 900(formfeed)s
-1824(\(Control-L\))s 2978(character)s 3904(is)s 4105(traditionally)s 5317(tak)s 2(en)k
-5881(to)s 6112(be)s 6385(a)s 6542(request)s 7283(to)s
-7514(start)s 7975(a)s 8132(ne)s 6(w)k 8570(page.)s
-0 7897(This)m 476(is)s 686(e)s 3(xplicitly)k 1639(recognized)s
-2746(by)s 3040(the)s 3388(formal)s 4079(de\207nition)s 5054(of)s
-5325(the)s 5673(C)s 5885(language)s 6805(and)s 7209(man)s 3(y)k
-7792(others,)s 8484(which)s 0 7609(treat)m 486(this)s 886(character)s
-1823(as)s 2077(white)s 2667(space)s 3258(from)s 3785(a)s
-3955(language)s 4878(point)s 5434(of)s 5708(vie)s 6(w)k 15(,)k
-6263(with)s 6748(the)s 7100(understanding)s 8512(that)s 8934(it)s
-0 7321(will)m 426(cause)s 1013(a)s 1179(page)s 1687(break)s
-2279(when)s 2855(printed.)s 480 6947(There)m 1086(are)s 1426(no)s
-220 fnt35 1712 6944(prg2lout)m 240 fnt82 2553 6947(options)m 3302(for)s
-3633(dealing)s 4383(with)s 4858(formfeed)s 5784(characters.)s 6908(The)s 3(y)k
-7444(will)s 7863(be)s 8137(con)s 9(v)k 3(erted)k
-0 6659(into)m 220 fnt35 425 6656(@NP)m 240 fnt82 1003 6659(\(ne)m 6(w)k
-1529(page\))s 2109(symbols,)s 3014(causing)s 3798(a)s 3964(ne)s 6(w)k
-4411(page)s 4919(or)s 5178(column)s 5953(to)s 6192(be)s
-6474(be)s 3(gun)k 7114(in)s 7357(the)s 7705(printing.)s
-480 6285(Whether)m 1386(formfeed)s 2342(characters)s 3383(end)s 3810(their)s
-4330(line)s 4767(or)s 5050(not)s 5439(is)s 5672(a)s
-5861(problem.)s 6845(Consider)s 7792(this)s 8212(e)s 3(xample,)k
-0 5997(where)m 220 fnt35 640 5994(^L)m 240 fnt82 921 5997(stands)m
-1570(for)s 1908(one)s 2310(formfeed)s 3243(character:)s 220 fnt35
-480 5549(abc)m 480 5261(def^Lghi)m 480 4973(jhk)m 240 fnt82 0 4476(Ho)m 6(w)k
-532(man)s 3(y)k 1134(lines)s 1654(does)s 2163(this)s
-2577(e)s 3(xample)k 3459(contain?)s 4401(Y)s 26(our)k
-4945(te)s 3(xt)k 5379(editor)s 6014(w)s 2(ould)k
-6688(probably)s 7611(say)s 8003(`three',)s 8764(b)s 4(ut)k
-0 4188(when)m 571(you)s 980(print)s 1486(it)s 1672(you)s
-2081(will)s 2502(see)s 2857(four)s 13(.)k 3400(It)s
-3600(is)s 3804(not)s 4164(desirable)s 5077(to)s 5310(ha)s 4(v)k 3(e)k
-5805(printed)s 6535(programs)s 7483(\(especially)s 8565(those)s 0 3900(with)m
-465(line)s 861(numbers)s 1718(attached\))s 2624(disagreeing)s 3761(with)s
-4225(te)s 3(xt)k 4623(editors)s 5306(about)s 5880(line)s
-6276(numbers.)s 7246(The)s 7656(solution)s 8466(adopt)s 8998(-)s
-0 3612(ed)m 297(by)s 220 fnt35 604 3609(prg2lout)m 240 fnt82
-1466 3612(to)m 1718(this)s 2128(problem)s 2998(is)s 3222(to)s
-3474(treat)s 3971(the)s 4332(formfeed)s 5279(character)s 6226(as)s
-6490(including)s 7460(a)s 7640(ne)s 6(wline,)k 8511(b)s 4(ut)k
-8887(to)s 0 3324(assign)m 647(the)s 987(same)s 1526(line)s
-1932(number)s 2715(to)s 2946(both)s 3421(parts)s 3928(of)s
-4191(the)s 4531(original)s 5321(line)s 5727(\(the)s 6146(parts)s
-6653(before)s 7311(and)s 7707(after)s 8195(the)s 8534(form)s
-8998(-)s 0 3036(feed\).)m 664(If)s 905(the)s 1264(part)s
-1705(after)s 2212(the)s 2571(formfeed)s 3514(is)s 3735(empty)s
-4398(\(that)s 4905(is,)s 5182(if)s 5410(the)s 5768(formfeed)s
-6712(character)s 7657(is)s 7878(immediately)s 0 2748(follo)m 6(wed)k
-913(by)s 1219(a)s 1397(ne)s 6(wline)k 2216(or)s
-2487(another)s 3276(formfeed\),)s 4349(and)s 4765(if)s 4994(the)s
-5354(formfeed)s 6299(is)s 6521(not)s 6899(inside)s 7538(an)s 3(y)k
-7947(le)s 3(xical)k 8647(unit,)s 0 2460(then)m 469(the)s
-817(empty)s 1469(line)s 1883(after)s 2379(the)s 2727(formfeed)s
-3660(will)s 4086(not)s 4452(be)s 4734(printed)s 5469(at)s
-5701(all.)s 480 2086(The)m 901(most)s 1419(common)s 2307(case)s
-2767(is)s 2970(that)s 3381(of)s 3645(a)s 3804(formfeed)s
-4729(character)s 9(,)k 5694(outside)s 6434(an)s 3(y)k
-6824(le)s 3(xical)k 7505(unit,)s 7977(on)s 8267(a)s
-8426(line)s 8832(by)s 0 1798(itself.)m 640(Let')s 13(s)k
-1168(see)s 1529(what)s 2054(this)s 2450(rule)s 2877(produces)s
-3792(in)s 4035(the)s 4383(follo)s 6(wing)k 5360(e)s 3(xample)k
-6223(of)s 6494(this)s 6890(case:)s 220 fnt35 480 1301(abc)m
-480 1013(def)m 480 725(^L)m 480 437(ghi)m
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 10 12
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Times-Italic
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-0 LoutMargSet
-grestore
-240 fnt84 0 13840(10)m 240 fnt83 5981 13843(Chapter)m 6831(1.)s
-7105(Computer)s 8128(Pr)s 10(o)k 2(gr)k 3(ams)k
-240 fnt82 0 13205(There)m 615(will)s 1043(be)s 1328(one)s
-1732(blank)s 2327(line)s 2744(numbered)s 3761(3)s 3927(at)s
-4162(the)s 4512(end)s 4918(of)s 5192(the)s 5542(\207rst)s
-5975(page,)s 6537(and)s 6943(a)s 7111(line)s 7528(numbered)s
-8545(4)s 8722(and)s 0 12917(containing)m 220 fnt35 1065 12914(ghi)m
-240 fnt82 1405 12917(at)m 1639(the)s 1989(start)s 2461(of)s
-2734(the)s 3084(ne)s 3(xt)k 3555(page.)s 4173(The)s
-4603(blank)s 5198(line)s 5614(is)s 5826(a)s 5994(necessity)s 15(,)k
-6964(at)s 7198(least)s 7697(when)s 8275(lines)s 8779(are)s
-0 12629(being)m 596(numbered,)s 1671(because)s 2496(we)s 2842(w)s 2(ant)k
-3377(the)s 3736(last)s 4139(line)s 4564(in)s 4819(the)s
-5178(e)s 3(xample)k 6053(to)s 6303(be)s 6597(numbered)s
-7623(4)s 7809(to)s 8059(agree)s 8644(with)s 0 12341(te)m 3(xt)k
-414(editors,)s 1169(b)s 4(ut)k 1529(we)s 1862(don')s 4(t)k
-2422(w)s 2(ant)k 2943(the)s 3289(line)s 3701(numbers)s
-4575(on)s 4870(our)s 5247(print)s 5756(to)s 5994(skip)s
-6444(from)s 6966(2)s 7138(on)s 7434(the)s 7780(\207rst)s
-8209(page)s 8715(to)s 8952(4)s 0 12053(on)m 297(the)s
-644(second,)s 1415(because)s 2227(that)s 2644(w)s 2(ould)k
-3298(mak)s 2(e)k 3869(readers)s 4609(anxious)s 5404(about)s
-5995(the)s 6342(apparently)s 7404(missing)s 8200(line)s 8613(3.)s
-8896(If)s 0 11765(you)m 415(don')s 4(t)k 976(w)s 2(ant)k
-1499(that)s 1917(empty)s 2569(line,)s 3034(mo)s 3(v)k 3(e)k
-3616(the)s 3964(formfeed)s 4897(character)s 5831(to)s 6070(the)s
-6418(end)s 6822(of)s 7093(the)s 7441(preceding)s 8437(line.)s
-240 fnt84 0 10972(1.7.)m 471(Embedding)s 1710(Lout)s 2262(commands)s
-3419(within)s 4125(pr)s 4(ogram)k 5081(comments)s 240 fnt82
-480 10495(It)m 712(is)s 949(possible)s 1817(to)s 2083(embed)s
-2806(Lout)s 3346(te)s 3(xt)k 3788(inside)s 4442(program)s
-5340(comments.)s 6514(Ho)s 6(w)k 7055(this)s 7479(is)s
-7716(done)s 8265(could)s 8883(in)s 0 10207(principle)m 916(v)s 6(ary)k
-1401(from)s 1936(language)s 2868(to)s 3118(language,)s 4101(b)s 4(ut)k
-4474(in)s 4729(e)s 6(v)k 3(ery)k 5317(language)s
-6248(supported)s 7262(so)s 7539(f)s 2(ar)k 7873(it)s
-8076(is)s 8298(done)s 8832(by)s 0 9919(starting)m 757(of)s 6(f)k
-1089(the)s 1424(comment)s 2362(with)s 2831(an)s 220 fnt35
-3102 9916(@)m 240 fnt82 3341 9919(character)m 13(.)k 4353(If)s
-4571(the)s 4906(language)s 5814(has)s 6172(se)s 6(v)k 3(eral)k
-6881(w)s 2(ays)k 7410(to)s 7636(get)s 7976(a)s
-8129(comment,)s 0 9631(this)m 408(will)s 847(w)s 2(ork)k
-1411(e)s 6(v)k 3(ery)k 2000(w)s 2(ay)k 15(.)k
-2559(The)s 3000(entire)s 3612(comment)s 4575(after)s 5083(the)s
-220 fnt35 5444 9628(@)m 240 fnt82 5708 9631(character)m 6655(should)s
-7365(then)s 7847(be)s 8142(Lout)s 8667(te)s 3(xt.)k
-0 9343(F)m 3(or)k 389(e)s 3(xample,)k 1303(to)s
-1542(force)s 2088(Lout)s 2600(to)s 2839(start)s 3309(a)s
-3475(ne)s 6(w)k 3922(page)s 4430(at)s 4662(some)s
-5223(point)s 5775(within)s 6443(a)s 6609(C)s 6821(program,)s
-7738(place)s 220 fnt35 480 8842(/*@ @NP */)m 240 fnt82 0 8387(at)m
-234(that)s 655(point.)s 1314(\(In)s 1652(this)s 2051(case)s
-2521(you)s 2939(can)s 3331(also)s 3772(simply)s 4480(include)s
-5243(a)s 5412(formfeed)s 6348(character)s 9(,)k 7323(control-L,)s
-8335(without)s 0 8099(an)m 3(y)k 414(comment;)s 1433(see)s
-1811(Section)s 2602(1.6)s 2972(for)s 3328(more)s 3892(on)s
-4206(this.\))s 4816(Or)s 9(,)k 5183(to)s 5439(mak)s 2(e)k
-6029(a)s 6212(heading)s 7040(in)s 7300(an)s 7600(Eif)s 6(fel)k
-8209(program,)s 0 7811(do)m 293(this:)s 220 fnt35 480 7360(--@ @Displa)m 6(y @Heading { treepr)k -3(int })k
-240 fnt82 0 6861(\(Eif)m 6(fel)k 658(comments)s 1680(be)s 3(gin)k
-2254(with)s 220 fnt35 2724 6858(--)m 240 fnt82 2909 6861(and)m
-3300(end)s 3692(at)s 3912(the)s 4248(end)s 4640(of)s
-4899(the)s 5234(line.\))s 5828(Other)s 6420(possible)s 7248(uses)s
-7699(for)s 8025(this)s 8408(feature)s 0 6573(include)m 760(inde)s 3(x)k
-1344(entries)s 2031(and)s 2435(mar)s 4(gin)k 3165(notes.)s
-3834(Incredible)s 4858(as)s 5108(it)s 5300(may)s 5766(seem,)s
-6364(you)s 6779(can)s 7168(e)s 6(v)k 3(en)k
-7668(write)s 220 fnt35 480 6072(/*@ @CD @Heading { Function @CP { treepr)m -3(int\(\) } } */)k 240 fnt82
-0 5573(with)m 500(a)s 220 fnt35 684 5570(@CP)m 240 fnt82
-1280 5573(symbol)m 2058(and)s 2481(some)s 3060(C)s 3290(code)s
-3816(inside)s 4462(the)s 4828(Lout)s 5358(code)s 5884(inside)s
-6530(the)s 6896(C)s 7126(code.)s 7760(Y)s 26(ou)k
-8221(probably)s 0 5285(can')m 4(t)k 566(go)s 892(further)s 9(,)k
-1673(ho)s 6(we)k 6(v)k 3(er)k 9(,)k
-2613(at)s 2879(least)s 3409(not)s 3808(in)s 4085(C,)s
-4385(since)s 4966(that)s 5417(w)s 2(ould)k 6105(require)s
-6871(a)s 7070(C)s 7316(comment)s 8299(inside)s 8960(a)s
-0 4997(C)m 212(comment.)s 240 fnt84 0 4253(1.8.)m 471(Embedding)s
-1710(pr)s 4(ogram)k 2666(text)s 3110(within)s 3816(pr)s 4(ogram)k
-4772(comments)s 240 fnt82 480 3776(The)m 902(standard)s 1763(reference)s
-2699(for)s 3030(the)s 3371(Eif)s 6(fel)k 3955(language)s
-4869([1)s 5043(])s 5154(speci\207es)s 6021(that)s 6432(identi\207ers)s
-7431(within)s 8092(comments)s 0 3488(may)m 466(or)s 725(should)s
-1422(be)s 1704(enclosed)s 2599(in)s 2842(`)s 2963(and)s
-3367(')s 3479(so)s 3745(that)s 4163(the)s 3(y)k
-4626(may)s 5092(be)s 5374(noticed)s 6136(and)s 6540(printed)s
-7275(in)s 7518(an)s 7801(italic)s 8330(font:)s 220 fnt35
-480 2987(@ID @Eiff)m 6(el {)k 480 2699(deposit\(amount:)m 11( REAL\) is)k 480 2411( -- deposit )m 13(`amount')k 15( dollars)k
-480 2123(})m 240 fnt82 0 1629(produces)m 240 fnt83 480 1126(deposit)m
-240 fnt82 1175 1124(\()m 240 fnt83 1248 1126(amount)m 240 fnt82
-1971 1124(:)m 240 fnt83 2077 1126(REAL)m 240 fnt82 2648 1124(\))m
-240 fnt84 2776 1123(is)m 240 fnt82 1200 836(--)m 1407(deposit)s
-240 fnt83 2158 838(amount)m 240 fnt82 2941 836(dollars)m 0 333(This)m
-463(has)s 819(been)s 1315(generalized)s 2460(in)s 2690(Lout:)s
-3294(arbitrary)s 4156(te)s 3(xt)k 4557(within)s 5212(an)s
-5481(Eif)s 6(fel)k 6059(comment)s 6995(between)s 7836(`)s
-7943(and)s 8334(')s 8432(will)s 8844(be)s
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 11 13
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Italic
-%%+ font Times-Bold
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-1 LoutMargSet
-grestore
-240 fnt83 0 13843(1.8.)m 454(Embedding)s 1599(pr)s 10(o)k 2(gr)k 3(am)k
-2479(te)s 4(xt)k 2883(within)s 3535(pr)s 10(o)k 2(gr)k 3(am)k
-4415(comments)s 240 fnt84 8839 13840(11)m 240 fnt82 0 13205(treated)m
-707(as)s 957(Eif)s 6(fel)k 1548(te)s 3(xt)k
-1963(and)s 2367(printed)s 3102(accordingly)s 15(.)k 4380(Some)s
-4981(other)s 5532(languages)s 6540(may)s 7006(also)s 7444(of)s 6(fer)k
-7961(this)s 8358(feature:)s 0 12917(see)m 377(the)s 742(\207fth)s
-1214(column)s 2006(of)s 2294(the)s 2659(table)s 3195(at)s
-3444(the)s 3809(start)s 4296(of)s 4584(this)s 4997(chapter)s 13(.)k
-5867(In)s 6140(principle)s 7062(the)s 7427(precise)s 8176(means)s
-8855(of)s 0 12629(getting)m 707(it)s 889(could)s 1469(v)s 6(ary)k
-1932(from)s 2445(language)s 3355(to)s 3584(language,)s 4545(b)s 4(ut)k
-4897(the)s 5234(languages)s 6232(a)s 4(v)k 6(ailable)k
-7130(at)s 7352(the)s 7690(moment)s 8523(either)s 0 12341(do)m
-293(not)s 659(ha)s 4(v)k 3(e)k 1160(it)s
-1352(at)s 1584(all,)s 1929(or)s 2188(else)s 2615(the)s 3(y)k
-3078(use)s 3453(`)s 3574(and)s 3978(')s 4090(lik)s 2(e)k
-4502(Eif)s 6(fel.)k 480 11967(On)m 847(the)s 1213(subject)s
-1967(of)s 2256(Eif)s 6(fel,)k 2917(the)s 3282(Eif)s 6(fel)k
-3891(reference)s 4852([1)s 5026(])s 5161(has)s 5549(some)s
-6128(quite)s 6679(detailed)s 7511(style)s 8036(guidelines,)s 0 11679(and)m
-436(these)s 1016(ha)s 4(v)k 3(e)k 1550(been)s
-2091(closely)s 2855(follo)s 6(wed)k 3790(in)s 4066(the)s
-4446(implementation)s 6036(of)s 6340(the)s 220 fnt35 6720 11676(@Eiff)m 6(el)k
-240 fnt82 7502 11679(symbol.)m 8404(In)s 8693(par)s 8998(-)s
-0 11391(ticular)m 9(,)k 220 fnt35 744 11388(@Eiff)m 6(el)k
-240 fnt82 1531 11391(prints)m 2164(dots)s 2651(lar)s 4(ger)k
-3301(than)s 3808(usual)s 4406(when)s 5019(the)s 3(y)k
-5520(denote)s 6252(feature)s 7007(calls,)s 7589(as)s 7877(the)s
-8263(e)s 3(xample)k 240 fnt83 0 11105(account)m 336 fnt82
-762 11095(.)m 240 fnt83 835 11105(deposit)m 240 fnt82 1530 11103(\(20\))m
-1977(sho)s 6(ws.)k 240 fnt84 0 10314(1.9.)m 471(Reading)s
-1378(and)s 1819(selecting)s 2750(pr)s 4(ogram)k 3706(text)s
-4150(fr)s 4(om)k 4706(separate)s 5625(\207les)s 240 fnt82
-480 9837(W)m 19(e)k 852(ha)s 4(v)k 3(e)k
-1356(said)s 1802(that)s 2223(program)s 3096(te)s 3(xt)k
-3514(within)s 220 fnt35 4186 9834(@CP { ...)m 13( })k 240 fnt82
-5266 9837(and)m 5673(the)s 6024(other)s 6578(symbols)s 7430(is)s
-7643(passed)s 8343(directly)s 0 9549(to)m 220 fnt35 272 9546(prg2lout)m
-240 fnt82 1153 9549(for)m 1525(analysis.)s 2492(Ho)s 6(we)k 6(v)k 3(er)k 9(,)k
-3485(there)s 4052(is)s 4295(an)s 4611(e)s 3(xception.)k
-5736(The)s 6197(program)s 7100(te)s 3(xt)k 7549(may)s
-8048(contain)s 8843(an)s 220 fnt35 0 9258(@Include)m 240 fnt82
-985 9261(or)m 220 fnt35 1248 9258(@SysInclude)m 240 fnt82 2599 9261(command,)m
-3654(which,)s 4349(as)s 4603(for)s 4945(the)s 220 fnt35
-5296 9258(@V)m 17(erbatim)k 240 fnt82 6429 9261(symbol)m 7192(\(Section)s
-8049(??\),)s 8451(causes)s 0 8973(Lout)m 512(to)s 751(tak)s 2(e)k
-1203(the)s 1551(program)s 2421(te)s 3(xt)k 2836(from)s
-3360(a)s 3526(\207le:)s 220 fnt35 480 8472(@Eiff)m 6(el)k
-480 8184({)m 480 7896( @Include { "/usr/staff/jeff/Eiff)m 6(el/hash.e" })k 480 7608(})m 240 fnt82
-0 7114(The)m 421(included)s 1296(\207le)s 1649(is)s 1852(not)s
-2211(e)s 3(xamined)k 3188(for)s 3519(balanced)s 4419(braces)s
-5073(or)s 220 fnt35 5325 7111(@End)m 240 fnt82 5978 7114(or)m
-220 fnt35 6230 7111(@Include)m 240 fnt82 7152 7114(;)m 7257(it)s
-7441(is)s 7644(treated)s 8343(entirely)s 0 6826(v)m 3(erbatim)k
-895(and)s 1288(passed)s 1973(straight)s 2738(on)s 3024(to)s
-220 fnt35 3252 6823(prg2lout)m 240 fnt82 4040 6826(.)m 4193(There)s
-4795(may)s 5250(be)s 5521(se)s 6(v)k 3(eral)k
-220 fnt35 6232 6823(@Include)m 240 fnt82 7203 6826(commands,)m 8336(and)s
-8729(an)s 3(y)k 0 6538(amount)m 778(of)s 1049(program)s
-1919(te)s 3(xt)k 2334(as)s 2584(well,)s 3102(within)s
-220 fnt35 3770 6535(@CP { ...)m 13( })k 240 fnt82 4847 6538(and)m
-5251(the)s 5599(rest.)s 480 6164(When)m 1109(including)s 2066(\207les)s
-2515(in)s 2758(this)s 3153(w)s 2(ay)k 3604(it)s
-3796(often)s 4344(happens)s 5179(that)s 5597(only)s 6077(part)s
-6508(of)s 6778(an)s 7061(actual)s 7686(program)s 8556(\207le)s
-8916(is)s 0 5876(w)m 2(anted)k 753(for)s 1098(display)s 15(.)k
-1945(Rather)s 2649(than)s 3125(placing)s 3888(the)s 4243(w)s 2(anted)k
-4997(part)s 5435(in)s 5685(a)s 5857(separate)s 6702(\207le,)s
-7121(which)s 7770(is)s 7987(error)s 4(-prone)k 0 5588(and)m
-404(tedious)s 1147(when)s 1724(the)s 2073(program)s 2944(is)s
-3154(changing,)s 4140(Unix)s 4675(users)s 5218(can)s 5608(use)s
-5984(the)s 220 fnt35 6332 5585(pipe)m 240 fnt82 6799 5588(option)m
-7469(to)s 7709(pipe)s 8178(the)s 8527(entire)s 0 5300(\207le)m
-369(through)s 1180(an)s 1472(arbitrary)s 2355(sequence)s 3297(of)s
-3577(Unix)s 4119(commands,)s 5272(which)s 5923(may)s 6397(be)s
-6688(used)s 7194(to)s 7441(mak)s 2(e)k 8022(the)s
-8379(w)s 2(anted)k 0 5012(selection)m 906(before)s 1572(the)s
-1920(program)s 2790(te)s 3(xt)k 3205(is)s 3415(passed)s
-4111(to)s 220 fnt35 4350 5009(prg2lout)m 240 fnt82 5138 5012(.)m
-480 4638(F)m 3(or)k 868(e)s 3(xample,)k 1780(suppose)s
-2606(that)s 3022(all)s 3313(your)s 3810(Eif)s 6(fel)k
-4399(routines)s 5218(be)s 3(gin)k 5802(with)s 6282(the)s
-6628(routine)s 7359(name)s 7931(one)s 8331(tab)s 8674(stop)s
-0 4350(from)m 524(the)s 872(left)s 1249(mar)s 4(gin)k
-1979(and)s 2383(end)s 2787(at)s 3019(the)s 3367(\207rst)s
-3798(follo)s 6(wing)k 240 fnt84 4775 4349(end)m 240 fnt82
-5202 4350(indented)m 6084(tw)s 2(o)k 6494(tab)s 6839(stops.)s
-7495(Then)s 220 fnt35 480 3849(@Eiff)m 6(el)k 480 3561( pipe { "sed -n /^.inser)m -8(t/,/^..end/p" })k
-480 3273({)m 480 2985( @Include { "/usr/staff/jeff/Eiff)m 6(el/hash.e" })k 480 2697(})m 240 fnt82
-0 2203(will)m 417(select)s 1010(just)s 1406(the)s 240 fnt83
-1744 2205(insert)m 240 fnt82 2342 2203(routine)m 3066(from)s 3580(the)s
-220 fnt35 3918 2200(hash.e)m 240 fnt82 4620 2203(\207le.)m 5079(Assuming)s
-6094(that)s 6502(your)s 6991(program)s 7852(te)s 3(xt)k
-8257(has)s 8617(been)s 0 1915(laid)m 413(out)s 775(in)s
-1014(a)s 1176(disciplined)s 2279(manner)s 9(,)k 3090(e)s 6(v)k 3(ery)k
-3663(line)s 4073(of)s 4340(the)s 4684(selection)s 5586(will)s
-6008(be)s 3(gin)k 6591(with)s 7069(a)s 7231(tab)s
-7572(character)s 8502(that)s 8916(is)s 0 1627(not)m 366(w)s 2(anted)k
-1113(in)s 1356(this)s 1752(display)s 15(,)k 2535(so)s
-2801(an)s 3084(e)s 6(v)k 3(en)k 3584(better)s
-4187(pipe)s 4655(is)s
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 12 14
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Times-Italic
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-0 LoutMargSet
-grestore
-240 fnt84 0 13840(12)m 240 fnt83 5981 13843(Chapter)m 6831(1.)s
-7105(Computer)s 8128(Pr)s 10(o)k 2(gr)k 3(ams)k
-220 fnt35 480 13207(@Eiff)m 6(el)k 480 12919( pipe { "sed -n /^.inser)m -8(t/,/^..end/p | cut -c2-" })k
-480 12631({)m 480 12343( @Include { "/usr/staff/jeff/Eiff)m 6(el/hash.e" })k 480 12055(})m 240 fnt82
-0 11561(since)m 584(it)s 813(cuts)s 1286(a)s 3(w)k 2(ay)k
-1878(the)s 2263(unw)s 2(anted)k 3287(tab)s 3670(characters.)s
-4838(Unfortunately)s 15(,)k 6308(we)s 6680(can')s 4(t)k
-7251(sho)s 6(w)k 7842(the)s 8227(result)s 8855(of)s
-0 11273(this)m 430(on)s 761(an)s 1078(actual)s 1737(e)s 3(xample,)k
-2685(since)s 3266(that)s 3718(w)s 2(ould)k 4407(pre)s 6(v)k 3(ent)k
-5209(this)s 5639(manual)s 6432(from)s 6990(being)s 7609(formatted)s
-8629(on)s 8960(a)s 0 10985(non-Unix)m 973(system.)s 240 fnt84
-0 10193(1.10.)m 591(Err)s 4(or)k 1243(messages)s 240 fnt82
-480 9716(In)m 739(order)s 1307(to)s 1550(understand)s 2662(the)s
-3013(error)s 3540(messages)s 4498(produced)s 5451(by)s 5749(program)s
-6622(printing,)s 7490(it)s 7686(is)s 7900(necessary)s 8887(to)s
-0 9428(understand)m 1113(that)s 1536(Lout')s 13(s)k 2203(\207rst)s
-2639(step)s 3082(when)s 3663(gi)s 6(v)k 3(en)k
-4248(a)s 4419(program)s 5294(te)s 3(xt)k 5714(is)s
-5929(to)s 6173(pass)s 6641(it)s 6838(to)s 7082(the)s
-7435(separate)s 220 fnt35 8278 9425(prg2lout)m 240 fnt82 0 9140(program)m
-917(for)s 1303(analysis.)s 2285(This)s 2809(separate)s 3695(program)s
-4613(is)s 4871(the)s 5266(source)s 5994(of)s 6313(most)s
-6886(of)s 7205(the)s 7601(error)s 8172(messages)s 0 8852(associated)m
-1040(with)s 1522(program)s 2392(printing.)s 480 8478(The)m 220 fnt35
-907 8475(prg2lout)m 240 fnt82 1753 8478(program)m 2622(is)s 2830(quite)s
-3362(happ)s 2(y)k 3999(to)s 4236(format)s 4931(a)s
-5095(fragment)s 6015(of)s 6285(a)s 6449(computer)s 7411(program:)s
-8385(there)s 8916(is)s 0 8190(no)m 278(need)s 773(to)s
-997(supply)s 1675(a)s 1826(complete)s 2743(routine,)s 3512(or)s
-3756(a)s 3907(complete)s 4824(statement,)s 5831(or)s 6075(an)s 3(y)k
-6457(such)s 6938(thing.)s 7579(Ho)s 6(we)k 6(v)k 3(er)k 9(,)k
-8524(it)s 8700(will)s 0 7902(complain)m 944(if)s 1157(you)s
-1568(supply)s 2258(only)s 2734(a)s 2896(fragment)s 3815(of)s
-4082(one)s 4480(le)s 3(xical)k 5164(unit,)s 5640(such)s
-6132(as)s 6378(a)s 6541(comment)s 7487(or)s 7742(string)s
-8335(without)s 0 7614(its)m 276(terminating)s 1431(delimiter)s 13(.)k
-2444(It)s 2650(will)s 3077(also)s 3515(complain)s 4463(if)s
-4681(there)s 5215(is)s 5426(a)s 5592(character)s 6527(that)s
-6946(cannot)s 7645(be)s 7928(classi\207ed)s 8876(as)s 0 7326(part)m
-432(of)s 705(an)s 990(identi\207er)s 9(,)k 1952(number)s 9(,)k
-2782(etc.)s 3166(according)s 4164(to)s 4405(the)s 4754(rules)s
-5271(of)s 5544(the)s 5894(language)s 6815(as)s 7067(the)s 3(y)k
-7532(ha)s 4(v)k 3(e)k 8035(been)s 8546(gi)s 6(v)k 3(en)k
-0 7038(to)m 220 fnt35 259 7035(prg2lout)m 240 fnt82 1127 7038(by)m
-1442(the)s 1810(implementer)s 13(.)k 3189(Irrespecti)s 6(v)k 3(e)k
-4382(of)s 4673(the)s 5042(language)s 5982(rules,)s 220 fnt35
-6574 7035(prg2lout)m 240 fnt82 7442 7038(al)m 2(w)k 2(ays)k
-8174(interprets)s 0 6750(spaces,)m 731(tabs,)s 1223(ne)s 6(wlines,)k
-2174(and)s 2578(formfeed)s 3511(characters)s 4529(in)s 4772(the)s
-5120(usual)s 5680(w)s 2(ay)k 15(.)k 480 6376(If)m
-738(an)s 1050(error)s 1601(message)s 2496(is)s 2735(generated)s
-3750(by)s 220 fnt35 4073 6373(prg2lout)m 240 fnt82 4861 6376(,)m
-4996(it)s 5217(will)s 5672(contain)s 6461(a)s 6656(line)s
-7098(and)s 7531(column)s 8335(number)s 0 6088(counting)m 891(from)s
-1415(the)s 1763(start)s 2233(of)s 2504(the)s 2852(program)s
-3722(te)s 3(xt)k 4137(in)s 9(v)k 4(olv)k 3(ed.)k
-5123(Lout)s 5635(will)s 6061(precede)s 6860(this)s 7256(error)s
-7779(message)s 8644(with)s 0 5800(a)m 175(\207le)s 545(name,)s
-1179(line)s 1602(number)s 9(,)k 2441(and)s 2854(column)s
-3638(number)s 4438(pointing)s 5298(to)s 5547(the)s 5904(Lout)s
-6425(symbol)s 7194(\()s 220 fnt35 7267 5797(@CP)m 240 fnt82
-7785 5800(,)m 220 fnt35 7901 5797(@Eiff)m 6(el)k 240 fnt82
-8660 5800(etc.\))m 0 5512(whose)m 668(program)s 1538(te)s 3(xt)k
-1953(caused)s 2662(the)s 3010(error)s 3533(message,)s 4450(lik)s 2(e)k
-4862(this:)s 220 fnt35 480 5012(lout \207le "prg_tabs" \(from "prg" line 96, from "all" line 46\):)m 480 4724( 56,23:)m 11( prg2lout 2,1:)k 11( prog)k 2(r)k 2(am te)k 6(xt ended within comment)k
-240 fnt82 0 4225(This)m 476(is)s 686(an)s 970(actual)s
-1595(message)s 2462(produced)s 3411(when)s 3988(formatting)s 5049(this)s
-5445(chapter)s 13(.)k 6300(The)s 6728(program)s 7599(te)s 3(xt)k
-8014(in)s 8258(question)s 0 3937(has)m 369(only)s 848(one)s
-1249(line,)s 1713(containing)s 2775(an)s 3057(incomplete)s 4174(comment,)s
-5169(so)s 5434(when)s 220 fnt35 6009 3934(prg2lout)m 240 fnt82
-6856 3937(tried)m 7350(to)s 7588(start)s 8057(the)s 8403(second)s
-0 3649(line)m 408(and)s 805(found)s 1416(nothing,)s 2248(it)s
-2434(complained)s 3601(as)s 3845(sho)s 6(wn.)k 4622(In)s
-4872(general,)s 5675(then,)s 6188(you)s 6596(ha)s 4(v)k 3(e)k
-7091(to)s 7323(add)s 220 fnt35 7721 3646(prg2lout)m 240 fnt82
-8509 3649(')m 13(s)k 8712(line)s 0 3361(number)m 791(to)s
-1030(Lout')s 13(s)k 1692(line)s 2106(number)s 9(,)k
-2935(and)s 3339(use)s 3714(some)s 4275(initiati)s 6(v)k 3(e,)k
-5221(to)s 5460(\207nd)s 5891(the)s 6239(precise)s 6971(point)s
-7523(of)s 7794(the)s 8142(problem.)s 240 fnt84 0 2569(1.11.)m
-591(Notes)s 1216(on)s 1525(P)s 4(erl)k 2000(and)s
-2441(P)s 4(od)k 240 fnt82 480 2137(The)m 923(Perl)s
-1378(programming)s 2749(language)s 153 fnt82 3609 2226(1)m 240 fnt82
-3744 2137(is)m 3970(quite)s 4520(a)s 4702(dif\207cult)s 5533(one)s
-5951(for)s 6305(the)s 220 fnt35 6668 2134(prg2lout)m 240 fnt82
-7532 2137(program)m 8418(to)s 8673(deal)s 0 1849(with,)m 526(and)s
-924(our)s 1297(boast)s 1855(that)s 2267(programs)s 3215(can)s
-3598(be)s 3873(included)s 4749(with)s 5225(`absolutely)s 6335(no)s
-6621(modi\207cations')s 8029(is)s 8233(not)s 8592(quite)s 0 1561(true)m
-427(for)s 765(Perl.)s 480 1187(Here)m 992(is)s 1194(the)s
-1534(complete)s 2458(list)s 2801(of)s 3064(problem)s 3913(areas.)s
-4559(In)s 4807(most)s 5324(cases)s 5871(their)s 6360(ef)s 6(fect)k
-6948(is)s 7150(to)s 7381(get)s 7725(the)s 8065(formatting)s
-0 899(wrong)m 675(o)s 3(v)k 3(er)k 1164(a)s
-1341(short)s 1889(re)s 3(gion,)k 2615(which)s 3267(is)s
-3488(not)s 3864(perhaps)s 4670(so)s 4946(disastrous;)s 6025(and)s
-6439(it)s 6642(should)s 7349(be)s 7642(easy)s 8131(to)s
-8381(modify)s 1134 0 0 0 240 288 60 0 307 LoutGr2
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-122 fnt82 0 112(1)m 192 fnt82 58 42(My)m
-368(thanks)s 909(to)s 1101(Mark)s 1563(Summer\207eld)s 2598(for)s
-2868(help)s 3241(with)s 3627(Perl)s 3978(and)s 4302(Pod.)s
-
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 13 15
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Italic
-%%+ font Times-Bold
-%%+ font Courier
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-%%IncludeResource: font Courier
-/Courierfnt29 vec2 /Courier LoutRecode
-/fnt29 { /Courierfnt29 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-1 LoutMargSet
-grestore
-240 fnt83 0 13843(1.11.)m 574(Notes)s 1174(on)s 1468(P)s 19(erl)k
-1920(and)s 2346(P)s 19(od)k 240 fnt84 8833 13840(13)m
-240 fnt82 0 13249(your)m 507(Perl)s 955(program)s 1834(without)s
-2634(changing)s 3574(its)s 3859(meaning,)s 4799(to)s 5046(w)s 2(ork)k
-5606(around)s 6338(these)s 6894(problems.)s 7957(After)s 8529(all,)s
-8883(in)s 0 12961(Perl)m 439(there)s 972(is)s 1182(al)s 2(w)k 2(ays)k
-1893(more)s 2440(than)s 2909(one)s 3311(w)s 2(ay)k
-3762(to)s 4001(do)s 4294(it.)s 0 12456(1.)m 240 fnt83
-480 12458(Her)m 8(e-documents)k 240 fnt82 2108 12456(such)m 2604(as)s
-960 12004(<<"EOF")m 960 11716(These lines will be read as though)m 960 11428(enclosed in double quotes)m 960 11140(EOF)m 480 10686(will)m
-893(be)s 1162(handled)s 1964(correctly)s 2853(only)s 3320(if)s
-3523(the)s 3858(string)s 4442(appearing)s 5424(immediately)s 6659(after)s
-7142(the)s 220 fnt29 7476 10694(<<)m 240 fnt82 7787 10686(operator)m
-8629(\(that)s 480 10398(is,)m 748(the)s 1098(string)s 1697(used)s
-2197(to)s 2438(terminate)s 3397(the)s 3747(here-document\))s 5312(is)s
-5524(one)s 5928(of)s 220 fnt29 6201 10406(EOF)m 240 fnt82
-6597 10398(,)m 220 fnt29 6707 10406(EOT)m 240 fnt82 7103 10398(,)m
-220 fnt29 7212 10406(END)m 240 fnt82 7608 10398(,)m 7717(and)s
-8123(the)s 8474(empty)s 480 10110(string,)m 1116(all)s 1393(optionally)s
-2401(enclosed)s 3281(in)s 3508(quotes)s 4168(of)s 4424(an)s 3(y)k
-4805(of)s 5060(the)s 5392(three)s 5910(kinds.)s 6577(If)s
-6791(this)s 7172(condition)s 8117(is)s 8311(not)s 8661(met,)s
-480 9822(then)m 942(the)s 1283(here-document)s 2770(will)s 3189(be)s
-3464(treated)s 4163(as)s 4406(Perl)s 4838(program)s 5701(te)s 3(xt.)k
-6213(If)s 6435(the)s 6776(condition)s 7730(is)s 7933(met,)s
-8391(there)s 8916(is)s 480 9534(still)m 885(another)s 1655(problem:)s
-2610(the)s 220 fnt29 2951 9542(<<)m 240 fnt82 3268 9534(symbol)m
-4020(and)s 4417(e)s 6(v)k 3(erything)k 5476(after)s
-5965(it)s 6150(on)s 6439(the)s 6780(same)s 7320(line)s
-7726(will)s 8145(be)s 8419(treated)s 480 9246(\(incorrectly\))m 1715(as)s
-1958(a)s 2117(string.)s 2819(The)s 3240(w)s 2(orst)k
-3822(consequence)s 5095(of)s 5359(this)s 5748(is)s 5952(that)s
-6363(stack)s 2(ed)k 7129(here-documents)s 8700(will)s 480 8958(not)m
-846(be)s 1128(printed)s 1863(properly)s 15(.)k 0 8455(2.)m
-480(When)s 220 fnt35 1118 8452(prg2lout)m 240 fnt82 1976 8455(is)m
-2196(scanning)s 3110(the)s 3468(program)s 4347(te)s 3(xt)k
-4772(looking)s 5567(for)s 5915(the)s 6273(be)s 3(ginning)k
-7290(of)s 7571(a)s 7747(le)s 3(xical)k 8445(unit,)s
-8934(it)s 480 8167(may)m 939(come)s 1505(upon)s 2034(a)s
-220 fnt35 2192 8164(/)m 240 fnt82 2309 8167(character)m 9(,)k
-3273(and)s 3669(this)s 240 fnt83 4057 8169(initial)m 220 fnt35
-4680 8164(/)m 240 fnt82 4796 8167(\(not)m 5233(subsequent)s 6349(ones)s
-6832(in)s 7067(the)s 7407(same)s 7946(le)s 3(xical)k
-8626(unit\))s 480 7879(it)m 691(\207nds)s 1227(dif\207cult)s 2062(to)s
-2320(interpret,)s 3254(since)s 3820(it)s 4031(may)s 4517(be)s
-4818(the)s 5185(be)s 3(ginning)k 6212(of)s 6502(a)s
-6687(re)s 3(gular)k 7439(e)s 3(xpression,)k 8585(to)s
-8844(be)s 480 7591(formatted)m 1460(lik)s 2(e)k 1865(a)s
-2024(string,)s 2668(or)s 2920(it)s 3105(may)s 3564(be)s
-3839(a)s 3998(complete)s 4923(le)s 3(xical)k 5604(unit)s
-6029(denoting)s 6913(di)s 6(vision.)k 7835(The)s 8256(program)s
-480 7303(chooses)m 1308(the)s 1675(re)s 3(gular)k 2427(e)s 3(xpression)k
-3524(\(or)s 3881(equi)s 6(v)k 6(alently)k 15(,)k
-5162(string\))s 5853(interpretation)s 7216(if)s 7452(the)s 220 fnt35
-7819 7300(/)m 240 fnt82 7962 7303(character)m 8916(is)s 480 7015(immediately)m
-1714(preceded)s 2620(by)s 220 fnt35 2900 7012(q)m 240 fnt82
-3009 7015(,)m 220 fnt35 3101 7012(qq)m 240 fnt82 3332 7015(,)m
-220 fnt35 3424 7012(qx)m 240 fnt82 3654 7015(,)m 220 fnt35
-3747 7012(qw)m 240 fnt82 4025 7015(,)m 220 fnt35 4117 7012(qr)m
-240 fnt82 4312 7015(,)m 220 fnt35 4405 7012(m)m 240 fnt82
-4574 7015(,)m 220 fnt35 4666 7012(s)m 240 fnt82 4769 7015(,)m
-220 fnt35 4861 7012(y)m 240 fnt82 4969 7015(,)m 5062(or)s
-220 fnt35 5306 7012(tr)m 240 fnt82 5440 7015(.)m 5590(It)s
-5780(also)s 6203(chooses)s 6998(the)s 7331(re)s 3(gular)k
-8049(e)s 3(xpression)k 480 6727(interpretation)m 1818(if)s 2029(the)s
-220 fnt35 2371 6724(/)m 240 fnt82 2489 6727(character)m 3417(appears)s
-4192(at)s 4418(the)s 4760(start)s 5225(of)s 5490(a)s
-5650(line,)s 6109(or)s 6362(if)s 6573(it)s 6759(is)s
-6963(immediately)s 8205(preceded)s 480 6439(by)m 787(zero,)s 1319(one,)s
-1786(or)s 2059(tw)s 2(o)k 2482(space)s 3083(or)s
-3356(tab)s 3715(characters,)s 4802(which)s 5458(are)s 5819(themselv)s 3(es)k
-6943(immediately)s 8205(preceded)s 480 6151(by)m 784(a)s 961(complete)s
-1903(le)s 3(xical)k 2602(unit)s 3044(which)s 3697(is)s
-3918(one)s 4330(of)s 220 fnt35 4612 6148(\()m 240 fnt82
-4678 6151(,)m 220 fnt35 4795 6148(=)m 240 fnt82 4915 6151(,)m
-220 fnt35 5033 6148(=~)m 240 fnt82 5276 6151(,)m 220 fnt35
-5393 6148(!~)m 240 fnt82 5569 6151(,)m 220 fnt35 5687 6148(split)m
-240 fnt82 6072 6151(,)m 220 fnt35 6190 6148(if)m 240 fnt82
-6296 6151(,)m 220 fnt35 6413 6148(and)m 240 fnt82 6767 6151(,)m
-220 fnt35 6885 6148(&&)m 240 fnt82 7173 6151(,)m 220 fnt35
-7290 6148(or)m 240 fnt82 7485 6151(,)m 220 fnt35 7603 6148(||)m
-240 fnt82 7697 6151(,)m 220 fnt35 7814 6148(not)m 240 fnt82
-8115 6151(,)m 220 fnt35 8233 6148(!)m 240 fnt82 8274 6151(,)m
-220 fnt35 8392 6148(unless)m 240 fnt82 9019 6151(,)m 220 fnt35
-480 5860(f)m 6(or)k 240 fnt82 730 5863(,)m 220 fnt35
-849 5860(f)m 6(oreach)k 240 fnt82 1561 5863(,)m 1681(and)s
-220 fnt35 2098 5860(while)m 240 fnt82 2588 5863(.)m 2765(Otherwise)s
-3816(it)s 4021(chooses)s 4843(the)s 5204(di)s 6(vision)k
-6039(interpretation.)s 7502(In)s 7771(the)s 8132(rare)s 8571(cases)s
-480 5575(where)m 1120(this)s 1517(rule)s 1945(f)s 2(ails,)k
-2460(you)s 2876(can)s 3266(force)s 220 fnt35 3812 5572(prg2lout)m
-240 fnt82 4661 5575(to)m 4901(choose)s 5622(the)s 5971(re)s 3(gular)k
-6705(e)s 3(xpression)k 7783(interpretation)s 480 5287(by)m 777(placing)s
-1537(an)s 220 fnt35 1823 5284(m)m 240 fnt82 2055 5287(in)m
-2301(front)s 2829(of)s 3103(the)s 3454(initial)s 220 fnt35
-4068 5284(/)m 240 fnt82 4195 5287(\(this)m 4673(does)s 5167(not)s
-5536(change)s 6273(the)s 6624(meaning)s 7504(of)s 7778(the)s
-8130(program\),)s 480 4999(and)m 910(you)s 1352(can)s 1768(force)s
-2341(the)s 2716(di)s 6(vision)k 3565(interpretation)s 4935(by)s
-5256(placing)s 6040(at)s 6299(least)s 6823(three)s 7383(spaces)s
-8085(before)s 8778(the)s 220 fnt35 480 4708(/)m 240 fnt82
-604 4711(character)m 13(.)k 0 4253(3.)m 480(Substitution)s 1701(e)s 3(xpressions,)k
-2930(e)s 6(v)k 3(en)k 3439(such)s 3943(le)s 3(xically)k
-4825(comple)s 3(x)k 5710(ones)s 6208(as)s 220 fnt29
-6467 4261(s{{@D}}[{@I}])m 240 fnt82 8183 4253(,)m 8299(are)s 8655(han)s
-8998(-)s 480 3965(dled)m 942(correctly)s 15(.)k 1931(Ho)s 6(we)k 6(v)k 3(er)k 9(,)k
-220 fnt35 2883 3962(prg2lout)m 240 fnt82 3723 3965(does)m 4205(not)s
-4563(understand)s 5663(that)s 6073(the)s 6413(letters)s 220 fnt35
-7038 3962(gimosx)m 240 fnt82 7783 3965(in)m 8018(an)s 3(y)k
-8406(combi)s 8998(-)s 480 3677(nation)m 1135(appearing)s 2131(immediately)s
-3378(after)s 3874(a)s 4040(substitution)s 5212(e)s 3(xpression)k
-6289(are)s 6636(part)s 7066(of)s 7337(it;)s 7581(it)s
-7772(treats)s 8339(them)s 8876(as)s 480 3389(the)m 825(start)s
-1291(of)s 1558(a)s 1721(ne)s 6(w)k 2164(le)s 3(xical)k
-2848(unit.)s 3380(This)s 3853(ne)s 6(w)k 4296(unit)s
-4724(will)s 5147(usually)s 5888(be)s 6166(tak)s 2(en)k
-6735(to)s 6971(be)s 7249(an)s 7528(identi\207er)s 9(,)k
-8484(which)s 480 3101(is)m 690(harmless)s 1590(enough,)s 2403(b)s 4(ut)k
-2765(occasionally)s 4014(it)s 4206(is)s 4416(tak)s 2(en)k
-4989(to)s 5228(be)s 5510(something)s 6560(else.)s 7095(F)s 3(or)k
-7484(e)s 3(xample,)k 8398(in)s 220 fnt35 960 2600(s///s;)m
-240 fnt82 480 2117(the)m 838(trailing)s 220 fnt35 1591 2114(s)m
-240 fnt82 1765 2117(will)m 2201(be)s 2494(mistak)s 2(en)k
-3423(for)s 3771(the)s 4130(start)s 4611(of)s 4892(a)s
-5069(ne)s 6(w)k 5527(substitution)s 6710(e)s 3(xpression,)k
-7848(with)s 220 fnt35 8341 2114(;)m 240 fnt82 8454 2117(delim)m
-8998(-)s 480 1829(iting)m 976(the)s 1329(\207rst)s 1766(pattern.)s
-2598(This)s 3080(particular)s 4059(e)s 3(xample)k 4927(can)s
-5322(be)s 5609(\207x)s 3(ed)k 6149(by)s 6448(inserting)s
-7342(a)s 7514(space)s 8106(before)s 8778(the)s 480 1541(semicolon.)m
-0 1088(Further)m 763(w)s 2(ork)k 1314(may)s 1780(eliminate)s
-2724(some)s 3285(of)s 3556(these)s 4103(problems.)s 480 714(The)m
-953(Pod)s 1429(language)s 2394(is)s 2650(used)s 3192(by)s
-3531(Perl)s 4015(programmers)s 5386(for)s 5769(creating)s 6636(documentation,)s
-8210(and)s 8660(may)s 0 426(be)m 313(found)s 961(within)s
-1660(Perl)s 2131(programs)s 3116(or)s 3406(standing)s 4301(alone.)s
-5015(Lout)s 5558(supports)s 6451(both)s 6965(arrangements)s 8335(without)s
-0 138(an)m 3(y)k 418(special)s 1157(action)s 1819(by)s
-2134(the)s 2503(user)s 13(.)k 3073(At)s 3393(the)s
-3762(be)s 3(ginning)k 4792(of)s 5084(the)s 220 fnt35
-5453 135(per)m -3(l)k 240 fnt82 5888 138(setup)m 6467(line,)s
-6953(the)s 7322(follo)s 6(wing)k 8320(line)s 8756(has)s
-
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 14 16
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Times-Italic
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-0 LoutMargSet
-grestore
-240 fnt84 0 13840(14)m 240 fnt83 5981 13843(Chapter)m 6831(1.)s
-7105(Computer)s 8128(Pr)s 10(o)k 2(gr)k 3(ams)k
-240 fnt82 0 13205(been)m 509(placed:)s 220 fnt35 480 12704(@SysInclude { pod })m
-240 fnt82 0 12206(Thus,)m 576(asking)s 1244(for)s 1571(Perl)s
-2000(al)s 2(w)k 2(ays)k 2700(gi)s 6(v)k 3(es)k
-3237(you)s 3641(Pod)s 4062(as)s 4301(well.)s 4866(If)s
-5085(you)s 5490(are)s 5826(using)s 6388(your)s 6876(o)s 6(wn)k
-7330(setup)s 7877(\207les)s 8316(for)s 8643(both)s 0 11918(languages,)m
-1068(it)s 1265(is)s 1480(probably)s 2390(better)s 2998(to)s
-3242(break)s 3839(this)s 4240(connection)s 5352(by)s 5651(deleting)s
-6479(this)s 6880(line)s 7299(from)s 7828(your)s 8332(cop)s 2(y)k
-8855(of)s 0 11630(the)m 220 fnt35 348 11627(per)m -3(l)k
-240 fnt82 762 11630(setup)m 1320(\207le)s 1681(and)s 2085(placing)s
-220 fnt35 480 11129(@Include { m)m 3(ypod })k 480 10841(@Include { m)m 3(yper)k -3(l })k
-240 fnt82 0 10343(at)m 232(the)s 580(start)s 1050(of)s
-1321(your)s 1820(document)s 2824(in)s 3067(the)s 3415(usual)s
-3975(w)s 2(ay)k 15(.)k 480 9969(Because)m 1341(Pod)s
-1781(is)s 2000(a)s 2174(documentation)s 3662(language)s 4591(rather)s
-5215(than)s 5693(a)s 5868(programming)s 7231(language,)s 8211(the)s
-8568(setup)s 0 9681(\207le)m 363(options)s 1121(listed)s 1699(in)s
-1944(Section)s 2720(1.4)s 3077(do)s 3372(not)s 3740(really)s
-4340(apply)s 15(.)k 5023(So)s 5331(for)s 5672(Pod)s
-6105(only)s 6587(these)s 7137(ha)s 4(v)k 3(e)k
-7640(been)s 8152(discarded)s 0 9393(and)m 435(replaced)s 1333(by)s
-1658(a)s 1855(completely)s 3002(dif)s 6(ferent)k 3908(set)s
-4264(of)s 4566(options,)s 5409(controlling)s 6542(such)s 7069(things)s
-7736(as)s 8017(the)s 8396(size)s 8855(of)s 0 9105(headings)m
-902(and)s 1306(the)s 1654(g)s 1(aps)k 2143(between)s
-2997(list)s 3348(items,)s 3972(which)s 4614(you)s 5029(can)s
-5418(\207nd)s 5849(documented)s 7077(in)s 7320(the)s 220 fnt35
-7668 9102(pod)m 240 fnt82 8082 9105(setup)m 8640(\207le.)s 480 8731(If)m
-710(you)s 1126(ask)s 1506(for)s 1845(line)s 2259(numbers)s
-3135(on)s 3432(a)s 3599(Pod)s 4030(program,)s 4948(or)s
-5207(on)s 5505(a)s 5671(Perl)s 6111(program)s 6981(that)s
-7400(contains)s 8248(Pod,)s 8729(an)s 3(y)k 0 8443(te)m 3(xt)k
-432(blocks)s 1126(in)s 1387(the)s 1753(Pod)s 2202(that)s
-2638(w)s 2(ould)k 3311(otherwise)s 4313(ha)s 4(v)k 3(e)k
-4832(appeared)s 5771(as)s 6039(\207lled)s 6606(paragraphs)s 7724(will)s
-8168(come)s 8760(out)s 0 8155(with)m 484(the)s 834(line)s
-1250(breaks)s 1927(in)s 2172(the)s 2522(source)s 3204(respected,)s
-4215(and)s 4621(lines)s 5125(numbered)s 6142(accordingly)s 15(.)k
-7422(Because)s 220 fnt35 8278 8152(prg2lout)m 240 fnt82 0 7867(attaches)m
-814(line)s 1222(numbers)s 2090(before)s 2750(Lout)s 3255(breaks)s
-3924(paragraphs,)s 5074(it)s 5259(is)s 5463(not)s 5822(possible)s
-6656(to)s 6889(numnber)s 7793(the)s 8135(lines)s 8630(after)s
-0 7579(paragraph)m 1013(breaking.)s 480 7205(Owing)m 1185(to)s 1423(problems)s
-2363(behind)s 3072(the)s 3419(scenes,)s 4150(if)s 4366(a)s
-4531(Pod)s 4961(inclusion)s 5894(in)s 6137(a)s 6302(Perl)s
-6740(program)s 7609(has)s 7978(unbalanced)s 0 6917(braces,)m 220 fnt35
-714 6914(prg2lout)m 240 fnt82 1559 6917(is)m 1766(forced)s 2431(to)s
-2667(insert)s 3254(braces)s 3912(into)s 4334(the)s 4678(Pod)s
-5106(te)s 3(xt)k 5518(to)s 5754(mak)s 2(e)k
-6323(them)s 6858(balance.)s 7749(It)s 7951(will)s 8374(insert)s
-8960(a)s 0 6629(left)m 377(brace)s 950(directly)s 1734(before)s
-2400(an)s 3(y)k 2798(unbalanced)s 3946(right)s 4458(brace,)s
-5082(and)s 5487(it)s 5679(will)s 6106(insert)s 6696(right)s
-7208(braces)s 7869(at)s 8102(the)s 8450(end)s 8855(of)s
-0 6341(the)m 347(Pod)s 777(inclusion)s 1710(to)s 1948(balance)s
-2733(an)s 3(y)k 3129(preceding)s 4124(unbalanced)s 5271(left)s
-5646(braces.)s 6419(It)s 6623(will)s 7048(tell)s 7406(you)s
-7820(if)s 8036(it)s 8227(has)s 8596(to)s 8833(do)s
-0 6053(this.)m 509(This)s 985(problem)s 1842(does)s 2332(not)s
-2698(af\210ict)s 3314(Pod)s 3745(when)s 4321(used)s 4818(as)s
-5068(a)s 5234(separate)s 6072(language.)s
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 15 17
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Times-Italic
-/pgsave save def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-1 LoutMargSet
-grestore
-480 fnt84 0 12955(Refer)m 8(ences)k 240 fnt82 0 12358([1])m
-480(Bertrand)s 1374(Me)s 3(yer)k 13(.)k 240 fnt83
-2146 12360(Eif)m 4(fel:)k 2840(The)s 3252(Langua)s 2(g)k 2(e)k
-240 fnt82 4200 12358(.)m 4364(Prentice-Hall)s 5631(,)s 5738(1992)s
-6212(.)s 192 fnt84 4439 1(15)m
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 16 18
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Helvetica
-/pgsave save def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 288 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-9066 14006 0 14006 240 288 60 1417 -15423 LoutGr2
-0 LoutMargSet
-grestore
-480 fnt84 0 12962(Index)m 240 fnt82 0 12367(Blue)m 508(program)s
-1378(printing)s 2135(,)s 2242(1)s 0 12079(C)m 212(and)s
-616(C++)s 1099(program)s 1969(printing)s 2726(,)s 2833(1)s
-220 fnt35 0 11788(@CPSetup)m 240 fnt82 1099 11791(,)m 1206(6)s
-0 11503(Eif)m 6(fel)k 591(program)s 1461(printing)s 2218(,)s
-2325(1)s 0 11215(Perl)m 439(program)s 1309(printing)s 2066(,)s
-2173(1)s 0 10927(Pod)m 431(\(for)s 848(Perl\))s 1360(printing)s
-2117(,)s 2224(1)s 220 fnt35 0 10636(prg2lout)m 240 fnt82
-848 10639(\207lter)m 1358(program)s 2175(,)s 2282(1)s 0 10351(tab)m
-345(characters)s 1363(in)s 1606(programs)s 2507(,)s 2614(8)s
-192 fnt84 4439 2(16)m
-grestore
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Trailer
-%%DocumentNeededResources: font Courier
-%%+ font Helvetica
-%%+ font Symbol
-%%+ font Times-Roman
-%%+ font Times-Italic
-%%+ font Times-Bold
-%%+ font Times-Italic
-%%DocumentSuppliedResources: procset LoutStartUp
-%%+ procset LoutTabPrependGraphic
-%%+ procset LoutTblPrependGraphic
-%%+ procset LoutFigPrependGraphic
-%%+ procset LoutGraphPrependGraphic
-%%+ procset LoutFigPrependGraphic
-%%+ procset LoutBasicSetup
-%%+ encoding vec2
-%%Pages: 18
-%%EOF
diff --git a/externs.h b/externs.h
index 382becc..3552e7a 100644
--- a/externs.h
+++ b/externs.h
@@ -1,6 +1,6 @@
/*@externs.h:External Declarations:Directories and file conventions@**********/
/* */
-/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.22) */
+/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.23) */
/* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */
/* */
/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */
@@ -95,7 +95,7 @@ extern nl_catd MsgCat;
/* */
/*****************************************************************************/
-#define LOUT_VERSION AsciiToFull("Basser Lout Version 3.22 (June 2000)")
+#define LOUT_VERSION AsciiToFull("Basser Lout Version 3.23 (June 2000)")
#define CROSS_DB AsciiToFull("lout")
#define SOURCE_SUFFIX AsciiToFull(".lt")
#define INDEX_SUFFIX AsciiToFull(".li")
@@ -1009,6 +1009,7 @@ typedef union
/* 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 */
/* */
/* PAGE_LABEL - a @PageLabel object */
/* */
@@ -1125,6 +1126,13 @@ typedef union
/* children The objects on the mark */
/* parents The parents of the children (one-to-one) */
/* */
+/* FIXED_COL_THR (FIXED_ROW_THR) - object representing one object that used */
+/* to be on a thread but has now been fixed and removed from the thread */
+/* */
+/* SIZED The horizontal (vertical) size only */
+/* first child The object that has been fixed */
+/* parent The sole parent of this object */
+/* */
/* ACAT - a paragraph (sequence of objects separated by & or white space) */
/* */
/* SIZED The size of the object */
@@ -1223,6 +1231,13 @@ typedef union
/* save_mark used temporarily by FixAndPrintObject */
/* children The two parameters of this symbol */
/* */
+/* LINK_SOURCE, LINK_DEST - @LinkSource, @LinkDest symbols */
+/* */
+/* TOKEN While still being parsed */
+/* SIZED The size of the object */
+/* save_mark used temporarily by FixAndPrintObject */
+/* children The two parameters of this symbol */
+/* */
/* CASE - @Case symbol */
/* */
/* TOKEN While still being parsed */
@@ -1514,6 +1529,7 @@ typedef union rec
union rec *olimiter;
union rec *oenclose_obj;
union rec *oheaders;
+ union rec *odead_headers;
int oopt_comps_permitted;
} os2a;
@@ -1730,6 +1746,7 @@ typedef union rec
#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 opt_comps_permitted(x) (x)->os2a.oopt_comps_permitted
#define number(x) (x)->os4.onumber
@@ -1886,8 +1903,8 @@ typedef struct back_end_rec {
void (*PrintAfterLastPage)(void);
void (*PrintWord)(OBJECT x, int hpos, int vpos);
void (*PrintPlainGraphic)(OBJECT x, FULL_LENGTH xmk,FULL_LENGTH ymk,OBJECT z);
- void (*PrintUnderline)(FONT_NUM fnum, FULL_LENGTH xstart, FULL_LENGTH xstop,
- FULL_LENGTH ymk);
+ void (*PrintUnderline)(FONT_NUM fnum, COLOUR_NUM col, 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);
@@ -1897,6 +1914,11 @@ typedef struct back_end_rec {
void (*DefineGraphicNames)(OBJECT x);
void (*SaveTranslateDefineSave)(OBJECT x,FULL_LENGTH xdist,FULL_LENGTH ydist);
void (*PrintGraphicInclude)(OBJECT x,FULL_LENGTH colmark,FULL_LENGTH rowmark);
+ void (*LinkSource)(OBJECT name, FULL_LENGTH llx, FULL_LENGTH lly,
+ FULL_LENGTH urx, FULL_LENGTH ury);
+ void (*LinkDest)(OBJECT name, FULL_LENGTH llx, FULL_LENGTH lly,
+ FULL_LENGTH urx, FULL_LENGTH ury);
+ void (*LinkCheck)();
} *BACK_END;
@@ -1931,142 +1953,146 @@ typedef struct back_end_rec {
#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 TSPACE 98 /* t a space token, parser only */
-#define TJUXTA 99 /* t a juxta token, parser only */
-#define LBR 100 /* t s left brace token */
-#define RBR 101 /* t s right brace token */
-#define BEGIN 102 /* t s @Begin token */
-#define END 103 /* t s @End token */
-#define USE 104 /* t s @Use */
-#define NOT_REVEALED 105 /* t s @NotRevealed */
-#define GSTUB_NONE 106 /* t a galley stub, no rpar */
-#define GSTUB_INT 107 /* t galley stub internal rpar */
-#define GSTUB_EXT 108 /* t galley stub external rpar */
-#define UNEXPECTED_EOF 109 /* t unexpected end of file */
-#define INCLUDE 110 /* s @Include */
-#define SYS_INCLUDE 111 /* s @SysInclude */
-#define PREPEND 112 /* s @Prepend */
-#define SYS_PREPEND 113 /* s @SysPrepend */
-#define DATABASE 114 /* s @Database */
-#define SYS_DATABASE 115 /* s @SysDatabase */
-/* #define START 116 */ /* s \Start */
-#define DEAD 117 /* i a dead galley */
-#define UNATTACHED 118 /* i an inner, unsized galley */
-#define RECEPTIVE 119 /* i a receptive object index */
-#define RECEIVING 120 /* i a receiving object index */
-#define RECURSIVE 121 /* i a recursive definite obj. */
-#define PRECEDES 122 /* i an ordering constraint */
-#define FOLLOWS 123 /* i other end of ordering c. */
-#define CROSS_LIT 124 /* i literal word cross-ref */
-#define CROSS_FOLL 125 /* i following type cross-ref */
-#define CROSS_FOLL_OR_PREC 126 /* i follorprec type cross-ref */
-#define GALL_FOLL 127 /* i galley with &&following */
-#define GALL_FOLL_OR_PREC 128 /* i galley with &&following */
-#define CROSS_TARG 129 /* i value of cross-ref */
-#define GALL_TARG 130 /* i target of these galleys */
-#define GALL_PREC 131 /* i galley with &&preceding */
-#define CROSS_PREC 132 /* i preceding type cross-ref */
-#define PAGE_LABEL_IND 133 /* i index of PAGE_LABEL */
-#define SCALE_IND 134 /* i index of auto SCALE */
-#define COVER_IND 135 /* i index of HCOVER or VCOVER */
-#define EXPAND_IND 136 /* i index of HEXPAND or VEXPD */
-#define THREAD 137 /* a sequence of threads */
-#define CROSS_SYM 138 /* cross-ref info */
-#define CR_ROOT 139 /* RootCross */
-#define MACRO 140 /* a macro symbol */
-#define LOCAL 141 /* a local symbol */
-#define LPAR 142 /* a left parameter */
-#define NPAR 143 /* a named parameter */
-#define RPAR 144 /* a right parameter */
-#define EXT_GALL 145 /* an external galley */
-#define CR_LIST 146 /* a list of cross references */
-#define SCOPE_SNAPSHOT 147 /* a scope snapshot */
-#define DISPOSED 148 /* a disposed record */
+#define FIXED_ROW_THR 17 /* o a fixed row thread */
+#define FIXED_COL_THR 18 /* o a fixed column thread */
+#define ACAT 19 /* to s a sequence of &-ed objs */
+#define HCAT 20 /* to s a sequence of |-ed objs */
+#define VCAT 21 /* to s a sequence of /-ed objs */
+#define BEGIN_HEADER 22 /* to s @BeginHeaderComponent */
+#define END_HEADER 23 /* to s @EndHeaderComponent */
+#define SET_HEADER 24 /* to s @SetHeaderComponent */
+#define CLEAR_HEADER 25 /* to s @ClearHeaderComponent */
+#define ONE_COL 26 /* to s @OneCol */
+#define ONE_ROW 27 /* to s @OneRow */
+#define WIDE 28 /* to s @Wide */
+#define HIGH 29 /* to s @High */
+#define HSHIFT 30 /* to s @HShift */
+#define VSHIFT 31 /* to s @VShift */
+#define HSCALE 32 /* to s @HScale */
+#define VSCALE 33 /* to s @VScale */
+#define HCOVER 34 /* to s @HCover */
+#define VCOVER 35 /* to s @VCover */
+#define SCALE 36 /* to s @Scale */
+#define KERN_SHRINK 37 /* to s @KernShrink */
+#define HCONTRACT 38 /* to s @HContract */
+#define VCONTRACT 39 /* to s @VContract */
+#define HLIMITED 40 /* to s @HLimited */
+#define VLIMITED 41 /* to s @VLimited */
+#define HEXPAND 42 /* to s @HExpand */
+#define VEXPAND 43 /* to s @VExpand */
+#define START_HSPAN 44 /* to s @StartHSpan */
+#define START_VSPAN 45 /* to s @StartVSpan */
+#define START_HVSPAN 46 /* to s @StartHVSpan */
+#define HSPAN 47 /* to s @HSpan */
+#define VSPAN 48 /* to s @VSpan */
+#define PADJUST 49 /* to s @PAdjust */
+#define HADJUST 50 /* to s @HAdjust */
+#define VADJUST 51 /* to s @VAdjust */
+#define ROTATE 52 /* to s @Rotate */
+#define BACKGROUND 53 /* to s @Background */
+#define CASE 54 /* to s @Case */
+#define VERBATIM 55 /* to s @Verbatim */
+#define RAW_VERBATIM 56 /* to s @RawVerbatim */
+#define YIELD 57 /* to s @Yield */
+#define BACKEND 58 /* to s @BackEnd */
+#define FILTERED 59 /* to s filtered object (no name) */
+#define XCHAR 60 /* to s @Char */
+#define FONT 61 /* to s @Font */
+#define SPACE 62 /* to s @Space */
+#define YUNIT 63 /* to s @YUnit */
+#define ZUNIT 64 /* to s @ZUnit */
+#define BREAK 65 /* to s @Break */
+#define UNDERLINE 66 /* to s @Underline */
+#define COLOUR 67 /* to s @SetColour and @SetColor */
+#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 TSPACE 102 /* t a space token, parser only */
+#define TJUXTA 103 /* t a juxta token, parser only */
+#define LBR 104 /* t s left brace token */
+#define RBR 105 /* t s right brace token */
+#define BEGIN 106 /* t s @Begin token */
+#define END 107 /* t s @End token */
+#define USE 108 /* t s @Use */
+#define NOT_REVEALED 109 /* t s @NotRevealed */
+#define GSTUB_NONE 110 /* t a galley stub, no rpar */
+#define GSTUB_INT 111 /* t galley stub internal rpar */
+#define GSTUB_EXT 112 /* t galley stub external rpar */
+#define UNEXPECTED_EOF 113 /* t unexpected end of file */
+#define INCLUDE 114 /* s @Include */
+#define SYS_INCLUDE 115 /* s @SysInclude */
+#define PREPEND 116 /* s @Prepend */
+#define SYS_PREPEND 117 /* s @SysPrepend */
+#define DATABASE 118 /* s @Database */
+#define SYS_DATABASE 119 /* s @SysDatabase */
+/* #define START 120 */ /* s \Start */
+#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 is_indefinite(x) ((x) >= CLOSURE && (x) <= HEAD)
#define is_header(x) ((x) >= BEGIN_HEADER && (x) <= CLEAR_HEADER)
-#define is_definite(x) ((x) >= SPLIT && (x) <= GRAPHIC)
+#define is_definite(x) ((x) >= SPLIT && (x) <= LINK_DEST)
#define is_par(x) ((x) >= LPAR && (x) <= RPAR)
#define is_index(x) ((x) >= DEAD && (x) <= EXPAND_IND)
#define is_type(x) ((x) >= LINK && (x) < DISPOSED)
@@ -2128,9 +2154,9 @@ typedef struct back_end_rec {
#define SMALL_CAPS_ON 1 /* small capitals */
/* sides of a mark */
-#define BACK 149 /* means lies to left of mark */
-#define ON 150 /* means lies on mark */
-#define FWD 151 /* means lies to right of 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 */
@@ -2138,15 +2164,15 @@ typedef struct back_end_rec {
#define FINALSIZE 2 /* thread object size is now final */
/* constraint statuses */
-#define PROMOTE 152 /* this component may be promoted */
-#define CLOSE 153 /* must close dest before promoting */
-#define BLOCK 154 /* cannot promote this component */
-#define CLEAR 155 /* this constraint is now satisfied */
+#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 156 /* absolute, e.g. 3p */
-#define GAP_INC 157 /* increment, e.g. +3p */
-#define GAP_DEC 158 /* decrement, e.g. -3p */
+#define GAP_ABS 160 /* absolute, e.g. 3p */
+#define GAP_INC 161 /* increment, e.g. +3p */
+#define GAP_DEC 162 /* decrement, e.g. -3p */
/* file types */
#define SOURCE_FILE 0 /* input file from command line */
@@ -2326,6 +2352,8 @@ typedef struct back_end_rec {
#define KW_INCGRAPHIC AsciiToFull("@IncludeGraphic")
#define KW_SINCGRAPHIC AsciiToFull("@SysIncludeGraphic")
#define KW_GRAPHIC AsciiToFull("@Graphic")
+#define KW_LINK_SOURCE AsciiToFull("@LinkSource")
+#define KW_LINK_DEST AsciiToFull("@LinkDest")
#define KW_PLAINGRAPHIC AsciiToFull("@PlainGraphic")
#define KW_VERBATIM AsciiToFull("@Verbatim")
#define KW_RAWVERBATIM AsciiToFull("@RawVerbatim")
@@ -2952,6 +2980,7 @@ extern OBJECT Parse(OBJECT *token, OBJECT encl, BOOLEAN defs_allowed,
/***** z07.c Object Service **************************************/
extern BOOLEAN SplitIsDefinite(OBJECT x);
extern int DisposeObject(OBJECT x);
+extern void DisposeSplitObject(OBJECT x);
extern OBJECT MakeWord(unsigned typ, FULL_CHAR *str, FILE_POS *pos);
extern OBJECT MakeWordTwo(unsigned typ, FULL_CHAR *str1, FULL_CHAR *str2,
FILE_POS *pos);
@@ -3068,7 +3097,7 @@ extern void SizeGalley(OBJECT hd, OBJECT env, BOOLEAN rows,
extern void Interpose(OBJECT z, int typ, OBJECT x, OBJECT y);
extern void FlushInners(OBJECT inners, OBJECT hd);
extern void ExpandRecursives(OBJECT recs);
-extern void HandleHeader(OBJECT hd, OBJECT link, OBJECT header);
+extern void HandleHeader(OBJECT hd, OBJECT header);
extern void Promote(OBJECT hd, OBJECT stop_link, OBJECT dest_index,
BOOLEAN join_after);
extern void KillGalley(OBJECT hd, BOOLEAN optimize);
@@ -3078,8 +3107,9 @@ extern void SetTarget(OBJECT hd);
extern int CheckComponentOrder(OBJECT preceder, OBJECT follower);
/***** z23.c Galley Printer **************************************/
-extern void FixAndPrintObject(OBJECT x, FULL_LENGTH xmk, FULL_LENGTH xb,
- FULL_LENGTH xf, int dim, BOOLEAN suppress, FULL_LENGTH pg,int count);
+extern 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);
/***** z24.c Print Service **************************************/
extern char *EightBitToPrintForm[];
diff --git a/include/book b/include/book
index a41d539..89177be 100644
--- a/include/book
+++ b/include/book
@@ -59,6 +59,7 @@
# @ListRightIndent { 0s } # right indent of list items
# @ListLabelWidth { 2.00f @OrIfPlain 5s } # width allowed for list tags
# @NumberSeparator { . } # separates nums like 2.3.7
+ # @CrossLinkFormat { @Body } # format of cross links
}
diff --git a/include/bookf b/include/bookf
index 4b10ce3..f555e1f 100644
--- a/include/bookf
+++ b/include/bookf
@@ -545,7 +545,7 @@ def @BookSetup
def @BookIntro force into { @IntroColPlace&&preceding }
named @Optimize { @OptimizePages }
{
- @PageMark @Tag
+ @NoLinkPageMark @Tag
// @Before
//1.1b @TitlePageFont @Font @On
//1.1b @After
@@ -605,7 +605,7 @@ def @BookSetup
def @BookCombined force into { @ColPlace&&preceding }
named @Optimize { @OptimizePages }
{
- @PageMark @Tag
+ @NoLinkPageMark @Tag
// @Before
//1.1b @TitlePageFont @Font @On
//1.1b @After
diff --git a/include/bsf b/include/bsf
index 726058f..1440b82 100644
--- a/include/bsf
+++ b/include/bsf
@@ -36,6 +36,58 @@ def @OrIfPlain
}
}
+ ###########################################################################
+ # #
+ # @Colour, @Color #
+ # #
+ ###########################################################################
+
+ def @ColourCommand right col
+ {
+ def @ColourCoords
+ {
+ col @Case {
+ 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 }
+ black @Yield { 0.0 0.0 0.0 }
+ white @Yield { 1.0 1.0 1.0 }
+ }
+ }
+
+ col @Case {
+ nochange @Yield { nochange }
+ else @Yield { @BackEnd @Case {
+ PostScript @Yield { @ColourCoords setrgbcolor }
+ PDF @Yield { @ColourCoords rg @ColourCoords RG }
+ PlainText @Yield ""
+ } }
+ }
+ }
+
+ def @Colour @Color left col right y { {@ColourCommand col} @SetColour y }
+
export i c p m s v f
def @LengthUnits
{
@@ -124,9 +176,9 @@ export
@Date @Time @DateTimeFormat @DropCapTwo @DropCapThree @Centre @Right
@NoDotSep @NoDotJoin @Join @Sep @DotSep @DotJoin @DashJoin @NumSep
- @OverStrike @Sup @Sub @Colour @FullWidthRule @LocalWidthRule
+ @OverStrike @Sup @Sub @FullWidthRule @LocalWidthRule
@Box @CurveBox @ShadowBox @BoundaryMarks @NumberMarker @NumberOf
- @PageMarker @PageMark @PageOf
+ @PageMarker @PageMark @NoLinkPageMark @PageOf @CrossLink
@BeginDisplayCounter
@@ -271,6 +323,9 @@ def @BasicSetup
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
@Begin
###########################################################################
@@ -701,56 +756,10 @@ def @BasicSetup
###########################################################################
# #
- # @Colour, @Color, @AddPaint, @LineWidth #
+ # @AddPaint, @LineWidth (obsolete), @StrokeCommand #
# #
###########################################################################
- def @ColourCommand right col
- {
- def @ColourCoords
- {
- col @Case {
- 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 }
- black @Yield { 0.0 0.0 0.0 }
- white @Yield { 1.0 1.0 1.0 }
- }
- }
-
- col @Case {
- nochange @Yield { nochange }
- else @Yield { @BackEnd @Case {
- PostScript @Yield { @ColourCoords setrgbcolor }
- PDF @Yield { @ColourCoords rg @ColourCoords RG }
- PlainText @Yield ""
- } }
- }
- }
-
- def @Colour @Color left col right y { {@ColourCommand col} @SetColour y }
-
def @AddPaint right col
{
col @Case {
@@ -785,6 +794,28 @@ def @BasicSetup
}
}
}
+
+ 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 ""
+ }
+ }
+
###########################################################################
@@ -799,11 +830,11 @@ def @BasicSetup
@BackEnd @Case {
PostScript @Yield @HExpand {
- { "LoutRule" @LineWidth linewidth "stroke" } @Graphic { 0.5p @High }
+ { "LoutRule" @StrokeCommand linewidth } @Graphic { 0.5p @High }
}
PDF @Yield @HExpand {
- { "0 0 m __xsize 0 l" @LineWidth linewidth "S" } @Graphic { 0.5p @High }
+ { "0 0 m __xsize 0 l" @StrokeCommand linewidth } @Graphic { 0.5p @High }
}
PlainText @Yield { "-" @PlainGraphic 1f @High }
@@ -816,11 +847,11 @@ def @BasicSetup
@BackEnd @Case {
PostScript @Yield {
- { "LoutRule" @LineWidth linewidth "stroke" } @Graphic { 0.5p @High }
+ { "LoutRule" @StrokeCommand linewidth } @Graphic { 0.5p @High }
}
PDF @Yield {
- { "0 0 m __xsize 0 l" @LineWidth linewidth "S" } @Graphic { 0.5p @High }
+ { "0 0 m __xsize 0 l" @StrokeCommand linewidth } @Graphic { 0.5p @High }
}
PlainText @Yield { "-" @PlainGraphic 1f @High }
@@ -836,14 +867,14 @@ def @BasicSetup
@BackEnd @Case {
PostScript @Yield @VContract @HContract 0c @HShift {
- {"LoutBox" @AddPaint paint @LineWidth linewidth "stroke"}
+ {"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 @LineWidth linewidth "S" } @Graphic
+ @AddPaint paint @StrokeCommand linewidth } @Graphic
{ ^/margin ^|margin 0c @HShift @OneRow x |margin /margin }
}
@@ -879,13 +910,13 @@ def @BasicSetup
"__div(__mul(11, __xmark), 24) 0"
"__xmark 0 c"
"h"
- @AddPaint paint @LineWidth linewidth "S"
+ @AddPaint paint @StrokeCommand linewidth
}
@VContract @HContract 0c @HShift @BackEnd @Case {
PostScript @Yield {
- {"LoutCurveBox" @AddPaint paint @LineWidth linewidth "stroke"}
+ {"LoutCurveBox" @AddPaint paint @StrokeCommand linewidth }
@Graphic
{ ^/margin ^|margin 0c @HShift @OneRow x |margin /margin }
}
@@ -1013,7 +1044,7 @@ def @BasicSetup
##########################################################################
# #
- # @NumberMarker, @NumberOf, @PageMarker, @PageMark, and @PageOf #
+ # @NumberMarker, @NumberOf, @PageMarker, @PageMark, @PageOf, @CrossLink #
# #
##########################################################################
@@ -1026,9 +1057,9 @@ def @BasicSetup
}
def @NumberOf
- right x
+ right tag
{
- @NumberMarker&&x @Open { @Value }
+ @NumberMarker&&tag @Open { @Value }
}
@@ -1042,15 +1073,31 @@ def @BasicSetup
}
def @PageMark
- right x
+ right tag
+ {
+ @Null & tag @LinkDest & @PageMarker&&preceding @Tagged tag
+ }
+
+ def @NoLinkPageMark
+ right tag
{
- @PageMarker&&preceding @Tagged x
+ @PageMarker&&preceding @Tagged tag
}
def @PageOf
- right x
+ right tag
{
- @PageMarker&&x @Open { num }
+ @PageMarker&&tag @Open { num }
+ }
+
+ def @CrossLink
+ left tag
+ named @Format right @Body { @CrossLinkFormat @Body }
+ right obj
+ {
+ @HContract @VContract {
+ tag @LinkSource @Format obj
+ }
}
@@ -1447,8 +1494,8 @@ def @BasicSetup
right x
{
@NumberMarker&&preceding @Tagged @Tag
- // @PageMark @Tag
// x
+ // @PageMark @Tag # weird placement, but @PageMark is definite now
}
def droplistitem into { @ItemPlace&&preceding }
@@ -1457,7 +1504,6 @@ def @BasicSetup
{
@NumberMarker&&preceding @Tagged @Tag
// @PageMark @Tag
- //
//1vx x
}
diff --git a/include/doc b/include/doc
index 126b8b9..feb50d4 100644
--- a/include/doc
+++ b/include/doc
@@ -60,6 +60,7 @@
# @ListRightIndent { 0s } # right indent of list items
# @ListLabelWidth { 2.00f @OrIfPlain 5s } # width allowed for list tags
# @NumberSeparator { . } # separates nums like 2.3.7
+ # @CrossLinkFormat { @Body } # format of cross links
}
diff --git a/include/dsf b/include/dsf
index b96c427..16a1967 100644
--- a/include/dsf
+++ b/include/dsf
@@ -2149,6 +2149,7 @@ def @DocumentSetup
def @ContentsItem
named indent { 0f }
+ named crosstag {}
named number {}
named title {}
named pagenum {}
@@ -2158,17 +2159,24 @@ def @DocumentSetup
{
def @Leaders { @ContentsLeader &@ContentsLeaderGap @Leaders }
+ def @OptionalCrossLink right x
+ {
+ crosstag @Case {
+ "" @Yield x
+ else @Yield { crosstag @CrossLink x }
+ }
+ }
+
def @RightPart
{
@ContentsRightWidth @Wide {
- # &@ContentsLeaderGap @Leaders &@ContentsLeaderGap
- &1rt { pagenum //0.5vx }
+ &1rt { @OptionalCrossLink pagenum //0.5vx }
}
}
def @Item
{
- |indent number @ContentsFormat @HExpand {
+ |indent @OptionalCrossLink number @ContentsFormat @HExpand {
title & @ContentsLeaderGap @Wide &1rt @OneCol {
@Leaders & @RightPart &0io
}
@@ -2178,19 +2186,9 @@ def @DocumentSetup
//pregap
//0.5vx
- @BackEnd @Case {
- { PostScript PlainText } @Yield {
- protect @Case {
- No @Yield @Item
- Yes @Yield @Protect @Item
- }
- }
- PDF @Yield {
- protect @Case {
- No @Yield { "__link_source=<<"title">>" } @Graphic @Item
- Yes @Yield { "__link_source=<<"title">>" } @Graphic { @Protect @Item }
- }
- }
+ protect @Case {
+ No @Yield @Item
+ Yes @Yield @Protect @Item
}
//postgap
}
@@ -2220,6 +2218,7 @@ def @DocumentSetup
def @ContentsEntry
left wanted
named indent { 0f }
+ named crosstag {}
named number {}
named title {}
named pagenum {}
@@ -2229,6 +2228,7 @@ def @DocumentSetup
@MakeContents.wanted @Case {
Yes.Yes @Yield { @SendContents @ContentsItem
indent { indent }
+ crosstag { crosstag }
number { number }
title { title }
pagenum { pagenum }
@@ -2242,6 +2242,7 @@ def @DocumentSetup
def @FigureContentsEntry
left wanted
named indent { 0f }
+ named crosstag {}
named number {}
named title {}
named pagenum {}
@@ -2251,6 +2252,7 @@ def @DocumentSetup
@MakeFigureContents.wanted @Case {
Yes.Yes @Yield { @SendFigureContents @ContentsItem
indent { indent }
+ crosstag { crosstag }
number { number }
title { title }
pagenum { pagenum }
@@ -2264,6 +2266,7 @@ def @DocumentSetup
def @TableContentsEntry
left wanted
named indent { 0f }
+ named crosstag {}
named number {}
named title {}
named pagenum {}
@@ -2273,6 +2276,7 @@ def @DocumentSetup
@MakeTableContents.wanted @Case {
Yes.Yes @Yield { @SendTableContents @ContentsItem
indent { indent }
+ crosstag { crosstag }
number { number }
title { title }
pagenum { pagenum }
@@ -2286,6 +2290,7 @@ def @DocumentSetup
def @MajorContentsEntry
left wanted
named indent { 0f }
+ named crosstag {}
named number {}
named title {}
named pagenum {}
@@ -2295,6 +2300,7 @@ def @DocumentSetup
@MakeContents.wanted @Case {
Yes.Yes @Yield { @SendContents @ContentsItem
indent { indent }
+ crosstag { crosstag }
number { @ContentsFont @Font number }
title { @ContentsFont @Font title }
pagenum { pagenum }
@@ -2367,6 +2373,7 @@ def @DocumentSetup
def @BypassContentsEntry into { @ContentsPlace&&preceding }
named indent { 0f }
+ named crosstag {}
named number {}
named title {}
named pagenum {}
@@ -2374,6 +2381,7 @@ def @DocumentSetup
@MakeContents @Case {
Bypass @Yield { @ContentsItem
indent { indent }
+ crosstag { crosstag }
number { number }
title { title }
pagenum { pagenum }
@@ -2386,6 +2394,7 @@ def @DocumentSetup
def @BypassFigureContentsEntry into { @FigureContentsPlace&&preceding }
named indent { 0f }
+ named crosstag {}
named number {}
named title {}
named pagenum {}
@@ -2393,6 +2402,7 @@ def @DocumentSetup
@MakeFigureContents @Case {
Bypass @Yield { @ContentsItem
indent { indent }
+ crosstag { crosstag }
number { number }
title { title }
pagenum { pagenum }
@@ -2405,6 +2415,7 @@ def @DocumentSetup
def @BypassTableContentsEntry into { @TableContentsPlace&&preceding }
named indent { 0f }
+ named crosstag {}
named number {}
named title {}
named pagenum {}
@@ -2412,6 +2423,7 @@ def @DocumentSetup
@MakeTableContents @Case {
Bypass @Yield { @ContentsItem
indent { indent }
+ crosstag { crosstag }
number { number }
title { title }
pagenum { pagenum }
@@ -2424,6 +2436,7 @@ def @DocumentSetup
def @BypassMajorContentsEntry into { @ContentsPlace&&preceding }
named indent { 0f }
+ named crosstag {}
named number {}
named title {}
named pagenum {}
@@ -2431,6 +2444,7 @@ def @DocumentSetup
@MakeContents @Case {
Bypass @Yield { @ContentsItem
indent { indent }
+ crosstag { crosstag }
number { @B number }
title { @B title }
pagenum { pagenum }
@@ -2641,7 +2655,7 @@ def @DocumentSetup
}
}
- { @PageMark @Tag @TheoremCounterIncrement @Tag } @Insert
+ { @PageMark @Tag & @TheoremCounterIncrement @Tag } @Insert
@TheoremFormat
word { theorem @WordVal @TheoremWord }
number { @TheoremNum @Tag }
@@ -2700,7 +2714,7 @@ def @DocumentSetup
}
}
- { @PageMark @Tag @DefinitionCounterIncrement @Tag } @Insert
+ { @PageMark @Tag & @DefinitionCounterIncrement @Tag } @Insert
@DefinitionFormat
word { definition @WordVal @DefinitionWord }
number { @DefinitionNum @Tag }
@@ -2755,7 +2769,7 @@ def @DocumentSetup
}
}
- { @PageMark @Tag @ClaimCounterIncrement @Tag } @Insert
+ { @PageMark @Tag & @ClaimCounterIncrement @Tag } @Insert
@ClaimFormat
word { claim @WordVal @ClaimWord }
number { @ClaimNum @Tag }
@@ -2810,7 +2824,7 @@ def @DocumentSetup
}
}
- { @PageMark @Tag @PropositionCounterIncrement @Tag } @Insert
+ { @PageMark @Tag & @PropositionCounterIncrement @Tag } @Insert
@PropositionFormat
word { proposition @WordVal @PropositionWord }
number { @PropositionNum @Tag }
@@ -2865,7 +2879,7 @@ def @DocumentSetup
}
}
- { @PageMark @Tag @LemmaCounterIncrement @Tag } @Insert
+ { @PageMark @Tag & @LemmaCounterIncrement @Tag } @Insert
@LemmaFormat
word { lemma @WordVal @LemmaWord }
number { @LemmaNum @Tag }
@@ -2920,7 +2934,7 @@ def @DocumentSetup
}
}
- { @PageMark @Tag @CorollaryCounterIncrement @Tag } @Insert
+ { @PageMark @Tag & @CorollaryCounterIncrement @Tag } @Insert
@CorollaryFormat
word { corollary @WordVal @CorollaryWord }
number { @CorollaryNum @Tag }
@@ -2975,7 +2989,7 @@ def @DocumentSetup
}
}
- { @PageMark @Tag @ExampleCounterIncrement @Tag } @Insert
+ { @PageMark @Tag & @ExampleCounterIncrement @Tag } @Insert
@ExampleFormat
word { example @WordVal @ExampleWord }
number { @ExampleNum @Tag }
@@ -3063,7 +3077,7 @@ def @DocumentSetup
left label
right tag
{
- @RefCiteLabels
+ tag @CrossLink @RefCiteLabels
@RefNum { @NumberOf tag }
@Tag { tag }
@Type { @Reference&&tag @Open { @Type } }
@@ -3324,34 +3338,8 @@ def @DocumentSetup
left label
right tag
{
-#
-# VT: I can't get this to work, so I've put back the original code
-#
-# @RefListFont @Font @RefListBreak @Break {
-# @BackEnd @Case {
-# PostScript @Yield {
-# @NumberMarker&&preceding @Tagged tag &
-# @PageMark tag
-# |@RefListIndent {label @ListLabel tag} @RefItem {@RefPrint tag}
-# |@RefListRightIndent
-# }
-# PDF @Yield {
-# { "__link_target=<<"tag">>" }
-# @Graphic
-# {
-# @NumberMarker&&preceding @Tagged tag &
-# @PageMark tag
-# |@RefListIndent {label @ListLabel tag} @RefItem {@RefPrint tag}
-# |@RefListRightIndent
-# }
-# }
-# }
-# }
-# VT: original:
-
@RefListFont @Font @RefListBreak @Break {
- @NumberMarker&&preceding @Tagged tag &
- @PageMark tag
+ @NumberMarker&&preceding @Tagged tag & @PageMark tag
|@RefListIndent {label @ListLabel tag} @RefItem {@RefPrint tag}
|@RefListRightIndent
}
@@ -3470,20 +3458,8 @@ def @DocumentSetup
def ";" precedence 90 left x { x";" }
@MakeReferences @Case {
-# Yes @Yield { @RefCiteStyle cite }
Yes @Yield {
- @BackEnd @Case {
- { PlainText PostScript } @Yield { @RefCiteStyle cite }
- PDF @Yield {
-#
-# VT: can't get this to work: need to ask JHK; I want the text following the "$" to be
-# the name of the link that we are trying to create a link to
-# { "__link_source=<<"label">>" }
-# @Graphic
- { @RefCiteStyle cite }
-# { blue @Colour @Underline { @RefCiteStyle cite } }
- }
- }
+ @RefCiteStyle cite
}
else @Yield @Null
}
@@ -3666,6 +3642,7 @@ def @DocumentSetup
{
@MakeFigureContents @FigureContentsEntry
indent { 0f }
+ crosstag { @Tag }
number { @FigureNumber }
title { @InitialLanguage @Language @ContentsCaption }
pagenum { @PageOf @Tag }
@@ -3910,6 +3887,7 @@ def @DocumentSetup
{
@MakeTableContents @TableContentsEntry
indent { 0f }
+ crosstag { @Tag }
number { @TableNumber }
title { @InitialLanguage @Language @ContentsCaption }
pagenum { @PageOf @Tag }
@@ -4030,7 +4008,6 @@ def @DocumentSetup
{
// @IndexBreak @Break @IndexList
// @IndexBreak @Break @BypassIndexList
- # //1vx --- "@Clear"
// @ClearHeaderComponent
// etc
}
@@ -4094,7 +4071,7 @@ def @DocumentSetup
right y
{
@MakeIndex @Case {
- Yes @Yield { {@PageMark @Tag} x @DoIndex stem { y } indent { indent } y }
+ Yes @Yield { @PageMark @Tag & x @DoIndex stem { y } indent { indent } y }
else @Yield @Null
}
}
@@ -4109,16 +4086,21 @@ def @DocumentSetup
named to {}
right y
{
- def pagerange
+ def @PgMk right tag
+ {
+ tag @CrossLink @PageOf tag
+ }
+
+ def @PgRange
{
to @Case
{
- "" @Yield @PageOf @Tag
+ "" @Yield @PgMk @Tag
else @Yield {
{ @PageOf @Tag } @Case
{
- { @PageOf to } @Yield { @PageOf @Tag }
- else @Yield { {@PageOf @Tag}--{@PageOf to} }
+ { @PageOf to } @Yield { @PgMk @Tag }
+ else @Yield { {@PgMk @Tag}--{@PgMk to} }
}
}
}
@@ -4126,22 +4108,10 @@ def @DocumentSetup
@MakeIndex @Case {
- Yes @Yield { @BackEnd @Case {
-
- { PostScript PlainText } @Yield {
- @PageMark @Tag
- x @DoIndex stem { y } indent { indent } { y &"0.03fu" , pagerange }
- }
-
- PDF @Yield {
- {"__link_target=<<"@Tag">>"} @Graphic {""}
- @PageMark @Tag
- x @DoIndex stem { y } indent { indent } {
- y &"0.03fu" , { "__link_source=<<"@Tag">>" }
- @Graphic { blue @Colour @Underline pagerange }
- }
- }
- } }
+ Yes @Yield {
+ @PageMark @Tag &
+ x @DoIndex stem { y } indent { indent } { y &"0.03fu" , @PgRange }
+ }
else @Yield @Null
}
}
@@ -4214,7 +4184,7 @@ def @DocumentSetup
right y
{
@MakeIndexA @Case {
- Yes @Yield { {@PageMark @Tag} x @DoIndexA indent { indent } y }
+ Yes @Yield { @PageMark @Tag & x @DoIndexA indent { indent } y }
else @Yield @Null
}
}
@@ -4229,16 +4199,21 @@ def @DocumentSetup
named to {}
right y
{
- def pagerange
+ def @PgMk right tag
+ {
+ tag @CrossLink @PageOf tag
+ }
+
+ def @PgRange
{
to @Case
{
- "" @Yield @PageOf @Tag
+ "" @Yield @PgMk @Tag
else @Yield {
{ @PageOf @Tag } @Case
{
- { @PageOf to } @Yield { @PageOf @Tag }
- else @Yield { {@PageOf @Tag}--{@PageOf to} }
+ { @PageOf to } @Yield { @PgMk @Tag }
+ else @Yield { {@PgMk @Tag}--{@PgMk to} }
}
}
}
@@ -4246,22 +4221,10 @@ def @DocumentSetup
@MakeIndexA @Case {
- Yes @Yield { @BackEnd @Case {
-
- { PostScript PlainText } @Yield {
- @PageMark @Tag
- x @DoIndexA indent { indent } { y &"0.03fu" , pagerange }
- }
-
- PDF @Yield {
- {"__link_target=<<"@Tag">>"} @Graphic {""}
- @PageMark @Tag
- x @DoIndexA indent { indent } {
- y &"0.03fu" , { "__link_source=<<"@Tag">>" }
- @Graphic { blue @Colour @Underline pagerange }
- }
- }
- } }
+ Yes @Yield {
+ @PageMark @Tag &
+ x @DoIndexA indent { indent } { y &"0.03fu" , @PgRange }
+ }
else @Yield @Null
}
}
@@ -4334,7 +4297,7 @@ def @DocumentSetup
right y
{
@MakeIndexB @Case {
- Yes @Yield { {@PageMark @Tag} x @DoIndexB indent { indent } y }
+ Yes @Yield { @PageMark @Tag & x @DoIndexB indent { indent } y }
else @Yield @Null
}
}
@@ -4349,16 +4312,21 @@ def @DocumentSetup
named to {}
right y
{
- def pagerange
+ def @PgMk right tag
+ {
+ tag @CrossLink @PageOf tag
+ }
+
+ def @PgRange
{
to @Case
{
- "" @Yield @PageOf @Tag
+ "" @Yield @PgMk @Tag
else @Yield {
{ @PageOf @Tag } @Case
{
- { @PageOf to } @Yield { @PageOf @Tag }
- else @Yield { {@PageOf @Tag}--{@PageOf to} }
+ { @PageOf to } @Yield { @PgMk @Tag }
+ else @Yield { {@PgMk @Tag}--{@PgMk to} }
}
}
}
@@ -4366,22 +4334,10 @@ def @DocumentSetup
@MakeIndexB @Case {
- Yes @Yield { @BackEnd @Case {
-
- { PostScript PlainText } @Yield {
- @PageMark @Tag
- x @DoIndexB indent { indent } { y &"0.03fu" , pagerange }
- }
-
- PDF @Yield {
- {"__link_target=<<"@Tag">>"} @Graphic {""}
- @PageMark @Tag
- x @DoIndexB indent { indent } {
- y &"0.03fu" , { "__link_source=<<"@Tag">>" }
- @Graphic { blue @Colour @Underline pagerange }
- }
- }
- } }
+ Yes @Yield {
+ @PageMark @Tag &
+ x @DoIndexB indent { indent } { y &"0.03fu" , @PgRange }
+ }
else @Yield @Null
}
}
@@ -4537,6 +4493,7 @@ def @DocumentSetup
Yes.Minor @Yield {
incontents @ContentsEntry
indent { contentsindent }
+ crosstag { tag }
number { @LongNum }
title { initiallanguage @Language title }
pagenum { @PageOf tag }
@@ -4544,6 +4501,7 @@ def @DocumentSetup
{ Yes.Major Yes.MajorIntro Yes.ExtraMajor Yes.ExtraMajorIntro } @Yield {
incontents @MajorContentsEntry
+ crosstag { tag }
number { @LongNum }
title { initiallanguage @Language title }
pagenum { @PageOf tag }
@@ -4560,61 +4518,30 @@ def @DocumentSetup
def @Heading
{
- def @AttachPDFLink
- left title
- right x
- {
- @BackEnd @Case {
-
- # VTan: Rats! Cannot use the tag for the name of the link
- # because the source link has no access to the tag
- #
- # using title will work most of the time; it will fail
- # with a "problem with left parameter of @Graphic" warning
- # message if the title has objects other than text in it.
- # Eg, "@Title { My @FancyTitle }" with
- # "def @FancyTitle { @OneCol { @Bold "fancy" "title" }" }
- #
- # Example: the user manual has a definition for @Tex which
- # causes this warning message to appear
-
- PDF @Yield {
- title @Case {
- "" @Yield x
- else @Yield {
- "__link_target_for_export=<<"title">>"
- @Graphic x
- }
- }
- }
-
- else @Yield x
- }
- }
type @Case {
- Minor @Yield title @AttachPDFLink {
+ Minor @Yield {
headingfont @Font
headingbreak @Break @Protect {@LongNum headingformat title}
// @PageMark tag
}
{ Major MajorIntro ExtraMajor ExtraMajorIntro } @Yield {
- sendheader { title @AttachPDFLink {
+ sendheader {
//aboveheadinggap
headingfont @Font
headingbreak @Break { @LongNum headingformat title }
// @PageMark tag
- } }
+ }
}
- { VeryMajor } @Yield { sendheader { title @AttachPDFLink {
+ { VeryMajor } @Yield { sendheader {
//aboveheadinggap
headingfont @Font
headingbreak @Break { bypassnumber headingformat title }
// @PageMark tag
- } }
+ }
}
}
}
@@ -4643,7 +4570,6 @@ def @DocumentSetup
// numbers @Do {
attachnum & @NumberMarker @Tag { tag } @Value { @ShortNum }
}
- # // @PageMark tag
// @IfMajor { @FootNoteThrough @Do @BeginFootNoteCounter }
// @Run @StartIfMajor
// @ContentsStuff
diff --git a/include/picture b/include/picture
index f797c49..6ce6885 100644
--- a/include/picture
+++ b/include/picture
@@ -60,6 +60,7 @@
# @ListRightIndent { 0s } # right indent of list items
# @ListLabelWidth { 2.00f @OrIfPlain 5s } # width allowed for list tags
# @NumberSeparator { . } # separates nums like 2.3.7
+ # @CrossLinkFormat { @Body } # format of cross links
}
diff --git a/include/python b/include/python
new file mode 100644
index 0000000..0db2ea5
--- /dev/null
+++ b/include/python
@@ -0,0 +1,109 @@
+###############################################################################
+# #
+# Lout setup file for Python program printing #
+# #
+# Version 3.0 #
+# Jeffrey H. Kingston #
+# 5 April 2000 #
+# #
+###############################################################################
+
+
+###############################################################################
+# #
+# @SysInclude line #
+# #
+# This line causes Lout to read the definitions for this programming #
+# language, and should not be touched. #
+# #
+###############################################################################
+
+@SysInclude { pythonf }
+
+
+###############################################################################
+# #
+# @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 { @PythonSetup
+ # pipe { } # pipe source through this
+ # numbered { No } # No, Yes, or a line number
+ # style { varying @OrIfPlain fixed } # fixed, varying, or symbol
+
+ # the following options apply when style is "fixed"
+
+ # fixedfont { Courier } # font family
+ # fixedsize { -1.0p } # font size
+ # fixedline { 1.0vx } # line-space
+ # fixedtabin { 8 } # tab interval
+ # fixedtabout { 8s } # tab width
+
+ # fixedidentifiers { Base } # identifier face
+ # fixedkeywords { Base } # keyword face
+ # fixedoperators { Base } # operator face
+ # fixednumbers { Base } # number face
+ # fixedstrings { Base } # string face
+ # fixedcomments { Base } # comment face
+ # fixedlinenumbers { Base } # line numbers face
+
+ # fixedidentifiersformat { @Body } # identifiers format
+ # fixedkeywordsformat { @Body } # keywords format
+ # fixedoperatorsformat { @Body } # operators format
+ # fixednumbersformat { @Body } # numbers format
+ # fixedstringsformat { @Body } # strings format
+ # fixedcommentsformat { @Body } # comments format
+ # fixedlinenumbersformat { @Body } # line numbers format
+
+ # the following options apply when style is "varying"
+
+ # varyingfont { } # font family
+ # varyingsize { 1.0f } # font size
+ # varyingline { 1.0vx } # line-space
+ # varyingtabin { 8 } # tab interval
+ # varyingtabout { 3f } # tab width
+
+ # varyingidentifiers { Slope } # identifier face
+ # varyingkeywords { Bold } # keyword face
+ # varyingoperators { Base } # operator face
+ # varyingnumbers { Base } # number face
+ # varyingstrings { Slope } # string face
+ # varyingcomments { Base } # comment face
+ # varyinglinenumbers { Base } # line numbers face
+
+ # varyingidentifiersformat { @Body } # identifiers format
+ # varyingkeywordsformat { @Body } # keywords format
+ # varyingoperatorsformat { @Body } # operators format
+ # varyingnumbersformat { @Body } # numbers format
+ # varyingstringsformat { @Body } # strings format
+ # varyingcommentsformat { @Body } # comments format
+ # varyinglinenumbersformat { @Body } # line numbers format
+
+ # the following options apply when style is "symbol"
+
+ # symbolfont { } # font family
+ # symbolsize { 1.0f } # font size
+ # symbolline { 1.0vx } # line-space
+ # symboltabin { 8 } # tab interval
+ # symboltabout { 3f } # tab width
+
+ # symbolidentifiers { Slope } # identifier face
+ # symbolkeywords { Bold } # keyword face
+ # symboloperators { Base } # operator face
+ # symbolnumbers { Base } # number face
+ # symbolstrings { Slope } # string face
+ # symbolcomments { Base } # comment face
+ # symbollinenumbers { Base } # line numbers face
+
+ # symbolidentifiersformat { @Body } # identifiers format
+ # symbolkeywordsformat { @Body } # keywords format
+ # symboloperatorsformat { @Body } # operators format
+ # symbolnumbersformat { @Body } # numbers format
+ # symbolstringsformat { @Body } # strings format
+ # symbolcommentsformat { @Body } # comments format
+ # symbollinenumbersformat { @Body } # line numbers format
+}
diff --git a/include/pythonf b/include/pythonf
new file mode 100644
index 0000000..642cfb3
--- /dev/null
+++ b/include/pythonf
@@ -0,0 +1,390 @@
+
+###############################################################################
+# #
+# Lout @PythonSetup package for formatting Python programs #
+# #
+# Version 3.0 #
+# Jeffrey H. Kingston #
+# 5 April 2000 #
+# #
+# This package uses a filtered body parameter to convert program source #
+# code into Lout source. The filter program is prg2lout, which is #
+# distributed with Lout and should be compiled and installed wherever #
+# Lout itself is. #
+# #
+###############################################################################
+
+export @Python
+def @PythonSetup
+ named pipe { } # pipe through this first
+ named numbered { No } # want lines numbered?
+ named style
+ named @OrIfPlain left x right y
+ { @BackEnd @Case { PlainText @Yield y else @Yield x } }
+ { varying @OrIfPlain fixed } # print style
+
+ # the following options apply when style is "fixed"
+ named fixedfont { Courier }# font family
+ named fixedsize { -1.0p } # font size
+ named fixedline { 1.0vx } # line-space
+ named fixedtabin { 8 } # tab interval
+ named fixedtabout { 8s } # tab width
+
+ named fixedidentifiers { Base } # identifier face
+ named fixedkeywords { Base } # keyword face
+ named fixedoperators { Base } # operator face
+ named fixednumbers { Base } # number face
+ named fixedstrings { Base } # string face
+ named fixedcomments { Base } # comment face
+ named fixedlinenumbers { Base } # line numbers face
+
+ named fixedidentifiersformat right @Body { @Body } # identifier format
+ named fixedkeywordsformat right @Body { @Body } # keyword format
+ named fixedoperatorsformat right @Body { @Body } # operators format
+ named fixednumbersformat right @Body { @Body } # number format
+ named fixedstringsformat right @Body { @Body } # string format
+ named fixedcommentsformat right @Body { @Body } # comment format
+ named fixedlinenumbersformat right @Body { @Body } # line nums format
+
+ # the following options apply when style is "varying"
+ named varyingfont { } # font family
+ named varyingsize { 1.0f } # font size
+ named varyingline { 1.0vx } # line-space
+ named varyingtabin { 8 } # tab interval
+ named varyingtabout { 3f } # tab width
+
+ named varyingidentifiers { Slope } # identifier face
+ named varyingkeywords { Bold } # keyword face
+ named varyingoperators { Base } # operator face
+ named varyingnumbers { Base } # number face
+ named varyingstrings { Slope } # string face
+ named varyingcomments { Base } # comment face
+ named varyinglinenumbers { Base } # line numbers face
+
+ named varyingidentifiersformat right @Body { @Body } # identifier format
+ named varyingkeywordsformat right @Body { @Body } # keyword format
+ named varyingoperatorsformat right @Body { @Body } # operators format
+ named varyingnumbersformat right @Body { @Body } # number format
+ named varyingstringsformat right @Body { @Body } # string format
+ named varyingcommentsformat right @Body { @Body } # comment format
+ named varyinglinenumbersformat right @Body { @Body } # line nums format
+
+ # the following options apply when style is "symbol"
+ named symbolfont { } # font family
+ named symbolsize { 1.0f } # font size
+ named symbolline { 1.0vx } # line-space
+ named symboltabin { 8 } # tab interval
+ named symboltabout { 3f } # tab width
+
+ named symbolidentifiers { Slope } # identifier face
+ named symbolkeywords { Bold } # keyword face
+ named symboloperators { Base } # operator face
+ named symbolnumbers { Base } # number face
+ named symbolstrings { Slope } # string face
+ named symbolcomments { Base } # comment face
+ named symbollinenumbers { Base } # line numbers face
+
+ named symbolidentifiersformat right @Body { @Body } # identifier format
+ named symbolkeywordsformat right @Body { @Body } # keyword format
+ named symboloperatorsformat right @Body { @Body } # operators format
+ named symbolnumbersformat right @Body { @Body } # number format
+ named symbolstringsformat right @Body { @Body } # string format
+ named symbolcommentsformat right @Body { @Body } # comment format
+ named symbollinenumbersformat right @Body { @Body } # line nums format
+
+@Begin
+
+ export
+
+ @PI @PK @PO @PN @PS @PC @PL @PA @PM @PD
+ @A "$>"
+
+ def @Python
+ named style { style } # style
+ named numbered { numbered } # want numbered lines?
+ named pipe { pipe } # pipe through this first
+ named font { dft } # font family
+ named size { dft } # font size
+ named line { dft } # line-space
+ named tabin { dft } # tab interval
+ named tabout { dft } # tab width
+ named identifiers { dft } # ident. font
+ named keywords { dft } # keyword font
+ named operators { dft } # operator font
+ named numbers { dft } # number font
+ named strings { dft } # string font
+ named comments { dft } # comment font
+ named linenumbers { dft } # line numbers font
+ body @Body # filtered, see below
+ @Begin
+
+ def @Test # returns x unless x is dft
+ left x
+ named iffixed {}
+ named ifvarying {}
+ named ifsymbol {}
+ {
+ x @Case {
+ dft @Yield {
+ style @Case {
+ fixed @Yield { iffixed }
+ varying @Yield { ifvarying }
+ symbol @Yield { ifsymbol }
+ }
+ }
+ else @Yield x
+ }
+ }
+
+
+ def @Else # returns x, or y if x is dft
+ left x
+ right y
+ {
+ x @Case {
+ dft @Yield y
+ else @Yield x
+ }
+ }
+
+
+ def @InitTab
+ {
+ tabin @Test
+ iffixed { fixedtabin }
+ ifvarying { varyingtabin }
+ ifsymbol { symboltabin }
+ }
+
+
+ def @InitTabWidth
+ {
+ tabout @Test
+ iffixed { fixedtabout }
+ ifvarying { varyingtabout }
+ ifsymbol { symboltabout }
+ }
+
+
+ def @Filter
+ {
+ def wantnumbered
+ {
+ numbered @Case {
+ { No no } @Yield ""
+ { Yes yes } @Yield "-L"
+ else @Yield { "-L"numbered }
+ }
+ }
+
+ pipe @Case {
+ "" @Yield {
+ "prg2lout -r -lPython" wantnumbered -i{@FilterIn}
+ -o{@FilterOut} -e{@FilterErr}
+ -t{@InitTab} -T{@InitTabWidth}
+ }
+ else @Yield {
+ "cat" @FilterIn "|" pipe "|"
+ "prg2lout -r -lPython" wantnumbered -o{@FilterOut}
+ -e{@FilterErr} -t{@InitTab} -T{@InitTabWidth}
+ }
+ }
+ }
+
+
+ def @InitFontFamily
+ {
+ font @Test
+ iffixed { fixedfont }
+ ifvarying { varyingfont }
+ ifsymbol { symbolfont }
+ }
+
+
+ def @InitSize
+ {
+ size @Test
+ iffixed { fixedsize }
+ ifvarying { varyingsize }
+ ifsymbol { symbolsize }
+ }
+
+
+ def @InitLine
+ {
+ line @Test
+ iffixed { fixedline }
+ ifvarying { varyingline }
+ ifsymbol { symbolline }
+ }
+
+
+ def @PI # for formatting identifiers
+ right x
+ {
+ style @Case {
+ fixed @Yield fixedidentifiersformat {
+ { identifiers @Else fixedidentifiers } @Font x
+ }
+ varying @Yield varyingidentifiersformat {
+ { identifiers @Else varyingidentifiers } @Font x
+ }
+ symbol @Yield symbolidentifiersformat {
+ { identifiers @Else symbolidentifiers } @Font x
+ }
+ }
+ }
+
+
+ def @PK # for formatting keywords
+ right x
+ {
+ style @Case {
+ fixed @Yield fixedkeywordsformat {
+ { keywords @Else fixedkeywords } @Font x
+ }
+ varying @Yield varyingkeywordsformat {
+ { keywords @Else varyingkeywords } @Font x
+ }
+ symbol @Yield symbolkeywordsformat {
+ { keywords @Else symbolkeywords } @Font x
+ }
+ }
+ }
+
+
+ def @PO # for formatting operators
+ right x
+ {
+ style @Case {
+ fixed @Yield fixedoperatorsformat {
+ { operators @Else fixedoperators } @Font x
+ }
+ varying @Yield varyingoperatorsformat {
+ { operators @Else varyingoperators } @Font x
+ }
+ symbol @Yield symboloperatorsformat {
+ { operators @Else symboloperators } @Font x
+ }
+ }
+ }
+
+
+ def @PN # for formatting numbers
+ right x
+ {
+ style @Case {
+ fixed @Yield fixednumbersformat {
+ { numbers @Else fixednumbers } @Font x
+ }
+ varying @Yield varyingnumbersformat {
+ { numbers @Else varyingnumbers } @Font x
+ }
+ symbol @Yield symbolnumbersformat {
+ { numbers @Else symbolnumbers } @Font x
+ }
+ }
+ }
+
+
+ def @PS # for formatting strings
+ right x
+ {
+ style @Case {
+ fixed @Yield fixedstringsformat {
+ { strings @Else fixedstrings } @Font x
+ }
+ varying @Yield varyingstringsformat {
+ { strings @Else varyingstrings } @Font x
+ }
+ symbol @Yield symbolstringsformat {
+ { strings @Else symbolstrings } @Font x
+ }
+ }
+ }
+
+
+ def @PC # for formatting comments
+ right x
+ {
+ style @Case {
+ fixed @Yield fixedcommentsformat {
+ { comments @Else fixedcomments } @Font x
+ }
+ varying @Yield varyingcommentsformat {
+ { comments @Else varyingcomments } @Font x
+ }
+ symbol @Yield symbolcommentsformat {
+ { comments @Else symbolcomments } @Font x
+ }
+ }
+ }
+
+
+ def @PL # for formatting line numbers
+ right x
+ {
+ style @Case {
+ fixed @Yield fixedlinenumbersformat {
+ { linenumbers @Else fixedlinenumbers } @Font x
+ }
+ varying @Yield varyinglinenumbersformat {
+ { linenumbers @Else varyinglinenumbers } @Font x
+ }
+ symbol @Yield symbollinenumbersformat {
+ { linenumbers @Else symbollinenumbers } @Font x
+ }
+ }
+ }
+
+
+ def @PA # for formatting asterisks
+ {
+ @PO @BackEnd @Case {
+ PlainText @Yield "*"
+ else @Yield { "0.5w" @VShift "*" }
+ }
+ }
+
+
+ def @PM # for formatting minus signs
+ {
+ @PO @BackEnd @Case {
+ PlainText @Yield "-"
+ else @Yield style @Case {
+ fixed @Yield "-"
+ else @Yield { { Symbol Base } @Font @Char "minus" }
+ }
+ }
+ }
+
+
+ def @PD # for formatting dots, if wanted larger
+ {
+ @PO @BackEnd @Case {
+ PlainText @Yield "."
+ else @Yield { "1.4f" @Font "+0.04f" @VShift "." &"0.05f" }
+ }
+ }
+
+
+ def @A # get characters from the Adobe Symbol font
+ left sym
+ right x
+ {
+ style @Case {
+ symbol @Yield { { Symbol Base } @Font @Char sym }
+ else @Yield { x }
+ }
+ }
+
+
+ macro "$>" { {} & }
+
+
+ { @InitFontFamily Base @InitSize } @Font
+ { @InitLine lines nohyphen } @Break @Body
+
+ @End @Python
+
+@End @PythonSetup
diff --git a/include/report b/include/report
index cebd65a..4bc31ca 100644
--- a/include/report
+++ b/include/report
@@ -65,6 +65,7 @@
# @ListRightIndent { 0s } # right indent of list items
# @ListLabelWidth { 2.00f @OrIfPlain 5s } # width allowed for list tags
# @NumberSeparator { . } # separates nums like 2.3.7
+ # @CrossLinkFormat { @Body } # format of cross links
}
diff --git a/include/slides b/include/slides
index 60d5a63..7f9f677 100644
--- a/include/slides
+++ b/include/slides
@@ -62,6 +62,7 @@
# @ListRightIndent { 0s } # right indent of list items
# @ListLabelWidth { 2.00f @OrIfPlain 5s } # width allowed for list tags
# @NumberSeparator { . } # separates nums like 2.3.7
+ # @CrossLinkFormat { @Body } # format of cross links
}
diff --git a/makefile b/makefile
index a8d285f..1ddf4b8 100644
--- a/makefile
+++ b/makefile
@@ -1,9 +1,9 @@
###############################################################################
# #
-# Make file for installing Basser Lout Version 3.22 #
+# Make file for installing Basser Lout Version 3.23 #
# #
# Jeffrey H. Kingston #
-# 3 June 2000 #
+# 24 June 2000 #
# #
# make prg2lout Compile a small auxiliary program called prg2lout #
# make lout Compile the Lout source #
@@ -270,8 +270,11 @@ DBFIX = 0
USESTAT = 1
SAFEDFT = 0
-DEBUGGING = 1
-TRACING = -g
+DEBUGGING = 0
+TRACING =
+
+# DEBUGGING = 1
+# TRACING = -g
BINDIR = /export/home/6monthspace/jeff/bin
LIBDIR = /export/home/6monthspace/jeff/lout.lib
diff --git a/prg2lout.c b/prg2lout.c
index 2c81371..9a9da77 100644
--- a/prg2lout.c
+++ b/prg2lout.c
@@ -1,14 +1,20 @@
/*****************************************************************************/
/* */
-/* PRG2LOUT: A PROGRAM TO CONVERT PROGRAM SOURCES INTO LOUT (VERSION 2.0) */
+/* PRG2LOUT: A PROGRAM TO CONVERT PROGRAM SOURCES INTO LOUT */
/* COPYRIGHT (C) 2000 Jeffrey H. Kingston */
/* */
+/* Version 2.1, 24 June 2000 */
+/* */
/* Jeffrey H. Kingston (jeff@cs.su.oz.au) */
/* Basser Department of Computer Science */
/* The University of Sydney 2006 */
/* AUSTRALIA */
/* */
+/* C and C++, Eiffel, and Blue by Jeff Kingston */
+/* Perl and Pod by Jeff Kingston and Mark Summerfield */
+/* Python by Mark Summerfield */
+/* */
/* 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) */
@@ -589,6 +595,97 @@ TOKEN EiffelCharacterToken = {
};
+TOKEN PythonDblStringToken = {
+ "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 */
+ FALSE, /* token allowed anywhere, not just start of line */
+ { "\"" }, /* 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 */
+ 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 */
+ 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 */
+ PRINT_WHOLE_QUOTED, /* print this token in quotes etc. as usual */
+ "@PS", /* Lout command for formatting strings */
+ "", /* no alternate command */
+ "", /* no following command */
+ FALSE, /* token allowed anywhere, not just start of line */
+ { "'" }, /* 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 */
+ 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 */
+ 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 */
+ PRINT_WHOLE_QUOTED, /* print this token in quotes etc. as usual */
+ "@PS", /* Lout command for formatting strings */
+ "", /* no alternate command */
+ "", /* no following command */
+ FALSE, /* token allowed anywhere, not just start of line */
+ { "'''" }, /* 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, /* 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 ''' */
+ 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 */
+ PRINT_WHOLE_QUOTED, /* print this token in quotes etc. as usual */
+ "@PS", /* Lout command for formatting strings */
+ "", /* no alternate command */
+ "", /* no following command */
+ FALSE, /* token allowed anywhere, not just start of line */
+ { "\"\"\"" }, /* 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, /* 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 """ */
+ FALSE, /* end delimiter does not have to be at line start */
+ FALSE, /* don't need to see end delimiter twice to stop */
+};
+
+
+
+
/*****************************************************************************/
/* */
/* Identifiers, in the form common to most programming languages. */
@@ -742,6 +839,28 @@ TOKEN BlueCommentToken = {
FALSE, /* don't need to see end delimiter twice to stop */
};
+TOKEN PythonCommentToken = {
+ "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 */
+ FALSE, /* token allowed anywhere, not just start of line */
+ { "#" }, /* 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) */
+ FALSE, /* end delimiter does not have to be at line start */
+ FALSE, /* don't need to see end delimiter twice to stop */
+};
+
/*****************************************************************************/
/* */
@@ -841,6 +960,7 @@ TOKEN BlueCommentEscapeToken = {
};
+
/*****************************************************************************/
/* */
/* Tokens which are fixed strings, hence simpler than the above. */
@@ -934,6 +1054,10 @@ TOKEN ImpliesToken = FixedToken("=>", "implies @A @PO");
TOKEN StarToken = NoParameterToken("*", "{@PA}");
TOKEN MinusToken = NoParameterToken("-", "{@PM}");
TOKEN EiffelDotToken = NoParameterToken(".", "{@PD}");
+TOKEN PythonPowerToken = FixedToken( "**", "@PO" ) ;
+TOKEN PythonBitLeftShiftToken = FixedToken( "<<", "@PO" ) ;
+TOKEN PythonBitRightShiftToken = FixedToken( ">>", "@PO" ) ;
+TOKEN PythonBacktickToken = FixedToken( "`", "@PO" ) ;
/*****************************************************************************/
@@ -2311,6 +2435,83 @@ LANGUAGE CLanguage = {
};
+/* Tokens, keywords taken from the on-line documentation supplied with Python
+ * 1.5.1 */
+LANGUAGE PythonLanguage = {
+ { "Python", "python" },
+ "python", "@Python",
+ NO_MATCH_ERROR,
+ { &BackSlashToken,
+ &PythonDblStringToken, &PythonSnglStringToken,
+ &PythonTriSnglStringToken, &PythonTriDblStringToken,
+ &PythonCommentToken, &IdentifierToken, &NumberToken,
+ &PlusToken, &MinusToken, &StarToken, &PythonPowerToken,
+ &SlashToken, &PercentToken, &PythonBitLeftShiftToken,
+ &PythonBitRightShiftToken, &AmpersandToken, &BarToken,
+ &HatToken, &CircumToken, &LessToken, &GreaterToken,
+ &LessEqualToken, &GreaterEqualToken, &BlueNotEqualToken,
+ &CNotEqualToken,
+ &LeftParenToken, &RightParenToken, &LeftBraceToken,
+ &RightBraceToken, &LeftBracketToken, &RightBracketToken,
+ &CommaToken, &ColonToken, &DotToken, &PythonBacktickToken,
+ &EqualToken, &SemicolonToken,
+ },
+
+ {
+ /* Keywords */
+ "and", "del", "for", "is", "raise",
+ "assert", "elif", "from", "lambda", "return",
+ "break", "else", "global", "not", "try",
+ "class", "except", "if", "or", "while",
+ "continue", "exec", "import", "pass",
+ "def", "finally", "in", "print",
+ /* Built-ins */
+ "None",
+ /* Built-in Exceptions */
+ "Exception", "StandardError", "ArithmeticError", "LookupError",
+ "AssertionError", "AttributeError", "EOFError", "FloatingPointError",
+ "IOError", "ImportError", "IndexError", "KeyError", "KeyboardInterrupt",
+ "MemoryError", "NameError", "OverflowError", "RuntimeError", "SyntaxError",
+ "SystemError", "SystemExit", "TypeError", "ValueError", "ZeroDivisionError",
+ /* Built-in Functions */
+ "__import__",
+ "abs", "apply",
+ "callable", "chr", "cmp", "coerce", "compile", "complex",
+ "delattr", "dir", "divmod",
+ "eval", "execfile",
+ "filter", "float",
+ "getattr", "globals",
+ "hasattr", "hash", "hex",
+ "id", "input", "intern", "int", "isinstance", "issubclass",
+ "len", "list", "locals", "long",
+ "map", "max", "min",
+ "oct", "open", "ord",
+ "pow",
+ "range", "raw_input", "reduce", "reload", "repr", "round",
+ "setattr", "slice", "str",
+ "tuple", "type",
+ "vars",
+ "xrange",
+ /* Built-in Modules */
+ "__builtin__", "__main__",
+ "al", "array", "audioop",
+ "binascii",
+ "cPickle", "cStringIO", "cd", "cmath", "crypt",
+ "dbm",
+ "fcntl", "fl", "fm",
+ "gdbm", "gl", "grp",
+ "imageop", "imgfile", "imp",
+ "jpeg",
+ "marshal", "math", "md5", "mpz",
+ "operator",
+ "parser", "posix", "pwd",
+ "re", "regex", "resource", "rgbimg", "rotor",
+ "select", "signal", "socket", "struct", "sunaudiodev", "sys", "syslog",
+ "termios", "thread", "time",
+ "zlib",
+ }
+};
+
/*****************************************************************************/
/* */
/* Eiffel and Blue */
@@ -2557,6 +2758,7 @@ LANGUAGE *languages[] = {
& EiffelLanguage,
& PerlLanguage,
& PodLanguage,
+ & PythonLanguage,
};
diff --git a/whatsnew b/whatsnew
index b775655..6545791 100644
--- a/whatsnew
+++ b/whatsnew
@@ -273,12 +273,18 @@ Changes and new features introduced in Version 3.22 [3 June 2000]
Chapters without page breaks option (see @ChapterStartPages, User's Guide)
Font includes all in page setups now (of interest to implementors only)
+Changes and new features introduced in Version 3.23 [24 June 2000]
+
+ Bug fixes, including Uwe's fix of the nasty bug reported by Matej Cepl,
+ and my fix of a table running headers bug reported by Matthew Neumann.
+ Cross links (see User's Guide, Cross References and Links section)
+ New symbols for expert users: @LinkSource and @LinkDest
+ @Python symbol for typesetting Python programs using prg2lout.
Things that ought to be done but haven't been done yet
- PDF-like features in PostScript output
Various improvements/bug fixes for PDF output
Review Uwe's proposal for moving word row marks to the baseline
Jeff Kingston
-3 June 2000
+24 June 2000
diff --git a/z01.c b/z01.c
index 8c694e4..48da157 100644
--- a/z01.c
+++ b/z01.c
@@ -1,6 +1,6 @@
/*@z01.c:Supervise:StartSym, AllowCrossDb, etc.@******************************/
/* */
-/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.22) */
+/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.23) */
/* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */
/* */
/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */
@@ -778,6 +778,8 @@ int main(int argc, char *argv[])
load(KW_SINCGRAPHIC, SINCGRAPHIC, FALSE, TRUE, FALSE, DEFAULT_PREC);
load(KW_PLAINGRAPHIC, PLAIN_GRAPHIC, TRUE, TRUE, FALSE, DEFAULT_PREC);
load(KW_GRAPHIC, GRAPHIC, TRUE, TRUE, FALSE, DEFAULT_PREC);
+ load(KW_LINK_SOURCE, LINK_SOURCE, TRUE, TRUE, FALSE, DEFAULT_PREC);
+ load(KW_LINK_DEST, LINK_DEST, TRUE, TRUE, FALSE, DEFAULT_PREC);
load(KW_CROSS, CROSS, TRUE, TRUE, FALSE, CROSSOP_PREC);
load(KW_FORCE_CROSS, FORCE_CROSS, TRUE, TRUE, FALSE, CROSSOP_PREC);
load(KW_NULL, NULL_CLOS, FALSE, FALSE, TRUE, NO_PREC );
@@ -825,6 +827,7 @@ int main(int argc, char *argv[])
/* close various modules */
BackEnd->PrintAfterLastPage();
+ BackEnd->LinkCheck();
CrossClose();
CloseFiles();
diff --git a/z02.c b/z02.c
index a7abeed..f55f401 100644
--- a/z02.c
+++ b/z02.c
@@ -1,6 +1,6 @@
/*@z02.c:Lexical Analyser:Declarations@***************************************/
/* */
-/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.22) */
+/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.23) */
/* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */
/* */
/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */
diff --git a/z03.c b/z03.c
index f215a53..eca204e 100644
--- a/z03.c
+++ b/z03.c
@@ -1,6 +1,6 @@
/*@z03.c:File Service:Declarations, no_fpos@******************************** */
/* */
-/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.22) */
+/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.23) */
/* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */
/* */
/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */
diff --git a/z04.c b/z04.c
index b31d6e4..3c91112 100644
--- a/z04.c
+++ b/z04.c
@@ -1,6 +1,6 @@
/*@z04.c:Token Service:NewToken(), CopyTokenList()@***************************/
/* */
-/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.22) */
+/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.23) */
/* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */
/* */
/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */
@@ -216,6 +216,8 @@ FULL_CHAR *EchoToken(OBJECT x)
case SINCGRAPHIC:
case PLAIN_GRAPHIC:
case GRAPHIC:
+ case LINK_SOURCE:
+ case LINK_DEST:
case ACAT:
case HCAT:
case VCAT:
diff --git a/z05.c b/z05.c
index ff90b61..5b17d0a 100644
--- a/z05.c
+++ b/z05.c
@@ -1,6 +1,6 @@
/*@z05.c:Read Definitions:ReadLangDef()@**************************************/
/* */
-/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.22) */
+/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.23) */
/* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */
/* */
/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */
@@ -259,6 +259,8 @@ static void ReadTokenList(OBJECT token, OBJECT res)
case SINCGRAPHIC:
case PLAIN_GRAPHIC:
case GRAPHIC:
+ case LINK_SOURCE:
+ case LINK_DEST:
case NOT_REVEALED:
NextToken(t, res);
diff --git a/z06.c b/z06.c
index aab419c..9c02207 100644
--- a/z06.c
+++ b/z06.c
@@ -1,6 +1,6 @@
/*@z06.c:Parser:PushObj(), PushToken(), etc.@*********************************/
/* */
-/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.22) */
+/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.23) */
/* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */
/* */
/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */
@@ -460,6 +460,8 @@ static BOOLEAN Reduce(void)
case SINCGRAPHIC:
case PLAIN_GRAPHIC:
case GRAPHIC:
+ case LINK_SOURCE:
+ case LINK_DEST:
case OPEN:
case RAW_VERBATIM:
case VERBATIM:
@@ -1042,6 +1044,8 @@ BOOLEAN defs_allowed, BOOLEAN transfer_allowed)
case SINCGRAPHIC:
case PLAIN_GRAPHIC:
case GRAPHIC:
+ case LINK_SOURCE:
+ case LINK_DEST:
/* clean up left context of t (these ops are all right associative) */
Shift(t, precedence(t), RIGHT_ASSOC,
diff --git a/z07.c b/z07.c
index d7c3d8c..9a50ec6 100644
--- a/z07.c
+++ b/z07.c
@@ -1,6 +1,6 @@
/*@z07.c:Object Service:SplitIsDefinite(), DisposeObject()@*******************/
/* */
-/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.22) */
+/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.23) */
/* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */
/* */
/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */
@@ -54,6 +54,7 @@ BOOLEAN SplitIsDefinite(OBJECT x)
/* DisposeObject(x) */
/* */
/* Dispose object x recursively, leaving intact any shared descendants. */
+/* We return a useless integer so that we can use this in expresssions. */
/* */
/*****************************************************************************/
@@ -67,6 +68,53 @@ int DisposeObject(OBJECT x)
} /* end DisposeObject */
+/*****************************************************************************/
+/* */
+/* DisposeSplitObject(x) */
+/* */
+/* Like DisposeObject(x), except that we assume that x is a SPLIT object, */
+/* and dispose of it carefully, making sure that any COL_THR and ROW_THR */
+/* objects underneath it are not corrupted. The problem with using just */
+/* DisposeObject() is that it will delete the link into the COL_THR or */
+/* ROW_THR but not the correspondiong link out of it. */
+/* */
+/* We assume that only one of the two possible threads is present, to */
+/* simplify the code. */
+/* */
+/*****************************************************************************/
+
+void DisposeSplitObject(OBJECT x)
+{ OBJECT y, col_child, row_child;
+ assert(type(x) == SPLIT, "DisposeSplitObject: type(x) != SPLIT!");
+
+ /* find the row child, if no intervening thread */
+ Child(y, DownDim(x, ROWM));
+ row_child = (type(y) == ROW_THR || type(y) == FIXED_ROW_THR) ? nilobj : y;
+
+ /* find the col child, if no intervening thread */
+ Child(y, DownDim(x, COLM));
+ col_child = (type(y) == COL_THR || type(y) == FIXED_COL_THR) ? nilobj : y;
+
+ /* this routine only works when exactly one of the two threads is present */
+ assert(col_child!=nilobj || row_child!=nilobj, "DisposeSplitObject: both!");
+ assert(col_child==nilobj || row_child==nilobj, "DisposeSplitObject: none!");
+
+ /* do the disposal */
+ if( row_child != nilobj )
+ {
+ assert(Up(row_child) != LastUp(row_child), "DisposeSplitObject row_child!");
+ DeleteLink(UpDim(row_child, COLM));
+ DisposeObject(x);
+ }
+ else if( col_child != nilobj )
+ {
+ assert(Up(col_child) != LastUp(col_child), "DisposeSplitObject col_child!");
+ DeleteLink(UpDim(col_child, ROWM));
+ DisposeObject(x);
+ }
+} /* end DisposeSplitObject */
+
+
/*@::MakeWord(), MakeWordTwo()@***********************************************/
/* */
/* OBJECT MakeWord(typ, str, pos) */
@@ -243,6 +291,8 @@ OBJECT CopyObject(OBJECT x, FILE_POS *pos)
case SINCGRAPHIC:
case PLAIN_GRAPHIC:
case GRAPHIC:
+ case LINK_SOURCE:
+ case LINK_DEST:
case VCAT:
case HCAT:
case ACAT:
@@ -391,6 +441,8 @@ OBJECT InsertObject(OBJECT x, OBJECT *ins, STYLE *style)
case VCOVER:
case PLAIN_GRAPHIC:
case GRAPHIC:
+ case LINK_SOURCE:
+ case LINK_DEST:
case ROTATE:
case BACKGROUND:
case SCALE:
diff --git a/z08.c b/z08.c
index 9f47d20..ceaad62 100644
--- a/z08.c
+++ b/z08.c
@@ -1,6 +1,6 @@
/*@z08.c:Object Manifest:ReplaceWithSplit()@**********************************/
/* */
-/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.22) */
+/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.23) */
/* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */
/* */
/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */
@@ -77,7 +77,9 @@ static OBJECT insert_split(OBJECT x, OBJECT bthr[2], OBJECT fthr[2])
ReplaceNode(res, x);
for( dim = COLM; dim <= ROWM; dim++ )
{ if( bthr[dim] || fthr[dim] )
- { New(new_op, dim == COLM ? COL_THR : ROW_THR);
+ {
+ debug0(DGP, D, " calling New(thread) from Manifest now");
+ New(new_op, dim == COLM ? COL_THR : ROW_THR);
thr_state(new_op) = NOTSIZED;
fwd(new_op, 1-dim) = 0; /* will hold max frame_size */
back(new_op, 1-dim) = 0; /* will hold max frame_origin */
@@ -753,7 +755,7 @@ OBJECT *enclose, BOOLEAN fcr)
AttachEnv(env, x);
SetTarget(hd);
enclose_obj(hd) = (has_enclose(sym) ? BuildEnclose(hd) : nilobj);
- headers(hd) = nilobj;
+ headers(hd) = dead_headers(hd) = nilobj;
x = hd;
threaded(x) = bthr[COLM] != nilobj || fthr[COLM] != nilobj;
ReplaceWithSplit(x, bthr, fthr);
@@ -1421,6 +1423,17 @@ OBJECT *enclose, BOOLEAN fcr)
case END_HEADER:
case CLEAR_HEADER:
+
+ /* give these objects a dummy child, just so that threads can attach */
+ /* to it and keep the thread code happy. Don't use ReplaceWithSplit */
+ /* because we don't want a split above a header */
+ y = MakeWord(WORD, STR_EMPTY, &fpos(x));
+ Link(x, y);
+ y = Manifest(y, env, style, bthr, fthr, target, crs, ok, need_expand,
+ enclose, fcr);
+ break;
+
+
case HSPAN:
case VSPAN:
@@ -2001,6 +2014,20 @@ OBJECT *enclose, BOOLEAN fcr)
break;
+ case LINK_SOURCE:
+ case LINK_DEST:
+
+ Child(y, LastDown(x));
+ y = Manifest(y, env, style, nbt, nft, target, crs, ok,FALSE,enclose,fcr);
+ StyleCopy(save_style(x), *style);
+ Child(y, Down(x));
+ y = Manifest(y, env, style, nbt, nft, &ntarget, crs, FALSE, FALSE,
+ &nenclose, fcr);
+ y = ReplaceWithTidy(y, TRUE);
+ ReplaceWithSplit(x, bthr, fthr);
+ break;
+
+
case INCGRAPHIC:
case SINCGRAPHIC:
diff --git a/z09.c b/z09.c
index f4095d2..afb3d9f 100644
--- a/z09.c
+++ b/z09.c
@@ -1,6 +1,6 @@
/*@z09.c:Closure Expansion:SearchEnv()@***************************************/
/* */
-/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.22) */
+/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.23) */
/* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */
/* */
/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */
diff --git a/z10.c b/z10.c
index 3e97b32..8f52836 100644
--- a/z10.c
+++ b/z10.c
@@ -1,6 +1,6 @@
/*@z10.c:Cross References:CrossInit(), CrossMake()@***************************/
/* */
-/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.22) */
+/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.23) */
/* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */
/* */
/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */
@@ -237,31 +237,23 @@ OBJECT GallTargEval(OBJECT sym, FILE_POS *dfpos)
/*****************************************************************************/
static OBJECT CrossGenTag(OBJECT x)
-{ FULL_CHAR buff[MAX_BUFF], *str1, *str2;
+{ FULL_CHAR buff[MAX_BUFF], *file_name;
OBJECT sym, res; FILE_NUM fnum;
int seq;
debug1(DCR, DD, "CrossGenTag( %s )", SymName(actual(x)));
sym = actual(x);
if( cross_sym(sym) == nilobj ) CrossInit(sym);
fnum = file_num(fpos(x));
- str1 = SymName(sym);
- str2 = FileName(fnum);
+ file_name = FileName(fnum);
seq = crtab_getnext(sym, fnum, &crossref_tab);
debug3(DCR, DDD, "%d = crtab_getnext(%s, %s, S); S =",
- seq, SymName(sym), FileName(fnum));
+ seq, SymName(sym), FileName(fnum));
ifdebug(DCR, DDD, crtab_debug(crossref_tab, stderr));
- if( StringLength(str1) + StringLength(str2) + 10 >= MAX_BUFF )
- Error(10, 3, "automatically generated tag %s.%s.%d is too long",
- FATAL, no_fpos, str1, str2, seq);
- /* *** make shorter, little risk
- StringCopy(buff, str1);
- StringCat(buff, AsciiToFull("."));
- *** */
- StringCopy(buff, StringInt(line_num(fpos(sym))));
- StringCat(buff, AsciiToFull("."));
- StringCat(buff, str2);
- StringCat(buff, AsciiToFull("."));
- StringCat(buff, StringInt(seq));
+ if( StringLength(file_name) + 20 >= MAX_BUFF )
+ Error(10, 3, "automatically generated tag is too long (contains %s)",
+ FATAL, &fpos(x), file_name);
+ sprintf( (char *) buff, "%d.%d.%s.%d",
+ file_num(fpos(sym)), line_num(fpos(sym)), file_name, seq);
res = MakeWord(QWORD, buff, &fpos(x));
debug2(DCR, DD, "CrossGenTag( %s ) returning %s", SymName(actual(x)), string(res));
return res;
diff --git a/z11.c b/z11.c
index 306e54f..f91df8d 100644
--- a/z11.c
+++ b/z11.c
@@ -1,6 +1,6 @@
/*@z11.c:Style Service:EchoStyle()@*******************************************/
/* */
-/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.22) */
+/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.23) */
/* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */
/* */
/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */
diff --git a/z12.c b/z12.c
index 9844a63..86c4ddd 100644
--- a/z12.c
+++ b/z12.c
@@ -1,6 +1,6 @@
/*@z12.c:Size Finder:MinSize()@***********************************************/
/* */
-/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.22) */
+/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.23) */
/* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */
/* */
/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */
@@ -127,7 +127,7 @@ static BOOLEAN BuildSpanner(OBJECT x)
}
for( link = NextDown(UpDim(x,ROWM)); link!=end_link; link = NextDown(link) )
{
- /* each of these components becomes @HSpan and is added to vspanner */
+ /* each of these components becomes @HSpan and is added to hspanner */
Child(y, link);
New(t, HSPAN);
FposCopy(fpos(t), fpos(y));
@@ -599,6 +599,8 @@ OBJECT MinSize(OBJECT x, int dim, OBJECT *extras)
case CLEAR_HEADER:
back(x, dim) = fwd(x, dim) = 0;
+ Child(y, Down(x));
+ back(y, dim) = fwd(y, dim) = 0;
break;
@@ -616,6 +618,8 @@ OBJECT MinSize(OBJECT x, int dim, OBJECT *extras)
case PLAIN_GRAPHIC:
case GRAPHIC:
+ case LINK_SOURCE:
+ case LINK_DEST:
Child(y, LastDown(x));
y = MinSize(y, dim, extras);
@@ -1193,7 +1197,7 @@ OBJECT MinSize(OBJECT x, int dim, OBJECT *extras)
b = f = 0;
for( link = Down(x); link != x; link = NextDown(link) )
{ Child(y, link);
- assert( type(y) != GAP_OBJ, "MinSize/COL_THR: GAP_OBJ!" );
+ assert( type(y) != GAP_OBJ, "MinSize/ROW_THR: GAP_OBJ!" );
if( type(y) != START_HVSPAN && type(y) != START_VSPAN &&
type(y) != HSPAN && type(y) != VSPAN )
{ y = MinSize(y, dim, extras);
@@ -1214,7 +1218,7 @@ OBJECT MinSize(OBJECT x, int dim, OBJECT *extras)
/* these will use back(x, dim) and fwd(x, dim) during sizing */
for( link = Down(x); link != x; link = NextDown(link) )
{ Child(y, link);
- assert( type(y) != GAP_OBJ, "MinSize/COL_THR: GAP_OBJ!" );
+ assert( type(y) != GAP_OBJ, "MinSize/ROW_THR: GAP_OBJ!" );
if( type(y) == START_HVSPAN || type(y) == START_VSPAN ||
type(y) == HSPAN || type(y) == VSPAN )
{ y = MinSize(y, dim, extras);
diff --git a/z13.c b/z13.c
index 7030592..dcf0dd6 100644
--- a/z13.c
+++ b/z13.c
@@ -1,6 +1,6 @@
/*@z13.c:Object Breaking:BreakJoinedGroup()@**********************************/
/* */
-/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.22) */
+/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.23) */
/* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */
/* */
/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */
@@ -704,6 +704,8 @@ OBJECT BreakObject(OBJECT x, CONSTRAINT *c)
case PLAIN_GRAPHIC:
case GRAPHIC:
+ case LINK_SOURCE:
+ case LINK_DEST:
Child(y, LastDown(x));
y = BreakObject(y, c);
diff --git a/z14.c b/z14.c
index 4875410..7dd4743 100644
--- a/z14.c
+++ b/z14.c
@@ -1,6 +1,6 @@
/*@z14.c:Fill Service:Declarations@*******************************************/
/* */
-/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.22) */
+/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.23) */
/* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */
/* */
/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */
diff --git a/z15.c b/z15.c
index 46c7c66..b53003f 100644
--- a/z15.c
+++ b/z15.c
@@ -1,6 +1,6 @@
/*@z15.c:Size Constraints:MinConstraint(), EnlargeToConstraint()@*************/
/* */
-/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.22) */
+/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.23) */
/* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */
/* */
/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */
@@ -479,6 +479,8 @@ void Constrained(OBJECT x, CONSTRAINT *xc, int dim, OBJECT *why)
{
case PLAIN_GRAPHIC:
case GRAPHIC:
+ case LINK_SOURCE:
+ case LINK_DEST:
case KERN_SHRINK:
case BEGIN_HEADER:
case SET_HEADER:
@@ -613,7 +615,7 @@ void Constrained(OBJECT x, CONSTRAINT *xc, int dim, OBJECT *why)
/* we're saying that a spanner has a fixed constraint that is */
/* determined just once in its life */
CopyConstraint(*xc, constraint(y));
- debug2(DSC, DD, " Constrained(%s) = %s", Image(type(z)), EchoConstraint(xc));
+ debug2(DSC, DD, " Constrained(%s) = %s", Image(type(y)), EchoConstraint(xc));
/* SetConstraint(*xc, back(y, dim), size(y, dim), fwd(y, dim)); */
break;
@@ -765,6 +767,8 @@ void DebugConstrained(OBJECT x)
case SINCGRAPHIC:
case PLAIN_GRAPHIC:
case GRAPHIC:
+ case LINK_SOURCE:
+ case LINK_DEST:
case KERN_SHRINK:
case WORD:
case QWORD:
diff --git a/z16.c b/z16.c
index 0b15d36..76b3b52 100644
--- a/z16.c
+++ b/z16.c
@@ -1,6 +1,6 @@
/*@z16.c:Size Adjustment:SetNeighbours(), CatAdjustSize()@********************/
/* */
-/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.22) */
+/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.23) */
/* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */
/* */
/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */
@@ -398,6 +398,8 @@ void AdjustSize(OBJECT x, FULL_LENGTH b, FULL_LENGTH f, int dim)
case ONE_ROW:
case PLAIN_GRAPHIC:
case GRAPHIC:
+ case LINK_SOURCE:
+ case LINK_DEST:
case KERN_SHRINK:
case BACKGROUND:
diff --git a/z17.c b/z17.c
index 092212f..22dafe2 100644
--- a/z17.c
+++ b/z17.c
@@ -1,6 +1,6 @@
/*@z17.c:Gap Widths:GetGap()@*************************************************/
/* */
-/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.22) */
+/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.23) */
/* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */
/* */
/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */
diff --git a/z18.c b/z18.c
index 8ea41e3..cc16920 100644
--- a/z18.c
+++ b/z18.c
@@ -1,6 +1,6 @@
/*@z18.c:Galley Transfer:Declarations@****************************************/
/* */
-/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.22) */
+/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.23) */
/* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */
/* */
/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */
@@ -90,7 +90,8 @@ void TransferInit(OBJECT InitEnv)
/* construct destination for root galley */
New(up_hd, HEAD);
force_gall(up_hd) = FALSE;
- actual(up_hd) = enclose_obj(up_hd) = headers(up_hd) = limiter(up_hd) = nilobj;
+ actual(up_hd) = enclose_obj(up_hd) = limiter(up_hd) = nilobj;
+ headers(up_hd) = dead_headers(up_hd) = nilobj;
opt_components(up_hd) = opt_constraints(up_hd) = nilobj;
gall_dir(up_hd) = ROWM;
New(dest_index, RECEIVING);
@@ -108,7 +109,7 @@ void TransferInit(OBJECT InitEnv)
New(root_galley, HEAD);
force_gall(root_galley) = FALSE;
enclose_obj(root_galley) = limiter(root_galley) = nilobj;
- headers(root_galley) = nilobj;
+ headers(root_galley) = dead_headers(root_galley) = nilobj;
opt_components(root_galley) = opt_constraints(root_galley) = nilobj;
gall_dir(root_galley) = ROWM;
FposCopy(fpos(root_galley), *no_fpos);
@@ -199,7 +200,7 @@ OBJECT TransferBegin(OBJECT x)
AttachEnv(env, x);
SetTarget(hd);
enclose_obj(hd) = (has_enclose(actual(hd)) ? BuildEnclose(hd) : nilobj);
- headers(hd) = nilobj;
+ headers(hd) = dead_headers(hd) = nilobj;
/* search for destination for hd and release it */
Link(Up(target), index);
@@ -298,7 +299,7 @@ void TransferComponent(OBJECT x)
/* make the component into a galley */
New(hd, HEAD);
force_gall(hd) = FALSE;
- enclose_obj(hd) = limiter(hd) = headers(hd) = nilobj;
+ enclose_obj(hd) = limiter(hd) = headers(hd) = dead_headers(hd) = nilobj;
opt_components(hd) = opt_constraints(hd) = nilobj;
gall_dir(hd) = ROWM;
FposCopy(fpos(hd), fpos(x));
@@ -332,6 +333,7 @@ void TransferComponent(OBJECT x)
}
);
AdjustSize(dest, back(hd, COLM), fwd(hd, COLM), COLM);
+ debug0(DGS, D, "calling Promote(hd, hd) from TransferComponent");
Promote(hd, hd, dest_index, FALSE);
DeleteNode(hd);
@@ -401,7 +403,7 @@ void TransferEnd(OBJECT x)
/* 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) = nilobj;
+ enclose_obj(hd) = limiter(hd) = headers(hd) = dead_headers(hd) = nilobj;
opt_components(hd) = opt_constraints(hd) = nilobj;
gall_dir(hd) = ROWM;
actual(hd) = whereto(hd) = ready_galls(hd) = nilobj;
@@ -427,6 +429,7 @@ void TransferEnd(OBJECT x)
AdjustSize(dest, back(z, ROWM), fwd(z, ROWM), ROWM);
Interpose(dest, VCAT, hd, z);
}
+ debug0(DGS, D, "calling Promote(hd, hd) from TransferEnd");
Promote(hd, hd, dest_index, TRUE); DeleteNode(hd);
/* flush any widowed galleys attached to \Input */
diff --git a/z19.c b/z19.c
index 67ca484..8d33501 100644
--- a/z19.c
+++ b/z19.c
@@ -1,6 +1,6 @@
/*@z19.c:Galley Attaching:DetachGalley()@*************************************/
/* */
-/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.22) */
+/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.23) */
/* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */
/* */
/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */
@@ -323,7 +323,7 @@ int AttachGalley(OBJECT hd, OBJECT *inners, OBJECT *suspend_pt)
New(target_galley, HEAD);
force_gall(target_galley) = FALSE;
enclose_obj(target_galley) = limiter(target_galley) = nilobj;
- headers(target_galley) = nilobj;
+ headers(target_galley) = dead_headers(target_galley) = nilobj;
opt_components(target_galley) = opt_constraints(target_galley) = nilobj;
gall_dir(target_galley) = external_hor(target) ? COLM : ROWM;
FposCopy(fpos(target_galley), fpos(target));
@@ -563,6 +563,8 @@ int AttachGalley(OBJECT hd, OBJECT *inners, OBJECT *suspend_pt)
case SINCGRAPHIC:
case PLAIN_GRAPHIC:
case GRAPHIC:
+ case LINK_SOURCE:
+ case LINK_DEST:
case ACAT:
case HCAT:
case VCAT:
@@ -966,6 +968,8 @@ int AttachGalley(OBJECT hd, OBJECT *inners, OBJECT *suspend_pt)
StyleCopy(save_style(junk), save_style(dest));
adjust_cat(junk) = padjust(save_style(junk));
}
+ debug1(DGS, D, "calling Promote(hd, %s) from AttachGalley/ACCEPT",
+ link == hd ? "hd" : "NextDown(link)");
Promote(hd, link == hd ? hd : NextDown(link), dest_index, TRUE);
/* move target_galley into target */
@@ -974,6 +978,7 @@ int AttachGalley(OBJECT hd, OBJECT *inners, OBJECT *suspend_pt)
{ Child(z, LastDown(target_galley));
Interpose(target, VCAT, z, z);
}
+ debug0(DGS, D, "calling Promote(target_galley) from AttachGalley/ACCEPT");
Promote(target_galley, target_galley, target_index, TRUE);
DeleteNode(target_galley);
assert(Down(target_index)==target_index, "AttachGalley: target_ind");
diff --git a/z20.c b/z20.c
index e3c2785..7a6df5d 100644
--- a/z20.c
+++ b/z20.c
@@ -1,6 +1,6 @@
/*@z20.c:Galley Flushing:DebugInnersNames()@**********************************/
/* */
-/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.22) */
+/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.23) */
/* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */
/* */
/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */
@@ -81,16 +81,16 @@ FULL_CHAR *DebugInnersNames(OBJECT inners)
static void ParentFlush(BOOLEAN prnt_flush, OBJECT dest_index, BOOLEAN kill)
{ OBJECT prnt;
- debug3(DGF, D, "ParentFlush(%s, %s, %s)",
+ debug3(DGF, DD, "ParentFlush(%s, %s, %s)",
bool(prnt_flush), EchoIndex(dest_index), bool(kill));
if( prnt_flush )
{ Parent(prnt, Up(dest_index));
if( kill ) DeleteNode(dest_index);
- debug0(DGF, D, " calling FlushGalley from ParentFlush");
+ debug0(DGF, DD, " calling FlushGalley from ParentFlush");
FlushGalley(prnt);
}
else if( kill ) DeleteNode(dest_index)
- debug0(DGF, D, "ParentFlush returning.");
+ debug0(DGF, DD, "ParentFlush returning.");
} /* end ParentFlush */
@@ -140,7 +140,7 @@ void FlushGalley(OBJECT hd)
RESUME:
assert( type(hd) == HEAD, "FlushGalley: type(hd) != HEAD!" );
debug1(DGF, D, " resuming FlushGalley %s, hd =", SymName(actual(hd)));
- ifdebugcond(DGF, D, actual(hd) == nilobj, DebugGalley(hd, nilobj, 4));
+ ifdebugcond(DGF, DD, actual(hd) == nilobj, DebugGalley(hd, nilobj, 4));
assert( Up(hd) != hd, "FlushGalley: resume found no parent to hd!" );
@@ -172,7 +172,7 @@ void FlushGalley(OBJECT hd)
/* the galley is currently not attached to a destination */
attach_status = AttachGalley(hd, &inners, &y);
- debug1(DGF, D, " ex-AttachGalley inners: %s", DebugInnersNames(inners));
+ debug1(DGF, DD, " ex-AttachGalley inners: %s", DebugInnersNames(inners));
Parent(dest_index, Up(hd));
switch( attach_status )
{
@@ -210,7 +210,7 @@ void FlushGalley(OBJECT hd)
/* be flushed; in particular the galley must be unsized before */
if( inners != nilobj )
{
- debug0(DGF, D, " calling FlushInners() from FlushGalley (a)");
+ debug0(DGF, DD, " calling FlushInners() from FlushGalley (a)");
FlushInners(inners, nilobj);
goto RESUME;
}
@@ -250,7 +250,7 @@ void FlushGalley(OBJECT hd)
KillGalley(hd, TRUE);
if( inners != nilobj )
{
- debug0(DGF, D, " calling FlushInners() from FlushGalley (b)");
+ debug0(DGF, DD, " calling FlushInners() from FlushGalley (b)");
FlushInners(inners, nilobj);
}
else ParentFlush(prnt_flush, dest_index, remove_target);
@@ -277,10 +277,10 @@ void FlushGalley(OBJECT hd)
/* ifdebug(DGA, DD, DebugObject(prnt)); */
}
else prnt_flush = prnt_flush || blocked(dest_index);
- debug1(DGF, D, " force: prnt_flush = %s", bool(prnt_flush));
+ debug1(DGF, DD, " force: prnt_flush = %s", bool(prnt_flush));
if( inners != nilobj )
{
- debug0(DGF, D, " calling FlushInners() from FlushGalley (c)");
+ debug0(DGF, DD, " calling FlushInners() from FlushGalley (c)");
FlushInners(inners, nilobj);
}
goto RESUME;
@@ -481,7 +481,7 @@ void FlushGalley(OBJECT hd)
debug2(DOG, D, "FlushGalley(%s) de-optimizing %s",
"(CLOSE problem)", SymName(actual(hd)));
}
- debug1(DGF, D, " reject (a) %s", EchoObject(y));
+ debug1(DGF, DD, " reject (a) %s", EchoObject(y));
goto REJECT;
}
break;
@@ -530,6 +530,8 @@ void FlushGalley(OBJECT hd)
case SINCGRAPHIC:
case PLAIN_GRAPHIC:
case GRAPHIC:
+ case LINK_SOURCE:
+ case LINK_DEST:
case ACAT:
case HCAT:
case VCAT:
@@ -572,7 +574,7 @@ void FlushGalley(OBJECT hd)
Parent(dest_encl, NextDown(Up(dest)));
*** */
Parent(dest_encl, Up(dest));
- debug4(DGF, D, " flush dest = %s %s, dest_encl = %s %s",
+ debug4(DGF, DD, " flush dest = %s %s, dest_encl = %s %s",
Image(type(dest)), EchoObject(dest),
Image(type(dest_encl)), EchoObject(dest_encl));
assert( (dim==ROWM && type(dest_encl)==VCAT) ||
@@ -591,14 +593,14 @@ void FlushGalley(OBJECT hd)
perp_fwd = fwd(dest_encl, 1-dim);
Constrained(dest_encl, &dest_par_constr, dim, &why);
Constrained(dest_encl, &dest_perp_constr, 1-dim, &why);
- debug1(DGF, D, " setting dest_perp_constr = %s",
+ debug1(DGF, DD, " setting dest_perp_constr = %s",
EchoConstraint(&dest_perp_constr));
frame_size = constrained(dest_par_constr) ? bfc(dest_par_constr) :0;
}
if( !is_indefinite(type(y)) )
{
- ifdebugcond(DGF, D, mode(gap(prec_gap)) == NO_MODE,
+ ifdebugcond(DGF, DD, mode(gap(prec_gap)) == NO_MODE,
DebugGalley(hd, y, 4));
/* calculate parallel effect of adding y to dest */
@@ -606,14 +608,14 @@ void FlushGalley(OBJECT hd)
ActualGap(fwd(prec_def, dim), back(y, dim),
fwd(y, dim), &gap(prec_gap), frame_size,
dest_back + dest_fwd - fwd(prec_def, dim));
- debug5(DGF, D, " f = %s + %s - %s + %s (prec_gap %s)",
+ debug5(DGF, DD, " f = %s + %s - %s + %s (prec_gap %s)",
EchoLength(dest_fwd), EchoLength(fwd(y, dim)),
EchoLength(fwd(prec_def, dim)), EchoLength(
ActualGap(fwd(prec_def, dim), back(y, dim),
fwd(y, dim), &gap(prec_gap), frame_size,
dest_back + dest_fwd - fwd(prec_def, dim))
), EchoGap(&gap(prec_gap)));
- debug3(DGF, D, " b,f: %s,%s; dest_encl: %s",
+ debug3(DGF, DD, " b,f: %s,%s; dest_encl: %s",
EchoLength(dest_back), EchoLength(f),
EchoConstraint(&dest_par_constr));
@@ -661,7 +663,7 @@ void FlushGalley(OBJECT hd)
else opt_comps_permitted(hd) = MAX_FILES; /* a large number */
debug1(DOG, D, " REJECT permitted = %2d", opt_comps_permitted(hd));
}
- debug1(DGF, D, " reject (b) %s", EchoObject(y));
+ debug1(DGF, DD, " reject (b) %s", EchoObject(y));
goto REJECT;
}
@@ -690,12 +692,12 @@ void FlushGalley(OBJECT hd)
{
Error(20, 3, "component too wide for available space",
WARN, &fpos(y));
- debug6(DGF, D, " %s,%s [%s,%s] too wide for %s, y = %s",
+ debug6(DGF, DD, " %s,%s [%s,%s] too wide for %s, y = %s",
EchoLength(pb), EchoLength(pf),
EchoLength(back(y, 1-dim)), EchoLength(fwd(y, 1-dim)),
EchoConstraint(&dest_perp_constr), EchoObject(y));
}
- debug1(DGF, D, " reject (c) %s", EchoObject(y));
+ debug1(DGF, DD, " reject (c) %s", EchoObject(y));
goto REJECT;
}
@@ -712,7 +714,7 @@ void FlushGalley(OBJECT hd)
} /* end if( target_is_internal ) */
/* accept this component into dest, subject to following nobreaks */
- debug3(DGF, D, " t-accept %s %s %s", Image(type(y)), EchoObject(y),
+ debug3(DGF, DD, " t-accept %s %s %s", Image(type(y)), EchoObject(y),
EchoFilePos(&fpos(y)));
prnt_flush = prnt_flush || blocked(dest_index);
debug1(DGF, DDD, " prnt_flush = %s", bool(prnt_flush));
@@ -733,13 +735,14 @@ void FlushGalley(OBJECT hd)
if( promotable )
{
+ debug0(DGS, D, "calling Promote(hd, stop_link) from FlushGalley (ACCEPT)");
Promote(hd, NextDown(link), dest_index, TRUE);
if( need_adjust )
{ debug0(DSA, D, " calling AdjustSize from FlushGalley (ACCEPT)");
AdjustSize(dest_encl, dest_back, dest_fwd, dim);
AdjustSize(dest_encl, perp_back, perp_fwd, 1-dim);
}
- debug0(DGF, D, " calling FlushInners() from FlushGalley (d)");
+ debug0(DGF, DD, " calling FlushInners() from FlushGalley (d)");
FlushInners(inners, hd);
goto RESUME;
}
@@ -759,10 +762,12 @@ void FlushGalley(OBJECT hd)
/* EMPTY: */
/* galley is now completely accepted; clean up and exit */
- debug0(DGF, D, " galley empty now");
+ debug0(DGF, DD, " galley empty now");
if( inners != nilobj ) DisposeObject(inners);
if( Down(hd) != hd )
- { Promote(hd, hd, dest_index, TRUE);
+ {
+ debug0(DGS, D, "calling Promote(hd, hd) from FlushGalley (EMPTY)");
+ Promote(hd, hd, dest_index, TRUE);
if( need_adjust )
{ debug0(DSA, D, " calling AdjustSize from FlushGalley (EMPTY)");
AdjustSize(dest_encl, dest_back, dest_fwd, dim);
@@ -782,7 +787,7 @@ void FlushGalley(OBJECT hd)
SymName(actual(hd)), EchoConstraint(&constraint(z)));
}
DetachGalley(hd);
- debug0(DGF, D, " calling KillGalley from FlushGalley");
+ debug0(DGF, DD, " calling KillGalley from FlushGalley");
KillGalley(hd, TRUE);
ParentFlush(prnt_flush, dest_index, TRUE);
debug1(DGF,D,"] FlushGalley %s returning (emptied).", SymName(actual(hd)));
@@ -800,7 +805,9 @@ void FlushGalley(OBJECT hd)
assert(actual(dest) != PrintSym, "FlushGalley: reject print!");
if( inners != nilobj ) DisposeObject(inners);
if( stop_link != nilobj )
- { Promote(hd, stop_link, dest_index, TRUE);
+ {
+ debug0(DGS, D, "calling Promote(hd, stop_link) from FlushGalley (REJECT)");
+ Promote(hd, stop_link, dest_index, TRUE);
if( need_adjust )
{ debug0(DSA, D, " calling AdjustSize from FlushGalley (REJECT)");
AdjustSize(dest_encl, stop_back, stop_fwd, dim);
@@ -810,16 +817,20 @@ void FlushGalley(OBJECT hd)
/* if headers_seen, handle any headers not already handled by Promote() */
if( target_is_internal && headers_seen )
- { OBJECT z, zlink;
+ { OBJECT z, zlink, top_z;
for( zlink = hd; NextDown(zlink) != link; )
{
Child(z, NextDown(zlink));
+ top_z = z;
debug2(DGF, D, "FlushGalley(%s)/REJECT header-examining %s",
SymName(actual(hd)), EchoObject(z));
if( type(z) == SPLIT )
Child(z, DownDim(z, dim));
if( is_header(type(z)) )
- HandleHeader(hd, NextDown(zlink), z);
+ {
+ assert(top_z == z, "FlushGalley: header under SPLIT!");
+ HandleHeader(hd, z);
+ }
else
zlink = NextDown(zlink);
}
@@ -827,17 +838,22 @@ void FlushGalley(OBJECT hd)
/* now, if there are headers, dump them into the galley */
if( headers(hd) != nilobj )
- {
+ { int headers_count;
+
/* dump new copy of headers into top of galley */
assert(Down(headers(hd))!=headers(hd), "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) )
{ Child(y, link);
- debug2(DGF, D, "FlushGalley(%s)/REJECT linking %s",
+ debug2(DGS, D, "FlushGalley(%s)/REJECT linking %s",
SymName(actual(hd)), EchoObject(y));
+ assert(type(y)!=COL_THR && type(y)!=ROW_THR, "FlushGalley/REJECT THR!");
Link(tmp, y);
+ headers_count++;
}
+ assert(headers_count % 2 == 0, "FlushGalley/REJECT: headers_count!");
}
/* now detach and resume */
@@ -854,7 +870,9 @@ void FlushGalley(OBJECT hd)
debug1(DGF, D, " suspend %s", EchoIndex(y));
if( inners != nilobj ) DisposeObject(inners);
if( stop_link != nilobj )
- { Promote(hd, stop_link, dest_index, TRUE);
+ {
+ debug0(DGS, D, "calling Promote(hd, stop_link) from FlushGalley/SUSPEND");
+ Promote(hd, stop_link, dest_index, TRUE);
if( need_adjust )
{ debug0(DSA, D, " calling AdjustSize from FlushGalley (SUSPEND)");
AdjustSize(dest_encl, stop_back, stop_fwd, dim);
@@ -892,7 +910,7 @@ void FlushGalley(OBJECT hd)
SetTarget(hd2);
foll_or_prec(hd2) = GALL_FOLL;
enclose_obj(hd2) = (has_enclose(actual(hd2)) ? BuildEnclose(hd2) : nilobj);
- headers(hd2) = nilobj;
+ headers(hd2) = dead_headers(hd2) = nilobj;
Link(Up(y), index2);
/* set up the next ready galley for reading next time */
diff --git a/z21.c b/z21.c
index 4eb84e8..0ed538b 100644
--- a/z21.c
+++ b/z21.c
@@ -1,6 +1,6 @@
/*@z21.c:Galley Maker:SizeGalley()@*******************************************/
/* */
-/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.22) */
+/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.23) */
/* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */
/* */
/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */
diff --git a/z22.c b/z22.c
index 98dae04..f837bd3 100644
--- a/z22.c
+++ b/z22.c
@@ -1,6 +1,6 @@
/*@z22.c:Galley Service:Interpose()@******************************************/
/* */
-/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.22) */
+/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.23) */
/* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */
/* */
/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */
@@ -206,7 +206,7 @@ void ExpandRecursives(OBJECT recs)
/* 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) = nilobj;
+ enclose_obj(hd) = limiter(hd) = headers(hd) = dead_headers(hd) = nilobj;
opt_components(hd) = opt_constraints(hd) = nilobj;
gall_dir(hd) = horiz_galley(actual(target));
whereto(hd) = ready_galls(hd) = nilobj;
@@ -219,10 +219,10 @@ void ExpandRecursives(OBJECT recs)
&save_style(target), &non_c, nilobj, &n1, &newrecs, &inners, nilobj);
debug0(DCR, DDD, " as galley:");
ifdebug(DCR, DDD, DebugObject(hd));
- debug1(DGS, D, "[ ExpandRecursives calling Constrained(%s, COLM)",
+ debug1(DGS, DD, "[ ExpandRecursives calling Constrained(%s, COLM)",
EchoObject(target));
Constrained(target, &hc, COLM, &why);
- debug2(DGS, D, "] ExpandRecursives Constrained(%s, COLM) = %s",
+ debug2(DGS, DD, "] ExpandRecursives Constrained(%s, COLM) = %s",
EchoObject(target), EchoConstraint(&hc));
debug3(DCR, DD, " horizontal size: (%s, %s); constraint: %s",
EchoLength(back(hd, COLM)), EchoLength(fwd(hd, COLM)), EchoConstraint(&hc));
@@ -259,6 +259,7 @@ void ExpandRecursives(OBJECT recs)
AdjustSize(target, back(z, ROWM), fwd(z, ROWM), ROWM);
Interpose(target, VCAT, z, z);
}
+ debug0(DGS, D, "calling Promote(hd, hd) from ExpandRecursives");
Promote(hd, hd, target_index, TRUE); DeleteNode(hd);
DeleteNode(target_index);
if( inners != nilobj )
@@ -347,6 +348,8 @@ static OBJECT FindSplitInGalley(OBJECT hd)
case SINCGRAPHIC:
case PLAIN_GRAPHIC:
case GRAPHIC:
+ case LINK_SOURCE:
+ case LINK_DEST:
debug0(DGF, D, "FindSplitInGalley(hd) failing, hd =");
ifdebug(DGF, D, DebugObject(hd));
@@ -365,6 +368,46 @@ static OBJECT FindSplitInGalley(OBJECT hd)
} /* end FindSplitInGalley */
+/*****************************************************************************/
+/* */
+/* DisposeOneHeader(OBJECT link) */
+/* */
+/* Dispose one header pointed to by link, taking care not to disrupt */
+/* any thread objects that are tangled with the header. */
+/* */
+/*****************************************************************************/
+
+static void DisposeOneHeader(OBJECT link)
+{ OBJECT y;
+ Child(y, link);
+ if( type(y) == SPLIT )
+ { DeleteLink(link);
+ DisposeSplitObject(y);
+ }
+ else DisposeChild(link);
+} /* end DisposeOneHeader */
+
+
+/*****************************************************************************/
+/* */
+/* DisposeHeaders(OBJECT hd) */
+/* */
+/* Dispose the headers of hd. */
+/* */
+/*****************************************************************************/
+
+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) )
+ { DisposeOneHeader(Down(headers(hd)));
+ }
+ headers(hd) = nilobj;
+ }
+} /* end DisposeHeaders */
+
+
/*@::HandleHeader()@**********************************************************/
/* */
/* HandleHeader(hd, link, header) */
@@ -376,35 +419,36 @@ static OBJECT FindSplitInGalley(OBJECT hd)
/* Link is the link from hd to the header (it may actually link to a */
/* split object which then links to the header, but no matter). */
/* */
+/* Actually, we no longer allow a SPLIT object above a header, because */
+/* that means there is a COL_THR or ROW_THR above it and when we dispose */
+/* the header, Dispose is not able to dispose the appropriate child of the */
+/* COL_THR or ROW_THR. So Manifest() must not insert a SPLIT above a */
+/* header, and we check for that. */
+/* */
/*****************************************************************************/
-void HandleHeader(OBJECT hd, OBJECT link, OBJECT header)
-{ OBJECT g, y, z;
- debug3(DGS, D, "HandleHeader(%s, link, %s); headers = %s",
+void HandleHeader(OBJECT hd, OBJECT header)
+{ OBJECT g, z, gaplink;
+ debug3(DGS, D, "[ HandleHeader(%s, %s); headers = %s; galley:",
SymName(actual(hd)), EchoObject(header), EchoObject(headers(hd)));
+ ifdebug(DGS, D, DebugGalley(hd, nilobj, 2));
assert(is_header(type(header)), "HandleHeader: type(header)!");
+ assert(Up(header) == LastUp(header) && Up(header) != header,
+ "HandleHeader: header parents!");
switch( type(header) )
{
case CLEAR_HEADER:
/* clear out old headers, if any */
- if( headers(hd) != nilobj )
- {
- DisposeObject(headers(hd));
- headers(hd) = nilobj;
- }
+ DisposeHeaders(hd);
break;
case SET_HEADER:
- /* clear out old headers, if any */
- if( headers(hd) != nilobj )
- {
- DisposeObject(headers(hd));
- headers(hd) = nilobj;
- }
+ /* clear out old headers (not safe to dispose them yet), if any */
+ DisposeHeaders(hd);
/* NB NO BREAK! */
@@ -437,9 +481,15 @@ void HandleHeader(OBJECT hd, OBJECT link, OBJECT header)
KW_END_HEADER);
else
{
- DisposeChild(LastDown(headers(hd)));
+ /* 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!");
+ DisposeOneHeader(LastDown(headers(hd)));
if( Down(headers(hd)) == headers(hd) )
{ DisposeObject(headers(hd));
headers(hd) = nilobj;
@@ -449,14 +499,28 @@ void HandleHeader(OBJECT hd, OBJECT link, OBJECT header)
}
- /* get rid of header object and following gap now */
- Child(y, NextDown(link));
- assert(type(y) == GAP_OBJ, "Promote/HEADER: type(y) != GAP_OBJ!");
- DisposeChild(NextDown(link));
- DisposeChild(link);
- debug2(DGS, D, "HandleHeader returning; headers(%s) now %s",
- SymName(actual(hd)), EchoObject(headers(hd)));
+ /* 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)!");
+ if( type(header) == CLEAR_HEADER || type(header) == END_HEADER )
+ {
+ /* first disentangle child properly */
+ assert(Down(header) != header && Down(header) == LastDown(header), "HH!");
+ DisposeOneHeader(Down(header));
+ }
+ DisposeChild(Up(header));
+ 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));
} /* end HandleHeader */
@@ -482,12 +546,14 @@ void HandleHeader(OBJECT hd, OBJECT link, OBJECT header)
void Promote(OBJECT hd, OBJECT stop_link, OBJECT dest_index, BOOLEAN join_after)
{
/* these two variables refer to the root galley only */
- static BOOLEAN first = TRUE; /* TRUE when the first component not written */
+ static BOOLEAN first = TRUE; /* TRUE if first component unwritten */
static OBJECT page_label=nilobj; /* current page label object */
- OBJECT dest, link, y, z, tmp1, tmp2, why; FULL_CHAR *label_string;
+ OBJECT dest, link, y, z, tmp1, tmp2, why, top_y; FULL_CHAR *label_string;
+ FULL_LENGTH aback, afwd;
int dim;
- debug1(DGS, DD, "Promote(%s, stop_link)", SymName(actual(hd)));
+ debug1(DGS, D, "[ Promote(%s, stop_link):", SymName(actual(hd)));
+ ifdebug(DGS, D, DebugGalley(hd, stop_link, 2));
assert( type(hd) == HEAD, "Promote: hd!" );
assert( type(stop_link) == LINK || stop_link == hd, "Promote: stop_link!" );
@@ -498,6 +564,9 @@ void Promote(OBJECT hd, OBJECT stop_link, OBJECT dest_index, BOOLEAN join_after)
/* insert final gap if galley is ending */
if( stop_link != hd )
{ Child(y, stop_link);
+ if( type(y) != GAP_OBJ )
+ { ifdebug(DGS, D, DebugGalley(hd, stop_link, 2));
+ }
assert( type(y) == GAP_OBJ, "Promote: missing GAP_OBJ!" );
stop_link = NextDown(stop_link);
}
@@ -769,6 +838,8 @@ void Promote(OBJECT hd, OBJECT stop_link, OBJECT dest_index, BOOLEAN join_after)
case SINCGRAPHIC:
case PLAIN_GRAPHIC:
case GRAPHIC:
+ case LINK_SOURCE:
+ case LINK_DEST:
case ACAT:
case HCAT:
case ROW_THR:
@@ -786,7 +857,7 @@ void Promote(OBJECT hd, OBJECT stop_link, OBJECT dest_index, BOOLEAN join_after)
/* fix horizontally; work out which fonts needed */
SetLengthDim(COLM);
FixAndPrintObject(y, back(y, COLM), back(y, COLM), fwd(y, COLM),
- COLM, FALSE, 0, 0);
+ COLM, FALSE, 0, 0, &aback, &afwd);
/* print prefatory or page separating material, including fonts */
label_string = page_label != nilobj && is_word(type(page_label)) ?
@@ -813,7 +884,7 @@ void Promote(OBJECT hd, OBJECT stop_link, OBJECT dest_index, BOOLEAN join_after)
EchoLength(back(y,ROWM)), EchoLength(fwd(y, ROWM)));
SetLengthDim(ROWM);
FixAndPrintObject(y, back(y,ROWM), back(y, ROWM), fwd(y, ROWM),
- ROWM, FALSE, size(y, ROWM), 0);
+ ROWM, FALSE, size(y, ROWM), 0, &aback, &afwd);
}
DisposeChild(NextDown(link));
@@ -869,11 +940,15 @@ void Promote(OBJECT hd, OBJECT stop_link, OBJECT dest_index, BOOLEAN join_after)
dim = gall_dir(hd);
for( link = hd; NextDown(link) != stop_link; )
{ Child(y, NextDown(link));
- debug1(DGS, D, "ordinary promote examining %s", EchoObject(y));
+ debug1(DGS, DD, "ordinary promote examining %s", EchoObject(y));
+ top_y = y;
if( type(y) == SPLIT )
Child(y, DownDim(y, dim));
if( is_header(type(y)) )
- HandleHeader(hd, NextDown(link), y);
+ {
+ assert(top_y == y, "Promote: header under SPLIT!");
+ HandleHeader(hd, y);
+ }
else if( is_index(type(y)) )
MoveLink(NextDown(link), Up(dest_index), PARENT);
else link = NextDown(link);
@@ -886,7 +961,8 @@ void Promote(OBJECT hd, OBJECT stop_link, OBJECT dest_index, BOOLEAN join_after)
/* promote components */
TransferLinks(Down(hd), stop_link, link);
- debug0(DGS, DD, "Promote returning.");
+ debug0(DGS, D, "] Promote returning; galley:");
+ ifdebug(DGS, D, DebugGalley(hd, nilobj, 2));
} /* end Promote */
diff --git a/z23.c b/z23.c
index cc2955a..43c5e4c 100644
--- a/z23.c
+++ b/z23.c
@@ -1,6 +1,6 @@
/*@z23.c:Galley Printer:ScaleFactor()@****************************************/
/* */
-/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.22) */
+/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.23) */
/* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */
/* */
/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */
@@ -95,17 +95,18 @@ static FULL_LENGTH FindAdjustIncrement(OBJECT x, FULL_LENGTH frame_size,int dim)
/*@::FixAndPrintObject()@*****************************************************/
/* */
-/* FixAndPrintObject(x, xmk, xb, xf, dim, suppress, pg, count) */
+/* OBJECT FixAndPrintObject(x, xmk, xb, xf, dim, suppress, pg, count, */
+/* actual_back, actual_fwd) */
/* */
/* Fix the absolute position of object x in dimension dim, in such a way */
/* that the principal mark of x has coordinate xmk, and x has actual size */
-/* (xb, xf), where xb >= back(x, dim) and xf >= fwd(x, dim). */
+/* (xb, xf), where usually xb >= back(x, dim) and xf >= fwd(x, dim). */
/* */
/* Actually, in the case where x includes an object lying on a thread */
/* leading outside x, the final size of x may be different. Because */
-/* of this, the procedure sets back(x, dim) and fwd(x, dim) to the actual */
+/* of this, the procedure sets *actual_back and *actual_fwd to the actual */
/* size of x upon return. The caller assumes that x will exactly occupy */
-/* this space back(x, dim), fwd(x, dim). */
+/* this space (actual_back, actual_fwd). */
/* */
/* The suppress parameter is true if a temporary suppression of adjustment */
/* in this direction is in effect (because a neighbouring adjustment has */
@@ -121,21 +122,29 @@ static FULL_LENGTH FindAdjustIncrement(OBJECT x, FULL_LENGTH frame_size,int dim)
/* */
/* x is child number count of its parent (used by COL_THR and ROW_THR only) */
/* */
+/* FixAndPrintObject ordinarily returns the object passed to it; however */
+/* it occasionally replaces that object with another, and then it is the */
+/* replacement object that is returned. */
+/* */
/*****************************************************************************/
-void FixAndPrintObject(OBJECT x, FULL_LENGTH xmk, FULL_LENGTH xb,
- FULL_LENGTH xf, int dim, BOOLEAN suppress, FULL_LENGTH pg, int count)
-{ OBJECT y, link, prev, g, uplink, z, face, thr;
+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, fixed_thr, res, uplink, tmp;
FULL_LENGTH mk, ymk, frame_size, back_edge, yb, yf, inc, f;
+ FULL_LENGTH aback, afwd;
int i; float scale_factor; BOOLEAN jn;
- debug8(DGP, DD, "[ FixAndPrintObject(%s %s, %s, %s,%s, %s, %s, pg, %d)",
+ debug8(DGP, DD, "[ FixAndPrintObject(%s %s%s, %s, %s,%s, %s, %s, pg, count)",
Image(type(x)),
((type(x) == WORD || type(x) == QWORD) ? string(x) : STR_EMPTY),
+ EchoFilePos(&fpos(x)),
EchoLength(xmk), EchoLength(xb), EchoLength(xf),dimen(dim),
- (suppress == SUPPRESS ? "suppress" : "no_suppress"), count);
+ (suppress == SUPPRESS ? "suppress" : "no_suppress"));
debug2(DGP, DD, " size(x) = %s,%s; x =",
EchoLength(back(x, dim)), EchoLength(fwd(x, dim)));
ifdebug(DGP, DD, DebugObject(x));
+ res = x;
/*** start and stop debugging
if( dim == COLM && is_word(type(x)) &&
@@ -156,7 +165,7 @@ void FixAndPrintObject(OBJECT x, FULL_LENGTH xmk, FULL_LENGTH xb,
case CROSS:
case FORCE_CROSS:
- back(x, dim) = xb; fwd(x, dim) = xf;
+ *actual_back = xb; *actual_fwd = xf;
break;
@@ -172,6 +181,8 @@ void FixAndPrintObject(OBJECT x, FULL_LENGTH xmk, FULL_LENGTH xb,
save_mark(y) = xmk - back(thr, dim) + back(z, dim);
/* do the fix now if the first column is also the last one */
+ debug2(DGP, DD, " pre-inc spanner_fixed(y) = %d, spanner_count(y) = %d",
+ spanner_fixed(y), spanner_count(y));
if( ++spanner_fixed(y) == spanner_count(y) )
{
debug6(DGP, DD, " f+last SPAN: yf = max(%s + %s - %s, %s, %s - %s)",
@@ -180,13 +191,19 @@ void FixAndPrintObject(OBJECT x, FULL_LENGTH xmk, FULL_LENGTH xb,
EchoLength(bfc(constraint(y))), EchoLength(back(z, dim)));
yf = find_max(xmk + xf - save_mark(y), fwd(z, dim));
yf = find_max(yf, bfc(constraint(y)) - back(z, dim));
- FixAndPrintObject(z, save_mark(y), back(z, dim), yf, dim,FALSE,pg,1);
+ z = FixAndPrintObject(z, save_mark(y), back(z, dim), yf, dim,
+ FALSE, pg, 1, &aback, &afwd);
+ spanner_fixed(y) = 0; /* restart for if printed again */
}
+ *actual_back = back(x, dim); *actual_fwd = fwd(x, dim);
}
else
{
- FixAndPrintObject(y, xmk, xb, xf, dim, suppress, pg, count);
- back(x, dim) = back(y, dim); fwd(x, dim) = fwd(y, dim);
+ debug6(DGP, DD, "%s alternate FixAndPrintObject(%s, %s, %s, %s, %s, ..)",
+ Image(type(x)), Image(type(y)), EchoLength(xmk), EchoLength(xb),
+ EchoLength(xf), dimen(dim));
+ y = FixAndPrintObject(y, xmk, xb, xf, dim, suppress, pg, count,
+ actual_back, actual_fwd);
}
break;
@@ -195,9 +212,12 @@ void FixAndPrintObject(OBJECT x, FULL_LENGTH xmk, FULL_LENGTH xb,
case VSPAN:
/* do the fix on the last one */
- CountChild(y, DownDim(x, dim), count);
- if( type(y) == HSPANNER || type(y) == VSPANNER )
+ if( (dim == COLM) == (type(x) == HSPAN) )
{
+ CountChild(y, DownDim(x, dim), count);
+ assert(type(y) == HSPANNER || type(y) == VSPANNER, "FAPO HSPAN/VSPAN!");
+ debug2(DGP, DD, " pre-inc spanner_fixed(y) = %d, spanner_count(y) = %d",
+ spanner_fixed(y), spanner_count(y));
if( ++spanner_fixed(y) == spanner_count(y) )
{
Child(z, Down(y));
@@ -207,7 +227,10 @@ void FixAndPrintObject(OBJECT x, FULL_LENGTH xmk, FULL_LENGTH xb,
EchoLength(bfc(constraint(y))), EchoLength(back(z, dim)));
yf = find_max(xmk + xf - save_mark(y), fwd(z, dim));
yf = find_max(yf, bfc(constraint(y)) - back(z, dim));
- FixAndPrintObject(z, save_mark(y), back(z, dim), yf, dim,FALSE,pg,1);
+ z = FixAndPrintObject(z, save_mark(y), back(z, dim), yf, dim,
+ FALSE, pg, 1, &aback, &afwd);
+ *actual_back = back(x, dim); *actual_fwd = fwd(x, dim);
+ spanner_fixed(y) = 0; /* restart for if printed again */
}
}
break;
@@ -233,24 +256,13 @@ void FixAndPrintObject(OBJECT x, FULL_LENGTH xmk, FULL_LENGTH xb,
}
else
{
- debug4(DGP, D, /* underline(x) == UNDER_UNDEF, */
- " FAPO %s %s %s (underline = %s)", EchoFilePos(&fpos(x)),
- Image(type(x)),
- string(x), underline(x) == UNDER_OFF ? "UNDER_OFF" :
- underline(x) == UNDER_ON ? "UNDER_ON" : "UNDER_UNDEF");
- assert( underline(x) == UNDER_OFF || underline(x) == UNDER_ON,
- "FixAndPrintObject: underline(x)!" );
if( string(x)[0] != '\0' )
{ BackEnd->PrintWord(x, word_save_mark(x), pg - xmk);
- if( underline(x) == UNDER_ON )
- {
- FontWordSize(x); /* to restore fwd(x, COLM) */
- BackEnd->PrintUnderline(word_font(x), word_save_mark(x),
- word_save_mark(x) + fwd(x, COLM), pg - xmk);
- }
+ /* NB if this word is to be underlined, it will be already enclosed
+ in an ACAT by Manifest, and that ACAT will do the underlining */
}
}
- back(x, dim) = xb; fwd(x, dim) = xf;
+ *actual_back = xb; *actual_fwd = xf;
break;
@@ -260,12 +272,13 @@ void FixAndPrintObject(OBJECT x, FULL_LENGTH xmk, FULL_LENGTH xb,
CountChild(y, Down(x), count);
if( (dim == COLM) == (type(x) == WIDE) )
{ yf = bfc(constraint(x)) - back(y, dim);
- FixAndPrintObject(y, xmk, back(y,dim), yf, dim, NO_SUPPRESS, pg,count);
- back(x, dim) = xb; fwd(x, dim) = xf;
+ y = FixAndPrintObject(y, xmk, back(y,dim), yf, dim, NO_SUPPRESS, pg,
+ count, &aback, &afwd);
+ *actual_back = xb; *actual_fwd = xf;
}
else
- { FixAndPrintObject(y, xmk, xb, xf, dim, suppress, pg, count);
- back(x, dim) = back(y, dim); fwd(x, dim) = fwd(y, dim);
+ { y = FixAndPrintObject(y, xmk, xb, xf, dim, suppress, pg, count,
+ actual_back, actual_fwd);
}
break;
@@ -281,16 +294,17 @@ void FixAndPrintObject(OBJECT x, FULL_LENGTH xmk, FULL_LENGTH xb,
ymk = xmk - f;
yb = find_max(0, xb - f);
yf = find_max(0, xf + f);
- FixAndPrintObject(y, ymk, yb, yf, dim, suppress, pg, count);
+ y = FixAndPrintObject(y, ymk, yb, yf, dim, suppress, pg, count,
+ &aback, &afwd);
/* recalculate the size of x as in MinSize */
f = FindShift(x, y, dim);
- back(x, dim) = find_min(MAX_FULL_LENGTH, find_max(0, back(y, dim) + f));
- fwd(x, dim) = find_min(MAX_FULL_LENGTH, find_max(0, fwd(y, dim) - f));
+ *actual_back = find_min(MAX_FULL_LENGTH, find_max(0, aback + f));
+ *actual_fwd = find_min(MAX_FULL_LENGTH, find_max(0, afwd - f));
}
else
- { FixAndPrintObject(y, xmk, xb, xf, dim, suppress, pg, count);
- back(x, dim) = back(y, dim); fwd(x, dim) = fwd(y, dim);
+ { y = FixAndPrintObject(y, xmk, xb, xf, dim, suppress, pg, count,
+ actual_back, actual_fwd);
}
break;
@@ -300,13 +314,13 @@ void FixAndPrintObject(OBJECT x, FULL_LENGTH xmk, FULL_LENGTH xb,
CountChild(y, Down(x), count);
if( (dim == COLM) == (type(x) == HCONTRACT) )
- { FixAndPrintObject(y, xmk, back(y,dim), fwd(y,dim), dim,
- NO_SUPPRESS, pg, count);
- back(x, dim) = xb; fwd(x, dim) = xf;
+ { y = FixAndPrintObject(y, xmk, back(y,dim), fwd(y,dim), dim,
+ NO_SUPPRESS, pg, count, &aback, &afwd);
+ *actual_back = xb; *actual_fwd = xf;
}
else
- { FixAndPrintObject(y, xmk, xb, xf, dim, suppress, pg, count);
- back(x, dim) = back(y, dim); fwd(x, dim) = fwd(y, dim);
+ { y = FixAndPrintObject(y, xmk, xb, xf, dim, suppress, pg, count,
+ actual_back, actual_fwd);
}
break;
@@ -320,12 +334,13 @@ void FixAndPrintObject(OBJECT x, FULL_LENGTH xmk, FULL_LENGTH xb,
CountChild(y, Down(x), count);
if( (dim == COLM) == (type(x) == ONE_COL || type(x) == HEXPAND) )
- { FixAndPrintObject(y, xmk, xb, xf, dim, NO_SUPPRESS, pg, count);
- back(x, dim) = xb; fwd(x, dim) = xf;
+ { y = FixAndPrintObject(y, xmk, xb, xf, dim, NO_SUPPRESS, pg, count,
+ &aback, &afwd);
+ *actual_back = xb; *actual_fwd = xf;
}
else
- { FixAndPrintObject(y, xmk, xb, xf, dim, suppress, pg, count);
- back(x, dim) = back(y, dim); fwd(x, dim) = fwd(y, dim);
+ { y = FixAndPrintObject(y, xmk, xb, xf, dim, suppress, pg, count,
+ actual_back, actual_fwd);
}
break;
@@ -337,21 +352,22 @@ void FixAndPrintObject(OBJECT x, FULL_LENGTH xmk, FULL_LENGTH xb,
if( BackEnd->scale_avail )
{
if( dim == COLM )
- FixAndPrintObject(y, xmk, xb, xf, dim, NO_SUPPRESS, pg, count);
+ y = FixAndPrintObject(y, xmk, xb, xf, dim, NO_SUPPRESS, pg, count,
+ &aback, &afwd);
else if( (scale_factor = ScaleFactor(xb+xf, size(y, ROWM))) > 0 )
{ BackEnd->SaveGraphicState(y);
BackEnd->CoordTranslate(0,
pg - (xmk - xb + (FULL_LENGTH) (back(y, ROWM) * scale_factor)));
BackEnd->CoordScale(1.0, scale_factor);
- FixAndPrintObject(y, 0, back(y,ROWM), fwd(y,ROWM), dim,
- NO_SUPPRESS, 0, count);
+ y = FixAndPrintObject(y, 0, back(y,ROWM), fwd(y,ROWM), dim,
+ NO_SUPPRESS, 0, count, &aback, &afwd);
BackEnd->RestoreGraphicState();
}
else if( !is_word(type(y)) || string(y)[0] != '\0' )
Error(23, 1, "object deleted (it cannot be scaled vertically)",
WARN, &fpos(x));
}
- back(x, dim) = xb; fwd(x, dim) = xf;
+ *actual_back = xb; *actual_fwd = xf;
break;
@@ -365,8 +381,8 @@ void FixAndPrintObject(OBJECT x, FULL_LENGTH xmk, FULL_LENGTH xb,
bc(constraint(x)) = xb;
fc(constraint(x)) = xf;
if( (scale_factor = ScaleFactor(xb+xf, size(y, COLM))) > 0 )
- FixAndPrintObject(y, 0, back(y, COLM), fwd(y, COLM), dim,
- NO_SUPPRESS, pg, count);
+ y = FixAndPrintObject(y, 0, back(y, COLM), fwd(y, COLM), dim,
+ NO_SUPPRESS, pg, count, &aback, &afwd);
else if( !is_word(type(y)) || string(y)[0] != '\0' )
Error(23, 2, "object deleted (it cannot be scaled horizontally)",
WARN, &fpos(y));
@@ -377,11 +393,12 @@ void FixAndPrintObject(OBJECT x, FULL_LENGTH xmk, FULL_LENGTH xb,
BackEnd->CoordTranslate(save_mark(x) - bc(constraint(x))
+ (FULL_LENGTH) (back(y, COLM)*scale_factor), 0);
BackEnd->CoordScale(scale_factor, 1.0);
- FixAndPrintObject(y, xmk, xb, xf, dim, NO_SUPPRESS, pg, count);
+ y = FixAndPrintObject(y, xmk, xb, xf, dim, NO_SUPPRESS, pg, count,
+ &aback, &afwd);
BackEnd->RestoreGraphicState();
}
}
- back(x, dim) = xb; fwd(x, dim) = xf;
+ *actual_back = xb; *actual_fwd = xf;
break;
@@ -395,7 +412,8 @@ void FixAndPrintObject(OBJECT x, FULL_LENGTH xmk, FULL_LENGTH xb,
save_mark(x) = xmk;
yb = xb * SF / bc(constraint(x));
yf = xf * SF / bc(constraint(x));
- FixAndPrintObject(y, 0, yb, yf, dim, NO_SUPPRESS, pg, count);
+ y = FixAndPrintObject(y, 0, yb, yf, dim, NO_SUPPRESS, pg, count,
+ &aback, &afwd);
}
else
{ assert( fc(constraint(x)) > 0, "FAPO: vertical scale factor!" );
@@ -405,15 +423,17 @@ void FixAndPrintObject(OBJECT x, FULL_LENGTH xmk, FULL_LENGTH xb,
BackEnd->CoordTranslate(save_mark(x), pg - xmk);
BackEnd->CoordScale( (float)bc(constraint(x))/SF,
(float)fc(constraint(x))/SF);
- FixAndPrintObject(y, 0, yb, yf, dim, NO_SUPPRESS, 0, count);
+ y = FixAndPrintObject(y, 0, yb, yf, dim, NO_SUPPRESS, 0, count,
+ &aback, &afwd);
BackEnd->RestoreGraphicState();
}
}
else if( bc(constraint(x)) == SF && fc(constraint(x)) == SF )
{
- FixAndPrintObject(y, xmk, xb, xf, dim, suppress, pg, count);
+ y = FixAndPrintObject(y, xmk, xb, xf, dim, suppress, pg, count,
+ &aback, &afwd);
}
- back(x, dim) = xb; fwd(x, dim) = xf;
+ *actual_back = xb; *actual_fwd = xf;
break;
@@ -421,12 +441,13 @@ void FixAndPrintObject(OBJECT x, FULL_LENGTH xmk, FULL_LENGTH xb,
CountChild(y, LastDown(x), count);
if( dim == COLM )
- { FixAndPrintObject(y, xmk, back(y,dim), fwd(y,dim), dim,
- NO_SUPPRESS, pg, count);
+ { y = FixAndPrintObject(y, xmk, back(y,dim), fwd(y,dim), dim,
+ NO_SUPPRESS, pg, count, &aback, &afwd);
+ *actual_back = back(x, dim); *actual_fwd = fwd(x, dim);
}
else
- { FixAndPrintObject(y, xmk, xb, xf, dim, suppress, pg, count);
- back(x, dim) = back(y, dim); fwd(x, dim) = fwd(y, dim);
+ { y = FixAndPrintObject(y, xmk, xb, xf, dim, suppress, pg, count,
+ actual_back, actual_fwd);
}
break;
@@ -436,9 +457,12 @@ void FixAndPrintObject(OBJECT x, FULL_LENGTH xmk, FULL_LENGTH xb,
/* this object has the size of its second child; but its first */
/* child gets printed too, in the same space */
CountChild(y, Down(x), count);
- FixAndPrintObject(y, xmk, xb, xf, dim, suppress, pg, count);
+ y = FixAndPrintObject(y, xmk, xb, xf, dim, suppress, pg, count,
+ &aback, &afwd);
CountChild(y, LastDown(x), count);
- FixAndPrintObject(y, xmk, xb, xf, dim, suppress, pg, count);
+ y = FixAndPrintObject(y, xmk, xb, xf, dim, suppress, pg, count,
+ &aback, &afwd);
+ *actual_back = back(x, dim); *actual_fwd = fwd(x, dim);
break;
@@ -453,7 +477,8 @@ void FixAndPrintObject(OBJECT x, FULL_LENGTH xmk, FULL_LENGTH xb,
SetConstraint(colc, back(x,COLM), MAX_FULL_LENGTH, fwd(x,COLM));
SetConstraint(rowc, back(x,ROWM), MAX_FULL_LENGTH, fwd(x,ROWM));
RotateConstraint(&yc, y, sparec(constraint(x)), &colc, &rowc,COLM);
- FixAndPrintObject(y, 0, bc(yc), fc(yc), COLM,NO_SUPPRESS,pg,count);
+ y = FixAndPrintObject(y, 0, bc(yc), fc(yc), COLM, NO_SUPPRESS, pg,
+ count, &aback, &afwd);
}
else
{ CONSTRAINT colc, rowc, yc;
@@ -463,13 +488,14 @@ void FixAndPrintObject(OBJECT x, FULL_LENGTH xmk, FULL_LENGTH xb,
SetConstraint(colc, back(x,COLM), MAX_FULL_LENGTH, fwd(x,COLM));
SetConstraint(rowc, back(x,ROWM), MAX_FULL_LENGTH, fwd(x,ROWM));
RotateConstraint(&yc, y, sparec(constraint(x)), &colc, &rowc, ROWM);
- FixAndPrintObject(y, 0, bc(yc), fc(yc), ROWM, NO_SUPPRESS,0,count);
+ y = FixAndPrintObject(y, 0, bc(yc), fc(yc), ROWM, NO_SUPPRESS, 0,
+ count, &aback, &afwd);
BackEnd->RestoreGraphicState();
}
}
else if( sparec(constraint(x)) == 0 )
- FixAndPrintObject(y, xmk, xb, xf, dim, suppress, pg, count);
- back(x, dim) = xb; fwd(x, dim) = xf;
+ y = FixAndPrintObject(y,xmk,xb,xf,dim,suppress,pg,count,&aback,&afwd);
+ *actual_back = xb; *actual_fwd = xf;
break;
@@ -480,12 +506,13 @@ void FixAndPrintObject(OBJECT x, FULL_LENGTH xmk, FULL_LENGTH xb,
{
if( dim == COLM )
{
- back(x, dim) = xb;
+ back(x, dim) = xb; /* NB state change here */
fwd(x, dim) = xf;
save_mark(x) = xmk - back(x, dim);
debug2(DGP, DD, "PLAIN_GRAPHIC COLM storing size %s, %s",
EchoLength(back(x, dim)), EchoLength(fwd(x, dim)));
- FixAndPrintObject(y, xmk, xb, xf, dim, suppress, pg, count);
+ y = FixAndPrintObject(y, xmk, xb, xf, dim, suppress, pg, count,
+ &aback, &afwd);
}
else
{ OBJECT tmp, pre, post;
@@ -499,15 +526,16 @@ void FixAndPrintObject(OBJECT x, FULL_LENGTH xmk, FULL_LENGTH xb,
fwd(x, dim) = xf;
BackEnd->PrintPlainGraphic(pre, save_mark(x),
pg - (xmk - back(x, dim)), x);
- FixAndPrintObject(y, xmk, xb, xf, dim, suppress, pg, count);
+ y = FixAndPrintObject(y, xmk, xb, xf, dim, suppress, pg, count,
+ &aback, &afwd);
if( post != nilobj )
BackEnd->PrintPlainGraphic(post, save_mark(x),
pg - (xmk - back(x, dim)), x);
}
}
else
- FixAndPrintObject(y, xmk, xb, xf, dim, suppress, pg, count);
- back(x, dim) = xb; fwd(x, dim) = xf;
+ y = FixAndPrintObject(y, xmk,xb,xf,dim,suppress,pg,count,&aback,&afwd);
+ *actual_back = xb; *actual_fwd = xf;
break;
@@ -524,12 +552,13 @@ void FixAndPrintObject(OBJECT x, FULL_LENGTH xmk, FULL_LENGTH xb,
if( font_page(face) < font_curr_page ) FontPageUsed(face);
}
- back(x, dim) = xb;
+ back(x, dim) = xb; /* NB state change here */
fwd(x, dim) = xf;
debug2(DGP, DD, "GRAPHIC COLM storing size %s, %s",
EchoLength(back(x, dim)), EchoLength(fwd(x, dim)));
save_mark(x) = xmk - back(x, COLM);
- FixAndPrintObject(y, xb, xb, xf, dim, NO_SUPPRESS, pg, count);
+ y = FixAndPrintObject(y, xb, xb, xf, dim, NO_SUPPRESS, pg, count,
+ &aback, &afwd);
}
else
{ OBJECT tmp, pre, post;
@@ -546,14 +575,38 @@ void FixAndPrintObject(OBJECT x, FULL_LENGTH xmk, FULL_LENGTH xb,
pg - (xmk + fwd(x, ROWM)));
BackEnd->PrintGraphicObject(pre);
BackEnd->RestoreGraphicState();
- FixAndPrintObject(y, xb, xb, xf, dim, NO_SUPPRESS, xb + xf, count);
+ y = FixAndPrintObject(y, xb, xb, xf, dim, NO_SUPPRESS, xb + xf,
+ count, &aback, &afwd);
if( post != nilobj ) BackEnd->PrintGraphicObject(post);
BackEnd->RestoreGraphicState();
}
}
else
- FixAndPrintObject(y, xmk, xb, xf, dim, suppress, pg, count);
- back(x, dim) = xb; fwd(x, dim) = xf;
+ y = FixAndPrintObject(y, xmk,xb,xf,dim,suppress,pg,count,&aback,&afwd);
+ *actual_back = xb; *actual_fwd = xf;
+ break;
+
+
+ case LINK_SOURCE:
+ case LINK_DEST:
+
+ CountChild(y, LastDown(x), count);
+ if( dim == COLM )
+ save_mark(x) = xmk;
+ else
+ { Child(z, Down(x));
+ if( type(x) == LINK_SOURCE )
+ BackEnd->LinkSource(z, save_mark(x) - back(x, COLM),
+ (pg - xmk) - xf, save_mark(x) + fwd(x, COLM),
+ (pg - xmk) + xb);
+ else
+ BackEnd->LinkDest(z, save_mark(x) - back(x, COLM),
+ (pg - xmk) - xf, save_mark(x) + fwd(x, COLM),
+ (pg - xmk) + xb);
+ }
+ y = FixAndPrintObject(y, xmk, xb, xf, dim, NO_SUPPRESS, pg, count,
+ &aback, &afwd);
+ *actual_back = xb; *actual_fwd = xf;
break;
@@ -579,15 +632,16 @@ void FixAndPrintObject(OBJECT x, FULL_LENGTH xmk, FULL_LENGTH xb,
else if( incgraphic_ok(x) )
BackEnd->PrintGraphicInclude(x, save_mark(x), pg - xmk);
}
- back(x, dim) = xb; fwd(x, dim) = xf;
+ *actual_back = xb; *actual_fwd = xf;
break;
case SPLIT:
link = DownDim(x, dim); CountChild(y, link, count);
- FixAndPrintObject(y, xmk, xb, xf, dim, suppress, pg, count);
- back(x, dim) = back(y, dim); fwd(x, dim) = fwd(y, dim);
+ y = FixAndPrintObject(y, xmk, find_max(back(y, dim), xb),
+ find_max(fwd(y, dim), xf), dim, suppress, pg, count,
+ actual_back, actual_fwd);
break;
@@ -604,15 +658,21 @@ void FixAndPrintObject(OBJECT x, FULL_LENGTH xmk, FULL_LENGTH xb,
if( link != x )
{
- /* handle the special case of a 0rt gap at the beginning (left */
- /* justify) by converting it to 0ie but increasing fwd(prev) */
- /* to the max. possible */
+ /*******************************************************************/
+ /* */
+ /* handle the special case of a 0rt gap at the beginning (left */
+ /* justify) by converting it to 0ie but increasing fwd(prev) to */
+ /* the maximum possible */
+ /* */
+ /*******************************************************************/
+
NextDefiniteWithGap(x, link, y, g, jn);
if( link != x && mode(gap(g)) == TAB_MODE &&
units(gap(g)) == AVAIL_UNIT && width(gap(g)) == 0 )
{
debug2(DGP, DD, " FAPO-CAT converting 0rt (back(x, dim) %s, xb %s)",
EchoLength(back(x, dim)), EchoLength(xb));
+ /* NB state change here */
fwd(prev, dim) += xb - back(x, dim);
back(x, dim) = xb;
mode(gap(g)) = EDGE_MODE;
@@ -620,24 +680,37 @@ void FixAndPrintObject(OBJECT x, FULL_LENGTH xmk, FULL_LENGTH xb,
}
FirstDefinite(x, link, prev, jn);
- /* the frame size is the total width actually available */
- frame_size = back(x, dim) + xf;
+ /*******************************************************************/
+ /* */
+ /* Initialize the following variables: */
+ /* */
+ /* frame_size the total width actually available */
+ /* */
+ /* back_edge where the first element begins */
+ /* */
+ /* inc the adjust increment, used when adjusting gaps */
+ /* */
+ /* mk where the mark of prev is to go */
+ /* */
+ /*******************************************************************/
- /* back_edge is where the first element begins */
+ frame_size = back(x, dim) + xf;
back_edge = xmk - back(x, dim);
-
- /* inc is the adjust increment, used when adjusting gaps */
if( adjust_cat(x) && !suppress )
inc = FindAdjustIncrement(x, frame_size, dim);
else inc = 0;
-
mk = back_edge + back(prev, dim);
- debug4(DGP, DD, " FAPO-CAT back_edge %s, mk %s, framesize %s, inc %s",
+ debug4(DGP, DD, " FAPO-CAT back_edge %s, mk %s, frame %s, inc %s",
EchoLength(back_edge), EchoLength(mk), EchoLength(frame_size),
EchoLength(inc));
- NextDefiniteWithGap(x, link, y, g, jn);
+ /*******************************************************************/
+ /* */
+ /* Fix each element "prev" in turn along the cat operator */
+ /* */
+ /*******************************************************************/
+ NextDefiniteWithGap(x, link, y, g, jn);
while( link != x )
{
if( mode(gap(g)) == TAB_MODE && units(gap(g)) == AVAIL_UNIT &&
@@ -647,45 +720,57 @@ void FixAndPrintObject(OBJECT x, FULL_LENGTH xmk, FULL_LENGTH xb,
debug5(DGP,D," FAPO (a) calling FAPO(%s, %s, %s, max(%s, %s))",
Image(type(prev)), EchoLength(mk), EchoLength(back(prev, dim)),
EchoLength(fwd(prev, dim)), EchoLength(xmk+xf-mk-size(y,dim)));
- FixAndPrintObject(prev, mk, back(prev, dim),
+ prev = FixAndPrintObject(prev, mk, back(prev, dim),
find_max(fwd(prev, dim), xmk+xf-mk - size(y, dim)),
- dim, NO_SUPPRESS, pg, count);
+ dim, NO_SUPPRESS, pg, count, &aback, &afwd);
}
else
{
debug5(DGP, DD, " FAPO-CAT (b) calling FAPO(%s, %s, %s, %s+%s)",
Image(type(prev)), EchoLength(mk), EchoLength(back(prev, dim)),
EchoLength(fwd(prev, dim)), EchoLength(inc));
- FixAndPrintObject(prev, mk, back(prev, dim), fwd(prev, dim) + inc,
- dim, NO_SUPPRESS, pg, count);
+ prev = FixAndPrintObject(prev, mk, back(prev, dim),
+ fwd(prev, dim) + inc, dim, NO_SUPPRESS, pg, count,&aback,&afwd);
}
- /* NB fwd(prev, dim) may be changed by the call to FAPO */
- mk += ActualGap(fwd(prev, dim), back(y, dim), fwd(y, dim), &gap(g),
+ mk += ActualGap(afwd, back(y, dim), fwd(y, dim), &gap(g),
frame_size, mk - back_edge);
prev = y;
NextDefiniteWithGap(x, link, y, g, jn);
}
+
+ /*******************************************************************/
+ /* */
+ /* At end, fix last element in conformity with "suppress" */
+ /* and set *actual_back and *actual_fwd. */
+ /* */
+ /*******************************************************************/
+
if( suppress )
{
debug4(DGP, DD, " FAPO-CAT (c) calling FAPO(%s, %s, %s, %s)",
Image(type(prev)), EchoLength(mk), EchoLength(back(prev, dim)),
EchoLength(fwd(prev, dim)));
- FixAndPrintObject(prev, mk, back(prev, dim), fwd(prev, dim),
- dim, NO_SUPPRESS, pg, count);
+ prev = FixAndPrintObject(prev, mk, back(prev, dim), fwd(prev, dim),
+ dim, NO_SUPPRESS, pg, count, &aback, &afwd);
}
else
{
- debug5(DGP, DD," FAPO-CAT (d) calling FAPO(%s, %s, %s, max(%s, %s))",
+ debug5(DGP, DD," FAPO-CAT (d) calls FAPO(%s, %s, %s, max(%s, %s))",
Image(type(prev)), EchoLength(mk), EchoLength(back(prev, dim)),
EchoLength(fwd(prev, dim)), EchoLength(xmk + xf - mk));
- FixAndPrintObject(prev, mk, back(prev,dim),
+ ifdebug(DGP, DD, DebugObject(prev));
+ prev = FixAndPrintObject(prev, mk, back(prev,dim),
find_max(fwd(prev, dim), xmk + xf - mk),
- dim, NO_SUPPRESS, pg, count);
+ dim, NO_SUPPRESS, pg, count, &aback, &afwd);
}
- back(x, dim) = find_max(back(x, dim), xb);
- fwd(x, dim) = mk + fwd(prev, dim) - back_edge - back(x, dim);
+ *actual_back = find_max(back(x, dim), xb);
+ *actual_fwd = mk + fwd(prev, dim) - back_edge - *actual_back;
+ debugcond4(DGP, DD, type(x) == HCAT,
+ "HCAT original (%s, %s) to actual (%s, %s)",
+ EchoLength(back(x, dim)), EchoLength(fwd(x, dim)),
+ EchoLength(*actual_back), EchoLength(*actual_fwd));
}
- else back(x, dim) = xb, fwd(x, dim) = xf;
+ else *actual_back = xb, *actual_fwd = xf;
debug0(DGP, DD, "] FAPO-CAT returning.");
}
else
@@ -702,7 +787,7 @@ void FixAndPrintObject(OBJECT x, FULL_LENGTH xmk, FULL_LENGTH xb,
m = y;
start_group = link;
dble_found = !jn;
- debug4(DGP, DD, " starting first group %s (%sdbl_found): b = %s, f = %s",
+ debug4(DGP, DD, " starting first group %s (%sdbl_found): b %s, f %s",
Image(type(y)), dble_found ? "" : "not ",
EchoLength(b), EchoLength(f));
@@ -714,14 +799,14 @@ void FixAndPrintObject(OBJECT x, FULL_LENGTH xmk, FULL_LENGTH xb,
/* finish off and fix the group ending just before g */
debug2(DGP, DD, " finishing group: b = %s, f = %s",
EchoLength(b), EchoLength(f));
- FixAndPrintObject(m, xmk+b, b, xf-b, dim,
- NO_SUPPRESS, pg, count);
+ m = FixAndPrintObject(m, xmk+b, b, xf-b, dim,
+ NO_SUPPRESS, pg, count, &aback, &afwd);
b = back(m, dim); f = fwd(m, dim);
for( zlink = start_group; zlink != link; zlink=NextDown(zlink) )
{ CountChild(z, zlink, count);
if( !is_definite(type(z)) || z == m ) continue;
- FixAndPrintObject(z, xmk + b, b, xf - b, dim,
- SUPPRESS, pg, count);
+ z = FixAndPrintObject(z, xmk + b, b, xf - b, dim,
+ SUPPRESS, pg, count, &aback, &afwd);
b = find_max(b, back(z, dim)); f = find_max(f, fwd(z, dim));
}
dlen = find_max(dlen, b + f);
@@ -755,31 +840,34 @@ void FixAndPrintObject(OBJECT x, FULL_LENGTH xmk, FULL_LENGTH xb,
/* finish off and fix this last group */
debug2(DGP, DD, " finishing last group: b = %s, f = %s",
EchoLength(b), EchoLength(f));
- FixAndPrintObject(m, xmk+b, b, xf - b, dim, NO_SUPPRESS, pg,count);
+ m = FixAndPrintObject(m, xmk+b, b, xf - b, dim, NO_SUPPRESS, pg,
+ count, &aback, &afwd);
b = back(m, dim); f = fwd(m, dim);
for( zlink = start_group; zlink != x; zlink = NextDown(zlink) )
{ CountChild(z, zlink, count);
if( !is_definite(type(z)) || z == m ) continue;
- FixAndPrintObject(z, xmk+b, b, xf - b, dim, SUPPRESS, pg, count);
+ z = FixAndPrintObject(z, xmk+b, b, xf - b, dim, SUPPRESS, pg,
+ count, &aback, &afwd);
b = find_max(b, back(z, dim)); f = find_max(f, fwd(z, dim));
}
dlen = find_max(dlen, b + f);
- back(x, dim) = 0; fwd(x, dim) = dlen;
+ *actual_back = 0; *actual_fwd = dlen;
}
else
{
/* finish off and fix this last and only group */
debug2(DGP, DD, " finishing last and only group: b = %s, f = %s",
EchoLength(b), EchoLength(f));
- FixAndPrintObject(m, xmk, xb, xf, dim, NO_SUPPRESS, pg, count);
- b = back(m, dim); f = fwd(m, dim);
+ m = FixAndPrintObject(m, xmk, xb, xf, dim, NO_SUPPRESS, pg, count,
+ &b, &f);
for( zlink = start_group; zlink != x; zlink = NextDown(zlink) )
{ CountChild(z, zlink, count);
if( !is_definite(type(z)) || z == m ) continue;
- FixAndPrintObject(z, xmk, xb, xf, dim, SUPPRESS, pg, count);
- b = find_max(b, back(z, dim)); f = find_max(f, fwd(z, dim));
+ z = FixAndPrintObject(z, xmk, xb, xf, dim, SUPPRESS, pg, count,
+ &aback, &afwd);
+ b = find_max(b, aback); f = find_max(f, afwd);
}
- back(x, dim) = b; fwd(x, dim) = f;
+ *actual_back = b; *actual_fwd = f;
}
}
}
@@ -793,7 +881,8 @@ void FixAndPrintObject(OBJECT x, FULL_LENGTH xmk, FULL_LENGTH xb,
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;
+ BOOLEAN underlining; int underline_xstart;
+ FONT_NUM underline_font; COLOUR_NUM underline_colour;
OBJECT urec, last_bad_gap;
@@ -814,7 +903,11 @@ void FixAndPrintObject(OBJECT x, FULL_LENGTH xmk, FULL_LENGTH xb,
/*********************************************************************/
FirstDefinite(x, link, y, jn);
- if( link == x ) break; /* no definite children, nothing to print */
+ if( link == x )
+ {
+ *actual_back = back(x, dim); *actual_fwd = fwd(x, dim);
+ break; /* no definite children, nothing to print */
+ }
/*** nasty bug finder
{ OBJECT ff = y;
@@ -890,8 +983,8 @@ void FixAndPrintObject(OBJECT x, FULL_LENGTH xmk, FULL_LENGTH xb,
WARN, &fpos(x), EchoLength(size(x, COLM)),
(float) bc(constraint(prnt)) / SF, EchoLength(frame_size));
}
- FixAndPrintObject(prnt, xmk, back(prnt, dim), fwd(prnt, dim), dim,
- NO_SUPPRESS, pg, count);
+ prnt = FixAndPrintObject(prnt, xmk, back(prnt, dim), fwd(prnt, dim), dim,
+ NO_SUPPRESS, pg, count, &aback, &afwd);
}
else
{
@@ -920,32 +1013,34 @@ void FixAndPrintObject(OBJECT x, FULL_LENGTH xmk, FULL_LENGTH xb,
else
{
- /*********************************************************************/
- /* */
- /* The line may be displayed in one of four ways: centred, right- */
- /* justified, adjusted, or none of the above (i.e. left justified). */
- /* An overfull line is always adjusted; otherwise, the line will */
- /* be centred or right justified if the display style asks for it; */
- /* otherwise, the line will be adjusted if adjust_cat(x) == TRUE */
- /* (i.e. there is an enclosing @PAdjust) or if the display style is */
- /* DO_ADJUST (meaning that this line is one of a paragraph set in */
- /* the adjust or outdent break style, other than the last line); */
- /* otherwise, the line is left justified. */
- /* */
- /* The second step is to decide which of these four cases holds */
- /* for this line, and to record the decision in these variables: */
- /* */
- /* will_adjust TRUE if the adjusted style applies; in this */
- /* case, variables adjust_inc and inc will be */
- /* set to the appropriate adjustment value; */
- /* */
- /* adjust_indent If centring or right justification applies, */
- /* the indent to produce this, else zero. */
- /* */
- /* NB adjust_inc may be negative, if the optimal paragraph breaker */
- /* has chosen to shrink some gaps. */
- /* */
- /*********************************************************************/
+ /********************************************************************/
+ /* */
+ /* The line may be displayed in one of four ways: centred, right- */
+ /* justified, adjusted, or none of the above (i.e. left justified).*/
+ /* An overfull line is always adjusted; otherwise, the line will */
+ /* be centred or right justified if the display style asks for it; */
+ /* otherwise, the line will be adjusted if adjust_cat(x) == TRUE */
+ /* (i.e. there is an enclosing @PAdjust) or if the display style is*/
+ /* DO_ADJUST (meaning that this line is one of a paragraph set in */
+ /* the adjust or outdent break style, other than the last line); */
+ /* otherwise, the line is left justified. */
+ /* */
+ /* The second step is to decide which of these four cases holds */
+ /* for this line, and to record the decision in these variables: */
+ /* */
+ /* will_adjust TRUE if the adjusted style applies; in this */
+ /* case, variables adjust_inc and inc will be */
+ /* set to the appropriate adjustment value; */
+ /* */
+ /* adjust_indent If centring or right justification applies, */
+ /* the indent to produce this, else zero. */
+ /* */
+ /* NB adjust_inc may be negative, if the optimal paragraph breaker */
+ /* has chosen to shrink some gaps. */
+ /* */
+ /* NB we are assigning to adjust_cat here; is this a problem? */
+ /* */
+ /********************************************************************/
if( actual_size > frame_size )
{
@@ -987,18 +1082,18 @@ void FixAndPrintObject(OBJECT x, FULL_LENGTH xmk, FULL_LENGTH xb,
inc = find_max(adjust_inc, 0);
gaps_sofar = 0; /* number of gaps adjusted so far */
adjust_sofar = 0; /* total width of adjustments so far */
- debug2(DGP, DD, "will_adjust: adjustable_gaps = %d, adjust_inc = %s",
+ debug2(DGP, DD,"will_adjust: adjustable_gaps = %d, adjust_inc = %s",
adjustable_gaps, EchoLength(adjust_inc));
}
else will_adjust = FALSE;
- /*********************************************************************/
- /* */
- /* The third and final step is to traverse x, fixing subobjects. */
- /* Variable adjusting is true while adjusting is occurring. */
- /* */
- /*********************************************************************/
+ /********************************************************************/
+ /* */
+ /* The third and final step is to traverse x, fixing subobjects. */
+ /* Variable "adjusting" is true while adjusting is occurring. */
+ /* */
+ /********************************************************************/
underlining = FALSE;
adjusting = will_adjust && last_bad_gap == nilobj;
@@ -1011,9 +1106,8 @@ void FixAndPrintObject(OBJECT x, FULL_LENGTH xmk, FULL_LENGTH xb,
/* check for underlining */
if( underline(prev) == UNDER_ON )
{
- debug3(DGP, DD, " FAPO/ACAT1 underline() := %s for %s %s",
+ debug3(DGP, D, " FAPO/ACAT1 underline() := %s for %s %s",
bool(FALSE), Image(type(prev)), EchoObject(prev));
- underline(prev) = UNDER_OFF;
if( !underlining )
{
/* underlining begins here */
@@ -1022,17 +1116,20 @@ void FixAndPrintObject(OBJECT x, FULL_LENGTH xmk, FULL_LENGTH xb,
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));
underline_xstart = mk - back(prev, dim);
}
if( underline(g) == UNDER_OFF )
{
/* underlining ends here */
- debug2(DGP, DD, "underlining ends at %s %s",
+ debug2(DGP, D, "underlining ends at %s %s",
Image(type(prev)), EchoObject(prev));
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;
underlining = FALSE;
Link(Up(prev), urec);
}
@@ -1042,9 +1139,8 @@ void FixAndPrintObject(OBJECT x, FULL_LENGTH xmk, FULL_LENGTH xb,
if( adjusting && width(gap(g)) > 0 )
{ int tmp;
- FixAndPrintObject(prev, mk, back(prev, dim), fwd(prev, dim) + inc,
- dim, NO_SUPPRESS, pg, count);
-
+ prev = FixAndPrintObject(prev, mk, back(prev, dim),
+ fwd(prev, dim) + inc, dim, NO_SUPPRESS, pg, count,&aback,&afwd);
gaps_sofar++;
tmp = ((frame_size - actual_size) * gaps_sofar) / adjustable_gaps;
mk += save_actual_gap(g) + (tmp - adjust_sofar);
@@ -1052,8 +1148,8 @@ void FixAndPrintObject(OBJECT x, FULL_LENGTH xmk, FULL_LENGTH xb,
}
else
{
- FixAndPrintObject(prev, mk, back(prev, dim), fwd(prev, dim),
- dim, NO_SUPPRESS, pg, count);
+ prev = FixAndPrintObject(prev, mk, back(prev, dim), fwd(prev,dim),
+ dim, NO_SUPPRESS, pg, count, &aback, &afwd);
mk += save_actual_gap(g);
}
@@ -1067,17 +1163,16 @@ void FixAndPrintObject(OBJECT x, FULL_LENGTH xmk, FULL_LENGTH xb,
}
/* check for underlining */
- debugcond3(DGP, D, underline(prev) == UNDER_UNDEF,
+ debugcond3(DGP, DD, underline(prev) == UNDER_UNDEF,
" underlining is UNDER_UNDEF in %s: %s %s in para:",
EchoFilePos(&fpos(prev)), Image(type(prev)), EchoObject(prev));
- debugcond1(DGP, D, underline(prev)==UNDER_UNDEF, "%s", EchoObject(x));
+ debugcond1(DGP, DD, underline(prev)==UNDER_UNDEF, "%s",EchoObject(x));
assert( underline(prev) == UNDER_OFF || underline(prev) == UNDER_ON,
"FixAndPrint: underline(prev)!" );
if( underline(prev) == UNDER_ON )
{
- debug3(DGP, DD, " FAPO/ACAT1 underline() := %s for %s %s",
+ debug3(DGP, D, " FAPO/ACAT1 underline() := %s for %s %s",
bool(FALSE), Image(type(prev)), EchoObject(prev));
- underline(prev) = UNDER_OFF;
if( !underlining )
{
/* underlining begins here */
@@ -1086,6 +1181,8 @@ void FixAndPrintObject(OBJECT x, FULL_LENGTH xmk, FULL_LENGTH xb,
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));
underline_xstart = mk - back(prev, dim);
}
@@ -1096,14 +1193,15 @@ void FixAndPrintObject(OBJECT x, FULL_LENGTH xmk, FULL_LENGTH xb,
back(urec, COLM) = underline_xstart;
fwd(urec, COLM) = mk + fwd(prev, dim);
back(urec, ROWM) = underline_font;
+ fwd(urec, ROWM) = underline_colour;
underlining = FALSE;
Link(Up(prev), urec);
}
/* fix the last definite subobject, prev, which must exist */
- FixAndPrintObject(prev, mk, back(prev, dim),
+ prev = FixAndPrintObject(prev, mk, back(prev, dim),
frame_size - (mk - xmk) - back(x, dim),
- dim, NO_SUPPRESS, pg, count);
+ dim, NO_SUPPRESS, pg, count, &aback, &afwd);
}
}
@@ -1112,20 +1210,24 @@ void FixAndPrintObject(OBJECT x, FULL_LENGTH xmk, FULL_LENGTH xb,
if( !is_definite(type(y)) )
{
if( type(y) == UNDER_REC ) /* generate an underline now */
- BackEnd->PrintUnderline(back(y, ROWM), back(y, COLM),
+ { BackEnd->PrintUnderline(back(y, ROWM), fwd(y, ROWM), 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 */
+ }
continue;
}
- FixAndPrintObject(y, xmk, xb, xf, dim, NO_SUPPRESS, pg, count);
+ y = FixAndPrintObject(y, xmk, xb, xf, dim, NO_SUPPRESS, pg, count,
+ &aback, &afwd);
}
- back(x, dim) = xb; fwd(x, dim) = xf;
+ *actual_back = xb; *actual_fwd = xf;
break;
case COL_THR:
case ROW_THR:
- /* find and delete the child number count of y */
+ /* *** old code
assert( (type(x) == COL_THR) == (dim == COLM), "FixAndPrintObject: thr!" );
for( link = Down(x), uplink = Up(x), i = 1;
link != x && uplink != x && i < count;
@@ -1136,25 +1238,90 @@ void FixAndPrintObject(OBJECT x, FULL_LENGTH xmk, FULL_LENGTH xb,
Image(type(x)),
EchoLength(back(x, dim)), EchoLength(fwd(x, dim)),
i, Image(type(y)), EchoLength(back(y, dim)), EchoLength(fwd(y, dim)));
- MoveLink(uplink, link, CHILD); DeleteLink(link); /* IMPORTANT!!! */
+ MoveLink(uplink, link, CHILD); DeleteLink(link);
assert( type(y) != GAP_OBJ, "FAPO: THR!");
- /* assign size if not done previously */
- /* ***
- if( thr_state(x) != FINALSIZE && type(y) != START_HVSPAN &&
- type(y) != START_HSPAN && type(y) != START_VSPAN &&
- type(y) != HSPAN && type(y) != VSPAN )
- *** */
if( thr_state(x) != FINALSIZE )
{ back(x, dim) = xb; fwd(x, dim) = xf;
thr_state(x) = FINALSIZE;
}
- /* fix y */
- FixAndPrintObject(y, xmk, back(x, dim), fwd(x, dim), dim,
+ y = FixAndPrintObject(y, xmk, back(x, dim), fwd(x, dim), dim,
NO_SUPPRESS, pg, count);
if( Up(x) == x ) Dispose(x);
break;
+ *** */
+
+ /* convert everyone to FIXED_COL_THR or FIXED_ROW_THR as appropriate */
+ if( thr_state(x) == FINALSIZE )
+ debug1(DGP, D, "thr_state(%d)", (int) x);
+ assert(thr_state(x) != FINALSIZE, "FAPO/COL_THR: thr_state(x)!");
+ ifdebug(DGP, D,
+ link = Down(x);
+ uplink = Up(x);
+ while( link != x && uplink != x )
+ {
+ Parent(tmp, uplink);
+ debug1(DGP, D, "parnt: %s", EchoObject(tmp));
+ Child(tmp, link);
+ debug1(DGP, D, "child: %s", EchoObject(tmp));
+ link = NextDown(link);
+ uplink = NextUp(uplink);
+ }
+ while( uplink != x )
+ { Parent(tmp, uplink);
+ debug1(DGP, D, "extra parnt: %s", EchoObject(tmp));
+ uplink = NextUp(uplink);
+ }
+ while( link != x )
+ { Child(tmp, link);
+ debug1(DGP, D, "extra child: %s", EchoObject(tmp));
+ link = NextDown(link);
+ }
+ )
+ i = 1; res = nilobj;
+ while( Down(x) != x && Up(x) != x )
+ {
+ New(fixed_thr, type(x) == COL_THR ? FIXED_COL_THR : FIXED_ROW_THR);
+ MoveLink(Up(x), fixed_thr, CHILD);
+ MoveLink(Down(x), fixed_thr, PARENT);
+ back(fixed_thr, dim) = xb;
+ fwd(fixed_thr, dim) = xf;
+ if( count == i )
+ res = fixed_thr;
+ i++;
+ }
+ if( Up(x) != x || Down(x) != x )
+ {
+ debug2(DGP, D, "links problem at %s %d:", Image(type(x)), (int) x);
+ if( Up(x) != x )
+ {
+ Parent(tmp, Up(x));
+ debug1(DGP, D, "first parent is %s", EchoObject(tmp));
+ }
+ if( Down(x) != x )
+ {
+ Child(tmp, Down(x));
+ debug1(DGP, D, "first child is %s", EchoObject(tmp));
+ }
+ }
+ assert( Up(x) == x && Down(x) == x, "FAPO/COL_THR: x links!" );
+ Dispose(x);
+ assert(res != nilobj, "FixAndPrintObject: COL_THR res!");
+ x = res;
+ /* NB NO BREAK! */
+
+
+ case FIXED_COL_THR:
+ case FIXED_ROW_THR:
+
+ assert( (type(x) == FIXED_COL_THR) == (dim == COLM),
+ "FixAndPrintObject: fixed_thr!" );
+ CountChild(y, Down(x), count);
+ y = FixAndPrintObject(y, xmk, back(x, dim), fwd(x, dim), dim,
+ NO_SUPPRESS, pg, count, &aback, &afwd);
+ *actual_back = back(x, dim); *actual_fwd = fwd(x, dim);
+ break;
case BEGIN_HEADER:
@@ -1175,6 +1342,7 @@ void FixAndPrintObject(OBJECT x, FULL_LENGTH xmk, FULL_LENGTH xb,
} /* end switch */
- debug2(DGP, DD, "] FixAndPrintObject returning (size now %s,%s).",
- EchoLength(back(x, dim)), EchoLength(fwd(x, dim)));
+ debug2(DGP, DD, "] FixAndPrintObject returning (actual %s,%s).",
+ EchoLength(*actual_back), EchoLength(*actual_fwd));
+ return res;
} /* end FixAndPrintObject */
diff --git a/z24.c b/z24.c
index 2bb2abb..b2e17dc 100644
--- a/z24.c
+++ b/z24.c
@@ -1,6 +1,6 @@
/*@z24.c:Print Service:PrintInit()@*******************************************/
/* */
-/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.22) */
+/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.23) */
/* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */
/* */
/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */
diff --git a/z25.c b/z25.c
index 0a3c254..1a359d8 100644
--- a/z25.c
+++ b/z25.c
@@ -1,6 +1,6 @@
/*@z25.c:Object Echo:aprint(), cprint(), printnum()@**************************/
/* */
-/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.22) */
+/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.23) */
/* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */
/* */
/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */
@@ -266,6 +266,24 @@ static void echo(OBJECT x, unsigned outer_prec, int count)
break;
+ case FIXED_COL_THR:
+
+ aprint("{FC ");
+ CountChild(y, Down(x), count);
+ echo(y, NO_PREC, count);
+ aprint(" FC}");
+ break;
+
+
+ case FIXED_ROW_THR:
+
+ aprint("{FR ");
+ CountChild(y, Down(x), count);
+ echo(y, NO_PREC, count);
+ aprint(" FR}");
+ break;
+
+
case HSPANNER:
aprint("{HS ");
@@ -317,6 +335,7 @@ static void echo(OBJECT x, unsigned outer_prec, int count)
case ACAT: op = "&", prec = ACAT_PREC;
childcount = 0;
+ aprint("[[ ");
for( link = Down(x); link != x; link = NextDown(link) )
{ CountChild(y, link, count);
if( type(y) == GAP_OBJ )
@@ -325,7 +344,9 @@ static void echo(OBJECT x, unsigned outer_prec, int count)
continue;
}
childcount++;
+ aprint("[");
echo(y, prec, count);
+ aprint("]");
/* ***
if( link == Down(x) || link == LastDown(x) )
echo(y, prec, count);
@@ -335,6 +356,7 @@ static void echo(OBJECT x, unsigned outer_prec, int count)
}
*** */
}
+ aprint(" ]]");
break;
@@ -720,6 +742,8 @@ static void echo(OBJECT x, unsigned outer_prec, int count)
case SINCGRAPHIC:
case PLAIN_GRAPHIC:
case GRAPHIC:
+ case LINK_SOURCE:
+ case LINK_DEST:
case ROTATE:
case BACKGROUND:
case SCALE:
@@ -987,7 +1011,7 @@ FULL_CHAR *EchoIndex(OBJECT index)
/* Print overview of galley hd on stderr; mark pinpoint if found */
/* */
/*****************************************************************************/
-#define dprint(a, b, c) fprintf(stderr, "| %-7s %20s %s\n", a, b, c)
+#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;
@@ -1001,22 +1025,22 @@ void DebugGalley(OBJECT hd, OBJECT pinpt, int indent)
SymName(actual(hd)), SymName(whereto(hd)));
for( link = Down(hd); link != hd; link = NextDown(link) )
{ Child(y, link);
- if( y == pinpt )
- { fprintf(stderr, "++ %s ", Image(type(y)));
+ if( y == pinpt || link == pinpt )
+ { fprintf(stderr, "++ %d %s ", (int) y, Image(type(y)));
DebugObject(y);
}
else
if( type(y) == GAP_OBJ )
- dprint("gap_obj", Image(type(y)), EchoGap(&gap(y)));
+ eprint((int) y, "gap_obj", Image(type(y)), EchoGap(&gap(y)));
else if( is_index(type(y)) )
- dprint("index", Image(type(y)), "");
+ eprint((int) y, "index", Image(type(y)), "");
else if( is_definite(type(y)) )
- dprint("def_obj", Image(type(y)), is_word(type(y)) ? string(y):STR_EMPTY);
+ eprint((int) y, "def_obj", Image(type(y)), is_word(type(y)) ? string(y):STR_EMPTY);
else if( is_indefinite(type(y)) )
- dprint("indefin", Image(type(y)),
+ eprint((int) y, "indefin", Image(type(y)),
type(y) == CLOSURE ? SymName(actual(y)) : STR_EMPTY);
else
- dprint("unknown", Image(type(y)), "");
+ eprint((int) y, "unknown", Image(type(y)), "");
}
} /* end DebugGalley */
#endif
diff --git a/z26.c b/z26.c
index 0f16c5b..71b26c1 100644
--- a/z26.c
+++ b/z26.c
@@ -1,6 +1,6 @@
/*@z26.c:Echo Service:BeginString()@******************************************/
/* */
-/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.22) */
+/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.23) */
/* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */
/* */
/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */
@@ -156,6 +156,8 @@ FULL_CHAR *Image(unsigned int c)
case GAP_OBJ: return AsciiToFull("gap_obj");
case ROW_THR: return AsciiToFull("row_thr");
case COL_THR: return AsciiToFull("col_thr");
+ case FIXED_ROW_THR: return AsciiToFull("fixed_row_thr");
+ case FIXED_COL_THR: return AsciiToFull("fixed_col_thr");
case CLOSURE: return AsciiToFull("closure");
case NULL_CLOS: return KW_NULL;
case PAGE_LABEL: return KW_PAGE_LABEL;
@@ -241,6 +243,8 @@ FULL_CHAR *Image(unsigned int c)
case SINCGRAPHIC: return KW_SINCGRAPHIC;
case PLAIN_GRAPHIC: return KW_PLAINGRAPHIC;
case GRAPHIC: return KW_GRAPHIC;
+ case LINK_SOURCE: return KW_LINK_SOURCE;
+ case LINK_DEST: return KW_LINK_DEST;
case ACAT: return AsciiToFull("acat");
case HCAT: return AsciiToFull("hcat");
case VCAT: return AsciiToFull("vcat");
diff --git a/z27.c b/z27.c
index 9ec07bc..a8f55f2 100644
--- a/z27.c
+++ b/z27.c
@@ -1,6 +1,6 @@
/*@z27.c:Debug Service:Debug flags@*******************************************/
/* */
-/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.22) */
+/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.23) */
/* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */
/* */
/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */
diff --git a/z28.c b/z28.c
index d77ce0d..7cd4fd8 100644
--- a/z28.c
+++ b/z28.c
@@ -1,6 +1,6 @@
/*@z28.c:Error Service:ErrorInit(), ErrorSeen()@******************************/
/* */
-/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.22) */
+/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.23) */
/* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */
/* */
/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */
diff --git a/z29.c b/z29.c
index 4163e30..4f6d26f 100644
--- a/z29.c
+++ b/z29.c
@@ -1,6 +1,6 @@
/*@z29.c:Symbol Table:Declarations, hash()@***********************************/
/* */
-/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.22) */
+/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.23) */
/* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */
/* */
/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */
diff --git a/z30.c b/z30.c
index c0dd159..86d716c 100644
--- a/z30.c
+++ b/z30.c
@@ -1,6 +1,6 @@
/*@z30.c:Symbol uses:InsertUses()@********************************************/
/* */
-/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.22) */
+/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.23) */
/* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */
/* */
/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */
diff --git a/z31.c b/z31.c
index 86a62cc..0f14f5e 100644
--- a/z31.c
+++ b/z31.c
@@ -1,6 +1,6 @@
/*@z31.c:Memory Allocator:DebugMemory()@**************************************/
/* */
-/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.22) */
+/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.23) */
/* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */
/* */
/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */
@@ -181,6 +181,8 @@ void MemInit(void)
zz_lengths[ PAR ] =
zz_lengths[ ROW_THR ] =
zz_lengths[ COL_THR ] =
+ zz_lengths[ FIXED_ROW_THR] =
+ zz_lengths[ FIXED_COL_THR] =
zz_lengths[ HSPANNER ] =
zz_lengths[ VSPANNER ] =
zz_lengths[ ACAT ] =
@@ -264,6 +266,8 @@ void MemInit(void)
zz_lengths[ SINCGRAPHIC ] =
zz_lengths[ PLAIN_GRAPHIC] =
zz_lengths[ GRAPHIC ] =
+ zz_lengths[ LINK_SOURCE ] =
+ zz_lengths[ LINK_DEST ] =
ceiling(sizeof(struct closure_type), sizeof(ALIGN));
zz_lengths[ HEAD ] =
diff --git a/z32.c b/z32.c
index cf27efa..c5dc2d4 100644
--- a/z32.c
+++ b/z32.c
@@ -1,6 +1,6 @@
/*@z32.c:Counter Service:Next()@**********************************************/
/* */
-/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.22) */
+/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.23) */
/* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */
/* */
/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */
@@ -117,6 +117,8 @@ OBJECT Next(OBJECT x, int inc, BOOLEAN *done)
case SPLIT:
case PLAIN_GRAPHIC:
case GRAPHIC:
+ case LINK_SOURCE:
+ case LINK_DEST:
Child(y, LastDown(x));
y = Next(y, inc, done);
diff --git a/z33.c b/z33.c
index cf4fa76..ac6185b 100644
--- a/z33.c
+++ b/z33.c
@@ -1,6 +1,6 @@
/*@z33.c:Database Service:OldCrossDb(), NewCrossDb(), SymToNum()@*************/
/* */
-/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.22) */
+/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.23) */
/* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */
/* */
/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */
diff --git a/z34.c b/z34.c
index cc80cf9..efc2f35 100644
--- a/z34.c
+++ b/z34.c
@@ -1,6 +1,6 @@
/*@z34.c:Rotation Service:Declarations@***************************************/
/* */
-/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.22) */
+/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.23) */
/* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */
/* */
/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */
diff --git a/z35.c b/z35.c
index 34148f5..ca0b28d 100644
--- a/z35.c
+++ b/z35.c
@@ -1,6 +1,6 @@
/*@z35.c:Time Keeper: MomentSym(), TimeString()@******************************/
/* */
-/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.22) */
+/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.23) */
/* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */
/* */
/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */
diff --git a/z36.c b/z36.c
index 0d4f6cb..55f260c 100644
--- a/z36.c
+++ b/z36.c
@@ -1,6 +1,6 @@
/*@z36.c:Hyphenation: Declarations@*******************************************/
/* */
-/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.22) */
+/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.23) */
/* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */
/* */
/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */
diff --git a/z37.c b/z37.c
index c393fad..61cbc0a 100644
--- a/z37.c
+++ b/z37.c
@@ -1,6 +1,6 @@
/*@z37.c:Font Service:Declarations@*******************************************/
/* */
-/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.22) */
+/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.23) */
/* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */
/* */
/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */
@@ -956,6 +956,7 @@ static OBJECT FontRead(FULL_CHAR *family_name, FULL_CHAR *face_name, OBJECT err)
Error(37, 38, "EndFontMetrics missing from font file %s",
FATAL, &fpos(AFMfilename), FileName(fnum));
fclose(fp);
+ fp = (FILE *) NULL;
/* complete the initialization of first_size */
font_xheight2(first_size) =
@@ -980,7 +981,7 @@ static OBJECT FontRead(FULL_CHAR *family_name, FULL_CHAR *face_name, OBJECT err)
&fpos(Extrafilename), FileName(extra_fnum));
lnum = 0;
- while( StringFGets(buff, MAX_BUFF, fp) != (char *) NULL )
+ while( StringFGets(buff, MAX_BUFF, extra_fp) != (char *) NULL )
{
debug1(DFT, D, " Extra: %s", buff);
lnum++;
@@ -992,17 +993,20 @@ static OBJECT FontRead(FULL_CHAR *family_name, FULL_CHAR *face_name, OBJECT err)
/* get extra character metrics, just like the others */
debug0(DFT, D, " StartExtraCharMetrics calling ReadCharMetrics");
ReadCharMetrics(face, fixed_pitch, xheight2, lig, &ligtop,
- extra_fnum, fnt, &lnum, fp);
+ extra_fnum, fnt, &lnum, extra_fp);
}
else if( StringEqual(command, AsciiToFull("StartBuildComposites")) )
{
/* build composites */
debug0(DFT, D, " StartBuildComposites");
ReadCompositeMetrics(face, Extrafilename, extra_fnum, &lnum,
- composite, cmp, &cmptop, fp);
+ composite, cmp, &cmptop, extra_fp);
}
}
}
+
+ fclose(extra_fp);
+ extra_fp = (FILE *) NULL;
}
@@ -1263,7 +1267,6 @@ void FontChange(STYLE *style, OBJECT x)
}
}
-
assert( Down(face) != face, "FontChange: no children!" );
assert( NextDown(Down(face)) != face, "FontChange: 1 child!" );
assert( NextDown(NextDown(Down(face))) != face, "FontChange: 2 children!" );
diff --git a/z38.c b/z38.c
index b360e45..f175145 100644
--- a/z38.c
+++ b/z38.c
@@ -1,6 +1,6 @@
/*@z38.c:Character Mappings:Declarations@*************************************/
/* */
-/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.22) */
+/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.23) */
/* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */
/* */
/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */
diff --git a/z39.c b/z39.c
index 8a6f6de..60a2be3 100644
--- a/z39.c
+++ b/z39.c
@@ -1,6 +1,6 @@
/*@z39.c:String Handler:AsciiToFull(), StringEqual(), etc.@*******************/
/* */
-/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.22) */
+/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.23) */
/* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */
/* */
/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */
diff --git a/z40.c b/z40.c
index 5f1a71f..f4c5955 100644
--- a/z40.c
+++ b/z40.c
@@ -1,6 +1,6 @@
/*@z40.c:Filter Handler:FilterInit()@*****************************************/
/* */
-/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.22) */
+/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.23) */
/* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */
/* */
/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */
diff --git a/z41.c b/z41.c
index 7720d70..11d9ef7 100644
--- a/z41.c
+++ b/z41.c
@@ -1,6 +1,6 @@
/*@z41.c:Object Input-Output:AppendToFile, ReadFromFile@**********************/
/* */
-/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.22) */
+/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.23) */
/* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */
/* */
/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */
@@ -551,6 +551,8 @@ static void WriteObject(OBJECT x, int outer_prec, int *linecount, FILE_NUM fnum)
case SINCGRAPHIC: name = KW_SINCGRAPHIC; goto SETC;
case PLAIN_GRAPHIC: name = KW_PLAINGRAPHIC; goto SETC;
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;
/* print left parameter, if present */
SETC:
diff --git a/z42.c b/z42.c
index 051f263..e2ae780 100644
--- a/z42.c
+++ b/z42.c
@@ -1,6 +1,6 @@
/*@z42.c:Colour Service:ColourChange, ColourCommand@**************************/
/* */
-/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.22) */
+/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.23) */
/* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */
/* */
/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */
diff --git a/z43.c b/z43.c
index c7f375d..05af535 100644
--- a/z43.c
+++ b/z43.c
@@ -1,6 +1,6 @@
/*@z43.c:Language Service:LanguageChange, LanguageString@*********************/
/* */
-/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.22) */
+/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.23) */
/* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */
/* */
/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */
diff --git a/z44.c b/z44.c
index 03984c2..ff0effe 100644
--- a/z44.c
+++ b/z44.c
@@ -1,6 +1,6 @@
/*@z44.c:Vertical Hyphenation:VerticalHyphenate()@****************************/
/* */
-/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.22) */
+/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.23) */
/* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */
/* */
/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */
@@ -191,6 +191,7 @@ static OBJECT EncloseInHcat(OBJECT nxt, OBJECT y, OBJECT replace)
New(new_row_thread, ROW_THR);
back(new_row_thread, ROWM) = back(new_y, ROWM);
fwd(new_row_thread, ROWM) = fwd(new_y, ROWM);
+ thr_state(new_row_thread) = SIZED;
for( link = Down(y); link != y; link = NextDown(link) )
{ Child(s1, link);
if( type(s1) == GAP_OBJ )
diff --git a/z45.c b/z45.c
index 4d1f89e..b80d04b 100644
--- a/z45.c
+++ b/z45.c
@@ -1,6 +1,6 @@
/*@z45.c:External Sort:SortFile()@********************************************/
/* */
-/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.22) */
+/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.23) */
/* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */
/* */
/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */
diff --git a/z46.c b/z46.c
index e7da598..0492cc8 100644
--- a/z46.c
+++ b/z46.c
@@ -1,6 +1,6 @@
/*@z46.c:Optimal Galleys:FindOptimize()@**************************************/
/* */
-/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.22) */
+/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.23) */
/* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */
/* */
/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */
diff --git a/z47.c b/z47.c
index c594c07..051bdf6 100644
--- a/z47.c
+++ b/z47.c
@@ -1,6 +1,6 @@
/*@z47.c:Environment Table:EnvReadRetrieve()@*********************************/
/* */
-/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.22) */
+/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.23) */
/* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */
/* */
/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */
diff --git a/z48.c b/z48.c
index 5031074..21b860d 100644
--- a/z48.c
+++ b/z48.c
@@ -1,6 +1,6 @@
/*@z48.c:PDF back end@********************************************************/
/* */
-/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.22) */
+/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.23) */
/* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */
/* */
/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */
diff --git a/z49.c b/z49.c
index 19fddda..4f90af1 100644
--- a/z49.c
+++ b/z49.c
@@ -1,6 +1,6 @@
/*@z49.c:PostScript Back End:PS_BackEnd@**************************************/
/* */
-/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.22) */
+/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.23) */
/* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */
/* */
/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */
@@ -70,6 +70,131 @@ static FILE *out_fp; /* file to print PostScript on */
/*****************************************************************************/
/* */
+/* Data structures for checking links */
+/* */
+/* We keep a hash table of all dest points, and an ordinary list of all */
+/* source points. To check that no dest point appears twice, we consult */
+/* the hash table once for each dest point to ensure it is not already */
+/* there. To check that every source point has an dest, we run through */
+/* the list of source points at end of run and look each one up in the */
+/* dest point hash table. */
+/* */
+/*****************************************************************************/
+
+/*****************************************************************************/
+/* */
+/* LINK_DEST_TABLE */
+/* */
+/* A symbol table permitting access to link dest name objects. */
+/* The table will automatically enlarge to accept any number of entries. */
+/* */
+/* ltab_new(newsize) New empty table, newsize capacity */
+/* ltab_insert(x, &S) Insert new link dest name object x into S */
+/* ltab_retrieve(str, S) Retrieve link dest name object named str */
+/* ltab_debug(S, fp) Debug print of table S to file fp */
+/* */
+/*****************************************************************************/
+
+typedef struct
+{ int linktab_size; /* size of table */
+ int linktab_count; /* number of objects held */
+ OBJECT linktab_item[1];
+} *LINK_DEST_TABLE;
+
+#define ltab_size(S) (S)->linktab_size
+#define ltab_count(S) (S)->linktab_count
+#define ltab_item(S, i) (S)->linktab_item[i]
+
+#define hash(pos, str, S) \
+{ FULL_CHAR *p = str; \
+ pos = *p++; \
+ while( *p ) pos += *p++; \
+ pos = pos % ltab_size(S); \
+}
+
+static LINK_DEST_TABLE ltab_new(int newsize)
+{ LINK_DEST_TABLE S; int i;
+ /* ifdebug(DMA, D, DebugRegisterUsage(MEM_LINK_TAB, 1,
+ 2*sizeof(int) + newsize * sizeof(OBJECT))); */
+ 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);
+ ltab_size(S) = newsize;
+ ltab_count(S) = 0;
+ for( i = 0; i < newsize; i++ ) ltab_item(S, i) = nilobj;
+ return S;
+} /* end ltab_new */
+
+static void ltab_insert(OBJECT x, LINK_DEST_TABLE *S);
+
+static LINK_DEST_TABLE ltab_rehash(LINK_DEST_TABLE S, int newsize)
+{ LINK_DEST_TABLE NewS; int i;
+ NewS = ltab_new(newsize);
+ for( i = 1; i <= ltab_size(S); i++ )
+ { if( ltab_item(S, i) != nilobj )
+ ltab_insert(ltab_item(S, i), &NewS);
+ }
+ free(S);
+ return NewS;
+} /* end ltab_rehash */
+
+static void ltab_insert(OBJECT x, LINK_DEST_TABLE *S)
+{ int pos; OBJECT z, link, y;
+ if( ltab_count(*S) == ltab_size(*S) - 1 ) /* one less since 0 unused */
+ *S = ltab_rehash(*S, 2*ltab_size(*S));
+ hash(pos, string(x), *S);
+ if( ltab_item(*S, pos) == nilobj ) New(ltab_item(*S, pos), ACAT);
+ z = ltab_item(*S, pos);
+ 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)",
+ WARN, &fpos(x), string(x), EchoFilePos(&fpos(y)));
+ }
+ }
+ Link(ltab_item(*S, pos), x);
+} /* end ltab_insert */
+
+static OBJECT ltab_retrieve(FULL_CHAR *str, LINK_DEST_TABLE S)
+{ OBJECT x, link, y; int pos;
+ hash(pos, str, S);
+ x = ltab_item(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 ltab_retrieve */
+
+#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));
+ for( i = 0; i < ltab_size(S); i++ )
+ { x = ltab_item(S, i);
+ fprintf(fp, "ltab_item(S, %d) =", i);
+ if( x == nilobj )
+ fprintf(fp, " <nilobj>");
+ 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, "\n");
+ }
+} /* end ltab_debug */
+#endif
+
+static LINK_DEST_TABLE link_dest_tab; /* the link dest names */
+static OBJECT link_source_list; /* the link source names */
+
+/*****************************************************************************/
+/* */
/* Print a number x on file fp. */
/* */
/*****************************************************************************/
@@ -106,6 +231,8 @@ static void PS_PrintInitialize(FILE *fp)
New(needs, ACAT);
New(supplied, ACAT);
debug0(DPO, DD, "PS_PrintInitialize returning.");
+ link_dest_tab = ltab_new(200);
+ New(link_source_list, ACAT);
} /* end PS_PrintInitialize */
@@ -388,10 +515,10 @@ static void PS_PrintBeforeFirstPage(FULL_LENGTH h, FULL_LENGTH v,
for( fnum = FirstFile(PREPEND_FILE); fnum != NO_FILE; fnum=NextFile(fnum) )
{ FULL_CHAR buff[MAX_BUFF]; FILE *fp;
if( (fp = OpenFile(fnum, FALSE, FALSE)) == null )
- Error(49, 1, "cannot open %s file %s", WARN, PosOfFile(fnum),
+ Error(49, 3, "cannot open %s file %s", WARN, PosOfFile(fnum),
KW_PREPEND, FileName(fnum));
else if( StringFGets(buff, MAX_BUFF, fp) == NULL )
- Error(49, 2, "%s file %s is empty", WARN, PosOfFile(fnum),
+ Error(49, 4, "%s file %s is empty", WARN, PosOfFile(fnum),
KW_PREPEND, FileName(fnum));
else
{
@@ -401,7 +528,7 @@ static void PS_PrintBeforeFirstPage(FULL_LENGTH h, FULL_LENGTH v,
Link(supplied, tmp);
}
else
- Error(49, 3, "%s file %s lacks PostScript BeginResource comment",
+ 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));
@@ -415,6 +542,10 @@ static void PS_PrintBeforeFirstPage(FULL_LENGTH h, FULL_LENGTH v,
fputs("%%EndProlog\n\n", out_fp);
fputs("%%BeginSetup\n", out_fp);
MapPrintEncodings();
+
+ /* pdfmark compatibility code, as in the pdfmark Reference Manual p10 */
+ p0("/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse\n");
+
/* FontPrintPageSetup(out_fp); */
fputs("%%EndSetup\n\n", out_fp);
fprintf(out_fp, "%%%%Page: ");
@@ -494,7 +625,7 @@ static void PS_PrintBetweenPages(FULL_LENGTH h, FULL_LENGTH v, FULL_CHAR *label)
currentcolour = NO_COLOUR;
if( Encapsulated )
{ PS_PrintAfterLastPage();
- Error(49, 4, "truncating -EPS document at end of first page",
+ Error(49, 6, "truncating -EPS document at end of first page",
FATAL, no_fpos);
}
fprintf(out_fp, "\n%%%%Page: ");
@@ -711,18 +842,33 @@ static void PS_PrintPlainGraphic(OBJECT x, FULL_LENGTH xmk,
/*****************************************************************************/
/* */
-/* PS_PrintUnderline(fnum, xstart, xstop, ymk) */
+/* PS_PrintUnderline(fnum, col, xstart, xstop, ymk) */
/* */
-/* Draw an underline suitable for font fnum, from xstart to xstop at the */
-/* appropriate distance below mark ymk. */
+/* Draw an underline suitable for font fnum, in colour col, from xstart to */
+/* xstop at the appropriate distance below mark ymk. */
/* */
/*****************************************************************************/
-static void PS_PrintUnderline(FONT_NUM fnum, FULL_LENGTH xstart,
- FULL_LENGTH xstop, FULL_LENGTH ymk)
+static void PS_PrintUnderline(FONT_NUM fnum, COLOUR_NUM col,
+ FULL_LENGTH xstart, FULL_LENGTH xstop, FULL_LENGTH ymk)
{
- debug4(DPO, DD, "PrintUnderline(fnum %d, xstart %s, xstop %s, ymk %s )",
- fnum, EchoLength(xstart), EchoLength(xstop), EchoLength(ymk));
+ 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);
+ }
+ }
+
+ /* 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);
debug0(DPO, DD, "PrintUnderline returning.");
@@ -797,7 +943,7 @@ static void PS_SaveGraphicState(OBJECT x)
fprintf(out_fp, "gsave\n");
gs_stack_top++;
if( gs_stack_top >= MAX_GS )
- Error(49, 5, "rotations, graphics etc. too deeply nested (max is %d)",
+ Error(49, 7, "rotations, graphics etc. too deeply nested (max is %d)",
FATAL, &fpos(x), MAX_GS);
gs_stack[gs_stack_top].gs_font = currentfont;
gs_stack[gs_stack_top].gs_colour = currentcolour;
@@ -869,7 +1015,7 @@ void PS_PrintGraphicObject(OBJECT x)
/* ignore: @Wide, indexes are sometimes inserted by Manifest */
}
else
- { Error(49, 6, "error in left parameter of %s",
+ { Error(49, 8, "error in left parameter of %s",
WARN, &fpos(x), KW_GRAPHIC);
debug1(DPO, D, " type(y) = %s, y =", Image(type(y)));
ifdebug(DPO, D, DebugObject(y));
@@ -880,7 +1026,7 @@ void PS_PrintGraphicObject(OBJECT x)
default:
- Error(49, 7, "error in left parameter of %s", WARN, &fpos(x), KW_GRAPHIC);
+ Error(49, 9, "error in left parameter of %s", WARN, &fpos(x), KW_GRAPHIC);
debug1(DPO, D, " type(x) = %s, x =", Image(type(x)));
ifdebug(DPO, D, DebugObject(x));
break;
@@ -1070,10 +1216,10 @@ void PS_PrintGraphicInclude(OBJECT x, FULL_LENGTH colmark, FULL_LENGTH rowmark)
}
else
{ if( StringBeginsWith(buff, AsciiToFull("%%LanguageLevel:")) )
- Error(49, 8, "ignoring LanguageLevel comment in %s file %s",
+ Error(49, 10, "ignoring LanguageLevel comment in %s file %s",
WARN, &fpos(x), KW_INCGRAPHIC, string(full_name));
if( StringBeginsWith(buff, AsciiToFull("%%Extensions:")) )
- Error(49, 9, "ignoring Extensions comment in %s file %s",
+ Error(49, 11, "ignoring Extensions comment in %s file %s",
WARN, &fpos(x), KW_INCGRAPHIC, string(full_name));
if( !strip_out(buff) ) StringFPuts(buff, out_fp);
state = (StringFGets(buff, MAX_BUFF, fp) == NULL) ? FINISHED : SKIPPING;
@@ -1102,6 +1248,122 @@ void PS_PrintGraphicInclude(OBJECT x, FULL_LENGTH colmark, FULL_LENGTH rowmark)
wordcount = 0;
debug0(DPO, D, "PS_PrintGraphicInclude returning.");
} /* end PS_PrintGraphicInclude */
+/*****************************************************************************/
+/* */
+/* char *ConvertToPDFName(name) */
+/* */
+/* Convert string(name) to a suitable PDF label. The result is in static */
+/* memory and must be copied before the next call to ConvertToPDFName. */
+/* */
+/* At present our algorithm is to prefix the label with "LOUT" and to */
+/* replace all non-alphanumerics by one underscore. */
+/* */
+/*****************************************************************************/
+#define in_range(ch, a, b) ( (ch) >= (a) && (ch) <= (b) )
+#define is_lower(ch) in_range(ch, 'a', 'z')
+#define is_upper(ch) in_range(ch, 'A', 'Z')
+#define is_digit(ch) in_range(ch, '0', '9')
+#define is_alphanum(ch) (is_lower(ch) || is_upper(ch) || is_digit(ch))
+
+char *ConvertToPDFName(OBJECT name)
+{ static char buff[200];
+ char *q;
+ FULL_CHAR *p;
+ strcpy(buff, "LOUT");
+ q = &buff[strlen(buff)];
+ for( p = string(name); *p != '\0'; p++ )
+ {
+ if( q >= &buff[199] )
+ Error(49, 12, "tag %s is too long", FATAL, &fpos(name), string(name));
+ if( is_alphanum(*p) )
+ *q++ = (char) *p;
+ else
+ *q++ = '_';
+ }
+ *q++ = '\0';
+ return buff;
+}
+
+
+/*****************************************************************************/
+/* */
+/* PS_LinkSource(name, llx, lly, urx, ury) */
+/* */
+/* Print a link source point. */
+/* */
+/*****************************************************************************/
+
+static void PS_LinkSource(OBJECT name, FULL_LENGTH llx, FULL_LENGTH lly,
+ FULL_LENGTH urx, FULL_LENGTH ury)
+{ debug5(DPO, D, "PS_LinkSource(%s, %d, %d, %d, %d)", EchoObject(name),
+ llx, lly, urx, ury);
+
+ /* print the link source point */
+ fprintf(out_fp,
+ "\n[ /Rect [%d %d %d %d] /Subtype /Link /Dest /%s /ANN pdfmark\n",
+ llx, lly, urx, ury, ConvertToPDFName(name));
+
+ /* remember it so that at end of run can check if it has an dest point */
+ Link(link_source_list, name);
+ debug0(DPO, D, "PS_LinkSource returning.");
+} /* end PS_LinkSource */
+
+
+/*****************************************************************************/
+/* */
+/* PS_LinkDest(name, llx, lly, urx, ury) */
+/* */
+/* Print a link dest point (note llx etc are not used), after making sure */
+/* that no previously printed dest point has the same name. */
+/* */
+/*****************************************************************************/
+
+static void PS_LinkDest(OBJECT name, FULL_LENGTH llx, FULL_LENGTH lly,
+ FULL_LENGTH urx, FULL_LENGTH ury)
+{ OBJECT prev;
+ debug5(DPO, D, "PS_LinkDest(%s, %d, %d, %d, %d)", EchoObject(name),
+ llx, lly, urx, ury);
+
+ prev = ltab_retrieve(string(name), link_dest_tab);
+ if( prev == nilobj )
+ {
+ /* not used previously, so print it and remember it */
+ fprintf(out_fp, "\n[ /Dest /%s /DEST pdfmark\n", ConvertToPDFName(name));
+ ltab_insert(name, &link_dest_tab);
+ }
+ else
+ {
+ /* used previously, so don't print it, and warn the user */
+ Error(49, 13, "link destination %s ignored (there is already one at%s)",
+ WARN, &fpos(name), string(name), EchoFilePos(&fpos(prev)));
+ }
+ debug0(DPO, D, "PS_LinkDest returning.");
+} /* end PS_LinkDest */
+
+
+/*****************************************************************************/
+/* */
+/* PS_LinkCheck() */
+/* */
+/* Called at end of run; will check that for every link source point there */
+/* is a link dest point. */
+/* */
+/*****************************************************************************/
+
+static void PS_LinkCheck()
+{ OBJECT y, link;
+ debug0(DPO, D, "PS_LinkCheck()");
+
+ for( link=Down(link_source_list); link!=link_source_list; link=NextDown(link) )
+ { Child(y, link);
+ assert( is_word(type(y)), " PS_LinkCheck: !is_word(type(y))!");
+ if( ltab_retrieve(string(y), link_dest_tab) == nilobj )
+ Error(49, 14, "link name %s has no destination point", WARN, &fpos(y),
+ string(y));
+ }
+
+ debug0(DPO, D, "PS_LinkCheck returning.");
+} /* end PS_LinkCheck */
/*****************************************************************************/
@@ -1143,6 +1405,9 @@ static struct back_end_rec ps_back = {
PS_DefineGraphicNames,
PS_SaveTranslateDefineSave,
PS_PrintGraphicInclude,
+ PS_LinkSource,
+ PS_LinkDest,
+ PS_LinkCheck,
};
BACK_END PS_BackEnd = &ps_back;
diff --git a/z50.c b/z50.c
index 379f94a..ca6c253 100644
--- a/z50.c
+++ b/z50.c
@@ -1,6 +1,6 @@
/*@z50.c:PDF Back End:PDF_BackEnd@********************************************/
/* */
-/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.22) */
+/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.23) */
/* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */
/* */
/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */
@@ -453,18 +453,18 @@ static void PDF_PrintPlainGraphic(OBJECT x, FULL_LENGTH xmk,
/*****************************************************************************/
/* */
-/* PDF_PrintUnderline(fnum, xstart, xstop, ymk) */
+/* PDF_PrintUnderline(fnum, col, xstart, xstop, ymk) */
/* */
-/* Draw an underline suitable for font fnum, from xstart to xstop at the */
-/* appropriate distance below mark ymk. */
+/* Draw an underline suitable for font fnum, in colour col from xstart to */
+/* xstop at the appropriate distance below mark ymk. */
/* */
/*****************************************************************************/
-static void PDF_PrintUnderline(FONT_NUM fnum, FULL_LENGTH xstart,
- FULL_LENGTH xstop, FULL_LENGTH ymk)
+static void PDF_PrintUnderline(FONT_NUM fnum, COLOUR_NUM col,
+ FULL_LENGTH xstart, FULL_LENGTH xstop, FULL_LENGTH ymk)
{
- debug4(DPF, DD, "PDF_PrintUnderline(fnum %d, xstart %s, xstop %s, ymk %s )",
- fnum, EchoLength(xstart), EchoLength(xstop), EchoLength(ymk));
+ debug5(DPF, DD, "PDF_PrintUnderline(ft %d, co %d, xstrt %s, xstp %s, ymk %s)",
+ fnum, col, EchoLength(xstart), EchoLength(xstop), EchoLength(ymk));
PDFPage_PrintUnderline(out_fp, xstart, xstop,
ymk - finfo[fnum].underline_pos, finfo[fnum].underline_thick);
debug0(DPF, DD, "PrintUnderline returning.");
@@ -762,6 +762,68 @@ void PDF_PrintGraphicInclude(OBJECT x, FULL_LENGTH colmark, FULL_LENGTH rowmark)
/*****************************************************************************/
/* */
+/* PDF_LinkSource(name, llx, lly, urx, ury) */
+/* */
+/* Print a link source point. */
+/* */
+/*****************************************************************************/
+
+static void PDF_LinkSource(OBJECT name, FULL_LENGTH llx, FULL_LENGTH lly,
+ FULL_LENGTH urx, FULL_LENGTH ury)
+{
+ debug5(DPF, D, "PDF_LinkSource(%s, %d, %d, %d, %d)", EchoObject(name),
+ llx, lly, urx, ury);
+
+ /* still to do */
+
+ debug0(DPF, D, "PDF_LinkSource returning.");
+} /* end PDF_LinkSource */
+
+
+/*****************************************************************************/
+/* */
+/* PDF_LinkDest(name, llx, lly, urx, ury) */
+/* */
+/* Print a link dest point. */
+/* */
+/* Still to do: check that the name has not been used by a previous */
+/* dest point. */
+/* */
+/*****************************************************************************/
+
+static void PDF_LinkDest(OBJECT name, FULL_LENGTH llx, FULL_LENGTH lly,
+ FULL_LENGTH urx, FULL_LENGTH ury)
+{
+ debug5(DPF, D, "PDF_LinkDest(%s, %d, %d, %d, %d)", EchoObject(name),
+ llx, lly, urx, ury);
+
+ /* still to do */
+
+ debug0(DPF, D, "PDF_LinkDest returning.");
+} /* end PDF_LinkDest */
+
+
+/*****************************************************************************/
+/* */
+/* PDF_LinkCheck() */
+/* */
+/* Called at end of run; will check that for every link source point there */
+/* is a link dest point. */
+/* */
+/*****************************************************************************/
+
+static void PDF_LinkCheck()
+{
+ debug0(DPF, D, "PDF_LinkCheck()");
+
+ /* still to do */
+
+ debug0(DPF, D, "PDF_LinkCheck returning.");
+} /* end PDF_LinkCheck */
+
+
+/*****************************************************************************/
+/* */
/* PDF_BackEnd */
/* */
/* The record into which all of these functions are packaged. */
@@ -799,6 +861,9 @@ static struct back_end_rec pdf_back = {
PDF_DefineGraphicNames,
PDF_SaveTranslateDefineSave,
PDF_PrintGraphicInclude,
+ PDF_LinkSource,
+ PDF_LinkDest,
+ PDF_LinkCheck,
};
BACK_END PDF_BackEnd = &pdf_back;
diff --git a/z51.c b/z51.c
index 365721c..d7aa731 100644
--- a/z51.c
+++ b/z51.c
@@ -1,6 +1,6 @@
/*@z51.c:Plain Text Back End:Plain_BackEnd@***********************************/
/* */
-/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.22) */
+/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.23) */
/* COPYRIGHT (C) 1991, 2000 Jeffrey H. Kingston */
/* */
/* Jeffrey H. Kingston (jeff@cs.usyd.edu.au) */
@@ -335,19 +335,19 @@ static void Plain_PrintPlainGraphic(OBJECT x, FULL_LENGTH xmk,
/*****************************************************************************/
/* */
-/* Plain_PrintUnderline(fnum, xstart, xstop, ymk) */
+/* Plain_PrintUnderline(fnum, col, xstart, xstop, ymk) */
/* */
-/* Draw an underline suitable for font fnum, from xstart to xstop at the */
-/* appropriate distance below mark ymk. */
+/* Draw an underline suitable for font fnum, in colour col, from xstart to */
+/* xstop at the appropriate distance below mark ymk. */
/* */
/*****************************************************************************/
-static void Plain_PrintUnderline(FONT_NUM fnum, FULL_LENGTH xstart,
- FULL_LENGTH xstop, FULL_LENGTH ymk)
+static void Plain_PrintUnderline(FONT_NUM fnum, COLOUR_NUM col,
+ FULL_LENGTH xstart, FULL_LENGTH xstop, FULL_LENGTH ymk)
{
- debug4(DPT, DD, "Plain_PrintUnderline(fnum %d, xstart %s, xstop %s, ymk %s )",
- fnum, EchoLength(xstart), EchoLength(xstop), EchoLength(ymk));
+ debug5(DPT, DD, "Plain_PrintUnderline(fnum %d, col %d, xstart %s, xstop %s, ymk %s )",
+ fnum, col, EchoLength(xstart), EchoLength(xstop), EchoLength(ymk));
/* do nothing */
@@ -544,6 +544,62 @@ void Plain_PrintGraphicInclude(OBJECT x, FULL_LENGTH colmark,
/*****************************************************************************/
/* */
+/* Plain_LinkSource(name, llx, lly, urx, ury) */
+/* */
+/* Print a link source point. */
+/* */
+/*****************************************************************************/
+
+static void Plain_LinkSource(OBJECT name, FULL_LENGTH llx, FULL_LENGTH lly,
+ FULL_LENGTH urx, FULL_LENGTH ury)
+{
+ debug5(DPT, D, "Plain_LinkSource(%s, %d, %d, %d, %d)", EchoObject(name),
+ llx, lly, urx, ury);
+ /* do nothing; no links in plain text output */
+ debug0(DPT, D, "Plain_LinkSource returning.");
+} /* end Plain_LinkSource */
+
+
+/*****************************************************************************/
+/* */
+/* Plain_LinkDest(name, llx, lly, urx, ury) */
+/* */
+/* Print a link dest point. */
+/* */
+/* Still to do: check that the name has not been used by a previous */
+/* dest point. */
+/* */
+/*****************************************************************************/
+
+static void Plain_LinkDest(OBJECT name, FULL_LENGTH llx, FULL_LENGTH lly,
+ FULL_LENGTH urx, FULL_LENGTH ury)
+{
+ debug5(DPT, D, "Plain_LinkDest(%s, %d, %d, %d, %d)", EchoObject(name),
+ llx, lly, urx, ury);
+ /* do nothing; no links in plain text output */
+ debug0(DPT, D, "Plain_LinkDest returning.");
+} /* end Plain_LinkDest */
+
+
+/*****************************************************************************/
+/* */
+/* Plain_LinkCheck() */
+/* */
+/* Called at end of run; will check that for every link source point there */
+/* is a link dest point. */
+/* */
+/*****************************************************************************/
+
+static void Plain_LinkCheck()
+{
+ debug0(DPT, D, "Plain_LinkCheck()");
+ /* do nothing; no links in plain text output */
+ debug0(DPT, D, "Plain_LinkCheck returning.");
+} /* end Plain_LinkCheck */
+
+
+/*****************************************************************************/
+/* */
/* Plain_BackEnd */
/* */
/* The record into which all of these functions are packaged. */
@@ -581,6 +637,9 @@ static struct back_end_rec plain_back = {
Plain_DefineGraphicNames,
Plain_SaveTranslateDefineSave,
Plain_PrintGraphicInclude,
+ Plain_LinkSource,
+ Plain_LinkDest,
+ Plain_LinkCheck,
};
BACK_END Plain_BackEnd = &plain_back;